From d5ae1d4704aac7a0fe801b16d4a4e35534351a83 Mon Sep 17 00:00:00 2001 From: tomonoM Date: Fri, 2 Mar 2018 17:29:08 +0900 Subject: [PATCH] first commit --- CMakeLists.txt | 28 +++ LICENSE | 373 +++++++++++++++++++++++++++++ README.md | 86 +++++++ cui/CMakeLists.txt | 45 ++++ cui/FrameworkCustomizer.cpp | 223 +++++++++++++++++ cui/FrameworkCustomizer.h | 99 ++++++++ cui/MapDrawer.cpp | 82 +++++++ cui/MapDrawer.h | 97 ++++++++ cui/SlamLauncher.cpp | 164 +++++++++++++ cui/SlamLauncher.h | 77 ++++++ cui/main.cpp | 77 ++++++ doc/customize.md | 46 ++++ doc/images/build.png | Bin 0 -> 48101 bytes doc/images/cmake-lnx.png | Bin 0 -> 237030 bytes doc/images/cmake.png | Bin 0 -> 55491 bytes doc/images/cmake1.png | Bin 0 -> 55491 bytes doc/images/command-lnx.png | Bin 0 -> 18401 bytes doc/images/command.png | Bin 0 -> 20722 bytes doc/images/exefile-lnx.png | Bin 0 -> 56045 bytes doc/images/exefile.png | Bin 0 -> 49109 bytes doc/images/folders-lnx.png | Bin 0 -> 53328 bytes doc/images/folders.png | Bin 0 -> 10710 bytes doc/images/result-lnx.png | Bin 0 -> 55729 bytes doc/images/result.png | Bin 0 -> 80900 bytes doc/install-linux.md | 96 ++++++++ doc/install-win.md | 131 ++++++++++ framework/CMakeLists.txt | 66 +++++ framework/CostFunction.h | 61 +++++ framework/CovarianceCalculator.cpp | 240 +++++++++++++++++++ framework/CovarianceCalculator.h | 61 +++++ framework/DataAssociator.h | 40 ++++ framework/LPoint2D.h | 103 ++++++++ framework/LoopDetector.cpp | 25 ++ framework/LoopDetector.h | 99 ++++++++ framework/MyUtil.cpp | 131 ++++++++++ framework/MyUtil.h | 58 +++++ framework/NNGridTable.cpp | 128 ++++++++++ framework/NNGridTable.h | 66 +++++ framework/P2oDriver2D.cpp | 64 +++++ framework/P2oDriver2D.h | 46 ++++ framework/PointCloudMap.h | 73 ++++++ framework/Pose2D.cpp | 87 +++++++ framework/Pose2D.h | 113 +++++++++ framework/PoseEstimatorICP.cpp | 72 ++++++ framework/PoseEstimatorICP.h | 83 +++++++ framework/PoseFuser.cpp | 123 ++++++++++ framework/PoseFuser.h | 75 ++++++ framework/PoseGraph.cpp | 108 +++++++++ framework/PoseGraph.h | 164 +++++++++++++ framework/PoseOptimizer.h | 76 ++++++ framework/RefScanMaker.h | 46 ++++ framework/Scan2D.cpp | 21 ++ framework/Scan2D.h | 57 +++++ framework/ScanMatcher2D.cpp | 153 ++++++++++++ framework/ScanMatcher2D.h | 121 ++++++++++ framework/ScanPointAnalyser.cpp | 90 +++++++ framework/ScanPointAnalyser.h | 48 ++++ framework/ScanPointResampler.cpp | 76 ++++++ framework/ScanPointResampler.h | 51 ++++ framework/SensorDataReader.cpp | 80 +++++++ framework/SensorDataReader.h | 67 ++++++ framework/SlamBackEnd.cpp | 48 ++++ framework/SlamBackEnd.h | 54 +++++ framework/SlamFrontEnd.cpp | 110 +++++++++ framework/SlamFrontEnd.h | 105 ++++++++ hook/CMakeLists.txt | 54 +++++ hook/CostFunctionED.cpp | 52 ++++ hook/CostFunctionED.h | 32 +++ hook/CostFunctionPD.cpp | 56 +++++ hook/CostFunctionPD.h | 32 +++ hook/DataAssociatorGT.cpp | 46 ++++ hook/DataAssociatorGT.h | 46 ++++ hook/DataAssociatorLS.cpp | 57 +++++ hook/DataAssociatorLS.h | 45 ++++ hook/LoopDetectorSS.cpp | 206 ++++++++++++++++ hook/LoopDetectorSS.h | 77 ++++++ hook/PointCloudMapBS.cpp | 49 ++++ hook/PointCloudMapBS.h | 39 +++ hook/PointCloudMapGT.cpp | 63 +++++ hook/PointCloudMapGT.h | 49 ++++ hook/PointCloudMapLP.cpp | 161 +++++++++++++ hook/PointCloudMapLP.h | 91 +++++++ hook/PoseOptimizerSD.cpp | 68 ++++++ hook/PoseOptimizerSD.h | 35 +++ hook/PoseOptimizerSL.cpp | 101 ++++++++ hook/PoseOptimizerSL.h | 37 +++ hook/RefScanMakerBS.cpp | 43 ++++ hook/RefScanMakerBS.h | 32 +++ hook/RefScanMakerLM.cpp | 31 +++ hook/RefScanMakerLM.h | 32 +++ 90 files changed, 6447 insertions(+) create mode 100755 CMakeLists.txt create mode 100755 LICENSE create mode 100755 README.md create mode 100755 cui/CMakeLists.txt create mode 100755 cui/FrameworkCustomizer.cpp create mode 100755 cui/FrameworkCustomizer.h create mode 100755 cui/MapDrawer.cpp create mode 100755 cui/MapDrawer.h create mode 100755 cui/SlamLauncher.cpp create mode 100755 cui/SlamLauncher.h create mode 100755 cui/main.cpp create mode 100755 doc/customize.md create mode 100755 doc/images/build.png create mode 100755 doc/images/cmake-lnx.png create mode 100755 doc/images/cmake.png create mode 100755 doc/images/cmake1.png create mode 100755 doc/images/command-lnx.png create mode 100755 doc/images/command.png create mode 100755 doc/images/exefile-lnx.png create mode 100755 doc/images/exefile.png create mode 100755 doc/images/folders-lnx.png create mode 100755 doc/images/folders.png create mode 100755 doc/images/result-lnx.png create mode 100755 doc/images/result.png create mode 100755 doc/install-linux.md create mode 100755 doc/install-win.md create mode 100755 framework/CMakeLists.txt create mode 100755 framework/CostFunction.h create mode 100755 framework/CovarianceCalculator.cpp create mode 100755 framework/CovarianceCalculator.h create mode 100755 framework/DataAssociator.h create mode 100755 framework/LPoint2D.h create mode 100755 framework/LoopDetector.cpp create mode 100755 framework/LoopDetector.h create mode 100755 framework/MyUtil.cpp create mode 100755 framework/MyUtil.h create mode 100755 framework/NNGridTable.cpp create mode 100755 framework/NNGridTable.h create mode 100755 framework/P2oDriver2D.cpp create mode 100755 framework/P2oDriver2D.h create mode 100755 framework/PointCloudMap.h create mode 100755 framework/Pose2D.cpp create mode 100755 framework/Pose2D.h create mode 100755 framework/PoseEstimatorICP.cpp create mode 100755 framework/PoseEstimatorICP.h create mode 100755 framework/PoseFuser.cpp create mode 100755 framework/PoseFuser.h create mode 100755 framework/PoseGraph.cpp create mode 100755 framework/PoseGraph.h create mode 100755 framework/PoseOptimizer.h create mode 100755 framework/RefScanMaker.h create mode 100755 framework/Scan2D.cpp create mode 100755 framework/Scan2D.h create mode 100755 framework/ScanMatcher2D.cpp create mode 100755 framework/ScanMatcher2D.h create mode 100755 framework/ScanPointAnalyser.cpp create mode 100755 framework/ScanPointAnalyser.h create mode 100755 framework/ScanPointResampler.cpp create mode 100755 framework/ScanPointResampler.h create mode 100755 framework/SensorDataReader.cpp create mode 100755 framework/SensorDataReader.h create mode 100755 framework/SlamBackEnd.cpp create mode 100755 framework/SlamBackEnd.h create mode 100755 framework/SlamFrontEnd.cpp create mode 100755 framework/SlamFrontEnd.h create mode 100755 hook/CMakeLists.txt create mode 100755 hook/CostFunctionED.cpp create mode 100755 hook/CostFunctionED.h create mode 100755 hook/CostFunctionPD.cpp create mode 100755 hook/CostFunctionPD.h create mode 100755 hook/DataAssociatorGT.cpp create mode 100755 hook/DataAssociatorGT.h create mode 100755 hook/DataAssociatorLS.cpp create mode 100755 hook/DataAssociatorLS.h create mode 100755 hook/LoopDetectorSS.cpp create mode 100755 hook/LoopDetectorSS.h create mode 100755 hook/PointCloudMapBS.cpp create mode 100755 hook/PointCloudMapBS.h create mode 100755 hook/PointCloudMapGT.cpp create mode 100755 hook/PointCloudMapGT.h create mode 100755 hook/PointCloudMapLP.cpp create mode 100755 hook/PointCloudMapLP.h create mode 100755 hook/PoseOptimizerSD.cpp create mode 100755 hook/PoseOptimizerSD.h create mode 100755 hook/PoseOptimizerSL.cpp create mode 100755 hook/PoseOptimizerSL.h create mode 100755 hook/RefScanMakerBS.cpp create mode 100755 hook/RefScanMakerBS.h create mode 100755 hook/RefScanMakerLM.cpp create mode 100755 hook/RefScanMakerLM.h diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..6d65227 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,28 @@ +project(LittleSLAM) + +cmake_minimum_required(VERSION 2.8) + +# C++11を使う +if(UNIX) + include(CheckCXXCompilerFlag) + CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) + CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) + if(COMPILER_SUPPORTS_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + elseif(COMPILER_SUPPORTS_CXX0X) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + else() + message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Use a different C++ compiler.") + endif() +endif() + +if(UNIX) # gccでSHIFT-JISを読むため + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finput-charset=cp932") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexec-charset=cp932") +endif() + +SET(CMAKE_BUILD_TYPE "Release") + +add_subdirectory(cui cui) +add_subdirectory(framework framework) +add_subdirectory(hook hook) diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..a612ad9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/README.md b/README.md new file mode 100755 index 0000000..40c544c --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +# LittleSLAM + +## LittleSLAMについて + +LittleSLAMは、SLAM学習用プログラムです。 +2Dレーザスキャナのデータ(スキャン)とオドメトリデータを格納したファイルを入力し、 +ロボット位置の軌跡と2D点群地図をgnuplot上に出力します。 + +LittleSLAMは、スキャンマッチングに基づく位置合せ、レーザスキャナとオドメトリのセンサ融合、 +Graph-based SLAMに基づくループ閉じ込みなどの要素技術から構成されています。 + +LittleSLAMは参考書籍[1]の教材として作られたプログラムであり、 +わかりやすさを優先してシンプルなアルゴリズムを採用しています。 +そのため、フルスペックのSLAMプログラムと比べると性能は落ちますが、 +内容の理解はしやすくなっています。 + + +## 実行環境 + +LittleSLAMはプログラミング言語C++で記述されています。 +動作を確認した実行環境は下記のものです。いずれも64ビット版です。 + +| OS | C++ | +|:--:|:---:| +| Windows 7 | Visual C++ 2013 (Visual Studio Community 2013)| +| Windows 10 | Visual C++ 2015 (Visual Studio Community 2015)| +| Linux Ubuntu 14.04 LTS | gcc 4.8.4| +| Linux Ubuntu 16.04 LTS | gcc 5.4.0| + +32ビットOSでの動作確認はしていないので、必要な場合はご自分で試してください。 + + +## 必要なソフトウェア + +LittleSLAMの実行には、下記のソフトウェアが必要です。 + +| ソフトウェア | 内容 | バージョン | +|:------------:|:----:|:----------:| +| Boost | C++汎用ライブラリ |1.58.0 | +| Eigen3 | 線形代数ライブラリ|3.2.4 | +| gnuplot | グラフ描画ツール |5.0 | +| CMake | ビルド支援ツール |3.2.2 | +| p2o | Graph-based SLAMソルバ|beta | + +バージョンはLittleSLAMの開発で使用したものであり、明確な条件ではありません。 +これ以上のバージョンであれば通常は動作します。 +これ以下のバージョンでも動作する可能性はあります。 + +## 使い方 + +- Windowsでの使い方は[こちら](doc/install-win.md) + +- Linuxでの使い方は[こちら](doc/install-linux.md) + +## データセット + +実験用に6個のデータファイルを用意しています。下表に一覧を示します。 +[ここ](https://furo.org/software/little_slam/dataset.zip)からダウンロードできます。 + + +| ファイル名 | 内容 | +|:--------------------|:-------------| +| corridor.lsc | 廊下(単一ループ) | +| hall.lsc | 広間(単一ループ) | +| corridor-degene.lsc | 廊下(退化) | +| hall-degene.lsc | 広間(退化) | +| corridor-loops.lsc | 廊下(多重ループ) | +| hall-loops.lsc | 広間(多重ループ) | + +## カスタマイズ + +LittleSLAMは学習用プログラムであり、基本形からいくつかの改良を経て +完成するようにカスタマイズできます。 +詳細は[こちら](doc/customize.md)を参照してください。 + +## 参考書籍 + +下記の書籍はSLAMの解説書です。SLAMの一般的な解説をするとともに、 +具体例としてLittleSLAMを教材に用い、そのソースコードの詳細を説明しています。 + +[1] 友納正裕、「SLAM入門 -- ロボットの自己位置推定と地図構築の技術」、オーム社、2018年 + +## ライセンス + +- LittleSLAMは、MPL-2.0ライセンスにもとづいています。 + diff --git a/cui/CMakeLists.txt b/cui/CMakeLists.txt new file mode 100755 index 0000000..0136cb7 --- /dev/null +++ b/cui/CMakeLists.txt @@ -0,0 +1,45 @@ +project(cui) + +cmake_minimum_required(VERSION 2.8) + +find_package(Boost REQUIRED) + +find_package(Eigen3) +IF(NOT EIGEN3_INCLUDE_DIR) + set(EIGEN3_INCLUDE_DIR $ENV{EIGEN3_ROOT_DIR}) +ENDIF() + +include_directories( + ${Boost_INCLUDE_DIR} + ${EIGEN3_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../framework + ${CMAKE_CURRENT_SOURCE_DIR}/../hook +) + +link_directories( +) + +set(CUI_SRCS + main.cpp + SlamLauncher.cpp + FrameworkCustomizer.cpp + MapDrawer.cpp +) + +set(CUI_HDRS + SlamLauncher.h + FrameworkCustomizer.h + MapDrawer.h +) + +add_executable(LittleSLAM + ${CUI_SRCS} + ${CUI_HDRS} +) + +target_link_libraries(LittleSLAM + framework + hook +) + diff --git a/cui/FrameworkCustomizer.cpp b/cui/FrameworkCustomizer.cpp new file mode 100755 index 0000000..38f312f --- /dev/null +++ b/cui/FrameworkCustomizer.cpp @@ -0,0 +1,223 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file FrameworkCustomizer.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "FrameworkCustomizer.h" + +using namespace std; + +// フレームワークの基本部分を設定 +void FrameworkCustomizer::makeFramework() { + smat.setPoseEstimator(&poest); + smat.setPoseFuser(&pfu); + + // LoopDetectorSSは使う部品が決まっているので、ここで入れる + lpdSS.setPoseEstimator(&poest); + lpdSS.setPoseFuser(&pfu); + lpdSS.setDataAssociator(&dassGT); + lpdSS.setCostFunction(&cfuncPD); + lpdSS.setPointCloudMap(&pcmapLP); + + sfront->setScanMatcher(&smat); +} + +/////// 実験用 + +// フレームワーク基本構成 +void FrameworkCustomizer::customizeA() { + pcmap = &pcmapBS; // 全スキャン点を保存する点群地図 + RefScanMaker *rsm = &rsmBS; // 直前スキャンを参照スキャンとする + DataAssociator *dass = &dassLS; // 線形探索によるデータ対応づけ + CostFunction *cfunc = &cfuncED; // ユークリッド距離をコスト関数とする + PoseOptimizer *popt = &poptSD; // 最急降下法による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(false); // センサ融合しない +} + +// 格子テーブルの利用 +void FrameworkCustomizer::customizeB() { + pcmap = &pcmapGT; // 格子テーブルで管理する点群地図 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassLS; // 線形探索によるデータ対応づけ + CostFunction *cfunc = &cfuncED; // ユークリッド距離をコスト関数とする + PoseOptimizer *popt = &poptSD; // 最急降下法による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(false); // センサ融合しない +} + +// 最急降下法の後に直線探索を行う +void FrameworkCustomizer::customizeC() { + pcmap = &pcmapGT; // 格子テーブルで管理する点群地図 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassLS; // 線形探索によるデータ対応づけ + CostFunction *cfunc = &cfuncED; // ユークリッド距離をコスト関数とする + PoseOptimizer *popt = &poptSL; // 最急降下法と直線探索による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(false); // センサ融合しない +} + +// データ対応づけを格子テーブルで行う +void FrameworkCustomizer::customizeD() { + pcmap = &pcmapGT; // 格子テーブルで管理する点群地図 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassGT; // 格子テーブルによるデータ対応づけ + CostFunction *cfunc = &cfuncED; // ユークリッド距離をコスト関数とする + PoseOptimizer *popt = &poptSL; // 最急降下法と直線探索による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(false); // センサ融合しない +} + +// スキャン点間隔均一化を追加 +void FrameworkCustomizer::customizeE() { + pcmap = &pcmapGT; // 格子テーブルで管理する点群地図 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassGT; // 格子テーブルによるデータ対応づけ + CostFunction *cfunc = &cfuncED; // ユークリッド距離をコスト関数とする + PoseOptimizer *popt = &poptSL; // 最急降下法と直線探索による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + smat.setScanPointResampler(&spres); // スキャン点間隔均一化 + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(false); // センサ融合しない +} + +// スキャン点の法線計算を追加 +void FrameworkCustomizer::customizeF() { + pcmap = &pcmapGT; // 格子テーブルで管理する点群地図 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassGT; // 格子テーブルによるデータ対応づけ + CostFunction *cfunc = &cfuncPD; // 垂直距離をコスト関数とする + PoseOptimizer *popt = &poptSL; // 最急降下法と直線探索による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + smat.setScanPointAnalyser(&spana); // スキャン点の法線計算 + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(false); // センサ融合しない +} + +// スキャン点間隔均一化と法線計算を追加 +void FrameworkCustomizer::customizeG() { + pcmap = &pcmapGT; // 格子テーブルで管理する点群地図 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassGT; // 格子テーブルによるデータ対応づけ + CostFunction *cfunc = &cfuncPD; // 垂直距離をコスト関数とする + PoseOptimizer *popt = &poptSL; // 最急降下法と直線探索による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + smat.setScanPointResampler(&spres); // スキャン点間隔均一化 + smat.setScanPointAnalyser(&spana); // スキャン点の法線計算 + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(false); // センサ融合しない +} + +// センサ融合を追加 +void FrameworkCustomizer::customizeH() { +// pcmap = &pcmapGT; // 格子テーブルで管理する点群地図 + pcmap = &pcmapLP; // 部分地図ごとに管理する点群地図。cIとの比較用 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassGT; // 格子テーブルによるデータ対応づけ + CostFunction *cfunc = &cfuncPD; // 垂直距離をコスト関数とする + PoseOptimizer *popt = &poptSL; // 最急降下法と直線探索による最適化 + LoopDetector *lpd = &lpdDM; // ダミーのループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + smat.setScanPointResampler(&spres); + smat.setScanPointAnalyser(&spana); + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(true); // センサ融合する +} + +// センサ融合とループ閉じ込みを追加 +void FrameworkCustomizer::customizeI() { + pcmap = &pcmapLP; // 部分地図ごとに管理する点群地図 + RefScanMaker *rsm = &rsmLM; // 局所地図を参照スキャンとする + DataAssociator *dass = &dassGT; // 格子テーブルによるデータ対応づけ + CostFunction *cfunc = &cfuncPD; // 垂直距離をコスト関数とする + PoseOptimizer *popt = &poptSL; // 最急降下法と直線探索による最適化 + LoopDetector *lpd = &lpdSS; // 部分地図を用いたループ検出 + + popt->setCostFunction(cfunc); + poest.setDataAssociator(dass); + poest.setPoseOptimizer(popt); + pfu.setDataAssociator(dass); + smat.setPointCloudMap(pcmap); + smat.setRefScanMaker(rsm); + smat.setScanPointResampler(&spres); + smat.setScanPointAnalyser(&spana); + sfront->setLoopDetector(lpd); + sfront->setPointCloudMap(pcmap); + sfront->setDgCheck(true); // センサ融合する +} diff --git a/cui/FrameworkCustomizer.h b/cui/FrameworkCustomizer.h new file mode 100755 index 0000000..0553bad --- /dev/null +++ b/cui/FrameworkCustomizer.h @@ -0,0 +1,99 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file FrameworkCustomizer.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef FRAMEWORK_CUSTOMIZER_H_ +#define FRAMEWORK_CUSTOMIZER_H_ + +#include +#include "MyUtil.h" +#include "RefScanMaker.h" +#include "RefScanMakerBS.h" +#include "RefScanMakerLM.h" +#include "DataAssociator.h" +#include "DataAssociatorLS.h" +#include "DataAssociatorGT.h" +#include "CostFunction.h" +#include "CostFunctionED.h" +#include "CostFunctionPD.h" +#include "PoseOptimizer.h" +#include "PoseOptimizerSD.h" +#include "PoseOptimizerSL.h" +#include "PointCloudMap.h" +#include "PointCloudMapBS.h" +#include "PointCloudMapGT.h" +#include "PointCloudMapLP.h" +#include "LoopDetector.h" +#include "LoopDetectorSS.h" +#include "ScanPointResampler.h" +#include "ScanPointAnalyser.h" +#include "PoseEstimatorICP.h" +#include "PoseFuser.h" +#include "ScanMatcher2D.h" +#include "SlamFrontEnd.h" + +class FrameworkCustomizer +{ + // フレームワーク改造用の部品 + RefScanMakerBS rsmBS; + RefScanMakerLM rsmLM; + DataAssociatorLS dassLS; + DataAssociatorGT dassGT; + CostFunctionED cfuncED; + CostFunctionPD cfuncPD; + PoseOptimizerSD poptSD; + PoseOptimizerSL poptSL; + PointCloudMapBS pcmapBS; + PointCloudMapGT pcmapGT; + PointCloudMapLP pcmapLP; + PointCloudMap *pcmap; // SlamLauncherで参照するためメンバ変数にする + LoopDetector lpdDM; // ダミー。何もしない + LoopDetectorSS lpdSS; + ScanPointResampler spres; + ScanPointAnalyser spana; + + PoseEstimatorICP poest; + PoseFuser pfu; + ScanMatcher2D smat; + SlamFrontEnd *sfront; + +public: + FrameworkCustomizer() : pcmap(nullptr) { + } + + ~FrameworkCustomizer() { + } + + void setSlamFrontEnd(SlamFrontEnd *f) { + sfront = f; + } + + PointCloudMap *getPointCloudMap() { + return(pcmap); + } + +////// + + void makeFramework(); + void customizeA(); + void customizeB(); + void customizeC(); + void customizeD(); + void customizeE(); + void customizeF(); + void customizeG(); + void customizeH(); + void customizeI(); +}; + +#endif diff --git a/cui/MapDrawer.cpp b/cui/MapDrawer.cpp new file mode 100755 index 0000000..c51b4a0 --- /dev/null +++ b/cui/MapDrawer.cpp @@ -0,0 +1,82 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file MapDrawer.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "MapDrawer.h" + +using namespace std; + +////////// Gnuplotによる地図描画 ////////// + +// 地図と軌跡を描画 +void MapDrawer::drawMapGp(const PointCloudMap &pcmap) { + const vector &lps = pcmap.globalMap; // 地図の点群 + const vector &poses = pcmap.poses; // ロボット軌跡 + drawGp(lps, poses); +} + +// スキャン1個を描画 +void MapDrawer::drawScanGp(const Scan2D &scan) { + vector poses; + Pose2D pose; // 原点 + poses.emplace_back(pose); // drawGpを使うためにvectorに入れる + drawGp(scan.lps, poses); +} + +// ロボット軌跡だけを描画 +void MapDrawer::drawTrajectoryGp(const vector &poses) { + vector lps; // drawGpを使うためのダミー(空) + drawGp(lps, poses); +} + +////////// + +void MapDrawer::drawGp(const vector &lps, const vector &poses, bool flush) { + printf("drawGp: lps.size=%lu\n", lps.size()); // 点数の確認用 + + // gnuplot設定 + fprintf(gp, "set multiplot\n"); +// fprintf(gp, "plot '-' w p pt 7 ps 0.1, '-' with vector\n"); + fprintf(gp, "plot '-' w p pt 7 ps 0.1 lc rgb 0x0, '-' with vector\n"); + + // 点群の描画 + int step1=1; // 点の間引き間隔。描画が重いとき大きくする + for (size_t i=0; i +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" +#include "PointCloudMap.h" + +class MapDrawer +{ +private: + FILE *gp; // gnuplotへのパイプ + double xmin; // 描画範囲[m] + double xmax; + double ymin; + double ymax; + double aspectR; // xy比 + +public: + MapDrawer() : gp(nullptr), xmin(-10), xmax(10), ymin(-10), ymax(10), aspectR(-1.0) { + } + + ~MapDrawer() { + finishGnuplot(); + } + +///////// + + void initGnuplot() { +#ifdef _WIN32 + gp = _popen("gnuplot", "w"); // パイプオープン.Windows +#elif __linux__ + gp = popen("gnuplot", "w"); // パイプオープン.Linux +#endif + } + + void finishGnuplot() { + if (gp != nullptr) +#ifdef _WIN32 + _pclose(gp); +#elif __linux__ + pclose(gp); +#endif + } + + void setAspectRatio(double a) { + aspectR = a; + fprintf(gp, "set size ratio %lf\n", aspectR); + } + + void setRange(double R) { // 描画範囲をR四方にする + xmin = ymin = -R; + xmax = ymax = R; + fprintf(gp, "set xrange [%lf:%lf]\n", xmin, xmax); + fprintf(gp, "set yrange [%lf:%lf]\n", ymin, ymax); + } + + void setRange(double xR, double yR) { // 描画範囲を±xR、±yRにする + xmin = -xR; + xmax = xR; + ymin = -yR; + ymax = yR; + fprintf(gp, "set xrange [%lf:%lf]\n", xmin, xmax); + fprintf(gp, "set yrange [%lf:%lf]\n", ymin, ymax); + } + + void setRange(double xm, double xM, double ym, double yM) { // 描画範囲を全部指定 + xmin = xm; + xmax = xM; + ymin = ym; + ymax = yM; + fprintf(gp, "set xrange [%lf:%lf]\n", xmin, xmax); + fprintf(gp, "set yrange [%lf:%lf]\n", ymin, ymax); + } + +//////// + + void drawMapGp(const PointCloudMap &pcmap); + void drawScanGp(const Scan2D &scan); + void drawTrajectoryGp(const std::vector &poses); + void drawGp(const std::vector &lps, const std::vector &poses, bool flush=true); +}; + diff --git a/cui/SlamLauncher.cpp b/cui/SlamLauncher.cpp new file mode 100755 index 0000000..4fc0f01 --- /dev/null +++ b/cui/SlamLauncher.cpp @@ -0,0 +1,164 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SlamLauncher.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include +#include +#include "SlamLauncher.h" +#include "ScanPointResampler.h" + +using namespace std; // C++標準ライブラリの名前空間を使う + +////////// + +void SlamLauncher::run() { + mdrawer.initGnuplot(); // gnuplot初期化 + mdrawer.setAspectRatio(-0.9); // x軸とy軸の比(負にすると中身が一定) + + size_t cnt = 0; // 処理の論理時刻 + if (startN > 0) + skipData(startN); // startNまでデータを読み飛ばす + + double totalTime=0, totalTimeDraw=0, totalTimeRead=0; + Scan2D scan; + bool eof = sreader.loadScan(cnt, scan); // ファイルからスキャンを1個読み込む + boost::timer tim; + while(!eof) { + if (odometryOnly) { // オドメトリによる地図構築(SLAMより優先) + if (cnt == 0) { + ipose = scan.pose; + ipose.calRmat(); + } + mapByOdometry(&scan); + } + else + sfront.process(scan); // SLAMによる地図構築 + + double t1 = 1000*tim.elapsed(); + + if (cnt%drawSkip == 0) { // drawSkipおきに結果を描画 + mdrawer.drawMapGp(*pcmap); + } + double t2 = 1000*tim.elapsed(); + + ++cnt; // 論理時刻更新 + eof = sreader.loadScan(cnt, scan); // 次のスキャンを読み込む + + double t3 = 1000*tim.elapsed(); + totalTime = t3; // 全体処理時間 + totalTimeDraw += (t2-t1); // 描画時間の合計 + totalTimeRead += (t3-t2); // ロード時間の合計 + + printf("---- SlamLauncher: cnt=%lu ends ----\n", cnt); + } + sreader.closeScanFile(); + + printf("Elapsed time: mapping=%g, drawing=%g, reading=%g\n", (totalTime-totalTimeDraw-totalTimeRead), totalTimeDraw, totalTimeRead); + printf("SlamLauncher finished.\n"); + + // 処理終了後も描画画面を残すためにsleepで無限ループにする。ctrl-Cで終了。 + while(true) { +#ifdef _WIN32 + Sleep(1000); // WindowsではSleep +#elif __linux__ + usleep(1000000); // Linuxではusleep +#endif + } +} + +// 開始からnum個のスキャンまで読み飛ばす +void SlamLauncher::skipData(int num) { + Scan2D scan; + bool eof = sreader.loadScan(0, scan); + for (int i=0; !eof && ipose; // スキャン取得時のオドメトリ位置 + Pose2D pose; + Pose2D::calRelativePose(scan->pose, ipose, pose); + vector &lps = scan->lps; // スキャン点群 + vector glps; // 地図座標系での点群 + for (size_t j=0; jaddPose(pose); + pcmap->addPoints(glps); + pcmap->makeGlobalMap(); + + printf("Odom pose: tx=%g, ty=%g, th=%g\n", pose.tx, pose.ty, pose.th); +} + +////////// スキャン描画 //////// + +void SlamLauncher::showScans() { + mdrawer.initGnuplot(); + mdrawer.setRange(6); // 描画範囲。スキャンが6m四方の場合 + mdrawer.setAspectRatio(-0.9); // x軸とy軸の比(負にすると中身が一定) + + ScanPointResampler spres; + + size_t cnt = 0; // 処理の論理時刻 + if (startN > 0) + skipData(startN); // startNまでデータを読み飛ばす + + Scan2D scan; + bool eof = sreader.loadScan(cnt, scan); + while(!eof) { +// spres.resamplePoints(&scan); // コメントアウトはずせば、スキャン点間隔を均一にする。 + + // 描画間隔をあける +#ifdef _WIN32 + Sleep(100); // WindowsではSleep +#elif __linux__ + usleep(100000); // Linuxではusleep +#endif + + mdrawer.drawScanGp(scan); // スキャン描画 + + printf("---- scan num=%lu ----\n", cnt); + eof = sreader.loadScan(cnt, scan); + ++cnt; + } + sreader.closeScanFile(); + printf("SlamLauncher finished.\n"); +} + +//////// スキャン読み込み ///////// + +bool SlamLauncher::setFilename(char *filename) { + bool flag = sreader.openScanFile(filename); // ファイルをオープン + + return(flag); +} + +//////////// + +void SlamLauncher::customizeFramework() { + fcustom.setSlamFrontEnd(&sfront); + fcustom.makeFramework(); +// fcustom.customizeG(); // 退化の対処をしない +// fcustom.customizeH(); // 退化の対処をする + fcustom.customizeI(); // ループ閉じ込みをする + + pcmap = fcustom.getPointCloudMap(); // customizeの後にやること +} diff --git a/cui/SlamLauncher.h b/cui/SlamLauncher.h new file mode 100755 index 0000000..7d4b5a8 --- /dev/null +++ b/cui/SlamLauncher.h @@ -0,0 +1,77 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SlamLauncher.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SLAM_LAUNCHER_H_ +#define SLAM_LAUNCHER_H_ + +#include +#ifdef _WIN32 +#include +#elif __linux__ +#include +#endif + +#include "SensorDataReader.h" +#include "PointCloudMap.h" +#include "SlamFrontEnd.h" +#include "SlamBackEnd.h" +#include "MapDrawer.h" +#include "FrameworkCustomizer.h" + +///////////// + +class SlamLauncher +{ +private: + int startN; // 開始スキャン番号 + int drawSkip; // 描画間隔 + bool odometryOnly; // オドメトリによる地図構築か + Pose2D ipose; // オドメトリ地図構築の補助データ。初期位置の角度を0にする + + Pose2D lidarOffset; // レーザスキャナとロボットの相対位置 + + SensorDataReader sreader; // ファイルからのセンサデータ読み込み + PointCloudMap *pcmap; // 点群地図 + SlamFrontEnd sfront; // SLAMフロントエンド + MapDrawer mdrawer; // gnuplotによる描画 + FrameworkCustomizer fcustom; // フレームワークの改造 + +public: + SlamLauncher() : startN(0), drawSkip(10), odometryOnly(false), pcmap(nullptr) { + } + + ~SlamLauncher() { + } + +/////////// + + void setStartN(int n) { + startN = n; + } + + void setOdometryOnly(bool p) { + odometryOnly = p; + } + +/////////// + + void run(); + void showScans(); + void mapByOdometry(Scan2D *scan); + bool setFilename(char *filename); + void skipData(int num); + void customizeFramework(); +}; + +#endif diff --git a/cui/main.cpp b/cui/main.cpp new file mode 100755 index 0000000..eb00fc4 --- /dev/null +++ b/cui/main.cpp @@ -0,0 +1,77 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file main.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "SlamLauncher.h" + +int main(int argc, char *argv[]) { + bool scanCheck=false; // スキャン表示のみか + bool odometryOnly=false; // オドメトリによる地図構築か + char *filename; // データファイル名 + int startN=0; // 開始スキャン番号 + + if (argc < 2) { + printf("Error: too few arguments.\n"); + return(1); + } + + // コマンド引数の処理 + int idx=1; + // コマンドオプションの解釈('-'のついた引数) + if (argv[1][0] == '-') { + for (int i=1; ; i++) { + char option = argv[1][i]; + if (option == NULL) + break; + else if (option == 's') // スキャン表示のみ + scanCheck = true; + else if (option == 'o') // オドメトリによる地図構築 + odometryOnly = true; + } + if (argc == 2) { + printf("Error: no file name.\n"); + return(1); + } + ++idx; + } + if (argc >= idx+1) // '-'ある場合idx=2、ない場合idx=1 + filename = argv[idx]; + if (argc == idx+2) // argcがidxより2大きければstartNがある + startN = atoi(argv[idx+1]); + else if (argc >= idx+2) { + printf("Error: invalid arguments.\n"); + return(1); + } + + printf("SlamLauncher: startN=%d, scanCheck=%d, odometryOnly=%d\n", startN, scanCheck, odometryOnly); + printf("filename=%s\n", filename); + + // ファイルを開く + SlamLauncher sl; + bool flag = sl.setFilename(filename); + if (!flag) + return(1); + + sl.setStartN(startN); // 開始スキャン番号の設定 + + // 処理本体 + if (scanCheck) + sl.showScans(); + else { // スキャン表示以外はSlamLauncher内で場合分け + sl.setOdometryOnly(odometryOnly); + sl.customizeFramework(); + sl.run(); + } + + return(0); +} diff --git a/doc/customize.md b/doc/customize.md new file mode 100755 index 0000000..ecd032d --- /dev/null +++ b/doc/customize.md @@ -0,0 +1,46 @@ +## プログラムのカスタマイズ + +LittleSLAMは、大きく、スキャンマッチング、センサ融合、ループ閉じ込みという +要素技術から構成されています。 +LittleSLAMは、学習用プログラムとして、これらの技術に関して +いくつかのカスタマイズができるように作られています。 +下表にカスタマイズのタイプを示します。 +それぞれの詳細は、参考書籍[1]を参照してください。 + + +| タイプ | 内容 | +|:--------------------|:-------------| +| customizeA | スキャンマッチング基本形 | +| customizeB | スキャンマッチング改良形1 | +| customizeC | スキャンマッチング改良形2 | +| customizeD | スキャンマッチング改良形3 | +| customizeE | スキャンマッチング改良形4 | +| customizeF | スキャンマッチング改良形5 | +| customizeG | スキャンマッチング改良形6 | +| customizeH | センサ融合による退化の対処 | +| customizeI | ループ閉じ込み | + + +カスタマイズのタイプは、SlamLauncher.cppの +関数customizeFrameworkの中で、下記のように指定します。 +表のタイプがそのまま関数名であり、指定したい関数を書いて、 +それ以外はコメントアウトします。 +デフォルトは、customizeIになっています。 + +```C++ + +void SlamLauncher::customizeFramework() { + fcustom.setSlamFrontEnd(&sfront); + fcustom.makeFramework(); +// fcustom.customizeG(); // 使わないのでコメントアウト + fcustom.customizeI(); // このカスタマイズを指定 + + pcmap = fcustom.getPointCloudMap(); +} + +``` + +また、関数customizeX(X=A to I)は、cui/FrameworkCustomizer.cppで定義されています。 +ユーザが新しいcustomizeXを作って試すことも可能です。 + + diff --git a/doc/images/build.png b/doc/images/build.png new file mode 100755 index 0000000000000000000000000000000000000000..0ff06c46adfbef43a2da6518066ed91b39790c2d GIT binary patch literal 48101 zcma&N1yq!66F*FYv>+iZsf2X5w18kxi*zpCAsy0Jzt#jodbu%?tNePTr+dc{N^`vM{2%OBEY4>ML|I!P*IkDgMxz2go1*`hl2)u zqN5f}3H-sZl2w;QL8*?%yEefD{(s=4tmle?LfC!xi`ws4Vvd5+9IhfS`_9X7_Xe59 ztmC)-U|ss)dSG_lZui@hu3SMe;Z7<-EWpaQ&ulF-@=J{2%!~_;? zAK&wQNlL+IoQ+c*2ffBrL~_D7Wh!`2r~`+ zxc?RMy5I3bFVXFEy92VX{c^# z_yM)!0m5y?$`H|%))rA%7pv!ZEi8=)%WFpUKh;21R$f}E?ye)_zaXwCS^^SogOHK8 z{WTIA_58_fHcn?@>-Bdl%^b8#A*7Mb0f`W;x*AM~P8-7WvP`f2!d1BC)&jYKyiQz4 zE)sFJtb`jL1bP0sKr~`29bSe|EV^3JFPQ8R@NJ88_?uKo+xpx2c?EzWzv3OP_~ZSZ zll(a=i38}D7o20L+7O%lZ6}*M`-I2`HzgN%^F)tsYq5oJ14@4ed_XcilfL#oW*hcf z=*}DVmD;R5p!W%A{6%z@YkQYdIz!`(b-p04kP@!Vd#T|n}>QTjQ} z8il|4deKGVxF4U!qNB-*dB(-p@#0#8-qR``AnPf;;=_I2;Mxm%chyO1cd`*BQQ9`LfNn;CBtnbHunfvHaGq zyA~avb2Z@;hwNQm54onDN5Jf^DKxV8Z^IWpTynRe`J&0Ael@%exE_Zz(B870kZKsF zTIk*VuvsUj-W&P|$_Y!l|139E0rZdYCu@{d@2~R)k%I^CKhqdyWvJPmie zS;=w`^S|7yQ=&&&R{eW%JX|<;mLUrMMe^aOZKz$$KNq;eiu7Sb(&(c2g$!rjx zh4YJ)^?A!e3&Jk*`&G|d*wjD)2WuMFN5>@TnAnN`xw<=Xnu6|nYrk!aX#Q|tD#`b< z)J`y(Fqm!6Q_B0|D?~@)a3wt0S9DXK{`;IwYt@v^pYux!tY*vQZ*7L>lHL~`c=L!J zbVvN7yFGgM(ZxaWv;4RF_ueDB6xz$EYK`gNudQG_U=^A8@Px0r;bZH5=gE7FtI;5S zVKfj#Cy=Yev#tE&NYt~8(}hd4P`@D2@*vDnNSfb3Kfaqgi$|6Je$Q_Bb4o?W6ZXZb zw6=A=4^oM*QdTyjjbTe#-fY1fbJ~1H zg}`NnT|%;07j8U%u(B-pg=1T>s~U{>huR)lVq~4p`q|ca68{luZ^&xXh-^HGb6iXKAp3uYd1+`Xn#RGL#f zA}DC17Sk!YZuY63B~2JP*ILJLJw*cAFS+PkAI))9{f(7yU$&4nPON4-yNCN}-*D90 zNcf}Ju=%|<9sN)$-Ql<}k3#O=%|xaeM;1El`_0rVJ>g=;uSaWNHM;5N4!GEsf{%>Y z=p>V$P3uj*=t6YBl#OeM_C9tFlACaBtosWcjW zkTIVCMGsYO0NO3j(xSAcQ;?u|Xr4ZfAI4jSt*-h-MEtREIBOEVd3{YP&RJ@!T3hm< z_OKNV~m3gcDJjqA_C#ugFNrFlA$r+YZ*O_ zr8Q1Euo1?^dyQaSW)T|xqh#($8Q77MO~&*~7aF^__s?JXp|U-H?l=Dw_jc;*!X;ds z9;yuA|9Dfuchxv+muzt-hW{%r%gweWQL?v!I)X`DT^<3kOU(A_30TVbCG4zRMC7PF z?{t>p88_;8mn?~mvpf*Yz2=mqr7EEM8Tz7ql?j?IQ>+(7kSBVxi%v=P!Ln@05Cl`5 znk|bcVg0>Vzded5JUv7r8dul|_HU<<=0+$FcT6qo?1N7-g!Hf`?W@2hotfGhoo}A% zPk#==u{&-GN7sMUIsaoCnh?iP-6|8b_|#Wc1Sf(5oSuw-j7^DeW;eaKP4wXfzcB;4 z-mE!G^=mGpBC$e?yX_Bk{JjfSt6;B3up^@lry1^Cd|&EC#=#yrhr^ ze4;l@KVF!!iD4ivB12O4zeVs!NKIl^hL)C_zp`v@5nfR&GN7kVSHLf z9r%!BM`)(C(o(JvbsFNky=^p5GwA%(Cu1=`*_k6El0SJFyv%SHX(rDAoBX2p9nPCO zu38|IX4n@tp}!CIH7)cKG+@7_n}D;dVaI^&@z&pML!He#W%L^iy8lG{aUT&F)dnsc zm+?L+q~1qnr^j}fCjSY^$!uKk?&%>{M<3w+X3wK&*_eMaN$&YOWjrjq)-&vdqbo7*L^C>a=5$lpUkCxPF#5Ujg6c8`lmQWDq*Hhz}Di{uZxdg z1ENn;D80xE)~ zJtWOtNn*61OoTk_Zv^KtPjH?D|F3kNg+E?V#n9jVvT&EPrjWhq`mBSbH|(eLaUaW=Kd#&P@rcIM1)& zrE$ZCvUwr=_NT=Y4W|6hNr+g*Xx!pOZ=+25+$-$_6g_gHA*~_TAD??K%AQ|mWxmQa zQIGj_+ir;#bwRR2pa2>`Nx5iVu~@Y7X6)1>g1ij zjo+|o9;_WYQZBgZjdLYq-ax7PiEQ7QGMUjHXH*3=FxmHac?CE_gDw2JOD+pK1`tbf zu@^wVldto=hHWwhLfBzT^JF`tlNN=m(WGM)*|Led>2P=DvYk6k5XU<&^I%=@l=8t| zq~}No7>@FC&#f)iafqWXma9siIvO3l{e5HJU=%!jGxqSHcqlzi0}{pGXh#7Xc&$BF7js;%D^@*I3 z)$k8S+h@O`6Y;p1!MyN?JrnP@IWsZGZVmPeU%p&UdvKP5QJE?^AL!Bc_Q*&2!LOwT- zCYIM=-E{jmM8s)_-G?94<#Dm7XL#_pJjFkJ`H(ZK&W}Y%cHoOQcQUz{8FMZt-|TR5 zC0E;v>dl%08HsVT?1@_&!9+SNrtW%QR_rJOmW9_I27wUcBVDYvC*fkB3zTjD4$Qjt zcgmq_f-zt(;Ama!X?2PWT;kHnOpkk(Sr)(do|d0gZcesQVO1K`{2s9)`oWtO`S@DO zjgPy_pv-pt=AC3w$evdAAX)QJg)yG$Z&j*f_j`*K%xj|?9O8a9vyT2ku@f83j7_>W zXm{#$6)ltvY|MUlNx)cG#LXYyubB+nL22|&)oJ?@jojx~^okyH91DNFB!BCp;{#US+bmfU=y0T)XhFI)x2{9z7lQ>{6Zh zdu?;tW~8zpMc?Uf4o4+S+mCEz9Q6D|z+_j)5^u3c?E;um8FU-O?)9<|6MdQW6^I90 zNHocrwV$g3+iKV$QG3pQqgKzC5ihbPtCGy$i-Gq^F*F`^X-JL&2{3!_;luU&vT9GxvjB_?z=tFG@L_P zlYJgr;-SbMR4LjY3Q}dzJootB_aql`!_%eBhP@f@tMMX(YH6G7 z8yfmNM_-@DiSx{=>YZ{#2#gD~GiPwV;Y}YTWSV?s+%#s5Z+ljH`CqqutCMY}rg0if zZ^T&M?MynD_8{@F{7Jl>WHDLW?|xqPo@P9XoElZDUd{ZUTl;fi0kck|$Z64QadA2Y z`q{$)j11-9(t6kVy@~#$kqF(TrJ!)C;{s(oLn;5wxx;Q==^!WqhXTfwFfAcbjOn_u z)IhoQta-0nq>|M=1>dk)?2qEYk{MJu;xxMx*h{XUz36m9l!1j#V+TLo6kHZN?1R2m z^B70OYcv74nTLe}I~M;Q&jhpKYN;qy_lL#a=>~mdhl#j{D!hWh%NX#!8XcwtZOurD zI3P+u_O2QIk(0E>9g+!T8cQYT;DhoV zU0-L)Ll41!H<5)0AJNGTeBVz<%M5Z>h!Q4$Ec6JBTD$hQHXJTM)km4yDg!6;{V9>2 z)bD)oi={c1bg=z$hfXX3zmGvJ9=iBXJUk@B$6hU#ar5c31)+-*(_al#T;P5t5(#>& zrwzmmH{YL!f>9TT)-jH5-~X}9LH_SKi_>>T%Gf~o>ko;Hi-da2EGLm0zR1=WQSkCx zzX(<5e^m!mV)K=9U1o-loJe|r#7gHG{0byV+9Hv0xQAO2*|upu{`hhB>{F3%W!^`U zq*kBTg{&zv^22XaR#)?vbbSv4#Q|#t6_QC5uX^KDSzLta^{}qM&%vl&ocLIIIc-tF zk(HaJ9<(s_`|+&mf<}pq_JW&=yt#3+NbGUnz(*4PQH=-DpFc7)1v+P4j@dz zi=8lCGdiD17H!AaOq6{`A2g#MJvEYLimYKA>|7b9b)(FZicyqt5h(vTpjbynp>Kyp zv0H;q)Rg9HVCOh-yd@R0oNq~)LJcO6Xf_`Eb?25lPk<8IYR3ka$w9Sn*Q(L=Fc5)nicmFA3kaWuE{l8 zHl;<01H_ipt#kObB*4-!NmY=MV}M zhYhuy`}#91knlW280R<~ki;STKOg@`25KuNh;aMOjZ(ll`hnxZ1@`gsA|pCBs=Aw# zyc01){Eo4)((x?|R}2Fo*TARn(|6&o0Voz*n>f92J-YC|*<;rcdFI%D^=Ds7oc`sj z>;X;>;kQ0V`D^kPX5u^L!ZhI4BSFX7B&k30@jSXNJKqSGWnh<%$QycNR)2vsd%h>b zM=|z=r*N})zg=4+bjML5yA<{8-aShj4Z5G%C3be{W2T<`b!GWN7&N?6L)1*Dd($)JeHMWh+Zry=X|BK3wic)sL4vgWsv+`p?3R!T*a4 zUEPMdlUo||1tC=(Qz7nKI>_+F{dYI$?FSXp8gsX1W#?EIq=y%5xr8pIvAG@VZP$Y7 zkx_A4gv*ob^gdhjS7U43{WH>jXT$WZ=ack}>u-5T;3HmTHIDAe(SfJ)=WW8uF*2aQ ztlnN7&a>0Z-d@}Z?|w5|=|(SNPQgcDOm*L_nTeh_6jwoT!L7p204&tmBKJPD71m5{ zTW6P*5B>4nZOhft@83)4+O5~j_(=g4IcsRY`T6Z_yu{H!3WrYHanAlD*O`h^yQTlJ zus$kLP~K%1HvQEiN6}UGG+Wz=mKqFMndc|Y=Ez(XIl^E^V@4iey}ZOGeWM^9ZAO|g zRVC2PJBs<-;%pkfb`!xA?K4Q{=!y{u$4N7%z< zqLD6+ql1qz4TvqTb>g$rs1%4;;c03^%SY?gk0U>nx7kpI{R}S#n{TUvLq|?kI7;Yw zD`nLls1g9jYu@Py`rtab-J?I7>GbvqgnwMh=exTI66s)5gU#Zd5^FCg;U#^Tm{NIr z_~Tgx_~x$_op9fgBC7{x=a7inVwQd)fnr4g-;$R{L~dh(1R zbXj<@p%Nrdl7@*YFAjV2t`B!ht;;5?VA=<46cl%jli?p|$$|@WFOnf+-t$cLFxQhxC^Tq1V z+8i;V*{l~KH1hsU(0k^uH4E47K);4#8$I*_jRRGss*$=Wd91;5rJV^QU|3UaAy{(lXWvAId?6ik1YU>Tb~5PAB>p8TQ{ zx!^NGmhuk&OCq`78D2ai+xd)17rEh=YdTZi)CvYJnG~yMQdt(`b{UV!A91_NfTG(y zunU+6#dyINOHWA_#^gGdmN-l&RLG$=$q=T$GtknjKn!^FwriV^_q;>`)alh2@`dH3 z$~IQVq|SWb==5KH)L<{c9H@gAwI+K|61?qiSVNt|ciBQMp?b0d6zoZ135Xz<3;NCF zc>rCl)GdfmV&{db-NdlsxL0H1gWu7~%8@ zTD&aOS~F1@mX^l^JoVPWZ1&S*flfXC@9HXDwKn055Ob|TDo({*`eO^OS8?xi%MQfG zkiq0FY0BFN8CJ2-?<3u042%(MkQKvriLj^|kV~7%7{R~@b<{B7*C1?6L;2kuwx^}; z-M_112?7dPP05d5zx;Q*K7F5yPqS0GtXX*R6lFBcbH+RBcwUy$fHwve{Mgc>nN=Qy7?#(|3jMp}YmHH8yrpZseGMNro4kf4oO&Q*W>OxdSk%wZ^V{{^ znP%EozZ>Um<>b%0Df@Eo$w(L>ir<%}z(c|05=6EjM+8xCyL;l(8kf6t?9fl+FN^mg zsl&YMITPS+@0{hfvE&{%k6U+!=9UWVYS#Hu_|6yAE zEOFeK05iZ5xgn?Fcl&1&G-=9zFyKjq`gAG=Ei`JMuEOuuBwlZMP7*`4U_BKFIJ%2L z;V4FkgHhShYAZ$1NeAORdiam4#L7jj-+kqY?W>){Lrz0NewkSa>POuCUMya(hS%!z zb^@mNY1``u8Yhy8Ne6kziyMi1Q3e8xD2z*XYQvS;%IX*erF{lk86n;tvt{UAePweI zm|R|T%6MI$9*<;d&i3f-cog=!;cfcraV(MyA)Yl-;8={Ts0_=0S4riXw8qBlwFRL7 zF*9(_0{qml^Ov+O=%=QczT`HlqZHyBfm#tF`ef#IsQ?U=m`W|1%yzSr3ry5F7Oq0H z5`~!S<5;^?V1kon2TQ~(J{#i zIo6Q4S-EN7-DE$|8M|iv{X*>NHf@YOO!nbE1B@m##e0$GjMh~9)@wR&|1CrXL28ZpM3oo!>#!_GpWg&A7?bd1{XP@t*_PENKopVCe6Ft4I$I(; z??`BVO*JI>#j)fNJ;j?({>bz@M z{||B!S-pK@uVlg~FYLrMhVl{gaNgtPfK8*K@!L(NDPe-qsY0!{0K(1v3M4o6pScnx zqOXC}HS*y$jLtgTXhi@B?U$tLw}N!XpOo>Wkcdg63wWhB6!*GE$^U`M82F z{VJYH8 zIKYS2%!&Mu47B8QMTqR_Y@g81Br^?n%Kyjr9@CSV+UeXxtKSH}0FR=!N}P`QAAHOR z;W45cdP}Rw1bL7-8OS;O77)eqKcbjewce-#46Hr?`w0Z+TaedQ0k;b@ZL6vJ0ax`6 zEz6^hNWT${BYaW(#kmR~9t&c5v9-y8#|lpE>Rz(#>}_D8_Gv=q#Qc%@oV?f?=BmQM+Liz z;2lX1oKt4)pXG~3Fxk`^03C7DxA)L>0knaH-|3qX~J-X>TF?ABB zY4>kQ_2w1EbD`H?UMsTsJKymw5Ae+gmiUv)m;Z)6z|j9l-ly(b!{5fx;%fnQUL#^epY& zszNdy7FZIS1)!v?yVChXgL3pHW}&OhgK4O>9JvF~fzvB2&JMB#1-+IQTgKyarGddR zQ}52K`7GcO>od*DARZK3iwB%Z50hS}%_d-iQKBUIEClmK@&p=`RlV}7d9+or?W|7q zyR0rRm!}h16{^`6!oRaK%Y%;O@2c&4zutci?lgWxq~H0cdqvJ*_(ngrKaPe|fAVEm zwaDnlr&t|3=$@!yLsC8wZZ#l|H^;T%a~!aw{yPW0ui_=mfR()8-1RT?{-q4&H1Aab z)biUYjvuVI2eS;lSqJjugiFed zXhM_x@w?UNG}?jwg$TxR9#YZz&^6lw-hog3fC+#TerMir{Yf+vX4(GfCK>h?B4q?h z8?y?B?qtoPxmF?l{I`?349NHKP*i3(7n!F zVV6px;2ZdHz`+Dj3#IE&d(!I7W_9i)Bm3k2iACxON=7Aye}Fa?;RnoW%le~I%Pzm8APr7>QbyFoky#YcL(Ml4R$A{Hb5>DggB)G<4sgJDoP2#DM4}WNm;Vy z6H{C0)g!@cmr-UbDu8YOz2i$Vc}tx$78C;kKNW;9Z&am32}1JArm(w4jMbx`ZwE>g z-34w@b#VnfV_V)mH>{x`I$RCsK@tUZ5CrL@@JQRA|%V(7q$7^chUP zn;7}WIQ>mNa1p%7%)5gq{PRE2>dv|D!}EeDSn^y!`s@aYAZGo9Tn$I2aPDi|2ej;j zyQUb2s#4{9N$QpHk>+{Se*?)rH!LY@)!+#vg&$~|VQ&IGv&F1uL4>6Sx?(o=Ia0y( zU6f5t=|>Z|Ko+z>;3DtHO2vv&#VKAPo9g1PA1-FAp0)=7kA4N&sI z3FKSv6?6OmSBC_qzRaYIf|`5N{r4!3r$giHQLG93WtL^J!TJ$mo;01}F2*E8Wgt=4 zX{8TLi|{Ar=FMYTs^N_;5ZQ;8Xb@EySoqbLh&l+U19Ya>-w~(Wvy8*we-P zG9x&#XpOjVkEHS|g;*iR>chdwS_C`koEkm<(eY`FitPpBs|^fS6aP@2WeHCw5@D@F z5?Rg=YqQ*2l}`kul+TerlsWXYa^eP$5P&dw$enRyR(Hdk%eLdfS*mBt#cn(Dx94pT zAPo`2KlI>!>bkx9@IvvI!RKcf9|TGCK2}3Wz6fV#F(qriPXRJ{?BSZ<)$axWt)JhN z=)6~kQaBba#yoRV3UAo&lPE9P8~0GiL*;Wic4ndqo}q{fIW+Vaw1{ONH5$r1$b1)j z`B}LrMV6#}aGs0$nNzzZ=*oN^7Z5lYjzV#;nU}=RCpbK#Nr5Ej{qpRfYkfg*mM#7) zN=whF=05h~0|sMGzQYtio-v+C`a=`bt`S{jfx1Zj{F(DH{IFY5bV_DfwbL%5S+o8Q z@#~+*(TZA6ff6(GB+EDcQKAapt`Y2VR~)$*$;OSHaa5JN#j}SCL}7_G1yGVX3Ham1 zk>*`grUCp(g*EXGH{Ch;aP{5SRB2GUiy>h;?_njYr|FGBIHE%e)lr79?zFsJ}^EuIaWz{4#v&3m8jq52nY6|I# zO>X~_d5wUTT#Zg;W6}&F>Dx3}Cm67*5Dz06L1>s*M2DDFh@QZYp$2hII~GYN0YzYq z)K!4dRpE=31;ry*??@_~L4c&fjKYn^plc6ni)2L}O1Dw7e!(}7&WtcV#pnqcRhnDt zk>s>{@?C9iJEZmIIo_Em{m}oBi79EC$>^dFkSRGq-i!i`-2pAmC}fsrdoHaVi?lwU zf%BlM(EVz+ft#DV){?mj%uC8^8>dBIpQK1|=J_-)0I^M@u`LHX4SyKYClLO_L+d{Q zGfC}B(llwn#h^yOkCKf}>EB+6uD1wVQ64m6@<#&Lf*sB*Q-TwymOtui$S{0njAAaX zR#&2lYLuDQa|8XOo9O#)>f!I}#=>om+2-QfRT}N0w2ghQl#{>O(utLi=K2sF6 z_pik_5OLx71fBW)|6m}%E)KzE^R+p)6LoM*JO)}-Nj>7F3bbC zaKR&+WKq5Dt*z42_NE7+DR&R43!${5vg@=E#HUewgwGRQfv*2=Dh9kE2P#3`yEbnF zGgZ?}5Q3MM6rj~^*uYCQK;~$s# zN3`_6 z|Boe(-OrtNkBP2IvF0Uv>}abnSNTI2*8oyQjTjm%Ko7?aZtc_+zf zdrrN-OXZFFFAo;8^g&#|w#G4@zN(L-LFt(H=$;&`lJsp>qsOcZ3u8h#%hyt~=Y1X& z2lp(2+`#X=Dvs?HXdaLXST0&v50FZCF|#`&sHXa8)8@bTgWth2;~l*_PU!!YCo=+t zE_0srkgi@^N9U&EQc-V!FvF7d{BjYOjVa?^3aP3%*i(y?D~*#xT#C+&eR;ZO`|p z>U7r1>J&<^n#w4*DjC8CP@PIqwKAT+xlVwISbrocZd7{si%=!T%g(iT0kKwR&-*yu z5R-ewCrGi_$Jn-OWEgKZb3#;;0*KAL?#J^dm?Cr%P$rNbpP zZ(*^CpiFK(QtYUf8&E4B>8;b#(6v9<(p@m_*xM{iEC0>pX4ki-I@mr^9YPQ{9G?)Dji!^-nrCvTR!r!5O>AY4SN>pps^91e|C$MH59q(Cf`Rja| zu=rJFM=#@7rAQiP|k&=xpmp=B&%$5nmM;?ong<3O}SiaBAt>BcY|kNpro0gz;6H zbfQ?6Vy80F$i-Pc;PKvU@y?48or7r%dReE;dJt(Ec(BqQd<3YSlDXe5B2J8}2#R8h zcX7AAmH1-Zg%)UlifV4a{&XgJF-=xO68~Yx=Hs_Tc|S)xV+Pdoz;#b1HIkipQo4*W z={v}W#YR|Y%zus8KQR9+O0JY6^an&Qa)W*7Pq7Sn=Nr?F7V9o@|6nc>Ix0>tM%t{> zkk(V&C{-pBa&qoi{U}CpF;%`5k&*XWp zWwSv>A&|Xq4!21AXKyo#TGO8WTPIfiVK}}RSV{irUSy@V;@^s`@QQwL&0Sx=23k3q zDbuXzqrwE6apbqCag?I0b#XdR5X|q!+iNBxwuHDcHXytxCQmxd)Z!>VZ14_H#Msv6 zG8@qrs=O{A0#Mx(-h;2%vBQR%NWP2Zqd23FQD)Vd*p_j2E#CUv;wRLOAD%03E1dfy z;D_XEbZSx%(m(Sc>bI|bATyE$Y8HFZYWJ190W6reEK!*!mh9Xjj%H;?%k@KjaFrxH zw8qzPsH#H=L^>d!cI~R#`7UY?^O%txwVe5?&l_sJgfQuTl+|UT!CrOB&yhqLsFZ3< z5uLtlrgk>8lmV6uy>T^mwr^V>EU0DNFw7aJ({{77eC{KA(|Ngk)EzgFS@=;~V<&KxSLaGw~4D=*Bl~4Uj^lc%_Xr(-;7TO-kI&79% z_;sA_B?*8d*L41yfl0tB#~lC70g=$c3&4x+OBCjewK(XW&*dyp%OwQp__e|5G)h*{ zD{ngrZL&(Keokem{1+(50d0cCDd4NJD=}n{4uv>tp;)0-JJA&4NMOr*+iyHqNrqM6 zMqA+K#BYv98z`!a_q&6BYPsv27t7z(Y7D8d;RUqbo(CmM6-Cl@;H zmk>vVwaN2>SA~y5f|(&i*-A2r$vW+jC@Ed7^2efK+~q>!125ai0#k(hw1IUlw~oi9 z?8`}Y1gp%ZwX1Wsr|3oEpHz9EdcZBsHB-0^JsAAw5=e=>h(kscZLtbZGsbh00Scnt zGxZLT%2k3*JTzW}LHIAAk;H+>S}bFN*O6IRCg-hW`6!p(9F902B>1Y8-RU(G&QTKw zJ^Zv3LGtwa_XW8!{tjg{#cw~ zbUea1IM#s?9Rh;H)@T<}h*C6!vbHML%OvghQyp=7ho-*=#Rf+i_%>{6PQNSjPWbf# zqW;&zsG_0yI_qT|og{dxk(~?-tYP_!GWn6cQW#phLz&tnZt$1Anc8P?6#`EepAIkWhg8C zxBYr=N^igD%=I?5!xI-qjyli(oNK?3Q9}=W;FF5?6$?#Wfxes_{n-Ldsb%8TgiJe# z1MO+~@oaZgoJlx6Do!|h(~+tk4vHOSA_l9uHgxa&jVy~bM;y2bD|tF#JcsRWtb;sq z;Ggl77Hnl(DiZLnMy$`dCY7uYQDjkJQ(=lv7IZ|`Y0p?H!NQvgC{ZVVi0g9)IM{xj zYN|W^6Pp$NZ2etj^E4PzuU`hJu?#Kcd*P!whvN*+xT74cozbla2g7^QdUC1gwPR<$ zidH-9SB&;9l{FNc)8HR`Aj2c0g3#P&4iTktAPc1x{f4lm=PIsG6Q`dm18o9#P}qA(benrN$X%6}N28Q6tgNm*siLMlOBX zrXzK^@x}3Wi(k0qFBVh!-UBD11SVB#nz_2OpQoPluD3z8b0^Rs|Zcq?&zC zM~QnT!^YK2v2CivVxw%5w0-O+zfcn~&x*kY!}4qDTZXn)jb5$*VF= z)NjhoFEqpa$ZM5x7_`1*`@;%E&ba1}H5EWS0}j6~bz@pkAK}MS-}PX_S&g zPT#$CMVg1`Q5XIr-}eFysHnK9N3iEnD+BrCP{k_@hw{xIM8>$p7~uO!pg&ZvIjxez zmh72O*{fbc5!X*do8zRH-WJv{YBh)CM{pVCh{wg*drp;pp~@SCVlxdyF~vF{zOvf=O4cX} zjPi9>{o<>pKt_P+&YB|e+0^K{El%U%(>upY6=*O0- z;IRexYUBGPf-$idrF1&>u?^!UGToJgyQi`k-O z+>U*_)6E?#5_#7<0rKyLvoanqHYwrya~<6+HI0zb{=Mk~B6IS-(hVEfi(iPav#d7J zv!SjymIN}wP!-@~L}X~Th#v|`2@9N8J5TVb@NDWG(NycdJDK}@i&?YD2H6+ytv_sy~C(e?qOW$>S0mwSDqUP`2XViZwErPc1NSG!d0MIT4@K;hDY zX41vW0lt=tXu4`3=fksKmYxKnIeU@X+waa?g-7C<^z?lo2o;*`YfXcsvtlYm&}`%U zufws7TvpgLr+D@|1?;9QeTcSCnQ(g=)_r>PSKl5r@>^RIo(n7^elBNBb$j5tj@I#Y zku9QqdtHTv335wx@g&y3I1?e9dklv(Pvj`@s9JEdm5^Eh=aOyMMiy%7GOFVjl6 z_#g|B6{F@M^*9pB>^+JJwy<(4o7^g!8GN-`SmXIh^t<`~l*h~jD)SF46}vdEd42to z`dAy!X|ojUSgfom+OR4nsWbEFN89`L(Rjo?RKc=xSY|_F#3!VO3PdjI#O*vXwD|8X za4?Q&N$+xNtZ?N`m)rLA^r&OU>Qg2zIeMqa8#?|^t%po7+|-CbSqxfsLY$SXkfh#> z$Os`u*8@h!-o!Sc?dz&L{je&67QPiQgDr|hH1jpcyxQG)ew-~(2i3T?3V~yv{hZ#- zXUkIl_R;Gg3Sf?LQ4X7kMD2IUuS~Cx>+vr zZcm+!I}nuR(Be%Iu+&TMx4;o1$d#B1C91nB#N^xvCSiOOsEiM}mNu35s90ZI(s`+w z^d7e7;G%+srg%~>6zj57sw-ElQ@;AnDQwCJm;=nkh^=q_9W5tIe~`yzRNYu(rctk4 zAo^+5XswD(gjj!ih#VTI!}8_jlRhS}AXtyI?RaFzfw6Y>ZK6;0Bve3y%0|?Dvlr%oORfl#!9EDhEZqEAAp7l? z0s)(x#TH-e{M@fRH|AS|H0`|SW`pds{xTvA;uO&%WAlPVR&r@4`IH~!{}A)55+E4_ zB*f8^b%V=9shiJz67Dfr;l=8S+E&8E{1X^O6ZCqAt)G3Pg)2r+3MMo#LN9`5_i)pp zxwf(Hn;_6&YdT!3V_RDA-H&$g?;dTz>8T1H#-@zc_;j^Cl)NpMgQp(@X0jumM68v3 z_ez2$B@T|UF|jlgx9b7(R&P{b!A|w2OS@r^9<_+4p%`dOX58EHe~ykJi0+XC zT*BuER~A1SZnE%7Cm$V_}NDkR_T z2}eICG1*50O!HOKS9O6n?+O2^yICjr{ZTdw}=$B zh!|6K22|^1h}b(`Dlq0vaWG=B?jS==t{!YM_z>r%Y#aK2;c+JXk6c8{NBMoyJYzx+ zvV@dqQFP4Q4*6(N5ksbGu=t<~DhonXs)Ah)9UYD39JDI?#ljCq+ij@FjNA6dUYqQ6 z01&t(1om?1z?hYo{K+9Pp&wb47@lHY5JudM4&0H8VADbiw~rVFxLwcr$a}M8Ix+C& ztJX_)^ypQ8Lt{ft0JK7FDAXxOo?VU`8JR#1YkU247Mpn|i23boHJiSCmEwlN$Az(h_l2CpvSXxFW0$BbdTno#t^;UQL^WOo{)5N!ksYPj|GP&{R9e6TVz04DF-j8@Mo*JvCPlV&bf@S!% zvmBrIaX#G;#p~Pc3&Fpr%BNfUloI7?sRlCs^e^x;3nv6<$!8I~GuWAC)cV7!;hk@Q zan}s+sqsGAS+1;>Le&Bdyn2yGgTB*58E0h~CO=E|sr5ts zX9eQvvdA=CY=h&MXI5$9oC* z3dwM)dL6x=)_-k$dv!*_g@W@qg@(R_f-m0zZJ1+VpF`vM#>A2!IBCitG8k&wJM{E?_`{b8(2ry*;ycl+73$joge_da$Kurvf8_SeoCCc^z z+TD*G=jD|4?OLxJAt~BGM)eeS=o8O;4{OvcFNbeEO#7BT*eIcEQ=<@F<71z?&{^U8 z>&%_-eUWLuZbDQuFg42(ACa+JcW|qtm&4n`%(QD2VEu0UK}gCc+Gp%BL0D1LFFo3J zR+Z04<$fA$^DG#~@jZc`i&_s5@oiV5cZMYPHL6Ph5@R&Z0~_*I3K=lq#PVFU;;|CvBSqT3K z6qJqoKj8Iy5BmQnc#Uzu7Chb<0=*ZhX?>^YDmX?T0Sq$u0K|E;aKp}?$#(a-Y2WGF zqS3idsEwmBtuJ23=v2#TMb(yaU8h%o-_=mG4{% z2!VGXx%n07Q9cHLb*1#P1>S)#G0$cbxHq0KjFkrlE=CM7CgP-Hy}0>9y1Th`v1k*SB6#9b?r)bNlABicju;&l1(?86cq$%knR+a zW{W5dn@~zrI@FD{NTU)WNava0^FGh>edqmguJf0Rz1Ey_tu@CO_qgwSE{J^LrE%l+5lKL?69_pksD9D{<*BB; zO3Wpa7wJY`Nm=JCKBjb3&Y=znjX%zJrGnf~-aF3siR=$I;*ws2;5C%nS-gq^OYX_6 z@61fc;5<#jhJ}vqVCPYAEarpqX=kA?#(W}x!P1a6cOQbM_4a`xl=xn}>BP(?{fQ&I zN5w(T>Dx^*v!M$!m3387ei$DgUlP8BV#N{`$!S-{9gj_8kXt{8T|@?7Jj`oU^7f6G z-_~}{9(XBct`su+{5+X}>T>%l4t zMqB#B9qN)BYvmlG#I;3EV?x62_ZRy?Z=HgYl89DPklG_jAG$*SM(bBbFDVlr9=mc{ z4L7Lclz0Zzb75k?9yWLy?OwxNe8{{iS(sCXW)V@)>yr29-%q@@bju;lkfMbwEZ!SLud_KpIT6GYiv5f4( zF>b)5_zNii^J7s$*s;rV&gCrJP8{JOvR|YU1kq;&TKqoK_l!SkH5fWm!(d94%GZ+v zP0NtRPnN;a{B66349Z1Fqi;Ec5!*Y|ra_$aUVD8+hwZ&=)f+W!UZTSh_Q=x2`idMx ztbDW#*)-m(4!%0PU(Ob>o1UmyZ*^?G41F9VL(f>}jAZqD&A^F~hd6)^hvfnE+iSFIQUU4!NHiT)gnBpoPHKJB{D0DP>8 znhewP?Eq@3998J4D)XFTo5 zJfgTGjJzKg+~RLuV9Dy>EEe@XO{w5wXgXt;u51w6!m_WhHulQE@t$1bRSfEN0x<~2 z#v*fG^rFO&k5J^Oq=ajZHOnsp!TJJvUm5zm)~lMAuH)XmM{1WvVarATy{lf2#N`su z-u33WLw!Q>m%}jy?Yfq3)5Tq$eW?34s;DaG)CIvOj+;b8EMQC-WG#J|;e@i9mT zI4#2gjr58^bt`wOEv&=kqbtd#1l9o-3UDmg;?!g4HiTQi%`fX!u-o3#PP~a&i(+vJ zPUJPa<^8qCrlWd)cVcdCViSTF=xKFNN)#q=?Vx`$MOr($KBxP#Vm z7N3~0z5g_&pWPYQEx|wKb+-EfWRO=7=5hYShp)d~LCVm-)E$=@)HUj>mUIyByhfpz?1V~wkHM9cxXgln3LLvw=(Q2*rV zH11)M)OP?6aW*~t%1%1L$0(wZp`e%%%bgNeUdga->dSSHP4PsgN;=_ zd6LU3JpG}s{Q2)SYDzO~TuZMKIng7{m9UUoV^;2gt#K@T9C$UB^UNkk4WIkr7;F}Y z8tX-|E=puC82RAKA=w00yRja+cn7I@kGYc@HQjGtwcRSIGA2NhJ`N`@&f!B%t8A@% zuhAxJ#YW=73^$ozKz~2v0Wy9qe|_LOp*wYta#t>X;9k>to@s$Me^xp7g7NfCM!)g) zG43SZD>N&wMU3x8%px8EE=uSxAwLEw8l=`ijF9t&b%UD!A3%`B_Npuu2_l0Hh=Glt zCjj|2)bIY-^JhPR^FZpsGiOW{TacNu6|{qg;B|) z!3^JSgU+So5i?p{&kvRu0+}o7n!YSzE?9;7vltKwY0}Jp47qO`DjQP5LGBLi{9VUX zupI}Irb$3(P1gZC5E6;(ufurE9deiB1cSczCUQ`c=QJId^uWbRo%Nx0U2K%0MHGv@ zsEP`3QZIU$keoDt3Tu%&Jq)QJ7W*|V@E5R1yN9*Ll-cwLR_t9w`wVEwfa3|uFE9xp z;Jmx=#gs+`z(<9C{t9B$4MRNY`084xh6I6vq)rEdM0MH6i0w9g zZuUiIWv%&S!&)kLKb|I83Qmr}*dpF+m3?>R$!Np_CH>iPGO7T!PKDWewQ~aVgjwI~ zoay?;sPL$+vhE2C7`! zG7nKYjX(J({-{7d(mniwGWFVTi&|nM7Ooc1y9=wJhi#$XQZ{5_sYX8~qfytb$qPw5 z4ShaI#C74V_9BEvhKJitaV^;rR{T#7mg?#`Vma?OY&X*>k1E{Q4!iOp7Li7~QWN1p2&`am{bZ`9BbG#2L|I30N1T#Vjr&cUeb zi6oj6TzDPV`!-{z%*RG2v`!t`c3o{Ox&K)@5M|SZ@TgM|@Q!~n2as7VV`H2AlTtQa zy@G8JXu2`L1Fz}2{|#&g(c+q_oUU`V^{^pdF8_-M^<>owadnlyb|usXUS2vt%hfEB z36aFE_*GA^K)AHAG%AJg1+obdM)+OIj-a#KBZUCGm-^?2fk-H3gGavVBSxI0AL}QS z$@y}A-xsnfpQJjk{9u{Ff9DD~4KY{m)b$tb2fWk(7Z@094A&<$0`l#XCxrIf^+|ki zVDfX1G|e&;+U=Yy!)fpC&`j&}Ea%6QD*Ttc!guH!lYJ%!sUA3k?UwIXuFbhJDR~h4 z(7Tf-q5G4O`M7`aQP<4cw4toz_8Hx&DJX}$XmPuU#bly7QJzIy3M3Fq$UWS@J)K8^ zBhZho#+1|A+kxpgfzUwQcctDxOi|13dssRC`p5H2U{kg~k9iEaCIRrns%vX0Uo4Ub z$-$x$P_1P`8D0F3ZTiyy4OA1_tKKV=h(i(YK{fCeRZm>Pa)xWouxLWr8p=-h43c zz_*m9`*tpG3hd(hRF~vl1D5=$K^>1cCS-h|-|co$!&^I}lq^x+dP=u@0**WR0mGn#KW{O>(TAZ?;^d=sco zN%S4#AUv%ql&KW=sxb55tJ>Y(->!xWA9RfEJ+5U`0~7{lXZ$bPz$cc zTVYfe;&|Ih^~wc}HQzbK)Pr-J|@G_94cxdqpxu_DHgQ!Y!uQ zbi|DuO&Amw{QUHicWp(dKpYvL=@H{AqDsx~D+Z#C2L`x6`kP{e@bzGX3GMFnLgrn} z3uEKVNzKQo&G)|zrMZ}L^IHq0OnlC<%1fVdf7)ThSdDUh&x1H|vrpiST*q%JH7&Wm z?S&wUpJ$krUQ9hVrXwnRd}Cidk}sWtYA7Mh=_PZub&U6gr|aPEyLRJpj_USopE}*V z=o4E3U{r%yfbO23Qhnb93p`@V|qK>1Y zi{r_QB1Q#R`b1LKDa{`!<4-0jHQO_UW|$%R zX3i)lChfa@hS>X_$g$oNb3gsm9W;?@f6GWpq6|JLn>;Dq&l_FMkA@Sm(DQD<7Pmn_ z5QpvW#D30t_C_Z-WKcL)52W)>Ic$S@`XfxR?l%PsjWJ5M?1tv$_MR=}ub`P+@WWBe z=>TjOSvK_(FsBFi8De5UPI3M|A#{1tA_erppLU%L6L`0F8iN;^MvN`V1_CWuixh~MYlw-)Keqc_92LW1h?yx?xJpNeNfR>6;jjGJR z$L9f8p=CyaOHftoXv31v{8Ru9#XX$ghJxzP6hR+LFj-l(P7~#OGnYB+k?x)WvnO}Jx=lC+? z2aksS%Sl8!yoWMky!WA=k7VcQpOCAYkJufSmoS&kg{cYNd>tuS>-I4(n|J7||L^9I zrJnx*hLCTsTej|Djup<`Yal1-6&%xtQdkC862`L#UDm%1cPc5C%uDHh8`F*U+DdVAS>Z1_(&M_nvr>yxTw}K*ac;qKk#+fTaK}R6b z!hn`!C%CtCU+8~@XKbXsa2JmxFs}MN$8VWO`WI}}vLv(QQ{S^^q>Gu3Z~@3kQlj}s zz-rh+yZ(n7_UeVN@vK{(|5sr41#R76Ha=I#sm8y;^SC=S9Z`GTh!)#itVXW5cVDO0Ry6-+LMYJ_@2$>;Ec)dBxe$K&s zJYKBxp;7(Fxgkt@{UfHRv5HcGO2^%02E*WW>sGd7+2cNGs0|KFs(oi(`!d!rLWMYB*? zlb2`k!)538vMnr~@9_cx1kC3jx*qV8DU{l?zR$vOHXZ&*wOHNM_8fGVHOUlQm%kY* z=uR+I`$L;nrB9zx&a=&bh##DOb^!H{6q6rb;S`e07Vu*6KHt+IIc%(ABHOOJRU;A)!eq0^R>9m%3$~$>3 zVzEFnbX8Pa-;wse>S*M5zHVxG@W5H&An5O25$19IhQ{D-|9@u>Mc&ZS+{v5xHwyfG zP1CZ$qLS{^S5~hkf52a^FZ9g(jjU`H=~ij;=!~-qUnRxU9I;@Z(7?37-}hw5KF3YZ znB8Q^6GBH~AH+D|uB*BR9Xiy=Kk&3ojZwO=o)oURUMllr&7Y zUO0w0^o}$xv@|IflX|n^hMyE#%^92) zG>lvnImrID!h;HiVSgvum7}3AxQgsvmA1HqgMc^|ec-O3;RK~LBQ)>T(BIkLf`Bc4LZui)?Ae8zb^5KrG4DMVmHG_e{3n}U^!%!?3Vl04dq zm0Jq{L2+-^OVNkA?o2W5E#5@Rp5e~WxCQm@@y@1mtmdX=7x`3@+oIr>(sb$xC@`4C zW<8h?Z=-zOVdN>EW_4-k5_-;+^VATY*An!k%3sjch>ef?yNj@gIDA#c`=w;5Vr-%f z%g^}P`1^w=xyI%@z_jAzV3_F(e^zRqc)NIOw6L-h1r!P$FT!!W8c=P!_}| z1vR!b!QfGs9>;Et2_(a*6?n>nHVUVYDLt{GnAs19AoQIS#=iMdzY+ROvicE zB0MpK{0!XO5b-C8qNmZW8{|(dq>N};c=jr778=LQl;X{w+*zN>&G5i$8@1{{*RyAZ z4V-NAgc~+)OAQ}2G}rNj@cA<;d9TJD{guxzkH~zUdj}Wfdh}%x-lN?z5-=@Bo9pGp zV-$vw9~N9-Ee7G)=#BF`G*;?dg!s|HP*=lUw$oNP{N zv8bKe!w^E-j~`k~Y&CTO-WMyl=|M-c@~Kr@Nu@u@W+|QpHll9Sk*89+?aum;-=HEqt+EQA;s0BG=}|mbZdfa z?~ND9eoqjB-5ChM!&&>3ly3Ow>>YVhm;)gZL-VAB66ueiC|EqUuck zCfek<0R_vO4paTQ(Z@j>=>(JxiQym7fAi%ynSXixO@zwylWC9vz=ftP6dnQfpMr+> z$&b)uv(WPvr4ZzQqm8v!`gB+6LUX44XZsZ_^KEP%4hK+RKB@M0YJ4*)<;w`GSC$?i zC5}fym251H9XZVLGOuf!a6aFB^9Gk`o-H)zyWkM!L(ND-?t3iLB>Vgi(ybysRmO+( z67&F(cShNJ-Fe7HdeY6`%hBlqK0&GhKMXwN{FBnp9fLkf$8*>u3$rEYMtuc@JQkG5ukhxxdYBO9e!;mt~-z3s=Hl!B4?>FHmk* zhizsbq_lj49W_>opj&yUAAAuGff*xgEPR-R$qC{}T=g5|6D16I&NInu6@nG<74ONp zY6!EN$oFz<)$YCLRj2Q3r@u&05eQspB*JL3UmmI4j(x)Fh6-O5!sEW@?m7vom44dj0D^S$ZT8kxR+Vs%_=xGI0)>lJ0U&3my7C5|tn^fQA6~+tqOC8o6LX3p zF!dlmoDiRtuX6B!{i(M4y^Lhoha+|=)aEC-7ZovV)r`Fpv%FPRd^W^u<(lq~_-lNs zCoV7aZEkMH1L-d7SSy^|mcn?mg6XgHO~hi1o75XEyXiYa5tg=ZnA6#U&(|w}>jnps z+O(~;d{qREH+Ir6NGYL3wI`jtz~jjV1PwCe*4#0$mY&v3c|h=Kg2z4iSawDD1Sh%Y zok2Q6)(LZm!gRuPw}}|0`{6xrH4K8R1N>)x>vsS1{YlEl<7V}>(d8OY0CpLKjJ-{D zW%|S+$o-~v{SR;MEJgEMp#4o4L8TNcpUz72cYB!4$EDy131)K@WEf^(VH`W`I1hy_ zu|7}E1;>4o~)KoKt13CcX%;nnVMb6|xIG13kW*$AlHQK%?x z%(@YTMM?oNKmG(FJuofTgP)3O%D#$>_Omm-%km9zPy@PVmA%D9?v8XzI^Lw0NTE~k zh{^RB`ZnusSIv0Uk=jroB)UQaJ{u#`4G%rhyVD(KoRBYnl!hTbup;xY zfFPRWn%d}o=!lI`~fWv*=J?tJA`(E5}*Z4jZ`r7rft^ zXy_e?&2ao9n;3^<=*7D1IIg{qTK|@cIIBlVzAzOi8FYhU9Sye1 z8x>zoKR=6$)FKpqd=^&JUNc$208_0k2F1ldiTzt(8R@QS7&hxI(t{ISY)wI7 zScyXOk+Blg$qM%b)2=cR5uuwc_IA0xtaZO{y}qM9JrbX(Yw0c{J;{k}yVL%YaV~=E zzVk>JLjL!w`&Z5FgVC3a)j7(=j2XW>KH&sJLxYf7%_h<2-6V^beq>Wl zYJ(^9ujSA&!>yLbcx1I(~A&InH`5J6|Pf^C;Fb zj^3^v1x}BKV|O=6j{xmw>sc}w!RMc;SGYOcc4K`k<-F(l*Zc=0i;wRQTn;j=ghtKq zD9k;q!PD0}4rC8v!3=g^7S%7DG$JPS3qrnqnxW8R<)QzlUkQPBIl*;{Hl|CBr4 zXNp}APIB|{m^xxW91&v?&TbZi) zrq3q_M)PwbZdHje3RR6HjmWo?H!AUjaaO1ELD?guk?tX%GjT2kq^XS zM0(l2%b>`-6e+!ZraWVl05 z&5u_i@EjJ8Ph+Y@)qu^^;&y)>Ik8D@f-8qUnspf8NAjD+DC`kpd}M<74Wa=Nw9!H7 zSP2<=5z%$s6MTl7{ZUC_h$^CxC(qIpH#|mNdea7yk2M{4d*=;$KD`cipk!@sf@x5i zMa+pCOz(WQsJy1aUdJY{bczRkbPsPd*I2dnj^t5m8apvF+;xgt%G59a@u0bWfRjU@ z&*i4b=i(cV-Q0wZWD%nAv*(iOxKCAPv9WP)PYEgtp*;I|w_qYS7w~xTUs1qv%gCQs zDGX?(4mb$h+qmXM{0GDaq=`3G)|m9~xY(<=WsVt#$OSLB5f5!mMB^bDzT;2bFjJu3s^=F0@a) z*)*Hb=1TI*F!sE*bf!$H>0f=)%)j98HgzbA14Sk)-%nvc?{LgJafcck%qlY19~CoR zFW_70>K17^(ac2NjT|-Tnrjc&hJM3M0l%iHiqF8TjTp!s9@zb0>}YsU7m;y80x#^T zNLb-rO1V@-v>Ra)Us-cf2I$_AT(?ywHQgPDwc;&%p7Cmb3-s%EEuQ*0v=+jecvF_R zI7}|v5!X%oCQcnV739I~%b!ec?j_CbYMU>;=(-PzO=xpBb3UkY9A};w^mtYi=FSlg zdMP|7H;Zs+q17)M&jTJAX!a-V4cFf5#YJ>NYjLTj=WD}%-~FNHb!&pE(W~qHV6`*V zx!h-55s8Zai=HBii$T>%@coUq6jNaz%zV5JC@|7QQW2@HO>Ml$t>z@PbolB9QK1{| zL4$9R11+fryG*pGpCJ3`u%kj_hz|`zv|S6Gal=i#=1=q$b8LLY$a)pUXWIRT3HorJ zu(VZL8Fb~>kB@*fcv$M;nIOb{b=Z8!u4%1dO}3OunaVZ**+5}NNM|XJumZLsz(N;< zRXQZ~eX)c(wc*`|M9W=)cM3fYUV`MBA~|1oiA0Ix&X}^iYvNN)2AKzYQJ8HZ2=q|`QoZq04ul9nGhIi1C0yT+&o<<`(2Yw`+52-O?OeO-{CDbY!OM%&f?R; z^>m=!sCR&Iv3m_W%sgS>1ORPUACHj{M0<1W zA&=cpm7o(6v__Y^KyxaMdCB<1<`DIeR_5OB6ee>FBcJ=|x3V8jqEDFlfVd%A^pO*~ zX*M`Ovd5H9p?ggneaJ@PY zT^_3FD{U#rMgHo;{6)X|?;3^w-8KTbz*TFDJ#FI7ZkL{j(pJp&;7gXj`%Yp{5jFDX zx4PKne=zsstSp80P_27;`Oa?TDZHa}cSI^Hoyw`cob~dRkl2bTRfArK7vKj3^qdh_ zndlvO^ykSB^p^rOhanu#jybC1BbfRA8AF@?6{~8}CN#L-P(NgGeb(%<+_tiSIvjM& z$Jg&h!5R~W>7+iI676N+JcCw?-;>@lZL>1Y;U%be;D~N8C!ew1~)6YBFeR z8^|x7kz@aR^jpIJF7x)$#zbJk~2dCHJ>C%$sjr7-B6p+zMb{Jdb z*51c&rF!tB%LBlA_)9E`cnZfDe)RQsA=Ypn8|+w&JN`4O;}73d&d-34k1~*5%b2N3 zH|3OusWY&IsiRgyii`OHR?^;M!EDYaJe|S(aQk0VR)^9z7BjaLme-d%9WLwGQd=}A z!#@%E#Pk5qzn*IB$PTv}Fb*~NDhK88LE=Aykol{qDA6topy7Nud@x0UR72q))&Uqw zrAB59x4r^k#B%c7_K+E8t#)j(uGahTsP*t#J96E=v|_AI0MJP2`96l-zR4yHq!7`$ zvwA5@4YM=DYx9%;jsCG-jpYW#_H>En^C)I21*WhMaE=5TLGoEWke`_IJ+hZ7#5nxd zx(w;RPbr@D?h1Y-08d+n;B}r%h6bh=+T}>j;`LsEiZjXUiO32TE2&9xH+uAE2+0^0hPy)hR7|inIO3E;DuL?Z(fl093DUs(avX z_haGJa!jOELwo2|0&c_t!9#^D)?)E)57`70hf;BgnYAfHd0fJ@u6>BEh~TK)SI{2d z51WnBs+|CW_$nZX14ek*&eqc~6hFYl*6_k8u)HJv=meYaz6@ZrO*_P--XCxoyfT!z zvd934uqQxY8chHou(KfBVV-K_O4dP#=@$mccPr}uY#u_etZLhEG>>Pv`F0iPytcB7XsydE5Tbqrv(gSL3`Hq@ z17d1XSMGG&37gmY0-=DLpY4q|PM8Qz06Ge5wPd=G@4BO7&_ZWXwtDI2oBwPPR~wVi zm043JYc*r&_307eEVHSLhFt7?HeXN&;~TLf?H>E&;;!MEQ^Cf!;XQ9UC6{(6#mX|l znF`?z(#!oT;aHMGe#>Z2uFivDy_P)N+xooQYqpOK^4t?h-hQ$#h7MI zl%QfVFrhkf4RG>GMLijWXFA-mU;tc(B}3F%J(1k5t{v;@jkt!^M{*FdD*kAMZv2!~ z`ix^}8tn)p(=TWmirioRb0P0EwNyo}bkhd30qKmi0W|%ks_p1@iGN?h_G5G?6x-P6 zM6;J?=eIg!L9kHK`KIn0s-UG=jT0Rr+WwZ&FzDv-BNgVUmfMXPyqZ{iNKQ4RmLH?} zw>O%hiFmH{`tgWu%;ZsnDqg-1U4KW0=?n^dgE|@uOo=c|`Nw2IRRT8%iB$kzG@8Xy zQG#7J?9jhSdH5yLjgqi{*FKq{*=mC7jV=)LV-~2+&>}R;{+hp&l`g#`b<+p>x5eu7 z1Zfjr0m~{~N0+&Je}A8ujo|j~WC-?|C z++)@J2J$Lam^o2euGsWOok$ff^%Oxb2T|^FhFQkI%UzJ~U(so=H(#*3{VVM*afCYo z5Bp|r6_SUjmUS5Pu^ub0P#Va&`WM)X8G3L1WUQK0qQkJAzMU!%(ZP9hFGlR{GXkev zDl*Zmv}_Xk9v{xik=H`MQkQF>P2H}4Yj0izz?(Wd35VC6e(!VQP9WUUDHhA7M#&dY z1>Y9#Hd|@pzbACOIjWP$WMwCCk*<)a93)395qUvuWALjZ!@Nu8{=R>M(vGzY7X6~)6!D{tl6W}|J)y=bnth;~7I~b> zK=60C7mGvGwEcW7B!q`*%x1Ew_ks|{6#a0c*sH~pRft$7wKw!Q!z$|5JKQ9xh$aTI z6oowyW~v4w8EGOmA-qGIr4|87?#x4*PnvYrSlbMX5JCEkON<9IuEYPX`vDr0{sICQ zlXr%Uq)+@kBT)5hN&J`Q-qrVV-5mUT4gZ02{*$7aSRqfgBR3=d35Fnt0TN_=r~;H9 zOz*>2*6L-3^Y66}L(g+vMgx#DUuM<|*LM>fbpAMY#9v7VY>~ToW?UacU6*=}%kLO+w^NlaJ;|2aVS{`^m1T zg3|Dws7g5Sm;J}tkF@B`RR>LguCu}CHk^%vt|->*K>bI{5i6y53oi7S{UGhfTy ztUcGOcGAuAA|5jVAJY3@0m0}Ci3k_K+@=OZ?%swsC2EQ5VIF@S(ikOT`({K^-U3p9zR`R~ zdFQ_SW&+cBC>&~f;ebUd{QHZKai^TX3C_(QK)EHa^EHNF1})r1R>C$P1_-5ZbMJeg zeH*vSPkk<-*9(tg?v4{pMSMJ|SK+*^_%&xO4-m9(m%|iX#N!az+1b4@)k`jfr&oSu z33RJV0z1C%M6UJ3Y;wX^k(%VCq}p*{s4WY>!rg&xM*Mxj zBB81=ZY5?$zFBev+qT4$g7EG<3cZ^$hpkd1NT}pJzuPT@cInyjft(P73{7_*pPe`1 zXbx{FzOT#Z`P$-XBE5WPwwl99Ld^rvk-J@;!&;jXaF_B94e0jSGQpI%20NdQ-ar6< zf8XQBQoM@H3iZ>2s)888y~2DX!?ioKT-&7Jp1`^PH}@2LxiL0tYUbAFE4Kzb=yjwa zV5zpQm0s5{^&7M0|dni@T{)p&k7O$VIHBQT~!WNNen||km z0#m}2OWgKi?)U_6m#JmVWGvmH4^6e#FJ8I#cbgvvXW82-h*c*;&chKh5YfzhHiC?NtQ4s^-{T{`7;t=0T${yN`%vkhK_8DWIDW6Ma9!$ZT-8}uK#WKk z=bbTXu%b5(QUenK2!LjJk^rIjLGnBi(JD<2=+1g@h?%NfX%-5FaGX>5xgyl^Ju_^2 zjj*@Ws@qmRHi>J{s|_6TWA|1&RbzY0_n%~MejoZOODy8C8J(+1uC8u;m&(yb@?%GF zZ9$|1(tPuG2hpg=J~Mog`|=J>-g{)MeY?Y=-%ZgBAg+*L%Pcjo$3;+5LdR{lTp9?ZEC7 zO!c+Eucu$_tUhx>l5T#5`&TXzB((5-ZSR@AlYUSHrhF}=lK-43FtV%AB@)rgE3b6^ zPT}m`{N?%l@_b*b-!j8s%4myq+sRLcqmm+=#9{qVXU{v7Vp_M$9!qe2ed+&h$umL1 zdq+GQe*PRl7XWlVsxvtowzFxO4+*RJpOH%#OBgC=lt z7qD#VI_%h%JKb!YFYxZzvO4VgrC~#LD;G3w^@;vjIg=bV$bZ`_le}muQ21wy5G zGh=Cdo>O(CS)HzLSi0Tx>)=>Jf}SvO*!$v17yX1;OiXk}5I(x?-=8I`losPc>TMw2f`4 z=586Uk+}BT>QEm~dLLO>Pp)gMv7=UW_(9MuknH8qW%RuI_f`MwPwK)~`xB7;Su>`H z_p{ibG+=P7+15HS18F;(yY`Zv@R)>ZR#e)G4s-PY097FAtV&>sLCQy6geW%cWOlS% zTI>~0y9Kb6CV=^}RKW}vr2^AIPdE0Qts!b!r&NrD~1UObt4u{JOQte5b~!gI4-z@ zgeI~IPvRd0&jlX#U={t&f8PA_a^b$$@x+`2#VfAhUli|UvA({(%w~4K*!w&&5&1#s z@TWjCM@fV922lYkWXvez4{Qqtq-b&*Jf<+pgIuN9?~y@g8vHvbb6!t#rz~O+K_kSs zhC)?8xj7K1vEv?=a1SUR@0rW4WeMDS_O5P=L0*ORo+>m0X_-c0-KrOIusHtvK|v9B zkf(-W2r7}`pE1h$D+n%0&7<;v@o!mt`;M|j{wSYjz(jv;m)2Q%9@Tr!{}3Er!k>$h zJPf=NR5&2W#Bl(qGBmQnobz~)Z)IX)Ma=aIsbF$JEO!@6naBh;zJB}C>bv8G=^uw^ zUnp zmkAd!H%?@OMZBLGiR%8ZIf;;8QY~T1^8Q0}@(S$Lt*w33dn-zNjvFD)UjrYS(rj+j zQ`4&wocCjG3kdTeYmw%ch6jsn-gfc{A_@lP1?j9Kk>D|ll8+F))(bD`o?dRMZMYlW%?hpb0?dj2|~#{9r=^ z6<#iC1@qpK&gb6KoOYMK8^!5euW;B{f(ta~6CRAFQNi|8NPevNC^=PYr;8GSB|sXB znt`tBOP0vog+4;JQsn4%!<=cs(lLkZF7K1L$9%5cPWwd0!xloYaM@NQ8mW>2u7SOx zkuKE7M_&zXXDDYNGg0*|1!5ualR*(;@cST-ImbgtI%4C`#W~<=w|4KK&3bl&BX*0V z%5P9HpgZpQurl&}kd9^qm65q@oS0Lt7z9t2vi5@#s554O(b(0nz%O@{{PmTM>5T1l zM%rQ=fy=1mdYlLe&O&3vGPdnv(KN2+&^AUBep`7KuNTI&X^%1`n!nKpFrM;nYDQEr zpJyXz&%kD|W(qEw7cY#2{zU)Ehg@1V52Lq$FdrU8@uRa|oq9vxRmH30(eV67+uYVt z_VoP^AtfQs&fO|C-p4YJFlpcCNix*E9f{fQOq0B=1U04L=lRLP*O=%VRLh-{2x|+M z{58$%rwG3Bq^rHByz~{gUpgzS1;ilu3(z^e`u4Af@aMw@9eROPqQT9xL6#S}V6xz2 zH)w?Xrxj_r#_ak$Oz@)b;!I!TgZgpV`$ca$KM9FQn`-{jXT5)ICHIv8cPx6I*~rL7 zA@HorjMIo z!Kdreo>ihw(-3Z$F;Plv|mhgB?c=jPF>|4IVbeD5^u1TtzMs()J$H ziBf>OC;X-XU1a&u%$)Ap9ffDdASJolZvAqvm^PsozbPpx6Sf|qs*%f@)Ud+Rtn5#e zI;(xd^Zi+B6A=a~Etdt;UshVAnddwoKC*afnpHbtoPh{3*ZwwNWhI*Q;AEEd+3{an zI8ZqLhrJ`h!iODXkEcd#_iS!%kI17*TJGbWo;(VXl43^m8@p22*l!3;FaVYvX5t>_ zDA%t#S?voe1igGP^y=Xy>9Vlk<)O=05eU?vdNDrjBOS#QIj*RPAXGUar)N%G6SYh=t0~b4mdF4DNi; zJa#F3BiQXi#PkuLrLDm9o-STP1o5Ys)c3TU3nh8*p5bEp`Rt$cqp$u7BeKW{YzxS6 zL|4ec;UIWe&LBwxtAZ|;j$j1J<413HJI}_kcAliABX|ZO8z$kPNMVJX>W;93ug2of z%Tw_JjO#wA@UMOd{siOxvr^aZJM;g~p8*5{WXK7bqM8HqXKBt{?ZFoukSpym*NXzJx^U-**b=OW&r z$J*8ByodA?!F2v#&Uw^U0EZoAqA+jbI+C4%^ zxNf~*=nSZ+`l8xM?%OgZ**4W@CSONhc;*lIPRb}W0HHQnD7(T@!D(FOW&~OfJSx(& zMcTKfqE+$7^Sx(s#nEY|wUacY&FpH>eff2D2(c9KXP zOJVUA@ntc;$L8kN#OGZZi{SausPk&`EZCeOT&WY!jjIzK-K#T=vV?{?`4Rp3t!jGOin}@Wxs0nbMxIt z7vAZruEy(^^|ec|`@GsjN-<2EK&$0v5On`{?C$>B@cI298T{sV8qO`Db?5FX%91B5 zc@vU-A@&5Jb%zaEOJPSF>WuCB%d=6Eq3dTf`T*1-0Eq3chmKP~f_NHKo}p!}diT?^ zD5(v`Zi2J=O?gbE)^#e*DROk7gAX#=vrTc&Ht8AInTAa|v6%xnMq8qSHbj0)y<2@o zLX4aB9==-ZW1i7LD6`BlwC*J+AJ9)*)SjmU_Ny_MUX>9YKg=IqG~h_J+JBdUHF?Qf0f-?D?eMZM6mq^ ziwCCvias}|e88sffQ1Hg!u!yHN!NygLugyOuN!$)YPgy@O>m+jHCe^$$=%)IMRIyYCL!p&cLjymoj$;l?rzGH{xH(~)?;`IP7TVZ zH)!~MD_&ZW9df_se}cPt!f%AHmTFL7zDJ>xtNqj`3i~d~B%y`<;&6Cy$jqgkPnha0O3n%7r_YF5j&qT&OuWwz{!dY~N@`X`+B4Wxa zuK5lc)M=J|()E7ez-A2*GT3UQ!Ttw&^jitqx5vh1|0CNxeni%jxH@vCIFO(j;`F6+ zVbRTAKVX)h71JI|I3eJLKyPYI9cAbMgE~_uee6@E&|NN$GL$xbBA^sJA&@ZcGN;>6jTyCW;nuLr_c}ijK2ZvxY$~3U&jX*CD!FAa_XOgj=mE8d zd0C>+@!3ju1I{Kckn<#!X!6JmEAf6`)&-*_&Zebs7MAlA%S139qGrc0r)bH-O6X4y zF{2+L#Hv@&Wv53Y$@Rhn?`hr8F|OK3QYjIRqGo)@^irRkJuXM?T5 z-M`JybtLxz=+QgBAR;txiwX%`;Oe@d_?`PK^5RIotg5!p=9NMF5hThm+3Qo8{gCKB_%CmKmvYW@49Fm=m*r&dpdQEu9m z<%lyTJWkZcwoqcvZ28*UVv&2MB-FeaE2s%}!NwrxP=xxYoIXM(3MqMd4N)@K&KZ~Z zAjmKdqCvrSg~hxV!UI$;aAbzPbiEYjDR{MzM*^Yc&xjrFln80u?ODX2>yEbZ39b6@ z2g>&t?-p+RZfgB8uV47oi7!KH!0R&y-#lrone`@t`n#q2Nlm<6ImaA<{t|8HQT0aF zYGHDcr1S!go`V`(%|#rv6}uuio%nCFy!wqlU=lNlo zox`?8wYc)D3c@DhQkDyvaHPcTqY-`hD=@Un>YBoM$`GBiCz0o4r9Y_Gr(&4-F1Me# zjgb3kBm1vwByb^Pl_w3TcEW`*Sxli%h+kTNoN)mE8gAHJv2C`LyFB@9m(mYAk-cja zCqNtN3NnL0)%y@=7x7iIJRLFrU(;Y;evf^&JLfoG zlnA8!>zjqmT5j^Vwj@#WKM8@0vR6;M_*%y&ZVXx)h4D`{q0t!XoRcUlg=Y33)6vD-jjo94|xjBtsPHQtb4a_nFw^+lmu}aTYNME@^V1s^Ub-}rPnHMl>%WPiTo$d$ zL5Jw-M03N+)tbY3bx9DxM}a2SvrvPIP`uzgk`6nIjpw<*wl4stsv(#O!%w4}zlgtNrgS<@xP5?znT(s6o-LDlDfMjNhebXQ)AuvLzkrL9G199 z_i40Yx{c^{XETAwB--+!cs(5s4U+}(yDDj{n@hs$jPrD3Z&SKX92b4^o(ZOP_cdHz z5af{#cDG^^%z8q{@96!!H2++f$)egAm0p-}E_Nppj30nrwY5)sq${HdtEbW^{kk?C zg>WUDMszYH+zvw@4utXjqTGNpWn#Pun$gXZJ0qY;FuTJnu^GQZt*;#DLCi-m- zZH?PFJx{07GK5clk~hzOiqy~N6&HvKP^Hb&b7hyeT*iNBLZ(j8OHj9dHJ63Vm2;7} z{JEfYSKlYPZNO=uEXg%MF`)ng_M3nvm1)M=p?1q9-WU`@_N_&fXggS%j7g0t~5pkz;-A z-roeKwn@hiHJbvTo8HklzwCn7L!ypEZ3e&lfzF83&cuTT*x1RU;7;bIHY%Jke8vyi zEyL^W_Oya*1E1ifPm#1uN+7rsc{!_Qy5g@xTzH^{kbCrW@c{ofx$ofkIln@#0(DHD zu`8}UcdYYaPN~{IFONv`mzJhVZ%MKZga(YAwt6 z3F>QAQ|#N6&9;!7ch%{*Bi^wKD}p3wGG-7B{`B}A9!q>}EkIV)%MfK!CS<`4@ycTR zLKhyToTNS%R@UDPil_)4PV1$bJ!g@NRWe+wmsy4tQ=pV-BlSvJbQAP|&7vmc(`(fjUd1U$5uQcw55KXt zLU*3Hy>p18$B%m)cZt$cxp*~356s48eZDrxdeNppqB;y|$5$ao>BE+exbKE3s9jOx z$xp3~PCKw^6+}Mrb6T$sxx1mC0Ch&&?q-o)IIkJYm!7_qqri$KPf~TM&k8$fH`JHS z+Sub&ZW3}~3f3jP7}|7HrIwK}S?3O!vRF1)(%8h7D=VU<;=zPRSUD+dw{n&F_T>`% zOqA;MfPn!uW!3_B(>{~6&gR!Sh8MOdUtdy$C8NbEH|(wiJJ%O@h?uqI9ZWxn`Znv| z#-q6<)kjt`U|DAF+LA>1Op9aJl{x4s%ng{Th=XYL^O}pUCimvE z+r(m1Dr2XTV`HG@VE~Gx3jn3r$US=k`%ErLbr59ri}WNBUVDbYN{K~6y;y+Q`SVn> z?d+l1kD=6Q5OGxI;+f_&lIz?VDk9R-%losOQ<6Hd`m`*1p6#oO5-6`JaR&wTWVTUz zjeXRd3S`ZoGjIx0KwLSGCSw3#VetDRf!F{=8g>zw&IhpI#5Vb=d$gS@_PDetwkd;1({vBt>ku$SQMTQbi7|A# zva)15DS^X`T12sojgMlt`Ku$|r3|R*^(mNDCf~8qs8F$(!wpj|y{nJE9w8S`r||@4 zPd6OaP=sF5iaj$xdFhZkB%Mu*Q`y?7Q}~WNzG{H#Kv0z2ya$b}_l&krY(b2XS4hQ=9WW00*f?nGFx-RRSd>=Do z4~<=kW{wNnQSsV{Cymyzw#S5(Ed{p)e93)9{f)z&c3ava>99+-@3)Xr7nzE!;lu zILe_W5rVP1mLB>|_TmTt=BQLB!%i4H4aiaZe7>U-v;ILxQgN7k7CnsKPx2_0@6jWp z*h|q~+w6yrpC3d=?)9h)eLCi`7Ty4dXCn20?br#ovakq|`Ad=YtZmYh1j?|optr*s zsU{XX35#x4I$Yiblprh5;scfiMFZ?Hl-WRpBq^ur4iS2AjKCjq)8!MV6M!P!FJn!r zfAig=+*+VfT8UisLsOv1P|D2>2Tzn9Ip*CKE$Y6+}EQ- zcy@|id^pO)??Ky(;#yaFa^`LzKCYVCXFX-BG@ETEcCn2>e#v8-`jL?PtZ>4Z{^i-G zYq-GTdf1GEp@!A59%phxW851(Y`3-}G@vSvON34w8WmBE^o80>Ygq;ZKN8z|E!7S7 zU8)DxUop@?{eW5&5^cJ8zJNI=UNr742MQ&4r!`oIAH$sj%Eseur_I!?_X#*Ah3^n| z+ipC?CV05#5@fFC*JPt51!cKNV;w5+r0{p_b&js*R#9987NMDu26g4}vyMEakf8YM zD>{d2b+3m2^ark0J$zA6od=kD={XW6Zip&wsk%I<)a4XfUd#d+2WS}l4vu_FLQT6~ z71WOYYWnCMoId0^;8H2s`XhiTd8 zMT4O`o93kjwdJ*a!sLq_oufsV#%7ImanJaf2}tkh z;S1v=VphYj>?W&g&$$82i&fT6v@0NOhLT0%0(YIGig)Sw*Y>OqvW~l6f_1i&qt3Bd^ujx%191lsXa*3rP3D{x-VgzYogy{ z4mR<-e7JdgXGJe_iT4o2tW#VARs$%5czgWsEyMbvO(DF+wI)f@y;P3JGdvx!m(#e! z9g+w%_mL9NwH)6-|NUS#7Z_h&X!=5BBk#K^72&-U?e=3Ikm_{B?I{#7u2G2f7oZc8P>ihf@^PGj50)rve3l z!inJXjuhI3TnOdqH+nU0_kdOa+lv*~zFt>cM1-sW9o z!jX`pV!xM`&;^~Os8xRywS&w@`l}y zcL6f?Y#XY{J}m##skuHjFkiRIdV-+Rx4FWU6%WfgLBY*?#h$Kk)O{okM`evH`zATh zc5)#&*na!zKIqvjj}gN;ScjO8%Z?_)1z0m|&gD7wffxnY zdMj(GG`sJ#=c982q4hSYy-CFEWbBd5u~-A%&V0S)5pA0%SjNlZq;oA1Vh8Z7Ui8V;$X{=Tt-)Ro!yVX=Dze%{a5 zz*YF*%S?f5GFZX)sD&Pxc8V)Ue`XRhw)|Mco1Z2YjJwjkMkWTR;&p}%T zQMGki5f|J_-tQtSF1Lu&$brv%aOtiPR6OvLUowMEv!fi)0;GN#P zQG9YaN^V3AXpjS1 z+^yE3+vq`ruk7u*rZOM_>??Pp()5fFzuq)b_}f_tL=#VVe_#nKcN>1?{krgcWv^o14|Fq= zV-7(@n0&)SZz_VLi!}J136&%eoy`Pq0R@KyDvC{CqSk@P2L+RDWg zi1|wg-1VV&i67)|W`z5@@hDJjV#Yw%zLze_(({{6;S1TbeO8g?)m#qk#Ls!#kDiHS z={MXbVh^*6ULEqAUom^H<)+gcA#ccJheEM+ij#hhX|_kt)3iY!(8Rr{q)CDBZ+t>n z1_OXoi|Gw_yuJfzoFx=upPimcKkE?2J{MB$97{g!oruosX+1MD#_YG zp6%tLojy;2?b&BHs%XxosU20dgtMiMoBsj(!c9dW^dh8A=!|~-Q)NCSo#5TikfO>N zQ2rB|tK8>*2 zx<5rh6)ZP?eG9zPs!@8{ZbGtq@=;|b*jdM`Puqw^_s1nR4QgiXkUHff$&IQK{M&p5 zCHd+}F+%;O5>b`Y))S>I-l5>f<~!j#tb6%&KJX#ZKM!CMsbnA7D)=3x=f#urYI~$o z%LX<*TsM?Rh_^|X0R)A5QHbqYWli>{m<+8_75TKF3BMhh$(7Twm)>4x#-a%2mN8}I zl0ZBqEz#ox*Lhgb<)`bC_U)mI{IYD7*)sdlrM9BZ%D!5O$p^lYCZfrnC+_b+T0YQR zcI8UmQ}Q-cD0k3UnQE45JeH&+=fL6R-cP?Xa>MP`D=Y&_Vm_k;#pkyhwrr(OBd2=d zCGSdBbkh$|>bKbumLIiJC@i1+ywm~8f|6SMb088QcD;(2aq^sRno^nW`V{3}9FOv& z8fmqY(@hy!g`nu`)wBS#o6MHS`j=3hVdwSW!kcAIiu&LDr0Q7^zA8y-%Qt>;o|@4e zRUOsp@w25=Y8!FRH8G8+_x>W#--~|smGJRHf&vw~nYG=0`m*eLBkzg?N;SFa15W~;E&!oAl)szJYTkQ+?ZTYzlv7~<$HSV+eHvSu8sQe3Bf&##k}RUY9tpsW=cHW({Y^KpY89c z-_rVZm@cpueCw zwqSj`@Gc)bxh5o08SolI8E*}7Oc$QNu*!R6Rhm;9+pDSn`8w5U>lMqcO9|Moq4s9r zApkVUJbF7Z+&>k|XCPX0)Tla0!>x|=u%xAcjH)725TnW#@~v_UFIW~!Bz#y86_ z)~+}UxE7W!li6QPxMd1?#si#QPNCP*Q_Y)|2usx+M;z#7NnFS4$CF3;m!#ag_4Y1; ziv;5%0?8sPA5$~c-cRo^@a+~$1A-gI zu2`#=_eDQ&iI)7IHnXgO5Q+^_X4Q_x8!bZ_AxvVD*_d^U^jS( z8_mZT;FfsXO-0-2#*Ap`1UrD7wX4&jZQeB=?yJ%l(6rP#NOv8=wO@fwyuk@rf`?ey z*Zys;u{mn`0d?Xd&$N2Z+UUlHv~Y^<4dU~usOCsFHytZ#vMBqBpAUOa+5^>y(dtiU zKgyAhr}e6dymOH{tc7IwD+1w<)%buzNCpraUREod|6suP@%7O#Gz*EMpZ$nA=Rm~d zHchzwop-dHQgtfk-G%I&bsE6YZz+dk=&0mb1yYBUes{-R`4DhP_0fTBvq-wKfipF3 zj-ofC@DSeC+a<;vw@5H7-X468Q3ioZR?=19Nb5T-oX&q}09N2jIYa-Q3CnI3A%lZ1O#p02!LH2^!NWAjy=>omG+QWrOImUKLYqyWut%l+e$1*BPs?R>>Eu2sY2 z^<=8fH*23~c8A~+Gi#iJ? z(bQ8a7&=w*zn=DDGr{;8UT;XmRzz^nUtYqqDe*S?mv+?SQfBmaD0NcJY@X1!*a~Fy zs;RcI7>k{+oqPXPL9K0t(VX$Dz4~n;Z*&Wtaibz}z?E*k{e8uQii+CWQ`}B?#+Y^Q z$uZ}u05<~)iQ;+s!*>XKP15HTuMD~a-Pz$txUJwu<`<4M&4*_+xA58 zq4B%K(C5=Pm5%cOxQ{>-so-o1iN6tIJeo%S^QU2#j&MEA62NF;9+Z$;L4)25WAZ*1 zScX=*Iyra@3fO*EWum+mj{~~rw+CcYOS&fwOGlEz-|s3^5IPRVz77RZ zEr5L@nL91;)9psdhOiM7yIKBJq(d=ydP4B1e+PV?mPv68+&(vO>5=TK%9?2M#L57P z2EMf7QTc08kF4Xhc#SX8u64<@&r>8nkFKtwOMXo@OFZhnC=ew=?oGN@eBJq;8QL^y$dN#pP-XSfPakjlG+<XPydiklcbFL)2I>x>3nkI)knH`~$p4tqscF?CNkGNoET)bAWW z)wKCA-KK)sx^Vs_;tWVY55 zFlOnV;mF^{P^lbTUujP5sJ;nAtYj^HWIXcD(3i%BdR9$z0ex`oZs+`+9l}kV?Zxl* zUqK!rHofkc`9k=fmXHn8W)R1hykI>F`{xtfm&rtjJ~;%vG;<^!{4N^1-+e< z19hJWIb2m&d%IU2L)XMAdk9H6(k@Pnv+1l9R!K6=13qyRn^Sfg!N+-|#k62g#Gygn zcLsQD(6BO)bf2HPUi(phzec}C$!gW?<;0{0TZrkeUm&kg4L8i0F5pk+0W#yip@2`Y zab_v{s_F(@>uIMWlC;%w<$5p8kE&tm|0L97EBmwN9MHr?-X^Yv$bI@aIL;w)qS01%56a*H8^h7nXBl^o2D+0)Udh<>U&g3rwvjGI^z^C+;9sMP}x!hnE4H%x7 zh?zg_7Z767r1y|@?VXdsyFAN)+v$0e`HDvf>-sBFLM&xd+rS%dtC*d!)q9=M8&9WA z6n8#7b?DKl(HSxTc)Jg?Prt&N zYlFL%jT8$75|c;>&Md*S-Hwik?(N%IyH0<`>m6DHXZF?r`MNWl4WUNQ$_On0g_dcW ziyBro+1-RSoXL5h0Xsg?kToZW`Pw&cEm8G@Tm;jInzdWFt?M@YcV>>?6cPuDM1&bP z=*e{{Xjo123J@#-t&uMMBB1WGdEyM6=hPj7@?!&3W%W&*@MG@bhm1I@CrJPe*s~tX z?a*?B;WYhZQe>R&Ai7B&p8(S)?D&FR#ML}Ab zuu|z}<8-P!z6p2O^Azl}9?jSyM*mF1=SJ%RBzoj8X!!z9IXS&D5*ze4W(1-l$OW6T zxRC4IS(Ik-XT1SyY7n%_Aj*l(^a!}l*ror85Pb%sr;{A^7XRG!QXNciz@q>A7lYkR z9W`HX$9YZf5Zd@g-Ex0pwevs#Oep;Kr$=uASbC^uDr=En7gbWv_DIr@Fp_ zDi^xgo~CfY$Z9W$VMzQVO2TZ`D{W=jDh{a!NL7hX4|z>)b5vihDyln=YgF6 z<|S-}0L2d)%;9rMz}D zN%1m;GQ+)LaH$Qpfs)tZUnmLCy=o~RO6ehz0;U!y{c3A#gMt)w$sT^ri7+GNl3WIt zkj;Wss@MFt7vSrnd+ww#9cj}&9(B-UwVBK8k@A2&VeGwHYq8Zo>KMu>Udfs{I9Okh zEd^Nb2WWbV=-E8#Z2{A2KJ|AFc;H%jmO_g6O?O#cuGW+84+&KJ*groYffD@cNareU z1ik=&>vkm8-%`xj>l}E5f3>_Afc;wXl$fK{sW~8EmLClFqhY%VlwsPB!%2oBC0;G4 z>R!Uxz|rb~CZHTZfQv|hv&-SL_ap+iQ`}m1_W7t?yCh5M>QZ=O0>gW-s*ylleEWVw zzg;3)y<-z%NU6vJgt(>q*QDxN%M|i?fY3Vykwdk3 z4G%&&fRxy!qTHmsJV*Ks`8($NLSm*gn(ByNS5sl>nbod}0FnJ$rB~hlESEG6q3;jn ze&V^`sPjvH;;V*xCVy*R!bI1qw(PJ6x)6O-{L*8Fnb~pFR5B1=&R&ku_8RAFEA_&_ z=(oeLR;zv^P1P?*isR9eG=ny@3B4hpIG~Jf~gKdB{RE}+RD`(p*5zrk1l|6)^qoA;3W-26r+xDu*ND&G;p&%?7b`GGtN_w)agSeD@qencnTa)29Eqf)U}{8OO9mI(XfgA<3FZv@&?i z$uX9nrP1>RZ4~=JGcZtXONq8DfSVqVI;(iNt5My74;KND_I=->lQye9zfZTK|7LE% z54SoRc4Sw&`0k=SLwj#n6rL=Jbz_NZ@3UZef%xTJH2rR@DB-fbWx2Z~0D_(EUBD7d zqeJlaWw3w9JpQwbgO%+~6a^#{o6G2g)s(AAc;LR^sL?O`XHQ$@0UI8$^Xe&;JJO#I z*r-xJdBR)UzQ)$jwEHuWN^wy}-(%vmWpRA7yw1~c;iSK&x>_;d+XP#1pU?DzfIY(Y zjS)bw0$t!PpDtF4nL@6?GwQ@y>|m~ogBrHm=NHcrCa&h(jiqc~ zQ{PDRXBeBmo~upWS3SL@kCgaRb=bLvuy6cmiQK4))h4 z_yQ=HkEex3lJ(3kvGF8M1?@h3Qs5iYR{`UWz8YP8R~dFoma{?|$-5isP217F0(Ua_y?R8Fr^U%|mr5`XwJj zHu`N234p z8rI0*RL2}TD_(vM7PdOmhnH2QrryzO`hACmD7T#V z5GDBV9ujLnMSgIr0z%pH@LgE}`OMRS3u*|yzo#`2|EzabwIWey_q*x{U1+HjRt!F! z(4V+_OFbtyPd?r8`l+LeCazz!8+e=PJC z5)#Ec`?8{=J}8STQWlkUKW%pn+0LQ2({&@q0fbZp*WgHRBJ~l8Lq3H-(a2JzHhR_8xmp!+rx) z_fOWLKv#p&Gv*G?1iJ_q2$ff$WxL@LqGRPKs9{8=v;ia}dDx0}2Z87jH%bt)U~;vl znZ6c}TU^HaeYF)KH)p{CIvSo+(_1#`s0u1|z}L=FpmO5NH*uq{iF->QknZ1E8xJ+! zr(z0jak=|GJIMzY&D5wB7bZMnRZZkA%dfl1EPO#PNUoU_?zzvwFXcT$0tPc!d7vs| zy0tLzi%wWbs}5?A$a~Ged?b6|sA%@8;~TGP@ZgUYqlU0(;L!d%Uizri_2w#~V-tjN zuW85%uehpD*(9V@zOarpdhxqF9FKK=j^TZeMqQ~5l{%%c;uL@ltL@-E|GD`Z_*pz! z0!-XNH1>Z9(*EP+>|_!}nyHELrRuSL-VK2A@%x9SR(LcPQ@AP9K5fmqVr@jYlK?{r z!;uo=e+P;J=!+Jq$FrfUW-dOjFP+|n`u~Vs;)0LT|8w8O_kQ@*Se5ry+ohih!tJ5d zl^^a-U)z*=tC&0`{5gh1g~dxn+GpW3b6p;*o#> zz_XM8xrD9_7l&|DKJg*x^9<-X9Y%0=9r~4-Je~Ran#qC5xR3f3qlwzkZ8p3>T*A*7LzI6@~2XGZ_zkm zL_|q%KVhgvL7p3@=~z05FOQP+x?~H#ORjdi=~z8#FlK+3~+WbN0}~n>y0ghJ{qXuyubA8@vN3!oLIH|BYby z-*|_hbA4ox%gXT>3?%*cMF9mMf38L!9ER}czsvuIK5z==y}@(f1tZpR3p8WFf3N($qN^<8hYXlz zbo}qM9JnfiFNpYilV{1ypKRR+u03VL4?d;*=Tm%$AHxCQZ61MtVtDYU2+Z$A|L+ON qf2?hAW#pf{00EN-0ssI24q}Ce00004XF*Lt006O% z3;baP00009a7bBm000id000id0mpBsWB>sFvPnciRCr$Oy$66@M|C$ox0hFU-*)Y; zR=s!0mSi={wwh(xl7)N4*i;irfB+%%kc1QxdMBZoVhpC^-ivHCtM|6j_I>-x?dAVF zb61OLA@GHKeE;mx)!Vsq=gyotGxz+?nLBqzc=zUw&i!80^N-T&`9J#*h*&&M+RTVWQ5~Whr%hY76 zl>t4ax=w`&f~jZxAQG93-#8R>(-7i#u+(Q7qG4*KK|7nxX|mGQ+oOn5wkBUKl_P;6 ztmv9kwM0e6)uBpRVuE4le&C9-Y1fvcM-QP%As3YcVB z6;p~eMfSr;Gg3hqc|jNpQWOh85GaZQ0S3M+2tqECI(_m~Yilc*^gIt0MYiBUmL=2B z%H=Y|i)5N=*shbSsXKGFQrQ7Kh@LqlscZbZlE4lxoa;q>8pv_8lveOIv=393)?qHC50w+qPrN z&gC;h)skuGk!6W2R#OHl8wRovi%JM~BOzw49F;WY%MoJKK$IhmLoT8(GDK)d%_3wN3CK;3#K4ttg&7{i9^0yeRyJKj zqC#VyMgb>rtWbXz&|z>-gd996#$Dit8cQUpf-6wWL@=y|GI(-j779#?i8o(DMIs%| zAMgD(fj2=~fSphZ5F zBI?M~j7lhFNJ$g_VFfX+XtG$=!hkU`U|J}M0@6aNz6o);D)nbE%!G(lEpVa+8fuE# zNGz0MPmWNE;EAlN61ypn>4B)C{RHNTBFd5?h=`$G0#Vd_iC2d~l)gj(jcN*sLFN>O zfL!E@?7Fes z7ng|tSd?Qg6}aHglF=ENMA-|Pmm%K7GPo846QM}1x^h@jQBgVNq3r})85RNrf?f&+ zJc$lOA|D(mDC?m5B18&)kRcM|DyjyV;6SZG)P<2957^WxkX2y#q8`XH8b}NfZ^^u; zqYpwFo~njm-w&h!b@xzxr~-Oq@WjZfZz3ySu~1?dXOWvER0IZfnIn z{GvEq#U&&}yC;<$CIJuZa4?BRZb&@(`=I0oLhM_Kq2NhiN0QIu-Ee)MO zPY(|urN%E+c~&?OZ}VTI!MzUuMFJAQ`Fs!n8@L^JLCxbX5F!yqiJ$^w{X8&2Nrt!= z#ie;&kn>1xxP${$03ip|m)DCTK}op;Pv?Je3d%E9^NfM>2AtPLUF9AZ3zI z(oCm#0)sPH}!baMeB60M2c5Jp)^+d)3a2VqdcEmR=Ng;*eY9N-NZ;!=`6;SC4U zpi;@bs25`Jiy}a{1@TF4NdlCM1WD5;qD~UvNa_W`T{s0}Nf_~99)!w*5Jn6N9Z3WE zBw|F)$N}M`dnCCbj2MJ*6=`rU%Ei4&w@JEU(lNmENQOw35N<&ZN#@BZ(%>%qB8&rx zks;&*LY_&{i3D&XPJxJV$uLFT#jV!e~~ol%zopxCFvgv^xkb z1(uRJq7)2Zo0fsiw91P?gHT{x}dzc__3lSmxk2OK8l;uP`$=OZ$~ff$65 zEq;*0+UJY63HZaA|{Ck zAs!qiEsLxWpA?j21;Qm{m9!=ZoFw<+fRw-quA&zBMfyb4N#NHADM82<0USyGqrboT z3(-Ng2qXd@iNr735s^uMK>W<+c0q=tDC#O8UHC6SJ4^!@3-Eey8pFwE1ns^U54dHR zq>{|GAKr<^MpC#pLju{JvBPR&dM4AXwuiX`l03Gfqty{kbnbB&oZTqJq%usvoKY&- zIhcODHzeFAwF0|<97HDF0+%R%ehN3whINiuiDgr)1iu}YIJl0PAJdJBta^c$NCBiN z%u9MJ9vc{H3U-7SlK10K!=jxQSsYBNQrwbcmM*qHAy^vQ5<-{-8=*04dO*xkjKQ81>zAv zBn}Yr!GVHC2&bUrDsBX!AQ0|Kaz>s>4yYF{CDl(DNKz(}Ny5~cJTZQe8*Yava69+` zL9HVOrQ;G3AgkmqoQ~v=0G=A;1D6Nt56KXpu!kFw4`PrHB9Rrsl#>6Vpc352m=$P9CpoGs6b(}~hIdCK7jFd1akpTDN z7%?xBf^apFQo=T3kS5_|q==+MP{K*V72@%WOE13#lvHPgl6WK-A(V?W$uF)VA5?)J z{+O9uK8OJ!kkkmLkSbCpeFOaC#>6DTjktFoZqpXCJq_QX!S>Y-uDI&QFN-`Xwr1XSv3CR+M z6FzY-2&LneDDP{EcH-8~Fh&PcQWR(Px_@tlUNCFp*pO{V=S>TOTRfYJ! z=C$)-v=L~B`|b`+juml*So}xgPDY6p)^f}kO!9}nIruonWA_D%)1i*sH1h08q`rMg8 zL{MyUBsWH~q?w@;W(v9!^!o{*As)3)IyFz0%9*|&c-DEm1@X=c7&AClp@J^%Qc)I6 z0}J9292$v3HsCRqaTP++0cZu&EBAXiOP(mYnIGvwU8S#&X-JAIM2aR%oj$FzD6tdJ3bXx zQ|TWZuBmKXG zQ6m~+1wSBI(}c{_eh{;K1qU-$T9DfdjGA z>k8gdxD_Q*dVUK6AR3sJ=u(mZ;!Wh75W+Y^wkRQKoTOQQNt}!S8X*JNI3Wrq;^Vc(!R5`*N9i}|Wu1f*mpk+TqzE}jWIjT#pa)+#ZHg&L zshDNsP)F1KZfKWQ)K5k()aN+DQ!B&-@(A;{I{?9`8u$ZF_0&L@Y-U!ix%8G--G1vW z*G`{0reG+mSFU*Sxff+ao-}*vo8I@fMKdPUtI-t~FFm;DIjiKzC`5|jfa;laQ1N0o zf^eCK8ytm+#7P**q9n$6+#+x&h=l(vkkfMQ(glmQZo2fqp69$O(|~HS5%~e^$CP5q zp&kdUA=CVZJ73k_WFFpk7>bhxvB7jhQh+~F6t@(buf1~XmJOSCJhx4bq`GY0wHzso zb80s9xakaiXiD@-3%D*rZjeAMr9>Z0D%6R6MPaeZvV{#-ZC*NgLf_FnA{=oDnm^}; zVhFM9lq^M11ux1PX6$;?$BlpQ+upr?^}3Dgu39u_;hqIzi^CJ6+pfyr3l zZ*gL@g&#BBO!=gQ&@f_cbJOazYp&UR<)OoS`b!R4M~@_%32wITx;t*ae8Keo6MJCr zSq?)5#Yi+_33)1-vS{J_>(*~NwrfY^h3IgSVfb!I55|0! zLaQPF5Iiy1Ubrf|WGTXwKw>hd=sh`|LOApsfqN=Tj6;Dq;q?WF^yGSi9#Qi+z!Bhj zfL22_z!jL0(TC+A5|LpffmH>)8a4-)svIhEAPIg59t2-vfeJQAwNnv-6pCOE)fA{~ z>ei$=FFz2I9N?K_BM!QqY7qz$WRe`bUO3PMkPLc*0NDjGjwELo zUO0Hm(vf72coa>g2mJ8l$m1Q2CpKZgA;%bT(2l5K$lNFw33#+ocZbD33!(Z@EwmL> zBC2S!*n`6pL*!IlE?0`@iD}q|%mvQ>aEUm;34i0R@n49TVt5ZhE=Y;)gj1v>DdXNG zz*{*VGUr>+_9xmSQ^b{i!W%0yh58;=ahRH#;DLOV40ka3a zk$6CjMvvcmp!Y$j!+Mak1BD<(da9rmpd08prYo&Y^$Jitj)CiBdI7rxU^)E~%u^U0 znumF2M2T&c1QOzp5VOh_EPzbDAj#RHC*S-2kKB6GU60-WX#eS<@80*5RDISC z{ms{GdHB2EyZ_5ydFiF+I(v^_b@^qa^r1F4j_YJ=I!mj&&@S{@Ia(u6MU{Dq5jh^QQS8doZZDJkrbSt3%m)*$HD03`dbjg}R zt`1U+JpOnHfJw45>IyC6J0^t=={{s_s)%Q<>jr+1HFAmw8$qa6twOf$>djlvo;mZ{ zyIy#eJ)bD=P}Y|oSE*lya)wYQJ2ldd=9@@fjoMTOO>Q+FU&%2ZxGinlVjn#es6ktCmYvX~^;|vZpQ23xY^h zRT2Re0i#@&WyL}N0MAtqJ&EKaD!qdPdrzMH;ZJ{Z=4_EVj>t4v0R7j1}DWyjmWu2E*QXY}YV8Ky|oMTCX zy-pX&%ufnZVGi)(@MHj;f#4h^0_3kV*vDi~plo{BaU{eGfUI~6Qflx)qD#`m)L49Y zK!#+fI8q}dQXB~(0GXoQ(Y=xbIVQiqcJSH_3;Fy3c7~aRy$@07EF>Lq{-CLXbcqtc zv`cP>WFUYf2LvEzWS*1(mWTQ0ETvdv;@$`~BWXhp614(HQ8W=S7M4882Mt6PBkoE% z5``!~R1cCyz9-{dmO+?hVH2spJ>MuzYW3jQmNmF#&25|WBhg{1I zJT#QPXXoi72Zp-3gOa0X+NUAJ#@ zQ?Wu<&*zw~ohuC}`Sjt=Q+-aQuQc@3t{nrOJK)%%ruNunA!{bLL!$_qEEXI7fq#8g6*jjZqo%3VSFC?x z`}0U2$3CtW+FB3}L@6+|3XAwFUP8?(i{O&O^n>IxS_;oC`V-9#h=pCdUV3rYE}R*8 z1M13RHYrD06Lixovpr6$qgM7bk+LFF+5t0^A+Z zgQk;d!Z25VqRV6OOT0lb%OZ>n9HE3}5-f&8MEkljy*;HDsIZ!V)QSkfhqCBN5H%gJ zZmGLcuL8g1Ay9zVgjl2i2!D7o0Trh2zIvt7(i5cuALoAD82?ip^1X5Wv_X6qRx)cAzjw-+xtS}_wFVQ9B35bR5 z>BpiQN^U^l0omBd)n|drq5#k$qF>PS7t-Wp-(eB4hue9b-~}N}h%3`;V@gfTQ};~Z zC&ptTy0Kux{Y>f|GdB=mr1`PzhmwyxV;lr*}FKCr7}K;Zv#<2@^slj``ui1c3w~LVmz{=aYGC zJoh9eg?fX+z98i1rY zMPs2KQakeZ@n|xH!7UjI9Dk7;LhyS@#^_GK&=Js0pb91iW+YLc=!nkW()x6^mA-B8IU6ID#*ys1Xh2 zQJ3nk49TesvxD-Pp57s6-u#O)*?PdUZHFKIm#?57K=%VWhbmQG5IiJ7Q6w49KERs^ zv*yga<;H8@{I<6(xoEkmsX=J@fv1_~MJrbP<=fu6eC?XrmL^q$kpjpjHlgxFN=7_} zg6GH1Q0S)%O@?9EWpc7T&+)(-eY+Brt0g9-rp}pv!P41&P*nk?ic+bR>)YGcZN0X( zrG47escVzm&B*Q+nzR4w%dfh{Pqpc>QW%+fOkp33K+fBK^z`G6e&{H;kd zX7u*=AO}2na2cvzU^})C4HL7OvuB(RikkZRRfx~bTsuAyAF3A5@nfX3xS|?5AafE>qLDBJNpm@oZITs`6H!U&At_}(hzaG1Do`X@HT;x3 zJKTu!=n){+haWV~2GS79;-K94RRoY8F~omDBGrqEPMGIKQw6A|6i@iTE0jFNNzObo z9!4_GArOM!PFz8~j?{$!iuk9y=qj>@0!Xg%Oi&!LcRoEGyl9k*c-+7Xr(%YG6LhC{ zAGkV#=scbiBDiFS#XBP9U!z~f56c$W{ElC$5tt!#1cFiw-9BSn_->HXV=@ zKZdP>;gpo^=9+6lRlcaDSS zoE&IGe!xJ4hptI-?6bHkgeS`n%uq7fR%wKG$={>tBD_>LuVCB`#aG?6r5? za_;nr#_{bp-}%b8)F&0`^ITanp@O5(HE8}gBw{hC$`r+7a-C*m`O7n!<3)4XM0y#n zLpb>h7p%B=)nxd><$V0D9>C6Kb$IPr5lW!dR!N2({d$8yDk5}_@_*HlgvMjJc z*x&li*Ize%`pl!JDzCcpEw5O+JcXpHzT)Dw%jeHFX^1i1-a7T#+g{pllbHo#G!Tg`zk7$up5e&Tg+Gy2a<96opkJav+Q-;?l(gG5czp?bYMp5nlN z$i+?>4NHT^BL$)o;#`v4aAD-eUq6s-awKVz18gOANe*6;&G{UT=LwS3^dG1AgWQH? zOIZ(}zC7oo7a^W!g$%h6={GsZ#eg6X!tZdk&)-c&43~@YhvQ$~b`-@aiK5t-i5{m( z_g zK{^lad-Cig{TT=1nJ5K_Q zpyfYcM#G4JgEnkW1KLGj(`A?vG@uwWCy3tsn%BN`{KUqMn>MVTYkAZwMYtEfUsIQd zj|zj?wyiJ>RYlUWxyv_Pad7YMfB)iFzV)@Qe)oI#O`6z|(V3Y_z4DIRANs}5zy2Tp z{*7;Z{qd(BZ>-5Rt6pC-~IMCfA-@aJoLarKm7g=FTd>4 zERdS9eY^I2^&4M5dGh3kKlq^yYuCymtClNft~Lncz~!T2Ov>bH=u5VW4MC3Y=*XGr zL;LpP!oeel$BrEbFI82wjF~xe=1j-fv9o8+Di0Ms*UeyEzH-mkzV+1O z&o+-Bh3;Kj6lW`jj5RDvQi!cU#6oe=I{O`*TbX`38l=S>15XBFxBYyBSBgv8k zL};9myUyz*3iD*c0UnQQd@+=<|Puv*xGB;e1{ARsKHs<+VN^rc=rg2M_W; zyr7W-myp+Rf+R8_9v+VPjrjBY&@n6x9zT5XeE63|4_`>?{=0vPewiBuDV}~3CVwrG z{~ZZ&1;|Cs<6oZh`84P6<&8ZYH*(N_x_da;aAXpn5DyH;5C7rxTf_K0pVhA%BY)4I z@&NIPzg%Kmq&T5_DT^c_mvhoZlYA4&^OQJ-V-ot+@Nj~ch3OOmK(dj0U*2bUPo}^~ z3sQz7MdNh1hlB7ZN&IUErRTrD^%zbw`up2{X%K~GY$U=@h^~-orz51flDu6KFCXcD zAN>;1|4;&Y+D-sJ)G$qE>Z}{?d(_?Cy?5{4)vH&(`R?oU8J5dskg~6@55GnVZY23L zz8|`SgOetXfBNaC6Hn*I-}~O@zwjl`V}@Z23=BN{@WT{aD!%aivzFyJ@UIfmG?Z$2 z4yr})ZWt_=QB~OssL!D$yt)yCuWTrkm<8uL&$zD7O&NGq=-Id)m%Fr6Zvsw7@lvGO@t!*tW&297ME*R6=GQqt7qZzj8tLGH!=L=OPkrrcUxOUp_O`!7dTVG%mT4h5nieIBtNX|pncb_UEjFpTkRd=HN)sHmecthz(Q43 zyIe|c#a&98s9Y{L)@MZ^G-Hkvxe23P31`GH_d^Svvx&RuQcT5`JA8 zU$a@I7)Jr4&v(fpML`l$;*aIiL>WnLZf+I@n#imGx@bH@NI=Zg)q!FO28r$XaCi?PPW#wdy^6;|f!*TBm!7W+FoCN5gA_{u9UH%#^M z$Da^I6@VvcO5oBWwU0gU;17QAgNYL-&YU?t1vG`Me4ng_C=wM#SIO75ZF|9j1zlZT zeh>@{6}!5-$BrA9%jKJz8iAKy5Y*HaCQKX)Cp(?ZRI6nsgppfqs4wJmnFG5HLMW&> z>|v!)ki@8BR}0x1mNQ(d+&|c-sA?vaqG|jA4dxo6Qd^Tl#fFB4zzlDBAC&@EV$A36 zkOdSnLxVs>L1=1hQTYUABc<0g)$6JPgR$a7LN-G)Wd#M+JWazFgsRJ@(T~z7jnXKM z(w_(YvCz)g&=4tf`u2iF?QN}p|B=7V*4M!)95-&<_C1~HY;M+^c?3KW+*Ia|EYij) zW$FWcy=FSo)mw^uT9|FwiX{ZkK~Skw05$|z#X(h)6is*F5|S$!vRG6yIiF9nr($t~ zX=YL;kaEOl1oScArjR7F(Cz9u2QQpvdhz5$VaVL7ZC9I`#{|i3af}l2zue!OPn(YK zdwkkQE|+s$*bO2qj#DR(!{+e$s8Ve$O_4K9<=*dp{~td3FaPj&ANbdQ{>WpGKGoar zjvwFgxzBxe=B!yx#gG)hetRDo&CBryhOePZrP2nKSRX=bq1g z<}RnP%ohGY23)J$)#!J0BEdf*<21nuB)&0>8n5f zH8v3}8ka>eY>rZ?;06h;-Mi$mKD`>(Mog&4cMj43|T;2!bjBBxDvx zibgNQi(TiA96GRS^`(tXb?~9@y6aVI)@=Zal*>ciXFJ!d-+(k7Go~(DIG^@n;d2Lg zX)NXeg+|LcR=d_fUr*I?GHF(*FIyYH9ZHr2Rn@_tqQmcZ`HNFQkcshhI+IQf z3=P4zPX^=_RVO3GDzTV8@XO`sv-Q%@5d2gkNsI&k+_`ft%{s8He*mUK@ZyWx7R+Cg zP3KwU-F(}PZ+Pt+3fWX&Z+CCc*=5U?38ENS*3zX*VIQ11bB4)sp-_-zxxQeG88Zfa z)YPQGNPByGeSLj@Kdp1`RVs&$93DG0@!*qx?E)Hfh#ziYG>KHqQ1@_7n7alu(e6WOag#N+7_OTOSSk>lo zve1xYLFr_x_~QBU733{R<#hi6Pg$!9jS zYF2o<{~S=3ygL9MKtmKnT85lb2C>*PF!+YM-+1w|C5xtyUpQ~}wijOb=|fM;0A^bE zisrBed8FxvmsPw4fFoXi?T`8m`#5Zt46PS8cj{<*G}zUVF{lg$t@~ z^~CX$e43GV(M1=;Lhs(aFFEvWmz+%VV4_f0$iCsuTW3w5B&f!LLq|N9c7fAUnHf_j zUAtw|%9Sg+d;3nF?gZMw$!7r6mZqDp-L!bo0!dW%95^f(>XG9o?zryO*|TP^SbuR_ zYtzr}yZ^x9qgBuC8|>e*>FQOhR$q4c<*Qb#`1w!nfArBOn%l?Cn>%M*bK%-+uUT>F z#;dn(z50rEXFE@(Y8q<_b=#hOc3`j{TtUu@<}WN)Dx#=NnlOIHi_bMQ)H|NLZ}0B8 zb7pj&IdkIF*(FPsoI88==&_@&>j_NMMNLsPmj&||&MBB``?&U{>#tb8{KEUb{^`R< z2AxpIWb3zFv2MzwNo&__Xl||d!^)1GJ4-_@6E!r!jA;`qrLO(^_j)e9fS|=r1cB*7 zI%C|lb@R$)%L30jbo``U4f+NLZ@=NHRV$XYPnuyGidXE~w(S{*$zd!?aqI`QT<<82 z(kPA6DE+}iJ|uiSnk0uHg=hqoaF&LRLA2;kq%$_Iu3(Ud8Yyre=>v6wVhR6~HR+HV zA)bTq?rB%@>GRA3TmmbSU0p+hPEa5+C-xmNE(_jM2VaD{N*{mGt*`~+Oj`FU7B~p> zZ0w6n(Y9Q>c|wi+%`bg=pah){Y)$))Yseui004VBlYyHEK2^=|JUe5i*Q~qDb;E;) z4;(po2=R)l20<`m#*Egsv8TKH_wRafY^~hgV>#qiDgd0=shW{XufG-Mi)I+84P)D7 zyStE5E2V0#P%~7moIKZ!>#C9WN?Oa9hD@&O(4k)Xs({uH6=@rpz|Yj>Ce&r%<3IV_ zixtPOEz}Rdbr!^QN}tf)lFOv_>^m@6wk1WQk!tddl}RmTLpD?Fw+@^*Ma!#-+L&z9 zteMl5dVTM%9bE@c7?L~?!pLFmtsOI_&kiN2SnS{S)Z>aOd%l#Z$xa`W8yp;n(_?yi zdZxD4?%KV-Y24(JWe;?pGg7MUc}$cFbq!Gz4|exWnmp;qfxWf0X+=}IyZR?hs6TqN z*GwyKdh=g?=!5@|N~J25N;aKyD-M0pECzM04W(13=gyl^H*w~^L%YuGIgn4Yz9CJN z^0Ow6nLTUDOMCYpI=VMkub=BG^Ik(vf1x&=NxNsy4g%I;Fwq`tG#F6DF>!25T8FSmfnyx|h9L75C}X~QJbq|NRFMfXz@6-X_}8Ib zfP)R<&>r#alOZ1z8pW?Yyc~A5n-@ToqZU z$}}Ha&}2#-=gPKC|5-J_A!RLZ6n13Phili4(%A9mTSo zu20*&McV#OuCJCtl%q?L7{ey=X(M-;IW`2G;_P^|+$MykpbKf1qf+frBRLiv$KVTO zRYSBmO?8xFTZmX7o3M=_cU@+cSoYAh&>utIel+>Pv@8q#3;{GWk7GDRUqXPsN=UxB zJRg$~;$>O(JP%igqef|zMroA(m(U*$?K-sPZ-aJ4loDwF%>j9?Te$~DT3BEeyXvz@ zG?bqH0ooctKs?H&0dZg)*a6Yv?kL3%9M3tlcef_d!X7xlr=+RCl_-cLMEarU1+?Uf zEO>4Z3sSyNA6Qk|kOo*T&@K$B0$152y&s1uO^!kues|~qoRa z1`3xXSPYUtd)J`~l$KBf4ksK?T7$BtMz(2iK^A2_^eioF1a=j8YQW!=#avC^@!)d? zf)7iE?voUmuSm~a55|YAWU`@E3jI)(2!sMbj1&!(5u#XERG$wBh!O3d1a2TWU}G4; z>PY!^mEImuyP#5v=zD3C`BEwhlBKGd5BZXuBP1h}$uMGCg#u8Ent&5ogQTJWIRNn? zfWUVT(dz@^jh4SbYQBzFETD-{eVU3OrPA)uP$tVNRpvRNX4b$0^Lz`kZE8rD${sD= zk1iC%s;Z(fX?;Jw&52L%)%h0$Fs6`YKzsM2R($kFgIHqVH`qYo0@H*D5(1v18lr@5 zB`UHKh9REgI)hponkh=>pmLICZBUkDSIl1SW(Q~HkX{EWU)8l_PhrT-N~ z3KHN0_`<+{*D28nbt0&`=CN!J|GX+OLE}1{ig%~fFg#%t%Mc+{TS0slfE72 zsyW$}LWeW0kg4Gmi-`C6noX%pj;UJc`ZjHA^~;g~+Y*aZ%0MXg58zMA)FfI~kd{D$pqUE_aKV@U#J|CT z09nhL27YnsmWH_4#H!_4w%6a=54qqRh2&BqEo95ryQ2yrCpgf7NA;l-6de!}N-Eze z4wb7W1KCKcQ+gCAnyQ{QQl8_8stN(63D14sbxoaBEap27S_7Grp#U+$+=8J3rjeav zQEgFQR2TRfp_&1zsDm9`M@5Pj6|S2QJ(&X`B*|c%B$EmQ`j9||=Z+jI4pV7$UeUG6 zw(CxuG7L@7ipC>v^lM}?aP{^ zP_xA_3<2oe5D+vS=A#(+z86s6KnrHGS;~aQRE3j_OhIJP% zy(n3HGnX~#1vk8Fl&5OA0SX)*A=Sl7QJvzED?>OR~b?yOSr26Y`?tY%P6L4wn`n27EjoED4fTEK4Jym`x(Ed$~~Fvze_!oBP;;gjUFTe0tH1=LkK^P0I4XRcFPEcKfae_own4AMa4`-K7IOc*3=?? z%-FFD7R|rr+N*VynHmabp69EER;`q|jA`P8rjiXvE0u+?hiLS}^~jAMW(XC7?c{}s zqb9~*Y8p|NV2ZgR_!9`!$#N9M#9yzitwr_A<#KY0T7uA*sOFr=%;J(q40=~`iUj=P zD2>u6jnXLn@$~x#NwoE_@P=jzs7arrCny7R`{ZfhMocK+;Hg_Kwt?5;Qw zoLQPr&*GFJXEWybNmHMCcAK2dzxl0iZLiPn+PRnB&ePB|tOQAfzZo;5zWJ)no3FfV z`L^etc0|L-=6!33@{twawdr-X$W$Zk0LesJ<|PgkIJk!ClIKc0(n2IUuS`)f8EH`&-|9^_5rc-np|>DhaYYaqiOhyytHk zbLy_0yJM!Tzx;~7dedE2sqf&4E_l3+fB3^6DSG;E-uoUUv|rkL zOipF#OaH(FZ?u~k#6bcNX}$S~$*FV{1`2)j9%mZcE?&L*rmgGt?%iGrBo+!Z2O<>Y zY~5|Ix_$A2Nu8(ng`wh+p+tZkg%W+tAP5UDyx`66c*Bc3cUFdi*4D9adh;9R%$b^2 zqf1vW-nn!4P{}2zCi5c5WYRFFaK_&o0IgxEMez3}Sy2Q*rb!j(0K7{e5$#|AHX>ct z1R5`(z1IR-GAPc})L7*T?gmtYa=F~iH{aaR(Q)qFIoEXo`9SUjwoxkJU(>Y2n@?y2 z@^L8%jM6BL(kT6JA!t`ZEg&!s9wG+|@zCcS&HfYv@*p@>v_=~f`-b}Nz4zX?z3pwc zUVr_gk3PC>+qNS|jtmabcsmjJP!!8@=FMM_N@t6G1CH(0*ON0{lLb=nG*RTc{FOFi zl}hEMmtOkmPk(AVgb8-BsA=?-Je2ztn>J0E&=^FlVp*!DtENgT+c36z_3C^+M<7J6 zl_OM%GKyGjUDJe#lYtO043K%+phfBYz(HxUW=8Nay}&9K%~Wc`h7Cs#AG+<9SH9}b zS06llS;Xlbs8T)Mlv>uYo5loGTMgb~4&41#<Dh|Bj6|W#4U6X0RfYFxo0Nr8NoL85~ z^Fr4J+QLVN=T2q@Qt-YO`7~V-wee|9a{&lV>1oyZLHw<$sX;$M0QJpgv&gx>zaPk* z#GqMqT?e8gY}+5m%NHvR6nYs=c$6sXJ==Hg z-FKk3w;yPu1L5G|0R((MpU*ZoHv{-7ttbH4px>(%8r?+_fEdq}rC@=$?(S{dwr}5U z=tyW=n6bc3KC#kA#0;Cftry@{aq)E2_P)&kHWTc_^Fy6g$*PcCl z5F^Se?UoJ$%}6mbqw0ok$gp4dOKLVW=v6ANTXk3@C~7)mnOq(YG>3e$IaGrwz+9x_?_Ub} zf-0i@#Hwv2z^rjZ9~>M^K5m3a(P3m+2A1O#aE@OPjF_bJzyg3YM&d_a_n@aGfl(Tz zQ5vOD`lE>>!+%O}q@a-j2K>usn#@gaiOK(rpux*7?M6qh)Pd{#Eq7y6i>&FVPM(x> zBPb34ESg$cX|_Ds1WXYnS*4xk2cg3iZR*_l3m43EotP%<3(~+~wZ5fo-4&Z_3iZ>c zPQGmAyy=rBk{j)_#`f_STzFwyTiXKA{P`WNV_%E%CB=_@0F@tw z6FWMpL&ei4J85{krcO|dQvcxA%P)ER+y83Wij}Z%z&O~RI&0R1_AxrmUX$w@$IO{M zHJw#)iC*{1`ou}o+s1bQ?xS)Ki(S|cp+)kKC9zztLM%0W${NkxH&Pd0a`C&~{f^aZ z)WdhPUy}Y%4owwd}=bwh(;^~diyWq_?7-iRtHXhPmkrdpQm3r`R$Y>`F*MWFVHYooHJNY zWI*w#U&ixGFAx7=l-%|EZv3yM8l_Phr9UsCSDOh9NBjnnzs~0{1KJa>ol_(LjUyUS zjTMphuny^MF$?{*YuEnZ{vRPhXq7TKLkiu&auqnvN6O{Mb>lGdOctl;v+D&57Oq;c zIHxkrD@({s(9*5rTc^y(*49lJH}T@7OLQqjIf9bS=bPqVxIk3cl!?zqXv-A1w&(EAY+sx3!H0BSQ zqSM_u&{)@Amp2Cb&N+b=N;!u<`*%Yr4&&g;4QqdV-?wQtpdtlT&k@bruDxOIq-iHl zcHi-uH(Y+jB_vBzy!g^p%NNYk2*&E`+h^Z+^Hs83)#%fFu#lQNXVIk_H^6w3VK)S> zL?14uSX%XzP=?Wk)+tdoQIuc4;l{h~x}|t_f6KV`n{T-_Z5J~xAiVldpZo0WMT<9V zx>^>EYL#Vmro@C3Itm14t2kq-nHE&dMGHyNwYqVo&=%ULB~nvoH6B}m2<&p1LCBRBtjymZ+!)uAfnP^#&KJIu6W^2W2V37) z&@y&Xq0l`L0x(5I*~r7JA|Z{eo=fo2qbT7&fRPwK9{g9F1YqBZxFs0#d%6Cr6uvwn zeg9@GL4#A4Bg-((t?B=gMuPA(|I#F{!w#I{)3y!U%z)|PH5qOKL1w?7$is9PxZTy% z*;tcfUgocwh7n)B_R~aokM3SvsSdo5s8fR^>7^pv&tI0hw|p*NaQq#&o&>KG6)yN4 zGlqoE!$Ee)%cO+>fOGb3!(r=fF5cf6$f(_2t6SLbHlo%qy5O(@S~%4%qCatlX7=Q7gqS*wPmn=!T?8Df?{m;% z{D$wwl)>x!kKX$OCf}DB1K-<|GC7)J@lzuw_}z%jJI+q`tBp1%!0RF+(LN!%EtEi2 zRTc6(+OgGI8qQErrCGzv1XJ((_9nl<%Wk^=dt-jUwS!=n)khWtgA!&wH>cwl=Ow@6 z{{A#h-rLwmJj$aRM=M)FH@?n@z{fJ?*2}a9N!QnpneH}|xg0BbFDhzlr}Ctw2k5&) zdi{=bR)hEVen^Ys&UVF(wioZHu>9v|VDDY-)rQMVtHDil6(ycLT9xl;J8~T)ZOsjIBYMb{MzW9tCRsYAT??8T^8-t&+-23blgXh?3s_xUou6lM*zEcV>IM_>w$#_pF*n(U57(g* z^SwKee6^YiKJ@yo5ujnt`JaNJ>ys$`jtOC-Be}HY*;rQe@E3fj%F4<*oX(A*@D+T> z10A_7Ev@iLp1c3x7sy}65p7BTfHs5sFru{=;@Zhp-D_3CT)gGA#Zy-pA6=(Jz} zo>&`QdR#yZn?pw~C2L zr^k!6vt`Fbr(87!VvAb8=j;A%pQqXm(}(O$PaS#n@q=S5PXiJLTElsPSGE$;+mGGt z?SE02`TnmbeUe6(j~01;U$CF{qvQl=5T<#sBs|Gu6nC47gtBElPX|l^2US}c0&b^C z4>mvK2)EXkHuZ|H4v_~n+Z=azH*Zi<*8FaZYXLuQjSE}q6^}1ZyYF{1C(;>q9M;c9 zeiufijU7E;jU3UT6w%BUOZUo5ij^K$mX8M04|2#ElfvRV?O=Fuf85@C=sxFyR)uBT z8tB-xxCNeF+l+nLuqDC!F^q3zI=w!0MSR8mR~&t@-j9g#!r=#SLCJp;Po|QGV9Dii zLnssS4$Lvrij4S#4!oJtw3^~Z_fX@1J=a#s%FYI#GZZm`D3U4!=kz5}AJ|r$Td>@7 z3mVd<8Zs^EX&!Prccqe*Zd*ewC=+yA`1hm&JDvI*UR%2d=Euu3Z1C4`CsjiqKEvz% zW~3kHS&4n>VLc_&`#A_U{7EJMr}VU$5+*9)-XSxXiEjwcVeXa!kvS~O`Q;@sr@by? zKJ4(1vr;UCFnCNVFkq0fT2C%tbZuST%z<;~(>dOwM}Zq+^IyWsG_~ycNx7v8?GH%E z%1T+QRfP@I9g#nZ6)jXD+DK`~@?0c}H-F$rWf52A9bq*Z#vUJw&^XzfXRX26o)i_> z7i}sb(tA&5pIjGZN>1A{a}>8$SDDQ!RYCozzc#>H2miZllaW{;(&*BdS^H2yC3gPv zFpUVq{K>sy$@;9OLJVr8@rsdKb5pl}fCJ}5DgVeN0aysVfsREM6V zN0;;Z@*@bicyXeqoAju*ZmzbZrQq|}Ja{CqqJ{UY486;}5vVdZ5|xeD05c z5X9j2E(RzUa-6}`j_^%XDdrm=i{Dd80-(2?41NEx!5iZa&lZfab$_|M{t3JZ2#0eG z7$XMrq_`gGe}VfTi~O*l&;Rf4{mO730CjN<#B7DX~#=SuKD*y}Yh-uFHK^Q3-+_>Ac9NIc0GX!veF zJgKEtRax>|lGuwPau2k37$&5RDVQ}B4^RZ9ZSNpnfxno~WH`<6KlvWA8bHZxcx?Gy zZ|@|f$xs?PT3Gz3}DDHV`fo}GVLIb)>^%y zuCA)4=Ir7El?b#R!f@x%{7X12M1CiP7DX|mkjA`rWcA$z`4SuO!`w!a=5yWC6Ywny z*txT+I#+J!4fWXHmd)WCF(=i6z zR+N3++Btj;TL>%yfdCD{V7o#ymQm}c%Z(@Bw>4ga^&Yn~Y%OCNQDj)}4&E8QyGfV) z*Yg11ZAg;m_alL?WfO%Q{xwu|_5};t)V~1*P}xzvzv5l~vMN)#rQ*V?h}4O9*gDm<$?X9Ngi{-=x4(1XzWK5H53z_LQC4Ez;a>{NdDT_|gC zRAOQd-NzduP%rRY5t)cxIVlx7I^@OGd*wFu!fuNGKCQ0pcz;YqR9sbr8U>}r{kMx& z!h{8t`|rYL9jHUkIU%RO`T}j@$yr%s{A@+6(ny56%5oM{E-uyJQOM7z!0{&)gAUsY zl6qB9@Pew$(#ne33(ZuJh>WdDdtf3N&(!W{?eHaJainFP70oa!!%``h-#jy5<)$`0?mmXSY&97IKPkDyZn1sp_;p|7*Y&Q}|8ZYMc8 zC$m{)e@-S%tjlo!4puI)Zolb%@-J(zcNz>=OS@Q%w>sema(kUlHVk%=wjCU1&oN?- z#EV1wc#kKfT9qe|`5BG|_umS&YbTj;ls0e5jnT(J0&7zyTFkizo1a_HMDHZv zaRJsvKOp|?_;Sf5!rfibaqZvXNCt3y>@rv09G559`@S??(kq3w8ayk$fT!MNYZ4+*K?-1PEd$oFik zmpghOkM}JUgFFsxOgf{|K+uPeI}dS}X`-(ObwdXG;=Vz^(FMRl4nxiEtME_H8DfKJ zDS)-~SNrQJokorB9AM4u^j=FGAi})w70VFY+GTvVD}G1G?S0bcR9Y5CDEK)}VDQst zsrtZ%vnAH*bLgqpZF}~l@(e_Xa2j|mf~N66hvhcsgWLSCeaU#fPglRUXD=5EdCN+_ zAvYjnr!AngM#G@dN&aYM&s<)`uJC%dQQ?oZszVS%4r)eqpKm6!(=MnPs<}10-FCUz z?Q=Al=~8+(S)o#f&7=ikbGSTbD(F@^E~kzxsCqP$Z(t#FL1eNwP3CVTbqii1LO zg7Akrw`Rq82up?PmqDYypR5f(nA6Dgg{XK>en(!WfS+-@>to+%Iz+_mMvNI79$-jy zxXtYBFcpX4F64A)@5hGqEH9Vi$OGt!IL(Py0ZZjf%HI|S>71-)JrBb4BiLsnDWjTNw_?>K{Xqf&2T9DSzQjF+bU{Lz}EBy zZ!-E(TH0Yx5E-t8Z@{wDHz;`x#;vxUX^oAae#4VTc|K(KR)~0x)mEpa@*3-&d$GrE z@%)dt8}HdrCn29C5)_6U1`>u`^s~Q&?qS`DPyyeg8EH`B=f4WsKlpD8F#;Z*12j`W z^;*DE=tzv<)z^!)>$S=7B9`l`{$cuCGvsfIo&nAP;}aFUcbVs}+KOzj!O5bTP8xp|wcR4WJpQ|8|%E^$r5Yq>s0yt z9-HWfL^{yY4_=o#sQw%+2k9^TGn1hnLn6-E1LCll5I8>|vnvR+cJD&5hYbgre$QJ%P0!v3oyKD}U9$xsET` zMWiL$SXu^ZCK!&V(7>V)mejlBUIl~ zrU8&?MS$qg==X6QhjPxMI=`2@4^gt%-{s1S$ZFzGzTQ@b<}8kvbLpyTcYM6LEWm1= z7%|?wfYP&nG=pfcgcVM^zb|X`^9|Hq~wcY!3UOPHQ@>cD2hGf$e zyp7&s^wdmr--@UGcyCu!6`Hdur<%%Q8_VA4>+uBI$*}6$-i-wlJkHns9@p^(nQ0eg zR7^xQJmN)I_x*ava)c(H;m(H%<{E3g9#@V&U-CbvoCr^4*I&C1(sY)pwIDNlpSrJx zPQFOs<7rC;O+h_MIH{!y|-hVGB<&!VSJJl?If4&k#(@%$!cwB8E;r$S%IJY zE)jrO$c5et*Hc9;!+xJ>i&j;itsGrHvKXG_Y`Lon_4k`!TbF&`4HC8#uIyM2S%cxT zqz62FpqbVmWK9!;Xg{@L8ue`&4x7xg61JK8F2xCE;7=t%N-oK4`Qeb`QU>e4yYB?4x?#SWy9-1J1)D$15TdL zYQq?DiYXb!x0whRIlHJV;d5UNPVCS)ipW5ILN&^_l12;@ZFk3=ljEuft1)U+ ztY{j!iw3j9m@}X(jqyFl*F4G5?3Vw^46k{w^E%KNvRS&!Z!K12YnE-}&eF_4X?9i? zi&A7fv@R6cF~&LhU5R?2+++X-uI!y@1$ofv8s1c_Xd{AzQ7NSz$`Fpc9XB-3>U3-} zyciCSFqB*ZWY~|32uH~al0Q;_Lj_+;rAmUBlaq8Y@8e#))vsr8uO3}wbYerkF%Wop z;LJUj)El<#flDI_6am8jiF7APW$Rh@E3de35*2NCBn@Iz!UdN!$-kl$jR5JG2z!A| zx^kio#S~T%uC%cNVKR@Rh#Sey|`ed zC)(q3qJC#EXb{0r_H(wrDbd+Qq(#s>N%DTPIV`5wLDcH(i_B_0wLhhU z?9r?|gw+;(N%?Bjeo$8;kP72+{e<|zB|n?U35&8$$j;8DUd23Dq)HpcCIz<8-yOv+ z)Bu)+&$G-b$C{ZG!{Fu{JF{+3qBXe&8C+ zbGFz~S%O*xXw}JFOCH33?K3(775`6~FpEl;XO$SH0BZ>0q4$MWvm>mpm<)(8%R*d<2#}{g+F6$3;n1;{0}f$a>#}SJ2*L(nXboNwRSt-@Q&^(qEngW zL?U`%V8QLA;{PQU2@i>inf^#{0zVTjQ5YLE(n0I)kAJ>=kor#d*P%_8HnP+{8k}K7 z!35cG5YgsNe0N0e7j`%k*o5-X!0?le5 z@m#sA)EnF}ErYbI+7L<8_pfpc&D6k5s4>UyLfCIUCD|{3{uXE6gVv7CfRAtYZ-a zpE`0bSZOtMWAD3z5WlmK@HQ;;4o(-iYcg#}V1ra3*r{+D-72~s9jT&Zya>fP#xyNY zW+*ObEkhonY=jY?QV>!xa_yqSkg){WrNB8ADl;%JaEZ4k{9qBo#S(i3#py=EmHh|W z-^-GBLoDKbc?t1;#jvH&X!ybbx_eUYC&Q?{;YPSv?}fbf*xtXABWTJYiNJCeD(#G`)<|!<`y>g7Wb40 z7|{r!k;y}`sdDx4ay*oMu*DFxTu|y42I0?b0kv3*-1mpV(!xSdS8ZKV}%Ae-Tz@~ZFx1j2Yi5^7i?d2)%g1tj!!`&1YhD6;#DpUuHGBZ=5Zi7gqRoTH9U!`PilKXVmkcqNkj4a$G1Y+|ZA3Q=3?{ei&1ipVR|Q`6;NDQ<`2G<_IP*CAW^#vz>l=Y3iuOiF z1IOp5_0A5>cn-++oEdlgbF9!FVmCS309~3u`jEOA^OT%n|~YN(mT;`k*ur!%%$-;Kv+*PdOFoHL^I z+}Q=JsH-&Im24C@nwiR$N09_$A~dMdB5M#MIU7>8VOe=-KnOac7g!fWiPV?6O}=eC z9MUlw1k6=V)ULV?)pxIXzlFHp6(bcj z6)kl8628mp5meA9f|H4>SrHKv8qx$0r|>bSDVxCRdl!>qCHJd{>a3O4WOF)n-;T~f zmh>PLQ?o8g@*du`ZaLlkUdmD#iBla-J+dhsNvs@pCL~zzyxrkU{w^Pf_fDe{c9v2! z^AD~}Tn&8wIt?;Chh3TzN*p>^_;N+p|D%H)r%vDL{JGzG1-xjbaH``h)PmSlqQA2txhw6GF6oypb8CxU!>$DtUfven@=wT4hSNt zMa_nYER>#K)M=gUHvH^2dF!r3{hU>1a}rWu>e=6o_j}F->UT?{?L)$%;7bfY7&eW0 z^xiy7q#L+iANN?VlzNLXqeB@Ibo>d;t0}@ned2YNF}vLhqLvyp5N8gllMBof_Q4); zLNNR;E#yQY9w02=YQNFp|M5B)fvN#QX<95L(fV>Q%9P=;$@4=M7tx=-=|QJsh{!=K zOLKx*?@EM%SAqP!Mapzt=hyoa(CAQCMiC9(QP%kijw}GJwrGnSZ+^SAx%pw^%Kzzr zpsvkzszZ$~{mOHvqMuB5jLrWe&w(*R$>aGtufK@d=yfvQZ@)%?@6(XNT<|4x=E)-; zydUE98272AwHvuvc9w`zglm+;2r^XUs%8gyW3qIR{!j=c#O&Xo9=RHQSdF>5n`t|woJmeCTgDxa2-F;167zwh`dfz&G zb=pDwm4gY5I{j{onY_=>PxQhaY^eWV{KpDl7w;{CacxK711`KpT#i|~?+nG%Y}XSf zFBbV9qmlx*L8!jlg%QN3mzSSq0k388e&;4{sKlXlkg>?9;DpI6V9N8y^hP=jHfsjo|6pY?{5Qd zC)rIwD>X(5rEuGVY~QUvFXxKN=#ui0abDLX$(1)gLF-&Zb925%E+CNgQk+89J!ch# z#MzaP((bepMKS)FqNn!q(jqV5^7HNLif<+CY@cP$&>S~iX4GZ=AIic{yi9X*gs``J z=d^b4fNWyKA}ctUtkfKn5#%<=P+jrA_+EpE9ZGk%*eF30W6ZXbgq;X(@8^v(s3=H< zdu_xu_vG`_T*Y=oz@R#AhfO{(q=P<-S}k=r2f@HTEL?b+9xSG;m5@MPCTbl<8CF+l z4#mK6>s87sCM%`|h>$8QTuihd4d}Kr0w6sMRAY}rV*lNgyKCN>i_YS(TdIa7ejU=; zbbWfddSi?h)k`o!gFzL1zYdA#3oc(E+Sg(y zKqYjw?S#i*Va_s0jLS-cTe(Zv^Na$-}eZ5Z(7{r zUXRKKn8I&ZnT!Qe zTzj*la5`zQ%;9k$(F<8O(`1Afat*vmAzz@o1pLy!{J2A{CRl-*Y8?Fq@J!Lq(Kd5% z_Z9GV*Yw5}I&62@Q=E zcJ%$~&*g1}w7+ZmZhijD3;`#ICGQd>`rU!7uyRjRNz<<;i>fz~x?v+j2V<0ZELXr! zL9`vyUxgyyB)#j8;rfb*8M}Ot%m!$(x)(3F*XBg^r>at}Zp15B3cMSCPx6D6mi&t-g^)sHekgpok711?8J%GAp?wMMSPbP zG!$vf=LdT<)-DkkqcHCvs~ja0@Tydq(4fd+&EG(w zzBeF}f`)nKPS3*gaqRDdSZ)x~x~?8LBiAW}iix2i77_ya)1iTT|7AtfTM^&dR{WA6FZciA_lSv~MI_ zLnYUe4@=^+_;giqAr822$0bgw&Te+2Q?EYe^((4reu%blSeVzUV&hV!hyAH2r^RM* zy4svRsqd;p0oQ%>3jy4&R|Ip7o4L;eWPQMxm~pFYIX|RT^}LiQ;K06#e|NcEzR_FD zJH5pFyCV$yvs(oTQs9OV0!;)wk1G~)CQHEYBMa1v)S8r<_RB0+r+Hb(((-`*#LMY=7YL+WYz~Bb1GuJ-xrd3V^d6h&|fC# zvwnJ=4^IH6^x8BRA9{kom+38ur{v;^09;PH&q2Ghp*KXxZq4e=`(EIExWw*g|N6|y z!H0t)i^ir>7ia)w3OTd$K)30}XL?cL`S}yG7{;!Tr8VaVyV-tFx7_cx9`+?8jM;2F z^sH{9%W+dg8awF8AD3=rwWZ}Ts^)=+VG6i@J1*j9Qt{Me*Y3D9?}prXNUzyp*<<=( z<~oOd5AxU9gD=qjoq{}Bosp#+ULYjuR`YSm@FX&>Q^CduX?%taty^>}!hy89hMx(!OvW$(=H9VXaOrq z4|i`CO2&$ZDkWC>P33ncD8VD2tL1J153I1rrm&h$!n(g&t98@+Zr6-%)(+-v`h`*c zEpQAPea8!Y>DB_aG*i3WX1(Fyw9fzJE@UW3lNIG+tMjSk!m@gk*k&(nD*o#}8;7C& z_%ot)Z}^PS;C25GDr)<9s)n7{VPby%#Xw^P8%Hy}KJ(j<-OST{>g**(Y(R*TQc^1E zy_Irk63Fqz5;?!vYUE9w){2AtWhk+`jY(@5Fni`6HN1Dyh&=3iUnGsGUDtJc+xs>W zpx+I!C|3wcU(&k7tY1yb{M-Ih*Iums&H32oCa~v(f$mU&!wQ;!YgbiRzZmy5 zu}~yrNJ|B00Bjo@=C^tdPG}>)pOBn@U#u0&yd(xDz+1c2VFIG`>_Ww&>*>NF?9A_Q zd4;q4<)Vs7U&6}F3A9Qb{5Q^0BHggMdB1jRWDlpx6Rke)csJjSYFgX|QngRo;KZH?1m-4vfHxq)uU&g*TXj=SmXUC-qq`^4d&kt%bZ zwdIcOV9MyqUwM2^V*~9EmGT3n`gK1k1zk=~o71bm>8^_5=Gjw}>5RyG&FE~|hECV3 zlx^L|dC(g)M55Xwa&FypJas=@*4Qu!xW2D9$a3hq46SOfhx`^x%>$Rh`yk8}h;(gm z7pE%Q-kR2HaNa1H*rpd9HI4r1vUmX04Y;6tJYVnmDET<6>#{y*K)l1h$RcU$NrbRr zYZK<3AMA+2>aV6z>&E~029-g*_wT01dC2_5w_f>z$B)Cc+seh9Rh;njN))_XizZ&d7E4f1J+*&+X5cr$Qm;H2Xcf-^UW7s=T77?w zAU6zoRDz(~L-Us&7b|&0UchtvuL&~yQVF!T#lCkOB9TbZAIO{?0k*7Qv}RN;qW@_O zR7H|sfavoP$%2FUpAZ_G;<%5KcL6C&c*qN)q`8IMk|C>LKq5PAfX zUO+EkfX8iUR4j7rWK?aN_ZepV=Wcxj$=i(wX!hLNu#KzO*U_FGXal?pnN9}|C{T2#M0`j_xANoKL7nb zV5aAK9W$PIrLp_%9$r;_dLf07ByJh>80MJ#KJN@Z#x>IE+e!84WIAA~WPdj+UlmZn z-!tkL;D9^I29;K`h#BmTX)pfh0;km+>Ie3IK5Ts~wFbQJ<@;X<_Ix%w1o%uG%EOS( zmVjF*0T^{UOO+Y@ckc3E;+eJ}VL1)57v-l~tY8Xj6UHP&kIV7*2?0CdKjly3;pU|x zc&3YD(z^a$tT6eXG#b1=gTxK@beK*Ut7fvBXn7ryfcLow60d8Wt)8bpU-vVdTb{WJ z1y!2*`@D;&y!qd3&^OpYd7so{yVlBM^8NgS0kSnbZ@9v0Hd;k zOm=BmpvDHXNx6OMst&d)FecA)zn>}KhE9R+cA>S`W$TCF%L>VtE36z7x=fxj?n#ye z_6yfUiQ%{LN$1)Q@3Z#lz5Lh7GJ&`Dna}ew)X6;d!3KuXVi!00ubTrV{+DAD!LFws zix#`imbw|exFAWAN=-jM8JK26wOxQHi|vu;B11py;w>MF%SY@ zJ(sSoqvP)RCO+UDQGx$u@~P+RBSwQUB4we2iU|Xyr|FDD@V0L2Z3(oPKI0FkbFh(6 zHIm?Yt$imxCKEw|2QHu425<0IP>A$TCxStyud|}25a0JYW zXsKjpXNd%s9D(9XPMWN&X#uP)n0>Zki-v0`e^od~i_(z!Aby*-7btCOS=iV(ub}pP z`2jav&oXN_&uY7Q(sx9)EZM1G7`5Ol2PzjM>Al#SAF>GIh*rPe8xcoKOkF5?ke0+Ggzu$fgB17d6FHw$yS|!XiQ{Lm{asAG2|DMr4k!A+S zT{@4k4Z5m<{;4+wH`@y~ZI z*L?2Y>b&yFe_bdmsNVh-6mhZE`c^;TO9CF~EgevExI9Ahl^X&%y7l#IKB0(Q@K5NV!=?WsMCNh3$fb z(oyZ#7JcGZ6^+cWTp_$u(oeUvDe?f*fn;a}{tq!dJwFcEf0Z=ftiOqeuyN=*y?|~A ziS()RkiOQ|)+mHrio*QgN;=e2e{4yzE_O_hZzdvs_@l_hY8 z$8@qt4*^qrTRbkMwTdAvxP-g46qaNN)+nK0)FeBr4y^x^A!igqq9IWQ(5m!*qFta2X2%bcWWk4~jux#4GIO6Q4S5 zsmlE;UgCR<2ik?$`@ka(I{x{EpVL~)N}~lQ=b{h)2HJB4YwkZ8LSg}Dv=_3B=_B@U z!UT_Z+`n~arM{C-CR<1AGHRSzFJJ#^@3}h`MIE^QSQZR$T^b1c@hhk8OA?igY_-dp zGWH*TKprafK_SRSh+0@OBgUoGp;%P!$bLKiQZ;AqrI4pnVF8dscBQ2-XbNygz17bFvaY%lUdV zv596y*v->o zfo&BPE49m=PekJxT4}#>1-y#5G!Y=Z!K(>QpKtbnb)AI09krj=5rUKEjgu~wi{nu$ zWp{Y!Eh)5g*qTtmkV6qL{k`V+WPaIk@8ZH}i%8MoJ6JZA^Z?jJ$Ll8CO#-e0XxMH! z8OT=0V&Md+FK1*s1=hJ)$M?`Qco|O4ifAY?Hn;kK0$`xSc*WOs|8Nwhz(;$0_i3#L z5Qqi3WNLxs3>p*Qib+3ilXja@6}^gpS>ehf)IdOuQRdhnj^gqR*I8S$=n9jM)tmjTn_eFA69|jyT4vqU+WLg# zTp-zBIq!AcS7mUgt*Hb`!vp@8A}Nkox`&X31h36IJPe+*BLwTvrdO0TK$XYm7F_}V z^ga^M^|W!t4fMjE)l8o0;P4y$Yx3lTI}0MG38+zI8lwNDnb3uspIUb?0%sM=BJU}Q zzrL|u^OycX2fGvb_AJe0Xz_Hl*6kBuBAO>X5G5MHw#ar*cvX~`xVT}>ZEjp4*R3dB z!l>^z*LHJ}uJ3))x%q$-@Ui(MpUnb_e+5n&FptD$Gfbn4*)B5_F?ZkP#zYI z=X*r`dS2-b_<&~Pr6Pu1vV*DH|Hd_}zkq4`&ErK%BKM#XOuiBU8- zqXpB!K1{LpmNav!Ka9$Z*;B=7^ja*YiM$=2W6*oU@?2iQ0*sX@uqqw!fuXb`C!o7E z7E%d;WZc1_HDWnxkqbLsP+jBW#g*UHmEdcg0q95*cso(B-)gskvrp|?9gcm_L*?Pm zEmSzw6HE)*sz)-c)rN{*PuRY|k660MiVaCXHqj@`m>dT5s4zer zKT+Zik4m>eWDxh#GN#hp(=1-XR;@%8-+7iozzs>4qCRA9wkj=J@l`DwyRXa)KFW;w z_w;_ryrY;jN}Ni~ea^*&0I&UeTV;q3^x!O`PInQN!T0?}kIjclP`L13YuBEr!N<8p zJQ24kFJpIOn48f`pOkA?_%M%Yuz3O&T(8W#rF98gio_>XP?g==!KDlT#?f#b0V=)d zh^3XSObJV%M7JU&cQK2WG5xLRR+z8lJd9E?b+8QUJ3LAvSiLIm<@b=Uy&no?MpD~6 z)NuE@we^KJ7J_dt2EAvwYaU(KufSg7)?G$v^ywVFDS5s=iodw6BRy)uy}5i=l?TI> zwOH294MH&o54k*)|BPx&1ONHBUv=&8ro!#PsEQ|)_}b~M+|Yh>v$wleaD|3EO8=r7 z{)eG$pn3uroi!2BGdehwXAfI%&nqf`dkOELPI-Hi5$HyT3z?P3{f2%a6L_If1&ey| zvS0Rja3mODICI%O!}s6{TygOWDXHxd-Y=cCQ-fuir2M za*V<&pyUJ7>brNa-u~C94+!M?2MS#ICl9v#CsyP79B_A{Ugd}hzC0Vkhn07OR(9=~ zG{hs+7B-v%Z)>>%3duwlMnxgG@*R>X-r4%c!uwYVw-#bi5vHlk=y+;sigDnIujSjc# zJ#eLFXyv$VSmx4EQ+LZOC@$xYj(9@8rqiTF;^E<5xz4ZSWt+n&nmRHEkBcxP~X^?U%#D_`;^$A!hr%A7MC0OqwavS&n@`{RRX+ zHuenav-|o#*B;{16`B+}O2M}ghT!oc-z36?w+7}G==%_M+nm?c0R)b>)dB!(-L5AMw(9Wj*SE1Ypiv`=b(`}Ts_w*{bpsm` zGxO|GN6&%Sdr5u&x%HON*W6y2iWQA>6VP)Wlvsa`~lj$V-G}x#iLAeN7x_xzB zh*4niAmEQu*HN(?QG!7=3!ALG08{yG)LsORK@(dpgrnpcP~ZJ#2!}Tg3kOyw3%}Fb zYOrrLtrYaN4>fu?HAD5nECtnJYNcU;p|alp&C9db_^xrdj0AuJ$XD4 zuXlf#ERxE+%5c(9jK{^Q+of(i09ZxqOq*MhB}Fb{YioT;MBkq>_k0{=10@Df73T5I~s7>aJqDU&EtI2ZU0-dHg44m zpDj*0wq7vS4_3Ir8iBV-OiM*AP8M^R7Ixx%bfG5`gTwsB|7mCWS^i%m4rWyl@nblD zR6Z;UtD0O9?5W=Al#1(S5@7mJH3+tmWgxCIF$_qI#$zp@?GQ(DE#%%Jg`1&^1WW&v zP?emoJ_ajH6jo}BPW;A8zSvY5K_#hyQF>dB0|gB7J)Ae1O{{e~Jn0yCj5M9>rP(dB zxQ*}U`(5Q-@W#)()5%#90hR@s!2**c<+LX?R zlX)(0M0Ivn4&6_0TU<`JO%_2)@L^2)T?LwajR9Z8TV`CbCYS3cBD6M}&KJ!%`hVfZ z{boKx8q7hlmiJ59_8IIp*p@I8^PhJ zG_inb6aW5msBJs=#pG?!l~JeObm-O$hrwWDe&IgEr&o;-|5n6l zBiwD|>59wuJY}ZXx6pm(cNB<~&>V{r0hTfSuyW0(3ZX^g=}0V=k-&%JaksURxP9tr zsyQ7t_40C}hU3)hw)*U9$EnqIyQx%*c(M(6A0tX58LW(@=+>qmFjX=$FJ}3hW*B~t zj6$Eo`VfswaKxay4(f(^?JgG%j*J)nwLZ8VWa1ZOTQG1R8cU{PH&6YM@7>i2%GYc0 zJqZKqdt5YW-K}Qfqjp_SPH(*BX0+%1P`*mDWYC7g`v|77tX9O*V9@^SdIPO;#MHH) zB>UKXJ)oi>XyBG}X5V#r*}BedciL1&?3D=P{f`tzbx&)De-V|ORYMch_HINKoCjf9i1mE{sw|XmVs-xp@ zQHQ2Y-trn>iYaIbdkk@@Sr`n*?kJ9k^?84>_n>e%iT+kfe1?7rsw04Leq2{HDlM>N zq+?gGTYTSL2??ptME>WRDJ|hgtH*DrA%eP0GQnP|Tb(kfX`yTjv()iGM`vwxG@YB8 zJR%qJpk?d_$Ox(hWL1V19rCE#E#cCug{j(^sx?-&IvwpBrvBc~C9_x%RGS2npL@rc$-x9iiFtO>1^7SQHx zYP|WZx7=U0M_}t#DFiHBan}=7^p(F(Et&S6{f6cf|NH=7luJ52yK^y@i*N|IeXbvb zjSH4voe($g$ec1`*|6X-lRk9Gpio*2qO<%ts7h2-JqAI@d5TAV8}vn_ki*hX%m>&~ z30*rc&~3z?;&jn9`9Ae!~{#-^RSj}O^)6!CeBVYa3w zm&@5_PWCCW1WfmV64Y(A@l&Td<({51=S+dTUI%?v&N3%cJEo8ekM?v{Q7w3bA==or z+gloEPMU0_)7!Vdc=k+JtVmvDi0Sl(#WMgZ&+a?bdHm?+OD=%F`}Cd@Oj2o-+pA8V zIJT{^=FqO~@X?1L3o*q6O|MDSvQn{k2>Ao=<5UeC+i~p;( z&(+o_)o$MpheAWmX6hBEudn1Hb3i!_Uz604Qgx|9o~Q+q$wHxHO1oG(-PPG2Kqz?r zP$@5*H+@ojTeBQfgkm>-D7 zkAC!{mfE!KNBxyx!sJQCle;TU<9}KL`H(axE>*n1%wtwbt|1l29 zj*-&3=h6O(W9nMw&z@)d;>lA-jvd`^s`Oq+S5(KRuixF+;i?NJ4O$(CFELup22C`I z?xXa-lnC0%%>9$>*Y2?Z&`xjYIJDDl8&O2NtBTQY-LIVnd;g$kQK0qR0?*e~gEod? zVx$0Sefsp;rU^EpSX-vG)2lhDA_S}|$Uf~j=F{RQv?h6=Mm~yl_zJ0N6o3m~Qba|K z9E-RXWU?aQkU~co1l4&xu_RH8nqi)oVzfJ*MFZZd5YvtwVGK1C8IrHcV%dZL0~xAJj#SUinnKYc|16fxcfb3c zd!B#%;a~j1320v!v=ucQIVd{BE()#?I;j*1&vxkLB(1zR_LGun3>Q*I|pD~lW7hX5GPRbkck{s3C4isLS)9Y3ydx5 zKJf%3u@yLZA@h@Q2+~yY8W;#&Ew&&Rn5Ka&x*O~%XrH7tR zqX43=#=fW0fH(T68p$TDT!Zct(++;w5uE1hb-cVHqQx_EG^#akQqw+$dcq+)U6C7bbZZ~UCUvLfi}uf z#aRiRKww$5mKL2AEk&0i3&J*N5_{z6k;Q`8p>Gu9T2-MLa7>r8a>=XELdm6!$W&h( ziqK)uK5?Xz&Ch&UMUPX^aml_9B_K8p;fJhBLW53#A3B9lWk3}QpiTh5>)1ZkZn z*wK3LdIN&;dCDU-MDs6clF~4Hb04ef@cmvPK=b@z` z?Tl{H-XSm;00uPoK8B*L(w<&46C5poG`Ooo+qaTRVxj;1bI-oCXRk|>!4XOPlZ<7B zKr#xzp&&2|${ntY0Iql=B9$N1)zvESwxgK)-?VHVv^JV4WuOHK*O3qI<+ISB85M=* zD1(70fU5+40L1`X0pChu0z0NnfX3S^ds8D7Kj$Q)v`qxrKn=) z&}UuwLSrVSqUuoHwA2_a#Y&~o3I~kQSJY6+0isbfECw<}h-(qu4O~&JV=yU3q7}%Aq_aC9>Hrt zui^o)ek^N>P7A+8woeIQj>>3e*j%(RIjw|)JIGj4VHyI5V3E;a2ImJj$QMXQ>j)wl z9Z}HOSdaYuAl6elYJ$#|$*0tei7sM!9Mj@h(NxITH1&w@o(^dsLmKGh$t#sANXyN2{P2z4@GPY>OrhDD!~;nWHjS*pJ=f_omZ0he4sQ~Oka{NX z?;*?v2!R%j$Ypbi!fcwHhsekY9Ys=XG!!UPE ze>DB_T|1s@D1DB%c;cXsI5O~e@V|ATSyByu2tgGj1NHPlc_4bg8z~g?dRU<)N|Zg2D+sFOk=lWO8HQ;%hfryf;)S7R zz$&6OTTx~1-cj{ML4@uFs^u~%hqO4ol7L9go;x?t->Yi`y+E2_P=y?6SV0DOi=t27 zHO)K{3Atp6Hc5qvVpRcqw8|GPIUc9eW~Ay7%pjld)vik(`9x%rk@`=WAsk=Ih6XvQ zMQ{!GgK1zqwHrC6iX`(76T~kbpD+z0;#{A?jh^4+276 zsZ*kAh=YM$MF)VbrK5}pR*ym-mZ}k8-iQ4j!xE*>_QJqwX{mt$SX>6M`!@+IV5cInP^+}vVDbjb}(3UAh(k0anX*3@oL~_m7z|m-{&D&KQ zDi(ZNHb9pcfGlZm6Sb`u|Sm^CIC5HPd^M`yHF&(#6YJ48qn-?+CLXfkW9S*cJhIH zrUGDOC5!=Up=xAxT~B9x%c03?i6|(NqOKT<-afAnUH}$}H4X&6hNA%sdC};lcb3U9W)vw zLifOKivYlq4xEAQTQ7!?D9 zaFW1=NF$vDkSH^iGDzQZR}4-hsXM9=c?s~o0PRq<&?XIhzxItAH_ltUV#$&vhhBOi z3Y<)BtAJ%PP(%UdLXcJkhelSx_?C>6%i%yLQJQIXm z-7R;#a!Ol6=ka}TSqZIafR(}ZB3M==pcIwHiTVd0NH;ht1HJ%rqLcw5F~LK7!!4vn zjU`C|y3=wx>DrbpS8d*~W?A>SWBr3w5uU%S(Wpg0xRuhB*|Vl?*}Ubzq5a7ccrYAP z!%!sP1z?C!E~z_mR_FsiRn`phtsx0b0}`W-uyjytMuU9xs^^k~U;&86HCwkVSTytK z(ft;!$AfkS`!Q29D=%LCFCTu_wO4Nf>-!EKG*W4ph-iSj?|$PYtCk-Au zdh07TtXp^R&>;&By{N`~2njtI4Vp@6Xk~g%_&WotufPmVg^w+wzoM@o2Qoa#Mv>4n z$fTsbcV&gcYAh>t4O_3=xZ&ap&z;yiRH5_smj>{r#pM(bZzUnaqoWHtBxMpRVqb(ED5S$(7eS!kp&k|5v{n8 zzWJ4Rz46u8Z{Bq2-FM%yX3e@n)3~nw!Qx;q69di^9ejge8Yog#Mq?eY9@ z;V#pN4(>k!LsnA^*r=+mhm7|bG!{(TAa1Cu`-i`O|H_rimMveodiABF`@4_Q|3<>Y z^WP2a{I>rQqB(SYs15Y&Z`-f^;K74%j$o=MX+WgBxEkfUnBW`;TCKn@K|b*O6UUE8 zp=Gz2Rjrx^P=>-I`(D4{4R7e}?Y;HZTT2zcyQ}L5Klnj=d;6HyRxz8IHe>qp&pxNq zx9!4HPd?c(Zd`q1Bh$4F8#X-m+;gY9d*M;?mz1o(cTncG@prv^ zb^y#rr+VzzkrO9Q^$$8S?4wkM_(4vpHf`4IUp(}SH@)eN_uY3Ncjn5-9@gT6k390o z!w(J)(*Ee^C@3@sA#%nj21#f*o%(#>yHQA6uGtPGl;99;`Nw=;%;Xj&`@1_{b$GP^ z0gsL6*hh|^c;wNC`2Ox9>>4~knM^9#mEWp3^iD}uQ>hHK3mFxmAGiSwAU?N_hF~BZ z{*?Lw?xi+GyYTJxz=-Hqs=Hs>`{Wak4fNCeM3Mo_m~0lAq6@))#f_@2>83%iIB4tu zjy2WGwrGEM+DD(UxwGe}GWz)kZolEC<0nqs_Nv=e9lc8oB5CaSvHV?)iry; zHdAse*_ARXfDU0<*0}NQj$86Vk2oEt_jjk+Gid051$@^A*hqrP z-?ig$9^K!4lt$@KK~O3GLj;8OX@fYiu26^5T`%oAymKeew^FGbJa}sR?(LmDoy>vW zbz!zcEoRa(*&$Gong%z5LeK?*P^c{=x)p@mlK>!APxigG5&V_?+O1*{0NK{o)=-zx z4deOepNA^B@WKn{&z}zs0%)+T3b=dhvB#iFU=Yk&v2dQWh6w5$wX?W2#B3+wa=8?U`q{S8d!vl8>VR zV&wn^A71R~;?zyw0YX#L(6lI-DOxQDo}Npq2M||uBP~^z5@ZACp<{dWftLu4zvj}* zE?BsL%M(`w&jSMp1kXP6)K7l?03yNP`H@=~DQS^Q^VI2bu?!0jwgx%N;AQXb-A_IB zjOzx5PPIl{xl&H%X`+>QEd_e>qM)WRYN2Z?Ql?A;DLpTyDP1wEYi#({{oR=lx0*NU zbI&~U+|$qct|OuOxZ7PRmpzzbOh~5*bzpi{s>%ND$dcwFz(Ge45oGLzg+tdci#Y7qkqta!%obD6EySrS#D&rBmvH6 zs!+dt*(#VO=l6Gq%TDnCbjX44M#WSUj?(aTIqx9cI|5F3#mzW zZ=oy;1KnpJFD;dBZEG9fTHDsz{ED0JEYvp)^mba6vXshY3k@)zmMogj?4gXQxUt?p zG{l5Rpr$is&70TJmhC#%t171FxJ(GA&tEWp`uqzQE{dz&W1BLX7@s{mAjqPe&V_zF zZpPH99W}+?UfT@>L0400L69bl9dql=*DYDP4E9lPe=m)c#G;Z)tz0nwnk`q)S+q=6 zwC>YK&})pGZq(FIpEYmws?~m_m^T$Uq`Bg#R3xf#tWBRcZ$f+HK+ieP^=LAMVIu#@ z9c{PWeB+$?^UxarOHm}~shTlk#!P6gYj172{`ObbH#LR!Ul1HC<-9nG@t49Hf_23(Vu;5+0qMs^1ur~ z&8s&qd;HOdN{)QhRaZX$=#S5K^}DfJTd2Kg@#G!5c64^xG`B&ZiGFzEVVv;64s?m! zvWpf=Y+&EMz4;ui;Y;={no5r7vk3m-37#IA-jty}gzkKU(b4gXU;HBEOIrfz zlb7zJG)n(JCo+yn6GOQpNFnat5YGNd2jt-<0p=zC(R&gDwUT^qmg4)hj|BAJxnH}) zSp6i(1{h7tiSa}zF&K)zP5eh z```Wszj*d|@8F$pe%tc-Q{lX%(&;FoZ;iQ|5dfYw#X$Dy6b);Ou@*#vS1!XH=@cy5UQF}Vv}0&g zjR}UD${8{XfthN)b=utby#39(5cHPpn_u6!;>>6)@tm~UHnVZ!2mj^+ zR8D6pN!eWQkgK{l=?rzTwLLzEkxr6W4FPNnma!B_gAlGw1*H zJKxpab>>`8@7vz~t{Ky&YNk?-Q?Iz=^>^HO?X6ok9XoY;>9XaozV`A0L>IeWay1re4 zr>{?6Jb&GWIe|mf1pBYZmz576d)r6eC%L(7+PV758!lSClw5RCTD0Q)kKX+LhJ%NW zpGseR)w@?NnT$uIh#Ie{nLBHqE~%r&j+;AsdX-W_You8Nz6O3~%w4{A`4ZkDEaPDJ zDAAgcV?Xur4=F+E#ObyV-S+9l3uX&~SF-)9Z+QP_K7Px_3s`*jzC#-}Y+Sxz zep2Bgx@=jFhAsx+#beC(N0$_gSh{2;qdMmRb*U*dG-i7X9+xWbDdxIPHw9*4?2IX{ zB4@k1MZ09Ew7wBm5OPE>jVQXPCEB{vD)n89mbWp5Ql#zwHQIB>HEYVF@$%&NfAaNj z{qQHB{rnx1CXMHUlEekHPcz8`ozF+hL51RBn1z7ko8Ei%Q&0S&tI%C=?I0JR9n!)` z7-h1{$)3iE23lAkaE|H51+hYLil*RlqehHAdh}?qSgfe1aM@}a`0nuU!O{Q?&;Y$z zdShsZ1x>4&-(tLWHpa-yG-r#<1X6Z5l5+V{c~l2}Kuf@0P!xUW(Ba3A9{u{)zy8Yy z9{R6eJTPYDNLp=dxf?cJ`r@-sz3}vtzrO#0pWgS&*Trk6z-tkDUC!&#sO4BNM8Gg~ z1jTDN60ky01b7)G*Ni4oP65sX-`mxl>*?ugIitoCV9<60O%tr{zD#eXwk*}s&_X2_ z1t?rYXQmTvvLV|=Gw^&`kCZ4sfBnXz2lxH>2S0!GzWaarU%#9(eiZNk?)#NjZ{E9m z=l8$!?Fa6A@X2RhxM1~i*WrfL4LZu=yKjAE$ICB1ckJM<)|Mv6^;vv(*K^Ff?)vig zzx#t9{`lvM=gq2!({v;Xyt72{WsnE z%U}HB@n8Su$N%xu|N8kaF1>gIOdkurCJZ`7U2*>EY(DqB?|tt-e)wajWGBi~h7Qy( z!SzyQ3Zm_LY}Ui{+o&prF}Gxy(j-@p9Jzii&T*)kz3EpPj_Wq#?df4cwPpFjBU0~6|pMv<0f z9es7zcfS80t?eBTKlrP!eeL^)jvV3@8X4vl6;dsjUP4ox0y1?)L2xbq*=K(DqaXb6 z`RAYi#V>z#_cy=y*b^_oFO*>SkngBP%aT4vFRJ5Y{wQ3@z3`GNT3eg$x%)rA^SvKD z@z_(-Cr+>m030b%QT3lc`r!-DKmW+D9)0Q6-Sg*8!&B+*%;`f%|Ml}^?36AWb z!9&vBosU2E%wxa)?YF-9ZCMDAj#+YGI+wB;6a<~gp%)&o19(X@G$U@7@?|j%sg0jD zeaO)2Os<4VA3AJUy1Qe`^UqG7J&V_rn%XMQwj8^Z%VqRfT$5#>x@DT8q@fmRVLZ=i zDh-&cIxKjY-e~)R%yaRWo=7G?ch{G$yym)=_O2_gxGWaaVYx~IE&8C%alyAD=8Lpo zUslx1FTcFu_@Qmvp68rGRc(!#gB`%hB99i!QD}$&t~wjJKvrlWIZ2mM(etKG&u3tM zbcY@SG(`BWjkzKNG(ZFNrs<7)4tf{5S!h1@yoGq}&}D?_=ZM~b(v;<%-gLxWG z_jGo3bRIo^yeCaI#qY&yudmm1y?#Xfv_%Wzu}E2YMSr|@pckoJPnOgYy^2PTzOKb1 zk$6vUYo^#2IJAjw)KDbB&!@BSGp0?OGI;2acrrDA{(R2P!`aCDT*maL&Ym*3EY@4{ zCeNM~QMhCjUIv$ke+B&_1|m~B(0H`AskdkJ$Prs#euW%hF8JNA?*G<3Kg1yfRm^88 zzB~LE$9_}s-9=qLcI=3v>%)f+rZT~^D&(pv%EQe)M3Hj<)HG~@ituz*u^cBBt$b2c4|=nk!fqkLf(f)(Eh zvaPM<<>eILJxk~5Bzd{`a&wtHlERrn9%<2gnXzL=@7lc=36`f)kNo=KJMa1`9oN@C z^y42r_0+SqwY6(5*+}u-O% zj#KiAot+(mASRP3qz{4xjP_-k9=a)vCrweDz`FbHZ~gL@_a8poQ7k%7KmBx7Rn>?Q zBP2;eB6tM3qy2=F-O#(^@%W@klhEw*y}e)${G;#3B%{CMv)5QfhrMN23~CG|6I}y8 zhYb0n`0lKbp#mA80UDq;OK%MA=v`qq2EE02?VLwjy8y!_+Pu?8_mxB;o=Tw;n~ozI z5hzh8Qy1>rzo+JXiQ|YsMoGtOYz!u9a^S8UOVqc4Xr#Gr!8naPlFH7dkrT~ z+m>HZ8BfHdNUR*Nx%&JSLx$E+c>{6f%9Y!+6cLQ(=i1}^LoTFS+s9l8?-8l=Q|67lEf@?18AoKi8<*E?+Z@ENn` z3>h+5l7-#-_Crti_7cy?0vfivs|&|C2=%PU;=5axXOe$L?SSID!w3t9SUA6QBuu2Zaq4tqI?dv{YqF-v6yN=V3s`)2?QDE^8&K5Ld@2dk!g0vr zF>P9aP4V3`Q2MAr*b)5}1x-6wXv4SwCWRy^sw9JF7S#lNDgx)bF~b12x=MV~zz@CR zM_Y;7re)hMS{Y10UD2b1s%2ShY(AxHTu)z@e)fG(&++5cqetKK-Fx11!wr??WzEfv z<>ghVf>LjhQ`Ayl51|^ZHXszoC#J*6h9%;wic)0zwE<#eT{Z?$eD{{qtx=s*elNbe zFY>R&cP}d|E0l^uhbA-Wbn#q#ceZmJ5|;&tStL2L`R)|o9foX3D#drd@qM?1@!h}p z#V^jDF$t%s1#n!=uwiIIw(ZkeOEieH@!iLc9cyUfeLsE^@!d65E>D(KRaL;UJU3g> zaczyp=jhm_?SH_YclhYxefv&USL?_SHa$=r>4*IqHG*13a|(k!0_K-3TL!Zd{p%CA zf9m$n-8p{TxQ&-yGGo?Eck#Dj^v&Dkl*P9(R zdRQjs7IMY0VXqir})t`dAE@Dy^&>4x6d)1^mZZQT}Uo1&r3nLPo>Nd8cv zkT04vzrFA#;=8Bw9?Cy|-kjm}BO6Xpe0L|EflFR2hol99uBBgr>lCx_O5p{8 zp|Y|Vs?pFj*j4}hFJJ!lx4(7IJ@@R`y)RAUvRrNbaL2Mc+uP%@C@R3QZD>qN%5_7B ziD_~oQlqrDD{}H(&j#}~RWy@4SM>7vv>!P0=FZFJigvDV-32RoPC|ueGJUx7Kkxn7 z=RWs^yYIgH>tFlYYw_JRC6-9`pjraJ9tZ2JKfXIyrhQ=i%Bt!RQxsLrdb|7b5H_m=s$(|!AaLAhBoU2~Ls+s4`L1?YB*W@QWldVv zpzHFg74uUmg^#ChxZ#FJ9)0v9pZerazWXf}-`%E{Lr5r$@2<-5MW8?3@FC^L6pv?Od+5rV4llvp_B{`-AxI94}g7odujI1Iy*mRi~rVPwnP7ULT835f!=?M@!H9AVNhhj zKcdS#Ck7E!D%!406Y@B}RD=>o$7U`aG`^x6D#dHJk+b#eGf%HR{{ng`XqlJ3WApoO zdVRchQKR?u^sb!}CMPM3*FLklN);t_&6+jGPaHdaIs=~={^h=X`*5}K)aji&cV4#f zLiR#hzWCBBjvUz2aIB%Tv*(4EU%lbFcU4l*YI>)OTnJETOEqYFl31y|?f9`H%a*UK zsfyte3-5k4t!C!?PrbgyPuDdq}u-~&|8{DI4EQ#uY+q7`W(#lHMWL#Ur$poz<7=FbxR@(ujvqg|c=0ktGGdjf!FAPT zWffc?T9(t<*}h=Gf_NE~k zQ*)fEi&lf984Bbj2Y_~2)qH{W(IZ!!)^qcmB9|xPz!fk~cu35GEuS;(s2=U<$-u4y zbfyw<7zfP_C+9C%5{tq&4lX!<<+5eV&5|2rGJ|Sr+q=3^oU%ccE0!-!XK7Cy1US3{~PKu_CZ&Wm_f8vMZ z4jw!Ra|GS$>8GE5?y<+B(ddpnyZ4_wf=guRC!(C=n?9^>fp#H;L15Y2U!u1>s;b5! zk+bpL`w<-}vk{R28lVAs)AYuR-*TnGTaVXH&;&Py?Yo9w4yVBLg>tGJR#Rc{yI4j$V7(GOfVe*DNq>(0e%KVea7eBI#M z?%uwD7gS9STnomA=LoGGXO_&Fuxizs1?O$3A35TY`+wBg)mmLQa`QXi_2gp@9X)cC zEE8T_vS3bAOPiY*v})DLozFbn*w|PUj9k93c2G`a;_TbM>oIGO(enV4pe|-1JGe*Ce`0m%n4mGynokLSYbe9$FYi@cm9%eVf+eT{HNc^_>>l;R8K%o2tCkt4euM+INBNhxYrjtm`Im+Lxn^2kwe3s{3` z6QEXDeD@Kx#;Y&yC|MjlQJ5#KJ)J8SFIco_(FGLWeejb{{N~`XQxxBQ(-U%Y6^{H4olYib_8{}<_O-f{Ug>n>v>@!QH0bAPN2P-G>i}O8$X;+w-Pt!;W+)*5WmnY?wKH>f9wOSbX=LTVC8@ zI=-Z;uB?>OX+H2Ji8rEg+j7w+yL)@*Oc{6Kx^>fL&l^%VO>NEY zJv(;o+K;A11}-&oUQtBPV|z2u-iwYROY`Q>o;Pp7w5iiqtXR2w_wFrQw!o#n=9+6h z^q~)pA3y&2=bwjJAL23kJMb7kJ=axIso67TZhQKfuAa_VEVBIkl^?wI);V+Lz3|kt zs;CuclYAPFDVU|%<0s6RHhtv<7og4GfB*fht*uZUkw^sJ;lRKE4bcB`qTU1S1p?#4 zj?kOvJQO~|j zPuPx-tcb|w>3rVvC|N7uLZWIGE|dEH>Uc^BLvQ;c$g zKWnI-?(I2|hC>nMT#H^3bMRPWR<@6HvtGtorE<+a|NQfNxj3Aa&SU#EnajZYNtR1) zamljfLbUSfC;q4L-A^|+LKixg+1GlCYRFJ*QFltVmWztx;c7gY- z@gr+f$yisqccgL!&IPRpzO3BxCj7+!ax>%__9N9vSh zKATIkZSAVdtENw%2@mx6u|p@09_LV%fx)Tr)S-zZM;a_%mNm6LDRohNcQj5m%|h@d z4oeNHuGzi6AzLijK5H<3JdsM2CrYQ9yG2e$?R&h%8hxaG+&CxG+I^;tru}oAsc@d6 zb7nL(xIFGRbe*R80v0E8Mg$mDH>hUfn30i)zI)fJEWSH$`w<};SvzmCDoL*#K6R$? z_{Np9;P1Y)zlq8#$`I+O(ZhyRCr<9(RVZ+o05XVhf*L7{B=~G^R|W_}I{@e@ApGbd zRpZBw_LS(pg9ln0PtX>7z7i`-DaAJ6TGplb?p0E;yC-jnLO{{)*!v|xMqMa&2?cUQ z-jj6B<%f?M$z|Kx&U7JtPm(zaeyu%q;;>S?4E6d9(;gO#_c@nqbhIQ-K0o`}(*zv7zeJh{OClU$V8JhAi>pfmT z3N>{@owjz#bNXC+(^VVSU3%%hUHiWIPyZfxfr*A0)m*#4`R?$F%9*qf)NeR-`uOqV zp#ni7rfI@!A3*m3`rl8aflrS`b`iydDrXBOTslQJq(T+~G6fYyQ3Bdz)RGls&r`7i z-=m$kARQZj3%6+ba@%Jibhz@85L#SJ#gH85*MjwSOdPS$|i4cmZ=1mEO7-6 zHi}2F-l3gkH4sF>Gkw}g9Ccw!fg^!u$`$CValWYs4%HOp%jwCg&wT2WJGVUb$fJ+B ztZG$!WQs3tp<-csNrJ&!mPz5a3EGV+&Mfj?E}RPoj*yNI%ZX}^BDlcb;sZAx(Fz3< zXct}~NN_zJHShZtgLb-^U8N-oo`;r%BIACKf^h*qBs4DG%4zhf8_+HUQI#{@h!i)? ztY>(f<>Lzp!{A6&C%Ze+u}C~$pcgT!#PhONa%IRw^eJYp=}V$0z?4AE1Liq}78(Fb z;i5`}pvYGU1e%6&p!Naie5jaXam$C7K(w0 zy7i>MMSE~X!G$4$h8MUZ8a9M4@+?OM>4-rIRqF|`DIJZos1y*EpddAH&fAu*!*~(_ z?R+#Dvtm#Q}n>T{s#v z+eV;KAXs*g90i!6i6aWzEEx%rga>GV{tpsqxwjeGUmK7|sz68DYYoKWQcyRBMthrf zqr)fgIbBqYNFs02tH;32(G`JH0eQ5H3@Tcb6j2jPn#vVPPXcj#@EqU+F4#+Y%GHOO zrafKY2|=e2N^^l0kGfDo6hRcv;gqL(zNTm;fI8Bo$e6U}I?c;Q;e1YkM}-noC>O#5 zK)Y>`cLk6LTqhQlOxw@XR<3@sveKl`=_mksZnTXmy)1=nDBd~k`yxT*)BH9TJBF^( z>~7)%62+bDKeB*g1q0!bEW1GaisrJ-4abYc0wG*LD2p^%Ay6hHMcdL-uz8tx09EjM z6}4Qod7I646M@<=Y-pr~=L1EL@S-HRw(ZbxsvwDq4D*OM5o90;Eowq7NQw&gk&dZ? zDPk;0?kQqv+kf$C@DU36SrT{81aYm5~V6Wy+X#HpNMB>d-_!+MHga-PDOQ&#Njg zbL}D^2_Ga!yaF|7NreeBj3kCUC_rrxICxZ2MHZG9m_eKZH32;I8a<%=$f_gx6S$)E zkR@2Bx8bl0B$;=8U=KP7TuXEkYMNvQ!Muc-=u=0bP&p(v>W9QSE>n7x9}^*35LKb9 zQlKE$u?-_)6AGfukc?SW89ajaD+?UG;bG(7_~1HPF7u%U1^rbG$X$16V|Sb*@key2 zM0>~K4#H{FvEY>A8gIl>t_K4uY&x_(K5{0W1ktxm2o@?rkTu#i-w#kmN`T~w502>v z)q^ZXB5^bz9`-M43fA#W{izJl0R3Mh>LjE~&`Vg~puRwz4T^=iVfg)K2ju^H(5^*w zmj!o(FYX31CnE{7yj-z;&jx@}_vZCzxmC(h^b&`I+W`mABMn2~4R&;z5+}%t?f~w9 zFodC`B1J(mB9Rh>3?WF76@^BZeV;4^K{jbyOHcAh>k}j(8}J_%52}rvHcnL~f>0=L zs9L)Om1#nQ!v#Us0cXO4CWS;ONY5b~+810Dz#ER~w+~n*Ug!tJ9Hvdzn8g*|0<8v+ z@f3hBm}gbO%Sv~5ce<~K3dt%JAJi!7N|F`Q@{}HdJ$x!&)dDWcc{Xq6;R&H42rEb< zk~c@U5h6OMNt9Agmh*ySmx@S`FwgTeiF_o&MFL=kmoS=Wn_iMi*h&}&%=?$bh$?yz zH0&YVj&ew3CRCIq@{aA4oEV&9kE12ffJ}-{3do=!YSbK&68wIFLfqroNHj_|72Efn zgqiX=j`FJdbz6&4^@f-I5<0CAH3;7Lfo;=Bl%mvROQy6lftU?iyY^n74ixc4C zHE73uls)|zpaJ?nN&R}GU!~9y>-BF1+Sy}&1p+|kONOQqy8sk}1})K>%M$USBSs}^ zs=%TqiiLa{C4%xSD_5Z%9M@v;B0=Ph6-^J$E$y|!mfTWOj6B~f1bi~ZB3Q)&6DD*aoH{OM09jS|zM3XMwLvXWbP&>J zOc{Y($G5Gs{s@^EHuy+l)m-35G}S8P0f1~2fRYc( z1@MJ+19-tF+|ai_D~P6|Is&_hcnyi1TS*|;1|=%1QwdtJR>zCqc8yk5>^~I z24Vud$(|s?$c0Dkz`3VEdbWUr zvIN|W*>gsX8;?qa`G;nfM=d)h9;YlIVDJQq(Te~|m3lL>aBa^jxn_|@1n?UtSv!A? zPzqXXLT|*UPoKVM(IQSEqY6LE6PhG)imV8HA^qpG;R9arbCC!d{K~%&)@ZV-%TGr)Qr@DS#Zh01yltg5cD!j ziKezo3J@K9D6)!sNINlf@f^6Co{=iseD&thbv3Q6XDmVXTu+3PfyY%DC`zO9crw(g z^ahmlvLMNUq)wkR`XZEE`jU9FHvRK1>~B9svgI1Ty$L{ zcmV3k3cN87kOsGuX=d>3GRIqy=!GNXsVK7RdeDHxzvqByXm2ADqogRhxd6L_V4jK^ zDD)s#f(xlYUwRa=BT{?G<|`+bn`e%-lmyNJ^CSrhgAa~kwS$)}U$%bLd4~?|Cp8Y~ z0W57VPy32+Fi}uYN}CKjz#x@CK$Y;mz|&$qq!5aiVLx3aZed^HF;_{|4f*`1ZrQNz zf`#XufANNk8V)j%@+DB-8*w8`=rM5+y+&S%K>vxE3652%lXce?5>W%n4KK zKFl$|Dm5w?F#!q6LMkx+=(Pzl#xZ#1c+b-n-Lx%=ExCh&V-thLHM9TsvuA&Q$NkjUY zuKIxpr<4le`=}A%mZXFuIQ@R6Pfvl1un6>@+5?j(efxf8P4%qVb6ZZg06{^%zIJxB zqhV^A!CDBOVIv}xJ2eKBG7>Rp^BHO`?88h7N(Yq+r`)zA&QoEx$sEP-ql)9eM>MLR zw|wP8zkW>8j63f5tn8Hz9y%dwa?wKD_mLoK70s+>Q0*00UUlB$C5I0kES4ZwYE-DO zBJH&tph=Q3^Krv;B;Q6A9*FE*S$9xJ#!^uKK;A9wC3Ply}kD-ox!eg2= z$IhT%0PJxLXjkY>1l2dvq%S7u@Bn7-*%Q>@pm@Sdtk?rIK>sHR9fI`;sDQJ5Bh=OC z@T`CQ?RxEu;0PL;p{W!fbL!Non#AArxjU}E;l`#@r{4YUciXmAG7HdtBS(y;l0q5# z@b~B?BUGwKQ}!9-ICdyLY^W}5$E0z7CJ-$GtwayPBUEI=^-8^&90d|3Jx~SfLRA1 zLMPFxFd9V&xrJH_-5OBnxZoSi<1abv%&806E|pk-RHoP903ltRw`~_b8%zNOz^}1Q z!Juvl^aQp`5L11=FsN>5MKXqqgp^1W_mpf65YKU$Os1i!dFz(vdwTPD3dkzUVz}W+ zB%+6Fp^3l}eTYLSV-x{?GB5=!!{>$-K@Kc|7+)xqG(!eI5a84)Gh~Io^Yfp6_q%S` zzHR5`cU* zz|kgOpC<2F%urKewDKLoL5nwSGit{5tB6jc~?04YFrXd6^tJopXZ zl)^eW8(SC;(R2949%DoTL+d2;ojQ49S5NohBS*t41sW3)P#4q~2nEp>X{ZE7Xg-@W zOP1?UO9V#hI=vnuay|F#&a!B;XPXs0imwqPMxf33u)1h-Iy>~C3nfR@6-kjHL*O^g zboKPT^78gAFFxPbOY!U_S%u|<8php`h>A)_>%y}#uSw*ogFPx~$uvid7}?p`(bHqX zFrqb*0q>H{0r^qHWRwC#4VD@+?KMf|B14vqy`WsoiKl|FvQXD#M68E&_6!Io&)zsd z12jNy8@<-u{?ZhUsKAQ?MP#?(l&oI8`b^8|#)h2T*LU#n(Ym_2%2cYlvND&;wY0RL ztH+``#Vuj}!RzC->v}i^Oki(j`?U%53eK2?5?h@M0Fh)_i^WwI+gcIi2<=OaH0X6X z#TJ2+(*G#5cRo+AzB$RaiqLkvth9Az(|s9Wm1Zb~l8qa1KFapPfooDKF$8AXNM;*} zz?(5BDi_@O?pQr-GXy6?x)Gh(n z;ML(5dF{~VyePt&px=(0PG{2HwDk&-RwD7x{|5g^Jh04tJ9lo~x&t>#i6m_t3d~^O z1CUl(0w7w?&o-n3iLwmF!hJyicn*2tB^pZ)0zDc>-o+BmSe&S>UcIK}OmjnHr)yf< zx9^%TVceh^T23LWQ5ZKs96&`#^10}Lf?y<*C^-(nu*`Neq7r)S4LX~f4FY5uaYNH7 zJ~;_1;Ed|pFeE=k^=1W#s7yElTP=W+!wwKRC$J75JG^JlUfhvPL;;$1iOEHh6-_tc zo#y+YR|J0$s3ONJB2-aKwk5~1Jc2+x!Vr^7mPN^vrMKQPP3z}qaiGrj@CN}1fynGe z@O-vKzMj}AJ!;g}*6!Q4k87mWFk3#{`{?5x1yVXOq1@>WLV_= z^@aY3j6#6NQzTGEX#C+Dchr8k!OrUmrFczZXMenQW`G80fZkU6>kY^Q#+YIkfn$-X znoBorxbOSl=u79|ku^6oZQrsrpD%S~bC+Fl$(~oYPMJLJ!cA93C|-MSn&Pzs5%n3< zCa+n&YVmo?yuj<}Y7GEfQ1*f}ecI$pF1hHu6|2DVnNz30mMF*O&z;-babnNjMm1JZ zKVn2}nN%!hN)8-K748$83`8JDZ!`Hoj>KoqUogDBe(|COb}?I9nFLgvKHY9Po*s)2 z88-adcU&`V$`m-MUERI3cNbtn6$jM~8#jJTUvKA#5%m?7HMwFQU;(`*$r=m>LLylr zz~lKrwN=Sv5-wF$)u5rnhjsV$jvX^D9*_6+bVG-a8a?K!E3cY5eYz;{-CbQwJA0}o z)(tKnGk)xu&fXCt>xT@kX`@gm>ax`aRn>2k^MMa{w^9;OL@?#^Z+F`>+ z)&~wnG_10+CL+1M zQz+7VS14y*5Cz+`M2RNt^P&`~9Cpd33-A5m*D~p}s3e;j8}{vZx~tPHdOSc%lz{OB z?2vqjp&l$2UKl@N%-U5emMmWh+a=T0<^WkBbWxr>b;?B>FP<@L4&XD>b{b}q95L!g zjhj7V*8GKw&UANdTEBM0pxRTXT0AXMJ7mbP%H-(!;Wu7?6QH%JwE?(TmJ&)7R6R0d z#;jD8*wNWpGHLarBJ&j%e78&_`FFK^iqHAKttO?s;zj2%B>!`cgG&6o-QINhDL z;iAHKH}txp)uToYYdzC3e!}>&^6I`!&LZp0QY2~7;zh}_GRp$&mVmLSAV`Rr3g{?k zxm09)`XP#W&*R37uBoZnx@D^tG2l~=9Xn1{H8f(#W^i5I;Ne3!kuT;<7zv9P&A95y zOQ+9Rpc&D=zBclaeR#1Uqf zVGTtSix(_7ef;3~aicEV{7zXj+FP1j%Z{ai$iuTqmSouu1$Du1ZK2M_=wG~xU#*KUOsi$y%vL;r_+tVgbzHHM)a~IBo zLg?-3glX>iGy`<@l<}K3UO0RHGEq_c+FN|rqxyySj~YTBfq_EuAWH&&Lz4)yqSyNU z0z-}UzuThfVW1??U6vrJDf;kHWA6Igr#Z(oi`Iv3{n*s0Q;}vOl`w7Z$}28ecHW|!KXmhr z?|bje8B=KIa8v=?Sw=Gu1@O5*0tH*UOmeMIBu&6+!J=3KBb zqJGd9?)YS>n9r8D4}SRenNuc1WM#=H^yfuaUpsHbs+(`Q@iVu7Way}oRApYS)O{w< zD{~yTYQrTrz3=+={X5HW8X}||Bda!CxNP|n4W7JXa-vso#YGov{LF11Ub|w+u6+lu zc;^ip)~};h#A_=r*s%Gc)mBeytg7y+8$S4n58rI(Tw->^UvV)?SM2gB;J1+)JAeAh^)vJsEk)o03DwBi zWn5C_GzHT$wXIsTnD+%jXzIEgE%hFU0<)?Kt|!J=ii z-~P$>-SGZtlO}pr38q!R`2h9x8!r05``)i9IvPIA9m@?+3(=_RdL==mU1`xD(8$AH zA+ZgCS1eok=)=E;XKNO6xOCMuSC1Y$iuGL$Onm4=H}`gTX=2$W7hQSjrt|mh+0t~l z;hIfXEnPBQqac3BLf&}!rX@=kT=(vGeBtwVj2u;;DF(bG05k*3)#Byr)~$Q^!3WTF z6+v*)H0|`Nt2d9HIQiJAo@Fc7efau!p&#b*MUHl=Nlss|bk%taq5>!QfhY@kPgs1x z2DFEDE0&#Z4d%_?aK*Z%WlB-tEKYK1-vwFQbivAJ9=Sh?$9+BBtqqwx>!TmJwp2WJ z>P+*kANly|rAx?m6Jnz#&-}>yuUGxj>F(TnZvNyhF;tAu?USh@bCiIFg{9! zKQMLip(cZ0C=6^t@*i+SSN|HgiW;D%e~zH~{@`<#{_xHL8lb-$3SZ9=UcaH&Zu_pJ zt7hOd^|Xu{Iqo93+Z!*QzhM59Nt2c@TRvsVl=k*^xTM!ybIr14%Yb~#moHzvdiA(* zu^xBKv}UqAA|_I*bKU4HlaWl#L}xuUPU=Y2OF+rRbx zU;KRg&i(D3-Rmz{v-PEyIoVjUcww=(Jz^+}SFQcQ_rI6#>Bwds7v&UbUl$lUq*Rz4 zgcGjIH=OA>ezLK$EU|OT?|%N{dygD#a%sdnxpu>bwx-5!-+lLigNNX{tzNxq$BtL~ z(iu_Yr%szZe*Cyor%pZazynV{@wDf^pSy@(a&DaOg-M7kTHq-?jZW_x|!%kH31d z?ev-UHM2(V+5YUA3?u|`&?YKq0g^J!w+3a_EnK@h~5FLT}@%&pk18#HjrzPIa36lqplI6z8*_ z`QppF_jLDV*R5Z&ed|-A#o5SCE3X+|Syx?p?%4xqLaLk)y#&3Q@G~Q)kFAYpFZ}Km zoCll~UH>DW_{7V<`|XpDJ@v}A0|m$3v}V!sPd`i33psxN;zg@hu0C=6_&2})&6l>m zBui);41;(+olYM+c5Kg{J*ZGP-&Cm-`_)nunN8Hd2_hW8qD2FkIB{ZSW#xeb2f~RO zpjE3@p@lRyo$`G(Sy3^6{?u(Rz2X$r73VD}+08%y*^@_(G#uP}$cUAiPIY>&72xq=q9qazey)d^7`9WNQ@vEM((+`1vc+AL2SF z#PIOK>-hP-I|pch{_;dk4sG)7@Y)%+T1LO>4{qh3o0+4SeD7;lm}0q2Zp5*IuA_?ZfLeL$4n>V&%mfWl;jGRFz4f z>Wa#vM~{|DoTRE-pMU<2JMPHmi?(UnwhcY|$xnVVlgS)C1XS*yMTUZq7G`sL*-sin z1_k+imPM1StE;0CaXQD93We#@r=LE3S`<0Uwpv?T2M-=hK}&Ie5TsJ6QpvpUzF!E3(qJ#vI%!I1=WIix>j>ZEtQ>z#)V9BgVj4V5j?1iE6ey`761 zv8a*FW=kgRas%?ZJ3Bi%8k!oj1umXS!PqjQaWDz+t{YUlYtLR8ekO%L>22@q>gu7z za*CnhSy&OWOwqR}6*gBO5{aNfGua}L4fPV9k4B>uj1>-9sU)*u8`xo>T{|XEo_hPI z-ZOFRB&6`d3kMtrwp0`;A&aJ_rl0)eCt-L~bQ-V}u*k@8*-3gRCF2L*eSLk04jszo z@|^GP-Mbex6-BW@io&N7u}CzX%c7I9V5*$k*@Yh3*w~mYf@i<8tG%qOELT7xs5#n{ zY5fIjx9xbf5O6Xt)6{*DpD$Bmunx@NwRp_yNnZ&?-vX5}gF_1W}cmQf@Uq~F<| z4d(y~vI@Pas4`&h#TQ?!udiRYZ~^k9cN#v&#|fn%bASifM|sKC&~z|H?^D2hUmw7x zt*s3lMpFsk4Gw7Ub=RFVX%aF8oWmlqi^Z@YHry{S&{RUQhK2@IL`6kKB5o*#0g+yN z&8DhyEuGGud*|Y?CC>fycE_`iM);Cb>dW+YclFQ?JscO0kO71u&{Ra2wA7Gc@cM=X z)0XBI!tn-ZWeViA!_jo>502G8+`g*$|G((|z0U zbVv-QAr8V~g8%R!oE#oD?~riM=+UELyPP<2B0K|72jQTqstRyh$Yv%^9N*F2o=PRa z>W*DI-}TNdUPmWLm@w6`0%m{R*!5lyybHg zo1bx($xy&R)`$Lw=kl)LcGrvtiHbNs4>Gbd9JHF zJ#@&(tFOK)m5NtY4l2@SBbDrKzdv5Prcu21i2n4m&wcq{zxso3-*eyhzxU+to@s3> z;u3IIkfm^c5@^6>%a%gdJC+3{yJydy@Bi@U?d|PLmo9~2kj=T!gOo0<436Rt*nX|Q z+qMT!B%2*JY?uagppud*2Uw0AITAlbL4>UU?C7)2GdCYi|MSClkq1(T>Cuy}db36jSk7 zEFOWaU>4nIR1ec<^OngI^^q)#qWkK$?ce#{4^A9Ax_tTac#Ns6fD1BNE}umT4%=^q zY6BM_cF)fhXxna($OnLDRaNtu^sXJ-FTe8YA$6%K^XE>PG(m;$E0R}@+f15)*H5$) zA4jKsR4Ro_aMXB6mHb!AmOboQ>aL>2CefPI^ z?%ta%(rW(U!-qO{vAw+&HH(G;GZfNBYe!QF4`4mu8^>Ye0iQT?&R-8t;wKKqj~{>h z_;H+s<%fI1M_@4!<#I+W+TGm^38TdtiiW0CUe15}o(FIHr%2!@_$#JcY=H`692+at{RTP=UYadJ=l2huB*A6$c zRM>pud#=7_GZ;a#`}gl%yl81h7mX_{Sg_!dOD-8TY6Jkbx3{;Yr6p?czx?Gd0py!E zUry=^+%lyMmherR%W`b&np7dUk^ol#X1JKRT$Z9O^Wfe=Whdehm=V)wOodM$YIdl2 zE)W3xg#rON#X%RKnyHwc?`gUY^Md?l%7@%hq&jKRgiK%Wz61LwPMpZR{GczLX>4qs zGkf0PAvF@xpFW+^XPeElmls@TdlxLIQXx=vnq-Bf;gq+xx1rh|e)!=;GC61798^Fg zf-?AADgh;3vaE+rf#KEJ*~#Uy4?b{zJdyg`op)`#_`;Uc z%_Y-zJn|aB264;@7Cz(o`R&nX#MYx(sq&(kw|NGy6(Z)+* zVfJKtEUQ#rS>>=m@lL4(iw9*q*Rv7{g}Q(!;yg?Tv_qVfC5i}PWiqfxP?iz(Lr}jX z>W6jFYIFyz(Ga}n96orUWLjuD;i|*HD)|nz2Zr21Wo5Y@i>EVz2(vvJ88xE**pWjh z68gC&tD35oy4xF$9bK_v6-8j?xXqh4UwP$~C>qBHEvK3mEnZ4zIsclguRL%0%Bo5Y zP0nJ2H?+Od-!w4+yhgwOlbT`w;Q$TL-zmK@w8P~2y}pl;)O(hUQbb0yIkS^s~=IV(|~&bj$6x-;VSjdFWx73N#7M z^#|7uN+c3Y@FZ&bBZ{sKo56yS)OzOhu3dYse#bkis?uUtVSdfjTr46o#ho(sDtk2=1+Y3iy!~wC%^iYue`E#tIzY%I4}d8(rBte?@d^J z2{iBv5Bssl9z)7^-g)OoKJt;#qenme^wXIWzq&q+Vg$);-4}Q=-AAb13Nz=U>B<3Ikx`gP~;-n*xxJ12|e>&N3U zh!n;aY}0VW1q~Rr3GW$3%#a~NPzyMTd%~t3woeEL-yyo=^$qX6{!_PqYW;?_FK&4$m-DHqb3UFb z=JGz<01=7wWo+R0n)T}s9z2LfNw3ve?u7Az0CNqwUv>EvU;X;Otv!GB%iCT()t)7; z0#|~m7ob;qswTnv2Swshm%_senoRr27V_z~_6{{7R8}PB&Yp8{?;fv^(^MJ4Ejlm> z&=Boyue@A0r2dn)fAq^=`O2gT;~#nCQ4?u-RFCmg>fgTp&!7F`7tdR~_!qytzo!ok z0FMSnR6DoH!QU2zJ-wg6>bcJV4bcBKdgGw3fg-&1czFO9!ZDeAGwfMY+yi$JR#K~g^_MrbJs)jmNLAQH=utlCim5i=UWYWEzdD`nF z8d0G=X(~A9#zf9^QFfIx5}aw*46WgMn+h2k!A2Pa%C7Kgl}ODBMRq<-f0GoYDBGq6;H>CGi$pM=>^TU*`J-HJqj zERO399WtnX^f)nEd1&A6o~C1l#MwMo@HsJ()O9W2(H>8znXDxkNx$Tm*Hmc5&c1Zs zBvV99h&1}zYw?yRaM3bNGW8Kf&VJqp1iY zr$+QxEZ)`KYq7oaP`_bqf>Mm&D~CVNQE0ZFyAAg46<1vG#1l`nw6uh0fZu5L)XX?; z;lhR0HFeFW+YcPr7x+aRmYG^rFf&8y^hJvnT6w+s^r^jvw$s!zUx-8#g+kxx31g2R zY2-XRrP4GyEt$OR+UtM#Scq^Lz#(&Mp+(|z7~=M}Z89Xod9TaLlt ziB?zjboKJS8;dBp0-HnmcR)~I1L!_L|G!e`IMXsUwyQd8k)&MsHyzYfBCthT!Cxs} zJDz|80zNGtK+ABnlr57=j^$Boc3zNph3#jea)G6J@Vz)&&>i0ud50%QOy^ut;Y@+^ zP0{C6A%bfT&^N-1vc#vM*{L|96w?G+)XVFNp$LTxvNl;4zC|&%`~6W;{g6-y;jm`Fwa0cv4SynK z$PG6@L>}#wB9f?CXikAs{D5}qhApIss!b8hJv@Ocwgb`A#^?rT!C?lp=aD1?rHDFB z0(04Fd70B7x11hOtTWUF_+g8QIr@!6C5jL)dTt`ZXNxQzj(~FcDrdsRu;II_s%Mo1 zNpO61&cX$^UUzwGYimJFz%l*qzubA`(7}vDlK~~c3j?HxB2OVk!MITlsE#Rasbu&tKkfnx#< z5=g#{rp%@T z=MMgWVAJ7z*am?8b#-+B`!i?Gbar-zb{<^nbFb|I{P4qh9?b@|@4(uX0-Z*(DBe9M z1T?lTNVKI);K6PYc!4@0U|x|0!6x~PpE=W4qlb<*S?NyED@8TbAYZftF;?N_Gg3e? z-7StY0)?z@H$Q7_Gu?FEgE+%%Z0y3`N@DJ#dmcLN{T{GYPei7_HG36d|elFd7K@1xXcIa9gSoLDV$bg~+3g&+#|~oKX~d3m*6| ze*jw^nQAo0EfD21EvFifA3NS~a_6pnFTcF?z@EKu1F3+LKx@eW?+oTtSukP=tAyO( z<57rMWC!nDbuHX1sB$h>NT!mxY?|x_-vRR!EFS3yoD36zHlRiGbE(OS6oiMY#{Oww zNDM;vVI}esAemJ!+sOoH82=K57~#3yJGSKt#j?tz?XWoMKADLwZiO|*`w`utX&|Tw z*g>3c<2-6w<`lsZm>5wI)>grgiV`ZQ3le01ZGu%2HGZ<+P~wWBg!PA?z!lUl4xr_6 zjQ$gz2iTl#0|W-?bh^8{JD1B*t@{)g05{+g&;_>vT_TaF&GvPtIi#pzG7}*LUs2E+ zVI86sQ~s1TeN!_B!vrp@adh_fww!76DBPYO)g<`bC=^5!pnFp!e=}~#v1pR^gY#&M zJ#a?Ng0@5iGd?V&FgZ?9!EV?dP$^EEsz2ASk`CpJkpo62+M&2fCvuxKpt*|cgf<)*k+NoC&5uD za;83HStSpUq=XafKVdl$$%cN1hj1M|Xk^^RqLah8VG0CX3!19a7y@xi7687%5Bj!b?@BN}||#6d4_9phQf?hgos7t`FKAKLiT5%0n(}E*`D`*8y5lQdpKn zfjnXPIGr7x*?hKCa+(`Y;2uL)Y!Jgk=#EwlS$p8e(70leAe?m# zh>O@_k%2_oR*$+3%pg@lRpK717c>iM@IKtt*PKFBRjA*?OZ50z0_=$U<_d(~* zgTeuMTn!UZ***hE10S4WUZCIyfF{Nl*x>_7f?=WH5>B8fvWDt*!=06Ek`HSniWpc0 zTBJ^M(PNH9re9R!&5~0vi=OWRvWW?pd4>@n3lEh-vDV^=7&JhCd*G>F*Z@+X$Yk1r zjc^AZ@Mcl~7$_LNvbw5}&nvoy766+e7KxGwP|4@nlG)mH6puc5khn27EGOeY8 zyR566SrUDBNKI9&x(wRR%)6qjGH>3~c&S04W<_3`IO~2}0OO@J}6& zrV81fphwW@b+!&0o?^11jJNX8FfK#`okc}q&<^zA!wvG_x5JqQI>FI|Gs1#ydA1z5 zakh@U;BX?1Y69UcT^9j}=L(Ex(c5|2R+G+wMTm-+WP-u7p|XIc2Aq&v$U<8(?F{ut z$1oyrx8qt&9l@3W+r%KecH9JZXpjNMMc_wNnHC&!B88m|xI|e}b#h=D+2an%kmd&V z*H}emN>Rj;>6jK|LTV@yjUd!g;YM3@8*HnNN}|;Rh2pjZ(tb zGz<+MjtC<|i*c68`}W{LHPv;)GugCn5n5Y_sT$X_rNfqgX5n=`)%ZNrqfe2xZ z5s_%1VZjd*8ej<0f+SHSpV@E$9A{KBJ>my8je;`W%)_=3WkF{(>J?p^?v+I$u*nmq zz-0oOz9+yd7dh9gE|;x>3lZWrwnH)vG9Y(AJ4u)sM#vMwpgE!x85cm<&vU5Cq1GWA z9I(zp#P|psPyaw}_!ESmIL4Xq>VgFefbJa~9Y_l4lu9K?IV>-`4PS(llqd-Vgx>@n zKzp_q9<>-+<&Tzu($Z>miQZXwD6Fd~!j!4gM~|Cu@^l;L+J-753nZ_Z)>)6G|IJ3xECrg;EZyMpGkb z>NrP6mG76Ar)UpMwrH1CNO(Wp$?Ao23;p{rh1Z*O12jNyGm#D;bojf3cEA^))N-JP zDV0=R-IqS`;S1NFzijP=(`L*$e&krbR0tIP&bvM@+Lre1PA~) z4~R)2N$Bml2$jrB>>Vk?0{D(ljz+3-^EFqE8dBcY+H46l0#33(acMN%qj5-b)WDRl zqI5`iYmpf)r@PexnfvVy!k`}01n0pynb1w0c50JQ(eA%*?FtaUvuctfl`s; zo+BG*`~od>=77_VZNsmE#|&eLkcQ(GRkbY>oFf6prFG0uXVfsLJq0SoYbUHhBS_T^ zzU%gnu3x`);dv`Bx^P3|!B;!GGkFWZ?XY<5Xb;eUu)U}%!UhU);De0d3kjkeYE1aA zELJ_*6p08fKgxD?h@P&}{;3WM2Z*6GangvyY{yo0-ZFjH@kLl%H1Hloht{vZbmP?< z&u=(!sJpKOQBr_S!BjGSSAa2+jTwn&i!!ZWNB%Kcr&Qa){pL?pNre^l+*)1(CfOh=UGz~3;wFmS= zLWqzche#w!G34kUbx-7s1W0s}%w*z6WU?)bG|CS14bKOH@5Cb7dCOKj{OjMs^!)4{ zpOt*;;K5^>BEy`6MF`O;v3)h@bd!&6WFj@|~@t}MZ^712?s8bt~17OcRb6(ty*o~Eg&O{4-*qVdok z4lqJhjdr|wnV}3Bo(Hf;KNG`#O^KsNsgwe%j@JlmfX*d5Km+u)5%o<{xuNEyqqhw0?6JQV z6^d{K6#*`LfBf&@&d-1PJ=edlxvBNt*S*8C^FGDbl1Gjl3D6d343}O@Ly-c9X2ecfRwTVu_L!bv+u1LTT8xZ<^%d!ru)C0O6fDuEU~n6G5+n!ef#; z$s9Hb^ACL~^uz#Bs3d&B5eG*ojx6aw+`zRt+q6s*?z16tz<8=PFh|?Pah^l3`Y2uB zA2PTul}eGX39G?}nG#r*9qPDTCf(fFxMj0Rs$O(O6X0sZ*yyW8Qh^o$r44ySH!OzIpRzoD8=J zBp`7d<_zH%5m`|r5HC!hhCv}2)<%(gD5daO$P>4rW^s()HoY&vz2v%5s-N(wwMm&qyYrZ z4J`PsxH}MJ-OyB4a87W}&X9t84faqX5R`a02@7X%0O7Fi(@$ssOw|)q;|35;;wQc* zPoCV}-F^7*VRj?LNc;nCkZ*`XY=#!Z;^%V(vs7XQhFfXCuwYNHhROg5sTNJji<&5a zjWH0$Ye$Z_4U7>d;M{UFSz(J-==$JOwDoT;m0{fNp% zeIdL70yhi;_mm(_HlGeDAf2$5k>&ud576HW{q>+dY7qPsOGV!*aiXz$)w-55jSbDc zeSP`EhfdZFsV=XGC8}$4S+k|(H2QJOh!8%~TqM$I=z#c-jtcF^x;dOKStOmth~WhM zk#PMIdLX)bEEbC}RVgY8%n3RV#mY1$ZonU$0hHzoPCo)z7S7{pN4M3N^=KBFVR*%2 zzL0lacsY~=x;DB!I)A8Z=*>TTUzyhNhe`w|kubYTP!qCksBuG!K>bNH#4h+Az5dms zvM4GJTOt%o#ueH>oSrWcJMbXzPY@J^BCJxpb`)EHN=v8H(7B{jA<{?`Qh>pOd?5(S z^mgvtz4gVHkzj)2bGsf;leWX_N5_havXDu*k06K$-|*&(MH8M5j>E-TI4?@HfdP(- zB|=*iY4z&Wa6=m!PrIfGXrC})!l3FX07=#~7O!3CADd;fF+rrcWG(>XpGjHLmaxMAR&!yP!Hx!rqfBd_~SS&M-K1W zyT|9bM3VM_$=l2~g+ZgLrd5Q|1=|Yd0g#lQkyWFjBFdKRBLRm6Y-h)Wd-y6VBl+Mr zNq~Vg6g`ODL%YRg&_l2 z*C0_dqN-u;ekfDA8(9O2JrC#|#%rgs`#*@+u1Yk1OfP*rFo*`QZ{Plxw{Atti6jyL zd;l104?@@;6139;=aR8Q;)IKi2T^5nUl*_4F2SCKe{AS#zu5un0bK(`4T<8l>;2_N z-+}#tqN3fO-8ABDp>twKFQAUVi#U)s2ul3W{_akN*^!FoH z|42Tx*>FDyjYmSkSX)Jnu$L)eI|=*s01eRJ0sZv`UmbA5>E=dgE?!B z$uzzP1xUl`qEEBSg;;FLyd||GM=e=2pUZa*D%X+;y`iPs@pvhk7&D~i-S4<+($wit z#ogUq(5MiMs%mw0gU5{<)7#TGV&w43%F03^50wFj4Bm3+&>($yP$==B+B#@VSv9Mx z%LmogtBRgXs)=OWF$2rC$Bi9x;l&qEojD877TQihU%@;P)JVn95#z><&9pU*t{*yh z$dHb71~$Qp3oh^q-TU_)3M6sL^yxJf@t&?$%b~f6qOJ`cHneU~bvD~$(z^sMk}MxP zc6>xrCr=oA`Q=v)8&-d4{~q9qku0-JYxcCMH(Y<+&=F%gIy$CI7+HdRSX@4Mlc;}` zMUr3#KukicV#uW%H~r*C-^%p$$Xcwqp>f}UY!x`^?QVBy$}tTMOq)7+)5eRZ&zdVrVsFP8&v8{FK78cZS+nOZTC~74 zOBbwOHmZKesZ-4kuaMXScgnew2UdwI(aEyl)3n44cee$s|@=g*%uO;hELzKm^`0?s!gdezY3^`l32 zoIW*W!r034id-gLGELWU6`n^~zhR7Yl36KDi!EyK#$bq`XF)(24*s(P= zHGp1Nd+_|mjT;B3=<7@4p}}=Sh7KDdh(aM}BB@1-W?gyZr8B3`iBP=uP81wHP&Xoj zhYTJuvcA2&W8#FdwUr6e%)6ZAQAiw$NRP%`TT}D9XJ1fM4d&qDh4Y(F9GNg~^c7cM ztEiFoGmW0(L}T$H?dU8{nm(9Hz2upux4M$MR$} zk%$)^T2DD?Z2iWIHcXm1A4Y$s^9&g{Xq&1rq;Bx|v1sI7BSwrEGI(%rU$5)AYc5!0 z7K?lL?2jc3c7BLevPxzN?Q`LRg_|~QTC#Mpu4~=h-J!jON<@{N!}tLjptqB##Y1NT zf$?ESFi+|HUwA+sJr*$kR^qiIPe7>Uf^v~|hyb?@AK6_q-gEE_uf^S6D#NuN2|(s%WHKD==1WP|f{Ek1hO#1G&6 z9?tA(J9Y9yx7<8`@p-(W`L^BG(N#WZIP}5g8`t0PuFY+&EwZA4Gcj-}c8jQTk_K1; zfA~NJCn~GPO`n^rtgRn5XwJ0p73E1{TZs-IHSVrEKEqq4U9fJYc3-jK~&SiRio9+;7yIh4O-BS zYEIORpZ58W-xB4lBQ0I;``D+~E}0v~Yacgd#)octA1uk%taanfA6-0ce3{5a6V)I6 z+`p-1Lr0FA@{f0Yrr6cEVcGO46GtNZ)!wV_l9qIV0fX5k!~!i zp^W%R1!C^vbc8~ofJ;|jef5|zW2iH7MkH1H!CPgiGB@{JU) zeZ{^#&ovxry8M!>mn@yC!rSBp%M~xW{L+QzE%?9(uK&#KpBz4FY=DR!>4kDUH4eI;WLSU$AV=(s?P)m0TFL zQo$9MT(IE|ir2oRJLgT9I{&>_Z>m-}pBCn!CJjzDHeRsu*+=d-Xv1K&H|-6bGUwyB z-e_lAnwn34=p&z4wR8!o3?Vvt>fDcg;5ywaHuvPOzxm@U7tAoIFOzzS8VUs1FCCH_ zi6ta}G$ezAKhPVxrpWO2aWjr(UXy9Sjy`ORjcvLt81Y2);2~FE`>ulJTz&03FTeVl zd?CAj6|C`D#iBiQ+{AzQ?8kUBleW0`f8^7%CQm?Hj-{$xN4VnhtCpX4-p#kX|MpMa zHfqFh8ZqO!?%s4%(vjV!%dc3sX%p}B*>s<*D)Sf3M_1jyZ_mDcdp2y?uxQaDIQoWR zpnlJd-we98H%g__Lk~TK z+b+KNV)OwxH_>Pmy|=Zs^~D!oq^&UtECiY~D{xxGF!M$9bzKw8Vm4+Z5=wcWo#kL& z!(ZgNSY5Scmk#Ye@YS!}-QlN>pKiYSx@FZha(j=n;gU;UeD;YKo_?aKXgHj5{X5>V zd;6ZE8`cw*6-Z2Kj4M3va-IO&Up*x&zw5-d*8hq$~Rkp zXNye8b0jE&twHt*jpgTT`}wDz;dUL0NnU2xuU~%hrED12Rg27DxcH?PxBl?EKlEg| zwJW`G?i|TNgtI8_ME0bkUZhul%#EUmxxNG;0AOHBro*3zCKMgnN#L<6kOy_})*`hUm z%Gk`_V_*Kq&+j^!u~Av6YAq5kwVNxJ%{zbXy1PFAIVIpsk4u#qW~8>*mG3KBqpK5w zM=BDoi5M>%JbYB+(HDMn_jg*%=<$=MK6cZkPdxkdv5Yi#(Xyu={?A7rf1;Qeci_xx<`79$Zoo=}`DACIKcg-*yv;U##!W~n3^ z5zqFlVhIqdO1w;+MN}MZn1yi-?jg8K@Zj$5?(PJ4_XL*!!QBZ2cXtTVxVwAf&eT7% znLekty{P)S>Xmz+n@(#~e^Fot|L}TuFN`W>He<4bjnI!?z4n0$_| zz=YMhuS<@XTsLg13({jAo|TBpbhUVFZ9C5x6$|oce`OPHLq;Wkax-N!1>8@r2Doo_ zDhb`mm&Bi*oV1$HwmH;%H$zP)9p9L{nRx5Jmrr-6rnzEaBKW=$L4mT&1qL=|OlpV*p117YC>RP0r;3lIg=riWURLlU1euEk;-B&S>;n48IUF|sbq4_s`}pq#;;FfTy+6(1 ziT$_mO0QK%!PH9l4@X!^&Z89!)d7oL22-!V0hW3rcI0(EpJ}B*>snFf_!puaJ>Hk*9GW}y52l^1KAk9i>~?+cY-+5$oQcKbB<69V z&kpVk@%h5#&=*W0^#La7cH0@j_@SdP6k}af+G%xHmtr=g^f;CKzPFd-KZ2oadcVd4 zpyQPU@3^l%27Y3(jQ6n5QOPIBQ@eV+8VA80IcAr^zdgVhOX67=zUxITGRY#HS1F2b zcnnD2-ZojB5xZpiOH5n5PPjk7b$LBrZ5J2?F{6Bi;7}|jV!|b4?J%6BxTBD)T5C~B zg~>&(NK(0Na0P(tDZYsSg8Ih$@L{)+gm*@p@t(ny9$^hZb=bZq)P^Mlte<1|)bDk! z&$SBQ%_jGC-ch#P~_O`aR?{8k`AZ^Nwi36kP z#f|y-WzfR(QWj^cIwNcrX8|~;%Wz3`#CkDj9fE-d%_2u~(A|@r2ft04@Xr#GUL6h+ z)EHjHpVCt1`G*_tZOt?2BI+ZIkxY(hrj3stO=1V zpakVoKF{+KJltyJOt=}v6KoSlWp@oSPfo)Zy2`qe)T|;F!(*}!4wf> zsv6gVx+AGy^}234FLN*c<>_emxaV|?nu7cwxo>6|vVxvVd2p>q&rldKGCYprBc|i- zA)@c62JIe*q?B%l?YN?;#_2BBWWXyzcjXWApBG7L)*E}QuwM%`xW0XRJ5&nvDQSd0 z4s+#Wv}C9Hyx`eVq^Qdm|VprFE2gHK$T#*bNL> z@dT{epOggdurr2xi$*E4NlOz)&RW-EnN$$~O}4~&ZBtPs@dFIi@N*}uQGE23=_hH9zGqJLsb`b^ zh#r4&=5VshC)7c^L#i@NZey@IdC)?rq)Gs@;mg{x+7>32>DBO2iV!v=j^q}tA)h)V z2m52#wcJoXGGV5o2=g{7t+SwMkCLs80M_J#KRb9Om=$WS*iMHwbsVuX{WVPGu2hNm z^k_UTgJs$CpDNStvk2m3wM9xA71^;LC(7+DlzFA-g#pod5mLL{XXHT9DAg?viHfRf zf0NUN50wrNgV2DY2RfE<7k}a2g(g%HRX5x%RQLwefAus9Ip~krTlzC28Tsqezu|Xh z8F_@$r>9A3I@uDZKk2A(>=R`&S63*{v^Iz)|4TG6J{);JD%IvdrJxApG;F8ccUWOS zP45yk^v$sReghJ3I5vmonP&PTr>DZOx2RlI@au3(1Ao=?{@JcT+kuc{YYNn@j%VBr?qTv{D5+|EHNKv?9 zk~&|qbB|8Wg6#tOQ5NHgG!S`GAY%FBaglEw9L}q%q_N06O0^=y-=&+*vu_neLg3-P?|q>}iwRU{xMU3d38z+=kodLaKxVsB8N)e1NI#q+Z3xFmCW z%drDI#2f&QuD6hBx=r0_oK>toa?gVPb;wg`{cyi8 z8B3hXI#Io`(UyO=sP8YqMwO;9kB#ghp+V(aPSTJg7|w(Ohm>tlE4_DY1qgM!{qEp5 zpYHtuuVQldi-DaK7gMd*xvT}%J|^gv>hNnJUALx8ibT}n`x{9YfUTVn4t9z!DfI1v zr%puS8(zls+tH^MFxM7n8IrkPkA8}aYf7Y$+Ah7K-fcwwoDFX%s`S*gv@l=q2I>fX z@gU-NF&(>I&i?Z?$7V3OyugNR!p-qB0qL7H zTY@XUIn-y$YA}l+u10`@Hs;GWxC?_`x;Yer2EcbBP9WhH{s6~ea@qFt2f_7grF*VMefoIRmBeN;NpniZ`oA6CAB8rl1W=?t35NzRf?MKf+?u+=<$GP(=} zuviN`P8q$Q2yDI$32eR(Z5XuQ=peCjH3a-N1L8A4+AucQ)>+v!tBMIwhPO7YRJzcJ z@m_En5bMjt9;DWOoZjJUo?l)cz$=Yjz>Bphl|7=O*B%%mYzAC4t!j7Np90^YWDTm> zv{YD?#r^6F!5%^v;fz5bQ-#iyOzbndj}CWdWpim{{lDJEP;r@29NBHtKB2h9xceTp zy$7f}4P8ak{p)Zid8i-Up7&Kmt4-;|>t8mi@pY9v@zyqn*!`Ps4t5&*F^z2!p28h( zk)5JZqa9ygDLS`%qw4fC{sm(p#UM-8G45b|`P&&IjrzAVjZxRhcr(W=GF~B9@J8OZ z-NMI~+y+Muq+P+c>q?$0FHR2Dmhv28bv=@DT9%3>rprI$FrcDMjSBLllz2Px-HdQ> zUUy#<>83K1nP7>STMXUK-FTT*3Vfa|!|U-IfuOH$ZRPpG{~woewe-Iv8UYS#j<@D7 zHAIu1zj7j0688P!(f(zy*VoB&nfnjc?XMbnk2Yp+l&C3(PRAT=MSU5vs|oM^QT=f? zJ5?=~D=#H*Ck%RJHPK{w~hP+in8Gf7SB_ zG6xO{d#O@yUy$b49vk!TrrP7IxHSOTE0NCdrRr&ZJ|(4m?1ov}zaYQ7v$K#NRw>q_ zg3KCrr}xyNNx!!6d;nBf6TcYnq@ktq=@K|dGVd83ZlisNMr$)O8scgu;1vPlYTDsu z&vr&bzG1)z$G$tHlp)|BRYD8QLxEk=NmEoF-Qcfn zrzbT*3jKF}Ru8JJv(4`CHoZPr6&*CDF%D3O6h3JR>;ggHY0TArtBf zG}IUM{YHyP-mj$0M%h-~uoX&s0~WMtEm0Nbjk^ha^7H%XULAKDS1p}KcO=jmfQt>3 zX@i8!v62AWK275_pu?j{2KmkMp`QXrytd+1zr#bc8z7tl&`qVvOyIcS(SFQaDmbO|jZvzSlp8sTFfxFF!mEh2CZlxvKO&l0P1uu?R8F z;}>(LnzN3r9UL=x{dL(yke%`ef_;^RL!kU2=X*IRp|>+i?(c4~<*2>F+!Ze|LbkTv zJNHvG09VSn3IE-PbH_b-d0WKp?}7M8!3srzXLfBGfdUQ|;ngblok;w- z7cJmQEw{sAV~qz*;MIDFk|x6Sj0^xn!E|y-kTdebS1>qjo9TK`mNez?K-cUvdYvo( z#I9L)wO0aRTdHM8FHX|2@gM)dh;8uj_@yB#@N}%E(Cq)rPSSmTU-Le$Wf*Wg7=%}V z{p(8!WUHyN71UKIUJ!}XPL(MTpb~&wZH%<`T&pJ)PyBQ{J5^M#&pQmfo8u12J24P{ zM@sLJ@V0yaH4jO^-Xh1)>C3~0uOq+4{Uu`w0mC)w}ol))c(1XFp zu@Vpk-`M@A3)~+4WBp!tzaB2ke7t|P_!m50PTgwsxNJ68jCEc>gI0a<{ntelL-per z*E`C!x6O+kcx8|+YVmt(H?SIXb(m|cxH>8}uKClc_Dy`r?#6P8_pfJ7=9Ep_4{{v& z;Yjd_?y8};%}4@S^Jc(mTK9DdB9_kD+Xqm+qKi{}uIRh5b|&2)+jB)F5(!jv9H}$L zw{5W|4igo2%wx3A6kLM8x;@7ljz3?o=bKGi&^T9jMSfNZmT2_8Pq!im4Zs5fxLLq3 z-_csHysqOWlD2XE>9anT+|X|aVVzw<4@^{L1(5XZ-gbX%Y;3*dL`8L(WTgK|d8uZ# z{!{s?5I~?5guk)d?D8*DLqIYhEFqMKk+t}*htGM}1+Va^;QlHw_)*NkHWe%D^<&@9 z<|#=chxK-UozK@de#VkLMBC6{_`wY~no3KywIewy!)mvYAwusJXes0lv$>Q~v80qZ zi21#+J%lUjqP(08>VIMR31f4aJ6RY}uO=7rsLC>09Ny68j_|MwCk>}~2^&S#uSJ_sEu!9Ng%jImVbhQ2X}H zrM$A4YZoyoe;g46#SZ+XQd+fD)rxe10nR++ci;hzpWD70rh_DpO5CI@RQIVQ&f%xg z^9olS00`&~2&kEm;BxG8yT^Y6R5ASvt)hrg+&jzP)e+@ayXZF>g zNj!!s*ZZ|ugn2^!Z%l>P{?^3-#r(X?DpP?X3ipZEC-z=d*!O3qQu?1p~lwh2;c6Fwl>eDt@Vv zGga#!1tv|99ziB$-rq1|C9paTIveOQC&V-yn)FzDNYkOH2;)hl?6$pxZdV`$AiQz| z9g_H+P8A01xc-#g>vnk5=jHNBfLClRo|e7N&8TApoF8c^V{kR;Q?^X|%-+HAfmzJB z#;il8iCQx!Ja*NMGe|1&1wE}Enb+NBL>1;1{Z-I ziE5k`)I=1u81UFLDtxeUw}BS$BK4q(z3I22{8WWA0%99Z=B{L^lFjCEs4Jy@08;f% z9s$YCgb+>*kp_BY^~uQ@4m6i7?O)LJqV?G}V^1h47RREp%4_h(w0c8yKulzWNgOXq zJ|Kj z<_P#2FIlj?-AMPa|3-`lz$qJ?D>(T9xPZ~K88gMY^qUw1bwEA z7!3LFv7Op!yl%DTw|IwLyo=PgD083!(yvZO8xQx{RG3nus0YbCzlHBKrZJ}6SftcL zPnJk1Iq~SPOw8e`#hrphQu)h*l4&^+^@Wctay-H%5%t@M`k>nS@ffEiKcnM%qd|q? zD?g(AD1yMDE^DAlH%iiHuyJ}K5A}$0{Q9F~*Eg;}dgIbjgHZSD6+>Q))2G_-^&EKu znWAj-?fq5`9=W-K9E+iEUD__%9j<&aLJ@lO^p!7dyfI~o(60LE7zQo2Jn+?Z;(sYz zlGIdTO@}0lv64e@u?@JK61~yOs*pxNxH=uKkG6`eCDCzHc*c5Hd$4^SK{Vz`1YxpM z^v?ZEKCY8`cfkxbXWuW6m|Av+KRv~_UoLgMh5hOM6O51beN>&BVNY2V(9L935Qey! zpkXwrJP~Bnc|*)$!lb(r9l-TdMj`p-wZb-xstOA>GU=lK$f9MK9^jOk#g6(6q+<9) zPZWp#K$p4FBstX4oeNsk&BSb*>B6G>cy!1WydHB^dOyGrQJ2dJM>2UQJdu+cB6oZV zF1F*4LSs2`uBaH4r$G_)&W)BDu*djrw6q0kp+c&`Y-#)Fi#mZb03WL}r;e7_*9TL` z+51(#Ur?7t7=c0>^XrS{boH2dKbgf^*pMZNFG470F^)Yjij+5Q9{r6N1o{GjSwmBkP6z zKd&7lb6G@zZ6)xN6{5~7@|1Jw4%WK$YYwYW0(i`G%=}Y zyu=}du%|$i*i()wl3W3@#k?il7zQ0(nOjk}P5v2bgGp8x!(dxQ3_*HLb9s*3>j5%~ zQbt(!GkQ@oga~&paz{jR#qU(BKBTqY6bo1=J;k^oY4B4{>W^njjH?K~L^x)ev+x+MG0jY@Yg+kPQBDH ztE@DRbJN8??g;w~qUrR4bYcw>wyEkQx-MUBK+=H$xpe18I*@VFU(n&x_ zBWlruknia>6U78Y{ff?L)aFa2R7w1;4eJC2RvxUK#WqKXDey0>&;YrwX*1gLrRva% zikC+r%@z=?ILCa@{#DxTr*u`&_*V}e*>)}g#8CqLPf}rwqU6CUX_STJ*u-(YN?!6= z(*iA$HO5D!yVKQW>+9K1`keNr+X`>uQr6|hXz;(N-wReFMpadB<2r@hJ=oC8E4PKd z_W|L!Z*C>cm6d#%g*Hen!K$Kir%J)P*xxNuA;)vdK6KhLU8EZS`W^Grhu30mJPJ{p zK6MugwZ!ewF%LnbUU?G{~x?_+{>H3c^;UkX1WZ(Sw zm*PZ$Tgf)9xulSMh;_VW&N5e>jcM2?wIfjDgj^9XpVG)jg zQQ=O<>?w)sY!Ob97>mtP+=}LW`n1wQXys=}&&=$3o&;z~DnM}?#LLz}_#_hMcEK-$ zvWTjro>45dVgRS(7+ZR!+aykWV6VP(*+6 zZy%5$_Ktu2%JAftpPyfzpI=*3Lvghoo8+YNw?SHVC(iJdv1?1 zoZsXMqN_)4i79;(8Oho$?R}=oajI5giR4x@$5K(vk0*z^>j^bwan~BRZLB?mdYL$v zd2b*{j&k44sJ8u2f02XHHZ~lRA4k$J_;FaBU_t{8lOg2@V?+YbQo@mQ7s_mJ>D!MT zFw6;v6M2BOR5V9240>8@iHY9=0qHtq+YUcRXW%WzQO(rI6h807N&`?wY2 zSA;LM$YC`xKi_j7FSvxJ1Vx+3^N57#R>(3wq0A=U;d*4(bCHXb&>qqBa>n5|)JK!H zMI~49%uKk&P-vp-BgbzViu%-i1f?Vp+U9SYAe@s4wZI=vjy``0cASQ207R#_DxqRx z;-STya#B?mSXr;#qI|w*HKO!2C*)r#OtNXV$Q%54>@1T<@qe?(6?;+k$@bGlWw75U z({^2owD*yjVQ zeTD)fz*MWP{e=-i3}gxxr;l=*(ee7;<8Bl$F~(2{`HK3B#4KKfdo)&asufj%0~z6y zu=2$SvMgqq0VB3LXCfgRmo_)u{EFe1?&E>qj1^Aks( z81oQ+6D6Y{+QRw*kS+IAKLHqS@x&$)h*?t$*fVBDGRqMm%fbQfUf>arVk4Z>G`Nf% zOSEGWO7YjXZ=l=-0WQ7DZ!bs+CehLe3Rz*cqPqO&P=jfrEfZq~adaPZv%HiX<(4P~ z!AixCsDC)oRGf^1RJ$x0N8i1U+DeY=pjefCA;fEoHED&m@N~+{ug#Mz6%OhMkiz?1 zWz`uftHRoi7`@F&5}c(|$|THKlsXE+12ChbGAO-LYwYT(%m2!A#7a)~a?CTGr`FJ# z+xM9V3-{GM%{2xH(XQoEB7`NKlrEBd5SRwA&q&>=pm!`%eMCkMAZXCe@H0%k=iXAx z;l}hppJ2h~+eJguYz4b=)D25wF2#~n?@BFgjO_TuYOMvM$$hyaTp)V?`|p`KV))Je zwV3uFB_s20aw(|T^)<|MTI3OkU4Ism3@r9McPar4UO5}HQ5Lm2m8k}<%NDaq`wqj3 z91ZRl8_f?~X#5Zo-;;K5DUE*l#izkWS&aEuiYqMRD%Bdmkeb8cLq-zE=3N7 zn73;efiy)5H1vZhE1WQG1ifLZ$)5P<<}D1E6D@>SH5e4hDz0Fd&8-qXhI~YCnS)mc}%Iabr^%;ZU{(+VE&#-6Z*d#t-F^-d`C0Y^w z?iW?HII_r~9B~QmrAELE#u?Yua2sy|V<${IAI(#cLdNq^VjbD#b}9R$aBATV3`}sX zs~Ty&0G+LVh+b7+`Vf|CgXNk9-XAR2;lP_|=yWJ8Q2{YH2(eluxX6lIkyUsmTdeOz za*9elHf?dDzm`zj3m9iuQ{d~!nZ$HhJtx!Lp=pHPj#pKk?>0Z~a#t1ILm#XM6O`5i zUbb3(%MU8u>$E?d`8}3yI@|MEjhWF*y)Fhm*J&M53aZ0`<)YR{!3Hl{u}_Y86}IcW59ZTF6J8J zNG`M9uXJuktL#t3WESsxzvHF>yVn^Y2U)dzNW@Yg&SECbwTSZD3R7f53k$s=7is*g z>vEq(kh6&xi8D!ly@(CX2{Crg&54BgCJFr>1EhM9wA>y$(AR##cU#>UfMjT0@Asgy0~5yqLLZgHKmHAg|fgXyl&#A78C?w@POsK&{`a?$Uq zW=)|QYyI<8on;va{HFsx{763i7DYdEZUXkPOwxwDwno3^@Zum>f) zEsU{(dfB^#F~V&N%`aJx-O)lIpxG(147upk4>So&F%*}>Uva(vl{w`I1+i4hW{JXy zj`9zDO{y%-aRu3ELo3Nh@y`et`(KqLS7)fNG)mbhrZ;u69k*y#*HJd5_Oe1E2HgRtb#jzi-;NRq z{TlJzPa)tqyPEZnlhpR^`xJ-O=6!2VGsQ&-1r0LIOpkpEVhOT_Lnl^c9Gp91-cxjU z=@DeBC4oR`lk=>?dQTSh<46)-NoMommS7!G>D&X^f-wyWsgQ6WgE$H*3PyGe z&tw&J0+TS7Bs26I3fc%VZcoOIdCJ{qtPR}PxmWN|YT(NdSFZ2syRAMrh&5W3ID;WX-XM6)~Q{!bb1=cR;7-x^_4A7(1sOJfKHs#b!! zBJ7N4b)8&$iGN1m?bU;BoY>N1`pHo3@Y12)onhj{F*LovkcxT3*it`qdTz{mb)>A=(R{|k*05SoVw65^g+zC5LYi9FkMOxrNvMDZG(Gb z)jUxm39~)sQrFSL;fN6+*cgnqy@hFpRS<`lLiVOc3sP5UfS-spJ z$YpmD(@LIErm%M0 zOsRbMJBn{R9L`uFNQ4RX>_# z4l;g;UKPl%I(8ekz+>{ZSdGqJ=WH0cwZUTQu}IV3|m^IJMCdcZ`(J_cJfI zfC1-8qbNjR(#9U9sz@FTN`rNdIiJH$8M0|Y$f^7khIB7-#Mc36_Kxh04o5KVfL%_wXm69v zXaVJEkZ?=(Rpv4w2KEdVWx%dPX5BJ?`Fmjc-F?-1m?Ob=E#W;_N7Xuc55y4bhOqb# z&HbVmxSN|rMG1(`DwEG<>#7#@eNX?>C0~tm=>oRKes4If)#?=?m1VmKB~lBC{BuN6 zs#wK<7j;}^P=F5U!^Ud6Ht@RuP(2>>$#E?#%$xJJJwNkquPEfS=Y4;CMAoc!b0KQP zaiJ&UYQEh!nEYW&5vgh5d;V>=!fjT*hl3;g zlNyj6-7EN8LA{mHN3#*Ce2!Io|LNOVA_6#a@O;o&yYH{~Tk(0fAYeLOB)9dN;{%yG zF6TY` zHE#R97A60K`wjWFuXaW^lMhVUtZh-`V@odlb+3JQR806h)>qd&H>OFpY1Z?)%OkbT z{fU{h zUid>XEE&V7=L-TtoPYV~nQAmHb{xJn2R`~6HjQLy=|pqgFml+Zv zi=jVUop`*>0%n~Lsqsu%g8A|Xm_G+-1Ro@73%)Of(LKDb;`wAgIBK^#?d-|G8g=eu z1N_z(#}==r8GA>Qr;58wrsc9iaw0_}O0MaHuSP!aL#_1U5ZC6DN-iQXSOTn2B#(_= zhah!{x{3=Dp$CvEU`spfzIoQOk|%<`38KcrenY`C?63xRpsl;yylndRpB<|S5W343 zUf%j>6-^(;5h}~GFL#dQE{4LY72Hasj>J5G|&*|oxmitjmhxh(YhW^8nl__ z6sf)}aF-horPXxo+~hv?gfkov*-bJUdLO5xF)7((Ww8M{?^BtL!deAl5%WsvtetiI zvhxK}c0-C!eMGs~XQH0H0h^IRO|~G8kz9ufinaiOMw+1a9>1JA0eiUB&c-q%oHVau_UthNLj)M$4K-tOZeloW|o>pVn>9f}2JZOpm5g~4@ zw56x&{wUC(@(EpBVbY-EZwv$f!z-%P^q%(F$+u{L-q`!aO5bNb#n-d*HFHz2%W6?% z3T?w3JSIir&t$fmZvUQMnk(cuU-uR5<91lck0qNtm$Qy6e&3 zg5xxM{SRQh2qCy0bn}w)w$Dtm;(o>Px`=~J1En}Hw-x7hyl)l2<@sKGDqP7l1c!t05*!sEu^&j_mEDu7etvlF>WI$SmSSgC#+z6UlxPvM7`LT*LO zKRRyKFIVm}eFL8=hm9Pp1^i1KCaP3?n}k*~oUOn8KCSz?uTN?FOSWk$dcV<~-AYlY z$x(?Zt*L_)m+PPXPkpD1li~KbN_-V&bjT>S!|S9Ys#B)+*Xz8~f%VPTc!9{zH-;=$ z;twNP%^b-Ma26N9vX;L*l73uFc+WK zbnbn(lvlyz`d7I|lj?=emDu<7wLW)n{yo8A%UaiHWOEB9!QQyi$MfhgNub4QSHZ5mZv7G9m-yOOi8=tZ zE;-#U%lU6F#C}^^O8j?Or%&Z|lzYOge&sy9*gFRI)IBUQBB8d26WMR=rMYz2RaA1R zL~DV6|I{1AN!GNURQ$Z_x0=f6GG6Y}YVLfUe(NT4V90j~dz=PPtEUmEr_B5}A;aq5 z`e~L7IglYyzp`D~1aK(!qUJAC?v}<9a!M~ZS>QQ}g}#U`FGVwLEcw2sw0A#U@;zi< zjNt)^Az-d}K_jQEl8993m(N47Wr5)E&G%axA-;f?P>z5Ozw?Ob=g$x8u2WNJS;rUS z=HHjRHW--sSFOON1^*ZhM0cORV!7A7_iyr{9>-6;^7!BFQOaQ2|2V0TRm7!dU_c|`(`9sy$ah$O-ZAj>uTDS1LNR+=*tma^A(=vz&FWqs$L@_bgkD>Fv)3XE7aKkLQv{|f`~N)ZuE zJ3jrtGysKdY%w()RN_`fWOU@+YyFO!9QmfBRgabrTH4RCs-(>3hV-NMOa1rOh=hx) z>^^%x{xIjpdcIe_bh}TXIV0F$-z*!ndnCdiE^+619jZjNLFTtE*MleZvQJKIb)E5s z_=KDw0QUPJ-y(;@L{r7ja;$7ZFxv2*gQ5pOYz8YdxjcDu16M@K2@CSo>gLf8TPOA0 z`zQ*r>EyAD+1~{vd|~?S;$^ccQhnNG2SwMn$Zlnc5rdGZa7(*kO`Uyw?$1~8SWOu@ zYA-G7vG@O%Q4OdfesAEfKu#T!o&XB&(mz7nM$nc}>Co{7S%2}0I~Y+bs(-mt=&`h~ z=%Q$pS5@V(n&GWZg-RJ5h}5t_5ltk_xc$Lst6%}< zX<9}4#c7hu4sr}G?4{2c9_QaOE5;h#czrLj!(BbJoC@%_C^E*gV?CK(>E@viJKOY@#3dx z`J*7@LLz0PQ6O>S9F?nZ)&$$1M3(XNRzPYUdaR^=wB=Ia89FWgtegM-SW0Pzp02Jgd-__U*|6nQX1e?ktOx^h zW$YlGUl-m;ywLr>ABke%EG-tghz?RzVtqStiUhljBF~SO*qJ>ZjYZ=`WeTwcr%j6{ z-Oad8Kvn`Xq8Izg_KQ@dg`|PbytToCII*Te+GVPfcp#`8Kjrjj9p`p>JSaFfwD9} ztMfxjeHP1_&VjDmdh*r{FaSD*R?J*%#0x$jHFv!?wgZ}=_U`w)ugu>aZ1b;7!DF%+ zrS^E4xGfKEF1>&dlLJ|nLWC>NL3?2M;)Ivr;M%D!B6)zmo7m8o2!>$Q#j}aag*o%=Z@cotJ{NQ3LQ>e5nz})r5#ypYEyydqFpl0&0WTrskJ5e7pKU2~3Q#cgYf3BiG>wI(U;RfAzWz9&L1&yb4^@3sa!i08-dReO zY-kGp+Sr4ZF;5k3U8WIR*`D z=H4#-5$@w@Oz-od@jWte60ueR4|_2L?A#Ke!+y&eTAjP=moh0f9V1qJt336T$fCYl zc-RdkV5hQkH=|uJ1)#r=fP){}^a9}ctp`LL>RY}5M#xl7(sDr1BWjeMo^&+=aq&QJ7>{`4F96)XvjekvsqPfxB-cu0^* z~RDV%lDmxqh zcqBmbpI$IP&H`{09rY()e|`3mqC5==#3B@8X-ow2!uO)hA$s>y`qIR!8|as9EV!N_=7U!6u2ui=vK-By?B=lFxOu=}R-Gmi{)& zmS}1+MXQ>b)qhUx@4U7yC2h)+nosg)Yz9M>H<_3pe&Ggu&7)#fuFW#M~&K6RiX z7pF0nOeEr}0&KPaTWm`n$CiTjqr8oVugux7mjL+={~Sp+T=VD>#ElkAQ#8cj7yXWgJhPk46{Q?YI{6$@&K4%`8JKk2 zt>6D0vs)=;uT|Wo5&Fg9E`D1dp|uC;@?<0_U$kp2#R(W zv#sgAuV}2)0&o@1b;aY5oOxHOe!#?^mDTsQ=R!Uhf+>|glgHn-?a!UM8AXlM*w{FL z?PxYz-0w zqN*+xocXc>8DR^6mFW;R^ z-e~^e-f(NH?R@z#yA*&pudY_EMtf-K&TA}IRJF~wo8x%uTnsJ25yn7f;>L&} zQSFgPv!F|h%0cBX2lcL}GU|15RbJXQc6J54eDJwy*|mK|cwgQos>wZA=kgp&XFue# z0?u=#)}MsVwW3ih$JU!1viW(TXV3$1`&LRWReKbiPqJ)UbLvaua>53~6Y-9YP&YL! zC@R)H-sah@|25uSrZWSzdPZIcN42w8InIkwDdRr>l|nqE zGHxrSp{TR6h=@Vq8401BwJ){S<|_?0^Yin}4(me&=GWU^Zu;v#)Q9ACb{fi)aVH46 zEym}Y*WTYRaxQY;uJmfMFaEWzC4hDX-;SkDBvI{t^E&VS(2bc1Ux>#4%$ph6ccG&0 zq)SRu8~&R%s+upA-A!AAk&&3sg)}9MF0V|&LhY1>dPRwgGsm^aNy1yFKWqj1rOCZG z=pukpb%w>k$J2MV981dLH$qo}>oM6#NW>_+<+qqGLhknKWi%g$eCOxudw0Hnmu}aJ zuL`}#)N-zGOEI6uArZFYi+{T!;5J5UafA)Iad@B%6eN!@LE8@PE<3I zwv9x`U7l3@Y9tz+-g1gA*qGh$v0toovYfq|DhOZxRW1<&o`*Ft;PJWE*9uIXHBBl& zD8Ek`$CW4;Y`?!0a6e$2Yqu+S$swL(YBTMk$0ic=D{I_WpWJRx7UA7@DHuMT`7suf zUkpowN-S%hMd>rpkHM(9n@^TseLp1Vq?yo9xB7*xfp>K!snJE}D)~?nrLtpbBV`nv z`?B-l>G#6i1*ojpVBc0Uzh|%(?5V}S#+DMKR~4&evHvDV;?+Y(xudMpZwVVO5ld=x z>g5+yzg_uRNJJ9{*{g<6DPV8KE=dbh1Nsp*AtP@_W+;1FxuPa88XMCtm8B+Z9hFGUG=4A1hQ@0Q5pillLU5jR;r-6Bg8GPT92>8p~< zsOs5O7C{Dm1u2j1Y&RU=KD2kGWZQga~OlY zKi!Y^OEfOhdV0e=3f*vvo{zUotD^@E*19pZ`C?);Xl;gD$X8QLH|C3gOWwzt&FkKY z>Ld>Ls;c=3srxsj{|?@}c!&#RS3=-hDKQ5Fn_JrEr-qN3EHX4vc3M6nj|1m|DF(Li zGZzQYopo+&q}*S$p!TdUY<0(<4x#Pn0$M4Z5FdXDs`~mbGYlN>dQpt;H=yC zAgd(mmzfh*YyVD-7z~(%i|a4Hp>4?+NT=>#OW_{Y!>(GV@(6KnFv;dTO>?3hyJTRq zh9?MUu>P6Jegw<1DSlURmZ2kpX|Lq)n-7>#8m-REB;lG}iFe;WNdaL>EAb1URE|X} zN8xDfmzY!+f* zaivVsMTtQCj>%0OdEu0s4^ldFl9dSdkqqK*F_0(Y`e;7NRy+dX_>SP)L!htqaCH2~ zW9bLGeP6E#eS-H408=$(}@BcXq2pk_h^K+++n5bDXK(FJ#e ze#0V?C+@ax`P<3hBY2=DSu7>;@4@$B>lb-GIPhUdmoDFY)|s`Z8E$R3-;GYXl+DVw zJ~l+Uuly0WKV)5NU_T`ytHJZ7F}X9W0`+(Q_1n@k!;{6;?nZ1O)ey#se%ZQHe-q_G>@c4M238ryDc+qP{swi??> zW7{^rb=}YVjdA{f^H}4+j=67>xWA{E_kdd7R_m2T@J-7J2cHThq6~*8bFlbZGstO{ z1e0l5y$KlpuS~+o;GG9Zny5#4cR@+kfL>T)7@#Pf2rII|B&-gO^nN`1$b+Rrj1 zx`w8e>mPWPbNlNll~6fDOl7WgnPIryQPJFjifXgMNOqhEhhKa$;GjNC+;T@1hGBf5 zRL8ZXlR{Kc6U3S+@gSpEG~BrO+I{HvDsg16hhvU!Pvn zEVM;yjnQC6z0_s?F@B(uBU!>o24#4=EYWPi#Ue=PIn5j2=L2udERY%V&`I)e+~nfq z@?sXUbZJ@>cqok2P+zT{4iI3l7X`MTNb(TO(Gu?|Fg?TkG$KijNZlz6P8bTvQ^Zi=Uy~&! zN+Whlm*!WJMJOv(8DcGt!Wlnup6y>V#qZAbaNYu(z$hI8SRgd>80XIk1En$3z+u+s#PD^rL1ISA;C8 z3vnwfSmuS1c{%`|dxwdbWJ$drO8vDL%6FYu<3?lvjS(5pT3!$76pGf0ha|HNA3bgi z-S^D^CPNH#n{&1l#AyLBUTp=D3)3!ua5hMgE^Ho|thqk$%t?+06a|^U0-ofjsI5Xs z$=HOQp=rg{cuvuHgza;B5_-_39TVhEt>tPA%-4pHbB~fGQ9UEu&v|7#MBX0Eb^ktZ zb%7jxQzfvFsJ((6VYwu07K9r7NiZiIO;HS!=}EAXlMOK-auCpOi z2wdXIMQKU07)561^VyBz)Eh4{sogx_w38sR9hu&3hU%yot;n}_?P(bce8Ld3^e{t$ z6KQD^CL8+`GjX$+WFq0q@Mq-KAu+=@jGeiRovELvJbuiGzALN+fMc7PC+~B27mdhG z(J?TF(q>7SK+oT>z!yj^OdsII=FCdts1coA=YXm*{PBwfbi(QBeXZi};-v=r7VT70 zs_by?dG<->Dgrl7G`7Z`JqAi+4ZO9wP<<$3Rh-TL#=R%Y%{ z;EKWMF?iFAds)K1fhcUb*o8_MFnGDW)>qB3cr79H%0KYJEe|`QVN86B^XCXS=l(9X zFGgyuVOORQMRvTT+hs9Y-zE`zHErtWDaa~Vn=PlMA8k+u4wr)zyYl4s)+3iQRrbTN z9=>ebYIxq62=rZ{HdR~#BC0N}Lf=s6Uz~)%?e=O@D@6nu`yE*%2@Fd+$^JlU*YJGs0zA*qFwxRK*sR{_{|&&-v_LAi*;U05UAP2 zP4q8tkkZr6^uU($@T{`=z7E3bavjfyp-Eh|EI#k5N{+MMli&wpHy@$d2iJA(>WZ?L z^>FwV-g{wegk}t}WMcnpVUcO4UqXIY0aZ8=5mR&A%_NZ#;I%~zL<0O8wVLn{>OXHB z4bHr-1CgqAnr@p4CF(yKb*8Aw-}i?F-0%M3+IGDR9h@ymC(La))CnZpi@Be6Lim0K zGg@i4yym!C=WyCsaVOfe+kIySu`22rsD}Gx=JGwuF?e|!W@k4+7I(2mo%3xVUgQLi z!2nNo*q+(KW3%@y01S5!(@P;pvM=YB*Lte6?du-Nx5;NC;?$tY^YLoB*D&wS655X~ z87tg&;Aa#WG4Bt8t(kHTc|R>84jg{ymS@;lJpLzO5Ey_w*qttvZ>I^%D7IeZ38f)H z8^%tUqo9n4IP|4l-h?|*p^-E*y&}93wekUh@cdemq*}sH7*^jrZOPKVqxq=6_g;p97GwjVSI3K`DaLon4+V+^UrouT)W;@R0(#_HP_i$Xq{VO|fg<;3~XTPPyqe z81Obb=%JVxlH>1?!zOe*>En%A?ibJT4Fljpi^dFaZ(}>+OY&LDI`5~=YKiAMp{;Vj z5IYh|F!%922W|+|Iko@d&+Qw}sqJqNxvQ8_c;W%h;4t@yR{a9cn!l7C_6~8$Vgwp} z^&}*qs#tVm7_{20mYPeuKQ?T$dDrSa9+Js_m@MT4I?(y-+`pvit^jEG_%rLb+^^3X zz_+*|7=Q2x!b2zSiA>X7oDyem-^>40$i1IVYFjeBPdS zK?(zAelyQbX*`Ibo&bcWQmw}4vh65gl*|rC9Ha<32qvu2VCDom&|J2lhb-WyC>)l7 zE)xHs#AqwZJ5Cyy5cmIWvAnv^mi+9E$CNmcSYI9P%>l-(@M{f#s!YDQG0CYX6wBGRUaivs zfLPTuFhbfxmQtije=yA4jUX9%x!{}nrQv@Fif6v({hau>e$hDZQ%IJ65JIr@I85!A+gDWgo+kl1HgB!-qw@s*_u+2llNKAi|QyUkQqJn_2gId_L z+my@getYi(&=~0L^|`pcB+Tw^P|ftbOxGeAI~DnhTJu0K@Gnz5-aI@#cwS#$T`ss6 zmuxdMh9?fqIf|$AGn;zqLy62M2H9ZS6Jo-QxeTz3uu5JDRlmUWN^Z>ls;d&L+S zBpf0m7AChkVbB7)xSvxZ0v~lKdaC%9nM<(nm^Bk!4p;Bw>;mOpa(;y+)aCEo z>};a*C?h6$`~@5-SV>?_inKnn{d*cZ(1TEKgb$pZ|93c7&ETY#!R)?U5{-KbaFTK! zO_yAp`my*8oxJ<2+#QcJ+7>cQA}vFaEPuCeU(W@NJ_Ojx;s`uW@z|n*mlxMz7yd$l zp`;&2kBUc_AA>uXS|s4M%SmLDDlR?a6>xCSX&bv(ZiW(sG3qfk>xstWG1xdoM^Gv? z&sblXw_VZTZ1Rv~ti)F3aX`y+6}_lUNZ8e;G0;MLlZ$`Z-mt|Yce-TShxm%z4M8|V z_4bxP!p~swTx`b74W>VexB(3ROu6-V9B-=*EJQ*UC$hBf<|%Wg)kkU^4%W1uZI zpY4sCw zBZh6Ju39|SOM%4_cVG<=8wJ$D8=fpdH$hMg;}LW--*9vh2jNmCbGFj?~Y>iBVHliN#V>Rnl?qm%W-ZXnAm@d`rB3 zRhdlVHrb6pmoAmJ6r{Jdw)XR_=TE;v#4#7l0rq?geSCLl7vf}qK#GTD=c7KtwS4$e z%&DLAGlyFZ0{Ac(1B3-Zvm<}HObh`Z&QfR${##wFcU24H%3^NE%_0w`Ol9Sag+LY_ zwRY|0YgA1Xo?@rfVNlq_Y+iE60L-5H(Rygm_f;bG)aG z!d$jl=GvwEc0aD#gc4u1Kzg+Df}CXFAam>-OWa`sU0#+U|Q7PwP(BM{TIhINtkrdhMR$ zY^t`x38UZPD@ocBN<@Y$VEJGXaso*}J&E1QVHj}uJWL0?=%SzpEtkl8gCi-1D*#Q{ zLg-~Elt)3^-6fI_UD#5L)gFZ`%x+T)*+j>suifGT%#FX>g)c2SfFE}mGZT1FXxKYH z6>|hkxvwJf(a)+q_IIF`=(E;by5B0IwW>P|{*ZO>p+$)A-WOOX;i^{UluMNP#2o~2 zQVsIxg7?>#N$2z3NpOd~1q|oN4}y-WJ9kh4fX(V)q&&Mbqk8k@A%b)SIis@v0PT3m zw3XjFB0jg%YtpF74HZ}CPm_OPA%DM?DMe}5a&|T!{6kYG2)~)mWCrF`2{Y@%G?YW( zpt&JyUvH6qF-aNM_WiKdjQ>s=scPH$&>r1If3%CfLi)Ieh8)JN;iLAXVJ+v*4DB}E0W_c*Fk%~ZwyT@m zcg|6z&PS0q7ww3p%Z+w}ACXHoPfupKzAkS8CenI7?^;{$Erj>v2_=knvk^R--cKtZ zYuzu=SC;?>rDn7BuvEZztkmt|ire-0h0y0q;w?tkymO|}N)EZEtD=kXZ4AIq%8MlH zMJ(yEIo*e~JJ>8O5&<}(-6mVCuqB`U{d^-z$lWH#olM&fYc=GW51F&zNbAaySl(xk zP8S|Gbplx2wyJ|WVFR&;Mhhi*{MF2#j|bZPDAD^U*sVFAf}Ji}KZO5c)O6*&W?0r7 zaLe;OPJj7qFTW&>v%xbi%igT+{iW1>3;Ja->FX5>ET8YlrR)BFMh{r2_pMRxX5G~< zS9ynj?X)hPxA3+O6ctL5w4o^~$r)%h*_*zRuxK^-vhpz*ikJhI!_MkN7Ds>|Z_Ool zlHtv23nTy&v7dV9qD`Uaa(F(D^||jq%Jmp?ZJSFYxwcs?Y8j-O!K-m=#Pml+=&C5N zx{P`~%JnP}Fw&{h|FjH!)H^@EAu-{w>Nb6y=?k%Vc!*rQT7EcX^u6XB8c6alb!hY$ z3CpNIHFQ6_V4e=&QogXD=hD1{Ile^ z&*iyJu6aL;Pr2Ou+~nb)Uv6@?OdTzs73N4qx7hJ}LwK_yBtfCM|ARXx%m(21^@evd=8J#w%+GU zB|RU^n!TA^wdZH?h2hFI_Pm*K2I5D**|z)4`C%ecLeX z+v&MwFmA6}qx*5*Fx_V!q5|r)z^32Jj8d)~K%=O^AD^4*6XT{3jdlJpj2Ktk(i4=eh zvIk98LdaX)0C2h<*4u`_v1+JgF{g|~S(BCeVPS7QxE<4#O;pga2*c1*`RgmtKDV_JK1U&w0r&|Yx-^D5{V9JTfvGT>UrXqmS(Dd7VA7jO z-RTdV&g9@h3D+Nk$7TjsQMZbR4-is00!kvUaD@Put*lfiY;4%lc5>MAOXp^lP3-jI zTu@W-xJ-u$p52&?EPa5;1sXq%e!QTXL9hP#J=hdEWP6}I5uw3Ud{052fEztVGh{RElMm6$T_e{(^e}AT zO)&QO36^@WZU{&^wn_?jhlf6Sn$)r*8ZlOa~xI9-Pz(9lau$bEK{s;_(?#5? zTA{Ic{#zTHy4;0W7-it*E=}f*0xL*YnPB70hBMNhOT>3+bbpmT4MHIIEP22u${3Q5 z;UxC5z4dE3j5NJnZ3SpRtH0$8N8uxt*C~dN-6}5Ql_@jO1kIWTrJwY>(@)B3%&W4Y zQ$R5DKJ`iGzP)1-c;C;~cwbmDcHJvVOT#e>bsAvj3AU5|my_yYby3&gV}Xig0EDsF zrBA5cCNm``Dn{{iOwr#^BChCvPz+l0*yZOIb_;}=;sEIJgj2zZVIo;2sd)5$U%nIj zx91=$_Y&v%XsvqehPv|f-3yZjO@nwc8nY>#Um}eM1R@mF_0yXk3#|APi9|^g-1#~# zObKYZDg!c8h$r`X{v>^A7J{Th-~a5Q)peALEG{fQ;vt|gaJ4B10Dop#Bq+cQS`Cq4 zoyX;T*?bu~HHA*EbAP+H|3hl3`CXf0FHq~=kjs6J3Mnr}9!K*)pv!sc;fkJpuoJA|(j5Rj)Q|$2HFLQv83xz~rWo_Ni!Huo~ zA6&?~qKs{%qx)l^aWup2^W|u#rqt1A>Jb239eQ4MxekPVr-D+9khjas`2RPY8?Fw( z(c;&A!yUG~x>)J3%_XC*-kW(j1<}#*?=>iRl1aGsO&YYUDX(5_ei-cj1P>y{i;Tf% zVNPaC#1Q!7Gnb(8z_H=Bk;1dJwl@E8N9gsmzw(&XuM$J>b|OKD&*!jQ^(sXw4j&4y zV{S1#13s&v?Lj(O%y$G|?Z}}TT-ws0e;_0sfpmB&7M}-rep((( z)#-O6smx3*R*2H*8e>I+o@6czQZBC&zWjYpj){IsS5(ty@R{@tgi9~#1|Gtxe$C5w zCAr|)nXVK-R4!Fnq_NZ#6ueUkJp0&^m~_04{i~e9-*SDmO5B50VPi`iUO0D4-oH4m z+q?3d<^zyV8g;+_rTuV@75L4i$S)B8Cye+RnDAcMGJ62fnfHJI zX}}Umq7XB4jT|Et{z5^$)8!Ou&~iG=P7>4;z`)VL{Q2{TNt>`-`ZCG?!@Wm6a~>r2~M*YKq)eN%~CdV7CTA5!}LV4h`(M-LHqZE1({f-L->Zzt&_J-!svmH0qDa!hCtCn$+9c~*bi~P7V zxkm+a{*mg!0j^=%$UA^`CKEZkwAW;*IW?&KV^(Ma%m`^qn8G9aRslKmHFQiXmcNx0gUUtTU;s!Vh(Pazu~$DxCikltisZ~?g~CW| z+GTOXEJzgG>flgh72YWW?JG0%d~_?NB0^dK_Z*hqyZ-FiC*IsdMV=M!1%nAbXzr%A zk8!cpGx2|G{yD(0soqVH7A+KYZd3yIxM3 zR@zigJB} zk?>hcIGN;J5$B;I!b=uc#eqT6$uD3Gw1d+Wxnq}{WkuA_94lh2o;O!OHcAPevt<{U z>*f1Tow4aIIu>-uJzqs9)_}Y8qxUAdTkkU9T?^_04TX)c<|7-JqN8L92Zw!>Lso@f z4mDNKIx%af_)Yv8aT6~(OyP^E=d4morHOz~3e7@|m!G|_%#`M*^@E@H{BN8|I*22T z^IhYia5YzUGQ(Zt!j-?)HYSz`MH0A3XbcsI?Xue*;s_&4x%pB+NI`iqNrrz26%#o9 zQuF{k+#$|6J8P>UVYfql>Fz7Gxd)F0!h5aEi z?<^QqZbdP7PU%(9OmuW`_`g(Vifm3VZEvOr+%L(nXP^1v-3*cfjULJztP~ZgD+^#f2ovlN7D|9W_mM&SmVv9P{?gn2F|XS%kn(Gl{IyBg z$H)sRAvIUvf7>qBJSTC;|51c_hL3e8e|+SX^&LsUy#kh#$;HSr+p6kK2N-|Rfa4ro^N!)UA9X}5Y45kgWvsK}qQS zb4$a_!JRX=&fSDP0y@mX)5>wX5a|V2aR-MY;4?T0Xr^F2BqZigq(DDSq+tB>$;2Pi zEk5PLVuTvL+BC>{9FR!J(b@HY5k8jCNIDh7{A8;wT`wbjHVzhcTZRu{5)84+7UFFR zH1V7d;(@e<9ePp(ea7^)GVIPNA!MZds(H`(FSg1SOY62;gks@K`zo5>`abht$lyz= z+hJz%BZj>Qj^0#$c;{w3<8p0}EW8S@QsFMnn_GfzZ&tr-2P_$5LRWgPsRRv6&;8ui3V@LZ zCmo(-1BrLIW-dDtEm!&W(pYgO92MDd*@vfoOJKTzg6d!D4CpE>ROdqvg3i212yC@h zvx!NA;J@AaU7!y5Z*g%bniE#2g)VW2Ziw7W2;NDB1I;cI2V^N1i%JSUi}+}Ps@~_A zw)^I1kDOOvv>-051vfP;n$6L%9asvK=r}lNzTG>5&m^!2pq9qi<@~>>gojqw z^8_GUbKz1+YaK|$;J4U3j9DlR1!`fg@$f>ehYlkWrsG_=Gsxhi5^Udjk#RdOp6B-i zZdlnD#;CC}Z^#*Y)!OE#JU&f-$6gm??7dRb#fK`EI1Fqhl|6c6kn^jtSHUlQDX>5myB&r)(_{2qot@g4;5ZeO9zxPlYgQU} zA|T+{=oeNtOzKhN4M2ZwL9!pmFHNP0&+uUJw2G^an#|VVK-7L;-f)V>mOa-~=MFqs zszC)T1ybk!ce7fEvZR@EnQ|obdVPJH0nk zM$LC(+)g!af;cNFLrkjV*&HQqq4(Dhl5}rWw z(jkB{tp397+RJ_G@eg1vJzF&T5Ik7SrjiVZM^lrN^E+~kMPa1{zS^empPX76pQ`_! zwg)?!g|Mb4-fKjr@_T(<9K~Mny4N{>9A>6YS4#Mz^J)HKt}D($+W^Ulx&iy$gWnw&bYVa#%}|;D4E&RZ;1}r*0~0 zcUxXY+HkE*Jm#EF@P6`+l_TVv>sePA96SStwl@%lWAJ(0o_jJLDuH@Iv1Nq;m1<1n z@qmL2)1xY>IK3OXU$^7EI0^X{FY((pK2>n>Xi=wA_S`+=Y>h6Z2g?go!vBMr#?s<})&2J65?-29lgHiLbqQ~EMv~8&|++{lW zj+yKJ1Jsq^`D*#T+fNMSTUBxx=z3eEb?H{?-s>wcd5=$!Jch*oex0MH z`#IIp-S#yz3;4{y6o&A<&AABh8}}u_n7O>~rV4DiTsJj99GI|(C)xPA+xia4I#K8W zgJ3U?raot9v3#F_ge|U*g*e@A%T+6PnMk%*C+5;8!!;gD^S(L^ea zhK^x3`dOOm^Lmrp#p~lWI3|m$Pju+O6;-eBtEXJCtZc+3%T2+6=@2>J%GH%7JHkO(MF!Rg9o7*=EccFgc!iafwfARpBMf&cB=k~$}SCtSm{PzWJ@284@;zrLMk?4Qt?Esj% z|H}R80Am`&sR1X8&uukue}X`(S_OS_$}-)x4Q}7-&WN@M8)@k0q%zOz!I4eeSrKvL zMus9)IuD_+nOE${Y@+WjS~!c%VyfRM==pe_{}IBkrmFZ_%=qzu@4Bg?sJ!mfT~}5H zUNw2|5?Fe&sk`KCJ&Z5`HKc#h!Rog7N_{YOk!i!&dFH3BJ}; z88U+net2GX&XP)m1;j~GIARwGRSeTUN#3@d&I`I-hi zqtx7%{fbp^tWcfS_jrBcr{CZx>^|;@nVt8JR zyl}FyQIN9dPCh%igc>J;48%X88xP*gkrZ_BK;@T7w38Hv?4ciey8F5guHk=7X7t*D zlmEQMJj!6OYxg+HZn5<>8TKT6UTFFIxV$n?*}$bFd_u*LSu%N6ff7A@jiAdNUR7b3 z^oDA&n`+sQ$9m7yCFQrJT-;bBnF6k{qz~iYlwL(^5m8OWXtVKnGVS$}spoyJrT4mP zr1zF#;fQk{SYHoxi}m%89{yN>v-W?4}*H85~-aiKT>KH~pErLfJUB}51) zh-@HuNCgJe%xx`d=psq<dt46I=|22KQ#||JPLjhNrXPy zj6Su2cPepV2oBSx<0gbUkrI)RfA_Sq=5x{4>tkkiX`4S5o9#U(vt|jwdne*Sa8V=i z%;mzpsqIfLsxf6^IxFP`}&TMgFSnC*_e9s zt(s>{Ix?k3J>(2P>Hu+vb&AP+xo^S3(h?>#)5D!J>>{dQui5{;&B7!QD&@kmQewiJg z_I~T&Vbq;Ls1vwIQATTOa+R()|5b)hN#bzt09xZ99yP9Uz;+<4mzX^!X!=SwVmffg zH`q|E-Jv+!r`6K6>{7>u7Wq&rnSeQsqot|c_;I}gcQj?A&D_vb=smn6ejn|Ey+4;Y zgvb~U)a{mSVSnp|^bOHv@G)RS<8g2Ke6F8-|M9n&&3e4^;8`RjNeJxi&9OO|lu-wx zK4-}Na%5}-z<-~QAanDWe<4a*$E3RbE29aQ&Ey`v(bg8I{gR}^IJqKRegZk^GR~=o zVHcEy!VH}L?}~7LMGf1=5|r>ENRqyGN=Xs)KkK`KK7~yk+_o^mo?_Ov^ccn;P&!9R zx1fQc0?rcR;;e2Rkj(>4lAMGrI=k7D0FfSPZmDc=S@C>4`l*tHPKoJRgWkC8(Pl*llI-SE_yMQm?xFe1RR@+EKju#1o z@Up&#!#@QqZqWaif$FuBIDLADOj)m)MoBu#K-ynXRs)9bbD(8Vxqky$WgT@mn7o8o zi?unJ&;p7-w<)y;)Q;v<(Y1xTo?$Gc6729{w0kcCu^G~FM4!VS9W}1{Z0Rd8XqoDkEs+qiHl%hB-ZYAX@?WoL z2x@AMsTI*WG6^l3VCIdX3alO$blMyz`|j#AV2=y1JNn*g6|>n+8z#=nO_j48%xt{w zNv+G%-3K2`B!Z|A6Dd?0ZH3If?AT}>;DP8yx+9?_nc*hoAG9l=-CIMpUDYKMRQ`|k zd_j3PxeAtjLlj9CO=DXuUDrteXpF>jM&YLt6)BjGiV9Rw{7)RRU0!MM+`r->2KoW% zPGgLy${}OV17h2JbAFDapKLrb8(Qw@^OS>JG84@Y5$jr zMoD&nXyp}N4=c)KepeQP3h=QMB0!eY7dIb*g4_EBcS|Sm>3f#P_h0z{t%k4YHXS}q ztY6j~+bRVr@3k{m1l1cp2>L0l2m5cnM@-MZz*)bV1PqevfH)~$Tcvkr!&;gQMEp~m z1Lk81vVs*lPIv?yVthb;j;KZPT$3k@g$$Uus2NAqAE%Xp3%nTD=OMO34r7sk;FYA* z3826)s$PfY#iG+v;gE&i;f>#r&bC5$2Ek*&Vn>}9Pz8|^uhl6hyM*k*`Ut}aPD-~T z8ltcXN;Ysq^7}^HN&Br6HG<~hMxm_=8;;?GMm`S+A|3`|_f`yL5q(Fj2IuF7UWvm_ z0c9{m*@5kU>gjgR4#53i$EiQ85pIE=mFZJGqMW&JrG@XmI>X;Wz}cj2j%09RxmF6K zD=M>00~AW7`CZ-x1fDS*N6<^+1TXgH0Nb_9L7~J`TlzM;Ogvhy*J@t4pyVb7eeOUx zW05{C80=uS0F{#oxh6Yi^Jzp`-{b;Hm zoACbr1ie(;!-Aj(O-@QOX2uSKDxzq`dOjl)O-(rv>P7cL@Ihc8`F0MO6h+%B&x8{& z5$OKEXXp-Cxy8!=lhBp`SA?rf=i_M~oS8pr-{~BVr67g) zBbNvk(Vz|d9BPIwF}+q?{ZqDSHGVsZZEIX>CunPjI*U{;kkG5zkw{T{hJOok5q7zz z9Ig1yZZ#kDK{h%-{tg0#g9U?^Y!U#p#!|!Hccp1}qE-TfoZ_xrWk7rAX$EzaaY(&_ zB@lBx=Zd6o*{wL8PnGTPh)=~X{-^LvCTZB?lmwpvluV7#gaf3|#~kN@+mHVXxR^*T zgyU{vg8u6?x~g_Q!mt4?^)(k{mg6FILIz$O!`WGppw zEXG7e+aR0no7Y0mX5SM+fxl)~-J6YP;jpDt_JF%FmehiI^Mde|Wu7;`Ant~}gE?>Y zSp60G48c#R$Ql zv%BjE`otl)Y(b-5wx5MWkegLm&Aq44qysfYz?L$qJ<4&g+}IoMk6HO`+04t z4-0re(-L^R6o^f<~Jme{`AjMF+5Vf_NwDQ#}It;+&SFU z%}bgFQWXzLHHGX^xzGc*8lVM2sLMkq*FUv_g*9Ko2BQnkVxL-QzW(=}TUW84sxTyjQk!;nA{K1sx8UqB7k&6 zxm`G#_A1$)AOf~sA>W5&vKuY-Lb#MlBkG;Hi(v!-$`#a@MrV(-^B@Ru%zEN^A-bc& zEw6>cN6{_{dHONS37H!)3X6DjxssF7`E&bOO_%BMOnxeA&4$0H6dhWzy3~sbE{D(C z*5B2oHTu*1Ar`a8EBB^9g}7CAIuc0`+sJ>o{bUP3p0-M$Zu){?NY#MmuKA8)((KB- zL8iu|pGq3D`+G_BS&2;U$MArq?e737^jLA!?d-gmbbfD1?UUaZql%p_3cs8@wl5u> z6Hmw3zLKpyMGUx63Br(Cx?R?voh#Mka#_D$d(;(1TS2EHa@t9%>NEE~|C({{iN|54 zn9Nb*@3i^sTydxwM6NjbNAchx zdTY0SuUAn=JCEPxc6Z5`-94Ws8_WbI&i6;IXNe8d`j1TT0SM65_?SV%TGE>C$Bcvo z*kxbTp(X2$_UOUABg!a(|Ev;avbfhU2Xj&=&`LsulSL{lD`+b#E1TDyEUECM$lqRH zQFG)UfA;U!(W=p9^BN%YiwB;2Bu4D2t-N{K`e#c`jhdik z0tvwd%&yFBtcDC~x}t6L5+%Yd+VXCpit6jO%wj z-*8pw(D@kRCqig{mri6L6&e`pSc~*Ow~m!JI?MQfO@!YjwIM{NOcca1bko}BJIQHu zTU}5Rw%cCJt<+?5dA8lGTHof1fKd)QLm*Okm~nSon)S{ePHk$}M# zxVBYQ*t`xCc5fli9pSERKJ`eX(q)Knak}>fogi&`cI>8Ghfie2E_J)?tRKQeD zeIQhlt=P(vY2Rznr?Hp}wI9G4ar4QRih1&ky+CMlqU`cG3suC_@M{t%+30g|t}>-L^|M=~yOm+@Vh{4Yy}hG8LYr8e0Yg=N3-( z?#0uUS;nGp5#85qf3L1ifZ^m8pZN#4!^x1`DVU)wF=+vhuRqZet~tMLx^6=0s7bs zfXax+?PRyn-gI{~#l}iqMcZs4!TPNrO2B_x6!~O7a2pK&H&Se7^oZ>U7Xldt-1>3P zk#3vA0boovGqk$>{rtLEkll#*57&X#VHux@QYTu@9 zPlxbjCh!a(0Jz+q2awa+wAr&HV=*vP6WojhnxX&u@uU@W3E?}SJ^?;t`;MSZhBFbM(4!9SD~a@;1qhQ5z9-2D_NqZ%iuS6_ z0Nl4PX}}Z_66eAUGKZSGbm(XzTV?E_>;9JCEmEAU-C{BUNO>Cw_?`Nlm%5uh&lq#w zU#324+Pc30e@ox9t!~flWf+b5>do5EQh~4FVcIK?r;aJS^_TvuuOojWGn`D^)QOBb zvnRwleMwKf-@|u|lUaNZCzRcH&rd#^v;Ro#NxF7Rf?Msp_R|cS&`)EmJ+0w38*r$p zH2)e*4zh%P9prx9^z105ey_oQ2iFZYOxH%7sHUP#|6#ovUl^KLUUbGeYu?Hc@4&0s z|HwOK&)Wl&X0#f^2$IvM-3Z|7s_i{ud=GN}HXU7CEQ>fB(dfB5w_wl$t?R2cJFlaq z&xf_Q*lae#8xHK6k3GV-ds5oH( zF&%oGDqZJ_;)}mO3?4n^;et#zVt@983f$hp33$Ag=U%P3(wr@4s!qGztf(b&VP3Ky zab;jMpDbv|-{B)L?>U%dXd$sbqG5`^#dcmV8wv2*y%v#+amqjUh!FC&eyrGfzxh5A za4Tx+a@jA;9O*6(p~I(hTFjkf1I3|HYbe0t@`N<9irymJEIC_W=Uhv((Q)%%%| zz)LUV+NxrsQeIVw!PI(6;MyDaYCUXKSb<4m=qE53`Pkcc-IflAOR*4LuT*a9^+5aP zaxuQ#ZE?e~?x8hr3HA5mk1alz2Y2%LrgMKt?$`NA*43n5=kgC009tpI#qE4}zA{ff zNIo2s?PSeiRd(VeUPAfQO-EB}O&o0`zGU5cn(=_kK9RxZ_}R$?)OOyixk9OW(T4Cu zJOCTBOb*-4X6v;lpjg)NgkMo!&HyW=)$%uE5*o?pea~8=+52UDi+?_~0nfMhnRrca z6Q72mJoiUs>B0Juz|)J!@U-jGW54KHo0&Y#iFNnhV)c^C$9Xs2yd@sbIX=k>_ zf5&516a_))fw}XMgV#J|;}Hs`W#o$oaHP`glQv^?GOMy$Jvh0c5M)X}uES?gRWGQ# zy#~~~iHG#vK!hQkIxxvvpOo$@HJMr24X zBE2?0Y9I_UZ#aHu^%#wkCKJw=B#9q0S1msDx}K8$=pb91XFHJ!IK)_!~M!@lo@jJ_}9&*XaKe7BvV1*R3UIslmm*a|)P6$Nigv!)x4m2fgUHgG_YX4(70&T{pn6fr zzlw^8v51OS>Uo^Q$#78-F|k1r8tPJOr5YBE)ku)O4P>!9+M`$ckn476{u1<}qjA71t*spiZ4>R03P_VP zG0~7c;$%z}dHQiF9tI~?_>7+pOacIGr9ae`fur1bo}3@Y=j$(ym~?tS8rw^1Y8VL) z;C0+jNA+Yf*)OiX9u)v3>J0#i0d>NF;GFp;U!#D#Oi<+M(Z0H>DVObGJ)NWTSANRE zCEU;sZm2ykZ@V~Ex1I>5#C^L5ln+fx@m}|DXCwHn2;k4S)#14`Fsd{rT~s|aRhzHV zDwzMmxiqNW-(2E&PMW{d)Ra-Zgjkc!Y%9l#LPJMWT{R$s#5ry<(Ly=$Azm3K?HlLA zCt~-st++$(;pqY}8a%XS0n^C^j6kXa0d8HM&zqA!Oo*r9sN_>mcyLp&NJR5!`GAMu zS$I^smE{j*bQ(9BGM`)E)z$R{JW0b*DJA>c8HfnQVR((q-8B^QSbkUhJZ4{tR#gQ` zJB`BrXZk{9cp-)%nv2GO5=JDmHnq*9hZXRjk524fce{u=@Te}CGl~S%E5n9V;63hl zlbL{s?Co_f(6Vim$jM4D5O8~gS>==xEU)mO*7YQI4no3C1q^voAtargAFd}JX0c#@ zCV)T>tJQaycXSNTE{d&I_{mYuYX=B5Ta>)Mc7!0{ZZcUPMkGr+i@0B|q~dw@c*ElE z6!ekQgQ`SCPRnJHsyft}^P>GUZkRofQbbKcYUwGM8SMSfNSr!2)Lv+zAd*tpI{F zQrSr{s+77jre?c7XTCI=&9HxbV(|8428-)`*>}OqPh*r6844qv&Y63nLCY;?V3B-7 zd~T_B<|<8Mwnz>q+7a}+&)GWof4y!?zaF->+#gp;eM__Et*yS{?}P4wrfj34nGrt% zjIbzDU^f0I=W~vyE0mR|%z#xe@wXU0q>K7q`&!kgo2?e>ploVyOU))N5n`&@|abzDGNjk6dEV z1P{#mro99FPtGC}zFe=iEVfbuOYwWZe+!0lHa@D9Xe1Vq+m{7(lpUJsUf zU$1{5ZdOfXJKSzalz&UbBkI7YaQaRylpM+t4Egt%%~SjDN&g(r7f^^HsTfrjfHGHh zZau&6=I&AsA>`Be&bK97cX5+-6`6`(voT&r_29P;+-V;ll3%|&ACH(R}kwo(jMF?{)6tkfqOHvsAUdxCS}_)qnL00?+2} zR|)<<0I5M%zR-xRT;N~MGtqf7lZ_V?GEQ&>@hC64fb$>z;3uE`+!y}(uRrl0U;WBU zFTT>!N@bRm6(%x??w)SgSoF?1Q@i-|EsIO`r4oIv&v&J{OwN`=1}u+(c}!vG z`3qn8!Y_XDi^j%ASbXog&FopZexkA3JmEbT(%NF92}a3@6Yr2GMu{iiNqB{Tetnq-+uOAzw+4E z{`sH2`qi&mHW!QN3xM*F(Eaqo<2^$-I9f2O-Dq^o1bj;DaasYGRY zDZF{d^$OYggb|L?<~^TlxzKEyrluO{&W?x?dhW#+KKl><@|j0J^I*MzyVyZv zR#;k^$mF{E2G)VzeuN(Wejp}68A!fPzkTHr{lT*Gl&3tsPJ#OTLj=tQi~zL%Y4O@U z3CJh$b`HqFjsSP;tmVdH%Eq|(=XZ8zk@=dduUoltMa1BJRP8%9i`RbUTvIemn!@&MI?N5)ndg&GlQ}CA z=Ag$tSQ%yps`gU6cJ8v{wTH-;@_nF!bmZtEiq~FNRuaT(KXbl~;UQzsTLT3S&C%<#5sxsl?v12+Y}spflC0~rst@NFEl?!(8U@fv@{8ipAvMDS5pi-^FV(kg>x&ex zUFOi9mCKgibAr1MR#g`jhNH!WwY9@sLEt5__8=sXG1zn2EWJ)>qHY1w>mECHWO~Ca+Ndb_5QYzZ z=pjX?ZI$=kd(Zpc_nzO3*KULZv@R+scHy|Q$6byC`S;l41<%Z+lKsD1&XEWJ9w-in z{_NSaki&|Ka#2$&D=UL%Oq?X{-?yitvI?B%L;CDl4F?V$Zt2L;k-)MX4u>%uq9*Hx zT2WD9!AP>q7oLA^`HEF(7>Z`@>YKLQ^Pcw(A6A4J*aQBHqOQqrKg=UW4J7|Ck=Wv& zz+cB762J3CGOY%Z!5w+ZQ=Wbgz411>|D|~Cgq|qV#*T5r(F&9#V0~Et^*@Ti)K(e72>PxvVffq75^rg~inI zBL@;GG+l@l7Sz{I>}_vtJb#|o!$p@Duie))oz^paI5;Is>#IV*_@DJm5F8ckqB+s;J9XOc_-_Vf@mySCtQ`eB#GHJazgk=gX(gon5nN z_L?;-MopSAa>VdA8Lxfvz=CW%Ey2B-;Iqe>8wMi#@hDGSu@f-&95ChnzK2} zgUc?HFuzvFm*UX&WAd2eY*G_V}a{Aoa+i$pe(xmZMtX@2}Zsb!xd}80h*U0JQ zxgiym-90@V3?R>xe8>QWX7@!!h{Pw39oc;1U~}WSEQRCoAwG>4&fl^5dJONd;iIp< z=9+K)`!{H{W*}bsb-JM~TzO?U6q+?@%H2Ht&Yaob*Kz86 zt7rO!C8djJ){h%Ie(CDdQZB_;#YNJLCGR*Q`Bt{OIX3=Uj)YsTn%HZp8K-JCj-S=&{2O z-h2Dlu_NZK*;F@X^e=z(-}?@nrlWc}zG_HCS5NOi#cv}bAAk{^8c$C|7MT1jBipHP(e^c-%7@1e%=-HZ6yZ(_|3;_5624k?%jLt%z0jsOb1Nx z;;OX}nBc}IDPsgI0nrO zBOsS^!iJhln~|{Ao62#5&gmswE>W!ZuU)>l*AE{&cJlnG;}Q%7OVp!A)aqKeaDf{c z^3*d=UtYX+E8BCijZ|YO?1-A1&KWVi(r`MPdof_NAwmdqs=?Vw&dt^huPBbjd%H6y z8ZWr?f}2zktC%!?92fTv9oU;X*I{UKSI#c3Eb3_KR+O+w0qdNwWIHT=E3d~q%P+5~ z6#AOXRK^j7et4W(gre8@>Gf+?N_y9p}P)7SrbZ1E2d7J>N{@Bh2{eX53wN|h}VvJ#U65V zjz^E|2M8B<+GuH-1CKEVs9`)%7bIR*C?7*by0>o8^gIom&kP+;0B9l8YwC6?e3B&)H^yZ7@?4vPJ-#a z8l63R)}7a`?(FPL2~p7VKl#p!FKkC13`W?H%}kaPB%5u=g3<>kS%M6p;0oJ(V56T% z;EH3r#2;dX!0Ay!_gq?Y6KF|BRdN*EhAj*0F)o|Zeei?Jkg37T>k$6G?J7<%1u3uakC)#juTZZ)5N%%y8u8U}YL6iTP*P0v9JOb}#)MJ`EF@N1ZD z!oWoog0B$Q!A=FwDR4_5$pHm6J$|w*E3oXr2izXyL9xh>gmx*0eef%;;1h&e=qvdg z#8^?_gVO+!4OItwL4Fs#-he#i>77k9&;A%_hhD-o0kmThu?Mo8O6ObMX%=3Gg>xc0nq?Rq|u-Oq3PUU6E;CY@g2U6D4+70M&$MNt%YX$#hmaUBU3knhr&I_SA_~CYd!Ij4BKW zS>hc@rz)X&J=B7pvpVrdScXP;>;(Z50##J>XvE9`xqXig%tzBabS31%s^AkA>EK+J zAV)Mpb|$TeG&-j13##rrIa%f`+EEeCWhu0p916RpN#WjUZ-Yoj-TOZ6^v0lw6r2VU z>d*+=Bp4W5L7;<&sS;!)rqCZR_@V~J@jfm5dpsaEhk?Z`5LF;6^#HI}Qe0@;06T~c zuE1mj_o#OfU4#d2LXJgR1I9S`$Rp8?NtOY%m!@}S zPN)BY2|-`M9w-!EUTm!B^ZMus6Ht#W7x@RSlRPP7W=#Py)S$;EReu zMR|1oK627PP^oOBs4gBhh38n{Fj%A+M$WXLD;qCd=-g5g9f1sZsUPRk0AOIN`}vQC1Q!$>2?nio8mjEv9Qz)XaM2gk)rGW82=6L|$WvzZK#1k!*sCwN9Udzeqc^Kuqr@P;w|%Tk;Z*&Wa#1` zy0fw`{X^3abBoHQ4s!GY8$My4!T1KcD-`vB4#2^1(OSQPis6RCjAaEdD@VfEDVhYd zhmnIz%%-KE2dcwJl0||h0f3PP#^-W5vGPVmwO+^sDJS<>{SFB;$~9LO~=c#Z*wBjVZ(18QLA& z)pdoIS!In=!m%m?Lajmi^MWh<3;EUpC_FnC_n>vaDY$zkDA;l zAYI~u{kM3Z_oP{Z^$|@foi0Pq@-;lVZ*d&6I|fyFrIMP9Q;?(dte=|L6PAz zNDmUzYcw9Xj(dZz(66Ww`3OV-?c`26vPU2!=scVm&X;*n@p&&?7*p&tsc{S$>lFGY z^7N7((#0huzVBpBLM?LL@jJ{KMOIbWv>e<(i!~e_{Z1f{46dVs5oA)3Z_K=QAU_!l zXqv8v9LEH%xEjWb0xP#Fo31Ea3YlKnI z27Ka*q9~ImPaZR7OjA=6<`Dd5xa^R;~*z~f&~D#8&^;QEUkDvjw^t0 zWMG(0XYCDApjc+jngwWYY;45W!088}DQF&hY=O2Bmrz&mtEy6{I`Dby6`%d^U01GIxnT9C zNz-PYJ#jdb$=GW6laGE{w0cjx)=26KE`=bYDX0xffz?UiSD}R-s`X4_{?)J!nFGMCqHq;^zr+4?@U?3HCt}Fe#5Gh#}9TVGSKxv-U4^x8Hcm-Y;;n@3yHN!V;+O%ck(le)z(jH8*Z!jn#7c08)jypzIms~i1 z4AMa5K(I($RTL{L3N4b5v=f_%>pof~MK=>6GQ5WQS{rdIKJo5~?jQqF)tz#HEMNXtfkP8m`5)h7x zg5`SL%}Ss}5!|KgYGHwv$yf?zA(<@HIoydFAs@&_<DHzKYsh2cb{o$zVp^w9XdTN2Rs}x zVnom~=pESnG@+s1pqpX!vu4x5WS8R1AQ9+6P{@!p!ccgaIrxrHB|W`qI^&ZOoFIDS z$rdvi2|#(cs`Tz&ksc%m z1|1UM%+Th4c*DDO5G8LpxlDt(K#AmcxuVaLmm5z+2!tdu)K8V5Z<- z@B-gWi#UXf^n`}?TSPGxz%2;8X*-dSO2-Vq(X`2E>1prSv1{iOPdstqLN75>Qbn1T z?zv^^fQKawbcguideH3d?(Q8sc5K_W4GDb3 zPayOQY2Y#L1>r_q3}7D3!@b}D%J1mtz+J#>$Um+_T!Vw2R26KXqHrUsn>%+dj0`k8 zm<|{$jHWEf^XJaHV!=F&m1$y*;1}A8fjk3Z|2yf@G|p3=^7PyEd#25wfx=-r)x^x? zTre3afS}&Y$ypZneOB_3Xs=BJYv?ykjRV0$>=H_Nh+ejGxI3}hwLGp0_RiblTh z!VAe1>GYRgddaqO^^+z|YiNL9j)tKhiYx{jtiXG=3ynzCG*M!DS`fmqLY{d@&|w&kH=@vo{hVL&ccR39t~1OQT>S^SJ|wIKOi-%Kp5_d z0>^`D50ydae(Ua)!gS)P3#*9g0 zS1n)Guy~p6`@J2_o=p(M3DT4)6RzHL<>Dnv(1{C8%}_%RCX&gP*7k5X#G`JH8&fy7w5+(Jy?w@vskOsLH8wW^m)UxwBgvBIyP_;R zwg;Y8R93`eaal6TN-HXdl&UJ7R3DGVY&&C_=GeMX8`fVrW$HAM=Q}%lEEiz!aH>4C ze8`x((HFZe)(#&rWXSN2-ag;6maSawrILpa9p)u|V*Qkg;#f~-2ZfA7&-76B&|$H# zo=x|sV6gC9QCVe0Rdqb1j2c;c^X<146~t5B{r%~b11uUzf<-XLSjbtmZL_jbM*yJIM zsv9$^yu5tdw(VNjfZ14ASEs02UvEEhRSl`G9$GC5d?u9vqvp(;e*N{=%&2b&8%B3u zCn^Oqbt7C^T~#|`cz<8t@Zq)P#YO2%!n7P1yMm&*wmov>h{}qx=bwK8I2sB^=gysX z_RPs~W5-{2ZtMmQztuG^uXP)6YEX`eM9nNH(3GGP&-WtJck&IR_Y@NP;<* zAn~wDFc*dntx;rt|NcFWz|7-O21Z1P;2n_>-3vB^OUE{BN8dn3V+;!JXA5|Blw2bLEaA1?6yBh zgSv^``1)F z2WQWn1rN%%a-D4#tIA7o>s6aJ-ges^7g}3Ig@T26ypS_(VwVW_l&#hKoNX#41(j2# zj4mnFhYhW&udgpEVj);Wb;R&-pLpcsmY44C>;2G&KRR>f%v366M4}jh70VZ|Tf6e% zkA86TmK%o+9ilK7GnLBdnhu`vl0>gE^RgZ(EFV(7<>p)9jo-B8&KovgmrnJsT()}d ztht$FYV7FBM?d*+&UX58;yoYuX#M1|3g^UQ8kftizwx>m%NE~v-+Mm(@P}$g4&g+Y zRbp>yo1d&Rn|@4ox)rlZGV!5E6FqsAAmzh>R4g%QCa4@;K1)6S|**M0oK_g=Mf z;lTsPZn)`PYu2rTF6DS_`O5XTtXpk%wT8;7u6g&pAN;_5R??M#bDpHq$@xG&Agrq@ zQPJ0;Aw_Ua$&I)+mrZvms@>Gu(b0|3^VE>?izi>ulvrV5=_@;TrPE-kC+P~5{>!`e z@{+16;;xrpLUWQ?@;eFcV7d4(USu&8rDOQq9H)ea)Q$hthwqMXnG?6M9@3{*mMn|7>_j@0jQ$Halb4Eez!AJf^DybYcZo)r*;d5Q*U%PV2f=Ls` zWj*QI+wZvly*I61G4sNO&JCNk+;H8Mn#}dnlXZd9izZK>zG&?{If|jB^%2ifI6KTm z!-C=pycf|pKSSacDJU%{uln>SKauJ0=}TpAzw_?tlj|VLS~!-;IIA{nnlpdlM?d<} zyY9Mc;>3yYZUZM6PW-xc>+ZSdp1>K!L;&6c;KSiCKu&}YjjL>4VEB+`M;dsG7B7AL ziJ!sE&83t0Y4hgIV@8ie`#4Sw7nI%iz5qRXVXBLAB9U=< zamx+Yj~_ecOjF0ArEBhg*DaX05NS@(I4xd3XW_C%v!jA9(6&e^?Fb82UipcK9$340 z;f1!;tT`*MTeYlEWls?xVUo-#+NPDupMU%(VL=Cb`g+~!$m*}m*o&zrK!Ha+bF?#cP)d{?$|t2DwyFQ9g58{po{y)BW8E z8_@2v1#GFPdPx1`@x3igpZV-R>^*i4Xu5jw^qqTNO(n$5x8K!ueBaNW_|fh|CwyJL zZSA68KKWwWQ}4X{Jtq&p@`LaH*Ur61S~|MdtX{GGl~*{~STKK1rl&P*DD#)D{`%Ly zp6qV#OWJfGj0jERT=JqE=xf>(ZA<4awx2$8x}-3?_vL55`>p>v_F9t-trIF(y>4Ag zz2$vuzOoiU(T1fx~Ws^#*XdjX!(zS|HihLwiAyc#S7=nOLexE6c?`Abj{y=`Vqb_ zfnKSF247TZC#>4>V@H>2ySBY*I`p=lSX8}X!}_k1`ycz#Kkqqw`p~i0u35k0(DCEF zT2*O*pqCQeP^=)6PAQ7oFulR`{2%}LN2*Ngy709XRY@k23l=Uct*HFgfBd^+ zW+8O&*~1~jMGm-pk`CQ2a}F1{(VF|vM4Wk}un z><)|@Sde!74}AFHSD$0dszW9Pw)ZEjjI|E1?%$gsVOv**uSwshI)(q7Y9iuHLYIL+7ajkA3NjFYh{&%9tx= zk9uY6i#$v)5k{F@SY183FmiC`?u;*3oX%;nO*dTS^_}|fZ+(CF-Xo0{+Ly0fbl}JV z%_!J-)ioP7Tr+86-LRo0)z!rl#*gXmO&OuGbyrQYccr?rP^z;D8 zp}h9&*#p?72<>k=UOURj(xXl2QeTH3Xhgev+WIpVn-P+(OM=36clP+6aQyi3tVQo- z!I^+A?dwZZyy{`KnxWT@7`}AFMp=|R&Mz&5QkBYzgShORq^jFrdg-tJ>aXB8TkKsO z=*@>8ez?EC|FvU4WwISWU;?x%^z5at=pZHhR4Q@tA`(?qRrI8ruE9f1!-KzY;ese~ zre(IYv$?hpAD9C1W-}~P8j~qFHD<}v233f9D?+rtKhjkT>V4^>Pv70hwN_BNrK`c6V)=UbL!wJ5Xvoh&v4Gje) z<+)V<%xP0(RSv}>kU7iD(#~&`&O-A7a_G3Rp6*d2hHrm$hedq%pZ(zv{^hZMLlT0Q zNhK&gJ=}cTdh_w=QHm<-5LAug)7P5pxBxh(ke09>5@^{9Eiq9jO$VRTHO+GDNCeg= z4ZRW$RSl`3`1JMl%hs(KK5S@MH$sLOkAz|MCj0ugZ+q!qzxp+d7b*fmqtZwuf>v$a zx)op#8N+pq9V8zjiZlpw0ojlUWDoL#w!swMzI{76&Fncn<{G+#ava+ZMI#q4UWCz% za&m5F@4h_~Crm)Edz(6tH0}KKl|B#{^x%_cbW0p@d;G`S54EP>727? zn=I1<)WyPFNpS@)85=gPA&Sd>Qc}qi z3gWT@9URk)6chj_WLcC|759Q3fBbPM(CIU0x;__+(8;X+rIWA##j2)xKD`f32(PMQ zJPrj7Es1u5;JF&%Fn|{AVb5ME^gEOhZbt)Pv~+ZI0F^sCq356&rJz*k*+@77*q|?# zWm;*Dhr1^B^`%DF4Lx`MWOr9z-I(!?lS`%hq2$2_(=-bUBd~aWrF@uWD8CEkceEvf zje~-$LeVLz3>bU)<(F$~Yv<0LgF2zN(HK5Tr~{q@4A6XfXbxLL)6p=13cjIefXADU zH}BGW@Q$X6X#d$W&2Y2}OQVs97>X3}qP~2^;+mRLk{@4Owq)t9-8)`*;f3YPms`1v zuB*JF!PvZJ!@6CsZhiKJmv6ZFHW(9DhGMW)_V;vkcC)AHTr@-m6S@ou;b8)k;KM-n3<;(%y-DV|6ra97 zOu(7wN3rsc?7%B?z7=j1s0_*S-8jnwK7@&njV9uib zK>}io&tN(Pggm20je_lR`t<4G3P2r%L}_U$;5MD;A3uIHg&3zXELf&;O~ibOd8DW*-@ z?CnjA96hu@#dUV|)l`qzy!nQLf@o<;WhQMxL$Tc6K)h;Aqj=RJ{ka!j{Omt`;TvCh z?0aAT*QcL-zNMAk-U03kvQ$z++lHah7A;x;-EEsDl;(j02fqGq|JBykwqU^m7zT+X zt;18f&~b2gSj%6ZzrZdy?uo?Ep+kc`+JJK?L4f6m5hL(b6hznx!2Zt8PN=F#B!thA zBS%J~^vn}(w+vlNKpEOVd)K`AGY=i!d*b-%`YAJ8+nRy;@mM^Y zu|m;UPfwB)#R5QQGz42AmvO>jJt!YYN08ui9*SkJP4C{h>#P6zjngMzTfBI2G{RJn z&-rkmQwfw{yUeM<|M&rHcfDjf7bu=LA8&qu{2<=Ehe7G>Nsb&fv_I*llbO+DCSHHT zHI8GJmR8h`95Zp^gsod&eDdk1tE;Q$O`j-wmhUPfCeN5Urh3P7KmY0TuZYp|spCe9 zwy#AB=-7X-3m)XJ_+Gl9_jY&cp-5|&30xHotzpJESs_S(S((b@XpJd-8S&}+V2g6z ztl15GwR<-CgCZK>TAb%wX|tf9(57t&TtT4@t4KH0@Biq> zpZVMuzVX<HhDVDLfrJ~12GJ`j;=l6Pj~{yYLvX}z zzwM5~LXtOGQ-GH!P}X%wX3nB1jWV5ddeNdqFaZ@=3QScHW+g@+wRHEut+pyFDxCo-~0SFf;J}0xyZa=Oi-}?cd3!Oe>d6r~FH=EzX+J08unqv;|g!r|VjG zXIC^5Yix2Ge>9t5~XrhmJT20 z>7YGYQ=wA}UjHL{J(Z_C<>`0Q8$)}bwxGp=c3JnEx46fkD z;N=|XtN{4KA-2p1)gdWIjvSdWV_I1Wr>pwn#Y=bWc*S2bty;rn#LtBV6t@HJ8dPvB8iE;7 zKXo#E`an}dWkcxz_|xqDUG}0cR4sMW^;}KYVP25m%)Aa*J}7msBGF-b%V5->%l2+Yiq@@J^uLP zv3R^;Rs#kg6ha?7t{?_Qm^ICiK_|Boyyvp6V=JmoiqQAoe7yNUacU8=T6~}0bUJkO z$n=I8rDduhYb#f*0w!I!*pC8NuUd8Z&;g9*#l{P}_wB!S<2s9$zt#0u-|*Uz1C1vy z^mg=YeRcP{Z@;NDiY9^~vI-P~e>*~eGx_kHTojPr1I09eaU%qq++E88+L51hfoq_cri9Eb>SgznFS^)ka4R3qX zrcDn#@BqdLk{>*42O$Gy2l_&7WrX|{6&0{Vj~zRPugo^4mnx&tC~ibK@q&2H%q*Bc z55LA@1+Hh`bI(2NH(m{kw7b9CG_yq|r8b?Rh?$Xv#e+T$&cs-Z!n8n!a2>-0xy419 z_Na?ye?Ke|^ksN$HRNG9`eJG+b=08 z(j(EneqV%{9}bNiUVHMyF?0!fL6cQYRkK}fXHUMiWXUpJ=S;`ma^sdIOO^~BJ_G}4 zWpXg3VSJ$P!P6qLg#!JfC}h)Q=_o*yhPv2hIgtWh1oLN**oig4-=CLgpjbm#dSKWt z5xW}DK!!{C^OUEz3%xP4!)=1z3DOF$gp5#tj-bFb2hM?zz}Mh9)Lh_*1YenIBiY9U zrdt6y>Ethd@pI^=M;>|fbD#fA!_28a|M@QrJ! zccx66{#PIW`28RL(9G%6UV3@E>2sNE`st^h8b5KuKmOC-eEKtgzjp1~Z+`Qer%#{7 z?a+^KN>Ujgy1uowb;^_}@hJJfXaSl*PTr*zg#mpFWY%>U1i);xQ4$88BOE?_7%K9i zhaURKM;@9vb0z>4J{5Wjv_|={Xo2Sr1OW>iIK$8Y^Em>3=pmlmK=_DG?#!vz4(>nH z*O$;VrLpe><^$!qd+@3-vv8X!WdF4Lf(fN;aG<@7%ewtgLL>)Ct9->&nV2cJJIlJ}S>Y z|KdwP*7CBr#hf+pUqP{S+6-;iWbF5jA2|{$EPVI9_x|-~KRaRU*q{9Lr?d^jbN=(Y z--*Qw{^_6o=>rcuP&azi{sV`iVcL0~?Ck~=S-Fhu67HL>50nM`7Z(-uCsUhmzWG1D z_n#|QuGqTu<^KLumQFr_1(DJ;wdq`w4nY8*dO44?MB1vaoI7(4fb__x{(9Z|6=)CS z`SHhpJYh=x2S5DK-~HX+u3fWY|G@+8T}fFaUq2d+puaHAV9N$8G!S@sc(8yA0D^1n-0^Bvb?rkRdGK%k=5N-n zUHxDG^Z8Lu^PDc=cGV0FhUZo3;uqM_}_6YPkH)(PH!C4mDi+{XZQQL?I-pEj7T42R>=~k z@nywp*LW^txuIC3Kk0Cx3NGCjmwJ|7F~c@$cJ4dW+j*WItqGCh@>0I(KQ zg0R(>a$HYGI}9haa^+I5Fur%+&W;mj;d>?AFlvby=KO_od8O#|=`$yf9Ka-umDbp1 zTDQ7^uo+&0MjKTT>+kF7NI_SK;gAY#Nbg>APDJE#4*ITgMvTi@+aoq^d>%Lmn~XPa*`A<9>|Cxes`Mn%f>GvW(lI4<#lkCu*oYlFc4XR*qoY!|prowg z!kJ?d9U%;{@F$NN(%RM6kx@&Also4SSuU5BV&H#$wVLSZJk!T>ilNvEG8Z_(h{nuB zFX5hE$iWlUtQ9L(^l(vNQpd@|^wOHmh2uq%leuEiVj*1e+*40pUVM7fZf$Lre69$R zDQG>mA{J^jq3+J+oa2HWs>A^rwS)w2rAO5km&8I{y{VIDTSzuUrMS3g;)L;X5u55j6`I@e!arO%r;*G%b+7n%+p+eI4|Js}j1 zrPIBm#*I03;vDB%1uAW$)8g@KZocE+zWLv7rcbof@vzdD!cYj1iIU2)-sZE@r%a5O zkLc^|KD2Wij1^bYGZtKBxuBxBfX`mM(2lZ2T{A7dthy?YA5)C^uGKKU>d4VkuFBo^ z?t8!X@86}qh>w9T> z6vOOZ+h-?1LN(Y)L*uQqt?NcAi>xYI<5T26-t%$;Prljd&>)_p*9htK-TxPuN>Vm1*>j@DsX_?9*+AbAFUk_% z2Te`g5v7PG&}nGA4g?X>v{5UE`#eu&QMye@aeZF!>1|``E$8TLle8lloG)?VD3|P3 zy{rx|nL&HFWJq6k7w?%8Pp@JJ-3_2UfN)qdXtg^K8=StPWbh3cz#24aCO)ybbWLS~FF@Y8pV0GX&#!ZD2amCUdI=Ka%6=73a+^7HkZx8Kw@$n!3 zl&njDfxs((0>^hbIinYIc0%&fibv<-SvK%if-t3Y5!ZRwR9MNfDq66Un5PZy@jgYE z#k9i+&=g~mfN{O7cMvD2n`YWUb|=gqzj(anZ6j5wdM zd@)k&rurqHf+?FENnV&vZD!@_VNN#ubT6bf7UmNSe*>PYKE12xN+I8&a{v^H8#8&l zq(^q{JRJRCaKIA%L^**MZbXS5NgN4bpBs}_Cfm_<&q%&dIB>SqXXs#D<5!C@EOpr&UZY{78z9=}Zuc(^q+32jz>@qMz7F@_Cg^z*6LBvI% zl{64kmN5}+z#zb?+9<3N+y#eB`lB{GTjidgG7*72_|@o0_lY{38|<0scibB zX@Le4h%jO5=;>*`*y?6z%W7DY;Bx?iL4CfXQ{)Hp5*%mV&P5G55{}c6!mf?{Xc>tS zMVCQiJc^;milfts0dh=!fVC{H5*o~Pc6W7j^*I^Z0T&Icrj5q)bU-7`Q705qV7B6R z+R#aoiBd7qCDv%mpd<2FdvTdY2I|NWV2Yz#kZ`nwW;hBWV-^xZx#$Ar2eE&N!^9H$ zd$Rg(?;xL&z*Esv_gAAXc6fGIR#yuisAj znGDdw6n1=dAO=XVTVP|WziK_?=`Wp_bU}PDzmTL9$vw#s%>xjj^>4n{PMVO385xf} z<)hq4u@c@oXpb5K%aLAs6nTL%Y*OfP?^L4-|mj z!BpXOS(h-UplzVg@gEd19faeHl5K?5Y#OQ%9itegE=3Q4&ENsua)1e_L#QtD?Wph2 zy)@I*0?T+@2L@JTZ+KuN< zBacBLcO8KjVF92>NNF)`b>U&@i~gnj~gmP=J9X zncyw0OgNGT-a)d+{8C_qQFJ?Ct)fwsdJ0oU?Pec?)S65GWx2y=sR2IF!K;afl30;q5=oFW%Z8>oM zR9OSMqiq-)7Z_$}TqZ*h&ZZLjK+S?FfU)+8+tdz`S7{*wd1xFVMl?Y#BVIe3gv_mX z7!6(r1q<@{H7G=7JIzoA{&0nPdx8g8VO9{qJnzHzg0Ka?w}>*6M)#@H8%L z!3nN6nZjrW?nV32wp~=Si+%7|>=*7P<%pz0N2U7ks~5Xb%WX4%m)Q@EMfm?ECb>q zL+}-Z1_Z?H0Qm0gJGtOAd`!>KdAp89<`D*hB$ZVWSanEawt+<`mJQQ@d4ap~xSpq9 zBN7};4M-RX8Ks!cArXB0Lp$69U6<(%7r4v1%H^`6=Tw)MM#>7Iy>cl>lvU=>}Dv6Na|_SgxRlFj;jL>ja)(ytt4zQ>M+ake@z0 z4zz)w9cVz|zUlmGS%EW4E+OsL5rLzq+>(8V0&wtL+U7)Br3Av8x-J3`2Rn>=F-v*U zGIWhp+aSUcbJ(X(niuduZXT2t<)a}ZSfZxWqN44XOpTCF!pQCV3%W_Xs)o6q__aFV$wBuM6PU8ct<-p0q$i@4 zPoN`XCL>}csZ!V(%y<$Y$i#WDAPArCqe`~rifjRkRy!fNB+RNV%7V@$z|ByQdB}?> z_!fD>JO%8>RB;7(kVKet z5Es~9qN0SOh6%XNQEV9SfXPoRm&-7Nn3zMYp+-O)&;>^V_jrHi?AfKIC5??2&@+n! z4{8UaN{1y->mbxV&17)ju}yG7Rmnbp*DmUY@8&oU3WlZuj6X?`Adax=kd4*Cy!L>o z>-c|w1MKfID8Sc%?Sm8ySuhIda`2U|uxf&=!F)$1q-0HlWsGYAG1@CCDgfVMSQ1?- z8AXBU7M5nxORooG(0|p`%Tt~Ph$NcO;T;L>n74pZ)5ct7j^FDpV{lv1gu4 zw>xmk9M>o)*>d9zBdd#ATN+J)R=|lD=q{~>yR@!Iju#r`spuUF<>3KoD0FJWv@id| zqZ`((tQlIfd;h*{j)4aSqVeDe$_nw2X;|C~9tbecb&Zzez%5y(Ez{&!1sp=-1UQ=b z>dI(1{-ZbgM3hMTnth%yp8OPEmRXPzSyti5yL2EM-Gk8)WcbRSm7!;-qUzWVrx`cj zc-_#_XyfU#04x|M@cLzy7KBlHd0EloMGKd&Sb6N&k!*$(D5`-5Pt%LboMC7-9qH@+25^FIp>+e}SBiUs6^5$VWcBcI~REv**vAHT&ej zeNfWT!h%md`l;E|>bJl83XH3}@40*P)mJ|I+_R3aedLi(EuJ>!!0ufMTfKVAZCkEf zdiL1Ct|YD9Le?ruSiE)~wi*pxAkbhR{?IV^Jc1}QKEqZ}L`lKLfTi%}=-CIePJ&;7 z>ozP2C|Y{o8rOXz6tQee)p;`qrR#~X&}iY^57*SLy?W#3jVsQcKGxNn1?wf=v)~LD z6kUJEt>dbSn$MlcIKXL6LP;oIi=xVqVB(8Kr`n)`0N=rL9o7>#Ow9ZhB_5zVK7%y| z)=0V@BnBz)&Ij)*FE5`lV@7jxGoT$`HBAH8(OC*?2#~%+;6o@B7SK5Q526S(qW%)= zB$@HV3&~`QX2^|Xr>xUy@OC7mEnKwZ@t-{jQ}q*n^$E!{j~+d#DKgAISdd_y0v=Ml z_VVkmzi$45g-4DZGlLgEX(h;H^5ciY8s->PLa2>q(}QqaS1HPywtoG(XP$YMo*r3_ zEK$Hh7O&l;#!*jHNijT!Q)DR|=FA)|U(+9_&?XW;CmLdDOwOfUIvawfGHe0zdWlP% zO(hKeQHe~6(GdM6WB)LL?E!KRVtnv01zt7220vkf<0909LMwA%AniV4)v?yV#kVXN zK#)*yMpLydTW+i$+S{lCM)prh!G<&tp!?>rN`2k7rd;z8bt2Z1k&EW(RM#YQL`#BPU{q4yWacqx-7%|JUgeRaKT2z#Lh&X8oQWuUx#?!%M0dibCePI(w;- zOUjL`E@Ge?w1*a~!AU05Xl=mN;5b6?AK4%YNaMRj&lixFyjNg5Z6LW6@7&D!7+Fox zfgm=UCjA|)J9obN#1lU|-`ItGKuvh9^fWh-KpCS)496G+Y>wzaPFg_V9N!Ec4Eutt z8+0}wkzili2?h5W%?p$`ly$J#3RjQ-Ga&#$HV_1csdR#B5|n{XQGpXDPVDOHI)3~( z%Sf-A;!~E%%ntB|?Zl#I8L4DCm(8*c`_98A$jBobn(4^}pdmQGk6Xh3AZKez%YO{MJtjXoH!z02%PxU>t+Fx*TA zO3HEIwNMe5lG!W;We;=&J^6?4EB{8EY|VObOv zn;n}TiANPW51j7LQgh%b;6Fi76oDZwDRF4LUy0X_k%P?vF2LYHyEPunTqg%HOeeF#z9CaU(3dY; z)qL^n>GMriZ)WF?1JyMZr6roKhj#DWn@lEW&YCuL>J&8c`4?YGB{N|3%P+o|wY*7_ z>!;6{CiwR5ef!X6S&`ga76=UIjIC}E!AS)OA^|rr7LSu9!3bIwV}S(JFxsQZ^qiKs zDoN336xjmV#h3y#!V!Ac9PHCI1qB5`*3sD<)7>-}_{X-JPaNNO@Br+VSe(v*NmXFUONEE9gNq` zvMH)W>%{bs$VCGoFozBues%kHNLnZs1K^VtMe+k9kK`vtCqr-!89T&IxahbMLpC#r z*UtE4Wnurq4>nX~!0g~$I#^ zyNr^!QfvW4Gsqcl_nG$7w{^Wwiq~M2*5rbkA_3=j$WVdfzlDsU|5jB zd_-sMOY@O66SoJ(9P)!8R45;WD;O#EkYzyVUmw~$<>}8uZ{32tWkY??QZwe0QCxNH zhV|e7`WF-3{W(rKeg6FRSD#O&Q|Z3URTQs%>*Voc)^564k3>_+i+%m{mYAxBrcRo; za>dg53+KDO-QCf_ww6ioK9H|P;m_4(hyZz#UL$4Xp=!n{y zvcgy<-J7v}@{?&@j`kU0)`=eNE*Bz^Nwcn~7%}pSd9%4xXJwHVkLhQdyKI-2!m-iS z<+t5*!-UE8P_12EozReAjH+sIRqN_T_jLCTA2FZ|(>9?a58gUh*=FAD3gxo*^m+QWNxKJ)Agnjz65yhnQ$Bvpms0nPx^!Ay&G z?sF5zk6E#N>4HVekfEom%{FPj6%3mxlP7N4xS@XfOi>bh+Aq4cqZ-j+BgRahF>~I$ zIk{YR)$&CnYpa`@8f{*oVe*|xmWWsAFbK9THc&+Iq6| z{*uV6Iz4drg)x)Il&jpU+xBP?wx+_|{MxY-)~#7Fd&(3|mD_v!Ei3DDo)OYZ0Yjrk zv|nhNG;T~uQE{@rFPqCbwxh`6y!lrEo1w=uzZtI`AVClke1(e-*+3e)e$1FLEMEII zScmZN>gwtM3BA32xM@gLH3k$=l1}DO)I5sUe)Y8ahL92N?d?FvF=KTjG^BdS@Da6b zZSCX7jj1S!<#H5{-=#AFdEh66zoNYS*%!7dss{6M{@mG(r%#Nl8+G00n-w+GcJZ8R z+u=wwLnlCs6Y8gw7R3`3ubm#^Kz>G#85h#U3FGQEUA<}8@Zl}z&std%-a1AP<^%dt zURpF^?C7VTeh&Ey%7&!VxhWGTT)XMYnX{+aZmvJsZ|3L-16XRlYY(ldQWR(Z{(Zno zo~Jhw>9LFN)eIjRSA^ZK9EMH_q7%W$f_*E>61X-1>L5}%!57j`!S^>!FpPrdWqieu zig+vzd#J3etg^Ba43C4NG26~rrZu*1^p)#3PMO*Op7(cNL@OQN6E&l>rgltST~8b4 zV-1}3o}Q%R^2=7Owz7#M2M>p%#_-|8tE#GVL>6?#oH?^MZQ69j74vjmgWfPHSOxSL z9rQbh@p;M<5eYSPAP^XTEEPC~n8JV71$pQoz`PjjE@A|i_p;)(qfS7m>ER;a!jFYq z(M`)vge(ZM&CRYv+RRv-m`$eJ-hcmtvu7+m`dZ5si`U$;{AcjYxiAz zt+{veoe#{NJkekg$wt+Uf8f45xmv#4?y43TR$u6@_7 zTUuM1Wko~FMBkyPirS%-4O7Mz7saXBN_g1Fx<~)& zFrqrO3 z(RcySW!;T8&Rw$befQn_$%j5rS6j{tP=|U;uLYL@Y+HHdm3QBL=Y=B&2(5ZBID7(4XZYF%+r{PK*!#57t`L zpcmR97O|?aQ$F>f`@@`hqPg?#4}NU*6*HOhE7VPz`o8zv4HKg!VcvD$gY&11Efl$M ztn9&0{-au0Goo(N-#z;AOy{|Ei|QwhAK}UR;`P@)@{tGEE}Ylg)O*#&EjM1bS{41) zWS`6FoF1D!W!m~>^Wz#lO@|rlIZ=);L~$XS7`&lzZjSIO8ZRy`srs8o9?bQ(_9eXA z?|6Ux1r_go|9zd^-HKea zasBmIZ(4Hbz>8;3oWJ&}%~vd#tb&!iU^?RZYp*?F3Go1#fWiJj$i0rux!oy?z|Q5C#}{9I;R!Y&snr`!K?z# zksO$GQrZ!(Sheo29(rKSk}JBB?zqXb-@SQLnG&2N$a9jx$;QT2OJ8{62L>G&toHP| zHIo`X^!~f-#D!#{?XLH{d-Bwo^m05k$B`w$_i}2m`ab=)p^E!S}||V ztXwKHZqzW0cXUvn$=~{X8wX%dPoR`Y3IRE2tD_X6mNkF z^xq~niS}O-)Px#R*=DoO*b!rAEnQeOWRPiF*<^oM59Rau#~*(j$=0n~r|UYLl}IFl z0oK~ux^?ST+UgQg4By44eY&-9$jIcN^K?xxa;a!29#=~GtQ6J8!vV-_HFx)4B4Rt6$x+ z@i&h=(VgZRo4eLrdfA@+hkRZrE-vot>6|@p&WtHje)xk2F;-Jqc(y2nJVBbrhOI&N z3eDxGEo;+;m$|)1qmrB4``c|Vyp{^$x@zG$^A^0e_0^yJ;3uvuw|4cfU%&puiDMYO z(A3#ndg|0E2M!!~>PJr;K16X{i;GJ!bhFukr~B~Qpj5^dwj-Gnp)}_O%wSBG7 zeX?cR3T+d_%aN#=O3|}YP0i&p(NMG~q?v~3v$cNElWK9?%;ddzsH3}I(e1X@W;GT! z(`ncxA)QP2^mp~AhL^;f&Nh>zLB0BRSm&|^@4~Ye6*HFy#Htc+#7kCRy7uIe{XhHh zFM7n{oXss5KYGLSoB2fihMR8Qzi;mke)wZcEYcNa&59+vcOI^;9eV8ax#wQmVx)VL z=k=3E_q9(S<2eQwD^44ZtC?SW;2TLUa`f1#yKh+V>@$xT8JTT^B&E8$)wpa^Tv?9O z6~_yc7$kduRf42v4K}O9asB#!gz0xE(Z(`VFGKQkCtzj4i9vct{z&~Na zgmgNMGjQ~ROR%}&&8fq}sw%-vOvEBRy?uSDG<;uLcFB2>u-NK9mrf-T1p%Zh7uJAxW$X+4XqiJH-W;29)8FA2fhjXbwPs3olj?4n%koBVnvnouu_^RFDWi7 zEsnpidxtFZSFT;RfA8*x9(u@ZVDs#*VRG>cwy}j{>fdM7OynL>wrzeQlzH8U6j&~WaU6d5sS)C||{~hn? zZA)4`a$8xvb}N&y-yE;~=<&0;+`uTJhQO{T^-5<5?7;(Q$#jNm`Q3Q!TrM*Z zuN{u2Z9`wYi+JtGSXNX4(BXCUXS8svx+JQL{?XHoQn+Zu&_Su54%Zh)ji0i2*G?BI z%*<2%)wR($TVvq)#fi9)WAWP0wBrOX!v;y`vzf`0C*O9*?SIsG?O=~6$#!nQM$vUm zkAypWdwO$*12A!|h(^1-nf-m7=S-bEd1&n*=*l^>=c5&z=Ve?jZEzE3PN^x5_U8Rb zb@iI!C!#W#p0xn0v~pXabr7`th+bRk>lry}_-n6Sh}Zs`M;`pnkI+33JjlSFz5D0^ zhvUEoLhmGWipW=8QJzg-h}VA3EUT=dhulHD_CrSrxK)bRuIQn`!-mlw#_0EKrmUi|eowsi&bIR{W-i;&)w%D$ zesmcUQ(?^dpl1MTjx=<`oFS~c|ez*FEbe$y0A}o8iuQwMC$4krNlI)*4*%;E} zLxv~K;SR2NVQ z90@bE2vu^~kRgL$`5r%hTw>dqQM`6uvKFR@zmcoUOVmI0`=#Z zCYt4NLT@rNe&n#`GbcOxQX|Jt@@ylYPCA~Sw`iSOad8Yqrjx1O{v?#}kz zyLWc<^wYcgJX3H2uPPFY*Z$fcJzhJS;J7-o5gHm!Tb5B&UKWYMLUC?^?A^NgxlP-zz3pz%cD-yG8Rv0_=jyU( zrQR5?JrWB?Qke_!+C?d2(JRiV- z!)DH`8#K5UUi5(jhd4Kg*Y0botjS6$L;D`8vIK6!I7wx*_=W+HOuaE)JE}(q7K_pr z42OV_=D&{Do=;M|_RhBUqGF2I4#c|Swoi9;QoQ!N@4j=)$TILL51WAJA>lyZ*4ECl z(xPCR8vbi29Ij;X+K(JO7yu+3_tKJqczSvYgL--K#SQOL{|MB{7RDtkZ+OpQe_wj^n4xDIPxW*s$BvooxMn8X@4CKadTcz> z^SE@fpT?udhr_tt>F(?xlcJk#0W@H6z=oD8%BwIQXUv!ZSrtW!FANUv+rRI=`|fLK zXt?K|d%pIyuhrE}#4XIIDFi>&M^!-miZ2{TE((skNgUmtZWzIW8-sQo@?P zaPbma!fWPLS)_RFKl;fV;B-aTI$K*@!;B@0a)yaK`+ED~ z%p(6tG~Urgwv-qR8~NPmkt1leHe0i3!I_eH-?4Y@-1)ulKMWV)j~cI?p#jvQCHR7q z%k=g43>!7FCvCu29y4~t_19mImR6LP3>h(O+Qf0MZrc3p^Dos58Zvk01X9PYGGt2q z)G@=hz5M)dUwTcBR!pBTly}H6b=lVCR-QC0D}gAaYrSud*FLLmqO8Jk%I7kqC~4hs zCS6)u91cfdB-GYc8~IG4I8Jfx1gW%CN~Lr3K0-VejYj6onb((vdB)A2Q$Kk4h=z0L z(HllGDTO1sOqTYoLpPy~DBE*jA3$s8jcmNQ1k!+WiDI1>(R=D6k3RPGZ+z>!KlqpL ze(zrn?A@11QHZ(0!-m+V0ilXS!^k5`^XzCDq+9ZN(WBQhAwA^Cv$fKk0d!}3*n!|} z16gqZI~522b-Z>hHW079t>t`3)nMjQy!P)s_LHC5H3q@=U?;AKMYKgDZ@{O}a{Jxg6hub-Id zOg5O4fTb|2ZszVCI}Dc+2g#L?*3;b;i^UpSaw@tn>n>it+y_G2rV`TOGoy`YDTI^F zQ!p|qgsy3!;sdMwGkGpYuV)TOqkwPZ?!(?=TbJKeXcntqo$EYA}fH z?C71pVAjDydyXGFGi_>pTYIxi7Jfig& zkAcAJ^$3gCe$%z60hBuJtd2I2 zIqy5{nQ^d71_6@9!9&XBj5NJ`&J`C&q4y8&KQLz8geX0~dw22LVf@p>4EzQ$yq`2- zJiHcEc>KgkP&z0Ro^(Uw+4}nW!8MhVrp}l;wW0Bx2qX|BH=h-Jud}_w^8Kt0caZVT zbBg1!_BOa9f82QO;0|<8JRCy((T}_&96o$t+N@cnmBoT8tX{qR#OYJbt$lr6ooiRE zJi34Xv4e-9u=ecPch!~aOB^x>EMB|Iv-Q*M-42V_ z&T$m4{ruQ*6YHi;))b|(vU1z5U8L7_T4UwA^qO)g9H-s-J&s;d2X@d>N7^Q=wXLJF zIs}#5)0+pn?b^F%+Kf7&6j-`^#S)6wUKvG~ojZF5`d$>|zEqZGhxCxc@c>9!(Ml^S z*Ijk>U;Wi5qKRV5uoX>bv&bY|zDtw#s5bp(lLruN_}2eLymrgTEnF}k9YOKhU5eMf zZvEAf@Ibuw;?g(AYiFCWFxaB>mSqT{SYC25Ub_b#08aW-LA>@w!-fyV$zj7OUVGm9 zz46*1KOXI1NH2PU=y66g(VueBf1zk}^oSuRj#K?%IqI4$=(^R_*>LjMvSrIqre$z9 z-F)5hrOO5nAC7(m5IT;{;Q z!a~mH1@4+#WbawV0I&{Rb zJ#<7Q0;!}M(PeadfeQ3Tqqm24U@b-h!$K%#2{1`^G^4;YhFSs9;9-6|2;v(!BEe5c zJO&=_7XcB36&RYSXP$csU~>Qc_kZ)7e?Pl^#&b_S8=+lYrSkGpxK&7E+4)E))Z3SY zisX3VSHJl8snhGe^u^DA^i!XlRW}_f9-}swPrvZ|vlAvw`v3mv{=fhGuUvlVWk3Jv zLyc^Pb0A)OCew1hqqV(l%CxD8xK4EtWZ<5eP74agBUv25bR&&u{ z&-afUI#5zp{;ALYbr4Ve9mi|WkvivjC?3k*GEbj6vFE_y-u_fbQ_eRvoP`mC2Ke5_ z4KIPEANj~fKKEIQ2mkn!PbKr5?b@8})K*m%#iOVfDmlPfIAj#A-Hb%!_Vefec=6gb zh2Aj+r+^1QPd}S__PM7G$Nj2=zUD@Syp#>i2Bh?wF=5soQt# ztf;7*F=JZs=&_ZR)$nH6);;3JjT=#!%JR}oj+`|zg6L_5i8@~ZJMZX`LvM`N{=}2N zr8!>D`^7JQ5i2VG|Ni-(KmPHLjT^(_wTDF8F;o4$(9o8VhqStB6 zv33nE@sjxX6HiQ;GUJn<`pn<`?cZK{=_UL3AMEN%)BD&y7mvj(v{z9CMa|}EvKP2+ z8fJfAa@Fe9wQq{o&J!vy^kJ+RKzEFnw~g2S)vrDDA2jvTV{xool@brxB?c5uF{yBn>$?z-!~`7i$j{=ByH z^?2=KF~w^)oj1j6r#B&aK~;E+YE-YSy;BW|Wo1RP>t-H4aKOo=HJ#$IWewYdvFn&S zw!b!L(4fEm>?i*2@4j^TrI-Kmm%lvMaGJ&fhQ2I1o_pljQQB>qJ;P#-IHcQcKG)Ef zO4{`9K8+VxU8oV+^!Nkz;dVxlMhuo<7ah<$*FPQx6pcp|MLp=b)|pes4(vPJ-=ESn zrK!0A5Kh}MaQ=pkFNGsfHXdobKmG(8kI2}zYOAVVACL4Xi;YKm*TD=&xnsx9ojrSY z=FIwviVD~tFTVKV^5x4v_qi{8`OBY&S$6Q?!T$byCIb~A>YCosNvk3XRG>c|y?szu zUl9z!Px{8DqdTA=36Dr!L#Um15w9IinxN#YY_v#AVGM=J;31aq`K1fzyP?6`_U-BI zJwcnz2x3V^E#K3b%jF%Z$l>jxh;boayApD8@E6}IUVDD=;@PqsKXLl(ks~Ld9*WA! zsSXZsDlK@P#B+mc%KDP2o;0m_QldpxCWH2goE;VES$m$Bxlj>jI;BI(#h%7Yzkz{^ z>bMFVcds-Nnm2p8_io~~>!C;|uo~?$otSM=+$f#oB)R|U82p3gV+3lwVkIP9a zY=U96Wg|z979%Bx5AE-6JVR0M{HO`Ajq(v)Hru<4VdCU+LKqf9tf;a|Hd=doldd4a zbNwU5Yj_NH7IC~+H%L$QcAZZ8ycCk1JiYeL36WUXN~OVSS5Lq} zEYY2d@!C6By!MnM>4}7Fn~Rn#6r+ikpL@pdrIih4s619y)7^Buq9S2gIrO3A7+Hr) z^Tl8K+SgxsbLS{tJH1(cAzu6F@ncRO zI{`x#5}D8E6N$vlH{blwLl0$gSs+?88cwIvK|wV&HRsQtpEiAFaphq2$f509P(2TK zv3TwAs?riJ-`d;(`Js62CSS?owdYOSz*w*;Ui-1bXMCBv{evI*-oO1qC2H~+m$#oJA~r3j~7FUmp8v=SYA4v;bn~$!C*Yef^S=aJqKsOrbP~5Xq1Cy&>Smg z>pD%yLtnUT9!-!$ftP4;KkW|<{X`6en85~sf(jJQJJCM?RA@Jv0N`jmni(k;i&Rtz zr%ttUUbw2Fs;BQXDkZuqEXBct%7%>^ErlzN9^BX6bdts+MWYt@P$HtKW=C6bNbSv; zf|h^*R8&~{F&2DmW5hLWo0Gv7tApXco$9k_aBMJL&+p8e$-16 zcnbEzjD!Leh*SqT&a}DAdluC7eT&zQ3JOT>3NHOsHH_LQ#ysqOPU0zmmjSRr#TtQ2hXKq}q%yR? zq2yo|&>c!VDO!O(7hKTb}NrFmSjCpy!Q~~vhu(I5QFdJ$CrK)l2;@<7vXJ4tPd>FSnqZ(DFV51!HXE*$!MGn| z%hCJ&un>;(W*_I8S|kLwwW>(y>i6t$$)`T^`QzJPdEx0N1yRkr(7*INo%7JYI*?rC zEzdV~jn?P^MqN%-wWwkDqw>ItSXfNuT%QIATbs>G6kf%5beVT41|D~!VYC& zh0*({ElkP2?rxGg8etN>_RXMOmC5EK6au3Z$)sltzZe2IkNCA?ewscH;>9b8yekXr6GX68syNIZy%JQV3yn+ntne#2trTFwgV>#dz zOM@IN0$@w=&9azWIe3^a>rJg)J)NB*K@<`*@k1t_jWi^h1DW7FeqA7+0zU+zMg5Me zPz>NR_|M7>&Vz6}9Z>CGzdg8-U3|+%{nvz2s8i^WMT`vi#*UG5z*`X2on;RFgSHcI z@Sl_(>gjQcPjc>X0>qP=%-Nz(X`s94F8YsxaN;5lP$*?LK$L(=9Jo}V0)a?ENIu^= zv}>e(pwMUv5YP_LAvlMc7byTUj^DT4==g*dRTa&pv4t;}vrVA94q(z{!!l4Cdi+@u zbMkrH0^*A{aB}L}BS{&|a4h{xV(t|l!^MH!v5Qr9hE*859 zt~t2Lfczp4h$F$M4T!F>KeD1mB2k0()AmgkTm!{GpeDos0RQw!L_t(2l7MdEMR?%` zYG@kt$Y0aL`CL|oriA@sbBe0FZjLrNxBWykku_*Xdqt1BrYVT135$2mSVQlHAy-HM zd_(XN4JQ`Elwo{uP=9Ki9uAq70aT^;o*lR0?3wnK=5yy;&bM|x_uMllj~+(*$ou4d zmr*a3ixN! z8IjT=2a;eixtAnSk?1vO7xpl;xgE5NmRLwU#R0{5fM}?qV>{7k#Ij8zo5P4GDlIik z+M%6{JIDjg15+eDj8#ol4AvG9Jj?z!#A^>u{wHEmOGF|=);WO-6CXN8eS+ga@CZCu zuygupv)xa-yE`-K6xI7eq5+~KNcI2_;XeGOhuADz$_gDFluAV92Alnp&rAtD+w%I8 zytzg_MKb6d7j1vNW<=l^CGa_s)DVcCxv}=Xo(8`zS}8dD z2528B@#58i-v#==P9!0L5Rn|w5tB>iU@$Qww0_fWbZ}PSN@iJ)$RC`7^<%7hXRp1YBY1qhT?po-uaMvk5< zqjY+08qPbMd?Snd(YRPl1IO|PoKa$~=lZhDxWgi8f(W#r_*sB5;y)1;fp5SzU;t1} z59G`=db)v1rG6%~bDU^cMVUZz+9rr4L074|nqkZRXzO*6g06z6o$c)n zP0f9M$@9&Pu0v7F(JDz+Jlf;lHw**H&lf0Yoglb+B;qI`aLPAHk;%Gbu?nD`E~jXr zkZa~~9`MCO(%{JfS;-*dWuMkAKx}Ycr3j+Xg)-|R!T_|G`Mn^R6by~os&Ch}M2U79 z0c((krVV&{1nW`EFyK3_LRWc5(p;yN3cBwr64`SUoF0}4 z1=r(rRkfL&fl{F7WtvM8!72-;gGc)p#bR;vyJcia$T`(_oluwq(1T$PJY`@UB+wT{ zwAaWXz3W+$jCz6YhONlOC9w2t(n@$BO z*bVQRf_#FpbFt39a|}Y?($B#3p(+twJcRneCrFRRQhP6?3G%@=D9G*2UOQd7cr{2+ zp#Sqk5(24!5Rn|wQ6QrPElgV8J+!mi-WO7NRTojKV95Afm|jOt8L31fib@#yd@LLe zMx3IkX(Iy#0gQpRgoDM%$6pIr36y|lVdIG$Jt7(**{nsQ5Jc(;e`ts9Oos3br9m~5 zi%UO%KhX6Q>IwwC3^1c3SO6hKi^k$b5#-aKf+q%C_w;DEq^ttK4^NjAIOBG}H+p-{ zvFSY)pOiZY${J-s>A_aWWwR<MWrPu)-bXmouawWq&kcIEi1If5SdX7Y36UGvlKX$1Oz4E z3{4==g8*Ct~E8EHn(WqOvj)MZ>A5iE-2~5f}%iVQcX?><45+TN@!qpUdT7 zWPqDoA_gOiQo}>nHBFb5yqPEYp*THMl1=mNxK&V#N)icLWtmPTDHICNDG{x>tPJjc zF7J|kz_dAT(IQbW%gvb>K+%Y(NrG#FnKJkZ%S59$vT3HCq`{#utO^;Y#EuJX^Jpl( zIVjv)5*R{R4bU5pe-AOg8TrHHq#$^2$o_W^sUl1^0^DN1f}ix`4b}wefMJLO)^ImhbT+5!K52fp@`V5FR)729n=N4P$+dftkPS^S-8tUcj#P6y!PrV zmoHs<C)PfS6+GLE$dgDJ$1CB&j7-q)h_-gN^iaMjlciRFl6CQW_l-+p%Wy30Ov$2AisjOjDe=UUo0 z$ETn&91jWf6o`)Ndx9#-sE!NozpP^Im1{3qIOoLS{W-&-2;x9#%g$$P0v^GkDIZ_u zX#&G`Nt)DI3+8|On_pXh+3I0~2k+avE1!p%M*(&ndeu+^?0GD9AG!b+0uW@~G(Z8g z2jcYm2>hel*yqBX!3o@j6Lic(nY#YMRa_wyV$jYWbzGneM=UK3Ue*u6i3|6$R2OeS zBLL!*Kf`qlMn*L1eF>wO=G|D`$fUquq`@V61Qyhi`2#Ye8AT4eykKj4x!*EIyho2#%2guPvUMF17;Jp}42|;rL>TKJhG3G(_GKEDgfKnx6nv^#i!tmofUIsLZ;dp)B49U#& zC$o9ln+*P;OlsIMqtQsyx#p9{Pa+3ZCItzn9@)s@h-1*|RZSTH)h9P|7lb_zO;kP?p+e15(C?U%=v)LT-WgH?y z1Aa9%63!((C?NdAK~PJ8xl01WIka1luP790o^yh=+5!L`*9^lzjb%M#=GmluC~R4l z>vEx}?1-9g*??JOl{S1cpYJ$x_~?lyi<3D?6=l(L9N_loDN`m6Dc!NomP%be!+kza6Kstu{6q+g4-Swr$(C)3~vnOfqp}+jf&Y^Znib=l!fTYh82AiM>Dj zI7IpTiLs9%?Q6;-%#uoccTH7*nhFjyo7xnR5eT6>Z|W67ehLBw3j}N64c{B zANTk65MBB$noAor8m|HwnE3z2MC9P!PT{2t}aM;$;GBnQH^}Qt& zT=TmV9)%1-=0S5HiPU>GJBiweXJJRk!B+|^-mj`q0gEg((fKZmkvlY69LJrU*+#DJ zva#Ja_`tJKI}iWrpj@uq?Fa_Ai~)(P){wFm+>}&|_-5&J62C1bZ4s2R1jqDNSDr+~ zL=vM;4&tRBdB8n4fb$FCC_@#BaKen8Si8qUO}R;Y@{xl(gOd`0e?qSsjDsJq__+q> zm0$!>b_kiSCid?LGB(%@Q=|({htI0O92M-Vdmgr6#?wNIP})0&ssybCkt_d|nv^k* z7|*i~6h&X<)b)nNBp=~)M(W+BVW~uJAS7?bsCCtDg%kchGAfioOuQHAN_mS<6FKpM zu>r3Rx#=`@L7e%s7JY!7)ZOemciqm=ooC(+nIU?UAI>Aw?3Xzy+>h7c!l552i$WJG z?T{ZR`H47k+SiAZwCusGe1M?znOvUrJH@ZN`g+?9_mM-JVx>w^EO#jF5d=q0XuXQF zfj_KvBC$$N*|SAQL8mk|L>LrTB9i$-N2x(WH{JN2 z-)xDBdi*1fWWl5nWq~@r4(qLU^*wL2z!7vKz|#sjpVJD^e3f@ttO-%}yXJnhiTJWe zvXnyL`Fwg~xzz%xcP3F1wL-QRfJ08SB2~Uo235VSpRAMHN+2m9wkL4G?&(n8Ku54J6_3St{<^Vv!0XPft=ULi%y~o+L%XnsaNA{Vh*Uijj*@2d5Q70$(fbTRqe^ zs}U+Hnkd8j@Z3J^Gx2DeR55NiIy(~luj0B%yp~MF!(Cd%YXq>sFfr*QY;|ds`Grtd zU=t)xV!J#$=AaQ#8SCRrR5JPw;USoD62j~h8ks~cm($*2)IMvuVwvlS%tP0{yGJXD z;M~of%Z%XrKM+@cTAqASmuH$zMpCD%biC>_KaV#j`6D;uSPoJ-%>SWym)gGE4J#QU zax^Oue^2iIq>jJ7x0Qfg`LE!uU$n@u{(9|)kF1ap z4qUg}WYzQ^W_SYzJ4M8>KgF+;ELf0buT+S6VsO@d-JC35m);(-5FUlv@K`2jy#;3be z%mN*22YYOOMto_peKV7aDa}q-Bh3k$;uKaFn8FNw{rw6#;(*6D!0}YxxtF_!N0&78 ztUcXAMSPd}2NtV2FkS3VPZ^xWqo-1PrSV|u1R#UnxoM)EaezdgGKFyi-TCMMPQ^ks zHGE;hKBnWoNNlc>WuHx+fYXSc@Xy|!XLTQE)|6*2CJn6?Puo=!;BTrr3QZMtLVvt7 zqIwHTB(%F`I0AE^2EwvRO=XAmN2jF!OP;C2d@MFQF}JVhvw9K^Z!-6H1trp6&)Y$` zl=ALYzxU6N_n?y#9M7)g6MeTOwV`mujb?`#StbDzI9YCOS;gjw23G27czi`g>YV_Q z{TG!n6oWs`BO7Hlw(*K?t)1y6C9=>~lc^Ku%LW~er%hY=z4`G^iKMBi85tnHU7mKE z=PgJ-c5DWM=VtO9o;2Sp*UT4c&}+Gxl#fF_e=)q4qpxF5Og^u>}|CD1*MIN!9A>n<7Y;<0+rR zw75iG#ncQ2t;{Q1LASe5nr{o`iZse)I0hSrKK-~!7-=*qV@v7QIr{!fDHDysve+S) z##-?JV(9l?>Io^>W(E`#ojFOltY12$2X89s`6BQqQ7_|-7{$>7MuR7Gb@~QsI$0Md zXXodkL9AB)<$?DZwR$%cJXF&r#hp5;%9!>Yiy}FU9bbR9ZLzuE$*n(nuLHdpZMD2* zWFezqFy-h;Q)kRQVD|p(9|x3!&lHF_{reGoa1s^5a zAxn4e*kjZ?iY=esmp{#$b@IPp5bDXr)C_R)-ts_egeV5VV@ATpwF=D#J4rf=8pjws zyo1Q;b|T_9mb>(yupFHJ!d`ngo6iP3NH}mj-zHB{K!do#$>r3A0wcB&9QR&o%6Z*U zP6f}Kspn?Or*LEvWV?yCCW6mleOK~NZDqAN_U}8zrzMlSuQ%z02uwYDO?<}*m33O$ zg1od<>iJvRbi^!2tOe}}ZS!%*+V*|tAqy3X<#&T-WTOhN!;)7Iaa*HDSMLH(rvRp` z1f?ALqZk0}OeVWdY8jfz=yY|C){k|TqYYHSktS&u^;%73lA(rj*ms#xtfTsl2iby; z6D+{dm7wFvsLqwH&uQ5(H%qta^cun6df;=b7@)?!^ISCGL*u!#icsg3;@lB#rJB7z z^1CFTzHF$WC@wJ$M^UWGX7?Uv+mpL{N(OyIYDIyM(qHt(7JTC98 zo0!jfIBoXpvG7Mt54f4?MvcVa;WRg16w7T$3Qa5*d&UjqK+y#L-xA89UEDBu`* zH~`f5oL=`mbf~$U&2T>I{`oA|sne^7(*2o5H3yF)pUG}Au;vA!3G?S0W}_((-bqPb zSyxI$YM-$E)-b@ytGN2f#^BQ!RJY7=x9@rH#Y>?K{L&`3KAQfcq1$TsnVaDE(2L@C zbJc03qKohooSkVF`;runp%y#ZYBcmWb$%wZ|HD;YS9Uh9+3(6~XI#^#^w>sR*r=zEbKS^rCbwOS>oj&WQ+2nkgtVW$KxBJD4F5~jt zT#y`?#7nv=kw2mxCfU$GsVQyd`bdBkYsC&s)|p zC>yuu{dswwF8H`eCk>D(|H&sCOFW<6!qg zGJz)Bf9Va7@BQWlOxTLMhvfw6q!Ohw$9(+VxZtNKwN4V{e|f|K8{Ik3}uLFk_BCy4qBk#&gL`ja|_1 zqypLJ52C&V7oqd+!Qgrd8{v5F^iY@LqQ1-JAOGc3*ssTm_XG}e-8z5IIpF2{f#)3T z^}FT%?T6sY0165bFHW>Ljyztg)BckZ230r!R`8)_Ozh;mca$hcpYW&eL6OQa50cT{ z0nK6bV;PgL-TPJuf6u8blTQ2n5)OFcPHRn?Dl$WT9W!UIGp@Hx8d)+yQ1sr$Vr7*{ zHR;(=Mysf=Bc;VV$=8ELo1N!T*s=af@4g|hwO+T!aUnd8dpu=kMvvL!@or=cnb`M& zGeO{Mk1qZk3yZ3sGx}9_Pg0^nR0T($8ne2tE}OsRstk$AqWNerOg5g7Xa4Uhqa-Qk zrsGhkk?6U(LQa?IRvpngalnCp*}*>yD* z9o`ItHx5PEZT_1Y68w5r8RL-(8vkwoDnhO@l288QE$-gcRwnSg0nwj z&q##3AHdubkK!PJd?Hxz>i5t(@#zx${eI`3_rX9HB($hQ@6&h~MgM{P0`)LzQrh8( z=ne3Oq1wJv7IKigNw@OfeueljC<6}-Pya41EE)9uQ@@^Qi@Ph_0bDy4Ipm$fTZ$ub za~(BM%U^Nt&%!*0a#IWa+SJ->?U*d)NT^41l|JBcpW?8(JQkOu6coW59FB5Hr)Qv{ z5uOuAt7|G|(^nf2-X`E)FMCda)jtE8gQk}!0RRogf;Rt6?WiZITe?XAmlic09k2VH z7~@Qs$XX3Zkg^kW-A|(6=J9@tc|0FX>8VP&o(+R5asicIs+{zTD@_L6*i{vgdTDiO zb?fhnBS+d}@ipZZcc5sh86AplL_O|sh2q0QE0v4Y@~&S_!b$b8OO z4rao14u6b#wM(!Ao;o9MNpEju?ff{o#dIcZjdSLufnAoD!ojJPPiFq14xK5w0&H~@x&@M9(qqZFE930twXK0*_YdLvpwEKV zu;NL~Yu$wwP`oqiX5yA9rHYy%=EO)_l6-a$+S$)>>)2JknUEL%aL~xO3LS3wFJfI? zvF9-zW1s8G><=`4OysC2YH^U@m8#8t>#oM&@803!*H>&c1}+4$xCAuE!+;9J|Z|4u%NfzKnuM5@~tj-Y_I*dJ<} z+=^2C8Tj0c$%8w_3ab_pi0abQmI|hy5#+or^#U$J(&V?7Dv5thc?$M1y@zQt=@q;{ zsZrB-^Wy9r;9UOT%^DecMfK}eoiC$~4r?Uw1R3Nnj+wo;wm=4V#hHN+*r6h71hb2d zDok;4+FwDSz|nKk7V#SRjL_B23+OJYz^S#avpVH@M0$}VWo>d#6tW{F; zo4u6Q%nWOxVkWdMR$QdseqBiy-{$&6q4iHv@)30?3?w@;c7&=r#FuR9Qq@8^5=fgx zh)lxol&e4DzHv553-&#cDNlhWIXD;w3F2Zlp7r+Z%=G7JGyE>(C1IS186-HLcp65O zac+>j$jnbRH8o800>@Jig6rI;L=Wn2+-r_pt43-8KYDzup*eK@MU6Ub9#2Q^+ie^T zdL58C;VF)Qvre}Iy*1{4Y9IJ6^UXuvHamaN+!}#>59DZQ8sNJL0of?XT@bSJOp280TA=exnWY|7nv;0FMOQdHxND;;vjKq(*7&09JnTSH&qi7TGlVjN+D2j|6LeF7`|B# z)F~7MrH*tpTmP;V9n!QAc+uD5*BOd%AF$ADSJqOL9>>*d?lQd>+VA3fh}HxLq*xD86sa`wK~gDghR0sl%!1{%QL zqO+ZQ|7fMA&i_PHC?Zxqp2?YA$;DE`VysUB^dAM*qjZl+CWCz;TV&?ank9d5_&6Z` z4idnoh(1jRFayH%y}WR4fll%)2l{O_3Aw5q0rS}>Bt^l;I~(I#=eL)n;!B%3QtgCqg~c5< z%(qXy{wob=^77Nvq*?OLbH5mK-03qo2pc9uFqFV?m@jm+nky@D z`(bh!Y5(rJgdBg}=8W}zPCI0`jUklMnqAY-@If!IsJw5E$WlQ_mBXndx zLca~57Gd8CTn@yurbE-<|Fk_ZQRMqv*-sF>-)Khp_*W!Fj~Nwq=?ZlA1+dPk6c>IY zZgM31!A=MnU^;H8sL@v2@4o{TMAFhE zi~VDnM$<}a(hDA%Fy^$S3`rt(#wMCnMidqWVN1NwE4_AZb&karihteN`JQ=}FnYp`_GV*a2Cfr^n8Y6lX!k zg7&9ET-Oj1VI@nJBCZ<`8Dk5QSC8ykD_%yY{#VGBSGNlcTrM`!T;p{x1HFKso>v&{ z_}ZCTMlO$A^{X#BUR}pQvMB5`iGc5mugZO0&wHI-K!^Ck_SssE1DBI$z{12)FK}ym z-QDj7vMqHCOp-a)RIPXdHHdbq3jWcsx94(kV&5Uw!+-OUvsl1zgd6)hS4d3-n<2N) z>ilndJYn_lUS3J|2}NDcvc)YBIs>%9#S(EEjXpSK7ptqQU#)cLV4CU;eh7$9xo<=g zo3NtgGFHNm=?Fl_3jbNtS+A}Z?Qgyk$RxVT=l3a}$;65pTz=MIG?2Ij0*a{{ZZGgO zQ4%ZV;t?s={*ilThI)4~{&Q6_y=|Oh(*rqM;7-wAF3PQrS+hV17;pT>dde%ltdcfMA$oCrlcL7k2UbTMK77@kGOv^$d_wau8bb;AgnTK; z=Dsm(DHf%!TC3S=`ZXY0g&4NNevj8gW_c;|-;M^+qxkRyIGOK=rGj@%oOx^!!Kz7W zh@)#UpuApbLE%_zaWo=}-vI-9@0{;vI-6)IrMDD>qcYIs2|55f=@@f3dhEBlp_j}? z0^0-LPiGA2On{*Ex`rS>ZMg#BR>l;%p?FNR zg=9$H?@45lqQKn(5cqd;4Xtg%`~7}K!2jQ{ zlfqx}Bm*7`Zxz`XG?H%Tk){x)kIr3NS?$=zqdNfQQa)E}Un4*4jgpw;f$tgy%*T%x z%y@CIv89fM(O^gfrmphx>a*3c&yR&Pl5X%~1Y6>^=Ibts^*u!o%Of08aLDRys+ zf!kOWGkHc29JxHs=-Bw=;)QyGz8YzwESK@;_4#U?Dv2*cW5CGlt=U;ez%(bw(q(lx zsg^<&x88j_LMEv=yI@q$yJp=cGtE{4XNqfK!@#v8O2+Q+bZ}(;C}PK?#o!Pye3g3i7x%&DwRRPi_s~ z*FH=nk$)EmSRF(foh%)--k-=s^NAY0>3*Y-PsF(Yt{z={9)F04r%jL$DT#7DQ)&cH zZ7n_WV3ndwRFRVnsn7c?mbceLp-9xXMqtLSngH?LBw9P3K?&ys@l3qbGgF8)lDQZ9Iv@sJ-xKMR1>751lkEmr}{F03N1D&|}o8P$wC)qO5@2B!G9D@fo>j!(DQ;V@Ihiu7x_ zF6zj~o4n6-7ebAi+x5gy=bUC}x5ZJ3W8b-W?0i1*toX;F_!tVI+#w-+!{ksSof^h& zwxfrniXa!=cv7t0UqrlA2b*af3F7X<4iDVxjV6BKn6+>vLKSZntsknphfPit&5pMs zKLm{5pDsH<7P}GYq~fON>LXT3nmwv8rN@fcYOC|B>!~U;_B4fkVZdRNaxO-wRmh^M z!*Z5?zKTe6Uhu?$qX;!Nr-~n&T``V}d9PSA<0$X7=`ApY14lYlO2K|NxlE+gcIbX4 zvj_7~1u@LnjQx_qF6z#hVVU7gNcG40H!p+NoO-{MvRnKqvd9eO;TxDAH zq}o$*pG{3OtFny*S3NxLjOplCOy{Pw%tM)M{ zWvmkqxJif?kxzE$ZO|T>(hH_9YLeV`e^gkPUo)@GtdCB;mn!GblCmAjtBQ6-oO=Hb z!V3;BJQ1~{ft@-P&(Qr0+i|v=d$i2!h)`)j3GB)xL_TchUXvMo9x5h-(}foxofY}D z^CcrN;#O`h8%=jQn^T;F;`xI%83D^?=uh;lYJKK`?G9Hin<6HE1CVXktZJBhtJv_8 zu@R%Tgu&FR(H}3O_TOhR>hEtu;xXm59jHCChdI>xX*9iAAo+*3pu^RefTJDANU9z? z)ckKia3kQ~NfNoWr0mo;S$5zl+V1HlgDa#2%F6)LXYEHg=S~Q1d8Ow! z>CsDo-L>O8N%E^9(hWS01pHdytTfsQWxOzFi2l(H6ZBU$0bgyfZGCscCW?)cG|ao6 zVaMc|dbzm^vfR8BURon1zpv;CzR`Q-X3vS|9_y(XaRaI?!DqfT|1d;VKVxFXNtPm= zbQyU6YYBT9Fe8<2CCg_`!eC#Tl3dHvN)%7kbnzNrYt?G>MoyTXKc)dU!~e zkzoy2ta$LYeE6^*Ct|@&E6Mh(o{%+`qH3y9E)5_=I48rV#YB*Qb$ZkjJM7bnepuU$ zE%vAm4e?-jb+(C^9#d+CA4^Q>a-E zd_F3bVfVKILa`epnpvK(iC<>xN)U04s8!|e&WX|@*Wj=X)|dwLY(CR;k3bg zR^3I>PNqpvf*5p6y;B{^;`c$ZUw=B={eayu!dND!He~!J1)o6UM;D+Zh9#WX$4Ehk;C@R|#nViud(GJT5XVK)4($p6QxP?#l& zXIO=q$D(vlcY_J4;_aH%kO_12_dKD9H*IvWsPX`*S;K`LUd*`co!INhri(^uTTJ@( zMk6vIc)RU{5!V@4(2wPfyTuj%Xu0yU>4bhf1bZHQDPMdhDUm=PYlT=lTzx38!4P;O z(p@?Zv>^IvVQ5;3iTroEM85%6S0kJzEXR>-INDRG0Q?_pl+!0^ zU5I0>DUQn!%QvgwhjDm8wX|Xw*i(f6oi4>@k=?}Mks@4&XY&f-`(eGGG48HOS|F*$ z8Njd$;iF}^F1?Zx(TnJv-Y# zqmk#YKP``9C96?Z?sYIrNQ0J02*YrlT4~ZX;1tdx;q13(%%wRlfY6Lk%zO0J z029t`u1|D%G0A|!S%6F&ZS*1!ZDt6?Zo^XWFw7oCRAAlt>_zF7)(kpsNt;=#Qug`D zkENDX*SPQQZXVB15985^z=JvX8=N+wQdj=$g~8mEHU`Pk4{NqU-m@cTK5=gpD_urO zRG?T=dxEj$x`M*PsWjx0=z&_R2oO4VhqM|s673NYDq$LGm+vw~CJ-ugjD-heN(XZW zE~sYVX;0NY`mLt8YTb(ZGnz=pVj;iLqdUp3v+VZqQX_j>BZ)zj%UET@BOve@>QZ8i zMLh1qnG28=#&9!Y(;SJdax}NxQ+w_gn<;6f@^hkOmV@jaH^fbFUdXSv$j<3Mh*JxU z@J(&!_I+vb?Mf^V+eIWW|2*lT74it#qrM>*5zixeO+? z`B`P_IbT^mX~koa)oLUj1DNWj;WB3{HMLS}`)-vijy630>Jk_OshyN-2*K^U56>I& zR$To{(=rXR9U8P3jAlaG*>R)4X5>q2N>E?~Suoy2T_uYnMW^UDJo8D%oMvMqXNB)( zRT9V}`RqzjV>3+?r0*v?6&J%z`Og|jb0I^A2;ZuCw<~LdbJG>oKG%gWCA$OP`{8M1e->Buvv8D?h1){~GTw{)P zS}t;EJiQTgQ=#*qP2F6OM{Ggou~|BmDEYowL>X61Q$|>lsi20 zbEM*tNN1rx2l!x(Bmc4}@}m|DVOQA?faAGTrXBF~mX608rK_tCVgb#ZLr>cgA!+gN zk%n$h@c88lNwr`#z|~vwz^KBFjb^5>sMyX(*zhHa%1g*NA;_&F%l(XMvvNs966f;BhN6GSuMPy>s;WW2NqPP zo#^kbS7VcfX23&t(1rpMAU49rn~4d9Tz_e4ft-1eWIy}{Ci)GijJlZ_P~d?(7LM#( zQBVy8iL5}V3_~`kD5i1{PXzwq6U~Z$uvSpgvLfQ;7ftj@1bSmfO?{!~<@08z=We%B ziaCW0ZFW4dqiqJCcMzpc)?HZVZdSlZgb0t?s0&4uIc8B>Fl-z>E{xN6%z59OJ!>D# z*1?DhCIBt}kjEzTKZTj*Kr=o`qh3BR3>G2xyh_qLV`>{M(wn66;73q{&v`Z4OEUfv za2#kNL_O1RY5Nz#M&w7@V)yY7=RzRuSq(6-9O#_p$>ZDejZ;c*4G>!O;Rq!N6M0x)X%?TzpHCZ_|! zCae4Yg)wb=KfbLy^jICP{Yfr;XvtSJcdnyWEa*GA?tA?Gm{I>ayUD45FUXh!$hQ$d z$pYsvCImYHJ2O?9b>=+ZJ=a>URu zwnU!^2~-;nsD$TT5a~)%6)7ldnGuMkYOu^ab!1vs-9+kk^@7s({INH%pUz}JW45M{ zXU|3vwk(=!_U#74Zr-|G>6a?C2^W4+gT8?QEE7XU1S>SuqbRL>8d;hN?*YvK_4fei z&u_?J;KR&77A1{4!re}A6GF-8Ve_SF%xTwvpEk1_Y&RjUl{W8$5V+mVcvtXiX$7@R2{$D6|4+vQEi&HUd4GaT%Pb|V>OOU?(;6CVD1Sc1pIdM2f}6Rt+ukw9%Se|h(yfr^N~L-DT0td|G^9)7rL7lepn)WzF#+0 z{=$kS$C{#!{pm<|FChiu6lR>8o*~1xu+Nv57Z;)IV}M31fX2nf-M^WD+vXIc-!^}B zm9RD3uLQo2VN6#LaP~Z%?Fg$$7`)eiZ8M>e2#it&V@B7StT$j$WCu~DGs6uOqOOR3 z@2fbxs8WertSJum$D!D(z)tc_DMxjrvRgR7eL&QU-S9o1j&OJQx9kvb|3}X!8Bcq@ zC|p%(VGez!G&V`_pIu8dyHX-s-leu;-xhZf&Mnb*wqBy6_#yRNW~0Gub{h`cl|+RK zmQo`qp)(=e1}@|6oRX(;zK$uz#o5tSonj1`=(V|~()M-b2 zmyht!G1T3B`j94)m+FL0LwDY}ch_~FyN0RF=M15)UX%cRe!iT=R&lKf<;=A zZ5bA)ftEyk2ARTzV)7AV7IK6);_+#K3^~48XFf;+fM-P?Pl9jL5N2ygOwoFozCZRv zyn-?nM-{C*1JtC)ESCe+BeG@y=EVdNxw7xZ_;03VWy$c*ofR7HPsR%8TcjWYOvQt) zBU?gS7Bxb{$Pa2Q8!)#|*s<$B7D0$;izbl0A_`J=VVAc{JD$kF^KgWr-q!bbQ+Z3} zH|+0M>2Gf!loZeV`@6>#-&z6NbhpV7lD6Nei)H!c3ZLB|(?E`dxia-&)>DvPm%g7H zm3@4~e!5NnIN9PpH`)0~H7&x4E?2iJdTw8R{buam#PWD-$QX?hJ@Mh z#UThw5+I_WgBmF)CSP|_}E$K zGuZQZT$Rh>Ty6B0l`RKuhRZbI3Ih#xY zc#^9$)X)5BwzqW7SiosfcgbtFx!Gb>$s}r(kRxFKk)|<~r_LnftfE7f>PDX&NjW*H znAhogYRsDweU5+q@^Q*o>4bv6hNPIw@w;1fvh;0=u%oW1_-35NM2&&Z|6eAE&}~1S zI1qtC6o`T&lbRjQVzO4+b=7S$-k@|zlm~*_bNu|^hWtg<886<9m=4Ks;qySwqtEj) zNw@sDM}_kA{CMjvJ+wOn`(y|6>GpU?w9G&g&8XXLx=~uS-geE`;-I({TmXkLo#gdC zSyPY4XFb@<-^JPUqO5uR(<@@-swqf54? zv!B@NELB>g&VbYIh+a6^hgVy7eNMD!mrO#jrhq?S%NH=N+i85-uq!%~XXEZ^wU=rY z>>!`dd{x(Vg$h;mrwY199Xqa+0e~e!c5b1H4bZdeY1!qoYbu#va09^wTa^!69afPF zLs<-)_;)1Yb39+O)gBirtg|rH#G(}zq3-c8c zi!qP=J#WRIOUR(_`ufOifTyL>Y5aG%a%wLBkF(OmO;o|_i=-E?Pix2J6Yur!0uH$H zKvYIN7W;XFfD;ai^`+VQ&!WD!hc~r*wFKGn`?+c(*0bY*7$O08UBAs1XLi_Q{O(=P zv=j`CV@91`Q~OZObNJ*`r&Q>S+K)R60q>DJZYsqBEw|N9UWYE|T-l0TI{UZ&2>XuK z^9v`PxXmw=FX!v&WlcXCY05Fi;^--@{Z(3r7v&;H)t#R11FPQY)m3+;=JlK|pH9mP zHFiSpvyKci27O&sP=fkNHNKtv^xYQL0JjfL{HD3jPw+Q>dWeF{iW%E4 z_`KVep%4uRP-BUQZ+iy`OtXvRVA9EeP7h9}>$@WJiJmuD>bQ#(IaQphvwN zIF&qI`u?se6aP!bo>oTQfh|v&L2doYxBHE^8v9qLF=2zYBoIGPgi9>R3!JRdUncObc3ukU=b*x?0O z-tgLAN`#e1(fEt}`OiWiP4UUKwXGPz9GDw5zjNDVd+WQi{ojfDjYMH!fo;$u5Q~fu z7RKB0^RnmZ8FZNzIs?)F`qM}E{@jDiTlFIQ+l~|eK!HX2X_fA$5T7;>V)tsZ*PbS3 z*`6xpHN(K$Z7%vyr{HB(RM4wbFpa}6C`N7bb-;(<$o;L4S7w)R_Wx+8Ely{;n|~G2 z$1EeyD1kkAg1|W$)6~)GoXy0R4=W~pN@f$KoM79S^&dqA%H8e{Kjy_i-aCZ++)@zf z>ZV1!&2pA~Ss&n*_jc9yxjy1~*+s4I6Fg!g=*Xh~zBf@nX7hDgPmJT6an0Z5vVZ{k zPDNvo`|KYGn{t_<+w1sl!*nOy?f$35TT0xn<8^Wr1RIlcENP+3%OGZVvsKev|2OZR z8-bPV#sxaMv@!8LZ?xvYvVycdpXSla3e4;t0~=~|=|lpq2b_Ig4~NGE&w6!yb>F&k z*iY?P;MvCLh2E=EFPD!ew_y8EsvRKdKc`;K{Qxe(~a+Of0;~N}TwH-7n3l zjK$R^df0CTJy24$myy+Jw$(i^#$Wrt5AeV1yw8IkTvmm_ncGEk-1Iwg0Y1O+c)W)H zJD@UtvR$F!Qwr)8OXpvVZ+p=b4$A9p@p{BRo8uMNvC$IMl z;W-XJeJ60eH-l&Wn?xBa_t4%0Y8XU#LuIwS(uN*B6r^Ht5*muiUFkQ;0XzfZI&Q`>cS4|TiL1$d#`jseS6n6clJTNc6g5$y0lX_SAj zF2!@y;hOUDNYQ~Ekq+Nru=M_G%+2J2B7jBqfg1xLT$qmz2qfi$RU}tL&UId6Q;L#HFQKv_PJStL3vW)c}eJ=31>ewBU zm@idf6m_{P)>PrACXC;==8 zPW^BPH9l3;7Pyc`^m?DE-4}Iw7koPMB@FE zOzHs@nuZC&LSwm~%lmc&Ct%z2hjGmY1#bUfKSXCT)T6k8LBT#()8v4_&@5!l95My^ zz--`LpeZ#HHa9)1cUMBmF_UF4c5tp_$ZG)Cd5!vSh*5`?25>DUQVs^e@3jAQjXtMN zFN=u$2_6tC|KGb6y}UK|7e79U$wsST>f5WM1BYNB3!w=GgWB{8Qs*oDo10C=kh-TdoQKr&d|aKQY`ES(2RBVc z3qRu>bf8M)h$}6lA_&c!y*igY#3q(YSi;iL3;95*V*02d7!);jP|E1bB?}nex=SXx z)49GZ>4QIHoM!3Ng&jk&Anm!0shN%zqOaW*&k{WFn7$8fPIs<5KU@Xfa&m2E@c4n@a!hbxK-B&O;f|j9k_Sk>QC)ZDuSi zF$|=jnIctD!mntpDc~E5#*3C0=aY?@b4P62rfknPUR{!F<8j%OV?vu>2{pk5Jj>kx z@|?#m<_jIz(K8t{HX{_tmATyOwc%D1{GFQ0rUg9|RaQKnRCC$rO$wH2MBSQU8dxkA zD@J+5Y`?^CSrIJ7`cwpIjTId#YOCysV2T(NxFsmXZ`WKdeuyZM#(Zk~ zr)GdMDHr`gq7!TuI=xAN*B$I0O@(~6JIKm?UdP$pvA#pkA_fQF1dDW1-v?Kp_0{l& zdmQ@e>PV+fZ52H&U1drdQ<i>e4Z>$w<1`-7qk_B%#lB#|}L)0Y$p z8$G__ujo-Vlud3|S<4?=IrDhj;k8x;EZWhjWMj^$mS(C+xQ*7@oyb5$RUd=+H1w!& zBv!=*n1P*QH!9L@i)xhS*lp`>#D8VKLo@|zI$KSFi%}_*3|$xass;_oOniMb=Uh8e z(G)Qthl|z6#;clIT7uvmiCSn_PpQ5)-TyBX!-54}_PnkC|3B>i*5jxVV4JHH zJtN*(35dkJh#b9~kFlEw@dP@JXrY6CQ^R)6R+=+waV0*R_6Y%AbtQcY^W9bt(^p## zvSSroxN`hP-!KqA?=4Smxv=_g4%wUZXP?id3d6LxIAtDrN;?~n#{?1=^E z|8$|H#q#9c?Jm!%i^zb1G+bFM(MYuEgo-)}?f4;>fP*{)o_OVxeUi<1j9{es>%JVh zzPg%c)sAT6kBw!PHGW5HDKra1%(H-80K#i0_+`4tTbu$$=qU={u zc2-N4I2O6u?Ubx~{e!sI_GifN-@iNSEPiH9PEI~OJ#iv${a;Hxe>ds~&ks&2nPZyHzbY|u!rgOb@m;31&^td*C>>(?c;bPB z59^5bLOO`*uJ?N{xUD`F_IB0MQ zaK-_8Gv5%QOrAAyblKUfYL@Yw%*&EsC2*miXCqE6*2u;}(`H(I2&8}<3FtI1%Vnq7 z&k^WxlwPN)T6puq1#8v6s5hs1Ws=G=;RyfR9S$C@iuAB7Rph<%;kY91Ap0SWZ>O=@ zMcI2Cy5_L<{=9!#?Ee{RD-U);rWb}!Dla_U?Lm=%$TWhUI5{cY#$p?C7Rg3DMcgYK z!x+H~Ljkfo3-v}H$3yO+s`p71JAd zx`ULo9Mi(*c4g-hjgXSoS@EeR4TdIXKtI!l`iKnI>B)! z48BXvnZ5SisDw53vFrOr@Y*aFO1$L?Y=gYlJPT08L21?`Jv4sX%9{}O`F{)20tO8% zewUm|6B+(*t_1M^rZWYvC8!!uzI8_SCSh;8LK5`_%qsj)0$mfnu19Q+Cu&8IpjRY? zHCYTvs>R*P0Imv)gAW)VG*R*LpN#%z)rLwf_-pQ{=4#|JbQ3ftKli8uA|2QWTj?L=u-Z40`zWe@; zW@1e2Ol;f9B$?Q@C$?>8V%xUuiEZ1q@to`a)&Hr=o32##sqQ{!e>XmREfynbRy28d zC1JlE(^hL1{5rkOUTa%3L6Qv;x7yIlRCKGc>Ygl6_EOqoY-Ex$4EKP{T;vj@*A5Hp zmY~n+YkVY+(R6rFXXq^{z0ggo*Z*$iFXqtuAA>Y3RG=VujCuyE;N8bhUuvfG0~TNW z*wxyFR#qG^5!9h&!d}on`sf|wevJ$By7f7w83}B)J)^*iKeI`ZAfZYNVQV8A*Qffi z&8)$;Ac!66{UIcXC6@~R*Hbm86=l+XtouVcKG74YKlmDLp|BOh?^-tobW<#%sHb68 zpWW9CiSpKwlHU<#Y!Xh2A`M|0LdFE4Q$Lj~ECcf8_V@>=H$zxIWKhp2%qXz~^7t>v zFBj-m?HqRFTka2T+vm%<{}qyRD1S9)e@_45fOCX~*E=ryx|x2t*h&CLfRh!zgcfVzU~y?B$e}l z>^nylCsqgR0TtC%cEdo=!(K77&ew@HX}2Smkkz{#ieaQ7ERmFj7%ONcR+j?3jZ%f8 zkdM%@9aB>O#YZc&Ba-$={v(&6MS~(wvx&02q2CW2{kcX~SuhXJNr}pj_u!A$M2ckU zujS!gk{!SC9i9N!GDykCC}Z&%}=inh9 z&)*;UKlVO1+L_c>*<^mR3rCd9-j}f}BF`P8>o8%i4HAB5CHutz+h_7M?o~;OyD?A&Ngg`EpAG3{zzc@ZWv#9AM zR8x^~^;By^HosxP&v+|{@}MxP)RCqJ>$A76L&q%ZFLV!;GkpEm-tB za@j;^Gi|twOh}c5i9HR8uU=xW}AX>{&q@?6jcR0P+v zkz*HW#1N(XIAhHQae}Kvl>|EVI-}(p{V+MO)ExDs5nJ>RQ#B+U?FAtT5>pf{AA=kc zM%%%h9EsQmA^w{PRWRpW3`+WjsZ^QyGAGj|SXj)@muE{B=Mo{* zl2sNKlQ4R>WU-P8PS6(6SQ`TrO4n<0140m~f3$k)ropAH%>B`FdO&l!GvV~#*jTyf zquCagUN|$6ZaW-xg2kX+Y_L_8Z60x!3;rfxg`<`u3Yerr=Z8ds!J*fQANO$=vtxg& z`LVp=7=^24fMlu^{Zqi3u0qcg14IDb!cTc*nfvG%O%PT%hx?X=a@9nUUrXvvXA*K!>WRZ;5 zZh9y-o4v*;C@E8Uj5X}cUba_HPv(l0l$3HtvQWd(lL2L)?yU0*vx{R*j|HcQqX`%b zCQKHOliMlpd+@)aE*U&qO^<_`s*~Blk5ujzC6=Zik*#eNQn>5}i{oMaRJ%yMp26K8 zQQf$T+Cum(IaDIXJ|8QH4l?xQP)QZETD7-zP8K#@dxvk`@2xY9jb52pjh1pJ({|af z5o?)BN2!bNkYBrgsrjP842w#3CkM$|9vkq0dnB)|=~tlzeJa0CQ&nkhi~*LG5_yuL zKwa}s!sFg@ko)v}!1VPx6D3Z!1H84ykV%j}quB6O@_z76_=@DCNB_TBAioe;_#RFR z9Fc4Hb-Xr-yT^a6f&XH|1<)PB(MFqL>ul+NI{skqzu^b^YTfti%(!^ zyVR5|cRfBsMNhCaV3>N9!f<<&SvLGmhnDJgyX!X}TQA83nOsh*JMty(VN>4DPZpX4 zpDRLuw{U4iMFxlYv1Gc=0}3lju?$cB$I4OGrv0|Cki4A z62aGYZveORzSU&I0giQd<=%2r_SZQ(WE9&2&ZXB?fO>O5`tb)b6~3cwBrBOB}q4{3rO3v_CJ%+3^wo!@;QN*+n!q(R?K2H3Zsy}gO{@jRN`cv^RuS^`{)+S;(r(MK^Ca7+#V zdrrVU#Q(3wVG9eKC3NV!jbERDnNt|@cUvuayM(>M8uZtPd|A(r^soDcYMyJ9aM-RF zPsneIl$6vHe0m6?H_ zhs-kgfBf{0?pnrjlRxdEJ?=4IEv!MlVCmIwN@cx&FK`eq_-u*t-6#9JB)4X4tgOId z1>AtHu_Hr&Q=y3@FLVF@f9&M{Dih#D>9*>46k~B5dRQ7yRVNp_jol+RBAuPKeOyep zNn>d_Wzs`&Kxm@=l){hwTgME${&mLmBTo*Kco}E(~ zx?FB9&SvdHtc)BKNo9N9J*ZBl@=`A>xt(g2TfKzc-WJvuMWr)%pQJT5Dkrw3ue2I! zstz6+IrS~awiQ`!bupvP@~$PJ^^UijU{9?(KcMZAOXD(IUG9=bu=9PW&9x3@NGBbH zTy@pgbr>C#p>g=^56?)aH>o8_w||By`1ttzyq=$2qD+wm`L^|cA>cca)em1JzH^F{ zxF8hKvAyG`cJ2SyB*+@Dn2N?z(7}&zd@_z=WqU*ARHdY*&E&DO6jMb!-&%0$Qb!CM zsnAqWp52@wF0B*Fb;~Fjo*9Gc7!BIZ&{syNLVcZDNyRm)*z%_l<=s-`ISU_Cq1G_E zOHy5(Y7W}FA*tlLPMXA5)zP>;%?&=Rhd)c6Fh4tA_AY_80%lUboo`!qjKhX^KHj7R zFQ(*|Q%D^KhYV)|{^I>Lk&O<0tF%(rJk%##m{$@oh!^i~g1enHCcHAsIEt!>io#|c zjaqDIXka;CL!e}L4O10rG`_)_Bj?VFxO;oTiyF!wG2%jc?rDHWSaA{HK#)ODYx}=% zg-ehU94PaPp#Biep|TW0r=V|gm6U%ENz31^oaRJz*2r<}QBNHL%>)uV^2M3eY9P@A zHibQY+u!zxq%$Fa)0>eyA*pthPKd( zHOb0~3lsc0Xe|M~!ib2nlJCynZ_&a4(G5XH{3Ya<># z9CrKEe~&XG7y-4VL(pae?Oz_g6{_sH2tLy#kjLQhyJhD+3s}cS!xBR8HpYL5j?t7H z__AZul)#D;&{M{kzV~Bk6{av&bV==(E|QQbDeop$z_4uyBdVjSZ;Px1Ec{MFQzkQ| zz*9UX2GdqnhAc?7Zxb7Eb4K#)4$~Xd7f5Ruqerm}9(^7Z4~2*VJ^HEDhZVW?^9$rN zV1OlyewzzwNX(g$9s8~Z=|mm#M_r%n{GGx7Drp}BA}df!zscSZJjM%Qxo?@@U#C!R zF=tx_JDl}6yP((nS6rPxKLY+&4NTmu_ETk#`L&YZga23*08z?*8lm#z?3;r__G7Nf zb&cv-2$=EBjzcHA{&h!K!}d?N7(rfS&M(0qlCyyrd%+SNH<&9m27zfpK3a|JRZ=js zhcWw~g{qNQ&~XX{M6xH7y4?570K-Uc5Cp}Emrxi)RHyM0cm(@{mwGDJJyqY9avPkG;+Hee1+mz&Sagr=50 z;(Tod>rI^_rR3H`&d&&%33dkA#W$HBj64X_h>0PBUhSoqmbM=#NQNa)(rN~_XI3J{ z;+c|t-rFU_G{4~|F06=r-07F=;1@F_Vo-?EN%;?lvPZiNH$R6g2M}P?qQmfYw~bry z%djC4di|+x`<*|ayjPsWcf=A>%4W=HP3AYa51{tPOVm9IT85619Zaq&w+a;Q5$ zj_gsa(H6V+eGw%?kggSo5{WZ^oP~sX2&~v49x}hwoo4F|K)}R5)Sm*QFo3Sl zQ-A_B3~#6xbaoq=^}LV7lLPnnA?Qbx7t;FwwJD?uXg3Z2SF@9pmQf7%>^kb2k2T?W zJP|C{+4b{#e_XY_#+_BQ9o8*KmN>f7$}jS046%Y7>|r%Oc+g!lTJXI)wyf-BhMl8I_i|tFOKgAa%pj9$B;Q=1iPuY{4A@Iur+1xY_qzbUOl}fl7X#kalE*^sLtfy8j~!;jLQADq3xw4213LTfQh0f z4Dmo1GWmUQMtzK5#6eWxLbTYK^?JQAg2o(XD}kO!ypEkF@)_*dNS22^4f>d^4Vd4^wGb=y zuS3!y#P@GNb(ts)z6opym}9%}(X{$z>tXlED;wY2Y}W-e_kLW3+rnB0YUO6tVEe6e z{QeQsoR^n(GFJ?Vas{e^6AYRn>W&E!D@MX#tDdcpXbYmU?JOsUCB`-j`3@b({4;^c z_J4gLA7Vx+S6yH}`Qc*+%qimGiIYJQcF8#h#+_qCIx7kqLVXh__aGwCUtvKRpeL~g z{?xIx1y9x$8u^xA@)Z|n*8u*vJ4Q^2!lK96%*G%!whngmHS;DntIE6;LKtm;{e|mw;cvtnX-Q!)62r}u68pE}wPDq65dVP%^ z8_=>PZLf{voqmMN&6{0GoW>a8coaUW!I3hFN(jwwr;rgvYpr3x8yTQicec0ViG|Dt z09;PB7Q68wu6%;O>xBjdo8$g*s*}^*(Nw^a$H=HLaR>s}()#hW1W>V`2F|!_IHeDd zO&n?L;9`iNeB5JqG1XbW#*}QXZN>v8ZVaqO?#YpggHl;?g)3{#=gN6JxW;P*W-t0E zgSxeUls5`SOl2fZ+JSbe=-H~JeZq-)7|lq{V@xzMymU5e^`GZsk-MYt)XTa+EiHBL zQ!Q#*RMfy5;^0mDJywUq$pEjJjWw%$5ZO55nOF5WK$16Ho%s~BzVc|QuNZMC&pprc zecwznnFi`@rKIYP)yck)ks@>@QxE^Hd{T7;yj$L@N^ZMFWUab*L2YVtR>te#72qqvB z(x?1K1<4YtA>uXUFS;Cq8bjYP`y|ni9R_VA67?Ube=DDkkZYIYg6^u?57Xjq&41n` z+z_)_tr)fG)p5AZ$D~)aJ8Ny=>L$Eur0b28?FbuROcOSu1wblqd5+=jh_PhKkj9HI z3zQX2WiXjNj2_IHEE2C(HK9i*RZjQQ#9?B02=c0X~eRd zLm(zHJ@dv)h!_Ym{?&W4Izpuv9UhxcB$;MbNXZ=$a+N%JAC1S0`WKtYdGx<(chjgW zf2-x?ksEN~!>817eR*)x#n#rYvtJB^SXb@e-dB4Gy~+M~78RlPC~ExxNXm3pCn`>t znYi3Na<3gB_LG&zxudnq&w=794OaehhtdYDDs0YtZ$F3xZ05QyZ-dyRCH*QWE-hi1 z`J#!;#y|32xZmL!bYTxRhW(XQzb?qHI-PGCn2Tk)?p!Y_R`78x2`#{zhp z{&A+#sr{HZYG3ovhlH{xxqWs>C*{>qM_q0IIFQOBn~hKsy*bBl&Spv2MW*yIx{F7k zCxO@5<6ON6@=|Le*(MRHV0T&Z|j&zE!w@r%$}l&?!a`UCECI$Z^Jr*~6T7*vEAWxCBvmUr9@@&=HK&pj5xZ`RG)aqPQE2J3(5tZSCZ@bJ zCZF)EPCloPx*9wmTQG-=9X_R9yw91lKL-vhlJL0Q%xCJ9*|$8YnSKb>mZkOTK97^z zk7PYQPDXp*8#)xp3SQRQ4m)TkM9jYUxqtuj{R96QX$Ow41yu{4@4u?`6Y>WrrzU~0 z%rg%98N~e~fH$F5XR0RD9HjxrhAJh1m&?@7e~b=-vtca!n!%yZe0fHRHhRyqr~*W* zHfg7L?#4GeMR}(>y)NR4vsM!t&OeR3`-3YbRcJQepQrF&n?>VGX{LiClsBEOLa-mL z-H*w;*FElA%7UvkJx*-0-4-$W0kG`y?v0J-v7Fo`%hc4=y327fu#?-_<6oop$Dsud z+juJLT`T$5UhNlP6i5wzk$9&pBWoKw+#(+^m{fkvr)b;eno5o5esEyHJf!=!)7;(s zaC{RmB-1(PdI2VFV;b9%%Fd%xQAUx;Y52O+FS>)kRq#)r^SNs8>?SaE1cU)FvWU+( zH;m>#EoB_4Q<@5ijTyOhNT$J8q~d?K={|N5c856Uj73V$Z$({w|5t0uj+v2U5C8-_ zjr^UgZv!NJqX5xc@ zuaD#}gsl~z#aH`MC@)kV4T!oMm;(Yj-)9+zb?nB&nJ53_m#(#_+Cb2Z8n~dBc^!k9c=Qg z+RqlpSMPWKVEj(#=_T6xB|qs~Df9+q7k;&(<=`-P! zbDsRM^YyeJ@#`%s0CKE+bSM(5>m*UNRqbM*5+(Z5`|zc>8JEKz*fKP@P1&W@L@2WV z?c?G+bSPbawD55Xx#hmQgfrFj#N|7Fo9l2i-%Q|H*j&$Dm@E<@p(<7BwKJk>4=^y! zAG-(nL$WOOD?V?VE{NyL=F44XVeFgEns2oiK#f-=Xzxr_Dw=U<`Bc3JZ$Fz_@7^967<_1!*33%tyk!i5Hc0mtGgeT`MvKnA)~U+Pb90g+Dw^i zAG!H$KlgLD_+FkLy+ZJY)VtkB1~J(GSZXGrO*#mb{h5U&dahXs@>3P1Lq_6j!4}}{ z5+|tH`yVC3I>XU#>*1oqEyufjnz$G`$N1)bq{9tJSzZBp)$CSM28Wg!0d#YgbVq*_ zd5Zv9&}6eR9)sf?05-WnA)f#`9=w7#tCHbmWgKh%#h0!Pf3f~Kf@()Dby-fnI-QX| zn%k?3VDS_Ir76mg?14iDGR(zh+k;=V7rTXh>Lndrd>-uvr4DzHDddchHj;ON!j4=6 zf8uY6rt#q;E^aRFRqRQ&M@=pHJcz+j?!QYi+zBK1$H}o(XFIkn&BfG-=lLh@YcL@~ z9VCbGUNw0|vZ)+^^Q>u}>*V=MmI&bn6J0V(3ng>$JgTUN!)L+kYs~o&F@S&5ltpx* zc(Mx5ku;5|Og%hA;sOqvbK{|3DGPnF5Ku;4Zc!|g&giqbuEwIJq@kinn>VL6ujbY0z7;dcG-Bn8@X=hFrhpqb!xMFfLr`vnUN7#->9N{j>kShXC z&$7{Y{7Ln#w!%kF#=t1+-+{8j;gnX5`AUu8Lg&YcsgxYcg&Tli+k8HLo-h})vas^K z>_?PT4&SXTX+kuCSBAO2y03Aq%4YF3T1;I=?B%sLBX&Zt4NKI>1#V{a^K!7zP|IuG zj~>!;-iMoAZguNM2vf??UG;ITH+~^G*_gb2YOj&YWU0s#6|`~Xw=J%(OTDyM*Uaa4 zck71z4uQw{UWx+%vmGz6#4{Yh3erwss(P3|1(? zoZ@rUHl=;Db+`aJi7V+kk>A`|eo1zC*8SQIQ&2E_mc_9BW$$Tk<^Hw>G#TBy*PVhsLJGL*bZEeG`iIx&UsuhPT~WwEx(l^b{YH9&mi-83f$CU&hFN-W+ipR(fIFiOQc{7PEACkBkdjD56Nb zyu7wqUm2BjW|uZ*GRJ3aVak8ERkzb0%xQkl8uzH_SwM*osxD z)c6(&`DM0;N2LlC)QCKqJ%DSn8E)&HV{VhvyoC0@v?pYG4N>)i7x+Q?2>xC4fF6^l zMh7PT)M+;_)g{)^fl7yY zzf?)GCc6F*9RNE=YT7pry>4VeV_v^k2_=FEi2t$p%~2W3<$H6_e3{~ zWc9%Tc+*>J?B)Z*N=&ITg@aL8PW=x{eO}cR^jMts1M^`h>^7V4=foA;j!$ z6_cmLM?!6XQ|J4;4SNTfD0Pu6<|wyT=q6P@QH55TtD7Keh>*LDY%+dWlaoTnV@%aV z+J}3`qt;}Oc&1ccMFRycLVmruMfqP(GI`uPT-QMbJ8_D{$r+V_Fku$#OkNXj-J~=* zevix0T;jB}v~AYaQXM+fiDKz~Qd4p`@SFhUDrlk6@gqZ#LQCX8SPXL4Yb{j*ulpMt z&yQ>Z*X>V&_h*lEofZ48Opuxel1pHM>%y)UnI^{=sa|!loXUcE_Tp)S06%UQixg<} zQ|FEU>n>mmD7>fm-Yg~O++-9lyY9f(bT&R`x}Q%GyS_dYO(yr@O}01MJP~-SMkHu- zATHrj2*c-B7H8A*bTbTpE6KzEBmJ2_Y(}N4E^)IeA}zvxlNZAlSwj_sYS({grTg*b z^E&g?b(in+vIrdhwL7*mrUh+z6@`Tltw*}g>qp%!CR>|`KKp#j5~`hT%G(KN9_voqKoT3i^k`2KIU$K9$I@B^@6~?W_kQv3R|( zh7RmEtQe)SS-qLya~*B0M8c58Q?j5iwj6G2PBCFylakQq3hLb3+NNi4*sb3~e4d9O z@m;q=0JxkwovqnBPlIH`! zxw7aa>T!49TYD@uv6)TmZ+5TIl6C7WZ!$#jePEozgn!}axZ~4te@=rx|w1$ zwBxeuOcs}G+4k1eMD*&=%H#5-2M_Is5w#spZEOWGdbReS>Y4|ahD?OrMpY5{D^2UJ zAAcY#)%IV|(W~)(!f|MI*j^^lYHDy>ZMq1hg}?1g^(9)Ljr>Cf`DNSs^!{>ZI4BKl z?M3E=CnhFxyIew?QgZ2qKaK~mhw zyhgT}(im{RXxen$^rKdHLVYaH#P5rU&xc70ShI-3ZT1EHBZv7X5|-8*5X)&d&C(+E zM-i!7yMPqfb+77p+C*GhR0%^KXV9OT)ZSrGmDlccJ(>MfLU*CiYcVX1tvOrGQ{^1bat>RH<+Hzi;J7x&65}U-r8|2$)je3-DUj8ILqZueYobp{rdjf6sPz7bfmh& ze9ZS`uZPpb?B{tCV{J)tMIXDZkk4ECFQWKnKp+-4w^WI9{Zz*#$NKQs4v;eNTp9mL zYaI|~Qlej>?Or(?>qBJ@&7t!Nv-n+^xO)KG;gcCw8O^r(%F2y-<$$7h*es0vpxoZ$ z)rz_fGpaUWNWx2f(G|CAK`ZgX)>^4JPY&KoXc^2^M_E~TQ3USUL9%XecNF0t%|+Vg z&DR}7AJ^w;3C#A)%#ApbU@?ha98_6ccWPeWyXv*5D`ENn@wVAQHruDYB}u1qy|5#GJu4Zq2eBcF`pgt>-l4xwsu;7>oA^Jy3dc~l_T?6r%nipb8;kqh6aB6CkuE=k( z5RN8^PLI#$xtt%(H@mRHSW_!Jywx1`Bhii+9~`|)4ir}u7p zc7{T8;l@A<7T8nI7lqrnKevhd*w894I)4^#*Im=nmdB0|eLCN4wSU>2GfAIvEKt?9 z4?8s~l1T*?kqIhF@m`;aqq8l{$J6&=9FjEn%O}ry-OiuGI^aVvePwVC?Bn7>kDIl9 z7RF!Qbrz#>xd}^igX`gI7|3L^8qEKd-5CDndl|_0c+3U^%dJ9VWi7qbS*4q?R5qtst0iq-i^qyA$Ewnu48#4=F$rKz z9f+%elB(4um2@Fe)?2mp{Fx!(yyox1%8E~x9<->lR%?oAwAo`UY;0N%8-G!NO)@^G z-C5FzEVsv(K?mt1V;7gk4TmYnG3rr3a=jHWXzCY5?5cCaxDcr5tEi3pKw@MI^dCC* zuLvP-Fh~AFB)gbWRE~*uZ|aYfjgB?F+)sc_h*}Bhl)`K?IS>}VRG}X6*|@QOM{nsU z#l4WN)8_c^RFXcE+eJg#_{0X^t%5$a7WcAFl8)1Dx94Qegg2Rh$Mrank+{ifD{E3+ zGz#}~Amj?0-+6wQ_3U>v*4w>d_omBsOD~nOw)Vo@+E^P{cPTzxEBJL0%uMUH5WH`HSaAcsE}7b%=z*N5Jsf>9-Ax9qzfGlgw-GkO#L>m1 zUOg7YY7%}#0$;~oEVbS??B~hH#ZmP6>bL0cQMtF-dyU0XGJj!hx0vuOlIWubB%jV# z93G{>tHp{W8Hd6X)^|l)Lbv z?TbY}Q*K+BT{phV$f0hcRE5K~Y|3PnCPoat>*J1IqBA3$YaqIDE$WtCQYOwuES=30 ziP)_@e!N)QdBsV>fVMDBL^GLWp)9Ev@kp1&<=yvmDdH|qoL5@=>w!Bpb|aFpJ%L^D z^yHK&^_qcZeK2dnmTSMlVh}MbxJVF zmYzG5)ycCsJFa;ZZS^-wA|lWkJmGF8N4E&s=n~z}>^}83OZ;Y5Tqo2&=4{*7Gme-4+=JYgF9%XxWB^RT+OyUNTushM3#$c3E3mrrkw79Lkh$*4@o zTV;5BHuL$=7OLikj5UvAD0t>oQxyvO@-#NXwxbr>qba;)9}axg*^lvFG}Djn<8n+< z1ktxIxdIK14;l1GqOl~b@z0tck~4qR8F1XGcIIH9(G3xf`5X@K%gWN4nzA<9T@scC z%yxdsM(ri$xf*MKI4VmM@Y(0o=4!?%4;_w%hfB3j{BZJ;l%m$u?vFXRmKDrzx_ zpQq0*I*@PRiK`-hM?Ip782$>6X~cyYrxK?DD@HN6V9|4ff??gP-%%dp`FH1RJn?j5 zOgza>(iD~{T;6K>&!fdttf*b__SUqr7auw#<#zlgZNk}Q#|RUoDxGx%?AKvloP$xu zfv~7Ovr(DAL0;Ifu7U`4h>)xj?-E_qiC1X_{c-)_RQu8En7fBZy+KDy%kxM`_tPnQ z3LnJRO-YhO??r(Q=uxlqR=&avl6Zmk{JYjo*^o zflWzkC?`<<#!!n^!oO2TF|@Zgj#2-l5tDsBKOqsUy&qSKvvQI@8f#39>=OId6}OX- z3lu(dhJT*31|Y8Z_YVxSnIE;G!F5zVyo(TC;6M9BOSeREb5N_^=MoSUks)Qf{q zl*=`(Ru9Eqa}z}q$z-1+ocvt}r^iC$fbPCNhs&G`_2F-j@;y8_qn+oIO9UpFnKK?= zH6l-%dPz(0fLNY?LstuRWjf_WMLk6_>&NCbXd^#Vg4HL2iVVRV&!}yJe_BMxi zLs-y`S5%cW;h;bN2^TGH+dZx-HJEVrH#gjM3Q}nr*cmN$(qERAQ>6R74)T(;Npa2^ z71)1&X)1oIMwtKR3YZkojknzU?8)f`t&gPC-M?H;tLld-u=+BK!&{lrfR{#wk5_H9 zpA!rBL|-vsMD?Pq8mfOW$`d=goSN=WwVfZm_itv{tB~qGRD|oKDbBkkBo}uMLT9`g zav>ctT;oyDG?>{%wVEMj@PokNRYs9w3T%}V8!@I0tt2W>`b!kB`5&}=pM`u9?*e}z zS2m5byEbT1oPyJ%v=8RqAIKvCPWQ1RsBMQhF%_?2)NY&uq43avjqqYtS2ZdznMYBc zTk;1B9Vr6FL{9KDAv_%i+WukU92n4u8PDaujH7e~VIVF8b zNbDyE*{}jYapLQH^$g+ImN5e0mj>BZ$Wne13V z&|giwh}ZM-E-WY)mrXupo}O}*NnGi~{`NxpM!l<#zzZ9NQS}S24LQ^HGfhKt$!59k z&qNt5&Z1zZ1cO1|aWJTZG+ZdmUw$RnEpNqCWf9+#;>-=NgabDiS|KXXh&u6$nitfr zpu2Sc1Kz=X9yx+(F!Z1rtu=nxc*c3`7C!=n5bHsO7#ysEpv_{Ufql=C+=Hc0QaNn_ zJuvL-qGh@ai^H3Ga^;V=B21hx(nn-Yc zKOqkaXkkkv8tUS(e|%OA-$lX3^>W(6sLMl(S~5ovt+Da;LjTU2MzqQ&gW}j}L4OT| ztOU=JhmMcIwGFR;a?HVK*#?znu#eiyg{z>T#1%;{z6jzaBVh>so7F=#Q<6FL9W0Hy z+?pZg?d)G%1dCh`}`)-E$vgIWEr(lsH=`mo$|N(vLSF zIDRIVfeON}38aaUtyEIp)MB>B(#5$<&y1W|<$E9Q!`A6jlV2*)S zL!h@iS~>>cHQ54`ukbm7b|SQE0-bo>zW&2ven0ghf1oX~`D1s+7Jd^#t=|}KW@*Od zaimBc$2Bu|v@=ZhD~GHcts@CVeg++dMHAYfaLFa&nd&1L#bJ1l49|ca_dDo|{b?AN z4gWBDFOh;KXYBg;T&on{L!sy8*SY<>09{a_PoFz`4 zV41LQFu|}CwZ`!8h3$0zT;G9f|6_H4sIEBR3@(MT7D%GenLMZyMYsrA9FWVHWR5z4 ztS8pW)mHK|G&+*Uqb-RgxO9!vE7wEGt4QzBT0I{RvIYlDR+bmbsyC4DK{nyCXe1Dr6!t$KP zaA0I$5@!3VF0kFBh##1D)WnwH2W#OZP4_OQ(|ATi^Kf1{wZKz(BBW8%t$7-Y3U zNGPeLy*-(Dm>v138IBO^1k&~0<{6)w3lwr9$KEB>m>ljzDZ5b9m!G7MoH^4)+^QvA z_$#^n`SJ!AB1O9v28VMEHLR_<&mgh$9W-UhSb`5SsS{9lT`>Pi=Fu7n4cVsY^f!Kj z)AqqA$x~4j84Q$U+(dk?qolQAIeqUP>FN4s?luT0`aBV`*4$vdTNaAd6lIts7Wk_m z9_qhQYOwU+OH;NU7%~5T&TXA-q`05Q`;;EJwqdZ+Ih=mRxO3Gm-D2wOp2-<-+l$vN zre=j%k}63F?j3q5?n?0rEui<{1W9w1Jkq`;pzxopO5*ea1~hImYVlS&H)1nMk@jFs zc=VV`fd88EMm{?ON4kukLJd9vbg-1<&~;xBa_5K58CPAx^yYl?v54DgNZ?6M({ZSO zjz~VxQE6O2OBHV4b5O4dF{Me8D4Gf0?zIPz>F$k)B%-=M58f#&r+R%nvtB*nnHQBs zieXJ#dH~;)Y-t9ole+mfZRdKA{QlAi*ebQsEc6XRul$CKN!Gp|cYnIS_ zY)Z37m0z5#B;}Smy*+)LBu`yzbd$rMp(~A7Am}MTU!M5wF~azDmz5nlrP!pM-3xB` zAP`cMkEhu0p&hkHwOa2*4Q0D?i7F0V56R1^2GK{fucBHYaBgF}lgZ|GtN&j576J|S zPo2%Cp6eY~gvN>r3}YgjCj?}}p%u4B zG0AxT`>2Dq>t^29y&qYnAQlW|X(>!26vR%hU|4)KKk$`RqZx5hxc(rEJvEn1?OXHl zzWQ+4oYeF+`SmSm1YFdKF()1UNIj0`6miK^KCFOV)JtYwi^H;t%I+{S?;Te zMB6`@lJke33pctP_9o)pA3#7s=W(2^pFXAe-ET{AF}g3RJpSC5Nj0)TTD)1VHr-Wj zeK?;zTA_~xvILJ!?}FnY6qPYHWFp#S5$1<%dLA5TFqn(&SgNi?@VEQiJqqot`aSVI z4;wyhxNmRkq{l+SpMOnXEPY(xWLI$~yly^qad)|h{pl>Iv|MR(81Z*uvs|GYEGO_e zAL`80@eobMyX^ArFFLq-x8BP7pbP;=Yd=XF8;ZtRnokl0=YJ3I&`eLu>%D~}XlX7; zfDQT;g|*sXJa%UD>Ag0|TQAFVR99XFDmiBqGS)a~NVxuS^W}c{;lh8+?>YZ+l*wIV zL%^LqOLBQ6%TsIrfWD}U3nE9#1|^dl=H7KZimR%;amKy0p{A@nDCSPJ@G=nXJv)=7 zFkh!>^Pxjz_q-$OW2D}vyyR)2m%Yk;)g{Wl>_O0yJ%RgjBI}dp*l45W{ZgRc3G~W; z_bUn}LQHmkB%Qt8({_Kp;?$cJk$j)+|MTE^wVG9&X=l)(0RE%}ULE0P2k=D`e(lCT zUR2Uk>N|eW_8=!()QGC-xAMZKr2^V8qkYi=X3)yHrP{8ZU{;i(KlH3(?|a1gB;To%>&`L*)&O#}-& z2Mvryb!)ZD>gZBLGFfOS6aG!d<0MEnsZy)mI3{(WxeQxdn-s@q3nMFj+GKu6r;@;T5oK@~^3bS$nJhMAv8z)8 z{?|SJjvMRhO|L&PxShxS(Z6Dca|8q2l~nm(mt|F|wz%B)YsyL-u6w+HQ*v7`TBc6X zei=~`3l~rEc#C~m!=ii3ZN;RyoSt~Fd*6;y(_633F}Plbh7pHcuC*4jCUSZnPd8~l z926G5jOP~neD0UAwp+@EDkV*1upL}iS#i6Zf6wEt5}Im|7go>Y+Y5ZXNcZ`AcYx*B zX|tOf+-PTCV0F%om(6zC{d_3@d{dpG1C&`+8u!SgSGsLPO}K>2ACt9~^~#A_5PqN& zmSlJhQl>sOK@xaACpI5Gm7K6yxn>(@SJ=%DAKRe-bQu|!#@#Vg8I#T7K(ekIYb9)P zhS%hdRXK3cY6Scf3i@ikw*(Y+%hl!8G79htQjwb!+2F(QFO}Z$!p_a z>T9(S{Oz&jt*SkVPLtc{`P!H4YO8sv@&5x{L8HF;>C>hxU-8ki&px|t>;B5hZgb`x zzk1E8eft|%tzN(I!-b`>Frz1)efp_Cy!zUj^;<%vW#^xNVJew?;J&;6{O0Qw@#u&l zgI26q9STW#ohGB`0glJpmLAYN3|!mhr%XL=Q19M9{_(@Fyz$3jBZiF`KJ3E}7NxRQ zKCe%oK7R9-O@_l=aKVMERxGPKbjUDWUJzzZ8ohDj#yl%ucEy!{e(mKw`wuWmSc}Gg z_Qd1ih{CY>WuGiE4L6f9;PemZJNTR5{Q9WT!{Q~ug$v(Hrwvdh>T4J($cz`kjtT0E zQk0^6;X)8XzWNvFwfmQSDWU~~0!#$e!UaS-EZ2JE$nHIR)-7ND_IvMzR7Dc_bSCT4 zyghlnp#WG6NuHiT(n*vR)WpUyFUa8tJw)~QdJ6=DqN2c=ZfVPRC34^anyTb;IX#mD zyaoe7C<~aH(=CVII`;KQ8;rms4k(Ib(4$NeRhBtLp~dSoYfPzNWx<7T=RG@jEm^XJ z(x|HKPrUOyEiW(do65>^s1^q(13o1QUYDn;GVOxnXJVKR{*j~a(enUWVkSz#(sJay zZ_D=mo3{#*9E(SG?>w+=>%LspLREFcwsIL<&5In_RQPdloS;7z2)%_b>Ty;gdiAMJ!g*yH~CMfPiUfX-j1@mTqj{(VExupcu)PHmCt?EFkils-Zt1 zLlSz#x6#UKo!=m_R5RFH3i|@85r9>+1DCe&We&Ix%C)sEQsvy7%b0 zYSpTa*7lYoM>cKRGG)q?ShU12EW2%AHj+JXxLT{R;iM05@YHn>i(r`ovS#zun z>-HWx*oJNaf{2lbj$~xBw!v&zzb+OD2NWiqqIN`Mqdyn+JIZH0T7f5uvre4b*l_q@ z-M(}pwQBX++V0gAB{4--SFc@1@%|@_8$Eh7I_IKAi)bf#&qH@LO%vMa*RLPC<=(w} zksC&Swyo{4#~yp>rI*s_q-j|iZREtLl6LSw-3u@L{;4N_(bm?63~{m$)6t=pp$q9x zQHoNOuZR#J{UiCzd7=^c{AVfuUCCxLaB(@F^?at`V-zi1XFOrg_T8)~#4F0^VWTLI z89nOj7hQ7MWtYvEJ~(KW@r|p>S-oc}oq3`}V87>BetedfAoZCQJ!PJgQ;3jHt-nd(@5{JDO9(e!XjZ z_35jGRGb_+YWyjuo_^LDrw<%F;F5FCIq&RK%S#0y6uIY;SYBN*xcj&{CoA-9zOWxVH*W0cJMXyd zJ!$;)*MIB!>#v_Wbutf!m6W4JOUruq9nhywzj5P74;|FEysQLl16;sgT!?DeIxIfD zPyo&%giGVV@&)rh5_v|6gjO$Ibl-jVMFUZPIy~Esmy}jiR-sB#D3nZf24p6i?gT2x;c%w4jpezLSRCaLIsb(< zmW{>BM2WL4C!bH*j>Y376;NPlU89A=fTDtWq5y`@=#57l+hkb}Bnj22KiojC5prOx zw4oaqPf&|GsU%M*WJlsL@Q&U4_Se+ZRD#?n!rJAZ+upg%3B>=ZqXZiIK#tVS>6TD3BaTbaX_cVNn#?J3DG?d$k>D z23=Bu;WcYFs4^N?&>~@(mRM2~NsQgm(G)9*D*;*>X(W=2g?=v@7A-CSPomud8tZwE z?cS|gRs&#ztJiG5<+caYSt6jIlEIK>fr4c+tRO)VC{C=jw4$`+!};?SRs`gK@czR4 z@Bh9iN_o^l*H^FIFk|`&7oUI5s^v@dT#A-}dah&Y?|rb~^s~>p`tr+`e)Q4dhC^s0 zSJ$K6y6@Y$my^_Zv_xXrM1rQcFzie>f8cOED@x&DNW$pEfXxywltp*|oJA`si&B)L zd}YM9`$q-G9LG|O3J43U%#qU%fky)2$Y&G_$&m1K#cM|UH%IRlJoi_Ql@7-|c z_pa~TvjXtwnr64|wPVIkjKwQ@*7O-SVpO*nIr{*wo_z*Cbl-PayDOoy*M9fTks}A9 zSfN>&)2Y14dtc>peN!nLc^K?KfP>X4>Z+H>0L| zEqo}49)U2&pD<(Q^a&w>!lkPmlX1l|oPN%Q z7hihO`K^tIOG>IPz5LpnZvI{>oAX0=GpZnYjtzjJ*%sbnWO_DC3*%v0m53)vj_+q% z789=>P||bYEjM19XlmHkl)U=JyGIS|L$CNt%G`OUUVPp;`?hV`wq?^r7hZVb=_m0n z)0NG$fymkCTx9Cz@Zp2UjTzcK8W8>W&rF6diAHFq1pjPXktj4uNRwS!si2tj?o%46 z4%IidB{OK$Kq#2WWko?`Og)oLIF{Y7|A4GzC9>IkMz1KVtf(q)?Q8-nARiEv=FWDH zrP&J8wx&!TW9co9(Fv3?@-7qB()mofD^VE%AM-pr#g~*fw6qHn3se>vn`hme0~it* zUgbTvsys4mVE6K>(mn$QhGOKis-@*-CL4~1YWwsUHFn$&e(-|>2X`Jkupebt17eO5 z61q;WR3He+59=@oC_YY???la%Syojr6lbU~yCx{Y z?_T&#Wm(m|_dM9MSAVobq%?x0NFb>~CX?l4Fff_|m&G9Kso-3mYYOysqXWnXpF7gf z-q8-<+7yG*yYGLb$f3$;c*Dv?*&MC$45%P{_OdmrJduwCq;)Hn>W(J{RM7N9OBcfh zvIb{nbOi&PNSv3=wbSDo+sf0zQcLAUbQbvQD1~Esv~?~RDVdE<=zVw^l{r=^bUq189vq1_M+KQ6s)t7(c<(FQ;8CO&~GWrJ}f3$MNvZjOkmMvP? z-qxZh0Y#Hp_+F0fI96Fn1on=$hQVjJq`GI{gL`-V>?e;ceCyr2?|W$c=n(_DYoSnR z(v)cn=D+{KZ-4*di?2TO?DJ|+tEnmVBk3^k+hp>|IfZ;x7uZR5AJ*UTGMSvq@WC)8 z159?*H=TOsdHZ(ldgZ0p-+twd|Ng@(*I#uNu5nDeys}$Mg>ZvFHYwxZ@L0J%$0Kg=XNchdnYFf}T4YY(J%eh=0+KU7u z9!0aEcLUHV;6#QZu_Mi`=$`9n`-pkIAK@u`ug#`7F7fiprxSdMwWhyyzFm zrInhfmdxbx;ZSJijH$QXdh;VcdidV^?klV4#^A!1)}SKabkj}W`QFX<-go~;i#~e$ z%|C$)Avbz|kY#OuOBo+_9Fbm-;MzL6uDIgL=H?^!+fBoXAKfLh!QKLpJUAa7w%P;{s5D1)g);Ui-{_rcWzjnz5 z=l|)gHxC@nrL);=It^|>H)NQuuC8#9a92;$ivg#da?(#9d-RGczp-xP+TZ`~x7kzz zI2l5>lLEA}9&XMvChcj=*m*nAp1AJ1YmviUcRz6MITtjyB{4EYiOFPX$bhpVJs7Ql z5#z9`q~`KjEht9<8p}&Az1Pp^b}kqVTluu(G41W0$1g7JxOw{d_WP~yVC8+ zF4ojjZB3HQn}+|czh%>V2du!ltW7IYL6VSGfL<7$4}>Fj-mr;o(i#m#q)8=+TlCtC zQk1Wh{A050gZfdy*TN%YNPByGQ&ZEPJ$u%zTlab6wR0@3;-eeFze^@f(?ptO%a%R) z;cyfgB$LTcKKbOOmtNVi;{eit zC*=Hxf=oV#f>qaa2a$jSgj<@~EX;I$eLc+}7)DcLL-%e~;V@ioTD2aJMp59O{`9Ab zgcU6*fvrbMT5wK#l`w6c9bHLF&zpiEWwVBt&%?=J~!LiP}74452dme z7mMX`nP4#7-bL|6s;jFvZrmsd98dt5iexAoE(rt}K&?%$zrlf}C4nR`pEMOh&Xb|* zsT92eO*~9iQGUmE$B!R9>BJLz^yq=Cq8d)C3*LJl%6a6G?@ydG0SaHWdTS`iIi_jj zVva+-&{+QJI#kOk#GNZJJ5iMLd3+`3P*oyYAkxu!B$-Llt9^kIo*q6hdfskpO~m4n za5%{LyS`|_P+3KlV;QEQZ{D)CTlbn?wLS8=tYKR1or!d3dp48ay?gh^AAkI#M;^K7 zuDgHz+xO7~p^!pV6ZuRk>jNzrH~lL3Rd_10St9z2L9*tYW^E(Ms`{^NO0lJK{{TrEFDt7Fij zu;-q8Zt>#9Q>RY7@AQeHw^`mwT^wOYH{juky@GG)(lsSl^oku^2d;YeiSq$xUn^^w@n^CQNOj+K=M1MLnwF=!=e9hvd9P=v<<>72y~}> zE@xPT<>)aWbE+@&m6o{>ku9tv`Jx5Q=y!sm6s0Kt0r|_IJqF~3gJS}CreK%8`E2W= z_|q@H^wP&4e)u`#wUdiR6ZEhw5a5r$wC7Lny}N4Nsy+MmR8_@s8kPmV6b$GIC!7Fl zg*2NtZ$ts$k>FQZmXSecXBNeb#ex((69zC8WP`!7vXZ)khv`i@xUd`}18KwI`o<;` zhS77=sRZ03)J4$(@Mzjwo7b&h3tSHb*hEJMEL}+~>R6^0AftwxR#ip?Nd(WJq5_)A zN^QrCMx)5Q@SvPl+=)^lkgeO*p&gCm&ccO-u6RMzZF&*E5XT*f;QHvaf5I(opB3M;e}8Lg@?(e7pkFl+Fy=T4MrvKoMl=llcK<5a}VsRHw~w> zEF1|7jKg!ReCla)V-bntz;9USIg?57nue^>d9%LZNJmQ((isjDEh+EYt4BlK{$R93 zPy&o?#zKL*y1GBV`|-YAI}aZ`2Uk0qL%7E3!aSK?K=8 zQ7}!MNu|tJUj|ip?f6+I3>-8FjM6gfBW+ETzwK3(R(7lD#w&u6*IS!gcI?`@V#Tsg zmMuPX=m0p89MOc*lG13nv8CnXI=o~C9dq&070>+g z`QE*2tGm-9E!w2OWkS&)bp;o-Lwh;<_BRyTD-`0jPzfWbv*#Y)y_S|?!Udl-Yu1{z zt3F=5_=FQr(sf5s0p6;^2QW78E2gviv%Qvr%mV#gVp3{BDdN>RQN^0$24ho8ToI|exnJ$sF zRntCiymoxTr!@0)6|8XK`918OCTlR#O--E?_d1sYMy_7H`hg!j{PeTGdiv?7;Q?ph znzL+8uU>FXo10qz>d2w1D?<@d;J~EQUM8cPMorIJ+zpsvxr~v^fmrnH+uy?tcs3RZ z1;dfHHr>c&QF1+(?boMoNl73}P8_`^2OFAACsCEo&Q9C$I=T{ov5f!N5=FO@sbp6I zPB2o_e{$JG&vi27R6%GlU`c7YBrC~ea^1RhK%gEyYQ|5T1ZW3hfr1oB0&R1P;uM~@ zdJH|sg)e34@aiOvNpvP@-yLMmGU?{FWFoO;+s;RR{P=Hw`OJSm_2e_pJZn(A@NjuW zWn;sU`5!E} zVYcr&$nb#)V@4qfMi3M5x94}z>GT3(Y5~4q{}I1@_P4$I_E3UCP>HNuv96{^)rgUU z@hfd0N4`F7VT-Os`x`Rg)<$Pnx_AHDWE#zq8_<8)1s9%cJ4R_mRgZoHh7BLOWa-j( zKKQ76O^?ar2BSBauH0|LxKaIktp51@Kfb?Migh2_yPD0SHW+HOxuK({4Lz4iWo+62 zg5zn&J-RoBExJ%POB?c|r=mj^gtkxkj|en!>|areQj{-D{=rmR0n{M?jKU{OD$ZN< z_!L-4)-j(>^Pe+bJ2_dOq7Ht7y+(Sn??zUjXV36vI3-R|+9pk!1aB5eXU#r-+O%mE zm6f=l{@}q7d={Qhrwdl^Q{eyw^eRyI}f>=*Yo;ibSLNOcEt3iN^$vsi-Uq1U1l)(z0^4Fi8!2Y~*XIyBWG33{bo- zRM<1}wr$FiN(nr#tGyY7rnxnr$z}Pj_D&(?l_%)z#o(C`oyoZjnsu1VuhqQ)J>;n*Tl(lrQkowyitHjT=)@ zp|XN7Y0~6|h6c1?E|*=jXwk%p6IGyeC^&uk^u^0oK(V=0LK68k>oz8{`7&|&JH;L=vQcm zREBo_Q-caMipa(z!C)kUy5#do9?gPohNP~${F6`m4j70kFs?CX)R4o6_M>c8V^ct- zT?K)Vtt}mk7cD#W*yX}!5 zJb3cSCvV!csjaOI@PlOGaM;i(0D3{9(Qv^lg_#E!Ybp_10UU1QZg+wyLWtqu~gAXV8*l7ko^wqP(=Z`A902$mjE2sbn-BYHn>e zZQ8b+Ub*HNThF6*lEUWwxo#~SbZygPSy>WzO%4Xsrk2)t85zVQhY#O&`<=Jme#c{v zJ+@-S3Y-DP;nRO80e4d|90QI!8B9_$BLH+gySbqrOa~_;8cXl+d(5(>pY-h2@1FY~ z{ML2XoOkY-A1_(#U*x|0(jVr`nfsmZeEar0ZoB^a>sPK^xodYlWn@{2Mv@CIxZs|9 z?wND^M8$^(Xdg7m-{qI|4E;c1b}s$?{6AZkcmMt0|NevbpLy14FTMD3M+dRA#fujW z88YNvUutV>|NQQI@I`^grGTdL%C?TK?OQj81InSs=A3TFt19x@OkrLpAX6LBe(eHS z3^$-}zX$KR>$Fo(nR)!|n{U7SxD#f9)`*M~(E=x)bkaTdegEfA|JPGbJ@w#&4-OtZ z8X#udHk$jf$A0+AD=)wD$}2Cu^ioM_sgX*dFQEt0a}bu@ym@m~RaKupwFR6(m%}G2 zne(TDP(3f7fArBuK~0|i#p6#r_T$q}KYhuvl}*j9nQZ49Z@kiX;LvBD`{e`o-Z6Ag z-vu9h+}5rOJS%aug;OCPjbal}o&x7J9y;JMLO=;ZVWr^^O~-pYl)QZT@_-h){mwg{ zc=CynBZmI*kFQbGG|vI`Q3Fv`KsU~BT))9%gh4}x(Q|JKNoRL;bsj!kpGZ)|ArO&F zCi%n@PfVLS;}=gq_2Wk#x#pUy*Q{CB*5+ve>M9-WNrytxxYS-4pf2)AzyJQbrsdp! z-$OtA;lsm54PE%bhXIwTt*x0jas28vD-FZsL}}IPwdIu+qsI&{>p!rfvU<&$H3Z(4 zwRq{0>Tcz|dW7^`20Rs|6$P%dtsS~0zUwn2;?h1-KXm92J|&4PgGnnaDayzlD}*;YXE;?z+l@Tj%CvpZuCsp6Iq@2(u}oo|HeFXG+sL^@t$G%aa{h* zc}SF&r4W?@-B!;z@OmAGGi*lDL{(KXi6n5y^*ALM(zANMAw%}>*(nK3X*k&2+}5ok*4mNq1l2Gc zE*#@rvqy|?KHLTXU==1~YNfTcX48SZu3IczVQ*-Ua7$BDo5?-?)GyYpTJho^UV^K9 z(IuA*8r1E92kwPena?r`FZgc=Fp4DFtU;TsvlKJd&MW=;^*578+FDz{eBh(yoG`=j z6%l^;upwTsvazA=(B|dPat3FWKvj8c^yrb6;~l9#ShsyUaLwc;DOzSG(n?Ss-76lJ z*mdi7r5(nWLXKsksU#74R}EdqZ(XS@8>nz|*|40MF=IL#?!A5c_WGS`6%py9Kqi!K z?%cUqN8GY$L$1BSGF?fLwbII#BVCd5SP7eMZt5(pD(}+mbRu6`St^*Ru8t%%2glp= z>Nq$YeGVBskfMbOG(FQ$cfiuKyyteSETjEcXhR?Az~Muso}u(Ii-%y>HE0XdmafZp|HysBvBm@%W70JD18helf-ge4mv zXy?sJ{V*+OWJFmB*OaPl?agTl@B+06rQNDaIj^qnFuwWBtt1*RwY=uZlO`xk#s1wp z_SdcF1=@N?R029hRt4gQEL|@NONmsLQ7fE$HX>!F&z#Oh`m9>DD%Y~pG#M@!E3d3N zv~LG6nqtkf-oSx1&FzUqQYr6Vkv_7?F&JJe%V$z!2Sl2hS{qX`BSr<$6Wr9Gn$YgO zZ6*cr1HQYW9L-xi6A(vt5AN8tM+~d!TwcOh0;LfGmgVo(`1z*I{~pUf*X2bi%KzU8 zITvt^KF3D03J=_+4P}9_B7IOg0IkU4fX)-NBL|>$)-r6*W&It~Xy%b7>Im9x&IPn* zSbNohO*+GpM+|3#rQI+;&sgP91`!6xMII=z$~bPRXV7irc+$wRj80)Jv;al=vMEeE zZUnR-XNeX472miU?2DraJZJ(%%b-nM1gbe~y5|T^25ze1FVTvX^z7 z;psgq$;(sN8b%dlQ7}@td&=V`PMdM%72iD4*upYOO^2M08SrKMA_ z+8k=`2r5JK3#heCzM9NrHIdORMpU(A9%(t&OQW4kMq)Tmbuv%^nS4&g8 zpfl6}yr3um4OKVc0lt0Kv~i}j?LQDRH%iA6$*t|aOt zgQV)9ID#exvRQBpDAElWjD{W}FgcS6ib~$3p2!MLkjX>aC_ykB&!-YLx{6xD7#Z13 zfaE1nP?m|xOojsI2%N0C23qsqAMXt9Yz3BSzN~Hur&K*5$SPI_zB1OsW3tK56|Nh!x;mlaP6_LydSQqkhmaVocIYh zMH(7WzH@?PN6S`}qI_urtMdgxyTtJvdBfgcy!M=J{->dx3dm8UFGdIfoI{QQTc2TM z4AX#OlF^0t?y^xyGAZB+J=-T!NbrFA`Zj>ptkGI19QgwpaE+gkjTK-mS}z?^5^0P~ zg1k_LmQJ)wCQOV`c-xF7NRO(_&w_+2yxW7?Ql&fw&RjmP!>!N37SetFb#I;ppO*GW zBV1=3G3=QZ&`J_ST7*x#`&vPuqbC`zH+aw>MOJgbTh80MZ51x!{awabht{G?F!TzW zNGH*TP&A7MF;QB;CaocWLMb$vqW}*WCyVBDsI6_}FY}DSNrt~xi-g+WRY<2m27%#$ zK`5CXWDOZ7J+j(5>@`L9K%)^}qOz($+sP$h_dQSYTTm#8=72g5X;laXvzZLEBulCv zg~yRxGZf%EbB-1(%cPK{qk4HjRMv$W(d}f4Hfqr&C>AflZ{|(ILKPkV!HE_LXOsR5 ziVU>DMnh^Ul|k7k=m@Zu8o@8Qs4-Snb28`}d5&>7iJo^Le?A}t6h7UKvQbbR#tV3M zS%mA>Ye2BHDj2VX!|i3e%FD~L7F$x?^VL`1WXx(>BoDB`ri}RlB@iNQXF14^JDHsX>3PlT9i4-tFi^^Sz zG;~P%=QM_uRo;@ooE(B3o%*B`RlRf`tW!WsgJpzeG=|)jL)Ad1I9?VVIOv{T8V$kG z4ygPIvu7nT*?385Ye%PJc%gt6Q3C0_{=w>HPBs^C1(UJCc34FUm=v5Y1Fw#y_@O`OUZA}iaW5ydr0c;>1oMh9s=y4>V9S}${P{_9}0QhH_mQXj=@Gn3;s?k(%MI zGLi;Z0S*bC1wB)SAuUA<-P{1Li>zmIQeO9iv{1JaMMX7GGE;|EqhJi#tcCtXU5h{u zFa}D{mCHLIbV`WY-!sBaCLl5ikJZr{1h^cdMv;T;2}V+erWG*@JuwzhLF zi%T4y-hdGDj=%~!dbMo?7>ZUb1jSsQx}^+X(?tJ5H=wyGfkMFwhAgA!l{qe;J)^** z^(5rQa3&J~WfF4@WK6K zVz7SKX2RhhtP1UN4}tbnF`u{M@lYz2=2)OOencan_lWoer~|Nr!Jxkul?+`$@Ka&e z%YS$t*P^q17U_{v(=<5rd4H=0B*Q0lMV1W&0yqgffMX>1Y;Hv<%9kh9CBI;3=cktR zr||?(gEhr(WL|J1BDBPX0r0E`!)vl`Lsv807K|8-R2r(3kpBOB!WxF@q1>=(BG4Ju zR8lO8Ck@!Zq2m~V5L{APgO4#CQKh^^E3ga2px~$!vJEaG7`ly5xY`s04Mm|M@T?+A zmJw3OG0q!yP*Qo3w>=wU9bP1vDk`&2NWf!Yr)VZnfX%aQi)u*)q&g$xKrm>*PZIz@ zEYR2n>v!Fdrf90G>u%m~4S)9!B^ZiCB4!?5n(0{dFdOB8v6lh?$963wqF37u+!B5v zdD>(Zp*3)YfGkUfty4B0BL+jR$r*+Y9iverQ6*=X8|p$u-UAs zJ5IOm)lNPQXB_?^MfCAFK??|O&dBLdyC4B|6%j6?L&17c9yG8hDIWM4R3UP*tpiS6 z9xcn1#3K~<76eNY6<3!;_>Q#T4Zbh!!75PjQ;LWOr1Ted#LLQa>74Jg>H*0cGitCF ziKBzS0ra1Dd$H1TJD017l@K>E&6pa_<`cM|s-dR{7TuXq0-EVkY#stw&=bc2KHHq) za-0i7gRbjQ=)kC=_UYNPrnVO9&Zcvwg|Q(kOiTgnUc*qe#QL;0NH+Fmx35h>yV`i}%M>**HiKWOma zsy;pPmhEKn7zlnJqLzj#c#fw4hXIijMaP8dMc2*w-JN;@)KyX%VI5JonRsPQF3}3C z#!pf}B981jsv5SW0JK*XQ*wFT6IfmnSc|GdlL8>nw1l1%{_hE#X#qEfTf4$ftdD4~Mlpy*r5x5936!6AKqZKM;(29Q(}s==oy;4E|^53+^~<9Qrxz z9gdLmSfs11|GwgRNsEXjZ=D5awa_Y zlHGL&e*4>>ZQpYczAdK)xfJ=Gz*Zo?Rk)8w&z?~tRZ&bmi{il$kdp(xg7b1<=Jd(8 ze)9sx)|YSH@zW=NVdXH6dAPDL#vvCp#!d0`b`S4cLI*}#6nOYUG+9S;0C37p(?+#L zNibmikSEdrERl`pR(0!k%Dmat<=QjP{<68lpeF$2vZEDnJLVAxA%e!~G^N*m?AYliUjD6{96eJVu*_7~t8e`I-El5n>V?9x$)X*y~CViWcWzVV)pIX@%T@Fo@3;D@4jcKtXKaBANc;0ci*x1 z@Ijqbdk-G;qwjtD@yC9=_0Zw(-15C4eS1Q|y2)KU#Okq!?yPS~x$)ZjzyDy*u#1MY9CpK& zZLk07ogLe^pECD^%dWbv%K?CjLbkCirns!|#4n!t^E)369zOEC^UvttuTMvFXLUvS z4}Ngh=FR&Afz@qrC@~(7x3{%KgIeC-coyz>yt4B4Z(Unm(>*V#iFD$Z4?mP>Z{tJ3 z@7;E5roHXaAO1+UxofVyx=;VwJMO&S(v`cuf3K52__LorW$MZmmtQt+Wc9aixGV3- zj1Xl-?~Yrp8`d*?!}Z^3&oQx*3MZFK=Ix5U!%shLUZ0Tj%U?czu$89sC6_@n<;?$y z*N$GP$N}9bOly0iMvl7nTUQ5zfn+jSQWAUkk%zWz+lJv44y&nD9t>R1)8K^9UBFr# z!%pEVApF>Kbet@_j!{^s`_Il7X5$LSI8S!WpO(jYWL`*Lm>9r$9N>1x;2bA$Ej|ln zC`wVj3?XR$qP_OXvA*cmgy$SRYW~l8?KHba9)y2eDRBI>>Gj(-zwrEjuiLh}s;2wQ znG^Ty-;SqoZoObHTdpEBB z`ICG6D=~a^kQ8{turxBm(X$8Win2Rb{tCrqeca^X$!GK%0aDA-Ln{L{+d;jQ>!>YsH zfdl(3t$gOJ6GKdH#V3nxDL7;1%#nSnKKNka!N%mA)6U$xamA}I|6$YKLqi7-nmVHY zzFixd5>~^Z#tr-G%1h&J;>a^U|H-Pgn=MeBik{PEOl{b?argGU@FPJQ=%q-O_aybW z8B^7N@(r7|?%uVdzP=GG+-MYJb_v-Ucn_IVkTT@#q zPtWQ}CGgrQaGC9q+Ii{9tFP>6IQWyFJo@^Z@7L6HA2)K~lBFv=wQT&@37I21y4qXP zY+O`Br_LPx`YSJV#_0Fnn{Ttb&e%;h4*3I8HDrCKHWDmsRJUa{AzY)ek&y|0{1V96o&1 z_~HE*eDHBPo6YOi%&8N$Y~F0y-USz4ux7=_2kQ@_j$TzRJ>b=+h zd+)v@j1Ui+M@4xrnduYeOg9mNhx-}0j?5`c6Zs6w) z7>1Do2E%&>xWefuoP^NNl#;x8$p8C%;cMaiu{1b1mIhJ)@4~NO00rPLq`{eE$%;~x z|F{seW2^&O30>(3J(JG=&%JhX0Wc{bNr&nN4-gm@=}YrltqQYhT&c z*?y#{b<@Ue(E+aG=y)D%Tz@}}3=nrNwSHgcwCd+Rss zsXLTLgUYf7xqLDjlPuGd1T7Y)O_vKp5}lbRHZKkyG;GJtO%09B zW>;?Ys!cUDRpk}Xjkad>`b;W4X~LMXqeli*`J+WkGMOynT1%IFtefuek)sCm?IZKd zu6?xkKJrYrwLSWi$6tKu<#alYj;#3s8&z3_5?*-Wg{Pi+>ND}$=_ems|0nh#6bu;@ zW`^2VKNd$nnat<&t5>f^(LaT4j0RR|LeT!@^y5r6gF(v)072ZA zro0O0fzvy8?!*8CGLf+t#WABsU2@4KmtA(njOi0Yp~3)mWlinXyXTm(Bf)Ei3>`3R z*f5;sC282W36m#H=~h(}i^k79b;gtlgW)HnV6y_z9({X$>&9vv%~@(NaL@+qXxbK7B&rsG@13#*RJtG`JRL4H+`{;&acw;H=Y2%3^Ts$*f6A zSxxPbA-w@edO8bq)gq;XhK}gjv&WPv6K}ft_LI&y7uFMgO(+yX?M4h4c;`KLUVQPz zRo!aFj2{y%Apk~oVLgCqo(mZB0LYn+b|!Do?qHIdHSDaOPo`)sy^M^AfH6Y`_y69_ zH(h(f&EqCd3@RMsdY0?Ssy1oz#2c=^&X3nVwXo%CAQaNd%KG;0i|ULUH*V0NK@}yc zK;*;+PN>hLc=+9=P znI?zZIy!k#wv2ov3>471_vo2UcBK+sFvGEuvdYRzWGjXuU8y9}XVM8xlh|^$WQ>^nNN6=@`RZvY?(_rz@ zNy6bU5+)KU&$2{Sl|%}50ym8h1kia79Xd2|;zUK^Wkp%OeEFSsK9b9st^4;67&OpV zDs*9mqY;7Q&Ag5aL6R#fD(JpisIYq=^-Mv^8}utZ7?J~RogMK=R1*1)j*gnz+Loqf zbPFvIS+#D1s0Qh&5cE$p%O%g2W4hW};_)c0Y%onDk!CE{;W*u*jb;I3U^&f=^=O6a zZnbE9+p&)vIr5_)KGWD}T8?4bx*x6HcVt-sOvtvFcvaPaetnlOUWNt~w7}wb-?{(( z`(;4}0-A=tX5IQ3Gmg9X{Bu_=Tbj$7^jsT^-_+k-u=w<|F1+fBuYL0I{Q7!|QDhmp zc(=;B9eX)R10#_*CgtyFODijFv*B<(FG!)VMoTU3Smi_XAv!|Ev?Hmc=5nzx`x&_a3804)5N*J8f>n z3ZsV&zU=E4U3bIHeB0;nBN3WSjChHqbY^Ub%+m@z{O(ykk(>8VO++VqJxfA5A{Z@CLJHxkwS z&H>J>fh&ADCb1|*`5#N6gAzaW1p^l1TMqx=v;PV-7IqEd!#$;f0m6A2gyi)DcW~Cf znkUnVzXfW4>;PmOOu29dH~}df)8!nzS&^2S`5C~5BJ%(T2aKIFXAUl}tE+>t?>}hJ zl~-PA!=p*%uejps5yQv8M^!Y{$fZs@ecse*<8Qh3rdw|LZqHs6AkHzY>TWe-$4rjJ zE4ugWH)_#CnNYmkw73h-JAc-UN!MO> z!9x$+K6vP$R61YXZ^U)C+?O}RsgsVo?c3LJ>CV$;jvvr13S&qU_nb0$_Q}T`cS3+? z6oEV%oq5{%SAP8hc*J|rNBn0imdD29 z&CSi|1{Pq8dKbB9M;$kYLFPjTRv~}fF&2y9Ot8EhIYc6n-o1Ma9z6Kod+*(|XV3oq z^{7=KK-~{FwJ2&oRny7kP@WfGe6hN^`u_Xx1$V*8Xe59-YSmH0Om(#z)Exy=Qmpp2 zv@Awh&JIPSj*c!ACX>xUf#~)CcqW|=1On9W(Nu;G3We)HKzsD)fsTp<7%LlG-u{f`#PM&3babh=P-;I@LqV~zspPd z-h0;%`}gZ(xw#V5mny+%L8h~#qwpG`f3VcA*SkKOKj?6lYooQwjtGT|tvz3-m zh+5#!?|&>Qq4HR8!-}QQJkD`J8O{C4>KzOh4hOllD;I)u1SBZg?rdve*g#HatxSf3 zH_$zqL^e$mJGQIaU>Z7DA;vK7rBD=i^degQd30ishW^n34goX!C*vIr?4^+{8*jd)ys|qi0Xk3OHGvb&X-HV#8DpoR<+T`O=@FGVTJ|5bsdqG!mT5t=tHeEQFwXfo>mEug-N7SJ8ql4L;d z0h4CUtnATUH}knGO*?!;eYSnMIYOA_{KcK3+hkp9r`<(MR0XM&lr}wXz`)xOxop(k# zI+B0?-M^gx^u0cN84VvWNJ!Lot+JhZeH^Y zPorX4IA=&6xO3;B<%2zuUO-$4=WYcpBpc9OA3v|HWVW@Ey!|;|9DzwawQOSO)z812 zL^RR;{zT!3+P9r#qUYQwWt505i`P<4Z9gO<%R+1N8Z#|2EsYaf0u(msR9Rwm*1D#c z>$R^v?(I7n)GAy3vu-=2$%8%&U?#Kr!ec$2p`CcAjTVEqzd$WDB_;Lw0Gh2)$&lV* zGfJei?+2~s1X#S^cGB}TJBek?yB>4!R*9qUQ`?gV#2Zo!#y61WHZ$;{ z&{4@=TG!DqUyszIR;GbOkCn+~*86iy!7X6DE_D(PTgYarjj?{kPZ=#^*vOL9wj*MWB!rB&uu9T|q?r8I2n7(4e9^7}t!2%ojWlIRpSypQNUQ9>4% zrYF#^ncv*!+3x|KF)a*z86UAs6qm^yuXX}vM?0I~LRFAuc}fPEz)5ADN{(B>irGhP zK3J(Zto~GueKC5wA*7gS-(I*a5z(_G=to-RH`bkGO_h%A?QeL7l!~7#{q732NUyCX zG5SYlTN9g<@+hMeH0PdYQzs@SPCDIYJsjGPPTS7B;FFFWw~wPkxI=Ppzv&G8Rzj#L z2)j|jBTz`$GY}(35B(CPR%e0WD6!%?iYcSWeUw}jwz7;LGr&h_6NCE2P;kwy``50L zZR;-{O(HI#)(m8dB%XY(Am<<7zFV08L|6`qFf~^;wfkX?b4Z0bOXL|R&7qqYM363_ z#Z>U4iy&7Z-J<6WCJ843m6NhE)=QxYc;UtAC6c{ZtV_l7mu^67I0|Y;U%vvedR52j|Z%N8F_e~H5PLGd+*Ej}j|8u~_2|*pLvTg!o8NAN5 zCtWfU_x9$4G3kqJpV`BcduSsHR$jfS(F=UF$pJdBPNx#>AG{YJ8t-YOSV=@iOb=d5 z2(+A1iMjR-CBvLD62LJE?uj#r~ORF&sxRB zqG7ki46Jfn2k|a6)UG+xw6b%Q)oEp+>k$FIFhHmn&nx$1w204cQO)z{jKAw)9EKyB zpmd}puv%vo5AfxaR5JGC(=w!J2vN+m=O50x6nFNv&`gy8$+MV2Gd&4`=F%Ln@cKfX z8GH|fH^_v&?bh-`9J?Awh~f_JD~%TQN`Z>(>u6WFd!Ue7h12T7{4Jo1Zol7-re-(L z0b(E>dkc*EJt4pWKe<>2S3WvjBrY*b{LZRGH`dosE4rE#uz_5vuEVW|%MY@Q3z#KR z`MU`NVFVyU$uq6@k!3OxN5S24AH_1?c4akVyn0rP(LDsq+FnC?9~v7Qf%ywgpYK+0 z7~HOXG%ENx9C_N27|e?zJxq^J?RVZY%F!hPv}`|2VC+JsHv@SLt&A@lM16w2Z_idDN-q)@lu<)}7w6}5 z8l86Bt&=-6oA!pjO^+drmpZ`)`(0(G0U-fr6~C%I5A!1cnR+ND?Cvamd08(2;tOo^ z6Q%}WL26n8Iln7qwmfufIM02^BLQ`gfG8nAmeX?p5UMg$thk|n?(C)v37zgEnKV}_ z|9ZG+8q(@lyPGZERmY24eY63RDOG-j7{YBv-k38??ybFCB#6T)kn3QwC_wNNJhpp? zLR2t>B3eg9;jJbG$3SEjdnXd>_GU7L{i9YhtK$4x9RhMHd|c_=WC*uv#-cTT=r0u2Y*$5J2x zT(=ZP?FYTGGJ-;QRJ+dSl2pZ?SRt+C*lAjyczJopjB7T@H|}M8e4dU>j*zj!D4EN>MRK6sN-#^eS!-uB!+ulANfmm5p#G>enW#I73 zpe5L8fE!1G*W2B92I?ln=6PLW7;=5~QH0$qH<}z(Wfi^e)@e&~{i4RW6yB+jqaJAF zp;+vtgiWh*g!U*id~hpBFljIPh!yTcrL0tU;g9ZQ{O%+97P$mSyzJr?|6^{f2Sqnx zx78yLB zRj+SA(Q$iGK)2%lH_yXI)arB z-^K5_i2&xpo`;b0S`Srs_{7)OYZ{_B{~0nxxBa`?$evvsk*grzU#4EDF&=?4Pgy_j zWFx|7sWyp4{@HE!uPZZbD*{8i(xAicVOffs%Vjt3=H&B-u=6c7J88_rMr?#YqCER7 zJabYp2M*7XwQXt+C}+iQrfg@O1{NSOa019zQ$FJN9lID**1tYIY1Un~)LUKwbsPie z@x=5&N+5b?wP93T_k0UIA}np}_-HKeZHP+td;9Ih=|+^n`swq#tUc48ue4F569A)O z5=76}OtG*2mE^&gp!45kd6<0>>Tl<>PDwt74`x3VZwtk!G+U4G_TGC#ari!@D`tY|>5(e9&{z6O`VtjYN`%XEG~GSf5_~~6VV*Nc66{2TAcbwJMs+; zn=~fpVt6LS8kO#iW!)+O`r>Hao%6a<5plR|7pzm!X@yRXYTIcOj@M-QilK2@h~%Iq zWJ|8uMT^g@3b^%d3f3Jc=Xiac6cdF*A03zV;y<~bT{S3n{Wf{dZ1aE+sgcHIa$BtS z4A5FO53Vi^g7mK+ds-z0HG8|ooR5EuuPjhGG?8MM*xde|uX0rGKb~iqZ5@xQHzuD~ z!Sk8>l-3{o>vJ_H8$Rp>9LTYLEoj0iTu%=s#(d}{=R&cB#}BkcU}BuS?T!*z0X9`f z!5pyVN?icg_VhOh8I4u9-MT-DFwR2T<5!l)%rGz}6mvc;2MqVECC>}OXG`H`g10dj zeU@Wcg3c31^IBSGT^HM(u-K9Vsxo2TgZuQ-EZ-UV((I+Gip#q$*cl8BXDMfKdY;SU z@sAh7;!*kBj-V(7|lnHOx)Q@yWDA(+n*%GeeI|lbKeQ z)A|L2aI?>FPKR4_xWZwi?}u-$k{ZR&qHU1nP9D7ET3vA?Ebn&4d?S*-jD$5%5`Rg~ znxK;a@pV&2wJSM!k)?SQjX3mZF(_c+r*gt(`R%_(7UReL0h8zJ-1*4yDHdBc0P8&b zjQ16y#2thuoK%6%1E3AZei0t#R{1n)l<7w2OH;XHo7lDf1)vD}$0ve8^M-njq_1Ps zd92L$YQw|Bk;%2+e#<7*5uEB^<+i+*lV51GTbi3QNK-mSBCj>9)6Uh|==8JbL_gxU zHzbWz7-s*3HP34T7(PaUdo0fS0)o^s1HYB2BjAm_RSL6GA|FR5C|T=UOgf~vynKFN zzXK&EoNM?`RS{g!cVE~>w9~M&LQD+Ger3)4lT@e#7gKkM;6&iirsP2V=i5Fk)Z~fw zVU*r#2gdxsl*4Z2m&DT@(ka9i47mvwugo^MmFEMBal6jLdUhzY&EOtk^@on459Nht z{KBs$U>zobT=g0W`zAjoc0N%k`v2+u2>-*y&g+|ccIK;`jfM2>yDcU9eKc=R(gm}~z-+4_IXQ72;YOE`%T48)2d*YihsxK&V+=kJ5-+p2&fHv+d7rec4i4?^o`!_q_%4sX?<&`Mix>w~Cy0TsyyiJZZZk!DW&Hy$+Eu1aB7byq&& z)L|5x604!l`Km9Yh%k?Y5a#HfQ7M>T>B~&;eTX8VD=Nk#nAOC6SB80mC&ECmxz&YY zMn~U40#T^M!b5&jidLUx(o(&dF~x9+_YPeKr+6#$jjFOE^JdQ+)Hx}HYqfa^WMl{qRlZ1*TWNx8)rot1GofW^Q9Cszc15~ zZ+}-AOCeb4V}ItXX=S(362av{_c}~OrOO^=S%m)wxUNXXq&m;Zz$kTVC(%~k<7yCF z)S8~Yy9L1wzQ=d%^MfEA-!9(4jy54)LxB^?nm|wt55v5c{(vhyte$t|-Rrf49GRbS zDaDLvF*H+r4phxQO}Ek=z>tusA$|D4xuPk-lBERaAiVYs?d$gUJnf2`YuN5t4|ysiLX)=JPY(tdZ&o9<|?*&BC;)dnPaQ zv_)hS$i&j}a9(5X%z~J2uS_u#ltDaYk`L9GE|81M)KO8f=CAO=40@9 zVK#9Ij)TmkD#Pvr9AMpdG5*s${L?>(qQBbYBHU@v#PD;zSVqxHM5U4YlN~tu&B7CU zh(*u#SIwNsc1DssBZEd!A}faRt=BMbxag(pTHfx~V7&w)7^$8%j)n27%4Ec+;YRy4 zob$&s^tIhOBOgSAX*t&MB(ljZzMveNOra`}w%5J@ZeWeAnQHf^rr6my!o(cGdFkn2%|*@suw_KpeKRfG+C80vJ?}Ot5vKG_2io_r9jEnv`OP-G~s-2K?%m`ONPuGcV zT3LO(pUmN@%=iY(_Q!s1 z#s^%gSw#$7TzYg}HDu(xPtbwHK>$F@)u5jKieiP2q3g3CVa3(`PP~T>;HWj^cGH>6 z6@QrZyQzn@Z7!u)Bn&j}9w3MYFPIrU8RuoI+z-yZ!Z@%tcw!IhiYhp_eG4<*z}A)= zB7xpqSfR8eI0r*-8sJLSzLcV@z-17Jc|)}q{`*J*xZ!XdU{2X?p}0WE(Yy(5U=b7e zu&2_B*pFTN{@W%*__&d=WE(s#`N8MKU5A_Tc#8dRl*)iL;Aj$Lu&crCOf1l9vd zY<5DRugB$ssz&XuHX~Y{-$vPTea|N_3--~cslF?=klS${qbr~j>|}x8JH+I{L>GjZ8xa?6mXwAoPN`z zD6W^NI%_aDs7UPP<+J)j9Ttvlf;@9<@e64v;@hASMV)EiGUW5r%0cN^JB@4NBoa>YgVD_80%|d`U_CdjY^Tw27a0o_j)SDcB+-z|{uW zl$+Ry^Ohp85Vt4S-$k;K%{CYMLz!C11`D6)=6l_+dFqWfVt;8XaTkLW;eORs#QD!!T? z1%+@)*Si28=n^md@P3hcXv4_o`WzJZHdmA#_}9HFGU4{cEPaL&o9cQ4?c1I;!gQal z36ttd>b*A9*4l&7fFx`x5YCx*7RUl>zFbG6YKGmefI1(Kg-@H2IagJMZI{$po^{@~h0POi7yPb93J@>^!T>%bU z*^KdagZK^9@%enl(byM~#iPm=%Xw7IF7Rf_pw)3Qqju&nMcelu0$c%#Pws%N@$WAd zJ3S%5^j@i+55Te1ArjIDZ#QV(YX=*7O3UsvoGsn#s!|!=FSL2A!O!ofX&*hnn+;DF z%NwvYM`MHmk*mL;d6Tk|lDS+*_CK}4ni5 z`EXjRk>KptT`Y^DfB15B?VI%Q%M%h6y#K^&j~NV0i<282m^xhlIoS-SO9qJ|HMK9)Ko%| zBQqd!wDZ9-3ks}?8@^ZLlYeYwdyeJ@3O$d+odeDM`U$o3&^^}Ogv(TAgQ>KjSDp|V zU|=@e<#~+5(T?!--lpBX1s4Px1{h0wH(>V8&0g`28_TtPilK4wNN^70A6xjaYEJY1 zrK6o*)9qc?lOcVIi>NR`H1~}0plyVMSS)ybKE37X)MrBYpnZXF`5S8BbGj!G{uOiR zbZm&u>&a>)9Gxma1QNyj?V>xlqqicAmu;vliyiS^Pugrr2sCU+IeaTM(7^rV?hw8# zs(r45X!x?oYbY?kt?|r+0^h8zs!BQ0Vz!=~Jd=!^Tv1UGX8|H>ny2MNu11k8%a8v4 zITu5>coO<#J9^b5aLjNo{4i(*px595$w=T^hI?y9!p*Fy?9h;T*k6RFK_s<^%rIom z5HsftAf&&Ussf7JB^ zzaZbSINzEAWIGF$x(7l6HlI=lplj*(k%bX)6szJ1JhCy_ct3t7;y%)(y%$Yh3P`-_ zN6(l(d+{&25&067Pl?Sx=CIXVb;aSF0SxJwNQjQL{&NCd)F8j{!RXYnbW!4LS;?-% z-a~z>TtP=jRD8hQWhMa5M_lZ%%}mdlUP!0ntjT4KDzOMMDm+hjO>`et54lqL+2T7L zfsw}Ac7Bo;q^_fj|DZWUj}}vxck?eo0_y=hrJ}EnN6&>vizsx2!WR(L`M*z6X^oz? z0Wfbxd3ic-3AxPzfo()AwOHAH65Uz#Ml-*GhOoC3mUlTLiiip&*Oxz;jvYCp2dJ1N zxELt-?JN4~V*!f!kwY!TQXvob5mwwOp@T_O$CcWKqDtt(%4zdeoIXQ5^&Rj)2jK}c z?k#Y=BUyS$Q+sTp=Gaxx$1u0SXspaN_Y%3sIu_|il zcyb_M{TD!ut(k#KfE$#oo)3EIx zzWHgPD1Nl`YeV!-{J!d>TJUU@N8G4(v1`chp;&w@o#zfnNxy}7th&Q)z#xMb7x1a~ z$WSd_>^ouurygJ(;fK@7c-~Af^~q>yVYu0meR-(9$G`haGos&W_Zbj9qrCTeB#sxqSd3Q{hh5W+e&&1MWLcZ-*nXj~5hR)G zb()5=>N7Yc;rEZKR=vq!-@M}5j8Z3(bp{h2T@~+zVi)Dy3%DNL(We=w*ihE z|Kq`U5ts4z+92J!>Z6-oBr={T!^tRZ!!7a|~2lg|fGmR8zkyYF+1#$IH@FY&L5Ay}F)5WMipf z5-W{b2#}8_+D=;_srn&3n+5%fTDmbQDJof<4ojEwOk@e`K#FOPg#yd3F{MXqt~l(y zNjk>I4JgY$4;p;lh({~%27>s>*CL^lRrgrz$1WKMRZ+BGTQoX z9p=q%k49_iD)usww~{aM@GIzynX=r&_yNk z*Rpjp`3g&}J9$2A#k{?bx)xxBhMGY?{d@zBIJk)1ib2$9zFpK_52(IbN4O->rx~ab}fnji$xq( z#gEW#j{b^DO>YBrD&svt62;4a56IOQ__e>0Dy2_~B^7956XbsoS4_=Bx(|m&a-lnB zPQN%(PkGS&;WUNyJoVB2(@0^5+NBqzgCD!qH8QKp3k_4hw|YkSX8`n3G)=^saK5-`eD(G$;`FR)@(vyyxNOWLXmu-%hLimkuykq zHdu%R=(COj=n#%$^PW+PueRh5qatQbiCds~n*3W2!WpI?5_x&m0(*xN3qPD^XkW~V zo2F13d|QQ{Z^D-plxi+tEZbN~+hWPs?Xge6_BmDl zt)lGBWndYr^Z~%RBMnMpZGF+tY*+t$fZkNc7g~Ei4J)*z)kKftuP8eY~Ie z_OzJev;hni-bW%jrGcraqc2CTFDM)k$4Bk`PWetG?g( zQ2#9l$z}AFzY!uK&iM1rS?@DN3_%6@xU#_9k}vHCgY?Iaq8HOTGGdCq#5{+2V*+Uo zuENRGrrZ}w9ciFGz4?AyAy0#UOkmaHp?wnFeD>%s^1pxoBIek?lmCf%{PzcEmuxQV zEzuqPJnU|4)Q~sS0ws#RJ*t5R!9K9N17|j&6{`d)ruWJrlDT(HUq5jBYG|7;eRva? zRD&!a6Fj;9581)%qv0h+_$^Qm{pSGrx4WAU*<$vuIa|!6pjRAt0dI`36vTwY-uo-j zD2fyDGq-N^$0>1p3}?AT7VpL3))B2)7Gmk zmAc((G^&x6wjA$mt3)I39zm;E3gV|8RsWeRMhn5C3GzwEN+CDF*>At6PUGiot8x3P zy|u3#BJlPydXeY*9j3mv^MdGsIFkD-h5+}P&PY^D`!i}s`+WPtXL||o9-&|!d6)U+z`wx?1#BpRdxbeUl$_zyFwWrCqgr(A>L= zuOi@lT*i>=`8WLl?zE78AceeLGOj;Esy~NRN+s^Klqk)l{d{`oVEEjVt6f#(2??%f zNlh5V6^4og$3-O22|V*D>wOU3iQy4y6Qc4xe>&^9qgr-8-;~gAau^T6c(Rp+dYBz? zcXKM?bCRs{bf=W?Lz8eH(=~{)a1>y0fq=22!JhvQ3l6-NLpthWS-s~=yL+D{@DrT& zVtFu5P0MXKg5}$xov-^+Elzuufctq-XP>R$xDjml5rKDH&x`?UqsFxFmh#3LJMggR z!c39oZ8$#Ies%e?G5=jCY2kn>pN{EHtCku&!*HX#t(G~wBVv*+-()DyL}0G7wK|@J z3!vzATTK3691v=>a$6$dIHb7LF&N^ozAKc_@IZ^WGI9iHP6TZl|r2MuR1%_5xr8x*9`G9X<;~_1c!lV&I`icxa>CRpkIv9 zNu>CHxC&(rt{W6P{rd@Lt&}h|l!)KeA|n=ifR=xoF&aH>=1YcSl1qdo@0kMOFIghR z6|F*K(b*T;7t3Z1em+JXeK%?TSI5pfr9(nRrU3@-G`=qEFYS|BPSI zuqZvZTC8$CZjUZ%Nybn{M&yEKGK@kZuCW+_VF+4Zu_R!8&{70u1kiQJ)r5#Pfyn9` zk`hk{EgDWc5UV_3OB{I0IoFy$>nr)zsLkGLIlkXE?W*m?u3NJODQT{OW2j{Tx#M`;!Hv0)aTIkLpgE z>))(T1dVKLR6qUsXe#Y)2bMdEvFEO|PbXb?OM*OV<6yU~Q{Ji%D!f?EB=f&61irIn z(*K#`C0hY$D8~!Ca2(UFU8nrPFd9QQ2`OUZ9@K}yD-$U!P*^M(s zg#To;h?vo@XLel!rUtR6tRy}=z0Rh5o--#s-6AWurJS`Vx*TC(N#wUPIB;(NP)DgG zHvMqn5(V~uUb3n-YBe`D{8hlMA{Mz%9Bks|7eO$UPcWMU}*4Y|ki>UTmJ9CF_!Fh}cYc;=vL zI+cdhr15@uXAm#gz;6$Wf0fhgayO4=S>SA{wd*%+xPiyK1$g~@?LyOXQv@T=U4#ku zV=Z~7-`Y6;1`?Z%#Ijo-uc+25m6#AF0wY`M<4ahj~XAo zT;9PZd%=?*JrPmGM0X^C`FN7vc?#mMX9aCs|9v2f#%j~ah4VHcFf@6PaiqX0m5j)!> zZ`N!HwK(~Cg@Dp`i%o56@q_ELjZ27Td~R#`>CpA;WXJZ&fh1+5`F0itd;8-I#tJr` zuGg+?yy4@GBRw8p%LM@_n~1*dSxL~3At0-m@r~0KVJtoYk{l!0{LA~00#URL_r8Yg z@dyw8QV#gU8ZGK=z88tO(Now#cAf3u0GocJfoD&@RgM>4^@w`A`%PBeBoC(TpL5e4 z*?8vY!6BiCYIzZ|V3o~zp+>fmj6SqowV^KtUud!WT9}%(BFKfY`HLklGz9Z90(p50 zdP=!b&GsU0e({Ze;!ZmqIoM7~SsNYItg@#O#re1sIZi1b_uKl(tuKSmREGWFINZwI z{=PT;s4zujpdSRqc`HJZq#nNT<(OS zrATclaND`@+L&+W&q#P+ZS5V@iEI0y*YBl1!bpLD$X zE?v>z4K6KV7Frp@U}wK7eAfKnIEtf8tahw4dVGa$EFszp^YX&ffimB@SJv0*6yC;P z)pP!6Lw=JqUJQtXSbN;`kFmLi&E>EbbC5x^JU8;QB^Ok69#5z1Yd)yRJt0`JLxP!# zLUAaac(G~0MK1*S-u;3-Ne!svTx=ra*z2~{)>Wl{ybrDl);OoF zl`WcbB1^{ODHO*-@Y8EeaHZa|Wvf?s;dk%q22Y5$B=)DYaBa2+9V=dKW-ARtx-8qn zoc*~er6xZ1tg6ay937`5{Ky$Z8K+bAYvbOtyrwK!n%6?vK^n{p?T$leF>8v8> zM3<%Fv?)|y-?F>!&OlxY(qzBZ4k=1f5jt4aGz}$@ z`7hlMD)T=B$$Fh$C|;R%0>x?{_l{IsR&?O)rrXi&;($f0YV!%oAqMKUK#eAvOVx`G(P?f@-bgPBx0y#!f z7by`%Qm+~AJUbXijbEAdQ>7HJKjao^l1eX32tclHG8f=Lf{u$1&eLdiVP)7~=Q$)oqg%*SAji2J?JhCj(7E2Ey`<4&Er$+%^UEq@Y_U2df~p1j z$AY@EqfPNAuf=lj-G=Ag+Fh~Q!+tg(`+F?N$Vhwy3@JgT`|nif>IpqDh-P0@JUn`= zy7C=JH(UQ0wqkU!)ApOC<6o~2IEVuqJ!*!t$yZY4J-u6SkgJoM(Wj(cSoG5XsZp*FB=Wn<~BC(4z8V8C%EkiWYDlcs5Y-c z&{Ac2j-FRh*i`ZokC@mhvpFHn_%bSgS<6*wZ*i!bTSSv?m-XH$KcB{KtTow~El9&wbEXF)uYc;u5U8*@1F+;Jgs=FdmTj4VQlyx(IrdI z?#9Krucn>ub&v7{4hESFiLN4vDy0LteLGfBTT!XBu`H>6iKIv+;xZ(>PPMoVUO^WOJR?$Eai&EeLQe7U7?XM-gtsdii^f*?a-K$>MItb^D( z=`%2{Q~2o`VYBbGK%^rhn>l+8Qn^?L!PY$-TTf4Y90Ja=fvnPbabyv~gyH>JR@zy7 z>r|}}Q-bgvFD;_Wmiq94SE*ANhmAHqS;cJ$PVdqcE)$&eWlIYc$78YdI1`888O&la zDz(-%@Jwq_)w)B35GDdCkk!&{^3ah{vDO;Q$h{gwHfGje|M=N%LoGO?2c8qDwQ34S z_W91gllv=zS1_GNf>hnKxlT>Enhe;Q6xqzkAX^KdxdpUNzqt^T= zV%0W_b_28SnQ?mO(j%Q_x8D4$JqZ=sar%FFBX(K=o92E-rr{{luL_x^{YhiSkscV@ zo$IexG*2}|)O@bH$L~iQ9o7;Q8~(2Nl)*V)YhBnGYHkmkC%u_5mj_yk0Arx~uHId} z_cX?(*gWaNy`2RsIj>GnPtVQOdz`Jioh&r?c6vf~4`(sjC~(JBN`;hpz^kjBc1slu zxxP>a@rP+N>dK?zcPkRWW~0N{PiKbQ%Oy|9+g;@A%bkXk$;yZ+%6o;S8c!A(olS|z?p}ws!_TP(->*5irT z{C8!=+n-L`a-Y_IH6x;^7wTUweZq5Kc2WrL%9_-rgp>)N8tDk-56hPNlB`S|xPUsJ zmy0(#AG4w-V9P-C&tii(0S0FPuv@ocbj>u_LpV2=D5al4AjCirr|Nm|<^xaw#+RyO z1Lh_xG-MZBNl8{JCYE2E);6eW6S;%hww~rs zXJ(K!IV{~SQyX`|7FMX9hJk(E1G7)%xS+L*ZZ%!q&*r+}ty9-A2cdmi+Qxo2m35s# zUr1UzLF_>#?~aZUG71)!l#E_ME!y)Jb4)i&CV|(Yu2r@h>?Unys)j^5kyGslg4tWu zl?RFJ>WYzOM_E~Ynpq345=e#w+nbjL-1A|^vT+n~>iBVg7?d-1@AVfB?2j7@2eE#! zPS?xrC6m_a^t^7*s*v`S2SUhq24V~vEU^%4Y(J+C%+M>-#Zrkvt=n&%lguNdL(Q#O zY-d^<3lWne6B7c{Oah7jc8imq#a!96?ZVvi4NuvSA(udcsF~e5uz6ikQD0v=)v0D^ zx=0g%iL=}1$^ICyw&fjJ2D;m#Hiq}lPSRrG?Q%0swe>0n0EQgL(}2TBa|Ns3Ex>@1 zoSY1>)a&JWjlSYV5`3@CtGL<-Al}(ah@cMT3W7X3ZDp9KDOqTOI&Uv82D8rrI=t=Q z!{2TZ*qyM2FPI8BJ9XZsw%LGS^cUNp(zrMwruO}InELYa{3GBD>-@)+6L7zE06ZYg zjqf6Br51wl4JFL)P6f|P#ru9CeG!^>RLoK?` z)1T%_8yeikAKkKteLo~vH>z!Jv3A2}1G6edqCYk{m`Ws~bd~)1kJyy!-RF1R%-}ETc;7+B%t%=uH5tv^PB3DduIl ziIB}r>e)#KA3ih77Ocs;L^YEu&(Ro{z*8?A(P@m*##(?31UpIdB?GOo0J4c*vN6%o z3&HyjYQpx$r`*rUOfH=E-qS{(zFSfXICb-mC)UnRj&XYq~V%B0WyJ9>Drp% z9Cp;6^s>EL>L(@&DMe|s*VM^Jow6v#UT^ctvJe=+#CkaWMQtuhH0tU`6PLapRjFga zMnpGhqSJjouI#Qq%`j@!?0hp)%ZC)0Q=mI6p!VBkTZSx7TY$$PXHRPR?U#7=rVgP+ z@%);tl&-|26vtZ2w}U7`md|XuddAuj8?>*bnK;-Y2Qu_B(pZ<~Y6H%;s#XL7ikX`~ zEn6i`m6`4;C@OXfzlvhiUNIB=1X*j^$l}|BCAG@_A4#&GHgEII2z=+rMd?7z;#%y-VkT z0Bt2v6nFx?fGmsOcHmN)n$6&HI4sR*VliC)X)q{tTE-EjUaV1q{N=dMSx1Cvr_)w1 zV0Th?fmad9T(9)MSC&w(9sVN=Xo4ga!UDe7};=r&J?BYHj6>>TnVAO0)~Y*gy|UQ{s} zy8!}*ICU(g-aJAZzKkHn-KECLid+_>wl_VK7uO;kzd}H@y`=P6u9!$V``GAm{TEZXuP85 zWQ{ebZYVAXqB707b)vx4VUlc+)|^Sj9$c}fTZl0pj+HeUhbmorQ{54JuB59F0Z0^O zk}>Uy^cAZtGopi9H_nE>$-AHk?ZlFDyYHi1zyL_lT9Ny~rv3JGK8cNYtHX!BSgddq0*Q~y zk*wK#4RWFWQtGp<>+2cgMVWfbPR6N5^GsTc@g-GPvAmBNkP7%3?!he>U>f2Uiu z+}+%Cu&TrXg!g!w+3XoI!`AC^2ZJ&jlhPPYrS&GBYzj-kzZSG=L7*K46Gd zS0BB1UVXVbUKje@Hvq(7e_PtV13NBLvK@(eO9hn0q!Gpw%f?UujU5>6w3uBs@)NZhLjyox23n-|HF`It-+i*Zs{U~i4=B~w%60wowLP!?#X55c2ErKD+>zp^G%FXna71HjO#I3s2ljr=po zym_!bAUZ|yp$*iVsSY4;{H}^3HO+(QOROe^fV3ti!jxi?4m2FT`-|oN;FW9Q9!71` z=3(gcs^F;94m0NDf^sGXFoxzp2f&UuqLZ2RE#%-COzpQQlRzCCLcysbf}NWZRQ2h- zo&rF^Qu)0kIw2d+dX9;UH)Rb+__WA->Ho(zMG0rey}qeTFRyrfjCi|2_RF1S`z_Bg zIrbKF^C5tyN;+epcpq@B$Nz9qU*1{KeQ0AscCQjWz-BhOKVB#kn;(gsn$G1h!3Gq+ zUC;X9b*G)!miBbH5qDJY{m zfu}X+G&^zy8C)bf-hESj63gjSN+09?{IuqrUo!G&{#`p0fjo#LiYqwdB|wC2yOrVa zK1HjTK!;u;$f@_npUV;6sqY#FYK0_1CWy!v1*6Ds1^pa4!{JHiosO{#vR>LOiP^!+T7sJ^7C! zWY}RlYK3VM0rV;|%6rSBscevqt^g4-HwvG*!`E&R$AWRAe0(pE5y?f6sO)X85~Zng zT}EuSaHHKrpUa7&@UZ(8c9P$uOuT>3zuYKjF+xC_iK^kpXC#dGXQx=hv?>kWNwbV0 zxo7Q@q9qs1Yqh=#q4diheHhd+VIjGfbevZJQ6mi=8pszT3N%)Js3wr5! z&Ec4~g)d3+z8~>l!)qkho$8?Q$XS!(BaicStO2S$7vM&cCSo%0JmTYPn7ciWPOyHww9H1%`!N2(2|$bVzYf|r2~ziSgQ@U`-)ehyh|BWb!LYoo@&yo<1J3G zv)X7)%#d+7st`Y$of$TmN^pVRlR8Gr=eA zIX2BE$Uq70)&3ZzsLS>*1(raM!_0- zR$+hWVRgxXXqyLempc7yL98ylG6k0@^u9bvm4vqp{@!>!qFWeh5;m!AV?^^G=`6F3bGf5`r%$zxA@BMrpvVh0Q!3RSe z&1LiBnH+4jW$gmyNY|`L$APAIIJD~e%QmME-%xn8YrBKFBL7f$)U{U2&!lvZ1sFOM zG693*SVMijh07(Bl3_-0<{`_fszIn_M~kZLW;Ju52TYmE8e2aD93Ld$)f@Dlr{LOR z{{-8@!!_vlQD(4&Wm#$~OzM|^`gG2w{P>*;aeyG=vvhxfXV`K*D4(csL>QUYxp204 zGLBekyEq!}#)hh87g=k7QK3sqPPp2f;hMkn=LF|px@r;1UR4Vp}O6FV6j&Qs0 ztPy)gI_Pgrug7H+=3vE4uBMUt$Df9P{I5rYH>*GC@?LJDTi;(nDtyZ%g1`9m{@Mph zY5p}EiT{!hwA$>n$FH!ew;v}K2@VP-7zZbe(D*O(si33C{ zb-Hb)=AyP9)SWXT)}T#qy7(*~NoG959)!ya6*;WqTrX2!&B65Pjl|I6>h6=dOFkQ? zvHp*u$*V4g{C1tmRM%;*sqf`VQj8;5 z|NNb`C>uwJpODf0wh;5|$Ex@3;i18>`*098r~T3yh9N^CfsDrv>=K09n=ca#4Oy(5 zQu#0O#~A*06h*|5>cxA>&CFW(J0<^2bDh0@yWjgl1K8;b95R?C1uwLchhx6ge&74< z;od&sO_wKZb8(7&lE2<;S!a9h*mIX}kAa%Y5wIGY#YHzG(9>Cc{?2E#+1@vQzX|Og zc}y&J2aX2{p0#jwX={Icw14(|?ow=E3v~(}s}%5G9SVrR#bh$cUl1rQTHx6IIiAh~1s{kvk`PuA7T9WzDkA9!D3{~52ku^B#l5tNL9^_nAB!1@$wFA_Z)&pIcxDn6^URuYd*IcKNO-Mu zJ|f(%dL$8%{yt4(e0-^~WjdyLYH6o0AJ=lSBH)M8Snjp@Y@?FmvjR5lwF6+|ZyYM> zD|Hr!$UqCBLJD+sCQxymH|VtiEVvcc#JV|X&B$o+@W2C06ZQyVHQm43i7vr>%3wT~ zmbv|#r`l-}v&@83#cq4I1-sqW84BJF&E{|ab{URgdmk`41RI)S{beQ))it|yneFY#TPlh_=H*Tf9b%nE*9z;{8;tNNnizQ*jO4A8u(#&I zqWP}lP0otsPE$vz!_}hMGhTQES4$m@BopNc zwI@$$&pCkQwXaU${&tUO&|+~H556DSVdE?(g*a)1+68QH9;7%p9UQZCfCM)HUfL*W zZnoCvNExFO-EOX~mI~V5oL5i}N=%Bd&CSiwS<%F^N@&W1dcyylY=Cp>&svtT3f02R zpH8kLhjU_+HH-({xEj(b(HD;VI1SMxHntp1Dz#138J6A=X*x_AJ}SuH!MskFv>(>p zvDWtOx7IqCixJwIny`EvSz`+pJ>c48Yr7q9n;w7I5= zw9byVsNOUYpL-|DEl9mMp%rVS4RbHt*48{ZG*~Ud#IIYpbJ52r{e$t1;}L*$?jdrF zuP%21KK-R?>R6P({L;6EOUVrx;Pz}^!?VWjoG_c6OLrcBlkIRm2cFCgg>Q|$4jfL zpZ!Q5vN_CTsd0=te6($CnPhd@32G}VS3f_kuS6goDktu5&VaV$!*F6wbtI%}dTTQC&KDdM;nCV}r=##y3wf!kb<+neM_&cS^( zcYxb1uwW-w^u&7y{OWsOSxdmmQg=@< z2-kXdL++4m%%!9T8}sxrJBF3IZBVMFrm_VL)v7U0r2Wn)(erGZ#*(K>zewY1~AF2Z(R``3Vdd>by21TP3F zmBZPlH_+{pLu5URb0Nqw{!&;9n21z3146uMfEw$R|06HSduzcFw!7!dpdv@<9Y01s zOhdfm0TXS2?Y_d{k2WRU{-Pyq1(#|T*~5)zjh<e>+MVcI1Bj%(SxC(N#rx6!Xi>jlD{DMzjTFV{ zw?15}nU_vWP$kK-Bv}R>J3FCEQu*oH+?4`@m2CG`XkkkN@~kzaF2x;poN_x{^c1{Z z8hcunG?N<~V}AK0PJ`UHiL=5y5JjKKuVabMd;7E)1Z`IBVcbq0G4utXglDqWm}4yA zJbUkD&hHfsEozF0{QBt12Q}`ozxmWlRw|C^DAOs*U&f-6={wUYk@HhMrX)i=i!#^m z!St-ubO8~PXmLjuHFg=D7(6=b=so-*(g8Y+p(;_Bv^(fQx*Qi76}bVm(F-h_d>yE4 z7X+Ds@*D(u4#CEqN5um2g^C5s7TKy<0xNN#jBeRSA-fU~t<{h`{18-ZV@j5)X+Up` zLu&uU1xYXU&mto`12rk-K?een#)E7S9ZzVc^ihli zNmNmqh;)$`HPy$sN;fMB^`2A_0t&vvdLysW`DUom66tdmw-#{G&UR9J3iGWkBP999 z!`}>Si3*h&W<1#kbUufcSJ!17;QSo|AJF}N0rZEh6&4Es9L^VNf>%IT8~bw}jjRiu zl{Hxp7^Ym@ER)_fCDxpne0I&3a^;A)o}WkVEIwf5H9k|O`nEqJO!kUwqJ*6(E| zNAzLDKf**Dzhx>!s_m;a7he=D;`TQ{{ffmwp}eT7?HNj~>&*5XvM7@ST=7zbICal{6nNMS;UrsG@URNK~Z6tYMVR zjTn-^msx14r-Ew{=!%$Xf`0f}v`Kd}Oj_u%DLW{_#-R~LherRetgH+iYkFFKfXPJX zlS&IiTHV^(+TM;grvH5nDD=mfW1kWgocN*XyGOVeDoO-Og)yZ4Wef=V!=9WXsdtE$ zhG!xzOB5hIZemOaNpHqa!6;cvJ4qKH4#Yt(p=_#ADu{H_l2B);#4Mr5h+^8L{d`JGI+~@kvBCe-z*qgL7j&*vIV-a#ke_zJoNc*`lg2L_%ZGCRqfqr@r__Tg zjq%tef;lIi=zPuwYS_a~W?J$lg_;%7P`{Krv=t<3_=6~OS+i%^%o7kc5 zTza)2=MWrIspf!3N+pLSb0RW1j6lhx)ylg@uo5fX_@g8QN7u}Q&0q^bOZoJSB0`CF z!o_=uEZLK*%w>MO3oq*lh53s?q2@l+(vG+qQtwyfcWcueyTUQ7$~@w3##f3k9I_8A zO+6BgwIl@`x>5nP7Q_-M6kD|*HK$)mY-Rkj>QYUX=xoSlS&1Q}h;@0gzqM$Mf5|gr zNL&+a8ZPtgp`&Ug9?dyVPEK^WsI7+2v5@xyG_b>e&DkzQnjK%;rTXO^R!$fwiuC0Y%L^f`Fhr?j{FIB8*rM!>YhB)YR7CX>55Fm z%v|dC*{qSKu1pHeTZm!w`C;`fY+jhsY+uq%018`Tcl^(s+20C@Kgw>B=wGY@+>rfe zBWgMEYcAw@&=XZBsDz8ll4I8~6Ytf-U&wC+eNEQ}qNU1hbcy-@CB(fsW4!~J+}uLm zWKN#U(YzM9#0MmR1PBULZFmcU%*oRy}KH) zYkKiV9wUgvKk|F1tP(@Z?wt0e8@Q&s3zeUE|SneG?aYLicOz9p_WKqvyHG* z%^wRfz2{NJ^#-+a!8f5q^S)BXM~{4+ae_QVqYnDTs@vq8Xa=ZlFc_oDCR>2lGV-V= zK)l@xb7Ry^1}N<-2&yqoq8dcrQ(2Ee;NoG1Xx}~)e;_m=`DdHrfEiX=;nk9oefz&> z>Mw&VU_wkl(qxpf{X1MHXDy$SVO-w-ki#p4E*h{YMbEw57@{qm zwEX#BK`SV1M-K?hxU`H#MCu7Zr9AO>z%D}tJbJ0<=`G=XT1ml^ZZ3jq2_SdwH=$ zg5ANjCd-uHm$d+-<-eZ3cNQa<^e-lpY1CR179J$N1UI68^q$a~4sYx9z500N z)7wy8U@3i|bZ=_cub$)%-+qiESA;V`(d#5$^;V`Z1I~}Z3LqS`B8cRJz8~GXgtV~B z%NHS^7ebUeO8jgrdWx~5__(f$$zV2QuabNMt$glOeakt%9_FS)u3m#ZXCY^msdy`T z3;9TIH|+D6;g>=20kgU^^6mfqK6obsvdFg%Mg|mW=xrH9u$Uc)um(0m}1J z)G!Mli~qSmY5-!O!=)9>*YL$&jP9}NbTej8`aZJI`S@Dq@vXZ{Cm`2TzvGc0a*!`_ z>j$X})5<{SnaVIx2wiMh_HX-#^v_H9`*28U%Ssrb(Zjr&N)>usK!0I^68L^7pEumE za(YE55z5*hw-X=`R3vr?q1GGYb@|M#V1A>K&Pm)O3$!%lLF>4OrgfP}xdqXFO;hROkru zj+$N-mIxPOuP3ANfYQUTbI_2pAYzoxil&yEgJHsO{mnk z6Z4?GK)4BHoKzc4-#T1|!@Ix&;-0Jb(R%-i(OAOvAAeV=ndxU5-NCz(&=;^X9(oCT%5}^si+8Ry%DD`!@6$*$3aPaMa6s2=mTmv8t^GBVi&p^f>9~K@*OtM8tfW#8l`JprMy{oipM$gt zNu6e+!g!DcrNaawhV)CxWxPQ0y>Pt|{wra9?SzLmmHv7I7*>{4CkjSe9Pq3Hq=~qVd3Zp@x8XHiP`0_iIB}K35h~ z7P5qY25oRNa9@l-UACAVC%{SA@)nnBgb4Ax{51Hq-X9%Vkn+LZ&Ey>9_CZJ1H{VXr z4*{u#=?~&PJ>c`$AcB<8;#Sw9*F|G2p1gB0I~WgzC(2)Y(~^<`Yq!m9iLz)1wRJIZ z(oWgG%=hzCjtD`Z6h<+w8J1V80n`xFh@@y*^bOTfr^O|U4)F6R-H4f#_hkV5Fr#&)4wD=yMAj#pmQR(9-|UXqQ5_uh6+S1x8{^us`U0D+{s~LB#4HY zVa%?yw?R2nUTki`R>4rl!bj4=Yte9Zo#fIlXtP&ZDP&OxYYHdb?OUugN**5*k#57g zN6#Uz{n%1Ci?_y#aP`|@iy$3z7nAL7h$k(@l~4(-ED0)Wo{ObyR}t&%r_qI<=I}p& zF<`L1JhEuj*mts5N&y=*i~8_q9HjUIZeHF?p}E!7rTL}Rh|bEIy1OQCDqWY`>li_s zN~{4md=i4LTwDPD*3kEFHIt{*I?vl4wo;JN& zgADwoEg}>T<;QMdpCvc-AQ?OlrVnG7W_bb??h?^Cq;4zWu6Ufpv4ry+6uFNLeDp3& z)PBqakRQiAR3$RO)Q;3Ej~v>AA!0t+zeFbFX;v|`6vlYN$wu(ur_q>c?za- z>e<4is*;i<=eJ>;OpHM!xqYlsk)24lnS)*oDQJyAYzdYHc5^lTt+|GyZUT`V4bVX(>({9fIQi%#l_#wJdJ#!7xcWJ& zLZtBK+AG?>j-vKT9Q-y=`F36$tOBZ0rU?$PdzSKqT+e+SyibI-AM&$Y@lVx&20I{0 zb@k(!eCLfizP^8L8+a^6Q@km+$v>raWsWjAz$Ip1xGXPgf2PnbX_qPJ0?Af>qDeu9 zGNNV*XRy}QRuk%J=UYe&trwMm173oDUZ^TiD%qm`=k9#lPJ{Y8z4sw9XQ`~o76<=i zZJsJQ7Ao(fubbX6r!~^7TG(fpRI;iC!VcS0ciYbY>}&qo zgS#OZYcYL2B$1gZhs$+`2F>4!3DJq)DXbPEkC|WGS2G~%gC49yDjKqkq412!UP##R*Cy$l+Sq1Z zgilp*xZ-*&c~PZcjYX`y}6T z6#`Y=R3%yE?2j9v9c;WV{ib91%a4mCXDZD(X?~NNrnD>nE8s>!pvTF!h-2q*G!vU4 zjf;b7QHCl(4r|{ZjxB~o+Sy!@y0%hj1pb&5@m_NpLcMEZ$`VfH`ACDAzdL?gUEdnM z4>i>%fa|@t_>33l-8j=`VzbzffbCm)PSJ+2uVDYXd@ggSmdvoClbGSw45PLm;|q_y zufQwcM|*2!)r?fvkT$?`_TvuNqG49#;dD{e5R5a{sWn!7jgw3}a#vB9Htw~14|kc1}bfyzBMUwd=vzxP<343xzDHShzb z;ZIUz)K>0~G1mqHmvy#WCRsWem5S(`@qQ`_SJ3k4q5e3sR(B=%19TRoqaHL`2f}O; zt9M=b%wY@E5X7aHR%W3!n9I8(hfGY|e$`%n40yVF^nWJW`2cw;PBIleAewx1?esXl zsV)zOMy( z5W-Xaz(R4##ii}s4&=nh&ujYiMB`EJTjGMkPiZOs@6NE3ExPoxA3cYw!fh62bYR9g z?fnY*Z6WkM7m?Qq`4yTY7LVcA57zOZuj1kw)U?uafoNyV3Y_Epe-^V9p1Am+1__6q z>ra)S`hoM~{qtlLlPJlB%y|lBVi4isX8p>6h-~iYXm>7`!D9VNS3uYNBRIG&v!SO? z^!cgtLe|&;E~w2p*Pww4W`w=8omQbSO4JzW9ouWNrT z^O5hXC)swE+%7usjW;*)9_stf@|02K0Rh&xKr?i)Y)^$i6vBaV11tJ3lB?Y4v5Z9wd#yx&5sDttUN2vd+xv9%Gy>*dS~om} zjZdf1!936Nq4~7sY{J}_YS@_Y+&J8wcHMEA@Xf+=I_IWNe{6{ zX?x|eYhIo4*d4i9Dy3#Zj!z<@gKAmYtUcuAf&o>m#6wC)XRf59ra! zeKvy^CTEY>`8B0@NEFd`*UJ?|b*u(YMh??A)KD)%DyJvTt99!E6l;iuf^OSUFA_*3 z+<-IlYk?kHc#g@?i`LLFbP_?gOVGM?8CfcC60)1}Eo@n1+52R{>(WMj*WP-2&z+X- zBX~693;^WeBaAOpr;ottJ>osFkqU!-+kRC~aL&v{pw!vg+3|{4U2B*fShM0_G2ohe zzuk<=B@n*mKW_K_7$64x_}9!55G z==|ARG$^aHlA)Aqte3pnaT0EqAM2LKXVU$zv-x<+ur*+CEQyL|a1Pr*Fb@tHWYN`b zxAqq2=vPxGlEIdkeBkkTvDW%;0$j`cnD0wBn;A{iF6_!~=G1lokM=#wR@k4jaM{$L zQGNo0-Q(i>5`kZneceXE4zK%p>iM}%P2DtmtR`y3e1ES!nV^#z7gkc7Zcp`>zP^tK z#{!>Y>vM#t2_yhJcMmBI3Oj9`{E$00r`+EbYV}t8b<4@}Q{C19qBXU~}Q5B9}$4b0X)Q%FGG#wsFXrw00otkYm9!j97vO zWTUM0fhh8^D6|d14N|bA`W0M~um_gsRvDlOk8U@*Hc>Ko& z5c1gXv~@gfHzt(^O_pgPb)(G>nX-9gy}LXugxEYub`B8w|N82rm!rbxejiKB6>vM` zY^^M~Hg^GIz?cTnT3zk)v4H#n9PNW}I6ps^S*WhAY+A^HcV5Itg6jE+V6+Ol0IPtn zhf-8~tru~Pd#;oQBg>~xL#fn!cSGCMv*fWC;QWV;jcXVdsv^ou2W-ayqB|RFTf-nY z+9qMID7)f9NOA@GrfRxVecI;MtQ7OvBOf1yN4&LtusdMV+fd4WJl?QGP2NvYXuX&C zxfY$Dx$WeD-E0gmhkM;%$^{MR;JeimSDcTh4=G>IzVG^)<@AEmDI+5z(O`&ua`M4w zLV>V%(|2aLbeSf3j9jojtNsAT$9Hl<5f0BmKmAHP+2UD5tBdE_lYAT zv;gIKl=bxPhIO-{C`_sm+XS6*k2cCYS<`UMC{}TT-UgzPjy2ngqjv5_h!>~+ux>1b z7BgRpE7z)pbkL=VJ5O+)j#gc9b+)L-EG`B7(#i_axR$17%GTd(_LeUejzSl}tiTVf zS@bTSrl<~&)w%8M?W@mIOR|@_$b5g$T6^~q%Q#FkLlwOdFLG6}vD^tK!?b)^q8a_a zG1hrfQ!_4d;S-QsoAC2}o31OqaslVw>E1i)bRNBHeT7f~P}JxCluqnD>nh;A28`Wb z@x0hv)))W#yNF8e#iOyV4AGB%9D`u&k_8`b{I)57d;28c7tLivHQ+X7W5*YMR8-P5 zg|SkYFX=0tn@`eN&>`5vOHUts@+L7wd@E`%FNZUKRO>M>>-|TgVO{-*!C1eM2V{|y zEp#MyuCS%nUN<7qfemKy#{0U6H{5HlueK}dQ9%PsN*9440i&Qy9hR&yrT}1U`93x8 z(wb-_y4dOStILdmhQ^lHj((b2U%#_|u2ST1)R|Z}eKdhAL30u<4SPvLJp7epFqs6MLvv+rQ2N#+rW=+Ns@zvMVV86q9%T&SZQG*W`9Ks>>GPkM7sETFJ zwHj4`i(NUfYsm9A!L9Q2qlNyHIJS$Nv_GP(km`8Qa`wBtMKt3l&4kA@T1c0IT!BH@; z2RnTFfK>!)T?2DbQ{yLK@>t$Dz~gG$9xvu>L4(^t#``BQv4=TZsL)=!7A#BuVjpw9 zqB)YuL8X!>IE_GZ28;1Jcbe+-Ump&6kz7wqp86nnh-3LBIi5P~Nep!!FGPRKb{4_+ z1^O#CQNXM8BmP{FK|Zb*3*6?>F>VBGm3L;JJNoaXD94fbHIrR_g6?WX0VM?DW5LtAs(**S80&tQp9DZ&7a(o|H(>o1)yX|GS zxmfLNxmo;tNm2lfoWgpyb(u|fKDZvw7`OT?Ygvc|TzyFGx~AGqXSZ${k_fen6(|y} z`OV8y_m@t`#p(2&MQ1fz#AOK|l@m350@(s?@7vyGY0ar%XA8I-L5b1#V7KWk&)*@| z&PJ;X^KCX~Z)Hk&EZ<#BlpfYF)!ZQ^;Z9(0V%IN_JJpZqu&bI~mWU^j&nmDy}=li7L^AomG* zb=DFMeuMv2*EWas{v2?lT}af;)5h;mO(*pZe@egGY2KU5!YJVR$oOf~GJ#m+Sdty{ zX~QwV*57}+1@^?)7uY&0dUK7PLxyht{wIw|43yM$ZeyG8cTT9SZB??9D2hHMbbO(J zZ84MCVG7jCe+;-Ye&lN{oGX&`-H9Lt4&wiJ3*{)LAfoc*{yAlUX_Bn>s>531dlYBk z&k@U;?SDHAl<}d78G<&V7^FD)(U6A^ErCS5k?4p0r75$POrV?llo2n6#6Y)5Ez!k( ztU!in+NDgv`z(1FHbX36|MYB7PEAct(Yc~?b&%gW zWWctYb>#QI9qRQjpA;xAPSp|=5n!pB0S{K+o`ADtQ_r~-rG6_C!CF~g$2+tPvJT!{ zc*gXDS*Ro8iR=qRcYPe%8}71M54#d;*7pYG5(*0C|NJzQGZvNy9jIT;3As~cDbi&V zec6LHViPAihEYh5L??3DKCDvYe1CJDZ6OheBKWHAe)FP)Nf=Q0Zi?}o$tL;H1v`t@w_-{>zEa2 z@1^A8n{6z*a-pmolc4QoMW73*spIa#&pSJ@W`x(g1QRvU4k31oT94oK9lC8++A2g} z*BtMVvdj;>3^^85>Mdu6oVB&hT@;Rbp?wob1fyp5!@ubHc~y0T#Yi6d4h{~Yt)4aZ zk-Th1u3KP}8Y8FE-QL-^$v*JxAh?i#VX+7?zX(@*u|jz!{J1J*RL@wrD4HIbjxbvP zUd`9&bEF$Q2t?hWqkie5`E@#J$ITS72%T%2n_)pTo$h4NGS6%e7$!*H_V~mFt&_|& z53$es>L&o3_?w;xq&KufL@1%WwSVXyK8O9mkH(|>mwQ4BP=q-UW=-L}dYXHYQkg58 z^RTiYgdq=aiQYQVmPm>%gs7(Sok}i+h1H82Rhm;QOKfXIw*H$H+fi(a)GJNfFB5)| z(-D3eF6QFkdW~}!bkPq>Q6r>&0@XgNk*@IvHXwVli1HQytE3h}j7UtOiW{~b9wk|f z*`fjZ0ws;-(o`#1I6zpPX2cQJP4+8VLTyH8RmVJ+QNI^r{b08j!XgV)}Y-K>yoVCz{6r$E_JqkPVG9#*a7rw<1u| zuK5jl#jby3!cI}dga6K7m=s~^p;RHsAN&0XIzEl@xiz{3O#fe1ha1jVcYT} zT9CQLvcl-$sn#XR-+aX(H0X>*1=f}%*{d-qG6rTF z(d#pJ*q&jF*DcN%o+#2%c@W@FP&BozUNv_~bs@hE^@at`7ayx=X~{v z(PN40J!pdK#Zilx?u#YXeF?Ky3*G7>+QPEr1I=V!HukL_Rg zzsBV-a_u%*nxWBTcvEC#L290YBIG!tQC6*tPF=voNJQ-|CoxAXOaVyB5jdg9V+hM} zAwXGD^H7;ML7{Vo1fDLq2#m4Fazggv$-MC9h+e~G?IlthX&1qU+DQn>o3az^?1d;z z1OVz|qS(U_hTM$UjrwDR0kjCx!B;6&$fnxCp)kebpj}*A!k^KKSItR?MsrEz{+%OT zZ7KgQp&}{N0l1}EUumheB^Z2=53^Vmnt^Yb^Eru=Id&d`DC4OW6odFl zRBeZ964FRRoO-7a5BdIe$Kh%_Nv=4gGN$3o*$%uqZl@Oe0kmySusHx&*q4A7njZY1 z6?H2cyiO%?Q-|JN@5(w+@xx#QZ6hPa;!tKGR!hC$WSDoQ#De}8Qu>1JF}0WM2*zC> zWDz$y&OyA{7479S21WlL36i75)r?FmF)IIeiXR`Pu!C^uDnN~Y_BZ}u&eNH~pI>g{ zXQgwVuiEB}p-5D5U7ylj&ok#+tVLSpVsken>!mYVo$6mCDpAC@P_eDy zyQXr&*kKmzKe!*s&)zBuE;2;U*CAl1G%vu^Z63F+!6E#-hr4I8(Epilqj?={x7v=U z{_8YFVD-eJ!6obb7fNL_f%P+Nx(3XsdrxQxtb%a=Mr~G=6d>m&h4+D1|Vuw2jHq zZZq(^1#|dO3E|>NG;3%`^7==b)I?zza{Ng;s4~YP-O7%SJbHr!nOK=b0`pVlIOkYPzMya&6#oou&29z2!h0dZl~EiwqSg4@9WkTILcRuGrtX?&O)o1ZLKH0 z_TI`UUrcFRFSRirbhWmwfIxOHSYTxEL|RR;OB3l4KTHErR%p0cg00q|#M^wNu4!TL z+v~E_=E&Cgqunfzm1`K4B^zG^8CNOTeEfcV8{hQzW!;ML?;q9F*VhaT3}@DkFBL*! zbNUG95$Lan@DAY@%Qn#x7{YIpS7NtgctoYBS=9Fn3avi`6T>iyW)*TPX~2j2H2=7G zAFZx2_UL!82#&v<%ep648R!Pv4OKJ#*C8K!5+&ERZ}somYqoSDC(z*hb?R0C*UAaZ zwyQsVPK&^oTa(oK?~VK6mSmp;fgi7T@T&1&gaYPce~zL9fiyKc-ISoJG01zfbj(!V zYYK(jtfe&=7Q-9zvvie|2uY+HjC1@_doxYqIQX%PT2a zr!}lJP?B(Dp z;Bij%vTw)3prrO(1pIFMq~Li8JR{nO0=$oRS+> z`5otan?=y}-lnmA?0)Rj>Go`2in!lfK@%8jEykzmXpcE9h5c`qlYka`JmjJ_FRw&} zPn4w~2CZb0DAJy=V}(YL)GdL516vApE|Z*&x@BN(&+mLVH(sYI>|fmIZsjhcELZyIfw=Zq@JhS0o;dgFf9$q0-LFPlGd&Q8Glqm=yd0}IE zAMS!6uEd6naRB%FDQZ)aZ4Nl3-Qb#CO*2-{5`IeoxbGX6g%zsLU?XQ}^NBmq)7K|^ z14L?4eN|R&Q zbnU6tUE{S2*AdoU6aQOvM&0=A#x1ThDDI?qw+VfvuQOwhhnb|Q zI(lzrU>l9a5sH`|m}g8I{wCo5yS$CWGKUQN>m~Q>#IV=;;GzRLFX*3*<1Is)tDgi zVzqtz75|V?l3(0)P8$7?SiLNRG_ea{GGFZduf+e0|$XNcf&Vp#(=whQL>=^S_XunDEQ<{j4o8SlXBl-3oYL^uS~doF|5mdAfzL zgt!R6WSComaEb@57X|MBmFBeGYk+_iZSfIOjEE%_2$<@`Raz+!`=smh>&MjIm{QK- zf64c~bQY-U;CdWL*yi%y=Z{ulAr!D48NKSxV{_wqSSRa#U0fVNWh;V0RAT*o{ocOQ z`PyL#0&YJXgMEpcCV9!dI5MPEzzHRo2cPq$s%DF6Mm9D&G|M+|u0m0FACRB17dgl} zvC?yNj9Y`3*j|vy?(lcI-DqWLJyYIXHm<<$U)>e`dU$-u!{7FuZmU~)8mE+qZGDt< zV-zykbTwOdw zpCPk;@AFGKe4;iD%PmROj>~@A6S@-5l~ZlqbUxWSnKedu==*`R()W<=yW@G6R)Y@| zb$WVR{^zjSVuTn9kP(3YavWk?-*Ilp*GE;9NWrJQD?A#0k@_`cQe?4lK2wx#?!?`S z+X%@QxoJl9$&w}1&0MCjSjG({{-E$^Oa`>h#Kg!5hTVVuzUqDLeFr+0Y|m-_VSk(P z>}_^F7y&n$vJRLs0S>^C20WPz{oPy&%b`{f@1)EDNbtGji7$t0=`}`o+q#yF{_XSf z(rMh)Ni`Rqz0Eb6ENw;m?*hjxA={-brh`iqLgO8cyUF&?<6*amuq(jzz@St$eF*r) zPSFB#zCb#mqW+MjfVT#=ozNq0p}lJwDwoK`b=^lR6R~yyK04NIEpG;tjZ+615coEo z2Enphd}afF*OA&3x_FV7YqHK}Z;OU^doWz?6YToZ;;K{70}@N@0Ud6P8@)PSeeTT` zQ27Fn>vZaUZs+Bi@||vubUe68KLoOb!CQ2Im%|GLF;@*^G<#n15&=eP1~q^ zJ4>!uH?Fqio?^=y9`>k8Mld8f>&oTpEnnYzK^cuX zew}gi`}4_N&+**eV1+V)Hu#|~=CV|&p78m>S21qX6>%tj9*kezc@A2$#rIS1yKjnl z6mBo8FV|22s1S>F9>003+O7S$XrWH)_>Ls0r`? ze9eE!haLL=@{IT(c8;{ZKniq?0uI;X@=3Ow_8-0V^3(62_13Rz zrQ@34m<{cmc*($*RYk^2Ee3Zaszj*8evzP#mX7w{kDomrMa}I&jM*Ii>k+87mb3XZ zL`gj!F~~jAl7xE3JT4cjBk}c^V3x%fJ^bH^^hVo8UDdXipmMtVh|y~%=3sqa zJ=ktc3D96@23r3YflBBytnCQCh4UdB4jZ6Pn_Np;>pr(sY1%SPlGMn*ZYQqNHsO^l zdqgmHB+Bz!G;E#t2{HRfxXX<1>mHE#9wv293)F|w&S`Bu?jiWA?9+sUu7mx^@09SS zBe8lNcaY1?S|n**aao16jlSFdOL)&^j{sZ!F%3+~cfM z$zh~Y*y=R+*xV)Pec7;_Hnzo`b}mT+r$srMR#<6yhAULz{u{EX;4rMMV*_vSkqAB( zYH9Q4`bFh!8|L~6Dd;2=M&02s!3FYXhv_g2e6V_pZ;ZR%EpAHX31f-eNupZUu5Bwb z;Gc{=Z7DWHjp>MwUY`eR?{!;k&d!hS0$*a_g(cjlHir}d4O_@%BPw?@3EM*6fB3UK z!N>afJmcv)T%TU+ej-wk$KgS+W_$7^Gx@FW3bf(ju+a(b7N#9PU>OlxFkABqxRByj zIo@0~htqv#N*DLYPD1z8rQ28|y;!dVeJ`sAl-N9-(Y&(lBACQV$P+M8cjY5DKjVp$ z+ur+r{H!^m7@WtB)dTA|Y`!w3@3Pmm<9+b?Iuxmx+;q^v%f@EpKOWQr^6WYBcQoo_ z#&oin-pS*7 z7C3;(IN@E7d7^Hi|$LpRwcZP_%QY7@<#B&vHCX~2qww~m* zg+VQUF*?2Iy+z8)%l%Yvr9uB6QD+qtN85I5T!WL~?w;W8?oP0Q5Zs;M4#6FQy9WsF z?(Xiv-3N!i^M1Q(A8<59Rgd)3w_IzjB+$^2togD#f+Z@=6ei3hCc2urW0r=NijFqu zwU^{&w}ZuZXLa*U(cPU+qqgehxv|6TaUf#D>#kp`{b;5Bg!!>IzZ1*2vN@HpLs+y1 zI)$44hoz}BY7KMIOo%RmKso`3>(U#AXE>}hA`);BH_;|}59ag#tIuh=9*Br=3&MU+ z_$9M#`!Nr?>gH;d!|cl>*T7$n=(O&%##aIbTuZC_?XN2wn>Op$LL3&oI`iY*;eVR} zgq0kLBrZMQUia@qpyyp6JDXSt+(+^@HJh%KT(s#ryXtDa`W8sC-f49&2ufaH z)V&Q2CE1x+vU=~YZAEq4jo|9E7{`hcoH-dL;MAYq`0+P)Q^4Nvy}KPAELJGEJ~hVB za^lqa_&BLm)pTjL`MzN1^C8m#PSxK9Xmkd390XHz=$!<4`&)cY{;(?>7!`)h(693x| zt?6A-h>r>in&7jgYR^e#^`bm;Nb$BVH+@~rV86c4mi#K}=AHPUeQ}$IpJcPtA3RUv zHdjC0VXLEhz>4!x#UY4?-K@nf?B*lG;MjaccDNe7_rBBJeDl$k8J0NFvi9{ct4tx_ z^m>?+NlKbe`pBUM9BnsCBtBkG&Nx+;{z_Je(g$3aWV%Z~H}=DhMw!?D+&2p?EF_1A zl>vl%g@Er^rMS2aGz1XcboUNVKi!E&R5AnAY$y{1l z*uKBu2)V3BakbrrxHYi5Y=X~qC1ZXgd*xE9&Ckslroq~ucL%}`gFH20&2WLJ01I<# za?i8ynV}6x8Z~^@dm!#F29IqY$QsYCHS9i0DE?^`ntMExOnFhgzL z6s8!5wdmpvj>4Op!9hDE;I%e(@hVY&97A#7&W#&E-HCFrLNXHV#*_Xp2r+ zvpC_fZ0!mlYX7r+^1O!ic(%Q}JqbUGn!u?J77OL{;u{C5A7h{>{WA&T z%UD1ASE+`UsOy*O0Pytw+>vCgL1(+GKpNz9IsMi1iNX8RQE|3uIV1Nhr%Eq5(|1xp zRsizXS(d*V8NI9^KlVsZZh@trD5x%Pw$qk(Ddfu)SU(*GnQA7Ouo@qPnv?0z_qlI&W*}>r-(}Opm|lb(&z^H!F-ZzAmYlU zATJCUp$OF6w+87W33t&WZhOc|-DFjoyj7_bQ~`PH$_Q;)8CR9)SlN(4{J-L9;3N=0nIhlvq}%rF73)G!A<#0* z+g<&~k86*TB|CwY_$XqGO_?cOimO@TgK7Dgdez-izO8eZn^AQ0#Nf<)+w zKN!Sa64wrHAU05-+;F)W2ZVT|i3LvU0JQDK%JtRS7|+QRJ%wl z>V_Q{D?dM7V{at?r``MVG7NYFXfNT*R*R$`fx9FOYdPfZ1#s<5X4FY2b>f% z(L`x{zFE1WX>mXq+-hKM%bb>(34ky1A|9CPm@&WFU5j1=3taX9^WL_dXug@@g1yx; z$&aJd{106hR-`be3Feof`@0tK!p5z&gA9M@aP?EHEUoe@o~P);D+A+2_K|Uz+m6f1 zQPzdOXH_r0^;Aw&f*p3KNud=x+;$J+Qk{>^^;wqsjes{-^;`NeISPs%=`43^WnrN> zTcjtv2yb|I=}W$1mLSK}qTb}md)ogyz`#HDOq`pIHgMdv5C}YVU_l|G`!mce#%Zq^ zKtC*7Qwf(fNhf*K1M9TNn0}w!s8?-$SG2NnT=m+i#L4MO3%6{w`GaoR%E0Swr26~d z+o4d0cT06D@ZDDFbsB+BQxguDQ~Au!wFK{nE6+2=NArH``7Be39Uo708ZNigmuGuE zg$W71Py*)(a7q;nV{!fd%4#`YguCq~GFW?j*chglLfrJ|6q%0w;jZ?CuF;FXtK>BHYV|`-XEL={pEXYyrT z4DS)HoPhp{lL2R@3c57GoEI(4#1N=8dxX+Vp19R)5uC-?jw)Szhk|3^wQ6&L$K^2N zw3>Y{AkArBId!9_p!TnHw4eT4I$Lbl;zd!r=o0{R02?uA0(l+25IgHuPIcX+*W+=rlp6r?mMLQMva=mX5_Gb#XW8 zV+%dWc}b%Gl_}FAWw_6trg%i206hv}#*~k>#LA0~qbo@>rN@-sQAnFtVVyJHel1y> zJBH&fG}x>}vi!{va_%w~?Qp&3AUgr*E>gS(7d~zVfQM*8Bk{BLhd`c6!r+xhF9O!x zaK|mD)VdFQO`_m~q7Z4t_3^wb7HeebcZ;~;GM|-?Hez2F%$nH&9 znI+~?JoGb|h_8)AU=Wc*B`!4S8u=5Gb>m%8@_vG6wj<*N#zT2kyTf`}Aqz40WvcIM z9!{){puSR?L>hHzxmJ-v`svEkaKd0TAzw~;hJ|BVn)7KMB@(K4#(!MX`(@Xm0yH{W=UV67}5fGc696#j}XhO)^btJkV*Fh~Y zOXQlANheGgvN`C~Hmr{uJ7mmco8IkET+|p@J2#ixDhJZsD;+5t8`4m_T|c6{{tb@A zyM~70HWy=8FeVA0bhst5K@7^pvxOP@K}wsZCAR*H<`TFl&xDJsv)UROaibrHVy$q6 ziAfDu^+z7!M(`Y?gAZY1adnFhRyl2wp+vvWp5~xRXdE${=cVby=YBTLmf$vx*HCv> zm_T!Re7)^v}oZ zX?O?`TDgpquN@a%B)7%1C9a?G`zS}q%~7sY>Tb`-<1(;>m*6PGQU0W|){9_THSAvKCSQ-9{4RD+46=bZ?5VRK3r~3 zk|K?E%`%F05@<|c6gfVNm+oG=RAdW0$>#7Yiv+WFRh0h!Hy_;1d>bJtD4)nge3 z^Akaq{0ox8$H2Oz@ELjp+}!WQk%`n6NNiM!2`>*~>KG$6W3ElmY_Tn;Y)EtLu(qKa z!F<+HzjC@#v;ziT4Sk>9ko?MQSDOjFZ<7_}rfJrH&fW;r`bOM!-J>W_5aHij;R`y%HpwsnJk7-%oj+>vE5?xuBL4g&GtGPj>HVre zy^4+{`k5!93F~i?pRvg-Bde!53<6?W<%lel4j;MGZ*p&6646!aZ8&G5GfK3-QOBWz z`_NsFf_klwuU_P}?6ts(D(p*l4KI_@}s}23ty=u<7d;(6aKj zWeC_vQ0W(;W4F%`;;c~-pA*Yz9ecLW6Z;4j@Bh_kJ0wVUYnPTEky;efr)S#QzWHH8 zPcYEYrFNQQ&>%G%O*BVlR;bI{sv1gVGmmb-XSY2#ktNNyv8 z+3mSyYX6yu)QnV+g2a4Fymzm@p2`CKb4oC#9&MMDEHxm97$R;va3sU<6{>}mW(b-i zzwRq6sPwE0^pxgXt=8Y9D`sc%7Z;ddJ%PRs@If8q59tzK>$fv^ucxky36`a%;C+^<8xYl>)KSB`Qp~l%F0%7|B zB|p^_tQUfrt6#eOJFN?cQeXQ2*JXVA+Y?`Xo8ruXpYvq{3$7y8H)^aG9g89SZ!0ys z;-#9#>mSc^k9S~jT0ExRWI7%KRvT>PU2#{qu~u57Ty=~J+V;PtRf|hT4o=eIn7{E_ znG41dE!l=tSf=1Y#$kDEoO~VCAYe&yf8Xj3RAoiU%t}afYkyuaxhdw%;Quu~ZOWW$ zDV&PpMRQApm`awEp+$MPV0{O{mWcm1@<6~5q zLH=A4Ut$%`>TSI3-((ue44{j=8%rk zho*&M?FsA@TpyF03nS;k+v(Onb;0!0eYyz$*W3Ai{X_Qat%mGZRHuAOxT2qv0U62q zeF*7p?jk-fwqX)-l7*Vt2$I{q0LkNJ=-cB|#2`zDal3-)v`U`&M#kttZsxOcb;57~ zHI|0E4?<5!Z?y%Mn+J5%wXX4#H4wxUBlvRZx%s?d@OrG3H}o+_IIx)i0toS5f7w;b z%xtDr6jm^S0YUfzTViw=i*eFqF%#*GA@^GyVnk&se|Uuzyp#$f(vw1YHc7bLXIWCE z=usE9e<4r6L?m;)4%M$Cey|(#PUAvnq@PzM_(UD6;*K3?T|evN)Ixq7&KQPijA#s3 zN=kZdcbHK|j!1ryr_abVI+nqc{@1KIaKL6+v%^r#Sy&Nsm{Qk?lysEYQ$>k9n1pKF zQPHk3_>c=s9-e&}biO4Vl6NKU2tv#R7ZRqBU4!2J|VrKSwh>St^YG&}?$BA1- zw9$m2X{Om8K}|cb592*Qa)%N%7(--dD==TP7gn(|5W~oTWgZVwW*i+gj#Q6#<-HL= zBNY0>K6aBc8@MAqyepB%E0dpORbz*BMsI~%Y=;eUG@dr_j6_iMRer*X`v?E z!s;VAC}|_*x5DJ2{ek_3{RZ1uik`S%)IWz|s#z_IAn<6@V$J50WU2DBj>^cDC8l3^ zjBz%ki(~N;iSCp}Kj9)tlr=(bb-dezlDw9)BMU_70W>QWKt=(1n7EfODt&-{e z%J{0yW^C+^c)_a;-z>KVw*wlH!uk3Daz#G7rP=iN!>NsnHTRu?j>j^FqVY6; zLz{7hsmVQK?eSPLij(pXw9@wDr$#DFI=0o7RjX!5nv;P@i`j+WIy}G}cnIdqrUIRg z6pywhU;uT=njaCvyK_3idEwzVgZLYU_{x;u6XF{Gdg!@`C^Qp{@%`;O`iwk0<;U#y zOPpnpg!Lm-e?NKTL;FSazuEmmC|rmHr>Nu{K1wmWtt3s?$rmyutbP$cK8eT~=#fI& ztn_wQ*=T234T%vW@6&ariqAy3(sWPYO@8@*%m&f@wFrjy!71>kDe$RvOo@<5um! zo)H<8`NQhLXx=Ql0xP>QoMZVcTayO9!zgwwC9RLrWww0-CmYo6>vYWOd(Iknzm&XQ zD!Yz&Jj$-3(Y%bOd)&<>7LlqvSNYx_UmHOU`vC%>O3YuIw?nKpf_!q0!djj%NM5&u zmIcm;Y!uwu?gaqoM3l)Y#FmG17`@F872AaZj2st@>R96%{c_|x)XY9U`C@@0(#Z$o zHS#Ddt#gb+`WYFD>sc5pWtk6((*W@K;ree5o59vK1VP9Sk)XM8fXCyfwXk9{se;)8 zD63o2BxCU1jy|Sy>bVZT{HLsTWCpKv$3q=%axxWYfY^+|zwtsrOL3ET*qN~jebamtS|FGC4uMtx&h)iAI=vHcJFi2GvGs|sB4#rKpZ+by5qz&Q*mS@AYSv-@Sfkzf zI!@uv#qW@3ve+T;eK7LJE*hHPWyCYunT@m9L~;3n#5f0?|vC*(hcUHg+Zv-tvcGdereW;6YY;z^*$j#Ga<6JLW|9P@Mrjdm}Z zh1e4;cc7HPom;#5GScb2{m7)t;XfK!DNmBu+cVD)Qq)tSn^n!f5(1*D+Wc`vMHHI- z{^V`o>3Xp(01s-r{yXn^PjZNgwYdIcr?&I;YSQQJ*+wcIA3uF@g1Gjic@V#rxPs?K zPkW2>C}+V$@tRwOMDRGRylUlj>B8r2Hrr<1JI~``%A@^YnWnK}uMiNFXMKmy2A-Vn z`K7I^;2w818vceyi)xR)jOE%fH5RXJgU*&`WidIWi-AHmS6lBo9vr>*1~+!XmHV#u z7suylf#`z@-Ny6nP?83l^knv@j>?nilgGtRDl|sErF+jx@RyE0{{tluKeJNoX;sxH zxGFjoi(f+P@Hur_RuJ{cHz@tmn_6E-As2E!oC2S%PL6~4f)KQ$H-17JVo&iy8GBkl z;@6#8Co>nSmc~&?adL9X#{aUhi#bhMTv!M>s|fj)A?Te3WrdF^`k`eYtQ5O=2xJzj zK}(%5oWK*l;ak^#^s?)b z{^&JPYtDkx7b|VA!yEO3fAZw)>~){3!{Mn9u}@a+OvSxr!a`Qp35!`oFRY`$X=PP+ zH7$lnX!*P2QH^Tfcgop+d!P$4mwI44k}SbIc2Kjf&t!9UmZ|RAKcya=Uk~$B4cp}D ziOHU@xUS9_uFmwh|{@;Mk6U2@J6>)|#=F4~w3bIo3GOXKbuAoh%Yu)*$t;Q`#37gMnz@vb3C+))bE09P&lVs+s=)vFK&O|bXQ0_4Kl1} z`+;&$K8qi(9tq$c=E=SU{H2^ia{u`~UV8KZp^(ag^4Hn9bGxu+bJ}qlFl)`qVl1Pq zx!BMWvbKaFPf^OlPWcvcR|gX&JN+Eza>Dr=)c)!36h#a_luR(xbo7W%%pXLZjkwl<2kO+qbC9+s$AmGkV4*v{N+w2``;!j zBZAl1Ci&~lhaY>T)B_W7#xk`uyPKlWtOt(|&zZ+BGcJzG$_QjMptWx@iZnDd$$cs) z0hQ!W5~LQn@=fzuyu}**Ctkso#AI%gqy&aEMri+`P;>+3Jg)|`LGVFk+wpO(m~1ig zFD{pBN)07pp_mS{lT|#HAjJuu+;ln_hP>EOFg4rJL>6cWs@81$^n5}T8=~r@h46uQSx;wBDbcnw{zwQKbUB-zCFKDbLnh-6k@4 z<~69c8WFLmPd7VBW*`Ct!AswP3A((fgCZ{SfdqIoJ#fNRyt0^;5{FjR%&fKSaJ*t_ z5yJ*TfIDSUQ$tJGfM%pH6^e8#!>DIUTsu$3R#mm0H2b-K(udc0=`zOa_MGpcO)c@k zsQY;Q;6c8}>2z4F*v+_iCcFkXTtux7BrxJ3%|59hiNyZSV%AW@E;+%#I_Z1yztBm} z{5*t7Oo=$bDX^)cz5<1IczEcSGrO<=*Z;27`Qpy2_B83X>A75p!<8Xup;O1*5j!b& z>McTvE3G`%3?Zu2QFzxk{ar4Zv9yBjz}dpwM#I8ANj!Tzg3p!TKvxKc9Fj8q@#f%S zqrJ7cdHl>;%a|@sUhR8HO>Q|yy-UN6$cxAAw3JpANdJ%5=v`&&d5f-HyUXq2bcy^f zQs)q{9M6Bx)R)(-q|$a}T4B1FwXzcY77@0|4{?^vte;Vu?L%5gp~g|aTBmYJfEewwGG!=px*5`pYSuTS)G=N5ZVHwO!o*p>)zvj5 zX{r1F;Zw|d>5>w3KL89EuAH)0pXSscCuxpM#J98y{+71{)wTIiLj+8T3A&vxeX)J% z)3t5ho6UZMfl1Wc7)j5t_(Zb#Vz00sJL!9cJS22{5EH}y8xQFi^6q=wG`Gil9Bbsn z`S0IHP%LZj`6QFSc%FCOU*aZxz_SrJEN`zDzP|sykwQyL%fD{_qXh3mwK$JQ{y#AH zb6j}dtBb+$u;~C;3riW+eobCz^+fi{W2F5w6Yli(cmO|~W|r-pJjrnn*747CC)0{o z{xqH)dO3Bfl+E2wu_C-UDt9NEaM0AAmBBci=n$+oeF|2u$vV`RwPl1D~6OcK}Aif=zF|jh9PdN_BdE78;_G<6-MG zd@8{Z3lZ=wx!bKypkOoluA4%IXN#_hTKdOkmQ|p*5nk4ozPtVt50(D**UF5kP|DsS zwTf787=0(A4v$0h);olUmAqkSi_@Pi0}Ii4{l4d;?-yNaozK&+oprFUBUV+JY%SMW ztwJBoC8wR8>Fn3KaEzrn({Oo-`wC%jS|W;K%1g@y*3M6t!Kat>^Iwq1wX=5$M=)(B z)|PYQ*IM0_X0NaUdRjY@85uN?D`MF^`ak?F)m- z(^Jjw3`RHKWG>d#*Wb-t*Y75vz1`-965p9hz2-WXV&KQ zds>oT3Ji;-WiTMMA>@V+eT~K5bc^LMp4xFae3unI(y^8a!dw}OW+)4wgm?89{C$!Q z{*N}r^%WyMH}rjvQRRD(Na2~6zTNFg%u&vx4b^hjNU8uO_Lz2;G05?*@*Wbi8Y1}w zMtrCW%Lp^#g?xefYZK-K6UCV%r5F~bA7}b%alS65BYxJj8wOdU#N%=m@t0wwuloD3 zm8HO{l{vS|^~1LECjk$ki$dq-UryeNC8cHO7FLq#@o~eg#1DMhX%qL(H@E9NQWx0R z({L^U>LziG5ku(ov0B*K#Z<02W)I4sp|KAfszamkMH4)Bze%1viW(~N&n~kv)yc>I z*hHW~Q^e6?>q}?}@P*C<<%SblwJ{-}b12i0o2TRRS^Ait2OQ3re#Y*ky~)afuVjF| zJ1{>jxqQX^6GoHQ5N8?+-ggm= zg1xl^D3Bbrz#_^k#QTf#E@er!t-E{pSZS-RO#Eq1Nc{e@Khod2Uq&NNHRNIfcglk3 z_(&i8AyUHDa&?@T50T%}a)*o^qogq!bD51ZPkW|Ovbx~Wq0rG&)O#;&iu2oF`;I~? z!O;y1rnIYJ#y$N^SqH+Fq&#GGNXkx#$tQBwc>dp0DRB|>s4FgwzOu(Lqt*=NNsDh% z9!%|9m1GHHi(!Z&+ENmHrVR)eh0U5>o6BI?2U?o-m4zNPX~lVU@xRX{xEa?E$fZbc z@$tg0up4(!4b@h-B{j@4vZSOCCNRP3*ob#K@FgnA?2|{~w54?v#1mBhSQ4ytA(vxm zgjnG=+)MD$P(_@=&k z=W$3rHXX0zh|dXcxwkhHCz1^9UFXVyw;(a_nKdZb-DN%j*zs4b`6zK-ebsoF^n2q> zFMm~8>d29BN0BWew7w`E3AR5Lb`8c;S9xf==HsLz$dl%>YYqCV^dXg@)?4g=>?B$Y z5&>aAL%nbq5$Ls72H{kZ5-j8w8MtjX4-kx-qdNrc1v)P@=ft*fY^uIGn~Qy0sruvy zo9L3NiR~CmYy|r6j`GEBbI{?lRl#0%6A7-X{xKi>UaT13?2^bq77AUOoKx^T>7$I zu{#uQ3DY7)8Q#nJct;V{nY4W!iNgltNJ59w09wQ>FlNq6 zkv%!I(@l-f`bIj@PDG7ghbTm}XO=#3B&Pa{DfdmGB_OUl2wXDEIgFqxpgfe72`j)a zk{>X3Vt3k7QmLf!+Kd#YR0ude^owrfrheMca#2*1=|vOu2t@7A>aU_r+xGm_M?%l5 zogl(f!km*vgDHug6YhYl1YXPkt)gRJo$$X~sWI>;_vMYRiWNM-SspZ5%oh3IoOe8* z1C4EOC@N74py{$n5sZ!zg(`|tQ%salko(CFOCm~gpR>cNflL1-AfN(jGguU@tdXdN zfP)+#QDhb`0XEtKUxtWT+!nVkjL^``$+lxD;Vk#qFS6^VjM>R`YxS+CFyiE-JUm(B zv%+U;{~e6su>8TSm73<-+Mg|ewkYXgD9CF>x=DQXH*BntkPDprPISYzlYZJo3T3x+ z0s03#Npng<(axgAt(pV(V6P4K2p~@Y$Zet2NYC4G50irF=T~Tq2#A+X9Fm>e_hF~< zyC!#_j6j9dhBQKEk^VVS9P<%YF;Y;lAfu#ehWS56z3-tjhAVny5@4WZ$~7x2&CR)8 z+p6zwkC=2DA_2df-{SDYBCmCfGzkmwycpEnW2_1T8Xw3~WRIuCTgn1p@U)=$v!%uP zHW524V7*D4VGSpZx+9$*jHY2zSn>B^0$C}-$-TD~T3az`2uxBH>{=W*GI->pNt*|+ z2&pyfC;4y2)RY85b=mNGtD$j5>;b6*Qhz|1_!Ij`(1+^b4|>YG@$u}3oJO_}?!;#w zV*Koddqae(9dHBIUGxvAeiF$#IXQiobF$K;D36*X0c`D^~3R$&O zothzrs*2yez%<3WvF9*2{Yt zqWk2XxXeDZ5_+)nUM%4K^R~-paB+0*DBj-Od~}(0KtQmv7ONJuTX2=n(t7wewbo3` z#>UFZ;Z;~JX%3C(i{FUmr6)iIVSBWC)Vi}EXy~U4+5m6{!~S?CyqlI;=#H=! zc-}bA=kU*T{$L$DJF|XEQ%g%(ZuKx46;)CetJRb4hU0u0vev$5ZKeJng_V=SvIZmY z3l$(z#n$8dZoc(=ZjHt?gJnGRl8853J{o1DRBX~*l4e}weEJ|`k(AAE@i*PJiANu# za%e$kT$?p%B0CGLomT$%^iHYlw6=Io5U`D%T1dUb4^12Sh)e}R=x|rKrKl^aLuY04 z+5C;-0;QDUlGD!I-bnJlKIAv#lOEj+#QeC?NKwq@p+OI77;w!-PE6EfEASB4fBi#N zzX)>ECr<@t7y`=~I7nrcK){g2_%X8CL~3Y=wUvdRWXuzWcq$BzN1W*KzaQZQA}%(3 zw2yER@g)H+JUsuTjWNHJGCi(W+y}g)cBLBnbrzJt%Jtu2a;cQ3R0Bx$_g1J2n@a$uqonAc@wFB?7X3fYN3C}5gU_2Tt5Yj+ z0jeWZR)b2ZcX4PPX7A?}eBiV8E274+bY2m(=G?uo@R^Y#woi##b1?*bKIa*D7DRhg zMg z@p^7b=IY+3Z13Pof(=USHcF<#gC7E6X<~62WiE4+I`s9fv-ORguPc=a@N&l?wk=@l zc}}$-nlA0XE8nn4-jxk`;FW;B3fhfDpIc*FVNku&{X}T}wL^Ea&SN_QK88`>XZlX7 zGdPV>Tbt8)On~G^O1cgA#>OLt)?6}LHO76 zxfgW(Bp(!}yNw3WM?N)Aec|38^4`ZC8k37g2wZ=~^?Jt3aG?mHAXZ{G328P#i_0ynI$z((D)m_yNP|@;n321+7gR-kX`=m zek1#OKIwIxzz62yGOHy>nOJMSn@(=?U01j;=dL^O|3@xYc*+m9TaU-n5PPnnntQLT z6&_USRF9mRKR<*Dw!H>>`=f1(>$Vs@f{OvmKX?+}KktCc`CVkS%Orm@la_P(3U8K= z(dt@%1j*Ay_S?PEdwB&1GDg3@@Ncu6f*2w`Q+0*?W}2)m?;nm{{ZkRlt4j{%gIb-} zdpO|C6^E^^yAvE@_wAz%hqd$k zslQbq9=jWo>{ADRMHyM2FS)deZL)#`n;-L3PUVZ=Zq}}5VyjTu@&76kVwCRqe1d&} zM~HrTqWO&1i1CE^G>Vn({cWij$`xscbxrNOr<{n&!ob{EM|>66sDILjmJb9x=X z*SS^D<-YiR2mW0fq;~#mp^k1=PEO8jEUg)w7eTF%#%??mt4`kyOU#c(%>S#n*|jlt zR1EQK#6yyv!?I6$eo86|zuvU>NrfVmK(gm^le3Pf{w>%TaIm~is`4tNnT(vtgVTFH z5PH1oMHAw8T9~^d;1Wfr(?O*tPf#(|n5G{QFztzM$0|-d>LE<5T3wuXAoMMa9ZvHg;8xYHUOxYGr#lpn?^`a&)(kn{L3KE#O=P67e~ zdh}l``w$eAA_+Bwys!Q`vubFnfV2ibLH?;Y30H{&3i7LC5w&#~k2Uf|yxZri+lbIK zMVVY&1l;yneq`TcrwPN&xewu#Puw&;qXiFIPL*(E7qUcq*wKC2f2{K7Uw>O(Q0Yz%D^gN9XT$TftLoRYpFm!@FD5 z%8+X{#>@x*2+htSTLbN~>{OJ&g{VZ3Xi|e?)-s(E2mwQwCX{Qph~7>+BI^!E?lUzz zfAr*^=V-#gu}(y!ubsvd3s7v#i_`1lV`mTO$RK_%O7i0m$K4K*LCMn8%bw`|%O(aD z1jiI;Li@LSNpi=-*Yebkg8=s_XkJ-lsIeY zs?U~#f6}Bw%hS28tv~pEdGhV#zTCe**76+r2bnG_9w`>cqE%8qn$o9VpOE zQ!Yu)vT+Z34K%6DM?*cUfIqt=O~Hqs)R~zj+hJHVErJIqHM&(vCQuiV>rX`?aH|c| z!olDLby45l>hbrdN4vLC0k_TfaXSHUA6AsjoN&oJh;1`&yoL|hPPanBWz^!rqV;$E z_n_1xCFSJ5Q^965Ey|qT?)K&!l*pZswIY=}-C%oA%NA+ul>hJwx^28jG|3ktPA*JY zd(@$jjiADTER~Ro?Bw}39Z!_Up5Uwxeu^+)%MQh)>$C(KTLwlcO@nEswk|EI%8Gi6 zzF%KHatw<$SiPO%m6@_PG&EPXo88|4V12%cXJxDD>l1;UM=L}-Ps*J>fioy=n!EX6I#F>>!){E0l^deNeo1u--kxn0= zYa$NpOAHMZxU%3xhX)4OI_dvTWdUB!N<_^eN6F8>se(W5FctndEor$eHJg z#f3m%9z{e-hJjipHoJ|vjf;##QjYLhireXu3ZU!g>lg0?@=k2a^A!?ch#m_T31e;Q zR#tQd!Q6{Jr*TqR6(FrY(tb%c7cu0e%j1Vc$nH=S{$MKXO8;JyrzArN3%1V;GRTnlW)!A;{2{9CTV1 zWub}a=;Cm0L;$RGuXXCKxV>Py{+1P`tQ6A#d^y z4@k*vur5_?!LDf+C!awU(>S@ZgSK+j zKbSneSg27eX*YkP;0Vxtc_ksP7wF(ytpx`JpDa{mHk)hP*o;F9J*#l8TDZTgxLCyy zdu?A%V?|G*5D31sA?9bVv~XxSgU>c^fJ&CrVP>fRgi{e$=sefp&3LdfpHo9fsGy@I zznssf$>>FZEbo^HV<5a`7YpxF&a7_+pFLkI5J4pgpZS-}B*xajBaoz=mdq7RY!eX~ zw;~2V(qGQ(z-jAH>isNG*zV#Gjk#Mv@e}OzA{X5c*A5WT8|9hEM0d(t!J2&*B0L~| zKW~13moQlGNFF_$`0A5CF26m<*avg&04_)_em2(r$@BMYzUu=-E9vikobzQH+Focz6SoxCcHz@jrP{`r5KTs-P zwp-tlJXO|22OmEU>#!>82tJ~yF4%3$rs_G$D&NCiuVD@?H3Xzp7y zo;FVny@UN^^afN43h5Yb(<-gP{Gre25%nB;Rk*uWIj-QC1&?J~G{fPKDQdLQx`w*? z)is=p=O=K5()+{Uy;Feeo^E9pU(1Wy`wO1pp6BmaEiC_?AuTzrtj_{z|>>V>orXb9`B+GHoetxtB#^ojh?X@HDHYH4WVQNvrwLY z74wLBGgC5jRcCPvF;Rb`CVz_)saXE?mqAys;GxqLPkQfn+b8@e$Sn5Qo<^1kM#jv) zuKUxW{`}cVlW%MH#XfLxT;G&84mU)|CWCm)ZugQQzo25$9A2c>e4w05v7tZJHiV>w zqrd3te;YDtBUD!SU8HPQB6v$R$D$D5%Xa+L*XU6Jk^|9S8iwH~8QnaqQ^I&$3a-nm z)0}PKx%dS3OL5HUe<`zYFnwC^AZ$^PI>4kM$M3om)6mHj6i!{+7z-ozkeXcHCU5Lr zLQIJ`0R%n;PFP%+KT=(19=>#rfN4<(fFQ^vfs| zF^1kE1IOUAj%SZ~b=gSGEGmQJSMmsR+68DZZ{YFeu_e@_#qJdUW))dX%gWq-c<91- zlq#N{Lsq2leW6G49+W;4XTdoDd_=Os*DeFm+?F2q(CHhfKx8aFxDW%y%^_!6Xu zt6`W-BCS{6!!}kXlu8o$`$K<}{RixAswo$5!?R;KKWTKfYc*PIxNvACWA1PijUeoN zub%AlBRg)=5okhb@0_6~oGfU}M+mrkEEvGVQ@knYgLu6^fB?nVtFwq))v$F6#LjilRg4py=e>l1l{3=UJ0(M}D_0%D0 zSqIQ1JFP!f*qWP8t8(;Tp_6!uY$%<{=+mX$cB4*+YxhmXE2c~lh=F1`6cC_S>A{O3 zImhAOYpOA>ZbZ~o=UB^7IS66J@Kp3mHpI#OH$=a|Lk9QTsb`xL;lD~4hlN)S#h*<1 zNiKf%QP;0!lEq019&^x)Lle;7V@yekL@9&1Hk|pvFr*BxFD;&{RK=toCbg4u$=LV> zgjzy<%v42H-+3Lx|C5ma@M`<0@>9Id5xwXP$^k;($h5O7E;ZZXPtaC4SH1v*ptD6@3~j+V@L#C52xZ58X9oGr^|0^3*Mfte|eP5;+ylr z#7#61^+IQgMW-b>a}P>bi%W5_hIM1r3usTKE)=AdT9{Wk2OtW498?<&fl8@qJj3Nf9 z8SfHbc{^d%N-LCun zo6(4oG@M4({B!Jl$xNOn1<8x#m3XR%z!pw-EXf1(Q|RdUFowO30^Nho}%MmfL0#F6bMM?W9sVR1WC> zijjbfR+=es9TVdTdIX9if;}Z@I24y{gRKQUm9~oo-*Zs`C^e0|lIqzGs8d%&7h-+L z2N(lU!w@1^IZ&%;0>~}{MT?$vJl80G)VolVKokJ^r7##$FhJ8tLZ_05aY>XF$UTUU zwg9Ig3;9CvM9{Yf9)es$K`A!&jvxq)R2t2JAu(a-nxcBH!!Gm%i}CV6!_%|XCs0yX zqt;}e^sLbNxlYKxanznnCmh>T6&=H%$2+*2_eDd6L~P5D{_^y}cfdBaMOUDnM25^U zdcuLCKvkvT)%76`QWjKAVNyoQbMzgWg4*lzlniJcmX&fh&;gEkbPP9LsmfGL5W?4t<<2Qssq#ZWy*{ z(F_Lb;>k?L=Y;N_o|7j}c6PLPwzl9&hQI0J9z5$9ETEd$8n{xS{a^85Asu>dyij2^ z8bCilEzmGWbPoAPG?LVA5OL^1qI&{S;RG3BFhXLq!@xs{bUKX@7N=}jAVmHVr6I9M z4v1m{5CBw!0Js$S;1ZIHZj6Er#3)~2xfe;u;fY%|%Ao8ebqA;ipq=jHCdIB!t7vTY1LauO%009&5L_TYn#Q7jgtB;bkLU$(rcH@b)6)uanI5M>ySs5StU;^oRExi&Zy z6;Ah4STqgViMXVf7*XA!ZMYXhSv}y zr(&RNxD(?H#u2)cX{*Rhh=(x{N!g`gk~|~&qm)>-aM+e9s4{37sp3(mFJtM7fPoMq zVX;sEVdHtl5SLCUw(ZL(9Ugp%%7tQ3xu|~7=XnpqUw|}qbYdYO1Cjx$A-v27pkW6Y z;suE4nkqwjKuw}tXf-_7$TC`l*`Xlm7MIW#a3Gubr72Z1F%=D!Y*fK`>*2Y8JjCi; z*L;#TFtSRdfEY^XSUd(h2}35;J(U$v@H_-5Jjpn5T?g@?yfgqs6%ymmfw~F%`&v;u a&;5UQjVcFXPcaq%0000{k-3gnmKy9r>48Bx~jWs z&TvI}33wPB7!VK;cqvIyWe^Zh2M~}S%RfQCpLlGNW_;hk&4uKIKtSqaVc!iQzRS=K zl3LCnAP58h(T@@PG7}JxRZ}TZAyp5(%WSAWx@wPK=4NjcYY)F9L6IfP=93tdRWnw9 zi7KL@L&R77QxHNDqszN({XwG)E-G3fjao$A?T!K(@Q`D}u`%)GJ>GfK^EN(d&)j9gMICDB;8b3)eGo&ECmd!k7%wuqh_g+gWPr6KT_ z#ePn;MFoFhwhdhlkE#$I1o)U!sCP@h2a7sii>ad|y?}9jluiF!hs*$Ukgu-Ek2{Cu zKDl}(JFR%3^E!)-kY7!9!i%^_5q#icZu-X#lt%WN^_DA;bR#(e9fDVR;-@ik;00rW z7C3OIppiEsYeF+Q>U;@S_?UCln?L3(7&y)P#r;1n;B$cwr98YFYWsNJS?kmFn1X0v z#QJ3(`{9&=O)Gj=)l)QLVQ_F#@joIKQ5E>=->$tiY1gdhF;#Gqlhs-`-QG?FzkvQb z&MRsfdi7>Y_i`gEa#&hAYFhu`eaSIZ+f}E&9%NJ%mE?GNI#1|qy$t0S(s%g1@7oL~ zFs5yFdo)Ywq}v*cW5(x*XuR-LG%-fl4-*uVQ6v?{adOaT4Lz?}3H*E%Z(}@uQfi@? zg8MmO%8QD(cI?TT)K9rzLWt}`(zR2+LkdKrO0bF{r-B9;U7HB-25i?Ts<=J|dTVY4 zkh!;UGNa2mA)zG84Nuazi?-P=HwY7HVULLp#4mv^w;Ys0>Cg}o5rw*(FTv=BlFe+_7cTvo=3&7`7FzU9(5q#*Ef8@f$Xyi1pw;ZpbYVeQCdkz#Jf~>MLf!u0CF}td7 zNt$6_PGd4T`dgsgM0q9j)L^R7NLYnRyLgu+BzsMCe@hg~p)wtlg@m&S=%!nZazX_Q z5>g*zPT9V|e+y`vf)adB?bY?a{XzKqc3PG-7=CPCpeq&c8m7s`u^mzV!k8oNVR2#R z8W0~lnGTGA#A;w)NGT)}8nc4=)KW*-|{|G(%0m( ze_Dm7oY7hK*_&ZlwKC$jvidD&swNg-U7=Tc%*f@HI(?n<6jP&Sy`G!ayq~l%vu+?d zw5e5lZX!1Kfv>qZCy&WS;}%ETEmv<2Jvu1~T@pjx!uPy}@3k!HC?3g@(qU#?pjv6MQ{cD|?TZbQ08`ugQ;Q6Od_jv~F{YaR<=0ud} zVAf!vpM2`-mr04;eG>mR(hGx>7AEdh0m50>&gAdQAumMvBIpxQGvKtAJAwlYIL3F2 z0=abj9cpoFB!oV&U}$uwSvbezrDih~^Ye@$&=5LU=X~^F&;1C~0ml<;N&TX6D99*b zW6Fxp`GKzu-OXcYk*wt8VE!>POGz zKtg{K87Iy}%C7xF6O|4SAx2MXPanYf8Uk3NZyUx)?<9#HUv09sf2L}L3E{9Tt z`C$COc5%^PG3Uj|u-7VfZ3EF^$O&a;m&fg&%hE~=y5^D=isFh2#s{mj0+OHwb(YsA zHeAwd#_<#!s3D}9pfdvtLxYO-!aw-N#Yf6U1~D)H8Al*x#|!q!v%>0%Nd=O-VP1pA zA5&TwoOh6kz8E0JI>+VB%AunsmrBisn$ej&FYX<$3d>T(E=H?+AeLtfzsA5iu+(*w z8+(8W@ey;-bS(L-L!$&DZDl^j9)qoQQwaSAT`0rfRI)V-dShC7iZ?tgP zp2G@}?9xL@+Xk`PBBt5`OQY+pl1Pn#NX0%gOkK9?t8?=(ko%jjWVUH;)zEb*c}Z9C z%vc&7_zu+HZ0|1YY_A6R*V6NSHZ_VrR9WfPtA?NxZ|*dBW78MkyRqB$ACt<`hPX(opj&rWy_TigVZ=LR%_;sTRk@i-aIX^B{snz9IN1&uQAF9?k?C_k6aOYA+JwlGEfW)v+% zFJ@>>yp#9=>1QUIGL652PLnNBG={|F zRpKaPGYttT=0{{Dp(I*n62ZMBIdHSGUWkGq_o2;X&lN@IjfL5!Yo!z!%N;)s@1=a* zF}<4PpF~ShCcvmtCCnM4mxssVC?i)PJz>h_TK{1VoF9m5&p^6b>2Qj~t;$5$_|9!5 zHu+07L8DG~43{1iE!qkZbr4N0dKOTgI$SHpPDjBthNho3kn-}+4xq(AvdorW?zE31 zW(FWeE-!ofke9jN55%B!4zh)HK28(%?7dzf2pIUIsbUw~?~w#p(@@?!a4aE$zg_9m zX}i#r&G1FOa&ngWgNI)GwO`zDe(D8_3V07XLiO%cIPf`l<-v5+V;?$ydF5}>Atx4= z6lAQAkF?ezcZ%*qpl5bZ)x2fjPNBN3yP&~X*{X@TnnL(qw}N(}AYvo%3KZao$1V(1 zV>JkRhB}caD@SC*mnmvsFbVz!)99}$tE%_~U0Xp?*ifPTT2WBlu_+!IhImNcVbs(P z=7?->Q&@&oqod{u|2i1ZQEWmQI$uWIi^CtXm{&f^dO?OKhGSOK|K1e_V{J-f5sp_J zV&SSrJ|8#PIQO2UsPsFMqD9LqZa_tCWt=PlX}Sa+K$PFoQ4)f)p{BMO7+|p!Kpc%B z0c@`KS+J@=Djr_Yjuu(ZvSf}61z(_ONwTcQknOijYsqNMaF6GcD z&Vs|)X2Y7I1({yx(U<-(t43W>;!##8&o0)~YK;*nN5E{Ah1JCBp)uM7(P7>UcMn|I z$$1{$a6ZfHca)^WwQ~8OMpwg0o*x%3UR0&2RF+mEK0Qocdg)48c1iF6)8)Mqw~~$G zh+6Ur7iVN2L?~QzIZM8VnQdChz(%Vj|D1pk zMV`5$B3xksItxx9bCJi*5{!$hD^O0AsZBur)L^Mvhn&DRorHwRhffv3Mjc$H6;Bd9 z%)?F{%;pKv>QIGEV9Cc<7E@nl+1K=B10Ahz1zw3+)phO9qYgYW$S;uALzu6hl;FtT zI2@cf*%AoN4f0B)Boky_`ia6N!XxE|GWZj%e#LPT<@$c!GkZ**~pV7dl;0#dc zJwCP!+)%|x7b9e;ROs2$_?taJ&3`pVKEkQEHAu0E$XToS^8G#NBUS_FDcsHRqSRIm z$de2x$Yhm86s5QPJ5JfAqPf3f-%|Npr>Y#2Xf9Jz zJU~al*~RKis2zC7IWf`5LnqP*wGJeks6>L9MWk1HAbQQ^Or`e#ScWfb7amDB71S%f zOs&{YYc%~^P87gi^!Su!v(8mPYK7X-uD`uH0n0vt!`UUnnSRDYk3^w*izc_V=etAn zlP%s>9cMu4{L{>|V0nP4%;KpGtHCnwa-TP5bt~M?j!yIWlFbW?ULD)j=rqU6C^2Fs zqeHTet}tV-%|RG~ChwK4p#)rxh-uaH2-62Zz(*cWm2^|SAyLG*Tui1z@Y92sLY?&A zn#GwH(yvP|?hw>4|AcjIB z|6oj#z6Hr?F-C*)tZ3H^&Q31T>{iWUYCz_{&%?~#4pypl7z&S@u3$Y3=oz><|5=ul zpsBJ(086CY#f60%S%hRdQ%*p$vzfPNKU7Aqc^9X`5|c6t4qVh|`~^QNinlDIcCF6L zgs|Sy&!(gB2dX4rMlRIqT(hFQ;U`jcNeBr5O>CKL)uSNKIYipguJbEg_c{Q6CnNGg zmD}KGG+qUfy#~E%0uvwO^J6#xEarXrGxzIwB!=sAa0Y*+!;5(^k|4`d&$Sa7d)FPS+B!?IAm8K$P8ZQhUAm6_$JBKgc=f z=Qzj-t4XfyKZOj~=1jT#0-`<%Cag~&{-y;3vdKNGBD+eq8KIycUcZ;b1oe8{_385^ zug{fEX9CGI?8Xb}uDLpA)s;MsdT*k(EL1XrBdf;@9Jubs)2nxx8Z1BqN{`WCTvb)O zK2Nh8QA=AeVRpKY+m|9w>f{X;ts`~x{NL4O?}rmoI0<^?hFdUc7&@+g+fA1YX|c<8`X)_>s-y8cj#EJzuGq{{G`Ybo6S~ ztu#SC?q@`$qxd!28SclCt0`Jbh&FoN<&GOAO%E`Ch_q$|!$Rq*M-~fzAFIy{Q-I-Y z4B2R&2H0rrzepNx)gyTVQBjl1pinggL8l{G9T=a_VnR>_Ccd%Lc8Qth+cOFh!5?a5 zD!F9=1JIWc46c1H#BQK{AyhU{9mEt#ApC1VB?&<`ZF$Nl9sUW-kv~x*YAbDwYzj@} z@`laAtXMMSv^lp!%H)9!!aOM6$?gp(j%&M|Zp^`Ec~YB>`HZfq0L??fr=hq88l@o< z>6rJ?-$;~Eq>uq;ZS@xC7T3jM?6F-cu}`-fuA5ebUX|kOL5&r2Ik_5R3%7D1fT~ju z8Z7}SZ58Ksb;yv{AL6lMpvophkxG>KTHuO;0sDz2hT>4xBKE+P3EOA$lvVIqKEgGf)C4)g70&^_Fbnvy&rp@y!|e)tEP5q9@N`vi zY%eTL!_W-qA1EH2;0qWj?5;N1xxYD`*s7_IlsmSMU^is(>Zd{xPV(WFWN=1!bhECh{Q}cTnVahube=CG%p9PHX?xL#+-`RtQSbYhtFY?*9kM9mXltVk8=Fh zSMsqp;M^~fADbN@VDm;cJ33gH2OF)MHrIuk4yBQcLr%#P0o##oeaz#5a;M9DWaiD4 zP&~+>!JU^2n&OIyEbRHMUOtDop*nuXlFrwU(?2y02L}zEKo`=F&`m364@~H3Xx{(c z;RzI0Tf`qtC~~wj04$vMWRP8*+Yum#w;0{G(Ajj%Jyf&Mv}TKk^I{(vE`a{Md=eNx z40;=zpgPP%|BkX`e2>-`}R@C?!4~!^q^lK)H1$4#+Yr+_33&p1Ur-z9R+^N6?{0)^GMA2pR)Dvwg%-2s zX%vUqW!#t?HhjqA9kaqYMt%@f2sKD0jocakyI_7NAoA_SJy7AY6FC0Y9@3Bi<8Mon zTFl`s=ozAWm(vkq3_}wtcVT zGWwVIv0&`B&*B*-q1UDsV8{;hZ#fro;2|QSx*Y>{dOv|PxgOhVlsPNQO>heg7Uv$PuN$6RRJxxpS;OSc zi<+{K>S8Uu?5SUU@Qef>*}1;JDE;?mV!Qy|7EkIV5sDj{2Clqch0rfGH~Ho*+k?yI z){DCfsW>*&MiDg7^OZxWX>UD2PfD|@PP4w#Wlb2f81;rFt|>AdlB=5L-UDjUx^?Gl zEyE(!eL|8hN$grRbP^eKk)=k-hKYFLDyHO9?{>-daBzBH;~b{RHaNKNd1p?hNakfi z&>5!U_nIsNO^W1fDg`d(9VDpu#te32DfK+$za^YOo)-iAJ?Cb6F4*R{l|pX+I^l_W z^oaJuL&sTJ9Sc74o<#m2?=A^^FijF!gLrItLqt31+uUxG{_S=16?j0&)iFwzdGuZh ztB&8`UgLLY0e+@P%59?}zTDgNs7HG;)dy{N_R+|(?d6RV1e!9T@3*gqxb20$ZriH& z7@Fuf4qHi7W9omubaB)5ii>OCxFQ44IJy2h0BhBI`d6)i|DLJ8^}$O`HrB=M|48YC z7?aTz-VCEY0H4U|Zqv$GWkt~Ui9tYdxtlKTq<)LXMuM?sG zi`%>z1@ok7C+jdchW|a#4Xzu}llA87 zggtfBWok%cdbP@NZv%l<}^r$Y77EN1QW^|nFp z|FZW@XA*ucPhczW*bp|E@Z#_11v+gNQdcTWM62{JOO)hz7l3u+o0u(!M0!p<;J@Zb z0MJbSm$cpd==w^@)nc28kPdP0`yF>;iM?21P&_Oqr~fgp3IMp5@EICu|JG;D(SFtd z==IrlC+z*esHuDB2(JO_X8z^bw^YJBs}DHbM0K0dcfZqG`Mm!sx#^0u!HJWAypZLU z(q%E62xc-Zl`29DEI-qexO3)wlgoKvCkKul^!*;Su&JUGZrSEFVPT658+% zxW-=-93wkzfNmHLA8?UJvcbXYgf>Hgm4O}B@)OHh_@h$?n{0B_d;Px*?G-)c_os^*(c>95pkrF0&2J4&)L0_EEz$s?!ySL_N z0QzbBv@99ruTZi$^giuiL)C@c&li{U_o$mso5Xt0hkapA|F{fM@iNtM+OnskGm-b2 z8)W;QxAn}M2+%{Of}lV>p|QUB+@_;J-I|nGJG(yq)^{Ntxh%jdDeFn?wqYfw6EHsO zm#ry7?@YeNH6Xp#=ap4IeG9OYqDIe0)Jl{3_K@%YI%fY=f!j{J*{P@BwvnGZ^SEf> zxj+%^!Q5&;QIXuW`IB*4r~4*ff2!MWp^q{rabz6adOZ5%D4W|{ZKIg-!z#DXvAEK| zGB|qoYL?F7**dbt`^p~I{!xhM-IJ6(FY!+H;gub0pw^pn`sf_z{49P&g5KlyzCG5K z+3@Q?e&(n`YT_iN+Rpn6WAzo8t*X@gx?(vfw&!KHPysmHI_(48qrB(GPXiRTZ*qA1 zgHDu993j5mz8z2d6d*JDemx8xo^2SAGhHw&jI6|D{Zd!3(=y&@S-^2_M^4K|)1$S0 zchbUv?r7fhAhBjmdNZg0*bN{|{b)Q38PK1)TJG>#@>>`t1Qa&LzD^Idb%?#qu%|v9 zu6xSkrgQWblp9}c^18y4QnD`|_P974>=$cBaPvKF*z~_^&GdAad1g+TpEwN+1hn_l zHm1a^86^Ij%6-Tdv6hGmt)GJ&`1)9dw3YK18~TwUx5CGFUL~&4u_DOnxL|pBbdMWV z2A>j`c{cV_QD=G<4OTx=vIxy0D_t!ncsC1eLyfG=qBMM};3306c0yxmyp*9L(RQHk z8D_hd`VFcGpi+_fwrJNEKeesf&V9jN(Je&k<>4YXrWurP?;>F40%X) zY?JqYadexFQkF)L%<}U#Aq7HOM@9d3dFQ#sY5z{_8K8}f5&Yh89B=hcnj2nppReKz z?>kz{8!TR!E5R=^W5_l8P#&9DczFSzT_eq53$Dg2gZsbwEK$e^^bDdZ0?jv zTzeD>Rc&6zgo?jE94Yt|ZHs1iA=wufeVhL7d3 z1vdfFVqH5^M71d$|Dedl%A1bI^Jiah^cWA`)VFu$9bV@h&qB(4;Uh(3^WK)1SycZB zqj0y|eEsZ?T-vj;*ybyWSdZOhT4xtQ9g5;t4} zL{mgts^dWak7Rit#9icx&(}ZuY+3Zb=F8Mb8Lh8{q5cPjxxClLxx98upkA>&Y1zkp zkufR5>}Js>P6CGxwG2F)-7N-3NoSdjX_=iJADBC@TT{JnBsGd(PFJ-~z~9Z=(0p!% z$gZcE>aDhom?@f;2z2cu4SG7OT%NCHUD#dZKf(&feAZ32WGQg$G)?MMb@^w~+uzfi z{ryildm{Ti7dd-4Pv&|7TBN;GgUD?uVx32bg5IXaTA?}xrOJDDL+yMGtcv>GpPa7=KDGO6!g zEyfAjoQm(VDjVykjN+)Pw6=Pd?Aka9fvjVTnN8q<5D%OWv*4V`!Vte_0nky%iEkEx z$qM*(LiV)2;8$lhFLPA(lq4H=jt*7hLAoeiOQQW&vmJA)#F8l`1md9xoQ*ciVsLcg zy8ZW-#B7p~3FE8)B6*YFU?$)NhmA8cviIcSb8y(g9iPGC3>r$Kg+I@wbqaTFxNA(G z$D+Mu?KYiZ*3bD%*_1ZY*7Y*k3T-=o=usJick@pioSJ*GuU#)E|jNyRWs0E$9_J-?gTfSUHYV}n&- zeT>;>(F~7~O5#FC6Dl1vV(i_A2`BEGjuI`-x!!;+je$tjb;>7o`|iC_e}N=>OSl>w zc8rodoGgdaC(5iB;`V(qFQ=Pn>-Wc2FL8y88knH)(qkugy^jUV*3b9IXMHFLRtiBP4Cnr9Alo2Z`;rDh2CCs{F;H)WFIS=u{2=xR3XQz z&1%?rDxuIHYt6VQ1V%YM;MoT$Csrxgl&0eS#m}t&A2me*S0Ohuz2Cm#3-TFX;8;-rn7F!4qu_MrN75rF~{7 zJI~2fw+ehAe;!+p$zVmcR$RQ)gNM~Yq0f3WJ)Dx!Hq|Okseo$bj(++)GjTo z^nqG`wx1cB;F|)v;`4<$y!xHQ7IJtf68;cmKiFtJ`--pEz~-0!Ef`-9n#vO!FA^&q zB8W3nU(!ZjC#8uX`i1bEE^pvt#R5_*8jYeE_(HS~nO-ysFMv1?qGrSXQlSt68NNB^ zwNLRQF(1-=R{{!IE!kr&ySA$05IhDvL|#}XK}Hr$-g#&Y=PM=&)ldlrkvKY%PHYu| zEe;+*B^c`40Lt$=!AKO7#}oW`QXMlvXq_#J7$2{>)^$~zW2s6~QUuQY?OLSQrF~+>==VzQi$#bR4V{7 z#FbW;TRQFJn|1)@bL^VIxn!IEmgzQbt+Ft~^I#M?eYDK&Lr$l~qeO4S=3av~3w?C* zu%zfEkQMX!p-F~CkGz?q8kv9edd;lS@v9Rk?l(c4RzT^#;BVe)UTNCv>!AnbZ#NJr8d2J!G^b#F!FV9*=4``!+R z>T^WUowIM`aolwOQ0avn`Uf$KcQGcdEP_~jBv-HA{<&ys7V0%<6w%= z;jCg$e6`Fm`=O0GKJN>001vbSBP1qA$i1^Qjz%;tuh(9JY2mP)=5H12r;?I7vFJHo zJy6DA-e2|rWfZL{X}jAe#=eEyzjT>d3_(=Mspw?Rnzj^hqK|QC*r)pq)EH16QI!?e z-+3MV4xb@NR1(H()}KAeZ9n;2cfL#*p1FL{&H{Y(S1H}kgG%lEFP?IjEv}tecRVeQ zFKtWgr9)#bskf=tAKN$GpVlt7!%uuKol9lze|(qiKl~Gj%L{N}gD7IFdi*XBKi*k) zg1!4%pRzi3G=PSMkPhVciKtIp4~-h1z4krzTM|7PZ|P8UECd z=bRh~=Tre2=(iIm^Gy#W28rG?6O*g8M$Yii!X2{#Lk-=}3DTG^SB7VVP$&QP)1>Ph z!=DSV{BjrV?!*1Y96MsYVZnY<+?Q4Ub{q#0Du!S0RWrRwJ6hYa?To3NHxnoKZ0#3* zuhr|2x_{gVpYzMj_1jI36)XjF-}9;2^*lYMs;JBIpjhxJsdaIDUo6)Q zDWc)+i*sQpG18fyocCS>O@N%&>F9t2Cw2&kL2mrJ0S+BaEa4MyU_`w_3ueoCe*W*x zb=?Ak`3ApJQUidBk;%JlXj;^ZBTO9+;C_5<}Ypn)XXwh!QI2@s6618g|KX z9emIgk#uf99Q5L!*Y64n`*AZeMlvxBmLOR(@%(~@;%ej1{o>l5`+FfM{3eTOI(UFM@I+G(AD`RS!ZWsXW}e44hh&oN>($u6xrc|vq&!CHET{TXTF6lw>f!7 z06tB=bx~QUPS%4Y2Ki<5ZJlhv>E|Sl-gKcTsOmOY_$U_Tq><`@(SWt-SqUgNU=)nF z4&NpQS`!ia3}-hJCq)ij1rE9F!251+3K5svYap7_|9Wf$lTm+ro`%pRP96}T)icLc z;kl?Z(|W3m#S%@&-_8cH1MM?&6TdEPz`B>D)Gc~RFHONJP*r2r|KhmeZ*YPhdCXoL zM4vIyz(9D<$$lNaUtPnobOK4Ef~S-J)JTboqa@{U(F$siD40pq|MoP)CU-dCca6Cab#Ru9 zmnnWBO>16gC=7WaC6(UyGUtoJ+21lWt_{J5eXtPlWd2kk3m0p{4e#-olCJ`+ivM%!u97g zB5P==`Um5kJZ!rHQk}iqcI1f$(tL`NWaBryD1HfQ3BSSSfj%D!hCZT^!+GC4Y|@{g z69`q{;q`}2Ng(J~5bbHr(9CDp0|jm2X7;OtPn9xvLw~JHQcJZ-+fC;GQm@SIuA@bC zElgk|F@tC{H4)g{i4LVycoruz{h6VSFZB*I+7Tvov0b?Tp076U79`a1!qpy0pUpzF zo!mP(iE#U0`%a{V9vWP$&?qs}g(8waXO1O*PX1zBu=qm|W?<*3h;|SxzB}tAmK%5Ld5nvXuzu5A<#asMTfOm=3X<$@@J*Kt=X!A^l%R_$9yr$nYQTxY$d zi-<)ku1>~Jfffm+sHX+N&POxfSJagIvnJj`m$}{HekIJBT};xYXU_d-LDG*Xu`YHj z?$ntC89yzp%!mwwVKjm#d^vF#3l4r*0g2<;X{0ajgqIyWCOzG-JiK!?SO`OmK9qQ8 z=?{OfxRx-u^+Cd3Z~?c~YOr>_*q;|Glh}L<=!IeDeu(^}`RJXlBd0O@6DPUib?L9) zS&XvzPSr!*MJH`}+NkIo{L8`xjt zRQh}`Sl7P8P@3m}z812Mv(wATf3s}&n(?^d+EV02g`VI#D8%VxpYe6!SQ`8(V03*c zg(hP2#vv%majITI-AbWF#)2GOg%*_eaxj$WD&=`}st%xMSt24PBU~nUOIAfl2(q%O za}nfxL8GoH1LmPP6w@J_5Zpoy*hTJr{1fXC#E=WSR%3@!F$S`Fs%4S*>Ebprj-0bv zGyx>}DIyuyvSWkJ_{4^NN(m^N&9O>0^F?shLQKth1_P@%RrS)2kE@P54Ad6-PG!@WfXcXizB2JFr_&cMvy=P zJ8c7v78$gK`0lfVws_05Pk*B41~2j#l{e!H7?GqsrnfxXhU9#61^`J zI)7!>c}6e_^w!WeDC?u$rMyq+ z6HW~1@vJ!p=I9fS_oftdpvtJEF*=YEZLc~FaugT6+Y2WYSd;mF87Y-=zWyy=)a;NN z;i26l3Yl4QA)F!wBW{^O}=AcWJb)z(Em8Mp8*BCcZ9@!&>F= z+YK`~r24jOnJGf`T>AM0_39ApcWL`a=QTyX)W5! zsW-6^A*aX$i@@FSnif3D&}1;gb`gQnssP~d-$b#qfu9(^AOigZ!IiHv#*w?%Qa~y9 zLyJa#wbEujBsKr%3zDuu0_mJA5ux)ZIJJc8;l@zS@&Adws78=gBqFiS2+)!<4Y2uY zbIGLE)7{JQB$AeFx)4)PJFL#iJN0XRA09`*;_DlQ;xO_e7kPR2e+7&VGN(#O8t;1v zqlBBu?Td2Kg*WvT)l4PN{vT{6>~0QB@N>@hxy9Pb9_DjD1Dwr8slVY6v{hH{?yJlTqV z;&lKZJLh!!UW@0h`-((Yqr>KYUa$fd5z?DZMg+OUu1Fq^#{ZOXUi+Q8e)u<%w(z|S z=&*%lgI^U7(+l(_s+KO*3RJy?Zv6nw{E`mpR;(IcXwQDy@@jiU@a_7q8|L`MJuUkS zZ#FCD5RdEr{DnOe6we8ePnVH_5!uiG#5 zb9wG@ANux!ms{Sm+xcnPHh7!ohIK;aAkdJqd!J+Oq&1AJvh)Q^aqcVw)PJkpwF>I{?Ftd*J}+Bq ze`oEe7h1X>k9+O8Dj;2(P+XgSeU+nCzo4I!uY73urj`I__!BpbZlceZ%rT~4ceMrGe2&_Ig=6xlo~9}MfQL@_jZ3a-gu+yQ zR@&!)so{Is;vno4`PW^Hcy|$vuDjTy1A+QAO}e9U^aHo!GA;PaVkm76aaE@vb}3yT zUetlEHj&BMNv(S*WS?&T2{;S2E%b}vvlgKs7KGlP)F_3 z0peWF9}m&P>_*3;b8z{~T^(vs^@N)?Hbg0#+8Kq7mZ%W2>o$?$HktJ3S(As!Cl*X1 zAA@s`a`aPKb#51v3*rRjrAjSQvfeISMPLUyWW+l@fT`B}Sv1|+iez~sp`khl6M@`q zC-_8x+p%oHB3pnX$vh8MVY8{L-InrjTjDybBx-1~kwk11r-GwlMg3^%xXzr&dj@oIEYYB#Lk=y6L zl(y}^Ij^T_OLZ%u>QqhtC;GQxN+GdrNOj6^4Iyui+Klu;a=wsmstj)%ThwB>+aE<5KWU9utRdCH`IdCZ@S z(U4a|rvBnT26O+m!!r`Qa?s$+|1fsC+peUaMDrKy(DCIss&V8Lcz zqAr8>L9nDv^Oj@9o{5|Hy&Xpi!cGSwQwV* zv6qjC8TPMZ8n31#j?82NFQYgfGmiz|R3{d*DV2npTljTdM1K3$6c1GdW+k@dEI*ZR zL0!OASwcK65a1`;!+D!~eVf-=B6Wqv(HH!RKguY1 zmiaE9a#4Kz`{}84LVTUrw`0h(7b&_st5eNV0B&P_B;6R6X8ZKt*!k%CDj*+Ec{qHo z`noZ^iL?c!KH5iq+sjh8;ixL^`+xY1z{i`Mx=#ex*dPJ@>rx-|?(4^-f3K~b?>~0G zVVNwZzY9t*7k5|6c`8fM>TZ^_^)#GIj((1NYBoTh2__<%CaPT>le$1%(>k zH`xErMEPOXKjTdPgAe846CruTLG6+K|GEWI6RoVCNd4WX|1t7_8^g@%$@^A?*bx;P zZ2RpJ3{|g%mEMbs|HeQZ`_8~dR?IOBOY?Cgr%?L|{=d=YJfbeDRupOtF{>*A+HWCZFceq?t2kGbe6aUe{(wo0R5(&0qq{~)nEC2{w;Q)%Pp`#z7m(R&(* zPY;*(^#k&}K%LLbgk?(gDjOf?<;!GRjsG0`vbA_LPCL*{MIzQpQE+@oL%-XgFR-PB z<1rMAot+((Ql9TP&3I8^?-tCh_eG=E_dO@mU_vl=?O>O**Jbe}(&y1YQxO=kjJfz2 zJG^wo?z)6J9HYAP?c-MH^jaz$T>&q1kLNnNZos2QS62x<$H6wo163R&y5AiS!?^Y~ zc9y{7yOGKyaF}z(uO0iGw&$Duf|3$+)f0OCkLpUCMZOE%o(wNOka zX5(QtM76rBRj^gW4vB_QfGI_?7)OF5jMWom+JE!hm@_*!7Z5SOzFzS;3$_u%|K}sm z4?`6jm?))1&hqvx8N~Qo!3%FO{i$zFdIc{>62aTT9NL|bqpvI&3`bY>EY#3u{+^j) z^~shkf&5MAHy?;?=U3xM#Xa!H#9wT8Amaq+Ba^6vnl2Sl;K6V-#V5R$L^;?Rd^wL; zG}Qe3q=jKz2B*r{$&fHxu;fHzsw#kD%*DR(@nqViag&eA!Vf5#P(0<`?rIXvAIz6a zRHn(7avt0LS@ zOC8XI6WXjd9?8&y>ubXfA!1P6QHGOAWsqAWC&bc#BWl@-Bo2dJY)#_oLX-}iM&?r6 z&FRVEOqUcAOJTd5SVSfdLglBaRIz~Q#QG-}IXosGWZ`9yK+fuI! zF&C^F{j4LmdT1jFBhbJT#S{%72L2LltoU_#xfDqoZjg|$t4knMhDEwZzY}%Y5SDwY z1Oon8$c+<;PJpW-Hi$v`y~O`1E>CiVkBKJ@{cv2MvJU4luIHX8wh&4vfLNRHod=cfY*fx1POc&zf1YW}Z;2-(S)3 z=l;~Fh|bmw>uXUn1a+j-M!#om?BG*uhOPq|1akb^&jzbHZygwEWLQ&6sDIu!_$`kx`>hMmOy zLfsaV9cscRNzA0ob?&|jtffkYl0(u#KQ&F_QHV3;r?n#yasKiAiA`)3XZvOa0S%yB zvfFACd*>PQndfvYc-b{_!5~0SJRFja05Pvi@vFN4yHk0046vSDGLU>^Siij)(vaUz zOUd_?$@Q3O%a`|kYq)8S)Dq?$e`wz_d=n~_3!!fY`~*)ZBU36=M!@d*!c<_Rth7|4 z{5z}FG*$a|LT|&B8n|jw*H}{^-!Q2x!g`ki#dU7MiT&eBzQ>0;JUauU zjYc_s>&N@#4n8o7L}O)XsVJszFU3G#Rn_Hj3#>{=dsZ4;aL}mGcAHV)ZfIyA4tTv{ zpcWyOectUI*K&CFE3RJP+^_~T+Sn7dyAYliPg4%te%IsUm|yEnL+tYgHUb$9|E{|Bg%`nm5X zu)3KlVj^$5Q{gb2_xx(!*{K2laAD^P&->6Po=qqz@!jL!oxtAz%WXV+@K4}y%k2UC z>VF5}A6sINy|NP?Tqr-$TAIWD5BBm%*jN|jglN{{#c759PaGkdL!}bE`(Up+Y%+bJ z>_>n1FJT{$3_z4MpiaHN3#tJUsHqyL{dX|>-}F@fG5i<)**}LD%G7=fvBbw8C~kr# z??8#0eHQJO>42A<0d^`pPV3!*Xs$)eZP;U}mgnO#+%MlJ=aVl5WyJ#1)6>H-X-Qm0 zS&xeiI~G4R>ZVWQ^7|e|_H`}>c6!H!-afLpe@C^_UDH?96f`WIz#$EXubl5Kak|N{YXaBGIjs}5Sy$ZQ;xSTernjG# z*c1Qgg+J{n8Xw+u*(%fi4=@jo{BOXV1~MGm@ur}uNK6yVdO#zZL!rzE@hKmwK&dJG z72mO1g0gdENt8^@X8XG30eTK$$-2|}Nb}7(TG6g`-ji*R-D%fr&0TQFL3fjC1Q3<>}yRjk5zk7)&3BT4|**MnUmZMUMlB< zCoCS(+!||6Ss#ymz)WP}fQzib!F2Wl4ZBI0OYpGQ>=lz+A`p?L#Z~NLk%(4DTtwGU zcLofsHk5hrPB`S1LH*^Xtl#qJCLtvK5Yf-jXj_?;g(Ld&p4?f$kPJqBVlgya5b4Ml zTwV>f2xL*`CXO+-A6I$i#P{)!k3#B6U-D)O#z4<8x0pv!nqe`l#a~G z2?qAy9^-{a47pm54;EjQa5ff)s=JbOT);|Nv5lK*oTZUWmK4a#+R4}UCHK~B2ni@l zqC_eJ=Z6%X^n)Y?2W>#>i&kxKm~kX|S2Ad7CxXmd*GXEZRXnhUSS%ifUzpG|8KK=T z^3%S;D)cs~EL$X*~|1@}A99O-8cHf~lpYB|NC-{}uCNpv1MUA*RI> z>Ap6aQ0-&E_&^Lv#dNcn8Vi5E!ayOHC%3s~uz0Mexbh zcyWZYB4{oO`SSwfO-Kc|5g3v}*eA3p7|FVr%9xM8N)|%UUEQ6ofX(O`>IIGI!EtVb zTAL@Yxe>2v#`~+w{^%HqF*d+1w1}zK1;v88v>^Tg^ z(#(Oqdi#|n)9i zOkY-Rh=9vTMG=G;5fMOFCu)Tq>@v9Q2)qYE$RomN4AA(8Z$8@cLmIeHr6D%J>9DHEit!Gj9E<}<*RtL?_XL%^GTiG$l=l?Y%P}rUxqr)?I9;mk9 zB41RzP(D`d!EEcA*cdH#ydAmvxL%ODc(u7Scbce#BYHnmRlGHb=@go3ZuJ{BeVz*j zr=ApTygnk^DLdI7>t49Jj@|qhZTatUrU?pMyf3G9HH@=Lzz(7h+>eW`0DYyD%;wqA zgZsDJ6uB4YR{^~=736!C!hZi1Tj2X9Pi8b7`s?sQx?mEqMG+>|c0rcp>tu{Aq}qQ(xH+TW>Vrp32W~jekt(wi^_$>7-q@l1q>1WEz4ZU){zi|os-1BK6oJKEq!Y=$`iNvit)4Gt(Q1$UnZ zFJ5U9F8S5yOOC|;C$^9sWDyxtw?OFV(nXMPj3xfiip*Il_zQ5BbiyxdncNktEt|Xeb48beoUrmRY0~jrm=7kzZ!1|O&lO?rc184+ z-#SM~Y75?0Oed5#fr!jJJ5lW5tb7if*H1qy+S#3f(`lC0!#r?Mty4(%;k7#zd)}_8 zr*}5lVr?MjIJGf7?Y$uud)l->!a$AwM|AAs1s`h`11#r%nK%Jf1s*QFbxphgkMZko zTXXci=G3jtuIH+JB`Vwk@0|15crMy*{I4PnIJmjXNX@_^(~`a~zi%uW=ADjDPQc?) zTy6h61I_~;1G4!ZfAnhNjij)UvYSWoeHuw-BII{3=M%$jlW%z&_Yu0@5}Z>4A|Cgl ze(ZSr^>AmeJj@t89j8PF+>u3;y!X$25SLmA?h_h(c(;M4b2#{){KSkAKId6XZ&EaJ zh_pI+mNffjQHF)~)g;$$yT(cIZ{PHg5eMgxF5fQgBDp+c_%k7vWxW1eZtFKyC!|>`oj+ zIo7Of@jKqeG~no}w7;u6Un6buISDG_5InDp)oz(%koLPma{n1~3{EHL6#@FH3T4qFMf*zEXyBYPk>piJef_Cqw%;Vp#aK{y41V?1h6O}kHyERQ{;ERS!bg$8x4UJ9x%Gsm0-&|~<< zCZg^r3~`3ycT9aW%oM8NsRoki%~$%>c7#Y@Qi$CbKkd1^zdosm9R0Q|OE=EGs2yQ8 zYxn8CXu~*$(+rhN)JH=HQ#^)|z-EbG@;+ez44>{sADP(M*>XQ@u%)-nMP|p72$Yln z>AoH|Fq?qyBQYIC&I8ErLR;H8V&qEwT3N#Tuu*(q%VRXUGtp6Jx|B{&82vsup3&IU zU?a)L^95#Sn4BTRFwcpDaxgr$7MldXU{eR+qOSa5ULfpp<|PZTjBuXh>*>;)X*M4_ z=3K4|1eS6gpB!_JqY+}V^@CZ+WauzFO(HT1scLL|io7TZ2dTcIPf>O&-!5Q4CC#V( z!B(1@DTykRi;H1`*?J0qpGep4Wq6RbGEj=ZpVRSnvZLs;O_JfCdv3qw89$I;gDxp4 zMIpl-p3<$gr+12#f)5j9|BH(UHAnu2g#%)XQPY~cn@=2k_FHwb{5||<#yqxUnFAI@ z_+33b7G~$ICHY*NbwUr9Nh_aktFy@3^Kl8O5jo{jgiso%s8Y`gS)-cCOf*fSj)_4C zsWT8T>N9G}TU`MK*kIvACYhnhqGl1 zxrJ0yAcDoS_f8B3zG#v#tJUJ&;g{M*Jx2{W#S^0?1s*EUC`pD9!leP9slW8$u`xZL zl2eN$B~}7jDrs;B22mvZJv=m(G;z;C*k#35O7MP{_|4L)p?a|vU#pG#hE+RTxfMAq z^lm3w5H%I?_>DINi?+m7)zwSzp~8d&@shkHF1TcIM?q?k?f&{Fc#?(dK-J_==T-im z^Hl+!_f^dRg*~}BgOAHE8X%7lyqt;ZI1YYZ1*fpcaIx(WvP#NjvROoZU$BG?5jWk# z+vzs~10$o;*z+j+L?T;7iM%nPxR#tNvt(g6+?n5OZzVHB)Y_UAZpJU*^4i?e`uytp zJaB$~8A%hWy>Jyb*Xn6+eCGRLM)l`@vM^z?n<1vBM04x0b%lykLlO7&!R%9?Xb_^GK)Q z0g14K0ht-WEPYii!1os4Aq&)H`%Xcwm&4Gav!;RiIRyoqc@9mrg88hx0c(M7I`S5;+tCZQNkrZQ^t2&;KlRsHSK#3!> z=ShFY)7h`V7Td0e6(7kfDY2R_*8+RE1cV3`KJVK@FhQ{$jJp~WgEGnsc6j~$lEiT_ zCGv;CdFrK!yDH8cqaZA?eLyj3mkl?4q#7yzvQKM5q{(g>TvhY+@QZz$yg|k7?!DmY z;)UPE$Ezl)H!Q8q&0NsFO^_qLrj}N?Nk>`Pi2v{RP~rEQ?2bZIGcg32jq7#$*)A6_ z_H9A)`P|#y<)79cJUs9}BD&&??0vW#+)cb!kt#L#4K}XWzg&;7lqK}emZ$=Fho6tT zTU-u=K3;EnLQx&8tnk73?Tc`4ca^diuCtd0P|p{SlbG z`m!)`Nb$;}a`g?#`EPZ!;B+5Lib-rM& zr#q|s+O3gBXf#pcw~5~YBH6#VK;MjfuKIB2WCFQc1!$DA+Imp<%e5PZ)l|dy&+2Cq z=~WGpuB^5B)G&@7=tP|4OX8*&XNBL6Hn{aA+2-b6{X_lEz~EBZDSC&b_!^LbKfK9s z_IfiBa8l7UOG;qddQ^0f>7vNeK@Sh54saV8k*D$Ejq5jusXIn*xQ2xO~8inYO|9f zCrn4Wv4K%+--A2?U9`mdpJ=_@_d69Akv|tk2EsOz2D#4xUxhfXJ`8=sT%Pt)c5FTW zV+ncHvfj%yD!`AJ0ghc`lwRO=Vue_pd&5vqtM&Bst~v|veLXqROIK2z1g=i_JU6A7tO7n$of-~4aAx4 z)F1ya4Y7v{xZ0gYEEOVp@w;EF>v(AI)>Rff5gae+&ZY-v7!WSKB0lejucRL@Rh`9k zsBh^UA6JP$f+u2z?6Oh#k?a*&9Vu@CaNtgc#vlv%LI0VpRNnZn`e{Ypu5)hFm31zY%*f41&b zrz6Wh6lEHM&v?%e**ge5nz<3oW#01M9#OtST;d9~OrVaxY`t;o1)j`6GQ#<7^p1Q$~N4=%&|lC+7#f0lSSZ0Ws;!Wf(dLPsZ#pK>s(TP zupHcrXFXvbjY!2g2mrg|BGq(R*6_bi`q3}Cm_H*Zj|HBr4CDX3c_z*6G^9$+K z*o-2t*`H{s**Ud2^%-nyH}%|QuaO5-IuQ3O3g)0s$A1@9MKr>zH)jLo7kPZm@BLau z4NfSFtGdD^#+hjS_AbFO_w8uE}?gf-^TqMG!`? zC6-9PAm{zLwruX&b69+sT#P13N_2fe;siJ(3=MZUV5sne|6i^;q3tw#AXK9918Y_^ z_wvkv$nDr_<9*|I0Mq45I~|Br@OAMb%WJ<;RWc`MUPFD}kyAoTZw2T*?x6%2*rCU# z57EWPR#VW8BG}#Fc83mQY@O8%l0U>(sjsh}otrBGbN9qNnf9%B<2^!dInPlgMVl|h z{%=1qm3*()GY~ zYA}iQJMRwA$Vu1uHh%GP#FFiC-m)T3qHn+mgN<7fY<(amqpcj|GAo7h@w{a5dk?X+ z*x?rg-5#17AWj9LATcj&o6f=7S{oBW!kQu8EN7I=#XAIx2M^<;IAUN1(UC{+x)VH> zcwqdPT}7EOjnUs_3Lr)Nbe!-}QVIfxsb}4LYs&f^1#Wh>UD#<>iRE!fBOw%Zhf(du<{t-f@kv((zNBb;kG_|9YqsekA51Ucr_1vQqTu0#pd+UzdLYAXP5hyN^3K20DjgoTmLMn@cas@0?s>E7* ztIY`U3bv!ZuG$c!kf-07V4t@W!+#zd@S6YZ*9)F}F;->Zo5pv+Y4HB|Nps!l;36R4 zi5k}cT*a>42zA#JdO+5Vo!>T9)2dk*h<)4(#4HJdcRwKWC*;vej z6ybyvege{CTc<7q=&(FPd_`O)Lj&@$xqtTlY^Dpdc`!C?iTS*3HJvf$DhiaT)9Xgx z@mqzdZdx+WFo_ksFD$3A*ES4b~nZRgisj_SFX)UhE(} zgkaZ_a$IdhdIWHJcJ?PigpI1&OswCjNu9-nK1&%rW)`MrW+ruJkvJv=S??drB1x^S z@1};9`Ke(*AvCwJW;HuHDZN|w#4p6sva>l))B|)P4jL+A(~y192&L26b7f2vD1@tj zgXlb+XdHYNU8iH~D>v);X;9--Mmm#40--pr-f=2?S8glBr^t)SJz zoAwa0IyFQ)4?HkRMJtF5o}u60VrS5Ef#IcL#|tY2%s}(@)i9Zf=F5Pm9|1EL)oiON z(p*c8#582=vrT;VOn(&< zqgcC?(1Rk@GCNGi+MAD8f&BIdU7KB>3_LG!Y_7m<_V+i1`*4DI=1RZ)g!J97d=YvCM$}=Jc~Ld23=jx!v~230l1|jTY*cvINT?RD0%~@9$t&kV zZy)}~%S=scdsI9*-;ED8Sx;;o#7a&i^J}G0;gfopON&76dY}?Lm3t5eYz5Q8oIU5P z9>1)r(dP(O1ol#M)CaXJKnp+L)I)ufM^jV&07B0By{pHu^`3K`MW^4T2;BVqe3h-W z2xnhzAQVC@g}N#qAOjFI-IGC{kAotn*JvhHGL z$YR#amt7A~tnmAzRq^kT6SXlCv}!i%q*&WXK5E1Gp+QS?b2%q*fwNO+@3B$*%)yW( z`NlR7iY*GwVI#R!DRk>^u~MfBXmkZ&YZMkDd^mcgU7QTp?-Ea8M=X>%D!@?#9y4u$ z(Deu_tQ3F{D#3rb8N^1kV0tY*nJbNHPMQq=l;JKZ7YQWov8tfGKywB`?8EzB!Hkp zE+2HxeQ#?H-u-tj6oPzim^`d`VBJ|$1T!JE|E%czS=Q!T(P`B#acgRbTUlOSTaM@` zZfGbggmG80(cx}7$?|zwT*>CYZ?u@I^trD%Pu93K2>pu;*xjY8Yd}n>Z^(7q!lNIq| zF(${&eJ|#1S)-WbZDc{sN(z1;Jp+2fH-CP5Ic9!YQjn0CiOFtyo}-DY!b(!7)pp4! zlz4u1wLElL`-jW7D;lLRSBjx4^XTY9E2hC>{+8xA^8@Lf(J?|OVoLD8^Jt#n@Na9`~B zm~+g*HN6@39Ts;-{xbnIuY&w1>N$pXyiilV1rvQOMTjbi>iD*-Ln|1lAn_$M{|ZX3 zqgDwcNKPCxeFa2U>eN;HcrnSiANmWlgSZ*uj01=LVa+rHcr{tYqq)$-B)vk@epXR2 zF$3A2pCr`SV47nE-v#H##sbWlII`I4OVh)vxxv)K+gSN(M(5hX(5J0Mzkm}K zj|I}*ulYBh1=Aj*q#Zh@*inkv1^QlgV;`*O`v~o|uri>z3xDTOV3-nl#bJOH`tw%I^xjwC_v7Og-pS4(KS$i{MHw8 zkCE<~7P;PEZSyE>Z||lw7g1xK6|_X*5K3o+qEtW*XtoO6Q`o~H?i(8|G2xBgxC*x1 z=S~l$|dr=O7p?PEC|jSLtG$x;smqJBigB97e~Qa zn}dWfGC9*qTa*nGF?T8k-p#9(ASH40sVtg`QJ8?!F&%yDsQ&)7zYF2AYF<7p67IM6 z(gjOzPrjW z1=GU_A`O_90|*3)8)vWE$lR4BuEZm5YRneY_-P!dEIK&-j6M8;ibbCXVS$6m&Xs14 z33UAZ^IL(^?d(K2B8Z9Yxw+M-E`z^F6z(m){tP7E&2gfW{){b?T$q1ktqf%T+{kk~ zZt>$(;goZ&o8Pvx54Y17VL65$oK}4w>&o%`Y&QJubYEA~0+mGKoypun#|KxNUt5PZ zsj0CNWo9`@a^aU{s6zRgi*AyhYTpk?V!*B;Ii6@|%3cU1grBMZJ23-Od%l?d$_-IH zW+7;p<@$*AqzIL1Dl2ZS*G%2JDJNe3k6Xp!Y43&KnUb&@<3{>boR-KpwPIFU`n?9qtrtNXAin3XBF$EToHx~wz-MFOMI#ZCZ+f4zQ@%v(~ z;p6zTeqK=Wy0U$iXe?P^r&ZHOjfvkjmDNo={0486etiGU1WbaH6X>|=BQ^jD@7RzD zeOclLI6u?+@EO>c6+)F^BKQyH??j?-jOD1vlZ>~zI%{g3b0ok5wvsm}r$a`jJrzvV zjbO`|VEcy5ptu#uB7NAEz3l~tIgrB@1eXwKq2Nnw_TbprC#il#p8A*qd(WdIK zQS+uM93%>?TS1;la0cbIUabH5?S7rov|<13GST^-@!>%-01^-H9;CCYk3E`^ybUBR z&K(ET4d-&aZDKU_(5RjB7C~aWsza#HuwqZH?HY=vrwMJ8HLe}1c6*jHRnMtt8%?sX zmE_10&*}aBLwn}|YNM39(xLxAtRu1f5_8BdzY zL>(GGM#Y03M|S{&B7@@1)vPHYep@hv|1+PBy)5t2+C_k9kX-s!CELFa%&^#r-wJmd7>>k&!aNijc>AE!oYsmxTK58|<5Na*CXxH-Um=7I$C- z<5)icXpTkyDqe5<<$3a3EHCJQ9L+O_3x4P?N1(S1&950x3@%83*iU8&q+_eKr9Ope zAhab1YGmmpn!C&|{N4ijFa6Td8O zWs0-7-4c*3RQ`Uc=l;~1!}Ptm`YJkw@L=5Qp(gY|@cwdjfHW)g{;=nU)X#KlC-#fy z>y|{UQ1fmL9Io*F=JWuG?)_rW2&s=F%pGdle5<3-yzIITtSL)oD2J7_WPV_*a5L5! z_~2Z@=SkoIN&oBjVcjok%lW8Pshlo*Z62&aS-@R1lTZ&%z2d*~#Nsc~4-?D&bo5D3 zihsU(JX3p=aGz9WxZvuc>slsvo6j^3`JK5l_bk7=Z0{4?l;aL!VhR2pJv3COiU8lP zes`aS&%cdY0XtkOQ#w7tO51TjJYlI?wa4;OYq znHn<>*v(!YIOJ6jvu9R=7P$;x9*2FbA#FP>5{Efz>q`8sfyc4sNYqkl5<+4fD8>R^ zEU5CB4V*;%_=EPAO)f40y)LW`O z%Bj)Co7u(2%pwn&ir2Gs>t~r)^E5AL0wDhg7Hbrn;=QOc)3! zMYL)Wh2d6c{$q4wVZ+^eXt4p_H)5L!7V9t!HjN`9)FnY8$3l!YR6*`wZa2wE z`9;xwb>?juS1o-M?T%aU>f^9oFZsS0asFXpZgyeLxBZ~H%9=o;0=-ow3ZCdPV}HdZ zyC`t_{$(r!**I!hQAhG~#B;i+oUv!b2CRVr(w>Y$-il`0eV*Rbq9?tKTD_QT4zWJd9LoR&jspuI2by)XuM? zky*)DA-AK5;yVRXdn=n};2qViQ7pzOxgcB6AE6FWiK~~jcWca-k4Cq#fZgczv5vd! zdCsxfbK$FAGUO*zUq(+-&pJ%f=8ZP`wx#fgP*rk;f$Pib4W9dQ%1g`?fN)KV5J9xG zrJ_cg#P7lHR==9hQfYcas)?zf$uZ}`)=S3WkJC-5m3MC?Kk=6ANGgaTDMne3oM31S zx{I>?w7^UW@G35zam+!{M3?-Udn=H8ysOeNntx-Xh(|pWHcf}lU807;34hHfF-(RY zLV}B=xR11;%2WpWnWJq#H#g@h#?rM@nO>>d(pakK1uEW^WfrKcAIuLg1Q|0~_Ibi& zJ`@JxnVN`ssSnKvO0Gzt$Ythd47G|!)4@J`k)@M%bgQG0+{%)08`{hYkyG=?EC2e? z9dQ-iKTJ2xo1LF`$-KFym&BshJ$S%~7(CoIhk$)pLNg?1il>1h8E%KfP%nrF)DyDx zG<&;@@IF5YIj{-EwhmQCDw{yAk{Cg)svyf}=0>W}UsinD+jx0rDd-lewoc23PU9&3 zv31vQ$g1xD-3}}W0OA5bh$$IWrG45{<}^P9(ar^G2hoix5E;hyuga-?nR6_d1oiGf z)0Crqb7Poo@}{iheKayC#ZfApE^Bm#)I62nUV3OQInxm1!e|ma$QveOLuPTsKI@LF ze4q5a%cuD4>q7cnW6%=7*rj2+0&GMV0ZVn523Do1GkhwG={&tk;+p$+fnfwPX49pq z&>Jp*IsRxs>`SRNLDghm>E9d7dIZoH6_;8~{@JPS$-Aa%y$JN<p~)t9K! z!ld2iqyh$wU9y@6K*Km-Pp zGrm%2E-{`FHy?7rh`=baC~LZpzP%-!Uk?$O!hAx1V#>8)WsX_>w|<;2GDK8tnu9zl zF9nB=D4MR8J!g`RV-#(!L^H)(K{bU&L}|u3D;&Z6GihZv8n}_>D_u{>oTlc&WLaW* zIs;gjUMGD9MY{N2Er$AhnhSUK8hEBf{x}zDK0Sg@64{_ij0XOi%KRxy61-(OCt!3($5!fzuKrarrj&%Y)P6N& z%?&x9AmobjH_}Bs^z%KFL2R+wbd0oj?J}!>WiiKU#5Z~gf@})NS;qCh0Q#q9Gl{2J zEI_#_uUT+q=0UueaU}jXA;!jT^bn=!?#x-$oxAWbXJ%wq%tC!#do??rF%*1>8Bsyw z0X=JNmplq?*?ldmlGWay!9XeMqzG$~jn_i&;X?JCczWfe-4pWRO{%fo2@dSsv6|28dM-+dz1@k_nD|k?BLMBuKFwjd15+d`YCyReER}R(il#;M0t198}R}T z=Be)2KxuoAiF8hz#zo`Emv_I1-Jt{mNv_#>fEJ9}mogh**;`IWge8{MHb$aS0}iUP z0(PZxS!gtfU|m_z))N`r1QHFh#{DOaeiAV|BvY+!vbF34$%ucD z9+Q4}KHPP(iU~cp>`Vy#8T=3vys5`r&foAlyfUTiR6W}5+&kZ7@v^bW?=va}r%b<4-&&?c*k4_@1rOBm|XhsX3?fq4c$4YbKt0`(-A8_2o>ezl9`ho>`#tQS1(N9Y+3!56P@nB z1&F4Ny&ey+5OVhF?ye!J$GY^`hT&wglyRXkC(CJ>du7E>Rixr zvoGQ)ENX)aGIc&HXtubGm@oys>NJVb*h4NM!MsFaN(jPtRGEni0T`HqA8?C9&gZE8 zHg3jI(S~_3{61TYa?ED73aG7-)%S&p|8xj$%eKe&G{9jV^ zls~#))UUwBNYcdb%2l1`%PB_)4X3~eixBNXfW6QlNj#3itlgB1G-9}2B1ezA-O8=; z=a|$(f}lNUsLfyMku_rBPh?YW;!v*q-)JYkeQjl!?%PL~7~e#>GEIZw9%>rk85;i? zM#Bub=q(_HYkC*rIjH!L1S2^kI7h-dq7Dj%SF_F-s*VJnLzN4gSvX@VCp z>2k9_rc+}qfvTunlyiUl@437eX@!eo22=@n7IG31=*mDPbRb9uYZDVneL`mK`a{x> zM>ytTEy zu7t+g_L7e=*_51`Y*IKLG7SAAT@~_c@vD9TF5~F*#&rBxN5po7omm-%IQ(NH$%PXp zzw(@$_bMcRuQTN*+A;FQt6Pv!He>C}-7hLkE;()GCpj#q-vn5*Mt2SBD;LjO{PuEm zAe$F@gJ;{!ff*f!zo=@GbXbRjy>-$#6WZFyN)hqeQROnzL*q&@vM#PP@ux^lVns`N z35Ki9ilRAk6H4D%CovY5(4!d{t1EJZp=VhHeGeK^>;!k{a< zvLD@gzq2#`Ftt*IOlNOF36CgBgU7`F8xe1}w>Y%?{nvn^ckz-7A98RYQur`OUT+3x zP&pLZ0$wg7o{lTCg8Quf)t)TPoo$Xsqh3fV2P?E`I!-qMGgG`(z*5qvj9}%mgvqYZ zcJ7R`&cDGzBokddO264AjQ|`t5+*X1A;GYCNswyM#|$+f4WtBm*lLLy1&4&90hv*! zUX}e&ro_GFUNPMf6%nC39AQK6iF;N zU01W+OKPnG?lfZ_DC&W4H*D3vx47))D8J2NanOI8qf?aD?bhgpZDi!CKI5RGWnw?egvnIC zuSH9OW=F7ZGYlgqV+dnRgN5%73x!UI3qf)XDITMtlEh2_%8R@~Xfft=1pl_}w|1{C zq#&?e2q(})>UIi#6eFq<10Lq}O2K0^_^?LVIbx+v$`g_rvj|p5#T3Y}NP{;5{7Pjm z8U-~MG2QN&I_vzY?I#R&AFkR&D}pebkIN+D9tsQf(opyxeE9zT^2x>|amuNrx?m9{ z5)IM;apIot7=#!^9)Q6Mzw~EGV-6_%&$F?A`y!P)IoLuD{~AX|9tvNF8yT|MRn{BWLxIz{ijR~E%*j3JlE+jMp4VQFF~n^nHJ$3Cv6t)VS{w>xnTf37DD zHj(6;{AvB88YD}CX#ZE!Kd^O)dGN3a@I5twI|Skbw#WQ(m?=JtqBKnFGK$^*eu134 zUJHL%>TzXnZDaG0N*ohi#fe%w>Zt}~INEL*7x5jw2)zDzRkZA%;=kw|b%PGSy~Y0m zvAe{;!Akakw>ge#8^MA;G8sC)|8jlU7+Q_lSiiVl$y@RG9 zM;FJ0i`bSYF-SJ~oSDaNddn4~V$2qGs?OF9@rVDpLF=BdEhcbX!&aP?{7;i!cVplV zpQ#kU=m<_nLGji|As|&1k->aeH+_H|)LmCNh#5l9id;}geHI-Y^5>&kbnr6 zipDgSjTxyX+Q@dZnXK}&6L8uw?;~O3-;G-D60W2 z<5kX(#iFKYj!bBaW@PdFNF&Csu<4ab5m&SirV^)UJMRSfPlyR7NXcS)-hq@Q_FOVv zSU9 z_JfAvtUv4!^Q2i;sN2z_jlfTU&h1|!iw_X9&Bu!}rd`Z4T-ihaEk)-~1TBte?Xb|j zgD;TysH;7~;l11^>NM5dXdh|35^>uv?SdR*T%4wC9Ajd-2&~vNW$5aELJ!mDVon=5P0}68b&to!a>}kc=0P-` zLFzam#WY7Wlaa9D0UT{tm?Dyf|1|B^fLp}aaE`B#m}LW&%gwa&&chs|jlnL%j;i%= zr;;4NomWA)!o_AwUisPScj+f^6HvHnl0^UO6|Mu$it#^k3d^6mbI@J%Wx9VbaM zB^dcZR_FmHS^A!tWEgP~2c%@|{1x1yA3?tW{hObE<@O@eA{g>lY6A!drE8#wnyCJX z5AUE4@Z(_xdt|}egv-qmPc?Hynnix<-OsVX)0D;%p&xR`YHW6*oWj|Th%2%n6Z_E& z!Ur~^5SXY%|A1eUYj-kBV89%NQDy4=+sGI{9wIy9g$&LhO;W>-%EVnX6*fCBMQi@@1ThSah12M71Y{8!&YCM8Y zRG0hUfn!_DHUedWMo7R%RJ;z8h{`~@1X{kM{S2RdksKdGbJj?+f(&}LDP959lAne$`eeW-=6g~anB+O4c0{;+BEoAamsAItEP(c3?BaA z$XPTN$P$6f!thk&;+_$vm6|&}JpA6^J+>+#XE9-LJ>S-MXe7qkfRi?^x=eEh5B3c8 zZYvGZ;s9?Gs#ZykUhE+DAP5~@N&@OB93suIV*FiG1S+^N`xU70N`>bk7Jh9$YDMGw zpf9*#St0@(@)V0)VSiv(8uA;@FPWyK5n(w16ThozhB&q|)6j4N}rbNXMePOG5e`%in&_`R{%9hx5hj za!~N)#jO9u{8R`< zB;}jAEELB8!xZXYLyM+JPy={VBniVb!BF*hL{hM~h-j?SpY?v}fE(4`hp~fMr*)Zb zz5%xc=K;RfPDjkJ0W3Fl`RCK9VtA?rTnEMu1jM~4y>*z;MP?4t<06Wa)XIh?Dqw)I zEWV#7ySyBeC$e8Q0_U6D z*Um(52zqI)-$fvbQHDqK{m*Eg)0UE;U#s^3|@@QPSoJk*p|vPjP`? z()4%C|7ubf&KhbbySpAd5%GqA!Qn+1(-oZ@z}!xA{Uwo7@U*mKWTDNtaQg&Oz3gNM{XL`8b52O^85+sq6&0 z<06>P@0I+(3c{C}FHG-DM}u0eaVQku|E9Gm9nptO(?4(O)~pRzO1?abI=04GRq%HK zUM@ryw>v~I*)4EF1Pr=|wv029B5X3e{eD2I&Kr%yL_>qByeEkYbHaF+e~>=oFhpN%nYZEqs&A(CuBo1 ztQZwLxB7Gh!-%>EIdO)>3FGr_#r7U~4=vF}1je8Ov@U zBBH6_=%{aEB4InrNnBL?@-4Cjtsj)Fu>5_&C|B|v(u*GBFE~V*-bYQ_nSPYPkInj=y1DHI+|U(8Pf>$ep45bPLjaS;cr~b1!)ykYq*~F znhNER;mOEzHC8O)xBkU{340cBcZN@}?Pr++JSs*q8a!?f>q}W(vK8ys5o%jna$CIB zoO!}`PFA}dt+N?jvVSkkhvO)-dksj%XhQ9-9^AJ$*a^_U=m2+nD}jvRC#ON?!XK_v zI?s{1>h0vb%xA%dg4Q__h)9T|1%rsQuii)|=bPd@MysUy>1CKWRu0M2xiMqN^d}&3 zT8H#Ke%)Iz<3qw<^EcqV!9ca-$Hm0s4mFcDgM*^DseiQVS!rC`31jCB=X&KvxK1jE zQQd>1st8QO<})2|H$mzBr^Aw~h3_d{ohC!y*fri9?Aae5NW%tb^UHlEcg7aQnno&) zDk_emN7y}~GrUawV6+#r3);*{Hq1=rxw1<~&wjsGS~;>wNqhljoPV4IGT|YZk@Yn8 za;#mrgnjxoNEoF?rw~(Id5|43QZX`eR6)q9S6^GN`i+y)yxCdoeL2M;`ZG2bZQc6X zI=+Uwaw|K#;{)4cY4`$n-w?em`DoH0PtH_PA&NB>qRo<0{*legfHx+2Acv%K|JVC_e09YYGjP<-*LUjJ%U|xYYZVQ)Y#4$=RJN_Xp;b|JQrdvzBA(;+>_IyL=~y{mPNWzlQ_FAaS?&2BRH8PIr=^!FVKsqWI(65xy*vb5jQL+Xig;#L)M*>hVixG zSQOjrQ;=qrhoZ05$G-@sOEG?C$=d56YYOdf3?MPXNYdfzmZ>+xk;su>K6XW=Uqvsm zTtp;FFdaD4`7BL2RhygZy_)k@L~bH z*M(cv+zQSEtLsRP4v~S=s#K|scsC%+QH zj^S367-;|*HUzmFvW8++LAB>piB1F&+v_%uu|W5wd5>`v!lt8-?v~;+I{mIhPGaL{ zVv7sSID@Y4x?A4CGumt^e@4E8VL=Z4W~a@;BtACoY*k7>6k=qQ$4hMv4XQPFpH14t z3_*At3dB&mE30mv^d+t}+A3EWLnS)LztmEcfKrQzbYF)TIQCnl*G!O1u9%2k;-@{1 zlv2=5tA!$_u-28l{M9^$=Q2pIJk29II~}s9X>p*MAicLRW$cKfv4(I&9VqOb zGJ1T9p}#>NcYL(-{&;Yeg(uU7cCUx z5F-w`jy1^iJB#@4kjY^=e31*XSmyM|w7(c~RCMtiR`oX6wRTbjBQIt9Fu>F> zsC<0tuEHG~s1{I@H76#TRW>B*GTracWg_P(`r50WRg>30C!3BjzI3*ktU`Qz`h$@G z?XxCbNTrp2d}Wb8l=J(W?i1Y6){~#0;qg}_HWbWn6=r&Fb%s#JUHPdXOgw_bmdC=ObcB()uqqFd_g(WreAQyB#Ugm?#?~ zKjN<;22h$Ybu_vu+CrW%RV=&V9lLTQB|j5y`S z`XpbIVAhUgLz2kh<*dixMuX*utd`8@}cbsjzl(9Q0atzn*u4OK)I2P+MQ*jtpdSDzoReilPBy#~t*6`y>I z(B41?2{8?w1?QM7EWauzTT`YDGoPW^$+nz~$zDxBips}!|9voY_is;fNNF-tc>YyZ z;>UIoo%>|l)hVk+#i-^US}4`Y5=P?_4D!Kx8`~hJ=NpZI^8x)=7^&pX7SZx?#9}^8 zc!>s~-}Zls+BQ~GyU?BB_d5DK1H4SSLRj}$+NcJx#GA)+a`7j0pLdoF~1e42u$i|q$P`vsaWGBc36+z&<&`mv??Ol>f&IAv5Ku8XD zRwac}slTzs}ax>hf#~0opgWaEVi6 z({d$9o>)C@J?dI%MRuWVC{?aB6?vLw^Ke0Z(qAy)NfnD}@1x2vAQHjBGhT~>>9S`5 zH}IE~HDd?V%X1BmPzwaj_i%JMrl35ukD}msh6zEcj=~eb0GslB%hS%K)2)lf%hK@G zlb@Sf3Rd(4+8IOZBm{XBksvzTA(M~%JH&|HxUu#t7?VuXKrf_5lEy?b74VkiDaAkI zF#ciMd50;mP=!U)%#@Gg^hN07Y^ce@*|-M9S?p?8hz!^ACTq8ySG#*=$PUGF_oeAk zwvUssjE*2DeUR4 z1C<#d_Tq{|9QTTn96Tpd*}3FU-EKJbBBl}gXjYheH8jAT>0tikm_9S;#v%X2FkTWf z$@<`naY6#?q=RqFwiw+lwLD>Wlj*3Kd*=7mstDgxXe=fj{Jj@%NW{znXd4x3q_%A) z8AMU=JmZmK-f$)){H&QPA7x8?Q4`_&r)_}lYQY)Xu-whfZ62MQUknxDR>Ji7ap7_G zcI*hcFJ22|Lzl;o7XKL6dS5nfXVe@uo%}=}?hwRdnJ**>tEZ{xRw8fAkoqqHB~HwF zU#2(4J2)Iehfb(HnAgoq-4`^3anRKTxShrdo5E&=)Kkhs-?W6Gf#T*zbu@WhD&9`F zDR#`qq)JO8WMsk)!J8e9XuBf8`$%VfePMoL344#O(7{1vz!~w_M$iy0on2C5E!*`( zHZ>L6?%aFD7+G?&M%3=l^W--t_{ zSttlqsJ(Q8b=t|JDWUEsh_m^qE6!<72h!L3+}@m^HD_{WVaUr;*M|n~@RNqVMTj>I zF-@%_6oBHa%+pl&0Oxe%sPK%ApHE9e?FDG6Y{nVxL1MOB3tC$#_z3lq!8Z9S-h5oa znC>!PH?urFw-Pr?0eu&CJxyQe@iw6_kRHcvR=QKTefl zl(lpAoYy?k29y`V!Y2w>Erf%s1MJWp8L&n*MeT5YGCE81!@tkUELE?Jt<$k&W3r)C zdZzu|;gamPwtW6s-b)4oq0!De}mYVP4OddRrTd#gT%>gr<@A-z^?Bon_^f27|m3ZuP z;F$)TqzuEflt+XEeD+YIQ{~@@I16 z=-?NuP!pvO2Zcne>`~6&=<>L-NM_Jh((%aBq$Ncb%)+c-#9!aK)=6Ha(fz2YscC8= z@sa5Y&5aSiac^%q3GKor(S_cR|A~1#ZpZ%d_a}bWzO#bQLp&I99Bu#mnIn>z3n3X4 z>n=rF&EU)846Z{SV`3|qh4eL1Xm)tqgb`reh)f|g+lyzZYMeRtY;BvV20uo8v^ZNIknk|e$ zWClf_&EU<)W^F-#!rPE}T`U9s`DtTtD64wHKvL4P*@;38k&Q1h(PEdgU?vmmz7v&7 z)NX$3H?9#FP~7Ne;zEL5=DYLg)M@l+GeeqTP}oGo3*Q1vy~QRsyhY-9j1~&sQm^rq zze`QwF|m?RFAMSGSvp`*uAlw>%^xl$E$PFm;1Yx%P8Q7+US?<55YbZ>93&JZ9vdLt9Cw6tXZ&Y{5RTvj00 zeW4qvv+?;JaTutltr4gZ53WSMfGyKo-C~Rzi+U%<*pE{A#FtVz#bXxYzkiZL)p!n! z{q1DUyS<@RjyWW)cK(frO!e=*7L@4p$UF&hik`lUHH5$qubg6#hEskCds_eP9pZX8 z?7kfZqIm}0DCDZ_XetDM%l0@;W2e=$L#FE)M@&N%BDO3U1r^01?MN1J4i3lS>lBz z*GZUma5NM$5jDxVhEaM6>5kCq@nR6x3*OFy+MyMH)uyeBNsWAX@D!97yez+pjFd4PoW zcUY#z{rFW%x#_x%e}SMUPb(x&ep4$ zeeVnt7FsjAIJo#~%*h`qOQERfKrmZWkc0FnjA}2)AEYRi@5rmEL5nlze-6pbBi=AZm|b-!RdLbGKDQ>2vTY&iVuJfKn`0M2L;nduNgG!#7UvgAA7&Vl zw%TS`_qhiO(Z^3M3YPV8@4;*K{4%&3r0z_h#-Ugfu>Sm|^2l#^%a`!{myxZ`k>VZw zP60Oz5Z&)z8bf6@zu-V5l<%^}52#Hr)>DiQF=PYF8Nn_~`$EIUXrRDBOcpFfAXC)w z1Wy~o?403NO5Y(kwU|-Di`2#?D-o+>4-UeU947S|oT>sG96_wdlU=ecTF| zw<$F$JDKGm21ktwS7R~0ND>_F=LjP&|AHdx-#miJ>Wi+ulK;?A#`;n{hCc%o(suxB z!04`=RO0%b&$0LN0AnVQw-ETl3n=#{Ovs)3X}%hMJmt}l0CWg?MVWU)mJRdPzoPo4 zr)G4ItM-?|kf#6zM|wTzwS3mrf>D_${{117Zrq;auLX%;_PO*}V*SVmNCJ;(oDlYQ zr|~r}pECP?-WxUf$LY7T@7aWIvQS7gr6{#2<)lIZGz|bR2TpcsrJDJNM24^ZdF?V& zstXJ;u+L*G#X=so62htd9J7jpwe=^I&0k6(lhBD~Tp>LE0#vv>9VdPtYQl@Z__8~p zmuSD75Y6cHuPguu`me@gjfi<^v^Hr7(c~LugMkR3=21*982csq# zoq@0ew#ASvsfE!$GtzR8k0?K&P4N_E&jd%#(!yv%{C~5#d!5DdKyEzy0aPLDITeVa zU<>xR@=3;$qSd^tImI79EnE@(JOSq*3bC(qU}oN23X|L)6jpjWPjU z0?E(`yjn;#IA&z2jc+b| zFH->#pw|VM9~gzcGG{9w=roav5xqx9tkl|-8ue|Z;3y(qk0Bg24T!cx*SRGHylToX z&}eh?B#gKuxqSH53zBPgX#K-}CW&(`hvrypgtF04YZ4c52v1XopSO}B4@vSUE2jOH zH&=@IMNEd>Lr7e3Rkr*aQN4%PL{sujc~wkeZOF1oHduQX!HEzA<@*Gq%2ns*vDMVZ zMAAO!7}~7C$@o6Z}FmSV%Kae*6a>Q>A#?@`oaQ4(Kh-p3L4!CmeO;)WFr(}mg~#*UmvDyWS44XkAp2R?eq8B^Txc2cs;ZUG{kFu>H{rInwtA;mYC1k@Zz=R$^TCq{C@2dQ zwj3cR`5Y*0ztH%=R77O#qG_i#3>Z`cu653U5#az58Lg+iWCqar5z%#wL^Fug{Y2*0 zk6U$jJxijg$)iK}*mtjN-s+xQT9_cI!zXr#b$mBR^-IM7v3-+#@N>R+KvY zI+55n!Fm#hgPJ!zo|TePI@N{@%5xbspT(~yvN`%H^G4~$EI)Q(Gh}PrcT~dI%B=Ge z5VW*zpL#||kqf=VAj8F%$&cr+0h^plW{`BBej;!pq%YSIIUx?wmdl>hYPJ5QB2l2FwokuR0BO>>eFeRvIN1&V>`Q0+LvUdN?9lj9u@j*Po=` z@qgPCX8jV}I$}nE%mXcbqf6}=cKY5-`~Yvec4Cb`IFzg~Vbe?WZ9q^V(;at)GP7%9 z>rDYY#%^CJTuh;b!|&YCwdRDSll)&=P10<;$q@EeNguV*I&>l&7mV>U`!ti-44%t} zsT}l#zrnp^GG|mLjCsEGRov2yG}Kb~8&XXKTz3wlSO%|hak1d)P7kwDQAH1t$lvdK zB%=Lw#Xm$}oaVpf=okW#_Ifmh$TV@FBdAF-g`%ffb%H|QArd?qw_HPRZ!iskQMK&B zR0mopu89CnOfP13x6tqt5>`74S_!gnB!q5jRmOM+_T+-?~J7p}GVS()x= z*12rKufSyw(v}FgMF=5E#Lx?Fgg!n5ccFv)U47bCn!bq|5~oyBJkr3z@= z8`=Zi5gyBt+9+P!yvzTS{f3cc?#j%(SG7GDI*dFUO3F}RjQXhej%s^Y~m z1O=tLL#Y_!pQ{P)m(_$nn#J=?tW{0*(#DvXNJg zM1nMZ9f5g7J?mj~8XetqqPpYlT!WQ%ykrb7%AS*KN2J#pR&n&F0r0 zz?2p8aB8E8lOp1ZxeRa#`?J<-`d8a&IwW`$a49DXaS`-k36bsK#0abK(zDMG;93+8 z)YfCtOL()Gn-cij1bd5yTA!AD$^VpIDR=@33NSt%5~LKWgjhhSP-bIXH_m zg`5Ge)Ok*|-|y|$l7<9VKs0KR8?L^*BXs+lQretPiTuWf@IEJLK^wddw;Re!J!3a0CqezxyHw|`1XPKhH%0kyLCzt1Nff4KX7mjzK zuzv`+z@03O2iq@Sw}-~ZZ%ebHze9?tej}e-Olz>bB=V$a9zmOY1baj2bo%uM^{=nc$Z~&BMz$>+t?!Huv ze}PM6nuCJEeKPY$`C>VHKDnJF) z1wBI!8%Dv>H0wjwos;Sk9$qno`0C5{*8X<|NyZQuY6SYB-RQv=CD(1yRgYj2JROy- zT^ZkpKbaf`^%$(VZ9oLXuM>R-h(J9oKi+5F0J`t{D>0XFYdaY!u_J>*jGRF0D_Z4A zb$mJ*u5X@eg1Pisvbhk!6l#=TpD=JKKsy%vHIF0>;#Pp$!#~i06$X#DJ>*8QHoz&% zd;J`>n=wq`Egsh^ELX<>CO4^cUaPoI8D4wL1e2|o^ZTGJmk{VR%r~=wb^%6yE529!q;0U}|Q8_uq2t~-f=+mj)MXUm=A zrdWWm$5=iD_9HL=r+~fw5Ih_fWJO%Li^F4pQUm8tTQQ_-SJ2_O#a_Lw&e~Jr)kmCM zEM#(*?VBt_g1SPGK#l3Mcrv}Zgj#Cwi)gCa zPYUG(_CHR0Yd%hdj&clt5by2Kjgcz9Q7q#mp~ zVMzCMATKxhlpMJt%hxJA zD455RAEh5>Z2$GL@NpNAJHsTWpNx4U9ftx0(P-kS(Ey3_XdZLNY!0F$1#fRCt1u@& zDxsz=ZwGM?abTmQj|$f#|H6;W+es~rFsE)@g}W_*c3iSet&(CmqSj9^I!wP6}zY|)a85i+;A(p0sEB=UJS>&rX&9s%72TKgIfu#kBIaZtEVP|oFo1|J_W(Eqy z{%bi78|Q;|F1hOjG&Eb8E?7>V33<9HT#~8E@(-dzs-;%k%uRX%lH!L?6)MGJ-fawR zyZZnW@`bhzzqPnP9!Bc<&}*2jtn)Va$-neeojGv{A7^7Jie z;-s@-oBd&!PawCI$L|zX;;&Tb6U?}MZGxDk!>GDq;mcWgj~B`oCuL!lKJw8%*VcFA zSWV)8QP=;cTteUfCYK=N5Pyqv9b=oGp3bCAaejOPt!6Yx29-A;mN+Ou+KRaj4aO(x`P0-WD&c|*FtL5;|sEB>cW6&v>>-j%57##nH2E(7f>pJ1wNCHhC zm`k&k9Q!B)%?FjV&{znP3oHLZmme+zus@nkx1hIQ#4l&MoC&zk`OHYPU(Ty-Ka{l< zt{0eO2)Rx6!yJlp=55+L1xNKAH%$B<+4bw`EV z5?m8Blxo_h5$wUARG&MMr=SA&-Cq zcIJ|88KA2uJU3#^dm}rG9q!?vfownBcAxbU2d3T`2TV{YbL>^XHAtw3q7$+GpIp z7Xk#ZDqQiQ=y*ga!O5uIGmMmKzlauzpLd6SO1A|a;Q?GOw!PB?1T1QDuAU5d8XE(M z33FRO?75F ztj(HFv3}72*%CN2XBZBHmT?kDE#$m+^LmOqc}#ekUL5~U-KHMPr^$fGBqu8DT_HnG zM1yWe#_&$-Hy~`ax*q)CBLDcYfY=9c1e53PQ#IQ$zaPK(Y!5X>uwlrrjgP$w=bLt4 zA$0)}IMvei{Zy9%Tg%~h!au2c9QH?T+uu`Gb1$Jjg`2;=UahtIlmWGSdk8bW+FOvd z)ROK@DA?H*OudOzMvP!j)f_;el^|tE#}}i_3c>Y@=UDveW_UGR`0<*P{bxVi#jnoD zy~Pu!vGPG#t%yzo)gp;kW97;Uk2kTGUJc9 zIVZWXCk`H>b1O{Sbgg+mIVF(^8P^Emt8~~fNm%Q-ZU`4kRC)R0>*n^HUjMpwEq&Rs z!HQ^FIzMwzH)Cv#Y}zwKXbqBn3BpNOh`0Llb7kx09&YCBW9HX%_tUw;yY@eA_n9{A zH?tX3A6GvU;YbG-^mdT0k=uO{vx=|^kD`cTeY@EgA0RuW#3;_j^tMclvkl?&y_+w& znwrK)M%6-(rzi?Jhv41mgx1|t+4Et8Hm3p=^YfiC03OsTY$4+(a8-tjfY@X)-ITF5 z516twG#ggwT3>`mswG*MU_JUxJd_sme^-7bP+TmjtCQoSC@0rrDSp4(U^(i0R?N6x z$|`X^CMMA~YTs0G*+=O|PAjeWdy>8?<6otSzDM3XGB*^R9BK+6#&Q5~Ds4sp+8m|_ zvYJ`&k+8`Y3ihH8YTw>JSwk>~2AdjkAw7k^5X)FQ8KZSg*tcS4aHXz*tUm>{210XN ze*je`z-R!oXtory;bU)}ti9`kY9pzsfdQ=>T|~zKN0`W$;foPBWJi^NhGOl!w)wX@ z2em-p)9|`{13)$k)YDl8M?{VzAN&!qaP&IDvjcO!TC-I2-Xs9H29@hZENH;{99?fe zp7crNi2WJjaiF2i1Nyj@p#ikvHrlSrE3M2$2qPsb2&OVp1-Nnn@VH_zzl&9)pUy?# zkhSJ@@?T3945OGwkIxA0@|S#e>8wBM-Ml>;Zz{`36FtbjI@uh}9;jq9tK_Xk#m8R3^r zqdr*nmvzOKa69b^3+uatuP^Gb(X1^kEzO_zYqFZ&{XN|QB)R7`?}onyX zQZ4|)G%`pR&P@Q8SdthflzD>>w0k|VfAeUFi^88)>frCDvT7U3Sm0>j^h{3>fRow1 z^Djq#u3%`oji@sr<*Uidm+leGwBss9oQs~nVOu}4{)e97V_7fo^fzhaCd1g>25tWdais{0iB)BHRH24b=-DEE;{~H4!v1DXvhekG z!502^Iq$87Ps@`uFJCEDC5}5I0UZg*U@sbRB8qaB&)cU^=5V)Krnd~ap*dOepo{?m z3B3D+57FXZwG+gdiUcY4->M5&wm;mQ!_8XJzKh4wGKpo=`KU!^4xSe z6C)?}!eGI3J6&ORoJlY2j((QH@A0r8=Ws~|hx-146H&8m5pehdk-&#piaO%v$sLw3 z*yuu)TxX-%6FfX^Whw)-W}V$E9JD8<%#%|QCjp482S(ihl{4@3ip>_$g z|Dgl}AZ|y&&{BFs&@^O*vV&GP>M107FP>jn0hyr*w?Fg#Y?zI9o&l?Afer?8Cb3GJ zI7L6}r0Wyd$z6S<8mu{K^om|8Z=&h2zv4T96+zWra(zzHHNV|LbG?^oU_(~ZZ~tva zW|0**SXX>5i3khuV&0Eoj6^XQ6;>SX76ZslPdFi{JdCrZyHeSr*FS;g8xWg60cQ`@ zhMY4MISsQkgAg49NpLf(AjxfQ;BloNyWZ8M-0IN7w)gB8d;3AAo=I7(;ZX-ing_u9 zFS(4G?=d<8HvXB(Npj!6t8@y{+Ex^n09-4u=%Qs{06p!as(hJ1(>UN0p?#|UK*dc# zK>^T@uUuFsKp7Pj6ni3wI9^q)H1AhS=;@^R-tWTG-H<=s`G|-NlF{v=Jh4v)byu3?ONNf3y_5p-P1r)$8ga z>LgkMW%bq}iMz(LA#vZ3m1mW12(YjS@zu+L6p4 zOOf040*KGrAMcNs-Jo`RR}=tn(y-`z3nDOnpXFQrSyMzNpjza$f7np{Jo90)kh^VU zrp*j%iFA+Q+u)EX)JIW54T?ULf{_6-XInu1ew)!UZ=eZ*&O`Op#Se!9m_RA&b%G9v z5K6ilv(~`QKxffi=MY#pX)D%hSn^60So-MQ!*X-eTb-+*4z&e9{vT(T2XhJ(o)&Aa zC0ZCaCH&`hQ6w9Lzd+|>MHX$(=W1c<8Np<{x`=aOy4!+>t&teoUc~_NlwWrj&!p$> z=2u4@VV?*#DxbZkr20#cSVxlyRFsz9e*S6I1Fpe_>v%U+hVRjZhEq$Q;#!80>{Hy3;ukrfpc2NJ$hJU&}Zlr&QRpWc+2zTw7aoIS=^K{jmKZZ$ebK8)un z=}DpNOZxEM{JB?V?_w<3zR<%WQnfO>>la;>I~jf#yyYFgc@IIC z6mCELrIqcRAGD6xIX#znOJxg7tON>@l=o3VfYSoJNZaLnX{uc_^T^CUnHK?fSJ#>8 z={A5B1iz`3+kd?Xr{{8k*rTqZb%W%spNOEDPVgN>zr!Ojxy8E!bNERuf-!|L%uWA_ zePBRe`{UL`rmy$q0b{1u_wqW|$)eb| znPcX_nKOnXV44C%NcE0`l#k6%SynzpA?$|8ZmzCwE?IRG0;09JK(D6UuqkeDE;mLLgbWRf&wRDU?OP7L zF6Wlp?=RaP3+VmpJb`-3avGlvKt(t(+SQKLT1`0E=^p{v`&FIE8%L=v4py;!+RVS* zG{Dfr9JO58|LC{>@WJYXo!IH*g!{ZzAG7&>5Qkf1c}zQVv7_rPAiSG8^-vBfW%kj+ z`|?3Ku2RX`%F4>#-Wbf4=Ey}rrXJ1j1o3WELX_V6O!D-LM#2N$g_&njUo)(%) zBW&obeDlw?Q}?EhnZU8VE7IgNCAU?LjCyPEongOj{HSEPb$PLLY~GJJx`q+@Q`$NiK$Ftk3 zMFo7mA{DthVmMQlC))lg0RaIZ2EGGuTHt{)U$-PZw}yNTuT{kSp5t4~TKqCQ(tyd= zCdtWedbQBGP0uT@iHl*IuGEOD0WTrsCQ$IcoCJww$is!?=6q{7;u-saX#1a6A0ChE zkMfGQH;P9_)LF)J3}=d6ZpZ|f0MV+!3d)Bh=;h$Y2Upmyb?NYK_laYEi*eZ^_jZL? z4Px^s#PES%bg4X8TAZG)cbR+5VZY3mMr>zg71p<2tlhkyI5Vo>miBB6j&JhWNHE+) zQq8duZV~6iq0f30Lj+NK)8k=t^G$DX?>wYP{F$9i)TmW5fc&XNy!R&+CSfSLCXHoD zVIc`G$;>qqvh3ymMJj{YYm{?SKp3Xa>8YvvxkdKkZI9r#{Ik}{Sw6f{rIHUFa;=Kd zcrJRQHT{}_M|(m7#O`5xP~D-)(Bk?o=fy9ZVX>cByJz1Sjyc^UT8%bW#(^x^~ z6-&-UjJo}Ef3LGy#V$i;bJph?rwC43kRV*HD4Wh%6lHa%3PdYkQOu0SbY>-gqSQtp=2?AQ@;n& zGFNu)ii+bJ#h_$EC?YkN! zU5%2_w-naPv`8Sl`Lf^!^6YF&_X=+;4Gs3I0O3Urx?&eICI;U%=-vLGc>H3#3-YdwFKM zv->Xl8}ebtmJT(7aV18$v0&Fp1tN3Cp&VbR2IS{Q2HgFC zBqNUYyPy!t9INe-^vQf$wwFPJSe6>UcQQJ(sRpIQNxqEoAUx5A3t*QK5f+{jK~!l;6Z;W{gJ_KY)!%QXIz{4%d#cdA;YS4b=#>3{1*WfI}wexL@REq%s8_E#S8 zWJtNiBMd-;gEQ^v<0u&k2gE|P@-XA`YK1rd&gC!a0#4D2tH&A<97~Vpmv_{VY+-6G z_>Oh3IpN^gC1Ky(_%iC;_C))HS9Ag$Zt2aV?jZP2^O=P;OQKg(sm(;ZhVNtB?fV=Q z*W#jQh;XV^BRWVd+VH2`CQ28J{G6O8z-v;8dDZ5&-t*YZjLTx~frT!X((P_Zv@H66 z?bpJhZJ675(0ObM8Rz1u-u&@Nmft#`Y)N%>w4t;VA5V5Z;GvN4I`J;zv`e_zxEMTI zw6n8Q`I>&Qc4^cVHU`jzARJfDZ!z|~FWdZOg^LN1v0J4_=j@_^yeWX*_L8Xp24&|* zsH^Km6lPRiHpJ(}{4{Ci1b0hIODb%?xNs{&{^&64@ak|A=twB^IE_TwMTNg8RdJCU ztszx)ca3HJ1Pm5tV-e8+%r<#G6H@+dB({yR&aUYL4NoTJnsW1~Ap0)L73c7o7#hjy zH3F<%fikB#co=99m&Bu+<1guqoVb8Hk~wkRUN%d-R3lk6!9D<3P8)yt*?3c z|7)MlZVxG+pWQLfrukXnYWX1QYu2fr^IO^T3=zJD3Q(%UgJ~$8bGX#lEuX6Y-6W}a z7rEmV;3}ACfd@;GUh{3QC8|OyhC<}ohvY={XgRt%ditoCLNWl1^Y&gpZ6p;={`03m z7)~isG{&uNZO(KFmE#~$?36D_o2n%FN9LyE2brv&stvZg<36`n9N#29SXg+_$F9V? zawq56OuTv_AMqY8=0%3k(}S9Tkzc%7cb1k*tjXy3M4#E6zN`Ha-)PZO?`@10XV&s5 zGQQ&@_@l&eR(Cy43+bHLnJm_4r~!BxkQ)AYxUm77py1C+N5{&_ZwO0bv@9(c<*5xt zDawvNwKAG$DfwR(3I2sZ&P^~H_Bwx!Ay-5^*HC%vR=zsRyU*os^MZxRY~^jZ<^x$e zBLgInD|4OWtrO*`aT@mqS(k+!Ore){VX?7WTLsOp${HFhe@&Nb=fR8~->Md)7K4oD z1?bO{c0bgzPk+^3E|GSbnKf#6 zZKxsL;^O`K`UUaVpBUiGMa7jcGC7-dHntXH-)mHCG1-Zcbdh2eIsH78L<;r6sn9kH z)r&XHrvn3|2!uaWG7|?KymEg1j*gDzE7kMcoi?y)zS%1+wsE#giHK-PIWBO(A<4@Ei6<8=1aNKpRo_82*UTJ7!G30twW)}`tNJVz#PKC*?5YbM!>?Xezm)c zdey4&$0nXoDLD5ZgIJgyre}|wSAP{O)gD_2Sqh)=5r2Cb%gN5y{rKMW|@srFL zdx(m)wYb~;_HpC=rP^bS+=beWMijfCPxKy~V0=>C`0VWL&dyFKuc)XfFR#m5ci7R< z5fD4yj#Z$XYxB9?8cvrzQ;?|8 zKU^lYAHV-#GOMpgRBYtfnJHFty({NzR;^gYP9FX_NHfJc=!rH{11;hO5Es|=f%6}4 zTn*kwf1-Vd0bA4m7K?})7IGSb81uid^#Ae)jXz2yh;S=!Jj_v<8h$Lzt^!y}w$5LT z;gu+gtTq0}Ws&v+;g5ees`m7nJcq|(D%0FIJqt_Q5*4U?&H>C>jUKPWWb^0h$wHI! zOodVDjS#_QFBZ5o0pJ9R3*E@?mP#3eId($%r;A@Ek{wY++Am-9IKT7x?i|3PcG=Mz zRsH@v#ijzpjwRZg(Nq!--S`?9nAmpy8S@O{iB<9L}ra0D97l^-`*0XN_I6PrK%pOp|Cf*5DXTRDZak>i{rSQ{kKhhiyCF-B7#8^t>C?ul9l0-To!oPF_b%> z$|_IJ()(jOxx^eb1%|XL{DO5fc+DiC5Q3Whq(5n-`cG)Y|2qA}?CQ%1r@|{io#s z!t-CQ+fyNt&i2GayUj;uZjslRli{3dkMw4F3i*#KtvK(B4S?gFv zJRYYmjiiRLqPrwlg%q}9L>y9SAW#7SoEl4wpG>3=4;DDl7PcKp@MJ9NMaGJ5Q2q3V z5LbAN<=_G)Iu<%2+JcQ_GTEO$T2Zw!=FFL+8;r-$eBZu(yhvBLOL!4g)H<29xX6us z(Gk(QrGP*M0B}lN)rp@e7C6xsvMMxj(YQ#rbz|${kqb`?)09=uYUevSykJv5d(4M< zEv_tCvgD5$TrrL`R~S{)I+8AOBVV*)iR21Yx{V#&%m4s03`H0vQDKu@-MVO8q}$wB zH7`Q*7Y_~7#BIyL1x>W})HrzavUl&^GtWFzb;if3O%-Ywx5jPz3U9<*A;w}}XvGr2 z6)FILQ*?ov8Xr%l3!G>RSrwYNXk4V*-1y&vL+_s-<%!zH0a@*QCpwlXe~?N;)RkSH z_UzfSG=tjaB5j;1JZIcCuV}d`*%PqI4ehvs!s168J0PwiN0u?_)g-SBMIzYTspkyx= z001ZDKm`B*Z~+1p006)R2vn#%JeLaq(*Ob$D#;k7@`t2I zRsg6%^3;Vuh03tWP9!S;cvIGi$w#Lv)f5n@0001a$n_0B0u?HcFG-2&8;p-nng9Si zVA9!&+G@f(B|(|-J0+!3sWEAEbTpAj7~d)B=+UEx4jua84}X~TUcT+^?ax2|{I+e| zR38AKP~!V@`As@ECb}e@e*YzxT=wA)z4+n_S?`pzsI|T>TD$VXOE*9Di$$%mSR_;z z4#sLj(Qp87JqQ(`12vgUQkqhxQkqhxa-jD0^>Ls+_~3&(cI6E7bn}{^Q4wA3l8evBw^}>86`nTU&d3d)1nG(hnH#vwXUn=(>48u0^>vMVybU zAg}F}r}oF2Uov-<^cXV{Dn2sdNj>rNB#HhPCnx$xjU=6#C`x6Z&Ym@UG*xr=H~(cp zTXQT-f%?Ixe(~g@IkEakkTR97P33#}2Jkafs4#x~(A=L93|Eh7B8*EnBAU z>iOgC6V>-Bn?0llcUD8owa7d&7w033#9sx6)H)TVc12PpD2p=P;Np|;C(5KLf3ca> z9k%nrRrlU|Z$m5`@cRRPUw}TuS&Ki!jK2*)ph9JEj#7Mbn;JAHl%}<{wUJ1qxw)CH zUSD|Og{4cE(usc>Pbu*&u?RQ&iH8|S>bAL_RWa7>EACG6lvR^etb(bOw@ERR_+oi= z--?{db5~I&TA4KExn-8t)Uu_)#ChB%u~L{P7Fn2 zQPlx(M&6Cb)2UQa{1|nN{)yKmiGSjW-=V?5Q>Xe*o;=xe{Mdm5Z~gK=o>{+s{Usmx zz@9yOjvqg+HjzK|c=0xRJgSyS)*@rqW)aD?O^3sZBsN-_Etgt}Zjj>Dy6A-Q4+t(x5yVI0Te*oPwCsgw0fa0&FKnNT%=|)b!dn#QwIkI z1}Ibe`uYwYJV^PvefxH`J^(=eI438les-DA35w@*o?3qP*{|%{_R-5e-2K+;6s3N@ zk1kR>F8T8xKl1RB(RXG zvT~Qk@L*btH=?%&0N@sW!apF@*494vUr$|j*+&k)`G;U25DNN3fxvl}e(XmNJ@j4* z)MzG9X+oev`RPEV24AES{j4tsD$OZD316^sg~m{(@+!10Z-?gq0B)f`CH&%}P$;zd ziJx44`Q-;*+Yt=-DN||Q`Jsc8-^ zEB@`i?=PKKUl$39S0vR2!xn-1KqgS-*$IIPCBi94C>MA8G$p*2 z+JuBa1pv2*>r*K}`RVsRa{q?ETD^Mjt{12yFH-%hK6=%6H{7#~12rsO_ZtZX!y!Kc z6)J!tkmh`qNzte?l~8u-Smh|?3I{5Wq&clicvFP#`f|en0L9|-316X7rf&T1H?H~X zYxnHB&bPn4e13gQT%n40@ePLpG$Bx-0w@A$&VfoeCaKG*$?>U^ zm2jPKnq~#6+#~>iJF)`x-f!Oi=}&+9)veF-dn8eyUUK=>-&ntX`RNVveFp>L^0YP( z4*GpxyS8)09H`RAZa|>rJlrr7|ZxaB(72?@m z!<(Ug>-H~y_NJR&dEvkP6sV%$yYv&+eeI4r&RNh<7nZN@6<4VK+F-!^T4Z=iMv^j|<{s91#invOZZ!7q| zl`AheZ{=&-e&hG4K>gqqH~jN$>&|^oqxb=;ygZEr#c$MzKuwILh7!r&@9EjNapSX( z+|An}XDshnaOSzOhGu>ScqW)J2U>YDA7v;~i}NxqU!x>1J^5-inG%2YK|je$A2dkL zjpXK>@puO3b@$8hQ{#!M)qotIA+JxY6td2A(||O+xyq4XZO|X0E7Y%3peEB4s9X1R-|`RZdfs^P#L>fQ ztD5I-pc3xT%)0AWl!`YFRr#SJa$LPfHc3;;%6cY6#Uffo)_8rj9VcJ7%o=WSYkO+n z#eWlrk$pg!rP*~OxqM;(oeosXz_OU5>M4_VaH`!c`fze@zp+@8=M%70>sIE7Y%Ff5BKXH9VR+ zdUE)kp~&Yxb=B^dexo*M*>}0BBpyk04E%uNG^HjrmbR~Y@TX7B4i3&~j6}o1aL^wP1u0GG0@e4gH&CFa zN5)dUrxIO%>i^=GZyP`P_8+^p@+PfS{)Q^k9#s21!uuu?i6b%-mei*IL_^FdROOu8 zyqL#IqAKq9vXc+BzL)5O(EBDTnGY?~(f?0cN@QW8D0_yk{f#xn;vB5jDP%j2WHvn2 zCn#bEirja*)r;J8wu#NTyy1e0{m6V&FZD2x4+jyZvT?@Q9b=I>8}HlDxwzS1QxmBT z){2)S`9tzelzi)NxG~MP$ zJ;JDv3(ox4C`#tjIsUW-?Vq!i>_%BHD`;nOo7kMo8!n#Mq0C2h;l1XEf_RYle6!-G zwVi&(fUn_u8}44(7Kt}SDM!U?kwPL(LxDgb==0tAsS8u$#USH}WGa~&f2+Iy?Vdz^ zQ_I>LKfC1LEEtO4C7wfph&272IaQB<~ zo+w6GjGA&AmPuO>+YPz)SroUo=Zfr|^5jmIU6tMn{M{yBnEL#_-Fx=^{AWKI?C)JT zI~;F}1_QouNWNEo&|gbw8W1m5@_p-XE=rHrh?h{N$7vG3LNhXUa&UC-yMw$@fbx@p z$xSl3N4%MS05JU+z8zTD5;<*FloFHUGeUtHpvh0yra}4ZG`_n&b1{9VPv7!$peDte zm5cdUGCh_`r&8mYw@jsznD_@!2I`JxNYaVB9`1$!P%iQ+RZR3xys?9?M!!XV(C-V% z*CL7c_!aN@K!JMW#q#Mi`HKoNQ$?(bU;mSBYH*rno?gSb49aHGoh{Qro&rEQ`7>9k z;u_RPnd;*!R58g|r3Nh$3uT~+f0URyQ^j1ixgsx5UH*|3Kwc*9e7G9|K-sAuruxM5 zy_B8uYE`_^0|lx|Q@Vx~fl6dr>P!_GO6^R8<5rx zr2%)}c(F=J5t<@XMTW{`<#t*IsaS?Q1pt7VhoAGM)TEhThAOA2$Wflt5})t?0roH> Uq0oxtbpQYW07*qoM6N<$f(bE#tN;K2 literal 0 HcmV?d00001 diff --git a/doc/images/cmake1.png b/doc/images/cmake1.png new file mode 100755 index 0000000000000000000000000000000000000000..ef3aefd4a7f3068aee2c71c7190f3f0c6037380a GIT binary patch literal 55491 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 Uq0oxtbpQYW07*qoM6N<$f(bE#tN;K2 literal 0 HcmV?d00001 diff --git a/doc/images/command-lnx.png b/doc/images/command-lnx.png new file mode 100755 index 0000000000000000000000000000000000000000..35975d0f0ba6ac2e7a2b216fbb1ad18bbe466494 GIT binary patch literal 18401 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 literal 0 HcmV?d00001 diff --git a/doc/images/command.png b/doc/images/command.png new file mode 100755 index 0000000000000000000000000000000000000000..b3649905a2f5d9ad47d2b680177801a9240adf9d GIT binary patch literal 20722 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 rtZ3RJNqf-)#qc5~z-D&r{Bf879POI7 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 z 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

9RcNfk~9 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 QFAyF|D2Nw6Fnala04GqB2mk;8 literal 0 HcmV?d00001 diff --git a/doc/images/folders-lnx.png b/doc/images/folders-lnx.png new file mode 100755 index 0000000000000000000000000000000000000000..46effe9ed3f9df5d0429410c93ab3370420c7a75 GIT binary patch literal 53328 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�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

e-2`2Cr&=vRB~7+i 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 literal 0 HcmV?d00001 diff --git a/doc/images/folders.png b/doc/images/folders.png new file mode 100755 index 0000000000000000000000000000000000000000..23ede7445e9ece8019c5cf46760934155c328466 GIT binary patch literal 10710 zcma*N1yCGM^e(zM1P^Y(-4a*`5*!w{;1=B7-7U!C?ry=|2~J>f_uy{9C2%*t``*7^ zy{cPvt9EKIu>#=mosFh`a~@P#25(Vu%2}MsbkRas~h}`u`m;!}et+005)4w77_>$G5X= zR3Fv7^tVa5FdD2j8syQcwS>62yyi066;0(NM6_+~DRse@LAy%Jmi(bHtJlcpA9Ydh z->tIFpAz5pbg(K(;Fz|n7mCtSxJyYn8IUI_Rk+yaD=sUwZ7t$+M7iHwQiCI(k(V4)$xwZBeNuhI!1 zM-3*##W_6n3IE~xWD{^5z+tIup4)Qws}hJf!mSV4Fs|IlEsYpBfI(=1e)#IhyC{ZO_x3 z<<4tRLKxN-%?Pu23xxW0U_E!^>tc85s(gQTg=(iY8zP=ZBWYT~Bo)7tlA zTGn{lF1$I}HnZ1m|MI3P0~=P)Y_f2O?dKeaA|O=-Y5K|AGY4=HvZ1hvjHcmn1AGrg z6Tg_=N7f(y8WnayRpv<*wxBQuTLYi}jIrzc|8;E^DXXel@AAH{Gae=lfTupnIxnKblX3e18KgU*M95RSYdjuf!g^m z*9wrYA@Ee(9rpqm zsg&`_LRH7>)5&sk2yM6P+_OJfwkJk$$n^AdN?_oX@fk=g*Pz3veZ%Q4YsqJ0!>3ny z(@27-aNf#v)+2DHIkJyFo5_es_m@)%m4@_FPz#NEOrg|}mc(-LV4t=Gy=a~4^%2ic zhdzH>x(GC~^k9ey7#+`ct=RglX=|y4olRo0ups(i@*V{-bJ_s=)b|$b3uX--XI&_P zTGX|vPk7+y3Jda7a5Wh}NX7G3F*NJiF;(E=uXXvmoRa09 z;}46shCM=(!}K>y`R=}|NZ55PK6%t%Qb}421x|N5r=L- zzkP0YetmsMY8*xH&zA-9^}wSt?MHyuO$w@)$ZJQ$7eEk7SY(l6>A%t(~FCqlj@ESUWfU)FT3q#_z$bc*`~DPSbb*-DZrx)C-g zr(OZ@-N9ot8lE$Va?~JNR0MnmfZn$UiUmfiUOQ@$AJkNm0H{bNq^T9~q|>pvNY?>? z-&w%z&Ul$<3v?4i0DSc{S`_M7lmurP5Ec;VJtIX6B0hl&kP2^r)OI3^TT)Us+SdHF zzTGCVy6Cz3>%TeB4lwZ8YUeJLrk*DBLkn!uQW5KqboUqVI{v+D(w}rpX8(2+E6LPz zet7&~FagJ$!)g?1Zpt3U1dMTJ z_SfQozC+QL&03Cy(Q`PK zEMKqZX0K9p6bcxlY2uA&^M=~ZyPK!#0tDSekPA=6N2bR3lyrv3{nm?4;x|>T)7e$x z&pOdpbvW$>ArXZk%GU#rM=dNSJF35QbM(H^YNanMs3MChN4QAOt0v=kllX{@O08Y& zdCh{|!&zwFJ$~c0nQW()NI+Z(zCcM99*uhodIur7hA(ZvQm=ISS{_%-G%>LD(%1>M z@}|P+mZpAZu8at0MPo?{N=J8fY+Sb4uNSaa@GfJv)tYQMuanop+97mqG*P`>6rKFA zHNkivL(CP4u7-3Z_g?+1n#?jZ^l0Yq^nL=Bn_(eyvaTtxQ`-J|;ydMVd^A|CQg)gV zy{O@r;QfJ1i1X0YZ>^5vJfpp@ieHDrVwQ_1T3~6WW=^TzTTJOlwmVU+6gwf2a6?8@ zOJ;wT_!$3M8|@<%lt^_}dAWe&p$G5&=;ui=Y+VX`2&#xOHdVWol$;bNDV)?{wYZ*X zn-yw*>?=HilihEwPWL@u`B9VK-x-&bF~Np=8q?r%Bx5+t<}}@*mm6Kca!jV7$54Ck z=o~{T8L7g&1h$V$c5(mvW{$_0d8oa84BiQHyy1V=hRN=ZE9L@lz zjHWpf7}fA5a`(7JPw^XY&dq=JxZjGe@pDFrA+S*SnM(gPC=Xw-UiRp@9SDYhFAXyn zMA&o0%?m&XqcYN*my`uwzikC#YSc0Bno|I}v%7Kfz z(%7r+7xgYOd0Kyvy~@U4Wh!K-hO3W^FWb?gVs5R%2*TU;oC`MP_@B>b7<&|ty_oh- z><86Jo<>6p{Ru`_W13$b&MVWW>1G#^Ff`P%1>MhKGj|X>o~HK{*tl-)Vr%?UnJ4)x ztm#bY+u#3EB-M&bs2xo)um4E#gTswM>_<_BlM>;$>D4)(#-t&WbWh+gPx4YtYVW-2`dm`rP&+ZLq=Vjgdj*MS@ z*{!asy1Bc);P`hhwM_=%* zKFspnz=BxL@s6(y{X97OL^l~$f9Uho&V2C7NYO7*CagJ2KI;CZz|`JeA9Q@a%a%Nu z1iIb0tc0+IJ8pMgeCWArq1AZH-+Q_>HlI9-03XL-XG9Z_Jo7&zJxv*KkK_6D9_+vtU#-;yU1izi)0OEmWq^*AfP0VOoT&=QzUhaDb5Mzb7%0Axs+V_nCc0@{i5yRPqx^ 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 MODKp}iy8#|F90TqQvd(} literal 0 HcmV?d00001 diff --git a/doc/images/result-lnx.png b/doc/images/result-lnx.png new file mode 100755 index 0000000000000000000000000000000000000000..52aecd0844cc62a2511769bff7c2a6a79c4f39c3 GIT binary patch literal 55729 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

8ZY0if@A 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 literal 0 HcmV?d00001 diff --git a/doc/images/result.png b/doc/images/result.png new file mode 100755 index 0000000000000000000000000000000000000000..014d6297d0712bd47afe78d419f27988cb45f3d2 GIT binary patch literal 80900 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

~i$>tT3HKVufOdPivjXyW%r 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 literal 0 HcmV?d00001 diff --git a/doc/install-linux.md b/doc/install-linux.md new file mode 100755 index 0000000..a9dead1 --- /dev/null +++ b/doc/install-linux.md @@ -0,0 +1,96 @@ +## LittleSLAMの使い方(Linuxの場合) + +### (1) 関連ソフトウェアのインストール + +- C++コンパイラ(gcc)、Boost、Eigen、CMake, gnuplot +以下のコマンドで、まとめてインストールします。 + + +

 $ sudo apt-get install build-essential cmake libboost-all-dev libeigen3-dev gnuplot gnuplot-x11
+
+ +- p2o +[p2o](https://github.com/furo-org/p2o)のGithubサイトを開きます。以下のどちらかの方法でp2oをダウンロードします。 +(A) Github画面の"Clone or download"ボタンを押して、"Download ZIP"を選択し、 +p2o-master.zipをダウンロードします。zipファイルの展開方法は後述します。 +(B) gitを使って、リポジトリをcloneします。 + +### (2) LittleSLAMのインストール + +- LittleSLAMの展開 +[LittleSLAM](https://github.com/furo-org/LittleSLAM)のGithubサイトを開きます。 +以下のどちらかの方法でLittleSLAMをダウンロードします。 +(A) Github画面の"Clone or download"ボタンを押して、"Download ZIP"を選択し、 +LittleSLAM-master.zipをダウンロードします。 +そして、このzipファイルを適当なディレクトリに展開します。 +ここでは、たとえば、"\~/LittleSLAM"に展開するとします。 +LittleSLAM-master.zipの中の"LittleSLAM-master"ディレクトリの下の +4個のディレクトリと3個のファイルを"\~/LittleSLAM"の下にコピーします。 +(B) gitを使って、リポジトリをcloneします。 + +- p2oの展開 +"\~/LittleSLAM"の下にp2oディレクトリを作成します。 +前述のp2o-master.zipの中のファイル"p2o.h"を"\~/LittleSLAM/p2o"にコピーします。 + +- buildディレクトリの作成 +"\~/LittleSLAM"の下にbuildディレクトリを作成します。 +ここまでのディレクトリ構成は以下のようになります。 + +![ディレクトリ構成](images/folders-lnx.png) + +- CMakeの実行 +コンソールで、buildディレクトリに移動し、cmakeを実行します。 + + +
 ~/LittleSLAM$ cd build
+
+
 ~/LittleSLAM/build$ cmake ..
+
+ +下図にcmakeの実行例を示します。 + +![cmake](images/cmake-lnx.png) + +あるいは、CMakeのGUI版をインストールして、Windowsの場合と同じように +GUIでCMakeを実行することもできます。 + +- ビルド +コンソールで、buildディレクトリにおいてmakeを実行します。 + +
 ~/LittleSLAM/build$ make
+
+ビルドが成功すると、"\~/LittleSLAM/build/cui"ディレクトリに、実行ファイルLittleSLAMが生成されます。 + +![cmake](images/exefile-lnx.png) + +### (3) 実行 + +以下のコマンドで、LittleSLAMを実行します。 + + +
 ./LittleSLAM [-so] データファイル名 [開始スキャン番号]
+
+ +-sオプションを指定すると、スキャンを1個ずつ描画します。各スキャン形状を確認したい場合に +使います。 +-oオプションを指定すると、スキャンをオドメトリデータで並べた地図 +(SLAMによる地図ではない)を生成します。 +オプション指定がなければ、SLAMを実行します。 +開始スキャン番号を指定すると、その番号までスキャンを読み飛ばしてから実行します。 + +例として、以下のコマンドでSLAMを実行します。 +この例では"\~/LittleSLAM/dataset"ディレクトリに"corridor.lsc"というデータファイルが置かれています。 + +
 ~/LittleSLAM/build/cui$ ./LittleSLAM ~/LittleSLAM/dataset/corridor.lsc
+
+ +![cmake](images/command-lnx.png) + +コマンドを実行すると、LittleSLAMはファイルからデータを読み込んで地図を少しずつ +構築していきます。その様子がgnuplotに描画されます。 +最終的に、下図のような地図が生成されます。 +処理が終わっても、プログラムは終了せず、地図はそのまま表示されています。 +プログラムを終了するにはCtrl-Cを押してください。 + +  +![cmake](images/result-lnx.png) diff --git a/doc/install-win.md b/doc/install-win.md new file mode 100755 index 0000000..dd16ba6 --- /dev/null +++ b/doc/install-win.md @@ -0,0 +1,131 @@ +## LittleSLAMの使い方 (Windowsの場合) + +### (1) 関連ソフトウェアのインストール + +- Boost +[Boost](http://www.boost.org/)をダウンロードして、適当なフォルダに解凍します。 +LiitleSLAMでは、Boostのヘッダファイルだけを使用するので、ビルドは必要ありません。 + +- Eigen3 +[Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page)を +ダウンロードして、適当なフォルダに解凍します。 +Eigenはヘッダファイルだけで使用するライブラリなので、ビルドは必要ありません。 + +- gnuplot +[gnuplot](http://www.gnuplot.info/)をダウンロードしてインストールします。 +LittleSLAMからは、APIではなく、実行コマンドで呼び出すので、 +Windowsの環境変数Pathにgnuplotのパスを設定しておきます。 +たとえば、gnuplotをフォルダC:\gnuplotにインストールした場合、"Path=... ;C:\gnuplot\bin; ..."とします。 +(インストーラが自動で設定してくれることもあります) + +- CMake +[CMake](https://cmake.org/)をダウンロードしてインストールします。 + +- p2o +[p2o](https://github.com/furo-org/p2o)のGithubサイトを開きます。以下のどちらかの方法でp2oをダウンロードします。 +(A) Github画面の"Clone or download"ボタンを押して、"Download ZIP"を選択し、 +p2o-master.zipをダウンロードします。zipファイルの展開方法は後述します。 +(B) gitを使って、リポジトリをcloneします。 + +### (2) LittleSLAMのインストール + +- LittleSLAMの展開 +[LittleSLAM](https://github.com/furo-org/LittleSLAM)のGithubサイトを開きます。 +以下のどちらかの方法でLittleSLAMをダウンロードします。 +(A) Github画面の"Clone or download"ボタンを押して、"Download ZIP"を選択し、 +LittleSLAM-master.zipをダウンロードします。 +そして、このzipファイルを適当なフォルダに展開します。 +ここでは、たとえば、"C:\abc\LittleSLAM"に展開するとします。 +"abc"はユーザが決める任意のフォルダです。 +LittleSLAM-master.zipの中の"LittleSLAM-master"フォルダの下の +4個のフォルダと3個のファイルを"C:\abc\LittleSLAM"の下にコピーします。 +(B) gitを使って、リポジトリをcloneします。 + +- p2oの展開 +"C:\abc\LittleSLAM"の下に"p2o"フォルダを作成します。 +前述のp2o-master.zipの中のファイル"p2o.h"を"C:\abc\LittleSLAM\p2o"の下にコピーします。 + +- buildフォルダの作成 +"C:\abc\LittleSLAM"の下にbuildフォルダを作成します。 +ここまでのフォルダ構成は以下のようになります。 + +![フォルダ構成](images/folders.png) + +- CMakeの実行 +CMake(GUI)を実行して、LittleSLAM.slnを生成します。 +まず、"Where is the source code"欄および"Where to buid the binaries"欄に下図のフォルダを指定します。 +次に、 Configureボタンを押します。 +LittleSLAMに対して初めてCMakeを実行する場合、下図のようにC++コンパイラを聞かれるので、 +使用しているC++コンパイラを指定し、"Use default native compliers"を選択して、Finishボタンを押します。 +そして、もう一度、Configureボタンを押し、最後にGenerateボタンを押します。 + + +![cmake](images/cmake.png) + +- Eigen3の指定 +もし、CMakeがEigen3の場所(EIGEN3_INCLUDE_DIR)を見つけられずにエラーが出た場合は、 +次のいずれかを行って、CMakeを再起動してConfigureとGenerateをやり直してください。 +(A) Windowsのシステム環境変数にEIGEN3_ROOT_DIRを追加して、 +そこにEigen3を展開したフォルダを設定します。 +すると、下図のように、"C:\abc\LittleSLAM"下のcui, framework, hookの各CMakeLists.txtの中で、 +EIGEN3_ROOT_DIRで指定されたフォルダがEIGEN3_INCLUDE_DIRに設定されます。 +(B) 各CMakeLists.txtのEigen3のフォルダを手で設定します。 +たとえば、Eigen3を"C:\eigen"に展開した場合は、下図の +$ENV{EIGEN3_ROOT_DIR}の部分をC:\eigenに書き換えます。 + +``` +-- CMakeLists.txtより抜粋 -- + +find_package(Eigen3) +IF(NOT EIGEN3_INCLUDE_DIR) # Eigen3のパスが見つからない + set(EIGEN3_INCLUDE_DIR $ENV{EIGEN3_ROOT_DIR}) +ENDIF() +``` + +- Visual studioの起動 +"C:\abc\LittleSLAM\build"の下にLittleSLAM.slnができているので、 +それをダブルクリックすると、Visual studioが起動します。 + +- ビルド +下図のように、Visual studioで、Release, x64(64ビットの場合)を指定し、BuildメニューからBuild Solutionを実行します。 + +![cmake](images/build.png) + + +ビルドが成功すると、"build\cui\Release"フォルダに、実行ファイルLittleSLAM.exeが生成されます。 + +![cmake](images/exefile.png) + +### (3) 実行 + +Windowsコマンドプロンプトから以下のコマンドにより、LittleSLAMを実行します。 + + +
 LittleSLAM [-so] データファイル名 [開始スキャン番号]
+
+ +-sオプションを指定すると、スキャンを1個ずつ描画します。各スキャン形状を確認したい場合に +使います。 +-oオプションを指定すると、スキャンをオドメトリデータで並べた地図 +(SLAMによる地図ではない)を生成します。 +オプション指定がなければ、SLAMを実行します。 +開始スキャン番号を指定すると、その番号までスキャンを読み飛ばしてから実行します。 + +例として、以下のコマンドでSLAMを実行します。 +この例では"C:\abc\dataset"フォルダに"corridor.lsc"というデータファイルが置かれています。 + +
 C:\abc\LittleSLAM\build\cui\Release> LittleSLAM C:\abc\dataset\corridor.lsc
+
+ +![cmake](images/command.png) + +コマンドを実行すると、LittleSLAMはファイルからデータを読み込んで地図を少しずつ +構築していきます。その様子がgnuplotに描画されます。 +最終的に、下図のような地図が生成されます。 +処理が終わっても、プログラムは終了せず、地図はそのまま表示されています。 +プログラムを終了するにはCtrl-Cを押してください。 + + +![cmake](images/result.png) + + diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt new file mode 100755 index 0000000..e645b2a --- /dev/null +++ b/framework/CMakeLists.txt @@ -0,0 +1,66 @@ +PROJECT(framework) + +cmake_minimum_required(VERSION 2.8) + +find_package(Boost REQUIRED) + +find_package(Eigen3) +IF(NOT EIGEN3_INCLUDE_DIR) + set(EIGEN3_INCLUDE_DIR $ENV{EIGEN3_ROOT_DIR}) +ENDIF() + +SET(fw_HDRS + MyUtil.h + LPoint2D.h + Pose2D.h + Scan2D.h + PointCloudMap.h + RefScanMaker.h + ScanPointResampler.h + ScanPointAnalyser.h + PoseEstimatorICP.h + PoseOptimizer.h + CostFunction.h + PoseGraph.h + P2oDriver2D.h + ScanMatcher2D.h + PoseFuser.h + CovarianceCalculator.h + DataAssociator.h + NNGridTable.h + SensorDataReader.h + SlamFrontEnd.h + SlamBackEnd.h + LoopDetector.h +) + +SET(fw_SRCS + MyUtil.cpp + Pose2D.cpp + Scan2D.cpp + ScanPointResampler.cpp + ScanPointAnalyser.cpp + PoseEstimatorICP.cpp + PoseGraph.cpp + P2oDriver2D.cpp + ScanMatcher2D.cpp + PoseFuser.cpp + CovarianceCalculator.cpp + NNGridTable.cpp + SensorDataReader.cpp + SlamFrontEnd.cpp + SlamBackEnd.cpp + LoopDetector.cpp +) + +include_directories( + ${Boost_INCLUDE_DIR} + ${EIGEN3_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../p2o +) + +link_directories( +) + +ADD_LIBRARY(framework ${fw_SRCS} ${fw_HDRS}) + diff --git a/framework/CostFunction.h b/framework/CostFunction.h new file mode 100755 index 0000000..fa3a79d --- /dev/null +++ b/framework/CostFunction.h @@ -0,0 +1,61 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file CostFunction.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _COST_FUNCTION_H_ +#define _COST_FUNCTION_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" + +class CostFunction +{ +protected: + std::vector curLps; // 対応がとれた現在スキャンの点群 + std::vector refLps; // 対応がとれた参照スキャンの点群 + double evlimit; // マッチングで対応がとれたと見なす距離閾値 + double pnrate; // 誤差がevlimit以内で対応がとれた点の比率 + +public: + CostFunction() : evlimit(0), pnrate(0) { + } + + ~CostFunction() { + } + +/////// + + void setEvlimit(double e) { + evlimit = e; + } + + // DataAssociatorで対応のとれた点群cur, refを設定 + void setPoints(std::vector &cur, std::vector &ref) { + curLps = cur; + refLps = ref; + } + + double getPnrate() { + return(pnrate); + } + +/////////// + + virtual double calValue(double tx, double ty, double th) = 0; + +}; + +#endif diff --git a/framework/CovarianceCalculator.cpp b/framework/CovarianceCalculator.cpp new file mode 100755 index 0000000..217120b --- /dev/null +++ b/framework/CovarianceCalculator.cpp @@ -0,0 +1,240 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file CovarianceCalculator.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "CovarianceCalculator.h" + +using namespace std; + +////////// ICPによる推定値の共分散 ///////// + +// ICPによるロボット位置の推定値の共分散covを求める。 +// 推定位置pose、現在スキャン点群curLps、参照スキャン点群refLps +double CovarianceCalculator::calIcpCovariance(const Pose2D &pose, std::vector &curLps, std::vector &refLps, Eigen::Matrix3d &cov) { + double tx = pose.tx; + double ty = pose.ty; + double th = pose.th; + double a = DEG2RAD(th); + vector Jx; // ヤコビ行列のxの列 + vector Jy; // ヤコビ行列のyの列 + vector Jt; // ヤコビ行列のthの列 + + for (size_t i=0; itype == ISOLATE) // 孤立点は除外 + continue; + + double pd0 = calPDistance(clp, rlp, tx, ty, a); // コスト関数値 + double pdx = calPDistance(clp, rlp, tx+dd, ty, a); // xを少し変えたコスト関数値 + double pdy = calPDistance(clp, rlp, tx, ty+dd, a); // yを少し変えたコスト関数値 + double pdt = calPDistance(clp, rlp, tx, ty, a+da); // thを少し変えたコスト関数値 + + Jx.push_back((pdx - pd0)/dd); // 偏微分(x成分) + Jy.push_back((pdy - pd0)/dd); // 偏微分(y成分) + Jt.push_back((pdt - pd0)/da); // 偏微分(th成分) + } + + // ヘッセ行列の近似J^TJの計算 + Eigen::Matrix3d hes = Eigen::Matrix3d::Zero(3,3); // 近似ヘッセ行列。0で初期化 + for (size_t i=0; ix - sin(th)*clp->y + tx; // clpを推定位置で座標変換 + double y = sin(th)*clp->x + cos(th)*clp->y + ty; + double pdis = (x - rlp->x)*rlp->nx + (y - rlp->y)*rlp->ny; // 座標変換した点からrlpへの垂直距離 + + return(pdis); +} + +///////// 運動モデルの計算 ///////// + +void CovarianceCalculator::calMotionCovarianceSimple(const Pose2D &motion, double dT, Eigen::Matrix3d &cov) { + double dis = sqrt(motion.tx*motion.tx + motion.ty*motion.ty); // 移動距離 + double vt = dis/dT; // 並進速度[m/s] + double wt = DEG2RAD(motion.th)/dT; // 角速度[rad/s] + double vthre = 0.02; // vtの下限値。同期ずれで0になる場合の対処 + double wthre = 0.05; // wtの下限値 + + if (vt < vthre) + vt = vthre; + if (wt < wthre) + wt = wthre; + + double dx = vt; + double dy = vt; + double da = wt; + + Eigen::Matrix3d C1; + C1.setZero(); // 対角要素だけ入れる + C1(0,0) = 0.001*dx*dx; // 並進成分x + C1(1,1) = 0.005*dy*dy; // 並進成分y +// C1(2,2) = 0.005*da*da; // 回転成分 + C1(2,2) = 0.05*da*da; // 回転成分 + + // スケール調整 +// double kk = 100; // オドメトリのずれが大きい場合 + double kk = 1; // 通常 + cov = kk*C1; + + // 確認用 + printf("calMotionCovarianceSimple\n"); + printf("vt=%g, wt=%g\n", vt, wt); + double vals[2], vec1[2], vec2[2]; + calEigen(cov, vals, vec1, vec2); + printf("cov : %g %g %g %g %g %g\n", cov(0,0), cov(0,1), cov(0,2), cov(1,1), cov(1,2), cov(2,2)); +} + +///////// 運動モデルの計算 ///////// + +// 1フレーム分の走行による誤差。dTは1フレームの時間。motionはその間の移動量。 +void CovarianceCalculator::calMotionCovariance(double th, double dx, double dy, double dth, double dt, Eigen::Matrix3d &cov, bool accum) { + setAlpha(1, 5); + double dis = sqrt(dx*dx + dy*dy); // 走行距離 + double vt = dis/dt; // 並進速度[m/s] + double wt = dth/dt; // 角速度[rad/s] + double vthre = 0.001; // vtの下限値。タイミングにより0になるのを防ぐ。 + double wthre = 0.01; // wtの下限値 + if (vt < vthre) + vt = vthre; + if (wt < wthre) + wt = wthre; + + // 累積する場合は、時刻t-1の共分散行列sigmaから、時刻tの共分散行列を計算 + Eigen::Matrix3d A = Eigen::Matrix3d::Zero(3,3); + if (accum) { + Eigen::Matrix3d Jxk; + calJxk(th, vt, dt, Jxk); + A = Jxk*cov*Jxk.transpose(); + } + + Eigen::Matrix2d Uk; + calUk(vt, wt, Uk); + + Eigen::Matrix Juk; + calJuk(th, dt, Juk); + Eigen::Matrix3d B = Juk*Uk*Juk.transpose(); + + cov = A + B; + +} + +////////////////////////////////// + +void CovarianceCalculator::calUk(double vt, double wt, Eigen::Matrix2d &Uk) { + Uk << a1*vt*vt, 0, + 0, a2*wt*wt; +} + +// ロボット姿勢に関するヤコビ行列。vtはロボットの速度、thはロボットの方向(ラジアン)、dtは時間 +void CovarianceCalculator::calJxk(double th, double vt, double dt, Eigen::Matrix3d &Jxk) { + double cs = cos(th); + double sn = sin(th); + Jxk << 1, 0, -vt*dt*sn, + 0, 1, vt*dt*cs, + 0, 0, 1; +} + +// +void CovarianceCalculator::calJuk(double th, double dt, Eigen::Matrix &Juk) { + double cs = cos(th); + double sn = sin(th); + Juk << dt*cs, 0, + dt*sn, 0, + 0, dt; +} + +//////////////// + +// 共分散行列covの並進成分だけを固有値分解し、固有値をvalsに、固有ベクトルをvec1とvec2に入れる。 +double CovarianceCalculator::calEigen(const Eigen::Matrix3d &cov, double *vals, double *vec1, double *vec2) { + // 並進部分だけ取り出す + double cv2[2][2]; + for (int i=0; i<2; i++) + for (int j=0; j<2; j++) + cv2[i][j] = cov(i,j); + + MyUtil::calEigen2D(cv2, vals, vec1, vec2); // 固有値分解 + double ratio = vals[0]/vals[1]; + + // 確認用 + printf("Eigen: ratio=%g, val1=%g, val2=%g\n", ratio, vals[0], vals[1]); + printf("Eigen: vec1=(%g, %g), ang=%g\n", vec1[0], vec1[1], RAD2DEG(atan2(vec1[1], vec1[0]))); + + return(ratio); +} + +////////////// + +// 共分散行列の累積。前回位置の共分散行列prevCovに移動量の共分散行列mcovを加えて、現在位置の共分散行列curCovを求める。 +void CovarianceCalculator::accumulateCovariance(const Pose2D &curPose, const Pose2D &prevPose, const Eigen::Matrix3d &prevCov, const Eigen::Matrix3d &mcov, Eigen::Matrix3d &curCov) { + Eigen::Matrix3d J1, J2; + J1 << 1, 0, -(curPose.ty - prevPose.ty), + 0, 1, curPose.tx - prevPose.tx, + 0, 0, 1; + + double prevCos = cos(DEG2RAD(prevPose.th)); + double prevSin = sin(DEG2RAD(prevPose.th)); + J2 << prevCos, -prevSin, 0, + prevSin, prevCos, 0, + 0, 0, 1; + + curCov = J1*prevCov*J1.transpose() + J2*mcov*J2.transpose(); +} + +///////////// + +// 共分散行列covをposeの角度分だけ回転させる +void CovarianceCalculator::rotateCovariance(const Pose2D &pose, const Eigen::Matrix3d &cov, Eigen::Matrix3d &icov, bool reverse) { + double cs = cos(DEG2RAD(pose.th)); // poseの回転成分thによるcos + double sn = sin(DEG2RAD(pose.th)); + Eigen::Matrix3d J; // 回転のヤコビ行列 + J << cs, -sn, 0, + sn, cs, 0, + 0, 0, 1; + + Eigen::Matrix3d JT = J.transpose(); + + if (reverse) + icov = JT*cov*J; // 逆回転変換 + else + icov = J*cov*JT; // 回転変換 +} diff --git a/framework/CovarianceCalculator.h b/framework/CovarianceCalculator.h new file mode 100755 index 0000000..9c5f362 --- /dev/null +++ b/framework/CovarianceCalculator.h @@ -0,0 +1,61 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file CovarianceCalculator.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef COVARIANCE_CALCULATOR_H_ +#define COVARIANCE_CALCULATOR_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" + +// ICPによる推定値の共分散、および、オドメトリによる推定値の共分散を計算する。 +class CovarianceCalculator +{ +private: + double dd; // 数値微分の刻み + double da; // 数値微分の刻み + double a1; // オドメトリ共分散の係数 + double a2; // オドメトリ共分散の係数 + +public: + CovarianceCalculator() : dd(0.00001), da(0.00001) { + } + + ~CovarianceCalculator() { + } + + void setAlpha(double a1_, double a2_) { + a1 = a1_; + a2 = a2_; + } + +//////// + + double calIcpCovariance(const Pose2D &pose, std::vector &curLps, std::vector &refLps, Eigen::Matrix3d &cov); + double calPDistance(const LPoint2D *clp, const LPoint2D *rlp, double tx, double ty, double th); + + void calMotionCovarianceSimple(const Pose2D &motion, double dT, Eigen::Matrix3d &cov); + void calMotionCovariance(double th, double dx, double dy, double dth, double dt, Eigen::Matrix3d &cov, bool accum=false); + void calUk(double vt, double wt, Eigen::Matrix2d &Uk); + void calJxk(double th, double vt, double dt, Eigen::Matrix3d &Jxk); + void calJuk(double th, double dt, Eigen::Matrix &Juk); + + double calEigen(const Eigen::Matrix3d &cov, double *vals, double *vec1, double *vec2); + + static void accumulateCovariance(const Pose2D &curPose, const Pose2D &prevPose, const Eigen::Matrix3d &prevCov, const Eigen::Matrix3d &mcov, Eigen::Matrix3d &curCov); + static void rotateCovariance(const Pose2D &pose, const Eigen::Matrix3d &cov, Eigen::Matrix3d &icov, bool reverse=false); +}; + +#endif diff --git a/framework/DataAssociator.h b/framework/DataAssociator.h new file mode 100755 index 0000000..0be19d2 --- /dev/null +++ b/framework/DataAssociator.h @@ -0,0 +1,40 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file DataAssociator.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef DATA_ASSOCIATOR_H_ +#define DATA_ASSOCIATOR_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" + +class DataAssociator +{ +public: + std::vector curLps; // 対応がとれた現在スキャンの点群 + std::vector refLps; // 対応がとれた参照スキャンの点群 + + DataAssociator() { + } + + ~DataAssociator() { + } + + virtual void setRefBase(const std::vector &lps) = 0; + virtual double findCorrespondence(const Scan2D *curScan, const Pose2D &predPose) = 0; +}; + +#endif diff --git a/framework/LPoint2D.h b/framework/LPoint2D.h new file mode 100755 index 0000000..2e54e87 --- /dev/null +++ b/framework/LPoint2D.h @@ -0,0 +1,103 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file LPoint2D.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef LPOINT2D_H_ +#define LPOINT2D_H_ + +//////////////////////// + +struct Vector2D +{ + double x,y; +}; + +//////////////////////// + +enum ptype {UNKNOWN=0, LINE=1, CORNER=2, ISOLATE=3}; // 点のタイプ:未知、直線、コーナ、孤立 + +struct LPoint2D +{ + int sid; // フレーム番号(スキャン番号) + double x; // 位置x + double y; // 位置y + double nx; // 法線ベクトル + double ny; // 法線ベクトル + double atd; // 累積走行距離(accumulated travel distance) + ptype type; // 点のタイプ + + LPoint2D() : sid(-1), x(0), y(0) { + init(); + } + + LPoint2D(int id, double _x, double _y): x(_x), y(_y) { + init(); + sid = id; + } + +////////// + + void init() { + sid = -1; + atd = 0; + type = UNKNOWN; + nx = 0; + ny = 0; + } + + void setData(int id, double _x, double _y) { + init(); + sid = id; + x = _x; + y = _y; + } + + void setXY(double _x, double _y) { + x = _x; + y = _y; + } + + // rangeとangleからxyを求める(右手系) + void calXY(double range, double angle) { + double a = DEG2RAD(angle); + x = range*cos(a); + y = range*sin(a); + } + + // rangeとangleからxyを求める(左手系) + void calXYi(double range, double angle) { + double a = DEG2RAD(angle); + x = range*cos(a); + y = -range*sin(a); + } + + void setSid(int i) { + sid = i; + } + + void setAtd(double t) { + atd = t; + } + + void setType(ptype t) { + type = t; + } + + void setNormal(double x, double y) { + nx = x; + ny = y; + } + +}; + +#endif diff --git a/framework/LoopDetector.cpp b/framework/LoopDetector.cpp new file mode 100755 index 0000000..ec793ba --- /dev/null +++ b/framework/LoopDetector.cpp @@ -0,0 +1,25 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file LoopDetector.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "LoopDetector.h" + +using namespace std; + +//////////// + +// ループ検出のダミー関数 +bool LoopDetector::detectLoop(Scan2D *curScan, Pose2D &curPose, int cnt) { + return(false); +} + diff --git a/framework/LoopDetector.h b/framework/LoopDetector.h new file mode 100755 index 0000000..14bad99 --- /dev/null +++ b/framework/LoopDetector.h @@ -0,0 +1,99 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file LoopDetector.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef LOOP_DETECTOR_H_ +#define LOOP_DETECTOR_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" +#include "PoseGraph.h" + +/////// + +// ループアーク設定情報 +struct LoopInfo +{ + bool arcked; // すでにポーズアークを張ったか + int curId; // 現在キーフレームid(スキャン) + int refId; // 参照キーフレームid(スキャン,または,LocalGridMap2D) + Pose2D pose; // 現在キーフレームが参照キーフレームにマッチするグローバル姿勢(Gridベースの場合は逆) + double score; // ICPマッチングスコア + Eigen::Matrix3d cov; // 共分散 + + LoopInfo() : arcked(false), curId(-1), refId(-1), score(-1) { + } + + ~LoopInfo() { + } + + void setArcked(bool t) { + arcked = t; + } +}; + +////////////// + +// デバッグ用データ +struct LoopMatch +{ + Scan2D curScan; + Scan2D refScan; + LoopInfo info; + + LoopMatch() { + } + + LoopMatch(Scan2D &cs, Scan2D &rs, LoopInfo &i) { + curScan = cs; + refScan = rs; + info = i; + } +}; + +//////////// + +class LoopDetector +{ +protected: + PoseGraph *pg; // ポーズグラフ + std::vector loopMatches; // デバッグ用 + +public: + LoopDetector() { + } + + ~LoopDetector() { + } + +//////// + + // デバッグ用 + std::vector &getLoopMatches() { + return(loopMatches); + } + + void setPoseGraph(PoseGraph *p) { + pg = p; + } + +/////// + + virtual bool detectLoop(Scan2D *curScan, Pose2D &curPose, int cnt); + +}; + +#endif diff --git a/framework/MyUtil.cpp b/framework/MyUtil.cpp new file mode 100755 index 0000000..4d50d98 --- /dev/null +++ b/framework/MyUtil.cpp @@ -0,0 +1,131 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file MyUtil.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "MyUtil.h" +#include + +using namespace std; +using namespace Eigen; + +///////// + +// 角度の加算。-180から180に正規化 +int MyUtil::add(int a1, int a2) { + int sum = a1 + a2; + if (sum < -180) + sum += 360; + else if (sum >= 180) + sum -= 360; + + return(sum); +} + +// 角度の加算。-180から180に正規化 +double MyUtil::add(double a1, double a2) { + double sum = a1 + a2; + if (sum < -180) + sum += 360; + else if (sum >= 180) + sum -= 360; + + return(sum); +} + +// 角度の加算(ラジアン)。-piからpiに正規化 +double MyUtil::addR(double a1, double a2) { + double sum = a1 + a2; + if (sum < -M_PI) + sum += 2*M_PI; + else if (sum >= M_PI) + sum -= 2*M_PI; + + return(sum); +} + +//////////// + +// SVDを用いた逆行列計算 +Eigen::Matrix3d MyUtil::svdInverse(const Matrix3d &A) { + size_t m = A.rows(); + size_t n = A.cols(); + + JacobiSVD svd(A, ComputeThinU | ComputeThinV); + + MatrixXd eU = svd.matrixU(); + MatrixXd eV = svd.matrixV(); + VectorXd eS = svd.singularValues(); + + MatrixXd M1(m, n); + for (size_t i=0; i +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265358979 // 円周率 +#endif + +#ifndef NULL +#define NULL 0 // 基本的には、C++11のnullptrを使う +#endif + +#define DEG2RAD(x) ((x)*M_PI/180) // 度からラジアン +#define RAD2DEG(x) ((x)*180/M_PI) // ラジアンから度 + +typedef unsigned char uchar; + +////////// + +class MyUtil +{ +public: + MyUtil(void) { + } + + ~MyUtil(void){ + } + +/////////// + + static int add(int a1, int a2); + static double add(double a1, double a2); + static double addR(double a1, double a2); + + static Eigen::Matrix3d svdInverse(const Eigen::Matrix3d &A); + static void calEigen2D( double (*mat)[2], double *vals, double *vec1, double *vec2); + +}; + +#endif + diff --git a/framework/NNGridTable.cpp b/framework/NNGridTable.cpp new file mode 100755 index 0000000..fecc9dc --- /dev/null +++ b/framework/NNGridTable.cpp @@ -0,0 +1,128 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file NNGridTable.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "NNGridTable.h" + +using namespace std; + +//////////// + +// 格子テーブルにスキャン点lpを登録する +void NNGridTable::addPoint(const LPoint2D *lp) { + // テーブル検索のインデックス計算。まず、対象領域内にあるかチェックする。 + int xi = static_cast(lp->x/csize) + tsize; + if (xi < 0 || xi > 2*tsize) // 対象領域の外 + return; + int yi = static_cast(lp->y/csize) + tsize; + if (yi < 0 || yi > 2*tsize) // 対象領域の外 + return; + + size_t idx = static_cast(yi*(2*tsize +1) + xi); // テーブルのインデックス + table[idx].lps.push_back(lp); // 目的のセルに入れる +} + +/////////// + +// スキャン点clpをpredPoseで座標変換した位置に最も近い点を格子テーブルから見つける +const LPoint2D *NNGridTable::findClosestPoint(const LPoint2D *clp, const Pose2D &predPose) { + LPoint2D glp; // clpの予測位置 + predPose.globalPoint(*clp, glp); // relPoseで座標変換 + + // clpのテーブルインデックス。対象領域内にあるかチェックする。 + int cxi = static_cast(glp.x/csize) + tsize; + if (cxi < 0 || cxi > 2*tsize) + return(nullptr); + int cyi = static_cast(glp.y/csize) + tsize; + if (cyi < 0 || cyi > 2*tsize) + return(nullptr); + + size_t pn=0; // 探したセル内の点の総数。確認用 + double dmin=1000000; + const LPoint2D *lpmin = nullptr; // 最も近い点(目的の点) + double dthre=0.2; // これより遠い点は除外する[m] + int R=static_cast(dthre/csize); + + // ±R四方を探す + for (int i=-R; i<=R; i++) { + int yi = cyi+i; // cyiから広げる + if (yi < 0 || yi > 2*tsize) + continue; + for (int j=-R; j<=R; j++) { + int xi = cxi+j; // cxiから広げる + if (xi < 0 || xi > 2*tsize) + continue; + + size_t idx = yi*(2*tsize+1) + xi; // テーブルインデックス + NNGridCell &cell = table[idx]; // そのセル + vector &lps = cell.lps; // セルがもつスキャン点群 + for (size_t k=0; kx - glp.x)*(lp->x - glp.x) + (lp->y - glp.y)*(lp->y - glp.y); + + if (d <= dthre*dthre && d < dmin) { // dthre内で距離が最小となる点を保存 + dmin = d; + lpmin = lp; + } + } + pn += lps.size(); + } + } +// printf("pn=%d\n", pn); // 探したセル内の点の総数。確認用 + + return(lpmin); +} + +//////////// + +// 格子テーブルの各セルの代表点を作ってpsに格納する。 +void NNGridTable::makeCellPoints(int nthre, vector &ps) { + // 現状はセル内の各点のスキャン番号の平均をとる。 + // スキャン番号の最新値をとる場合は、その部分のコメントをはずし、 + // 平均とる場合(2行)をコメントアウトする。 + + size_t nn=0; // テーブル内の全セル数。確認用 + for (size_t i=0; i &lps = table[i].lps; // セルのスキャン点群 + nn += lps.size(); + if (lps.size() >= nthre) { // 点数がnthreより多いセルだけ処理する + double gx=0, gy=0; // 点群の重心位置 + double nx=0, ny=0; // 点群の法線ベクトルの平均 + int sid=0; + for (size_t j=0; jx; // 位置を累積 + gy += lp->y; + nx += lp->nx; // 法線ベクトル成分を累積 + ny += lp->ny; + sid += lp->sid; // スキャン番号の平均とる場合 +// if (lp->sid > sid) // スキャン番号の最新値とる場合 +// sid = lp->sid; +// printf("sid=%d\n", lp->sid); + } + gx /= lps.size(); // 平均 + gy /= lps.size(); + double L = sqrt(nx*nx + ny*ny); + nx /= L; // 平均(正規化) + ny /= L; + sid /= lps.size(); // スキャン番号の平均とる場合 + + LPoint2D newLp(sid, gx, gy); // セルの代表点を生成 + newLp.setNormal(nx, ny); // 法線ベクトル設定 + newLp.setType(LINE); // タイプは直線にする + ps.emplace_back(newLp); // psに追加 + } + } + +// printf("nn=%d\n", nn); // テーブル内の全セル数。確認用 +} diff --git a/framework/NNGridTable.h b/framework/NNGridTable.h new file mode 100755 index 0000000..bc8ce71 --- /dev/null +++ b/framework/NNGridTable.h @@ -0,0 +1,66 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file NNGridTable.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _NN_GRID_TABLE_H_ +#define _NN_GRID_TABLE_H_ + +#include +#include "MyUtil.h" +#include "Pose2D.h" + +struct NNGridCell +{ + std::vector lps; // このセルに格納されたスキャン点群 + + void clear() { + lps.clear(); // 空にする + } +}; + +/////// + +// 格子テーブル +class NNGridTable +{ +private: + double csize; // セルサイズ[m] + double rsize; // 対象領域のサイズ[m]。正方形の1辺の半分。 + int tsize; // テーブルサイズの半分 + std::vector table; // テーブル本体 + +public: + NNGridTable() : csize(0.05), rsize(40){ // セル5cm、対象領域40x2m四方 + tsize = static_cast(rsize/csize); // テーブルサイズの半分 + size_t w = static_cast(2*tsize+1); // テーブルサイズ + table.resize(w*w); // 領域確保 + clear(); // tableの初期化 + } + + ~NNGridTable() { + } + + void clear() { + for (size_t i=0; i &ps); +}; + +#endif + diff --git a/framework/P2oDriver2D.cpp b/framework/P2oDriver2D.cpp new file mode 100755 index 0000000..c4a9c7f --- /dev/null +++ b/framework/P2oDriver2D.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file P2oDriver2D.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "P2oDriver2D.h" +#include "p2o.h" + +using namespace std; + +//////// + +// kslamを用いてポーズグラフpgをポーズ調整し、その結果のロボット軌跡をnewPosesに格納する。 +void P2oDriver2D::doP2o( PoseGraph &pg, vector &newPoses, int N) { + vector &nodes = pg.nodes; // ポーズノード + vector &arcs = pg.arcs; // ポーズアーク + + // ポーズノードをp2o用に変換 + vector pnodes; // p2oのポーズノード集合 + for (size_t i=0; ipose; // ノードの位置 + pnodes.push_back(p2o::Pose2D(pose.tx, pose.ty, DEG2RAD(pose.th))); // 位置だけ入れる + } + + + // ポーズアークをkslam用に変換 + p2o::Con2DVec pcons; // p2oのポーズアーク集合 + for (size_t i=0; isrc; + PoseNode *dst = arc->dst; + Pose2D &relPose = arc->relPose; + p2o::Con2D con; + con.id1 = src->nid; + con.id2 = dst->nid; + con.t = p2o::Pose2D(relPose.tx, relPose.ty, DEG2RAD(relPose.th)); + for (int k=0; k<3; k++) + for (int m=0; m<3; m++) + con.info(k, m) = arc->inf(k,m); + pcons.push_back(con); + } + +// printf("knodes.size=%lu, kcons.size=%lu\n", knodes.size(), kcons.size()); // 確認用 + + p2o::Optimizer2D opt; // p2oインスタンス + std::vector result = opt.optimizePath(pnodes, pcons, N); // N回実行 + + // 結果をnewPoseに格納する + for (size_t i=0; i +#include +#include + +#include "MyUtil.h" +#include "Pose2D.h" +#include "Scan2D.h" +#include "PoseGraph.h" + +////////// + +// ポーズグラフ最適化ライブラリkslamを起動する。 +class P2oDriver2D +{ +public: + + P2oDriver2D() { + } + + ~P2oDriver2D() { + } + +/////// + + void doP2o( PoseGraph &graph, std::vector &newPoses, int N); + +}; + +#endif diff --git a/framework/PointCloudMap.h b/framework/PointCloudMap.h new file mode 100755 index 0000000..6a1e77a --- /dev/null +++ b/framework/PointCloudMap.h @@ -0,0 +1,73 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PointCloudMap.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef POINT_CLOUD_MAP_H_ +#define POINT_CLOUD_MAP_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" + +// 点群地図の基底クラス +class PointCloudMap +{ +public: + static const int MAX_POINT_NUM=1000000; // globalMapの最大点数 + + int nthre; // 格子テーブルセル点数閾値(GTとLPのみ) + + std::vector poses; // ロボット軌跡 + Pose2D lastPose; // 最後に推定したロボット位置 + Scan2D lastScan; // 最後に処理したスキャン + + std::vector globalMap; // 全体地図。間引き後の点 + std::vector localMap; // 現在位置近傍の局所地図。スキャンマッチングに使う + + PointCloudMap() : nthre(1) { + globalMap.reserve(MAX_POINT_NUM); // 最初に確保 + } + + ~PointCloudMap() { + } + +/////// + + void setNthre(int n) { + nthre = n; + } + + void setLastPose(const Pose2D &p) { + lastPose = p; + } + + Pose2D getLastPose() const { + return(lastPose); + } + + void setLastScan(const Scan2D &s) { + lastScan = s; + } + +///////////// + + virtual void addPose(const Pose2D &p) = 0; + virtual void addPoints(const std::vector &lps) = 0; + virtual void makeGlobalMap() = 0; + virtual void makeLocalMap() = 0; + virtual void remakeMaps(const std::vector &newPoses) = 0; +}; + +#endif diff --git a/framework/Pose2D.cpp b/framework/Pose2D.cpp new file mode 100755 index 0000000..65be1ca --- /dev/null +++ b/framework/Pose2D.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file Pose2D.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "Pose2D.h" + +// グローバル座標系での点pを、自分(Pose2D)の局所座標系に変換 +LPoint2D Pose2D::relativePoint(const LPoint2D &p) const { + double dx = p.x - tx; + double dy = p.y - ty; + double x = dx*Rmat[0][0] + dy*Rmat[1][0]; // 回転の逆行列 + double y = dx*Rmat[0][1] + dy*Rmat[1][1]; + return LPoint2D(p.sid, x, y); +} + +//////// + +// 自分(Pose2D)の局所座標系での点pを、グローバル座標系に変換 +LPoint2D Pose2D::globalPoint(const LPoint2D &p) const { + double x = Rmat[0][0]*p.x + Rmat[0][1]*p.y + tx; + double y = Rmat[1][0]*p.x + Rmat[1][1]*p.y + ty; + return LPoint2D(p.sid, x, y); +} + +// 自分(Pose2D)の局所座標系での点pを、グローバル座標系に変換してpoに入れる +void Pose2D::globalPoint(const LPoint2D &pi, LPoint2D &po) const { + po.x = Rmat[0][0]*pi.x + Rmat[0][1]*pi.y + tx; + po.y = Rmat[1][0]*pi.x + Rmat[1][1]*pi.y + ty; +} + +/////// + +// 基準座標系bposeから見た現座標系nposeの相対位置relPoseを求める(Inverse compounding operator) +void Pose2D::calRelativePose(const Pose2D &npose, const Pose2D &bpose, Pose2D &relPose) { + const double (*R0)[2] = bpose.Rmat; // 基準座標系 + const double (*R1)[2] = npose.Rmat; // 現座標系 + double (*R2)[2] = relPose.Rmat; // 相対位置 + + // 並進 + double dx = npose.tx - bpose.tx; + double dy = npose.ty - bpose.ty; + relPose.tx = R0[0][0]*dx + R0[1][0]*dy; + relPose.ty = R0[0][1]*dx + R0[1][1]*dy; + + // 回転 + double th = npose.th - bpose.th; + if (th < -180) + th += 360; + else if (th >= 180) + th -= 360; + relPose.th = th; + + relPose.calRmat(); +} + +// 基準座標系bposeから相対位置relPoseだけ進んだ、座標系nposeを求める(Compounding operator) +void Pose2D::calGlobalPose(const Pose2D &relPose, const Pose2D &bpose, Pose2D &npose) { + const double (*R0)[2] = bpose.Rmat; // 基準座標系 + const double (*R1)[2] = relPose.Rmat; // 相対位置 + double (*R2)[2] = npose.Rmat; // 新座標系 + + // 並進 + double tx = relPose.tx; + double ty = relPose.ty; + npose.tx = R0[0][0]*tx + R0[0][1]*ty + bpose.tx; + npose.ty = R0[1][0]*tx + R0[1][1]*ty + bpose.ty; + + // 角度 + double th = bpose.th + relPose.th; + if (th < -180) + th += 360; + else if (th >= 180) + th -= 360; + npose.th = th; + + npose.calRmat(); +} diff --git a/framework/Pose2D.h b/framework/Pose2D.h new file mode 100755 index 0000000..c33518a --- /dev/null +++ b/framework/Pose2D.h @@ -0,0 +1,113 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file Pose2D.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _POSE2D_H_ +#define _POSE2D_H_ + +#include "MyUtil.h" +#include "LPoint2D.h" + +///////// + +struct Pose2D +{ + double tx; // 並進x + double ty; // 並進y + double th; // 回転角(度) + double Rmat[2][2]; // 姿勢の回転行列 + + Pose2D() : tx(0), ty(0), th(0) { + for(int i=0;i<2;i++) { + for(int j=0;j<2;j++) { + Rmat[i][j] = (i==j)? 1.0:0.0; + } + } + } + + Pose2D(double tx, double ty, double th) { + this->tx = tx; + this->ty = ty; + this->th = th; + calRmat(); + } + + Pose2D(double mat[2][2], double tx, double ty, double th) { + for(int i=0;i<2;i++) { + for(int j=0;j<2;j++) { + Rmat[i][j] = mat[i][j]; + } + } + this->tx = tx; + this->ty = ty; + this->th = th; + } + +///////////////// + + void reset() { + tx = ty = th = 0; + calRmat(); + } + + void setVal(double x, double y, double a) { + tx = x; + ty = y; + th = a; + calRmat(); + } + + void calRmat() { + double a = DEG2RAD(th); + Rmat[0][0] = Rmat[1][1] = cos(a); + Rmat[1][0] = sin(a); + Rmat[0][1] = -Rmat[1][0]; + } + + void setTranslation(double tx, double ty) { + this->tx = tx; + this->ty = ty; + } + + void setAngle(double th) { + this->th = th; + } + +/////////// + + LPoint2D relativePoint(const LPoint2D &p) const; + LPoint2D globalPoint(const LPoint2D &p) const; + void globalPoint(const LPoint2D &pi, LPoint2D &po) const; + + static void calRelativePose(const Pose2D &npose, const Pose2D &bpose, Pose2D &relPose); + static void calGlobalPose(const Pose2D &relPose, const Pose2D &bpose, Pose2D &npose); + +}; + +/////// + +struct PoseCov +{ + Pose2D pose; + Eigen::Matrix3d cov; + + PoseCov() { + } + + PoseCov(Pose2D &p, Eigen::Matrix3d &c) { + pose = p; + cov = c; + } +}; + +#endif \ No newline at end of file diff --git a/framework/PoseEstimatorICP.cpp b/framework/PoseEstimatorICP.cpp new file mode 100755 index 0000000..80fde8d --- /dev/null +++ b/framework/PoseEstimatorICP.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseEstimatorICP.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include +#include "PoseEstimatorICP.h" + +using namespace std; + +////////////// + +// 初期値initPoseを与えて、ICPによりロボット位置の推定値estPoseを求める +double PoseEstimatorICP::estimatePose(Pose2D &initPose, Pose2D &estPose){ + boost::timer tim; + + double evmin = HUGE_VAL; // コスト最小値。初期値は大きく + double evthre = 0.000001; // コスト変化閾値。変化量がこれ以下なら繰り返し終了 +// double evthre = 0.00000001; // コスト変化閾値。変化量がこれ以下なら繰り返し終了 + popt->setEvthre(evthre); + popt->setEvlimit(0.2); // evlimitは外れ値の閾値[m] + + double ev = 0; // コスト + double evold = evmin; // 1つ前の値。収束判定のために使う。 + Pose2D pose = initPose; + Pose2D poseMin = initPose; + for (int i=0; abs(evold-ev) > evthre && i<100; i++) { // i<100は振動対策 + if (i > 0) + evold = ev; + double mratio = dass->findCorrespondence(curScan, pose); // データ対応づけ + Pose2D newPose; + popt->setPoints(dass->curLps, dass->refLps); // 対応結果を渡す + ev = popt->optimizePose(pose, newPose); // その対応づけにおいてロボット位置の最適化 + pose = newPose; + + if (ev < evmin) { // コスト最小結果を保存 + poseMin = newPose; + evmin = ev; + } + +// printf("dass.curLps.size=%lu, dass.refLps.size=%lu\n", dass->curLps.size(), dass->refLps.size()); +// printf("mratio=%g\n", mratio); +// printf("i=%d: ev=%g, evold=%g\n", i, ev, evold); + } + + pnrate = popt->getPnrate(); + usedNum = dass->curLps.size(); + + estPose = poseMin; + + printf("finalError=%g, pnrate=%g\n", evmin, pnrate); + printf("estPose: tx=%g, ty=%g, th=%g\n", pose.tx, pose.ty, pose.th); // 確認用 + + double t1 = 1000*tim.elapsed(); + printf("PoseEstimatorICP: t1=%g\n", t1); // 処理時間 + + if (evmin < HUGE_VAL) + totalError += evmin; // 誤差合計 + totalTime += t1; // 処理時間合計 + printf("totalError=%g, totalTime=%g\n", totalError, totalTime); // 確認用 + + return(evmin); +} diff --git a/framework/PoseEstimatorICP.h b/framework/PoseEstimatorICP.h new file mode 100755 index 0000000..6e97880 --- /dev/null +++ b/framework/PoseEstimatorICP.h @@ -0,0 +1,83 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseEstimatorICP.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _POSEESTIMATOR_ICP_H_ +#define _POSEESTIMATOR_ICP_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" +#include "PoseOptimizer.h" +#include "DataAssociator.h" + +////// + +class PoseEstimatorICP +{ +private: + const Scan2D *curScan; // 現在スキャン + size_t usedNum; // ICPに使われた点数。LoopDetectorで信頼性チェックに使う + double pnrate; // 正しく対応づけされた点の比率 + + PoseOptimizer *popt; // 最適化クラス + DataAssociator *dass; // データ対応づけクラス + +public: + double totalError; // 誤差合計 + double totalTime; // 処理時間合計 + +public: + + PoseEstimatorICP() : usedNum(0), pnrate(0), totalError(0), totalTime(0) { + } + + ~PoseEstimatorICP() { + } + +/////// + + void setPoseOptimizer(PoseOptimizer *p) { + popt = p; + } + + void setDataAssociator(DataAssociator *d) { + dass = d; + } + + double getPnrate() { + return(pnrate); + } + + size_t getUsedNum() { + return(usedNum); + } + + void setScanPair(const Scan2D *c, const Scan2D *r) { + curScan = c; + dass->setRefBase(r->lps); // データ対応づけのために参照スキャン点を登録 + } + + void setScanPair(const Scan2D *c, const std::vector &refLps) { + curScan = c; + dass->setRefBase(refLps); // データ対応づけのために参照スキャン点を登録 + } + +//////////// + + double estimatePose(Pose2D &initPose, Pose2D &estPose); +}; + +#endif diff --git a/framework/PoseFuser.cpp b/framework/PoseFuser.cpp new file mode 100755 index 0000000..f767437 --- /dev/null +++ b/framework/PoseFuser.cpp @@ -0,0 +1,123 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseFuser.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "PoseFuser.h" + +using namespace std; + +////////////// 逐次SLAM用のセンサ融合 //////////////// + +// 逐次SLAMでのICPとオドメトリの推定移動量を融合する。dassに参照スキャンを入れておくこと。covに移動量の共分散行列が入る。 +double PoseFuser::fusePose(Scan2D *curScan, const Pose2D &estPose, const Pose2D &odoMotion, const Pose2D &lastPose, Pose2D &fusedPose, Eigen::Matrix3d &fusedCov) { + // ICPの共分散 + dass->findCorrespondence(curScan, estPose); // 推定位置estPoseで現在スキャン点群と参照スキャン点群の対応づけ + double ratio = cvc.calIcpCovariance(estPose, dass->curLps, dass->refLps, ecov); // ここで得られるのは、地図座標系での位置の共分散 + + // オドメトリの位置と共分散。速度運動モデルを使うと、短期間では共分散が小さすぎるため、簡易版で大きめに計算する + Pose2D predPose; // 予測位置 + Pose2D::calGlobalPose(odoMotion, lastPose, predPose); // 直前位置lastPoseに移動量を加えて予測位置を計算 + Eigen::Matrix3d mcovL; + double dT=0.1; + cvc.calMotionCovarianceSimple(odoMotion, dT, mcovL); // オドメトリで得た移動量の共分散(簡易版) + CovarianceCalculator::rotateCovariance(estPose, mcovL, mcov); // 現在位置estPoseで回転させて、地図座標系での共分散mcovを得る + + // ecov, mcov, covともに、lastPoseを原点とした局所座標系での値 + Eigen::Vector3d mu1(estPose.tx, estPose.ty, DEG2RAD(estPose.th)); // ICPによる推定値 + Eigen::Vector3d mu2(predPose.tx, predPose.ty, DEG2RAD(predPose.th)); // オドメトリによる推定値 + Eigen::Vector3d mu; + fuse(mu1, ecov, mu2, mcov, mu, fusedCov); // 2つの正規分布の融合 + + fusedPose.setVal(mu[0], mu[1], RAD2DEG(mu[2])); // 融合した移動量を格納 + + totalCov = fusedCov; + + // 確認用 + printf("fusePose\n"); + double vals[2], vec1[2], vec2[2]; + printf("ecov: det=%g, ", ecov.determinant()); + cvc.calEigen(ecov, vals, vec1, vec2); + printf("mcov: det=%g, ", mcov.determinant()); + cvc.calEigen(mcov, vals, vec1, vec2); + printf("fusedCov: det=%g, ", fusedCov.determinant()); + cvc.calEigen(fusedCov, vals, vec1, vec2); + + printf("predPose: tx=%g, ty=%g, th=%g\n", predPose.tx, predPose.ty, predPose.th); + printf("estPose: tx=%g, ty=%g, th=%g\n", estPose.tx, estPose.ty, estPose.th); + printf("fusedPose: tx=%g, ty=%g, th=%g\n", fusedPose.tx, fusedPose.ty, fusedPose.th); + + return(ratio); +} + +void PoseFuser::calOdometryCovariance(const Pose2D &odoMotion, const Pose2D &lastPose, Eigen::Matrix3d &mcov) { + Eigen::Matrix3d mcovL; + double dT=0.1; + cvc.calMotionCovarianceSimple(odoMotion, dT, mcovL); // オドメトリで得た移動量の共分散(簡易版) + CovarianceCalculator::rotateCovariance(lastPose, mcovL, mcov); // 直前位置lastPoseで回転させて、位置の共分散mcovを得る +} + +/////// ガウス分布の融合 /////// + +// 2つの正規分布を融合する。muは平均、cvは共分散。 +double PoseFuser::fuse(const Eigen::Vector3d &mu1, const Eigen::Matrix3d &cv1, const Eigen::Vector3d &mu2, const Eigen::Matrix3d &cv2, Eigen::Vector3d &mu, Eigen::Matrix3d &cv) { + // 共分散行列の融合 + Eigen::Matrix3d IC1 = MyUtil::svdInverse(cv1); + Eigen::Matrix3d IC2 = MyUtil::svdInverse(cv2); + Eigen::Matrix3d IC = IC1 + IC2; + cv = MyUtil::svdInverse(IC); + + // 角度の補正。融合時に連続性を保つため。 + Eigen::Vector3d mu11 = mu1; // ICPの方向をオドメトリに合せる + double da = mu2(2) - mu1(2); + if (da > M_PI) + mu11(2) += 2*M_PI; + else if (da < -M_PI) + mu11(2) -= 2*M_PI; + + // 平均の融合 + Eigen::Vector3d nu1 = IC1*mu11; + Eigen::Vector3d nu2 = IC2*mu2; + Eigen::Vector3d nu3 = nu1 + nu2; + mu = cv*nu3; + + // 角度の補正。(-pi, pi)に収める + if (mu(2) > M_PI) + mu(2) -= 2*M_PI; + else if (mu(2) < -M_PI) + mu(2) += 2*M_PI; + + // 係数部の計算 + Eigen::Vector3d W1 = IC1*mu11; + Eigen::Vector3d W2 = IC2*mu2; + Eigen::Vector3d W = IC*mu; + double A1 = mu1.dot(W1); + double A2 = mu2.dot(W2); + double A = mu.dot(W); + double K = A1+A2-A; + +/* + printf("cv1: det=%g\n", cv1.determinant()); + printMatrix(cv1); + printf("cv2: det=%g\n", cv2.determinant()); + printMatrix(cv2); + printf("cv: det=%g\n", cv.determinant()); + printMatrix(cv); +*/ + + return(K); +} + +void PoseFuser::printMatrix(const Eigen::Matrix3d &mat) { + for (int i=0; i<3; i++) + printf("%g %g %g\n", mat(i,0), mat(i,1), mat(i,2)); +} diff --git a/framework/PoseFuser.h b/framework/PoseFuser.h new file mode 100755 index 0000000..e9fb080 --- /dev/null +++ b/framework/PoseFuser.h @@ -0,0 +1,75 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseFuser.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef POSE_FUSER_H_ +#define POSE_FUSER_H_ + +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" +#include "DataAssociator.h" +#include "CovarianceCalculator.h" + +// センサ融合器。ICPとオドメトリの推定値を融合する。 +class PoseFuser +{ +public: + Eigen::Matrix3d ecov; // ICPの共分散行列 + Eigen::Matrix3d mcov; // オドメトリの共分散行列 + Eigen::Matrix3d totalCov; + + DataAssociator *dass; // データ対応づけ器 + CovarianceCalculator cvc; // 共分散計算器 + +public: + PoseFuser() { + } + + ~PoseFuser() { + } + +///// + + void setDataAssociator(DataAssociator *d) { + dass = d; + } + + void setRefScan(const Scan2D *refScan) { + dass->setRefBase(refScan->lps); + } + + void setRefLps(const std::vector &refLps) { + dass->setRefBase(refLps); + } + + // ICPの共分散行列の計算。setRefLpsの後に行うこと。 + double calIcpCovariance(const Pose2D &estMotion, const Scan2D *curScan, Eigen::Matrix3d &cov) { + dass->findCorrespondence(curScan, estMotion); + + // ICPの共分散。ここで得られるのは、世界座標系での共分散 + double ratio = cvc.calIcpCovariance(estMotion, dass->curLps, dass->refLps, cov); + return(ratio); + } + +////////// + + double fusePose(Scan2D *curScan, const Pose2D &estPose, const Pose2D &odoMotion, const Pose2D &lastPose, Pose2D &fusedPose, Eigen::Matrix3d &cov); + void calOdometryCovariance(const Pose2D &odoMotion, const Pose2D &lastPose, Eigen::Matrix3d &mcov); + double fuse(const Eigen::Vector3d &mu1, const Eigen::Matrix3d &cv1, const Eigen::Vector3d &mu2, const Eigen::Matrix3d &cv2, Eigen::Vector3d &mu, Eigen::Matrix3d &cv); + void printMatrix(const Eigen::Matrix3d &mat); + +}; + +#endif diff --git a/framework/PoseGraph.cpp b/framework/PoseGraph.cpp new file mode 100755 index 0000000..2f7c0c5 --- /dev/null +++ b/framework/PoseGraph.cpp @@ -0,0 +1,108 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseGraph.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "PoseGraph.h" + +using namespace std; + +//////////// グラフ生成 //////////// + +// ポーズグラフにノード追加 +PoseNode *PoseGraph::addNode(const Pose2D &pose) { + PoseNode *n1 = allocNode(); // ノード生成 + addNode(n1, pose); // ポーズグラフにノード追加 + + return(n1); +} + +// ポーズグラフにノード追加 +void PoseGraph::addNode(PoseNode *n1, const Pose2D &pose) { + n1->setNid((int)nodes.size()); // ノードID付与。ノードの通し番号と同じ + n1->setPose(pose); // ロボット位置を設定 + nodes.push_back(n1); // nodesの最後に追加 +} + +// ノードID(nid)からノード実体を見つける +PoseNode *PoseGraph::findNode(int nid) { + for (size_t i=0; inid == nid) // nidが一致したら見つけた + return(n); + } + + return(nullptr); +} + +////////// + +// ポーズグラフにアークを追加する +void PoseGraph::addArc(PoseArc *arc) { + arc->src->addArc(arc); // 始点ノードにarcを追加 + arc->dst->addArc(arc); // 終点ノードにarcを追加 + arcs.push_back(arc); // arcsの最後にarcを追加 +} + +// 始点ノードsrcNidと終点ノードdstNidの間にアークを生成する +PoseArc *PoseGraph::makeArc(int srcNid, int dstNid, const Pose2D &relPose, const Eigen::Matrix3d &cov) { +// Eigen::Matrix3d inf = cov.inverse(); // infはcovの逆行列 + Eigen::Matrix3d inf = MyUtil::svdInverse(cov); // infはcovの逆行列 + + PoseNode *src = nodes[srcNid]; // 始点ノード + PoseNode *dst = nodes[dstNid]; // 終点ノード + + PoseArc *arc = allocArc(); // アークの生成 + arc->setup(src, dst, relPose, inf); // relPoseは計測による相対位置 + + return(arc); +} + +// 始点ノードがsrcNid、終点ノードがdstNidであるアークを返す +PoseArc *PoseGraph::findArc(int srcNid, int dstNid) { + for (size_t i=0; isrc->nid == srcNid && a->dst->nid == dstNid) + return(a); + } + return(nullptr); +} + +//////////////// + +// 確認用 +void PoseGraph::printNodes() { + printf("--- printNodes ---\n"); + printf("nodes.size=%lu\n", nodes.size()); + for (size_t i=0; inid, node->pose.tx, node->pose.ty, node->pose.th); + + for (size_t j=0; jarcs.size(); j++) { + PoseArc *a = node->arcs[j]; + printf("arc j=%lu: srcId=%d, dstId=%d, src=%p, dst=%p\n", j, a->src->nid, a->dst->nid, a->src, a->dst); + } + } +} + +// 確認用 +void PoseGraph::printArcs() { + printf("--- printArcs ---\n"); + printf("arcs.size=%lu\n", arcs.size()); + for (size_t j=0; jsrc->pose.tx - a->dst->pose.tx)*(a->src->pose.tx - a->dst->pose.tx) + (a->src->pose.ty - a->dst->pose.ty)*(a->src->pose.ty - a->dst->pose.ty); + + Pose2D &rpose = a->relPose; + printf("j=%lu, srcId=%d, dstId=%d, tx=%g, ty=%g, th=%g\n", j, a->src->nid, a->dst->nid, rpose.tx, rpose.ty, rpose.th); + } +} diff --git a/framework/PoseGraph.h b/framework/PoseGraph.h new file mode 100755 index 0000000..231ab37 --- /dev/null +++ b/framework/PoseGraph.h @@ -0,0 +1,164 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseGraph.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef POSE_GRAPH_H_ +#define POSE_GRAPH_H_ + +#include +#include "MyUtil.h" +#include "Pose2D.h" + +struct PoseArc; + +///////// + +// ポーズグラフの頂点 +struct PoseNode +{ + int nid; // ノードID。PoseGraphのnodesのインデックス(通し番号) + Pose2D pose; // このノードのロボット位置 + std::vector arcs; // このノードにつながるアーク + + PoseNode(): nid(-1) { + } + + PoseNode(const Pose2D &p) : nid(-1) { + pose = p; + } + + ~PoseNode() { + } + +////// + + void init() { + nid = -1; + arcs.clear(); + } + + void setPose(const Pose2D &p) { + pose = p; + } + + void setNid(int n) { + nid = n; + } + + void addArc(PoseArc *a) { + arcs.push_back(a); + } + +}; + +//////// + +// ポーズグラフの辺 +struct PoseArc +{ + PoseNode *src; // このアークの始点側のノード + PoseNode *dst; // このアークの終点側のノード + Pose2D relPose; // このアークのもつ相対位置(計測値) + Eigen::Matrix3d inf; // 情報行列 + + PoseArc(void) : src(nullptr), dst(nullptr){ + } + + PoseArc(PoseNode *s, PoseNode *d, Pose2D &rel, const Eigen::Matrix3d _inf) { + setup(s, d, rel, _inf); + } + + ~PoseArc(void) { + } + +///////// + + void setup(PoseNode *s, PoseNode *d, const Pose2D &rel, const Eigen::Matrix3d _inf) { + src = s; + dst = d; + relPose = rel; + inf = _inf; + } + +}; + +////////// ポーズグラフ ////////// + +class PoseGraph +{ +private: + static const int POOL_SIZE=100000; + std::vector nodePool; // ノード生成用のメモリプール + std::vector arcPool; // アーク生成用のメモリプール + +public: + std::vector nodes; // ノードの集合 + std::vector arcs; // アークの集合。アークは片方向のみもつ + + PoseGraph() { + nodePool.reserve(POOL_SIZE); // メモリプールの領域を最初に確保。vectorはサイズが変わると中身が移動するのでこうしないと危険 + arcPool.reserve(POOL_SIZE); + } + + ~PoseGraph() { + } + +////////////// + + void reset() { + nodes.clear(); + arcs.clear(); + nodePool.clear(); + arcPool.clear(); + } + + // ノードの生成 + PoseNode *allocNode() { + if (nodePool.size() >= POOL_SIZE) { + printf("Error: exceeds nodePool capacity\n"); + return(nullptr); + } + + PoseNode node; + nodePool.emplace_back(node); // メモリプールに追加して、それを参照する。 + return(&(nodePool.back())); + } + + // アークの生成 + PoseArc *allocArc() { + if (arcPool.size() >= POOL_SIZE) { + printf("Error: exceeds arcPool capacity\n"); + return(nullptr); + } + + PoseArc arc; + arcPool.emplace_back(arc); // メモリプールに追加して、それを参照する。 + return(&(arcPool.back())); + } + +////////////// + + PoseNode *addNode(const Pose2D &pose); + void addNode(PoseNode *n1, const Pose2D &pose); + PoseNode *findNode(int nid); + + void addArc(PoseArc *arc); + PoseArc *makeArc(int srcNid, int dstNid, const Pose2D &relPose, const Eigen::Matrix3d &cov); + PoseArc *findArc(int srcNid, int dstNid); + + void printNodes(); + void printArcs(); + +}; + +#endif diff --git a/framework/PoseOptimizer.h b/framework/PoseOptimizer.h new file mode 100755 index 0000000..962e15d --- /dev/null +++ b/framework/PoseOptimizer.h @@ -0,0 +1,76 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseOptimizer.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _POSE_OPTIMIZER_H_ +#define _POSE_OPTIMIZER_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "CostFunction.h" + +class PoseOptimizer +{ +public: + int allN; // 繰り返し総数。テスト用 + double sum; // 残差合計。テスト用 + +protected: + double evthre; // コスト変化閾値。変化量がこれ以下なら繰り返し終了 + double dd; // 数値微分の刻み(並進) + double da; // 数値微分の刻み(回転) + + CostFunction *cfunc; // コスト関数 + +public: + PoseOptimizer(): evthre(0.000001), dd(0.00001), da(0.00001), cfunc(nullptr) { + allN=0; sum=0; + } + + ~PoseOptimizer() { + } + +///// + + void setCostFunction(CostFunction *f) { + cfunc = f; + } + + void setEvlimit(double l) { + cfunc->setEvlimit(l); + } + + void setPoints(std::vector &curLps, std::vector &refLps) { + cfunc->setPoints(curLps, refLps); + } + + void setEvthre(double inthre) { + this->evthre = inthre; + } + double getPnrate() { + return (cfunc->getPnrate()); + } + + void setDdDa(double d, double a){ + dd = d; + da = a; + } + +//////// + + virtual double optimizePose(Pose2D &initPose, Pose2D &estPose) = 0; +}; + +#endif diff --git a/framework/RefScanMaker.h b/framework/RefScanMaker.h new file mode 100755 index 0000000..8350d48 --- /dev/null +++ b/framework/RefScanMaker.h @@ -0,0 +1,46 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file RefScanMaker.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _REF_SCAN_MAKER_H_ +#define _REF_SCAN_MAKER_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" +#include "PointCloudMap.h" + +class RefScanMaker +{ +protected: + const PointCloudMap *pcmap; // 点群地図 + Scan2D refScan; // 参照スキャン本体。これを外に提供 + +public: + RefScanMaker() : pcmap(nullptr) { + } + + ~RefScanMaker() { + } + + void setPointCloudMap(const PointCloudMap *p) { + pcmap = p; + } + + virtual const Scan2D *makeRefScan() = 0; + +}; + +#endif diff --git a/framework/Scan2D.cpp b/framework/Scan2D.cpp new file mode 100755 index 0000000..8edb9a5 --- /dev/null +++ b/framework/Scan2D.cpp @@ -0,0 +1,21 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file Scan2D.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "Scan2D.h" + +using namespace std; + +double Scan2D::MAX_SCAN_RANGE = 6; +double Scan2D::MIN_SCAN_RANGE = 0.1; + diff --git a/framework/Scan2D.h b/framework/Scan2D.h new file mode 100755 index 0000000..b8c35a0 --- /dev/null +++ b/framework/Scan2D.h @@ -0,0 +1,57 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file Scan2D.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SCAN2D_H_ +#define SCAN2D_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" + +////////// + +// スキャン +struct Scan2D +{ + static double MAX_SCAN_RANGE; // スキャン点の距離値上限[m] + static double MIN_SCAN_RANGE; // スキャン点の距離値下限[m] + + int sid; // スキャンid + Pose2D pose; // スキャン取得時のオドメトリ値 + std::vector lps; // スキャン点群 + + Scan2D() : sid(0) { + } + + ~Scan2D() { + } + +/////// + + void setSid(int s) { + sid = s; + } + + void setLps (const std::vector &ps) { + lps = ps; + } + + void setPose(Pose2D &p) { + pose = p; + } + +}; + +#endif diff --git a/framework/ScanMatcher2D.cpp b/framework/ScanMatcher2D.cpp new file mode 100755 index 0000000..1955a9d --- /dev/null +++ b/framework/ScanMatcher2D.cpp @@ -0,0 +1,153 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file ScanMatcher2D.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "ScanMatcher2D.h" + +using namespace std; + +///////// + +// スキャンマッチングの実行 +bool ScanMatcher2D::matchScan(Scan2D &curScan) { + ++cnt; + + printf("----- ScanMatcher2D: cnt=%d start -----\n", cnt); + + // spresが設定されていれば、スキャン点間隔を均一化する + if (spres != nullptr) + spres->resamplePoints(&curScan); + + // spanaが設定されていれば、スキャン点の法線を計算する + if (spana != nullptr) + spana->analysePoints(curScan.lps); + + // 最初のスキャンは単に地図に入れるだけ + if (cnt == 0) { + growMap(curScan, initPose); + prevScan = curScan; // 直前スキャンの設定 + return(true); + } + + // Scanに入っているオドメトリ値を用いて移動量を計算する + Pose2D odoMotion; // オドメトリに基づく移動量 + Pose2D::calRelativePose(curScan.pose, prevScan.pose, odoMotion); // 前スキャンとの相対位置が移動量 + + Pose2D lastPose = pcmap->getLastPose(); // 直前位置 + Pose2D predPose; // オドメトリによる予測位置 + Pose2D::calGlobalPose(odoMotion, lastPose, predPose); // 直前位置に移動量を加えて予測位置を得る + + const Scan2D *refScan = rsm->makeRefScan(); // 参照スキャンの生成 + estim->setScanPair(&curScan, refScan); // ICPにスキャンを設定 + printf("curScan.size=%lu, refScan.size=%lu\n", curScan.lps.size(), refScan->lps.size()); + + Pose2D estPose; // ICPによる推定位置 + double score = estim->estimatePose(predPose, estPose); // 予測位置を初期値にしてICPを実行 + size_t usedNum = estim->getUsedNum(); + + bool successful; // スキャンマッチングに成功したかどうか + if (score <= scthre && usedNum >= nthre) // スコアが閾値より小さければ成功とする + successful = true; + else + successful = false; + printf("score=%g, usedNum=%lu, successful=%d\n", score, usedNum, successful); + + if (dgcheck) { // 退化の対処をする場合 + if (successful) { + Pose2D fusedPose; // 融合結果 + Eigen::Matrix3d fusedCov; // センサ融合後の共分散 + pfu->setRefScan(refScan); + // センサ融合器pfuで、ICP結果とオドメトリ値を融合する + double ratio = pfu->fusePose(&curScan, estPose, odoMotion, lastPose, fusedPose, fusedCov); + estPose = fusedPose; + cov = fusedCov; + printf("ratio=%g. Pose fused.\n", ratio); // ratioは退化度。確認用 + + // 共分散を累積する + Eigen::Matrix3d covL; // 移動量の共分散 + CovarianceCalculator::rotateCovariance(lastPose, fusedCov, covL, true); // 移動量の共分散に変換 + Eigen::Matrix3d tcov; // 累積後の共分散 + CovarianceCalculator::accumulateCovariance(lastPose, estPose, totalCov, covL, tcov); + totalCov = tcov; + } + else { // ICP成功でなければ、オドメトリによる予測位置を使う + estPose = predPose; + pfu->calOdometryCovariance(odoMotion, lastPose, cov); // covはオドメトリ共分散だけ + } + } + else { + if (!successful) + estPose = predPose; + } + + growMap(curScan, estPose); // 地図にスキャン点群を追加 + prevScan = curScan; // 直前スキャンの設定 + + // 確認用 +// printf("lastPose: tx=%g, ty=%g, th=%g\n", lastPose.tx, lastPose.ty, lastPose.th); + printf("predPose: tx=%g, ty=%g, th=%g\n", predPose.tx, predPose.ty, predPose.th); // 確認用 + printf("estPose: tx=%g, ty=%g, th=%g\n", estPose.tx, estPose.ty, estPose.th); + printf("cov: %g, %g, %g, %g\n", totalCov(0,0), totalCov(0,1), totalCov(1,0), totalCov(1,1)); + printf("mcov: %g, %g, %g, %g\n", pfu->mcov(0,0), pfu->mcov(0,1), pfu->mcov(1,0), pfu->mcov(1,1)); + printf("ecov: %g, %g, %g, %g\n", pfu->ecov(0,0), pfu->ecov(0,1), pfu->ecov(1,0), pfu->ecov(1,1)); + + // 共分散の保存(確認用) +// PoseCov pcov(estPose, cov); +// PoseCov pcov(estPose, totalCov); +// PoseCov pcov(estPose, pfu->mcov); + PoseCov pcov(estPose, pfu->ecov); + poseCovs.emplace_back(pcov); + + // 累積走行距離の計算(確認用) + Pose2D estMotion; // 推定移動量 + Pose2D::calRelativePose(estPose, lastPose, estMotion); + atd += sqrt(estMotion.tx*estMotion.tx + estMotion.ty*estMotion.ty); + printf("atd=%g\n", atd); + + return(successful); +} + +//////////////////// + +// 現在スキャンを追加して、地図を成長させる +void ScanMatcher2D::growMap(const Scan2D &scan, const Pose2D &pose) { + const vector &lps = scan.lps; // スキャン点群(ロボット座標系) + const double (*R)[2] = pose.Rmat; // 推定したロボット位置 + double tx = pose.tx; + double ty = pose.ty; + + vector scanG; // 地図座標系での点群 + for(size_t i=0; iaddPose(pose); + pcmap->addPoints(scanG); + pcmap->setLastPose(pose); + pcmap->setLastScan(scan); // 参照スキャン用に保存 + pcmap->makeLocalMap(); // 局所地図を生成 + + printf("ScanMatcher: estPose: tx=%g, ty=%g, th=%g\n", pose.tx, pose.ty, pose.th); // 確認用 +} diff --git a/framework/ScanMatcher2D.h b/framework/ScanMatcher2D.h new file mode 100755 index 0000000..88b5406 --- /dev/null +++ b/framework/ScanMatcher2D.h @@ -0,0 +1,121 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file ScanMatcher2D.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SCAN_MATCHER2D_H_ +#define SCAN_MATCHER2D_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" +#include "PointCloudMap.h" +#include "RefScanMaker.h" +#include "ScanPointResampler.h" +#include "ScanPointAnalyser.h" +#include "PoseEstimatorICP.h" +#include "PoseFuser.h" + +// ICPを用いてスキャンマッチングを行う +class ScanMatcher2D +{ +private: + int cnt; // 論理時刻。スキャン番号に対応 + Scan2D prevScan; // 1つ前のスキャン + Pose2D initPose; // 地図の原点の位置。通常(0,0,0) + + double scthre; // スコア閾値。これより大きいとICP失敗とみなす + double nthre; // 使用点数閾値。これより小さいとICP失敗とみなす + double atd; // 累積走行距離。確認用 + bool dgcheck; // 退化処理をするか + + PoseEstimatorICP *estim; // ロボット位置推定器 + PointCloudMap *pcmap; // 点群地図 + ScanPointResampler *spres; // スキャン点間隔均一化 + ScanPointAnalyser *spana; // スキャン点法線計算 + RefScanMaker *rsm; // 参照スキャン生成 + PoseFuser *pfu; // センサ融合器 + Eigen::Matrix3d cov; // ロボット移動量の共分散行列 + Eigen::Matrix3d totalCov; // ロボット位置の共分散行列 + + std::vector poseCovs; // デバッグ用 + +public: + ScanMatcher2D() : cnt(-1), scthre(1.0), nthre(50), dgcheck(false), atd(0), pcmap(nullptr), spres(nullptr), spana(nullptr), estim(nullptr), rsm(nullptr), pfu(nullptr) { + } + + ~ScanMatcher2D() { + } + +/////// フレームワークの改造箇所 //////// + + void setPoseEstimator(PoseEstimatorICP *p) { + estim = p; + } + + void setPoseFuser(PoseFuser *p) { + pfu = p; + } + + void setScanPointResampler(ScanPointResampler *s) { + spres = s; + } + + void setScanPointAnalyser(ScanPointAnalyser *s) { + spana = s; + } + + void setRefScanMaker(RefScanMaker *r) { + rsm = r; + if (pcmap != nullptr) + rsm->setPointCloudMap(pcmap); + } + + void setPointCloudMap(PointCloudMap *m) { + pcmap = m; + if (rsm != nullptr) + rsm->setPointCloudMap(pcmap); + } + +/////// + + void reset() { + cnt = -1; + } + + void setInitPose(Pose2D &p) { + initPose = p; + } + + void setDgCheck(bool t) { + dgcheck = t; + } + + Eigen::Matrix3d &getCovariance() { + return(cov); + } + + // デバッグ用 + std::vector &getPoseCovs() { + return(poseCovs); + } + +////////// + + bool matchScan(Scan2D &scan); + void growMap(const Scan2D &scan, const Pose2D &pose); + +}; + +#endif diff --git a/framework/ScanPointAnalyser.cpp b/framework/ScanPointAnalyser.cpp new file mode 100755 index 0000000..7865c64 --- /dev/null +++ b/framework/ScanPointAnalyser.cpp @@ -0,0 +1,90 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file ScanPointAnalyser.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "ScanPointAnalyser.h" + +using namespace std; + +const double ScanPointAnalyser::FPDMIN = 0.06; // ScanPointResampler.dthrSとずらす +const double ScanPointAnalyser::FPDMAX = 1.0; + +/////////// + +// スキャン点の法線ベクトルを求める。また、直線、コーナ、孤立の場合分けをする。 +void ScanPointAnalyser::analysePoints(vector &lps) { + for (int i=0; i= costh) { // 両側の法線が平行に近い + type = LINE; // 直線とみなす + } + else { // 平行から遠ければ、コーナ点とみなす + type = CORNER; + } + // 左右両側の法線ベクトルの平均 + double dx = nL.x+nR.x; + double dy = nL.y+nR.y; + double L = sqrt(dx*dx + dy*dy); + normal.x = dx/L; + normal.y = dy/L; + } + else { // 左側しか法線ベクトルがとれなかった + type = LINE; + normal = nL; + } + } + else { + if (flagR) { // 右側しか法線ベクトルがとれなかった + type = LINE; + normal = nR; + } + else { // 両側とも法線ベクトルがとれなかった + type = ISOLATE; // 孤立点とみなす + normal.x = INVALID; + normal.y = INVALID; + } + } + + lp.setNormal(normal.x, normal.y); + lp.setType(type); + } +} + + // 注目点cpの両側の点が、cpからdmin以上dmax以下の場合に、法線を計算する。 +bool ScanPointAnalyser::calNormal(int idx, const vector &lps, int dir, Vector2D &normal){ + const LPoint2D &cp = lps[idx]; // 注目点 + for (int i=idx+dir; i>=0 && i=FPDMIN && d<=FPDMAX) { // cpとlpの距離dが適切なら法線計算 + normal.x = dy/d; + normal.y = -dx/d; + return(true); + } + + if (d > FPDMAX) // もはやどんどん離れるので、途中でやめる + break; + } + + return(false); +} diff --git a/framework/ScanPointAnalyser.h b/framework/ScanPointAnalyser.h new file mode 100755 index 0000000..d34931a --- /dev/null +++ b/framework/ScanPointAnalyser.h @@ -0,0 +1,48 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file ScanPointAnalyser.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SCAN_ANALYSER_H_ +#define SCAN_ANALYSER_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Scan2D.h" + + +class ScanPointAnalyser +{ +private: + static const double FPDMIN; // 隣接点との最小距離[m]。これより小さいと誤差が大きくなるので法線計算に使わない。 + static const double FPDMAX; // 隣接点との最大距離[m]。これより大きいと不連続とみなして法線計算に使わない。 + static const int CRTHRE = 45; // 法線方向変化の閾値[度]。これより大きいとコーナ点とみなす。 + static const int INVALID = -1; + double costh; // 左右の法線方向の食い違いの閾値 + +public: + ScanPointAnalyser() : costh(cos(DEG2RAD(CRTHRE))) { + } + + ~ScanPointAnalyser() { + } + +////////// + + void analysePoints(std::vector &lps); + bool calNormal(int idx, const std::vector &lps, int dir, Vector2D &normal); + +}; + +#endif + diff --git a/framework/ScanPointResampler.cpp b/framework/ScanPointResampler.cpp new file mode 100755 index 0000000..615e764 --- /dev/null +++ b/framework/ScanPointResampler.cpp @@ -0,0 +1,76 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file ScanPointResampler.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "ScanPointResampler.h" + +using namespace std; + +///////// + +void ScanPointResampler::resamplePoints(Scan2D *scan) { + vector &lps = scan->lps; // スキャン点群 + if (lps.size() == 0) + return; + + vector newLps; // リサンプル後の点群 + + dis = 0; // disは累積距離 + LPoint2D lp = lps[0]; + LPoint2D prevLp = lp; + LPoint2D np(lp.sid, lp.x, lp.y); + newLps.emplace_back(np); // 最初の点は入れる + for (size_t i=1; isetLps(newLps); + + printf("lps.size=%lu, newLps.size=%lu\n", lps.size(), newLps.size()); // 確認用 +} + +bool ScanPointResampler::findInterpolatePoint(const LPoint2D &cp, const LPoint2D &pp, LPoint2D &np, bool &inserted) { + double dx = cp.x - pp.x; + double dy = cp.y - pp.y; + double L = sqrt(dx*dx+dy*dy); // 現在点cpと直前点ppの距離 + if (dis+L < dthreS) { // 予測累積距離(dis+L)がdthreSより小さい点は削除 + dis += L; // disに加算 + return(false); + } + else if (dis+L >= dthreL) { // 予測累積距離がdthreLより大きい点は補間せず、そのまま残す + np.setData(cp.sid, cp.x, cp.y); + } + else { // 予測累積距離がdthreSを超えたら、dthreSになるように補間する + double ratio = (dthreS-dis)/L; + double x2 = dx*ratio + pp.x; // 少し伸ばして距離がdthreSになる位置 + double y2 = dy*ratio + pp.y; + np.setData(cp.sid, x2, y2); + inserted = true; // cpより前にnpを入れたというフラグ + } + + return(true); +} + diff --git a/framework/ScanPointResampler.h b/framework/ScanPointResampler.h new file mode 100755 index 0000000..5cc6af4 --- /dev/null +++ b/framework/ScanPointResampler.h @@ -0,0 +1,51 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file ScanPointResampler.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SCAN_POINT_RESAMPLER_H_ +#define SCAN_POINT_RESAMPLER_H_ + +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Scan2D.h" + + +class ScanPointResampler +{ +private: + double dthreS; // 点の距離間隔[m] + double dthreL; // 点の距離閾値[m]。この間隔を超えたら補間しない + double dis; // 累積距離。作業用 + +public: + ScanPointResampler() : dthreS(0.05), dthreL(0.25), dis(0) { + } + + ~ScanPointResampler() { + } + +/////// + + void setDthre(int s, int l) { + dthreS = s; + dthreL = l; + } + +//////// + + void resamplePoints(Scan2D *scan); + bool findInterpolatePoint(const LPoint2D &cp, const LPoint2D &pp, LPoint2D &np, bool &inserted); +}; + +#endif diff --git a/framework/SensorDataReader.cpp b/framework/SensorDataReader.cpp new file mode 100755 index 0000000..d253916 --- /dev/null +++ b/framework/SensorDataReader.cpp @@ -0,0 +1,80 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SensorDataReader.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "SensorDataReader.h" + +using namespace std; + +// ファイルからスキャンを1個読む +bool SensorDataReader::loadScan(size_t cnt, Scan2D &scan) { + bool isScan=false; + while (!inFile.eof() && !isScan) { // スキャンを読むまで続ける + isScan = loadLaserScan(cnt, scan); + } + + if (isScan) + return(false); // まだファイルが続くという意味 + else + return(true); // ファイルが終わったという意味 +} + +////////////// + +// ファイルから項目1個を読む。読んだ項目がスキャンならtrueを返す。 +bool SensorDataReader::loadLaserScan(size_t cnt, Scan2D &scan) { + string type; // ファイル内の項目ラベル + inFile >> type; + if (type == "LASERSCAN") { // スキャンの場合 + scan.setSid(cnt); + + int sid, sec, nsec; + inFile >> sid >> sec >> nsec; // これらは使わない + + vector lps; + int pnum; // スキャン点数 + inFile >> pnum; + lps.reserve(pnum); + for (int i=0; i> angle >> range; // スキャン点の方位と距離 + angle += angleOffset; // レーザスキャナの方向オフセットを考慮 + if (range <= Scan2D::MIN_SCAN_RANGE || range >= Scan2D::MAX_SCAN_RANGE) { +// if (range <= Scan2D::MIN_SCAN_RANGE || range >= 3.5) { // わざと退化を起こしやすく + continue; + } + + LPoint2D lp; + lp.setSid(cnt); // スキャン番号はcnt(通し番号)にする + lp.calXY(range, angle); // angle,rangeから点の位置xyを計算 + lps.emplace_back(lp); + } + scan.setLps(lps); + + // スキャンに対応するオドメトリ情報 + Pose2D &pose = scan.pose; + inFile >> pose.tx >> pose.ty; + double th; + inFile >> th; + pose.setAngle(RAD2DEG(th)); // オドメトリ角度はラジアンなので度にする + pose.calRmat(); + + return(true); + } + else { // スキャン以外の場合 + string line; + getline(inFile, line); // 読み飛ばす + + return(false); + } +} diff --git a/framework/SensorDataReader.h b/framework/SensorDataReader.h new file mode 100755 index 0000000..1b6a39d --- /dev/null +++ b/framework/SensorDataReader.h @@ -0,0 +1,67 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SensorDataReader.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SENSOR_DATA_READER_H_ +#define SENSOR_DATA_READER_H_ + +#include +#include +#include +#include "MyUtil.h" +#include "LPoint2D.h" +#include "Pose2D.h" +#include "Scan2D.h" + +///////// + +class SensorDataReader +{ +private: + int angleOffset; // レーザスキャナとロボットの向きのオフセット + std::ifstream inFile; // データファイル + +public: + SensorDataReader() : angleOffset(180) { + } + + ~SensorDataReader() { + } + +//////// + + bool openScanFile(const char *filepath) { + inFile.open(filepath); + if (!inFile.is_open()) { + std::cerr << "Error: cannot open file " << filepath << std::endl; + return(false); + } + + return(true); + } + + void closeScanFile() { + inFile.close(); + } + + void setAngleOffset(int o) { + angleOffset = o; + } + +////////// + + bool loadScan(size_t cnt, Scan2D &scan); + bool loadLaserScan(size_t cnt, Scan2D &scan); +}; + +#endif diff --git a/framework/SlamBackEnd.cpp b/framework/SlamBackEnd.cpp new file mode 100755 index 0000000..4ebe70c --- /dev/null +++ b/framework/SlamBackEnd.cpp @@ -0,0 +1,48 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SlamBackEnd.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "SlamBackEnd.h" +#include "P2oDriver2D.h" + +using namespace std; + +////////// ポーズ調整 ////////// + +Pose2D SlamBackEnd::adjustPoses() { +// pg->printArcs(); +// pg->printNodes(); + + newPoses.clear(); + + P2oDriver2D p2o; + p2o.doP2o(*pg, newPoses, 5); // 5回くり返す + + return(newPoses.back()); +} + +///////////////////////////// + +void SlamBackEnd::remakeMaps() { + // PoseGraphの修正 + vector &pnodes = pg->nodes; // ポーズノード + for (size_t i=0; isetPose(npose); // 各ノードの位置を更新 + } + printf("newPoses.size=%lu, nodes.size=%lu\n", newPoses.size(), pnodes.size()); + + // PointCloudMapの修正 + pcmap->remakeMaps(newPoses); +} diff --git a/framework/SlamBackEnd.h b/framework/SlamBackEnd.h new file mode 100755 index 0000000..c40965b --- /dev/null +++ b/framework/SlamBackEnd.h @@ -0,0 +1,54 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SlamBackEnd.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SLAM_BACK_END_H_ +#define SLAM_BACK_END_H_ + +#include +#include "PointCloudMap.h" +#include "PoseGraph.h" + +//////// + +class SlamBackEnd +{ +private: + std::vector newPoses; // ポーズ調整後の姿勢 + PointCloudMap *pcmap; // 点群地図 + PoseGraph *pg; // ポーズグラフ + +public: + SlamBackEnd() { + } + + ~SlamBackEnd() { + } + +////////// + + void setPointCloudMap(PointCloudMap *m) { + pcmap = m; + } + + void setPoseGraph(PoseGraph *g) { + pg = g; + } + +////////// + + Pose2D adjustPoses(); + void remakeMaps(); +}; + +#endif diff --git a/framework/SlamFrontEnd.cpp b/framework/SlamFrontEnd.cpp new file mode 100755 index 0000000..b78b71b --- /dev/null +++ b/framework/SlamFrontEnd.cpp @@ -0,0 +1,110 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SlamFrontEnd.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "SlamFrontEnd.h" + +using namespace std; + +///////// + +// 初期化 +void SlamFrontEnd::init() { + smat->reset(); + smat->setPointCloudMap(pcmap); + sback.setPointCloudMap(pcmap); +} + +/////////// + +// 現在スキャンscanを処理する。 +void SlamFrontEnd::process(Scan2D &scan) { + if (cnt == 0) + init(); // 開始時に初期化 + + // スキャンマッチング + smat->matchScan(scan); + + Pose2D curPose = pcmap->getLastPose(); // これはスキャンマッチングで推定した現在のロボット位置 + + // ポーズグラフにオドメトリアークを追加 + if (cnt == 0) { // 最初はノードを置くだけ。 + pg->addNode(curPose); + } + else { // 次からはノードを追加して、オドメトリアークを張る + Eigen::Matrix3d &cov = smat->getCovariance(); + makeOdometryArc(curPose, cov); + } + + if (cnt%keyframeSkip==0) { // キーフレームのときだけ行う + if (cnt == 0) + pcmap->setNthre(1); // cnt=0のときは地図が小さいのでサンプリング多くする + else + pcmap->setNthre(5); + pcmap->makeGlobalMap(); // 点群地図の全体地図を生成 + } + + // ループ閉じ込み + if (cnt > keyframeSkip && cnt%keyframeSkip==0) { // キーフレームのときだけ行う + bool flag = lpd->detectLoop(&scan, curPose, cnt); // ループ検出を起動 + if (flag) { + sback.adjustPoses(); // ループが見つかったらポーズ調整 + sback.remakeMaps(); // 地図やポーズグラフの修正 + } + } + + printf("pcmap.size=%lu\n", pcmap->globalMap.size()); // 確認用 + + countLoopArcs(); // 確認用 + + ++cnt; +} + +//////////// + +// オドメトリアークの生成 +bool SlamFrontEnd::makeOdometryArc(Pose2D &curPose, const Eigen::Matrix3d &fusedCov) { + if (pg->nodes.size() == 0) // 念のためのチェック + return(false); + PoseNode *lastNode = pg->nodes.back(); // 直前ノード + PoseNode *curNode = pg->addNode(curPose); // ポーズグラフに現在ノードを追加 + + // 直前ノードと現在ノードの間にオドメトリアークを張る + Pose2D &lastPose = lastNode->pose; + Pose2D relPose; + Pose2D::calRelativePose(curPose, lastPose, relPose); // 現在位置と直前位置の相対位置(移動量)の計算 + printf("sfront: lastPose: tx=%g, ty=%g, th=%g\n", lastPose.tx, lastPose.ty, lastPose.th); + + Eigen::Matrix3d cov; + CovarianceCalculator::rotateCovariance(lastPose, fusedCov, cov, true); // 移動量の共分散に変換 + PoseArc *arc = pg->makeArc(lastNode->nid, curNode->nid, relPose, cov); // アークの生成 + pg->addArc(arc); // ポーズグラフにアークを追加 + + return(true); +} + +//////////// + +// ループアーク数を数える。確認用 +void SlamFrontEnd::countLoopArcs() { + vector &parcs = pg->arcs; // 全ポーズアーク + int an=0; // ループアーク数 + for (size_t i=0; isrc; + PoseNode *dst = a->dst; + if (src->nid != dst->nid-1) // オドメトリアークは始点と終点が連番になっている + ++an; // オドメトリアークでなければループアーク + } + printf("loopArcs.size=%d\n", an); // 確認用 +} diff --git a/framework/SlamFrontEnd.h b/framework/SlamFrontEnd.h new file mode 100755 index 0000000..7f942be --- /dev/null +++ b/framework/SlamFrontEnd.h @@ -0,0 +1,105 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file SlamFrontEnd.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef SLAM_FRONT_END_H_ +#define SLAM_FRONT_END_H_ + +#include +#include +#include "PointCloudMap.h" +#include "ScanMatcher2D.h" +#include "PoseGraph.h" +#include "LoopDetector.h" +#include "SlamBackEnd.h" + +//////// + +// SLAMフロントエンド。ロボット位置推定、地図生成、ループ閉じ込みを取り仕切る。 +class SlamFrontEnd +{ +private: + int cnt; // 論理時刻 + int keyframeSkip; // キーフレーム間隔 + + PointCloudMap *pcmap; // 点群地図 + PoseGraph *pg; // ポーズグラフ + ScanMatcher2D *smat; // スキャンマッチング + LoopDetector *lpd; // ループ検出器 + SlamBackEnd sback; // SLAMバックエンド + +public: + SlamFrontEnd() : cnt(0), keyframeSkip(10), smat(nullptr), lpd(nullptr) { + pg = new PoseGraph(); + sback.setPoseGraph(pg); + } + + ~SlamFrontEnd() { + delete pg; + } + +/////// + + void setScanMatcher(ScanMatcher2D *s) { + smat = s; + } + + void setLoopDetector(LoopDetector *l) { + lpd = l; + lpd->setPoseGraph(pg); + } + + void setPointCloudMap(PointCloudMap *p) { + pcmap = p; + } + + void setRefScanMaker(RefScanMaker *r) { + smat->setRefScanMaker(r); + } + + PointCloudMap *getPointCloudMap() { + return(pcmap); + } + + PoseGraph *getPoseGraph() { + return(pg); + } + + int getCnt() { + return(cnt); + } + + void setDgCheck(bool p){ + smat->setDgCheck(p); + } + + // デバッグ用 + std::vector &getLoopMatches() { + return(lpd->getLoopMatches()); + } + + // デバッグ用 + std::vector &getPoseCovs() { + return(smat->getPoseCovs()); + } + +///////// + + void init(); + void process(Scan2D &scan); + bool makeOdometryArc(Pose2D &curPose, const Eigen::Matrix3d &cov); + + void countLoopArcs(); +}; + +#endif diff --git a/hook/CMakeLists.txt b/hook/CMakeLists.txt new file mode 100755 index 0000000..ccce295 --- /dev/null +++ b/hook/CMakeLists.txt @@ -0,0 +1,54 @@ +PROJECT(hook) + +cmake_minimum_required(VERSION 2.8) + +find_package(Boost REQUIRED) + +find_package(Eigen3) +IF(NOT EIGEN3_INCLUDE_DIR) + set(EIGEN3_INCLUDE_DIR $ENV{EIGEN3_ROOT_DIR}) +ENDIF() + +SET(hk_HDRS + RefScanMakerBS.h + RefScanMakerLM.h + CostFunctionED.h + CostFunctionPD.h + PoseOptimizerSD.h + PoseOptimizerSL.h + DataAssociatorLS.h + DataAssociatorGT.h + PointCloudMapBS.h + PointCloudMapGT.h + PointCloudMapLP.h + LoopDetectorSS.h +) + +SET(hk_SRCS + RefScanMakerBS.cpp + RefScanMakerLM.cpp + CostFunctionED.cpp + CostFunctionPD.cpp + PoseOptimizerSD.cpp + PoseOptimizerSL.cpp + DataAssociatorLS.cpp + DataAssociatorGT.cpp + PointCloudMapBS.cpp + PointCloudMapGT.cpp + PointCloudMapLP.cpp + LoopDetectorSS.cpp +) + +include_directories( + ${Boost_INCLUDE_DIR} + ${EIGEN3_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../framework +) + +link_directories( +) + +ADD_LIBRARY(hook ${hk_SRCS} ${hk_HDRS}) + +target_link_libraries(hook framework) + diff --git a/hook/CostFunctionED.cpp b/hook/CostFunctionED.cpp new file mode 100755 index 0000000..c1c3240 --- /dev/null +++ b/hook/CostFunctionED.cpp @@ -0,0 +1,52 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file CostFunctionED.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "CostFunctionED.h" + +using namespace std; + +// 点間距離によるICPのコスト関数 +double CostFunctionED::calValue(double tx, double ty, double th) { + double a = DEG2RAD(th); + double error=0; + int pn=0; + int nn=0; + for (size_t i=0; ix; + double cy = clp->y; + double x = cos(a)*cx - sin(a)*cy + tx; // clpを参照スキャンの座標系に変換 + double y = sin(a)*cx + cos(a)*cy + ty; + + double edis = (x - rlp->x)*(x - rlp->x) + (y - rlp->y)*(y - rlp->y); // 点間距離 + + if (edis <= evlimit*evlimit) + ++pn; // 誤差が小さい点の数 + + error += edis; // 各点の誤差を累積 + + ++nn; + } + + error = (nn>0)? error/nn : HUGE_VAL; // 平均をとる。有効点数が0なら、値はHUGE_VAL + pnrate = 1.0*pn/nn; // 誤差が小さい点の比率 + +// printf("CostFunctionED: error=%g, pnrate=%g, evlimit=%g\n", error, pnrate, evlimit); // 確認用 + + error *= 100; // 評価値が小さくなりすぎないよう100かける。 + + return(error); +} diff --git a/hook/CostFunctionED.h b/hook/CostFunctionED.h new file mode 100755 index 0000000..bab412f --- /dev/null +++ b/hook/CostFunctionED.h @@ -0,0 +1,32 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file CostFunctionED.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _COST_FUNCTION_ED_H_ +#define _COST_FUNCTION_ED_H_ + +#include "CostFunction.h" + +class CostFunctionED : public CostFunction +{ +public: + CostFunctionED() { + } + + ~CostFunctionED() { + } + + virtual double calValue(double tx, double ty, double th); +}; + +#endif diff --git a/hook/CostFunctionPD.cpp b/hook/CostFunctionPD.cpp new file mode 100755 index 0000000..364b1ef --- /dev/null +++ b/hook/CostFunctionPD.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file CostFunctionPD.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "CostFunctionPD.h" + +using namespace std; + +// 垂直距離によるコスト関数 +double CostFunctionPD::calValue(double tx, double ty, double th) { + double a = DEG2RAD(th); + + double error=0; + int pn=0; + int nn=0; + for (size_t i=0; itype != LINE) // 直線上の点でなければ使わない + continue; + + double cx = clp->x; + double cy = clp->y; + double x = cos(a)*cx - sin(a)*cy + tx; // clpを参照スキャンの座標系に変換 + double y = sin(a)*cx + cos(a)*cy + ty; + + double pdis = (x - rlp->x)*rlp->nx + (y - rlp->y)*rlp->ny; // 垂直距離 + + double er = pdis*pdis; + if (er <= evlimit*evlimit) + ++pn; // 誤差が小さい点の数 + + error += er; // 各点の誤差を累積 + ++nn; + } + + error = (nn>0)? error/nn : HUGE_VAL; // 有効点数が0なら、値はHUGE_VAL + pnrate = 1.0*pn/nn; // 誤差が小さい点の比率 + +// printf("CostFunctionPD: error=%g, pnrate=%g, evlimit=%g\n", error, pnrate, evlimit); // 確認用 + + error *= 100; // 評価値が小さくなりすぎないよう100かける。 + + return(error); +} diff --git a/hook/CostFunctionPD.h b/hook/CostFunctionPD.h new file mode 100755 index 0000000..c66e66b --- /dev/null +++ b/hook/CostFunctionPD.h @@ -0,0 +1,32 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file CostFunctionPD.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _COST_FUNCTION_PD_H_ +#define _COST_FUNCTION_PD_H_ + +#include "CostFunction.h" + +class CostFunctionPD : public CostFunction +{ +public: + CostFunctionPD() { + } + + ~CostFunctionPD() { + } + + virtual double calValue(double tx, double ty, double th); +}; + +#endif diff --git a/hook/DataAssociatorGT.cpp b/hook/DataAssociatorGT.cpp new file mode 100755 index 0000000..83910b2 --- /dev/null +++ b/hook/DataAssociatorGT.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file DataAssociatorGT.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include +#include "DataAssociatorGT.h" + +using namespace std; + + +// 現在スキャンcurScanの各スキャン点をpredPoseで座標変換した位置に最も近い点を見つける +double DataAssociatorGT::findCorrespondence(const Scan2D *curScan, const Pose2D &predPose) { + boost::timer tim; // 処理時間測定用 + + curLps.clear(); // 対応づけ現在スキャン点群を空にする + refLps.clear(); // 対応づけ参照スキャン点群を空にする + + for (size_t i=0; ilps.size(); i++) { + const LPoint2D *clp = &(curScan->lps[i]); // 現在スキャンの点。ポインタで。 + + // 格子テーブルにより最近傍点を求める。格子テーブル内に距離閾値dthreがあることに注意。 + const LPoint2D *rlp = nntab.findClosestPoint(clp, predPose); + + if (rlp != nullptr) { + curLps.push_back(clp); // 最近傍点があれば登録 + refLps.push_back(rlp); + } + } + + double ratio = (1.0*curLps.size())/curScan->lps.size(); // 対応がとれた点の比率 + +// double t1 = 1000*tim.elapsed(); // 処理時間 +// printf("Elapsed time: dassGT=%g\n", t1); + + return(ratio); +} diff --git a/hook/DataAssociatorGT.h b/hook/DataAssociatorGT.h new file mode 100755 index 0000000..a4789c9 --- /dev/null +++ b/hook/DataAssociatorGT.h @@ -0,0 +1,46 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file DataAssociatorGT.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef DATA_ASSOCIATOR_GT_H_ +#define DATA_ASSOCIATOR_GT_H_ + +#include "DataAssociator.h" +#include "NNGridTable.h" + +// 格子テーブルを用いて、現在スキャンと参照スキャン間の点の対応づけを行う +class DataAssociatorGT : public DataAssociator +{ +private: + NNGridTable nntab; // 格子テーブル + +public: + DataAssociatorGT() { + } + + ~DataAssociatorGT() { + } + + // 参照スキャンの点rlpsをポインタにしてnntabに入れる + virtual void setRefBase(const std::vector &rlps) { + nntab.clear(); + for (size_t i=0; i +#include "DataAssociatorLS.h" + +using namespace std; + +// 現在スキャンcurScanの各スキャン点に対応する点をbaseLpsから見つける +double DataAssociatorLS::findCorrespondence(const Scan2D *curScan, const Pose2D &predPose) { + boost::timer tim; // 処理時間測定用 + + double dthre = 0.2; // これより遠い点は除外する[m] + curLps.clear(); // 対応づけ現在スキャン点群を空にする + refLps.clear(); // 対応づけ参照スキャン点群を空にする + for (size_t i=0; ilps.size(); i++) { + const LPoint2D *clp = &(curScan->lps[i]); // 現在スキャンの点。ポインタで。 + + // スキャン点lpをpredPoseで座標変換した位置に最も近い点を見つける + LPoint2D glp; // clpの予測位置 + predPose.globalPoint(*clp, glp); // predPoseで座標変換 + + double dmin = HUGE_VAL; // 距離最小値 + const LPoint2D *rlpmin = nullptr; // 最も近い点 + for (size_t j=0; jx)*(glp.x - rlp->x) + (glp.y - rlp->y)*(glp.y - rlp->y); + if (d <= dthre*dthre && d < dmin) { // dthre内で距離が最小となる点を保存 + dmin = d; + rlpmin = rlp; + } + } + if (rlpmin != nullptr) { // 最近傍点があれば登録 + curLps.push_back(clp); + refLps.push_back(rlpmin); + } + } + + double ratio = (1.0*curLps.size())/curScan->lps.size(); // 対応がとれた点の比率 +// printf("ratio=%g, clps.size=%lu\n", ratio, curScan->lps.size()); + +// double t1 = 1000*tim.elapsed(); // 処理時間 +// printf("Elapsed time: dassLS=%g\n", t1); + + return(ratio); +} diff --git a/hook/DataAssociatorLS.h b/hook/DataAssociatorLS.h new file mode 100755 index 0000000..61f0c7e --- /dev/null +++ b/hook/DataAssociatorLS.h @@ -0,0 +1,45 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file DataAssociatorLS.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef DATA_ASSOCIATOR_LS_H_ +#define DATA_ASSOCIATOR_LS_H_ + +#include "DataAssociator.h" + +// 線形探索を用いて、現在スキャンと参照スキャン間の点の対応づけを行う +class DataAssociatorLS : public DataAssociator +{ +private: + std::vector baseLps; // 参照スキャンの点を格納しておく。作業用 + +public: + DataAssociatorLS() { + } + + ~DataAssociatorLS() { + } + + // 参照スキャンの点rlpsをポインタにしてbaseLpsに入れる + virtual void setRefBase(const std::vector &rlps) { + baseLps.clear(); + for (size_t i=0; iatd; // 現在の実際の累積走行距離 + double atdR = 0; // 下記の処理で軌跡をなぞる時の累積走行距離 + const vector &submaps = pcmap->submaps; // 部分地図 + const vector &poses = pcmap->poses; // ロボット軌跡 + double dmin=HUGE_VAL; // 前回訪問点までの距離の最小値 + size_t imin=0, jmin=0; // 距離最小の前回訪問点のインデックス + Pose2D prevP; // 直前のロボット位置 + for (size_t i=0; i radius*radius) // 前回訪問点までの距離が遠いとループ検出しない + return(false); + + Submap &refSubmap = pcmap->submaps[imin]; // 最も近い部分地図を参照スキャンにする + const Pose2D &initPose = poses[jmin]; + printf("curPose: tx=%g, ty=%g, th=%g\n", curPose.tx, curPose.ty, curPose.th); + printf("initPose: tx=%g, ty=%g, th=%g\n", initPose.tx, initPose.ty, initPose.th); + + // 再訪点の位置を求める + Pose2D revisitPose; + bool flag = estimateRevisitPose(curScan, refSubmap.mps, curPose, revisitPose); +// bool flag = estimateRelativePose(curScan, refSubmap.mps, initPose, revisitPose); + + if (flag) { // ループを検出した + Eigen::Matrix3d icpCov; // ICPの共分散 + double ratio = pfu->calIcpCovariance(revisitPose, curScan, icpCov); // ICPの共分散を計算 + + LoopInfo info; // ループ検出結果 + info.pose = revisitPose; // ループアーク情報に再訪点位置を設定 + info.cov = icpCov; // ループアーク情報に共分散を設定。 + info.curId = cnt; // 現在位置のノードid + info.refId = static_cast(jmin); // 前回訪問点のノードid + makeLoopArc(info); // ループアーク生成 + + // 確認用 + Scan2D refScan; + Pose2D spose = poses[refSubmap.cntS]; + refScan.setSid(info.refId); + refScan.setLps(refSubmap.mps); + refScan.setPose(spose); + LoopMatch lm(*curScan, refScan, info); + loopMatches.emplace_back(lm); + printf("curId=%d, refId=%d\n", info.curId, info.refId); + } + + return(flag); +} + +////////// + +// 前回訪問点(refId)を始点ノード、現在位置(curId)を終点ノードにして、ループアークを生成する。 +void LoopDetectorSS::makeLoopArc(LoopInfo &info) { + if (info.arcked) // infoのアークはすでに張ってある + return; + info.setArcked(true); + + Pose2D srcPose = pcmap->poses[info.refId]; // 前回訪問点の位置 + Pose2D dstPose(info.pose.tx, info.pose.ty, info.pose.th); // 再訪点の位置 + Pose2D relPose; + Pose2D::calRelativePose(dstPose, srcPose, relPose); // ループアークの拘束 + + // アークの拘束は始点ノードからの相対位置なので、共分散をループアークの始点ノード座標系に変換 + Eigen::Matrix3d cov; + CovarianceCalculator::rotateCovariance(srcPose, info.cov, cov, true); // 共分散の逆回転 + + PoseArc *arc = pg->makeArc(info.refId, info.curId, relPose, cov); // ループアーク生成 + pg->addArc(arc); // ループアーク登録 + + // 確認用 + printf("makeLoopArc: pose arc added\n"); + printf("srcPose: tx=%g, ty=%g, th=%g\n", srcPose.tx, srcPose.ty, srcPose.th); + printf("dstPose: tx=%g, ty=%g, th=%g\n", dstPose.tx, dstPose.ty, dstPose.th); + printf("relPose: tx=%g, ty=%g, th=%g\n", relPose.tx, relPose.ty, relPose.th); + PoseNode *src = pg->findNode(info.refId); + PoseNode *dst = pg->findNode(info.curId); + Pose2D relPose2; + Pose2D::calRelativePose(dst->pose, src->pose, relPose2); + printf("relPose2: tx=%g, ty=%g, th=%g\n", relPose2.tx, relPose2.ty, relPose2.th); +} + +////////// + +// 現在スキャンcurScanと部分地図の点群refLpsでICPを行い、再訪点の位置を求める。 +bool LoopDetectorSS::estimateRevisitPose(const Scan2D *curScan, const vector &refLps, const Pose2D &initPose, Pose2D &revisitPose) { + dass->setRefBase(refLps); // データ対応づけ器に参照点群を設定 + cfunc->setEvlimit(0.2); // コスト関数の誤差閾値 + + printf("initPose: tx=%g, ty=%g, th=%g\n", initPose.tx, initPose.ty, initPose.th); // 確認用 + + size_t usedNumMin = 50; +// size_t usedNumMin = 100; + + // 初期位置initPoseの周囲をしらみつぶしに調べる。 + // 効率化のため、ICPは行わず、各位置で単純にマッチングスコアを調べる。 + double rangeT = 1; // 並進の探索範囲[m] + double rangeA = 45; // 回転の探索範囲[度] + double dd = 0.2; // 並進の探索間隔[m] + double da = 2; // 回転の探索間隔[度] + double pnrateMax=0; + vector pnrates; + double scoreMin=1000; + vector scores; + vector candidates; // スコアのよい候補位置 + for (double dy=-rangeT; dy<=rangeT; dy+=dd) { // 並進yの探索繰り返し + double y = initPose.ty + dy; // 初期位置に変位分dyを加える + for (double dx=-rangeT; dx<=rangeT; dx+=dd) { // 並進xの探索繰り返し + double x = initPose.tx + dx; // 初期位置に変位分dxを加える + for (double dth=-rangeA; dth<=rangeA; dth+=da) { // 回転の探索繰り返し + double th = MyUtil::add(initPose.th, dth); // 初期位置に変位分dthを加える + Pose2D pose(x, y, th); + double mratio = dass->findCorrespondence(curScan, pose); // 位置poseでデータ対応づけ + size_t usedNum = dass->curLps.size(); +// printf("usedNum=%lu, mratio=%g\n", usedNum, mratio); // 確認用 + if (usedNum < usedNumMin || mratio < 0.9) // 対応率が悪いと飛ばす + continue; + cfunc->setPoints(dass->curLps, dass->refLps); // コスト関数に点群を設定 + double score = cfunc->calValue(x, y, th); // コスト値(マッチングスコア) + double pnrate = cfunc->getPnrate(); // 詳細な点の対応率 +// printf("score=%g, pnrate=%g\n", score, pnrate); // 確認用 + if (pnrate > 0.8) { + candidates.emplace_back(pose); + if (score < scoreMin) + scoreMin = score; + scores.push_back(score); +// printf("pose: tx=%g, ty=%g, th=%g\n", pose.tx, pose.ty, pose.th); // 確認用 +// printf("score=%g, pnrate=%g\n", score, pnrate); // 確認用 + } + } + } + } + printf("candidates.size=%lu\n", candidates.size()); // 確認用 + if (candidates.size() == 0) + return(false); + + // 候補位置candidatesの中から最もよいものをICPで選ぶ + Pose2D best; // 最良候補 + double smin=1000000; // ICPスコア最小値 + estim->setScanPair(curScan, refLps); // ICPにスキャン設定 + for (size_t i=0; iestimatePose(p, estP); // ICPでマッチング位置を求める + double pnrate = estim->getPnrate(); // ICPでの点の対応率 + size_t usedNum = estim->getUsedNum(); // ICPで使用した点数 + if (score < smin && pnrate >= 0.9 && usedNum >= usedNumMin) { // ループ検出は条件厳しく + smin = score; + best = estP; + printf("smin=%g, pnrate=%g, usedNum=%lu\n", smin, pnrate, usedNum); // 確認用 + } + } + + // 最小スコアが閾値より小さければ見つけた + if (smin <= scthre) { + revisitPose = best; + return(true); + } + + return(false); +} diff --git a/hook/LoopDetectorSS.h b/hook/LoopDetectorSS.h new file mode 100755 index 0000000..9d3d660 --- /dev/null +++ b/hook/LoopDetectorSS.h @@ -0,0 +1,77 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file LoopDetectorSS.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef LOOP_DETECTOR_SS_H_ +#define LOOP_DETECTOR_SS_H_ + +#include "LoopDetector.h" +#include "PointCloudMapLP.h" +#include "DataAssociator.h" +#include "PoseEstimatorICP.h" +#include "PoseFuser.h" + + +//////////// + +class LoopDetectorSS : public LoopDetector +{ +private: + double radius; // 探索半径[m](現在位置と再訪点の距離閾値) + double atdthre; // 累積走行距離の差の閾値[m] + double scthre; // ICPスコアの閾値 + + PointCloudMapLP *pcmap; // 点群地図 + CostFunction *cfunc; // コスト関数(ICPとは別に使う) + PoseEstimatorICP *estim; // ロボット位置推定器(ICP) + DataAssociator *dass; // データ対応づけ器 + PoseFuser *pfu; // センサ融合器 + +public: + LoopDetectorSS() : radius(4), atdthre(10), scthre(0.2) { + } + + ~LoopDetectorSS() { + } + +///////// + + void setPoseEstimator(PoseEstimatorICP *p) { + estim = p; + } + + void setPoseFuser(PoseFuser *p) { + pfu = p; + } + + void setDataAssociator(DataAssociator *d) { + dass = d; + } + + void setCostFunction(CostFunction *f) { + cfunc = f; + } + + void setPointCloudMap(PointCloudMapLP *p) { + pcmap = p; + } + +////////// + + virtual bool detectLoop(Scan2D *curScan, Pose2D &curPose, int cnt); + void makeLoopArc(LoopInfo &info); + bool estimateRevisitPose(const Scan2D *curScan, const std::vector &refLps, const Pose2D &initPose, Pose2D &revisitPose); + +}; + +#endif diff --git a/hook/PointCloudMapBS.cpp b/hook/PointCloudMapBS.cpp new file mode 100755 index 0000000..ec10b19 --- /dev/null +++ b/hook/PointCloudMapBS.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PointCloudMapBS.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "PointCloudMapBS.h" + +using namespace std; + +/////////// + +// ロボット位置の追加 +void PointCloudMapBS::addPose(const Pose2D &p) { + poses.emplace_back(p); +} + +// スキャン点群の追加 +void PointCloudMapBS::addPoints(const vector &lps) { + int skip=5; // さすがに重いので、1/5に間引く +// int skip=10; // さすがに重いので、1/10に間引く + for (size_t i=0; i &newPoses) { +} diff --git a/hook/PointCloudMapBS.h b/hook/PointCloudMapBS.h new file mode 100755 index 0000000..8a3b23d --- /dev/null +++ b/hook/PointCloudMapBS.h @@ -0,0 +1,39 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PointCloudMapBS.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _POINT_CLOUD_MAP_BS_H_ +#define _POINT_CLOUD_MAP_BS_H_ + +#include "PointCloudMap.h" + +// スキャン点をすべて保存する点群地図 +class PointCloudMapBS : public PointCloudMap +{ +public: + PointCloudMapBS() { + } + + ~PointCloudMapBS() { + } + +//////// + + virtual void addPose(const Pose2D &p); + virtual void addPoints(const std::vector &lps); + virtual void makeGlobalMap(); + virtual void makeLocalMap(); + virtual void remakeMaps(const std::vector &newPoses); +}; + +#endif diff --git a/hook/PointCloudMapGT.cpp b/hook/PointCloudMapGT.cpp new file mode 100755 index 0000000..5d19814 --- /dev/null +++ b/hook/PointCloudMapGT.cpp @@ -0,0 +1,63 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PointCloudMapGT.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "PointCloudMapGT.h" + +using namespace std; + +/////////// + +// ロボット位置の追加 +void PointCloudMapGT::addPose(const Pose2D &p) { + poses.emplace_back(p); +} + +// 格子テーブルの各セルの代表点を求めてspsに格納する +void PointCloudMapGT::subsamplePoints(vector &sps) { + nntab.clear(); // 格子テーブルの初期化 + for (size_t i=0; i &lps) { + for (size_t i=0; i &newPoses) { +} diff --git a/hook/PointCloudMapGT.h b/hook/PointCloudMapGT.h new file mode 100755 index 0000000..f0614a3 --- /dev/null +++ b/hook/PointCloudMapGT.h @@ -0,0 +1,49 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PointCloudMapGT.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef POINT_CLOUD_MAP_GT_H_ +#define POINT_CLOUD_MAP_GT_H_ + +#include +#include "PointCloudMap.h" +#include "NNGridTable.h" + +/////////// + +// 格子テーブルを用いた点群地図 +class PointCloudMapGT : public PointCloudMap +{ +public: + std::vector allLps; // 全スキャン点群 + NNGridTable nntab; // 格子テーブル + +public: + PointCloudMapGT() { + allLps.reserve(MAX_POINT_NUM); // 最初に確保 + } + + ~PointCloudMapGT() { + } + +///////////// + + virtual void addPose(const Pose2D &p); + virtual void addPoints(const std::vector &lps); + virtual void makeGlobalMap(); + virtual void makeLocalMap(); + void subsamplePoints(std::vector &sps); + virtual void remakeMaps(const std::vector &newPoses); +}; + +#endif diff --git a/hook/PointCloudMapLP.cpp b/hook/PointCloudMapLP.cpp new file mode 100755 index 0000000..0cbd846 --- /dev/null +++ b/hook/PointCloudMapLP.cpp @@ -0,0 +1,161 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PointCloudMapLP.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "PointCloudMapLP.h" +#include "NNGridTable.h" + +using namespace std; + +double PointCloudMapLP::atdThre = 10; + +/////////// + +// 格子テーブルを用いて、部分地図の代表点を得る +vector Submap::subsamplePoints(int nthre) { + NNGridTable nntab; // 格子テーブル + for (size_t i=0; i sps; + nntab.makeCellPoints(nthre, sps); // nthre個以上のセルの代表点をspsに入れる + printf("mps.size=%lu, sps.size=%lu\n", mps.size(), sps.size()); + + return(sps); +} + +///////// + +// ロボット位置の追加 +void PointCloudMapLP::addPose(const Pose2D &p) { + // 累積走行距離(atd)の計算 + if (poses.size() > 0) { + Pose2D pp = poses.back(); + atd += sqrt((p.tx - pp.tx)*(p.tx - pp.tx) + (p.ty - pp.ty)*(p.ty - pp.ty)); + } + else { + atd += sqrt(p.tx*p.tx + p.ty*p.ty); + } + + poses.emplace_back(p); +} + +// スキャン点の追加 +void PointCloudMapLP::addPoints(const vector &lps) { + Submap &curSubmap = submaps.back(); // 現在の部分地図 + if (atd - curSubmap.atdS >= atdThre ) { // 累積走行距離が閾値を超えたら新しい部分地図に変える + size_t size = poses.size(); + curSubmap.cntE = size-1; // 部分地図の最後のスキャン番号 + curSubmap.mps = curSubmap.subsamplePoints(nthre); // 終了した部分地図は代表点のみにする(軽量化) + + Submap submap(atd, size); // 新しい部分地図 + submap.addPoints(lps); // スキャン点群の登録 + submaps.emplace_back(submap); // 部分地図を追加 + } + else { + curSubmap.addPoints(lps); // 現在の部分地図に点群を追加 + } +} + +// 全体地図の生成。局所地図もここでいっしょに作った方が速い +void PointCloudMapLP::makeGlobalMap(){ + globalMap.clear(); // 初期化 + localMap.clear(); + // 現在以外のすでに確定した部分地図から点を集める + for (size_t i=0; i &mps = submap.mps; // 部分地図の点群。代表点だけになっている + for (size_t j=0; j sps = curSubmap.subsamplePoints(nthre); // 代表点を得る + for (size_t i=0; i= 2) { + Submap &submap = submaps[submaps.size()-2]; // 直前の部分地図だけ使う + vector &mps = submap.mps; // 部分地図の点群。代表点だけになっている + for (size_t i=0; i sps = curSubmap.subsamplePoints(nthre); // 代表点を得る + for (size_t i=0; i &newPoses){ + // 各部分地図内の点の位置を修正する + for (size_t i=0; i &mps = submap.mps; // 部分地図の点群。現在地図以外は代表点になっている + for (size_t j=0; j= poses.size()) { // 不正なスキャン番号(あったらバグ) + continue; + } + + const Pose2D &oldPose = poses[idx]; // mpに対応する古いロボット位置 + const Pose2D &newPose = newPoses[idx]; // mpに対応する新しいロボット位置 + const double (*R1)[2] = oldPose.Rmat; + const double (*R2)[2] = newPose.Rmat; + LPoint2D lp1 = oldPose.relativePoint(mp); // oldPoseでmpをセンサ座標系に変換 + LPoint2D lp2 = newPose.globalPoint(lp1); // newPoseでポーズ調整後の地図座標系に変換 + mp.x = lp2.x; + mp.y = lp2.y; + double nx = R1[0][0]*mp.nx + R1[1][0]*mp.ny; // 法線ベクトルもoldPoseでセンサ座標系に変換 + double ny = R1[0][1]*mp.nx + R1[1][1]*mp.ny; + double nx2 = R2[0][0]*nx + R2[0][1]*ny; // 法線ベクトルもnewPoseでポーズ調整後の地図座標系に変換 + double ny2 = R2[1][0]*nx + R2[1][1]*ny; + mp.setNormal(nx2, ny2); + } + } + + makeGlobalMap(); // 部分地図から全体地図と局所地図を生成 + + for (size_t i=0; i +#include "PointCloudMap.h" + +/////////// + +// 部分地図 +struct Submap +{ + double atdS; // 部分地図の始点での累積走行距離 + size_t cntS; // 部分地図の最初のスキャン番号 + size_t cntE; // 部分地図の最後のスキャン番号 + + std::vector mps; // 部分地図内のスキャン点群 + + Submap() : atdS(0), cntS(0), cntE(-1) { + } + + Submap(double a, size_t s) : cntE(-1) { + atdS = a; + cntS = s; + } + + void addPoints(const std::vector &lps) { + for (size_t i=0; i subsamplePoints(int nthre); +}; + +/////////// + +// 部分地図から構成される点群地図 +class PointCloudMapLP : public PointCloudMap +{ +public: + static double atdThre; // 部分地図の区切りとなる累積走行距離(atd)[m] + double atd; // 現在の累積走行距離(accumulated travel distance) + std::vector submaps; // 部分地図 + +public: + PointCloudMapLP() { + Submap submap; + submaps.emplace_back(submap); // 最初の部分地図を作っておく + } + + ~PointCloudMapLP() { + } + +////////// + + Pose2D getLastPose() const { + return(lastPose); + } + + void setLastPose(Pose2D &p) { + lastPose = p; + } + + std::vector &getSubmaps() { + return(submaps); + } + +///////////// + + virtual void addPose(const Pose2D &p); + virtual void addPoints(const std::vector &lps); + virtual void makeGlobalMap(); + virtual void makeLocalMap(); + virtual void remakeMaps(const std::vector &newPoses); + +}; + +#endif diff --git a/hook/PoseOptimizerSD.cpp b/hook/PoseOptimizerSD.cpp new file mode 100755 index 0000000..1b22058 --- /dev/null +++ b/hook/PoseOptimizerSD.cpp @@ -0,0 +1,68 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseOptimizerSD.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "PoseOptimizerSD.h" + +using namespace std; + +//////// + +// データ対応づけ固定のもと、初期値initPoseを与えてロボット位置の推定値estPoseを求める +double PoseOptimizerSD::optimizePose(Pose2D &initPose, Pose2D &estPose) { + double th = initPose.th; + double tx = initPose.tx; + double ty = initPose.ty; + double txmin=tx, tymin=ty, thmin=th; // コスト最小の解 + double evmin = HUGE_VAL; // コストの最小値 + double evold = evmin; // 1つ前のコスト値。収束判定に使う + + double ev = cfunc->calValue(tx, ty, th); // コスト計算 + int nn=0; // 繰り返し回数。確認用 + double kk=0.00001; // 最急降下法のステップ幅係数 + while (abs(evold-ev) > evthre) { // 収束判定。1つ前の値との変化が小さいと終了 + nn++; + evold = ev; + + // 数値計算による偏微分 + double dEtx = (cfunc->calValue(tx+dd, ty, th) - ev)/dd; + double dEty = (cfunc->calValue(tx, ty+dd, th) - ev)/dd; + double dEth = (cfunc->calValue(tx, ty, th+da) - ev)/da; + + // 微分係数にkkをかけてステップ幅にする + double dx = -kk*dEtx; + double dy = -kk*dEty; + double dth = -kk*dEth; + tx += dx; ty += dy; th += dth; // ステップ幅を加えて次の探索位置を決める + + ev = cfunc->calValue(tx, ty, th); // その位置でコスト計算 + + if (ev < evmin) { // evがこれまでの最小なら更新 + evmin = ev; + txmin = tx; tymin = ty; thmin = th; + } + +// printf("nn=%d, ev=%g, evold=%g, abs(evold-ev)=%g\n", nn, ev, evold, abs(evold-ev)); // 確認用 + } + + ++allN; + if (allN > 0 && evmin < 100) + sum += evmin; +// printf("allN=%d, evmin=%g, avg=%g\n", allN, evmin, (sum/allN)); // 確認用 + +// printf("nn=%d, ev=%g\n", nn, ev); // 確認用 + + estPose.setVal(txmin, tymin, thmin); // 最小値を与える解を保存 + + return(evmin); +} diff --git a/hook/PoseOptimizerSD.h b/hook/PoseOptimizerSD.h new file mode 100755 index 0000000..ab5987a --- /dev/null +++ b/hook/PoseOptimizerSD.h @@ -0,0 +1,35 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseOptimizerSD.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _POSE_OPTIMIZER_SD_H_ +#define _POSE_OPTIMIZER_SD_H_ + +#include "PoseOptimizer.h" + +// 最急降下法でコスト関数を最小化する +class PoseOptimizerSD : public PoseOptimizer +{ +public: + PoseOptimizerSD() { + } + + ~PoseOptimizerSD() { + } + +///// + + virtual double optimizePose(Pose2D &initPose, Pose2D &estPose); +}; + +#endif diff --git a/hook/PoseOptimizerSL.cpp b/hook/PoseOptimizerSL.cpp new file mode 100755 index 0000000..dae5121 --- /dev/null +++ b/hook/PoseOptimizerSL.cpp @@ -0,0 +1,101 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseOptimizerSL.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include +#include "PoseOptimizerSL.h" + +using namespace std; + +//////// + +// データ対応づけ固定のもと、初期値initPoseを与えてロボット位置の推定値estPoseを求める +double PoseOptimizerSL::optimizePose(Pose2D &initPose, Pose2D &estPose) { + double th = initPose.th; + double tx = initPose.tx; + double ty = initPose.ty; + double txmin=tx, tymin=ty, thmin=th; // コスト最小の解 + double evmin = HUGE_VAL; // コストの最小値 + double evold = evmin; // 1つ前のコスト値。収束判定に使う + Pose2D pose, dir; + + double ev = cfunc->calValue(tx, ty, th); // コスト計算 + int nn=0; // 繰り返し回数。確認用 + while (abs(evold-ev) > evthre) { // 収束判定。値の変化が小さいと終了 + nn++; + evold = ev; + + // 数値計算による偏微分 + double dx = (cfunc->calValue(tx+dd, ty, th) - ev)/dd; + double dy = (cfunc->calValue(tx, ty+dd, th) - ev)/dd; + double dth = (cfunc->calValue(tx, ty, th+da) - ev)/da; + tx += dx; ty += dy; th += dth; // いったん次の探索位置を決める + + // ブレント法による直線探索 + pose.tx = tx; pose.ty = ty; pose.th = th; // 探索開始点 + dir.tx = dx; dir.ty = dy; dir.th = dth; // 探索方向 + search(ev, pose, dir); // 直線探索実行 + tx = pose.tx; ty = pose.ty; th = pose.th; // 直線探索で求めた位置 + + ev = cfunc->calValue(tx, ty, th); // 求めた位置でコスト計算 + + if (ev < evmin) { // コストがこれまでの最小なら更新 + evmin = ev; + txmin = tx; tymin = ty; thmin = th; + } + +// printf("nn=%d, ev=%g, evold=%g, abs(evold-ev)=%g\n", nn, ev, evold, abs(evold-ev)); // 確認用 + } + ++allN; + if (allN > 0 && evmin < 100) + sum += evmin; +// printf("allN=%d, nn=%d, evmin=%g, avg=%g, evthre=%g\n", allN, nn, evmin, (sum/allN), evthre); // 確認用 + +// printf("nn=%d, evmin=%g\n", nn, evmin); // 確認用 + + estPose.setVal(txmin, tymin, thmin); // 最小値を与える解を保存 + + return(evmin); +} + +////////// Line search /////////// + +// boostライブラリのブレント法で直線探索を行う。 +// poseを始点に、dp方向にどれだけ進めばよいかステップ幅を見つける。 +double PoseOptimizerSL::search(double ev0, Pose2D &pose, Pose2D &dp) { + int bits = numeric_limits::digits; // 探索精度 + boost::uintmax_t maxIter=40; // 最大繰り返し回数。経験的に決める + pair result = + boost::math::tools::brent_find_minima( + [this, &pose, &dp](double tt) {return (objFunc(tt, pose, dp));}, + -2.0, 2.0, bits, maxIter); // 探索範囲(-2.0,2.0) + + double t = result.first; // 求めるステップ幅 + double v = result.second; // 求める最小値 + + pose.tx = pose.tx + t*dp.tx; // 求める最小解をposeに格納 + pose.ty = pose.ty + t*dp.ty; + pose.th = MyUtil::add(pose.th, t*dp.th); + + return(v); +} + +// 直線探索の目的関数。ttがステップ幅 +double PoseOptimizerSL::objFunc(double tt, Pose2D &pose, Pose2D &dp) { + double tx = pose.tx + tt*dp.tx; // poseからdp方向にttだけ進む + double ty = pose.ty + tt*dp.ty; + double th = MyUtil::add(pose.th, tt*dp.th); + double v = cfunc->calValue(tx, ty, th); // コスト関数値 + + return(v); +} diff --git a/hook/PoseOptimizerSL.h b/hook/PoseOptimizerSL.h new file mode 100755 index 0000000..4f6cb3e --- /dev/null +++ b/hook/PoseOptimizerSL.h @@ -0,0 +1,37 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file PoseOptimizerSL.h + * @author Masahiro Tomono + ****************************************************************************/ + +#ifndef _POSE_OPTIMIZER_SL_H_ +#define _POSE_OPTIMIZER_SL_H_ + +#include "PoseOptimizer.h" + +// 直線探索つきの最急降下法でコスト関数を最小化する +class PoseOptimizerSL : public PoseOptimizer +{ +public: + PoseOptimizerSL() { + } + + ~PoseOptimizerSL() { + } + +///// + + virtual double optimizePose(Pose2D &initPose, Pose2D &estPose); + double search(double ev0, Pose2D &pose, Pose2D &dp); + double objFunc(double tt, Pose2D &pose, Pose2D &dp); +}; + +#endif diff --git a/hook/RefScanMakerBS.cpp b/hook/RefScanMakerBS.cpp new file mode 100755 index 0000000..7c80e20 --- /dev/null +++ b/hook/RefScanMakerBS.cpp @@ -0,0 +1,43 @@ +/**************************************************************************** + * LittleSLAM: 2D-Laser SLAM for educational use + * Copyright (C) 2017-2018 Masahiro Tomono + * Copyright (C) 2018 Future Robotics Technology Center (fuRo), + * Chiba Institute of Technology. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. + * + * @file RefScanMakerBS.cpp + * @author Masahiro Tomono + ****************************************************************************/ + +#include "RefScanMakerBS.h" + +using namespace std; + +const Scan2D *RefScanMakerBS::makeRefScan() { + vector &refLps = refScan.lps; // 参照スキャンの点群のコンテナ + refLps.clear(); + + Pose2D lastPose = pcmap->getLastPose(); // 点群地図に保存した最後の推定位置 + double (*R)[2] = lastPose.Rmat; + double tx = lastPose.tx; + double ty = lastPose.ty; + + // 点群地図に保存した最後のスキャンを参照スキャンにする + const vector &lps = pcmap->lastScan.lps; + for (size_t i=0; i &refLps = refScan.lps; // 参照スキャンの点群のコンテナ + refLps.clear(); + + const vector &localMap = pcmap->localMap; // 点群地図の局所地図 + for (size_t i=0; i