pax_global_header00006660000000000000000000000064136076623260014525gustar00rootroot0000000000000052 comment=9c87e553a51170e4ce85fd2ef3160bc3434eb751 wagyu-0.5.0/000077500000000000000000000000001360766232600126635ustar00rootroot00000000000000wagyu-0.5.0/.clang-format000066400000000000000000000010141360766232600152320ustar00rootroot00000000000000Standard: Cpp11 IndentWidth: 4 AccessModifierOffset: -4 UseTab: Never BinPackParameters: false AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AllowShortBlocksOnASingleLine: false AllowShortFunctionsOnASingleLine: false ConstructorInitializerAllOnOneLineOrOnePerLine: true AlwaysBreakTemplateDeclarations: true NamespaceIndentation: None PointerBindsToType: true SpacesInParentheses: false BreakBeforeBraces: Attach ColumnLimit: 120 Cpp11BracedListStyle: false SpacesBeforeTrailingComments: 1 wagyu-0.5.0/.clang-tidy000066400000000000000000000023301360766232600147150ustar00rootroot00000000000000--- Checks: '*,-cert-err58-cpp,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-fuchsia-default-arguments-*' WarningsAsErrors: '*' HeaderFilterRegex: '.*\/include\/mapbox\/geometry\/wagyu\/.*' AnalyzeTemporaryDtors: false CheckOptions: - key: google-readability-braces-around-statements.ShortStatementLines value: '1' - key: google-readability-function-size.StatementThreshold value: '800' - key: google-readability-namespace-comments.ShortNamespaceLines value: '10' - key: google-readability-namespace-comments.SpacesBeforeComments value: '2' - key: modernize-loop-convert.MaxCopySize value: '16' - key: modernize-loop-convert.MinConfidence value: reasonable - key: modernize-loop-convert.NamingStyle value: CamelCase - key: modernize-pass-by-value.IncludeStyle value: llvm - key: modernize-replace-auto-ptr.IncludeStyle value: llvm - key: modernize-use-nullptr.NullMacros value: 'NULL' ... wagyu-0.5.0/.gitignore000066400000000000000000000001731360766232600146540ustar00rootroot00000000000000test fixture-tester fuzzer build *.swp mason_packages *.dSYM tests/output-polyjson cmake-build .mason local.env .toolchain wagyu-0.5.0/.gitmodules000066400000000000000000000002001360766232600150300ustar00rootroot00000000000000[submodule "tests/geometry-test-data"] path = tests/geometry-test-data url = https://github.com/mapnik/geometry-test-data.git wagyu-0.5.0/.travis.yml000066400000000000000000000041401360766232600147730ustar00rootroot00000000000000language: generic sudo: false matrix: include: # clang-tidy/format specific job - os: linux sudo: false env: CLANG_FORMAT addons: apt: sources: [ 'ubuntu-toolchain-r-test' ] packages: [ 'libstdc++6', 'libstdc++-5-dev' ] script: - make format - os: linux sudo: false env: CXX=g++-4.9 addons: apt: sources: [ 'ubuntu-toolchain-r-test' ] packages: [ 'g++-4.9' ] - os: linux sudo: false env: CXX=g++-5 addons: apt: sources: [ 'ubuntu-toolchain-r-test' ] packages: [ 'g++-5' ] - os: linux sudo: false env: CXX=clang++ addons: apt: sources: [ 'ubuntu-toolchain-r-test' ] packages: [ 'libstdc++6', 'libstdc++-5-dev' ] - os: linux sudo: required # workaround https://github.com/mapbox/node-cpp-skel/issues/93 env: CXXFLAGS="-fsanitize=address,undefined,integer -fno-sanitize-recover=all" addons: apt: sources: [ 'ubuntu-toolchain-r-test' ] packages: [ 'libstdc++6', 'libstdc++-5-dev' ] # coverage build - os: linux sudo: false env: CXXFLAGS="--coverage" LDFLAGS="--coverage" addons: apt: sources: [ 'ubuntu-toolchain-r-test' ] packages: [ 'libstdc++6', 'libstdc++-5-dev' ] script: - make debug - make test # MASON_LLVM_RELEASE comes from the setup.sh script - mason install llvm-cov ${MASON_LLVM_RELEASE} - mason link llvm-cov ${MASON_LLVM_RELEASE} - curl -S -f https://codecov.io/bash -o codecov - chmod +x codecov - ./codecov -x "llvm-cov gcov -l" -Z env: global: - CMAKE_VERSION="3.8.2" install: # set up the environment by installing mason and clang++ - ./scripts/setup.sh --config local.env # put mason and clang++ on PATH - source local.env - mason install cmake ${CMAKE_VERSION} - mason link cmake ${CMAKE_VERSION} - which cmake script: - make release - make test - make clean - make debug - make test - make clean wagyu-0.5.0/CHANGELOG.md000066400000000000000000000053111360766232600144740ustar00rootroot00000000000000# Changelog ## 0.1.0 - Initial Release of Wagyu ## 0.2.0 - Fixed winding order issues related to [issue #51](https://github.com/mapbox/wagyu/issues/51) ## 0.3.0 - Added quick clip as path for quickly clipping large polygon data specifically to a bounding box. - Removed linestring code from wagyu, going forward library is only planning on supporting polygon data. - Removed some dead code paths - Fixed some bugs associated with multipolygons that are intersecting - Fixed rare bug where holes were sometimes being considered as new polygons ## 0.4.0 - Completely reworked the way topology correction works. It is not seperated into more discrete steps rather then attempting to process it all in one loop through all points. This has made the code much easier to debug. - Removed the need to process certain intersections before others in order to gain correct results. - Updated `poly2_contain_poly1` such that the rare situation where one ring contains all the same points as another ring, it properly returns results in all situations. - Added several more fields to the `ring` struct so that it now tracks area and size more efficiently. Also added a bounding box to the calculation for each `ring`. - Replaced the scanbeam tracking to no longer use a priority queue as a std vector was shown to be slightly faster - Replaced std list in active bounds list with a std vector - Fixed bug in bound construtors where `next_edge` was not being properly initialized. - Fixed bug in snap rounding where `next_edge` of bounds were not being properly set. - Added ability for `fixture-tester` to repeatedly test the same test. ## 0.4.1 - The integer type of input and output can now be different then the integer type used in wagyu's processing - Added -Wshorten-64-to-32 to warnings during builds ## 0.4.2 - Fixed issue found with -Wconversion through out the code - Put rounding into place in quick clip when it was previously truncating points while clipping. - Removed unrequired referencing of children ring pointers in several locations within loops - Switched to `mason.sh` client script over including entire mason repository - Deleted default copy constructor on bound structure - Fixed bug in `get_dx` - Fixed some includes that were missing in some headers - Removed some dead code paths and checks that are no longer required ## 0.4.3 - Use `::llround()` instead of `std::llround()` for old libstdc++ compatibility. ## 0.5.0 - Fixed various issues associated with floating point data and comparisions of numbers. This in effect solves some weird intersection bugs and situations where the bounds are not properly sorted. This can result in a variety of different crashes and bad results in the final output in very rare situations. wagyu-0.5.0/CMakeLists.txt000066400000000000000000000055261360766232600154330ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.8) project(hpp_skel LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED on) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/mason.cmake) option(WERROR "Add -Werror flag to build (turns warnings into errors)" ON) # configure optimization if (CMAKE_BUILD_TYPE STREQUAL "Debug") set(OPTIMIZATION_FLAGS "-O0 -DDEBUG") message("-- Configuring debug build") else() set(OPTIMIZATION_FLAGS "-O3 -DNDEBUG") message("-- Configuring release build") endif() # Enable extra warnings to adhere to https://github.com/mapbox/cpp/issues/37 set(DESIRED_WARNINGS "-Wall -Wextra -Wconversion -Wunreachable-code -Wuninitialized -pedantic-errors -Wold-style-cast -Wno-error=unused-variable -Wshadow -Wfloat-equal -Weffc++") if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(DESIRED_WARNINGS "${DESIRED_WARNINGS} -Wmost") endif() # Note: -D_GLIBCXX_USE_CXX11_ABI=0 is needed to support mason packages that are precompiled libs # Currently we only depend on a header only library, but this will help avoid issues when more libs are added via mason set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPTIMIZATION_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0 ${DESIRED_WARNINGS}") if (WERROR) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") endif() # mason_use is a mason function within the mason.cmake file and provides ready-to-go vars, like "STATIC_LIBS" and "INCLUDE_DIRS" mason_use(boost_libfilesystem VERSION 1.72.0) mason_use(boost_libsystem VERSION 1.72.0) mason_use(boost VERSION 1.72.0 HEADER_ONLY) include_directories(SYSTEM ${MASON_PACKAGE_boost_INCLUDE_DIRS}) mason_use(rapidjson VERSION 1.1.0 HEADER_ONLY) include_directories(SYSTEM ${MASON_PACKAGE_rapidjson_INCLUDE_DIRS}) mason_use(geometry VERSION 1.0.0 HEADER_ONLY) include_directories(SYSTEM ${MASON_PACKAGE_geometry_INCLUDE_DIRS}) mason_use(catch VERSION 1.9.6 HEADER_ONLY) include_directories(SYSTEM ${MASON_PACKAGE_catch_INCLUDE_DIRS}) mason_use(benchmark VERSION 1.4.1) include_directories(SYSTEM ${MASON_PACKAGE_benchmark_INCLUDE_DIRS}) include_directories("${PROJECT_SOURCE_DIR}/include") file(GLOB TEST_SOURCES tests/unit/*.cpp) add_executable(unit-tests ${TEST_SOURCES}) file(GLOB TEST_SOURCES tests/fixtures/*.cpp) add_executable(fixture-tests ${TEST_SOURCES}) file(GLOB FUZZER_SOURCES fuzzer/*.cpp) add_executable(fuzzer-tests ${FUZZER_SOURCES}) # libbenchmark.a supports threads and therefore needs pthread support find_package(Threads REQUIRED) file(GLOB BENCH_SOURCES bench/*.cpp) add_executable(bench-tests ${BENCH_SOURCES}) # link benchmark static library to the bench-tests binary so the bench tests know where to find the benchmark impl code target_link_libraries(bench-tests ${MASON_PACKAGE_benchmark_STATIC_LIBS} ${MASON_PACKAGE_boost_libfilesystem_STATIC_LIBS} ${MASON_PACKAGE_boost_libsystem_STATIC_LIBS} ${CMAKE_THREAD_LIBS_INIT}) wagyu-0.5.0/LICENSE000066400000000000000000000037401360766232600136740ustar00rootroot00000000000000Parts of the code in the Wagyu Library are derived from the version of the Clipper Library by Angus Johnson listed below. Author : Angus Johnson Version : 6.4.0 Date : 2 July 2015 Website : http://www.angusj.com Copyright for portions of the derived code in the Wagyu library are held by Angus Johnson, 2010-2015. Copyright for the "include/mapbox/geometry/wagyu/almost_equal.hpp" file is held by Google Inc and its license is listed at the top of that file. All other copyright for the Wagyu Library are held by Mapbox, 2016. This code is published in accordance with, and retains the same license as the Clipper Library by Angus Johnson. Copyright (c) 2010-2015, Angus Johnson Copyright (c) 2016-2020, Mapbox Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. wagyu-0.5.0/Makefile000066400000000000000000000023301360766232600143210ustar00rootroot00000000000000 # Whether to turn compiler warnings into errors export WERROR ?= true export BUILD_DIR ?= cmake-build default: release release: mkdir -p ./$(BUILD_DIR) && cd ./$(BUILD_DIR) && cmake ../ -DCMAKE_BUILD_TYPE=Release -DWERROR=$(WERROR) && VERBOSE=1 cmake --build . debug: mkdir -p ./$(BUILD_DIR) && cd ./$(BUILD_DIR) && cmake ../ -DCMAKE_BUILD_TYPE=Debug -DWERROR=$(WERROR) && VERBOSE=1 cmake --build . test: @if [ -f ./$(BUILD_DIR)/unit-tests ]; then ./$(BUILD_DIR)/unit-tests; ./tests/run-geometry-tests.sh ./$(BUILD_DIR)/fixture-tests; else echo "Please run 'make release' or 'make debug' first" && exit 1; fi bench: @if [ -f ./$(BUILD_DIR)/bench-tests ]; then ./$(BUILD_DIR)/bench-tests; else echo "Please run 'make release' or 'make debug' first" && exit 1; fi tidy: ./scripts/clang-tidy.sh coverage: ./scripts/coverage.sh clean: rm -rf ./$(BUILD_DIR) # remove remains from running 'make coverage' rm -f *.profraw rm -f *.profdata @echo "run 'make distclean' to also clear mason_packages, .mason, and .toolchain directories" distclean: clean rm -rf mason_packages # remove remains from running './scripts/setup.sh' rm -rf .mason rm -rf .toolchain rm -f local.env format: ./scripts/format.sh .PHONY: test bench wagyu-0.5.0/README.md000066400000000000000000000022101360766232600141350ustar00rootroot00000000000000## Wagyu Geometry Processing Library [![Build Status](https://travis-ci.org/mapbox/wagyu.svg?branch=master)](https://travis-ci.org/mapbox/wagyu) [![codecov](https://codecov.io/gh/mapbox/wagyu/branch/master/graph/badge.svg)](https://codecov.io/gh/mapbox/wagyu) [![badge](https://mapbox.s3.amazonaws.com/cpp-assets/hpp-skel-badge_blue.svg)](https://github.com/mapbox/hpp-skel) Wagyu is a general library for the following basic geometric operations: * Union * Intersection * Difference * XOR The output geometry from each of these operations is guaranteed to be [valid and simple as per the OGC](http://postgis.net/docs/using_postgis_dbmanagement.html#OGC_Validity). ## Documentation Documentation of any library is critical to its existance and it really takes a community of effort. All of the documentation for the library is [included with the library](https://github.com/mapbox/wagyu/blob/master/docs/README.md). The Wagyu project loves pull requests so please feel free to contribute at any point in time to the `docs/` directory in any way you see fit! If you see a problem in documentation, at least please make an issue in the github repository. wagyu-0.5.0/bench/000077500000000000000000000000001360766232600137425ustar00rootroot00000000000000wagyu-0.5.0/bench/angus.cpp000066400000000000000000006151241360766232600155740ustar00rootroot00000000000000/******************************************************************************* * * * Author : Angus Johnson * * Version : 6.4.0 * * Date : 2 July 2015 * * Website : http://www.angusj.com * * Copyright : Angus Johnson 2010-2015 * * * * License: * * Use, modification & distribution is subject to Boost Software License Ver 1. * * http://www.boost.org/LICENSE_1_0.txt * * * * Attributions: * * The code in this library is an extension of Bala Vatti's clipping algorithm: * * "A generic solution to polygon clipping" * * Communications of the ACM, Vol 35, Issue 7 (July 1992) pp 56-63. * * http://portal.acm.org/citation.cfm?id=129906 * * * * Computer graphics and geometric modeling: implementation and algorithms * * By Max K. Agoston * * Springer; 1 edition (January 4, 2005) * * http://books.google.com/books?q=vatti+clipping+agoston * * * * See also: * * "Polygon Offsetting by Computing Winding Numbers" * * Paper no. DETC2005-85513 pp. 565-575 * * ASME 2005 International Design Engineering Technical Conferences * * and Computers and Information in Engineering Conference (IDETC/CIE2005) * * September 24-28, 2005 , Long Beach, California, USA * * http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf * * * *******************************************************************************/ /******************************************************************************* * * * This is a translation of the Delphi Clipper library and the naming style * * used has retained a Delphi flavour. * * * *******************************************************************************/ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Wold-style-cast" #pragma GCC diagnostic ignored "-Wsign-conversion" #pragma GCC diagnostic ignored "-Wfloat-conversion" #pragma GCC diagnostic ignored "-Wfloat-equal" #pragma GCC diagnostic ignored "-Weffc++" #pragma GCC diagnostic ignored "-Wconversion" #pragma GCC diagnostic ignored "-Wpedantic" #include "angus.hpp" #include #include #include #include #include #include #include #include #include namespace ClipperLib { static double const pi = 3.141592653589793238; static double const two_pi = pi * 2; static double const def_arc_tolerance = 0.25; enum Direction { dRightToLeft, dLeftToRight }; static int const Unassigned = -1; // edge not currently 'owning' a solution static int const Skip = -2; // edge that would otherwise close a path #define HORIZONTAL (-1.0E+40) #define TOLERANCE (1.0e-20) #define NEAR_ZERO(val) (((val) > -TOLERANCE) && ((val) < TOLERANCE)) struct TEdge { IntPoint Bot; IntPoint Curr; // current (updated for every new scanbeam) IntPoint Top; double Dx{}; PolyType PolyTyp; EdgeSide Side; // side only refers to current side of solution poly int WindDelta{}; // 1 or -1 depending on winding direction int WindCnt{}; int WindCnt2{}; // winding count of the opposite polytype int OutIdx{}; TEdge* Next{}; TEdge* Prev{}; TEdge* NextInLML{}; TEdge* NextInAEL{}; TEdge* PrevInAEL{}; TEdge* NextInSEL{}; TEdge* PrevInSEL{}; }; struct IntersectNode { TEdge* Edge1{}; TEdge* Edge2{}; IntPoint Pt; }; struct LocalMinimum { cInt y; TEdge* LeftBound; TEdge* RightBound; }; struct OutPt; // OutRec: contains a path in the clipping solution. Edges in the AEL will // carry a pointer to an OutRec when they are part of the clipping solution. struct OutRec { int Idx; bool IsHole; bool IsOpen; OutRec* FirstLeft; // see comments in clipper.pas PolyNode* PolyNd; OutPt* Pts; OutPt* BottomPt; }; struct OutPt { int Idx{}; IntPoint Pt; OutPt* Next{}; OutPt* Prev{}; }; struct Join { OutPt* OutPt1{}; OutPt* OutPt2{}; IntPoint OffPt; }; struct LocMinSorter { inline bool operator()(const LocalMinimum& locMin1, const LocalMinimum& locMin2) { return locMin2.y < locMin1.y; } }; //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ inline cInt Round(double val) { if ((val < 0)) { return static_cast(val - 0.5); } return static_cast(val + 0.5); } //------------------------------------------------------------------------------ inline cInt Abs(cInt val) { return val < 0 ? -val : val; } //------------------------------------------------------------------------------ // PolyTree methods ... //------------------------------------------------------------------------------ void PolyTree::Clear() { for (auto& AllNode : AllNodes) { delete AllNode; } AllNodes.resize(0); Childs.resize(0); } //------------------------------------------------------------------------------ PolyNode* PolyTree::GetFirst() const { if (!Childs.empty()) { return Childs[0]; } return nullptr; } //------------------------------------------------------------------------------ int PolyTree::Total() const { auto result = static_cast(AllNodes.size()); // with negative offsets, ignore the hidden outer polygon ... if (result > 0 && Childs[0] != AllNodes[0]) { result--; } return result; } //------------------------------------------------------------------------------ // PolyNode methods ... //------------------------------------------------------------------------------ PolyNode::PolyNode() : Parent(nullptr), Index(0), m_IsOpen(false) { } //------------------------------------------------------------------------------ int PolyNode::ChildCount() const { return static_cast(Childs.size()); } //------------------------------------------------------------------------------ void PolyNode::AddChild(PolyNode& child) { auto cnt = static_cast(Childs.size()); Childs.push_back(&child); child.Parent = this; child.Index = cnt; } //------------------------------------------------------------------------------ PolyNode* PolyNode::GetNext() const { if (!Childs.empty()) { return Childs[0]; } return GetNextSiblingUp(); } //------------------------------------------------------------------------------ PolyNode* PolyNode::GetNextSiblingUp() const { if (Parent == nullptr) { // protects against PolyTree.GetNextSiblingUp() return nullptr; } if (Index == Parent->Childs.size() - 1) { return Parent->GetNextSiblingUp(); } return Parent->Childs[Index + 1]; } //------------------------------------------------------------------------------ bool PolyNode::IsHole() const { bool result = true; PolyNode* node = Parent; while (node != nullptr) { result = !result; node = node->Parent; } return result; } //------------------------------------------------------------------------------ bool PolyNode::IsOpen() const { return m_IsOpen; } //------------------------------------------------------------------------------ #ifndef use_int32 //------------------------------------------------------------------------------ // Int128 class (enables safe math on signed 64bit integers) // eg Int128 val1((long64)9223372036854775807); //ie 2^63 -1 // Int128 val2((long64)9223372036854775807); // Int128 val3 = val1 * val2; // val3.AsString => "85070591730234615847396907784232501249" (8.5e+37) //------------------------------------------------------------------------------ class Int128 { public: ulong64 lo; long64 hi; explicit Int128(long64 _lo = 0) { lo = static_cast(_lo); if (_lo < 0) { hi = -1; } else { hi = 0; } } Int128(const Int128& val) = default; Int128(const long64& _hi, const ulong64& _lo) : lo(_lo), hi(_hi) { } Int128& operator=(const long64& val) { lo = static_cast(val); if (val < 0) { hi = -1; } else { hi = 0; } return *this; } bool operator==(const Int128& val) const { return (hi == val.hi && lo == val.lo); } bool operator!=(const Int128& val) const { return !(*this == val); } bool operator>(const Int128& val) const { if (hi != val.hi) { return hi > val.hi; } return lo > val.lo; } bool operator<(const Int128& val) const { if (hi != val.hi) { return hi < val.hi; } return lo < val.lo; } bool operator>=(const Int128& val) const { return !(*this < val); } bool operator<=(const Int128& val) const { return !(*this > val); } Int128& operator+=(const Int128& rhs) { hi += rhs.hi; lo += rhs.lo; if (lo < rhs.lo) { hi++; } return *this; } Int128 operator+(const Int128& rhs) const { Int128 result(*this); result += rhs; return result; } Int128& operator-=(const Int128& rhs) { *this += -rhs; return *this; } Int128 operator-(const Int128& rhs) const { Int128 result(*this); result -= rhs; return result; } Int128 operator-() const // unary negation { if (lo == 0) { return Int128(-hi, 0); } return Int128(~hi, ~lo + 1); } explicit operator double() const { const double shift64 = 18446744073709551616.0; // 2^64 if (hi < 0) { if (lo == 0) { return static_cast(hi) * shift64; } return -(~lo + ~hi * shift64); } return (lo + hi * shift64); } }; //------------------------------------------------------------------------------ Int128 Int128Mul(long64 lhs, long64 rhs) { bool negate = (lhs < 0) != (rhs < 0); if (lhs < 0) { lhs = -lhs; } ulong64 int1Hi = ulong64(lhs) >> 32; auto int1Lo = ulong64(lhs & 0xFFFFFFFF); if (rhs < 0) { rhs = -rhs; } ulong64 int2Hi = ulong64(rhs) >> 32; auto int2Lo = ulong64(rhs & 0xFFFFFFFF); // nb: see comments in clipper.pas ulong64 a = int1Hi * int2Hi; ulong64 b = int1Lo * int2Lo; ulong64 c = int1Hi * int2Lo + int1Lo * int2Hi; Int128 tmp; tmp.hi = long64(a + (c >> 32)); tmp.lo = long64(c << 32); tmp.lo += long64(b); if (tmp.lo < b) { tmp.hi++; } if (negate) { tmp = -tmp; } return tmp; }; #endif //------------------------------------------------------------------------------ // Miscellaneous global functions //------------------------------------------------------------------------------ bool Orientation(const Path& poly) { return Area(poly) >= 0; } //------------------------------------------------------------------------------ double Area(const Path& poly) { auto size = static_cast(poly.size()); if (size < 3) { return 0; } double a = 0; for (int i = 0, j = size - 1; i < size; ++i) { a += (static_cast(poly[j].x) + poly[i].x) * (static_cast(poly[j].y) - poly[i].y); j = i; } return -a * 0.5; } //------------------------------------------------------------------------------ double Area(const OutPt* op) { const OutPt* startOp = op; if (op == nullptr) { return 0; } double a = 0; do { a += static_cast(op->Prev->Pt.x + op->Pt.x) * static_cast(op->Prev->Pt.y - op->Pt.y); op = op->Next; } while (op != startOp); return a * 0.5; } //------------------------------------------------------------------------------ double Area(const OutRec& outRec) { return Area(outRec.Pts); } //------------------------------------------------------------------------------ bool PointIsVertex(const IntPoint& Pt, OutPt* pp) { OutPt* pp2 = pp; do { if (pp2->Pt == Pt) { return true; } pp2 = pp2->Next; } while (pp2 != pp); return false; } //------------------------------------------------------------------------------ // See "The Point in Polygon Problem for Arbitrary Polygons" by Hormann & Agathos // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.5498&rep=rep1&type=pdf int PointInPolygon(const IntPoint& pt, const Path& path) { // returns 0 if false, +1 if true, -1 if pt ON polygon boundary int result = 0; size_t cnt = path.size(); if (cnt < 3) { return 0; } IntPoint ip = path[0]; for (size_t i = 1; i <= cnt; ++i) { IntPoint ipNext = (i == cnt ? path[0] : path[i]); if (ipNext.y == pt.y) { if ((ipNext.x == pt.x) || (ip.y == pt.y && ((ipNext.x > pt.x) == (ip.x < pt.x)))) { return -1; } } if ((ip.y < pt.y) != (ipNext.y < pt.y)) { if (ip.x >= pt.x) { if (ipNext.x > pt.x) { result = 1 - result; } else { double d = static_cast(ip.x - pt.x) * (ipNext.y - pt.y) - static_cast(ipNext.x - pt.x) * (ip.y - pt.y); if (d == 0.0) { return -1; } if ((d > 0) == (ipNext.y > ip.y)) { result = 1 - result; } } } else { if (ipNext.x > pt.x) { double d = static_cast(ip.x - pt.x) * (ipNext.y - pt.y) - static_cast(ipNext.x - pt.x) * (ip.y - pt.y); if (d == 0.0) { return -1; } if ((d > 0) == (ipNext.y > ip.y)) { result = 1 - result; } } } } ip = ipNext; } return result; } //------------------------------------------------------------------------------ int PointInPolygon(const IntPoint& pt, OutPt* op) { // returns 0 if false, +1 if true, -1 if pt ON polygon boundary int result = 0; OutPt* startOp = op; for (;;) { if (op->Next->Pt.y == pt.y) { if ((op->Next->Pt.x == pt.x) || (op->Pt.y == pt.y && ((op->Next->Pt.x > pt.x) == (op->Pt.x < pt.x)))) { return -1; } } if ((op->Pt.y < pt.y) != (op->Next->Pt.y < pt.y)) { if (op->Pt.x >= pt.x) { if (op->Next->Pt.x > pt.x) { result = 1 - result; } else { double d = static_cast(op->Pt.x - pt.x) * (op->Next->Pt.y - pt.y) - static_cast(op->Next->Pt.x - pt.x) * (op->Pt.y - pt.y); if (d == 0.0) { return -1; } if ((d > 0) == (op->Next->Pt.y > op->Pt.y)) { result = 1 - result; } } } else { if (op->Next->Pt.x > pt.x) { double d = static_cast(op->Pt.x - pt.x) * (op->Next->Pt.y - pt.y) - static_cast(op->Next->Pt.x - pt.x) * (op->Pt.y - pt.y); if (d == 0.0) { return -1; } if ((d > 0) == (op->Next->Pt.y > op->Pt.y)) { result = 1 - result; } } } } op = op->Next; if (startOp == op) { break; } } return result; } //------------------------------------------------------------------------------ bool Poly2ContainsPoly1(OutPt* OutPt1, OutPt* OutPt2) { OutPt* op = OutPt1; do { // nb: PointInPolygon returns 0 if false, +1 if true, -1 if pt on polygon int res = PointInPolygon(op->Pt, OutPt2); if (res >= 0) { return res > 0; } op = op->Next; } while (op != OutPt1); return true; } //---------------------------------------------------------------------- bool SlopesEqual(const TEdge& e1, const TEdge& e2, bool UseFullInt64Range) { #ifndef use_int32 if (UseFullInt64Range) { return Int128Mul(e1.Top.y - e1.Bot.y, e2.Top.x - e2.Bot.x) == Int128Mul(e1.Top.x - e1.Bot.x, e2.Top.y - e2.Bot.y); } #endif return (e1.Top.y - e1.Bot.y) * (e2.Top.x - e2.Bot.x) == (e1.Top.x - e1.Bot.x) * (e2.Top.y - e2.Bot.y); } // namespace ClipperLib //------------------------------------------------------------------------------ bool SlopesEqual(const IntPoint pt1, const IntPoint pt2, const IntPoint pt3, bool UseFullInt64Range) { #ifndef use_int32 if (UseFullInt64Range) { return Int128Mul(pt1.y - pt2.y, pt2.x - pt3.x) == Int128Mul(pt1.x - pt2.x, pt2.y - pt3.y); } #endif return (pt1.y - pt2.y) * (pt2.x - pt3.x) == (pt1.x - pt2.x) * (pt2.y - pt3.y); } //------------------------------------------------------------------------------ bool SlopesEqual( const IntPoint pt1, const IntPoint pt2, const IntPoint pt3, const IntPoint pt4, bool UseFullInt64Range) { #ifndef use_int32 if (UseFullInt64Range) { return Int128Mul(pt1.y - pt2.y, pt3.x - pt4.x) == Int128Mul(pt1.x - pt2.x, pt3.y - pt4.y); } #endif return (pt1.y - pt2.y) * (pt3.x - pt4.x) == (pt1.x - pt2.x) * (pt3.y - pt4.y); } //------------------------------------------------------------------------------ inline bool IsHorizontal(TEdge& e) { return e.Dx == HORIZONTAL; } //------------------------------------------------------------------------------ inline double GetDx(const IntPoint pt1, const IntPoint pt2) { return (pt1.y == pt2.y) ? HORIZONTAL : static_cast(pt2.x - pt1.x) / (pt2.y - pt1.y); } //--------------------------------------------------------------------------- inline void SetDx(TEdge& e) { cInt dy = (e.Top.y - e.Bot.y); if (dy == 0) { e.Dx = HORIZONTAL; } else { e.Dx = static_cast(e.Top.x - e.Bot.x) / dy; } } //--------------------------------------------------------------------------- inline void SwapSides(TEdge& Edge1, TEdge& Edge2) { EdgeSide Side = Edge1.Side; Edge1.Side = Edge2.Side; Edge2.Side = Side; } //------------------------------------------------------------------------------ inline void SwapPolyIndexes(TEdge& Edge1, TEdge& Edge2) { int OutIdx = Edge1.OutIdx; Edge1.OutIdx = Edge2.OutIdx; Edge2.OutIdx = OutIdx; } //------------------------------------------------------------------------------ inline cInt TopX(TEdge& edge, const cInt currentY) { return (currentY == edge.Top.y) ? edge.Top.x : edge.Bot.x + Round(edge.Dx * (currentY - edge.Bot.y)); } //------------------------------------------------------------------------------ void IntersectPoint(TEdge& Edge1, TEdge& Edge2, IntPoint& ip) { #ifdef use_xyz ip.Z = 0; #endif double b1, b2; if (Edge1.Dx == Edge2.Dx) { ip.y = Edge1.Curr.y; ip.x = TopX(Edge1, ip.y); return; } if (Edge1.Dx == 0.0) { ip.x = Edge1.Bot.x; if (IsHorizontal(Edge2)) { ip.y = Edge2.Bot.y; } else { b2 = Edge2.Bot.y - (Edge2.Bot.x / Edge2.Dx); if (Edge2.Bot.x == Edge1.Bot.x) { ip.y = Round(ip.x / Edge2.Dx + b2); } else if (Edge2.Bot.x < Edge1.Bot.x) { ip.y = Round((ip.x - 0.5) / Edge2.Dx + b2); } else { ip.y = Round((ip.x + 0.5) / Edge2.Dx + b2); } } } else if (Edge2.Dx == 0.0) { ip.x = Edge2.Bot.x; if (IsHorizontal(Edge1)) { ip.y = Edge1.Bot.y; } else { b1 = Edge1.Bot.y - (Edge1.Bot.x / Edge1.Dx); if (Edge1.Bot.x == Edge2.Bot.x) { ip.y = Round(ip.x / Edge1.Dx + b1); } else if (Edge1.Bot.x < Edge2.Bot.x) { ip.y = Round((ip.x - 0.5) / Edge1.Dx + b1); } else { ip.y = Round((ip.x + 0.5) / Edge1.Dx + b1); } } } else { b1 = Edge1.Bot.x - Edge1.Bot.y * Edge1.Dx; b2 = Edge2.Bot.x - Edge2.Bot.y * Edge2.Dx; double q = (b2 - b1) / (Edge1.Dx - Edge2.Dx); ip.y = Round(q); if (std::fabs(Edge1.Dx) < std::fabs(Edge2.Dx)) { ip.x = Round(Edge1.Dx * q + b1); } else { ip.x = Round(Edge2.Dx * q + b2); } // the idea is simply to looking closer // towards the origins of the lines (Edge1.Bot and Edge2.Bot) // until we do not find pixels that both lines travel through bool keep_searching = false; double by1 = Edge1.Bot.y - (Edge1.Bot.x / Edge1.Dx); double by2 = Edge2.Bot.y - (Edge2.Bot.x / Edge2.Dx); double bx1 = Edge1.Bot.x - (Edge1.Bot.y * Edge1.Dx); double bx2 = Edge2.Bot.x - (Edge2.Bot.y * Edge2.Dx); do { keep_searching = false; cInt y1 = ip.y; cInt y2 = ip.y; if (Edge1.Bot.x > ip.x) { if (Edge1.Bot.y >= ip.y) { y1 = std::floor(((ip.x + 0.5) / Edge1.Dx + by1) + 0.5); } else { y1 = std::ceil(((ip.x + 0.5) / Edge1.Dx + by1) - 0.5); } } else if (Edge1.Bot.x < ip.x) { if (Edge1.Bot.y >= ip.y) { y1 = std::floor(((ip.x - 0.5) / Edge1.Dx + by1) + 0.5); } else { y1 = std::ceil(((ip.x - 0.5) / Edge1.Dx + by1) - 0.5); } } else if (Edge1.Bot.y > ip.y) { if (Edge2.Bot.y >= Edge1.Bot.y) { y1 = Edge1.Bot.y; } else { y1 = Edge2.Bot.y; } } else if (Edge1.Bot.y < ip.y) { if (Edge2.Bot.y <= Edge1.Bot.y) { y1 = Edge1.Bot.y; } else { y1 = Edge2.Bot.y; } } if (ip.y >= Edge1.Bot.y && y1 < Edge1.Bot.y) { y1 = Edge1.Bot.y; } else if (ip.y <= Edge1.Bot.y && y1 > Edge1.Bot.y) { y1 = Edge1.Bot.y; } if (Edge2.Bot.x > ip.x) { if (Edge2.Bot.y >= ip.y) { y2 = std::floor(((ip.x + 0.5) / Edge2.Dx + by2) + 0.5); } else { y2 = std::ceil(((ip.x + 0.5) / Edge2.Dx + by2) - 0.5); } } else if (Edge2.Bot.x < ip.x) { if (Edge2.Bot.y >= ip.y) { y2 = std::floor(((ip.x - 0.5) / Edge2.Dx + by2) + 0.5); } else { y2 = std::ceil(((ip.x - 0.5) / Edge2.Dx + by2) - 0.5); } } else if (Edge2.Bot.y > ip.y) { if (Edge1.Bot.y >= Edge2.Bot.y) { y2 = Edge2.Bot.y; } else { y2 = Edge1.Bot.y; } } else if (Edge2.Bot.y < ip.y) { if (Edge1.Bot.y <= Edge2.Bot.y) { y2 = Edge2.Bot.y; } else { y2 = Edge1.Bot.y; } } if (ip.y >= Edge2.Bot.y && y2 < Edge2.Bot.y) { y2 = Edge2.Bot.y; } else if (ip.y <= Edge2.Bot.y && y2 > Edge2.Bot.y) { y2 = Edge2.Bot.y; } cInt x1 = ip.x; cInt x2 = ip.x; if (Edge1.Bot.y > ip.y) { if (Edge1.Bot.x >= ip.x) { x1 = std::floor(((ip.y + 0.5) * Edge1.Dx + bx1) + 0.5); } else { x1 = std::ceil(((ip.y + 0.5) * Edge1.Dx + bx1) - 0.5); } } else if (Edge1.Bot.y < ip.y) { if (Edge1.Bot.x >= ip.x) { x1 = std::floor(((ip.y - 0.5) * Edge1.Dx + bx1) + 0.5); } else { x1 = std::ceil(((ip.y - 0.5) * Edge1.Dx + bx1) - 0.5); } } else if (Edge1.Bot.x > ip.x) { if (Edge2.Bot.x >= Edge1.Bot.x) { x1 = Edge1.Bot.x; } else { x1 = Edge2.Bot.x; } } else if (Edge1.Bot.x < ip.x) { if (Edge2.Bot.x <= Edge1.Bot.x) { x1 = Edge1.Bot.x; } else { x1 = Edge2.Bot.x; } } if (ip.x >= Edge1.Bot.x && x1 < Edge1.Bot.x) { x1 = Edge1.Bot.x; } else if (ip.x <= Edge1.Bot.x && x1 > Edge1.Bot.x) { x1 = Edge1.Bot.x; } if (Edge2.Bot.y > ip.y) { if (Edge2.Bot.x >= ip.x) { x2 = std::floor(((ip.y + 0.5) * Edge2.Dx + bx2) + 0.5); } else { x2 = std::ceil(((ip.y + 0.5) * Edge2.Dx + bx2) - 0.5); } } else if (Edge2.Bot.y < ip.y) { if (Edge2.Bot.x >= ip.x) { x2 = std::floor(((ip.y - 0.5) * Edge2.Dx + bx2) + 0.5); } else { x2 = std::ceil(((ip.y - 0.5) * Edge2.Dx + bx2) - 0.5); } } else if (Edge2.Bot.x > ip.x) { if (Edge1.Bot.x >= Edge2.Bot.x) { x2 = Edge2.Bot.x; } else { x2 = Edge1.Bot.x; } } else if (Edge2.Bot.x < ip.x) { if (Edge1.Bot.x <= Edge2.Bot.x) { x2 = Edge2.Bot.x; } else { x2 = Edge1.Bot.x; } } if (ip.x >= Edge2.Bot.x && x2 < Edge2.Bot.x) { x2 = Edge2.Bot.x; } else if (ip.x <= Edge2.Bot.x && x2 > Edge2.Bot.x) { x2 = Edge2.Bot.x; } if (y1 > ip.y && y2 > ip.y) { ip.y = std::min(y1, y2); keep_searching = true; } else if (y1 < ip.y && y2 < ip.y) { ip.y = std::max(y1, y2); keep_searching = true; } if (x1 > ip.x && x2 > ip.x) { ip.x = std::min(x1, x2); keep_searching = true; } else if (x1 < ip.x && x2 < ip.x) { ip.x = std::max(x1, x2); keep_searching = true; } } while (keep_searching); } if (ip.y < Edge1.Top.y || ip.y < Edge2.Top.y) { if (Edge1.Top.y > Edge2.Top.y) { ip.y = Edge1.Top.y; } else { ip.y = Edge2.Top.y; } if (std::fabs(Edge1.Dx) < std::fabs(Edge2.Dx)) { ip.x = TopX(Edge1, ip.y); } else { ip.x = TopX(Edge2, ip.y); } } // finally, don't allow 'ip' to be BELOW curr.y (ie bottom of scanbeam) // ... if (ip.y > Edge1.Curr.y) { ip.y = Edge1.Curr.y; // use the more vertical edge to derive X ... if (std::fabs(Edge1.Dx) > std::fabs(Edge2.Dx)) { ip.x = TopX(Edge2, ip.y); } else { ip.x = TopX(Edge1, ip.y); } } } //------------------------------------------------------------------------------ void ReversePolyPtLinks(OutPt* pp) { if (pp == nullptr) { return; } OutPt *pp1, *pp2; pp1 = pp; do { pp2 = pp1->Next; pp1->Next = pp1->Prev; pp1->Prev = pp2; pp1 = pp2; } while (pp1 != pp); } //------------------------------------------------------------------------------ void DisposeOutPts(OutPt*& pp) { if (pp == nullptr) { return; } pp->Prev->Next = nullptr; while (pp != nullptr) { OutPt* tmpPp = pp; pp = pp->Next; delete tmpPp; } } //------------------------------------------------------------------------------ inline void InitEdge(TEdge* e, TEdge* eNext, TEdge* ePrev, const IntPoint& Pt) { std::memset(e, 0, sizeof(TEdge)); e->Next = eNext; e->Prev = ePrev; e->Curr = Pt; e->OutIdx = Unassigned; } //------------------------------------------------------------------------------ void InitEdge2(TEdge& e, PolyType Pt) { if (e.Curr.y >= e.Next->Curr.y) { e.Bot = e.Curr; e.Top = e.Next->Curr; } else { e.Top = e.Curr; e.Bot = e.Next->Curr; } SetDx(e); e.PolyTyp = Pt; } //------------------------------------------------------------------------------ TEdge* RemoveEdge(TEdge* e) { // removes e from double_linked_list (but without removing from memory) e->Prev->Next = e->Next; e->Next->Prev = e->Prev; TEdge* result = e->Next; e->Prev = nullptr; // flag as removed (see ClipperBase.Clear) return result; } //------------------------------------------------------------------------------ inline void ReverseHorizontal(TEdge& e) { // swap horizontal edges' Top and Bottom x's so they follow the natural // progression of the bounds - ie so their xbots will align with the // adjoining lower edge. [Helpful in the ProcessHorizontal() method.] std::swap(e.Top.x, e.Bot.x); #ifdef use_xyz std::swap(e.Top.Z, e.Bot.Z); #endif } //------------------------------------------------------------------------------ void SwapPoints(IntPoint& pt1, IntPoint& pt2) { IntPoint tmp = pt1; pt1 = pt2; pt2 = tmp; } //------------------------------------------------------------------------------ bool GetOverlapSegment(IntPoint pt1a, IntPoint pt1b, IntPoint pt2a, IntPoint pt2b, IntPoint& pt1, IntPoint& pt2) { // precondition: segments are Collinear. if (Abs(pt1a.x - pt1b.x) > Abs(pt1a.y - pt1b.y)) { if (pt1a.x > pt1b.x) { SwapPoints(pt1a, pt1b); } if (pt2a.x > pt2b.x) { SwapPoints(pt2a, pt2b); } if (pt1a.x > pt2a.x) { pt1 = pt1a; } else { pt1 = pt2a; } if (pt1b.x < pt2b.x) { pt2 = pt1b; } else { pt2 = pt2b; } return pt1.x < pt2.x; } if (pt1a.y < pt1b.y) { SwapPoints(pt1a, pt1b); } if (pt2a.y < pt2b.y) { SwapPoints(pt2a, pt2b); } if (pt1a.y < pt2a.y) { pt1 = pt1a; } else { pt1 = pt2a; } if (pt1b.y > pt2b.y) { pt2 = pt1b; } else { pt2 = pt2b; } return pt1.y > pt2.y; } //------------------------------------------------------------------------------ bool FirstIsBottomPt(const OutPt* btmPt1, const OutPt* btmPt2) { OutPt* p = btmPt1->Prev; while ((p->Pt == btmPt1->Pt) && (p != btmPt1)) { p = p->Prev; } double dx1p = std::fabs(GetDx(btmPt1->Pt, p->Pt)); p = btmPt1->Next; while ((p->Pt == btmPt1->Pt) && (p != btmPt1)) { p = p->Next; } double dx1n = std::fabs(GetDx(btmPt1->Pt, p->Pt)); p = btmPt2->Prev; while ((p->Pt == btmPt2->Pt) && (p != btmPt2)) { p = p->Prev; } double dx2p = std::fabs(GetDx(btmPt2->Pt, p->Pt)); p = btmPt2->Next; while ((p->Pt == btmPt2->Pt) && (p != btmPt2)) { p = p->Next; } double dx2n = std::fabs(GetDx(btmPt2->Pt, p->Pt)); if (std::max(dx1p, dx1n) == std::max(dx2p, dx2n) && std::min(dx1p, dx1n) == std::min(dx2p, dx2n)) { return Area(btmPt1) > 0; // if otherwise identical use orientation } return (dx1p >= dx2p && dx1p >= dx2n) || (dx1n >= dx2p && dx1n >= dx2n); } //------------------------------------------------------------------------------ OutPt* GetBottomPt(OutPt* pp) { OutPt* dups = nullptr; OutPt* p = pp->Next; while (p != pp) { if (p->Pt.y > pp->Pt.y) { pp = p; dups = nullptr; } else if (p->Pt.y == pp->Pt.y && p->Pt.x <= pp->Pt.x) { if (p->Pt.x < pp->Pt.x) { dups = nullptr; pp = p; } else { if (p->Next != pp && p->Prev != pp) { dups = p; } } } p = p->Next; } if (dups != nullptr) { // there appears to be at least 2 vertices at BottomPt so ... while (dups != p) { if (!FirstIsBottomPt(p, dups)) { pp = dups; } dups = dups->Next; while (dups->Pt != pp->Pt) { dups = dups->Next; } } } return pp; } //------------------------------------------------------------------------------ bool Pt2IsBetweenPt1AndPt3(const IntPoint pt1, const IntPoint pt2, const IntPoint pt3) { if ((pt1 == pt3) || (pt1 == pt2) || (pt3 == pt2)) { return false; } if (pt1.x != pt3.x) { return (pt2.x > pt1.x) == (pt2.x < pt3.x); } return (pt2.y > pt1.y) == (pt2.y < pt3.y); } //------------------------------------------------------------------------------ bool HorzSegmentsOverlap(cInt seg1a, cInt seg1b, cInt seg2a, cInt seg2b) { if (seg1a > seg1b) { std::swap(seg1a, seg1b); } if (seg2a > seg2b) { std::swap(seg2a, seg2b); } return (seg1a < seg2b) && (seg2a < seg1b); } //------------------------------------------------------------------------------ // ClipperBase class methods ... //------------------------------------------------------------------------------ ClipperBase::ClipperBase() // constructor { m_CurrentLM = m_MinimaList.begin(); // begin() == end() here m_UseFullRange = false; } //------------------------------------------------------------------------------ ClipperBase::~ClipperBase() // destructor { Clear(); } //------------------------------------------------------------------------------ void RangeTest(const IntPoint& Pt, bool& useFullRange) { if (useFullRange) { if (Pt.x > hiRange || Pt.y > hiRange || -Pt.x > hiRange || -Pt.y > hiRange) { std::stringstream s; s << "Coordinate outside allowed range: "; s << std::fixed << Pt.x << " " << Pt.y << " " << -Pt.x << " " << -Pt.y; throw clipperException(s.str().c_str()); } } else if (Pt.x > loRange || Pt.y > loRange || -Pt.x > loRange || -Pt.y > loRange) { useFullRange = true; RangeTest(Pt, useFullRange); } } //------------------------------------------------------------------------------ TEdge* FindNextLocMin(TEdge* E) { for (;;) { while (E->Bot != E->Prev->Bot || E->Curr == E->Top) { E = E->Next; } if (!IsHorizontal(*E) && !IsHorizontal(*E->Prev)) { break; } while (IsHorizontal(*E->Prev)) { E = E->Prev; } TEdge* E2 = E; while (IsHorizontal(*E)) { E = E->Next; } if (E->Top.y == E->Prev->Bot.y) { continue; // ie just an intermediate horz. } if (E2->Prev->Bot.x < E->Bot.x) { E = E2; } break; } return E; } //------------------------------------------------------------------------------ TEdge* ClipperBase::ProcessBound(TEdge* E, bool NextIsForward) { TEdge* Result = E; TEdge* Horz = nullptr; if (E->OutIdx == Skip) { // if edges still remain in the current bound beyond the // skip edge then create another LocMin and call // ProcessBound once more if (NextIsForward) { while (E->Top.y == E->Next->Bot.y) { E = E->Next; } // don't include top horizontals when parsing a bound a // second time, they will be contained in the opposite // bound ... while (E != Result && IsHorizontal(*E)) { E = E->Prev; } } else { while (E->Top.y == E->Prev->Bot.y) { E = E->Prev; } while (E != Result && IsHorizontal(*E)) { E = E->Next; } } if (E == Result) { if (NextIsForward) { Result = E->Next; } else { Result = E->Prev; } } else { // there are more edges in the bound beyond result // starting with E if (NextIsForward) { E = Result->Next; } else { E = Result->Prev; } MinimaList::value_type locMin{ 0, nullptr, nullptr }; locMin.y = E->Bot.y; locMin.LeftBound = nullptr; locMin.RightBound = E; E->WindDelta = 0; Result = ProcessBound(E, NextIsForward); m_MinimaList.push_back(locMin); } return Result; } TEdge* EStart; if (IsHorizontal(*E)) { // We need to be careful with open paths because this may // not be a true local minima (ie E may be following a skip // edge). Also, consecutive horz. edges may start heading // left before going right. if (NextIsForward) { EStart = E->Prev; } else { EStart = E->Next; } if (IsHorizontal(*EStart)) // ie an adjoining horizontal skip edge { if (EStart->Bot.x != E->Bot.x && EStart->Top.x != E->Bot.x) { ReverseHorizontal(*E); } } else if (EStart->Bot.x != E->Bot.x) { ReverseHorizontal(*E); } } EStart = E; if (NextIsForward) { while (Result->Top.y == Result->Next->Bot.y && Result->Next->OutIdx != Skip) { Result = Result->Next; } if (IsHorizontal(*Result) && Result->Next->OutIdx != Skip) { // nb: at the top of a bound, horizontals are added to // the bound only when the preceding edge attaches to // the horizontal's left vertex unless a Skip edge is // encountered when that becomes the top divide Horz = Result; while (IsHorizontal(*Horz->Prev)) { Horz = Horz->Prev; } if (Horz->Prev->Top.x > Result->Next->Top.x) { Result = Horz->Prev; } } while (E != Result) { E->NextInLML = E->Next; if (IsHorizontal(*E) && E != EStart && E->Bot.x != E->Prev->Top.x) { ReverseHorizontal(*E); } E = E->Next; } if (IsHorizontal(*E) && E != EStart && E->Bot.x != E->Prev->Top.x) { ReverseHorizontal(*E); } Result = Result->Next; // move to the edge just beyond // current bound } else { while (Result->Top.y == Result->Prev->Bot.y && Result->Prev->OutIdx != Skip) { Result = Result->Prev; } if (IsHorizontal(*Result) && Result->Prev->OutIdx != Skip) { Horz = Result; while (IsHorizontal(*Horz->Next)) { Horz = Horz->Next; } if (Horz->Next->Top.x == Result->Prev->Top.x || Horz->Next->Top.x > Result->Prev->Top.x) { Result = Horz->Next; } } while (E != Result) { E->NextInLML = E->Prev; if (IsHorizontal(*E) && E != EStart && E->Bot.x != E->Next->Top.x) { ReverseHorizontal(*E); } E = E->Prev; } if (IsHorizontal(*E) && E != EStart && E->Bot.x != E->Next->Top.x) { ReverseHorizontal(*E); } Result = Result->Prev; // move to the edge just beyond // current bound } return Result; } //------------------------------------------------------------------------------ bool ClipperBase::AddPath(const Path& pg, PolyType PolyTyp, bool Closed) { #ifdef use_lines if (!Closed && PolyTyp == ptClip) throw clipperException("AddPath: Open paths must be subject."); #else if (!Closed) { throw clipperException("AddPath: Open paths have been disabled."); } #endif int highI = static_cast(pg.size()) - 1; if (Closed) { while (highI > 0 && (pg[highI] == pg[0])) { --highI; } } while (highI > 0 && (pg[highI] == pg[highI - 1])) { --highI; } if ((Closed && highI < 2) || (!Closed && highI < 1)) { return false; } // create a new edge array ... auto* edges = new TEdge[highI + 1]; bool IsFlat = true; // 1. Basic (first) edge initialization ... try { edges[1].Curr = pg[1]; RangeTest(pg[0], m_UseFullRange); RangeTest(pg[highI], m_UseFullRange); InitEdge(&edges[0], &edges[1], &edges[highI], pg[0]); InitEdge(&edges[highI], &edges[0], &edges[highI - 1], pg[highI]); for (int i = highI - 1; i >= 1; --i) { RangeTest(pg[i], m_UseFullRange); InitEdge(&edges[i], &edges[i + 1], &edges[i - 1], pg[i]); } } catch (std::exception const&) { delete[] edges; throw; // range test fails } TEdge* eStart = &edges[0]; // 2. Remove duplicate vertices, and (when closed) collinear // edges ... TEdge *E = eStart, *eLoopStop = eStart; for (;;) { // nb: allows matching start and end points when not // Closed ... if (E->Curr == E->Next->Curr && (Closed || E->Next != eStart)) { if (E == E->Next) { break; } if (E == eStart) { eStart = E->Next; } E = RemoveEdge(E); eLoopStop = E; continue; } if (E->Prev == E->Next) { break; // only two vertices } if (Closed && SlopesEqual(E->Prev->Curr, E->Curr, E->Next->Curr, m_UseFullRange) && (!m_PreserveCollinear || !Pt2IsBetweenPt1AndPt3(E->Prev->Curr, E->Curr, E->Next->Curr))) { // Collinear edges are allowed for open paths // but in closed paths the default is to merge // adjacent collinear edges into a single edge. // However, if the PreserveCollinear property is // enabled, only overlapping collinear edges (ie // spikes) will be removed from closed paths. if (E == eStart) { eStart = E->Next; } E = RemoveEdge(E); E = E->Prev; eLoopStop = E; continue; } E = E->Next; if ((E == eLoopStop) || (!Closed && E->Next == eStart)) { break; } } if ((!Closed && (E == E->Next)) || (Closed && (E->Prev == E->Next))) { delete[] edges; return false; } if (!Closed) { m_HasOpenPaths = true; eStart->Prev->OutIdx = Skip; } // 3. Do second stage of edge initialization ... E = eStart; do { InitEdge2(*E, PolyTyp); E = E->Next; if (IsFlat && E->Curr.y != eStart->Curr.y) { IsFlat = false; } } while (E != eStart); // 4. Finally, add edge bounds to LocalMinima list ... // Totally flat paths must be handled differently when // adding them to LocalMinima list to avoid endless // loops etc ... if (IsFlat) { if (Closed) { delete[] edges; return false; } E->Prev->OutIdx = Skip; MinimaList::value_type locMin{ 0, nullptr, nullptr }; locMin.y = E->Bot.y; locMin.LeftBound = nullptr; locMin.RightBound = E; locMin.RightBound->Side = esRight; locMin.RightBound->WindDelta = 0; for (;;) { if (E->Bot.x != E->Prev->Top.x) { ReverseHorizontal(*E); } if (E->Next->OutIdx == Skip) { break; } E->NextInLML = E->Next; E = E->Next; } m_MinimaList.push_back(locMin); m_edges.push_back(edges); return true; } m_edges.push_back(edges); bool leftBoundIsForward; TEdge* EMin = nullptr; // workaround to avoid an endless loop in the while loop // below when open paths have matching start and end // points ... if (E->Prev->Bot == E->Prev->Top) { E = E->Next; } for (;;) { E = FindNextLocMin(E); if (E == EMin) { break; } if (EMin == nullptr) { EMin = E; } // E and E.Prev now share a local minima (left // aligned if horizontal). Compare their slopes // to find which starts which bound ... MinimaList::value_type locMin{ 0, nullptr, nullptr }; locMin.y = E->Bot.y; if (E->Dx < E->Prev->Dx) { locMin.LeftBound = E->Prev; locMin.RightBound = E; leftBoundIsForward = false; // Q.nextInLML = Q.prev } else { locMin.LeftBound = E; locMin.RightBound = E->Prev; leftBoundIsForward = true; // Q.nextInLML = Q.next } if (!Closed) { locMin.LeftBound->WindDelta = 0; } else if (locMin.LeftBound->Next == locMin.RightBound) { locMin.LeftBound->WindDelta = -1; } else { locMin.LeftBound->WindDelta = 1; } locMin.RightBound->WindDelta = -locMin.LeftBound->WindDelta; E = ProcessBound(locMin.LeftBound, leftBoundIsForward); if (E->OutIdx == Skip) { E = ProcessBound(E, leftBoundIsForward); } TEdge* E2 = ProcessBound(locMin.RightBound, !leftBoundIsForward); if (E2->OutIdx == Skip) { E2 = ProcessBound(E2, !leftBoundIsForward); } if (locMin.LeftBound->OutIdx == Skip) { locMin.LeftBound = nullptr; } else if (locMin.RightBound->OutIdx == Skip) { locMin.RightBound = nullptr; } m_MinimaList.push_back(locMin); if (!leftBoundIsForward) { E = E2; } } return true; } //------------------------------------------------------------------------------ bool ClipperBase::AddPaths(const Paths& ppg, PolyType PolyTyp, bool Closed) { bool result = false; for (Paths::size_type i = 0; i < ppg.size(); ++i) { if (AddPath(ppg[i], PolyTyp, Closed)) { result = true; } } return result; } //------------------------------------------------------------------------------ void ClipperBase::Clear() { DisposeLocalMinimaList(); for (auto edges : m_edges) { delete[] edges; } m_edges.clear(); m_UseFullRange = false; m_HasOpenPaths = false; } //------------------------------------------------------------------------------ void ClipperBase::Reset() { m_CurrentLM = m_MinimaList.begin(); if (m_CurrentLM == m_MinimaList.end()) { return; // ie nothing to process } std::stable_sort(m_MinimaList.begin(), m_MinimaList.end(), LocMinSorter()); m_Scanbeam = ScanbeamList(); // clears/resets // priority_queue // reset all edges ... for (auto& lm : m_MinimaList) { InsertScanbeam(lm.y); TEdge* e = lm.LeftBound; if (e != nullptr) { e->Curr = e->Bot; e->Side = esLeft; e->OutIdx = Unassigned; } e = lm.RightBound; if (e != nullptr) { e->Curr = e->Bot; e->Side = esRight; e->OutIdx = Unassigned; } } m_ActiveEdges = nullptr; m_CurrentLM = m_MinimaList.begin(); } //------------------------------------------------------------------------------ void ClipperBase::DisposeLocalMinimaList() { m_MinimaList.clear(); m_CurrentLM = m_MinimaList.begin(); } //------------------------------------------------------------------------------ bool ClipperBase::PopLocalMinima(cInt Y, const LocalMinimum*& locMin) { if (m_CurrentLM == m_MinimaList.end() || (*m_CurrentLM).y != Y) { return false; } locMin = &(*m_CurrentLM); ++m_CurrentLM; return true; } //------------------------------------------------------------------------------ IntRect ClipperBase::GetBounds() { IntRect result{ 0, 0, 0, 0 }; auto lm = m_MinimaList.begin(); if (lm == m_MinimaList.end()) { result.left = result.top = result.right = result.bottom = 0; return result; } result.left = lm->LeftBound->Bot.x; result.top = lm->LeftBound->Bot.y; result.right = lm->LeftBound->Bot.x; result.bottom = lm->LeftBound->Bot.y; while (lm != m_MinimaList.end()) { // todo - needs fixing for open paths result.bottom = std::max(result.bottom, lm->LeftBound->Bot.y); TEdge* e = lm->LeftBound; for (;;) { TEdge* bottomE = e; while (e->NextInLML != nullptr) { if (e->Bot.x < result.left) { result.left = e->Bot.x; } if (e->Bot.x > result.right) { result.right = e->Bot.x; } e = e->NextInLML; } result.left = std::min(result.left, e->Bot.x); result.right = std::max(result.right, e->Bot.x); result.left = std::min(result.left, e->Top.x); result.right = std::max(result.right, e->Top.x); result.top = std::min(result.top, e->Top.y); if (bottomE == lm->LeftBound) { e = lm->RightBound; } else { break; } } ++lm; } return result; } //------------------------------------------------------------------------------ void ClipperBase::InsertScanbeam(const cInt Y) { m_Scanbeam.push(Y); } //------------------------------------------------------------------------------ bool ClipperBase::PopScanbeam(cInt& Y) { if (m_Scanbeam.empty()) { return false; } Y = m_Scanbeam.top(); m_Scanbeam.pop(); while (!m_Scanbeam.empty() && Y == m_Scanbeam.top()) { m_Scanbeam.pop(); } // Pop duplicates. return true; } //------------------------------------------------------------------------------ void ClipperBase::DisposeAllOutRecs() { for (PolyOutList::size_type i = 0; i < m_PolyOuts.size(); ++i) { DisposeOutRec(i); } m_PolyOuts.clear(); } //------------------------------------------------------------------------------ void ClipperBase::DisposeOutRec(PolyOutList::size_type index) { OutRec* outRec = m_PolyOuts[index]; if (outRec->Pts != nullptr) { DisposeOutPts(outRec->Pts); } delete outRec; m_PolyOuts[index] = nullptr; } //------------------------------------------------------------------------------ void ClipperBase::DeleteFromAEL(TEdge* e) { TEdge* AelPrev = e->PrevInAEL; TEdge* AelNext = e->NextInAEL; if ((AelPrev == nullptr) && (AelNext == nullptr) && (e != m_ActiveEdges)) { return; // already deleted } if (AelPrev != nullptr) { AelPrev->NextInAEL = AelNext; } else { m_ActiveEdges = AelNext; } if (AelNext != nullptr) { AelNext->PrevInAEL = AelPrev; } e->NextInAEL = nullptr; e->PrevInAEL = nullptr; } //------------------------------------------------------------------------------ OutRec* ClipperBase::CreateOutRec() { auto* result = new OutRec; result->IsHole = false; result->IsOpen = false; result->FirstLeft = nullptr; result->Pts = nullptr; result->BottomPt = nullptr; result->PolyNd = nullptr; m_PolyOuts.push_back(result); result->Idx = static_cast(m_PolyOuts.size()) - 1; return result; } //------------------------------------------------------------------------------ void ClipperBase::SwapPositionsInAEL(TEdge* Edge1, TEdge* Edge2) { // check that one or other edge hasn't already // been removed from AEL ... if (Edge1->NextInAEL == Edge1->PrevInAEL || Edge2->NextInAEL == Edge2->PrevInAEL) { return; } if (Edge1->NextInAEL == Edge2) { TEdge* Next = Edge2->NextInAEL; if (Next != nullptr) { Next->PrevInAEL = Edge1; } TEdge* Prev = Edge1->PrevInAEL; if (Prev != nullptr) { Prev->NextInAEL = Edge2; } Edge2->PrevInAEL = Prev; Edge2->NextInAEL = Edge1; Edge1->PrevInAEL = Edge2; Edge1->NextInAEL = Next; } else if (Edge2->NextInAEL == Edge1) { TEdge* Next = Edge1->NextInAEL; if (Next != nullptr) { Next->PrevInAEL = Edge2; } TEdge* Prev = Edge2->PrevInAEL; if (Prev != nullptr) { Prev->NextInAEL = Edge1; } Edge1->PrevInAEL = Prev; Edge1->NextInAEL = Edge2; Edge2->PrevInAEL = Edge1; Edge2->NextInAEL = Next; } else { TEdge* Next = Edge1->NextInAEL; TEdge* Prev = Edge1->PrevInAEL; Edge1->NextInAEL = Edge2->NextInAEL; if (Edge1->NextInAEL != nullptr) { Edge1->NextInAEL->PrevInAEL = Edge1; } Edge1->PrevInAEL = Edge2->PrevInAEL; if (Edge1->PrevInAEL != nullptr) { Edge1->PrevInAEL->NextInAEL = Edge1; } Edge2->NextInAEL = Next; if (Edge2->NextInAEL != nullptr) { Edge2->NextInAEL->PrevInAEL = Edge2; } Edge2->PrevInAEL = Prev; if (Edge2->PrevInAEL != nullptr) { Edge2->PrevInAEL->NextInAEL = Edge2; } } if (Edge1->PrevInAEL == nullptr) { m_ActiveEdges = Edge1; } else if (Edge2->PrevInAEL == nullptr) { m_ActiveEdges = Edge2; } } //------------------------------------------------------------------------------ void ClipperBase::UpdateEdgeIntoAEL(TEdge*& e) { if (e->NextInLML == nullptr) { throw clipperException("UpdateEdgeIntoAEL: invalid call"); } e->NextInLML->OutIdx = e->OutIdx; TEdge* AelPrev = e->PrevInAEL; TEdge* AelNext = e->NextInAEL; if (AelPrev != nullptr) { AelPrev->NextInAEL = e->NextInLML; } else { m_ActiveEdges = e->NextInLML; } if (AelNext != nullptr) { AelNext->PrevInAEL = e->NextInLML; } e->NextInLML->Side = e->Side; e->NextInLML->WindDelta = e->WindDelta; e->NextInLML->WindCnt = e->WindCnt; e->NextInLML->WindCnt2 = e->WindCnt2; e = e->NextInLML; e->Curr = e->Bot; e->PrevInAEL = AelPrev; e->NextInAEL = AelNext; if (!IsHorizontal(*e)) { InsertScanbeam(e->Top.y); } } //------------------------------------------------------------------------------ bool ClipperBase::LocalMinimaPending() { return (m_CurrentLM != m_MinimaList.end()); } //------------------------------------------------------------------------------ // TClipper methods ... //------------------------------------------------------------------------------ Clipper::Clipper(int initOptions) : ClipperBase() // constructor { m_ExecuteLocked = false; m_UseFullRange = false; m_ReverseOutput = ((initOptions & ioReverseSolution) != 0); m_StrictSimple = ((initOptions & ioStrictlySimple) != 0); m_PreserveCollinear = ((initOptions & ioPreserveCollinear) != 0); m_HasOpenPaths = false; #ifdef use_xyz m_ZFill = 0; #endif } //------------------------------------------------------------------------------ #ifdef use_xyz void Clipper::ZFillFunction(ZFillCallback zFillFunc) { m_ZFill = zFillFunc; } //------------------------------------------------------------------------------ #endif bool Clipper::Execute(ClipType clipType, Paths& solution, PolyFillType fillType) { return Execute(clipType, solution, fillType, fillType); } //------------------------------------------------------------------------------ bool Clipper::Execute(ClipType clipType, PolyTree& polytree, PolyFillType fillType) { return Execute(clipType, polytree, fillType, fillType); } //------------------------------------------------------------------------------ bool Clipper::Execute(ClipType clipType, Paths& solution, PolyFillType subjFillType, PolyFillType clipFillType) { if (m_ExecuteLocked) { return false; } if (m_HasOpenPaths) { throw clipperException("Error: PolyTree struct is needed for " "open path clipping."); } m_ExecuteLocked = true; solution.resize(0); m_SubjFillType = subjFillType; m_ClipFillType = clipFillType; m_ClipType = clipType; m_UsingPolyTree = false; bool succeeded = ExecuteInternal(); if (succeeded) { BuildResult(solution); } DisposeAllOutRecs(); m_ExecuteLocked = false; return succeeded; } //------------------------------------------------------------------------------ bool Clipper::Execute(ClipType clipType, PolyTree& polytree, PolyFillType subjFillType, PolyFillType clipFillType) { if (m_ExecuteLocked) { return false; } m_ExecuteLocked = true; m_SubjFillType = subjFillType; m_ClipFillType = clipFillType; m_ClipType = clipType; m_UsingPolyTree = true; bool succeeded = ExecuteInternal(); if (succeeded) { BuildResult2(polytree); } DisposeAllOutRecs(); m_ExecuteLocked = false; return succeeded; } //------------------------------------------------------------------------------ void Clipper::FixHoleLinkage(OutRec& outrec) { // skip OutRecs that (a) contain outermost // polygons or //(b) already have the correct owner/child // linkage ... if ((outrec.FirstLeft == nullptr) || (outrec.IsHole != outrec.FirstLeft->IsHole && (outrec.FirstLeft->Pts != nullptr))) { return; } OutRec* orfl = outrec.FirstLeft; while ((orfl != nullptr) && ((orfl->IsHole == outrec.IsHole) || (orfl->Pts == nullptr))) { orfl = orfl->FirstLeft; } outrec.FirstLeft = orfl; } //------------------------------------------------------------------------------ bool Clipper::ExecuteInternal() { bool succeeded = true; try { Reset(); m_Maxima = MaximaList(); m_SortedEdges = nullptr; succeeded = true; cInt botY, topY; if (!PopScanbeam(botY)) { return false; } InsertLocalMinimaIntoAEL(botY); while (PopScanbeam(topY) || LocalMinimaPending()) { ProcessHorizontals(); ClearGhostJoins(); if (!ProcessIntersections(topY)) { succeeded = false; break; } ProcessEdgesAtTopOfScanbeam(topY); botY = topY; InsertLocalMinimaIntoAEL(botY); } } catch (std::exception const&) { succeeded = false; } if (succeeded) { // fix orientations ... for (auto outRec : m_PolyOuts) { if ((outRec->Pts == nullptr) || outRec->IsOpen) { continue; } if ((outRec->IsHole ^ m_ReverseOutput) == static_cast(Area(*outRec) > 0)) { ReversePolyPtLinks(outRec->Pts); } } if (!m_Joins.empty()) { JoinCommonEdges(); } // unfortunately FixupOutPolygon() must be // done after JoinCommonEdges() for (auto outRec : m_PolyOuts) { if (outRec->Pts == nullptr) { continue; } if (outRec->IsOpen) { FixupOutPolyline(*outRec); } else { FixupOutPolygon(*outRec); } } if (m_StrictSimple) { DoSimplePolygons(); m_StrictSimple = false; for (auto outRec : m_PolyOuts) { if ((outRec->Pts == nullptr) || outRec->IsOpen) { continue; } FixupOutPolygon(*outRec); } m_StrictSimple = true; } } ClearJoins(); ClearGhostJoins(); return succeeded; } //------------------------------------------------------------------------------ void Clipper::SetWindingCount(TEdge& edge) { TEdge* e = edge.PrevInAEL; // find the edge of the same polytype that // immediately preceeds 'edge' in AEL while ((e != nullptr) && ((e->PolyTyp != edge.PolyTyp) || (e->WindDelta == 0))) { e = e->PrevInAEL; } if (e == nullptr) { if (edge.WindDelta == 0) { PolyFillType pft = (edge.PolyTyp == ptSubject ? m_SubjFillType : m_ClipFillType); edge.WindCnt = (pft == pftNegative ? -1 : 1); } else { edge.WindCnt = edge.WindDelta; } edge.WindCnt2 = 0; e = m_ActiveEdges; // ie get ready to calc // WindCnt2 } else if (edge.WindDelta == 0 && m_ClipType != ctUnion) { edge.WindCnt = 1; edge.WindCnt2 = e->WindCnt2; e = e->NextInAEL; // ie get ready to calc // WindCnt2 } else if (IsEvenOddFillType(edge)) { // EvenOdd filling ... if (edge.WindDelta == 0) { // are we inside a subj polygon ... bool Inside = true; TEdge* e2 = e->PrevInAEL; while (e2 != nullptr) { if (e2->PolyTyp == e->PolyTyp && e2->WindDelta != 0) { Inside = !Inside; } e2 = e2->PrevInAEL; } edge.WindCnt = (Inside ? 0 : 1); } else { edge.WindCnt = edge.WindDelta; } edge.WindCnt2 = e->WindCnt2; e = e->NextInAEL; // ie get ready to calc // WindCnt2 } else { // nonZero, Positive or Negative filling ... if (e->WindCnt * e->WindDelta < 0) { // prev edge is 'decreasing' WindCount // (WC) toward zero so we're outside the // previous polygon ... if (Abs(e->WindCnt) > 1) { // outside prev poly but still // inside another. when reversing // direction of prev poly use the // same WC if (e->WindDelta * edge.WindDelta < 0) { edge.WindCnt = e->WindCnt; // otherwise continue to // 'decrease' WC ... } else { edge.WindCnt = e->WindCnt + edge.WindDelta; } } else { // now outside all polys of same // polytype so set own WC ... edge.WindCnt = (edge.WindDelta == 0 ? 1 : edge.WindDelta); } } else { // prev edge is 'increasing' WindCount // (WC) away from zero so we're inside // the previous polygon ... if (edge.WindDelta == 0) { edge.WindCnt = (e->WindCnt < 0 ? e->WindCnt - 1 : e->WindCnt + 1); // if wind direction is reversing // prev then use same WC } else if (e->WindDelta * edge.WindDelta < 0) { edge.WindCnt = e->WindCnt; // otherwise add to WC ... } else { edge.WindCnt = e->WindCnt + edge.WindDelta; } } edge.WindCnt2 = e->WindCnt2; e = e->NextInAEL; // ie get ready to calc // WindCnt2 } // update WindCnt2 ... if (IsEvenOddAltFillType(edge)) { // EvenOdd filling ... while (e != &edge) { if (e->WindDelta != 0) { edge.WindCnt2 = (edge.WindCnt2 == 0 ? 1 : 0); } e = e->NextInAEL; } } else { // nonZero, Positive or Negative filling ... while (e != &edge) { edge.WindCnt2 += e->WindDelta; e = e->NextInAEL; } } } //------------------------------------------------------------------------------ bool Clipper::IsEvenOddFillType(const TEdge& edge) const { if (edge.PolyTyp == ptSubject) { return m_SubjFillType == pftEvenOdd; } return m_ClipFillType == pftEvenOdd; } //------------------------------------------------------------------------------ bool Clipper::IsEvenOddAltFillType(const TEdge& edge) const { if (edge.PolyTyp == ptSubject) { return m_ClipFillType == pftEvenOdd; } return m_SubjFillType == pftEvenOdd; } //------------------------------------------------------------------------------ bool Clipper::IsContributing(const TEdge& edge) const { PolyFillType pft, pft2; if (edge.PolyTyp == ptSubject) { pft = m_SubjFillType; pft2 = m_ClipFillType; } else { pft = m_ClipFillType; pft2 = m_SubjFillType; } switch (pft) { case pftEvenOdd: // return false if a subj line has // been flagged as inside a subj // polygon if (edge.WindDelta == 0 && edge.WindCnt != 1) { return false; } break; case pftNonZero: if (Abs(edge.WindCnt) != 1) { return false; } break; case pftPositive: if (edge.WindCnt != 1) { return false; } break; default: // pftNegative if (edge.WindCnt != -1) { return false; } } switch (m_ClipType) { case ctIntersection: switch (pft2) { case pftEvenOdd: case pftNonZero: return (edge.WindCnt2 != 0); case pftPositive: return (edge.WindCnt2 > 0); default: return (edge.WindCnt2 < 0); } break; case ctUnion: switch (pft2) { case pftEvenOdd: case pftNonZero: return (edge.WindCnt2 == 0); case pftPositive: return (edge.WindCnt2 <= 0); default: return (edge.WindCnt2 >= 0); } break; case ctDifference: if (edge.PolyTyp == ptSubject) { switch (pft2) { case pftEvenOdd: case pftNonZero: return (edge.WindCnt2 == 0); case pftPositive: return (edge.WindCnt2 <= 0); default: return (edge.WindCnt2 >= 0); } } else { switch (pft2) { case pftEvenOdd: case pftNonZero: return (edge.WindCnt2 != 0); case pftPositive: return (edge.WindCnt2 > 0); default: return (edge.WindCnt2 < 0); } } break; case ctXor: if (edge.WindDelta == 0) { // XOr always contributing // unless open switch (pft2) { case pftEvenOdd: case pftNonZero: return (edge.WindCnt2 == 0); case pftPositive: return (edge.WindCnt2 <= 0); default: return (edge.WindCnt2 >= 0); } } else { return true; } break; default: return true; } } //------------------------------------------------------------------------------ OutPt* Clipper::AddLocalMinPoly(TEdge* e1, TEdge* e2, const IntPoint& Pt) { OutPt* result; TEdge *e, *prevE; if (IsHorizontal(*e2) || (e1->Dx > e2->Dx)) { result = AddOutPt(e1, Pt); e2->OutIdx = e1->OutIdx; e1->Side = esLeft; e2->Side = esRight; e = e1; if (e->PrevInAEL == e2) { prevE = e2->PrevInAEL; } else { prevE = e->PrevInAEL; } } else { result = AddOutPt(e2, Pt); e1->OutIdx = e2->OutIdx; e1->Side = esRight; e2->Side = esLeft; e = e2; if (e->PrevInAEL == e1) { prevE = e1->PrevInAEL; } else { prevE = e->PrevInAEL; } } if ((prevE != nullptr) && prevE->OutIdx >= 0) { cInt xPrev = TopX(*prevE, Pt.y); cInt xE = TopX(*e, Pt.y); if (xPrev == xE && (e->WindDelta != 0) && (prevE->WindDelta != 0) && SlopesEqual(IntPoint(xPrev, Pt.y), prevE->Top, IntPoint(xE, Pt.y), e->Top, m_UseFullRange)) { OutPt* outPt = AddOutPt(prevE, Pt); AddJoin(result, outPt, e->Top); } } return result; } //------------------------------------------------------------------------------ void Clipper::AddLocalMaxPoly(TEdge* e1, TEdge* e2, const IntPoint& Pt) { AddOutPt(e1, Pt); if (e2->WindDelta == 0) { AddOutPt(e2, Pt); } if (e1->OutIdx == e2->OutIdx) { e1->OutIdx = Unassigned; e2->OutIdx = Unassigned; } else if (e1->OutIdx < e2->OutIdx) { AppendPolygon(e1, e2); } else { AppendPolygon(e2, e1); } } //------------------------------------------------------------------------------ void Clipper::AddEdgeToSEL(TEdge* edge) { // SEL pointers in PEdge are reused to // build a list of horizontal edges. // However, we don't need to worry about // order with horizontal edge // processing. if (m_SortedEdges == nullptr) { m_SortedEdges = edge; edge->PrevInSEL = nullptr; edge->NextInSEL = nullptr; } else { edge->NextInSEL = m_SortedEdges; edge->PrevInSEL = nullptr; m_SortedEdges->PrevInSEL = edge; m_SortedEdges = edge; } } //------------------------------------------------------------------------------ bool Clipper::PopEdgeFromSEL(TEdge*& edge) { if (m_SortedEdges == nullptr) { return false; } edge = m_SortedEdges; DeleteFromSEL(m_SortedEdges); return true; } //------------------------------------------------------------------------------ void Clipper::CopyAELToSEL() { TEdge* e = m_ActiveEdges; m_SortedEdges = e; while (e != nullptr) { e->PrevInSEL = e->PrevInAEL; e->NextInSEL = e->NextInAEL; e = e->NextInAEL; } } //------------------------------------------------------------------------------ void Clipper::AddJoin(OutPt* op1, OutPt* op2, const IntPoint OffPt) { auto* j = new Join; j->OutPt1 = op1; j->OutPt2 = op2; j->OffPt = OffPt; m_Joins.push_back(j); } //------------------------------------------------------------------------------ void Clipper::ClearJoins() { for (auto& m_Join : m_Joins) { delete m_Join; } m_Joins.resize(0); } //------------------------------------------------------------------------------ void Clipper::ClearGhostJoins() { for (auto& m_GhostJoin : m_GhostJoins) { delete m_GhostJoin; } m_GhostJoins.resize(0); } //------------------------------------------------------------------------------ void Clipper::AddGhostJoin(OutPt* op, const IntPoint OffPt) { auto* j = new Join; j->OutPt1 = op; j->OutPt2 = nullptr; j->OffPt = OffPt; m_GhostJoins.push_back(j); } //------------------------------------------------------------------------------ void Clipper::InsertLocalMinimaIntoAEL(const cInt botY) { const LocalMinimum* lm; while (PopLocalMinima(botY, lm)) { TEdge* lb = lm->LeftBound; TEdge* rb = lm->RightBound; OutPt* Op1 = nullptr; if (lb == nullptr) { // nb: don't insert LB into // either AEL or SEL InsertEdgeIntoAEL(rb, nullptr); SetWindingCount(*rb); if (IsContributing(*rb)) { Op1 = AddOutPt(rb, rb->Bot); TEdge* ePrev = rb->PrevInAEL; if ((rb->OutIdx >= 0) && (rb->WindDelta != 0) && (ePrev != nullptr) && (ePrev->OutIdx >= 0) && (ePrev->Curr.x == rb->Curr.x) && (ePrev->WindDelta != 0)) { IntPoint pt = rb->Curr; AddOutPt(ePrev, pt); } TEdge* eNext = rb->NextInAEL; if ((rb->OutIdx >= 0) && (rb->WindDelta != 0) && (eNext != nullptr) && (eNext->OutIdx >= 0) && (eNext->Curr.x == rb->Curr.x) && (eNext->WindDelta != 0)) { IntPoint pt = rb->Curr; AddOutPt(eNext, pt); } } } else if (rb == nullptr) { InsertEdgeIntoAEL(lb, nullptr); SetWindingCount(*lb); if (IsContributing(*lb)) { Op1 = AddOutPt(lb, lb->Bot); TEdge* ePrev = lb->PrevInAEL; if ((lb->OutIdx >= 0) && (lb->WindDelta != 0) && (ePrev != nullptr) && (ePrev->OutIdx >= 0) && (ePrev->Curr.x == lb->Curr.x) && (ePrev->WindDelta != 0)) { IntPoint pt = lb->Curr; AddOutPt(ePrev, pt); } TEdge* eNext = lb->NextInAEL; if ((lb->OutIdx >= 0) && (lb->WindDelta != 0) && (eNext != nullptr) && (eNext->OutIdx >= 0) && (eNext->Curr.x == lb->Curr.x) && (eNext->WindDelta != 0)) { IntPoint pt = lb->Curr; AddOutPt(eNext, pt); } } InsertScanbeam(lb->Top.y); } else { InsertEdgeIntoAEL(lb, nullptr); InsertEdgeIntoAEL(rb, lb); SetWindingCount(*lb); rb->WindCnt = lb->WindCnt; rb->WindCnt2 = lb->WindCnt2; if (IsContributing(*lb)) { Op1 = AddLocalMinPoly(lb, rb, lb->Bot); TEdge* ePrev = lb->PrevInAEL; if ((lb->OutIdx >= 0) && (lb->WindDelta != 0) && (ePrev != nullptr) && (ePrev->OutIdx >= 0) && (ePrev->Curr.x == lb->Curr.x) && (ePrev->WindDelta != 0)) { IntPoint pt = lb->Curr; AddOutPt(ePrev, pt); } TEdge* eNext = rb->NextInAEL; if ((rb->OutIdx >= 0) && (rb->WindDelta != 0) && (eNext != nullptr) && (eNext->OutIdx >= 0) && (eNext->Curr.x == rb->Curr.x) && (eNext->WindDelta != 0)) { IntPoint pt = rb->Curr; AddOutPt(eNext, pt); } } InsertScanbeam(lb->Top.y); } if (rb != nullptr) { if (IsHorizontal(*rb)) { AddEdgeToSEL(rb); if (rb->NextInLML != nullptr) { InsertScanbeam(rb->NextInLML->Top.y); } } else { InsertScanbeam(rb->Top.y); } } if ((lb == nullptr) || (rb == nullptr)) { continue; } // if any output polygons share an // edge, they'll need joining later // ... if ((Op1 != nullptr) && IsHorizontal(*rb) && !m_GhostJoins.empty() && (rb->WindDelta != 0)) { for (auto jr : m_GhostJoins) { // if the horizontal Rb and // a 'ghost' horizontal // overlap, then convert the // 'ghost' join to a real // join ready for later ... if (HorzSegmentsOverlap(jr->OutPt1->Pt.x, jr->OffPt.x, rb->Bot.x, rb->Top.x)) { AddJoin(jr->OutPt1, Op1, jr->OffPt); } } } if (lb->OutIdx >= 0 && (lb->PrevInAEL != nullptr) && lb->PrevInAEL->Curr.x == lb->Bot.x && lb->PrevInAEL->OutIdx >= 0 && SlopesEqual(lb->PrevInAEL->Bot, lb->PrevInAEL->Top, lb->Curr, lb->Top, m_UseFullRange) && (lb->WindDelta != 0) && (lb->PrevInAEL->WindDelta != 0)) { OutPt* Op2 = AddOutPt(lb->PrevInAEL, lb->Bot); AddJoin(Op1, Op2, lb->Top); } if (lb->NextInAEL != rb) { if (rb->OutIdx >= 0 && rb->PrevInAEL->OutIdx >= 0 && SlopesEqual(rb->PrevInAEL->Curr, rb->PrevInAEL->Top, rb->Curr, rb->Top, m_UseFullRange) && (rb->WindDelta != 0) && (rb->PrevInAEL->WindDelta != 0)) { OutPt* Op2 = AddOutPt(rb->PrevInAEL, rb->Bot); AddJoin(Op1, Op2, rb->Top); } TEdge* e = lb->NextInAEL; if (e != nullptr) { while (e != rb) { // nb: For calculating // winding counts etc, // IntersectEdges() // assumes that param1 // will be to the Right // of param2 ABOVE the // intersection ... IntersectEdges(rb, e, lb->Curr); // order // important // here e = e->NextInAEL; } } } } } //------------------------------------------------------------------------------ void Clipper::DeleteFromSEL(TEdge* e) { TEdge* SelPrev = e->PrevInSEL; TEdge* SelNext = e->NextInSEL; if ((SelPrev == nullptr) && (SelNext == nullptr) && (e != m_SortedEdges)) { return; // already deleted } if (SelPrev != nullptr) { SelPrev->NextInSEL = SelNext; } else { m_SortedEdges = SelNext; } if (SelNext != nullptr) { SelNext->PrevInSEL = SelPrev; } e->NextInSEL = nullptr; e->PrevInSEL = nullptr; } //------------------------------------------------------------------------------ #ifdef use_xyz void Clipper::SetZ(IntPoint& pt, TEdge& e1, TEdge& e2) { if (pt.Z != 0 || !m_ZFill) return; else if (pt == e1.Bot) pt.Z = e1.Bot.Z; else if (pt == e1.Top) pt.Z = e1.Top.Z; else if (pt == e2.Bot) pt.Z = e2.Bot.Z; else if (pt == e2.Top) pt.Z = e2.Top.Z; else (*m_ZFill)(e1.Bot, e1.Top, e2.Bot, e2.Top, pt); } //------------------------------------------------------------------------------ #endif void Clipper::IntersectEdges(TEdge* e1, TEdge* e2, IntPoint& Pt) { bool e1Contributing = (e1->OutIdx >= 0); bool e2Contributing = (e2->OutIdx >= 0); #ifdef use_xyz SetZ(Pt, *e1, *e2); #endif #ifdef use_lines // if either edge is on an OPEN path ... if (e1->WindDelta == 0 || e2->WindDelta == 0) { // ignore subject-subject open path // intersections UNLESS they are // both open paths, AND they are // both 'contributing maximas' ... if (e1->WindDelta == 0 && e2->WindDelta == 0) return; // if intersecting a subj line with // a subj poly ... else if (e1->PolyTyp == e2->PolyTyp && e1->WindDelta != e2->WindDelta && m_ClipType == ctUnion) { if (e1->WindDelta == 0) { if (e2Contributing) { AddOutPt(e1, Pt); if (e1Contributing) e1->OutIdx = Unassigned; } } else { if (e1Contributing) { AddOutPt(e2, Pt); if (e2Contributing) e2->OutIdx = Unassigned; } } } else if (e1->PolyTyp != e2->PolyTyp) { // toggle subj open path OutIdx // on/off when Abs(clip.WndCnt) // == 1 ... if ((e1->WindDelta == 0) && abs(e2->WindCnt) == 1 && (m_ClipType != ctUnion || e2->WindCnt2 == 0)) { AddOutPt(e1, Pt); if (e1Contributing) e1->OutIdx = Unassigned; } else if ((e2->WindDelta == 0) && (abs(e1->WindCnt) == 1) && (m_ClipType != ctUnion || e1->WindCnt2 == 0)) { AddOutPt(e2, Pt); if (e2Contributing) e2->OutIdx = Unassigned; } } return; } #endif // update winding counts... // assumes that e1 will be to the Right // of e2 ABOVE the intersection if (e1->PolyTyp == e2->PolyTyp) { if (IsEvenOddFillType(*e1)) { int oldE1WindCnt = e1->WindCnt; e1->WindCnt = e2->WindCnt; e2->WindCnt = oldE1WindCnt; } else { if (e1->WindCnt + e2->WindDelta == 0) { e1->WindCnt = -e1->WindCnt; } else { e1->WindCnt += e2->WindDelta; } if (e2->WindCnt - e1->WindDelta == 0) { e2->WindCnt = -e2->WindCnt; } else { e2->WindCnt -= e1->WindDelta; } } } else { if (!IsEvenOddFillType(*e2)) { e1->WindCnt2 += e2->WindDelta; } else { e1->WindCnt2 = (e1->WindCnt2 == 0) ? 1 : 0; } if (!IsEvenOddFillType(*e1)) { e2->WindCnt2 -= e1->WindDelta; } else { e2->WindCnt2 = (e2->WindCnt2 == 0) ? 1 : 0; } } PolyFillType e1FillType, e2FillType, e1FillType2, e2FillType2; if (e1->PolyTyp == ptSubject) { e1FillType = m_SubjFillType; e1FillType2 = m_ClipFillType; } else { e1FillType = m_ClipFillType; e1FillType2 = m_SubjFillType; } if (e2->PolyTyp == ptSubject) { e2FillType = m_SubjFillType; e2FillType2 = m_ClipFillType; } else { e2FillType = m_ClipFillType; e2FillType2 = m_SubjFillType; } cInt e1Wc, e2Wc; switch (e1FillType) { case pftPositive: e1Wc = e1->WindCnt; break; case pftNegative: e1Wc = -e1->WindCnt; break; default: e1Wc = Abs(e1->WindCnt); } switch (e2FillType) { case pftPositive: e2Wc = e2->WindCnt; break; case pftNegative: e2Wc = -e2->WindCnt; break; default: e2Wc = Abs(e2->WindCnt); } if (e1Contributing && e2Contributing) { if ((e1Wc != 0 && e1Wc != 1) || (e2Wc != 0 && e2Wc != 1) || (e1->PolyTyp != e2->PolyTyp && m_ClipType != ctXor)) { AddLocalMaxPoly(e1, e2, Pt); } else { AddOutPt(e1, Pt); AddOutPt(e2, Pt); SwapSides(*e1, *e2); SwapPolyIndexes(*e1, *e2); } } else if (e1Contributing) { if (e2Wc == 0 || e2Wc == 1) { AddOutPt(e1, Pt); SwapSides(*e1, *e2); SwapPolyIndexes(*e1, *e2); } } else if (e2Contributing) { if (e1Wc == 0 || e1Wc == 1) { AddOutPt(e2, Pt); SwapSides(*e1, *e2); SwapPolyIndexes(*e1, *e2); } } else if ((e1Wc == 0 || e1Wc == 1) && (e2Wc == 0 || e2Wc == 1)) { // neither edge is currently // contributing ... cInt e1Wc2, e2Wc2; switch (e1FillType2) { case pftPositive: e1Wc2 = e1->WindCnt2; break; case pftNegative: e1Wc2 = -e1->WindCnt2; break; default: e1Wc2 = Abs(e1->WindCnt2); } switch (e2FillType2) { case pftPositive: e2Wc2 = e2->WindCnt2; break; case pftNegative: e2Wc2 = -e2->WindCnt2; break; default: e2Wc2 = Abs(e2->WindCnt2); } if (e1->PolyTyp != e2->PolyTyp) { AddLocalMinPoly(e1, e2, Pt); } else if (e1Wc == 1 && e2Wc == 1) { switch (m_ClipType) { case ctIntersection: if (e1Wc2 > 0 && e2Wc2 > 0) { AddLocalMinPoly(e1, e2, Pt); } break; case ctUnion: if (e1Wc2 <= 0 && e2Wc2 <= 0) { AddLocalMinPoly(e1, e2, Pt); } break; case ctDifference: if (((e1->PolyTyp == ptClip) && (e1Wc2 > 0) && (e2Wc2 > 0)) || ((e1->PolyTyp == ptSubject) && (e1Wc2 <= 0) && (e2Wc2 <= 0))) { AddLocalMinPoly(e1, e2, Pt); } break; case ctXor: AddLocalMinPoly(e1, e2, Pt); } } else { SwapSides(*e1, *e2); } } } //------------------------------------------------------------------------------ void Clipper::SetHoleState(TEdge* e, OutRec* outrec) { TEdge* e2 = e->PrevInAEL; TEdge* eTmp = nullptr; while (e2 != nullptr) { if (e2->OutIdx >= 0 && e2->WindDelta != 0) { if (eTmp == nullptr) { eTmp = e2; } else if (eTmp->OutIdx == e2->OutIdx) { eTmp = nullptr; } } e2 = e2->PrevInAEL; } if (eTmp == nullptr) { outrec->FirstLeft = nullptr; outrec->IsHole = false; } else { outrec->FirstLeft = m_PolyOuts[eTmp->OutIdx]; outrec->IsHole = !outrec->FirstLeft->IsHole; } } //------------------------------------------------------------------------------ OutRec* GetLowermostRec(OutRec* outRec1, OutRec* outRec2) { // work out which polygon fragment has // the correct hole state ... if (outRec1->BottomPt == nullptr) { outRec1->BottomPt = GetBottomPt(outRec1->Pts); } if (outRec2->BottomPt == nullptr) { outRec2->BottomPt = GetBottomPt(outRec2->Pts); } OutPt* OutPt1 = outRec1->BottomPt; OutPt* OutPt2 = outRec2->BottomPt; if (OutPt1->Pt.y > OutPt2->Pt.y) { return outRec1; } if (OutPt1->Pt.y < OutPt2->Pt.y) { return outRec2; } if (OutPt1->Pt.x < OutPt2->Pt.x) { return outRec1; } if (OutPt1->Pt.x > OutPt2->Pt.x) { return outRec2; } if (OutPt1->Next == OutPt1) { return outRec2; } if (OutPt2->Next == OutPt2) { return outRec1; } if (FirstIsBottomPt(OutPt1, OutPt2)) { return outRec1; } return outRec2; } //------------------------------------------------------------------------------ bool OutRec1RightOfOutRec2(OutRec* outRec1, OutRec* outRec2) { do { outRec1 = outRec1->FirstLeft; if (outRec1 == outRec2) { return true; } } while (outRec1 != nullptr); return false; } //------------------------------------------------------------------------------ OutRec* Clipper::GetOutRec(int Idx) { OutRec* outrec = m_PolyOuts[Idx]; while (outrec != m_PolyOuts[outrec->Idx]) { outrec = m_PolyOuts[outrec->Idx]; } return outrec; } //------------------------------------------------------------------------------ void Clipper::AppendPolygon(TEdge* e1, TEdge* e2) { // get the start and ends of both // output polygons ... OutRec* outRec1 = m_PolyOuts[e1->OutIdx]; OutRec* outRec2 = m_PolyOuts[e2->OutIdx]; OutRec* holeStateRec; if (OutRec1RightOfOutRec2(outRec1, outRec2)) { holeStateRec = outRec2; } else if (OutRec1RightOfOutRec2(outRec2, outRec1)) { holeStateRec = outRec1; } else { holeStateRec = GetLowermostRec(outRec1, outRec2); } // get the start and ends of both // output polygons and join e2 poly // onto e1 poly and delete pointers // to e2 ... OutPt* p1_lft = outRec1->Pts; OutPt* p1_rt = p1_lft->Prev; OutPt* p2_lft = outRec2->Pts; OutPt* p2_rt = p2_lft->Prev; // join e2 poly onto e1 poly and // delete pointers to e2 ... if (e1->Side == esLeft) { if (e2->Side == esLeft) { // z y x a b c ReversePolyPtLinks(p2_lft); p2_lft->Next = p1_lft; p1_lft->Prev = p2_lft; p1_rt->Next = p2_rt; p2_rt->Prev = p1_rt; outRec1->Pts = p2_rt; } else { // x y z a b c p2_rt->Next = p1_lft; p1_lft->Prev = p2_rt; p2_lft->Prev = p1_rt; p1_rt->Next = p2_lft; outRec1->Pts = p2_lft; } } else { if (e2->Side == esRight) { // a b c z y x ReversePolyPtLinks(p2_lft); p1_rt->Next = p2_rt; p2_rt->Prev = p1_rt; p2_lft->Next = p1_lft; p1_lft->Prev = p2_lft; } else { // a b c x y z p1_rt->Next = p2_lft; p2_lft->Prev = p1_rt; p1_lft->Prev = p2_rt; p2_rt->Next = p1_lft; } } outRec1->BottomPt = nullptr; if (holeStateRec == outRec2) { if (outRec2->FirstLeft != outRec1) { outRec1->FirstLeft = outRec2->FirstLeft; } outRec1->IsHole = outRec2->IsHole; } outRec2->Pts = nullptr; outRec2->BottomPt = nullptr; outRec2->FirstLeft = outRec1; int OKIdx = e1->OutIdx; int ObsoleteIdx = e2->OutIdx; e1->OutIdx = Unassigned; // nb: safe because // we only get here // via // AddLocalMaxPoly e2->OutIdx = Unassigned; TEdge* e = m_ActiveEdges; while (e != nullptr) { if (e->OutIdx == ObsoleteIdx) { e->OutIdx = OKIdx; e->Side = e1->Side; break; } e = e->NextInAEL; } outRec2->Idx = outRec1->Idx; } //------------------------------------------------------------------------------ OutPt* Clipper::AddOutPt(TEdge* e, const IntPoint& pt) { if (e->OutIdx < 0) { OutRec* outRec = CreateOutRec(); outRec->IsOpen = (e->WindDelta == 0); auto* newOp = new OutPt; outRec->Pts = newOp; newOp->Idx = outRec->Idx; newOp->Pt = pt; newOp->Next = newOp; newOp->Prev = newOp; if (!outRec->IsOpen) { SetHoleState(e, outRec); } e->OutIdx = outRec->Idx; return newOp; } OutRec* outRec = m_PolyOuts[e->OutIdx]; // OutRec.Pts is the 'Left-most' // point & OutRec.Pts.Prev is the // 'Right-most' OutPt* op = outRec->Pts; bool ToFront = (e->Side == esLeft); if (ToFront && (pt == op->Pt)) { return op; } if (!ToFront && (pt == op->Prev->Pt)) { return op->Prev; } auto* newOp = new OutPt; newOp->Idx = outRec->Idx; newOp->Pt = pt; newOp->Next = op; newOp->Prev = op->Prev; newOp->Prev->Next = newOp; op->Prev = newOp; if (ToFront) { outRec->Pts = newOp; } return newOp; } //------------------------------------------------------------------------------ OutPt* Clipper::GetLastOutPt(TEdge* e) { OutRec* outRec = m_PolyOuts[e->OutIdx]; if (e->Side == esLeft) { return outRec->Pts; } return outRec->Pts->Prev; } //------------------------------------------------------------------------------ void Clipper::ProcessHorizontals() { m_Maxima.sort(); TEdge* horzEdge; while (PopEdgeFromSEL(horzEdge)) { ProcessHorizontal(horzEdge); } m_Maxima.clear(); } //------------------------------------------------------------------------------ inline bool IsMinima(TEdge* e) { return (e != nullptr) && (e->Prev->NextInLML != e) && (e->Next->NextInLML != e); } //------------------------------------------------------------------------------ inline bool IsMaxima(TEdge* e, const cInt Y) { return (e != nullptr) && e->Top.y == Y && (e->NextInLML == nullptr); } //------------------------------------------------------------------------------ inline bool IsIntermediate(TEdge* e, const cInt Y) { return e->Top.y == Y && (e->NextInLML != nullptr); } //------------------------------------------------------------------------------ TEdge* GetMaximaPair(TEdge* e) { if ((e->Next->Top == e->Top) && (e->Next->NextInLML == nullptr)) { return e->Next; } if ((e->Prev->Top == e->Top) && (e->Prev->NextInLML == nullptr)) { return e->Prev; } return nullptr; } //------------------------------------------------------------------------------ TEdge* GetMaximaPairEx(TEdge* e) { // as GetMaximaPair() // but returns 0 if // MaxPair isn't in AEL // (unless it's // horizontal) TEdge* result = GetMaximaPair(e); if ((result != nullptr) && (result->OutIdx == Skip || (result->NextInAEL == result->PrevInAEL && !IsHorizontal(*result)))) { return nullptr; } return result; } //------------------------------------------------------------------------------ void Clipper::SwapPositionsInSEL(TEdge* Edge1, TEdge* Edge2) { if (((Edge1->NextInSEL) == nullptr) && ((Edge1->PrevInSEL) == nullptr)) { return; } if (((Edge2->NextInSEL) == nullptr) && ((Edge2->PrevInSEL) == nullptr)) { return; } if (Edge1->NextInSEL == Edge2) { TEdge* Next = Edge2->NextInSEL; if (Next != nullptr) { Next->PrevInSEL = Edge1; } TEdge* Prev = Edge1->PrevInSEL; if (Prev != nullptr) { Prev->NextInSEL = Edge2; } Edge2->PrevInSEL = Prev; Edge2->NextInSEL = Edge1; Edge1->PrevInSEL = Edge2; Edge1->NextInSEL = Next; } else if (Edge2->NextInSEL == Edge1) { TEdge* Next = Edge1->NextInSEL; if (Next != nullptr) { Next->PrevInSEL = Edge2; } TEdge* Prev = Edge2->PrevInSEL; if (Prev != nullptr) { Prev->NextInSEL = Edge1; } Edge1->PrevInSEL = Prev; Edge1->NextInSEL = Edge2; Edge2->PrevInSEL = Edge1; Edge2->NextInSEL = Next; } else { TEdge* Next = Edge1->NextInSEL; TEdge* Prev = Edge1->PrevInSEL; Edge1->NextInSEL = Edge2->NextInSEL; if (Edge1->NextInSEL != nullptr) { Edge1->NextInSEL->PrevInSEL = Edge1; } Edge1->PrevInSEL = Edge2->PrevInSEL; if (Edge1->PrevInSEL != nullptr) { Edge1->PrevInSEL->NextInSEL = Edge1; } Edge2->NextInSEL = Next; if (Edge2->NextInSEL != nullptr) { Edge2->NextInSEL->PrevInSEL = Edge2; } Edge2->PrevInSEL = Prev; if (Edge2->PrevInSEL != nullptr) { Edge2->PrevInSEL->NextInSEL = Edge2; } } if (Edge1->PrevInSEL == nullptr) { m_SortedEdges = Edge1; } else if (Edge2->PrevInSEL == nullptr) { m_SortedEdges = Edge2; } } //------------------------------------------------------------------------------ TEdge* GetNextInAEL(TEdge* e, Direction dir) { return dir == dLeftToRight ? e->NextInAEL : e->PrevInAEL; } //------------------------------------------------------------------------------ void GetHorzDirection(TEdge& HorzEdge, Direction& Dir, cInt& Left, cInt& Right) { if (HorzEdge.Bot.x < HorzEdge.Top.x) { Left = HorzEdge.Bot.x; Right = HorzEdge.Top.x; Dir = dLeftToRight; } else { Left = HorzEdge.Top.x; Right = HorzEdge.Bot.x; Dir = dRightToLeft; } } //------------------------------------------------------------------------ /******************************************************************************* * Notes: Horizontal edges *(HEs) at scanline *intersections (ie at the *Top or * Bottom of a *scanbeam) are processed *as if layered. The order *in which HEs * are *processed doesn't matter. *HEs intersect with other *HE Bot.xs only [#] * * (or they could intersect *with Top.xs only, ie *EITHER Bot.xs OR Top.xs), ** and with other *non-horizontal edges [*]. *Once these intersections *are * processed, *intermediate HEs then *'promote' the Edge above *(NextInLML) into * the *AEL. These 'promoted' *edges may in turn *intersect [%] with other *HEs. * *******************************************************************************/ void Clipper::ProcessHorizontal(TEdge* horzEdge) { Direction dir; cInt horzLeft, horzRight; bool IsOpen = (horzEdge->WindDelta == 0); GetHorzDirection(*horzEdge, dir, horzLeft, horzRight); TEdge *eLastHorz = horzEdge, *eMaxPair = nullptr; while ((eLastHorz->NextInLML != nullptr) && IsHorizontal(*eLastHorz->NextInLML)) { eLastHorz = eLastHorz->NextInLML; } if (eLastHorz->NextInLML == nullptr) { eMaxPair = GetMaximaPair(eLastHorz); } MaximaList::const_iterator maxIt; MaximaList::const_reverse_iterator maxRit; if (!m_Maxima.empty()) { // get the first // maxima in range // (X) ... if (dir == dLeftToRight) { maxIt = m_Maxima.begin(); while (maxIt != m_Maxima.end() && *maxIt <= horzEdge->Bot.x) { maxIt++; } if (maxIt != m_Maxima.end() && *maxIt >= eLastHorz->Top.x) { maxIt = m_Maxima.end(); } } else { maxRit = m_Maxima.rbegin(); while (maxRit != m_Maxima.rend() && *maxRit > horzEdge->Bot.x) { maxRit++; } if (maxRit != m_Maxima.rend() && *maxRit <= eLastHorz->Top.x) { maxRit = m_Maxima.rend(); } } } OutPt* op1 = nullptr; for (;;) // loop through // consec. // horizontal // edges { bool IsLastHorz = (horzEdge == eLastHorz); TEdge* e = GetNextInAEL(horzEdge, dir); while (e != nullptr) { // this code // block inserts // extra coords // into // horizontal // edges (in // output // polygons) // whereever // maxima touch // these // horizontal // edges. This // helps //'simplifying' // polygons (ie // if the // Simplify // property is // set). if (!m_Maxima.empty()) { if (dir == dLeftToRight) { while (maxIt != m_Maxima.end() && *maxIt < e->Curr.x) { if (horzEdge->OutIdx >= 0 && !IsOpen) { AddOutPt(horzEdge, IntPoint(*maxIt, horzEdge->Bot.y)); } maxIt++; } } else { while (maxRit != m_Maxima.rend() && *maxRit > e->Curr.x) { if (horzEdge->OutIdx >= 0 && !IsOpen) { AddOutPt(horzEdge, IntPoint(*maxRit, horzEdge->Bot.y)); } maxRit++; } } }; if ((dir == dLeftToRight && e->Curr.x > horzRight) || (dir == dRightToLeft && e->Curr.x < horzLeft)) { break; } // Also break if // we've got to // the end of an // intermediate // horizontal // edge ... nb: // Smaller Dx's // are to the // right of // larger Dx's // ABOVE the // horizontal. if (e->Curr.x == horzEdge->Top.x && (horzEdge->NextInLML != nullptr) && e->Dx < horzEdge->NextInLML->Dx) { break; } if (horzEdge->OutIdx >= 0 && !IsOpen) // note: may be done multiple times { op1 = AddOutPt(horzEdge, e->Curr); TEdge* eNextHorz = m_SortedEdges; while (eNextHorz != nullptr) { if (eNextHorz->OutIdx >= 0 && HorzSegmentsOverlap(horzEdge->Bot.x, horzEdge->Top.x, eNextHorz->Bot.x, eNextHorz->Top.x)) { OutPt* op2 = GetLastOutPt(eNextHorz); AddJoin(op2, op1, eNextHorz->Top); } eNextHorz = eNextHorz->NextInSEL; } AddGhostJoin(op1, horzEdge->Bot); } // OK, so far // we're still // in range of // the // horizontal // Edge but // make sure // we're at the // last of // consec. // horizontals // when matching // with eMaxPair if (e == eMaxPair && IsLastHorz) { if (horzEdge->OutIdx >= 0) { AddLocalMaxPoly(horzEdge, eMaxPair, horzEdge->Top); } DeleteFromAEL(horzEdge); DeleteFromAEL(eMaxPair); return; } if (dir == dLeftToRight) { IntPoint Pt = IntPoint(e->Curr.x, horzEdge->Curr.y); IntersectEdges(horzEdge, e, Pt); } else { IntPoint Pt = IntPoint(e->Curr.x, horzEdge->Curr.y); IntersectEdges(e, horzEdge, Pt); } TEdge* eNext = GetNextInAEL(e, dir); SwapPositionsInAEL(horzEdge, e); e = eNext; } // end while(e) // Break out of loop // if // HorzEdge.NextInLML // is not also // horizontal ... if ((horzEdge->NextInLML == nullptr) || !IsHorizontal(*horzEdge->NextInLML)) { break; } UpdateEdgeIntoAEL(horzEdge); if (horzEdge->OutIdx >= 0) { AddOutPt(horzEdge, horzEdge->Bot); } GetHorzDirection(*horzEdge, dir, horzLeft, horzRight); } // end for (;;) if (horzEdge->OutIdx >= 0 && (op1 == nullptr)) { op1 = GetLastOutPt(horzEdge); TEdge* eNextHorz = m_SortedEdges; while (eNextHorz != nullptr) { if (eNextHorz->OutIdx >= 0 && HorzSegmentsOverlap(horzEdge->Bot.x, horzEdge->Top.x, eNextHorz->Bot.x, eNextHorz->Top.x)) { OutPt* op2 = GetLastOutPt(eNextHorz); AddJoin(op2, op1, eNextHorz->Top); } eNextHorz = eNextHorz->NextInSEL; } AddGhostJoin(op1, horzEdge->Top); } if (horzEdge->NextInLML != nullptr) { if (horzEdge->OutIdx >= 0) { op1 = AddOutPt(horzEdge, horzEdge->Top); // When // StrictlySimple // and // 'horzEdge' is // being touched // by another // edge, then // make sure // both edges // have a vertex // here ... if (m_StrictSimple) { TEdge* ePrev = horzEdge->PrevInAEL; if ((horzEdge->WindDelta != 0) && (ePrev != nullptr) && (ePrev->OutIdx >= 0) && (ePrev->Curr.x == horzEdge->Top.x) && (ePrev->WindDelta != 0)) { IntPoint pt = horzEdge->Top; AddOutPt(ePrev, pt); } TEdge* eNext = horzEdge->NextInAEL; if ((horzEdge->WindDelta != 0) && (eNext != nullptr) && (eNext->OutIdx >= 0) && (eNext->Curr.x == horzEdge->Top.x) && (eNext->WindDelta != 0)) { IntPoint pt = horzEdge->Top; AddOutPt(eNext, pt); } } UpdateEdgeIntoAEL(horzEdge); if (horzEdge->WindDelta == 0) { return; } // nb: HorzEdge // is no longer // horizontal // here TEdge* ePrev = horzEdge->PrevInAEL; TEdge* eNext = horzEdge->NextInAEL; if ((ePrev != nullptr) && ePrev->Curr.x == horzEdge->Bot.x && ePrev->Curr.y == horzEdge->Bot.y && ePrev->WindDelta != 0 && (ePrev->OutIdx >= 0 && ePrev->Curr.y > ePrev->Top.y && SlopesEqual(*horzEdge, *ePrev, m_UseFullRange))) { OutPt* op2 = AddOutPt(ePrev, horzEdge->Bot); AddJoin(op1, op2, horzEdge->Top); } else if ((eNext != nullptr) && eNext->Curr.x == horzEdge->Bot.x && eNext->Curr.y == horzEdge->Bot.y && eNext->WindDelta != 0 && eNext->OutIdx >= 0 && eNext->Curr.y > eNext->Top.y && SlopesEqual(*horzEdge, *eNext, m_UseFullRange)) { OutPt* op2 = AddOutPt(eNext, horzEdge->Bot); AddJoin(op1, op2, horzEdge->Top); } } else { UpdateEdgeIntoAEL(horzEdge); } } else { if (horzEdge->OutIdx >= 0) { AddOutPt(horzEdge, horzEdge->Top); } DeleteFromAEL(horzEdge); } } //------------------------------------------------------------------------------ bool Clipper::ProcessIntersections(const cInt topY) { if (m_ActiveEdges == nullptr) { return true; } try { BuildIntersectList(topY); size_t IlSize = m_IntersectList.size(); if (IlSize == 0) { return true; } if (IlSize == 1 || FixupIntersectionOrder()) { ProcessIntersectList(); } else { return false; } } catch (std::exception const& ex) { m_SortedEdges = nullptr; DisposeIntersectNodes(); throw clipperException((std::string("ProcessIn" "tersectio" "ns " "error ") + ex.what()) .c_str()); } m_SortedEdges = nullptr; return true; } //------------------------------------------------------------------------------ void Clipper::DisposeIntersectNodes() { for (auto& i : m_IntersectList) { delete i; } m_IntersectList.clear(); } //------------------------------------------------------------------------------ void Clipper::BuildIntersectList(const cInt topY) { if (m_ActiveEdges == nullptr) { return; } // prepare for sorting // ... TEdge* e = m_ActiveEdges; m_SortedEdges = e; while (e != nullptr) { e->PrevInSEL = e->PrevInAEL; e->NextInSEL = e->NextInAEL; e->Curr.x = TopX(*e, topY); e = e->NextInAEL; } // bubblesort ... bool isModified; do { isModified = false; e = m_SortedEdges; while (e->NextInSEL != nullptr) { TEdge* eNext = e->NextInSEL; IntPoint Pt; if (e->Curr.x > eNext->Curr.x) { IntersectPoint(*e, *eNext, Pt); if (Pt.y < topY) { Pt = IntPoint(TopX(*e, topY), topY); } auto* newNode = new IntersectNode; newNode->Edge1 = e; newNode->Edge2 = eNext; newNode->Pt = Pt; m_IntersectList.push_back(newNode); SwapPositionsInSEL(e, eNext); isModified = true; } else { e = eNext; } } if (e->PrevInSEL != nullptr) { e->PrevInSEL->NextInSEL = nullptr; } else { break; } } while (isModified); m_SortedEdges = nullptr; // important } //------------------------------------------------------------------------------ void Clipper::ProcessIntersectList() { for (auto iNode : m_IntersectList) { { IntersectEdges(iNode->Edge1, iNode->Edge2, iNode->Pt); SwapPositionsInAEL(iNode->Edge1, iNode->Edge2); } delete iNode; } m_IntersectList.clear(); } //------------------------------------------------------------------------------ bool IntersectListSort(IntersectNode* node1, IntersectNode* node2) { if (node2->Pt.y != node1->Pt.y) { return node2->Pt.y < node1->Pt.y; } return (node2->Edge1->WindCnt2 + node2->Edge2->WindCnt2) > (node1->Edge1->WindCnt2 + node1->Edge2->WindCnt2); } //------------------------------------------------------------------------------ inline bool EdgesAdjacent(const IntersectNode& inode) { return (inode.Edge1->NextInSEL == inode.Edge2) || (inode.Edge1->PrevInSEL == inode.Edge2); } //------------------------------------------------------------------------------ bool Clipper::FixupIntersectionOrder() { // pre-condition: // intersections are // sorted Bottom-most // first. Now it's // crucial that // intersections are // made only between // adjacent edges, so to // ensure this the order // of intersections may // need adjusting ... CopyAELToSEL(); std::stable_sort(m_IntersectList.begin(), m_IntersectList.end(), IntersectListSort); size_t cnt = m_IntersectList.size(); for (size_t i = 0; i < cnt; ++i) { if (!EdgesAdjacent(*m_IntersectList[i])) { size_t j = i + 1; while (j < cnt && !EdgesAdjacent(*m_IntersectList[j])) { j++; } if (j == cnt) { return false; } std::swap(m_IntersectList[i], m_IntersectList[j]); } SwapPositionsInSEL(m_IntersectList[i]->Edge1, m_IntersectList[i]->Edge2); } return true; } //------------------------------------------------------------------------------ void Clipper::DoMaxima(TEdge* e) { TEdge* eMaxPair = GetMaximaPairEx(e); if (eMaxPair == nullptr) { if (e->OutIdx >= 0) { AddOutPt(e, e->Top); } DeleteFromAEL(e); return; } TEdge* ePrev = e->PrevInAEL; if ((ePrev != nullptr) && ePrev->Curr.x == e->Top.x && ePrev->Top != e->Top && ePrev->OutIdx >= 0 && ePrev->WindDelta != 0 && e->OutIdx >= 0 && e->WindDelta != 0) { IntPoint pt = e->Top; AddOutPt(ePrev, pt); } TEdge* eNext = e->NextInAEL; while ((eNext != nullptr) && eNext != eMaxPair) { IntersectEdges(e, eNext, e->Top); SwapPositionsInAEL(e, eNext); eNext = e->NextInAEL; } eNext = eMaxPair->NextInAEL; if ((eNext != nullptr) && eNext->Curr.x == e->Top.x && eNext->Top != e->Top && eNext->OutIdx >= 0 && eNext->WindDelta != 0 && e->OutIdx >= 0 && e->WindDelta != 0) { IntPoint pt = e->Top; AddOutPt(eNext, pt); } if (e->OutIdx == Unassigned && eMaxPair->OutIdx == Unassigned) { DeleteFromAEL(e); DeleteFromAEL(eMaxPair); } else if (e->OutIdx >= 0 && eMaxPair->OutIdx >= 0) { AddLocalMaxPoly(e, eMaxPair, e->Top); DeleteFromAEL(e); DeleteFromAEL(eMaxPair); } #ifdef use_lines else if (e->WindDelta == 0) { if (e->OutIdx >= 0) { AddOutPt(e, e->Top); e->OutIdx = Unassigned; } DeleteFromAEL(e); if (eMaxPair->OutIdx >= 0) { AddOutPt(eMaxPair, e->Top); eMaxPair->OutIdx = Unassigned; } DeleteFromAEL(eMaxPair); } #endif else { throw clipperException("DoMaxima " "error"); } } //------------------------------------------------------------------------------ void Clipper::ProcessEdgesAtTopOfScanbeam(const cInt topY) { TEdge* e = m_ActiveEdges; MaximaList next_maxima; while (e != nullptr) { // 1. process // maxima, treating // them as if // they're 'bent' // horizontal edges, // but exclude // maxima with // horizontal // edges. nb: e // can't be a // horizontal. bool IsMaximaEdge = IsMaxima(e, topY); if (IsMaximaEdge) { TEdge* eMaxPair = GetMaximaPairEx(e); IsMaximaEdge = ((eMaxPair == nullptr) || !IsHorizontal(*eMaxPair)); } if (IsMaximaEdge) { if (m_StrictSimple) { m_Maxima.push_back(e->Top.x); next_maxima.push_back(e->Top.x); } TEdge* ePrev = e->PrevInAEL; DoMaxima(e); if (ePrev == nullptr) { e = m_ActiveEdges; } else { e = ePrev->NextInAEL; } } else { // 2. promote // horizontal // edges, // otherwise // update Curr.x // and Curr.y // ... if (IsIntermediate(e, topY) && IsHorizontal(*e->NextInLML)) { UpdateEdgeIntoAEL(e); if (e->OutIdx >= 0) { AddOutPt(e, e->Bot); if (m_StrictSimple) { m_Maxima.push_back(e->Top.x); m_Maxima.push_back(e->Bot.x); next_maxima.push_back(e->Bot.x); } } AddEdgeToSEL(e); } else { e->Curr.x = TopX(*e, topY); e->Curr.y = topY; } // When // StrictlySimple // and 'e' is // being touched // by another // edge, then // make sure // both edges // have a vertex // here ... if (m_StrictSimple && e->OutIdx >= 0 && e->WindDelta != 0) { TEdge* ePrev = e->PrevInAEL; while ((ePrev != nullptr) && ePrev->Curr.x == e->Curr.x) { if (ePrev->OutIdx >= 0 && ePrev->WindDelta != 0 && !(e->Bot == ePrev->Bot && e->Top == ePrev->Top)) { IntPoint pt = e->Curr; #ifdef use_xyz SetZ(pt, *ePrev, *e); #endif OutPt* op = AddOutPt(ePrev, pt); OutPt* op2 = AddOutPt(e, pt); AddJoin(op, op2, pt); // StrictlySimple (type-3) join } ePrev = ePrev->PrevInAEL; } } e = e->NextInAEL; } } if (m_StrictSimple) { auto lm = m_CurrentLM; while (lm != m_MinimaList.end() && lm->y == topY) { if ((lm->LeftBound != nullptr) && (lm->RightBound != nullptr)) { m_Maxima.push_back(lm->LeftBound->Bot.x); } ++lm; } } // 3. Process // horizontals at the // Top of the scanbeam // ... ProcessHorizontals(); if (m_StrictSimple && !next_maxima.empty()) { m_Maxima.insert(m_Maxima.end(), next_maxima.begin(), next_maxima.end()); } // 4. Promote // intermediate vertices // ... e = m_ActiveEdges; while (e != nullptr) { if (IsIntermediate(e, topY)) { OutPt* op = nullptr; if (e->OutIdx >= 0) { op = AddOutPt(e, e->Top); } UpdateEdgeIntoAEL(e); // if output // polygons // share an // edge, they'll // need joining // later ... TEdge* ePrev = e->PrevInAEL; TEdge* eNext = e->NextInAEL; if ((ePrev != nullptr) && ePrev->Curr.x == e->Bot.x && ePrev->Curr.y == e->Bot.y && (op != nullptr) && ePrev->OutIdx >= 0 && ePrev->Curr.y > ePrev->Top.y && SlopesEqual(e->Curr, e->Top, ePrev->Curr, ePrev->Top, m_UseFullRange) && (e->WindDelta != 0) && (ePrev->WindDelta != 0)) { OutPt* op2 = AddOutPt(ePrev, e->Bot); AddJoin(op, op2, e->Top); } else if ((eNext != nullptr) && eNext->Curr.x == e->Bot.x && eNext->Curr.y == e->Bot.y && (op != nullptr) && eNext->OutIdx >= 0 && eNext->Curr.y > eNext->Top.y && SlopesEqual(e->Curr, e->Top, eNext->Curr, eNext->Top, m_UseFullRange) && (e->WindDelta != 0) && (eNext->WindDelta != 0)) { OutPt* op2 = AddOutPt(eNext, e->Bot); AddJoin(op, op2, e->Top); } } e = e->NextInAEL; } } //------------------------------------------------------------------------------ void Clipper::FixupOutPolyline(OutRec& outrec) { OutPt* pp = outrec.Pts; OutPt* lastPP = pp->Prev; while (pp != lastPP) { pp = pp->Next; if (pp->Pt == pp->Prev->Pt) { if (pp == lastPP) { lastPP = pp->Prev; } OutPt* tmpPP = pp->Prev; tmpPP->Next = pp->Next; pp->Next->Prev = tmpPP; delete pp; pp = tmpPP; } } if (pp == pp->Prev) { DisposeOutPts(pp); outrec.Pts = nullptr; return; } } //------------------------------------------------------------------------------ void Clipper::FixupOutPolygon(OutRec& outrec) { // FixupOutPolygon() - // removes duplicate // points and simplifies // consecutive parallel // edges by removing the // middle vertex. OutPt* lastOK = nullptr; outrec.BottomPt = nullptr; OutPt* pp = outrec.Pts; bool preserveCol = m_PreserveCollinear || m_StrictSimple; for (;;) { if (pp->Prev == pp || pp->Prev == pp->Next) { DisposeOutPts(pp); outrec.Pts = nullptr; return; } // test for // duplicate points // and collinear // edges ... if ((pp->Pt == pp->Next->Pt) || (pp->Pt == pp->Prev->Pt) || (SlopesEqual(pp->Prev->Pt, pp->Pt, pp->Next->Pt, m_UseFullRange) && (!preserveCol || !Pt2IsBetweenPt1AndPt3(pp->Prev->Pt, pp->Pt, pp->Next->Pt)))) { lastOK = nullptr; OutPt* tmp = pp; pp->Prev->Next = pp->Next; pp->Next->Prev = pp->Prev; pp = pp->Prev; delete tmp; } else if (pp == lastOK) { break; } else { if (lastOK == nullptr) { lastOK = pp; } pp = pp->Next; } } outrec.Pts = pp; } //------------------------------------------------------------------------------ int PointCount(OutPt* Pts) { if (Pts == nullptr) { return 0; } int result = 0; OutPt* p = Pts; do { result++; p = p->Next; } while (p != Pts); return result; } //------------------------------------------------------------------------------ void Clipper::BuildResult(Paths& polys) { polys.reserve(m_PolyOuts.size()); for (auto& m_PolyOut : m_PolyOuts) { if (m_PolyOut->Pts == nullptr) { continue; } Path pg; OutPt* p = m_PolyOut->Pts->Prev; int cnt = PointCount(p); if (cnt < 2) { continue; } pg.reserve(cnt); for (int j = 0; j < cnt; ++j) { pg.push_back(p->Pt); p = p->Prev; } polys.push_back(pg); } } //------------------------------------------------------------------------------ void Clipper::BuildResult2(PolyTree& polytree) { polytree.Clear(); polytree.AllNodes.reserve(m_PolyOuts.size()); // add each output // polygon/contour to // polytree ... for (auto outRec : m_PolyOuts) { int cnt = PointCount(outRec->Pts); if ((outRec->IsOpen && cnt < 2) || (!outRec->IsOpen && cnt < 3)) { continue; } FixHoleLinkage(*outRec); auto* pn = new PolyNode(); // nb: polytree // takes ownership // of all the // PolyNodes polytree.AllNodes.push_back(pn); outRec->PolyNd = pn; pn->Parent = nullptr; pn->Index = 0; pn->Contour.reserve(cnt); OutPt* op = outRec->Pts->Prev; for (int j = 0; j < cnt; j++) { pn->Contour.push_back(op->Pt); op = op->Prev; } } // fixup PolyNode links // etc ... polytree.Childs.reserve(m_PolyOuts.size()); for (auto outRec : m_PolyOuts) { if (outRec->PolyNd == nullptr) { continue; } if (outRec->IsOpen) { outRec->PolyNd->m_IsOpen = true; polytree.AddChild(*outRec->PolyNd); } else if ((outRec->FirstLeft != nullptr) && (outRec->FirstLeft->PolyNd != nullptr)) { outRec->FirstLeft->PolyNd->AddChild(*outRec->PolyNd); } else { polytree.AddChild(*outRec->PolyNd); } } } //------------------------------------------------------------------------------ void SwapIntersectNodes(IntersectNode& int1, IntersectNode& int2) { // just swap the // contents (because // fIntersectNodes is a // single-linked-list) IntersectNode inode = int1; // gets a copy // of Int1 int1.Edge1 = int2.Edge1; int1.Edge2 = int2.Edge2; int1.Pt = int2.Pt; int2.Edge1 = inode.Edge1; int2.Edge2 = inode.Edge2; int2.Pt = inode.Pt; } //------------------------------------------------------------------------------ inline bool E2InsertsBeforeE1(TEdge& e1, TEdge& e2) { if (e2.Curr.x == e1.Curr.x) { if (e2.Top.y > e1.Top.y) { return e2.Top.x < TopX(e1, e2.Top.y); } return e1.Top.x > TopX(e2, e1.Top.y); } return e2.Curr.x < e1.Curr.x; } //------------------------------------------------------------------------------ bool GetOverlap(const cInt a1, const cInt a2, const cInt b1, const cInt b2, cInt& Left, cInt& Right) { if (a1 < a2) { if (b1 < b2) { Left = std::max(a1, b1); Right = std::min(a2, b2); } else { Left = std::max(a1, b2); Right = std::min(a2, b1); } } else { if (b1 < b2) { Left = std::max(a2, b1); Right = std::min(a1, b2); } else { Left = std::max(a2, b2); Right = std::min(a1, b1); } } return Left < Right; } //------------------------------------------------------------------------------ inline void UpdateOutPtIdxs(OutRec& outrec) { OutPt* op = outrec.Pts; do { op->Idx = outrec.Idx; op = op->Prev; } while (op != outrec.Pts); } //------------------------------------------------------------------------------ void Clipper::InsertEdgeIntoAEL(TEdge* edge, TEdge* startEdge) { if (m_ActiveEdges == nullptr) { edge->PrevInAEL = nullptr; edge->NextInAEL = nullptr; m_ActiveEdges = edge; } else if ((startEdge == nullptr) && E2InsertsBeforeE1(*m_ActiveEdges, *edge)) { edge->PrevInAEL = nullptr; edge->NextInAEL = m_ActiveEdges; m_ActiveEdges->PrevInAEL = edge; m_ActiveEdges = edge; } else { if (startEdge == nullptr) { startEdge = m_ActiveEdges; } while ((startEdge->NextInAEL != nullptr) && !E2InsertsBeforeE1(*startEdge->NextInAEL, *edge)) { startEdge = startEdge->NextInAEL; } edge->NextInAEL = startEdge->NextInAEL; if (startEdge->NextInAEL != nullptr) { startEdge->NextInAEL->PrevInAEL = edge; } edge->PrevInAEL = startEdge; startEdge->NextInAEL = edge; } } //---------------------------------------------------------------------- OutPt* DupOutPt(OutPt* outPt, bool InsertAfter) { auto* result = new OutPt; result->Pt = outPt->Pt; result->Idx = outPt->Idx; if (InsertAfter) { result->Next = outPt->Next; result->Prev = outPt; outPt->Next->Prev = result; outPt->Next = result; } else { result->Prev = outPt->Prev; result->Next = outPt; outPt->Prev->Next = result; outPt->Prev = result; } return result; } //------------------------------------------------------------------------------ bool JoinHorz(OutPt* op1, OutPt* op1b, OutPt* op2, OutPt* op2b, const IntPoint Pt, bool DiscardLeft) { Direction Dir1 = (op1->Pt.x > op1b->Pt.x ? dRightToLeft : dLeftToRight); Direction Dir2 = (op2->Pt.x > op2b->Pt.x ? dRightToLeft : dLeftToRight); if (Dir1 == Dir2) { return false; } // When DiscardLeft, // we want Op1b to // be on the Left of // Op1, otherwise we // want Op1b to be // on the Right. // (And likewise // with Op2 and // Op2b.) So, to // facilitate this // while inserting // Op1b and Op2b ... // when DiscardLeft, // make sure we're // AT or RIGHT of Pt // before adding // Op1b, otherwise // make sure we're // AT or LEFT of Pt. // (Likewise with // Op2b.) if (Dir1 == dLeftToRight) { while (op1->Next->Pt.x <= Pt.x && op1->Next->Pt.x >= op1->Pt.x && op1->Next->Pt.y == Pt.y) { op1 = op1->Next; } if (DiscardLeft && (op1->Pt.x != Pt.x)) { op1 = op1->Next; } op1b = DupOutPt(op1, !DiscardLeft); if (op1b->Pt != Pt) { op1 = op1b; op1->Pt = Pt; op1b = DupOutPt(op1, !DiscardLeft); } } else { while (op1->Next->Pt.x >= Pt.x && op1->Next->Pt.x <= op1->Pt.x && op1->Next->Pt.y == Pt.y) { op1 = op1->Next; } if (!DiscardLeft && (op1->Pt.x != Pt.x)) { op1 = op1->Next; } op1b = DupOutPt(op1, DiscardLeft); if (op1b->Pt != Pt) { op1 = op1b; op1->Pt = Pt; op1b = DupOutPt(op1, DiscardLeft); } } if (Dir2 == dLeftToRight) { while (op2->Next->Pt.x <= Pt.x && op2->Next->Pt.x >= op2->Pt.x && op2->Next->Pt.y == Pt.y) { op2 = op2->Next; } if (DiscardLeft && (op2->Pt.x != Pt.x)) { op2 = op2->Next; } op2b = DupOutPt(op2, !DiscardLeft); if (op2b->Pt != Pt) { op2 = op2b; op2->Pt = Pt; op2b = DupOutPt(op2, !DiscardLeft); }; } else { while (op2->Next->Pt.x >= Pt.x && op2->Next->Pt.x <= op2->Pt.x && op2->Next->Pt.y == Pt.y) { op2 = op2->Next; } if (!DiscardLeft && (op2->Pt.x != Pt.x)) { op2 = op2->Next; } op2b = DupOutPt(op2, DiscardLeft); if (op2b->Pt != Pt) { op2 = op2b; op2->Pt = Pt; op2b = DupOutPt(op2, DiscardLeft); }; }; if ((Dir1 == dLeftToRight) == DiscardLeft) { op1->Prev = op2; op2->Next = op1; op1b->Next = op2b; op2b->Prev = op1b; } else { op1->Next = op2; op2->Prev = op1; op1b->Prev = op2b; op2b->Next = op1b; } return true; } //------------------------------------------------------------------------------ bool Clipper::JoinPoints(Join* j, OutRec* outRec1, OutRec* outRec2) { OutPt *op1 = j->OutPt1, *op1b; OutPt *op2 = j->OutPt2, *op2b; // There are 3 kinds // of joins for // output polygons // ... // 1. Horizontal // joins where // Join.OutPt1 & // Join.OutPt2 are // vertices anywhere // along // (horizontal) // collinear edges // (& Join.OffPt is // on the same // horizontal). // 2. Non-horizontal // joins where // Join.OutPt1 & // Join.OutPt2 are // at the same // location at the // Bottom of the // overlapping // segment (& // Join.OffPt is // above). // 3. StrictSimple // joins where edges // touch but are not // collinear and // where // Join.OutPt1, // Join.OutPt2 & // Join.OffPt all // share the same // point. bool isHorizontal = (j->OutPt1->Pt.y == j->OffPt.y); if (isHorizontal && (j->OffPt == j->OutPt1->Pt) && (j->OffPt == j->OutPt2->Pt)) { if (outRec1 != outRec2) { // First Op1 // Next and // Op2 Prev op1b = j->OutPt1->Next; while (op1b != op1 && (op1b->Pt == j->OffPt)) { op1b = op1b->Next; } op2b = j->OutPt2->Prev; while (op2b != op2 && (op2b->Pt == j->OffPt)) { op2b = op2b->Prev; } if (op1b->Pt == op2b->Pt) { OutPt* op1b_prev = op1b->Prev; OutPt* op2b_next = op2b->Next; op1b->Prev = op2b; op2b->Next = op1b; op1b_prev->Next = op2b_next; op2b_next->Prev = op1b_prev; return true; } // Second // Op1 Prev // and Op2 // Next op2b = j->OutPt2->Next; while (op2b != op2 && (op2b->Pt == j->OffPt)) { op2b = op2b->Next; } op1b = j->OutPt1->Prev; while (op1b != op1 && (op1b->Pt == j->OffPt)) { op1b = op1b->Prev; } if (op2b->Pt == op1b->Pt) { OutPt* op2b_prev = op2b->Prev; OutPt* op1b_next = op1b->Next; op2b->Prev = op1b; op1b->Next = op2b; op2b_prev->Next = op1b_next; op1b_next->Prev = op2b_prev; return true; } return false; } // Strictly // Simple join // ... op1b = j->OutPt1->Next; while (op1b != op1 && (op1b->Pt == j->OffPt)) { op1b = op1b->Next; } bool reverse1 = (op1b->Pt.y > j->OffPt.y); op2b = j->OutPt2->Next; while (op2b != op2 && (op2b->Pt == j->OffPt)) { op2b = op2b->Next; } bool reverse2 = (op2b->Pt.y > j->OffPt.y); if (reverse1 == reverse2) { return false; } if (reverse1) { op1b = DupOutPt(op1, false); op2b = DupOutPt(op2, true); op1->Prev = op2; op2->Next = op1; op1b->Next = op2b; op2b->Prev = op1b; j->OutPt1 = op1; j->OutPt2 = op1b; return true; } op1b = DupOutPt(op1, true); op2b = DupOutPt(op2, false); op1->Next = op2; op2->Prev = op1; op1b->Prev = op2b; op2b->Next = op1b; j->OutPt1 = op1; j->OutPt2 = op1b; return true; } if (isHorizontal) { // treat // horizontal // joins // differently // to // non-horizontal // joins since // with them // we're not yet // sure where // the // overlapping // is. OutPt1.Pt // & OutPt2.Pt // may be // anywhere // along the // horizontal // edge. op1b = op1; while (op1->Prev->Pt.y == op1->Pt.y && op1->Prev != op1b && op1->Prev != op2) { op1 = op1->Prev; } while (op1b->Next->Pt.y == op1b->Pt.y && op1b->Next != op1 && op1b->Next != op2) { op1b = op1b->Next; } if (op1b->Next == op1 || op1b->Next == op2) { return false; // a flat 'polygon' } op2b = op2; while (op2->Prev->Pt.y == op2->Pt.y && op2->Prev != op2b && op2->Prev != op1b) { op2 = op2->Prev; } while (op2b->Next->Pt.y == op2b->Pt.y && op2b->Next != op2 && op2b->Next != op1) { op2b = op2b->Next; } if (op2b->Next == op2 || op2b->Next == op1) { return false; // a flat 'polygon' } cInt Left, Right; // Op1 --> Op1b // & Op2 --> // Op2b are the // extremites of // the // horizontal // edges if (!GetOverlap(op1->Pt.x, op1b->Pt.x, op2->Pt.x, op2b->Pt.x, Left, Right)) { return false; } // DiscardLeftSide: // when // overlapping // edges are // joined, a // spike will // created which // needs to be // cleaned up. // However, we // don't want // Op1 or Op2 // caught up on // the discard // Side as // either may // still be // needed for // other joins // ... IntPoint Pt; bool DiscardLeftSide; if (op1->Pt.x >= Left && op1->Pt.x <= Right) { Pt = op1->Pt; DiscardLeftSide = (op1->Pt.x > op1b->Pt.x); } else if (op2->Pt.x >= Left && op2->Pt.x <= Right) { Pt = op2->Pt; DiscardLeftSide = (op2->Pt.x > op2b->Pt.x); } else if (op1b->Pt.x >= Left && op1b->Pt.x <= Right) { Pt = op1b->Pt; DiscardLeftSide = op1b->Pt.x > op1->Pt.x; } else { Pt = op2b->Pt; DiscardLeftSide = (op2b->Pt.x > op2->Pt.x); } j->OutPt1 = op1; j->OutPt2 = op2; return JoinHorz(op1, op1b, op2, op2b, Pt, DiscardLeftSide); } // nb: For // non-horizontal // joins ... // 1. // Jr.OutPt1.Pt.y // == // Jr.OutPt2.Pt.y // 2. // Jr.OutPt1.Pt // > // Jr.OffPt.y // make sure the // polygons are // correctly // oriented ... op1b = op1->Next; while ((op1b->Pt == op1->Pt) && (op1b != op1)) { op1b = op1b->Next; } bool Reverse1 = ((op1b->Pt.y > op1->Pt.y) || !SlopesEqual(op1->Pt, op1b->Pt, j->OffPt, m_UseFullRange)); if (Reverse1) { op1b = op1->Prev; while ((op1b->Pt == op1->Pt) && (op1b != op1)) { op1b = op1b->Prev; } if ((op1b->Pt.y > op1->Pt.y) || !SlopesEqual(op1->Pt, op1b->Pt, j->OffPt, m_UseFullRange)) { return false; } }; op2b = op2->Next; while ((op2b->Pt == op2->Pt) && (op2b != op2)) { op2b = op2b->Next; } bool Reverse2 = ((op2b->Pt.y > op2->Pt.y) || !SlopesEqual(op2->Pt, op2b->Pt, j->OffPt, m_UseFullRange)); if (Reverse2) { op2b = op2->Prev; while ((op2b->Pt == op2->Pt) && (op2b != op2)) { op2b = op2b->Prev; } if ((op2b->Pt.y > op2->Pt.y) || !SlopesEqual(op2->Pt, op2b->Pt, j->OffPt, m_UseFullRange)) { return false; } } if ((op1b == op1) || (op2b == op2) || (op1b == op2b) || ((outRec1 == outRec2) && (Reverse1 == Reverse2))) { return false; } if (Reverse1) { op1b = DupOutPt(op1, false); op2b = DupOutPt(op2, true); op1->Prev = op2; op2->Next = op1; op1b->Next = op2b; op2b->Prev = op1b; j->OutPt1 = op1; j->OutPt2 = op1b; return true; } op1b = DupOutPt(op1, true); op2b = DupOutPt(op2, false); op1->Next = op2; op2->Prev = op1; op1b->Prev = op2b; op2b->Next = op1b; j->OutPt1 = op1; j->OutPt2 = op1b; return true; } //---------------------------------------------------------------------- static OutRec* ParseFirstLeft(OutRec* FirstLeft) { while ((FirstLeft != nullptr) && (FirstLeft->Pts == nullptr)) { FirstLeft = FirstLeft->FirstLeft; } return FirstLeft; } //------------------------------------------------------------------------------ void Clipper::FixupFirstLefts1(OutRec* OldOutRec, OutRec* NewOutRec) { // tests if // NewOutRec // contains the // polygon before // reassigning // FirstLeft for (auto outRec : m_PolyOuts) { OutRec* firstLeft = ParseFirstLeft(outRec->FirstLeft); if ((outRec->Pts != nullptr) && firstLeft == OldOutRec) { if (Poly2ContainsPoly1(outRec->Pts, NewOutRec->Pts)) { if (outRec->IsHole == NewOutRec->IsHole) { outRec->IsHole = !outRec->IsHole; ReversePolyPtLinks(outRec->Pts); } outRec->FirstLeft = NewOutRec; } } } } //---------------------------------------------------------------------- void Clipper::FixupFirstLefts2(OutRec* InnerOutRec, OutRec* OuterOutRec) { // A polygon has // split into two // such that one is // now the inner of // the other. It's // possible that // these polygons // now wrap around // other polygons, // so check every // polygon that's // also contained by // OuterOutRec's // FirstLeft // container //(including 0) to // see if they've // become inner to // the new inner // polygon ... for (auto outRec : m_PolyOuts) { if ((outRec->Pts == nullptr) || outRec == OuterOutRec || outRec == InnerOutRec) { continue; } OutRec* firstLeft = ParseFirstLeft(outRec->FirstLeft); if (firstLeft != InnerOutRec && firstLeft != OuterOutRec) { continue; } if (Poly2ContainsPoly1(outRec->Pts, InnerOutRec->Pts)) { if (outRec->IsHole == InnerOutRec->IsHole) { outRec->IsHole = !outRec->IsHole; ReversePolyPtLinks(outRec->Pts); } outRec->FirstLeft = InnerOutRec; } else { if (outRec->IsHole == OuterOutRec->IsHole) { if (Poly2ContainsPoly1(outRec->Pts, OuterOutRec->Pts)) { outRec->FirstLeft = OuterOutRec; } else { outRec->FirstLeft = ParseFirstLeft(OuterOutRec->FirstLeft); } } else { if (Area(outRec->Pts) == 0.0 && !Poly2ContainsPoly1(outRec->Pts, OuterOutRec->Pts)) { outRec->IsHole = !outRec->IsHole; outRec->FirstLeft = ParseFirstLeft(OuterOutRec->FirstLeft); ReversePolyPtLinks(outRec->Pts); } else { outRec->FirstLeft = OuterOutRec; } } } } } //---------------------------------------------------------------------- void Clipper::FixupFirstLefts3(OutRec* OldOutRec, OutRec* NewOutRec) { // reassigns // FirstLeft WITHOUT // testing if // NewOutRec // contains the // polygon for (auto outRec : m_PolyOuts) { // unused // variable // `firstLeft`: // is this a // bug? (dane) // OutRec* // firstLeft = // ParseFirstLeft(outRec->FirstLeft); if ((outRec->Pts != nullptr) && outRec->FirstLeft == OldOutRec) { outRec->FirstLeft = NewOutRec; } } } //---------------------------------------------------------------------- void Clipper::JoinCommonEdges() { for (auto join : m_Joins) { OutRec* outRec1 = GetOutRec(join->OutPt1->Idx); OutRec* outRec2 = GetOutRec(join->OutPt2->Idx); if ((outRec1->Pts == nullptr) || (outRec2->Pts == nullptr)) { continue; } if (outRec1->IsOpen || outRec2->IsOpen) { continue; } // get the // polygon // fragment with // the correct // hole state // (FirstLeft) // before // calling // JoinPoints() // ... OutRec* holeStateRec; if (outRec1 == outRec2) { holeStateRec = outRec1; } else if (OutRec1RightOfOutRec2(outRec1, outRec2)) { holeStateRec = outRec2; } else if (OutRec1RightOfOutRec2(outRec2, outRec1)) { holeStateRec = outRec1; } else { holeStateRec = GetLowermostRec(outRec1, outRec2); } if (!JoinPoints(join, outRec1, outRec2)) { continue; } if (outRec1 == outRec2) { // instead // of // joining // two // polygons, // we've // just // created a // new one // by // splitting // one // polygon // into two. outRec1->BottomPt = nullptr; outRec2 = CreateOutRec(); if (PointCount(join->OutPt1) > PointCount(join->OutPt2)) { outRec1->Pts = join->OutPt1; outRec2->Pts = join->OutPt2; } else { outRec1->Pts = join->OutPt2; outRec2->Pts = join->OutPt1; } // update // all // OutRec2.Pts // Idx's ... UpdateOutPtIdxs(*outRec2); if (Poly2ContainsPoly1(outRec2->Pts, outRec1->Pts)) { // outRec1 // contains // outRec2 // ... outRec2->IsHole = !outRec1->IsHole; outRec2->FirstLeft = outRec1; if (m_UsingPolyTree) { FixupFirstLefts2(outRec2, outRec1); } if ((outRec2->IsHole ^ m_ReverseOutput) == static_cast(Area(*outRec2) > 0)) { ReversePolyPtLinks(outRec2->Pts); } } else if (Poly2ContainsPoly1(outRec1->Pts, outRec2->Pts)) { // outRec2 // contains // outRec1 // ... outRec2->IsHole = outRec1->IsHole; outRec1->IsHole = !outRec2->IsHole; outRec2->FirstLeft = outRec1->FirstLeft; outRec1->FirstLeft = outRec2; if (m_UsingPolyTree) { FixupFirstLefts2(outRec1, outRec2); } if ((outRec1->IsHole ^ m_ReverseOutput) == static_cast(Area(*outRec1) > 0)) { ReversePolyPtLinks(outRec1->Pts); } } else { // the 2 // polygons // are // completely // separate // ... outRec2->IsHole = outRec1->IsHole; outRec2->FirstLeft = outRec1->FirstLeft; // fixup // FirstLeft // pointers // that // may // need // reassigning // to // OutRec2 if (m_UsingPolyTree) { FixupFirstLefts1(outRec1, outRec2); } } } else { // joined 2 // polygons // together // ... outRec2->Pts = nullptr; outRec2->BottomPt = nullptr; outRec2->Idx = outRec1->Idx; outRec1->IsHole = holeStateRec->IsHole; if (holeStateRec == outRec2) { outRec1->FirstLeft = outRec2->FirstLeft; } outRec2->FirstLeft = outRec1; if (m_UsingPolyTree) { FixupFirstLefts3(outRec2, outRec1); } } } } //------------------------------------------------------------------------------ // ClipperOffset support // functions ... //------------------------------------------------------------------------------ DoublePoint GetUnitNormal(const IntPoint& pt1, const IntPoint& pt2) { if (pt2.x == pt1.x && pt2.y == pt1.y) { return { 0, 0 }; } auto Dx = static_cast(pt2.x - pt1.x); auto dy = static_cast(pt2.y - pt1.y); double f = 1 * 1.0 / std::sqrt(Dx * Dx + dy * dy); Dx *= f; dy *= f; return { dy, -Dx }; } //------------------------------------------------------------------------------ // ClipperOffset class //------------------------------------------------------------------------------ ClipperOffset::ClipperOffset(double miterLimit, double arcTolerance) { this->MiterLimit = miterLimit; this->ArcTolerance = arcTolerance; m_lowest.x = -1; } //------------------------------------------------------------------------------ ClipperOffset::~ClipperOffset() { Clear(); } //------------------------------------------------------------------------------ void ClipperOffset::Clear() { for (int i = 0; i < m_polyNodes.ChildCount(); ++i) { delete m_polyNodes.Childs[i]; } m_polyNodes.Childs.clear(); m_lowest.x = -1; } //------------------------------------------------------------------------------ void ClipperOffset::AddPath(const Path& path, JoinType joinType, EndType endType) { int highI = static_cast(path.size()) - 1; if (highI < 0) { return; } auto* newNode = new PolyNode(); newNode->m_jointype = joinType; newNode->m_endtype = endType; // strip duplicate // points from path // and also get // index to the // lowest point ... if (endType == etClosedLine || endType == etClosedPolygon) { while (highI > 0 && path[0] == path[highI]) { highI--; } } newNode->Contour.reserve(highI + 1); newNode->Contour.push_back(path[0]); int j = 0, k = 0; for (int i = 1; i <= highI; i++) { if (newNode->Contour[j] != path[i]) { j++; newNode->Contour.push_back(path[i]); if (path[i].y > newNode->Contour[k].y || (path[i].y == newNode->Contour[k].y && path[i].x < newNode->Contour[k].x)) { k = j; } } } if (endType == etClosedPolygon && j < 2) { delete newNode; return; } m_polyNodes.AddChild(*newNode); // if this // path's lowest // pt is lower // than all the // others then // update // m_lowest if (endType != etClosedPolygon) { return; } if (m_lowest.x < 0) { m_lowest = IntPoint(m_polyNodes.ChildCount() - 1, k); } else { IntPoint ip = m_polyNodes.Childs[static_cast(m_lowest.x)]->Contour[static_cast(m_lowest.y)]; if (newNode->Contour[k].y > ip.y || (newNode->Contour[k].y == ip.y && newNode->Contour[k].x < ip.x)) { m_lowest = IntPoint(m_polyNodes.ChildCount() - 1, k); } } } //------------------------------------------------------------------------------ void ClipperOffset::AddPaths(const Paths& paths, JoinType joinType, EndType endType) { for (Paths::size_type i = 0; i < paths.size(); ++i) { AddPath(paths[i], joinType, endType); } } //------------------------------------------------------------------------------ void ClipperOffset::FixOrientations() { // fixup // orientations // of all closed // paths if the // orientation // of the closed // path with the // lowermost // vertex is // wrong ... if (m_lowest.x >= 0 && !Orientation(m_polyNodes.Childs[static_cast(m_lowest.x)]->Contour)) { for (int i = 0; i < m_polyNodes.ChildCount(); ++i) { PolyNode& node = *m_polyNodes.Childs[i]; if (node.m_endtype == etClosedPolygon || (node.m_endtype == etClosedLine && Orientation(node.Contour))) { ReversePath(node.Contour); } } } else { for (int i = 0; i < m_polyNodes.ChildCount(); ++i) { PolyNode& node = *m_polyNodes.Childs[i]; if (node.m_endtype == etClosedLine && !Orientation(node.Contour)) { ReversePath(node.Contour); } } } } //------------------------------------------------------------------------------ void ClipperOffset::Execute(Paths& solution, double delta) { solution.clear(); FixOrientations(); DoOffset(delta); // now clean up // 'corners' ... Clipper clpr; clpr.AddPaths(m_destPolys, ptSubject, true); if (delta > 0) { clpr.Execute(ctUnion, solution, pftPositive, pftPositive); } else { IntRect r = clpr.GetBounds(); Path outer(4); outer[0] = IntPoint(r.left - 10, r.bottom + 10); outer[1] = IntPoint(r.right + 10, r.bottom + 10); outer[2] = IntPoint(r.right + 10, r.top - 10); outer[3] = IntPoint(r.left - 10, r.top - 10); clpr.AddPath(outer, ptSubject, true); clpr.ReverseSolution(true); clpr.Execute(ctUnion, solution, pftNegative, pftNegative); if (!solution.empty()) { solution.erase(solution.begin()); } } } //------------------------------------------------------------------------------ void ClipperOffset::Execute(PolyTree& solution, double delta) { solution.Clear(); FixOrientations(); DoOffset(delta); // now clean up // 'corners' ... Clipper clpr; clpr.AddPaths(m_destPolys, ptSubject, true); if (delta > 0) { clpr.Execute(ctUnion, solution, pftPositive, pftPositive); } else { IntRect r = clpr.GetBounds(); Path outer(4); outer[0] = IntPoint(r.left - 10, r.bottom + 10); outer[1] = IntPoint(r.right + 10, r.bottom + 10); outer[2] = IntPoint(r.right + 10, r.top - 10); outer[3] = IntPoint(r.left - 10, r.top - 10); clpr.AddPath(outer, ptSubject, true); clpr.ReverseSolution(true); clpr.Execute(ctUnion, solution, pftNegative, pftNegative); // remove // the outer // PolyNode // rectangle // ... if (solution.ChildCount() == 1 && solution.Childs[0]->ChildCount() > 0) { PolyNode* outerNode = solution.Childs[0]; solution.Childs.reserve(outerNode->ChildCount()); solution.Childs[0] = outerNode->Childs[0]; solution.Childs[0]->Parent = outerNode->Parent; for (int i = 1; i < outerNode->ChildCount(); ++i) { solution.AddChild(*outerNode->Childs[i]); } } else { solution.Clear(); } } } //------------------------------------------------------------------------------ void ClipperOffset::DoOffset(double delta) { m_destPolys.clear(); m_delta = delta; // if Zero // offset, just // copy any // CLOSED // polygons to // m_p and // return ... if (NEAR_ZERO(delta)) { m_destPolys.reserve(m_polyNodes.ChildCount()); for (int i = 0; i < m_polyNodes.ChildCount(); i++) { PolyNode& node = *m_polyNodes.Childs[i]; if (node.m_endtype == etClosedPolygon) { m_destPolys.push_back(node.Contour); } } return; } // see // offset_triginometry3.svg // in the // documentation // folder ... if (MiterLimit > 2) { m_miterLim = 2 / (MiterLimit * MiterLimit); } else { m_miterLim = 0.5; } double y; if (ArcTolerance <= 0.0) { y = def_arc_tolerance; } else if (ArcTolerance > std::fabs(delta) * def_arc_tolerance) { y = std::fabs(delta) * def_arc_tolerance; } else { y = ArcTolerance; } // see // offset_triginometry2.svg // in the // documentation // folder ... double steps = pi / std::acos(1 - y / std::fabs(delta)); if (steps > std::fabs(delta) * pi) { steps = std::fabs(delta) * pi; // ie excessive precision check } m_sin = std::sin(two_pi / steps); m_cos = std::cos(two_pi / steps); m_StepsPerRad = steps / two_pi; if (delta < 0.0) { m_sin = -m_sin; } m_destPolys.reserve(m_polyNodes.ChildCount() * 2); for (int i = 0; i < m_polyNodes.ChildCount(); i++) { PolyNode& node = *m_polyNodes.Childs[i]; m_srcPoly = node.Contour; auto len = static_cast(m_srcPoly.size()); if (len == 0 || (delta <= 0 && (len < 3 || node.m_endtype != etClosedPolygon))) { continue; } m_destPoly.clear(); if (len == 1) { if (node.m_jointype == jtRound) { double X = 1.0, Y = 0.0; for (cInt j = 1; j <= steps; j++) { m_destPoly.push_back( IntPoint(Round(m_srcPoly[0].x + X * delta), Round(m_srcPoly[0].y + Y * delta))); double X2 = X; X = X * m_cos - m_sin * Y; Y = X2 * m_sin + Y * m_cos; } } else { double X = -1.0, Y = -1.0; for (int j = 0; j < 4; ++j) { m_destPoly.push_back( IntPoint(Round(m_srcPoly[0].x + X * delta), Round(m_srcPoly[0].y + Y * delta))); if (X < 0) { X = 1; } else if (Y < 0) { Y = 1; } else { X = -1; } } } m_destPolys.push_back(m_destPoly); continue; } // build // m_normals // ... m_normals.clear(); m_normals.reserve(len); for (int j = 0; j < len - 1; ++j) { m_normals.push_back(GetUnitNormal(m_srcPoly[j], m_srcPoly[j + 1])); } if (node.m_endtype == etClosedLine || node.m_endtype == etClosedPolygon) { m_normals.push_back(GetUnitNormal(m_srcPoly[len - 1], m_srcPoly[0])); } else { m_normals.emplace_back(m_normals[len - 2]); } if (node.m_endtype == etClosedPolygon) { int k = len - 1; for (int j = 0; j < len; ++j) { OffsetPoint(j, k, node.m_jointype); } m_destPolys.push_back(m_destPoly); } else if (node.m_endtype == etClosedLine) { int k = len - 1; for (int j = 0; j < len; ++j) { OffsetPoint(j, k, node.m_jointype); } m_destPolys.push_back(m_destPoly); m_destPoly.clear(); // re-build // m_normals // ... DoublePoint n = m_normals[len - 1]; for (int j = len - 1; j > 0; j--) { m_normals[j] = DoublePoint(-m_normals[j - 1].x, -m_normals[j - 1].y); } m_normals[0] = DoublePoint(-n.x, -n.y); k = 0; for (int j = len - 1; j >= 0; j--) { OffsetPoint(j, k, node.m_jointype); } m_destPolys.push_back(m_destPoly); } else { int k = 0; for (int j = 1; j < len - 1; ++j) { OffsetPoint(j, k, node.m_jointype); } IntPoint pt1; if (node.m_endtype == etOpenButt) { int j = len - 1; pt1 = IntPoint(Round(m_srcPoly[j].x + m_normals[j].x * delta), Round(m_srcPoly[j].y + m_normals[j].y * delta)); m_destPoly.push_back(pt1); pt1 = IntPoint(Round(m_srcPoly[j].x - m_normals[j].x * delta), Round(m_srcPoly[j].y - m_normals[j].y * delta)); m_destPoly.push_back(pt1); } else { int j = len - 1; k = len - 2; m_sinA = 0; m_normals[j] = DoublePoint(-m_normals[j].x, -m_normals[j].y); if (node.m_endtype == etOpenSquare) { DoSquare(j, k); } else { DoRound(j, k); } } // re-build // m_normals // ... for (int j = len - 1; j > 0; j--) { m_normals[j] = DoublePoint(-m_normals[j - 1].x, -m_normals[j - 1].y); } m_normals[0] = DoublePoint(-m_normals[1].x, -m_normals[1].y); k = len - 1; for (int j = k - 1; j > 0; --j) { OffsetPoint(j, k, node.m_jointype); } if (node.m_endtype == etOpenButt) { pt1 = IntPoint(Round(m_srcPoly[0].x - m_normals[0].x * delta), Round(m_srcPoly[0].y - m_normals[0].y * delta)); m_destPoly.push_back(pt1); pt1 = IntPoint(Round(m_srcPoly[0].x + m_normals[0].x * delta), Round(m_srcPoly[0].y + m_normals[0].y * delta)); m_destPoly.push_back(pt1); } else { k = 1; m_sinA = 0; if (node.m_endtype == etOpenSquare) { DoSquare(0, 1); } else { DoRound(0, 1); } } m_destPolys.push_back(m_destPoly); } } } //------------------------------------------------------------------------------ void ClipperOffset::OffsetPoint(int j, int& k, JoinType jointype) { // cross product // ... m_sinA = (m_normals[k].x * m_normals[j].y - m_normals[j].x * m_normals[k].y); if (std::fabs(m_sinA * m_delta) < 1.0) { // dot // product // ... double cosA = (m_normals[k].x * m_normals[j].x + m_normals[j].y * m_normals[k].y); if (cosA > 0) // angle // => // 0 // degrees { m_destPoly.push_back(IntPoint(Round(m_srcPoly[j].x + m_normals[k].x * m_delta), Round(m_srcPoly[j].y + m_normals[k].y * m_delta))); return; } // else // angle => // 180 // degrees } else if (m_sinA > 1.0) { m_sinA = 1.0; } else if (m_sinA < -1.0) { m_sinA = -1.0; } if (m_sinA * m_delta < 0) { m_destPoly.push_back(IntPoint(Round(m_srcPoly[j].x + m_normals[k].x * m_delta), Round(m_srcPoly[j].y + m_normals[k].y * m_delta))); m_destPoly.push_back(m_srcPoly[j]); m_destPoly.push_back(IntPoint(Round(m_srcPoly[j].x + m_normals[j].x * m_delta), Round(m_srcPoly[j].y + m_normals[j].y * m_delta))); } else { switch (jointype) { case jtMiter: { double r = 1 + (m_normals[j].x * m_normals[k].x + m_normals[j].y * m_normals[k].y); if (r >= m_miterLim) { DoMiter(j, k, r); } else { DoSquare(j, k); } break; } case jtSquare: DoSquare(j, k); break; case jtRound: DoRound(j, k); break; } } k = j; } //------------------------------------------------------------------------------ void ClipperOffset::DoSquare(int j, int k) { double dx = std::tan(std::atan2(m_sinA, m_normals[k].x * m_normals[j].x + m_normals[k].y * m_normals[j].y) / 4); m_destPoly.push_back(IntPoint(Round(m_srcPoly[j].x + m_delta * (m_normals[k].x - m_normals[k].y * dx)), Round(m_srcPoly[j].y + m_delta * (m_normals[k].y + m_normals[k].x * dx)))); m_destPoly.push_back(IntPoint(Round(m_srcPoly[j].x + m_delta * (m_normals[j].x + m_normals[j].y * dx)), Round(m_srcPoly[j].y + m_delta * (m_normals[j].y - m_normals[j].x * dx)))); } //------------------------------------------------------------------------------ void ClipperOffset::DoMiter(int j, int k, double r) { double q = m_delta / r; m_destPoly.push_back(IntPoint(Round(m_srcPoly[j].x + (m_normals[k].x + m_normals[j].x) * q), Round(m_srcPoly[j].y + (m_normals[k].y + m_normals[j].y) * q))); } //------------------------------------------------------------------------------ void ClipperOffset::DoRound(int j, int k) { double a = std::atan2(m_sinA, m_normals[k].x * m_normals[j].x + m_normals[k].y * m_normals[j].y); int steps = std::max(static_cast(Round(m_StepsPerRad * std::fabs(a))), 1); double X = m_normals[k].x, Y = m_normals[k].y, X2; for (int i = 0; i < steps; ++i) { m_destPoly.push_back(IntPoint(Round(m_srcPoly[j].x + X * m_delta), Round(m_srcPoly[j].y + Y * m_delta))); X2 = X; X = X * m_cos - m_sin * Y; Y = X2 * m_sin + Y * m_cos; } m_destPoly.push_back( IntPoint(Round(m_srcPoly[j].x + m_normals[j].x * m_delta), Round(m_srcPoly[j].y + m_normals[j].y * m_delta))); } //------------------------------------------------------------------------------ // Miscellaneous // public functions //------------------------------------------------------------------------------ bool SortOutPt(OutPt* op1, OutPt* op2) { if (op1->Pt.y > op2->Pt.y) { return true; } if (op1->Pt.y < op2->Pt.y) { return false; } if (op1->Pt.x < op2->Pt.x) { return true; } if (op1->Pt.x > op2->Pt.x) { return false; } return (op1->Idx < op2->Idx); } //----------------------------------------------------------------------------- struct OutPtIntersect { OutPt* op1; OutPt* op2; }; //----------------------------------------------------------------------------- bool Clipper::FindIntersectLoop(std::unordered_multimap& dupeRec, std::list>& iList, OutRec* outRec_parent, int idx_origin, int idx_search, std::set& visited, OutPt* orig_pt, OutPt* prev_pt) { auto range = dupeRec.equal_range(idx_search); // Check for // direct // connection for (auto it = range.first; it != range.second;) { OutRec* itRec1 = GetOutRec(it->second.op1->Idx); OutRec* itRec2 = GetOutRec(it->second.op2->Idx); if (itRec1->Idx != idx_search || (!itRec1->IsHole && !itRec2->IsHole)) { it = dupeRec.erase(it); continue; } if (itRec2->Idx == idx_origin && (outRec_parent == itRec2 || outRec_parent == ParseFirstLeft(itRec2->FirstLeft)) && prev_pt->Pt != it->second.op2->Pt && orig_pt->Pt != it->second.op2->Pt) { iList.emplace_front(idx_search, it->second); return true; } ++it; } range = dupeRec.equal_range(idx_search); visited.insert(idx_search); // Check for // connection // through chain // of other // intersections for (auto it = range.first; it != range.second && it != dupeRec.end() && it->first == idx_search; ++it) { OutRec* itRec = GetOutRec(it->second.op2->Idx); if (visited.count(itRec->Idx) > 0 || (outRec_parent != itRec && outRec_parent != ParseFirstLeft(itRec->FirstLeft)) || prev_pt->Pt == it->second.op2->Pt) { continue; } if (FindIntersectLoop(dupeRec, iList, outRec_parent, idx_origin, itRec->Idx, visited, orig_pt, it->second.op2)) { iList.emplace_front(idx_search, it->second); return true; } } return false; } //----------------------------------------------------------------------------- bool Clipper::FixIntersects(std::unordered_multimap& dupeRec, OutPt* op_j, OutPt* op_k, OutRec* outRec_j, OutRec* outRec_k) { if (!outRec_j->IsHole && !outRec_k->IsHole) { // Both are // not // holes, // return // nothing // to do. return false; } OutRec* outRec_origin; OutRec* outRec_search; OutRec* outRec_parent; OutPt* op_origin_1; OutPt* op_origin_2; if (!outRec_j->IsHole) { outRec_origin = outRec_j; outRec_parent = outRec_origin; outRec_search = outRec_k; op_origin_1 = op_j; op_origin_2 = op_k; } else if (!outRec_k->IsHole) { outRec_origin = outRec_k; outRec_parent = outRec_origin; outRec_search = outRec_j; op_origin_1 = op_k; op_origin_2 = op_j; } else // both // are // holes { // Order // doesn't // matter outRec_origin = outRec_j; outRec_parent = ParseFirstLeft(outRec_origin->FirstLeft); outRec_search = outRec_k; op_origin_1 = op_j; op_origin_2 = op_k; } if (outRec_parent != ParseFirstLeft(outRec_search->FirstLeft)) { // The two // holes do // not have // the same // parent, // do not // add them // simply // return! return false; } bool found = false; std::list> iList; auto range = dupeRec.equal_range(outRec_search->Idx); // Check for // direct // connection for (auto it = range.first; it != range.second;) { OutRec* itRec1 = GetOutRec(it->second.op1->Idx); OutRec* itRec2 = GetOutRec(it->second.op2->Idx); if (outRec_search->Idx != itRec1->Idx || outRec_search->Idx == itRec2->Idx) { it = dupeRec.erase(it); continue; } if (itRec2->Idx == outRec_origin->Idx) { found = true; if (op_origin_1->Pt != it->second.op2->Pt) { iList.emplace_back(outRec_search->Idx, it->second); break; } } ++it; } if (!found) { range = dupeRec.equal_range(outRec_search->Idx); std::set visited; visited.insert(outRec_search->Idx); // Check for // connection // through // chain of // other // intersections for (auto it = range.first; it != range.second && it != dupeRec.end() && it->first == outRec_search->Idx; ++it) { OutRec* itRec = GetOutRec(it->second.op2->Idx); if (itRec->Idx != outRec_search->Idx && op_origin_2->Pt != it->second.op2->Pt && (outRec_parent == itRec || outRec_parent == ParseFirstLeft(itRec->FirstLeft)) && FindIntersectLoop(dupeRec, iList, outRec_parent, outRec_origin->Idx, itRec->Idx, visited, op_origin_2, it->second.op2)) { found = true; iList.emplace_front(outRec_search->Idx, it->second); break; } } } if (!found) { OutPtIntersect intPt_origin = { op_origin_1, op_origin_2 }; OutPtIntersect intPt_search = { op_origin_2, op_origin_1 }; dupeRec.emplace(outRec_origin->Idx, intPt_origin); dupeRec.emplace(outRec_search->Idx, intPt_search); return false; } if (iList.empty()) { return false; } if (outRec_origin->IsHole) { for (auto& iRing : iList) { OutRec* outRec_itr = GetOutRec(iRing.first); if (!outRec_itr->IsHole) { // Make the hole the origin! OutPt* op1 = op_origin_1; op_origin_1 = iRing.second.op1; iRing.second.op1 = op1; OutPt* op2 = op_origin_2; op_origin_2 = iRing.second.op2; iRing.second.op2 = op2; iRing.first = outRec_origin->Idx; outRec_origin = outRec_itr; outRec_parent = outRec_origin; break; } } } // Switch OutPt* op_origin_1_next = op_origin_1->Next; OutPt* op_origin_2_next = op_origin_2->Next; op_origin_1->Next = op_origin_2_next; op_origin_2->Next = op_origin_1_next; op_origin_1_next->Prev = op_origin_2; op_origin_2_next->Prev = op_origin_1; for (auto iRing : iList) { OutPt* op_search_1 = iRing.second.op1; OutPt* op_search_2 = iRing.second.op2; OutPt* op_search_1_next = op_search_1->Next; OutPt* op_search_2_next = op_search_2->Next; op_search_1->Next = op_search_2_next; op_search_2->Next = op_search_1_next; op_search_1_next->Prev = op_search_2; op_search_2_next->Prev = op_search_1; } OutRec* outRec_new = CreateOutRec(); outRec_new->IsHole = false; if (outRec_origin->IsHole && (((Area(op_origin_1) < 0) ^ m_ReverseOutput) != 0)) { outRec_origin->Pts = op_origin_1; outRec_new->Pts = op_origin_2; } else { outRec_origin->Pts = op_origin_2; outRec_new->Pts = op_origin_1; } UpdateOutPtIdxs(*outRec_origin); UpdateOutPtIdxs(*outRec_new); outRec_origin->BottomPt = nullptr; std::list> move_list; for (auto iRing : iList) { OutRec* outRec_itr = GetOutRec(iRing.first); outRec_itr->Pts = nullptr; outRec_itr->BottomPt = nullptr; outRec_itr->Idx = outRec_origin->Idx; if (outRec_origin->IsHole) { outRec_itr->FirstLeft = ParseFirstLeft(outRec_origin->FirstLeft); } else { outRec_itr->FirstLeft = outRec_origin; } outRec_itr->IsHole = outRec_origin->IsHole; if (m_UsingPolyTree) { FixupFirstLefts3(outRec_itr, outRec_origin); } } if (outRec_origin->IsHole) { outRec_new->FirstLeft = outRec_origin; } else { outRec_new->FirstLeft = outRec_origin->FirstLeft; } if (m_UsingPolyTree) { if (outRec_origin->IsHole) { FixupFirstLefts2(outRec_new, outRec_origin); } else { FixupFirstLefts1(outRec_origin, outRec_new); } } for (auto iRing : iList) { auto range_itr = dupeRec.equal_range(iRing.first); if (range_itr.first != range_itr.second) { for (auto it = range_itr.first; it != range_itr.second; ++it) { OutRec* itRec = GetOutRec(it->second.op1->Idx); OutRec* itRec2 = GetOutRec(it->second.op2->Idx); if (itRec == itRec2) { continue; } OutRec* flRec; OutRec* flRec2; if (itRec->IsHole) { flRec = ParseFirstLeft(itRec->FirstLeft); } else { flRec = itRec; } if (itRec2->IsHole) { flRec2 = ParseFirstLeft(itRec2->FirstLeft); } else { flRec2 = itRec2; } if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { move_list.emplace_back(itRec->Idx, it->second); } } dupeRec.erase(iRing.first); } } auto range_itr = dupeRec.equal_range(outRec_origin->Idx); for (auto it = range_itr.first; it != range_itr.second;) { OutRec* itRec = GetOutRec(it->second.op1->Idx); OutRec* itRec2 = GetOutRec(it->second.op2->Idx); if (itRec == itRec2) { it = dupeRec.erase(it); continue; } OutRec* flRec; OutRec* flRec2; if (itRec->IsHole) { flRec = ParseFirstLeft(itRec->FirstLeft); } else { flRec = itRec; } if (itRec2->IsHole) { flRec2 = ParseFirstLeft(itRec2->FirstLeft); } else { flRec2 = itRec2; } if (itRec->Idx != outRec_origin->Idx) { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { move_list.emplace_back(itRec->Idx, it->second); } it = dupeRec.erase(it); } else { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { ++it; } else { it = dupeRec.erase(it); } } } if (!move_list.empty()) { dupeRec.insert(move_list.begin(), move_list.end()); } return true; } //----------------------------------------------------------------------------- void Clipper::DoSimplePolygons() { std::vector m_OutPts; { PolyOutList::size_type i = 0; while (i < m_PolyOuts.size()) { OutRec* outrec = m_PolyOuts[i++]; OutPt* op = outrec->Pts; if ((op == nullptr) || outrec->IsOpen) { continue; } do { m_OutPts.push_back(op); op = op->Next; } while (op != outrec->Pts); } } std::stable_sort(m_OutPts.begin(), m_OutPts.end(), SortOutPt); std::unordered_multimap dupeRec; dupeRec.reserve(m_PolyOuts.size()); std::size_t count = 0; for (std::size_t i = 1; i < m_OutPts.size(); ++i) { if (m_OutPts[i]->Pt == m_OutPts[i - 1]->Pt) { ++count; continue; } if (count > 0) { for (std::size_t j = (i - count - 1); j < i; ++j) { if (m_OutPts[j]->Idx < 0) { continue; } OutRec* outRec_j = GetOutRec(m_OutPts[j]->Idx); int idx_j = outRec_j->Idx; for (std::size_t k = j + 1; k < i; ++k) { if (m_OutPts[k]->Idx < 0) { continue; } OutRec* outRec_k = GetOutRec(m_OutPts[k]->Idx); int idx_k = outRec_k->Idx; if (idx_k == idx_j) { OutPt* op = m_OutPts[j]; OutPt* op2 = m_OutPts[k]; OutRec* outrec = outRec_j; if (op != op2 && op2->Next != op && op2->Prev != op) { // split the polygon into two ... OutPt* op3 = op->Prev; OutPt* op4 = op2->Prev; op->Prev = op4; op4->Next = op; op2->Prev = op3; op3->Next = op2; OutRec* outrec2 = CreateOutRec(); if (PointCount(op) > PointCount(op2)) { outrec->Pts = op; outrec2->Pts = op2; } else { outrec->Pts = op2; outrec2->Pts = op; } UpdateOutPtIdxs(*outrec); UpdateOutPtIdxs(*outrec2); if (Poly2ContainsPoly1(outrec2->Pts, outrec->Pts)) { // OutRec2 is contained by OutRec1 ... outrec2->IsHole = !outrec->IsHole; outrec2->FirstLeft = outrec; if (m_UsingPolyTree) { FixupFirstLefts2(outrec2, outrec); } auto range = dupeRec.equal_range(idx_j); std::list> move_list; for (auto it = range.first; it != range.second;) { OutRec* itRec = GetOutRec(it->second.op1->Idx); OutRec* itRec2 = GetOutRec(it->second.op2->Idx); OutRec* flRec; OutRec* flRec2; if (itRec->IsHole) { flRec = ParseFirstLeft(itRec->FirstLeft); } else { flRec = itRec; } if (itRec2->IsHole) { flRec2 = ParseFirstLeft(itRec2->FirstLeft); } else { flRec2 = itRec2; } if (itRec->Idx != idx_j) { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { move_list.emplace_back(itRec->Idx, it->second); } it = dupeRec.erase(it); } else { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { ++it; } else { it = dupeRec.erase(it); } } } if (!move_list.empty()) { dupeRec.insert(move_list.begin(), move_list.end()); } if (!outrec->IsHole) { OutPtIntersect intPt1 = { outrec->Pts, outrec2->Pts }; OutPtIntersect intPt2 = { outrec2->Pts, outrec->Pts }; dupeRec.emplace(outrec->Idx, intPt1); dupeRec.emplace(outrec2->Idx, intPt2); } } else if (Poly2ContainsPoly1(outrec->Pts, outrec2->Pts)) { // OutRec1 is contained by OutRec2 ... outrec2->IsHole = outrec->IsHole; outrec->IsHole = !outrec2->IsHole; outrec2->FirstLeft = outrec->FirstLeft; outrec->FirstLeft = outrec2; if (m_UsingPolyTree) { FixupFirstLefts2(outrec, outrec2); } auto range = dupeRec.equal_range(idx_j); std::list> move_list; for (auto it = range.first; it != range.second;) { OutRec* itRec = GetOutRec(it->second.op1->Idx); OutRec* itRec2 = GetOutRec(it->second.op2->Idx); OutRec* flRec; OutRec* flRec2; if (itRec->IsHole) { flRec = ParseFirstLeft(itRec->FirstLeft); } else { flRec = itRec; } if (itRec2->IsHole) { flRec2 = ParseFirstLeft(itRec2->FirstLeft); } else { flRec2 = itRec2; } if (itRec->Idx != idx_j) { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { move_list.emplace_back(itRec->Idx, it->second); } it = dupeRec.erase(it); } else { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { ++it; } else { it = dupeRec.erase(it); } } } if (!move_list.empty()) { dupeRec.insert(move_list.begin(), move_list.end()); } if (!outrec2->IsHole) { OutPtIntersect intPt1 = { outrec->Pts, outrec2->Pts }; OutPtIntersect intPt2 = { outrec2->Pts, outrec->Pts }; dupeRec.emplace(outrec->Idx, intPt1); dupeRec.emplace(outrec2->Idx, intPt2); } } else { // the 2 polygons are separate ... outrec2->IsHole = outrec->IsHole; outrec2->FirstLeft = outrec->FirstLeft; if (m_UsingPolyTree) { FixupFirstLefts1(outrec, outrec2); } auto range = dupeRec.equal_range(idx_j); std::list> move_list; for (auto it = range.first; it != range.second;) { OutRec* itRec = GetOutRec(it->second.op1->Idx); OutRec* itRec2 = GetOutRec(it->second.op2->Idx); OutRec* flRec; OutRec* flRec2; if (itRec->IsHole) { flRec = ParseFirstLeft(itRec->FirstLeft); } else { flRec = itRec; } if (itRec2->IsHole) { flRec2 = ParseFirstLeft(itRec2->FirstLeft); } else { flRec2 = itRec2; } if (itRec->Idx != idx_j) { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { move_list.emplace_back(itRec->Idx, it->second); } it = dupeRec.erase(it); } else { if ((itRec->IsHole || itRec2->IsHole) && (flRec == flRec2)) { ++it; } else { it = dupeRec.erase(it); } } } if (!move_list.empty()) { dupeRec.insert(move_list.begin(), move_list.end()); } if (outrec2->IsHole) { OutPtIntersect intPt1 = { outrec->Pts, outrec2->Pts }; OutPtIntersect intPt2 = { outrec2->Pts, outrec->Pts }; dupeRec.emplace(outrec->Idx, intPt1); dupeRec.emplace(outrec2->Idx, intPt2); } } outRec_j = GetOutRec(m_OutPts[j]->Idx); idx_j = outRec_j->Idx; } continue; } if (FixIntersects(dupeRec, m_OutPts[j], m_OutPts[k], outRec_j, outRec_k)) { outRec_j = GetOutRec(m_OutPts[j]->Idx); idx_j = outRec_j->Idx; } } } count = 0; } } } //------------------------------------------------------------------------------ void ReversePath(Path& p) { std::reverse(p.begin(), p.end()); } //------------------------------------------------------------------------------ void ReversePaths(Paths& p) { for (Paths::size_type i = 0; i < p.size(); ++i) { ReversePath(p[i]); } } //------------------------------------------------------------------------------ void SimplifyPolygon(const Path& in_poly, Paths& out_polys, PolyFillType fillType) { Clipper c; c.StrictlySimple(true); c.AddPath(in_poly, ptSubject, true); c.Execute(ctUnion, out_polys, fillType, fillType); } //------------------------------------------------------------------------------ void SimplifyPolygons(const Paths& in_polys, Paths& out_polys, PolyFillType fillType) { Clipper c; c.StrictlySimple(true); c.AddPaths(in_polys, ptSubject, true); c.Execute(ctUnion, out_polys, fillType, fillType); } //------------------------------------------------------------------------------ void SimplifyPolygons(Paths& polys, PolyFillType fillType) { SimplifyPolygons(polys, polys, fillType); } //------------------------------------------------------------------------------ inline double DistanceSqrd(const IntPoint& pt1, const IntPoint& pt2) { double Dx = (static_cast(pt1.x) - pt2.x); double dy = (static_cast(pt1.y) - pt2.y); return (Dx * Dx + dy * dy); } //------------------------------------------------------------------------------ double DistanceFromLineSqrd(const IntPoint& pt, const IntPoint& ln1, const IntPoint& ln2) { // The equation // of a line in // general form // (Ax + By + C // = 0) given 2 // points // (x¹,y¹) & // (x²,y²) is // ... //(y¹ - y²)x + //(x² - x¹)y + //(y² - y¹)x¹ - //(x² - x¹)y¹ = // 0 // A = (y¹ - // y²); B = (x² // - x¹); C = // (y² - y¹)x¹ - // (x² - x¹)y¹ // perpendicular // distance of // point (x³,y³) // = (Ax³ + By³ // + C)/Sqrt(A² // + B²) see // http://en.wikipedia.org/wiki/Perpendicular_distance auto A = double(ln1.y - ln2.y); auto B = double(ln2.x - ln1.x); double C = A * ln1.x + B * ln1.y; C = A * pt.x + B * pt.y - C; return (C * C) / (A * A + B * B); } //--------------------------------------------------------------------------- bool SlopesNearCollinear(const IntPoint& pt1, const IntPoint& pt2, const IntPoint& pt3, double distSqrd) { // this function // is more // accurate when // the point // that's // geometrically // between the // other 2 // points is the // one that's // tested for // distance. ie // makes it more // likely to // pick up // 'spikes' ... if (Abs(pt1.x - pt2.x) > Abs(pt1.y - pt2.y)) { if ((pt1.x > pt2.x) == (pt1.x < pt3.x)) { return DistanceFromLineSqrd(pt1, pt2, pt3) < distSqrd; } if ((pt2.x > pt1.x) == (pt2.x < pt3.x)) { return DistanceFromLineSqrd(pt2, pt1, pt3) < distSqrd; } return DistanceFromLineSqrd(pt3, pt1, pt2) < distSqrd; } if ((pt1.y > pt2.y) == (pt1.y < pt3.y)) { return DistanceFromLineSqrd(pt1, pt2, pt3) < distSqrd; } if ((pt2.y > pt1.y) == (pt2.y < pt3.y)) { return DistanceFromLineSqrd(pt2, pt1, pt3) < distSqrd; } return DistanceFromLineSqrd(pt3, pt1, pt2) < distSqrd; } //------------------------------------------------------------------------------ bool PointsAreClose(IntPoint pt1, IntPoint pt2, double distSqrd) { double Dx = static_cast(pt1.x) - pt2.x; double dy = static_cast(pt1.y) - pt2.y; return ((Dx * Dx) + (dy * dy) <= distSqrd); } //------------------------------------------------------------------------------ OutPt* ExcludeOp(OutPt* op) { OutPt* result = op->Prev; result->Next = op->Next; op->Next->Prev = result; result->Idx = 0; return result; } //------------------------------------------------------------------------------ void CleanPolygon(const Path& in_poly, Path& out_poly, double distance) { // distance // = // proximity // in // units/pixels // below // which // vertices // will // be // stripped. // Default // ~= // sqrt(2). size_t size = in_poly.size(); if (size == 0) { out_poly.clear(); return; } auto* outPts = new OutPt[size]; for (size_t i = 0; i < size; ++i) { outPts[i].Pt = in_poly[i]; outPts[i].Next = &outPts[(i + 1) % size]; outPts[i].Next->Prev = &outPts[i]; outPts[i].Idx = 0; } double distSqrd = distance * distance; OutPt* op = &outPts[0]; while (op->Idx == 0 && op->Next != op->Prev) { if (PointsAreClose(op->Pt, op->Prev->Pt, distSqrd)) { op = ExcludeOp(op); size--; } else if (PointsAreClose(op->Prev->Pt, op->Next->Pt, distSqrd)) { ExcludeOp(op->Next); op = ExcludeOp(op); size -= 2; } else if (SlopesNearCollinear(op->Prev->Pt, op->Pt, op->Next->Pt, distSqrd)) { op = ExcludeOp(op); size--; } else { op->Idx = 1; op = op->Next; } } if (size < 3) { size = 0; } out_poly.resize(size); for (size_t i = 0; i < size; ++i) { out_poly[i] = op->Pt; op = op->Next; } delete[] outPts; } //------------------------------------------------------------------------------ void CleanPolygon(Path& poly, double distance) { CleanPolygon(poly, poly, distance); } //------------------------------------------------------------------------------ void CleanPolygons(const Paths& in_polys, Paths& out_polys, double distance) { out_polys.resize(in_polys.size()); for (Paths::size_type i = 0; i < in_polys.size(); ++i) { CleanPolygon(in_polys[i], out_polys[i], distance); } } //------------------------------------------------------------------------------ void CleanPolygons(Paths& polys, double distance) { CleanPolygons(polys, polys, distance); } //------------------------------------------------------------------------------ void Minkowski(const Path& poly, const Path& path, Paths& solution, bool isSum, bool isClosed) { int delta = (isClosed ? 1 : 0); size_t polyCnt = poly.size(); size_t pathCnt = path.size(); Paths pp; pp.reserve(pathCnt); if (isSum) { for (size_t i = 0; i < pathCnt; ++i) { Path p; p.reserve(polyCnt); for (size_t j = 0; j < poly.size(); ++j) { p.push_back(IntPoint(path[i].x + poly[j].x, path[i].y + poly[j].y)); } pp.push_back(p); } } else { for (size_t i = 0; i < pathCnt; ++i) { Path p; p.reserve(polyCnt); for (size_t j = 0; j < poly.size(); ++j) { p.push_back(IntPoint(path[i].x - poly[j].x, path[i].y - poly[j].y)); } pp.push_back(p); } } solution.clear(); solution.reserve((pathCnt + delta) * (polyCnt + 1)); for (size_t i = 0; i < pathCnt - 1 + delta; ++i) { for (size_t j = 0; j < polyCnt; ++j) { Path quad; quad.reserve(4); quad.push_back(pp[i % pathCnt][j % polyCnt]); quad.push_back(pp[(i + 1) % pathCnt][j % polyCnt]); quad.push_back(pp[(i + 1) % pathCnt][(j + 1) % polyCnt]); quad.push_back(pp[i % pathCnt][(j + 1) % polyCnt]); if (!Orientation(quad)) { ReversePath(quad); } solution.push_back(quad); } } } //------------------------------------------------------------------------------ void MinkowskiSum(const Path& pattern, const Path& path, Paths& solution, bool pathIsClosed) { Minkowski(pattern, path, solution, true, pathIsClosed); Clipper c; c.AddPaths(solution, ptSubject, true); c.Execute(ctUnion, solution, pftNonZero, pftNonZero); } //------------------------------------------------------------------------------ void TranslatePath(const Path& input, Path& output, const IntPoint delta) { // precondition: // input // != // output output.resize(input.size()); for (size_t i = 0; i < input.size(); ++i) { output[i] = IntPoint(input[i].x + delta.x, input[i].y + delta.y); } } //------------------------------------------------------------------------------ void MinkowskiSum(const Path& pattern, const Paths& paths, Paths& solution, bool pathIsClosed) { Clipper c; for (size_t i = 0; i < paths.size(); ++i) { Paths tmp; Minkowski(pattern, paths[i], tmp, true, pathIsClosed); c.AddPaths(tmp, ptSubject, true); if (pathIsClosed) { Path tmp2; TranslatePath(paths[i], tmp2, pattern[0]); c.AddPath(tmp2, ptClip, true); } } c.Execute(ctUnion, solution, pftNonZero, pftNonZero); } //------------------------------------------------------------------------------ void MinkowskiDiff(const Path& poly1, const Path& poly2, Paths& solution) { Minkowski(poly1, poly2, solution, false, true); Clipper c; c.AddPaths(solution, ptSubject, true); c.Execute(ctUnion, solution, pftNonZero, pftNonZero); } //------------------------------------------------------------------------------ enum NodeType { ntAny, ntOpen, ntClosed }; void AddPolyNodeToPaths(const PolyNode& polynode, NodeType nodetype, Paths& paths) { bool match = true; if (nodetype == ntClosed) { match = !polynode.IsOpen(); } else if (nodetype == ntOpen) { return; } if (!polynode.Contour.empty() && match) { paths.push_back(polynode.Contour); } for (int i = 0; i < polynode.ChildCount(); ++i) { AddPolyNodeToPaths(*polynode.Childs[i], nodetype, paths); } } //------------------------------------------------------------------------------ void PolyTreeToPaths(const PolyTree& polytree, Paths& paths) { paths.resize(0); paths.reserve(polytree.Total()); AddPolyNodeToPaths(polytree, ntAny, paths); } //------------------------------------------------------------------------------ void ClosedPathsFromPolyTree(const PolyTree& polytree, Paths& paths) { paths.resize(0); paths.reserve(polytree.Total()); AddPolyNodeToPaths(polytree, ntClosed, paths); } //------------------------------------------------------------------------------ void OpenPathsFromPolyTree(PolyTree& polytree, Paths& paths) { paths.resize(0); paths.reserve(polytree.Total()); // Open // paths // are // top // level // only, // so // ... for (int i = 0; i < polytree.ChildCount(); ++i) { if (polytree.Childs[i]->IsOpen()) { paths.push_back(polytree.Childs[i]->Contour); } } } //------------------------------------------------------------------------------ std::ostream& operator<<(std::ostream& s, const IntPoint& p) { s << "(" << p.x << "," << p.y << ")"; return s; } //------------------------------------------------------------------------------ std::ostream& operator<<(std::ostream& s, const Path& p) { if (p.empty()) { return s; } Path::size_type last = p.size() - 1; for (Path::size_type i = 0; i < last; i++) { s << "(" << p[i].x << "," << p[i].y << "), "; } s << "(" << p[last].x << "," << p[last].y << ")\n"; return s; } //------------------------------------------------------------------------------ std::ostream& operator<<(std::ostream& s, const Paths& p) { for (Paths::size_type i = 0; i < p.size(); i++) { s << p[i]; } s << "\n"; return s; } //------------------------------------------------------------------------------ } // namespace ClipperLib // ClipperLib #pragma GCC diagnostic pop wagyu-0.5.0/bench/angus.hpp000066400000000000000000000413511360766232600155740ustar00rootroot00000000000000/******************************************************************************* * * * Author : Angus Johnson * * Version : 6.4.0 * * Date : 2 July 2015 * * Website : http://www.angusj.com * * Copyright : Angus Johnson 2010-2015 * * * * License: * * Use, modification & distribution is subject to Boost Software License Ver 1. * * http://www.boost.org/LICENSE_1_0.txt * * * * Attributions: * * The code in this library is an extension of Bala Vatti's clipping algorithm: * * "A generic solution to polygon clipping" * * Communications of the ACM, Vol 35, Issue 7 (July 1992) pp 56-63. * * http://portal.acm.org/citation.cfm?id=129906 * * * * Computer graphics and geometric modeling: implementation and algorithms * * By Max K. Agoston * * Springer; 1 edition (January 4, 2005) * * http://books.google.com/books?q=vatti+clipping+agoston * * * * See also: * * "Polygon Offsetting by Computing Winding Numbers" * * Paper no. DETC2005-85513 pp. 565-575 * * ASME 2005 International Design Engineering Technical Conferences * * and Computers and Information in Engineering Conference (IDETC/CIE2005) * * September 24-28, 2005 , Long Beach, California, USA * * http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf * * * *******************************************************************************/ #ifndef clipper_hpp #define clipper_hpp #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Wold-style-cast" #pragma GCC diagnostic ignored "-Weffc++" #define CLIPPER_INTPOINT_IMPL mapbox::geometry::point #define CLIPPER_PATH_IMPL mapbox::geometry::linear_ring #define CLIPPER_PATHS_IMPL mapbox::geometry::polygon #define CLIPPER_IMPL_INCLUDE "mapbox/geometry/polygon.hpp" #define CLIPPER_VERSION "6.2.6" // use_int32: When enabled 32bit ints are used instead of 64bit ints. This // improve performance but coordinate values are limited to the range +/- 46340 //#define use_int32 // use_xyz: adds a Z member to IntPoint. Adds a minor cost to perfomance. //#define use_xyz // use_lines: Enables line clipping. Adds a very minor cost to performance. //#define use_lines // use_deprecated: Enables temporary support for the obsolete functions //#define use_deprecated #include #include #include #include #include #include #include #include #include #include #if defined(CLIPPER_IMPL_INCLUDE) #include CLIPPER_IMPL_INCLUDE #endif namespace ClipperLib { enum ClipType { ctIntersection, ctUnion, ctDifference, ctXor }; enum PolyType { ptSubject, ptClip }; // By far the most widely used winding rules for polygon filling are // EvenOdd & NonZero (GDI, GDI+, XLib, OpenGL, Cairo, AGG, Quartz, SVG, Gr32) // Others rules include Positive, Negative and ABS_GTR_EQ_TWO (only in OpenGL) // see http://glprogramming.com/red/chapter11.html enum PolyFillType { pftEvenOdd, pftNonZero, pftPositive, pftNegative }; #ifdef use_int32 typedef int cInt; static cInt const loRange = 0x7FFF; static cInt const hiRange = 0x7FFF; #else typedef std::int64_t cInt; static cInt const loRange = 0x3FFFFFFF; static cInt const hiRange = 0x3FFFFFFFFFFFFFFFLL; typedef signed long long long64; // used by Int128 class typedef unsigned long long ulong64; #endif #if defined(CLIPPER_INTPOINT_IMPL) typedef CLIPPER_INTPOINT_IMPL IntPoint; #else struct IntPoint { cInt x; cInt y; #ifdef use_xyz cInt Z; IntPoint(cInt _x = 0, cInt _y = 0, cInt z = 0) : x(_x), y(_y), Z(z){}; #else IntPoint(cInt _x = 0, cInt _y = 0) : x(_x), y(_y){}; #endif friend inline bool operator==(const IntPoint& a, const IntPoint& b) { return a.x == b.x && a.y == b.y; } friend inline bool operator!=(const IntPoint& a, const IntPoint& b) { return a.x != b.x || a.y != b.y; } }; #endif //------------------------------------------------------------------------------ #if defined(CLIPPER_PATH_IMPL) typedef CLIPPER_PATH_IMPL Path; #else typedef std::vector Path; #endif #if defined(CLIPPER_PATHS_IMPL) typedef CLIPPER_PATHS_IMPL Paths; #else typedef std::vector Paths; #endif inline Path& operator<<(Path& poly, const IntPoint& p) { poly.push_back(p); return poly; } inline Paths& operator<<(Paths& polys, const Path& p) { polys.push_back(p); return polys; } std::ostream& operator<<(std::ostream& s, const IntPoint& p); std::ostream& operator<<(std::ostream& s, const Path& p); std::ostream& operator<<(std::ostream& s, const Paths& p); struct DoublePoint { double x; double y; DoublePoint(double _x = 0, double _y = 0) : x(_x), y(_y) { } DoublePoint(IntPoint ip) : x((double)ip.x), y((double)ip.y) { } }; //------------------------------------------------------------------------------ #ifdef use_xyz typedef void (*ZFillCallback)(IntPoint& e1bot, IntPoint& e1top, IntPoint& e2bot, IntPoint& e2top, IntPoint& pt); #endif enum InitOptions { ioReverseSolution = 1, ioStrictlySimple = 2, ioPreserveCollinear = 4 }; enum JoinType { jtSquare, jtRound, jtMiter }; enum EndType { etClosedPolygon, etClosedLine, etOpenButt, etOpenSquare, etOpenRound }; class PolyNode; typedef std::vector PolyNodes; class PolyNode { public: PolyNode(); virtual ~PolyNode(){}; Path Contour; PolyNodes Childs; PolyNode* Parent; PolyNode* GetNext() const; bool IsHole() const; bool IsOpen() const; int ChildCount() const; private: unsigned Index; // node index in Parent.Childs bool m_IsOpen; JoinType m_jointype; EndType m_endtype; PolyNode* GetNextSiblingUp() const; void AddChild(PolyNode& child); friend class Clipper; // to access Index friend class ClipperOffset; }; class PolyTree : public PolyNode { public: ~PolyTree() { Clear(); }; PolyNode* GetFirst() const; void Clear(); int Total() const; private: PolyNodes AllNodes; friend class Clipper; // to access AllNodes }; bool Orientation(const Path& poly); double Area(const Path& poly); int PointInPolygon(const IntPoint& pt, const Path& path); void SimplifyPolygon(const Path& in_poly, Paths& out_polys, PolyFillType fillType = pftEvenOdd); void SimplifyPolygons(const Paths& in_polys, Paths& out_polys, PolyFillType fillType = pftEvenOdd); void SimplifyPolygons(Paths& polys, PolyFillType fillType = pftEvenOdd); void CleanPolygon(const Path& in_poly, Path& out_poly, double distance = 1.415); void CleanPolygon(Path& poly, double distance = 1.415); void CleanPolygons(const Paths& in_polys, Paths& out_polys, double distance = 1.415); void CleanPolygons(Paths& polys, double distance = 1.415); void MinkowskiSum(const Path& pattern, const Path& path, Paths& solution, bool pathIsClosed); void MinkowskiSum(const Path& pattern, const Paths& paths, Paths& solution, bool pathIsClosed); void MinkowskiDiff(const Path& poly1, const Path& poly2, Paths& solution); void PolyTreeToPaths(const PolyTree& polytree, Paths& paths); void ClosedPathsFromPolyTree(const PolyTree& polytree, Paths& paths); void OpenPathsFromPolyTree(PolyTree& polytree, Paths& paths); void ReversePath(Path& p); void ReversePaths(Paths& p); struct IntRect { cInt left; cInt top; cInt right; cInt bottom; }; // enums that are used internally ... enum EdgeSide { esLeft = 1, esRight = 2 }; // forward declarations (for stuff used internally) ... struct TEdge; struct IntersectNode; struct LocalMinimum; struct OutPt; struct OutRec; struct Join; struct OutPtIntersect; typedef std::vector PolyOutList; typedef std::vector EdgeList; typedef std::vector JoinList; typedef std::vector IntersectList; //------------------------------------------------------------------------------ // ClipperBase is the ancestor to the Clipper class. It should not be // instantiated directly. This class simply abstracts the conversion of sets of // polygon coordinates into edge objects that are stored in a LocalMinima list. class ClipperBase { public: ClipperBase(); virtual ~ClipperBase(); virtual bool AddPath(const Path& pg, PolyType PolyTyp, bool Closed); bool AddPaths(const Paths& ppg, PolyType PolyTyp, bool Closed); virtual void Clear(); IntRect GetBounds(); bool PreserveCollinear() { return m_PreserveCollinear; }; void PreserveCollinear(bool value) { m_PreserveCollinear = value; }; protected: void DisposeLocalMinimaList(); TEdge* AddBoundsToLML(TEdge* e, bool IsClosed); virtual void Reset(); TEdge* ProcessBound(TEdge* E, bool NextIsForward); void InsertScanbeam(const cInt Y); bool PopScanbeam(cInt& Y); bool LocalMinimaPending(); bool PopLocalMinima(cInt Y, const LocalMinimum*& locMin); OutRec* CreateOutRec(); void DisposeAllOutRecs(); void DisposeOutRec(PolyOutList::size_type index); void SwapPositionsInAEL(TEdge* Edge1, TEdge* Edge2); void DeleteFromAEL(TEdge* e); void UpdateEdgeIntoAEL(TEdge*& e); typedef std::vector MinimaList; MinimaList::iterator m_CurrentLM; MinimaList m_MinimaList; bool m_UseFullRange; EdgeList m_edges; bool m_PreserveCollinear{}; bool m_HasOpenPaths{}; PolyOutList m_PolyOuts; TEdge* m_ActiveEdges{}; typedef std::priority_queue ScanbeamList; ScanbeamList m_Scanbeam; }; //------------------------------------------------------------------------------ class Clipper : public virtual ClipperBase { public: Clipper(int initOptions = 0); bool Execute(ClipType clipType, Paths& solution, PolyFillType fillType = pftEvenOdd); bool Execute(ClipType clipType, Paths& solution, PolyFillType subjFillType, PolyFillType clipFillType); bool Execute(ClipType clipType, PolyTree& polytree, PolyFillType fillType = pftEvenOdd); bool Execute(ClipType clipType, PolyTree& polytree, PolyFillType subjFillType, PolyFillType clipFillType); bool ReverseSolution() { return m_ReverseOutput; }; void ReverseSolution(bool value) { m_ReverseOutput = value; }; bool StrictlySimple() { return m_StrictSimple; }; void StrictlySimple(bool value) { m_StrictSimple = value; }; // set the callback function for z value filling on intersections (otherwise Z is 0) #ifdef use_xyz void ZFillFunction(ZFillCallback zFillFunc); #endif protected: virtual bool ExecuteInternal(); private: JoinList m_Joins; JoinList m_GhostJoins; IntersectList m_IntersectList; ClipType m_ClipType; typedef std::list MaximaList; MaximaList m_Maxima; TEdge* m_SortedEdges{}; bool m_ExecuteLocked; PolyFillType m_ClipFillType; PolyFillType m_SubjFillType; bool m_ReverseOutput; bool m_UsingPolyTree{}; bool m_StrictSimple; #ifdef use_xyz ZFillCallback m_ZFill; // custom callback #endif void SetWindingCount(TEdge& edge); bool IsEvenOddFillType(const TEdge& edge) const; bool IsEvenOddAltFillType(const TEdge& edge) const; void InsertLocalMinimaIntoAEL(const cInt botY); void InsertEdgeIntoAEL(TEdge* edge, TEdge* startEdge); void AddEdgeToSEL(TEdge* edge); bool PopEdgeFromSEL(TEdge*& edge); void CopyAELToSEL(); void DeleteFromSEL(TEdge* e); void SwapPositionsInSEL(TEdge* Edge1, TEdge* Edge2); bool IsContributing(const TEdge& edge) const; bool IsTopHorz(const cInt XPos); void DoMaxima(TEdge* e); void ProcessHorizontals(); void ProcessHorizontal(TEdge* horzEdge); void AddLocalMaxPoly(TEdge* e1, TEdge* e2, const IntPoint& Pt); OutPt* AddLocalMinPoly(TEdge* e1, TEdge* e2, const IntPoint& Pt); OutRec* GetOutRec(int Idx); void AppendPolygon(TEdge* e1, TEdge* e2); void IntersectEdges(TEdge* e1, TEdge* e2, IntPoint& Pt); OutPt* AddOutPt(TEdge* e, const IntPoint& pt); OutPt* GetLastOutPt(TEdge* e); bool ProcessIntersections(const cInt topY); void BuildIntersectList(const cInt topY); void ProcessIntersectList(); void ProcessEdgesAtTopOfScanbeam(const cInt topY); void BuildResult(Paths& polys); void BuildResult2(PolyTree& polytree); void SetHoleState(TEdge* e, OutRec* outrec); void DisposeIntersectNodes(); bool FixupIntersectionOrder(); void FixupOutPolygon(OutRec& outrec); void FixupOutPolyline(OutRec& outrec); bool IsHole(TEdge* e); bool FindOwnerFromSplitRecs(OutRec& outRec, OutRec*& currOrfl); void FixHoleLinkage(OutRec& outrec); void AddJoin(OutPt* op1, OutPt* op2, const IntPoint OffPt); void ClearJoins(); void ClearGhostJoins(); void AddGhostJoin(OutPt* op, const IntPoint OffPt); bool JoinPoints(Join* j, OutRec* outRec1, OutRec* outRec2); void JoinCommonEdges(); void DoSimplePolygons(); bool FindIntersectLoop(std::unordered_multimap& dupeRec, std::list>& iList, OutRec* outRec_parent, int idx_origin, int idx_search, std::set& visited, OutPt* orig_pt, OutPt* prev_pt); bool FixIntersects(std::unordered_multimap& dupeRec, OutPt* op_j, OutPt* op_k, OutRec* outRec_j, OutRec* outRec_k); void FixupFirstLefts1(OutRec* OldOutRec, OutRec* NewOutRec); void FixupFirstLefts2(OutRec* InnerOutRec, OutRec* OuterOutRec); void FixupFirstLefts3(OutRec* OldOutRec, OutRec* NewOutRec); #ifdef use_xyz void SetZ(IntPoint& pt, TEdge& e1, TEdge& e2); #endif }; //------------------------------------------------------------------------------ class ClipperOffset { public: ClipperOffset(double miterLimit = 2.0, double arcTolerance = 0.25); ~ClipperOffset(); void AddPath(const Path& path, JoinType joinType, EndType endType); void AddPaths(const Paths& paths, JoinType joinType, EndType endType); void Execute(Paths& solution, double delta); void Execute(PolyTree& solution, double delta); void Clear(); double MiterLimit; double ArcTolerance; private: Paths m_destPolys; Path m_srcPoly; Path m_destPoly; std::vector m_normals; double m_delta{}, m_sinA{}, m_sin{}, m_cos{}; double m_miterLim{}, m_StepsPerRad{}; IntPoint m_lowest; PolyNode m_polyNodes; void FixOrientations(); void DoOffset(double delta); void OffsetPoint(int j, int& k, JoinType jointype); void DoSquare(int j, int k); void DoMiter(int j, int k, double r); void DoRound(int j, int k); }; //------------------------------------------------------------------------------ class clipperException : public std::exception { public: clipperException(const char* description) : m_descr(description) { } virtual ~clipperException() throw() { } virtual const char* what() const throw() { return m_descr.c_str(); } private: std::string m_descr; }; //------------------------------------------------------------------------------ } // namespace ClipperLib #pragma GCC diagnostic pop #endif // clipper_hpp wagyu-0.5.0/bench/fixtures.hpp000066400000000000000000000275271360766232600163410ustar00rootroot00000000000000#pragma once #include "../tests/util/fixture_utils.hpp" #include "angus.hpp" #include #include #include auto BM_wagyu_fixture_union = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { mapbox::geometry::wagyu::wagyu clipper; clipper.add_polygon(poly_subject, mapbox::geometry::wagyu::polygon_type_subject); clipper.add_polygon(poly_clip, mapbox::geometry::wagyu::polygon_type_clip); mapbox::geometry::multi_polygon solution; clipper.execute(mapbox::geometry::wagyu::clip_type_union, solution, mapbox::geometry::wagyu::fill_type_even_odd, mapbox::geometry::wagyu::fill_type_even_odd); } }; auto BM_wagyu_fixture_intersection = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { mapbox::geometry::wagyu::wagyu clipper; clipper.add_polygon(poly_subject, mapbox::geometry::wagyu::polygon_type_subject); clipper.add_polygon(poly_clip, mapbox::geometry::wagyu::polygon_type_clip); mapbox::geometry::multi_polygon solution; clipper.execute(mapbox::geometry::wagyu::clip_type_intersection, solution, mapbox::geometry::wagyu::fill_type_even_odd, mapbox::geometry::wagyu::fill_type_even_odd); } }; auto BM_wagyu_fixture_difference = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { mapbox::geometry::wagyu::wagyu clipper; clipper.add_polygon(poly_subject, mapbox::geometry::wagyu::polygon_type_subject); clipper.add_polygon(poly_clip, mapbox::geometry::wagyu::polygon_type_clip); mapbox::geometry::multi_polygon solution; clipper.execute(mapbox::geometry::wagyu::clip_type_difference, solution, mapbox::geometry::wagyu::fill_type_even_odd, mapbox::geometry::wagyu::fill_type_even_odd); } }; auto BM_wagyu_fixture_x_or = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { mapbox::geometry::wagyu::wagyu clipper; clipper.add_polygon(poly_subject, mapbox::geometry::wagyu::polygon_type_subject); clipper.add_polygon(poly_clip, mapbox::geometry::wagyu::polygon_type_clip); mapbox::geometry::multi_polygon solution; clipper.execute(mapbox::geometry::wagyu::clip_type_x_or, solution, mapbox::geometry::wagyu::fill_type_even_odd, mapbox::geometry::wagyu::fill_type_even_odd); } }; inline void process_polynode_branch(ClipperLib::PolyNode* polynode, mapbox::geometry::multi_polygon& mp) { mapbox::geometry::polygon polygon; polygon.push_back(std::move(polynode->Contour)); if (polygon.back().size() > 2) // Throw out invalid polygons { if (polygon.back().back() != polygon.back().front()) { polygon.back().push_back(polygon.back().front()); } double outer_area = ClipperLib::Area(polygon.back()); if (outer_area > 0) { std::reverse(polygon.back().begin(), polygon.back().end()); } // children of exterior ring are always interior rings for (auto* ring : polynode->Childs) { if (ring->Contour.size() < 3) { continue; // Throw out invalid holes } double inner_area = ClipperLib::Area(ring->Contour); if (inner_area < 0) { std::reverse(ring->Contour.begin(), ring->Contour.end()); } polygon.push_back(std::move(ring->Contour)); if (polygon.back().back() != polygon.back().front()) { polygon.back().push_back(polygon.back().front()); } } mp.push_back(std::move(polygon)); } for (auto* ring : polynode->Childs) { for (auto* sub_ring : ring->Childs) { process_polynode_branch(sub_ring, mp); } } } auto BM_angus_fixture_union = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { ClipperLib::Clipper clipper; clipper.StrictlySimple(true); for (auto& r : poly_subject) { // ClipperLib::CleanPolygon(r, 1.415); clipper.AddPath(r, ClipperLib::ptSubject, true); } for (auto& r : poly_clip) { clipper.AddPath(r, ClipperLib::ptClip, true); } ClipperLib::PolyTree polygons; clipper.Execute(ClipperLib::ctUnion, polygons, ClipperLib::pftEvenOdd, ClipperLib::pftEvenOdd); clipper.Clear(); mapbox::geometry::multi_polygon solution; for (auto* polynode : polygons.Childs) { process_polynode_branch(polynode, solution); } } }; auto BM_angus_fixture_intersection = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { ClipperLib::Clipper clipper; clipper.StrictlySimple(true); for (auto& r : poly_subject) { // ClipperLib::CleanPolygon(r, 1.415); clipper.AddPath(r, ClipperLib::ptSubject, true); } for (auto& r : poly_clip) { clipper.AddPath(r, ClipperLib::ptClip, true); } ClipperLib::PolyTree polygons; clipper.Execute(ClipperLib::ctIntersection, polygons, ClipperLib::pftEvenOdd, ClipperLib::pftEvenOdd); clipper.Clear(); mapbox::geometry::multi_polygon solution; for (auto* polynode : polygons.Childs) { process_polynode_branch(polynode, solution); } } }; auto BM_angus_fixture_difference = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { ClipperLib::Clipper clipper; clipper.StrictlySimple(true); for (auto& r : poly_subject) { // ClipperLib::CleanPolygon(r, 1.415); clipper.AddPath(r, ClipperLib::ptSubject, true); } for (auto& r : poly_clip) { clipper.AddPath(r, ClipperLib::ptClip, true); } ClipperLib::PolyTree polygons; clipper.Execute(ClipperLib::ctDifference, polygons, ClipperLib::pftEvenOdd, ClipperLib::pftEvenOdd); clipper.Clear(); mapbox::geometry::multi_polygon solution; for (auto* polynode : polygons.Childs) { process_polynode_branch(polynode, solution); } } }; auto BM_angus_fixture_x_or = [](benchmark::State& state, std::string subject_filename, std::string clip_filename) { auto poly_subject = fixture_file_to_polygon(subject_filename.c_str()); auto poly_clip = fixture_file_to_polygon(clip_filename.c_str()); while (state.KeepRunning()) { ClipperLib::Clipper clipper; clipper.StrictlySimple(true); for (auto& r : poly_subject) { // ClipperLib::CleanPolygon(r, 1.415); clipper.AddPath(r, ClipperLib::ptSubject, true); } for (auto& r : poly_clip) { clipper.AddPath(r, ClipperLib::ptClip, true); } ClipperLib::PolyTree polygons; clipper.Execute(ClipperLib::ctXor, polygons, ClipperLib::pftEvenOdd, ClipperLib::pftEvenOdd); clipper.Clear(); mapbox::geometry::multi_polygon solution; for (auto* polynode : polygons.Childs) { process_polynode_branch(polynode, solution); } } }; inline void register_fixtures() { boost::filesystem::path fixture_directory("./tests/output-polyjson"); boost::filesystem::path clip_file("./tests/fixtures/clip-clockwise-square.json"); for (auto subject : boost::filesystem::directory_iterator(fixture_directory)) { if (!boost::filesystem::is_regular_file(subject)) { continue; } std::string union_name = std::string("f/") + subject.path().filename().string() + std::string("/union/wagyu"); std::string union_name2 = std::string("f/") + subject.path().filename().string() + std::string("/union/angus"); std::string intersection_name = std::string("f/") + subject.path().filename().string() + std::string("/intersection/wagyu"); std::string intersection_name2 = std::string("f/") + subject.path().filename().string() + std::string("/intersection/angus"); std::string difference_name = std::string("f/") + subject.path().filename().string() + std::string("/difference/wagyu"); std::string difference_name2 = std::string("f/") + subject.path().filename().string() + std::string("/difference/angus"); std::string x_or_name = std::string("f/") + subject.path().filename().string() + std::string("/x_or/wagyu"); std::string x_or_name2 = std::string("f/") + subject.path().filename().string() + std::string("/x_or/angus"); benchmark::RegisterBenchmark(union_name.c_str(), BM_wagyu_fixture_union, subject.path().native(), clip_file.native()); benchmark::RegisterBenchmark(union_name2.c_str(), BM_angus_fixture_union, subject.path().native(), clip_file.native()); benchmark::RegisterBenchmark(intersection_name.c_str(), BM_wagyu_fixture_intersection, subject.path().native(), clip_file.native()); benchmark::RegisterBenchmark(intersection_name2.c_str(), BM_angus_fixture_intersection, subject.path().native(), clip_file.native()); benchmark::RegisterBenchmark(difference_name.c_str(), BM_wagyu_fixture_difference, subject.path().native(), clip_file.native()); benchmark::RegisterBenchmark(difference_name2.c_str(), BM_angus_fixture_difference, subject.path().native(), clip_file.native()); benchmark::RegisterBenchmark(x_or_name.c_str(), BM_wagyu_fixture_x_or, subject.path().native(), clip_file.native()); benchmark::RegisterBenchmark(x_or_name2.c_str(), BM_angus_fixture_x_or, subject.path().native(), clip_file.native()); } } wagyu-0.5.0/bench/run.cpp000066400000000000000000000003301360766232600152460ustar00rootroot00000000000000#include "fixtures.hpp" #include int main(int argc, char* argv[]) { register_fixtures(); benchmark::Initialize(&argc, argv); benchmark::RunSpecifiedBenchmarks(); return 0; } wagyu-0.5.0/cmake/000077500000000000000000000000001360766232600137435ustar00rootroot00000000000000wagyu-0.5.0/cmake/mason.cmake000066400000000000000000000242551360766232600160720ustar00rootroot00000000000000string(RANDOM LENGTH 16 MASON_INVOCATION) # Directory where Mason packages are located; typically ends with mason_packages if (NOT MASON_PACKAGE_DIR) set(MASON_PACKAGE_DIR "${CMAKE_SOURCE_DIR}/mason_packages") endif() # URL prefix of where packages are located. if (NOT MASON_REPOSITORY) set(MASON_REPOSITORY "https://mason-binaries.s3.amazonaws.com") endif() # Path to Mason executable if (NOT MASON_COMMAND) set(MASON_COMMAND "${CMAKE_SOURCE_DIR}/.mason/mason") endif() # Determine platform # we call uname -s manually here since # CMAKE_HOST_SYSTEM_NAME will not be defined before the project() call execute_process( COMMAND uname -s OUTPUT_VARIABLE UNAME_S OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT MASON_PLATFORM) if (UNAME_S STREQUAL "Darwin") set(MASON_PLATFORM "macos") else() set(MASON_PLATFORM "linux") endif() endif() # Determine platform version string if(MASON_PLATFORM STREQUAL "ios") set(MASON_PLATFORM_VERSION "8.0") # Deployment target version elseif(MASON_PLATFORM STREQUAL "android") if (ANDROID_ABI STREQUAL "armeabi") set(MASON_PLATFORM_VERSION "arm-v5-9") elseif(ANDROID_ABI STREQUAL "arm64-v8a") set(MASON_PLATFORM_VERSION "arm-v8-21") elseif(ANDROID_ABI STREQUAL "x86") set(MASON_PLATFORM_VERSION "x86-9") elseif(ANDROID_ABI STREQUAL "x86_64") set(MASON_PLATFORM_VERSION "x86-64-21") elseif(ANDROID_ABI STREQUAL "mips") set(MASON_PLATFORM_VERSION "mips-9") elseif(ANDROID_ABI STREQUAL "mips64") set(MASON_PLATFORM_VERSION "mips64-21") else() set(MASON_PLATFORM_VERSION "arm-v7-9") endif() elseif(NOT MASON_PLATFORM_VERSION) execute_process( COMMAND uname -m OUTPUT_VARIABLE MASON_PLATFORM_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) endif() if(MASON_PLATFORM STREQUAL "macos") set(MASON_PLATFORM "osx") endif() set(ENV{MASON_PLATFORM} "${MASON_PLATFORM}") set(ENV{MASON_PLATFORM_VERSION} "${MASON_PLATFORM_VERSION}") include(CMakeParseArguments) function(mason_use _PACKAGE) if(NOT _PACKAGE) message(FATAL_ERROR "[Mason] No package name given") endif() cmake_parse_arguments("" "HEADER_ONLY" "VERSION" "" ${ARGN}) if(_UNPARSED_ARGUMENTS) message(FATAL_ERROR "[Mason] mason_use() called with unrecognized arguments: ${_UNPARSED_ARGUMENTS}") endif() if(NOT _VERSION) message(FATAL_ERROR "[Mason] Specifying a version is required") endif() if(MASON_PACKAGE_${_PACKAGE}_INVOCATION STREQUAL "${MASON_INVOCATION}") # Check that the previous invocation of mason_use didn't select another version of this package if(NOT MASON_PACKAGE_${_PACKAGE}_VERSION STREQUAL ${_VERSION}) message(FATAL_ERROR "[Mason] Already using ${_PACKAGE} ${MASON_PACKAGE_${_PACKAGE}_VERSION}. Cannot select version ${_VERSION}.") endif() else() if(_HEADER_ONLY) set(_PLATFORM_ID "headers") else() set(_PLATFORM_ID "${MASON_PLATFORM}-${MASON_PLATFORM_VERSION}") endif() set(_SLUG "${_PLATFORM_ID}/${_PACKAGE}/${_VERSION}") set(_INSTALL_PATH "${MASON_PACKAGE_DIR}/${_SLUG}") file(RELATIVE_PATH _INSTALL_PATH_RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${_INSTALL_PATH}") if(NOT EXISTS "${_INSTALL_PATH}") set(_CACHE_PATH "${MASON_PACKAGE_DIR}/.binaries/${_SLUG}.tar.gz") if (NOT EXISTS "${_CACHE_PATH}") # Download the package set(_URL "${MASON_REPOSITORY}/${_SLUG}.tar.gz") message(STATUS "[Mason] Downloading package ${_URL}...") set(_FAILED) set(_ERROR) # Note: some CMake versions are compiled without SSL support get_filename_component(_CACHE_DIR "${_CACHE_PATH}" DIRECTORY) file(MAKE_DIRECTORY "${_CACHE_DIR}") execute_process( COMMAND curl --retry 3 -s -f -S -L "${_URL}" -o "${_CACHE_PATH}.tmp" RESULT_VARIABLE _FAILED ERROR_VARIABLE _ERROR) if(_FAILED) message(FATAL_ERROR "[Mason] Failed to download ${_URL}: ${_ERROR}") else() # We downloaded to a temporary file to prevent half-finished downloads file(RENAME "${_CACHE_PATH}.tmp" "${_CACHE_PATH}") endif() endif() # Unpack the package message(STATUS "[Mason] Unpacking package to ${_INSTALL_PATH_RELATIVE}...") file(MAKE_DIRECTORY "${_INSTALL_PATH}") execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf "${_CACHE_PATH}" WORKING_DIRECTORY "${_INSTALL_PATH}") endif() # Create a config file if it doesn't exist in the package # TODO: remove this once all packages have a mason.ini file if(NOT EXISTS "${_INSTALL_PATH}/mason.ini") # Change pkg-config files file(GLOB_RECURSE _PKGCONFIG_FILES "${_INSTALL_PATH}/*.pc") foreach(_PKGCONFIG_FILE IN ITEMS ${_PKGCONFIG_FILES}) file(READ "${_PKGCONFIG_FILE}" _PKGCONFIG_FILE_CONTENT) string(REGEX REPLACE "(^|\n)prefix=[^\n]*" "\\1prefix=${_INSTALL_PATH}" _PKGCONFIG_FILE_CONTENT "${_PKGCONFIG_FILE_CONTENT}") file(WRITE "${_PKGCONFIG_FILE}" "${_PKGCONFIG_FILE_CONTENT}") endforeach() if(NOT EXISTS "${MASON_COMMAND}") message(FATAL_ERROR "[Mason] Could not find Mason command at ${MASON_COMMAND}") endif() set(_FAILED) set(_ERROR) execute_process( COMMAND ${MASON_COMMAND} config ${_PACKAGE} ${_VERSION} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_FILE "${_INSTALL_PATH}/mason.ini" RESULT_VARIABLE _FAILED ERROR_VARIABLE _ERROR) if(_FAILED) message(FATAL_ERROR "[Mason] Could not get configuration for package ${_PACKAGE} ${_VERSION}: ${_ERROR}") endif() endif() set(MASON_PACKAGE_${_PACKAGE}_PREFIX "${_INSTALL_PATH}" CACHE STRING "${_PACKAGE} ${_INSTALL_PATH}" FORCE) mark_as_advanced(MASON_PACKAGE_${_PACKAGE}_PREFIX) # Load the configuration from the ini file file(STRINGS "${_INSTALL_PATH}/mason.ini" _CONFIG_FILE) foreach(_LINE IN LISTS _CONFIG_FILE) string(REGEX MATCH "^([a-z_]+) *= *" _KEY "${_LINE}") if (_KEY) string(LENGTH "${_KEY}" _KEY_LENGTH) string(SUBSTRING "${_LINE}" ${_KEY_LENGTH} -1 _VALUE) string(REGEX REPLACE ";.*$" "" _VALUE "${_VALUE}") # Trim trailing commas string(REPLACE "{prefix}" "${_INSTALL_PATH}" _VALUE "${_VALUE}") string(STRIP "${_VALUE}" _VALUE) string(REPLACE "=" "" _KEY "${_KEY}") string(STRIP "${_KEY}" _KEY) string(TOUPPER "${_KEY}" _KEY) if(_KEY STREQUAL "INCLUDE_DIRS" OR _KEY STREQUAL "STATIC_LIBS" ) separate_arguments(_VALUE) endif() set(MASON_PACKAGE_${_PACKAGE}_${_KEY} "${_VALUE}" CACHE STRING "${_PACKAGE} ${_KEY}" FORCE) mark_as_advanced(MASON_PACKAGE_${_PACKAGE}_${_KEY}) endif() endforeach() # Compare version in the package to catch errors early on if(NOT _VERSION STREQUAL MASON_PACKAGE_${_PACKAGE}_VERSION) message(FATAL_ERROR "[Mason] Package at ${_INSTALL_PATH_RELATIVE} has version '${MASON_PACKAGE_${_PACKAGE}_VERSION}', but required '${_VERSION}'") endif() if(NOT _PACKAGE STREQUAL MASON_PACKAGE_${_PACKAGE}_NAME) message(FATAL_ERROR "[Mason] Package at ${_INSTALL_PATH_RELATIVE} has name '${MASON_PACKAGE_${_PACKAGE}_NAME}', but required '${_NAME}'") endif() if(NOT _HEADER_ONLY) if(NOT MASON_PLATFORM STREQUAL MASON_PACKAGE_${_PACKAGE}_PLATFORM) message(FATAL_ERROR "[Mason] Package at ${_INSTALL_PATH_RELATIVE} has platform '${MASON_PACKAGE_${_PACKAGE}_PLATFORM}', but required '${MASON_PLATFORM}'") endif() if(NOT MASON_PLATFORM_VERSION STREQUAL MASON_PACKAGE_${_PACKAGE}_PLATFORM_VERSION) message(FATAL_ERROR "[Mason] Package at ${_INSTALL_PATH_RELATIVE} has platform version '${MASON_PACKAGE_${_PACKAGE}_PLATFORM_VERSION}', but required '${MASON_PLATFORM_VERSION}'") endif() endif() # Concatenate the static libs and libraries set(_LIBRARIES) list(APPEND _LIBRARIES ${MASON_PACKAGE_${_PACKAGE}_STATIC_LIBS} ${MASON_PACKAGE_${_PACKAGE}_LDFLAGS}) set(MASON_PACKAGE_${_PACKAGE}_LIBRARIES "${_LIBRARIES}" CACHE STRING "${_PACKAGE} _LIBRARIES" FORCE) mark_as_advanced(MASON_PACKAGE_${_PACKAGE}_LIBRARIES) if(NOT _HEADER_ONLY) string(REGEX MATCHALL "(^| +)-L *([^ ]+)" MASON_PACKAGE_${_PACKAGE}_LIBRARY_DIRS "${MASON_PACKAGE_${_PACKAGE}_LDFLAGS}") string(REGEX REPLACE "(^| +)-L *" "\\1" MASON_PACKAGE_${_PACKAGE}_LIBRARY_DIRS "${MASON_PACKAGE_${_PACKAGE}_LIBRARY_DIRS}") set(MASON_PACKAGE_${_PACKAGE}_LIBRARY_DIRS "${MASON_PACKAGE_${_PACKAGE}_LIBRARY_DIRS}" CACHE STRING "${_PACKAGE} ${MASON_PACKAGE_${_PACKAGE}_LIBRARY_DIRS}" FORCE) mark_as_advanced(MASON_PACKAGE_${_PACKAGE}_LIBRARY_DIRS) endif() # Store invocation ID to prevent different versions of the same package in one invocation set(MASON_PACKAGE_${_PACKAGE}_INVOCATION "${MASON_INVOCATION}" CACHE INTERNAL "${_PACKAGE} invocation ID" FORCE) endif() endfunction() macro(target_add_mason_package _TARGET _VISIBILITY _PACKAGE) if (NOT MASON_PACKAGE_${_PACKAGE}_INVOCATION) message(FATAL_ERROR "[Mason] Package ${_PACKAGE} has not been initialized yet") endif() target_include_directories(${_TARGET} ${_VISIBILITY} "${MASON_PACKAGE_${_PACKAGE}_INCLUDE_DIRS}") target_compile_definitions(${_TARGET} ${_VISIBILITY} "${MASON_PACKAGE_${_PACKAGE}_DEFINITIONS}") target_compile_options(${_TARGET} ${_VISIBILITY} "${MASON_PACKAGE_${_PACKAGE}_OPTIONS}") target_link_libraries(${_TARGET} ${_VISIBILITY} "${MASON_PACKAGE_${_PACKAGE}_LIBRARIES}") endmacro() wagyu-0.5.0/codecov.yml000066400000000000000000000000541360766232600150270ustar00rootroot00000000000000ignore: - "bench" - "test" - "fuzzer" wagyu-0.5.0/docs/000077500000000000000000000000001360766232600136135ustar00rootroot00000000000000wagyu-0.5.0/docs/README.md000066400000000000000000000022741360766232600150770ustar00rootroot00000000000000## Wagyu Documentation Welcome to the Wagyu documentation, the purpose of this documentation is to explain the concepts and algorithm used within Wagyu. ### Origins of Wagyu Wagyu originated as a fork of the [Angus Johnson Clipper Library](http://www.angusj.com/delphi/clipper.php) and still shares some of the same code, however, some of the algorithm has been changed. Both libraries still utilize the [Vatti Clipping Algorithm](https://en.wikipedia.org/wiki/Vatti_clipping_algorithm). Wagyu, however, follows this clipping algorithm up with a topology correction algorithm. This is used to guarantee that all geometry created by the Vatti clipping is returned as being Valid and Simple as per the OGC specification. ### Documentation Map * Wagyu Algorithm Documentation * [Algorithm Overview](overview.md) * [Vatti Algorithm](vatti.md) * [Vatti Intersections](vatti_intersections.md) * [Snap Rounding](snap_rounding.md) * Topology Correction * [Point Intersections](point_intersections.md) * Examples and Usage * [Getting Started](getting_started.md) * [Example Code](example.md) * Contributing to Wagyu * [Building and Testing](building_and_testing.md) wagyu-0.5.0/docs/bad_intersection.png000066400000000000000000002621351360766232600176460ustar00rootroot00000000000000‰PNG  IHDRd­; iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ¥J! J AÅŽ,*¸v± ¨èªˆm-€¬Q,,ìET”u±€•7I]÷•ï|3÷Ï™sÎüçÜ™ûÍ ìÈrPrùù˜`?fRr “$ü)0b±Eßèèpeäùw¸m¡\·–ÆúçøUWĉ†8#bçB| \›-æ@hƒz£™ù)~±º€H–â 9Ö‘â49¶•ÙÄÅøC™Êb 3P’Æg°3`%Ķ|ñvˆ½Ø™,ĈÇåæÎ€X™ ±yÚwq2þ3m4&‹•1Šå¹È„À rX³ÿÏrüoÉÍÌa5S#ÍÖmoöŒ0)†Ü‘“ü´È(ˆÕ ¾ÄãÈì¥øn¦8$~ؾ—-ò‡5 PÀa„A k‰2ÄÙñ¾ÃØž%”ùB{4’—7ŒÓ„3b†ã£üœÈðá8K3¹¡#¸’+ Œ±Iç…B Wz¬03.QÎm*à%DB¬q›(;6lØ÷aa¦äˆP#ål ñ»taPŒÜÓÌä…Ù°Y²¹4!öÉÏŒ ‘ûbI\QRø7 PÎãpùñÃÜ0¸ºüb†}K9ÑÃöX%7'8F^gì°¨ vÄ·#.0y°ÇY¬‰ÑrþØ€ ?:NÎ ÇA8ð€ İ¥ ðZ{ëzá?ùH`!È\`=¬ñH”ða ÁŸqhÔÏO6ÊPÿeT+ï­Aºl´@æ‘ žBœ‹kã^¸{ØìqWÜmÄ©<2+1@ !-Fy°!ëØ„€÷otaðÉ…ÙI¹ðGrøð”ÐNxL¸Iî€ðDeØj:¯Høs&ˆ-h8»4³gÄ7…¬p?Üò‡Üq® ¬qG˜‰/î ss‚ÚïŠG¹}«åóIYŸÏ°^ÉRÉi˜EÚè›ñµú1Šÿw5âÀgØ–ØRì(ÖŒÃ.c'±:ÀÄÎ`õX vJŠGWÂÙJ™-FÆ-ÆáØØÖØöØ~þÇì¬aBÙûùÜYùÒ á?C0[ÈËÈÌgúÂ/2—ÊgÛŒcÚÛÚ9 ý¾Ë?o²ï6¸òM—w·R¨Ìø¦cpâ)ôo:£7p{­àT[,,ëpiG  w†ÐFÀædœð`"ˆq LƒUϹõL0,%  ¬ëÁf° ì{Ápԓฮ‚6p܃k£¼}` "BBhÑBôÄ ±G\/$ Gbd$É@øˆ™‹,FÊ5ÈfdRüŠœ@Î!—‘väòéAÞ ŸP ¥¢ê¨.jŠŽG]Q_4 C§¢hZˆ£+Ðhº­EÏ¡WÑ›¨}‰öcSĘf¹bþX–‚¥cBl>VŠ•cUØA¬¾ëë˜ëÅ>âDœŽ3qk¸>Cðxœçáóñåøf|/^‹7á×ñGxþ•@#è¬î„PB!ƒ0“PB('ì&'\€{§›0@$D3¢ Ü›ÉÄ,âârâVâ!âYb;±‹ØO"‘´HV$OR‰EÊ'•6‘ö“Î:HݤdE²>ÙžDN!óÉEärò>òirùyPAEÁDÁ]!J£0[a¥Â.……k Ý ƒUŠÅ“GÉ¢,¢l¤¤\ Ü§¼UTT4TtSœ¤ÈS\¨¸Qñ°â%ÅGŠ©jTKª?u UL]AÝC=K½C}K£ÑLi>´Z>m­švžööA‰®d£ªÄQZ T¡T«Ô¡ôJYAÙDÙWyšr¡r¹òQåkʽ* *¦*þ*,•ù**'T:UúUéªvªQª¹ªËU÷©^V}®FR3U T㨫íT;¯ÖEÇèFt:›¾˜¾‹~Þ­NT7SUÏR/S? ÞªÞ§¡¦á¨‘ 1K£B㔆„1L¡ŒÆJÆÆ-Ƨ1ºc|ÇpÇ,spLǘ÷šc5}4¹š¥š‡4oj~Òbjjek­ÖªÓz k[jOÒž©]©}A»w¬úX±ì±¥cŒ½«ƒêXêÄèÌÑÙ©Ó¢Ó¯«§¬+Ðݤ{^·W¡ç£—¥·Nï´^>]ßKŸ§¿NÿŒþ ¦Ó—™ÃÜÈlbö脈 v´ šÆ2|`D1r5J7ZgÔhÔg¬oa<×¸Æø®‰‚‰«I¦É“f“÷¦f¦‰¦KLëLŸ›iš…ššÕ˜Ý7§™{›ç™W™ß° Z¸Zd[lµh³D-,3-+,¯Y¡VÎV<«­VíããÜÆñÇUë´¦ZûZX×X?²aØ„ÛÙÔÙ¼o<>eüêñÍã¿Ú:ÙæØî²½g§f7ѮȮÁî½¥=Û¾Âþ†Í!ÈaC½ÃkG+G®c¥ãm'ºS„Ó§F§/Î.ÎBçƒÎ=.Æ.©.[\:]Õ]£]—»^r#¸ù¹-p;éöÑÝÙ=ßýˆû_ÖÙû<žO0›À°kB—§¡'Ës‡§Ä‹é•êµÝKâmàÍò®ò~ìcäÃñÙíóÌ×Â7Ëw¿ï+?[?¡ßq¿÷þîþóüÏ`Á¥­jñ›eÕõ;Ï >B YҪʭí›è2qÞĦ0jXlØæ°Çá–áÂð†4bbÄÚˆû‘&‘üȺ(µ6êA´Yt^ôo“ˆ“¢'ULzc37¦9–;=v_ì@œ_Üʸ{ñæñâøÆå„) Õ ï×$J’Æ'ÍKºš¬ÌK®O!¥$¤ìNéŸ8yýäî)NSJ¦Üšj6uÖÔËÓ´§åL;5]y:kúÑTBjbê¾ÔϬ(V«?-4mKZÛŸ½ý’ãÃYÇéázr×pŸ¥{¦¯Ižá™±6£'Ó;³<³—çÏÛÌ{’µ-ë}vTöžì¡œÄœC¹äÜÔÜ|5~6¿i†ÞŒY3ÚV‚$Ï=o}^Ÿ0L¸[„ˆ¦ŠêóÕáQ§El.þIü¨À« ¢àÃÌ„™Gg©ÎâÏj™m9{Ùìg…A…¿ÌÁç°ç4Î5˜»hî£y¾óvÌGæ§Ío\`´ xA÷Âà…{Qe/ú½È¶hMѻʼn‹Šu‹wýüSM‰R‰°¤s‰Ç’mKñ¥¼¥­Ë–mZöµ”Sz¥Ì¶¬¼ìóröò+?Ûý¼ñç¡é+ZW:¯¬\E\Å_ukµ÷ê½kT×®éZ±¶vs]éºw맯¿\îX¾meƒxƒdcøÆúMÆ›Vmú¼9sóÍ ¿ŠC[t¶,Ûò~+gkG¥OåÁmºÛʶ}ÚÎÛ~{GðŽÚ*ÓªòÄ;ŸîJØÕü‹ë/Õ»µw—íþ²‡¿G²7foSµKuõ>}+kÐqMÏþ)ûÛ¨?h}pÇ!Æ¡²Ãà°øð‹_S½u$ìHãQ×£™Ûrœ~¼´©]ÛW—Y'©O®o?1ñDcƒGÃñßl~ÛsÒàdÅ)S+OSNŸ:Sx¦ÿ¬àl﹌s]ÓïO:£iRSë…° —.]<ßìÛ|æ’祓—Ý/Ÿ¸âz¥îªóÕÚ§–ã¿;ý~¼Õ¹µöšËµú6·¶†ö í§;¼;Î]¸~ñFè«7#o¶ßŠ¿u»sJ§ä6çöó;9w^ß-¸;xoá}ÂýÒ*Êê<¬úÃâCgÉ©GZÇ>¾×ÅîzùDôäswñSÚÓògúϪŸÛ??ÙÔÓöbò‹î—‚—ƒ½%ªþ¹å•ù«cùüÕÒ—Ô×ýZøzèÍò·Zo÷¼s|רÝÿp w`ð}é­{?º~lþ”øéÙàÌϤÏ¿X|iøöõþPîЀ%dÉŽlhz:oö@K†gx£(Éï_2AäwFÿ Ëïh2'—=>Ä/ žQ*a3˜ ŸÒãwœ@FÛ°ˆÒì屨ðCø04ôVR_„CCƒ[‡†¾ì‚dïp6O~ï“ žñ·kJQK§ øQþ±lCô²’… pHYs%%IR$ðiTXtXML:com.adobe.xmp 868 962 ?ÊbiDOTá(ááÕý¹´*ö@IDATxìw€EÓÆ÷éÈ9ç`D1}fQ0`Î9̨¯9GsEÅôšEÅÄkFED‘œs:ŽË÷i=Ýh»wf»göžûãj»§»ªç×Ý3S]Û³YýEü7`ÀiÝØ±cÜÊÌk¹»íSòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“L2S À‰âv$¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b'Mîv8DzBþ&:d&¦N·CüÝð'w7ܵUò×$ìJr·ËÛkü½Dì¤ÉÝçXVÈß$C‡ÌäÁ”"À‰âv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b'Mîv8DzBþ&:d&¦N·CüÝð'w7ܵUò×$ìJr·ËÛkü½Dì¤ÉÝçXVÈß$C‡ÌäÁ”"À‰âv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b'Mîv8DzBþ&:d&¦N·CüÝð'w7ܵUò×$ìJr·ËÛkü½Dì¤ÉÝçXVÈß$C‡ÌäÁ”"À‰âv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’Éêß¿…™¬Ô¤I“¤A}ûö VÃ2¼5äÉß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†_Y4y0¥0”ìv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b'Mîv8DzBþ&:d&¦N·CüÝð'w7ܵUò×$ìJr·ËÛkü½Dì¤ÉÝçXVÈß$C‡ÌäÁ”"À‰âv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b'Mîv8DzBþ&:d&¦N·CüÝð'w7ܵUò×$ìJr·ËÛkü½Dì¤ÉÝçXVÈß$C‡ÌäÁ”"À‰âv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b'Mîv8DzBþ&:d&¦N·CüÝð'w7ܵUò×$ìJr·ËÛkü½Dì¤ÉÝçXVÈß$C‡ÌäÁ”"À‰âv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b'Mîv8DzBþ&:d&¦N·CüÝð'w7ܵUò×$ìJr·ËÛkü½Dì¤ÉÝçXVÈß$C‡ÌäÁ”"À‰âv(¿þä¶Jþš„]Iîvy{­‘¿—ˆ4¹ÛáË ù›dè™<˜R8QÜòwßÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“&w;œcY!“ 2“SŠ'ŠÛ¡@þnø“»îÚ*ùkv%¹ÛåíµFþ^"vÒän‡s,+äo’¡Cfò`JàDq;Èß rwÃ][%M®$w»¼½ÖÈßKÄNšÜípŽe…üM2tÈLL)œ(n‡ù»áOîn¸k«ä¯IØ•än—·×ù{‰ØI“»નI†™Éƒ)E€ÅíP 7üÉÝ wm•ü5 »’ÜíòöZ#/;ir·Ã9–ò7ÉÐ!3y0¥p¢¸ äï†?¹»á®­’¿&aW’»]Þ^käï%b']m¹ù%ïµ—Ð1¬T[þ1xÐ!‹¦ºgs¢¸äï†?¹»á®­’¿&aW’»]Þ^käï%b']m¹Ó!³3À´B‡,A`¾È„ˆu>ÕöB ˆå|ò· \™#w7ܵUò×$ìÊêʽ¢¢B@lØ ²N^žÈììl_: ¸¸XôÌ›;Gdç.]EæääˆÔÿ’域Ÿ/*¦þú‹ÈwÙU«ôE.˜7Wôü>}ºÈþöóE¯V2éÇñòqåšõ"5})ºíNà¾ë®þò¿æ?—ˆþSÏ:OäÖ[om6-ÑçÈ[oE}Û{oSŸåTªü-77íæè¥q ‰N¤jҕ͉’.²ñé%ÿø8ù]ŠÜý&š˜>òOŒ—_¥«+w:d• :d•ó¡CV9ŸªŽV×ëN,.tÈb‘‰7?QÇÊñ Eyy¹œ™^¬W¿~Ô3Mv¢l,(}+W®Ù®}û¨ú“Í\¶t‰T]½f­È-¶Ø"YUQëMùe²ä—Ud‰ìÓ§OÔrÉf~úɇRµepéÕ«WTUÉòö©á¢o×=÷é7Ÿ›¯¿Fô^pÉe"[¶l)2ÕeeeÐ{î™"6Bd­ZµRU-õ—-]*ò²KÎùÒk£¢êM–û„¾}>ô€Èç_~#ªþd3_{ñ©úég_ˆñì‹ÉªŠZoÈMWJþªõE"ï{ð‘¨å’Í<û„C¥j—Þÿ'òºë®‹ª*Yþ{íŒyzÚ Á¢÷Ì31Ž¢I"³KûVRkijÿÙ¿ÿ$´l^E_ÏúôÚJ~üé—"·Ùf›Í '‘óý·_K­ƒ>HäO¿ü&²]»v†¶d¹¿4ò ÑsÞŸ¬XµFÒ~ÍÛË/8Côxî‘ù…"ýú·ßž;‰ªßþ˜%rÁ’~©=Ú4Ù¢y3‘?ü<-ªþdùçæ"ÒvÔÁˆ\½öî/Q$9ëÏRz§¾½Ež|*úá¡ÇpI@UÔ¢Ÿ|øžäŸwÚq"Ͻü&‘×\sMÔò‰f>zßRe؃w‹¼îîa"O9åCU²Ü/<óÑóÙÇï‹|ä9ÜO´>ÃH‰ý÷ØAjý1ýw‘ï}†HâfÏ _|íú9ô曑öþ×Ï*"¹åo 'iÍ+Ù¥“F§Ñ(²TáꉠCÀUéÓC—·2¦CVyÑ!«œ²è|èEç¢séi¦¤Cfòð¦èy‰˜i:d&¢C¦I(©Ÿ;éyÀ+I‡,Õþðy…b—íðáòH¶´ìûŸ¦¤ÚB£~³Æˆˆí¹¾ë<êýã:‘èÊEqVÖëÖÅwð_|¡¨òk¥}ê|G~ïÝv½Wßx»È+®¸B79%9êõ—¤þeyçƒXù=ùä“SÒ«+ßsûõòqØ£‹|úåwDÆZiO”ÿ™'&úÆŽýTä‡_ÄXQ“£‰ÿÛ­/VðŽ•ä¹ ©lܸqâÊ¢Ôh¡ÆåÚür´¨¤4J©Ä³Ö¬^-•:¶k%²QCŒÿ¹‹¢¯„'ÊýÇñߊÞÓ>@d½fmD~?+›’Háß‹*1r("X :m/ÚFüE Zÿ©zóU—Hâ§žÙz§£D>9ÒŸ܉‡ï/úJf~.rë#¯y«~@Ô?ÿå¿}Ï®R¹KÅ"÷t¿ÈóÏG$ôÍÉ}jX¯ŽTÜ«KM‘gÜúœÈ#Ž8Bd²ÿ/Z(U·ïÝCd§¦ÐÿóHz—]vIVµÔûú \®?ïI/X]"òÓñ¸ŽvîÜÙП(÷‘O ‚úÍ‹·ŠžW&¬¹r d:àfI qÍ`\‡ëLEj=0í×ׇTE-zôÀ~’¿wîw"ýµ‰Èé³E-Ÿhf¯ní¥ÊUÛ@ß3 ñMˆ/¿ÿ9ªªDù×®UCô#U‡þçT‘;6ADµþwHúÚkq}HVÿ°‡JÕ©oCæbÜì{Ñã’ê©°«õ'Ê}ð¹§HÕ®Ëpÿþ`f®¤/»ïU‘ûï¿¿V”+õ»"*þ+v/'éÞ½{{U'”ÞsG¬ìÞÙç©wøëس0cVø›4ÁÊrBJÿU¸u³†’úñT¬¬w~‘á’Ò²•JüãúuÐ×¶us©ñ‡ñRuÐ Š¾/Vz/ü¾‡¤øyºWuBé—ž!å?|+ÆÇu]%é§Vî)òÝ¿LHŸ·ð­×^&Y?=+²m͵"lz’H½WJIü;éH¬ØT+»3—!òY²Û ¢í¶ÛáöªŽ—ÿ޽ºIÕá»Ïùì¯5Eö<é>‘\pÈdÿ5n€Hÿì Ðî³>n ªNº¼Ž<òȤT뽌½·è,õ—^ ý»½ÜHÒ÷>7Fd¢okÓ/§ønx_y® ßœˆq×'ê‰Þ±ßþ,²K—."õ¿ª¸ë=ž/<ëâ×/Ü"UGÀ¸¬;›å+1òÔÛ µþª¤þ*ý Wà›õ§¿,U.ê£æñõ$½nCaUª*=~ì!ûÊñcê+rÛfÐwл­$ýǜŕ֯êà6[t”"/õ_ rÍFܯŸ‚ëðW?üUEUüu¥¼Úç+¯À}÷}\–#o!2óúètÑ„¤~ ä;àz?÷ RÿÑ fF§säƒÞÛ«Ç[UR7âó±h×ÝWœ&YŸ‹qyýç¸Þ×Üç&É÷~ãÅ«_ëÓãE~î¯SGß/EF À8<ýƒº’ÞáÔ»EwÜq"u½cŽ9FÒ¯¿þº‘/‰¿þér·^3X²z¬þPäå*r¸ÿêºp5žsöÞ{o9®ëU%¥ð_ÿÎ?íXùxQ§)"í†ûÕ6#ëKú¶G^éÝîÕßüñÇ¥\Ý DFÔÖ˜º÷Þ‹tÀþÇ;îÖì´5‡™_ho¹š’ Ó!‹ÞtÈÆF£réEÇC‡,:K‡L“ˆ.é™\è™tÈ*ÎÑã(Ó%2¿{X;fú+Œúå:ßcoàÞ;KÎÅ'‹¬…•‘ÛÿØNÒŸ};ÉS#±d—¶Í¥Â§Ç""0~>. ïU$ù/¿õ~T…U­\”«·âÕ¨‰•Ѳ¡÷A"ó{`…úG°bÕH%™Ó~ÃJÑQûí&¥~;+¥W–+é¦ß)òª«®ªDKìCï¾õš|æ´sôaXé=í¬$Çúι¾j©-è´–Þ}«ZüVîØ+vû¿ˆÐÅCÿ+Ç÷Ý+¶ºž–‡rˆ=z´6!R¿T}—}çâÿIþ m Döy+v¾øž¤{öìiÔÓõµ”ƒýÓéõë×KÖÇ&ò¶ÞX‚í×{š?X[ò?ýú{‘z™®KJá¿þ-[¶L>>p€È‰§Ã^K`Ô¼ߟ6íw9K_¬üY3±âøãŽ–ú× Ý 0|";½>cÆ~!Çõ?­Oï=z\­4êãzEöóÏÀû¥awÉ¡_ÎÌ9aJžþy;ù0âyŒ/­·*‰Ú‘È«ÿ}N>®œ8Jä뇢áz%|èŒÞ’ÓûEêUé×ÇG<Šz[£ÿ†ì±AT<= šF 7èâË%C׋eGçk>z¯äEÝçÈ¡S{ázvÇW(9©ááòáXµR­ëi;wߕ쫯¾ZÊéüò Dn¿î Éyà*‘;µAþùâ:´®Û1’¿çÞ8Šˆù ¤‹¿F¼©¿é;oDDrú r¼1†{ä7¡i´ô÷ìyõ×ÄžÍô¡]zëFzûì«Ã’ò³/(©ÿí0ú{òv1Žt{aE—ŽD¼Ü/Ä\ò-®Ÿë®ÑþðéwÌq’Õ !ææûî¸^ <ò@]E¤æ÷çTD|·Ú€•÷Çûƒ.\gH¶|<êŒãEfç ­õo&=¼¦MÀýïìvs¤þE}‹DæcøDšß}OÂuIŸÿ&þ P¹·?T¿Nÿü‰Ý–ŠÞ};¡þÄ0Šìò<ø÷ÝO­Ç+=íÖç5óGDÇ·Vôwh€›'ÉÈqïçɇÎ;n+R×Óò·§IþV;li×ç¹pòTÉŸ}¸×Ä"oþ&Ù‘ËÆ¡?›oÑŨ¯õ{%jE"eê›fÎ’¬9€»>þøøtÇäFò¡q‡VÈÀezÓ}#;[eD´D±’â|X¨o* 3¹á3|zz~ ùЬC3‘Y›ôá¸n¿^ïÎR¿W¸í­¹`Žœr¶²‡j‘ßÁ¸ùº¤µä4nÛX˜=iŽ|è²}'d˜Íl\ÞyóæÊñÉgá~‚‘Ȟ/¢#æ7Á|mÐý ¯/ºœK$¢NdãZÌÓú³çHщgšß é> ú³zv’ãuÕ¹zþ‘¥˜ Ù…àpÙ èÛy8LoÕ\ʵ÷]Iè_UÏ™jª•¦Ð!ó³v¼è Y:d2á@‡L=À{ôôeˆ²¿Ç2<`Ò!ƒãH‡ ×M:dtÈô½2%2¿{U¿¼ãóÏEój%ëéîm%­Wz~ToÃ¹Ï Éß½.¼_Ì‘däŒÿaEjûûªz8®W,µžX+„?ö¥Ôûþ$¬°·ª ½¯N¼a"VNºïÔWéÇO¯ÈMü+Š}wßÎ8®íOÿê;É_p‘¹ÒûÐxèøO¬HµÛÒ\±ÃÑ"2ÚžÎ/.ŠOþïXú›>7f}üʱøôÊÒ6ò¡e‡–"5-uyÖ²PýŽMÞ2¬xýt¦Z‚UŽ} Kdߢý ›ª/dÿµ²¥5CnJªóÑÞÖëçKoN5WÔvb~]´¿G¿nçÜ_çJýN}:†ôŠZ'¥ÿ'šú»?ýY]Q¯N}\À+²Ð¿±N@ŸÇ†•ˆXíPº@ì¾z¸¹b×ð”l·ër<·"–ÿpÑš´=4_/X‚ä¹XѶ?ôëÒ9·¢|ïÃz©Š¡Õk¹é04”,Z-9GÕ]*òö= !N+²õ“àÓéÀ­ä¸ÏúF?ë«9’ßyÏŽ"õJ¦§¹‹¡ÿäúXq¼bgÌˉ‹QüÀQØãѲWUBÛAê¯ÿžöë•ê<¥ÿ¬F«¤è}¡Ì Ô<çkôg£½°"«Ûç]‘U?£÷W%p)/…žzó ÷ÒV¸.œÒùÏüý7LG¨²þ.X±ÖÍÜ4~T†ò'7G…ŠDÔ›¶RÝÐ)_äÑ[Âþ_Cÿƒ«ʇ†;`^áèßYø´äC\[ÄJ9jýõ_Ù­ó=ô?Ô×ý:£Þ¹ À¨Ú¸n6è…óÐí×õ7IýAÐý_ñÑ1ù➸.ìª0ø:VÚêÜTŽ×ïˆÇ¦öéÚ –*?KXÿ2æÕ‡aÞn‡ËWdۑпrwp¯Ó®¶ÔôF ´ÝüMiõaÙóäÓ§bÜwS6BíãqªÙ3ÝÌù/a·?×¥Mú5¥Áý³åÓ´s1nÚÖÇÚw¡`§«:KFN-ØSÕþÚ ÎQ\4ÿ?oýSŽ,½ ýš«Ô4¹»ßÖMŽkžZͦöê ¯•?õª?äSÑ È˜‡ËQdÇ—p]hw½Ö¯)©èÕ«ÒYê29õŠß¥B‰ÒÿÍ|Ô?úóZò¡å]DnR£>Ì|džäwÜô é‚Åà1ãjèÏ¿ éQÓPü’?pƒoqa'ÉÐÍUÊ6ÍŸMiýAëW{Ýf_;]ެº ý;LEÈîÚˆÔò4Œ]=^Yº óiùôï ¡ÿÆÏ¡ad3ŒûÖ‡BÆ«W—+Y„ëÁ†GgKÖŸç¢CNzè›>¸Ÿ7ÛSMUqƽsäS÷+;©œè¢xv(v®È)g@ÿÞ¯bÜ,ØNòöQ"ºš˜¹…Spƒª?ׇïN„þO¡ý¹ƒ0nò:âºðó9ˆ˜žÙãà +:r÷ªµfÇ´2[®ê+ñÏÊ'£lV¤ê¼v|ô_óÔ½¨VÔZ¨VÒ=K‚žä?vTkJ~Ã’RóJΧGCÿ ïaEjüvXQkº‡¹¢fžLìTá÷ˆ¤tþ+îïý{¾‚µÅ«µm¢¯¨UµrWð" ½[.xí èµ¢»¥Ñlø Ýæ#"ñôèoüøt¸³‡T¬Ñ 7º‚*róGƒKÿ•àôX?èϺ·®W*?¼þµERàèÒµ"/ì ý[>þ=F„Ì«¥*îºüÚç0.ÏÊÃ8ÚOE¸üó¶ýíà£Ë'*×<…y5¸)"M]ëaEùÜ_™i¥VÚի˯R+É7wÆ<+S|·¨V‹³Ûë¢IÉÌ’z÷ôÄŒ?—Âá–‡È|«£UhÈ£=^þKïúSj>µ3®Cï ðù ®7-ú7õhN,¹èV„$_퇕ý¡?àõû^ˆ4Þ‘¾Ä´þSzþõÓ%ñú©s>Á¼*8×Ûz=p}þ§FbŸf«HÍw'à>³Ï+ÐßøJD€jµÄ8ÕZã復ü`„f¦¨=/=†Ï–j^åÔ†=]>Q9õ|ܨfžqÓù1èï=¢g¢ª¢–Ÿ|ÖÉÿ·çÈ®¯â:Öõþ-£–;³íýiÚ?î ÔtÈ:U ˆY¥x"tÈ*çC‡,::dѹè\:dš„?’™É‘™É#ñ”~y‡Ú3¹å–¨:–œ¥¸Ñ_Ž–ãO]ÈŽµ¯R+FÙj/F~=¬`vV‘ˆ¨JãÈ,šƒ£OΑÒCvÃÒÉsêIºÅEDzÿÅ»rT8}ƒTÕ‘²s¶†þ{JšH~K½'Ák δþnuÞ; ¤Æ¾­¡ÿÅXaouVÜãT·Y±Aiñé"9ÖºVÔ¾U²fIFÈ´¡‚o±g§óø¥’¥¶˜E¤VÔ’ŒmÒÿ9"X=§ ¢õ O›­¨éò‰J)Ûeì¼3|Ú߆PFXKT¯.Ÿÿ¸ì³ œž‡þí;REȰ0®‹',׿Ž~Ý=úù¹Ÿ¡¢Ç#©EÈtCÖ½ˆq9`#V6ßœ©FÈ´þ5O#RÖ¿‘¸÷ó±Bšj„Lë_õØùØ/‚y<¶övµ8§½.’’\ñÐl©¿K9–z¿nÈU+oä\Y‰÷º£µôî™ò±O6öü²Š H-B¦õ/¾‘²NYX^²_[9Ôx§Ô"dZÿ‰hZq_vŠŠm‘Z„LëŸ}åïò±f9"M¯ì*éÚ­ÔfU0QîZÿŸ—!RVTý[>„y•S'µ™ÖÿÛù¿ÉÇÒR\w¶yÊŸ™ÖÿËÙˆdÕm€Èy×RŒiÅehïij ¿Ugðn{sj2­¾¼ãeê`ôo‹žˆœ·¼4µ™Ö_º‘²éW!’ÛlŒ÷–§§!ÓúKÔ7lfÞò§d5Ü÷ñÖ‡·ÐER’Å p=˜Ï,ÑÓà\š÷Ãs‰Vžì¸/š‰ëÙÂGçˆ*ýM£F}qýÔú“•ú¹gáÓ¸¿´¾ ýª÷i½ÛÿŽëö'£qÞ«úí¹h_ˇp¿øõ9R¥Å°a¨Ú¯¤~ 8RÖÿÓ!3‘Ó!3y$ž¢C&ÌèE:tÈ¢sѹtÈ4‰è’Yt.:—™&]Ò!‹ÎEçÒ!Ó$LI‡ÌäáMÑ!óI.M‡ÌäF‡Ìä‘xê‹/Pgï½ãª»ô‚ó¥Üõ¿Ž9®%VÖ÷]Šމs°Ò8£¼¦ï<‘ˆ¸”WRH·zéX±®ÙU­¨]Ü)j­DWŽŠþÀJÍÊ'抾œmÕŠÚ©XQŽj$L½b´j$öîdõS+j)FÈt6NBeíËøîvî¡ê;çž·2éò‰Ê‚ïVK•Uo"„U_íÝ‹õV¦Dù|‰ñ³ôí¥bG¯”æu Y¢íõ–ßðñrÉš7²ÛXé­Ñ¸†·hRéü÷Ñî™ï¬ú}ôJxVRê6«´æ¿èדiêv_ô•ðD¹kC+Ô^ÐâUˆ¤´¹‘}tÈ¢sѹtÈ4‰è’Yt.™šK‡ÌQÏ>yÌabyòü1"‡P&r÷—ðÝûY­ñ]ä6gùóm}š¦"BYï×ý¿Æú!“]9ÊŸˆˆ_†XÉ¯Õ ‘8Cy ‰õß#’U«;ôêßÓIA¥Quíø5’®Û»¾Èܺþ®Ø­>õ·Á ~vÍè{-’å¿ö'èo ö¦eåø»d·þ×|áRßç„î„üøî{=Õ¿:ß/¹a6öTÖí=r˜,wݾ ±bZG¯˜ê>É¢åX±ö;‚¢›WºסÜúþŽ{­¿Bí­‰5.Så¯íP&F€Üãåwé”ù«H¢~[²ßíS?¸ÙÛŠ}·cYaÊÜ-·W›ÓßÄhý"Þ¿þ±>$òçÉ?‰Ü¯?‘o½ó¾ÈÝwß]dPþ1Bfö2“‡µ²äPÓ!«œ²ÊùÐ!«œ²ÊùdêѰ>˜fJ¤ÌŸYRC!eîIYM½²ÔQ2˽rÿ7‰ÅÅŸ=&ò¾=ðÝrÝ ý;U‹Dd¬ÑvˆÔèã~É õÖ*ïwªµþT/TU­„k;”Ñ ¤Ê?ºVæVE€Ü«"”ÞãäŸ^¾±´“{,2vòÉßg¯•°r/‰=}?|4AN©NèßøðžoÐÒŒ™=B‡Ìä‘ö²´#Îa½Q„>¹»íAòwßÜÝp×VÉ_“°+ÃÊ™ÝqbË2K¤/¿ø<±ôݘEök½&åØã£~~,òîøîAù)í¥œßo ‹÷tÃz¡Š÷ü‚^ŽüÝô¹»á®­’¿&aW’»]Þ^käï%b'6î¥cð¼8òÚçPßíúÚ•&+Œ™`é™<Ò–¢C–6´©8l7ŠLérwÛ“äï†?¹»á®­’¿&aW†;2»ãö5:d–ˆO˜€ïú~òÉ'b1+ +ÙÙxËž–¹¹x;á Ÿ>'årŽÁw…-5s“™°]¨65¿›Ž$w7ܵUò×$ìJr·ËÛkü½Dì¤Ã½ä{<^²Ë忬Sβ(ÍV!3Ó!3y¤-E‡,mh3RqXn™ŸÜÝö(ù»áOîn¸k«ä¯IØ•aáN‡Ìî¸pe™+òUØ;o®”8tÐÁ"k_EŸ‡åBåóiFù»é rwÃ][%M®$w»¼½ÖÈßKÄNÚ÷ò"D¼Ê !õkìKV•ȉ¯„,[€ß¼úöÈÈÿtÈÌŽ¤Cfò|ŠYà»È—åFáËÉ„H ¹»í,òwßÜÝp×VÉ_“°+ƒÂÙX»PktÈÚ1U5kÅJ¬¤ì¸])zÍDnÑßA>ñ»Ú’ns#dU± âñ Ü(‚È&m"÷tÒ­Z7ùWÍ(%È=Tã×Iþñ³ò³dP¸O@DlßZøæÓ—ÓqP©È'æn-ò›‰*dæ'‡º!3áÓ!3y„&E‡,4]•TCƒr£Hªñ!®Dîn;üÝð'w7ܵUò×$ìÊ p§CÆÙß#Ÿ™Ýù³N8\tíV‚|f/¼¥ç+l%‹ÿŠ]Ï™oÐ-* ÊÂâ)¹»íòwßÜÝp×VÉ_“°+]s/š[,'¼ÓÊÝD>óðH‘………"·ë‰ç·5ëð ¨ÅËWK~¦üc„ÌìI:d&Ф腦«’j¨ëER΀Jäî¶Éß rwÃ][%M®tÍÙéð±c!û2»ó?ekÇŽß!Ûºà+ÑuT÷"ËÕkT'âçÊ"×NÁ[ÛÞØ=)›®/TI5:ƒ*‘¿›Î$w7ܵUò×$ìJr·ËÛkü½Dì¤]q//Ä^ÿÜ7óäDûc¥'üæoÈñ£9¦Òra;È™ÙctÈLOÑ! |ùÒ@W7 _b%äî¶óÈß rwÃ][%M®tÅú™™9Þé™<›š8q¢´í¬SŽYR\$2++Kdvv¶È²2¼­§¤&ÞÎÓàêf’Ÿè?WªDÛ™©åÉßMÏ’»îÚ*ùkv%¹ÛåíµFþ^"vÒ®¸—¼Šóûhä'ò¡uëÖvN8`Vè™B‡Ì䨲ÀvMZæêF‘–“ ‘RrwÛYäï†?¹»á®­’¿&aWºâN‡ ýL‡ÌïtÈL“*(À[w:`G9§Úg!‚ï ººPÅÛ¾L/Gþnz˜ÜÝp×VÉ_“°+ÉÝ.o¯5ò÷±“¶Í½ôS|£éžÓî“Üoßýìœh@­Ð!3;†™É#cRtÈÂÝ•¶oá¦å_ëÉÝ?–Éh"ÿd¨¥^‡ÜSg˜ŠòO…^òums§Cfö2“2“GÆ¥ŠŠ°×¬ï>ÛɹÕ97'®s´}¡Š«QÕ¨ù»élrwÃ][%M®$w»¼½ÖÈßKÄN:]ÜËKðÚëâ•ø±ÒHŸÑûl9±«_mçn…™ÙAtÈL—¢CÎ.M×"œ4쵚Üí±Žf‰ü£QI¹§ŸqeÈ¿2:é;–.îtÈâë3:d&':d&ŒM•””ȹm»w‘UEʦ\V®>L[ˆ·u¾+=y*R–ñ€r‚~•" §øf»Û."7üÉÝ wm•ü5 »2UîÅ˰g¬Ë/Ø‹ÿ΋££žÀà Αüƒ?Jä€ýˆZ®ºeò+‹fÓ!3yd|ŠY8º8ÕE8Î2x­$w·}Bþnø“»îÚ*ùkveªÜé¥Ö_tÈL~tÈLŸZ´h‘œã‚x Pvv¶¤³²)Óé‹/¾Xò ka/SÙ±…’Ωò’à¿´HõF‘¶†e¸brwÛÁäï†?¹»á®­’¿&aW¦Ê½àÉRið”qSEêç§XgQZŠò¹¹¹±ŠT«|:dfwÓ!3yd|ŠY8º8ÕE8Î2x­$w·}Bþnø“»îÚ*ùkveªÜé¥Ö_tÈL~tÈLL)Þ‰²ó~;É‘â#òEæð­‹i+©Þ(ÒÚ¸ VNîn;—üÝð'w7ܵUò×$ìÊd¹—¾ƒv¾tç«ò¡çÖ=í6 :dI£ËìŠÞ‰B‡Ìn'{£°ÛÊ̳Fînû”üÝð'w7ܵUò×$ìÊd¹Ó!󧟼ϙþh ¯:dáí»´¶<ÖDÙå€ÿ»…‡®™S7úž²²å(7 ¿sV·g½´¶7Ó”'{£È4¶Ï‡Üm7í‘¿ÉÃVŠÜm‘Žn‡ü£sIwn¢ÜK¾ÁsÍÕû]/M;ñèÓÝÄŒÖë93£Oº’“£CV œê|(ÖD¡CfgT$z£°ÓªÌ·Bînû˜üÝð'w7ܵUò×$ìÊD¹Ó!ó·b=gúk%<Úè…§¯¬¶´ª‰²ûA»I{6 \#2§ž)›tÆÉo»-"c-w’4ÿÅG ÑE|ZYª*ä^¡ô'ÿôò¥Üc‘±“Oþv8{­üq×lÉj²k#‘¥+‹Ef¯(Y¶¿3–¿é,ù¯½ý÷Æä ÿÅM ªç̸eHA:dÒ‘~ŸFU…™ßÄM}¼A›½U=gƧ%sJÑ!Ëœ¾ôõLâ({²‡Ø]·ßJ‘S/û]ä+GVˆ¼lF]‘-/í,’ÿâ#Àt|œü.Eî~MLù'ÆË¯ÒäîÉäôrÜR­¥²Ò¹Øë~éŽxnÙ¢)4·o9}ä'åýäÃÛ~† þO‰@¼Ï™) Qe:d!ê,›Mw¢Ð!KO¯ð®Ui%÷ª¥÷8ù§—o,í䋌|ò·ÃÙk…™—ˆÝt¼Ï™v[åÎ2wìm9щR«ö­¾ +LŸâ«Ù‘óC„¬ÕeŒ%Òá¼A'BË¿²äîËd4‘2ÔR¯Cî©3LEù§B/ùºš{ÇSÛˆ’?oùSäècð3 3äÄŰ1èÛnòa¯3Áÿ)Hô93%c!¨L‡,䢉‰N:dþö’¾Qt¿²“¿Š©­Rä^)ž´$ÿ´#Žj€Ü£b±–IþÖP†4w:dk‰DŸ3­5Ì‘!:dŽÀÝl¼¥a½:r*ó/.Ù ÎlŒZ@ôkžd´úOàÿ¸è²¸pùVˆÜ}C™”"òO [Ê•È=e„)) ÿ”ð%]9÷%×Íç÷‚ês¶Ù(z¬/réÊu8Àÿ)ˆ÷93%#!ªL‡,De³©ñN:déé•X7ŠôX£VM€Ü5 7’üÉÝ ·V9îÝðÅ™þˆ÷9ÓNkÜ[¡Cæ¾Ù‚ª&J^íšÒî›vÇïtÔ©Ó(ÇW®#Ó–#ýÞ:DÐÚÞÐ5çÔFźQµ½™Ò.rwÛ“äï†?¹»á®­’¿&aWz¹/“ Þõ?"gNþIä,òƒ)ˆŒ­]¿AÒµj©¯IŠÿ%PÕsf¢úÂ^žYØ{0Mí¯j¢Ð!Kx¥Ö{£H¯5j×È]“p#ÉŸÜÝpk•ãÞ /w:dvû¡ªçL»­qo™û>d bM”U«VI{o¾þj‘ÙÙ9"³²²ÎAZý›4c²|\Ó¿S–Û4W¢¬„€÷FQIQò‘¹û3 UäŸ4ª{å‹û׫ÔTU^<á£äŸ02_*hîíÄ[÷.ê/zú¸¡ÿí·^—ôÕÿ¹Läçßü ²mÛ¶F9&#ë931-™SšYæô¥¯gk¢Ð!ósLeúFÁ—zÄD”–䞬q+%ÿ¸QùZÜ+ÇI‡¬r>a=ªÇ=27=ë9ÓMkÜ[¥Cæ¾Ù¿'ÊA' ”ó\Ð?PV£#e•u¼¾QÐ!«Œ’ÿÇÈݦ‰h$ÿDhùW6ìÜË6– Œâyx^-ðû—^B‰:VOÞûÕ{˱Wúá¦Ø,Ýõ:W3ìü½œÃ’Ö? ½m·í¤É_½ÿu¥M_¹‘Ò¦MÓ)­Ôxôû93ìˆè…½ÓÔ~¿' ²Ä:Š7èÄxùUšÜý"™œòOŽ[ªµÂÎYª# zÖ§Cæ¶ßý~Ît{6©[§C–:ÌԮ‰rÈI ¯ùÛΙÛÂÜs–‘0“8©°? %qʨBîn»üÝðÿc("Aº#²Ôâˆh¶§Ü¨Õ£–‰Žµ¿áítnð7Â4ù¬©¢¿©jûk:Emó‰Ÿ Â±×$¼-oÐ5ÑÛ¡#cÅóðûš§mÌ}ËZ@vÚ=ªþd39î“%—Z½é—ÏsgÌÙ¤I“Ô²vBÒõœ™P#T˜Y€:#HMI×D¡C_/ó'¿K‘»ßDÓGþ‰ñò«42“$2“G¦¦è¹íÙt=gº=«ä­Ó!Kž]F×L÷D9â´Ã…߬­§‹¬ÑÊÜSVºªXògÞ:Sd盺‰¬©¾Ã/‰ þÇS7Kîn¸k«éæ_¶¿3”U¡ŸìZˆxhû©Ê¹÷b¥½Ý…íDUNž?ßX÷";sF-½ÛŒØ:Õ¦õ:¦ZµÐÞ­‡oiO6±ö¼•7ï´~}hêâS„é÷ …'o¬-òí.ø!ÌöUDàF¨½a(‰èHÙ&GlQ‘èœñ±]¿»ùz#Ü—º>Ð'âÓÿt{Ÿš™1jÊ>ÁüÏùý:áÇ sna:‘t?g†‰Åßm¥C¶³ÔÞtO:d•w$oЕóI×QrOÙøô¦›?²èý@‡¬³€¡C}|dZ.²`ôhºŸ3ƒq–ñ·‚Yü¬ªUI[åè3®ö˜&²"§TäÒ»«¥gõ/í*ùµÛÔ™éÿÒý`šéü’=¿ pïû;öÚLÚ2úÛâ’=¿Tëmü£@T”ç`…¹n×:©ª4êÿrÞo’îryG‘õzøsþë¾\#úæ½´úU%¯"+’™Â¿ƒé/UoûëvöÕhdFþ5¡Û]ÿRuR>ö4mÿ\¯DUE-?óò?$¿ñj¼¥pQMÄŒz=¹UÔòñf®ûv­­óòr‘'€ó]0~º¥ašù´ûŠ5hÌÊ_t@IDAT÷ˆvxbÇÛp¿¨(E~¹’:­å3"¢¹…Šˆýš‹q}öDÆ®Ëj í_ÈØKuÁ¿ë£[Ä‹"®rA¹îÄÕØ*Yƒç‡â•Å+Ño:½ãü²¯•³óÖ‘cÇŽ ðYenÓl=g†… ²°ô”åvÚš(tÈ¢w,oÐѹ¤;7(ÜéÑ!û{¬Ó!‹>ãéEçRÝsé…kØzÎ :daé)Ëí´=Q9¿S6þ£åL—_Š•¬ÎO`¥2ï¬xÖiË™å¡P­Ìùí%êXûÞF7QEÆ´Œ·f]9CŠæíÕHd«ƒ›Ç[µÒrùßã­tKŸY$垈·ð5ÛÛŸ·’ͺí.T¿÷Ôæâöb§ÑvjÓQ¥­‹}0Òz9X1r‰È刘Խ{¼êvË‹]9Ž#s®ùSJ]¸×¥Gj ²Ùîö.’_«9ö¨Ä¡Ê(¢ÛQí¾ac=9~F{²zG+»&®FåJe…¸®.¸c¶”:w Ú÷N"Wd#°Õ==与$ma‚žòð¬(ƒ\?¼ë|y[1úoY{÷nª‰üvÇaüd«zÙª_²T$KçGÊa'¢ò—|›/í¼ýÖ¡{Þþ¬@»©ã­z#rVKí¬©d-µg°VmD‡ötYú¿–ƒç+пcúu’ЬY·aŒU2̬š{/ÆsÑŒãMÑb\v¯qôៈXõiã!CD2Bf½ËÄ íçL7g¿U:dñ³ªV%mO:dæðòÛ10µ3‹€ßÜéÅ"mæÓ!3yÐ!Ã42s\0²è\‚žkû93è<轇µÏÖDY0žœá.}·9ÿB¬0ëÓîò$Vºê\ÔE²ê´ógχÖTé·cÔó Z»üæ¾½Ú ¦åˆÃðž·ŽŒéüXåôq¯œ{ö\n­öḦ½/mŽné-šPº@ýnÔÆÇJ½nňHL?¸û5MHŸ·ðü[gIÖ© jˆ|² ‹æƒÚJºñÎ ½UâJoüבu¡Ýw!Rs‹Š ä\ÔFôÔß*úµØ‘!8 KÀÞ£“£ÝÛ•C^–‹½SõOk%úk4Fþ&}%X©×¥ aÒ"ý»Wµ¾‡›U„IŸô¹‘Õò±óÀÆÐ¯öòU”A¯Ž0U”švt$kÍ|ì©Ùyúñˆ D’î.GtjE‰è=àXD>k«_QÒ¦:uaªSC]ŸÕeyã2D¾x.+÷µ´ç†ZÈáeD@½‘«ÒÐ_«dÍ9Ù=¶Âž½aÙhçÊ ØýoD°~û>Ím3¹/"*‘úóÙÓ¡§çuK¥hÉ2DÌž‰ RÖ¢ç9\E@»§¸ÇÎÛ¿¯;^ýŸVþû‚[þS½ºÆñe;¨ À"Ò¼×ùJÎK/½$’2Ȳ°õœiù´’6G‡,it™]ÑÖD¡C}ñKºsýæ®1-c9ZtÈà¸Ð!ƒCA‡ŒYº¯u¥ŸY(»ÓÖsfXàÐ! KOYngº'ÊìYXÑßuûÞrfSÎÝ(R½,+¢¶Dv~+“y«Y{FÈ,…jeÎo‡LËåpÅÊ×õª’ ïš#EŽžØU*2òÅ>˜'­On]•Š¨Ç çÂ1Xq÷\9~_1"n¯F°Gã§ÃnÑ‘…M{Œôž¢˜o·C¤då ‹Eï‘‹°§c÷r„b.ª@¨¦ÚWOíñÊQ{‰rôž#-={J×#²±ásD˜†¨vë“’ü[Ãn=õDAŠ(½5UD¨¦z랎 ª·(®þ׫›KÀAë¿NEÈv;ù;ÁÑÌS{—êªÈRžÒŸ§Òz¯“¶süqóÀ=‚Hd㮃—ÖÄÛ"_z«ƒïÐú½‘%oZëÕù'†~­;O²?¨·7ÎPo¹]»¦§è¯­Ú©Ï/^ù櫈„Ý~ñ©rá:D&®¨ö¯Ë‡þxõÅ*×°ÁTè/‚þW[ _fÍß2z•GW"ÿ´/ò)î+ýŽ˜/ù« ²9rÒÿ„¾Ôøœ˜c§ñŽèFÏM×u'ñ–dFÕÏ/é³ ó}Ôш Þü®“9ýn’ã_ûF$#dnú=ÝÏ™nÎ*y«tÈ’g—Ñ5Ó=QèU>|xƒ®œOºŽ¦‹{,Ç+V~¼ç·ð®9R” :dxàÔŽ—þÊ25£è)™-è…£Óýœ ÿ´’Ù?,øé_Ò5Q °Â~ÂQ‡Šµ¯¿ýNdv$²”ÌV{êåa¯Cí“›K¹:[â­WÿjjF~L—c‘°|<©tsטþ 㱇瑰WJGšÊ‹I*^ù܈èè½G«ßZ!g}è*Ìþe˜ŸV ²õAg8(-vÆž,9ËÚQ4ïÞ£Rõ¾ãñ¶ºûŠ¡Ñˆß®@Ä໎XqîÜ‘¸Mþµɉµ÷H·ÿë××‰Ê ×ª=:œÇ`!;ðxD˜<íߤ_ï)ò¼5Ïë€ínœ̓[õFÜ=[ÒoÌ+9¼÷©n÷0Ê¥šH÷u'Õö…­~é§hñ~-ö‘ï½ò¬È‹·ÅüœÔôxIÏ]ŒñÀxÙþŸ®çLÛçá—=:d~‘Ì0=éš(tÈâ(¼AÇÇÉïRéæN‡ ÌtÈâ¹tÈâãD‡,>NÕ¥²pôtºž3Ãqö›·’ÙæL˜ó M”3.9]úeR³DÖè˜ÚÊ­( ð¿t;>u§MK7wíí Þ¾øm1"aï÷ƪùS±ÿûLDººv@dÐà¦ÂEï=úmVöF¹# iûºõgïŒ7ÞŽ·:êþêšÞ³ôO¾ùU·¿#2wúóDÑÍùˆXQ²ö— ²uÏ}ÉíQÓÜ¡õïòñÜ5ˆ$=\†ÈÙ5w#RñŸËÉÐ啃ÏEkáÛà´¢ ‘½³E„ìä“Ì`¢ú¿ûÿãž+U[dãºtçËà²ÿ~ˆœ%ª×[~‹NÓ%«p-ÆË»_v–tŸmùó–O4Ý¥ ô¯\ŽÖ´é=DE›6Ø£–¨>oùŸU$êŒS±·gâÏÝ¥ˆúB„·xÂéRµgñþûñ¸úôoUŠ®¼‘ÔwK1ê«ßÿóÖ;ñ“•’õ„úÌ=ëy‹¤”N÷u'¥Æ…¨rÑÏ¿'u8MZ}ͥ׈ü}Ú4‘}·ë#rçíz‹Ì­‡=°Œ ëÿ‚öœi€Ç 2&A h…G¦ é~0¢Cfö"2“G¬²XdO‡¬r>Õå(²põtО3]Ó£Cæºj?¨åìËÎb™Û {VŠ1éf¥Û1Hºa^1]ܵ#¦÷† ©…HÊyï/¢ ³0ާ”a¥~R}üŽÎÏ#ÒrðÁÑ#-×_¾Dêÿò"öêtZ ½  â5jLÇ”z짉ˆÄ ÜwŽèP€ˆ]ƒ³™ylx›”ôëÊ}¶˜!çÍBdî?· ÂqÃõˆðérÉÊÛÔïK=7oq¼ö^è=çl¬'«W×›>½H>î±ËL‘/¾Ú^¤_2mgÿþ³åã³/`š_¬ûCï¥joÕÀo~E°tû×­C„¯A·×í iÒ ²YûìÔæ‰>¿deº®;ɶ'lõŠázÙs6"`¯Žx-ê)”©ùçŸ}&LJÞsHFÈ¢âJ{fPŸ3Ó~â1 Ð!‹¦ºgu¢Ð!«î#3½çŸ®#:d•÷²Êùè£tÈ4‰Ô$²Ôø­6² õH|í êsf|­÷¿2ÿ™f„Æ O”AWœ+œÇçY£+"^øE¿`OÊúÙXéovö¦xË-.Ç hç´öøÍ½¯Ú+¶å«ˆd]·‘”þYˆ0í£~ߨ9òó³°rR ìuš­ÞvW§ûïÂ^˜†®’¢múbOÚ‡Ÿa¯QUõ«:>gV ·Ürº=ñX콩"5UÕ÷x½úS¥è£ òvÆã­W¹;oCDò¤SÑþNÀ)®ÊqZ½ý–êÛ ã0åk!û±?ãÅׯ¥AÙ[oã¾pÃG×u÷ð'RšlSý¾î$ÛŽ°Õ«Po-yßøeܯ BПs:™&³Óè™<˜R‚>Qèq¨¦ƒ€ßFtÈë%:d‰ñò«42:d~%›zèÙ¤í¿­ ?gúÆ•k¤CV9Ÿj{4,傫Η>ú¦öW"ktÅÞ„ÂIø]™²7ñ;;ùñV¬–ƒ:„¢Oýv BqÒh¤ßÜõï}‰ÜÈê7¡)S‘²CJ°'kß"fÙ·õÏCçð['De舔嫷ñÝ~¿áÅ‹ð³E‹°×kûòj_U…µcðÁû¤h¼¿ V•^¯œ€æ^]"dýš/@–„µšû)­œöæGý¾îln!3sJßÂ…uÔCïÈ véÒ%¡ ËsNB'¢Âäov2“SŠ@X& 2Y? øý`D‡,±ÞÑŽ²Ä¸¥ZZs§C–*Éäêû}ÝI®á«E‡,|}öï‡å9óßmNçg:dé¤bÝa›(_{‘Ð;{´Èf“‹´5öt\¿¿£Ô‚²Êô7ÝÖƒQáì[=¿›´ìû5rrõjaÅwµŠEöÂïs%zæÜË”(±ê]>Ó²aãwÄî¾ä Ø«ÙyØ–èx[×@œlÐo§-^…=‘_±güކˆ¶Ã>" ­Áû½Õ¤N"Ä•Âöœ™nÔtÈÒM8¤úÃ6Qè…t ¬Ù¶ŒèEïøLw ¢ŸµûÜLçN‡ÌýK¥tÈR¡ܺa{ÎL7I:dé&Rýa›(ð®¾sðq"¿:©PäKê¥K×.T²ó¹‡,¤CÒJ³m9dÞ“)/Æï3­>Wý>¾³ÈœD̼å35éŽAPû-S¸/Y‚=Ž÷E$ì‘ሌõ«=šý7bÏæ{Ù¸?Ì=¶±tI³Mv«ëŽÓ“Žb|ÁÐY’[¾ý¸a5dY)"šMÔ–Õ­ÚJ¹ÉÓ°0Šª¸²Âöœ×I…¨ù›E‡ÌäÁ”"¶‰B‡ŒC×®Œè¡÷2Å1ðc,ÚÔ‘)ÜéÙ5þÛ¢Cæ?Ó k ÛsfºYÒ!K7áêËDùôã„ð]ÿ9EäÿŽÆï0iì¯LÁ§«æ×—-/è¨Zºr  ÅBã\s/ø+úCÀ[ß9‘] §™âfÈîƒ/Z$gýÊ Ø“9°HýÞŸz‹)ÞÁ‰,`oñ­u7Hùl‘-ÿ‹º¾îøFÉi\öÈ©¸CiȧÀ7šÔ¾uØziÿ(úum>~_Gÿ–çœÄÏ,5Èßì':d&¦°L:d²~pý`D‡l¶tguyÛŸŸc7]tÈè¥2~üªK‡Ì/’áЖçL[4éÙ"2;AŸ(ß}û­=áÈ"·nÀì¹)ÇWÎ#‹Wct};üYÓ ðÝó w‡kÇ è|ÒÕ>×ÜõË>¶˜†HÙ[Ï„c¼úÕ™âøÅÖžLã>a""'O<Œyôì+«åŽ5°‡l¿RDXÞ¬½d¥ç¶’ã ¶Å7)lq×v\_wt;‚"×}‚=€µ¾Á[h=MݾF÷¡ç.\*Y 6Ô‡’AÎIèdBX˜üÍN£Cfò`JúD¡CÆ¡š®Œè1B–Žq]•N:dtȪ#6Ó!³IÛ­ ?gÚ&C‡Ì6ñØ úD)+ÊÙG}$D³³±; + 2oúã¯Qnld­õn‚`vˆkÇ ˜TÒߪ p/}{aÞy¡ßN°§,ýÜZÈ4ÇÀ-Íø­g:÷ãa>[“+P ¿_'²dY±È¬f5DvÒM¤íA¹îØ>ïªìå?‹HçÌqX¨ùálì);ý#DÄ^|÷+Q±Í6ÛT¥*êñ ?çDmte’¿Ù™tÈLL)AŸ(tÈ8TÓA (FtÈðÚÿtô1unN€²ÍG…û:dîû -úsf:Ï=šn:dѨ0/’©åú!×Iï~°¿[–³u0ç)(ŽAu› Aá¾nVðuÁïðüç"·¿“dkdºc`‹c¢v2•û¼y%‚⋰רƱæžLýá’(W¿'ö«­È‰bLº|P®;IŸ€ÏK¾E$ìªþ¸_w~_t§mzˆ¥Š Øcvûã¯HúàƒNª™úœ“ •Èß„N‡ÌäÁ”"©…‡xe‚ò`D‡Œ²ÊÆ©ßÇèÑ!ó{L¥¢Y*ôÂS7SŸ3“í:dÉ’Ëðz™>Qnz“ôàè£Dæöª»Vz÷ Å1Èða¾Ùé…»þ¡èìWH'Œí¸Y[ÿÎЀ𕫨…B”™©ŽAл S¹?4¿K9ì\·lÌßõ ÊuÇõ8-œŽ=}ä"âußm÷GmÒ Ç.ù×ß|‡È^½zE-WUf¦?çTuþ®“¿ÙtÈLL)™>Qèq¨G#”#:dŒEŸéÊ£C–.²ñé Êu'¾Ö¦¯²ô± ¢æLÎL”9²D‰U“òÕe¢Üvß­Ò££–¾!Ò)Ëw‰äÏ~¿g³å½øÑ ñ¶®t Þ ÓE¶r½Aã^ô1öJ<|fž4ü÷iE"Ÿ|+ÿkòñ¶Ñ_ÃÞŠ Ò¹­œ^êG3Õ1HLz5d*÷ö›+àÊk'2ÝßlH¶—‚vÝIö<’­W²ß@iñ5úiì[ÿKVUBõªËsNBP,&62“SŠ@u™(tÈ8äÿM hFtÈþÝ;üœ.tÈÒE6>½A»îÄ×jÿJÑ!óe˜4U—çÌxû„Y¼¤ªY¹ê6Qîxàvéá·¾.²pÞʵ÷RD"^ÿ¹BòÛ݆HDFŒeâ”ʃÑúßòïêw![=cƒ¤÷Í«#².~ž'RûÐZ’~éÍö"Ãþ/Sƒ ÷K¦qÿzæËOBÖÚ¿çÔ~ÊuÇŸ¢gq?æ{iBݺu­4¥º=çXš€ò7aÑ!3y0¥T·‰B‡ŒCÿoAy0¢CÆ=d6g$2›´7·”ëÎæ-³“C‡Ìç Y©nÏ™Uñ§CV¡jz¼ºN”£ï/=Þdé"ŸÚ{tš=„½9moé.ù5§÷­vÕý-üsŽàw¬äÏ~hžœu»D`lÄ8Û5 ‘0ä–zø²Q_t’¬mz×Ö‡B-3Í1Kgd÷³/[,è¿mÒPd^gD–ƒÚ®®;®y”ŽA ž¾úYù°Ãö;XmRu}α ¹cäo¡Cfò`J¨®…Yõž®ŒèaÜešc–Ù”iÜé…cäÑ! G?¥«•Õõ93O:d±ÈTóüê6Q¹÷éñ™< òá½V# ùȵ¾ ²šM!3eH•CV¸oO\:b¡,_„ßã9¸‘±DÀ¦Vàmdßö-•r_Žïš!äq™æ„¥s2…ûÊ•øFÃÞ'`Õ:5{+]]wüŸs±¹uÃ,Ȳ•¸^e¯Àõ­t%®kÅ+qý|%~ôÆknô»)qé«nÏ9qA±XˆüMØtÈLL)Õm¢Ð!ãÐÿ›€«#:d™â„m6e w:dnG2·üÃf½º=gVÕ?tȪ"TMW—‰r݃¥‡'~ðŒÈ3{b/O^ú)Wò¢O!kw«Š5e„,§†+‡Ì˲h)V’WÆ[—Ž_#EZå`>5 +ÿXß[5ÔéLq ÂÖ aå^R‚ ôý÷®äwÞ¹Ldó> D6¹¿kôþÊu'UN?­+ŸG„rpßrIwÀV¾ˆ–ïþKuö¾V>Ü~çdXþ_]žs,cÛù›¨è™<˜RªËD¡CÆ!ÿoAy0¢CÆ·,þ{\¦û3²t®\P®;•·²ê£tȪfÄÿ¨.Ï™ÿœqåŸèUΧÚÍô‰²z5öˆ=ûÄ#ÒÇãÇ'2;ˆ,%³³ÞXZ(Çg·_"2g:“”ÿÿ2åí?™ôj *÷ŠRŒ·5Ï/£n!²Ï6™ñvEÝ«au tûÃ*ÃÂ}ñbì=ºåz\‡Gþ‘ãµñÅEØsùŸ"5[?¾¥tINm\ǃÚ?A½î$ËkÃÏë¥êÂóDþ|6®_Aã ?C~Zëùðü«£aù¦?çXÆ™°9ò7‘Ñ!3y0¥dúD¡CÆ¡@PŒèEë-æùE€™_$“ÓÔëNrg‰Ð!K–\õª—éÏ™‰ö&²D‰U“òœ(Ñ;úѧQùËÓR ]‘²L»AG§¼Ü s×?}TDl‡ÜØgšýL‡ÌäÁ”"À‰RùP6òq)ðÔ„'Dæì\yùDfê :Q¶Ë‡…{áSsÍäO;ŠÌÍͲ*-öÂâ¤åä* ÷âbìEzbøJ¡õ䣫Dæ/A$fõ»};G°—ìÒì%ë5b+‡t«6–ëNÕgb–(ýéG.ÀýrØ}wJF½¥ßŠül>öþÍZ€·cšµÓŸâsNúWfüM:tÈLL)œ(•:d•ó ëѰ<Ñ! ë f»é¹í—°\w¥D‡,QbÕ«<Ÿ3Íþ¦Cfò`JàD‰o(ŒxáI)øÄx¬fïŒ\oí5#Ñ(ÌÃï—µ:¹·ˆ‘ÎÔ´q’L„…{Á—ˆÜ}XM¡xèÁøÝ¥"M¨Iaq :©+÷‚üÎÕ6{ÏÊkc>,þoÑmR{Ëê=dÍöiÈÞËu'^xűG쬞çI•ÁƒUï¿û6I?ý4~ÿsÚŸ¸?…,$øœcr%&Èß„C‡ÌäÁ”"À‰ßP C§°” ˃²°Œ¨p´“™Û~ Ëu'^JtÈâ%U½Ëñ9Óì:d&¦N”ĆÂ3/a¥ïñqKÅìÿC¤lõ“XùÛ¹ _òÇ5Á±´8­m¥2í]éÉè`X¸.)j=¦"R6êÙÊÇS€WÚ”°:•žT†•û£Ö Ý?.Yo3¶òkDÊòÚ`OY®x+cк$,ת¸Î+–";,ý?‘Ï=ö|¥UæÍÃï”uèСÒré:Èçœt‘O/ù›œè™<˜R8Q tÈãÔÒay0¢CÔÎvÑ!sÛoa¹îTE‰YU„xüßøœùo‘2“SŠ'JrCá¹Wž“Š·ßŽïÌ_¾"c9%ØëpçDÈZžÞ®R™rƒ®ô$x0lÜKßX$ß~¿GÖ¹3öÐm\M «c×ɸPX¹ç¸íò7ùÓ!3y0¥p¢$6è%Æ+¨¥ƒú`äåE‡ÌK„éTÐ!K…^êuƒzÝ¡C–zßRCl|Î4ÙÐ!3y0¥p¢Ä7ž}v¤4è\T(Çïá$R^Oå*¿ûžm¥\ƒ3Wj ¨7èJƒÎ}ÎÙByÝÌ‘{æ"B°O Þ®Ø! +Ö£kl”ã[]‚=c· iŠÞ ›c ¨q42lÜ·Þó ï‚Nqœ]ð‹íº3ãêé­Fa™Èv²DvlˆûY÷zx«â““r$Ö¼Å"›7ÇÛ.%‚|ÎqÛIäoò§Cfò`JàD‰o(Ð!‹SXJíÁÈË™—Ó~ CæÅäuíºC‡,ù¾dÍø ð9ÓdE‡ÌäÁ”"À‰’ØP(*Â[¿²³±‡'+ +Š:­å›ï¾!Šï|ç‘9{a¥Ñk-h7hoû25tî³o%èË‹<´²ý*j]r^ÎjI/Z²•È 0.BL„Í1 ¤šî|ˆ·Š^ñ&®·yýš&u¾A«´ëNÙÚRA4ýÚ?D¾}"cûwÔüvx¡¡||òOEn¿ýöúP($ŸsÜvù›üé™<˜R8Q tÈãÔÒA{0òr¢Cæ%´èùA1yA»îÐ!K¾/Y3~|Î4YÑ!3y0¥p¢¤w(¼ýþ(1pû[·ŠÌÞÛŒ”í^ÁÑîEË![ý.Þ®¸hÜ*Ø7{ɺTGÒ¯Žê¸q´$,ŽA§ª"Aå¾f ö0Ý?oU|r8"¿ÎÃ[j„üíŠzýº³tèLiê©-pݹsoôË‘£!;å¦gåøG¡O)’Ï9n»‰üMþtÈLL)œ(é tÈÒË7YíA0ÒçE‡L“ ôƒ2?(&¯#è×:dÉ÷-kÆ&ÀçL“ 2“SŠ'Š¡0úƒÑbèÖ×n™½¾£ë½bÔ)×hÞf•[o¹²ÓÚÌ·‹{ÐϼB½ÅsáS ¤©CÎi òÌSñ»wAo¿n_PݾL•®¹«—ÑF~ù¿›wÏmˆˆ½÷á:A¾{%[—`/äë=Ðí®é”]ôëNé[ؽgë¾Â{îïŠì\o{í|ÌPI<8TýÁç·ÝEþ&:d&¦N;C™ÎñZ úƒQ¬ó C‹ óã!@‡,Jé+ôë²ôõ}uÖÌçL³÷³ú÷ïo¾6Ç<î<5iÒ$iCß¾X™qÞ jÒr·ÛÑ+Vb/ÐÌ%Šáëð;Ry°¨pV"K‹°×¬îu¥\V6V.í¶6s­Ì1¹‡íLËKq9¯± o¡Û~DÂr“~ÿ¾Ûa܇¥Ýao§kîee·_}µAP6¬@$¬u$ú7¦gá-€µ»bœd× Ç[Dc“ ^wÊW£_º4ï*MoѼ…ÈåË–‰œ2åW‘mÛâ÷5{l±¥¤ÃòÏ9n{ŠüMþtÈLL)œ(v‡2»¼cY êƒQ¬özóéy‰0:dñPJ_™ ^w襯ϩ9ás¦9 ø•E“SŠCÉn†ÂGŸ~$†=å‘õꔈ|½ÞnµßKh×n%rê„{egœÿAÿêP¼¤JÞÃ^îo,Uú„$Ræú«sñòÍ´r®¹—«—Ì~õ5"dÃ\)ˆßù{Èvàwöú—CNÏÆ[þ>ÛomuV›PwIЮ;…Sqß9¢1îC·_{{T¾sçΕü ùø}¸­{öŠZ.¨™|ÎqÛ3äoò§Cfò`JàDq3è¹á®­íÁH·+QI‡,QbÕ»<2·ý´ë2·ã¡ºXçs¦ÙÓtÈLL)œ(n‡BƒzØñÞ±Ø ´W|—¿î=Ø3Öã~|W?'/ú ·­¯õ =%Krý4Dލ½‡w߈½Éê³Uϵc`ë<ƒf'¨ÜÇþ/_PqöØÌÅ7êäãz¸¸éížé)座6(×â刌uœÜ]x¾÷ß÷‚6T}mŸs|Å™°2ò7‘Ñ!3y0¥p¢¸ tÈÜðʃQªgO‡,U‚Õ«>2·ý”ë2·ã ºYçs¦ÙãtÈLL)œ(n†ÂÞ;o#†óL9á¬ëÖÔS²î÷©Y]FÈ4?dPŒü8—¿uŽÀÉŸu•¹¹Á~+gP¿ú#¨z‚ÊýÌ˰r|3ü®^^G|s@¿cí¸µ‚´ÙÁÍDÖh”TÄ•¶+(×§°™oò?K{ssÃɳRØÿ:ÈçœÁpð‘üMètÈLL)œ(n†27ܵՠ<éö¤*é¥J°zÔ§Cæ¶ŸƒrÝ¡CævT7ë|Î4{œ™Éƒ)E€ÅîPØy;¼ªEÉ1ç¸÷äoò§Cfò`JàD±;¾þúk18cÆ ‘÷߿ȫ®ºJdv6~o¬¨o]öÉcÈ?‘3Ið_Êl?¥Üà*-Å x÷)xKݨgÛJ^\#òá¡Èxh}Iß>¤eÓ{8hŽAzÏ68ÚƒÆ}ijŸ÷ÿ„ÈmýVZâ÷u§<÷……Í–ÖV ½~5"YÀi¨"â;ﲇ”{çÃ/ÒpvÁUÉç·}Cþ&:d&¦N»C™]Þ±¬ùý`ËŽ­|:d¶H‡Û2·ýç÷u‡Y|ýÉçœø8¥«ù›dé™<˜R8QÜ…ªøÿq¼4ð‚ûΙ=‘2?zÌï#?Ú”ŠŽ ³6Jõ5Ï,¹|1"¬{Ô­-éE7¼ŽÈÙþû!R–ŠÍTêÍ1Hå\ÂT7hÜw?tžàËØFdn½Ì~›¬ß׊2„Àf];]ø½%öŒÝ°+dCl‹|¿£tð[ȇñ“GF5ù_Õ}¶š`pvšäo¢§Cfò`JàDq;ªâO‡,=ýã÷ƒQzZ¿V:dñ³ªÎ%é¹í}¿¯;tÈâëϪî³ñia©d ¿IŽ™Éƒ)E€ÅíPˆ—ÿ†ºû‘ÙcÔmëÃkÝï#Û$–´RL®ý²>d‘Å5$¯"cK"ˆŒ=Óº@òÿ˜ƒrÛíõÚ šcàm_¦¦ƒÂýÇ °gÝ¿NP×<¨E¦"7Î+Ý×ÕÏ#BÞgõz±;ê0ÌÿÅùhÆöÏ7”‹–cïžÑ¸ NÄ{ŸÍ`NOüMütÈLL)œ(n‡B¼üéùÛOé~0ò·µ›k£C¶9æTM€YÕŒÒY"Ý×:dÑ{/ÞûlôÚÌM•ù›é™<˜R8QÜ…DùO˜4A|γDæ=RöóÙSåx‹š‰l}´Û·êI#ô/ÝFé>ÕEÌë§`éû°rüŽÝjÓˆjÀóyˆŒ{OÉ9çÈt·¯*ýAq ªjg¦ ÷Á×-´çÖY¯G^¦¡Žz>¶®;«ïY%ök®A¤ì‡Ó Åï—ÈñœœÌÞ³§;!Ñû¬®Géò79Ò!3y0¥p¢¸ ‰ò§CæOÙz0ò§µ›k¡C¶9æTM€YÕŒÒYÂÖu‡™Ù‹‰ÞgÍÚL¥J€üM‚tÈLL)œ(n‡B²üúù'iøY·ž.2û0Dʦ BdìÚ]ðö­§ê"BÖê˜VnO4`Öm=¥û´‹Wb¥{Õ»ËÅÔ¢¯°2¾o."fã"…’¿qc¯t7%!ýAq jtvÅ}þ|ŒÓ[o\*Ç|€ÈnÛ‚±§ÑVצûºSú"`O]ùŒœRýºõDî´ÃvH×FD웉¸OtêÔIò3ý_²÷ÙLçbëüÈß$M‡ÌäÁ”"À‰âv($ËŸYjý–î£ÔZm:dñ³bÉH„™ÛQîë²èý›ì}6º6æ&J€üMbtÈLL)œ(n‡Bªüú«œÀN}ûˆ\r9"cÃÄy=V›²h=œî£h6­ä¡û#óŸÆíÒ‘Ów^ï`Å|¼F\9ñ¶/SËÙâ>î› ‚ðžÛ¹ýa<ö2ö/ÂÛ?ÍFÄlÃ9ˆÜ7Ú±A¦"7Î+]×’ð6Å w¼Tì{ú¹†]8âåããO"‚Ö¦ ~ÿMÏT™ê}6S¹Ø:/ò7IÓ!3y0¥p¢¸ ©ò§C–\ÿ¥ëÁ(¹ÖøX‹™03O2·}š®ë²Êû5ÕûlåÚy´*äo¢Cfò`JàDq;Råß´!ÞR6ã<¬@7ÁÖ¡È=ß༩ÑT>´:®µÛ ˜õt=ì4#%ÿÅÛ?{©­4­iÓ`¼UÍ–c´þpÝžts¿öª%rŠÏ Ç^ƃTDlß,DÆôùÿQQ*‡µ)Ù鎮úPFK¿¯;E³Ào÷‚~Âmø½Od4¿dO.Õûl²vYÈß tÈLL)œ(n‡Bªüé%×~?%׊ô×¢C–~Æa²@‡Ìmoù}Ý¡C_¦zŸÏ KÅ"@þ&:d&¦N·C!Qþ7n”·iÈ×3‘n ~~J}c-ò:^¢ùP•ku<#dÿîi¿Œþ­;HŸ×·Zšsí.Ù"O?¹Q š—nÇ 'ÀF¤›ûâ%ˆ|| ²'‡A6,ÂÛÿöȯ)TvÍÂëêšø}¬†Wµ—ü¼Î*Ä@v~4ɯëNéì«7¦±4kÜõ•?™:½Ïf §§Dþ&~:d&¦N·C!QþtÈüé/¿ŒüiMú´Ð!KÛ0j¦Cæ¶×üºîÐ!K¬½Ï&¦¥«"@þ&!:d&¦N·C!Qþï¼ý–4øá{î™È‡–YYX‰^Ÿ·œ­kŒ•Ô:§Öp{¢³î׃QÀNk³æ”®CÄ¢ñXìíùümD"6+h9#ÝŽåÓ 9WÜO9oýüèË"aµfö¼vÿöÎ;@Š¢iã{ îŽ%g‘¤`QãkÂf1"¯9aF0aDQÁ€ L ‚ADQ‘œóqÇåð½_=3J¯›wfzvöùgjk¦§ªû×ݳW[×=©x.í而Y³[$ ËX*jÕs§ôuxŸýÆò¡^=ì¦K’ážh¿g“‰“m$•62•5ƒ'ŠÞ¡-dÖô—UYSû¬0 ³m"Zf@¦·×¬zî0 ‹®£ýžÎ:K‡#@þ*!d*jN½CÁnþ+W­”ž:bˆÈô3ÍUfzÛ­Û»UénG¤þK?B†lÒ-XsÒ¥³ºë]¤v¬*§+0°ªþ‰jÇiîx žï ^«Yöe-EV”â9´ó ¬1+]ÌY£ó±Ö5%™þDå¬ÞÁž;{–æË-E›À¡r;vOLÙYjHŠùž~þ )êSƒ¹âù}Øý=»+~ @€üU( ÈTÔ œ(z‡‚Ýüîß`.øg%~ZÑdVPŒÝF°ç²Ø™Fr§Ýß³‘Ô!™Ë¿Úû ÈTÔ œ(z‡‚SüW¯Y- =ùòÁ"3ÎÒÛnÝÞƒýa¤»^vùÏû k O©‚µ;ÝÕÀ.WÙu:0ˆ¨RIPÈiî~¼G¨Þô>2=Ù½±;l ØÄ`ÏÝï#ƒþ2†ÃBj±yM˜1åÃó°Kå·¼$Î=÷Ü€~xR%àÔ÷¬ê•šI€üM ÈTÔ œ(z‡‚Sü©ýì#µ”w4dÞéËxZ€,zñßì¹Ã€,~¶¡,8õ=ªÉ|üÕÞg@¦ò fàDÑ;œæ¿ný:iðà‹O™~và5e¹¥r}Õ˜Õ"ÛÜßN¤WÁþ0òJû‚µ£p¹ôÓì"W­Bæâ…çðËüï˱†eê4\ÏȰg-ÓA0ÉvÞiî§^„ÝÿèˆÌXf#ã…‰ÉÞho¸çΞ϶IÉ*ßnùëEØ%×ÄuËéò±æÀÑ"o¾åóeNφ¨JR^"µÛ©<¨8Qô§ù3 C‡ûÃH侮Ï;2ûØ&‚edz{)Üs‡™=ýãô÷¬=­H\«ä¯ö2•5ƒ'ŠÞ¡ ‹ÿÆM¥áÇ_8PdÆ9È”•í@flÓ}Êùm»±–¡ÛËée±÷pYìÎ5æ6¾ˆ i͵…R§½»Ð¿ ÓDï0$Kää7í}_™Ók:@sEœânf^‡\ŒOÆéûin¹;ÜGúÜÙk¬ùücÌ*©ø—¢þßcúú–6¹HN<=kÉÜÑ:÷ÖB×÷¬{‰8[3òWy3 SyP3p¢è ºø3 [-ßnTK½Àaï Èî2w Èôv2=üu}Ïêi­û¼’¿Ú' ÈTÔ œ(z‡‚nþ[¶n}Oï%róÏÈŒm¿™“”{À§û+Ìé)Ñy/X ØîOvÈ›~Ø-òðªÈ€õ+ÅnmíS°&å¶j¹r}æÜÖ"÷ßßÞµ>NÒþ&à÷GžÀ¸{am†ø®Ñ5çï:$ó‡H²²·±vsÚ3 ®S+òð¤ÈÖÕ<\ôé3¿Jfœ·]÷÷lÄõhAòW;–™ÊƒšA€EïPÐÍŸYK½À&ï Èl›àféí@dzøëþžÕÓj÷x%µ/©<¨8QôÝü7kɺØV@l¾™“JÚ½øÔåÅŽò!%¿Üš×UFú‡Q¢¶oÇ4¬ÝÙô!äi)ÈŒ_‘©4iI%Ö þÔ»¹Íú2¥ ŠS UOh“Nqïrìjá”v~s‘)éÞxnÄÛùáž;e_ÀÃ猑Çw¼âòœÓN=//O䇟1C¦ ¢èþž R­¤9MþjW3 SyP3p¢è ºù3 k©wØä™M`Ü,2½È€LÝß³zZí¯ä¯ö2•5ƒ'ŠÞ¡ ‹ÿömȜп`o»¾( ˆôûpºó#C–æ_ºÃýaFž,Ý… ØÎéx¯Ñú/°¶§_2fë3ʤUãßo*²_ßꎴҩÀÀ‘Æ$»¸ÿöÞ_wù%xïØæL¬A̹»+î;<‚=wJ~Æ<<«ÉP)~ë ·î{Û¿>¯\¹RεníLFû_H°º¾g “mÕ%-2•5ƒ'ŠÞ¡ ‹?²ÕÒñ^ße‘™Þùí6ï Èôö2=üu}Ïêi­û¼’¿Ú' ÈTÔ œ(z‡‚Óü ¤Á‡vAÆ+2eØSÑç«ÄëÈ|åå8“’Ùx Ö˜¥0C¦wÀXä}Ë{[ÅRêØ}qÍÚYŽÌŒ]AdÞ“·”UÜ?ýk˜ÆÜ‹çǪå%µw>vï|͇çL——ðœI^âjËý²’MÈ`wø»Ø¾óÒ»ê Ô,!àô÷¬%•öòW;“™ÊƒšA€EïPpš?2ô·ÿFzGóÞ9ÏÜ éíÿç2gúÃéïYgZ•8^È_í+d*jN½CAÿmƲÂB쪘šš* RR°FÌÔMÙï?}åzÕ‹¸†LÖ{Ñ,d8ž^M ÷:ÒZ/ÿ¶fU`ðoË<Š@¼Üí²BÌï^…5O§b-b§¼oÌôýB2dkN¯%§êõ«k^Jjùw@vcKáP4ÿðëÜ¥IÍÅîÆëúžµ»]‰bŸüÕžb@¦ò fàDÑ;tñg@¶Z:ÞëkÈÂndáyë:2½ýÉ€L]ß³zZë>¯ä¯ö 2•5ƒ'ŠÞ¡(üÍuì1ðP–95½ôb÷þ÷F£ZÆnÄwš/>bG®´æÅÇ;ÒªxG*éA'ñrÿdÖŽƒ];ç/@&ì¨rìªØÛæšÔÑ9{…bûÇ]£¨«ë*˱·d'Ö†•ì0¤¡oúk7[´Åî“Ož%UmÛktuÕÛë~å{Ö«ý@þjÏ2 SyP3p¢è ‰ÂŸ™Þqb—wdv‘u§]döö 2{ùÆj=Q¾gcmŸÛï#µ‡©<¨8Qô…Dã_T„÷•uïÛMÀe]š`éJüB^¸¿×èäÌ{®BVê™!S •¾¾NNÌ~¿Ü׫—®°X‹70°¸:IcÎjîÛ¶a-Y£W Ãí[ÊE6¨@½¨ ¹²jWb\ÕèœãiÖK¯Z&í«•‰f6©‰5·­jàù÷Ã*ðØU‚Ý(÷àýmž†â‚Æ%Ú÷¬ YZòWq2 SyP3p¢è ‰ÆŸ™Þñb—wdv‘u—]döö2{ùÆj=Ѿgcm§[ï#µg©<¨8Qô…Då_Zе{,³/S3*EKöÈùÝ“‘yñõi z£ëënxg†Lí†üy»äÄ{àýaç×V X¬YX\=Ïš³šûü°†ì’Ç1ß« j(ìò–#3¾û#¬5Ë>™±ºÇÕñ,ÛÿoXÑŸh÷êGWK;º™±¶F³û¿*§}s7bWÊm;ðÀììl\àщú=k FÉ_…΀LåAÍ À‰¢w($*dzÇÕÞYMÔöÙÛ/ Èìå«õDýžµ½n»üÕa@¦ò fàDÑ;EÖDtdG™z$~1Ï™¾AôÞ°¦äÕøå¼Ñ`fÈôޏÀÞËö`-P­Ï6K/?h¸ Eg­ ,ª–çÍXÍ}ÄÍ[„Ùç™XZ½mLE>Ÿ7^cvœ”ïÅsoÍHÙ'zá99ù'€XW„Œá´9 äz‡ɱ eXp6HôïY›°8f–üUÔ ÈTÔ œ(z‡B¢óg@¦wüXå™U$Ým‡™3ýÀÌΑzIôïÙHÛéÖrä¯ö 2•5ƒ'ŠÞ¡àþ³g~" o¾ø$‘ †ãâÛ¿ß—ë!CÖø$fÈôޏÐÞK?B†ì•›kIÁ®]²D¾ÿ>Ö½ýÖ¼Œyï+kÖ kaB[ý÷U«ƒ{à™@¬âž—‡ŒÏ§`hÕ ›r—ôç 'à9xp}ð™ûõlaÒa?dG=ö¶èæ÷@Ò³ €ÉwÖ,¼÷Í&74„ù«`©<¨8Qô¯ðg@¦wYå™U$Ýi‡™³ý€ÌYÞÁ¼yå{6XûÜ~žüÕb@¦ò fàDÑ;ÿ—³?€÷Œ8KäÿÁn}&Õ;¿Ä§‰u±Ëbã“ Íëº$wY L~Ç7迆?A.[†÷ÎퟎLØò2쮹'k[ ÖªÀ ¼'–Ø—€UÜ_3WÌÞû52@Õ°wWÎ}۟˦c±Üä»_“êÜ »Ñvh×Vôü›DÞûÈx‘Æ Ƀ=ý{Ö*ÎY%•52•5ƒ'ŠÞ¡èüé?V{g@f5QwÙc@æL0 s†s¤^ý{6Òvºµù«=ÀLåAÍ À‰¢w($*ÿ÷ßÅڇ미Pžs`‰È c7µJc;µïÖàôUÝ ÙÉ\C¦wÄÁ{E):jç·È„åÍÜ)Òs±Ûbß’ª¢÷öAΨ‚LY·±;ÜíwÅ—é´*0pËDªƒUÜûŸ±^š½µÖ†fÔRßC˜HL¬¬ké÷˜W£zß$fÏ;k¨bÞ|Þßr3®÷<ìp¹^­Z5¥k ˜Ü¹†ÌZ®‘Z#•2•5ƒ'ŠÞ¡¨üé7ñzg@/ÁļŸ™½ýÆ€Ì^¾±ZOÔïÙXÛë¶ûÈ_íd*jN½C!QùoØ€÷ŒMš4I¦¤`ÍDjjj@ý_賑IK­Šrºè'û²âÍÅ‚~ùm+DöNÉ9´ï‘òï‹SAÛµë@)—•å_BNG|°*0ˆØ! x¹ÿü 2¥CG#³šqr#’ýâ?ð\ëŸ:Hx`cè$¹ëí,òWù3 SyP3p¢è ‰ÊŸ™Þq¯wdñLÌûÙÓo Èìáj•ÕDýžµªýºí¿Ú ÈTÔ œ(z‡B²ñ?¤ow^~&~iOËŒ/Ókï%{†ÌäVºkÆvNß&§6ÌÞ!²O¼¬a)ú'û¬*rþÅÉMÍ[ã’ñq9Oâ›cå¾àÇB¡vÙ%ÈŒçõÚ±¦0Y‘–k.ë}÷òÍ~NHÉö¼ ÃÁ‹äî ì®È_…€LåAÍ À‰¢w($dzÇ›¿wdþD¼­3 ³¶YËÓ.kÉö=kÇXí’¿JŽ™ÊƒšA€EïPHVþ=ú*àKOÛ+2-+ÍÑŽ`†,4îm3)+ø™³™Ÿ·”ºuEæ,ôÝá¯Æ„·Ì¡DÊýÝwñž±‡G£ÿó6`·Ô–yȘþÒk_nMÆ4TÝt­,Jwá}|©³± éÜéßK5srBg “õy¯»É]o¿ÊŸ™ÊƒšA€EïPHVþ ÈôŽ»pÞ…#”˜×Å×o Èâã§ëîdýžÕÅÛß/ù«D©<¨8Qô…dçøÀäŠNÊ™VM]SVð~¡_ýáv¹~àø,é0fÈ"øg1úå’æÈŒº¶nd7†)i`Æ /GI ÷œœ¥bñÀŒ ‘ó‘ k—¢¾gì"vÝìô,æcjuÞFY-×ßû Æûî·JÌIÌÛ…µ–UÅ—“Ž]e/¹î6)w÷Ý£#jC²?ï#‚dC!r·j&É_…Å€LåAÍ À‰¢w($;dzÇ_8ï ÈÂJ¬ë ÈB÷²Ð|õj²Ïêî7òW{€™ÊƒšA€EïP ð?ê„#åÃÞA»E}‹5L‡®Dfìí%rþ ç;â†8ÌE°²,§ŒÑ@IDAT¬R V¼ºVäâÙ-#»1L©pA˜Ûy9Fá¸_uÅF±üÖ›˜‡mS‘;"»lvK|3».þ<k¦œR?ƹë¶2#öû­¿KÅï‡ú í„ymdÈ&.Æùïkž%^œ<'Âù¼ȦËänØÍ’¿ Š™ÊƒšA€EïP ðg@¦wó΀,™Ä<Ï€,t¿1 Í'Q¯ò{VoÏ‘¿ÊŸ™ÊƒšA€EïP •ÿÁ[ʉ®YëE>},v5«÷(Öl0C¦òrJ+š…µ|O¯&.{«ÿpA¬vy_hÑrᬻívô¾ñÞº#|Ø]ð›ÔqØéykÖv†®½óW·ŽýKœžS¯XäC½©ÿ §}ãÖöó3¿šQåø¼“å…ÈÝr¤Q$2•5ƒ'ŠÞ¡@þ*d*·h ÈÜÒñÕƒYtüEÇË­¥ù=«·gÈ_åÏ€LåAÍ À‰¢w(?ø?ûøùðË{‰|æØ]" °¹Ÿ¯öXdÈ:MèˆâJ²>ï÷A å#¹kÁþ·Sòÿ…|`@¦ò fàDÑ;’•?2½ã.Vï Èb%çŽûEÖ È"ã”(¥’õ{Ö-ýCþjO0 SyP3p¢è äÿÿ 7lî¹VdzÝØÖ01Cw³t™ñª²IXKÖ¨ ®,Y‚Ýç̼å”i-äBŸ>ßWi``ú¥´†@¤ÜÏ»r“8\ܬ–Ȭf3ÖÔÊ=VJ#Ó{QûK¤R×_yƒ¥•ãóÞRœ#÷ˆQÙRüU¬ ÈTÔ œ(z‡ùGÇŸYt¼¬.Í€Ìj¢ÎÚc@š7²Ð|õ*¿gõöù«ü©<¨8Qôòÿ g’×w[%2£At™2fÈ"ã^¼­D îúkö}ƒ÷OàCj¬9ÖÌÔòaÍ͔Ȕýúgû" BáŨ „ã¾q#¶5=þÒ-b;ã¬&QûHÄŠ×bœwÛÜSª?ééɶ4ƒÏ{[°†5JîaÙZ€üU¼ ÈTÔ œ(z‡ùÇÆŸYlÜ¢½‹Y´ÄÜ]žYàþa@˜‹WÎò{VoO’¿ÊŸ™ÊƒšA€EïP ÿøø>÷D1°¶ó_"3Δ홲A®—6˹óû\‘íFµÉC`¿^ñ›\èP ®WTbMXu##fÞ5±Ú^ùxÑãõDž>v_4¯ûËpyêÖÇýé ØEó‰¥ÈxÖ8»eZãÝ}V*J*¤R)Sé]8g‘­•äóÞV¼A“{P4Ž\ 32•5ƒ'ŠÞ¡@þññg@¿pw3 G(±®3 Sû‹™Êë¿gõö,ù«ü©<¨8Qôò·†ÿóOC«:þ!2£2:»_ÄnŒõ7à½Jn$×w/Ü#’2ÁôP¶·\®íø`«ÈM³±†ìè ìº×· ™…q™à¹+·cP[û^ì[–Ÿ­#ŒûÌÏ0?F\Ý«_×Zœ¦e¥ZçÜAK¹?剷â­XV¹2e;ÞgXºkåÒK°/èWßü"å[·F»íª*Ÿ÷v‘ m—ÜCó±û*ù«„©<¨8Qôò·†?2k8ú[a@æO$±ud È{ÇV{~ÏÆÆÍª»È_%É€LåAÍ À‰¢w(¿µüOvš\¼ìs‘W7À/ÿK·VŠþYûÆ"w/b†L@ÄxØ> ».nŸŠÌÙÈëꊥ{îk‘Å`AD7³PÌLî眅µaÜ·]l¥íÀüÈ-Æšª¬‘Íä|Îþß#sºqËøÕâ©é¬m<£=Ú×ÌX×Ü|”%åÞšñ½ÈÎ;‹´ëÀç½]dCÛ%÷Ð|ì¾Jþ*ad*jN½Cü­åÏ€ÌZžÁ¬1 FÆÝ硹{œZ];~ÏZM4:{ä¯òb@¦ò fàDÑ;ÈßZþ#†Ÿ#[m|[äÈžXuÙ ì÷i;¬!Ë]Œ5&\CsN›%È´|0)²÷V™Á¬™­â«ïŽˆÀ¯î–rC‡¯Ù»2Cýöb `³¬¥ZT‰µVo¥¦7·ŒÈ¾[ íz»«°ñNÁóÀ¬ïIï#UvÉ}¯Ê©Áƒ›—l‘|ÞÛ‚5¬Qr‹ÈÖä¯âe@¦ò fàDÑ;ÈßZþ Ȭåβp„Üq2wŒD=µà÷¬î¦Wò7I@2 SyP3p¢è äo ÿë.;_ µÚü¾Èk»bí˜iý #Cöq[#CfìÂÆ ™I(>Y:u£xol}‘mÚT i²x,¿øÅ¬¥:åÔÕb;Û‡Ý.A?SŽLYMãüˆ ¼§¯ù}Øu°J½Ðýiy…-6¸k&Ö<ºM,ÿ|i™È;¿Án¡œ;Vô«®ºÊbϪ9>ïUNiäîéÀ~È_å€LåAÍ À‰¢w(¿5üYÃ1V+ Èb%çÌ} È93ÒÜé…ß³zû…üUþ ÈTÔ œ(z‡ùÇÇÿŽ[ooNzVdͪX+VMÕ|¦Ü‘‹ Aú`첸sÑ.)Ï Y|üÍ»óŒŒãÅÍð~§Q×b×Eóº¿d†ÌŸˆ3ºÉ}ÂsXëwí5xïØ¬ÙÈ(·NÏŠÔ+Â<úëèlÑ]´Ÿ3´Ú‹ñ(š€Ý#§Mž&ztÇnŠCÚŠ^ïØëD><öQ«k Øãó^Áá˜BèˆüU, ÈTÔ œ(z‡ùÇÇŸY|ü¬º›™U$íµÃ€Œ™½#ÌÖù=«·_È_åÏ€LåAÍ À‰¢w(|ü÷ìÁbýåË—‹¡´4ì—šŠ52¦ÌÈÀ/ÿ=ó”{Æ{";ÜÁ]þâëÜ]Y†TDŤµrbñ-Cš5åý¹{*v]ÜÑk+ V!c”g¬¹*ÌÅZ«v´µ¼.N,™¾·yWܵo×^qÛ£ó¢÷îs¬È1?­\·ZáóÞj¢‘Ù#÷È8ÙUŠüU² ÈTÔ œ(z‡ùÇÇŸY|ü¬º›™U$íµÃ€Œ™½#ÌÖù=«·_È_åŸÒ¯_?ã¿©Õ nÑ-Z$UéÖ­›[ª”õ w½ÝLþzøóí7â8c¿t‘©Yø%]Om¼ãµ|Þcµÿ~ÈTÖ® éßÂE‹‘‰éÖïÃò¿NÝ&÷ví°«âÒUXó—Zº¿×JcfJjbÍŠ]øs§u}ìÙ ~Cÿ¦)zI Æm•*öî&É罂Ý1…ÜCÐù«X©<¨8Qôò×ß™=ÜÙÃÕ*« È“d@˜‹WÎò{VoO’¿ÊŸÿ²¨ò f`*YïP =üMî-j.ø±Ö<‘é-±öÌ¿V•åøÅ½`9v£ËjWMФV \ÞÿþdÑ ÖIS{nÅ{¬^~k“Ìönìæ7ê¿ØÝoñÂvæ%J˜ÿ²ØíŒßJ°‹bÎШ‚­.ŠCÆopõSÅÏ·?`«¿h›ÏY³fE{+ËÇA€Üã€gÁ­ä¯Bd@¦ò fàDÑ;È_“;2kù3 ³–§ÕÖYM4:{æs‡YtÜâ-MîñŒï~òWù1 SyP3p¢è 䯇¿?÷Ën¼T*2¿Ú·"Ó[«kŸÖßõ‡œÏÛ]çxê@=O¯×HMuÅÚ¤7^Û-z:h¾ÒêhȦØå.Aš•ðÕì{Ü*iÖb¬ ˼¤E·éÿP²kÀš/Än½ñ±+ÛåÿÜqe%=X)r×Û©ä¯òg@¦ò fàDÑ;È_î ȬídÖò´Ê2«HÆfÇÿ¹›Þ-r–˜µåÉ_åÉ€LåAÍ À‰¢w(¿þÁ¸_ùß+¤Bße~-rÇ”¿D>Ñ¿À_ô)ÖŒµ’™}{n×|¬ûûýUë ëïC†¬WE¦“'²U'ìf÷í×mö5ÃÏ6èÜíOñPrHm‘ÕŽ©k³ÇøÌ›k7K¶cmXÉNC±Òm˜—Õ6䈣_¿_.Ò|ï`|Þ­¿;ØsÇzO´¸/rß—†óŸÉ_e΀LåAÍ À‰¢w(¿þÁ¸3 ‹­?ÅÆÍé»9M\õì¹£–¢f5r·šhtöÈ_åÅ€LåAÍ À‰¢w(¿þḷoQO*öLŸ";ÕÇ.‹mŸG†¬Ãx®!û0F1{=ÖÖ]†LX—õ}N +‘Éø³—àô§‚笙­p‚GG4hŠ RÑà^µ¾ÚOŽT" '‹‡ý*¥ÕƼkZ kßZ×Äø©Z^!×)E¦uáÒQXw¾h¸çŽó5Jä®·ŸÉ_åÏ€LåAÍ À‰¢w(¿þá¸3 ‹¬_EÆÉ-¥éí‰pϽµó®wr×Û·ä¯òg@¦ò fàDÑ;È_ÿ`ÜûÑU*tK‡¥"û¶Àš•­{QÏ6Ì)V¾·\ôíÓ¶ŠÜ4Å#3)\Š5d/gÈõç>l*rô½(Ï ™à°ýðä“ÛÅÇ­÷m¹ÿ£ûÛîÓ ysPïÔ9¨÷oÃ1ÞLÛ«±y§¯Ï;Èh¯Ú€ræu·É`Ï·ÕÓkõ!w½=Jþ*d*jN½CüõðÆYtýÁ€,:^ºJ3 ÓE^õì¹£–¢f5r·šhtöÈ_åÅ€LåAÍ À‰¢w(¿þþÜ;€5(GÕ\+j_k¢*°TÅ—%P¾æb KÇç;ê©x‚xÝþù©é¶÷ŒŒLÓ Ñ.Ã{¢Ì3CfO‡>ùø}üs°¹¥ï÷Œë./%Öø-\U( –݃5‹?\nÝCfÜ‹yY^5eöPߪÿs'~‹´ r„’}eÈ_eË€LåAÍ À‰¢w(¿þþÜYÛ Ȭå­5dÑs¦¼ÿsǯôBîzÇù«ü©<¨8Qôò×Ãßä>uêT©À3O>*rãÆ"SSÓ ‰ÝÝRR!7ìÜ$ç—»Õ¥wÀ/ór’‡  ž_#×ÞBä‰'­É ™`ˆûðßë1.Ç=…5W²³Äf¿"¬ákàÃx¾Â·KÎ7ºkùjv¯·o' ”æ"³WwN#q—¿rƒÈ [­ùÀwhßü%¿‹Þ¤I‘n;˜ÏY³f¹­jž®¹ëí^òWù3 SyP3p¢è 䯇¿É™3üÙË™2{GXb[7Ÿ÷ „õô#ù«Ü©<¨8Qôò×Ã?^î7ß{“TüÓüDfˆ šžÖ¸ßëÞ¯±¦éðÞ«gžÎ ™5}wÝUÈì>ÿv¹ì‘…ÌØ‘ùà}` ÖðÝY‘+÷kúZÞÛÆš Øl¥xsÎö½xÊÉÉyÕðóD~øát‘oM›)òðÃé¶C¼Ï·µ'QêCîz{ŠüUþ ÈTÔ œ(z‡ùëá/wdÑõ²èxE[š²hÇL2•÷yŸL¬ìh+ù«T©<¨8Qôò×Ãß*î·Þ‹4à“ÜE¦wäš²@=Z¼ÛT¶Z‚ÌXáæb)Æ Y ZñŸ›2/èuýf1–¿¦ª¥)™ÈèÖ¹¹¹\Ïn5gñ{¶ÖBÙ'°÷üÈåCÏ=:xóÍ)rþ䓇ˆÌÊrg{¬zî„À“A {P4Ž\ 32•5ƒ'ŠÞ¡@þzø[ÅYdýÇ€,2NV•b@ƀ̪±ä;V=ï½ÀBGÈ_¥Î€LåAÍ À‰¢w(¿þVs¿óá;¥!Ó·¿'2ý À™²?®ûM®7Š]àj%È.wVõRé»X딳³HL~ûub¬a²ªýNÙÙ°¡T\ º|‹ÈʾõEþñà*èyx_Wý¾uDoôŸ†"Ýr(YP.U¹²Û5"/v¹[ªW=¬~îÄU™$º™Üõv6ù«ü©<¨8Qôò×Ãßjî È"ëGd‘qŠ·²x Ús¿ÕÏ{jé=«ä®·OÉ_åÏ€LåAÍ À‰¢w(¿þvq=öiÐ{[ÞifÊ–]¹Lô㌄ВÃö½î‘µD&Ë!ï§Ë€Ìj¢Öسû¹cM-½g…Üõö)ù«ü©<¨8Qôò×ÃßnîëaÍÎâ ÷H‰ž³?D†l^ׯr¾îѵõÐìuù-H ü}?g¯è³¾„ÌÌÂ.•;vª4ÍÕv½ûo¿¿+žÍ—ºVØ@©³Ó²]3¶‰ÿ¢Å˜E;‘ Û³ kײ3Q½ÚU±†müËØ¥tðàÁJ½½¢ØýÜñ '«ÛAîVÎù«¼©<¨8Qôò×Ãßnî ÈB÷+²Ð|b½Ê€,VrÎÜg÷sÇ™V$žr×Ûgä¯òg@¦ò fàDÑ;È_«¹—•a-L‹ý°fæé»¥aff +§|¾Ëg C¶°2dõ’$CV²™‘]³w—M3 ;d¤‹Þ·©’ՙȜ}[ 9?ê&ð…‡°.»»W~]üªµV_ìt†¬pÖ®xï?ûè,Ì„cZ )FbÌwÝg-Î#®¿þú°mMÄV?w‘Ž:“»êÿø$ÿXüÿ'd*jN½Cüõð·š;²ÐýÈ€,4«®2 ³Š¤=v¬~îØSKïY%w½}Jþ*d*jN½Cüõð·šûõW_% yeÒË"SS°*51h>_• è9J¹j}«êà×sv‰§oly\ 2a”!cv{*29fu.¨@欴¸“œ2ð™—)ƒع™ÅÞgoU†6 XÒé ™Y‰ò"ìž¹î.¬s8ê;¬32fÏCÉ5í®ƼÕSÒêçŽ§àØØr·n¦É_…Ä€LåAÍ À‰¢w(¿þVsg@¸æbõYdVµÇžÕÏ{jé=«ä®·OÉ_åÏ€LåAÍ À‰¢w(¿þº¹?öÜcÒðÉËQKëŽLöy5ß3µã“íâdó,dÀªW gxK 2d¿¦ c–s>2hOOÀ{Úì«™·,¼ kÇ>ʯ" Ë9<ðîº2d&í¢uÅò1õu¬-ëÝ»Aön”+ç_ßÛOäÔf™·xJê~îx f!÷(`ÙP”üU¨ ÈTÔ œ(z‡ùëᯛ;2dVŽ|dVÒ´Ï–îçŽ}-s·er×Û?ä¯òg@¦ò fàDÑ;È_·pÿ“य़_™vˆ73eþ½¼ì–?åTF!Öe£ÝKþl'ç5®{þ÷%»^TNŽÅû½‡Ìc­B¸…½ql44p†QW†¬¢ÔׯeH.úr±Èñ>,ò…ÇïYµV#‘ ~ÆZ3Qy0yÊ»Êu¯(n{îx…k¸v{8Bö^'•/2•5ƒ'ŠÞ¡@þzø»;2d¡f²PtçšÛž;‰C.¾š’{|üâ½›üU‚ ÈTÔ œ(z‡ùëáïVî&?/@ž›‡LAjO¬½)ß]&çWÞŽµ5UrÒDoñ`=ãô꟩É[¾W,N+9öžúqzðÖí­›ÿ. JÝ‹ñpÄ^ì¦Ø»²*F†lBv/\wvY¬ÛG“†?wó¼]²ì Ô÷þ³°Vì„'Øå*!ìºõ¹“ðâ¨$¹ÇÏ‚[É_…È€LåAÍ À‰¢w(¿þnå΀ŒY Á€,•Ä;çÖçN⑌®Æä/«K“¿J”™ÊƒšA€EïP =üÝÎ}âëÌ“³Æ‰\3’ï/À&GOÅnu-òF†ÌE±VêÇO[È©ÌL¬=2¯'»üù—"AðìxŸÛ‹“wŠÞ¹*ÞßÖ­»S¾Uïûj÷¸:>œÊÿ‚÷Êý§ñ¹R¿ÛGÞ‘ì]'íwûsÇ«Dîz{–üUþ ÈTÔ œ(z‡ùëáïvî Èš ÈQIœsnî$ÉèjJîÑñ²º4ù«D©<¨8Qôò×ÃßíÜwlÇû¥Ú¶Äû¤v݈ŒÃïHŒøŽ|™–ï¯`œ^ƒejö~Þ?k¤N‚÷jÅéÎs·O}´éö%XS¸gøíÝŒ Y‹Ql«µÉ–òÁ¸[¨xs‰˜ê°¼“Èw_öæn‰±òrûs'Öv¹ý>r×ÛCä¯òg@¦ò fàDÑ;È_·sg@Æ€,ÔÌ`@ŠŽ{¯¹ý¹ã^rñÕŒÜããïÝä¯d@¦ò fàDÑ;È_·rÏݽ[€´hÒPäîQÈ8˜”þÄ’!ßao!CÖjŒ·2dÅÛÐÞV‹‘é™>B³ý” pâyäÃÚCꉬR¬É§d'2gUê`­¡y>Ö YîOxÿY±‘y«ÜnŒËÈÄ•l‡¿Ìrìú¸f2x¦_JpësÇëýCîz{˜üUþ ÈTÔ œ(z‡ùëáïVî ÈE2#EBÉ}eÜúÜq)kkDîÖòŒÖù«Ä©<¨8Qôò×ÃßmÜ ±Ý{›Èuiˆ÷7Uï—ª¨€žWˆ€eM ôÆ÷·Õ0N¯á25eS7‰‡wA¨m[5´h1xuëšgMëöåË‘‘:ë6dÓOiUÂqf쯛~—KGÕÁûðúµÀøk^w˜²ç‹Ø³¸³´4¬m f7ÙÎ»í¹“,üÉ]oO“¿ÊŸ™ÊƒšA€EïP =üÝÆ™:©#2õh¼ŸL”8„ËÔì1Ö,S¡jéà0áid†róÊ¥•3ç´ÙµKrdÊîy»o¾¾ ÃçDÕÛḇ3¶õQŒ»3ëà}hc{©ã®õ³ÕÅÄìy?‹lÕ ýÎn²\wësÇëüÉ]o“¿ÊŸ™ÊƒšA€EïP =üÝÊÆ²Àó‚Y`.‰rÖ­ÏDák=É=VrÖÜGþ*Gd*jN½Cüõð÷ ÷w§¿#ïÿà>‘i~ =tÃ{ –©Éý»ùå}ŠLØîß÷бþU3E¶(Æî’sÛaÒ¢¥íÂ;óP‰ŽG®’Öd]Ñ2¦Vã­±7Ê-Í7!“ûå¹È˜õ~³–œ¿çùDöêÕ+ZÓž.ï•çN¢u¹ëí1òWù3 SyP3p¢è 䯇¿W¸3 c@Í b@ -ëËzå¹c={-’»½|ÃY'•2•5ƒ'ŠÞ¡@þzø{ûû½' ïzÈÔÞêÚÊ寬J,Íò¥Wwv7<ÿÀàçK—I[¥#v|ÞguHŠº»âóÕ‘1»úÙRþÌ3mþüè1}ÆLdG¾…LTÖ±Ø}2Úfúsöþ’ÈL6[€µaל?BLœ}æi"{µÄ8:õ¿Ï‰>tèÐh]xº¼×ž;‰ÒYä®·§È_åÏ€LåAÍ À‰¢w(¿þ^ã΀LÏ8rÊ+2§HÛëÇkÏ{iYgÜ­c‹%òW©1 SyP3p¢è 䯇¿W¹OûtšýÖ]"Sú`7B“rѯȴ¬}vœjxI3‘5»D·[Ÿi/V韩Ù2e³˜Ú:kǺ¥#CvR1ÖŽU7v›¼/õß²ý€X]'ä}O_+õ^ß™ÁÌýÀ'ÚÆøsöþ¢‘y]4{±ÜZ¥ 2˜»ví½CÛ–"÷„È .¼P$ àÕçŽÛû—Üõöù«ü©<¨8Qôò×Ãß«ÜéOv{e@f7agì{õ¹ã ½Ø½{ì쬸“üUŠ ÈTÔ œ(z‡ùëáïuîö±€½ãµ[E–4Ι9u½ÈZU*E®îßz·":„ËÔìü—Ó¶I•rò™¹æN¬us}§ªê¨ŸíÛËÄ߸‡ñ¾±ÇŸ‚¬–‚÷Ð5¾¿\¯Z_][i%Ãqf§l:®Lºë5ùÐùàÎÁŠÊùŠ ô—ùþ¼…“è¢×Ÿ;níJr×Û3ä¯òg@¦ò fàDÑ;È_¯sg@¦g\Åë•Y¼Ý}¿×Ÿ;n¥Oîz{†üUþ ÈTÔ œ(z‡ùëáŸ,ÜÇ{P¿öÄ"Ú²ï`7¼¿ú6‘󵺻+Cæ?*¶´UNÝ6™¡K.ªí_$!õå¿K½ï¾y‹È™³°Fî¸J¬Pùå>ëö7¾ ým££Í•ÎC¦ë†£G‰« ι0Z—,¿dyîìÓdW|$w½Ý@þ*d*jN½CüõðOî ÈôŒ¯H½2 ‹””7Ê%ËsÇm½Eîz{„üUþ ÈTÔ œ(z‡ùëáïuîs¿ùJÀŽ~ŠÈïÎÁš,“ö ©X“ô{/¬!«}¨»3deùÈìÕød“4áëéØÒlO¢ÊW_A¿\p Ööõ«–%M9²™°6)x/›Ù¾‹|;åc§ç™ša¼HÎ,FFš!+úïë[1@,>ñvM cž—Ãðús'Lóµ]&wmèÅ1ù«ü©<¨8Qôò×ÃßëÜéWÑze@-±Ä.ïõçŽ[{‡Üõö ù«ü©<¨8Qôò×Ã߫ܧðžyùù"ï=j¯È lªè3åã !ÛuÖ"ÕîQÓÑŽˆ4Sã_©Ò°Öjâ(Ô÷îÈ(ù—K4½ÒèŸ^@ìѱ»ä®-È ö+ÇZ²i(¸lÞWHd»MV”`-ØŠÇÖšæçï'²d'2a%; ‹×ÉùÈÀ}ùÑ׉†ÒÕõõêsÇÕÐÿW9r×ÛCä¯òg@¦ò fàDÑ;È_¯rg@¦g<Åë•Y¼ã~¯>wÜNŸÜõöù«ü©<¨8Qôò×ÃßkÜ‹ŠÙxïÍ×è´Þ™š†ÝS÷X™ï…*-Ãû®~KCÆ$ãDgû!Ö YÞrdüNL)” »7² ‘³­‹ßÛðë7‹‘/Œ]K–¡Ý[¾Ãš³ªÕ°¶lÿ':Dälïò|)÷ûëE6­ iÓXƒÖª&2o{Œ÷½Õïñ)÷Ò«oŠäÁ^{îXCÅ~+än?ãPÈ_¥Ã€LåAÍ À‰¢w(¿þ^ã΀LÏ8²Ë+2»ÈêµëµçŽ^š‘{'÷ÈYÙQ’üUª ÈTÔ œ(z‡ùëáOîàþí÷ßʇkž!2õx¬Y²»WbÍ™õ*šˆÌÞŸ¶S™™Èô˜×Uš/†î{ÞFiBÆyw“,Xƒ av‹×ÐkÔ–ü]ìöi‚5eŸªö÷'‚ÜÓ›Ïþ'x´„Ÿ;–`ŒÚ¹GÌÒÈ_ÅÉ€LåAÍ À‰¢w(¿þäî ÈôŒ¿`^#ãó|îèéGr×ÃÝôJþ& Hd*jN½Cüõð'w•û÷?|/'®{¹È´AQKY§Å›!Ûûõ©Ìýƒð¾®S‡ÔX¹Ý»‘ªU kérÑɉ“°FlÌT*ç°Z–ÖÎäÞøØÍ‚LÜÒKÑßóàîìϛˇ_þ@&ÒÒJ$±1>wôt>¹ëánz%“$2•5ƒ'ŠÞ¡@þzø“»Ê™ÊC—Æ€Lygüò¹ã g/äîOÄYüUÞ ÈTÔ œ(z‡ùëáOî¹/Xøƒ\¸ì¡KD¦ž8SV8k»\ß¾pÈf7·éÁÌÔ´Õ2Ò[”rÅÛJDo¹õ¸õªÚ¢OÌÙ¤·w‹>úΆ"o¿£H·Ž9y­TqÏ@¼',=ÇÚ̞ɽÙé°ßimñ÷ÙÔDNT,rø‡"wçc­š(<ÄM€Ï¸Æd€ÜcÂfÙM䯢d@¦ò fàDÑ;È_rÌY`.Ne@æi=~øÜ!w=ôzå¸Wù3 SyP3p¢è 䯇?¹‡æþ㢥À% ™6™²½³¶‰Þz äÂ|dRšÞÝ.´A¿«f¦&Ú YY>Ö„íúk­v„zì—÷j¹·ªxú0 ™…KQ¯¦MQO¿j¸Fýq!ê;ll®Ô©Ê ÈìY]Á?Z%&;¶8Hä÷3æ).ŽïÝSô¯çÿ$rÓð­Q#ð=åf*a ð¹‘-Èݬ%2•5ƒ'ŠÞ¡@þzø“{hî ÈBó±ú*2«‰ºÓŸ;zú…Üõp7½’¿I’™ÊƒšA€EïP =üÉ=2î‹—,–‚ç ?Ad÷´­"¯ëŒLÕ‰Ÿa—æ÷´Ì Q*Ú ÙºG°Ûßžß÷Š…^)È„[¹Ÿk­~¨ÄÚ²uýàèýOZÝ-®¿\?MÉ–ŠVo_Í– ÿ>rµØýkÙ_"4¼¶îå—_’ëC‡ž/2==]$ñàs'>~±ÞMî±’³æ>òW92 SyP3p¢è 䯇?¹GÆYdœâ-Å€,^‚‰q?Ÿ;zú‰Üõp7½’¿I’™ÊƒšA€EïP =üÉ=2îÆ“‚óß-râ쪸pî?a†‘!mo†lëTd¶ÎÄ.Š]Ó°&lp12dÍSÁy /Òzù“fRÁž=qBmÝwÌÏÇÚ¼ƒ°»bö¥-l©dÙç0›öúká mñC£¡ ð¹š]WÉÝ.²‘Ù%•2•5ƒ'ŠÞ¡@þzø“{dÜEÆ)ÖR Èb%—˜÷ñ¹£§ßÈ]wÓ+ù›$ ©<¨8Qôò×ßÜCsŸøìRàû×{±ÿNå†Å›¡ü—f÷Ú›!SœÿOÙù vYÜ5 ï!ËÎÅš¶šûa-Ù²¿¢«¿}»ôU«°Æm샨÷³/#ã×°q¦¸lò@[K]—ü.´&vgL›)rÖ¬Y–ú¡±Èð¹'«K‘»ÕD£³Gþ*/d*jN½Cüõð'÷ÐÜ…æëUd±’óÆ}|îèéGr×ÃÝôJþ& Hd*jN½Cüõð'÷ÀÜ.ÄÚ¢ýúHÜ<ìjXi¯¨Ä§Ê È–mjÉ•:w4 l0ÈÙhwY bæïÓÛ¿Dï¨*È@½öL㿯éüðÝwâþþ;·ˆüia‘ÈþÆÚ·þÈŒÝVkó²Fbí[õ¶±­}+Ý]&ö ×ÀO‚#Dí¹×á·‘Ì Ç|î8Ž\’»î¦Wò7I@2 SyP3p¢è 䯇?¹æÎ€,0—XÏ2 ‹•œ7ïãsGO¿’»î¦Wò7I@2 SyP3p¢è 䯇?¹‡æ^R‚LSJJŠ4ejjª¢¯X¹Bô3®;Mdúéf.MÔ «3d¦£Ò7ÖËÇÏ^F†¬aC½ïÏêsôJ©ÏÊŸ‹EWˆŒ˜ù5³Þ Œ÷§½uÎ4Õ¼¤È­ol½|52o…;‘Ë5dÍêèŸjéß-þKÊ7oÞ\$ǽ‚Óq…üGÎq¯¹â•ã^Áác@¦ò fàDÑ;È_rÍYh>‘^e@)©ä(Ç玞~&w=ÜM¯äo’€d@¦ò fàDÑ;È_r·–ûÊUÈ:bˆN?3t¦Ì® YÞ»Åÿ]ѾK.ªmmCc´6÷{d´ž{»*¾öêyDdÌú—á}jã2òÅC˱Ûb•:xßšévï×X+·wúf95çl¼Ç¬%–òùŒÄ˜oÀ;5äúõãÞ9pà@‘÷‚AÛüõ 'w=ÜM¯äo’€d@¦ò fàDÑ;È_r·–;²Ð<…æ“,WùÜÑÓÓ䮇»é•üM ÈTÔ œ(z‡ùëáOîöp_½fµ>ùŠ“Dfü'p¦ÌÌ5ì\MÊ¥µ­.²Zë,‘±ÊòñÞ­œ±Öê›±v*V{vÝwàQ«ÄtáþÈdí™ÌWÉÎR9_­'Î7Þ$` WÊùßîÁ±ïðš1ßáÆf——ÎÀ.‡\Ê]rÉ%"9îâtì$ù;†ZqDî ÇòW‘3 SyP3p¢è 䯇?¹ÛÃYd\EÆÉk¥øÜÑӣ䮇»é•üM ÈTÔ œ(z‡ùëáOîör_·~88ñâA"3ÎVýývýr9Q7k ²†aWÁœ1SKG¯•|Œ÷~½tcM¹ùîñeÞ¢¯Aà;>þ$O.ŒšŠ]³ûÔU nÀùÔtìnYµa庿Rò+vY,z{»\ÑïÛ³ï!+>ìf9ïýˆä¸÷'è¬NþÎò6½‘»IB$•;2•5ƒ'ŠÞ¡@þzø“»½ÜæË€,0—d9Ë玞ž&w=ÜM¯äo’€d@¦ò fàDÑ;È_rw†ûÆMXËuü…Øå¯ t­8NùeÈÚ5ñ¾¬Ý§c­—U²üß‘)”‚µVŽ®°Á;wbÍY:i¯[}òŒ‹Áã·uÄtfcì®­ŸâÍxO\ûååÖ©/¿'òÚË.¹àówD¶ïy¼ÈWÞxW$ǽ`Ðv =èÉ]wÓ+ù›$ ©<¨8Qôò×ßÜá΀LåÌ€Lå‘lŸ;zzœÜõp7½’¿I’™ÊƒšA€EïP =üÉÝYî—†8l½å}‘Ÿ¯@f*/™©§4“ó5:b·E«jWôâ15ÿcdà^ïÿzú1¬¹ªß õùªµU.ÚY½­“¯Ý&×3ÎØ/`¹HO<‹µcËæýð–ñ“óÅ…ÈÞxË¢sÜÄåØIòw µâˆÜŽ+ä¯"g@¦ò fàDÑ;È_rw–;2dÎŽ8wzãsGO¿»î¦Wò7I@¦ôë×/ð aÔrÚ´E‹‰ïnݺi«C2:&w½½Nþzø“»3ÜÿX¾Lec×Ãæ9ÈŒ-Úÿå)ØM°´~¦œH¯nÍZ®²½ðS¶Pi!ôÚiX³Vn|6l“!~›7‡D­¬?®Y‡÷‹m(D{Ók 3­§Ê­¸£S»ƒåCv6Þ7ÌNEv±LME»9ræ<ù;ÃÙß ¹ûqV'•72•5ƒ'ŠÞ¡@þzø“»3Ü32gƛ۽𹣧‡È]wÓ+ù›$ ù/‹*j¦’õò×ßÜíå~ñ犃eßN¹=¤¤**‘!úìwì~˜m¼f+ýR¬ñªÞ>¶÷íš³Küly™¸åÈõ/‚ƒ£S°›¡ùo"Vìòå¥DÚ}èÖkÙ|ça­\j8Dê·ôÔüöî’[Î8kò"½ß,Çqo’Ð#ÉŸÜõÐë•ã^åÏ€LåAÍ À‰¢w(¿þän/wd*_d*dÕøÜÑÓó䮇»é•üM ÈTÔ œ(z‡ùëáOîör_¶ kÇæÍ›'ŽRŒµbæZ¦GyDÎ=Zä]ã± `Õ £Ë™­ØmdÈÖ½¹YNuIÚ°“Š‘k‘‚5[3R‘™«7KG&¯zûlÅÊÎov‰^ý\¯û52t_LûR)7Þ÷¢Ÿx<2gïMÿXô£>Z)­-÷hí³|häš]WÉÝ.²‘Ù%•2•5ƒ'ŠÞ¡@þzø“»î¦×hù3 c@fŽD–ÑŽûDn«›êNîz{ƒüUþ ÈTÔ œ(z‡ùëáOîz¸›^#åX×å–! °«â¡°Ka–Vù~Ú ‹®ÄæMîhkº)Ëö–Ëõœ6ŠüæÃæ!ˇ»hî¶xøÉØ ±êE¡í•L†ÅoÞûV>Ô¬Y3 ‹Jc\JJJÀëÑžŒ”{´vY>2ä'«K‘»ÕD£³Gþ*/d*jN½Cüõð'w=ÜM¯‘òg@†È“™9r[F:î«=¹ëíòWù3 SyP3p¢è 䯇?¹ëánz Çÿ×_•¢×_1\dEÞÏe&©©x¯W¹±ûâ†\¬Ýʾ¶†”O͈,£TòÉ)ÿÒHd¨ªVÅ}žÂ{žü Û$Îø¼¥”kÒ$C¤ÿaÊÛ¹rêž9ȼU?*ðš´²Oqç3×>/Ž8üS¶êá¸ÛêœÆ}ä¯g$-÷¯¾ð^½ô€7¼&-ÿ Ô“ì§9QôŽò×ßÜõp7½†ãÏ€Ì$e­ ÇÝZo´æO€üý‰8£'-wdÎ °(½0 ‹X²OÚ•K:˜üõt¹ëánzµ‹×Þ]ÄEÊ9Xk–Z™4Ó¯)+÷{m|‹ÐRì‘K™HpùÚíÅûÁvîŒÙKB¯M;î?ëåþ-G5™Q[ͤ•,€á˺\%ׯºRvqw° íŠüõt_Âs0°š?w®^3 ÿYpæsÏxïÞzÀ^ž¿ÅôY Ô+æ8Qôö$ùëáOîz¸›^íâÏ€Ì$XÚÅ=°7žõ'@þþDœÑž;2gŠC^9:ÑÜ$üƒ*Ñ€ûÕ—üý€8¤’»C ƒ¸±›ÿ!}»‹çò3‹ ]·¼Œ]w,Ë—óGe`wƾ¥UDo•’.òéê¸~ÓÄF¢‚µi¢ìsøu)ìŸuóv9[r Ö¢•ìÀ{ÒJÖCêx’\ññ‰ûÜíüG»¹;ߢÄòHþzú+Zîçœq¦TôÅI¯ˆÌÎVß'k+n¸âJ¹õÃn^AAd¦¾üåÌÀì®»”ûþüãѧw:XdFU<Ϯك̿RXƒ- UtÔ%2Gq'Ž3N½}Eþzø“»î¦W»ù3 3I«Ònîª7jþÈߟˆ3z´ÜYÛ/Ñò·Ö»û¬1 s_Ÿ¸¢Fœ(z»üõð'w=ÜM¯NñïÑÿPq™ßs‡È¿Y+òà4¬ñ:©¸ªèffl«k½¯ƒÝ×nÚ_®;Œ¼q“\z}2ì·«‡5k­k`»ú•Û ÿsã“RnĈÁL9rÞ)îŽ4&$ ÿ O?#½sD¯cDtÐA–ôÖ/K–ˆ>Ç`×ÀE¿ü,zóæ¡ßû)÷Z´{k7cméÆ­Ø…5Ø{¥p‡q÷? ¥¾‡çÀÌ=FF½ »ÇF`Eî¾Òx/aÞõ׋>¾N]‘ý*á?©f–è›wa·Xܤï)}5tÖ32gy'Œ7N½]Eþzø“»î¦W§ø3 3‰C:Å]õJÍ$,ü™=É€¬¿€˜5k– &I5dIÚñáš,_á8èºNþzÈ“»î¦W§ù>ð0q]|RžÈÜ_°¶bë„ ¢×«Df«^*vW¼`l=9?âjüò,ÊÿßÏÚ1£ñÞ³o¾D&휞(ñä±fQ‘c¾ƒº£3~É~xì£Êu§§¹;Ý>·û‹”ÿ¯?ý$M)(ÁÄ=zXÚ´-[‰½±ã‘±qÙ_»fÜߣ#2m9éÈp¿óå9ߥ vW æ$÷£»aÍé1KW‹‰ éÅ"—ü‰µYûí·_0Ó!Ï¿:ñ%¹þÒo9<ø‹*w‰^P„5¨h¿± ã=‹………rÉ”e·ß.ú&ˆÌña-ì‚TdÆFfà9•gÜço×i=§ë£Û2Ý=àRÿœ(z;†üõð'w=ÜM¯Nóg@òNs7û›2:þ ÈÔÀŒ™:"[c@–Øýg[íùmÚˆ “D˜,/Dî–#Ê .þG:BêùËwóE.¿­#_C†¬¨*~©žõas”û¿`?rï6Ñ‹· ü±{°öl}*~ñžÛZ.ûZ—â—õïÏÇù7Åùi•'ȇ)S? MG]Ünn‘‘y0ÿoß¡ƒ¥UqÑ0±W½2©=2&"ûáøÿøÃbg@¯Þ"GÝu§È›o¾Yd¼‡Ž­0Ps¶amÑ¥O"c;lÚ«ýÇzXn=æ1‘Û+1þo›ü’è±fàÌ~¬•“#v^¬Ä.¦Cõ=û!2pGu”\vðç^bdÏ„yÙtîb¹õ°X¸9Æ¿ŠL_Æ å‚™¡ú·DFª¨™÷óçIùÅoc¾_W¨fÀ.õí–ëgœ{¬Èò2<7 ‹ŒÀ«²¢k̲²‘¹ÏÊL‘òÇÍ]+²Ûº|‘¾dÈ~JA†l˜‘++G? ¾£?}5q‡gdîè×Õ‚Eo—¿þ䮇»éUdý¥ ¼¾–ÃüCž™9ã a 2u\Ø­ézÞÛÝ®Xí3 ‹•œÇïãDÑÛÁ䯇?¹ëánzÕÅ¿yc¬ ûîldšÕ@:½Œ_ ÷Ù@Nt+Æ/Ôß|Š5gÇ»1ždüm¶£È‡]¯ðaMÈðK/’Ko½úºÈçâ—ïñ«:Šþí¿š·j‘º¸û7öËÏgË© Ï>+ò©ïú‰K¯“ƒŽízðÁbgöw߯eϼùöFÊÇϽ ²óiCDN|u²Y$¤ ÆÃúõr_×û‹ìU„qÕþ¦kE¿ÿìÒÒxˆ‹Çöè)W{,Y!òg#³;ðáÑ¢_sÍ5!î~é­×0ÎÇ_{ƒºÜX#5ßš"¡¥IDAT!ÛØ]ôAØ0`€\ÿwf óÌ  Íë¦>ìü ä¾'+ª‹Ìô!C4¦ æÕACŽ‘ó!sVX„LUa!ÖvïùšóÅ/R®k—¦"óòP.ñÑÿ[VM¤y¸5™®¾g5—S-Z Õ•…vee!ó”YÕÈ`eUH¹,$¨|YY©¢ŸuÆZ‘w”a<îçÃsæ†*ÈMŸÕR®·n÷†™÷e™°Œ ´W ýÿÁX»ê3ž;÷Ÿ¯é¸RäPìôHE†owž_™™È ýmÇáÁƽÃÕp;d®é wU„Eo¿þ䮇»éUdîÈ1 Sw›c@† f@†@Ž™ùMáMɀ̛ýw«týawÅ=b€üõt$¹ëánzuš«&õÅõgàý?-k™5<ØÈ• m!'2æl9îN¬zö1Ü÷ÙX³q¤±«Ù%÷¤ã© Æ?*÷~æ™"»Ô^daq©ÈMÛI%ŽCe%~©7_`;yÊb-Ønm¦«H¹;ël¹åý?¹Ëø¥Ý´«4ß#uüQÈlÔ¨WWL-[µ2V“Ê}Û¶½ÛªÍ"Wv;@äW °6K)…2þ‘±Rú“![å"³ý„cåüÛÓ§EdÍŸ¹±Æ§Š±ËÞ¤Ô:bgf%”Ÿ+úCcá× XÂI3Ãtóµ×ÉýÝW wd)Æé;•H­”¤\?æ˜CD £RXˆqþw¦ÉÌ8¨;áYþÕïrßèâl‘æaB ø”Šþíܹ¶\ú'ƒ„ŒRf¦‘qÊ43MFæÉÐÇÞ Ö©[±fsÿ dªžÊDý†ÜЉ| È@ee¢}YYÈ,eúg­ÿ³?k-Òx—ï¹ñxà+÷BŽÈ­.×Çä€ÃSï#£vÌÑjM EqhÛœÎÚ†ÚkYÈÐ}ú]+±rÀh_P“_ƒ§ïK´ÛwgC¥h×Nx^]µõÞ^Š ÙÅ›6J¹zÆZGå&ÿqï kWºb@æÊnÑ_)N½}@þzø“»î¦W§ù3 ùH¹3 3G*$2æ¿2 SÇG8™;2óáúÉ©ë Èœ"`~"ý‚N°f%LuÉ_OW‘»î¦W§ø÷ïs´¸üíçEpmü4^Q_æË ùJ!~Q¾ñ&übí[…_šŸ8¿ü÷;¿œßûðv±sŠñËý;åø%þõjØö­8k8¦¼óŽ”|â "ï{èA‘W]5Bd¼‡–‹‰ÛñËxÞ^üÁ\µjè_ÚÃq¿çæ[Äî¢g'ŠœSñ¾ÏhËfd¬lÝFìÞVNOÔE}×lÁu¹áÿáGÈ]]#‘]ŠLˇí÷“ó [¦X53Há2M¯¼ß¾h†úß~_}9ïŸA2u3 ¹îzôÛ¤—1¾vnƒŸ!ƒÖÈýc‹Qšgdà6‡LØÔZÈõX'·Zn­÷2Ã¥9ÃО§ŸC.Vûó¾ŸSŽG;+@æ­ÛXÛuÇí b5­ÜwÊ€Õ¢¯˜‡~¼ìdÈF\…q¥ÞG —!3‹.˜v?`µœzqúiÈÉh‡Y.^yÎÖ‰‰qã¹Ò¸12±Út"ÆÑ´éKÄĆ ÈX¶\½&{÷†Ôt öÜÑTíniïwV€Eo¿¿þ䮇»éÕ)þ ÈLâÁ¸3 c@¦Ž”è4dÑñb@/¯•f@æµµ¨=Á¾ -2O3a@6]&w›ÀFhÖµükc-J~Ölq4ÖÍÞŒ_äw¯@FdÙ{ïIK§¿ yãÍ7‰~x÷CD>UŠûLÐ;_Αó]ºté!??_ŠžzÜ‘ý&²kˆ‘U‘zéí·ä|ÍšÆû˜ ñ¯wþ§Ñ£ï‘r#F\*ò»o¾¹òCÔïŠd˜ääÿÃ*wÊÇs†öYZ æ¿ôÀOJ Ú™i¼)ËxÒ†ÕØU²úBȳʱV¦ØxÒ•ÆûÛz¸­ØÏÊÆ/ýYﺇ ‘™É2wÍ3u3q7 ?2qã+Ñy†ýqµòÄîŠ5û‹43U¢Dq¸äÜõRzÏ ôÿyÈh|Ðãbñ²vY –©Yc¬)j¿ÿïbç² ¬Z~8Ì~öU«ˆì‡+téP´ã§ ÚÿôÇä7±.Üýá®›íhÓí¸ád®ÆŒmîÖ¨®Ÿr"2q#oA†ì¨#Á+˜‘`܃•ß¼ã°Q#ôs°rn9âÉXCöÞ{‹¥JUª`­ [êçÚç½&@ È4w»[N½=Dþzø“»î¦W×òg@fv‘HdÀÁ€LAdAÑØz™­x-7΀Ìr¤Þ0èÚ?Œ¼7l+È?,"[ »-X#6êzþF`Vb¬A[jìj7¢[Oiã’ù‹Dš¿Ÿ”aMÑ‹)ÈÐ åó®‚ŒÒa§õ‘òuëâ—|sûð"ã½N……ÈXüy*Ä}{óq¾hñ6¹ÿ†2dÞDùßaT:ÖÆ Ú\N5i‚_Ƴ2ñ‹yV–‘q2vß{âIìfxÏÝ ¥|ÕªÈ@~*2÷W"ÃÖÀ‡LÙˆtd¶¾ø®”oÚ-6×F™™ª´4Ø‘BwŒ‚ß…“ñ;'íZŽ5Z•eÜù©½{‘¡kPÿ7¹é¦rlÂðDüíØ}`äÆB”¼ýF´ãë—‘yÛœ¿¬îâ®.…ËÔamW:X«xpd°æ-ÿ,Å÷éâó‘)kÝãåÖ»ÄgÐïîü|p),„¬_ßœ)~RÃqw¨¶¹<óýwŠÌÌLÛ|ÅbØõÏûXÇ= Èâ€çå[9Qôö.ùëáOîz¸›^]ÏŸ™t2sÄB2 SyÓ#cÏydöpµË*2»È&¸]×ÿa”à|ÃUŸüòç:¹ÛÃ5R«náß±-ÖÎäîÄûÅò Š¥ kŠ‘©@¾Èç›gd€Î¯‚Ýã®.A¦ë¦ìî׸62çïBæ§m%ôqYȤ »k]úôÁ}ÿÚåÏ\{eHÿµNO?†LÒbM×¹°sìOúíèq¨šAóïp™‚û-—[.2Ú1¡*ÖÒ}gdhZµŠomÊS‚ó”‡yû)¼·lC«zu3·è_óèt³[v"CXTtPt”~èÞ­Rbæ dà¾ø®u˜;p9ÓH±1þ¦OCôŒ3Í‘h–°FîÚ…ÌJíÚêÚAk¬»ÇJ¤ÜÝSãèjrò©ÈD¾ùæ¹1+ ™Õè¬ØWÚ-Ï{ûZedÑñJšÒœ(z»šüõð'w=ÜM¯náÏ€ÌìH3a@¦rñ×ùq·Î€Loÿ¸åy¯—Â?ÞýŸö!À‰² É_ôÿ¹$w=ÜM¯náß»2'E›–IÕænCf +Â|¾.ÆnSs±Fªn 2 Ϧ õQdx~ü»ìuïø§Øé³™´yU`麰FçôÓâËt¼ûf®Ø¿ûj¬eÊ@u}ãÞi"çíS]d°C¤˜Úi…˜Ø´õÿôÛV¢w:Èšµ)f;FŽÜ$vý ~uëZ›©¹ñØû¨µ»ü™|׬Ÿ-Ðßæù`2RþÁîçùØxûÓ!{ýõù¨Z5dÐc£eý]nyÞ[ß²Ø,2 ‹›çïâDÑÛÅ䯇?¹ëánzu df¨’™Ê#˜Æ€,wg@¦·?Üò¼×Káï ÈþaÁOûàDÙ††ä¯úÿ\’»î¦W·ñÿµ][©Z‰ì`¬;³¿4wMAäŒr¬ÙÚ•‚ÔÔ˜³kHù—&75›&òøÞ«D®[Œ÷VÝø$2d^€]•Â1(ß~ƒµ]§ŒÝ_ykÈŽˆÝƒ™ŒöÓsÏ^'¦&«wËûë/ðiÓ&¾µiÁÚë¶óÑòw[ýµ>^ç>xÖJN™òƒtQõê¡3åN÷£Ûž÷N·ßß2"Ô…'ŠÞ@þzø“»î¦W·ñg@föŒ*©<âÕ¼ÄËÇ®û½Î™]#Ç» ÈìášðVÝö‡Q²ä%0‹Š“»E c4ã:þ§œ"-y~À‘׸BdûšX;¶›)ú*5d³Êñ‹tù©XvôÛÍ’8ù„ÕrþŽÑxï×!Ý­Ýýlýz¬ajÚ”k˜v€ËNz=0pî¿«ãuî-ê­”¶N9Gä!=züÝv7|pÝó^3dš;À­î9Qôö ùëáOîz¸›^]ÇŸ™Ù5”6ðz``#º¸L{;²¸†‡ã73 syb8tÝF‰Í²Z’¿e(£2DîQá²¼p¢ðoÓkÄê¤bíXÍý7Œ)r×Mç‰<÷'u ™åÀ,2èõ?L-Âd›ò· mHÃ^å^5óWi÷ó•X›zg6Þ+7ã»oäü:…äâÔÅDyÞ;Ń™S¤Ì'ŠÞ#=üÉ]wÓk¢ðg@fö¥¼XÁÆN^å΀ÌÎQcŸmdö±Mhˉò‡QBCQyòÇÆKän#ÜL'ÿn± ã‰CN“Ö¾ÿa‘|0Eä†õ÷‰¼ê kߣ%F- ÿ}`8ø‘Ü„ÀU¢ò/((Ödgg+­ºå–a¢Ÿ~Ê·"»wÏT®»EñÚ¦nái=È?RRÖ–KtîÅÅxïaÍZK̹åxþ¤™1\õùLYa|š^g¾š?OîÓµ¦,QŸ÷֎¬1 û‡?íC€e>’¿èÿsIîz¸›^•?2³)c!èA,mvÃ=‰Î™F‘uu`@fKOYJÔ?Œ¼Ò 䯧'É]wÓ«×øWTTHÓßQäŒOB¿¬¼¿\§¥©k?L>vÉDÿÃÔ..NÙ%§H«~ûÒ_‹¤A£ïØ*2=íKMÅócÞ|ùäùP¯^== ƒxõêó>HsÞf@QràDÑÛï䯇?¹ëánzõ*dfS"àõÀ P›ÝpÎëܹa”E^d‘³Jª’^ýÃ(Q:‘üõô¹ëánzõ:ÿÇ»Sšºû·E¾õ22bË>/ý÷ÒR‘¹{°æL^ÿÃÔ„q¹ ÿ¸ðÅ|³×¹Ÿ;kÈ{|¶0jРA̬ì¸ÑëÏûh™1 ‹–X’”çDÑÛÑ䯇?¹ëánzõ:dfOSîKÀëÁ¾muÓg¯sg@æ¦Ñ¾. ÈÂ3JÊ^ÿÃÈíJþzzˆÜõp7½zÿâE‹¤©ÇÖSäY©Øõ¬Q)v=›Õ²y‹ÛšH‘^ÿÃÔˆq8!ÿ8àÅq«×¹½²±ã>J 6Œƒ–õ·zýy-1dÑK’òœ(z;šüõð'w=ÜM¯^çÏ€ÌìiÊ} x=0Ø·­núìuî ÈÜ4ÚÂ×…YxFIYÂë¹½SÉ_O‘»î¦W¯ò¿ëæ[¤‰Sž{^ä5ùhq-2c³+ñ>¡*C«Ê…ç'6A‡Ž^ÿÃÔ!Œ1»!ÿ˜ÑÅu£×¹›Ù#cg §FÅÅË꛽ú¼•²XÉyü>N½Lþzø“»î¦W¯òg@fö0e ^ µÙ ç¼Î™FYäu`@9«¤*éÕ?Œ¥É_OO‘»î¦W¯ñyõ5Ò´·_~Ed·¬éhRŽ7ó¥Ë‡ÏÓ‘!;ýÑ:¢_qy]pèèõ?L³ò]\7zûÏCÏ”7Ž‹—Õ7{íy/dñôèýœ(z;–üõð'w=ÜM¯^ãÏ€ÌìYÊP¼„j»Îk^ç΀LçèŠÞ7²è™%Å^ûÃ(Ñ:üõô¹ëánzõÿÕ«WKÓ–.]*òç%KDþ4ÿEß±c«èS¦b´¾}«‹îÔÁë˜:Å1V?ä+¹øîó:÷ ‡ƒÏý÷*š4qvmj¸ÞñÚó>\{Ã]g@ŽP’^çDÑÛñ䯇?¹ëánzõdfÏR†"àõÀ TÛu^ó:wd:GWô¾EÏ,)îðÚF‰Öi䯧ÇÈ]wÓk²òÏËË^p˜È©ï¤™H‘^ÿÃÔˆq8!ÿ8àÅq«×¹ŸuÞk8vvYlÚ´i´¬¿5YŸ÷ÁHþŸÿÿ…à“Î@IDATìÝw€EöðÙ]rbD &0žÞNÁt¢ÏœsÀìYÏ,xê™1§3ðd¹]Š~+þa¤»à¯ãwwÎ –0qàÀ­é§ŸXC±qã’àÙÖ¤Éåô×V[6Éù|}}ý‡i}çíÊóð×™ ßÜ5žJÃ3í(6°Xïmc¶{ÝÕôÌ1'hí!ÛÄë}ÐYЭ¬.Ý¥¸ë¸sVø³„‰(È‚¾¶|+ Ò2O¾¹£ KËÊË=Nd¹]Š~+þa¤»à¯ãwwÎ –0qÒ¤ ôǨ‡¢8äÆà²=þd¾®~æôü—_oj ùèÛ?LCž¾úîð×™_ܹTÓ” ƒ¯™LµÅûI󙲛ﻗžÙïÐC¬=dšx½:£ z •À…¢»à¯ãwwÎ –0YÐÃ×–/…AÚæÇwdi[y¹Ç‹‚,·KÑoÅ?Œt—üuüá®ãÎYáÏÁ8|øPÚ0oî?)Þpã<Šû–4£øM¯ŠïÒbØ_þaö¼]Ùþ:3‘v÷+̽¯Ë/û˲?[XZfî‘c\¿ÃôG»væ³e¥eæ‡ç»uëFÛ>úh³£ð#^ïƒà(È‚hep¡è.øëøÃ]dzŸ%‚YÐ÷VÚ ƒ´ÎGÚÝQ¥uåå7 ²Ü.E¿ÿ0Ò]ð×ñ‡»Ž;g…?KãÇŸ@Æ<òÅ¿­nNñ?5æÛ›m~§ìî{;̳•ö˜æyšÎî©ñÝý´3Œë¹ç=KôèÑCº–¬x½  z •À…¢»à¯ãwwÎ –FdAßZ¾®Î—ïî(È\]y¹Ç…‚,·KÑoÅ?Œt—üuüá®ãÎYáo$¾œ=›þØuÇ(î¼Ô|‹â€Šà÷§=Üx%=¿ßóÙSN6Ñô’ÿ£ïÿ0Í_BgOøÃ= ÓÏ4Ÿ-=ëìg¨û7Þ8‰4‘ûÄë}YЭ¬.Ý¥¸ë¸sVø d¼"Š#¢ Ó™gßÝQ鬫¨YQE•óü8üÃHw‚á¯ãwwÎ #±Ç.»Òï¼û.ÅnÍ[RìXe¾UmÝU•ÔÛÈÄ‘¯­Oíw2Ÿ-£Fˆßÿa‚BeWø«°g|w?ó,ãzÆ™OÑ›l²‰t-Yñz„AAô@++€ Ew)À_Çî:îœþF¯ˆâˆ¾®Î¢ïî(È\]y¹Ç…‚,·KÑoÅ?Œt—üuüá®ãÎYáÏ&.[¶Œþ˜2e Å©S§RœôñÇ?|ïßï¼ßüÑv¿kBí°¾ÿÃ4¬‡ôþð—7ù|w|¶ù Ù©§=I'¼Ùf›é@×’¯÷AdA´²¸Pt—üuüá®ãÎYáÏ&¢ zøÚò½0puÞ|wGAæêÊË=.d¹]Š~+þa¤»à¯ãwwÎ –È/®Y³†vÜûÏ›S|õå†ùhíåû?L­Óu® )ñÝýìsͲ“N~‚€{öì©]KV¼ÞaP=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KäQåçäú^¾®úûÌÕ•—{\(Èr»ýVüÃHw À_Çî:îœþ,.¾ÿþX:à×O£xååÁß+«¯7ßÿaZßùk?ðÝýœó̲N|œ€{õê¥]KV¼ÞaP=ÐÊ àBÑ] ð×ñ‡»Ž;g…?K„‹(ÈÂy¹¶·ï…kÞ<ßÝQñL§#–ôïßߔЎŽwüøñ4²>}ú8:B?‡wÝy…¿Ž?ÜuÜ9+üY"Züê«Yt`óf?PlßÞ|ûb}½Ÿ°ŠvéÓ»i}»âùàŸj]úî>ýSó»…]ºlI-Z´ÈCEn¼Þ­Q=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KD‹(È¢¹iå{a í[[~ßÝQÕ6ónnDzè漨 ÿéîÀ_Çî:îœþ,QXüËÁ;PÃîZB±mÛ²@‡+Wšÿ0æÙgÓö‡F™8úõ®ýÐðý?“Q ŸÅw÷ ÚN(öÚŸâ}>)Á#ðzÄEAô@++€ Ew)À_Çî:îœþ,QXDAV˜ŸôѾÒžùæóÝY¾+ÁýP¹1Îÿ0ÒøëøÃ]dzŸ% ‹_|ñuð›Íÿ3~צ¿'7wÌ?úkÚÐ{³&[¯cî á™q’~ô½0öÌ7Ÿ¯î M%‚ûKÚQ|¹¹ù,é‡Dí!wÝ™/Q¢ûáõ>È‹‚,èVVŠîR€¿Ž?ÜuÜ9+üY¢°ˆ‚¬0?é£}- ¤ÃæóÕYØ•àÆþ(ÈܘçFéN üuüá®ãÎYáÏñÄQ£†SGÃo¹€bõìJŠÝ—š;bÍmLíÏç˜í¸CFâ¾â!úæÞ¸‰¹3vOM[’h þák­ÒöµÚ—â?îR,ÞÝñzôDAô@++€ Ew)À_Çî:îœþ,ODAcÒ½øV$íWÿ¾¹£ ‹keèôƒ‚LÇÝù¬ø‡‘îÁ_Çî:îœþ,QX÷ÁÔÁýP<¨Âô÷ÇsGld“´áÀ¡í)>õ´ùlî'éGß i¿¨ù|qoÖÌÜûc©ùL(§jÕ#SRj”šÏ’Í-5¿OvÌyçнêʨ„‡×û  ² ZY\(ºKþ:þp×qç¬ðg‰Â" ²Âü¤ö¥0v+4Ÿ/î(È ] n‚Ìypnø‡‘î”À_Çî:îœþ,-^z¾ù¬Ø£Ãï¥Î]iþ¿ò6ÖgInh¹Œžþâú¯¸òЏCF â¾âp&ôÅ}Ø= IbÕ*sç«$ûѱ—_5¿7Ø»÷‘ôül@±4{§¬M›6Ô>ôÐC)J?àõ>(Ž‚,èVVŠîR€¿Ž?ÜuÜ9+üY"ZDAÍMû(_ mǰù}qGAvæÝÜ™›ó¢>*üÃHw à¯ãwwÎ –ˆ9ô0:ð£qã(~þÕ\Šë6ka¢ù?Ð3S*̲ù?mFÛ÷;Àì‡;dÄ!þàKa W`BßÝ/¾Ô\ðûð Im»í¶ŠÅ{8^(È‚hep¡è.øëøÃ]dzŸ%¢EdÑÜ´ò½0Ðö­-¿ïî(Èj›y7·£ ss^ÔG…éNüuüá®ãÎYáÏñÆÏ>ûŒ:œ6mÅW^yŒâQGL¢ø÷«¿¥ˆ;dÄ þà{a šgBßÝ/½ÜÜ!Ûgß$²ÝvÛå)#³^ïƒÎ(È‚hep¡è.øëøÃ]dzŸ%â(ÈâõŒ»7ß ƒ¸½âêÏwwdq­™~PÉ8§. þa¤;eð×ñ‡»Ž;g…?KÈĽ÷ÞŠ­Z5›â›ot•IŒ,ß ƒÀÉ:ÔðÝý²+̲½ÞOêÛo¿½Cú™ ^ïƒÓ‚,èVVŠîR€¿Ž?ÜuÜ9+üYB&¢ “q®/‹ï…A}ç¯õ¼ïî(È´VV´¼(È¢¹yþa¤;Åð×ñ‡»Ž;g…?KÈĉÇS¢AƒúRœ3 wÈdäƒY|/ ‚gëNËw÷+®ZCØ{ìyÅ?üáîàÿo$x½N ² ZY\(ºKþ:þp×qç¬ðg ™ˆ‚Lƹ¾,¾õ¿Ö󾻣 ÓZYÑò¢ ‹ææýQø‡‘îÃ_Çî:îœþ,!{öܘ^}U)ÅöoTç*+kèùFJêÜOæ'à{aŸ‚ü^¾»_ù÷Õ„ºÛîæÙ;ì \GF¼ÞqP=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈFd²Þv6ß û|]iû̕•–ß8PåçTt{áFºS¸ë¸sVø³„ld÷õ;›;^¿òk@çÎ ¹æª©Ý´‰Ù_v/×£oî(È\_quYÝ>Eû,¿Aãÿ¹ÐYð‡»Ž€nV¬{ÿfMšRâ-«K)ö[Ó€bç’2Šm2fû‰¥ ©½`ùLJ³ff;mÄCdß ƒÈÂúæ^ÖÐÜ{0{gÌüZà/¨“³wÊ>Ú¼m|ë£yRá/¼ÞÑQ=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈFd²Þv6ß ûü\mû掂ÌÕ•–߸PåçTt{áFºS¸ë¸sVø³„lÜ|óÍ)aÿ~ý(Nüð#ŠÓ?ûŒâÊ•+)vî`îœÍøª;µñ€o…A<*É÷â‹{»¶Ó «W‰¹ÆwÆ*²ß¶XRÖ„ž/k`®ßÅÕk¨Ý{À®G=ó4Eé¼ÞÅQ=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈFd²Þv6_ û¼\oû⎂Ìõ•–ßøPåçTt{áFºS¸ë¸sVø³„l¬Ï}Á‚4 »îºŽâï¶y‰â»7–¨§Ù|) Ò6=¾¸¿üŠùöÓ¥Kͯ’ì-²—^6ínݧ©Ùj«­(––šÏ~6nl®ß½öÚKeêê{ÝQ”bRdŠø.§Æ…¢;;ð×ñ‡»Ž;g…?KÈÆúÜQ%;¾É*Åß»/î(Èâ_=¢ ÓPOAÎúÞ Sp ©"üu¦î:îœþ,!ú|Ðh€Ã‡-¥Ø¦ù6FÙQû“Í—Â m3â»û¡4%[÷¹ƒ"_ç®Ìßæmf™++Ó±qàBÑøëøÃ]dzŸ%dcXwdñÎï…A¼Zñõæ»; ²øÖŠDO(È$”S˜#ìt OÑé!Ã_gzà®ãÎYáϲ1¬ûçŸN¼õÖ(ÞùOÙñú–Í÷ÂÀÕùòÝ}èÍæÙ[™ t÷Ýwwj*¾î85øƒ‚,TºÄ…¢;‹ð×ñ‡»Ž;g…?KÈÆ°î(Èâß ƒxµâëÍwwdñ­‰žPI(§0GØ7螢ÓC†¿ÎôÀ]dzŸ%dcT÷Q£î¡V¯¾•âQGšßAªmô«VUÓSM›šoy«m¿bÛî{aàê|úîþ[ʉ¾çææÙ{ìáÔTD}Ýqê$b ²1}ê ŠîlÂ_Çî:îœþ,!£º£ ‹gž|/ âQŠ¿ßÝQÅ¿f’ìY’º)î;êtŠOÙ©¡Ã_g:à®ãÎYáϲ±P÷3ÎØŸ<øôi7ÞØü¾ÑÂ…æw¶ëóm¿ð¢µ(žtr{Šx0¾®Î³ïî·ÜjîmÚó6š‚=÷ÜÓ©©(ôuÇ©“‰a0(Èb@ô± \(º³ ¸ë¸sVø³„l,ÔYaóå{aP˜NrGû,¹µ“DÏ(È’Põ ÏBß = P=øëðÃ]dzŸ%dc¡îK–,¡ŸpÂN÷Þm1ÅÁƒ¿¥¸q©ùlÙé·w ö1G·¥ˆ#à{aàê<ûî~ëmæÙÆ›šÏxîµ×^NME¡¯;NL ƒAA¢]àBÑUøëøÃ]dzŸ%dc¡î(È ›/ß ƒÂt’;ÚwwdÉ­$zFA–„ª}úíê)À_‡î:îœþ,!ãrï»í¶4ðÕÓÍgÉN­lNíkZ,¥8ê (n»MSŠx0¾®Î³ïîÿ¼}Ñwëq Ž÷ÞÛ©©ˆëuÇ©“*`0(È ÀóùP\(º³ ¸ë¸sVø³„lŒËY´yó½0ˆ¦’üQ¾»£ K~ Å™Yœšõ×´G$¢§QÁýg •?à¯Âž‰êþîØ±4àÝû÷§x\M3ŠÛW—Näø’…Ô^²¸Å&MJÏ{Ã÷ÂÀÕùõÝýÆ›–=ÿÙÀšŠ¨¯;NDŒƒAA#¦O]áBÑMøëøÃ]dzŸ%dcTwdñÌ“ï…AË2÷ÛMeO,%Ù|/ \_Ý«*kˆ¼mkóYÎfMZRûÇ¥æÛP]™¨¯;®Œ?îq  ‹[Ô“þp¡èN$üuüá®ãÎYáϲ1ª; ²xæÉ× äzñÕYrk&ÉžQ%©›â¾£¾A§ø”:üu¦î:îœþ,!£ºÏ™3‡:yòdŠS²qÒ‡QûÃqã(nÜÃ|fìwÌïÑF<ü,àkaðó :ú‡oî5æÆX¦¬áY֞₌¹e}C+s~·p3õuljÁ'0d  úÐ%.ÝY„¿Ž?ÜuÜ9+üYB6FuGAÏ<ùVÄ£’|/¾¹£ K~Í$™Y’º)î;êtŠOÙ©¡Ã_g:à®ãÎYáϲ1i÷aÃn¤Z{­(î¿_#Ùt<›o…ãÜ?Ï7w¾3ö`©¹3f—éÂì²k[˜[i?,^ô³…ÆI¿îhœS!9Q¢çñ±¸Pt'þ:þp×qç¬ðg Ù˜´; ²ºçӷ î³uçYßÜQ¹³¶¢ŒYµ"8&é7è" ,èá__äƒá™.–á cèN¤Ü=víš«æQìÔ©aè±úx€o…AZæÈ÷Îë}Jäí«Ì·šò±UæNXiiSz¾ACs½UV›Ï”µÞ° mÿpÒD•)“zÝQ9¹IQE@+†Cp¡èÎ2üuüá®ãÎYáϲQÊYîyõ¥0È}vînõÅ™»k,ÌÈP…Ñ*¢}¥Þ ‹ˆ4Ô©Â?Wl;Ã=6ÊHÁ?[ÁI¹óÍ74ÖK.Ù“âƒ÷a¢ù¿Å‹Í¯’ì-²—_6Û[µ9•¦f—]v¡XZjî¤5mjîœm½õÖ*S'õº£rr’¢ ‹€V ‡àBÑeøëøÃ]dzŸ%d£”; ²ÜóêKaûìÜÝê‹; 2w×X˜‘¡ £UDûJ½Ai¨S…(®Øv†{l”‘:‚$¶‚’vöÙGiÌ?|w-ÅSO)Ëy_|QIÛ{ôðû[}) rN¢Ã}w¿÷¾e¤ß¦ÝM:è §fCúuÇ©“Ï1d9P°)“Á…¢» à¯ãwwÎ –Òî(È‚óë{a<[wZ¾»£ sg­å3dù(á>ÒoÐEH\ç)ÿNžÄž„{b´yu ÿ¼˜bßIËý¯MçrÈ_> Ø{ëÆ‡^?Ÿâµ×ýHñöa(qxо=ø^¸:_¾»ß?ÂÜ!kÑêš‚¿üå/NM…ÖëŽS¿ ²_aàÏ_p¡üb¡ñü5ÔqgXGý—¬X÷¿XHþ¥åŽ‚Ì̲ï…äZ“ËwwdaVƒþ¾(ÈôçÀÉh½A;‰¡0(ø+ ÿ/%ÜuÜ9+üYB6j¹WUUщÜ{KŠ+æE±í,sþ3JÌóÙ€6ôém¾Î<ëϣ3å»ûˆ–}³æÙ!‡âÔTh½î8…ð«Á  ûþüEÊ/Á_C™Žú/Y±î±üKË™™eß ɵ&—ïî(Ȭý}QéÏ“#ÐzƒvCaPðW@ÿ_J¸ë¸sVø³„lÔrò±ÇéD<òŠçÖ4§Ø«¤!Åã2 )._Ö‹b£FÙX¢–?¾®Î”ïî>´Ø\7M̲Ã;Ì©©ÐzÝq áWƒAAö+ üù‹.”_,4þ‚¿†: 2õ_²bÝÿb!ù—–; 23˾’k9L.ßÝQ…Y úû¢ ÓŸ'G õí$†Â à¯€þ¿”p×qç¬ðg Ù(åÎÿ‰âA{¤üé£ñOYZ8áï3k¨}g‡¿œ·iàyß¾®Î—ïî4wÈ4ºž¦àðÃwj*¤^wœ:é:ƒ‚¬œb~ ŠîìÃ_Çî:îœþ,!¥ÜQåžWß ƒÜg­¿Õwwdúk,ÌP…Ñ*¢}¥Þ ‹ˆ4Ô©Â?Wl;Ã=6ÊHÁ?[ÁI¹Ï3‡ÆÚ{Ë­(VVTPܰY Š«Ì²ª•+©ÝxgóY²×þݕھ>ø^¸:o¾»|ØÜ!+mpMÁG˜Ïjº2R¯;®œo}ã@AVŸP‘> Ewâá¯ãwwÎ –Rî(ÈrÏ«ï…Aî³Ößê»; 2ý5f(ÈÂhѾRoÐEDêTáŠ+¶áe¤Žà‰­àƒ¤Ükjjh¬%%æÛ—-[Fí)S¦Pœ:u*ÅÑ/¿L±YËz¨1E_|/ \7ßÝÎÞ![´ä<š‚ÁgåÔTH½î8uÒu Y8Åü.ÝÙ‡¿Ž?ÜuÜ9+üYB6J¹£ Ë=¯¾¹ÏZ«ïî(Èô×X˜  £UDûJ½Ai¨S…(®Øv†{l”‘:‚$¶‚rÕýᇇѹլ¹âQGšÏ”|ÂŽuà{aà÷ÏÃñÕ}ÕJóYÌ6m§Ó¹–•4 8ïûï(¶kßþgÍ?\}ÝÑ2AA¦%ïx^\(º¸ë¸sVø³„ltÕ™ì:(¶l(ÈtgÜÕ×-dZòŽçÅ…¢;Að×ñ‡»Ž;g…?KÈF×ÝO?}?9ë óÿøo¼±_Ÿ)óµ0]Åá³ùæ^Ui>£Ù¬Å4Âx ¤]匆æÛK?›ó%m_{uÏK7\Ý‘ö@A&-ž’|¸Pt' þ:þp×qç¬ðg Ùèº; 2ÙõP,ÙP¡ si­£ si6‹ëoÐQ%2ø'ÂZo§p¯—(ÑàŸ(o­»î¾x±ù=¥OÜ™Îá©ÇÍ·4ÖzB){· -ü¾¸g¿¼4SÖÐ|[éȲº?#6¸Ñ*š¢ÏæÎ¡¸V‡*SæúëŽ4 2iñ”äÃ…¢;Qð×ñ‡»Ž;g…?KÈF×ÝQÉ®‡bɆ‚lM5 27V< 27æÁ¹Q¸þíX̠̂yv÷<¡Ú þ ÁÖÓmZÜ_ý%:“)“ÿFñüsKsžÙå—ý@ÛÏlîtè`¾e.çÎlô¥0p€2Ô|qߨÛL:ïªÅæ3d5+«L\SÓˆžoÐÀ|KiuùÆÆ­ZÑö¹ß~Ê-®Óòº×ùÖ× ²ú„Šôy\(º¸ë¸sVø³„lL‹; 2Ùuá{6d(È\Zã(È\𠇯’–7h‡Èb ücåÌ»3¸çM•ÈŽðO„µÞNÓæ~Õ•gÐ9íºËhŠÝ»•QðÇÙçÿ¸šâc»QÜjË&]}ð¥0pÕ·¶qùâ>o^â²eæÎWiöÆñ룗Óöå+N¦xØaGQ,ÍîЬY3j¯µÖZ¥Òöº“´ ²¤…SÚ?.݉ƒ¿Ž?ÜuÜ9+üYB6¦Í™ìúð5 2d.­md.͆CcIÛ´Ct± þ±0†îî¡Éb=þ±ræÝYZÝ·îÙ‰ÎqÞ\ó™±sÊ[Pûòš%«*¶ Èw ¨áàƒ/…ƒ´uÉw÷§ž6×Á¢%ÃI'™;Ëu¢>™ÖפˆP%%›ò~q¡èN üuüá®ãÎYáϲ1­î(Èd׉oÙPéÎhZ_w’RCA–”lÊûÅ…¢;ð×ñ‡»Ž;g…?KÈÆ´¹ïÕ·UŒŸLñØUæC3ßfÖPûÞuWRü|î&]ð½0pÕßw÷gž5wÈ~ZxMÁÉ'vj*Òöº“4 ²¤…SÚ?.݉ƒ¿Ž?ÜuÜ9+üYB6¦Í™ìúð5 2Ý™MÛëNÒZ(È’Niÿ¸Pt'þ:þp×qç¬ðg ÙèºûŒiӤ׿3a‡–˜/#Pb¾=Ñ|Çb&3®¦’öûf@ Åg_Þ@2b6ß ƒˆ,‰æ»û³Ï-%ÃæŸMñÔSML6Ï®¿îäy±í†‚,6J¿:Â…¢;Ÿð×ñ‡»Ž;g…?KÈF×ÝQÉ®‡bɆ‚Lw¦]Ý‘ÖAA&-ž’|¸Pt' þ:þp×qç¬ðg Ùèºûûï½G ·½™âÔÉæ³c3çΡö:ÍÌ·+–®2Ÿ;´ýŠ+Ö¡èúƒï…«þ¾»ÿëys‡ìÛïÍgÇN;í\§¦Âõ×i,dÒâ)ɇ Ew¢à¯ãwwÎ –®»£ “]Å’ ™îL»þº#­ƒ‚LZ<%ùp¡èNüuüá®ãÎYáϲ1íîŸþ9}ðÁßsÅG˜Ï’Éj†Ïæ{a^DæßÝŸÁÜ!›÷­ùý±ÓO?_6Ï,iÝÉó4óÞ YÞTŵ#.Ýù†¿Ž?ÜuÜ9+üYB6¦Ý™ìzñ% 2Ý™LûëNÜz%ýû÷¯‰»Ó8û?~üø`¢ùÛßnK”èþ¾¾îDECAUÎóãp¡èN0üuüá®ãÎYáϲÑWwd²ë(mÙPéΘ¯¯;QUQE•óü8\(º ¸ë¸sVø³„l,v÷¯¿þšÀÏ;o/ŠO>f¾mQj|/ ¤ÃæñÝïûè ¢¹è¢Ã%º±¿îظ(Èl´IŠîB€¿Ž?ÜuÜ9+üYB6»; 2ÙõæJ6dº3Qì¯;¶> 2[mÀ…¢»à¯ãwwÎ –p7Þ¯¿þ"ý1uòß(žw®ùƤgÃ÷ i¿¨ýûîþŸ·Íï½ÿÁDtñÅ7E¥Jä8¼îYQ=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈF¸od²ëN; 2ÝÀëNÐYЭ¬.Ý¥¸ë¸sVø³„l„{Ðûª+Ï  ýwMqÇwˆ¹å{a3WlÝùîþö;æÙØ÷‘Ù¥—Þ›]áu'¨ˆ‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â=è‚,èák ™îÌâu'è‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â=·÷^{nAO¼ð/ó|ƒ¹¿}qöìJÚ¡[·F¹;ªg«ï…A=§¯ö´ïîcß5wÈþóö>d|Ùå·¨YçJŒ×  ² ZY\(ºKþ:þp×qç¬ðg Ù÷ÜÞ(Èr»ø²™îLâu'è‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â=·÷„ ŸÐ?v ůÞ!;ûÔoiûs/.¥8wÞ¦Ã>ø^„õÚßw÷w²Ÿ!ûû•í‰tÌÛJÑæ•¯;A&dA´²¸Pt—üuüá®ãÎYáϲQåvñe+ 2Ý™ÄëNÐYЭ¬.Ý¥¸ë¸sVø³„l„{ÝÞwß}íPRs/Å›¯›GqÓæwÊ>_{ µgÌÞ„bØß ƒ°Rûûê¾je5¶i;â¾ÍÚRüÝùgS¼àòË(j?àu'8(È‚hep¡è.øëøÃ]dzŸ%d#ÜëöFAV·OZŸEA¦;sxÝ ú£ z •À…¢»à¯ãwwÎ –p¯ÛûÖ›†Ð×\z Å «›Sœ[³šâ{–R|êù (†}ðµ0ë ½¿oî•5DØ¢Õ4Š#2í¤OµnHí?œq2Å¿]ueàyé^w‚â(È‚hep¡è.øëøÃ]dzŸ%d#ÜëöFAV·OZŸEAv¥êÔáu'È‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â=è]UUEvÛq'ŠÍgΦxÈ s‚÷~ºt%ýù»ËZQ¼äâµù©PÑ·Â ÔÉ+îì‹ûê*³.7›Jš÷•š;c¼ZÍ'Ê2n?ßÊÜ)ÛéÌSh­;exÝ .~dA´²¸Pt—üuüá®ãÎYáϲîAodA_[(ÈP¹´¶Q¹4oк“¸ë¸sVø³„l„{Ð{·?íBÆG±Gãf×]^N±cö–Ã;+©}ýcëQ¸·¹SF¾!NÙ‰]}qßµŸ¹ƒ;ö¿æŽmiðçòþgm¾ ´aƒä^Rb>óؤIjÿ¸pÊ|àu'ÈŽ‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â=è‚,èák  2—Ö6 2—fá±à Zw2à¯ãwwÎ –pÏí={¶¹ó0uªùlΔɓiÇI~DqÊ$G<Ú‚Úø½ùnîÞjßêKaPûºùŒïî}¼ŠàÿõüŸ(^{Ýp§&¯;Áé@Aô@++€ Ew)À_Çî:îœþ,!ážÛYn_¶¢ ÓI¼îýQ=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈF¸Góæ/ÿ´ïVÔÁË/šÏè„íÍ÷ ¬‡Ôþ¾»ü‰¹CöÌs}‰ôúëï“¢Í+^w‚L(È‚hep¡è.øëøÃ]dzŸ%d#Ü£y£ ‹ææÊQ(Ètg¯;AdA´²¸Pt—üuüá®ãÎYáϲî…yûuðŸ·Î¤xÙ%æ[ìòíÕ÷ _éý|w?ÁÜ!{òé‰ö†FH×™¯;AdA´²¸Pt—üuüá®ãÎYáϲî…y£ +ÌOëhdZò&/^w‚þ(È‚hep¡è.øëøÃ]dzŸ%d#Üãñ:ôbêhËÍŸ¡¸Û€Æyuì{a‚ÂN¾»O˜hî=öø¤{Ó‡”kO‰×  ² ZY\(ºKþ:þp×qç¬ðg Ù÷x¼QÅã(Õ 2)éÜyðºtAAô@++€ Ew)À_Çî:îœþ,!á¯÷Aýž:¼ïže[·.˙ॗÌó·Ýþ=?úõ®9÷ÃÆd|/È&M.'¸Qšõ8dÈÈd #öŠ×  ² ZY\(ºKþ:þp×qç¬ðg Ù÷x½QÅë™To(È’’ͯ_¼îP=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈF¸Çë=sæLêðŽÛ¢xûm¦ÿqãVÒúIqÝæwË6بµq‡Ì8I=KAöð¨íˆtèÍ£¤hóÊƒ×  ² ZY\(ºKþ:þp×qç¬ðg Ù÷x½QÅë™To(È’’ͯ_¼îP=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈF¸'ã=rä]Ôñs^Fqæ¸å·_ÚbÅ>æÙüek¨;dÄ öà{A6eªù Ùƒ#G¦7ßüˆ˜m>‰ðºTBAô@++€ Ew)À_Çî:îœþ,!ឌ7 ²d\ãêY\’ÑúÁëNÐ YЭ¬.Ý¥¸ë¸sVø³„l„{¼Þßÿ=u¸ÛN;Sìñµiï¿Æü.Ù“eæ³d;^Ùšžó¦¹s†;dñÎC}½ù^MÌþÙQ‡UÅä™së#}¯;AndA´²¸Pt—üuüá®ãÎYáϲîñz£ ‹×3©ÞP%%›_¿xÝ :¡ z •À…¢»à¯ãwwÎ –pÇûÁ{Î<˜ây•æÛ7,1Ÿã,ÿliîˆ]ùðz´é–[ñ;dl#}-È–/«&Ƶ;L§xJƒ6çïñ'Š?÷ Eí¼îgYЭ¬.Ý¥¸ë¸sVø³„l„{<Þ(Èâq”ê™”tîþÒ‹ç¥xÝ Š£ z •À…¢»à¯ãwwÎ –pÇY<ŽR½  CA&µÖòɃ‚,¥"Üoк“¸ë¸sVø³„l„{2Þ˲wȦL™B 8ŽyãijŸsÎW¯¸ò[ЏCF b¾dË–šß±kÓÞ|fìæÒ¶dX1wÌÌc&ÛÊd&4.¡çn³ÅWßy[Ìü׉ðºókLYЭ¬.Ý¥¸ë¸sVø³„l„{2Þ(È’q«Wd(ÈâZKqôƒ‚,EûÀ´î¤Â_Çî:îœþ,!á.ëÍÙöÜÓüƒ¸ªrmóFW~ Q@À—‚ìøcÌg_}Å|f±Ì|T,Sm¾l1S^n¾å³ukó™²Òs‡¬|õjRž÷ƒù<ò@ ¼î8p‡,È àBa ¸ëèfź×ñ‡»Ž; 2wΊ‚ ¯"î¹0 Žoк“¸ë¸sVø³„l„»¬7g?þcúó€ýÿDñËY¸CÆ6Ñ—‚¬6«Ï?¯ §n½½'Å;ï|®¶]U¶ãu'ÈŽ‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â]Ö›³¡ c ˆ‚Ldzâu‡%LDAô@++€ Ew)À_Çî:îœþ,!á.ëmgÛl3ó{d×_k>ë3h߆ö.h' à{A6kV%© ½eŠwßý|ŠÑ»ÄëNÐYЭ¬.Ý¥¸ë¸sVø³„l„»¬· ™-"ÓFA&ã\[¼îeP=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈF¸ËzÛÙØ¿cGóµx7\ûí²ÞzæŽïÿä‹éÏ/gUQüëÅø)ľd³g›;d7ݼ1é öB¥äáu?zôèä’¤¨gd)š,É¡âB‘Ôþm.øÿÖDb Ü%”kÏÿÚm’|îIêÖß7û£ «ß*Î=PÅ©¾/^÷(ÈŒ ²ðk¨(ŽÀ…¢;Íð×ñ‡»Ž;g…?KÈF¸ËzÛÙØÿ §.¿lOŠ#î3¿uòÑßPûç–RÜqÏæG=Ñ…"¢ ø^}ù¥¹CvýM=høð—¢A%t¯{dYB -íÝâBÑAøëøÃ]dzŸ%d#Üe½ílì‚Ì–I¶‚,Yßúzçu‚ÌH¡ «oÅéó¸Pt'þ:þp×qç¬ðg ÙwYo;›íë-7Ð.×\~Å}Ö4¡8¿z Å?^Õ†âç¯EÑ|/ÈæÎ5Ÿ5¼æzóûv÷ÞûJ4¨„޲×}BiRÓ- ²ÔL•ì@q¡ÈzÛÙào‹È´á.ã\[ø×&“ìv¸'ë[_ï¶? ²úÄâyY<ŽQ{±×}Ô~|9™/3óyàB‰4dwð Óîp 2b7ðWàap/°ÀÃÙÿO;îD=Ý{Ë­ÏZa>C¶V¦”Ú·µ\NñêGÖ£¸Çî-)â!š€ïÙW_™;dW]³ÝÿkÑ :Š×=þ“EŒ‚,¡…–önq¡èÎ üuüá®ãÎYáϲî²Þv6öGAfË$ÛFA–¬o}½óºGAf¤PÕ·bŠôy\(º¸ë¸sVø³„l„»¬·­m«Ö´©ûêŠûU˜;bë—˜ß!3­Læü&æwÈ>šºí·þú í®Ð!à{A6ož¹CvùUæÛ8GŒx=„Nò»âu'hŒ‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â]ÖÛΆ‚Ì‘i£ “q®- ^w‚2(È‚hep¡è.øëøÃ]dzŸ%d#Üe½ílmdîxmÓkszjêäÉgÌCq¦Í(Ö40¿+õí‚M¨‡Â|/Èæd‡ìO;ÿHP_~·°0°˜ÆëNYЭ¬.Ý¥¸ë¸sVø³„l„»¬· ™-"ÓFA&ã\[¼îeP=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈF¸ËzÛÙêóŸ1còÐC·Qܥ߿)èߨî í¾dË—U“ÂÚkO§xuùݺ‘´§ö¤/>¡”Ü®õ­ûä2»Ù3 27çE}T¸Pt§þ:þp×qç¬ðg ÙwYo;[}þ(Èl±xÚ(ÈâqŒÚK}ë>j¿i=YZg.áqãBI¸žîá_PBOÃ=!Ø<»…žP1ï÷˜ACvÖÿÀ·§ #î]A±U+þƉ‹|wß ²Šró-­ZO£™½?Ó.0Ã_–šçŸèlî˜M=+ð¼t#캗Ÿt>dÒâ)ɇ Ew¢à¯ãwwÎ –p—õ¶³…õGAf Fk£ CAmå$s ²d\SßkØ7ˆÔŸ°c' »Ž;g…?KÈF¸ËzÛÙÂúóÂx×SWÿ¼Õîí||)È.XC§Ûa]ó™±ËKÌïÚ™O’e2æ¾X&Sýë»ÿýõÿÿ½Vsг¿™G±Aó»wÔx»î†¤š™*¿»Éq¡èÎ üuüá®ãÎYáϲî²Þv¶°þ(ÈlÁhmd(È¢­œdŽBA–Œkê{ û‘úvìà¯3!p×qç¬ðg ÙwYo;[Tÿ‡º‹ºjPv;ÅÃmhwh/_nhÏœý?Œ/Ù×ͧy~ìáÅKyz³·Æ~øÑÜùêÒ¥{öy³Cy¥ù]»WÞCÛ×Yw]ŠRQ×½Ôø¤ó  “OI>\(º¸ë¸sVø³„l„»¬·-ª? 2[2\ ²p+&Ù½Q%ë›ÚÞ£¾A¤ö„8üu&î:îœþ,!á.ëmg+Ôÿ´ÓQ—çže~¯¬GFýv˜MíA´¢xöykž/Ö†/Ymó÷ÓO«é©Ág›ß{ô±±9w­®6wNK¾µ–s·Ø7ºîcr‡(È”'ÀÕô¸Ptgþ:þp×qç¬ðg ÙwYo;[¡þ(ÈlÑüÚ(ÈŒ ²üÖKÒ{¡ KZ8¥ýú‘ÒÓvfØð×™ ¸ë¸sVø³„l„»¬·­Pÿ… R—§Ö—â)'®¤¸×^_RܬÄ|¶ìðkÌ’sÏÁ²ÿ‡ñ½ [ýöÅÓ·¥uðøãïRtå¡ÐuïÊyÄ5dqIzÖ.Ý …¿Ž?ÜuÜ9+üYB6Â]ÖÛÎV¨? 2[4¿6 ²üœ’Ú«ÐuŸÔ¸´úEA¦%ïx^\(º¸ë¸sVø³„l„»¬·-.ÿþ¼'u=í­S¼ ²Å»[® xÝc)î6Àl§F?ø^-Zd~Ÿì”ÓÌï’=ñäûNÍv\ëÞ©“*`0(È ÀóùP\(º³ ¸ë¸sVø³„l„»¬·-.d¶lÝmduû$ýl\ë>éqJõ‚LJ:eyp¡èNüuüá®ãÎYáϲî²Þv¶¨þ_}õuµë;RüýâUw/f8§±ù}ªI36¢':v¬û÷Ê‚GûÛò½ [¼ØÜ!;éTóíšO>ù_§&3êºwê$b ²1}ê ŠîlÂ_Çî:îœþ,!á.ëmg‹ê‚Ì– ×FAÎ+î½£®û¸ÇáJ(È\™ ÇÆ EwBà¯ãwwÎ –p—õ¶³EõoÓÂ|lÓš2ê²G¹¹#Ò9cÚíJJiûu—R\¼´—º¨Û¾dK–˜õpÂÉ-ižŸzê§æ;êºwê$b ²1}ê ŠîlÂ_Çî:îœþ,!á.ëmg‹ê‚Ì– ×FAÎ+î½£®û¸ÇáJ(È\™ ÇÆ EwBà¯ãwwÎ –p—õ¶³EõŸ4iu5~üxŠ?þ˜â¤Lœ8mµ{õhBñ½ñæ[©ï‡lÙ²jšåcŽkFñ™g?tjÖ£®{§N"ÆÁ  ‹Ó§®p¡èÎ&üuüá®ãÎYáϲî²Þv¶¨þ(ÈlÉpmßï¡ ·´÷.éß¿ö êÊÏÿÏOŸ>}êÚ ÏÅ,÷˜ACvÿ`1í÷˜ #vÿˆp÷ <~‚ùVÊ>½›úqBÖY¬Ycþy?mºùLá–[ngí¡ÛLzÝëž]øì(țŸPt§þ:þp×qç¬ðg ÙwYo;[Òþ(ÈlqÓFA–ÛEjkÒë^ê<âʃÿd1.IÏú‰úŸPxÆ v:ðס‡»Ž;g…?KÈF¸ËzÛÙ¤ü:jJ}ÓõæNÙºë6°‡RTmßÿ“ÅŸ~ZMó¹åÆs)~»d…Só+µî:é:ƒ‚¬œb~ ŠîìÃ_Çî:îœþ,!á.ëmg“òGA”GAônI­{éóŠšYT9ÏÃ…¢;Áð×ñ‡»Ž;g…?KÈF¸ËzÛÙ¤ü¿þúkJ}å¦xÿ½öHŠ«íkA¶dqö÷è:Π ½}M[Š'—,¡XQUåÄDK­{'N6A  Ë©wÁ…¢;ëð×ñ‡»Ž;g…?KÈF¸ËzÛÙ¤üQåQ=¤[Rë^ú¼¢æCAUÎóãp¡èN0üuüá®ãÎYáϲî²Þv6iÿ§žICX´àŠ'˜û³dUUæ[ú6ôó[}+ÈV,7¿;Ö¡Ãtš×áÕíKmuÆÌç 5‹i{Õjó³’ù•^÷ nýHj@IDAT(Èœ†„ Ewà¯ãwwÎ –p—õ¶³Iû£ 33€‚ ™}-j¶Qiê;œ[ú Âa •¡Á_…=wwÎ –p—õ¶³iùŸþ4”#ÿ˜âV[6¢øÜ3æ³Fj>svßðN´ýØcÌg‘¨áÁƒ/Ù?˜Âªóúæ3cgfZÐì˜ûe™ Gs,“Y“½SvwõrÚoÉbsǬUëÖ¢³ªµîEO2D2d!°ŠiW\(º³ ¸ë¸sVø³„l„»¬·MËÙ—4£_ïjOIªÚ(ÈR5]µY­4Åý„ÖDq«ÿröðÿÅBò/¸Kjÿ6ük"±îʵçÐò¯¨¨ Ax`ŠíKñ³7Ë)–gï¤ y²#µwÝÅÜy¡†¾Ü!{êIsGsİ…4+¥¥ü™0sOlê´RÚ¾Í6;R,++£XRj¶>ï\jïÔ·/E©­u/u~aó  +V$ûãBÑhøëøÃ]dzŸ%d#Üe½ílZþ(Èü¸C†‚̾¢ÒÙFA–ÎyK|ÔZo‰ŸXJÀ_g¢à®ãÎYáϲî²Þv6-ÿñŸ|BCзÅý*Í•~Õæ³dƒ™Ï͘µ1=¿öÚ¹¿‘žLáƒ/wÈj£_½ÚÜ!ÛgÙã•W§Ô¶«Êv­u¯r²y$EA–R1î‚ EwÖá¯ãwwÎ –p—õ¶³iù£ ó㙽ž¸‚Œ%ÒQ¥cžÄG©õ!~¢Ž&„¿ÎÄÀ]dzŸ%d#Üe½ílÒþ—œ á©ûFP¼ÜÜIi“1Ÿ)Z–ý^¾K›.¥ç,îiÙ‹¶ïwȪ³_¯¸×@óÇk¯Mujޤ׽S'Ÿc0(Èr `S_ÿ­¼ðB¥3p×qç¬ðg ÙwYo;›´? 23(Èì•(Û–^÷²g> ²ðfEq.Ýi†¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ&å_™ýVÅæÍ›ÓÖif¾5qý²†Ô^w¹ùvÅš5æŽÊ[˜‘¾?¾»=d/Ú¾d5æÆgf?¯¡ùzýõiN͛Ժwê¤ë ²:pŠù)\(º³¸ë¸sVø³„l„»¬·MÊYPYÐCº%µî¥Ï+j>dQåÇ På@Á&|†L{ à…Jgà®ãÎYáϲî²Þv6-d~Ë"¯3d,ávDAæöü¨Në Bí„K  »Ž;g…?KÈF¸ËzÛÙ\õðÁÛi¨ ÜEñðCÍgÍìñ§µ],wÈvËÞ!{wÈœ^ª(Èœž½Á¹ú¡'"›þ²Þœ î,¡áwݬ®®{dºë"®ì(Èâ’L¶dÉú¦¶wWß R ràð Óîp 2b7ðWàap/°ÀÃ]÷?õÔ}é Ï?g&ÅîÝxÆn^,wÈvßÓ|†ìµ×§|II‰àúº—FBA&-ž’|¸Pt' þ:þp×qç¬ðg ÙwYo;›ëþ(ÈìKWY:æ Y:æI|”®¿Aˆƒ'„¿0x6ÜuÜ9+üYB6Â]ÖÛÎæºÿ‚ hȧŸÖ—âã–Ú§Êv±Ü!ë¿[͆¬´Ôùs}ÝK/jdÒâ)ɇ Ew¢à¯ãwwÎ –p—õ¶³¹î‚Ìž±tµQ¥c¾P¥cžÄGéú„8ˆpBø ƒgÓÁ]dzŸ%d#Üe½íliñå•çhè3g\Jñœ³ÊìS¡ö=Ã̵¿Ò†ÚmÚäÞ/çÁ‚}¿C¶by5inºþlН½7Žb¯-¶T®=UZÖ}ígï3(Èâõô¦7\(ºS ¸ë¸sVø³„l„»¬·--þ(Èì™s»‚Ìíù±G‡‚ÌA›ÒòáëtÁ_gfá®ãÎYáϲî²Þv¶´ù_qÅ©t »x“âhBq~懖'M,§öã/t¡Ø÷Í)ºöàë²Å‹Öu—Î3(Þµº-Å‹›­¦øÚ{c)öT¾S–¶uOh >  K7Í]ãBÑ=øëøÃ]dzŸ%d#Üe½ílióGAfÏ [mdnÍG¾£AA–¯T‘í—¶7ߦþ:3 wwÎ –p—õ¶³¥ÕÛ>æØ„‰_Ó)]ÖŠâý –Sœ5wSŠíÛã3d‘ðò¥æ3cë®û)eºg¹3f§½¬¹¹ƒöüÛoÑS[n½µ½‹H;­ë>)dIɦ¼_\(º¸ë¸sVø³„l„»¬·-­þ(Èì™Ôm£ Óõ/4; ²B==>­o¾Lüufî:îœþ,!á.ëmgK›ÿ)GC§ðá¿^ xÎ ó»VK3æ͕͗Òöù {RtõÁ—ÏÍŸo>Ö±“ùÌØá™fD^“…¯-¾ÖÈÌ×ûã?¡=7Þl3Ñ©JÛºOYÒÂ)íŠîÄÁ_Çî:îœþ,!á.ëmgK›? 2{uÛ(ÈtýãÊŽ‚,.IÏúIÛ„güøëÌ(ÜuÜ9+üYB6Â]ÖÛÎæºÿ÷ß}GCÞr3sÇ«_…¹ç²OUƒÀ©L«©¢ö{½Í›wÆu<ïZ×;dŸN¯ Ú[‡þD±Äܰ̔f?º7fŒ™¯]@Ï7jÔˆbi©ÙqÀî»S{¯½÷¦(õàúº—rà<(ÈX1 € %À!Þ€¿89%„»Ž;g…?KÈF¸ËzÛÙ\÷GAfϘ[mdnÍGÔÑ  ‹*çùq®¿AxÎ;dJŒu¯ŸM ¸ë¸sV×ý?þðCê9§Nqöœ9—,[FqÃf-(V.5Ÿëw„iÑ™¶»úà˲ú|ío¾Uñ‘GÍ<6oîÆï¹¾îësûydq‹zÒ.݉„¿Ž?ÜuÜ9+üYB6Â]ÖÛÎæº? 2{ÆÒÕFA–ŽùBA–Žy¥ëoâ  á/ žMwwÎ –p—õ¶³¥ÕYöÙ”)Sè”Þ}÷]Š3gŒ¢xÿ½ö™ºÕ.–;dûd¾MqäÈhZ´0w0µg#­ë>)7dIɦ¼_\(º¸ë¸sVø³„l„»¬·-­þ(Èì™t³‚ÌÍy±G…‚ÌA›ÒúáËôÁ_g&á®ãÎYáϲî²Þv6ßüŸzj$â¢7P<éÄà·1Úç¯Õ.–;dlî=øà‰ºeË–Zä¼¾­ûÀÉEh  ‹€V ‡àBÑeøëøÃ]dzŸ%d#Üe½íl¾ù£ ³gX·‚L×?ßì(Èò•*²ý|{ƒHÛôÁ_gÆà®ãÎYáϲî²Þv6_ýÏ;÷0:Õ£ú„â–[4¶O]µ],wÈú‹ù²ûî7Ÿñkݺµª;'÷uÝóù…(ÈŠÉþ¸Pt'þ:þp×qç¬ðg ÙwYo;›¯þ(Èì™Öi£ Óq›YX±"Ùß×7ˆ´Lüuf î:îœþ,!á.ëmgóÕ¿¼¼œNõ ƒ¶¡øâ¿ÊìSWm˲ƒ5wȆKÞmÚ´Quçä¾®{>¿°YX±"ÙŠîDÃ_Çî:îœþ,!á.ëmgóÕ™=Ó:md:îa³¢ +V$ûûú‘–郿ÎLÁ]dzŸ%d#Üe½íl¾û¿ýö›tÊïŽ=‹â%•–-3ßxèA_Ñöá#:QìØ±a`¿¸År‡ìÃͲ»îz›Ûµk7e¤þ|_÷aQP…+’ýq¡èN4üuüá®ãÎYáϲî²Þv6ßýQÙ3.ÛFA&ë5 ²¨ržçû„ëÓ‚»Ž;g…?KÈF¸ËzÛÙŠÅÿ¦›þJ§ÞgëQüñ»UO<銥%2s¾Ú”þhß>ÙϜ˲}÷¯$Ï#Þ˺¶7ÐÊŲîóeFA–¯T‘í‡ EwÂá¯ãwwÎ –p—õ¶³‹? 2{æeÚ(Èdœ Í‚‚¬PAO/–7W§þ:3wwÎ –p—õ¶³›õÌg˜:®2wÈ^Þ”HþÞb)Åô´‰iû~‡lñ¢5äÖ»Û—/½ñ?õ”D<ÃvZlë¾>dõ éó¸Pt'þ:þp×qç¬ðg ÙwYo;[±ù£ ³W@2mdɸ&Õ+ ²¤dSÞo±½A¸6]ð×™¸ë¸sVø³„l„»¬·ÍwÿwÇšß¿Ús·ÝèÔ\Ó˜âÕ (N­©¢øÁ6æŽÎþÛÚI?øz‡ì§ù«‰n£®3)Þ^Õ–âÝ­ÍgòNrµ?îXŠZ¾¯û°®(ÈŠÉþ¸Pt'þ:þp×qç¬ðg ÙwYo;›ïþ(ÈìO¶‚,YߤzGA–”lÊûõý Âõé¿Î Á]dzŸ%d#Üe½íl¾ú?ñÈ£tªgœpÅ}*ÍïuϘ;cKL|£¦œž_ëä&o½½#Ť|»CÆÿ‰b—Î3ˆî®ÕæÎ˜íx_ã~ÌuWÓSÇœt¢½‹HÛ×uYT9ÏÃ…¢;Áð×ñ‡»Ž;g…?KÈF¸ËzÛÙ|õGAfÏt²mdÉú&Ý; ²¤…SÚ¿¯oi™øëÌÜuÜ9+üYB6Â]ÖÛÎæ«ÿG}D§úæ˜1'ŽûâäI“(~öÕ\Ší˜;67 [›ÚG•ûÎ=ãƒ/wÈ.0Ÿ½[·ã§¤óçs§±¦Äü°[uM m/)5w(yûä†óîGFÑ{Ú×lzôuÝGåCAUÎóãp¡èN0üuüá®ãÎYáϲî²Þv6_ýQÙ3LY2®Ò½¢ “OI>_ß RŸ¿ÎLÁ]dzŸ%d#Üe½ílÅî?~üx"2ähŠ2wvl§¸Û¾Ü!«¬4wÀ®¿a>eo„e8>ûœñÜ}céù6mÚP,ÉÞAëÑ£µ÷Ûo?ŠRžîmgd¶Ú$€ Ew!À_Çî:îœþ,!á.ëmg+vdöŠ×FAÎËÕ½Q¹:3Êã*ö7e~Ü!Sš¬{%ølZøëøÃ]dzÂßH¼òÊsôÇg3/¥xö`ó»YìwôåY}.Çž`ö¸æšWéN:ÕwˆÈóX÷AfdA´²¸Pt—üuüá®ãÎYáϲî²Þv6ødöʈ§‚,Ǥ{AA–´pJûÇ„îÄÁ_Çî:îœþ,!á.ëmgƒPäŠËO¥ {ìþ&Å?üÞ|k`p¯Â[År‡ìøìÏŒ]yÕË„¶þúëŽCX÷ADdA´²¸Pt—üuüá®ãÎYáϲî²Þv6øEP= m¡ +TPæxd2Ω˂7Ý)ƒ¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[Ä´wß½ýñÚËæ³dÙ/üÍÎ šßáj×.ÜgΊæÙI†ìŠ+^¢?ºtéòC X÷AudA´²¸Pt—üuüá®ãÎYáϲî²Þv6øÛ"¦‚,·KØ­Ç£ K¦²? 2v÷“â BwŽà¯ãwwÎ –p—õ¶³Áß1í?þˆþxö™ã)^wMp¿ÛoY@î¼ÓÄñ“Íïi5kVܱ–V±Ü!;ñpé¥/Òl°A-"²›±îƒÞ(È‚hep¡è.øëøÃ]dzŸ%d#Üe½ílð·ELYn—°[Q…ÓÙ™Ž»óYñ¡;Eð×ñ‡»Ž;g…?KÈF¸ËzÛÙào‹ÛwÞy-mèÜqÅ;†|MqÍÔjŠŸ6¨¢øÝüÍ(æûP,wÈN:¥†H.ºøŠ]»vÍ—(Ñý°îƒ¼(È‚hep¡è.øëøÃ]dzŸ%d#Üe½ílð·E‚mdA°-daÅtöGA¦ãî|V¼AèNüuüá®ãÎYáϲî²Þv6øÛ"Áö‹Ï?Oö4ˆâù ZšªK(NÜÞ|Ëâè±ÝÌö<‹åÙ)§ ÿú/ú£[·pNyr†Þ ë>H†‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[$ØFAôÛBAVLgd:îÎgÅ„îÁ_Çî:îœþ,!á.ëmgƒ¿-bÚ'~ý1åÕ×)ž¹Ô|Š÷~¹fýÙéŒf‡þc=~*¯X,wÈ;¢‚<®¾æŠÝ»wÏË'é°îƒÂ(È‚hep¡è.øëøÃ]dzŸ%d#Üe½ílð·ELYn—°[Q…ÓÙ™Ž»óYñ¡;Eð×ñ‡»Ž;g…?KÈF¸ËzÛÙà9êÐÃhØ_¢Ø«¤!ÅuVš;=ëgʨýV£JЧë@ñÈ#ÚPÌ÷Á÷;d ˜ÏÖmÓc6‘ì>è`ŠÃF>”/Q¢ûaÝyQ=ÐÊ àBÑ] ð×ñ‡»Ž;g…?KÈF¸ËzÛÙàAAôˆÚBAUNç8d:îÎgÅ„îÁ_Çî:îœþ,!á.ëmgƒPdÑ¢E´aæÌ™§NJqòøñ'}ô1Å9_~Nñá§ÛSüãÎæ³dÔÈãÁ×;d ~2wƺo8ƒî¨jKñÅæÎb—äö»îÌC)¹]°îƒ¶(È‚hep¡è.øëøÃ]dzŸ%d#Üe½ílðŠ  z„m¡ +æÆþ(ÈܘçF7Ý)¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[$¿vyy9íxðÁÛR|á¹ÒüÌîå۲ŋ̱.ͱ»V›;c6Êk­Ìgò:¸=uËð{ì]DÚX÷AfdA´²¸Pt—üuüá®ãÎYáϲî²Þv6øÛ"ùµQP=ÒÖBA–¶/Þ „ kIÿZ`Þ ÷„ëéþõ%ô4Ü‚ͳ[øç UËno¿ý&=óîØ³(^rQ~wÊ|¹C¶bE5÷zë|Jqû²Æ3%&”Wšßokа m()5>_ט;j§_z1m?û¯š„±îƒÐ(È‚hep¡è.øëøÃ]dzŸ%d#Üe½ílð·EµQ¡ ·bÜÜ™›ó¢>*¼AèNüuüá®ãÎYáϲî²Þv6øÛ"ÑÚ7Þ`îðl»ÍóÔÁ®»dïÕÒ/wÈøôF<`¾rÍsG¬${‡ì‰'ÍÚå4ú£S§NK³wÊÚ¶5Ÿ5Û{ï½¹+‘ˆudFAô@++€ Ew)À_Çî:îœþ,!á.ëmgƒ¿-­‚ Y´•ãÆQ(ÈܘçF7Ý)¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[¤°öþûÿŽ:ùÀ*Š-ZäþLÙv¿ÿ‚žÿðƒ…%tüèsÎ3ÿIãñ'8 (È‚hep¡è.øëøÃ]dzŸ%d#Üe½ílð·E¢µQåvCA–Ûŵ­øO]›Gƃÿ„Bw"à¯ãwwÎ –p—õ¶³Á߉§=kÖ,êhêÔ©§LšDñ­1/P\Vþ)ÅÿÛ¢¯'Ÿf¾UòÄ£SÜvÛm8U¬ûà4  z •À…¢»à¯ãwwÎ –p—õ¶³Á߉§‚Ì8¢ ‹g=%Ý ²¤…SÚ?Þ t'þ:þp×qç¬ðg ÙwYo;üm™vûöæ[üØM&¡p–ï¿3¿³¶í&_Pæ®›Ï`¾›Ax8¿I‡u$AAô@++€ Ew)À_Çî:îœþ,!á.ëmgƒ¿-"ÓFA&ã\[¬û  ² ZY\(ºKþ:þp×qç¬ðg ÙwYo;üm™ööÛoO‰úïj>cuíÕ2y“ÎòÃ÷æÎXÏ>£T·U¶¡8¾¡ù¶Å©½7¥öï¿—ôPêìë>ȃ‚,èVVŠîR€¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[D¦‚ ™ÌJË/ ²üœŠn/¼AèN9üuüá®ãÎYáϲî²Þv6øÛ"2mvßwß¾”°KçQ÷ØHf1gùi¾¹3¶Q×™ÔóíUmsf˜ÔÐlþd óí’ÿþp\Îý’ÞÈþ£GN:U*úGA–Ši’$.yó_g„ÿ¯5äþ†»œu®LðÏ¥’ü6¸'o\Wø×¥“Üs쎂 Yr«,ÿžQåoUT{ò þŸ i‡?Üut³bÝëøÃ]dzŸ%d£í~Äýhÿò#ŵ×nÐÔ©åÔþ÷è埳Vày­Æ²eÕ”ºû†3(v˘q›OŒe2«*ÌÈÊ6¥?ʘ痬6wÔþ8ðÏ´ýþGÌB³wò¶òÝ΀‚ÌíùQ.5zJ ¸ë¸sVø³„l„»¬· þ¶ˆLÛvGA†‚Lfåå΂‚,·KÑoµ_¨ŠDþÂàÙtp×qç¬ðg ÙwYo;üm™¶í>wî\J|ÍÕ)Þ{ÇëæÓ7]oâV½›P{Ì;ný~Ùè1æÎ]y¹¹cVRRBã|ü‰5ûls6Å^½zQ,--¥Ø¨‘ùÌ\ß¾æ³t´QàÁöHét dNOÞàp¡èÙÿføëøÃ]dzŸ%d#Üe½ílð·EdÚ¶; 2d2+/wd¹]Š~«ýBUô ÂðϦƒ»Ž;g…?KÈF¸ËzÛÙào‹È´ks5j8 àºKÌ¥‹Í¦¦æT¦ë9Íéùn\Wf f¹êjóY±]û›óÚi§ ì1žÃkó§÷ôõ‚‚,}s&2b\("̵&­4‰>÷Dyëíþõ%²ÜaÍ»SøçM뎵¹£ ‹•¹ÖÎjó¯õÏŸ@AæùG==\(Qåâ9þñ8†íîaÅâÝþñzæÛÜó•Jf?ø'ãZ_¯¶û>F‡}ôQÏ©nF±W‰ùá®{›¯ öÉwv xØ¡m(ºþpõ5U4Ä~»˜;d;ï¼³C¶ý”â P)⻜ŠîìÀ_Çî:îœþ,!á.ëmgƒ¿-"Ó¶ÝQɸsÛŸ·kDAV¬3_ÏyãB©(á§áŸ0p-Ýý¡Íð‚¶ÒÀÝnÂ_<›ŽÝ×mÕŠ¶LxýMŠ'—›ol›1‘GwEó¥ôç¿ÞÙâ››o[äç]×\k>C¶sß»iˆÒߦX› ûã÷n ²ÚVJ‘oÇ…¢»à¯ãwwÎ –p—õ¶³Áß‘i³; 2o; û£ 32(Èì‚6 àBÑ]ð×ñ‡»Ž;g…?KÈF¸ËzÛÙào‹È´Ù}Ëžæw¹&ŒG‰§ÏœIqŪU;7jLq^…ùšÅe+{R;-×]o>C¶ÃNæY¿~ýœ:û£ 3ӂ̉eéÞ p¡èÎ üuüá®ãÎYáϲî²Þv6øÛ"2mvGA&ãmgadF™½BÐ&\(º þ:þp×qç¬ðg ÙwYo;üm™v}îK–,¡L:•âÓOßGqàŸÿKq—?5¢èúÃõ7TÒ·ÿÃ]fÜ»ìâÄëówb‚ƒ@A&ˆ¦T¸Ptg þ:þp×qç¬ðg ÙwYo;üm™v}î(È’‡úü“Íî^ï(ÈÜ›'F„ Ewà¯ãwwÎ –p—õ¶³Áß‘iGußo¿mi€£*§Ø¼yðÛeFŸ–‡˜Ïmû»;è ]wÝ5ÿƒÜ3ª‚CRí™*¿»Éq¡èÎ üuüá®ãÎYáϲî²Þv6øÛ"2í¨î(È♟¨þñdw¯dî͉#Â…¢; ð×ñ‡»Ž;g…?KÈF¸ËzÛÙào‹È´£ºOŸ>8üžC(Þú™GÌrÉå+éÈ~ýÌ·,òyGì.¶ÃxøRCŠ‚,¶¥åWG¸Ptçþ:þp×qç¬ðg ÙwYo;üm™vTwdñÌOTÿx²»× 2÷æÄ‰áBÑøëøÃ]dzŸ%d#Üe½ílð·EdÚ…ºq ´Y“aùKÃ:¾bE5=/õ™³o¿YMù¶Øø3Š ›´¤øýâEµ õ×ÜùQÅ-êI¸Pt'þ:þp×qç¬ðg ÙwYo;üm™v¡î(È ›§Bý ËîÞÑ(ÈÜ›'F„ Ewà¯ãwwÎ –p—õ¶³Áß‘iÇå~òÉiÀ»àsŠ]»Ÿì¸#çÑöÍz6¦xÁE(&õðÃ÷æÎXÏ̱Û*ÛPªù%5‡´2ŸyûvÁOI !¯~ãòÏ+Y vBA–‚IÒ". õ_rÂÿ É¿à.©ýÛ\ðÿ­‰Ä¸K(מþµÛ$ùL\î(È¢ÍR\þѲ»w 2÷æÄ‰áBÑøëøÃ]dzŸ%d#Üe½ílð·EdÚq¹ÿô“¹Ó4xð.4ð¯3¿ûµ[ßÙÔnôƒ9Ÿ}Î1wª®¾fDNpÁOk¨ßîΠxGUÛœydÌgÙ®7)Ë|¿haÎý’Þ—Òã”ê™”tÊòàBÑ0øëøÃ]dzŸ%d#Üe½ílð·EdÚq¹£ ‹6_qùGËîÞQ(ÈÜ›'F„ Ewà¯ãwwÎ –p—õ¶³Áß‘iÇí~ê‰ÇÒÀŸù0ÅóW›[P¯´,§ö™ÃÖ¦xðA­)ÆõÀßÞ¸Yö3cÍ*øwÑÌgÆÊ+M¦ÒÒ&ôGYƒ+«Í².›nBí±Ž3; =Æí/4ìÄÒ  KŒ6ÝãBÑ?øëøÃ]dzŸ%d#Üe½ílð·EdÚq»£ 7oqû‡ËîÞÞ(ÈÜ›'F„ Ewà¯ãwwÎ –p—õ¶³Áß‘iÇå¾ÛŽ;р˦™o5<|¹¹óÄgqYó¥ôçËïv¥Ø3ûm‹ü|\qúô êjÅJ“¿${£ì‰'Íöõ»œOÏ÷íÛ—bii)Å&M̳6ÚˆÚRqùK7é<(È’Niÿ¸Pt'þ:þp×qç¬ðg ÙwYo;üm™v\î(È¢ÍW\þѲ»w 2÷æÄ‰áBÑøëøÃ]dzŸ%d#Üe½ílð·EdÚ…º·kÕŠºI…¹#µõjsKjýLmïTb>«u\õj¯©ÚBæÄ¬,ÿ¼cméÚíhí¡Ó,Ô_gÔÉeEA–œmª{Æ…¢;}ð×ñ‡»Ž;g…?KÈF¸ËzÛÙào‹È´ uGAVØ<ê_Xv÷ŽFAæÞœ81"\(ºÓ¸ë¸sVø³„l„»¬· þ¶ˆL»P÷±cÇÒ@ßï=Š>0ßR8yÒ$jÏœ;‡âVÝÍ·-ŽŸ±µ¥î¸ËÜ!ë²ÁÍ”zŸ}ö‘BÎ|…úçì4ÅQ¥xò’:.”$uëïþõ%±Ü“PÍ¿OøçoçžpS3|_ðoÇ…º£ +l õ/,»{G£ soNœ.Ýi€¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[D¦-å>tèetB›lôÅ{7’9Ál–;ïZAuîb>C¶ï¾ûŠæ¯-™”mù]ÛŽ‚̵qd<¸Pt'þ:þp×qç¬ðg ÙwYo;üm™¶”; ²Üó)åŸ;»{[Q¹7'NŒŠî4À_Çî:îœþ,!á.ëmgƒ¿-"Ó–v?üpóû_· O'¸öÚæ[“>Û»î6wÈ:v6Ÿ!4hPÒ)óê_Ú?¯A)î„‚LßåÔ¸Ptgþ:þp×qç¬ðg ÙwYo;üm™¶´; ²à¼Jû³»×BAæÞœ81"\(ºÓ¸ë¸sVø³„l„»¬· þ¶ˆL[Ú}Μ9tb×]k¾åpø0™ó¼{˜¹C¶ÎzC(áþûï/“¸ž,Òþõ GýidêSàæp¡èÎ üuüá®ãÎYáϲî²Þv6øÛ"2miwdÁy•öfw¯…‚̽9qbD¸Pt§þ:þp×qç¬ðg ÙwYo;üm™¶–ûO<@'¸|™¹cuü±u–¬¢¢†öoܸ$Ì=ÃͲµÖ¾‰Ž?à€"õ÷AZþqŸG\ý¡ ‹KÒ³~p¡èN(üuüá®ãÎYáϲî²Þv6øÛ"2m-wdf~µüeVWø,(țŸPt§þ:þp×qç¬ðg ÙwYo;üm™¶¶û9gB'züq(nÞ«1ʼnË)þñ³(ºÅ“NjG1ìÃíw,£C5þ+Å“O9%l‰ì¯íŸÈIÐ) ²ð|>ŠîìÂ_Çî:îœþ,!á.ëmgƒ¿-"ÓÖvGA6€&zôèÑ2îxdŽOÖð´_¨´ÎÛ•¼ð×™ ¸ë¸sVø³„l„»¬· þ¶ˆL[Û}åÊ•t¢‡ºÅÞ=Í{µÛV—R¼ð¾u(x@kŠù>Ì[E»nÓósŠËV›#ç/X@´j®?st|ÚþñI<=¡ ‹ÇÑ»^p¡èN)üuüá®ãÎYáϲî²Þv6øÛ"2mmwd¸Cö땎‚ì×øûgíªŸR¤À_gâá®ãÎYáϲî²Þv6øÛ"2mm÷E‹Ì°{÷¦îñ½¹Cvðê¦Ô¾¤ùН¿ß⦛šÏ˜Q£Ž‡o¾1wƶÞÌÜ»¥¢M`ïSÊ–Sû«o¿¡Ø®}ûÀóR m©óÌ7 ²|¥Šl?\(º¸ë¸sVø³„l„»¬· þ¶ˆL[Ûîýz¥£ ûµþþY@û…êçéð×™x¸ë¸sVø³„l„»¬· þ¶ˆL[Ëý‘‡FÒ žzòÉÏ­2w¾z”˜ß#«Îžþ±5æ³^k*·È äûï̇Äzmüí[eðΘÝÉ ÍgØæ~÷-=ÕºMÝûÛÇÚÖò/tÜI‚,)Ù”÷‹ Ewá¯ãwwÎ –p—õ¶³Áß‘ik¹£ 3ó«å/³ºÂgAAÞ¬(ŽÀ…¢;Íð×ñ‡»Ž;g…?KÈF¸ËzÛÙào‹È´µÜ›4jD'ؽy+Šë­®¡¸îÊ ŠæÙLæ¿ÍgÁ>½ m¯íaùrsOm›­ÌgÆ–,XC»Ö˜n3•UÙ?2 i{iY™y>Ûa»è¯/æÎÉn‘ Zþ2g> ²ðfEq.Ýi†¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[D¦­åŽ‚Ì̯–¿Ìê ŸYx³¢8Šî4Ã_Çî:îœþ,!á.ëmgƒ¿-"ÓÖr_±bà”)S(N›6â¤O>¡8ö­·(vYß|â󯶥v}óç›Ï­ZešŸ1Ë<óìR:´A£‹)xàK³;4iÒ„Ú-[¶¤(õ å/u~aó  +V$ûãBÑhøëøÃ]dzŸ%d#Üe½ílð·EdÚZî(ÈÌüjùˬ®ðYP…7+Š#p¡èN3üuüá®ãÎYáϲî²Þv6øÛ"2m×Ýï¿ÿV‚hÞôЇüÅ|,¬ÎȇÍï•”]G‡yä‘a»Hd×ý9é::EAVN1?… Ewöá¯ãwwÎ –p—õ¶³Áß‘i»îŽ‚Lf¸’™+3áØ8\¡rŒ+öáÀ?vÒ¼:„{^L‰íÿÄhëìîuò$þ$ü'Ι -î'´7ÿ¢ ¿ Øµ+cÎÓúÍÆQ,¦mÕ™«)uÔÑ¿ÙGcCZü¥lPII§,.Ý ƒ¿Ž?ÜuÜ9+üYB6Â]ÖÛÎ[D¦wd2ëA; 2íp4Z^¨å+xXð/˜0RpÄÛAð2TGpÅûÎð4¯Óâ>þ|:Ÿ³ÏÞ•â##ó:½ŸwzäQs‡¬jÍU´í˜cŽýù9Í?Òâ/e„‚LJ:eyp¡èNüuüá®ãÎYáϲî²Þv6øÛ"2í´¸£ “YÚYPiÏ€£ùÓòBå(_ÁÂÁ„‘:€{$¶Ø‚l”¡:‚{(®Øw†ì¤yu˜6÷_|šÎëËYWP|fYÎó|óMóûe;íÔœžö¹%Ë+ÍqÇ{|Îã¤7¦Í?idI §´\(º¸ë¸sVø³„l„»¬· þ¶ˆL;mî(ÈdÖ…VdZòŽçMÛ •㜡‡ÿÐd±÷X#wÿÈt÷‚ø >þFê ­î—^zïÀ?¿MqûíS<ãÄo(>ù¤¹#v÷¨]UUCqeùe;îDŠÚiõOÊ YR²)ïŠîÂ_Çî:îœþ,!á.ëmgƒ¿-"ÓN«; 2™õ!™´xJò¥õ…*%¼õþõ%²ÜaÍ»SøçMëŽp•3tgðMËiwßiÇîä0oÖ×û.3¿OöVYµÇŒëFqÂÄrŠËW^DñøãO¡¨ývÿ¸ýPÅ-êI¸Pt'þ:þp×qç¬ðg ÙwYo;üm™vÚÝQɬ©,(Ȥ¤S–'í/T)ãþÍpáÿ‘ pa®5 ük¥Iô ¸'Ê[oçð¯—(‘Òê>äÚëÈãÖë®§xnEŠkeÌ·.žYHíªŠÍ)>þ¸ù²wÞ@í»î¹Ÿ¢öCZý“rCA–”lÊûÅ…¢;ð×ñ‡»Ž;g…?KÈF¸ËzÛÙào‹È´ÓꎂLf}HgAA&-ž’|i}¡J o½Ã„½D‰ì÷DXóîþySź#Ücå ÝüC“År@ZÜW®\Iç»cŸm(vúv>ÅCÌæŸ-æÖ¬¦¿ßÐ|fìå1]©Ý§çç×i`~—ìÎ瞥v¿þ»RÔzH‹¿” 2)é”åÁ…¢;að×ñ‡»Ž;g…?KÈF¸ËzÛÙào‹È´Ó⎂Lf=hgAA¦=ŽæOË •£| þFêî‘Øb;þ±Q†êbßþ±“æÕaZܧO›Fç3p÷=(Îûá{Ššš;^]ÊR»|ÉRŠëõ3¿Köá8s í–Š6´†´.¥?‡ŽIq@³¦æ©¾}y‘˜Œÿ%AA&%²<¸Pt' þ:þp×qç¬ðg ÙwYo;üm™vZÜQɬí,(È´gÀÑüiy¡r”¯àaÁ¿`ÂHÀ=[lÁ?6ÊPÁ=Wì;Ã?vÒ¼:L»û¬Y³è<§L™BqÖ}÷Q¼òõW)Þ]Ó–bmÿ×ÞëhšeÞˆ8#Æd%À2H¶¥½®ÈØ›8$"âDH`Éö lBF"q²‘--¢ûRÕúxÆÚî·Üÿ>ÉÖTwÏ÷zž¯ª¥Òxfþçwžÿ¬ÙŸýèùomüæ_þÅíK_åãoÝÿ¥Qd/-ú ϳ(»/’ÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÿÖÝd™9I¥8ÈRÒo,ç­£zcÜ_øŸËÿ $‘p0_Cø_i^õÜ_•÷çÿN¢Wù‚Gq¯¿ôã¯þàŸœ~÷?þý©~òÁçOõù¿|ðùùÁŽæ‡§þí׿þô£ÿúùÏÏG2åQü_JËAöR’ö‹²ûBùïøsßq¯Tþ%‘­Ü³Þ3ÿÉôâî ËÌËk§8È^[ø>ÿQ¾Q½Qþøï¼9î;î•Ê¿$²•{Ö{¦ñŸ"™þÑÜùËç‡ìÃO>yü—ÿÃSý·?ÿì©~ëŸÿ©þñ}û©~ðÃ>×¥ÿ>šÿ—et}YÁýùe÷Åòßñç¾ã^©üK"[¹g½gÿ)’éÍÝA–™›×Jq½–ìî£}£zk¯ƒÿÎã¾ã^©üK"[¹g½gÿ)’éÝýßÿþä¿þÍ_?Õ_|ûOŸêŸüÓ3ÀïHytÿwüò¿ðiÙH|àÿ,Êîðßñç¾ã^©üK"[¹g½gÿ)’éÝÝA–™£—Jq½”äƒ=çÑ¿Qý¶¿.þ;oˆûŽ{¥ò/‰låžõžiü§H¦x÷ógÉþûŸÿ,Ù~ã÷ž`¿ùwŸ~GÊÃû¿ã×??í ›"ú'‹²;üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdú‡wweé…Rd/ùhyøoT¿å/ŒÿÎ â¾ã^©üK"[¹g½gÿ)’éÖýbÿÿÕߦXõÃó/ý þE²Œ÷LyXÿù }ÏÞAöžP_µ/³(»oœÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘Lÿ°î²Ì½pŠƒì…Aåqûê¼ þ;/ŠûŽ{¥ò/‰låžõžiü§H¦8÷Ÿýìî'?y®õ;b“³>¾ü;eç?ÃÞAö‚}U¾Ü¢ì¾iþ;þÜwÜ+•Id+÷¬÷Lã?E2ýù;È2ƒóJ)²W‚}ë}¸oToì…ðßyaÜwÜ+•Id+÷¬÷Lã?E2ýùÿô§ÏpßýîûÖï”}ï{Ï_ÿï¼ßÏ{¡¯z8ÿ/éâ û’€úÓ-Êî›å¿ãÏ}ǽRù—D¶rÏzÏ4þS$Ó?œ»ƒ,38¯”òáÇüù+=ûEûé§Ÿ>=ç£>z‘çyÈû p?§×ú*þ¯%ûëŸËý×û¼ögù¿¶ð¯~>÷_í’ú(ÿ”tÏá~<>ûìù_ûZzåŽvuݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦ç~œd™{GŠÿËâ;€¾ªŸ~¸ßÊc/’ÿÎ ã¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðï2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]ÆAÖ=tGÀ¢ìŽÿî;î•Ê¿$²•{Ö{¦ñŸ"™ž{Æù–¿Ë8Ⱥ‡îX”ÝQà¿ãÏ}ǽRù—D¶rÏzÏ4þS$ÓsÏ8ßRøwY÷Ћ²; üwü¹ï¸W*ÿ’ÈVîYï™ÆŠdzîç[ ÿ.ã ëº#`QvGÿŽ?÷÷Jå_ÙÊ=ë=ÓøO‘LÏ=ã|KáßedÝCw,Êî(ðßñç¾ã^©üK"[¹g½gÿ)’é¹gœo)ü»Œƒ¬{莀EÙþ;þÜwÜ+•Id+÷¬÷Lã?E2=÷Œó-…—quݰ(»£ÀÇŸûŽ{¥ò/‰låžõžiü§H¦çžq¾¥ðïPVW.IDAT2²î¡;ewøïøsßq¯Tþ%‘­Ü³Þ3ÿÉôÜ3ηþ]æbÿ÷5iÑBIEND®B`‚wagyu-0.5.0/docs/bounds.md000066400000000000000000000020701360766232600154260ustar00rootroot00000000000000### Bounds A bound is a series of [edges](edges.md), that start at a [local mimimum and end at a local maximum](local_min_and_max.md). The edges of a bound are ordered from starting at the local miminum and ending at the local maximum. Bounds are important in the vatti algorithm because they share a common set of data, such as a winding delta and winding count. Bounds are not used outside of the vatti algorithm in other steps such as topology correction. The basic structure of a bound is defined in [bound.hpp](https://github.com/mapbox/wagyu/blob/master/include/mapbox/geometry/wagyu/bound.hpp). A simplified bound structure is provided below, please note not all its fields are shown: ``` struct bound { edge_list edges; // A list or vector of edges ring_ptr ring; // The current ring bound_ptr maximum_bound; // the bound who's maximum connects with this bound std::int32_t winding_count; // The current winding count of the bound std::int8_t winding_delta; // 1 or -1 depending on winding direction polygon_type poly_type; } ``` wagyu-0.5.0/docs/bounds_red_blue.png000066400000000000000000002456671360766232600175000ustar00rootroot00000000000000‰PNG  IHDRÂL—Q iCCPICC ProfileH‰•WXSÉž[R -)¡w¤Wé½H! J„„ bG\»ˆ€ ]±­µ"Š…EÀ^Ѝ¬¬‹,¨¼I]_ûÞù¾¹óçÌ9gþ3÷ÜÉ Š6¬ÜÜlT €~¾ :È—™˜”Ì$õ ˜ÈÀX²ØÂ\Ÿ¨¨pe¬ÿ» ߈¸¿n%Žõ¯ãÿU”9\!$ âTŽñ1puv® B;ÔÌÉÏãAˆU D\ŒÓ¥X]ŒS¥ØRbí±7d*‹%H@AÌ›YÀN‡qÄmøâ*ˆ=Ù,Ä ¶ÌÉ™ ±"bÓÔïâ¤ÿ-fêxL+}Ks‘ÙŸ'ÌÍfÍû?—ãKN¶hl}ب‚àhqÎpÝj³f‡‰1â“üÔˆHˆU ¾ÄãHìÅø^†(8Nf?ÀúÁ5 PÀaù‡A¬1C”ç#Ãv,ÄÚ£¼üXNÌŽ–ÅG øÙá²8+3¸!cx;W3f“Æ Vz¬0#6AÊm-àÅG@¬q§0+&Læû¨0Ã/bÌF Šs6„ø]š 0Zjƒ©çÇò¬Ù,É\°0ïüŒØ`©/–È&†qàpý¤0—'ã†Áêò–ùçfGÉì±íÜì hé:c‡…1c¾Ýù°À¤ë€=Éd…FÉæÎÍŠ•rÃQü€?`l©`6È¼ŽÆøK:X@ÒXÉ4c ’>|Æ€Bð'D\ ÷ó•ŒrAÔ×JŸV M2Z ñÈÏ ÎÁ5qO܇OoØìpÜuÌ©86+1€èO &ÍÆy°!ëlØ€÷ota°çÂìÄ\øc9|‹GxFè"™^Á\ÁQÆ"uüÍø[ýÅï»5âÀ>ìGKl%vkÃÎa—±“X#`bg°&¬;%Æã•ðTR c³EK¸eÁ8¼1›z›~›Ï?ÌÍ’Í/^/a>wn¾øcð›;OÀKÏÈgúÀÝ˜Ë á³­-™v6¶Nˆ÷véÖñ–!ٳƕoº¼³¸–@eú7ˀϠӼ往Sl‘ @ªoÇ€ÿ5áW¡t€0…ùØ'à¼A‘ $™pÅ3@ä<,KA1(ëÀfPv€Ý G@#8 ΋à*è7Á}X}à%Ã`ABC舢‹!ˆâ‚x"H8$!)H:ÂGDÈdRŠl@*]Hò+r9‡\Fº»Èc¤yƒ|B1”Šª¢Ú¨1: uA}Ð04¦£yh!º]ƒ–£Õè~´=‡^Eo¢=èKt˜<ÆÀô0+ÌóÃ"±d, `‹°¬ «ÆbÍð=_Çz°ì#NÄé8·‚µŒÇál<_„¯Æ+ðZ¼oůãñAü+FÐ"XÜ!„DB:a¡˜PFØK8N¸¿›>Â0‘HdMˆÎð»L"fçW·Ï»ˆ½Ä!‰¤A² y"I,R>©˜´•´Ÿt†ÔMê#} Ë“uÉvä@r2™O."—‘÷‘O“»ÉÏÉ#rJrFrnr‘r¹yrkåöÈ5Ë]“ë“¡(SL(”XJ&e)¥œrrò€òV^^^_ÞU~ªm ­ŽvžöˆöA®`­¢ÀQX¬P©Ð Ð­ðJQNÑHÑGq¦b¡b™âQÅkŠJrJÆJ~J,¥EJ•J'”n+ )Ó•m•#•s”W+ïS¾¬üB…¤b¬ ÂQY®²[å¼J/£Ðýèlú2úúzŸ*QÕD5D5SµTõ€j‡ê šŠšƒZ¼Ú\µJµSj= ŒaÌad3Ö2Ž0n1>MОà3;aÕ„ƒº'¼WŸ¨î­ÎU/Q?¤~Sý“S#@#Kc½F£ÆCM\Ó\sªæÍíš4&ªNtŸÈžX2ñÈÄ{Z¨–¹V´Ö|­ÝZíZCÚ:ÚAÚ¹Ú[µÏkè0t¼u2u6éœÖé×¥ëzêòt7éžÑýƒ©Æôaf3Ë™­ÌA=-½`=‘Þ.½½}ý8ý"ýCú (.i› Z  u §.0¬7¼g$gäb”a´Å¨Íè½±‰q‚ñ ãFã&ê&!&…&õ&Li¦^¦y¦Õ¦7̈f.fYfÛÌ:ÍQsGó óJók¨…“Ïb›E—%ÁÒÕ’oYmyÛŠjåcU`UoõØšan]dÝhýj’á¤äIë'µMújãh“m³Çæ¾­Šm¨m‘m³í;s;¶]¥Ý {š} ýbû&û×\‡íwéŽSW8¶8~qrv8têw6tNq®r¾í¢êå²Úå’+ÁÕ×u±ëI×nNnùnGÜþr·rÏrßçþb²Édîä=“{=ô=X»Á?aCBOâ¤Ä…‰W“4“xIMɤäøä½ÉCÓ¦mžÖ7Ýqzñô[3LfÌqy¦æÌì™§f)ÎbÍ:šBHIHÙ—ò™ɪf ¥†¤V¥²ýØ[Ø/9ÞœMœ~®w÷yšGÚ†´ééÓû3¼2Ê2x~¼ ÞëÌàÌ™ï³"³j²F³²åsRrNðUøYüÖÙ:³çÎîʵÈ-ÎíÉsËÛœ7(ì"¦|UxÌi™Š~=.ð,¨,ø0'~ÎѹÊsùsÛç™Ï[5ïya`á/óñùìù- ô,]ðx¡ÏÂ]‹E©‹Z,^¾¸oIÐ’Ú¥”¥YK/²)ÚPônY²æåÚË—,ïý)è§úb…bAñíî+v¬ÄWòVv¬²_µuÕ×NÉ•R›Ò²Òϫ٫¯ülûsùÏ£kÒÖt¬uZ»}qÝ­õ^ëk7(o(ÜлqÊÆ†MÌM%›Þmžµùr™CÙŽ-”-¢-=åáåM[ ·®Ûú¹"£âf¥oå¡*­ªUUï·q¶uo÷Þ~p‡öŽÒŸvòvÞÙ´«¡Ú¸ºl7qwÁîg{â÷´ýâòKÝ^ͽ¥{¿Ôðkzj£k[ëœëêöií[[Ö‹êû÷OßßyÀÿ@ÓA«ƒ»1•‡E‡ÿø5å×[GÂŽ´u9zð˜Ñ±ªãôã% Hü†Áƌƞ¦¤¦®¡'ZšÝ›ÿfý[ÍI½“•§ÔN­=M9½üôè™Â3CgsÏœK?×Û2«åþùÄó7Z§¶v\»pébàÅóm>mg.y\:yÙíò‰+.W¯:]mhwl?þ»ãïÇ;œ:®9_kêtílîšÜuºÛ«ûÜuÿëo„ܸz3âf×­¸[wnO¿Ýs‡sçÅÝ컯ïܹ¿äáAÉC¥‡e´UÿÃì‡zœzN=öÜþ$æÉý^vï˧§Ÿû–?£=+{®û¼î…Ý‹“ýýLû£ïeîË‘â?•ÿ¬zeúêØ_Þµ&ö½¼}³ú­ÆÛšwïZ†¢† ç ¼/ù ñ¡ö£ËǶO ŸžÌùLú\þÅìKó×°¯FsFGsY–ä(€Á†¦¥ð¦Z<;t@QÞ½$‚Hï‹þ–ÞÏ$O.5ÞÄ- žQ¶Ãf1öâ£w¬7@ííÇ›L„iövÒXTxƒ!|}« ©€/‚ÑÑ‘m££_ö@²w8›'½ó‰…Ï÷;Å÷IÐ~[ ü(ÿ¨Ôl8ë)ÿË pHYs%%IR$ðiTXtXML:com.adobe.xmp 962 844 ò†CþiDOT¦(¦¦ªëên @IDATxì]w`U÷% !zS©v* vA°`AÅöˆ½ 6¤¨AATPÅÎgÇ( ¨(½‚ iÒ{MHÈï˽sqÃnvv3Ù7oÎÍsòfÞ”sÏyoöîÛ7“”ó¿¿b>økÓ¦ ]Å”)S|p5‰¿婿ꮺ'¾·1FTߣòÇ¡òGå­ºcÞßTwÕ=×¶äsIšK“5‹z£Äì8TwÕÝlÏcæì¨¾Gå-.CåÊ[uǼ¿©îª{®4––àõF¡ Ǧ†ãÒÖQ«©ï1}¯º«îQ;‡V@õ=*o±0*TÞª;æýÍVÝuDX”3ŒÚabvª»ên¸ë1rzTߣò“¡òGå­ºcÞßTwÕ=×:",-Á%êBŽM Ç¥­£VSßcú^uWÝ£v¬€ê{TÞbaTþ¨¼UwÌû›­ºëˆ°(gµÃÄì8TwÕÝp×cäô¨¾Gå-&CåÊ[uǼ¿©îª{®tDXZ‚KÔ…6›ŽK[G­¦¾Çô½ê®ºGíXÕ÷¨¼Å¨üQy«î˜÷7[u×aQÎ0j‡‰Ùq¨îª»á®ÇÈéQ}Ê[L†Ê•·êŽySÝU÷\舰´—¨7 m865—¶ŽZM}é{Õ]uÚ9°ªïQy‹…Qù£òVÝ1ïo¶ê®#¢œaÔ³ãPÝUwÃ]‘Ó£ú•·˜ •?*oÕóþ¦º«î¹Ðai .QoÚplj8.mµšúÓ÷ª»êµs`Tߣò £òGå­ºcÞßlÕ]G„E9è&fÇ¡º«î†»#§Gõ=*o1*TÞª;æýMuWÝs= #ÂÒ\¢Þ(´áØÔp\Ú:j5õ=¦ïUwÕ=jçÀ ¨¾Gå-FåÊ[uǼ¿Ùª»Ž‹r†Q;LÌŽCuWÝ w=FNê{TÞb2Tþ¨¼UwÌû›ê®ºçz@G„¥%¸D½Qhñ©á¸´uÔjê{Lß«îª{ÔÎ!€P}Ê[,ŒÊ•·êŽy³Uwå £v˜˜‡ê®ºîzŒœÕ÷¨¼Åd¨üQy«î˜÷7Õ]uÏõ€ŽKKp‰z£Ð†cSÃqië¨ÕÔ÷˜¾WÝU÷¨C+ ú•·X•?*oÕóþf«î:",ÊFí01;Õ]u7Üõ9=ªïQy‹ÉPù£òVÝ1ïoª»êžë––àõF¡ Ǧ†ãÒÖQ«©ï1}¯º«îQ;‡V@õ=*o±0*TÞª;æýÍVÝuDX”3ŒÚabvª»ên¸ë1rzTߣò“¡òGå­ºcÞßTwÕ=×:",-Á%êBŽM Ç¥­£VSßcú^uWÝ£v¬€ê{TÞbaTþ¨¼UwÌû›­ºëˆ°(gµÃÄì8TwÕÝp×cäô¨¾Gå-&CåÊ[uǼ¿©îª{®tDXZ‚KÔ…6›ŽK[G­¦¾Çô½ê®ºGíXÕ÷¨¼Å¨üQy«î˜÷7[u×aQÎ0j‡‰Ùq¨îª»á®ÇÈéQ}Ê[L†Ê•·êŽySÝU÷\舰´—¨7 m865—¶ŽZM}é{Õ]uÚ9°ªïQy‹…Qù£òVÝ1ïo¶ê®#¢œaÔ³ãPÝUwÃ]‘Ó£ú•·˜ •?*oÕóþ¦º«î¹Ðai .QoÚplj8.mµšúÓ÷ª»êµs`Tߣò £òGå­ºcÞßlÕ]G„E9è&fÇ¡º«î†»#§Gõ=*o1*TÞª;æýMuWÝs= #ÂÒ\¢Þ(´áØÔp\Ú:j5õ=¦ïUwÕ=jçÀ ¨¾Gå-FåÊ[uǼ¿Ùª»Ž‹r†Q;LÌŽCuWÝ w=FNê{TÞb2Tþ¨¼UwÌû›ê®ºçz@G„¥%¸D½Qhñ©á¸´uÔjê{Lß«îª{ÔÎ!€P}Ê[,ŒÊ•·êŽy³Uwå £v˜˜‡ê®ºîzŒœÕ÷¨¼Åd¨üQy«î˜÷7Õ]uÏõ€ŽKKp‰z£Ð†cSÃqië¨ÕÔ÷˜¾WÝU÷¨C+ ú•·X•?*oÕóþf«î:",ÊFí01;Õ]u7Üõ9=ªïQy‹ÉPù£òVÝ1ïoª»êžë––àõF¡ Ǧ†ãÒÖQ«©ï1}¯º«îQ;‡V@õ=*o±0*TÞª;æýÍVÝuDX”3ŒÚabvª»ên¸ë1rzTߣò“¡òGå­ºcÞßTwÕ=×ÖŒ·nÝ:GLkçÍ›G§oÚ´©ÉË0vn婿ꮺët žÕ÷¨¼Åj¨üQy«î˜÷7Õ]uÏõ€-ù\’&ÂÒdÍ¢Þ(1;Õ]u7Ûó˜9;ªïQy‹ËPù£òVÝ1ïoª»êžëkáœÿý‰iM¢þtHJ‘ë?[~JáU[Qßcú^uWݽêCl:ªïQy‹7Qù£òVÝ1ïo¶ê®s„E9è&fÇ¡º«î†»#§Gõ=*o1*TÞª;æýMuWÝs=`ËÀ–&ÂÒb £Þ(1;Õ]u7Üõ9=ªïQy‹ÉPù£òVÝ1ïoª»êžëM„¥%¸D½Qhñ©á¸´uÔjê{Lß«îª{ÔÎ!€P}Ê[,ŒÊ•·êŽy³Uwå £v˜˜‡ê®ºîzŒœÕ÷¨¼Åd¨üQy«î˜÷7Õ]uÏõ€ŽKKp‰z£Ð†cSÃqië¨ÕÔ÷˜¾WÝU÷¨C+ ú•·X•?*oÕóþf«î:",ÊFí01;Õ]u7Üõ9=ªïQy‹ÉPù£òVÝ1ïoª»êžë––àõF¡ Ǧ†ãÒÖQ«©ï1}¯º«îQ;‡V@õ=*o±0*TÞª;æýÍVÝuDX”3ŒÚabvª»ên¸ë1rzTߣò“¡òGå­ºcÞßTwÕ=×:",-Á%êBŽM Ç¥­£VSßcú^uWÝ£v¬€ê{TÞbaTþ¨¼UwÌû›­ºëˆ°(gµÃÄì8TwÕÝp×cäô¨¾Gå-&CåÊ[uǼ¿©îª{®tDXZ‚KÔ…6›ŽK[G­¦¾Çô½ê®ºGíXÕ÷¨¼Å¨üQy«î˜÷7[u×aQÎ0j‡‰Ùq¨îª»á®ÇÈéQ}Ê[L†Ê•·êŽySÝU÷\舰´—¨7 m865—¶ŽZM}é{Õ]uÚ9°ªïQy‹…Qù£òVÝ1ïo¶ê®#¢œaÔ³ãPÝUwÃ]‘Ó£ú•·˜ •?*oÕóþ¦º«î¹Ðai .QoÚplj8.mµšúÓ÷ª»êµs`Tߣò £òGå­ºcÞßlÕ]G„E9è&fÇ¡º«î†»#§Gõ=*o1*TÞª;æýMuWÝs= #ÂÒ\¢Þ(´áØÔp\Ú:j5õ=¦ïUwÕ=jçÀ ¨¾Gå-FåÊ[uǼ¿Ùª»Ž‹r†Q;LÌŽCuWÝ w=FNê{TÞb2Tþ¨¼UwÌû›ê®ºçz@G„¥%¸D½Qhñ©á¸´uÔjê{Lß«îª{ÔÎ!€P}Ê[,ŒÊ•·êŽy³Uwå £v˜˜‡ê®ºîzŒœÕ÷¨¼Åd¨üQy«î˜÷7Õ]uÏõ€ŽKKp‰z£Ð†cSÃqië¨ÕÔ÷˜¾WÝU÷¨C+ ú•·X•?*oÕóþf«î:",ÊFí01;Õ]u7Üõ9=ªïQy‹ÉPù£òVÝ1ïoª»êžë––àõF¡ Ǧ†ãÒÖQ«©ï1}¯º«îQ;‡V@õ=*o±0*TÞª;æýÍVÝuDX”3ŒÚabvª»ên¸ë1rzTߣò“¡òGå­ºcÞßTwÕ=×:",-Á%êBŽM Ç¥­£VSßcú^uWÝ£v¬€ê{TÞbaTþ¨¼UwÌû›­ºëˆ°(gµÃÄì8TwÕÝp×cäô¨¾Gå-&CåÊ[uǼ¿©îª{®tDXZ‚KÔ…6›ŽK[G­¦¾Çô½ê®ºGíXÕ÷¨¼Å¨üQy«î˜÷7[u×aQÎ0j‡‰Ùq¨îª»á®ÇÈéQ}Ê[L†Ê•·êŽySÝU÷\舰´—¨7 m865—¶ŽZM}é{Õ]uÚ9°ªïQy‹…Qù£òVÝ1ïo¶ê®#¢œaÔ³ãPÝUwÃ]‘Ó£ú•·˜ •?*oÕóþ¦º«î¹Ðai .QoÚplj8.mµšúÓ÷ª»êµs`Tߣò £òGå­ºcÞßlÕ]G„E9è&fÇ¡º«î†»#§Gõ=*o1*TÞª;æýMuWÝs= #ÂÒ\¢Þ(´áØÔp\Ú:j5õ=¦ïUwÕ=jçÀ ¨¾Gå-FåÊ[uǼ¿Ùª»Ž‹r†Q;LÌŽCuWÝ w=FNê{TÞb2Tþ¨¼UwÌû›ê®ºçz@G„¥%¸D½Qhñ©á¸´uÔjê{Lß«îª{ÔÎ!€P}Ê[,ŒÊ•·êŽy³Uwå £v˜˜‡ê®ºîzŒœÕ÷¨¼Åd¨üQy«î˜÷7Õ]uÏõ€ŽKKp‰z£Ð†cSÃqië¨ÕÔ÷˜¾WÝU÷¨C+ ú•·X•?*oÕóþf«î:",ÊFí01;Õ]u7Üõ9=ªïQy‹ÉPù£òVÝ1ïoª»êžë––àõF¡ Ǧ†ãÒÖQ«©ï1}¯º«îQ;‡V@õ=*o±0*TÞª;æýÍVÝuDX”3ŒÚabvª»ên¸ë1rzTߣò“¡òGå­ºcÞßTwÕ=×:",-Á%êBŽM Ç¥­£VSßcú^uWÝ£v¬€ê{TÞbaTþ¨¼UwÌû›­ºëˆ°(gµÃÄì8TwÕÝp×cäô¨¾Gå-&CåÊ[uǼ¿©îª{®tDXZ‚KÔ…6›ŽK[G­¦¾Çô½ê®ºGíXÕ÷¨¼Å¨üQy«î˜÷7[u×aQÎ0j‡‰Ùq¨îª»á®ÇÈéQ}Ê[L†Ê•·êŽySÝU÷\舰´—¨7 m865—¶ŽZM}é{Õ]uÚ9°ªïQy‹…Qù£òVÝ1ïo¶ê®#¢œaÔ³ãPÝUwÃ]‘Ó£ú•·˜ •?*oÕóþ¦º«î¹Ðai .QoÚplj8.mµšúÓ÷ª»êµs`Tߣò £òGå­ºcÞßlÕ]G„E9è&fÇ¡º«î†»#§Gõ=*o1*TÞª;æýMuWÝs= #ÂÒ\¢Þ(´áØÔp\Ú:j5õ=¦ïUwÕ=jçÀ ¨¾Gå-FåÊ[uǼ¿Ùª»Ž‹r†Q;LÌŽCuWÝ w=FNê{TÞb2Tþ¨¼UwÌû›ê®ºçz@G„¥%¸D½Qhñ©á¸´uÔjê{Lß«îª{ÔÎ!€P}Ê[,ŒÊ•·êŽy³Uwå £v˜˜‡êŽ¥ûIM›SO³æï?·oÝb¸ç1szTߣò—¡òGå­ºcÝßDoATߣò¶UwM„E9è 󆡺c鮉0w´¨¾Gå-·WTþ¨¼Uw¬û›è-ˆê{T޶ꮉ°(gµá`Þ0Tw,ÝSÒÒ©§9˜¹Ÿðø£ªžÓº5á˜qヾ@õ=*oñ3*TÞª;ÖýMôDõ=*o[u×DX”3ŒÚp0oª;–îšsG‹ê{TÞr{EåÊ[uǺ¿‰Þ‚¨¾Gåm«îš‹r†Qæ CuÇÐý¹çž£æ¡c³÷í$ÌÙ½•09c/áßk×V«V0¨ Tߣò£òGå­ºcÜßDçüˆê{TÞ¢¿mü5å £mÆñ:\¨üQy‹Pøk",Š3¢èʺX1TÞTþ¨¼UwM„s=`Ëktį…Emïvù^áÂ:Þ£ýµáØÕp<’]?·ÁÐýÄFMÉ2[ŽiK¸ç—©„ûþ˜M8ºByÂYWîØA˜ÑæÂKhÕòß#\õ'cþz~/£öw¨¼Å¨üQy«î÷7Ñ9?¢ú•·èoM„E9Ãh›q¼*TÞâþš‹âŒ(º‡²ÖaÕ}J~K@”UwÕÂèIT¿‹Æ¶ñ×DX”3Œ¶Çëp¡òGå-þAá_¼di¢\³÷W„Þ|°díF„%f¾GØ<;“°Êí _yã BY”LçãT8†G˜_ú(mºð‚ ¤Šˆ¢{~1PyKPù£òVÝuD8×úÓhi h[§‰°O|i›q¼*TÞâþš‹âŒ(º‡²ÖaÕ]Gó·‰ —Qý.š¢òGåm«îI­[·Î‘‹7‰óæÍ£Ó7mÊ#&¯ÅĹ•?¦þª{°u_ë<zù_+©[I«qáþ¿ædgQ‘ŸœÎs…7íÙFëp aöþÝ„Kþø›0¹âQ„)Ûø¸§5?•ÊÑÛ¶ñq÷ïÏ ªÕªm—"ÙŽê{TÞb"Tþ¨¼U÷`ßßDßHˆê{TÞâÛøk",ÊFÛŒãu¸Pù£òÿ¿&¢t(]÷P¶y%TÞTþ¨¼UwM„s=€6À¥íÝ.ßëO£¥§6ŒúS ̹4ª{0t?®fMêAڵ㹽CFŽ rƒ¦ÐêÑg(•á‡B[´~•O©žN¸kgØèW©\¶ Ïa^ùp3*oÙ¸ž°L™2„‘o¼ù&mzá%>ÎÌéS#U-p½[þĨ¼E*Tþ¨¼UwM„s= ‰°´ ´­¿ÓDØ'¾´Í8^‡ •?*oñíü5ÖDX¼ìm÷»ŽÕAåÊ[¼€Ê•·ê®_€äzÀ–/@4–kµÃÄì8Tw»uñì³Ôsüòø„ýJñì3ûöR9½cÂ'ÆŒ!”…[ݯº¦ íòÙç_^|É%„à ¬é<­š ÿZd;o‡Ÿ½–¯£û×ÑÖMGžFXöd>ÎÎi¯Sù‚Š[_ûa¤Å¹ðˆô¢?ÖP•7žLxqÛ¶‘v »Þ-ÿ°;[¼•·H†Ê•·ên÷ýMô‹Q}Ê[|bM„E9Ãh›q¼*TÞâÛùk"¬‰°xÙ Úîw7 ªƒÊ•·x•?*oÕ]¿Éõ€ŽKKp‰Úahñ©á¸´uÔjê{øþàÁƒ¤ÕŸ}FتukÂôtá$d‡óϧMõgÍ&¼¹tèÛÖûöÐú§A׫WÊnu_´x1Õ/ëÌÝ­S§•c]/Q‚v©óä\ÂÌõîž<аjº„·>ô8aóšüôëfÕùéÓÙ2i}™²¼¾Ú]oQ9} 'ÂËòqie‹ìl~z¶ðŸ:5¾ŸVp _oÞ¶|@ð:˜¨üQy‹Pù£òVÝýñ¹FtH4Úæ{N´C"œÏ6ãD ÷jTþ¨¼Å(~ᯉ°&ÂâÉ¢D¿ø½(9tlTþ¨¼Å ¨üQy«îšçzÀ–/|5–kµÃÄì8Twéžâ<õùú<·wÜ„ a{†½Bëß}q4a¿Ù³÷îç§57*[–ÊGîã÷_ª$•ÿÞ°0QºËû‰ÿóà@:ojé „é{ÖŠç_vé¥Tž·Ž¯_æ f,øœ¶OúòK W?E¸kü„cúßM(Ç¡B˜Å N¼î¸ý6Úºg˜—*þ½ÇaaõªDéî× ¡òGå->DåÊ[u÷×çÑ#Qh›ï5N”3¢œÇ6ãD¡ófTþ¨¼Å ~㯉°&ÂâÍ¢@¿ù½(8tLTþ¨¼Å ¨üQy«îšçz@G„¥%¸Dí0´áØÔp\Ú:j5õ½?|¿páBÒªK«ó«¤¤><žŸª|^£FTÞùìHÂM›–ît¡,6oÞLÿÎËsfgÏâ‘â?—,¡õýŸâ‘ÔnݺQ¹¨o}ú=Fç;î5ÂQ#†^Ѿ=¡ÛE‹Öü”éUµ/¢]Ê4à8e¬]FåŒ ®øË¥Rù}ÊùßülÞoþbŽG÷ù©Ø£žy:Õ@–µ½û£½'Ú\ª»êžhÏùá|¨¾Gå-ž³¿Ž‹r†Ñ6ãx.Tþ¨¼Å?~ᯉ°(5—X×úÅï±^·WõQù£òß òGå­ºc~ñc«îš‹r†Q;LÌŽCu÷‡î¯¾ú*õSx°o*?e¹ÅVáýûö;h}Ù»y.lñZ5 Õc$J÷;vÐu–/_>®ë•§<§:O>f8äîšò<oýçŒwzŸÊj5'¬]!•ð”êé„Ç—=@xtÚ„ÉGÖ'Ì^ÃOÅÞ´þ*—uæVS!ÌbÍ~ñ“O£­£ž}&L-ÿ®J”î~*TÞâCTþ¨¼Uw|®¶ù^áD;$Âùl3Nq¯FåÊ[Œâþš‹"¡¨‰ph< [ò‹ß Ë#ÞýQù£òŸ òGå­ºk"œë¢žú%>+,j"\Øz´¿v˜˜‡êîÝo½é&jÉ5?ú˜ð:ç}ÀïdðSŸ—·á÷ ¿òÎ;ž´x[t÷½÷ˆï-½úî\ýáÃ}úz¼?aþÅÒM·9kùá[¯ã÷…sfRÕý›y¸ÜIçRùòj{GAi1bÏÑî3˜G„ßxé9Þÿ²Ë"íâ«õ¶è^TACåÊ[|„Ê•·êîÏ5¢C¢Ñ6ßk"œh‡D8ŸmƉ@#îÕ¨üQy‹QüÂ_aQ$5GaK~ñ{ayÄ»?*TÞâTþ¨¼UwM„s= #ÂÒ\¢vÚplj8.mµšú¾h|Ù…Rì_wFp+V¬X ÍjÔ ígìØIxaI~ïog®ðµ2i}Ÿ·Þ$l݆¯› q,lÑ}âgŸ»IS¾!5"¾9¹gžwí¿âØ+ ·ûaù3¯!Ìš1–pì_žqLÂJ¥øéÝTøß¢qó3èßõG_LXfXÿ±t¡Tñ5Ú¢{Q•?*oñ*TÞª{Ñ|®‘¸úmó½ŽûÄQ¶Çë°¡òGå-þ)*þšK„ ‡š.~ù÷.*¿ç?_˨üQy‹Qù£òVÝ5Îõ€ŽKKp‰Úahñ©á¸´uÔjê{o}¿jÕ*ŠùÉ'œ@Øð¤“¿qÞç+‚d­æ§ïzöYZµ¦NmÂçœzsþ™Êó~ã9± *V¢òjgdxÛ®]TŽw¢û¾}dü§„Ï;…0ÚÓª Ý:Òþ±òŽt[×£òGå->EåÊ[u÷ösÄÓ´Í÷:"ìgÙf¯Ã†Ê•·øÇkþšKdýš‡êàµßCîÿ*TÞâHTþ¨¼UwM„s= #ÂÒ\¢vÚplj8.mµšúÞ[ߟÏA½ñ÷?(ög§•$œž™AøÚ1GNž9“ÐÔBuw§ûÖ­[I¢êµxäµb“ó©œõ'Ï-~jÀãT¾é¦ ×ì<@(Ož½–ŸZ½}ÃjZÿÚ=í «?ú5áîïß"l[yá+£y„™ a‹/¦µ§žÆï3~ëש|E{>n˜]BV©îît Z ª»êÇLÕ÷¨¼Å ¶ñ×aQÎ0Úf¯Ã…Ê•·øÇkþšKdýnu×DØß:Æzunuõ¸~¯Ê[tAåÊ[uÇüâÇVÝ5å £v˜˜‡ê^÷;wR‹<Þ™ƒùãìÙT®S§NØ–šµr%­?çÔS ËdòÈ`ãœ*7,^œðÃä$¶óHbWçéÒ´2 Õ=¼îù%˜>}:­êÐéjÂAÎp·®]óW-°ÜgàÚ>æÛå„.å¹ä²ÓÚÇ[Ò¿3ç. lXûpÙ‚<ÊO«3qP~ã"Úþײ_BêE*¨îît?[׫­Þ-Ìu£ú•·xÅ6þš‹r†Ñ6ãx.Tþ¨¼Å?‘øk", &FÒ=?[M„óGÄî²[ÝífyèÕ£ò–H òGå­ºc~ñc«îš‹r†Q;LÌŽCu¯ûäÉ“©EöéÌ#»Ê”¦òÒU«BZêžwÞ¥ræB™Kº™G ¿]Äå¹?ÿLÛg9#‹s9ž‡U©BëçÿÊï-Y’燼 ª{xÝ‹*äõ›ò/vÓ“N‘µšý±õ+~?ñÕwö¦õµÎ¿pO&?íºYõt*Ÿâ`ËSQ9©ÃÓ„ß##ƒb°aýzšµj…Ä$ÿ£*V¢z8s«§¤Pyy¿øît!þeÅŠãÙRˆÄÛ–ë/ìuÚÆ¿î <ÇxïÉ×2õEŸV+ÍsŽŸÊï)ΩÞÖÏY»—pÍNö«×šKKp‰Úahñ©á¸´uÔjA÷ýìÙ³)mÎ9‡ðí Û^r ¯oêûm¯½Nëo<˜ðã6ªP°a6¿ßu•32Üð¦›hýSÏòÜL*X°ºîÑ$°…ÿ çMO=(Õª{4á°Áü´é󜧖Gâ+ï#~kÒTå¶Nm ëæv!û­éýûׯ‹ 8âÙ‚ß}÷•;t»‡°Lr&áß¿-%ôûÂݽŽ#*o‰#*TÞª{èç‰ Úæ{#ìgÚf¯Ã†Ê?è¼5ßR‚®{xÖykmᯉpžf^üg‹î^pý÷1PyK Pù£òVÝ5Îõ€ŽKKp‰Úahñ©á¸´uÔjA÷ý‹/¼@1ø¡o?Âvï"ܳ?aë3Î œÐ¸ a©¶1^|1áÞ½<×rîܹTžãŒ0Ïž6Ê)ÅS Ÿ÷*aþ÷ÁÒJ.‚®{´ÛÆÎ~:t³fÍ¢Q »½çÑúQ¯½KXãþwMzŽp÷‚I„í†|Lxnãcenqã#xN|×·Ñú϶T!L^ÅOUæ¾ë©Ü¹ÓU„Ñ?Ìü‰ªœxüq„•*ñœühûv»mº–¯ìÊ¿êŽù¹Vu·Kw–žÚ0jñ«áxe— ë®‰px§]÷ð¬óÖÚÆ_á<í óŸmº†ë¿÷Eå-1@åÊ[uÇüEB…ª»ênƒá5ö‰J¨†„•¿-¼—/_NRåÂC‡ŠtañÀ´¾TZá;•ø)· K” 2Ï„,Vì¤ åÈtZÿ\Ÿ»¿Þ_‹09‰ X«´•ôÏ[¯qû浑—wÜÃ#Ó­Îå÷_Ñ®]äÊÿÚ/ÿÂÊQy‹X¨üQy«î˜;¶ê®‰°(gµÃÄì8lÑ]ao;[t÷–uÞÑPùÇË[á<ïØø_¼ºÛÈ5Ü5£òGå-@åÊÛVÝ5å £6M„ [°ÀÓÏs¿ãªwÿÀ„=îä§ÕÊΖ-£w>3‚ðó²eÇ~;•pÞÒ¥„G”,I¸q7?E÷œ–-©ü©3‡‘ ^h{×ö‹½ËW®JÕ“R¹Ý´iÅíeØ“<×·fMžkŸÿ˜óþá§MËñ-ùéÕ5{ó\áätY^7€÷Ë~¿p­Z¨¾Gå-~µ¿&¢œa´Í8^‡ •¢y÷íÝ›¤ûnäs„gvëJ8è™gB$Ýýò+TÎÞ°ð¯V<÷oÊôéTž5qî¼¹TÞ²cáùmøÏû'R9Ú"Ñü£]O¢¶£ò–ø¢ò·•w§.7’t“–ð{Ãw,à݇ûô£õƒïO˜VŠG~+4lEåƒë#lx5ÿ%ã§÷¨üýwߢ,lÕÝ+}Pù£òß òGåm«îš‹r†QŽ~cœ j"œˆ(G?‡¶wmïÑ]⟚N mïÚÞ ç ;÷Fõ=*oq©mü“Z·nÍ/†pÞ¼ytæ¦Mùý„†.ÃØi•?¦þ‰Ö}þœ9äñ#öì!üÛq|ýN¤ÿJmÙL˜r?:¹R%§FÁpà?=úàÁƒT1-Ÿ&[ð^ÅŠ%š´ëIÔvTÞ_Tþ¶òž7>IW¦LYÂãŽ=F¤ Á…‹¡òŽd®—œVšÊÙ[V3îåg 4tÞK^¥J•ýƒZ°Uw¯ô@åÊ[|ƒÊ•·­ºk",ÊFm8š'‚š'"ÊÑÏ¡í]Û{t—ø§†&Â…ÓBÛ»¶÷Â9ÈνQ}Ê[\jýi´(gmû)×áBåŸhÞ‡Wà÷€Nræòm?È?éž±$]þÏLJç¹~^ëœÿx‰æŸÿü¦Ê¨¼%Þ¨ümå-¿ôHNN Ãâ‡~Hëoòe²׆>{`õ3i}z >NÍ ¥¨<Ö„A]ت»Wz òGå-¾AåÊÛVÝ5å £6C” j"œˆ(G?‡¶wmïÑ]⟚N mïÚÞ ç ;÷Fõ=*oq©mü5å £mÆñ:\¨üÅ{Íš5$YóN ü¹|Å GdñßR×_Gë:4d{QÅ¿¨®?Þã¢ò–x¡ò:ïœþ…‰ŒW¿u,IžµôkÂÍ?¼OX¿I3Âë;w ìyß}„A]]÷hº¡òGå-~@åÊÛVÝ5å £6ýƸ(-¨‰pQF7öck{×ö»kü¿‡&Âá5Òö®í=¼3‚½Õ÷¨¼ÅͶñ×DX”3Œ¶Çëp¡ò—÷Sƒ“}ûö%ÌpžÚI—_ ¤Mí‡!LK)NØ0%…°³ÿ˜ƒÙTþâ§ŸëÕ«GXT‹xùÕõ$긨¼%¾¨üQx_pûã$õªŸ¾$¼ëæß}çÂiÓ¦¢,Pt¤'*TÞâTþ¨¼mÕ]aQÎ0jÃÑoŒc± &±DËuµ½k{÷Ÿ+½»"M„Cc©í]Û{¨#0J¨¾Gå-®¶¿&¢œa´Í8^‡ •¼¼¯ºø’ }Æ Âƒ­[ŽÿðÂL罟;ŸIå27ÝHXòÜs.\H8Çy¯ðœ~ òOÎñZ^x!•‡?÷aQ-âå_Tד¨ã¢ò–ø¢ò:ïß6gÄï/ÙFøÈ9ü>rÕ3TÝU÷\L™2E¬Aï磉hM„£)š í¶Çë° ò—·&Â^;0±Ç‹W÷Ä^eÑ •Ðyk"¾Í]÷ð¬óÖ¢òGå-Ê£òGåm«îš‹r†Qæ7§ñê^÷iy#'‰œÛ¿ØAÂW^IئVm²÷ÞC˜T¢¡ßñò÷X¯•·Ä •¿í¼§OŸNž}öÙ"ež¾‘ÊWÖ/Ox\å´í¶ó!C•·„•?*oÕóó¬­ºk",ÊFí01;Žxu×DØpƒ-äéãÕ½§õÍî¨ümç­‰p|MÈvÝãc·*TÞ¢<*T޶ꮉ°(gµáh"ìÆ‚Û·o§jµ«U#ü¥R½Îû;›læ™=™™ng¼ªïQy‹áPùÛÊ{ß¾}$]¥*U «Qð™!ƒO8ëbÂI¿ï"ìyף¿¶òÿ…¸þEå-ÁBåÊ[uÇür€Ÿúܨf-*ß1’çØ¥~º×!÷ÅñÐt— £òFçÝkÒ‚¤Ü°/‡pçòY„­Û^FxÃ5WvìÐ0-ñþD*†*o *TÞª;潶ꮉ°(gµÃÄê84æ‡ê{TÞÒÍ¢ò oM„ÅÉî0(º»c{h-Tþ¨¼Å¨üQyÛª»&¢œaÔ†ƒ•Ϛ匠œy&9oiÕÃCxÒVž‹÷÷ºu´¾B… !ÛƒR@õ=*oñ-*ÿ ð¾çc~JôI»’¤Ý®ë$ÒˆAá_ É0QyK(Pù£òVݱ>ÏŠÞ‚¶ù^aQÎ0Úf¯Ã…Æ_avšîÒnPy£óŠîš‹“ÝaPtwÇöÐZ¨üQy‹Pù£ò¶UwM„E9è ÇîoÐú=ò9(ÕñÑ£ƒè¨7 ¤í·÷ëKØ¿ø6*ÁGXï¼ø5ç)Ò“gÎ,ðx¶nDõ=*oñ)*Ûyÿ°jI¸tÓ~›O®,’ºBÛù»"¦*o *TÞª»ÝŸgE¿xÑ6ßk"¯Òïg›q<¦oýS55ŽÏ¨¾Gå-.Aåo;oM„ÅÁ±¡íºÇÆöÐÚ¨üQy‹Pù£ò¶UwM„E9è ÇîoÐÎ9ùdrÐêßÿ ühú4ÂF‡8kç³üèbII´þÔ_`lЀp®óþ࿜÷WNO§õO NxS×®„AY ú•·ø•¿_yïÝ»—¤éÜåzÂk;óœßNWuÉ{~õaïsø™•J…¾Ï<¤r˜‚_ù‡¹TOW¡ò– ¢òGå­ºÛýyVô‹mó½&Âñ*íñ~¶ÇcúÖk"Ÿ#P}Ê[\‚Ê߯¼5g úU÷¢a{èQQù£ò òGåm«îš‹r†QŽÝß •-UŠô~Ùò„w¦òHÉâ÷ß§ò®‘Ï–½ç´æ§FÒ}ÿ~žƒ7wî\ª×°aCÞ¿lY ,"ñ ¿Hnë£ò–ø òGå­ºÛýyVô‹mó½&Âñ*íñ~¶ÇcúÖk"Ÿ#P}Ê[\‚Êßï¼5‡z‹~×Ý[¶‡ •?*oq*T޶ꮉ°(gµáØù ÚòåËÉ9—´hAøm:¤<·•sñ˩߄u˜ên§îaÅŒa¥ê®ºÇ`—„U0h0kÔô•„i."ÜùÕHÂËññȧ¹ÞùmXGÚèbê{TÞb Tþ¨¼UwÌû›­ºk",ÊFí0íì84.\ÃAõ=*oq *¿óÖDXê-ú]woÙz4Tþ¨¼Å¨üQyÛª»&¢œaÔ†cg"üöÛo“s>¸ó.Â%y®°Øéü}üÞÍ÷¾ûŽV5pæúÊvÕÝNÝE¿xQuWÝãõNQî·lÙ2:üém.!¬rÿg!§Û¿j•3&=KX6k'áË~ ©©€ê{TÞâTþ¨¼UwÌû›­ºk",ÊFí0íì84.\ÃAõ=*oq *¿óÖDXê-ú]woÙz4Tþ¨¼Å¨üQyÛª»&¢œaÔ†ãD¸Í™g’ʤ—&ühò¤°ÎÈÉÊ¢õoÜxáCÎÓ¡O-ÇOun˜‘Ië+§ðÓ£G9O•þ}íšã©îþÐ=D”TwÕ=6‹û59ö͹øQÂëøýèÅ–ó³vü±€ÖŸyö9„S¾ 9¦•a¨¾Gå-@åÊ[uǼ¿Ùª»&¢œaÔÓ‡&‰m¨¾Gå-îBåo oM„ũޠ-º{ÃöУ òGå-@åÊÛVÝ5å £6$ÂÕ+ñû1qFr{½ò 9ã’Ë/'̘1ƒp×K/–»›ç¯,Ïï–÷þÎþñGÚ>ûûïá9tïN˜@åËÛµ#TÝý¡;‰‘À…ꮺ'Ðn1ŸêÑ1üþóa÷w£};_Ý™ðÚ«:¶nÝ:æcæî€ê{TÞbTþ¨¼UwÌû›­ºk",ÊFí0ýÑqh"œØ†€ê{TÞâ.Tþ¶ðÖDXœê Ú¢»7l= *TÞâTþ¨¼mÕ]aQÎ0jÃ1›¯_¿žÐøØc ¿/Ë#¼ 7o¤òú “Êð{‚ËÞv+•c]äääðq’’Uw³ºÇªŸWõUwÕÝ+/Åqº}¼š;æò„)Ü]úT¨¾Gå-†AåÊ[uǼ¿Ùª»&¢œaÔÓlÇ¡‰°™€ê{TÞâ2Tþ¶ðÖDXœê Ú¢»7l= *TÞâTþ¨¼mÕ]aQÎ0jÃ1›Oœ8‘0ª+ω›Z‚Êöí%\д áø¯¿&ôj¡º›ÕÝ+c=Žê®ºÇê/ê/Y²„S¿~ý°‡ûd¿X~¹ÒîDþeLØÊq¬Dõ=*o±*TÞª;æýÍVÝ5å £v˜f;M„Í4Tߣò—¡ò7Í[aq`bÑ´î‰e{èÙPù£ò òGåm«îš‹r†QŽ·‰ð´©SIÑVržIæ‡î»6my™Ÿݯ\èHÈ Yü^à^ãÆQ½ Û¶t¨˜Ö«îÞêSð VVÝUwö;¶^:íÞ½üK—‘ÇRùŠ+® ìúÏ ~µ=Ï öúQ}Ê[üƒÊ•·êŽy³UwM„E9覷‡&† íòô¨¾Gå-¶@åoš·&ÂâÀÄ¢iÝËöг¡òGå-@åÊÛVÝ5å £6oᚇFŠáà,ç=¾ùeÞÿÝ4Z5iÐ`»æÎ&Ü錘4*[ŽÊÇgòˆðxgÎ𾌠Z_Ø…êî­î…Õ#Qû«îª{¢¼öïóÜqÿòåÝ%»huêv.¶} •»÷êGøX÷ŽÿÞͳÿQ}Ê[ŒƒÊ•·êŽy³UwM„E9覷‡&† íòô¨¾Gå-¶@åoš·&ÂâÀÄ¢iÝËöг¡òGå-@åÊÛVÝ5å £6oa™ûVµbER´Cƽ¡rqئ@IDAT›o&ÜùìÂdgîpÙ[ºSYÛ¶m£çÌ™C8w6Ïš1ƒÊ‡'<ñÄ ã]¨îÞèoüMí§º«î&¼÷Ã?Ði¯¸ù^Âò·Œ'ÌX»Œ0óë‘„•Ší&|vÈ ÂóZµ"LNN&Œwê{TÞâTþ¨¼UwÌû›­ºk",ÊFí0½é846läOê{TÞbTþ¦yk",L,šÖ=±l=*TÞâTþ¨¼mÕ]aQÎ0jÃñ&ž>}:)ùP‡„RÓnÙD8ëJ^_ó¨\¢QCBS ÕÝÝMéïyUwÕ=^ïx±_ùÊü …*÷}D‡K)S™ðÀæU„;¦'Ü?Ÿß¯¾ô—ET®]«a¼ TߣòŸ òGå­ºcÞßlÕ]aQÎ0j‡éMÇ¡‰°a#ÇxzTߣò{ ò÷ oM„ʼn‰A¿èž¶‡ž•?*oq*T޶ꮉ°(gµáx“6Œ”\>` aŸôÒ„ß;Oy~©hLuæü–½˜êîî¦uŒõüª»ê«g¼¬ß¥ë-t¸Oç®$LÝΘ–ÃOÇïÔñJZßÙÁ“O>™ÊÅ‹'Œwê{TÞâTþ¨¼UwÌû›­ºk",ÊFí0½é846läOê{TÞbTþ~á­‰°811èÝÃöг òGå-@åÊÛVÝ5å £6œð‰ð;“2÷=ü0aÃF Tªãi§Ñöâ‹vvF„•(Aå>ÙY„g>Ú›ð–;î 4µPÝÃënJDWuWÝåµpçyåçu´zúÛ£{uã~¶Aƒáª{¶Õ÷¨¼Å8hüϼàr¢þû‚Ÿ7lØ ¡€B4ÝE\TÞ¶ò×DX”3ŒÚpÂ0ÖDذ1‹øô¨¾Gå-vBåïÞš‹ƒ~Ñ=1l= M„Ùhº‹óQyÛÊ_aQÎ0jà Ÿ'%%‘2u8‚ðÏu<’!råìæ÷]Ê{·–æ9Á×ýJUf;ïÍœû+—OpÞ+¼b÷.Ú¾vãFÂòåËË!Šª{xÝ*‚“©îª»ÛÛ¾?›NÛÿ[¡zö¢#z¨¾Gå-æBáߢÕDyÑ þ\‘æÌ½ß¶m+­/—šJØíÎ; ‡NÔŠîùõCå-q°¿&¢œa´Í8^‡+M„½Ž´¿ŽIw]¥÷WƒÊ["‰Êß4oM„ʼnEÓº'–í¡gCᯉp¨ö(º‡².¦Amc×Ýšçw°¡2j‡!áÎÏÞ¼y´é¦óÏ'l›ÂO+Mºæj*÷mÛ–pÏ„ÿ–»çnÂÔúõ #-.\H›–-[FØ©S§HU²>?ÔG'AåÊ[¬‡Ê¿¨y÷îû…¸áI'vºê* 9áØy<2u\å4*ŸU‹AR© EÍ¿/½P‡Få-A :ÿ6—ñSÖçlåg‘¯T¨gN…°…3÷>cö*o­Î¿ÄXô矢@bÐu$*o‰‡mü5å £mÆñ:\ùùk"ìu„ýy¼üºûó*½¿*TÞITþEÍ[aq˜¿°¨u÷ÛC¯&èü5>TóÜ5A×=J8¸DI ¶óˆÆ+½ òiýûÚºÈÏÛVñ^7*TÞâTþEÍûŠN×Pˆ§Î^BX9-‡ð±O.*s*á ª&zQÔüÍÇíùPyK|lç¿}ûv¢Ò䤓.]Jxã-<×÷›?¶Qùð.C·÷:áž)üTö¤½{¨üeÕà /ݲ™ëe êÂvÝãÕ•·ÄË6þš‹r†Ñ6ãx®üü5ö:Âþ<^~Ýýy•Þ_*o‰$*ÿ¢æ­‰°8Ì_XÔºû‹í¡Wc;M„ÕÔÍÛuwÃ1\TÞ Ûøk",ÊFÛŒãu¸òóï~ÝutŠ£?ûœðZç}Àeñ{€»O¦õ¿­]ëõ¥$ôxùy'ôä>8*TÞb9TþEÍ{âĉâîýG–8ïvÂÝ“¸\>{'•Ç<û$a›Ö­ µ(jþ‰âëyPyKœlçY«VDe½óì’2§ŸEåÙköVëú¼P%ÜþýÛ„[>D8¦| K–"즛³wî&œ‘ÂO]O;¼•s²2 :˜½g•‹íÞB¸âð#¸ì,{8ï®yã ´æ…^Ù”‚iÝMÅ•·ÄÛ6þš‹r†Ñ6ãx.ᯉ°×‘õ÷ñDw´/Py‹Qù'Š·&Ââ4`¢t÷ÛC¯Â4M„Õ$kL랎áÎÊ[baÿ¤Ö­[óc%…!”×å4mÚÔИ=-<ÿ¹sI€eË&ÉïÙÛ¶?•wîä¹m;·ñÓwíæof““y¤øäSN¡z%KòÓ¥©`Á^wgÎZ»WÝù=áª{ÑtR òÈï®â<71)•G°:#TwóÓ÷S’ù§56  )W®\Ñ\sTTߣò3™æ?cÚ4º”¬ìl³Î>›°xñâr‰aQökäü"-³\^â<«ä¨Òüî”4n_)¥xpŠó9ä·5ü‹¶ì}»èøÇ8¿Ô“­KåóW©ÆŸw2œÏ;õëñ{À¥ž­hZwSqCå-ñ¶¿&¢œa´Í8^‡kž&Â^‡ÔŠã¡ú•·˜•¢xk",Nó&Jw°=ô*Ló—„VáCµ)Ê5¦u/Jn•·ÄÄ6þúÓhQÎ0ÚöS¯ÃÕªQ#:äg}ú¦w¸ÒÕ)¶lá98•+WvUßo•ÐuGåÊ[Ú*ÿDñþ`€ÝÔµ…¼æá•¯ïÜ‘°£Ó¿Ö©ÃsE—¢ÆDñ/j±•·Ä©°üŸ0€µ7#ƒ°ïü^l9~$|¼woÚ´íåW—9#º·¼ô•Û]váç½À™K¥òðWœú?ͤòSeËÊ¢©3Ç÷—¿WЪÃ;L6…`ëÖm¨\ýV>Þ¼^çQy÷šU„ë‹ór™ã›Qù”Z ¿øø}BÛ…ÕÝVþ¨¼E/Ûøk",ÊFÛŒãu¸4Ö‡eyí)?½½£òOoM„ýÕú¥»¿Xç]Maùk"œK›þ+¬î6qý÷µ¢ò–ØÆ_aQÎ0ÚfœXõä—_h—çžy†ðìóø›ÑæÍ›S¹Û…NzÿÂ}tÝ£é‡Ê•·ø•¢xÿq…úÔÊüÞõ3¯&¡7Љâo”d˜“£ò–PÄË_ÞQÿè£éPµ:Špîòårè°¸qãFZ’ó‹‡yø¯îág‹üsÌ1´}ÀqǦ֫ÇX¿>añyŽîõ÷ßOåÕ³~&””BøL±ƒ„WIØ©S'Âü‹ü¼{L\CU¶ü·á×K6–jra½&óú/>!´}‘Ÿ¿í|Ü^?*o‰mü5å £mƉ5\š‡XÐuÏ:o-*TÞ¢<*ÿDñÖDXœæL”îþ`{èUÄË_áCciÓšxu·‰c¸kEå-±°¿&¢œa´Í8±†kÍþ&´¾óMìyÎÓ¡çgfÒ¡Öìâ§*žçŒ·hÃskZœ~:moÑ¢a… üÔXÏï×úA×=ZÜQù£ò? ò/,oéŠ4'ñ­<‡ò½ÅÛ)Ô½Ï9\Bî ,,_ˆã"PyK¨jÕ¨AÿŽ{ýuÂV­ZɦñÒ–-iû‹ùewíæÏ ÿlâ_<”u>Gø•çöX²„êwxðA¶۸´+•Nå_ ¼/ß³½xõj*G[Lûî;ªÒ½Ëu„‡;o±¨wE{*~í5Âü‹üº¿üÚxªòð‹VºæIÂ=KyNÿÑ}LåéS¾$´}‘Ÿ¿í|Ü^?*o‰mü5å £mƉ5\š‡XÐuÏ:o-*TÞ¢<*ÿÂòÖDXdVw»Øzµšó3@4>ÔA\ƒÞÞm㯉°OZ¡mƉ7lC§?þ5ò9:DïÔ„7ó7¼·9ßðþì|sûnƒûéW_Q½ÓÏ:+ÞSûr?Ý#•?*oñ*ÿÂòîzË­¯&ñ\ÂFò3.wž~ûÔ žyù‰ü”ÛªðûM%°üM_¼çGåýÕ—<²y套Rèn¿ãNÂ!ϲo#Åó‹Ï?§MÏüç?„ãŠóç„ÿìÝCå®·%l•ÅsuKœx•S9¾+ñÓ—Ïvæî¶sÞü€óy£á6~ÛÄÎ/Õ*Uâ9Ät‹ýûS­ ÿüC8Òy uþ]Ewi·÷}‰ª¤_ólHսˤòQKÞ"üiÚ7!Ûm-ÿ)S°ŠÊ[|jM„E9Ãh›qâ —&¡‘CÑ=”u^ •?*oQ•ayËjM„ÅIv`au·ƒå¡W©‰0Oñ’v«‰ð¡ âÔö.ZÚÆ_aQÎ0ÚfœÂ†«‘3WxÈN~ŠãÀ<—ç|ç}}Ã÷ñ7¿oO˜@§º°-\Øóúm4ÝóÇ•?*oÑ•aysæ"öÉ#G©IÑRûy„«eWž9ö¾Nj_aaùûŠL c;ï[œ‘ÙáÏñ/¹J—.íŠ}*U¨^9gNm©ºu©.²Övß X•·ÄÉ6þš‹r†Ñ6ã6\¿:Oy¼ì”SéP3øÑ.×v¡òó¯+ì)¬ØM÷ü¢ òGå-ú£ò/,ï;vP8ª&aü~Óý«ù©ºû§ðˆ]µ4~¶Âˆ¡ƒ©Þ¹çœ#¡7Š…åoôâ qr[y?ñè£Äz숄/ÈO;>‘B2°o_Ú´qôÂù;Ù·sÔ?zóqSÿ¶?öXByŸïçþAå» "|2­aµädÂÊ•!\ø×£‚‹ÅÖ­[©Vçf·Þ{/•;Fx°‹CXEâ4‰ŸŒ§¥ñÜýÎÈ´àèÅÜnÛׯHÇ­XɰÇïû?múË/x.õì™3ÂÖ3½RøëaÓJ$öü¶é®‰pbýñl¶'"—4æ@¡éžß¨üQy‹þ¨ü Ë[aq]XXÝM±ÕD¸p‘Ý5Ö‡eÎIví-¾·å M„}â/ÛŒãUØ>¾új:Tÿ… ,]êÕ¡­8ªî"*TÞª;?<§°N9ó\ åºÆ7¦Û‚PÛ¾å_Ôì›Áïm}ò‰~´éŽÛø©ÓR/шê{S¼ÿqžjüÎoÔ=÷ëFÓ}“óžÞzµkSÕÿ”àÌ”n]©…ÝjÊ÷…½îÂîÊ[âfM„E9Ãh›q¼ צÎ×СäãÂŽ”xu]‰:ªî_Tþ¨¼Uwo¾øznÔóÊ>c'–,É#vÛðHÑÉ-N§õ×wî@(ï®V­•M-P}oŠ÷e­Z‘Ô¿ý–0''Ç•ôíZ·¦z—,à‘ÆªÎ{x¦óœÕ)·ÝNÛü²„°xíZ„2Ç·û詼Ýy:ôÖí;¨ÜÆÞsýuT62¶§#þÙg´ß½·óù'|ò •7nLè·EauîçÍDiåwüöŒ _~GåäÓn Ìyÿ~Þþû¯„~[–¿ßø¸½TÞÛøk",ÊFÛŒãU¸4ö惱Wz$ú8¨¾Gå-þBåïoM„ÅIv WºÇÊVáX#æmýÂꮉ°·z$êh…Õ=Q×YT籿&ÂEå„k›qb¤wHõ¬¿þ¢u»Ç¾JØqÏ-ÒáCBèh¾1Qy£ó÷J÷Ÿþæ¶ûîïI!½­}KÂ+Ú·'LOO—Pû ½âï+R..&^Þ‹, £oÞÌ#ƒ­œ‘Úh§üò‹/¨Ê°›x®î~g$xÀY<÷ÜsC‘µb•ß=šð%çiÏo9ïñ•ÊG¯ÿ‡þÝâÌ.Ý„Gb“Š—*!øáÿKåÎÎßkÊ–£òâêÎ]¾<¤~Ð ñê.qxý­wéß^#ß$¬pÍÓ„6óÜàý¯óëu«øó”ìç,,¿ðˆõ:PyKœl㯉°(gm3NaÃ¥‰0GM÷ü¾AåÊ[ôGåïoM„ÅIv`¼ºk"l‡¾‘®2^ÝåxšK$ìÂÂênÛC¯Ö6þšª¡‘5¶Çm¦M›FUO8áÂÃç§Hî›4™ÊÙÎS!Û¿ÅßxꈰÛÈ£^P}MTÞTþ^ñ~äk~šîÍ«PH,[4O½½¼B¯ø{u=‰:N¼¼«”ãÔêM—úý‚ù®.¹FöÅÅKPýÿfì'L=ÿ|‡š5#Ì\Âoi(~$ÏßìÜŸ?Ћ¶÷,ÏOc¾9•s}V&­püx .¸€0ÚBøŸÚ UýØ™Û;w Ï1.Y’çG;ŽmÛ…w¬Ÿk>ü„çþßùø³D¹ôõÏæÌ&ÌÚ¼šp×X~Š÷æõk©ì·E¼üýÆ#ÖëAå-q²¿&¢œa´Í8nÃ¥‰pÁ‘ ªî³ÎÛŠÊ•·(Êß+Þš‹“ìÀxu×DØ}#]e¼ºk")¢v¬Ww;ØE¿JÛøk"]Ó„Ô°Í8Ñ‚²uëVªrB:\5‹¿É,™ÎïÃ;Ùùæù4g®Òæ9Â3gΤúÅ#Ì9Šv^Û¶M÷XãÊ•·ø•4Þ_OJ!Ú´q#áÕ;KÈZ½—páú}„·œR9d»ß Ñøûýúc½¾Eóy÷Ž»ï¦]§OŸîê÷îMõ¶¾ü á¨-aRZaþEÏ[o¥U¿ÃsU›geQ¹æ-Ý Ÿ6,ÿ.aËùuß¶mÕ«X±bØúAY™Ÿw4^8ïc>ç<¹ß¸ŽGz³ðH|r ÏÅN.ο9¥M;:äߎvh#Ûcåoä"‹à¤¨¼%”¶ñ×DX”3Œ¶'Z¸4Ž!Þ4ÝݱΫ…Ê•·(Ê?oM„Å!Á@M„YÇü¾×D8¼¿5ÛÖæ÷»m×_Øëµ¿&Â…UÜ£ým3Ž[ÚÏBU— †°k±$Âù™ü 炜ƒT~wÏnÂÝÎ7Îwßv•‡EÔEPuw«*TÞâ TþÑx~ò) Ñà‘c¯ÄsDG Låo“>pÖa„UÓÃ?­—6úp¿/9®K’§<×tÞÛ|d-~Ï®$:‘ºÑù%ÀIÎ/©æU¨DU;fð/žxèa*ŸšœLxÀ™c›S™çµ‰5è¿hûàTé=¹Ïñ­åŒ0pî³ÉÎq¨r‹ßÿ¶^ë<•¼FTþàË/ Ø+oŠîyŒù¿xyïÙ³‡ ¿Œ+á藔ğŸä<ÿÊOÏÌΡUWÄsºe»àÓ#yŽñ€þýhÕö­ü Ù^T/ÿ¢ºžD•·Ä×6þš‹r†Ñ6㸠—&ÂG*¨ºÌ:o+*TÞ¢<*ÿh¼5‡Øš‡êÍ÷¡µƒSŠ—·&Âv{ ^Ýífwõ¶ñ×D8O;£ÿÙfœXƒuj½z´KŸM[›8ßpÊqNÙ¼‘þ=þ¤“ßúôSÂêÕ«K•@bÐu&*TÞâTþÑxÿå¼_½é-)Tå»ðSc÷NAå’Ù.ù×FkïùëÇ[ÖD8ÞÈÍ~‰Ò½h®¾ðGµ¿&Â…×Ü“#ØfœXI˼ó7¦]û–à¹Kw8ßtת[—Ö/ýõ×Xmuý ëMTþ¨¼Å¨üÝò>úĆª¬K'L«~áþó 3¿~ްfEîG_zŽŸÁÐØé_i£nù›¾ô¯œ¹¯®¼’.åëiÓO9å”/mò¤I´}p—ëÇ9÷¹ºÎÜܽÎöÌ¥|Ÿ“9¾»œ÷è˜ù#í—éŒD*Á#Â33ø©Ï£jñÜÜisçxù7¾6v,­êÖ½;áPçÙ÷ö왿j‘”mÑÝkò‰æ=õ/~ÖÊoñS¤¿þês¢TªÃ Â?{ñ3²9â^óͼDóÏ~SeTÞoÛøk",ÊFÛŒk¸4± ëžuÞZTþ¨¼EyTþnyk",N1ƒš{w·¾÷ö¬æ–hÞš›×<÷ ­»?Xç]…mü5ÎÓÎè¶'Þ`M~ôQÚõñwÞ!œìÌeºüòË©áœ~JpÈN1víÚEµË–-Ã^ñWµE÷ø†ß3ѼßÿèºÛŸà_Œ”¿!ô­ÜÇïÎ:p€ê¹}jxxvÑ×&šô+JL TÞ]Ûøk",ÊFÛŒo¸4Šî¡¬óJ¨üQy‹ò¨üÝòÖDXœb5ö6în}ïíYÍ-Ѽ56¯yî$Zw°Î» Ûøk"œ§Ñÿl3N¼ÁÚùÔÚµäùüTÍMšP…þ¸¡ò–8 òGå­ºs¿í—/þù'…ªiëv„þ"¼ø²ö„×uî@Ø®o§‚‹DùþÑ^½(OA¸ßyo}´ ìÛ—ªl=†°ÙA~Ïý[Gó3,><˜ÖX²”0ÓÁ¿3yoÇ÷ß§õw;oE¸Ò>}#?º{þEÔ£Îy¨²‹E÷k»P­‰ŸFøÁ_ž~úé.ö6_%Qº›gz‰âýéç쇛{ñ/IJwâ÷‘çdeÒådó𚧯 òçÙ,iii¡ìq)Qü=¾ìB•·Î6þš‹r†Ñ6ãÄ.M„C#‡¢{(ë¼*TÞ¢<*·¼5§Ä‡šÇ·¢ÚË­ï‹êü¦Ž›(Þš›R8üy¥{ø³›_kM„Í{†®À6ãĶ-Ý{Ю‡ñ{0“9J(üóÇ •·Ä•?*oÕÝ݈ð¤?xçÒ_—SÈî½´™„Îj,jßoÚ´‰âS¯vmÂj%KŽÿ†çTGzªöÊ… ©^ÓæÍ V®J¸ß™‹Û`ãz*ozq4ajýzòœËäò婜錨üQy£ëÞºuk Á×_ó¥Ä#?vÿt ­zþâê„©)Iù«XYvëû–§žÊ¼9¶“gLwÅ·ßKðï,gD÷ø»î¢ýo?çÂÎȪ¼Ç÷‹•+iýˆéÓ‡—*MX§xqÂË3ö¾èÌÍ=Õ¹>ZYÀbæ?ÒÖ6ç±îxΦŒ´°k 6¹Õ=P¤ÿGÆo¼ÛÂsÙßZ¸BýX«#†üéüÔòGâ¹ö+ÿ^Aõ?üð°õ#­ôÿH×éõzTÞGÛøk",ÊFÛŒ)\šGŠLøõAÑ=<»èkQù£òG ò×DØÝOÃ5–– Dmï~ã­‰pbÚ“ßtO ë¼³ØÆ_á<íŒþg›qòkÿþý´êÌf<%s/ƒÞüôÓh}³š5 ;¯?l>˜ß{)DZ¿ðˆQyKœPù£òF×½Aƒ‚Í;xð˜çù}Ÿ—]z)­ÿlùNÂŒlî(¯¬ÇsO%n¶c4ß錸¾á¢ºÄ¹¯lqÞ{‰ÿÇãyÎãˆ{î¥*o”J'œ²ŸïCJsyBo~js‰z'Òöÿo¥JTþvêTÂî]ø)Í­åNÎû„º¿'mèᇠÝ.„÷#=›ßøÀ™«µ ‡Ëïãoê›tÕ_»ç¬ü¹‚ç¢D:~ÐÖE÷xuAåÊ[|‚Ê¿¹óTâß×m§P¤Uå– Ù\®Ùî>Z?©ÿ5*+±N5aêõ(ÀÞvûíÄ#šî5ªT¡zç§Ýޘɿ4z÷ÓOiýqy¤üÿçø:s}ï<‰¶§;Ï¢èíŒïvî7Í·óýeÇÞ½TÏíâéAüË¥>ýúÓ.§6æ§>O›ÛSŸ£ñv{=¶ÖCåïwÞvg‘¥n4ŽpÑÔÓ¯N¸iÈE„s¦MxôÑGº]ø¿[±ÖCå-q²¿&¢œa´Í8‘Â¥‰p¤È„_Ý󋾕?*oq*M„ ÖDXZH°µ½û·&ÂEÓÎü®{ѰÎ;ªmü5ÎÓÎè¶'Z°NsæÂ=¸~#UmV‚¿á—ý–à9*=œ§qf9ïa\±j•TÀ é«h¨üQy‹?Pù ïy‹–P(ÊßþaÖŽ „{'ñœáe8R#‡òˆäYgÅ+|¾Ô¯]áŒgø—A¥Ï8ƒÊïù¡ðÏ?Wô‰ûï§í›_{°—ó´è~»wQùØF oï|5aªó]™ã›R•G’ôéCÛŸ6ŒðÉt~úó¨b<’¨ü…w­cŽ£PLÜÄO+.ÖµÂÝ‹xNÞ®/ž¦òU—µ%;æ…z^vìØA‡¬w채?Ï›GxÔQGxª­[·Òöcœzß–¯HåÖ{xDwƒóKáÿI÷î´}û‚E„W¼û6áÅ’ [•,I8Éyêó§Mxnî'QÞ¿L;ýo±y3? ÷æ«yyîÌ™´é®¾} ïਗ਼Þh÷7 .*¿òþà£Išî={¦_ÊO3ÏÉæÏgÅœÏi»'¦íÓ¾à¹Ã5I]¡_ù»ºøBTBå-!³¿&¢œa´Í8ÑÂ¥‰p´ñö éîŽu^-Tþ¨¼EyTþÂ[aM„¥-  øí‹¿òÖD¸h[_u/ZÖyG·¿&ÂyÚýÏ6㸠Öèþý©ê‹Ã‡^~Ë-„J(‹ ò~‘•·Ä•?*oÕ%ï“m L¦ÕoÅ¡ùõÂÌ­k¯háM×ñS¤Ï<óL®WDËömøú¶ÎšMgè2táÍÎn¤Ó^yÞy´é|g„÷bgD·õ¶-´þÕKy®á£ Pù‹xd[æøîtž!qÍe\ïàòߨ^ï$þåÐ¥»vR9Ö§>ÓNÿ[|ú Ïq¬í¼Ï¾a“&²)!¨í}¥‰pBìñ$ò‹ûá¹ô?üÈ¿”HMM¥}J8í°D‰4*oIç_‚|ÿÖH*W)Ïsî#`ÁBþ…G¥Š¨J×®] U÷H æzÛú;M„}âCÛŒã6lš© ê^0ë¼­¨üQy‹ò¨ü…·&šK[@@ñ½&DfÕÖD81ñGõ»D×6þš‹r†Ñ6㸠×þ)S¨êJç›Âãïïv× òKö_+QyKPù£òVÝydìÓ/ù½·.ä‘ÞóOªF¡¹¶ÓU„§vš„*&œêÌ¡íu÷Ý´ßÜ%ütêh™<‰¯gp—ë¨ê•ÙÙ„?žÅ#Ðo¾ù&•üÂÇ“÷øþ2c­¿ç£ _IçÇ]WHæ¹¾}9¾'?ÖŸ¶ìŒÌFKˆ&:õºßx#í—ì\ÏgÓ¦Q¹I‚Gt餅Xh{×áBØÇø®w|¾–®á±–GVNO ¹¦‘/¾DåGûðü‰¼GåFkï! @AÛ»]í]aŸ4º 6M„ 6XPu/˜uÞVTþ¨¼EyTþÂ[aþ‚Tü5λËâ{MˆìÔQáØtCõ»DÉ6þš‹r†Ñ6㸠׮ù½t2¬äÙg…Ý5¨üÃ’ý×JTÞTþ¨¼Uwþ¦üƧ'P(/Sœ°õÑe%4…ÂUø}º9™™tœïñœ½ÚµkxÜÚU£íï¦ðHO‰b<7·íŽm´~Éu7¦Ö¯GX¢¿OTúõo.¤õ;v$¼¥T:aƒ '5kF¸ó 4ÇšõwÞÜãöÛé8GÁ#ST°`¡íÝ®"¯,4Ý{~õ…¦çU '}ü>aßÑïص•ðÍáý ŸzŠßOk{§-^M÷X¥°¿&±*\Dõm3ŽÛ0h"\p¤‚ª{Á¬ó¶¢òGå-Ê£òÞš<",>ÔDX"a'Šï5!²S?¹jM„%#ªß%*¶ñ×DX”3Œ¶Çm¸¶õ¼Ÿª–»ï^”êÕÃîTþaÉþk%*o *TÞ躷<¯5… AÏ× G¶ íŸzüqZÿÏZž“7bÌ Y8Ðy?îÆÑ\}Ä^4díwÃU<÷8sÉR*ËßqïòHη?þHëG:ï{—“µtÞüù¬Y´ê¸ãŽ“MâC÷ÜCÛß|õUÂÝÎßSN?Êš¾ÀmDíï‚Ê»ÃãÉ£?|ÄýXÙž§òÎ×n%|u`/Âgžy†PÛ;…fa›ï5ö‰5m3ŽÛ°i"\p¤‚ª{Á¬ó¶¢òGå-Ê£ò×DXaiHˆÚÞƒÊ[á‚[oPu/˜uÞVÛøk"œ§Ñÿl3ÎAgî׳ΈÃÚxîH‹³xð)Q<Ë~’°ò8ˆdÛøGâëzTÞ'Tþ¨¼Ñu¯ßâ\ Á ï~FxNm~Êò¦M›¨||­Z„Ê•#ükýzÂH‹-[ø=½ÇÕ¨AUV¬LøþÞ½„?ÎsŸwÞ?œZ¯­ÿ¬_ŸÊ½EBa%j"›l¨~—(ÙÆ_aQÎ0Úfœüá:÷ä“iÕí+Wž––F¸Ù™K<ßy¯åûÎÅOÉI´}ËŽ„¶ó'q,PyK¨Pù£òFÕýå¹<"ûò=)³fðÙI_}Eå§®¿žp|*÷›÷îÝMåóÎ8“°£3",ïí•9¾{jEÛ/rž }ÌœZ‚ÖŸ»{'áÔùó ëÖ­Kèvñú8ž8Ûyªô¨—_v»kØz¨¾Gå-&@åo;ïŒ þeÊo½KR~øéD´Ü¿”t>ç•Hãg üs°m¬ooÂ~7w Œ4"üùW“i{™RÜïsÎ9T¶}a»î…¿mü5.¬âío›qòÓÖD8DÜ•m×ÝËȵPù£ò' ñ×D˜•GÓÕïÂ[Pu·sDXaqplˆêw‰’mü5å £mÆÉ®uëÖѪ&Î{&ç”ão3rrhý³K7iB8á žs’”Ä#öó'Rq,PyK¨Pù£òFÓ}Ãnî÷ž™ÉO…žÝ§=…àÓ;ùéªMoã÷n¾]ª4­?<%…ð¿{÷Î?ƒ_74ÞåÜܱ/½Dûõ¸•Û¸ ?•úÖáÃiýºv%4µ@õ=*oñ*TÞ/Îâ_À¼Ú“3ÛùŒøaôØ×è߇úò{ÓŸ~ŒŸBÝ­[7©b5¢ê.¢ÙÆ_aQÎ0ÚfœüáÒD8DÜ•m×ÝËȵPù£ò' ð×DXgDÑ=”u±b¨¼%¨üQyk"Œùº0[Û{RëÖ­yÈNÂyóæÑ™›6mjè Ìž6(üWþý7rÇ ÆÍùi© 4 õUã÷ZRá_‹ ðÿ%Wÿ¢ò–à òGå¦ûú]ˆréâÌü·ù³éùåÌö¼}¾ó4ècRy®]ç—2‹€yöÙαÁ/ ù)Ô•~·Zµj±ÀãÚ¨¾Gå-öAåÊ[tŸ9{.ý{üI 3wòHñï+×R9'…û»º‡ó/:ŠŸy ûÛŠèºÛÆ_aŸ´4ÛŒ)lšGŠLøõAÑ=<»èkQù£òG ð×DXgDÑ=”u±b¨¼%¨üQy‹îšëÀžxÁϨ?ö‰:Aù ÍÁÍ›)¢#;òÜ[§¢¦9OŒî ðÄ/ÒzTÞTþ¨¼U÷ð?™;è<]¿ûµ×RˆæLá‡ëltžÚúãb®ýìw`ÕÖöIBjBU@A@A($^À+ŠX°¼–{m`GD¯Š_ëåŠ W?EÅ® ×Šp-ˆR”ÞéUB Ò¾÷<{–I9œ¶gfïYëŸyΞ3³gÿÖ³frÖLf¦ys a\Zè\yNw®8ǵ²Æ…¹æ=WnJ®ü\¹Ã}?±ÿ@ÌšðÜÓÐ:W«gìøð1´ï:ûèàÁƒ¡¶OÄ÷ÊÿΙ꫆8”G áø*(¾ÇG]¶4W~®Üä\ù¹r‹ï±)Ÿ=[Ý[wíå—#dã_}z²ó¾vŠ£mÊ5ï¹rS~råçÊM¾ŸÒ¡>®U¯E¯’5PÇèû¼©êiöCz‰YÆ £¯¬Vî¾ÛÆ/…°!»›m‰)lRGŠLåóƒâ{åtÑçråçÊMÁ•?Vn)„)S‚¡±ú Ú)¸òså¦ BXÝâBñࢶ彆d¦m‰)lù¯MÄW©u²¡ÕÏ>;Ң慿T ®Ü®ü\¹Å÷Ø®Sœ‚¦\óž+7å/W~®Ü_~õ¬ïÕ»´N®ºG¸´X=%?¥D½_½à7õ¶˜×ÀrwÞy'¥ŒÕÊÕw2Í6~)„É9ŸÕ¶Ä‰.)„#E¦òùAñ½rºès¹òs妌àÊÏ•[|— ¡°åžAÊ×d•ëþ.…°ìï6íïR'{¤Ó´¾-ÌíÛ·ƒøçàœœ´ëÖ­ Íñ ´æÅê _ú1G£mb 4Žx¿çÊMqâÊÏ•[|—H¡‚ˆöÊõxÇ»´´ ½lù h¯¿¨ãÝåW\v†óÔzzzýªjùœ ¯Ç÷kWiòúä÷ðUÞÖÐniQ_çsó=<ضñK!î Om[G a½ b‹ïz©ËzãÊÏ•›œçÊÏ•[|— ¡ ´'S¥V¾ÊqÞ®ã†lÙq^?»Èènçý” œ+Â'UMÇünCn‡æœz*´ƒóô@zMHjj*æÓÄ~¯.åÊMñãÊÏ•[|·ëù¥K¹æ=WnÊ®ü\¹ãõ}ƪ|¬²hË^èÀõ© è«“&Coþôò~½ ÏŒVOFà‰øn×ß9)„ ÙylÙq¤Ö›0¶ø®—º¬7®ü\¹Éy®ü\¹Åw»~’_º”kÞs妼‰•_ aŠX04VßM¡•BØ'lKœ^ΕÞ+œ{Aš¥¦!’s ÷C祤8ªÄê»)ÔRâ„m‰Ca+už½éšë0«Ñ„—髸ÔVþ¸ +Y˜+7…‚+?Wnñ] ¢PHAD{åz¼ãÊMY+ÿ~çwäK/½„UÓÓÓ+hFFÚ»ŠR¡ j·‡>}îQÐH“7ÞV÷ÓñæÅÆFZTëüX¹µnÔ Îlã—BØä±-q(lRS$S[}OŒöÀµ¸òså¦ àÊÏ•[|— ¡ ‚„ò!è*û{ly/…p°öÛò^ aCò϶ġ°.Z„{Þyš}ï?諸ÔVþ¸ +Y˜+7…‚+?Wnñ=¶†§ )×¼çÊMùË•Ÿ+·Û¾oÛSŒMŒ˜¶:毇Ñ&¡ï¼ÿ!ôú;ï‡Û¼tÆçŸ@Ýžˆïvý“BØí="ÆþmÝq¤ŽÑà‹Ùê{œ¸gsåçÊM •Ÿ+·øn×CòK—rÍ{®Ü”7nñK!L6SÝòÝ-Z)„ÝŠlœýÚ–8„·çÃð±4?Zó’‹é«¸ÔVþ¸ +Y˜+7…‚+?Wnñ] ¢PÈ¿ÈÒžÀC¹ï¸rSV»Í¿{ 6uûÖCϯ± zÕ`õŸ‰i§©÷¾ðuÌŸ9ý ¨Û·¹Ý²ýÛÆ/…p²ŽkZß¶Ä!l)„)‰©­¾'F{àZ\ù¹rSpåçÊ-¾Ë PÈ Úx¨ÛÇ;)„ÍÌ#·}×M-…°îˆ&ØŸ©‰3kÖ,åvïmݬ4§kWè‰{  §ö?zÜ@ã˜Ê/G¼Ëså¦8qåçÊ-¾KAÊ)ˆhOà¡\w\¹)«½âÿæû°ÉÞ—\ m2x2´`ÅІ?ƒÎùþ¿P·'^q»Í‘hÿ¶ñK!œ¨Óš×35q¤ÖltXw¦ú6Lך\ù¹rS"qåçÊ-¾Ë PÈ Úx¨WÇ;)„ÍÊ'¯|×E-…°®H&Ùé‰Ó»Kžºh14­´:·D=½ïçTõ~·ÍÎûàÚµm‹ïo½ë.èyçŸ41?Ò¸“Ï•›âÆ•Ÿ+·ø.Q(¤ ¢=‡r=Þq妬v›þBõÖ’îgõÃ&ëß®žMÛßûÛ\|ÌþæièüŸfÒW®ªÛÜ®^Cç¶ñK!¬Át]˜ž8RëpùÀ>L÷ýÀëÕŸ+7eW~®Ü⻜ 倜¡=‡º}¼“BØÌ…^=ä^hZþ6èúßWBã˜Æïø“]Þ6~)„“u\Óú¶%ŽÂzŒ·Íw=Ôe½påçÊMÎsåçÊ-¾Ë PÈ Úx¨iÇ;)„½É;Ó|F-…p´yô½m‰³þêÌYÃK/A„Ò=6©HÙÆŸl¹•¹rS¸òsåߥ å€D´'ðP®Ç;®Ü”Õ¦ò?2c3†Ø8otø]wAk\ôt÷¸+¡›×¯†Æ;1•;^ŽD—·_ áDÖ¼žm‰#…°ž°Íw=Ôe½påçÊMÎsåçÊ-¾Ë PÈ Úx¨©Ç;)„ÝÍ?S}D-…p¤Èx<ß¶ÄÙzÅUˆPýÇCSœ§õ%6Ûøå _+7Å+?Wnñ] ¢PHAD{åz¼ãÊMYm*ÿœ¹s1Äîý.ƒ6ºý]hñέÐmOŸÍÛº ïÄTîx9]Þ6~)„uZóz¶%ŽÂzÀ6ßõP—õ•Ÿ+79Ï•Ÿ+·ø.'@B9 '@hOࡦï¤v7ÿLõ=µ‘"ãñ|[§hÍZDfט1к«{*’ —-üÉr†¯Ï•›âÀ•Ÿ+·ø.Q(¤ ¢=‡r=Þq妬6ɲåZç½  ‡ª·Ðx‹÷ìÀÇMö†îÞ±¾ŠKMãŽkð¶_ a ¦ëè–đBX‡Ûe}Øâ{Ùˆõ~âÊÏ•›²‡+?Wnñ]N€„r@N€ÐžÀCM;ÞI!ìMÞ™æ{4j)„£EÈ£ïMIœÕ{Öî2ä ›4vìÒzBa‘š¿])«}ݵh';1…?YŽx×çÊMqâÊÏ•[|—‚(”RÑžÀC¹ï¸rSV›ÂŸ——‡!ßîèîý%ÐÒâBhq‘ÒBç÷mË6Çcþ¢™Ó ñNLáŽwܺ–·_ a]Î'Ù)‰#…p’Fƹº)¾Ç9lm‹såçÊM‰Ã•Ÿ+·ø.'@B9 '@hOࡦï¤ö6ßLñ=Vj)„c”ËË™–8Ý:tqÃÅK ù5ªCçíÚMÍÈ€vÌÉvêÑÚå´Ó ]»v…Æ:1?Öq'»WnŠW~®Üâ»D¡‚ˆöÊõxÇ•›²Ú4þU«Vah……ê p†ó;6Ýyë é”ßK±\£lõ»·O«Ú„TA¿þæ[´/¼àBè–롦qW´ Ûø¥ö )bÙ„i‰#…p,®%¿Œi¾'O_\ù¹rSvpåçÊ-¾Ë PÈ Úx( &)ÐIDAT¨iÇ;)„½É;Ó|F-…p´yô½i‰“ŸŸòCêÕƒ.mpH…Hl(.F{^á~èç [»Þêi|¯Lž\aùh Óø£W×÷\¹)~\ù¹r‹ïR…r@ "Úx(×ãWnÊjÛùß\ î-άš¤~ÇdC§Mÿ/ô’î€n^ò´ÈùÜ«—úÌí8‡ üßÄ6ߥ&ç|VÓG aoÂ4ß½¡.Û W~®Üä}ú@SSS)4Vâ—ƶù8ñýóbÂa†ø.¾Ûœç‹–,Åð;õ< ÚhèÔ 8«ïVoY¡§F÷ïßßsûûFA±m—B˜œóYMO)„ÝIÓ}w‡º¬W®üÄ-…0¯ˆä»ü@ßËŽ‚ÁÿÄ5ï¹rSF…_ ar46µÍw)„cóÕõ¥LOœü>B &MQg®yáy­11_+l¹Î¸rS‚¿aà Í;:mÚ4èOsæ@¯øúÇ@ wo‡¦eÖ€>öÈCÐ!·ß ú$(¾ÇëWnŠW~®Üâ{0þ5˜|ŒWmÏû5k×ùØ“N6¾Wý]/-QoM©RTˆùkê]·êW耠rÂÓŽžR#]ýŸ˜~ÀBØ1Ýww¨Ëz ¿ÂežÆò)(¾ÇÂZ~®Ü®ü\¹Åw)„C9`kA(…0íÁñ©mÇ;)„ãó×µ¥MOœ£Ÿ{fçÎJs:j…éüZaËuÆ•›BþË.¿Ho¼õ6´Æ‘êž¡ŒÃE;³q+hF££ ^ =$+ºfÙB(—IP|×/®Ü'®ü\¹Åw)„C9`[!¼wï^¤n‡Î]¡‹·¦U…¦9oQir¬ºb¼è›ÿ`þ¹çž µƒÖ0±íx'…°ÓutazâH!¬Ãåû0Ý÷G¬wNPø¥Ž//‚â{|Ôö½V"^¾hË‹ïvü«`4ãý^|ßãÍ?——B8¹èÛ¶¿K!œœßÚÖ6=qþ¸ÉyoÚ#ÀœZ¿¾6öPG¦ók…-×Wn AÐøsºõÚÏËWC¿y"4µF´8_ÝüÛ½êLsI±s¯¾å3 šï±:Ç•›âÕŸ+·ø.W„C9`ë•ÑýûÕ`Ê㌌ úýâ˯ …u›AdCÿ3âR¨­Ü|ÛŽwR'a¶ÎUMO)„uº]Ö—é¾—ÔOAã—B8¶< šï±Qó=áGñßåÊ ååšïä­íüR““ñ©m¾K!Ÿ¿®-íwâÌœ9l{öìæää@«A·­ÿüX¨î‰ßüºybí+7Å'¨üã_| ˆ×=t€z*ôŸ¿€vá–ß yyyЬ,uÅ “ úÍ:®Ü®ü\¹Åw¹"Ê ^íÛÿB¤øçŸ}½nð]Ð?Q÷ ¯øi:ÚÜ&¶ï¤6$CýN)„ýI¿}÷‡ºl«Aå—B¸ÌãÊ>Õ÷ÊXËÏãÊM1àÊÏ•[|—B8”RÓžÀCm;ÞI!lH^ú8¹]Õ=‹ëç/@D~ß[=¢^=è)C»¼šÓ©ôÄO„&;ñ›?Ùñ'º>WnŠþÌì†@nê<=ºö¯³Ñ^Ÿ– ÝT ö7ŠKЕ‹ïá>rå¦8påçÊ-¾K!Ê Âcþõ/¤øÃïüMÏPoØòÍ›hß>þSèÿ^z*”ËĶã†d¦ß‰#…°?‰à·ïþP—m• ¿Âež‡>qñ½"5_nŠƒø.÷S.pP®ùNÞ_ arº¢Úæ»Âýó­åwâ9÷WÏTg´~kÔ±XVTë<=ožsë‡"õ´Ûý5ªãûUë×';¿ù“|+så¦qáÏé?ÈÍòK ›¦O€v­¦öŸ‡†ö7 Ôd à ßÃ-äÊMqàÊÏ•[|—+¡êáü)~Ö¥×BëÞôtͨÐêÅê™;»ì"´Ÿzt$4èÛŽwR’‘~'ŽÂþ$‚ß¾ûC]¶U.üR—yúÄÅ÷ŠÔ|¹)â»\¦\à \ó¼ :¿ÂätEµÍ÷”ÜÜÜÒŠþ´æÌ™ƒ ·oßÞŸø¼USø×;Wv·­Xˆ´NI©™5¥*]6:z’ãW­Úµ+,oÃþxÇìò\¹)n\ø¿ý^9®UK½»pË*„àøôtèüBõŸu›6EûÈV­ Apñ=Ü?®Ü®ü\¹Åwù]Ê ÿ®ÿâ‹/ê5Zw†î[»šÑ¤5´Èù{_¥`'ÚÝN? Ô‰mÇ;)„ ÉDSG aoÂß½¥.Û~)„Ë<}ââ{Ej¾Üñ]NôS.pP®ùNÞrá—B˜Wj›ïò¯Ñýó­eÚ¿œé<úœeË“±UÔ•àó®¼íGFÒ+ÓøµÂ¤3®Ü[ùÛ´h„;‡…þ}Ð BªT¯ë|:æÚVÝ+´úÅ›Ñn–mVµ*tþ¾}Е«WC›:WˆÑÐÄVß“µ€+7Å+?WnñýL„ ¨÷È’¿‘”KÞ·hÛ!Ø^¥4¥z+D¦óÌvr0¿Ku"ìÑÿ}$RÈ1ß6ߥ6$íLK)„½I Ó|÷†ºl+¶òK!\æa"Ÿlõ=Öòëpå¦påçÊ-¾K!Ê ŸB˜öt¥¶ï¤®èŸo-Ó'ÿ×_‹ó»÷€>õÉÇжmÛº#Óø]¬¤S®Ü ÛøKJÔSŸÓ+¸-²³òñÌ™ÐÖG -Z½ºcÄhÕk®†^?k;ôçqêJòq'œ€öìŸB3ªª{ò—Ìÿí Nló]—\¹)~\ù¹r‹ïR‡r ¨…0=`é’—ÔྙKòcÇŽ…~ûí·PnÛŽwR’¡¦%ŽÂÞ$†i¾{C]¶Ûø¥.ó.™O¶ùž kùu¹rS ¸òsåߥ倴'ðPÛŽwR’—¦%ÎÞé3™ÂÅ‹¡µ^ïj¤Lãw¶\ç\¹)¶ñ/_®î™ïÝ¡#Þ©®ÞÜ«`Ú«ÞxzÆêàßœ{~ÿغó«;O‘ÜûÇF´³º_-Y¤^«2öááh¸èBhP'¶ù®Ë®Ü?®ü\¹Åw)„C9`k!RC½7xî+)ÂÇöwÜmÜ¢%ô¢‹Ôå&׫+¾Ûþó,æ×*P÷o^¯ÞŒ™ &¶ù®Ë®Ü?®ü\¹Åw)„C9`Ûá­[·"u8J½¢î™ƒÐÞùåóÐÓnS¿Þ½çb´3ÓÔÛÐø¿‰ìïvå½”¹>«×;ŽÂ>îlÞkßÍ .…müR—y—Ì'Û|O†µüº\¹)\ù¹r‹ïvä—.µ5ï¥N.ló] áäüÖ¶¶×‰3lÈŒýñþÚñØc¡N; Úvþhî« -[ª+[h¸0ñšß„„ºäÊMÁò›ÿº+®ÀPš4jñøã4´Jõ g9gèP|_;³´y õ´È#œµ¾Þ£îšòÕW˜Ó®}{h‡n.œ§Þ;¸`ÞOhݺ5”ËÄoßýŠ3WnŠ7W~®Ü⻡°íŠ0åm£¦Íñ±úßþ MÍTçwLRÿ{œxæ¿5ñe(Md·+復ÌõY½Þq¤öÙpgó^ûnuÙ(üæ—B¸Ì /?ùí»—¬å·Å•›bÀ•Ÿ+·ønWA@~éRÛó^ áÄ2Á6ߥNÌgíkù•8))êÞ†¦¹…û¡óJKU»ŠÒÝ%%h·>Jûnî\´uMüâ×5þDûáÊMñò›¿óñÇc({×­ƒ>1i4·W/"tטASœ÷׺æj´7mÚ]¹r%tÅŠJ—-ƒ^zé¥Ðcœÿ¸((TûQ‹ã;`þÆ%êÊ0Œ&~ûîW¨¹rS¼¹òsåߥ倭W„Ïí1;«3R¹v»>”ÒÐ]ßN„nyï1è´¯§A1j+7ŸÄĶãÂI˜­sU¿G a.Æß—_¾Ç?RwÖð›_ aw|Ö«ß¾GŸ[ßså¦xråçÊ-¾K!Ê[ B)„iŽOm;ÞI!Ÿ¿®-íWâ¼öÊ+`zØ0èè´ô Œ…ΕáΕâ}-šãû¯gͪ°\² ¿ø“w²ës妸ùÍHv6†òYšÐœ-›¡;~WOqÞóÈ#h×¼ôhf—.Ðd'G´?]üü:ƒ\§ZZ²]Zµ¾ß¾û,®Üo®ü\¹Åw)„C9`k!üÏQ£Â÷Z;»tïêùÐÂÝyÐÚ|Ó@è¸ÔÓ¥måDÛŽwR'a¶ÎUýJ)„uº_~ùÿHÝYÃo~)„Ýñ5Z¯~ûm|n}Ï•›âÉ•Ÿ+·ø.…p(l-¥¦=8>µíx'…p|þº¶´ß‰Ó§kW°]²DÝ۸͹7ø®¼í˜?ñõס8ïCÕ¿ùuóÄÚWnŠ_ü»wïÆÕ¯]B÷ÈïW÷È()Æü—«ý!µ^=²mÝ¡úyoê§Ð¶‡¨§OkéÜ‚NüòÝïÐp妸såçÊ-¾K!Ê[ á×f«ÿ›úÒSHåsºžíر#ôÈ#„†Od·+ï¥Ï`ŸÚ~ï8Rûc¼ß¾ûC]¶U¿ø¥.óÀO~ùîkùmrå¦påçÊ-¾ÛU_ºÔö¼—B8±L°Íw)„óYûZ~'N~¾zïi¦ÍÀÖÆ¹ò•>ÔÎZY‡~óW6&/æq妨úÅ?oÞ< ኞ¹Ð«U§!A_(.‚œ×úäsÏUø>ÙÆñ{ ‹§^Uû×IYh/\¸º~ýzèe—] ÚÄ/ßýŽ#WnŠ;W~®Ü⻡0íŠðâÅ‹‘šmÚ´¡­ «òÔ†½2WýGäý=­ð}´†ìïvå½ÂÑ2Ú£ïýÞq¤öÈè°Íøí{Øpgά2ûçÐ×_Ÿ-MIƒ¦:ïó®uxk´7/Rã+)V÷*cf€&º|·-$\¹É'®ü\¹Åw)„C9`ÚáÃ[‰Ô<æØã Ÿ¼ÿ64Ýùp×çÐܹ!ôÐZU¡±Nd·+漏5³]^ÎïG a— ŽÐ½ß¾G–g³uñK!ì™eZ6¤Ëw-ƒñ°®Üb®ü\¹Åw» òK—šš÷Rër¸ò~Lõ½òÑÊáHqñ|¾ß‰³î\0ïýü hÖÐ;=ßüžÂ–ÛWn .þ»† A—ŸŽ½é±Ç WD›‚îûö[hþë“ Îû³Wnÿí•+WBW,_®Ô¹g÷äоæõiiêJ.fd2ä®{ðí¿'¾ÍÌÝ9K½—ð°ëÇ¡VK=•z×+ªÿñ*ž³Ïþ+¾ÚD—ï¶Å…+7ùÄ•Ÿ+·ø.…p(L»"Üñ4õŒŽ_k‹Ýþ…ú;|ÃCê?¿zö»óûµÉ†Æ;‘ýÝ®¼—+Âñf¸KËû½ãH!ì’±QºõÛ÷(Ãsýk]üR»n•Ö èò]ë <èŒ+7…–+?WnñÝ®‚€üÒ¥¦æ½º®¼S}¯|´rE8R\<ŸïwâäOVW¬Rªª{!jô?ÏÓøÍï)l¹qå¦èâïß«ºìýÓlècνµŸþ8 íF_O‡–îÝ ­}óMP¯&Ï<û<6uïA÷×T÷5½í ´÷|¯®PçfmAûåqc¡Aèòݶøpå&Ÿ¸òsåߥå€iW„‡ ¿©ùÿ¨ßur¯C{Ûj~ëÌ]hOyGý}®_¿>Ú±Nd·+ïåŠp¬™íòr~ï8R»lp„îýö=°<›­‹_ aÏ,Ó²!]¾kŒ‡på¦såçÊ-¾ÛU_ºÔÔ¼—BX—Õ÷cªï•V®GŠ‹çóÝNœo¿ùLw íî\AË9õT´Û|¯žR{Ø…¢qÂñP¯&nó{Åïv¸rSœtñŸÐR=òÉÝùèºAj*ô¬ê=€«¦NE»ÚgЦ}Ñ5kÖ`»G£Þ_˜•«îa.þi2æoY÷»/ãòz£º|÷zÜÉn+7Å+?Wnñ] áP˜vEøƒ>@j|èYhíËŸÒdÏ’oññ‰êY#~íÁ·ÄöŸd²¿Û•÷rE˜2ßgu{Ç‘BØgƒ#lÞmß#lÖ˜Ùºø¥6ÆÒ˜¢Ë÷˜6fÐB\¹É®ü\¹Åw» òK—šš÷Rër¸ò~Lõ½òÑÊáHqñ|¾W‰“æ\)»-»IW÷ÏÍËC;«n]hç)¹œ+hýÎS÷ ·hÑ•ØxÅïÊà“è”+7…L­jÕÐåìz  5÷ò~¸?ÚÓ;œ }óã¡~Oˆ{Oµ?zâQ ©csõôh¿Ççöö‰ß´+ÂínÄ÷ÏÝ °¡½‹ïâ»I©¹aƒzOð‘mNÀ°jq-4mÃhÁªŸ¡%ûÔ˜uëÞíÞUÏÒAã ®ùN!±_®“s>«W‰#…°ÏF‡mÞ+ßÃ6kLS¿ÂÆXÓ@tùÓÆ Zˆ+7YÀ•Ÿ+·ø.W„C9`Ú O)„iÏtGm;ÞI!ìNÄÝ«W‰óæ$õtÚ×oŒ1>[5½ÂXW¡ýaÁè εO¾PïîÔ¥K…åu5¼â×5^]ýp妸…ó/]º_ýûYuïÎÏT¼w‡Ö#ݹs'>voÕší<º¹óôófEŘÿMj ´×ꞟ¡÷¨÷ûb¦â¾f”:Ü•©ÞKܧUmFãý&‰ß´HnG‚+7Å•+?Wnñ] áP˜vœß¹Oý.8ãoC‘¢í³÷A{œ®~ßæää Ý²eKh¼ÙßíÊ{)„ãÍp—–÷jÇ‘BØ%ìÖ+ßžë«…óK!,…°ëIçãÂóÝÇ¡ø²i®ü\¹)ɸòså6Ýw)„É!wÔ¶¼—BØ<ˆ»W¯ç\çÞß¾¿ÌÇX{gª{,,*D{N]uñ¤>B»U«Vq3ų‚×üñŒÍÍe¹rSLÃù§L™‚¯_vô¢¿ÿ:rÔ(ZZºGýÇBÞ¢½ûduð¢ì,´W¬X¡tñb¥ BÚ:zÜ Ð¬,µ<NˆûþßÇV—nUg¤¯n/÷{hƒç›"ßM»BâU ¸òs妼âÊÏ•Û/ß·oWo‰¨ë<ë†Æ®³³ú­þþ·i¨~ÿ†/—h[|—+ åŽ$Ž·‰#…pBiª}%ÉûŠy/…°ÂÚw2ƒ:”ý½âþn5®E|ß]M0C;÷:ï¥6#¼ö=Yj¹"œl5­ïuâìuS«j§§Cï1:xØ0¨W¯ù½âж®Ü—pþÑΕ߅=„E–§g@ÿ1áèé ÔS¡w=;íl'_«6kж-â?y*†üÊÏêLöýÝ­¡  ó«W¯^é÷¶Í$~nWF¹rS~råçÊ-¾ó<à—ï<<›~yÂkÐiŸ}mÞ¼9tÆ*õè•ÛÕ`ý­;'že·+ï¥ÆîáÿÄëG aÿ=ÀkßÍ .E8¿ÂR—eGð>…ç{ðNÄ•Ÿ+7eW~®Ü~ù.…0EÞ_µ-ï¥ö7_þܺ_‰óÓ 0†C¯ºÚÔyZÞŸóèƒ_üáEÜ Wn H8ÿÍ×]‡¯¬ž¦|UMõ -6¬ÃüM>­7ôNêÂJíÚµ+Æ=tØpèÈw¾ƒ6Ý·:ß¹§ù×%꽆7Ý|+æzê ¨í“pßmç‰uü\¹)>\ù¹r‹ïv]#¿t©×y?nüx }øØÉÐâ K¡7R¿+¶¶» íÎ9êÖÄkn·8í×6~)„uZóz~%ŽšŒ³;¿|s˜®-Î/…°®%›‡ç»Còt\ù¹rSrqåçÊí—ïRSäýUÛò^ aóåÏ­û•8[/¹ch0éõ?ÇâÇ¿øý`-¿M®Üƒpþ^Î{ª/_º ‹twžf>ÇyŸõÈCÔ=Â?8WL©[´ªs/~JjU ¹AÛS¡…õ[B«z4óеϨ§g;OsÇÌLÂ}RL\¹)8\ù¹r‹ïrE8”^= â—_~AÊqîÅÐz·½ ÝñÉhhÚòéÐOÞ{zâ '@uOd·+ï¥Ö½$ØŸ_;Ž ¦i5¿|×4ü¤» ç—BX ᤓÊàÂóÝࡺ24®ü\¹)‰¸òsåöËw)„)òþªmy/…°¿ùòçÖ½NœÂåê=«ù&` uzðϱøñÁk~?+ÛfP¹éalÏì›n» šî\¥X„óŸÞ¦ ¾Ê^³Ú&- ÚÜÑÙ))h×>¿?tô¸qP[&Ãî¹Cå<»épõTË´,u¥›8v½t->¾òäýпœ™K_BÃ}T \¹)4\ù¹r‹ïv]#¿t©_yŸáü'Ù#JJz&tÿFõ»w÷CÑîß§'ôù= MMM…&;ñ‹;ÙqëZß6~)„u9Ÿd?^'ŽÂI¦iu¯}×4ì¨ÝH!\yˆ¤Vq jÞWîzÙ\®Ü®ü\¹Åw)„C9àÕ¿FS¾I!L‘ðGm;ÞI!ìOž°U݉SRR‚mLz]ÝûÛìˆ#ÐîØ±#´dÚ×ÐâM› µ®¼ê×D7¿_ñn7¨Ü;vì@(5líß§tâTñ¿õ5˜¿~zJòw­Ô¿¯Xªžú¸|þ||¿bùrh±ÓË;ŒO-[ª{lÙÆK§N0Æ%+ƒÖ쥮˜W)؉vßÃöBŸf4hòÝëH~Ç‘+7Å+?Wnñ] áPx}œoßùt¤ÞºÃºCKKŠ iÔï‹‚U?£½7o tË–ÍÐÚµÔ[*ÐHb"û»]y/…pÉ®sUÝ;ŽÂ:Ýq¯/ݾ»7Òøz–Bøàñ’BØ®?”w3öoƒº¿Ç®ü\¹)/¸òsåöÛw)„ÉÔ¶¼—BØŸ<9`«n%NFÕªØV»:u¡óò¶C[×Uí'ŸŒv— /„Òã6νšUõñ¥‹·ø]²–®ƒÊ={ölÄçê^½ m{ƒ»ÿãh_;h´G«VЩÿTW>kœ{ÚAŸ„ûÞå¬ó¼'¥:tîÔׂpþ@ÖƒãÊM!àÊÏ•[|çyÂÏoßo{î} áÑ÷BÏé¥îîÚ9휥ný'™ìïvå½´Çú¬ní8Rûll”Í»å{”ͺþµÂq¸ïR<^Aù6Ü÷ pÅÊÁ•Ÿ+7åW~®Ü~û.…09àÚ–÷Rû“'lÕ­Äyïí·±­ßtô…´tè¢ÂBè¼ÂýJ§òNß§îMÌíÛó_qî1FÃʼn[ü.YK×AåžùthMõ4FÊ·>{0ÿø ^?Uõqî{qI)FsýGk¡ÿ>·©£sÓáüîoÑŒ-på¦èsåçÊ-¾ËáP$û÷}Ù²eH¥sú_ý÷ ÏA»vé¥ÉSÖáã½Ck¤ëy/0õ«ÊþnWÞK!kf»¼œÛ;ŽÂ.˜`÷nûžà°’^M Ⴧ0Üw)„¯ |î{P¸båàÊÏ•›ò‚+?WnݾK!LµCmË{)„ É+·gÿ~u/p­êê©´÷:O‘~Ö¹<éÝw‰gœáKDÜæ÷*†ÚÂý߯¿M»SNÖŠò¾½ë®Pï¥^ó–ºGýÌjÕ°ÞÎSÈ—;W@G§¨+¡·nÅ÷\&‘|öÙ„`HuoÓ!5«2$‘ø [Š+7…€+?WnñÝ®+cä—.Õ•÷»v©{~ÚC«Ó¼-´OWõ{$÷Æ‘h7®íÙRý>Ltqû0t-›´_ a-¶'߉ۉ#…pò¹ÑƒÛ¾ë³º"©ú‰ä»ÂzãlZo‘|7mœn‡+?WnÊ#®ü\¹uû.…0EÔµ-ï¥6$¯¼JœO? â‘o¼ôý÷FDÀ+~#`Ë Âî–›`Ôu²² s–.)GQö±pÉR4ÖÜ«Þß7±‰ºWç×M›0ÅRõýÊßG{S^tšsÅùôÓOG;è“H¾?ýÝf 7*X-Ù¼:ï—Ðç?;î> í @m›Dâ·#Þñrå¦8qåçÊ-¾ËáP${0åQ³£ŽÁÇÔ‹Ô³G WÎB{ëTõ»ö½·ÔïÚ³úô¦U|QÙßíÊ{)„}ÙMܨW;ŽÂÆÞÏ9^ùž,£ÂÉF°âú‘|—B¸bœ‚ÖŠä{Ð8#ñpåçÊMyÀ•Ÿ+·[¾K!L‘5[mË{)„ É'¯gÇcƒ¸ºó錓N4"^ñ[n¶p×ÈÈÀ¨Ö­­~é%Б£FA÷¼ÿtÿ¼yÐ:÷ß­’’¢4´gÏžøæË/¿Œ°D0guT+€µj{tÁuÅwÝ*õáÚ‡·ÆüMÔr{ KÐnS³úÝt»ãeKÞ#Ø'\¹)„\ù¹r‹ïv]#¿t©î¼ð?WahÓK†fu<Z²g'4òPh§£‡¾9á%h†óû &º¹=²ÖMØÆ/…°Vûï̫đB8qÜXÓ+ß“»ÂÉF°âúRóühËþ^1[õµ¸òså¦ÌáÊÏ•Û-ߥ¦Èš­¶å½†ä“W‰³íškA\o´º’—åé¿^…Ç+~¯xbÝŽéÜëׯÊÉG«3°?fÕAûŠ ¡ƒÿúWh®ó5\„v¬Óùcåˆw¹¦Íšc•ÝUkC³/~ šqhK(MJö©÷-¯{ fä«§gÒ÷¶*Wß¹rSžråçÊ-¾ó<áç–ïÏ=ÿ<º¾÷õéÐ'÷ƒî]ý 4mÃBè®%ßAÏ=û,èÄ /C½šÈþnWÞK!ìÕže;^í8RG1Â㯽ò=Q,)„ÜÁדBØ®?”w3öoMßßc'IlI®ü\¹)K¸òsåvËw)„)²f«my/…°!ù¤+qÖ­[¢Ã;¬Yñfõ4Ú#ÿóë=­®WXÈdž.~Ú´éÜ3fÌ×]\œžY³åFuÅ8ï^ÌOOO¯ð}´†éüÑÆŸè÷Ä}ë­·¡‹¾}φv½:ã]£º¼sÜU˜ÿÆXuo÷nÁxª6ñëzš(‚dÁ„+7YÕŸ+·øÎó„Ÿ[¾ÿ´T½mâ/½Õ•ÞÆukbS§ÚIiçhÇŽ¡Gu4%ʳJ°Æ‰ìïvå½Â“?™®tí8R'ã‚÷ëêòÝ­‘K!ìNdÉw)„?w'À†öJ¾s;@vpåçÊ-¾ÛU_ºTwÞK!¬ËwûÑí»»£­R%%77·ÔíÄÒÿœ9s°XûöícY¦Þc:ð–[*,çUC7¿WãNv;^sw?å ¹ÍʕЂž=¡/¿ý6´è÷ÕÐ<­}ÓÐŒ(÷îÿê\!nР–ÏÊÊ‚F›xÍm<^}û_?lÅP:7UWÚOnRÝ«¡y²hüž ‡på¦PsåçÊ-¾ÛueŒüÒ¥±æýi¹½±ÉÅëó m¯ðêDè˜y{ Oöj5}+·é‰ŽÏ6~)„uZózºG a͹Ônߣ S áhòæûh¾K!ì^o%šï^ÇëíqåçÊMùÅ•Ÿ+w¼¾K!L †Ú–÷R’wn%=xM“ÃAz‡soðö–-О4e ´^½z¾FÂ-~_¡bظ×ÜM+¶oWUOyUEÝC~Æ€‹0Ú «©§‹×qÚ)Õݽé5 –x²H4î÷«{·iÿ=÷˜Ø®°{2x ‰Æ¯aFvÁ•›ÌàÊÏ•[|—+¡ˆvô}÷@ª<7Ký'TfÓãÐÞôêÐ{z:⎛ ¦Od·+ï¥6drkÇ¡ÒRbtØ0Üò=l36¥þ3¾~ˆæ»¾ÚãÚÆ£ùîÚ† é˜+?WnJ;®ü\¹ãõ] aŠX0Ô¶¼ÿÿÿÿîjk†@IDATìw`ÕöÇII„Ыҋ Ò{“ªØQÁ‚" 6¬O}ö‚å 6ìÏÞP|ö‚‚"¡ˆ)Ò{DB/I $!¿÷¾wÏ/n6eËÌÜ{÷ÿ˜ïÞÙÙ¹÷s¾ç®9Ü™˜¼ÿþWÊ€ÿ €Q¤¦¦0ï‡àÿ¬O?Ìõ×_½ÿ… Wé=d1=ºÅ_L—F¼åwvv6x“¡[jÖöãïqp?Ú3V¬€6lÔÈï}·^ñ»5þpÏ[÷¿2qêßþ: ½©Sè¡C‡ «W¯†¶mÛZ¶lY¨-›’ømáuœ\¹)N\ù¹r‹ïòwíÿr ¤¿ëüñG¤Ê5<­põëPÚd~û8^V?¶:õû¯¡U«V¥CŒR™ïvå}ŒÂfÌ·&ŽÂfø[Ô(Üò½`RŒˆÞvI¾K!¬×·z/Éw·ú5å¼\ù¹rSÞqåçʪïRSÄ¢CmË{)„ É;·çèTµÂ~üÏ?Aš2r„!ÄþÃp‹ß¿óZ^q¯]»ðgvì}'©<´~éÒÐÃ'N@Ï?~ ºc¿Z!FÃÅWü."„ujâþâ‹/ðùuëÖAi¥wÎâåhO›¯4ó¯hgd¤C|þ½õê‹h_zÉ%P[6Ä_ÒJ-<ÁŽ“+7Ň+?WnñÝ®•1òË) 6ï÷íÛ‡.ë6l ­óØè±?Ô/ÔŽmSš»~öÇìÙ Ý›¶jÚ&XnÓÆíÔxlã—BØ)ç#<[‰#…p„Ƹüq·|/8l)„ FDo›|—B˜×¥0ä;· ÙÆ•Ÿ+·ø.…ðÿr ¤ï;)„i¦D‡Úö}'…°!yçVâyM]kZK&ôìi±ÿ0Üâ÷ïżV¸Ü_~ù%`F =œ‘Q,ÜþÉ“ñþÃ<}ø0tóNõ/ªåâÔÊp¥2J[öè÷¿š4 êÖ&\~·ÆãÕy‰û¾û•\<]—oÙz¢ªºF;¾fc´ãk)=¾e1Úm/„NúJÝ ‹6Ä_ÒH!5T®Ü®ü\¹Åw)„ÿ—Á~Ï7îvRfó¯S -Úª_°õìÚí^Ý»BO?ýth:u ¦md¾Û•÷R2ƒÜš8RbpÃ×w)„‹¨%»Éw)„eEØ’”ud˜”÷ÁþaìH§œ„+7…ž+?Wîp}—B˜"g·Ú–÷R’on%Î;îa…{ïÆÕ¬i±ÿ0Üâ÷ïżV¸Ü<ô`Ö¿ôtw³fЙ¿ýæyä•WÑŽIJ‚–/âñ´´4¼¿iÓ&(ݱ™ï¼ØéÂ&\~†âé) r¿ûÁxôûwA+|šx²ú%ljcêÚàÿR+Æ™GÔŠ¾§ƒv°³‚üžÚèSqå&S¸òsåßíZ#¿œÒ`ó~Þ6õ‹¶E¿ïB×·÷öæ©NqV”ïRbKÃ(Êw—º3î´\ù¹rSråçÊM¾K!Ìëä»my/…09§YÃMœIß}‡‘?xÕUо¥b Ëâb¡K|w®Q½:Ú:«»ïuë×í›n¾ª{.¿îqGÚ¸ÜZ´@×ïQÏßköe‡AÿèChßAƒ ¦nÂå7•'ØqËÝçbuWðÎg\ˆS?uƒÙ~:Íìùl9.Xßmá uœ\ù¹rS~påçÊM¾·l©îq±ýÐqìªQ©<ôû/ÕÓ¦¬‚vÇ:e}ªîe‚†Åî¾ÛÆ/…°!“-ÜÄ‘BØÃF¸¾K!fÀ ùX°¾K!lˆa #XßêθÓpåçÊM È•Ÿ+7ù.…°¬S.˜¬RâN¤_˜W]xHÚÏQ׌^ŸàGö{NÚãŽfB—$ª÷ÿܽÛï8]Hùu;Ò~Ãå®T^ýËê7å’1„Æ¥Kû ¥ÞοÐ>ž ‹‹ó{ß”F¸ü¦Œ?Üq˽xÇQt1g«Z鿽›™w}5Áò‡z^ÓçÊM¾påçÊ-¾Ûu­$ùå”vï®îe±öu7èäËžÁ©~¢žbÒy º§ÉÔwŸvªK#Î#óÝ®¼—B؈iSªT¤G aCŒ qáú.…pˆ6ìð`}—BØ0ã"N°¾GرçÊÏ•›‘+?Wnò] aY¦\0Y¥6ħ¾0ËøVþ6Ö¬ ²Í9jEðvŸž3t(ö?ýÊ+†«a8ÅoTƒéÕ«Žú}Ý:è2ßÝ¿é9¾OqÜ÷¼ßø®ñþjëV’á[ùmP^­W8¡î½¿b Þ_»eKÁSÑæê{°Ü»ÒÕ/9^úUÝMzì€ZFøé ‚å´Ó>Ï•›|àÊÏ•[|·keŒürJ)ïçÎ_ˆSÖ~h46Qý’‘úo´cÖLNüò3hûví ¶nˆ;5U a<”BØ—œš8RbhÃB˜ç ÁÎw)„ƒœH–¬ï–à„;I®¾˽sçN„úî ênðMó¶£½iÝ貕« 5«U…Núö+h¼ï¹Òh¸ –ßÀ¡G4$®Ü4®ü\¹ÅwžÿÐ[Ð÷NýÏÅ®_xztÏ6hóÖêq½ºuE»g·ÎPš/Õª©_¼a§E¿\#lÇ5ÒR2¹œš8RbhÃB˜ç ÁÎw)„ƒœH–¬ï–à„®Ü7®ü\¹ÅwžÿÐ[Ð÷w|€]—TMƒvïd÷]¡‰¯(•ùnWÞK!\T&{¼ß©‰#…°ÇÆEØÂv}aFh÷ÿ¼¨ù.…ðÿ‡(*_å{TÂÅ•Ÿ+7¥W~®Ü}—B˜"ÂCmË{)„ ÉK§'ã£@[E]3Xöì³ !,~Nñß‹yïV«\ƒz:&zFbY¿AöLW+ÅÓ/ÆþFÕŠ ßA7¸ú^÷è'ÆÀÍWÞþZqä[ÐÒkBisô·‰xÙ1gôëOÔ¼§÷M×¢øMw¤ããÊMqãÊÏ•[|ÎèÍÌÌ„µ¯þ[=øž»ï&«ýô´®}Ð÷ÑwÐ3«çû… ™ïv彆LB§&ކä0¤¶ë 3H[K<¬¨ù.…p‰¡³ú€¢|·*„ÁsåçÊM©Á•?Z¹¥¦Ì.\£Õ÷Âi÷ÚÆ/…p ‡Zö›8[|ω4y2ÆÙ©³ºË^§NÐ>ôØãÐr—_-Ó¬)ÔôM°ü¦stiÓCü÷ÛoCÛwìXìTU+÷[÷íÃq S*Bë'ÄC«eç@:ž=à{^0Q°‰ßCµ¢$î+ÕóûPw Oìs#ºHhÙº÷ù ¡‡öíµk#Ž/‰ßˆAº0®ÜJ®ü\¹Å÷èü‡Þ¬,õ÷H9ß=MÊUP·|õù'°¼q»žÐ~ÿæßÔs)¢]e¾Û•÷R2#ƒ8RbXÃB¸ˆÀ±;ؼ/âãÖî.‰[ ak­-và%ù^쇣àM®ü\¹)e¹òG+·”مk´ú^8mà^Ûø¥ôPËž`çßJðu—^ŠqÖLL„.ñ­(¶©‚v·ÁC»ôî ¥ã  mÚsFƒåÇà Ü;v £ª”¬®É9qíìÜ\¿Ñæed }зr?xÚ4´§/Q×oÚ´ mÒ;_ìݵ ûo½ãheßµÅhX¼±Ý÷pC*÷ÅÃF¢«Y¿©k‚ç|û!Ú§4kî´~.T~­ƒu°s®ÜB®ü\¹Åw»VÆÈ¯`µQóV84«ß]М_Ô/á*×< íj9{¡³f¨¿sÐ`°‘ùnWÞK!lȤ vâH!lˆa†!…p€Ù 6ïƒ<5‡…Ê-…°5Ö;ÐP}/öd¾É•Ÿ+7¥(Wþhç–B˜2Ü_£ÝwÚÀ–müRz¨eO¨‰3·"ÜbúLŒ÷²õ¼ÑåÙÇÑ^v\éÒ2eОš~ºjÝ:hÝzõ ¦lBå7eÜ4ŽU«ÔJÝ%½za×#q*îoÕWÏ žòúëØä7¡)<=kähjj*”ÛÆvßÃõ+\î!¯ÿ‚.?½A]ƒî´~.\~­ƒv s®Ü:®ü\¹Åw»VÆÈ¯`uøÈëqè”tµœÒí´,ø ºû3õwÎ_|‰öE©{[ Å™ïv彆LÆP'ކç†Âáùjއ׋yŸ —[ aó¼ eDáúJ&Ë•Ÿ+7å"Wþhç–B˜2Ü_£ÝwÚÀ–müRz¨eO¸‰“¯î.¼¢juŒ;1F­}í»ËðûÔ5O˜€÷/õÝM:ÆwœØB: —¿SiÙ5q¢z®ë׫!}»´òe\–ºv¸\ëÖ׿¦û_+c;w¤ÁæÊ.÷£3Õµâ×´UÏŸ®WQåY¤>xýùpù½§Óýqå¦8råçÊ-¾Ûµ2F~«ï½÷½ÿ½¡)CžPÍ;Ýö¼Z!N(•ƒö%çž}ûµ—ÕqQº•ùnWÞK!lÈD wâH!l†R‡çC¸y^oæ|*\n)„Íñ0œ‘„ë{8}™ø®ü\¹)¹òG;·”áþí¾ûÓ¶lã—B8ÐC-{ÂMœo¿R×b¼>òZŒ;'.Z«§º†p·ßhá µÓpùCíÇ­ãÇ=÷N½ñÉ1Ї’ÊùuuI¶zîÞSŸŽý½|wó¶Û2ŒWþp¹ß^¼Q>µšº[|·ºþy†Z>.¿–Á:Ø)Wn !W~®Üâ»]+cäW°ºÎwÏ™}ÎÆGË%C÷oQ÷LI*WíáW_з7tРAÐhÝÈ|·+ï¥6d&†;q¤6Ã@)„Ãó!ܼ¯7s>.·ÂæxÎHÂõ=œ¾Lü W~®Ü”ƒ\ù£[ aÊpvßýi[¶ñK!è¡–=‘&γ§ŸŽq×<zå­·já·ÓHùÃí·¨ÏÝí‹_wß]  RÔ¡ØÿÞ£Aïó$´IrhƒØXh]ß]¼Ç>„vNŽºffàÀhË]£yÝ5;Ü|ÿaÃaäKF¶º«u™ÝhÓÍÚ6nÚŒö-7ß-WÎÌãpùeñ†+7YÆ•Ÿ+·øn×Êù¬NÙ¨žF2Þl|äÜSÕ½j:tè€6×¼çÊMyc¿Âäœf4q¤vÖ@)„gQg‹4ï‹:¯éûÃå–BØtg‹_¸¾V{ÞåÊÏ•›2“+´sK!Lî¯Ñî»?m`Ë6~)„=Ô²'ÜÄÉËRמî»aÆ]õu?-t.]ûѧœ‚÷·nÛ]¹Y­´ÕªUËïsŸ|ŠvŽï¸ÃC/G{³ïøM›6¡½qíZèÚå+ ÷=ö(tô£JeEXV„‘¾Íœ9sðê—ÙJ-Uy³x…ºöjû&•OkÖÅq µš@Ó–¨8fSw+/ã{Ž¸ï´ÆˆióÝ«Àp妸råçÊ-¾Û¹"<ÁX×Ñ·²ç»÷ ùyèX.^Žž™}ñ¬Úô–ŸrÍ{®Üd¾müR“sš5ÜÄ‘BØã¤v'®ÏnÞ_Ñwmå'¾»ÞVZÝ{ãöíøÈAß5ÁñíÛ£tÁùEªØý¦q;XÞäÊ_÷ëo½‹hßó°ºö¼Ü€›ÑN¨Ý ï[މUy™>ávìåþ¡_t!ÔÔMIü¦Ž;Òqq妸qåçÊ-¾Û¹"|zÿ3aÝì™Ó ï¾÷>ôšáWAŸš­îM1¨y Ú§TM€ÜpÍ{®Üä¿müR“sš5ÜÄ‘BØã¤v'®ÏnÞ].¯TúYv6tiR"ôýTõ/¥eš4F;Ü)ÜáŽ?ÒÏqå–û§©êšßsÎ9¡®uõ в-ûA.øÚ£ÌVè'ãßš¾ –ßtŽPÇÇ•›âÄ•Ÿ+·ønçŠð˜1caÝ‹³¶BËdìVÉSO-¸aìÛhßÜ«´¨ ×¼çÊMy`¿Âäœf-)q¤öÆ )„½‰3õRRÞÓqѦÁrK!]Îë{tQçÓpåçÊMÎså·•[ aÊÜðÔVßã ü”müRz¨eOQ‰³b…º[ìY½{c\‡…vhÙÚÎw k×sÕŠQ÷+®Àþ‚w7ÆNƒ7Eñ{=ä… ¢ËQgŸ ˜PÖowžÈAû¼'Ÿ„1ÂïýP¦p‡:n§ŽçÊ.wŸç!ô«2“¡9ë~†ؽjË&\~[øŠ'WnŠW~®Üâ»+Â3fÌ€uCoZáZuϊ̵êyÁû>¾ûÇ<ù/è·Ý-¸áš÷\¹ÉÛø¥&ç4kQ‰#…°·ÆH!ìm¼‹Ê{oGá}oárK!ì½WNö®ïNŽA繸òså¦\ãÊo+·”¹á©­¾‡Gø)Ûø¥ôPËž’çÆaÃ0®Ú?N6+]–£®]]V¦4ÚK}ÏÍó=÷íqßÊå 7«»Îâ 7%ñ‡;䯾ú Í:t:´„ܹsçâ¸ë„6+]Z÷Ä h}ß]zÇWÏiýÕ·bߨQ#¼êÆ-îPÇ¡ëx®ü‘r_|»º›ôM·¨‰ï×D]Ë®ËÇPû”?ÔþL9ž+7ÅŸ+?WnñÝÎáôôtXW¥zMh½±¿‘•JóÔßC'Ü…våãêyÂëV,ñ;ŽkÞså&ómã—B˜œÓ¬%%ŽÂá$…pxqóêS%å½WãðºŸH¹¥öÚ1gú‹ÔwgF¡ï,\ù¹rS¦qå·•[ aÊÜðÔVßã ü”müRz¨eO°‰“’”„ñ-¨X Z>&Öo¼c|+Ä¿$©k[¿›>ï7lØÐï8ÓÁò‡:î;|+á_~úÓOЮݻû*{Ýz´=¦VÚ¶ùî¾½ÞwMöfß]»7¬\‰ãÖ¯] =kÐ è£ÿR×Ê ÂÆ-õP®ü‘rÿ¸ñ|;œ• ½´eE­>†Úy¤ü¡ögÊñ\¹)þ\ù¹r‹ïv®“oÕëª_ºe×hŽ]¥lƒîÛ²Ú¼u{h‡6­ ãßój×¼çÊ$øïÆ6~)„É9ÍlâH!šQR‡/¯6ï½—ÛýEÊ-…°Û¹sþH}wgTÞ•+?WnÊ,®ü¶sK!LšÚî{h´GÛÆ/…p ‡Zö›8“¿ÿã{ñêk £bÕŠð­YêšÕÜsößýÐCZ8Âí4XþPÏnïÞøÈ •ê_0o:tíã9êîÏ™ß|«ÚËÕݹ+>úÚ^mÜâöjü‘öÕ?RîUij¾ÿ´Y­ ßÕ­Z¤VxúùHù=¬ƒqå¦råçÊ-¾Û½"<è%õ‹Â~qêpݺv…¥íÛ«•`ò·(åš÷\¹)lã—B˜œÓ¬Á&Ž¡%…phñòúè`óÞëq¹Ý_¤ÜR»í;çÔwwFåÝY¹òså¦ÌâÊo;·”Á¡©í¾‡Fx´müRz¨eO¨‰óÜ…aœ.\ýÑ÷üÛ:uêh¤†Êl§œ\‡¾qü8tç‰<è›e “Ÿ-wɨ׷¸½æ·?®ü‘rï?ª® ~r–º[縵ý,ÈÊÊB;33Z©’º§€ßA‘òkzD]s妠qåçÊ-¾›¹"¼m›ºÖ·n]õ÷ùDúæoûð²u u¯™.'«{ÓÐûÁ*×¼çÊMya¿Âäœf 5q¤Î0)„ƒ‹“®£BÍ{]ãtºßH¹¥vÚoΩïތҽ^¸òså¦LâÊo*·”™î¨©¾»CxVÛø¥ôPËžPgÏ#£1ΊC/‡–9å-ãvªÓPùƒí7¾´z¾òßóðJÇÄà£ã²ÕŠYÅ#ÑýÔØ`Oéèqnq;:HOÆ•?Tîìlõ¼ðU«VÁ5kÖ@Ÿûv>´Âá-Ð kÕþ=;ÿDûÒ˯€~üáPS6¡ò›2îHÇÁ•›âÆ•Ÿ+·ønÖŠð÷¾{Ì ®î1óÛo‡EOŒ~ºb—º÷Äô-êÞwtìÞ\óž+·­ó] arN³†:q¤Î0)„ƒ‹“®£BÍ{]ãtºßP¹¥vÚ=ç Õw=£t¯W®ü\¹)“¸ò›Æ-…0e¤»jšïîÒžÝ6~)„=Ô²'ÔÄÙ;ì*Œ³ÊûïAc|+ŸZï@§%ñoذ½¬Y¡îî®ü¦qK!L鮚滻´g·?¦ÿþê6º,žîY²d úk×®§ýšÒY°üyÇÔ59nÇÐË4Q+@¦p„;Ž’øÓÒÔÝq7ø®lÚ¼9ºªQ³f¡]æüñö§ûV‚ÇÅ¡™ž®4#zôèQhbYuwÄö;¢íÕ¦$n¯Æ¡«®ü¡r§ù~á°zµº8¾ŽÊÿØÄò~Öåî\‡ö) ëA«U«ê÷¾)PùMw¤ãàÊMqãÊÏ•[|7óïÚ™³fÁšøºm y¹ê9»6¢]«†úÿF³&ê—Fäc¨Ê5ï¹rS~ØÆ/…09§YƒM)„U! …°æ„u¨û`óÞ¡îŒ9M¨ÜRc]D Õ÷ˆ:3ðÃ\ù¹rS rå7•[ aÊLwÔTßÝ¡ <«müòÓè@µì¡ŸL˜0ý_~ÁÐäòjŧkß¾h·MLTš žƒ[ýæ›Ñ¶}Cü©©©…¢Œ3ûw<ó,ô3ßµ+ߌvßJù¡GC;ù¶[¡ñmÛBMÝ”Ämê¸Wþp¹<ˆÐwï{&tíNИ$õœà){ÑÿökPS7áò›Ê츸rS|¸òsåßͺF˜üè5à,¼ÜÜp´\‹Óé-h挷•Îû:wöÏÐæ!>„kÞsåF’üwc¿Âäœf¥Ä‘BX aÍ©èi÷”÷Eýˆ§ƒñ°³p¹¥öÐ$º ×w†¢å”\ù¹rS’qå7•[ aÊLwÔTßÝ¡ <«müRz¨eOÁĹñª«0ŽC'B«Æ•†.=‘ ]â»ÆµA:hwîÚÚ÷쳡WµeS¿à¸¯½â ìjöÃÐÎñjE|¤ïÚ–…#¯ÃþŠ†ÆøVÎÑ0xS·ÁCwdh\ùâvÓ]ðaÉFuÏ€Õ©Ÿ9â‹Û'qŠßíq:}~®ÜG®ü\¹Åw3W„{ü X3îÛ_¡e+¨_ؾíý[Õ%hMZ´B{ìB/¼à|h°®yÏ•›òÂ6~)„É9ÍZ0q¤ö7D aÿxDK«`ÞG WINqK!\R¤Ízß)ßÍ¢ ~4\ù¹rSfpå7•[ aÊLwÔTßÝ¡ <«müRz¨eOQ‰S­BŒgz¹dhåÏ]t< ûïÏRzîÐËÑ~î7 ¶lŠâ§ñ÷éÐ/GmÝíæ»Fú÷º~}°ÿÝÏìX#®’¸é¸hU®üNq<¦~!rÿ¤H‘ןbEª8ÅoìßÉ•›BÀ•Ÿ+·ønæŠðøêï¨ ãÔ/èõVOËèÒ¹3,kß¾=Y‘rÍ{®Ü”,¶ñK!LÎiÖ¢G aeŒšÔ¥î‹Ê{—º3æ´NqK!lŒ¥A Ä)߃êÌÀƒ¸òså¦äÊo*·”™î¨©¾»CxVÛø¥ôPËž¢'uêTŒçÉ+®„Nð]û~öq´_<š ýäË/¡gœ©î&‹†znï:ßó€Ûøž}Æg`´EÝ4©©ïyÁ3ïiññ8¾žïÚé7bì…¾»K1Â@úÀ!å{à‘ѹ‡+¿ÓÜ7Oú ò왵 Ie|ÂдqšßPÌ€aqå¦@påçÊ-¾{»"¼uëV„¼~ýúz?Ý~8í7íƒ>ѯ¦ßûN7¸æ=WnÊÛø¥&ç4kQ‰#…°2F aÍ êR÷Eå½KÝsZ§¹¥6ÆÚbâ´ïÅvfà›\ù¹rS rå÷š[ aÊ8½êµïzi{·_ á@µì))q®?÷<Œké/³ ]‡ ¾üî»ZÆn§;vìÀG›6h}ä ©sæ(-ðác¾ö’ÿƒ÷¿MVÏUÞ´aÚ›6n‚nÞ¡VÄN®Qí¹K–@«T©5uS’年۩qqåwš{Ì/»aÉàSS M«$8e‘+çqšß•AºpR®ÜJ®ü\¹ÅwoW„ëÔkˆŸ1p ôý7ýŸ'ÿàô]ØS'õwQä2d‘+Ê5ï¹rSÙÆ/…09§YKJ)„¥Öœ¢®t_RÞ»Ò©'uš[ aL bNûD—F•Ÿ+7%W~¯¹¥¦ŒÓ«^û®—6°wÛø¥ôPËž’'ó»ï1®•k×B;ß{–qFÚéìÙ³qŠ{.ºª®X)U*Ö·B¼páBì?òò+Иrå åGwÍïp|¥Jê¹xh¼)Éwƒ‡îÈиò;ÍýÚ/[àGnšú…DüþßÑ^²btÿÁCО=餓 º6Nóëâµ_®Ü'®ü\¹ÅwoW„OiÝ!ß_½-4sá×Ð>¯~9تk_´/j¡~9„†‹®yÏ•›RÉ6~)„É9ÍZRâH!,…°æu¥û’òÞ•N 8©ÓÜR`jCpÚ÷ º4ê®ü\¹)ù¸ò{Í-…0eœ^õÚw½´½ÛÆ/…p ‡Zö””8‡ŸãJèÑCi'õÜ7-ƒ Ó÷ߟþéž{¡cËÄCïÚÝsÃÐrW ƒ&tí ÖMI¾G+7qqå—ûáGGè¦ÎP÷ ذn Út7ö¤ÚMÐŽ¯Ùš•­ž3ܸ”º6lѼ_°_÷&\~Ý㎴®Ü7®ü\¹ÅwoW„¯u B>qúE\rûsÑÞ÷ñÝо-ëA¿þô#¨Û®yÏ•›òÉ6~)„É9ÍZRâH!¬Ù —º/Éw—º5æ´\ùÃå–BØ˜Ô k áúVg~ˆ+?WnJA®ü^sK!L§W½ö]/m`ï¶ñK!è¡–=%%Îþ›nƸ*>ù/h¬%×À æƒ÷݇]9¯¿½µ|2ôì=ê®·U[žŠö ß]ŸÑˆâMI¾G1:иò‡Ëýòko"nùV†+^©~)’X¯•_ªäP+Á¿ßÝûssèj|¿Ã´5Âå×6`‡:æÊMáãÊÏ•[|÷vEx„ ùݯ} M¾ô)²š¹ø;è®O‚~þùçЋ.uzÃ5ï¹rSþØÆ/…09§YKJ)„5äR÷%ùîR·Æœ–+¸ÜR“ºa $\ßÃêÌÀqåçÊM)È•ßkn)„)ãôª×¾ë¥ ìÝ6~)„=ôtÏñãÇÑ_»ví £nT×ÈvîÒEíoÔzðAõ/x•_û7Ú¶nÎë×C¯¶`ô²IÐ1‡Õ]m»VV×¶¤ ¿ûG?5­Û¾0œö+¤Ük×­ƒ} „Æu½ Z®ûPèáw¯ƒ~8n4ôŒjÞ¡aÀ&R~ÂWn W~®Üâ»·+Â7nDÈÛõTß÷åú©¿'Ký¥ž»}%Þß¿UÝ[¢ï€³ÐNýQ=•„ürJ¹æ=WnÊÛø¥&ç4©ÂRÿ/õRSS5e ÞnmûÂt*Z‘rK!ì”Þž'Rß½­ó½qåçÊMÄ•ßkn)„)ãôª×¾ë¥ ìÝ6~)„=Ô²§vÍšè÷¤ÌLhv¼º›òŠýûÑnï{¿Û u-G—^½°¿wïÞК¾÷ÑðpS%E=îì~ýÐëG_«çÖ‰½{±kÉwBŸÝªž{ºeß>´—mØM(]š\¶,ôÇŸ†¶nÝmÛ¾0œŽ?W~§¹¯¹AÝCà›9+`Ñeg¨»­¿ñÂ3N[æÈùœæwdPœ„+7…–+?WnñÝÛáŒã'òŽ„¶LÉöîÑ Ú¹S'hûöêyÃh¸¸áš÷\¹)•lã—B˜œÓ¬RK!¬9µtoÛ¦SArš[ a§œq÷½ñþ;Ÿ~ -jS¿¨ã¢m?Wnò‘+¿[ÜöªkľZ«î2zÏêõü]½z5´“ïy’U«úß½|q[Ýâw{Ü‘žŸ+7Å+?WnñÝ™á¹sç"”]w4冡¿xZ-[=5dúDõtŽš5ÕS<ð¦Æ ×¼çÊM©f¿Âäœf-˜8Rk6Ä£î úîQ·ÆtÕß-n)„IíBâ–ï…vfàN®ü\¹)¹ò;Å-…0e’ê”ïvÐŽÒ6~)„=Ô²§`âûyÆ‘½~=4ù†ë]×¥¨•ç¾kz§úV ‹êtã8uÍÊU/(Ý~ìÝu@ݵ¶¡ïywÇrs±ÿ1ß5.WYè) òzPîäÊMVrå”;=]] ü믿"”+W­‚Î_²:cÁ2húö ÐÄ ¾k…cÔs¿ÇŽV¿äuã xßëM¤ü^שþ¸rSü¸òsåßYÎñÝ{%Á÷ŽFãÔ÷<Å7sã|¼<ôɽÐûîþ'ôÁûî¦C´(×¼çÊMIf¿Âäœf-˜8Rk6Ä£î úîQ·ÆtÕ?Rn)„Iá©ï!ufàÁ\ù¹rS råwŠ[ aÊ$;Ô)ßí  ¥müRz¨eOÁÄIûŒ£t£†Ðľ}]W·V­pþêýíyçл|šç[:øøh—К8@ý‹'ÿÝdg«»ÕÒs†7oÞŒ·ºwï­T©ð»Øä§óE»rå&_¹òGÊýû–­aËÖm¡åÛŸ ­y 4¾V¥5C­Ÿm±ûgèÔᅥêÚDʯkÜ‘öË•›âÆ•Ÿ+·øîÌŠ0űéiêû>½Óì:qL=?¸Ô_j…8wû ìß÷ûõþ õ‹<ú¼×Ê5ï¹rS~ÙÆ/…09§Y &Žš ñ¨û‚¾{Ô­1Ýpå”[ acR8¤Dê{Hx0W~®Ü”‚\ùæ–B˜2ÊluÚw³iGg¿Âz²gïZÜC‡¡¿Q£FASSS¡î½š|“Ú_º^]´ÝÚÔ¨X§þ©lôêìãÐ×ǃ6­V”RFF»ôÉ'AÚØ6q„Û™ˆïj¾‡Í™¾{ <ë,œ¢ÚбФVgBó²ÕµûÛê†vÖ±L¨îø™ïºý ·ñ]|7wlüœÓù~íØw†o^y ÚÏ÷TŽÞ=º¢Ý¥sgh»ví º7Nóëæ ¶®ÜÛø¥&çyË•xä5ÃÉOÔi~Oí@'\¹)t\ù¹r‹ïÁýÿœ¥ê:ç^pB–’ žÒÅ÷˽ӻwÁþÎÔ/ùZ´hvYßß{gÓ”kÞså¦ü³_ arN³J!Üÿ04Ûäx÷¶}a8®üNsK!ìtfºs>§}wg”î•+?WnÊ$®üÁrK!L™¬ïÑAHa¿ÂjÙÓ·U+ô;éñ' {Û©çõ^|î¹h/Zá»V¤ˆÑ=zïœ×¬tIZ´~²º°¾ï¹Ä‡}Ç%wïŽ÷¿™2ª{cÛÄq*^\¹)~\ùæþfâwée—]­~ý[в ýŸ;ytÙØßêÐ|èä¯?ƒz½qšßëñ‡ÛWnŠW~®Üâ{pÿÀ?z†º‡Ë•§–CÈšÔP·QülU®yÏ•›òÔ6~)„É9Í*…ppÿÃÐl“ãÝÛö…át¸ò;Í-…°Ó™éÎùœöÝQºwV®ü\¹)“¸òË-…0eJth°¾Gm …müRzèÊž_~ùç2h´WguÍG—¾ênÑ¿ôöÿòZÙ™µs'Ú^qô¤Ö­¡“fÍ‚Ò&{zîðÁGÇ®Š>=R½:tÓ¦MÐÍ›ÕÝ7mØ€v%ßJñÕ×_vùò塺6¶M§âÄ•›âÇ•ß-îÌÌL„¶koõK{«ž†vÙÓ¯…îøW_hæ‘ÃP]·øuñÛ/WnŠW~®ÜÜ}¯]ç$„à£>„ö뫾).?n<‚—‡³r¡—¶¬HoE…rÍ{®Ü”´¶ñK!Lι¬R`Û&Nñ4Á¿Ë•›"Ä•ß-n)„)³ÌT·|7“6pT\ù¹rSpå—BX~éGs€“Ú6ߥö8;O®Z=Þ£þp»ïÚÝOÂ~u¥o©RU+ª<#ë8ö—IL„6½ý6èM-N…f¯\ M­V‚ѰpcÛÄq*Ä\¹)~\ù½â~ð±'ê×þó-tö×ã¡-OUw%¼V¯ø½æ*©?®Ü®ü\¹¹ûžœ¢þŽ+SE­ ì¥~ øÚo"4ÍT÷ryá¬Úª¨R®yÏ•›’×6~)„É9T áÂmÛÄ)œ"ô½\¹)R\ù½â–B˜2Í õÊw3hGÁ•Ÿ+7eW~)„eE˜æ'µm¾K!ìqv.˜¯îÖz“ïnÐÔs‡îÛƒ‘ü§J5è}{¡gûV‚¯)§®á=ïðAìéþ ½¸jûƶ‰ãT¼¹rSü¸ò{Í}ý„ÅùØ‹Ú@«$Å‘ZÔk~-…tÊ•›BÁ•Ÿ+7wßëÖ«k{)4>IÝ :í›±h¿ü¶ºvxÔ•£m®yÏ•›ò×6~)„É9T áÂmÛÄ)œ"ô½\¹)R\ù½æ–B˜2N¯zí»^ÚÀÞ¹òså¦ àÊ/…°¬ÓशÍw)„5eç­#F çß}ý1]Ý=~J³!'û‹‰…öIP×ËËC»ÕÞÝÐÌãêb4,ÞØ6qœ 5WnŠW~¯¹ŸŸ§~q2 ‘Z‘8­†ú>!¼V¯ù½æ+ª?®Ü®ü\¹¹ûÞªU+„`OÙ“¡ÉCÇAOWwƒÉüì^´Ûœ¬®%¦çºÇÄÄ`¿í®yÏ•›òÕ6~)„É9U aÿ€Û6qüG~‹+7EŒ+¿×ÜRSÆéU¯}×KØ;W~®Ü”\ù¥–ašœÔ¶ù.…°æìlV¹2F°ù ºö÷›¯¿Fû£'ÕÝ^¯Zvßsëåä •­VŒ×5¨öü+ ¶nl›8NÅ™+7Å+¿×ÜŸ­Rß/ÔµÁg5Q+Ãäƒ×ê5¿×|EõÇ•›âÁ•Ÿ+7wß{ö쉬ذZãiÐã»6Cý±šµl24áÐ6访þ„Ú¾áš÷\¹)_mã—B˜œÓ¤R«ÀÛ6qœJ®Ü?®ü^sK!L§W½ö]/m`ï\ù¹rSpå—BXV„ipRÛæ{LÿþýÕE§š]Z²d FЮ];Í#ñ¶ûŒõëÑáú#êáVUÕ]£c°ÿ˜o%833í£>ÍÌÈ@;×·BܰI´Ë–Uw¡Fâ Wÿ¹rSjrå÷šûà1õÜòô,õ‹’ 1Y° Ã÷=rØ÷ýÓ ~}ì'‹\Q¯ù]ã¤\¹)T\ù¹rG«ï³çÌÚIuê@4¨-¸!ß3Ž«ïßã™é8$Á÷4”” hWª¨®®âû… ­ÇÅÏíïzò7ùo¿Âäœ&•BXÞ¶‰ãTºp妸qå÷š[ aÊ8½êµïzi{çÊÏ•›2 Úø¥&g‹×hó½xÚüw¹rSlã—ŸF“s^ë‰èqï%êùrƒçÍC{êäIÐø¶m½‘Öþlû)…SÁâÊMñãÊï÷<ß÷È×ßNDˆ-[ ]½ZÝkà ïnó•ê6Åþ¸ê¡û©kÔöùÞ¯PA­TàM6nñ»0TGOÉ•›‚È•Ÿ+w´ù¾m›º†÷´ŽÝ€v숺÷¾ݻÐ._¾<ô„ïw–§uíöØW߃ö=¥:”ŽC#Š7\óž+7¥²müR“s^«Â~·mâø >‚Wn W~·¸¥¦Ì2SÝòÝLÚÀQqåçÊM-üR“£Ái´ømþQ\¹)¶ñK!LÎy¬'ލkESÏ•2ûŒ uútGbFw¶M§¢Æ•›âÇ•ß-îŸRÕ÷Ç…Aˆ“ϺšÔ¬;´L•“(ôÐŒOï†>sÛÐ+.¿Ìï}·nñ»5^§ÎË•›âÇ•Ÿ+w´ùþþéþwÔ/÷âuA»ãÑ¥Ð[ƾýd¥Z)^þÜp´›3ÊmÃ5ï¹rS~ÛÆ/…09ç±J!ìpÛ&ŽÿèÃoq妈qåw‹[ aÊ,3Õ-ßͤ W~®Ü”ÑÂ/…09œF‹ïÁÑæÅ•›"`¿Âäœfµ-qœW~®Ü”?\ùÝæÞ¼y3B|ú€³T¨Û†&õ¸ šù›º†¸c¶º†ø›O'¨ã<ÚºÍïFÈÝpå¦@qåçÊm¾_|Ù•@šWº4¹ãùдWÔ/jþñÈ´»êL¨ø.OB"0ÛØ–÷R’ ¶%ŽÓaãÊÏ•›ò‡+¿ÛÜRS†™¥nûnmàh¸òså¦ ˆ~)„ÉÑà4Z|Ž6ÿ(®ÜÛø¥&ç4«m‰ãt¸¸òså¦üáÊï5÷õ·ü!ÿ|Úhή ÐôƒûÈ OÕk~OáŠéŒ+7…„+?WnS}ß½{7†6hð%Ðy¿üLC-V+VUw}®xý8.¾FChÖNõ}÷íhÿ¾nT|—a$³my/…°! j[â86®ü\¹)¸ò{Í-…0eœ^õÚw½´½såçÊM`¿Â䌻jšïîÒæŸ+7EÀ6~)„É9Íj[â8.®ü\¹)¸òëâ¾ó…úÓÏ<zA‹Êd…§ª‹ßSÈB:ãÊM¡àÊÏ•ÛTß'LP÷D¸å¡±âÕC΃¾øìS4d?¸z/ÚyºfâëÐäšõ¡± ;CsÓÔ½¾îb´'Müššš å¶áš÷\¹)¿mã—B˜œÓ¬¶%ŽÓáâÊÏ•›ò‡+¿.n)„)óô¨.ßõÐöÊ•Ÿ+7e€iüR“3îªi¾»K›v®ÜÛø¥&ç4«m‰ãt¸¸òså¦üáʯ‹û×?3ú•iÇ ×w¨BVxªºø=…,¤3®Ü ®ü\¹Mõý²aWch?ç6…öoèªÅó¡ã«AÇ/Ûí|RÊ`è@IDATtÈ©¡´Y¼x1^NŸ®žù‡Üù²ÒØj±EÚtì¿ïeuwè—«àámÕs}O¯_žNí§ÙÙÙhϘ1ºp‘Z!¾ù¦QhW®\Ùïx·⻬»c&žß¶¼—BØ,²-qœW~®Ü”?\ùMá–B˜2Ñ5Åwoh{áÊÏ•›2 (~)„)BÑ©Eù´ùT\¹)¶ñK!LÎiVÛÇépqåçÊMùÕßîWì…]O.m_»,Y㪚Âï*d!'çÊM¡àÊÏ•»$߯¼z$IÍjMé2ºûÍk¡7Üv'ôé/‚Ú¶ßeEضœub¼¶å½ÂN¸îÀ9lKýNÁ•Ÿ+7™Ï•ßn)„)½QS|÷†6°®ü\¹)Šâ—B˜"Z”ïÑI›OÅ•›"`¿Âäœfµ-qœW~®Ü”?\ùMá~3u9¬øsÓ:hÒÁ-ÐÅËWAwîT׿ÿÖkh7kÖ éÆþH9BýØÆ/…09§YmK§ÃÅ•Ÿ+7åW~]ÜRSæéQ]¾ë¡ ì•+´sK!˜ëÿÛí¾N¿—+?WnrÞ6~)„É9Íj[â8.®ü\¹)¸ò›Âý¯±ÏÀŠgßž½èÜÐ÷_VûÉ'§Õ~§¹J:WnŠ W~[¸—/WÏß»_ÝÕ¹_ŸÞd]¡š––†ýš«çÿÖý‹ßq‡>¹íjêùä«|×ûÅ [|wË®ü\¹)lã—B˜œÓ¬¶%ŽÓáâÊÏ•›ò‡+¿)ÜRS&z£¦øî m`/\ùmá–B80g#Ùc‹ï‘0÷Y®ü\¹)lã—B˜œÓ¬¶%ŽÓáâÊÏ•›ò‡+¿iÜO|³–œÙI]ëGwu%ŸœVÓøæ+ê|\¹)\ùmáu«º»ó»o¿Ëö¤í‚¦¤¤…~úùLõ½1òŠK°?±vSh¬ï9À‰õZ¡½ý…K¡¹9êùäh0ØØâ»[VpåçÊMyd¿Âäœfµ-qœW~®Ü”?\ùMã–B˜2Ò]5ÍwwiÏΕßn)„s6’=¶ø cqŸåÊÏ•›rÁ6~)„É9Íj[â8.®ü\¹)¸ò›Æýݺð$7/zaóÂW€È·HÕ4þHy‚ýƒîÎP+ºã—ªkˆË–‰Áþ ÆAõÝzòTõüßiÓgbÿŽ?~‡>øÐƒÐÇ}í[|wË®ü\¹)lã—B˜œÓ¬¶%ŽÓáâÊÏ•›ò‡+¿iÜRSFº«¦ùî.màÙ¹òÛÂ-…p`ÎF²Çß#a,î³\ù¹rS.ØÆ/…09§YmK§ÃÅ•Ÿ+7åW~Ó¸ï8 Kæý™½µsU²È5ßÈBNÊ•›BÁ•ßtî}ûöÁ¢º ›@ë<>zøík ×ßõ4«N;èð¶• -ª©ç£Q̦W¯^x÷Ûo¿…V®\¹˜££ç-Ó}w;Ò\ù¹rS>ÙÆ/…09§YmK§ÃÅ•Ÿ+7åW~Ó¸¥¦ŒtWMóÝ]ÚÀ³så7[ áÀ\ubé¾;ÁXÜ9¸òså¦\°_ arN³Ú–8N‡‹+?WnÊ®ü¦qïJW×þ½ôëXóDŸjÐÕ«WCW­ZíÖ­´AƒÐp7¦ñ‡Ëêç¸rSœ¸ò›ÎýÅ_À¢Ûžûš\ù¹rÛê»Âäœf•‰3¤¦¦jvÂÛîÅwñÝÛŒ+¼7)„ ‹Ó{e¾Ë|w:§œ8ŸÂND1ð2ße¾fEôï±-ï¥6$'mK§ÃÆ•Ÿ+7åW~]Ü'Nœ@è¿üòKèŠUjÅwá’hÿêÓÌÝên±•Nn‚ýÙÇAï¾ù:èCÜ w£‹?Üñ:õ9®Ü?®ü^s7jÖ!ïÙS]›ûÁ;o…ꈛïÀþ/ç®Vèq94©IhƤ§¡ÿ8«5ôî;Õ 1Al¼æbHž•›‚Ë•Ÿ+·­¾K!LÎiV™8ò/‡šSPK÷\ó^·ÂZÒüÿ;Õåûÿ@ó ®ü^sK!¬9Ñ}Ý{í»Ôù£àÊÏ•›œ·_ arN³Ú–8N‡‹+?WnÊ®üº¸³sÔµÀå“+À‚r.„&6U+?ñ5£_]]|tµzhí“°ÖÔÉÐH7ºø#w¤ŸçÊMqãÊïwzz:B]¥zMhR¥êÐE³¦B7VóÿnÆ/SÏ^·ó výåCèÜÙjÞÿ6wÚ5Ní Ý»n4#Cõ“€vI¯øK‡×ïså¦8såçÊm«ïR“sšU&ެkNA-ÝsÍ{]ÜRkIóÿïT—ïÿ?Í/¸ò{Å-…°æ/нW¾èÖ˜&W~®Ü”x¶ñK!LÎiVÛÇépqåçÊMùÕ_7÷Ÿþ zõÍiq6´lï‘Êš¹ÐÍw«ks}+ÉêÍÈ·ºù#'ï \¹)Z\ù½âþî»ïê×y(´öŠñЧÆýp¹Z ¾ºzpï屿¨ÍÏ?ÿŒ·æÎûzÓ¨¡•*©Ï£QÌÆ+þb† å-®Ül®ü\¹mõ] arN³ÊÄ‘aÍ)¨¥{®y¯›[ a-é^J·ïz¨ó{åÊï·Âù¹fÂ+¯|7µ°1påçÊM9`¿Âäœfµ-qœW~®Ü”?\ùMã¾õÎ{`ÉÇ?ü -“ýèÙ¡g <êÔÆ4~§¸J:WnŠ W~¯¸GÝz;BýÕ_å O¿ º÷Cu—ç¡—©»A¿z÷p²ÄõŠß˜:áÊM!âÊÏ•ÛVߥ&ç4«LYÖœ‚Zºçš÷¦qK!ìMú›æ»7Ôù½på÷Š[ áü\3á•W¾›ÀZظòs妰_ arN³Ú–8N‡‹+?WnÊ®ü¦r?ýö'°fåNuWØ \GV9ª¦ò; YÈɸrS(¸ò‡Êµëغô·…ÐÒ¥KS( Õ“4QûÏVÏùNjÚ íÜôýÐ=ã·Þ¿WçÑ6T~†åz7\¹)°\ù¹rÛê»Âäœf•‰#+šSPK÷\óÞTn)„ݦúî.uþÙ¹ò‡Ê-…p~ÎØü*Tßmf-lì\ù¹rSØÆ/…09§YmK§ÃÅ•Ÿ+7åW~S¹÷d¨ç ?;w,zæŒZd•£j*¿£…œŒ+7…‚+¨Ü?üðBvÅMÿ„öïÞúÅÇêîÏOÒ6ÂË1/¾]ùŋи„$h|#µ²œ¡ŽÖ»%ö¿øÜÓP·7¡ò»=¯ÎÏ•›âË•Ÿ+·­¾K!LÎiV™8²"¬9µtÏ5ïMå–BØÝi`ªïîRçŸ+¨ÜRççŒÍ¯BõÝfÖÂÆÎ•Ÿ+7å€mü1ýû÷Ï£ÁëÔ%K– ûvíÚ醶¾…Ÿ§ÿâ»ø®íK§˜Ž×ì9†w›WUwމ)æà0Þâš÷\¹)E¸ò‡Ê½~ÃF„,í¨/rûñ¢õ©§@ãÊ&CwQ×WHˆC»Fyÿkˆ333±ÿ~õù=û”æùžÞºU+u¾8õy4\Ø„Êï´œ’+7›+?Wn[}—B˜œÓ¬2q–Ànÿ"¾‹ïš¿z í^ áBÃñN™ï2߃I")„ƒ‰’ùÇÈ|—ùn~–:?BÛò^~í|„uFÛ~Jd1âÊÏ•›R+¿éÜÎÜ‹®i[Z¯bèvÉ¢…Д“›Bóª5‚ÆTo¯Ùš»l"ôá«Ï…ÞtÃõÐP7\óž+7å7þ{î{èãž{ºuËïГO>™Bâ§çª_d »ôBìO¨VÛ 4±±ÒmϪ÷óòŒxè‡Ca n¾S ¸rsçßíú»N aš±šU&Ž]Ç©tßÅw§r)œóH!NÔÂÿŒÌw^ó] a5W¸æ=Wnú†äÊÏ•ÛVߥ&ç4«L^ Qº‰ïâ;å‚]¶|9ºíÕ§4åÜ»¡eÛ_à7œÌ•ÓÐn¾SiêäoýÞµÁ5ï¹rS~pã?µZÁݸ}BÐ¥usè/©?@÷dæ@?\z_Z=°û²æênìógMÇþ§*ýišº[ô_Û¶`ÿ¨Õ5Â/Œ{mS7Ü|'¸rsçßíú»N aš±šU&Ž]Ç©tßÅw§r)œóH!NÔÂÿŒÌw^ó] a5W¸æ=Wnú†äÊÏ•ÛVߥ&ç4«L^ Qº‰ïâ;å‚ záeWb ¶‚–ü/èv†Ï:tÃ5ï¹rS¾pá?vLÍ“ )•€^¦~[hJyµÒ;lÄuhç5î¥ç·¬žˆvI›ýû÷ãÜÜ\hµjÕJúˆÖ÷¹ø^0È\¹)\ù¹rÛê»Âäœf•‰#‘æÔÒ=×¼7•[ aw§©¾»Kv.üRç{þ¿W\|÷§æËMqßS)¬Ô6ߥ6$=mK§ÃÆ•Ÿ+7åW~Ó¹'üçSXtËCc 3'ªvÛÓZu©éüÁóa®Ü.ü?ü ®ñ ºv÷H¦Z!®1Tͧ½¯EHïÙA¡‰jåâ{A¹rS¸òså¶Õw)„É9Í*GV„5§ –î¹æ½éÜR»3L÷Ýêü³rá—B8ßóÿ½ââ»?5_nŠƒø.+” &«†¸Ãõ ƒÂÏ•Ÿ+·ønÇ?ü<¹rS ¸òså¶Õw)„É9Í*G aÍ)¨¥{®yo*w^^ò {u-ä¶ÒuÐN:ï>hæ²)ÐVçAøæsh¨SùCåõx®Ü']ü<ü†ðÎ’ƒÐØíK¡SϮӺÚã—€¶«]Zð¹ÙüñöOŸ1:iÊ4èÁƒês_ö´+V¬¥.nê_·råçÊMùÆ•Ÿ+·­¾K!LÎiV™8RkNA-ÝsÍ{S¹¥vw˜ê»»Ôùg×Å/…p¾:^éò]ëßûäÊM1àÊÏ•ÛVߥ&ç4«L)„5§ –î¹æ½-ÜÏ<ÿ"òâñg”fÞ‹vVfzDùb D…|˜+7…BëNÝ0„ý]o†–®PMµßQ× ?ôÅ"´‡·­­^®4Ô©.n§Æéy¸òså¦|áÊÏ•ÛVߥ&ç4«L)„5§ –î¹æ½-ÜR;;-lñÝYêü³éâ—B8߯tù®ƒõï}rå¦påçÊm«ïR“sšU&ŽšSPK÷\óÞ6î·~X€üˆ©¨ž|]·zå‹müÁþíÃ\¹)‘ò¯[·§Zî{Îõ¥CÔ]Íéü5;[ÝÕ9±lÞj4n¥ß!G&©»AßÚ_ÝEú{ÿé÷¾SH¹‡®ópåçÊMyÆ•Ÿ+·­¾K!LÎiV™8RkNA-ÝsÍ{Û¸¥vfzØæ»3Ôùg‰”_ áüXÚô*RßmbýûX¹rS ¸òså¶Õw)„É9Í*G aÍ)¨¥{®yo÷š=Ç“×ÞÝC]cnÒØÆ.gÁÏqå¦8DÊÿ¯'ÇàTcŸ}ºp®z>ð©§žJ]øé¤…jùŠÁêy×e|¿hˆkÐ Ç%4VšöÚÕhØ·š”¤VÑp`)·CÐz ®ü\¹)Ù¸òså¶Õw)„É9Í*G aÍ)¨¥{®yo·ÂÎLÛ|w†:ÿ,‘òK!œK›^Eê»M¬+WnŠW~®Ü¶ú.…09§YeâH!¬9µtÏ5ïmã>t,ù1zfôųjG”/¶ñGû·så¦DÊß©gœjk5uèZÛg¢½|¡z®õÞÌ´éyÀeâbоò´ ÐEsÔñ?MSÏþaªzðïë×àý#®…¾ñÚ+P§6‘r;5]çáÊÏ•›òŒ+?Wn[}—B˜œÓ¬2q¤Öœ‚Zºçš÷¶qK!ìÌô°Íwg¨óÏ)¿Âù±´éU¤¾ÛÄú÷±rå¦påçÊm«ïR“sšU&ŽšSPK÷\óÞVî›'ý…ÛÚ\ù¹rS~råçÊm«ïR“sšU&ŽšSPK÷\óÞVn)„#›&¶úuþ§#å—B8?–6½ŠÔw›Xÿ>V®Ü®ü\¹mõ] arN³ÊÄ‘BXs jéžkޛνcÇäâE‹ «V­†~<]µÓ·oD{ûæµÐäju Íªç /œ7í¢6¦ó5îH÷s妸…Ë?k–º;ô¥7߇SU¸î}è‰cj%÷ÏÇÕµÃYê®æÔŸ).·)ãt\ù¹rS¾påçÊm«ïR“sšU&ŽšSPK÷\óÞtn)„Ý™¦ûîuþYÃå—B8?†6¾ ×wYÿ>f®Ü®ü\¹mõ] arN³ÊÄ‘BXs jéžkÞ›Î]½–Zá=Q©.ò"æäÖÐÒ5›@ãk6†&ÔRímvA{÷ÎíÐ Ô]zÑ(dc:!CvdWn ñï9¨Vn+UR×òΜúR¨>ñÌ‹ØÿÌû_@“»…&5é =ºàsèEõÕ5ê¯<ÿ,Ú¦lˆ;55Õ”!y:®ü\¹)¹¸òså¶Õw)„É9Í*G aÍ)¨¥{®yo:·ÂîLÓ}w‡:ÿ¬Ä/…p~L8¼"ß¹ýCWnÊi®ü\¹mõ] arN³ÊÄ‘BXs jéžkޛνÿ~äC—ÓûA3ö†&õ½J›ŒÏïÅ˧nº :ìŠËé­bÕtþbÁ›\¹)dÄ?óguÍo•&mðÖoŽƒöêÙ“…NX~ºvw¦ÚÿÛgгÕççÍž‰v¹õ¡éi@×®\­__íGCㆸ¹‚r®ü\¹ÅwžÏÚê»Âäœf•/Lž_â»ø®ù«§Ðî¥.4,ï”ù®æ»Â§’U'àš÷\¹)9¹òså¶Õw)„É9Í*G "Í)¨¥{®yo÷]÷=ˆüÿÍh|‡‹¡³WA'~þh°Ûøƒå*é8®Ü—Ž;âå¶ŒhÙ Qo}utüÔ…J—ª•à+ZWB»_Ãòê¸"¶‹/Æ;3fþ ½áúë %]«Žƒ<Øp÷+?WnšR\ù¹rÛê»Âäœf•‰#…°æÔÒ=×¼·[ ag¦‡m¾;C)„åfYùÙý¯¸Ïw®ü\¹iFÛÆ/…09§YmK§ÃÅ•Ÿ+7åW~[¹˜ö3¬»y´º¦sËÜïÉÊÔVþ 9˜+7…¢Q£Fxy¤é@hÅ·B|ó$t@§–ПQמ«ucì²zÃÝw®ü\¹i²råçÊm«ïR“sšU&ެkNA-ÝsÍ{[¹¥ŽlšØê{dÔùŸ–BXV„ó³!ú_qŸï\ù¹rÓŒ¶_ arN³Ú–8N‡‹+?WnÊ®ü¶sß:ù/X8v@-hùøX²4(µ?(ÈBŠ6îÓÚ¶å”IßAëÔ©Suþ®òRÐH>ÿ¥/Èó¿¯6Ýy*ÚÙÇCãââüÞ·µm¾‡êW~®Ü”\ù¹rÛê»Âäœf•‰#+šSPK÷\óÞvn)„Û.¶û^Z á‚)¼m¾NYô^®ü\¹)¸òså¶Õw)„É9Í*G aÍ)¨¥{®yo;÷S³w#_5W+|§TM)lç öoG ÷o¿ýªþ\ mÖ¨>tÁ/Ó¡7S7Á®Ët†–ɈfQûË7ë‚öÑ\H©~ Ô]¢¿út‚Úaù6Z|×®ü\¹)O¸òså¶Õw)„É9Í*G aÍ)¨¥{®yo;·ÂáMÛ}'j)„)Ái´ømàQ\ù¹rSpåçÊm«ïR“sšU&ŽšSPK÷\óÞvî ËÕs^k%—AÞ”ôœ×‚Ée;Až`ÛÑÂýÔÓOù…雡qÿ„¾tϵЖ§Ÿ¿LåIëšeÑ~ïÎ!ÐÔTuÓ¨;w¢=cÆ èSÕŠò®4õ‹ƒÏ&|€ýU«V…Úº‰ßÃ?W~®Ü”'\ù¹rÛê»Âäœf•‰#…°æÔÒ=×¼·[ áð¦‹í¾µÂ‰à4Z|Ž6ð(®ü\¹)¸òså¶Õw)„É9Í*G aÍ)¨¥{®yo+wNNòäýŸA/_ M>¼úÛ2ÕÞ²i#Ú_~ú1´C‡PÚØÊOãW£…»[õ}½íupÂI-’Ïœ}lòZèð6•¡5Ê—†F ?`BØpå¦qåçÊ-¾óü{ÖVߥ&ç4«|aòüâßÅwÍ_=!u/…pHá 88Zæ»ÂÖ»#Z|/²˜7¹òså¦TàÊÏ•ÛVߥ&ç4«L)ˆ4§ –î¹æ½-ÜO=÷<òâåW^…¦ý¥®M9¹ Ú1Õ•ÆVo¤ÚØ–*Uý¯9xµjÉBß±…ßÔ‘·Lã^¿~= ~] Vø¯¾êÊ  K—‰Çq ž^‰S+¾éÓ^GûÊÓ*@Ÿó”6¦ñÓ¸ÜV®ÜW®ü\¹ÅwžÏÚê»Âäœf•/Lž_â»ø®ù«§Øî¥.68á.´7¬Z ­U«Ô4~ ʃ Wn -W~®Üâ;Ï¿gmõ] arN³Ê&Ï/ñ]|×üÕSl÷Ržß4m¾K!²…a}À4߈àC\ù¹rSªpåçÊm«ïR“sšU&ŽDšSPK÷\óÞVîK†]ƒ<™»~´Ü/@Ó?¾úâÝ#¡—  -jc+Q<Áî7»gÿúúuWïŠë'£M+¹û2sÑ¿l?4.&:¼m%è²ù³¡S§«çOþiÚ«–¨kŽ/zÚøÔ4~ ʃ Wn -W~®Üâ;Ï¿gmõ] arN³Ê&Ï/ñ]|×üÕR÷R‡®€ƒM›ïRXäÊÓ|w²˜“råçÊM©À•Ÿ+·­¾Çôïß?¯S—,QwŸl×®Îahë[øyú/¾‹ïÚ¾t"è8m÷n|zõÚuеê@Omªî]Ò©¹æ½iÜ3f¨•ÜÄFêßܽ[a]ÕJ¡¥SªCk%—–…–´ÉËSVdggãÐøxu—iÓøKâpê}®Ü?®ü\¹Åwžרê»Âäœf•/Lž_â»ø®ù«'¬î¥+l¥L›ïR‡çc¨Ÿ2Í÷PÇéñ\ù¹rS¾påçÊm«ïòÓhrN³ÊO)ä'²šSPK÷\ó>Z¸Çÿ–†¼©SIݺ#uá’’)ZøKâ,ø¾)ÜóçÏÇÐÎ~´âMÿQC=¡® ÞôÏÖhŸÈÍQûÚšÂïNЧáÊMâÊÏ•[|çù÷¬­¾K!LÎiVùÂäùÅ!¾‹ïš¿z"ê^ áÐÂgÊ|—B84ß"=Úß#å÷ó\ù¹rSžpåçÊm«ïR“sšU&ŽDšSPK÷\ó>Z¸gmMGÞl9pzuÛÊAåQ´ðû·ƒÜâîÒS=ç9++ ½-]8ïo½¾|îÕ7±ó±—ß…&w»Z¶iè±e?@Ϭ´úÞ›ÿ†Fºq‹?Òq¹ýy®ÜW®ü\¹ÅwžÏÚê»Âäœf•/Lž_â»ø®ù«'¢î¥-|nÍw)„CóÁë£ÝòÝkŽpûãÊÏ•›ò„+?Wn[}—B˜œÓ¬2q¤ Òœ‚Zºçš÷ѽi¿ZülåAäσ§×*¢…?(Ø¿äw¹ ê.ÏÉ Ôµ½ïŒ¹½ž{Î9ë½T©—@{ÍžcЄå_CÌù:{ÖLh™ Õ G÷«çEÿ6.Ú-Z´€†»q‹?Üñxõ9®Ü_®ü\¹ÅwžÏÚê»Âäœf•/Lž_â»ø®ù«'¢î¥-|nÍw)„CóÁë£ÝòÝkŽpûãÊÏ•›ò„+?Wn[}—B˜œÓ¬2q¤ Òœ‚Zºçš÷ÑÂ}4ûòæ®); ÿê®î½zõj´I[µnƒv×.¡gœq455Êeã´ïK—.Uñ|4ùªW ‡_¿úõü ÐñËÔµ¾—·ª„vÿ†å¡EmV®\‰·R§Mƒ^ÝuÐòå‹ÿ\Qç£ýNóÓyMW®Üä W~®Üâ;Ï¿gmõýÿÚ;ûh=«òNBÀ@ ”ðe©‚Œ3µ •Q¤«èØ£ÈèÒ2ËŽÓ©3c[íèȲÒÖ™q*VTÖH *Z?ŠTü„@ÔƒBp  ¡š¢(ŸÒ ïýx¯åÁœññÐ#ŽèNÖ§›ï¹Ç_ºã †.zA÷»Á9þÎwtø;ëo‹§öÙ§ûáüúŽÖ>ÿ;úõì¨ù¨¾óþRýS}Ëù~¶Uîn„“\±Ú0™Cîr/n=[5½á­º]?3¸¯ÞÝÿÌ-Å}ÜGar &¨þ©¾3 TÿTß­rw#œäŠÕÂqCTÁ’驹oÝ÷ ¥ûû´ë~Ü0î±üSò³î­¿×=ø@è®»î:åë­ûŸbf+.¦ó½zõêø)Ç¿tyè!îzãu×lö§¯Xw<ÿî^ºæcºñÞï„îýŒî$ø¡»Oñ>j¯îﯼôóñõª‡éüW½ž5/ÕwÞ_ªªo¹3ß϶ÊÝp’+V&³qÈ]îÅ­g›¦w#¼M·m§éêÝð¶ÝÏV¾k:î­¼þí}TÿTß™ªªïV¹»NrÅjá¸!*Ž`ÉôÔÜÅ÷Ùï{俨HîvP÷;­çýþ[âù“_Ùp>1\cñÿD_}×Óù~ÏÙïo}×%«Bç?Ü}Úö¿éä¸>æå¯ ýðõÝßþ¥%Ýïj¿öY‹âù|ظ±ûúÊ•Ýïdñ²+âKw¬¿3ôÂó?zàæ·ìPÎÿ}“Q}ç­¦ú§ú–;óýl«ÜÝ'¹bµa2‡Üå^Üz¶kz7Â[wû¦«w7Â[w[=÷Ö|lëë¥ú§úΜPýS}·ÊÝp’+V Ç QqK¦§æ~l¾?Õ7"?篸.ô¢³~c‹y›ÿ-šý©/NçûE'uŸÂý·‡œ£qlèg>?ôWtŸú|úQûÆõOÞ%´µ‡éü·æck_/ÕwÞ'ªªo¹3ß϶ÊÝp’+V&³qÈ]îÅ­gF¦w#<ì6NWïn„‡Ý¿VGMǽU?[ûº©þ©¾3TÿTß­rw#œäŠÕÂqCTÁ’驹›ï‡ÛùyËÿ.ôÜW²Å<Íš½õÖ[ãŸ_ºtEè›ÿý¿Ë/…Nç{Áž ãë¿óªÐwë>íùþ«.ˆë“ŸòHèÞû§¡­>Lç¿U?C_7ÕwÞªªo¹3ß϶ÊÝp’+V&³qÈ]îÅ­gF¦w#ÜÝF7Â[޵ßQ}g¨þ©¾åÎ|_Ó*w7ÂI®Xm˜ÌÆ!w¹·žþ­_îþŽíÛ_?wñó7ûóÇšûž{nøýÝ3ÿkègþò#¡/^¶¬ÓOÍû•7®ç_ý¯ºO‡þÇMóâz—§=7ôI‡ú£‹ÿ ôÚ¯\zØa‡…¶ö0Vî}¨¾ó¾PýS}Ë}jŸÏûAÑÖrïFxŽ$³µàÌôm£ú§úÎüPýÕ·a7ÂYÛ›Ó±æ~s^ú9ªï¼TÿTßrw#<ÉÀŠݯe檺ž#dl˜ÌÆ!w¹Ï‘4#/ã=Wÿ}üœŸÚýÎë³Ø}ÊϽçž{âúõ¯}h+ å[¸xÙ+__½vþ3Bw¹ö/C¿sǺÐNìN†—ŸÕ=ßÿî´Ó¯Ù}ôÍ×_ã.¿¢û;ÀŸ»´;¾öoºß>åÔÓâë}²ûþ¸hèÚ慨3šTÿTßrg¾¯i•»á$W¬6Lfã»Ü‹[ÏŒNïFØð–EíwTß™ªªo¹3ß×´ÊÝp’+V&³qÈ]îÅ­g»¦¿ë®»âû׬YzáåÝß¾ó–oÅõ=·ÞzÛÚN÷?à ¸~ÚÏzÕUÝIg\Œàaá>‹ÃÅþg|>ô¡«Î =á™O ýÚ•—…^òÅKCŸ}À‚С6lˆ¡K–t¿ƒ=ôûæÊ8j¿£úÎÜQýS}Ëù¾¦Uîn„“\±Ú0™Cîr/n=Û5½á©·ÏðÔûñÄ+j¿£úNþTÿTßrg¾¯i•»á$W¬6Lfã»Ü‹[Ï6MÿÂ;n×]ÿÍøþ'?埅>ös‡‡Îß¿ûTã'øôîùë.}ë)Ç…~ésŸ Ëïßpà áç„Wœºø·;¿qñøÃm¿·4þù‚㎠]¹²ûàü:E©ýŽê;sMõOõ-wæûšV¹»NrÅjÃd6¹Ë½¸õlÓôn„§Þ67ÂSïÇtWÔ~Gõ9 ú§ú–;ó}M«ÜÝ'¹bµa2‡Üå^Üz¶iúûî»/¾ï¸_îøÝHwÒ¹`Ù›§ü¼oî~øÐow'¤_»âËñõ¹žû–½$^çwî¾;tíšÕS|=ñâ¼ ?OýÎ;ߺç±ÿ:tÁÝß~ø–îÓ |ÙÙñü†{º¿· ‡¹Î}¶PP}çý¤ú§ú–;ó}M«ÜÝ'¹bµa2‡Üå^Üz¶iz7ÂSo›á©÷cº+j¿£úÎPýS}Ëù¾¦Uîn„“\±Ú0™Cîr/n=32ýÛÎüƒø9ç}â3¡{¿±û´äuo{^\oÚ´iÊ•y÷CŸ¯ûì3~=ô´Ó^3ÅÇÇVÿC\¯¹÷¡Ð…ßúBèu?ù»¿W®¼"®7íÚ}:ôîí>e;ŸÁóŸ_§<Ìuî³Åê;ï'Õ?Õ·Ü™ïkZåîF8É« “Ù8ä.÷âÖ3#Ó»v#<$HÔ~Gõ™ ú§ú–;ó}M«ÜÝ'¹bµa2‡Üå^Üzftúk¯».~ÞK^}zèÅŸúXèñÏéNVãâñ‡¹šû›nº)^â N:9tÑo|$tû^ú¥Õ݉¹1®O{æ¢Ðe‡- îaíÚµñ¥åË—‡þŸ«¯ÝgQ÷ýÓ}ߨžŸ«Ügû>S}ç}¥ú§ú–;ó}M«ÜÝ'¹bµa2‡Üå^Üzftz7›¿n„»ûBíwTßY TÿTßrg¾¯i•»á$W¬6Lfã»Ü‹[ϬLÿÞ«¿?÷…OÝ3ôȺߑÍÉæjîßwÎ9ñϺ¨û”ç½_ù_âúû—ŸzÔ~óC¿ðçï¿ó¼Ð¡sÕ÷Ð׿½ã¨þ©¾3/TÿTßrg¾¯i•»á$W¬6Lfã»Ü‹[ϬLïFxó·Õz·Þ7ŸŒq?KÍ=Õw¦™êŸê»Uîn„“\±Z8¾A*Ž`ÉôÔÜÝ÷§×tgx]wŽ\½üˆ½¦äkGù_ú¼ccÞ¼¯ûû½ÇÝý]ß)/æ§.þÅOþ.òÚ½ŽŒg÷yÑê«;í´á^×kV}=ôC™òõ¾‹å»ïuT}êŸê;sFõOõ-wæûÙV¹»NrÅjÃd6¹Ë½¸õÌÊôn„7[­wë}óÉ÷³ÔÜS}gš©þ©¾[åîF8É«…ã¤â–LOÍýØ}_}ç"O7lèþ¬Ð›ž³xJ¾fÛÿºuëb¾#=>tñ¢½Co_Û}*ô”óøÅåëî§Þó©¡k.<+ôîÛºO{Þ÷Ÿv'Ëí¶O<Äü¿½æ«W†}˜mßC_GÕ8ªªïÌÕ?Õ·Ü™ïg[åîF8É« “Ù8ä.÷âÖ3+Ó»ÞümµÞ­÷Í'cÜÏRsOõi¦ú§ún•»á$W¬ŽoŠ#X2=5÷c÷½þûFžþÛ_wŸ¾üË{Þ×7ܸ&ôœ÷¿?ôÜ~ ôÕ¯zUèL=|è¼óâGù‘î„wþ®OŠë3–w¿#|Òkÿm\çßþÅŸÛ=®_÷ìîÄ7.øáÿ\¹reè—Wtºö–îÄùÃçuŸ&}ðÁç·lQÇÎ}‹æÿ"Õ?ÕwæêŸê[îÌ÷³­rw#œäŠÕ†Élr—{q뙕éÝoþ¶ZïÖûæ“1îg©¹§úÎ4SýS}·ÊÝp’+V Ç7HÅ,™žšû±ø¾eÝ­‘›ßüO¿z˺ÛBoÿv÷»¸»ïÿ q½÷Ïÿ“Ð/>,tãeÝIê­ën‰ëC=4t¦~õU§ÅúÆžÏ ]¸ôå¡·üÎ3CÏZyWèéK»ß]>há®q=Ûcá¾­÷‰êŸê;sBõOõ-wæûÙV¹»NrÅjÃd6¹Ë½¸õl×ôn„·îöYïÖûÖ%f£©¹§úÎÔRýS}·ÊÝp’+V Ç7HÅ,™žšû±øþÞÆ‘›§öôÐÇt'±{¿äÍ]žæuG8ÃõÀÅ¿ÿ\xïêЛoÚü§8çøõë×Ç??ùé‹BÏxëoç—¶¨‹ö[__ü[Ÿ ¿°;ùýáÿýt\Ÿ°Û¡¿ û]â¸Øcá¾­·ŠêŸê;sBõOõ-wæûÙV¹»NrÅjÃd6¹Ë½¸õl×ôn„·îöYïÖûÖ%f£©¹§úÎÔRýS}·ÊÝp’+V Ç7HÅ,™žšû±ú~Ý¿ySäèÊÕÝï?ù çÄõ7^úŒ¿ë>ÅyÞ£ÄõŠÝu\læá/Î??ž}Ëï½#ô£ú`è+—ÿêfFï´Ó×þ¶ûtêSOí>…ú|?Æívx÷iÑ»ö¼¸~ä²? ½ì¢†uÔQ¡³ý0VîCïÕ?Õwæ‚êŸê[îÌ÷³­rw#œäŠÕ†Élr—{që™ÑéÝoùvZïÖû–2ίRsOõ)¦ú§ún•»á$W¬ŽoŠ#X2=5÷c÷ýÙK>y:ùä“CwÝ}AèÃ?º?t¨ÿS^óºÿ7=-ô‘¯|(ôîíN~ï{豸¾àúîw•7ÅÕN;½áÙûÆ¿n¿ù›¡+W^zÉ¥ÝÉôÕ_éþð‰/~i<é. 퇡¾gûuTý|ªªïÌÕ?Õ·Ü™ïg[åîF8É« “Ù8ä.÷âÖ3+Ó»ÞümµÞ­÷Í'cÜÏRsOõi¦ú§ún•»á$W¬ŽoŠ#X2=5÷ßW¯ïN€¯º±û”æÿü²îïøõ¿xÉA‘˽ßü‰Ð‡¯ùT豿°WèSþå=ý¨}BŸ}@wò6lØ£–,é>ezÀ·lס¾·k’9üÍTÿTßEªªo¹3ß϶ÊÝp’+V&³qÈ]îÅ­gV§w#<õöZïÖûÔD0®¨¹§úÎTSýS}·ÊÝp’+V Ç7HÅ,™žš{Šï»~ðhäêÜo|/ô¬íó¿víÚwÌ‹N ÝïŒ/„æÃú3‹Þuk7n¿ýöË/Íiíó=§_ü ¼8ªªïŒ Õ?Õ·Ü™ïg[åîF8É« “Ù8ä.÷âÖ3«Ó»žz{­wë}j"WÔÜS}gª©þ©¾[åîF8É«…ã¤â–LOÍ=Åw~Šó/¾3òõ'?%´Ïÿ…õÙ÷›¿ûÎÐ=Ž~uè‚§wø‘»nŠëg~÷‡^zÉgBçúCŸï¹þú·÷õQýS}g^¨þ©¾åÎ|?Û*w7ÂI®Xm˜ÌÆ!w¹·žYÞðÔÛk½[ïSÁ¸¢æžê;SMõOõÝ*w7ÂI®X-ß G°dzjîi¾ß~ùÝ‘¯ÿxt÷»¼o8åeq½bÅŠ)¹ûøêûâzõ†C—ÜqEèµ_íþîï+;}èÑŒçüè#¡ŸþØ¡'½´û»Àq1hÜŸˆ€êŸê;ùSýS}Ëù~¶Uîn„“\±Ú0™Cîr/n=;dz7ÂÝm¶Þ­÷Rpslj3~TÿTß­rw#œäŠÕÂñ RqK¦§æžæûý_ÿnäëèƒ÷}ÛéËCßùçzÁõCOýÅE¡¿rð*iIDATøÂÐén¿ýöøÒÊ+¯ ]¾¼ûy‹÷Ýwºo™ÏÓ¸?ñ¦SýS}'ªªo¹3ß϶ÊÝp’+V&³qÈ]îÅ­g‡LïF¸»ÍÖ»õ¾C nŽMBÍ=ÕwÆêŸê»Uîn„“\±Z8¾A*Ž`ÉôÔÜÓ|ë»G¾îþÉßþõS_×oÿ_‡þÚ‘û„î²ó¼Ð±>и?‘#Õ?Õwò§ú§ú–;óýl«ÜÝ'¹bµa2‡Üå^ÜzvÈôn„»Ûl½[ï;¤àæØ$ÔÜS}gü¨þ©¾[å>oÙ²eù.ÒC‰®Zµ*æ]ºtiÉüÕ“êŸÉ_îr¯î=;bþï?ôXLó½;ÝxëqýœÎê÷Ö»õ¾#êm®ÍAÍ=ÕwæêŸê»Uîn„“\±Z8¾A*Ž`ÉôÔÜÓ|»îÊ‹Æý‰M…êŸê;ùSýS}Ëù~¶Uîþ§ÑI®XýO)üOæŠ#X2=5÷4ßßþ^÷;ÂO_¼[äŒæ?‹‹ê›î_î®ïY$¥æžê;³Ýš7ÂI®X[ ÎLß.ªªïÌÕ?Í·á.ñ4îYç©TÿTßrgþr—û$+V¬È(Ìiu#GZÐ}ÔÜS}g¸¨þ©¾åÎ\ßä.÷IÜg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹{"œäŠÕ†Élr—{që)™žš{ªï Õ?Õ·Ü™ë›Üå>É€'ÂY Õ…ÂÂi©pƺw˜¹gæ^îrïm#@Í=ÕwF˜êŸê[îÌõ­Uîž'¹bµa2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2à‰pVÂ@u¡°pZ*œ±îf—»Ü{›ÃPsOõ¦ú§ú–;s}k•»'ÂI®Xm˜ÌÆ!w¹·ž’驹§úÎQýS}˹¾É]î“ x"œ•0P](,œ– g`¬{‡™{fîå.÷Þæ0ÂÔÜS}g„©þ©¾åÎ\ßZåî‰p’+V&³qÈ]îÅ­§dzj3dTÿTßrg®or—û$žg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹{"œäŠÕ†Élr—{që)™žš{ªï Õ?Õ·Ü™ë›Üå>É€'ÂY Õ…ÂÂi©pƺw˜¹gæ^îrïm#@Í=ÕwF˜êŸê[îÌõ­Uîž'¹bµa2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2à‰pVÂ@u¡°pZ*œ±îf—»Ü{›ÃPsOõ¦ú§ú–;s}k•»'ÂI®Xm˜ÌÆ!w¹·ž’驹§úÎQýS}˹¾É]î“ x"œ•0P](,œ– g`¬{‡™{fîå.÷Þæ0ÂÔÜS}g„©þ©¾åÎ\ßZåî‰p’+V&³qÈ]îÅ­§dzj3dTÿTßrg®or—û$žg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹{"œäŠÕ†Élr—{që)™žš{ªï Õ?Õ·Ü™ë›Üå>É€'ÂY Õ…ÂÂi©pƺw˜¹gæ^îrïm#@Í=ÕwF˜êŸê[îÌõ­Uîž'¹bµa2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2à‰pVÂ@u¡°pZ*œ±îf—»Ü{›ÃPsOõ¦ú§ú–;s}k•»'ÂI®Xm˜ÌÆ!w¹·ž’驹§úÎQýS}˹¾É]î“ x"œ•0P](,œ– g`¬{‡™{fîå.÷Þæ0ÂÔÜS}g„©þ©¾åÎ\ßZåî‰p’+V&³qÈ]îÅ­§dzj3dTÿTßrg®or—û$žg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹{"œäŠÕ†Élr—{që)™žš{ªï Õ?Õ·Ü™ë›Üå>É€'ÂY Õ…ÂÂi©pƺw˜¹gæ^îrïm#@Í=ÕwF˜êŸê[îÌõ­Uîž'¹bµa2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2à‰pVÂ@u¡°pZ*œ±îf—»Ü{›ÃPsOõ¦ú§ú–;s}k•»'ÂI®Xm˜ÌÆ!w¹·ž’驹§úÎQýS}˹¾É]î“ x"œ•0P](,œ– g`¬{‡™{fîå.÷Þæ0ÂÔÜS}g„©þ©¾åÎ\ßZåî‰p’+V&³qÈ]îÅ­§dzj3dTÿTßrg®or—û$žg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹{"œäŠÕ†Élr—{që)™žš{ªï Õ?Õ·Ü™ë›Üå>É€'ÂY Õ…ÂÂi©pƺw˜¹gæ^îrïm#@Í=ÕwF˜êŸê[îÌõ­Uîž'¹bµa2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2à‰pVÂ@u¡°pZ*œ±îf—»Ü{›ÃPsOõ¦ú§ú–;s}k•»'ÂI®Xm˜ÌÆ!w¹·ž’驹§úÎQýS}˹¾É]î“ x"œ•0P](,œ– g`¬{‡™{fîå.÷Þæ0ÂÔÜS}g„©þ©¾åÎ\ßZåî‰p’+V&³qÈ]îÅ­§dzj3dTÿTßrg®or—û$žg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹{"œäŠÕ†Élr—{që)™žš{ªï Õ?Õ·Ü™ë›Üå>É€'ÂY Õ…ÂÂi©pƺw˜¹gæ^îrïm#@Í=ÕwF˜êŸê[îÌõ­Uîž'¹bµa2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2à‰pVÂ@u¡°pZ*œ±îf—»Ü{›ÃPsOõ¦ú§ú–;s}k•»'ÂI®Xm˜ÌÆ!w¹·ž’驹§úÎQýS}˹¾É]î“ x"œ•0P](,œ– g`¬{‡™{fîå.÷Þæ0ÂÔÜS}g„©þ©¾åÎ\ßZåî‰p’+V&³qÈ]îÅ­§dzj3dTÿTßrg®or—û$žg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹{"œäŠÕ†Élr—{që)™žš{ªï Õ?Õ·Ü™ë›Üå>É€'ÂY Õ…ÂÂi©pƺw˜¹gæ^îrïm#@Í=ÕwF˜êŸê[îÌõ­Uîž'¹bµa2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2à‰pVÂ@u¡°pZ*œ±îf—»Ü{›ÃPsOõ¦ú§ú–;s}k•»'ÂI®Xm˜ÌÆ!w¹·ž’驹§úÎQýS}˹¾É]î“ x"œ•0P](,œ– g`¬{‡™{fîå.÷Þæ0ÂÔÜS}g„©þ©¾åÎ\ßZåî‰p’+V&³qÈ]îÅ­§dzj3dTÿTßrg®or—û$žg% T §¥ÂëÞaæž™{¹Ë½·9Œp5÷Tßaªªo¹3×·V¹Ï[¶lÙ¦|ñ•ºjÕª˜~éÒ¥•/£lný3ùË]îeM§pbj3jTÿTßrg®or—û$­ìçÜgÅ« %³qÈ]îÅ­§dzj3dTÿTßrg®or—û$Íl„7=þ¿ m¥úŸøŸRLò×ÊïÌT­˜{fîå.÷™ê!-ýj3›TÿTßrg®o­r÷ò’\±Ú0™Cîr/n=%ÓSsOõ!£ú§ú–;s}“»Ü'hå`ËpVl±ºP2‡Üå^ÜzJ¦§æžê;CFõOõ-wæú&w¹O2àF8+a ºPX8-ÎÀX÷3÷ÌÜË]î½Ía„¨¹§úÎSýS}˹¾µÊÝá$W¬6Lfã»Ü‹[OÉôÔÜS}gȨþ©¾åÎ\ßä.÷I<ÎJ¨.NK…30Ö½ÃÌ=3÷r—{osáj3ÂTÿTßrg®o­r÷D8É« “Ù8ä.÷âÖS2=5÷Tß2ªªo¹3×7¹Ë}’O„³ª ……ÓRá Œuï0sÏ̽ÜåÞÛF8€š{ªïŒ0Õ?Õ·Ü™ë[«Ü=NrÅjÃd6¹Ë½¸õ”LOÍ=Õw†ŒêŸê[îÌõMîrŸdÀᬄêBaá´T8cÝ;ÌÜ3s/w¹÷6‡ æžê;#LõOõ-wæúÖ*wO„“\±Ú0™Cîr/n=%ÓSsOõ!£ú§ú–;s}“»Ü'ðD8+a ºPX8-ÎÀX÷3÷ÌÜË]î½Ía„¨¹§úÎSýS}˹¾µÊÝá$W¬6Lfã»Ü‹[OÉôÔÜS}gȨþ©¾åÎ\ßä.÷I<ÎJ¨.NK…30Ö½ÃÌ=3÷r—{osáj3ÂTÿTßrg®o­r÷D8É« “Ù8ä.÷âÖS2=5÷Tß2ªªo¹3×7¹Ë}’O„³ª ……ÓRá Œuï0sÏ̽ÜåÞÛF8€š{ªïŒ0Õ?Õ·Ü™ë[«Ü=NrÅjÃd6¹Ë½¸õ”LOÍ=Õw†ŒêŸê[îÌõMîrŸdÀᬄêBaá´T8cÝ;ÌÜ3s/w¹÷6‡ æžê;#LõOõ-wæúÖ*wO„“\±Ú0™Cîr/n=%ÓSsOõ!£ú§ú–;s}“»Ü'ðD8+a ºPX8-ÎÀX÷3÷ÌÜË]î½Ía„¨¹§úÎSýS}˹¾µÊÝá$W¬6Lfã»Ü‹[OÉôÔÜS}gȨþ©¾åÎ\ßä.÷I<ÎJ¨.NK…30Ö½ÃÌ=3÷r—{osáj3ÂTÿTßrg®o­r÷D8É« “Ù8ä.÷âÖS2=5÷Tß2ªªo¹3×7¹Ë}’O„³ª ……ÓRá Œuï0sÏ̽ÜåÞÛF8€š{ªïŒ0Õ?Õ·Ü™ë[«Ü=NrÅjÃd6¹Ë½¸õ”LOÍ=Õw†ŒêŸê[îÌõMîrŸdÀᬄêBaá´T8cÝ;ÌÜ3s/w¹÷6‡ æžê;#LõOõ-wæúÖ*wO„“\±Ú0™Cîr/n=%ÓSsOõ!£ú§ú–;s}“»Ü'ðD8+a ºPX8-ÎÀX÷3÷ÌÜË]î½Ía„¨¹§úÎSýS}˹¾µÊÝá$W¬6Lfã»Ü‹[OÉôÔÜS}gȨþ©¾åÎ\ßä.÷I<ÎJ¨.NK…30Ö½ÃÌ=3÷r—{osáj3ÂTÿTßrg®o­r÷D8É« “Ù8ä.÷âÖS2=5÷Tß2ªªo¹3×7¹Ë}’O„³ª ……ÓRá Œuï0sÏ̽ÜåÞÛF8€š{ªïŒ0Õ?Õ·Ü™ë[«Ü=NrÅjÃd6¹Ë½¸õ”LOÍ=Õw†ŒêŸê[îÌõMîrŸdÀᬄêBaá´T8cÝ;ÌÜ3s/w¹÷6‡ æžê;#LõOõ-wæúÖ*wO„“\±Ú0™Cîr/n=%ÓSsOõ!£ú§ú–;s}“»Ü'ðD8+a ºPX8-ÎÀX÷3÷ÌÜË]î½Ía„¨¹§úÎSýS}˹¾µÊÝá$W¬6Lfã»Ü‹[OÉôÔÜS}gȨþ©¾åÎ\ßä.÷I<ÎJ¨.NK…30Ö½ÃÌ=3÷r—{osáj3ÂTÿTßrg®o­r÷D8É« “Ù8ä.÷âÖS2=5÷Tß2ªªo¹3×7¹Ë}’O„³ª ……ÓRá Œuï0sÏ̽ÜåÞÛF8€š{ªïŒ0Õ?Õ·Ü™ë[«Ü=NrÅjÃd6¹Ë½¸õ”LOÍ=Õw†ŒêŸê[îÌõMîrŸdÀᬄêBaá´T8cÝ;ÌÜ3s/w¹÷6‡ æžê;#LõOõ-wæúÖ*wO„“\±Ú0™Cîr/n=%ÓSsOõ!£ú§ú–;s}“»Ü'ðD8+a ºPX8-ÎÀX÷3÷ÌÜË]î½Ía„¨¹§úÎSýS}˹¾µÊÝá$W¬6Lfã»Ü‹[OÉôÔÜS}gȨþ©¾åÎ\ßä.÷I<ÎJ¨.NK…30Ö½ÃÌ=3÷r—{osáj3ÂTÿTßrg®o­r÷D8É« “Ù8ä.÷âÖS2=5÷Tß2ªªo¹3×7¹Ë}’O„³ª ……ÓRá Œuï0sÏ̽ÜåÞÛF8€š{ªïŒ0Õ?Õ·Ü™ë[«Ü=NrÅjÃd6¹Ë½¸õ”LOÍ=Õw†ŒêŸê[îÌõMîrŸdÀᬄêBaá´T8cÝ;ÌÜ3s/w¹÷6‡ æžê;#LõOõ-wæúÖ*÷ÿyAéüwIEND®B`‚wagyu-0.5.0/docs/building_and_testing.md000066400000000000000000000050601360766232600203120ustar00rootroot00000000000000## Building and Testing ### Requirements * Git * make * clang++ 3.5 or later or g++-5 or later #### OS X * Xcode Command Line Tools ### Steps 1. Clone the waygu repo using git and initialize the git submodules. ``` git clone https://github.com/mapbox/wagyu.git cd wagyu git submodule update --init ``` This will install Mapbox's `mason` package manager as well as [test fixtures](https://github.com/mapnik/geometry-test-data). `mason` is going to install required headers, such as `boost`, `rapidjson`, and `mapbox/geometry`. 2. The default `make` builds and runs the tests (`make test`). ``` make ``` `make` will build the library with [Catch](https://github.com/philsquared/Catch) test executables. It will then run the Catch unit tests. If they all pass, you should see something like: ``` All tests passed (178 assertions in 13 test cases) ``` Then, it will run the `fixture-tester` executable with all of the geometry tests. If all of these pass, you should see something like: ``` ./tests/run-geometry-tests.sh ./fixture-tester ✓ 2900/2900 ✗ 0/2900 ``` `run-geometry-tests.sh` is feeding `fixture-tester` all of the input polyjson polygons we have in the test fixtures. The `✓` shows how many fixtures passed, and the `✗` shows how many fixtures failed. That's it, you have now built and tested `wagyu`! ### Including in External Project You may want to use wagyu in your own project. Since wagyu is a header-only library, all you have to do is include `mapbox/geometry/polygon.hpp` and `mapbox/geometry/wagyu/wagyu.hpp`. `polygon.hpp` is the polygon portion of the Mapbox geometry library, a boost-compliant polygon geometry container. #### Enabling interruptions If you need support for interruptions within wagyu, you'll need to define `USE_WAGYU_INTERRUPT` before including `mapbox/geometry/wagyu/wagyu.hpp`. This will expose 3 functions: - mapbox::geometry::wagyu::interrupt_reset: Resets any pending interruption call. - mapbox::geometry::wagyu::interrupt_request: Requests the library to be interrupted. - mapbox::geometry::wagyu::interrupt_check: Called internally to verify if an interruption is requested. Once the library notices a new request, the environment will be reset and a `std::runtime_error` thrown. ### Debugging `wagyu` has many `DEBUG` flags [throughout the code](https://github.com/mapbox/wagyu/blob/79d85c720c8fb9ab37d0b677ccf12f83d1015ad7/include/mapbox/geometry/wagyu/local_minimum.hpp#L56-L113) that will help you make sense of the library and what it is doing. To see log messages during execution of the code: ``` make debug ``` wagyu-0.5.0/docs/complex_self_intersection.png000066400000000000000000003263161360766232600216020ustar00rootroot00000000000000‰PNG  IHDRŠÀsN‡ò iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ¥J! J AÅŽ,*¸v± ¨èªˆm-€¬Q,,ìET”u±€•7I]÷•ï|3÷Ï™sÎüçÜ™ûÍ ìÈrPrùù˜`?fRr “$ü)0b±Eßèèpeäùw¸m¡\·–ÆúçøUWĉ†8#bçB| \›-æ@hƒz£™ù)~±º€H–â 9Ö‘â49¶•ÙÄÅøC™Êb 3P’Æg°3`%Ķ|ñvˆ½Ø™,ĈÇåæÎ€X™ ±yÚwq2þ3m4&‹•1Šå¹È„À rX³ÿÏrüoÉÍÌa5S#ÍÖmoöŒ0)†Ü‘“ü´È(ˆÕ ¾ÄãÈì¥øn¦8$~ؾ—-ò‡5 PÀa„A k‰2ÄÙñ¾ÃØž%”ùB{4’—7ŒÓ„3b†ã£üœÈðá8K3¹¡#¸’+ Œ±Iç…B Wz¬03.QÎm*à%DB¬q›(;6lØ÷aa¦äˆP#ål ñ»taPŒÜÓÌä…Ù°Y²¹4!öÉÏŒ ‘ûbI\QRø7 PÎãpùñÃÜ0¸ºüb†}K9ÑÃöX%7'8F^gì°¨ vÄ·#.0y°ÇY¬‰ÑrþØ€ ?:NÎ ÇA8ð€ İ¥ ðZ{ëzá?ùH`!È\`=¬ñH”ða ÁŸqhÔÏO6ÊPÿeT+ï­Aºl´@æ‘ žBœ‹kã^¸{ØìqWÜmÄ©<2+1@ !-Fy°!ëØ„€÷otaðÉ…ÙI¹ðGrøð”ÐNxL¸Iî€ðDeØj:¯Høs&ˆ-h8»4³gÄ7…¬p?Üò‡Üq® ¬qG˜‰/î ss‚ÚïŠG¹}«åóIYŸÏ°^ÉRÉi˜EÚè›ñµú1Šÿw5âÀgØ–ØRì(ÖŒÃ.c'±:ÀÄÎ`õX vJŠGWÂÙJ™-FÆ-ÆáØØÖØöØ~þÇì¬aBÙûùÜYùÒ á?C0[ÈËÈÌgúÂ/2—ÊgÛŒcÚÛÚ9 ý¾Ë?o²ï6¸òM—w·R¨Ìø¦cpâ)ôo:£7p{­àT[,,ëpiG  w†ÐFÀædœð`"ˆq LƒUϹõL0,%  ¬ëÁf° ì{Ápԓฮ‚6p܃k£¼}` "BBhÑBôÄ ±G\/$ Gbd$É@øˆ™‹,FÊ5ÈfdRüŠœ@Î!—‘väòéAÞ ŸP ¥¢ê¨.jŠŽG]Q_4 C§¢hZˆ£+Ðhº­EÏ¡WÑ›¨}‰öcSĘf¹bþX–‚¥cBl>VŠ•cUØA¬¾ëë˜ëÅ>âDœŽ3qk¸>Cðxœçáóñåøf|/^‹7á×ñGxþ•@#è¬î„PB!ƒ0“PB('ì&'\€{§›0@$D3¢ Ü›ÉÄ,âârâVâ!âYb;±‹ØO"‘´HV$OR‰EÊ'•6‘ö“Î:HݤdE²>ÙžDN!óÉEärò>òirùyPAEÁDÁ]!J£0[a¥Â.……k Ý ƒUŠÅ“GÉ¢,¢l¤¤\ Ü§¼UTT4TtSœ¤ÈS\¨¸Qñ°â%ÅGŠ©jTKª?u UL]AÝC=K½C}K£ÑLi>´Z>m­švžööA‰®d£ªÄQZ T¡T«Ô¡ôJYAÙDÙWyšr¡r¹òQåkʽ* *¦*þ*,•ù**'T:UúUéªvªQª¹ªËU÷©^V}®FR3U T㨫íT;¯ÖEÇèFt:›¾˜¾‹~Þ­NT7SUÏR/S? ÞªÞ§¡¦á¨‘ 1K£B㔆„1L¡ŒÆJÆÆ-Ƨ1ºc|ÇpÇ,spLǘ÷šc5}4¹š¥š‡4oj~Òbjjek­ÖªÓz k[jOÒž©]©}A»w¬úX±ì±¥cŒ½«ƒêXêÄèÌÑÙ©Ó¢Ó¯«§¬+Ðݤ{^·W¡ç£—¥·Nï´^>]ßKŸ§¿NÿŒþ ¦Ó—™ÃÜÈlbö脈 v´ šÆ2|`D1r5J7ZgÔhÔg¬oa<×¸Æø®‰‚‰«I¦É“f“÷¦f¦‰¦KLëLŸ›iš…ššÕ˜Ý7§™{›ç™W™ß° Z¸Zd[lµh³D-,3-+,¯Y¡VÎV<«­VíããÜÆñÇUë´¦ZûZX×X?²aØ„ÛÙÔÙ¼o<>eüêñÍã¿Ú:ÙæØî²½g§f7ѮȮÁî½¥=Û¾Âþ†Í!ÈaC½ÃkG+G®c¥ãm'ºS„Ó§F§/Î.ÎBçƒÎ=.Æ.©.[\:]Õ]£]—»^r#¸ù¹-p;éöÑÝÙ=ßýˆû_ÖÙû<žO0›À°kB—§¡'Ës‡§Ä‹é•êµÝKâmàÍò®ò~ìcäÃñÙíóÌ×Â7Ëw¿ï+?[?¡ßq¿÷þîþóüÏ`Á¥­jñ›eÕõ;Ï >B YҪʭí›è2qÞĦ0jXlØæ°Çá–áÂð†4bbÄÚˆû‘&‘üȺ(µ6êA´Yt^ôo“ˆ“¢'ULzc37¦9–;=v_ì@œ_Üʸ{ñæñâøÆå„) Õ ï×$J’Æ'ÍKºš¬ÌK®O!¥$¤ìNéŸ8yýäî)NSJ¦Üšj6uÖÔËÓ´§åL;5]y:kúÑTBjbê¾ÔϬ(V«?-4mKZÛŸ½ý’ãÃYÇéázr×pŸ¥{¦¯Ižá™±6£'Ó;³<³—çÏÛÌ{’µ-ë}vTöžì¡œÄœC¹äÜÔÜ|5~6¿i†ÞŒY3ÚV‚$Ï=o}^Ÿ0L¸[„ˆ¦ŠêóÕáQ§El.þIü¨À« ¢àÃÌ„™Gg©ÎâÏj™m9{Ùìg…A…¿ÌÁç°ç4Î5˜»hî£y¾óvÌGæ§Ío\`´ xA÷Âà…{Qe/ú½È¶hMѻʼn‹Šu‹wýüSM‰R‰°¤s‰Ç’mKñ¥¼¥­Ë–mZöµ”Sz¥Ì¶¬¼ìóröò+?Ûý¼ñç¡é+ZW:¯¬\E\Å_ukµ÷ê½kT×®éZ±¶vs]éºw맯¿\îX¾meƒxƒdcøÆúMÆ›Vmú¼9sóÍ ¿ŠC[t¶,Ûò~+gkG¥OåÁmºÛʶ}ÚÎÛ~{GðŽÚ*ÓªòÄ;ŸîJØÕü‹ë/Õ»µw—íþ²‡¿G²7foSµKuõ>}+kÐqMÏþ)ûÛ¨?h}pÇ!Æ¡²Ãà°øð‹_S½u$ìHãQ×£™Ûrœ~¼´©]ÛW—Y'©O®o?1ñDcƒGÃñßl~ÛsÒàdÅ)S+OSNŸ:Sx¦ÿ¬àl﹌s]ÓïO:£iRSë…° —.]<ßìÛ|æ’祓—Ý/Ÿ¸âz¥îªóÕÚ§–ã¿;ý~¼Õ¹µöšËµú6·¶†ö í§;¼;Î]¸~ñFè«7#o¶ßŠ¿u»sJ§ä6çöó;9w^ß-¸;xoá}ÂýÒ*Êê<¬úÃâCgÉ©GZÇ>¾×ÅîzùDôäswñSÚÓògúϪŸÛ??ÙÔÓöbò‹î—‚—ƒ½%ªþ¹å•ù«cùüÕÒ—Ô×ýZøzèÍò·Zo÷¼s|רÝÿp w`ð}é­{?º~lþ”øéÙàÌϤÏ¿X|iøöõþPîЀ%dÉŽlhz:oö@K†gx£(Éï_2AäwFÿ Ëïh2'—=>Ä/ žQ*a3˜ ŸÒãwœ@FÛ°ˆÒì屨ðCø04ôVR_„CCƒ[‡†¾ì‚dïp6O~ï“ žñ·kJQK§ øQþ±lCô²’… pHYs%%IR$ðiTXtXML:com.adobe.xmp 906 960 ÍÉ HiDOTà(ààä3®ˆ4C@IDATxìw€EÆg—]rÎ Q’ ¢¢¢(‚ HPô@ą̊`Ϙ‚¨ "Š Ĉ™CO0 ( ‚HÎ9JÚewÙpÞ{]«SNO÷ôTU÷Ì~ûǾ©ô^õ¯^ÕôëêîI)øã/Tÿ:uêDG=kÖ¬"xôþ2¸ûÇþÿ–Áßþàîwaü ³ÜÍò–­¿LÄLÜÍp¶³þvd¼å§ PD èÍu¼µÂöÆMU+ðWE26=à/ÕµÁ_5QwúÀÝ']µÀ_ÙèzÁ=:ݥ௖0Eì(ªõ(m˜À€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIð7 Ü2îþpVÁ_P#("PTãI.µ`»¥©økë Üi.Í€mÔƒ» CÙào´dÜ% †“à¯8EŠj=ÊA&° ÍÅ௰zp·c(ü –Ì€»Äpü ·Ì»?Ü…Uð$ÔHŠÕx’K-˜À.AiªþšÀ:¨w@š‹Á_3`õànÆP6ø-™w ˆá$ø«Ž@¢ZrІ ìHs1økl£ÜmÀÊC %3à.1œÃÀ-sàîwaü 5"E5žäR &°KPšª¿&°jÁÝæbð× ØF=¸Û€1” þ†@KfÀ]b8 þj#PD ¨Ö£´a;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Áß0p˸ûÃ]XABD ˆ@Q'¹Ô‚ 씦j௠¬ƒZpw¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿Zà(ªõ(m˜À€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIð7 Ü2îþpVÁ_P#("PTãI.µ`»¥©økë Üi.Í€mÔƒ» CÙào´dÜ% †“à¯8EŠj=ÊA&° ÍÅ௰zp·c(ü –Ì€»Äpü ·Ì»?Ü…Uð$ÔHŠÕx’K-˜À.AiªþšÀ:¨w@š‹Á_3`õànÆP6ø-™w ˆá$ø«Ž@¢ZrІ ìHs1økl£ÜmÀÊC %3à.1œÃÀ-sàîwaü 5"E5žäR &°KPšª¿&°jÁÝæbð× ØF=¸Û€1” þ†@KfÀ]b8 þj#PD ¨Ö£´a;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Áß0p˸ûÃ]XABD ˆ@Q'¹Ô‚ 씦j௠¬ƒZpw¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿Zà(ªõ(m˜À€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIð7 Ü2îþpVÁ_P#("PTãI.µ`»¥©økë Üi.Í€mÔƒ» CÙào´dÜ% †“à¯8EŠj=ÊA&° ÍÅ௰zp·c(ü –Ì€»Äpü ·Ì»?Ü…Uð$ÔHŠÕx’K-˜À.AiªþšÀ:¨w@š‹Á_3`õànÆP6ø-™w ˆá$ø«Ž@¢ZrІ ìHs1økl£ÜmÀÊC %3à.1œÃÀ-sàîwaü 5"E5žäR &°KPšª¿&°jÁÝæbð× ØF=¸Û€1” þ†@KfÀ]b8 þj#PD ¨Ö£´a;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Áß0p˸ûÃ]XABD ˆ@Q'¹Ô‚ 씦j௠¬ƒZpw¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿Zà(ªõ(m˜À€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIð7 Ü2îþpVÁ_P#("PTãI.µ`»¥©økë Üi.Í€mÔƒ» CÙào´dÜ% †“à¯8EŠj=ÊA&° ÍÅ௰zp·c(ü –Ì€»Äpü ·Ì»?Ü…Uð$ÔHŠÕx’K-˜À.AiªþšÀ:¨w@š‹Á_3`õànÆP6ø-™w ˆá$ø«Ž@¢ZrІ ìHs1økl£ÜmÀÊC %3à.1œÃÀ-sàîwaü 5"E5žäR &°KPšª¿&°jÁÝæbð× ØF=¸Û€1” þ†@KfÀ]b8 þj#PD ¨Ö£´a;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Áß0p˸ûÃ]XABD ˆ@Q'¹Ô‚ 씦j௠¬ƒZpw¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿Zà(ªõ(m˜À€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIð7 Ü2îþpVÁ_P#("PTãI.µ`»¥©økë Üi.Í€mÔƒ» CÙào´dÜ% †“à¯8EŠj=ÊA&° ÍÅ௰zp·c(ü –Ì€»Äpü ·Ì»?Ü…Uð$ÔHŠÕx’K-˜À.AiªþšÀ:¨w@š‹Á_3`õànÆP6ø-™w ˆá$ø«Ž@¢ZrІ ìHs1økl£ÜmÀÊC %3à.1œÃÀ-sàîwaü 5"E5žäR &°KPšª¿&°jÁÝæbð× ØF=¸Û€1” þ†@KfÀ]b8 þj#PD ¨Ö£´a;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Áß0p˸ûÃ]XABD ˆ@Q'¹Ô‚ 씦j௠¬ƒZpw¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿Zà);v,P«21´-Z´ˆ:ÚªU«Äèp’ôÜýHð÷‡?¸ûÃ]XA¬w³¼ekà/1“w3œí¬€¿où(zó­0=‚SÔ üŒQ ¸ÇLquðW Ô¥:pw JS5ð×ÖA-¸;Ò\ þjãÖSÜzªÖ£´á–@š‹Á_3`õànÆP6ø-™w ˆá$øn™w¸ «à/H¨‘(ªñ$—Z0]‚ÒT ü5uP î€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIðW "Eµå  Øæbð× ØF=¸Û€1” þ†@KfÀ]b8 þ†[æÀÝîÂ*ø j$EŠj<É¥L`— 4UM`Ô‚» ÍÅ௰zp·c(ü –Ì€»ÄpüÕG ˆ@Q­G9hÃv¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿aà–9p÷‡»° þ‚„‰@¢Or©Ø%(MÕÀ_XµàîHs1økl£ÜmÀÊC %3à.1œµÀ("PTëQÚ0i.Í€mÔƒ» CÙào´dÜ% †“ào¸eÜýá.¬‚¿ ¡F"PD ¨Æ“\jÁv JS5ð×ÖA-¸;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Á_-pŠÕz”ƒ6L`@š‹Á_3`õànÆP6ø-™w ˆá$øn™w¸ «à/H¨‘(ªñ$—Z0]‚ÒT ü5uP î€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIðW "Eµå  Øæbð× ØF=¸Û€1” þ†@KfÀ]b8 þ†[æÀÝîÂ*ø j$EŠj<É¥L`— 4UM`Ô‚» ÍÅ௰zp·c(ü –Ì€»ÄpüÕG ˆ@Q­G9hÃv¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿aà–9p÷‡»° þ‚„‰@¢Or©Ø%(MÕÀ_XµàîHs1økl£ÜmÀÊC %3à.1œµÀ("PTëQÚ0i.Í€mÔƒ» CÙào´dÜ% †“ào¸eÜýá.¬‚¿ ¡F"PD ¨Æ“\jÁv JS5ð×ÖA-¸;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Á_-pŠÕz”ƒ6L`@š‹Á_3`õànÆP6ø-™w ˆá$øn™w¸ «à/H¨‘(ªñ$—Z0]‚ÒT ü5uP î€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIðW "Eµå  Øæbð× ØF=¸Û€1” þ†@KfÀ]b8 þ†[æÀÝîÂ*ø j$EŠj<É¥L`— 4UM`Ô‚» ÍÅ௰zp·c(ü –Ì€»ÄpüÕG ˆ@Q­G9hÃv¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿aà–9p÷‡»° þ‚„‰@¢Or©Ø%(MÕÀ_XµàîHs1økl£ÜmÀÊC %3à.1œµÀ("PTëQÚ0i.Í€mÔƒ» CÙào´dÜ% †“ào¸eÜýá.¬‚¿ ¡F"PD ¨Æ“\jÁv JS5ð×ÖA-¸;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Á_-pŠÕz”ƒ6L`@š‹Á_3`õànÆP6ø-™w ˆá$øn™w¸ «à/H¨‘(ªñ$—Z0]‚ÒT ü5uP î€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIðW "Eµå  Øæbð× ØF=¸Û€1” þ†@KfÀ]b8 þ†[æÀÝîÂ*ø j$EŠj<É¥L`— 4UM`Ô‚» ÍÅ௰zp·c(ü –Ì€»ÄpüÕG ˆ@Q­G9hÃv¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿aà–9p÷‡»° þ‚„‰@¢Or©Ø%(MÕÀ_XµàîHs1økl£ÜmÀÊC %3à.1œµÀ("PTëQÚ0i.Í€mÔƒ» CÙào´dÜ% †“ào¸eÜýá.¬‚¿ ¡F"PD ¨Æ“\jÁv JS5ð×ÖA-¸;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Á_-pŠÕz”ƒ6L`@š‹Á_3`õànÆP6ø-™w ˆá$øn™w¸ «à/H¨‘(ªñ$—Z0]‚ÒT ü5uP î€4ƒ¿fÀ6êÁÝŒ¡lð7Z2îÃIðW "Eµå  Øæbð× ØF=¸Û€1” þ†@KfÀ]b8 þ†[æÀÝîÂ*ø j$EŠj<É¥L`— 4UM`Ô‚» ÍÅ௰zp·c(ü –Ì€»ÄpüÕG ˆ@Q­G9hÃv¤¹ü5¶Qî6` eƒ¿!Ð’p—€N‚¿aà–9p÷‡»° þ‚„‰@¢Or©Ø%(MÕÀ_XµàîHs1økl£ÜmÀÊC %3à.1œµÀ("PTëQÚ0i.Í€mÔƒ» CÙào´dÜ% †“ào¸eÜýá.¬‚¿ ¡F"PD ¨Æ“\jÁv JS5ð×ÖA-¸;Ò\ þšÛ¨w0†²ÁßhÉ ¸K@ 'Á_-pŠ (ædg“'d9B²bÅŠj=C“6L`M`]ª— WwÅ@cT—¬ü332ˆDñ%H¦¥¥ÅH&zõÍ›6Q…jÕ«“,Y²dôR©÷üü|ª¹ä—Å$›w<ÉR¥JI¼%³²²¨á¿šE²c§Î$‹/îM¡ÔêÀ”óñ‡ï“¼òšë¤ñ%W._F æ~ÿ=Éëþ5À“B;þ³ÿóéÛ¸m'Ék®UÛÿɯŽ'½i¥ù¼äòË/÷Ô»Fß7”ŠNiÓžd÷îÝíªzÊpÍÔîêþƒH¶mÛ6&=vÜ…’ŽíÚÐÇ ¯O!yì±ÇŠ¢¸¤8/lݪ%éùaÏ/UójýÚÕ¤·g·®$—®XWu5vâ¯Ën²êE ˆ@ѨocÅý7càÿ7$F2ÀÝf[#ÉÊbä!G È\ìübd¿¹‰p‰@1œGQI!PL°@ñÐÁƒä›U«V&9|Ä$‡ FR׿•Ë%Õë7ðæ.]/ôdÊî‹ëÛ¯ùÊof_iîÜ™¯{2¡ÑÔI¯Rn­º|åîÜsÏPË{Öã2ÿŽ^DJN?ýtïÊ"´¼é_×Pîw'Ù¸q㵜³ìøw>¿5~ï#¾Ò\¶lYge.jìÛ»‡jõêÉþ2çû]´r_eÁü¹TùžóæY³ù ¼{ ÑkNžø"Ux{ú;$?žùßè lJí¸¸ófj±vÓV’S¦`£Á[ö?.<—ÖjÐŒäØ^ò¦È¦U«x>õ¾ª?Õ¸çž{ljzË®^¹<5|öyî÷W\áI‘ÌËf^ÇZ¶à¬iï0÷ .¸À“~¹Ñœ¯þCY÷º˜äW³¿#ÙªU+¹ª§ô cž¤vwÝ7‚äŠUkIÖ©SÇ“>¹Ñí7]KYϾô&É윒±îXÊÜIÉÿº¶?ƒ>~¿p Ƀ‡ùÎQ¯lP»*©;ˆ«6l‹WeXûÔÔTJŸç—ß-+÷šXþÏvlÛšTtìÌ;7oL}Ï“J™ÿÇð:v÷Í×’¾î}o$ùäS£=é—yâAÊšüâH’W y”äàÁƒåªžÒ7^Ý›Ú-úö ’C›@Òëº w¢ÃY§PÖ¾­<Ÿž~}¥Ï;ï<¹jÔ´Ì]T>¦ï°–Iϧ¬_Í'yüñ¼‰z±Ê#™™Ô¤J¥ $K/Frí¦í$+UªDÒë¿¥¿üLMûöd«¶¦töÑ\¯*µ¶³ã¯Õh+G ˆ@Ñ•{#PŒŽ bd>™‹ÝÅÈ~#r( áb89…@‘‰ÈëEÙSÂÓÃyˆEA¢hJŠ (Š[ŒªUå+Cwžq”<¶Øù|oľ²¬Ú-à žÏ%ÕWöHò‰‘£<™’¿¸¦Oyô ¿“Ÿ¸éßj¯@>|ߤÚ|åñ1¯Rºwo¾2I‰8þýó’.Ôzá¼ïI¾ü6ïÈsÎ9qhý³é™'óNж­[)ó«¹|e¯I“&VŠá“Ì¿bÙRÔ://ä¶]{I–+W.­¯º{×.ÊlÞ´ÉŒ,¾ò˜‘Å;o[Îß}C n¾ª'Éý¹%H®Ý¼36E6µ_{i,•¼÷<ïÿžÎ;5ß/\fÓ"z¶Ìý¾;xmøúuj˜Uûl’ï}Â;ëѵ9—^jí$VÙÍ~™~ÊUÔèù ìÿ΢×8©Y}ªpfù-$ëô|€äðáÃIÆû¯LÉâ¤â²“ÒI¶ù×3$û÷ïïIµàÿÚ«Y_«HžR›ŸéëÿÈ$J÷èÑÓ~Ñhö—3éヷðÎg†u‡ÄóÓx\ã½Ó`üsO‘þ_Þ}‚ä§Ë³I~¿h9ɺuë’ôúïÎA×SÓZ›Þ%yÏç$3Žð3éé<nõ ïÙ‹;ŸCM{Wø‰ä­3yçcï¶ãV¯]½ãÖ¦¢§ÏÞArè¼cH.[³Ù®ILùiiÜß/úòŽÐãkyGñ«ïƤG®¼j_óy§uØ™‡¨Ê¬tÞ‘~óíä&®Ò‚ÿ[n¢úÏçùsn}”Þ}"ïô=Æ•>»JcG=JE«?M2=Çó˜^SúöÛo·kê*Ðõ<Ÿšÿþ Õÿ~s Én·ó³}ûöu¥Ç®R§³yÿÝ”wtŸ_†ªÞ7î=’矾]Óˆù‚»ðûº5+S½úþN²ó;|§Ä;3 ô 'ðzQY”ÌlëYÜ åËR­¬{óHVyº$ÉÕ¶’¬\™íS"†Ë~]Bµ/»°ÉŸ¯=@²Ìã<r°£ÍÄ­Š@bTïE Obd>ùÈ'ÃùÈ)Š2N#PŒÌEä"P$XŠub89…@Q&ÂiŠ‘¹µ\ŠÅ[¬Ê•ã+\ÙÖ£f³«¦œ÷}¸ÿþû9CÑÿÅ‹ø™‹ë.éH¯hÂW’öž4„ÒOŽzÚ“%ñÅuC¿«©ýÛ£øŠfÝR|Ï{ÝKøJù!lÇ“‘?=6â.jš1ïe’köð•¶Kï~…Ò}úô!éõß5}ºSÓ¡ÿ’|u ïh=øÒ‡”nßžßÆæUÿÙ­ø™…§N[C*®û„wþ>žÍãÒ´iSOªÿE?Î¥ö«oägŽãœÍÛwS~ùò|Å3V#{÷ì¡&ÍñÎÆæ[x'¢Ê¨tÊÏŒsGqþ\~Öë¶«yçgj÷ý¤·Ã»ÕH®Û²‹¤×o¼ò5ýzâp’74ç+ïw,âñ˜»è7Oª÷3OjFíK,›D²y…ƒ$'ä+Öïö•'ý¢Qïî¬ç²ò|¥z÷Aæ¿´öµTå… ¯‰ªž¤x&qbûÔþÃå¼³¢êΆòeøJøÖÛx§ìίK“S¯ãxêw»v|E|í2ÞùÙz ûýEV }ýz“dÏž==éÿæë/©Ýð›úœs9ïœ1‰õúÊoݺuLússs©þ«/>KráôÇH¾Ôý²þóü½ðíBöËzõêŤ_¼ôeÄ]·P»jë§“z*ûe‰ÇxçàÐaæ%žùskDìÄT,ÁëïUU~¤¦çÖa¿lô"ï>;Їó÷Fë–<¯ÞëÆ;‰¡öËK?çÅßÖòη]¿Å[XEyAA}̰Þ*[µ ïÈdÜÃÇñÝ&®ùàŠ“èóç‘ídɵC!9år·Ëzò÷ìÚùx¦,ååu¥/¾:9ª~¡W¶Ó©cʪ‘Ï;K³zóz9š—‡Ðêú×Sù°|g’Ð#¤Ð'øÈùâîm³'PÕ;òyÂ_ñzŸvöí”ýõlG´—¥°#ò…½‘ÞME§fMò¶Vì‡W|Ä~Ó²÷0ÊïÚ•9‰övR¶3䆫)kX þžír,Ï·sß*Kù—Üü(ÉÓN;¤^9ÿŽ;øN¦íWS»®äùT—ƒÐq/qÿï|˜çuýúõ©žø'ë“óÅ…Ø~×_GE9ÃØßE½Ê£øû|œµÞ‹w®¢žŸ­ó¿i/?CUWßÄÏçZfJ=–JùGsy>}A‘âûVìè¥_‰ÚŠ#ú.ňX 3(¢û€@1 GaB|q!P,DñÅp,ÃyÈ)ŠЊ~ÁG¤(Fçƒ@12Šb&AþŸÅ€ŠùÖ3céÅùÊ\ÞpžÐÂmšÃŸòÚ >ÈWE¹[)¾P„\²x5½ÆÚIüź'ý©¹¬qÇ |åù±'Ÿ¢ ÑNØi;ÙæL~£qúvjòÁE|å]\¬Ø™gРAaú…>';Ï?ÍWÜ3|ª>ÕŽ¯ä]þ_!lß$åË;âJ›“»oëOí/Hÿžäõ-øJ[û©å)=`Ä $ÅÎ>a*ÿñO<#دo/Êzêôõ$ÛÕå+vM_âƒQ/½Eùâ ¤Ð/$þñO¤…Ü¿Ÿ¯$wíÒ™ªlÂz«ñ…ÍPù‘ìgï[o=-S†í‰ö²”í¬Z¹’²î¸m ÉýC’´M UÉ;Ÿ}Á;+²>‘ze>s¾þŠŠ¾˜ú"ÉE×ñ•÷ |X¡³§0ÿñÖ•w¡Gè•¥\þÎÔ7)+í—$§õ`ýó¬ˆÍæ‰=Må²>»´°sËÍÌe`+æòÈ9ì7®àO¬<Ž> ¸u(IqüBo¾µCRâu@”‹ü‰Ï¦v÷ž´•dïflgI£ªžC²Å)-H ½²üS?[8’Éœßyu µË¸›ýžüë<•ý>¯ ë¯Û°.ë·¸„R¸f¡^ÁÇ’û÷±^<›*ÎîËýçV¡PË—YµVm)«rõ*$Åú.¸ˆú…ü-@;·ðY³ÃK¨ÊëÝx'NÔ¯9†çÕñíXÉÒ%©HæR˜¶üGŒû¶u›©~ŸªH>Жý†ü+þ8£óYœeñúD=‘–å/ß.¦*/ua½WÈ~·ß:ŒÚcxgâ„¶' U$eÞ¢PÖ¿oí&*šÖ…×ù³ë2¸{¸EÛ7™)C·W¡W¤­Ãûã̈K®e>sûò3wuy™ ÍÙÈå—}\‚>T±Þþ›šÂÇ#Ú‹þ¦¤j¦úbü¬ãþ/ø'ûMe¾q$4õWÖçåXÿñõ8Cü·ÌvTä[fòrxglý«¨dÿPæn½ 34†7@CO­®LåÕšÕf áÝ´¼å+R~ΑªŸ³|#ɵøV žÉŸ¦ªIª5®*ŠÂ¥¤÷o.*ÏÉdýY‹×SzýM|<¢ñ%ï1€…¥¸ßÄV¥OôW¬c¢8¬CÜßœŸXÿ†AáëB›7x^íhx 5-[ƒ¿ ǵP!÷Wä‹ìõ³˜KÅ\¶³õVæ/Ê>Ïý/ֆǵxöSÑ?ÁAÔ/Ha;–µP(‹û›o9âªÃõ—É j\ÄúSKòñÜBŸè·µœºSZ6ó.>g+uá—~¬?Ïê€XòòÂíŠþú-Å…Yì(ª ŠÉ“ÄÅÂ¥8Œ‹àƒ@12ŠÌEø‰b™F È'…€cIŠˆÂ@”Ó#¯7b~!P§þ–ÿXIŠÌ"Ekf@ÄAbÀŃÖï$V¨À7³x¹µàYß—âksú2Ο}°:}¨V¥8—å…òoWT­/–Ü£|…*×ú}±u7†_!Ï4ŒZÎW «4à+…â [\™’¯¨ ß̱žMÛºx-e¾;üJÔÿpG¦í®ÁÇSŸ¯@^—¼Ä÷¢–á¬Ã|‰ºÄæÔ~i¿ð+ã½Þå+x‹Ò¬+µ*r×,=’ºÂ+kâу¼3Qzýj·¸_øÎÖ¯ñ»}uêSy™ªÖV[jDêOiÎ:ÀúË­Ý@e ® ¿ÂYo,ë/uÚ±T^²œµåbµxÄ8r³!{ëßýëß7Tx© •}‚Õ»°)e+Áö ¯lâú…­Å‰í¾"Þx3oÁ͸”Ç7Û:Œ²s»¦W4£Â/ û)@düéÀT?ÍÒâVÞa™ÒƒoäGbB'MäþÖº´a˜~ÑÏB{ÜPáU+]z÷ÿ´»)ç•.Üÿù|A5Ôãc¾â[¾;û̥ЎuåWì ‰+Ä»?ä~ÿë8ö›1çs‹+¹7Îç‰R«Y=²€KÜ “ìÎVÝP¨ÌÞñè–É;\·ãþ¿´«Ü¿¯ˆ—=Ÿw´ Z¼ ±X,ƒ%—1辩¼ssϬÿÁ9\ol6ϧÊg‡Ï+¡®PáQÂ2퇽ôáÆ ‡HÞÒŠù\÷)wàóªÜ¬-BHKÝŸêà 6=»jŒíÈý¾þDÖßém¹â^?ËÇwXê çíŸz Køƒe&ã-v”§Zò:Ô»ëo1‘õéÁ;¥êñŽŸ˜§B[Šl ¼û¡ß_ÞDUÇŸÁër÷F¬¿Æs¬¿ÒÀT^¼2ûéßõ[–lìì~zU˜Ö×ÍvÖÎ\ñG¹#Çäy›R\ꘕ,Ì-üÀöÖ>Çý.y0‡2>ïÁú›TâòÏpƒãŸåg€ û-õSJŽ k …6ÜÍéûËx~1•P¨ÍtÞ‘n8ò8QÕ“\}Ûrj·ìz^wÖñÆzèòïyé³þ<ëιßiì(ªŠÉ£(Z‹×¿¿œˆpÅð…‡¿®ÿÈC H`ÂT |(Šù%&X¸?!P”¸HIŠáþRPZÙ%>VR,#óA ™‹ÈE (Hm‰@1`âÇ}HùòócH¦X߈©Åø ”H±~×jsÊ>ªWâ*¾ö·+Ó¿¥‘-Ëü ¾"µá¾B»o_Azú®ùt _Ù¯y_)“Û;¥W=¶Žª”ÛÇWÞÅ6UW ne½ãÖ“5øx.ùù->“¯@Vnãí dÎZÞyÊc#éÿÕÚù;s2óÿýÒº||'Äv’ýñ/k)ïØ”ûˆw(~èËý¯ÿ"÷¿ÜàFTµdmÞíÜÊÃ×PÕÓÊò•ÔÙ}XY뙆&£øÊ{±2| P ÃëŽÔ(†ó)Š‚D¸D Σ¨¦(,PŒÕ·lÝBMº÷»dÚ|%)V=rý¼ý|EvƒuxÄY|eitµ£Ø×ÛŽ¢øâª·ßó_!ï{<÷[ÕÈœM|…íÐ èÐN­Éúã}¦ApÊ^Ã;yÖÎbEkƒÏë3 B¯bg±¬µ³¸ã ÷¿ìmñí( þu:ðCBUgñÔ¢<¾žâÅ4;Š¢ÿG¬Å?ò–ÐÌe|Eòä‰-D•¸dÆyÇïØŸù ç÷< Bñî(ŠNe|Á;–—ñæOy‡µÎƒ|…VÔs+wqÂvxÆjÚd5ïÀ.N-Eé·óf·zíêz—ǵá¾òû[u~Ö©úõ|…Ü®Ûü“x½ ¼s¹âÞ1¨u ï ¸ÕcWïÀ«›©¨Ú~fqëÙÖŽb‡øvÿßÇo$ýe·ñ<θHÍŽ¢8ž=Ϭ§Åvð:”Þ¯Ûkߎ¢Ð¿ËZ73·ðNE-ë¹Õ‹‹*qÉíðÎÊž¼³X¸£X"¾EÑ)±³¸oçQÊj9AÍŽ¢Ð¿n(ï,Š;ÀYwJˆòxåÊ[x篌ŻÎðÆñª k¿ìFÞ™«zo׸µAX¹Û„¼îˆv‹û±þZíùNƒW³ÿ‹rÏÒz-æbkç²Vž·5ºÄ·£(ú“oÝÁ°òßš×p¿+QAT‰KŠóžuÖÎb­›ê‘¾²ÍxÜ*·ã~tÏ×M#y}8æN^ïKÖôv‡ÜqÞ³åùMTTû¥×;„r§§žO^úŒäÖMHèw-É_–óJ”Ð?ì(ª Š#z”X0(FÄB ™‹ÈE (H°”O(†ó‘Se"áiŠá<äE&"¯;‚EA"\ŠóŠÌb¸ÕÅ…ãîØÉ;¯¾€²Òûò”(÷*sðÎâÊ»V’Šªíx'Êë[Òä/.qïþúùÊTùnÕÉNÍnÕ¼v9¬]Ζ,Jo¹ŽdÅ>Ö3 mùJjXe‰lë™Å-cy‡¢ZÞ±‰õ-iv¦³~å•-y§Î]ÇRÕ’µ¼]”ùg-â¡Í“¶“ÞcågðŠ•ööŒ¢|™ßó³x[ßçÅ&£yÇR®ç5}h&ïüXÀÇQ'ηÊýøý=æ’·‹wVªÞT_®â*-sö¼ÉãšnýÎU…>¼Ó.Êã•»¬·e–jÌWÄËÇwÄ«W´ß1v},Óžõ–kÉ;—¢<^¹ÍÒ_¡;ïT–iÈ;¯±êµã¿íyž·•/åUWöEÿ¶¾ÈWö«÷åu'½Bš(R"·YëBMë­•©%cÛñsêÄö7ygº¦õöFù÷ÚÛq/5Þ9ƒ×…«Ù‰ý)°ž™Û÷ ïØW‘ßö+*z”ùGùûõÐ~V·Â©jv´DwDÿ³¬ãR JŠ¢˜¤ñöó¼Ã|§‡×gØbêŒÂÊù9|L¬Ï̺íB®õ®¯wÖØqösòy•.îG­;ÂÒ+z[or¿fÿ~äò'¨ËÝ»t]'¹};/Öª¥öû*ÌH ì(Æ/BSŠ#¸ÅŸYÿdéÅHTþÌC È,ìN(þé+‘>!PŒDåÏ<вøë'h!PÜ@XÄ-ׂEA"²D ˆ@1²gÍ\ŠI( ÷ݵ›ŸÙêÔ·e¥_)JÂe®õ ߯ùY F7 ¯ ¥r¬ñVÕôjéR wI»æœm|ï~ZÖ›ã³0NÖ³·³þâ5øžX¯Œ;éϲô{ÝésÒÄÚõú{KB¿ÿ#[™O©c¼íT ýv2Ë_¯okµÓ+ò³wòŽ_ k|E¾*™³—Ÿ¥*nùg¬zí¸ =G­{Õ;NBžõ{dÅï8 ýb‡HþÙ‚ÂrŸ?8ñ÷¹{IkÜýZð÷‡¢rÏ^Êßs½k\AàF ½ß€qZÅŽbœ¥æ(’K P”fFŒIŠÑ!PÜ@€ä+û‚EABLÔ7=4Ìiws¬#YÿHTôç%*wŠú}#- PL²@Q8áž½ü¶ÆóûœGYůæq«dÞëülΚ|¯Ë—›‹¦Ñ%ß‘ð—¤^].MÔT>ŽDMƒ¿?#îþpVÁ_0+ÁÝ,oÙøËD̤ƒÆ}ÿB~–6[ܶ›ï *ØÃwâdZwD5nؘ͟¿Ü (MV°£¨,EŠäQÕN¬ j ÚXP9©î¸«&›>ð—ªÚஊ¤7=àï[¼­‚Æb¼#Z´Û#PLÒ@Q¸õþýü;jgtjÅY;ø-|K¯å·•~<…òOžèrGQ(ö(ƒ¶€z<Œ„mþþ ¸ûÃ]XA¬w³¼ekà/1“÷¥øw3ûZ?c|j ¾5¬¾õò÷\¾±,4|!¿µý×Õ|žh†–z+ØQTË"Eò(Šj'VPµí ,¨œT÷ ÜUMøÇÆKUmpWEÒ›ð÷Æ-ÞVAãŽ@1Þ-Úí(&y øËÏ ÉïéÅoA]|-ÿÞœ¸‚TâQž§¼j]jÒ<‚¶€j>ÜÀ©†Üýá.¬‚¿ aV‚»YÞ²5𗉘I{žõ»›XMF·ã;Ê®mÁ;‹‡øQÅÐ1Ïò[ÏfðïO›¡¥Þ vÕ2E ˆ@‘< ¢Ú‰TmAû *'ÕýwÕDcÓþ±ñRUÜU‘ô¦ü½q‹·Uи#PŒwD‹v{ŠI(þºôòì+º·'¹ô:ÞIîžo½½4íaÎiõv›d–AûKfÖ=6pÿ+ óŸÁß<óÿ[w¸ «à/H˜•Aç¾ûÑ ¤kÞYßù¥+æŵ›¶SºR¥J$ívÕŽEŠäQÕN¬ j úXP¹ÅÛ/p—`|íÁ?>~^[ƒ»WrjÚ¿ޱj :wбŽhÑ®@1ÉÅ]»v‘Gw8çL’›¶l%™om!Z‰!‘®P®•3º IÝÿ‚¾€ê>~¿õƒ¿?#îþpVÁ_0+ÁÝ,oÙøËD̤ƒÊ=kõQб 3ÉFUj“œüÂ$sòø ñµfSúä“O&™hÿ°£¨vÄ("P$B ¨vbU[P¿À‚ÊKU¿À]IozÀß·x[{¼ãkþññóÚ:¨Ü(zÑ¢Ýb’ŠÂ333écnn.ÉÔÔT’))ü»‰"]PÀWZ_p:•—ìÏõ(¡á_PP ‡H•àïϰ€»?Ü…Uð$ÌJp7Ë[¶þ23é qÏ=ÈçgU'³?šâÇùó(}a— H~øñg$Û¶mV/QØQT;R(’G!PT;±‚ª-h_`A夺_சhlúÀ?6^ªjƒ»*’Þô€¿7nñ¶ wŠñŽhÑn@1IÅXÝZì<¶lw"5-}CZ¬*\ÕÚêªÓIT üýLp÷‡»° þ‚„Y îfyËÖÀ_&b&4î9“ø¸ç¼ó }HÔ·™º=ì(º%å®EŠä)ÝM˜D¯´/°Dçé¶ÿàî–”žzே«“Vpw"¤·üõòµÓ4îíF ùn PD æ'ùùù”nqVs’¥o´vùÑÆ°ºÿOd/9HyYù\¡ÂÉåþVç¯A[@ÿÚ·¢ðüýep÷‡»° þ‚„Y îfyËÖÀ_&b&î¹3ùxŸø<}h×¶>[ÁŽ¢Ú@ ˆ@1Ì£(†áHºDP¾À’¬Ã» ÍÅ௰zp·c(ü –Ì…;ÅYÒÈ é…EŠQýFì,–øï¦c™ùÝ>j—õÑ’G;Ô Y£s•¨ú‚²€Fíd‚¿?ƒ îþpVÁ_0+ÁÝ,oÙøËD̤ýæž³ˆßrzýqè€ß4ÄÌÄ vÕEŠQ= bT< Wè÷XÂSÔapWÒ£ð÷.Îfà'À8›ƒœ=6÷›;ÅN4r³p~ïуÛ!P„#…{„Mªå9ü6ÔÜf¼“ØháNªyli~¦ñýzÖŽb—ª68Ûï4jçŠ@!øû3Èàîwaü ³ÜÍò–­¿LÄLZ5÷‚<þ½kÑûœ½Géc¡Ü“Céì-Ù$ÏoÈ¿‡8ùÅ)¢I‘’ØQT;Ü(ºò(Š®0¾’ê/°Àp@:îþøûÃÜýá.¬‚¿ aVªæŽ@1¶ñC /§Ú(:ù•O}s"ÉÉß@òÓËòHù’ŸY|·Žµ£Ø;Š& ÿTô0×-p÷wHÀßþàîwaü ³R5÷½Ÿî¦ØôßÉU£R*¥ëVäó¯cËóŽã–},/ü4•<ØìÄEµ@¢+B è Sà+©þ ü¤ƒàîï@€¿?üÁÝîÂ*ø f¥jîc?бñrª@bTy{òkTþÁ³w’œÖŸQîø’?M¯S“>ÔÀŽ¢@H©ú ,ÀN»¿ƒþþðw¸ «à/H˜•ª¹äòNáîg×Óô®’Ert{~G„8ºgæñ§Mo¢cž{A)‰@Qíp#PD Õ£(FÅ“p…ª¿À€OwŸÀ[fÁßþàîwaü ³R5wбÅØx9ÕF ˆ@1¢LxñyÊóÈÝ$Ï«ÏÏ$æó…­PAˆïÿiÓ*ßÝÞÚQÄï(Fä”LÕ_`A9® ÷Üý!ð÷‡?¸ûÃ]XA¬ÔÍýÀ ~V±êb¾Ã뇫ùüìƒ|œ“žOÞÿì+³kÕEŠ= bD, Ÿ©û ,ái:p×Ö¥Zðw Jq5pW 4Fuà#0EÕusG } (Fçk)EŠ}fëÖ­”?cÆ ’))¼ƒ˜šÊoÛéâÅ‹Sùø©/’̾øÉb¥‹‘”ÿé^@e{H‡ÿp¦RànŠtd;à™‹î\p×M8º~ðÎGW©nîYËøw[íiE‡0ãí÷H¾ÖOñÑe(½ð×5º1Ðz(ªŠ#zňX>S÷XÂÒtà® ¬Kµàï”âjà®hŒêÀ?F`ŠªëæŽ@1ú@!PŒÎ'ÖRŠcõ™¨õÏêÚ†Êt?H²XYÞt/ Âddà™‹î\p×M8º~ðÎGW)¸ë"ëN/ø»ã¤º–.îÙ»yǰþ¢&ÔåOÞú„äÁƒ|¾uÚ‰Í(½ûwNÿ~0Cõ¡%„>Šj‡ "E¥…@Q)NåÊt})ïh’)wüýáîþpVÁ_0+uqG èn(ºãä¶EŠn}%¦zm»Mõ3ºüN²Xy~fQ×SçŠpeð÷gðÁÝîÂ*ø f%¸›å-[™ˆ™´.îY¯ðï&.úêg:ñŽù¨^yyeõûW’âr½dM#PT;²(ªõ(KE-XãVªë ,îŽ%¹p÷w€Áßþàîwaü ³RwŠîÆ¢;Nnk!PD èÖW<Õkß³µ;ÐqÉõ6“l2´çOá·«n{€Ò'<IüÓC@טžÞ&Vp÷w,Áßþàîwaü ³R5÷ÜOø­ó¯{“ää“N6{@ f ¢ÚC ˆ@Q­GIÚ(J@|NªþóùpÆ<¸û;Tàïp÷‡»° þ‚„Y©š;ÅØÆbl¼œj§tìØ±À©R2–/Z´ˆ«U+þšd<Æ ÓÂ_RwfðÛ¸J”æ·¡VÍË¥ü­œ*s\™ u;éú’¹áSé¥’îØ‚|@àîï耿?üÁÝîÂ*ø f¥*îùøô¼^…útµkÕ6{ j ç÷j"Eµe£ ¢ ÃÙª¾À w;áÍ»¿Cþþðw¸ «à/H˜•ª¸#Pô6n½q³k…[Oqë©ohÉ/W¶$éØú(É¡§ñ[¼¼À;ŒÇáE-Ü…RÕ·Ä½Ñ €{t>ºKÁ_7áÈúÁ=2S¹àoŠt¸¯Üó³ø|(kM6)Ý=ä&’›6m"¹rÝ’-š6 ™’Â;‰¹”ÎëË÷æ§WO£4þ©%`÷¦Ö ´ÉÀ]&b6 þfy kà.Hø#Á?˜ÜÍãgLçg—öãÅj¥¹¿Ýßç-Æ›ŸBݺuóç@Ô*Eµ‡@¢Z²´!PÔ‚5n¥8qˆ¡'àî ›²F௠eLŠÀ=&\Ê+ƒ¿r¤®:qG è £çJ=£‹Ø"ÅˆŽ¡+Ói_tUO2½±å’iÕ‹éêJ‘ÔëôV$¡8hp79Š ðGc¸k„ëB5ø»€¤¡Š[îsøµïÛ§o¦^L¾8äçë‹“lþÏQ$HÿÜp:Ït§µŠ…/‘N¢Þapû¦·EO;¸û;æàïp÷‡»° þ‚„Yé–;E=ãâtž©ÇjòjE ˆ@Ѩw»À½®¹˜úµî„•$Ókâ™Eåö L…-èø“¸ÿÉÂOàïõÞzêöB«ðûBF?8qÏÞ–Cýi±þ’S'L#Ù£S[’G6. yjOÞI|rÔÓ”Æ?wÜžgºÓ†Z(n'0E=Ãâô¦Ç*´‚»¿>þþðw¸ «à/H˜•NÜ(ê·ç™z{‘<Ú("P4êͱNàK¯¿”ú·¶ér’iµ"?³¸wüF*O9¹"ÉÊgZ?LD)üœ¾ÀD=HµÀ]-ÏXµ¬ÄÔÔw5½j¯äâkgǽ ¿€}•ßö¾äÛ¥ Ýrc?ÊoqbK’7 º-b=dF&ëyfd-È("P¾`DÆ:(ª»/0µV M&î2³ið7Ë[XwA þÁâŽ@ÑÌxÄzži¦W‰k"E£Þëu_Ö¿õs屿’L«Í;‹»G¯£t½Ì,’[έE²Ê9•Hâ_8œ8„ó0•wS¤#ÛÿÈ\tç‚»nÂÑõƒt>ºJí¸}-¾7æúиQã¨]ÈÌ̤òÒ¥­XŒZ…‚€×óLÑ2¸aw®@IDATœEŠá¡9åu#PT30v_`j´C‹p·#c&üÍp–­€»LÄlüÍòÖì¸#P„ôJ¯ç™z{•¸Ú("P4ê½ñNà+n¸œú;÷ÛIŽ:‰‡èÃÕ|Ïÿ÷'ñŽbÕvØQŒ4°v_`‘ê"OpWÇÒ‹&ð÷B-þ6à?Ãx4€<ô¼·•¹ý–ŸMÖm)íÝ‹ïòn-£ˆ÷<3šî¢X†@¢Q¿w#PŒo¸ä/°ø´¡µ[àî–”žzே«“Vpw"¤·üõòµÓ.sG hGJO~¼ç™zz•¸Z("P4ê½ñNà\xõ·w¹oI^v|É+?I%ù]KkG±=v ˆôOþ“Š‘ÔDÜ5u©ü]‚R\ ÜQøÇLQuÁ½^cHc÷Òü»ÐB‘¨‰F ÞóÌhº‹bEŠFý>Þ Œ@1¾á_`M†6ˆOZÇDÜcÂ¥¼2ø+GêJ!¸»Â¤­økCU±àŽ@1*&m…ñžgjëX‚*F ˆ@ѨëzÀ—_Ô‰úÙ«Ì÷$/kÊÏ&ŠÎ_ó ?£8çDkGñÜÊ¢ò/ÄÅ¿@1ðÜ @Žbü£ÀÑXîáºP þ. y¨rhEµÊÙ{”äÑ=9$S÷d“ܹàÉSZ@rÞw‘/‘ ñO9¯ç™Ê;’$ ("P4êÊ^'0E5Ä5cÕî±S[üÕòt« ÜÝ’ÒSüõpE ¨‡«*­^Ï3UÙO6=(õéX'ðà[Qÿ>˜ú&Éé¼s˜Ï/ ð‡Ìl¾’WºWmªW©}9£Ç•(ÆpâàÏH»?Ü…Uð$ÌJp7Ë[¶þ25é_oXFŠºÏç#ÇWȧtýò¬Ô\–ekñï$.Xºš3ðßXÏ3t* PD hÔ}cÀÕNÔòt« ÜÝ’ÒSüõpuÒ îN„ô–ƒ¿¾õpU¥5ÖóLUv“UEŠF};Ö œ‘ÁÏlݺ•ú™’ÂWðRSù-§"žžNåyäOåø’^ڱŌ_ÐáÄÁŸw¸ «à/H˜•àn–·l üe"jÒGÖó;V<¼–ι–õ¶­Ë²ýë,Wæ-Æ{pþ!ëy¦‘N%°Šºo¬¢ÚáÁ‰ƒZžnµ»[Rzê¿®NZÁ݉Þrð×⮪´Æzž©Ên²êA ˆ@Ѩo›šÀ7Ü9€Žk¾õ–Ô´cyÒèÁÐNüp÷‡»° þ‚„Y îfyËÖÀ_&¢'½í^~ñ¶ùYÅ/WóÛP¿ÝÌw48ÄwF•(QBO 5Œ€©óÌ0£Iœ@ ˆ@Ѩ{›šÀ#+N"sÑ îº G×þÑùè*w]dÝéwœâ­…@1^‚jÛ›:ÏTÛëàjC ˆ@ѨwšžÀƒþ=ŽïûßLkÄÏ8ÊŸÃWýÄÏ”?£"UII‹\_nŸ(iœ8ø3Ràîwaü ³ÜÍò–­¿LDm:{=ï¶9ØŽ—Ïá·°O~óuN—-EòÓ9 I6iÒ„$þé%`úñ–"PŒ— žö¦Ï3õEp´"PD hÔýšÀ·Üs3ç·i_“LkþÌâª[—S~±â¼ƒØhÔqF¹˜2†S¤Ãí€{8Ó)ð7Mœí»?Ü…Uð$Ôʼ#|R‰Ê’ây3ç‡hÙòDJïÛ±…äô?%yÖYg…ÕCB¿Î3õÿZ("P4ê…~M`Š<Ì8q0êî…ÆÀ½…/Àßì!p÷‡»° þ‚„Z‰@Q-OÕÚü:ÏT}Aч@¢Q_ô{6˜Ž÷ë‚Y$7MXEòÝn¹${–F²áSØQ$ø§„NØ”`ô¬ü=£‹«!¸Ç…/îÆà7ˆ ŽNå왯óyDÍš5Ãê‰óœÉ“'S~5ÂÊ‘ÐK@ðŸ…ó{% (‘”8’[%~O`Šh¨š màvÈPOœ°)€‡ ð^MÁ=x š‚¿ˆT PŒ%@Y~Ÿg…’® PD ¨Ä‘Ü* Ê®U¥ uyvßL’ÅùçŽB­&óŽb£ÑØQt;¦¨çL'lÎŒtÖtíuƒ»=%௖rîW¬ï‰«ž¢]:u‰h (ç9;W2Á_í #PD ¨Ö£´e#Plà0R(VI'l*iÆ® ücg¦¢¸« è]ø{g©%ÅHT‚—”óÌà‘ñÖ#нyŽÇV~OàæêPÏßéºä UùíeùçC'¿É[‹ž>Þã»Nüp÷‡»° þ‚„Y îfyËÖÀ_&â-³„ßapù1W‘‚{o¿7ª"¿Ïs¢v®‚¿ÚAF ˆ@Q­G9hó{#PÜ@#„gUq1NØQøÇLQupWÒ£ð÷Nj†@Qð¤ßç™Çs÷("PŒÙiâià×®S³ uû¢z¿“¬^¦€d>‹Ðþ,>ª×~ãŦc±£ÈDð_œ°© è]ø{gOKp‡^ümÁßÃü¾³(gßQj³‡eööJ·.Á¿øÎÄw\)ôë<ÇUçŠ@%ðW;È(ªõ(m~M`Š<08qppPMÅà® ¬Kµàï”âjà®hŒêÀß0Šî8%J-¿Î3…O¬ýD ˆ@1VŸ‰«¾é œ——Gý}ñ…çIîÞ½‡dJj*ÉTK¦¤¤PzóžÍ$*9—d±8ŸIð'þ "¸ûÃ]XAB’Ö!MËÜÊÇÖ“Áf÷6” «I^™AŠÊ6ã·X«ÑšôíÛ—3þ›>ÏqèN‘+µCŽ@¢ZrÐfz#P œ8„ó0•wS¤#ÛÿÈ\BmÀ$G6ü>ò8"PŒÌ%YrMŸg& 7»ã@ ˆ@ÑÎ7´ä'ʾÿÉtü3v¿G2íDÞÔÅ Rœ8„ýSàþù˜o]ÉOM׳¥ut?¿­pÃË[Ȫê—8en䇛K×/ù—£R÷q÷G»HYÕ «‘LISËiã“ëHoÝ›L-£fËËâg¾–ݺœô6»‹wK4.MéxÿemË&›_Kò˜Kj,s?‹¯þdiu'òHæâuaÓƒk¨Âèv|çÑu'Š+'ÜîÁ9<ß Ú £Œ|(²B)7QÎs¤n'MüÕ%EŠj=ÊA[¢L`Љâ˜à„-2.Š‘¹ˆ\Š‚D¸D ÎÃ.…u'2Š‘¹$Kn¢œg& oŠúj¢Mà‡F=H|ÞßÎo;Kk©öоQøɃiâl/Q¹¾p]&HÙÓ*(˜±`?éËÚÀ;sUþQS©þýS·‘¾-sù‡R[(~›ñæ‡VsyC"T÷Á&Jû¿æö¤/ï(ïÐ5{‚RýKú/#}iÖFbÓ'šqºRZ\vÄŽâ’¿‘žãëðÛ¤ .«KéRÍËÆ¥?{¿r#tNC^—iR•ô–íÌ;°qI‚Ɖºî˜F¿wüF2Ù>—Ÿy}½Ï·×sOæ”ù}xm Þzjzl¼ØK´óL/Çh² EŠ&ý-”h¢Q÷HZc‰z†@1ºK"PŒÌbd.¦suÝ1Í ¢iâzí%Úy¦^ñkG ˆ@1~/ŠAC¢NàGŸ~„ŽòÝ-o“,v’tÐÖ³V¿ÝÆÏäÔ¹©U(b|WÎ%+q'qâ7BO •ûöwÓñæ~ÅÏÊUëÇ;B%O,Üh×$Þñ«¾šw·±v„ºV—«zJï·Ú]y˜dé–ÜïJýy~zRú—FÛã­Á ù™¹1«‹Siíjv×ßÅ;Š3ºå’ÞNÓxç¬ù‹ÍÿÒ ï—ÝÈ;Š;ó³Y ^à­ÅºÃ“Òôê|<±Z(Èe}?[;–ù#XÃSxgñp×Ú”QêTo;Ô9{ùwîv<Ì;º»nã ~ÿaýßÕªDúËõt·C]`ý nJjbß1"S¢®;òqèNg­ä꺋Ù_v¯ø…L>y߉ðèêS(ýß¹‹\u%QÏs\\Tµƒ„@¢ZrЖ¨¢ÃÀ¢8*D=aC uXC#óA ™‹éÜD]wLsB hš¸^{‰zž©—Šwí(z÷-}?ñÜtÔo¯ŸB²˜õ–4qå¼ks¾"¿üœc¨¼RkoWÌ= uÕ'®0)¯”¨Üw~ο;ÚgËNbòÃnöïýjQºôéÖŽy$¶sêvj9¤`/ɼ#4§ªµ#ÔËÝŽù]ã7QQùuIlÃýj+¿}³Šõ¶O»öNù;ž\KU^;íÉÒÅyGª×üŒ_½Gù™?'=…åÖKÅצa«¨èë‹y­®µœTyŠ[4u}õ ež¥ˆ7ÚBVº@JoµŽÚoÄõ«Z/%­õs*we*Ï;mÖÎÛŸú,;y|Ü©,Sò¸ýš×6pÿî'Qøï¼·xœ·5âÅâ•øÎ‹«}ÈzæóïiÖ{4“wX·}·‚tþ>Ôê‡eáŸ3Xÿù¼—®~gGA.ƒÿaý%ð³œûljC~+L q¿Š¥1ß¿òŽâç½ùÈV¼‘Z´ƒûwÉg•IåñmN#™––N2=#]¤-Y<Ÿ9LOçzÓ_~ƒêÿvï¨Õ²6Þÿ—wÔ~+ÞŠÊ;vëA²x·/Y’7²Dz ¶géü„ìÓ§7•N"TŒ»*?’í}a4jÌÏDŠvN2#ƒÇó‚óΦö{og>3×óq\Ý‚ò'½û)É×_{…ä[¯O$yåuýIþ£Ïå$‡>tÉ5-x‡²D oÏf’’ýKÔuÇÂì7x=›;ã2Y®œµŽIxpÄ0ʹÿ¡G¤’ÈÉd9ω|tÁϵc„@¢ZrЖ,¢Ã@£8Œ@¢ž°!P´"›<ΊbØôl"Q×S@(š"mÖN²œgš¥fo "E{ïÐP’,8%…O î‡tñ¼#°ä,ÞQ¬|&và ÍTÐNØŽ,☂…¼s•šÊ~[¸cgíxØÍÏöu©ÈÏNìaÝjh ã /óÎRå–¼óT¦l*;VbgÈngké‚%Tÿâ2üƒeÃÛ±âe»y~õœÁÏ*^sËm¬×Ú¹;Yb‡¬0]ÜÚ1³ê½9q<µÛ´ä[’¿ býwÍá~®+Ç[˜ßE¢¿²ÇS¬óéÁ7]Gínª9ŸäÅüÈ`¨ñxÞš{iòû”ßêT±ãÇ;^²~‘ë 5úã_›SާcNå.1N·ÌkDùó—ðŽ£¨«lP›ß2;ç²½Ôô¹_ø™Óc:1ïÛïy V•aõ‹c¿Ê¸‡ýæØx§rᯫ©^­ÚµÃê»M<È~Y·ïÖ—wdÿýsSRñÝ‚eaª–-ãtÏüÌYïãr©üÝ•¼³y ‹çCéóøøËYÏÞ–¬Í;¦aÊ(´u'(èr?çž¼pÛKôá¬6g)íZ²œç(…bPø«…@¢ZrЖ,XœÐ!Ptp °!PD øÇD ˆ@±(.Ñ“{Ô“å<3(£„@¢Q_LÔ ,ž‰)[–w ÖÜÊØ ¬ ±Ï2h&_A_s>_)¯|&_¡6 9б ,QºšTEAã~xYñíQü’ ”¤ØÙ;g'ò3]?L`‡¥+?‹wú$öë§ò¥ùÓZŸéi¼y„ŸùÉž5œÚ_}2ï$v›QƒÒ«6ðN¦'å4ºå&~mÖ;üŒÚÕ­ù™ÁŒã¯$•Ž~Þ«jj×ç¢.${—˜Iò‘ù|Á¤¾¦tË“ø÷×(áá_û3N¢VýŽYJòÉ%|§Â²5›=hû{“&õjRfçú<®5Ú ôðGFý½²‡œ4ëYËúUx'qæw IKã&¼óçA%5ÉÊÊ"Y¡<¯ÇÍ×£ô¢ßÖEUyy¯®TÞ+Çë²xå^Âà†¦-gÿ›lÉC©¼ƒÜè‰fQõµ0hëŽßœrð=äZòÃÊ7÷¿YK—õù$µÛüÁ}$?XÇoܺëwOúäF·ßÊ%N~u<ýóÊ«HŽÿº\ÕSúÊÞ=©Ý¼oÿKrÊû_<㬶žôÉÎiÍ;Š«×n ¢{ÈUâJ߸>µïqag’#Ÿ›—>¹qÅ ¼ƒûãüyTÔô¸ä*žÒâŇFÜKíG=3ΕžU«VQ½çò3£+¢t6o4…†Îæ;B&üÄd­Kxg»Jg~–Ó•‘U êºcÑ‘µ¼}Æ~ž—¯>÷šÖ.$êyŽV(•ƒ¿ZØ(ªõ(m‰:(: ,Š£ê Å¨ÃæXˆ@1:"ŠÑùè. 꺣û¸eýe"ÉNÔóÌ Ž EŠF}³¨Là_{¸NøéE’ÅÎ0ŠÙÖNlÑh-*÷ƒOm ãÞ½‘wï¹o¥‡ÜÁo}ÿ}ÞA¿}àõ”ÿÒ«o’ì~Ñ¥$ãý7vìXRñÈý¼£¸s¿Í2^½¢ýýÃùx^m"emÜß3B¯O?õ}lÓ¦ ˶íEQ\2?Ÿßâ¹ä—Ť§ÙqüöÓR¥JÅ¥×tã ®÷—]Ü•P¤®ÿÉwãĺ—T§tå «™F¥Å^P×U»ó³=¤*e'ïæïÉ¡tÖÞ£$íãu­jù”ÞºûIÝÿ‚ê÷º;(úÁ_íH PD ¨Ö£´• Œ@ÑÁŠXqPOØ(Æçˆ£ó êz@1ú¸%J)ÅD)³ý êºc–‚:k(ªó&šŠÚžðæ¢òâü M±3ùʵ TZª5`Ñr°R4î™øÊzþ„õDiö¼ƒ5fAIJùޝÌ_Þ»¥ûßÈÏúÓþ¼Quß•¢¶î¸'£·fP¹¿ûî»tà·Ž¼‘díAµô‚ðI{ÐÖÕöŒÝ@*â·8ßy:¿Ö·^6^Ÿ_Bjö¿uwîÏ+¨~ݺuUw%L_Pý>¬“Iœµƒ‹@¢ZrÐVÔ&0E‡("ÅA;aC XDÏçà êz@ÑgÇPd¢"I¦&¨ëN¢bF ˆ@ѨïÕ VYºä¼Z¯±µ*œ3•·Ÿø1å´mÛÖ*Ñ#‚ê÷zŽ6xZÁ_í˜ PD ¨Ö£´Õ Œ@ÑÁ1’¼8h'l“ÜárxA]ï(ÄAu¢"I¢&¨ëN¢âE ˆ@Ѩïõ üÆ´7ˆ÷³_&™z?S‘cí$îÇÏŒe—L£òºóNŽªA ZÀ¢ê¸‚®'(Üsñ•öuwó³:Kû³ÿ_Ä_]Ì¿“تU+Êè7ðv’ÿèÝ;舣ö¯¨¯;Qáh, wñû‹m/>‹Žºø5)ÞÕAYwL‘ØÿÉ~2µãc~»ñ‚ñz÷ð<þ}Ön·§ò¾}yGYW¿‚æ÷ºŽ3¨zÁ_íÈ PD ¨Ö£´õ Œ@ÑÁA’´8('lg%©‡ó°‚¶Þ#P ¦Ÿ¨êEU$[OÐÖĦ !PD hÔ‡1÷¤é“èÃÈw!yøÛµ$?¸ˆ¯€^ð)ïìÔ{;ŠL,±ÿ%PÜ9e,XÄWÞ3 xG¥ü9•)¿Ü.þý¸_ç.KlàRï±îH@ %ƒÆýãOøµ»Þ»ƒ”9—_Ïãf‚²îè>ðœ]ü»‰–6#SoŒãï×3N>žÒKð3ÿg]ý¥ï¹ç^’ºþÍïugPõ‚¿Ú‘A ˆ@Q­G9hÃf@%ÉŠƒr†@;Š&§VÐÖ{Š&Gßœ-ŠæX'‚¥ ­;‰À,Z("PŒæÊË0éŠå¼cÓýÜÓ)cÍMü¶Ó_øåm¡NŸ`GQ¹óù¨0(bæšL¢›Í¿›X¾yÙ0*Y³r)ý|~–§}ûöa剚ÀºãÏÈûõ·\G æUûŽdéúÉù¶S1ÚAYwDtÉÌ—xÝúõ;þ^MMM 3Õõ|~Ëi¯\FùÞV®:4¿W}|A×þjG"Eµå  ˜!Ptp”$+Ê Eì(šœZA[ï(š}s¶(šc–‚¶î$³h}D ˆ@1š(/+êxͪ•Ä´k{ÞI\}ÿ޽tê0#>Ô{ŒŸ¹åñÊ ,ñG¢µOî™ÖÛwÛìiGˆ'>÷j¢¡ŽØß¢¾îD„b 3(Ü33y'ýŒ [ÓQ—¸.¹ßv*†6QÖÑßXeîG<Žo>0™š¶sæLJ™ÂϦ•îÜo;£—hëŽè·“<ú?c}gûSÕ«®¸Ú©‰ÑrS~oô Èø«,ŠÕz”ƒ¶¢:ʼn EIÒâD;aC ˜¤Žhø°L­÷b}E >À‰¶î„÷Þ>…@Ñž JB!SëNQa@¢Q_/êxþüùÄ;'‡wSRxçF¼¥M¤×nâßU|ú‹§¨~ê¹|5ÞÁJÖ‡x¹ènŸhÜÏç·ðÞq:_±ï]݈´ê/êëŽV¸Q”›âžŸÏëczzõ¦m“ $ÛÉoÃ<¦^-JïkÉϨUïÈ¿¥ëIQ”hëŽô¬Õü{‰ :SÕg}Ö©‰/å¦üÞ—ƒK£à¯v("PTëQÚŠúF èà IZœh'l“Ô –©õbäM´u'òQü™‹@ñOødOÀÔºc߃ä*A ˆ@ѨGcdžû£Ï?¢¼=œdêyñí,&Û‰Cl4ý«hÜsñ3´ågV!hß|ü­ðXƺ£¢¦¹?0ìnêeʼgHj•MòÝ߸óo¬,Foåu´JËr”®Ü‡w‹Wá·MsíÄÿôu§Àz6?g7ïæìå;m²÷r:w§ó7ñuËKƒ2ÿ›_=8¦ý>Ð0|èø«…Ž@¢ZrІ ìH*F (IÐdÐOØd¬e"H{!`z½G >JA_w(†Rj˜^wÔô:¸Z("P4ê˜ÀÞp6ë3j8ìÍ{H¦vŒ¾³˜³ƒ¯¤‡Òùí©âJyÐO¼Ñ ~«Då~ôS~ï«ÿ~ƒ Ÿzê©Á‡¡‡Xw"@1åwñÌwÞö_~<ÚŸÅ}ÛW¼.¾½”Ë›>И Š×J®·¡}Ý)Èæï±e·.'þ'×áqiTÁ—ò\~˜7C N¡z_Ï]ÄÐÿ~ù}@qïø«EŽ@¢ZrІ ìȦ¢ ˜Éú ›FŠvd_ë=E ¯;ÝÌ"Ô‰•€_ëN¬ýL”ú(õULàøpñÕ¤àÞ×ùm”òÎbæwû¨|ûtþÝÆj7Ô£tùæeIýÄ:™„ÿ•û¾Y{h4²Ÿä­ƒï$yû]¼³]ºté„-¬;þ “_Üy`ðÁ¯ž y8—w¦^ÿ…÷köªNù•/¨êCVeÝ94Ÿ×—ýÓ¶™%ýx¼j”aP+÷²¼è~–tÅz®gcÌfüòû˜;š¤ À_íÀ"PD ¨Ö£´a;r(F è( Å‰rÂ&ãC (A:~­÷y”eÝA ˬB]'~­;NýJÔrŠú.&°Ü_Îþ’ }ù’9åø’kƒy¼“ø{&ÛÙsQ]úP¾v™ˆ?ÿå„M¦³~è Êúòþ=º÷Wñ3\OÿÀWü¯¼¼7•ß5ì!’5’U"uÇŸað‹{A?ãV§¯{%:Xo7íRÍ>YM´uçè~ÛéºûW±É=\çcy½©ôÿNæ‘l®çVG³~ù½cÇŠHðW;Ð(ªõ(m˜À€\#Pt * Õí„M`C (H@z!à×z@‘G+ÑÖŠ^fÚÈüZwä~$K"E£¾Œ ¬÷Cðï†}?m)žy9ÿþÝ9Sù÷Âvö°vOÄŽ¢Zò±iK´¶?¢¬;s3Éÿ^ÆWôÅQ°^ªÛÿö³Y›JRÑï‹*’Xwü¿¸óÍ7tÀ_ºdÉ x'Ê þYM´u'k3/,§lkMЮÝD²yÞb’ð KWm tõêü¬)%ôÏ/¿_»þjñ#PD ¨Ö£´a;бbŒÀ|ªžh'l}r”$3ë×z@‘)ÑÖŠI¶øt8~­;>®v³(jw²¿Àþ+ ïŸßŸ>…OyòV’ïõà· í¬ÅíÝëPV…–üŒN¢8ˆãIt™hÜ·?¶†OnÃ?<—ÅòCcðÎÌÜ-,û]Õ»ñ–!$›4iȡºãϰøÅýÎáüvÞsß§/wœõúL0øf5QÖ‚\~¦4¯+?ÏæDîñï£ãÆ#ùÑÿ%ÔßuõËﯢ.Á_­ PD ¨Ö£´a;rYŒ@Ñ%¨€TK”6 ¢ ¿Ö{ŠôêÞËwf*:`ÚïUô9™t€¿ÚÑD ˆ@Q­G9hÃvdSŒ@ÑL‚dý„M`D (H@ª `z½G >jA_w(†Rj˜^wÔô:¸ZR:vì(k n/5ô,Qîu×p辪w³ø:H—¯ÿ䑌#$K7(e¶#EÜZæ†$án}[äoågžÞ&!FëŽ?ÃdšûÚõü¶Þ¹;é€ÓÊòþ½ÿVƒºîäæ;\ª§Õ H6ò–˜ö{…]O Uà¯v(ü¡hµÃí¿6L`³c€@Ñ,o;kA=a³ë¯m>E[4(ø;Óë=Åð1꺃@1|œRKÀôº£¶÷ÁÓ†[Oqë©Q¯Ä-Fq[øóBú|^—óH6Y¿° ôú-`±ÈúŠŸe|úªç¨é.ˆU…ÑúXwŒâ.4¦šûâÅüûzÍ›ó[MÓÓÓ mýÿÃ)çžLéÔ«ø‡?SÒ¬‡µÃj„ßëN~ïfïåõ"k?kü¾–4Ÿ¼õIR†j¿OJH üÕÂE ˆ@Q­G9hÃv¤©¢&°.Õú}Âæ²›®«!PtªHWT½Þ#PŒÍü^w(òÏÅ6j¨/ÕëN¼ýIôö(õaL`£¸ÿfìÌ6gR^VÍL’i[÷J5½·r¬ågëêÜu¬TÉXø}ÂK_ÝÔ=²…wNÙÜšªO?ÅM3ßê`Ýñ½jîÍ›6¤YµnÉ®çŸMò”3Ï%ùÞ²wI–ìY´ŸM$ü3µîìûˆŸ =üã2±wtóóøû¥fEÞÙMËãž=óúGô¡[·nœ‘dÿUû}’áÑ~8à¯1EŠj=ÊA&° ÍÅ5¶Qoê„ÍÆ¼òlŠÊ‘&¥BÕë=ÅØÜÄÔºƒ@1|\Tû}¸v¤œ€¿¡ØÊ("PŒÍc⬠'À8› þO?ó4iºú¾+IëÅÏ’ˆÄS·þNù³'Yû¾Æ$ñÏS'lÞzç½ÕÑiÜöó‰3éCíÚµ½+ÓØRøý,¬÷)ÿ]µjîS&½IF>{ ÉËó[§­àuêýeü,\•F%©<­u%’O-Ïéòü{ ”(ÿL­;YÖËGð[g?¾‚á^(}m ýŠùWïñ(Uz×]I9 ªý>)!i<(ðW "NÔz”ƒ6L`@š‹ŠšAKêM°Ifµ'(jGœÐÄz£*@G ›;˜Zw(†‹j¿׎”ðw"[9EбyLœµ1ãgs™ÿò•ËIãE—¶#Ù£ú>’½ðcŸoùÊ|íaÒ¥á8ûQÔš›:a3ÍõÐOü¬ëm-ï Ó 4ÝWöd¿wÕ•â& ‹ûq yçzFw~–ºY•ð®¾ó§ïž“J2ê—!YgPÑzÛ³_ëζ‡Wï[ñï=møûäùŸx\–×íGÆ…3’ì¿.¿O2LÚüÕ¢E ˆ@Q­G9hÃv¤¹Xæ@Q3pK½_'lº¢n‰­_^oT Ew$ýZw(v¢Rµ“în´QKеîýEM"PD hÔç1âþ›1™ÿ#Ãî¤:™ó&|¬í!’s7sÓKg— ÇŒhÂøï‰€_'lž:C££ùí†{æ·Pöë3µ2ô’+VŒA›¾ª²ßë³Í% ‹ûô·ùáØéÿ‹Ì½Ü%ƒä³yqºµ£Xý’š”_é¼ÊíV‘ùì׺“½.‡—ýŒÇ£^ˆßŠze~öýå½|ËG3ç$åXèòû¤„¥á À_-TŠÕz”ƒ6L`@š‹eþ5·Ôûu¦ûè(ê&œØúåõFÕÑ PtGÒ¯u"vÝy¨žZºÖ=½ ¾VŠz)&°QÜ3&øŸÓº%•ž7‘äýgòï_å[?«8 7½ò;ÞQ¬s?vÿ3† ¿NØb袧ª{ßÝAí®<Ì϶¦¥òï×=ó#ï$\Ü£;•ß~Ïý$O<ñDOvâm$ü·‚ÅK2¶öº¹·n^:´t-/XµzóbåŽÒC‹±u;ij›^wr3ø‡Ë~Êo›ýîÓï‰åô©“IÞ6hɪU«‘\ºj#Édû§Ûï“—êãµD("PTëQÚ0i.ü(j-©7}Â&™×–D ¨ mR(ë®bt71½î PäñÐí÷ÑG¥à¯Ö("PTëQÚ0i.nݺ5YX»Šßvš••Mé”Ô’©),ó xk±V}þý± wó•zÍÝKZõ¦OØL\:`™Úw'ûK™ôpËÿfzágÞ™~ã­·©B÷î=Ã+jNaÝÑ ØF½nî§YÎëÍoß-Všw´mºSä²M¯;Gßâù>kҗĺzõêaÌ×­]Ké§G=ArÜ‹/‡•'KB·ß' ']ÇþjÉ"PD ¨Ö£´a;Ò\Œ@Q3`õ¦OØlº¡<¢r¤I¥P÷z@1º»˜^w(òxèöû裎RðWë(ªõ(m˜À€4ÇÊã¦Ô£‹nìA2í2ë!FÍýL6õ¦OØtóÛ÷5?“Øv?£ø\þ´—æ…W—•¥.Tª^‡äõ7 &yù}I–-Ëå”0ð/V¿7Ð¥"aB÷_ý•øýsÄå$Ó/b¿+Pc8HSëN.o †žî÷ õîüs;ÄÐË䫪Ëï“”ž#µ\("PTëQÚ0i.Ž•?E5bê„MMoµ Ptf„¡P¬ë[fÝ‘2µî P ]~n);àoGÆ[>EŠÞ<Çc+L`à5óÊËV~«`÷~ROÒ®ÀÎb,Cbê„-–>ÅSwÍ+¨y‹Jì‹¶²¬Ô´å¹zÉ;oçßéŒÇ–ж^ý^…í¢¬C÷ÑcGÖñkÆ’¬ÐŠý®(³Žtìº×œÅ¹döª†×‘zë]‘ºQäòtù}‘éñ€Áß#8›f(Ú¸†žlL`=\ÝjõÊ¢[‘ëé>a‹lU_.E}l“I³×õƉE'B\®{ÝA ytù}dkÈ• €¿L$¾4EŠñyPŒ­1c¦¸z¼ü·mßF=êzm’é}£ï,î{Ÿa+yjª_ºA)ÅG”êtŸ°™¢{ˆ'mïû<®%šóNNÅÓøí¸9ûŽRWjÿPŸäÓgšêZT;ñú}Tå(´% ‹{»ç̓÷’L+‡·F]ëNö¶2×bý)$§N˜É|‘ÍÓå÷EhŒþ1s¨Ž@¢ƒ‹¨-ÆVË3VmñòG +q®¯ë„Í[o¼·B è]QlïzcÇ ¢™ð|]ëÅpÎrJ—ßËvŽLü#sñš‹@¢WßñÔØ6eTñß¹k'õ©S_~»]ñ«Âß:¸÷ÙõTž·åÉ274`Ù¸4É¢öO× [P9Á={ëaÞihÞ¼¹¯]Uå÷¾DWÍ}åÊ•D¡Ï¿ÿA2½WB1ØåX×}?ì§ÞåìäÃÔ½ü;»ù{8}dß1P¦XIª·iû!ƒG“8¦Tû}ây0z þjÇ"Eµå  ØæbUü(Æ6P±ž°Å¦=xµ(oLü葪õFô¢ áNƺî PtÇÕ©–j¿w²‡òpàÎ#ÞEŠñúPLí1cÂ¥¼²jþ{öî¡>žßç<’‡ðNâÃ2)ýÔüT’ÙWñ3ke±£H<’ýß¡_3è/«t%ɇî}È×CVí÷¾L•{v6ï`•(Q"âQŽ?ŽòŸýuÉ §ãm§AY™±Š›î_M-[—âÄ^M (]Ÿ1ý½ó¢hÚø^æ8rÉ JÉŠŠDD³¨ä,* *b@sH0b@AE¢ 9çœÃÝ—ùÞ·jš—Ýog{f¶{g÷îùgj:Uwÿºz¸Ú¢g*eÅM'ÅÓÍö=|V¹X±b\€+°k÷À¦–ø«å GŽ¢Z‹’hÖÒ\¬š?Ek f÷6kZ÷Åð]›PŽÌîóŽ¢ÚÕ±ûÜ£¨†¿]»WÓ+´à/H¨‘pá(ª±$‹Z°-‚ÒTMÿ[;µ¥ßP`Éõø—è†Søm„éwÅZ8£¨iiÃRí™ø;kë—npu|ºìÞÕIE@çv¹~r$Íê«/>!y×½=IÞÒýv’G y´Í’qEbIâ⟀]GQh96~7Ý^‘•Fò“޹¢ˆäeS8ÄøñŒE”nذ¡Wy~OصûüÎKõüÁ_-Q8ŠpÕZ”D6°æb]üá(^8§°Öþ¥pÃtŽÐîóŽ¢ÚÕpúÜ£Ü:صûàzCk_àïK$¸4E8ŠÁYÍÖØÀ6)®®šÿÝ7w vˆ[Lò®:ü–S1ìFS9¢xæö‹(«Pí‚¢(_I§°E:¤3 ù¬Ó+·½NS騡£+SRm÷®L";µË}ÅŠ4Ë»nlMò–š|fñëM|fñè™tÊ/ØšÏÄj‘­ÄJüÎD¤uÈÁ>wN|q˜Æ¿òÉ{òzÜþs¿ÿ™)”ߥK­óˆ4åví>Òæîãµ+GŽ¢Z‹’hÖÒ\¬š?Ek ìlÖz ¿ZpÃoMB9"»Ï8ŠjW'ØçEgëa×îõ‚VfÀߌŒ³|8ŠpYŽÃVØÀÁ)j¦Šÿm7ßH#Ú³†#‰e EQ:—&zrŒ›uûùí—†T¡ò¤Ê‰$óÛ%Ø?Ø"•Wú~Ž@\²µMaúį\™Š*»weðÜ©Sî];´¡Y÷(²ˆäM3„õGX~¹Ÿ7“×ñ[•Scù.T[‹+àJœ>w2ó÷+üY…ô¼8ò’Í›5%Ù©s¿ª÷Ë”2dI\˜€S»?5À_ G¡Ž"Ea !‘ØÀ!ÁlÚ‰*þpMû-pú›_e” G1‚KÃP>oà(ªY §Ï8ŠÁñwj÷ÁõŠÖ‚ø j$E8Šj,É¢l`‹ 4USÅóæÍ4µk×’ŒŠâ_ø££ù—f! æïœ zj Õ+ГË5M/lÕ:ýƒ-l'ds`©/ó÷ÖZ4¼†ZŽ{õM’eÊ”±©ÉYuUvï¬÷üÛÊ)wñ\¹£ãoÍ)$òK8=/âçÈìíüÜ)yKY*/z%¾çw¡µ9}îd|Ìÿ5äÏÙ‘º‚ ^¨ÖS¯vUJú0É~y•ç÷„S»ÏïÜTÍüU‘d=pá(ªµ(‰6l` ÍŪøÃQ´·PNÿ`³×KøÖ†£¾k£sdNŸ7pÕ¬ŠÓçÅàø;µûàzEkAü 5Ž"E5–dQ 6°EPšª¹Å_|HûòkÑÌ ôÎ_‘E§°i2ƒ©=»Ï(ž~}õÙ÷2޽ùO<¥Û´iCr؈Ñ$›6å3P”PxqËîN!"UËýÆëøí§çöüJó_¼Ÿí§”A,ÖºxDr Õ í>wræðsyüð 4Ä&›ê™3g¨<))~× N°vo¦ùÖ€¿5NVkÁQ„£hÕV”ÔÃV‚ѱ·øÃQÜIkVsxÇk‰ á(F⪩s°Ï8ŠÁ­Åàø9m¬Ý;íí˜ø«µ8ŠpÕZ”D6°æb·ùgeñÛô´®O3MêpÆçŒ·§æžÉ¥z1ùí†,lN…vÿ` §±3–#öPóQÅù;l½.óÖöùN?ñ+G$Úvàï±M˜ò™wÅ SnÛ}ÃØæÁrŸ4eÍý‰‰‘¬Ð“Ï"F,Üês'ëŸـˇ’ì{ß4ou¬Ýç-¡Ÿ ø«eGŽ¢Z‹’hÖÒ\ì68ŠU4¯px©‡£^ëêÑû¼£ÜŠÁQ ŽŸÓÖÁÚ½Ó~ÑŽ €¿ZK€£GQ­EI´aKi.þ¹¹!¬ÛòRšqR?#²è)ÜÄêá(†x˜vçôyGÑÙ‚ QH8ŠÎ8ÛÊ©ÝÛ/Ú3ðWk pá(ªµ(‰6l` ÍÅáοT>ƒôË]IÜs’ô_ÇoÅ,óÎ(j6%êMÞGz¢âù»lÉmù{wÊòYÓÌiÜÍ¢éQ,^\ï÷ðÂÝî•@C%N¹ö¿õö™OѬ _ÁgZÃpŠa5¤¬£üÜ\ûØ&W| Gò/¯Ìû°FŽ8fgˆSË]EõfýšÈ~XÁÒ8§v¯qHùJ5ø«]n8ŠpÕZ”D6°æâpçGQ³„H=Åónœ>oà(:[X8ŠÎ¸©nåÔîU#¿êµ+GŽ¢Z‹’hÖÒ\®ü]‘‰­wËÊð[3çla }VsD±ì#ˆ(j6‘¨O[z–úqÅ“$ï»ç>­ý†«Ýkt(wÊý–ûo¦Ñoºx-I‰ƒ)…÷8`è95“Ïù‰ÏŸn£ÿ›þžÁÿÔ¦œ¿Vn ïyEØèœÚ}„M3l‡ þj—Ž"Eµ%ц ,¤¹8\ùÃQÔ¼ða¦Žb˜-ˆ¦á8}ÞÀQt¸ p‚SÛ̩ݫEþÕþj׎"Eµ%ц ,¤¹8Üø×®ZfܧöA’5Šq$1×øƒg9¿üÐ3é0ŸQ*?²ºfBzÔç··žÊ(f¥dS•óË’\ðÝBY“ ÊÃÍL5¶ËýÈ‘#4»kîjK2þ®šluãèm4ªœé$WôækqãÈgƒ“)ÿàÑSa8úÈ’]»Ü™†çÈÁ_íºÀQ„£¨Ö¢$Ú°%€4‡8Šš•zšdB¿•˜¸8&àk÷Ž¡¡#àï›i#8ŠpMCG6°ªÖu† 8ŠÖ×,/ׄ£˜—W×ãñ}ÞÀQ ízÃQ -oÑ›¯Ý‹|Èеœá(ÂQTkQmØÀ@š‹#³ëš¡Ì®i$c’b4S£EÿS7p$£k[©Â‹Oó_1ÈÜH·û §ïZs_îgΜ¡±+Êg㮬Q˜Ò+öf,_±É´¦é*Õ¦¥qqF`ãÐÌó$?/…–ûïèJ·sæÎ#ùë_+HÖªUKT ‚€¯Ý¡ MÐ4£G1€y¨/ÂVÏÔŽÆHçGÑÎj‡]8Šá¿FÁŒÐ÷yG1šöÛÂQ´ÏLE _»W¡:¬묬Ԅ£GÑŠ(«ƒ ¬ ¥#Ey…‹öÍiþéSIÆ ï3‹ˆ(6׳ã9‚´rÑ*ªÇgQ·²^šWìÞúŒÃ£¦÷¡[÷!ɾ 3I~½žÇ=eÿO¿wò[K\Z J?P‘dláX®ˆ«_Ùßñ™ï¤C…¨ü?þð[ï믾¢ü.7ÝDRõ¾óÛi>È4³û|0õ°˜"ø«]8ŠpÕZ”D6°æâ¼ÂŽ¢fC ±z8Š!¢îÌž7põ.E½|eÚÍì^Öåj€¿ŽB E8ŠÂB"±C‚Ù´“¼ÆÿÊNWÐ\Ow8A2¦°Ï™Å~«æ–‘›©¼ÊÈj$㊩X‘ÒDÀùOQÚl>CUñPyª8iÚç$/ºè¢À -–æ5»·8m׫™qÏÌäbáBI4ÆŒÇ9¢,¼Ûø¬ßƒ ù ü¼KjŒá3t±EQ¬.”Y¿svÄuORö¤'‘œ‡¿s.ĤýÞÌîµwŒˆø«58Šx€ªµ(‰6l` ÍÅy?EÍ"õpC:Äݘ=oà(êY8Šz¸ÚÕjf÷võ ¾3àY+8ŠpÍlCK>6°¬–•æUþ­o¼Šœjw”dlAŽDüÛ{¥+•ât¡¡Õ)] |h¿†ˆ"a7½ìx„¿«ÙçbŽ,}¶‘#MMšµ 6ÃF>MòŠ+8‚lªÈ¤ ¯Ú½ÉtÃ&[Æ}ÔˆGh¬YK_'¹›{æìä3v%n)KùÅ®ÄÛO-jú&ŽÐ¶½ª½òì«$eüéD™sà–ூâÿtÀQ„£ø?kÁ6p è"¯ò‡£`Ñ# Žb,’ƒ!Êž7p@õÓŽ¢(.fÉìÞš勮Á_í2ÃQ„£¨Ö¢$Ú°%€4çuþmnºš.ú~1És£hµ9¢˜8¨e$V,À!º"¢ètÊ*!•½—*,¹Ãû¬Ú7¸Ý˜¿ø{{‰%*SÆË×øWh’›×íÞdÚ®g˸§¥ñÙÔZÕËÐX;%Y¬uq×ÇÎÈNͦá¥àHbÅ U(ýË·ó½†-ãïU eÀ]JGŠÀß6ÓFpá(š‡Žl`T­ëÌëüá(Z·…p¨ G1VAßdÏ8ŠÎØÃQtÆ-T­dvªqä×~À_íÊÃQ„£¨Ö¢$Ú°%€4çuþq±üÖÓ³óÛ~Ñ ê@IDATÿb9è©1žóT%‰•QÔlj–Ô·êMi|–äU0ôLZÉgÔ&®K¦üÌ8Ž4=п¿7tØC–ô‹JyÝîÅ<ÃMʸÏùq ù‘/$™Ô&´g‡Ã—ÏñÙ‡é6sGÜÓq1å8ËDSÑ~®Mýæªßºuk¡‚¤Œ¿We$”we()GØLÁQ„£hj: °uPµ®3¯ó‡£hÝ¡&ÅpX}c=oà(úgGÑ?—HÉ•Ù}¤Ì#RÇ þjWŽ"Eµ%ц ,¤¹8¯ò/ÀßE<õ(ÿânüÐ~žf­ñZŒíÇg“*#¢xŽ 7g÷¦S¯'^ÛN²ÅE<ˆïל£›rå8‚8cÆÏ”nܸ1WpxÍ«vïGȚɸ÷Ú‹ÆòG±E$“ª&†lláÜÑÙU)4¼½í!9«ï‹&xÔ‰Æg${ÿÈϱ&=ߤ‚>}úpã*ãïU eÀ]JGŠÀß6ÓFpá(š‡Žl`T­ëÌ«üá(Z·p¨ G1VAÿdÏ8Šþ׎¢.‘’+³ûH™G¤ŽüÕ®E8Šj-J¢ XHsq^ãU˦DlÕªU$ssù—w¾z<"]´0ÿ_l`Eª—X EͦPý‰ßOPyÊÏüÝËÂ×—¢tñ–ILŸ—Eé·{¾O²M›6$^òšÝ;åêvfÜÓÓ9¢|y»F4¤Ä^|Ö.Ôã ÷þ²Žñ>ØùìVêÄëùìu·:ü„û+ÏàtÓÇèæù^ôš’¯JH('îÊ‘ÚRþ¶pI+ÃQ„£(5•°UÒ´¯+¯ñ‡£hß¡ÅpXýc0{ÞÀQ´ÆŽ¢5NáVËÌîÃmœyu<à¯veá(ÂQTkQmØÀ@š‹óÿŒŒ "&dt4ŸEŒŠâ·fŠtl,G»ÞwÕßÓÏÆÅ•6ûhæŽï(z>gD~£¢y¼K=ž3»8âÔôPK*šüîß*¶ÒyÍîmMÞÅÊfÜçÿî:F—t-Þvh™ÒwñsîÜ4~ jç‹NSõzE9ýcô”þä«ï½Ô˜ñ÷ª„„rன-…ào —´2E8ŠR#QYX%Mûºòá )C8Šöm#”-à(†’¶{}™=oà(Ú[8Šöx¹]ÛÌîÝW~éüÕ®4E8Šj-J¢ XHs1ø3àïîL7»ðwübKë=#…ˆ¢3ÃÎüŒÛý2m>Ý”.]Ú‘"ؽ#lA72ã>pøÒ½ ÀO$ ÖH º¯¼¨ 7“Ï$FÁgª—Í_NÓ÷Ü(’_Lxƒdá2UI.ù{5Iq1ã/Ê!õw=\­j«¤¬Õƒ£GÑš¥(ª… ¬¤C5àÏàà(:4 7ƒ£bàŠ»3{ÞÀQ´Ž¢5NáVËÌîÃmœyu<à¯veá(ÂQTkQmØÀ@š‹Áßp×|fqû%›¨ ®¬ÿ3‹™ûùÌÜ™M|6¨h›ÞŠ$)D%€LŠÓþ:C%7æ·:ö~Àû;q&Íþ_6ìþÿ!Ñš±téRÒÿÄO\°`Éœœ’õ[Õ%™Ø×ÿ~£B\<ÙÓù ï¬fJ•*yQ™óÃ,J÷õ—$ÇOþÄ«vï…#d pj¿¿_,Ž3á(ÂQtl5¼“"Rã}ÖvïÍ)T)piÿý€¿.Nsá(ÂQtj;ŽÚa;¦¬øûG GÑ?·sá(º½Îú‡£èŒ›hGQˆL‰gÝ]7ðWËŽ"Eµ%ц ,¤¹ü¾­wwª°¶0¿]0å“”~é*~ûàc{ SºôD Dˆ.Ys8Â2qødê±qãÆ¶z†ÝÛÂtåÉ“&’Ž'†õ%ùñþl=ŸIüf§“+qD1®i1ªW¤q2ɸ¢q$óÛ%cMM¹[éÛIŽ~ôé ÀîƒÂç¸1¸;F§¤!ø+Áx^ E8Šç!7ØÀ¡ lÞø›³ùo ÅÀ|Ü*…£èygýÂQtÆ Ž¢3náÖ ÿκ»"௖?E8Šj-J¢ XHs1ø¼eÓFªÐ¶E=’{†d“ür·{dGË DD‘‰„æšf¼m¶Ô¯¥¨ÃÉ“ù‹Õ«W·4ؽ%LÊ+%àˆáº~™¤»jQï.¦­âôã¿FÓ͹†EH–½§‚wÅ<žÊ<Ì‘ÄêkjÓLgLý^ÉŒa÷J0ÚVî¶‘)mþJqzà(ÂQTkQmØÀ@š‹Á?0`8Šù¸U GÑ-òÁõ GÑ?8ŠÖ8EJ-ü;ëîJ¿Zþpá(ªµ(‰6l` ÍÅàïð¶-›©àú«øìÛÖ¾©^§‹ˆâNã­§ƒªx•Ëx멌Pàò£3R…¦ÛŽ‘\q¤ ÉK4"9lÄÓ$Û´iCÒ÷»÷%štݺü½Äúñ;¨ÃçZßÅ\ÌÄß²,Ú­•mÂÅÐŒN/§·ñ|Ïîˠβrd5ú¨‘>Ìé„L޼nÝÎöíûöR§#…Ý;%\;pŽ_°­Á?X‚Þíá(ÂQô¶Í)l`Í€%êÁß? 8Šþ¹„K.ÅpY {〣GÑžÅäÚøwÖÝuµüá(ÂQTkQmØÀ@š‹ÁßðömÛ(£yãú$»Õá·kžcáÉõDQþv#°1)‘ÒeªBÒêE«¤ü×[×Cº‡ä…IæŒg‚=¯¯äÃo;RâIÁ¿kø¬iÑbü6Mؽ®ºs÷ûøû¤[ösd¸äíA,ÖÂçТî…Xÿ¦al‡ÍKó[“[•gYÅœ^dÈk¦ñs&+‹ÏDGGs¤5Øá þóðwN°(mµw[¸”WµHá(âªÖ¢$Ú°%€4ƒ¿7`8ŠÞ<Â5G1\W&ð¸ÄóŽ"ÅÀ–’·J…ÝÃAwg]Á_-w8ŠpÕZ”D6°æbð÷œ•Åo?~<ˆ_ò£¢ø~ßô¢e ©ÞÚ +IÆUŽñVh’BDÑŒ$ûø’ãT£ùJŽD}Ö™ÿà^uˆN\ÃÞ‰Ë9Óªe3*˜>c6Éädþ.ìžy…ú*¸ïKÝK]'öáýÃû+Ôãq«¿c¶R×ýªñ™ÄQ-ØŽÅxª½ÏgŸçÿ¹š²ªV­*Š‚’‚?– 0Ún î¶‘)mþJqâ­§x€ª5(™6l`!½åàïÍŽ¢7pKÁQ ·±7ñ¼£GÑžåDvma÷øûÒuµÜQDDQ­EI´aKi.5€{ ëIŠþIþƒd\µØ€ŠQ ˆÇ´p×ÈMTÖ¯&G~¿ÚÆ©ãgYöí÷0•|âI’III~uÁîýbÑžÙ´iSê#½Úi’ñÔœ½Ó>pMý`i¾ôT:ÉÙÝùí§m¾ä³š£ßŸAùW_}5É`/°û` :kîθ©jþªH²8ŠpÕZ”D6°æbðWŽ¢Ž2-pe„»Ž¢÷úÀQôæ‘WSøwÖÝ•µüá(ÂQTkQmØÀ@š‹Á_-à¾ô!…&ýF2®:Gº|{ADÑ—HàtúŽ´ì~yU,Ö€Ïpl]‚ÒÙ)9$ï.}?ɧ{ФÙvoFFo~µÕ¨ƒØ®ÆÛjëò:êí5ü´g§òÚ¢óJÓàßÝŸäƒz‘lY‘ÇÜñÁwé¦Gœäv$@‡ÍÁÝ!8EÍÀ_HC E8Šj-J¢ XHs1ø« GQ-O¡ Ž¢ ÙŽ"¯Åȶc»£Ç¿³v‰©­þjyÂQ„£¨Ö¢$Ú°%€4ƒ¿ÀåÁï–PqÕ½Ïbmµ…ò³ðY»Ú/ÖâzEŸmÔ3Ú< •TžôñüöȵðwÍf»7#£7?¹8¿u¶Æ¸JÔQt¼÷¾ÐÛ{øhÏœÆcY4}1Ý/^œäÞ=|f±Þ¥SúÅ—^%Ù·_?’Á^`÷ÁtÖÜqSÕ üU‘d=pá(ªµ(‰6l` ÍÅà¯0E=\MµÂQ4ENpy5à(†“Uê þÕÏ8PàˆŽý28Špí[M-°ƒ€§ )ø+€@Åà‘ƒ¨tIÌ’Ù'SIœ²dL,?®ì¨š”Ž/GgÎÎçíë÷¼E ®kw_E°{¿X´e®X±‚t·îxÉÚãÔ|PÛ€5)Îþ‰¿5€Ï^u%ó0ëN|®'.NÍsvoFZo>¸ëå+Óþ2BöÊá(ÂQ´g1AÖÆ`ÍÁ?H€’æp%€ÃQT T‘:8Рޢ"ƒŠ05øwÖݵüá(ÂQTkQmØÀ@š‹Á_3`Cý-Ý;Ð݉5óHÆdò[:WŸà3ZežDDQÅJœÝËߣk¸» ©ûôÃÏüª…ÝûÅâ8óÌ™3ÔÖ컕c^Cå/¼3–dg«;î+f®à·œ>pqþƒý‡¹2 ؽ+Ø=àîwÑ+ø j$E8Šj,É¢l`‹ 4UM`}ÔÂQô¢) GQX‰Z8ŠÁQ Ì'¯—âßYwWüÕò‡£GQ­EI´aKi.½€gÍøŠ:øè~káÌ›ŽSºñÖÃ5'9¢Xjd ÊO(¯w@ùD{Ö—<Ñ9Í¥› *xÍvï…#èăƒØ¾çΞEºî¸ç>’·t¿ƒdχ ¹aïz’µËgÓ÷ð÷?/Ûß”æ=í½OHºuÝ»CÜÝá.zAB„£GQ%YÔ‚ l”¦j௠¬¡Ž¢^¾fÚá(š‘Ñ“GÑ?W8Šþ¹ä·\ü;ë¿ZþQ×^{­ñ¢qµŠÃ]›8lߨQ£pjž¸»»œà¯‡ÿþ}ûHñ¾][HÖ,Êg”Do›ñ]z¿õ4¾j"eä×ïÊ .ªdv Ÿ­Tè"RY©·Oè‡Ý jä©S§HÑÆ5üvÓR‰¹”>t†#æ™9œ6ÌÝ“X©•Ç$ƨ@ˆ´œ;ÇEEñ¾=—ÃéÜ,CfòºJÁ]YkzÁß'«µà(ÂQ´j+Jêa+ÁèX ø;F°!Å€x´ÂQÔŽØ«8Šp½  /øwÖ GÈà¯9þë)þë©Z‹’hà Ò\ þj;Æ¡ÂF$ÅüñÉèhެˆHĺÍ;)¿NmŽt¥¶¢¤'¾~dEXxÔáwÍ9ËŒrhpÓ§|M²nݺ$a÷zÖ¬C›¤xh…?I¶ç£·Aïø÷›Ëû!%>–2ªŽ©Åa~ÍØÇoÕÝ8z4Áø¼a¹ba¬R„'“ÎöW¼îõ”ñõL>+ëöô`÷»Ã]ô þ‚„ GŽ¢K²¨Ø"(MÕÀ_-X8Šjy:ÕGÑ)¹àÚÁQd~pƒ³£¼Öÿκ»¢à¯–?E8Šj-J¢ XHs1økl¢Þ—ûc§šsNÍ$s G(Lš#[B ý ¿mòèXŽü)Èg@«Öâˆâá”LÒ þK’DŠ-X¶lÕìÛµ$ÿ¹‡Ï.n2Îä^9Ù°ëÂI,v[yª—ܰ°ÅÜ­&Î$›¸‡Ò"ó4ÉÏ;qäZŒnáN¾{nóet³à>»)ÊÝ’¾Ï·Æ‘ßúwwWüÕò‡£GQ­EI´aKi.Í€MÔûr‡£hÊa6E‡à‚lG‘ÂQ ÒòXsßç}›^ØOüÕ.E8Šj-J¢ XHs1økl¢ÞŒûèqOQ‹ï|C2¶Ÿå2QƒlG&í¥’‘É'Iö»œ+þÄFÏ]38¢U¼d)*xýÝIvêÔ™+âv­šPûìËI®Iã³·gâX^2¦fPúÃ¥qê"þ.jöœC4¤u½9²¸?•GØîÛÒt³m—»=n³çŽÛãÊëýƒ»»+ þjùÃQ„£¨Ö¢$Ú°%€4ƒ¿fÀ&ê͸ÃQ4f3Ž¢M`Š«ÃQd pV„ª3{ÞGèt"nØà¯vÉà(ÂQTkQmØÀ@š‹Á_3`õ2îϾò µüöàW$cëù?³xfæA*Oã—1zJw/kÒcþÈÎ5¾c·nКpÆHþl˜ýçkùnÐ\Ž(H*D/¿òÉ;ï½_T… ‚Àï¾A­_š9–dù;ËÜòòN’5‡W!é—Ì£|Öµø|žß_ó—Ò”fßÁo=½þžaV¶÷F·æ-{î¸5®¼Þ/¸»»Â௖?E8Šj-J¢ XHs1økl¢^ÆŽ¢ 8I6E  ÃQ„£"S‹ˆndÏûˆ˜DüÕ.E8Šj-J¢ XHs1økl¢Þ*÷1¯=G¾Ù7dL}V˜öíº©¸‘ÏHmªP”ÒezTà ùôzlæašùÕ»ŽŒåHì”åü‡{‹Æ )?-“Ï~._Îgèò).mÓnÓåjÒ}âZ>››ÌܼQLŸÈvµ|Þ šoBBÉ«›5 ¹fÃf–ùplùòü–WÊtábõ¹ãÂÐòt—àîîò‚¿Zþpá(ªµ(‰6l` ÍÅ௰‰z«Üá(š4Ɇ£h&ÄÙpá(†Øäº;«Ïû°žDüÕ.E8Šj-J¢ XHs1økl¢Þ.÷ß|4MšÎgé:ÆŸ ôÅùìÓó§ˆâ}MzÌÙ;ŸÞBÊⳉ…Ú” t¡ú…I–ý³ƒHáHã<<¢ë–-Ì¿Û#7“Æ8çµç•ˆböl?“ŸœJskØ€#Õç'jܼ4Ž÷í ÁC)'))É·JHÓvŸ;!\î ÜÝ]\ðWËŽ"þpPkQmØÀ@š‹Á_3`õv¹ÃQ4é“ GÑHˆ“p½ÃQôæ‘_SvŸ÷ù•“®yƒ¿Z²pá(ªµ(‰6l` ÍÅ௰‰z»Ü_|z$i:´à ’¯·åל~h±“jDïÏßŬ“ÙÄ'®(Ÿ‰óÅŸ5“s’öóÛN—.]ê[é ¼ÿÑ{Ôúõ•/“LnÊœ…ÊH(fýÅg‡´xˆ¦Ôóžžbj!í>w"bR0Hpww‘À_-8ŠpÕZ”D6°æbð× ØD½]îpM@údÃQôâ$Å·ÙÝçŽMõ¨nBÜMÀ„(üÕ‚†£GQ­EI´aKi.Í€MÔ[åþʘQ¤áÐÂwH¾Üê¤—Æøe‹žçNqD±ôù;¢èÇO"uÝiÊÍú– ·oÝî§²œ¸®[;jzèÊ=$ãŠÅy©ŠÔˆbÆvþ^b«³mi>ï½ô¾×¼"%aõ¹)ó‰”q‚»»+þjùÃQ„£¨Ö¢$Ú°%€4ƒ¿fÀ&ê­r‡£hÐa6E‡à,6ƒ£h”KÕ¬>w\^žíÜÝ]ZðWËŽ"Eµ%ц ,¤¹ü56Q/ãþÅŸSˇö!Y(ß²Èïòôxrsù.åL•mÄo÷,rI“‘}!CwP2åx Éèhþ®â…upoÀŽÌó¦Á7R£¸[ý·´ˆbæŽ$&/ä}õÛìßýO,BreÏ™FÄ ÜÝ]2ðWËŽ"Eµ%ц ,¤¹ü56Q/ãGÑœ¢l8ŠŠ@jà(ªå©K›ì¹£«ßü®ÜݵðWËŽ"Eµ%ц ,¤¹ü56Q/ãž“ÃßGܺu+i¯¨(Ž,Š´ßÿôÕ›¼vɘÆ"öh2€|ž½ñq>›øåGÓ‰D§Žò9‘ÀÓß¼y3Uxþ™'IÞv×}$;vìHrÂÇH¾ô÷X’ÉÍ ’ô½„KDñØ/Çhh9;ÏÌ=ʑóDz(}êx6É2EøŒå·s~¥t³fÍHFêEö܉Ôy…û¸ÁÝݵüá(ÂQTkQmØÀ@š‹Á_3`õ2îpMÀ)ʆ£h$E8Šö,µ/$ {Þ_X÷ê €¿Z¦pá(ªµ(‰6l` ÍÅ௰‰z]Üßÿ˜¿c7þ~+cLd@L蟽q G;´ê@ʾšôuðJ󰆓'ùm»Ê–¢Y^]“#† 6ó[d+Uä3²™WÅPyÉ«‹û¥.Å3 ŽÒøÒç&ùQû\’•‹ð°+óK„=wÏJ¤Œ.Ã9bzçwr…½êzîD(Ž ÜC†ÚoGàï‹ãL8Šp“†ØÀN¨©kþêXÚѤ‹;Ek«GÑ'Q Ž"Ea ö èzÞÛIþlþj׎"Eµ%ц ,¤¹ü56Q¯›ûø©RÏüù.ÉèfÏ,¦üÅ£Ä:…©~\2G†L†ñÙ"²U±|%šËKC_&Ù©Î*Z܇õ¥âJÛø,lÿËù,ß×ë¹Õ”Ml7ó7ðÛÒ'QA¹¡UHn{7ÉšÃ9M /§×§QïÛߨErYOÞ'õJó _Èó)ÜþYÊ9òq.ˆÐ«îçN„bÑ>lp׎8`àíB8ŠpmM0 °ƒ¡|[ðž¡ º¹ÃQ ¼*pó1+…£GÑÌ6oN@÷óÞ¼g”ü—ø«µ8ŠpÕZ”D6°æbð× ØD}¨¸Oüt"àßÞ$ÓÜ;²xü픿 ¿ý±Îës½‚ù#¢˜p$æ[äÏ·bõ:”6âi’7véB&ššJ7ÊòwS†óÛBŸÕ‡øîÁÅü]ÊGXV¾l}+¼"ŠbÜgwñf¹pá(šÙòÍ „êyo>‚ü]þj׎"Eµ%ц ,¤¹ü56QjîS¾˜B#ycá«$Oýˑħ*ó[+ÏáV™#бy<¢¸aô6špÃxŽý~'¿õrÑNæðúJ~ýåÚ£ñ”1ü‰Ñ$ûõÈòùuøƒÌ¡ÀªˆÄ2~y¨gù)ŽÌ¹¥<åiÄg^.á ‡ËE`ÏøˆoÖü¾–†ÚçÞî$w/ãU¦¥\¸TL%"e¨Ÿ; IàÁ]T*Áß, Uá(ÂQ´`&êª`«céDø;¡|›Ps‡£è½fp½yØMÁQ´K,<ê‡ú¹³vàîZþpá(ªµ(‰6l` ÍÅ௰‰z·¸·mÙ€FtWŽœôlÀ‘´äW¢(¿Ú‹FD±pÞ>£¸vàšïw7ñÛ9Û×à…ÚrœåÄÕ t3~9§Û_ߎn>ûzgäóëþýû‰@ÓÆµI&ÞÌßM,Ò$9 ™p‹(fËvÿÕ«ßиkÖ¨é5þ×_~‘ÒëÖ¬$9aê^å‘–pë¹iœTÜUµ§üíñ’Õ†£GQf#J˱•â´­ üm#SÒÀ-îpyùà(gÆpƒãçVk·ž;nÍ7\úwwWüÕò‡£GQ­EI´aKi.Í€MÔ‡šû}Ý;ÓHÚxìq ¿åT ¯È«Y©úGˆb ÇŠ¢<%Ó÷ó™ÄmOo¥y}БϦ½±‚ßι?•#‰=ŸAèÙ§Õ+Y’ßò™§`1™/§I­GÏ{‚d¡+-i —ˆbÖ¯¼îOvzŠÆ}kW>“h6‰””*JN15k.ù¡~î„˼ݸ»»௖?E8Šj-J¢ XHs1økl¢>ÔÜá(òBÀQ41H›Ùpm “ê¡~î„É´]¸»»௖?E8Šj-J¢ XHs1økl¢>TÜÛµnN#(tü_’ Kò÷âÎo{Ì1ä›ÿpD­Ú8þÞ]lrÞŒ(úüqØûÓ1’•Zr„(éꔎÿ+‰äÂ/“,Q‚ó)Ëy·>Ðî7Ô\M²@yŽÄž¯`rãvD1cc솤›H¾0ŠÏ š 7Ïe‡ê¹“çÀ9!p`ÍÁ?H€>Íá(ÂQô1 ½Il`½|eÚÁ_FHOy¨¸ÃQô^?8ŠÞ<œ¦à(:%çn»P=wÜeøõîî® ø«åGŽ¢Z‹’hÖÒ\ þš›¨×Í=7—ßfúÝŒoi+W®"Ão3Šâ3‰ÑÑILÏ>KåsöÌ&ÓšÛS"]²R²i6;>ØC²Ö£U½f—º”ÏnޏâIÊ¿ÿžû½Êó{âØ1ŽÄ¶¹­5¡ˆ¿‡íÈ*·"Š™Ç9’XnieêOÓ²:äs›qÐGYæ2ê0¿å6!…ßʺjùvj]°`Á ´äŸÛp}îäõwwWüÕò‡£GQ­EI´aKi.Í€MÔ‡+w8Šü_Sá(ú7\8Šþ¹DJn¸>w"…ŸÓq‚»SrjÚ¿ŽB E8ŠÂB"±C‚Ù´ð7E£µ ܹÏüq&Íÿé/ø¬^t[ãõ¨Z©„N¹,²•õeòãSéæ²Ë. Ýว»ûÝE£û·Òß$+ºQÜ0d£nI¶ÏKŒ—ÔÖJæHx#p8øç8ªwú,G)‘/áþÜÉ«Kîî®,ø«åGŽ¢Z‹’hÖÒ\ þš›¨wîpyáà(z0Eo‘– ÷çN¤ñ´:^p·JJO=ðWËŽ"Eµ%ц ,¤¹ü56Q)ÜgÿÌoAõÉã4“èküŸYÜóø&*kX„dÙîeMfÙ²ˆbê†Ó4Л ÜJrÜÓãÂcàšG±hÑ"ê¡aÆ$‹-J2%%…ä•7µ$ßÃÞÛN©Ñ.2U™}’ÿ«ðö§6S“É9²xsmïx‰×8ò¹eç>ªW¼xq«]ä©z‘òÜÉSÐÿ3pwwEÁ_-8ŠpÕZ”D6°æbð× ØD}¤p‡£Gñ¿& GÑd#GXv¤ù1’Ñ×rdqÏ“I¼£"Gv¾.Æ‘š²·•3™yxd[l¥Oày®˜ÿ/ <>>><& ieJp1#ý,õpyú$/nДä¼ã?“LîDÒîÅ*w»zEýC/n£Ûî%Ù_½†¿ŸØh Gº'~»Êóë™ÓH{îˆut îî® ø«åGŽ¢Z‹’hÖÒ\ þš›¨4îpá(þ×”á(šlèÉŽ´çN„`•Ü¥ˆ´Vµxá(ÂQTkQmØÀ@š‹Á_3`õ‘Êý—E¿ÐŒî¾µÉY7sÄfñ>öF ¿v²ìíy#¢xzI:ͳ_ƒA$‡J2¯^>xïšÚªOF¼µ&ŸÕül} ¥¿ÚÀÖ‚å(×”#EsÄ.¾8¿]” ý\tEsÒy\ ߢ^»´¼–ä¼/Þ#Y¤ÛgÑ“)}ÓM7‘Ìo—H}îDú:»»+þjùÃQ„£¨Ö¢$Ú°%€4ƒ¿fÀ&ê#•;E8Šÿ5i8Š&;̳#õ¹æX¥Ãw)"­À_-^8ŠpÕZ”D6°æbð× ØD}¤roV¿Íè­æ|¬YyŽä¼¶”'úZ”Q¼#oD}wˆ&ÿÇI’%+Ö$9lÄÓ$»ÝÊ/»¡Dº”/Å‘Âå=NѬÊq îü ?ZÁ·£~‹¦›„V¼î¥n.s¾Ž¿]Ŭ/¸·¹“ø e¹rl çs¼CÇTáíw8ÂØ»woÃËóy‘ú܉ô…wwWüÕò‡£GQ­EI´aKi.Í€MÔG*w8ŠpÿkÒpM6v˜gGês'̱J‡îRDZ+€¿Z¼pá(ªµ(‰6l` ÍÅ௰‰úHážÍolÖðbšÉÈKwlX†#‰|òËã™ÄïzñLK2"Šwæˆâúëi¾ûó|7á}ýßdºùë@,ɡÆ“|øQ>Ûǵ"÷:aü4ø?&¯sÿgùß4ó¾/ò÷ê¢oð>ãg‚%dÙf‘­´­gh ÞÜI26‘¿X¸5Ÿ½,àá³yïõûÊÛ¶mK2¯],X@Süñ’‰×Æ)™âÿã.^›ËÛó}d§ðÄŒcÙÌ<Ê2aYÕYÿç†óuqc@^îX'ÚšàZÞ¾½¿/‘àÒpá(gA6[cÛ¦¸:ø+jQ]^çGÑ¢!„i58Šaº0A+¯?w‚Ä£­9¸kCkI1ø[Âd¹E8Š–EEEl`ëçì‚i™_¸/[Á‡úz?ß“pÅø¼=Ô—á®¶SVå‘Õ|‹”¦ÿ_dËGûémY,X#X¢øì~»ëåû[PÖÔ÷¦Š¢<%‡ŒLóù9vÉB5½98¬/÷ÓO“ªýî&y6#ÏI b,_”eL6ç·îòÕ{çƒ N‡¯Ûå—çN¸-2¸»»"௖?E8Šj-J¢ XHs1økl¢>¿p‡£hbaž G1ÌÈáðòËsÇ!mÍÀ]ZKŠÁß&Ë•à(ÂQ´l,**b« è\ø;gLËüÆýßUÿ®žÏÜG2º GˆÃXK·çŒ3k&ñÛ6=>g×Dý`¥odË®¾¬Ï¸ÅOSæÑMÙ²eíªëú—´¨CãKê«tœ¾Üs3ÙöÝFýô®ÎgÇ\émßmäaL9Õ†nfü¸@é¸ò‹²üöÜ —uwwWüÕò‡£GQ­EI´aKi.Í€MÔç7îpM !L³á(†éÂ9¬üöÜ —²æà® ¥#Eàï›i#8ŠpMCG6°ªÖu‚¿uV*kæWîkÖ­!Œ÷>y7ɵ?p:m‡“Æ2å†.¥›¨h=!EßÈ÷jýšú7Ÿ­{¨Ñ£Ô¨oOþn¤u áYsÉ’%4°ãy> íb”TÆýä—û©¿*ÛO’üåvŽ,®8ÀÃèý{uºY¾v+gàj‹@~}îØ‚¤¡2¸k€jC%øÛ€e¡*E8ŠÌD]l`u,h'Ô‚o“_¹ÃQ Þvtj€£¨“®ûºóësÇmòàîî €¿Zþpá(ªµ(‰6l` ÍÅ௰‰úüν`b<‘9üŸI+h|¦/æ9Öð##¢žÅœÓ94Ђ³‹‘ümöï<ð0¿¦¦¦Ò æïAú÷‘QPÖ¬ìo¹ÞÅ}«•–E³Nñ÷c>ãHæ¡-;¨¿oã·Ð¶ýŒÇsôdZPãȯóûsÇ­uw·Ès¿à¯–?E8Šj-J¢ XHs1økl¢>¿s‡£hbš³á(jæêóûsÇ­åw·Ès¿à¯–?E8Šj-J¢ XHs1økl¢>¿r/Z(‘ˆìÌß#,’à (n §ëhDcÃ3¢(Fù#Ÿ­œðÐ$ÊjÚ´©( KÙ«Ç]4®E 瓼ýÎ{HÞÜý’÷ætÞÑ”VýÖYYD1c óüý»?¨ÿ´4Ž6¿¼¥O!yä8Ÿa,XPmÄ“'w¯ùõ¹ãöŠ‚»»+þjùÃQ„£¨Ö¢$Ú°%€4ƒ¿fÀ&êó+w8Š&¢l8Š!¦Ýä×çŽÛËîî®ø«åGŽ¢Z‹’hÖÒ\ þš›¨ÏoÜ/®^™H”ˆ>åE$×Yegó™¿=)i¬ðr-ª¦gÅ$Ò6óÙ¹–'ZSÖ¤÷8²(ÊÃMÎÿåÒ“ýn&yCÿW›Hïɳ”_¸e’IMŠ’,T#‰d°³ˆbö\ÖüÞé¦e‹–~»6tå;Ž$"Š~1™fæ·çŽ)ˆ€{ˆûtþ>@‚LÂQ„£¤ ÙkŽ l—êÚ௚¨5}ù;Ekv¡»EÝ„Ã[~{î„Ëj€»»+þjùÃQ„£¨Ö¢$Ú°%€4ƒ¿fÀ&êó÷õë׉cÇŽ‘Œ‰á·ZFGóY8!sr9²Øÿ¹¾T/¶;ŸY3Áè8Û,²eWaÖ ~këÉç·SÓ’e."ùÈÏ’¼ãŽ;íª IýÖÍP?Ï]²šäUðõì䣞¯7ðÙÐV³<KõªáH¯ÓAúrÏ\ÎëݧÞR9¨7G êG»ÀòÛs'0Е‚{èXûë üýQqžGŽ¢sëqÐØ4…MÀ_!Lªòw8Š6Œ#Uá(†rv‘ßž;á²àîîJ€¿Zþpá(ªµ(‰6l` ÍÅ௰‰zp7cdïÚ½‹înì{ɸÛ×·[êÙ²Û^Ô?2e/ÝOäP\ó \òÚ þNá‚‘öŸ°ßÀ!T¡H>(ô„Z.^´ˆºÝ¿+ÉE·ñøÿÚÇ#¶˜#¾;Ïñ.‹ÞVž ’jwVQp¯Ôõ59Ò‚ô~üödîW­ðÜÑŠ×T9¸›¢ Iø«Å GŽ¢Z‹’hÖÒ\ þš›¨w0F6ÅÀ|‚-…£,ÁÈlçŽ;ëîîp½‚¿ ¡FÂQ„£¨Æ’,jÁ¶JS5ð×V¢Ü%€Œâ={÷Ð]ç^HÆÞøÌbŽqf0óL.ÕO¬àó¡FC¯ˆlÕ^Åȱ'Îeó8V÷]G ³žôn„_&êyóo>Û÷ÞrŽÐ½ùÎûTñž÷{7p)Õâ²:ÔsÆ‘Í$Äs1ù–r”.\·Ò‘m·ƒôÕ*W›ä²ù˕ꇲÀðÜ ÌGW)¸ë"kM/ø[ãdµE8ŠVmEI=l`%+Çè‚jîÖðÁQ´ÆÉi-8ŠNÉEf;{ʵpÕMÏÝ„ýëwÿ\B• þjIÃQ„£¨Ö¢$Ú°%€4ƒ¿fÀ&êÁÝŒ$Ž¢Íb8Š6Exu¡À:_½ëMªÔþz~[«y‹Ð–¼øÚ Ôá¤=ãI&7Tû½ÄÔUi¤wÇ[»Hþ|7 OŸY’ízÿ0Ê÷Êk\€kHà¹Ìÿ¯pÿHBšþjqÃQ„£¨Ö¢$Ú°%€4ƒ¿fÀ&êÁÝŒ$Ž¢Åb8ŠAå±jx àîwÑ+ø j$E8Šj,É¢l`‹ 4UM`%jÁ]ȧxíšÕ”ÓªE’ãÚpÄ.×83hÏì-Üðß‹ˆâÍ.E÷ñÛXëïlDú|ü<°0¹¶hÏg;Ó»¤Ðˆb’¼ÏX;̳ãùŒæê%kHÕµW\NrãzN·¾æzJ1cN°]¡½ xîØ€¥°*¸+„é@ø;€  E8ŠÌC}6°z¦v4‚¿Zêê‚»=–píñ’Õ†£(#”7ËñÜqg]ÁÝî¢Wð$ÔH8ŠpÕX’E-ØÀAiªþšÀJÔ‚»Qœ›ËoÍ\þÏ_”óÑûæ·gFR¤³2³¨üÏíÿ’Lèéÿ»€ŽßzJZ­_²¾äº³ÇÿH7+V´ÞXC͵k×’Ö»žºd\—(¥½dÏd}SŸþ„ôÖ¯WßKÅ å(Ý¡íU$?šfòª…„.xîè"X/¸棻üÕ†£GQ­EI´aKi.Í€MÔƒ» Ÿl8Š>@‚LÂQ `„7ÇsÇww¸‹^Á_P#á(ÂQTcIµ`[¥©øk+Q î@AŸ9s†44mÏg øDCQL]ÎãXg(gHÿ!AÎ,pó•ÿr$õùgž¤Š÷öìG²sçÎ$_}ûU’láï¹¼0¥ƒ½dýɑ߇¯z”TÝ{G¿*…Ýò GË”)ã·2õüçáï=€M´‚» ˜eƒ¿ZÐpñUkQmØÀ@š‹Á_3`õànFQ6E8ŠŠL)O©ÁsÇåww¸‹^Á_P#á(ÂQTcIµ`[¥©øk+Q î@ŠŠÓÓÓIÓå×ðÛGûðÛ=CQÌIçH[ô 4Žå W(š™5ûöí£‚zµ«‘¼²Z’s7ð÷&+”+ ¯K$Y¢U1N;¼¦oå3¡×äð[LßËß4S»7#š|ð gß^ÀÝ—HhÓ௖7E8Šj-J¢ XHs1økl¢ÜMÀ(Ά£GQ±IE´:pw‡»èü 5Ž"E5–dQ 6°EPšª¿&°µà.¤¸8+‹#_ Zó[8÷¥ì¥j¯âÕSæjþ®àŽÉû)¿ök{•;M¤ŒÝEM3SãIŽzö’={õvª2`»~÷ßEå—ç·Š>Ѐ¿køÍzn6u#¿ öÇuñ,U“#Œ=Q= ^Q˜šM·Eç•&¹èûÅ¢( „ÝÄ£½üµ#öÛ¸ûŲLðW‹Ž"Eµ%ц ,¤¹ü56Qî&`4eÃQ„£¨É´"J-ž;î,¸»Ã]ô þ‚„uíµ×žS£*²´¬XÁgG5â³,‘5úÈ-¸»»vàïpw‡û¹süÏۢŋhkq$-LjÅÏ üSg¹^¡:…‚höivÐbòYɺ%Yï®T>+y(Ó•/ºˆú©\¥*ɘ.wÚyff&5ýóßH^uG…¾<ÏæüÝÃô\–ª2ÜLWn·;—Åés™œŽÉâñ5iÔŒTÆÅÅ Õ%ì> í…௱ßÀÝ/–e‚¿ZÔpá(ªµ(‰6l` ÍÅ௰‰zp7£9Ž"†£¨ÙÐÂT=ž;î, ¸»Ã]ô þ‚„‰ÿzŠÿzªÆ’,jÁ °JS5ð×V¢Ü%€4 þ;÷o ž*ä$9÷Ž&¿Ä¶ú]ÔH½¾ƒÚ¿S‡ß:Ú¥¶·ºY›9ýÄŽä«Âg(ÿö§wE‡©!ý –…7N&ù˞מ>+Yø–r\~qA’ëñ!ÆŠÉ”ôT.Êõk%s$±L"GßXÆã=žr†+Z¼ îøŽŸE`Š«¿b Õ»EPšª¿Z°pá(ªµ(‰6l` ÍÅ௰‰zp7¢lÁŽ"Å™\Xt#ìŽzh—ÜCËÛ·7ð÷%\Ž"Åà,Èfkl`›ÀWÅ@-ªw‹ 4UkÔ°i.›Ëo?sóqJgr@Ñ“ôGÒNtQÌ8Âg¼°•ô®¸#r¬`½WqD¯Î%u©üþÃHÞy¿­” .›6m"-m¯mB²Ð%H¾ÔÿÙ˳;8B¸iÌvª÷O/žËʲ×cùŒâ©TŽ”&$$ˆ¢€vöBð׎ØoàîKÈ2Á_-j8ŠpÕZ”D6°æbð× ØD=¸›€ Q6E8Š!2µ°êÏw–ÜÝá.zAB„£GQ%YÔ‚ l”¦j௠¬D-¸Ki*ž3ki¾çŽÛHîÊßW4^†êÉ0"Še^å4œÈ?»Ã98a5‰ßœJòhG‹4+JéÊQ|Xñ·¹¿ÛUm«þøIã©þ+Ë^$™ÜŒÏ"Ê”œË᳈{žäC”O^Æ`†4áÈhíñ…IŬEËHÖªUK¦’Êa÷–0i«þÚÐT îñh/µˆá(ÂQTkQmØÀ@š‹Á_3`õànFs6E8ŠšM,¬Õã¹ãÎò€»;ÜE¯à/H¨‘pá(ª±$‹Z°-‚ÒT ü5•¨w ÅÅ»ví"7ujGrõ>;˜˜Àßÿ‹Šâˆ_´!‹Ž¥z%Ÿ¹ˆdtB4I«—Ô)Tõ\·K®çý_=³f²¦i£?¥›úõùm§Võ[­×á¶öTu_³$ãKð|eíÏesD1w*sh^­5Iß8—ä>”z†¿>ÒžezE=¼LEFJO9øëá*Ó î2BzËÁ_-_8ŠpÕZ”D6°æbð× ØD=¸›€Ñ” Gq'‘…£¨ÉÀ"D-ž;î,¸»Ã]ô þ‚„ GŽ¢K²¨Ø"(MÕÀ_X‰Zp—Ò\l•ãk.§‘ätO'SÀ^dÑl©ëùm¡·ºƒªŒõ¼YUGù»wï¦vûw"×Ýžš¬¯9ÂúÝ[ßSêU«’œ<ñC’Ãæ·´¾ðÊ[”îÕËx=*¥Ì/V¹›k@I0À?zÎÛ‚»sv*Z‚¿ ŠÿÓGŽâÿ¬!wØÀ!€  ðGc¸k„kAµUþpá(Z0§ˆ©bÕî#fB2Ppww¡À_-8ŠpÕZ”D6°æbð× ØD=¸›€ Q¶]þMÛñw³næH`LG0ØážÏo]½d ©Š‰Q£wò´É¤ï…ߟ%Y¸…µ—Ød-泉ÏÜüµ»é†®$}/7l ¬Zµùí­ÑÑÖ"­v¹ûö‹tpÀ?8~N[ƒ»SrjÚ¿ŽB E8ŠÂB"±C‚Ù´ð7E£µÜµâ•*·ËŽ¢7R8ŠÞ<"%e×î#e^á>Npww…À_-8ŠpÕZ”D6°æbð× ØD=¸›€ Q¶Sþ-Ú7§¦ßȯýŒ)è?’vvÑQªw6‰ß2Z¼i¿3;³(ƒòÇÝÌnìܹ³ßzv3;ßÍzv6äï &”Ѝ"}=Oò¦"ݨޘÇǬï´Ð)w§ý¡7ð÷檸‡Š´ÿ~Àß?§¹pá(:µGí°aSÖü•¡´¥ÜmáR^Ù)8ŠÁ-…SîÁõŠÖ‚ø ¡•àZÞ¾½¿/‘àÒpá(gA6[cÛ¦¸:ø+jQ¸[¥©Z°ü¯ìtìtÇ“$c qd1mæAJÇþuœdJ›2$K_[‚¤ï%ý Gk­¿”о2÷ŠßôO?ýDù—_Îoe-Y²$¥8@²ýבŒ»„é%óh&•]´¼É>›mZWEA°ÜUŒ!?ëwVÜÝá.zAB„£GQ%YÔ‚ l”¦j௠¬D-¸Ki.–?Eg ,wg½¢• þ‚Dh%¸‡–·ooàïK$¸4E8ŠÁYÍÖØÀ6)®þŠZTîAiª¦ŠÿU[ÑEo$y͉$Ïeå’œ]½,ÉÒíüG©ð?—¬¯øî»·gÒøn¡(÷•… &RVB,—\zq-º©Z§É_³“,Ö.™+׬“Ùt—yŒ#‰1‹ Pzù¼$Œšz„*îzF—÷µ‚¿;k îîp½‚¿ ¡FÂQ„£¨Æ’,jÁ¶JS5ð×V¢Ü%€4«âGÑÞB©ân¯WÔÀ_­÷Ðòöí ü}‰—†£G18 ²ÙØ&0ÅÕÁ_1P‹êÀÝ"(MÕTñuìhá–™cI~О#vƒ~Ž¢ô̪FDñºÀÅ“3Pý3KÎýì‹$ûö@Ò÷òÆ«/QÖ®ïŸ!Ùµ:·{ùO>+ùÇnþb Ojß5ÞÒZ0–Ó=ú?FíŸ{þß.´¤Uq×2¸| üÝYdpw‡»èü 5Ž"E5–dµ#ÛIDATQ 6°EPšª¿&°µà.¤¹X8ŠöJw{½¢¶ þ‚Dh%¸‡–·ooàïK$¸4E8ŠÁYÍÖØÀ6)®þŠZTîAiª,ÿ7Æ=K#Û5÷ ’¯·æ³‰b¸CŒˆâŒÊüÖÓ2íù­¤¢ÜWn´ž²æßÎg?^WÒSWðY‡Béá#G‘,R¤ÉâE¸Þ¶þQÌÈ¡lO½÷X>Ýše߯,cÏ>~²šÓ?Åv¡›iÓ¿ã Í×`¹k^žWþî,1¸»Ã]ô þ‚„ GŽ¢K²¨Ø"(MÕÀ_X‰Zp—Ò\,8ŠÎ(XîÎzE+Aü‰ÐJp-oßÞÀß—Hpi8Špƒ³ ›­±mS\üµ¨Ü-‚ÒTÍ)ÿWÆñY¾É‘Õ2Žæg áÙ| ÊÏ´ãˆb©vÅýÎäÄRþcƒ?÷Sù·7qDQT>z–ïîŸG7áâ¡£Á|çÍ×)Ýç#IÞ^‡¿Ë8lq ¥¤ðˆºÖbùÞu,ÝMÅž'ÖÖ£›%!FÎÖvuÊ]Û€ò™bðwgÁÁÝî¢Wð$ÔH8ŠpÕX’E-ØÀAiªþšÀJÔ‚»æb§üá(·0N¹×+Z à/H„V‚{hyûöþ¾D‚KÃQ„£œÙl l˜âê௨Euàn”¦jNù9Âo'ýõ×_idQQüvÓèh>ü'ÒñññTþÆÇñ;ØŒCx±%ŒóÚ3j3ÝýØÏ"3"ˆï®àâ/ÛYÏûî¥zƒ†=J²fÍš†—TåÐæ±sÉ,vg*H¬ÈßIÌx—óKf§Rþ'9’ÙêKn·kÿQ/}ºN¹ëO~Ó þî¬8¸»Ã]ô þ‚„ GŽ¢K²¨Ø"(MÕÀ_X‰Zp—Ò\ì”?ÅàÆ)÷àzEkAü‰ÐJp-oßÞÀß—Hpi8Špƒ³ ›­±mS\üµ¨Ü-‚ÒT-Ôü;ÝÑ‘f²·Ñ’Çù,á©wQ:›zâË%P:.¶$Ée V,Y’Ó”¸àrò$G[tnN¹{q$RTÉúŒ#’ó¦ýBY›6n yMÛ¶$³røLä¹sÆDCM2ÔÜ5M#bÕ‚¿;Kîîp½‚¿ ¡FÂQ„£¨Æ’,jÁ¶JS5ð×V¢Ü%€4‡š?E^ÐPs×lF§üÝY2pw‡»èü 5Ž"E5–dQ 6°EPšª¿&°µà.¤¹Ø-þïºf¶¥$7ñôV>3XìZ>+_œ#‚iòaÅuSý}’Œõ>ã8sÖLÊtÆÃ$ µæ3‰Ù@ô¼Öó Êo{õ5$Å%++‹nï¾½ɉS>%Y¨P!QE‹t‹»–ÉD RðwgÑÀÝî¢Wð$ÔH8ŠpÕX’E-ØÀAiªþšÀJÔ‚»æb·øÃQlG+;ÿÎj¶pÿêݲ{ÿ£É?¹àîîZƒ¿Zþpñ˜Z‹’hÖÒ\ þš›¨w0!Êv›ÿM÷v¡™î¸”ßzWÖ;RxøÕíT~dS:ɳ9~ÉÜ7¨åÿ]æ’±'8"yO•û(=|¿%•apq›{ puàï~pw‡»èü 5Ž"E5–dQ 6°EPšª¿&°µà.¤¹Ømþpçi^a¨÷GÀm»÷7¦üîî®2ø«åGŽ¢Z‹’hÖÒ\ þš›¨w0!Êþݸ…f¼µ¿4õû½”î_ü4Égñ[Kýú7¥5jD2-¿‹(Þvê¹.›òëîhHòóñ_ ·K¸p7.¡ø‡Š´w?àîÍ#Ô)ðWKŽ"Eµ%ц ,¤¹ü56Qî&`B”.üá(†hÁÑ »ÏoËîî®8ø«åGŽ¢Z‹’hÖÒ\ þš›¨w0!Êù›ñÍW4³;ï¾—dLLŒ×Lëש@éþµìZƒ¿kXóÃhJ÷}pÉWž{…äœç8†Ï(žÞÀÆÃÇùm©TÄ¥EcŽLþðÓ|ÒR¢¿•5•ÔTp¿¸VuJ¿ñÖ»$}yÛÏOsç’ŠëÛ·V•ßö[·n¥ü5jø-6óÔ©S¤¢H‘"Áªòj/øÏ5ø¨æîÕç îx‰Óy$!½µ¸á(ÂQTkQmØÀ@š‹Á_3`õàn&DÙ¡âGÑ{Aw8ŠÞ\|Sp}‰DvZØ=EwÖüÕr‡£GQ­EI´aKi.Í€MÔûrß±}ÕŒOàïàU¨À&“æ¶³_i,µ¹®¿móÒK/µ­#Pƒ+šòÙ9*V¬X ê–ËþX²€êÞzkw’ûµÜ6PEÁ¿|ñ$ªöýþðàÉT>¨­²’Eù»„åJsDnÍæ]^ÍûÜÍg›œý‰ò{×ãþèö.ŸQ,\’y¶¬Ïœ—.ýêçdð[QÓs8ò¸mÏ!Ê/Y²¤W?²Ä¹sÁ,”˜@UKŽ'ùÛrþÞãE]$Sa©¼H!æž™IõS Þ Ü¯%%*Ý}sG*ýþ§…$SO«‰°Š.˜¿k¹rå Êš3ÿwQ¤DN<ôìÜÊoÃ}jÌKJô %Í›7§Û§Ÿz‚dûŽE‘R™’’Bú’““•êTeâyGѵÜá(ÂQTkQmØÀ@š‹Á_3`õ¾Üá(úGŽ¢ËðŸ GÑ?‘ GQ­ô}Þ‡¶wôþjmŽ"Eµ%ц ,äSœ™‘A9ñŠ~ü§LžLz-äÈÊwóÙ'Ÿî'¿œÊ¿”oß³ŸtŒ|â)Ǻü5ìÖñjÊnÞö’<òˆ¿j¶órrøûuE“ RÛ “¦¼í¶Ûl뺰à> ÷ý”= _o’¦M'Ù©S§ «;¾¿¯;G –,^D:¦ÏæHKãÆë¼°añ"Ì%Ñø à_«6QqÅŠ/¬fû~ñþ|ÂèÌù×Í'IGVV6ÉèhŽ ÙVl4¨\‰#¶½.åÈÇ[qÁ‘©NUzµ«^±4¥ß»úɇÿªDrí–Ý$»v¼†dÙüýÃë*sd0—{ž“œô þ‘ªyž½še墆4Ž®õšÅéu‡Y朔^ÓRy¾"ò“ö87©þ~Ýü»ž#ÝeË–•ê TáÒêl…2xÿÿ³'š“›KÍ¢¢Ø!¤#PÙí7¶£â–Žðù•Ï€V´ž£Júw/ú˜äŠ“ÅI®Ú´“d°—¯?ŸF*Æ=1d±Š“üyÉßÁª¦öÖ­%Ù A’·ÝÌÏ…iÓ¿S¢_()G·Cñ<^zõ Q¤DÖ®ÆûèÅWß"}]»vU¢W(¹íæéöéçÇ‘¬S§Ž( JŠç}§Ž|föžü¼û.(å4^½z5¥êׯA®ºÛTãyQ¸pauJC IðGDW l8ŠpÕX’E-ØÀAÕà(úçGÑ?8Šþ¹ÀQd.pýÛ‡o.E_"þÓpýsçÀQôÏGw®àGQ i8ŠpZÒšU+©¼tÙr$Ë”)°¾¬ÐwxäAj2|ä(’ªÞ¶wè ¿Mð¦:Þ¥Ëx²ñY-ÿàÍ—©ê;ï½Orí¦íV›Zª×´ÿÂ|ú,G×mÞa©¬RÛ¶m©ÊÒß–lÍU$gü¸@ÖÔRùgS8’øæÓ¼®—µ½™Ú}0qª¥ö²JÝ:¶¡*Q{øÌVýîOQzÔ(¶Y{Yy|‡Êz\Îg¨š<ð:5éÓ§¬iÀòF—5¤ò29{H&Dç¼ÿŽXvéÒ%`{Ya¿|¦ï²Ô9TuÊZþ¥ÿÕ)œnÑ¢…LEÀòò¥ŠRùòüvÆ–Óø,Þ¿ÖP~•*U¶7+ü{)G„ßÑá¿î>IU ŒåÑ)‡gÚ阮&}ŸOþäòÞ¡¬üvJŸL;KÒîåôi>TØ¢Ñ%ÔôÓk÷’LˆÎ%yÃ,ŽÈÍžÇûì•1lŸ{÷r½óR#²&"l›7¯£öåcŽ‘\p·r¤”Çsç7|óÃŽÈÇ‘ql¯qqñT¡@<Ï/.–í Úè§÷=¨ñöL‘å×´jFíçvãu2‡Ç¿xw4å9Êó2k/ôˆqùÊÎ×´¤¬»KÿKòÊòŠm6ísïá¾Ml¥ðÕ/²Aw¼(…Òýÿ¬IòŸÕ|–Ð–Ò *Oÿ.¥fççÖýµSúÝCWpþ/¿]PÛþí²¿ÿ¤F÷Þr=ɨ ³ëùù0i¯¯}ÍÜ"#y,T2Fµb{Oo:œÒ/Œ{É©j¯vukT¢t½ÂGI¶|€õ<Ø«žÓÄ]®£¦»Ö1¯Çò¿[Ý»3'§zE»ÕªÐmLïƒ?ýŽÒW_}5É`/ß}ý©và_ʃPMMÅB×$0ïO÷V¡ü`Égï⌈ÙÌÛy¤iE7³ŒÈçڿΘþ5šö"ÿâÛ©ÿR¾´w4aêçö•^ÐâÞnüËf»è…”»ó(G‚²®x’ÒÏ>÷ܵíß-”Hv æ_ÌŸXR€Òuî|…äÀí+ýO‹% çS;Ù>><‹Ò·ÎL&yÛãIvëÖ¤ïE¬[v6G€DZÈCûP“GøðÚ°Ë9Òuåg¬èóüKùå—_Nõ|õ˜¥ÓÈÁ·t¦v‹nç_Æ«ñË8=âLÛãcߢrñ? |õ‰qŠü¬lžÿºµ‰üñ3ŽÈ¯éu†ôˆKÁx_=øÄc”%Ž´eå0‡lCOfïo!E«þú‡ÚÝR”#@ó·pdþ{ÃÄÚ5FäEŒ/û¼~ÑðsëýÖÌ¥SõsÔßNzM`ǧÂåÆ/üÜ'*Æp yzž¨hNŸ3ÊS÷!=©;øyË8ϲޔíy§åyó/N—¾·ÝD' sxçÄÙÅ®—½9%¯æçÔÚ^F{_à›*]9r&"~Q¹Æx éi1`C͉M<Þ«ò¾¨ ´ÊzßÃzj]eüûÁ(OnŽqcèãW±LÙ{€iÈ|î¨ëÍ»ñ¤x*oÞ©-ɸXNÇÅ2†×#ÞHÇŠH«‡ÇujGPf0͙ؑ×Ò½<þóJÑMÿGF’Œ7"· F$7!>òEDTH1þÝ›WQùß_½Jò“N©$¿ÛHÂóÖîFt3ö5Ž8ú¶ë!ô‰r!÷îÜFí‡ÜוäòI¼„ÕyZt`ÃÂ*ígÊ p9–F¥%Šó¿Ï§Gò‚=¿„å´E7Ï<ûl-ò¢*åKR¥Ù7³½½œŸÃ—ÝLJôíÛW®$@ ñïë]¥8"=}¯Û=O}L­‚=9b(oú§“H_¹bI¾lüÏŽ–-[¼èÓÉQ¥¯ßArÍ~žþôϧzõêr%j¬üw9•ÞÚ© ÉC§ø¹¹ïàQJGÊYEñw&þëi€Å¶QGŽ¢_s£è‹Ž¢.pýs£ÈP G Ž";&QpiÃÀQäçEæGÑÿ¿#"Ž¢ XÂQ ÌÇn)E8Š^6óö+c)½åޤ,ÙÉ¿øNù~1å‹·¨y5²‘(^”#ßtåˆÐm3â¨õº-»H–*Å¿ÜÚPIUÅKÄ÷ËRã_Úbžå?Ìr·íÙÕ+ê>u"ÝÎz÷Q’¯µâ_¹çxßEqµÿD¢øFD Î¦q®Ô±=ÔniŽ|±v§é$öDŽ•gý…Jâ¢(ŽÄx ½Ãa1+žsQÜoFÛ_βÔnëÎú/z‡Ä^Y‘²Šqä&×Ãõr³zçŒþ|ÓF`ÍspÊ>jŸö˜1.£ƒ‚ãxß–ëU‰r¢½ç/¸xD„Nœõ;?/n¿ãùmÔ¾iYÖÿ˽ÜA"?æ<—¼T›2Îë3"|‚³pè<çó¹½(ß;z3e|ÛžùWNæ~.ý˜ÁÖ|£7\Ïâÿ ‘¹ˆ¹ïU—9V, ŸZÈò†Z,ÞÊòÀYžg­Ñ5(#¡ïs.ýÿ׌ͧ)3ú³Ý$Wõ`{‹žõÔ}Ÿ#~Ñqœþÿüçœ3"™§¦q®!¶ÿÖò<þ:Ä s‰¡ß¿– r sz³N1ß­On¡Jû†°^ñýÉ–_ÆR~…ÕIŠvÿOr3Ç'òš¶ŒŸ[7Ÿ öKïæŠ‹wQÒsÛ/lß…º–eýFÄöãóˆ~¢ÏvjD^E:uÁAj7® ?î½”õµžõ?ø7GžJ´¨Ì†^Ñ5¶•GDtÿ'¹úᥛèfï ~®‰ýuñ;\ž’TŒnŠU6ÆoÌ?ʈ ÇIJ½Šˆ¥ˆ`æfó8S7m ö›úð¿Û¬Õãy|>ß}—Æv^¿q=ʈ\#ò*ôŠH¬ˆøæÿÓgþôO©Ýì®üïjeÃîïÅÜ£êÝNåmÚ´!)ÎފȨÐ/Ò¾ò¥ÑS»!Õ6’¼±&ÛS‡¯ø¹Ø¡/ÿû$ôû¶÷M‹þ§Q $½UÎ%ùËF¶ÿSžÈ»_ð¿¯Mšð¿'TÉÆå£w_§Ú‹§Ž!ùIætÑ»l7¿¯àõ©T©’ ­ÿ«úû’E”tïM$ÿ½÷C°gÅÿ×Chïà(ªå GŽ¢—EÁQôÂq>G‘ÿaœpðà(ާñEþÃÒ×1ôM‹?dá(ò#ŽâùG-ßÀQ$pá(þ×à(òcÁꎢURÖêÁQ„£H–"Dÿ|þ¥Ç_Ë¿¬6žÊ¿ˆ}øÿt(Î:‰· ú:Âùâí€÷ßv#é=¼mÉûð_åÞJ¤ô·³Y¿xÛžh/¤YdëÀÔþÖ[»‘Ìeü…A)'ö9þeü›ogPޝ1^!EÄ(ˈ<ýòój—¹‰œÑ•‘?fü°Zõí8*4‚±Ì2Î’eg§Îë3ÎT‰ùˆüe Qû—›ð/Î7ÔÈ¡ôú#$ã3õ¯¹‚2ĸ„1n!E¾G7n§v+îãÔ=ß²ÞW²¼gó/Y¯gðâßÊù”Qž#ÎíàÂäÖ|&¦q9VóÙ–®àHY±fÆ/Ѽ>"Òtî|š ‘/"jI[8Âòpþ…önãlÒ«KYÿ ùáä–ü‹¹ˆ‰ˆï<þ—ÏíãVñ¡²n¹<þg®àq<ÄËíù´` ªXò*Ö/"oçÏš‘&ÁGèªìe¬_8†ñüoýžAþs+q%ŸýíE?pÛ‰o)Eo"Â1ƒ£Èâh8Šd p_|½· R6 ÀQŒGQDÎD$/##ƒ–:ÍxÙ[ãߢôÎÝüËYfÿ2'ž¢ÆwÐ|#jÇŽð/…eެ§ösoçvÂŽê~È¿X¥—©BY Iñ$Ï?Š×ºGÅzÿá,þ`N;Æ¿(7Èá_®ÓÎð/nâ¬V©WùÁ^²y Ò_õ{ÎGš(û?.–"%ÒYÇ9ÂWf;G¶ß%~úãúqcXV½³ª‘aè1ÎN;¦ŠyýŠHT¬9ËœÁ‘ËÆY­Æï)ý:Ï»òPþÅP´óÃù³T>…ÇÑÀÎŒàqláeñ4û<–ò+=É|Îëg¦xy®º*鲉2:üËà´ŽSÐPõäŸÈÁïýÙ„ûiñ‚W¨Ááû¡ÿ6æ;o@H+ÿëüö¹rW ß>L¹‰K+ʨ6¢ ó;|GpxȨDU;ô•,ÃzIÍÀs#«ë% |€Ö³0À‰'ë©evÒðöà’ÁUß`÷Q~ìÙÁˆDL{#+8~ZݱÂ.–¯îF=p²Mãg˜cð#\qÛ 0Šc+ðÉK"ÛÓ|d0ô¦Msœ¶î­êÙý³o"°Ÿž‡ùk¢‘§ŒÇNÝ%åK:šp¿_c{Š €ÓÃûðmž=ˆ$ ‹“Wä§¶õXÕÏ„²âº¢ X”é¤to ÖKú›9ÊùiÝ´«ŠjÆZ[)=—Šsú‚L?ÊŠ[Ô‘@R)ËC`æ§)S$iÍ-ã0Öq¿u=‹Ðð€§ÁŒJÄgíå°µ;S¿WKòXô«X¡D £mó–+Tc\u¥±NÛ”¨ ˜5mÀ:Ê.ƒǨ󀒾püóÖäPËîk”9ƒƒÛØ·°’Roj<õ“ú”ü¼:.€é˜ÑïEêÅt Yþ¬—(?gî\Ÿ½¯{w•©:LiÔd­~€ÏîB.¬øØL²9‹”öIÁƒ‰ïñ Y1ì¸ünÓÕŸJªV/—·Á<Þ¾l¥"ÃëÚØ®¿–ÙˈŒ±d§üòúPSî]\]ŽqOcvlfz¨*½äZÙs\w¸Û&3;6I~½{)‘ÉX6à Œì>˜ß›Ó€»Z;æ¬SÙX û5 ÷}~6&>O/3ªÀU-a×ígÀ,v²S»RÖ°÷›ôÐÞoxÏæµ˜Ï³s˨¯0~þ%@Dthï7Žj0ÛÖfêêâ"0™üÿÍ:Úñ¾ÃÇî©`µ!á( G‘V”påo,á(ÊãÃk…£È‘ðN¹£"Eo\üå„£(Ekó\8Šžh¸¯…£èÆÂóJ8Šžh¸¯…£èÆB\uG@8Šw‰£È§nÖÔ§érªþJD¤“×ótú!Dà+Ç#‚¨,¸H_3;}ìy;¨ÈÓUˆXµÌaŒâPÆ(òަåï€)˜”†ˆXIBð‰¹¤‰ïP­«¹ýöÜD쯡2S"ayÅ`äÔ2í `Ê®U’þf¶'dô7#]cPsÁ÷”.³—€y öÿ±ê›;,: "ˆ1‰ˆðgmÒ†QäýW³ˆpŒŒeÚrDly½Ú´n«‰TèG`ï]Ò3ˆ˜«ÕËåoìÁúÑ?ÊNÛãL:o 0å¸sF«é$"ÎñcÀôE¥D)Ô(ßÜ^ƒÈy gúpË )¨í´!â‹õ©@´WšJñï•Axtê¨n§Ü¸(ýöó=µÁ_¾_HØQ;Tc|ÏÁµ 7܃õ½Óêò‡WéÇ Zˆ/ŠÔ>_¥ÈXs&Â~%3{&mjÞÂöî'LÇ{LâˆøPUyÉ9Ùžë+[ðá_.èÙõjB¦lõßb{ s7ãùÚ7U;_±²Œô·±S£G±/šÔ2õöŠ6ÒÛµ·šÒ« x?³:`ïñ£Âÿ¯`µ#á( GÑkE GÑ Žná(vƒÄgp½a‘¾0 GÑŸžÎIñïéþéŽb „D½GÑ7ŠÂQô‹p}ãò/Žâ]æ(òûÚË/ÐåÈÖ”ŒÁž­ùÇá?Ÿ†%~r.¢(åßÚ[ÅØ…`ÕFôø ›ñq0)5ßã›þ¬µØ‹›©MD<Ë×`†r6¡ß¯–Qä òO{,;ÌT”ÍN%åõjÓ.ö¦®³Ó8 ó±ÇG­^Žÿ0|Í%``“Æa>Ôê—Ê;êÞS©>i¾Ç™-TuÁþ_CéøxžãÎE^.ÒÿpÁ¿“1 1‡q¿;þ›&ŒŸòéqÎ#ég/¶íµÖÊÎ|¸àhœ÷j½À¿wf–ãnœ÷¯(Þk¢Ø¯V¿­¤™T\߃³%n6ùþrMm?=%/Em‘Ž¢p}®(á(ú„ÅU(E²ÂQ<üÅA8Š²Ë¥Ç*Ãá(öØ Å>—uïch÷tÇ]8н3ÍÂQÔ÷ÿÿÔ£@IDATìw`ÕöÇÓ :‚Ô‚(ˆ]ÁX@±ûDEEå‰ņн<{vE±  XA¥&t$€ ôšdCòówÎÎ{ì²ÙÝÙ¹sÛ~óÇž™;çÞû¹'gæ;wg&µêŸ¿”$ü;þøã©×“&M2º÷×_1Ú¿à»·Èu®O¶V¿Æd½~lø|=¹¨w,ûM¯™îÉå’G‹hÿv7å“-^¶“lͶ¹dE”o ˬú™¢]“¿ª þ÷IÍHõÅ¿h§áüEû‡¿ÈÀ=2Ykuá_þ&÷xêÓèK½zõ„ X¸p!ù9wø9d3Ou»qôJZ±¾ ˜l‡§÷ -àÓ’.Ü}êžönÁ_͙νbÇ.—÷Ÿ÷}ÿÙj@&X«-ç÷ v_øn©ŠŠÑ¢ B1”Åè|°• ˜~â`ú8êÂBÑôH2«ýºÄ½YÔ¼·ÖtîŠÞcÀ&ІÏ(:ÁØzÿÖôµÁ°Z¼JÓ .Ó¨ÃÛT þjFÜÕpwjõ‹Åv¾ò^¶®œª lå_0¶TÐò®Í¼œ»!›–ßzêC²‡zYÑ/¼ü¹|bÒ#d×~±Šìõñ/F-å_V´¼¿½èª#úó‹{Äʰrà¿)+Lç^QÌy­Öçü‹‡>ÿQ 7Q•`FQIö¡¡(6¢bx3=Æèžö›Á_Í»îN­~ñ‡PtG¶~q\Ö†ÿp"r–Mç¡('NL©BÑ¡xà±])æRð•ì´L=§MO ¦ücW×N𯎌¿ëÁÝ_¾±¼ûÅÑ0¾7°YN%5¡Eλ-kñrëš<“wï÷i´}û޲ÙÙ<ëÝn·ßwç­´ËÛ/=Nö» ùxðíìéÖÕyôe¯+[ñ Ÿ?ýâîs³­qþj†Òtî»JxF1÷Ó:ð§/~V2ÁZ1£˜ ¸jvƒP„P¬&4üYmzõ‡Š<¯à/õî5ûî4ä÷‹?„bô±ô‹{ôZ±Õ!þ ¹ÖtîŠrãE÷Ú -Їp(ÅZùYüT»ô¾‚­[šž@uãé¶=àï–˜˜òà.†c¢^üâ¿k'_y_vËbjÚ{§òLbŸ¶<“è´·í(¾w|ÒOshU›6mœMžìÆiÿSzw'{|C¾'ñÞ£ø8à8¿e2{»1? »ñ)œM¾Z¿¸ûÚh‹œƒ¿šÁ4»“ײÆqÞš>i† ÖŠÅÁU³„"„b5¡áÏjÓ¨?Täyy¬w¯ Üw§!ÿ»_ü*ÅÈcê÷ȵam8ð'"gÙtîN^ƒP”/º×¡h‰Pìq _QÞÞgÅ\F-oï;ô+pMO ~q‘åüe‘­ÜCyÈ^’Åÿï—R×·à§ŽèÎ3Ž=Þ©KëzeÙîÝ9_{åpöé§ ç}À]ZÔ åÎõËÈvªÇï©}³a²áô´¾î|¯"-øø!‹»]0Ú5ø«>Ó¹VrÞØüÌŸpÖ¶ 6TÔe­˜Qt ,FqEÅ!"v³é T, ùÞÀ_>óÿ¯ÜÕpwj•ÅBÑ!ÎV÷ÐZ±ä‡„\k:wE¹ñ¢{mŠ–Å^gô¤XÛpÜ_d3ëdh{¦'P-¡ºhø»€%°(¸ „™€+YüK^¬ ÖrðÑdWOÿ€lEÏ,žuËhZþ׿þEVÔǦMüK’ÂÂBrYPP@¶pöodþy*Ù}ù©¬5öË¡e¿?dq÷»¦ú5#g*÷²åüTæò—W¸Eƒ8o5|‚óÅü%E´~¯à½ÎjèÆ®3б¹)¡¡è&^<—55zî¸&À_Í@€»îN­²øC(:ÄÙÊâZ+–àïkMå¡(7NL© Bѡطй?]N6«A¦–1hjÕfÿ  ØÜ@ôàÂoþñLÝ£V¶Û§Ù·ßCöš!W’qïÈ:”¬ì®Çt¡*Ó/â™‚Ô n·_íð›»_í¶Å/ø«IÓ¸—ïI,YDÀ–]Îù!œ^ã§riÕìùKÈîÝ´Yx-–1£(v !ÅFT o¦%ÐÝ1n3ø«2pWÃÝ©ÕoþŠéPë7÷ÐÚ°NüÉÈY6;„¢œ¸0µEK„âF1¸´óB²Ù³´ŒIÓ¨–=4 ü=Àó°+¸{€'`W¿ø¦ðûïû×ÔÊSûroòÌß§UöÛlütÒðr~/Ïš=‹ªxÿEd3ûù[£_Üýmµ=ÞÁ_ÍXšÂ½d¿oõïŠÔ]Gq>«d“²‹_ ›â,;öÁŸøkE«ÖÐ~õèõ4TÌ(Š{EE±Û) 4F7ŒÝ þj†ÜÕpwjõ‹?„¢C8²õ‹{äÚ°6œø‡‘³l wE9ñ`z-І EçivÅÅ|%¨´´”bpÄC#È®hÄïñJÏã§žVø’PÖ|;·Y¶Ò˜5%*…äcåàï#Ü(®Á=  ›Dó/›ËO7=¿9ÏÌ ¿~¸„^ˆ«âñç#gc–ðSXsºùó ÑÜÅHOà¯fœµçœ1, Þ›¸åûÍ *xËrUp{Õb~÷€]HÛÓÒx9-í  õ;uRºšZ1£X ˜WC(B(&:‰í¦}M¬[Æìþj† ÜÕpwjÍBÑ!ÝŠæ½6l 'þáDä,kÏBQN XR „¢aB±~šzíñoÄs2ùPU9Ï0feñÓªj/máHÝØ2¾4ÔBièjŸ@•Òñ¿rð÷Ÿq¤À=yëDñ/[UNî²ú`²o+¯>ÔÔçÜ“ÈëêÊÈV÷´ìMSù=õ©ïª¢¸»ª…ÿKüÿ‹BêÓ¹WU°’¬|ƒ™6kêl©ü¼V†E¯C÷‡P„P Ÿ—LO >ãñÝ=øûŽ8bà‹´•¢øC(B(J Z‰Š{MI*¦s‡PLªpÙYEÄâÏ?L£A|Á©dç^²5â ?;;Ö?µ©Ùz—µŒXNöJÓ¨l^¢ëÑDãóîñqò«Tuü«vñ•óÔtþeFe9ßÓØÌ÷ ¶¨I囨6\Ö„–gLúÕ¯¦Jõ»víZªï„‹z“Í<Ÿ«ß1o;}Yòä ²u÷â_°´þϾ\ ÎÏê¸Ç¹;Šy$þ&¸»éܼXñŸGΙ67AjvÃŒ¢Xb#*†7ÓhŒîi¿üÕ ¸«áîÔZç„BBщ›luqoSuì‹éܼ¡¨ctÉo„¢aBÑ ‘ysçÐד{EvåÕ|âØù|eüŽ?ø^Æ×ä;»haMO Z@ôÐð÷Ïîà]«ã¿%xïÝŸoÿEµTñ„bJÃÚœG›mÅNÞpÞµP¹[‡›õ”ÓX?øø}*rÓ—“mZ¶ƒì•ùž÷Û×Ԧ彮t÷˔긓3|øNü}G±Ó¹;B10†óàÜïçEì§®+1£(vd !ÅFT o¦'ÐÝÓ~3ø«"pWÃÝ©µ:þŠLBщ»luqoW/õëéÜ!õ‹)•-‚P4T(:A³jåJúzd7¾w$ko¾TïÆ¶N­¬é T+˜ 4ü€&`pу‹êø;÷$þõð2ò>´=ß‹xË¡Á©Å`ÏoI\Ðâ2Zóܨ—=´FŸ]—.]JéÛ»ÙË;¬'{ãá<“xó·ÜÖwš4¦/OiÄ+âü¬Ž{œ»£˜Gàï`‚»ÏÝy}Æhþ2ïÇ‚I¨Ù 3Šb¹C(B(ЍÞŒO 1ú§ûfðW3Bஆ»Skuü!!±ÑV÷6öU§>ÏBQ§pRÞEÃ…¢A·Þ}+}ý¨ä=²µ;ñÓNíºXã¨. lø'Îãnàî ÇÝãå¿åÍÕTÓ¶‘ýàtžYûx!7àÍm=éËGƒSm¼Ú¸ÏŸŠÚüÀ]·“ýª Ùý†v¥ç{é´bÕIÍÉÖéÊïã -UýR¼Ü«÷€-^€¿z‰ïk<÷ P,}‰YQðSaâ0ì‰E±Ð!!ÅFT oÆ'ÐýÓ}3ø«!pWÃÝ©5^þŠ1¶Š¡ùì“EÏ/á{OêÄï½RZ‘k¶%FîþkÁ_Í»îN­±ø6óLbãZÐ._8‰ì¬™¿“=øàCÈ6iX‡ìêu›ÉÚö±xñbêRA?åpÂWŸÒò¯y?“ÍÙ3Š&y¬¸7©/&µÕî[Ÿæ_,™É½2e 0£(v¤ !ÅFT o¶$ÐÝÔv3ø«pWÃÝ©5E&¡èDŒ6VÜÛÑKýza wEýbKE‹ -Š£F¢øytöƒdëÊW¾UU´:mI Ñú¨ó6ðW3:ஆ»Sk,þ¥/ó=y³&Ϧ]233]ÉVVòö®BËO=÷BÈvÛŽ;ýXêâ¦^kÉfÖΈ«Ë±¸Çå…&þ £ó´£éÜw­.¥þ—<»‚ì¨7'=®÷‰ž¸ÈÚ3ŠbIC(B(ЍÞLO 1º§ýfðW3Dஆ»Sk,þŠ©ÈB12ÝׯŠ{ÝÛojûLç¡hjäùÓnEK„âëo¼NrÏw­d]"Æ£WÓ¨Çî+ßüÕ ¸«áîÔZÿŠñ©Täíß%Ûq¿ŽÎ.°»X¹’ŸŠÚ望imæ9»mŒòµ:îQvÁ&À_ L®Lå^¶Œß§ºë5žIœ)¿GöØ÷êQïïxòM²½Oâ<à‰Ô¢˜Q‹BBQlDÅðfjÑ-c6ƒ¿š¡w5ÜZ«ã¡èŠn!£óÑukuq¯k{mi—©Ü!m‰@±ý€P´D(¾û._¿ýÛ›)BêuÇ=ŠbÿUìðfêÌtúà®vÃù¦ñ¥ï:íjØ™§ž¥¶†ÔþÆ;oPKýî!²ÙGF¿Wqñ#Ë©\û›[ÒC»š÷võNßޘƽ¬ˆŸnZ6ºˆ .Ä3‰á„ÿ°>­öð«dO:ù´ð"Z,cFQì0@(B(ЍÞLK 1ºcÜfðW3dஆ»Sk8E‡Œ; ¡èŽ—êÒáq¯º=ÉR¿iÜ!“%2ëgjïÞ½ùÒjbû»×Ì™3©íݺu3¶»7|ݺu´¸tòõÒw߬Í÷’à•«ù¹Ú´)™þjFÜÕpwj-^ÎWÌsdÓªÆ9MȶiÕÆ)ë‚@áB~Ïâöìm´WZNZÈÞMü^ʲ å´¾Vûš!Û± ‡òŽÎᵘÂ}W1Ï–¯â§œ6Í •UÎbjèÿ÷ºb¾·»k·ƒ¨ëµòôzo·mç÷áñ%{BBQjÌ™’@¥B‘XøK„½[Uྠ_!ÅB‡PËÓ/oÈ;~‘î×îŠÑÇ[™~zjØOO'OžL#·m_É-++£å_~ù…ì;ÓÇ’ÍjÃ÷ŽTø’PfÏ06èÁO¯¢B >LûI†D¾V þ¾â­Ö9¸W‹FȆ5Ï‘ŸªÍ<“Uºµ‚–·o ½×&o~ôÒU›…Ô›¬NœãÎAÇó/rr.㇠/ðÓ­-&4ó6óÌCçgöKVTJû¼£¿)Ü+vp~Ü0eƒr&Sùÿ¶âW>vå0Úž••E6- tÏ(yä‘j@WS+îQ¬L‚«!! Äv3%&Ö;ý÷5cîþr‡Pô—o¸wÅp"z.#ï¨S¸C(ª‰Ój…P4L(žuòñckó bóÚ|å'#…¯¤g¤ð c._øI)æÅ”ñE|¨ý“j¯ìš’@MûGŽ·½à/)±åÀ],Ïpo›Æ¬¢UíÖm'ûâ •d›oéË?´H™¶ŠY±}¿/̹BîËñxîùg©àM7 %;ºÏ@®gûäB>u~¤}|QJ(ä¡8ãvf ÷²W9Îøò7ê{n®Ï–ÀŒbÜ¡WAEŸET![¨(²ý€¿lâ\¸ûËBÑ_¾Õy‡P¬ŽŒë‘wÔŒƒ-Ü!ÕÄnµB(&êuäôõš6 Èž¾Opê0X`ùþÒí-¾W±íã‚[Ô[¨ZЉ×þ‰³ó²'¸{¡ÿ¾Û'o ÂSÖ“-¼”ïÁ9þMö±tG-ú2eú<²ùùù¼Ÿ®Ü6ì*?í³·ÈN<“8µù¡²)ÇÀ3·?nϤíïÛÇ•CyG G·^lá^6†ðËçÓ AÍšf<½3Šn#6zyEÅè"x«- T0iîÀ_êŠÀ=‡o о¡ q ¡‚CÛä5Cc wE5ñ£[­І E'Î8ñhúzZÞ ²ýÚòÌbËçùžÄýžïèÕÂÚ’@µ€™@#À?hvw]¸Øñ6¿7qùäå´×Á{ó½6©¹üÔÓ‡_ýŒÖuÔQ.¼¢hC»„ZÛø—,Câ÷$vjÄlòoJ³çøø³­~mØ÷ö6€§€òŽèÿTi wE5ñ£[­ŠŠRcÒ–*šÀÊÀ_ L®ÀÝ,E!@ŒàB1W!ï¨[¸C(ª‰Ýj…P4\(:Õ¯7_Ÿ=÷WZÕøÑ}MZY[¨VP]4ü]ÀXÜÂŒâªü7ž9Üå**5èÂAdë׫C¶kS¾gnèC¯Òò9çœCñxçw¨àœ™üÄ‚ÙüK–Âù iýºÁ{kñŒbI~êi»›òã«¥„@ÞŠ3ng¶p/{ïQüéÓŸ©ïyyyq3PY÷(Š¥¡¡(6¢bx³%Æè¦¶›Á_ÍЀ»îŠþr†Pô—¯hïÈ;¢‰ÆçÏîŠñ·í¥ -гfÍ¢X=D²5Ï ¾HQ³¶%j†5îæ€ܨ„w¡8÷pVöß+×½ä8Ú6òÑQ!eœ+Ìi|ïâÝ>JÛ8âˆrXðF ¸¸˜Œ|y$Ù{»‹ì¾÷ãEodÛy'1n^÷²…{ùë<£øÃøŸIíÚÁÓzäóþN¾ŸdÉù½Ï¸bº‡P´$ cÆ: üCÀ–˜iƒ îþŽ„¢¿|ãõ¡/)9åwäp¯ÅîŠá#›œËŠ–Å‚‚Šà îäÅÌÓRµŒh[¨–pãhøÇɇ"àîÔ\¶Uãß6!;yü”ˆá sD,¾¯lܬ1ÕÑèZ¾G4§IðE‹¾×Œ þŸòŽš8°…{ùÌoÚ¸ïéKݺÁÇ«Áw­È÷q£Š« „"„b\"ª- TÙ~À_6q®Üýá¡èWQ^!E‘LÌòNbܼîe wE¯‘`ÇþŠ–ÅÅ‹SDžsóYd3ÏÐ3@mI zÒÝ*ðÍÈàîÕ””²Wù)§Ó¿à§=רQ#bE¸Â‹ï+{öìIu¬¯ZK6{ ? Õ÷ŠQ@ÞQ¶pß6ª”NŸÈO7®W¯ž .kE¾w ,FqEÅ!"v³- T,yÞÀ_ëÝk÷Ýiˆû¡(Ž¥ž ý ¿OäøY‰,i wE‘Qa®/EK„âòåË) O¿æT²™š¾Ì–jê¿<ø«9p˽âS¾ûÍ{Æ’ãý;ïµ\aŽŠÇ·÷¡Ã†R·½{ ÙÌã¢ßC_¼÷4£v†omKÇÈ;jFÙtîütèªÑ+ àùƒn${ë]ªê²V'ïà©§.ÁUSBB±šÐðgµé Ô*ò¼‚¿<Ö»×î»ÓðþBÑ;Cœ6E´÷¬ygO&2Ö˜ÎBQF”˜S„¢%BqõêÕu}D6‹~ª]$šž@µê²Aàâàä¶‚T d ¿‡/m¿±rs€Ö¶ðÓM+vð=‰·ÝýZ?ìºaÑ·:‚W˜ãÂ%¬P8÷|]õ9ÙœöÁ§ òëÚRVÞ³„Ö×ìP“lƒþMÉâ#1È;‰qóº—©ÜË–•P×w½¶‚ìüKw‘½î;~Úi‹ã¯¡åo¿—¬®áyG×všÒ.EE©±jj• ÉÇÊÀßG¸Q\ƒ{8ÿl‚PŒÎÇÔ­á'lŠrGyG.o§6S¹C(:#»;EK„âºuëh\{èE6ë‚݇YŸï¦&P}zk ø{ã—èÞà\ÙÜmT`ý«’½¿Ï6Íãý;f6ßÛ¶÷iІ[‡ç1>ÃKŒâØ,ˆ@uÜ»w Õ°£ÓF²K_XE¶g®øû¶{їƧ³åµøtKyÇ-11åMã^VÄ÷$–."‹ñLb8›¾ç™Å=® M·ÞýPx-–«Ë;Z4ÎÀF@(B(J [Ó¨T8* #Tî ì¶ Bq7}­î„ BQÎ #ïÈá^‹iÜ!ÃGË»€P´D(nÙ²…ƵǙÝÉf_ý©r»Ìï¦%P™ldÔþ2(ïY¸ïÉ$ÒçÅ?-¢Í…WðÍkmƒ¯ïzŽ_畲¨Õ ÚþìÈÑ‘Üì±®:Á²GA¬J :îçÙ—êù{Þ×d§\À3}>L§åÅÇ5#[ïàÚdñ‘äĸyÝËî;ƒO7ýë ~jþ m¸çÎ|b%ß*ž’]ƒ6T¦ðy圿9/ßÿøHZVÿ^‘ Ý¿º¼#´’$r¡¡(5ÜMI R¡H¬ ü%ÂÞ­*pß F”¯ŠQษº6E9ƒ‰¼#‡sx-¦p‡P 9,G"¡h˜Pœ>}:ãܹsÉ–––’ݱƒŸøôKOÑrÆþ|Å'5À÷ú¤”³­×«>mÏj–KVö‡) T6Yõ¿,Ò¡õ€{(XK»JøšvÑMüÌWN þBbW€v[Ü›ì¸Ï&ÅrEÛ«,qíŒB p¸É3Çõ8Œ|Ýv?ÝöŠ®e!¾[¼FËu†µ%›Ó$øTÔRXˆ—òN¼¤Ä–3…{UŸ'nü™‘–êü-ø¥’O7SnÌ÷‚7hЀ@¥¥ñÿi“&Mh¹Gbzôæä<åÚ#Èàb")N/¦$Ð8»c\1ðW3dàîŽ;„¢;^º–vNØ ÕŒò¸G#¡¶9  Š¿üô=]ÿÓù}‰§¶ã+ïÙiþ”ñ™ äÁyÜÍîwį|E_š65㽦NÞA¾÷ÈÁÝ!!ÅDRœ^lI qvW»bà¯fHÀÝwEw¼t-휰A(ª!äp÷BBÑ ={ö…P4L(:¡7þC¾Ôóôˆ«hÕ”s7;›Bl“gù·ä‡ïCë3e…l—½€—lâ¡õ(YKàéŠo¸Üc—>I_zÇ÷":{ßrýÕôõ×üøÓÉ?þêlŠjÁ‚+ÌQ1 ßèpçwÈ÷¬Y³È-˜Åã8ó7¶[Ëù8VoD3ámIF‡È;jFÝî÷ø—GA ›53ãÿÒÉ;È÷bâBBQL$ÅéÅ–gwµ+þj†Üãã¡'SJ9'lŠjF yܽ€PôBÏž}! ŠN~÷-?õïúËΡU³n%»ÏKü>ªÜ+ói9»¥š§œRå»}àÀµ _Á_ôª÷èÜËgñ½Ö—u¸œ ^wÅШ;Ñöüüü¨åœŽ`Áf‡ˆë–û¸OÇQÃîùäN²YGó/bä´Ö¾ZwÔŒ©-Üï1¿Ï^œH_Z´h¡¨ËZÝæ—î“®8„"„¢Ô ·%J…&°2ðÓ…+p B1:S·º=aƒP;ÒÈ;byÆëÍîŠñޏÝå  ŠNxΞõ;}=«ÏQdk]É¿%Ï̯áÑÂÚ’@µ€™@#À?hv÷ÈËŠ´áˆ-ü®—ž¹ Çµn‹Çê°{@¢Ü¯¸q0yø¾æ²¹mð>ÅD‚ y'jÞ÷±…{à}f1a$?}ºeK~Ú´wBþzH4ïøÛ*s½C(B(J^[¨Th+0]¸÷Ȱ #s±em¢'lŠb"yG G·^lá¡èväí,¡h‰PtÂóÐ^‡Ð×ÀÙÅdÓkð½ŠÎvÕÖ–ªšc¢õƒ¢ä¼íî¡ü*vð=‰µ¿h@¦}Æï‡ -%n)QÁ"®ÉéÉ+÷NGv$p¹—cüÆä„™@¯‘w€&`[¸>à¸OŸŸ@TZµj%€Žÿ.¼æÿ[hV ŠŠR#Ö–*šÀÊÀ_ L®À=„b([—¼ž°A(z‹ äoüÝÛîЉF€]ûA(Z&=íŠÐ-½×‘ͨ¡UÄÚ’@µ‚ê¢1àï–À¢É½dE)Q+[WF6°¹‚lÕ¾1e¯ÏÞÎ÷NÏš¾„¶çåå‘õëë`ñ«]¶ûõÊý×ßø=™ƒ½”PeöL,°ã,-“g@Òsõú%MäVû¿6YòŽÿ$ÝÕ` ÷ÀÜïñÏ~J_Z·ní„¢Ò^óŽ¢fk[-„"„¢Ôà´%J…&°2ðÓ…«dá¡è"(’ ¨×6EoA’,yÇ%ñ{ÛÂBQ|l˜èBÑ2¡xÂÙÇS®í¾Šlf½L­âÒ–ªT°Mî ®Y@ÔoZE¶C=¶-k±ÍËb¨w|ÏïuÝ´­D åê]y,Õ{Æ–hDqð‰¨š·W¿I6ç>®m›º‰–WŽý‹lÃ> É69£1ÙdÿH–¼£Û8ÛÂ}Û«ü ‘/Ç|EˆÛ´i£êˆí•w":O•ŠŠRÃÞ–*šÀÊÀ_ L®’…;„¢‹ H‚¢¢NØ  –dÉ;‰Ñño/[¸C(ú#&y†P´L(žrþ)+ºñ½?Ù‚—ð5‰J[¨&8]7ü]#²C²pßUZI¼–_Dö>¼|j;žQt`fÝŸF_‹wòëÌLù J°8퇀hî½ÏìE/^ú Ù#²øž×-F)Ëz6£õuª_-/•,yG·a4{ùüKÔWWÚCö½O¿Ñ uÄöˆÎ;+I¢•ŠŠRÃÝô*–•¿Pãp™,Ü!ã†$*"ú„ BÑ]ð$KÞqGÅÿÒ¦s‡Pô?FLªBÑ2¡xÖÀ3)þíW@6§I¶VñhzÕ fÿ  Ø%Y¹¯½Ñ»¬%?•òîüôÓü‘µhýÔœ§ü~?—hÁ" $’Â…(îß~3‰xõíÛ‡ìØ3x¦úìýx¦ºù XÁSŒùtà ø$É–wtvS¸—­+'d>È÷’wþ_íâ|¤Tò攜ìT.5ÿÏþÚÊ÷œ_<ø:Z?ü®ûuAOíðšw´êŒP„P”†¦$P©P$VþaïVU²q‡PÜmð“ø«×6EoÁ“lyÇ-q{›ÂBQܘÛì BÑP¡xß½÷R\î,)&[Z²ƒì”ï¿%»6e5ÙŒìT²U¾D”Û¾&-×<¶Ùô~Z-Hø0%J@¡¤ ðW‚=%Y¸>à|óñ³ã t›Öm"_¶Œ¯`·mÛ6âvÑ+½ ÑíI¢¹ÏŸÏ3Ô………„ð·ÓÉŽÿæ#²yCùø–,|cõ3YòN,²·›Æ}Û<>ü/'Nã)»~æ5#ÝE_òóóɦ§óÌbN?ãCႚ|ŠÎ;štKY3 !¥Ÿi T* •¿ÈªHîŠ?‰W‰>aƒPtLÉ’wÜQñ¿´iÜ!ý “k€P4T(¶mÎ?&?¹ùŠ¿ÖuyÆÐy\N‡evÐ>òÏÍûÕíÝPIÜš–@•@ò±Rð÷n×¶s¯˜Âðü‡éKßúF¡!“hÁ"¿fÖ(‹û´ï§ kGñ½¯'˜ÉKt«mÏ;¢y‰òg ÷À'LäíûÞ¥/:u…ÈW?²òޝÐÈ9„"„¢Ôp´%J…&°2ðÓ…+Û¹C(º†$**ë„ B1rPÙžw"÷ZýZ[¸C(ª%Z¡h¨Pt‚çÀýZÓ×§Žü“ì1-øiTÎös>ãß’À3‰5á{í²­- T67Qõ¿(’îüØÊ½|6?ÝôÂÖ ÈM×Þ쌤Ҳ‹¤îSlîw5BÑ¡èÄG§}šÓ×ÔÎ¥dsÎØÛÙ¤…µ%j3F€Ðìb ÷µo¯¡Þn˜Ê31Mêò µšä±m^‹©°tC¹îWèËÀy…¦Ÿª‹¦8¤5Kwç=g^õ5ó,ŽÛðޝÿoZ•wt=²9M캧є¼>.¦/ÛÂ=0ÿoÞÁ3Š]ºt1bhTå#à$ÐHEÅÂ&ñ]lI ‰P»'ø«áo wE5ñak­ªNØ 9¢LÉ;¶Å¿-Ü!m‹ÌÄú¡h™P|nä³ O>F¶Þ!µ‹ Ÿö²%ú„Çw·àï;âˆÃ=8ñ²öÑeÔAÍËÈÞuß³ètîö)|ÏWÍî¡U·Ý~»³IK«J°h Cb£TsùõÑÔÛ§§?A6³+¿OxícÐrÖÖr²iç4#[ï:dmù0&ïØ<Ø[¸>ã½vÛôåÀ4b¤Tç# ¹h$„"„¢‹pñ^Ô–ê„àîQ @(FŃî¨>aƒP,¢kwS¾»CiOl9ÎB(z kv†P´L(¾üÊËœþv/Ùú‡ëu…Ô–jj5#g*÷­ïò=‹Wm%pŸœÍïM|ns\Ôj}yv$Ïܨ¡»VÕ‚%v í,¡ ÷=#À¿þø+Ù¯Ïç+"NäƼ¡mi}NSÜ£hg$Êí•©ù>œRùgüòúmoÒ&Ì(†JŽeEE©‘nK• M`eà/¦ W¦r‡Pt1È(ºÅ=H]ajÞ‘ ɇÊlá¡èCpèBÑ2¡8v,?jÄÔáŽõÂŒ¢ÿ—¾5Ù–˜o€|rl*÷Àt¾¢|TÊ¡Dæ‡ÏÆ‘½ûˆmdÇ÷&;î³IduýÐE°èÊǯv©æ>°ÿéÔµ’%ß‘}¿ÏŒa’Î?¼Ié6¦³_”ú55ï(…& r[¸ïx{'ÑxóþwÈrÈ!èøïBuÞñ¿‡rk€P„P”q¶$P©ÐVþaºpe*wEƒŒ¢{P}¡XDc‚{÷M_W˜šïá@(†IÎeEË„âûï¿O‘|Û×7“­Û#O«È¶%jÕEcÀß,EMã^ºˆŸybúÉDáñûø©‘óæÎ¡åºt%{Èû’1g!Y]?T ]¹øÝ.ÙÜw–”P—5¨Göêƒùi½C« å½kqçßÚë“LZÑòAŽcÞjϧiyÇò¦s/[RLC±ëÕ•dSs“-\¶Úˆ!’wŒ€â¡‘ŠŠÂÇý®¦'P÷=ÖkðW3¦q‡PT'¶Õ*û„ B14‚LË;¡­7wÉtîŠæÆž-‡P´L(Ž?žâäæOo [û˜š~ÄMÂ>MO  w\“Á_Í@˜Â½|c€µøµ ÙÏß™Xy9Ï8¾ñÚ«´}ÐåWD,§ËJÙ‚E—~«n‡lîÛ·o§.ß4ì:²ËÌ#[¸p Ù²2~/hƒ\~zoy«\Zßðê–dmû0%ÊþàùŠWWPƒ\Æÿ'³ÖòÓNnNëç,âíz´zÏVÈÎ;{¶À®5ŠŠR#.©¸÷¨ ü÷@"e…)Ü!¥„CÒT"û„ B14´LÉ;¡­6ÉTîŠæÇž=€P´L(NœÈ37¼w-ÅK­ž|ÅÔàIħ© 4‘¾ê¸ø«S¸—¼È÷rüPH ÒÒøJ²jâj•-XĵÜlOºqß´i-(( ;ôNžyL9ŸgÈÓ²íˆw'jLÉ;N{m±¦q/+â§›–.¢!X<ˆgÃÇcî:þÿ8ÿ릴©`éªð"Z,ë–w´€â¡ŠŠÂÇý®¦%P÷=Ô{ðW3>¦p‡PT¶ÖªÛ „¢­‘¦W¿LÉ÷5E‡l$Š– ÅIÁþ\÷æï½²"»²u¦%Pe |ªü}íîÜ+>J¥|ð8¿'±Ý>íbôȬͺ ³è%ÞZݹòÌâ#ΣNfž–x_uÜS÷¼£#3m2…»s«Áª–R·åðFwUññ ²œ—³³ø—i©iéTng9Ï8yt/Z~ûÃOD`æC÷¼#¬£’A(B(J 5®Æ”*ŠÄÊÀ_"ìݪÒ;„ânƒ…¯Âè~¡(l¨áh7ºç{§©Š Øh  Šw¸ÆuõÊ"²¥;ùiUÿµ†–ç¯à{ŒRkñ¡Ê ¶i9üóºç7£r9{g“•õaJ•ÅCv=à/›8×§ ÷ÀV¾1°™Ÿnšº ƒøÐE“=µ¯eS*ÁáÖ]°›i1…û³/=Cì_œ÷ÙœƒùýЦˆ.yÇtŽnÛo÷–R«‚·&¦oÕ-ÿ‰ßCzÏ€ûh{·nÝÈ:÷®gfòÿIëÖ­Ý"òµ¼)yÇWC(B( §Ø®LK ±{dV ðW3^ºp‡Pœ¤&’´VSNØ “4@}ê¶.ù>ÞîA(ÆK*9ËA(*_~þ ŠØ×žAöŠ.<£˜Í)9aöÓeü›óOÊù½Š{ ÉWñ¦%P%|¬ü}„ŵlîËïXL­©ØÁ—ˆ·oe[§_*®|r^=~zÝì…z>½. RW›L,®:e@aÓ¸Ÿ:àT¢º¼ë"²ÙôºÇßíËÎ;nÛgky[¸—}ÅÇ‘W½DCÕ½{w#†Ì´¼£;TEE©1jK• M`eà/¦ W²¹C(†NByÈZ2;„¢¬È°»ÙùÞ/šŠ~‘5Ë/„¢¡BÑ ³W_|–¾~1ún²œÂï‰r¶¿VÈ3‰÷¬à™ÄWç;›”X[¨x*p!›û¦1¹œV4¹¼%Ù-s¸€fŸ²óŽfÝWÖ[¸—~œQ¼âEbÙ£GeLÝTlZÞqÓ7e!!¥Æ- T*4•¿@˜.\Éæ¡:88qå!kÉ4îв"Ãîzdç{¿hB(úEÖ,¿І E'Ü>|çMú:ò^~âuݶÓò¹|3Ò^7¶qŠ*µ¶$P¥=TþàyØU÷íSù©_¯¥Ö/ÄWˆ®d?˜N_·ïà{œ³²Ì¾'ËéW¸5M°„·ßÔeS¹<ácB~÷Çw-©ØLvÛgü”|*d½ami}NS¹O§JãøP•wâhšÕElá^ú5?%ûùËGÑxs Ï´ë>x¦æ]¹B(B(JM[¨Th+0]¸RÅB‘ '.‚U`QS¹C( ‚$t¥*ß‹F ¡(š¨™þ -ŠNø=úŸèëc'›}#¿/ÑÙ®ÚÚ’@UsL´~ðO”œ·ýTsßþ"¿'ëPGæ æ÷cõý°-OQ@¶U«VÞ:ªéÞ¦ MqÆÝ,Ó¹wÜgoêëÁõÖ‘}­/ÿßdÜǺé7 Uç}Ö¡N[¸ïœÄïÛ}~Ï({ì±:àÙÓóNÌJ.¡¡(5älI R¡ ¬ üÂtáJ5wÅãi´&Y–ï]„ ’¢¦Ÿ°A(* ã+UïE„PEÒl?Š–8,[¶Œ"ò´!ýÈæôç{t S[¨.<ݶüÝS^÷Š/ù©Ï_;’:rØ!‡‘íÒ¡5ÙÊÒ­dÇ|ø5ÙÃ?œ¬m¦ SÇÃ4î_}1‘P÷=ù²ŸœÇÿ?§´ã™Ä¹|‹bJï ™´½åûj=4ªòŽÖP$4ÎîŽP|öÒˆZÏž=%Ðó^…iyÇ{ýõ¡¡èo„…y·%†u˘EðW3Tª¸C(òxãÄAMÜ›ÆBQMœØV«ª|/š#„¢h¢fúƒP´L(®\¹’"±ß•'“Íü—^iKÕ‹jü­ÿøY‰,)›{ù ~ºéC†R7.xyÄîœwδþÁGž Ûº5Ï4F,lðJÓ‹Á¨Cšn ÷_§ÿBí>ùDž1¹´ ß›µC~êc§FÜ­Âõloý3¾4¾Jï{ze禃O[¸ïü–ÿž¹øyÔ^½z1¸¦ä#`þÓHEE©±jK• M`eà/¦ W²¹C(†NByÈZ2…;„¢¬ˆHŽzdç{¿¨B(úEÖ,¿Š– Å¿ÿþ›"ðÄüð†Ìóô H[¨^Tão øÇÏJdIYÜË–òàž»N¤æ?ýàÓ"»a¬/S‹±€«i¸)Ü׭㧚Θ1ƒzR0o.Û™ÓÉÎ#;É ²ÍNmJ¶þ©uÉêú!+ïèÚUí²…ûŽñÅ„ð’=묳T!uU¯)yÇU§†P„P”~¶$P©ÐVþaºp%‹;„bäAÁ‰Cd.~¯5…;„¢ß‘\þeå{¿©B(úMØ ÿŠ– Å7Räwî1d³.ä§¶é޶$P]xºmø»%&¦¼ßÜ›y&±ñ-¨Á_8ILÃ-ñbŠ`±÷»a+÷ãÏêM}\×ãO²™õø)¨ÿí¸&_üÎ;štS»f˜Î½tÏ$¦¿É3èóÿbÄ ¾÷];àa ²5ï„uSÚ"„"„¢´`ûÿŠLO RaùPøû5—~s‡PŒ>8qˆÎǯ­¶r‡Pô+bìðëw¾÷›„¢ß„Íò¡h™Pܾ};Eàýø}h9—¤i‘¦'P­`&ÐðOš€]üâ^UQE­+{í¬É³i93SÏ(ra«`I†Älå¾fÍ¢Øgß œy®D¨.ªò+ï¸hBR5•{ÙžILy‹Ÿž?o Ï ø5¢)Y÷ñpVø,éZޝ­yGlEE©±gj• ÉÇÊÀßG¸Q\ûÅB1 ôÝ6áÄa7¿ÚÊBQbX•_ùÞoŠ~6ÓjïÞ½ùR´™íO¸Õ3gΤ}»uë–°w¬¬äK?ÓƒOkKo¦×=Š%E; [ü\ñYß&ðW3Än¹6ñÛª¾¢[UÁÿוÁÄ]üz·”Œà¿wÇý»PÇ6h¨¦ƒš×jk¾×{ŠíÜÿ^ËO/Ú´œ†"­.Ž·ºÇ¤Œö¹Í÷2Ú­ŽÊ|œ©\]JÅŽl]|ËážÒ³'¿W15U¯¸·=ïDK?¶A(B(úWÕú4-VÛC7€¿šsËBQì8áÄA,Ïx½ÙÎB1ÞHH®rnó½j:ŠªG@ïúñÓSË~zêÌ(vîÞ‰"¯Æ`½~CnêO2ôþ7Ž¿uà?+‘%Ýrß9}3U¿õ}~Üܘ¾<£Ø4[åØk&åЊã¯Eöâ‹/æø !`ëO C:©áB²p¿ìºK‰þ/õ¿'››Ïÿ—áCR¶®œVeɗe·yÇ—F$¡SS¸—¹òçþàQ* þ‚%8¡Xà/éi|™šÆÏ¼¨¬äõíöÙ‡öûmN¡V£œ,yGtEEY±Fõ˜’@¥B‘XøK„½[Un¹C(îOÀWœ8€˜€‹dᡘ@pX¼‹Û|¯ „¢*òfÕ ¡h¨Pœü-¿'퉇«¨à{šJKù7æ /¤õU5ùÊÏ®à•!ç Q½ù^¦A++lMI ²xÈ®üeçúå^²´„,{x9Ù‚+‚Wrë³ßá“ÓéK>ü8º[‡ç ø !,‚%¤Ó,$ ÷X¿äÙòÉZ ßm"ÛâÖ¶d³û;³˜hÞÑ tŒn‚iÜ+¶óMïU<¡˜’‡);æð{O}€Æã¤“N"›œYÌÉá™ó¬,ãØm0$KÞqË%ÑòŠЉÆNBû™–@ê¤Æ;¿šÁI”;„¢˜ñ‰ƒŽn½$ wE·‘awùDó½**ŠªÈ›Q/„¢¡BqÛ¶maðÔ˜SùRP³ÚxÙ<Ñ’¼Eq]ðõ8ÿšÈÚ>Ú ¦¦Ë}Z•i ÔŒãø[ þñ³YÒ+÷Ò¢2jÎú§W‘}þDþ_³…I°¬Íå´þéç_Ùlk|%‹`ÑmÀ’û?ýHC0øñAd7Îâ_\Ð’ÿOŸÊ÷ôZg)Cå5ïHi¤…•ØÂ½ø;þ…Ú#g>A£Ô¯_?#F+ÙòŽßƒ¡¡èwŒ…ø·%†tÊ ðW3X^¹C(z7œ8xã—èÞÉÆB1ÑH±k?¯ù^ŠºŒ„Úv@(*ÃæY£º´jÒ¹<ÓØ±!ßË´žoqJi=’tÞṎá»J]¶%J…&°2ðÓ…«D¹Wï-N›IµÍœ2‹ì9ýz“­ZÁ3©ùGÓòŸ~E¡’M°„ö^ÝR²qcÌËûÚ!W’ýò<¾÷+/›ÇàØùÿ¸ÕCûJ”DóŽ”ÆY\‰-ÜwL Î(žþ8Ö©§žjĨ%[Þñ{P !ýޱÿ¶$ÐN´þj+QîŠbÆ 'b8ºõ’lÜ!ÝFˆåÍ÷ºÑ€PÔmDÔ´BÑ¡è„O§¶Íéë»'®!{ÐhÞrÀËü^E§œ*kKUÅÏk½àï•`bû'Ê=ð×÷Õk“èK“&MBpÃÁ´\^º“ìs/¿² L Ù‹.ãn;÷’þÉÎ%ýO'ä9kg}½ÏÖ!x?øš¹aEµh}ã!ù!ÛýZH4ïøÕždñk ÷mßq|?rÏ(ž~:ǹîãh{Þ‘ÍBBQjÌÙ’@¥BXø „éÂU¢Ü!]@ŽR'Qàø¸ÉvîŠ>Á®Í÷ºuBQ·QÓEË„¢Fù-Ð×:7îE6³nðñ§NEÖ–ªŸçjÁß3„¸å^ñ5?øé+ž¡úŽéqlÔzׯ_OÛ5jµ\²n´]°è:®¶sò±GýÍ·òûK÷o‘GËòS‰;ÕÝAËëx„¾kËÇãÆ§±åµþ}ºÍ;þµ$¹<ÛÂ}ÛT~\þÃýxFñŒ3Î0b mÏ;²BBQjÌÙ’@¥BXø „é•[îŠ.àÆQ'q@ò¡ˆíÜ!} \ºÍ÷ºvBQב‘Û.EK…bßþ}(’þ<”ßã”Õ€Ÿ¶&7¼ö¬Í–ºgÏÌXþjÆ)^îå¿òLÄà®WSC¯ÄVM«í©ÕvÁ¢ëHÙÎ}×.þula!ߌXPP@CR8w6ÙiSøiÄ[à÷)Ö8&KÊÅ›w¤4&‰*±…ûVgFñ”ÇhôÎ<óL#FÑö¼#{ !¥Æœ- T*4•¿@˜.\ÅËBÑTEqâà–À¢¶sw¢c!Á®âÍ÷ºwBQ÷’Ó>EK…âF´´óB²Ùå\ÁŒ¶¶$ÐXýÔu;ø«™XÜËþ(§†u/9ŽìÈGG©i¨¥µÚ.Xt6p™ó.ïO+æåÏ$›Ó,ø‚ÅÐb–båaÁQ[¸oÆ÷Ø>ÔçQêßÙgŸÒO]wÄŽ „"„¢ØˆŠáÍ–£›Ún5C‹;„¢¿ã‚ùVçÜCÉ@(†ò°u)V¾7¥ßЦŒ”¿í„P´T(þë²s(ræï3‡lNS¯\Ʀ¶$Ðxû«[9ð—;"›gðûÔV[K7êÂïQKÝÌ÷*•­ã™Äæ [Òöß[,·IR‹š÷PîÎë4ë{(mȾ„ŸnZJÜò½8–n<Ù½xÒêö-Î'ûàC»Á ¬,òŽXôŠŠb#*†7[hŒnj»üå „¢\ÞÕÕ†‡êÈø»ÜCùB(†ò°uÉ–ã,„¢­ê®_Š– Å‹®º:ý¸@IDAT"á÷¦¿Ím‘ã.2|*mKõ ïnÁßwÄ!̽œŸ‚Ø(§ŠÖßxoÞ›'SvVðò…-è˼%+y>…€`Š3ngàÕ7“¿¡ ÃÆ %›ÙÛŸ™EäûÈüý^k:÷ÒEüþÄô7WªÒ >üàËhù€.úГäOøöØBBq ðs…é ÔO62|ƒ¿ Êÿ«Bñ,T~Ƀúà™;„bd.¶¬5ý8 ¡hK$Šé„¢¥Bñß×¢ù±Îwdk´Î1½˜ž@=v_ùîà/wv•VR……×, ûÎY\ÿYûò ãÆ¼¼ï‹5éˆ-ü”9^‹OQ XD‘tçÜ£óºåÀgeŸÍíùéä¾Þ@Ûôl@65#¾Hä{Â%ýÃTîeKx&1õ-þeËÜüžP`—1uèë˜q_“ív0ßkël×Å"ïˆ EE±Û© 4F·ŒÙ þr‡ BQ.ïêjÉCudü]îÑùB(FçcêVS³ЦFœ¿í†P´T(^sËŠœIY_­µO #)Nï¦&Ð8»§}1ðW3D÷:%<ÃxQk¶÷÷(¥e?˜Nvû޲YY‘gÔ´ÞüZ!XÔŒ!¸ÇÇýÐã¡‚³ùÿ¿"øTä5O,§õ›7ðÍ̾҉–SÓ0£Y5¥œ|ßî¦|5 pYkÙ2Ž»]¯ñ=‰ó.á™ÄJþáKJUÐ:ËG¼Å3‹c?›J5uìÜÅeþGÞËBBQlDÅðfZÑã6ƒ¿š!s¸C(ªápWC ¾Z!ããdJ)'ßC(ª1ä{±Ü!-Š7ÝyEʧqdó:ð=PbÃǽ7Ó¨ûê½ø«ŸEwñÌÀÐÁ×S2vð͉³'¾J˳×ð{§LŸGËùùùdñ!†NÄptëÜã#¶`ßÃ|rÿãh‡À_ëɾr"ÿòàüI™´œÿð¾ñ9 –B¾w…KXaS¸¶ðLõªÇþ ¾oYÍïõMMeA“’–šF+ÒÓÙ¦ ´ÉoIëç-\Ê;hò‰¼#v !ÅFT o¦$ÐÝ0v3ø«:E5ÜZqâàkÁ=>ÞŠñq2¥”)ÇYES"Jm;! ЇwÛŸ"hgñv²¥å|Ehó–-´\(#»+øãò]|)¥N+~/N‹[ÚÐö´LçÚ-úöaJõ €bÇà/wÊ×òLáÚ§7SÅkW¯ iÀø> å뮾’ì'_|C¶k×®!å°à‹7~‰î îÑÉœúÇ/Xm_Y@;<·ÇñDcÊÐ¥üâկ׿Gw¶ù> ˆ¤E[¸oúq+»÷èÉ0@AoÕ ïxã¾7„"„"Å„bø¿†Ë¶ÀLE=F 'jÆÜ£s‡PŒÎÇÔ­¶g!M@±í†P4\(ޏñŠˆUß¿Nö¶Cyf1'ƒ%;hå}FñoÌ›hG2ð½\ÚÿO[¨ÿ¤ü©üýáîµj?&®b ÿ¿í•Ó˜ŠLª&ßüý÷ß´½I“&á®°,€‹ˆ ¸÷Èоýæ+ÚpÒI}É~pç‹ÓƒïWuöºk*ÿÒçÕ: iUã388ÛcYäûX„üÙn ÷?ñ/Óî9êuÑEùL°Wä±@!«9q‹Ù?oŠþ±µÑ³-0ÝÇBQ¯‰ƒšñ÷ÈÜ!#s±e­-ÇYE["Ò[?  ŠÎð?öÀôuñÏ‘}©7ßåloó"¿§­æÕù´*»E®³Iªµ%J…&°2ð3Š«Š÷y&`¨ϩԥ—^J¶ºÅ(®°Ipî‘¡=ýÄ#´aÜ»o‘-X´Œ¬óËŸNMø—>k6Ÿ=pNsÚ^ïàÚdãý@¾—”Ør¶pßô3Ï(ÞyÄ}hàÅÅ‚òÉòŽX°ŠŠb#*†7[hŒnj»üå „¢ÎñÖ‚‡xI‰-î‘yB(FæbËZ[޳жD¤·~@(Z"0ýüSôõ«Ñw]¼q'ÙÊ‹Z‘Íi¯ö}ж$P‚iàøû;hß°ÿÇ.}’¾ô>®7Yœ0ûË=–wðEÈŸíàîŽë_ýE;ðÓO'7™–?_ó Ù¬cù—AñzE¾—”Ør¶pßô Ï(Ž8ì^tÉÀKÄ‚òÉòŽX°ŠŠb#*†7[hŒnj»üýEù&ê'‰’󶸻ã¡èŽ—®¥m9ÎB(êarÛ¡h™Pt§ÿ9gÐ×Y5¦“ÍëÙÀÙ¤ÔÚ’@•BôP9ø»ƒØZA;8/&lå÷ž9Ë›y9}=ûzÞ-ôåú«n©'Ì!8¤/€¿täT!¸‹á>ä–!ähJÖ×ds÷ÉŽË1ò}\˜„²…û¦éüÅáÝF£ú·pV~8DÞKBBQlDÅðfKÑMm7ƒ¿»¡PtÇK×Ò8qP32à.†;„¢޲¼Ørœ…P”1zסh©P|÷Ýw)ònÿöf²õº×Ñ"mI ZÀL àïÚêgŠh‡´%d÷iÈO3mQ“ß{ÖºV%­·ˆ_XúìØ/i¹W¯^dœ0;$ÔXðw5ÄÖÚåèÈaÆ@Î;©éœª«ù¾:2þ®·…ûæàŒâÍÞNÀÿ{°¿àyG¾2èBBQlDÅðfKÑMm7ƒ¿»¡PtÇK×Ò8qP32à.–;„¢Xž~y³å8 ¡èW„˜åBÑR¡8nÜ8ŠÄ['ÞH¶Îѵ´ˆL[¨0hø'íŸ]Ö=öíxÉÞ¥dï9’¯è;Þ.žÈÿ_½†sÖLòzɃ“Í<%z%È÷ÑùøµÕî›å{‡í+¡ºjðU~!êù^(ÎEE±Û- 4F7µÝ þ‰ „bbÜtÙ 'jFÜÅr‡PËÓ/o¶g!ýгüB(Z*'L˜@‘x㸡dóŽ«¡EdÚ’@µ€™@#À?h»í²å½5´´ïr¾Òúù¹»hyød~¿Y>÷Ñò­Ã‡ï¶WJ N˜CpH_éÈ©Bp÷‡ûãÏ=FŽÇ,M6§kVHE%KùžêeO¯ õû?»_Èv,øKÀ–ãìö6¨NëøÞØ>™è/8AÞ‘w ºP„PQ1¼Ù’@ctSÛÍàïmh ½ñSµ7NÔw¸C(úÃU”W[޳Š¢"Âl?Š– ů¾úŠ"sèØ!dköÊÑ"RmI ZÀL àŸ´Ýv©øœŸ2x^׳iíë#'{yçmdÿhÍï™zæ…—vÛ 3Š!0,@°(€þO•àî/÷>çžD¬>¼ˆlÉä dÓßBvùF¾—ú€—:Ñ2>ä0ý8[º¨˜@¥¿Å3ÒåÒòÉWóñnÀ¥z?ýyGlœC(B(ЍÞLO 1º§ýfð÷6DŠÞø©Ú'jȃ»¿Ü!ý囨wÓ³Љ޼ûA(Z*'OžL{Í~JUnïL-"ØôªDÿÄà~â÷&ÞÜ“ŸþvÁ¹ÈÑ‚ùóÉpÀþdO>áX²ã'~KÖùÀ ³CBpWCÀßZçÍ›Gô>ö`²ÿ>°‚l×ú<“8à+¾wºó3¸GÑß‘õnêq¶l Ï$¦¾µ’:4w ߃ïôîÂ/ëÓ×Þƒø^ü‹éùTä{gÄÄXEE1‘§ShœÝÓ¾ø'6DЉqÓe/œ8¨ p÷—;„¢¿|õnêqB1Ñ·{?EK…â?ü@‘{Å —“Í9‘¯,ªgS¨jn¢êw$Ëòú¾¹§ÒŽÿ¹óáˆ**¸Üô_~¡íGuïR'Ì!8¤/€¿täT!¸ûÃ}ÌèQäxøÍ7ø¯d»íÍõÝ5•ï¥~¸IÔùÑö¼ŸR˜vœÝ9q ¼µŠì”þ<“XÉ?¤I© ZgùÆiu©ÜéW?DvÀeWÕåyGìH@(B(ЍÞLK 1ºcÜfðw7dŠîxéZ'jFÜýá¡èWQ^M;ÎB(Šy;ý@(Z*§OŸNûï'/%›y_a¬ 𥡪]l3jÊi4-ÚöoþñhùºÌŸÃWâ?}ëÓøv¬¦N˜«#i5øKV ¸‡ñ¸8lÿBhò'o’§Û(%Ûy/vÜ¡!Û>¤Ñ—©Û³Èv¼oÞ€O)L9ÎVlç™Ãõ/óLâöå<3Êá“’N¦”‰ƒš‘w±Ü!ÅòôË›)ÇYE¿"À.¿І Å Î=“"rò·ü”Ųß+µ³´œÖ—•órZpâ03ƒ¯eæð%£æÃZS¹-ùŠ‘ßámJõ›ƒ*ÿàù£øJkáÏüTÓøöª¾N˜«g#c øË ¼gà¾'/k&L˜@»ÏüýW²3ù—C´¼xÅ_d›Öåþ–†<£¸ïmmh=>ä°å8»uöv6¨Å•do¹á9=Ö‚¼ã`ØîŠŠŠaÿ–.Úró{x ý&,×?Näòvjw‡„ ¡(†£ß^l9ÎB(ú)fø‡P4\(®[»–"­y³¦dWå÷'Õ Nædp òõ·~m¾G·ImžjÌ ¾(*¯ÅÄ|ò³„²Ç ³Pœ®¿kdBvw!vÒ¶}[Ú7§ÿsÈNØvŒŸ€-ÇÙ­s·S§6Döö›îˆ‚Â’È;báC(B(ЍÞlI 1º©íæ¤ã¡¨m,ÊlNdÒþ_]àþ?*¾A(ª ž’bËqBQMüèV+„¢%B1<°×Ï£Uý÷ã÷â|Ѱ.-×>sïð¢R—mI R¡ ¬,Yùo|õO¢Øm_!ןjê Ã·ú¦\<%ŸVÍ^¸ÜÙ$Äâ„YÆ„€Âè<íîžðyÞÙá¨ÁOAßÒ{ų̀|xçà [޳ŽP¼h¯Ë¨›#n©»Ú­sâ~’¥ç÷²C(ZHвÿ•̨ϖ˜[ÚŠn‰ÙU'jÆÜÕpwjuøC(:DäX[޳ŠrâE÷Z -ŠsæÌ¡Ø;óâ“ÉÖ»¾ž±hKÕfHvþÛ¿ßDÔv}þ7Ù¥ƒù)ëKf§ÑüÔÓu›yæ1ÄwqNØp…3"ßW‚¿ïˆ#Vî±H[éðùå—©ÎS¯îG6óç)_‘›R¾‘ŸyÕ 3r¬JÀ–ãì¶y;¨Ÿç7¸˜ìÝÃïŽÚo]6:qã­˜P„PIqz±%ÆÙ]íŠ%;EíBRJƒpâ ó•€ûH¤®pøC(JÅnÍ=ŠŠrãF×Ú -ŠëÖñ½½ô¢ØËº@Lv¡¢z’ÿ®’ཉcùJùìçÒ̹‚Gæ Ñü4Ô¥e´"#C̽<Î ®pªùpWC@m­áqÿúØ×¨A}ÿ0Ùì#BóÛº‘+h}ÅvΓMoóYršD¶g·ðŒbÿºÒèÝ{û½FŒbxÜÑh ¡¡(5‹ß»ØªU+Zöú~ÂæÕöwGüÝñUÜE‘LÌOuü/|>9œ‘ñ#Ùuo¯&Û¿ß³=±‚ßÇÜøºÖ‰Uœä{ÙrœÝVÈ3ŠÿÊãx¹ÄFŒluqoDã5l$„"„¢Ô°´%J…&°²dç¡(0˜ r…5ƒîj¸;µVÇBÑ!äµå8 ¡èO|˜æBÑR¡XRÂq<¬ï¡“Ù—`FÑ´N?ÚkËÌ-›Š‰ÿ/M»vèa]\7äJZÏý‘­[—ß?±°‹•Õ°¹p¢€¿xvwðìZÿûFÜJÞ_õ(Ù©ñLâ+³8OŽÎkHëŸÙX@+’Ï…-ÇÙ’üË´š?óÓÀ¹ÀˆÁ¬.îh¼†„P„P”–¶$P©ÐV–¬ü!‘®pâ fÐÀ] w§ÖêøC(:„ü±¶g!ý‰Ó¼B(Z*~R×c»PLæ^ž®ElÚ’@µ€™@#’`:¿/lèQÈÖ%\’5ï»TwÂæÝ3<ÄCüã¡$¾ ¸‹gêÆ£Ã„ ´[ïî“=ºNÙ{“u>ú}ÄO}žß½­ªwXg¬ ¦gKr\d¼½‚z}éü”ð•-ù^ÅÇžÕ ùE¸ÇSÆÅ°‡P„PIqz1=ÆÙMm‹%EmCQjÃpâ ÷+÷ÿ¢PòÅá¡(¿éÇYE¹ñ¢{mŠ– E'ð:¾}­qeèû’œí²­é T6/Ñõ% ÿ²E<£~Bz_Bøø}OˆFéÊŸs†+œ®° + þÂPºrî®p /ìð_³j9ùN+^KöðæüK‹Îuyæ¨S#®úÒ/xF1ïú¶´"·Y6oÀ§+¦gËs<¤½½’ú;çâà{‡ƒ½ü÷<úög³3È>9êõཌ÷8ÞŠEE1‘§ShœÝÓ¾X²ð‡PÔ>¥6'Rqÿ·2pÿ/ %_þŠrñ›zœ…P”'¦Ô¡h¹PìÒãŠÅŒKø©f©éüT3UjjUÅKt½¶òßUÊñ]þW9!Ë_´ÙÏßùB4„ü9'l¸Â™>Ï;¿g„ 9÷„° ÛÉáïüôtÖ¬Yä»°°lÁìßyyÎod—,_B¶ÞMɦçêñljŒA¦g‹gm#º÷ÿ$û^?>žVñÄsJe˜}w¿g³¢ýiTþ¹WÞÖjtœ¸ÇñV̰@(B(Љ¤8½˜–@ãì–1Ålå¡hL*i(N”`Ow5ÜZþŠ9Ö´ã,„¢œ¸0µEÃ…bii)Å^NNYg¹¬¬Œ–>¥Ù]'s¹”à„bU€/e5Ì¢íé¹|o-øøaZõ…צò_ÿöâUQÄï-ÝRAËÅ[ù gž¼AM¾þ˜崽yóæJ8‡Wꜰá g89Ëà/‡sx-àNDî²[þ‹/¦žsÓYd3Ï”Û^[j3å8»«˜Ÿ[?ú›ÐïQ ?O¬™ÊïQl²¿W35•¸©é|þøã¯³µ:·q¯Uã5l „"„"…%„¢†ÿ>4É”Xx×!É`Ù œ8¸¡%®,¸‹c™ˆ'·ü!¡¼ç>¦g!÷;¬Ù“„¢áBq龨®ý¾4º9YütÓìLžYI­â§?fò…Ÿ”l~NJyðaVYGÖ§ýŸÝdÏèða) Ô‡®káÒTþÅ?m&~ÅýEö›þ|ES~[J­`|û¯¸säx*׳gO-¸»=aÓ¢Ñ5üÕ &¸«áîÔš(ÿQ¯Ž"ÏÿþÙìCƒ'ŽcبL=ΆwjÇbþOŸª~´éÉ9ÂËé¶œhÜëÖ]Ú¡¡H±¡¨Ë¿¤¿í0õ¡èo\Øî'jFÜÕpwjM”?„¢C01kêq6¼·ŠáD’sBÑp¡è„í5ƒ. ¯MÿúŒìðCø)VÎvÇŽžË¿-ÿÏßü›ózƒ[9›¤X[¨X>Tb:ÿE;‰ÊÂ{—‘wCê|Ø…Ÿs\ŸxÝHÚ0`À. ø3Ñ6ÅͶ¦zðW3”ஆ»S«Wþg]Â7).êP@.sšà½ŠÛhÖôã¬Ó·KxFñÄ]'Óª§zÆÙ¤µõ÷ZwNAã !¥†- T*4•™ÎBQ`0$‘+œ8¨lpWÃÝ©Õ+E‡¤;kúqÖé-„¢C"¹-„¢%BÑ ãÛn¸Š¾VÍ{‡ìCGm!ûÁ"žI¼q¿ÿ¦Ñõ­]¤Z[¨Th+³…él~êé¶àÓP>–Ÿê;ç/¾w±^ßûˆÚ-·Þ*^⮼ž°%^3öüà¯&À] w§V¯ü·nÝJ®zœÙlÖEŽçÈvçrÎù­ù)ì‘KÙ¿Ö–ã쎥<£Ø»ì$´çyÞˆÁó÷FtRb#!!%†[JŠ- T*4•ÙÂBQ`P$+œ8¨dpWÃÝ©Õ+E‡¤;kËqBÑݸÛZBÑ2¡èêî¹¾.ûâ ²×ó–½ïlçQbmI Jà ¨Ôtþe«Ê‰B—Õ“}käX²çŸÙ‡ìº‚)d;?ìÓÏóÓûhAá‡×6…M·¢jðW3Œà®†»S«(þŸù9¹þîÍd³Žã÷./ØAËK[A¶Q‡\²ÍnjC6Y?L?Î:ãV¼Œg+9V½ðßûïl×ÕŠŠ{]û'»]ŠŠRcΖ*šÀÊLç¡(0’ÈNÔ 6¸«áîÔ*Š?„¢C4>kúqÖé%„¢C"¹-„¢¥B±¢‚ïáêÑû(Šðí}ø=tªŸZfK55m˜Ê¿²”ï=Ìøï±1é׈CpÃ5üÔ6mÚÒö!×ß±œì•¢NØd·Û–úÀ_ÍH‚»îN­¢ù½í:r=~Êëd®ãÅSZò‹™_©ÕÖËzÝ–ÓOݬ©ÇÙpŽÅËø)ãÇ÷¢M£1¼ˆ–Ë¢ã^ËNJl„"„¢ÄpÃ=ŠRaG¨ÌÔ„b„ÁΏ àÄ!nTB ‚»Pœ®‰æ¡ß˜zœ ï„b8‘ä\†P´T(:á|þàóè뜖¿‘Ím®öid¶$P‡¯iÖTþ·ù©½ß¼õ-!oÔ(øâÄj`ǾÒ]«¿W±šbÒV‹>a“ÖpK*5 îj¸;µŠâ_TTD.Oî݃ìùùkÈÞÞéqúx¾gqîMi}ýÃë’MÖS³áãU¼œg{l=Ž6½ôäèð"Z.‹Š{-;§ QŠŠRÃΖ*šÀÊLå¡(0’ÐNÔ :¸«áîÔ*Š?„¢C4>kêq6¼wŠáD’sBÑr¡xé5—PdÿÒè{²5ZñSÉT…»- T?¯õšÆ¿âKžI|þZ~ÚÚQGð=·^9ÈÞ_Ô ›ìvÛRø«IpWÃÝ©Õ+ÿQÏ=E®º÷²_œSL¶cØ:Ú¾”Nës®jM6·…Ú_.Q#~˜vœ­UIpFñÈÍÇR‘—Ÿ~¹º¢Z­÷÷ZuFƒÆ@(B(J C[¨Th+3?„¢ÀÁObW8qP3øà®†»S«WþŠIwÖ´ãlu½ƒP¬ŽLr­‡P´\(^y#?ò»ßPd×l‹Åäúí­)°òü½!‡ ¥\>ðòÐŽ¶äõ„Ͱîj×\ðW3$ஆ»S«WþGq¹ú}Ö<²ëd“íÔ˜g;ÖÙNËþÈ÷*øJ'ZNMã_‚ÐB~˜rœ54¥³·Q‘òOJÉ.þcm¬]´Øî5îµè„F€P„P”޶$P©ÐVf EƒW)8qPஆ»S«WþŠIwÖ”ãl¬^A(Æ"”Û!-Š7Ü~=EòÄ”OÈÖj_SidÛ’@•BôP¹*þ»vð á†)›¨õ©›ËÉVm ­Úëx¹g/~oÓ'ã¿öÐ[}võz¦OOÌl ø«7pWÃÝ©U4ÿåË—“ëÂÂB²sfÏ"ûé—’ÝyfÙ¬™d“õCÕqVïÒùN†ÞîÖÇ™3gÒR·nü›ëÝ6Yõõ¢?¨?þ"›Q‹ŸV¦ª“%E;©êùjŸ¾ªªÿªëUÍ¿ª’ÓMé²BÑ¡/7Þ:»oqI™¿…ãã0Cß›>ÎÉ’oÂû­Ë2ø« pWÃÝ©U6ÿuëù©˜¬çóŽ´zÉùôSÕÇYgüãµÛ*¨hÕZ>ï[?TT….¦lð¸n(çãô¡‡oURÊÉŽ{)RX „"„¢Ôð3-J…#¡2Õü!í¾0%!„ª' aó¼¸{FèÉlþŠ<\ª³nƒBÑ-±ä*ŸžZòÓÓ­[·RänÛÆï½)-å÷ÞŒzy­å;d÷(Vø½Gy´>·EY¿?LýI†ß\dù×ÿºË©ë¶c×uã{$ö…oZ\»‰ãY¿ê‘õ0¿Úoº_ðW3‚ஆ»S«*þƒ‡ ¦&üPk ÙÜ6üþE§]{XgÆÊ’ HÝŽ³{ð®¨,åóÀÓ6Òš’¹ü´Ó”à8T–óÀä•óñ¸c‡à{2ƒJ<9qÒÔêªP²^UÜ+鬄J!!)Ì %ü·iP…n0E ‚" š€5ƒ îj¸;µªâ¡XDCÐî¦|g(´´ŠZ‹v‚P´D(¶jƬ*癜Ì4 ¶ÔJ~/]j¿·.'+ô’ÝÊ]<£Øæþà”ŽÏ!ª›Pñ¹»Ú¹×…`_©¼ë´{ˆÑü_g1a4Ù‰ó¶-+çøMOW{o-5ÆÃ‡ª6M¶jWðW3œà®†»S«jþŽä§c掜¿·|ÇïÕͨÉÛkRÇiºÑV—ã¬Wˆ;Wó=‹ñ-ï¼ÄOÏ÷ê×ïýUǽßý“íBB‘bBQö¿žšút9€A(ªÿd­'jFÜÕpwjUÍB1ß #-„¢‘Ã&¼ÑŠ–Å•EË)8?¨3Ù5×ðS%Ã#æï¼¦ýhžqlÿ _ñ /çײ.BůþéîW5ÿò¾§áì½úª;oº+Ù„ñãhù¦†’ý~:?¸Q£F!åL[P}Âf/ÑíÑDãóîñqò«”jþ3‚¿¹üñ˨‹}¸§_ä÷ôeýÁ'$%‡Ô§ Ïnâ ©~UgEu¶t Ï(vþã@rùîè÷D¹öÕê¸÷µs œC(B(J ;[¨Th+SÍBq’ÀÑ„«x àÄ!^RbË»Xžn½©æ¡˜ïvÈ´*¡¨Õp(k „¢%Bщ ¿Ö¬¡¯û´Í'»íf¾Ç«Œ'rRê=Æ÷(îÿ?½ÊÙO–U-TdõS×zTñ/[Í÷Èv*êJhÞ})ú•Éù)l 4Ð¥«v©>asÕX ƒ¿šAw5ÜZuáÕuWP“^ýÙgNäNøƒÏGæÙŒVÔ?÷(2=>¡ØqijÐû¯| GÃb´B—¸ÑLc6C(B(J VUBEj'5®LÅã)*&Y–o4õ¦áÄ!‡´p—†:bEºð‡PŒ8<Ú¯„PÔ~ˆ¤4BÑÒ·’b~úi^m~ÿMJ ?e²ëèà{pÒCŸ~*%Úþ©D•P‘Õ?Ýë‘Í¿2Àq—26“ÐÌœ2KwD¾´O—6_:g€SðW3Hஆ»S«jþw FMùòýWÈ~~¿ï¹a na›ùY ¹CÚÐŠÜærÞç̵û÷)û8ëWOJÿæ{;,<€ªøṗ~U%Ô¯ê¸Ú œA(B(J C[¨Th+“ÍB‘.Aœ€+ðOš€]À]D.Tó‡PÌ÷0zêw…PT?:´BÑR¡è×øñãéëM]O¶N¯ZÎ&%V¶PQÒI+•Í?ðÃøê5~ˆK“&v<ÕÎí«>asÛ^Ûʃ¿šw5ÜZUñïºÏî—ÍÏL¸÷hž™jÇ7uš—’v/íö*?­=EÍþÛQ_dgEµ;Ü#Û/à_¢}ôÚÇáE´\V÷ZÂÐ(EEa¿ [hü=Ö«¤lþŠ<þ8p©ý?5üÁ] w§VUü!‹hÚÝ”ï …‘BÑÈaÞhEË…âĉ)hnxïZ²µzæ "7e 7mK†²^ù—¬(%Låù)¦-ü8Ý][øéºi›y}Ææ *÷Êsï“=ɀ·Ú>ª:a«¶AI¶üÕ 8¸«áîÔªŠÿ­·ÜDMX4÷w²… ]±f=Ùüú|ÏúŽ ¾‡}ïÚÑz[>¼guáP¶–çm :P“Æ¿ñ‰.M‹ÚUqµQo„P„P”¾¶$P©ÐVæ•?„bbƒWbÜDíþ¢Hºóîîx‰.­Š?„b ¥é3ŠŠ¢ÿ#Íô¡h¹PtÇÝ›C(BkôÊR©^…ŠÒÆ[P¹Wþ«þóQhRÌ3‹ïÍPòkVÒ—¦Á‡ìÞûc6-1m&ÙŽ;rÁ$ýTu–¤¸÷è6øïDÊ p—‚¹ÚJtã_^Î3T………ÔæŸ~€ì‚}æ‘Íi¡öü¤Z.7x=κ¬Î·âeëx¼ZÏÙ—êøô­O}«K¤cÝâ^dßTø‚P„P”w¶$P©ÐVæ•?„bbƒWbÜDíþ¢Hºóîîx‰.­EÑ#ì¯?EùšâBÑr¡8uêTŠÅ«^L6÷¾7@U€z*ªÚmK½¢ø¯‚g4â™ÅºóŒ¢Ã©÷uéëðgø½K½zõr6%¥Õí„-ÙüÕŒ8¸«áîÔª;ÿ@€ïm?°gWjrΠ4§éF[QÇYÕJ ·S¶½±‘ìÊ¿yYu»bÕ¯{ÜÇj¿nÛ!!¥Æ¤- T*4•‰â¡ènPpàrÇKtiðM4>à'¿JéÎBѯ‘ãBQ GÓ½@(Z.úé'ŠÑÁÏ"›}RºÒ˜%T”vÂàÊEóßü6¿'«ýŠmDå‹þüÔ‹>ç÷uí ´þ /4˜š÷¦ë~Âæ½‡z{5ãîj¸;µšÂê4þåÓµ/^MMÏ<Áì*Š>Î:ã)Ë–.ØAUe¿¿Šì¤sv‘Ýïe~ÁÚ|¼—Õ·õ˜÷nû¥ª<„"„¢ÔØ3=J…åCe¢ùC(Æ7H8pÅÇɯRàïÙè~Á=:¿·šÂBÑïHpçBÑ/ÛKC(Z.ûí7ŠáKH6«¯Ú+u¢…Šíÿ ¢û'šÙ«|oâðËn¤¦ÞsëudûµÙIv¯~÷“½ù–[È&ë‡)'l¶Žø«YpWÃÝ©Õ4þ·?p;5}ü¶Èævä§g;ý ·U»ø=Œ©éjÏkÂÛ%ú8î߯åÒEÅä:ãÝ•dg_Ä3‰N}ëxsÊ~/Õ U·W84±¦Å½&تm„"„bµÁáÇS¨,TøÍB1¾QÄ+>N~•¿ÈF÷ îÑùø½Õ4þŠ~GDtÿŠÑù$ëVEË…âœ9s(¶/ºï²™ýÔ^y-T’õ7Ñ~‹â_ñ)ÇÑ›÷Œ¥¦ìßy²‹-"Û©¿7ñÚ!WÑòãO=K6Y?L;a³mœÀ_͈‚»îN­¦ò?²ÏÔ…§n%›^#ôÙ +î^BëëžÜ˜lCj“ÕåCÔqVVvüÊœ‹ß]MUÞsÿR¨’'lS\LÙ^Æ-1Ÿ¢¿£˜A”ž:N²Ú^©qÞ]–!!¥Æ¢i T* •‰â¡èn°pàrÇKtiðM4>à'¿J™ÊBѯˆˆìB12¬eŠ–Å ЈîÜÉWvJKùýv‹/¦õ÷¼t7ÙôƒùšPe[ç7þ Žä÷ÞQ!?D ›hµk¯ü+~丹õÄ;ˆSÿ³úGåµ~ýzÚÞ¨Q£¨ålßhê ›-ãþjFÜÕpwj5•ÿÒ¥K© g;“li[~Êæ¢'WÐòmø}‹÷nJËõ%¿Peq|x=ÎÆQ…"UÁóÀü~DG0VxVàã}öz¾'ñøc§zÓ‚3‡|ã“ÏðÓÍkÖâ§ iœ'¦Æ½‡.ûº+„"„"„¢¯ÿgÚ8÷zƒPLl(qàJŒ›¨½À_Iw~ÀÝ/Ñ¥Må¡(:"ûƒPŒÌkC @(Z"GÜÊO;fðÞµ3Èf¦k^QB˹99|¥hò2^nûP{ú’Ü׊ÿô*TÄ·(¹<&Ê¿l>¿ñôºg°û†ß—\à<öÖÔ6ÝÖfwðW3ஆ»S«éüO<îpêJɪ_É~?€ÏgÚæ{á2¯hMëk´ žØ8Wl=Î*nöÕ¶ðq¯iÍhÛ¤qßìQFǦǽnL!!)&!uû×ô§=‰À ½\ÞøyÝü½LlpOŒ›¨½Lç¡(*ó¡˜7Ûö‚P´D(:yn¿ÞôµwÖÏdÿ½?Ï$:ÛÛr$ÿÆ¿îÐ6´*«©œ+r‰ §Ý°Þ¸å_¾6@¶[ÀO17æ#o HÒ½M?a3}ØÀ_Í‚»îN­¦ñ_´p!5½Oï£ÉëÆ÷&^Ý-ø˜Í`Ç2øõ¼)]^êDkðÅ Á&°•gNÙ›<ûñdÁ5øãδ¸÷‡‚8¯ŠŠMŠâþ©tö¡¨ftpàRÃÝ©ür-¸Ëå^›iü!ÃGPí2„¢ZþºÔ¡h™Ptëò ù^²}6}E«n>dÙNcø·ý©·¢åœ¶ü4+g?¿­[¡âw{’Íÿ⇗S—÷¹!Ÿl` Ï6ó•ÃÀf^.ßĶު†TnîóÈâ#1¦°%ÖK}÷5cîj¸;µšÆ¿v­\júø G4á™ÄÎ{qrøÑ )'~Â_Z?ÒÁéªVÖ–óœÀ6>/h0¹ ñüñ­8W×Ó⾺~è²BBQj,Ú’@¥BX„¢@˜.\áÀå–EÁߨq¸÷8 ùXÄ4þŠ>C®!€fá.Š– E'V¯»ü"úúÃWï’-;¿9Ùœ5"R-„¢TÜ{T¶ð^~ÌíÎ"~ßæ^õø^Õ&yüâ¤æy|%·d?]®Q×SÈÇ»MØÃVÄOÀ´¶ø{fFIðW3Nஆ»S«iü§M›FMŸ;gÙÂ9¿“-ÚÙ…ü^è½;Õ¦õµ‡ðL-hôaËyNEpF±Þ7‰î”O¾ÓˆrõM1-î«ï‰[ !¥F¢- T*4•A( „éÂ\.`ùPü}€‡Kp’ELã¡èc0$àB1hî¡h¹Pܾ};…m×c»­w­š™DçBÑ!¡Æ.y¤ˆ*nÔ2“l§¿ø©rŸœ¾+¤A_,åÅgÿ:’¾LüöÇíXpGÀ´6w½Ó¿4ø«#pWÃÝ©ÕVþ×ß>”ºøuÊD²¹í³.kam9Ï©ØÎ÷(Öùºqú)Ïøj9J#lû(]öu„"„¢¯îÜ–Þ/S–!ÕŒ\j¸;µ‚¿CB®w¹¼Ãk³•?„bøHû³ ¡èWÓ¼B(Z.KKK)&>á ²9—ñ=iªBQy®7œÿŽŸ6Ó†²ÿ"»ìJ¾7qîZ.ÉÔÖôeÖ‚?x>"`ë [B0ìþ  ÿS%¸«áîÔj;ÿƒ{ñyMe>ÏIËR{~ãp?Î:ëM³;ø—Fy_Ô§¦ÿÙFtÁö¸—=ŠŠRcΖ*šÀÊÂùC( „Å\QàHØþ G¨Ü#@‘¸ÊvþŠþ„¢¿|Mñ¡h¹P¬¬ä¢ÎÝ;QLÖ|‘¢ *Šš‘´Õ†ó/+â÷%î·ŒãcÜ[›¯/ä§Ÿž?!–×nâ{“œÇŽÛ~Âæﻃ¿ïˆ#Vî±H[i;ÿyóˆå€;Ï'›yš4´Q+ ?ÎF-¬ñÆŠbžQ¬ñijåO_þ¬qkÿ×4Ûãþ=•ó BBQN¤k±%J…&°²pþŠáFq…W86¿Èª÷P$®²?„¢¿Á¡è/_S¼C(Z.@ì|Ïåü;ø~~mž³Yš *Ò*FEDÀáßúÊ´\û‹d§}ö}¡nÛÐòœ…Edüô³´4=î i¬ ¶Ÿ°é>à¯f„À] w§Ödáÿô¨§¨Ë£ç"›s?ÕÛáàØ]Á²ôšéÎ*_¬sœmwS¾/þe9-_RLUmÍÏ0øeÎrZnÜDÏ÷W:\’%îþúm!!ýޱÿ¶$ÐN´ðíw€U¶Æg†™T@0€‹HRWÌ(ˆŠ 1¬`B0뺻êêîªk–5-fW×슋ˆ AŒ`"¨ "I%H˜ÄðÞ;§/¾Ó5U]uï¹ÝÕß?uê¦sª~uªº¾¾ÝUŠ?„¢ìA×,o=øëDdÊà.ÃÙ+J®ð‡PôÊ€hõŠÑøÅe4„bŽÅ=ûþ–r6Hbf¨ÐÍ”¢*ÙþM[¶^ÿ[ïD»0y ÿç ¬Œÿ‹¨ï×íÃo£ªËþò7²……©¿©ÕÇ¡œL WnØ’÷:sJàïæX€»î*j®ñ0xíú=ç’-Ú¶ Ù5óÓ½z–gÆÚ·=Õ·èÙœ¬é…úœÍÖûœÊYk IÑ‹?’zÿW±í}%TžV>‡l»öÌ‘ ´Èµ¼·BBÑvŽ%ùÏö hÒÎdaAñ‡P”=xøà’å­GˆLÜe8{EÉ5þŠ^™^=„bz¼âÞB1G„â~GìK¹\=s^Pìæ¿fJ¨dë7mÙ~A˜såÚ…÷ßú€lÏ={fû.eÅöçÚ [¦ðwsDÀÝ w5×ø/_¾œvý°Á‡]]±€lÏÚ dg$Þ\xaG*7ݱ˜¬éE¶ÞçTÍáûÃFÏ.$$_É3‰:Ÿö÷7¥ªO¦Í$»ãNô.N˹–÷¶aC(B(Úα$ÿÙzMÚ‰,.@(º9xøàrÃ]EEBÖ‚»,o=Z®ñ‡PÔ3 ½2„bz¼r¥7„bŽÅÞ¢œþõè•d—Ú}ê—× ¡èEÆn}Íd~/bÿ%1oÆ×åvÂ{\»aKÚù (€¿›ƒîn¸«¨¹ÆÒÇüôî#?ŒÏ´nJL%æÏâ§ŸÆDL½O9?Ñï´ÓN£úN:Y"šžÛ¸ç}z4¢÷†P„P¤,‚PŒ~2e‚ÅL8 õ·\õ™HÖ€¿$íÿîÿÏÂÅZÜùC(FÌ*ňsc8„b\„bbæ°í¶-)sÛ…;^܈kž·‘ŸúU\Èåf‰×á½9Ÿ¿9ª;xײk«™Ÿ5ß´Y¥Ýù¢»¿''•‹ø›Àµ«ù›Õb>ìyÛ”ñq­®áŠ9 ùip'œpÃŒbôcއ¸ß°¥ÃÂE_ðwA=/ÜÝpWQãÎÿ‡ hWwÞyg²·+%Û£ þõhÁï\WÅ÷=Ïmàö6î@ýl-ârŸSWÍÜòŸã©Ù©ùI¶¸™ò÷¼7Å)¨EEÊÅ §LfôƒPÌŒãt+ðÁ””~ào‡«ŸWp÷#d·=îü!íæ„¢]¾ÙâB1&BQ%ܧ“ø©_çž:€ªfžËO³RíÊ}»€V¿Øe[²¥ýxFQµÛ²qù¦ÍŸ ~×NâÿT½ö3 ùö|þ毈ëf7]oNë¯NøŒìÅ_L3Š›‰¬Äý†Mb„ à^„¡àž¡qç¯~zZPÀ|ß~û-Q+/ç§z—ý•'¼=–쪭ù=%§Úy¢:dq¹Ï©«áߦnzšÿÛ9ýý/Õ.f´{ÞKÇP„P¤œƒP”>õ¢ÅƒPŒÆOz4>¸¤‰'ÇÿdR%p—":NÜùC(¦>î¦j!M‘Ìn?Š1Š*¿)ŸA«GrÙ…âoÒ.z·•'´á÷Ý”ÛF ±qù¦MV€ •?ðSm¿¹qõþúBÔ#ñWÓÃ^lA×<ð2ÙÛn»,f™“Ô2î7lRÃÆÿ°ä¢÷hü¢Žÿd‚Ãïý'UŒ\ø$Ùâ=êOî¹—ûõTüÿåÛ/?àÚÈ€,;@Þ› ¡¡h6£|¼Ååê³›bÍŠb¨#ÂW$|‘ƒd„¡€{(lÆ2JÅd~%E?B¹Ñ¡S¡¨Ò÷Ç…?ÐjŸ½»’-Ù¯„lÓAíTQ ¡hwíDö»î½%´rã~«É¾µ€ŸVvô¥QyĈd1£HĸaC2ø§Äb½Ü­#n0ø§ÆsøÀ~Ô°´Ï"²…-ø?x©{§_—ûœMù?еOò/Ѿúèëôa8¼7 BBÑlFùx‹ËÔg7Å›!Å‘§\iá2Þü# äÜa²Ö üS£…PLÍE¯…PÔ‰äfB1æBQ¥õÙE«Ÿmó1Ù¦yfQµKYE³¤«¿ä÷'íx9¾ü’+Èt Ù¹SÞ#{ÒŸ†‘÷Î;d1£HĸaC2ø§Äb½Ü­#n0ø§Æ³hÏ$ö?ÿ(êPxJê~akãrŸ£„bÍ“ü^ʯ?âg_„å"5yo–4„"„¢ÙŒòñ— ¨ÏnŠ5C(Š¡Ž\‘ðE þ‘†rî¡°þ©QB(¦æ¢×B(êDr³ ¡˜#Bñâ+/¢ ßä-²¥š:ÉxE3ث֣½—îOöÉûG¤tü×Kþ@õÇx2Ù›o¹•,fSâ²V‰6kh9ÿ@˜ŒwwãHÓrþ ãzöÅg©Ãmn&[t ö"âÄðï® µ½Z’-(áÿì%šë™ØÜçð_óªã•“øý”õv8Ã*÷f„"„¢ÙŒòñ› ¨Ï~Ún†P´Mج|p™å™®7ðO—˜™þàn†cX/àß09ņùäA(úÊfÅŠ—_9eôk5ü>½².Íœd8„b4ì×óKÆlEŽ&¿ýI ‡êÅÄGÅÿÉÀŒb lÆ:á†ÍÊPŽÀ?¶ÈƒÀ=2ÂHÀ?¾³/>‹:~Ñz2Ù¢öü~Å%w~Gå ‹«È¶¹¬#Ù¦~ÆClîsBqÍ¿ø}Ís¦Í¥ýÏôòÞì‚P„P4›Q>ÞbsõÙO[ÍжÈÚõ‹.»|ý¼ƒ¿!;íàn‡kP¯àŒ„¢'E0¹U ¡˜#Bñº[®£Ì~aõÓd›w/u’éŠÑ°WäñŒúVZ¶äÿLõЇ ¤Ìöw³<Óõþé3ÓÜÍp ëüƒ‘S¿¸Ùe·hÀÂ9üTÔ7óøcžã§~îþp7ªÈoÌe/ïq¹Ï©»Žv±öÉŸÈÞõØKdìœ×®gD=òÞìa€P„P4›Q>ÞârõÙMkÍŠÖÐZuŒ.«x}ƒ¿/"+ÀÝ ÖÀNÁ?*ÅÔœ SsɵZÅŠ·Þy åö“‹#»ÕeNrB1M쉟~Ô¾Åß`>òW>~ûí»_šŽ¸;nBa‹<Ü##Œäü#á =ÜC£32üƒa$Ü4#ïÍr‡P„P4›Q>Þ²ýê³{æ›!Í3uà\ oü·€!¸ î‚°S„ÿPRTA(&CPLæ‘ë%ÅŠ÷Üåú¿çÞK¶Å^Íä>„"c_?­¬ý`9ÙºU5dk*jÉ®OØukë¨ü—Ë/%{çp>ŽT±ÀCh†€»ˆ\€x†‚{x†‚jˆ ¾ÿžzîуìUòçïåû±U£ÆÌ测¾å§Ä·¹”ŸzªÚ½l¶ÞçTÎü•v©äþOâCx&QßÏc^å™Å o|˜šŽýÝIz§eä½YüŠŠf3ÊÇ[¶^@}v+ífÅ´‘eõ|p¹=|àï†?¸»á®¢‚¿"‘l!“y¨„¢"»%ÅŠ=ú÷;¿ºlË}ù=|[&ƒÄ:„"S®YÆïe*¿rU<ØŸcºo{no—ø éØÄ7šŸµ<{êYîr‰‡à"÷ˆ#ÿˆC÷à ÿÔ ß›8n¹áj²sæÍ'[±†ÿ›Ø£}S*o¬äÿê-ÚgÐڞܖêýÙvŸóë—¼Ÿ«Ÿâ™Ä:óýˆšOÜ”˜h-lRL»^—ÇÏL7ŸíØñüöÝöèé‡F¤yo3„"„¢ÙŒòñ–mPŸÝ Ý ¡]VÄ—ÛÃþnøƒ»î**ø+ÉB1™„b2”’ @(ÆL(>óÌ3t„׬áoˆªªxæjò'“©~Âüqd›¶mB6¿†ÿW¼ —Kûð7gŨÝôB1™è¦Zþæî‡kæPý½ù?ŠCºsý[<á˜wÿϽ¨ýÍw'%;H³„‡4êî†@†tþ!ÁEîFþéüõWþ^yy9 œ<™ï›þûþ*òÃQ}fÛ}NíZž;8=:iIDAT\ùIïOæåçóJÍ$¾O¼æ/×2‡ÂB²ª}Ï=÷¤òÞ{ïÍã/‘÷f„"„"e„¢Ù+¨7Å ¤²»>¸Ü?ðwÃÜÝpWQÁ_‘f!!ƒeJnõ‚PŒ™Pìw£SºúÊäŽ[ñ7EEù§ò ŠSÞ™Êû]ÌO?m•Ó&ä½YüŠŠ”QŠfO¬t½A(¦K,»úãƒËíñ7üÁÝ wü 3BBÑL&e—Ř E•†¿;²­Ûì3²;”ñ qÎþ´ˆÊm¯î¤ºŠØ¸}ÓZíûìaØI7ÓÊñýOrùÖc©|ÝÕW’ý|z9ÙFÂ=•7IxÅ à.†:e ðO‰Åz%¸[GÜ`ðoOÚëÖ­£1û³Ù¢³ù—@º£¸ÝçTý‡g?{ íjI ?ÓBßïL)#ïÍ EE³åã-nPŸÝõm†PôE‹øàr{Áß pwÃ]EEÂŒ…P„P4“IÙåB1æBQ¥cßýù?‹+ÖÎ¥ª¢Ëí>ÝTÅÕ-„"©þšÿsxÚöC©âªË®ÒQ%•Õc»ËÊÊ’êÓ-àÆ!]bfúƒ»Ža½€XrÑÆ{4~QGƒT‚©Çw<5üí©ËÈ–<³8ûV~:yI!¿y» vä~[5ü´ÔÔÑÜ×V=ÉûñéüË´fÍš¹ß¨¶yßœMŠŠ!Ò&üEf¡>‡²q$>¸Ü5ðwÃÜÝpWQÁ_‘0k!!ÍfTf{ƒPÌ¡8qâDÊÄ?=z!ÙfGó¥Ó3×…bÕüôÙ=~â÷]>ýð3¢‡7¢¸7÷Í(œ¬€¿ìyàî†»Š þŠ„{Å—“ã7ª_#[óóZ² žþ™&&{ü»+•5 ÷lvænY5‚g?û)mDii©» yR] !ÓH—è]!!£gQöyÀ—Ûcþnøƒ»î**ø+v,„¢®Q½"ï£L¡˜#Bñã?¦#áƒ->² 9„J¹*ë*ù©a_â÷V~>þ !âÉapMæ!Uw)Ò©ã€j.¶kÁÝ6á†ýƒÃ|LµîÔ®9¹êÕŽŸŠúã2þ¼Ÿ¹Žÿ“ø›»º˜ åÄOÕS<£8yÌ'?ê³lïòÞ,aEE³åã BBÑ'EbÙŒ.·‡üÝðw7ÜUTðW$ìZE»|Óõ޼O—XÃý!sD(~ö?­êü{ΡŒhr´›ßÊÇM(VL[C<«—óû)7U°Í_Å?1ݸŠËEÕÅÔï³Og“ÝvÛmÉJ/p•&ÎñÀÝ wü Y î²¼õhà¯1S~w?õ´ÿÑG“ÃçòŒÛ‰]x&qÏG8βÖüÅpÛ¿¸yʼ™½ÍË[ýÀzr5õÝéd›7çTSþMûAÞ›% ¡¡h6£|¼A(B(ú¤H,›ñÁåö°‚¿þàî†»Š þŠ„Y ¡¡h6£2Û„bŽÅéÓù› 3oå÷ö5üÞ©4›Püáú¹„n¯žAü_£Ëce´:f"?ít×]wUM¢7¢¸7÷Í(œ¬€¿ìx¢웣"ï7£0²òù矓Ÿ>üìÌ/¹\>ã+*—Ïæû€ººTnwn{²­öߊl¶,*gð³Ê^[D›üÉ`ÞŸ+?âý(ëu>Õ_{Ó¹KÈ{³‡BBÑlFùx‹ÛŒ¢Ú]EE6|p¥¢"Wþr¬·Œî[Ò_³Ì!!ÍfTvxËïׯÿ©*;¶×ØVN›6|õìÙÓ˜ÏLv´~=?µêë¹_Óf6Jü–^z›×/à·¦J¤C‹Ä«Y\EqšVó7p{¶á™ÅiKø?ŠvÝÚ[µj%²=z\Ë{}ÿ]•ÁÝyŽ þnøƒ»î**ø+²ö‹/ø—C ø> Ñv²ñÃFÛ¸¶–†,åû˜}·K-æ¯æû™ü²vÔçNÆ´2yo+„"„¢ÙŒòñ¡¡è“"±lÆ—Ûà þnøƒ»î**ø+²BQ–· y¯‰VÆOOsä§§ßÏ¿?áâã(c OŠ–8aGÇõ§§5‰÷%¶ùxBó‡SÏ#û·‹ØîÃUÈp?mÈ!aF‡Ÿ"EÂz0¸‡Fgd øÁ˜¶pO™Ñàog`gŠûÅ—òÃ_®{ù*[x°›÷WûmøÚÙü‹³ÿ@]÷iÏ3‰7ñ³,êø¡îy%%ͨ½.Q?{ϘÞz÷ƒTÒiCýB‰´+þãsäþÞ6TÅI$E»§„¢]¾Ùî\n ø»áîn¸«¨à¯HÈZÅBQ–»Š¦øC(*"Ñ,„bÌ„â+¯¼BQ>cÙÊ ‰oŠ–/¡òëÆ-Ø>ñTÎjþ樮ŠË[ äÓ—ìTLýL/â:£Xù8ó›>ñKBVXXHö»ùóÉvëÚ…ìýÿæoÞÎ?ŸŸF•‚ \@ao Ü·€á`ü@ÿßàî†»Š þŠ„¬Õ¹_tåE´ï½C¶ä7E²ämS-ßVLã§æåóLb~b´–òšwÓ_o&Oê q‡­·Þšê÷Ýw_ŸH2Í:™¨ñ¡¡HÙ ¡í$‡PŒÆ/î£ñÁåöƒ¿þàî†»Š þŠ„¬Õ¹C(ºå/=~Ñ c&Ç¿É3†Ÿ{eë™Ýù)£Åüª¼’„Uåu5œÔW|Àß u¹¿+Uä7²óžÅ¸Í(ÖŽfNÏÞú£X]ÎÿÔúTâuýå7ˆp3PS$Óóîéñ2ÝüM æ܃q²Õ üm‘mد÷;þu;91÷ ²ã’=¢¿°pôwü̈ßÜÅOKo8šýÖ~CÞ[OŒ£`íÚµ³4B?þ\çäPEEÑćPÅ]/. õˆT€»fÏ àï‰Æj¸[Åëëü}YéàÇBÑ öÍNýøo@ c.ULò9­žØ¿ÙmnéD6¿‰ìoß3M(Ö¬áÂÚ_7š ~ lÍêDý*.o\Ìê<°óaÔoÔ^"›m \@Ý1pwÃ]EEBÖ‚»,o=øëDdÊ~ÜG=Ï:tmÐ;Cø™«ÏŽøÃ7ͨ¾íee6Ø'JÍ |ŸøæcoQÏöíÛûŒpÛìÇßíÖe_tEEѬ…PÅ]/. õˆT€»fÏ àï‰Æj¸[Åëëü}YéàÇBÑ öÍNýøo@ sD(ªlè²Ï®´ZzQU%j3M(®žTAû¿ì¹Åd»¶åoζ/åoø:”ÖQý¬%ŒiŸÁ×ÓÊ 7ãŠ,[âêæ€»î**ø+²ÜeyëÑÀ_'"Söâ~öi¿£ X7÷}²/àûµU·Mⵋ¶¡•6'eÆÓEk^àízý‘7ie‡vàŠ ]zñÏÐÍÍøÍ‚P„PMREQÜõ‚áZ‰H¸‹`ö þžh¬6€»U¼¾ÎÁß‘•^Ü!­à®çÔ‹½Ž¨DB1Ç„â½w§Äh|6Ï”åð Z l1Ð)Ó„¢Ú¥Õ£~¦ÕN?ð7|o äÿ,ªöǦñÚ[ŸN+>ù´jÊ*‹ ¨›Ãîn¸«¨à¯HÈZp—å­GˆLYç>tðÉøÃ <#×§?Õ´ûVk©¾Ç¶ü ¦‡¦sý¬ƒù©¢­h!³Á>QjFq‡±¾A+;Ï·Í:·[“ýÑ!!E³BQw½`¸€ÖC"Rî"˜=ƒ€¿'« àn¯¯sð÷Ed¥ƒÎBÑ fO§:ÏŽhDB1Ç„âÞ‡íE‰QwJ%ÙFEü V l1Ð)S…¢ÚµµŸóŒâºÄçý‰g^'|Ç=Zz­¼>þ#5$«,. n¸»á®¢‚¿"!kÁ]–· üu"2eûúõë)ðœ9sÈ–——“ùõ—\žÎO¥Ÿ5{&•ÞŠliW~ú).V?Î÷‹ãGާ­èСƒÃ­ñ­ó÷ €P„Pl(?Œ·A(Gš–C\@ÓÂe¬3¸CÊø‡Ây¸GFÉøGÂz°ÎB14ÊPuþ¡œ`ÐfŠ9&{}ü Ç­&[д`s2H¬dºP¬þ‚ÿ›xB›A„ãö›o#ûø®¿{VG*Oûf¾.ã1p5Ž4Cp„ÉZ'𷆶AÇàÞ ëàoqÊa¹oÚÄÿUì~`7òÛô÷Sú—ª¬š±†B•¼ÄO…o×y*~'³Q–¿×l‹¡¡(š³Š¢¸ëô‘ pÁìü=ÑXmw«x}ƒ¿/"+Âr‡P4s8Âò7=~^ sL(ö=þ`ÊâŠ~KÉ6n.ûU¦ Ū憎Gï ‡’}ðö‡ÈªÅ^Ý;Ñê‹ø…ŠË+~UMYequs¸ÀÝ wü Y î²¼õh௑)Gå>ù“É´¡ü×ïÉ6>Jf»U”Êr¾¿)óU}:˜Qõì¬"*¿º®ÙQ¯OTC2ÊFåŸQ;“¡¡(š†Š¢¸ëô‘ pÁìü=ÑXmw«x}ƒ¿/"+¢r‡PŒvX¢ò=~£!sL(1èpÊâ%ýH¶°e¡hVgšP¬Y]Kû¿õĶd'Ž~¯A£^|‘ÚO:™ß‹Ô`ç lÄÔÍAw7ÜUTðW$d-¸ËòÖ£¿ND¦lŠû?îFüÂ’gÈ–ìÆ3z¶ö¢òžI,~™g§ á™D=ÞKsŠ©êéå{“Í´ÿ,šâ¯ïw®–!!EsBQw½`¸€ÖC"Rî"˜=ƒ€¿'« àn¯¯sð÷Ed¥ƒ)îŠá)þá¢Ço„bŽ ÅƒPÿÐs.Ù¢m›ˆfu¦ Ūÿð{?{ q())å! PiâÜÝpWQÁ_‘µà.Ë[þ:™²iîׇ6|õËÈ6.Kýl‰_g¬¥ö²ÝJÓÚÑ ?ñ{ßù=Û©¯ã‡°æÕñ#òJŠšrC>¿{åzžqrÎ…T?ìÖ;¸ÝñÒ4Ç»ã<<„"„¢hB(Šâ® ÐzHD*À]³gð÷DcµÜ­âõuþ¾ˆ¬t0ÍB1½ÃdšzÑã×B1¦Bñì!§r¶nâo|ª*7PyÊ´ÏÉ®+ROí̧r] Ϭ5Ý­ŒÊ-ŽkC6¿€Û©``‘)B±ö5Þ¯‘Ãø·ÿ»õØÍÀÞe¾ \@Ý#pwÃ]EEBÖ‚»,o=øëDdʦ¹/X°€6üø‹#[8ˆ§úª–ñTߢáßQ}u5×wùWW*§»X;g]bHâ¾'ó6~ÀÕ·]2œV:tè@¶ €ßÃݸ1Ïpî¶[fÜG™æÏ{Ÿ»KEEÊ~Å̸ÀÙ¾áj›pjÿàžš‹T-øK‘NŽîÉ<¤Kà/Mœã™æ¡˜Þq4Í?½èñë ¡S¡Ø®uKÊÖß÷XM¶s+þ¦©8ñÓö"þ"(O•OÃ_µ¾´#õ/éhç¿zR3Š5køi¦5«jhjVq¹ñ"~Êë §ÜDõ§L̼R)þ \@ÝcpwÃ]EEBÖ‚»,o=øëDdʶ¸xúIÚaülå¬å\îÅ¿ûÇ÷ü¶ÛÙèŽÖŽæÆçoã§¾wéÒŨÓÎlñ7½ÙâBB‘rB1[NÙhÛ‰ h4~aGƒ{XrfÆ¿Žéz÷t‰™íþfyõf‹;„b°#`‹°èñë¡S¡¨Rµg7þféîø½‰}wà™5ÕÞå‰ÄoÌÏ݉ªŠ;&žj¥:¶¶fçý}6méš%<ƒ¸Uib†´9Ö61AúÍ2žQ\VÁÿÙ4¼{ïP7‡ÜÝpWQÁ_‘µà.Ë[þ:™²iîuu”SA®ù ì¢hEEÑ„ƒPÅ]/. õˆT€»fÏ àï‰Æj¸[Åëëü}Yéàš;„âát\ÇçØý½•dþ_§Š9–H?ñ8åÒ­SþA¶Õþ[ÙÊ­”~M ÅÚµüŸÄæomMq>|ý£”ñP™LÀõXòÖäN ÜÝkðwÃÜÝpWQÁ_‘µ™Âýwgž@;>·Û7d‹Û%X?w=•×}Í3‡ÛlKåÊò_É–Žù‰ì§ƒù~kÖ ~Šê c[Sýì?“Í´E¦ðÏ4.a·BB1lî„¡ ›±A¸€C™–#pO —ñÎàoi ‡à“µNào mƒŽ3…;„âøƒ€PÌ1¡øÌ3ÏPf\÷?ý³ÕÙ1£¸©–ßãS³¦–¶ÓØÆd'ù„lY™ìÓ[)h.2å, ÑEÚdp„/ò`ðŒ0”p…ÍØ ð7†2-G™Â½¢¢‚¶»Ï@~†C“3x7*^ý…Vª>^I¶®5Ï4¶<® •‹FýHvêPžI¤Â‹9+ó©ÔÿÕmÉÎûqÉ­îW3…¿{f¶BBÑL&ôvFB1 `Ÿn¸€ú²Ô î–Àt þAîéüÓf¨{¦p‡PÄŒ¢‰”†PÌ1¡øâ‹/RÞ\ýÎd[ô–‰óŠ«?äo¶6|¶Š¶«jÏ®¯ào´ª«yFq›Rþü ·=@ý.¼ðB²X#)`Á¶6>½ÀÝí±7üÁÝ wü Y›iÜŸ{ñ9péÅg‘=³ß_µmRGå;Ö· [ùÍZ²M󹞗yyuüpù¼&yæ1¯߇U×rCíGãžù5²®™Æß5¨ñ!!£æPZã!ÓÂe¼3. Æ‘rî0YëþÖÐ6èÜÄc½ü­#N Ó¸C(¦å扗ñTbá@³©ºä­åì°¢šlþJþm{mÛå ø›©Û·¢ö9ß%ú›Ý xó í`»•ñÕàîö¿þàî†»Š þŠ„¬ ÷N]ù—_íjø©¨“¾¯#ë×­'[T\, 6`´¸ð¸»Ö»A(B(M2E£8;ÃÔ8Ò@Á=&kÀßÚƒ{ƒx¬7‚¿uÄ)Ä…;„bÊÛs•Š9&.\HI~ìŽ![ÈU4–ø ®šM¾ŽjÍïÝÐi•·+ãWŽg[¾² ­¬]Ï3Œ\‹¥mqù³ÍÉ´p7M4=àŸ/S½ÁÝÉp~À?·¨£²ûÛ¯&w]q&Ùñ'¯IBR|+? uÅÊ ªoVZšÔîºíü]óÓãC(B(ê9© ¡ ŸõÁ¸€ZGœ2¸§Ä"V þb¨“{ñø‹#§€ÙÎBÑMÞdjTÅŠ¿üò åâ‘gN¶ð4;©¹üäø„fü[ö{ûòoÛÉñ>û…gýÂÿQ,+KL9ÚÙxMÈö°l=àîöÈ¿þàî†»Š þŠ„¬ÍVîƽA †ÿõ ²ã­l\éðBj_¾r5Ùâ’’ûK5f+)>éÆP„PL7gõ‡P „I¼. âÈ) ¸»á®¢‚¿"!kÁ]–· üu"2ålå¡(“ÙB1Ç„âŠ+(G9å`²M†æ[ÍÙUó æo*xfqS5Û…xqìûS(~çέnœ3lýËöãîn ø»áîn¸«¨à¯HÈÚlã>oÞ<t䡽É.[Á3‰ëøuÊnJ]î¹{w÷Åô² =¢eÝȘjEE«É¡hoÚÎqM™‘ànch'à]¤à _äÁàa(ÙÆB1ÔaΙAŠ1ŠÝ%ñ£²­®á÷VVòSF—­L|cÔˆ¿!ÚX˶¦†íNgóûsZõnêd¨šÍñŽ(èOãݧÙƒ‘ݧ#?%ë¦GøéZ}ûö¥z,ìȶ0»4伃»ëT‘À?ûuànŸqCÀ¿!:öÚ²•ûÚµk ʦÄÌaA?Ý´Q£FTïgíMÏs¶òOo/åzC(B(R¶A(Êt.#áê†>¸»á®¢‚¿"!kÁ]–· üu"2ålå¡(“ÙB1¦Bqõj~ Õöm[SNŽ>¹šl‡œ¢Å“íèyü_Å›4¥†m.éÈÒ\Ö¬à÷'nÿEùÆso%yèÓ›?Î7T?ò¹Qd=ôФ~(Ø!­`vhÈyw9Ö©"**öëÀÝ>ã†"€Ctìµ»=¶A<ƒJÁû@(B(R¶@(?i²¹'. nޏ»á®¢‚¿"!kÁ]–· üu"2ep—áìü½È„«‡PŒ©PÔÓa§í¶¦ª7N\E¶Ç¶ü_Ä7¿ã™Ä §S}ë+~£M«¼þžQ,ÿx&S¿iWNp+n,øƒ»n£"ïÝðw7ÜUTðW$d-¸ËòÖ£¿N$ZBB‘2B1Ú‰”-£qus¤ÀÝ wü Y î²¼õh௑)ƒ» g¯(àïE&\=„bŽE•»í²#­^ßó'²—|Þ„lûwQ]BÙÚWxfrÔ]/Óø]:¥ö‡8^cƒÀßÊ´{Z¸ŒwãH9÷@˜¬ukht î â±ÞþfC(B(RFA(š=±2Õ. nŽ ¸»á®¢‚¿"!kÁ]–· üu"2ep—áìü½È„«‡PÌ1¡¸nÝ:Ê”nÝw"»õµmÉ6*äÁtÓ¨ö}1줛iåøþÇ7è'pƒx¬7‚¿uÄ)€{J,b•à/†:)¸'á/€¿8r în¸«¨à¯H˜±ŠŠ”IŠfN¨L÷‚ ¨›#în¸«¨à¯HÈZp—å­GˆLÜe8{E/2áê!sL(ª4Ùïˆ}iµz Ï07¢ò†E•\¿¢†lM?Å´6aóWUQ}ÞÒdÏ|ÙaWãzŸ%N`@–›Áß2`÷àîF¨ü…@kaÀ]"\aà‰pàî†»Š þŠ„ ¡¡H™¡hæ„Êt/¸€º9Bàî†»Š þŠ„¬wYÞz4ð׉ȔÁ]†³Wð÷"®B1G…bïc¢ŒùµÿJ²K È®zc)Ùê÷–“íÃeÌëØ¬ŽÊíËÈäžÃ3ÿöU\pÁÜà³Ä ìÈr3ø[ìáÜ=ÀUƒ¿h- ¸k@„‹à/ <ÜÝpWQÁ_‘0c!!)“ ÍœP™îP7GÜÝpWQÁ_‘µà.Ë[þ:™2¸ËpöŠþ^dÂÕC(æ¨P<ìÄC)c–÷ý™láV“2hõ+\ßa~ÕÄÿITnü€Ÿ’šðuTuÃø¢b“ÉP7GÜÝpWQÁ_‘µà.Ë[þ:™2¸ËpöŠþ^dÂÕC(B(Ræ@(†;²m. nޏ»á®¢‚¿"!kÁ]–· üu"2ep—áìü½È„«‡PÌQ¡ØÿÔ£)c~Ú÷{²M¶.L™A리¦úÕ#“÷'žY|úkî>uÛ!´òÈFr…Ï'° ËÍào°‡{p÷#T þB µ0à®.‚¿0ðD8pwÃ]EEÂŒ…P„P¤L‚P4sBeº\@Ý!pwÃ]EEBÖ‚»,o=øëDdÊà.ÃÙ+ ø{‘ W¡˜£Bñ„¡ÇQÆÌß}6Ù¢ÖMRfÐÆqütÓ«~w5µŸ=t(Ùaóû?ÌëMåׯ}r¼^‰X'"[YÞ*¸+n,øƒ»n£"ïÝðw7ÜUTðW$ÌXEEÊ$E3'T¦{ÁÔÍw7ÜUTðW$d-¸ËòÖ£¿ND¦ î2œ½¢€¿™põùýúõÛnhvš6mí@Ïž=³{GBnýŒoøO†k›®%EÿGqúÄ/©\XX.£|Fáöd¹ü-öpî`„ªÁ_´Ü5 ÂEðžîn¸«¨à¯H˜±ŠŠ”IŠfN¨L÷‚ ¨›#în¸«¨à¯HÈZp—å­GˆLÜe8{E/2áê!c*7mâ÷ .Z´ˆ2cñâÅIöG òÜ%³É¾õô8²Ýºv#kkØÙ`~Á?'Ó½ÀÝ4Ñôüz¼LõwS$ÃùÿpÜ¢Ž÷¨£ÿhüôÑŠŠ”Šú©Ï2. nŽ+¸»á®¢‚¿"!kÁ]–· üu"2ep—áìü½È„«‡PŒ©P,kVBÑ¢iÙvÍù©¦íÊx¦±¨nÕüK)ÙŸ–Vµ½À l›pÃþÁ¿a>¶ZÁÝÙ`~Á?'Ó½ÀÝ4Ñôüz¼LõwS$ÃùÿpܼFA(B(Rn@(z"ñªÇÔÍñw7ÜUTðW$d-¸ËòÖ£¿ND¦ î2œ½¢€¿™põŠ1Šc^z2âêË. ûÕÙkÈ6nĉòk5Ûö÷ÑÊšu•\ay‰Ø2`÷àïÈR3¸[Ð-øe¸¸š¦;ðO˜¡îàndH7àœÇ0EEJ E3$fÕ¸€º9 àî†»Š þŠ„¬wYÞz4ð׉ȔÁ]†³Wð÷"®B1¦BQ¥Ã73gÒê{ìNöÓsëÈîµ÷(ÎïK\²|U4kÖŒ,-q[Ð-øe¸¸š¦;ðO˜¡îàndH7à\Äaà`Äáà 6BB‘RBQ;3bZÄÔÍw7ÜUTðW$d-¸ËòÖ£¿ND¦ î2œ½¢€¿™põŠ1ŠzZìÝ£Uý±óOdÿùi²o|0•ì.»ìBÖÖ'°-²Áü‚0N¦{»i¢éùÿôx™ê î¦H†óþá¸EîQ FþÑøé£!!)' õS#že\@ÝWpwÃ]EEBÖ‚»,o=øëDdÊà.ÃÙ+ ø{‘ W¡˜cBQ¥É¹ƒO¤Õ÷'N û䋯“íÓ§êbÅâ¶‚5°SðŒÊhGp7Š3mgàŸ62#ÀÝÆÐNÀ?4ºHÁ=¾ÈƒÁ?2Â$ŠŠ”ŠIçEl ¸€º9´àî†»Š þŠ„¬wYÞz4ð׉ȔÁ]†³Wð÷"®B1G…¢J—ûÿu/­=ã,²-Z´PMV,N`+X;ÿÀ¨Œvw£8Óvþi#32Ü` íüC£‹4Ü#á‹<ü##Lr¡¡H ¡˜t^Ķ€ ¨›C în¸«¨à¯HÈZp—å­GˆLÜe8{E/2áê!s\(†K›ð£p‡ggb$ø› ˜¾pOŸ™Éào’fp_àœ•žàoƒª¿Op÷gd³ø›¥ ¡¡h6£|¼áöd¹ü-öpî`„ªÁ_´Ü5 ÂEðžîn¸«¨à¯H˜±ŠŠf2) œÀAYêþ–Àú¸w@–›Áß2`÷àîF¨ü…@kaÀ]"\³À!!Íf”7œÀ>€,7ƒ¿eÀîÁÝŒP5ø Ö€»D¸þÂÀáÀÝ wü 3BBÑL&ô‚8 (KÝÀßX·àîÈr3ø[ìáÜ=ÀUƒ¿h- ¸k@„‹ào8„"„¢ÙŒòñ†Øåfð· ØÃ=¸{€ª!ÐZp×€Á_x"¸»á®¢‚¿"aÆB(B(šÉ¤€^pe©ø[ëãÜ}YnË€=܃»¡jð­…w ˆpü͇P„P4›Q>Þpû²Ü þ–{¸w0BÕà/Z îá"ø O„w7ÜUTðW$ÌXEE3™Ð Nà€ ,uK`}Ü‚» ËÍào°‡{p÷#T þB µ0à®.‚¿YàŠŠf3ÊÇN`@–›Áß2`÷àîF¨ü…@kaÀ]"\aà‰pàî†»Š þŠ„ ¡¡h&“zÁ ”¥nào ¬[p÷d¹ü-öpî`„ªÁ_´Ü5 ÂEð7 BBÑlFùxà ìÈr3ø[ìáÜ=ÀUƒ¿h- ¸k@„‹à/ <ÜÝpWQÁ_‘0c!!ÍdR@/8‚²Ô ü-õq î>€,7ƒ¿eÀîÁÝŒP5ø Ö€»D¸þfC(B(šÍ(o8}YnË€=܃»¡jð­…w ˆpü…'»î**ø+f,„"„¢™L è'p@P–º¿%°>nÁÝåfð· ØÃ=¸{€ª!ÐZp×€Áß,pEE³åã '° ËÍào°‡{p÷#T þB µ0à®.‚¿0ðD8pwÃ]EEÂŒ…P„P4“I½àÊR7ð·ÖÇ-¸û²Ü þ–{¸w0BÕà/Z îá"ø›¡¡h6£|¼áöd¹ü-öpî`„ªÁ_´Ü5 ÂEðžîn¸«¨à¯H˜±ŠŠf2) œÀAYêþ–Àú¸w@–›Áß2`÷àîF¨ü…@kaÀ]"\³À!!Íf”7œÀ>€,7ƒ¿eÀîÁÝŒP5ø Ö€»D¸þÂÀáÀÝ wü 3BBÑL&ô‚8 (KÝÀßX·àîÈr3ø[ìáÜ=ÀUƒ¿h- ¸k@„‹ào8„"„¢ÙŒòñ†Øåfð· ØÃ=¸{€ª!ÐZp×€Á_x"¸»á®¢‚¿"aÆB(B(šÉ¤€^pe©ø[ëãÜ}YnË€=܃»¡jð­…w ˆpü͇P„P4›Q>Þpû²Ü þ–{¸w0BÕà/Z îá"ø O„w7ÜUTðW$ÌXEE3™Ð Nà€ ,uK`}Ü‚» ËÍào°‡{p÷#T þB µ0à®.‚¿YàŠŠf3ÊÇN`@–›Áß2`÷àîF¨ü…@kaÀ]"\aà‰pàî†»Š þŠ„ ¡¡h&“zÁ ”¥nào ¬[p÷d¹ü-öpî`„ªÁ_´Ü5 ÂEð7 BBÑlFùxà ìÈr3ø[ìáÜ=ÀUƒ¿h- ¸k@„‹à/ <ÜÝpWQÁ_‘0c!!ÍdR@/8‚²Ô ü-õq î>€,7ƒ¿eÀîÁÝŒP5ø Ö€»D¸þfC(B(šÍ(o8}YnË€=܃»¡jð­…w ˆpü…'»î**ø+f,„"„¢™L è'p@P–º¿%°>nÁÝåfð· ØÃ=¸{€ª!ÐZp×€Áß,pEE³åã '° ËÍào°‡{p÷#T þB µ0à®.‚¿0ðD8pwÃ]EEÂŒ…P„P4“I½àÊR7ð·ÖÇ-¸û²Ü þ–{¸w0BÕà/Z îá"ø›¡¡h6£|¼áöd¹ü-öpî`„ªÁ_´Ü5 ÂEðžîn¸«¨à¯H˜±ŠŠf2) œÀAYêþ–Àú¸w@–›Áß2`÷àîF¨ü…@kaÀ]"\³À!!Íf”7œÀ>€,7ƒ¿eÀîÁÝŒP5ø Ö€»D¸þÂÀáÀÝ wü 3BBÑL&ô‚8 (KÝÀßX·àîÈr3ø[ìáÜ=ÀUƒ¿h- ¸k@„‹ào8„"„¢ÙŒòñ†Øåfð· ØÃ=¸{€ª!ÐZp×€Á_x"¸»á®¢‚¿"aÆB(B(šÉ¤€^pe©ø[ëãÜ}YnË€=܃»¡jð­…w ˆpü͇P„P4›Q>Þpû²Ü þ–{¸w0BÕà/Z îá"ø O„w7ÜUTðW$ÌØÿS´ÎÐ<ÿÒIEND®B`‚wagyu-0.5.0/docs/edges.md000066400000000000000000000006411360766232600152250ustar00rootroot00000000000000### Edges An edge is a line formed between two points on a ring. Edges are defined in the [edge.hpp](https://github.com/mapbox/wagyu/blob/master/include/mapbox/geometry/wagyu/edge.hpp). The basic structure of an edge is: ``` struct edge { mapbox::geometry::point bot; mapbox::geometry::point top; double dx; }; ``` Edges are only used in Wagyu to represent the pieces of a [bound](bounds.md). wagyu-0.5.0/docs/example.md000066400000000000000000000035211360766232600155710ustar00rootroot00000000000000## Example Use of Wagyu ``` mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::polygon polygon; mapbox::geometry::linear_ring ring0_0; ring0_0.push_back({ -79102, 0 }); ring0_0.push_back({ -70312, -55285 }); ring0_0.push_back({ 85254, -30747 }); ring0_0.push_back({ 58008, 80592 }); ring0_0.push_back({ -79102, 0 }); polygon0.push_back(ring0_0); mapbox::geometry::linear_ring ring0_1; ring0_1.push_back({ 44824, 42149 }); ring0_1.push_back({ 51855, -21089 }); ring0_1.push_back({ -65918, -32502 }); ring0_1.push_back({ -50098, 4394 }); ring0_1.push_back({ 44824, 42149 }); polygon0.push_back(ring0_1); clipper.add_polygon(polygon0, polygon_type::polygon_type_subject); mapbox::geometry::polygon polygon1; mapbox::geometry::linear_ring ring1_0; ring1_0.push_back({ 31201, 8349 }); ring1_0.push_back({ 4834, 19771 }); ring1_0.push_back({ -25488, -6592 }); ring1_0.push_back({ 10547, -19771 }); ring1_0.push_back({ 31201, 8349 }); polygon1.push_back(ring1_0); clipper.add_polygon(polygon1, polygon_type::polygon_type_clip); mapbox::geometry::polygon polygon2; mapbox::geometry::linear_ring ring2_0; ring2_0.push_back({ -40430, -3076 }); ring2_0.push_back({ -26367, -18454 }); ring2_0.push_back({ 34277, -4834 }); ring2_0.push_back({ 33838, 17136 }); ring2_0.push_back({ -40430, -3076 }); polygon2.push_back(ring2_0); clipper.add_polygon(polygon2, polygon_type::polygon_type_subject); mapbox::geometry::multi_polygon solution; clipper.execute(mapbox::geometry::wagyu::clip_type_union, solution, mapbox::geometry::wagyu::fill_type_even_odd, mapbox::geometry::wagyu::fill_type_even_odd); ``` wagyu-0.5.0/docs/getting_started.md000066400000000000000000000010651360766232600173260ustar00rootroot00000000000000## Getting Started ### Configuration Wagyu is a header only library but does have a dependency on [Mapbox Geometry](https://github.com/mapbox/geometry.hpp). It is not packaged with the library, but has a similar license and should be included prior to development. It should be noted that Wagyu requires a compiler that supports at least C++11. You can guarantee that C++11 is used by including the `-std=c++11` flag with most compilers. ### Geometry Operations Wagyu supports the following geometric operations: * Union * Intersection * Difference * XOR wagyu-0.5.0/docs/invalid_self_intersection.png000066400000000000000000003253031360766232600215540ustar00rootroot00000000000000‰PNG  IHDRBê1¿ iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ¥J! J AÅŽ,*¸v± ¨èªˆm-€¬Q,,ìET”u±€•7I]÷•ï|3÷Ï™sÎüçÜ™ûÍ ìÈrPrùù˜`?fRr “$ü)0b±Eßèèpeäùw¸m¡\·–ÆúçøUWĉ†8#bçB| \›-æ@hƒz£™ù)~±º€H–â 9Ö‘â49¶•ÙÄÅøC™Êb 3P’Æg°3`%Ķ|ñvˆ½Ø™,ĈÇåæÎ€X™ ±yÚwq2þ3m4&‹•1Šå¹È„À rX³ÿÏrüoÉÍÌa5S#ÍÖmoöŒ0)†Ü‘“ü´È(ˆÕ ¾ÄãÈì¥øn¦8$~ؾ—-ò‡5 PÀa„A k‰2ÄÙñ¾ÃØž%”ùB{4’—7ŒÓ„3b†ã£üœÈðá8K3¹¡#¸’+ Œ±Iç…B Wz¬03.QÎm*à%DB¬q›(;6lØ÷aa¦äˆP#ål ñ»taPŒÜÓÌä…Ù°Y²¹4!öÉÏŒ ‘ûbI\QRø7 PÎãpùñÃÜ0¸ºüb†}K9ÑÃöX%7'8F^gì°¨ vÄ·#.0y°ÇY¬‰ÑrþØ€ ?:NÎ ÇA8ð€ İ¥ ðZ{ëzá?ùH`!È\`=¬ñH”ða ÁŸqhÔÏO6ÊPÿeT+ï­Aºl´@æ‘ žBœ‹kã^¸{ØìqWÜmÄ©<2+1@ !-Fy°!ëØ„€÷otaðÉ…ÙI¹ðGrøð”ÐNxL¸Iî€ðDeØj:¯Høs&ˆ-h8»4³gÄ7…¬p?Üò‡Üq® ¬qG˜‰/î ss‚ÚïŠG¹}«åóIYŸÏ°^ÉRÉi˜EÚè›ñµú1Šÿw5âÀgØ–ØRì(ÖŒÃ.c'±:ÀÄÎ`õX vJŠGWÂÙJ™-FÆ-ÆáØØÖØöØ~þÇì¬aBÙûùÜYùÒ á?C0[ÈËÈÌgúÂ/2—ÊgÛŒcÚÛÚ9 ý¾Ë?o²ï6¸òM—w·R¨Ìø¦cpâ)ôo:£7p{­àT[,,ëpiG  w†ÐFÀædœð`"ˆq LƒUϹõL0,%  ¬ëÁf° ì{Ápԓฮ‚6p܃k£¼}` "BBhÑBôÄ ±G\/$ Gbd$É@øˆ™‹,FÊ5ÈfdRüŠœ@Î!—‘väòéAÞ ŸP ¥¢ê¨.jŠŽG]Q_4 C§¢hZˆ£+Ðhº­EÏ¡WÑ›¨}‰öcSĘf¹bþX–‚¥cBl>VŠ•cUØA¬¾ëë˜ëÅ>âDœŽ3qk¸>Cðxœçáóñåøf|/^‹7á×ñGxþ•@#è¬î„PB!ƒ0“PB('ì&'\€{§›0@$D3¢ Ü›ÉÄ,âârâVâ!âYb;±‹ØO"‘´HV$OR‰EÊ'•6‘ö“Î:HݤdE²>ÙžDN!óÉEärò>òirùyPAEÁDÁ]!J£0[a¥Â.……k Ý ƒUŠÅ“GÉ¢,¢l¤¤\ Ü§¼UTT4TtSœ¤ÈS\¨¸Qñ°â%ÅGŠ©jTKª?u UL]AÝC=K½C}K£ÑLi>´Z>m­švžööA‰®d£ªÄQZ T¡T«Ô¡ôJYAÙDÙWyšr¡r¹òQåkʽ* *¦*þ*,•ù**'T:UúUéªvªQª¹ªËU÷©^V}®FR3U T㨫íT;¯ÖEÇèFt:›¾˜¾‹~Þ­NT7SUÏR/S? ÞªÞ§¡¦á¨‘ 1K£B㔆„1L¡ŒÆJÆÆ-Ƨ1ºc|ÇpÇ,spLǘ÷šc5}4¹š¥š‡4oj~Òbjjek­ÖªÓz k[jOÒž©]©}A»w¬úX±ì±¥cŒ½«ƒêXêÄèÌÑÙ©Ó¢Ó¯«§¬+Ðݤ{^·W¡ç£—¥·Nï´^>]ßKŸ§¿NÿŒþ ¦Ó—™ÃÜÈlbö脈 v´ šÆ2|`D1r5J7ZgÔhÔg¬oa<×¸Æø®‰‚‰«I¦É“f“÷¦f¦‰¦KLëLŸ›iš…ššÕ˜Ý7§™{›ç™W™ß° Z¸Zd[lµh³D-,3-+,¯Y¡VÎV<«­VíããÜÆñÇUë´¦ZûZX×X?²aØ„ÛÙÔÙ¼o<>eüêñÍã¿Ú:ÙæØî²½g§f7ѮȮÁî½¥=Û¾Âþ†Í!ÈaC½ÃkG+G®c¥ãm'ºS„Ó§F§/Î.ÎBçƒÎ=.Æ.©.[\:]Õ]£]—»^r#¸ù¹-p;éöÑÝÙ=ßýˆû_ÖÙû<žO0›À°kB—§¡'Ës‡§Ä‹é•êµÝKâmàÍò®ò~ìcäÃñÙíóÌ×Â7Ëw¿ï+?[?¡ßq¿÷þîþóüÏ`Á¥­jñ›eÕõ;Ï >B YҪʭí›è2qÞĦ0jXlØæ°Çá–áÂð†4bbÄÚˆû‘&‘üȺ(µ6êA´Yt^ôo“ˆ“¢'ULzc37¦9–;=v_ì@œ_Üʸ{ñæñâøÆå„) Õ ï×$J’Æ'ÍKºš¬ÌK®O!¥$¤ìNéŸ8yýäî)NSJ¦Üšj6uÖÔËÓ´§åL;5]y:kúÑTBjbê¾ÔϬ(V«?-4mKZÛŸ½ý’ãÃYÇéázr×pŸ¥{¦¯Ižá™±6£'Ó;³<³—çÏÛÌ{’µ-ë}vTöžì¡œÄœC¹äÜÔÜ|5~6¿i†ÞŒY3ÚV‚$Ï=o}^Ÿ0L¸[„ˆ¦ŠêóÕáQ§El.þIü¨À« ¢àÃÌ„™Gg©ÎâÏj™m9{Ùìg…A…¿ÌÁç°ç4Î5˜»hî£y¾óvÌGæ§Ío\`´ xA÷Âà…{Qe/ú½È¶hMѻʼn‹Šu‹wýüSM‰R‰°¤s‰Ç’mKñ¥¼¥­Ë–mZöµ”Sz¥Ì¶¬¼ìóröò+?Ûý¼ñç¡é+ZW:¯¬\E\Å_ukµ÷ê½kT×®éZ±¶vs]éºw맯¿\îX¾meƒxƒdcøÆúMÆ›Vmú¼9sóÍ ¿ŠC[t¶,Ûò~+gkG¥OåÁmºÛʶ}ÚÎÛ~{GðŽÚ*ÓªòÄ;ŸîJØÕü‹ë/Õ»µw—íþ²‡¿G²7foSµKuõ>}+kÐqMÏþ)ûÛ¨?h}pÇ!Æ¡²Ãà°øð‹_S½u$ìHãQ×£™Ûrœ~¼´©]ÛW—Y'©O®o?1ñDcƒGÃñßl~ÛsÒàdÅ)S+OSNŸ:Sx¦ÿ¬àl﹌s]ÓïO:£iRSë…° —.]<ßìÛ|æ’祓—Ý/Ÿ¸âz¥îªóÕÚ§–ã¿;ý~¼Õ¹µöšËµú6·¶†ö í§;¼;Î]¸~ñFè«7#o¶ßŠ¿u»sJ§ä6çöó;9w^ß-¸;xoá}ÂýÒ*Êê<¬úÃâCgÉ©GZÇ>¾×ÅîzùDôäswñSÚÓògúϪŸÛ??ÙÔÓöbò‹î—‚—ƒ½%ªþ¹å•ù«cùüÕÒ—Ô×ýZøzèÍò·Zo÷¼s|רÝÿp w`ð}é­{?º~lþ”øéÙàÌϤÏ¿X|iøöõþPîЀ%dÉŽlhz:oö@K†gx£(Éï_2AäwFÿ Ëïh2'—=>Ä/ žQ*a3˜ ŸÒãwœ@FÛ°ˆÒì屨ðCø04ôVR_„CCƒ[‡†¾ì‚dïp6O~ï“ žñ·kJQK§ øQþ±lCô²’… pHYs%%IR$ðŸiTXtXML:com.adobe.xmp 1054 1090 ×B@íiDOT!(!!Ë _k@IDATxìw EòǼGÉI ¢ æœE ˜å<žgN§rÆóÌéÝý¦§¦w¶ÁÊ_þÊ èo¯½ö¢Ö >¼€ZåOSÀ_§¯Á]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM® x0ø®a‚èŒp×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäŠÀƒÉÃ{ Dg€»wñ þB­w·¼ÃÞÀ?LÄîn8Gyÿ(2vÓÁÝ.ß8ëàGÈN>¸›\x0yx¯a‚è p×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäŠÀƒÉÃ{ Dg€»wñ þB­w·¼ÃÞÀ?LÄîn8Gyÿ(2vÓÁÝ.ß8ëàGÈN>¸›\x0yx¯a‚è p×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäÚ ÿþ+Í$]mäȑԀ­¶ÚJ·!žzŽwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&W|ÕÂä὆-A:CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäŠÀƒÉÃ{ Dg€»wñ þB­w·¼ÃÞÀ?LÄîn8Gyÿ(2vÓÁÝ.ß8ëàGÈN>¸›\x0yx¯a‚è p×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäŠÀƒÉÃ{ Dg€»wñ þB­w·¼ÃÞÀ?LÄîn8Gyÿ(2vÓÁÝ.ß8ëàGÈN>¸›\x0yx¯a‚è p×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäŠÀƒÉÃ{ Dg€»wñ þB­w·¼ÃÞÀ?LÄîn8Gyÿ(2vÓÁÝ.ß8ëàGÈN>¸›\x0yx¯a‚è p×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäŠÀƒÉÃ{ Dg€»wñ þB­w·¼ÃÞÀ?LÄîn8Gyÿ(2vÓÁÝ.ß8ëàGÈN>¸›\x0yx¯a‚è p×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðn%¸»åöþa"ntpwÃ9Ê øG‘±›îvùÆYÿ8BvòÁÝäŠÀƒÉÃ{ Dg€»wñ þB­w·¼ÃÞÀ?LÄîn8Gyÿ(2vÓÁÝ.ß8ëàGÈN>¸›\x0yx¯a‚è p×á.^Á_H¸•àî–wØø‡‰¸ÑÁÝ ç(/àEÆn:¸ÛågüãÙÉw“+&ï5L!î:ÜÅ+ø ·ÜÝò{ÿ07:¸»áåü£ÈØMw»|㬃!;ùànrEàÁä὆ ¢3À]‡»x!áV‚»[Þaoà&âFw7œ£¼€»éàn—oœuð#d'ÜM®<˜<¼×0At†¸ëp¯à/$ÜJpwË;ì üÃDÜèàî†s”ð"c7Üíò³þq„ì䃻É“‡÷&ˆÎwîâü…„[ îny‡½˜ˆÜÝpŽòþQd즃»]¾qÖÁ?Ž|p7¹"ð`òð^ÃÑà®Ã]¼‚¿p+ÁÝ-ï°7ðq£ƒ»ÎQ^À?ŠŒÝtp·Ë7Î:øÇ²“î&WLÞk˜ :CÜu¸‹Wðne¡s_¶t)iܤ ÉŠŠŠTMž4‰ìuìÔ‰d“ÀO¾NjkkÉÄÈÏ?#¹Ù[’lÚ´©a:)ÿeË–‘ï¼Erï}ö#™ŸÙ³f‘½wÞ~“äaGE2­o¾üœL}óíw$>öø´L“7^zŽäÜÅ•$8âÃ~RîbäÞ;n¦Ã]×#yðÁKV*òÒóþBvöØï ’{î¹g*vÅȱGB‡g_ð7’[nÉãSòó•}wØšL<;ì5’íÛ·7L&å¿há²Ów§íI~ùíh’ 64ì'U>ÿøªzòI"ùåwc“šÊXï‘¡÷Pú!÷’ü೯2–Kšxé¹§QÕ‘_ñ¼zõ­÷ SI¹‹‘ƒöÚ…×lՎ俟z^²R‘›¬ß•ìì}ÀïIÞzû©Ø-#ùò/”ó(¶v€»Ùc<˜<¼×0At†¸ëp¯à/$ÜÊBçŽÀCæñ€ÀCf.’ŠÀƒÈ,xÈ̇Ì\$!‘Lúõ6ÙY~-p7û“‡÷š¯äÄcù‰ÔÕ7ÜBc K—.©Ž…ÝûîHöÞùïGí&å>yâ²wÒ Ç|ã÷3ÚOšøæ«Ã¨êà[™ËËÃG$5•±Þ=ƒo ôïq»Ÿ|å’&ž}ʱTui5[¸ïŸg4•”ÿ~»mGö¶Ø~7’×ßxSFûI7ZoªzÚÙ‘<ãŒ3’š2êUWU‘Þ±}’?öÉå’*cÇ|OUwÞù¼ðòë¬ï¼³a2)÷—Ÿšì} ÷ï'_ð“»Þ½{ö“*7]})Uýû5ÜŸ3gýLz«V­’š4êx$?¡~ä)ž_Õ5µF~¾Êö›o@&&Mã3ç,Èh2)ÿö­[½nkóN/¾—Ñ~®‰‹-¢*;´%¹_ÿÝH>óÒp’ù~|öñ‡dâÐýIpðá$ïºïŸùš¦ú?<”䵟IòðS/!ù·¿ñ“}R~ùHÊýò Ï"/=É~NýÛm¤ŸtÒIb:/yÔÿíKõÇŒdNWÜùéiý_Ø~3žŸKæÍ$»>÷Ém·Ý–d¾k5_ƒL´lZNòÃ/yGB×®] Ó¹òÿyölª¿qï$,áÿŸK—W’Þ¨Q#’I?þ;‚9\xòÈÄØÙ|Áš»w\%µ+õþu/?¹6ä2¶¿˜ç﨧H‘¼¤ìt˜ùþCdgbE’o}ð…a7WîRùýw£Ãn‹x\ÎîÄãô±§_”"yÉÍ7èNõ÷jÇt8x[¾nõVsÒï|ü ’ÛmÇ;£¤|®²uËfTeÂi<_7Êÿ×þûï¼êÖ­›a2[þsçÌ¡z¬×•䜳y¾6¹ŽwT,^²ŒÒ7nlØÏVùà½Tô“ÿä°ƒç“\ï>Ÿyyîxxè»ÉÞ;Cyü]¸5ËC^]›Ò¿?•dÒËÎ;ƒª6õÉ;òúãê¶$ýíG¦³å.•þ8`O:<´ït¨­fþÃʤô?=LŠ&’[mÔ“ê í7‰äˆ ¼>›Òû4Òo½ã®Dv µR®ü õ<Š­]ànö&ï5ß&™‡<™¹H*B”<˜<Âa"¬#𙋤"ð $2K2sAà!3IEàAH@Ú$àÛ}UKây–ïËÙ´7?y|¯iÔÃû<Ñ”ägߎ#™ï;Uð‘å—p½Éµ ÈnMðd3üìl¹O ÞéÐ/x²ùÙqKÈîÆ÷ó¤Ùó“žôãõWø;“ƒ/ÍËþÙ§Gõ»ÏxŽdÛræ1¼ñÁ¤?üijígË¿~üdî¬_“ogð‚Ÿ7ý+é7ÝÂO 3:É"±w÷NTêåßÏ&9d$?y\ûàëI?çœs²°²z‘uu”ب1Û«»ŒwàõR J?àœ!$<òÈÕ+g‘òÃ~Â>`í©ôØÌ}Ïÿ´"ýÒðN“=öà'Øb2[Èýv×e'SÕ—æq¹ñЖ¤?õúG$7Úh#1•¬v€üã–ë¨ü´7ï yK_—moåÿ ã&òÿ‰6mÚdeW UVòºs‚q¹é¢W(ë¤MxÞ®y=ÿŸHúŽyÉã{ò“Ë6üžì¯ßŠŸˆïü8·wrÂÒþÞëòÒŽ`î3¹ùe§Ü‹ü}úÍrʆ”^QR¾ZѹSªWy Ó‚ CçîJéO¾ðɰq•þõ—_P‘ÓŽ9ˆä7',"y/'—}Òê0ÒÝf>Ù\ìL»Tè—ÑE¾ò"ëa÷ð;ž;ˆwR\1‚k,Þú:øë_ùÿƒÔ;ꨣ(ýÑG%)þ¸Öo~†ÜÆÿ/Žz‚²nèËójà«<.×9àbJ?ì0>±/2lOÒEþý|þ.ûAÍùÿîqóxð _Oö<ñj2ѯ_?’R/,£üœz<·ëާP‘׿þÝæ!¶Ê¥üÿRv*‰]±'\Âé2îüãÿQÑñ§q»ÛðF®²®ÿàƒëo»ò;vìHRì\tÑE¤_=ÿ_•t‘'L ü‹Ïç~[p>Ï'Jüå£Éµ éðßOü‡¤üš‹ÔK©'éïx›’>öÉÏ_JrŸFY·;xÅ}ÿä|©'W¬äõÆ‹Ïr»šLy—ìþ{Û3‡Ô²}žæÿË—\Íãke_Äþ*îAú/Ÿ*ÖÕ±ý§}ô½×â‰zÙŽËI1‘DÙét¡ƒcOû É•Á|zïPÒOxÉU~Øü/Þøàéq¹+·žNåîÅ;ÛžøŽÔ²A?¬Oûz(ÉUíÚ¹JÍcñ÷âÃÌõùßñÿùMÚ³ßÛ>fûÍÛ”¶ß­¯a_Ú¶¿|9ŸŸõyÇÝ™Ϥz-Z´`ƒò™íõ¶@š[2Íw³+x0yx¯ù2AxÈ<ÔxžLŠÀCf< "÷ïÃLßü‰k\4r=:8ÿ²kIн(ɵ~ó3äöA”4 Ý$/Üžù<ú —¼çô˜“N£±+Oˆn|¥ÿå¯ü„¦.Ø!PÆÝV6ä~24hG7ûõä'07Èö_­å'#ûô;J'+b_žÉÂj•ÿà‰Ìƒo¡zoýq!ÉõZ³Ý³ßà'k£ZíI Ûï´ÉUõƒ'\¿éÁ£#®^&íxøÎ;)eÖYUA‹CŸmD‹×å½7ä'Øb/,å|$}ñ"îÇï^çñóõŸ‚xÙùa~r×bóÝ)¥S~ò(\ßx={ÈþŮȹ³ø]ù8ž7/< ì÷¼«‚ŽzíÊõ[´ä'L+ËxþÉù¯âàY<›>i*Õß¡nÉì]XfÑòFæ¿í>»QB£ÆìOÚ)ƒ'wÓ~˜@õNëÁ~þ² ›Zn^Y“kØÏNûïLbSß’.RògŽå t×.s)iÿõØðT~°_¶ñ½å”Þk‡ÍIJ}á2þ®ßsÓu|)7ÿ§É”þæÿ±Á Ú’Zö9?ˆ,;à)îß¶ôäŒ`¾°òËgHÿíÕ6œ±ðÇITtT0nÖjÂ5‡ñ4.ûó[Í(¡mŸu9#°'íkÐ0HàÜU;d‡ÏòñÜþ±'òIù|ÿH®pÅWk±ýÞëöË~k¨‘.ÞjªøúRõÃDÊ?МWW¾ËÕîžÊÿ7;õÆ='—ýô)×ë¹ýºAJ00ÕËxÖ|Ïå~ü³9.OƇ×v¦úm×mØ D`gUâ*ýT-åö×~Íýÿã)<.¥ü^ó¸×vmJjÙ…çUž«n¥¼ð’ÿoÕ‹™GÍç©ÈO§Õ­*úëÁ&÷±¡å›t£ôfíøú%ý*öÊ\‚Úb¿f ·åÇ)gÜ©<îƒbeocû-÷`ûšó8ýeFQ‘ÉoN#Ùµ®²ª¿9eÀ¿é' ™oM—1Ÿ.Ÿñºä­ÃÙþXþ7Q¶ãcÜàV‡óù¯2#"³rÒÿMçsC×ýŠí;„í¿;‰+üñM¾®´8$°Ø›þ,_?»b^V¹ šÌâÿófûO`ûOò¿é²³¿ãñÒ|ÛYÕ}«C«§7ž¸”¶›À×—¡û²ýÛ?áüë絤ƒV{·#9ÿý$˃ó®›Ë|²W/Ûl£õ©ÜG# Yhž¾/4žÙ¶ÜMR<˜<¼×Š}‚ ð€Àï“þW&7˜<7,Êxà•2<üúŸ¹CEஂƒ/#¿|rpAàaÕÀÀAŠý¾*‹SÌ©9á*ýÂÅ>Axèê¤AÜH²i{þ.ìòyü$¶ëôI”þÖ‘æ˜v·ð£„»rĺQ3ŽØËWž´H@]tÕs9‚Þg6?!yþÓ~ùÕ\r£C7ây2˜8b2uß½k\ùƒG û›Ïá'5Oæòƒ¼_¾Êíïqh¯À¢ÜhwZÒðà‰<Y±‚ó›-`C[ÿ<ƒêß<ÅÊú=É<Ú èf´o‡ «=ñ ž¬9—ŸŒï>ŸŸ0 Þ“ý¾5Íõ6?‘j¾O§ ý,V †P»¥øo9ùÿ®’w \Ý—?ö-—<7xBÒl~‚!ç/vfãíü»öœø•þ_s?ñ=¢Ë‹w`û·|ÄÅoœÃO[îlUx¯Â.ŽDŠý@69ŸrNm¹˜äé[2Ÿ³‡s…G±ÝÖÛñÒ*3«ìÈä2Hn0‚Ïï‚.ÌéO›²ýCžåqóѺ̥å¦Í¹bÈÜ*5|BAFÕsüäîÆà;â‡nÀöwx„íÏèËýºfO~‚-ü'?ÄõºøqðDJïuNλ¬­úwöh:þþD÷³y•í÷*;êzuïUe“Œ:uU›v&sÿ»»ì”Q<^:Ó3‰ÙUu¾>‘í/¾ˆíËN¨«ð|êpbðwU,êØÞ×Ù~Í߸ÞUï²¼w-îèΘ7h"õ:¿G’Y¬¬dÞ£ÿÊü—]ÈþN|•Çý›}x^µß#´ã!³¹ÕRkçóxŸvå8Êûù,ö·÷Sí/æëy“öæÿ…lùWŽá^þÄd²ûõql¿Éuº+ï¬øýSlaÝ`ÜW´à'…¹Ú•òS.K‡¯È;¶½ûw«m"Eò’/CõŸÚíô,?YîÞQxÉ•ÿÁ“÷Çàyuü{éìx“}Ú÷tøÀ~üùü±Áއó¸¥\RùÍɼ3Ꮍ™ûµ yÇCÇ“x|&µ[VÃö¾:…í_¾+[Ò"ØñðÉvm.¶í»I“‡÷Z©L’ ezÔ ‡zñ”!ðP?êçƒÀCf>®|÷ñõï82¾Yð£A?qò¹> XúïxØ(øîã«cø ÏFyîxö,}#ö}F³ŸÿÎb>=nÈoǃØ_òï|Øè'þŽè'ËùIAçKÌ'$R>W¹ø?üdgƒIüׯÖ\“Lt8­{FS¹ò_ø(?™Z*?Iú®[k²ÛñHó IFgY$.x€Ÿ¬uŸÍOÂÆnÁ;:íŸßŽq=?xrÓn?É›¼Ý½íÎùíxûsnãùÕl?‰¬=¼eµÜ¤¹!™+w©<{Ðx:\1›_öµÖ_z’¾F×üv<ˆý×ð“ßÅ3øIðº×÷¦¬F-+¤H^rJðN†ÙSxgÅÖn’—½på Œ¡¤ªåü¡Ïüd6\.)ÿ±M¦š¶àݯe>aûIuyçC›žÁN¨ó¹“Ú ×ûú$Þ™Ðy{~"Ùáä¬á'ymÿ”Ò“ÇÀÁìû§ÐQÓà×Z¿û-þE&}3óΉd¢ÙVü¤£åμóAìæ+§ßÂO[ìÏOvZlÈ;7òµ+õ§Ý6‘ÛÒ‰dZ;VÙ¿ƒí·v‚4nÇ;[$?)w©?mï éx ?Y«X“ŸÀK~¾rÚ<~:ÇO~Óz²)íšñ(ïÌé¼=]Òó•+ƒ—Îy…w,µÀOÞÃv“ò_¼Ó`aðÝîÖ»¦óÄ]Ú'ö—ß­oz7ˆ”K*W;ªgó“Ù&]š$5•±ÞÊàÿ™d6hÄ×Ñ“r—ú+ªøÿeÃ&¦]ÉÏWÖ.©#á_qÉ×®Ô¯YÄ;+ÒÚA$vEV﬈ºŽçË¿z.ï„jœçÎHioXƵ?\>W½&ØÙÒ¨U:;¸Âþkƒþ­íË—»ø©[Æã³¼Yºÿïžü¯Ó*àÿ{7ØŸŠž{êy$û÷å -WòBòô+ï¡ôc=VL„,Õõ}AÀ­§ànÂAàÁäá½Vª‡dC‡ú¹!ðP?Ÿi<Ô ‡ÌxxÈÌERx™eÜ{¾7ÀTnÇï.h¼‹·$Ç b½ ÇW±äƒ¿NO»wñ þB­w·¼ÃÞÀ?LÄ^lÜ«?â_Ï8·‹ Ð1‡ã”%/ž¾·„źYp7#ð`òð^+ö ‚Àƒ÷C8€b[%:ɬîºþ:üÁ]‡»x!áVwÜŽRõVì÷Ui÷ i-r{¾N»ÿyõÜýŸ!Y¾½ÛŽ,¶ ²[:ö½¿}Æ™<€{&*îÒÀßëÿõîÿKÃý1ø»gþ«Çbá^9‘wÎî0¯/zàö¡:ÀRöêëú>eŒ9›w&ï5_'~ýbY•Z/»n‚¿p×á.^Á_H¸•Å·ã¢Ô½ùz_Õ¯êôïéDWTóz®[û¤÷iËçߦ!ï„ø¶¦'%Œ5ž3Jäë{Žw“;&ï5L<ø5´D~ÑþílÁý7Gà¯A½x^²§CǾWŒ{ûŒ3yÐæŽÀÃ^Ô-ÇcÇC¦ñi+ ÷U&YLÞk˜ æø÷Óÿ¦„›_»‘dþ_ößy¤·}o&ÉŸ*šì|áz$sýо çÚÞR+þ:= î:ÜÅ+ø ·ÜÝò{ÿ07º6÷9M¥]{Úb’QgœøÏËXÝøþæt0{>—3 ±‚õ½Nç»É“‡÷&ˆ9x0y”ª¦½ *U®qçîq„ìæƒ¿]¾QÖÁ=ŠŒ›tðwÃ9ìE›;Øñ“.tÜW™”x0yx¯a‚dO¿øe\6ø’ëÍŸAòÜ-8b~ôÇMIï|ñú$sýо çÚÞR+þ:= î:ÜÅ+ø ·ÜÝò{ÿ07z¡p_ò-ïdøáÖItâoËç¿G–­oᬦðŽÖV­ZqF‘b}¯ÓànrGàÁä὆ ’y ð™K©¤Ê‚¨Txf{àž-);åÀß×8«àGÈn>øÛåe½P¸#ð€wøëô0¸ëp¯à/$ÜJpwË;ì üÃDÜèZÜ«çòŽÕu>íA'úÊÁKÜœvÁxÁú^§+ÀÝäŽÀƒÉÃ{ Ä<˜òs2tò5"Y~PðsæG_2Žrºÿy’ͺ¯QÉ6h-ˆlœK1ÙwÝÞþà®Ã]¼‚¿p+]s¯}‡×]×qèþûìïö„ ÌÖ÷:î&wLÞk˜ é ÒáèÊŠë‘«ó*t?à®ÛCà¯ÃÜu¸‹Wðn¥kî<˜ý‹õ½ÉÕî&iLÞk˜ éoG}K½ô(’å›;=>Ò'¿½€d÷szl±áš$ñᆀë‘›³*|/à®ÛGà¯ÃÜu¸‹Wðne¾ÜWÖòúiÑwK¨áU3ªøf,'Y7“õSXîµ×”þü or9Ï?±¾×ànrGàÁä὆ ’î@à!]ž¶¬å» ²Õ®R· îº= þ:üÁ]‡»x!áVæË‡üú ëûüø%­ î&9LÞk˜ v†ÀØqcÉðaçJrù Þéð‡ê…¤ßõ!ÿúE‡Ó»“Þrãæ$ñá†@¾ "7­,=/à®Û§à¯ÃÜu¸‹Wðne¾ÜWVñ:iÔ_FSÃ݌ۿm'Þ Ñ»-ë‹«Y^7zC:øpä÷œàù'Ö÷:ÜMî<˜<¼×0Aì ìpMËj¾ ¢´Úá›p×íqð×áî:ÜÅ+ø ·2_î<ä×_XßçÇ/imp7É!ð`òð^ñ;Î9ýDrÐà›IÞ²'Gð[j@zûSƒ›bÇqô‘ï‚ÈQ3KÎ ¸ëv)øëðwîâü…„[™÷Ê©ü‡É7§¸£?ïx8~S–óø•e½†4£ü¹ —º=Ñõ†õ½NÇ€»É“‡÷&ˆÝ!€Àƒ]¾I­§µ Jêß×zà®Ûóà¯ÃÜu¸‹WðneZÜxHÖoXß'ã–o-p7 "ð`òð^ñ3n¸âb2¼ðƒ!$¯ß™ÅB¼µ v<´ýs7JZkó’é€@Z "M-)à®Ûà¯ÃÜu¸‹Wðn¥-î?_7‘Nd—漃ô±ËHo?¸)ÉÑã§l×®I_?°¾×éyp7¹#ð`òð^ñ3x°Ã5-«¶Diµ¯T퀻nÏ‚¿p×á.^Á_H¸•¶¸#ð]?b}Ÿ§´K»I´AÿþÁ—£Ìt5mäÈ‘ä{«­¶RkƒÏŽÁ?ÝÞ7v œ?gÉVMø;ˆâee N_Ì‘ú&]× ¬ŠæåRÒeùK¡Íz0.áâà®; À_‡?¸ëp¯à/$ÜÊ´¹×- Þ‘µ¢ ÈZkòNÑÇý@z“ ~wVï· ½U«VnO¸À¼a}¯Ó!ànrGàÁä὆ ’î@à!]ž¶¬¥½ ²ÕÎR³ îº= þ:üÁ]‡»x!áV¦Í‡ÜúëûÜx¥UÜM’øª…ÉÃ{ [‚Ò_}õ>|8ÉòrÞÉ–÷ÜsçwjH²ñ±$ðሀ­- Žš_´nÀ]·ëÀ_‡?¸ëp¯à/$ÜÊ´¸¯¨ ¶Š>ÖˆN`ä;_'2mÚ4Òwï»É|Œä®»îj”óMÁú^§ÇÁÝäŽÀƒÉÃ{ $Ý!€ÀCºüždÆxç•0ÍEÆ­3s±…²Ùw“&ï5L!Ç»ý· ²ëÝ_ëà®Û÷à¯ÃÜu¸‹WðnewìöGÜ:Ó®w­ƒ»Ù÷<˜<¼×0At†@®Ü{tiA ½f—¥$û´â'¾Á;Ö¹ïxÈ¥'ãD¹ØBÙì €{ö¬l”Tãm‚{<#›%Àß&ÝhÛ½ljkS¡™wM"Y½ –ä’@vkÏ;Ö 66ôÞ~ÊâÙWHâ#\יɼ V˜¸›Dx0yx¯a‚è \¹#ðn?É‚¨×ù=Ò5 kõ÷zñXÏëˆ3:÷ŒXœ%‚¿3Ô†#áŽÀƒÅ™’ë:ÓYÃJܸ›ŒÀƒÉÃ{ DgdËý¨ÿÛ—x@ã÷HÙ‡ßíðåLn÷¾¯ðއ®WcÇC.=) "r¡–YpÏŸa>À?zÉë‚{rviÔÿ4(ænC¸¯wVwª<áÒ±$߀kðž,Åò'Óøè¬Ï6 ƒ¿#Y d»ÎL`Uê!î&LÞk˜ :C [î<ØéY!ð`‡o”Up"ã&üÝp{÷0·:ø»å-Þ„;BÄ­Ìvé¶U¥ï ÜÍ>FàÁä὆ ¢3â¸ØkWjØæuŸ‘Ü«{%ɺàÁ¸yÜîK?kD=nä'œŠÏ8² Bà!ŽTºùàž.Ï\­®ÄÒ)îépLjü“’˯^÷ùON'ÃíX@òã£ya³€—9eëÞ½¥Ï_´,¿x^;né9k§î&ZLÞk˜ :C Ž;vû%jAd×+¬ƒ»îþà®Ã]¼‚¿p+£¸#ðà¦âÖ™nZáŸp7û“‡÷&ˆÎˆâ>jÔ(jÐ9§ŸDrÙÒ%$ËËË YÖ és—ñƒ²ãù]kq9ÊÄG$¨Qdd¤BÜSÁ˜Øø'F—WE¡¹/@IDATpÏ _Þ•Á?o„‰ Äq_pÛb²;þ+þµ‹7ãuÍQ/4¥ô¯ÇL Ù±cÇDþ}¯µÎô‹íów“0&ï5L!Å7ý· rÓ ÿ¼€»nŸƒ¿p×á.^Á_H¸•qÜx°ÛQëL»^aÜÍ1€ÀƒÉÃ{ Dg¤Í}ƒw§™×oÉŠÖØùP_ÏÆ-ˆê«‹¼äÀ=9»4j‚s·î¹3K³ø§I3{[QÜk†¯$#·žx;É=wß“dÿ·&9aü$ÿõŸ—Iîº+¿óŠ|dM íufÖŽ=/îæ@àÁä὆ ¢3ÒæŽÀCnýµ ÊÍ JçJÜs%–nyðO—g¶ÖÀ=[RvÊ¿®qV£¸#ðG.ü´×™é´ªô­€»ÙÇ<˜<¼×0At†€-îûüqo:¡Y;L!YѶBç ÜkÔ‚¨À›]ôÍwÝ.þà®Ã]¼‚¿p+ÃÜ«FÕPþ¯ÍI^yÑUtÍ•—SúɧœFïxȈ)6ÑÖ:3Ö±çÀÝ<˜<¼×0At†€-î™äW’Üç)~çÃø=×&½ÕÖ-I–ú¢:= î:ÜÅ+ø ·ÜÝò{ÿ0‘dúŠj~'TÍÂZ2P5³šdåô*68}9Éåã–‘lÔ  ÉéSgp>>p½Îtzrì ÜÍÎAàÁä὆ ¢3\sGàÁìg,DM®4pwE:³ðÏÌÅv*¸Û&\¿}ð¯ŸO¶¹@àÁä὆ ¢3\qßnÓ^t‚wíôÉm;ó 9ëýžâw<ü°;ÿÎvëm±ãAØ@¦O7é3ÍÅ"øçB+½²àžË$–À? µÕë, v2L¼…ßݰu7^?lÞ–×›¶å”SrÝ¡cÛÓÁŒY³W7†ë\­3­ŸH‘9w³Ãx0yx¯a‚è WÜxÈÜ¿Xˆfæb;Üm®ß>ø×ÏÇV.¸Û"›]ðÏŽS\)âV¾«ufaµ~kÀÝìLÞk˜ :CÀ6÷ãŽ>‚Nì¥ùW,ä,ëVð‰º:~B±F~ÇC«Ã:S‘–;­)EKZb!ªÓ½à®Ã]¼‚¿p+ÁÝ-ï°7ðÉO_øÚÏd nËŽæõDÇ`ùðÙt¶ßÿñft°pñÒü¢v"¶×™‰åA%p7;“‡÷&ˆÎ°Í‡úû ÑúùØÊw[d³³ þÙqJ»¸§M47{àŸ¯¸Ò<Ä*Œ|ÛëÌÂ8ËÂk¸›}‚ÀƒÉÃ{ DgØæ^YYI'¶xñb’åå¼³!,5jDùçüýl’ï7A²Q/.OJ ~`!ªÓ©à®Ã]¼‚¿p+ÁÝ-ï°7ðIG¯œÊëŒI×ýDïÞ¯ɃzÕ‘l;ˆßQSËz:^a%[¶×™Ù¶Ã·rànö8&ï5L!`›;õ÷+¢õó±• î¶Èfgü³ã”v)pO›hnöÀ?7^Ù–Fà![R:ål¯3uΪ𽂻ÙG<˜<¼×0At†@¡r?ûo% ï¬N²b~b¡CÉžW,Dí±­Ï2¸×GÇ~øÛgœÉ¸g¢â. üí°^>‘w<ì0·/9¨šÎ¿^Ñhêû¤ÿ{ä’“&O%Ù©S'’øpC P×™nÎ^Ï ¸›ìx0yx¯a‚è BåŽÀƒÎxðÅ+nt{üuøƒ»wñ þB"]‰ÀCº<Ó¶V¨ë̴ϳÐì»Ù#<˜<¼×0At†@¡s?ÿÊóÌË^%Ùh£Ì;ê×RþüWøíÖí‚_ÇСš½W,D³g•fIpO“fî¶À?wfiÔ÷4(&·þÉÙe¬É?ŽUVu?|ûÁwF±¸—ôSO?“ä?øä6Ûlc”ƒb—@¡¯3íž½žup7Ù#ð`òð^ÃÑ…ÎqQê^q ÛÃà¯ÃÜu¸‹Wð)IRi×L¡¯3íž½žup7Ù#ð`òð^ÃÑÅÂýo×_J€†Í}žd£Mƒ5¼òøêÏ£(½M'þuŒn×m 4G¯Xˆæ,¥âàžÈ„fÀ?!¸<«{žó¬þy U¯Æ ^öl±ù¡¬öë×Þ}÷ÝŒùH´K XÖ™v)¸·î&sLÞk˜ :C X¸#ð 3>JÕ+nt{üuøƒ»wñ þB"‰ÀC:m[)–u¦m®íƒ»I“‡÷&ˆÎ(6îWÝ|%zvÆS$¿¾•w:Œ:ùõ{Žwçw: ÜôT2tæÀ¿Ôk°ØÖ9õžLf‚¿N§»É“‡÷&ˆÎ(6î<茓RóŠÝþà®Ã]¼‚¿ÈO"ð?×µ‹méš-àn’EàÁä὆ ¢3Š•{E9¿ãaù¥üއŸæ3¿Ÿª ƒ7öÑš£W,Ds–RqpO dB3àŸ\žÕÀ=O€yVÿüVM¯&}ÆmJò©>•Áb]çdurEPüu: ÜMî<˜<¼×0At†@±rGàAg¼”ŠWÜèö$øëðwîâü…D2‰ÀC2nÚµŠu©Í-_ÿànDàÁä὆ ¢3Š{ófMÔ¬³ùÉÇšüJ‡²ç1¿íŸàëÂŽU^q ÛOà¯ÃÜu¸‹WðYÊàç2+gUq…—ù‚ÿù_Þ´iÓ¬ Û:'«“*¢Bà¯ÓYànrGàÁä὆ ¢3Š;:ã¤Ô¼â@·GÁ_‡?¸ëp¯à/$²”¥’}¼¤i:ëËfð‡ùsøzß¾¿Óéä3. ò×\{½i(F+–uNÌim6øët¸›Üx0yx¯a‚è báŽÀƒÎø(U¯¸ÐíYð×áî:ÜÅ+ø –<˜ ذث —â;–/¬ØŸöeNÈò³XÖ9YžNÑ.w“;&ï5L!P,ÜxÐ¥ê7º= þ:üÁ]‡»x!Á“G©jŲÎ,5þànö(&ï5L!PªÜ‡>6”€þã½ÛI–ïT˜;°Õ÷à®Ã]¼‚¿p+ÁÝ-ï°7ða½niL¿a<ÉÓûð»þ¾Ó Ò¿œÉåN|¯'ŒüžËqjüg©®sâϼ0J€¿N?€»É“‡÷&ˆÎ(Uî<茧bñŠÝžþà®Ã]¼‚¿0%&RÓJuYèýîf!ð`òð^ÃÑ¥Îý‘ÿˆdù.õï|XYÅù+V²,oÊoÓ¶Õ;XˆÚ"[¿]p¯Ÿí\ð·M8³}pÏÌÅU*øgGzîUÓ©àzMx'Ä‹/$½ý-H.­¬ÎÎPPªÔ×99ÁP( þ Ðq î&wLÞk˜ :C Ô¹#ð 3® Ý+nt{üuøƒ»wñ þB¢~‰ÀCý|Š-·Ô×™…Úànö &ï5L!à ÷'Ÿ{‚ßøÿþwÃ]ù»£B½zÂ2:üiÐ’OX‡dëm×’"V$¢V°Æ÷XDV €¿U¼‘ÆÁ=“ ð¯sí;¼ÓðÚÃo¤‚ð¯Wí³ï~¤wXk ’Ÿ÷ÉuÖáë4)õ|ø²Î©jøëàw“;&ï5L!à wtÆW¡zÅ €nÏ€¿p×á.^Á_Hd–˜w@bá Q P³0 îY@²Xü-­Ç4¸×ÇAVÉòv –—Ëêy|­œQET«fV“¬»”ä;üäý·?@ÒöG©¯slóË×>øçK0Y}p7¹!ð`òð^ÃÑ¥ÎqUè^Kö ÐÁíŽwîâµdù#ð ] ™@©¯33œrA$»Ù <˜<¼×0At†¸gæþÙŸRÆÀëO&Y> xDæâ‰SKv!š˜ˆ›Šàî†s”ð"c7Üíò³^ªü¾?ŸN}âƒÓI®µ&o}èÕžå¦mùúùóBŽPl|ð…TîšënˆC–J>Ö9©`Llü£Ë«"¸›øx0yx¯a‚è pÏ̇Ì\J%µToŠ¥À_§§À]‡»x-UþüërþOÏGOVîMO½øºdY•XçXÅkücY)î&VLÞk˜ :CÜëçŽÀCý|Š5·ToŠ¥?À_§§À]‡»x-Uþ¤G}ø²:­tp×"Ï~Á_‡?¸ëp¯¾ð¯šZM§ÜãëõIŽñ!É«wYJòÔa¼¢ª¦–tÛXçØ&\¿}𯟭\p7É"ð`òð^ÃÑàžwrãU¨¥}¹ÿB% Ó.Œ{îâÕþ°Î±5“àŸ¬‹‚» “‡÷&ˆÎ÷dÜxHÆ­PjùrP(¼Ãíÿ07:¸»áåÅþvè}üÊ£¤¿÷Ã"’µµ|Ý’ó,4‰uŽn€¿p7¹#ð`òð^ÃÑà®Ã]¼"ð $ÜÊb»pKǾ7ð·Ï8“pÏDÅ]Z±ñGàÁÝØ(eOXgêô.¸›Üx0yx¯a‚è p×á~ó5—‘ã ¾äÄ3ùÝÒš^áooÔ‰’ÚïÞF² S Pl7)œrA™îwîâµXøWŽ«¦&÷_±/ÉÛ®»]NäÛo½IòÌÓ’ñþ'$Û·oO²Ð>°ÎÑíð×áî&wLÞk˜ :CÜu¸#ð Ã]¼Ë €´·Ô$øëô(¸ëp¯ÅÂé1È4`™ÅÜm€»É “‡÷&ˆÎw·Ü¯»ú røäƒIΚ¿Œä.ë5#YWÖ€ä˜éKIVîÏ;ÚîÖŠt|¤C XnÒ9Û³þ:}î:ÜÅk¡ó¯«äw:4zš¯GŸÿLš^ÔëÝîþànrGàÁä὆ ¢3ÀÝ-wÜòŽòVè7Qí.•tð×éIp×á.^ ?ÒSiÀ:3MšÙÛw“&ï5L!în¹Ï˜1ƒŽ1‚äõ×_OòòË/'Y^^N²Y3~âtÓ½7’>g®Wцó)‰ ú @â+’Šà¯ÓQà®Ã]¼:ÿšg¸¥Ï~žÖ[o=izQK¬st»üuøƒ»É“‡÷&ˆÎw·ÜxpË;Ê[¡ßDµ»TÒÁ_§'Á]‡»x-tþ¬dÕ³ù÷صmD *øW38×ßÏB½ð¥GÀ_§§Á]‡»xÕæ_³ –šR9£Šä² ËIîÝi?’Coÿ'ÉRûÈõ:[jç¯}>à¯ÓànrGàÁä὆ ¢3À]‡»xÍ•?B.?©}_ë‹¿6øëô!¸ëp¯Úüx.]é@®ë‡M+iWànv/&ï5L!î:ÜÅkRþøÓ!db\¯Ñ$u1íbÖMã)}îD~²µÑ݉KÈ_hßøÞ à¯3À]‡»xuÅþsÈå’ÿÎ#¹pv É5›ðŽ·õÚ±¬\Æ[ã.ôå}ôÑ$Kí#éu¶Ô8høëw“;&ï5L!î:ÜÅkRþ<ÁdÒÕ @²Ö•~-ð×écp×á.^]ñGàAˆ³Lz5­@KJü“’˯¸›üx0yx¯a‚è p×á.^óåÄÀÃÉÔ÷ݾ!¹è¹É$/躌åÛüdkƒ;±ã€®nþ×'Ž#þ¿±pyî.i¯îËÿÊ)•ä|ÜÕ¼óí_¿ã¶¹qðòŸ i7~Àó·8‡ntKSZ"ßëliÑp6àïžù¯ÁÝäŽÀƒÉÃ{ Dg€»wñš/„dnÒÕ @n­ò§4øëô5¸ëp¯®ø#ð ÄYæ{5­AË•øçJ,òànrDàÁä὆ ¢3À]‡»xM‹ÿf}Ö&“çl2ƒä=ùÉV»’Þç.ìxæ¿JW7ÿëÇ¿ÿßX¸<w—´W÷¥Åöm¨1ýñ¯Xüsÿ¤??†ÛøÐÂÝéà¹Wßæ„ûLë:[bXœø;Cm8wG&ï5L!î:ÜÅkZüx¢ÙI­€ìZWú¥À_§Á]‡»xÕâÀÃ^ÔÇãW-d,º”i­s\¶¹|»Ù‹<˜<¼×0At†¸ëp¯ùò?þÈÔî+ß"yÜÆüDkÅ·¬Ë¼ãa£{°ãA˜ÿ*µnþ· >ƒ¿NwñªÅ¿jF55¡Ù‹MH.ž2‰äÝ{."yúûëõã’¥ö‘ïu¶Ôx¸>ðwMœý»É“‡÷&ˆÎwîâ5_þ<ÉÜ¤Ö @n­,ÝÒà¯Ó·à®Ã]¼jñGà;d jÈ|×9m.Ÿànö"&ï5L!î:ÜÅkRþîµ+™X{ѧ$û­SE².xiù~ÀUö×7øW-6½cq ù ­Àgà¯3À]‡»xÕâ_ùO~§Ãç¯AM™ðÓO$÷ì·ÉÙ󓬭­#YjI¯³¥ÆAë|À_‡<¸›Üx0yx¯a‚è p×á.^“òGàA&“Z7ÉZ[zµÀ_§OÁ]‡»xÕâÀv<ÈÔI×9m-%Ÿànö&&ï5L!î:ÜÅk®ügÌà_­¸õ†+ÉĔɓI–—W°¬`YÈ9KæSú¤§‘lÔ»œ¤ïZ7¾s—ó!áV‚»[Þao®ù×¾Á-¸óÔ»é ï.}ÃM"ýÚ«øzrÞ…‘Þ¤ ¿ "cá"LÌõ:[„§XÐMîw“;&ï5L!î:ÜÅk®üxrùI×7ùµ¶ôjƒ¿NŸ‚»wñêš?L>×ë¬ôd:À?޹Zw“&ï5L!î:ÜÅ«+þç^~.¹|«ú5’}ø×.¤¾I×7¾ñ;_ð#d'ÜípÍÖª+þ•ßðK~Ž\ûXjÚ%ç\šmK²œ«ëlIÂKá¤À?ˆ L€» “‡÷&ˆÎwîâÕ„8KW7¦WhBü…„[ îny‡½¹âÀƒIÞÕuÖô M€¿p+ÁÝäÀƒÉÃ{ Dg€»wñêšÿEW_H®_[ü2ÉŠùW/¤=¾HW7¾ðÌõ<Á?Wbé”÷t8&µb›õ¼jÚÚ÷ ùꓼÃ-i{K¥žëël©pKë<À?-’¹Ùw“&ï5L!î:ÜÅ«kþ<0yÛ7Ò¿™ €f.¶SÁÝ6áúíÛæÀCfþ®¯³™[áo*øëô=¸›Üx0yx¯a‚è p×á.^µøÿýÆ¿S†Íy–dù&™w>L¼d,å7ß·Év»¶&Yì¶oŠíöƒ¿m™íƒ{f.®Rmó¯y”Ïäí'FÐAÛ¶m]ZAûѺÎ4‡‡°ÿǸÿŒ_x0yx¯a‚è p×á.^µø#ð0‘º ×ù=¤+ °}æðTŠÊ¸ëv—mþø[GœÑ¸gÄâ,1WþµKj©mU³ùÝ •3«H¯™Á²áôå¤×ÍärƒnJú‘‡IL@û:ë{?€¿Îw“;&ï5L!î:ÜÅ«6zHW@:$ë ˜Ã¦•´+p×íÞ\ù#ðNi_gÓ9‹âµþ:}î&wLÞk˜ :CÜu¸‹×BáÃ7P“n½†ßýðú!ü„íþ¯øÝ/õìDùö.ï çz ý™ðO‡c®VÀ=Wbé–Ï•ÿ¬G§Sj¾X@²ownÏæmVÐÁÁ¿ã'GW¾Ï_î&yòÉ'sA|B¹ÎúÚà¯ÓóànrGàÁä὆ ¢3À]‡»x-þ]Io> )ÉbÿÈ÷ ØÏ_»ýà¯Óà®Ã]¼æË¿ú}~·Ã9ý. “÷ ºžä.kM&ùÒ”Ö$ÇNà_à xǃòÐZç(Ÿ¶º{p7»“‡÷&ˆÎwîâU‹?© zßCºÒ!|oÀ6µ¤\»nwæË‡dý§uMÖÚÒ«þ:} î&wLÞk˜ :CÜu¸‹×báÿàãR“ïq+Ɇ;ñN9b“ùÞÛùZ{Á_§GÀ]‡»xMÊ¿rB5™ØeÉn$‡Ü|¯˜$yɹükÿ~ò)Ò'Niäû®Ëu¶Tû üuzÜMî<˜<¼×0At†¸ëp¯ÅÂé1È4$½K÷Ï6À]·÷“òGà!¿~+–ël~gY¸µÁ_§oÀÝäŽÀƒÉÃ{ Dg€»wñZlü{ú1jú-¯ÝH²aßâÜùô@ú 2?àŸ¿¤µÁ=)¹têåÊe-ÿ]ñp5àËw¿ª·!?þø#寿þúõ–ó-³Ø®³¥Ö?à¯Ó£ànrGàÁä὆ ¢3À]‡»x-6þ±t=€º<³µî&)LÞk˜ :CÜu¸‹×RáߪùtJ“Îäï(¯Õ„ϰŠ7>”5¿wp¦Ežý‚¿p×á.^…·ã»PRå?ø×.öîZMúÝ‘¼kÖÎ$_~ó}’øÈ@±_gó;{ýÚà¯ÓànrGàÁä὆ ¢3À]‡»x-vþú¯ûIÞ|Ýå\±Q3’?MÍ:>ó"àÛu6/X*ƒ¿¨Y˜w&ï5L!î:ÜÅ«oüxž÷[Ê ?nǸ»åö&üx“±«ûvµK3wëàŸ;³4j€»I“‡÷&ˆÎwîâÕWþ£ÇŽ&Gž8ÉòCêçCÝ\þtõr.·Æ:Áß È¥ÜàÆ7Gp)ÿ”@æhÜs–rñ±O$‹Ï=úÉþ{ô7<Œ3†ôËÿvÉÇŸúöî<@ŽªZüx’™ì@X!€,²ƒ² >D| û"* (ŠYeÁå©l"ˆ"›²‰FYTøAd‡@’L23Éï½s稷˜îé¥êœê¾ßúôéZNÕ§îí¤O*Ýa½ÁƒÃ¯E+“Ô,ꟳ5¼"þWØ=î1 ‡Ø#ùŒ â3p÷qת©úÓxÐfä°ÏuÇÝÇ]«ÒxP ۘꟳ¶Ê•«á_Ù¦È%¸Çº4bä3&ˆÏÀÝÇ]«¦î?ùùð»öû··tìßù°ðÅðk/û¼,½ë8‰+î:V Š|kˆ-·ðϲ®á^Wn+/x¢[ö5÷úpçÖóÏ…÷³Ü °£ª©ÿ9[Ç`!þÈý”À=F¡ñ{$Ÿ1A|†î>îZ5u:ÒŠ|ö¹Þ¸û¸Óxðqת©ÿ9«^yÜcw±GòÄgàîã®Uñ/N}QžìqÔno×%ñ­ ÿ ´n¸âªq}w<ì¶|ذÁG>€5—ÓføçYçnp¯¬ÉÕ»g÷È–ûÓŠ;Þî”8qâÄ&÷Ìæõðçl=Zù¯‹þ¦µì÷X‰ÆCì‘|Æñ¸û¸kUüƒiD>û\gÜmÝi<ØzWªÆŸ³•dl^Ç߯9[÷X„ÆCì‘|Æñ¸û¸kUüU"Äûÿr¯<Ùg×JœöÅp§Ã)w†å— w<Œßƒ;‚Hk>òØçºánëÞý«PïöËþ O?üp‰Üñ`{øsÖÖ;[ ÿ¬ˆMŽ{ìLã!öH>c‚ø Ü}ܵ*þ*"‡Ø£]3>û\YÜmÝi<ØzWªÆŸ³•dl^Ç߯9[÷X„ÆCì‘|Æñ¸û¸kUüƒÄK}ßñ°ífÊ S«D¿yWH/^fy2~Ïëõ?ò¬~³<·À?OÍÚ÷…{íVÕÖ\´0܉Õ5=üJE׌²z÷ô;^ ßípî×,¯ï·ç~y¿¯¦ZÜ2Ü‹³­eÏø×¢”ÿ:¸Ç¦4bä3&ˆÏÀÝÇ]«â$h<èˆH#òØç:ãž;‡|­öŸ³VÒý×Á¿—¢_Å=¦ñ{$Ÿ1A|†î>îZ5uÿ§ž|R(¶Ú|‰ç}8ü boøÅA½‹ƒÔmφøÈú}w<ìÍA¤5ùìsÝpoÎýåïM‘Ì|<Ü‘µúòƒ%_lØï&Ë„7®ëŸ*/\tÕíwØa‰©¿ß%ûGÜíÍÿ³"þÿ©a÷÷ØšÆCì‘|Æñ¸û¸kÕÔýi<èHH+òØçzãÞœ;‡æü¼¶NýÏY/w­‹¿JØFÜco±GòÄgàîã®USõ_´(üËàƒ÷ß'—üø;:ÂïÜwtöž¼§·W–ßûä_%Ž8ªCb£|kT.ŸíðÏDZ޽à^¯X¼þÂ7Ãw7L;û9YpÊæá}é‹›÷ÝšÕ·úÑ¿)Ï6þøù?ûÙÏJLõý¾Å-àîFϸw¤gÜÇø4bä3&ˆÏÀÝÇ]«¦êOãAG@š‘À>×÷æÜi<4ççµuªÎzygë⟱Éqi<ÄÉgLŸ!€»»VÅ_%j‹ †ï€ØdûeƒQG…;#…ÿj]ÛNþw->€ÕLUÈŠøÂ:àNq¨®fþìeYÍWæHœxp¸â{„ݼ¸ÎÑòä‚‹~$‘÷ûàbýˆ»µx\ÿØÃ*Ã=–¦ñ{$Ÿ1A|†î>îZ•¨-Òx¨Í©ìkñØç ឯ;‡|=‹ÚÎ%[Û~ñ¯Í)ïµpEi<ÄÉgLŸ!€»»VÅ_%ê‹ú_56úÀ{eÃ០·< î¨íÖ>€Õç÷Úøç-ZÛþp¯Í©ÖµÜîpøðˆíe“Ë/¾Tâ·· wfݾpÉo»#|— ï÷Âaþ€»9yTÿˆÃ,Á=¦¦ñ{$Ÿ1A|†î>îZ•¨/Òx¨Ï«lkóØçŠàž¯;‡|=‹ÚÎ%[Û~ñ¯Í)ïµpEi<ÄÉgLŸ!€»»VÅ_%š‹o·‘ì ã°ð/C† ‰v¸àá·$þòi;W ß:¿ö„Õ£õHløl㜭‚{V¤±|þ‹ díþ¹­ÄË.º\âìÙ³%~`Ëð4oÍž+ù‹Ó^“Èû½0˜?ànNÄ?â0Kp©i<ÄÉgLŸ!€»»VÅ_%š‹4šó³ÞšÀÖâ¡îù¸ÓxÈÇÑj/ü9k%Ýüûw)úUÜca±GòÄgàîã®UñW‰|âæÞLvÔ»ß|‰ ÿ¾m~å?O—üŽ'ÃK¬¿„äÜñ æ|6'—‚¸çã>ÿÇá}äñûŸ¨ºÃûî ßí°í¶áÎÞï«r¶÷ÂhkÚ1þ51å¾î1)‡Ø#ùŒ â3p÷qתø«D>‘ÆC>ŽEï…ÀE ÷¿Üûw©÷UõŠù®ÏŸ³øû øTgÜÇî4bä3&ˆÏÀÝÇ]«â¯ùÆ6_[v¸Ü¼$Þ¹øÊÁ§…:KmÈùŠ×·7>×ç•×Ú¸7'ÙsKøÕœË¿v…ìè}›¼¯®ò~_Wn+ãžeC;¿!¶¦7Â=&¤ñ{$Ÿ1A|†î>îZ•È7ÒxÈ×3ï½ñ8oÑÚö‡{mN•Ö¢ñPI¦Ü¯óç¬ïõÁßÇ÷ØÆCì‘|Æñ¸û¸kUüU"ŸxÛM7ÈŽ~xê§%Þº×ÌhÇC¾Ò%õ;¾ºz´œÄF€À6ÎÙ*¸gEjË>Ü#+~zã%~þ¨ãjÛ0³ï÷£w#è eð¯Sð˸ÇÀ4bä3&ˆÏÀÝÇ]«â¯ùDù8½>-Üÿþqïße Wi< $Tîåü9ë{}ð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•h.ÞòÛëeçð)‰¿Þ}–ÄÞÅa¿½‹B\ýÂG­7Zž¬óÕ5 <š ðØ”û_ÅpÿEMOæ¿´@Ö[òF¯»üºš¶«´ï÷•dŠ}÷b}Ú;þ ³÷Ø•ÆCì‘|Æñ¸û¸kUüU¢¹Hã¡9?ë­ùl-êá^Ÿ;‡ú¼Êº6Îú^ü}üqÝi<ÄÉgLŸ!€»»VÅ_%‹¯¼òŠlxÐÞ»I|âég%v bG_ìËGŒ ùŒ¡]²|ݯqǃ@?ðØ¼¯îbö¤·åÉüWÂûÀàió%ï™îp˜óêBÉ—Ú)ñ¡Ç¦H?~¼ÄFx¿oT®¹ípoί٭ñoV°±íqÝh<ÄÉgLŸ!€»»VÅ_%‹4sóÞŠÀ>W÷àNãÁgüyUåÏY/ùPÜcw±GòÄgàîã®UñW Û¸üŠc¥àJ_Z^âÐqá_6m"Ýj|ö¹ö¸÷×~:UžŒ}iŽÄc6 _³nx[´Îra½ƒo^Bžœøýðk9ú~–Öÿ¨ÛOœ8±þÙ¢aܦËeCüsa¬{'¸Çd4bä3&ˆÏÀÝÇ]«â¯¶‘ƃ­w¶€³"69îÁ™ÆƒÍx+Kþœõ½øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFu=~”ž²aønˆÎ;l$Ñj|ö¹ð¸ÇîoÝüª¼0ì¯3%>ph¯Ä%‡…õ>?q„Cww­Š¿JØFu§ñ`ë®Õø¬¶÷Ø›ÆCìÑ®™¾ßÓðñ¹Âøãî#W¼ãŽ;öýÂz¼À+{øá‡¥ô¦›nêuI×Åßçòãîã®UñW Û˜uŸôÄ$9€ù#çJc‚ø Ü}ܵ*þ*a³î4lýùlë­ÕpW‰8Òxˆ=Ú-˾߷Ûù•ý|ð÷¹B¸ÇîüW‹Ø#ùŒ[±|†î>îZ•°•ÜþìAr ­üˆÄa«†_»˜sýtÉÇ>þ/ø”ïaŒß³ïŸFm¿å«qË¿Ï%Ľ÷î_„×ï¸úNyòéC÷•¸è•¿Iœ¿Ì†ÿp÷_%6úPé}§Ñý±]m¸×æTÔZø%[}¿¸Ç>4bä3&ˆÏÀÝÇ]«â¯¶±’;›ëÀ`çlܳ"!§ñпK»¼Zéý¾]ίìç¿ÏÂ=v§ñ{$Ÿ1A|†î>îZ•°¹ñùËýåÉ[%îÒ3KâØ!á[ï¼d¸ÓaüÞÜñÐÈ•ãp#jÍoƒ{lØ}Wø‡3ö?[ì¶ËnÑ çžõmÉÿöàýý›Û¢åõ&½ïÔ»?Ö¯M÷ÚœŠZ ÿ¢d«ï÷؇ÆCì‘|Æñ¸û¸kUüUÂ6äNã¡ØëÁàb}+í÷X†ÆCìÑ®Ù@ï÷ízÞe9/ü}®î±;‡Ø#ùŒ â3p÷qתø«„mÈýÜoŸ"ôâíçJüÁNá×,μ'çGõ}Çþãl¼MªñØçBâÜ»žóy×a{È ßùf˜ç•®Ê[o½%‹ÆŒSi•š^è}§¦°Rݸ×M–ëøçÊYóÎp©h<ÄÉgLŸ!€»»VÅ_%lã@î4н|.Ö·ÒÞq24*ö|} ÷ûö<ëòœþ>×÷ØÆCì‘|Æñ¸û¸kUüUÂ6Vr¿ð;áÿt¿ð» 䀾÷Á7£;ç¾~ØXy²âþ+FËIjàpmNy¯•º{ïÜð-£nYZhï»í/yWÝ_¥÷ª±°iÜ›&ljø7Å×ðƸÇt4bä3&ˆÏÀÝÇ]«â¯¶±’;›ëú`åwVIÝÆÃ;ÇD ¯Tz¿OáÜËpŽøû\Ücw±GòÄgàîã®UñW Û˜u¿ì’‹åÎüú‰ãF‡ãé _z?¨wQÈg¼9Wž Û6üšÅ2û-ðX—@ê€ëÂÊqåÔÝ»¯ ˜7ýðy²Új«å¨;ð®²ï;oÁyàž‡bãûÀ¿q»f¶Ä=Ö£ñ{$Ÿ1A|†î>îZ•°Yw¶þ©¶ÕþwµÔÝi<ü{,¤ô,û~ŸÒ¹—á\ñ÷¹ ¸Çî4bä3&ˆÏÀÝÇ—†S@IDAT]«â¯¶1ë>oÞ<9€‡zHbGGGÕxÕo®’åìº]âÐ †Hä¡6Ô?צ”ÿZíï¥®é ¯kFøõŠÅ/Ë3>~¶<9h¿ƒòÇ­aÙ÷6a•pϱ‰]àß^›âãÑxˆ=’Ϙ >Cww­Š¿JØÆ¬;[ÿvÿl«Y{µvw§ñPûXHiÍìû}Jç^†sÅßç*à»Óxˆ=’Ϙ >Cww­Š¿JØÆ¼ÜO>ã$9ðß½u³ÄŽ ÛžH‹Vk÷Àe½,íæ>ãÇS…zÞ³á»WfÏ ¿Z±êòá¤u– Wâï/…üáÇ'Ë «®ºªË%Êë}Çåà[¸(î¾Ücw±GòÄgàîã®UñW Û˜—;‡Æ®[»}nLÁ~«vs§ñ`?†Z±b^ï÷­xîe8fü}®î±;‡Ø#ùŒ â3p÷qתø«„mÌÛý´s¿)'pãŒë$vnTý·9Ï–õF­~>£cdøN y1‡vûÜ*—¬ÝÜç<0Kè_½jšÄ¿~~fƒåã+ò‘kÇÈ _¾à×wÞyçx£,ï÷£Ãnù2¸û^Bü}üqÝi<ÄÉgLŸ!€»»VÅ_%lcÞî4ê»~íö¸¾³÷[»ÝÜi<ø¥Vªœ÷û}+{ŽŸ«€{ìNã!öH>c‚ø Ü}ܵ*þ*a‹r?ó‚3äD~=õ—;7‰ï|øç÷ž—×§>~EcÓËÞN<^-¼ÖÆíö¸U.U»ºwÏê‘K0íœð'l¾ëá+[‡; ¾0q¸,_sÿs$÷…/¸\²¢Þw\N¦…Šâî{±ð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°E¹Óx¨í:¶ëàÚÎÞo­vu§ñà7¦Z¡rQï÷­pîe8Fü}®î±;‡Ø#ùŒ â3p÷qתø«„m,Úý¼ž''ô‹g®øÖ}/H<íÝáN‡#oX,ùF?ÙPâàδnyh×Àr1KüÐîî þî|XåÉðsCÿù¤\]Þ¾ â+!ù~z¹ËU*ú}Çå¤Z (î¾ Ücw±GòÄgàîã®UñW ÛX´;‡ê׳Ý?W?{¿¥íîNãÁol•¹rÑï÷e>÷2þ>W÷ØÆCì‘|Æñ¸û¸kUüUÂ6Z¹ÿ×–ȉ±ÊÓ?¹Qø?çÃÏ w8løƒõåõ!ÆØ8Wk÷ÀμË·«û‚i åœß;eS‰Wÿ$|ÇÊÍ¿½QòýöÛOâ–›„;Œîþ룒[?X½ïXŸWÙëáî{…ð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°Vî4ú¿®íú¸ÿ³-Ï«íêNã¡Cww­Š¿JØÆ¢ÝiîZ•°E¹ï¶óåDFL@â–+†ÿ{Þ~ÄbPoø‡ÙAgÜÎwÝï…;:GwØ8Wk×Àά–o7÷žÛÃ)ÿø‹Ë“­·Úz@ÏŠzßñ<§V¨»ïUÂßÇ÷ØÆCì‘|Æñ¸û¸kUüUÂ6åNã¡¶ëØn€k;kÿµÚÍÆƒÿ˜j…#(êý¾ν Lj¿ÏUÀ=v§ñ{$Ÿ1A|†î>îZ•°y»ÏŸ?_Nà׿¼Jâ?{LbGGø¿æÿŠCåõyÝá;þ4óa½ôÝ!Yû?´ÛàV¹bíâÞõH·|#%N8î«-q ò~ßi‰“.ÁAâî{ð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°y»Óx¨ïúµËàúÎÚívq§ñà?–Zéò~¿o¥s/ñâïspÝi<ÄÉgLŸ!€»»VÅ_%lcYÜyý/åÄ¿sëY;>˜ÆíòØvÔ6_­Õݼ¾3eõÿ·Ž`Üü‹››G1ÜCYÞw O¹¥p÷½ øûøã»Óxˆ=’Ϙ >Cww­Š¿JØÆ²¸ÓxXÝöÂ'^ƃï(Ëûޝ‚}uÜíÍÿ³"þÿ©a÷÷ØšÆCì‘|Æñ¸û¸kUüUÂ6–Íý†›¯€Óoø–Ä!Û÷ýü…-‹YµVÿl•s¡²º÷Ìî‘3÷b—Ä®é $.ž¾;eÑ´™3D^ì‰W$Ž3Fb«<”í}§UÜš=NÜ›ln{ü›óktkÜc9±GòÄgàîã®UñW ÛX6w¶×?Õj4|¯|ÙÞw|5ìªãngÝ_%üûS)þ5Ücc±GòÄgàîã®UñW ÛXV÷›~w“@|ó—§Jòáþï|xaÂS²|Äfá_|Ç8Þ°ÉjeýÜäi•~ó²º?sÂ3b·ÚÐpçÃv«„ï:yÏr!®»\ ýÄ­#åÉŸü‡Ä5×\3,h‘Dz¾ï´_lj{Ãt¹lˆ.Œuï÷˜ŒÆCì‘|Æñ¸û¸kUüUÂ6–ÕÆƒí8H­ß+^Ö÷_•â«ã^¼qµ øWÓ)nî±-‡Ø#ùŒ â3p÷qתø«„m,»ûíwÜ. '_~‚Ä!;…;¦žü´ä‡¯Þ-ñš%Ã?;ˆ;„‡ªem<èAÏ8{²<Ýgùðîßñ³Û ៣Ïú…¬÷Ñ~T7m‰Xö÷–@là qo-ÇMðϳŽ]ácÑxˆ=’Ϙ >Cww­Š¿JØÆ²»Óx°©T£ñà{¥Ëþ¾ã«S\uÜ‹³­eÏø×¢”ÿ:¸Ç¦4bä3&ˆÏÀÝÇ]«â¯¶±UÜÿt÷Ÿæà}v‘xË>áN‡{§„ÿûþÝEËÊëãYɰÉjeÿÜäé•vóVqŸyý 1öà›øD¯Äoß7LâÊ{ž)ñK_þ²ÄVyh•÷Vñ¬õ8q¯Uª˜õð/Æu ½â Ñxˆ=’Ϙ >Cww­Š¿JØÆVq§ñ`;.Ú½ß+Ü*ï;¾JùWÇ=Ózöˆ=Zù­‹{lIã!öH>c‚ø Ü}ܵ*þ*a[Åýýï[O`ÎßüY‰ï_9üŸ÷ïÿ5x}§»ïއC¹ãÁvµfµViîZ•°­âNãÁv\´{5¾W¸UÞw|•ò¯Ž{þ¦õìÿz´ò[÷Ø’ÆCì‘|Æñ¸û¸kUüUÂ6–Õ½·7ü_öm7ÛP@¾´Îs7]1¼Þ¾ÚaÐU“‚×φ,-OƱJx¡E[åp‹pÖ|˜ewï¾' ð¯ïqšœÓ>{„;ô?²ýûåéØå——ø‹koÒE-Ëú¾ÓxM$îMàå°)þ9 6° Üc4±GòÄgàîã®UñW ÛXVw¶ã µj4|¯xYßw|UНŽ{ñÆÕ*à_M§¸e¸Ç¶4bä3&ˆÏÀÝÇ]«â¯¶±¬îW^ùs8ñË_”8lh‡ÄÎŽ;:†HÞµ`¡Ä‘k.%qô§FKl•‡²nÇz³¬î]Ï…ñ¼CÏGä”.:뢪§6uêTY¾êª«V]¯l Ëú¾S6§¼÷¼EëÛþõyåµ6î±$‡Ø#ùŒ â3p÷qתø«„m,«;ÛqZ5¾W¼¬ï;¾*ÅWǽxãjð¯¦SÜ2Üc[±GòÄgàîã®UñW ÛØ.î=ñ˜Àvò!;ö ¿za«Yµ²~®ÿLZk‹²¹/ZÆkǯG äßþø÷Ö­óhÛå}§ÎÓv_wßK€¿?î±;‡Ø#ùŒ â3p÷qתø«„mlw¶ã¦Õ«Ñxð½‚íò¾ã«XuÜë7Ës üóÔ¬}_¸ÇV4bä3&ˆÏÀÝÇ]«â¯¶±ÝÜŸyîÜÿø}%vîÛ÷ó¶¬5W+Ûàš¼ÅW,›{σEôÚs¯—¸öÚk·¸põÃo·÷êg[ž¥¸û^ ü}üqÝi<ÄÉgLŸ!€»»VÅ_%lc»¹Óx°?­Zƃï•k·÷_ÍÚ«ã^»Ukâ_„êÀûÄ=6¢ñ{$Ÿ1A|†î>îZ•°íêþü Ï ä^Ç|LâÐ+¸ö†;"žÿÖs²Â§®%qpgøè [åörÙ>çvb%ß‘·{׌"Ô3)Œ¿v9IòOzdÉåò9¼v}ßÉG§¸½à^œm-{Æ¿¥ü×Á=6¥ñ{$Ÿ1A|†î>îZ•°íêNãÁvµZ5¾W¬]ßw|U®ŽûÀFE®‘º•÷{lCã!öH>c‚ø Ü}ܵ*þ*aÛÝý¥—_ÐÝ>ùQ‰CŽ¿óá¡#¯aŒîpXç‚õd½Ž‘&Âû°ÉI–°HÑî¯^3=œõ+]çõÝá0óµÉW;Dâžá_}sžÄTÚý}§¬×wß+ƒ¿?î±;‡Ø#ùŒ â3p÷qתø«„mlww¶ã©UªÑxð½Ríþ¾ã«[¹:î•m,–ào¡üθÇ&4bä3&ˆÏÀÝÇ]«â¯¶1÷W_{U`w>dG‰OÜù¸Ä¹'…; –;?Üñ°æ¹áއÎÑÜñ`;m«Ýx˜yñT9¡§¿-ñg».’¸Îrñy®ûÓ%å…›ïú{X¾Î:ñ mš¥ò¾S¶Ë‡»ïÁßÇ÷ØÆCì‘|Æñ¸û¸kUüUÂ6¦âNãÁv\•½ß+”Êûޝò;«ãþNËWð·Ôþw-ÜÿmñÏh<ÄÉgLŸ!€»»VÅ_%lcjîKŒ ÿ§~Æ ôÂ÷˜ï†;Ö8k]y¡sÉN“ Qô`““hÁ"Vî³ï}StÞøuøÎ‡{ w>¬?6 íqãyòéÓ¯”¸ûmþ˜ÚûNY.'î¾WÜcw±GòÄgàîã®UñW Û˜š;ÛñUÖj4|¯Ljï;¾Úÿ®Žû¿-<žáï¡>hî±;‡Ø#ùŒ â3p÷qתø«„mLÅ}ìÒKìÓŸ™+q¹‘±ó2ç‡_Xõôð쇎ᎇX¨½2«ÆƒªÍ½;üºÅÜ[_——&l¹@âÔ7{%ŽÛã ‰_™0Ab»?¤ò¾S¶ëˆ»ïÁßÇ÷ØÆCì‘|Æñ¸û¸kUüUÂ6¦âNãÁv\•½ß+”Êûޝò;«ãþNËWð·Ôþw-ÜÿmñÏh<ÄÉgLŸ!€»»VÅ_%lc»»oúÞõ´gö´~ÄbP¯ÆEáÉìùá_¤Ç¾–¬×Á¯ZØDãjV‡3Âw‰¬óä†r†×ÿì‰Çõq‰wÿî:‰[ìð1‰_qµÄvh÷÷²^?Ü}¯ þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶±ÝÝi<ØŽ§V©FãÁ÷Jµûûޝnåê¸W¶±X‚¿…ò;kà›Ðxˆ=’Ϙ >Cww­Š¿JØÆvwŸ:uª€Îœ9SbGGG¿qÉ%—”×wÜçÃGÖ<$üÚ…¼XÀƒÕཥwiå¾àòpG̓·ýU¼F¹ýâÊ+$óðÝŸûâW¢åíš´ûûNY¯î¾WÜcw±GòÄgàîã®UñW ÛØîî4lÇS«T£ñà{¥Úý}ÇW·ruÜ+ÛX,ÁßBù5pMh<ÄÉgLŸ!€»»VÅ_%l#îý{¿÷ï‘Cˇ -æÎ«ÀýŸeº¯íÞó‡`û½Ï|_žl¿ÝöU±-Z$ˇ ¿®Ruå6XÈûŽÏEÄÝÇ]«â¯¶÷Ø›ÆCì‘|Æñ¸û¸kUüUÂ6âÞ¿7‡þ]ÚåU¾W’÷Ü}ܵ*þ*aq½i<ÄÉgLŸ!€»»VÅ_%l#îս߷ý&²Âàƒº%Ñÿ¿H÷¼~cÞô²ÞR›©¾ã¾¥E®é \©(÷ÿãd¿q‰ê×'|#AÝO™÷ŠX÷"Tkß'þµ[å¹&î±&‡Ø#ùŒ â3p÷qתø«„mĽº7‡ê>­º”ƃï•ã}ÇÇww­Š¿JØFÜco±GòÄgàîã®UñW Ûˆ{mÞ[î´…¬Ø½÷\‰£Â¯^,˜:_òéç½ qä–KKwèJz(êð@uS_ž·{÷›áN‡ï[Uhmß—<¤]áüyß©Sð˸ <Àîñ¨ Å¸Ç°4bä3&ˆÏÀÝÇ]«â¯¶÷Ú¼i<ÔæÔ*kÑxð½R¼ïøøãîã®UñW Ûˆ{ìMã!öH>c‚ø Ü}ܵ*þ*aq¯Ï{›]Þ/ÌÞüu‰oý$ÜépÒáW Κ¿Œ¼>îã+×´ã¼?×T”•Õë¾pf¸£¡«ï;<ôÅE/‡;^F¼6\Tÿr×?$.¿üò(Wà}§ N‹p/·†]ã_R«à£Òxˆ=’Ϙ >Cww­Š¿JØFÜëó¦ñPŸWYצñà{exßññÇÝÇ]«â¯¶÷Ø›ÆCì‘|Æñ¸û¸kUüUÂ6â^Ÿ÷ ÏO– ¶yߺ§ß+ñ'…ýœ>§ï;>±Jxa€Çz?°;×(P«û3_~Jö8¼7ÜѲöòƒ%ï²!ßh¹Å’áöðú‚…áÎˆŽŽð 5Nr«ñ¾ãsÉq÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸×çMã¡>¯²®MãÁ÷Êð¾ãã»»VÅ_%l#î±7‡Ø#ùŒ â3p÷qתø«„mĽ6ïi¯¼,+n±Q¸Óá•ÏÏ‹6¼äá~kÖy²Â'ß-¯”Ôú¸Òö¼Þ˜@­îóŸ ×ùÉ3ž—B·êíüî¸î†—.%/\ûûû%n°Áñ d‘ï;‡Y‚»u¿…ðï—¥ðq‰i<ÄÉgLŸ!€»»VÅ_%l#îµyÓx¨Í©UÖ¢ñà{¥xßññÇÝÇ]«â¯¶÷Ø›ÆCì‘|Æñ¸û¸kUüUÂ6â^Ýû•—Ã묵†¬8a뉽‹Ãÿéï4DòG¦‡ÿó?iÌ’’¯ø¹U%ôPëàöÃòúuŸqÖsRh¯eJüþGÂußû·áN—þ~yX¾×^õPbkó¾ãsÁq÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸W÷¦ñPݧU—Òxð½r¼ïøøãîã®UñW Ûˆ{ìMã!öH>c‚ø Ü}ܵ*þ*aq¯î=gölYáÜsÏ•ØÑÙb߯è¯tö½þ§¿Ý!˧mþ¢Ä¡ãÂú’ôóÐèà~vÅKu4êÞ}m¸Óe·õwj·_÷3‰Û­4Wâ¸Ý¿%ñÄO’ÈCÿ¼ïôïRô«¸-\}ÿøW÷)j)î±,‡Ø#ùŒ â3p÷qתø«„mĽº7‡ê>­º”ƃï•ã}ÇÇww­Š¿JØFÜco±GòÄgàîã®UñW Ûˆ{1Þû|boÙñsë<%qèJýjôp¿;ãÅšêu_x_¯ìû„¿&ñý‘øðCIÜîÛH<ð€}%^ò³_Hä¡Þwúw)úUÜ‹®¾ü«ûµ÷X–ÆCì‘|Æñ¸û¸kUüUÂ6â^Œ7‡b\óÚ+‡¼$Ûï;¹5»îÍ 6·=þÍù5º5Ø#ùŒ â3p÷qתø«„mĽXï>µ¿xúÝIì\9¾ó¡ÞÀÅm:{¯Õ}þó eÛ9ÛKüéù?­Šôâ‹á»=V[mµªë¥¾÷Ÿ€»»VÅ_%l#î±7‡Ø#ùŒ â3p÷qתø«„mĽXoÅú6ºwÊå³ï;ù8Ö»ÜëËw}üóõ¬uo¸ÇR4bä3&ˆÏÀÝÇ]«â¯¶wïC9T ýc|øN€¡«†_»ÐÀïÚaiY>ù’i×9g‰C—ªþ«²u ¨ûÚVïwÛŽ‹åõžË‡H|ôžIý®Ç‹ ð¾Ó˜[³[áÞ¬`sÛãßœ_£[ãËÑxˆ=’Ϙ >Cww­Š¿JØFÜm¼i<Ø8×Z…ÆC­RŬÇûN1®í÷„Š]ޱ¾•öŽ{,Cã!öH>c‚ø Ü}ܵ*þ*aq·õþÄqGHÁ‡—yPâä˧HÜjÉn‰¾þ¥}¥o¬-ù°e‡Jä!_=7 –‚Wž~â½ïyo¾øÞxßñ¸û¸kUüUÂ6â{Óxˆ=’Ϙ >Cww­Š¿JØFÜm½i<ØzWªFã¡’ŒÍë¼ïØ8g«àž±Íñ·õÖj¸«Dˆ4bä3&ˆÏÀÝÇ]«â¯¶w[o­¶ÇÞ;ËÓ{~ÿG‰oNw:Œ»(|§À¸SúîxXŽ;Ô,ÏX©ñ0ÿ¾…Ræó[/ñ³G~6ϲì«O€÷Ÿ¡€»»VÅ_%l#î±7‡Ø#ùŒ â3p÷qתø«„mÄÝÖ[«ÑxP ŸHãÁÇ]«ò¾£¶w[ïl5ü³"69î±3‡Ø#ùŒ â3p÷qתø«„mÄÝÖ{âí·HÁs'|\âây3%N<,Çø„;Æž¸–¼0|ùaaM ̼–lßýr—Ä×ï~S⣃÷Ìá;66Xsyý±ç^•ÈC1¼ïã:Ð^qH¨Øåøë[iï¸Ç24bä3&ˆÏÀÝÇ]«â¯¶w[o¶ÞZƃJ”#ò¾ãsp÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸ÛxßpÝ5R謯%ñ';Í–xô­¡þ…ÿâÇ® ¿¦°ÂÉá;†ãއ ÓÜãä¯>-;øÐ؉Ͽ¾Sã—û†ý®76Äa§‡; æw-:;;Ãsà}'WΚw†{ÍT…¬ˆ!¬î÷˜ˆÆCì‘|Æñ¸û¸kUüUÂ6ânãMãÁƹR•d|^ç}wߪŒ{Üc÷Á;î¸ch½Ç¯»e?ü°ÔÞtÓMÝŽ!åÂøû\}Ü}ܵ*þ*aq/Ö»»;|wÀsφqŸ=ë­P0ÜØ0h~Wø…Ñ£FôHøë@ï2a…!Kö­Xìa&³wýŽ‡Þ·ÃÛ­ŸúÓÂïÙdsY°ÄKÄ+å"ÀûN.Œuï÷ºÉrÝÿ\9kÞî1‡Ø#ùŒ â3p÷qתø«„mĽXoÅúÖ»wõг>ï;Ÿ´WÜ*v9þÅúVÚ;î± ÿÕ"öH>ã– Ÿ!€»»VÅ_%l#î¶ÞÙj•üO=ûTYõæÞ ±ó½á»²Û“7&ðÄ—Ÿ• G-X$ñ®ÃÂ)ß¼)É:å2‰ûì³Dò¨4îó­ÂÞ²¸gElsüm½µî*"‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[­’?‡¬T¾9‡|=ëÝ[¥q_ï~X¿>ÜëóÊ{müó­m¸ÇN4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµü¿uÞi²ÉÓ¯“رQväõ,x=|§ÆŒïΔÍ{ä1‰;~` ‰ã¿*ñƒ‡Ÿ"ñk§„;O$á!7Æ}n…ØQ$€{ÄažàoN.qÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjùÓxÈŠ5—ÓxhÎ/¯­÷yÕa?±î±‡u†¿µx¨‡{ìNã!öH>c‚ø Ü}ܵ*þ*aq·õÎV«Õÿì‹Î–M5ù*‰›öÿks;C–¿='|wÁ¸CWÊ–L:_øópúË-+Oî¼óÎÈãý÷”|»íwø™cŽ‹–“ä#Pë¸Ï§{QÜUÂ'â»@\•ÆCì‘|Æ“ÏÀÝÇ]«â¯¶w[ïlµZýiþ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµzýÏÿŸóeW>ù3‰›-–øöo«=õ†äO.·”Ä>ý.‰©?tßœ¾søw…â¼sΓ8qâÄ~iæÍ›'¯5ªß弨œ@½ã¾¹jl­¸«„OÄw¸*‡Ø#ùŒ7&Ÿ!€»»VÅ_%l#î¶ÞÙjõúÓxÈ Ö–Óx¨ÍÉj­zǽÕqµ{Ü}¯0þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµFý¿ñE²«\qºÄ‡„_iØzl¯ä'Ïw<Œûْ̪Iå]O„_±ØcÉ}ä¼Ï<åL‰º'…WàÉâ_ n•]ã^Ç`þÈý”À=F¡ñ{$Ÿ1A|†î>îZ•°¸Ûzg«5êOã!+ÙNã¡ïW÷ÞÇÝêõq÷½‚øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³Õõ¿àìÓdW“oùŽÄ쾓àê„ '¾²¤îZ•°¸Ûzg«Õëÿ£ Α]<~cˆ?ÜáÍh—×<Ò /öÝñpl{ßñÐ=+ÜÙÐ5cœx×´GN¿FqÇ5wÉë+¯¼r€é{¬×=Ú˜¤iü›&lh¸7Ä–ÛFøçFY׎p¹h<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjõúÓxˆi<Ä­’Õ;î[å¼Ê~œ¸û^!ü}üqÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjµúÿqâDÙôàö–8jhØSï¢Åò¤·7Äù »%_~ƒ¥%.u츰b›Cww­Š¿JØFÜm½³Õjõ§ñähc‚ø Ü}ܵ*þ*aq·õÎV+ڟƇì˜+C^ô¸/Ã9–ñp÷½*øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³Õ¬üoýíRúÔ«N–8äÃÕ¿óaÖþ)ëÜ4Ü90|lßÏhdOÀ9ï¹1üšÅ’/‡óÙv©åˆ&Ï"ñ€“/•¸ï¾ûFGjå%ù—þÿ¢0}‚»)÷;Šáÿ“p™i<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjVþ4hCww­Š¿JØFÜm½³Õ¬ý'Þ9Qá„K&H²sü«o|?üjÆ›ÏÌ—åïúúZ‡/?LbY>Žûøm¿"‡ô‰C”xηÃwY\xþ¹’ó¥“$žrjx]’ÿ}°v×ºÄ €¿ÏHÀÝÇ]«â¯¶÷Ø›ÆCì‘|Æñ¸û¸kUüUÂ6ânë­fíOã!\k÷ìuO=Çßgàîã®UñW Ûˆ{ìMã!öH>c‚ø Ü}ܵ*þ*aq·õÎVóò¿ëž»äPŽÿá$Ξît8yåðk߸;|wÂ2úîxWŽ;æO] Ç»Å«ï—ø³\!1ûpï=÷ÈK+®8NâZk¯­âåD þ>ww­Š¿JØFÜco±GòÄgàîã®UñW Ûˆ»­w¶š—?‡äRLœþëIöº+à5î‹=«òïwßk„¿?î±;‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[ÍÛï]·—CúpG¸CàØÍ¯C¬ú?áW!–:~MY>büðì¡»äóþ§Gê>ñÀ“MÕ÷voêàÛ`cü}."î>îZ•°¸ÇÞ4bä3&ˆÏÀÝÇ]«â¯¶w[ïl5oÜñ“¹÷¸·8Ç2ÖÀÝ÷ªàïã{ìNã!öH>c‚ø Ü}ܵ*þ*aq·õÎVóò?öȃäP6|óf‰Çl<7:´5~îxu\¸ãaäʾw<ôÞ¾sâ’.—ãÜlÓÍ¢ã­7ñr¯÷8Ûu}ü}®,î>îZ•°¸ÇÞ4bä3&ˆÏÀÝÇ]«â¯¶w[ïl5/|ÇCv,Zæ^ãÞòËX wß«‚¿?î±;‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[ÍÚ¿=w•CxóÉ»$n´B¯ÄÞEᎂîE‹%¿ééðúÒÞ-ùˆ•|îxXðPøN‡#×;JŽãøcŽ—Øìƒµ{³ÇÛnÛãïsEq÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸Ûzg«YûÓxWÀÚ={ÝSÏñ÷¸û¸kUüUÂ6â{Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³Õ¬ýï¹'üzŃ>(‡ÒÑÑÑo>"ÜáðÃß~?,ß'üÚEöøÍç¿Ô%›Î9Äîi $Cww­Š¿JØFÜm½³Õ¬ýi<„+`íž½î©çøûŒÜ}ܵ*þ*aq½i<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙje÷nòsrÈû··ÄÎýÃw@dÏ£ÞüñcžM¶_=l¹Í¸pGÅzcC¾ìÈ?þ»¥åÉ˯½^Èé±ìî9fiwƒ¿Ï¥ÁÝÇ]«â¯¶÷Ø›ÆCì‘|Æñ¸û¸kUüUÂ6ânë­VvÙ+Fž‡@ÙÇ}çXÆ}àî{Uð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°¸Ûzg«µŠÿ”§È¡ïùÙ=$vØÜ _](ûyñ¬ÉÏÿP¸ãá“Åû]✡²üÕ†;F-y³­âÞìy–u{ü}® î>îZ•°¸ÇÞ4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµVñ§ñ½räʹʸoæ˸-î¾WÜcw±GòÄgàîã®UñW Ûˆ»­w¶Z«ù¿2í9…]?±‹Ä¡Çw(èù={ü“òtäÊá×1VùÊ»uQ¿ñµó¦Èë[wôHüõžáW-6½bŒä—Þp§Ä÷½ï}›}h5÷fÏ·lÛãïsEp÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸Ûzg«µš?‡ì$oD ÕÆ}#çXÆmp÷½*øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³ÕZÕÿµ×_“SÙñÀKvx8³—O}Fž|y½n‰½¾“aðj£$Ÿõû×%®úµµ$vŒ"qܽï’xøîIœpüç%¾oüàðú©—H<ðÀ%6ûЪîÍžwY¶ÇßçJàîã®UñW Ûˆ{ìMã!öH>c‚ø Ü}ܵ*þ*aq·õÎVkUÙ+I^@«ŽûzαŒëâî{Uð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°¸Ûzg«µºÿ¬Y³ä”Ö[sœÄ÷w:¼:'|÷ÃQ¿ w,¬½tÈÿ¾"bÐF—¾GÖ_ø‹ òÇ«î'+¬°‚Ä3fHÜb“°Þ™ß9_òÃﻵB²ÆZݽñ3/Ç–øû\Ü}ܵ*þ*aq½i<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙj­îOã!{EÉkhõq_Ë9–qÜ}¯ þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµV÷ßn‹pGÂ?-§ö_«„_¥¸9|Õà3îg|fø*ˆAÞ¾ÓaüžëÉ‚Ó÷;[âî»îV¬ðØÓöÛÙÙYaú^nu÷úζ|kãïsMp÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸Ûzg«µº?‡ì%¯E ÕÇ}-çXÆup÷½*øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³ÕZÕ‹Ö•S9ô]ÏKÜd…pGBï¢p†÷¿âÝ/†¸ýê!~çéò䓟8FâyßúnX`üتîÆL…•ÿ0Úª;ƽ*Oá ñ/œ¸ß¸Ç,4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµVõ§ñ½’äõ´ê¸¯ç˸.î¾WÜcw±GòÄgàîã®UñW Ûˆ»­w¶Z«ù?ôÐCr Gy¨Äç'‡/s¼8Üê0fx8ÃQÃBc‚ø Ü}ܵ*þ*aq·õÎVkÿk¯½VNí¦ßþVâ#†Ÿ³xéåpgÃÐ!‹åõßN¼Wâ6Ûl#Ñë¡]ܽüš­‹³‚m{cnym…^’õí÷Ø‹ÆCì‘|Æñ¸û¸kUüUÂ6ânë­Ö.þ4²W–¼š@»ŒûjçXÆe¸û^ü}üqÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙj­îÿÍo|]NéÉGÿ&qÒ¤I'O!qµå†Jœ?b°Äî{˜ÄŸ|÷§½ZÝÝË-¯ºøç%Yß~p¯Ï+ïµñÏ[´¶ýá;Ñxˆ=’Ϙ >Cww­Š¿JØFÜm½³ÕZÝŸÆCöŠ’×"Ðêã¾–s,ã:¸û^ü}üqÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙj­î¿ÒòËÈ)í²Ú\‰¶î–¸ÞØp¦s†¸üùᎇuö__^8ÿˆ %î¸ÃŽaãÇVw7æÊ½þ¹“Ö´CÜkb*l%ü £­ºcÜc±GòÄgàîã®UñW Ûˆ»­w¶Z«ûÓxÈ^QòZZ}Ü×rŽe\wß«‚¿?î±;‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[­]ü?÷éÃåÔž¹ÿf‰7í9KâˆÎpÆ+~ˆ&ñÜÓÎ +Vxœ7ož,5jT…5ê{¹ÝÜë;{ÿµñ÷¹¸û¸kUüUÂ6â{Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³ÕÚÍŸÆCö “÷'Ðn㾿s,ãk¸û^ü}üqÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjíâÿÀƒÈ©uÁ§$Û%Üáðú§H>|jøÕ‹ùï_^òq{® qáïKüéñ—HÜz«­%êÃÿ½ƒ<Ýé#»Jüüñ_ÑEMÅvqo Áqcü}ðq÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸Ûzg«µ‹?‡ì•%¯&Ð.ã¾Ú9–qî¾WÜcw±GòÄgàîã®UñW Ûˆ»­w¶Z»ø¿g› åÔF~­bP¸áá_§ûæoÈóaË„Ÿ¹½éÉ-\$qȯFH<ñ3_•xÈ!‡Hüà»Ãú»sŽäÇ}á ›}h÷f¼¶ÇßGww­Š¿JØFÜco±GòÄgàîã®UñW Ûˆ»­w¶Z»øÓxÈ^Yòjí2î«c—áî{Uð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°¸Ûzg«µºÿçNüœœÒŸ:/qÔÚáÎ…ìyþ+_é0HïˆÐ;^;ïYeÓ¡a…ëöê’|»_--ñ«n—¸ÕV[Ilö¡ÕÝ›=ïíñ÷¹¸û¸kUüUÂ6â{Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³ÕZÝŸÆCöŠ’×"Ðêã¾–s,ã:¸û^ü}üqÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙj­êëí·Ê©œô«ð Ã>Ô÷ÝÙÌæ}w<¼u÷LY2õªé¹wX°÷zñƒO ùâÅ}Æ‹ÎZÕ½á.Ù†øû\Ü}ܵ*þ*aq½i<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙj­êOã!{%ÉëhÕq_Ï9–q]Ü}¯ þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµVóŸ;w®œÂÖ»…ïZ~Dæç+²'˜Éw…_±xôsOÊ’÷¿;Ü)ñ¡•zC¾rØ`hß _{tyáÁGŸ rzl5÷œN»4»ÁßçRàîã®UñW Ûˆ{ìMã!öH>c‚ø Ü}ܵ*þ*aq·õÎVk5Ù+HÞˆ@«ûFαŒÛàî{Uð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°¸Ûzg«•Õ¿·7Ü0iÒ$9äGyDâU×ÿ\âŒ÷¿,qä*üŠ…¬õ}_ÕÐ;/ìîóóea×äy=÷¶Ä>^?äàý$¿ôòk$æõPV÷¼Î¯ìûÁßç áîã®UñW Ûˆ{ìMã!öH>c‚ø Ü}ܵ*þ*aq·õÎV+«?‡ì•"ÏS ¬ã>Ïs,ã¾p÷½*øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³ÕÊâøûÈ¡=üÐß$>õ|¸£a£U—’|Ãe»$^ýȉ›\¼¡ÄÁõ}ǃlTÇC÷uaå.ü×ww­Š¿JØFÜco±GòÄgàîã®UñW Ûˆ»­w¶ZYüiîZ•°¸Ûzg«•ÅŸÆCöÊ)P–q_ä9–q߸û^ü}üqÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjeóàþûå?¶ÛG$~s›ð+Go~Žâ[†Èë÷m<^âØí–‘XôC׃á·ã·þŠ”úäáŸjªdÙÜ›:™ÜŸ‹†»»VÅ_%l#î±7‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[­lþ4²Wˆ¼²û"αŒûÄÝ÷ªàïã{ìNã!öH>c‚ø Ü}ܵ*þ*aq·õÎV+«ÿ?º@õ{?þ†ÄÕ»çIÜ{õ^‰çõ,+qÜ¡+I´zè¾:TúýåÉŠ+®ØP鲺7t2-¸þ> ww­Š¿JØFÜco±GòÄgàîã®UñW Ûˆ»­w¶ZYýiww­Š¿JØFÜco±GòÄgàîã®UñW Ûˆ»­w¶ZÙüiîZ•°¸Ûzg«•ÅŸÆCöÊ)P–q_ä9–q߸û^ü}üqÝi<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjÞþ÷ýå>9¤£/:Jâ°]Âw#dÓ;ï×+‡ðúES$~`tøu‹_í¶(:´ï*ù2»„_µ8áÄ“¢åšx»ëq¤ñ÷¹ò¸û¸kUüUÂ6â{Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³Õ¼ýiÜñ°Õ*áp8Zžœ~É-·ß~û° óèíž9œäRü}.9î>îZ•°¸ÇÞ4bä3&ˆÏÀÝÇ]«â¯¶w[ïl5oÜñ“¹÷¸·8Ç2ÖÀÝ÷ªàïã{ìNã!öH>c‚ø Ü}ܵ*þ*aq·õÎV+ÊÑ¢p'À¤I“¤ä£>âÕøç?ÿ^â¼]ï@Œ^w”äe˜ÿr—âÜççK\4y®Ä®Éó$vÎ wBL™>[òaÆIÌ>åž­CÞ¿þý»ý*îE Wß?þÕ}ŠZŠ{,Kã!öH>c‚ø Ü}ܵ*þ*aq·õÎV+ʟƇìX+S^Ô¸/Ó9–ñXp÷½*øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³Õòö?ìÀ}¤ÄÕ¿¾QâF«.)qã¯Bl¼l¸CàÊÇïW¼}Àª²|©÷.!±Õæ=îˆØyЮr*ß;óÂ~O)o÷~‹ðbEü+Òº÷ByÜ9þ²î1+‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[-o4²c¬ŒyÞ㾌çXÆcÂÝ÷ªàïã{ì>xÇw ÿÉ2~Ý-{øá‡¥ö¦›nêv )Æßçêãîã®UñW Ûˆ»­w¶ZÞþóæ…ï:xäá¿K©•G÷H\mLøÎ­ÿÌÌðìÕáá;†íÿ»týV‹‹Þ­Zo•ð«K/½tt y»G;'Pÿ‰ Y÷BXkÞ)þ5Såº"î1'‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[-oA˜ÆCv¤•+Ï{Ü—ëìÊ{4¸û^ü}üqÝù¯±Gò·ù Ü}ܵ*þ*aq·õÎV+Úÿ«_8ZJþñ†K%N<¸[âïŸ Grâ+á; V8zµðB›<.î w<ôþ¼CÎè‘?‡_õÐÓ+Ú]ëûÀ¿—¢_ŽháêûÇ¿ºOQKqei<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjEûÓx ñseÈ‹÷e8Ç2î¾WÜcw±GòÄgàîã®UñW Ûˆ»­w¶ZÑþ?ûÅåRòôë¾)qúÄ—%NØ2Üðç:%_í¬u%¶ÛüÇÈ)í³ô¿}ò·%VrŸ?¾,9r¤DЍä_L5öª¸«„OÄw¸*‡Ø#ùŒ7&Ÿ!€»»VÅ_%l#î¶ÞÙjEûÓx ñseÈ‹÷e8Ç2î¾WÜcw±GòÄgàîã®UñW Ûˆ»­w¶ZQþS_š*¥vÿìG%Ý?®üÆ%aùë“æÊ‚õ. ¿þ0hp¼^»dÝ·„;<.?ùçrJ'|õ‰7ß|³Ä|h[‰?ò(‰G~ú3y(F ¨q_ÌѶÏ^q÷½–øûøã»Óxˆ=’Ϙ >Cww­Š¿JØFÜm½³ÕŠò§ñKÓxˆ=¼³¢Æ½÷y•½>î¾WÜcw±GòÄgàîã®UñW Ûˆ»­w¶ZQþ;ﻓ”zõ/IºÌÐliÉç¿Ü%qä*#ú]Þ./öÎë çyÓ‰o½8Kâó“ÃÏ{l³Zð9ìäÉëGq„DŠ(jÜs´í³WÜ}¯%þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµ¢üi<ÄÒ4bﬨqï}^e¯»ïÂßÇ÷ØÆCì‘|Æñ¸û¸kUüUÂ6ânë­–·ÿwpž”¸ì¹ŸJù¾áÙ’Iæ=³{ä¼_ûî”pþ3Jœö¥E7¼t)‰×þþ~‰l°DŠÈ{Üs”í·WÜ}¯)þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµ¼ýiCww­Š¿JØFÜm½³ÕòòŸôI²ëþq°Ä¡kÓŸ§ÈVÈ/ ¿bñÖÄ7dÞüšÄë÷w8œ}oØðÆBa¸3dÎÜðáU‹ÈkÜu|íº_Ü}¯,þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµ¼üi<IJ4b²eyû²WÙwß+„¿?î±;‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[-/ÿ-wÚBvݳ¦%,È ¯IDATï<‰CF É–J*ïþg·œï'>-qË5:$n¿Røu‹ÛÂ˃NÝ.°üè•ÍäÉïý{xÇBò÷…dîwß‹Š¿?î±;‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[-/±,‡Ø£lY^ã¾lçUöãÁÝ÷ áïã{ìNã!öH>c‚ø Ü}ܵ*þ*aq·õÎV«ä?{ölYõ…^øè£†øÐ_ûâŸxê)‰#?¶œÄe¶ ¿Î I‹{Ãw<,Z¾Óaîäù¢Ñ59ÜòZßw? îë}æ³GÉòï}ïV³;õJãÞîÒ¬„»ïuÇßÇ÷ØÆCì‘|Æñ¸û¸kUüUÂ6ânë­VÉŸÆCVª¾œÆC}^ÖkW÷ÖÇ‘Z=Ü}¯8þ>þ¸Çî4bä3&ˆÏÀÝÇ]«â¯¶w[ïlµJþ?úÁE²ê·N=QâGÖ ßÙ°ñ²s%ßxۧ{^ ñÒQᎇqŒ/ðXUàÙs§Èòµ'¬.±ûšð+ ·]ü;ÉW^ye‰<#PiÜS½ªî*áñÇÝG ®Jã!öH>ãÉgàîã®UñW Ûˆ»­w¶Z%Y©|sùzÖ»·Jã¾Þý°~}¸×ç•÷Úøç-ZÛþph<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjùŸþõ“d“k¯ø‘Ä›ößý°Ú˜°§ÛŸ ñSŒ’'+NxwxǪÙÆÃ‚WÊúk=¾¾Ä¯øMÕíYØœÀ@ã¾¹½³u%Ü+ÉØ¼Ž¿s¶ Ø#ùŒ â3p÷qתø«„mÄÝÖ;[m Y±|rù86º—Æ}£ûe»ê¸W÷)z)þE ÷¿Üc±GòÄgàîã®UñW Ûˆ»­w¶Z­þ“ú~Õb‡í¶’]œ´møúƒÖ¿Ê°Þ¥òú:†±ÏÖ!²]Úu_·<=éçJ<ä€Ct1GZÇ}Ž%ÙÕÿ àî; ð÷ñÇ=v§ñ{$Ÿ1A|†î>îZ•°¸Ûzg«ÕêOã!+×\Nã¡9¿f·®uÜ7[‡ícÜcë kñP÷ØÆCì‘|Æñ¸û¸kUüUÂ6ânë­V«ÿ 7ß ›~ó†S$¾=uºÄ¦Î‘øø´E×c‚ø Ü}ܵ*þ*aq·õÎV«ÕŸÆCV®¹œÆCs~Ín]ë¸o¶ÛǸÇÖþÖâ¡î±;‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[m ÿY³fÉ&ÿµÏ$?|p´‹·[òé—½,ñ]_^C∕†Gë‘Ä5æ¿Ô%l6mk‰?ÿQß-}»¹üâŸÈ³þàB‰÷>ø°Ä#Fô­A¨&0и¯¶-ËÀ½q»<¶Ä?Åú÷{lFã!öH>c‚ø Ü}ܵ*þ*aq·õÎVÈŸÆCV,ŸœÆC>Žîe qßè~Ù®ºîÕ}Š^ŠÑÂýï÷Ø…ÆCì‘|Æñ¸û¸kUüUÂ6ânë­6ÿ¾Gî+›<µÎ$‰#Æs'CÖ°‘| Æƒîsá]½òô+;ž(ñçÿs‘Ä1o?-ññ·–”øÔ Ó$òP›À@ã¾¶½°V½¸×+–ïúøçëYëÞp¥h<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙjùÓxÈŠå“ÓxÈDZѽ 4îÝ/ÛUÀ½ºOÑKñ/Z¸ÿýã»Ðxˆ=’Ϙ >Cww­Š¿JØFÜm½³Õ*ù_vÕ¥²êwï;WâÈ­‡f7%oB ÖÆÃ¬Û_—*¯ÿæ5‰7ì¿Xâ+³Cñ;†ï%O®øUøÕ‘ð* T÷mÇòæpoί٭ñoV°±íqÝh<ÄÉgLŸ!€»»VÅ_%l#î¶ÞÙj•üiîZ•°¸Ûzg«eý§¼8EVùر»Kº_v ò<*5Îì–Ý¿vá ÷\¹GâwZ•=öá×+6<äc‚ø Ü}ܵ*þ*aq·õÎVSÿ«¯¾ZpÔþߨ~†Ä¡Kwf7!ÏA Rãáùo<'{6g¡Ä®Šm¿R¸ãa«•C~äïFË“Koü³ÄÍ6Û,,à±&÷'N¬i}VÊG÷|Ý þÊ5·î±‡Ø#ùŒ â3p÷qתø«„mÄÝÖ;[MýiþùzÖº7Üc)±GòÄgàîã®UñW Ûˆ{±Þ³ßzK Œ_qy‰ŸÙ$üj¯êžqOˆçíâî&OV9mð… Ôx¨è¼'Â,»Ú[V=çç ´ ËÿC€÷ÿÀ0|Š»!v?¥ðïÅà%Ücd±GòÄgàîã®UñW Ûˆ{±Þ4Šõmtï4•Ëg;Þwòq¬w/¸×+–ïúøçëYëÞp¥h<ÄÉgLŸ!€»»VÅ_%l#î6Þ/½ô’Úã#”¸×*¯J¼grøÎ€[DZÄÙƒåÉÆ—l^à±fzPÝ·…ïæ¸dÂåòÒ›o¡‹ˆUxß©‚Sà"Ü Ä­a×ø×€TÀ*¸Ç¨4bä3&ˆÏÀÝÇ]«â¯¶wo6εV¡ñP«T1ëñ¾SŒë@{Å} ¡b—ã_¬o¥½ãËÐxˆ=’Ϙ >Cww­Š¿JØFÜm½µÚÛo)O| üÊųdž9ßòÊðk KyMY>bÅẠ1G¼‹ºÉQu^7Jâ_'þ-Ç£lß]ñ¾ãsmq÷qתø«„mÄ=ö¦ñ{$Ÿ1A|†î>îZ•°¸Ûzk5*ái<ø¸kUÞwTÂ6ânë­†VÄ&Ç=v¦ñ{$Ÿ1A|†î>îZ•°¸Ûzßùç;¥à.þœÄçïAâ7J\et¸óaÁ^«H¾ÌKIä!_¼zTó&…_¹8då#䥯}ékº¨ß¸pa¸ÞÆ…_1éw¥6~‘÷Ÿ‹‹»»VÅ_%l#î±÷ÿÿÿ¬#}·@IDATìÝw UùðñôJH!¤‡DzM0 ½÷^¤£H…á‡JéJ—.EM Ò¤·@. jH!!ɽɽ7åÕçäç²wwgvæ<3s¾ùcŸ=³3ç™ýœ3»3Oöî¶]ößm2ôoçw–½3fL†ö*œ]Á_g¬q×q·Yñ·~#î~½Ÿzæ)IxÒµ'Hœüâ‰íf7IÒÝœ4î?DÚ½¿µ¢Dn’˜páTépS‡'ÒqCÝ"éç;ƒ’xúɧ—í·©ÉŒw§NÊ®WÔyÝÑYÜuÜmVü­„߈»ëݖƒ z‹Dgà®ãn³âo%üFÜýx/Y²DØf}‰]ØAbË à.›&Ë{í¹²Äî«u“ÈM²-Ý“ê½y´ééößÜ)wÖ[w=‰³fÍ’¸Û[I<åWgK<ôÐÃ$†vÃëŽÎˆã®ãn³âo%üFÜ]o ®Gð-)€»Ž»ÍŠ¿•ðq÷ãMáÁsµY(ö§ß—D/õyVb—a%¦uìçYå7KZî‹ç-”Þÿì/qÿm÷xÞ¹æëôk/í“~ÿW‰p€ÄÐnxÝÑqÜuÜmVü­„߈»ëMáÁõ¾Å¢3p×q·Yñ·~#î~¼)<øq®6 …‡j¥ÒY×t\+õŠ{%¡tÇ?]ßÖzÇÝ•¡ðàzßâÑ™¸ë¸Û¬ø[ ¿÷t½ï}$8ç³$vÞÆü·ÍšÖ°íŸXZ -÷Æ™æK#g^±î¹³òö}Ì‚·ZÀ-v#¸¦¶{ã¿‹ùÙ{Ÿ'ñÀý j xÝÑnÜuÜmVü­„߈»ëMáÁõ¾Å¢3p×q·Yñ·~#îµySx¨ÍOkk Zò&/¯;:þ¸ë¸Û¬ø[ ¿wכƒë|‹Dg à®ãn³âo%üFÜãy}c¬lxôï¾'±ã^æ× æÜõ‰´¾4Gbû+JìÔ‰-o´/€[îO(í¬¸7Þ¸LÈ_zøe‰Ý»w/9õõõe/¹Q†òº£38¸ë¸Û¬ø[ ¿wכƒë|‹Dg à®ãn³âo%üFÜãySxˆç–•­(<莯;:þ¸ë¸Û¬ø[ ¿wכƒë|‹Dg à®ãn³âo%üFÜãys» eöß5«ß®£ùăímÁÌÿP/›oï±IOû³rììT¬¸7L6¿r±ÕüíEýš‹¯qôÿôÇßKû¶[o‘øÊoKlÛÖoÎF9hðº£3H¸ë¸Û¬ø[ ¿wכƒë|‹Dg à®ãn³âo%üFÜãySxˆç–•­(<莯;:þ¸ë¸Û¬ø[ ¿wכƒë|‹Dg à®ãn³âo%üFÜ£yŸrÖÏeƒGšØmí.Ñ:h±vV.€[ìVá›YsozÂüÊÉ;™_I¹ê¿“1X£ãGÇ7–øjÝøBŒ ¯;:È»Ž»ÍŠ¿•ðqw½)<¸Á·8@t¦î:î6+þVÂoÄ=š7…‡h^Y]›ÂƒîÈðº£ã»Ž»ÍŠ¿•ðqw½)<¸Á·8@t¦î:î6+þVÂoĽ:ï'žzBVüÙõ'Jì´s»ê6¬°VÖ.€+ìnaΚûœû¦‹í¢§?“xÿÁ毘<´ùÏcdù¹¾cÀëŽÎ0â®ãn³âo%üFÜ]o ®Gð-)€»Ž»ÍŠ¿•ðq¯Î›ÂCuNyY‹ÂƒîHñº£ã»Ž»ÍŠ¿•ðqw½)<¸Á·8@t¦î:î6+þVÂoĽ¼wss³¬°áö#%výAûòD|4kÀw?·«k»7~Ü(vŸ\:Eâ÷×Y"ñÛ.sL¿÷ð ÒÞùÄ«$qÄÎãymðº£3r¸ë¸Û¬ø[ ¿wכƒë|‹Dg à®ãn³âo%üFÜË{Sx(ï“×G)<莯;:þ¸ë¸Û¬ø[ ¿wכƒë|‹Dg à®ãn³âo%üFÜ÷Ì™3åN]]‰ãÆI¼ÿ¡»$ÎÚn¶Ä®Ãjû éä+7ÚÀ_Ù• îj»O:c‚xwi0Ÿ¨Ùjÿý óÝ›1íCFw“;üë ‰k®¹¦y ç·¼îè î:î6+þVÂoÄÝõ¦ðàzßâÑ™¸ë¸Û¬ø[ ¿wãMáÁï¼ÓÎFáAwxÝÑñÇ]ÇÝfÅßJø¸»Þ\à[ :Sww›+á7†ê~èþ{ ô3Ï>+qÉbó?Ï#w–öú=H¼å-ó?ЃÏY]Úúv’˜ÔöpRÏ#oýdÅ}Ñtó]õ“ á’‰õM0±Ëb3ßÞÿd~ÞˆËîo¨¯;eQ<<ˆ»ä2)ð/ƒ“âC¸»¸\à[ :Sww›+á7†êNáÁï<ËZ6 º#ê뎮z›6¸ëŽþ:þ¸»î\à[ :Sww›+á7†ê~Ë× ôI'ž ñ¡ƒÍÿÜmž÷†·‰íÁ+.ñœÓÎÍu©õu§”…Ïe¸ûÔþz.ü¿nâc î®2…×#øˆÎÀ]ÇÝfÅßJø¡ºSxð;ϲ–ƒúº£«Î'ð×ÐÉÏëëNáÁõ¾Å¢3p×q·Yñ·~cèî³g›_«Øg—m~ãÎïI¼t—%OÊŒÇÍ}ûÉþû˜h–Ö~›— àÚŸi¶zÈ›{óƒÆïæ³n•;#GŒÌhĽ ýu'"Wb«ãže¬ŽðÅVóF¸»„\à[ :Sww›+á7†îNáÁï|ËJ6 º#ú뎖>îZò&/þ:þ¸»î\à[ :Sww›+á7ân¼¯ºî*¹sÁ gI\:iŽÄSF™_µ¸pÖ ÒîÂp‰IÝäí8©ç­ÝOÞÜ/0ŸÀéñH¡{öáç´ kÊÏëNM|±7Æ=6]"âŸcäNpwÉ(<¸Á·8@t¦î:î6+þVÂoÄÝxSxð;ï´³QxÐ^wtüq×q·Yñ·~#î®7…×#øˆÎÀ]ÇÝfÅßJø¡»Oœ4QÀøÙþ;`ü?6¿rñÁESdÁ²efù¯mî$t›· à„ž¶z7yuokæå÷×ø‘þü„Ÿ—µ\¶|â¶mÛ¶ìz¾ ýuÇ··Í‡»•Љøã®#àf¥ðàzßâ…Ig à®ãn³âo%üÆÐÝ)<øoYÉFáAw$BÝÑÒÇ]KÞäÅ_Çw׃ë|‹Dg à®ãn³âo%üÆÐÝ·Ù{kŸ·«ùu‹=Ú—€ãdù kv+ùxÜ…y½Žû|³²]ÞÝ›ï5’÷^rŸÜY}µÕ%N™b>¡³ÇÎÛIû‚‹/—¸÷>ûHÌÊMè¯;Z〻–¼É‹¿Ž?î®;…×#øˆÎÀ]ÇÝfÅßJø¡»Sxð;ß²’ƒîH„þº£¥»–¼É‹¿Ž?î®;…×#øˆÎÀ]ÇÝfÅßJø¡ºÿæ¢óúŽo‘ØuDg¿ð˳åýX-¤ywoú¬Y¿4\âVël$ñú«/“د»„6ç^}ÜÙu×]Í‚ŒÜ†úº£Í»îà¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~c¨îüγ¬e£ð ;"¡¾î誷iƒ»îà¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~chþšó‡£$vÚS÷Ûþó~ìw¶&—-ïî §-Œé—N•øƒ ÚIüývM{_d>Á3åƒéÒîÕ«—Ĭ܄öºƒ{Vt÷ƒy¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~chîüί¬f£ð ;2¡½îèj™÷/-4îᯡÎ'}ZªSxh)x›& €»Ž»ÍŠ¿•ðCs¹ÍîpÔR‰mÛó‰¿3.ÙòVxX¶x™À͹û‰íßš+ñýÍ<^§¯qo~œ¥ÍÞ ”ïMùØ<±ÛÐ^w²Â»îHà¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~chîüί¬f£ð ;2¡½îèj™÷/-4îᯡÎ'Zª·Ýi§L)»å#Jí±cÇJæQ£F)íAØiñ×ÜuÜmVü­„ßX÷æfó-ÿ ,ÀùóçK\0ïs‰ŸÏ3ÿC¼¬¯ù[ø=Úû…n%[ÃÔ…òH·á][YƒÅiäÍ}É‚ÅÂÐð¾ùn‡]Ì'uzu6§½–ÿ(K£Y­Í¼ýdýõ60ŸðIð–>‹òºS‹Æ¶¸k¨™ÿ/-|ÞÃÝÕ¦ðàzßâÑ™¸ë¸Û¬ø[ ¿±(îüΛ¼g£ð ;‚EyÝÑUŒž÷èfIn’šÕ÷…»kÅŸZ¸Á·ø(–ÎÀ]ÇÝfÅßJøyw?öÈï Ø]÷Ü-q£¡æ“#ûšÿÙ·Q–ß7Þ|Ò¡n ó·ï}·îíº•lyûÈ+O#w‹óæ¾l‰ùdÃ2ó•mê'5ˆùÂåqÙ¤ziÏŸh–ŸúËs¥}ú/ÎÈäØäýu'“¨UìîU ¥¸ þ)â–éw‡Âƒë|‹Dg à®ãn³âo%üƼ»Sxð;_Š’ÂƒîHæýuGW/~vÜãÛ%±%þI(Fïw׌ƒë|‹Dg à®ãn³âo%üƼ»Ûïr8h¯nÕ%ïJ¼j§yä¥/›æ÷‘;ý¿;Èy\«‘· `-§¤óݽéf#öìߟ“;={öLš°¦þòþºSÓ“WÜwEüÿ¦Æ_Çw׃ë|‹Dg à®ãn³âo%üƼ»Sxð;_Š’ÂƒîHæýuGW/~vÜãÛ%±%þI(Fïw׌ƒë|‹Dg à®ãn³âo%üÆ¢¹_}ù%xÆ/O•øèáK$.h2®ß}©‹ÜøËÕÍåÛ¢_+ó¶š¾èî ÓÌwœl:sK1¸ñò›ZµÐx h¯;†qrâG-¹mðOÎ2JO¸»Z\à[ :Sww›+á7̓ßù“×ltG®h¯;ºšÕgǽz«4ÖÄ? ÕÊ}âîQxp=‚oq€èLÜuÜmVü­„ßX4÷;î¾CÏ}–ÄÏŸ{_âƒK¼iœ„6ë\¹®¹£|[ô `eÞVÓ‡âÞø”ùÄÏù‡\ {í¾W«&>(ÚëŽO»Zrá^‹^íÛâ_»aœpwÕ(<¸Á·8@t¦î:î6+þVÂo,š;…¿ó'¯Ù(<èŽ\Ñ^wt5«ÏŽ{õVi¬‰ª•ûÄÝ5¢ðàzßâÑ™¸ë¸Û¬ø[ ¿±(îŸ~ú©Àír¤ùu‹Ž‡¹ŽsG›Çg?7Gv–ùއ=:¸+zn…r왵bºÐÜ^c>ùðæÓæ#?;v,i4wî\YÞ«W¯’'µ°(¯;Iyøêw_Ò¥óà_Ú%í¥¸»Â\à[ :Sww›+á7Ńßy“÷l(<ä}ÇÙÿ¢¼ÞÇyîYØQÀÝu§ðàzßâÑ™¸ë¸Û¬ø[ ¿±(î{¾§ÀM5Qbç•;•„lú¬Y–wêSú«äF). í8EÊH]‡æ^?a¡øì¼d‰—™ãuî§I{̘Ç%>÷òÎãI7Šòº“´KÚýáž¶pùþñ/ï“Ö£¸»²\à[ :Sww›+á7Ńßy“÷l(<ä}ÇÙÿ¢¼ÞÇyîYØQÀÝu§ðàzßâÑ™¸ë¸Û¬ø[ ¿1ïî—_c. þüÖ•×uãÒŸtð«Z}¶Ð.€«—IwÍPÝ›[*°'íø3‰ýî‰õœ%ñ£.æ×^ž|a¬´ÓºÉûëNZ.i÷‹{ÚÂåûÇ¿¼OZâîÊRxp=‚oq€èLÜuÜmVü­„ߘww ~çKQ²Qx ðP”¹åyäýõ>ÊsÍâºøëŒ î®;…×#øˆÎÀ]ÇÝfÅßJøyuoü{uðÿ(±ãþ~Ý’ÊêpR~qû Õý³Û?²öc?—øÀ!æ£Ç·“öçš‚Äùü1.mUÛåõu§ª'—á•p×üuüqwÝ)<¸Á·8@t¦î:î6+þVÂoÌ«;…¿ó¤hÙ(ü]_-Ü]i ®Gð-)€»Ž»ÍŠ¿•ðóêNáÁï<)Z6 Š6§«y>y}½¯æ¹åaüuF w׃ë|‹Dg à®ãn³âo%üƬ¸Ïž=[žø[o½%qÜ›oJ¬{ýEÓ~ãu‰ÿ™8UbÿýHì³{o‰y½ å8kãŠûÄ_Œú®M‹%n>ÔŒÄvÍ'6lÚûÝÓEî¼ñŸÉhHé6+¯;)=½Ìv‹»îÐà¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~cVÜ)< ÷;ðg£ð@á!ÄC +¯÷!Úÿï9ã¯3ò¸»î\à[ :Sww›+á7fÅýñÇþ!Oü{‡™_©8tÝ%Ò±R£Ä‘æmÞúÔøœ9cE¹ÓÿG«˜9½ å8kÚ{ã§M2õ“$6O2±i|½´{´é&qâ´Ï$¦}“•×´ŸgÖúÇ]wDð×ñÇÝu§ðàzßâÑ™¸ë¸Û¬ø[ ¿1+î†ûøÀ³Qx ðâ!•×ûíÿ÷œñ×yÜ]w ®Gð-)€»Ž»ÍŠ¿•ð³æ~û­€þàGbþ6}ÇáæËðÆ-ÿÄÃÎu’ÇWùÍš~ÁÎÚpÂ|±»ÃÝ¥kxÓ|²èÈaÇȧýôî ·²öº“ðÓËlw¸ë þ:þ¸»î\à[ :Sww›+á7f̓ßñ5…wä)<¸Emeíõ¾¨Î­=/ü[“Iw9î®/…×#øˆÎÀ]ÇÝfÅßJøYu¯¯7{>j½oÈÖýͯ^\»»ùR¼ö¿6N£n\ß/XÂÙ¸N´Êîp/ Õ|ŸYþ·?Ü-wÖ^kíÒ+Ö¸4«¯;5>­ÌoŽ»îá¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~cVÝ)<ø¡e£ðPzÄ)<”v)ÊÒ¬¾ÞÅ·ÒóÀ¿’P:ãîºRxp=‚oq€èLÜuÜmVü­„ߘU÷G{D N»ý‰‹›oÛŸ÷™ÒîÜÞ8õøéªr§ë.fAÎn¹Ö0ÜK»7Ï5ß©²ò3ƒd…þý‰Ò+Ö¸4«¯;5>­ÌoŽ»îá¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~cVÝ)<ø¡e£ðPzÄ)<”v)ÊÒ¬¾ÞÅ·ÒóÀ¿’P:ãîºRxp=‚oq€èLÜuÜmVü­„ߘ5wû'›î±‰@t9¦Ò4»YÚ^‘'¼ëÑ;KìtX[¿ÊÙ¸ÖÜ«s¯¯^Vüøò÷%þbsó+3¿ÜÂüºLûóÌñÚܼXo×ÎýšÖ²h¿î´¶_E_Ž»îã¯ã»ëNáÁõ¾Å¢3p×q·Yñ·~£¶;…‡©2àkœ:ÜïÀžÂCu€ÂCuNyYKûõ>/Nií'þiÉ–ïwׇƒë|‹Dg à®ãn³âo%üF-÷ &È=þ?‘8}Ë$vZ©£_ål\ë î¥Ý—6-•æÜö‘ÄÞï/øÀ~K$YQB›×>6ñÇ/­!w^­oTy«õºSåîv5Üu‡Ü]w ®Gð-)€»Ž»ÍŠ¿•ðµÜ)<˜qæØï|·Ùp·n¤ðàz­¥õz_4ǸÏÿ¸rµm‡»ëGáÁõ¾Å¢3p×q·Yñ·~cZîW]y¥<‘7^y^bÝ›¯›øîd‰½»™¿ï2¬³´ûül˜ÄÐn¸ÖqÜK»Ï{i®<0é󉇑ÃÌqºí óIˆ­›_±˜0ÛlÿÁªGË+¯¹¡t‡­,Mëu§•t,^.€»îTÀ_Çw׃ë|‹Dg à®ãn³âo%üÆ´Ü)á¬TàÀ:ƒ‹{2î‹n0xí1s|wéÒ¥ªŽÓ~Ý©j'\ wÝAÇ_Çw׃ë|‹Dg à®ãn³âo%üÆ´Ý)<”O.€Ëû¤õ(îÉÈRxHÆÑW/i¿Þûzy̓¿ÎÈáîºSxp=‚oq€èLÜuÜmVü­„ßèËýÛí-OìÑ6ñ0ó·ä'ÿË|ÂaþÁ«Èòkw÷  œ `À=÷…“Íw=lÓ`>Ùtõ…®ªc_¯;UíL@+á®;ØøëøãîºSxp=‚oq€èLÜuÜmVü­„ßèËÂCéq帴KÚKqOF˜ÂC2޾zñõzïëùä-þ:#†»ëNáÁõ¾Å¢3p×q·Yñ·~cÚî/¼ø‚<¡ã.û¡ÄöÛš¿ Ÿqñi÷ªo”8»ûí²’ÄPn¸ÖiÜ“uoú§9®/9æ2éxÇíÍ' ZË’öëNkyC_Ž»î À_Çw׃ë|‹Dg à®ãn³âo%üÆ´Ý)<”O.€Ëû¤õ(îÉÊRxHÖ3­ÞÒ~½Ok¿‹Ò/þ:#‰»ëNáÁõ¾Å¢3p×q·Yñ·~cÚîëm±®<¡®?*ýk3ï™.w[Ó|·C÷=ü(gãXgpOÇ}ៗHÇï¼øï² ¶Ûn;yüé§Ÿ.»&+öë}²{[¼Þð×SÜ]w ®Gð-)€»Ž»ÍŠ¿•ðÓv§ðP~<¹.ï“Ö£¸§#Ká!פzMûõ>©ý,j?øëŒ,î®;…×#øˆÎÀ]ÇÝfÅßJøi¹ÿäÿ~,OäéÎc$v[½kÙ'¶l©ù•‹¶íÚ–]¯hr¬3¢¸§ãÞð®ù•‹½:í' .8÷B'ÑÏN0ßõróíwÉòÙŸÍu§‘®@Z¯÷éîuqzÇ_g,qwÝ)<¸Á·8@t¦î:î6+þVÂoLËÂCuãÈpuNI¯…{Ò¢¦? é¸&ÕkZ¯÷Ií_ÑûÁ_g„qwÝ)<¸Á·8@t¦î:î6+þVÂoLÚýÁG”'ð«»N“ØyûÒßíà÷Yf7À:cƒ{ºîÍÿ0ý¿Ã rç¼3)qÇ!õ™f¾ÓeƬÏÌŠÜzHúõÞËN( þ:ƒ‰»ëNáÁõ¾Å¢3p×q·Yñ·~cÒî¢ÀѼ’Z÷¤$K÷Cá¡´‹öÒ¤_ﵟOÞòã¯3b¸»î\à[ :Sww›+á7&å>þ|Ùñ-öÙLbç£Úù}"9ÍÆ°ÎÀáž®ûìë>½§,øÀÁæ×.®ÛAÚûp˜Ä‰'JäÆ@R¯÷~ö¶xYð×SÜ]w ®Gð-)€»Ž»ÍŠ¿•ð“r§ðoܸŽçVëV¸×*X~{ å}´Mêõ^kÿóžÄÝu§ðàzßâÑ™¸ë¸Û¬ø[ ¿1®û„ dGëêê$^{û5?ØhŠÄ®ƒ;K䦼Àå}Òz÷deëß6ŸxšrùûÒñE»˜þe~­ÆfÛé®^rwN×U%¾þúëö!¢¸¯÷v-ˆøë 3î®;…×#øˆÎÀ]ÇÝfÅßJøqÝ)<$3N\'ãµܣЕ_ŸÂCyŸ¬<÷õ>+ûŸ÷ýÀ_gqwÝ)<¸Á·8@t¦î:î6+þVÂo¬ä~쑇˽õ¦ùŸÉºw'K{èJ]%®Ù»Yâ˜ñ7¸n=‰ÜT'ÀpuNI¯…{²¢O{O:ìÜh¾Ëa“¡¦ÿ-•;›6í]n3ßñ°É[Ë‚'Ÿ|Ò<À­J¯÷^v"à$øë >î®;…×#øˆÎÀ]ÇÝfÅßJø•Ü)<¤;\§ëÛZ︷&o9…‡xn¾·ªôzï{Bˇ¿ÎˆãîºSxp=‚oq€èLÜuÜmVü­„ßXÉýûß9Pvh«K|ü`ó·Ü]Ì\~±³C®4¿bÑûÔÕeYçþ¾xŒ;­ pܺMšàžŽnÓ¬&é¸~ÒB‰Í“ê%6¾k~Ý¢wÇžÒú‘ÇŒ#‘?•^ïýìE¸Yð×{Ü]w ®Gð-)€»Ž»ÍŠ¿•ð+¹SxHw<¸N×·µÞqoM¦¶åjóK{ëJ¯÷iç½üufî®;…×#øˆÎÀ]ÇÝfÅßJøÕº?8ú~Ù±}öÛ_â}‡¶•¸ßZæ[ë÷¸×|âá½m‡ÈòÞßZQ"7å¸.ï“Ö£¸§%[¾ß…¯›ï‚Y<Ƽ~¼÷óÝå·âѤª}½O*ý¸ø»¾Z¸»Ò\à[ :Sww›+á7VëNá!qá8×J½â^I(Ç)<¤ãZm¯Õ¾ÞWÛëEÀ?šWRkãîJRxp=‚oq€èLÜuÜmVü­„ßÕýâ+/’¼øOgIܲ§ùÌõ{šo¯¿¦{_YÞÿ€þ~ŸHN³q¬3p¸ë¸Û¬ï2UîŽ{eœÄU¿±ª}ˆ˜¢@Ô×ûw%È®ñ×vÜ]w ®Gð-)€»Ž»ÍŠ¿•ð£ºSxHv|¸NÖ³ÚÞp¯V*õ(<¤ãZ©×¨¯÷•úãñhøGóJjmÜ]I ®Gð-)€»Ž»ÍŠ¿•ð«uëí·dǾ{Öa;îkþFûó}&ínûDbï5ºJx ÿƒ)n¸®”Òø§[e·ïýn²¬¹Í¨m$>|Ç?ªÜ’Õj¨öõ¾–lÛºþ­Û¤ùî®.…×#øˆÎÀ]ÇÝfÅßJøÕºSxHg\¸NǵR¯¸WJ÷q éú¶Ö{µ¯÷­mÏòÚð¯Í/îÖ¸»r\à[ :Sww›+á7Vë¾é.›ÈŽ5P/±}ó+vo›?_,wÆ›Ç{~«§}ˆXF€ à28)>„{ЏUtmý‡n=XÖþùÿ'ñè#Ž©bkV‰+Píë}ÜþÙ®¼þå}ÒzwW–ƒë|‹Dg à®ãn³âo%üÆjÝ)<¤3.ölS‡§“€^K à^’ÅÛBëOáÁ¹$ªöõÞï^…“ ±ÆÝu§ðàzßâÑ™¸ë¸Û¬ø[ ¿±’û¯~ó+Ù¡ûçß#±Ûºýî`Á³Ù 0 ~w¿Þ-³µôoºÝ¬ñÏ[ž;ýúõ“øüsÏI<ô ý%ÞrÇÝ·Ûn;‰ÜD¨ôz­7ÖŽ*€T±dÖÇÝu¤ðàzßâÑ™¸ë¸Û¬ø[ ¿±’;…‡tÇ£åXºÙèÝ àn%tbK ~Æ¡Ò뽟½7 þ:c»ëNáÁõ¾Å¢3p×q·Yñ·~ckîÏ>÷¬ìÈñW'±Ónîw:øÝËâfkyVÜgš­g†»îx´ô_ôq£ìÐz“7”Øw™ùdÕ¸g’öìK$ÞýØ ×_}‰ÜDhíõ>Z/¬Wÿ¸rµm‡»ëGáÁõ¾Å¢3p×q·Yñ·~ckîüŒCË 0?YÉ‚»îhéOáÁÏx´özï';Yð×™¸»î\à[ :Sww›+á7¶æ¾îæëÈŽt;®ƒß ,[Ë °Àž¾ÚÓÅ]^·ôŸ?n¾,ÿàª$^°“ù„Õ1#ͯå¬|QGY^¿¨I"7ñZ{½×À?ªX2ëãî:Rxp=‚oq€èLÜuÜmVü­„ߨš;…?ãÐòÌOV²à®;ZúSxð3­½ÞûÉNüuæî®;…×#øˆÎÀ]ÇÝfÅßJø‰&LDx ÄýöÙ[â˜> ñóJìºZ‰Ü¤#Ðò,,ôÚR÷–"~Ûãÿ0Eöéi>Ù0tNƒ´ÜÏ|—C¯å/;OM5ûuÞøoÊ'_kpK€÷ÙXl‰m„b”‘:ÂÝå¢ðàzßâÑ™¸ë¸Û¬ø[ ?‘ƒçJY¸®$”Î㸧ãZm¯ª•Jv=Þg“õŒÚþQÅ’Ywבƒë|‹Dg à®ãn³âo%Ò‰‡¸¯t|߃HºRW‰Ÿ/0ŸløÉÆæoy»­,ïxÜp‰ÝWë&‘›t¸NǵR¯¸WJ÷ñÿÒ|âªñSók m/ ·´TâVƒ—I÷©y=Z¶ÙϤ}þIä&žï³ñÜ’Ú ÿ¤$£õƒ»ëEáÁõ¾Å¢3p×q·Yñ·éD é¸ÖÚ+Àµ ÆÛ÷xnImEá!)Éhýð>Í+éµñOZ´ºþpw(<¸Á·8@t¦î:î6+þV"øÒ‹/HǻﺓÄKwn–xË›æ[ãÇaòù°ù›ëgÖ ún×Ç<Àm*\§ÂZ±SÜ+¥º‚õ_ýäa’§~²ùäÕÂåqéIJ¼iªùDÄù\-ícŽ:&Õý*zç¼ÏêŽ0þ:þ¸»î\à[ :Sww›+‘N¤ðŽk­½Ú °5N^kWlA÷X)¬jý)<¤€[¦KÞgËàxxÈ%Ràî¢Pxp=‚oq€èLÜuÜmVü­„Ÿxä!æ;~øAI8ëó7ÕW¾jòÿaQo¹Óï{ƒýìP Yì…¿w¿Þ-³Eõoø‹ùdÖÛϽ#]µkg>™Õ²_ÚåxŸ-ï“ö£ø§-\ºÜ] ®Gð-)€»Ž»ÍŠ¿•ð)<øq®”%êX¥þx¼:Ü«sJk­¨þ’ Þg“qŒÛ þqåjÛw׃ë|‹Dg à®ãn³âo%üÄn½^ðÓã%6Í]þ·Ô;šü—Lî"w±ºYÀm*Q/ÀRÙ‰;Å]wУú7¼g¾b×¶{ÉŽ_òÛ?é>œfç}Vwàð×ñÇÝu§ðàzßâÑ™¸ë¸Û¬ø[ ?‘ƒçJY¢^€UêÇ«À½:§´ÖŠêOá!™‘à}6Ǹ½àW®¶ípwý(<¸Á·8@t¦î:î6+þV"Ý8íýi’`ï›ÿ9œ6mª´í—¼MÿãdiÏý¨Iâ:—­#‘›t¢^€¥³áõŠ»î˜Çõozt©ìøU'üEâV[n¥ûDr–÷YÝÃ_Çw׃ë|‹Dg à®ãn³âo%ÒÒõÚ{Ü °¨yXßÀÝõðÝŠëOá¡¶‘â}¶6¿Z·Æ¿VÁxÛãîºQxp=‚oq€èLÜuÜmVü­Dºq§Ì—8ÌÜæcI4õÚ%¶üU…úÉæoª»¯Ú5Ý ¼÷¸`³Õüôq¯™°¦âú/[l~}gé-$ÿO¿Yv?¦OŸ.0 ìz¡<Èû¬îHã¯ã»ëNáÁõ¾Å¢3p×q·Yñ·éF éúFí=îXÔ<¬ï àîzønÅõ§ðPÛHñ>[›_­[ã_«`¼íqwÝ(<¸Á·8@t¦î:î6+þV"xáeHÇ7N¾Nb·ov–÷ ½ ¯WüuÆww›µVÿ†w̯ðØûéò׿<Ïv-ñÈCö—8gî\‰<ö”óx¨ ÞguGÜ]w ®Gð-)€»Ž»ÍŠ¿•H'RxHǵÖ^k½«5¨Ûã®;òµúSxˆ7~¼ÏÆsKj+ü“’ŒÖî®…×#øˆÎÀ]ÇÝfÅßJ$ÇÕ“¿wîw%vÜÇí¿Ö ·7ZQð*–Ìú¸'ã·—¤ü›2{pìÖÇÊ3~õ ‰¬Õ,±y5óë=·Üu¿Y1ð[Þgu'þ:þ¸»î\à[ :Sww›+‘l¤ð¬gÒ½%u–ô~½?ÜuG8) ÑÆ‘÷Ùh^I¯Ò¢Õõ‡»ëÔv§v2_Óë.Wk;Vr5JmBNŒ¿Îèã®ãn³âo%’¯Œ}Y:\֩ĶíÚ: ¦š_¯è6œ_¯p`<5ð÷Ý" î-@<7“òoúÀ¼~um6¯o#û›ÓéIsÚÉ3ê6` ‰C‡õü ³™Ž÷YÝqÁ_Çw׃ë|‹Dg à®ãn³âo%’’õLº·¤.À’Þ¯¢÷‡»î'åOá!Ú8ò>Í+éµñOZ´ºþpwøS ×#ø Ò™¸ë¸Û¬ø[‰òqáBó?|Ÿ|ò‰¬XWW'qÜ›æ“jã^yÞ´ëÌïÛ·Ý»‡´{mf¢4¾r“ÔGž¿Ò%w#à+ÁUqO3FWqýç¿ú¹dåo>À|‚ëˆõÝozKOyüò;—¸É&›H ý†÷YÝ€¿Ž?î®;…×#øˆÎÀ]ÇÝfÅßJ”ÊûäíѸ`y{žYÛ_ÜuG$®?…‡ÚÆ÷ÙÚüjÝÿZãm»ëFáÁõ¾Å¢3p×q·Yñ·åãoÎ=KV¸ôâ %nõNGö^`âòïrøçi¶y`h?¹ÓoÍÒ/oã^|Ù÷jÀ¿½øÛâß.‰-ãúO8å]Iße‰ùN‡o 1{³Ã@ÓÞty{«ÌòeËÜOB$±ïyîƒ÷YÝÑÃ_Çw׃ë|‹Dg à®ãn³âo%ÊG å}òöhÜ °¼=Ϭí/îº#ןÂCmãÆûlm~µn­‚ñ¶ÇÝu£ðàzßâÑ™¸ë¸Û¬ø[‰òqÉ’%²ÂIÇ-qü J½ÿ\‰];Hhó·wLáU÷Žù.ˆw·0›ó>«;”øëøãîºSxp=‚oq€èLÜuÜmVü­DùH᡼OÞ­õ,oÏ7+û‹»îHÔêOá!Þøñ>Ï-©­ðOJ2Z?¸»^\à[ :Sww›+-Žyü1Ù`¯=÷xþæošG 0që{;Êòá¿_«dǵ^”ì”…U à_5U¢+âž(gäÎÒö_ôŠùDÄÿÛèg²o?:æG‘÷±ˆð>«;ªøëøãîºSxp=‚oq€èLÜuÜmVü­D´Há!šWÖÖNû,kÏ7+ûƒ»îH¤íOá¡ôøò>[ÚÅ×Rü}I»ypw=(<¸Á·8@t¦î:î6+þV"Züû÷Êg߆Äùo(qƒÆ…yÛ|'Ć׮'í¶íÍïÞKã¿7i_Ø<ÄÒø—vI{)îi —ïß—óßÌ~«;ÀøëøãîºSxp=‚oq€èLÜuÜmVü­D´Há!šWÖÖöu–µç­½?¸ëŽ€/ î8ó>ëzønáï[ÜäÃÝu§ðàzßâÑ™¸ë¸Û¬ø[‰êâœ9sdÅmÚZbç#ÜO2Ì{ÉüÊŧwO—ÇW9mU³^¿Ní¯ ›è àïzøjáîKºt_þ‹¦7ʬñïu%Þ÷×ûKïP KyŸÕhüuüqwÝ)<¸Á·8@t¦î:î6+þV¢ºHá¡:§¬¯åë,ë¾÷wßân>_þ\wÞg]ß-ü}‹›|¸»î\à[ :Sww›+Q]üöQûËŠã×yGb—Kn¸l±ùu‹¶ÜODØ•}]Ø|DW×ÃW w_Ò¥óøö_ô¼ù•‹Ów>Kvè°ƒ/½c_Êû¬îã¯ã»ëNáÁõ¾Å¢3p×q·Yñ·ÕE Õ9e}-ß`Y÷ðµ¸û’.Ç·?…3¼Ï–ž¾–âïKÚ̓»ëAáÁõ¾Å¢3p×q·Yñ·åãµ7]++\úÊE»lÚ±üõ}Paw‚{!Ç]ÇÝfÕòoºÅìÁ¿îyVîôêÕKâ£ÿxDâ±GOâÝ÷=(qóÍ7—X”ÞguGÜ]w ®Gð-)€»Ž»ÍŠ¿•()<”÷ÉÛ£Z`ysJzqOZ4ZZþv–3fL´cíD8ÏI„1r'¸»d\à[ :Sww›+Q:Nž2YØÿÄ}%v<°ôzQ—j]DÝÏ¢®¿ÎÈâ®ãn³jù7¼¿Hvá[ÓÍ'–Í4¿þ3ó?æïL7ßñìkæ»s† fw¹‘÷YÝaÄ_Çw׃ë|‹Dg à®ãn³âo%JG ¥]ò¾Të,ïnµî?îµ Ö¶½–?…>ñPÛÌ­mkÎsjó‹»5î®…×#øˆÎÀ]ÇÝfÅßJ¸±¾¾^ìõ=%~¶Ã§;öìள¥usw ·þ:CŠ»Ž»Íªå?ïeó ‡‰þPvå¦ýÚIÜuµ¥GÞ¸¢Äé³>—X´ÞguGÜ]w ®Gð-)€»Ž»ÍŠ¿•p#…×£h-­ °¢9F}>¸GKv}- |â!Ù™­7Îs¢y%µ6î®$…×#øˆÎÀ]ÇÝf ÍÞ¼yòÔŸzê)‰ãÞkâ+Ï›X÷–Ħϒ8dǾ{ÖObR7ZIíÞûÁ_gq×q·Y}ù/^°DR~vÍûG,3ßñðÀþfy»¶fxÏÄëçl+wF?ú´YP°ÛÐÞg³6|øëŒî®;…×#øˆÎÀ]ÇÝf ͟ƒù°£¯ °°•¿þìqÿº‰Ï%¾ü)<¸£Úû¬ûìõ[øëŒî®;…×#øˆÎÀ]ÇÝf ÍÚÔ©òÔ¿¹Á:Ñ$qË!ËÿÖx€4ÛL5’Üæ{¯t•±šy ¡[_ ínáºÁ_gHq×q·Y}ùÏ~x¦¤œz·ùnœõVi/í­™×Ù­-“ö š> Úû\iÿêŒ3%í&´÷Ù¬þ:#‚»ëNáÁõ¾Å¢3p×q·YCó§ð`G>ìèë,lå¯?{Ü¿nâs‰/ ö>ë>{ýþ:c€»ëNáÁõ¾Å¢3p×q·YCõõ•W„`Ÿ=Ì—~»•ùänh>1³Á}ãjóíëk_±®%K$úºHdg Ø þ:ƒŠ»Ž»Íªå_?i¡ìBÃ$óºlÒi7O5¯·—^~³´>è`»«…Š¡¾Ïfeñ× Ü]w ®Gð-)€»Ž»Íª?…;ÂŒZ`ajù¬qÿÒBãž–?…~ÕBc¾Ûœ¡žçØç¯qwå)<¸Á·8@t¦î:î6+þFbÓÖ–;çOøôaæo‘WºÄ|âa•߬)Ë;öì`6¨ñVë ÆÝ.Ìæøë %î:î6kæüÍW=´i¼ÖÜyëù·í®*ò>«;œøëøãîºSxp=‚oq€èLÜuÜmVü…;#ˆ™» ƒ½ îº9 º"ìœçè 4î®;…×#øˆÎÀ]ÇÝf Ýÿ‰§žŠ“¯?Q⢕ÍßO¸ÔüþüZÍ'–¾Š<¾âú+Xºšbæ.jz6ùÛ1Ã]ÇÝfͪý¿Íw@ì·ÂA²«çŸy¾ÝåBÄÐßgµÀÝu§ðàzßâÑ™¸ë¸Û¬¡ûSx°3!¬˜Õ °¢îº#œU ºó¢èÙC?ÏÑ_Ü]y ®Gð-)€»Ž»Íªss³l¸ýH‰]`~gÞºØøþù“äîJ ”Ø}õnö¡šbV/jzR9ÚÁÂ]ÇÝfͺóÃæo/®?í&Ùå7ÚØîz®c¨ï³Y4üuFw׃ë|‹Dg à®ãn³†êOáÁ΀0cÖ/ÀŠ:*¸ëŽlÖý)<è΢fõžù™Äá½ÛIü|ùW 8o ûÔUc^.T‘RLŽЏeºÆ½ އ‡²îÿù3æuûƒÛ>¿}{™Ä}×rqÖ¹¶‡,¸ï óº¿öÚk»+d¬•÷÷ÙŒqFÞü#“%²î.#…×#øˆÎÀ]ÇÝfÍ»?…;’Ä(Y¿‹ò\ò´.•u ºó£¨Ùó~ž“×qÁÝ9 ®Gð-)€»tJÖ7@IDATŽ»ÍšwÿÕV Oe˾s$žµU“ÄÕû˜ghþ¿¬M›ö¿6íQ7®oî(ßfý@™'õôø§N\2î%Y¼-̺ÿ{'¿+—˜ïxØxˆùõŠí™ïvØ`eCuèýåμúEÞìjI”÷÷ÙZž{¶Å_gpwÝ)<¸Á·8@t¦î:î6kÞý)<Ø‘$FÈúX”ç’§uq×­¬ûSxÐEÍž÷󜼎 îîÈQxp=‚oq€èLÜuÜmÖ¢øÿßI?–§ôâ£wJ½ß\‰}ºšgºê_Ìw=t=aUYÐuHó€ÒmÖ/”X¼¥Åßµ“w‡Ã{#/þMŸ5‹MÔ…'Ö›øÎ|‰«¬¼ŠÄ×^› 1ë7EyŸÍºskû‡k2é.ÇÝõ¥ðàzßâÑ™¸ë¸Û¬Eñ§ð`G”X@^.Àªy.yZwÝÑÊ‹?…ÝyR´ìE9ÏÉÛ¸à×#øˆÎÀ]ÇÝf-šÿN8VžÚ-×ß ñ²ÝÌ3}hŠù[áºÍÉ‚>›õ2(Ýæå@‰'õ´ø§N\2î%Y¼-,Šÿ¢Í'"NÝæ—bwäáGz3Œ“¨hï³q 4·Á_Gw׃ë|‹Dg à®ãn³͟ƒYb9¢\€•{ŽY| wÝQ)Š?…Ýy”·ìE;ÏÉ‹?îîHQxp=‚oq€èLÜuÜmÖ¢ø¿>öuyJÇüþ(‰÷4Ïpö5ïËH\´±ù¹‹þ›_Ã0kù¿-Ê€¹d2⟌cÔ^p*–ìúEóoºÍünÑ“·?-P}ûöM,¡ÞŠò>›‡÷nð÷N. qwÝ)<¸Á·8@t¦î:î6kQü)<Ø%V#P´ °jžsÖÁ]wŠæOáAw>å%{QÎsòâm÷w+a"…×#øˆÎÀ]ÇÝf-Šÿ†ÛŽ”§Ôþ{æ÷ÞÛv0ßé`ŸçÜçç˜Ç;šå=6á;¬Mˆ±h`yCÜuGªhþ ?\$ #ßßXâí¹C¸•ìEyŸmåée~1þ:C„»ëNáÁõ¾Å¢3p×q·Y‹âOáÁŽ(±¢]€U󜳰P4 ºó)/Ù‹rž“o»Ÿ¸[ )<¸Á·8@t¦î:î6kÞýO>ógòT]úÄnkv±O-Ó±h™Æ.±sø—@ñ°wÈeRÕ¿ñ_æ“nçìsž<ûö= Œ‚ÿ‡òþ>ë_,ÙŒø'ëYmo¸»R\à[ :Sww›5ïþìH£õ,ŠÆº¸k¨™³¨þ¾cî}] ïç9_FùX‚»;N\à[ :Sww›5¯þ?ñ¸<…Sþj>ñÐiÇvö)å"õ øÿÝIüuF ww›µèþ7š_¹xù‘Wä)wëÖMâ=wýMâ‰'üXâCþSâ¨Q£$¦}“×÷Ù´]|õ¿/i7î®…×#øˆÎÀ]ÇÝfÍ«?…;‚Ä8E¿‹câcÜ}(·ž£èþZûÉëyNÞÇ ww)<¸Á·8@t¦î:î6kÞüe×GíôM‰]moŸJ®bÑ/²>øëŒî:î6kÑý&›_¹Ø|Î6ò”çL˜,±ý§oH|b‚y|ⴥݧO‰ißäí}6mßýãï[ÜäÃÝu§ðàzßâÑ™¸ë¸Û¬yó§ð`GŽX‹@Ñ/Àj±Is[ÜÓÔ­ÜwÑý)ëåÉg þ:ƒ€»ëNáÁõ¾Å¢3p×q·Y³êOáÁŽ1 ¢_€¥a–DŸ¸'¡¿¢ûSxˆ?7мeVÏsŠlþ¿ç†»;Â\à[ :Sww›5+þG²¿ìÒ+¯¼,qÚG3$Žº‚Äõú˜¿Í½³®IÚk_²¶ÄöÝùŽà&’@Ñ/À"ax\wØ%RÍ¿yÎby–³®ž*q›æýᎽ–:Ïþ¶·Lóíö‘;·Þ=Úy<íFVÞgÓ~žYí‘ÁÝu§ðàzßâÑ™¸ë¸Û¬Yñ§ð`G„èC h`>Ì’È{Šñû(š?…‡øs!¤-³rž’ùÿž+îîˆSxp=‚oq€èLÜuÜmÖ¬øÿá¼³d—®¿ú‰´@⪽힚¸ÑÍæ YEôX»»»BNZE»È û»‰ÿ^ïàî•ûkÉŠæ?ó^ó] ï?8KžëºCÍûÃÖƒÌ'¶l¾Ûáñ)fùÆG],ëý¿OüšMš ²ò>›æsÌrßøëŒî®;…×#øˆÎÀ]ÇÝfÍŠ?…;"DE»óa–DÜ“PŒßGÑü)<ÄŸ !m™•óœÌÿ÷\qwGœÂƒë|‹Dg à®ãn³fÍÿ·ß–]Ûg÷%þpó?Y§maþë¸ÇÌ·”ÿcµòøÊ;¯dŸJ®bÑ.r…ÿßÅ_gÄp×q·Y‹î_?y¡<Õ†I —M¬—¸ø}óÝ7ÜxŸ´wÛu7‰¾n²ö>ëëyg%þ:#»ëNáÁõ¾Å¢3p×q·Y³æOáÁŽ 1M¢_€¥iWK߸עWû¶E÷§ðPû)bY;Ï)¢q©ç„»«BáÁõ¾Å¢3p×q·Y³êŵWÈ.^xÕWžg¾óᨵ—Hûó{Jìÿý¡óvSô €¬þ:#„»Ž»ÍªÿÒ&󉹶wtŠ×ŸkI¼Ä¬¾ÏzyòH‚¿Î àîºSxp=‚oq€èLÜuÜmÖ¬úSx°#DLC Ô °4,£ô‰{­ä× ÕŸÂCòs)O=fõ<'O†qöwWƒë|‹Dg à®ãn³fÍü„ñ²kr€ÄŽß6{Zÿ®ù[ÝÉO•=Vî(qøo×4+äì6Ô €¬ þ:#»Ž»ÍºÃ[‹„â•¿#ñìÓα4©Æ¬½Ï¦úd3Ø9þ:ƒ‚»ëNáÁõ¾Å¢3p×q·Y³æOáÁŽ 1MÐ/ÀÒ´-×7îåtÒ,t éϱ,fÈÚyNÒØ'Ü]U ®Gð-)€»Ž»Íš5ÿ­öÜRvmÁs$vXÁüþºÝ_ç›/wWÙÃ.ÊU ý@{°ð×ÜuÜmVüDó&ÞrÎmrgÄ#,Q*1kﳩ<É wŠ¿ÎààîºSxp=‚oq€èLÜuÜmÖ¬ùSx°#CLS€ °4u[ï÷Öm|<‚¿Q¦ðàc¶e'GÖÎs²#“îžàîúRxp=‚oq€èLÜuÜmÖ¬øÿúÂse—îœ~«Än#ºØ],dä@wXñ×ñÇ]ÇÝfÅßH,^`~©Ç?úÈ‚gzΕŒŸ|ò‰,8p`ÉÇ+-ÌÊûl¥ý,êãøëŒ,î®;…×#øˆÎÀ]ÇÝfÍŠ?…;"D\€ùPþzÜ¿nâs þF›ÂƒÏY§Ÿ++ç9ú~÷wכƒë|‹Dg à®ãn³jû¿òê+²+?øã1;îÑÖîZ¡#ºÃ‹¿Ž?î:î6+þVÂƱrçØ5“xòñ'Klhh¸×.ÛJ>l¸Än»[bÔí÷Ù¨û[´õñ×QÜ]w ®Gð-)€»Ž»ÍªíOáa¸ ¢G.Àñ`dž˜ž`éÙ–ë÷r:é?†iãæ{ÍûÎ!›|[Vøío'ñ µÍwAôßñDiÿá—”î ÂRí÷Ù »Wø‡ñ×bÜ]w ®Gð-)€»Ž»ÍªíOáa¸ ¢G.ÀápË>fù£W”åß9óF‰ßþ¶ùD„4"ܤõ>a‚^áÇÝu§ðàzßâÑ™¸ë¸Û¬iùSx°Â¥#¥]|-Åß—´›w×Ãw WœÂƒëQÔVZç9EõJêyáîJRxp=‚oq€èLÜuÜmÖ¤ý<ü`éúÎ{þ.qäÐ$ŽèÛlÚ+™o ¿ã?í¤=cŸ!{2ÿ³$n¸Ðdüuüq×q·Yñ7sž!wæ>6Kâ½û/•¸Ýp _Ü ¹¼›Ü¹n¼ÄÁƒñX”;I¿ÏFÉͺmÚà¯3 pwÝ)<¸Á·8@t¦î:î6kÒþ¬lùÈ@yŸ´Å?máÒýã^ÚÅ×Rü4…_3.y’>ÏÉÆ³Êþ^à×#øˆÎÀ]ÇÝfMÚÿÃ?”®÷Ým;‰{ üDâ¹[šO:Hã¿7g=cîÝØ«ŸÜ鿟‰öñ¢G.tGÜuÜmVüÄ{?{WîtXl>é°‘ùà]›™_WZ½·‰?{º§¬÷Ñ̹–0VLú}6ÖN¼þ:ƒ»ëNáÁõ¾Å¢3p×q·Y“ö§ð`eËG.Êû¤ý(þi —î÷Ò.¾–âo¤)<øšqÙÈ“ôyN6žUö÷wwŒ(<¸Á·8@t¦î:î6kÚþ¿>ó4Iuûµæ÷Ï?Ì|×ÃëæƒmNß]ïÒ7ì.¹Ðfüuüq×q·Yñ·&6n~½¢~’ùD^£oÍ“Ö\e-‰Ï=k~ÉݺúVÚï³ÕïI˜kâ¯3î\à[ :Sww›5m VÚ\¸¾[øû7ùp×q·Yñ·&Rxp=ŠÚJû<§¨nµ>/Ü]A ®Gð-)€»Ž»Íš¶ÿmwÝ&©ÎýÛ™g<õ¾Äã74[{õ[í¥½ê×–Ê º#¿Ž?î:î6+þV¢º¸èYó‰ˆ3w;[68äÀC«Û°ÅZi¿Ï¶HG³…þ-@<5qw¡)<¸Á·8@t¦î:î6kÚþ¬´¹p=|·ð÷-nòá®ãn³âo%ª‹ªsÊúZiŸçdýùkíî®<…×#øˆÎÀ]ÇÝfMËúôé’b—£v’Øé°¶6¥ÄÏn6¿~1kì|i¯~ù[ÚvÚ9ëµÁ€îÈâ¯ã»Ž»ÍŠ¿•ˆo2ŸÐ{á—dÃ=zDê ­÷ÙH;ðÊøë >î®;…×#øˆÎÀ]ÇÝfM˟ƒ.¹(íâk)þ¾¤Ý<¸»¾[øÇ§ðÏ-+[¥už“•ç—ÕýÀÝ ®Gð-)€»Ž»Íš–ÿ‡î.)>ÜdŠÄN+u´)¸èãFiwÔÙY^ôº#Œ¿Ž?î:î6+þV"Zl˜ºP6ØlöÖo¸ìÆH¤õ>i'^ÁÇÝu§ðàzßâÑ™¸ë¸Û¬iùSx°Â¥#¥]|-Åß—´›w×Ãw ÿxââ¹ee«´Îs²òü²º¸»#Óv§vZæ.Òm;Vv`Ô¨Qº;hvüuww›5iÿ>2¿ZñáóíW ã;¬gµÑžÈvÞµÚMX/AüÄŒÐî°RXÿÚP—~f.V°†tÔw¥¾%;\ºÔ|'D»væý/é÷Ù’IYتþ­Ò¤úî./…×#øˆÎÀ]ÇÝfMڟƒ•-¹(ï“ö£ø§-\ºÜK»øZŠmÒjóÓÚ:éó­ç‘·¼¸»#ÆŸZ¸Á·øHÎÀ]ÇÝfMÊÿÝ÷Þ•.9í ‰÷·ˆ¥øÈs)Ëð÷gýÕL¸UÃÿ}ü“1_xÍbé¨î_oKlß¾½Ä믹Zâ9gŸ)ñ±'þ%ñ¤“N’8fÌ‰ÜøHê<Çï^ç?îîRxp=‚oq€èLÜuÜmÖ¤ü)i?Š2Â’qôÕKRç9¾ö·(ypwG’ƒë|‹Dg à®ãn³&å¿Åî›K— ÷ù\bûnæ€l¢+À€ëá»…¿oq“ww›+Q[¬o~åbëúí¥£É¯šïh¾t¢´o~uÄú…‹$î±Çùă0x¿Iê<ÇûŽçi?Š2Â’qôÕKRç9¾ö·(ypwG’ƒë|‹Dg à®ãn³¶æ?oÞöß“$¶ö>›ÌÞÐK%ü+ ¥ó8î®+…×#øˆÎÀ]ÇÝfm͟ƒJ'rŽkµ½â_­T²ëឬgÔÞð*Vz} ¥]²º´µóœ¬îoQö ww$)<¸Á·8@t¦î:î6kkþ·Ütƒ¬rÊOO¸çZæ÷ÈGö©—öˆþ¦‡W?2ñòe}äNÿ#™Ü–à ,OêâŸ:qɸ—dñ¶ÿxÔ‹f4Ɇ³®œ*qßÁæW-þ²³ù¤ƒíõϯ™{ã)w®¾î&‰­½Ïšµ¹M[ÿ´…K÷»ëBáÁõ¾Å¢3p×q·Y[ó§ð`…Ò‰\¤ãZm¯øW+•ìz¸'ëµ7ü£Š™õ)<ÄsËÊV­çdeÿŠº¸»#KáÁõ¾Å¢3p×q·Y+ù_rÁïdÕ+.>_âèo›oë^¿Ÿéá_ÓL<ôù.rgÐ髛ܖà ,OêâŸ:qɸ—dñ¶ÿxÔ3îøX6üðñÏ$®9ÈüjÓ–ƒ—I{ëæ“£'v”ö¾§\#ñ¨£Ž’Xé}VVâ&5üS£-Û1î.…×#øˆÎÀ]ÇÝf­äOáÁJ%¹HÖ3joøGKf}Ü“qŒÛ þñä(<ÄsËÊV•Îs²²ŸEÛÜÝ¥ðàzßâÑ™¸ë¸Û¬ÕúOžZ:Õ|Äm·ÿCßv›m%Vû>›ÌÞÑKKü[Šøiãî:Sxp=‚oq€èLÜuÜmÖjý)îÉ8Æíÿ¸rñ¶£ðÏ-é­*ç$þŒîîL ðàzßâÑ™¸ë¸Û¬­ùß|û_e• Ÿù½ÄÎ[t°›à ĺÀ¿¼6޼6Å?Ä]4Ï],kø;ó+P³?]vëéÓ§Ëã (»Fhí<'Z/¬UwWŒÂƒë|‹Dg à®ãn³¶æOáÁ ¥¹HǵÚ^ñ¯V*ÙõpOÖ3joøG«m} µù%µukç9IõO?¥pw](<¸Á·8@t¦î:î6kKÿ>úHÚýØÝ$v2_ñ`W'&$À@B1»Á?&\›á^#`›ã_#`ÌÍß=s²lyáÙ”øãïÿXâŒæ“{í¼­´7Ùt3‰W\s£Dn’hyž“L¯ôRIwWˆÂƒë|‹Dg à®ãn³¶ô§ð`eÒ\¤ë[©wü+ ¥ó8îé¸VÛ+þÕJ%»…‡d=£öÖò<'êö¬Ow׃ë|‹Dg à®ãn³Zÿ›nºI}ÒQ§oùÄN}:Jä&Y.’õŒÚþQÅ’Y÷dãö‚\¹Ú¶³îÃW.°ñÞ¯¼ìOwÞ$q­oŸ!ñ̳ΑÈM2öwÔ2‰r;ìõÇβ`ÚGŸJìÙ³§»­š8Ϭ‰/öƸ»t\à[ :S÷tÝ)<¤ë·w.âÊ%³þÉ8Fí÷¨bÉ®²ž•z£ðPIÈÏãœgúqn™wW„ƒë|‹Dg àîÇ}öìÙ’hß]Íï…oÞcš´ß|Ä1G˜ýhž‰^·žÜiÛÎ|÷ƒYÊmR\$%¯üã¹Õºîµ Ö¶=þµùEÝúÝÿ#›4Ö›ïtØz ó~ºÃ óɇÁ=L<ÿÍ²Þø©æQó°~yÎ3Ëû¤õ(î®,…×#øˆÎÀÝ;…?ÎÕfá Z©tÖÃ?×J½â^I(ÝÇñO×·eïZŠè´9ÏÄ]GÀÍJáÁõ¾Å “ÎÀ]Ç}·ÝÌ'ž~òYÙ7~hþçe¿ûÛK»ý‡Kì6¬«Dn’à YϨ½áU,™õqOÆ1n/øÇ•«m»÷Ο" ؽ¯ÄE“ê%6›'qÄZß”8æqókSÒà&1Î3£ŒÔî.…×#øˆÎÀ]ÇÂƒŽ»ÍÊ€•Љøã®# ›•y¯ãOáAÇÝfå<ÓJø¸»Þ\à[ :Sw¿îÏ=ÿœ$üÉ?’8åõ©;Ï7¿~1°ýi/Øm Ä•¶î-‘›d¸HÖ3joøGKf}Ü“qŒÛ þqåjÛ®’{ãӿצÎûöù’h¿½÷«-![;œg:Þ¸»Ô\à[ :Sw¿îüz·–­Ò‰hkÛ±<ü“qŒÚ îQÅ’]ÿd=«í­’;…‡j%ã­Çyf<·Z·ÂݤðàzßâÑ™¸ûu_wóu$a·ã:HlyBôéõÊò¶4Ÿtè¾vw¿;H¶–î<íÌÎB#Ày¦ÎLÀÝu§ðàzßâÑ™¸§ëNá!]߸½G=›‡íJ à_Ú%í¥¸§-\¾üËû¤õhTw ÉŽç™ÉzVÛî®…×#øˆÎÀ=÷yóæIÇ[î·¹ÄÎG¶+™(ê QÉNXY÷Èd‰n€¢œUw†{ÕT©¬ˆ*¬;ì¾ü;–]c>ùðö ï89.»øi_zÉÅÇ<ó‚ÄUW]ÕY†àM*1ýˆþ:ww›+á7Fv§ðèqž™(gÕáîRQxp=‚oq€èLÜ“qÿøã¥£qãÆI¼üó·¡ïš$í.ƒ:—Lù„¨d/,Œ*€{T±d×Ç?YÏj{ýZ©tÖÃ?×J½Æuox×üÊÅÖ wãž~FâÆ=>’xÝ+æñEÍ•v!èÇ9ÏÔ~Ü]w ®Gð-)€{2î’qôÕKÜQ_ûWô<øëŒ0î:î6+þVÂoŒëNá!™qâ<3Ǩ½àîŠQxp=‚oq€èLÜ£¹Ÿtüq²Á;ã^“8î÷$vjgþtµÞ&ÖÍ0ÿ²úåë”M÷„¨l§ùð­A¦¿Mom/wæ0TbuW0´¸­ö„¨Åf4kÀ½FÀ7Ç¿FÀ˜›ã.¡ÍðO2b7ÕºÏø«ùµŠž™#VÐNâVƒM­™O>Üñó+U?úÝmòÀ`Vඤç™%YR_ˆ»KLáÁõ¾Å¢3pçNá!ž[V¶ªöD4+û[´ýÀ_gDq×q·Yñ·~cµîÒÎ3Óq­Ô+î®…×#øˆÎÀ½6÷³{–tpõ¿—ø½µÌß„66-“öèá$öÛu%‰-oª=!j¹íÚp¯Í¯Ö­ñ¯U0Þö¸ÇsKj+ü“’ŒÖO\÷†i‹$QÃ$󉯥“êMâÌÏZÜwß3ÒÞhÔFÑv(°µ9ÏÔpÜ]w ®Gð-)€{mîjóÓÚ:Öþ-/þ:#Š»Ž»ÍŠ¿•ðãºSxHfœ8ÏLÆ1j/¸»b\à[ :S÷xîuo™_µ8âœïH÷1ýÌ]þ»ßó–ÿîwçu{Èýd¾ë¡e¶¸'D-û¡M÷h^I¯Ò¢Õõ‡{uNi­…Z²åûMÚ}ñ<ó‰‡^ÿì'‰Ÿm>ùP~/Â}”óL±ÇÝu§ðàzßâÑ™¸Çs§ðÏ-+[%}"š•ç•—ýÀ_g¤p×q·Yñ·~cÒî¢ç™Ñ¼’ZwW’ƒë|‹Dg àÏý[;m,.9h¡Äv]Ì·_ÛÞìß„.žÙ$‹Vܬ—}ȉIŸ9ÓhU÷Vi¼<€¿æ¯%Áýk$^àï•û‹di¹7¼Ö(9Ž[ÿx‰'þè¤/rrçKÎ3¿´ðywW›Âƒë|‹Dg àÏÂC<·¬l•Ö‰hVž_Ö÷Â]ÇÝfÅßJøi¹Sx¨n9ϬÎ)éµpwE)<¸Á·8@t¦îÑÜyÞ/dƒÑõ÷Jì¶N—h´X;­¢ih¶À½ˆç&þžÁ—§Ã]ÇÝfÅßJøi»7ßmžÏè+”;Ç÷û3žóLÂÝu§ðàzßâÑ™¸Gs§ðÍ+«k§}"šÕç•ýÂ_g$p×q·Yñ·~cÚîÊ'ç™å}ÒzwW–ƒë|‹Dg à^û3Ïšo­>ñÏæo9;îÒ¶º +¬•ö Q…ôÁ>Œ»îÐã¯ã»Ž»ÍŠ¿•ðÓvo\þ]NÃÆ®.Oì¡Û.ûg̘!÷ëg~£ìÊxóLAÄÝu§ðàzßâÑ™¸WçNá¡:§¼¬•ö‰h^´öyÜuÜmVü­„ߘ¶;…‡òãÉyfyŸ´ÅÝ•¥ðàzßâÑ™¸—w_ºt©¬°Þ–ëJì~\ÇòD|4í¢ˆ»Ìê¸ë5þ:þ¸ë¸Û¬ø[ ¿Ñ—ûÂͯX²åiò>â‰&L¸×®ÛKÜgßý$^xÉ‹~Ãy¦ÎãîºSxp=‚oq€èLÜË»Sx(ï“×G}ˆæÕ'íýÆ?máÒýã^ÚÅ×Rü}I»y|¹SxpÝm‹óL+á7âîzSxp=‚oq€èLÜû§Ÿ~*wêêê–ÇqxÈ|]õ¬mçH»ë7:KLêÆ× QRû[”~p×Iüuüq×q·Yñ·~£o÷¦ÛÌóÛcýíäÎßïü«Äú5JÜì¨?H<é§?•XôÎ3uFw׃ë|‹Dg ànÜ)<èÌ?­¬¾ODµžgVóâ¯32¸ë¸Û¬ø[ ¿Ñ·;…w|9Ït=|µpw¥)<¸Á·8@t¦@¨îß=Øüå˜'žø¶KK1¨“Ä z×K¼ímó}O[MÚ]ñ‰ÈùïÑœs%¾ûø'NZU‡¸WÅ”ÚJø§F[¶c_î §.”ý˜~Å4‰?\w™Äó·_"qóÛzI¼ä–HÜl³Í$ý&ÔóLíqÅÝ ®Gð-)ª;…ù–•¬¾ND³ò|³¶øëŒî:î6+þVÂoôåNá¡ô¸†zžYZÃßRÜ]k ®Gð-)ªû}÷Ü%à‡~¸Ä5ŸlØeUó?v4öþ{;¹ûï­Kì½iOûP"Ñ× Q";[ Np×Lüuüq×q·Yñ·~cÚî3oüPžP—‰ó%>°¿ù„ÃZ+¹Ï³Ý¹¦½dù¯eµmÛÖ]¡ ­PÏ3µ‡ww(<¸Á·8@t¦@¨îtæ[V²¦}"š•ç™ÕýÀ_gdp×q·Yñ·~cÚîÊg¨ç™åUÒwטƒë|‹Dg „îÞØh¾ezŸ·–²ð ‰×ïi¾óá·Ïšqùs·¾r§ÿÌ‚„nÓ>!Jh7 × îºCŠ¿Ž?î:î6+þVÂoLÛýß'ü[žP‡eæ“ßb>)¹Ý@óIÊ>]Ìò[>\]Ö{í­ ~”³…~ž©Å»+OáÁõ¾Å¢3Bw§ð 3ï´³¦}"ªýü²žÂ]ÇÝfÅßJøi»Sx(?ž¡Ÿg–×IïQÜ][ ®Gð-)€»q¿î¯×Éß^ºÄoÍ’xæfæ,.ø¸›´œ¼ªÄ¤nÒ>!Jj?‹Öîº#Š¿Ž?î:î6+þVÂoôå¾x¾ùn‡ú) òM2±ñÍyÒÞü›æ“•£ïã@9ç™:€»ëNáÁõ¾Å¢3p7îtæŸVV_'¢ZÏ/ëyñ×!ÜuÜmVü­„ßèËÂCéqå<³´KÚKqw…)<¸Á·8@t¦@èîS¦NøýNØGbǃÌ84}Ö,w>¾p²ÄÆóɇµ.]ǬЭ¯¢„v·0Ýà®;”øëøã®ãn³âo%üƬ¸7>a>qá Àn;ïæB)[èç™Jìmpwå)<¸Á·8@t¦@èîtævÖ¬œˆj;håÇ_Gww›+á7fÅÂCXbâw–=[èç÷-E(<´ ¼Í¢3Bwßaÿí~ööÓ%vìÙ¡ä@,oþVs…5Íw=”\)ÆÂ¬œÅØõ\o‚»îðá¯ã»Ž»ÍŠ¿•ð³æÞðó«Yï4÷7Þ|C <ï‰öÑýÛʬéÌBÿYq÷oþÕŒøUÃß}ÜýY—Ê„)•ô—eÕ½éQókYWÿ¿kaË-¶,‰1cÆ YÞ¯_¿’g}ahç™YÜÝ‘ ðàzßâÑ™¡¹SxЙgYËšÕѬ9¥µ?ø§%[¾_ÜËû¤ý(þi —î?«îJK“íü¾’…‡JB=΢3ࡹo´Ã(^vX£ÄvÚéÀ/ÏšÕ"UÉq÷€\&þepR|÷q«èÿ*RX%«îK›—ɳ]v«ù5­7ž~Óyö¿=çtißtÓÿõâë謗õFhç™YÜÝ‘ ðàzßâÑ™¡¹SxЙgYËšÕѬ9¥µ?ø§%[¾_ÜËû¤ý(þi —î?«îJK“íü¾’…‡JB=΢3àyw_²d‰ÀÍš5Kb]]Ýò8ÎÄW_øÚk/I\¼g‰=Fu—¨}“Õ"m—´óãž¶pùþñ/ï“Ö£¸§%[]¿øWç”ôZYwoxÛ|s›¦íä©?ûð?$î:h¶Ä[Þj/qæœùóv“÷ó̼yÛýÅÝJ˜HáÁõ¾Å¢3òîNáAgÞä=kÖODóî[iÿñ¯$”Î㸧ãZm¯øW+•ìzYw§ðìxÓ›Èûù}ÒãHá!iÑœ÷Ç¢3€yw?ùÄãî†ë¯“¸Éð®Gôi0±o³ÄG&›_¯xq„ùÛÈ•wê#˵o²~B¤í“V~ÜÓ’­®_ü«sJz-Ü“ÖþѼ’Z;ëîŸÝù±<Õöc?—8ú@óIÎ)sÀÕ3¶’;yÖ,ÈÙmÞÏ3sÆýÅîâþ…Ü¡ðàzßâÑ™yw§ð 3oòž5ë'¢y÷­´ÿøWJçqÜÓq­¶Wü«•Jv½¬»SxHv¼éÍäýü>éq¤ð´hÎûãÑÀ¼»76š¿<ò}°ýGæ»nÛÓüÏU½Æ|t›óæõ’EýbRY?!RÅI19î)âVÑ5þU ¥° î) FèÿX ®š5÷†‰æ™^6Mžåi›-•xúææW.ìS?ëóÝ·?CyÖ9ö¡\żŸgæ û+;‹ûW0þ{—ƒë|‹Dg ä݃μÉ{Ö¬ˆæÝ3êþãU,™õqOÆ1n/øÇ•«m»¬¹Sx¨m<Ùº:¼ŸßW÷,«_‹ÂCõVA¬É¢3ÌEs¿ýÖ¿ ä±ß?FâÇ™ÿIèj~&»ÍþOv–åƒÏ^C¼EÖ¬µØ½Â6q×Züuüq×q·Yñ·~cÖÜg\÷|òÒ<‰«ô5ßAµÅ`ã²í sÞrý[æ|åÜ¿< ì²Ë.f…œÝí<3/ü¸»#EáÁõ¾Å¢3ŠæNáAgå-kÖNDóæWëþâ_«`¼íqç–ÔVø'%­Ÿ¬¹Sxˆ6~¬O hç÷ñ¾ÜŠÂ×Üû¯ˆÎ4(šû=÷ß-gÿýL‰s_6C¹[ï&ißú†ùÊ ®YO¼EÖ¬µØ½Â6q×ÚÿßÞyHQd|YÂ’£dÉ bÀ¬‡¨`ŽˆÈ©?1z†Ó3çSQÏœAOÏOEOÐ3 ‚`– *’AI’6³»?î½®…*¦§{º»ª¦§¿ÿÌ›Wá½êOUMW¿®é;üÁÝwáü ³2Û¹/)! …óŠIVþ²‘-ä|ð5é=wêÉé1û̵uf\ðƒ»ÜS<È<¯a‚عÆ;ã(n^³}!7ž™¶ü3%Myp†cP+à”\¸zÙ·pý‹Ú© äÚú>õQúOEàÁ?«D”ıÓ͹Â}õêÕðà¡ýIÖ9ÿ3)¨®û`%}]õ—ëxý¤×nê<üA4,³}Ad‡1wàn uJGàŸ‹öDp׎8­ðO‹G[f\¹—­)'&í¾ìDòý×>ÐÆH§á\Ygêd¤Ã6¸ËTxy$^ñ3r…;vÆO\½Æu!WÞj»Á_%bFw3œÝ¼€¿½éqåŽÀƒÞq‘ëÖse}U?Õ8p üÂÚ¨,´3mÚ4ªÙ·o߀P- ðC/xÝ\á>cö ‚Pܰd~ü”P*7ñÏN~-yGDÊ‹ð:ëw®gÀ\à.HØ‘àîvØõŠqo‡ܹW¬ãg=tlÌ;Ú·s^agÆ^se™ñ[®îr ð óH¼† bgä w쌟¸zûB4®ÜE»Á_0+ÁÝ,oÕø«DÌèqçŽÀƒ™q’k^re}U¿à¯Q‘Ì;Ød§#ãÎý‰gŸ p}sÉzûÔ±2 ×¸n x¸YS ÜívøÛáîv¸ ¯à/H˜•¹Â½üUæöÞSü¬‡víÚ™Ð[Ü×™Ûz5p—»™Gâ5L;C îÜx°3nâî5W¢qíð·Ósàn‡»ð þ‚„Y™+Üx0;nâî-îëû¨ù#ð5јÛñÓqå>ï×yìÄK‘¬=8«ã»3seAäû€³¤ ¸Ûíð·ÃÜíp^Á_0+s…{Éo¥®ÇœIŽyæÍ´ ÅC·[´h‘¶œî̸®3usÑmÜeÂ<È<¯a‚ØqåŽÀƒñ’+^se!×þ;=îv¸ ¯à/H˜•¹Â³ã&îÞ⺾×Å]dcjÄNÇÅ•ûAÇ÷'`k® Y«q-;CzÍ•QH Æ«ƒ»qä’Cð—pSÀÝꔎÀ?%퉹ƽø³rbvÃa7‘äqGJòìáç’¼yä$m}Äui‹WT~Á]&‰ÀƒÌ#ñ&ˆ!Wî<Ø/¹â5×¢qëð·Ócàn‡»ð þ‚„Y™kÜx0;~âê-®ë{]¼xÐE6¦v1Aìt\¶p_³f ˜2e É™3gœ5åKGÿŽõ¹ Hv:¾-ÉfÇ7'×\[Å¥ÀÝnO¿þàn‡»ð þ‚„Y™«ÜËžgŽwß›¾Lzï ’]›ðŽˆ£/y”ô³Ï>› ZúÌ–u¦¥Ã·æÜeô<È<¯a‚ØÙ‡Îv@B½æêB4.Ý þvz Üíp^Á_0+s•;fÇQܼeËú>[¸!ð-=‘%íÀ±ÓÙÂý«/>'⿉Ãúl"}—í8r¿Kkæ3ï–—þÒ¾´þkgNˆég®.ˆ²½;ÀÝn¿þàn‡»ð þ‚„Y™kÜ7Î)$€ËF/$yÍÞ5H^w@ÉŸjLòßïA²wïÞ$m}dË:ÓÖñÛò î2yd‰×0Aì láŽÀCg; ¡^sm!·n;=îv¸ ¯à/H˜•¹Æ³ã'®Þ²e}Ÿ-üxÈ–žÈ’v`‚ØéˆlãþÎØ· Äñ' "9f(GòOèQIú/ü(ˆ¼}^å·Xt¹g';à"òšk ¢ˆ°h7îÚ§uþiñhËwmh}_˜"/{îUŒä÷Çx‡CË•E”0nïph߈ó yƒh^ëêPÂÆ¢Rΰü™mëLË8Œ¹w52Äk˜ v†@¶qGàÁÎ8Hš×Ø/DcÞaào§ÁÝwáü ³2öÜx0;`rÄ[¶­ïmcEàÁvd™L;’íÜwÙ©éQwÉ×OàwðNˆÞ£zRz~|;Czý‚(äñÛªî¶È³_ð·ÃÜíp^Á_0+ãνª„×=s®œCàò+8±ûö¼î9¨ï|¨W“¹Ž/Ú¾|òÅ4³ ]¼eû:Ó¥Ù±Ow¹ xy$^ñ3²;vÆE®{ûB4îýþvzÜíp^Á_0+ãγã%W¼eûúÞ4gLÏr˜ v:([¹ÿd<¹ü™KI–¬%¹ü•å$[6æ#ºÞ [=’qûˆû‚(n¼E{Á]°#ÁÜí°ëãÞÿ\㾩w8Îãg=”þZL`K¦¯'9 ß‘$_yáM;À¯ÙºÎTš™s*¸Ë]ŠÀƒÌ#ñ&ˆ!­Üx°3’â5×¢që7ð·Ócàn‡»ð þ‚„Y™kÜx0;~âê-[×÷¶x"ð`‹|–úűÓ1ÙÆ½¬¬Œ@ì>`7’õ†;Ztðˆî’{~¥”–§oO;@¾äÚBÔ×AgQ!ð·Óàn‡»ð þ‚„Y™4îeò3!9o4î`³ÀoÙ¶ÎTš—³*¸Ë]‹ÀƒÌ#ñ&ˆ!mÜx°3’æ5i Ñlë_ð·Ó#àn‡»ð þ‚„Y™4î<˜_Ùê-ÛÖ÷¶9!ð`»²Ì?&ˆÉ6îg^|ø¶å—$ëu*°Æ×¤-ˆ aõt´­x]ƒ»+#àoó6N’ƽÊyëEù3ü,¬™“gmÃÄdB¶­3M»M_à.ÓGàAæ‘x ÄÎÈ6î<ØIóš´…h¶õ/øÛép·Ã]xA¬LwÌŽ¯lõ–më{Ûœx°ÝYæÄN‡d ÷ù7ùÞÍ$ëö«eˆa¯I[ÆëêÜ]ÑÉ#˜·qîÛ 1šþFqW;K*÷ÂÙü¶‹AO&wÜpG5“_²eiò˜³Á¸Ë½€ÀƒÌ#ñ&ˆ!-Üxèlg$ÔkR¢ÙÒÝào§'ÀÝwáü ³2©Üx0;βÍ[¶¬ï³… ÙÒYÒL;a›ûŠ+èÀþß’uN³ÃÁ–פ.ˆlñ~Á]°#ÁÜí°ëãÞÿ¤s/{·ŠÀ?}õ³$÷ÜcÏ”±hÑ"JïØ±cÊü ‰¶×™AÛ÷zà.÷ 2Äk˜ v†€mî<, ŽßñÊÎv@B½&}!j»ÛÁßN€»îÂ+ø feÒ¹#ð`v¼e‹7Ûëûlá ÚÀƒ I0Aì [ÜgÏžM|ù-—“\º×|’­êØaÉkÒD–°ç»-òìüíðw;Ü…Wð$Ìʤs¯(®$ào5$ùÕ_KpÕ¥þæ›o‘œ:kÉ&MšHå‚*¶Ö™AÛ›+õÀ]îId‰×0Aì [ÜxàþNú‚ÈΨÏCàÁxÇ/ƽw;Ü…Wð$ÌʤsGàÁìxËo¶Ö÷Ùrüj;xP‰$\DZ3tqðè€fLù‚äÌÓYŸÃ;¶oZ›x»š$·»¶+ë ûLú‚ÈVwƒ»-òìüíðw;Ü…Wð$ÌJpgÞÅ3JéËŸJû“|÷õ7HžÞ‹ß~ñÚ/IŸ·„Ÿ½EJºÖ™4-§M€»Ü½<È<¯a‚غ¸#ðà¯?± òÇ)êRà5ÑÌìf¼¢* îQ‘ füƒq [ Ü™ aGR¼êëZßNj–Ö"ð°…¾m&€ bgèâÞ´Q}: “{p„ýü=ø?†»¶áãÜÀÉyíΧ„^õ²À²W,ˆìt¸Ûá.¼‚¿ aV‚»YÞª7ðW‰˜ÑÁ9¯~f1}i6o#Éq'Wœ´óÇUM_^ó'Dô©kQórÖ ¸Ë]‹ÀƒÌ#ñ&ˆ! ‹;þú "œ¢.îQÍÌøgÆ+ªÒàÉ`vÀ?·°µÀ "ðv$Å«¾®õ}¼(li-[XàÛf˜ v†nîÃN>ެhÞd’o»V:Жñއ¶7íHéuš;Ï~J宂‘¾w;Ü…Wð$ÌJp7Ë[õþ*3zR¹oœµ/µˆä½‡2ï ûVIà/ý¨€ô.Cî$yÉ%—JùaÝḛ̈íËÕúà.÷,2Äk˜ v†€nî<¤ïפ.ˆÒSÑŸ îú§óþéèèËw}lýX?”¢/“TîN,þ×VâÖcšÛ‹ ¢°‹ySÜO;ãdjÁ«/¼NòíS¸A÷Nå·Z,=j{Jh²k#ÎHÈgRD¶»ÜíöøÛáîv¸ ¯à/H˜•Iåþû?y§ÃŠ©¼ó¡m³~¿öÌ¿[~öÖ¨éu)áÉ1Hî»ï¾\ ¢OSë̈š›3fÀ]îJd‰×0Aì SÜxHÝ¿I]¥¦a.ÜͱNå üSQÑŸîú§óþéèèËK*wô©8X6µ¾‹ÿµ‡¸ô”¡vb‚­¸ÑÍýÛ)ß’ÇáwŸE²Ö‘Ü€•̧/ W•Üp@K’­aÉ¥rÿ3© "Û= îv{üíðw;Ü…Wð$ÌJpgÞ%Ëøub…óŠ(¡b^!É xçÃäOg‘Þ±cG®ѧîufDÍÌ93à.w)2Äk˜ v†€nî<¤ïW,ˆÒóÑ• îºÈú³ þþ8E] Ü£&š™=ðÏŒWT¥ÜÐVh@IDATÁI"ðÕˆŠ‡ÝëûxPØÒJ¶°À·Í0Aì ÝÜwéׇ¬öYüå5ù?†âhW¿»‚¾ÖmÇÿ1l°{c‘•‰‘nw;Ü…Wð$ÌJp7Ë[õþ*3:¸§ç\º¢Œ tžÑä¸Ç¥¯a®îuf†ÍILqp—»™Gâ5L;C@7wÒ÷+DéùèÊw]dýÙœ¢.îQÍÌøgÆ+ªÒàžž$éùÄ5W÷ú>n\xˆ[in/&ˆfÀ.æuq¿ôúKÈã‡UߣžK œdñZiyCDú:9‹‘Nw;Ü…Wð$ÌJp7Ë[õþ*3:¸ûã\üï|¸ú ë©Â°S†ù«èQJ×:ÓÃmâ³Á]<È<¯a‚غ¸#ðà¯?± òÇ)êRà5ÑÌìf¼¢* îQ‘ füƒq [ ÜýDàÁ§¸”Òµ¾Ëñ«íDàA%’pÄΈšû}@rå󗑬3 ßÎÅÄ+Dv: Üíp^Á_0+ÁÝ,oÕø«DÌèàžç²y ê„W?¥Š-Z´ÈÌ€R:êu¦bª p—Á ð óH¼† bgD͇Ìú ¢ÌxEUÜ£"Ìøã¶¸‡%®>ø‡ã´6¸gF‡Ìxeké¨×÷Ùzœ~Û…Àƒ_R )‡ b§££â^RRB°Ça{¬wv:øéQ,ˆüPо ¸GÏ4‹àŸ ­èÊ‚{t,ƒXÿ ÔÂ×÷Ì/áõÜn‹÷¢Š/=þrZëׯ§üÆS¿•,ªufÚF sà.#AàAæ‘x ÄΈŠ;Áú ¢`ÜÂÖ÷°ÃÕÿpü‚Ö÷ ä¢©þÑpÌÔ ¸gF ‡Ìxeké¨Ö÷Ùz|™¶ ‡L‰åxyL;”û?ü@ ž1cÉçßxŽä¢Ý瑬ס.I|¤'€Qz>ºrÁ]YvÁß§¨K{ÔD3³þ™ñŠª4¸#Yúé&ªxË ·“<ñ¸INž4‰ä ÇEòÚëo yÅU×T?‚®3U;Ð3#î2/d‰×0Aì  Üxˆ¦¿° Іc¦VÀ=SbÑ–ÿhyúµî~Ié)þz¸zYw/B©óxHÍ%.©A×÷q9¾LÛ‰ÀC¦Är¼<&ˆöâ>üŒS©aÓ§~Cræœù$»·mH²Ws~ïó3g<<»3¥ãÃ,ˆüqŠº¸GM43{àŸ¯¨Jƒ{T$ƒÙÿ`ÜÂÖ÷pKŸæ·\ìÛ±šûíx’MjóŽˆa7=Mú!CR:òZg¦¬„ÄÐÀ]FˆÀƒÌ#ñ&ˆ!àŽý‚‘^¾nÖÁÝŒ™tð7ÃYõî*³:ø›å-¼» L"ðŒ›íZ^ë{Ûí3íÓijÜ&ˆòâ~éùgQþ?†ä‡'o Ù¸@no·'jRBÝ ºÄ3d>nDndô¦ƒ»^¾^ÖÁß‹ž|p×ÃÕ¯Uð÷K*ÚràŒç†éü¶Š…-&÷Vƒä{T’ì4ªÉÉSù™_;v$]ýðZgªå¡GCÜeŽ<È<¯a‚Ø^ÜxÐÛ/XéåëfÜÝȘI3œU/à®1«ƒ¿YÞ¸ ™I2ã•m¥½Ö÷ÙÖ^ÝíAàA7á˜ÙDZÓa~¹4þCjàñÇCòÉcø¿}§îÌÿý;éí|JŸºw;’-öoJé `A”ž®\p×EÖŸ]ð÷Ç)êRà5ÑÌìf¼¢* îþHVmâõÜo9Ïò*/¥ŠcUlT‡íü¶‘åîÏ6¦/ËW­ã—O¿ëL—êHHÜep<È<¯a‚Ø~¹#ð §° ÒÃÕË*¸{Ò›þzùºYw72fÒÁß gÕ ¸«DRë<¤æ×T¿ëû¸_¦íFà!Sb9^ÄNgÊý‘'¦†Þ}ßu$w«Ëo³8¨ GĬтÒ[ŸÒÖÎÅÌ+Dv: Üíp^Á_0+ÁÝ,oÕø«DÌèàîsùêr*øë­¿¬(åg9ìÖw´Ô–×y5ycDÞ¬úQ¹ÿ¼?¤ÛG¦ëL7;HÏŒ¸Ë¼xy$^ñ32åŽÀC´ý„Q´<ýZw¿¤ô”=\½¬‚»!½ùௗ¯›upw##§#ð 󈻖éú>îÇëÕ~¼%,ÄN‡ûå>÷§¹ÔÀ“¯L²ö‰ütãõ_­%}Á¿–’lÑ…_wÑþúHÇGzX¥ç£+Üu‘õgüýqŠº¸GM43{àŸ¯¨Jƒ{0’żã¡ð×"2P2Ï‘Sø™ÇûgJòÑgÓ:ð»ÎLk™w2Äk˜ v†€_î<èé,ˆôpõ² î^„ô惿^¾nÖÁÝŒ™tð7ÃYõî*:þ8ek)¿ëûlmÔíBà!j¢1·‡ b§ýr?à¨ý©EÇð‡š jJ ®tþ ¸~¿÷¹éÞx«…ÈEÁ‚ÈŒædp× ØÃ<ø{Ò” îšÀú4 þ>AE\ Ü#ê˜+{öðÄßþE)ûî³oJG~×™)+#10p—Ñ!ð óH¼† bgøåŽÀƒžþÁ‚HW/«àîEHo>øëåëfÜÝȘI3œU/உFGà!Žº¬ø]ßëòŸmvxȶ±ÜL;àÅý–»o¦†½¶òe’õvæg8ØimîyÅ‚ÈNŸ‚»îÂ+ø f%¸›å­z•ˆÜõp®,ãg@ä¿Z—LùxjJG^ëÌ”•š¸Ëxy$^ñ3¼¸#ð ·_° ÒË×Í:¸»‘1“þf8«^À]%bV³¼…7p$¢•®«dŽ<È<¯a‚èÓ§M#Ç1€ä ûñN‡7¿/#}üéìÿ¢yÇÃØÎm(¡Õáü_=ÎÅgÔ° Šš¨?{àî“®Rோlz»àžžî\ð×M8µ}pOÍEWêªÇ’éN+y™_ÉÏ~Ê/KË›Ñfå?ö¯çt5v7Àu•< xy$^ÃÑ;xÐË7¨u,ˆ‚’ WÜÃñ [üà V܃q‹ªøGE23;àž¯°¥xK0šú¸®’9"ð óH¼† bv\pöiäð•W_!ùûåU$_žÅí¸iUúÒjDNÀ§XiÁêiÜ=i-þZñºwW4F2Àßæmœ€û6H"MØ0eÙûyÔb’Ïâ³ÃúðºòÐØ]‡íø™aý΄Î:ë,ÎÀ§¸®’±"ð óH¼† bv ð`–·›7,ˆÜÈèMw½|½¬ƒ¿!=ùஇ«_«àï—T´åÀ=Zžª5T"Ù¡ãºJîd‰×0AÌ^åôy ÇåkùY·Âí¸oNmúÒadw³ K˜7,ˆìt8¸Ûá.¼‚¿ aV‚»YÞª7ðW‰˜ÑÁ]/çßFñ3VÍÜHŽZ7áû´g¿³ó[ÓÊjÔ¥„±¦ìÝÛyèÃgÄp]%EàAæ‘x Äì@àÁ,o7oX¹‘Ñ›îzùzY/BzòÁ]W¿VÁß/©hË{´ÌúŠ9ü4âÞ£{Q:>ôÀ‚HW/«àîEHo>øëåëfÜÝȘI3œU/à®Ñ«—,+%…¿“ümÌï$[7åg<|ýåÖ[·&‰=p]%sEàAæ‘x ÄÌ@àÁ g¿^° òK*Úrà-ÏL­¦Ä¢)îÑp jüƒ’ WÜÃñË´6™ÓS×U2Wd‰×0AÌ #‡AŽ–î³€ä§—’;HÙüQ´€#Õõ;×I`A¤ª“àî’Æ"à¯nÓàžŽ,ð79… pOÅ`’àßá´¶äµ×/»’|í©× ¶"y®p]%÷92Äk˜ f†f8ûõ"NÈjàÇo}” F܃q‹ªøGE23;àž¯¨KƒÔDýÙwœt•üxÐE8µ]\WÉ\xy$^ÃÑ;ý9xòÇÇHÖß³€¤8!àÂW/7ëàïFFo:¸ëåëeü½éÉw=\ýZ¿¤¢-îÑòÌԚʿdò&2qÓQ7“<ùÄ¡™šDyp]%CBàAæ‘x Dï@àA/ß ÖÕrP;¨—pÏŒWÔ¥Á?j¢þì»?NºJ¿.²éí‚{z>ºsUþ<è&Îöq]%sFàAæ‘x DϘýÃl2|ÊuQ®3ˆß¯,¼©'‘i†ø›á¬zw•ˆYüÍòÞÀ]°#ÁÜí°ëÕmÜ—<È<¯a‚ø<øã—R^'ä¸GÜÚ îv{ üíðw;Ü…Wð$ÌJp7Ë[õæÅ•X4:®«dŽ<È<¯a‚øÜ{7¼cäßIÒ­6É]šmdÙºŠä¤…$ò^mÑ’¾´Üš”O¯‚RjÄÀ?b >Í»OPšŠ¿&°fÁÝælð× ØÅ<¸»€1”ì—ñ?7Q‹vmÓ…ä†y¼ƒ·t¯k/»ïUJ?âˆ# µ<Þnp]%÷2Äk˜ þ†þ8Å¥”ßr\Ž'.íw»=þvøƒ»îÂ+ø f%¸›å­zóË•\8×U2?d‰×0Aü ª*Žü^å%TaÂÛ/|û„µ$[5`;ã~byÁlNh}G9u˧ß–ø%ð’¦[àîŸ•Ž’à¯ƒª·Mp÷f¤³øë¤ënÜÝÙ˜Èñâ¿þ+^¿þü8?»ìÅkP³NëÃëÝæ÷>oÑr’Íš53ÑìØûÀu•Ü…<È<¯a‚ø<øã—R^'ä¸GÜÚ îv{ üíðw;Ü…Wð$ÌJp7Ë[õæÅ•X4:®«dŽ<È<¯a‚_}Éÿ;|`2pçþÜÑÝ8R¼Ës5)}‡z¦tàuBHY ‰‘ÿÈPfdÜ3Âyað©/ƒàî “¶B௠mZÃàžöL•eq%ù\þÀ|’{Õ-%9v§‹ý¼†¿=¶ }ùiïxùé àºJæƒÀƒÌ#ñ&H°!€ÀC0nÙRK=!gK»r½àn·‡Áßp·Ã]xA¬w³¼Uo*TBzt\WÉ\k 8oÉÊéÖ´iÓ¦‘ï¾}ûZkC’ƒ°Þ_¹j%Uœ÷û/$+Š9r\·œß‹¼¾˜§Yýîü¬‡5ù¿sÂ[Ñ‚búZ¿s=‘iø„½•+pß †…¯àoúf—àn‡»ð þ‚„Y îfy«ÞTþ%¼³¡d¯?«*xÚ¨.¯O›°^ål€(«ËogëÝgWÕ4ô4p]%ÃAàAæ‘x $Ø@à!·l©¥ž³¥]¹Þp·ÛÃào‡?¸Ûá.¼‚¿ aV‚»YÞª7•?*!=:®«d®ø«…Ì#ñ¶e66lØ@ö?n_’gæK6|·žôeÏ.%ÙñÊ®$ëµç§‹Âê8‘i†ø›á¬zw•ˆYüÍòÞÀ]°#ÁÜí°ëÕkÜ‹@Dá¼"jh±#˧ñ:ö䓆SúÃ÷$'~Å;HIÐGÒ®«¼º/B ËOÚAà!aÜåpu]Ü!Ù!îv‡øÛáîv¸ ¯à/H˜•àn–·êMTÒ²ž´ë*ùè·ÕxØ–I¢S’:AÄSw;â`êÿá=×’¼rïb’…üW¶¼æ÷Ö ½Ï½IFõ¡ë„UûrÝøÛéap·Ã]xA¬w³¼Uoà¯1£ƒ»În^¢æ_QRI®VZ@r÷M¥$ß>¹‚ä½_òzyåÎ%ýîû$™´¤^W¹õ3ndšžÔ ‚ÀCB¼sØQŸ“MÓÿу»V:J‚¿ªÞ6ÁÝ›‘Î௓®»mpwgc"'jþ<øëµ¤^W¹ÑAàÁLBÓ1A¸ãûÿ©/}Y»hÉ §pdwç§ø?k-®ÞÒ ZÕá !?£>!„lN⪃¿.w;Ü…Wð$ÌJp7Ë[õþ*3:¸›áìæ%*þë'®&‹_ùäkƒù™hÇ*>2¶1å½î)’'tɤ}àºJîqd‰×0Ax ð¬©Õ 9YÔÂ-¸‡gÆø‡¡¼.¸gEMð‚bæ6À=sfQÖˆŠ?™õ ®«d^<È<¯%}‚Lúl‹Fÿ…ä¦.%$>¸€dçf$òJOä÷7݃#ºœü3ªBð$»&øÛép·Ã]xA¬w³¼Uoà¯1£ƒ»În^¢âÿÛ£ ÉÅš I6¯Ï÷iÏòàv¼Cøö/ù-p_Ïø‰2:vìÈö™ôë*µ»xP‰$\OúAà!™ ªr2é?jpÎ.ŠšàÅÌm€{æÌ¢¬þQÒôo Üý³ÒQ2*þ¥7=¶5ɆÝPoÊÒþ£:!ø÷ˆ’[ÿ­i˜ûîæX§òþ©¨èOwýŒÓyÿttôå»>¶~,ëâ_ú{¹/œWD²ü'Þ Qg ?mÊ7?Sz³fΖa?Í¡2I½®rëBÜÈ$4=©‡„xç°u“MÕûèÁÝ›‘Î௓®»mpwgc"üMPÞÖ¸oËÄdŠ.þ<¤ïŤ^W¹QAàÁLBÓ“:Aνü\êñÏM$Y¯ ÿ7ÍÔ0ÐuB0Õþ¸û;=îv¸ ¯à/H˜•àn–·ê üU"ftp7ÃÙÍ‹iþÅ‹ùi{,Û—šôüèÜš–ÓéI½®rëTÜÈ$4=©‡„xç°MŸ“M{Ëуû6¾¿ êyyàn‡»ð þ‚„Y îfy«ÞLóGà{ ©×Uêø:‚$HÚyë·è¸osÉ‚ƒR?ÛA÷ð0}BÐ}óÄ(’7Àïžö;?Óáó]ÛRúv* Él9!:ܬsþvºÜíp^Á_0+ÁÝ,oÕø«DÌèàn†³›[ü7mäg9,¿w>5màvå$_:š×㢽Ӗó·Ÿñ³Ú¦ÎþEdÅZæÚuUØÎ@à!,Á«Ÿk‡ šÇÖ YÓáÄÆ,¸Ûí*ð·ÃÜíp^Á_0+ÁÝ,oÕ›-þ<J]1~üxµK©#ðÈnw?è\ <|7ã;:È3FžN²ö±|Ìkž_B_*g®'Y±kS’­OoÇ,}Ú:!X:ܬs þvºÜíp^Á_0+ÁÝ,oÕø«DÌèàn†³›[ü‹æl¤&-{’×ßÅ*Hï³=?Ë¡;ÞùPRÊÏx¨ÚíLÊýÄ3$ãþ‘+×UQõQ‘Ì;¹2AxÈ‘iè0l ^Öºw»]þvøƒ»îÂ+ø f%¸›å­z³ÅìxØz,"ð°5 |ÏË•ÀÞö Þ,Ü-É;Ô—zwý4çEÁåam¼ï| ùPJ~ã§îÖmSࣴ{·BÙþ/\æµÝ+‡ÈÙTÈ‘çZ ø-!L¥¬ZYÆ‘ìü:ÙNY(L"w_^?²#°%7þ ¢¢/àî “¶B௠mZÃàžöLð׎8¥pO‰ÅXb¶ðëÂÂ_‹éØ‹ç‘,Ÿ¾ä§]LòΛï$÷\¹®ŠªxˆŠdŽØÉ• ‚Àƒ¿‰ÀsÊ–²¿^ËRàn·/Áßp·Ã]xA¬w³¼UoÙµg’¥#ð¬þö<Ú¸®¾å*:Æ1_ñÖ}¶†ô^ôâcyg\Üøñ*úºfÒ$;Þ²£È $Õº÷V’²…ny~Ç@vÝ*­ýï ÊÊ/ç oãV4PúÚ÷Ø~ífu¨~ƒ}ƒí(qs¾öCæ_·;ïd©Û™¥[y¯ômø;ýZ—FTµvÓhß#½þ;~ÆHÞ É~~A´;BŠ; õºÔãChÜ Ž%Ëœ>íôìô)]YF® Zòø~£’åkù)ÛQ÷«hߦÎN¢†šv•8;‰ê†7ê¸í¯ÚÄ[‰jÔŠxà8ª*ûùzì‹ãÈVéÆ=[Û›kí;= îv¸ ¯qá_þnñ+wü›¾ôêÙKB,eܯ«¢†ŽÀCÔDcn/zB^‡Àƒ HÑxP€(* EEàaÙñÊÎ ¨&¨¿÷&|ÂG^¸ÛqáÀƒÝq¢Û;º ÇÌ~\'M$Òç^5”äî«I¾6…ï<îñìΤ‡ý(šÀv»Lã;ú“ð»bGE@â„Ð~/¾ÃÞæ«ßÉÒìB¾ÓÞad÷€–åjE“yH£ ¿QÆÒúuI¶¹¢«\0 Vôï©ù_~!óºÎ|<­†whQ®Vô%Û/ÿÛ/Þ³9h3$ÜŽ ÁûƒxgƆז±ãÃZ“luh ¹!µâ©ül‘Õ//% †¶'Ùlï&-ÊÕJœËžå§G·úK'*аG¹`@­dïÔXú ·ûkø}Û­‚íLÜÅXÉüÏ¥Ï2ÿ.#y'QT;BŠä§k¯xÇO§¿‡Û©¤b,šÅö7Læß‰Ö0µ\P½pó)û©L4͸ü7Îàþ­QÄ¿› ök´©)ëÎæöתÏ;A º„Û©¤:)ú…¹´åßµš?»¦Ôy¦Og¼×¸cC÷â8´ïÄqž&_«‘ž8ż§f½p;qUŠ-ÚaŸäÆ?ö;}x9ú™G*÷¨t7îQÙ‡ôâ¿|=ïHlþ1¯¿&ügbúËòܸ^WéŠÀƒ.²1µ× ‚Àƒ¿‡ÀCjNℌÀCj>"A"µDà!5‘ŠÀ“¿7"à#ø ð H¤–<¤æRŠÀC5 |Ù–€Ûïζ%í¦ ð`—¿nï<è&3ûq nÇC‘óL‡>?ò³8í÷|ŠïíøPÏP==çÚŸ¨þQíÙîU»³<æC¾“¼ý-ÝCÙ/šÈw`wšÉ;5ÎîÁöÏŸÍwÛ\nǃht›Â;5ŽïÈöo]Ëwò[Ó!\ûgutù†íïׂí?Ö°%Ùm;˜#ãA̹þgªº_3Ž´wmÀwîÞÛ‘ï(·nÇCñ7kÉ~ë‰|§½n>¯çößžÒ›íÕ8hÓ©^ñÞIÑ|<ïØÀ`È+9•ï¸7tž…ÔI±³“¢ñ»¼ÓaÑnó«v “­yœfj_,„:Á;Wêþ‡íÏ^Âü{:ó*?ä³ Jœ;íù¯óN¹ËØ~Ÿ'zgÚä”åKæðö²çQþª2~vA×{wJY>ÓÄÒŸÙþú'RÕ²†µI¶¿)ÜŽ Á¿ã Vdoõc HÖtv"´¾¨3éa?ÊæóSË—?°€LÕÝ›wµþ¿vaMSý²EÅ$ßý+ɇóñ´9–Â:)[RB&ÝÅö›žÌç›íúÛ"¸‹ÀCÙrž°Â~«ü{Ù¸7?&lûËW8öïžO¦Ú_Ö…dÝÏhíÚä¼}iÑ=l¿ã Ý(+ª·%U8ÏdYüð²ÛùFþÝ ú6#•ùþÝ_éìDkwÿnŠã +ËWñ3kÖ9;&·Âã'¬]Q_ð/r~ç÷ãßS‘VV¬çómÙ žõv¶ƒNå^Ý.çíb•¥ü»œõ³qøt•µ;Aª9hþâÊ_³ß æ‹¦ðïÖ_v¾ˆL\|Þ_ƒš²Z/n×Uºa!ð ›pÌìÇm‚ ðào€!ðžéù ðžéù ð óQ/xù¨*YGàA汆À!Qw¶á”e ‡¿Á;eæÂÏxhºG°ÅßòNŠ6x'ÅÇCØþ.ϲý²Ó;QKîÀ;[”æyªb'E‹¸ý“†²ý¶rGnw³ã!àÛ'æÜô µa—ºå$¿8…íÜÁ {âDAÿÓ-þRÏÙIñÉÉl¿åýlç†ÛñPò=?³ öÞIñÚ1lßó¼írw¸" QãåEÄgô¶?t2ÏÛv70ÏŽt)0çæy”Ó¹’ïÈÞ°Û¿jÏÛVòøq©î™,vj”?ÇíÿËÎlÿÞ žO­O ·ã¡ôWþý)vv‚œØí¿Ü–oÚnǃx«ÐúÑ èX÷mÇ¿_ïÁw¬[ü)ÜŽ‡N§ðïËš‡x'E—f<.?¶ùkÜ'ÜŽ‡²åüû¿ò^¶ß¨€»¬Öy]éKýN<Ž85óÏòßùüµìó¨rŸþò:ÜÚô°oÙ´šÝÂ;ÒÖn`}ŸÞ™«üû=qÖuï8ûå:ç„X“ †}f“hG…ó_õ9W²ýFÛñïBÇÛ{ˆ"¡d¥óöœï/CvZuçþls¯GBß\¹Êy{ÎŒ $Sm÷æß…Öçu dZp;}ªÊx>M?o6ÙkwŸÏÛ åùÈÉÖ•œ3/øRÛžÊv[ìœÏ·.ä»óöŸ.a>íÏãyÛÄyV“RÆ“÷ÓeÜ¿.ëLÙõ:›·*ákÞu?Ñ׎WóïBí&/UVòïÁ©CSú«¯¿¶©ZêÇíºJ „­Œ"ð° |ÍË‹ÛAàÁµ<ˆmÎÂTÄxÈìW‡ô¼xHχÔ|Ä©ùˆT‰Ô‡Ô\ªSx¨Fñ¿/âwG~D&‚„·ë*=¶XEàa |ÛL ndölŽ”ï¶ë.ÔÅ×q´Â‰7¾‹ïüNšü9åW9;D¤TH·ôIŸN z¯ÿë~’ß/$¹odçíÿ"ß©~âÙ—)]ØÒÍ®Håù§¨Þד>"¹ôo$¿\B"oø¾#xÅ·Q¦Mü_ÔÊ*>ÎòM|G¨ÊÑ+œ°ø Ê+O=Nõ.Ø‘ï8žÝ‡ïlþ‡èy7ÏêBùÇžzÉ*§þ¦ á‡A {••Ü>áÿÝ_¢zãNà·MôlÁåŸBÉy£í@_úöÛŸ¤¨'øY!ì:þEú×ï¼Oõ]XLR½v> ?Â~Þæ³h÷ïz‡ÿ˳Øþ•¿ò¸[œîØãÆ£ÝÂO•s'¼òù…dpÖY<~øŠíß·‰ï8¶Ú†\x‹þ¨!îø¯XÊYòØ|ªÿã9lÿйÀ«íœGñN(vâÿ³Üy¦CÑh¶ÿó¶?Äù]˜²g;2Öâ~V…Ë\rîÈyôe»Bî‡ùç±ýý_æq³êø”ßxç`;JóïåÚ‡¹ý‹/àñÓÍù]¨{A²ôÎiÙ2æ¿ê¾_Éβ‹Ø~³ûy€w¼ÝÙñиågú!vR,wvR¬¸„í׸…-…}KÕOwp»kÿÆÇ1{Ûïîì`ìþ0ïÌ´Ý¢ü¦?ø÷~þ?QÒÄÓø÷íˆÿÖ!=ì[ª*ÖñïÃÏ×Ì%{oœÈö‡Ç;ÛÚ\ÙU4%¬pvR̹|Õì¶Ó*ç™MÎ3H25..|»]Ô‘ª~1︵?Û´.Ï×°o©ªtÞ®2˱öÜÒ¨žÙTå<‹b†³“âðž<îçôçóI³½˜S¦|ªË;;)¦àõí®øw¡øTæÖ°{Ègl\Ñ™\M?‡×?mšsû›_ÉçÛ Ïlªn¿óeÆpn-çü½“ó̦š>³©t%ÿNvž¾#Y÷Ò;$Öçó`e%Ÿ"缯¶Ã¶·ë*ݼxÐM8föã6AxàޏCà"@àè@à/ÐD A\P æ#®w«/€€ ̧š‹£"ðàï„ÀCzN<¤çƒÀCz><¤æ#?;"ð¦Ô¸]WiÂPm‡jøò?q âŽsMçNñÆë¸?[ÞÇwb CFB§|ý%üË©G‘ü÷1üßúCÇ´$}Þ’ì0àgÏÉ=¤õj²pꎼƒàêüôϦpd: ù¼³ÿ|ß9Úëœ)}ĈÙǾ—êÍs'ÉÇp¿û&ïpvã¿(ýÈ#$)ŽWì0º°'¤H¿üæ{`ÕDª?¢÷ëÞϳý|ÒûôéCR­/t!…Ý¢"¶3ìäã¨ÞK‡ñýÝZs¿vx„wP<öÜk”ߺ5ßav„ö„.äoË—S½?Ÿògn×M$ª?jäþ}{,ÿ§SÜñõ…]•“HŸììTúô?ÏÍig’\Í7‚óºâ;%þ'¥‹zÂ~õÎ"ç™-Õ;€œ·è¼óæT¯{é4’d^³W’šwäÌøe—SBµ=±³Çe‡’ðÿÑ[oR½ëvYFòÏ;q€ñ“ùlÿ¼‰|gðÀ¸ÄN%Q›DŸÓþoßçù¾}-Þº5™‡QÞ‹3Ùþ-3ÚЗî{ïN²Ú®S_¨*6ñzàý±ðë©ToÑ…|G™­æåÝû{èg/­»¶—ìW÷ƒ³“HØ­rîh•–ðN¢ü勨ÞÜ󘋰éüíÕßÙ~Ë-(¡Ê) l" $ÒóÿöoäRw1ÛŸ9\¶?ø ¾3øm­vd±Y{gǃ؊%ž$vppñÍ©ì©d=·é¿Pý׈p÷}Žo ®èÀ;µá;›Õ¥ÄΡj»âÀ¸DÙF¾3XúÅ|ÊXàìDpJåuÅó÷cûÍø¼hŸ‚S¥8GV–q—¼¿ˆL.¾¸ºe¤7¾›çm³“˜O~]ÖÝTÕéÎñä³ù¼Â/%{ËþÊ¿7N÷牷Tu»´’0/:ÔÑ·Ø NqçNòü‡PBéõœ¾lËœí/íB Û<“HéW®µùS´Ã±¿ü~æ¿úoÜþ©üs—w仼i-ì‹æ)íªä‰M5œ;í Ä3/œg½û3·äÜ|ÞjuqgJØb‡ó…=5½º¿?_ñ#UØp%÷ïSÓ¹þ-4¡/AßRõÓ]Ì¥\<›ÅÿwLfû£êózªíI<9ÕÿgeóþñoÜþbÇþð÷x€ïÁ¿k-{ƃxæÅ÷eû¥×2Ÿ#œg6ýò™Mâ™3þ2›zÓ |ì»9Ïl*ù¿N”ÐpGîgÿd¸äÏÎ[m6üÈçÃò9½ƒó»ÐâjgÇC+þ]ÈÔ¾ø¹;)Šœuxçw¡×#Î3› œ Ÿ¡ƒâ/ù÷íç§ø÷sÉ¥ÜßÝFóù|C¡|¾Éм¶âq½®Ò]dcj7®D,XxH=ðxHÍgaïüEÌ#6Ñ€©Dà98ãCÄ*½ïTkîØ{HÎÿƒ/øÿò—H?úhî—¦©Ê™'Kòà¼OH>:…ï¬=ö÷óž{òñµß§{GªúÊ¡|'òÈ׸¾œ>‡Ò·ßžû=Sû  *_|6‰dñµ›Hæß–Ä_‡ÄŽNõÿù™³óáÚsS¥1ÇñŽ“>O7"ý÷ÕëýKQò¡»GRêü÷ yNO¶ÚÇ|gjæÜ)jùO:}ðQTøðÚü»ÓºטּgÁ^”þá¤oüKQ²A=¾S4}D9å~µ˜/œ>®{"éϽ2&E-ï¤ørÛV¼ã`ÃÕlÿîϹîêÝ.£/wÝsŸ·±%&~ü!¥ÞrÑŸINÊÜ/ûˆïÔµ=þ6J¿è¢‹HŠBŠ›Ð…é£îçùºö‹QýûûóÎSÇ5$}ÿ³8ÿ¸ãø< ÖºÂ®Ð<`_²óàÀ’§öäóÖA¯ð¸<õò{)]Ì[QÏM ûbgÍ™§pÿ}8„¹ìØŒûµÇ?ù|uåHþ]ëàì¬v…ê“òL¤eKyþ_}Å¥Ô¾ Wó|%eóGÓ{øwç®û¡¤ ø<\½ÇÙÉ"tU~ýùgToÉ×cI~| ß™ÝÄ?—yuo¯Aé·ÞÉóNü>;b‡L¥³3gK:ÿçާúËçÎ 9ïb6,ÞRµë¿x>œ4|åWÛs¶\ˆg ¿Â(7åcž§þiÕ?¬3oáo©<–ÇÏn‡DùêN%ÑÛðwv,ýüåª7uØF’­¸;óÄ[ª.ú´1¥·éÝí;ýçÕ¯•àu¿Ì£z‹/äñHÊæ'§ñ·¿OeûÍœJ"?ßyöØù!ü‰ô²R>Ÿ.žò U)¼ÆéPÇÀHþùϽ¸¥´ÜeõÎŒmv9y8䕱ý²ïçSƼóù÷Æ)•wÖ8.8¾ª-%µèÚŒdõ3‚ÄN"á°úíclAØßøùJXz±<î}%ŸÒç¶eû:ò¸Z!«ù8ío9+/e{¿½¹ˆì*;¡ÄÛÓÖíÑ’òëˆ ¢Ž=Ñ|á'ÏáÆ­ËËûõñÅT¿ò&ÕmbƒÚ±}ñV QÑ)Y}VÒó?Õ%Ǿ³‘,¯Ž3o»\Ñ™,å×v ¨í®¶ËêŽ#ñ,±“ÂÁ–×ᑺdw³cÍinÖ±¾?ž²¦a–‚Àƒ%ðÙê6î‡ô# ‡Ô|xHÍE¤"ð HÈ™‡Ðxà +q!).Ä„ŽÀ_‹À€<ð¸Aàñ[ú?‰ÀÓ@àaëQßï<Ä·ï´´<îE,|O2ˆ’ƽÿ‘ÈŠD~ùÙ§dç–›n ùþ'“CÙU¹?|ßÑù`üÇd÷Ý'†²¯V>åøÃ(©"Ÿï¾öÖ;j‘Pz×íyápÔ1Ç“G2”=Q¹Øyö@ãÆ|gðÖ‘|góÚk¯EIÁÿ¦ë¯¡úCKò÷"yÖYg²«Vzð®[)é¡ûyçÃèg_#]<ãA-Ÿ©þ'IU>wî¾ùþ$Òwß}÷LM¥,ßӹӵ澓:}ö/T®];¾S’²RšDÁ}ÌoP©íxÜl(æ;VâB- _YÆ¿Oån¼ð’óÖðùªu¾ê{ºg$ÿÌ~ça*:cýv$§ÿø«WU_ù>îP*×u=÷çô}Io—¾ê»üýq9¿×*’?´ä"ϼôº[U_é¬YCåºuâñqÕ>¥¤¯ÛãJ’ÿ¸ën_vÜ }ôþ»”u×ÃHönZH²Ë»H^rÉ%$ƒ~Üy3ÿ®¬ûüq21 _0ºŠφÈ´àÞ´€í mÌý8j:ß¹ûûco‘݃:(}Q©Kû–ôuÂîWñì‘·>úšÒwÚi'Q4#¹fõj*¿c—íI®¾Œwn4»w Ì_ÌÏ„iÚÔù+JFÖóò>|oÕ¸ïª3IŽ=ÇQ“»k‘^RÊ¿¤øØ±[ª5¤ÛZ’ç÷fÙïß¼Cgá2æÀ4U9ñÈþ$Ooñ É6u™ÏåÓz’þÅ´HýèØ–Ûùù)Ìeê2¶ôܺƒéË[ï}ÈôÊ+¨^ïîI®¸´˜¤xKÕôV§“þÈãÿ")~Ÿ…TljzÿûQ½6•KH~ps¿y"©y…{^N_.ýÛßHªõ….¤êoÔ}·S½FóÆyï ñÏ«¶‡_I郖ì {ªTí_wéyTï²îsI·ãßàûýùJßgŸ}HŠúBnPrþÂ&ü?ãTª7sxɶ Iäõ}º>}|Þu$»víJRÔ«–ÎΡ‹PË–óN¥;GòºR¼ý­çåµ{ˆ×g^Ìü7áõ•Vïð¹Ï*rä¬iÓÉT£Å¼~éþöëÜVƒ¾žsɹœÄjžh§°/v Nb'Ѭ¯¾åú¼hw>ˆ·TuUÒÿØÀÜHÉ¢ñ{Ü)…|K•àßo¯>dwõg|ì¼Òç/åö“âã˜Cö£Úý ˜÷Û+™wØ·T‰&µÝ® }½í€õ$ß«äQoŒûP $—-å {íÒƒê_·/ßIþ±Ã9¤?êìxÈÔ¸à~ñ_FPÕ§Fþ…ä.ÿ Ypè­$o¸á’A?n¼â"¶7û’ ×ò΢}œ·T Îã)¨ý#ûïMU/é̿ó÷óîx‘Ò9映¦©^«fHÎÁãý¨7¸ŸÃ>³©_¿?‘ÝEsøwfá…¼3¡Ã¨”ö™Mo½ö2Ùyá΋I¾yÜ’unË'YXÌ;j×®Mz¦×_vUi0ç%’ç÷áq¿ãã¼#dõ:>žLíê./Æ=LÝ#.fö1Aìt¸gƇô¼xHÍ™‹ú»ƒÀƒÌGh<²DàAæ¡j<ÈDÄï 2UCàA%Â:©¹Ä-‡¸õ˜æöŠ"sšA+æÁ]bXÃÀwàn‡»ðjšÿºµ|gó÷ßù¿äÝ{ðUÑž°ræô)dbcqÉý÷ß?¬I©þ+ÏóN‡¶ùÐg0¸q¿úo’¿Á§œArï½ùΪԈÊañŽ™'Ÿã;“:u amKÕ?Ö¬&eÿ}ö$ùÝ÷sHð‚-%ƒ}›0žw}6ßqŸ¿xy0CN-•ÿMWý•r^ywXü<Ÿïø‡r²UåývïEZI9ßyŸþýÜ­rÃmÔ€Ÿa0°?ßÑ~ë¿…7ºÙ‚ù¿’=våöÿßé<.õÏ@öUîc^å7\vÙ;ý¢ëI^wÝuì«•®¹„í~2–Çûù7>DEÎ>ûlµh ýÐ?íAõÖ/ÿ™äßy•äQGÈžZ©Yãú”Ô©ïxú­ ¤÷íÛW-êKüÿùØh*h?n‰³SéÛY|AŸÙ$ñÚËÏÑ×1\Fòiü»_îì ÍÏç¢|¦ò꿞KUêÎy…äèoÙÂÊ?6djÊHyÁ×UŒ#Ã.>N0Aìô¸Ûá.¼‚¿ aV‚»YÞª7ÓüxàpãŽÀƒ:BYGà!5‘ŠÀƒ !Kdâw™‹nMpGàI#ð {ÄÅÌ>&ˆw;Ü…Wð$ÌJp7Ë[õþ*3:¸›áìæ%×ø—”ðç—,^D‡Üm‡IÖ¨á¼>À „Ïô%‹RÉ9sy§ÆÀCóYS.æÆ}⇼£åÂRª0hÐ ¹bHí¡»o# ºïLò„NiQ®~橃)áôs. 9`À¹@Hm÷{…×ÿó.ÉvØ!E•¿è×öãUÓgýHv›7oȾZiÜ›¼dØYÃ)ëuüÌ µ\Pý¯#ø-+/¾ö™X±ý íRë©ÜÕü¤é<$­Ç=ŽÄ¦lp×Ö§Yð÷ *âbà1Р͆À"*î h&×ø#ð~ ðÀ|ÔqÀCúqU®Ê=*»qµƒÀC\{NS»1A4õ0 î€4gƒ¿fÀ.æÁÝŒ¡dð7Zqî Ã*øî¸w;Ü…Wð$ÌJp—y#ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹"ð óH¼† bg€»îÂ+ø f%¸›å­z•ˆÜÍpvóþndô¦ƒ»^¾^ÖÁß‹ž|p—¹Ö8p`•œdW›6m5 oß¾v’Pïào§ãÁÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\ñW ™Gâ5l ²3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\xy$^ñ3ÀÝwáü ³ÜÍòV½¿JÄŒîf8»y72zÓÁ]/_/ëàïEHO>¸Ë\ÿðP™…ìS÷—IEND®B`‚wagyu-0.5.0/docs/local_min_and_max.md000066400000000000000000000023701360766232600175630ustar00rootroot00000000000000### Local Minimum and Local Maximum The first part in understand Vatti is the concepts of local minima and local maxima. Local minima are points on a ring where both of the line segments from the point connect to values that are "below" the minima point, such that no other local minima will be located until a local maxima is found. That all sounds a bit complicated but a picture will clear it up quickly. Consider the ring below where the local minima are circled in blue and the local maxima are circled with red. ![Local Minima and Local Maxima](local_min_max.png) Horizontal segments complicate this a little, but keep in mind that no local minima can be followed by another local minima as you travel around a ring. Every local minimum on a ring has two [bounds](bounds.md), a left bound and a right bound. A [bound](bounds.md) is a series of [edges](edges.md) that start at a local minimum and travel towards a local maximum. We can locate the bounds from the ring shown above in the picture below - left bounds are colored red and right bounds are colored in blue. ![Left and Right Bounds](bounds_red_blue.png) You can see the start and end of the bounds by the direction the arrow travels, starting at a local minima and traveling to a local maximum. wagyu-0.5.0/docs/local_min_max.png000066400000000000000000000722301360766232600171270ustar00rootroot00000000000000‰PNG  IHDRVGà iCCPICC ProfileH‰•WXSÉž[R -)¡w¤Wé½H! J„„ bG\»ˆ€ ]±­µ"Š…EÀ^Ѝ¬¬‹,¨¼I]_ûÞù¾¹óçÌ9gþ3÷ÜÉ Š6¬ÜÜlT €~¾ :È—™˜”Ì$õ ˜ÈÀX²ØÂ\Ÿ¨¨pe¬ÿ» ߈¸¿n%Žõ¯ãÿU”9\!$ âTŽñ1puv® B;ÔÌÉÏãAˆU D\ŒÓ¥X]ŒS¥ØRbí±7d*‹%H@AÌ›YÀN‡qÄmøâ*ˆ=Ù,Ä ¶ÌÉ™ ±"bÓÔïâ¤ÿ-fêxL+}Ks‘ÙŸ'ÌÍfÍû?—ãKN¶hl}ب‚àhqÎpÝj³f‡‰1â“üÔˆHˆU ¾ÄãHìÅø^†(8Nf?ÀúÁ5 PÀaù‡A¬1C”ç#Ãv,ÄÚ£¼üXNÌŽ–ÅG øÙá²8+3¸!cx;W3f“Æ Vz¬0#6AÊm-àÅG@¬q§0+&Læû¨0Ã/bÌF Šs6„ø]š 0Zjƒ©çÇò¬Ù,É\°0ïüŒØ`©/–È&†qàpý¤0—'ã†Áêò–ùçfGÉì±íÜì hé:c‡…1c¾Ýù°À¤ë€=Éd…FÉæÎÍŠ•rÃQü€?`l©`6È¼ŽÆøK:X@ÒXÉ4c ’>|Æ€Bð'D\ ÷ó•ŒrAÔ×JŸV M2Z ñÈÏ ÎÁ5qO܇OoØìpÜuÌ©86+1€èO &ÍÆy°!ëlØ€÷ota°çÂìÄ\øc9|‹GxFè"™^Á\ÁQÆ"uüÍø[ýÅï»5âÀ>ìGKl%vkÃÎa—±“X#`bg°&¬;%Æã•ðTR c³EK¸eÁ8¼1›z›~›Ï?ÌÍ’Í/^/a>wn¾øcð›;OÀKÏÈgúÀÝ˜Ë á³­-™v6¶Nˆ÷véÖñ–!ٳƕoº¼³¸–@eú7ˀϠӼ往Sl‘ @ªoÇ€ÿ5áW¡t€0…ùØ'à¼A‘ $™pÅ3@ä<,KA1(ëÀfPv€Ý G@#8 ΋à*è7Á}X}à%Ã`ABC舢‹!ˆâ‚x"H8$!)H:ÂGDÈdRŠl@*]Hò+r9‡\Fº»Èc¤yƒ|B1”Šª¢Ú¨1: uA}Ð04¦£yh!º]ƒ–£Õè~´=‡^Eo¢=èKt˜<ÆÀô0+ÌóÃ"±d, `‹°¬ «ÆbÍð=_Çz°ì#NÄé8·‚µŒÇál<_„¯Æ+ðZ¼oůãñAü+FÐ"XÜ!„DB:a¡˜PFØK8N¸¿›>Â0‘HdMˆÎð»L"fçW·Ï»ˆ½Ä!‰¤A² y"I,R>©˜´•´Ÿt†ÔMê#} Ë“uÉvä@r2™O."—‘÷‘O“»ÉÏÉ#rJrFrnr‘r¹yrkåöÈ5Ë]“ë“¡(SL(”XJ&e)¥œrrò€òV^^^_ÞU~ªm ­ŽvžöˆöA®`­¢ÀQX¬P©Ð Ð­ðJQNÑHÑGq¦b¡b™âQÅkŠJrJÆJ~J,¥EJ•J'”n+ )Ó•m•#•s”W+ïS¾¬üB…¤b¬ ÂQY®²[å¼J/£Ðýèlú2úúzŸ*QÕD5D5SµTõ€j‡ê šŠšƒZ¼Ú\µJµSj= ŒaÌad3Ö2Ž0n1>MОà3;aÕ„ƒº'¼WŸ¨î­ÎU/Q?¤~Sý“S#@#Kc½F£ÆCM\Ó\sªæÍíš4&ªNtŸÈžX2ñÈÄ{Z¨–¹V´Ö|­ÝZíZCÚ:ÚAÚ¹Ú[µÏkè0t¼u2u6éœÖé×¥ëzêòt7éžÑýƒ©Æôaf3Ë™­ÌA=-½`=‘Þ.½½}ý8ý"ýCú (.i› Z  u §.0¬7¼g$gäb”a´Å¨Íè½±‰q‚ñ ãFã&ê&!&…&õ&Li¦^¦y¦Õ¦7̈f.fYfÛÌ:ÍQsGó óJók¨…“Ïb›E—%ÁÒÕ’oYmyÛŠjåcU`UoõØšan]dÝhýj’á¤äIë'µMújãh“m³Çæ¾­Šm¨m‘m³í;s;¶]¥Ý {š} ýbû&û×\‡íwéŽSW8¶8~qrv8têw6tNq®r¾í¢êå²Úå’+ÁÕ×u±ëI×nNnùnGÜþr·rÏrßçþb²Édîä=“{=ô=X»Á?aCBOâ¤Ä…‰W“4“xIMɤäøä½ÉCÓ¦mžÖ7Ýqzñô[3LfÌqy¦æÌì™§f)ÎbÍ:šBHIHÙ—ò™ɪf ¥†¤V¥²ýØ[Ø/9ÞœMœ~®w÷yšGÚ†´ééÓû3¼2Ê2x~¼ ÞëÌàÌ™ï³"³j²F³²åsRrNðUøYüÖÙ:³çÎîʵÈ-ÎíÉsËÛœ7(ì"¦|UxÌi™Š~=.ð,¨,ø0'~ÎѹÊsùsÛç™Ï[5ïya`á/óñùìù- ô,]ðx¡ÏÂ]‹E©‹Z,^¾¸oIÐ’Ú¥”¥YK/²)ÚPônY²æåÚË—,ïý)è§úb…bAñíî+v¬ÄWòVv¬²_µuÕ×NÉ•R›Ò²Òϫ٫¯ülûsùÏ£kÒÖt¬uZ»}qÝ­õ^ëk7(o(ÜлqÊÆ†MÌM%›Þmžµùr™CÙŽ-”-¢-=åáåM[ ·®Ûú¹"£âf¥oå¡*­ªUUï·q¶uo÷Þ~p‡öŽÒŸvòvÞÙ´«¡Ú¸ºl7qwÁîg{â÷´ýâòKÝ^ͽ¥{¿Ôðkzj£k[ëœëêöií[[Ö‹êû÷OßßyÀÿ@ÓA«ƒ»1•‡E‡ÿø5å×[GÂŽ´u9zð˜Ñ±ªãôã% Hü†Áƌƞ¦¤¦®¡'ZšÝ›ÿfý[ÍI½“•§ÔN­=M9½üôè™Â3CgsÏœK?×Û2«åþùÄó7Z§¶v\»pébàÅóm>mg.y\:yÙíò‰+.W¯:]mhwl?þ»ãïÇ;œ:®9_kêtílîšÜuºÛ«ûÜuÿëo„ܸz3âf×­¸[wnO¿Ýs‡sçÅÝ컯ïܹ¿äáAÉC¥‡e´UÿÃì‡zœzN=öÜþ$æÉý^vï˧§Ÿû–?£=+{®û¼î…Ý‹“ýýLû£ïeîË‘â?•ÿ¬zeúêØ_Þµ&ö½¼}³ú­ÆÛšwïZ†¢† ç ¼/ù ñ¡ö£ËǶO ŸžÌùLú\þÅìKó×°¯FsFGsY–ä(€Á†¦¥ð¦Z<;t@QÞ½$‚Hï‹þ–ÞÏ$O.5ÞÄ- žQ¶Ãf1öâ£w¬7@ííÇ›L„iövÒXTxƒ!|}« ©€/‚ÑÑ‘m££_ö@²w8›'½ó‰…Ï÷;Å÷IÐ~[ ü(ÿ¨Ôl8ë)ÿËbKGDÿÿÿ ½§“ pHYs%%IR$ðtIMEà (XOæí IDATxÚìÝw¸¥uu÷á Ò¥ƒHA©ŠC™[ì&QcŒÁ5o4Q£R슖 ¦7c –QØ•^†."ˆ‚¨  ÅyÿØçÃì9ésîûºæzæìþ[Ï){¯ýÝëYiÑ¢E‹šAæÍ›WÕüùó›¬v®ß~·ßíwë¶~ë¶~ë¶~ë¶~ëžj+0„0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0”0ÔJsçÎ]4“ðgœQÕ{ì1+w˜õÏÎõÛïö»ýnÝÖoÝÖoÝÖoÝÖoÝSMj¥E‹ͨ¼yóªš?þ¬ÜaÖ?;×o¿Ûïö»u[¿u[¿u[¿u[¿uO5 `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `( `¨û)ÓÁÝ|·S>w/§×Í×­¡`“L€)³¤æÀX¯§™094˜tËÛ8XÚmi$L,3˜TãÙ<˜ŒÛ`@€I1ÖøÙýIUÍŸ?™¯+0q$˜6n¾nßÿ[–Ó˜<L¸a ‚±4nþïïwóÿ>Ýc§À„Z–æÁòv=M€ñeSâÎÁœe»Â±ÇŽ\üÎË64 &žfª_Øk,Œ &ÝÍ×­Q'/|1š,8úè%_xôüE#—?ðÀ%ÞžfÀÄ’@`BÜÛ ú‰:’½ݮÆÀø@`jŒ& N>y°½{á²ËÛýöl9Fͦ“f¢Ò“uû³™Sk4Y0º=è %ŸÀ”’@`RLV:@ `b¬4wîÜE3éŸqÆUí±Ç³r‡Yÿì\¿ýn¿ÏDß<ós‹}ý˜ÝŸ´ô+ŒÎ<¸á†ª¾ÓMUm²ÍÖUm°þU=àÿû¶ß­ßº­ßº­ßº­ßº‡’@†ZiÑ¢E3*0oÞ¼ªæÏŸ?+w˜õÏÎõÛïöûLt÷Ã'ÞëG F޾pÅ—Wõ¬+.¨êÖ Võæ½·¯êÄ-·¨êúË …y6Ø8¨Ó>ûì3öû¶ß­ßº­ßº­ßº­ßº—™SÒP˜é÷0Û8 Sã”SªúÚÿ}µª÷ؤªç¿ê«:þ­j“­6ªêoWº¥ªï¾í U]|ú`fÂqÿøÖª®}ýu#7<_m&€“f¢Ó?8Có`¢H 0©þïä¯Wõ©W¼´ªµ_9·ªƒöÜv‰—?ýe‡Vµç‡¾RÕVçü°ªU½CU;lo¿íŽ~pÈ’ïó1sÝ!îçЃ³öÛo?;` $˜÷6¸ðñÏØwBîü¿%ž¾ç#±3Æ“îñÏØ·÷úÂ1]g4‰ð \zó^~ÀKïõzòÞ§VwÎLxÿ§Þ]Õ¯ÿ›ªž3h0vðc«:à€ì €%@`ÂLõáßwê vÀ8‘@`B|íë_ùߣ—xþhj`¬/ò¯Þ{û{ÜÆÒ¬¼Ê W¾ã>^l»hÑ¢ª.>mL8á3ÇWuäQGTuàþUõØCWÝ™LXye½w`vò,€ µÛ.s–zþ²4–çzÒãK€qqûí·WõÚ£_]Õo-áÏOø£ê„¥¾àKaYËr;+­´RU;Œ$v¸K²¡ê’3.¯ê£ŸÿÀ`]o¬ë1ûî_Õc^<™°êª«ú&4`2ܵ9°íSÓ€‰¥À}2ÿ«_©êè·UÕ¾OU>bñÃ5ަ–µpùEg\~ÙËx~láÁ{l»ØvÔ¥g]QÕÇ¿ü᪎zÛë«zä^ªêq‡<¾ªý÷$V_}uß$À Á &ÕDÍ&0ó`bI 0&·ÞzkU{ÌkªºæöUõgïæ˜_ìÇG&»q°ý#¶YlÛŸ 6—ŸseUÿÕUuìqGWµçn{U÷L&¬µÖZ¾™ ë‹ÿ±4¤ &ŸËäK_ùRUo:îØªæ>˜u0g×GËíß½)pü C_qâ‹gD}¶Ýu«Å¶=o°ùáùƒ„Æ?òñªÞzü›ªÚõa¨êñ‡<¡º3™0]™ %ÀÝrË-U½öèWWõ³•®©êyï{†âŒÁÖÛr±mÏl~tÁ«ú×oý}UïøàÛªºì¢Ë«úÜç?WÕûC±Þzë)&0¥$€¡$XÌI_:©ª·¾çÍU02ëà€‡?RqÆÑ–;m¾Ø¶ç 6oÖû«ú¯üKUïýØ»ªÚa›«:ìàÇUuàœ«Ú`ƒ ˜ÀP³Üo~ó›ª^32ëà†ûý´ª?=þéŠ3V_kµªóǃäG<Ø\}ñOªúìÿYÕÿ~TØn‹í«zÜ!¯îœ™°ñÆ+&0®$€¡$f©/üïç«zçÞ^Õþ#³vyØ>Š3 =è!\lÛ 6×\zmUŸ?㿪úÈ?¨ª-6õáq’ sFf&lºé¦Š , `( €Y⦛nªêÕGYÕ«__ÕŸ¼çiŠ3ƒm¶ý¦‹m{æ`síå?«ê¤Ó?SÕ‰ÿñ±ª¸áfU=v$™pàVõ =H1€¥’@†’@XÁ}î Ÿ«êÝ'WÕ‡ï]Õn;™u°"ÛtÛÛöŒÁæ§?¼®ª¯žñ…ªþñÓŸ¬jÃu—{ìÁ«ê 9UµÅ[(&PI Ë@`ó«_ýªª×ýêª~½Ö/ªzλž¢8´ÉÖ-¶í©ƒÍuW fbœ|ú—«ú—WþcU믹AU‡´x2aë­·VL˜e$€¡$VŸùÜ`Úþû>öÞªóç{Uõˆ‡>Xqj£-6\lÛ“›ëüóª¾yúW«úÏ×þ[UkßoêÎdÂÁ\Õ¶Ûn«˜°‚’@†’@˜¡~ñ‹ÁlƒWudU¿]÷ƪžõÎ')ãfÃÍ7XlÛÈ·× ?|ÿ}÷´“«úôëÿ³ªÕ­YÕã™0H&<øÁ’00ÓI CI Ì0Ÿúô§ª:ᓨjÿÃ÷©j‹vT&Íú\¯ª½ŸøˆÁ Ol~qí/«:íŒoUõÙ7~zð„ãÖûWõØ‘dÂÁs©j‡vPL˜!$€¡$¦¹Ÿÿ|0ÿÈ7¼ªªÛ7º¹ªg½ãɊô³Þ¦ëVµçãvÙNÿÕuƒgžþݪNzëç«Zô땪;“ ¿þõ¯¦) `( €iêÚŸ^[Õ3Ÿÿ´ªöÿó½«zÐC¨8Ì8Øhªö˜u°îYë(³ÖZë­YÕ#Ùed;8ý77ŽBrÉiçWõ\ÕM×ü¦ªC$æ4¯ªÝwß]1`œH CI L²Ÿþô§U½úè#«Zi³Ûªú÷˜uðÀm7Q¸V_kµª>g§Å¶¿½ypÔ†‹O»´ª·}â;U]ÿúªš7r4‡yf&ì³Ï>Š ÷BJ`‚üä'?©êÈ£Ž¨jÕ­§?óMOP˜$«­qÿªvÙÿ¡‹moûííU]|úeU÷o­êÚ×_WÝy‡yZÕ¾ûî;5 8å”ÁvÎ;€)' %0Îþé_ÿ©ªüïOVuÀáƒÏToºÍÆŠÓĪ« žíüèÛÞ~ÛU]|Ú ™ðÞ{gU¯zõU2r‡CGŽê°ß~û-ÛŽ5Ipì±c»<L `( €ûèꫯ®êÈ7 f¬¾ý*•Y0#Ÿ­:øùÝi߇,¶ýÝ¿«îœ™ðþO½»ª#^ÿ7U<çª;ø±UpÀ‹ßð¢Eƒíh²à裗üFϽüÚ)LÀPËéÿåªú—ÏfŒÎ:ØxË V0+¯2xÏeÇ}¼ØvÑHR`tf Ÿ9¾ºóè+îPU=äqUÍùÝ É°ÒÝ“— ®ßèL…cŽQt¦ßßC%†‘@XFW]uUu笃µw_þéDZ!®+ü¸ª­vÞ|Vî÷Ùº~û}v¬K¯­jµ_Þ\Õy¿<{äœýž·në·në·îiKj¥E£ãƒgˆyóæU5þüY¹Ã¬v®ß~ŸÜõ_yå•UyÔ«ªzÀCW«j¯'í6©ë>þ­ê'¾xVî÷Ùº~û}Å^ÿž'|eðŸ‘g_Ç­ºVU?þÔ÷ªúÆ‹^48côè ~Ï[·õ[·õ[÷4" å( #Nüä‰U}zþVµÿó÷®jÃÍ7Pà>Ùì—þ3’<øò“÷¬j•¥aõw9äÇ;ØÎ²$Ó›0”0k]qÅUyÔU­¿ËÚU=åõ‡)0®VÙžþ²C«:û£ßªêå/üþ9z4ipÌ1‹oO9e°3G˜rÀPÀ¬ó±¦¼ækŸ®ê€Ã÷©jƒÍÖS`B\½÷öUýìGמ€Ý´zU~ô£—|…ÑÂÉ'+Ó†0”°Â»ì²Ëª;glôˆu«zÊëU`Rý¿TõŠÃ_µlW8ð@E`Ú@†’@VX™uðù“ÿ§ºsÖÁz›®«8À¤}pÿ߬Y-eöLcÀPÀ ã’K.©îœu°Éžƒ£*<éµó˜R£³þúð#€KJ˜ñNøØ‡ª:é›_¨j΋³ÖÝøŠL©Ÿ^y]U«Ý¼VUû¢0cI CI 3ÎE]TÕ«Þðʪ6ÔÆU=é5s˜VÎ9éªþæðW+3ž0”0c|àÃï¯jþ÷¾TÕ/Ì:xÀFë(0­üô‡ƒÙ«ß2˜}ð¨G=JQ˜ñ$€¡$€ië Ÿ>뜳ªÚá [VõÄ#Q`Z;û¤ ª:âð×*+ `( `Úy߇Þ[Õ×NûjUëoõ€ªv;ôaŠLk×^ñ³ªÖ¸eíªùÈG* + `( `Ê-X° ªW½á•Um{àæU=ñUWuÉ .V$`F8ç¤Áì–#^`ö+ `( `ÊÿÁÁ¬ƒ“ÏüZUs_ùèªÖZoMÅf”ÑÙkÝ6˜Ùbö+" `( `Òœ{Þ¹Uù†#ªzð![VõøW¤8ÀŒvÎVõªÃÍ>`Å% %L¸÷¼ÿ]UzÎÉUöêý«Zók(0£]{ù`öÁÚ#³öÙgE`…% %Œ»³Î>«ªWõªªvX¯ +³`i/üÇû65`úÐ@îÓ‹üɸ˜zÀïvÚiÕ³ñÔª:ìÿ™uÌnçž´°ª×¾Àì¸û ûeu÷À¼yóú晟Óýi"ÀÔr`L/ä—µypóuküþß’Xi£ªöÜsOEel,ïu4`ú’@–ɰ÷cIÜ—ÛÐd€©!³Ðw¿ûݪ^}Ì«ªÚóé«êÐ'í¯8wqÎIVõº£ÌzËÒ<O7_·ÆRïÓL˜|ÀR-í…üx¤–÷¶%`rI À,rÌ[®êü«Ï®êßöĪV]ͯ€»ºú’ŸTµÁ*›TµÇ{( ³žp¯†¥&ƒLÞv„™ì”SÛ9s–xöw¾óªŽ<ꈪöþã]«š÷³–æÜ“Võú«°/ê'âyͰ™ÀÄ“@Ædª†šSK¦ƒ!÷{8öØ¥^þè·UÕ?9§ªg¿ûÉU­r¿UÔ`)®¾xdöÁý6®j÷ÝwWfµåzÇœŸ×,ëãÔ\€‰',³©~¡®QSG¦ƒE‹ÛÑüÑG/ùr£ç^þÀ«úæ·¾YÕ«zUUû>w0-|îSÍ:‹s¿höLÚóšË.l÷Ûo±ç5Àô% %ÓÁhÇýä“Û»wìïÞ¡?昪ŽzÓë«ZxÝùU=÷ø§Uµò*zƒc1:û`ÃU7©Ì>€{³Lö¼æØ»%|Fž×Œõq8"L>¯2€¡$`:íÀn:h±³O=äàª^}Ð#«zÌŸíUÕ!OŒÚÜçœ4˜}pÔKÞ¨0ÁÏknÚsÏÁ×Ûm§F0ÃH C­4wîÜE3éŸqÆUí±Ç³r‡Yÿ,Yÿè̃n¨ê´ßü¦ªU7Z§ª¶ZVí÷+ü¸ª­vÞܺ­ßº­\ýö7·¶?¿½ªvÜÉß7ë·î»øæ™Ÿ»ÇiÙýIK½Îm·ÝVÕM7Ý4xÁqÅåƒç17ÞXÕoÖX½ª+FÞËÜ{ï½'åqÙïÖoÝ÷0ÔJ‹-šQ „yóæU5þüY¹Ã¬_ÿèTâÑË‘Ï îºÎZUðôÁ̃G>iVí÷ã_ðѪ^qâ‹­Ûú­ÛúÇÕ—Ž?¹ª£_öæªvÛm7߬ߺïbIG:øñEƒÓÎ>ûìª~pæ÷«úþß«ê†^ÕK¯ûYUk®¿ZUç¾ò‰Uò_ƒË=ÿŸ¾YÕ'N>¥ª½öØë>=®e:B„ýnýÖ}ŸH Ëló¦ö…ºÃ7ÂÔq˜NtÞïž<¸å–[ªúÑj«þ`®5øÌàž'|¥ªÓ_z¨Ú,‡«.º¦ªW߬šºäLG?ÿù ApöÙgwÒ§êñÏ|Ô=.óÌç?­M²áàçèÁƒÙLû¾KU;]y]Uúþ¥ƒç+/<_Yo亣_¯ñ¹Ó«ºì/ž[ÕmïÿxUû>êÑc~Ì3%}30&ßþÖ§ä~¥`jI Àtp·äÁ¨… Ç%¿ÿê÷¯îìØïù¡Aa³ :û×ì½½ŒÁ¹ÿ{áà×î_¾E1˜uîš0¨{Ÿa0š0¨G-ñv>ó÷ÿÜûN=᧯4’@}ÞronÜrƒª¶ß}«ª¾pÜkªºõo¬jÎþjÀ4#Ü«¾ùÿÝëy/?॓ò–Ö<ðñ˜<0xàO¾páà²û­¾x¯o´£ÿ ‘Ëæª…WWµéš›Wf°bkÂàî3 ÖÛtÝûtÿW1ùû„åÈóš|úƒUÝ~ÇíUrà\;¦ `©–ôQ…Q/?ॖDxâ3ö“>€iD¦±³œUÕª#3îîj³ÆäÜ/^TÕ±f0ƒ]ýõUsÎ9Õä% Þwê Km¼ü€—.µÑ0ÌèóšƒF¶O<`¿¥^^ó&Ÿ°L†5Æ#°,·¡ySC¦±óœ[Õý×XU1îƒÑÙ™}°ë®»* ÓÖhÂàî3 ¾wú aðË_ßPMÜ ƒñ0ÚK"a²2À$m ,Ë þ»^fIÍ„Ë/:»—°ì÷ýïÿåžüÄ§Ø 0E4`úå/YÕ7ÿjðƒºê*Špœ{ÒÂªÞøWoS ¦ÜhÂ`ôh ïx÷Û«á ƒG½ðáÕôHŒ6Æ’¸çeÇ–8ø£Þÿ|çΣ3<ýÉÏðÍÀL0–4Â}½oÿ‹zÃTÓ@€iháÂÁ;em½AU×^ÿEX?ºp0ûàAëlUÕÃþpEaÂÝ}†ÁèѾÆ`–ÁhÂàÇ×_5Ø®uI5ýSÝH¸ûGýœ=«ú¿ÿOU·ÞzkUÏzæ³}Ó0“ÜõEÿò4îËa ‰§ÓÐ… /¬ê[¬98á 5X£³ÞüŠ·+ãfYÃfÿ‚ABf—vZá› Krü >ZÕ+N|ñ˜nwß?Þ£ª¯ÿ÷—ªºí_o«êOŸý<ßœ0ÁVV` ˜†Î<9Øä+ÀrøÑ?®jóu¶¬j—]vQ–Ùx% ˜X{?}·ª¾õÙÿ«êÖÌDxÁó^¨80A$€¡$`ZpÁùU=î©s`9ü~öÁ_¿C1¸ ƒËžOì—3þ÷»U}øÄÛ«zÉ ^¢80Î$€¡$`ùéOZÕïV¹£ª5×YCQÆ`töÁën]™}0[IÌNxÂ΃ýþ¥Ó«z߇¯êå/y…âÀ8‘@†’@€idáÂÁgv7Øz=ÅXç~ñ¢ªÞböÁ M€¥Ùí±;UuÞWTõî÷WÕ+ÿêUŠ÷‘0”L# .}a½­ÖV €1¸rÁâ³ö°‡)Ê &aÀxØeîŽUÿƒdÒÛÞýÖª^ûÊ¿UXNÀP0œuþYUm:gcŃóNÌyëÇ)Æ p÷„Á?¼¢ª§=û©•„ãëaíPՅ߸´ªcßvLUG¿öÅ1’@†’@€iä‚ Ó‚wyÞ`üðü«ªÚjÃíªÚyçe¸×gŽÌ0¸i0Øx$aðÛU~SI0±ºÿöU]ôË«zÛ^WÕ›ÞðÅe$ %ÓÀ~ô£ªÖXoõªV]Í&À²8éêoÕ»c5a°Éè ƒ,9apηÏ]âé0vØwÛª.ùþU½ú¨#«zÇß©80„0”·9aX¸p0=|ý­¼ó°,~xþ ¹µõÈìƒvÚIQÆÑx' `:zð>ÛTuùý®¬êoþö¯«zÏ[ß«8p/$€¡$`8ï‚‘Ï~n¹¶b,ƒsOÌ>xÇ‘ïVŒå04aðë_TµéHÂ`£í׫$ X1m»ÇVUýð~?®êÿñ²ª>ð®)Ü0”Lg/¼´Í6Q €¥}°íF®Ì>¸7cNŒÎ0xá®U­·É‘Ygë]7¯êG«\3¨v IDAT]ÕK^ñâª>|üGFH CI À4pá…Tõ¨—í¢KqÞIWõŽWÏîÙ0q¶|؃ªZeÕk«:ü¥Ï¯êã'|Rq˜õ$€¡$` ]zé¥Um¸Åà¡•V^IQ–àŠó³¶Ûd0ûà¡}è ½^ ˜zÚaÓªV¾ßàùÙs_øœªþéïþEq˜µ$€¡$` -\¸°ªõ¶ZG1€YãEû½ùÞÏýÏÈe>ö­×WuÞIUuÜkß»BÔàî ƒ+~xEUO{ÎS+ ˜N¸Ýà(Y+?mðÞ볞ÿGUýÛ'ÿCqÐ@˜Ì¦Á²\ïEÕ“ž¼¯BÀÒ@€)t΂sªÚ`«õXa-oóàî>÷ÙïÔßï8#Ö|σÙß?s0Ëàî ƒßÞïæJ¦³M¶Þ¨ªUž½JUÏø“§Uõ_ÿüiÅA`:4³þ Êß 7(0L2 ˜Bç.¼3õ°?ÞV1€ÊXš£sÆt½õןÒ&ÂXÃfœõ­s–x:0ýl¸ùàçyïÃw©êÉôU}ö?>¯8h Œwóà®Mƒ»Úy§«zʼn/~;SÜD€ÙF¦ÀwÜQÕå?¼¼ª9[ì¥(À¬qo̓»ºüœ+{í‡ÿ´·½ä§ä1ŽwÂXñ¬¿éºUíÿ²=«züÓ[ÕIŸþ’â 0ÌÒRËÒ8¸»>nnUùůÞË3x)˜,0.\XÕÆ[o¨À¬ðùãŸÕf?¸´köÞ~™.¿ëÛ¿XÕþG58á_?uçÅq aŒ—l´NUóŽØ¯ªCŸ<¯ª¯|v¾â°ÂYY €ñpoéƒåI,ѽ% Ʊ±Ü; ˜£ „õ¶ZG1€Ya¥‘íž'|¥ªÓ_zè/·Æ¥?­jƒ‡ìTÕò'ËuÀd[k½5«zâë¬ê ÇÍ©êÿ¾xŠâ°Â@î³ OŒ’B€)#Sà¬óϬjí=áf‡«GflöýK«{&F¿¾õæÛªÚî“c?úÂÛßõv `Ê­¾öêU=ã-«ê1s]Õ7¿úmÅaÆ“@&ĸ§F9êL ˜ç.8·ªGí÷pÅf•Ó_6’8øÐ qðÄ縪[’7n¸QUl°AU_ÿú׫{Î0øônûêu.•0¦UW_µªç¼ç)U=rÎ>U­³ªßOÌ\À¸›°ôÁˆCæíwë·n럎ëÞpAjê¤ÿúRU묳ŽçóÖ=íI C9 L¢ .¼ ªu·\[1€Ú‹ö{ób‰€Í~péà?wKŒºðoSÊW>eð{r4©púK½×ۘɞûÞ§UõüøªþçŸ?WÕú믯8L[ÀP0‰Î^pVU?tCÅVxwM!¬4rÚÝ“wwã– þ3’TM.\³÷ö‹Ý.ÀŠâÙÇ XÏø³§Võ¯÷UmºÉ¦ŠÃ´# %“èü ΫêàÇ>J1€ÊǾõú%&FSWß%A°,F“ p—Û»·û˜ÉþèmPÕs_òìª>ñþ¨j‹Í·P¦ `( ˜7ÜpCU¿¹õ×U­½þZЬp†¥–ÇÕË0û@úX‘<ãMƒ£2¼à¯Ÿ_Õ‡ßù±ª¶Ýf[ÅaÊI î¾>48¦žL‚… VµÑ6(°B»·Â]›cI kH+ª§óتþòu/©êøc>PÕCòÅaÊH “jYÓR0½H À$XpႪ°…ÙÀŠoi)„Qw=ÿ®)‚ülðŸehH³Á“_7¯ª¿yÓË«zûkŽ«êa;?LqÐ@f¾ei"ŒZž¤æL> ˜g/8«ªM÷ÞH1€YcôEþx~A㘭þà5‡Tõºw½ºª£_þƪvßmÅaÒ˜L¨ñzѯySK&Á‚ ϯêžyˆb³Ò]_ü%‘ i°¸ÇqPUozï1U½æÅƒß“ûìµâ0á4€Iµ´¦Àñ/øhU¯8ñÅ ÓŒL Ÿüä'ƒÿ¬º¨ªÕ×ZMQ¸Ïû×sªzׇÞVÕËo;¢ªýöÝOq˜0f CI ÀZ¸paUnµžb0îæ¾ì1U½ÿ#ï©ê¶Ûn­êÀRÆ0”L óG޾°îVk+æ¿xtUû»ªºíöÛªšwð¡ŠÃ¸‘@†’@€ töùgVµéÁ›(îÀ>ªªøä‰UÝvÛíU=þ°Ç+÷™0”L  .¼ ªÝ’b0ixþ#«ú÷ú§êΣ3<ù‰OQ–›0”L€þð‡U­½ÑZƒ´UWQ&Ýcž»WUŸù·OUuë­ƒ$Â3Ÿö‡ŠÃ˜I CI ÀX¸paUëoùÅ`Êíû¬=ªúÒ~®ª[Gf"<çþDqXfÀP0Î]pnUëo-ÀôñÈ?ܽªS>=¿ªÛÿåöªž÷œ?S†’@†’@€ pîgWµý“¤L;{=mת¾ýÙ“«úí'[Õ‹žÿbÅá^I CI À¸pá…U=z›Ý€ikÏ'?¼ª³þ÷ûU}èc·Uõ²ý¥âpÀP0Ž.ºè¢ª6ÞzCÅ`ÆxÄv®êÜ/fy½ïÃÇWõò—¼Bqø= `( G .¬j½-×Q fœ‡öЪÎûꂪÞõ¾wVuÄËT$€á$`sÁ9Um°õzŠÀŒµËÜ«Zpò`Æ×[{sUûª×+Î,& %ãè܃ÂnÏy°b0ãí|àU-üÖ¥Uó¶£Û׫8³Sâå¼tÈ%^:r¹ÁWï;õE˜B0n»í¶ª~tÕ•U¼ù>ŠK0¼i°l×ÕL€Éµã~ÛWuñ÷®¨êõoz]Uo~Ã[gÑ@`ÂÝ—ÆÁÒnO#`òh À8X¸paUo³¡bÀ½¼ØŸ¨ÛÖD€ÉóGnSÕ¥«ü°ª#_DUï|ó»gÐ@`B_à/«»7–õºš“CÆÁhaÝ-×V C`i/ü·Ýa·ª^q⋇ޖ&L®í÷ÚºªËWÌûë×¼¢ª÷¾ýø±ÝÐ)§ ¶sæ(ê °²0Ù̓÷z˜^ð/Ëå'ò£h À¸8{ÁY½à¬6Þfƒ6ÞfaV[–æÁòØì—öŸï~å}ºo`|m»ûVm»ûV=lµ«{ØjW÷—¯|iùÊeø{|챃‹ þ¡ãÑ<ïÛ`ì4`œ»àœÎ]pN›n³q›n³±‚0k--0ú³\Úf?¸t™osϾҞ'|¥•ª•îv[c} ÀÄxàvõÀí6êéWÝÓ¯:»ýÕ {Ñ_½ðž¼ì²Á¿ÑäÁþ¡Ã^ðO§ÛàÞ9 Ü7ÝtSU?ÿåÏ«Zwã( y¡?š"Øó„¯TuúK]âõÖ¹jðsÕîÛVuõÞÛ/ñ¶%`êþÞóûƒ”á³vAUÏÿ‹çUõÉͶ[ü Ç£h3ãb:½×Tp\xá…UmäÈ °DKú˜Áè;›¼Cq÷$Âè×È|úËz0=ŒþÝÞóCƒ¿çÇ|ã䪾°Öyƒ l·"Í`ÀPp\xáà³]ën±–bÀÝýŠ'>ÿÃU]³× ¡pã–’=0c =ºÿê«Võ‹YÕ­÷_[mf0 &Äd%Á&ÞJsçÎ]4“ðgœQÕ{ì1+w˜õO¯õ_|éEƒ¤µ?Fk¬³ú„ÜÏ• ~\ÕV;o>+÷ûl]ÿL[÷彨×Ûî°Û2]oôh «ýâ7UýjÕUªºäŽßiýË{ÿö»õ[·õ[·õ[÷øùýQ”F^eþxõûWµÅ¯n<¾qp³=öÛÏë˜Hj¥E‹ͨ¼yóªš?þ¬ÜaÖ?½Öÿø§=vð¸^5è ®µîšr?Ç¿à£U½âÄÏÊý>[×?ÓÖ}÷#! ûXÁèÑ~qÍà3‘oûíàçç9\RÕG~ûëªÿÊßNÈýÛïÖoÝÖoÝÖoÝãg³ Ž®ô ‘£,}ùÉ{Uuþ¿_VÕ¿|âßÏ›·Ì:šÿ§:¸âÑG{3ƒH 0) …å¾f+Ga€åpýõ×WõÛßý¶š¸ä¬ˆFß¡¸ê¼kªúæ~ƒ£1|õ-ïªêð—<¿ª;>ó?ÕI…Ó_z¨âÀ45rÐ…ßeéoüRU;î‹_p»íÛÑ ü)§ ¶sæ(â %ËaáÂ…Um¸õzŠKñò^úûY·Þr[UßþçÓªzÄ˳ Ž{æ/v¼cUó×[kpÂȣɅköÞþ÷L­«Gþ>ŸöùsªúÃ'<»ª-·ÜrÉW8æ˜Áöä“o‘@`\L§¡…3u€"Àt&ËaÁ… ªZw˵†xù/í¯?øÚ¾ûgUõwLaÞ~ûí—xù·hU·ßzGuçg)4’@¸ûmSïç×ü¢ª_.øMUÏõó—튨x3ˆî½ù¶q¿MÍ€É%ËáìóϬjÓ}7V ¸‹÷z½¾°ÿÎ÷¿ØÍ×­1ô6¶Ùf›ªîøíï;ýê»Ì>XZóÀÇ`òúñïWuÂ[?ª+0 &ÍÝ|ŸoCò`jH Àrð”g;.=ŒºýÖÛ«šû„§÷Õÿýï{½ÜݼÔ$Âhá¶ßÞvó†5¤`rqÒyU=uîÓû;Ž,“ei"TËô‘†Z¶ÔæÀÄÒ@€1¸úê«?8k­RÕjkÜ_Q˜õ~xîªúæ'N¯êc8±ªÿa¡Y¸ëù£Í„õÖ[oðõ¢«GšÃƒæL®_\û˪~zÆàè /ü×)Š,¿›¯[c™ç,ï|̀ɡc°páª6Øj]Å`ÖûÁgήj­_ §|ùK¼ÜXšc¥ySãÔOü`ð·øMTŒYD€ 7úñ„ñj$hL> ƒó/L™]o«uƒYçwwü®ª/¾ç䪞yèWõ'Ïzî2߯]‡&޵™ iSאָœ_ÕxRUÛo¿½¢Ì"L‰aG`Øñ¡;VuÈË=rÊ.Š0…4` Î^0øÌ÷æó6V f+Ï¿ªªS>öýª>úþ¿«jçvžÐû]s5«úÕ57Ù 0Å~uýU]ýÝëª:áß_¢(³ÐÊJ #cpÁ… ªÚãEOQ Vx§}öœªV»~0óãó¿5©÷¿Æƒ8ÜtíÍvL±S?>H"wì{c“@†’@€epùå—Wµî¦ƒwbW¹ß*ŠÂ gÑïUõ¥ãO©ê)=£ªç½öySòxV_}õªn¸úvL‘s¾:HàÎÝç°ªvÜqGE™Å$€¡$`\tÑEU­·åƒÎU^SÕü~³ª¿ûÀ‰Uíò°©=lâ*« ’>k­½nU7þ|p4†u6XÛN€ vÓ ¿®êŠSÏ>ø_W$€á$`œ³`0~ƒ­×U Vg|áܪV¾fp´ƒï|ý»Óòq>x»WuýÕ7T0Nýø÷ªzçߥüž0”,ƒsœ]ÕŽOßR1˜ñ¾ôÞ“«zâcžRÕŸyø´~¼;nÿЪÎüñwªÚf?‡0QÎýúUÍÙýªvÞygEá÷$€¡$`)-ZTÕ%—\\Õþ[í®(Ì8?¾x0=ùKï9µºó( »îºëŒxüÛo;˜pêü¯Ù™0A~sãÍU]üÕ+«úÀgNTîAJ–báÂ…Um¼Í†ŠÁŒsæIçUõ»+W­ê{§|F®cÛm·­êW?¹ÉN€ rÊÈQÞñÆãƒ{% %K1š@XwKÇgæøòûN©ê°G>±ªñ¢½žm¶Ù¦ªŸÿøv.Œ³óO<ßÝw§ý«Úm×Ý…{% %Kq΂³«Úh«õƒiëêK®­êËï$NxÏGªÚ}÷ã¨!÷»ßàOÕ7ݬª_\û˪ÖÛt];–Ó-¿þmUçÿï%U½ï S†’@†’@€¥8÷‚sªÚcŸƒiç¬/_Õ­—®TÕ·¾öªV^yÅì ?d»‡Tuý57Tp_Œuáoz—b°Ì$€¡$` n¹å–ª®þÉÕUÍÝl_EaÚ˜ÿÁoTuȇUõzɬX÷ŽÛïXÕ·¯ú¿ª¶Ä6¾`Œ.øæÅUí¹ý>Uí±ûŠÂ2“@†’@€%X¸pp<Ü·ÙP1˜r?¹ü§U}é=ƒ£,¼ÿ¬j¯½öšUuØ~»Wõ•sOòMctÛ-·UuÖÿ\PÕÿ}ñ#ŠÂ˜I CI À,¼h@Xw˵ƒ)sÓõ¿®êŠ/\[Õ)_Ì>XuÕUge=¶Ùf›ª~õ“›|sÀüñïVõÎ7:êËOJ–à¬óϬjãí6P &ÝW?üͪÖ\eª>ñá¿W”jë­·®êçWß °Œ.üö%Uíºåàh {ï½·¢°Ü$€¡$` ο༪ö?dOÅ`Â]{ÅϪúÊñƒǽéÝU½áÂ7(Îl»í¶U]ÿãŸWµáæ’Bpw·ßvGU§ýç¹Uú•+ ÷™0”Üů~õ«ª~ùë_Võ€ ×Q&Ì9óÇaþÕù·T5ÿs_«jõÕWWœ¥xȶ©êú«%àÞœüñïTõŽcS Æ0”ÜÅÂ… «Úhëõƒ óµ|«ªývšSÕ_}ìåŠ2;lÿЪ¾~åIŠwsÑ÷/«j§M^Õ¾ûî«(Œ `( ¸‹ ^XÕº[®¥Œ›Ÿýèúª¾|ü©U½ý¨wTõè}÷Sœå°Ý¶ÛUõ¹ïýF1`Ä¢ß-ªúÿíÝyœÞe}ïÿXUöMYfKm©ˆZÅ j¢u=¶öÔªÕ_ª­m=žžzÔS[ÅÚ½G­ÖµG[÷ÖªHd“} ;!¢(H(I€°ˆ,ùýq“*ˆù˜Ify>÷„ÌÌ}_ïëžÌÌgÞó½:ýãçnO8S(L8 `ü˜ .YTÕο°“0xØ.>~ÔhYqÁ­UûÙãªÚb‹-„ó0ŒWuÓu·îuâ‘£Sþöˆ¿“F¤?æ’Å—Tõœ_9TÕ×çwUµüª•UÍß»ªm·ÝÖÇû$®ÿÒ{C[ì´YU›n¾‰ç»õ[·õ[·õϺu/»üúªžðø'ú~ƺ'0h£Õ«WO«‚ ªZ¸pá¬Ü0럜õŸzê©U½ç³ï¨ê™¿wÈ”Z÷»ÿ`U¯;òÕ³rß§êú/=iIUß;û¦ª>ôž#«Úzë­}¼¯‡õÿÕßÿUUßßþêªxÊ<Ïwë·në·nëŸ5ë>é£gVõ{Ïÿƒªž~Ø3|?cÝ“Nä¨.»ü²ª¶Ù}+a0èÄÎY>xü«ú§ùS¡lûÎÙ·ª+.»XÌßZôªöØ|¼š>Íf `T^vAU»zÎèváiÂ`½Ó@i @uÙâK«úµß|Ž0øÑóâëߨjÙéË«úÂQÿQÕ6Ûl#œ)`||ô»Ÿ7.»YÌx'ltêÂÛþìíU=â ë0HYíšk®©ê‘Ú´ªM6ÛD(üׄÿÀG?¾ªw}üƒB™‚vØa‡Ñ wŽnî¸ý‡£çÍ73Æw.ººªÝ6Ù³ªùÏœ/6 `³Ú’%KªÚ~/¿Ó>›ÝxýMU}õŸN©êÿü7Wõ̧?S8ÓÀœñ9U-¿fEUÞgW¡0cœü‘³«:ñK' ƒ N¤À¬vÉâ‹«Úv­…1 ->í›U]uâµU}ú£Ÿ­jûí·Î4²ïÜýªúβË+ f†S>1j¼ùOÿ¢ªM7u6< `³ÚE—]XÕžÏÝI³È×ÿ嬪ØéÀªÞyÌû…2Í›»ïèãùÜs…À´wÕ¥£S¶¿k窞óìç…)C¤À¬¶øòÅU=ñ5?+ŒìæVUõÕw~½ª×ÿá«zÖüg gíóoÓÞ)=§ªc?{œ0˜r4€AÌJßúÖ·ªÚîÑÛVµÑÆ eºüôÑ) W¿¬ªO~øSUí¸ãŽÂ™AÆÇÇ«ºqÙMÂ`Ú:õèQóàõô†ª¶Øb ¡0åh ƒ4˜•–,YRÕ¶{l-Œè”ÎMž·íèÚ_ø¤Sf²­·}o¾éè'5·Ý|{U[·ªåKWTµÅ£#¦¼S>vnU_üä—„Á”§ Ò@`Vºø²‹ª:à%ã˜Ʈ8óʪ.?öªª>ñ¾cªÚe—]„3 í;w¿ª.[º¨ª=ö×@`ê:ý_Ï«êu¯ú“êG×ô©L¤À¬rÏ=÷Tuåw¾]Õ¡{,”ihÍ9És¶Ü·ª/~ê½B¡}æÎ«ê¬“OSÖnûaU¼q˪^ô …iC¤À¬rùå—WµËøŽÂ˜Fî¾kÔùÜ[­ê~ëTõüç>_8ü—±±±ªnþ·[…À”uãÒ›«ú»·ýƒ0˜v4€AÌ*K–,©êQ{l)ŒiàgNYX~ÕUø…ÿWÕ£ýháðÖ4V,½QL9g|jtêÂîÞ½ªm·ÝV(L;À f• /½ ª÷Ú^SØiÇœ[Õž›Î­êq?ÿ¸Jó€µÛl³ÍªÚa»ªºyùªªµƒsµØp®ýÖõU=âû£ÏS»ì¼‹P˜¶4€AÌ*/¾¨ª'òs˜Bn[u{UǾãäªþð•\Õ ž÷ª,X $ÖÙÜñ½«Z¾te¥À†uÊGÏ©ê_?üéª^úÒ— …iK¤À¬pÛm·UuÊïWµí.Ûe øæ¹ß®ê¢Ï}£ª#ÿùcUí¾ûîÂá!Ûoïý«:wÙ©UÿüžB`½;ë³çWuøK_UÕŽ;î(¦= `³Â’%KªÚaO§/LgüëèäÝ6Þ«ªc¿pœP˜0sÇG§wœôÕ…Â`½»þ;£Æë]׌~VûîšÌÀ f…Å—/®jÛ=¶Æðƒ[ï¨êØwŽNYø½ßøýª~å…¿"&ÜØØXU7/[% Ö»S>2:uáãï=ZÌ8À f… /» ª÷u „õéÊó¯®ê¼½¤ª#ÿù£Uíµ×^ÂaÒŒWµ|ÙJa°Þœó… «zÅ‹«ª]wÝU(Ì8À f…Ë–\ZÕaÏ~¢0Öƒ3?µ¨ªî~LU ¿x¼PXo6Þx4Ì£w¯jåõ7UµÝ.Û€ ÷ýï.¯ê¶oÝYÕ+þÏ+„ÂÌý:KÀ f´o¼±ª[pKU[oï†ÉpÇí?¬êØwœTÕo¿øðª~íWÿ»pØ`ö™³OUË—®¨4˜§~ttê‘ïøa0ãi ƒ4˜Ñ–,YRÕ{m'ŒIðí F§,œ}ôEÕNYXs|Øö›»_U§,ýÚè$&ι_}ýó’翬ªÇ<æ1BaÆÓ@i M£g{ IDAT0£-¾|qUÛîáÚéÌÏœ_Õö?Ø¥ªã¿t¢P˜ræÌ™[Õ—/øa0aÖ\[gÕå?¨ê·ÞðÛBaÖÐ@i 0£]péè'å;¼£0†;︫ªcßyRU¿ùÂߪê%¿öá0eUuóµ·€ sÊÇF§.|ào³Ž0Hí²%—Uõü_;LÁw.þnU§lQõ£SöÞ{oá0åí±ÇUÝô½›«Z}Ïêª6Úx#áð -úÒÅUýê‚_¯jÏ=÷ ³Ž0Héú믽°É=Um¶ÕfByÎùü…UmµjûªN:öëBaÚ¯jù²ÑU³wÜ}¡°ÎV^ÓèóÈE«ª:ü‡ …YK¤ÀŒ´dÉ’ª¶ßs[a¬ƒ»ïº»ª¯¼ã¤ª^òœ—Wõò—¼\8L{ûÌ™WÕ K¿Wi ðà|ý#gWõž·½OÌzÀ f¤K_ZÕ6{l%Œµ¸ê’kª:åÈÑyÆzÏè<ãýöÝO8Ìûî=z>÷Ío€uvÁ±£¯'_pè«jΜ9BaÖÓ@m4þüÕÓé/Z4:þ ƒš•fýë¶þÅKWµéö£’Íf[l:­×}õeK«Úó€ÇLÈû»ù{·Tµñ]£|öÝg_Ï{ëž±ë¿é¦ÑÕ³¯ºî;Uí°û¶³êã}¶ÿ{gÝÖoÝÖÿ`ÝõÃѵ¡n¼ftêÂ?w ÏïÖoÝ÷Ò@m´zõêiÕ@X°`AU .œ•fýë¶þCù—ªzÉß>¿ªŸÙtz_îã]‡°ª×ùê‡ôö÷Ü}OU_yçÉUýÚü_¯ê/{¥ç½uÏøõ_ýõ£çûk^6zþÿåsgôÇût7[×oßí»}Ÿ:¾ø·_«êÿ¾ùŸªš7ožÏïÖoÝ÷Ò@9…åꫯ®jËí7=Á7ÝOñk/«ê„÷ŸQýè”…ö?À“…Yc—]v©êŽ[~XÕwÜUÕ&ô)€¹ð¸ËªzöSFMµ‰nÀL  òãf”%K–TµÝÛÌêÎûâÅUmò½-ª:õk§{r0ëÍ3·ªåËVTµëøÎB U+F§S]}ÚuU½÷Ó,ø)4€AÌ(_6úÉû¶{n=+×ÿ•wœTÕ Ÿö+Uýö~Ç“îµÏœ}«ºné••#'䬪þþmÿW0@¤ÀŒrÑâ ªšû‚GÏŠõ^³dtÊÂÂ:µªÿóGªzìcëÉ÷³ïÜQañ…€.:~qUÏxüüªöß¡À `3Êå—_^ÕS^{àŒ^ç¢/]2zášMª:㤳l> ¯êÖãnÀ,vëM·Uuå‰×TõÏŸ;R(°Ž4€AÌW\qEU;íµÃŒ^çWÞuRUÏ{Ê «:üõ¿góaUµrÙM˜Å~têÂ? $ `3Â’%KªÚv­gÔº–]qÝèöòë«úäû?]ÕhÓáAÚn»íªzÄêѧ¾ÜzGU›mùHáÌ—œ<úzñ—~îÐÊ©UðPh ƒ4˜.ºìª¶ßkÛ±žó¿<:e᮫QÕÿÄJó&œñ¹UݰtEU»ÏÛM(3ØnùAU—åʪÞý £ª?úÀÛ,˜¢ö›»U-;«ª½~vw¡LC'}äŒÊ© °>h ƒ4˜––,YRÕ{n·AÇ÷®¾¡ª¯¾stÊÂß1š|?ùŸl“`Š›;>·ªÓN8QÓÐågŽN]øÙG®…õ¤'=I(0É4€ALK—/¹¼ªmöØzƒÜÿÅ'ŒîÿÆ o¯já¿_Õf›mfs`š¯jÕu· `¹çî{ª:û˜ «:õk§ Ö `ÓÒ—ž_ÕN?»ýz½ß>xZU¿8ïiU½îï³0MUµâÚ…0œxäèÔ…¿;â„ë™0HiéÒÅ—Tµày‡LêýÜpÍŠª¾ú®Ñ) õg]ÕSù%›Óܦ›nZÕŽÛïTÕÍ7¬ªêQ;n-€)èŠs¿]Õ¼¨êC ¬gÀ ¦•;ï¼³ª{îÝn¹í“r?—œ°¤ªå‹F?‘üò§Ýß–[Ú˜aö™»Oõ£Æ‘ÀÔtêGϩꌓÎl À ¦•Ûn»­ª±Ÿ̤¼ÿ>4:Gø‰sžRÕ»?ú¿„3ܾs÷«ê¬¥'U5çö À²æÔ…¿9â0HiåÖ[o­j›=&æZË—­¬~tÊÂÛÞøöªžöÔ§ f‰¹ãs«:þ²¯` ùÖùWUµ×V£§;ô0¡Àf€ÀÔ°Ývëôj—®yᯗUõ¡ç=NvëÎ: ÖæU‡¼ý¿^þÐio^ç·»ôäoTuýY£Â?ù¥ª¶ÞÚÕ×a¶«ê¦e·` ùú‘£ÓN;þ aÀa€Àú7ƒƒ²f˜ð` ¬ÖŸIÜßÚ '}ä̪·ûÁUýÓ¿¼Á¾À,7>>^ÕŠ{¯‰À†uòÇF_¯½ýÏÿºª7vÝw˜*|4²~<ØáÁÊ•üßC$ðði 0ùÖux°–Áµ×^[Õc7ͼþæÄÿ³N‚WòöþîsÜWß9:eáÏÿä/ªzúaϰ/À}ìµ×^U­¸öƪ¶ßm[¡¬GW^0:uá©×¾Þ{æ3ž)˜b4ØðÇÐ.¨Ñ¯(¬ËõÞð«ï±““ghxð †K–,©j“Íîû”}ì'Néôß?´K^ñKkm$œpÊ…Ýøío·í¶~¢<°½Ç÷©ê†k–W×nç|«ªkŸ0w^Ÿ?ÿ|Uÿß?&<˜¢4Ø0VNüÅÊœ¾0y4˜kk<ÐðàÝïݾöµø&—.¾dô„ÝìU=ÿ·ß_ÕUÏxì}^ïå‡Ïïè#¿ö€ïcÛññI\3ÃþûPÕ WY`£{oÿ¾ãª:ï5ÏzÀ×ÛñÕ£ÆÁO9tôõÞüùƒ)Jõk=|ÿòÃ}Ò˜hL¼ŸÖ>XÛðàž{F·OúèöÄïó×^vAUc÷žÓ¾Ñ6[Tuʳ¬êØ7}±ª7½öÏFoðŸ~àDZÝvZÀ¯êÖs~ € °ìÞkìvöèZ÷o"lþ­ïUµå>ûU5÷G ¦8 `ëÇÐOý_÷ºÑí¾0º½_áŽùLUÿcãÑoÓýýï-¨êª_TÕ§?úÙªvØa‡ûÞçº# PUuã²›…0ÎûÃQãàñï5Ö\Ëê]«F¯C¿v’`šÐ@m4þüÕÓé/Z´¨ªƒ:hVnØtXÿÂsϽϟ|ðƒ'çWÕêU«ªºõÞæÁ¢{o÷ØcªÆ÷_?Ǿ[¿uÏšõŸ»èœªv·óèåFëwÝW_¶´ª=x̬Ü÷Ùº~ûnßgƒÍ¾y}U›¬¼µª+6Ù¤ªÇòTŸß¬ßº§ `ÐF«W¯žV „ F¿û¾páÂY¹aÓbý÷¿îÀC9õàÞk ÜuÎè'çß;êzõ>óªZtÞ¢õûxì»õ[÷¬Yÿ+~ï7«Ú÷Å£¦ÓÎ{î¸^ïÿ]‡°ª×ùêY¹ï³uýöݾÏDËï==kìõŸªjFÿ®>õ¸ãGÿÎÏҰ𕯽Á[Þâó›õ[÷§ r “o»íÖý§þkN_¸·ó3·ÜRÕ/rHU;,^üàïàA˜7gÔtZ~Íèw“×w`º;ó3£¦è^§-«jþSF?yÝé½ï½ï+ΙsŸ¯û:âˆÑí,i"Àt¤ Ò@`ýj!¼ûÝ£Û5è“NºÏ_orÚi£¶ß~t»¦©pâ‰k¿O€i¿½÷¯êK—/À:¸âÜ+«:ë“VõG¿ûÚª~ýi£Ól:ì°µ¿ƒ·¾õ¾·'Ÿ<º=ôPᣠÒ@`â­\ùÀ?ý_[ áž{F·÷kü„Ç?~t{ç£Û5Í…×¾ö'ïë§=6€µ«ê–“nÀ¸eå­U~ôyUÍÛù€ªŽýìqUm±Åí¯i }=l0¬_ëã× üêÀ„Ó@`rü´šoðïßxÝëÜû_3™~×»~ò}¯í1 XÓ@¸éÚUÂø1çþçEU-;ûûU½å£Sžpð&öކ®™l0l“ÑÐ<˜4Lžµµ~üþ‡Ó xÝëFïg͹Ák{,ë`§vªêîŒN…ùáF×\Ùt³M„Ì*W]zMUg3:]á7þÛ˪úÝÏ.˜¥4˜ü!Âí¶{híu};À‡MÉ7ÔDøñÀÀ7ý Ï=÷'_w辂9ãsªZ¾tEU»ÍÝE(ÀŒv罫S:§ª7Þ­ªO~øS£?︣À¦Ða‰¸žáÀ„1@`ýYó ýd_ìÐà˜óæÌ«êš¥WTÀÌuÑñ—Uué—¿YÕ[Þ0º¶ÔaNCîÇõo² “Æ çÇ¿á¨ÃC`’Ì›»oU—,Z$ `F¹îÛß«êÌ£/¨êÙ‡<§ªþÊG„¬•SÃ:,XPÕÂ… e° À¯ê–¯Ü. `F8õ賫zÄŠÍ«zÿß|¨ª½öÚK8À:ÙXÀ xcccUݸì&aÓÒâÓF§ÈœqôèZ.oþßQÕóŸû|á‰0HÀ6ÛlSÕ&oZÕí«~PÕæ[o&`JZyÝUqÔ¨qpð¾¿XÕ™'}@8À„Ð@i ÀZÌ3·ªåËVTµû¾ 0¥œõÙó«ZuŨ)õ×oü‡ª8àáJ¤k1oÎ~U}ãš + `ÃûÖ¢ïTuæÑTõ¿ó‡UýÆŸÿ†p€I¥ Ò@€µ˜7w^Uçžvº0€ âÖ›n«êô£Î«jîö£—¾ü™c«ÚrË-…¬À X‹±±±ªnùÌ­ÂÖ«E_¾¸ªïžq}UoyãU=ñ O°Ah ƒ4`-Ö4V\{“0€IõÝÅK«®ð’¼¬ª|öpáS‚0HÖb‹-¶¨j›­¶©jÕŠ[ªÚzû­„<,«ïY]ÕI=³ªíWïTÕÑø×ªvÞyg!SŠ0HÖÁÜ9{Wµ|ÙÊJxè.>ñòª®ÿæ Uþ7PÕ3žþ áSš0HÖÁ~s÷¯êü¥§W5öØ=„¬“ë¿óýªÎ:ftºÂ3Ÿô¬ªÿ¸ƒ+Í`úÐ@i À:˜;>·ª¯/<^À:9í˜sG/|“ªÞó—ï¯j||¼ª/ÿÇW„L+À Xk~b¸êº[„< ËÏøfUgµ¨ª7ý¯?«ê…Ï¡p€A¤ë`ll¬ªåKW ¨êÆëoªêŒcίêqsG§*œvüUm¼±ŸÕ3‹Õ€A°.Ÿ0fô)s×]v«~ô“ÇmwÙF80Ëœýù ªZyÙèš(ù¦¿©ê±}¬p€M¤Â>s÷©jù²Ñµ4`æ»ò‚«ª:óèѵ^õÊ߯êeör᳊0H„ýæî_ÕiK¯jîãÆ„3Ìm«n}œâܪƷݻª/þë—«Úzë­…ÌJÀ xæŒÏ©ê«ý§0`†Yô•‹«úÎ)˪:âMYÕ“žô$᤬ xÆÇÇ«ºùºU€iîš%£¦Á™G]PÕ‹Ÿóß«úÀ~_8@¤ž{îYÕÊkoL3wßuwU§|â쪶¹sǪ>þÞ£«Úu×]…°À xÆö«ê†kVTµãîÛ ¦¨‹O¼¼ª ¾pYUo}ÓU=óó…ð h ƒ4à!˜·÷¾U-_öýJ¦’ï]}CUgu~UÏx₪޳ðÃÂx4€AÍŸ?õtzÀ‹-ªê ƒš•fý³sýöݾÛ÷©çºë®«jÅí£Â6;?jBÞïÕ—-­jÏ3+÷}¶®ß¾OÌúo¼îæÑ wlTÕœñ¹Um¾ùæþ³~ë¶~ëžÀ V¯^=­ Œ~‡máÂ…³rìv®ß¾Ûwû>õœqÆU½ó“_ÕüßꄼßwþÁª^wä«gå¾ÏÖõÛ÷‡¶þ%g~³ª3¹ ª×¿öWõ¢þŠç¬ßº­ßº'0È) ðŒWuÓµ7 Ö“¿7úx;ãèóªú…ñƒ«:ùØSF_ØþŒ/m&“0Ș‚]wݵªÛoº£ª»î¼{ô‰u“G&ØÙŸ?¿ª—ÞZÕoüëª~þç^8ë‘0H†9ãsªZ¾tEU»Œí$x˜®¼ðªªÎ:æÂªÙïUõò?ûMál@À xö™3¯ªï-½ºÒ@€‡âî»î©êk8µª=·5{¾pÔTµÍ6Û ` Ð@i ÀðßÞûWõK."¦= `L¢9sæVõ¥óoÆ öõŸUÕf«¶®êCÿðѪöØcá0ch ƒ4`UuÓ²U˜A.;åUõÉ ªú‹7¾¥ªçüòs…ÀŒ¥ Úhþüù«§Ó^´hQUtЬÜ0ëŸë·ïöݾOçœwNUÞwç{??ðë]}ÙÒªö<à1³rß§êúï¼ã®ªnºnÔ$ÙfËm«ÛkÌóÝú­Ûú­Ûúgͺ5€A­^½zZ5,XPÕÂ… gå†Yÿì\¿}·ïö}ú{ùᆲª~}¬ªöØá_ï]‡°ª×ùêY¹ïSmýg~zô£Û®¼³ª·¾émUí·ß~žïÖoÝÖoÝÖ?ëÖ­ r ¬ûÎÝ·ªåK¯­~z ëŠs®¬ê¬O^XÕþÚª~ý-¿.f= `¬óîm wÅaL!«VÜRÕÇŒ®u0oçªúêçG¿£ºùæ› î¥ Ò@€õ`|l¼ªU§Ü&Œ)à¼/^TÕ²so¨ê-o<¢ªƒ°pà§Ð@i Àz066VÕM×®Æpե߭êìcF̓—¾èåUýΧW8°Ž4€A°ì²Ë.UÝqË«ºóŽ»ªÚä‘>O†þàΪN;úܪvÚx·ª>ùáOUµãŽ; $ `{Àz4gÎܪ–/[QÕ®ã; e]tüeU]ö•oUõ–7ŒNW8ôÐC…“0HÖ£}çî[ÕµK¯¬4®k¯¼¾ª³Ž¹ ªgòܪþùËL0 `¬GóæŒ‹/ºPéG]Õ#Vn^ÕûÿæÃUíµ×^€I¢ Ò@€õh||¼ª[Ž»MÂâÓ®¨êŒ£UõçoxKUÏ{Îó„ë‰0HÖ£±±±ªn¼öfa¬ÅŠko¬~Ô8xâ~O®êÌ“> Ø@4€A°m·ÝvUm|Ï#ªúÁ­wTµÙ–NuÓ÷VUµèÿ-®êoßôUí¿ÿþ€ L¤Àœñ¹UݰtEU»ÏÛmVæð­Eß©ệϯj‡-vªêSÿŒ' L1À ØöÛ{ô;ýß\zq5{·Þx[U§}^Uûì°oU_þÌW«zÑ‹^äÉS”0H6€}æìSÕ¢3Ϙë=ïK£¦Å5g^_Õ[ßô¶ªžpð<`šÐ@i À066VÕªÏß:#×÷ÝÅK«:óè ªú¾¼ª~öwm>LSÀ ØÆÇÇ«ZyíÍ3b=wÞqWU§uNUÛ¯Þ¹ª£?ð¯Uí¼óÎ6¦9 `l[n¹eU[m¾UU·ÞxÛ´\ÇÅ',®ê¢/.©~tºÂÓ{ºM€F¤ÐÞsö©ê†¥Ë§Åã½þÛ߯ꌣϯêYOùåªÞóÕ#m&ÌpÀ ŽN‰áÞIDATØ€öÛ{ÿª.\zæ”~œ§3:]aãYÕ{ÿêÕN“f> `l@sÇçVuê 'L©Çµøô+ª:ãèEU½ùõQÕóŸû|›³”0H6 ±±±ªn¾ö– ú8V^SUgu^UÏ{RU§ÿ¾ª6ÞØÏ`¶óÕ0H6 5§¬Xzã¹ÿ³>w~U7/¹½ª·¿áïªzìcks€û0@€ a»íªÚäÞ?žvÿ¿?äí?ñ&:íÍr6X_îÃuñ¡ÓÞ<ØJÐD&“L¤u<€¹ãs«ºûŽ{ðïw;ç[Õh°¶AÁ«y{ÏzÆAýÚs½ª|þÕö˜°¾<ÈÖÁOãä`CÐ@€‰²¶öÁšáÁÉ'n=ô>=66VÕ]?¼û>ÿÿñï;®ªkŸ0÷>ÿÿ}'½©×ö7xWǰ¨>{¼ý&”L¶ jÜßûNz“l€õF&ÂOkÜx°zõèöˆ#F·oyKõc „{OaXÓ<èÞW_voáâ/¯êÂ_\Õ¾ŸýLÏ|ñ¯=ð㙤Á0;i ƒ4`²^pðÁëö†W^9º½·­pÖ-«ªÚtÇGn7Þ´ª9c£k l¾ùæÿì»u[¿u[¿u[¿u¯ `ÐF«W¯žV „ F¿û¹páÂY¹aÖ?;×oßí»}Ÿî ‚u=aÍ5N<±ª§çÛUýö_þeU¯|Å+'ÿ1Øwë¶~ë¶~ë¶~ë^À §0ÀdØn»µ7Ö4Öï=•ág掮uðÊ+¿ýàï`i ƒ4`²pàþ-„ŸÖ<¸¿5¿ævMsáÐCòýÿ´Ç04`²MÖ¯øÕ`=Ò@€‰òÓZk¾Ù_¹²;ìÁ½Ï5 „{Oi¸Ïû[Ûã˜`°¾LTc@óØ4`"­­…°æ›ÿ‡ÒXÓ\h“D&ÚÐ7ñÛm÷à[ëò6†À$Ò@€É0ÔDX3XÛ7ÿfÈ`xL2˜,ë2DXãÞ×[x¿?¯óýL2¿Â“i²¿¹7<Ö ˜lk¾ÉŸÈÓ €õÌÖ—ÿ¦ÿ¡  € È6„Ÿ2 X°`AU .”0¥¸0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@m4þüÕÓé/Z´¨ªƒ:hVn˜õÏÎõÛwûnß­Ûú­Ûú­Ûú­Ûú­{CÓ@m´zõêiÕ@X°`AU .œ•fý³sýöݾÛwë¶~ë¶~ë¶~ë¶~ëÞÐ4€AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èd€ 2@ ƒ €AÀ `0Èôÿ›«ÉÙÄÝIEND®B`‚wagyu-0.5.0/docs/new_ring_si.png000066400000000000000000003320141360766232600166270ustar00rootroot00000000000000‰PNG  IHDRˆÊÖ t© iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ¥J! J AÅŽ,*¸v± ¨èªˆm-€¬Q,,ìET”u±€•7I]÷•ï|3÷Ï™sÎüçÜ™ûÍ ìÈrPrùù˜`?fRr “$ü)0b±Eßèèpeäùw¸m¡\·–ÆúçøUWĉ†8#bçB| \›-æ@hƒz£™ù)~±º€H–â 9Ö‘â49¶•ÙÄÅøC™Êb 3P’Æg°3`%Ķ|ñvˆ½Ø™,ĈÇåæÎ€X™ ±yÚwq2þ3m4&‹•1Šå¹È„À rX³ÿÏrüoÉÍÌa5S#ÍÖmoöŒ0)†Ü‘“ü´È(ˆÕ ¾ÄãÈì¥øn¦8$~ؾ—-ò‡5 PÀa„A k‰2ÄÙñ¾ÃØž%”ùB{4’—7ŒÓ„3b†ã£üœÈðá8K3¹¡#¸’+ Œ±Iç…B Wz¬03.QÎm*à%DB¬q›(;6lØ÷aa¦äˆP#ål ñ»taPŒÜÓÌä…Ù°Y²¹4!öÉÏŒ ‘ûbI\QRø7 PÎãpùñÃÜ0¸ºüb†}K9ÑÃöX%7'8F^gì°¨ vÄ·#.0y°ÇY¬‰ÑrþØ€ ?:NÎ ÇA8ð€ İ¥ ðZ{ëzá?ùH`!È\`=¬ñH”ða ÁŸqhÔÏO6ÊPÿeT+ï­Aºl´@æ‘ žBœ‹kã^¸{ØìqWÜmÄ©<2+1@ !-Fy°!ëØ„€÷otaðÉ…ÙI¹ðGrøð”ÐNxL¸Iî€ðDeØj:¯Høs&ˆ-h8»4³gÄ7…¬p?Üò‡Üq® ¬qG˜‰/î ss‚ÚïŠG¹}«åóIYŸÏ°^ÉRÉi˜EÚè›ñµú1Šÿw5âÀgØ–ØRì(ÖŒÃ.c'±:ÀÄÎ`õX vJŠGWÂÙJ™-FÆ-ÆáØØÖØöØ~þÇì¬aBÙûùÜYùÒ á?C0[ÈËÈÌgúÂ/2—ÊgÛŒcÚÛÚ9 ý¾Ë?o²ï6¸òM—w·R¨Ìø¦cpâ)ôo:£7p{­àT[,,ëpiG  w†ÐFÀædœð`"ˆq LƒUϹõL0,%  ¬ëÁf° ì{Ápԓฮ‚6p܃k£¼}` "BBhÑBôÄ ±G\/$ Gbd$É@øˆ™‹,FÊ5ÈfdRüŠœ@Î!—‘väòéAÞ ŸP ¥¢ê¨.jŠŽG]Q_4 C§¢hZˆ£+Ðhº­EÏ¡WÑ›¨}‰öcSĘf¹bþX–‚¥cBl>VŠ•cUØA¬¾ëë˜ëÅ>âDœŽ3qk¸>Cðxœçáóñåøf|/^‹7á×ñGxþ•@#è¬î„PB!ƒ0“PB('ì&'\€{§›0@$D3¢ Ü›ÉÄ,âârâVâ!âYb;±‹ØO"‘´HV$OR‰EÊ'•6‘ö“Î:HݤdE²>ÙžDN!óÉEärò>òirùyPAEÁDÁ]!J£0[a¥Â.……k Ý ƒUŠÅ“GÉ¢,¢l¤¤\ Ü§¼UTT4TtSœ¤ÈS\¨¸Qñ°â%ÅGŠ©jTKª?u UL]AÝC=K½C}K£ÑLi>´Z>m­švžööA‰®d£ªÄQZ T¡T«Ô¡ôJYAÙDÙWyšr¡r¹òQåkʽ* *¦*þ*,•ù**'T:UúUéªvªQª¹ªËU÷©^V}®FR3U T㨫íT;¯ÖEÇèFt:›¾˜¾‹~Þ­NT7SUÏR/S? ÞªÞ§¡¦á¨‘ 1K£B㔆„1L¡ŒÆJÆÆ-Ƨ1ºc|ÇpÇ,spLǘ÷šc5}4¹š¥š‡4oj~Òbjjek­ÖªÓz k[jOÒž©]©}A»w¬úX±ì±¥cŒ½«ƒêXêÄèÌÑÙ©Ó¢Ó¯«§¬+Ðݤ{^·W¡ç£—¥·Nï´^>]ßKŸ§¿NÿŒþ ¦Ó—™ÃÜÈlbö脈 v´ šÆ2|`D1r5J7ZgÔhÔg¬oa<×¸Æø®‰‚‰«I¦É“f“÷¦f¦‰¦KLëLŸ›iš…ššÕ˜Ý7§™{›ç™W™ß° Z¸Zd[lµh³D-,3-+,¯Y¡VÎV<«­VíããÜÆñÇUë´¦ZûZX×X?²aØ„ÛÙÔÙ¼o<>eüêñÍã¿Ú:ÙæØî²½g§f7ѮȮÁî½¥=Û¾Âþ†Í!ÈaC½ÃkG+G®c¥ãm'ºS„Ó§F§/Î.ÎBçƒÎ=.Æ.©.[\:]Õ]£]—»^r#¸ù¹-p;éöÑÝÙ=ßýˆû_ÖÙû<žO0›À°kB—§¡'Ës‡§Ä‹é•êµÝKâmàÍò®ò~ìcäÃñÙíóÌ×Â7Ëw¿ï+?[?¡ßq¿÷þîþóüÏ`Á¥­jñ›eÕõ;Ï >B YҪʭí›è2qÞĦ0jXlØæ°Çá–áÂð†4bbÄÚˆû‘&‘üȺ(µ6êA´Yt^ôo“ˆ“¢'ULzc37¦9–;=v_ì@œ_Üʸ{ñæñâøÆå„) Õ ï×$J’Æ'ÍKºš¬ÌK®O!¥$¤ìNéŸ8yýäî)NSJ¦Üšj6uÖÔËÓ´§åL;5]y:kúÑTBjbê¾ÔϬ(V«?-4mKZÛŸ½ý’ãÃYÇéázr×pŸ¥{¦¯Ižá™±6£'Ó;³<³—çÏÛÌ{’µ-ë}vTöžì¡œÄœC¹äÜÔÜ|5~6¿i†ÞŒY3ÚV‚$Ï=o}^Ÿ0L¸[„ˆ¦ŠêóÕáQ§El.þIü¨À« ¢àÃÌ„™Gg©ÎâÏj™m9{Ùìg…A…¿ÌÁç°ç4Î5˜»hî£y¾óvÌGæ§Ío\`´ xA÷Âà…{Qe/ú½È¶hMѻʼn‹Šu‹wýüSM‰R‰°¤s‰Ç’mKñ¥¼¥­Ë–mZöµ”Sz¥Ì¶¬¼ìóröò+?Ûý¼ñç¡é+ZW:¯¬\E\Å_ukµ÷ê½kT×®éZ±¶vs]éºw맯¿\îX¾meƒxƒdcøÆúMÆ›Vmú¼9sóÍ ¿ŠC[t¶,Ûò~+gkG¥OåÁmºÛʶ}ÚÎÛ~{GðŽÚ*ÓªòÄ;ŸîJØÕü‹ë/Õ»µw—íþ²‡¿G²7foSµKuõ>}+kÐqMÏþ)ûÛ¨?h}pÇ!Æ¡²Ãà°øð‹_S½u$ìHãQ×£™Ûrœ~¼´©]ÛW—Y'©O®o?1ñDcƒGÃñßl~ÛsÒàdÅ)S+OSNŸ:Sx¦ÿ¬àl﹌s]ÓïO:£iRSë…° —.]<ßìÛ|æ’祓—Ý/Ÿ¸âz¥îªóÕÚ§–ã¿;ý~¼Õ¹µöšËµú6·¶†ö í§;¼;Î]¸~ñFè«7#o¶ßŠ¿u»sJ§ä6çöó;9w^ß-¸;xoá}ÂýÒ*Êê<¬úÃâCgÉ©GZÇ>¾×ÅîzùDôäswñSÚÓògúϪŸÛ??ÙÔÓöbò‹î—‚—ƒ½%ªþ¹å•ù«cùüÕÒ—Ô×ýZøzèÍò·Zo÷¼s|רÝÿp w`ð}é­{?º~lþ”øéÙàÌϤÏ¿X|iøöõþPîЀ%dÉŽlhz:oö@K†gx£(Éï_2AäwFÿ Ëïh2'—=>Ä/ žQ*a3˜ ŸÒãwœ@FÛ°ˆÒì屨ðCø04ôVR_„CCƒ[‡†¾ì‚dïp6O~ï“ žñ·kJQK§ øQþ±lCô²’… pHYs%%IR$ðiTXtXML:com.adobe.xmp 904 970 FR`iDOTå(ååå݆øìÎ@IDATxìw€ÅòÇ/ˆÉ D È1ŠП¢¢<#úã{&0+Š9¡  bñ‰bzfD1b% HΔ —¸ûaÕôá7w;»3Õ³»ßûckª§»ªçÓu½]Ó;»éÅ»þÒðWB gÏžtb*xa ZQVÁ_¸ãÜíp7^ÁßЕà®Ë[zIDGwÎn^ÀßL°åàî/DÁ $€(«à¯ Üqîv¸¯àoHèJp×å-½¿$¢£ƒ»g7/àïF&Ørp÷Æ ¢à…@”UðWî¸w;ÜWð7$t%¸ëò–ÞÀ_ÑÑÁ]‡³›ðw#l9¸{ã‹QðB Ê*ø+wÜ»îÆ+øºÜuyKoà/‰èèà®ÃÙÍ ø»‘ ¶ܽñE‚(x!€eü•;îÀÝwãü ] ¥7ð—Dttp×áìæüÝÈ[îÞø"A¼@ˆ² þÊÀwàn‡»ñ þ†„®w]ÞÒøK"::¸ëpvóþnd‚-wo|‘ ^ DYeàŽ;p·ÃÝxCBW‚».oé ü%Üu8»y72Á–ƒ»7¾H/¢¬‚¿2pǸÛán¼‚¿!¡+Á]—·ôþ’ˆŽî:œÝ¼€¿™`ËÁÝ_$ˆ‚HQVÁ_¸ãÜíp7^ÁßЕà®Ë[zIDGwÎn^ÀßL°åàî/DÁ $€(«à¯ Üqîv¸¯àoHèJp×å-½¿$¢£ƒ»g7/àïF&Ørp÷Æ ¢à…@”UðWî¸w;ÜWð7$t%¸ëò–ÞÀ_ÑÑÁ]‡³›ðw#l9¸{ã‹QðB Ê*ø+wÜ»îÆ+øºÜuyKoà/‰èèà®ÃÙÍ ø»‘ ¶ܽñE‚(x!€eü•;îÀÝwãü ] ¥7ð—Dttp×áìæüÝÈ[îÞø"A¼@ˆ² þÊÀwàn‡»ñ þ†„®w]ÞÒøK"::¸ëpvóþnd‚-wo|‘ ^ DYeàŽ;p·ÃÝxCBW‚».oé ü%Üu8»y72Á–ƒ»7¾H/¢¬‚¿2pǸÛán¼‚¿!¡+Á]—·ôþ’ˆŽî:œÝ¼€¿™`ËÁÝ_$ˆ‚HQVÁ_¸ãÜíp7^ÁßЕà®Ë[zIDGwÎn^ÀßL°åàî/DÁ $€(«à¯ Üqîv¸¯àoHèJp×å-½¿$¢£ƒ»g7/àïF&Ørp÷Æ ¢à…@”UðWî¸w;ÜWð7$t%¸ëò–ÞÀ_ÑÑÁ]‡³›ðw#l9¸{ã‹QðB Ê*ø+wÜ»îÆ+øºÜuyKoà/‰èèà®ÃÙÍ ø»‘ ¶ܽñE‚(x!€eü•;îÀÝwãü ] ¥7ð—Dttp×áìæüÝÈ[îÞø"A¼@ˆ² þÊÀwàn‡»ñ þ†„®w]ÞÒøK"::¸ëpvóþnd‚-wo|‘ ^ DYeàŽ;p·ÃÝxCBW‚».oé ü%Üu8»y72Á–ƒ»7¾H/¢¬‚¿2pǸÛán¼‚¿!¡+Á]—·ôþ’ˆŽî:œÝ¼€¿™`ËÁÝ_$ˆ‚HQVÁ_¸ãÜíp7^ÁßЕà®Ë[zIDGwÎn^ÀßL°åàî/DÁ $€(«à¯ Üqîv¸¯àoHèJp×å-½¿$¢£ƒ»g7/àïF&Ørp÷Æ ¢à…@”UðWî¸w;ÜWð7$t%¸ëò–ÞÀ_ÑÑÁ]‡³›ðw#l9¸{ã‹QðB Ê*ø+wÜ»îÆ+øºÜuyKoà/‰èèà®ÃÙÍ ø»‘ ¶ܽñE‚(x!€eü•;îÀÝwãü ] ¥7ð—Dttp×áìæüÝÈ[îÞø"A¼@ˆ² þÊÀwàn‡»ñ þ†„®w]ÞÒøK"::¸ëpvóþnd‚-wo|‘ ^ DYeàŽ;p·ÃÝxCBW‚».oé ü%Üu8»y72Á–ƒ»7¾H/¢¬‚¿2pǸÛán¼‚¿!¡+Á]—·ôþ’ˆŽî:œÝ¼€¿™`ËÁÝ_$ˆ‚HQVÁ_¸ãÜíp7^ÁßЕà®Ë[zIDGwÎn^ÀßL°åàî/DÁ $€(«à¯ Üqîv¸¯àoHèJp×å-½¿$¢£ƒ»g7/àïF&Ørp÷Æ ¢à…@”UðWî¸w;ÜWð7$t%¸ëò–ÞÀ_ÑÑÁ]‡³›ðw#l9¸{ã‹QðB Ê*ø+wÜ»îÆ+øºÜuyKoà/‰èèà®ÃÙÍ ø»‘ ¶ܽñE‚(x!€eü•;îÀÝwãü ] ¥7ð—Dttp×áìæ%åøñ£8úh7$*å)Ç=NªH@¢¬‚¿2pǸÛán¼‚¿!¡+Á]—·ôþ’ˆŽî:œÝ¼¤$ˆn¡êr$ˆbx’ö7$ÿ ÷jÒòßãJÃUîvÇüíðw;ÜWð7$Ê–þü“*TÝk/’ÙÙÙe7(ç¬áþñÇSÍ… æ“l¼o’+V,ÇBt§óóó©âßK²ó?º¬P¡BtÊ©µe˪ñ餉$ÿï´ÓI¦§§—Ó2ºÓK—,¦Š_}ñ9És/è]Ãrjþ÷ÜyÕümÑ’çž{~9-½~ûµqÔ ?y÷íÛ×›Y[¬#‡ÝÕhÙî’'Ÿ|rd‹;ïdÝìvëy^Y3Ü'Mš¤ì91Ý!Aã–´$þ±Åe‡FMZþ¡!\zGÀ½t.Z¥à¯E:Ò¸GòÐÖÀ?:âHK焱t.¦ ¢!ÁóM$ò4$ˆ‚PèÈk¢²;8÷ªáÿö[oѹœÊ•IfddìQ7–sGsÙÒ%Ô¼y‹–$ý²¿eóf²7ç×Ù$;ÆwLIñáeéâ…deñ’¥$»uïáƒÕ´4ÃýÞ¡CÈÞÖ|ç·{÷î¾Ø7FÞ}kî]«.É£Ž:ÊœòEä²sØ‘ÜïÎ;ûb×|Í•txñ¥W‘lÓ¦9—4ü«åðÎÀ³c^&{5jԈˮiœ»cžtü1$?ýâsÊ9göL²sõU—“œ8ù+_ì#o½Æ<^xþy*zç£OÍ©¸¤áÞóÈCÉÎôYsH¾üÏ?qÿ[ãþgñõÊÕ9îŸ|úÙ¿ÿð¨NíÈȱ§œEòöÛoßèß,4mX›´;î~dÿþýÿv6öÃîÎŽÂŒ_~"#ÿ}õ ’½zõŠÝèßZNýá;¶wܱ$?úäs’:u"ïËØçF‘‰+þ} É™³ç’lÚ´)Éx_n¾ö22ñÀcO“Ìsvä²²²â2mâ¾JzÙ™<åG’›·íˆË®lܦY*ÚYTLrÁÒÕ²J\zNž/»t:ìLþfZ\öLc³>èpà~Tt¼ã&üÏT‰KvìÐÚo^5äÿõ»˜äÃÆÇe×4~fÄ#tøäƒ<œ÷Ÿ;I¿þúëM•ØäçŸS»‰ƒ9Þo]·€ôß5’äyçG2ͬ;‹yÜÓ† ár˯&Ý@ AœB@HňyS‘ –ÎËÄ=ÄÒù˜R$ˆ†D¤D‚ÉCjH%Ö‘ –ÎÅ”"A4$J—HK炱t.fƒ±t>² ¢ úrîङDñŽ;Ä8ªsgÓ† Tðî!“Œ÷3ôWýë\²3fü›$7oÝNÒ¯—šÕ«‘©½*W"¹tÕZ¿L“zµö&ÙºUs’_~÷³/ö‹‹ŠÈNff&ÉóÎîCrÌ+|G<^'s~E&ŽîÂw¾/È;Y÷?øp¼¦©}ûƒ"¹åwÞ¡¼ê¦{H¿úê«}±ÿè}CÈÎè'øÎæŒ&ýì³ÏöÅþ€sùÙ“/?ãg žzù²ÛÍÙ¡ˆ×I.íÉÄÂ|ÇtâW¼ã±ß~|‡9^û•œ;á98~-ç;íñî îØÎÿŸµjpÜ›;ùy…ñv™ÚÏœÎÿ?gžx4é;Š+\ºj½/ö'üw Ùyzè¿In©XŸä÷¿ðNM¼NZµhF&ÚW[G2¿ÿýoâçñš¦öôíM2cÑÇ$+Ä;|O?ÿ’/ö»vhKvöÏødƒ“n%y§¹ƒ§—ºµx>>±ÇKçþüÿ{Ùe¼³«ùÎûRíÚû‰“Ü‹äy·¿@ò´ÓN‹Õ4µûÉyæí²žHzvF1ÉGÆ~H²K—.$c}÷üÓÔtâ37“œ²8Ÿä§ßÍ Ù¬Ç)1¼Ü>è*j•=k,É»?ÝFr‹ó~ï3|õë0÷»ŽØJvoø”ç?7±*Œã¥ÃþüþzËAKÉÊí?5 9{Áò8¬înZ­ ¯þ{j[Òä§S¦î®ÃÑŠå˨U—û“|à(æñ~ÆÉ¤¿<ßWb0MM>ÿd"É>§²½[»¾²í•$ylÉX_žõ85ývÜ$kenaÙ›ßÏ«ij7èÊ‹Ižöñ8’kœåß–{ùýüüÅ‹Ù~Èv¹S»?)…Ñ)["A| BE‚(€8*ÄÒ¹˜R$ˆ†Dé bé\ –ÎÅ”"A4$"%ÄHRC‚(‰°Ž±t.¦ ¢!‘ ¢çÐ'ˆ¦¿æ3ÝæÛºÌN¢Ø9lñüSÔ"ÞÏÐ_ÅEdgï…ü ÙcßòŽÙ>Ýq<µ×‘dî4~6*soï8¶nRìßÜ‘w$ÿ»žw >þò*÷%ÇߟTàƒ±ÎNk¬ö›;‡šžÜã$/nÇwÿ8øÒxøÑXMS»Þy“äçðNÞyíÓIoÜç~’×\Ã~H‰áå±î¢VK?zŒäš-¼qòu|¾_¿~1XÝÝä² ú’rð–HN˜ËϤÜòĤ÷èÑcwåŽzvå;Ó7´žE­ÿóIÉ ¿%¹ÿþ|§9ÓÔ¤q½š$›UÜ@rö¾3>ÉJÒkÖäó¤xxÉËÍ¥Ú{W«JrË;IV¹w òãÜAœ=kÙ;ëÄ£H~xÆ&’]_áþ.[ýé±¾¼ñ*ß¡~åÁÿ‰:þIòŠï[“üaú¼XMS»î䟧†?Dúð^—£ÿàëygâqÙïÖ)Ôþè¢OIäñ­ökCú3/ðõÅêäHç™ÃûùL|¶û_ÐõVÒï:4VÓÔ®Aíê$§^Àãz÷·÷íÎy˜Ê/¿üò˜ìoÞÄö7¨Cí;×Ë'Y­Z5’çÜÆ;ˆ}úô‰Éþ´Ÿx>¿¤/?Ã8õüd§ë˼ƒþО'?üpOö‹œOˆŒéyj÷þÈH¾|Çe‹§øÿlÒ7Ó©¼yóæžìçååQýû‡ÜH²øgæ0ä0æ•s_•oØÄó¥JU¹±3מּõ ¿ßvÌiLå•O8ä>O$Ô ŠH˜2„{ŽQŒ`é*ÄÒ¹ A,‹)E‚hHDJ$ˆ‘<¤†Qa bé\ –ÎÅ”"Ad&aC‚h"ÛL˜õ½·Ë ¬6D6áÈ$ŠÎ3‰›Û·§+Úì3$ìÆwÂÞOw>Cÿú;âŠKWÍDtÃP…Ú‹_#ù¯v›I¶U™d¼Ï,ô9áh²s^-¾óûЗ¼ó±1;¾;Ždt×KÛælç­“ø™®•›‹éÔ} ;’4wM}¯2;‹wdvÜÌwJ_Í>Ì8…býÖ³…óyg ×QÈ΂|çø!Þ`M[wàÕTnvÍx±÷ÝwM¹”ø.U}âVßÛùNøAõùŽ`íÞ¼ówÕUWQ=Ù¾mèì6tþ߃o3¦H;F;@ZÆß¨aÌe@‹%tæ_ñÙ³Ó¸âË¥ƒ¾çñNÂÎ"Ž·]¨¼Ä¾ó­Åi‘åO=ÂöŸ=f=Õ?²1÷ãî/Ùþg™ÝèàØã{’Ümë ?òü £v?]°•dÝ*$Ò.ý0‹íÓä!‡òN ŸÝ“·á±kd©Šùr°÷Ƽ@úg¨çKl¡bEŽûÂVl¿yëftÂü?r­¿¬±½"Ãǹž-›8—õ!Uýö<WÓ®Ãs<¯ÕéÄö÷©»2×oì–èŽ]skV®¡úõÖüHòÕÿã÷)c¿ÑãÌgÿnGSQåª ®„·G§ß†‹ñ·r!ÿßžXe>µ¿÷hŽc¿â=étxDïn$Íïü¹õÛØ5rõü%ÔîÆ¶üôÊtŽ»7úRqZÝGy^8¤Gg*0íÜ$·Úý»vþb*zéþ$ÄQûò8Íå0M;b,óotHÛRíK{Òï¦E˩ʷý8.ó†pÚK¹åYïT¤ƒ­›’ÌÈ`^iiFr½Õ).vÆcÛÂ%TaÎÅ<®•¹»iæýüÚ)Ué|Í6MC|}Ž’–î|˺é·ñS˜_HUòpG dû&î{·f Ì­Iû´n@²¤×¦ŸNüpí]¯ÎÆ@~.¿/휷„NÍÀ;ѦÞ`~{L{éºTT§Em>UâÀ©i6Œç|þ6ŽÃ‚Y‹¨â‚KùzœVi¯?ÅqÓp+Çÿ/µªÓ©žŸN!Ù²eKS52áÖ÷–©!Ap4d_D1’¬"Aä72óÆe$DŽÃÃH³ E‚ÉÇ,”‘ òÿD$ˆÃA‚¸˜p AtG'ÁB‚ˆñïóD¢#A#–p ¢óÌaþD~¦`„ó{R× æ;Kæ3ôCg6¤+íÐýèˆ+6 c¹à™óãÏTïò&KHhÏw’6:7N>Æ;gÇÕ;ÂÞî;á\\rUܹžûýTªð|·µ$rî„þ<·[¸¥|Ì$M?Í9sçÏíê¸ÿßœÍw–ñÆRÚd~K;ÿ#¾ÃÛ´ÓÁöÍB˜{±û©ñoäÊ_fS•eÎðLç á¿3¹åßñ-ÎZ­šS$M{)M¥BçÙ°í ùŽÝ’+˜»9ÿÈ·|ôЬtP³ ß4çKn îy@UŒýôKIŸ;€í›;šÔå†ã×Ô¡óµÕ"™^rG–Ô]/üFhîd›;š;œgXrVññsšV§¿ÎwLo@EÕëóGsÞŒïÝw vlÞAU÷rú?µäÍÃ^ä¸\W¯1Õ«ºïh™þJ?»uv»q;ÕX¶„äw:;#G¡籃_ÿ=‡j︑ûãdn<®.¯êõvæµ(lþ½Êέ<‹nœKÅ›:±ý7æq$\ݶ•¿UµÉNåææ»1X³þšpë{ËÄ ŠH¸B‚H#h‚F"A4]òVNH.‘XJ/$ˆÌ§$!2œx=†12~ ³€E‚èð1˜8oÚ¥1)$ˆ’OIÑ $ˆÌg&$ˆ‘ñc4$ˆ†DÙ2áÖ÷e_Nàg‘ Ä @Nb¸m ߺoñÜHº’ßæ³`yŹQ}ýo|çºz_çUäûÒn Î;sï·;øŽã†A¼B4Ï2Õ{Œ ´ÂwìÜ&tÓÝøÈùYª´™7üF;oçò#žg97—ï86ºÙÙ‰àâ’…¼Q÷°ï\Wz!÷wŽc?ïfÖ?_Â-ÿéÜq¬sM3*(ÁaŒ4JtnŸîܱ[x3ß1Ýt=ÛÏ7Ó-å;޵6aû¢½1ËÖv½:ç Ç"çŽÝŠÛØþÚÿðÂG¿å¦óÀÖëW¿Ä„—ƒëùøŸñø¶®Âö¬Ï™Ðˆï8Ö=a/fKê,å8,|n •ÍîÏw Ïø¯§væ8¬u¸ØA,±PöAÞ\Þá¨ðÚrªhîXþ2ßY_Zc*¯ÖŽÇ¡lk{žÝ1wjj}Ì;e_žÅýoîìå\Ùœå4rv"ö4QfÉŽï7ÐùF_ýN²h;Ûÿa-óovßiÏÚ‹ÿÊ4VÊÉí_ðNPÛé¼C?¡7ÛÏÊ•;¼p@)­¢/Úöñ:ªÜiáz’teûû=Çü[?nv(£·ù÷š[ß㦣~ç¾K÷gû'|Xª5êÜzÿ{#Ç[ÞXMµó¾fû#Oàÿß3xž¬w=¯“U7ç¸é»“ã¨y÷ÈŸüÉ‚:ÿjQß«²éEŽûKªðü_¸ƒÿGVæ‚zgðÿ¯W»¦þ†g–Òá5u¶‘œõ;óù %ïÔ9Öyc1 <Ê?žXL-*/cûMëð¼0÷hþ¤KC™“G³%Õ×=²ˆŽ=€ç¡{¾cûÛûíKåU[›Ê’&žÖÜÏóæ3‡æQ»K>äÿÛƒøý°b]ŽSOFÿVyÕ~_|íÞIì9ŽOîçü_e:;®kâépæÀÙTÿ³ó¸Y÷±,|¦';n•]7‡N½vÇýYñ<ÖìA±Céf œòyWñNâËÎ'.ýÉÙA¼•ù—Ó¼ÜÓ³>Ï8óÂ-+ø}$Öćüo”6µ?/?žÏÄ»ƒhìçò<0óJæ]vøRžêÌóƒ©ïU¶ŸÆŸ\h1j5yÿ_­¨u8é_NúŠMÂÒ,$C²“˜0ë{¦gý ¢‚„ $ˆÎ$ß§Ó .BE‚(€ ¢"T$ˆˆP‘ BE‚(€ ¢"T$ˆˆ£"A,‹)M˜õ½é°e‰Q @èÈù2š-ï¼C=oôÔ$/íÈwŽÌå»”õõÛùÒ †|Ç´Þ5MMOÒ|6ñ•l¯ÅHÎÄÚ=çGçŽÚ´‹øŽÚa¸[óòü¹ãh>z1ã ¾£öé¹ìЯgvn.¤/tž½xÖ¹ãï3 fp ÿà;È+‡òÃ7ÿƒÇõ‘bgñŸ±í ûù+sépþ I^љόoàÜqÇlVw·*Îçÿ§é—:ý?ÿoëǹƒØqî6rò]mæ½àfŽÏQϼ@åçŸþîNüu4dëÝ»³<úh––^C¿¾·ÄÅÍ-DA&ô„QŒXÙ*IJù A,›O.Ä2!A,OIJù A,›IJù A,ÄÒ¹„~}_z·­•"AèC@ŸN=.èÚ•ä£>JÒ<»FÊ®£w4‰ŠÞÙÉ;-Çw²³ëŶ3a>›oüð´¿w§9ŸÍ¯±÷¯ÙC>Ýq,à;j?;ÏÔmÎ; |zfaçÞ˜sÝ\BSÛÜqŒñ[Ï _# ÿ, Ã·ð³)5Žpî8žÃ;q¦^¬rÞP¾Óž¹f™¨zB’õNŠï™ÓŸüż“¸òñ%TTí gñˆøvý\çÎæª§x§rŸ‹÷e?Æ·ƒXbÿÞ:\ñ"ïô5¼ÞÙAŒñDc×ȹ·ñØ gGºùÝ­éTÖ^¼cfêÅ*·;ÏÚ-{wäöói‡Ïôgˇü¬ã†ïy'kß!­Ì)_ä† üÌ`Á*Þñ¨óŸ¦¾Ø5wòkÔæù&3;ìÖ8§¡/ö‘µOñ3;9ÍøǽzÅ·3oì¹ú±%tXõˆš$÷êTÍœòE®rìWëÍóBÕ–|ñ7ü+ó†DZ­3ë“ÉJ üÙ3ý[1‚ç…:Î|Y¡¦ø–QS1F¹òéåÔ²Þù<¯eæøókº³ò…tØÀÙa2;ræ¼Wi¸·º¾)5]ãüÕíËü½Ús«_ì|ÀŸ“ù™èZÇù÷EùEäzËϲ»Ö5$ˆb’6€œÄòŒ±#芴™C2«ž·;fÂYõ,ßÑl8ПgiÌ0üöÀb:¬ÞŒïPÕéëϳ4ƾyfpó¼“Zãïhæ¯É'W«ùŽc•öþÞÉÏ[ÁvÓ³x§£‚OϺ˜…Zã3ëRÿ³oáóûNøŽ%;È~%gçÍ\‡ŸxeîRæSi_Þ!6߯]Ó~»c¿äwỔ8¥áßèlŽ÷œ8ŸmtëÎ'~býöU7»¦ë’¾t8¯ù,’Y "wóçn¥ò#ø[øZßßšëíÌ3:a8颓øÜí.øÛáîv¸¯àoHèJp×å-½…ÿæOøwmÓ'¯¥®Ï¸ˆ¿-Öù9Ë´œ{ùw8 ùYEy}aÕSm}ï8 AS-€ ŠHQ5ìoXÉ>,àog„ÁÝwãü ] ¥·°óG‚(G,5u$ˆbÜS-A4—ßoàÙt8§É ’…·“¬ò[éüµü™ÆÆwñbPßòö‰ÓðJ6 îvGüíðw;ÜWð7$t%¸ëò–Þ…ÿæ¼\6“?AöQ?Þ1<÷=þ=Èï§ó·ž6lèïïÆJ^~驺¾•DA.U ¢„Så +Y‡üíŒ,¸Ûán¼‚¿!¡+Á]—·ô–(ü‘ Ê‘K- ¢ïTM †^'w£Ã?ýšäçñ£šÃø3çØA4¤’K&ÊVrQß}5à¿›…æ¸kÒÞÓøïÉD£Ü5(»û;ÿÂøwGzŽ.âÐN‡’ìÞ¥=ÉK‘|q‡$»víJ2ì/©¾¾÷:>H±T $ˆ" RD ûV²øÛap·ÃÝxCBW‚».oé-ìü‘ ÊKM ¢÷TM?ÿd"‘¸óª~$?;ËùÁ‡O-g±žA“jØß°’ƒ²ûU€¿;› Ï€{tË· þå3 ¢¸A5z›aåŸÿ#bì²WÑÅ\vÑe¥^Ôƒ®¥òÿ\;ˆdýúõK­¶ÂT]ßÇ:H¹T $ˆ"RL ëVª øÛip·ÃÝxCBW‚».oé-¬ü‘ Ê‘Jm ¢ÿTKßýß›D`赑|éÄM$‹b/rd×±ü™ô}‡:ßbZ#[óG ëÄéÏÕ…× ¸Ûð·ÃÜíp7^ÁßЕà®Ë[z ÿÜ%yÔÅüyÉç^v9)ôT[ßÇ;hHÁT $ˆ"RT ÛVª øÛqp·ÃÝxCBW‚».oé-lü‘ Ê‚þ$ˆ"R%A\·n]ù5—_Lò‡$™‘Î;…éŽÌÈào/ÍÌ*¢óégW#™Ý,‹¤ß/a›8ý¾¾°Úw»#þvøƒ»îÆ+øºÜuyKoaá_”Ï뺌ñ•¨‹?}:Uv5©ôTYßû5hHÉT $ˆbàS\ ËVªøÛyp·ÃÝxCBW‚».oé-,ü‘ Ê‘þwHÿNc×qª$ˆâ²£VûÿûBªûó>?Ìj’uÛh*†e⌦¯ÉTÜíŽ&øÛáîv¸¯àoHèJp×å-½……ÁîÙ»#ß§ƒ}÷ÝWv5©t¬ï½ 'DÁ $€ ¢’$jXÞ°’§çËÏÈ|iî¾`ŒÙøÇŒ.®†à¾¸‡…?ĸ‡2© AËQqQÿu ?»øSõï¨FVS~VÑ¥zÔÅa™8£îp’Tw» þvøƒ»îÆ+øºÜuyKoAñß:;¹Ú¾hÉâõüí¤ikYæ­/ ò‚-üìá÷IùÔÄ)ý@$î‘<´5ð×&ÎþÀÝwãü ] ¥· ùo›¹…\.ybÉŸ.æOnµ«Í=3åg9§ÓÁ‹ÿ} ’üë{oŒQðB QªH£ÒjA¿a…ô²CÓ-ð·3àn‡»ñ þ†„®w]ÞÒ[Ðü‘ Jâ¬c}_:·R$ˆ‚ Hñ¨^6øRj1yÆ›$Øü'Év{í$ùhz-’õ°ƒHÂòôVX®3¬ý;#îv¸¯àoHèJp×å-½iñß™ËÏ ®<Ÿºpß1ümó­öæo5½cÎÁTþùw¿È.&¥Žõ½·aE‚(x!€*DÀBR]ë +$—ºn€¿!w;ÜWð7$t%¸ëò–Þ´ø#AŒ$õ}$ò4$ˆ‚Hñ¨Žxøj1}ÂP’ÏžÀwª†ñÏ%¦=Rìì þÏ zDhu­7¬@/"ƒ¿Áw;ÜWð7$t%¸ëò–Þ´øïü0\?}ݳ$Gçß=Ü<{"éßý^äÒUü¤$ñ Ö÷Þ ¢à…@<ªH= Iu­7¬\nèºþv†Üíp7^ÁßЕà®Ë[zÓâ1’<Ö÷‘<ÊÓ B $Juä°¨æì·X>ÙcCDËÇÌbQM*¯{NƒˆóFÑš8?H&îv#üíðw;ÜWð7$t%¸ëò–Þ‚æŸ÷çÃ¥_A®¯øKÓçŸI‡ {”äŒ9 Ì©¤–Xß{^$ˆ‚H‰RE‚%¨V ú +¤—šn¿¡w;ÜWð7$t%¸ëò–Þ‚æQgëûÒ¹¸•"Ad@H9ê˜_ wÝt ÉzU¹ÿêήãtþ üê?¶ò‰CùÄZýœäáÒ’× 'ÎG8ˆ î8ÔðWGNÁÝwãü ] ¥· øç.Í'W×Nòùá¼>“þ¾nÝ::¬]»ôõ˜©—,ë{o#‰QðB å¨HË” §ƒzÃJË·ÞMð·3àn‡»ñ þ†„®w]ÞÒ[Pü‘ JÒ‘:Ö÷‘<ÊÓ B ¤577—jL:•dº³ch¤inôñï¾BEŸ§B2«ÿ.©ÔÄiìC–NÜKç¢U þZ¤#ý€{$m üµ‰³?p·ÃÝxõ›Qf+ý¿ü­¤S'O3® ÿFëû¿Áˆâ ¢€„@ÊQ‘ –(ANûý†• —šn‚¿¡w;ÜWð7$t%¸ëò–ÞüæQ.]Çú¾t.n¥Hzí×’åÉü{ùþ³h=Éëø™ÆÊMsJíSQn•§Wà;fé,K­ŒÂ¨ l_²ƒêºqÚ*ÆDücÂw#pa\À?.|17÷˜ÑùÒ0ZþÅ…¼ëy¼þiÕ¤ õ«Ní:¾ô/Y`}ïmd‘ ^ $` bÀ€£4íV”æPÍ#ð÷̧êàîÈÍ€ŒàâlîqŒ³y´ü‘ Æ Z4Çú^)GÅGL lA Jê໑§§^E²õfž7>·Œô…_m&ÙñÅ"ÎC‰€ßy‰¯7©×üíŒ9¸Ûán¼‚¿!¡+Á]—·ôVÿÅw. &ykòH6®ÉßÑÐloÞQlSwÇÿšMç¿øaÉÖ­[“ÄKé°¾/‹[)DA$€(©H•@»¸)ï Ë¥Š}"þ>ôhÜ=ó¹:øû 4Jsà%¨€ª•Ç b0à±¾÷Æ ¢à…@”Õf-›’ÇêgV%¹õ›$¯Ø{ Ékßã;gžwvñ"q‰÷¥¼7¬xí£}ÙÀ¿l>A÷ ÈFgü£ãäw-p÷›¨7{åñ/ÜPHÞþÉ1'ñÎaŸ6‘_ÒëõêtþºG_%yÜqÇ‘ÄKé°¾/‹[)DA$€(«H•;îÊ{òӫÔñ þvÆÜíp7^ÁßЕà®Ë[z+?DIÌë{o‘ ^ DY5üs7¯$ϧ՞GòÚN¼s˜9”;Ô~t;:HÏÄ"‰ïµ¼7¬ø¬£uyÀ¿¢¯‡N¬Låû#9`À¯]I©úf}9iÒ¤”ºîX/ ¢ ‡@”Uà ¢.x¯oXº½K~oàogŒÁÝwãü ] ¥7¯ü‘ J‚±éf}‰1:~H'¢¬îÛ°>y|èV’W¶giº‘u7ü v ?¤×7,?|ÂÆnà¿›…æ¸kÒÞÓøïÉD£Ü5(»ûðÊ¿ðC¶uTõÎt0ýó7Iöj¸‘ä¶ÎƒIÞsß$ñR:¬ïKçâVŠQA Ê*DeàŽ;¯oXvz™¼^ÁßÎØ‚»îÆ+øºÜuyKo^ù#A”cÓ±¾÷Æ ¢à…@”Ô>½{’§o¿œLòîîüûbçK»ŠyùÜ¡’Ä,<ƒèÇy}ÃòÃ'lì&þ»Yh»&í=}ÿžL4JÀ]ƒ²»hùçOÝIFx9É+/¹’ä—_|Nò˜cŽ!ÙçäãI¾úÖû$ñR:¬ïKçâVŠQA J*D%Ð.n¢}ÃriŽâ8 €œclî1‚ó©øûÒ£p÷ÌçêÑòG‚è/x¬ï½ñD‚(x!€€Õ 6‡gŸNò±£Hžplw’éé¼C˜‘™IúŸÛø3÷ó/"=ëÀ ’x‰@´oXñyAk7àïF&Ørp–oyÖÁ¿5+?DŸ@ 3Xß å¨H ¢¬FËÿ®‡ï¤ž½¹fɬx§Q¹»I㮼7¬¤¹Ð^øÛp·ÃÝxCBW‚».oéÍQÙBñ¸,jòóç¼3(~L@IDATÛC@´ëËØ¬'_+$ˆbL@ˆ²-$ˆþŒÛ–¿^`Íø»‘ ¶܃å[žuð/P0çÁ=®ÑZuã1Z‚±Õ‹v}›õäk…QŒ)HQV½ò¿ûÑ¡ÔÃ×W¾J2ë ì$Æ2dnoX±ØBïÀß;3?Z€»c·þ±³‹§%¸ÇC/þ¶nü ^çõËÛÃÿGNš5k¿3X(!àu}YÒ0E ŠG ʪWþHý ·7,¬ÃJyÀ¿ˆu}éƒë„4Q HQVcå1¾2oX­5ÏZÇDücÂw#pa\À?.|17÷˜ÑùÒÐðG‚è Ψĺ¾ŒÚA’UD‚($€(«ñò¿ÿñû¨Ç¯.ý/É̃ùVß5ŸŽ¨Ê¿/ôMÛº¤×=a®â¯æ ¢@p·CÀ®WĽþà®Ã}ÕÓËÉQÆ&^wäþQ@úŸk IV­Ä;‡m[ñ³†ßO_¨Ó±õïú2Õ°!A#Ž@”Õxù#AŒmÀ°`ˆ›_­Àß/’Þ쀻7^~׿‰FgÜ£ão-$ˆñô·}¼ëK{~kHÅ!€eÕ/þŒx€z>üÁ;H¾Ü“ïà½?Ÿgè•ú¼ƒXï¤ÚÊWNwX0Øð·ÃÜíp7^ÁßЕà®Ã{Ùm¿‘£ëðÎáM]xýqùûìü,Û®Jk7lá¼BÀ¯õe ¡Q$ˆbP@ˆ²ê$ˆÞ o¼ü® þ~θGÇ)¨ZàÙ²í‚{Ù|ü:‹Ñ/’þØñk}éOoÂo ¢#¢¬úÅ¿Û?økLoo;›® GÓ"’7|Êô2v#F †ê ø«#'‡àn‡»ñ þ†„®w]Þ_YI›¯ØL²xÇN’“Îã~T} ›Ö¬ß@²J•*|¯¾ðk}ék§Bl ¢¢¬úÅ ¢·Ã‚Á/¿kƒ¿ßD£³îÑq ªøE¶l»à^6¿Ï"Aô›hlöüZ_Ææ=ñZ!Ac†@”Õxù÷èÒžz|kÛ_IvkÌŸý7—qód>W×yñd<ƒø,L„Ø‘àîvØõЏ·ÃÜípßôìFr¼ì»U$»’?ÙtÒëÕHõ£oH¶k׎$^ü%ïúÒßÞ„ßD1F DY—?ÄØ †Ø¸ùÕ üý"é͸{ãåwmð÷›htöÀ=:N~×B‚è7Qoöâ]_zó–øµ‘ Š1D Êj¬üo¿õfêéÐ{øwÓÓù÷…øu÷EddrI³S›RaµÞ•wŸLá#,ì>øÛáîv¸¯àoHèJp×å?•Ÿ9¼ä€KÉñ„q¯“\¶€?éT»béwŒx…dïÞ½IâÅ_±®/ýíEâXC‚(Æ $€(«±òG‚ß@aÁ¿x[ƒ¼ckî±qó«øûEÒ›p÷Æ+ÞÚHã%èOûX×—þxO<+HŘ!€eU‹ÿðÑÃéÊ^˜ù,ÉÌŽüûDÊ—wX0Ø ð·ÃÜíp7^ÁßЕà®Ã;wï vüý0r8æÉ±$å:çĞݨü®û&Ù©S'’xñ—€äî¯õ䳆QŒ)HQVµø#AŒX,"yhkà¯Mœý»îÆ+øºÜux#AÔá­­õe´ý {=$ˆb„@ˆ²ªÍ„³“øüŒÑt¥™)zã å@îÀ_QRÁ] ´‹ðwp1¸ ¸¸?‘T46‹ýüÅ/µ×9ÎSXwoƒQðB ʪ6$ˆ<ÀX0(ºpþˆ’ îJ ]Ü€¿ ˜€‹Á=XÀHƒå«uíõe¬ý K;$ˆb$@ˆ²j‹ÿÈ矤+ýóÓ$3;•þLbQ—ÿñÖïToŸÓë‘Lw¾•”|Á‚Áî ¿þàn‡»ñ þ†„®÷`y¾Áß–þæco“£æÍ›G8´µÎ‰èD *àîmБ ^ DYµÅ âéVƒš*8ÜýE 6;qîv¸¯àoHèJp–7Ä`ùÆjÝÖú2ÖþÚn‡QŒHQVmóõÂHºâg¦Ž"™yh$€Ù—ñïefrù~OìY!A5,ìøÛáîv¸¯àoHèJp†wÁWü £ÛzßAÎ8õÌRÙ^ç”Ú©(woƒŒQðB ʪmþH›*8ÜýE 6;qîv¸¯àoHèJp†7Ä`¸úeÕöúÒ¯ëвƒQF ÊjXø?3–ŸE|ê;~6ñ·±³‰ÄÔ ‹Hv“A;ˆÊ’¤î°`³3°àn‡»ñ þ†„®÷èxl*¤ŠyëòIæ¯/ Y°žõôuü;‡y‹wPyŸÓû“õ(‰”R^²Î)¥kI]îÞ† ¢à…@”Õ°ðG‚¨<ð)î 6;îv¸¯àoHèJpŽ7Äè8%J­°¬/…D1R DY ÿšÕrˆÀܹ$3yã0mß'ù í“xQ9D’Òlv†Üíp7^‡¹ÛèR¦íWÅ\RBÈDç®yëŒ-äjÍèå$nÆž÷Û›?IÔ|oÖ§¯a™ÝùR:xì ì 2‘p½†m}.:{ö ¢`‚@”Õ°ñG‚¨)ê 6;îv¸¯‰Î ¢Éä”H“k\ö¾ ;]$ˆb„@ˆ²þõ÷á[ƒ?_¸™Ô«Ê þäG Ò?áì ŽÄ¢rˆ$¥»D_('ê €»Ý‘ûíÅÔÖ78[3>w'÷w~F¬R½ŠeZöšè x{-Ù›êìY¦“DÜ{ŒÍ“×Sƒ¢IëHκh'ÉJYlçóX¾°¡¼ýÑg\àò–uŽK÷’¶ܽ -DÁ $€(«aáQyàSÜlvÜíp7^‘ ºqï7Do¼ÂZ;,ë˰ò‘ýB‚(ˆ €eÕ6ÿÆõö¡+>²!?sX1+ô"þy£´yü­fŸ.cÙì±ý” ã †`¸Fk5Qø{Ýi‰öúmÕ šûμәãüpªÏš·ŠwÈ*ÖwvÈxºò͈‰¼sR­Ku²™YÍÙ2ñÉìÿÌ!K-®lB2§UeŸ,³™ƒyk§þÿÕ¡‚*]k”j¿£ó,¡‘ÏœÊõee³shÊÝê™óa•AÇ}X¯;Þ~å.çuÁ¼! ÈÔ¤sù®F/.ø¬)•ÿ2wq™®l¯sÊì\Ÿwoƒ‹QðB ʪmþH›*8ÜýE QlH½Å+IJy!A,›OPge¾ êúcµ‹1Vráhg{} Ñ÷ ¢`…@”UÛüß}÷]ºâuëøYƒŒ ~ÖÐÈôt¾c¸jÝ*ª7~ÞË$3w¶•yùå ¿HÆfG›¿×DÏ윘g­Œ4W»c%ïdå4,ûY/S?ZY°‘wê·þ¸‘šÔèÉ;üѶ/¯Þœ! ÙnmÞ«wïd•×.ÚóÞãgÕ¶ü¸‰šì{g«h›FUoõcK¨ÞæEüpt›ám£jm¥UwóNÉÚżsrÐãl?£ª?;¢3.áß—­WƒçÕj—0ÿJ­üùVЙØ~6º¸[éÛ/¼@UÚk>Éáßó:`Ãæín&¨Üö:§ÌÎ%ñIp÷6¸H/¢¬Ú汩òˆÃÝ_´lH9î –ýÿ‡‘J$ˆeÇIªœE‚˜Ø#m{}™hô ŠC Êj¢ñéµ—ˆÐ°O"™‘ ;‰Ú ŠrX…Þ6󬕑f§D‚*oa¼Éù°õÏ­ ¦ 6&™³¿óµ¿Ò G}ý—¨Eú{«IV:¾.É*=Jßòh>mÖàߨɡU HþÞ”¿½xïóy5Ujý5ãø“Çmàëøxï°Ö½±e©õ½®}r)5¹®ÿ^ÛmßðNYëáþ|»òê{yq\ÞA<ù5Þékyoò›U#¾gg8;|3.á—¾ïñÎäÎ3˜Î{yEQÿ×Ë~%}Õ¿ùwë.ÌöiÉ;ÑU{ÕŽ¨o÷æÿÃ옻ýŸ˜v‰"µç›DáâÖÏÜåü ‰CVu¦*/Qõæë®$ýűü‰¢y‹–‘¾×^¥Ço¢­s".6p÷6xH/¢¬&$ˆÊ’¤î´lfák¤ÛÂ×,” vY ¢!SºD‚X:SŠÑЕÚóîÕùï ¢ÿLmXL´õ¥ F÷‰ñï4v#€e5Qù¿ü:ß9|äã‰XFW¾c­Œ/fwX0ČΗ†¶ø»%€nåòb·üº•Šj¼±œ$?¡“–¶£wÒsá9Ù.ZýoøÙÃN?ðN\V6ï`ýÜœw«žÀŒÖž¬7ëÞA¼¢%ï Ö«ÎöŸÚÈ; 5.ÙW6ñ¤¯Ï;ŸÿÙùµ;°>ÛïÿUÒÜß3‰kŸæŠ{êñïµölÎÝkúû9àévQõ·Ø|M³3mïä½5-¦öÏwäg{µ`sµ†ñNeƒÁNAögìrû4#½XØ_ô0Ûÿé"®xo§ýã%¶¿¹[=r˜ŸÃ;•Æ~šÓ¿´"ö›QÌõwKÞ)\1~µ_|%;®í|IêEïsýöâ8ͨÍqš^Ìö.›ÍÏ wZÃ;³?6âg"G_Á;ޏ=ÓH¼W[óM¢‘2ÿ;_äxúåËée^Âôé|þàƒ.³^¢®sʼ¨8 îÞ ¢à…@”ÕDåQ9P’Ì­›["èV.±#A”D"u$ˆÌÃ$ŒH#ãÖfk¾±u½±úE‚+¹p¶KÔõ¥-šHy¢¬&:ÿWÞx…ˆ=ôÑ}$3Žpn¡;w:ßÊ8çþ}®ýùY›š‡Å·Óï0aÁ/ÁøÚÛæoBó‘ÓhŸ¹Ú:o]x•ñËHN=Ÿ÷ïèWùŽûúõ©<§3ÿŽ^¹”ÌŽ“³£õçwüíŸ|Ç;ˆïöá K&±ý)õkɬÃyGÑì0™…]šØ±Ú}ž{²èIî÷Å-yïsäñÜ‘?óNÒëxç(¿3ÛOsúeìY²“åìh¥;;Z›~âÐkj³¼éö;e9Ë˾cûû5¤‚ì Î3}Œ1Íìh¥9zš³Ã•¶“û÷Ç îÿ3§‹a»[óY¶{¾TiÙ”¤ù6æâBc¶¬lö›™É\³²X_ó+ï°ŽìÆ;i½[³ÝEÙ Õ¨ }£HfgóÎhvV6éYެà”WÈærs~ôcOQ½/ÏçÜN¼¡—vÃ9TþCá$O?ç<’2Ù~ÅŠIÏÊä~f;vM¿pá9TojÞénè<Öø ¶ãè|›ýøÛYÛ½þ:éηUÿÚ·/é¿^Ä2»=ïÊZS¥z±=ß$ ªÂ78Îßöu¹E‹¾t=Ñ×9¾@°`ܽAG‚(x!€e5Ñù#AT˜$qg{Á† â_ÿJH‘ &É”êËe AôchŒ$úúR$DA$€(«ÉÂÿµ·_%r÷¿w/Éâƒø–þ’[ùŽü±-ìOÎ-óZ]£Üa hæm*èØ©3I“šöFçV{¾ö9ñ*<¯Úd’íêðŽÊÉïðÂó–¬Þ³‘‡’êÕøYÏÎäqž´Š?IQ|p²2äþa¬íYµYÃÚTøÙ™ëIžø:sycâÒsª°ÿ›:w ýXgu㵃HϬÈ;–#g ýúu¼IÊ®—DÝI´=ß~a•_ñ|tëI·SϾdƒš¼3;»æÉ¤?ùÜ#ê{Uþ}ùjÒj Ï3¯-äg2ï{æ *?âèî^MFÔ?û4æÚ­àC*úÏS+×nˆ¨«R³:ïèÝŽw†+·?›L=üäs±šŒhצ)?[±ˆÇõù×'ÒùN‹¨wGÞz­Te*•ÿ‘Ï;Ãã¦óŽrQUž¯sc¾7lâò_:qÿ§µåx‰0bÅÖ|6$ùP—ò×ñ'|ò–ñ¸ömÅqøÀÒåd[ç)£àî *DÁ $€(«ÉÆ ¢r%¨;[ 6$ˆHËú—A‚ˆ±¬øHôsH}½õ?ÙÖ—Þ®Þ{m$ˆ‚HQV“…ÿúuëˆ\Û–üìÕºkr#Hö{—ïHwßá®u$ߙލ¤¨ØJP/1Ô®´ùw˜ËÏ|ur¤Ù94¶~ÇÏ>:wêN<ñ$>uǦ É3f<ïä#IÞÜ•ïÈ¿µíÒÇÿïc’±¾Lš4‰š>tõ™$s*ð³‰ß:ŠôSNïÙ 8€ì´¯´„ä[³x'a[.K*ŒãåÁyâ‹øY¦ÚGÖ^|õ8¬înzý5ÿ&å½ñ¼ãöøsãIïu"ïPî®ÛÑÙ}zSÃw>àqÜîÓ›Z5yGòôÞ=©è™±Ì)_dï^=ÈÎ-·!Ù¥ëQ¥Ú3g•Ÿ~ï,þzñæˆz?ÿÎê˳ù̧§±~J÷Zt0ïÌzõîhÏ7¶y¬}nuaë~†tãœø×ڛ߇;àÙ°…ç—ÿMþ‰êtÐAt=YÖ9À Ð(¸{ƒ‹QðB Êj²ðG‚¨8 îN{Á†‘ bÙÿ8H™IJã$ìg‘ †}„tú—,ëKZi»~fiן–³Dðƒ²;J‰Îá‚ðƒÛ‘|ÿ,Þ‰ÿe÷Lá;—óŽâÄ}°ƒh7ð,{×NåïÊË_û<ßqo²ŒŸÁû¿5üm¤û^ÀÏöõ451Ï ö<’Ÿá:¤}{*gÒ×ÒdLú_|AíúžÊÏÂ=öøpÒûqLöd£C9„Š–,üä†Í¼³*ëŪÅ;Ó¦|B&Fãgcµ'Ûó"íÛ .Én=OUâÒÌg. 5&;99Î·ÐÆeuwã°Í÷ÿìÃ;å'g~HQÌ7vG.,ü·mÛF ;é$+öŒ»”ü÷–ùÆÿ++Ýbá›<žyƒ*´jÙªôŠJ¥a‰{¥Ë p÷6H/¢¬‚?G‚¨x–Ý…eÁ†Ñr ¤˜û°Ì÷H“;ð &÷øF{ua™o¢í¯ízHÅ €eü#OúŒ?úöŸûÒ‰JÎïÍíÅ¿—ØýÙTÞä^ì F’K,-, byÔòÇr/ßøŠªW¯^^“PŸÇ|cwxÂÂâĉâš—¯"Yù˜äüöR3Ú‰2ߘþÆ* ¾æODÜrÿÎpß>}c5åk»°Ä½¯•ÆÀÝÛ !A¼@ˆ² þ‘À‘ FòHV-QlH“5í\WXæ{$ˆvÆ?h¯Hƒ&œXöÃ2ß$ 5$ˆb¤@ˆ² þ‘À¿þb2\Ñÿ‘üî<þöÒÙë¸^··œÄû°ƒI.±´DI·NÉ%°CŽJòì¾g'hÑ[Ì7ˆ²þ¯@WþeUžo«´ÈQ&¡ë.Qæ›X©äÎ˧¦'dŸLò¡;ŽÕT íÂ÷\\ˆ‚»·ÁA‚(x!€eü##AŒä‘¬Z¢,Ø &kÚ¹®°Ì÷HíŒP^‘ E6±í†e¾IŠHÅH!€eüø7_}Aƒ.>ä”nˆ‰9üó‡iG¾Á;ˆMïÇb S%AÌ_Ïwæ÷Ú’¿÷_þ½°Ã]Ò]Ì7%(¬hñxÑyt}UªîEòô³Î!Ù¹sg’í»L2g+4)Iü’(ó‚?¿ÙHEkòH¦¯cY¸Žç¥mk ¨¼~­š$ç.\K2l/Zq¶ë¶Ýp÷6H/¢¬‚?G‚¨x–Ý%Ê‚ ¢å@I2÷Zó=ÄÈÀI”ù&²×iiH%è^hÍ7^úæºHÅè €e5Õù/X°€ˆ×íp’YEüÌ[ZZQåòùjY$÷Ò”d¬/‰º`ˆõzÃÖ.Ñø›¯ý‘7 eË–¼£6®åõ'Õç›òø}^‹ÿ̓¯¥Kùù'In)®LrîÞyªXçѪ§Ö¢ò½ÚV!™¬/‰6ߘqXpý\:<®>‹wïü~ØÔù2åú¼AœvÐÓ<ž;òxGÑ´‹ÔŠû°\oXúîÞF ¢à…@”ÕTçQ9àBâ.ÑlHC8 Þ ­ù bd $Ú|czÑ€Œ…€Ö|KßÂØ ¢¢¬‚?_´hìÜÉwJÓÓÓIÏÈÈ iô‹yÇñ†Ñƒøüñ\Ÿ/‰º`ðp‰¡®šhü7ÿ¼xž’Ó‡äÃ÷…ë[£lÌ7Ñ’ ¦ž6ÿLgþ,¸wžÖmçëzýW–cçñ3ˆ3VQA½#k¬õÏ\!I^m¾‘Ø×=¾˜ŠzWÙAòÉcx¼L½úÃy‡øç_RQ½zõÌ©PHí¸ÅE‡ àîm ^ DYŽQ9ð,»K´DË“$îµç{$ˆ8‰6ßÈpG‚(‰@†€ö|MŸÂ\ ¢¢¬‚lÀ§|7…^õØ$3Nð¶“˜è †Ø¨…§U¢ñßôÃ&‚—ýÆj’Uë4#9è¶»Ižyf_’aÁ|cw„´ùßsçmtÁ;¾àï»âg¼óérðçüIQ?0—ÆgóÎSõül¢]ZþyO´ùÆíÊ7<÷;Úg9¢áû xG±Ë¸½©|ظHvØan&¬”kǽ•‹ ¡Sp÷6(H/¢¬‚lÀ‘ ÆÆ-,­mÁ†1,‘“ØýÐžï‘ r¼$Ú|ãåHÝÈ ¼4ÚóMi}H¤2$ˆb´@ˆ² þñÿö‡oÉÀ\J2ãÄÈg3¤õÜù|çuÉ«kèÔ~·6—U +H´Û²[æ•ONæo Ìsv`ú©•ÿ¸¦ÉA7ñŽÍ¥—_Iºy†–”¼`¾±;¶øWÈâg ¯üÏÿçÃ}ûÔ! 5OªmLÀÞm¾‘8rWðï¼¼ºôŸIöèуä1­sH^pÛh’ýúõ#–[q–ë·Õp÷F ¢à…@”Uð8ÄøøÙjh 6$ˆ¶"%¹üÚšï‘ .¡@j5¨iBÄ„6ë¶5ßX¿ð;€Q€C Ê*øûüûŸ¾'C—>8€dæI‘;‰Û&®£ò?>d¹m·½³I¼èH”qËÌ­¦ö»ËI~ÝÏÙ:tpMáâ´'æo|u:?´i#?³Xu/ç‡ÊtñºzÃ|ãŠFå„-þ— <—®ïiïl|e•ë ‹“D™o$¯bçw€ žãß_ÏŒ¨RXÈ¿ܺYc*è±'Hž~úéõl+¶âÞöuÛöîÞF ¢à…@”Uð÷8D8jYI”D­ˆH ?¶æ{$ˆK(Àm bjÌ A]¥­ù&¨ë Ú.DA$€(«àï/ð§ò×ñ |€wwTào}ë¼p=9šÿû›žÏÏŒaÑ_þÑZK”qõý é’nÇ;ƒs7ðüÑ?±lÖr?:áÀ“¼àÂþ$+Tàø"%D/˜oì†-þy]xVþdEz&ǯ]zÞe¾‘D ßäqzíá×éTëV­e•„ÐmÅ}BÀ °“àî .DÁ $€(«àï/p$ˆþò ÊZ¢,Ø ©i×Ö|q \¢í "ALÍy¯«¶5ßøÕm;Hq¢¬‚0ÀoÌ;:K?IÆÂÏŽù ›ß´<ì C>:«aOw¬àß‹[ñà"º ³ã²÷5IϪP…ä°ó'yÊ)§ û æ»#¤ÍÿûïùÙìK½ˆ.¼Â‰vXòöùFb)œRLE7õºäY§Ÿ%«$”®÷ 'À΂»7¸H/¢¬‚0À‘ ÃÕ/«a_°!Aôk¤açï´ç{$ˆL?ìóÍßcä¯c$ˆ’ôXhÏ7±ô1Lm ŠÑ@ Ê*øû üéá“ÁŸ'ÜKò©c6D88ÊÙAœš›MåmïjqŠDY°m[¸€TiÁßRjèäþοKÖv?Û5áy~FÈœ«Ä|cwd´ùßqïtÁ¯ü9–dµ«Ú`É{¢Ì7¹óò‰ÐñY½I>|×#–ˆùëV;îýí}âZwoc‡QðB Ê*øû  ¢¿<ƒ²–( 6$ˆAE@jÚÕžï‘ rœ%Ê|ƒ15ç… ®Z{¾ ê:´ì"A¤@ˆ² þþ¿íÆëÈÐǯ>EòÔ¼óSÌr”83“ŸÁY‘ã<ƒˆÄ6š‰²`+IÁ«\ãýg>¤ƒF•×ÄêyÌ7Vñ§ióïtLGºà¢³ø™ÚŒŠxQ3Š 7 {þúrŸ¿žw óþ`=o)Krëìýéü|¥ÙÍÀ}iÇ}à” ÀÝÛ@!A¼@ˆ² þþG‚èG-+HµHGúÁ|ÉC[Óæ‘GØÖ|ƒ‘ùkǽöÿuXý»·‘I?öØcÅž‚7ÉV{Ú´itI:tH¶KKˆëÿø†©ØÙ"Ü´i#Z¿n=t~æ+=MüÞ—£.[¹œêUi•_Ð:&Û—ðóÊM›áfþvÜ}«6!†{óMLáê[#-þ[¶l¡>Ï^<‹dFm1úvE‰aÈÖ|³sÿîä¶Eü‰–ŠÙ<•²˜[Ž#wñ²4³jm:qÀ'Ø({©÷Qv'eª»·¡F‚(x!€eüãŽ1>~¶ZÛZ°ù}½Hý&šÜö´æ{$ˆ‘qdk¾A‚Èã ÷‘£ ܽÅ>b*xa ZQVÁ_¸ã®Ëá]è(·.ßÙÍ<•ïôÚéMêyµõ‘/¿InåĽ>àßGüêý¯ývá«=Ì7¾âôlÌ/þ¿¯^M¾¿üŠŸU;ãŒ3HÏÈà‡Ýî{„¿Åù…£©¼ZûÔüöR3@¶æ›bggpÓøUÔ•«6“œx:ϦŸ-ᣡ¿B“¿áOv™ó‰.ýŠûDç Ýp÷F ¢à…@”UðWî¸C‚h‡»ñjkÁfüû%‘ úE25ìø5ß#Aô/¶æ$ˆò,DA$€(«à¯ Üqg¸#A´Ã?, 6¿® ¢_$“ÛŽ™wâMБ z‹“°Ì7HqcÊ[äÆWÛ¯ù&¾^$Nk$ˆb¬@ˆ² þÊÀw’ûœysèÌ?o0;‰¥?“¸ñy¾3¿ÕùýªFƒšÛ¹€÷–›_7ÏÞJ¦zgœJòÑû‡ùeÚW;2î}5cåð›ÿ­ùÛs_9vù^¸»ðÒ¬ :x÷7þDDí–•HÏ>ŒŸ•­uT ®˜"¯a™oòVñﶘ½‘ÿeò’÷ÉÏ&ž;¡ôE¥¿ÿ$êpù÷‰ÊA»ßàî8DÁ $€(«à¯ Üq'¹#AÔ‡°,Øüºj$ˆ~‘Ln;rÞ‰÷j‘ FG0,ó Dì F±þÔò{¾ñ§WᵂQŒ HQVÁ_¸ãÎûo ~£g]{&ÉÌÓùNî¦1¼sØ};ßé}3ß‘¯C ;à^ò`ó cÁF¾ó¿aèB2Ù¾#KîàÛî!ýˆ#ŽðËU\vÜâ>.£h5¿ù¿ýö[ä{ÌýI¾õüŒ›éP.‡eÚYoóïï}¼˜e»‘û›*)!­Ï7Σíy£ù`æþ}J¿ß©ÇÓáÇ“¿$ùËìy$7nlª$´ô;î†bçÁÝl$ˆ‚HQVÁ_¸ãÎ;Dñ°¾`óù2‘ ú 4I͹Í;±^.ÄèÈYŸo Ò@Åûìmt£Z†€ß󱛬 ¢Y¢¬‚¿2pÇ]yÜç/œO5O8¾3ÉKZóÎaÇZ¼£xÁO9TŽD¨Ga}Á汿åU_÷,ï0ßV“wpêVáN­NEU4;Š'žtéÙÙºß.Y^Üs¯ñ øw< %uù™®¼ƒýÊÞ)þ_I£ÓêÐAÍù[2ƒº¾°Úµ=ß¾ÅãñêƒQ›ÖmJE5áµ×¨ü´>}Hfeñ·Ð–Z9 ƒŠûB`¥«àî ;DÁ $€(«à¯ ÜqWw$ˆÁŽ‹í›ßW‡Ño¢Éi¯¼y'Ö«F‚X69Ûó Äž4@ØA,;Ný>Ô|ãw?Ãb ¢ ¢¬‚¿2pÇ]yܯx>ÕlºúM’WwØFròb6pÞ÷ÎâMx‘‰x{µ½`óÖ[÷Ú…ÛvÒÉ…ƒæ’Ü2Èù,™Ó¤Ðù2ÂÛ?ã‚Ñ38nþ;ãªçqüì‘S=pQ^ÜÞwÿ÷Þ}—È^tï÷¹ó¾é;ø}‡·Dµ¥qŒœïEu‚@%P~À!‡E×ànm *¼à@ Í*øk.̹ãŽQÏzèþ…-P³B€(²áÙ¯»}ÇßÙ"@ôLP÷~ƒÑy=å÷ÎV ©À]%âYG€¨ð)@4«à¯¸0§rÿùçŸéÎÝwð_|9|v$*šŸ>Å2[”«Oõ‹&DæSý]5Ý¿°ù;^wí×÷â÷™+ÌÃBU9³ì¨P„š¼Ük,ÉžÝ{ºëBk¹ê÷ZØ#Püo½‡r¼?M7®„Þ§ãûÒz¿ÉÍâÿH;œF(Ê®¯LrÅ‚•ÁŽFËøå÷ZÂFÀÝÚâ!@TxÁ šUð× \˜S¹#@Ô»þ…M×l ê"vÔ}Ç®Y!@ôL2Ðû DÏüå÷ž­â.¸[óˆ /8D³ þš sþr?p#¶X¼Ï®«™y„ªÕ@ÿÂh.¹Ùœ18û+¿÷°h=>ó[”ß[–y6“†PöÎ$,¿,ÐCòªýÞ+#¨ä–€Ýü÷íÛG¶îОd\'·¦#ú†¿ûÍ™e§‰_Ö>“žyŠÏ&Ÿâïyj ï勯P½9 VlÑ¢EDs—“·Ûïe¿ž €»g>ê]ˆ 8D³ þš sþrG€èߺùû ›Öýoц‘؃¿ûŽÊ ¢Jĵîï~ƒÑ5WoKíö{oíFz=p·æ^p ˆfü5æìâ~ðŸùiÿgc»ò_’ÍÌ*t¬úû [¨Ì4kŸ]3úcr:uŒÝ.¿7:‰6n7ÿïÏ ¯¬E²èµ…B˜Nà†îï~“òóYÜÙyGH~|'ïó—•â1—íµÏ _ß"ÝèÝ»7Wˆð«Ý~á8½ž>¸{Š*"@TxÁ šUð× \˜³‹;DßÖÏß_Ø|³ª¿Dý̃٢]ûŽœ#DI³ôw¿A€è™o^wíöû¼ìá>wkž€QáR€hVÁ_3paÎnžoï}ÉØ{=gO~Àõ‹´*Mõ TÌ/FÂß_ØB…Râ&>³Ô«âƒ4äg?gtèvû½ÑÉ„ q»ù·ëÖŽ(ìo´“dþ2zß«*K`×~“¶ŸŸRºý¥Ý4õoîã}þæêLbÔüé×2)Ù?kp·Æ¢Â ¤Ñ¬‚¿fàÂ\ ¸#@ôn=íþ…Í;«úk!@ÔÏ<˜-ZÝw Ú³švï7­­‹U¿·Ö;j»#îîȸ.G€¨p)@4«à¯¸0hîÇOð_–oíÞŠ,žÞϙÙÍÒIïûM4Éýk,XD¦—ôo³ifûN&yýõ×™i ýÞȤBȨ·ü:D³ºáÚÆ$K–(J²c×$óÅÇ“œ²õ’Eš$‰‹k¶ˆâBÒ¦æ¡?~ÞBòù„ÇH®ø|&ɨâUIþ¸î’‘~ñÖï#“ÝówkD *¼à@ Í*øk.Ìš;DÏëjÛ/lžÍÍ]ˆA³Fâí¾ƒÑÞe²m¿A€èÓÂxë÷>uŽFn €»[4.o @T°À šUð× \˜ÓÅý†¦ Èâsuø/Í·Öàß0.ÆgÒâúq1¾*2ˆfR9Ù=op·F¢Â ¤Ñ¬‚¿fàœ.î]¯¯]¿°¹î=øJ ßš˜‘Õ}¢=«d×~ƒÑ·õ°ê÷¾YA+•¸«D<ë>p ˆfü5æÍýÖW‘¥„Z¿“¼¥:?åNÎöòw9ƒópu*НYgˆìú…Mò yâé=4Ô[oiOòù‘¯¬^½:É@_í÷¨÷o•ÿîÝü¾½ÖÍÒÔwõã÷jJ¿óCNýÁ™­w6ð²÷V¤Å[pfQÖTéï~“ù3gl‡¶zŽvëÔÍ#ÊŒ ~Ju¾|"Åë±vøß´ê÷áODÏ ÁÝgˆ /8D³ þš sæŽÑóºúû ›çÞƒ÷.Äà]#³ºï @´gUüÝo ú·VýÞ?kh- €»$áD€¨p‚)@4«à¯¸0(î·Þ|YH>¸™dñü—}ù6Äœþôçñº_$¡ÉåùÌ)pñ÷¶PCtfÅr‹ß’¼¦ûŸµü4ÊÆM¯¥ò!ÃG“lÒ¤ I»/ò{»Ç®ýùʿ׽Éiü^½ûð>2d¥ÈþÂÄ*u,GŠß\Šdtß绑{õu¿IßÉÿùÑÊцà½1êÍÈ…èÇÌ}õ{?L¢é_ÀÝš @TxÁ šUð× \˜ wˆÞ­§¯¿°y×{ðÕB€|kbbD¾î;ý[-_÷ˆþq—­}õ{ÙÒ7ànD…H¢YÍÀ…¹@qß±cYعs'ɨ(þ ¾* ä3‡F>nÝoÓ¦Öñ†›1«~nó75p·F¢Â ¤Ñ¬‚¿fàÂ\°sG€hÆ/t[E€¨›¸Y{V÷ˆö¬D{8úÚ‹U¿÷ÕÚ9wgyiBp ˆfü5æB…{Zÿe»lI~êåöþœ9\¾‡'òìQÎ –í‡ ¢OòÏjÒ6>sÚ.ænêèõQ¯û×a­CÅïó˜FÈÞ¶ÊÿÛo¿¥¹úh É‚7ç Ù¹›¸»1u2¿—tpŸÇhxãF %yuù ’×<ø&ɾ}ùiäàb™€U¿·l \w—XÜ"@TÐÀ šUð× \˜ îÍø‡.«u‘;V÷ˆö¬D{8úÚ‹U¿÷ÕÚ9wgyiBp ˆfü5æB…{•ò%iÄ«»%Y™†ŽÙ¿óDž>ÌOÅ,ûžb*–6$EêTÎdl\¹‰Æy„ŠßdòAЩUþ îG£^¿Œd¡šƒ`¡75@Ìú‚Ÿ=gÌÇ4™:µëüs+Ÿñ¾ªQCÒŸ{þy!‡“ÄÅ7VýÞ7+h¥w•ˆg¢Â¤Ñ¬‚¿fàÂ\¨pG€hÆ?t[E€¨›¸{V÷ˆö¬D{8úÚ‹U¿÷ÕÚ9wgyiBp ˆfü5æ‚•{V¿—«B™4ÒÑ-.,ůÑsäˆ×uýx€'2?‹ß£W~`u.‘«ú [ˆ ;`ÃLY‘N}ëüÉÛÛÞ[Áê÷™lvªòïÓã^e¡Âü=îØ¥;éÍ›7'ùŸ® Yðá’¸øF@î7ÕšU¡†´|–dwÁÛ]¯‰‰‰t«hQñ¯î*¢Ü#Õï=VÆMÛ€»5”^p ˆfü5æ‚•;D3þ`Ú*DÓ+ Ç¾ºï @ÔâÎ~ï®Êí%îÖx"@TxÁ šUð× \˜ VîÖ¯§Žxn0ÉØØX’QQ|f&:šß‡˜)2ÞE÷ Ⳉ¤„ÀEþÂéïA”K•v„3ˆõ÷\IEs§ñÙ(yß.¬~o×ü‚½•ÿðg‡ÐÏOËL‹âØt˜ý!¾"?µ´P{>‹\´gƒ}žÁ6¾m#ø±ÏÞû íÍÑoÛÃz<ªß‡õdƒhrànm1 *¼à@ Í*øk.Ì+wˆfüÁ´Uˆ¦W@}ußA€¨‡;D=œÝYQýÞ]=”ÛKÜ­ñD€¨ð‚)@4«à¯¸0.ÜsrrhFõ›×#ß3Žf¨zoD׬_9J7ZßÜ‘äø7ÿKÒ®§š†‹ß»¦ü¥îøç‹ãïmò3ü4Û$N :æÿÉsz;ŸA\»¿ï®+N7Jß_)ø'mp„YI|¦ûÀÈc4Š3'øiЇ‘¦Ýù}DÂÐ8ip·¢Â ¤Ñ¬‚¿fàÂ\¸pG€hÆeb ÈG¿îöˆYˆájµWw~oµÔ·FÜ­ñB€¨ð‚)@4«à¯¸0®Üë5«K3ü穇|tÑ dV‘At†“²7• ²§ì%Ùá2>kúúOœ1z´o*òü’*T iõ®~o•ƒ©úîø=’†tvÙ+$_¹ý!`Ž„•ìÓÖócŒ+w.OõŠß\ÊÔT‚Ênv*O2NeиÒO²,°™Ïl–Î-Cå+W® ªqGÊ`Üù}¤ÌßÔ<ÁÝyˆ /8D³ þš sáÊ¢ò×*D †F{wûDÿÖ¢üÝÚßÚn¤÷îÖ<¢Â ¤Ñ¬‚¿fàÂ\¸s¯ßŒÏ$3¡aX@IDATæˆSˆQÑΩÄÜ4þ‹ûîv‘/Ô"¯ç}kÈ :ûý‰·÷QÁë—ð{/;q"øŸJoþÊë2ò>«öÔSOѽç^ýOo>„»ß{ÃÀd¼ø*ÈO-}ðJNNZÇ£­|wYúP²-gÂLÎÁ¤íì |Fsoe¤ð>&_[±gZ‹Ds¦µRíki¸éQI.]ºÔäð#Öv^~±`.p·¶‚^p ˆfü5æ"…{ƒõiÆùzóÄsÄY]C¶QAl g«ŽºŒô¸bzž‚Š "¯GÆéLúp|gDŽ?ƑՇøþŒß Ї6rFéöÖ7“þÈCIÞ|3ë\;ïk¤ø}Þ$ÌÔÈ‹ßþ½h`_¬ûœd•G«šhZÍÍáÌà‘WöÐÛ—âǽN½UdŸ7ðÀýX“JJV¬ADH³ÈËï5'bÌ»µ¥F€¨ð‚)@4«à¯¸0)Ü šñ/o­"@ô–TxÔËkßA€èy zæ¬wóòû`w¨ Ü­­ D…H¢YÍÀ…¹Hã.ÿåtïF~±ZòþK|É7øÌN•‘"ƒXDybúA2WÿD"ÉM§9£›•Ï6mr •2çS’ òY*R|¸Dšßû€( MòâÿŸë¯ û±½8#%2üTwž¸ð8>~íi’·3üXÇ¥“㩼QÓf$‘A$ Ú/yù½öEˆAp·¶Ð^p ˆfü5æ";D3~–—Uˆy ¯ûyí;­­7Dk¼LÕÎËïM+Üí‚»µF€¨ð‚)@4«à¯¸0)ÜÏŸ;G3®V™ß›vn0ŸÙ‘ÔK‰ bed%-Rþ«Üñw9ƒSŠŸ^Y´EI²Ÿ¿,ëiS9“ôÇÏ[lW¤ø½-°Љ;þk×®%k½_ëE2[Îì`aÙåÙqI4¯ý ùsoþ‰[fó÷HfW¬X–óöI¹óû`w¨Ü­­ D…H¢YÍÀ…¹HáŽÑŒåeb^„Âó¾»}¢ëÑ?~níÎïm7Òûwk€QáR€hVÁ_3pa.ܹ'%ò™¶Jø½i‰ .A—z“3•_¼”îÇ•ˆsYÏîB<ÅÔ;¢iËùé¥oõü/5hÙ²¥w ÝÔ w¿w3í )vÇÿÅW^¤1Î>õ>É¢ ͘ƒy Y_ðèf¿ü1}¸ü²ËI6kÄ/=~ôéjòÓœW¯^Í pÕJÀßkDwk‹ŽQáR€hVÁ_3pa.ܹ#@4ãWv[E€h7Q³ý¹Ûw ú¶.}㦻•;¿×=ŽH³îÖV¢Â ¤Ñ¬‚¿fàÂ\¸rÏÈàLa³& i¦»vóûÂrsùL_ù/ŽEã9ƒXú~OÞƒhÆÝYMÙÏc¼öÔõTeú„îªzU®~ïÕ䃠’;þMZ5¦ÑewæõŽÎ3ˆž–+óg>››pÓÓT­{×û]VOxòq*ÿuýF’«V­rY…%àÎïk½ƒ»5@€¨ð‚)@4«à¯¸0®Ü šñ§@YE€(²fúu·ï @´¶­ñ2]Ûß›W¸Ûwk+ŒQáR€hVÁ_3pa.ܹ§¦r&BŒQQü~=UÆÅñ™Ã·7'2Y¸]LÀf0pÑšßgÎâú+>æ HÉ’ü´Sk½8áî÷Vy讯ò߸‘3[=Gs,®î…–½´]™4à–Ù­I¾õò[^M@åîU#T²øÛ†ÒRGàn —¢Â ¤Ñ¬‚¿fàÂ\¸sG€hƯeb ÈêíWÝw Zãѯ`©­ú}°Œ+ÜÇîÖV¢Â ¤Ñ¬‚¿f฻æÞô–&t#³c ɘ‚É$"ƒèš¿»Ò ?sf÷ù^¤*Ý»uwWÕc9üÞ#Ûo;z”ú\¾|9Éï½ç¤ÿ éÓN!Y´!ž^J ”KÖ…læóu)’ß/üA©áY…ß{æè»àh®ûw×\Ü•"@TÈÀ šUð× \˜w×Ü ºæbº¢éðÍ>D߸©­ ªDBKÇÏ[3ëîÖ¸#@TxÁ šUð× \˜wÏܯi}5UH¿+‰dL|ŒË™8³•rŒŸžZ¬i1—õÔBdU"žõŒÓ|öªÒ/Õ©â×/ñÜÀÍ]ø½0*ž7ïêùÉGz‘I¶;x‚äÛ·ð™µSüºJǸ_ùìÚ««øL׈ç†P½á£Æ: ~ï„C»R¼(¿çpq'>ƒ÷éNÎNü…‡Réî²ô¡äme´Í„Á¤µçÉì©“ü­7g«Š‡!¿ý+jgõ‡èÄwø,"—z…ß{Ï*5Á?TóîÜófôÿ5 þ?¿>à šUð× \˜wkÜ Zãewmˆv5ÓDgîy„«†Ÿ·fVÜ­qG€¨ð‚)@4«à¯¸0îÞqÿuõOTqàýíHþÒýœSC™AŸËO[,×­¢Ó}w žbꎌëòí·ÒÝ}9ÃR:žë½¿IÈm|hk_"ŸÙzäÑÇèÆÐç†sq…ß;áЮ4jÔˆlÚû;ÉB­ø{Sªgµ(H fžã3™ûžÙA#šzûq|4Μvúz*ÿò›U>~ï6Û¿m(-uî–pá ¢Š ¤Ñ«ƒ¿^ÞÒ¸Kž%DÏ|tÝE€¨‹t`í @tÍ¢k.áRŠŸ·fVÜ­qGQáR€hVÁ_3paÜ=sÿnùRªÐ³ ?u±Smþ ŽƒÏLåò8Ço‡3¨ÞžZüøÁò÷#ƒè™¬µ»g8K ª¬â§Ç–,Äí¿ØÌ™Ä+êפ‚·ÞžNò†Ä ö¸Ú¿®ðû!ÑZP·n²—}3¿ï¯H± ZG|ƲÄÓ[g½4›7ê¹§HÆâÿ`ØœTšôÍÛ÷‘´zß[%fo}ð·—§·½»·¤¸D…H¢YÍÀ…9p÷Ì¢g>ºî"@ÔEZˆ®9#@tÍ%\JñóÖÌJ‚»5î^p ˆfü5æÀÝ3÷3gø=e3gΤŠQQœ9ŒŽŽv©úí<*?ßêɘb\œAtÅEѱ)¨4ûgj ÞÄ™”’ÍøÌaú{œÊýe1?î1>^NtÑ×ßEð{7`4—.ÇOû­ø4?¥4_É8M–ƒÓLæj΄¾ßãyÿ½=œúú+/‘þé§¼¿¬^·Ùé¾· üÞ[R©þášW¯àž!çûyà…‡n_`ÝÄÙ¸{æŽÑ3]w ê"­ÇDgÎy„«†Ÿ·fVÜ­qG€¨ð‚)@4«à¯¸0îáÞ²ÃÍÔñ™Ž‘Œ)ÎO#T­!ƒ¨q­çdr†0:Ž3¸j­äïù½‡£Ûñû;ÜÝA­â¤ÃïphSöïßO¶ê7®Oòòתk³Œ†ÒvqFü¦Ì[ixo¿ò¶Ça=Êgp+Tðî=«jgð{•ˆ^üõò–ÖÀ]’ðN"@T8Á šUð× \˜÷ÀpG€h/Wˆöò4ÕDgòy„»†Ÿ·fVÜ­qG€¨ð‚)@4«à¯¸0îåÞªcK2pêzþˬ’IDÑþéÇ9séÖºÔág3?÷Ø1üÞ#ž€Ý|ïƒ÷¨ïÏ>J²Îh~úlÀ iÇY²idEóûXô£–‘Âïµ`vküÝ¢ è p·†¢Â ¤Ñ¬‚¿fถ;ÄÀò•½#@”$‚["@äõA€Ü~¨Ñáçm ÈzîÜ=óQï"@TˆÀ šUð× \˜w=Üoít :Ñì0ÉØ’|&Qf«\[„Êw|Àg¯˜ZOÏÀÂÌJ&?äÑñÕ;‹hfU«Vu9Cø½K,/l_{²±ríw$/î’€Û F™³ù,íÒ—ÑðÊ–-«e˜ð{-˜Ý·hzÜ­áE€¨ð‚)@4«à¯¸0îz¸#@ÔâξZA€Èä úêA¡Ý?oͬ¸[ãŽQáR€hVÁ_3paÜõroÓ¥5“ôÉ:–fðS®Ú©wÐ!d-i]2v`½'Iè7Àåèá÷.±ø]xäÈê£bÅŠN}ɧo¶éÍOëÜwpÝ¿4¡ºS½PW²’øû›!Þ×™~*“¦”)ô¸Ã±¤OÉg1[ÞÔJë”á÷ZqÿËøÿ ‰–p·†¢Â ¤Ñ¬‚¿fà¸ëåŽ1°¼ –o^½#@D€˜—Dò}ü¼5³úàn{T«V­øÅRÖÚ…mí 6ÐÜ5j¶s 承™Õw3Ü]»š §%sÆëzqTnÙOѺ…ù2ˆ–(7[¼/ñ$gjš\ÙÄe{ø½K,>¦§§SÛu¿þB26–ÏØ–-Çïë‹úáäCt?ã?u6¾zAŸmSÔ])4œÜ¬’bù‹[€ÝÐË~y4‰Ë›µ¸ŽêåË—Oë4à÷ZqÿËøÿ ‰–p·†¢Â ¤Ñ¬‚¿fปáŽ10Ü †k^½"@D€˜—à¾ÃŸ·f¼Ü­qÇ¿˜*¼‚V€hVÁ_3paÜõrŸ1yüéÃ$;Créý<Žè‘,q‘9øzÍø’ÿÕ¯_K>ƒØ¿§®à÷N8lSºwºƒúª{v!ÉÔlN¡Íú3h‰Ñl*%—3i5rê¼`åt#*†Ë¹Vè\3ŽqFtÛ°4è¯ïåù¶¬á<‡k>*NoÍZBòꫯv®` ~`Àytþy Ðmp·¢Â ¤Ñ¬‚¿fà¸ëåŽQoˆz8«V "@T}úEøy{‘…ÎOàn6D…H¢YÍÀ…9p×Ãýõ1œüñ“ñdpäµçI>üÛŸÜŽe£),Nç÷ FE‡fF…gaîzàÙídœOÀ91Ū>dø(’Ó§Ï ¹téR’¸ØC`ïÞ½ÔQËk® ¹ç‘ No;ÅjÛÙ,ÏdrJ±t§òTPü†’NõCU96f7 ý é$_ºÏ&v]X”ô»¦’ìÒ¥ I]ì÷ºH»¶þ®¹ºÜ­F€¨ð‚)@4«à¯¸0îz¸#@ÔÃYZA€(Iè•™7D½~*ÖðóÖÌJ»5î^p ˆfü5æÀ=°Ü÷ïßO{˜äŸn#Å™Á½‡Ž“^³ gP²¢ø,SìŨ<¶? ’\ò$pa?6~öª»¡'ŸEüí7}umúðùi$Ç}…äÀ'ø½‰\ W ô¾ïê¢Eòg$»Õç3y +9cøÎjΨUë*2‡7•¢zÑqá‘1Ïú’çqm±4¯ƒë“lP‚3ªÅÚð<ýÌ3T®ë‚ý^i×vÀß5—@—‚»5Â^p ˆfü5æÀ=°Ü –¯Ú;D•ˆ"D3žÜVñóÖÌú€»5î^p ˆfü5æÀÝ wiÕÿ»zÜIUöÖßA2®œx¡šlé’Àññ{¨|R=~í@»Ë¸ÚŸâìÛûä§‚7~Ê$Ù¦Õ $|ýWÄÕÇŽqÊöªºÕ¨¿IÌ»J‡²¤ŸÞ™ÞKªÛb/X:É\ÙÒ'¯LCêÙ­ÉE_- Ù¥s'’ݺv&9õ½Y$u]Üí7ºìGºð7ãàn;D…H¢YÍÀ…9p7Ã]ZuÇ¢$dM"@´Æ+Pµ "@ ”o…r¿îöûPžS(ŒÜ­­D…H¢YÍÀ…9p7Ã]ZÍ‹Ç:PÕ]µÿ$W™DÉîÿeÚQ~ZäùñüôÈ¡MøŒÛÄM|æíl*g ~Žš-^ò-ÉU«Vý7ølÄÄDê©q««H}”ßs(»ß9n} — bÚn>;|cÆ-4¯ÿ¾ò_9U')çÇRùU›8Ý´’×~hû‘Þ?ø›ñp·Æ¢Â ¤Ñ¬‚¿fปá.­æÅ¢$åY"@ôÌG÷]ˆuû\(ØËk¿…9„âÁÝÚª!@TxÁ šUð× \˜w3Ü¥UoùwìÝ‘šì¾Œ3‰±\?Ý4ù‹£T/µgÌJßï•“¼ÜÉóøÌÛ±oOS• -Š“Œ¿žçŸM<éß¼Ïï=ìÞ½;éx"a°ý²pÑBê3aÞ“$ ÝÄþ( …K1;™Ÿ’[hQ šÚ‹~’S Jéí~”ƒƒA¿™EwkÜ *¼à@ Í*øk.Ì»îÒª·ü Jb®%D×\L•"@4EÞ³]o÷ϽயÀßWrþµwkü *¼à@ Í*øk.Ì»îÒªUþ]â§n¯¹…ºˆ­Àgì?:DzéÝçIlRŽd¹ÛJ“ ÷‹ÌäÄrY½°&• ¹æY’sfÍ!‰ b`<£÷À¨ã5e~ _­ “¡pÉ fÍá×YÈÌt¹rü½sšl)V÷› zX üÍ,#¸[ãŽQáR€hVÁ_3paÜÍp—V­òG€(É9KˆÎÔEÑíÖœ3dƒ—󙨹9ƒX¾mdœA”<ó’™ 8ôU]½zu^Mpß™‘}üÃÔ*¾e>—­ƒ5ƒxtêAoÔùL’i§Xž?Í߯‚qC¶{çîHGbëüû'#ÅŒèh>K'õØXÎܼ>íu2±±ì¯$ãªzÎèÈñDŠÜöô^šêäq“IvïÞ=R¦î×ð7³àn;D…H¢YÍÀ…9p7Ã]Z 4ˆ’´³D€èÌꆢUŸA}dMù@ ΚšW ì"@TÈ šUð× \˜w3Ü¥U]üû<Ñ›L®+¹†dœ›Lb®H¥íM¥zù« 3B¤„ð%'3C›áTWö0žÌÂ,_ÝÀ™®Ì‚å©`øh>Ëy[Û¶!Yý1U¨òhUוÒ`Ë fÎæ~óþRúP¾<ŸAU†òª©ý&äÁÙ4ð· ¤ÅnÀÝ0ˆ /8D³ þš sàn†»´jŠ?DˆÒý‘ý¡§¿­©ýFÿLƒÓ"ø›Yp·Æ¢Â ¤Ñ¬‚¿fปá.­šæ_·?]òå«OÒšWâÀ©Æ$>›Xû¿á‘A<½ê ÍïÔ'GIfäpæ°BGžáÓ%¨|ÁÛ_’¬Y³&I\<hxèBL>ÃË\=·r8‚%ƒ˜õô•îãèC›[Úä5ô¾oz¿ ix6 üm€èCàn D…H¢YÍÀ…9p7Ã]Z5Í"D鋾Hˆ¾P3ׯô~cnæÁaüͬ¸[ãŽQáR€hVÁ_3paÜÍp—VMñoߪ ¡o…õ$ÛÕä§Pžä×Ù9Â-ƒ˜“–CóÌ8Ç/ê;ø!g/M¨Nå‰.ì[kɧ>E×Ö­[G7zëE2_[ï2‡²·@e3Ïe‘‰ŒÓìÏé'y½3O±u‚ÏØfL§z÷wHrìÈWåÐÂZšÚoª…É¿X6Vwk0 *¼à@ Í*øk.Ì»îÒª)þ JôE"@ô…šù6¦öó3Ž€¿™uwkÜ *¼à@ Í*øk.Ì»îÒªnþMÿS‡L7.Àï;lP†3.¹|ôБĉÇ‹?rF¨Þäzr¨a%Õ –Ì0Æ~OóüuéÚ°š¯Ý“9v$u9ëÄ{$‹^QØ’ •¿¥Æ*ŸÿžÏšžù”_gr]u®\»gkòkk±Wn÷U1ò%½†Ï-ÝûMø³g&àoG«½€»5b^p ˆfü5æÀÝ wiU7ˆL^ P JôN"@ôŽS°ÕÒ½ßÛüMüͬ¸[ãŽQáR€hVÁ_3paÜÍp—Vuñ?w4áu’$Í™”(‡Q,Ÿå ÌÞË÷Q½ØZüTSRÂ࢈rJK8Ó4õñéTtÍ5×È[ÿG é-MH˺‡­F°æîøÿŸ ¿>ž_xœÚYÏÅ â)«²Ó6ñ§åùï¦ïÏýLÞ k©k¿ kˆ~Lüý€çGSp·¢Â ¤Ñ¬‚¿fปá.­êâQgé.@A€èÌɆÑ™à.×µß7s£3ìÁÝwˆ /8D³ þš sàn†»´ìü {‚†º"÷[’±—ÆÈ¡‡´t ^ØÁ±ÛrÛÓüÞxùÍž§Ýƒß´‰So=^ººŽkÏg«vÜñ·ÚO^õ“·%S•c÷’\ó ·H㣷Žçþh@ßÿº™o„ù5Ø÷›0Çï3+ îÖ¸#@TxÁ šUð× \˜w3Ü¥Õ`ç¢ôÕ¿%Äÿ§zŸƒ}¿ =¢ÖF þÖxÙUÜ­‘D€¨ð‚)@4«à¯¸0îf¸K«¡ÂÿÉaƒhÈßåˆLâeÖΜÉù‹Ì+ƒ•6Ï"®_º†œ?þ`z@Çqè ŸM]¾|9ÙéxÏ=$ æ§”¾úÆXÒ§íŸL²Ø•Öž^JþºäÅ_ÖóWf®áu|¬ûï”qü¾ÃÛË ®§o)DòÀÑÓþš ‰ö¡²ß„L þ>@³¡ ¸[ƒˆQáR€hVÁ_3paÜÍp—VC…?Dˆû,DùÍ M*ûMhÒÍ{ÔàŸ7£@ÔwkT *¼à@ Í*øk.Ì»îÒj¨ñüâ`ú²Œ¯IÆ^î:“¸ïÙt¿ØÝåH–hRŒd°\òÊ`%¯L§¡Žl;šd§N‚eèÇüO?¥þõëAòl2ÖkÖôJÒ÷œåL[þî|µ@¹|>'/þ>uúÒ÷ð =[¤ÜD¥“ÆqÆSVy¼o/úøÑ'üôÒ§ù)¿ÑÑ®ýY¶ ujûM¨óVÇþ*=:¸[ãŒQáR€hVÁ_3paÜÍp—VC?D¹rá) "@ OÏŽY…Ú~Ôü¸[cˆQáR€hVÁ_3paÜÍp—VC•ˆšÂÒt™Iä§Yîô'•_[!—äöI–lVœd°\òÊ`ý‘3J©óOÒÛßÙ‘dÂs#HÖªU+X¦q4¹â2êwÒ5;IžIe3máuþœÄŽÂù_oó5æõ-ݺ´WãÉ‹¿W¸¨”šM¥¾(Jrõ’5.j],Ú¸q#) 6¼XÆŸBu¿ —%3+ îÖ¸#@TxÁ šUð× \˜w3Ü¥ÕPåâß>ŒQ~“CC†ê~tó%øçÍ(5ÀÝUˆ /8D³ þš sàn†»´êü‡ŽBS™úÆx’ë{rgè*þW½uM9ƒX*Ä2ˆûŸÙNóYyw&ÉŸñ|Æ­å§^6¸² •?ýÂ’M›6%.—%_sfø­!ÝhJ_w䌪œ_"ÑttÿŠ3ŠËö±¬;±®¬âQ*ƒ˜9—Í.™ñ-}¨P¡‚ÇqDÚÍPßoB}½ÀßÌ ‚»5î^p ˆfü5æÀÝ wi5Ôù#@D€ø·/#@”ßèà–¡¾ß7ݼGþy3 D p·F¢Â ¤Ñ¬‚¿fปá.­†:ÿZUËÑT–Ü}‚d­<³N_Š bc‘AlÎgÔä¼MKw¬ÄMI4´ ‹‘\Õ•3¢r¼‡ù¶cèr~Šç—;ãèVb²8¤'+†‰l~U=šÉ˜+¶’œ·“3…ï®ç VèÀë_òVïÎJ,îøËûVeÖ n1¦¿çð¶[o³ÚEDÔõý&Ô üͬ ¸[ãŽQáR€hVÁ_3paÜÍp—VC?Dˆû2DùnêûMpÓÍ{tàŸ7£@ÔwkT *¼à@ Í*øk.Ì»îÒj¨ò¿´ZyšÂ‚öœ9¼¤8?µ”¯Çý_qq½<ƒØ"42ˆGFï¢yÍmžFrÿy^©‰ë9cx(µô| ÉêG2\ŸjºléRš_·Î·“,|kI’%Û–!éëÅ× bÆ>šqŠeÖ>Îðöhø ex ¾)"Ú…ê~.‹þfVÜ­qG€¨ð‚)@4«à¯¸0îf¸K«¡Ê"DéþHˆ¾Pó¿M¨î7þÏ<8z3ëîÖ¸#@TxÁ šUð× \˜w3Ü¥ÕPãß÷¡Þ4ô÷f~@’O¤9ÑÑü)*ŠeႱt¿d>ƒXøú‚rÊA!Õ%y7Ÿ!<òÆ^_â…’U®å÷éÅÅqælþ[ŸSy¤¼7oêô)4ß×6Œ%Y´)?Å•?.*µ«c“PQÊ®’çNg‘,UŒ3Ó•xY§/°Ÿ­Zû'Ý¿ä’KHââš@¨í7®gº¥àofíÀÝwˆ /8D³ þš sàn†»´jü "@”¾ëD€è=ßÛ†Ú~ãûLƒ³%ø›Yp·Æ¢Â ¤Ñ¬‚¿fปá.­†;ÿƧ©.8õÉØú2ç( ˜‘j€’“ɧ'ÏýʇK*O]MÚ’LíTä^’£†63pÍVÛtnM\»Ÿd¾’üP‡¡òWûKÞ˜Èv§ñÓdëÃÝKÄSreýÖŸ£O¾þ1ÉÖ­y¼ò>¤3pßoœg|ø›Yp·Æ¢Â ¤Ñ¬‚¿fปá.­†;ˆr¥CS"@ Íus7êpßoÜÍ;XÊÁßÌJ€»5î^p ˆfü5æÀÝ wi5Rø|mMùóãóHÆÎ$æ•Á’ë£Ê”I|në>ó¦ÞýÀ>ؾ;šR\'ù|Z{fè-ÿÌóÌûÀÈdøí9“ؽ>§ß7ñT~e¯ñ$ûöíkÏô—HÙo‚uùÀßÌÊ€»5î^p ˆfü5æÀÝ wi5Rø#@”+bh¬“ÕQFÊ~c•‹®úோ´³pwæ‘—†Q!R€hVÁ_3paÜÍp—V#ÿK¯¤©Ï?ò ÉØ+\ŸIÌ:Ç™£3KNR½²]+Hd¶Ho3Xª±ÔåTôÆýo“¼õ–[Õ*a¡Ïüp&ÍcÌO¼^E®µç饎Uþkø}‡Å7ðû(¯,ÀÎ q|VñüUƒy¼cÇI.DÚ~ãÑ"ð7ƒÜ­qG€¨ð‚)@4«à¯¸0îf¸K«‘Æ¢\ùà–ƒ{}|]¤í7¾r T;ðYÏý‚»g>ê]ˆ 8D³ þš sàn†»´©üGE>=ÌOŸŒ¹‚‰ä¤ò³­ó¿¢eø©™UG_&‘Ù"­f°¤Ñ”iô±é±f$gN|_Þ +Ù¾{{šÏ¾†;Hæ/“ÏÖùyË?}o&Ùm~á’“_ã÷2NxýÒ'¼úɦ×ÝLrö§_‘ÄÅ5HÝo\ÓÐ_ þú™ÿmÜ­qG€¨ð‚)@4«à¯¸0îf¸K«‘Ê¢ô€à”ƒs]üU¤î7þr³«=øÛEÒZ?ànD…H¢YÍÀ…9p7Ã]ZtþcÞ|™P|¼û#’Û¦ræð×Þü”ÊV_É âå™-ÒÛ –;c™<\ÇòÙ+¨JéÒ¥ÝU ÊòƒÒ¸ªT©â4¾cÇŽ‘Þº×-$ãøµNuìPòâŸ-2Éù?/LæÖ|ó‹K³ß-_FåÛ¶þN²ÿÀA.ë¡ Dú~cÚÀßÌ €»5î^p ˆfü5æÀÝ wi5Òù#@”ž W"@ÔË;X¬Eú~czÀßÌ €»5î^p ˆfü5æÀÝ wi5Òù§¦¤ŠÅ‹L{–Ï þ~‚ µ\ 2ˆ/WñÂêTà³× 'Ùã¾<à ¿Ê aó& i¤ ðÙÂŽ]î#=¾hq’3vN%Y¤¿g/ye3ç²±¯§C*V¬h£õÈí*Ò÷Ó+þfVÜ­qG€¨ð‚)@4«à¯¸0îf¸K«‘΢ô=¢ÎÁj%Ò÷ÓëþfVÜ­qG€¨ð‚)@4«à¯¸0îf¸K«‘Ê?=ŸZ¬(Ÿ1K{–ßs'¹{1õ ÿü„#4ä~ýŸ$9äÙa$óå³÷©Ÿ’‹]²Ïý©«Gç“ÌÉ&9‹ò9NfóТWsF1¾±Õ P½¨×ﯤ›^\Üe³V°Ý—ï}•ziÛº­½¡Š·"u¿ñ–O ë  »îÜ]sqWŠQ!R€hVÁ_3paÜÍp—V#•?Déf$D3ÜM[ÔýÆ4wiü% ½Ü­ñF€¨ð‚)@4«à¯¸0îf¸K«‘Æ?;›3…eK#m.åÌ•äÁù#‡ãtR:ýžÌ™ªŠ£/•Ul‘î2XÞv~rêªúlÉD’/pÆpÜO<¿~}zQùçG¬T©É`¹9™Ï& ˜ëá|TŽo÷Yþôþfæÿöz–%î*G7J¶,%«ú$Uþé¿óû;•ãǦOxÁ§~ÑÈ3HÛo<ÓÐüõ3ÿÛ"¸[ãŽQáR€hVÁ_3paÜÍp—V#?D¹òf%D³üMY´ýÆgwvÁß™À–ƒ»5¾^p ˆfü5æÀÝ wi5Rù/X°€$''K$£¢8S%å¶}Û¨|8+ÓÈ©ºÏŠšÁò¶£¬$ÎîyšÇ•8Xæ<{°„3£ïmŒ¡nßI²jµjÎ kýûÜO#¨b6ÉûðSdVòø?ÜÄ,×3‡%n,IQ±¼N|×ýõì/çéfú>³}’3Ã'6^ ò|±Ü¶Fe~Jé¦-ü~F÷=âŽ?"u¿ñ‡™mÁßNšÞ÷îÞ³ú»&D…H¢YÍÀ…9p7Ã]ZTþ¥˜•Íò×m=R÷ÝœÝÙwd[îÖø"@TxÁ šUð× \˜w3Ü¥Uð—$<Ë7§¼I>Ø:ƒdt#×™;Ͻ\¼ëkñÔ\>»×/›éu¬Íãx÷7ΨÍÞÆï ¼ì2~ocϾ‘Ñ®]ùl]°=Ýôܹs4¾:58Cx6•ÏVÃ’­K_„æÃ§­ý·R«Ž—2§[j°œð+w6ý–-碧Îqf‘Kqµ›ö»‰Zëü­ñ²«6¸[#‰QáR€hVÁ_3paÜÍp—VÁ_’ð, zæãë]ˆ¾’ ÍvØoÌ®ø›áîÖ¸#@TxÁ šUð× \˜w3Ü¥Uð—$¼“¦M ŠïmžF2¦±wíÔZ¾f×÷úƒºª_•ÏIåÌaÁŠüžÀ çÐý:¨&ƒROJJ¢q5jy%Éb È8½²›úíY‰Ï þº—Ï:.å#Ž"cãèþÑ“gH.ÌïÇ È`"¸Sì7füÍðwkÜ *¼à@ Í*øk.Ì»îÒ*øKÞIˆÞqò¶DoI…G=ì7f×üÍðwkÜ *¼à@ Í*øk.Ì»îÒ*øKÖäß}›Lß$3‰ÎgÓ÷ð{ývÛKõª¸[ãˆQáR€hVÁ_3paÜÍp—VÁ_’°& Zãå®6Dwd³ûÙu3üÁÝwˆ /8D³ þš sàn†»´ þ’„orÒ{ïPéë9c—]š3yÓ÷SyÉÜï©»«Ð‡¢õøl›Õ "÷’÷5}&g2Wµ†*ûYºïCãü¹ä*’ñÕs1}/?µYÒ dgíw¿Ü³“ß'yUå|¤?1î#’íÛ·'‰‹½°ßØËÓjoào•˜=õÁÝGˆ /8D³ þš sàn†»´ þ’„o¢oÜd+ˆ’DdHì7f×üÍðwkÜ *¼à@ Í*øk.Ì»îÒ*øKþÉa#ž¦>ž4ŽäŽ~ü”Ìf³ùi£§îÒ“ALþ>ì¿Ôv É{:ÞC2Ø.ii<ΫniDC+ø s²{œÙi¼ù?ãÌíšo8s(ýþÓO?%“ ëñ{#'Nå÷\¶mÛÖî¡ ¿¿HîK—.Àßtø½eèdøâ*@4«à¯¸0îf¸K«à/Iø' Zã‡Ñ¯p©ýÆìJ‚¿þàn;D…H¢YÍÀ…9p7Ã]ZIÂ7¹qÃ:jø@‡V$ëuÞ©£æ"ƒxòN‘A¬à3ˆ'2È~ÍÍœûâÃ/Æ,ŠÌ =þÁ£4¤øVyziæ\žñâw—ЇJ•*‘„ß3ÝWp×MÜÙø;óÐ¥»5Ò^p ˆfü5æÀÝ wiü% ß$D߸!@ô[¨·Â~cvÁß p·Æ¢Â ¤Ñ¬‚¿fปá.­‚¿$aM._ö-5xø¾$ß½-™d®ó냖GSyjת$‹6l‘Œüuɜǟ¾x›3ˆ5jÔ·‚B>šÐŸÆñ]oHÊ÷9Ú5¸¬¼£»Ž¥.oos»S×ð{'Úp׆ڥ!ðw‰%à…àn 1D…H¢YÍÀ…9p7Ã]ZIšD€h—Z¢J$2tì7f×üÍðwkÜ *¼à@ Í*øk.Ì»îÒ*øKÞÉ”~ÏáÄ7ùi¥‹¿ú‚FEE9IÙ[vn}³ì4õÛüã$cã \¸“Ÿª:dèÓ¤'<ýÉ@]ŠæÀpÿÀ42Q@9œ¿•-~°=†>|³…ÏhV»®é¥ûð{#/lI"}û¸ý$Ë—âñW-ÎÅZÅ9Ãx.‰3¦ÕoìMõ&N™NÒÝ~ïŽL`ËÁ=°|óêüó"˜ûàn+D…H¢YÍÀ…9p7Ã]ZIBD€Èœ êñ·`³‚ýÆìŠ€¿þàn{T«V­”7FYë Üjoذ¦Ô¨Q£p›ZHÌüÍ,¸›á.­‚¿$¡W®^³š FãLXTq×ö³ÏñY»¬ ütÎü•9#çºöÅÒ”üÓk*ðY™¹ËäDcïyÎÄ8Ç™·«®âŸ;%Jð™À‹=ù÷éàÔAʉÝ$//ÉÈd³ŽgyþÇùh¢#_¹|T/®DÉ\ñbɬ£é¤ÉâöW”qþõá$AtÉ,AõþsåU$Ý]à÷îȶÜË7¯ÞÁ?/B¹îÖ¸"@TxÁ šUð× \˜w3Ü¥Uð—$ôJˆÌ¢^¿3m ûÙ3üÁÝwü‹©Â )hˆfü5æÀÝ wiü% ½RrïýŸ™÷õ@t ÎŒ¥¬â3„¥~ä3„{ãòÓýòCjzè¹_ÎÓý:?&ùUNÕ}¹›}°Ÿºd;Ÿ ìÑ­+Ýüì $/¹ä®hóµTÑxê±ý¥œ üd(ß¡}(Ùª”W“~8CõR>?FróC<¿ƒkû)ŸeüuéZ§¦·ßÜŒôUkÖ“k˜²?•ê×ÜU‡äÂÙ IÚ}ñ•¿Ý㈴þÀÝ슃¿þàn;D…H¢YÍÀ…9p7Ã]ZIB¯ô•;D{ÖÉWþöXÜ^ÀÝìÚƒ¿þàn;D…H¢YÍÀ…9p7Ã]ZIB¯ô—ûÂo8³6|Îs4ð¼2‰)¿'Q½˜òHfÏ ÙµÄý$GNrÎ<ÎêÅIuT¯Gìø9¿ï±ëóïÑN¸®eßÕ.þö(2zw³ë þføƒ»5î^p ˆfü5æÀÝ wiü% ½Ò.î}[7»øûf=r[»Ùµ3üÁÝwˆ /8D³ þš sàn†»´ þ’„^i7÷%˗О{(É '‘ì’}Žä¬ßI8 à bŽÈøeMⳄÕJ¤ 'sù aÂó#Iï~nèæz]“tgLƒ?Hæp"Ñ1{ ?µtÞv–ùJq&ÑQ3„`½Š%…IDAT'¾?CõéÃ7®È2a9×+wÇh*œÀ7l¾ÚÍßæá…mwànviÁß p·Æ¢Â ¤Ñ¬‚¿fปá.­‚¿$¡WÚÍ¢µõ³›¿5ë‘[ÜÍ®=ø›áîÖ¸#@TxÁ šUð× \˜w3Ü¥Uð—$ôÊ@qïÑ¥=M¤ÊɯI޾žŸZsj éú× ™ôÅ1’ã/á³÷ˆ‡…næ#‚ŽqëŠÐý¯wòYÁiÓ¦“~w'~Z))]V®XAGôï@rEÎXÊûgRùSÏEÑôaù>Ö/yª&}HšÂ®Î$=*‹üY…S‹ÿü.7°ù(þ63ìºw³K þføƒ»5î^p ˆfü5æÀÝ wiü% ½2PÜ z·ŽâïõÈ­îf×üÍðwkÜ *¼à@ Í*øk.Ì»îÒ*øKz¥Ý܇ @È¿åC’Ï_ÍO•³’Äè{+SQÒ̃$ ä áñd®ùþæúðþV>+W¸é#_yäwº~ÊiËæWÑýÁ56üb7g gm&ÕQ®C9úPüº$c>á3k—­#}àÃ|Öñ÷•Ÿ‘^¸Ú•$.ý¤Ý»ùÛ=¾píÜÍ®,ø›áîÖ¸#@TxÁ šUð× \˜w3Ü¥Uð—$ôJ»¹#@´¶~vó·f=rkƒ»Ùµ3üÁÝwˆ /8D³ þš sàn†»´ þ’„^i÷^÷v¤ZÏïC¼¡ré¹âi¢B8&màŒ^ô¥œl“Ãg·_àòÍG¸æÍ7¶¢öc^}ƒdݺâp"iî/ßÿ=Ýì|÷-$ã[—$Y²5?U¶Ìú„ŸjúÕäETT¥Jy‹ää‰Hþ±ù7’ÿòžÓ}»»øÛ5žHéÜÍ®4ø›áîÖ¸#@TxÁ šUð× \˜w3Ü¥Uð—$ôJ»¸#@ômÝìâï›õÈmîf×üÍðwkÜ *¼ÂÎ&ð_‚sðÙ˜èhþKµ2í QÃŽÐõ<p÷Ì'ÐwÁ?Є]÷ï/÷\‘"\¾|Xµrɨ(ÎÐý#ž›™ÃO sg(_êü2ÝÑöyË¥LNæC‘… 9÷ã²²…þò÷Á$šüEÜͺø›áîÖ¸#@Tx…!@TVª+aç÷®&ÄeàofqüåŽÑ¿uó—¿Ö#·5¸›]{ð7ÃÜ­qG€¨ð Z^‘Á 4âÜl~¯V¶ø ¶<ã’ËOÃã¿g; ÄüfÆó_€œ>E% PfÎê¨^¤ºt&éíÙn÷uÚä)T鮎H–)SÆ©‘¿ü/â35-[ñžüùù/òNFüPÖ­ã§ý5nÜØ^Ü7ݶmݬ]»¶ûJ~ÜÙ¿?µ®V­šS/þr—8q‚>–-[VÙ*©¿¢E‹ÚÚ¯ì,5•ßÿV° ?ÝQ–Û%³²²¨«ØØX§.íâïÔ)”< ˜â¾êGÎ4>1ñ1cLÞ·å€3?ãOóÆÍ§—]v™¼å,ÅÏÇcÜÏm]ÚÐýÃWï#™¯g(Ó¶pæòîâ¨ü¥g_"iúbŠ¿éy›¶îfWüÍðwkÜ *¼‚Ö *+åZE€èš‹,E€(I¸–]s ×RSû=Dö(SüÃÕŸ½¸{K*0õÀ?0\óêÜó"ä|¢3àýßü7ߤ‘n¾¾ø)y÷FÅS¹ÌGÜ%žŠ-2‹5œiÜôçVªw™›ÌÔ” oÓý±Ï›äTÙå›EütÅbü;öïsêÅW%¢ÿ7Ç£¢%+WÈ[¶È%‹yü‹§·§ñY+[:ÿ«“o¾æ³^;ÿä î€'ÙÕ5õóÃ*Îe¤gÞòV~ʤ4â/ÿß7o¦®J—æ§UV¨XQvm‹<|èõS¾B’11üž>[:ÿ«S™a¹ËùçäpÐêïWÿH]¬~´ É/I2é·d’VïG2á‰!$ÿ¹Üt¬_Ÿä„’í¹äÕWpû¬óœ±>qŽ÷©…³q» ¹ÚÅ?H¦2Ãw³Kþføƒ»5î^Aë@••rV :óP5ˆ*g¢3UC€¨qÖ :óðV ÚŸ·ÞN Dë»Ù…3üÁÝwˆ ¯ w o¤ÿ±ùw’O!ùE.g "sxyŸJ\°|)Ý¿AþÅ™´‹—‰¯s&oÁÎüL¼@7›½ô<É¡C‡^¬ìçw'¾C­f¿0’[gðY˜žo³Ýž={:õj•ÿïN§öÓžæÌgj6ÿÅ|ô\Î ¶nÝÚ©«ÊÜ>¤&o?É¡?š™Nú—?ý@²¾ø ¾Õ~eýÏæ~L_Àgˆv¥0ÿí"çžÑ”í¼•‹|IU‡÷yˆäÆ3'If‹Œ‡ìÇ*wÙî»oÙ¿úwîJEç„ß;{FVñKþô=s¾¯]{ê§hÙ2$7ïÚéW¿²ñÚ5kèã­8£W¿aCÒ¿ý‘íÊz¾Êß7m¢¦7]ÛŒdÛö<>žëÔ¥¯üwnßNý4ºâ?$<ñ8É1cÇ:õ﫲ß>jzEº$_û ÉÇÄ™7Rü¸?vŒZ×»ìr’ï}Äÿ Ð^pò£kjzæôi’ j×!ùÕ7KH6jÔˆ¤¯Ü©ñ_—ä ü}mX¯­Z½šdE‹ܽï¡v§W}CòáQUI^5‰÷ËèDÎPNªT‰Ê3öì!ùx:õÜ­[H¿âÛy$«fòσ ‘>}çQ’îΞÓM—…_}E¥ílZÕD³fü½øùçŸÕ[¶è§ÅúÛõŸê 22ø?òåË§Þ jÝ_¿êÉ…ÀàÀßÌ"»5î^Aï@V ¢Ž)ÿ…Ä©¢Ž)ÿ…Ä©¢Ë DËÈliô¿çØ2Ëàíüͬ ¸[ãŽQá2$Ŕ՜ùSü%³mT Íè™WÇl{Ç$åÙù^®¥"³ôÙK\¯Gÿ…úãþ‹è•CŸ výÅ™5Ù^ž=’ýÈrU~òþÔ~öpÎögaÞçÌfŸ‰|¦²{÷îTOöç-ÿ¦N£vï=;ŒdŸsœ9_„TÇ«ó8CÓJ<Í”K½¿Îš>ƒ*Oú,ɇEÿà ñ_æ­þ‰Ê}}Ê«ü—Ø· ¦~ú‹þÄqFxÏa>óU²$ŸI¢J._~:ŸjêÇg&=Çãî“{–ʳÄSpe—Þr—õ忬íÑ‹Šz‹õS4Šô£g8s#ë[•+–.£&»ÜK²óyΤ|^«<é¿m糂Vû•õWÿÈg¿hÝžÈ~¿µg–¾^µRVõI®ûõWj×åÖ6$oJâñgwáïã{⌬ìÜ*ÿ?ÿøƒšÞÚ¬Ék’¹ÿÚÏðÙÉ—F’]û$wïÜIíš_É<æÄ’Þ~÷ûè£úÔ¯ltðÀúØPdöêäã§Æ>ñîd*¿çΨÉúVå±£œ1«}IMjZ¥@<ÉI_}A²E æf•»ÇÙ3œ!¯Tžý±”èÅ~Êq­ZµdUïäÊ•T/ñ¾n$wd%‘]‰¿O“c½l±bT^1›ÿ“¡N¥8ÒŸHº@òÊTÞ_Ïó°WíäŸ陼?R%/.½„Ÿ~üŪ*ÎÎzÑÔ«*Ï>5êMzw&ɳçy~^5ö¢Ò´Éÿ¥ZÛ·l&ùÚÛS½hå}•U+¿£ÊGî'yïýxߨ‹š2ó””Hµ«U¯áE+ï«øê÷Þ[@MOÀßÀÝwkl *¼BÆ ÒÊ!@TX¨]s‘¥% ×¢k.²¢$á›D€è™DÏ|BýnÈüžê •ñƒ»$¢(dHž)üí7šÁq¦ld3þ sÕK‹SyÿAÙ‘Ã $‡üCò¢9;èþ«i"å&8ÌŠâ Öé†Ü¾ö奸N0:äÑ5ù‚h™ˆfþz!gböÿtÚ Kç30¢{Ç„èdú˜^»$Éòå‹’”ãüí7nפqu*ŠŽ&ÃòÜ9~OÝùõ‡¨|HgHùë22†ÿ’^¹ÿ¿|…t+*ŠÛ«™Î‹:ÿ¥ýä‰óTÿÀ2þËóàLçþÇð_ºoétÕ+UšyGÿÓ?÷-žò(Ë£¢¹üè¡Ônóü$ŸÌÈOR^ŽbûO=ÝŠâã9ó!ÇyqÂNt,Õ“سÇ8s÷ÕÄ÷¨ü©4Î0d9x…Ê=GåïL~›d´×øñH2$¤´#3ÆÒþùSÜÿÄç†Q½¡)<ŽÓvQñìhÓg}(ú‰")û‘ã”ý©òô±ãTÄ#œ¡zFô¿+—3 ŸTáõœ1wÕSÛ«º´'í;t˜Ú ™Éç“Ù/6ä²ßnlRîOŸ3Û©µ©«öìÝKíºµnKrøžÿw¹i¤gwæ â;ïNsê¿]»v¤/Yµ_ioßîÝTïÆFIŽJfþŸçò÷¢Á0^¿_|‘î[½Ø·š\Ûà?$Ǧ²ÿ|˜Ÿ×õ®×^¦òGy„¤Õ‹Ì6®Ëœ_OcÿŸT„9 žÁ™ž»ï¾Ûj×T_ö¥83ùfz*S˜ýÿݯ’~íµ×’´ºßËÌäe5.¡öïdñþ6´ gpØÄûñ%—ð}ªdá’öôÓTûÀ¸WI–c,ŽT±A–«ZÊS»ðSO§¼ÃßãnyýËÕÆndYaï_¶°ßTO¡µþ%ºw¸Ê®Î^ErØrævî÷ÿ¯ ^ú8µ8þãL’þÆ™Ðäþ~Xìî_Õg¿ÿ.•M~ù)¾WŒy}ÿ+ïçÿj`±`í/«©EÇÛ[‘¼Zdðç}ùÅž\W?}êݨP¾ÉGú>Dò­‰“]7ð±4_ÿܘð6gZûõãŸ7>v÷¯fMŠï÷Û<îë®»î_uü)x G7j>rôX’UªTñ§»µ2‰ŸÐóÞtÏêÙÝu¨\sÍ5T²FœWnû­?~œú(WŽýÈï•ܽÏ×!žÖí¸á¥Ep¨V÷û൹Q @T؇Œ!@¤•C€ˆñoGP*©ËÀ ¢²Ñ¹Q º#Š zæ“×]ˆž !@ôÌGÞE€(I¸–]s ™ßï]_{)DyÐ; ÅÓJâìÊ1ñ~èèý4£r¿_ªÌÌY=sš35ªm£3933[œk3†õÇ–rn襶àÓDª9¦ÿ1’Î&9¥0gL*Kz—Μ#å¯Ë-­÷ÒÇ%‹«“”K)å´‡%p¿æð_¶Û'q¦àÕÂIÔnôûI^{ ÿ]¶—Rö“#þ2/3¡™™üóRûÛ9kÅ™”§ œ§òiW&Y­j>’9¢CÙÚ¿´{æ gÂ:w8@íÆdp¦¶ˆƒS}£ùlÓ¼Ïù/ß Dsÿbœ²9î‹v¨šã· ÌcÂ+ü—è×Eÿ"ƒøˆã,UœõÿÅ5;›ç;zÌI*zHaû»hõ/?ãu=õ=ÿå¿o*gPN‰ âè‚Ìÿ…Ñ<þœ\ž—Ì`ç =;G)wð<ç}x˜ 5ÜËönÌ`¾;EñýRl·G¿šT!GŒÿ"wÑï?vy~9ÂÞsöP»¾g8sU)‡í®ÄEØîÍm]ÿ"w¶“-Ö%WdØ—µ‹:x%…¹p~ÏáX&2ˆ?UæùÔkȆrźÿüó>j×´©°›ÍJþiéì7{×¢z/+™ùù9œùÿó2þ>Õ®Íþ/e)£„½˜X™Ô““™ë+·Rÿ#Sù{CÊ_—iâ? r®aîuêð8e¿2S-2ýÑâ,´ÔÏžåÌþÊù«¨ËÑiü}•ý¿—F/mלäåµk”nÙ¿ÌÄËò˜þ~žgئ¿ùµ{CdöHùëòB>îÿ®GzPQõê<þ‰§“þøãýIþ3‘Yúì,Þ/‡<ö$Õûo6ïg¤üu$öÍDæ¯lYÞß.öÇ~&uù‡ ©Ë§Oß{O'êò˜øWâ{µ&šý­øÝè~ýõëI&§ð~:é<·×£bÇ´ö,›}ÄþðÚû‹©@>†ï^¼v¼íFR:ý…dëjÌ«Î4žçɳü½¾ØÂÚ§„Rƒ"»æ‘ìX“÷‘«g²\Hæ}ËZ¯kO›ø)+?E²wmÞGÇ쾊ôe?®»XÙ‡O+—K­†<Ü…ä +ù?1¾r´#}ö§_ùÐëÅ&‡ ¥aýËI>s ó?Zï1Ò_ÿÖÅÊ~|*Y¬µ.ż{n,é â=š~tMM›6àß;Jç%½ëÐwHöèÁß;û¿¯CêâÏ œÉ3åÒý}Z¹׋O?Aß›1ƒä‚o¿'ÙP<ÝZÖóU~ðî$júP^×#G‘n×SvWÿÈã}¤/ß6nÙáÛPÝdìßOý=7”÷ÁçÎçþGŒ`)3‡7ÞÈz]ƒþ÷û ã…QY w ˆ´bs‰Dæ€1…ü"Ä¿"DÚ” Dˆ¢"@@ *ž™*De݃6@œ0GúÙg,EæPÿ£>¢-_êC²|yÎx9–ó_âe=U?Æ™‰º—ò_šš:8Ãqû+œAðh)µ‰%}þ\θüµ‹â£:Ž'¦ñ_ØïéÈá–Ê âÒo<[Ö2ÿRyXd7;ØÀ¤•©J‹æüSYߪ¼¾ÉnjrÝVÎT|_±–3)µj1/«ýÊúE o¡ã39“øDôYÒŸäÃD… G˪–äömüè[ší¥v/$%90†ûOI©ïÔŸUî3&ó/`³‡³l{>?õ÷V)Îhì?RÛ©«JßûQ“ìE¼ž.0‡¥õX_ó[-«]:ÕoX{'épã¤ÈlÅÕ>_\Ý©¾U%*öwjòa –Š b¡˜Ó;S*9ué-ÿ_~fÿëyÇAjÿ|R’Ÿ:8#pås¬' .Må2yQr@-uù™Iž2á4µ[=%‰d·Äx’ïåçum=Œý´Ó=ü½Uû‘VYþ†žÈ1¯":ÍÓùûóf^ò3éõÄ{N}ìÞ1yÂkÔtõœ1$ç¬=Gòì]iTTG~ ‹Mw1j£âJL‚=ŽŽ9&ÇeœŒ#šh"Ü2ÉÉ2âr&›÷D%ãî¨Ñè8&Jr0êhŒ+¸‘ QFjXD'¹_]’~§ixýZúu¦þôíªWu«ê«¥ëÞïUuAaÉ&M0/)`ÇGÚ'{(׫SÆ’<ùM É*¾tB«Îýû‘Cй1ã(ü`.$M&Éo''"ÿ$%!lÐOÃîï Š—4UcØ$ DUO!( D«°(Ò@´Ž ÇJHðïº4¥øóˆ" V6à¤È+¦m) DÛøHÑ6>õõÔ°ûûú@c9Ò@TfØ´p!jZƒ§oëÖ­ô¼äû¿’œ´ ž)e<ýJ-g óòàÙíÜIxL’žçâÀ€ pû?7¯‡Ç,a <¦+ÖÂã8r˜-Ö\W&…Ó³œ½ÿŒåö=Áô(ª'Ñ%£"à’¾SEzŽ}Ùdh¨—.½œ¹¡ žpðŠríZ8=òñ§—Ói•™`KY‹nš(» O ë³÷•KÀ8­K“xÅýß\†GœõÛ+ŸF¨ðcà~= šŸho¯J‹|áíÁœ÷¸ŒaÕ`0?ÛwcüX$Ö¸]´`ˆÇ(‡Ÿ…ç{É20M¬R+þ‡€IŒ |Ú—¢Þ}fc¾¿ô"˜2Ö¯U¾9§²Y OtémPxO%7§ø§'èóxv‰ô´>œŽx¢çlÀºóèP0¡ZëÍéïo mÆ èYî JlKú5¢'<àZq/*cÅ:¹DœÝžæõ-ãh` Æ×§V)æQùß¿£¤›Ê€ËŠ;˜ÿs°>Gƒ QŠÅBÑ2 šÝó 3Ð,e¨œ‚,0Rmž®Í æS0²·Åÿ—^šƒõ-{"æ¯8«t_ƒqÕöoXïîŠ3¿âh¤r—Ïàr<ª­pº›ÀÝïÆSæD|˵ÒwÒ6¾- êÅù«õ‹x¥ºä+߇߹iæ[”ÿÅH$Ü…îQâŽ`Þ5éßEœEvgÝÄYen›xÎá¢CÀ%=ú«’r ÕMÊhL_šuú¹ýªv(Œ“ˆ¯ªÄxÿAœ=̉CZeîA|[™D_B:…d’TfDFØSHÖV0@™1ŠaÙ&ø™#û“Þ^‘’ô ®—`p9ìé‰ß9¯\oÏ¡|›Eÿ†7#¶c š‡ÆÓs¾Å”ó±Îa–êø—&Qþ©â §f̃¨ ˜× óVÒóÈÈH’êü5éåøéÏM |æ©$gö›a+¡ÿ£'ñÜl&©õ#ùÙ”åüG‹H¾;oxÌþßc}õõõÕªšÒïÞ¹äÂWcIîŽßáï€1¾)Æ™]ÊÊT?™²n\û>Éá“0Nw­ÆDHÿã¬$%Ñs£voPनêà i ªzÊ2( DK<8$ DFº”¢u\¤hi ˆ 6|ª 7àÆž4/H¾ÌŠ 8i ÂbeƒMmàIÑú:ıÒ@d$ê& »¿¯[õë=•4U»êÚ±cµäjþL’ÏÅ WçbÁ$&4WµÔz™;âßd‚Ûzjí±g¿£åá ½ê3|Z=úêl bxw05ááÞê$ºÂ3áÂO³Ú®<ªº”þ*s¿¨ ¥íoGÒË žÆ_%±ëë9û˜?qJϰôˆêÅ}ÕRx.—¯¸FõK¯å]­3<²\.€ùÐíµª°™>(Œ3K»SCl¦¯ëòR줛6Ϧ,ñ±7É‹-TØ‹ÿ¾OÁ <9êé›9 Ìá 3!- ±#0ï•Êõþ2x¾g/Á«˜1ãô1ˆ\•áCrékÖq¬ Ë·‚‰2Ø>:ëeØýê}1»†Ò—îݰ>Ø‹{þ(ìÑù<év’’}1ŒÂ‚ªA±µ&æ#M30vÎBý®íĸ],ßû0Í”¡ ”<1ŒBÄ2×É•‚ߦBHïÝ;0PÜ*¬>ª¼€ùë¶wæiàòÚgHžây0€UfRÙàäx6Ì™-ÿów¼ øÏŠBý['Cÿ@o£`̪™NT£V†¸pÝRtfô7‚ÞA¢_¿j‹úû·…~7$S˜©ugU«Ã‚Á­*Så—uíÄx1¡^é²ó¤ÊL1>Às»Å¥Ý?1Ù"Cµ㿤Ì]´7æÝÚÇ-õ,À¸lÚ ¿“>¾ÐÏ,3·lØVK¾U¹û®Î™TÕÃð»%j£¸ÏÁ·q«²·7&0ŸåõŒ-3·žB/‡«Š±Û‘BŠ>ƒ7JŠAt+mbx/e5=çzW×S0Í5Å——S¾§L y6 ã´ü"•Uâlzb âküOWÝß; Yi ªwÕ$ Dt¤4UZ¥hŽ•"#a)¥h‰‡¤ÈHÔMJÑ:NÒ@„!& Di ZŸ!ŽuÕý½cQ¨»6i ª°rÕ´{÷njÉ×9ÓH&LÁUó ´×£oø†¼‚÷{ÛA¥%pççÓܱ“ |D±zñÏH‡ë¸¸ .ó~ý„GÝAÍÚ°úijÏôï‡8†áãêMg“GŽÁ™®~}[ÿ~}r¨¨¬»Ÿ¤Ù æ_/î߀yxø!¸Ö32Á úûcãËí«U€'~㌋”ÊÒçë£$C‹òò×`@î ¦åe?œ)<Aé¢ÿs˜dPÊß; ΩNâzZûÇé‰Y”¨‘`4CßÒÇ r‰•§Áܸx™¢ÎƒhQº.ç$ºä•y”`Î’¥º 1L“.å?eΊ.I}ï’ª¥nÀ?`lk]ª+²ÀðÝ·LèÀV˜ÇÁØ·†~´·âµÀ;ÖøÏ?ˆú›ž@½›õj¯þsσa½‹uáËÖ†T6ê.JÜ:“r¸oB¿~9¸„­ÂøöˆmGÏ}‚Á¸×U=3­%›¯P– €Ë+â k³dèše¦ç~h3¶¿0¸À‘ãYïR¬ ÿ]˜KùÓcPožÇn³)ZéœÔž¾TççWª_ÝF:fˆ™!-?‡ñb:&ñBp/‘¨/Å:ððwë…š±u·,Wè"\|ô*<½Ê™QýåxaBYzxôNÝGéú÷ïŠüÓU÷÷΂Uˆ*ä]uIQÕ‘2¨ ½eM…ý&–¢íN—"6ÂÒ@´=Nj{* DëIÑ6ä¤CXˆ–ãC†€€4U#ÁU ÄÔÔTjIfFÉÓ- U3 ”†ŠsºFâîܹT‰?#Q¿Ò(¸?3W;ÿõ°vÕ$KKa8>Ô»7…“æ½I²oß¾$•ýû! €ŸÏ÷îJß*zƒ8¡Áù¡ŒÁõ=…¤§Å(0Y…èT¦ƒ±¹¸gÀº.r CÉUº¶$—¾VyéŒsÌÏõÊôg2IEà`œ)n%n‰Õ«·"g¿Š×ƒÙrÒ’TòD½úÙ€.<†µy ÎN6µÎ˜aíÃãÆHàîßUßgP_¿]`B JÀÜù$€3éÛï|¿ú[jy¼?ÊIú úC_ïHñ~8‹k/<̰^ø æUà;ÐÔk 橽zÕ ëÞ?€©ì¸ ã>lqg{US¾q»q„;ÞPñ\>·?öø)]ø–-ºÊ©¯Ì®º¿¯/|ÔåHQ…ˆ« i ª:R5!`”²¦Jÿ†KüÓ™FÁ]ˆÒ@üyHÑú: Dë¸HÑ:.5źêþ¾¦öÜëxi ªvÕ”––F-ùüðd’ Sàñºu Ÿá¸RZµÒç SÁåð Q6lo˜ÁJÜÛAçàïlÜùLjâ4\ÿøÁ¶/ˆôôt’8[¨œœÊ2jê’ž£µj¨ŸôÞÎ¥‚Ì/„ÔO*¥úLØmü¾ºyƒ1sz¥Jœ½«úý»ècàÔõÊžqŽ¢Z $ÙøœyU§³7|aÆYÊÚ&!„¤IãÁšÊ­ kÎJ0¬’:PRïœ)®)_]ão¬¸DI/Ÿ(#¾Ž‹&0ruÕSSºÌØ,zT%þ'÷ÕúD.§2̧ǶË• "ZélƒøÀY¼¹ð o]ƒ8ü.˜ÿõç°Üõ%¼KTeÖ,®’!¥«îï¦4UȻ꒢ª#ePÎÞ(kªìo0±Äß9êlÜ¥˜K/ DËñ/ DK<8$ DFÂRJÑšB®º¿¯©=÷:^ˆ*„>€G ~žæÛwp[Öíð;n¯jè é)Â÷ùÂÙv ”ò‡…é{g_›Ã‚ÎÞ°9¬!.¦HâîÜ“ø;ÿ{…û‚ùEÔ SÇp­à¥\Ü^{EÜb› ëvcñg{c=ïÙ³§CHY»Šô->–LÒëaÇ0!Žª¤«2ˆŽj¿³ôHÜm#_&ÎȚ̸ý·¯cæ _Ž“9 k·E‚áÃvÍv¥êðôÖ0|Ww~G©ƒ_ÃZ‡¬Iz æð¤êöã¢e¹”®$Œâ{K7Pø‰lÜb« =ÑÑû4úþÞ`p)ÿÿÿHÁb@IDATìw`ÅöÇoBBzP”"¢"¨ˆ ,A° vA}Ï†ŠØßïÙ;V{ÊQDô v©* Š¡7é-…$?ß9÷"w¸¹Ù>s&ßüqÏÝÙ™9Ÿ3™ÝïÝŒ²¿þbøÛN [·nô}üøñÛ·™ô¥[§c¨9ßþð=ÙâmÛØ–”ÍÊÌ ››Í6;ž®^#“¶>±Ù½÷Î!kÚG·ãçS“ÆãvšÖ>[Ûîz# þzø‡Å}胒CÓ&m!» ¿˜ì’¥l—®æq»NvUÚþÉ7<ž·k׎ÒA}<ûÒ3TÔc“&[õ°*AH9¿?Oå´º±y å¡gÀ==§MÓ7P†¼VÕÉV©ÌÿMY _nϼöW*wÿG[sCør¿ûø,œÁí^þþJ*¥Ùm{y*íà_7ÓqS÷eÿ…ü9,Ÿ¾nÈ/$;≑dÏùå²±ÎÙvêÄÖ°OÓ¯ï ÃË€@L‰éèÏU«¨Á{4iBvxi-²ÙÉnlO=^{}¿õéÆdO=óoÏ`Ø—°.Ø sӸ总ހ¿þaqz Ä'îåñºçÖjä`½ þ¡®^Œí“y¥´ýÖ‘/’íÑ£Ù ?νä*ò—="›³ Sµž ?m¤Mµ¨É»ºpUëI¤!T$¢µà-oµ6éü×}ÅBôî®÷‘k={öd'L`{Ì1l û4ýúÞ0\ˆj@Lï@ˆjÄ‚@XÊA´­2”þz¢wDgñ”~¡ìÌKór»Þ˜H稷ÿDU;fÒ¦ ÄDs·læ[jÕâÁauhWõÿäûtmÞùƒ»Ðö^}yâxSmXl¦úkJ»À]o$À_ÿ°¹ò1ÏÈõGE_~׿È.Ÿ²Œìˆøá7LæÕìMïV’Ê•~¡œäŒ ¸ë –tþk¾YOuº‡lïÞ½õuX»Ôë{‡îž QA*µA *DÒ¨.”]5ªe=ÁŽŠ;bêøJ¿PNí•ù[Á]oŒ¤ó‡@ÔÛ¢ªQ!-U ~óÍ7äɃ÷žOö½÷ãO¡Sü3=Õ›é¢n¸GM<¹>ðOæU*lîëÖñÃK.ãñxÔÛü:‹]ùuJK¿ý\mѵ3Ù·Fªë}Î>•ÊßüÛx²ïžÁ3˜¯Íàjÿ³„ÛÙðòf¡¶#Q¸ô å„Ò,¸ë˜tþë¾ZGÏkÜ—ìÀ»ëê°v©×÷Ý <¢‚Tj‚@T‰¤+a_(»jL%Ì þz‚6wÄôq•~¡œÞ;s÷‚»ÞØH稷ÿDU;¢BZª@üý÷ßÉ“G9“ì°ÇÇ„$þ`‚!òf‚{äÈ“*ÿ$‘%Âæ~^vå±ÇþK_4häÛuý¯¢té¶mdñdÒ~¿‰©S&S];ó‹«?¾˜Òç·åúåÿ‡›{µaCÚÔèT¶‰ýaYéÊaq »\p›púò¥ò/^Éw,ü9X-;‡ì؉SÈî»_›ôŽkÞ+õú^6D…¼Ô¨IW¾PvÕ˜J˜üõ=lîˆéã*õB9½Wæïw½1’ÊQo¿‰ºvD…¸T˜ŸŸOž ÌkLžœ©âŸéɰ/ØL÷_WûÀ]y®üõð‹ûù© Ç?Œ;∤upíÚµ´¿n]~útÚÌ.vÞp ¿WñµW_¥£¶m»?EµuNÿ°¨ˆ¶o>g²uⵈ”ñCê…rˆH")Ü#Á\n%Òøo[Íw,Äwª­¼º4É·ÖÏòû¸Gý’¶·ÝÿÀ¤ý¦$¤^ßëâ¨—Ú •@"éŠ@XÊ®Q‰3ƒ¿žà‡ÅÑY<¥](;óÊü\à®7FÒøC êí/ºj‡@TÈKˆK–,!On¹ù²/>D%´H¦!Ö…rš*±k࿌¿ÍýÕ×xm_q ¿×ð ya„.¥­jÝ:~úàÌ™3)߬Y³ÈŽûôC²¿ï6—lÎ!YdÃþv¡6¨Ê÷¨H§®G ÿmkyæpñ·hÙJÍ¢5-õú^4D…¼Ô¨IW‚¾PvU92ÇÀ_O'š;¢»8J¹Pvç•ù¹Á]oŒ¤ð‡@ÔÛOtרD@ª@\¹r%yrݵǒù2f•Ð"™†@ÐÊiªÂ®À?”6Å}ò^Ã÷þ裨Ճ?A냯¢ûùÝ©ÐùþF6§aÕà+Ù¡D)Ê;4ÙŠ¯à®7Œ¦ó/)à™Â…ñ§•n]Å3‰e¼´:VŸHÌŒeÈøæ¿¶ó·=š4¦ísðmziÿ]»Ôëû¿=ˆö¢Â[j‚@T‰¤+A](»ª™·ÿí("ýwDoa3ýBÙ›Wæîzcd:D½ýÔÚ!•HHˆ‰§àõ»ìhòèÍ×ù—Å=ã“A]°ï¨a w½=ü+â>ñËÍÔ°yóx†pQüiŸùsøõ9¿ò{ÁJJù½ßý8_#Õºzõj*©ó¹ÈVíî(¦_(„Õ¸bÀ]oH¤ð/-â©Â²æ•ÖNÝ@nh÷²_t1ÙÌL¾î¬R¥JRš|H½¾×…Q!/µA *DÒŠ.”]†Ì® €¿kdPwDÄ@:ša…H(†a ¬9RøC r‘A *a“*7mÚDžôíÛ컣0ƒ¨„É4*ºPNs(v@ü€è¡ˆŠ¸×ªÉOùl—Ékñêð¸Z¯,Y8}Ñß6oÙR­0ï÷ǼOºãÝ[Èfw ç|"åBÙ¼ùk¸ûãç÷héü×NZOnlw3Ù~—ôó‹$’ã¥^ßG'E%ˆ ©Q $’®Tt¡ìª0dvMü]# 䀊¸C B ÒÑ +Dº@1 §ëæHçè:ä"€@TÂfº@LÜJšM-/,ä50 xÑEÝhûðÇùîÂ"~ªTQÜî×:‡öçå…ó‹°‚Óu²¢ 6×âGÀݦÐ2hhÓ\÷… x­áþûÏ¡r®(ªI¶M¿'° Æãë5Y¼VqSAAÚú¤í¼òßWP“'æ~F6·%Ÿ?~ýÉk3׌]E›÷i’ØåÈJ¿Pv䤙À]oP¤ó_;™g¯móoÙÿòþz:¬Ýôë{‡nD– QAmz‚@T†d *ºP¤R.ð/M¨;*âjÔT¸t¢ [`ÕJçXW0º D%<¦ Ä÷ß}—Z|î¹ç’ÍËâ™ÄìøÓ£JŠxF±F;–ìÔÖø/ÝwÜÃOÛ»ì²úŠçf$+º`3£•öµÜõÆüõðwË}ÿVPC÷[ÆkO-æ™Ä~Ux ø²?y&­fMžiÔãUðµpôþThö¿xÆtÃùi§kGóûwËòø©…-îÛÇUåÒ/”]9kPfp× éü×N᧘^ÓúzyÕôuX»é×÷݈,¢‚Úô¨ É@¸½P¤R²øoGé·Ü!!#í !U&] „„%²b¥ó‡@Œ¬«h­QÁoº@L4÷Ü“O¡¯µ¾šL¶Ó–ø‹jâvLM^Ó²o5Ú2xhc%‡YI·lfµ^nkÀ]oìÀ_§Ü'Oáµvï>ŠZ¸.—ì÷oŒ"»xïûý·”nݺ5Y[>&OáóÌé=:‘KÝö`O؃Ï;7,àÓFW6så²ô eWΔÜõC:ÿuñ÷ öou-¼æªkôuX»”ë{‡î„ž QA,¥A *CÒ§ʾ*ÁÁåÿrÑ„ºÃ)wDÄP;bÄ…K(ã ¼:éü!ïF¨„EŠ@L4û¢ž½èkñ'ÿ%{Ü&þE÷³jñµˆgðZ™'žs÷t¹DùQ[§lQ·ËöúÀ]o„Á_ÿЏ¯[Çãé%ýø=‡£F}—ÔÐQ¯¿Aé«®à‡¹¼ýáhJuÏ4&e˜øð~âigœA­ÿˆO7±öâ[MoÀN½T×¶7êÁÖ©«Ò/”úiZ>p×éü×Mã5ˆW´¼š@^7à:½@Ö.íúÞ¡[¡eƒ@TÐJë@ˆJ‘ôD ¢ eO…â ÇÀß1ª@3VÄ1ÐgHaÒŠ!=7C:DÏ¡u ¢.i1Ñük/½Œ¾þøÊ«dwíÆO×{í½¦‰,"lEl"œØHp×4ð×ÿ"îçÏ3e=þ5°Aƒ)ºtéRÚ¾Ûn»¥Ü/mãM×^NMûÎËdŸ>~ Ù6ñ ÂêüðìØqoñûtçuÝö×9˜gZ)áàCú…²ÌîzÃ"B öÛó*yÃÕ7èê°v©×÷Ý <¢‚Tj‚@T‰¤+](»* ™]×È9 "t4à ‘.P Ãéº9ÒùC º¹È •°IˆÅÅÅäIçcÚ’3šgëÔá÷S)n›¬è‚ÍØ† o¸ë øëá_÷;îâöÂôåˆ#þ¡§šjñä“Tóäo'’9ãG²³æÌ'Û O!n+áµîõniIÛ«ÖO-RªâéÊ{hfp×éü7ÆßƒØzá~òýÆêê°v©×÷Ý <¢‚Tj‚@T‰¤+å](»*™=Ïè|XwDD_Ëðƒ¥ ÃñVØ<éü!+ ± •0Jˆ 7z÷æ_ºyèOÚ´Ë.<“˜Øoº-ï‚ÍôvKo¸ë øëá¯rõµmÔm¥üTÒ .诧a†×šŸŸO-õ.¿òå__ tΑîîX‘~¡lx˜Êm¸—‹&’Rù¯ä;V ùƒ8ے߯}êÕQºgŸEÂÏk%Ò¯ï½úíõ8D…œô¨IGÔ eG!S`À?0”® R¹C :Ã茓©¹¤ Syºm—Tþˆn#-;?¢?éñ‚ Ž%쮻bQ 1’)¨Ê)²`SˆÀ?¸eüÒXI Y´ˆ×j/ZÌöÊþüôÑÓO¯C (-;…ìÝw?Nƒ,-õ¢«yæàûz_‘‡yÍsy*õBÙ‘sgw½Á‘Æ¿xU[~Ï®¸ª4 `¯ëQú”+î%ÛûÂK’ö›’~}5GD…¸ô¨IG Pa -ø‡ƒ1®j©ˆ*³ÓÒŠÙ4Ý·ND÷1¶áD%ŠÒâÅŸHÝ~K>Ù¦MÝ=UNÁyÊ‘#§ Á]÷D­àŸ ¬½üÒ%Tà3/®!Û°ßQÑ ‹ßß·h#¯9¬“Ákç>ÿåëÓ§O° ±¼´ÒRžQh{Tò´ÚeÎî\‘v¡lKÁ]o$¥ðOÃ¥ƒyæ0ÿ þ?OüðV¿C#a/ý¬.=ëšÉžs¾Yk¥_ßGÝk!âÒ;¢P$€@q„)´LàZÄp¸ª¥B ªDÌNK(fSôÞ:)ü!½Ç؆#3ºvíÿ Àwüû0mÚ4*¤}ûöþ ÓP¯¿þDµ6kº™l^ÿR®¡)žªœ6}+×þ –¨½v*ÙçŽ[ŸT@·QU(ýÍF¾Ãe¿A{%íG"\ÒJ¸tÂ/]:ÿ³ùε3òÎ!X÷ÜqoøÐ¨!1Þ?>€Òì/Q‰±”¨I_ P|áó}0øûF˜²Ä”XBß:b_H(¾œ7à`éü! èD4Q,E ~ûÕ×Ôòv?ìmGâÉ_²øiqß¶åÅ ?´LÑ­¸PÖp×Ã=Q+ø'Hk{ÏkÞžxb\¿~ý¤ ¤Œ÷I68ѺU jÝ.1~jé‰Í·Rºí.‡6»pãÉw¶l¬Ïw´ìsËž{e_Ó¤ é‘Î?!OËå÷nßwç}"B‚ñÞ]˜ ^R:¢8$}€@ñ…Ï÷ÁàïaÊ Sb m#bhh-Xº@ ††Â¤ó‡@ÔÐi4T ¨@—"Íž2i}=½ëqdïÙÂkÿÈäµ7îÉk§Îj•8Äh‹ e=áw=ܵ‚‚D0öŽ»¸œãOx‚¾qÄ?R,m¼Oé„AçÎK­ùþûïÉÎú™Ÿ¦=óG>OÍš5›¶ñ-/›òùªÕÍi;>¢! ] DC)¼Z¤óßø+¯A<5ë ‚ôà Ã`ÉïÝÁ„@TxIë@ˆJ‘ôDŶÀÿÀPRAˆÁòtZ¢SRzóI(zéù¯]:Dÿ}@B ˆJ”¤ ÄDóçüö}=¦}{²y5yÍáÜ%û$²ˆ°¸PÖ&p×Ã=Q+ø'Hx³K–ðZë?âµnyÕúSA\À¶¼R¥Ž÷åù#eû¸ñ㨩g]p&Ù}îᵋRÚ/½Ò øë%°é7žA<)ƒŸ1tðP½ rX;Æ{‡ âÙ ^R;¢H$]€@q…+ðÌàï)¢?~Q 5ñäú “yD’Î1꣧>D…»T˜pcðà›ék»^'{òIü¾ÄÄ~Ó-.”õDÜõpOÔ þ ©íi'- KóLáÒål—­á;%êäò{õê×®Kù~_¾*uAÊVéã½âޏdó–Í©ÍÕÏÉ!›·oUq>Hl°t"‘ùŽm–ÎóL^C\kBurë‡É³vtÏØïïÝ…Qá%½A *EÒG˜BËþéÑB ¦ç#u/¢žÈI(z¨W«tþˆÁõ“K‚@T¢#] öyÔd×ÇÉžÖ£–â¡ÙI\(뉸ëឨü$RÛs{,¤‹'òS™ÏÙZÒõbü>½Œøa}JVÓ·ÒÒR²‰=ñ Š‘>Þ+îˆK&ø¯­£¶o;k ÙÌ\Ž«8‡„4Xº@‚¹ÜfJå_´¼|Z}??­øúŽÙœÞû_d^®Ï&ìHŒ7ãÇ7¡9Æ·Q ‘ô¨IG Pa -ø§G ˜žÔ½‰ó-b´”*P¢¥^mRùC †×'L,Q‰Jâ„%õ†§Ÿæ÷~Õ­ýyvöYµÍNâBYO|À]÷D­àŸ ‘Þ>úÀŸ”áéûx¦ð¦Ék¬¯Ïå_¸§Ìþ…òí±Çi ”>Þ§uNÀÎÿG{”Z{ÞÍ=ÉfÆO£-Ï…ÂUE´+g¬Y,QºíRJ:Ÿ$í“Æ¿x%«+ïã™Ãeýùó!“øNµu-Ï¡M÷?þLb—Q61ÞH½¾&¢B\z‚@TФ#(Ž0…– ü¡…@tÆIJ®Äù1ÚˆI(ÑÒ ¿6iü!Ãï&Ö¨D%qÂ’ú Ë/>OUͺ“ìy½ê•ò e=‘w=ܵ‚‚„3{ñ%¼Ví¥—æÓcü öÈZü4Óg?þ¶wìØ1mÒÇû´Î Ø©òâi^;ÿÔL^Ë”spyQ¸„g0òïåŒ:û× í.m*ÀKóš(M ˜GÐ_‹¤ð/\Âk¾—Þ7žt!Ï–Å'øKûÜ,þ¿,ÚûtÊÿèS/ûðÑêxpñÖ¨„Tz‚@TФ#(Ž0…– üÝ¡…@tÇËÔÜêù1šHI(ÑЈ¾)ü!£ï&Õ¨DC=a)»OŽ9’ÚXºß‡Ø·fš „@ÑðwÆä«%”±4vÙ^½.%{`«½É–­YKvàs¼æì³Ï¦tyÒÇûòü’²½<þ§÷íA.ü¸æ²¥“9®=Zð Æ{»6¤íNc+Å_SÚ)E ˜Â+èv˜Î¿´ˆÿÏþ|y ¹¾qöf²Û Ÿ:̉ñûKëÔæëÌíOÎä™ÿ_~ϯòÊo|jñÁˆJp¥w D% H:"âSh™ÀßZDgœ¤ä*ï| nM(áz¯¿tÓùC êï#&´Q‰By',%›±É7ß|“Ú¶iÃÿ‘½è_x¢±Á2¨a(zƒþéùOš\LFxÙ»§~JÞ)ÇGûï2„ì!‡B¶¼éã}y~IÙ®ò/(à5OÇÿã0r¡Mæ,²ÃOàßæ÷#Îé¼;m¯{ˆ¬ó›)q1] ˜Â)¬vHç¿yÞVBó]È>5ôé°PZ®:ÞZ¸……A *A•Þ •€"鈊#L¡eÿôh!Óó‘ºW=ßB FIé%JáÕ"?bx}ä’!•h¨',e·ñÉwß}—Ú¸bÙ d/ïÇO•2¾áñâBYO¤À]÷D­àŸ ‘l×­ã5‡—^Îïs}ë­o“3øLIï}º¯ýðÿkô§¶œuÖYd?>ãÞ¹Yòû›>É3ˆµ®mIùrwå5PÚÖéEîš+ÿ–ù<ƒxäúcÈ·g~v'MÜo¤¾¥ j¦ˆ qéQ (’Ž@ 8ÂZ&ðO15[¶&ηˆÑFTº@‰–VðµIç|Ÿ0±DD%*‰–é¿0L›6Z¾qãF²……üž¨¯¾úŠÒK—ð.«Æ÷ó/±uêð{ÂÎ8Ý̵¸P¦pEþî‘#Oªü“plOôêÍãÖÃ&жúõëoßÄ)ã}¾šXF‚ÿ¼ßx­áæë¨™mã3ƒmêòLÅ~õøüvÅGìÅA/´5Ñ1m’.PÄ€.§¡ÒùoÉçÿËŽk:‘‡Ï=ú\9žšµ91Þ˜~}o 5D%R:¢8$}€@ñ…Ï÷ÁàŸ!bj.¶lMœo!£¨t-­àk“Î1ø>ab‰ˆJT',ÓaèzÔÑÔò…?Ï$[³ Ï ÆŠ·QºJ)ÿâšÇ¯£‰•Äß[óG¯íX¾²µâ¹I\(뉸ëឨü$ØÞqÛNF_:väñ.9—ÿ””ñÞ¿§f– ò_±b5tæL>¯ÍŠÛ§|GÛ¿ž<‘lÍóLrF• 33¼UÒŠáx+lžtþ[ðÓ†;¬â§J?ÿø úlBu¼1¡M&·Q‰Ž”¨I_ P|áó}0ø'#„@LæakJ=ßB Fié%JáÕ"?bx}ä’!•h¨',e·qÉý[îEm:mñZ²û”$ÿ¢º%Ækxn¨Êk;6llcœ;6Ê;Òˆî;¸GÇ:UM¶óŸ:•׬|÷ýra>¿×pÁE”^´0ž^Èw@ô¿ñß´ý¦›¥ÂØ6iã}`ŽR[þÓ¦óÚû¹€<È>ÅG„5Cº@†{§æJç¿e!Ï ¶üòíÅa/í䣉ÜŽ7&úe› ÚÒ:¢@$=°] x‚áA¶ó‡@Œ°3 ªÊíù1˜àJ(ÁPÐWŠtþˆúúN”5C *´Ýž°”õ%8°ÕÝñ·…dÛmã÷E]XºšÒ%Åûkk››Šm¿PvÃ"ʼà%íë²ÿ§Ÿl"§Ï?›Ç§.…üþºz1§vzŒg¼qårï½;à p‹Ôñ>@Z‹òÊÿÇî§v¿4ÿy²¹í²µú!­réEoµ½Òùo]Ä3ˆ/í@®½<üÕE#Ó^Ç#‰ Qˆ d©Q $’®Ø.P\ÁÐÙvþˆ:•€*½žo!ýWº@ñç½þ£¥ó‡@Ô߇¢h¢BÙë K)F[òÈ¢ºçÍå÷JÍ[¶7¥óªñ/õÚæ°bÛ/”bˆ<¸GŽ<©ÂÊÂÿ¿ŸóLbî Èÿ»¶ñûXÆø)Ìß”ñÓ—×÷8Žö¿öî;Iœ‚NHïƒæuy~ùŸpÎñÔ䥹?U­‡™D'1”.Pœøhréü·.æăF˜GŽxÕdÜÛÛæw¼Ù^P%ù¨Zz‚@TФ#•E 8‚¡!Seᨡs\¥ßó-¢·àJ(Þ¼6ç(éü!ÍéKa¶Q¡ë÷„¥yrÊ”)Tç Ï÷&;ìq^ëyCÞ‡„%²bƒâÿÆÛ¯S›‡Œã÷fV=Š×´®}s)mßü¿'8û˜](Ýè´†‘ùhbEÒЉLÝ´I*ÿ¢e¼öpíCóÈÝ×{°×ƒ?˜¾Œ8É †Èó5ÞDÞpMB *à¥w D% H:"PÙŠ#(fªlü!#ì\WÔùÑ]¥ w^š›[*DsûT-ƒ@T¨uÂRŠ,9k?½ôÙgzR?”YÝATTÙ.”ƒ`DàEïeTþ#_å5†¥±+Vß¾W&AtË­”ù*?ï·üùIûƒNHïƒæuyAóïyѹäÂg¾Kv@»R²ß-åóàœÎM(]÷~z.%*á‡TbK¨¤ñ/^ÁO—^uÿ\ ÁÒþü•ˆÇ'ó«Òׇæ¶%;þk¾$±ßôxcŠ_aµQ!+½A *EÒÊ"PÁЩ²ð‡@Ôй ®2èó-¢³`K(μ’“KD9}+È–B *4ƒ>a)Ňžœ3gÕñè#g’ö8fC‡nA•E ˜*Ûùÿ0©˜ÐøÑÑdï¾ûé´¡˜?Ÿg[´h‘6ŸßÒÇ{¿þë>>(þÃJ®Ü?ø²ÅOYlÃKc{ çµøµ¯ç§ãæ6–õtï ã$M í¿îò¤ð/X°•P-}ÇãÏæ™Ã²2&X·q›¼ŒŸüÆ·§ÌàëQݼõ5Þ$ʳÝB *–Þ •€"鈀íÅ™l稱s\uPç[DwA–"PÜy%'·þˆrúT-…@T¨uÂRŠ,™øåýž!ݩΧG`12ø‚+²] ˜[ù¯]Ëkû]Q›Bðæ[ß éã½Q0=4Æ/ÿN¢Zw-â÷i¾Þ}3¥g½’øÔFU~Hnì çy”‡¦Zuˆbôœ1Ù6þÇY÷ñJjõ–7͈ÿc•Æ÷çñûD›7mNû33y¦~Ó^³8éG~&í4àÃïxc€ ‘6QÁ-½A *EÒ[Š#ç Èd+D:—ÁMð{¾…@ô\ÓŠ7¯äe:D9})Ì–B *týž°”â"O.Y²„ê¼õ–Ⱦð\â·ÔÈ›â©B[/”=Áˆð pvŠªlåßó<^³2løDòº~ýú)¼×·Iúx¯\05ûåßý„c©!ùóùéŠ3_HéýšÔ$Û8—ßÛöÓživÿ>Á4\x)¦ áx+l¾tþ…+ŠÈǽfµ&ûÞKïWè³ üŽ7&øe ÚÒ;¢P$°U 8rÞ€L¶ò‡@4 sÜ¿ç[DoÁ•.P¼ymÎQÒùC šÓ—Âl ¢B×ï K).òäŠ+¨Î®ïJö•—0ƒyVh«@‘ )ü7oæÁyóùä%Køé¤‹³]´íŒŸø½Xÿ¾åu A‡G é㽑P]4*,þ‰×=Íœ9“Zóð³ü”Ó‚¼–*«&?mÑES­Ê*] H†tþ…+yüoù3ÏÈ¿ÿÊh! k¼ἇFB *Фw D% H:" E 8rF`&)ü!v.ƒ›Öù1}Ð¥ ”ôÞ™¿W:DóûX-„@T(†uÂRªñüᇨŒÄCi ù©QkÖ¬¡í¯Ž|€l¯ž\UQ¯Á(,ä€k¯n@;jש ù”r¡l®Àšî¡ôTþ-šýJþ•Å×t5Èäñ£Î¶ø{æ¶ò cb<ý¹n-å¯Y“ׄy‚âARÆûh-:*þùùùäg«øéÞÙgñùP«ó+—.P4¢ ¤jéü Wñ b‹yqôHÌ Ò1 +Q HT',¥Z×ID×Èp@RJDï’ÂQt73®ñQo!“C/] ${#/%?¢¼>ç¥Åˆ µ¨NXJµ®“ŸŒùˆŽ¹¨g/²ûdf“­RÂ3„¥Eü ~ÿ°«Â›cŸgòöé?íEù[µÊ!kʇ” eSxÕpФ·r¤ð_»†ßk¸÷^¿‘£n­NöÀRÞßVó}ôÝ7´i¿ýöKì2ÊJï‚`c¢æÿâȨõC¿á;lªv0ëšÑ¦-Jº@I뜀Òù'b³i­ˆö˜×Æ ‹E=Þˆ€’¦‘ˆ )Q ’¾H(¾œ4ø`)ü! îD›õù‘;‰t"°«'5Y:ĤpZ›€@TBõ K©ÞurøÃÐ1o ¾—ìÅë¶¥,ãÖêëiûد[m½_nÊ|º7J¹PÖÍ)èúÁ=h¢îʓʿKÇyähíŸxíá™%|GÂ#µ8=äWiÿqÇçHD¹¥÷a‰¬]ü{÷;|üi)dsw7ëNš° ] „Í'ìò¥ó/ZÍO«Þc2_O~ôúذ‘R¾®ñ&Æk(Q.­A *DÒ©Å“³$•?¢IP“to!ó©—´º±¹ ÞbOS!õÄR×x£Ç[ÿµB * ¥v ‘Ï=Ož<ñ7‘í¿Ž× ®µ‘Ò/ŒÞƒl‡ŽÕÈšú!õBÙTžNÛîNI…“O*ÿž½ùiëð{'z—U+â;z=r?¥/ºè¢pÀù,UêxïÓmc×Å¿  €|\{²y¥^‹¸xh>í¯sJC²5ö6ûüItð!] 8pÑè,Òù'f›üМ8}ó£y'§k¼IÔ/ÍB *“Ú •@"銀TâÊIƒ3Kåhp§Ð4]ç[Ä|ê˜AÔóO¨‡»®ñF·þk…@TJï@¼ýytußóɾ5nw²‡‘§xjfRê…²™4· ܳ #§4þ·ßÉN:y8}éÐgßõ6¥ûžÏãÏÿù?Jßq×]|€aŸÒÇ{ÃpºnŽnþŸñ9µùºç¯&»m/žY\4t>¥›Õb—¶ôhB_êZ›7ÿ”.P„ãIç_´†× îö]3 Å'oÝãH;4qÿû*½A *EÒiÅ‘S‚2Iã(¨sÜTÝç[Äæ÷{›¨'¶ºÇ=^{¯QagKêÜy_òìÓ±ü~²ìl~ª â®qIiÊÆôØ p÷. Ã¤ðe$¯m.˸‚<ïÛ÷Ê”æÏã§›V¯ÎïIlبQÊ|º7Ú2Þëæèµ~SøÛ¥¹°höd²_öæwÉ/®quKÚž»›O;•.P¼ö7SŽ“Î¿hÑVB¹î‰d.çg]˜Â·¼v˜2Þ”×>Ó¶C *±¥A *E2-)%­‚wJá(¸“ØtSηˆv‹›¨'¸¦Œ7z¼w_+¢ÂÌ–tÚi“g¯½RH¶Z5þ%Tq׸¤” eãÀùl¸ûèópÓùÿ0‰×œŒùèhòtÐÝOûôØŒÃmï͠龺ø¯]»–{R—#Èv­¿ˆì £6“ågóÆbUR2Öþ…¶üÅ’OéEz¤ò/ZÆkt×>Äwˆü|Ï´ï÷,/Ö]ö'¿oÛÔøèoLåQQ» B¶t D%°H¦%`º@IÛx všÎÑ‚Nf  ºÎ·ˆùÔðS=ÿˆz¸ëoôxë¿VD…¡-èì³yMųOñ½áµk§~Ï“â¾ö¤éÊÚ…Ôp ¬ÃbMå¿v-¯9ìweòäÍ7¿q葌l¶Œ÷2hïÜʨùo+æ™ðÕù}†ýÚo£FÔŠÛÖ–_w[ÃK¬b?à5ü͆ì³são‘*P#Ojº4þÅ+øN´U÷Ï%?–öç™Ã„SË7ñ·ž«A_V®5sMbÔãM‚T ¨DΖ¨É´L(imÑNSùC ZÔÉ t%êó-"wiÅÀ®ë«IÒøC ú ·Øƒ!•ÐE}ÂRª,yÞy¼V豇WS™ dVv˜™z¡¦Ï&” îz£ÿ²øâª 塯[·ò/ÂK–ðŒÊâ%<Ó2|¿?õÉ'' úõëëpí¶Œ÷c‰¬¸¨ù—–r?ñÅÉÇ™?N%;ë§)œž=‡ìº <²ëAüÞÃ:ýv£í¶|H(¶pOø!…ÿÖ<•¾øþyÔôçOæHI|±4~>IØõ<Ñ»á¿U)ÿÚuüTµ*§þë²Q7ºü ª^D…¤-Q ,’i D%PÒ6¢?br'³e¼OöJN*jþˆÜ7¤9=Ù]K¥ð‡@tWÛrC *ú„¥TX²oß.TÖý÷,'Û¸1fƒkaAQ  ÑâRTü§Mã§ÐÑ=ŸÚ½n¯1,(⟂wÉãµÊ%œ-vêy½(ßS/¾ˆŸ¦bËxoW§í1•ÿºuëÈ… ú÷%;ï€ßÈæ42c&Ä)ßòòI(åµ_úvÓù—•ðù`óT~*éæïø©¿±ø­'eñ_³ÿä÷‚qØ‘’ÌL~Z~q ŸWö moÔ¸±!3u¼1NŠF@ *Plé@ˆJ`‘LK *’¶•xgTü!“;™-ã}²WrR¦ò‡@”Ó‡$¶QOÔLoôШ¸VD…‘-袋N Ïî¸uÙ¦MùilŠ»Æ%£ºP6ÎqÍ w½ˆŠb­aǃÿ ‡÷YÂwœZ›`ZY¥g}0Ù±¾HÚoK–ñ^jÞè¡R~­ˆ [:P¿~Ýɳ¯ã§²µl)cíDTÊJØ+}Üõv]ü\º„Ÿ>j Ù˶T'» ŒŸfúFó”ž1—g)aч-ã½ÔHá?fìB|ó[ÿG¶ê1¼ÖJ*wéE*÷D»¥óß>ƒøq|ñ#Ì &bk“…@T¢)å„¥4{§$âNH°! ]%M“*Õ.]ü!»Q??~|¥êo¦8+å| hJ±£ˆzâ(e¼ÑCgçZ!&Ò:Ј#ȃù}3EE¼vèƒ÷GÒöÚ¬$[-×Nná§SpR Ú~Ò©µÈæä˜±¶B×…2A¨Äà®7øºø¯YÃkIN=™ß{¸èW/®ßÂãÁÀ<Þ¿zã½€Bª]ÚxmÅJãõ͈ÕçUÆ‘ÍÝKÆ9j€¥ ÕiiéüK6óy¡Ú˜:„þ›¿iãn¨ˆJ¤u D%€Hz" K xj¬…éâˆDÿNÒηˆ:{‹=uC ꉥ´ñF¥¿k…@ü›}“Ör²ùé¤ÇfðS«–”’ülÂXŒ÷ÆbUb<#ðCÏ0^~+¯-ºîF¶ mI]ÊÚ6¤bp×]ü{öæ; †ŸHV­äÄv@é’RO6nÞLéœ~ï•^ZÁÕ.m¼Îs3J’Ê¿]§ `•¾<“’‘Åç×M3ùNž…O.¢ý{\ÕŒlÍ}ym¯Ôc1éÅŽ^Û!Éî÷¹ðhß}ò½W‘'u¼‰Ò•A îã_¥u D%€Hz" K xj¬…éâˆDÿNÒη Vˆ °^@ z¡æÿ©ãϽ•¨p“ÖÊÊx Zü—ýKymaíXòSÖ^®ÍO)<ëöºäñ¥ýë+ž›‘Ôu¡l†÷úZîúØÿ¯æ¨ùß~'û{ÒÉÃéK‡üž7Þú÷gïs{Râ©çž%[£/çýMÚx/›öέ—ÊúÓÉ™ ÷%»iý² óy­îÒõ|^®yMKÚž»›Y3ïÒ Aü!ÉV¾³$ç=>|?îÑ:Þè‚ ¨—Ö •"é‰@ÔÅS#->(jþˆÜ™¤÷¶ý Håh[OŒÖÄhy'j“:Þ$Úµ…@TˆKï@ jÕ&nßR…ì¸êd;_ÏÛo¸eÅc³’Q_(›å½¾Ö€»>öÿ«9*þ¯Œäµ#eWÃ}û^©×q͵Kï5ãó]½TþsçÎ%ß;u<ˆì€ö¼F÷†ÃãÏÄhÚ¿ÐÖ7£0 .PÂ`e™Òù—p?Ï~»a›4~r”ø<×%u¼ñì°Ï!€Ò;¢P$ˆJ 8jL%ÌÄäÎ%}¼OöF^J*Dy}ͤC ꉆÔñF­X Q!oKjR—ßOÓïb^ûpÛ½OÍLFu¡l¦÷úZîúØÿ¯æ°ùÿ0‰ßs8棣ÉÑAw?­×aCj·e¼7§ëfHáŸXÊñÄÃÞÏS„Ÿ½‰Ò{Ç—ôÏà‡ÇŽý€ŸÞtÈ>®™Dq€t£0ëο´g3^çëË©_L W`eKosØgAˆ @[:¢X$Ó[ ¤­;!5õ[Æ{Mø|W+…?¢ïP£€@ î#¯RÆ›‘¤­ QÁcK2äFòìˆï’=¦“YïaR°oOB¨lGép÷N•…ÅÿÏ?yÍaÿ|GÁo~³SÝ•yƒ-ã½ÔJá?}ÚTBÜéè#Éþ£%¿w¸M~:xÛ^Ÿ6÷¸±´½cÇŽz5¬v[Æ{ð:nŽ­ü/½öbðuí d«µàÿOÇ`BÎ(U „Œ%²â¥ñ/ZVHlÖ åÂÅWðyE¶ëcñ÷"þø íÚ£©Yw¬Ø:Þ¨q* ¨´¥A *E2-·%maØéš€[þˆ®§<À–ñ>¥s6ÚÊQ@çÓØDD=ðmo¢ ¨µ¥ ÆïkÚ}·aäaîµOÍLº½P6Ó y­w½1óÊÿÉÇx-â#w­"nÛ”üþT|éñ€gž¤ýgŸ}¶^G «Ý–ñÞ0¬Ž›c;ÿý:¶&ÕúñZ`Ç`BÎ(M „Œ#òâ¥ðß:ŸÒ»ø!^s8¤S±*e+‰O$&Ò ;øÛª”ï×?òÉ6j¼+Yݶ7Aó…@TˆÚÒ •À"™–€W’¶PìtLÀ+DLjSf´e¼O需¶ó‡@Ð 54Qô¿ª´}¼ šjF×®]ã¿]´Ìò¦M›F oß¾½Lâ­^²„ßK“µ€¶4lhÖ/˜åÁ6Ÿ×þ ¼ò²`{À=¨.ŠôËé2~šÜ/¿ðÿOË þ_ŸÁ¨·×žô¥iÓ¦.ZeV[Æ{©‘²ÿúõë)4³òš¬ÌñHÍÛ’ÏãDµæ8Ïê…ñü㪠´€Ï+Åkù©Ø± ¥ÿòc¬QÃÆ„1#ß7ñöZµ’ïlÑÁüuÚ>ÞÍQ!jK‚@T‹dZ~JÚ±³B~ùC Vˆ8e[Æû”Î Øh;DPC!5@ÿ«JÛÇ› ©âS…¨-SÐ/¼ð,y–[u Ù^=ù½LŠ»Æ%½Þjgœ#Âîzæ•ÿš5ü ïWÕ%Þxãk²û·Ü‹lÍEËÈrñd>œ,>˜€-ã½ÔxVþw?8ˆBôÆò‘ds÷ç5ZjÜ6ÎÜD›j¶‰/V&lÔü^ÓRnqôêŸéljçŸa,|†¿Ìø†ßj:÷Ê2ÞD…¤-Q ,’i x(i ÅNǼò‡@tŒ8eF[Æû”Î ØXYøC èŒ61BØ;TUYÆ›\öõQÁgKzå•Wȳ²’[ÈöíƒD%ÔHî@À«@Ù¡|õAÀ+ÿžçñ/¸ÃŸœHµ×«W/©§tíFéƒâkªÝ_ÒþÊž°e¼—ÇÊÆ¿sc(Tk»® ›U‹× ÿ9b¥×ÌÜLvÿðšá¼ÝÃy¢xB”ä~ˆçŸA,xšc:óÛY"‚QÙÆ¿A@TÚÒ •À"™–€W’¶PìtLÀ+DLjSf´e¼O需•?¢€NA!#€œ¢ŠÊ6Þ¤@àj¢‚KZºëÎ;ɃõkÖ-ÜÊO'ûuö¯”.Ø2lãFUx!ÿôÓ¬i6¥oØl“&œ¦„ƯʛlEÕà®7Œnùßv·÷”SŸ¤/‡~dZV¯æ÷%Ö¯_?m¾Ê¶SÚxo[|*ÿ… R»×…ì¢éóÉ?ÏËÿzmûçÛr¨±‘9Xö)^ Æã±åÉmôí—ïg‹ˆPeoüQ!(­A *DÒ·ÅS%8¨\nùC –‹ÒÕiã½+çd®lü!tÊšäUT¶ñ&W› \Ò:Ð%½z‘?¿?†ì¾Eü $¯lˆÅ²ãï¥ÉŠÛ™¹ü>›ÝŽË¡ü¯½mÖ{ÑÜ^(+áCÒ#p÷. Ãœòù~jiF•+©æ>}®¨•³iã½mQªlüo½ñj á¸Qü”ñO{ò‹ä–mäÈvzïäivÏ>¡†Ú*¤ ·…?fCì$ ¨AÚ Q ’ž8(ž ÇApʱB”®2Hï]9' seã( SFÐDÄ §¨¢²7)¸Ú¨à’Ú®¸àBòdíèOÈž¼‘ï O¸71¯¾–œÄs‹Ï¿¶Gb—QÖé…²Q¶ 1à®7ˆñÿþ‡"jàÇc;‘8è)½ ¶¤v©ã½%øc¶ó_ºt)…ªëч“íÝŠŸpKž9LÄqÔ/üíºùüþÃFý›'v…bm(¡À‰ P[øoyН3g}Ã8##¤E³ÅÄöñ& LÛ‹@ÜŽ‚¿Hí@ˆJ ‘tE "âª0dvM "þˆ®‘::@êxïÈ9™lç öè@IDAT( jh"¢èUiûx4UD…¨ôôŸ¼Æaæ #ɳfżæpÅ1üËÎÛ5S<6+YÑ…²Y­µ§5à®'–“&óLÂ%—-¡üëºdÌãÿÛY?Pº$Æk…?ûRÆû¦ôÐt_«ôñÞ½Çfa;ÿW_~‘€ßrÓd—®àĶ{Ô¤ôþ»ðšâUë6QzF›†dÆ–!|Ø"PB@I‘¶ðOÌ ÎüšÏK™™™‘ðóZ‰íãW.å¨‘Þ •€"鈢#Lg‚@ ©«¥÷®œ50³íü! ìt4 QOlo‚¦ ¨µ¥Ó½yV´ö²ïOØMñÔÌ$„Šž¸€»î5ªó/¯Y<‘;"‹Ÿ.\§ˆgü Êø©Ä‹ZïI œût,Ùé%?‘Í9ß[V\m(añ »\[øo|‚Ÿm1ë;^ƒ˜••x~~ؽ•_ÙÆo”þ> ñoôÍ–¨É´ Óâ m'bhhlËxïÈY3U6þˆvB M‚@Ôý¯*+Ûxã—2¢BЖ4qâDòìóÏ.#;ðÎªŠ§f&!TôÄÜõpŸ8×ué6Ÿp_f²c<ƒ°2ÆS‹Öç™Å+–ëi¨¥µÚ2ÞK ø'Gîæ»o¦ £7½M6·5ÿß'çòŸ²E ø'¡§éüKVòÌá–‡ÀÇžEöø“»ëê°VŒ7AųA *¼lé@ˆJ`‘LK1-žÐvB ††ÖQÁ¶Œ÷Žœ50ø'1™‡­)D=‘ÅxãŽ;¢ÂË–ôí·ß’gŸŽ»˜ì·›}ox" * ÑZp–·Z[—®óhÓìéüËì[«Sú°þ¿½$¶ŽÒEÛ’ßoª–ƒ´;¶Œ÷î¼6'7ø§ŽEÇ:ÐŽ‚Ó6­’ìšDé%559[¥ò/ZÂOÕ^ÿŸ¯ô+%è]GñÓ·o¸ÿJŸp2?ôˆ`¼qD…—-Q ,’i @ ¦ÅúNÄЧ¬À–ñ>¥s6‚ê A ¦æbËVD=‘ÄxãŽ;¢ÂË–4yòdòìý÷.$;xP°¿@*ØKB¨†ÒUAàî Wà™ë8—Ê<á„>d™¼lñwSÉ~UÄkÍ絊 †ûž4ª´|Ø2ÞK ø§ŽÜœ9shÇÙ7žI6ûŒÔù¼n•*P¼úkÚqÒø-ã;[Ö åóÔâ+xæPåzâ»õhÓ•Ÿ"{Êig©Y´¦1޸èð²¥A *E2-Ä´xBß :â”Ø2Þ§tNÀFðO$ÄÔ\lÙ ¨'’oÜq‡@TxÙÒ~üñGòìµ×xFâþ{ø½jŠ»Æ%!Tô„Üõp_½º„*nsÀR²Ë—¯MjÈ}QzèСdÇMø‚l»ví’ò!á€-ã½7ïõþéc0âù”aØÔGÈæ–|@'—¾°˜¾4êµ+ÙŠÖ,J(ÉNËOIá_°ˆ×.Â3‡WÊ®$ÞïJ‰¼V¾4Æ×™ïÎá~úæŸR°íp¤AÃxã. ˆ /[:¢X$Ó€@L‹'´ˆ¡¡uT°-ã½#g Ìþ郘žÔ½ˆz"‡ñÆwD…—-hæÌ™äÙsÏö$ûðC™Š§f&!TôÄÜõp?÷<þ)vÅŠúÔ€ &¤lHâ̦Äãy£-ã½gšg8óŸ¼ñ·}ù¼¾m9¯ ›ó(¯UN”rÐsmèkFfú;†¤”„_¶Y)üK¶ð.+ǯædp¿Š›XÉtÞÜÿ_WÑ—ÜÜ\²™™|½™8_uîÜ™3jþÄxã.ˆ /[:¢X$Ó€@L‹'´ˆ¡¡uT°-ã½#g Ìþ΂茓”\ˆz"…ñÆwD…—-(±Èý±Çø)hO<šþEƒ¶$„Šôà-÷[oçúNíþ$}¹õÖ;ÉŽ?žwà3¶Œ÷‘À ¡ðwuÃ~âû7¥šWã§?y,Ïðý¯ùj~ï>Ž ”"P9#0“-ü _ä;`¾ýE¡fÍšFGã»ð@ *¼lé@ˆJ`‘LK1-žÀwB ŽÔS¶Œ÷žœ7à ðwDgœ¤ä‚@Ô)Œ7î¸C *¼lé@óçÏ'Ïî½§;Ù§žÄ ¢j$w ¸Œ¿¾üÊ6*=£ ¯ÙèÓçrJÛ2.”¢Á=¬Ž ÿô¨fÅŸ%pR·N”ñÿÝHöŠöÅdGýÂÇ_7¿}iÔ¿9o¨àÓR›Æî¶…ÑK<ƒøõûßëZµjËü Ãxã.<ˆ /[:¢X$Ó€@L‹'°ˆ¡ ¤ [Æû@`h(üÓC‡@LÏGê^D=‘ÃxãŽ;¢ÂKZþøäÁ„øÚ¥¢~oMâ–”yófÐþ&Mø—ž¢"~qÍ–Nx® í?úèê =Ip×C ˜Z¯­X´˜á_·³åôÆM§PEŽHªPÚ¸“ÔxÁ p×<ðOÍÿ­W_¤×ôç; íÆçõ.-8ý<¶·M`ûb݆ô¥ÑilykùŸ¶”ò=4{-ü‹^fÎ_¾ó}©S§ŽÑà1Þ¸ ¢ÂKZ‚@Tˆ¤'æž°ítâNHŒÞ m¼7¦‡Æjhˆ©¹Ø²QO$1Þ¸ã¨ð’Ö~š6<èzÔÑd{V!ËÏ4‹Å²b¼ö0+îç²*üÔ³I{ðZ¨¿íM{﵉gÓf Tô woÜûö^D¾õÎz²¹Yüÿ¶KÿÖ-ã÷A-ÝÊ3ö/ý˜ò{ì±IJw’/8îzƒþ©ùðÁ´ãÓÙÎüq*¥gý6—lv&'Õ«ðû3/؃¶×ÚŸ×"R"͇-%‹Fï²…Ñ+Œyâ¨/éKݺuæŽñÆ]x ^Ò:¢@$=€@ô„-è›)GIïMáT;À?5IÄÔ\lÙ ¨'’oÜq‡@TxIí@¿ÄŸvÖ¹CGòè¡‚œ$ÏeðŒá+Mx-Ã/syæ0)“ =AwoÜ—-ãµ…íÚþAôÙZl»’Ä>—ûR.¯ý=çáûhÃ%—\Â;âŸRÇ$'&À]oÐÀßÿåË—Ó_Lø‚ì}oßC6ëTžY¬¨T[JE~šºßþÅ#™ðoN¤/õêÕ39µ ã»ð@ *¼¤v D%Hº"è ×ö̈ÛQˆü"u¼ ;E£Á?› @28 ¢žà`¼qÇQá%½-Z¸dïÚÆ;Zw¥-ßWñج$„Šžx€{0ÜOTu2Ïžÿÿ{?Æ3÷ûÝt-í8hPR…ÒÇ$g%À]o°À?þJ=7çi²¹%ßÁ Öb‹@Qý’’¶…bñ¿oL ôõë×7:oÜ…Qá%½A *EÒDG˜*ÌX!"£2Hï‚é¡1àïZŠC S@1x¢žà`¼qÇQáeKZŸOžu:t²ùËã/PRü5- ¡¢'"à ÷—_áµ¾Œâ§ .ù~:|Àº­d Î:™ìËo¾‘T¡-ãN’Sà®7Hà,ÿ“{H.:4~'CýÔ3‰¶”`éEWš-ü7>ÍOÑýúýoÞ.»ìD5a¼q QáeK‚@T‹dZˆiñ8Þ è•mï€é¡àïZšC ÓÀ1h¢ž``¼qÇQáeKÚ¶g2ºŸzyøñ˜Ä›‡ KB¨è ¸ûãþÝ÷ETÀ'ãŽ!{×ÀdG¿÷>Ù>½z‘m·?ÏèOœ<‰Ò‰[Æ„?R,¸ëøËåÊ•T`×óù=«U{§.?!PZhJ2sø}­©sckÐü[ÝØ<è¢#)oÛrž9,~<Ÿê;÷‚doü`$õ{­ã;rˆ /[:¢X$Ó€@L‹§Âˆ"22ƒ-㽑p4 ü@r‘Ñ,Y!õÀÇxãŽ;¢Â˶Ô­[kòpü'©×"(îkOB¨è ¸{ã¾zu x债dßxãë”Í›7¶yÿ²®ã§™&2Û6î$ü2Ý‚»Þ8üßþàm*xàè;ÈVýGò áì›§íyU¹þæw´â/lð.©±h ?{ýc|>[ПÖ}ÝÄÚ¬a§ËÉþçN~/g¸Ý—ŽñÆ3D…—mQ 0’) @ ¦ÄRáFÄ Á¶ñÞhØ)þ) ° 1ˆ!"Ü4Ec¼I'Å.DŠmè¤yÍÓh^ ËÊ2û'B¥CF”wo ÏíUFŽxêK²uëòL¢ÛÒlwÜú¯+?¸ë"Ïõ‚¸ü/½îRªà›šÈn³Œìæß6“Õàg4¿ß›Ìñ6i±h¯9\3t.¡Y|Ϫœnú¦mªÞáb²·z@Í¢5ñÆ~D…—mQ 0’) @ ¦ÄRáFÄ Á¶ñÞhØ)þ) ¸ 1@˜ LEa¼q믬ˆ /Û:PíÉÃ7^å§,æå%¯EPÜמ„PÑpwÇýÖÛ9ÿ©Ýùi¥‡~„»”ܶ;Š{Æ&Á]ohÀ?\þ¾ø/Upüq]ɾr×7x"ßù°¦I ÚÐh@sÞÏHHˆE«øºqÁ]—SãÍ¥Ü}b¥ü°üXÕªy´¿,ƒ¯/§/ã 7Ýý0mï}Ï(F7M%oÒÀI± Qb[‚@TŒdJˆ)±”»±\4¢vØ6Þ‹‚ÿWcÁ?܈A †Ë×kéˆ^Éù;ã;~ˆ /Û:ÐYgN>ÿ ¯9¨U 3ˆJÈ‘ü‹bún°q#¯¹xý þÉ´Zkè€óÏï—þ@‡{mwº­=¸ë ø‡ÃÿßWóÓ$'úUðÑëÈV‹?̼åc\oÑ?v¡/NoÄð )±,>U¸ú˵Ì%#þ ‹øedédN_÷Ïëiƒ ÈV©R…lÆ É{,¿—“?0Þ¸ƒ¨ð²­A *F2%Ä”X¶o„@܎ª/¶÷Ò‚þáD 1®A• Iwå`¼qÇ Qáe[êÙó(òpØcü PýúüËŽâ¶1I=¡¨ìÜ{Ÿ»ˆÀ/_RLvIÜ.]Å3†ÅÛxMž͛Òþé¿ç“ êöq'(.a—îaN_>ø§çãvoïsN§Cf|7žìé{m%Ûv¾¢ OÆþñÏüÔ¾pÚ_÷ÐZdñ )±"ÅoqŽŸüˆ¾4mÊçÇŠŽÓµã;òˆ /Û:¢`$S€@„@LÙ1,ßhÛx/-\àlÄ ƒåViˆa‘M_.Æ›ô|Ô½ˆ Û:PŸ>ÉÃî]A¶qc~ï‘â¶1ÉÊ.Tt¢²s?¼Ý„¾Æ\ž)ìV˜Kézñ§²ñïï±ØM¹üT·µ›6*ÛÆ@á„X¸‡×AÑàï’‹,¿ÿþ;åž1cÙ™?ÿÄvúdgÍšEvîÂ¥d[ÞÙ’l^“²øˆ†€5qÏDö!kÖ¬Y4=Ö‚ñÆ8D…—mQ 0’) @ B ¦ì–o´m¼—.ð6bˆÁò «4İȦ/ãMz>ê^D…ˆ´T\Ä3‡µ;ˆ<ÉÍæÇ”RzÉÒ…dkÔàµU%ñ©Âbž)9ó¬Ú´ÿ‰á»‘ÕýQÙ…Š.þàÎ䯹œYŸööfÚpé†êI!¹8c=¥×nØ@6/ßÿ””ÉCBÚ¸ãÁE#w½a=ü>úhªxC-~ºiö9zÚQYkµG rß|4}iÑ¢…Ñ!Åxã.<ˆ /iQ ’ž@ 26DOÝGìAÒÆ{± Ëi8ø—&ä͈!® xÄ …´ã;°ˆ /i¨¬,ñtEþåæÐåü´ÒVÛøÞðĊìøûkoAüO)ÿr¸eS["“Ãù‘'!T"GN‚{2÷3Oçÿï>çÿ§» «R†ÕJÈþwêd²­ZµJ>ÐcJÚ¸ãÑMãw½!=üÜû^Ô—pÿCÈæ‘¸bÐÓ®ÊR«5ñmŽØ{~@_öÜsO£C˜è÷ãÇóS~n¬ƒ@T‚ ­A *DÒÄdlˆÉ±65D…‹m¨m«fäáˆgùédG•ü^7Å}íÉÊ.Tt ²r_½š×ö¿º¡ýõ¯´„À¶qG D•‚»hþÂtQTyÜ'~9‘JðÔ•d³ã¢Òø{“—ÞÃÏ6ØVÄ/Tn~÷Þ.jEÖ[âÆ—ø}ÛŽC®í½·Ùý¡¼~Ÿˆ l2Äd1Û:¢`$S€@„@LÙ1,ßhÛx/-\à¯'båq‡@Œ&ˆÑpVk)¯ß«ùfˆJO°­Ýró¥äái=¾ {è!yŠÇf%+«PÑ…ÊÊýœ^üѧŸæ™Ã:uêh …m㎈*wÐ<ü„颍Џß|÷ÍTÚS_$»xÌr²·Íãå3kùN¤F×´ íøpG@º@,^ÂkP‹‡å“ã­8’ì;c'5õ£¢~oj»uµ Q!o[‚@TŒdJˆˆ);†åm聾 üõD¬"îˆáÆ1\¾å•^Q¿/ï¸ÊºQ‰¼mèÎ;ù}nÇuKžѱšâ±YÉÊ*TtG¡²q¿õv&Þ½ÇSôå°Ã:j mãŽV˜.*w°BÈ þ!@uPdEÜÿuÞTÊÒ©£É~Ò‹×jú’ ºÆ.ô¥Ñ™x>]*‹â3‡ëGþ.¸œ×¢¾4‹ŸfûiI'Úþ껟¸âUæŠú}TíR¢)Û:¢`$S€@„@LÙ1,ßhÛx/-\à¯'bq‡@ 7.ˆáò-¯ôŠú}yÇUÖíˆJämë@ƒß@uÄ{d;ýO1UBŽä_¤ ÄiÓ¶RgÿÊOU[´ˆßëµà~}Eþ\¶óçñ/áWÜÈSˆüLjøÛ6îÕA#Àݤ³€ˆpÓ­rÿù§Ÿ(w·.G“½·¯1ûç<Ž&Šêþ^&}yd²õ¯Øë‚€4X´œÏ««ä§Ø.¹’gU—_û•ŸqñÁæ#h×›~¦fÑšVû½ÖƨQ ’mQ 0’) @ ¦ÄÙFÛÆÈÀù¬Ü}ôy8øûèñp•;¢Gƒ@ôÎçaj¿÷Yœõ‡C *!¶­Ýÿ-äáA¾N¶[׊Çf%¥ ³h:otîO [CκyÙƒ‹²ÉÖ-á_¼ëÅØNÉÜFÛ»¹‹ì 7ÞHV÷‡mãŽnžNëw§¤ÂÉþáp­¨T•{—£;Ð!“¦L#»~VÁþ x±mÝ-´ýI<ŽÖºnOJçíÎkÏ(ǤÄâu|¾Ì¿ãwò­ý®ìb)?Ì6VÊ7æÄrr¸¿ddV¡ Ë7ò:§÷º˜ÒïÊjþTû½ææ_=¢"Û:¢`$S€@L‰%²¶;‘óY¸ûèópð÷ Ðãá*wD =èœÏÃÔ~ï³8ë‡@TBl[zøáAäá¾{?OöÄj*›•”.TÌ¢é¼5¶pñøjrzè«ÈÞ¶©ÙŒ8Šqe¼¶¦Î¥}hËãO>ߣר6îè¥é¼vpwÎ*ŒœàÕŠË,û¦M›èà™3g’1c§œBvâ×ãÉnë•E6wײøpG@Š@Lxµþçü5±ô'’c%?ð™õÿúðZþ–-[R¾ÌLΗÇk;vÔû¸„åõûÄ~ØdˆÉ â­+Q ©mè‰'î'›î>œl÷SyFEqÛ˜¤-BÅ b÷©Sù©¦‡þ˜ÉOÛ[ãŸ@çuá57£ÇêP¸ÙlwÂ¥\éàK/%¿jþñÊ}ãFžIêx*Ÿ¹ÿŒO%ùoR¥*Aš@,/8E£y1â+·¿JY<ðÀò²±Ýk¿7¢ñ¨@·­A *F2%Ä”X"ÛhÛ¸8Ÿ»O€>Ÿ=î•;¢GàÊaˆ ˆ’^û}DÍ3®D%$¶u §žzŒú<ü}ôx¸_îˆÁǃ@ôÇÏëÑ~û½×z¥¨DNj:òCÉ“åK—’-*æ÷mÚ¼™ÒÛJùé%ñ)Ã"~½M¬M+~ Ù_ñ{êÕã÷Ø(X"KÚ&T"ç³"[¸¿ô2¿)«ê"Ò»÷eIdzŸ~¥§ýôÙÙóæ&íו:îèâT½àIo倿7n~ Šûu·^KMù´ì#²¹{㩦Nbc‹@,JÌ Þü ¹}ÐA9q_[ž ú½6"®Q.µA *DÒDW¸Ï,uÜ DÄ‚{ÄÀ•êÀ_Q2(îˆÞè›ß£‚ê÷~Û!åxD%RR;ÐKO?Cž<þ7‘=#?­‘ßV‹eÅx@vÜß{kòÓÈÞü¤mi¿¯&¾[›±E¨hè±béÜ¿ý¶ˆ<÷Yg²wÝ•þý†³fÍ¢|mÚ´ñH,ØÃ¤Ž;ÁRˆ¾4pžùŽ5‚ÿŽ4¢û4÷ƒ»´§Æ—õ*$›Y5ù馅+x|ÞúÇÚ_çÈ:Ñ9k`M¶Äâx âóÿ÷Q>øàƒ ¤ýw“‚î÷—lç7D%®R;¢H$]€@t…+ðÌRÇÀAD\ ¸G \©ü %ƒæè.pˆîx•;è~T»L-Q‰ŒôôæH~Í×\Gž]³Ž×d%Ü| 6Ï>òÚî´©s×ê‰]FXéBň!•ûêÕÜ¿û_]¼~ýõ¯í¬ZŠçf$¥ 3èyo…Tîçôä5O?Ã3‡uêÈ\Ûb˸ã½ê9ÜõpOÔ þ ÑÚ°¸?òäÃäȃÞBöØ|ÝѲ:ÓÏÔl@ÛÑ(Z‡ «Í8–ãúìuÏáÃ;Ì0ÒÉÍ «ß'×bO Q‰¥-Q ,’i @ ¦ÅúN[ÆÐA\¸ ÔeqàïX@ÙÃâè,@ˆÎ8+¬~t;M)Q‰„mè†ëx-bµ¬QäéÀ{ê*›•”*TÌ¢è¾5¦q_¼˜ßã¹x ÛE‹â6¾}ú4~êîUW$g;¬£{§ :¶qÇ ´i›îiñ„¾üCGœ²‚ ¹ýh Õsò)§’}?5ý”V<ÃtÊ»üTÓÙG7¡ýu«²]•e£-qã›[)d/ßÁϾ8üðÃaÐýÞhgh¢Ѷ¨É” Sb‰l£mãNdà|Vî>ú<ü}ôxxÐÜ!Ýѯ rÝïƒj—©å@ *‘±­}üñÇäáì_®!{ýµ¹ŠÇf%M*fÑ ¯5¦poÜh69YVÀ¿<×Ï®Bézeü tõÍÌà³^ÛRRÊïû L4%Û6îDCÍ-àŸÀß=ïÇÅ}À¥P#¦þ÷=²ãÎ姤×H¼p9ÞÄ#xü®6 %mÉk’ßS9tX˜Ï3‡[†åSsj4$û˼¥F4¨~o´“6Qi[‚@TŒdJˆ)±D¶Ñ¶q'2p>+wŸ}þ>z<<(îˆÞè›ß£‚ê÷~Û!åxD%R¶u ñãÇ“‡Ó§ö'ûïÍþåΡ¢t 듦pÿqÿ2yÄ‘s‰ù¥¼Ve·Ï$&qMN}9÷²óÓyû¥YÛÆ)üÁ]o¤À_ÿ ¸_raoràç§’5g>Ù]jV%»w=¾Ãã‹?¶Pú€gÛ’­ìRbá">?oÆqžwÇ÷Ç+wŸ}þ>z<<(îˆÞè›ß£‚ê÷~Û!åxD%R¶u  &‡ß~}9Ù›oR(þëNš"Ttsˆº~Ó¸oÞÌ¿Lî¿ÏBqÜŸ¼vö¨2þezP ^£øêgãhÿ!‡5²@ë³mÜ Nˆ…{ˆp þ …%lîùùùÔêY³f‘}ñ­ÈþÒüg²y{š}'52Äi±h ß±³þÑyDeÁå|~VÍ\Å3‰gå;zfÏ[¢fÑš»ßku.„Ê!¨¶u D%ÀH¦$˜Kdmw"ç³"p÷ Ðçáàï ÇÃÃæ˜>0ˆéù„µ7ì~V»u•›ÑµkWþ)^W «wÚ´iÔ¢öíÛÖ2oÍY·n¸f ?rÏü~"o¥…Ô´é|{ûƒø=wá׈þGÀTî?Ïàø”m‹ÿ⼟’Wãa«Ù~­)CÆü5Î-ïÓ¶qGJÀ]o¤À_]Ü¿›ü9\¥Iü:ÄìˑЂ³%þÐjÍ;Î)-æólÁ|^CšÃ„ñ³o,VW™¼##ƒZRÊ;jÖ®C 8ð ÐXº)XW¿wÓF“òB *Ѱ­A *F2%Ä”X"ÛhÛ¸8Ÿ»O€>Ÿ=®‹;" ÑcÇõy˜®~ï³ÙÚÇ-¦ zÛ¦ 'MšDŽþàŸdï˜ü4HÅ}íIÓnuÔ$¢˜ÆýÖÛÙñî=ž¢/‡Ö‘ìw&{ÿ!do¿ï^²W]uY©¶;Râîz#þzøëâ>yÊdrøâþE6û$=þë®UÚ-¦[ñÄÒm<3Ÿ0ŒÿÀko>ë6Bz衇’ÍÌäÅìl~æE«V­t#§úuõ{#œ÷ÐDšmQ 0’) @ ¦ÄÙFÛÆÈÀù¬Ü}ôy8øûèñp]Ü!9`ˆ;®ÏÃtõ{ŸÍÖv8¢‚Þ¶4}útòð×û½ïžøMäŠß¦$M*¦p »¦péår5«ê²½{_–Òõ±}DÛëÐlýúõS擲ѶqÜ¥ÐÛNô{=üus<”ïy}É+ ÷ži*FiÏTeV5ûú¥¼ö«Û¥ Dµý‰tÁømôuØ%#ÈvêÔ)±ËH«»ß %M£ 8¶u D%ÀH¦$˜Kdmw"ç³"p÷ Ðçáàï ÇÃus‡@̧ȵº±¹Çšq¢q«ˆ YݧÒßÉ™3gRÏ=Û‹ìàA|ya!Û¢"¶eù®+ˆL*Aø"© ÝÜ¿ý¶ˆpß™ì]Ÿ”„Ïw[mw|‰¨pt9Õ€9`BÞl ÷®gKž®ê´”lväëU¯ñöœ]øý·µº5™L4ÅÛ3ƒXLÀ¿ˆÏ×;óù;Šîk1¥ß»o¹ž# î¶u D%ÀH¦$˜Kdmw"ç³"p÷ Ðçáàï ÇÃMáØÜcÍ8¬`<¢‘§ˆ WSN¥Y&/¾àBÊóÖ¨·Èoã{Ëâ¶,þšœl~OMv&Û¬ø­ÿkAÇu8¼Y]º…Š.¿u׫‹ûŸr?p-ÿ2üÚk_êF¡¥~©ãŽXV îÂôPø{€À!¦p_¼x1ysò¥'’Í<•× ¯xp¥÷,ã;K´á5æÎj€÷ú‹°eqëgqøÏáµK—.úá¦i)ý>MÚ¨„Cj‚@T‰¤+ˆ®pžYê¸8ˆˆ ÷ˆ+Õ¿$¢¤)Ü!›Gñpª@ ‡«)¥B *‘0eàTšUarëÖ­”§Q=þ¥í¶âNÇø½‡ê³¿^¯Íù»ÝP›ò]óo3îí×%T*ly†¨¸¯ZÅ3†‹—ð/CîÍ%²Ï<óÙ:uêXN:µ{RÇÔÞÈÙ îzcþzø›Æýª«øiÕ/<û,ùô<~jéýSùÊå玻Ñözì8?X3ƒø9Ïð>Úwŧk×®z:´ÃZMë÷›­-¢‚^j‚@T‰¤+ˆ®pžYê¸8ˆˆ ÷ˆ+Õ¿$¢¤iÜ!# |ÀÕl…@ ˜¨YÅA *ñ0màTšç8¹[}ž¼z=ÿ×$ƿĽ_«€Ê8à’êdoÒÈq™QdŒJ¨Dዤ:‚â>æÃ äö·¬$»*¾ÆpÙjž9¬Q•×¾VÙÆ¶ß 7R¾ACî‘„+ð¶Ú2î&äÁ=dÀþ i·)Ü{Ÿy2{¸ð²¯ž¼>Éã–OóP¹Wð3òöà;N’2 LØ2ƒ¸%!û8lWÏe†y`PB%Ì6ÚXvPÜW®ä™ÂÖûÌ!L= òÈþ£”×Ä&ÞrõUY!mßr?½î•øÓwmdëÄ'ÛÆ'>›ÜõFüõð×Í}÷Æ|‡Ó‘»ðuIï¶üôÒ¶ ™ÇžuÙVĶݳmèKFüéë¼Uî§=3ˆ|¸÷ãŒã?Þè èî÷FÃIÑ8DŠmQ 0’) @ ¦ÄÙFÛÆÈÀù¬Ü}ôy8øûèñpÝÜ!ó)r­nlî1‚f¶åsD3"N+ ®ºN¥9¾“üñ•Ñ÷¼Îd¿ý.þÓœï’Ã) (¡Nëì-5,î'w™OЪNåµ°gÆgg•ñSL¿9hoÚÿå”ÉöÂuà™m㎗ÈîzÃþzøëæþÎ;ïãÓ¦L";sÚl™MvÉŠÕdwÛï@©wGsJÛòaË âÆ7SHî>÷>²gŸ}¶Ñ!ÒÝ¢qˆ Û:¢`$S€@L‰%²¶;‘óY¸ûèópð÷ ÐãẹC æSä¤Ï B zür¢(ݧÒßÉõëù©`_t•5êM~z¤ï‚C* ,¡Rs­)6,îÆŸbz|þ¥1s9¿óœõ<ƒ8¢!¯‰»t‰5,½8b۸ㅎcÀ]õ¿ëÿ¿YDùÍtîü´õÛßFX>.ú€lÞ~¼–=JVaÔ%}±0ŸÏãOòB¬à;„JJx-if¦úæí0(º/Óô~ïÞ£p€@TøÚÖ •#™’bJ,‘m´m܉ œÏŠÀÝ'@Ÿ‡ƒ¿O€7;¢ÇÀFtbD 5W¨ÀôSin…É-[¶PžózFöýwÍüe'áHXB%Q>ljaq?ûÜ2ªð™g¿"ûý7ü¾«žgñZ…Â~êéÖ¢¢Ô «$[mw¤„ ÜõF üõð—Æý¨“$P›N^K6«:¿Q=ÿµJA,\Ä3‡›‡å„y—ñŒ!Ÿåc±¬A|‡Ú–Í|Ý™“kÖ{+¥õ{ÿ=Í_ ˆ ?Û:¢`$S€@L‰%²¶;‘óY¸ûèópð÷ ÐãáÒ¸C z tÀ‡A  Ôðâ •I8•æï”,.æµ^=ºHû>“xÝNYØ–P1Â9ƒ4÷[xéHì´ÓŸ&¯=´C’÷«WóSê.ì}>mûƒ÷ɿ䨱Æ$ÉY ÛÆ.‘Üõ†üõð—Æ}îܹêŒkO#›}¦nAÕ*m±x)¯ ]ûÈåßÍ3^ NoDÛëw®§t9µJ™AL4¿8>“X¶§3â—›~(¤,wœxÙ“N:‰lâ=ˆyyy”NXJhüÞï£F¨·µA *F2‰bŽÈ¶Ž;‘ƒtY!¸»pvð¨Ãâ¤s‡@t耲A RX1ˆJÀ¤œŠ;Û“Ý»Dßßzï)ÏÍÅ âv8øó*W­âþtÍu ˆâ«¯} šØ:îx@é!à)î*ÿD²A:÷M›6§Ž§òÓ± vû“қǭ"»ŸŽbó:7¡t½µÉšò!m±gåoÐ þÓ­}ˆBõHê¸*” ÷ §©üÓÀ q—tîeñÇhyð~D©uÖ²ÏÄïçkù_Çäöß“¶çíž"M÷EÛ2ƒ¸áK~Ïá½'?HÎ8ã ÷0"U¡¢©•®Z•{÷ãó‰Á‚¯y&ú°bža®ã_fëg°},‡× ~>m åßgŸ}ÈâéãŽ;/ÍË îzcþzøKåþéØ Ø 'LöãÞ|'Ô {Å_¼Ç™9¿´¾-álñ½ú53ˆ_ñ â='>@PÏ<óLýpÓ´@j¿OãR¨» ¼R;¢H$]€@t…+ðÌRÇÀAD\ ¸G \©ü %¥r‡@Œ¨ƒ8¬f¢CR2³A *q“:p&ܸöÒËèëÒQüÂÃS7ò ObÂ~ŸË3Š«:ñOkoŽn–Ø¥ÕªBEkc*Qååq¿¾ÿ2¢0éM~jÜeª'QZ‹ûÏ£Þ íÇ{lÒ~$œ>î8óÒ¼\à®7&ே¿Tó{õmÆk ÛÖÝJÛÖç;]ªóS±ßð—æ÷™yG‹-3ˆë¿âë‚!ÇßOq8ûl~?¥ž^]q­Rû}Åž…“Qá*½A *EÒDG˜BË$}Ü Lȃ{È€+(ü+Òn©Ü!Cê‹…@ôNÈaˆJ ¤œŠ±Ûo¸‘6ýôü+dÏÞÀ3‰Ó³ù铳å§}}üE õÐÿoï̤ªŽ5>þ£Æ Œ; DÅ $úÌKž"  Æ qWTTP1æŒk4ˆ ‹[4bž 0€""FA‚Ê&«È° 0ü¤ªÒEßî¾Ý÷Ö¹÷ô÷OW×Ùêœ_ÕÜéêÓ÷\«ºW¢buR`<÷û†¬# >Àò¾¼“8®.ùèOü¤K.¹¤h¿DW®;Á“ wDp—o¦ÑÁ?¡pêãÊ}íÚµä‹/¾ 9×ÈYŸ’>}ÚT’å yG±ÁuѼžäa‡Õ+†ê•¨Dcvî΋{÷óùùROâ{;5j”¡ÝáGÞë ItWR=”ì¸vÝÉnÕö[»]€¿þ…Âý7þ†{ÌW$k5ãçùÚ¡þ£UWv7M)¥E³÷ù$‡&~©öãJ£õ®Pâ>(êHI× ¢p0Ô” ¦Ä¢VèÚuG \ž†À=O€yvÿ<æØ½P¸#AÌ1@²ì†1KP1m†Q8ÎÕ çM7ñoÃû\6“VÜú(~ŽX¾uÕ+Q±>1Ç' ¹ß‘ØìzÞHZyǎǧ%PZÊß$6nÜ8m;T¦&àêu'õj£S îv}þvø ÷uëøÔíŸ÷<@×àºØ¾›Õ¸ï –/ÞJ«Ùúä·Ìµž|ñÍ)¤Ó¾ãn«ÎÛB‰û ˆ#A$] $ˆÂÑP“ AL¡®¸zÝQéÓ ¸ûpsðh–à w$ˆY„ÏfH}‹is$ˆÂq®^8o»íbZiïž“<¦v…ë Z5 â½$5jÝ@ò‚ ®,h.Z‹wõº£Å/W;àž+¹`ú0ýŽRhÜ_ÿ*!ºçUþiLÎÕR"+û×*¯ÛªÉâ’â”íò-ŒëbÅòm´ôMOðÎá·Wò)æ†Ç±cùŒ‚‘}›Š:ßÉTEBZÜç  ¢ èj!AކšD buÅÕëŽ:HŸÁÝ'°€›ƒÀ@³®Ð¸#AÌ2024C‚˜cÕH…C]½pÞqÇ´Ò®çL&Ù±C&–o]5‰Ê„w[YŸK!M฾¦åž}6ï4ß3dX!-ßúZ]½îX›aàžPÈÕà2`á •û5·^MD¦ÔžH²Î!üKªÒWV’¾n ŸòÞ¤×OHozb8÷ÔÇmqû Þ9\ÿè7ÄeéÕ;Iš—ªÄ›‰7Ç?ÏÜžÿÕqTÓÔª,Ô¸Ï:DAÎÕB‚( 5‰Ä$ꊫ×u> ‚»O`7ÿ€f9\¡rG‚˜e€ˆfHQ‘ G»zá<øZZ陿x—ä‰êŠ•GCÅb0~ض¿Ê[¾|; ¸,!¾ti•Ïýœ¿|ÿCn¿fí†`&€Q|põºã ‚…Æànún&Á7Šo û?;œh¯_½˜dßÃv|i>ßsXã*þSÝÃ9«!.;ˆ;6ó=†Ë‡òÎaéŠrâT•Ø)¬Jl$&Ô¢êÕùÞÎjÅÌñàƒö§ö -&iû¥ÐãÞ/$ˆ‚˜«„Q8Úq b¼ìêu'ê^w»;ü ;Äìâ bvœ\m…QxÖÕ ç}÷ÝL+=å¤×Iv>µžXy4Tì ã‡eKyçðÈ#Ò€‡Ô)!Ù¤’¿ák´•åÆJþ pN#¾'õûõ?3Œâ‹€«×_,4w Ðw3 þ»ÁP|[¨ÜG=Å÷Öß9à¢ýöùü šc[0ü’ûX¶ÑšÞWç0. î5.;ˆfÅU•f0Q’À²þþÅÑ ã壘K/½Ôt‰¤,Ô¸ÏÕH9W ¢p´ã*Äx9ØÕëNÔ½îv=þvø*w$ˆ¹ÅÄܸŽDáAW/œC‡¤•vlÿW’gü¼¾Xy4Tì 뇑OòŽàлÖÐÀƒ67$Y=aæ›*¾÷âÁڼ㸱¬,Ø `´¬¸zÝÉjñ»Eøÿ6 þvø ÷íÛùÿÚY§ŸH ªä_ÔŒ>scø…ëXíô2ÿÒ¦ÕG$Õ­ÄmÑký?LçÄ;6˜š\~Ùå^M#Q^(ql$ˆ‚¤«„Q8º@T$ˆñp´«×¨Ów»;ü …;Äpã b¸|mŽQx îÎ5kx§hãFþ†¬¢‚O«5êqZéûó=ˆÇË÷œUTðoË[´àoÎŽnΩ]³§ŠDO4yUÌžÍ÷Z´ïø/gP5~NÑ^E|3AÿâÍT^¾ã%/cèì›@ܯ;¾‘àn×ào‡¡p_µ’ŸoxâqÇè¥+×’<¤9ŸÁpô>üÿ¯¸‚?/M«Æ§»ïÛÿàPãÌbâÄÇÞE¼ú^Ñ7Tnù^(qŸ/'Ó ¢!‘q $ˆÂ¡P‰ÄhBܯ;Ѧë=;p÷f£Qþ”÷´Q(Ü‘ îéû K~@‚$ÎÈ…Q¸$îΟ4Û‡VT½œw‚JÏ£©Jü¿F5.¯Sƒ¿9KbYTû¾+í³Ù‡"º*vÃáýÑGì÷‰“Î ã_šD²Ý2Þq]Æ7aìÜɧš'â&œÙ`TI î×¹ž¸èàn×Sào‡¡sÿꫯüܹsI~8e2É ó&¬óÛ$Ãzqeqý ¾ñÖcî TW]qUXÈ·ÐãÞ/D$ˆ‚XÜ ¢p(T"€1Ú÷ëN´ézÏܽÙhÔ€¿å=m:w$ˆ{ÆD.%Hs¡Ÿ>H…¯â~á\¾l­¨Ýá| ×c|¯¡XfÑê¢J*z|o>µrñwážÚ%í{éØAô"“[ùÚµ|Ji¿[šÑ/¼0%i ¾^Dú˜_$ùÍâoIpÀIí „K î×pé„7:¸‡Ç6›‘Á?JÁ·÷ÔL_ÇÿÿwÂï¨A­“ø—U©[ç^êÌâ§¼ƒxSëÛÆuW_—;…žˆ{‘ ^q $ˆÂ¡®"AŒGÄýºÊ{ÎÜ÷d¢Yþš´´î?²ØýÄÝid~¿ bfH1nQ8Ï• çêU«he­<äS;ùùwŠø³{ëó©]kÖ%ØU±ƒ,ÿîçó)µOšJ7jÔ(¥:PùgŸ}–²…ápåº.¥àG÷à™úüýÐ ®-¸§gyÙ —RƒÍ>"YûÀZé;ø¬ufñŸü9²ß‘·믹Á' Ýæˆ{¼‘ ^®DáØU‘ ÆÃñ®\wâAûÇY‚û,l¼Ô‹ŠÀ==w$ˆéù˜ÚõH '%DáV×.œe›ùùvõ4 •6¨U䯲ÖbåÑP±ƒŒîàÇu=o$ رãñiv-îÓ.6‚•àoÇ)àn‡»± þ†„®÷ô¼++ùŒ†¶§M ë\ÉωNß+ûZWvK?ãÄ뽉ßïú~ÙC°Ðqï:DÁ˵B‚(\ *Äx9ÚµëN\胻]O¿þàžž;Äô|L-DCÂM‰QøÕÕ ç‹‰S*·m¹V|é%ÅÊ£¡b1??Œ}†¿ù¬Y›¿ÉëÝûЬt5î³Z|¿'€»îÆ*øºܳã=õ#¾wÿÚ?óóýjœÉÏ–½WŽýŽŠöú ?‡ºfÓôÏQteqÓôõ´î×ñYo¼ùžD)qïÏH/W ¢p´£*Äx:ÖÕëNÔ½îv=þvøƒ{vÜ‘ ¦ç„1=Ÿ¸×"AtõÂ9nÜ8Zéúx±oŸúbåÑP±ƒ˜ÞU|(iѲeÛ©áòïX~1‡åª5ÿMåƒïùsúD­«q/–Yüí¸Üíp7VÁßЕàî÷Ý÷¢ÿ·þeîØˆOƒ_þ?7¸VÿcÞû惩¾ÎµÓˆûbùâ­´¾mOòúO>ˆŸ·Ý¹ÏP*¿äŠkÓ®ßV%âÞy$ˆ‚—«„Q8:¦*Ę:.ô]½îdX¶õjp·ëð·ÃÜýqG‚˜Ì b2W5$ˆÂ³®^8_{í5ZéwËøy5×^SO¬<*v“ýЫÛR*˜4¹ŒäšÒ$÷©WdÓê,×—“ZôîŒOéMÛ¶m¹ ËWWã>Ëå[oþv\Y<í?ýIDATîv¸«àoHèJpÏ÷­ù¹ÒåëøžÃzóNbËÇx¼cF¶¦7ÅÕSß«h¬Æu±b)ï–=¹˜–òu_>óÀ¬ëÒ÷šÒÛ“/º›äåWßhª"!÷þÜ€Qðr5€ GÇDE‚Gå9MW¯;yb ½;¸‡Ž8­ðO‹'´JpÏ -D$ˆ¹EN<{!A~sõÂù÷¿ÿVºp£ÓïFþ͸X¾u;ˆÉ.˜>} œÚù’¿«jDr¿bÞ94­‡%n)½u ?÷ðÜsÏ5UYIWã>«ÅG øÛq¸Ûán¬‚¿!¡+Á=;Þ[¶ðÿß³OïDŽ«û5É:ó/z¾ZÇãœ4ŽŸ“ØrèY ·Ämß2‡ ÃÓúþy1ïœîLœ‰`n}1ú­ð)ùg^q/µ¿äÊë³âv#Ľ?ÂH/W ¢ptLT$ˆ1qTžÓtõº“'–лƒ{èˆÓÿ´xB«÷ìÐ"AdNH³‹×Z!AuõÂùÞ{ü|š9³n ÷¿¥¦Xy4Tì ¦öCy9U×öð…Ôà´ÕµHž²“ýø—š|/À åo쮿Þß7v®Æ}jšÑ+;>w;ÜUð7$t%¸§çýÕüyÔ mÛv$:ÿíÕ†ûí×€åÿÍgyã"þ OóZrA†×¸ì Vnáu¯~ŠÏBØø5ÿÄ´ØÜb™ØA¬U?‡Ô©Í¿L+®Æ 6ä_<ÍýŠ•KèÕˆ{ˆ‘ ^®Dá蘩Hcæ0ŸÓuõºãƒzspWGždü“p¨)àž5Dæƒ1}œ¸^‹QxØÕ ç¤I“h¥Ó§]Crà€båÑP±ƒ˜ÞcŸáoôFãoì~½‚:4ظ™äþ7^Iò?œ~ QëjÜ‹eFV;®w;ÜUð7$t%¸§ç=oï Žñ$5œ;‹OŸ7ŸÁS¶•wÒöªÍÿ+NâÓ;÷9wŸô'j㲃˜i1æl¢&¿Ýçr’ƒn”©‹ÕzĽ?üH/W ¢ptLU$ˆ1u\†i»zÝɰlëÕàn×ào‡?¸§çŽ1=S‹ÑpS"A~uõÂ9uêTZéûû’<ˆOÝË·®b1µ >š¶*&¾ÿs’ƒïù3ÉG‡>@òÁ{GòÄ3¸þå7^'=ÛWã>ÛõÛnþv<îv¸«àoHèJpÏwii) 0sæL’7ÞËg;ÔºÔÜœ—~|Wv7~Á¿\º°Ù¥´à»oçç¦_½½ZĽ?öH/W ¢ptÌT$ˆ1s˜ÏéºzÝñ‰A½9¸«#O2þI8ÔpÏ5Dæ‡1¿8Šzo$ˆÂCq¿pΚ5‹VdŽg.//'}Μ9$?šúÉóºò7]ååü<›êÕY¿ 7?¿†YxÁb2ô5kvPÁMý›‘|á…)É Ú;‰ç\~ó¯ETrÍüfÊÆ) ã÷)–«"ð·ã.p·ÃÝXCBW‚{°¼'¼?ìÿÌM$kœÁŸ§¼¬¸¶ƒØ«éoi©CîâµäH”#îý¹ ¢à÷B‚(s b̘åôã~ÝÉr™‘kîv]þvøƒ{°Ü‘ "A 6¢¢1Dᇸ_8¯¸ˆÿPß{ïAkR§•Wòi[ÅÛ·ÑŠëñ!˜E5ϱ™±½‚ÊKK"YR’þ0-0;ˆÉ(»Ï;¼£GO£Š† &7ZU;´x׃ŠD5îqﱬ؃¿W»îÆ*øºÜÃá}Û=·ÒÀoU¼A²Îá‰Zœ3;ˆóøÄó]H+üÝ|‚XndTĽ?W A¼â@H…Cc®"AŒ¹³œ~ܯ;Y.3rÍÀÝ®KÀßp‡;D$ˆáD–Q‘ î®\8»œÐ‰VÖú ¾'íg剭B±ÞkKÖSÉâeGlÒ´ºh¡«b‘y¼“åyÝFÒ›ŽÕ®Ä}¨BüC„›fhpOG¡ ü §0î) Xô³.i´Êü¼Äjµª%îÚb½i}÷ ú}Ò:£¦ îýy ¢àåJ!AŽ™Š1fËsº®\wòÄ ÞÜÕ‘'ÿ$j ¸‡‹ b¸|sqïDÁ˵:÷¿¤6ûøs’§nãÄþuø9>ŸÌ>”Ê:ˆïU8ÔÕBßA|zß+Z¯Ÿ†Ö«W¸÷*Ð4þÂô1¸û€BSðjC‚{òhòåü/©wï;{’,ùŸä_p-¸çk./çÿ÷öoEzͽ¢ñ9Œ&“Å˦ùeÔªk$ïü‡,zÙk‚¸÷Ç ¢àåZ!AޏŠ1â iz®]wBÂø°à8R_‚¿/\5÷ÀP¦ bJ,Ö ÷þ\€Qðr5€Î;ë¿h¥ŸODò‘<ìðZ‚€]ÕÕÄ«¯úŽÀ®YÎÏ5\¶l;é+W³\±ŽËO<†O‘ýpæÝ¬¢ˆïQ¾O]rÄ7+xÇQË+®Æ½¿|퀾sëî¹q ªøEÒß8àîW®­Íç®ãáSâ¯éÈÏ¡~wÿ¿ÿrk }ðƒ\Ÿ«[ýÊfn Óõ>àÏ-ÿü|­©deqŸ¦] îBÁo\ s¡B‚(®¤"ATS3®^w¢îp·ë!ð·ÃÜu¸›Ï]Huxg²‚¸ÏD(¹ b2"WhåÊ•´ÒÎ$ùÌh±ðˆ¨®î ¼çœ¹˜ÞVû”O/ëZV‡t³ƒxmµM¤o­¨ ©õâjÜkñË×øçK0·þàž· zP$ýîþxùm=ü‰G©ËýCî"ùVw>íóè}x¤c†³\·o=zÓ¼ŸbÊ¥Ñ-ÿf MrûÓ‹I^ß‘O_ýf?~âCâùqï/¶ ^®DáhK*DKà#nÖÕëNı;û…`Ô¹›ù!î ] îáòF‚ˆ1ÜÓ ¢àìê…óûï¿§•Þpýé$ÿò|±Xy4T×w å3NåÓ̾ŸË;…·–ñ½ˆ×”ð7KV® ¦Mš41]B•®Æ}¨Ðü„éc(p÷+„¦àÔ,†÷, åÐäÉ'£^CsäùGðÿ÷Ö{ñq¥f±û8¼üäfô¦Åy͹ â¯å‹·Ò ËG.&¹°ÿÊLûá™ èíâæ¿!ù§‘Ï›ªHHĽ?7 A¼\ $ˆÂÑ–U$ˆ–1ó®^w"†yé€ûHT À_÷.cྠE o "A 4 ,†Q8ÀÕ gii)­ôŠ+N!9î%ì ׫¨cÆò7nµëÞDööj²?ÉnçœK²iM~.åø>$½M›6$Ã~q5îÃæÔøàI〻?^A·ÿ ‰f7¸gÇÉo+s(Íܹs©ëܹ_œ7óÖ¿˜Cò‹…ß’<à2þÿßäƤGõeË‚Í4µM£ø4ü7ÏÛIzÆZ´SÈ—¾âSM7t6µñlbËÔò÷þ€Qðr5€ G[R‘ Zq³®^w"Ž÷ ZvâÞŽÀ=îH™+ÄpâK{Ôâ.]º$rmÓÑ´7sæLšXûöí£9ÁgUYÉ;WsçΠÚµæâÌÏù7îíåÓ=s\n井–òŸÙëùžÂƒN~îÑöí|Â?g|Jso{L;’õêñ)ga/ÈÕ¸›[PãƒP$ýîþxÝüƒ&šÝxàž§°Zþ;ùÅâŸðçƒââh}.«ªäym_ÃóÜY¶#„çY•ØB¬^TÊkÖäç;ÿÈÛwB§‹,¾3Ü]û|R$ˆ‚¬«„Q8ZYE‚¨ B×§Ï Ús²÷¸ÏiÑêþvœîv¸«àoHèJp×å-­yñ_¹r%5=ë2>´FÏäžëF.¥‚Õ³6“<â~žrµšÕ’*i[¾åÄ“6œFG>¿˜R2ïÛŒwßH$ˆÂÑq $ˆÂ¡©H‰aRˆûu'å¢bPîvþvøƒ»îƪ$ˆ†P8Ò‹{8Öâ?*DáCWèÕ¿¾L+»÷šëHÞ²w¶Är‹oÌßDÝ9¼Uýæ\»§lFuqÐÀUÄç™aëIYÅ÷4ÜVLzÓ"þoz sîÿôp*¿è¢‹HFýÅ•¸:g¯ù¿™pËÁ=\¾™FÿL„©÷p¸f;j&þ/½ò" u÷_ø0ƒ•ùžÄ;Nà3#˜Yêúï fk7èvæ^ÈN?t¦¡G=6*hŽ—‰{ Æ ¢p¢+„Q86O bžÑ=-W®;iÁJp·ëð·ÃÜíp7V3ñG‚hH+3qÖZüGC‚(|èZM|ç]Záõ½. yç&^ðˆ†eô檛‘ì}qc®°üÕDƒeàͼ“8ù9yíÆz¦Šä+Å|/âq÷ ýŽ;ùÀ¤FT\‹û"N;%ðO‹'´Jp mVƒV˜oî#õ5`&þ÷Þu÷Ò¨GIN¾Ï<˜ñ›¹j^]zÓâæƒ¹ÀÒë–%ÛÈò kO&9úq~Ž£¥éd4›‰{Æ ¬Dáp× ¢ppž*Ä<¢{J®]wR.2‚…àn×)ào‡?¸Ûán¬fâÑ Vf⬵ø†QøÐÕš>m­´÷™¿ y÷P~Þá%W6ìªQßA4t^}e#½½ô‚å$ï/â{7?­âÓ`K.êNå#ÆFû5³WãÞ¬/êüíxÜíp7VÁßЕà®Ë[Z“üW¯^MMþçL¾—ïÌfü¹bÈIüK/ÓÿþøÝ°Z{Ó›æÝùìS¯-·,åÄãVH¦Çþùí)ø²'¹ûê\€‘ §»@H…£óT‘ æ Ý“¸zÝIZdp·ëð·ÃÜíp7V%$ˆ†L¸Rr×ZüGG‚(|èzõìy*­ø¡Ö’Üo?>S`°¦Æeq`âÖÂSNù=±º¨'ßãyÚV>Å´ìÄTþÎS¬±ôcØõ¸÷ÃÂF[ð·A½¨Üíp7VÁßЕà®Ë[Z“ü¯é{51j,É£à_$µÞ›?OÝ„O›÷>5}i—ŸP»¦'Ú=;bÛ<>‹¡âå-4Ÿ…‹×Œê‹äÕyFe^H…'\ $ˆÂá9ªHs‡n) ¸~ÝI¹è‚»]'€¿þàn‡»±*ù#A4d•’{¸Öâ?:DáCר¬ß1àk’-[ÖìªQßA3–¿Ñ«]·êÕ«O°ãÛ¶#}Ge%ÉÏæÍMªªâzÜG•»™øºÜuyKkà/‰èèà®ÃÙËŠÿÊÄ熹sùsüyóhˆ¹³?'9eò;$ןÀ§¥×m_ËËD¨åßòŽaÅÈÅdg,¬,ºsn[ÒߟÆó u9 îÅ=‡¡ ¢ Dáf× ¢p¸O ¢O`hžׯ;YA°ÐÜ-@ßÍ$øïCñ-¸+ÂNaÊ‹?İ,òâ  §†B‚(Üéz]{í¹´â~×IòÐCí|%°ïR£ºƒ8õ#~Ñû“Π¹üÄ®9§z3{öl*n׎wSµ‰R™ëq%Ö©æþ©¨„_îá3NgüÓÑ ¯ÜÃc›ÍÈùò?õ×§™g®#YÒ z6fónS¾x+QžØ9\؇)eþÇR>ÓbÈÜéhÊŒ/LU$d¾Ü#±ÅI A°] $ˆÂáYªH³…f9pýº“…Nà®9 ðO'Ä*pnCçË bS4É—{Š!.B‚(Üëzõëw>­¸ïå³HuvE$©kÖì ýæ[÷!ùüó““ê]Q\û¨û üíxÜíp7VÁßЕà®Ë[ZË—ÿ·ß~KCžsýoHÖàÇ.K3éesù´Ò £—јcÎæ³ªªØÄ΄Lˆ¢9kyGó¥¥PƒÙ x¾M(Çòåž£ÙØvC‚(\çz!AÏ "AÌÕpýº¤÷ úü}À °)¸3‡¡òå1èÿî’/÷ܬƷDá;רÿ‹hÅ]ð Évmk vը݃x^wþ¦lì3˜ Ø’u×ã>$l þ¡ô5¸ûÂxcðiV‚{V˜Bkÿ1Ϧ9>2íA’5Oö^Äüùgód¾×±ìód§˜ÇX´s;ïÖ-¯GåGv$ÉjÕª‘,Û§­¾ÿátÒm¿ÅÝö:´ì#A¤] $ˆÂáT$ˆ¡:®_w àTC‚¿X6÷aæ0TPü‘ úƒwVãÛ ¢ðë4p ?·ï¼s§ÐÊ;v¨#ØUµv7oæoÆ–/çÓI—— ý£iÌ媫_ :üÌ.˜­»÷!ãË{xðÏaN€{NØëþ¡ô5¸ûÂxã ù÷¾²ÍqÎAŸ‘¬½_ê³%Öþ}-Õ7û¯f¼¦ÄN +þ_·­âÂ#ðó_óŠÿA{Í]qêVL!AØ] $ˆìp$ˆÉïzÜ'¯6zøÛñ ¸Ûán¬‚¿!¡+Á]—·´4$ˆ’pj=hî©­¸SŠQøÒõ|÷5´â³Î|d§ê vÕ°w÷m>Ÿ¸q#?¿gï:ü›ý½ª±¬¹•¿RûWj·nŸÞe—JøÖ]ûð ægüóã—kopÏ•\0ýÀ?Ž~Gw¿Ä‚m4ÿ­[ùù„ÇÕ‘&Zë2¾póüùeáÃK¨¼A#þœsè£|¯`¾«2;ˆ‡ÍoMCýߨWó2ÔþAsu² ¢p‚ë„ ¢yR]ûTkŽRøÛñ¸Ûán¬‚¿!¡+Á]—·´4$ˆ’pj=hî©­¸SŠQøÒ•5j­lSb¬¼œ+>qÂT¾oó/Iî³7ï”mÛʧQpß{w^FT_§EŠÂKØ;ˆ/¿¸Vqëµ+H.kH²fQòñ/Þù•oßÁÏA4§rQ¡ƒ/®Ä}\]þv<îv¸«àoHèJp×å-­…Åâ?&’©+®ã#þdï ÞÞ1uÍ|>m´ÅM­ä”rÒËWWP¿ŸÎ=‚äkϾžÓ8ZÂâ®5m;HqW ¢plBE‚˜š‹+qŸzuÑ/;>w;ÜUð7$t%¸ëò–ÖÂâQ’NÖÃâžlÅ ¢ð¥+´ßÞ|JÕa›yç°A%ŸÚY-!k$dÃû‡EEókóNÙñÝê‘§Fï'Èè¨aï šU,XÀ\Ž=ö_TtK%?ßðˆâ¤÷¯Íõ3¾œGúhº:)]‰û¸:üíxÜíp7VÁßЕà®Ë[Z šÿW ‰_ý¢3ÉkÛðs o:Žwÿw*ÏàÉÚ{Ó›æÝ[pAž¯åkx±ÕìÃi¤7žç_¨å9lh݃æÚD#20DáW ¢p¬P‘ &q%î“W üíø Üíp7VÁßЕà®Ë[Z š?DI8µ4÷ÔVÜ)E‚(|éZÐlZáµ¥üMÒþUÉ÷Ú½Ý`Õï×›ï=|àOû "ºªÖ¢YÕyÝyguÙW\rÔ’Uôæ3ÞH,þ&ÿ¦þ¤“N2]œ”®Å}Üœþv<îv¸«àoHèJp×å-­Åÿ©'¡¡?ä.’¯vÝB²ƒø×õU>KbV§ŸP}ÓNIæûR¾6±ƒ8 ;ˆù²Œb$ˆÂ+AýáŠa­©HÓ£G‚È|\‹ûô^^-øÛñ ¸Ûán¬‚¿!¡+Á]—·´$ˆ’lz=(îé­¸S‹QøÒÕ:ò –´Òž+6’üº&óS¿k-Ò‡µsÏ!ßíEkq༓ڭûÓd½C‡Ÿ‘¼öÒËH¾þÊßH>ôô’çŸ>IW_\û¸ø üíx Üíp7VÁßЕà®Ë[Z Šÿ ·ÒÐNš@rî‚E$kTãSéhÆÏ=\¸–wß§—ÖÙ¿¶œRNºÙAKaÞ<>…ý·ùtÑT¼GS©ÕÁœ_/gæO¯XÇŸ#ø”w&ßzñm(·›»òrB7‡Q v=€ "A!OªëqŸjÍQ*;Þw;ÜUð7$t%¸ëò–ÖÂæQg=lî©­Æ· ¢ðëôôÓÃiÅ ëßO²G÷F‚€]5¬Ä©ñ7]ÿ˜Ü…x÷ÝÛ]hĬ»÷ýÇtÀ$*ஂÙÓø{¢ µÜCÅ›qp[üϽøšÛ¢ÖóIÖj^3ã\Ó5¨XÄ÷6n¹†š-Yµ)]sëu¶¸[_xŽ@‚(À¹@H‘ Š'Õõ¸Oµæ(•¿o€»îÆ*øºÜuyKk¶ø#Aü¹bÂ>ÔGúz2$ˆÉ<ŠlýáŠi„¦>óÌX»¤ÚÝ$/èÌóp‚špÐ;ˆ«Wï ©õ¿ï½|î¹IAMÕ©q\û¨; üíxÜíp7VÁßЕà®Ë[Z³Å¿´´”¦rj·SHÖ¼HÎ,;½â[Þ9¬xz1uøä"¾uç'둾¶tsv)·²Å]y™™C‚(Pº@H‘ Š'Õõ¸Oµæ(•¿o€»îÆ*øºÜuyKk¶ø#AÄ¢ŒÅt:DAÇÖ®˜Fhê_þò»bÛ’—\ìÖby9?ÿgåJ¾çðæ[ù´®gžù˜ÖÛ AƒÐØÆy`×ã>ê¾;w;ÜUð7$t%¸ëò–Ölóÿ÷ñ4¥»ÆñçÀ§U“SLÒ«*ùsUŲmT^>r1É…}*“Ú}Ï‹E‡=U—ÊØP–To[±ÍÝöúýÚG‚(ˆ¹@H‘ Š'Õõ¸Oµæ(•¿o€»îÆ*øºÜuyKk¶ù#AÄ=ˆ2&SéHÛ¸b:«ãÆ£1K¸ä}¢•0eºñå7мnjüä²å¼S¸"q¯aÙ6þ-|Ã’êT?èIÞpÃ$ñ’š€ëqŸzÕÑ);¾w;ÜUð7$t%¸ëò–Ö¢Âÿ†7ÐÔÞ/y‡dCj%Mµôþœµùþܵó»­Tÿàiü9k'o,™P‹6Wð0þÁ¿àÚTÆýJJXO2¢¨D…»â’ó2…Qàs=€ ‡C%®Ç}ÔÝ þv<îv¸«àoHèJp×å-­E…?Déè»@‚¸;¿Ê®˜V`êk¯½Fc­X~ Ék®æS§3ç@™vÌ/' GµYÈó¯VŸdëb~žOƒ¢bÒߪâo¬ö¿ñJÒÿøðÃ$ñ’š€ëqŸzÕÑ);¾w;ÜUð7$t%¸ëò–֢ƿݩmiŠ%—ðÎຑKIo¾Šï!\V\ƒôê-’w«vðžaÍïëPýÏOþ9ÉjÕù\•;øÅ?>ú•7Ýk/’¶^¢ÆÝ‡lí"A¤\ $ˆÂáP‰€ëqu7ƒ¿»îÆ*øºÜuyKkQãQzú Aqµ?\1½¼Õ·Þz‹ÆX´°Éoào~ò8 2í 3U‰»·9Œw;­ào¸:ïào¸>®âÆ5gŸN]ÆÃt…LAÀõ¸O±äH¿w€»îÆ*øºÜuyKkQãÿì³ciŠWõ½œä°_ñ¬µ›Xþ©:ïü5ï¹oÒRvläçL7™ÈÏ™žôúä¤ú¨)Qã5>r>H× ¢p8T"àzÜGÝÍàoÇCàn‡»± þ†„®w]ÞÒZÔø#A”‚þHEDíWL/oõÝwߥ1¾˜Í§Wõ¿%ù7åyÈs€lw™Õ‰ÓKOï´ŽŠÚÈ57òóz&´nIÓçÌæ ¼¦$àzܧ\t„ Áߎ3ÀÝwcü ] ¥µ¨ðtûM4µ‰CòïÝø´Ò&µyÆÝßàç#þ³ãO¨`¯“’Ÿ›½cï 6z¯ÕOyãîÑרp(ž=¦…Q q=€ ‡C%®Ç}ÔÝ þv<îv¸«àoHèJp×å-­E…?Déè»@‚¸;¿Ê®˜–oõ¡ùùkV¯¦¾Û¶l!¹ø›oI®Z1d«–$ŠÊÏlPŸOŸº÷þMyË–|:(· ÿÕïb×î|êÖ3Ï|L“{öéQ$¹gÉòš|oâ²µkŸ|Œ-¸÷quøÛñ¸Ûán¬‚¿!¡+Á]—·´f›ÿ™§HSÚþÝL’WÃg6´Þ‡gÚš7‹É;ˆÕû¶¢Šº-“Ϭر™O)mðvSªÿðÍ©<@D_ms(Ïi!Ah\ $ˆHEh§U]‰û´‹Œp%øÛq¸Ûán¬‚¿!¡+Á]—·´f›?Ä Ò%ÐS@‚( ØþÃÓÉY½÷¶Û©ï¸'†‘lWΧQ•$F¬‘x^ Ñ—•ð7A?Å ¦ýóDK]‘íâ€;x^=ÎMoÚ·ï˜4ÑO¦O'}À-ýINú(Úßl%MÞ‚âJÜ[@ˆIð£ïAÀÝ7²@;€ 8³ ܳFJCÛüÇOëš5ó3’s?ÿ„ä¼yóX.ZFrß½ødû>p(éÅÕ‹Iš—eü¹±þ[M¨hê[™ªHJÛÜ# %ͤ 8®D$ˆ"´Óª®Ä}ÚEF¸üí8Üíp7VÁßЕà®Ë[Z³Í "veL¦Ò‘ *¶ÿpÅtòV‡ Hc|:r,Éž¶'9¯„õÛðiT“§ÿ4©^[É´ƒ8z ßsX·>Ÿ¾Õ³'?·ÇkžU‰&'óåÕ¾PË]‹û¸ùüíx Üíp7VÁßЕà®Ë[Z‹ ÿ§ÇŒ¤©?þñ£$kœÄ÷$šõTnáÄ:o4¢¢ioóY¦>j2.ܣ ¢ð„k„‘Z‹QºP]‹{±¼È«àoÇEàn‡»± þ†„®w]ÞÒZ\ø#A”ž+, ¢ðw\þpÅ´3ªÜÿjóúЇHžº™wÿ~(Ÿ^õϹüóŒ…ÜÀkqêG<ßLêB3¸{ðã!Ϥ°†w5îãâEð·ã)p·ÃÝXCBW‚».oi-nü¯èׇ–0­ñ’uZñƒÍbí×RùÇïð­=»Ö;…Ûuî¼«Èæ›¸q·Éê?¶‘ ¸@H…£¡&p5î“aüí8Üíp7VÁßЕà®Ë[Z‹$ˆÒƒ…¡#A~ŽÛ®˜~Fõ¶›n¦6¾9†äÇ ÈØG³ÜA\½šïì;?—ñ¹ç&iN§`l¹÷Qw$øÛñ¸Ûán¬‚¿!¡+Á]—·´;þ‰À£\EK©{U ÉÊ­|&DWê’>câ§¼Ô!CXšÃÓNcÝòkì¸[æ…Q8ÀõB‚(•¸÷Qw3øÛñ¸Ûán¬‚¿!¡+Á]—·´;þH¥ BG‚(Ü»?\1ÿLêüùó©É#ŸGrÄpþ&(S¿ ë_c# ùõ×$'äK/—’¾ÿÞ5HnÚT‹ä̯ø¹< 4 /Áp=ühà<ÓlF÷l(…×üÃc›ndpOG'üºØñŸ<™ ,á’¿Úœ¸×𨭤o|b9ÉÙ^C²a¾'±èž{HÊKì¸[‡Q8ÀõB‚(•¸÷Qw3øÛñ¸Ûán¬‚¿!¡+Á]—·´;þH¥ BG‚(Ü»?\1ÿLê¢E‹¨ÉÃu%9ì‰L=Â©ïØ–çQõ5?GçÈí¼cøAÕ62xyq}’–°¾tÕJÒ›4i΄ |T×ã>êî;w;ÜUð7$t%¸ëò–ÖbË?±#øÖ»ãiI·,™ErÁá|/âßðç¸nóRùµ$•—Ør· ¢ïz!A‡J\û¨»üíxÜíp7VÁßЕà®Ë[Z‹-$ˆÒ•NëH…{cû‡+Öá¥.Y²„ªî»ï×$G÷j©SÞíW<ŸÓù´ÒEùy‡ªñoØ×ãÆ×¦~@jÓ¦ÎÄ ÌŠëquw‚¿»îÆ*øºÜuyKkqåÿÙ ¾÷ð³³N§%õmÄ¿ð*:(±ÂÓX4Œ6y:ï0¶:ø§‰vE\¹Û¢†Qw=€ ‡C%®Ç}ÔÝ þv<îv¸«àoHèJp×å-­Å•?DéI·u$ˆÂ¿qýÃËðTW¬XAuwÜqɱ£<›ªV\݇ï1|îÙõdwxqc’%-ò³¤Ÿ}öÙªó*c®Ç}Ôýþv<îv¸«àoHèJp×å-­Åÿ{ï¾MK¸´Ÿ]ñrÞ9<à^Ù’ÄÑ´b}gËGfÔ¤7 -&¹O‹}¹ÂÒkܸ[´Ë,Ä](øë„Q8*p=î£îfð·ã!p·ÃÝXCBW‚».oi-nü‘ J†ŽQø9n¸búÕ5kÖP››úAò…çŠ3ö ³ÁêÕ|ïaÿÛ›“™/¿äç#~5wéÇ–Ô&yÑ#ìÛ·/I¼KÀõ¸–Vð£ðL³ܳ¡^ðmº‘Á=ðëâÂçN>tá~~ö²>}Nq1n|ÿä“IïòÑ4.¯^ääS;³^õnݺ‘nû ‰¸p'XxA‚(œàz!A‡J\û¨»üíxÜíp7VÁßЕà®Ë[Z‹ $ˆÒs…¥#AþŽË®˜vÖjii)µíÛ÷’/¿hw±k7þ†ê™g?¦ùtíÊ¿qÿÛßþFúÁHrÈïï#yíuבÄK°\û`i?øÏ4›Á=JáµÿðئÜÓÑ ¿.vü§La(“&±L<îbR¦<±ÃX4xðMlÄŽ»MXÿ¶Q8ÀõB‚(•¸÷Qw3øÛñ¸Ûán¬‚¿!¡+Á]—·´;þH¥ BG‚(Ü»?\1ÿLjYY5¹ðÂãI¾ú ÿFên;w;ÜUð7$t%¸ëò–ÖbÇ ¢taAèH…›c÷‡+æoÔñ¯¿NoÿúÜó$·mÝÊr?¿fÖ¬é¤òSEåå|/`ù¶**¸uÐÞ${õJ<à†›åý:jt%Q¯ÁÍ${ö¼í"#\ þvœîv¸«àoHèJp×å-­¿$¢£ƒ»?ÎH/×è‡uëh…-š7'9¢¨1I³ƒhvû•ðó7—µDR«[¶ð=‹›7³\þÝvj¸lY²œ3›ïyܰé(ªÿë˦0Qêÿ´‹P%¸ÛuøÛáîv¸«àoHèJp×å-­¿$¢£ƒ»?ÎH/× ¢p0Ô”\‹û”‹Œp!øÛq¸Ûán¬‚¿!¡+Á]—·´þ’ˆŽîþ8#A¼\  Š ¾°~ݺ´âáEH^^ùɪm‰ôêÇÓø^Å3º|C ÷¯Ã{’{ñsW°ü~ŸZzd®ÔîÙ—^L;°«üÓ.:•àn× ào‡?¸Ûán¬‚¿!¡+Á]—·´þ’ˆŽîþ8#A¼\ $ˆÂÑP“¸÷I‹Œ°þvœîv¸«àoHèJp×å-­¿$¢£ƒ»?ÎH¯B  ýšÖ§•Ï[xÉÆMª Ù©wݺŠN»‘äuy\Ó{vï\ÎîÔŽŠÞ›Š{ ›(ÉB‰û(1ß}.à¿; ½÷à®Ç:•%ðOE%ü2pŸq: àŸŽNxuàî-DÁ«P ¢p|«…÷Qu3øÛñ ¸Ûán¬‚¿!¡+Á]—·´þ’ˆŽîþ8#A¼ %€ztïD+1œwþ7ÎmÑà{ãµMôöâÞËHÞWÙäÆªÄóàÓSç/þÖtI) …ÊÅ[,w‹ðÿmüíðw;ÜUð7$t%¸ëò–ÖÀ_ÑÑÁÝg$ˆ‚W¡DáøW %î£êfð·ãp·ÃÝXCBW‚».oi ü%ÜýqF‚(xJ]ÐûTZù#}OrŸ}Ì“,Õ§ò½†ãß:™zŒyê’½¶ñi¦Ï–p}iÙæ´# ÿ´,T‚»è»™ÿÝ`(¾wEØ)L ( Eà®9 ðO'Ä*p÷ ¢àU(„Q8¾ÀÕB‰û¨ºüíxÜíp7VÁßЕà®Ë[ZIDGwœ‘ ^…@—\Ò…Vþû{¿#¹ß~5‰ìÔU«vPÃ[ooNò¹ç'%uüåI¼£8eÆ'TþCi)Ézõê%µ3J¡ð7ëŠw»ž;üÁÝwcü ] ¥5ð—Dttp÷Ç ¢àU(„Q8¾ÀÕB‰û¨ºüíxÜíp7VÁßЕà®Ë[ZIDGwœ‹»téÂÇLúëçlë™3gÒÚÚ·oïìÿ³°ùó?§õµj¹díÚÅ$ý¾Ì™ÃáÓúèã¨kõê©OC]¹r%Õ·hÑ‚dqqj{…Âß/ç°Ûƒ{Ø„Óþéù„U îa‘Ín\ðÏŽSЭÀ=h¢þƼ‚j îþH"A¼ %€ ǸZ(qU7ƒ¿Ï€»îÆ*øºÜuyKkà/‰èèàî3~b*xÊô5לC+¿ùÆ$9¤¦ ‘^½} ïöì5š{l‡ô²¬-þYâPkîj¨Sÿ”XB/÷Ч5þiñ„V î¡¡Íj`ðÏ SàÀÝR$ˆ‚W¡DáøW %î£êfð·ãp·ÃÝXCBW‚».oi ü%ÜýqF‚(xJÝxCZùU}g“<òÈZ‚DjuÔèJª¨ßð’çŸYê†9– ÿñ„Ö ÜCC›ÕÀàŸ¦À{àH} þ¾pÖÜC™Ó@àŸ¶¼;»?„H¯B $ˆÂñ®JÜGÕÍàoÇ3àn‡»± þ†„®w]ÞÒøK"::¸ûãŒQð*”ºåæ håÿöS’mÛÔN"QZÊ;…Ë¿ÛNå3?g¹dɯIt÷Ÿ’Ú¥ ÿ x5¸E2·qÀ?7nùö÷| æ×üóã—kopÏ•\0ýÀ?Ž~GwÄ ^…@H…ã \-”¸ª›ÁߎgÀÝwcü ] ¥5ð—Dttp÷Ç ¢àåZzü ´Âª;HVTT\±bÉ-[6’Ü΄E[wòs K)l^Ÿk¸u;ËYß|Kí÷Ýw_’A¿¸Æ?h>aîa‘Ín\ðÏŽSЭÀ=h¢þƼ‚j îA‘ÌmðÏ[¾½ÀÝA$ˆ‚—k„Q8jJ®Å}ÊEF¸üí8Üíp7VÁßЕà®Ë[ZIDGwœ‘ ^®P—N'Ò Ìú’dÞ@,*I¬{ao¾½³œJî­Þd£¢j‰,†ÖçÅaã_£‚SN9%©>(Å5þAq {p›púñÁ?=Ÿ°jÁ=,²Ù þÙq º¸MÔßxàïWP­ÁÝI$ˆ‚—k„Q8jJ®Å}ÊEF¸üí8Üíp7VÁßЕà®Ë[ZIDGwœ‘ ^®PÏÿæÓGë0ƒV|Ú>¥Ô,ÿŽºèíQÛ¸¼ÃΤYTƒäÈzÜòªáÓ›^½zqAÀ¯®òSàÃ{àH} þ¾pÖÜC™Ó@àŸ¶¼;{Þóüó—sgp÷‡ ¢àåj!AކšDÀÕ¸OZd„ð·ãp·ÃÝXCBW‚».oi ü%ÜýqF‚(x9@S¦ðÊ:wNZaŸ^½IßñÆ;$?®¾™äÄóꓜ³߃xë+|ÏaÇu[¨¼´|É“wÉÛn¿dÐ/ÎðLÈã{È€3 þ…T î!ÍrXðÏTÀÍÀ=` >‡ŸÀjîþ@"A¼œ $ˆÂ³PÓp&îÓ-2ÂuàoÇ9àn‡»± þ†„®w]ÞÒøK"::¸ûãŒQðr&€&Oæ•™DqðकžpÌѤl¹œdÃÆ|®és?½€ô»=Fò†+ú’|û…IþòB¾÷ðÏ#Fô‹3üƒòxà2à Ã@!Uƒ{H`³ü³p3p¨ÏáÀß'°€šƒ»?H/g ¢ð,Ôtœ‰ût‹ŒpøÛq¸Ûán¬‚¿!¡+Á]—·´þ’ˆŽîþ8#A¼œ  {îá³Lì$~rvÒëÔú”äƒ :|öÙp;ñúȤ’F ùÅË®äEÑ,oÕ9þyÑÜu8{Y/2á–ƒ{¸|3þ™…SîápÍvTðÏ–T°íÀÝO$ˆ‚—s„Qxj*ÎÅ}ªEF¸ üí8Üíp7VÁßЕà®Ë[ZIDGwœ‘ ^ÎI÷$~Z·&­üúuóINœø%Éúõù4Se—ZQQAïkÖäþ»*zã,ÿ€ø„5 ¸‡E6»qÁ?;NA·÷ ‰úüýñ ª5¸E2·qÀ?7nùöw‘ ^ÎDái¨»p6îw_d„߃¿瀻îÆ*øºÜuyKkà/‰èèàî3DÁËÙ2„W:iÉå‡B²b ?Ïðàƒ$ì¨Îò·ƒ3k«àž5ªP‚(X3 î…ÚüCÅë98¸{¢Q©Ì{÷=¤-@‚(ð8@H…§¡îNÀÙ¸ß}‘~þvœîv¸«àoHèJp×å-­¿$¢£ƒ»?ÎH/çÈ$†UU¼RóSS#Å馇ºêu‚¹÷ܸÕ üƒ"éop÷Ç+èÖà4ÑìÆ÷ì8…Õ üÃ"›~\pOÏGÖ"ADœ $ˆÂÃPSp.îS-2ÂeàoÇ9àn‡»± þ†„®w]ÞÒøK"::¸ûãŒQðr&€§•%î9,2;†b½»Ê#²“è É9â:¸ÛuøÛáîv¸«àoHèJp×å-­¿$¢£ƒ»?ÎH/g ¢ð,Ôtœ‰ût‹ŒpøÛq¸Ûán¬‚¿!¡+Á]—·´þ’ˆŽîþ8#A¼œ  É“ye§&V衚ÆÓOç;{4 ·Øþáb |tp©¯Áß®Àƒ{`(süs–w'pÏa^€^ørî îþÐ!A¼œ $ˆÂ³PÓp&îÓ-2ÂuàoÇ9àn‡»± þ†„®w]ÞÒøK"::¸ûãŒQð*øò›X ~ùªÏ?_€9ö÷ÁÔ üésp÷ ,àæà0Ð,‡÷,A…Ô üC›aXpÏHT#A@ >€ Šˆ( µàãÞ²›ÁߎÀÝwcü ] ¥5ð—Dttp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç ¢à…@”UðWž0îv¸«àoHèJp×å-­¿$¢£ƒ»g/+àïE&Ürp÷Ç÷ÿÁFýôRDIEND®B`‚wagyu-0.5.0/docs/new_ring_si2.png000066400000000000000000002615641360766232600167240ustar00rootroot00000000000000‰PNG  IHDRLâÔ;  iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ¥J! J AÅŽ,*¸v± ¨èªˆm-€¬Q,,ìET”u±€•7I]÷•ï|3÷Ï™sÎüçÜ™ûÍ ìÈrPrùù˜`?fRr “$ü)0b±Eßèèpeäùw¸m¡\·–ÆúçøUWĉ†8#bçB| \›-æ@hƒz£™ù)~±º€H–â 9Ö‘â49¶•ÙÄÅøC™Êb 3P’Æg°3`%Ķ|ñvˆ½Ø™,ĈÇåæÎ€X™ ±yÚwq2þ3m4&‹•1Šå¹È„À rX³ÿÏrüoÉÍÌa5S#ÍÖmoöŒ0)†Ü‘“ü´È(ˆÕ ¾ÄãÈì¥øn¦8$~ؾ—-ò‡5 PÀa„A k‰2ÄÙñ¾ÃØž%”ùB{4’—7ŒÓ„3b†ã£üœÈðá8K3¹¡#¸’+ Œ±Iç…B Wz¬03.QÎm*à%DB¬q›(;6lØ÷aa¦äˆP#ål ñ»taPŒÜÓÌä…Ù°Y²¹4!öÉÏŒ ‘ûbI\QRø7 PÎãpùñÃÜ0¸ºüb†}K9ÑÃöX%7'8F^gì°¨ vÄ·#.0y°ÇY¬‰ÑrþØ€ ?:NÎ ÇA8ð€ İ¥ ðZ{ëzá?ùH`!È\`=¬ñH”ða ÁŸqhÔÏO6ÊPÿeT+ï­Aºl´@æ‘ žBœ‹kã^¸{ØìqWÜmÄ©<2+1@ !-Fy°!ëØ„€÷otaðÉ…ÙI¹ðGrøð”ÐNxL¸Iî€ðDeØj:¯Høs&ˆ-h8»4³gÄ7…¬p?Üò‡Üq® ¬qG˜‰/î ss‚ÚïŠG¹}«åóIYŸÏ°^ÉRÉi˜EÚè›ñµú1Šÿw5âÀgØ–ØRì(ÖŒÃ.c'±:ÀÄÎ`õX vJŠGWÂÙJ™-FÆ-ÆáØØÖØöØ~þÇì¬aBÙûùÜYùÒ á?C0[ÈËÈÌgúÂ/2—ÊgÛŒcÚÛÚ9 ý¾Ë?o²ï6¸òM—w·R¨Ìø¦cpâ)ôo:£7p{­àT[,,ëpiG  w†ÐFÀædœð`"ˆq LƒUϹõL0,%  ¬ëÁf° ì{Ápԓฮ‚6p܃k£¼}` "BBhÑBôÄ ±G\/$ Gbd$É@øˆ™‹,FÊ5ÈfdRüŠœ@Î!—‘väòéAÞ ŸP ¥¢ê¨.jŠŽG]Q_4 C§¢hZˆ£+Ðhº­EÏ¡WÑ›¨}‰öcSĘf¹bþX–‚¥cBl>VŠ•cUØA¬¾ëë˜ëÅ>âDœŽ3qk¸>Cðxœçáóñåøf|/^‹7á×ñGxþ•@#è¬î„PB!ƒ0“PB('ì&'\€{§›0@$D3¢ Ü›ÉÄ,âârâVâ!âYb;±‹ØO"‘´HV$OR‰EÊ'•6‘ö“Î:HݤdE²>ÙžDN!óÉEärò>òirùyPAEÁDÁ]!J£0[a¥Â.……k Ý ƒUŠÅ“GÉ¢,¢l¤¤\ Ü§¼UTT4TtSœ¤ÈS\¨¸Qñ°â%ÅGŠ©jTKª?u UL]AÝC=K½C}K£ÑLi>´Z>m­švžööA‰®d£ªÄQZ T¡T«Ô¡ôJYAÙDÙWyšr¡r¹òQåkʽ* *¦*þ*,•ù**'T:UúUéªvªQª¹ªËU÷©^V}®FR3U T㨫íT;¯ÖEÇèFt:›¾˜¾‹~Þ­NT7SUÏR/S? ÞªÞ§¡¦á¨‘ 1K£B㔆„1L¡ŒÆJÆÆ-Ƨ1ºc|ÇpÇ,spLǘ÷šc5}4¹š¥š‡4oj~Òbjjek­ÖªÓz k[jOÒž©]©}A»w¬úX±ì±¥cŒ½«ƒêXêÄèÌÑÙ©Ó¢Ó¯«§¬+Ðݤ{^·W¡ç£—¥·Nï´^>]ßKŸ§¿NÿŒþ ¦Ó—™ÃÜÈlbö脈 v´ šÆ2|`D1r5J7ZgÔhÔg¬oa<×¸Æø®‰‚‰«I¦É“f“÷¦f¦‰¦KLëLŸ›iš…ššÕ˜Ý7§™{›ç™W™ß° Z¸Zd[lµh³D-,3-+,¯Y¡VÎV<«­VíããÜÆñÇUë´¦ZûZX×X?²aØ„ÛÙÔÙ¼o<>eüêñÍã¿Ú:ÙæØî²½g§f7ѮȮÁî½¥=Û¾Âþ†Í!ÈaC½ÃkG+G®c¥ãm'ºS„Ó§F§/Î.ÎBçƒÎ=.Æ.©.[\:]Õ]£]—»^r#¸ù¹-p;éöÑÝÙ=ßýˆû_ÖÙû<žO0›À°kB—§¡'Ës‡§Ä‹é•êµÝKâmàÍò®ò~ìcäÃñÙíóÌ×Â7Ëw¿ï+?[?¡ßq¿÷þîþóüÏ`Á¥­jñ›eÕõ;Ï >B YҪʭí›è2qÞĦ0jXlØæ°Çá–áÂð†4bbÄÚˆû‘&‘üȺ(µ6êA´Yt^ôo“ˆ“¢'ULzc37¦9–;=v_ì@œ_Üʸ{ñæñâøÆå„) Õ ï×$J’Æ'ÍKºš¬ÌK®O!¥$¤ìNéŸ8yýäî)NSJ¦Üšj6uÖÔËÓ´§åL;5]y:kúÑTBjbê¾ÔϬ(V«?-4mKZÛŸ½ý’ãÃYÇéázr×pŸ¥{¦¯Ižá™±6£'Ó;³<³—çÏÛÌ{’µ-ë}vTöžì¡œÄœC¹äÜÔÜ|5~6¿i†ÞŒY3ÚV‚$Ï=o}^Ÿ0L¸[„ˆ¦ŠêóÕáQ§El.þIü¨À« ¢àÃÌ„™Gg©ÎâÏj™m9{Ùìg…A…¿ÌÁç°ç4Î5˜»hî£y¾óvÌGæ§Ío\`´ xA÷Âà…{Qe/ú½È¶hMѻʼn‹Šu‹wýüSM‰R‰°¤s‰Ç’mKñ¥¼¥­Ë–mZöµ”Sz¥Ì¶¬¼ìóröò+?Ûý¼ñç¡é+ZW:¯¬\E\Å_ukµ÷ê½kT×®éZ±¶vs]éºw맯¿\îX¾meƒxƒdcøÆúMÆ›Vmú¼9sóÍ ¿ŠC[t¶,Ûò~+gkG¥OåÁmºÛʶ}ÚÎÛ~{GðŽÚ*ÓªòÄ;ŸîJØÕü‹ë/Õ»µw—íþ²‡¿G²7foSµKuõ>}+kÐqMÏþ)ûÛ¨?h}pÇ!Æ¡²Ãà°øð‹_S½u$ìHãQ×£™Ûrœ~¼´©]ÛW—Y'©O®o?1ñDcƒGÃñßl~ÛsÒàdÅ)S+OSNŸ:Sx¦ÿ¬àl﹌s]ÓïO:£iRSë…° —.]<ßìÛ|æ’祓—Ý/Ÿ¸âz¥îªóÕÚ§–ã¿;ý~¼Õ¹µöšËµú6·¶†ö í§;¼;Î]¸~ñFè«7#o¶ßŠ¿u»sJ§ä6çöó;9w^ß-¸;xoá}ÂýÒ*Êê<¬úÃâCgÉ©GZÇ>¾×ÅîzùDôäswñSÚÓògúϪŸÛ??ÙÔÓöbò‹î—‚—ƒ½%ªþ¹å•ù«cùüÕÒ—Ô×ýZøzèÍò·Zo÷¼s|רÝÿp w`ð}é­{?º~lþ”øéÙàÌϤÏ¿X|iøöõþPîЀ%dÉŽlhz:oö@K†gx£(Éï_2AäwFÿ Ëïh2'—=>Ä/ žQ*a3˜ ŸÒãwœ@FÛ°ˆÒì屨ðCø04ôVR_„CCƒ[‡†¾ì‚dïp6O~ï“ žñ·kJQK§ øQþ±lCô²’… pHYs%%IR$ðžiTXtXML:com.adobe.xmp 1356 912 {!¦ iDOTÈ(ÈÈ­F¯w|¦@IDATxìÝy€ÍÕûÀñÙ³ËXBö‘%J ¥"K„””Ú´XR*Ú÷Ò&d)JRJÉR"Ù×B¶ìCŒÙ×߯ç™Û×­1sgîöYÞýñyîg;ç9¯33¦gÎýÜÀ¼ÿÿ/€ÿ¼&°yëfiû¶1}$uÍ‘˜º8Qâ¹kJ\{*DbÕ'ëJdƒX]àÏ—vËSw¥JŒ©!1´E‰UV—¸|ÁÙ € €@É&<>VnN[ú‚ÄñW¤Kü倶ùàÒ`yñGŽþIÜ•e?º^”^À°¸@ö72Â7ï{[bËK[:âììl9¢?7 ½˜“¦¤`êÝ9£`ê]_ZGó P05ïÜ‘9 €€ù(˜šoÎÈ|+@ÁÔ·ÞFï‚©fhÛoÛ¤§n½ÛIltDâ#ÍtÅi»/Be¿Ú„ó$²A¬.¶_W¶„D늖Ðxý9èwæ}ÄÔ‘ÓäPÓ¦M§ˆ € PB°ýw·Eum`GŽþû×½’ˆ¹0º„-s `NÌ5ºRt@ý;e÷¾ßœ!k P0õ(çÙ£`zvÎ €€=(˜ÚsÞ5 €€(˜úןÞ@ÀxL7'FȈ‚©faÚ{oJO‹&–8£Ã)‰›õ¦m?׿ìžû+L}4%tƒ8½=E2¼>¬‡ÄçÎà“ €Æè|c{Ir}Љ:”3~ÒdˆxA }†´Úø@s‰3Þšé…^hÒ¬L}4sL}M7 ` ¦–™J‚ `  ¦š RA¿ P0õ+¿á;§`êå)ú`ê»ÒÃ×o’8³Ã §ÿYa:/…é3¬0ubl/þ^®¬[¼^bh¨ó³Nm €.œ&1ºMD1[àr@À[ïÝ*‰^^E󽤢¾c­fiݯ¥±Ç§aò"9UWœêQ¶¨S/}%P0õ,Í"€€í(˜ÚnÊ0 €€(˜z•&@ÀL 9-¦KŠ‚©—§,33ÿYAAÒSп¢£û½ûöÊËëïÔ•S!½tªã<°«@úaý‹ïù¿5‚9S>±+ãF@ Ä·ßÛWîý¥Â ‰¥ª±Â´Ä˜Üˆ†ÈÍÔ¥ŽÛ!y>Ú4[â½Mœë,å_ÖŸƒÛví—óåÊ•3ô¸HηL½ìMÁÔËÀ4– `jù)f€ €> `êdº@CP05Ä4˜> ¦›Âýê_6:ßÑQ2 ¹Ùù/ K—t@Ÿ d}¬]}ñÖyQ­Z5ŸõMG €˜U %%ER¿¤S ‰á·ëg(˜u<äWàØ+{ä––Yg]¯ï`»xzœì¿õñ"‰Íš5“È¿(˜ì뀂©Á&„t@À0L 3$‚ `" ¦&š,RE¯P0õ «å¥`jÐ)>tødÖ¡o{‰!½õgK÷ô¢D9xn¤Äè:ùûv¶8Ž˜Làôôƒ’ñþŸ’$Ž5Jâð‡ÇH —È@þ'ðõ7_ËÎÐY÷KŒº’/ÿ§Ã+°²@V’>»´ì÷e˜·u¾IâÓcGH»9ë[}Héñ]ašp™>ƒ-ì¤~Êå¦õS##ùÔ_“N5i#€x@`îÜO¤•YãHüäzçÿ_X¾O;¹k¡þÃñRúNsF×ö@ï4øO óP–t~Á®FgOúÈÉгe(˜šd*)˜šd¢H<&@ÁÔc”4„ ` ¦6˜d†ˆ P0-…ƒn P0uÐÛ·ßuÇíÒņ%ŸJ¬W6Wbnž~ê[nž®¸Zµ7MŽô«&1æ‚hÝg‹˜T ãÏtÉ<í`¦ÄÒÍcF’²LÏOèô¬¿¡Û NçÙA@ÀŽ_C†=¶á‰/®ÓÏ:Ø“*û±=ô™¥Ñõ¢dŸ  `8-shÙãŸô2OèJÒÌDýÿƒŒcº¹Që[WnûçZ^ à®Sw½|?S/Ó<V€‚©a§†Ä@ ,@ÁÔÀ“Cj àšSל¸Ê«L½Êë~ãÛ·o—FV¬X!10PÿĤÏrì;> zìKÈuwèy÷3 @À˜Gõ/Ë56Ô•çÏü˜‰’ €>˜=k–ôvÿƒ·K,}ke‰1 xš@°Aà dÈ÷<÷‡ÄÔÓ9ËÄj£j¼ÖEB²ô¸ç]ÖUÎϘ­ïÌ•6¸)@ÁÔM@oßNÁÔÛ´f `jÖ™#o@o P0õ¦.m#€€/(˜úB™>Š `Z”ÉÎgdè_bš\ÕD2ÈJS“M!é"€@1²ôCæ½ú¹ÜY³fÍb¶Àå €XG`Ø#Ce0 r?“}Ï*µÎì2ì!—­ïÉ?ô‚®0íQ^ë¯]©+J õtÀó{.–Cß-ûÅqŠˆ€ÛLÝ&4VL5dƒÞ `ê}cz@0SóÌ™"€@ÁL vá¨o(˜úÖÛg½eeé§Å]Ô¦‘ô9H?Óg Ð à#¤µÉÒÓàÚ÷J6d˜z¦@Œ'P¿å’Ô?¿ÿÿëS¦—1!€… œúâˆ\½ú¸Äuýt¥éÎz_‡Ï*È‹ûë¶x@€‚©ØS#Î 9!€€7(˜zC•6@Ì*@ÁÔ¬3GÞ p6 ¦g“á¸7(˜zS×mçæê_^´¬/Ù”º3D³ú×_š÷ý]Žçè£BjŒ×O6ÀH(T 7SÎÍŽë~ý~M¡×s@+ ¬X±B†5øõ;$†·çfVœgÆ„€²“stØ3õçÚÖÕ[eÿÇü•¦—MÕÏnÉÊοΎHŒÙãL=Nj¬)˜k>È ¦æ›32F×(˜ºæÄUž `êYO÷æXi>P—˜}^?Vî¾jé’ûË»Â%V~¤¶áÇB‚ €À™ßê_”ߺû]9ܪU«3Oó@K <E P0-’ÈžP0µç¼3jÌ$@ÁÔL³E® €î P0uWû@À×L}-Nž `êIM ¶Õ²½þ;­‹þ;8Š•¦œf†„€)2u)͉o%ÿ¸6e%Fž.1i½®ïWEŸáb9 ziMæñõçV«;'Ê;î¸Ã‡YÒ P0-Ø…£ùLùR@£ P05êÌ €€7(˜zS—¶@À“L=©I[¾ `êkq“öwyÇV’yr‡ƒcô/Øÿξ'vÊ¡r·Ÿ#±TµÈ_Â> à¼lý vÎtýyµ~éŸôK' €xS`ÿþýÒ|ë¦u$¦Çé³ÿboÔ¥Ñu£¼Ù=m#€Å8½ú”Üs|æ‰kûåJ¬§MMøQŽ¥5)Æ?õ´ž`‹€(˜úßL]S05Ól‘+ü-@Á”¯@+ P0µâ¬2&¬-@ÁÔÚókÕÑQ0µêÌzi\­»\!-']s\bpŒ>ÓtÇýÛd¿r´®è èW]öyf’0°A? ¤—-½Oô¶ÄÖ­[û1ºF@À=M›6I7>ÔCbÔMúì?÷Zån@Àûé‡2¤“ãwK|»“®,ÍÎÊ’ý¯ƒºHœ9çs‰lð§Sê›°o ¦&œ4RFÀæLmþÀð@‹ P0µØ„2l$@ÁÔF“m¡R0µÀ$úcWvk+Ý®]²\âÆÛs$v™§Ï Lïs®ìG×áS9‚ øM uwšôÝò/]YúÞ«“ý– #€ à®À ¯½ M¼³K?M:®I´»Mr? àìtEéWï}#ý ½»ŸÄœ=?J<ZSâòÕº’^vØ à' ¦~‚7{·LÍ>ƒä€}(˜Úg®) ` ¦v˜eƈ€5(˜Zs^­:* ¦VY/«æ9奇E=%Ö,­6ž¦+LÓzç¯0­Ë S/OÍ#€€‹™3ôÂ%/•eÊ”qñN.C@À8—wj%ÉœîpBbH´þþmœ ÉpÈþ!OsÍH@+ P0µòì26¬)@ÁÔšójõQQ0µú {x|uέ(-~Ýõ¨ÄÚñú—"G7M¦ÉËÔ›óW˜žå8EDü*¼"Uú¤õãûôîã×|è@âlß¾].ïõpO‰¡ÝŠs7×"€¾ÈÜ’-ö(“ÄGGLí3׌°¢S+Î*cBÀÚL­=¿VS«Ï°‡Æ×©};iiÍ/?K Ìo77OW˜ææ/4 Ε3qƒ«H,u^dþ•@À¿™‰™’ÀéWt…ü˜GŸ•ý;òobôŽ €€ ¯½õš\õúÖ—%Æ5‹vá..A|/qLï®±þ<é|þÌù¾O‚pS€‚©›€v¹‚©]fšq"`] ¦Ö[F†ØA€‚©f™1"`  ¦Ö˜G»‚‚©Ý¿\rr²\™””$10Pטé3K1,,LÎßrWo‰ûÿ!14!D"@À_Çç–®o8®Ÿ*|2;BöçnÑ•ñÆ “ýá‘É y`ƒ àœœé'8¸àO½¿²[[9¼­þ{Çï×>™:Ab ¤OÖ߯×,\+÷†‡‡» n@ÀßLý=&韂©I&Š4@à¬LÏJà @P05À$xD€‚©GiÄÏLý<Vïþú[»È÷6Ü)1$¡à¿˜[Ýñ!€€ÿ6Ü"IœzHº™¿0çT†æ6v™®k•~šç/«VɉÆM›ù?y2@°¬@v¶þ»ÓªEcù²¥%v¿¹ŸÄ&M›J¼õ‘[$†v—Àð¹@æñ,éÓñ–{Ç#¯²òŸYy(TÎôö›4ÖŸk>O”ð€S ÒÄÙ(˜žÝ†3 à[ ¦¾õ¦7@×(˜ºæÄU à ¦þŸ2ðSßYÛº§úv•ñÿQÿw‰! ^iš}Jÿž²^Ÿ•׺Œ­Ý<¸/pbñqi¤õö#§vÐg*MÛ m¿¿]WòìIÒ%§ýî,'Ä2eø9¤Rl@¼)0zÄÒüï'J Õgm¼!Möc+è¿SW–•ý¸fqC¢ þ½ZN²A< ðûðߤ•ˆl}Örµ2ú™&µãô[õâô÷ëgÔÏ89ö×)¹>::Ú½Óþ `êwÛõJÁÔvS΀0ŒSÃL‰ €"@Á´N!€€_(˜ú•ŸÎý$@ÁÔOðví¶Ç€2ô]u·I ®¨ÊMÓ¿Hm¹O—?O?ºâðšv¥bÜ à!êϕ֕õ/à_nÕŸ7•jé_¼‡Þ9Nz6l˜‡z¤@Š/àøÐ§ð0}`öXýwËÑÒw»ôÕÛõ÷ç9›õ|¹–úN‰„ÛÎq\JD<*àxFé¶Ñ;¤Ý¯nÖŸ?íj8wsá”X90뫟$6hÐÀùö0‘SM–R¥`j…Yd ˜K€‚©¹æ‹l@» P0µëÌ3nŒ/@ÁÔøsD†ž `êySZtAঽäªmU6JÜþ”>峞ú—ªJÉqV˜º€É% P @æ ýÏã3ÈùðÆú¬·2­âe?uºÄæ‡[J|â4‰l@ð§À¸1#µû•¯Hwy¦Äïwëá—ê3KOD‡ÉØ+K,u®¾CK¯b‹xOàðS;¥ñ¾•ô÷í môÙ¦]æéïÛÇÏó;wö^´Œ€—(˜z˜æ  `Z° G@ÀsL=gIK €¾ `ê;kzB’ P0-™w™K€‚©¹æË2Ùf¤ëÊ®˜h]Išùˆ®,ý6ÿÙLÖå?ÃtD-ËŒ™ €€12?мÍü^^$$$3Q²B°•@p°>«´á9úiÔG£Âeü1=*IŒ®­¿GÛ …Á"€€!²>Ò4ÚžÛ\^üþÓ<‰µcÒ$Ö¹é9‰C† ‘È3 P05ã¬Y g ¦˜D†€€E(˜Zd" `1 ¦›P†ƒ€…(˜Zh2ÊY(˜ž•†ÞÈÎÒgœDFFHóYè§U;úr|úgÿµù+Lb…©Ã†ˆÞH^© Ñb”t0àöÞéˆV@(†@Û뮫÷œó‡Ä²ùÏà.F\ŠxT {©¾3t\÷ñÒn׎]%~ýå»÷¸Aâ %¾òú›Ù `F ¦fœ5çLÁÔÄ“GêXT€‚©E'–a!€& `jò $},(@ÁÔ‚“ÊÎ*@Áô¬4œð†€ã­E]¦ÏdÊ Ðg2åæiÜý—~ºÞÏúŒ¦J°ÂÔó@› ð?ì¤lÙ‰_TAâŸ/ùßI^!€ àcHîh/1ì&'@w €À¿2¶ê;E¯ë!gÆÖ¦ÿº,àøñãr(éÔ)‰5jÖü÷%ì#` ¦¦™*k$JÁÔóÈ(°’S+Í&cAÌ/@ÁÔüsȰšS«Í(ãqE€‚©+J\ã1gžyÆ©­  ]iêˆÁÁÁr~Õ–•·WÛ,1ä\½Îéfv@ dÎ×g2ÍxôiµQ£Fl¦@pM`æ‡3åÂ'–<&1ö²R®ÝÈU €€‡2ëÊÒsVV—–¿þø÷@sW€‚©qçÆ’™Q0µä´2(,!@ÁÔÓÈ @Ó P05ý2,#@ÁÔ2SÉ@J @Á´hÜâ;Þ!­Ž]!1¤¦®@õ]ô„v8½%E†Ú3æf‰ãÇN°ËÐ' €€ºõÕOÞqÁVÉ*¢¢>Ûß@)’ ØD cª¾kå‚U2⨨(›Œœa"@Á”¯C P05ôô– `j©éd0 €€i(˜švêHË P0µÜ”2 bP0-—úOàÎქó•Q?J ©É3Mý7ôŒ€µŽ?qDøØØg%Þ~{?k˜Ñ!€BàèÑ£’G»>WI »Åi‘ØA@’d$fÊhƒV†J|÷¡É[4oaƈ€“S'vŒ*@ÁÔ¨3C^XO€‚©õæ”!€f `j†Y"G,*@ÁÔ¢˰Ü `êŽ÷ú\àî‡î’>WD,—R+Ð)‡ÌÝ©²¿ë…=kŒ­%‘g? (D ù7}†iØô½rUÝrW “8üá1:\"@<)0ç“9ÒÜØo–}y)O6O[ €@ÀWöˆB`J¶ÄÔÄ,‰I's$–‰Öwr6mÚTö¿ýá‰l°£S;κ‰ÇLÁÔÄ“Gê\€‚©Á'ˆô@‹ P0µø3< @ÁÔ“@ ¦ `jš©"Ñ3î=Dv—/–˜˜.1gš® K×?”DÜ]CŽGVÕ•b²Ã(@àÈË»åèÄóu¥i—óô¢§5¾ðK¤¼xí'ýy3eÒ[²ßw€>cY¯b‹ €@ÁL›*'~Ûñ»Ä^7÷‘X¿~}‰7 ì%qsÍu#*‡KdƒxJà÷¶ISý/È•8´¹¾¿Zœö°Y¥pó¢jr`Óïúÿ×z–-ö `j¯ù¶Ìh)˜Zf*† `j˜© @À’L-9­ S P05Õt‘¬Ÿ(˜úyèÞ=[ï¸IXýõ'·Ôg¯Ô~7XöÃYaê0w#`Œ#úi =¿SFûç=ú÷ߎëà§lÔg˜¾¿A®4kÚXN<4v‚ÄÖmÚè…l@(D`Ê{“äì+Ý'17Xÿ}É Òg•&ê[¤âúÅËùRçò©B89…nœ˜²_în|:YâÜ.úÿÑ)ùïÔ¬ð²þ|JNÍp£nEÀÜLÍ=¶Ïž‚©í¿@Àm ¦nÒ €€ L]@âð‰SŸ0Ó‰É(˜š|íšþº5«eèz^#qím'(êNÒO÷ \SŽóz'v@à cSÿ”½V’¸é¤þü8(ûmÛ\'ñÍ·tePBB‚ì³A@ $uªU”Û¾îzDb¶¾±!àã­úïÎÌß4&fê¿GÑMb庄ޕKÒ÷ €g8ùê 9xP^ÙWŸå_ïm]á¾m—®D-W®ÜYÛàV `jÕ™µø¸(˜Z|‚> `êClºB `ÊE€‚©Qf‚<Œ(@ÁÔˆ³BNgX¶d±œtKW‰s»êÇWçé‡ûäæÇ®Ÿê³#î©.ו:W?ÝZvØ €ÿ/—£?0ö=ó‡xDVÒg5E]QVöÃ+ê§Ç|UFö—/øQ"@ܘõárû/ß-ñÃŽINÍ-Ø¡»÷~¯+L³+éﱨát; €@I²–ëïÁt|TšhtA#‰-[4•X>ZþLŸ÷½ì_|ñÅÙ `' ¦všm Œ•‚©&‘! ` ¦™Ò@l&@ÁÔfÎp0 SN )N€‚©á¦„„ HJÒ¿¼|@ÿ¿té¹,(Hÿò¨Ïz ÊÁ!ú³¬v¥äºð&!5Ë1@ HÌúódêÈirmÓ¦ú—÷"oä@ ¨WCŸI:¶É!¹êé_õR§âòßáÐCÏó,þB9…ÅHßž)×wŒ¸^â³=Wàý®½JŽ¿ôú[ëÖ­[àuDÀÊL­<»S M&CAÀdLM6a¤‹˜D€‚©I&Š4°S M&CñºS¯Ó?yzŒt¿à¯Ï%×ו¨þ̉¾@À\§·ë§…^ÖCîñ‚ÿo®Q‘- €€¿¦Lž$)Œ~lˆÄøþU$FÕâÙûþžúGÀjY'³eHå—êÊõEŸê³I­6Nƃ€'(˜zR“¶ '@ÁÔpSBB˜N€‚©é¦Œ„@SP05Å4‘$– `j‰id> `êcpºóÀcÏê§ÿÍOüTnÀJSÿ̽"`^´ws$ùõK6H 5ï`È@Àïî 9ü¿Tb©¬,õû¤Èœ®[þéò"..΢#eXxN€‚©ç,iÉÀL <9¤†€I(˜šd¢H0‰S“Li"` ¦˜D†às ¦>'§C <ùâÒý§‡æH ¾°àlÒ——Iû3$&ôÖg½|5G@À©KõSEŸíö‚ ·sçÎv6cDð°@zzº´Øôš&#{¸šCT û[¯Ý=Q^\Ñê h@ÀE ¦.Bq™5(˜Zcþ `êuúD¬'@ÁÔzsʈ0ªS£Î y™A€‚©f‰=.ðÔˤÍ9ΖÜP»HýAW–Æ-?"”’˜p×¹z[°­@úa]q~þoúcΔOlkÁÀ@J.°páB¹ùþ÷J,uUXÉãN°•@Æñ,oæQ}çSF¢ÆìcƒŽêï«Ù‡ôºÁƒ’ë5ÎVN OP0õ„"m˜N€‚©é¦Œ„ð»S¿O €– `j‰idøE€‚©_ØéÔ¦Lm:ñ [žyíy1í«×%^pLW–ö¬¡Ÿ†=b_Œ¯p+LUŒ-$OJ„{n|@âûî@—îq—\ûCäw£j•rù^.D{ œZœÿYóõÿ[ÛÕTóâråEÍÒºÿýî@yQ§ç“G£'Ø"€€ËL]¦âB+ P0µâ¬2&¼+@ÁÔ»¾´ŽX]€‚©Õg˜ñ!à= ¦Þ³¥eþ-@Áôß"ìÛJ`æ”wd¼Ÿ½ö ÄOº¦Iüh‹2 ßË S•`‹ 6ËË«êDHÜ•'qø¨G%¾ën‰l@8S 'GßÁÔðŠr8rPÈ™§y¸,ô¥®0-õë ¹g}_ýùâh`ÒZ}µºLoyñîû8N@ÀE ¦.Bq™5(˜Zs^Þ `êM]ÚF¬+@ÁÔºsËÈðµS_‹ÓŸ(˜ÚqÖsÀìSDáó×GHœuþeÎA3g«¾º;Z^T¸·ºãl*pb‘>3êªúýIíõYQ;ó|¼ðk”È|°![â£è³¢FŒkS1†ØS`Ù²e2ð+®¸Â à‡~ý{'ë3L#¯u:Ï P\ÔßõÙúÛŸÞ-·® -$eh|vw3y±pùj=À\ `ê2ZI€‚©•f“± à ¦¾q¦@ÀìLÍ>ƒä€y(˜šg®ÈÔ|LÍ7gdì†ÀÒ%Käî[z^/1!Z?=0/¿ÍÜü'Oë³LCjé3Lãï©”ì*°óÁm2ôùψª¦. ˜·]EÞß®–íÊ”÷ßw¯ÄqžÓ Ø"€XZ`ݺu2¾ëÚéÊÒÔ }ÇA÷®åø‰L]òµ½Ž> ;ºn)K{08ð¾@ÖOúާ‘Wë;›^ÿ¸tzuÙ}?Ú©¿ŸîØwØûÉР`j± e8… P0-܇³ pv ¦g·á  €@@S¾ @À×L}-Nv `j§Ùf¬yyº„tíZýØÀ   Q Ô•¦ÿÞ_¼â{9ÿþæ)ƒ›9Ö¢‚‰v8¹ú” µÒ·$Ö/§#Ÿ¾NÔª^ELxî ‰]ºtÑ Ø"€ØR S»V2î¾e~’˜¬o<x£þÞùóŸúïGÅ&ú¬ü°æñr]\#}gS`ˆþ^jK<. dìÈ’ëÚ´—øòøWœî{à®þ²ÿñÜÏ$<êü™N³ƒ P0-…ƒV `jÕ™e\xO€‚©÷li°¢S+Î*cBÀXL5dcM ¦ÖœWFåa·ßKZ|wµÆ æ¬4õ01Í!`XÃïê3 Òwë³£Û–•\ã//#1{–¦þË7¿Ê‹ÈÈH=À@À–Žw2 ì~¥ŒM_}§‚#]m0JßÈðöz]QZ{\m¹$¼b¸ãR" à$}Z€”þ.AŽ/™¿Ôéü¿w6mÚ$‡.¼ðŸbŠ `Z§ø[€‚)_ØW€‚©}çž‘#€% `Z5îAW(˜º¢Ä5xF€‚©giÅ&ïL{GFúΪ‰ƒZ¾Ò4í÷¹.$¥@hlˆM¤&ÖÈIÍ‘Á— .pP)ËÒåø„NÏJ¼¡Û ^ÇA@{ tíÐVܯô‰Aù&ºTÿ=I¯!Çc»W’YE÷e‡  P€@ÖL=¸xöyQ¶¬¾ó©€K9„n P0uÛí%@ÁÔ^óÍhø[€‚)_ €% `Z5îAÂ(˜¦Ã9<+@ÁÔ³ž´fÉL–‘Nüñ5‰A—ä:<éý4í?ž”ãµ&Ô•V&Ôé:v@ÀüGõãkmc*è#}Fݯ߯±Ðè  €@qš´m¬·Ü¢Ï" ,n\H^­Ÿyqtúáúú{dµü•¥Ža_ùQiy9öÍO%¶mÛÖqŠˆ^ `êe`š·¶SkÏ/£C 8L‹£Åµ €€õ(˜ZŽ!% `ZR9îCÀwL}gMO¸ýæî2š#ë¿’Ø®ZºÄ¼<dn~|n¥®0­øH-9Q1\/`‹–ÈøVŸA5èRý4Ó!C†Xv¬ @à¿kÖè; ú={›œ 먿þ÷JŽ €€Ý2Oè ô}OîŠ7®Ô•¦}èÿPöÿ:JŽ_~çëûõëgw2Æ€Ï(˜úŒšŽ¬$@ÁÔJ³ÉXð¬SÏzÒ `6 ¦f›1òEÀLýgOÏ%@Á´(!Î#p†@FF†ìÍŸ÷‰ÄŸþYbP® ÔèØOÏÖ•§Ë“Vèu­uå™ì°AK zZW”>•-ã ‹¯*qøèÇ%ÞÒçVKŽ›A!€¨ÀøçÇË‹é‡'KŒm  P¨@ÖJ]YZzm°\×(bŸÄòÁúY-GÉþã'Ú'@ÀsL=gIK6 `jƒIfˆ¸)@ÁÔM@nGL.@ÁÔäHúøA€‚©Ðé"(˜ÄikjPýtÓCÉ:„÷7†È‹÷6FH<§zm‰ËV®Ó Ø"€Z --Mò»¬yc‰ eKKì~K‰çWOâ×î–ÚYßQ ;l@3rRô‡¥¾ÔŸ#?}¥ŸyqÆ%òrÙÒ%wþ¾]bÿwJdƒÞ `ê}cz@à ¦ÿPðË P0µÜ”2 @ÀI€‚©; à†S7ð¸ P0õ4Ý p¦ÀW ÈîØ£%^¥Ï:<óš¿_{^Ÿ…˜]NW¤Uêwο/aü,“®ß¿Ûïß&™Lí¤+K_ß Ÿrºù ®0ºçž!r¾ßÀ»$Ö©SÇÏ™Ó= €@I†Þ;XnK]5Ybnp¸Ä7ê³ÃËêÏýÈÖåäxÜÅqCKë; d‡ ØZ ëCþ·ÓÊ‹Š+ÚÚƒÁ#`D ¦Fœr²¼SËO1´‘SM6CEþ_€‚)_ à®Sw¹ï P0õ¾1= pVo¿ÿVÎzÿ!‰Aít¥Ú±ÿýŽ¥ôYY_†ëÊ„„þUÎÚ'@À?‰ KÇûg–xNÓh‰W”•¹C÷çÙ‹u¬Ïôy^^´¿º½}ÏH0™S“MéZK€‚©µæ“ÑØS€‚©=çQ#€€}(˜Úwî9î P0uWûðSßYÓgø~é÷rn@ßë%>iªÄS)ú,Ä'Næ¯0Põ¬mpü#àxK~Pˆ®$ ÌŽl’Ö'ËËþUI|xè(Ç)" €€‰vŸd_zóÛ¾TWšÎÕGZ ]$ÇóªGIŒëQIbxB˜D6 `ŒMúó¡W¥[dÐ kŸÁ3RL*@ÁÔ¤GÚÖ `j­ùd4ö `j¯ùf´ €€C€‚©C‚ˆE P0-JˆóO€‚©ñ愌l(Ðýº62ê›ãVHìqžþrÊ:Åxì„®0­p+LU„-æÈËÖ•â9Óƒ%éõKófgž!) €@YYúûZ©ˆp9[­œ¾Ó «J)ÙÍ_QQYÏЇ@Àä'V’dL—t,CböÑL‰Éù±Vµsdݦ}Ù €€ñ(˜ŽÈÐLm0É Ñ¶Lm;õ ,.@ÁÔâÌðpA€‚© H\‚€I(˜štâHÛÜyyºâ¬[ûÖ2.Ñ¿Hì\Kÿ"™“«ã›µYãKÉù+L²ÂTEØ"`>ôï²%鉃ôYw­[ë÷¿ùFBÆ €g 4oÓTvO]|BbLƒè3Oó,,°å®­2º^õôÿï®û*8?+KW¤•¿°¬\5PWšZÕ…q!`eÔÝi2¼ËNµ‘8éå÷¬<\ƆX^`ÇŽ2ÆÃoªÁòãf€ ð_CO픃wTÓg—>~Yþ[ó/|:D^ýuê´Äˆˆˆü30ªS£Î yYZ€‚©¥§—Á!P ÓY8ˆ˜V€‚©i§ŽÄð¸S“Ò ~ `ê÷) ŠXµz¥\t×ówJ ê˜SôM\†Èœ¡i-³L^ÄÇç?äÊÙ’ €ÀÙÞšô¦œzyýóc›óìÒ³Yq»ý€ µnŠ~6Å·½ReÿüI1ç}¯Ÿ]Q¯^=»0NL+@ÁÔ´SGâv `j§Ùf¬V `jõf| ` ¦v™iƉ€ëL]·âJŒ.@ÁÔè3D~œ!ðëÚÕ²7è)}öiPgçgãœq)/@À É+t¥A¿Úƒ$Ñ#F4SÒB(LàêîíäôÑËÿ”ŸÿqØ…ÝÄ9°¤@ún}viˤÖ2¾.m®“Ø·ÏÍ/¬¤?F¾ò‘ìwèÐA"0®SãÎ ™!ð ¦ÿ!ᦠ`jº)#a@ @ ¦²p[ P0µå´3h‹ P0µø3j¬Ä»î¢°E0„À{Sß“<žûå)‰±—èÊ2C$G àS쥿/ßùJb•*úŽ>Ÿ&Ag à ¦^a¥Q|#@ÁÔ7Îô‚€'(˜zR“¶@ß P0õ½9="`T ¦FòBÀ} ¦îÒ~ؼu³äpÛ˜>÷þ¸EâªÞÙ¿§ù¬õ¼®0 a…©¸°AÀ—'Ñ¥¤õ–n¿¼ÁyEø¢?4›××éJ¥o~Ë™Y¾L“¾@Û L|í%18xðÄoÖ߯5j$ûzw”¸¯éN‰aåÂ$²Aûdý'ƒßëi‰;t¶Ïà)6 `j“‰f˜Ö `jíùetÖ `jyd `} ¦ÖŸcFˆ€»LÝä~Œ/@ÁÔøsD†¸,P»j‚\ûe×cë•Õ[c_Ц5ŸÉ_aÃ3L]FåB<$p`Üié­ºrtÕaý¾œô«ÆÆ›Èù~w> ±÷-·x¨gšA(ŽÀÄ×_•˧>ÿ°Äì }¶tRV¨ìgFêʲ˜>¥e?ªF¤D6 `}ô-úΟn¥{Ê`Ÿý¤õͰ©S›N<ö¦SkÎ+£²†SkÌ#£@ë P0µþ3BJ*@Á´¤r܇€ù(˜šoÎÈÿ4¨SUŽ}tíA‰õË9?±ô‹Ar¼úSu%†Ä†HdƒÞHÙ•&|u·Ä Pý~Œ»"^öÃc%¾u÷;¯ºê*‰l@ü+P­’¾Uç§›OH"úhø€9Ûô3¶ëÏóƒ)šgl³8y‘pKeÿ&Nï à²@^¶® ÖïëŒÄL¹73QW’fÓýŒÝ©r¼Iù|ôµË}p!˜S€‚©9ç¬p `êÄÁ† `j¨é @Àe ¦.Sq!¦ `jÚ©#q¼.@ÁÔëÄt€€÷š5º@ÉÐOÝŽÈ_¹¦' ÈÎÑ•¦[ë_D+ޝ#×Gñ SïÍ -#P°@òNý>Œ®]Êé‚Ô}é²ßüpK‰ïOœætž@ÿ¼?e²t¼ô%NípÚ)‘™›twèb]iyA´(?¨šÓuì €€q’·è÷õoÏï•$+–Õïçj¥uÅiíÒúV'OëÿWUoÓ_®›øŽþ|0îÈÈ Ü `ê® ÷#àG ¦~ħkŠ)@Á´˜`\ŽøY€‚©Ÿ'€îðS Ó& `jÒ‰#mþØ´I—6ìß¿_@‚‚ô/¢úÑöƒtÄËÃäºàžÎÏ8•ƒl@À¯Yê÷é‹$„„¿æCç €*P£r9yñpÓãŸ\¥¿o׌’ýØ•$†—“ÈÌ#—£+Hÿšö§$Ý49YâœÎ9NƒøâwÝtü y1ÿÛ¥NçÙAë P0µÞœ2" P0µÑd3TË P0µü3@0©S“Ni#à‚S¸› P0µéÄ3l{ ìÝ·W~ý%†ôr<íÔžŒ# $¯L“tF´%qÀ팔¹ €¶xýµWdìã_ÒŸÏåïª*ûÃmkÂÀ°ªÀéå'dh©Ÿ–¸ñ}gÞþS:â[Ÿ+/6ü¶G°EË P0µìÔ20þ+@Áô¿&AÀ(L2ä8 P0uö`+ P0µòì26Š'@Á´x^\€%þ< Ïèé4à:OÈÍ…¯4ÍKÓ¿¬fŸÎ–ëCxF—%¾„¡²’ôû«ì⊒×ây?*?’Aì*гú¶:%FTfe©]¿·õÒ÷fÈ ëíh qñüo%¾ÛAø2TöO%ë;ƒd‡ XR€‚©%§•A!P¸ÓÂ}8‹€?(˜úC>@¢(˜mÄXE€‚©Uf’q à¾S÷ iÓ :|HroÛµCoq^iš›¿²tÓmr¾Â5e%V¼QWÀÉð¨@æ|ý>œñèÒn£F<Ú>!€¸&püøq¹°m¯ÖÃn tíF®BÓ äféï_ê;éÖ,^ë4†ŽW¶”ý¥+×HÜ@Ÿqït; ` ¦Ö™KF‚@±(˜›ŒðºS¯Ó à’S—˜¸KP0µÄ42<*@ÁÔ£œ4†€9Ž="‰_Ý»ÄÐõ™¥›ïÅÏËú@IDATÕ•¥ãÛè_\_ É_aÚ«’9JÖ˜@àô–ÉòºÀ._~V?Ù©“" `)yóæÉxF}ñÄèÖ–ƒAÿ dÍÑ䟿1_V¯^ý'Ïx5sæ ٻ馛%†„„œq–— `% ¦VšMÆ‚@ (˜–ŽÛð‚S/ Ò$ P ¦%@ãL*@ÁÔ¤GÚxQ€‚©qi³ õ‡Äú6•8l̓۵ӕà²Ã@Àk· î-m¯¯¶ZbdV˜z ›†ð“@Ö2}'ݸ®OHÝ:ßà§LèŒ&@ÁÔh3B>øQ€‚©ñé| ¦|) €Æ `jŒy ¼)@ÁÔ›º´€¹(˜š{þÈäæäH;¡a¡sÆê_Z¿ô³¾z)0ÿ¦7³ÂÔaCDÀÓÇ&í“&+—$±r´öðâÚ8yq,W?uØèq²ßóÆ^#"Xù$l@7’’ôço«®ú©Øa}õÙ†n6Ëí ` Œm™’M§(]Qúôا ”© €€(˜aÈ? P0õóÐ=gP0=ƒ— €€(˜ú.ð±SƒÓ& `jÂI#e<%œœ,MÅÄÄHœ™ÿÈž¼ü¦Žu¦ßìÔ—V(#/*ö©¬Ø"€€Ç²St¥÷®Û¥ÍÓ#ßÚE².„¿\W:MÚ.'f¢Ÿâ|õ5í=– !€vX¸p¡ óꫯvî— ¾”ýs†JŒj«?o.bL%—£¿W¥íO—¼«n®)ñÛ9ß™j$‹¾ `ê;kzBÀpL 7%$dc ¦6ž|†Ž~ `êv:EÀ/LýÂN§˜Z€‚©©§äpO`ÅË¥×_~VbP`Æ ù1#S—¶m>¬KM#ë³NÝë»@àLÄOËnÿ´ã›VЕoü,ûË÷kìß÷VÙï7è‰ 6”¬çe‡  €ÀYV¬X!çnètÄÓ©ú{N÷®eÿ`r’Ææ{%–:7R"0®Àñ…‰’\ήT‰Ù‰ú}’˜%ûÉIúNžÊ¥õÿcæ/Z%Ç7n,‘  ðo ¦ÿa P0µÑd3Tà P05ü‘ XD€‚©E&’a p†Ó30x‰ `êFAÀiii2Ћ¯i&1â]‰jÑ3J¼+°®ÿfé º”>£4¦†®hÊ«-Çíù¸ÄÁîôn"´ŽØDàêË/–‘>PõW‰'ôцÓ6éï7?ü‘+ÇÏiªÏzm^ZöK7‰•¬?¯e‡ øU u‰¾C'åË#’Çõû·F¼¦uŽ~Üôy)9ÐeÄ$‰½{÷Ö Ø"€ÿ `ú/v@àìLÏnÃÜ `ê® ÷#€Å `ZØ,KÎFêg2¬Š¿Yö'MûðŒ»x‰üO€‚éÿ,x…Å `ZL0.GÀ  ¦nàq+ PˆÓBp8…€I(˜štâH P05Ðd fÈÍÕO¡lв¾ ¡ÔúìÅŒ½úÜŒI{äø‡õYŒÞÕëøtY³Î8yûCàô6}&W׈žÒý³ãžõGô‰XNà·ß~“1]sÙ…:¶ZcóW”†'„YnÌ « 8u”=UWˆoX¾Q†úàÝú0Óµ‹>–ý° úŽ·…ËW[•‚q!€€›LÝäv `ÊWÞ `ê}cz@{ P0µç¼3jk P0µæ¼2*ü!@ÁÔêô‰€Åê5®%#Ì:²Wâ®Aº²4t‚>´´áÛÈñÀbjñ/†ç´wõûiý’ Òzh(ÏÒó3M"€€/^,£½ëÍAc:GÚhô k dªÿ1çŹ2°:µë8 pêäweÅÒ$Nš>Ëé<; €€C€‚©C‚ˆ `ê1JBà?LÿCÂ@À- ¦nñq3† `j¨é L-@ÁÔÔÓGòK`ó&]ñvs§Ö’ئ~§œ Ë_aÚà-]aÊ S' vpA u‰~êë³7¼(WwîÜÙ…»¸@àl÷=]#` ¦6™h†‰€7rssš *üÙ¤·k&×g÷ÔO§ Ž(üz§ÆÙAÀæ'WzKHì×@¿ÿ^\§21•%ó¤Äºw×ãl@œ†.û_d*1¦^”Óyv@À÷YeI§iõ™í™‰ºŸ}T÷h O —ëV¯ü]b||¼ï“¥G°´SKO/ƒCÀ7L}ãL/ü-@Á”¯@À3L=ãH+xR€‚©'5i Ü `êŽ÷"€€[-®i.÷gvK–È3MÝâäf›üù˜®¤øòýTØfº ôŸÑOY§/ŸZYJ^\sýMß|wò?×ð°ƒ@r²þ~]àp\V_ŽG ̧‹>r½Àk9ˆ¾ØþÀ6éè¼Òyë—Ó~ÏÓwÔT/­û½çjÌËÓët- à9 ¦ž³¤%(¦Ób‚q9ÿ/@Á”/@À5 ¦®9qF `j¤Ù ì-@ÁÔÞóÏè0„@Ëú©Þi’$Ÿà肟išµNŸÝx:]ÿ’\æÒü?1b$€wNoO‘b>Þ'ñ»9ßË_Q:u³>{/¦œ.9½}ð}rþ–>·JŒ‹ËÆ©ì±A¬+’¢?//mÚPY¦tŒÄî½ûI¬Q³–ÄQŒ”Þ¾àß;ä$ð©@vŠþ~³÷Q}GÍ«mteém œW’Ö|KWŽ¿r£äW£F ŸæIg `} ¦ÖŸcFˆ€á(˜~ŠHÐL 0 ¤€¦ `jŠi"I  `Z @ÀLý€N— P°Àå[ɉä'$ÇKLýQ÷s¾<¤ç[–—X©K‚D6ØAàϧvÉ0+¤¦KÜyB¶w¡®°h×°‹Ÿþî ;p0F@ Hûîì/×n˜.1/8Lâ¬Ùƒb%D´*+/âšëJü°²¡z‚-ø]àØ+{$‡v!'wÌ’xåÇúN³±?•ý¶mÛJdƒxJ€‚©§$iÜ `ê6! XX€‚©…'—¡!€€W(˜z…•Fð©SŸrÓœ!@Áô ^"€€1Zw¹B9¿Sb G%6)ÿÌÆ2º²´Òõ¬05ÆŒ‘…7ò²õ™]'%J7!#$Æ]¤Ïäsô1EŸñõË7¿Ê¡ÈÈHÇ)" `K“'OʸkT­(ñ¯aºBÍñóŸújÖ6]±ÿþzÝ¿RWœ–ï¡÷9®'"€€ïÒÞÖßÿï¾IWŒOye¼$Ѱ¼®¿üÎ×d¿=ïû é¬*@ÁÔª3˸0±SO©{\€‚©ÇIil"@ÁÔ&Í0--@ÁÔÒÓËà0´SCOÉ!`OfN•O›0HâW½ô/È/UwãòW˜vc…©=¿BuA)ËôÙ¦:=+§oèvCA—q °ÀÐ{˘«ìœ,qè%ºbmÊz]YúÐÑéCMãnЕ¥¡q!¶³bÀE ûsý¾üpÂlIé‚ó/¸v¾“¦E‹²?~¼®8ùð(£¤N ` ¦™H†€•(˜Zi6‹¯(˜úJš~@ÀlLÍ6cä‹@@S¾ @ÀßLý=ôÿ|2[?Ýû£cs:øçÜß/žÈ_aú+L\ØAàoŒ£™Qkãy?›1_"@ÀîÉÉÉBPV?U;¶”>ó9¼¾> ºtJr>4>ÔîTŒ¿ d­ÐïÏWêŠÑ>½úšSJJŠœŠŠ*ô:N"€Å `Z\1®G¯ P0õ- Û@€‚© &™!"€@‰(˜–ˆ›ð‹S¿°Ó) @Á´!€€o¦¿?E:œ0FW–¶¬¢Ÿ ž£`È Ðgm> A>ÞBŸ]Z¡k9ß&Jo˜@ {®~¿|úÊg’mÍš5M5)"€ÞhÐBŸ˜×YŸY5ÜûÒ¸$¾3K®»*çZ‰¯>õªK÷q à- ¦Þ’¥]pY€‚©ËT\ˆ@‘L‹$â°©S›N<Ã6…SSLI"`+ ¦¶šn‹€1%±ùóõ™‹AAA²,ѱïˆ3æO—ã›í‘RŽO±6ü¿@ÒZ}VßàÚ÷ŠÇ°!ÃpAl-°~ýzß ·J ídk€¡²“s$Ÿ˜¯ÊH\¾àGCåG2 `_ ¦ö{FŽ€a(˜f*HÄL-0‰ <*@ÁÔ£œ4†€G(˜z”“Æ@ÀƒL=ˆIS à[N½;J‡ûÿ!14•¦¾z3¢@n†>ü7p¶>›oÍâµFL“œ@Ÿ <óÒÓÒ×”ýïJŒ½(Úg}Ó¨@^Ž~FAf¢>«4#1SND¬ÓïÇE|/û úY¸!€þ `êï (±ÓÓq£…(˜Zxr”H€‚i‰Ø¸  P0õ('!€€(˜ú™.@À»×ßÚE:ØÛp§Ä}ö©w{¥uŒ-úîQI°|n‰¯½=Eb£FŒ8Ù!€hÙáRi1­Ë)‰Á¥ø=ÁÃÄ4‡À?Ù'uéþgõ`Ù©úΗ”üg•Vˆ×Ï*ˆÑPÿâ¶rïÜ/ýÓ/@#P05Â,¸%@ÁÔ->n¶¨S‹N,ÃBb P0-67 Pb ¦%¦ãF0˜SƒMé €@Én¸½›ÜüÇù¿I ©è¼‚ääÌ?åøžt…ÉE“ë—¼3îDÀ Ù§õÓfÿ¹]2œx­>3ìŵq²_¾j‰ÃÇ<)ñÚöí%²A¬&°eËRï±½$†^hµ!2 'àxëýþ'õ_½Îѧ¯·Ó•¦Ž„Wê¯å®©'‡~^·ÍqŠˆB€‚©!¦$@ÀL=¡Hf `jö$ð”SOIÒ® P0uÝŠ+@ÀØL=?d‡%è1 ‡Üµ³ÎV‰iËHì–~RâKËuÅ]ÃI¬06–HüøŒçŽÌ¹L¿Þƒ\¤ úC)9T¥^3‰_-\긄ˆXBàÅ×_”q¼½ãu‰qMc,1.€™N}zXÒMØú—ÄŸnÑwÂIÑQ4š+/'ê;Àô([@ÀÿLý?d€ `êaPš3•SSMÉ"€€(˜z—¦pQ€‚©‹P\†† `j¸)!!ð”@󦵥©+Kï‘8îRý‹vìsú 3V˜zJšvŒ$°~ÀfI'm´fåxFØ{#äÀŒ5éoí¥ÏüxïPÙoÕª•ÞÀ0‰ÀÓO>&™ž<©+Ónì}«ì7mÚTbë.WH÷Œ$=÷­q3ueÚ‘”üŸoqAr<ªWi‰ÑµõÙͲÃ|"ó…~?¾ÿè é¯Fõ[6ÑßÓNé³M¿]¶ZŽŸþù>É‹N@¢(˜%Äy0SÓM {@€‚©iL%@ÁÔTÓE²6 `jÓ‰gØX@€‚©&‘! €€ Ü7¸Ÿ¼8±ö‰ý.H–˜—ÿ!Ꭶgëõ§4Ðl°€À‰/õ™`Ù©º”:®mYUxù0‰YŸê çËiÙmn~Šò"áV˜ª[3 $/<-éVø£œÄÉÓõãmk×®m¦a+ ðþŒ÷EáéŸÓ2 ðÀé¥'¤¥´‡%nì§+MKGh/¯Ô¸¿®¾Cë¥×&ê¶ €€É(˜š|I¼'@ÁÔ{¶´ì ¦þŸ2@ÏP0õŒ#­ PÓ‚T8†v `j‡YfŒ P"×µ•ûzD/—xÓ9ï_¨Ï4ý´š>ôB{]¡W¢N¸ ? ìý›ô|Wl‰þ-±~£¦‡Ö•Z—_~¹ì³AŒ*Ð¥OImw#ý¹žfÔTÉ Ó dÌÜw>¶SâÜ^A3³ô÷ãi§ô÷æy_/6íI8S€‚陼FΠ`z/-'@ÁÔrSÊ€°­SÛN=÷¡SbÓB€‚©!¦$@ÀH7]µ¤Ó-ê'‰½ê¦9¥7t¡îΩªÏ0­Ð¦N@ìZàôÖdÉ/~î~‰+ûèÊGÒŸë­€'WÆÈ¡à¸*W­ß긄ˆBàða}¦â5··“|ÂnÖw€"9’@Àb9_é÷×ä‡ß—‘~¯ÄÊ)$þš¤ï¼Z·õÙgƒ˜]€‚©Ùgü@ÀãL=NJƒ `j É pK€‚©[|ÜŒ@±(˜‹‹‹@ÀL-0‰ <#0úᇤ¡Io½!14Xÿ’ž›—'ûù! =3SöË_¯+ïJ·×•xr 8ü‚®ü˜Ô(U2½²†&6z¸ì•ÿ}ºzÃ6§óì €f `jÖ™#oð¸S“Ò (˜pRH   `Z ð©SŸrÓH€‚©&ƒT@À¿úéŸÇ—DuÅ]P~ ¨c?88Xοøö ¿JúBbÈz½ì°AÀ`éùŸn›øü.Éì’ªšà‚­º‚:!AW–Λ÷œhÞ¼¹ÁF@: `7E õ¡á}zu•¡ÿuZÿîÞ¥½ìïþKÿ½>}­ÆˆŠáv#b¼xM c¯¾£ªÅñVÒÇ{¯N.´¯}ûöÉùjÕªz'@³P05ËL‘'x]€‚©×‰éÀLýˆO× P" ¦%bã&<"@ÁÔ#Œ4‚& `jâÉ#u0†ÀØgÆJ"_ž˜'1¸>+M13dq¦ÀÉU'e÷ô·Ç$F_“ 1þ’8‰i‹²$¾vûD‰W]u•D6 €€¿.¿øBIá‰ú›%NÖŒ¦oÒw||ó{ލÒ$ZbXóx‰ŽŸoz5[pE 7CŸüq¤\¾zѯ®ÜÆ5 €€å(˜ZnJøZ€‚©¯Åé¯$LK¢Æ= ` ¦F˜r°‹S»Ì4ãD¢(˜%Äy@ÀEqÏ=&W~~l®Äà¯4ÍËÖgFžZ¦Ï\‹mUF® Óg¥ºØ—!P<ý² (øË2 u_º´×üpK‰ïOœV¼ö¹ð’À’~–¿«›Än:U`Oý¿ÐpÓ7èé‹&×/ð:"€ÀÙ²çè÷Ñü7¿”‹x&éÙ­8ƒÖ `jíùet àC ¦>Ħ«â P0-¾w €€!(˜bHÂ&Lm2Ñ Š `Z$ €Åxâ…Çå†OÍ‘ÒPÿRïhe×°íò23]ŸuþÄ §ˆø] ëCýz]4ó{É¥|ùò~ω@¿®º¬©@Œ©½VâöúójÔÙ ˆo^Z^Äw¯(18JŸqªgÙ"`o¼ýËiƱLÈLÔg—g&ê~ð9þâý¯JìÚ±«½Á=Ø^€‚©í¿@O P0õ´(íùR€‚©/µé Š#@Á´8Z\‹€³Sgö@¢(˜%Äy@ „O½ôéÀúLÓáõ²¤åá—äIìõE¬Äî#'I¼ñÆ%²Aì*@ÁÔ®3ϸ@ÀëL½NL^ `êE\šF P0-7! LùB@Š'@Á´x^\)Pýœ¹æªJ'%–‰Ô[rõøiÙúbÆf]qzÞDV˜‰Ê>8½9Eú¬²®ŠÄ?˜#±B… >Ï…@ÀÞ))úóè’N-"üvýto{«0zJ&óµ~ÿœŸUUÈÛ§+¶«E&Ë~ÙŽã%>4rdÉ:à.@À"L-2‘ Œ#@ÁÔ8sA&% `Zr;îDÏ P0õ¬'­Ù[€‚©½çŸÑ#€€ëL]·âJ@À%™3õ™”냂ôY¥Ž¨Ù?tBÏ/<ù\Ü̥湟$ÎÒ¯ÏKü%ý-ùSŸØ®];Ù6úq‰7öI>t‚öøú›¯eðCgÝ/1êÊpûb0rJ(¹&GîØàN‰CÝ'qöÓ%Þs× ‰={ö’øöäiÙ €v `úìÝyœÍeûÀñYÍŒ±Œ±‡DE©È¾d)Z…²UJö¥R‘ìŠJžT¢D"[‹­)Š"û–]’Œ0f0 ³o¿ç¹®?G3c–³|—Ï?ßë|—s/ïû˜éuuÍ}ìºòÌ\&@ÂÔe´4ìF¦nĦ+ÈV€„i¶<ÜD G$LsÄÄC €Àe¦—)xxF`êÌ)Òñ'»¦Kô­“¾Ù©g†C¯ˆÀön{%¦v™¿GÏßÙQT^$—¸ûàÇ9Cœ$Ðg`oii]‘5ƒ+¥oî¤öi+ Ä…%Èôê„7øÙT­(½z·”K‘§%6nÚìêG8Gl%@ÂÔVËÍd@Àˆ$L¸*Œ‰„)Ÿ0Š S£¬ã0£ S3®cF#05Â*0@à¿ÍúPfl›&ѧ•¦|0Ü/pöûHéôáã§Ü§ŸÃ]á:–Y{µ²kÖNÝ ­fõ;äÆ/·é@\ œ?^ÞâðÎÄÄD9¯ÙâN‰A½|îs‚Y ¤%ëïïÔ9~òÐÎ_veý0w@þ%@Âô_$\@<#@ÂÔ3îôê(@ÂÔу3p½ S×ÓƒýH˜ÚoÍ™18W€„©s=i È·Àô9º—é´Mº·©Oý«*MÓ+ööÛ/}•ëQ^b±úº§d¾@¶øãÅ2ÿ—ë¤JœwÐGâùXý_)çý_(±páÂ9 €¹ˆŠŠ’·4ªSCbñbE$¶ïÔMbé²×I»òu‰A- Hä€×H^ì--yïk‰•+W¾ö›x@ಠÓ˼@Œ!@ÂÔë`×Q0µëÊ3oÜ/@ÂÔýæôh¦öYkfŠ® aêWZEò-0sþLicÊú÷%ú¥ïiº½§~{ù5µâoCͲr¿D“bùî“ì+{4N&öÞß‹×ÕJ¯à¦Åå<%\÷,Xkˆœ÷íùŒD €@~úv{Rš9ò¥Ä$o­$]ð{²œ§ÒJ¹ »Bå¼H]ý‹Š€RTœ þ+𤑔ô›þ…Ȩ6¯‰KǶრ¦y@ã- €€;H˜ºC™>2H˜fH@ÀÝ$LÝ-NV ajÅUeN àI¦žÔ§o@ Ÿ}ñ™<Õ=}O·”Ñú¦ÎË´Âô·é¦M©0Í'äQ ù’V˜þ^+¼Ö-[ŸÇ–x à(púôi¹Pã–JÃûkÅ{ÆS[Oê«/h¥éŒzú`IyQ¢M©ŒG‰XVàäç§dn~Q‰“"5ÆœM’ó¸­,mTïv9ÿeÉ@ò&@Â4on¼ p› S·QÓQ6$L³ÁáäK€„i¾øx³MH˜Úd¡™&F€„©a–‚ €™ øûùʸZ9à§…¥^]Ò+L­ž^aÚŒ Ó̹êLÄåºGÚìas¤ÙZµj9³yÚB ôëÝUf_íÔ|‰ýêheûÄÍZYúêÏŠS¶…Vº‡´.-| ¦ÿbÔÛ°¤Àýȼ:WÕÿìr‡þ>¾!D§£…¦^,ÑŠë?kå¶%1˜ à¦n@¦ @ ?$Ló£Ç{-@ÂÔÙ¢´‡$L3$ˆü[€„é¿M¸‚¸R€„©+uiȃ@LLŒ¼«x¨– üÖM¿%Ø?½€&U ¼Fýªv×/#Ï—¸[+nòÐ%oA ÇèçóÑÀŽòžñ¯Ïñ{yÈNàܹsr»Ry­KNÓJº’é{t‡¶×ßw>T”fçÈ=k œùð˜L°¹w¬ÄOÔJìŒÿ>ô£Ù)©úïÇÚÌp S×ÙÒ2 '¦ybãMn aê&hºAÀ†$Lm¸èL9×$LsMÆ@< 0ÍoB\'ðÆèW¤ñ/æÍ–èë«{˜úxkÅ€VÖ¤¤èfU©µ Ësésr ÄM׊–]k—žüýý]Ü#Í#€€]nºóF™já>}ƒùýf—µgž98?%R.tú’Ä­Ýô/@nü(XÎÛ¡{žV¨P!çò$ €Àe¦—)xC€„©1ÖQd/@Â4{î"€@ÞH˜æÝŽwÚG€„©}Öš™"€€gH˜zÆ^@§ ,ùn±´õæÒ1}šiåŸÓ: !2ˆ]› W'´Ÿ$±U«V™<Å%@ ç6l‡û~ÐKbÀƒT–æ\'í"°C÷¶ïQµ·L¹i½&6l(ñ¶ë Jœ.Ÿ¼è#ñÉÇ;J|y¸V:W©R%'Íñ  àU£iuQð릿·¼}½QA4%ˆŸ®ÿ.ön؇  €€H˜º™.@w 0u§¶}û"ajßµgæ¸J€„©«di×Ô$LM½| Ì+@ÂÔ¼kÇÈ@lV¬Ò=%_;\žón¡• ‰Ç´²4zêßrý¢—VðTšpK¶íq+Â'‘Ó™5õóôÀzwúN­4}gk°\¨xs5‰SfÌ‘HÅ©:qDÿزe‹œôz§»Ä-õçÈÿ?Á+ì+¼Tÿ;íË ¡j•ªöÅ`æ €€H˜º›®@w 0u§¶ýú"aj¿5gƸJ€„©«di× $L­°ŠÌÌ(@ÂÔŒ«Æ˜@\¬üi¥<=øýþ/mÕÊÀUSä¼þ~+M¤ÂT 8d+÷O¼Ü›ò—Ä¿újårÆ›>ß«¯f ‘ÛþI’¸pñ‰Í[ܯpDÒFÓ=??§•èEî(„ ¶HÚ ¿_‡Þ;R,žìø¤íM@Ü)@ÂÔÚô…x@€„©Ð-Ü% S /.SCÀC$L=O·† ajèåap `¦6Xd¦ˆö8x@¿Mµõ=õâð3±D©KÝZaZù?T˜Úû“’³ÙGN“»úGK ‹Õ½çïÐJ˜ûšÝ%× %ñþû©(ØX`èÀeö)©ús¢c§§å¼~ýúë´¨-1õq­`÷ `Sá`)”XýËž¤èd™Wb¤þF™D9OHÐxLÿ´~à)9Ÿ6éc‰@Ü+@ÂÔ½Þô†¸]€„©ÛÉ-Ý! SK//“CÀ%$L]ÂJ£& aj²c¸ `{¦¶ÿ€VøóC2µ‡šÕ•x¸ïE‡©=¯§µæi…éïPaêĉƒ@JœV†õ‡\ ö•Ô4Tb²[ú´‘øî¸÷$r@ƽ¡{”®š3^0â¼ôçű(ý¹â[Bj¯{ª –¸°AÿÃëôü“2·å¼%Þ\4Mâ-EõßÃÞz¹É‹·ÆOÔ @Ü*@ÂÔ­Üt†¸O€„©û¬íÐ S;¬2sDÀ5$L]ãJ«æ aj®õb´ € S> €€Å""´4¡aí;dfEýtO,­_ðòJMÕWñIº‡Vœöx•SÙbLljçtϵ¡þ™6ÿ©VÈlûa»Ü ÔJ²Læ"ØJ H°þ<8Ñ_/EkðZ´_æÒÊõC‘ú{ªDƒ¢r£Dçr¶rb²Ö¸°$\&Xú n&¿¾“îmš1ë/öê«oR[ʋϗ,ϸEDp£ S7bÓ à¦îP¶o$Lí»öÌü 0ͯ ï·‚ S+¬"s@;0µÃ*3G°¥ÀþýZ²“ %<ÞÞºW–~ûpÆù©ˆSâ3lú`‰>-µBЖhL:ß1¿ê·ûŽm¥{¶kÛ.ßmÒXCàýIºãÑ¥¯É„Þkë0±qô÷Ôè5z¹ÂCÅåEhû2Ïq‚€.íֽ忄Ét¶öÒÊêK‰:»þ[«Ê‹M»ZaºÌ0 SÓ-Fr&@Â4gN<å\¦Îõ¤5¬$@ÂÔJ«É\ò+@Â4¿‚¼p­ S×úÒ: `ÍÛ6ËXŸÐW¢ÏÃŽ{j™f" Ô£ Zsãn­Œùzî·#€€ñŠ’A ¨«?/ÞúM+ëʶ•ë¥Þ~Zqj¼0"ò/ð»î%ß±t'iì«3$ö¨)qÂæ‰ág.Hä€ à^¦îõ¦7@À°$L »4¦ SS-ƒEÀ#$L=ÂN§ aj°a8 €ÀU$L¯á°»À¶[… Ï¸^}Zg¿§iâ±8y.ÅO÷F *§vw´ûü“©ÀדµÂ´R¥Jv'aþ .ðê¨!òêãEJ,? ¢DŸý=’þK $†'ɼªþq‡Ä…3:̳÷ÓåüË¥Ë$Fœ‰’èð' €® aêZ_ZGL'@ÂÔtKfÈ“05ä²0( !@ÂÔËÀ <$@ÂÔCðt‹äR€„i.Áx°‹ÀöÛeª½Çö”èÓÚqOÓ¸Zñùå)¹_ø©r‹Õ-*‘ƒ½¢w\€¾7=/ñå^¶7³GËMZ5–×:'ѯïå{¼@Àê±ÓtïÒýd;Õ7Êý† fû7@\#@ÂÔ5®´Š˜^€„©é—У aêQ~:GÀÐ$L ½< ÎÅ$L] Ló €€“H˜: ’f@« ü¾çw™Z·Ñ]$&–9+ñúõá}½ôÛ4I¯0­G…©ÀØüš {ß&ÍÖo¹Þ³a¯ÍE˜>_&}Çíº‡©}˜) `.¦æZ/F‹¸]€„©ÛÉ-Ñ! SK,#“@À©$LÊIc& aj²c¸ `{¦¶ÿ€äLàýIo˃˦½"qÕ“º§i›¥ú­Æ{ïÒ ÓÐúT˜æLÔOî·_&£§_xFÎ %±lÙ²ö€`– àõÁ´Daò¾I‹Ö)„ –HÚ¤‰3°É ™k×'»Y~ÎL°‚ S+¬"s@Ü @ÂÔ Èì‚„©•)!G¦y„ãm¦ ajêåcð `c¦6^|¦ŽäDàë…ŸËcŸ½¥ßv¾´~«qÆ{M¯0ÝÝ(½Â´¦6vŽg¿”é· ‹8õ~­°™´ÅOÎÿ³¹€Ä»ï¾GâÐQc%Ö¨QC"°ž@ó¶úïýì=º¶Qýy`½™2#; ¤&ê_R$žI’éÇM”ø`h+‰SÞžbG挘V€„©i—Ž#€î aêg«õBÂÔj+Ê|È¿ ÓüÒ‚qH˜wm ¦yQã= €€ ¦My_f9å­{Ü+1U ½Òƒ×‚}ú­¯Z§W˜6 ±S¼–Àáþä‘=u¯Ûë ë;þ>¯qÖ­0²U??={ö–ÞÕ=õ)Ž `#GŽÈ4Ú½ô¨DÿöV˜s°«@伓2õ„?c$ƜՊÒÄý/£²!ú{--ÅWî¯Þ¸OâÍ7ß,‘ €€9H˜šc% àv¦n'·T‡$L-µœL| 0Ío6˜ Sƒ-ÃA\$@ÂÔE°4‹˜U 99Y†¾é·u—,Y,ÑÛ[+&||´bâò¹¯žÿp`•<çÛA÷ð’¶8¿é‚Ìùö '$¶«¬Ÿ‡É;õsròRA¹þL¿%vïÕWb… $r@ó \ŒŽ–A¯üá‰:t˜ñ{búÌåü?;ÆK,R/X"Ì(³YÿTâÌ­4ýµ³þž»µ„ãlZ/Ñ?­èýæ<¹Ñ¦MÇ8C0´ SC/ƒCÜ/@ÂÔýæVê‘„©•V“¹ 3¦9sâ)k0µÆ:2 @àZ$L¯%Ä}@ ýû¨<×®ŸîQçû•¦9‚³ØCÇ^ÿSftöïx‰å‘è§Æ[ÏW—óe –K䀿øæë¯eÏöxRbxTœÄGj.ñȹH‰©í$”Ò=Œå„&H<(#ÿkŒþÞ›û°þwOÛ[tBVÈ‹Jµ²ºÿþ&)ÃFì)@ÂÔžëά@§ 0u:©)$ajÊecÐäK€„i¾øx³IH˜štá6 C¦9„â1@œ „“Ûôm%ÑïqýÖØœ½›§Ì.w\+KƒÊêTtëÛËÓJZ¢/NÔ½q«T©rù/@ÀÜõªë¿ç© ËDþÑ­M½æîÕ=Œ—Ò ¼Ò·É}ÿ†¡C…˜{âŒÞÖñ{´ÒÔÿ{­ ~ Ì9ñ(ãQâ±*ÏJ|wò‡¶vbò €€ÙH˜šmÅ/ `p¦_ „©‹i 05ðâ04— 0u- #€ aêQ~:G¬+ðωdr­z¶”è×)óJÓK‹ô[fÏî‹‘ç*Ž¾Ùº(ÌÌ+z×%QèQ¡Äa‡£‚øaåJ™É»ƒž¸²Ã…LgÖi©–žµOoלy[¦Ïq# $F$Éð*ïÖÊê¯ç~+çãÇŒ’8çãIo¾½®Ä¯W®‘È@À$LͱNŒ0 SÓ-™[LÂÔ-Ìt‚€GH˜z„N=$@ÂÔCðt‹¸I€„©› é°«À©ðS2õ»< Ñÿ)­4½¸X¯7’ë+Ãý$V£•rÂÁriɺþ©su½w®Ýe¹92!ì.иÎíB0¾†–® ÓŠÒ×Öè¿ÿ -KÈýâíËØŠù›X nzŠŒ~×Úß%úûû;ÌæûËå|ëÆõGyËá>' €Æ ajìõat €€éH˜š~ :¦Nå¤1 )@ÂÔË œ,@ÂÔÉ 4‡L€„©Á„á €VˆˆŒ©5n¬{Õµ.§ß"ûtýÖäû—û׿I…©U?WÎ+þÇd9ÚgšÄfÍš]y›× `bµkÖÈè;µ¿_b`ƒ¢C;hE©·¯VœšxŠ ÝÆÉËôó;û•9¢pg;³ÕHKÓÊjoo>÷ÙBq0˜ Sƒ-ÃA¬*@ÂÔª+›·y‘0Í›ïBÀ $LͰJŒ1¯$Ló*Çû@s 05×z1Z@À´o¾2HÆ·y†Ä±wEKÜ}Z§tïwº÷×õc«êŽ–ˆ='ó»ëÂÝg¼û‰¥çËä°“À¼ódº¯ÿ¤ß^´i°¦Ï\-*´E÷,}¡Þ@™a¯®½,:S¦… ð?¦|@Ü"@ÂÔ-̦鄄©i–Š"k¦¹&ã & aj‚Ebˆ €€H˜:“¦@þ-0jH¹½y¶Äáõ´²4U·ôò:©ïy|µV˜VG…©ŠØãû©VìløfƒL8$$Äg–XX m×Gev‡«í—X&À³ejVˆ?š(Sl­{mOŸ4ÝêSf~ €ÿ aÊÇ@À¥$L]ÊkúÆI˜š~ ™ÿ aú/.˜X€„©‰¡#€ù aš<ÞŠ µÀŽ;äæãíZKŒ¾xQbÆ·Äú¤[ljú·Çñ•ûÅF—“ÈÁÞ9*=v@÷4:H÷†<üU¹^¤H{@0K, !³¸·s ‰ž²À¤˜‚ebþŒ•¹Å—˜©•¤>‘ rž®1¤@Q9?ô§~¾å„ €€åH˜Z~‰™  ঞq7[¯$LͶbŒ¬H˜fmÃã 05Þš0"@ÀH$L´Œ°±@LLŒÌ¾AËzzøØXÃúS ÓŠž¤þ’Éîé‘*ñ?› Hœ¨[šz=Þ±½œzs‚ÄòåËK䀯X´x‘ j䊡 7-h¼A2"Òö÷Ó=v[TÔMÕï*«±R1} t!¡{¬ÇÄi*€ €ö ajuf– €€áH˜~‰œ:@¦Nå¤1 !@ÂÔËÀ r(@Â4‡P<†ØT€„©Mži#€Fˆ‹Ó½,ëÞ_G†Ø‹JS£®U~Æ9혼ýÍëtoÛ§ïplmùa=½>H^¤©(q瞎r††x¢÷ã2–½•wJ ¼.À0cc \-–¢¥'ÞÐ_8/WK–G×Ó¿xÈx¾Ô{ú{hßaý½U²dÉŒ[D@ 0µðâ25@ÀŒ$L͸j¹3 ÓÜ›ñŒ.@ÂÔè+Äø® az¥¯@® azµç €†HLÔ½Âj5¯)ã ì}¥é¹/NÊsj…H,T…½ó ±W "9Z+xþñ‡ÜÙÐE+y¦ïò–óÏvùJ¼«Q‰Ýú¼(±CÇŽ9 €€çΜ9#—(QÂaQQQrÞ´C‰]ôß³ÃCœ `p3“Ãd„5“ô¿?–¶Ó½¶ëÍ-*×§~±Jbݺu >†‡ à ¦ÎP¤ @§ 0u:©!$ajˆe`äI€„ižØx“IH˜šd¡& à&¦n‚¦@¼ $'kEbõ¦ºÉeÁ¾~ }ÿ¨œû…ëÞ§Þ¯—ó"·¥½­ÃÓœxZ |ö BÒ® Sƒ´¢4¸I¨œÕ¯'>°…½J=½Vô@†@xx¸¼lR¿–ÄÐÂ;<Õ]bÑbúï÷Ýå<¸Y D˜A ñl’ ³Â–JŸnÝIâÐÏI¬QVÿÂ¥ó+ŸÈùc=&‘ €€µH˜Z{}™ `z¦¦_B‡ 0uààS05Å21È<—G—‰,úIDAT 0Í#oC,.@ÂÔâ Ìô@«¤¦ê^—·7ºM¦ŸòÄ×*ÅHüx—V€D¶© çEî ÂT vˆO¥ÄêzWÖoÎfÜj­ô™Ümª\jÑ¢EÆ-"xX ëme•N#16µ€Äù»S$&éÞ¥A µR¼p=Ýû1°t€Ü÷bkSuàh(„Oõ÷Ñ–•Ûd\AAú{)ìØ19¯qG5‰|ø±ÄÎ;Kä€ `m¦Ö^_f‡XF€„©5–’„©5Ö‘YØS€„©=×Ýê³&ajõf~ €@ÞH˜æÍw!€xH s»‡¤ç{RØóÎ4‰M>×½0O·¦ÂÔCKã”nc¥+ñéFÒÞ쩟9¥]Aü K¯¸kVïviìïg/94ºS·:õú‖’~´]o—h[F^„Þ[ÜáyNð¤@ò ýœN¤{“Ö«[ϓáo@ƒ 05Ø‚0@ìH˜fïcö»$L;‚ŒßÊ$L­¼ºö› Sû­93Fr#@Â47Z<‹ à1nµ–¾ïñúYb×j±ciö…V˜ž|¸¼\/Z]¿ÅÙá!NL#´@+VÏûIÆ\²dIÓŒ"`užOë·„7º¸H¦šQé?âýwûö/Zù_±m)¹_ì}t¯i«û0?c $nÕ=wŸ¹óyès½ž3ö€ €€GH˜z„N@r+@Â4·bæ~ž„©¹×Ñ[[€„©µ××ê³#ajõf~ €€sH˜:Ç‘V@\$ÐåI­dÚ¿Q÷,-QH+”Rµ€É+U¿ÜÖ믈‹2ÿÞ×K,|K°‹FD³î¸´)NºÒ`„Ä]{¸£[ú@„‡ëf¥5ªêÏÛÈ‹Iò®Šm´¼xÛÒ9h…Gp¯@ü±Dé°ÞÝ#ûÓɳÜ;zC0• SS-ƒEì'@ÂÔ~kþ¿“0µçº3ks05Ç:1JG¦Žœ!€d/@Â4{î"€xX ,,LF°oß>‰>>Zazu ‘û}÷–˜öD‚>Ïžyâ`¶CÒ…drñ5úíÚ?/]c¶)0^,+/s«Ö°šÄÐþéýº…©eçÍÄŒ%–þ§&Þ>úÁKMÒ?=IŒÔJÒ„3éñ´Æÿhåó޵;5Fƒ `H¦†\… !@Â4CÂ^‘„©½Ö›ÙšK€„©¹Ö˪£%ajÕ•e^ €€1H˜c €€“êÞ[GZLî {aúieª“»¡9 $}§Ì5_^T¯^ÝÅ=Ò<\K`ÕªUòHÿ¹ú-ã[¸Ö[¸€Óâéï÷#o•¶SÒ+LˆjÅiÅô’çDÝì¼|ÖòÜ‚…ß8},4ˆ `=¦Ö[Sf„ ð_¦Öø0µÆ:2 k 0µÖzšu6$LͺrŒ0‡ Ss¬£DÈ£@ƒêË;½(Ñ· o¦-¥%ëÞgÉgõÛžýJúËs{£eú&.º\àüòéãüÊ )ñå!Ã%úùùIä€îxnð³ÒÙš %ßXÐ}Óé¿·#¦ü-WÒ½u?¹?ÅÁè'-@õzëHm¹¾zý6‡ûœ € ™ ÓÌT¸† `¦æ^J¦æ^?FoM¦Ö\W³ÍŠ„©ÙVŒñ"€æ aj®õb´ €yhôPCyg\«h‰¾…÷4=<à€\(¦•¥×¾)=ñ6g ì·_šÛÙC÷ ›¹'PÎßY§ßzü\ïîr>|ô›Ë”)#‘8_ %E+÷ª7½]êC…·ó•i1¯Ñ?DÊ[}ÖjÜÛKoÓ?Pðz`I)¹ÿçñÓyí‚÷!€ØH€„©›©"€v ajÎÕ'ajÎucÔÖ ajÍuµÊ¬H˜Ze%™ ` ¦ÆXF à&Æß%=Å<%ñŸ·þ”8¡žî]:ò€V0^7‚ S7-I¦Ýœ[¯ëSgû)¹ÿU­Êx8"F_õZ¦n›"‚åBÄÙó@ÀÉk×®•ûÍxFbÐýZ‘ïänh< $Eéïñ‚ËŠÊû·­Õ½JW?­{”7ÿL›MIuü}’§Îx €€åH˜Z~‰™  €À•$L¯Ô0îk¦Æ]Ff_¦ö]{3Ìœ„©V‰1"€æ ajžµb¤ €N(]L+Iì” ­^ˆÓÆŸø-½Ât$¦NäÎuSa#É{~zD+†Ñ&¦îЊ¶ýQºNÝ»÷ϦF_!ƇØK€„©½Ö›Ù"€8I CÏÒÒ’Y‹%&¿ª ×úL+Lã;k…i¡›©0uy¦Í\:¬ßªÿéY¹ÿòÐÑ_èÿR¦Ïs®-°}ûvy¨ûø. ÞZS:T÷Ð,Úõ:¹\=0ý ‚3Î|~Rš{.-Jâ“·i‰ï'»tæî×ÊÞò+ËýîÏعóÓýüÒKƒåŒüO`÷n-Åîüú“R þ{BW $îÒ¿èR¹‡t3è…ÁÙv¥?÷‹+–ísÜD@ ?$Ló£Ç{@l#@ÂÔXKMÂÔXëÁh¬!@ÂÔëh¶Y05ÛŠ1^@À$Lí±ÎÌ@ ŸiiZÁ˜}|²ßÓ¯ë ]¥ÇßKm•èw½o>GÀÛE@—Ák{wýväú7©ë3êS¤¼VM~cº\hÛ¶-p .~ꔼúé§Ÿ$vèØQb@@€Ä‰ïM8ýï%­YX"\!x*Iš½õHu‰_ÎøÊÝÐ& €y aš'6Þ„ `7ŒDiF$aê¡O SÁÓ­H˜Za­3¦ÖYKf‚XQ€„©W•9!€F Ç€î2–¡[$úU̾2Õ07è@Ï$ÊÈÎ~}ZbpC­(-r[!9¿ô‡~«wK¯Gä|ÒØw%r@/¯¯¾úRõÓ½"#.$Èù}w7’xè´V vÓÊí¡þ°!à2ØtïÒý›¸¬F@ ¯$Ló*Çû@È Ó å⦹ÀâQ® az§ aêQ~:G¸† Ókq@gôØKšÙZxƒD¿Ê™ïišx2^î_ÚyQbèÃ%%rÈ@ü§©ò†m?l—˜»x Ô¬VYf7«éQ‰ÿDëdçíÓŸKßÒ?ÅoÔ7þ BåâMùVr•☙@Z²î™Zÿ ãp%DêyZ„ÆÀH­\þf¾î¥[íÖj™5Ç5@<*@ÂÔ£ütŽ `¦î]i¦îõ¦7s 05×z™e´$LͲRŒ@ '$Ls¢Ä3 €8Ià™Á}¥¥M×Kô«¬{š&žÐÊÒð GäzÀ %–~©’D¹ˆùU=Ƕ/ol×¶]îài,,ðÝ·ßÊìf¼ÚEâ·m/8Ì6^·–ôzüko¹þãQ·}H% ' :$ç!Þ)+‡êç¦jˆV,W)ª¨#×j%sÔyýKŠ   ‡v8A@À$L° Œ@À6$LݳÔ$LÝãL/æ ajÎu3ú¨I˜}… €@nH˜æF‹g@p’@¿¡ÏIKk/­’xaá_?ºW+qžÛ,ç¥Ra*¹<$¤ï¡wÓÞ[äKç|“Ëxë Ô½ãf™ä‡ ÿ”øåA­œ¼Iç^¾m)yÚ’½”U„cvÉQZšüç+ÈcóÚhEé£U4f¼÷¶™EäåÂ6J¬VÊå " €€qH˜g-  €€H˜ºv±I˜ºÖ—Ö­!@ÂÔëh”Y05ÊJ0@g0u†"m € K#‡µçîú·Ë;¿˜$qùam¨ïÝôÌËúmÖ¹lžÇÓ’鋯'ëž•*Q±Ë‡ åË–ÉËîÛJ n*±x­,ÍxŽˆ@^NOÔ¿œèP4AÞþî}º·éË‹Êy¿ñ $¶lÙ2/Íó@\*@ÂÔ¥¼4Ž €@æ$L3wqöU¦Î¥=+ 0µÒjo.$L·&Œ@ ç$LsnÅ“ €ä[àï£ZqsOƒÒÖÑg/9´¹"½Â´Ïîô ÓAT˜:åò$z‡úö½éyyçË/¼œËxë |4ãC™Ü»»&J,R¯u'ËÌÜ.´@÷Ämsg é{Ý7³%Þ/ñÖ§þ#±_¿~9 € `$¦FZ Æ‚ `y¦î]b¦îõ¦7s 05×z™m´$LͶbŒ@àJ¦Wjð@ œ:uJZ®y[‰÷ߨ¥ykNjªžŸ8¯•7GäBÉ!7è ŽyHMPØóãÂåý#F¾%±Wï>yj7!`%û;Ü'Ó9Ýø¸DÿbþVšsñ@òOú{mb·wd÷5×ÏÙ/k–ó{ïÕóŸ×ÊÒwޛ졑Ò- €Y 0ÍÚ†; €8M€„©Ó(sÕ Ó\qñ°ÍH˜ÚlÁÝ4]¦n‚¦@— 0u)/#€ à(0wî\‡ Þé¦>>>r=ã|ãî rþkšVäøÝª÷ÞÌÉ5έ’gîØ ¾Eƒ´rwùa­€4xˆÜyÈp‰ ¸f›<€€ÙŽ=*Sxô…6ý;š}FŒß‰»“eÊw‘8ü%ý¹zõØåÒùóç%–*UêêG8G@Àã$L=¾ @ÀN$LÝ»Ú$LÝëMoæ ajŽu2Û(I˜šmÅ/ €@v$L³Óá €1V+tVD'#ñ«¦•‘–iºqHÆúÓ#IïH/d:§S¿9P^LZ¯O‹¾úRÎi×Aàˆ€>™õ‰Ìj–q‹4¶à,™’»ÂõççͪI—Kf/uW×ôƒ €€ËH˜ºŒ–†@È¿ Óü’0ÍŸﶦ Sk®«§fEÂÔSòô‹ àJ¦®Ô¥m@œ$ðêÛ¯JKË¢´rÇ—JÓle£÷^’û%¿ÑoÿþíÉ9_ý—¾íÓ}…äÅâÝZjÚ½K'9iÈ+«V­ªrDÀ‚­ž|XfVûO‰J°w¯—ÙmSŠ›®?_wÿºGúôõõu[ßt„ €€«H˜ºJ–v@p¢ ÓÜa’0ÍOÛK€„©½ÖÛÕ³%aêjaÚGð„ SO¨Ó' €y=~”¼ó›ÈÅýîðqh)n³~+ü_³NÊõGß$1°¬~;¼ÃÃ>91îˆÌ®Y`¼ÄÕÇtïWÿÂþrÞ±]‰“ߟ,‘V8uê”L§lÙ²Ó:qℜ·ìý DÿÇns‚@¶)ñ©r?1R÷,õݪ•ÉsÇ,ë5ª×ÈöýÜD@ÀL$LÍ´ZŒ@Àö$Lsö aš3'ž²¦ Sk®«§gEÂÔÓ+@ÿ €î aêNmúB@ÀIcÞyCZZ|ò+‰I $^·V+ËŸI“óBýo”x=*L“ct/½ÓӎɼnÒoÿ.Ò$TνRÕåúíZy»lÁr½Î „……É,înTWb±ÂÛ?ÑE¢Pć>’Xä.ý÷!'H{K+ô}âôçéÅ3Ér'5E~/¨û·W¯-×W®Ý‚ €– aj¹%eB €v ašù*“0ÍÜ…«ö ajuvõ,I˜ºZ˜ö@Ì @ÂÔ «Ä@ÈB GOýv÷¿Ö/”'ÖvÒŠ JÓtoÓ‚/j…iP9{T˜fÁô¯ËIKôÒ‰ºl•*Uþõ 0«Àã襵â~”)D'éÞ½swë”qzêU°A1¹_¨nQ‰{{ûj¡Yçϸó'pdÈ!ià©›ô÷ÉõsªÊ^û"µýǬ /öÖÊæüõÊ»@0– Sc­£A@ W$LsÅuùa¦—)xaA¦\T7N‰„©±é @À°$L »4 @¬V|«%’S_í--o{ÎááÊk…iÐó•åzPù@‡ûv?‰ÞuIz^ßWâЗ†Ù„ù[HàÐ!­|¤¹îez°÷E‡ÙíÐÓ9{µ’tÚ=/Õé:yÒX+OÞĉí¢æŸ9W9-ñûöZqz)Q)ʾ¯¹p1&Þv6L@Àú$L­¿ÆÌ@À‚$Ló·¨$LóçÇ»-@ÂÔØëc–Ñ‘05ËJ1N@W0u…*m"€ à"¹³>‘–'¿1Pâ[M´r,ýËß½Ò¿ÄØ«Ï÷ZaZä¥ô Ó T˜^¹$iÉúmÏ©sýäòε»®¼Ík,!ðT‡Ö2‡½–K|¤ª~՟ŸîÔó²––û!Í‹KôñgSà çß¿ 1>ì¬Ä]b%ÖüD¯:úœ/®Ÿ9ဠ€€ÉH˜š|> €€½H˜:g½I˜:Ç‘VŒ-@ÂÔØëc–Ñ‘05ËJ1N@g 0u¦&m!€ à"óçÏKËïO+ñ×µ?KôñÑJ±Œèë§“ÉiÉrÿô-ºW§}}N.r¸,ÿ£:Mí3M®5kÖìò=^ `vcÇŽÉ×¼YbDŒ~Þ˵-%ç¡•4û¿ ’×hòØ'ÆK/5n¯!±Q]^º™éçËÖÊõÚµkKä€ €€H˜Za™ €€åH˜ºf‰I˜ºÆ•V!@ÂÔë`ÖQ05ëÊ1n@g0u†"m € `PÉ3&ËÈfíž!Ñ·ŽAê¡aÅ“ž›Dß#qú$uòÐpè§ œ=«{N6hYOÚ-ú\A§¶OcÖHØ›$ëPò ‰£‡¼–éDk×F®ç}‰•*UÊô9."€ `F¦f\5ÆŒ €@H˜fEÂ4{îš[€„©¹×ÏS£'aê)yúE0’ S#­cA@ÀE~:UZž±ãc‰¾uuo:ugºf£ßÕ=bö!cæÙgM7ŒÀÕK—.•Kÿ"±P3ýVó«Ÿãÿ $DꞤ7ì¬" ßÍÿ@l+@ÂÔ¶KÏÄ@ì$@Â4ûÕ&aš½wÍ)@ÂÔœëæ©Q“0õ”<ý"€Q€„©W…1!€ à"i³?’–?Þò¡Dßú™wûm¸Üˆ>«ßª]¦{ùÌ4ùÕ¤(Ý«ïø+ÈLšVÒ ¼]gu¯Ç—‡Ž”ë/ôÉä3eøvxªï“2í]¶J ª@…©?9süÌTytûªrúVžC@Àr$L-·¤L@¬H˜:Ú0uôàÌZ$L­µž®ž SW Ó> €€™H˜šiµ+ €N˜>gº´ôÑÆ)}螦—¾ÖÊÒJ‡ÎÉõ}E‚%–z¶¢D«Î,8)SzÞ;Jâ t‡ct¦ïlÕJÓ6ÅË…IãÇI|áå¡úG (-£jüh#‰ºzp” É()+ôó1sØlR­šµŒ24Æ €€ÇH˜zŒžŽ@ðœ Sµ'aê¹Ï =»N€„©ël­Ø2 S+®*sBȯ Óü ò~@L,ðé‚Oeôã?&ñ­,mT"E·–XºŸÅ*Lµ ÖkG½2¿ÔQ¼.%jœõ»¼˜µ_çŸPLΠןîÚ]䈀–-_&£¼p Äà{؋ҀËä²!%œÖdñ§¤ÄHÝ«95RϽÒcr¸^qÀhynø á. #€ `6¦f[1Æ‹ €€H˜’0uâlj¦ "@ÂÔ á¡a0õ<Ý"€XJ€„©¥–“É € ; cô[àO­zOÞønóX‰_îÓvÓ ËR«0=»"R&X}o„Ä$ÝÃï§?´ô´^šr}ò”O$Ö¬©çrƒ ôxQ+ 7•X'#-X1Èà#fxθ°VÿRàâ7º'u«›õçZÕ¢+…ho?ÑŸ{Û½!FŽ|řà-@L-@ÂÔÔËÇà@ÈŸ S¦ùûñn# 05⪸oL$LÝgMO €Ö ajݵef €d)ðÎ8ݳîÔOÈ3ÿi¢ßŸñ†…ûõÕÀ£…äEéçoȸe‰xbÒQ™‡O²V\ÝSBÎCꑘ0C¯ïùMÿdß“f¦HMM•9téÔAb±bº·n»Ç;Ëyƒ $Ö}°ŽÄÀº¯œp°@ôZIï»îŒÌ}wwÝ›Ú?ýcñÉ%Ù\¬“¼˜ñÙÛ1a@² aš• ×@°° S¦þx[vj$L-»´.™ S—°Ò( €€MH˜Úd¡™& €ÿX¾l™@tyêq‰¾¼´žÒË+5U_%$%ËR·éfwEú•Ö-rLMÔJ=Ÿ™WàÅ­Öoþ û‡2ãæÍ›[dæLà Ã^î/ÓØ·â#‰1ÞÁ·‡ÅI .篱Uq‰E«ë^ÄrÂÁvqGõsqhÌ™ûÏ]uïÒ¤ýyÿÖ‘Úr}õúm¶³a €d%@Â4+®#€ `A¦º¨$L-øá¶Ñ”H˜Úh±0U¦N@¤ @Û 0µÝ’3a@; ¤¥iEÑÉ“'…ÁÇG+,½½µâèêóŸ×ÿ$Ï_ö–>ßT+3­n{,^¦Xït#‰³§~fõ)3? dü»M­ƒÒ­×âô=ˆçÒòMGõßm¹»µb¼øSåL8[†œWä_ôçþkíß”&Þ}}”ÄzAJ\ú—V ÿyüt^»à} €XN€„©å–” !€ µ Ó¬m®¼CÂôJ ^U€„©QWÆXã"aj¬õ`4 €æ ajŽub” €xT`ñw‹¤ÿ±KÇHôifJÓ¤Zy»zžVÚ–,YÒ£ë@ç\)0fôH9MZ?IâM´Äô|z¥é µZAþÅ>}W™'ÊÊ‹ÆÅôGK $н˜[j'ó÷Ê8‡ùØOÎç±PbØÉ‡ûœ € `g¦v^}æŽ €@H˜’0ÍáG…ÇÜ(@ÂÔØ&슄© !#€F€„©a–‚ € `|o¾ÿFùú—ºžÏ=ÙWšF¯=+ÏV/"±@¨~{·ñgª#¼´1V^ ½ë‰ÝŸîn–¡3N øûé^¥=ëè¤çìÖX¦}iyzoqi0ÕÄsZYZnÓ ‚ñý—+³E9xð Ü¿å–[²}Ž› €ØI€„©V›¹"€ O¦$Lóùâí. aêT7IÂÔÄ‹ÇÐ@ #@ÂÔ0KÁ@@0Àw+¿“ÁŽþB+/¯®4=÷ÁQ¹yP+4+©"çf«0Mº,ã.¾¦ŒÄŸ—®‘È# téñ˜ çÇ?VI,ß»¼‘†ÇXÜ,0+MzÜ´|³Äàà`7€î@0¿ Só¯!3@@Àí$LÝNN‡d)@Â4K[Þ ajËegÒ €N aêdPšC@ÀN+V­é¾:w¸Ä¨ƒIU1FâÕú-óe^½YÎ 7צ2èÿi¥i¯}åRÿ2nð¸@µ†·Ê >ãçñ±0Ï ¤¬ÔŸ· ˜.ƒhP¿çCÏ €˜\€„©Éá#€ àI¦žÔ§oT€„)Ÿ„ÿ 0ås€ €€óH˜:Ï’–@°­ÀC÷Ô“¹wÙ.±gT‰¥?ðÑ8â&‰Jh¶Ã_È«Öo#¿à[RÎxMbž½$r@ÀëÖ­“îžý¨ÄÀ¨0u§¿»ûJן« g¥ëÄ3ISÃt$(/^èó¢^àˆ €y ašg:Þˆ €$LI˜f|ˆî aê>k#ôDÂÔ«À@ì"@ÂÔ.+Í<@p@·ÇZK«÷xý,±kµX‡^ʤW˜–®¦%ÍUa½ë¢Ì§ÜÊ$®y³lØ 7bÅÉH§•Øã6­ìš¶+½„ÏOÿäè·å~·î=$H䀀+6nÜ(Í÷™¬_6ð`z…©+;¥m ¤ÄêÏÑã¯kÅûØzzÞ·–þ<íµR+Ýö~_ÆØ³gO•Ž@°Š S«¬$ó@@À$LI˜ºñãFWW 0½ Äâ§$L-¾ÀL@À$L ¹, @k lؼA&ôü¤g%ú´4v¥iÄ—§dœ‘¿DI,Õ¬˜ÄÂMC%ú®ÕJÒf¯’ó2eÊH䀀3< ÍlÚ´Yb‡Ž%k%áÈ1#ä|áÅÏ%¹MørÂÁ²Ië´Ò½ìý”O8$s½!(ZbBƒaÇŒgY&† €€»H˜ºKš~@°± S/>Sϵ Ó\“Ùâ $Lm±ÌL@À $L ² @;lÞ¦sÏŒï#ÓõmeÌJÓ”Ý#Ð7Ø7Óe¹¸9F®¬=DbßžÏdúÈ‹ÀœÏfËÛ^ÜObÄÅ$‰MÔ–¸ÿÔ ‰!Ïi¥¡Q?9ç`MøC‰2±–ÚHœðÚD‰3?ž*qôˆÁ›Ýs¯Äù‹¾•È@ò.@Â4ïv¼@r)@Â4—`¯!@È2$L³ =C€ü— Sÿ]{fžq$L3ÎÌ“z0õ¤Õ @€@ú0M'ZA€ …vïÝ-£wèÙ^lpGk“Ó,Œéÿ‡NJÐ8ÖwÛ,‘ÄÖ€ÖQûÎjUŒý¾_³/ôê+ú ¤ 8B ›7ë}õФUH[U`§Ñ…KLàøè=]‡<—ž×T÷l6!g{3XNOU…iDD„¹„… @à: az3 @'@Â4ãÌèáýH˜zÿþw$LÿKƒs@€€g aêÙëCt€ ü‡À¾ýû¤ÔþÙ¶bƒî·Whý§éu9=5ó¸ŒÓáø ±ïÜ®ŠS£´VÃøtS.99«Š±½‘GõG¤A`ô‡£åêÇ;ƈÍ}“*–ÓèÂ%/ pzœJЋR¥é²G¢$êªõ=ñü¿¤\¥J/˜ !B€|“ Sß\Wf@ðI$L}rY™T*H˜¦ÆË«I˜zù> ø¦~±ÌL€ à[D ÝÓ­µØÓžßÞ×vIƒ2ˉ vÏ^[ŸÕo¿žÚF•®_mÓ½J§­ÓrçGî—ñžèöœØF‰åôhÜæ6iv®¹*˜ƒsê—ééKÏ#pyg¬Õ,ñ.±íšµÛâ®bë•Vú€¾“r«V­Är€ @àú azý™3" @. aê"@º{¦^±Lé’„iºQÑ€ åH˜fù @Î8tøtmÝ¥¥ØàNf÷Põ¸¶Ë&9 UEi¥÷n”rP„*AµUÆgWé·Xž)ó– v[±9Îë^„Ÿõž$åzõê‰åÿˆŒÔû§dÉ’ÿ­¶íرCÊ_î 6¤½Ýe ^F þB¼DœgA!±¿ÿ¼Än±±ª<­Y¥‚Ôýd¢ØfÍšÙµ£@€Àõ#@Âôú±f$@€ÜL€„©›âîº az]qgÙ`$L³ =C€œ&@ÂÔitt„ @ÀS=¦ß:ßâ±æÒ–Eª,½Ø_§ùÞU…iÅw+Ëõ lA.…ž” ~ãÎĉŸÐ¡vþ.îÐo½nek+õ£G¼gw‚0 Ò;›4yræÛ¡Ó£bõ®²Ù¾;ùµ”sÕÕëRààuâ¦hÈ¿}³XN P%º×M„€!@~D€„©-6S… ø*¦¾º²¾9/¦¾¹®©ÍŠ„ijd¨‡ x.¦ž»6D@€@ dP¥çñ^ªÑË¢r½£ ÓFªÂ48‡k Óô†ué³iºzÁ±áááéíJ;? ЮeS™eSÛïbOÇè ûåúD)_Öû6[½:C€¼’ S¯\6‚† @àÿ ìß¿_@œ>}Zl` *ò‚‚TAjÊaaº©iÛ.m¤]xm'…ëpˆ›¦ƒÌ󋜔-[ö:ŒÊÞB`Ïž=êõo{2F÷À,d)Jó6Éç-SñÉ8/®¿ óÚ3ö€ØRõýQ&*+åV{ôœÚ’·?-íÞÿðcŸäÁ¤ @þ@€„©?¬2s„ ø(¦>º°~6-¦ž½à$L={}ˆ€ H˜fU|B€ à‘¢¢¢$®z-ëŠèz}ö2=¿æ¢Œ×1ïCbG !–þŸ@dd¤€höÐíbs>.–ƒgH²öD>ûÍa ¨Ò±ób½×ÚÔÔ óçíz2éL9™1w±u@€€· aêm+F¼€ 8M€„©Óè蘉H˜f"\7¸&aꈸ€ x¦^¶`„ @€€ë._¾,Nn¾ó&±áO¦½§iÂië[±­oÃÎV1{†‚¸°Y¦ “J¿7TÛ{àkbïi£{«fÈ)}†Àä¯&Ë\Þ\¦÷Cλ¿|„—LäÂßg%ÒÓSTqº¶k¢–/é]TZNÖoß§!@ð:$L½nÉ€ W 0u• ýÝI€„©;if¾/¦™Ï˜ @YM€„iV¯ãC€ ebcU9Z»iM‰!¢[°],±Gc¤|`ø.±9nÓo+/ò@Q»v×*yCûO¹U•­ÚãÝ5¹ådÛ¹±}ú¿"¶s×'ņ„„ˆåàÛÚ<¢ ã½5ṵB¡¾=a/ŸÝåÝúÞ¸éä-2“E?Îûz#U’??W÷F>wÑ’œzù| € àH˜úãª3g@€„ SnO @ÂÔV!ý10M?+ZB€¼• So]9↠@ÀmôÛ®«7ª&>CÚkùøÈÝRîUG÷(ü 8¿”Ó«0Þ§ ³Ä û¤ß¶'í¿U{Ë ©¶½·*LN¾^§×·ïPEj©Òº¢¶âèkŽ=*SjþD3±¡,鱯MÔGæ“­Ïg¶™ydFþºÜnf´i.åÙ —ˆ=pðˆØ|ùT™nט @M€„©G/ÁA€ p=0½”Ñ SG"ž]&aêÙëCt€ w aêNšø‚ @À« ìÛ»Gâ¯_³‚Øc½TYúî_:­÷TaZ¸Súö0=>n¿t|½ø±Qºõ¡mìª@u˜]ýtîÖCÊ»>%¶@z£O˜úýT™ßÐƒÄæl˜Í§çëí“‹ûFg0ï‹rR¤H‘§4ó—_¤¾õÝw‹ ´ž÷[S @€€' aꉫBL€ d ¦Y‚Ýo%aê]KOÂÔ»Ö‹h!@® aê =úB€ àFyÜZ§ŠØÈQvóm)LG[ Ó"×P˜Æ‹—þ;ûë·žÇÅ©»b sËI@®bG=ú®Øûï»_pô+÷u¾Oæ»­ò±áEt/[¿‚à“_¤A¾õÈÛrr×wyAÔ„@€€+H˜ºB¾€ ø¦>±Œ^7 ¦Þ±d$L½cˆ€ àN$LÝI_€ xm[·H¼õnª%vX#•‚&&é4,c[ª[‘ÚÖ”È+Š>V\\ãx~ãEi‘«º*JMóØ“º™i©Õå¥jÖ7³Í%¬0_"ÖáU"( {ßvèô¸Ì®nݺbo¨‰ØÐ‡Ärð,—7êsú`ÑG$°Á½‡xV€D@€@¦ ašihq @€€§ aêé+äñ‘0õÎusŒš„©#Ê€ ÿ!@ÂÔÖš™B€ `HJRíèžÝ»¤æ£1ï‹ °¾Í:0(HË6Uþ™úy+ôÛ±Kë¡®}ûuÜOâÆ6í=©P¡‚Vpô /÷ê)óØ=ÿ±—²‹ý}‡î‘›§´îYš­U©ÏS;§XYC !JŸëK‘1@åƒUÅÎøJ¿õ>k¢bT@€²‚ Ó¬ Î˜€ d)¦YŠßo'aê]KMÂÔ»Ö‹h!@™I€„ifÒÅ7 @>Ià¦Ûëȼ’P%Z`¸sJÓóëtÓ®¥º‹¿~/õ÷I^þ:©øøx™zD¸*Iã'J9Z·Êµý¸UÉLÞ¦÷ÏïÛõz©;óÉ…üŠiŽn!præqñ“°[¾1't!.œV«ºr›-_„®Çœ¥ë¥}Õªª4uK8 @À+0õŠe"H@€<‰ SOZ Ï…„©g­ SÏZ¢ x2¦ž¼:Ä@€€G¨Ûìf‰/þ¾Kbƒ,eZzƒNŠ×½T¿ –.k_—Þ®´ó"¯ è+ѯ#ö•ÿé·¯8§“èµD‹ªÍÿ *Ksߔˋféù¡FÿqZ‚Ðo#]±l™ŽóÃ÷nõ?þ£qâïÔ±cb¾öª[ý6þSñ—/O±÷>p¿[ýOýzŠø«Q»–Ø*U«ºÕÿÜ_õoUÅMÞ¼îÝ›ký:ý6áê5jÈ8ÖÞ`îšÄÞ½{ÅUÙ²eÝåÒÎÏ‘#G¤\´hæ(LΜ9#þÝÍÝL"::ZN³eËfªÜjccUùêV¿ÆYb¢~;®»ïãå¶!…€ÿ¨SÿF™tös;Åþñ *Kƒ†+‹ZŸéçm@ JL“tÅcývIƒêÕj‹í7ôM±Mš4ËÁ; DE©b±~«z2ð.Þ9‰:ñ²~þOÓŸ_V.øGf6°÷sbM×ÿ—ä.©{ Ï[ò·Ìœi@€ ^$LÓK*•v$LScU“0M› Ó´ù0M›W!Ï%@ÂÔs×&+"#ašÔS“„iêl¸@€€H5aúÑ»£¥ÅŒ7ß»øÌq±ñ ªÐîÎ?³”™“† '»“ÔïÑ3§wúŸžßLš,¥Q/õ›T0¿Øõ;wˆuõðÃ7ߊ‹!Ï<+¶TuÝ‹lþ²?\u-ýgþ4]lÏÇÛ¸uk±_LÕq¥àÂaî¬ÙÒ»óý¨}^£þÆ[o¹àõJ×Å Já¡öíÅxc„ØçŸþJ#Îþ\ªœ;Üsx7és±÷Þ{¯ ^¯t]µr¥ÚµRîÓç¨R¶nݺW¹p¶qýzéݦe+±ËþÑñŠ/î‚×+]wlÛ&…ûÚ¶ûÏ/,,ìJ#ÎvïRÔ3]Ÿ/ó—üî‚·«»îÜ¡Ïé»o”‹Ÿ|>ñêF.ÔìݳGzϘö£Ø—^îë‚·«»9¬{®_«Šù»¬ç÷ê–ÎÕD]¼(OŸÖ÷eÉR¥œsD/x"%K4ªÆ=1ºkÆ4ï×_¤Í{ý:‹ÛÁþçšà×ÕEÍO«ÊI@*LOýr\Ê«ml=Öï¬Ñ¿09¤?Çôøª¶ëx¿Ø±<›Àœ¹s$À^ß¾ 6ûíîù<öìY{ntñßës7k¼þ|W¢D »`§~óµ”—-Y$öÃñŸÛ]§@€€ï aêä“0M Ó´ù0M› Ó´ù0M›W½œ SY@¦^~;„OÂÔHI˜fñ0< @À \•0}ÿMUÎ}ç} ÿÁsñb»ÙΊײ³sûäý¤ë¯ë8wŸ‘òÈܺ—ÓáS'u-ý&[{~NôŠ”ï8£ßv9½|)¯Ý®Ê;gùvòÒõÃ>ýÄÞr&Zì–†uÄÎqQi÷ÓÔïÄÏÈçT‰YíŒîy•ô *?Ÿ¢¿ñ–FN~¶uß~Vz—=£JµÊ^’òð×-鋾ÿ¿‹Q®ö{ì ñPô²Þ/÷¼­~{ôè!õÎ~_ø›t}îþÅæÒ-ßl/Oš åv픓³þ—ÿ¡ÊÕÎmÚ‹‹ $àó¹ªÈ½å–[œu-ýVÿóØûïl!ö’¥ØþsÃ:)»ºWê¦ ÄOˆ·‰=qIïŸ3çÏK9""B¬³‡Ý;u/¾[jÕ—U~á’~»³³~M¿ƒ‘‘rZ½b%±fïÕ=‡™&.Ù–r«L‰’â§Æ7Šýk½òwÉù¿Ï=+. ( ¶u³;ÅN·”ERpápÙâœ={vñòô“OŠýèÓO]ðzu×Ðà`©4Šó>}ú\ÝÈ…š<9rHï‰ÖÞÕ:tpÁÛÕ]KY{ÿø‹*ýÜ¥ 7#U¯TYNçü¶P¬£2É´sÖ6mØHºÎš7W¬Yogý9ö{äÁNRõµ›þbÁø‹‹“Ó7†ëû~è·ë¥ô*E_Uå¤Í´÷²=;gÍPÅú¨þú\þp¾¬[¢õyUJ ²Õo)LƒUé¶åÙ-ÂëPÏD±yß9¾½\ÏÞ_­ïñ>†IÅK}^6M°L [¯§$º?r-›½¬kŸÇˆÃïCâlÓªMšñföÖ@iÎE@€²” Ó â'aš60¦ió!aš6¦ió!aš6s•„©!‘²%aš2WkI˜ºJзû“0õŒõ%aêë@€ o п_ùUë¾$ÞãsÿÛ9V¿•:Ö¦¿‰}:I•¯¼ú¢\  Êˆ  U$¨R40PË6›^?±ObMúNú=uY¯Ÿ´©’âõK™òî›r=((Äò¯ã˜ñ®XÇŒlï>iÿÓ¨wÅ>­×w%©ÂñÛb¹¤~Ô‡cÅšoÅ6Öø 2ãÙûß»e«ôû|È0±=¢t^«“b¥¼ªVE±Žþ?ãߌçh·¬]'ýG¿ÐKlÏ Ê}QÒe)Gµi.öÍwßëØß”Í8f\Sÿ÷ˤßëÝžÛóœrŸž¤ÊÀŠ/«¢uðàÁvþý™²ñkì‹K¿—,åç‹gUyøU˜ÚöÖº>ý´Ž/3pX¶øwiÝ£CG±}Ï+Ÿsê: üb¢Ô·i“¶R@¥pXjùÆò?Àò?"‡ŽóÅü9Ò«^½z)ô¾vÕßË—K£G[ëž«¯\иûFèý³bÓF¹^ºték;K¡ÅšU«¤ö¾fzŸ¼vQïß.–2ü‚õí¼Îîaºm‹*Ÿî¨«ŒóÊ%}~û…ÅHùl”*•S-]UfOÑúÕkHû>1úüO(¢JÄUyš.g)4:tð Ôåê31ÿï5ÊIýŸkפÐ+ýU§Nž”ÆF¹úxœú?Ö²‰Ôÿ0kfú¥Ðò‚¥.˜?¿\½/1Ll¾î‰3n\ ½Ò_«÷a¨µÇí=Áª`m0\ßýû÷O¿³4Z[ï׆ÙrK«'ÆŽVûÄiôJÿ¥lVü•"ô¾ysêé|×]w¥ßI-sZ í‚¡*ýûyÙRi]½zõ4z¥ÿR\Ê%ÞRjî<°_:,X0ýNÒhY<¿*ŸŸ>%­’Œô1>¹TªPai~ÙºŸŽÏ˜®ÝÍŸØš²;£,5ñ –r;­=líYü؃ú— 6êû20Èú9ŠÛ|^FDh}ö”×…Íç¤EýuGÅö««ŸÏ¯Ñωo6éû¤Åíåzçgôç°fÍšIÙÙ÷ºtæéŒB±öµd¬ˆ'õçÌL˜ì\Þ¬ÿÏhŸGŽ>p¸Ýu € @À‘ Ó@ë?4ɉ_ýAÖüÇÆ$I˜*ÃÃð1–„©ã£e_&ajÏñDÂÔ‘ˆ}™„©=ÔJ$LS#£õ$LÓæãìU¦Î’ó~$L=cI˜zÆ: @À›¬ZY^$t‘‘ú›×û:ª¢er€*™b,…ésgd^óæ—›¨[¢µ)—)ˆ©·¶h´-˜§ ´9“UI1øR.ñsܦ ÄQ9ôúØñÅìüŒñsÅ¿4ûw|µ_O:+'áëTQúà¥lRÞa¦ET©ùbÿRŸ˜¤ÊÄDËjÿú3õê7ɦ Õ/>9 -Ž¨Ò£N¼*àVY Ó…e£­ÃÃ¥¥]B‚–?w‚å?)™ŸŽóýäÝrÒï¼*—òXã.´¦k*¨¢¬Ac+~Ïp‰‰Ñ‰ýù«úë²*¯tT›mZb´œî¬œSlÅJªd2ý¯øÕÉóˆ× DE©2íèº#Ò`XŒr×Ö6Û„õöFU6•½AýXÊc“pMÍž=«ý÷.Û!._V>Æÿ¨`½^ä¶¥ªL™¢b“ýYŠç€@]× KùlʧNéÞž+~úCú ‹µßSlpˆú¿ýÁr½XñBb¯VT›D»½=}ZïËÇ©Òm¸ƒÿçƒ.ˆ¿ªb(_¾|R6 í«Õz?šë±Ñª9`ˆôcϧs’>·“¿üR®›oS6‰o£D6ådnÖ/b­=3ŸïÜUúŒÑûð‚õ^è¢ãϘ=ËŠÛÄ—¶5ãÅ^Öç²c«»¥ÿ;–ÿCIzߎ/¤ë1sá‚ý?©ÍÃ|9Rãzõ¥ÿûÿÍIú¾[Rý©ÿyÁ|;ÿ©ùsäsñ‚®_…Òe¤ÿ‡qzÿ/ORåíé»ïú©?ϛуñ_¤€>7Ÿ$èó;Çz/z¶³¸|oìØŒº–ö1ÿÖž¨“òJý÷Aú\7z]﫾}û:åßQ¹:Ùú–ïÉÙôýØå£÷Åï£>ê”ÓÉì¹ú±MšYÊó‘ß+Mî¼óNÓÔ)*ýÆ$ê{òìúþ›µ|™ÔW­ª{Q:åüßN¹³©¢÷ÍX}¾†ès±ÛRVç·”ÅÎú/œG×µÿE}öMÒÏáxóÁê¬c«_ ëþìrNŸ« 9õ=xÄR²Ú† Ó–Ö/&mFiêåÊR±ÙZܯ°bÁ"q•Go3Û¥PåTAŸ÷®Mž‘믿òº«CÒ? üöÛo2jÏɺw|¶fÖBgA,þ8dì)}/•\YV¦?{êÄÀœ!@p‚ S“ Õü S¦v SMˆ’0M9lš$Lí›ä Ódiž0Õzrb5MZ¾s‘„©ï¬eZ3!ašÌ¿FÂ4ó3 @ÀW $ÅW·þ§¢SŒº¨Ê™‚·HʼnªLé¢J¹ ]SÒ,Z%~{=|Hì#çTA6® Öï9XYqòøú cÒsí§ªX­rN¡ ªêo˜W¬-ï¤gíÖæÎ}rRîo-'¨ÈÙL•;Ó-­œ<+¸Uzö;¯J&³GjÎ.ª<úè“âNy>tHç_ëÆÒÿ½˜ÆO ¥¬NVÊZŠaS­ÏÑòY+Ååð({ÅÓ”åÝ ’\¿ùæÅ&+ž“÷ªÖxM½Qn_¼¨/Æ©¦I¿wb"ÄšÃG!:~é¶M¥ªNêbc,¥Ù Ò*_¾¬ ØW½.ý>²”ŸÚÚf{3L¯·îÑM®W©¢Ÿ[Ư#ÿÔÊx@úÐç*ÔZÿþÖÞ½ƒß}[®›½‡SócÖ%y=¬û …µåVüÙ,ÿÏé{íç9¿Šÿšp#aJÂTß ¾y$aêëJÂÔ½ëHÂÔ½<ñ@€€ó®J˜WgNëohK—Ü&U–°Çvî¼*uL;gíÜÙº÷_ïÇô7È1ÙÕÓ®ªhrÖ¯é7¤ïQ9]6Alj-¯¿aþsU9ÓÄ%Û²‰*ׂV*§ð;TÁ6mfi—üšÎóªR¡I”*K‹<¥¿YûQ1ÓÄ)»oŸ*Mo­¥ÊµzÖ·‘ß:L•ýû©RÓ)çÿvúîkUš~ØK•¦¡ú ~Û£—O<®Š8gý?ÿÔ!ézî'u¼%@ç3|JQ©¿«…*eõß Žr¹c{¨¸˜-ö‡EeÄÖªi¿G¨Tfà® ¡“”Cß0åµiGEñR¤Hp¼]iºq½*ÛÞ¾_*_»¨{?š  Ó•äW;q6~¬úùq¸*NÛœS¯åP…éñSUœðz¥Ëã÷GJ!|>O¥¢ôyZF•&->Wzdì¬Z…Ò¡ÓA}ŽÎZŠÑµõu¼…Ü1‡Vë¸XM”g˱Yj&äû‡¥0n¯ëùÕw%¥Þ$ÒÏ©Õ/ÿCï¿—Õû~À½¿gZ ÓÂOë| *$þÂöÊÊRý¯‚X­©7å cU™¼ñË(iðàEõ7ÅÚ¸æ ªt{¨“£2\^‰[ý;ÎkÀ GäBÍš­§ÏÕÇ᪤»ý}ï4n¬Wü¥ìß$Þr¹{çƒâ¿”Þï-åáz_vxQŸ³Ê•ô=jü›ù›rb¢ÞoF¹|Úúü5L?ŸÞ·Wn÷ Ñç¶ËKª._ßÿWüª|¾2Ž–7mÔùGÎÕçêéh{ÅY·}Ξ~Nß ¡Öž–É{o[{dôîêåòc@Å­úž¼3FïÃ8kïáîÖÞÆ>QMÚ%£ñŸ|ŸXJí+ñ뺬û[¹´?¤ÏOÕ$¿Ù“üµ`½ŸÝYAü'ZñvÚyRÊ5Nêü·+,寋Vˆ-\XËRðÃC’¥<ÖUt#€víÔÊ:× Ö¯¯ý·éÏŶ2e¤|$JïçCöI9κßsd×çúRœ>‡yóé{&—¥„Ì~I°÷,"ýf4ÑÏ)øñáö•ú~5N.pФpý¹%ÀÚ›ÝÑïÙ³g¥Ê(ú¯»ZN°>¸ŒBßUô‡ @ ó 0u’1 Ó”Á‘0M™‹©%ajHØ[¦ÊãJâKË$L µ$L5•f$Lõ¾ð•# S_I¦×eH˜^Ì @€@:¤š05}OžÔ½:uÔßô.X\Ö\r‹7[3?r¤*-uNé•Z0_R…ÓªµªÀ›ÿ»{ý7©¿[†.PT<Óf”N-§ê³gWåZç'T)õ¡‹ SÄκwÚMµUQ9äUU¨õíSÐ4qÉN™¤ ©¾/*ÿ‘VÜ>b¯Ôrvgž8$]gÏP%ÙÄiªà»³™*âœõkúÕ¯¡\Pë¯è}_£ºk Sã?8t“œæ²öæÚ¶[•d… é}dÚeÔ®^¥÷y§»öK×]Ö·V'ƹ¦05qŒ}Gb?½¥ë»-@ßGNÜhš¸d;µ; ý~S¿Û‹«‚mý6Uª¹äüßΕÊn ‡ˆ=t‹& æ/qí½æ¸÷óà ª˜Œë¨ë9yŠÞŸÎÆï¸÷s…³ªØ¬ØWÇ1BJÎúã}ÿ®úXù—.«’°Õ›úÞéù\~g]K¿VM÷Š­²ZV+BTqõÂx}ït¼O•¦Îâ¸÷óg9Uá8nF qÙ¨¡õ'  µ½ŸdSÔâʉÇòåC3èY›ÿô½úy§§òÖÚû¹{>_Gés•3§rKï F!Úÿ…£ÒåðT}/ÜqA•¶=Õÿ¥Kª0M¯_Ó.&Fï;訷éó”/^Ÿ§±”ÿ¾C•µËk:?›¥pý´h©o¸Hß{UªÖÒvC‡š!üÓZ S·O…©{ôqs?»Çí§mõç®OÛvC/÷Rg«þ¿àÓ‘ûd&ç²ëçÝöRúó×?Uô}žd)yÏý¦JýÇÂT±[Òü¨/6ÛJ_D?'ƒèÏ¥ÓÔ)_Ê骊}gìxsÉ-vã†õâgÓ†ub;=ò¸[ü'F¹zøÐ!©*Yª”¹äV›hý©ÙJÈ­Îq@ðP$L]\¦)$aš2SKÂÔ°·$Líy˜ SC"eKÂÔž S{^S"aêÙKEÂôº¬ ÓŒa&aš1^´† d„À5¦qF[ï#pò„*ùÎ_ÐßÌßpƒsJ©Ôfþ÷rU6«°ÉvÓMºGbjí3Zÿ±µ·fízê÷–úÙ2ê"ÍöO>~P®÷î¯ o´&’f¯ô_¬Uc§4þó/UªeÏž1%Yj#mÛ¬ â–­TÙ·w¿¥ôJ­CëÇŒR¥éØOTÙ±sO¥ zH»ùÝÍöIƒ=T‰¸ÅÅ=LG+Rp«TUª ë¹dù ŽMœ*Ÿ=£ŠØ¢EÕÿC÷«¢zâ—ªttÊé:Í™¥ Ð';é}Ùµ—îy÷Ú«îQ& íwLFûöU ¾ø–Þ÷Ï>ãšÂÔL¡y#½nÒu}ýó¢réÞöº©iç¬-˜o‹tÍoíe:q–*mþ×Àµ÷Âþýª4¯_SŸ× +±õÇj}n]}o:ne²ú‚>¿'NV‘ù¸ú^x©ûañstÚe±¿\Ö÷rTTU)»z¨}£ri°O•¦?eSÿ#îÉ)®ó®ÑòP]v[ËöHýÈQtèaÃÔš„¡¿*MóXqN•ÇGrª’î®AªPOúM•v‹¾ù]x°¾=y“âßµÞæàÇöÞ{ÒÞöâ‹j9:G qcí·t©ÚfÍÔZ÷ë¼¹s¤¼ršò¡÷½6²Ù"õua;;KkªëcnðŒ~>,¨o­¿éà§¶|¤¾§¦Ù%v–ÐÏéÅ7ç¶#òi;•v›q\ê£ÿÖÏ­¿ «ÒýÛ[¬Î'Úíâ ú9Ÿc÷n©øùÇïÄŽèÛMlpžâb—¯ÑÏ)¸pرm«ônP·¶ØFˆþë"¼^Ý5"Lß»=ü \ÿùWW7r¡¦\É"Ò»ßWÅvëÖÝoWwm}g©:b”Øzõê]ÝÈ…šaƒJïgŸ×÷_¡Bz߸àÒ®ëë½{›õ~0_âi×È…ÂK]´¨þ¼ä‚«»¢N •€’ 0MFáŸ'$LÓ^w¦)ó!aš2¦)s1µ$L {KÂt˜!aªH˜Ú? žR"az]V‚„iÆ0“0M› Ó´ù0M›W!0å€üŽ€ù“åsgUY7Ÿ*·L¾ÆU 'O¨ÒtËVUÊÜv›s{h¦ÇŸ‹tÈãçâ¥IûööÊ›Ôú¥·þã÷U9\°d°t¹¯ƒ{ýw~H²U¿­Zª1½ñ]«]K¹ý…µwlu7í=|è`œ ]¯®*ŸV¯­ å"E”ÓµâºÖõ¿Uea—îÊçø U˜†…©bêZý¯u½ûcê÷‹ÎJÓËNîaê8Μ٪|îØþ€\ LÒ/ÚTùt4@íž$½_«÷xR¼7v¬½«aôܴ©Z“ ²oå»%Geh9•$n¾¤|Û4Ê&sÿs£þEE‘‚–RÊ(K G?(L ×ìÝwkÿÙ³ÕvꤶR%µ–Òtl^}Ÿµ-£{q¾(×—V;-"XÊMèçË/––ò²Zî}jPÞwL-aÚéu}ßEéMÛôspU}.Æ_P…hχU9c`o™üÏ'¢Åž.QBì¼ÃÄ~÷ÞËb_ªuZìЭ5Åþ¾bXgëÖ¬’®Ü}»Ø×êóûCL )ÿó\g]K¿˜Ëzßd˦óu§¾p÷Ý ïÕ±OpÉ¿é\­¼*ÛoÉsDªJ·*vÈ!¦‰K¶CË&ÒÿÜÞÕbzù±]ºtëêaP¯gÅÅÏÓ¦ˆùñ7b[·níªkéÿõ¤OÅöï×WìôÙ ÅÖ­[W¬«‡Õÿü-.z ƒØ¥)§Âfk¸p^¿¢u‹;ÄÓ’å+źK!§?/ µ¾oŒ|ÛÅˆí»›/]ºd‰\hܤ‰}7•öïß/žJ—Ö÷´›Ü&»9o­C®\îùK«dÇÖ‰áä®uuôOþ@€„©?¬2s„ì0µÃqU„éUH¤‚„iÊ\H˜¦Ì%ÃµŽ‰N¦F˜©H˜f*^㜄©!‘²%aš2ÇZ¦ŽDìË$Líy¤V"ašê!à?H˜úÏZ3S@€@¦˜ð‰*µ^ë¯{á½¤Š‰p[€Œùw’î)x¨yC)ÿ4ç×”c1ŠÉLRŒ¤<¨Ô:&L2tÆ .jÅ_b·G„‰­sFBWEžšö0½ U†*¦³¬ÍHÿùGÝXJ§ ÿf¨5W‡Âr=OƒMÿÚúêcÔE½_òçÓû(z€þ%Ë*D´EVê!FðáÕ3PsCñ‚ÒzfûSb¿Ú óÍÛúu)÷ë×/Þ®nÚ²q=©|ªÄ±Ów(Ç/|,åGyäêN¨yñéÇ¥u¡úÞ\r PʽG'¶yóæðvuÓñcß•ÊeSÞ»ñ¨®Ã?«Ò±fMU*_Ý3}5Kÿ& {=yŸØÃgôssõæ]Rvu/ÓcGŠŸ åT1yñ’*AÍŸæËE7Šп J²|=©Aã×â¢~Mýn†‹Ñ—¤¼y§>îòÛ»ÄUÎ9ÄNœ2Í]®ÅOßõy-_¾¼”»?÷’[ý>áñW·þ­b«×pí¾t n÷.½KYÊ[ó>tlG¾@€„©/¬"s€ d1¦..@j‰N¦.‚uSw¦n™¶¦)ó!aš2ÇZ¦ŽDìË$Líy¤V"aš­'aš6®ú¦¾µžÌ€ ¥6oÖ=öjÖÚ)q TE”ù6÷_+—ú6oÊÒ8=nðÔ¦?ÿ¬¡®]+vu¬*jîÍ.å×Fûøãª¬²¥æ…©rtö˜ZÂt•îYi[¼XG…R¶®Ktò7*#ýµM›Ù˶äëÚîøŠÒoK—±yõñ´MV¡«mÐ*UÜç«PR®'Æ[Ž-“”¨Z¼À@UD媩ڥïÓ]Ýõý*Nþ=ŒüSÏ>;XFN*ש&68X•¡¡!ªÀ V%§Q‚™r|¬rZ7–ôû±õI±e­×ö‹óÕÏÎ-¤¾ÙÍÄšþa!ªx µÇÄoìg£_•~Ï•Ý"¶U9÷¾ºkµvº¨Q€:*yMÙø3ó0õo î%~«G©BóÅ:QRnü­ryô7Rnbýå‚éçèG¥pýæ0©Ýñ«¾o?¹ãŒ”«NTÿ?ÌûKÊUªT›ÑÜYªˆ}«OéºäAõ_`´ÞHÛ÷êû$þüu-í÷íÝ#öëþˆì©Ÿ#ÙßÔõÓõpÊù:åË]JóˆÛaf>±ލbù?M:­_£¢ô{¢´Îçóý7HùŸ úü9åô?ž¸ÿ)e‹\(vö›ÄÎ^¸ì?­œ?}shé¼è»±bKÖ½[ìç_©ÚyÏÚó§ï¦ÈIÿž{מ>â màâqó¦ â¡IÃ[ľ2|¤Øž={ºèY»¥sÑBzßL™:M.4k¦ï· ò¯“†·èº~ùÍâò†ô>r—ÿž{V\xk”Ø–RÙ]þ±~.lÓ¶­»\ÚùÙ¾}»”+™=Úí®º^8{ö¬8Éc~^uÝ¥wïÝKÂÔ/@€\!@ÂÔIzæÇsÖŸ.š?É'aê$P7w#aêf )»#a(`Lb„©&zM‚ÓpqLt’0Mùy2µ$L ‰´- Ó´ù0M›¹JÂÔHÙ’0M™ µ€ øñŸªÒ«@¡~2Û‘¯èoØËì;,å?#TÑrèä ? ‘):&L­/}²YßîýU×®â¬R—ÇÄ–É«¾›X{ÄžW¥×ÎhUªEĨÒÍf¯(L3°)4uL˜>ô6ªPAí°abÏZœ¿ó­”'T%¤6²ÙP˜)[Ç„éÁ‚š0ûõzÃe©cïn3ŽÛU-ºI•S‡ì’ú%ôùhYFí ù/J}©•x>·U•q…_*kç'£…ÍÏl–.G_Ðçð{-Ú†ŸSÉf¡.%Òv©ÝlI zb¦—6j¼¹ç’þ+Ö÷ìëKÕ݇Aª<,ØB­éo²¦œ¤Óµ¿¦>úç£â¨oUö¬£ãwÿU´Ós(ÿ\ÕrH»äþÆŸ¯Qâ&iâ7 QíñöK¿ƒ=µCÎP»ÅT½¾µPQ©È]\×Íø HÒñ“tº6S6óºtF·E«ÿ¥ëžœêÝf«9AýG-#U9TIœ¿¥ô5\‚,e®IÌFŸS¥j•¸½Òú}V Ö%>ÐϳòÿûŸÔäÊ£ çk\“Ø  –ëa¡zÿÿO«’ôПªðýýaåÞ–ã-õÿòÐWÔåc½É _KIlü›” ‡©%¾²ÚÌÛÑV-§Ïͤ;ŽÈ¥„D½z¯¹QÊËרrÙ±_zËï¾]šÞ±Blî ÀçšJyúœEéu•b»Á}ž“úÄõ_‹-®¿][èQ)2ñËû¥·òëIŸJÓé[=çi±M†Šj}>IÁ‰Ã?ÿ%½:wl)¶aq½j?1ZÊÝ»wwÂë•./\Bnëù¹»ZN)w~õ ±íÚµ»ÒØ…³Jeô=“#@Ðc§Ìo 4pÁë•®íš7’ª5kÅ.ù{½Øræç¹+M:{¹çSÒoÌøÉbÏœ;/6"BßkRpáð‰µGóG}$^6nÛã‚·«»ÎûUßsS¿ž,'}£ â«[:W³o¯¾§gÎøQô|©sŽz¡0uB€ ç 0u’ S'Á]§n$L¯ h¦ŠÙ$2Mb„©r!aJÂôÿï¦ú<˜# SC"mKÂ4m>$LSæCÂ4e.ÔB€ ‹ÅJë¿ÿi%vÀ@UO?þ„œ~?}ºØÓçUaa®û½M-aj}måRªÔy­þIAuÿ?±µ?ÖU{§nÉeÓÿVÿ[‡ÂÔå¢qL˜vꤿù&EÇëîUEÌ_—Ëõ‰= ‹Eaš"®äÊÔ¦íÞ®”Ü&­£4=’O•©C?WE¦Q˜vz½‚t?=nŸØ–Qb‰³¦=ËHÙÕÃÚ.›ÄÅû-ÔÓ¨˜¼rRø±â.¹¾´Jß›E? ª¢ï³|ªd.ÚÖ^ÑœÑÁ —WJ*—ßè fq•"âª`SÝ[0£~M{Ã%v°Ö4û^”ïRaîZª,3íÓk£Wêžx%—‘.ó:(—ªŸ«ÿÄÎe¤ÞqOa©üÏÁ$¨‚51F•Œg'V¯Þ Ê´Çªª·Ðª`Íÿ\¹œ[›&ámü˜²ño³qçã¥ßž÷÷‹MPA õw6[è©¶•zº”žXï{G?Æ¿QöZÊÜK›U¹W7Zï›éí•˹uWä=¿ü}Ö󕠘ĴQúšy$[uc;¹>RMnrQìeôÂ6ý˜²ýïKåQüfõo”¼&~ǽ|²Õ(}ÏìRÅØì¶ª¤«ªƒ¶%ŠËöÈœ2n¦ ÅésŸ¼woˆŽlíákê“t]OlY#ý.°YìƒU4þ¶HÑ6r»¾/îâI©³”¼aaº·¬Qø±Q%íúeª` ÙúôÚ@ïŸWªÿßC[ËÉ ½û‰5ó¿–5þW,™/ýæM"vJ+}-Öu ¼m Ô¿üòËbM?Gÿ©)|ÿYñ§ôëñðÝbW>ªþ»ÎÑ÷åÿº‘ú.]ºˆÍèáÄqýË€Jëó¡Ÿ*WïþI•Úϼ9E\¶n­œ2êß´/YDß[¿Ý¯ñ?”§ü+T%¹­3''ÞQ.cj(—rküwü¬ ÌRoX Ök87ÊS£À?« ÜíwHϘêw¡g{l…®g§KËu£´uôcKÔ~É×­Ç‹ÖstóIKÛ.QüLQ¡ ­ÏÖlRÎÞÜz®ýXe›¥Ì5Ê^³wïù¹ªŸØÔRN–×8Þ[!nm£ä‘“üµTÁ¼÷¯®ó5¾Ë·IÿCÏ)'õj³½4OϦžT¿Jæ× ^òɉ–ÒÖ(Šò4.Fã =¢ ×uUÅ¡ñßú¾Üq£T•._J¬éb)zuTø^ŠŽ–öÎп8Ú×ã²q-¶ñ×abohú ØjÕôsÔì ªëžœ·Æ3ãÛõ‰G¤ÿæn1bK¨°ÔVí³ìR~éÕÄšoƒ7ýŒ5ÊMGå°¹þн-¥ÿˆ:ûÅ6/«ëPäƒ)/Y¡ ÇbÅô½oúkü§¦ðíúP{ñS;z Ré@IDAT¡Øµôó,è5½?­½|墇‘¯ ’^},vÐÍgÄÖž¬ ŽXÏ…®¥Ë/?}/v̧ž{›ú|q)¯Û¶W¬³‡ÛõþoÒà&q1¹µÞWoï«+åùKW:ëÚ® S; @Ȧ¡•F[¦iÀñ€K$L¯Ë"0Mf¦)s"a𠦆„©Þ† S¦ÿG0Õç"µ# ÓÔÈP@€À5 ´±ßÿ°JÚ†‡ëoþ¯Ù‘öœSÙ;I¡d¾]ÖÚ;6…T¥‡€ù–Û=ª¸±U±YùÒV>È®u«e”ªÜÉ•(å‘·©Âèµµ¤\ªW±Ù˪BE ~t¸}¥*½F‹të¬cBôùúßUê¹ÕyÎ’.é:Ç_TåQHÁÐ4ZgüRÌZåm)æòÞœ;ãNÒèqbÜ>¹|³ÞçyëY­4ú¤çRb”¼½ßvi^ªWY±×Úc4=¾ÿ¿MÔ“Ò4ò§ãbK*'6¢¸*פàÂáØ[»¤÷é}ª\«ðve)[Šhg]'^T.;úªr*ú²*ëLªæ¬K»~Q‹”Kå Êå·=ú\T£JA»ÆN޾¡\UT.Ã6¨ÂÔ(pp)].(—Ýý•ËÔ¶Ê¥Û†lr½HÝ»ÐYÿæ~¹iç qѬˆŽ÷ÊI}ž =UÒY×ÒÏp™Ü@¹¬>¨ñ - ׋Ü_Ä)ÿŽ\Î÷Q¿ÏÍ×uý¥¬ú-ÔÜR˜^c“H5{ÍFÏW·Dž’ž“[(—{~Teò†:ê?wrÝôKVøZJ{›†•¬l5 ⳓõ=?µ™~.6.¥ oš¬þÕSeoxQë¹5~,¿f[¢Î7вI*4´EÏÕ½-<¯ïa3ýÒªÿÐ[ËHUx.õo½Æ&ïÙkù5õç"õ/EZ„‘þŸ´Ð÷»ñŸs¤ÆS²^%©2JR[‚NÀp2 ë@›ÆcÚEPEø%JÿÁÿSî1jl9ÞTÿ·ß{§\7J^³ErÙAék”¬(—bGÿþï7Óû2ò¼mu>ן?z ,¡!Ê'4T?¿Â‚íËf<£œ=w\ýOÿd˜ôŸÓQ•±«Tpm{|Qq©7qŠX3oÓÿZöüYåóP»æÒ×ÓQbgïc{¨¾œL1W¬ñŸšR8Àáçïø8½ÃÂtž$L•+G@€œ @ÂÔ h)uqø-¥&NÕ‘0u ÛUH˜^…$3*H˜fŒ* Ó”y™ S{>$Líy˜’¹_H˜Ú'ôH˜Zw SAÂÔ¼1°€ @àz÷Õ?ñ•œÔ¨Qó=¸œ&¦iâÉò‹… kÖ·úº+ž‰ùT)2ÀúY‘!Äuh~Uf¹koñSöÐe µ÷7GÄF‡©òfk·Ö·›WÙ«{*ž´ö–æ¢RÌ[8§ˆ?¥J![„ÞGÁÙ‚ÜŠæÔ/ªÔÌeí±’[÷ÊuuDK‘¼ÿÝ}âªìÐò®º´ëµ@•ƒG¨R«ü¨Jv×]-ì°]\$YŸkeߨèªKéoÖsßPÝÓ4gyU˜~±¬[ü_üU׳ðUâî-®ŠêBK¸Åÿ¡aw›z_Î*ª Ó¢¬Ï'G1\޼®»¶5ñ9¯bQñXÐÚCÙI÷¶‹3I×;-åãÅcÛ}Gq©Ïs“rrÖÿÁ!ÊeVËXqñä<}N/?RZÊ9*è:gÔÜqõwbä.ézø9UšÿHßùúêsVX•“éõo”¸QÖýb¸ŒmªЈ·ôs½òªÜ ×ñRõ¯Ëe3ŠÙxKQ}ôÝÒå×Öz¿T²þ ¥À»ê¿â[ú\™xŒ"Öø1õFÑj®Q;U‚›0O×õ Åe·n1j»ùKå_Àºïý˜²ÙØ(|ƒ’´_ÔŸzƒûtOÝBÏ•IŸS+ïk§1{U3q¿ôGaš>Œ´‚ ø¦~±ÌL2£H˜f”í!?%@Â4í…'aš2¦)s1‰A¦ö| ¦ö\(A€ jVÛ)^·ïÒ_½Œ°ö0 R›3F•!«âô7¹‡OèhyòX›eBL¸„€·xÿí7e ¿§vö}¤\Þü¬°«í…I}ñ¡ªxñöy? d ÄhU &ZßÊœSÿ2È]Ñ\üC÷¾µS¥`ŽrÎí1šZ<‘oé’+.M‹éçcjíÓ[w@•»ßÙ']ÊÐ=@ƒsêϹéõ“Z»óSÉ¥] u3ÐÚõ/FÜ¥¬ÞÞs‹øO²‘•?tMajæ³C¿e>v²**Ï(R#*™&.Ùs_ë:·;/~æ^Ôõ,Ú¯œK~Mç/l•Ó ô¾uÚÚ{ø™R¦‰SöòNå‚ÂÔ)|t‚ ø¦¾µžÌÆ30õŒu @þB€„iÊ+MÂ4e.$LSæBÂ4e.ÔB€ü’Àúuú›÷›êí–ù¿fÓßЖ °W& Ë¡{ý´ôwiW£F ¿äŤ!Y3–Ë?ü Ø;Êë·ÂVË«{îU- ÏÑöSêåãØÜrR¸kI­à@€€×ˆ;¥{÷åÒŸŸ]ÝÃÔHŒÕŸNÍÔ¿ð*ÐN÷¾ rÏÞÀ—7ë_Àœ^¨?˜{¡ŒÚ-öÌDÝË=ú¬*A‹÷.ë¿ÆÉÆn›å´`mÝS·ˆ‹ Sã…©!… ø1¦~¼øLÝíH˜º)!@O€„iÊKDÂ4e.ÔB€ àEâãus¤•uOÓ[ê·e6MÒ=‡Æè/nmC¿þBfÕºuk/š¡Bàú¸xQ•¤‘‘‘2à¦M›ÔnX/vóº•bÿþGmxÝ 8wKë“« @€®E ÉúÿKÂEU°ç±ÿ ¹kõOí: ÓÔÈP@ðC$LýpÑ™²Û 0u;RB€  0M •€ dÞ}ÕëÎ …å$~õµ±±b;Œ~Kl÷îÝÅr€œ'ÐþñvÒygýÜð"ªèvÞ#=!@€\!€ÂÔzô… ø(¦>º°LË# 0õÈe!(@€ü˜ S?^|¦@p$0~‚~ g‚ýäR‡Šûîh±¯ ,¶Û‹/ˆñæ›b9@Î8wîœtntoC±¡9€ @® aê:C<@€|† SŸYJ&âEH˜zÑb* @~A€„©_,3“„ ¤M`Ñ"Ý›ôïUú­÷¼›b‡…óçK}Þ<ú­Þ7Õ«—b;*!Œ˜5g–tø*¼C›fÜ = @€\&@ÂÔe„8€ x?¦Þ¿†ÌÀû 0õþ5d€ ø¦¾±ŽÌ€ àƒã¤ß+¯–ûùçóœòC'@À}^¤{/ ˜+NÃ+„¦èüâæ(©ÏQ%»^H±•€ @$@Â4ƒÀh@ð%$L}i5™‹¯ aê++É< @ðV$L½u刀 à÷´K/?ü°Zlxx¸¼âpÚMj‰›ÀGãÅ«„ôćû¤|ÂR˜–QQÊ¡ùBÄr€ @p S×øÑ€ àÕH˜zõò¼ aêã Ìô @ðX$L=vi € à>‰‰ê+2R÷,ý`¬î‰Ø¹ËWr¡zõî O€€[¬ß°^üt|á^±þÚ+v\KußC·8µUý¤ªVp„ @p ¦nÁˆ@€€g aêÙëCtH‰ Ó”¨P@€2Ÿ ÓÌgÌ€ L'°{W¬ŒÑ½ëA±§NèÞ¤‡Ž©¢ôÔy-ç’ëí;´;ùÛÄr€<À€^ÏIP‹¦.ö·N—Än<®±Þ»8LNŠ¿RA+8B€ ¸… S·`Ä  @ k 0ÍZþŒÌ @Â43¨â€ \› Ók3¢ @Àã DEé&¥eJn“X︬ʳ† jóØ¥~}’*Q×Ý¢{–.øs™ÇÏ!à/T…xóÆ·Ê”«xZlÿúÑv&¬Ñâðs¹å¤P—’v×)@€ ¸F€„©küè @ð$L=b. aê>:C€ · aê6”8‚ xöwí“`’þÖ½Krd’–¿,™GÊ[÷é·nK ¥>óžŒÿúðWÅFG랥Պg“r•|1b÷žÐú·•r¡æùÅr€ @p¦îáˆ@€€G aêQËA0H¦éÂD#@€ éH˜f:b€ dê7•ÁƒO&‰}æ¼îuÚ'ô²”ÏGGe]pŒ ¤Iàüùór}Ó¦Mb7oÞ,vþÜYb·æÜ!6¼i°X€ @î!@ÂÔ=ñ@ðH$L=rY é"@Â4]˜h@€ÜN€„©Û‘†õz÷ žèü•ØcGTiÚ¾M[)'$ê^¦'Μ‘röìÙÅr€¼‡@·^Ý$Ø?sþ.6â†0ï žH!@€€ aêÁ‹Ch€ g 0u–ý à=H˜zÏZ) @ÞE€„©w­ÑB€Ò$ðÉxÝ£´P‘þÒîÞ{±kîÜ9)·mÙJì3›??ß²mмˆ@ÕU$ÚˆîA^5¡B€ Ï%@ÂÔs×†È @&@Â4ÃÈè¯'@ÂÔë— @€ àaH˜zØ‚ @À‹ÅJ·•«ïÛ¿ÿ;θ¡ à…Vþ³R¢îönW±Á-½p„ @€<ˆ SZ B 8K€„©³äèï'@ÂÔû×@€ àYH˜zÖz  @ C"#ã¤ý°á¥ÅNœ87Cýi ø7FÉL9ô¥Øˆ¡v“KJH’ò±o‹-ô@Q±¡ví(@€ '@ÂÔßïæ@^M€„©W/ÁCÀ­H˜º'Î @ðc$Lýxñ™: x?{Ú%È$¦M[#6,,Ìû'Å —ÜqïíÒÿd“#bcvG‹ÝõѱbkL¨*– @€€=¦ö<(A€¼Š S¯Z.‚…Àu!@Âôº`f@€|˜ S^\¦@ÞGà×9$èÝ»õ[ï÷ïµìNµ螥gNI»¯~Z ¶~ý[¼o²D d ÈÈHñÛè¶êbËe»(öͪHo³P•è%†UÈ”ñq @€¼ So_A⇠Ÿ"@ÂÔ§–“É@ K0Íì @€€ aêC‹ÉT @Àû tyä LbùϪ«"å|6ýëü6U–N O”ú‰sg‹mÔ¨‘X€€ÿX¿nL¾uó¦b‡Üªï‘îµã¥??@Nf”.,¶Ð]ôG@€ ;$LípP€ x¦ž±Do @ÂÔV‰!@ð&$L½iµˆ€üŽÀgãÏÈœû¼¨ŠÓ‰9¥€ àUH˜zÕr,|’ SŸ\V&@€€ H˜º®€ Ôœ</—²ìAU’´ìÞݺgéß+sJ»y ·ˆ KÍ%õ€2•Àý];Šÿ­å7ˆ=ÿÃ!±•.]»!Z•§%^«(e€ @ÀW 0õÕ•e^€ ¥H˜f)~‡œ @ÂÔ ht @À' 0õÉeeR€ Õ²eÛ$!PEV>›~«tž8µq—ôÛ¨–.*í¶ìÝ“Õ!3> àçfÍüE´k×VìÔŽb£cô}5èX.)î^J,@€ à«H˜úêÊ2/@ÈR$L³?ƒCN aê4º@€ à“H˜úä²2)@ÈjS§œ•ú>wDìÐhUf…ÛT±uÊ–(õ£ò‰=tò„X€®7^=ž”!7,þQììúþ Óד­×B}oM+QX®jYàz‡Èx€ @ຠaz]q3 ø ¦þ²ÒÌÞO€„©÷¯!3€ @À½H˜º—'Þ @vvrÍ;ž”¨JÓÊ6ÝÛôñÄÓRŸ˜¨ŠS»Î d"v­›‹÷›–‹íP>ZlµBºgiÕ‚:xç9º÷òÑ6%¥"wœz# @ðQ$L}ta™ x¦ž±D\M€„éÕL¨ @ÿO€„)÷ @  8'Þ_^Zì¶5ÇÄ–Û}PìœÄKb×ïÜ!¶X±bb9@Èl[·n•!Ö¯_/vÓ†uj×ü-vó½¥{šRFêCò†ˆå@€|• S_]Yæ@A€„©G,A@) ašª @€À¿H˜r@€2‘À=mÄû´׈ ÛóɧÄ~ÿý÷bY0_lýúõÅr€ à)ÖoPêcÑBÚzJdÄ@€2‡ ÓÌáŠW@€€ aÊx;¦Þ¾‚Ä@€@F 0Í(1ÚC€ÒA WŸiÕ¥ëWb«U«‘b¯ŸgÌú–­Z‰ M±•€²šÀØOÇHã7Ž~3{™fõš0> @™C€„iæpÅ+ ø9¦~~0}ø ¦>¸¨L €  0M •€ ç|üI¢t,\´¿Ø{ïÕ=ÿœóF/@žG Í#m$¨½µ¶‹ +ˆ2ÞóV‰ˆ @p… SWèÑ€ à@€„©Š€€Ï aêsKÊ„ @p @ÂÔE@€€3~['ÝV­¾[l¿þo;ã†>€<žÀ©S§$Ʀ4ú¨îÙœZà—ÅÈ¥ˆâa©5¡€ x¦µ@ÞJ€„©·®qC%@Â4£Äh@€€· aêm+F¼€ ¥.^Ô=JTEé®Ý±Ïô•ÄNü|n–ÆÇà€®é3§ËPæÒ8PlÂe}Ozc·”õ¾ÄÀrRæ@€< SO_!⃠"@ÂÔ£–ƒ` ,$@Â4 á34 @™J€„i¦âÅ9 x+—{‘Ðgüt^ì‘“ñb’Ĉ£Ê©)sTYÚ´iS©ç@À_ôxùY™êœ=ª8=2똔{×Ó÷åñ¹¤\¸{)AÂ@ÈR$L³?ƒCL€„©/¡A€ à¦.á£3 ø:»Û$Èš¾Vlh¨ý|,]*õÓ¦~'öƒq‰å@Àß 9rDÜÕE÷xyÐ߉0@€¼… SoY)â„ ,!@Â4K°3( àH˜úÀ"2@€€Ÿ aê§ Ï´!@ m/õÖë]ŸüZNªU«‘v®B€@ЦNûVêߘ?\lèÿ‚RlG% @ð$L=e%ˆ€<Š SZ‚¼˜ S/^ö°Úœur¥ØŽJ@€ YH˜fYüB€€W aêUËE°€€ aê…‹FÈ€ ?%@ÂÔOžiCð#Þ8.S=°K¤ûöÄJùÐ!-GU[²p!©ß´÷ˆ¿ až€²„Àò¿–˸όé&6ä®±çž{bú1±9ªæ[äÙÒb9@€ ëE€„éõ"Í8€ %H˜f v… *¦©¢á @B€„©‡,a@€@æ¨Xf»8.z,PìÍ !bóÙ´œ-@í+!—¤þÂ%µRà@™FàÕQÃÄ÷„ñºgôõ/ „è^§S‹ªò¿pë‚™Ž!@€@JH˜¦D…:@ð$L}f)™ àcH˜úØ‚2@€€ aêC‹ÉT @ u´= /-Ó=Kï¿a×øé ‹R>rò„Øœ9sÚ]§@î!0ëçâ¨M»öbg=¤~[UPÛdjœjUBlîš¼• G@€®¦×‹4ã@€@– a𥸀@2¦É(8 @àÿÚ»ó8-˲À3À ‹ *"¤¸ "¸[iVnå‚îZZ–e¹"¸ëë¾dfš+©¥–ej‹ænÙ/+-EqPÙQ7æ÷¾çåè0ÌòìÏñÏ}>÷v-Ç5Ÿ˜¾ÞÏ=* 0-Ð…1,ÈŽÀ¡ÎŒ†kžNï*=oaz§éù«-ãü㹨›o¾yv U”©Àqß:öŸE}òˆ9Q«Ò«¤ÿ£Òã†t Ç¹›Ä±êµ«ÿsÎ @€@.¦¹PÖŒ€À´`–Â@(3i™-¸é @€"˜ñâ:4]àɧһK_µ_ÜôÅ/ìuï=÷ŒÚ§Sç¨?½ïž¨{ì±GTÈŒÀQG yååTßLï–îݽSì÷Y³6ê_&,Šºù-žô @ çÓœ“ëò! 0͇º>  ð_é-|"@€ [@`ZØëct ÐJ©SÓ“¥—\¾Q´ô‹_¤wç­hvÞ¼yñq`ß~Qyׯ£î¶Ûn+.Q  @ ‹ãÆ‹ÖÇŒõ¶»o:u› Q;¬×>ª  @ WÓ\Ië‡ò" 0Í »N  Ðdi“©\H€äH@`š#hÝ @€@~öÙitüÀéyUUUùˆ^  @ I .Œë¶ÛcÛ¨mÛ¤û\D€È”€À4S’Ú!@€‚˜ä²V* 0]) @€@ަ9‚Ö äV`èi•Ñá÷¾ÿ›¨l‘ÛèZ%ðÔ3OÅýÃnµêké×[Õ¨›  @€M˜6É% P|Óâ[3#&@€À'¦ŸÔð™È¥€À4—Úú"@€¬ ¿¥.úèù¹³£xà7³Þ§ @ {g]|V4þÈ‚¢vè_ÝhguµéßÊvžHmÊI @`¥Ó•Ò8A€Å( 0-ÆU3f¬\@`ºrg @€ìL³ãªUÈÀ´iK¢¥iÓS¾¼®8>ùÍÅq¾æåTwÞë˜Ø¿èâë£Ú @€@i|q/ÄD眨6 PcÇŽ‰vÖ!Q+¿¶4ê;WOˆºQEú&Â[Ûwýû­Õ† Ð\isÅ\O€9˜æ”[g(XiÁ. @€’˜–Ü’šJSàÂsÞ‰=ö‹ÙQOù¸s½‰>Y·0öÛûð¨·ÜþËzçí @€@i|ç»ßŒ‰üñžßE}꨺¨gÿ-}ã`ÊëÇþÛt‰jC€h®€À´¹b®'@€¼Ló®Sœ€À´à–Ä€ @€@É LKnIMˆ¥-ðèÃÇ?dZÔËëºF\—ÞaúúW¶‹ýÇþòLT( Ã÷ß#&Òqæ QïÜ+}ã`ÅìÖ½1=aÚí¬MâPûuªWœR  @€Í˜6‹ËÅ oi¾W@ÿÈ€À4?îz%@€å( 0-ÇU7g±ÀÍ×ÅèWërRÔ³‡žõësÒ_GµAú«È¯Nx³ˆgiè °B ûš«Çǽ6œõ›Ó¿ÓÿÜW¬Ý)]¹úU•ñaËÛ¤¶ @€ L[ç6È€À4?îz%@€@¾¦ù’×/(_iù®½™ @ ¨žxrù¤/ïã>ó¬«ê÷¿û£_=ê{³>ªwÞ§ÀÝwßõïç£ÖŒJï0­ymlì8+½ÛºÇ†c­ó6ŠjC€h©€À´¥rî#@€œ LsÊ­3Œ€À´`–Â@ @€@ÙLËf©M”Å)0eJz²ô²õŽ ÜvÛ£Nä¹çž‹ó;í´S£×9I€¥!ðñÇé Ó³/9+&ô×OGí°iuiLÐ, @€œ LsN®ChŽ€À´9Z®%@€@ù LËoÍ͘d[@`šmaí @€@«öÙoiÜÿÀŸ_ŽZUUÕªöÜL€¥-°Í.[ÇÛ]µ²]eiOØì @€Œ L3NªAȤ€À4“šÚ"@€@é LKÍd[@`šmaí @€@‹†ž–žúÞ÷÷°E‹Úq”—À+£_‰ û’££¶Û¯®¼Ì–hµ€À´Õ„ @€lL³¡ªM”¾€À´ôר  @€@¶¦ÙÖ>4(ðî»éÝrÓ¦/‰óÓ—×ç_hû_ÜáÒ¨ƒÙàý @€Æ®¹é§qúöq·Fí°muc—WÔ-MO¢V¶õÎÓF¡œ$@€e 0-ƒE6E¢€À´WŘ P:ÓÒYK3!@€¹˜æZ\(S-63ýÍÅQ»¶oµ{uª«×¶ýšÅK£Î_œ®‹ ÐB}ŽÜ;îœöùIQ«»UE]4cQÔIWLŒºÎŸ‹ºÖNkDµ!@€ÊW@`Z¾koæÈ©€À4§Ü:#@€åS?  @€@s¦Ís=´Hà÷ÎŽû†þðí¨Ì_=jÇŠúïŠ;­CzâçÅ7^ó½zõŠjC€Z"0sæÌ¸íkGïuA·÷¢.|2Õ–?P:c¯ôïÍÛ¥ŸZÒ—{ @€Ò˜–Æ:š ^@`ZðKd€(IiI.«I @€¬ L³Ê«qø´À›ËßaºÍÖããÔI‹;GP™Þ)÷£.éŽ_<úP|ØqÇÓ[ Ð%K–Ä]_Úv³¨Û®69ê-{-‹Úëæô.í5Nëûz¶jC€”¯€À´|×ÞÌ  i^ØuJ€²˜–íÒ›8h±€À´Åtn$@€Öœ:,½»ôoO¤'úOKï’›Ô¶.šrÛð¨‡zhkºq/”©ÀC¾?f~ðÁ‡D}ä›éß—¯÷Nµ6=`ZÑþò´ÍíËTÊ´  @€O L?-bŸr" 0Í ³N P¶Ó²]z'@€­˜¶šP Л‡§'{ÖíunÜ6xð‘QOýÁ£þé7¿Mû—^uذaQm @€@sVë˜ÞEúÕM:Åmטu@·ô͆궩µS_¨Ž\Ö7°%@€Ê^@`Zö? [in½õF€r˜–ëÊ›7h½€À´õ†Z @€&<ñdz¢gÔ+ûÇÕgžùãïºþÚŸÅñ¯íñõ¨›Ðàu @€Æ¦OŸ§kjj–×W£ŽõBÔ¿ÿý¹¨mz¦wj¯öõb߆ 0õ3@€9˜æ„Y' °\@`êGh©€À´¥rî#@€& L™’ž,½ìŠÞqým¿x´I÷ÕÕ¥wVV¦'št“‹ @€@3®¸æò¸ã·oý:jÇ-Ó;M›ÙŒË  @€˜–Ðbš  Q@`Zˆ«bL °B@`ºBB%@€VLWH¨ Aû-vÿüç—£VUUe¥ @€Öì6x׸ýƒÝÞ‰ZÕµ]kšs/ PÄÓ"^ @€²˜–ý4MàùÎ o¸æý¨Ó¦.‰:ý­Ú¨3>HûËÒ¦§œrb¿êš¢Ú @€b¸ëž»b˜W=sEÔö_jø]¦óÆÍ‹ó6éµ²MeT @ ø¦Å¿†f@€œLs¬ȳ€À4Ï  { PÓXC @€@1¬x¢tÃ>oÄp¿U±ZÔmÒ_½_«¢Mì¿X·8êûîõÞ??Õ†“À·OüV ÷ÅÏ=µÃúÕQ?º÷í¨>7+j·czE]cÛÕ£Ú @€Å/ 0-þ54äD@`šf @€@L d! ƒäA@`št] @ ¶î?>¦±Ýôôn·]·ý7êÒ»LŸÞbãØÿûË£Jaºæ@€e&°dIú÷làNbæ½59êIÒ˺o]þÏÛšglÇÛ÷HO ÆŽ  PÔÓ¢^>ƒ'@€@þ¦ù³×3d_@`š}c= @€B˜êÊŠD`“õ§ÅH{/Hï2Ý{Nz"çºné‰Ó)ï¾S$31L ð_[‡ß;wfÔG,ŒÚ¯[º¦Ó*ãÃÖ¿LO ¦£¶ @€@)LKaÍy˜æ_× 5iÖh5L€ ^@`ZðKd€(LS‡¥'kŽûÁoc€{úÙ¨W÷?Q§Î›uqmmT PÈ‹-Šá ÚýËQ7©õ–¯\oØ£–qb¯GÓ;K׿´o½óv @€â˜ÿšò" 0Í »N  @ KÓ,Áj–¡€À´Í  O›n®‹î×[ÿܨƒYo8£^z)ö¿{ôÑQÿßóÏGíܹs½ëì @€Bxs|z¢t·wŠaMŸñ~Ô믞ê:éß¿ÅóÓ7(þÙ¹Kïyâ†Qm @€Ò˜–ÎZš r" 0Í ³N @ ÇӃ뎰€À´€ÇÐ PHO<¹$†óò袞qÆ•…4Î @€b˜ãª3Z!ð·¿Í»'L\uêÔ%Q§¼™ÞU:ebªïÌHO’þîÁ¿Æù·ŒjC€üW`îܹ±³ã~;DmLåOúD€¥€À´(—Í   ÐriËíÜI€>- 0ý´ˆ} PüÓâ_C3 @€@³vûÊĸþÝÑéÉÒ¾ Ó“¤kÖ¥'bºU´‰ó¿mŸÞ]úÄ¿^ˆý4« @€rñ䈘z÷ôïé§ füê­8´ö=¢V­áÝàŸ6²O€ò- 0Í÷ èŸ9˜æ\w PÓ²Xf“$@€2˜–ÉB›&>-pøSãÐüçÒ“¦‡ÏéXï’ëVOOœ^z÷]q|¯½öªwÞ ðYÓ/8->VûP:Ù±.êôk&E­ªKû=Ïîû>×>]gK€Œ€À´`–Â@ [in½õF€å! 0-u6K(mii¯¯Ù @`•çŸýn\s÷ G½¸vµ¨¿ZþDÌá×þ8ö¿÷½ïEµ!@€V-°i¿u㢺9éßÙgŽXûþ,Ý»íW݈+ @€¼Ló®SŽ€À´pÖÂH @ t¦¥³–fB€å' 0-¿57cÔ´ïÒØ?óŒ¢îµçžQ¿ZWu‡sÒ»Ø.¹ôÒØ·!@€>+ðñÇé›ûì¾SœÜ©ó„¨Wî¼ êèô iÅ×Jÿ¾npy¿Ï6â PÓ‚Xƒ @€@þ¦ù³×3”Ž€À´tÖÒL @€€ÀÔÏÊT`ÈÐʘù¿;jÿþ¢.Xž„é³þ±øa‡E½ö曢Ú @€ÿõâ ±³Ó—Ò“¥Wî^ûG.Ei÷NéÚ»_Mõ췺ćuŽß0°%@€ N@`ZpKb@È€À47Îz!@€Ò˜–öúš”§€À´<×ݬ (c›n®‹Ù÷Ú༨pD£3f̈óŸûÜç½ÎI PŽÏ?ÿ|Lû7wþ"ê˜W^ŒZóúø¨•ué]á]«—Äþ‚¯v‹Úc¿îQm @€Â˜Þš²* 0Í*¯Æ  @ Ì¦e¶à¦K€e! 0-‹e6ITTŒ|"=Ù2ºfppœ~ú° @€Y˜9sfôðïÿ;êÙלµúèô.ñ,w¯y @ Ó ¹…Å( 0-ÆU3f(vi±¯ ñ @€@9 LËqÕÍ™²˜<%=YzÅ•}bÞ·ÞúpYÍßd  @€@! ÜÿÐý1œ ïÿŸ¨Õ;·)¤á  ð¿S?(qi‰/°é @€@Q L‹j¹ –ÊT@`Z¦ oÚ¯ÀÒ¥é¯Ü¯˜Á´ié Òéo¥ºbêÔ´?rd—¸tįEm׮݊[U @ O'žyBôül‡'£vèÓ>O#Ñ- ðié§Eì @ À¦¾@†G€š 0m’K @€@ž¦y‚×-Z*ðáKãÖµ{¦'F{®–žíÖ.½mÍe©ÎŸ»,®«Þj@Ô¿¿ôRK»t %-¿²E´\õÝô ’Ê6•YêI³ @€@S¦M•r D@`Z a @ Ó j‚dX@`šaPÍ @ ÛuË_azñyïFWÜ6;ê;×ëzJ]mìß½a·¨c&N¨wÞ _z1qì•ÇDm·Oý1Í37¼û›·¢npVŸ¨Ukx'y}){ @ sÓÌYj‰9˜æ„Y' @ 'Óœ0ë„4K@`Ú,. @ ð{dN êˆC§F½diרí+Ò;ÐÎé°8ö?š›®‹ @  ~ü³+céã¨Ï¿™Þa¾Ýc߆Èž€À4{¶Z&@€@N¦9aÖ Ȫ€À4«¼'@€Í˜6‹ËÅ(éåå»Ü_Ç7üQ¿Â´‘ @€˜–èšå# 0-Ÿµ6S(]ié®­™ @€@ñ L‹oÍŒ˜õöÞ·6ö~øÕ¨mÛ¶ºï®»Eýç¿þõ£Ò“§›nºiìÛ @€ù¸þšÇ ®¿ê²¨:7jßnil÷ŽIõô)]âC7Ll  @€¬ L³F«aäF@`šg½ @€lL³¡ªM Ð:iëüÜM€¼ Z}ÿðø»£öïŸÞyöéÝxýõqè»ßû^ÔN:}úû @€@Ž®¾òòèñækõ°~‹¢\;}sdÀ:i@÷-Âô7ë¤=ö_~"¶%@€² 0ͪ&  i.”õA€²# 0ÍŽ«V  @€@&¦™PÔr(pÓÍË¢·^œõ€Ïaïº"@€2!0yòäh¦¦¦&ꘚô.òš—ž¯·?ýí·cõ£Ò“¥k|~õØ·!@€²' 0Íž­–  iVX5J€r* 0Í)·Î @€@³¦Íâr1ò'0rä’è|ô˜ÁQO?=½ó,#Ò3 meËÒ7K~9½«¼ÓÚe»Kí @€²˜–ýŠE@`Z,+eœ @ sÓÌYj‰4U@`ÚT)× @ Ç3f¤¿’ûÆØôWswoÿÁ­·>œã‘èŽÈ·Às.†pâ?ŒÚnÏ|Hÿ @ t¦¥»¶fF€@‘ L‹| ŸdP@`šALM @€ULWä4²%pú©3¢é¿>3/êÛï¤w”Îø0=YºVǶq¼íÒTŸø×¿c‹-¶ˆjC€”ŸÀÅW]“þýÌßEí°Euù!˜1Ȳ€À4ËÀš'@€Àʦ+“qœX™€Àte2Ž @€Ì L3g©%4KàÁû?ŽëýÖô¨Ãw‰Ú«"=QZ¹¼µ›;.O§þò–¨‡vØò3  P®;ïÿÕ˜úì=Þ‹Ú®K»)æOYÇ;mØ¡Áó @€Ÿ˜~ÖÄäD@`šf @€’˜–䲚ˆ€À´@Â0(_‰Çä·Þj|ÔwŽ:°¢*ê=íÒ»Mw»âÂØ6lXT @ |&Mš“|òþQ«­oñÁ-SãÀ»£çFÝüÆÍÓ+¾ÂRÿr{ @€À'¦ŸÀð‘ù˜æC]Ÿ @ ¸¦Å½~FO€…- 0-ìõ1:ÊH`Ĉô$éÌŽYo?+í×Í_ûëœð¨×ÞpC©˜* ИÀ¿¹#N_~ÿ%QgŒLO–žóźؿ¶&½Ût£÷k¬ç @€OL?á#ò) 0ͧ¾¾  @€@q L‹sÝŒš [@`ZØëct”À¤ÉéIÒý¸OÌöÖ[Ž:ìø¢>v×o£öÿÊNQÿôØ£Qm @€ŸwÉå \'ûIDATF üþŽë¢>sTú½âÙÉÉfèÄônô'o”Ø @€«˜®’ÈÈ®€À4»¾Z'@€¥, 0-åÕ57È—€À4_òú%@€Àr½÷©O?òjÔ¶mÛÖ³¹ù†cÿíiÓ¢^vÕë·C€”ÀÌ™3c²û~íËQõx+êE;ͯ‡p᳕±{×µ£ö8°G½óv @€• LWnã r" 0Í ³N @€@ILKbM‚ \@`Zà dx”®À)§¦'?Ž?áî˜dÿþì‚ â|ÇŽ½ÎI @ tŽ9ꈘÜïîûCÔ-{¥w”ì¾4ötõþñm¢¾³O¯¨k~~õ¨6 @€Àª¦«6r²" 0Í «F  @€@I LKzyMŽ D@`Z a”À7ÕÅd7Øèü¨ûïXùLÞL  @€Œ,\¸0Ú©©©©WÇŒûýëȨswIOžvÜ¢}ìÛ @€«˜®ÚÈȨ€À4£œ#@€e) 0-Ëe7iÈ‘€À4Gк!@€ÀˆKáÕ׌zúéW@!@€dUà‹{|!Ú_|ð¼¨m;¤w›fµS @€"˜ù>Å# 0-žµ2R P*ÓRYIó @€\ Ls©­/JRàö;?ŠyM·8êäq‹¢Nšž(8%_Ý ãø?G¿Õ† m±cÇF‡uHÔªôE—lw«} PÔÓ¢^>ƒ'@ ¦…° Æ@€4$ 0mHÅ1 и€À´qg  °JÕVKv‡%é¯ÏnZÑ.îY«bù;Â*+cÿ7k¥óSg¾»Ê6]@€ȤÀÍ¿¸9šþò QÛ>ý¾’É>´E€JE@`Z*+iäM@`š7z @€M˜6Êe @à¦~  !펖¶œšžØØmQz¢´vyûÇUÌŠO‹kWÉPÇš!@€4Qà cÒKLÇõwtè™~_ùôíŒ|?uÛcíOŸ²O€J^@`ZòKl‚äJ@`š+iý @€-˜¶TÎ} PNÓrZms%@ '»ì0=úYöF]Ôã´zJõ‚¨c§LŽÚ½{÷¨6 @€\ Ìš•¾ñòÕƒ¿]V+õ<ç•9ñaܵS¢®Ñ=}c¦ÏO6KØ @€2˜–Ñb›*¹˜æÆY/ @€@ó¦Í7s”Ÿ€À´üÖÜŒ È’ÀˆK¢åW_Kï[«ËF±Ù™gEmWYõÞgžŠºÍ6ÛDµ!@€äZàáÇŽ.O:ý¨¨,õä-—F6±sÔ'oÕ†”“€À´œVÛ\ Ȫ€À4«¼'@€2( 0Í ¦¦ @ ä¦%·¤&D€@®&MNO–^yÕ&Ñõ-·km¦dXà”SÓ_½?áÄ{¢åÍ6ëŸá4G€ÈŒÀ9g †ž{ö©¨cÆNˆÚ¾mj¿ôaÌŒùq û¹}ÒùÕé[ PFÓ2ZlS%@ ³ÓÌzjÈž€À4{¶Z&@€Ò˜–ÞššY¸á¦ºèa£ÞDÝo¿C³Ü£æ  @€Ù˜1cF4\S“ÞÅþÀ#÷Çþ³uéIÔÛzÂ4;òZ%@€B˜òê) 0-Èe1( @ Ó ¹…J^@`ZòKl‚¬Jàׯ%3g¦¿v?mú’ØŸ¾¼Nº8ö_})ßvÇïÆþ¹çþ$ª  @ Ô±WLiú&G­îVUjS4 °RéJiœ @ \¦å²ÒæI€4U@`ÚT)× @€@) LKqU͉f œ1,½»ëŽ_|÷mXÝ.굕Q».HulŲØ?uø Q¿ÿýïGµ!@€”šÀÌ™3cJ_;z÷¨Õß(µšX¹€Àtå6Î P&Ó2YhÓ$@€š, 0m2•  @ ¦%¸¨¦D€@˾yðÔ¸qö³é¥GÌéT¯¡*Æþæç zÉ¥—Ö;o‡ Pjxà÷1¥K¾(jõWÚ4:źں8_Ù.}C§Ñ‹$@€* 0-Ð…1,r/ 0ͽ¹  @€Â˜öúdG@`šW­ PÄ×ýäýýu}õ’Ú.QŸ­[uñ¡ûFýÕ=¿‹jC€(uã†S|®Ë_¢vܸ}½)Ïz*ýÞ´dú‚8ÞýÛ½ê·C€ŠI@`ZL«e¬äD@`šf @€E$ 0-¢Å2Thµ€À´Õ„ @ Ôn¸)½{kÑ¢#bjçœ}AÔ£+:F´ýÀ¨Ï<ÿϨ6 @€rð¥ÍcªÐ6ê{7NŽºîó£N_3½¾Ç)ž (Fi1®š1 UiVy5N€±€À´ˆÏÐ  @ ÉÓ&S¹R1bIL±æõ£žvÚQ—,IÇ7Û¨wì§çO+*&¾5=öm @€å"pË-?©9ù„¨w N3Ÿ^_q[—µã@ƒz¤¶ @ ¦E¸h†L€@v¦ÙqÕ* P:ÓÒYK3!@€• LWnã e"0qRz‚ôª«7ÿüç6:ó§Ÿz*Îï¶ûî^ç$ @ TÎvbLåÞõ‘ƒfEí\f¸ïŸÚć׿²^Ô5¿Ð5°%@€E( 0-ÂE3d2+ 0ͬ§Ö @€Ò˜–Þšš¬\@`ºrg(½ÕÆL}¬&j›6é ‰2™¾i @€V*°ËŽÛŹªÒïIÇm½8ö®“néŸ^YZ±ÑðôûÓjCúĉŽëµOØ @€"˜á¢2™˜fÖSk @€@éLKg-Í„š. 0mº•+ (1SN­Œpâ=Q7Û¬‰ÍÐt @€­xðÁôn÷Q/þ;óò QkjÒ§oL|+ö{tK/3]ï§}[ס»  @€@L ` üLóã®W @ x¦Å³VFJ€™˜fÎRK˜À’%u1¢iÓ–DþVªO=Ý.ö·ÿü¥Q÷Ûï°¨6 @€Í¨«K¿o ¿mxÜ8üÅ¢¶ÿRú}«y­¹š†€À´0ÖÁ(È‚€À4 ¨š$@€|B@`ú   @ d¦%³”&B€Àv[„)SÓ“¤³ç-‹ýu:µºÚ²ôÎÒùíW‹ýé~Õ† @ 3ß>ñ[ÑЋŸ{>j‡õÓ»M3ÓºV @€@n¦¹qÖ 9˜æY @€F¦à8E€E# 0-š¥2PV%pÙù3ã’ßOOŽž1§Kƒ·|·bVŸ;~ÔêjO>4å  @ ™K–¤oúl³ÛÖqg‡ïµif .'@€ù˜æ Œ€ L3© @€@ ¦-„s”€À´ –Ã`È„ÀÈÇçD3‡<5êŵ]£v¯HO8œÝ©6öŸõbÔ>}úDµ!@€ÈŒÀ³}6rËIQÛíÑx»Kf¥ßϪÖh×ø…Î @€Ls€¬ r+ 0Í­·Þ @€Ÿ˜~ZÄ>“€À´˜VËX h–ÀqÇ/‹ëþÃŒ¨‡Í¯‹úLÇô¤éõü1öwÞyç¨6 @€™øŸËÿ'¼ÿãû¢vܼ}Ôº¥é÷²i—¾û6îuíoõŠjC€ò) 0ͧ¾¾ Ȫ€À4«¼'@€¬R@`ºJ" @€@ L pQ ‰Ö \Czb¡wŸó£¡ýö;,ê௧—gþÇ?cÿ’Ÿßõ¨£ŽŠjC€ })~oýiQ'þrzÔ£¶¬ŒúÔzÝ¢ö8¤gT Oi>õõM€@V¦YaÕ( @ ÅÓÓ¹‘ò 0ͺ. ÈŽÀˆ‘µÑpÍkF=í´Ëìè´!§ÆñãN8>j¿~ý¼ÎA @€Ì|ãà}¢¡wGˆúÔ7—F|z·üè/­ûkíÐ5ª ȧ€À4Ÿúú&@ £ÓŒrjŒ 1iÆ(5D€9˜æYdW`â¤%ÑÁU?Ù4êÏoy0»j @ Q7Çó»ìô…¨î4?ê÷·Z\ï¾>·¶ý'ôŽÚqýõÎÛ!@€ù˜æC]ŸdT@`šQN @€Z- 0m5¡ @ Ó<âëšÌì9(½»ô±Çj¢Á6mÒ»°2ÓºV @€š+°î:é¯Þ¯×%ýž¶Ý:©X3=i:pÔâî¿NuÛÛ¦•ÍíÉõ @ óÓÌ›j‘ Ls ®; @€À*¦«rš Z@`ZÐËcp4&pò©é„“Nº7.ë×o³Æ.wŽ @ GsçΞ^y啨55é›@c^y1ö_ú×?¢¾ýÁô¨k]Ø+ª (i!¬‚1 Ð"i‹ØÜD€Ⱥ€À4ëÄ: @€, L³ˆ«iš'ð—gçÅ ¼wvÔ©Ó_Q6mIìϘ™Þ}õÑœe±ñeF=ë¬ ¢Ú @€—ÀãO<>ó®Ó¢Vïî]ôŵ‚FK€Ò˜–溚¢˜å²4 @ ÅÓÓ¹‘²( 0Í"®¦ hžÀKÿZ7|uç Q¬íµWE»¨kV¦'ž¯KOž®sÂwâøµ7ÜÕ† @ 8N¿ =aúXíC1ŽýÚçDŒšJB@`ZËhJC@`Zëh @€æ L›+æzȦ€À4›ºÚ&@ Eo¿•ÞYºÕããþcæ¯u«ºª¨/,ÂtÚ×wŠýû,ª  @€@q l¿ûv1eG¤oµ©öNÓâ^Q£'@€@q L‹sÝŒš@I LKzyMŽ °RéJiœ @€ Lsˆ­+Z&Ðkí‰qã——uŠºÙÜôÓ‡ú®û/¾þZËv @€@A ÔŒ©‰ñ|óü#£VÐð𽟾‘´âùÓªµÓ7‘¾ÚQ Ð<ió¼\M€@¦y@×% @ Ó< ë’># 0ý ‰ŠÀÉC*c('|oÔ;~kÔ‘wþ:êÛ•uQg|øAT @€Ò¸þ–ëb"·ŽµÃvé ÒÙO§ßûÞ¾ï8¾æ×ºEíyHϨ6 @ ÓL(jƒ¬L³ÂªQ @€@Á L ~‰ %- 0-éå59Å)pý éÉÑÞ}Î ì·ßaõ&ò§ßÿ!ö/½è¢¨£–¿ëªÞEv @€Š^`ÿ£ö9ŒõdÔ]V[uv*5;­ûk}±kT i&µA€@F¦åÔ @ h¦E»tN€¢˜õò<Òx|DmLèµ7Š:lØeNðã?Žó«¯¾z£×9I€ P\OŒ4hPÔß²,êàÍÒ<6¾¥M|èxÒÆ©öêNØ @€ L3€¨ 2# 0ÍŒ£V @€Å. 0-ö4~·€À´¸×Ïè ”„À„‰Kb?¹zÓ¨?¿åÁ’˜—I @€4OàøcŠÆýýá¨#µ]z ô?µ¹$}ÜööéCåNù@€Z- 0m5¡h­€À´µ‚î'@€”†€À´4ÖÑ, PìÓb_Aã'P{Jï.}üñ11›ÊJ”À²š @ Ù[m¾IÜ3aò´¨Ý»TGØ£mÔuªæD½Jú}qãŸö} Ii&5µE€@‹¦-bs @ ä¦%·¤&D€¢˜å²4ÂxýõE1À±ãR>=½£têäT§Œ_ç'O®Šz×ÿµoß~Qm @€üŸÀäÉ“¢¦¦&ê+/Šúë?Þµó)£V¶ñ ¥€°!@€ŒL3¨>) 0ý¤†Ï @€-˜¶TÎ} ÐikôÜK€@ƒýûŽ‹ãmgÖE]izçT×Eé¿ü¯U‘þÌé]mÓ“¦ßš×uïÞ½Áö$@€ ðI_z1v½ò˜¨íöùäYŸ  @€@릭ós7 L@qˆ @ cÓŒQjˆ˜6€â™øÒ¶oFC›LLO˜î± }½†/霞@½çé'âø¶Ûn[ï¼ @€ üøgWÆé»¦ÜµÃÖÕ]îh’€À´IL."@ %Ó–¨¹‡ @ ©Ó¦J¹Žš# 0mŽ–k h‘À1G¤w”¾þpzgéÉK:D;7vIï4=÷W¿Œýý÷ß¿Eí»‰ @ ¼ö8äëðî—§E­Z³ª¼AÌžZ% 0mŸ› hŠ€À´)J®!@€h©€À´¥rî#@€†¦ ©8F€@FöTíuøQÏ:,jß%©›~rY|8ñÄÓ[ @€Íxûí·ãê½Ý3jÕ ß<óîq¢ËW׌ڱWúæSÃW;J€å* 0-ו7o9˜æ[W @€2˜–ᢛ2²( 0Í"®¦ ”»ÀI§¤w”ž2ä¾ èÛ·_Ô7^=ê–[lõÜsÏ‹zÑ%Gµ!@€ Ð{þð»¸íŠ‘—Fm»mú}ôÝŸNŒýNsÒ;õ— ^7ö×Úq¨6 @à“ÓOjøL€@F¦åÔ @€À*¦«ršš$ 0m“‹hŽÀõ7ÔÅåorAÔ}÷=´ÑÛgÏžç»víÚèuN @€hŠÀ×öþj\ö÷gþuä7Òï§ßÑ6ö«~Ø;j§ ¼Ã4 l @ ž€À´‡2! 0Í„¢6 @€Z* 0m©œû @àÿ¦~ȘÀc×F[oŒ;8êСéÝQë@C @€8úÐýâlíäôdéïö™Uïê¶Ë=Ýú¶q¼²mzÇi½‹ì @€@Ù LËþGÌ L3g©% @€æ L›oæø¬€Àô³&Ž ÐL —ÄW_Ó/êðá4³— @€h¾À²¥Kã¦Î«uŒzüöË¢ž¸]:¾ñš©Íq¤ºã}íâCï«6Kl  @€@ÓP"@ yÓæy¹š @ 3ÓÌ8j…ê Lë{Ø#@à–,IE´ª*½ÓiÖ¬ô_è§¿•ž$>½~½÷÷]ÂmäÈ×¢VVz”$ @€ì ÔÖ¦wèŸyÚÐèìÍ7FGóÚQgÌü0j.Ë?Ý Cìw²aT ЀÀ´!Ç”¹€À´ÌLŸ P$Ó"Y(Ã$@€@‘ L‹lÁ —@.j^]Ýl÷ù7£¶_þ×C×nß6ö×jÓ&êÜ9éQ[í3(öïý³w—„  @€@A,X° Æ1f̘¨CÎ?%ê¼}fEm×%ý~;6 @`¹€ÀÔŸ˜~†Ä @€"˜á¢2 @@`Z‹` M ¶6½Ãô;GN‹¡½÷—ÅQú¸S½¡¾Z—ÞeúÂöýãø3Ïÿ³Þy; @€ I`Ò¤I1œÁ'ïµêÐB± @€@¡L e%Œƒ@ L h1 … @ cÓŒQjˆ%- 0-éå59™~ýÑÐÕ¼õâ«G}»biÔÛzvŽ:~zz"5vl @€¨ÀwÝ#»öïWG­ÞÁ»L t© ‹y˜æ…]§ŠK@`Z\ëe´ @€ L÷q–å. 0-÷Ÿó'Ð Ó»JÏ>§G\ý‡?>õü6éIÓkªÅþÜ… ›ÐšK @€†À7~pd dô†/Fí°^û˜Q @€@^¦yå×9â˜Ç:% @€@ó¦Íór5ÊE@`Z.+mžZ!°ÇÞµq÷È‘¯Õke‹>›Äþ„iéÝ¥3Þ›û]»v­w @€…(°`Á‚ÖöÚ>jûï¶©7ÌE3Çþ´«'EíyÜúQ;oÒ©Þuv @ ´¦¥µžfC +Ó¬°j” @ ÏÓúÔÆž}êâÛ¦ý/Þ“^bÚû'›¥¶ PÒÓ’^^“#Ð<ió¼\M€ PÜÓâ^?£'@€@¶¦Ù’Õ."˜7/½“éÕšE1Ú_Ý5 êðáé¿´Á ‘ @€@³^ýJܳëWvŒzø€ôDéÀµÆþ€î©Éi³S={Òjñ¡Ç©½Ó[(iiI/¯Éh\@`Ú¸³ @€¥) 0-Íu5+dJ@`š)Ií(@3O›£õ¯Q§O_õ­÷Ò»JkkÓIïÒ¶*Ž¿2iJÔž={Fµ!@€ Pгg§GG_~ùå˜Þ˜1c¢Ö¼ü¯´ÿÊKQ_ýzÔu÷èuõƒÖˆjC€¥- 0-íõ5»2˜–ù€é @€4( 0mÅAX. 0õ£@ „nºöý˜ÝÕ¿õ¸ù£v«lµSEeÔ«:§'M¯»ÿ±¿ë®»Fµ!@€ @ ¢â c †qýÓ“¨z¶ÇB€%, 0-áÅ55S? @€Z/ 0m½¡ PLÓbZ-c%ÐBgÿ27î´÷ä¨/ëµgEÛ¨¿ì”ž0ýîM?‹ý£>:ª  @€³fÍ †¯ü•¨ÕߢB€¥, 0-åÕ57˦~ @€´\@`Úr;w @ ¦Å¸jÆL …ºIÜy±oE=tQ»¨Ó–¦ã_¸èìØ?÷¼ó¢Ú @€ ð_‡{8vν÷¬¨Õ»¦¿ ðß+|"@€R˜–Â*š& L›å2 @€ L@qˆ%( 0-ÁE5%Ÿ˜01=Azõ5ýâÔðáD=dïAQÇ?û·¨_<ì਷ÞyGT @€>+0äÜSâàSmGDí°Iõg/úß# g,Jç?×¾Áó @€@a L s]ŒŠ@F¦åÔ @€@™ LËüÀô (yiÉ/± ¨¨ØcïÚ`9òµ9N?eH_»[·¨g_xAƒ×9H€ @€À¶ÙeëØistú}»²]eìϺÿ¨ï?ûQÔu‡õŽÚiƒQm @ °¦…½>FG #ÓŒ0j„ @€@=i=;(iÉ,¥‰ø¬À‰'§ÿÂ=äÔûâd߾馟½2™3gN|èÒ¥ËÊ.qœ @€å/¿òr|:ú‚oF}ô„¨ßîþ†ÀµÏÕÅþ€ûGmSÝ&ª ¶€À´°×Çè´J@`Ú*>7 @€hT@`Ú(“(ZiÑ.X¹Àu×§ÿ’½Iß‹â¢}ö9xå;C€ @€@‹~}Ç/â¾!'uÄ7Ò»L×Y-5·Í]íâCŸk6Kl  @ (¦E±LI yÓæy¹š @€@K¦-Qs _@`Zøkd„š,ðècé¿hHÜ3tè%M¾×… @€4.0oÞ¼¸à;Gµã»/DýÕÞ³ëÝøð¸´ûÃ1âCÏa×;o‡ [@`ZØëctš% 0m—‹  @€4K@`Ú,. @ h¦E»t^N÷Þ—þ‹õ”)‹cړǧ:ebúë›cÇ/Šã½{÷‹úÄÿ]N<æJ€ @ 'wÝy{ôs̱ߋºiÏÎQ®SuÀs£NþhYÔ§×[;jÃzFµ!@€â˜Ç:e™ LËüÀô  @€ B@`ZË`Ⱥ€À4ëÄ: ÐzŽk¢‘/W´ºîÒ¶Qתhu~E]Ô6Y/ꨱoDµ!@€ @ sË–¥'GÛ´I¿‡;6¯©I¿¯y5}Óëé'Šã37Jï<í´Guæ¡%Ⱥ€À4ëÄ: Ðzië µ@€ @ µÓÖ ºŸÅ! 0-Žu2Ê2˜9³6¶Ü||ԣ槿¶¹õÒªØÿ¨"ý—îË»$¨w>ú0}°%@€ @ oÇ ;.ú~®Ë_¢vÜ8}c,oÒ14I@`Ú$&ȯ€À4¿þz'@€ ÐiKÔÜC€ü Ló¿F@ Ù[õ÷lòN»¨.Jï4ýö²ôdé’ÚôDêŠw+5»7 @€ 1Íwèmu:>ýþž±†5D€Y˜f…U£²+ 0Í®¯Ö  @€dR@`šIMm @ ûÓìë@Æ},=9:vü!Ñæ‡o-ˆúÄ¿Š:yQÚáµ1±¿ÁDµ!@€ @ /üë…èü¸ŸµÝÞù‹ž  @`ÕÓU¹‚@ÁL f) „ @€@“¦M¦r! B@`ZË`xsÂ’¸àšŸõ‹zóÍÔ»áÁûÓþñßÿ~ô©'£nµÕVõ®³C€ @€@þ.ÿéeÑùïfü&j‡-ªÌ{¼Ç»}½[Ô6Õm¼ÎAÈŽ€À4;®Z%QiF95F€ @ /Ó¼°ë”͘6›Ì r/ðõ½Ò»KŸxâµF;ÿàƒâ|·né¿D7z±“ @€äE`·Á»F¿ìöNÔ¥s—F}ûš‰QçÌ^u‹›ûGõ„i0Ø @ gÓœQëˆ@˦-·s' @€B˜ÚŠê Lë{Ø#PP'žœÞUtêÐûb\›nÚ· Æg0 @€4_`êÔ©qÓ.{>ê²ÞúëAéÉÒlû}~ºYTÈ­€À4·Þz#Ð,i³¸\L€ @ (¦E±LI€@ LËxñM½p~v]] ®ïfG4è Â¬‘ @€ Ð$yóæÅuûìö¥¨Û¶õšÝF}(íVÿÚj±ßshï¨6 [in½õF IÓ&1¹ˆ @€@Q L‹j¹ –2˜–ñâ›zî/NOŒ¾ÿ~úk÷ÓßZO›V¿Žy5ýuÌÍ·üAœ:ô’Ü RO @€dEà©'v÷Ýw¿¨¿Ú?ýÿ‚ÃÔï¥ýáÖŽ=íYÿ{ iN˜uRîÓrÿ 0 @€r˜–óê›;Å(ðÿwÑäõ½ú6kIEND®B`‚wagyu-0.5.0/docs/overview.md000066400000000000000000000012561360766232600160070ustar00rootroot00000000000000## Overview of the Wagyu Algorithm The Wagyu algorithm is based on the [Vatti Clipping Algorithm](vatti.md), but has several different steps in addition to the typical steps of the Vatti algorithm. It is due to these additional steps that Wagyu is able to guarantee that all output geometry is valid and simple. The complete algorithm is based roughly on the following steps represented as psuedo code below: ``` wagyu(Geometries) { LocalMinimums = build_local_minimums(Geometries); HotPixels = build_hot_pixels(LocalMimums); Rings = vatti(HotPixels, LocalMimimums); CorrectedRings = correct_topology(Rings); return CorrectedRings; } ``` wagyu-0.5.0/docs/point_intersections.md000066400000000000000000000120671360766232600202450ustar00rootroot00000000000000## Point Intersections Intersections of points will be found after the vatti processing. Every point will be part of a ring at this point and no ring will overlap another ring. It is the job of the topology correction code to take the existing rings and handle the different intersections to make valid and simple polygons. ### Types of Intersections The following are the types of intersections that can occur * Intersection of points on the same ring (Self Intersections) * Intersetion of an exterior ring with another exterior ring * Intersection of an exterior ring with an interior ring * Intersection of an interior ring with another interior ring ### Self Intersection A self intersection is an instance where two points belong to the same ring. Each time this occurs a section of the ring will become a new ring. #### The Fundamental Assumption of Self Intersections The resulting rings from the vatti processing are **guaranteed** to never result in the path of a ring crossing with itself. While the path might be collinear or share intersection points that need to be cleaned up, it does not ever result in an "crossing intersection". The image below shows a single ring - this is *not* a crossing intersection because the pairing of any two segments (one being towards, one being away) does not result in the path crossing over itself. ![Simple Self Intersection](simple_self_intersection.png) The next image however is an example of a crossing intersection. ![Invalid Self Intersetion](invalid_self_intersection.png) Notice how no pair of towards and away paths can be selected such that the paths do not cross. This will not occur with the output from vatti and we must ensure it does not happen in the topology correction processing. If a crossing self intersection were to occur during our spliting process it would cause the winding order of the expected output to be *reversed*. This would greatly complicate ring determination, so we must avoid this from occuring. #### Complex Self Intersections Very complex self intersections can likely occur were *more then 2* paths through the point. The following is an example of where this can occur. ![Complex Self Intersection](complex_self_intersection.png) While this is not a crossing self intersection intially we must take care with the order of the processing of the paths. Splitting a ring into two distinct rings is the critical part of self intersection processing and *if an intersection is crossing the two resulting rings will be crossing each other such that one ring could be partial inside the other*. This makes it **MUCH** more difficult to properly determine parent child relationship of the resulting rings. #### What Does Self Intersection Processing Do? It is difficult to visualize the original path with out "spreading out" the points that intersect ever so slightly, lets explore the processing of the complex self intersection that was shown above. ![Complex Self Intersection Split](split_self_intersection.png) Assuming that we labeled each of the intersection points from left to right in the picture above as `A, B, C, D`. Lets explore how the order of the self intersection processing can result in intersections. At its core self intersections are corrected by swapping where each intersection point will travel to next. The code for it is something like this: ``` // split the polygon into two ... point_ptr op3 = op->prev; point_ptr op4 = op2->prev; op->prev = op4; op4->next = op; op2->prev = op3; op3->next = op2; ``` Basically the directions of the paths are switched. If we processed `A` and `B` together from our example above, first it will result in the creation of a new ring as shown below: ![New Ring Created](new_ring_si.png) This is proper because the resulting two rings -- are either **completely within or completely outside of the other ring**. Notice as well that when we zoom in there are still no crossing intersections. ![New Ring Zoomed In](new_ring_si2.png) However, lets say we attempt now to process `B` and `D`. Hint: This is not what we want to do! ![Bad Intersection](bad_intersection.png) Notice that suddenly the new polygon created is both inside and outside the original polygon. This means the ring is both a hole and not a hole! #### Proper Path Processing for Complex Intersections In order to prevent this from occuring, self intersections should only be performed between any two paths selected for another intersection where there is no other path that would bisect them! To determine a proper pair of paths for self intersection, the angles of each of the segment of a path are sorted in relation to a single path. Due to the fact that no paths will be crossing, we can first sort all other paths as either on the left or right side of the path. After this all paths on each side are sorted by those that are closest to farthest from one segment on our source path. This allows us to find the path that is closest to the first path selected. If we process all paths of the self intersection in this method until no intersections remain, we will always produce valid rings. wagyu-0.5.0/docs/simple_self_intersection.png000066400000000000000000003354031360766232600214210ustar00rootroot00000000000000‰PNG  IHDR^Ml’9 iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ¥J! J AÅŽ,*¸v± ¨èªˆm-€¬Q,,ìET”u±€•7I]÷•ï|3÷Ï™sÎüçÜ™ûÍ ìÈrPrùù˜`?fRr “$ü)0b±Eßèèpeäùw¸m¡\·–ÆúçøUWĉ†8#bçB| \›-æ@hƒz£™ù)~±º€H–â 9Ö‘â49¶•ÙÄÅøC™Êb 3P’Æg°3`%Ķ|ñvˆ½Ø™,ĈÇåæÎ€X™ ±yÚwq2þ3m4&‹•1Šå¹È„À rX³ÿÏrüoÉÍÌa5S#ÍÖmoöŒ0)†Ü‘“ü´È(ˆÕ ¾ÄãÈì¥øn¦8$~ؾ—-ò‡5 PÀa„A k‰2ÄÙñ¾ÃØž%”ùB{4’—7ŒÓ„3b†ã£üœÈðá8K3¹¡#¸’+ Œ±Iç…B Wz¬03.QÎm*à%DB¬q›(;6lØ÷aa¦äˆP#ål ñ»taPŒÜÓÌä…Ù°Y²¹4!öÉÏŒ ‘ûbI\QRø7 PÎãpùñÃÜ0¸ºüb†}K9ÑÃöX%7'8F^gì°¨ vÄ·#.0y°ÇY¬‰ÑrþØ€ ?:NÎ ÇA8ð€ İ¥ ðZ{ëzá?ùH`!È\`=¬ñH”ða ÁŸqhÔÏO6ÊPÿeT+ï­Aºl´@æ‘ žBœ‹kã^¸{ØìqWÜmÄ©<2+1@ !-Fy°!ëØ„€÷otaðÉ…ÙI¹ðGrøð”ÐNxL¸Iî€ðDeØj:¯Høs&ˆ-h8»4³gÄ7…¬p?Üò‡Üq® ¬qG˜‰/î ss‚ÚïŠG¹}«åóIYŸÏ°^ÉRÉi˜EÚè›ñµú1Šÿw5âÀgØ–ØRì(ÖŒÃ.c'±:ÀÄÎ`õX vJŠGWÂÙJ™-FÆ-ÆáØØÖØöØ~þÇì¬aBÙûùÜYùÒ á?C0[ÈËÈÌgúÂ/2—ÊgÛŒcÚÛÚ9 ý¾Ë?o²ï6¸òM—w·R¨Ìø¦cpâ)ôo:£7p{­àT[,,ëpiG  w†ÐFÀædœð`"ˆq LƒUϹõL0,%  ¬ëÁf° ì{Ápԓฮ‚6p܃k£¼}` "BBhÑBôÄ ±G\/$ Gbd$É@øˆ™‹,FÊ5ÈfdRüŠœ@Î!—‘väòéAÞ ŸP ¥¢ê¨.jŠŽG]Q_4 C§¢hZˆ£+Ðhº­EÏ¡WÑ›¨}‰öcSĘf¹bþX–‚¥cBl>VŠ•cUØA¬¾ëë˜ëÅ>âDœŽ3qk¸>Cðxœçáóñåøf|/^‹7á×ñGxþ•@#è¬î„PB!ƒ0“PB('ì&'\€{§›0@$D3¢ Ü›ÉÄ,âârâVâ!âYb;±‹ØO"‘´HV$OR‰EÊ'•6‘ö“Î:HݤdE²>ÙžDN!óÉEärò>òirùyPAEÁDÁ]!J£0[a¥Â.……k Ý ƒUŠÅ“GÉ¢,¢l¤¤\ Ü§¼UTT4TtSœ¤ÈS\¨¸Qñ°â%ÅGŠ©jTKª?u UL]AÝC=K½C}K£ÑLi>´Z>m­švžööA‰®d£ªÄQZ T¡T«Ô¡ôJYAÙDÙWyšr¡r¹òQåkʽ* *¦*þ*,•ù**'T:UúUéªvªQª¹ªËU÷©^V}®FR3U T㨫íT;¯ÖEÇèFt:›¾˜¾‹~Þ­NT7SUÏR/S? ÞªÞ§¡¦á¨‘ 1K£B㔆„1L¡ŒÆJÆÆ-Ƨ1ºc|ÇpÇ,spLǘ÷šc5}4¹š¥š‡4oj~Òbjjek­ÖªÓz k[jOÒž©]©}A»w¬úX±ì±¥cŒ½«ƒêXêÄèÌÑÙ©Ó¢Ó¯«§¬+Ðݤ{^·W¡ç£—¥·Nï´^>]ßKŸ§¿NÿŒþ ¦Ó—™ÃÜÈlbö脈 v´ šÆ2|`D1r5J7ZgÔhÔg¬oa<×¸Æø®‰‚‰«I¦É“f“÷¦f¦‰¦KLëLŸ›iš…ššÕ˜Ý7§™{›ç™W™ß° Z¸Zd[lµh³D-,3-+,¯Y¡VÎV<«­VíããÜÆñÇUë´¦ZûZX×X?²aØ„ÛÙÔÙ¼o<>eüêñÍã¿Ú:ÙæØî²½g§f7ѮȮÁî½¥=Û¾Âþ†Í!ÈaC½ÃkG+G®c¥ãm'ºS„Ó§F§/Î.ÎBçƒÎ=.Æ.©.[\:]Õ]£]—»^r#¸ù¹-p;éöÑÝÙ=ßýˆû_ÖÙû<žO0›À°kB—§¡'Ës‡§Ä‹é•êµÝKâmàÍò®ò~ìcäÃñÙíóÌ×Â7Ëw¿ï+?[?¡ßq¿÷þîþóüÏ`Á¥­jñ›eÕõ;Ï >B YҪʭí›è2qÞĦ0jXlØæ°Çá–áÂð†4bbÄÚˆû‘&‘üȺ(µ6êA´Yt^ôo“ˆ“¢'ULzc37¦9–;=v_ì@œ_Üʸ{ñæñâøÆå„) Õ ï×$J’Æ'ÍKºš¬ÌK®O!¥$¤ìNéŸ8yýäî)NSJ¦Üšj6uÖÔËÓ´§åL;5]y:kúÑTBjbê¾ÔϬ(V«?-4mKZÛŸ½ý’ãÃYÇéázr×pŸ¥{¦¯Ižá™±6£'Ó;³<³—çÏÛÌ{’µ-ë}vTöžì¡œÄœC¹äÜÔÜ|5~6¿i†ÞŒY3ÚV‚$Ï=o}^Ÿ0L¸[„ˆ¦ŠêóÕáQ§El.þIü¨À« ¢àÃÌ„™Gg©ÎâÏj™m9{Ùìg…A…¿ÌÁç°ç4Î5˜»hî£y¾óvÌGæ§Ío\`´ xA÷Âà…{Qe/ú½È¶hMѻʼn‹Šu‹wýüSM‰R‰°¤s‰Ç’mKñ¥¼¥­Ë–mZöµ”Sz¥Ì¶¬¼ìóröò+?Ûý¼ñç¡é+ZW:¯¬\E\Å_ukµ÷ê½kT×®éZ±¶vs]éºw맯¿\îX¾meƒxƒdcøÆúMÆ›Vmú¼9sóÍ ¿ŠC[t¶,Ûò~+gkG¥OåÁmºÛʶ}ÚÎÛ~{GðŽÚ*ÓªòÄ;ŸîJØÕü‹ë/Õ»µw—íþ²‡¿G²7foSµKuõ>}+kÐqMÏþ)ûÛ¨?h}pÇ!Æ¡²Ãà°øð‹_S½u$ìHãQ×£™Ûrœ~¼´©]ÛW—Y'©O®o?1ñDcƒGÃñßl~ÛsÒàdÅ)S+OSNŸ:Sx¦ÿ¬àl﹌s]ÓïO:£iRSë…° —.]<ßìÛ|æ’祓—Ý/Ÿ¸âz¥îªóÕÚ§–ã¿;ý~¼Õ¹µöšËµú6·¶†ö í§;¼;Î]¸~ñFè«7#o¶ßŠ¿u»sJ§ä6çöó;9w^ß-¸;xoá}ÂýÒ*Êê<¬úÃâCgÉ©GZÇ>¾×ÅîzùDôäswñSÚÓògúϪŸÛ??ÙÔÓöbò‹î—‚—ƒ½%ªþ¹å•ù«cùüÕÒ—Ô×ýZøzèÍò·Zo÷¼s|רÝÿp w`ð}é­{?º~lþ”øéÙàÌϤÏ¿X|iøöõþPîЀ%dÉŽlhz:oö@K†gx£(Éï_2AäwFÿ Ëïh2'—=>Ä/ žQ*a3˜ ŸÒãwœ@FÛ°ˆÒì屨ðCø04ôVR_„CCƒ[‡†¾ì‚dïp6O~ï“ žñ·kJQK§ øQþ±lCô²’… pHYs%%IR$ðŸiTXtXML:com.adobe.xmp 1026 1118 G+EiDOT/(//ÔmWKDÖ@IDATxìw EòǼ‡$ArPA `FÅìéaÀœÏœÓϜΜã™Å¬gÎzf½SŒè)Ì EEIJPD$=ƒŸWµýt‡Ð©fæË[Ó©ªûSõv›šÞÙ& ~ÿW#ðßæ›oN³AîjV]î´ë^$WYeÕdDqȤçÜ\JrñÅ7¢W)ÙbSæýâ+C¨*m\*}Jþ0n,]rÀ>$_xåuÕ”Jù¿úò ¤çª+¯ 9èÅÿ¦Ò6èö¯¢¦W^e.?ñtX×Tõ§sûuæ\’·Ýu_*=aƒv°5­²ÖF$/¹ìò°®UëƒÜUç¾Ë÷¢ËÃ;…äÑG­š´äü†ß¹Ãb$ïû×#$·Ýv[-½jðÈo¿¦ËõÖ^“äžå÷Ÿ 6`^ªŸÆ_Êüò:©Ü‘ÈkÄi®KjÀj.Küpp÷ë"ð÷Ã?oÜ‘¨GH0Ÿ°¸G" rü P™‹ªE"@‘(—H”ó{ß)ï…’iR¹#`ÚÓ9Ñ'5`“âÝ·íiÈÆ[ïLòàƒNª¢jÿ៣ö«®¸Œä÷ý«jÿ¨Æ ÷AO=JCžyfÉ[ gø¯¿âBÒ;úÇŸH^uí $M½œpø¾¤ªcåIž}ö9¦T“žm7á;q;ìy •?üp-ýAþ«.¿4é»üš›Hn³Í6ZúÕàÓ§Óeïez’|~ð«$W[ï0ª~iåÃøŽëf›nL*Þûˆã´gO¶—V¯÷Ì“ÓåýÉqãùr«V­T—D2Èý‚3N ñ¯ç;¯ÓfððDJ«tÞyëM¨õí÷™Ó„Ÿ§T鼩O/¾ÃÚ¶m[üÁ°¯’+©2¢U‹E¨uë“|bÐKUzG7)þ>ðu^¶W’‡Âw¯½ñæh%1z¼ñÚ+ÔkŸ]ù}ù¨“Ï¥òé§Ÿctt—»n¹ž:]vÁ™$ϼôF’x IÝ—S;”T<ý8Çÿµw=Få­¶Ú*•jÅ}ðàÁ4þo[óɈO>þˆÊO¾ðÉÕW_=•þà ¾}øïÂ$>©òé—#©K÷î݃]S•›7«£qsæ5œ?>IÝcÇŒ&=ë­±Éy jINüå7’i_ÿSO:žTœw ^ͨmGåOGŒJ«ºlÜÍ×^AåçîüÉ9x/y·¬_Ú‰GHC'¼Ëwº›-¿ •ï}艴*ËÆm»ÉzTîúÛ$;oʼ.¿’O8”uŽQPÜUÜ/ß‹ãoƒN¿Ðè¾ûð~ê„øs †ÊŠ],X@õµ¥“X{®Ù†ÊÛŸt+ɽöګ⸸•ß~=‚ºn½ñÚ${,ÆqyÎ?Ÿ¤ò&›ðçL\}®úù»²[t;R¹#PôÈ Y¿Ô€ ™nh5¡h¨‰€r>Á¸G" œ*! HT–HTæ‚D@9—àû å|T ‰E¢²D" 2$*s ¾ïTî…ZÓ¤rG"À´§s¢OjÀÆÅ»ËÖS×™£Þ#¹Ý1W’4õ³/‡Nú¶Ý˜3åí;w£ò‡_|K2í‹â~Ô¡‘ŠgA²]¯¾$Ÿ}ùÍ´ªËÆ]ù³©ü߇®!¹øš|‡îÎûùNWYç…ÃöÛ…Fýü1ŸdXq‡©|ñ%üÔ*ˆô_gU*wªgÞz•=öز~I ŠÿðOÞ§¡ýºó­ýϹ“Ê»í¶[R•eý§ýÆw°–èÞ™êW_²É‹ïxšäFmTÖ?iáãyÞ‡ì¶ ^Ïwæžò!•{÷îTeYÿG¼‡ÊO\{Éç‡óɆ&ðÆ6mÚP}ÒŽÿº«ÑÐéïÜAò†7g’œQ?'©ÊŠýÜ}{ª_eÆ+$oþtQ’#ÇMªØ?iå:«2ßÿ[ú;úÀ„•I¾þÞ°¤ª*öïЖãåêMù„Äs ¶¤~þç…ŠýãVn\úŽþŸ¼GCÎÙ žäÈe#yÝM|-®¾`¿¡o ¡ªSá“Yý»M¥r›­/"yÆg‡$*ßsßùrÏy4®IÃl’Á'œ:ˆßO)ýSçÓç“FíGòûãÑM¨õØ+"¹õÖ[ÿ©wüK÷íšóßémߦÁ—¾ÝœäíOü—d¿~ýâ+­Ðsµå—¢Úû7GrëGZ|ÿ³oHê># eóf¤gÊ)óH¶¾”ùÌËå´ÏÆP_XwõIïÇÏ ¹òíüw;iÊ4*§}Y³ß4´ýœ1$¯ù+ß‘Þçæ5LóDÀ­×$½?v É]–žBòÊQ|ù¥×ùï*S¼œtÇõãž Ñë˜ÇàEøï쾇ùÎt Õ4dûÒ3ïΟ_Nä÷áŸVý;µ_qï’êWq?näpúÔ¶ãIÞþ ÇÑ;_JåO<1©ê²þ*îÎå“ûâϧmO¼…úí½÷Þeýã¾û–ÿn6ßÿ.GÁŸƒ›=Ê'Iκ‘ý±é¦›ÆUé´Ÿâ¯Nd85^`cR¹#Pà ¬¶t©[mÎnC"àÏ4¾F"`a&ÿ«QqD@e>HTæ¢j‘P$Ê%åªqõÕøÎ¯¦?P×ÃWæ;7Œß€ÊϽòV”ŠªíW]|.µÿ/ßA[¹ ß¡x£ÍîT×ýüêJª4¾ß®ÔºæL¾C9y*ßÁ™¶Ö©TŸö)ÃÊä&ë­F—ç­Tº“0‚¿“gÊ¿-š/Bú¿=z.É“†´%¹Ëi·“Ü}wæD…/ê™];w QÓOcýýæ;ÿ¸í?TŸöéæÃ>ùˆÆï·ßøô@¾ãºüm|ä™×> ö>}úŒû¢¾ãûÄÃ÷ÓÇ®æ;4nÇq¹Ø•ÌkìøŸ¨]}'>®~ut³÷²KÓ=–ãyŸ½Î¯Tî8ïÍÔ<pð^;’¾ø$ÀÆ‹s\nöxgªÿNóDÀúk¬@z®Y›O¨4”žR}Ú§|"àÍ>§ö´/ÛñÐ/ãyÍšš¹9]<þÌK©Tÿ2y2ëÖµ É9góûå ¥•ßô:”ê¯ÿçm©ô¿;”߇?`ÿÎ>ü~sÖ«M©Üró HžvÚieúU\DÉïáy½qß…4þ¾­Xÿ!Ï·¢r¿ýù}ß}÷¥²Ò§Œ©rPªö‹Ï9™.;~ÏwøÎZ—ï¸nû¿/ìuÚMÔ>`À’Jú»QzT}P®µ¿Ÿ]¿9ŸðØs>ÉÐïþ»=ÿúHÅÊ+sEéSú§—žA²ÿîÌý_[N ¡«uaÿ.~}K*?ðø ’;ó߯d˜½I“&QÓÎ;lGòç“ùÎ+þs­©ûGªó­¡$Õ3”Þ ¤N¿¿¨úφ}JUçŸyÉ Çó •ŸgrÏ>·ðüŸ|ú9ªPã”ä^è úã…AOS—»îàg_L9…Od|Î˪Ùéæqý­÷TÔfGÕÿëÞ;h\Ë^#yÏÖÓI¾ü‰šÓ?Z–.N?ÿ2’j\˜äQ¬çæk/§ªmÚ`=ë1Ÿ†qÏ;Æ÷£‹ƒŽ<Žä‚ù|G|A KÅ£Q.à¸Píÿ¼òwÑÚ|§~‡ÞìßìΚç÷§ömwÚ‰õ—¾‹¯ô)=J6Ö—žqÁ™çÒ¸OcîËwäyð¿/|Ùžß×ÖÛh=ê7¿çWÃaU³ ¤§‘Wi]ª|çÕ×иñÇóßSÓҸݞä±4ÿ½®¸*¿o«qóKç[Z—jŸ1ß?ô8éV:¡B…ß_þr®²íT5ð’$Óž”£Á^²º¿·€Â©J©Ü‘pÙ1&5`£"PÕù PÎGmˆ(ç,!$Âe$˜ƒúDP"ÀÿTÑ£ø À\ $J‰ õu$TˆÄ’YÝßÇZœàNR¹# 8h|NMjÀ†19`7¾3±Y“ÿR—ýWâ;,'¼ÌàæòÌýöÛÚÃ>`U}P¾û6§Â¯¼àTÿíœþ„o´ÔìýÒâTߣ|gWýJ顯ß_T9(Ÿzìaêr÷í|‡BÝayá[yÑW|Gèâ«nRªH*=ÊžjTõJª§iwœø*u¹a3¾CqÏ'<âÑéÑű'ARãÖðy«~*Á°G7¾CqÔ|‡â2¾!Xó~›IÕÞû–óWã£ì\Xº3tC¾e³ÙR|‡âØëhè¯ËíIr‹-¶ ©2ûJoðŽ‚ºc«ìŸw:ÇDz­™ËñÈ¿=Ù‚.Ú­³É5ú­Nr~à‹Ò£ü î„Ì™3‡ú_w1ß±œøw¾CA•¿¿¬/ë_i˽©ª×Ò½HªñJŸ’Á;"?Mä;ñ?÷ {w?ŽK*üþ²ô|‡bÓ=ö¥ªöÚ“lÔØ@)nj=ß|Éþì2žyï6üw¥ô·¹œOdìz0ëoVú®p#ŸÒF­tC¦FÙUò‹?&U¿~ûÉoŽá ^=»·¦íeeú•>¥GIU¯þ&ÿŠªú´á¿×ÁüçYsã{ÜóÒÏ:ÐEÇÒ¯ (=Š“ò‡Ò«êÕÏ'.7†š¾9‚ÿT¿³ùmºæ¶Q©ªsNܤ¥$Õd÷MJsJ'Dùaûìÿø„ +©©Ùï?|gñÕYݨªÃ¼5¥Oõ/…*ÖÌšÆqÞv;òÃÊõo|?ÇýèvKÒ˜¶ù¾Ò[ —UVËR噿²þŸ>þŽÆÿzjã*¯x ëŸ×»•[µoERÅe©Ð¨_éUõ³~á[ç=&Œ¦ªWönPM$;]Å|ºlÔ›ÊÍJ·òŸ Æ¿«ÒßóÜ_ø}råÉãhüã;—믽ͭ¼ëJ|ÁæJU¿W5)_7wþ}•?óÉ‹5§üHU÷nÇï “[MÏëYa¯]xþj\£,éÿ#>Ù΂ÜÐâÖÿóP~_ûwnÿ‚ßNkú?ÜŒTuÚ®'«,Q\”^Å«‘OéNuëÉÌgóéü¾pÅÆÌç•ïYÝ>¯ðr›­xß ÞÇš¨[×¢ š¨ùóø6?²þçL¥Š 7d>~Æí'}Æ'&ZmÒ‘+ys±‘¿ZP zÑo~£šýš±jƒ¢$%>¥Ïy$T¼ðFÅ ÌCý‡kô–‚Dÿ õ>D@ùû&¥GàÿÑ¥ÚßÜ òH4’ñr‘µý½HŒJåŽD€gçA¥Ô€ ²=tß]¨jÝY/ü¿U9¬úýýE¾zt:ßêÜ›3Áj£¯> T†\mtÔ–º³ÙtüdRtPÎ4ÿ}mþÔ§Yÿ€GùB÷|gNéû}çÄJ꿪}~é÷–[Žç;3¿þ™ú?Š{¾8’‡ø*ß9îØ¿U¨;J÷úýU}—äü¹|'¢õ(Ö{rOÎðï¹"Ïÿ^¾áXsÆœo·AwÖ8r§8).Ê~éÿI5­¾b.ç-ËwZvêÃó¿ü-žÙÀIœÙo¿vå;sê?\ÊN£JÀšÀúo(4Ø´7ó/ô¡¦¬¿m ïp¹4‚*uh2˜Ùiß¹|÷ÿxÞ;<ÎÞ]‚ï¬,Ú‡ïÌ)ÜëO¯Ku¥Ž3ý*^Ú™ïH¯Ê7BkÖº‡ï LX‡+Zö`?7Þ ý“jºTú•,µO¼u ] ;˜ýºTéFJÏYíßøÎÓ"9N•Ú&Üü{1 PKrÜÕ£hÈÈ£X×Ö¬¡õåÜa‰ãzQEmKV¨†s¯ß_UE\©þ«ó¾¥®ÓÎàu¥y-Z:Ðçüe¹¡4>¨†m´SêÎÓ­ùâ¬o¨¢á\®Ã7ÒjV»‡ï¼ö8«¤Ÿ›_ÿ¸C×XÅÊNÇáˆ3Yÿì3¹üßðªÙée¾ó×õÄeÊÆ©áZUEpasxߟó5uz2ëÿ÷W<ò˜/9;Õ«QÕÿ.”º?.JÍ \ž?“õy2Ÿü˜}ëÿçûÜ~éÌvtÑe¿%¸¢4~¡ø èåÎ55 “ùïé—+Ø¿£`{ç¼Ê=îêÔ….ºïÀR‹+çŽá[ÄóîEC¾8ˆßïöÄôz_~?ëÔ?pç2¦9#øÎk³GÆÒˆ÷cý›>Âq3v+>°Øê¥1õªn_Ë\úµšKU¯ïÁúWº“õ/8¤Õ·^šïðªqqå¬w§P×%ßà;ß/îÂú;_Ç|ºŸÛ›ÚéPþ¾WÿÌ!ü¹¸â§“hÈÛ³þº‹XÃj·­LMjC$ÂÐŒ—~¢käϯëú³þ¥÷µÿY:q¡'¬ùËSùïjŸ>¬÷ï}YöŠy,uéòaCcÕO{‚ïo?ý°MŽÿýÞev?£òûN,å¿wúía>1±{¿¡­Ô†çú]Ž\*®ªŠý¦ÞÃqhkþ\¯›Ëó¿¦ vÝ‹ÿ¾*®RùÍ•£¨µS[Ž‹ºò‰§ïâ÷ŸG—ìJí]·Vûµ*ʪ4M¾ñ{j=¯ï Ÿý–í}°vÜ€ßߪ¨¨ÚôÓUßQûÕ«ðûÐÕoóßíù·=Gõj]U‰‡F5/<,Ð-|©Ü‘p™±&5`ƒ‘Qû­’D" Ä'À¥ñ¿J¥z$ Ê¼ù;C"€ÁÂGÑB"@‘¨,‘¨ÌEÕ" HT–HTæ¢j‘P$ÊeVö÷å³Î~I*w$²[VV 5`ÕbÏ?÷lº¼ãŸ×‘l^Ç-¥}yMCé;Ü3fͦ†öÛq¸ýÖm¹cÊ×_ïC#lËwŠ6_’3äžá;=/Ö»ƒ0üø/IÿÕ›pf|™EYÿÁñ„n§êÝA˜|gÈ/êÃò†Ùl笉̥ëá=S’áa? ä ù5}9Cþí$Öý"|¡Ûîéî ¨IM¸ˆï Ý³!ûõéÜòT/>ñÑuK¶£ú'•Ÿ1œ†¼¶/Ïûò÷ø8Ã6à;¢Ö+ÝjOª¸ÔÌ<áÁ;ñÀC_ä;SwcîmVlR3y"Ǻs¹ÉC|ç¯Íß9nZ,Þ\Kÿˆc™Ïׇq\öþ'óé=pÒ[ۚדԈºCTÿ ßú±ôÝnW±þÕîä;‹Iõ6ögwÖ|tðçTõí±ÜÒ¯ô]ïå®Y±±kš‹³™Ç°£™ÿ[²Á^fÞKžÏw^Óèþߘ†ßæÑБ¥øy`{Öô—/]OX:­j÷õ%üwÛ|R=•/ü ¯ç’Ò‰€®,©¥Î¬wêulçÀÒ‰¤;:t!½Ýwd™ÖÈì‘3ièÜ»G“\·ó² ¿/tÚ˜O"¥Õ_?œïˆ6{ŒzthÁúGoуT¶[#݉÷=ð‰…v/ðÞ)¼œšùõ"ý­—Iw"€ÿþ2ë=~(F÷!|‡zØ<ÿnçp\O ©qqåÌ7øDÛòM¤!ƒ†ñé¾·òßm“:þ;Ž«/ØoÆË?QÕÊÃùdÀs_ñüWÒ< ø/¾2ó]å^Ç«ãù}³×ezŸçjÓŸdá“CgòI¡îg.§ºhÉipܬ8–ýüQ+~_èrÔRZzÕà©÷rÜ/?O|ÚƒãµëÞ¼¯RýâJŽ÷)½hȯwð¾j©Iüw6bõ®Tßm½j>¿Ü4Š.»Læ?¬‰›•NüEïD€ÒÿÓ™ü¾Ö¥9þ]|ËãÔ¤žY¤úI‘Ò÷÷R8™ž‡TîH˜ötNôI X…‰E"™D" :/$ªóA" 2$*sQµH(åRý‡‰€r.ÁA"åe$ÊyKH”‘¾¿/Ÿm~JR¹#Ÿ3º©«9kßq7Ž3Õµµœ‰ ʺº:rÝ×’|aÚ ’µ+éÝ¡PßÛ®3ØŽdû=/Ñ»ƒ 6†ãùmS3æûÔþîx·Ó–¥²îËäë¿'[Öq†ü¹ÚÒw 5O¨y©ïÎõ¯e?½ÚïÈuÝSïD€Ò?á>°ö"s¨êƒUºìº•ÞÅ¿õ ÖÛg¾;fS¾ƒÐa=3wÆœÉ'º×ñ×ú½zÒüuO(>ßÄw¦[7å;g‹Àq£{"@éÿú8Ö?¿ôÑåJ'ê4O¨;DŸþ™š7ç¿ú«(ÓFä'‡|NzZ·á¿ÛÞ×êhœÔ\žïÇ¥ùwîÁwþ–¼ Oc‹†i|§õ«“¿"5WàgtÓ< â~éCøäË·g}MúÛ¯Ë'`º¨w"@­Y%F_2’ªÝœŸÑ}'þûUýÒÊ9ßóûÙ׎bý;ñ‰€Î›èPó©ÿŠO¬L(=“£]éÙ íú¥;i¦¸«¸¯ÿä725înþ\ë~ÜÒTn½¬Þ‰5ÿYïóã±ðê^ç-GMiŸ ô*9óM¾£>æ>°ü5|RH÷D€Ò?ýE>ðÓklgiÍïðùÿú8s™õ=nu?eeÚˆœ\º³^Sz_ëxH#z•’I¥¸lÞßwÛ‘ã_µëÊ ¥¿«Vks¼·ýKº¿« w5¯¯â}I›møýÀÔç¡ÒÿÃÕ¬¿ý®¼iÕ“÷Uª=©œû:¿ß_°óE4ôž›o&yÍ·\ziþûMª×véû{Ûë÷¥_*w$|E„p»RVaC"@‘H'‘¨ÌMmP¨ÌGÕ" H$ åE$Êy¨÷$ʹ„•#ÃõHTçƒD󑾿¯îÅì¶JåŽD@vcÊêÌ¥¬î¢Ï»ü\RñŸŸŸ$Y·ŠÞÉ€ŸoMzêâï|/yßaI;ÏàÆpB)ƒ]Û‚¿³ØÙÐwþÔüÆ]ÌwÖ[÷æï¶×ü¿Ò«äèó¾¡ËÅúóƒv›ê}‡_éUòû³Kw.ÿÆw>ÒÞ™Sú‚üG•æßy¾SÚzY¾«úëÊQ2ÿn‡ñ¡Ýšëª,?êb¾óºä±KQ}]Ûº²vÝÂè+ùKãYÓE8N“ê rW?£=öFþûêQšR½aýç—žÆ?龨M=?l@Âú†i|’dêþNp‡íøÎwB5¡ÝçLä+³Gñð6ëêT òŸ=¶žm—ºÒ¼—™;ÒjA³¾åy7ëÊñ^W:™¡ÚuåÌ‘|G·EÖŸ6.Ãæ¡ô·\šï(†þºD˜‚R}»ê>sÏ¿•aîúG—ô/eÖ¯úÇpüèÞqUú‚rÖ³©ªåzï—aüë'°~ÓïÇjs&ó~A÷Ù J_PÎ+2ýw¥ìÌ/%<›6K· ã®ôK—õ_óûïM¶¡©^}Ñ5Ò§\6¿¼îïË)° •;ƒE”¤¬.$Ê "PÎ#¸AA" œO°„D@—‘¨ÌEÕ"À$‚ï7ŠŠDe‰D@e.ª‰EÂŽD"À×¼k•úÿ*$òy)×'5`S.g¡a_Íßézlì#ÔV·úB]¨bAéŽØ”øiÅí¶àï 3á³JwÐÔïÀWÖ]¶1œ]ºؼ+÷/ZS²sKO%oføŽ±š…î¥Ç¶ ãoÛnÑõƒ{ºXPúu”´w¤•ÕPþüØÆ_ÛTý!ÍånF=´Dÿ@–š¥ro¨/=³§tâD ™÷#Ÿpi(ÀêXÇÏ0øì>g “5µyßß[§©X*w$4›×áRÖo$ÊI"À<¤nPʽ•¿¸§ó)é¸I…¸÷ë ð÷Ã_*w$üÄCQ¬JýE‰À„ë”° —ÙýН >}s?ÉÚ~åC¾+={ÖôjXù–•Ë;.Iý€4¼L±êÀßkÀÝweü ·ÜÝòZÿ 7e©Ü??r8X®3?û`¥|$jõŽ|R c鑽ÇÏd;‘Ÿ㆚9+EÙß›#fF“TîH˜ñoî´H XÓ ‘0M4Ûú¤nP²M5zöàÍÈfð·I7\7¸‡³qÑþ.(/lC*w$öjÌúÿ*$Ìù8Wš¤¬-È×ÜÂO}½ï‹»Èĸ'øwÞmÇO÷Ýø~ÎãD€-ÈÐ+uƒ"ƒŽ½Y€»=¶q4ƒJæû€»y¦I4‚ZæúJå>søtZä×W"ùÊþ¼æþ=Yª×—ÔÒåÔi3H6o®÷ëJ¯+Y´ý½+®Qv¤rG" Êsm—°¶ÜD€-²ÙÒ+uƒ’-ŠÉg îÉ™™þ&iÆ×îñYÙè þ6¨Fë”ʉ€hß¡GzRÿ_…D@zŸæz¤Ô€µ ½wOþU€‡·™L¦V(ýì}‡|"`ÕÛðŒÛ>ð©_êÅ'¶ÁÝåpàÎÆf ¸Û¤­ü£Ùè!»úµ¨/ü†–¿ÿRüŒ€Ë7™GåÕîYŒäýO¿N²oß¾$³òRÔý½oÿHåŽD€ïÈj_jÀÚÆ…D€m²õKߠȦ—~vàžž‰‘ào‚bràžœ™Éào’f|]Ò¹#ߗ蟀ÔÿW!߇…ê)5`m9a½Õ–'Õ×­;’事ó¯Ôs¸¦í|" ïí8`ËôJß H`dcànƒj|àŸ•Éžàn’fr]àŸœ™‰Ò¹«Ÿe{ïûvÛxZöóÜF²{kÞîqÆTÞ}÷ÝM`q¦£hû{g`# IåŽD@„ãŠÚ,5`mù‰[d³¥Wú%[4ãÏÜã³²ÑümPÖ îÑŒlö›tÃuKçŽD@¸ïÐ’ž€ÔÿW!Þ§¹)5`MC_¹w/R¹Ú¢ãIvkÍp&¸~7ìÁÏ8¼ÂÍ+qK¯Ò? --[ŒZð÷ã p÷Ã]YE­w·¼ƒÖÀ?HÄMY:÷yO3‡{Ï{€.Vë»É·‡¾E²ÿþ$¯ºúj’Ç{ɬ¼e/ÍR¹# -R„ÌGjÀšÆƒD€i¢ÙÖ'}ƒ’mºá³÷p6.ZÀßå…m€ûÂL\Ö€¿KÚØ’Ή€?|…+s¤þ¿ ‰s>Ε&©kòc=F*GM²¶–6(§ÎœJíx„dÓø¤ ¾Hÿ€4¸T‘ªÀß[ÀÝweü ·ÜÝòZÿ 7e©ÜgÀ…:¢ï1âèC® ¤¾¾žÚ[´hQµŸ´Æ¢ìïÁ=$âq*\¯¢¼Q P¸Ð®º`©”ª“ÎA#¸ûu"øûáî~¸+«à¯H¸•R¹#à6ŠfMêÿ«(Z$Æ\¯Ô€9}kÝšO\üä?ÈFí& ŒÚ’úit‘‚•¿瀻îÊ*ø+n%¸»å´þA"nÊÒ¸Ïþq-|Åoû’|ôNÞ繡áÞ ö÷î™ÿÏ¢TîHø‰ñV¥¬opHøö€]ûÒ6(vW+G;¸ûõøûáî~¸+«à¯H¸•Ò¸#àÖÿEµ&õÿUH5"#Ö-5`#¦í¬ù?Ïÿ‡l]ðð¹$›njæ™Ò> büý8ÜýpWVÁ_‘p+ÁÝ-ï 5ðqS–ƽþNÞ¿}8ø#мys7 ƒóË{üýxÜýpWVÁ_‘p+ÁÝ-ï 5ðqSöÍ}îTþu€o4¥ßrâí$7X7<[ÁþÞ¤rG"ÀO<ˆ·*5`¥C"@šGôæã{ƒ¢7ûìŽw¿¾?üÁÝweü ·Ò7w$6'‡<Ø­ã nMêÿ«(x`†-_jÀ†Í×wý+C^¡)œrë‰$›nÉ'>:ès*Ÿüžá¿ºw¥‹nÛvæŠÀ«ïÈÀt W?.w?Ü•UðW$ÜJpwË;h üƒDÜ”msŸðäDZHÓ‰³IΙPOrêĹ$›5!Q³æ«ÐÅ«o ㊂¼bïÇÑR¹#à'Ä[•°RÁ! Õ3Éæe{ƒ’l6Åé î~} þ~øƒ»îÊ*ø+n¥mîHT÷'ö÷ÕùØj•ʉ[ϸ^©+ëCß )nºÑ_IN?“g|áë,ïéÌ'ºoLDÖ«í Š¬ÕÊ™ ¸ûõøûáî~¸+«à¯H¸•¶¹?j8-耕ùM‡¬Î²OG^çT>(Pó—‡:PŘñ“Ýðl û{?ʉ?ñ ÞªÔ€•‰éª>?Û”êÖ‹Û î~}þ~øƒ»îÊ*ø+n¥mîHT÷'ö÷ÕùØj•ʉ[ϸ^©+kÛÖ-hŠ?Ï)ç6‹ðŒÏ{åºÐE÷Yrí¯¶? ÿ°„«JÀ¿ûuànŸq5 à_޽6p·Ç6ŽfðCÉ|WÜþçhšüº 3I>²]CÙbZ]ZGåÉ¿þF²eË–eíy-`ïdzR¹#à'Ä[•°ÒÁ! ÝCÕççjƒR}Åkw¿>?üÁÝweü ·Òw$*ûûûÊ\l×JåŽD€mÏgT¿Ô€•†sæLÎ4wïÂ_>{x'~:mëf<Óyüã5÷~Êå—{•NìŒÒ|ù¿ù¸Ú H\»Ï9»Oúˆ{_ô÷¾È³]ð÷Ãß5÷_ïàgÔŸB ~mÞ§íöÌbT¾û©×H®¾úê$óþ‚ý½KåŽD€ŸxoUjÀJ‡D€4èÍÇõEo¶ù î~} þ~øƒ»îÊ*ø+n¥kîH”ûûûr®JR¹#à*2fGjÀJÃx×·Ñ”n¹á*’Íêø;gu9½tr`Fé @‹½¹_p=®? ƒö‹^?î~¸+«à¯H¸•àî–wÐø‰¸)»â^ÿåZÐv­v&yäG’°Ñº$Û×N'yÒew’Üc=Hæýû{?–ʉ?ñ ÞªÔ€•‰iÑ›« ŠÞ,ó7Üýúüýðw?Ü•UðW$ÜJWÜ‘¨ìWìï+s±]+•;¶=ŸQýR6£8§=â›t½Ç‰»‘¬Û•ßVupõ©ìA–ÿr®JàîŠte;à_™‹íZp·M¸º~ð¯ÎÇV«mîó¦ó¯´y¾-áAoV\Ê߶ߊêO=ë|’ë­·^Å~y«ÄþÞG¥rG"ÀO<ˆ·*5`Ń‹˜ €<7ÛÞ x^žXóàî×5àï‡?¸ûᮬ‚¿"áVÚæŽD@ub_­V©Ü‘°åñŒë•°ÇÚ8ý‘ߤë]ýÉÚÝùçl@6N €E,Ö+ÁÝ:âªÀ¿*kàn m,Åà “ñN¶¹Ï{´ Íù™[ž%Ù£GãkȲBìïýxO*w$üăx«RV<¸˜D" &(ÇÝloP/'3æÀݯ«Àßp÷Ã]YE­´Í‰€êþÄþ¾:[­R¹#`Ëã×+5`3Žu¡é;†ê¶ÿ¿mIŽúaÉÞ§ô"©^æMàß½u÷_îÒ>ª Ò ÛƒSÍ•*p÷ëNð÷ÃÜýpWVÁ_‘p+mqŸûŸ¬úˆFöë×/¥ Ó!þ:ô’=g6 úöP’­û´$9¿ž3ÜóÆÎ¢òì¹üçÚf¥E©Œ³fŽbέz1³Ú¡-Œ¸‡‘qSþn8­€{ˆÛ2ø»å­¬™æÞ0“÷Iíçó¯¬Ð{e ²ìï+@qP%•;œŸER6‹,ã̉€8”ì÷1½A±?ã|Xw¿~?üÁÝweü ·Ò4w$’ùûûd¼Lõ–Ê_ 0åáœé‘z„%g˜ZÎÆoLu“æŒ'9õ›oIŽ;š3ÞµR±¦ßÝ«ð^°udÑè$s¨ Üý:üýðw?Ü•UðW$ÜʤÜfñþgö>9Y_’³Gó³“:üÒ‘ðÙ»_¹]HF­aïÇqR¹#à'Ä[•°âÁiN‰M€šÃ“nP4Íax‰¸û ð÷ÃÜýpWVÁ_‘p+“rG"À¬°¿7Ë3®6©Ü‘ˆëÁ‚õ“°ywÃFmHKóÕ'$G=£lÉMÕ‰€»J'øçrËú ž@Ò JzKùgàþgî¯Áß=óÿYw?Ü•UðW$ÜʸÜ?;b8M¬¶†Ÿ´T§¦T^±#—Û5ᓟÏç_QzïÓn’QkØßûqœTî¥ Mÿ@IDATHø‰ñV¥¬xpšD"@ æð¸M3 î Ž‹àïxɸûᮬ‚¿"áVÆåŽD€¿`o‡k”V©Ü‘ˆò\AÛ¥l^Ý1qÂZZÏKœ}gºƒë­ý׬~ûÊtѤG‚ŒtÊq7(:60vaà¾0—5àï’ö¶Àý>®Àßõø'a~¾wMpñqÓHÝ»¡lÂã§sqÍ{£‹úµ¬…ʰ¿¯ÌÅv­TîHØö|FõK ،⌜6‘ˆœtÀÆÐ æ…Œ€ûBHœV€¿SÜÆÀ½…— ð÷‚=öWb°ãìïípÒ*•;Qž+h»Ô€Í›;fÍâß­_g þÎÿ×ߦ%.Öj’ óù»póø„@ë| û•ËQ;N˜l ÍòŒ« Üã’²ÓüípÒ îQ„춃¿]¾aÚ“rŸþŸøæÞ½²?kÞx)–m¯äýÒ~¦Š6mÚ„™Fýï°¿÷R¹#à'Ä[•°âÁ%œ  Yîžtƒby:…Qî~] þ~øƒ»îÊ*ø+neRîH˜õö÷fyÆÕ&•;q=X°~R6¯nøå—_hi;ï¼3ÉÇœdmmm™lÑ¢•×ܤÉæ‡ð &u,©/© $Ý ¤6„eÀ½ ‡óø;GNÁÝweü ·2-÷™·Î£‰viàµýŽÊÏä}Ò­½Bå5×\Óí‚2f û{?“ʉ?ñ ÞªÔ€.å‘H Îð°´ÃÓ(œ:p÷ërð÷ÃÜýpWVÁ_‘p+ÓrG"ÀŒŸ°¿7Ã1©©Ü‘HêÉ‚ô—°yÇŸ”ûêýW#$M÷áLyÓæü;»yçdk}i7(¶æS½àî×Óàï‡?¸ûᮬ‚¿"áV&å>ï9>ñxÇ©wÑD×Zs-’{:É›n¼äU7ÞNrï½÷&‰—Ê’î3+kAmRR¹#Ô“é/5`óŽ?)w$ÌFDÒ ŠYëÅÕî~}þ~øƒ»îÊ*ø+neRîH˜õOÒ}¦YëÅÕ&•;Åɪ+—°U'ƒÆ´Ü×ÚŒ¿×°+ÿ Am+þÎ\ÉܧRÕ´zþ5‚ë· v)t9é¥Ð° .Ü ÂL¡ üS@30Ü @ÔPþð4†Æå^ÿñ\²rpïCIžxôI­¾=t(Õ¯¹ŸXd~†@ÅΨįxŠ´û{ÛÓE"À6áŒê—°Å{Úi¹#qÕŽq7(U• 11pOŒÌèð7Š3¶2pÊJGð·‚5Ri\îHD¢LÕ!í>3•1 j$ •;.ÂÅŸ H Ø?Ï1׺Ü×ßj=ÂR¿ý4’µ‹ò3fBåyÿù‘äŒ :“ì¾c’xaq7(àe–¸›å™Tø'%f¦?¸›á˜V ø§%§7.ŠûìIsÈÀ²Ã–'ùïûŸÖ3ˆÑet÷™eÊPˆM@*w$b»°X¥lÞ½ Ë‰½‰Ú èiÇè0àFÆM=ø»á´îA"nËàï–·²Å‰EÊŽÔÝgÚ™UþµJåŽD@þc/Õ ¥lªÅdh)îÝ~#Zõ¤Îß“ìñþ’uj yëb| ûÎ8@@J/Q”?÷ŵ9ànŽeMàŸ†šþp×g¨£üuè¥Å}ö=ü £¡O¿MFÚ´i“ÞF.DÀÔ>s!Ũ¨J@*w$ªº­¸R6ï1ʼn€t‘µAI§£¢€{!»íào—o˜vp#ã¦üÝpZ‰âŽD@˜Ù²©}¦ÙYå_›TîHä?öR­PjÀ¦ZL†™â>èßÓªž´É×ö›Gòâ7ÆÍ­ùÝvéÊx%Q`²CÜíp«üã’2ÛÜÍòLª ü“3Ó?ŒûÜÁ|àêC®#C›m²™ƒÐRFÀÔ>³L) ‘¤rG" ÒuÅì 5`óî SÜ‘H)a”tÚ0*.pKÊN?ð·Ã5J+¸G²Ûþvù†iãŽD@1³õ¦ö™fg•mR¹#ÿØKµB©›j1¤Ë}ð ƒhµWžrÉ—vù¥lõ—½ÉÅ¢‹n»u+k/z!lƒRt.¶×î¶ W×þÕùØjw[dãéÿxœÒöZ0—ïðOÆ¿b4{ÂlRõóàÉ$Ûw¨%9åþ•€íwØŠÊ>úI¼Ø! »Ï´3«ük•ʉ€üÇ^ªJ ØT‹ÉÐ ]îHè9C=~iGƒ{ZrfÆ¿ŽIµ€{Rbfûƒ¿YžAmH‰È(ëî3e¬"{³Ê‰€ìÅ’“K X'‹÷h$-÷çž}†f}ôÁ{“Üb™ù$XÔ4,hBåÏÆÏ"9i•Ž$»ì‰gˆÒ 6†¦áîÜݱ®d ü+Q±_îöW³þÕèè·ÍŸÉ¿Rôå‰_‘²ƒWã¯}ǺoßžådÞ–Ô\õÝjTñÚ;Ÿp^­H»Ï´2™)•ʉ€a’¥J Ø$kÈbß´Ü‘0ãml ÍpLªÜ“3ÛüÍòŒ« Üã’²ÓüípUZ‘P$dÉ´ûLY«ÈÞl¤rG" {±ädÆRÖÉâ=IË}Ê”)4ë‡~˜dm-÷.L>1˜U`ÔJßPÿºîÜßãÒE˜ÆÆÐÀÝweü ·ÜÝòZÿ ;åúqül€1WŒ$=[ðQÅÏd{¦³\ãž¶t1þç©\W+Òî3­L¦@J¥rG" @A˜d©R6ɲØ7-w$ÌxC3“j÷¤ÄÌö³<ãj÷¸¤ìô;\ƒZ‘ñ[N»Ïô;ëì[—ʉ€ìÇ–•H X+‹¤Ô5÷=ÝV?béÏIÖ-Qì“Øúùcw?Ü•UðW$ÜJpwË;h üƒDÜ”¿8êK2´ëŠÍIÞ¿ÝL’íryô©¼Øb‹‘Ä‹Y®÷™fgŸ]mR¹#ݘ²:s©kuÑ”»æŽD@¹Ó±1,çáªî®HW¶þ•¹Ø®wÛ„«ëÿê|lµ"`‹l<½®÷™ñf•ÿ^R¹#ÿØKµB©›j1ä‹û>Gò¯ |¾øÇD«YϺªÔÌ.ýA3þ5‚&MYV”Fl ý8 ÜýpWVÁ_‘p+ÁÝ-ï 5ð±[®ÿšŸ0í!–çŸq<ïÌ“IvhÕ”äm½LruÖ!‰³|í3Í®"{Ú¤rG" {±ädÆRÖÉâ=ñʼnv:6†~‚ÜýpWVÁ_‘p+ÁÝ-ï 5ð±[F"À.߸Ú}í3ãÎ/¯ý¤rG" ¯§¹.©«¹,ñÃ}s?ð؈ÑÇÞ'Ù¬Wù3¦=1žê¿4™äw¬L²I-N¼¤"€ y*lÆ¿1”‰{"\Æ;ƒ¿q¤6Ôó ÂEžhMímðwÿLå±cÇ’Üô¯ë“¼û~þõ£ 7ÜÊx1KÀ÷>Óìj²£M*w$²CNg*5`Bð`Ì7w$F‘×{ŸÒ˃÷‹kr¿¾?üÁÝweü »‰»|“j÷½ÏL:ß¼ô—ʉ€¼D˜áuH XÃ˧N ÷ÃN:”ؼÛú-’³?ÿ‰ä–¿L!yó[œá_åæ•¨Ü´ô¬*døC?Îw?Ü•UðW$ÜJpwË;h üƒDì”ç>ÎzŸ¼ößtqÄGT'ìX…Ö0Rö™aóËk½TîHä5â4×%5`5—%~¸îHô+yš 6ä~½ þ~øƒ»îÊ*ø+v%vù&Õ.eŸ™tÞYï/•;Y,Kó—°––+F­4î›n²&±YaÎ'$ÿ¹9Ÿhq)?`¥V¤ú¦Íùi¿b@¦œ6†)ÁiwM€šÃÁ_`Êáàžœ¡aàodˆš9o7PËÉýO'¹ÿ^û“”¶Ï ™~n«Áßk¥rG"ÀO<ˆ·*5`ŃӜ 4îHh:ÃcÀ†<&kÀßÚªŠÁ½*ëào1vù¦Õ.mŸ™vY'•;Y‹$Gó•°Ž–ïÍŒî×\v1ûâµ$¯îÿk“V—ó‰€å¯áµ-q"   ‰`Cž—ñÎàoi,…à “µNàoí¬Qõ¤x½É‘¼óú»Ê IÙç”Mª@ð÷ãl©Ü‘ðâ­J Xñà4'(…;½4=‰áI`Cž„–ù¾àožià‡’½>ào‡-v¸šÒ*eŸij=YÑ#•;Y‰ Çó”°Ž187ç›ûÙ§ž@köü$è;dÃFÑÀ¨Ùû)u"`j¨m]Ë2þŠ¡‚»îÊ*ø+n%¸»å´þA"ÉÊóçð†`öÄ94°þÇÙ$[~Ò†äçC¿¨¨Ð÷>§â¤ T þ~œ-•;~âA¼U©+œæ}sG"`y°÷)½4=‰áI`Cž„–ù¾àožià‡’½>à¯Ç‰=~¾FûÞgúZ·o»R¹#à;2„Ú—°Bq›–/î'N¤5\}Éy$?ý”% ¶®ŽÊµµ|Ç¿¶)Ë™ üÀ «N¥öf}ñŒ—T°!O…ÍØ ð7†2‘"pO„Ëxgð‡tÎx¾Ó?á¶14`ίóHΚÎ'zvâ‚mšðÑÁ•6ÜÚxäß øÚçTœL+ÁßÓ¥rG"ÀO<ˆ·*5`ŃӜ /îH°ã°1Ô à”ÃÁ=%8CÃÀßÈ„jÀ=!0ÃÝÁ?P$âqÊJ/_û̬ð±5O©Ü‘°åñŒë•°Ç9ý¬q¿p ÿºÀ“㣵Õõå;‘ ÚC?Žw?Ü•UðW$ÜJpwË;h üƒD*—ç×óÿïÏùš:²"—nÂRzk,_öéÊtñ柫¦2™µ}NÙäsP?N”ʉ?ñ ÞªÔ€Ns‚YãŽD€¦Ã1œ`Cî7Àßp÷Ã]YE¢ºD" :Ÿ¬µfmŸ™5¾aó•ʉ€0¼^jÀæÝ-Yå~éµ—kýÉÚÕ³é)l ýø ÜýpWVÁ_‘p+ÁÝ-ï 5ð‰WžòðÔ±ë7¿’º/Ÿ øy&_ñöEéâ§)Ó¸"ðšÕ}N`™-‚¿×IåŽD€ŸxoUjÀЧ9Á¬rG"@ÓñŽ ¹ß?üÁÝweü‰d‰€d¼¤õÎê>SǤó‘ʉ€¤ž,H©›wüYç>ð¦ä¢GÜK²vÍÊûå†ï©aN÷–$»íÚ­rGǵØ:^2î~¸+«à¯H¸•àî–wÐø‰$+O¹ê70ú ~8ÀËûóø]ŸhN#¾G²cÇŽÜPzÍú>§l1,€¿§IåŽD€ŸxoUjÀЧ9Á¬sG"@3 :r¿Ž?üÁÝweü‰t‰€tÜ|Êú>Ó7¿´ö¥rG" ­Gs>NjÀæ{M^¸_ûõ䪻‡ÝA²v-þ}au`ݹüeÂ7ï@í]÷ì.µØúq¸ûᮬ‚¿"áV‚»[ÞAkà$¯<ïEîwãÑ7ÓÅúë­OrÀ_øàèïGRù§¸ãlÀJ¯yÙç”-*Cð÷ã,©Ü‘ðâ­J Xñà4'˜îHhBÁ†cCî×áàï‡?¸ûᮬ‚¿"‘L"Œ—´ÞyÙgJã5©Ü‘ˆò\AÛ¥lÞÝ‘7î7ßýOrÙ—FòœUgœ:O\½ t"`ïÅE¸C?nw?Ü•UðW$ÜJpwË;h üƒDª—ë‡Í¡{/Á8óij*¸è‚ó¨þ°#&Ù¥K—²~yÛç”-.ð÷ã$©Ü‘ðâ­J Xñà4'˜7îHhDA†cCî×Ñàï‡?¸ûᮬ‚¿"O"“ô^yÛgJç­æ'•;ÊCe¤lÙ$sXÈ÷ƒ÷Ú‘¼´~ý $]ï(\ÿ.;ïÊy¥ûâD@Ã9ö’°!ÊJGð·‚5R)¸G"²Úüãá3y.u\âÝ^$Ÿ„?Ïã^¸WÞö9 ¯Pv øûñTîHø‰ñV¥¬xpšÌw$4¢ ñ!÷ëhð÷ÃÜýpWVÁ_‘¨.‘¨Î'k­yÛgf…¿TîHd%‚ÏSjÀ:ÆàÜ\^¸¾ÿnÄnÍÏ“<¬ôlôÆ÷øêŠÙíé¢ËþK¨&¯C?øÁÝweü ·ÜÝòZÿ ‘Êå9÷ó3}^}duèØ±cåŽ1kó²Ï‰¹\qÝÀßK¤rG"ÀO<ˆ·*5`ŃӜ`^¸# Ž ¹_‡ƒ¿þà² þŠDu‰D@u>YkÍË>ÜÍ@"À ÇÜiÁ…—fûí·ßFàŽ;†Ÿ¼`ßI˜×0Ÿêæs¹iÓ&T^®?Ÿhs@;?ÀV±1 qTwG CÌ€ËÕànp„zð¯hÞ«üy}ñž—SÇm·Ú¶ú€˜­YßçÄ\¦ØnàïÇ5R¹#à'Ä[•°âÁiN0ëܑР€‚džܯãÁßp÷Ã]YE¢²D" 2—¬×f}Ÿ™UþR¹#Õˆ²3«Þ“ʉ€¬F”åyK XËËö®¾¨Ü½8ˆØŸûÀY$›ðs2 hCï_š¸ûõøûáî~¸+«Eã?ã«é´ô1×&¹ÎRMIöíÀŸ·+wàg|ÿ+ßcº¸ç_s…¡×¢îs áÓVþÚS)ʉ€TîÌÿ ©›wòEåŽD@Þ#»úúж!¯NÃ}+ø»gþ?‹à²Z4þH(Ï[uŸéÛëR¹#à;2„Ú—°Bq›Vѹ¿øÊ‹Äòô»N%Y»Eõ“îGý:íÑd]k~&R¼mc˜‘•!ànkl¥à•ÑŽàngbeEåÿÛ‹?«y¯²|g_þœíÒš¾Í«5'}´"U ýhxb¶Õ}ŸS‹6ðwAyaR¹#°°¯Pó;©›wç;yðÊë+ꆼ2 ÷µàïžùÿ,‚»îÊjQù# " ˜²èûL_^—ʉ_!ܮԀŽM{zàÎ_{ã5º8á¦ãIÖn]~2`ôé#¨~ú~úñ ×ò‹Ú–üGjLñRÔa TF‡€»Qœ‰•bdF€»Œ©•ý8þ•€Q—|G oÙº Ém–m Ùû–V$'OAÒÔ ö9¦H¦Óþé¸éŽ’Ê‰]Ïæt¼Ô€Í)îÆe;£@" 1$ qQô ¹o'ƒ¿€»îÊjÑù# "¡XûL?þ–ʉ?ñ ÞªÔ€Ns‚à^ð­wÞ¢Šc®>ŠäC¿$ùÂösInt/ßÁè=p*×âÄ!k/Eßûöøûñ¸ûᮬýw³ Å_gnFrêHþ5†Rùé/¸ýË‘c©Ü©S'’º/ØçèÔþzüÒŽ–ʉ€´Íù8©›sìx6CÀÁH€ä´Xô ¹o·‚¿€»îÊjÑù# "¡Xû{?þ–ʉ?ñ ÞªÔ€Ns‚à^`ß>=¨áöùqÆë.ÎýÚäË\Æ'êÚàW*”][ô ¹o€»îÊjQùÏŸ»€,x Žäǯ}¢¼ë¶›IžîÙ$Ÿ~á’«¯¾:IÝìst ê=~iGKåŽD@Zæ|œÔ€Í9vœq0!`rR]Ô ¹÷¿O€»îÊjQù# " ˜û{?~—ʉ?ñ ÞªÔ€Ns‚à^pÃ5W¢ŠËû}Cò/Kð¯¨^í¯æ_ èyQªj¶ßáPíIeQ7†I9™î&ÓþÉx™ê î¦H¦ÓSTþsÿͼºäºXiEþœ Rœ8q"UuíÚ5ؤUÆ>G Ÿö`ð×F˜JTîH¤rgþI ؼ“÷r#PÎ#¯¥¢nÈ¥øüýxÜýpWV‹Ê‰Å”Øgúñ»TîHø‰ñV¥¬xpšw¸ÁÚü]ÄEgðï·kÉÏh˜ÏísæñŇ?ðï w¹p9j¨kƒš!èexQ7ä^`W0 þ 8¨w«˜(ÿ9ï5cÖú;ÉÃ:¬ {MØçØcG3øÇ¡d¾TîH˜÷u.4J Ø\À­²pg8HT ’6mC.Í…àïÇ#à²Z4þH(Ï[bŸéÇÿR¹#à'Ä[•°âÁiNÜà{ï½Gß}Ç'jkù×’u\öÍgRÿºÝøiÈiÝP´aZN¦Ç»i¢Éô2^¦zƒ»)’éô…ÿìqsPß1k’|ðÖ¥fhö9†@¦Tþ)Ái“ʉMÇæu¸Ô€Í+oµ.pgH¨ˆ(†,ʆ\ª7ÁßgÀÝweµ(ü‘P‡üì3ýÄTîHø‰ñV¥¬xpš÷t¿õ= Üù¨IÖí‘îd@Q6†é(ÛîöØÆÑ þq(™ïîæ™&јWþ æóçßì‰|`Á3üìœÏÞøœð4mÊ¿¶“„•ɾØç˜¤™\ø'gfb„TîH˜ðnuH Ø¢.[¸—áˆ]@" 6*‘óº! »Â¤À¿UàîryåD@§£ '<Å€Ôý=žBºY©+›îüÀ]à¸Æ‘‚mÞ†d³½«Ÿ X0›}`Þoó¨ÿ¨{~$Ùû”^$ñâ†@^7änèé[}†i4€{jæÆd•ÿŒQ³Âô·¦\0ž=gæ>0õþ<ë¼(ßù?úäs©ß9çœgž†&ìs4à þ ¦P!•;)œY„!R6ïìÁ]ÏÃHèñó5:«r_¼LÛÓDãé÷xœlõÊ*$lED1ôbŸéÇÏR¹#à'Ä[•°âÁiNÜ5–†Oœ4‘®6ß{ÉEö«¬÷Ãù;“=6iO¦NšK'*ó²U›Õ ¹-®õ‚¿kâlÜýpWV³ÊÎX>0âBþUøäÛ6½yeËòÇY̓Ÿqùù¦;ÐÅýG-Ý«Ä>Ç+~|5À~©qD€§€nVjÀJç¦;?p×%Èã‘0ÃÑ•–¬nÈ]ñ±müm®¬Ü+sqU›UþH¸Š|ÚÁ>Ó_¥rG"ÀO<ˆ·*5`ŃӜ ¸k Ÿ2…¿Cù׿mD-ÍlBò“Cø$Àõ[ñ€Ë¦·£‹©?ów+q"€¹¸zÍê†ÜÛvÀß6áÊúÁ½2WµYçß0³P¿l$É#ûðç×yág߼ϼ©9ú>*ðÞ°¯]¡­jûœªx¬7‚¿uÄ HåŽD@Ew¡RjÀæÝ3ànÖÃH˜åiK[Ö7䶸¸Ò þ®H—Û÷r®KYçD€ëˆÉ‡=ì3ýøQ*w$üăx«RV<8Í ‚»&ÀáÓ¦M£–N#ùË©üʇJß¡¼ðW®Ÿú ßaÁ‰€–ª³¾!·„Å™Zðw†ºÌ¸—áp^ÈÿŸ/ø.ׂO<¹ãT*÷¸¡É©ÓùÙÎA bŸâ¸þŽ—ÌIåŽD€ŸxoUjÀЧ9Ap×2‰€0Bªó¶!‚5ö4À?6*£ÁÝ(ÎÄÊòƉ€Ä!PÈØgúq»TîHø‰ñV¥¬xpšwM€!Ã;,ÖšZF9“d{¾ARsÏ'<àÜŸK'~ʼn€„V«ó¶!· Ë‚rð·5†JpÉb—¼ðŸû2CºúàkébÁ\~VÀæ[òCp:¶å¼ÏG|Oíݺu³H5Z5ö9ÑŒlö›tÃuKåŽD@¸Ï Ý"5`óîp·ãa$ìp5¥5/rS<\ë×ÄÙ¸ûᮬæ…?Ê£q`Ÿ‡’ù>R¹#`Þ×¹Ð(5`s·Ê"À½ œMsæÌ¡Þ];ò¯ Ü„¿¹hsVÒÀ_¡¬2šËÏ6mCÓfò³ðŒæâê5/rW¼LÛÓDãé÷xœlõÊ:ÿÙ_Ì%4;·ßä…g\XÕ.;nKõ7ÞrÉîÝ»WìçªûW¤+ÛÿÊ\l×JåŽD€mÏgT¿Ô€Í(ÎØÓ÷بªvD" *qYß‹špBàŸ˜¡îàndJ5YçD@JÇ|ö™~@*w$üăx«RV<8Í ‚»&ÀÒð÷ß{®.9ÿ ’uuu$kkkK’Ë5MšPùã7s<É>§-M/nd}C=+àom5Íà^Žý¶¬òŸ;•ŸÐñ¿ü]ÿÿþûUû° ZÀ>Ç ÌªÀ?4C¤rG"À€só¨BjÀæ‘õŸ×þ‰€ôì|ŒÌê†Ü+6ÁßÕhàÍÈf¬òG"ÀfTä_7ö™~|,•{“ð—býp µúÑGQ[¿~ýBû Áð·Ç¶šfp¯FÇ~Û«CøÎJ«åø)ËMšò‰û–‹maæ(~†C«^-‹ ÂÓêÁßxp÷Ã]YÍ*ÿùxýVæýñ"‹,¢–” ‰}Ž_7¿þR¹#à'Ä[•°âÁiNÜ5jG"@`ÊáYݧ\®¸aàïÇ%à²šUþH(B¦!€}fjúc¤rÇWô}›K R°äöŸî‚ááRñŸZó+YŸ»ó ’µ­ùÙ¦T“Y=¢›瀿O‚»îÊjÖøÏÂ?wsþÎÿ %ümû¿©¥dJªÏÙÁƒgjÞy™,øûñ¤TîHø‰ñV¥¬xpšwM€šÃ$4A&žµ yÂå‰ïþ~\î~¸+«YãD€ò¤µÏA"F‡bò±R¹#Ü—…!5`óÜýz8Èÿ/Ûl@š¹5Ÿ¨m[~2`ÞÄÙÔ>òÒïH.{q’u8A@â¾dmCw]Yéþ~<î~¸+«Þù«'t•E3çç94µú ,gçÏ—¹ßò3TvÞp/j¿ià?Õ2)ƒŸ³™\D†' þ~œ'•;~âA¼U©+œæÁ] æð $4Æî}Csžyíþ~< î~¸+«Þù# \é@pŸãÐt¡MIåŽD@¡Ã2|ñR6|Æùhw¿~ ã߇¿ÒÄ~0™dà ¾cóëµ|`&߸©YâüÞÔÞ¬}3¿ ɘuïòŒñ2=]ð7M4ž>pÇÉV/ßü§¼ö -mÔ}?’ì¼XS’Ëvâ¯Ú3?Na¹ö>çSÃ9çžÇ2úö9›ÑådnÚàïÇeR¹#à'Ä[•°âÁiNÜ5jãD€&؈á¾7äÓË}3øûq1¸ûᮬúæD¨bÑ¥ Û縜CmIåŽD@£1Æš¥lŒ©gº ¸ûu_ÿ¶ZŸ&øíûï‘,?ŹËu|'§Û9|"`‘Ž8Ä“¾7äIæšÇ¾àïÇ«à²ê›ÿüÙüùñÓM£iJ›·¬'y×V jŠ$ÿõŸm²=]<øøÓeíY+D}Îfm=Y›/øûñ˜TîHø‰ñV¥¬xpšwM€šÃ£ø#  8d¸ï yÈ´ S þ~\ î~¸+«¾ù#€*]ʨ}ŽË¹É–TîH) ¬UjÀ&XB&»‚»_·…ñ7v Mlý~+‘{ôŒ²‰v¿‘Ot:}9ªoÞy‘²vªð½!¯>»ü·‚¿ƒ»îʪ4þ¿ þ™¦VÿÂ$’oÀ'&Lç>”?_>øìµ„LʰÏÙL.&ƒ“?N“ʉ?ñ ÞªÔ€Ns‚à® Psx$4ÁF —¶!˜nîšÁßKÁÝweU$”g mÛçØ´ Ý55R¹#€è¬H@jÀVœlŽ*Áݯ3ƒü'MœHZuù¥IŽ=–Ϲâ\ÓÀ7ljúÜÊ':žV:Ð'’xRÚ†<ÉÜóÐüýxÜýpWV¥ñŸ5ŠŸ°ÒȾ4Å·_ø/És7àh'¾Ô„ÊÓÕÏÔ¨…dL?g36ýÌOüý¸P*w$üăx«RV<8Í ‚»&@ÍáAþHh9\Ú†<æ´sÓ üý¸ÜýpWV¥ñG"@yÒ&à>Ǧ-èþƒ€TîHüá#\ý‰€Ô€ýÓsy î~ݪø4ˆ&2 ÿ$ßþà’µMøŽLm-ŸP²S»æÔÞúî$[,‹_ 1_¤mÈcN;7ÝÀß+ÁÝweU ÿÒ ³úÛøˆÙçC¿PS$yàž;‘üϳ/‘üì˯I.¹ä’$³ö¢>gÆÃ}øü}PÇWSG &FftøÅ[¸ÇFe¥£âD€¼¡JÅlÈCg˜ïð÷ã_p÷Ã]YÉåHÔ>‰°ÿdB*wœø““pù©ûÇ óyî~ýªË¯Ãö¤ ï9Œd³µ~”ëb6äáezšàošh<}à“­^RøÏÄ'Íî>ë^ZꫯQqÉC† ¡úþýûWlÏJ¥îçlVÖ)užàïÇ3R¹#à'Ä[•°âÁiNÜ5j×åD@:HÙ§›}öG¿‚»îʪþH(@º  »Ïq1Ç<Úʉ€ó#•§.Õ†d—C{,Ê‹¯ yQøF­ü£Ùiw;\ãjõÅ¿þ®ù4Å^üd‹-âN9ýl}ÎæŽƒE€¿ÈLHåŽD@g¡ '|Å€Ô7 _<\۵ʼn€êžôµ!¯>«â´‚¿_ƒ»îʪ/þHàD€ŠAÒÖ>ÇÇZ²dS*w$²Eç*5`"ðb ܽ`o4j›ÿqgK¶^üö)’‹>äÁ+4㉟þCéG.¥¹’l 7µ!ÏÖªåÌüýøÜýpWVMñŸöÆ/¤rÚ“|Â넵øÎÿòÙRŸ’|ø‹&\±ÑY$Ï¿ð\.Ø«íÏÙ‚áL¼\ðOŒÌȩܑ0âÞü)‘°ù#]¾"p/çáºd›?•=jjC^Y;j£€!;íàn‡k\­¦ø#—8÷³ý9›l6Åë þ~|.•;~âA¼U©+œæÁ] æp[ü_{å%šÙÇìIòÕ=¦”Íô‘/¸xòh>Ðõhœ(„‚U¦þCdu’9Tî~jšÿ´÷§Ò‚ÆÝ5Žäëû- ¹fw^çß³üÏümèâ¡'ŸåŠ‚½Úúœ-ÆÔËÿÔè´JåŽD€–[ó;XjÀæ—8¯ ÜýzØ$ªûÕô†¼º5´ €ˆ›2¸»áfÅ4$ÂH—×Ûúœ-·‚Rð#c·^*w$ìú=³Ú¥lfÆœ8¸Çe©›iþ~ðÍtçm6#Ù·G´a’¼ñSfÒÅôî­Hv<ò’uýJ¿?miݾÕÚÚû^WV샿O»îʪiþõ#øÿ¶‹ìH&.?ÿ eŠäË/½HòÄ¿Còõ¡ï“l׮ɢ¼Hùœ- ïà:Á?HÄMY*w$Üø?sV¤læ@&œ0¸'f¸»þHv,ÔU%`ú?DU¡±‘¸7¢ðraš?ñÜ(ås6Þló× üýøT*w$üăx«RV<8Í ‚»&@ÍáÒø_sË5´¢û†ßM²vMþîiØ2ëÇðS©ëÚ7£.umêÂºŠª7½!µ¸ Lüý8 ÜýpWVMñŸ7ƒ%`ÑgÛ“ê7Ÿ}K™€¬@@Úçl…)æº üý¸W*w$üăx«RV<8Í ‚»&@ÍáÒø# éP EÀÔˆbC§FàÞˆÂË…)þH$sŸ´ÏÙd³Ï~oð÷ãC©Ü‘ðâ­J Xñà4'îš5‡KåÓ7ÒÊîøèV’µë”/tÚ“ã©bÜà_H.sao’Í;/RÞQhÉÔ†\èòÄO üý¸ÜýpWVMñŸû(k|æægé¢gÏžÊdR?g+L5—UàïÇ­R¹#à'Ä[•°âÁiNÜ5j—ʉMÇbxU¦þCTÕ"î !qZaŠ?ÉÜ&õs6Ù*²ÛüýøN*w$üăx«RV<8Í ‚»&@ÍáÒùßz/Ÿ¸õ›h¥3'òI€-™Bå'¾àg´?e9*7!Qˆá¦þCTX îa¦P¥ËΛül€3·<—¬ï¹ëž)fQ¼!Ò?góîð÷ãa©Ü‘ðâ­J Xñà4'îš5‡KçD€¦ƒ1¼"ÝÿUTŠÊHà‰Èj]þH¤sôÏÙt«ÊÎ(ð÷ã+©Ü‘ðâ­J Xñà4'îš5‡g…ÿþ{ïD+mùÝ3$oÝj>Éž77%Ùö„eI¶èÞœ¤ôÝ ¹ôõIŸøûñ¸ûᮬÆå?÷×y4¤~ül’³¾g¹Mí¨|Ë@>©¥ôBV'•ÏÙê«Èn+øûñTîHø‰ñV¥¬xpšwM€šÃ³Â‰MGcx¸ÿ!*„‚6p×F¨¥ .$´0/48+Ÿ³ M<'àïÇ‘R¹#à'Ä[•°âÁiNÜ5j—Îÿ†—Ð ¿4äõó³Ô²—¾…O´:ŽO´\'ÈpqÿC®-i€{jæÆùÿúÂO¤ü·7ù}uꤹT^´E’Ëvb9k&?‹å¬k¤ú=÷ijDÌ音1—‘ÙnàïÇuR¹#à'Ä[•°âÁiNÜ5j—ΉMcxEÁÿUì„JãÀÝ8ÒD ƒü‘H„/ug音©–‘àïÇQR¹#à'Ä[•°âÁiNÜ5j—ÊÿìÓN¤•½õÔm$÷Z~ɾ1UÓÀ¨¹x(Ÿèpò2ÔÞ²G ’Ò_‚réóÍÛüÀßGÁÝwe5È¿~t=5}}ÑH’÷ñ£Xjö\©ôF[xñ›¥“ëœF5]ri©"©Ÿ³q枇>àïÇ‹R¹#à'Ä[•°âÁiNÜ5j—ʉMÇbxUÁÿUíŒFcÀÝÊTŠ‚ü‘H…1ñ ©Ÿ³‰’ÑàïÇqR¹#à'Ä[•°âÁiNÜ5j—Æúôé´¢'åþÚkT®­«+—µ\žß”¼=ýjoºi騕ä¾7ärgšÏ™¿¿‚»îÊjÿIWO]7o>‹äÛðûéãÃYÃ#õ[ÐÅcO¿ÈxE@Úçl¬Iç¨øûq¦TîHø‰ñV¥¬xpšwM€šÃ¥ñG"@Ó¡‹@Ôˆb)A§ÄÀ=12£¢ø#`w£2iŸ³+Èøûq´TîHø‰ñV¥¬xpšwM€šÃóÂÿù—Ÿ#gÝ{ɦdŸ ˆÚkºÃ#€ KÍàn lLµQügÿ0‡4µ}¾É)£¾#y㦿‘üû;K‘6bI¼Ä#—ÏÙx«•× üýøD*w$üăx«RV<8Í ‚»&@ÍáyáD€f lxÔˆ †ÃÙrÁÝꊆ¢ø#P›ve^>gµAxRþ~ÀKåŽD€ŸxoUjÀЧ9Apר9çÜó(¶mÛ¶à:J dõÏÙÒw«ï,üeöD«; 2ù ~V­ «޹@¸3™Ý³êB312޽ܢŒß¶øíÁ]v Êù£î¾dõÏÙtÕÜw–IFÒêŽB@’]ÌQ[­ ›õ-€»ìgÝÿÅ—^$à3®:b«¯šO,¾áC:>¸v9ÅVu¢¸ÑY)¦ýPîÈÓžãøËdÜeÜ£Y‹ýë_3¿0vð8jòý3ÍßôGíÝdýÏY7Jéÿôl+¬Õ…€J»–ãkZ6ë[wÙκ? ²ù¥uöâ7DZ×™µuÁ]vG‹ýQð³YÿsÖ¢ý,ð··ãôÔêŽBgW3ÜWkÂf˜œn î²;œÿW¦¼BÐG>‚âøí—QìÓÎüªÀwßmùDÀ÷yÙâÿ!÷2)&Y+ÿµ^ŸÀÝ+÷z“EþýOèK×½¾ÅþøÀzmqÂ@^þœu'æv$ø»õŒ;šVwâî`ÎÚiMجoÜew8/þ(Èæ™¶Ù£7DCÆÔ¶´L¯î²Ûù£àwòòç¬_Õø³Á?¾•Ë–ZÝQp¹ËKkÂfˆ¸ä­À½$‹·“yñ?ù˜o‘é°åS pÂ6+è¸Ù|5@ͤÆÿ‚÷:Ò“ÇofN¤üý9Þˆ¦ ]fxø—Iù4ÜÓnZÚD7|ÒH±~nŦ¹õfÂÙæP Þ6ñŽ?ÝMç¿õ óI)Ói dýÏÙ´Ü\ W’ÉÆÑêŽB@²}ÌMk­ ›õ €»ìgÝ…ÙüÒ:;ÞÊì ÜÓqG! WW£fýÏYWNiÿ´d+«Õ…€Êû–Û«Z6ëwÙΪÿ3Ï;ÞÊìÜÓqG! WW£fõÏYW>iÿ´…K¯Õ…€Òû•û³Z6ëwÙ†¿ñÿèãèÉ×N>„b›£Òݼ!J×·Úèð¯&”Îu¸§ãºhâ,z:xÁRŠf>ñ]r½yvø¸ñôäç—]]BLQΦˆchøÇ@J¡‰VwRØì, ©5a³`[éà^I'ýkð7Æ(¤ŸkšfÀR™Ý€{ºî(¤ëk;:þœµ•sÓþn“Ž¢Õ…€¤;™“öZ6ëüp—ÝaøúÏ™;‡NŒ:þ ŠmŽ.¼îêoˆ\IÚ;7n/¸sãõ_öŠù®€o6Ÿxúø5Ôñ;˜þƒwIOî}hR¼ÑŠ%€?gY|ìÎðgZ  Õ…«íÌ~'­ ›uy¸Ëî0ü ýQ(ôÈêÞÊì,Üý¸£àÇ9î,øs6®T:íàŸŽkµQµº£Pmçrz]kÂf};à.»Ãð/í¿àÓtaÄûSl[å˵ç\o¾c ç·úPûö}Û•¸å,ÞUäIý"üS'.9ÜK²8?ÙøŒùµ€ ]@c_{ñEçÏ|Ÿbç^})þgúLŠxHWΦë[mtøWJçºVwÒÙïàGÕš°ÁÃV¹¸WJù2üK£PÚ%+gñ†Tf'áîÇ…?ÎqgÁŸ³q¥Òiÿt\«ªÕ…€j;—ÓëZ6ëÛwÙ†eÿÏ>ûŒ ?t/ŠíÆšßáŽzÍü¿wéiÛUæÛ¹»žµwØ´}Ô¤dÄ¢’,ÞNÂßuÁDp/àp~P?}9¢Ù|Çɵ?¿®`ŽAúÓqëZózõÞ‡³ ®ã ü9›ŽkÜQáWÊm;­î(¸ÝçÌŒ¦5a3\æFà^ÆÓiøW†F! ²O¨Wñ†Tfçàž®; éúÚŽŽ?gmåÜôƒ¿Ǥ£huG! éN椽քÍ:?Üewþñü—/_N w=xŠ gN§ø·)÷VëNH±ã€Ë=à Q9?çáïǹx¸‹¸9^]o¾ õ=iÀ—&½\ràèõþÆo¤ë›o¾yÉv8éV rŸ4 ¿ÒàV6Þhðç井Vw\ïtFÆÓš°á-{p/Kãåüã1£Ï)”VxC*³SpOÇ…€t\]Š?g]IÚ;7n/­î(pw6£ýµ&lF¹×ÞÜ×Rˆ<2ö½†mM.ÙáŠûô7¿Ï½õ­ut¼æ¤; Â'BéÞÊl ÜÓqo¼Ï|wɽWßG <¸äDx½/É’úI¸§N\qøWäIí¢VwRÛò°Öš°a«V_=Ü«¥ÙþÉtQH極5ÞÊì ÜÓqG! WW£âÏYW’vãÀßÎÛK«; ÜÍh­ ›Qîµ·÷µ"Oà}äž;RÃó‡¼IqÄÀ¦‚ŽÛÞn>Ð|ü:ßisóou ­s€7Dë`<…¿ú§„»[÷†Í·ÿŸ7| |üÑ'Tœ¯÷yR»÷Ôhc ÿXLÎiuG!ÀùVgc@­ › Ýòw÷ò6>®À?ž2 ñœBi…7¤2;w·î(¸õLk4ü9›–l¼qáÏÉu+­î(¸Þ錌§5a3Â[ö6à^–ÆËøWfþÚ¨¨Áœw^¢Ø±ùu€æfóÝ-¡fîgæW:e>€_ ¨ì*}oHevî<÷ÆÏÌ'‘–¿·’Ú»Õ~o»îöXãõ>“óFpwNšh@ø'ârÖX«; ζ8[iMØl)¯7p_ßÄçøWÖF! ²O¨Wñ†TfçàÎsG!€ç'ÕÎJÉ›yá/ã¯Õ…™|P?«Ö„UÇ\ Ü™€Ìîð¯ øÑGQƒ3fPlݺ5ź:óQìÑ£sÚQ›7cW×Á´£“ë<à Ñ:Oá/€þß)á^Ù}áäEÔ yÚ2Šs(~6oÅmͯtmc⃓_£óÛm·Åjx½¯&”Îu¸§ãwTøÇ•rÛN«; n÷93£iMØÌ—¹¸—ñtþ•¡Q¨ìêU¼!•Ù9¸WvG! ²O¨Wñç¬ìÎÁ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ,Ó}÷ƒw£+õ£—R¬ël¾[ jŽ7D‘„L„?Üe*ϺüñÔ`ù#&Þ1z5ï°‘é×µ‰'ü½=Ùçô_S;v¬¹På¯÷U€Rº ÷”`c ÿ˜PŽ›iuG!ÀñFge8­ ›ßr÷÷r2~ÎÃ?gÒqu5* ®$“÷Ê^(Tö õ*þœ•Ý9øËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€Uº?d/j±ô@óo[w3ßPü†hõ2ó{à+¦™_è¼c×*#ã2G ØŸ3úÆ€{<«ÓWPÃé—@ñîÃ̯”:Ôô¿üyé\zrÙ•W›Uñz_(¥ËpO 6æ°ð 帙VwotV†Óš°Yñ-wã‘FÊ@IDATp/'ãç<üÓuF! ]_ÛÑñ†ÔVŽ×îñüPˆçJ+ü9+»Sð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3cvßïÐ}©åâý>¡øÁogR2~ ÅWOø7Å~;t¢ØçœAñŽÞ¦ãZmT¸W*¼ÞÐòkõ7˜Oêo~=`ÿ¾K¨áï>ßâ_~²°c™#¼Þ—Iù4ÜS®2<ü«¥tY«; )mxèÃjMØÐ]«­îÕ„Ò½ÿt}£ÑQˆ$tD¼!•Ù¸'sG! ™—ÖÖøsVvgà/ã¯Õ…™|P?«Ö„UÇ\ Ü™€Ìîðg&ì~àáPN}‘âÊæßßÓòo€ÏøwG:ßç¼ÍŽŒæIð†4‰–»¶pOfÙp›ùÕ€—y…:ÞrãõyÙO)¶éÔâ;3fS¬ö€×ûjBé\‡{:®qG…\)·í´º£àvŸ33šÖ„Í p™{O§áï ºeüz—› oHËɤ{îÉ|QH極5þœ•ÝøËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€–ÝëêZQÏÅÌ·¿8Ë tÒkæ÷ÁûŒßÜrdt‹#€7¤q”Ü·{<Ó¦IµÔðºS~Eqïá{t|ë?ÿ¡ãË.¹ˆâïï¼»àz¹¼Þ—“I÷<ÜÓõ­6:ü« ¥s]«; éìwð£jMØàa«ÜÜ«¥|þ)—…€20žNã ©'è¢ià^Ræ…€20žÆŸ³²­î(ÈäƒúYµ&¬z8æáÎdv‡?0a÷ {t¡[u[FñéÌÏ0ñøWÌ'6þ>`DÒyÄÒt\« ÷ÊBõo6Rƒ#ûMñ‡çý¨r‡„WñzŸÌQs¸;‚´þ–pÌnZÝQ`nlV»kMجzG÷÷HB&Â߯; ~½Ë͆7¤ådÒ=÷ʾ(Tö õ*þœ•Ý9øËøku¯9r¤ùG™2.eg2e ]ÛqÇ˶Á…ôàŸžm¥‘á^I'ýkðOßø3<=y2M´i×fŠóÌjú™Ô¬0X³ Ñ|w@ûÍͯPc<8XñáJ³ã@ó ç`À’p/ÉR³ºÑü:@»ÏM>~y»/—nÈ<‹×{& ew¸[Â9êG ‡ÑêŽB@ÂÌKs­ ›u¸Ëî0üýø£àÇ9î,xCWÊm;¸—öD! ´KVÎâÏYÙ„¿Œ¿VwüÓ™|P?«Ö°¨‡c.îL@fwø3«t_¼x1µ¸ä"óo}››Íßüýõ‡èüß>œb]]kŠÿùø-Šl5bÛþæ<àÁ™>¢îŒ2Ñ@p/ÍÕx‡9ÿÄæ“C½{÷.Ýy¯÷L@Ëîp·„sÔ þŽ £Õ…€„™—æZ6ëþp—Ýaø§ëB@º¾¶£ã ©­¯ÜKû¡PÚ%+gñç¬ìNÂ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ì^Íý„ïO#¿¶ÁËÛ ¨³œ ÝJ à i)•ôÏåÍ}u½ùPý¼­ŸkbcK¬ûÈ\¿öâ[éú×ùzª›Píu'ÕÉs<8Üe7þ2þZÝQÉõ³jMXõpÌ Èì& e÷jî(XÂÆì–·7¤1YRo–7wRO© &¨özÄM¼HøËlžVwdòAý¬ZV=spg2»ÃŸ hÙ=®û¸s¿C3¼ÔùŠm6Ç',É ºåí iÁÍ äÅ}æ5òçﬠ8pók [÷^CÇ_êi> p÷;méø7wM¢¸÷Þ{SLë!îëNZóçu\¸Ëî<üeüµº£ “êgÕš°êᘠ„;ÙþL@ËîqÝQ°®Ò-/oH«0x¿œw¼§–ê ã¾Þ«¾‰€™ÍÓêŽB€L>¨ŸUkª‡c.îL@fwø3-»'u?}Âi4ÓómŸ¦ØfHá'ç›{<ýgïÓõãQì8Àü.9àa­@^Þ®½a%OòâÞ¸¸‘ÄgýÜü÷xá®Ít|ö0ó‰€h;N~¤#=Ýù¤_R7n\t)•˜ôu'•EäpP¸Ën:üeüµº£ “êgÕš°êᘠ„;ÙþL@ËîIÝQ°„.Ó-/oHËܾØé¼¸£ –b*'Núz¯ò&^üe6O«; 2ù ~V­ «޹@¸3™ÝáÏ´ìnëþ½žM3>µúqŠkº›¿y\p…ù›Ç »ÔÒùú1(vjþÆ‘ð°V /oH×Þ°’'yu_4qíÀàÙK)>6Æ|BàêÍÆÌÝú»ôäª_\gN¤ôhûº“Òrr3,Üe·þ2þZÝQÉõ³jMXõpÌ Èì& ew[w,Á‹ºåõ iƒ÷üº£à=ÕTMhûz¯ê&^ üe6O«; 2ù ~V­ «޹@¸3™ÝáÏ´ìÎu?õÜ“iæ{o½•â‚sÌ·û½ùî€eGô§ó]¶ìd¹ÂlwËëRé]Í«ûªçÍ'è2’¶à–o¢ø“á«(>Ù<œâƒ“ž¡˜Ö÷u'­ue}\¸Ëî0üeüµº£ “êgÕš°êᘠ„;ÙþL@Ëî\w,á[ºåõ )Oß;¯î(ðs'丯÷!ß»†µÃ_f´º£ “êgÕš°êᘠ„;ÙþL@Ëî¶îóçÍ£wØj3ŠóÎ^Y°‚]þh>ðùa-ŸØ Ÿ(j9ÈëÒR>ÏåÍ}å ók{-Û—˜oºúfŠK–,¡8|—(®¨7Ÿ xïÃÙtœÖƒíëNZëÉ˸p—ÝiøËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€–ÝmÝQ°/ê–·7¤E·/v˜7wÄRMÕ͝÷ªn"àÅÀ_f󴺣 “êgÕš°êᘠ„;ÙþL@ËîIÝgÏ2ß:¾Í›ÓŒ¯3ƒØl¾ ¦©%Žy ]_v¤ùD@×m:[®0ÛÝòö†TËnæÅ}Mó"ožh>¡óú3oTÜ‚þóŸt}·Ýv«ØŽ{1éëw>ô7p—ÍøËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€–Ý“º£` ]¦[^Þ–¹}±ÓyqG!@,ÅTNœôõ^åM¼(øËlžVwdòAý¬ZV=spg2»ÃŸ hÙ=®{SSÍpòØc)>ñÄ$Šu­ÌßüG±ukó7-¡fõ~]¨]‡=ÛPÄC¡@^ÞÞµüQ^Ü›î¯%ì;.þÅm¶ÞFÿ¿+ˆûº£b±ZÜe7þ2þZÝQÉõ³jMXõpÌ Èì& e÷¸î(XWé–—7¤U¼_΋; ÞSKõ„q_ïUßDÀ‹ƒ¿ÌæiuG!@&ÔϪ5aÕÃ1w& ³;ü™€–ÝÓv¿ê×WÑÊî˜ö;Šu;Z.4£Ýòò†TÛöeݽáeó ž3‡}èO{Šª-HûuGÕÍ*Z Üe7þ2þZÝQÉõ³jMXõpÌ Èì& e÷´ÝQ¨¼1YCZùîå®fÝ…¹ÜÒû˜Ê¥^w”1x_ܽ“LÿoZÝQð–aM¤5aÃRL¾Z¸'7sÙþ.5ã%åŽB€Ù£ÐÞÆÏ,Ý-CsG!@w>…²:©×ûP|Ò^'üÓ.=¾VwJïWîÏjMجo Üewþ2þÒî¿ÿóïéÆ/ø#н>0Ÿ¸tf:>âÙöûþŸ <8­Ýôç÷ϧ§m_YDñ_ǘÿN:›ÎÔœòhG:?lì/(ž|òɵ=H¿îhóðµ¸û’.=üK»¤}V«; iï| ãkMØ@9c/RiÿTX«*íŽBÀ‡´GCƬºWhàN…w–6#I¿îج9 }à.»‹ð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»K»?ñè?håùmŠÏ½œâ 3Í }ë©vô¤ß…C̉Œ=†ú†4ômÝýóW—Ð̺qÅ?VKñƒEæ3‡žNÇ×\g~¥ƒ=H¿î(¢ðº¸{å^o2ø¯Gâå„Vw¼lx“hMØð$“­îɼ\·†¿kÑxãI»£ð!m>/_]µB!À•¤Ý8Ò¯;v«¿Üe÷þ2þZÝQÉõ³jMXõpÌ Èì& ew)÷g&?N+þÑiæ“O¹¸àþe¾* æÐ'Z>ðc|" ,Ð «ÌWkÔ<{ßsäpÂ_§Ø4ëeŠ«7úÅ¿?ñ¨ŸUkª‡c.îL@fwø3-»K¹O:•V¼fù@]]Ç·§¿Mç/ºóBŠ­XM1+¡¾! Ý?4÷ú·Ì'díz8Ñ_üWÜ‚%K̯ tíÚµb;©‹R¯;R÷«e^¸Ëîüeüµº£ “êgÕš°êᘠ„;ÙþL@ËîRî(˜ í ©eš©ëš; êR(ÈI½Þ‰•¢áŸjŒ!µº£cóòØDkÂf}/à.»Ãð—ñÅýÉgÌ?Žþþ çTÝÁÙød@hoHe²Ôý¬¡¸7-i¢›ïñøF'ßÿ”{ CyÝ IuJ¸§Ê[upøW%J¥VwRÙîðÕš°áËV¾¸WöIû*üÓ.=~(î(”Þ?œµ@!ÀÎÍU¯P^w\ݯ–qà.»ð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»‡æþÜ‹æwÓÏúåtÇ­¾Rù“+ÞXJíj{·¥Ø¡_;K©tº…ò†4»—5÷Æ»ŒÑ÷>JOúöí+‡æpæÐ^wÞºèPp寿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙ=4w,7Ý P(àð~ÚëŽw ”&„{J°1‡…L(ÇÍ´º£àx£³2œÖ„ÍŠo¹û€{9?çáïǹx–PÝ_~õ%º•S.G±ÕèÂO,»ÿì©E»<€b—­:QÔòÊR-^®Ö¡Å}õ*“·õsͯ4Ìk [¬ýÈüŠÆå§\EÇßúÚ·\ݺŠqB}ÝQÇXÜxºÂߢÅZÝQ°ØÌù“ù¨Ê Ç™OlÙ»ÐgäÝÝéÄù×ßCqĈ… ?ÊÊëNhÛwÙƒ¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙ=+î(X&@N»¡ »ñYyÝ‘UL>;Ü“›¹ì—šñÇÒêŽB@ü=ÌUK­ ›õM€»ìÃ_Æ?t÷~yÁ½yße³¿ù×Hsß»Ì'fe:Õm‡.Ñ%Qê ©Š›\„´{ãâFºûÙ—Í xÁ—Í'XÎÝÕ|BàŒÇÚÓùm޹šâé§ŸN1+¡¿î„ºp—Ý9øËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€–ÝCwG!ÀrãsÞ …ÙýuGVÏ~v¸ÛÛ¹è ŠÉÇÐêŽB@ò½ÌE­ ›u|¸Ëî0üeüCuÿñì¡;~EñAæ[Ø›×´¢ãæ5æ[×ÿöŽùÖ¦cûÓùnÛã‘óéB@Ä¿êŸæ“›¼g~. Ý·èÒþFñ½ã(^÷››£.™ˆ¡¾î„ŽwÙ„¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙ=Tw,7ÝH…ÙDõuGV?;Üù†œàÏѳï«Õ…û=ÍtO­ ›iôÿÞÜewþ2þ¡¹¯Y³† ^yù%ŠýýëêÌwÇöÌ¿µ¾ý·Q»6cL:Pð å © ¯Kv_ùqÝïÎów§8ñW¿£ø·û̯Œ9ê(:ÞuØö'¿ð*Ŭ<„öº÷¬ÈÞò^Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìš; –n(px?íuÇ;PJÂ=%ؘÃÂ?&”ãfZÝQp¼ÑYNkÂfÅ·Ü}À½œŒŸóð÷ã\ÏÀß§ösiuG!à‹=³u´&ì:KÌäS¸Ën+üeüóæ¾pÑB‚Þ÷°}(¶;Þüº€Œ~MôR©û–žWʽñ!sç·?‘ž Ûq˜4…Èüy{ÝA.1)ÜK x<ØëL¥Õ…€u6 O¿К°_¬0›Ïà.»¯ð—ñÏ›; 2y¦mVdw$o¯;²Ú_Ì÷/,$žÁ_B]ï—£ “êgÅ …ÌÁ]Æ=šþ‘„ߘW÷¥K—ô‡ìF±Ý‰­JÂrÍ :¿|±ù7݃~6´d;Û“RoHm×›•~¾Ý^5ùó­O!³Oý^V(­î#¯¯;VX;ÁÝ!¦ÅPð·@sÐE«; 67‹ChMØ,Z¯{Op_WÃÿsøû7ÿߌyuG!@&ß´ÌŠB€ìNäõuGV=¿¯÷ÒîÑüÈûHÂoÔêŽB€ß<f6­   åBán ç¨üA&&ïî+W®$±Fš«Ýáä::^|ãGè°œâm´¡¸ÉO†Ptõàû ©«u‡>Ž/÷†y«ˆjèÛÛP¼wâ}¡Ó9YÞ_wœ Z w 4‡]àï3ÁPZÝQH°‰yjª5a³¾p—ÝaøËøçÝ…™¼“ž…ÙÈû뎔>Ü¥äͼð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»ÃÝÀ566Ò“¡ƒzQh¾# ÿ%[˜Ž¹oH-#wÃpݧMx—Ì6oßLqßM×Pܦ§‰CÍKjÆ<ØÎ?ÿêÛ @1ïxݑɸ˸G³Â?’𵺣à7‚™MkÂh¹P¸[Â9êG ‡»C! aâÞ…Ù Ä뎌?ÜeÜ£YáIøZÝQð›Á̦5aƒ´\(Ü-áuƒ¿#È„ÃäÝý¤£#±^s¡xÔæ»šÍWÔ¼·È€žù¬ù·Þƒ®Ø2¡påæÜ7¤•GÇÕr®Üç^ú>MñíÌwüb¿–Äi™øÀ¿t£gãùŠÑo-—s"‡I“&åÖ@âÆá.¡þÅœðÿÂÂç3­î(øÌ‚€æÒš°Z-îVlÎ:Áße¢òîŽB@¢tÉLcd·2ï¯;Rúp—’7óÂ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìžW÷©S§’Ø©'MqÙÒ¥[×ÕQ¬kmbmm­¹Þl>)ÐæzGs®Þ2–Ë®®ÝÝ=—;¾ö9ÅO0¿*pÁÓíéx‹£®¤xæ™gRÌûC^_w¤÷î²;­î(ÈäƒúYµ&¬z8æáÎdv‡?в{^ÝQ°L˜ŒtC!@v#óúº#«^SwÙ€¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙîÉàöµ;uXùUó7¿u]xŸ pý†4ÙÝä·µk÷Æ;Í'G®<÷ B=웇Râ›ûÓ™…ÃçQlݳôw̹b]ïòÕ Mܦ3EWoHi0<Äຯ|×üÛÿQ­¡9¯úéÕçž5k]ßd“M*¶ËËE¼îÈì4ÜeÜ£YáIøZÝQð›Á̦5aƒ´\(Ü-áuƒ¿#È„ÃÀ=!XQsŠ@9D!@v£ðº#ãw÷hVøG~£VwüæA0³iMØ`- wK8GÝàï2á0pOV¦ùÁGDWæîô1Å6¶¦8ëGÓ(öom~W~Ñhó7ÂÝwìJç¹oHi<$°uo^ÑLsu¸¿Åy1ñÜ耟±“ʼÞKÉ›yá/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%\Q7Š@”¢ »AxÝ‘ñ‡»Œ{4+ü# ¿Q«; ~ó ˜Ù´&l0€– …»%œ£nðw™p¸'«Ò|ôÑæßŒ¿òÜ$jyï/zÑüªÀûû÷£ãîÃð‰€*”©^¶-4þ¥–Öuÿ¯ 8pàÀT×™ÕÁñº#³³p—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Uš£PHÉed7¯;2þp—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Ušï³ËvÔâ'Ûü‡â~ÖPüê½æïìc>ÐcgóoÌmßVY.W¨æ¾¦Ùì[ý<óëMSWÓˆ~ó"ŠGûè*3àr%¼îTÒIïÜÓ³32üã(¹o£Õ…÷{‰µ&l&p+ÜÜ+àx¸È%¦€{ Æ)x»¢à»ÄTxÝ)âáÜ= W˜þpR¼¤Õ…€7=䡵&lȦqÖ÷8Jéµz¶•F†{%ø×Ük5?øMŠ 4ß ðµ–Oü{¸ùD@Ï]ñ‰€ÈF"F…€®}ÛÒôkæÔS\Þò €%‹Í¯Åººº’±];óoÌ'ül<]ŸÒã_?¼wE|"€¼=D…€È}Éó‹iî…žKñùcÍ'¶ìm–ô•{Íw:|÷Š?щQ£F™ x´À뎻ÜÙ„¬àÏâ³î¬Õ…ë-ÍvG­ ›muüͨôþ"ïevî0P3à›—ÒùïsNÔÑB¯;hºÀÝ"cø3ð]µº£ÀØÔ,wÕš°Y6ÿß½Á]v‡á/ãwwdÜ£YQˆ$d"^wà.# ;+ò^Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8GÝúêO#õ<Ú|+}ë!æ;Їo^ÙL§OZH±÷×6,n‚ãÅ…€úÙ Ô{»w¤ø§›ï¢øÝqÇQ|îÑ{)îvàáo¸e"E<Ø àuÇÎÛ î\A^øóül{kuG!ÀvG3ÞOkÂfœŸÞ`ä½ÌÀ]Æ=š…€HÂoD!À¯wñlxÝ)ñs w?Îåf9™tÏkuG! Ý}vt­ ,hÌ…Ã=&TJÍàŸl•aá^(åË‘ÿ¶»mK3MnzŒbë-ÍïÛGÓ¿vâ¿éiÏ>m(øùÑ%D âBÀÊ›Í'.^ê ­Mã =ñö[éiý²¥Oýî÷¢KˆQÞOš4É¢7ºØ ÀÝVÎM?ø»qL:ŠVw’îdNÚkMجóÃ]v‡á/ãw÷hÖÈ…€HÄOD!Às¹Y¢¼G! œP:çណkÜQáWÊm;­îµ#GŽ\ãöVÝŒ6eÊhÇÍ¿•s3*F‰+ÿ¸RnÛÁÝ­gÒÑàŸTÌM{¸»q´¥Øÿ½ïÑP ›Í·Ö¯˜¹œŽwÚØÌðÚ§µô¤ÃàNæ­V|h~ CçÔËþ[QìÖ­[ÅñÖ¬1ÿÛV[kö¡bc\,+Pœ÷eâ‚S¸;åL<ü“9é Õ…'Û›½A´&lö¤ ïî…¾àï[ÜÌw÷hÖb"™t# éúV½8﫵Çu7pwãh; ümåxý´ºãŸðö5³½µ~„%³à-7wÙ†¿Œ?ÜeÜ£YËùwíÔ–š|pf#ÅOW˜{þ¥5=xù–æ­Þ½ðê÷Ãs~HñßûVã “@¹¼· ½â À=®T:íàŸŽkµQµº£Pmçrz]kÂf};à.»Ãð—ñ‡»Œ{4k9"¡t" 鏯µ\ÞÇívvp·ssÕ þ®$“£Õ…€dû˜›ÖZ6ëwÙ†¿Œ?ÜeÜ£Y‹ýûmÐ.½|Üçûv1-§/2q×»Ì']‰O‘d VQ‡yWÐs$­罓A1HU¸W%JµüSå-;¸VwÊnY¾/hMجï Üewþ2þp—qf-öG! ’I'¢ŽkÒQ‹ó>i´·€»›«^ðw%™l­î($ÛÇÜ´Öš°Y߸Ëî0üeüá.ãÍùOòúúææÛì;µ5ßJß¼ÆÄEËÍïÜ?2˼z‹hÄu¢7ú óÌßü×Ïm «kf×ö ÚÓñ&šOTLž¨ŸUkª‡c.îL@fwø3-»ÃÝÎQ7[ 7…€BíG¶y¯ý¾´¯î²;­î(ÈäƒúYµ&¬z8æáÎdv‡?в;Ü-áuãúßüû›h%7¼økŠu»á;þ1÷çÓÉã°^¯=ÐüêÂ!÷u£ãÙuƒ(¾öÚkñàW€›÷~W›Ùà.»—ð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»ÃÝÎQ7®? ¥7…€Ò.ZÎró^Ë}„¶¸Ëîüeüµº£ “êgÕš°êᘠ„;ÙþL@Ëîp·„sÔÍ•ÿmwÞF+ºþ©_P¬Û³póèÄ´›¿)ïûMé¸ÇN] fä¨ñ.s#£·IO½çvŠ»÷YAñ‘ORœ6mE<øp•÷~Wþlp—ÝCøËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€–Ýán 稛+ 7…€BmG®ò^Û}i_Üewþ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9êæÚÿù#­ìšÇ® ¸z«Uçüì=Š»÷§PóæžýèIÏ]Í¿™7gÃ\õÌjº‰ Gÿ„âa‡Nñ•—_¦¸÷póQ‰^½7 ã™³fSă_×yïwõáÎwÙ½ƒ¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙî–pŽº¹öG!…G©™ê0®ó>ÕÅfhp¸Ën&üeüµº£ “êgÕš°êᘠ„;ÙþL@Ëîp·„sÔ--ÿ›o»‘Vøƒ³Î ¸ø<óù›kEǯïÖ—bÏÝ»S ý¡~ºùäþ« [ùÕ忪xKǧëÏ>ûlÅv¸˜Ž@ZyŸÎj³3*Üe÷þ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9ê––? (8JÑT†I+ïSYl†…»ìfÂ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8GÝ\û/Z¸V6dÐ&ž[_°ÒÃï7Ÿxegó‰€^{†ý‰€Õ«Ì'ZÝÕžîó•'^-¸ßr®ÝË̓ó¥à_Ú%í³pO[¸òøð¯ì“ÖU­î(¤µã«5ag­º|¸W%JµüSå-;8ÜËÒx¹àÚ…¼$.s×yÏ\NnºÃ]v«á/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%œ£n®ügÍœI+:d3ŠŽi¢Ølþ¼¦yYð¥/˜O¼¿ÏÆt¢×ðæB M­¥•ß}Å=‡ëN\¹Çš Ö€ÿz$^NÀÝ sÙIà_–&Õ ZÝQHuÛÃ\k†+oåpç”V+ø§%[y\¸WöIûª+PH;W]Žï*ï]®)cÁ]v—á/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%œ£n\ÿ5kÌ_õ_s奴¢ûþ|źºº’±±©‘Î/ÞÄ|T íh: î¡þYsßßw­}ì1'&º®{¢ÉÐx=ø¯Gâåܽ0—þeiR½ Õ…€T·=ÜÁµ&l¸¢ñV÷xNiµ‚Z²•Ç…{eŸ´¯rýQ@! íMc|nÞ§±¦<Œ wÙ]†¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙî–pŽºIù?õìStçüúlŠu£Z¾LÀÑ}Ù³ð¹ÅÔµiV˯Ì1qż:¿èóÝÛ éCÇS§ÍµšJÊÝj±ì™M…»Œ{4+ü# ¿Q«; ~ó ˜Ù´&l0€– …»%œ£nðw™p¸'sÜ\Ê…€h''MšäxG1\©¼³¶,·»ìîÂ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8Gݤý_|éEº“3®>b«¯4;º3»a¦ÿêxP_³Žc¶5ß°E/3ÞЖX{‘9ŽþiDÒ٤ݓ®7kíá/³£p—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Ž›Kû£€O8NéXÃIç}¬Ef°Üe7þ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9ê¦ÅÿåW_¦;:åÒq[.ýÉ€†©Kèú¼û?¡8àGƒ)º~XxãG4ä°U+(ÞS´ž-nîBç|êŠC‡¥÷A‹{Üõf­üevî2îѬð$üF­î(øÍƒ`fÓš°ÁZ.î–pŽºÁßdÂaàžÌqs-þ(8ÞX WQ@KÞW\d/Â]vSá/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%œ£nÚü_Ÿú:ÝÙØO±îPókõo˜Ot¸6Ÿþ¹Øüê­Ì“”ßñ)¼ü¥EŸ>vÅñÏt£8îâ?P=z4ŸÚÜã®;+íà/³“p—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Ž›kóG!Àñc¸’Úò¾ä"3xî²› ­î(ÈäƒúYµ&¬z8æáÎdv‡?в;Ü-áuÓêÿö»oÓ~kìW)vYð1Åèßêo7±ŽŽÿ"OÔÏk ñ‡¾½ Åë/ùÅ{íLq“6æ£N¾˜Ž¿Þyã>hu»þÐÛÁ_fá.ãÍ ÿHÂoÔêŽB€ß<f6­   åBán ç¨üA&î Á7×êB€ãÆpZó¾`‘<€»ì¦Â_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8GÝ´ú?ý¤ùY½v8Ýé3G™/˜³ÔÜøV·šO ¹6O4ܾ†&úçßÿE±S§Nfâ–Çÿ>Šž>ô[û‚ëÕ´ºW[wV®Ã_f'á.ãÍ ÿHÂoÔêŽB€ß<f6­   åBán ç¨üA&î Á7×êB€ãÆpZó¾`‘<€»ì¦Â_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8GÝ´ù¿øÜ3tgß?ñPŠ/ŒY\p§ó—›ÃÁ7µ¢'[\¿uÁuîA“ù BÍ/O¾ž†Úwï}+Y__O×Û·o_±]ñEmîÅëËú1üevî2îѬð$üF­î(øÍƒ`fÓš°ÁZ.î–pŽºÁßdÂaàžÌqsmþ(8Þ` WR@[Þ—\dOÂ]vSá/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%œ£nZü?þØü*ÀÈ}v§;[¼È|+Ójóoõ›[bSójºÞ«g;Š]:¨¢ÄªEt½mÏ6ÛÕÿ{]ÿö†c(^8þÇÛs/jqçÞG¨ýá/³sp—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Ž›kñG!ÀñÆb¸ŠZò¾â"3xî²› ­î(ÈäƒúYµ&¬z8æáÎdv‡?в;Ü-áuÓæ¿¨å“«W›¿ùoݺ5Ýi]ù•€(.Yº„Î8æŠm+ 2óïÐ…V]Ì8ý~8¸ aãbó‰žÛ”Î?vOË—´r ÍÝýêþ2ûw÷hVøG~£VwüæA0³iMØ`- wK8GÝàï2á0pO渹6o0†+) -ïK.2ƒ'á.»©ð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»ÃÝÎQ·Ðý?ûì3’~è^Û­-™5Á|"`»ÎMtþ¥¹æzÇý{Óq×EÝ(>û·ç)n¸á†Ó~Ý=mŸ´Ç‡Ú¥LJ{i_gáïKºp­î(îŽZ´&lÖ7î²; ¸Ë¸G³†îB@´“ˆIBÏû$÷ª©-Üewþ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9ê–ÿåË—“È®£v¡8çýé—Í7¿У½Ûj7èhâãšïX¼Ü|W€9›þcVÜÓ—Jgø§ãZmT¸WJ÷:üÓõ-7ºVwÊíXÎÏkMجo Üewþ2þp—qfÍŠ? ÑŽ"ÆÈJÞǹWMmà.»ð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»ÃÝÎQ·¬ù744ÌàÁ}(nPû9ÅWO\C±ðjjê~J§k6í݉žL>‡b×®]Í…”³æžSjÃÂ?5ÚŠý"OêáŸ:qÉ ´º£Pr»pRkÂf}gà.»Ãð—ñ‡»Œ{4kÖüQˆv±’@Öò¾Ò½jºwÙÝ€¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙî–pŽºeÕõêÕ$ÔH?ŠsfÌ£øè±î€ÍL|½‰Û˜øþâVôdyC³9‘ÒcVÝSâr>,ü“ÆRkÿÔh+¬Õ…€ŠÛ–ß‹Z6ë;wÙ†¿Œ?ÜeÜ£Y³êB@´Ãˆ¥²š÷¥îUÓ9¸Ëîüeüµº£ “êgÕš°êᘠ„;ÙþL@Ëîp·„sÔ-/þ}»™¿é_Õh¾+àˆm àôÅuô¤í–£(þä'?¡8lØ0Ši=äÅ=-?î¸ðç Úõ‡»›«^ðw%™l­î($ÛÇÜ´Öš°Y߸Ëî0üeüá.ãÍš¢GüŸ@^ò^ÛnÃ]vGà/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%œ£nY÷¿êú+Iê×O™/øúß ã¾zP¼æªË)ž=áGÏ?ÿŠi?dÝ=m?îøðç Úõ‡»›«^ðw%™l­î($ÛÇÜ´Öš°Y߸Ëî0üeüá.ãÍšu¢F\W ëy¿î½jzwÙÝ€¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙî–pŽºeÕê›SIè¸‹Ž¡Øz´ùn€Æ‡ ÜMçü–ž¬n2¿°É&æ×úh¤ü˜U÷”Ùœ g”‰‚{".çáïœ4Ö€ZÝQˆµ}ùk¤5a³¾p—ÝaøËøÃ]Æ=š5«þ(D;ŒXJ «y_ê^5ƒ»ìnÀ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8Gݲê¿Ë;“PÓa+(¶jo~5 y…ù@ûû»Òùù§#ÉdÃdÕ=™‚\køËØÃ]Æ=šþ‘„ߨÕ…¿yÌlZ6@Ë…ÂÝÎQ7ø;‚L8 Ü‚9nžU'JƆËjÞkß&¸Ëîüeüµº£ “êgÕš°êᘠ„;ÙþL@Ëîp·„sÔ-ÿ%K–Ðwíjþ&¿Üí_p±ùÖÿû—ÞCM:lÝ®dÓú)«èüÉ[Nñ¬SÏ.Ù.­“¡¸§uÿÒãÂ_fà.ãÍ ÿHÂoÔêŽB€ß<f6­   åBán ç¨üA&î Á7Å…ÇŸóáBÉû¬mÜewþ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9êŠÿU—_Jwü‹«¯¤øÄ3/PÜrË-)>÷üsÏøõ©ÛTK±ÚCãŸM»üÖüœ@¿~æ×ªõã^Å{ŸZûÃ_fgà.ãÍ ÿHÂoÔêŽB€ß<f6­   åBán ç¨üA&î Á7Å…ÇŸóáBÉû¬mÜewþ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9êŠÿĉ鎸Æü›þ·µ¡ããO1ÿ¶ÿ÷ÿø w<µ5Ÿõs¨i·ÇºSüÎq§Q>|8ÅÁƒStýŠ»ëûÖ2üevî2îѬð$üF­î(øÍƒ`fÓš°ÁZ.î–pŽºÁßdÂaàžÌqóPüQp¼ñ9.”¼ÏÚ6Á]vGá/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%œ£n¡ø¿öÚktÇ'}s?ŠSŽÿœâ¹O˜OÜñéóƒÍéI›®ñ>Ð0ßüzÀü‹§S¿ƒ‡´¥øâ\3îÒUæ;öÚm:?òoR<õTóÉ:°xÅÝâÖ‚è™m‚»Œ{4+ü# ¿Q«; ~ó ˜Ù´&l0€– …»%œ£nðw™p¸'sÜ<o|· %ï³¶Mp—ÝQøËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€–Ýán ç¨[(þÍÍÍtÇíÚš¿©oúÑšÍ6‡ÿ¹=Ùð°>»ìÓ³ ]ñÁÂçÓ©]_Kñ®¯­.hòÒs8öèÉÈC£xíÍËÇPÜ-oO}7øËlÜeÜ£YáIøZÝQð›Á̦5aƒ´\(Ü-áuƒ¿#È„ÃÀ=!˜ãæ¡ø£àxãs>\(yŸµm‚»ìŽÂ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8GÝBóßzóMèο¿­ùÀgõâ…OÌ'^›gŽ?þÔ|bàK·lSQê“[gÒõ÷0ß9pÒ—MóL6Ÿ<¸gF:qû隸÷>û˜ÌÇÐÜ™·«®;üe¶î2îѬð$üF­î(øÍƒ`fÓš°ÁZ.î–pŽºÁßdÂaàžÌqóÐüQpœ9.´¼ÏÊ6Á]v'á/ã¯Õ…™|P?«Ö„UÇ\ Ü™€ÌîðgZv‡»%œ£n¡ù8À|{ÿ›ÓÞ v[u¡Øf@Šú·7qé ÂÇ?x‡®^¶KÅ O›OtЋŽÿö‡IwØaŠ®BswußZÆ¿ÌNÀ]Æ=šþ‘„ߨÕ…¿yÌlZ6@Ë…ÂÝÎQ7ø;‚L8 Ü‚9nš? Ž §Ã…–÷YÙ&¸Ëî$üeüµº£ “êgÕš°êᘠ„;ÙþL@Ëîp·„sÔ-ÿ?Üõºã+&ÿœb»=Z³š–™_!˜6á]§ç ó ‚^ãú›qÍjz=i~}àÉ¿NfÍWÜ9÷âugåþ2; w÷hVøG~£VwüæA0³iMØ`- wK8GÝàï2á0pOæ¸y(þ(8ÞøœJÞgm›à.»£ð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»ÃÝÎQ7íþsçÎ¥;=øÄ)¶9ÒÑ· ³ì½ô¬óŽ%®©‘Ο½Ó¹Ç=¹d»¤'µ»'½ŸÐÚÃ_fÇà.ãÍ ÿHÂoÔêŽB€ß<f6­   åBán ç¨üA&î Á7×îB€ã Çp$ =ﳺMp—ÝYøËøkuG!@&ÔϪ5aÕÃ1w& ³;ü™€–Ýán 稛vÿ¯õºÓ™;ϠضWGwžl˜Æ;k©Ãã|‚âll€¢ÖÚÝ‹–›¹CøËl)ÜeÜ£YáIøZÝQð›Á̦5aƒ´\(Ü-áuƒ¿#È„ÃÀ=!˜ãæÚýQp¼áŽ´ç}V· î²; ­î(ÈäƒúYµ&¬z8æáÎdv‡?в;Ü-áu“òŸ:u*ÝÁöÛo_òN®¿é::Ó¿C±ýN2Ÿˆ·ò£zºË‚=(Þ~ýÄè’U”r·Zl;Á_fSá.ãÍ ÿHÂoÔêŽB€ß<f6­   åBán ç¨üA&î Á7—òG!àÚÉI“&9ÞQ G@*ïã¬-Ëmà.»»ð—ñ×êŽB€L>¨ŸUkª‡c.îL@fwø3-»ÃÝÎQ7ßþ>ú(­ü„1‡Q<餓(^|Å/)N›6âá¾E±Í7(¨yXõx3­å¥³.IDATê㯥xÀHó†>é}»']_ÖÛÃ_f‡á.ãÍ ÿHÂoÔêŽB€ß<f6­   åBán ç¨üA&î Á7÷íB€Ù@ßîŽÓ&øáà/³…p—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Ž›ûöŸ={6ÝÁ®Û¥xÚNk(þiFoŠí71߯ßtøJ:nÝ©Ž¢–‡5Íf½Ëoh¤%]üƒK(îµ×^ûôék©¾Ýc-*Gà/³Ùp—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Ž›ûöG!Àl owÇiüpð—ÙB¸Ë¸G³Â?’𵺣à7‚™MkÂh¹P¸[Â9êG ‡{B0ÇÍ¥ü{wïLwòî)Ë)Î[fnläµô¤ÓARì>Ê|BÀ\Õó8ãÜwh1;ôlEñ…­)vêdîk¯áÃéxï£(žØò]tðß)÷hþ¼GøËdÜeÜ£YáIøZÝQð›Á̦5aƒ´\(Ü-áuƒ¿#È„ÃÀ=!˜ãæRþ(àW§r¢á¤ò>Ñ"3Øî²› ­î(ÈäƒúYµ&¬z8æáÎdv‡?в;Ü-áu“ò±ç0ºƒÿ<…âþƒ oè´ÇÍß´ß7« ]Øx¼iк³ù›÷ÂÖþŽš—›_ xï<ó‰€eÌwD+x±yöÿž4ë~iQw:ñÑìO¢&¥Ü ‘ãøËl>ÜeÜ£YáIøZÝQð›Á̦5aƒ´\(Ü-áuƒ¿#È„ÃÀ=!˜ãæRþ(àŽS9ÑpRyŸh‘l wÙM…¿Œ¿VwdòAý¬ZV=spg2»ÃŸ hÙî–pŽºIùŸ{Öét³Ÿ¼b›öæSæ›ïxoÞj:ß±‹9ß÷¤Mé¸Ó¶æßàÓÀÃç¯/¥Y7}d&Å'0ë|ÞÖŒ}¸ ?lÌXŠ?¿êZŠÅRîÅëÈë1üevî2îѬð$üF­î(øÍƒ`fÓš°ÁZ.î–pŽºÁßdÂaàžÌqs)ð‰Ç©œh8©¼O´È 6†»ì¦Â_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8GݤüÏÝÁ½“ÿH±ÝöæoÒ;ôoOÇ75±¶µù„€£ÛeóÉŸçÒg4.¤øÆgæ “g›ï8oÂÅtþûß;¯â\Rî•£‹ð—Ùl¸Ë¸G³Â?’𵺣à7‚™MkÂh¹P¸[Â9êG ‡{B0ÇÍ¥üQÀ'§r¢á¤ò>Ñ"3Øî²› ­î(ÈäƒúYµ&¬z8æáÎdv‡?в;Ü-áuóí?é‰I´òó~wÅ6#tý5Ö.œFMÍZEqÐq})vß·'ņߙ_xáþé¸KóI:XçÁ·û:Sãéà/“p—qf…$á7juG!Ào3›Ö„ Ðr¡p·„sÔ þŽ ÷„`Ž›ûöG!Àl owÇiüpð—ÙB¸Ë¸G³Â?’ðµº×Ž9²ðpýº”mÊó»Â;î¸cÙ6¸žüÓ³­42Ü+é¤ þé—šî¥Tüóå¿zµùvýMùÝ\]¿°> íHÓ’&³þ.ukk ï£y¥¹ÏÍæ[Ù2êZ}¹LŠƒµð_Káõ ܽr¯7ü×#ñrB«; ^¶?¼I´&lx’ÉV ÷d^®[Ãßµh¼ñàÏ)­V¾üQ(ÜA_î…³â(€$á7Âݯwñlð/ñs¬Õÿ4ÀÏþ7‹Ö°™pÁpOæ¸9üƒÆî1¡RjæËÿijÆÒ¼´ÁóÛ÷o—ÒévÕ£æ“7œy3-hÏ=ö,X˜/÷‚Iq°Vþk)¼>»Wîõ&ƒÿz$^NhuG!ÀËö‡7‰Ö„ O2ÙŠážÌËukø»7Üã9¥ÕÊ—? (¤•Ã6ãúÊ{›µe¹Üewþ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9êfë___O+øÕu×RñÄ9Ô¿enÞËßA˜+€»ì¾Á_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8Gݸþ(ÄÛâ9ùjÅÍ{_ëÌÚ°Ñ÷Ñq» òùÉ€wÍ¥ûo?å3ŠÓ?5¿*ð¥­6£ã½öaâ¾#)FûÒ½{w:ƃ[ÈwÒ¤InÆhà^‘'õ‹ðO¸äZÝQ(¹]8©5a³¾3p—ÝaøËøÃ]Æ=š•ëB@$Y9¢PÙÇ÷UnÞû^oV惻ìNÂ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8GݸþW^y­dÁƒ?¤xÅþ+{xº9s¿ù7ò¹1è¸WÏ‚vY?˜ýÓ÷èïÛÏüŠÀ…“Í_n>Ps÷ÌñÍSÛÓ“gžÿÅm·ÛÞ\À£SnÞ;]LŽƒ»ìfÃ_Æ_«; 2ù ~V­ «޹@¸3™ÝáÏ´ìwK8Gݸþ(ÄÛâ9ùjÅÍ{_ëÌÚ¸Ëî(üeüµº£ “êgÕš°êᘠ„;ÙþL@Ëîp·„sÔÍÖç‘;Ñ š¿½’b«vùþ.€rÛ±òó«–6Q“n;›_MxïÊéxÐi›Rìòó+ Ïþý9:ÆCº¶yŸîª²?:Üe÷þ2þZÝQÉõ³jMXõpÌ Èì& ew¸[Â9êfëB@¼ @! ž“ïV¶yï{Y›î²; ­î(ÈäƒúYµ&¬z8æáÎdv‡?в;Ü-áuKêþÏΧ™Xn~ï¾ÃVæW-'7ÃDŸ2~ ÝóÊ—WQ‚¿oq3ŸVwdòAý¬ZV=spg2»ÃŸ hÙî–pŽºEþC™«>ú‡ÑÈúJÁ Ï>g~çþŒßœJçÛ„ï(JxP\ˆº7Þež=rÛcôdã7Ž.!:ˆò~Ò¤IGÅPÕà^M(ÝëðO×·ÜèZÝQ(·c9?¯5a³¾-p—ÝaøËøÃ]Æ=š5òG! ñQðã\n–(ïQ('”Îy¸§ãwTøÇ•rÛN«; n÷93£iMØÌ—¹¸—ñtþž ‹¦{ˆçÃÈÍÊÅ4ó¢™ïR>Ê|2àÚÍïÛo½ûVt¾ã©­=¯0›Ó•+¬œUO7ü¥w¦xÇMwf@ø®¢¼G!ÀïFÀݯwñlð/ñs¬Õ…?ûÜ,Z68È„ †{B0ÇÍáï4æpp •R³È…€”€Ë ‹B@O§£¼G!ÀxË4p÷ë]<ü‹EükuG!ÀÏþ7‹Ö„ 2á‚ážÌqsø;9ÜcB¥Ô,òßa[ó7þ¿u=ÍÔ¦­ù5€Ÿ>c&îväFô¤Ç]SZI¾†-Wˆ&7ÓÓ³†ŸCqÜIã¢Kˆ¢¼G!Àf‚!àž+…¦ðO5ÆZÝQˆ±yyl¢5a³¾p—ÝaøËøÃ]Æ=š5òG! ñQðã\n–(ïQ('”Îy¸§ãwTøÇ•rÛN«; n÷93£iMØÌ—¹¸—ñtþž ‹¦{ˆçÃÈÿ¸ãŽ£™']w:ÅßuÅ>7 yw=Y³sŠÝ¿ÑÇ\À£•@µB@ô]˯ù€ÆŸ¹x5ŽvÞŽâžû`Ž÷ÙŸân»íF±gÏžñPY Ê{*;¹¾ wעɯƒ2/W­µº£àj‡36ŽÖ„Íóz·÷õH¼ž€¿WÁ}-…ȓȅ¿ü(øõ.ž-Ê{ŠeÒ=†{º¾ÕF‡5¡t®kuG! ý~T­ ?«=¹íM³#9œŽo¼e¢i€ÇŠQÞ£P‘ÉùE¸;'M4 üq9k¬Õ…g[œ­´&l¶”׿¸¯oâó ü}j1Ü¿°xù£àW…¿ÞųEyB@±LºÇpO×·Úèð¯&”Îu­î(¤³ßÁª5aƒ‡­rp¯”òeø§ \fx¸—ñtºØ¿_ïN4ó’•+)¶jkþæ¹Ë&æWjt¤óíu Ø}§nñL Z!`þ53hÀ¶YAñ¡füÇÞ7ñćÍ>zæÙtâ‡?¹Ä\Àc,â¼Õ Øpg²€?‹Ïº³Vw¬·4Ûµ&l¶Õkjà.»Ãð—ñ‡»Œ{4k±? ‘Lº…€t}«^œ÷ÕÚ㺸»q´þ¶r¼~ZÝQàíkf{kMØÌ‚·ÜÜewþ2þp—qfü=ñX:õó‡.¢Ø~ó €ÖͯDíÝT+¼uÚ[4ѧ›_ øÎcæ“o.ìLçŸÉ\ïׯŸ›ål”(ïñOün<ÜýzÏÿb?ÇZÝQð³ÿÁÍ¢5aƒƒL¸`¸'sÜþŽAc÷˜P)5‹üQH ¸Ì°(”ñt:Ê{<·Lw¿ÞųÁ¿XÄϱVwüìp³hMØà .î Á7‡¿cИÃÁ=&TJÍöÞ{oùó΋)¶9"¥‰0l@¹BÀÊÙ Ôî“+Ì—|¾b <ÉüÍÛóÝçî1Οxì‰ãâ ž^wâ9¹nwעɯƒ2/W­µº£àj‡36ŽÖ„Íóz·÷õH¼ž€¿WÁ}-…ÈDØkPqfÅëN$á7Âݯwñlð/ñs¬Õ…?ûÜ,Z68È„ †{B0ÇÍáï4æpp •R³Þ}zÓÈ}'˜Ø¶W›”fÂ°ë ”+¬út5[øÐ'7>a“u»­}ÞøGótòŸŸ¦'={ö\{ Oª àu§ºQ-àž†jü1áßÊeK­î(¸Üå ¥5a3D\òVà^’ÅÛIø{£.˜îÞPðNN¢ ãÍŠ×HÂo„»_ïâÙà_,âçX«; ~ö?¸Y´&lp  ÷„`Ž›Ãß1hÌáà*f³eË–QËÎÍ·Ë—ëvÝM×Ò¥ .¹€â–?Û¬\SœOA \! îT+?¬§¦»-2ßñpëµ·ÆíŠvÿÀëŽLÀ]Æ=šþ‘„ߨÕýÿ ÿÿÑ„ëŠ@IDATìÝw€TÕõðeY¶Ð¤HQ¤ö‚ŠÆ‚‹"¨ÑÄ®c½×DM4½Ycbïù©ˆFQ4vш½ Š ÊÂR–Ÿ9wߺ3;å½{ï»çÜû¾ùcμrËûœ›Ù7‡q¦ÝÊïþW!ð£G¦YMš4IàìŸüyr w÷hTøGn#Üízûí·ÔaçÎKv|Ù5—ÒñŸÿöç×ûõà’çã ]÷ÿ<:\ûŒAZ/ž¾„ÚmýÕv¯¿ôz­~²Ú¯;<™‡;{4*ü# ·Qª{;Ü._F“º`}ñÓ'Üuåì´ƒ¿Ǥ½À=©Xéó/ýëé„Ç{”âCŸÌiðî»ïÒö¾gíMqúÓ)ê¾!¥ÆxH,`Zˆ\:©‰ž^zÄß(î¸ÃŽÑ!ÄxÝ)“â!¸§ˆ£køÇ@Já©î(¤ìº”º`C°-u p/¥“þ1ø§o\h¸RÑ߇B€¾Ë–(¸Ôn;^wÚš¸ØwÊÅÇ€q›4HuG! ͬ{Ü·Ôë1i¬©Ã=Sj'Á?5Ú’ý$Oâƒþ“úDÀ“7žOmÿ3³=Åz˜â9Tÿ)@Ãn hû£+?¥ˆOƒ³[…€•ËÕáÙôÏ*šûkOMuv >„מìÁÇ=þ‘„Û(Õ…·ëÀ›Ñ¤.Xo5' wM8KÍào 2a7pOVætÊ 9ŒBo"ðºÃãw÷hTøGn£TwÜ®oF“º`½Ôœ(Ü5á,5ƒ¿%È„ÝÀ=!X™Ó{ì1:㯧ìKñŽ~Mqç;j)Î^µ†b¯ãûS´õ†”:ÃClÛî o¨/Ü«ûþ4‡_ŸûëØsÉâ‰xÝáÉ:ÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷„`eNG!  Ã(ð&¯;<þpçqF…$á6JuG!Àí:ðf4© Ö@͉Â]ÎR3ø[‚LØ Ü‚•9}öìÙtÆf ¡øù‰ 9-þð|;ÚþÓ+ê»–u«¦íuÏÅÏæ@¥¼a»MwîÙÐÓo©<¾%mo»ãXŠõ#ÔÏ >sà7gªP1U}` bÒ§•´â»ê[ç7»~Ø=ã4¶ ‹?SßÐpùG4½W~ÚDqÊ 5Ûgg©O~<ò‘Š‹«ºÓ÷?n>A–™G¼îð¤î<îѨð$ÜF©î(¸]ÞŒ&uÁz¨9Q¸kÂYjK »{B°˜§£Šé4˜à›‡Åë?ÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷„`1OßaÛ¡tæ ¯¼I±Ç õk•;ÒvUsüâɯh{=|G9¸z°]øòß*;½­>òqÃ.êÑõñ˜ú„ÈÛkЮ»šDqõÕWNÉTÄëOºáÎã ÿHÂm”êŽB€ÛuàÍhR¬7€š…»&œ¥fð·™°¸'‹y: 1¡˜NC!€ ¾yX¼îðøÃÇ=þ‘„Û(Õ…·ëÀ›Ñ¤.Xo5' wM8KÍào 2a7pOVæôÇŒÎ8õ†“)Öî¬~ X3ÛoH‹ƒý¹¶Ýç^¥þ[ÿß÷[H56©_ 8âõW\z í?æ„“r'’Ñ-¼îð$î<îѨð$ÜF©î(¸]ÞŒ&uÁz¨9Q¸kÂYjK »{B°2§£PHÈax׸ó¸G£Â?’p¥º£àvx3šÔë  æDá® g©ü-A&ìî ÁŠœÞØØHG6=ŒbíáêWŠœÞ²ÛöÒ–Žñ¤¤€m÷÷O~›ÆëßE ûmÿNô¤n‡^G­Kñò?üMñG¼îð,¸ó¸G£Â?’p¥º£àvx3šÔë  æDá® g©ü-A&ìî ÁŠœŽB@¡»QàM ^wxüáÎã ÿHÂm”êŽB€ÛuàÍhR¬7€š…»&œ¥fð·™°¸'+rú!Çÿ”޼ÜçyеÔïÅ9½e·í7¤-ãII[îMê×f5G@·±ê×SŸˆ&±ìQõ]Wx-í¾ÍðèP&#^wxÒw÷hTøGn£TwÜ®oF“º`½Ôœ(Ü5á,5ƒ¿%È„ÝÀ=!X‘ÓQ(#t7 ¼‰Áë?ÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷„`y§ßyï´ç7\@±º¾ô¯ä5¯°õ†4¿_l—pí¾b‰úä@ͽibÏO|¡ô?Š×žÃÇ=þ‘„Û(Õ…·ëÀ›Ñ¤.Xo5' wM8KÍào 2a7pO–w: y žl¢À›(¼îðøÃÇ=þ‘„Û(Õ…·ëÀ›Ñ¤.Xo5' wM8KÍào 2a7p/ öè£ÒýöÞ“âíwÜIqÜ®»QüòË/)îtà«Ç«ß§®ß&˜ZЧr¹7¼ª~]âÈu&ßSŽ=5hçb‡×b2éî‡{º¾åz‡9¡tŽKuG! |{ß«Ôë=l™ €{ ”Ã?eà"Ýý0 …]BÙ‹Bo&ñºÃãw÷hTøGn£TwÜ®oF“º`½Ôœ(Ü5á,5ƒ¿%È„ÝÀ½0Øë¯¿NÞc{Šýº¨ñ°¹ú=ø9M ´ÿƒÞ¡XÓ'Þ¯ÐÉ­¸Þ¶šB&Ÿr»/S0©xèªÿ#ÿd*xÝáI7ÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷Â`(v e/ ¼™Äë?ÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷Ò`íÚ©O¬ü¥:ïªW«èÉ™ÿVßßÿ”A´Ýq­Žê„„ÜoHN7˜Ó¹Ý—|®¾+`½w7&Ó»o¼'Û8‚×8JöÏ»}Ó$=Â?‰–½s¥º£`/ÇAõ$uÁ…\àbà^Åá.ø;Än5Ü[axŠB@”v¡À›D¼îðøÃÇ=þ‘„Û(Õ…·ëÀ›Ñ¤.Xo5' wM8KÍào 2a7p/ ¶ézkÒ 7í8â&}Ôùs©8òÎöôdñ†«Pì¶÷jÛµ÷+ÜoHÕUdïQŠû·×Í!ü/ßT jÌÈi»~§q*ŽAqèСCyÀëO&áÎã ÿHÂm”êŽB€ÛuàÍhR¬7€š…»&œ¥fð·™°¸—C! ´¯GQàÍ^wxüáÎã ÿHÂm”êŽB€ÛuàÍhR¬7€š…»&œ¥fð·™°¸—;䀽脟ßKqõÎêüçVÒ“—æ¨ù{æ Ú^ûŒA;­×|"mò†´ø Ã<"Åý£ÓÕ¯N<´ûr‚žñµòž2«–žL™©~âÃ/Ôw |Û°$ˆ„àu‡'pçqF…$á6JuG!Àí:ðf4© Ö@͉Â]ÎR3ø[‚LØ ÜKƒ¡PÚÇ×£(ðf¯;<þpçqF…$á6JuG!Àí:ðf4© Ö@͉Â]ÎR3ø[‚LØ ÜKƒvö©tÂ?oº‚bÍzê×*ªØ±¿ú—Ûº*¶«TŸhW…ï(-Ë{”»°lúÀ§ç¿G_¢~…"R¹÷mµ~û?õ‰€_]p:ù´³¢S¼ŽxÝáIÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷Ò`(”öñõ( ¼™Ãë?ÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷Â`S_ŸJ~úëŸPìðÃÂç™îå~Cj:_Ûs»ÏI}Àz“gáMãÔ'ö¹Wý E‡Õ‡Ñþ»šDq•UÔ¯Røê?o¼î䋸ن»çb£À¿˜Lºû¥º£nÞ½í]ê‚õ4æÄá*¥ÓàŸl™ná^…€Â.¡ìE!€7“xÝáñ‡;{4*ü# ·Qª; n×7£I]°ÞjNîšp–šÁßdÂnà^l‹‘›Ó¦ýÔ·´WÖ¨_ (|¶þ^î7¤ú3÷»%·ûÜ[fàÐÏæS|êSõ}ƯNÛk|¾&ÅÉ>M1´¼îðdî<îѨð$ÜF©î(¸]ÞŒ&uÁz¨9Q¸kÂYjK »{a0 »„²…ÞLâu‡Çî<îѨð$ÜF©î(¸]ÞŒ&uÁz¨9Q¸kÂYjK »{.ØY¨oeÿ×âûè@Ýú5¹'XÞâ~Cjùr¼éŽÛý‹›>SV+UèuÈ9v‹_ZJÛ'lv2Å£?&ç¸ïxÝáÉ ÜyÜ£QáI¸RÝQp»¼Mê‚õPs¢pׄ³Ô þ– v÷\0r=BÝB!€7³xÝáñ‡;{4*ü# ·Qª; n×7£I]°ÞjNîšp–šÁßdÂn²âþì³Ï’̶Ûn[PèégÔ‹}ÂÕÇÒñcÔ³]ðd‹;¹ßZ¼¯ºâvoZ¢~% ²¶ôwO, Xÿçô¤wïÞ^9›lV^wŠ]?×~¸sÉ«qáÏã/Õ…žõ ~T© V<œáánhØþ†€šÍ³âŽB€æ ´ ¼‰ÍÊë¯rÛÑáÞÖÄåø»Ôþ~,©î(|Ÿ#Éò¨ïØÿÀñ¢SúëŽT|¸ófþ<þRÝQàYâG•º`ÅÃN†Íáo¨ÙÞ‚BoêB}ÝáU-?:ÜË¥yüÓÔ-Þ·TwŠç,ÓG¤.ØÐ“wÞ ÃŸÇß7÷Ë/½„ ~v̱óýwÞ¡ýûŸ³/Ū5ÿÀ:mÉ{ðí ©˜>“â­·ÞBqŸý 8|Ü6ï®þ›êöÛÓ¶ÔßÞJuL:¯PÝ›–ªO´»­†H^ù÷«IiœœïÛ뎃ÀÝr‰!à_'ÅCRÝQH1é>w-uÁúlgîp£”Þ9ðO϶TϾ¹£P*›8W…€¸RéœçÛëN: î{…»{óÖ#¿µ†»çRÝQp·¼Iê‚õ Qc²p×@³Øþ1tå›ûO÷ß“®ndã}ÿõ©ú½ôOšzÓö¢‘êâk7ªVO„?†ú†T8{Eèî‹§ª_8xàa”гN>[TJ|{Ý…g0¸àYh  ˆ]HuG!@#™Yh"uÁ†nwÞ ÃŸÇß7wxÖIh£¢À›Qß^wxµìw{–:=Á_GͼTwÌsdRlØ­. î­0žÂŸý»!}s¿è¢¿ÔÌ{Ï¡ø×QË(Þü†ú6õ£¦ÍŠA' ¤'7è¬v} ý ©Pöà?¹/»[=»ïÒèÉàÁƒ£C¬Ñ·×V,‹ƒÃÝ"¦FWð×@³ÐDª; ’bRlˆÖ­¯ î­5Ü?‡¿{óÿè›; <ë$´Q³R€A! ´•kv=¾½Þ›]­¼ÖðçɉTwxÖƒøQ¥.Xñp†„»! asøj6÷Íýñǧ+ýã‰{Sœ´¯úu€èò?œ¯žírW%=iº ÅUè"*få ©(ôï&“÷Æ9K‰~ÅõßPÜuõÿ›úÔ—iÔ××Óþž={RtõàÛëŽ+—´Ç{ÚÂ¥û‡iŸ´ŽJuG! ­Œ{Þ¯Ôë9kÙéý,Qª'À?UÞ¢ûæŽB@ÑTâ@PH°\‚9Õ·×û`à›/þ<•êŽBÏz?ªÔ+Îp‚p74lC@Íæ¾¹ùå—t¥ë Zâº}Ô樂=W4©Tt]CýŽzû!ê;zíÕGS(ÝfYyCš®bòÞ³âþÍ[ßNÇ 3(Žß`%Å)sºªø±úu^={Ðö^ûìOñ7TßÅA)<øöº“K—pgaoþ-NŸHuG!Àé2ðg0© ÖA½™Â]ÏÍV+øÛ’LÖoî($Ë/Î.,€B …WFØ{}{½-ðçɨTwxÖƒøQ¥.Xñp†„»! asøj6÷Íý±Ç£+=ö¯GS¬ÜXý gÇþµ´]ÕµJS‚§YVÞòè5+îsïW•9dŠnŸkróÛÓŽCïSŸ¬¹å¦iû€Ÿü4÷DË[¾½îX¾|¶îàÎFOßÇ_ª; <ëAü¨R¬x8à ÂÝа9ü 5›ûæŽB€f¢Ñ,G…ÅB@β~÷×ûОŒJuG!€g=ˆUê‚g8A¸6‡¿! fs_Ü—,YBW¸ùèaëŽPÿ’©yÙbšeå ©ðæ‰dÅýó?~HW|Ó‹)®¥¾  bÿÔwh¬»åXÚãm÷R¬¬lþ’ ÚJïÁ—×ôxz†;{4*ü# ·Qª; n×7£I]°ÞjNîšp–šÁßdÂn|qG! abqzIP(¹@=èËë} üðçɬTwxÖƒøQ¥.Xñp†„»! asøj6÷Åý§ÇLWøJß(Ö¨Ö¼bYͲò†T–zEEVÜß8rÑŸ¸ÊÀõÓÔ¿ø÷ÚŸvÜú‡Û)nµåVêG¾¼î8âp6 ÜQþYRß)Õ…€ÔSïçR¬Ÿšñg ÷øViœ ÿ4TË÷é‹; ås‰3â  €B@üÕΙ¾¼Þ‡#ž{%ðÏõpµ%Õ…W+À³q¤.XÏOî‰É¬6€¿UÎØq¹/_¾œæXUUú[þï¸[ý‹åo'^HçWׇñÝQ‚²ò†4º^)1t÷%³‰ú³?}D±çõåÝ܇¶W4¬ X÷à*Ÿ{ä?]=p½î¸º>©ãÀ73ðçñ—êŽBÏz?ªÔ+Îp‚p74lC@Íæ\î(¨„…þ†TsY¦Þ,twR_B^Àõzï%V “† ¨1º”êŽB@Œäeñ© 6ô\À7Ãðçñçr¿úo—Ò/ZÔ@ñ´³ÎÉøâ‹/h{äø(VÏ9ÌFèoH¥&*+îË6ò¦káOÞ4¼¬>9pô†ÇQªN<ú$')ãzÝqrq‚;oràÏã/Õ…žõ ~T© V<œáánhØþ†€šÍ¹ÜQP ËÊRÍå™Z³¬¸£Úò²c®×{/±R˜4üS@Ñ¥Twb$/‹§H]°¡ç??—û™§LüÔ=×Pì³ÖæïŸ8™â^‡ìIñáïP¬éƯÐÅ´zÈÊÒV—,â)ÜsÓ°ìŽv´ãáë¡Ø¯_¿Ü,oq½îX¾ ﺃ;oÊàÏã/Õ…žõ ~T© V<œáánhØþ†€šÍ¹ÜQP ÃRÍ…kØ î¹€(äz„ºÅõzªgÒë‚R1;çKuG!ÀN~ƒëEê‚ :ï‚àžâxþŽÁ›‡ãrŸ0aÍàÿ.:šâë|KñGw¨‰ Ó—žôØ¿§Úè#Þò$î¹î‹gªï :}¸íZõk¹gÙÛâzݱw~öwÞ¼ÁŸÇ_ª; <ëAü¨R¬x8à ÂÝа9ü 5›s¹£ †7¤š ×°ÜsQÈõu‹ëõ>TϤ×ÿ¤bvΗêŽB€ü׋ÔtÞÁ=Äñ&üƒ7Çå>mÚ4šÁ~ã†S|ó°…9cînOÛïuéHqÕ£æeoHy2 ÷ÂîO­ ¿Ûç¸Ë Ÿh¸—ëuÇpÚÞ7‡;o áÏã/Õ…žõ ~T© V<œáánhØþ†€šÍ¹ÜQP ÃRÍ…kØ î…Q(ìÊ^®×ûPüL¯þ¦‚zí¥º£ —Ïà[I]°¡ÃÃ7ÃðçñçvïP¥þåñÏ›à›¥ÊáõÙ*^ûšú6ó>Rqý¿mÀ•Ò¨xCšl™ná^hÁ¿¢Øó§GŽC±¾¾žbUUEÝî×ÝyûÞ?¿TwxÖƒøQ¥.Xñp†„»! asøj6çvG!`:ení3ifÍtP(­†B@i_r¿ÞûêfkÞð·%™¬©î($ËcfΖº`COÜy3 n÷­7Y‹.üÝ?¢Ø¸RýË·5ªi»ýõ†¨Øc›n•.ø ó¤X¹ƒúŽ€êx ˜FÅRx¸vo˜±„,»Z}Bçý#Õÿ/£³¿Z¬žýèÞÎô¤Ûš›Q|ð±§£SbE®×X“ ø$¸ó&þ<þRÝQàYâG•º`ÅÃN†Íáo¨ÙœË…•0¼!Õ\¸†Íà^…€Â.¡ìåz½ÅÏô:ào*¨×^ª; zù ¾•Ô:<Üy3 .÷-FnNÜ´¿úÈÊêJæQñ†”'p/ìþåãóèÀÎ﫟í¸fìJÚþýsêÿŸy¡–¶o¼ùVŠ»ïñ#ŠI¸^w’Î3´óáΛQøóøKuG!€g=ˆUê‚g8A¸6‡¿! fs.wTÂð†Tsá6ƒ{a@ »„²—ëõ>?Ó뀿© ^{©î(èå3øVRlèðpçÍ0üyü]»Ÿ}áYt¡5ÜG±nýž 2*Þò$î…Ýç^ñ øY—o(^û¦ú$ÀÊ~]hûüÿLñˆCޤ¨ûàúuGwž¡µƒ;oFáÏã/Õ…žõ ~T© V<œáánhØþ†€šÍ]»£›(¼!Íõpµ÷ÂÒ(v e¯ë×ûPÜl]ümI&ëGª; Éò˜™³¥.ØÐwÞ ÃŸÇß•ûä§'ÓžxÍq;ŒQ¿OÎsÕrFÅRž\À½°ûg¾KjjÕÿ?{=¶kWWŸÜY¦¾ â‰ OÒþUW]µpGeöºzÝ)3̆;oÊáÏã/Õ…žõ ~T© V<œáánhØþ†€šÍ]¹£P8AxCZØ%í½p/,ŒB@a—Pöºz½ÅËöuÀß¶h¼þ¤º£/™;Kê‚ =pçÍ0üyüMÝ'OVÿÒê GÓ<ñô(vëÖbS“úòê7¤íŽ?«¢ˆ%€7¤<+î…Ý>Q¿âÑq úu€ü³ÒH»¶üb8Å/ÿGþ)±¶M_wb ‚“ÚÀ½ ‰ÓðwÊÝ2˜TwZR„'­¤.ØÖs ñ9Üy³ SwÌò†7¤f~º­á^X…€Â.¡ì5}½Åë:àÏ#/Õ…žõ ~T© V<œáánhØþ†€šÍMÝÿýïÓÈg¶Åæ-£xÉ¥—S|öÍ—(Né¢þ›âŽƒ ÿK#”Á¼!åI:ÜÍÜ—>¡>ésÑO/¥ŽF•¨CÓ×Dƒá丷P°” 5©˜Ýóáo×3nop+•ÎyðOǵ\¯¦î(”.}oHKû¤uîf²(˜ùqµ6}½çšw(ãŸ'“RÝñ‰žõ ~T© V<œáánhØþ†€šÍm¹¯Ñ»;Íà…Ÿ, Ø¯‹šÐ}ïªß#ßóvõ/ˆëœ8€tÖUñG¼!åYp·ã¾èÅÔÑ}¦xÞçÇêØÖëN¬ÁpR‹Ü[(XžÀŸ…ŸHÊŽ…šTÌîùð·ë·7¸Ç•Jç<ø§ãZ®W[î(”“.|oH »¤½îv„Q°ãèª[¯÷®æÚ8ðçɨTw|"€g=ˆUê‚g8A¸6‡¿! fs[ܖfpd¯ç(öí¬&ôú_˜£þ[â;§©í5ÏBOjV¯Q;2úˆ7¤<‰‡»]÷¥w©_»Á.Ôñ¾ûîGq‹-¶(8­×‚cgQ¸¥qrþN˜Û "Õ…€6©ÂŽÿ H]°¡g?¿-wôò‡7¤zn¦­àn*˜Û…€\©[¶^ï¥^ŸôyÁŸ'CRÝQàYâG•º`ÅÃN†Íáo¨ÙÜ–ûi§O3¸ô’+(ö¨þ¥¿j@mWR¿"б-m× P±²Z}R€vfðoHy’w»î³/þ˜:ÜhQÅy+Ôw€üwæ"Ú®ÿÁ&·ÞnÅçž‘bôó£´‡Ôl½Þ§>Ñ@€?Ob¥º£À³Ä*uÁЇ3œ Ü  ›ÃßP³¹-wô€7¤zn¦­àn*˜Û…€\©[¶^ï¥^ŸôyÁŸ'CRÝQàYâG•º`ÅÃN†Íáo¨ÙÜÔ}æÌ™4ò¸#ÇR¬Vÿi°æl²× oHyrw»îïŸô6uøöá+(®Þü«!j³âÌ'ªhÿU/©_©±mãÄàìÁôõÞÙDþ<‰•êŽBÏz?ªÔ+Îp‚p74lC@Íæ¦î(hÂ77ÃR3?ÝÖpו+Ü…€Â.Òöš¾ÞK»ß枌IuG!€g=ˆUê‚g8A¸6‡¿! fsS÷±ûîL#ÏÚæŠÕ=:hÎ$›Íð†”'ïp·ãÞøÅRêè‹ß@qö ê×Þœ«ú?äõ][Üv\ñ÷R4}ÝQ½ã1©Ü“ŠÙ=þv=ãö&Õ…€¸ÌØyRlèi€;o†áÏãoêŽB€YÞð†ÔÌO·5ÜuårÛ¡ë!}Ëôõ^úõIŸüy2$Õ…žõ ~T© V<œáánhØþ†€šÍuÝ/¹êbñïo_M±vójÍd»ÞòäîvÜç=·€:ÚâÅY{©©¸ó}õk ;݃ößyóÝ9ê¾îät‚ÄpOLfµü­rÆîLª; ±S˜­¥.ØÐ³wÞ ÃŸÇ_×…;ùÂR;ŽI{{R±Âç£PØEê^Ý×{©×ãÛ¼àÏ“1©î(ð¬ñ£J]°âá 'wC@Ãæð7Ôlžïþå—_RO«®ºjÁß~[};øþçìKÇ;ü¸àiØSoHcBY> îv@?¿îSêhÞ‹ )öÛ³7ÅîãzQ\:Q}gÀUÇ_KÛÛß–bþëíÄCêpO¸äð/É“ÚA©î(¤–r¿;–º`ýV-?{¸—7Jó ø§©[¼ï|wŠ[¥qoHÓP-ß'ÜËÅ9…€8JrÎɽ—3³lÌþ»Sî6ƒÁ¿ ‰“ùîUUê_ôŽÞ™Æ·imŠ?3šâßÜC±n£Šx0ÀR3?ÝÖpוÓk×0U}rà°ÁGQœHoHõt“©åÊ-WP¬©ÇwhRj5C!@‹Í¸Ü µ:X±¸‰Ú½qÜ[;HusÀƒ•ô¤{ßÕ)¾ûö§ê­ àï¬UÎÄÁ?1™•RÝQ°’Þð:‘º`Óν"¸çz¸Þ‚¿kq5 <îѨxCI¸pwë†B@$Áñw–Ç=þ‘„Û(Õ…·ëÀ›Ñ¤.Xo5' wM8KÍào ²¹›çž{Žž >¼`ÇsçÎ¥ýCÖBqÝ‹<;ÓÀÒt}‹õ÷b2éîÿúoh€—Í Øk­ZŠ=Ž@qÅÇê;Žz"mwäqñ`Ggí8êö]9³vRÝQ0Ëk°­¥.Ø`Á›/ ¿]ìz¦ÕÞ¦%[º_¸—öIë( iÉÆëgã9¥uüÓ’-ݯTwJç-³G¥.ØÐwÞ Ãß®ÿÕ{Q‡=ºªoß~ø‰)´Ý¯_?Š»´;Å'_|‚⺿Lnð†Ô­w4Ü# ·qEƒú.’wû ¼Áo×.8e·©Ýÿ¡~ï¾oß¾ÏÃÎdø;›ÌËöÙð·-¯?©î(ÄË_æÎ’º`COÜy3 »þ(ØõL«7¼!MK¶t¿p/í“ÖQÒ’×/þÎÆsJë,ø§%[º_©î(”Î[fJ]°¡'¿]ÿŽÙŽ:Yù Å¿¼Ô‘âöcÇQ|½Û)~:yŵÏDnð†Ô­w4Ü# žXÎñgKhb›ÎøÅ[¯™À3ÑÀFÅßYބŸÇ_ª; <ëAü¨R¬x8à ÂÝа9ü óš£"t³Ü"¡Óö~ZpçMa9ÒÉþΦã·WøÇ•²{žTwìæ9˜Þ¤.Ø`€‹\Ü‹À8Ú »Ðçþülê°î…?QüÅõm܇þ«=mOj¨¦¸°Bý~÷:g­IÛxp+Pî ‘ÛÙdg4¸óæ:®ã“ê;þ¸ÿ_h»ŒÝ…w➎¿³¼ „?¿TwxÖƒøQ¥.Xñp†„»! asøæ5G! DèfÜ7DB§ïí´àΛº¸þ(ØÍþÎÚõLÚü“ŠÙ9_ª; vò\/RlpÐy÷<Ç›ð· ~×]wQ‡wýáŠwþpaΩ/í®w‹Ú½ÖqýéI—-VÉ9é Ä}C”î,²×;ÜysžÔñÕê“ÓþóïÄ=gy©î(ð¬ñ£J]°âá 'wC@Ãæð7ÌkŽB@ˆÐͤoˆ„^†wÓ‚;oÊ’ú£`'_ø;kÇQ·øëÊ™µ“êÞnÔ¨Qê?Ú4»>ë­_}õUêsذaÖûF‡åà_Þ(3àž†jü>áß*Ι tÚ+/=O±o§&Š_/mGqÑR ËW¨?CÕ]ÔwÔô¯SðèD aúb§ã ¸;oî.µÛŽ•ÔÅ·êõ«ûÊÔÙšÕwšÔÔÔ´í{Š àïlQ'àï„¹Í RÝQh“*ìøŸ€ÔzvàΛaøÛõG!À®gZ½%}C”Ö<²Ö/Üy3žÔ…;ùÂßY;Žº½À_WάTwü§fy ¶µÔ° Þ|apçÍ0üíú¿úšúd×^‡Ž£Ž—¯­> P7PýËs]ÿZÚ?ýºÏ(®}Æ Šxp+ô#ÒngîhpçÍmRÿ¦¥êŸžþ.M¼}eŠ:u¡X__¯âNc)î4r$Å!C†PăÀßYÞ•©î(ð¬ñ£J]°âá 'wC@Ãæð7ÌkŽB@ˆÐͤoˆ„^†wÓ‚;oÊ’ú£`'_ø;kÇQ·øëÊ™µ“êŽB€Y^ƒm-uÁ Þ|apçÍ0üíúo¾“úŽ—•4RǕՕHzC^°ìÔ€¿6QC¸ñ7Nê¿ð¿ßÒ˜½ø”â³ãÕ¯|4_MeÊ ¯œª>ñTÕg}Ú1åùWÔ<’þÎò.øóøKuG!€g=ˆUê‚g8A¸6‡¿!`^sò@„n&}C$ô2¼›ÜyS–Ô…;ùÂßY;Žº½À_WάTwÌòlk© 6Xðæ ƒ;o†áoÇÿ¬_Iý«ñ~Šuë•þVí¤7ävf‰^"øGn#ÜÝzç–Ôî=³©‹#Í£xþõk'/ÎT=òhWz²Û^ã)þé’+Õ<æàïl‡ó ø;'§¥º£À³Ä*uÁЇ3œ Ü  ›Ãß°¹9 v]õ’ô ‘«y…>Üy3œÔ…;ùÂßY;Žº½À_WάTwÌòlk© 6Xðæ ƒ;o†áoæ?ùéÉÔÁ ×K±zLáïÈ%é y~{l› ÀßÌO·5Üuåì´Kêÿùï> oÝf ÅÞR¯o?¨¢íyšâV[mE…ðw¶°‹«½ðw%;ŽTwró„­f© 6ôÁ7Ãð7óG!ÀÌ«uÒ7D\ó m\¸óf4©? vò…¿³vu{¿®œY;©î(˜å5ØÖRl°àÍwÞ Ã¿°ÿƒÜGú÷Hq³aê×¢³›šÔïko\¿!íªû™ú²èx¹˜ô†¼\8žLþɼl w[’zý$õí°7i ÊÊvØ—bÍàN·™¿=Å¿_òwŠx(,€¿³…]\í…¿+éÜq¤º£›'l5 H]°¡'a »„²7é¢P®›û:àΛ¤þ(ØÉþÎÚqÔíþºrfí¤º£`–×`[K]°Á‚7_Üy3 ÿÂþ‡Žß—L|ä!Š'œ|:ÅsÎÿ5Å£N=Šâ”®ORì¸f-ŸIoÈãö‹óâ À?ž“í³àn[4YqýW,QŸxúâþ94@Ÿ½Õ'ÚU©OD£.´‚ž^zÄwÜaÇèb+üm…Áðþ èß )Õ…žõ ~T© V<œáánhØþ…Q(ìÊÞ¸oˆB¹^)×wÞLÄõG!ÀnžðwÖ®gÒÞàŸTÌÎùRÝQ°“ßàz‘º`ƒƒÎ» ¸ç8Þ„aðË/»Œ¼Ç™;×6KöŒn´Ý´yGŠÇÕPLú÷† î¶E“õgÛåò•4¦ª×ÇמššlB9gy ©î(ð¬ñ£J]°âá 'wC@Ãæð/ ˆB@a—PöÚ~CŠKÚ×÷´…K÷oÛ…€ÒÞÑQü$x"üáÞZ…€ÖxÞ"€Š §Oàî”»Í`ðoCB;ž~Zý>öyGîNÛ“øšâ 3ÕùcïP¿§ÝkÏ>´£ëŽ=Õ˜¶oÈc‹ÓšàϳàÎãš–ÿâ7iˆƒÖ8”â9§œ ‰øþÎò.øóøKuG!€g=ˆUê‚g8A¸6‡a@ »„²7­7D¡ø¤upOK6^¿iù£PÚgKû¤}þi î_ª; …ó•ù½Rlè‰;o†á_ØÁ‚t`Íþê۲矦þÅ+:{aóæÞ÷«OLk§¾+`µ³†D§”ŒiÝ—[àßBáô Ür·,mÿå÷ª_¸û¯÷ÒØk­µV›9dqþÎòfþ<þRÝQàYâG•º`ÅÃN†Íá_…€Â.¡ìMû Q(N¶¯î¶E“õ—¶? …ó¿³…]\í…¿+éÜq¤º£›'l5 H]°¡'iÿ5z¯B' êò-Å÷ç«ó.Vß–Ý} õI€výjéÀj‡®¡N(ó˜ö y™á3þ¾Mû ‘¯.iÏîi —î?m ûãïlaW{áïJ:w©î(äæ [ÍRlè ‚;o†á_Øÿ³Ï>££ÆïDqùfê_º:Pÿò_ݳCá†1÷¦}Cs™= þ<©‡;{4ª+ÿùšNC~ö^Å ×D±~{õzZ¿ãhÚÞa‡(öîÝ›b¨ø;Ë›YøóøKuG!€g=ˆUê‚g8A¸6‡a@ »„²×Õ¢P¼l]ÜmIêõãÊ…€Üüàïl®‡ë-ø»WãIuG!€g=ˆUê‚g8A¸6‡aÀ÷C>>ƒbu³Oäâê†<\l+øó¬¸ó¸G£ºòí°7iȥ窑ߘ£âõrZñðôN´ãÅYêWæ-øFè#þÎò&þ<þRÝQàYâG•º`ÅÃN†Íá_…€Â.¡ìuõ†(/[×w[’zý¸òG! 7?ø;›ëáz þ®ÅÕxRÝQàYâG•º`ÅÃN†Í០xñ•ÓŽëß½šbí°êÜ,m¹º!·4Ýàº?OJáÎãš¶ÿ¢ÓPíošNñÍCWDCSæ”èPÐ1ô¿³Ò“ž IuG!€g=ˆUê‚g8A¸6Ý…Ãhó´ßÊf|Yp7&4ê m §'ô¿³…¯ZÎ^øóäBª; <ëAü¨R¬x8à ÂÝаyèþï¼ó ýxä–ïýñ7w»«#Å•ýºPìqR/Š®Ò¾!wu¾ŽžlTA@IDATÌÁÇ=UŠÿ2õA­Š]ó0M­õÑe0ÅªÎøÕ‚ôAÊ¢@y‹^Ü‹Ò89 ÅÉ,õ]|° ]÷×ßåäú¹ÉÊßY.ßr㿜P:Ç¥º£N¾½ïUê‚õ¶ÌÀ½ Pʇ³âB@Ê É³î¥¼!òŒÍxºp7&4ê@Š? FiDã„Y¹ÏIÈ’úéRÝQH=õ~ uÁú©Öpo•Æ™Yñßrè:ÄwÅÖïSܨ·Ò|cŽŠ÷¾­âÅ/¶SÇ/^beJŸ rC®®:{ðçÉ9ÜyÜ£Q¥ù7N^NSûÍž ¸Çn{DS *fåï¬Ô¤ÁŸ'3RÝQàYâG•º`ÅÃN†Í³âB€áB ¬¹´7Dñ½¸¥qr@š? NÒžùA²rŸ#-ÑRÝQ¶R„ÌGê‚“Ú4àžm¬Ž³âä!û“Ç}÷¨ÿuaãJÚî¹F5Ūþu+ª_è±­úýëöµê;è Åi7ä/Í‹®àÏ“&¸ó¸G£Jõ_|údÀϼISmß>Ýïh‰<\Ŭüuå™tø'³s¾Twìä7¸^¤.Øà ó.îy Ž7³âB€ã…%|8©oˆ„³OîÆ„FHõG!À(­h\F +÷9eœ–êŽB€ó¥àÇ€R¬zú³„»¾–¡û/^¼˜˜~0f Ší~¨þ婦ú$€ C>¤Þë\‹màÏ“5¸ó¸G£JõŸ÷è|šâÜûfSÜ|è·Ýa4ÅúíwR±¾žb§N(VU©_ƒ¡ Á¡ÿLOSƒ?O†¤º£À³Ä*uÁЇ3œ Ü  ›‡îB€á ´¹Ô7Dr·\Ü[(XžHõG!€e9dfÐÐïs¤&Rª; RW ó¼¤.Xf–Ô‡‡{êÄ%Ýÿ'ÇD×ÿÚê/R¬í_SÒÃÕA©7ä®®Ÿ{øódî<îѨRýç\6¦xéZßRì¥þÁ¿âÙÏÔw´L™Ý…ö?ñî"Š'>Fq»v¤(ý!ô¿³ð—.À3?©ë…žõ ~T© V<œáánhØ<ÜS'.9@¨þ·ß}]÷o'þšbM½¬o¡–zC^r±tþ<É„;{4ªTÿwOx‹¦øáÏš(önþDÀ“ÓÕÌ}¤3=9äˆc(þü—¿¡X]Íû]/jvåCý;[þÊeœžõÝ,éGûšô ÅRôí!´¿³ð÷M€g¾R×= <ëAü¨R¬x8à ÂÝаyhþ(.ˆŒ4—ö†(#ìøDs¢¥­{˜DF†í>Ç—´IuG!À—äxžR¬cçÃÁÝ9y΀¾øôÑG4ï½÷Ø…âu7ÞBqó-¶È¹žôCÚž¾é{kzÉüoH¥Ýç f`þ0øpõI€ºéÝiÿã·‡R\míµ)^ùÚ¥k·”ùIšÜwÒnÈ£ye%Ÿ'ÓpçqF•æÿõÐÔ½¤âê'ЦJ±aÆŠ[ÎNñ»)ç¸/¾üõÅ3é<áŸTÌÎùRÝQ°“ßàz‘º`ƒƒÎ» ¸ç8ÞôÅ…Ç #ð᤽! œ»åòàÞBÁòDš? ,Ë sƒúrŸZb¤º£ÚJ³t=R¬¥ËÛ ÜySã›ÿšýÔ'žÜçK‚»ù­ZŠ—¿¬þÛÒ¾ç ¢íšÞøDAà¡ €´7D'àN¸ó&UšÿÊå+ ¤]U»’0KŸP¯ï9øb:ǫ1%Ï—vз¿³ÒüLçSA½öRÝQÐËgð­¤.ØÐááΛaßüQà]/¡Œ.í Q(®å®îå„Ò=.Í…€tóÞ•€o÷9¡äMª; ¡¬0Ë×!uÁZ¾LqÝÁ7%¾ùÿhìŽvh÷§(î±®ò{s®ŠcîT¿?Ýi¤úäÀ*»¨¨ŽÊy”vC.GÆÍLàïÆ9¸ç‹¸ÝöÖ_}p ¢ñ:õä¿Ï¾éÎp4ßþÎ^®¸æðçI‰TwxÖƒøQ¥.Xñp†„»! asßüQ0L8š“€·oˆ<ÏÜyè­? ¼ ÇóÑ}»Ïñœ»eúRÝQhIž´º`[Ï1Äçpçͪoþ¿<ïVùìï)þx]u‡8u¶r|e®úoMo{KÅÎcÔ'zûd€·7ä¼ËÕÚèð·F™¨#¸'â²~²ïþ o6’ɾ= ø«³/°n”F‡¾ýMÀ³OøóèKuG!€g=ˆUê‚g8A¸6÷Í…Ä£9 øþ†È×4Â7s¾û£À»~|Ý·û_óç-Õ…€üLa›¤.ØÐÓwÞ ûæû·Ø1GD±Ã*ê;jÖ)È)Ö5o×®^Ó|^•:.äÑ÷r!ŒÚÓ€¿6QC¸ñ7ÅÙ}ŠâößßIOÖ_}c›4;ðíïlš}ßC½¢Bª; <ëAü¨R¬x8à ÂÝа¹oþ(&ÍI ”7D¾¥î¼ Å…ÞuäÛè¾Ýçøæ[l¾RÝQ(–±Œï—º`CO Üy3ì›ÿ°7S`ã—Q¬ì ¾ €W1ùè¡Ü'¿r-àÏ“¸ó¸G£†â¿x–ú®€o.ýœ.m“¡êïBýNãh»~Äv·ÝvÛèÒY£ogY±Rþ) ÆèRª; 1’—ÅS¤.ØÐswÞ ûæBïz eôPÞù–¸óf,xבo£ûvŸã›o±ùJuG! XÆ2¾_ê‚ =-pçͰ/þgüòt‚zxÙƒëÖUÿí?¯žþè¡Üë ð¶„??ÜyÜ£QCñŸ÷캤Íþ3‹âa7Qœ2³ƒŠ³;Q|ö=uÞ)'MÛ]vE×¾üuíâj<ø»’ÎGª; ¹yÂV³€Ôz‚àΛa_üQà]'¡Ê"ßòwÞŒ…âBï:òmt_îs|s-7_©î(”Ë\FK]°¡§î¼–îÿää' è¤ëާX=ZýJ¯šùè¡Ü›Kðô¸óðŽʺŸ{ý§y~·¯)1,×õØÇ»ÐŽ—ö¥xÓPäúuégsõÂÛ‚?ON¥º£À³Ä*uÁЇ3œ Ü  ›K÷G!À0Áh^P ”7D/NðN¸ó&'xבo£K¿ÏñÍ3î|¥º£7ƒ;Oê‚ = pçÍ0—ÿÇL¾æškX±bíºÝF뎪*xž¯;C¹!‡¿¯<óƺçqF ÅúYïÐ%=»ÏrН|®~=æûÕ•^zÉÅôä˜ãOR;˜¹þÎ2_¶˜ááÏ“ ©î(ð¬ñ£J]°âá 'wC@Ãæ\þ(L§Ì­}Æ Ã ¢¹Ž@(oˆt®³ Ü9õ+*BñG!€wù6:×}ŽoN¶ç+Õ…Û™¤?© 6Þ¢—÷¢4Npùo°Ö@º¾‘#w¤xù5ÿȹÞ#O>‚¶Ÿë6™bÝšµ9Ç}ßå†Ü×<ÀŸ'spçqFõÝù7ê“b6"`ã~ê;cfv«£Kì:¸?Å+¿†âˆúÑ¥³F®¿³¬-hpøó$Cª; <ëAü¨R¬x8à ÂÝа9—? Ó)søD€áÖlîû"ÍËfowÞøîBïúñut®û_½lÍ[ª; ¶2X?Rl`Ìm.îmHœîàòßzÓõè:‡wQßpßG]iû¤³~Nñ†©×Q¬Þ¾=ÅÐ|¿!÷=ðçÉ ÜyÜ£Q}÷oød ]ʬ+>¡Øçà~»lÔ™bÓÒ&Š•·«O½üÄ+´ÍýÀõw–ûº¥ŒžLHuG!€g=ˆUê‚g8A¸6çòG!`:eŸ0\ÀšÍ}C¤yÙìÍàΛßýQà]?¾ŽÎuŸã«—­yKuG!ÀV†ëGê‚ Œ¹ÍåÀ½ ‰Ó\þ?;ô ºÎÍ¿¼•â˜!ê²GÞ¢>ÐnDwÚÑíGêw ÕÑp}¿!÷=ðçÉ ÜyÜ£Q³âß0µ‘.ùA‡S<ó¤³"–Èõw–åb ž¤HuG!€g=ˆUê‚g8A¸6çòG!`:eŸ0\ÀšÍ³ò†H“'µfpO6VÇYñG! ÖrÈÌI\÷9™.r¡RÝQ(’°¬ï–º`CÏ Üy3ÌåÅßþFþömgPüÛhõß~FgLVß}ó‡U´«ïƒ)v誶£ó|Y¹!—šøódî<îѨYó_v·ºòû.}€ž ¬þŽD®"×ßYW×'}øódHª; <ëAü¨R¬x8à ÂÝа9—? Ó)søD€áÖlžµ7DšLÖ›ÁÝ:i¢³æB@¢åìÉ\÷9Á‚Ƽ0©î(ÄL`ÖN“º`CÏÜy3Ìå?eʺðMñì­Ô'^£<žŸ«¾+àõY+iGÕêê[ žÃó/:jVö³vCnOÎNOð·ã˜´¸'³{~Öüç,%À!oª_©¹ÿfõÉ»ªå{ãú;[~fÙ8þ`¸€5›gí ‘&“õfp·Nš¨Ã¬ù£hy{2×}N° 1/Lª; 1˜µÓ¤.ØÐówÞ sùüñÇtá;l?”bSŸf‡éIí€:ŠuýÕ'ª{th>!ŒµriYƒ?OFàÎãšUÿ%Ï,'‚ów¹€â¾{î‘8‰\g\œƒÀŸ'IRÝQàYâG•º`ÅÃN†Í¹üQ˜N™Ã' °fó¬¾!Òä²Ö îÖ(µ:ʪ? ZË%˜F\÷9Áj^ˆTw4z3© î¡ ð^׺³·ún€9õŸ@‡îaý‹¹¬fõ†¼œ‹«ãðw%;Üs=\oeÝþ¯fù&nNqäØ=(Ö¡öo² EÛ\gm_‡¯ýÁŸ'sRÝQàYâG•º`ÅÃN†Í¹üQ˜N™Ã' °fó¬¿!Òd3nwcB£²îB€Ñòñ¶1×}Ž·`–&.Õ…K ­© 64çüë{¾ˆÛm×þ]q]à ï_C±v³j·,d´¬ßs§þ<€;{4jVý—»‚><ãŠ×í¢~fÊçê;h¦Ì¬¡ýÌ]Lqäöõxä Š¦®ÿΚÎ7´öðçɨTwxÖƒøQ¥.Xñp†„»! as×þ(¨„eõ†Üp¹Zkk”‰:‚{".ë'gÕ…ëKÉ«]ßçx…“âd¥º£bÒ}îZê‚õÙ4ÎÜáG)½s\ùO{k]ÄçîO±ƒúO3Ó»0á=gõ†\JZàÏ“ ¸ó¸G£fÕÁ« ‰`ФÏ(>¾oSDBñ¡÷ÛQ<ô!õÉ€s~q.mŸvÖ/rÎÓÝpõwVw~¡·ƒ?O†¥º£À³Ä*uÁЇ3œ Ü  ›»òG! 7QY½!ÏUàÛ‚?=ÜyÜ£Q³êB@´²]ÝçdS·øUKuG! xÎ2}Dê‚ =)pçͰ©ÿ›o¾I°ÑF•¼­wÞŠŽ7þø[Šíë*KžúÁ¬ÞKÉ+üy2w÷hÔ¬úϽýs"8¡iÅ£†)‘}îiOOj §xãm÷QìÙ³§:ÁÒ£éßYKÓÈl7ðçI½TwxÖƒøQ¥.Xñp†„»! asSôÕr=-û­àoß4Np£”Þ9YõG! ½5åCϦ÷9>\£Ä9JuG!@âj0'© VMªS€{ª¼e;7õßmôö4Æäç^ øð#)ŽØNí?ïwçÑö=óo§Øq#õ-Í´‘ᇬÞKI9üy2w÷hÔ¬úϼà}"Ø«ÏRŠ×¿®DúìØ—žœ¶ûÙOøÙ‰ê€åGÓ¿³–§“¹îàÏ“r©î(ð¬ñ£J]°âá 'wC@Ãæ¦þ(è% «7äzZö[Áß¾iœáG)½s²êB@zkʇžMïs|¸F‰s”êŽB€ÄÕ"`NR¬šT§÷TyËvnêÞ/Ρ1šžýÅg>ïJqà¦ÛQ|½Ý‡«Ç©oe¦ %uÁúd¨3W¸ë¨ÙkcêB€^.2wC®Ç”Z+ø§F[²c¸—äIý`æüQH}Mù0€é}Ž×(qŽRÝÛ5ªù¥AÛ«¯¾J6¬ùëLeM/øÙÀŸ'ÅpçqF5õŸ;w.u5ûã·(íµœâôj„O¾QŸ¨PG;Ú×fû×”JEEÃôÅô´ã åíGt#7Îù£À=_ÄívVý›–©ÛþÊ…?™¶bI%¢ó’.7^c«‰1ý;ku2ì þLJk”8G©îøO$®s’ú4©Nî©ò–íÜÔÿý÷Õ·1ïºýæ4Ö{G}“3æGóÕæÈ;Ô'*·éA;ºÿH}[sÎÉÚÈÜGt…åþ< ;{4*ü#‰Â±ñÉtàûý™â®ãv-|b½¦g‡ÓóàŸâhSª; Ž€oÃH]°¾9&/Ü“ŠÙ=ßÔ…½|à†\ÏÍV+øÛ’LÖÜ“yÙ>þ¥EQ(íãëQÓû_¯›{ÞRÝQà^BÇ—º`…rY›Ü­QjudË¿¶ºŠÆ?ukõ/*¯ÌkOÛÿ£þÛÌyߨ¸JÿÚ?༵´æJ#Üófþ<þpçqF…$Q:6\­¾ëæ­ÿ¼]úĘGmý9NË€ˆ£M©î(8Z¾ #uÁúæ˜t¾pO*f÷|[þ($Ë nÈ“yÙ>þ¶Eãõ÷xNiÿx²(Äsòå,[÷9¾\¯”yJuG!@Ê 6© V“õéÀÝ:i¢Mýh¼¡[®MqÉàek›¿ ¿®-m×ô®¦ˆ%€rÞ•¸ó¸G£Â?’(½¥~ÕåÇ÷¥wÞïJ7(sÔôïl™îq¸ŒüË¥tXª; )%Ü÷n¥.Xß]ËÍîå„Ò=nêB€^~pC®çf«ümI&ëîɼlŸ ÿx¢(Äsòå,Óû_®SÚ<¥º£ m¥™Ô+„'µiÀ=5ÚX›útôxgê/Q¬mþ€Xƒgø$Üó&þ<þpçqF…$/.¾U}2`Hû5©Á¾ãJ±¾¾žâ Aƒ(–{0ý;[®/-ÿÒ>i•êŽB@Z÷¼_© ÖsÖ²Ó‡{Y¢TO0õG!@/=¸!×s³Õ þ¶$“õ÷d^¶Ï†2Q’yI=Ûô>GêuIŸ—Tw¤¯¦ùI]°LΆ…»3ê‚éúßv×mÔßo']H±v[õ«ÁÎ6¸!oCâtür· ÷ –'ðOÆ>óWïSƒƒVo¤8{igŠSf¨~–­T÷6ÜpCÚ1ñÉ)ê@Þ£îßÙ¼n°©)M8ÃfRÝQ0Ll¨Í¥.ØP½£ë‚{$ÁuýQ0ËnÈÍüL[ÃßTP¯=ÜõÜlµ‚2I’yI=[÷>Gêõø2/©î(ø²‚ÏSê‚uÌà|8¸;'Ï0©ÿœ9s¨ý˜ƒGQìp`Nw؈)€ò˜P)ÿ”`Ët ÷2@)†2àWy“¬üen»¦•j{¿‡ºÐ“ûP|mšúAîÙIÿÎæ·Ç¶™üÍüt[KuG!@7£·“º`gÇHæ']÷(ØInÈí8êö]9³vp7ó3m ÿd‚($ó’zvÒû©×áÛ¼¤º£àÛJr4_© ÖÑå³ w6z8òÿûu×Ñö³Sž¡xàA?)8±ÝÜö2LýËGM¯ê‚çagiÜ—öIû(üÓ.Ü?Ü »¸Ú ÿxÒß¾ß@'ÖÞò Å©‡¬ xí«í(ó/ 7Þðwzrð!‡©E£¿³“&M*rv§)ÿ4u‹÷-Õ…€â9Ëô© 6ô¤À7Ñ? nó€r·Þù£Á?_ÄÍ6ÜÝ8þÅdr÷£ëáûVtŸƒBŒÛLJuG!Àí:ðf4© Ö@͉Â]ÎR³È¯½ö¢ÿpÞ©Gî¼ Åëo¹›â•¿RÅ©—Q¬ýAŠxÐÀ ¹ž›­Vð·%™¬¸'ó²}6üã‰Îý¿/èÄÑÏ¥øÊ—•çu¯Sûë÷¦xÃe7R,÷ýÅÑrRé‡:®åz•êŽB@¹Ìeô¸Ôz:àΛáÈ…·yÀ ¹[ïüÑàŸ/âfînœ‹ÿb2¹ûQÈõð}+ºÏA!Æm&¥º£àvx3šÔë  æDá® g©Yäá…R§<Žâ«ÿFòôÇÕï$¯ºÉj´¿ë-œínpCΛøóøÃÇ=þ‘Dé8ûJõÝ ßSû;tZGýý[úxm_|¨ú„ÜÈF–ì0ú;‹7¢%™R;ÿÔhKv,Õ…€’iËîA© 6ôŒÀ7Ñ? nó€r·Þù£Á?_ÄÍ6ÜÝ8þÅdr÷£ëáûVtŸƒBŒÛLJuG!Àí:ðf4© Ö@͉Â]ÎR³Èÿ {õìFqÑYË(Î[¬ÚéŽöôä›õW¡ØcÿÕÕ°êÕ´¿]¯Š«Ù_mרO ÐÊ à†¼,Qª'À?Uޢý(“ðO‡yÙ}ªß»þt=YgurÊÿ;›s© À?uâ‚HuG! `º°Sê‚ =3pçÍp¾? nòr7ÎÅF1™t÷Ã=]ßr½Ã¿œÞqôÜ\µÊ¿Ïq5nÖÇ‘êŽB@ÖWf‘ë—º`‹L7˜ÝpçMe¾ÿ&#†Ò„n0Ÿb§AukWWŸàm8£ã†œ7—ðçñ‡;{4*ü# »qé<õ+;ý_Z“:þ¿ÛÉ ÿïlÎAl¤.ÿÔ‰  Õ…€‚éÂN© 6ôÌÀ7Ãùþ(¸ÉnÈÝ8þÅdÒÝ÷t}ËõÿrBzÇQÐssÕ*ÿ>ÇÕ¸YGª; Y_™E®_ê‚-2Ý`vÃ7•‘ÿ&Û¨O<²ü!šPݺø@š™Á yšºåû†y£4΀{ªñû„|+3žYJÍ6X ~Mç'?9”¶/¾øbŠO=õE<¸ˆîsðópÿŸ n×7£á…‚'UpçqFüQˆDÜDÜ»q.6 ü‹É¤»îéú–ëþå„ÌŽ£`æ—Vëè>…€´„ ÷+Õ…€ÂùÊü^© 6ôÄÀ7Ûo±9M`ùzê÷;ŒÆ·ÿ»ÈnÈ](þÅmÒ<÷4uË÷ ÿòF&gÌý×Ô|Ã×çP¬®ëJñ‘ißR\kàjGl¿#ÅC:ŽâÖ[oMéà>3×r½JuG! \æ2z\ê‚ =pçÍ0 <þ¸!çqF…$á6ÂÝ­wþhðϱ»B€]O[½á>Ó–d²~¤º£,™9[ê‚ =pçÉðòåËiàn«v£¸Þ¥êÛŽyf“½QqCΛsøóøÃÇ=þ‘D:qö_>¢Ž¯Ú@q—µÕ8£ÿ©â.ë¨OÜýD;ÚñØÄG)n¿ã(uSÀ}f*¬e;•êŽB@ÙÔeó© 6ôlÀ'Ã(ð¸G£â†<’à‰ð‡;ï¨X÷éú£®¯nï¸ÏÔ•3k'Õ…³¼ÛZê‚ ¼ùÂàn7Ã3fÌ Ï>ýdŠî¼·àGœ|8í¿ý¡Û)®wþà‚çag:¸!OÇ5n¯ð+e÷<¸ÛõLÚü“Š%;ÚÑÓ¨Áœ“WRüVýˆ@ů״§íQ#GR¼ñ¶û(vìØ‘"ÒÀ}fº¾Åz—êŽB@±Œe|¿ÔzZàn7Ã(ØõL«7ܧ%¯_øÇs²}Üm‹&ëþɼ’žB@R17çã>Ósþ(RÝQÈ϶I@ê‚ ==p·›á?ü:ÜnË¡¿XØHñû笠¸Iýůî?—¶?yáSŠkŸ1ˆ"Üà†Üs±Qà_L&ÝýpO×·\ïð/'¤w|ñgêWw–üM}GÀø U?—¼¤¾ `ÅÊÚ±há"½ÐÊH÷™F|Ú¥º£ Ò°J]°a«WTÀÝn†Q°ë™Vo¸!OK6^¿ðçdû,¸ÛMÖü“yÅ=…€¸R<çá>î­Ph­ç-x¡h¡púîépwî¨þⳓÔ'xhè­oÔx½.ìOOpc˜Ž¹^á^N(ÝãðO×·Xïp/&ãf?üÓqž7y>u<÷¶YûŒêA±ÇÞ«Q|ç<õI μ€¶O;þtŠxp#€ûL7Îù£HuG! ?SØ&© 6ôôÀ= £Ž«­^qCnKR¯øë¹™¶‚»© Y{ø›ùkB@1ûqŸÉ“©î(ð¬ñ£J]°âá 'wCÀ"Í·Ý\ýGŠÞô-:c¸ú@ů¨ÿfñìÉ*®\U}r`½_)Òv§!€ò4Tã÷ ÿøV6Ï„»MÍä}Á?¹Yœ+›Ô¯,·ŒN¯éUÓ,r4hMÚÿàQ8p`ÎyØHG÷™é¸–ëUª; å2—ÑãRlèé€{:F! W[½F7†ø’F[¢Éú2/[gÃÝ–¤^?ð×s+× …€rB¼ÇqŸÉã/Õ…žõ ~T© V<œáánX¤ù±GJG6žõŠÇl¡N|cŽŠOÏPñÔÇTrÜzÒi³®jSÀ yª¼e;‡Y¢TN€{*¬±;…l*«'Fîý¢¾3`Ý·7¢þïùǽVÇAg…pŸYØ%í½RÝQH;óžö/uÁzÊ{ÚpM•èDq9?9º1Ä'œÓÓ€ð‡;ï¨X÷<þ‘; <þ¸Ï„{kZkày‹^(Z(œ>{:Ü7Üpu|ÁGQœñÕ Š½úu X; Žâ©ß?|œúºæýt© D7†(¤F\²cø—äIí ÜS£Õ1üc1Y?)ß½ñéå4Æ»ÿ–âž{ìi}Ltø½î3¿·pùLª; .WGcI]°jMîZle¡P–ˆõ„üCÖÉdppøó$î<îѨð$ÜÆ|wÜúã>Ó­w4šTw¢ !æH]°9“ pîé$uô^£¨ãO×U¿_ÜyÝNÊ¿A)xvZ€»uÒDÂ?—µ“ánR«#øk±7*æ¾øZõI½©O½Nctè >±g< :ÈÀ}f‡³ ©î(8[~ $uÁú¥˜|¶pOn§ q”øÎ)vcÈ7£l ž|ÃÇ=þ‘„ÛXÌ…7yÀ}¦çüQ¤º£Ÿ)l“€Ôzzàn7ÃýÛ_¨Ã?¸Žbíf¹¿gœ?Z±”üó°mWîv=“öÿ¤bv·»GÝ^à¯+gÖ®˜{ûê;z6š±) pÌáÇR¬¯¯§ˆO˜¹G­qŸI¸RÝQp»¼Mê‚õPs¢pׄ+Ò …€"0Âv»16Í`§žÔÂÇ=þ‘„ÛXÌ…7yÀ}¦çüQ¤º£Ÿ)l“€Ôzzàn'ÃoN{“:Þ;ì¯ßb7(ñZã,]¸ëÊÙi;ŽI{{R1»çÃß®gÜÞŠ¹/™ÕH]Ìýý‡×ëÛ‘âó5PÜlõ(Öï8šâN£ÇQÜu×])â!žî3ã9Ù>Kª; ¶3HRl ¼E/îEi@! ûÉÅn Ù'–‘ ÀŸ'ÑpçqF…$á6sG!ÀMpŸéÆ9©î(äg Û$ uÁ†ž¸—ÎpSSPYYYòÄ­ÆlIǗbûÚÒçG»A‰Ž#¦#÷t\ãö ÿ¸Rvσ»]Ϥ½Á?©˜ó‹¹ùÔ|`»ÿ~NñæÝÔßûhÔ§¦«g'=QGO¶õcŠWßx«:€ÇX¸ÏŒÅdý$©î(XOuJ]°aè¿ ¸·ùßJûøz´Ø¡¯×ãÛ¼áÏ“1¸ó¸G£Â?’p‹¹£à&¸Ïtãœ?ŠTwò3…mº`COÜ g¸±Qý·ƒ#¶Ù‚N8㬟SÜg?õQ«s{.=½÷ë;(vܰ6:+»A‰Õ'i À]›ÎJCø[aLÜ Ü“Ym«œ±;+æ>÷ÚÔÇoz/¤xð&ªË‹_hOO~ùtÅÿq3ŽöÙW€ÇD¸ÏLÄeíd©î(XKqXI]°a)·½¸·5ùß »„²·Øa(×'ý:àÏ“!¸ó¸G£Â?’p‹¹£à&¸Ïtãœ?ŠTwò3…mº`COÜKgxȽé„õº«Ot[Gý¾ðq§ÿ‚ösÙQ;ŒmWº£"G‹Ý 9»- Àݤf7ðׄ3lwC@Ãæð7Ôl^Ìý£Óß¡o½œâ)“Õ'–Õt¥íçŸ{‹bß¾})âAO÷™zn¦­¤º£`šÙ@ÛK]°r·\Ü[( >A!  ‹÷;‹Ýzaž\üyw÷hTøGnc1wÜä÷™nœóG‘êŽB@~¦°MRlèé{é ïµë(:a|ç'(.iRÿÍà¡÷¯ íA'  Øeã.“>»AIÚÎO&÷d^¶Ï†¿mÑxýÁ=žSZgÁ?-ÙÒýæ»/[ >ðþÙïRÃ.«v Øó(õ÷¼]óü6ûLýÐ-WãWJ —>ŠûÌÒ>i•êŽB@Z÷¼_© ÖsÖ²Ó‡{i"Jûøz4ÿÆÐ×ëðuÞðçÉÜyÜ£QáI¸ùî(¸õÇ}¦[ïh4©î(DB̺`s&àÜK'õ ~I'¬xê7/Ø^ýÎpÃ2ÕnÔ]ê¿)œÝO}" Ç!k”î0ïhþ JÞal¦$÷”`cv ÿ˜P–Oƒ»eЄÝÁ?!˜¥ÓóÝW._I=/xùkŠÝ·îVp¤Æ'Õ'ÿþ|àEt|옱ÏÃÎÒ¸Ï,í“ÖQ©î(¤•qÏû•º`=g-;}¸—&B! ´¯Góo }½_ç žÌÁÇ=þ‘„Û˜ïŽB€[ÜgºõŽF“êŽB@”!Ä© 6g’nÀ½tR|ðA:áês xÙÈŠSg«v¯ÌQñî÷*éÉÂ^uûŸ¶¦:Pæ1ÿ¥Ìé8lIî– 5»¿&œa3¸6‡¿! fsmwõÁŠÅתOLkþÍid¶î3yR/Õ…žõ ~T© V<œáá^…€Ò>¾Õ¾1ôõ‚…Íþ< ;{4*ü# ·QÛ…+‰Â}¦ÆÄHuG! q*³Ñ@ê‚ ]î¥3i…ÚÂ…û·íŽB@açb{qŸYL&ÝýRÝQH7ïÞö.uÁz sâYqÿä“OHdàÀ%ev;pW:þɰ(Öôª.y¾éAÛ7(¦óÉJ{¸ófþ<þpçqF…$á6Úr_öµú—ÿçªOÌ?µ‰.¤q…ºžgÔmFÅe/©ïz~n':0wÞ·,l´¬Üg cû«`(H[)Bæƒ žDdÅ…žõ%uT[7†R¯Oú¼àÏ“!¸ó¸G£Â?’pm¹£ —·¬Ügêé¤×Jª; éåÜ랥.X¯QcL>+îûí¡þ›½ÙsÔwüûÙ—I§}ûö¯¸î ŠW½q9ÅÚ-:PLûÁÖ JÚó ­¸ófþ<þpçqF…$á6ÚrŸÿÒBšøº“?£øð^êïÍS×sØcÝÔñŒ¢xý-w©ÌÊ}¦´4KuG!@ÚJ2© VOjÓÈŠ; ©-!/;¶ucèåÅ ˜4üy’w÷hTøGn£-wôò–•ûL=ôZIuG! ½œ{ݳÔë5jŒÉgÅýø£'¦Wo¤xí+ ç²K/¡'×LºŽb‡=Õ~W¶nP\Í7”qàΛIøóøÃÇ=þ‘„ÛhË}î-³hâ§W}EñãEêWnzCÅ sí?þøÜ^ ðѲrŸ)- RÝQ¶R„ÌGê‚“Ú4²âŽB@jKÈËŽmÝzyñ& ž$ÀÇ=þ‘„ÛhË…½¼eå>SO'½VRÝQH/ç^÷,uÁzcòYq¿î:õ/þ/Ýp2©\»sÅ'¨ïx§[GÚîu\é_ˆAšè[7(‰ÅÉpç]ðçñ‡;{4*ü# ·Ñ–ûôsÞ¥‰7~­~& ÷.«Òö*;÷¢¸òõk¯=5Õí -+÷™ÒÒ Õ…i+EÈ|¤.X!<©M#+î(¤¶„¼ìØÖ¡—/`ÒðçIÜyÜ£QáI¸¶ÜQÐË[Vî3õtÒk%Õ…€ôrîuÏR¬×¨1&Ÿ÷^x4N¿3Åçú:Gç†7ÚÑöq¨ÝƒÏLOêÖ¬Ë9Ïö†­Ûó ½?¸ófþ<þpçqF…$á6»¯Tóýrâ—ô¤ÛpõëU]Õ'¢«Yüz#==¨ÿ¡Ï9åœèP¦cVî3¥%Yª; ÒVŠùH]°BxR›FVÜQHm yÙ±ñ¡—W-gÒðçÉÜyÜ£QáI¸Æî(%,+÷™FH)4–êŽB@ É¡K© 6ÛR×÷%K–C·®)Þ½·úoü¦ÎQŸøÏ\§ÎVZ ›Ô·¯{Ñz¥øŒß Ï ›À7ïðçñ‡;{4*ü# ·Ñµû²{ÔõÝ{ñýôdÈ!n/XØhY¹ÏÆ^!Õ…i+EÈ|¤.X!<©M#+î(¤¶„¼ìØõ¡—H)Nþ)â–èî%p‚¿äC¸vG! 7 Y¹Ï̽jþ-©î(具3º`EbYœTÖÜ×Ü“ôשO´Ò‰¶kÔR¬ë¯bmß‹ÊÅ»r}ƒR|&Ù:wÞ|ßÇî<îѨð$ÜF×î_,¥ \s꺼åA·,l´¬ÝgJá—êŽB€”"lR¬0&ëÓÉš; Ö——º¾1ô)ÅIÃ?EÜ]ýŽƒCðw€\`×î(ä&!k÷™¹WÏ·%Õ…¾5!zd© V4š…ÉeÅýôóO#­‡—©Ê|ÇõÔ¿ü[ 4êÂõ ŠÑdj wÞdŸÇî<îѨð$ÜF.÷ÅS–Ñ…ž·ó¯(î¿÷þn/\ÈhY¹ÏÂÝ2 ©î(´¤OZ H]°­çâ󬸣âêÕ¿&®Cý‡Õþ<ù„;{4*ü# ·‘Ë…•ç¬Ügº]ÕåG“êŽB@ùÜeò © 6ôd„îþÄ“OP O½þDŠF«_’W®)×Ï5¸sÉ«qáÏãw÷hTøGn#·{ã ê÷o½|]øÐ¡CÝ0ú}&3oÑ᥺£P4eÙ> uÁ†ž•ÐÝQ}ë]÷¡Þ¬Ãiž\ÂÇ=þ‘„ÛÈíŽBÀhJø¤I“Ü&>ã£I½¿G! ã ³ØåK]°ÅæÊþPÝ—-SÿmÞ¦;lB©ª;ª½È”qß ˆDq0)¸;@.1üKà¤xî)âÆèþ1R8…ÛýË ŸÓU-znÅvUuë·ÙRÅ‘ãT±ÅM7Ý”buu5EßB½Ï”ž©î(H_9Ló“º`™8œ ª; Ζ—qßz‰fqÒ𷈙 +¸'ÀJáTø§€£Knwð‰€ËÔú)RïïQ°žê0:”º`ÃÐ-~¾¹ýõ×t1MMM»wï^ðâ?ñ0ÚÿªS(Ö¬)x÷Nîîëçî\òj\øóøÃÇ=þ‘„ÛÈíþÙ/ߣ þט¥vS×?e†Š~ÜžÜñ–úäâëÿ}[7h:ÁóGßî3=çn™¾TwZR„'­¤.ØÖs ñ¹oî(„¸ Ý_÷¡û+–5"üyòw÷hTøGn#·; øD€Û¯F“zBÇjð`L© Ö:£)úæþ›__H×û»ßüšâ•W^Añâxσ÷PüÕçQ¬ÙNæwÐä¾{à¾A‰æ‘µwތßÇî<îѨð$ÜÆÿoשּׂ¨¶?~/·¸t)] ˆ­‰dIæ¶¶¨:½©(XO²JãBn°üuÕÌÕ4Ãj­ø)–O75Ów³®3üÁÝ waü ½Ò÷õ+6Ж,¨ Ù®.ŸþLø×'5jñöß~½@4[KÚ:S3eælåŽD€2—'[±­›lªþ³Ow$ü}ŠþL- ýg–=ÀߌŸÁÝ waü ½Òw$ØÏI[gêNuÖlåŽ[Ôù<Ñšm½„%ÑPL>iÜgΜIGÕm—Î$g XAòõŸ8ÃÞëyθ·?·Õ×ìR‹¤­/¦.Y´•‡®y».ÒÙí€v.ªkÁ]5áÜúÁ?7U­¦¸/x}RͯøJÆÅÕùYõOãõI•K©ýí!ï’lÖ¬™*Fõ&mi–Dã¶rG"@¢“Ó¤ÊÖ€MãlÇ’4îHdó"êÂ0µ0 ;Ï´ö3žw3Ü…Uð$ôJSÜ‘`?'m©7:ÕY³•;ê|žhͶl¢¡˜|R¹×®Á÷ÔÏ:‡ï½«Å‰öÊ#îö"ÿ[ÀÔrî×èÜV•m6½1µ@±‰‰¹€» êÙÿ¿Xè|î:iÿÓøÿ“‰ŽSÜ—^D‡·nÕF’õ÷oq¸sÖP¹ã´mI¾øøKíi)$u™tþ¶rG" é‘¥hþ¶¬¢ÃµFmR¹#`M%r"¦†‰„¥`Òà¯j•à’Â.à¯nÕ¦¸#ÀNIê:3GH%¢ÉVîH$"|ôOÒÖ€ÕOB¯Å¤rßyÛ- Ô¥SHÎ_Çðý|æ7s>gàkÖ/¦ŠvwnÅ –½šZ X†AûtÀ];ò ƒàŸC[ܵ¡Îjü³bQ^i;÷5ó¿Ýxä­Äâ°ƒSÎD§¤®3u2RaËVîH¨ðv tÚ°)@›ó’ʉ€œnE£Û†>ÓO|3ø›q!¸›á.¬‚¿ ¡WÚΉ½ñ/Öl]ß#/ò8m ؇‘¸îIå¾W]‰õÔÕ|E@yÇêT.o^•e3–¶;ÄöŠíü¢ÎÜ£’“3üåp «ÜÓÛüåò ª-)ÜW=ÊWL=‰­J¾Ò1èqÚÚ/©ëL[y—­Ü‘êÁ<ëgkÀ¦Ý IåŽD@Ú#Síñ%ea¨–‚9íào†=¸›á.¬‚¿ ¡W&…;zã"íÖl]ß#öÈ‹x|¶lÄÃḬ¤q¿ëÁ;‰íÐiCH–oïú»€Äç‰&e’0¬¾Ów_DJ;€¿R¼žÊÁÝ–ðׂùF’Â}Õü/H‡V?’ŽáÖkø™ÿ8 „U$m™0¼žÓµ•;ž.Ëï[6í^Iw$Ò‘zŽ/) C=4ô[ýÌÿgÜÍpVÁ_Ð+“‰½q‘vk¶®ï‘H{äE<>[6âá$fXR¸O˜8˜ö¹æ8’%‡&†q®‰&e’ë’Øîf½þføƒ»îÂ*ø zeÒ¸¯{szàÜÁ$÷Úk/½À$[KÊ:SòaWg+w$Œ‡†°5`í¤%oVIáŽD€<ŸCvFMÇ@Òæ¦yɲî²HFÓþѸÅ•4îHÄõ8Æÿ€­ë{$ŸY ذY'›¢Ê¤pßy¿ˆúº£V‘,ªšŽ§é&m’–Ðw³ž3üÁÝ waü ½2iÜWLYI€V=:‡dqÕZ$÷ìÚ•å¾=IvÝsO’íÚµ#YTTDÒ¶—¤¬3mãw>¶rG" ®gS:ÞÖ€M)îÊÃJ w$*]†7$ma(á­RþfÜîf¸ «à/Hè•IãŽD€ÞøH«5[×÷H¤5âb—­ó°¬nŠûâÅ‹‰Í°§Ÿ"yÎyçgeuåMWRýkK_$Y­SÕ¬ý’Z™´JR9»ç în"zËௗ·°î‚„ þà„À‚á ¨[ß?XößžG}ö‹#çV£7oýÄÏ8¶O?*ßó?S€{Ùójji33±•;fâÁz«¶¬õàbNÐw$ØqXÆ àˆÃÁ="8IÃÀ_ÈjÀ=$0ÉÝÁ_2Ð€ê’Æ‰€€ŽE·œL­ïsNêÏF$üåi»­›vw˜âþå—_ÚÞ‡îGr‹6mIÿ’âá€g=x•Kz¤ã_è`þö’´Êߦžè·ànÖ}ào†?¸›á.¬‚¿ ¡W&û¼Û&@C»¬&¹æ5n>ËSÞ«Movë~É»B²¬¬Œ;XöjjiíÓ±•;ÚC!m ØdЋ>KSÜ‘`Ÿ%m=Òì îfýþføƒ»îÂ*ø zeÒ¸# 7>ÒjÍÔúÞ'~„ò´ÝÖ€M»;Lq¯¨¨ ´uk×$ùîqëIöR)×7©O²ÁU,©Â—¤-PÒâp7ëIð7ÃÜÍpVÁ_Ð+“Æ}Âé“Т‹øƒ>äIz{:?àÍw?¦ö.;ì dDk¦Ö™§›ša¶rG" 5!&÷@l X¹GiŸ6SÜ‘àXHÚžŽ6#pÆMÖ(ð—E2œpÇKvoð—M4˜¾¤qG" ˜_Ñ+7SëûܳÂ3üøäm»­›v‡˜æ¾Uë&„xøÁsIné\pÄkœÿ¶¨œê7;¯u*]‘´JZœîf= þføƒ»îÂ*ø zeR¸¯ú•¯”\rït´x%_Ð䈆T®^\ä]'ÞKr¿îüŒ%*Xübzi1¥S³•;®Pêöä*·5`“K4ØÌMsG"`&9ªÝÅ­‚9 ½¤HÊÂPÊÁZ¨üÍ8ÜÍpVÁ_Ð+“‰½q‘vk¦×÷^|‘ð"“çõ¶lÚÝbš{ïÃ{â#KÞ#yL§Lâ÷~ÍÿpÁ{œßú:~|ni ¾R ³wòJIY $lîƒ{n>ª[Á_5áìúÁ=;]µà¯‹t(Š$*@IDAT¦¤p_ý_ðÇK|…dã-é@Šªò’›6ò:hÝP^ÿlBæZZ2½Î´‹òiÙʉå®O¦[6™4ƒÏÚ4w$f’³pE@ð˜•Ñ3) CÇj£ð7ãp7Ã]XAB¯L w$ôÆEÚ­™^ß{ñE"À‹Lž×Û°iw‹iî·Ü|!~eðÕ$—pæ{ÚÜ T®×°„dÕæUIVïÆ¨Ñ¡•“þ’”JÒ9»çîn"zËௗ·°î‚„ þà.ƒÀª |å@ïÍN u×^úoj•é0½ÎTv`–+¶•;–Ž©éÙ°¦xè²kš;3ÉÕ¸"@Wij,Èõòv[7=ep×ÃÙË ø{‘Q[Ÿ6îH¨—´h7½¾÷âˆD€™<¯·5`ÓîÓÜO8óxBüÙÒIÖèÀÿ“[ÞŒ¯(,â{áÒꇴ-P’â'p7ë)ð7ÃÜÍpVÁ_Ð+ÓÊ}ÝkÌñ…[_¢7[mµ•^°­™^gœfêºÙʉ€Ô…šœ²5`å½ZLsG"`&®ÐûIëÂP/ÅèÖÀ?:»8#Á=½øcÁ?>Ã(Òʉ€(Ñ?cL¯ï½H#àE&Ïëm Ø´»Å÷g^|†ÐÞ:òF’e{§uÖãKë%ëÁZT îfþføƒ»îÂ*ø zeZ¹¯ýclúU+’ï¾Àÿ¾¤—®¿5SëLÿ™¥»‡­Ü‘HwÜE>:[6ò%d )îHp€¤ub{øƒ»Y¿þàn†»° þ‚„^™VîH裤Y3µ¾÷ã„D€¡ÓÉ›f[¹#7!î@m ØpG‘¼Þº¹##i_ d­=%p7ë ð7ÃÜÍpVÁ_Ð+ÓΉ½ñ”kº×÷A¹ ”Tžõ³5`ÓîÝÜ>þ BúëÓH–6(M;âœÇ—öJ΃7ØîáÿiüÍðw3Ü…Uð$ôÊ|á>ï^WÕ¯ÓïÕ­;É®Ýø Ì®]»R¹iÓ¦Z {©õà,6f+w$,“S³5`M2Ña[7w$2½š/ ”Ì£6_w³>3üÁÝ waü ½2_¸# 7®l·¦{}”AIåY?[6ínˆË}ÕªU„¨¿>$o½ó^’-Z´È@÷à¨üðøI–ï”ßW8ù²@Çk‹w³ž3üÁÝ waü ½2íÜWýRA@×?<ä ‡m$9æWæ•3Óu.æ§Ô–Ö/ñœK>6¤}b«OÁݬgÀß p7Ã]XAB¯L;÷Î$ w¶ZA²Vó=þµ*ôæâK¯$yù5×sƒæWYëLÍÓN¼9[¹#øÐRs¶¬š£µG«,îHDóiÚ(Ѩ¨îêç²þ¹è¨kwulƒhÿ ”ä÷I;w$äÇL4ÊZßËfD€l¢)ÑgkÀ¦¯çaÈâ~ÞÙg6Ó‡÷î ùUÖ:Só´oÎVîH$>´Ô€­«æhíÑ*‹;Ñ|šöJ4*êG»zƹ,€.:êÚÀ]Û šÁ?%ù}ÒΉù1“²Ö÷²Y  ›hJôÙ°)Áëy²¸:”l|:øl’OÌÿk;m›7ŸåŸð•ëºÔ£Šz½67çÝkÚ(¶:ÜÍzüÍðw3Ü…Uð$ôÊ´r_¿rœuÇt’õznF²ö.™W\®{™y¿~ÿô¦uëÖ\¡éUÖ:SÓtScÆVîH¤&Ä䈭+÷(íÓ&‹;Ñ|›ÖJ4úF»>ÖÙ,6*êëÀ]=ã\À?umiåŽD€º˜IƒfYë{Ù,M4%úl Ø”àõ< YܧL™B6öÛ½ÉyË8S]£N•«5¯ÊshÉÿg[Þ–e­N5¸>O_Óº@±ÝànÖCào†?¸›á.¬‚¿ ¡Wæ;÷5ó×ð¶“:|í©×µ:@Ö:Së¤S`ÌVîH¤ ¸T‚­«âXmÒ)‹;Ѽšï ”hÔâ÷ø ãhÿ8ô¢÷èìdŒÃëÈwîH„™4Œµ¾—͉ÙDS¢ÏÖ€M ^ÏÃÅý‚«‘7¾J²Ö¼Ó_¥”ÿÇÖsyÞï SîwSäÙ.ø›áîf¸ «à/Hè•àμ+>]Go®=ø’G÷:Z‹#d­3µL6EFlåŽD@Š‚Læ¡Ø°2ÑF]²¸#Í»X Dãw¸Ç%o<øÇãu4¸G%'gøËáV ¸31$ÂFN²ûËZß˦€D€l¢)ÑgkÀ¦¯çaÄåþáG’îAŸK²t?\à ;K(Y h¨w s˜ÿp6»B¸TƒH º€{&ÔŠÇ7RÅ·#Æ’,++Ëì ¹w)y:y£ÎVîHäM†;P[6ÜQ$¯w\îHÄó9(ñøE îQÉÉþr8†Õîa‰ÉíþryÕÈä‘ÖRÜõ½*.H¨"›p½¶l±úN?*÷uëø^³íºmK6ÊOãð5ˆ°@ÉÀ¡­îÚPg5þY±(¯wåˆsÿœx”5‚{&ÚU?­¦Š…“¼ç¦{3;H.E]gJžFÞ©³•;yŠÁØÖ€ 6ûäöŠÊ‰9>ÇEǰZÀ=,1¹ýÁ_.Ï ÚÀ=()5ýÀ_ W?­àžI‰€Li-E]ß«æD€j ÕokÀ&gài»¹/[¶ŒÆÖªU+§ŽSÎ=™Ú¿n0†dÕ–jï1Ë9™7bbÆyàn†»° þ‚„^ îzy»­¿›ˆž2¸gç¼bðBj¨º¬œä!½Ž!¹Ç^ûìÚµ+É5ø_ ¨áŽΌ C"°•;œ™Cl Ø´³wsG"@¯Ç±@ÑË[XwAÂŒp7CÀ¬UĽþàž;Ù¹¤¥Ö½¾·å¸°Å–ÍÃÖ€µ “ô鸹ŸØ»ÙhÙº Én½3ÃæËÃ_¦òuo\C²l/< PÈ(!Iêî’@FTþÁÅî1Æþ1FîÙÁM;25 é¾ä”Eü¯Ocæ×¤òèŸW‘lÚ¤Éþ•dØ÷:3ìxôFÀVîHDógêGÙ°iïæŽD€^c¢—·°î‚„ þàn†€Y«ˆ{3üÁ=;w$²sIK­{}oËq!`‹',›‡­k&éÓqs?æ°Èƺ韜[Ô’äϽF²÷9G“,í[H/ñ`_ÔÑà•œœqà/‡cX-à–˜Üþà/—gPmàžIjíü¯Oón˜J ÎÛ˜ÑaÌ,.žò._pÀὩâ¾ÁÿÉè´à^g‡~ñØÊ‰€x~Míh[6µÀssG"@¯Ç±@ÑË[XwAÂŒp7CÀ¬UĽþàžÉ‰€Li-¹×÷¶'¶x²yذ–a’>7÷›n¼l¬yÉCÚñ½c>ÇϨ¹=ªopXCésÉG…X ˜ñ:¸›á.¬‚¿ ¡W‚»^Þnkàï&¢§ }¹„*¶ýbÉ×ç+Ž{Ÿ0£°Õ?ýâ$Û·oO2ê‹{UÆ…#`+w$Âù1ozÛ°iw€›;z=ŽŠ^Þ¸ f$øƒ»f­"îÍð÷LîHdòHkɽ¾·å8‘°Å–ÍÃÖ€µ “ô鸹¿õÖ[dãÑ+ú|óˆ¥6O|‡3Æ­ªJõ›_Кdaž*` ”€ $wwÉ@CªÿÀ$uwI #ªÿˆàb÷L€ žú*ö^Äë»gÆo¢róÃ7#¹{ƒ‘|nÈó$㾸יqõa|0¶rG" ˜ÿò®—­›vG¸¹# ×ãX èå-¬» aF‚?¸›!`Ö*âÞ pÏäŽD@&´–Üë{[މ[Ó Á=%u}À_Û\šÁ=ÿ¶…,¤Nó^O²å€$kn[“äªñ¼°<¾ñIT¾ê¢«HŠ¬ï ½ÒVîHèƒÄX³5`Ðc¢Hx€±¤ 3Žw3Ü…Uð$ôJp×ËÛm üÝDô”Á=g$âñ35ÚÖó*$LE„åvm X˱ùNoßýv¦>¦Œ#YÖÿ絸E5*ÿ>jÉ­®Þ‚$^ôÀE/oa Ü 3üÁÝ ³V÷føƒ{<î ¨R•¯$õÒ¶îUnyéŽWèMûöíIb}ïELm½­Ü‘Pë÷Äj·5` Ô™8v{ 3þw3Ü…Uð$ôJp×ËÛm üÝDô”Á=g$âñ35ÚÖó*$LE„åvm X˱yNoØ Ã¨í¶Q7‘,ÛÿçÕ=?n"zËௗ·°î‚„ þàn†€Y«ˆ{3üÁ]÷µ ×’¡ß¶%ùÖ³o“Äú^·[¹#àöÊDÀÖ€Mª{H†ç°@1ã'p7Ã]XAB¯w½¼ÝÖÀßMDOÜõpF"@ç Vl=¯B" ¨󬟭›47Ì;—¦ÜãäýH–Çÿ÷êuøô"£§üõpv[w7½eð×Ë[XwAÂŒp7C@¯ÕŠ1ëÈà•ݯ!9ô?O1b„Þ‰ä¹5[Ï«ÈóÀô:|[Ök¾¶Ö#`«g²Ï Ãì\Tׂ»j¹õƒn>ªZÁ]Ù`zÁ?'Ù½À]6ÑÜúÈÍGW«­çUH芀„Ù±5`†±à ã¤)ÏÚi:ÉÒú%9?9ñ(o刳÷¬X´U‚¿6Ô†À=‡öøkGNÁÝ ÷5On"ÛnNrÔ¨Qf&’§Vm=¯B" OÒï°m X¿yÛÖŽD€mÉ=,PróQÕ îªÈÓ þÁ8Éî†ÓþáxÉê î²H†ÓƒD@8^²{Ûz^Uؽ{wNÉ>â˜úÆŽKºtéS†G!þ¹©­X±‚:Ô¨Q#kÇY³gQýo+XÕÊý¯Bɪ™«émµVå¢ R#ð×ûo¦Àýo0 ¼Ðÿ4 îf¸ «à/Hè•à®—·°¶aÕz»fÿ›@Û¶í¨\§N’^ëY12[Ï«ˆç×ÔŽ¶5`mŽD€-ž;,Päò ª ܃’RÓüÕpõÓ î~„Ô¶ƒ¿Z¾^ÚÁÝ‹ŒÚz$ÔòõÓnëyn ðó\ž¶Ûz ‹iw¼ÿþû4…~ÇEòÔSO%yãí÷’œ2e É£/9’dI/_pÉ\`TJ:‚¿¬¾JÁÝ‘Ò௯§rp÷D£¥üµ`þ‡pÿ-Ë&ð•¬sü…ì¿m)ÉÏç–‘œµˆ¯Øcר|ø1}Hžvú™$ñ€­çUHÄókjGÛ°¦#`Újíc¢–¯—vp÷"£§üõpv[w7½eð×Ë[XwAB¯D"@/o·5[Ï«p{ e"`kÀšvÏìÙ³i »lÓžä€ùÏMo@åªÍ6#¹þ(¾×¿¸F•ƒ¾à2()5ýÀ_ W?­àîGHm;ø«åë¥ܽÈè©=œÝVÀÝMDOyÁËóÈPéç IN;'Óîk?r¹ÿ;|…ÀÍ7ÝLgœsAfG”"°õ¼ ‰€HîLÿ [Ö4y$L{@­},PÔòõÒî^dôÔƒ¿În+àî&¢· þzy kà.Hè•Hèåí¶fëynO¡Ll X[ÜÓ ÿ[ÀOg¬¤)Íã[¯ º?[Håê=øZëôä+‚Î?AI©éþj¸úiw?BjÛÁ_-_/íàîEFO=øëáì¶în"zÊsnšF†š¬¬ ùi?¶{›UéͪºÛ|â¹×H6iÒ„;àU [Ï«âÞô)±5`m!D€-ž;,Päò ª ܃’RÓüÕpõÓ î~„Ô¶ƒ¿Z¾^ÚÁÝ‹ŒÚz$ÔòõÓnëy~žËÓv[Öwì»?UõʶciJÿj9³#«PÅ«¿•l|1w(®QœÙÑU¤ ˆæ"økî˜w3Ü…Uð$ôJp×ËÛm üÝDô”Á]g·•ïN™HUmërËÌå|kÓNͨâã×G“lÑ¢wÀ«T¶žW! ÕÍéQfkÀÚB‰[gX§ÎÛHõÕjr}“S›S¹úÖül*dyÁd(«À_#ì¿™÷¿Á0ðü @ÿÓ$¸›á.¬‚¿ ¡W‚»^Þ«~ág̹g^[ÈëÔŽ÷lEåŠykHnõ#?#àå'^Ö;Á<±fëyy€aÓÖ€ {ªú# Š¬Y½X ˜áîf¸ «à/Hè•à®—·Ûø»‰è)ƒ»Π‚„YiëyfãÂZ붬-À^|6M商‘,Û¦&ÉòüôÕjÍYsæ5è¼ñ””š~ெ«ŸVp÷#¤¶üÕòõÒî^dôÔƒ¿În+àî&¢§\1—wþg ›KÛ]Ü*ÃðšO7PùúÃn"ÙëÐ^í(Ä#`ëyñüšÚѶ¬-À‘°ÅrçŠ\žAµ{PRjú¿®~ZÁÝÚvðWË×K;¸{‘Q[D€Z¾~Úm=¯B"ÀÏsyÚnkÀšvÇÈQ#i 3üÁÝ waü ½Üõòv[ ʉ7¹xe[Ï«ˆç×ÔŽ¶5`e¯¨à{ ¼ÿ>RyÑ%—fUýòë/Qýuo]K²lO5Ïƃ~A‹þr €¿\žAµ{PRjú¿®~ZÁÝÚvðWË×K;¸{‘ÑS”ÿúåüï…Ïò¿œwú4Á½÷Þ›dëÖ­õL8%Vl=¯B" %&û0l XYljD€,’éÒô2]GmþhÀݬÀß p7Ã]XAB¯w½¼ÝÖ‚òG"ÀM.^ÙÖó*$âù5µ£m XYÀׯ_OªÊÊJI6ݼ.Éáo Ù¢eK’ÝŽåÌgiŸB*«~ ú­zùªüÍxÜÍpVÁ_Ð+Á]/o·5ðwÑSw=œ½¬„åÿý)IÕ‘ùÙXßÌ-¡òšM|¥@×Ýw¥r×}{’<çœsIâ%“€­çUHdú %‡€­+ËAHÈ"™.=a ÓuôæŽÜͱÿŸeð7ÃÜÍpVÁ_Ð+Á]/o·µ°ü‘pŒV¶õ¼ ‰€hþLý([V6øNm›“ÊöøäEŸÖ&¹±v’ë«B²j#5ÿ@Êÿöö úoCñVð—1‚ pMâð—3„*pKAWðW5€JpIa— üWÎXM³(||&ÉNågˆ©ÍYÎïú¾UNo6Õï@rÔçߊ.#`ëysÞþEÀÖ€ýk†rÞ! ‡cZ´ýLËñÚrànÖào†?¸›á.¬‚¿ ¡W‚»^ÞnkAù#à&¯lëyñüšÚѶ¬làÇy0©<¤ðm’ÇmÍ.û˜¯xâg¾ªá ~:ji}¾7Jö<„¾ _Т?¤\à/—gPmà””š~ெ«ŸVp÷#¤¶üÕòõÒî^dôÔåÿûû iB‡ÎœOòý7‘|j?3ëÔ7x¾ ~ˆÞô?cWà5+[Ï«Èê.TÚ°²=ƒD€l¢ÉÖô2ÙGißìÁݬOÀß p7Ã]XAB¯w½¼ÝÖ‚òG"ÀM.^ÙÖó*$âù5µ£m XÙÀo½åfR¹ô½kIÞÒÿM@Øy{*¿;á ΀69¾ UTÛÿe@ô“%ƒ~A˲=™À?“‡®¸ë"Ýøg確ÜUέüsóQÕ îªÈÓ”ÿüûg’«š¬ ùØä"’ó«T#ùÈýÏ“<ð€Iâ%7[Ï«Èí·¼mµ5`e;‰ÙD“­/èd²Ò¾Ùƒ»YŸ€¿þàn†»° þ‚„^ îzy»­åD€›\¼²­çUHÄókjGÛ°²1‚T<3šU«ñ=PSæm¤úª58Z£9ÿk@é¶ü¯u»Õ“=Òô Z‰q(ÅߨŠĽ!ðŽYð7ÃÜÍpVÁ_Ð+Á]/o·µ ü' ø†–•ñ±NoA媓¬Âë䉟Or›@9 [Ï«Èâ,Tذ²}ƒD€l¢ÉÖô2ÙGißìÁݬOÀß p7Ã]XAB¯w½¼ÝÖ‚òG"ÀM.^ÙÖó*$âù5µ£m XÙÀo¿ï6Rùà¨ûIVë\•es–Uªò¿ȶë¥/è´×xÔÇ#þñøE îQÉÉþr8†Õîa‰ÉíþryÕîAI©é”ÿò‰ül€š[×È:‘U“ÖPýÑõŽ%yÝe×gí‡J&`ëyˆÐ¬l ج“Q‰D@ x)ô2…‡nôÀÝ(~Üc?âÞxÇ,ø›áîf¸ «Aù# ˆÉ‘¶žW! Ç¿©ÓbkÀÊ=~ÂxRÕ÷ß',9T–æxz‚~Adz‚Ñ^Àß‹ŒÚzpWË×O;øûRÓîj¸Õ þAIÉíîry†Õ&›ÿºá<ƒçn|ÞtìØ1ì”ò¢¿­çUHäEø…?H[6ü‘dD@v.ù^+û2ßy=~pJJM?ðWÃÕO+¸ûRÛþjùziw/2zêeóG" ˜ßl=¯B" ˜ÿò®—­+Ë;uß‘Tm8f5É*ezŸàu²¿ ½ì >;ðÏÎEu-¸«&œ[?øç棪ÜU‘ ¦üƒq’Ý Üe §O6ÿu‹×ÑŽnNòƒ—ù߸ÂÍ*ý½m=¯B" ý±ém ØH“eY   ÷JŠÙ C‡‘X³àoÆuàn†»° þ‚„^ îzy»­ÉæD€›pö²­çUHd÷WÞ×Ú°qsù —“Š7V¼B²¼cY\•RÇËþ‚–:¹ ñ)(aÆ¢otàŒ‘à/ƒbxÚ¹#á$Á‰€ ,ÿ( ð$TD@v.HdçbëyÙý•÷µ¶¬—c.8ïljjþÓ`’…Åe$oÍ[µ{s&²Îîµ½TXQ/&85ãðO7wqÏhbïþù¸¾Ü{EÜ7=†ï¡­Ö²\I ,þb)é­»«ó=,kgÚ9Á÷ìÒßè„x;–îƒßXÁ÷¼þ6øjjqœEÁ½ÅI<ßßî™IúÛÜÒÞ=…Xe±³øÛC¼å·Õ¼£XX•wc)ÿsðÂO“Š…/Ì%Ùö†v$‹%ÅéÜ7øï•ÎÎzó‹˜YkÞá%c^ÿÚ ùóTeÇgõ>ÍH[ù¶µ"hýçù÷ϤÊÍÿXEru÷F$«íYdÜ—97ò•Û•ñìŒõIeõƒåÜÿ³³£~T{þ|R»é¯ul´Ï™à.Ö9ãO›DúnÜ¿]ÂWÔ==Þ•œÏíçM&ýOô"QpéDþ~Ûì¢-¸"⫸‡ÑíÌÿéCø‹¨ÏÇ|e@Óóç ¢ú‚S8^ÊŸåïañ7{¾ÀW¶nqg´{úÿÝ8þÚÄÏvû·é}쇭íiê?üÆÍÀú6s>¦?ð…1|ÃúÿŽ¿Ö®[ÉNÒÙz^…D@Ò"IÓ|m X¯ÃG"À‹ êÃ?bf,úF' ‹;Ù}$ø#Ù¹ˆZ$‰ì‰€L.âûFüÎ"ÉG”$Ò!m=¯B" ñ%ý(l X¯}ê©§¨é£ÁI>ÙsÉ™KxD÷{wæ{¢êôâŒ<·Úóêþ´gfù1]ü7®ãƒ*%œ—MwÝRΰ—Ô–ûL q"]!ž"ÝJÎαàÞªSB±j~kK¾WwõO+Iÿêɬ¿žä§H/¹ô¯™Ç÷Ž6èÃÇ#Ë¿‹†Î"UœøÙìŒx;fb^‚Ùr¾â ¬.ÇMÃA­E)ròÙ¼ST·9_±Õè²6Rô8WŒ=e"ékØÜÙ‘»^Îκø<ýråÒ_XÊŸÛ6wó³g¢„àÞôhÞ¹]?d&©úe!ï¤umGÎ=Ÿ¥ãø©ìMßá¿/g°þwñŽbQÌ{ú~ÆWìñ_0b:ϠѥìßÒÆìo÷¼‚–ç½Å[‰}æÏ§!¯MçßóÒ~ÿeíªU•ÑOð¯Õ˜ãåââEÔþâ Ö¿x?Þñ.ß1Þ•„ ú…ôÞÑ’ýð¢3ÿ:ñ•ŠÕ÷m1¯°…¹7óŽô3»ñ3^pôTŸ×;5·Þ™qñ4¥¯Žåß•§âÜç6ðµû6 5eÁ]$&žÁWü~‡Mfý·Ïæ­äúg· ¥_tÞPÁ;è?œÃó_sëc~Ïúšãr³óù{n“ó=Rà<ËaL 69eñ=#Êkò÷åÒ!ìßyçò€/f³þÃÞâïÑο }•ú=ì‰öÕ³ùw¤ÖÇ÷û³þiüq+ØùiæT×¹‚EŒsÛ)ØÄó©RÀýç¾³€ÕéÀþëð+¾FÇúWð…%­æÏAýý™Oq™³žp¸8²ÐÑ»v)Ïwåç3Hÿoçq‡ßù†‚“ßç+IÊšu¡ö¡Ï¾J²víxŸ/R’€[Ï«H@𘘢­ëʼn/2¨CÀ½@ 36L_$2i îHdrq—pqÊ΂‰€ì|ÈÎE|ï ¨E"Àù‚ÂI À‚D€ø¤ä–¶žW!ÛoyÛjkÀz9dܸqÔtâ¡{‘wò2’³9_0n¼õKÎŒN-©JM/ç n þºq-g:«”r†5øÈÜ=Ťå)¼“X*éK·ÕU3WSU5I;ºný|Ä;+õœ§Òʾ'{ÎPÞÙjr²³ÁnuO#tyÊíœÉ.]Ãþ•õ¿½b"ëó¯·M§ªVÎÓ…ãîÈ ý+§³_ç>0“ª*ï¥mÊñ.úE•‹¿YJC—<3›dã3[’¬ºU´91÷µ¶qþGzï€ÔìÍ;rÕvâÑ?ªœ÷"ÔÇñ¹~ßÍIUõÅÛ‘óY0äWzÛö÷$çtâ{0ãîÈ ýóîà¸Ù§*ïü}U‡wtÂîÈ }B þU—ñVÐéí8NŸYÆ~­7°•èKNuîÕ½_þ|]5‘wä^Ñ6–^1xìÉéíýù á·y«ÅÍ[Š.‘äúå¼:ãòŸhüøþ|FÐy(ÿ·¿¿c$½‚{³cyÇvÍ`þþ2ïdÖ¼•Õn÷ŸNô&ê÷è² ›¿9‹ôŒ>Žõ׺“9µ¹‰ùÕqvüBÍcøÒ»¿™C#_:ŒýÛl0ó©!ÿΖ4b‡T_0ÿ]¾Òæ˜ßø{á®îÌ›'yDz •4/'ÕbÇÖ½3ZYv¶~~yÔlÄW\TÆ[­ìÆ3ü× ¬Á¿Ø?Íx‡Zèÿk‡Ø9"÷N²cgÙëü½sG{Þ=¡3÷?þ-æ3¡=ÿT4æù‹ÖÚáã®<ÇÞÊ·y‡÷™nüùí¾ë?ÿCöï'µYÿªü}QXÈõUœâB—öÅ Þœ·§’Â1'ðç`+VWpËç<ÿç–ó÷hA#~6Ð/øý⊲é_Î$}mvnMrÊȉ$gâã«ëü\ þ/ë¿s¬Þ˜¯ ¨Üùæîb¾n^UŠxüä/øŠƒõW“™Ê—Çp¼?=‡×[Z7§¶¢"ö{¥,æ~EU˜[Q?SbÝZæ=öýiÜ‚ øs% ñÈêÖ{SU‹-Z°þ*B?ë-)f}ÅŽ’"®Ÿ?ýúõÏиñýù{_èop7Çíå7ÜLUÕËùûº´„ë‹=â8ªTa·Ür õ?øàƒI~ûÚ}$ßïÍñùålî×Çý=„d¾½Øz^…D@¾EbÀãµ5`½¦D€™ìõHdç‚D@v.¢‰A"»D" ;Q‹D€ Á‰€L^%$˜Œ8ÑE"ÀIˆ @D€×7‡]õ¶žW!`WœX3[ÖPÓœ]¼’wFË8ñZP½5gÚ [rF¿Ì)׉xïßòOxGqÅXÞ!m,é^Z±0¬×€3ÂÎÿ&7•´c&øýríz[èü¶t/­Ð?Íyʰ“X/h}ûV¢IŠœp:gøKË8C¿å¥èrÛ Ò³n:gÆ×¬e@]œ¹‚b¶ÕØš¼ƒðÇmÓHÅŠ ÖwGNÌgÅ4žwÙÿýBUKV³þÚg·¦ri̧Á/ù–¯´i;j6é›Ïæ ÖÁWf”w®)¦JЏ¯½=?pï ý¼œw&fïÁ;Õv¯J¯»ó¼WxGqÀÊß©iÒ þ‚Û†wœjôpvœÜ–<>‹z^[—¿&,cýïTç{ kÝ$ ¦ìÝæß=îÄà'.e>­`nuNá­ì£½kÿrçæÐ7÷ç8ýa1ÇûµÓø{³s/­·¦Ü-ÓM¦úñÎÙ‹XÿIŸñV“kÚeU N€¼vþĉÑçiÕ«.g5?þÁ²ÛKü}ÚôŠ6\Á‹¿îýå«‚Mâ&aQvv\ׯäùιw&_~ +˜·‚Õµ~ˆ£å VT!ÔTî\ºô‰ã˜ý*ÇcçYEΕ03Îâœy–ÞÈvZÊþ;¬Iޱƒ+vz…Usù÷°ÑOsIÑWýœ ±Ú‚fpœVß} ª)«Î;xBÁF>>áñ»!ì-þ…wÒ»¬aý¯żõc}ë[µdýÕœ-_‡¯¸‡Ù‹ÿÂYìÈÞx‡ô¾Ç@‡!eô®¨û·j9ë;•E•;°|œEÅ,Ç1ÆÕ¯Ï;å§5û…Ê—ìÁŠWóxAûG9þw;ô@j;­b×­ßÝ>æÝ÷iÜùm&yÒ¶¬ø4ŽË«¾iL½O=d±³ã,vŠKœâb±s\…Ç•”0ׇÆÝ´=ëïÁ N}—×CKïMí}O>¤àâÞÑõnÙ¿ï14îÕƒ8^·ÞœŠ[ f.—ßpUì²ÛîúÝzDùÄO¤~Ï=Ç;Ä]:w ò§¯$¹š/H*èúß4æªoذ!I¡Çkþ⊄9ÎKJ˜×†«9nŸÈóþ¢¬é{à±gH–——“ ú2w.Çû[·¥!sÎáïåÞoó•`Gº›ê:¶/I1ß ú¿ÿþ{êzr¯}H~wÿ®Ô¿›ã{êŒß¨¾^}¾ƒ ^Äúþ /¤Þ÷]t,É[÷ZNò¤Zü~ò ’A_úÓ‹ºŽüà=’ýNíOòÖ»ª"Õý÷#FXuœHXå{&ckÀúB"À·#Ù¹ˆZ$‰ì‰€ì\D-Î ¬sŽD€Ãù4‰$þ÷]Dc" ~9Ò!m=¯B" ñ%ý(l X¯ý¿çÿšnzóß$—­à­šæãøÞÂÅùãZÎ=Ç^z‚ÖÏfuí2›wB&Õsväús&5¨w?±3WÛÙ09¬”3äo®âLuƒA¼cã¶,þwø¢¶khèSrïÈ…Õ?ã’iÈ“ûò–J¿‘œ‘o}ÇVaUeí?i_0ιWw»ÇyG¬ãàŽYû­‰€Š©œÙ_s%/TKnd Û>Äú£þÿöZçàçß8•Îwž2\ïžókÚR}IöGÐy‹~âUž˜IU“Ná¹vÿá°ª§¶¤ú²6¼#"Æ•K¾ãƒ–Ì¢!Ãg4»>ËúWÆW”mÍŸ‡ z§Þ>“ºÖîÂãö›Â;O÷dý‡¼ÎúgîÚˆúuæ¼ÊWç|¢²ìœh‰Lq¯ê‚øûà¬õ|Eϵ{ó OyŸõݲ>UlÜŠç!vš½NP„^ag™£ÿºæüýsƬÿ²OØ¿ïTçï¡•­x§Nèó;¯…¼+vd ٣摇w© y¸óqº×¹—vØ Þ‰ZÙ„wÒŠœ{B 7±}1_¡WìÄÎøx&髾‘·â^;”¯ØÝYð‚óï&³þ¢ì‡gž•ówü ô .â8g}õ#Ù{*/´fçðñí\9ÑŒwHÅ|+w{~+ËÎñ‰òw£xçp±³c_7L îÿ/ÿ<ò ?·îÔžæQäì°9zÅN®Ð'ÊâÞæáÿ÷[q™`T*(8þMþ<-o¹Õtè܉¤¸×·r'×¹gWìðòõ;êè£H¾8ä’ÓÎbÿRáÏ—j·p|Þ{ÿCTUËyʶ˜§Øie·üá‡hÜkü›ä˜>ü»2f6ëø;ú¡¡ÏR»{¼({ÙùàƒhÜè'®$ùÒá¬ÿšÏùs´zËÞTá•7ôÒãeçᇦq3_¾œä}ûñï–Ø1¾í?¯Rý{íC2è‹Xçì¼#P«} ½ˆ7¶ jÞÊ|ÖÄüŸóþ'Kzw[ÊñÓ°¿?:wGªs䘠SÎÚïàî]©~@CÖóá\þü7ïq>Õºôš¬ã‚Vnßq êúÄ^3Höy‡?§/¼ó)•;m½MPUÔOp;£M6ã/‚÷Žæïý_äï÷y ¹Jy–Î"Þž:šVlèF½þïå·³ô^õûï¿SçNíZ’<°C9Én§pœŸtÚYÁ•eé9qâDª=îÀ=H.Z¹žä7ã§lÒ´)ɰ/‚ÿ¥—^JC¯p$ÉEjœ<}vX•ÔÿÝw˜g«Ö/:tˆ¤'­ƒw÷¶'¶x²yذ^˜ð"“½‰€ì\ÈÎEÔ"À$Ä ®8Qe$˜Hü/àÏÌA¼º×—H2™‰€LI/¹ãÞ–ãA"ÀOX6[ÖiΜ9TuÀ©|¯W)'Þ+Ÿ2|Ô¬ùÔ^£:ï8=_À™æÚ'ðˆ[_ÐòüçùÞ°ó6üACʪñŽÛ½óªS¹îÎÕ'úU^Pç{{‹åÔTäüßü…ã9£½ù%mÄHRüïð0燋{ßÁ[hÍb>3àçéÚŸôâÆRÞX)Øái~ÓÖùÿjq%îeýçÎ+ž»~ÚœŸ5w朇 4¼›¹µ¿žwÖÅNäŸ7ÿ’¢Ê²ëéÎbGó×aì׊_WSÿ Wgâ­z3ëo1wŽÀ•ÇÁfþ¼÷Ø'ì8×/çú•Ãyg÷ N÷ÍïaýµâøÿÛ+vˆ'q¢U¹ƒì\Z[±ˆw‹¾û•4þt¦˜è8„ùoèÔš*ªÖ,ãgÇYœØVJ1Ü™æòÍþøÆ}z"+)(ØùIŽŸE šSUy Þ!|ÄΪ۟¿þ8‹ú×Ýœw²ºUçÏõÓÎÓÇ…þÎñ|Ë·ìLUÕjðN¬ûÝʲ¸·ÖÙñ:égwdMÞ!½¾k^ÅaZÐ~ëëÙç8j(*d^bGWìä¹vvEù£·ß¡qÇ×ûŽäÙ;±þ~d.·Œçœ3ο„Š]÷úVÎÛýÔj§|ÿ7Ò¸s[Ž#yTGÖßï]Þy-hsUô=õ ’b'Lì´º¥h?çœs¨ÿÆU‹HÞ³Ó4’]9Ì Z=Ä\n{à1ªßiç]Hzés׋òNÛnEãÞ=|É*ÎS¸{¼²•¿7™dݺâ^_ª ðRÛ‰·Yçðçàù)ü}ümõž4ZÜ \ZÊ;²TR—•+W’lØ€çµâR˜£ßâ+$z_x/µyl’Aç-~gÅŽwϽºÐø©§óç¬Þ]ï?ÿŸ‡ºõØu ñ2fÌê}é)ü”ðûº-£ò£ù{à¿Ùß!Tft}å•W¨üÜM§Üѹ ciûã©|Ë=gô[»äµ³¦Êï).F~=㔾4¶úOÏ‘_À;è#ÇŒ¬óï?€¿ÈŠçCÕ;:äå×Ýú÷n‘ßï´M{»|ÿn=7üC*o¿ƒóR³à.vF›:ßû++Ö¦%ËV…Ô˜»{±óLˆÃ{ìM_~{Tî[—,YB=7ÚœäýwÝFò´³Ô»ÛÌ™3©Ã»ì@ò›±ü½ß¤i³Ü}Zÿ믿žz^vÇË'_|ë3Íqî"îãè’9‰™4S¤ËÖ€u#F"ÀM$X‰>³uŸ°#àÄsâ/"1€D@1'þîÄœ'þn‰D@æ÷³øE" “‹»„D€›Hf‰€Lî™DÄ÷™\T—w$’¶XÀé'¾[Røïs0gxçtäÐ’Z¼Pÿk|Ô’?È:O¾ñK^¨>¿‘¯ X·ïðˆ±s)N€*wœQѾt4g‚/ªÇ;+—îÁ.l|!Û[È÷Z-oÏú«²]¡WìèV)àGQžõþl_Û¹"à¶mx'ªo ¼=õ\=™ç¿¦UCê_äì|Šã(tæ+žê,æ-ì/üj:{r?μï· œ¿.è3Šõ—:ÿ«[ÅÙrwŸ8‹²›ÓüñSIá¨xç¬3'Ì Æò†BÁ¡o°þ†[µáù{ì€Vî:}QþòÝiÜÏgo ¹9oü À;¯wMiNõÛìÆ;bœ¸çWð*v슧3¿ñÒ›4nÖÌY$7]K¢òå¨×ÙP•-»S]ggTì‹^ñ4éÒж'ÍVIDATbÞyOw^±œï¿þÊ‹hüשּׂÔý¿7UoæxxäÑÿP}ý HºO¨ÄN®»~ÆŒÔÿΫ8Ã?±?Çϧ³Xï…_·¢ödžñž{¼»ì¶3zôhÿäH~p Çÿ5Ÿ³?7tæÑËþÍ;Qîñ^úÅ÷ÍqÇGzÇîoˆÌ2™ùZt‰%û}_üïüë¾²äÂ+x'3ªrÁ¿ ‚?O3¦N&U/¿ó1ÉíºìUuƸNm9îgÏãÏÁ’«3Úãj×äïõ}vãùÿàÓ¸*iüúõëIŠ+{äA*÷î{j,ý‚»ø?õ·Ûšô}ýí÷$7oØ(–~1xܸqôöò Ï!ùÎH9\„þ?þ˜Þ~÷õh’ƒ.¹J4I‘ß~û-é)užeÓy[þ\ÅU.ø‹DFi ÿ~;2®~ŒÏN@pljhv>ªkÁ_5áìúmåŽD@vå}­­+ƒDÿ‹$Ä'‚%™<Ü%$ÜD¸,¾ï‘ÈΉ€ì\D-‚dâû‰€ ´ä÷ùLƒh´•;A¼—‡}l Ø ®_šðÒÛ÷á§Æ÷ñÎëò•Î¥AºúýûZ¾—­ðÓë©eÛfUI>åÜ üÚûÑv\÷VM6#}»,æíï–Ô¥r§^—’å{^‡ø‚ê·ìÐ1‚Ö¿†ììîÄx;€â)í›óN_YqÒ;nòt’ ÅÛüé§ŸHÏ{ò•5j×£òç *Äxùä“Ohô©½ùʋÎ8šÊw Cë_ÜO>ùdÒsÑÀÓH>1Œã¿Ç‡ÆÒ/?ðÀ¬ÿ‚A$W®âø‘µxé%¼Cÿõ§#HÿG_ަ¥Ès0—VÍ8NÄÿ²ÇU.â~ÛŽíIÕ±}øÊŒwÚ5®j/®¸xô!æß÷dþÕ¨QCŠþ5kÖžY¿þBr‹6|‰“¸’IŠJwœ)€@%ø€¤  ¸+€B%ø‡€%±«­Ü‘èä4©²5`ƒ2F" 7)$²óqD@v>Hdç"j‘$2%™§ÄUMãÅCǶqv^?ÿê¿Tß`3~vB\#Ó§ó•— Hª^þN\•ã¿ûŽŸ)1î[Ž›~ýÏÌhZÜyäRQTÈšZmÑ&ªJŒ A@ðÇ ihº‚»ˆ1T€ x1†‚{ x†‚¿ˆTØÊ‰€Î̇!¶lPöHä&…D@v>"î‘ÈΉ€ì\’^+≽žw½¼ÝÖÀßMDOÜõpö²þ^dÔÖÛʉµ~O¬v[6(Ð^xºö?å$’K–­$)žrTW¿;ïäâÞ~™º¼ýÑ—^]CÕ î»îÌ÷xo^·?ç"¹Oa¾å†“ÞžLRÖSÁÅ%ÀÃ_{…ôî×£'IY÷oÚ´‰ô­_·ŽdI)?Už ^œI€B¸‡€¥ +ø+€@%¸€¤° ø+„›C5¸ç€£¡ ü5@ÎbÂVîHdqªþzxWROˆÈÅHdçcëuöÙ¦§ÜÍúüÍðw3Ü…Uð$ôJp×ËÛm üÝDô”måŽD€ÿ'Ί­›8!' î!Iîþ’TîA)êþŠÀú¨w@Š›Á_1`õàîFS5økí2c+w$\ŽB‘ ذi÷¸›õ0ø›áîf¸ «à/Hè•à®—·Ûø»‰è)ƒ»Î^VÀß‹ŒÚz[¹# Öï‰ÕnkÀ&hÀ‰ƒ{@PŠº¿"°>jÁÝâfðW ØC=¸{€ÑT þš@»Ì€» ˆæ"øk•;fâÁz«¶¬õàbNÜcŒ9ücŒ8Ü#‚“4 ü% ©ÜC“Üü% ¨Ü‚RÔ üõQk+w$|—¯Í¶lÚýîf= þføƒ»îÂ*ø z%¸ëåí¶þn"zÊஇ³—ð÷"£¶ÞVîH¨õ{bµÛ°‰pâà”¢n௬Zp÷¤¸üöPî`4Uƒ¿&Ð.3àþš;ælåŽD€™x°Þª­k=¸˜÷˜cÿ˜#÷ˆà$ I Cª÷À$wÉ@ª÷€ uE`}ÔÚʉÇåk³­›v€»Yƒ¿þàn†»° þ‚„^ îzy»­¿›ˆž2¸ëáìeü½È¨­·•;jýžXí¶lbœ8¸¥¨ø+ë£Ü})nÅ€=Ôƒ»MÕ௠´Ë ¸»€h.‚¿fàŽ9[¹#`&¬·jkÀZ.æÁ=&À˜ÃÁ?&ÀˆÃÁ="8IÃÀ_ÈjÀ=$0ÉÝÁ_2ЀêÀ= (EÝÀ_Xµ¶rG"ÀÇqùÚlkÀ¦ÝànÖÃào†?¸›á.¬‚¿ ¡W‚»^Þnkàï&¢§ îz8{Y/2jëmåŽD€Z¿'V»­›X 'îA)êþŠÀú¨w@Š›Á_1`õàîFS5økí2î. š‹à¯¸cÎVîH˜‰ë­Ú°Öƒ‹9Ap 0æpð 0âppNÒ0ð—2¤p Lrwð— 4 :pJQ7ðWÖG­­Ü‘ðq\¾6Û°i÷¸›õ0ø›áîf¸ «à/Hè•à®—·Ûø»‰è)ƒ»Î^VÀß‹ŒÚz[¹# Öï‰ÕnkÀ&hÀ‰ƒ{@PŠº¿"°>jÁÝâfðW ØC=¸{€ÑT þš@»Ì€» ˆæ"øk•;fâÁz«¶¬õàbNÜcŒ9ücŒ8Ü#‚“4 ü% ©ÜC“Üü% ¨Ü‚RÔ üõQk+w$|—¯Í¶lÚýîf= þføƒ»îÂ*ø z%¸ëåí¶þn"zÊஇ³—ð÷"£¶ÞVîH¨õ{bµÛ°‰pâà”¢n௬Zp÷¤¸üöPî`4Uƒ¿&Ð.3àþš;ælåŽD€™x°Þª­k=¸˜÷˜cÿ˜#÷ˆà$ I Cª÷À$wÉ@ª÷€ uE`}ÔÚʉÇåk³­›v€»Yƒ¿þàn†»° þ‚„^ îzy»­¿›ˆž2¸ëáìeü½È¨­·•;jýžXí¶lbœ8¸¥¨ø+ë£Ü})nÅ€=Ôƒ»MÕ௠´Ë ¸»€h.‚¿fàŽ9[¹#`&¬·jkÀZ.æÁ=&À˜ÃÁ?&ÀˆÃÁ="8IÃÀ_ÈjÀ=$0ÉÝÁ_2ЀêÀ= (EÝÀ_Xµ¶rG"ÀÇqùÚlkÀ¦ÝànÖÃào†?¸›á.¬‚¿ ¡W‚»^Þnkàï&¢§ îz8{Y/2jëmåŽD€Z¿'V»­›X 'îA)êþŠÀú¨w@Š›Á_1`õàîFS5økí2î. š‹à¯¸cÎVîH˜‰ë­Ú°Öƒ‹9Ap 0æpð 0âppNÒ0ð—2¤p Lrwð— 4 :pJQ7ðWÖG­­Ü‘ðq\¾6Û°i÷¸›õ0ø›áîf¸ «à/Hè•à®—·Ûø»‰è)ƒ»Î^VÀß‹ŒÚz[¹# Öï‰ÕnkÀ&hÀ‰ƒ{@PŠº¿"°>jÁÝâfðW ØC=¸{€ÑT þš@»Ì€» ˆæ"øk•;fâÁz«¶¬õàbNÜcŒ9ücŒ8Ü#‚“4 ü% ©ÜC“Üü% ¨Ü‚RÔ üõQk+w$|—¯Í¶lÚýîf= þføƒ»îÂ*ø z%¸ëåí¶þn"zÊஇ³—ð÷"£¶ÞVîH¨õ{bµÛ°‰pâà”¢n௬Zp÷¤¸üöPî`4Uƒ¿&Ð.3àþš;ælå^ؽ{÷Mfä¶:vìXêÐ¥K—ÜѪ„ø+Áê«Ü})íþJñz*wO4ZÀ_ æ÷ ÑZþZqW÷JFÞ€¿ì¶rG"ÀLjmåŽ[|—¯Í¶^Â’v€»Yƒ¿þàn†»° þ‚„^ îzy»­¿›ˆž2¸ëáìeü½È¨­·•;jýžXí¶lbœ8¸¥¨ø+ë£Ü})nÅ€=Ôƒ»MÕ௠´Ë ¸»€h.‚¿fàŽ9[¹#`&¬·jkÀZ.æÁ=&À˜ÃÁ?&ÀˆÃÁ="8IÃÀ_ÈjÀ=$0ÉÝÁ_2ЀêÀ= (EÝÀ_Xµ¶rG"ÀÇqùÚlkÀ¦ÝànÖÃào†?¸›á.¬‚¿ ¡W‚»^Þnkàï&¢§ îz8{Y/2jëmåŽD€Z¿'V»­›X 'îA)êþŠÀú¨w@Š›Á_1`õàîFS5økí2î. š‹à¯¸cÎVîH˜‰ë­Ú°Öƒ‹9Ap 0æpð 0âppNÒ0ð—2¤p Lrwð— 4 :pJQ7ðWÖG­­Ü‘ðq\¾6Û°i÷¸›õ0ø›áîf¸ «à/Hè•à®—·Ûø»‰è)ƒ»Î^VÀß‹ŒÚz[¹# Öï‰ÕnkÀ&hÀ‰ƒ{@PŠº¿"°>jÁÝâfðW ØC=¸{€ÑT þš@»Ì€» ˆæ"øk•;fâÁz«¶¬õàbNÜcŒ9ücŒ8Ü#‚“4 ü% ©ÜC“Üü% ¨Ü‚RÔ üõQk+w$|—¯Í¶lÚýîf= þføƒ»îÂ*ø z%¸ëåí¶þn"zÊஇ³—ð÷"£¶ÞVîH¨õ{bµÛ°‰pâà”¢n௬Zp÷¤¸üöPî`4Uƒ¿&Ð.3àþš;ælåŽD€™x°Þª­k=¸˜÷˜cÿ˜#÷ˆà$ I Cª÷À$wÉ@ª÷€ uE`}ÔÚʉÇåk³­›v€»Yƒ¿þàn†»° þ‚„^ îzy»­¿›ˆž2¸ëáìeü½È¨­·•;jýžXí¶lbœ8¸¥¨ø+ë£Ü})nÅ€=Ôƒ»MÕ௠´Ë ¸»€h.‚¿fàŽ9[¹#`&¬·jkÀZ.æÁ=&À˜ÃÁ?&ÀˆÃÁ="8IÃÀ_ÈjÀ=$0ÉÝÁ_2ЀêÀ= (EÝÀ_Xµ¶rG"ÀÇqùÚlkÀ¦ÝànÖÃào†?¸›á.¬‚¿ ¡W‚»^Þnkàï&¢§ îz8{Y/2jëmåŽD€Z¿'V»­›X 'îA)êþŠÀú¨w@Š›Á_1`õàîFS5økí2î. š‹à¯¸cÎVîH˜‰ë­Ú°Öƒ‹9Ap 0æpð 0âppNÒ0ð—2¤p Lrwð— 4 :pJQ7ðWÖG­­Ü‘ðq\¾6Û°i÷¸›õ0ø›áîf¸ «à/Hè•à®—·Ûø»‰è)ƒ»Î^VÀß‹ŒÚz[¹# Öï‰ÕnkÀ&hÀ‰ƒ{@PŠº¿"°>jÁÝâfðW ØC=¸{€ÑT þš@»Ì€» ˆæ"øk•;fâÁz«¶¬õàbNÜcŒ9ücŒ8Ü#‚“4 ü% ©ÜC“Üü% ¨Ü‚RÔ üõQk+w$|—¯Í¶lÚýîf= þføƒ»îÂ*ø z%¸ëåí¶þn"zÊஇ³—ð÷"£¶ÞVîH¨õ{bµÛ°‰pâà”¢n௬Zp÷¤¸üöPî`4Uƒ¿&Ð.3àþš;ælåŽD€™x°Þª­k=¸˜÷˜cÿ˜#÷ˆà$ I Cª÷À$wÉ@ª÷€ uE`}ÔÚʉÇåk³­›v€»Yƒ¿þàn†»° þ‚„^ îzy»­¿›ˆž2¸ëáìeü½È¨­·•;jýžXí¶lbœ8¸¥¨ø+ë£Ü})nÅ€=Ôƒ»MÕ௠´Ë ¸»€h.‚¿fàŽ9[¹#`&¬·jkÀZ.æÁ=&À˜ÃÁ?&ÀˆÃÁ="8IÃÀ_ÈjÀ=$0ÉÝÁ_2ЀêÀ= (EÝÀ_Xµ¶rG"ÀÇqùÚlkÀ¦ÝànÖÃào†?¸›á.¬‚¿ ¡W‚»^Þnkàï&¢§ îz8{Y/2jëmåŽD€Z¿'V»­›X 'îA)êþŠÀú¨w@Š›Á_1`õàîFS5økí2î. š‹à¯¸cÎVîH˜‰ë­Ú°Öƒ‹9Ap 0æpð 0âppNÒ0ð—2¤p Lrwð— 4 :pJQ7ðWÖG­­Üÿ³fx×êüÖIEND®B`‚wagyu-0.5.0/docs/split_self_intersection.png000066400000000000000000003004501360766232600212550ustar00rootroot00000000000000‰PNG  IHDR"WvS iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ¥J! J AÅŽ,*¸v± ¨èªˆm-€¬Q,,ìET”u±€•7I]÷•ï|3÷Ï™sÎüçÜ™ûÍ ìÈrPrùù˜`?fRr “$ü)0b±Eßèèpeäùw¸m¡\·–ÆúçøUWĉ†8#bçB| \›-æ@hƒz£™ù)~±º€H–â 9Ö‘â49¶•ÙÄÅøC™Êb 3P’Æg°3`%Ķ|ñvˆ½Ø™,ĈÇåæÎ€X™ ±yÚwq2þ3m4&‹•1Šå¹È„À rX³ÿÏrüoÉÍÌa5S#ÍÖmoöŒ0)†Ü‘“ü´È(ˆÕ ¾ÄãÈì¥øn¦8$~ؾ—-ò‡5 PÀa„A k‰2ÄÙñ¾ÃØž%”ùB{4’—7ŒÓ„3b†ã£üœÈðá8K3¹¡#¸’+ Œ±Iç…B Wz¬03.QÎm*à%DB¬q›(;6lØ÷aa¦äˆP#ål ñ»taPŒÜÓÌä…Ù°Y²¹4!öÉÏŒ ‘ûbI\QRø7 PÎãpùñÃÜ0¸ºüb†}K9ÑÃöX%7'8F^gì°¨ vÄ·#.0y°ÇY¬‰ÑrþØ€ ?:NÎ ÇA8ð€ İ¥ ðZ{ëzá?ùH`!È\`=¬ñH”ða ÁŸqhÔÏO6ÊPÿeT+ï­Aºl´@æ‘ žBœ‹kã^¸{ØìqWÜmÄ©<2+1@ !-Fy°!ëØ„€÷otaðÉ…ÙI¹ðGrøð”ÐNxL¸Iî€ðDeØj:¯Høs&ˆ-h8»4³gÄ7…¬p?Üò‡Üq® ¬qG˜‰/î ss‚ÚïŠG¹}«åóIYŸÏ°^ÉRÉi˜EÚè›ñµú1Šÿw5âÀgØ–ØRì(ÖŒÃ.c'±:ÀÄÎ`õX vJŠGWÂÙJ™-FÆ-ÆáØØÖØöØ~þÇì¬aBÙûùÜYùÒ á?C0[ÈËÈÌgúÂ/2—ÊgÛŒcÚÛÚ9 ý¾Ë?o²ï6¸òM—w·R¨Ìø¦cpâ)ôo:£7p{­àT[,,ëpiG  w†ÐFÀædœð`"ˆq LƒUϹõL0,%  ¬ëÁf° ì{Ápԓฮ‚6p܃k£¼}` "BBhÑBôÄ ±G\/$ Gbd$É@øˆ™‹,FÊ5ÈfdRüŠœ@Î!—‘väòéAÞ ŸP ¥¢ê¨.jŠŽG]Q_4 C§¢hZˆ£+Ðhº­EÏ¡WÑ›¨}‰öcSĘf¹bþX–‚¥cBl>VŠ•cUØA¬¾ëë˜ëÅ>âDœŽ3qk¸>Cðxœçáóñåøf|/^‹7á×ñGxþ•@#è¬î„PB!ƒ0“PB('ì&'\€{§›0@$D3¢ Ü›ÉÄ,âârâVâ!âYb;±‹ØO"‘´HV$OR‰EÊ'•6‘ö“Î:HݤdE²>ÙžDN!óÉEärò>òirùyPAEÁDÁ]!J£0[a¥Â.……k Ý ƒUŠÅ“GÉ¢,¢l¤¤\ Ü§¼UTT4TtSœ¤ÈS\¨¸Qñ°â%ÅGŠ©jTKª?u UL]AÝC=K½C}K£ÑLi>´Z>m­švžööA‰®d£ªÄQZ T¡T«Ô¡ôJYAÙDÙWyšr¡r¹òQåkʽ* *¦*þ*,•ù**'T:UúUéªvªQª¹ªËU÷©^V}®FR3U T㨫íT;¯ÖEÇèFt:›¾˜¾‹~Þ­NT7SUÏR/S? ÞªÞ§¡¦á¨‘ 1K£B㔆„1L¡ŒÆJÆÆ-Ƨ1ºc|ÇpÇ,spLǘ÷šc5}4¹š¥š‡4oj~Òbjjek­ÖªÓz k[jOÒž©]©}A»w¬úX±ì±¥cŒ½«ƒêXêÄèÌÑÙ©Ó¢Ó¯«§¬+Ðݤ{^·W¡ç£—¥·Nï´^>]ßKŸ§¿NÿŒþ ¦Ó—™ÃÜÈlbö脈 v´ šÆ2|`D1r5J7ZgÔhÔg¬oa<×¸Æø®‰‚‰«I¦É“f“÷¦f¦‰¦KLëLŸ›iš…ššÕ˜Ý7§™{›ç™W™ß° Z¸Zd[lµh³D-,3-+,¯Y¡VÎV<«­VíããÜÆñÇUë´¦ZûZX×X?²aØ„ÛÙÔÙ¼o<>eüêñÍã¿Ú:ÙæØî²½g§f7ѮȮÁî½¥=Û¾Âþ†Í!ÈaC½ÃkG+G®c¥ãm'ºS„Ó§F§/Î.ÎBçƒÎ=.Æ.©.[\:]Õ]£]—»^r#¸ù¹-p;éöÑÝÙ=ßýˆû_ÖÙû<žO0›À°kB—§¡'Ës‡§Ä‹é•êµÝKâmàÍò®ò~ìcäÃñÙíóÌ×Â7Ëw¿ï+?[?¡ßq¿÷þîþóüÏ`Á¥­jñ›eÕõ;Ï >B YҪʭí›è2qÞĦ0jXlØæ°Çá–áÂð†4bbÄÚˆû‘&‘üȺ(µ6êA´Yt^ôo“ˆ“¢'ULzc37¦9–;=v_ì@œ_Üʸ{ñæñâøÆå„) Õ ï×$J’Æ'ÍKºš¬ÌK®O!¥$¤ìNéŸ8yýäî)NSJ¦Üšj6uÖÔËÓ´§åL;5]y:kúÑTBjbê¾ÔϬ(V«?-4mKZÛŸ½ý’ãÃYÇéázr×pŸ¥{¦¯Ižá™±6£'Ó;³<³—çÏÛÌ{’µ-ë}vTöžì¡œÄœC¹äÜÔÜ|5~6¿i†ÞŒY3ÚV‚$Ï=o}^Ÿ0L¸[„ˆ¦ŠêóÕáQ§El.þIü¨À« ¢àÃÌ„™Gg©ÎâÏj™m9{Ùìg…A…¿ÌÁç°ç4Î5˜»hî£y¾óvÌGæ§Ío\`´ xA÷Âà…{Qe/ú½È¶hMѻʼn‹Šu‹wýüSM‰R‰°¤s‰Ç’mKñ¥¼¥­Ë–mZöµ”Sz¥Ì¶¬¼ìóröò+?Ûý¼ñç¡é+ZW:¯¬\E\Å_ukµ÷ê½kT×®éZ±¶vs]éºw맯¿\îX¾meƒxƒdcøÆúMÆ›Vmú¼9sóÍ ¿ŠC[t¶,Ûò~+gkG¥OåÁmºÛʶ}ÚÎÛ~{GðŽÚ*ÓªòÄ;ŸîJØÕü‹ë/Õ»µw—íþ²‡¿G²7foSµKuõ>}+kÐqMÏþ)ûÛ¨?h}pÇ!Æ¡²Ãà°øð‹_S½u$ìHãQ×£™Ûrœ~¼´©]ÛW—Y'©O®o?1ñDcƒGÃñßl~ÛsÒàdÅ)S+OSNŸ:Sx¦ÿ¬àl﹌s]ÓïO:£iRSë…° —.]<ßìÛ|æ’祓—Ý/Ÿ¸âz¥îªóÕÚ§–ã¿;ý~¼Õ¹µöšËµú6·¶†ö í§;¼;Î]¸~ñFè«7#o¶ßŠ¿u»sJ§ä6çöó;9w^ß-¸;xoá}ÂýÒ*Êê<¬úÃâCgÉ©GZÇ>¾×ÅîzùDôäswñSÚÓògúϪŸÛ??ÙÔÓöbò‹î—‚—ƒ½%ªþ¹å•ù«cùüÕÒ—Ô×ýZøzèÍò·Zo÷¼s|רÝÿp w`ð}é­{?º~lþ”øéÙàÌϤÏ¿X|iøöõþPîЀ%dÉŽlhz:oö@K†gx£(Éï_2AäwFÿ Ëïh2'—=>Ä/ žQ*a3˜ ŸÒãwœ@FÛ°ˆÒì屨ðCø04ôVR_„CCƒ[‡†¾ì‚dïp6O~ï“ žñ·kJQK§ øQþ±lCô²’… pHYs%%IR$ðŸiTXtXML:com.adobe.xmp 1314 1050 Bß4iDOT (  ïµh…t@IDATxìÝw`TÅöÀñͦ‘лT)‚úDšˆT M¥‰Ø©Šú”.ň"ØËQ¬(  E,ˆ•ÞD¤÷ ’Òó{¿s6OCHÙrË×?öì½{wæÌg–$žLædý÷?ÿyM Y»ë¤ís·ÅK ,ê̱¯3³ÈùÌ‹7*–ãuœD¬"v&]†RòÇrœ¿Ì*Cc €€%¶nÝ*ãèØ·½ÄEZb\ +œÙ ÃH9–¢Ã‰Ñ˜éŠ)±ir>$#Hâêõ;%V¬XQ¯çð“@…HïÊSˆô®/­#€€y(DšwîÈì!@!ÒóÌ(Í)@!ÒœóFÖ àpPˆôÑ§à†ŽÍ¥§Äö§$FJŒ{{¿Ä¨#gõø– K6‹–È `u´E:žž)O®¾új«™ñ!€¦˜òŸ)’ç›[_“ÕPÿrÇÉ“$8þÆ>a¥“úÿ‘÷^¡èXÕõ¿‘Ùñ®EEåºæÿ"±Aƒy@ü%@!ÒGò"}M7 `: ‘¦›2F›Pˆ´ÉD3LS Pˆ4å´‘4üW€B¤?­no)=<¾Aâòú¬Ÿua¤c͵®‘ÍYéã©¡;ð“@âý:صè’Á„g^ðS&t‹ p¾@›.­åðdëcƒ£t¯¹ó¯á9øWà´ë^Uœ‘D~¸#Ã-¡n ôÞ÷<ý¾œïÚµ«Ûë €¾ écq ‘>§;0¼…HÃO "€€M(DÚtâ¶©(DšjºHþ+@!Òǃïí&=Ö›/ññF™{.Ô»i¯º¶¼—l^\" €€]ŽÛ-Cíܹ‡ÄáOŽ•XµjU‰< €øF`÷nýzÜuPgé0¸»oú¥(¸Àéô^§¾<.¬ë§+#ß\"Ç;O8dèЂwÂ;@Pˆôb~š ™-®E; Pˆ´Ól3V0²…H#Ϲ!³…Èœ]8‹Æ é£9yø]ásuÂbéqÀUº'Zv÷w/Ò‘˯Ñ‘¥n`Ed¶ ¬-pjéI`«-ºÙÕeäøµuá¯iØXâQã$6oÞ\" €Þ˜>ãmiøåu“$k¢wÝõNo´ŠžHšš.Í,[ð“Ä뮽Râ ¥u¥dt³~r<å­iy@ü%@!ÒGò"}M7 `: ‘¦›2F‹ Pˆ´ø3 éel ‘^¦y0½…HÓO!@‹ Pˆ´Ø„2K Pˆ´ôô28,)@!ÒËÓ#=lݺUb@€þÆÊéÔ•‘ÙÇaaºÒçÉI£åº#öI *$‘@ÀjgÖ'È.ûþ Ä…]t­øŒ úuòÝÍr>$ª¬Ä¾’x÷=÷JŒŠbå¸@ð€äQàôéÓrå“Ãõëi­zWËq·îwHÌÌÔ¯Ãt”ã;%ð€H[®ÿ^‡·)ÙÝÛó¾\³<~\ï¦]¶¬þ\•ëżˆxQ€B¤qÿ¿i ‘^¦y0­…HÓN‰#€€I(DštâH(Dæ€Â)0……HƒNS§»õ7чì• ƒJ4SÒB &p`ÌNycÍÀ4‰ë馹%ê•ã{Ú?$ñå^–È €€gÚ\ßPŠ<ý§Äõ'tȈˆH9>]6Ub©î¥$†–‘Èø_ y—þûl“®{¹¾þÂëþOŠ @|PˆÌ–//¥éKmúBPˆô‡:}"€…H>˜W€B¤yçŽÌ@@(Dü“pû½·I†û¯Þ%1¨LÎ+#³Òu%Qòþsr]‘*ºçd@îµfða’ØH #Y÷4:õÅ1uP ]Y¼‰îù˜™¦_Ï>Õ8ë~\o#†Šx_`ãÆÒIïÎ-%nè/qõaíûÓ­úóãœm3BuÏò¨vºB2ªE ½Gð™@zb†ôùþûûõ«ß|Ö7!€ž éIM/´E!Ò ¨4‰~ éW~:G"ù `> ‘æ›32Fœ(Dæìb¸³]è,9í©·CbPY÷•‘ûFn—ó®•‘5^®c¸1 ”ïô7ÿo=4MÞÖ¢E‹ü¼k@.!ЭÓrÅ=E—JìZWßp.]ã?9åÉô5ºR½jï ry]q½€Gð˜@Úý‡—«{@¦ÆêÚ)1zyX÷pýeÁré³téÒ뛆@_ Pˆô¥v!ú¢Y<ÞŠ¦ iÊi#i0‘…HM©Z^€B¤å§˜"€€K€B¤É> Ýût—Œw×Þ*ñØTÝ;òµÆú³GÕ=|ªN¬m²‘‘. à.´W÷¼m§{˜½;e†û!€J`Ë–-òþÎmô.Úk&Ëñ[«µÙJ]ÊÈ“Xy¥"<"ày?è¿Ãp½y½£RqÝ›µZ”®D.¤{kÿxT÷†Üwô¤ç“ E@À‡"}ˆí‰®(DzB‘6@À "Í0Käˆf iæÙ#w«Pˆ´ÊL2È«…ȼJìº*å‹IF³:&J,¦¿1»þs׊ÈIìi°)#( @ÚL}ã³’'%K–,`K¼ @ 'n¸JNïv”X¡O¥œ.ãxA ñ·SÒjÊ¢c7õÑ‘!ÚYöž­%_Ö%“Iɺg¤R¡I@À'"}ÂìùN(DzÞ”@À˜"9/d…Ö i¹d$æ i¾9#c(œ…ÈÂùùüÝͯ½BúœÔ`§Äë+êÝÕv¸¶ ¹î3]YíEVDú|rè¼"¸R÷ŠÙì)i¿×}½¼Ò"€v8uJWbµêÑB†rŸîMg7Æ‹€’¥H»Æë=Ü¡YÝRCÿò­Ü”09ñǶ½Ë–-«ðˆ˜L€B¤É&ŒB¤É&Œt@ Ð" MH €@Ž"sdá$~ év:E?PˆôzAº¼¢æeò¶ŽåŽH¬Y$òG !0þ|ÉcäÂá#Z1D^$€ν­ÿŸW1¨¨0\¶Mâ7{ôÿó¦Ì\"ÇMš4±3cG Pˆ4ÉäQˆ4ÉD‘&x\€B¤ÇIi ‘|0ž…HãÍ !€€g(DzÖÓã­ÅÆÆJ›/O'1îôi‰º‡30Pût­ŒÜ«w;èÛÞé õÿï>÷‰@\YÿJ‰cG •øþŒé'½þŽÄž={Jä0›…HƒÏ…HƒOé!€€Ï(DúŒšŽ@À&"m2Ñ Ó"M1M$‰ éD#6Ñg`oIk}Iý wP§Ó$'@à’é ºGäÞÛåÚ ­ô-¯mˆ'u¯¼FâQºr¼U+×z €$$$È™f·5•Ú‹Ÿ/ ⟠¤­Ì”¾†Þð„Äûï~ Ǿ-Z(ç[µj-1222Çë8‰]€B¤Ñg¨€ùQˆ, oCà Pˆ4Ü”˜\€B¤É'ô-%@!ÒRÓÉ`@ "ó€dæKúî'é¯)¶\bPuöŒ4ó|’;vˆýì¨ »_ê)‰O]ïÚ×…±h‡>yâ§pyRçšë%~ùõw®+ €ç |½øk96gÄ¢mØò|ž#à ä]©ÒM«´›$¾9ñM_tK €€ß(Dú} ¼›…HïúÒ:x_€B¤÷éì%@!Ò^óÍh)@!Ò˜óBV à} ‘Þ76D†=$y¬,ú›Ä ê9ï´cÈ6y½ÂC•%FÔ.*‘@À_ôýKº>;JWBn<¦™Lߤ+x>\§+ îî~»¼0`àp‰×]w^È# `3]»vɈ³ozØ´©î™ÍÐo`_yº¼øÏë…e¿DD/ ¤ŸÍ"¿.!ñׯõÿϼÜ-Í#€† i˜©ðn""½ëKë à= ‘Þ³¥e°¦…HkÎ+£²†…HkÌ#£@‚ Pˆ,¸)ßùèˆG$ïßC‘T#@âŸꊣëªéñáöº"2ê_ÜÍ”MÒX@àä÷±2в¿—x"E¿> ’㊕ëJ\ýËZ‰A®órÀ `cAéÏ{_ÎþP2B$vîÒUâ×+—J,9„Ÿó‚| —¦½|£ÿ¿ÿø9.S¦Œz§ @À8"3>É„B¤O˜é< @!Òˆ4¶ iËigРið "=ð™…HŸQ«£ÇG=& MŸü–ăuïµ® tïÈ}7U’óÑ Š+q²AÛÄÎÕÍ 3“\{)µ))c«¤{C¦ÍUŠ/^›/OjÔ¨aŠä&žž./‡ •¸o`¦Äy[ueùûjÜyZ[)ÙHÞ k¦{ÖE\®/ðˆ—HÚ™$×$þzRbFŒî]«+ OŸÔÅÂôÿ³:Z®7nü%Ûæ@ÀŠ"­8«y…È< q øU€B¤_ùéL,@!ÒÄ“Gꦠiº)#að³…H?O€¿º/¥wÃÞý°þ¯¸.0rÜüy ¤´§mE‰Ñײ"Ò_sD¿ »@ü†³rA¿ª$>1è‰ÜßÀ« €€Íž5\F¼î ‰O7KqØëZùÀB]!ùÇY݃÷òk»]Ç\\ í¨þ»Úüä.¹è­ú—f7VÓ÷T+®ñÃ/v§<™ññl=Á# `3 ‘6›ðìáRˆÌ– "€€Y(DšuæÈ|%@!ÒWÒôcg ‘vž}ÆŽ Y5¾'3S÷*W2J²_Û+Qb‰0ŒþÞÎáèò…®ˆÜw3+"M8ͤŒ€­²Òõ+WæÇº‚gÃO®¥¶R`° €À¥tÅcòSzí°eºWÝ;kõëh…®eå…·”ºtc\9 dÿ\rhÜNy}䕺GäàFúïlé^}Û »¯•'?ü¶6Çv8‰X]€B¤ÕgØ5> ‘6™h†‰€²à§i£Ig¨ P  ‘bãMäK ûç ‘ùbãb°¡…H›Lúýwë^$s¿øRF¬¿w8œúñìãÈð`y=ª[y‰á×éÝmÂÄ0@À„ÉßëÝ(ßì7U²oÕª• GAÊ €€÷ž£wéøÒ$é¤ô­¥%–è Ñ{=Ó2öˆyê€ ¾Eýÿ­±MuSÖ[¾(#çwA¤g) ‘–šNƒ^ éT+5ùô z{ůâæË°ë±2ÒJóËX°’@Ú§úõ釙KeX¥K³÷™•æ—± €@Áê__OÞ\¤¿îUçàǹ‚còN."º"S^Úb¸Äîîåvåî]»ä¸ï÷H\´ä‰‘‘‘n×q€X]€B¤Õg¸ã£YH@ÞŽ> é3j:B“ Pˆ4Ù„‘®)(DšrÚHü @!Òèfìr̤g$í…±_H ¬Ÿó¯ÒS¥Èëg–’Xú.½û¶ð€xQà̉Òz…%%¾óÁ§kÕªåÅ^i0®ÀŠ+$¹_ï+1´] q“%3L*¼;U2o•r£Ä7'½eÒ‘6 à ‘¾q6}/"M?… Ë Pˆ´ü3@ȧ…È|‚q9 Y4Þ‚¶ iëéÏÿàÇ¿ò¬¼é‹£ŸK ¼RÛH‹Õß|V÷> -,/T|ær½€G@ÀˇÇí”úVÖ¯GŸïŠãšuô ÕàQãäøÆuÅ‚—Ó¡y@ÀïOŽ-9|ž0Kb±zúuÑÈ8«w½ÿ*ZFóûâåC@¼/@!ÒûÆ–êB¤¥¦“Á `) ‘–šNƒ éDš@à""/Ãi@à"/ÄË9 L˜ü¼¼0këÇ~¦+‘¾¾Cï×yi¨œ¯8†‘9 r<%pvï9i*`Æ^‰[úêסìöë—'Çó«ô®”gJÈK›wî˾„ˆXRàšVÿ’qÜ›.Ñœóß–<ƒBÀËiºµã»ôî×eË–õr4XC€B¤5æÑ磠ésr:D‹Pˆ¼ §@Àö"mÿÀ‹"½ˆKÓ `i ‘–ž^ï îØÑ#Òø•µ«JŒ’&qžvÜú]ˆWWK" €€·N¼µ_š~ñ²‰=ëkOïoÔ8c«îÝ›&'îï;@âè§žÑ xD,&°nÝ:Q¯‰÷I íÄݲ-6Å Ç i§uåpÊ Ýk:ŵ~zŒœH‘^1Yߘût½îY¡B19?s扭Zµ’È `vßÿ]†pÓm$vhÛBb·»{KÜq@7Çý$æ9.vwËÈEàà+º×tøqýÿ›†ôâ:QúsEuý Çëët/üÉ/‘ øù"T^Br ™ §..@!òâ6¼‚¾ é[ozCãPˆ4Î\‰u(DZg. [€B¤±çÇ0ÙÅÇÇK.—W«$±E]y”©[¤82z|2>Y^ß›é”Xvl ‰< €žHø3QšŒ™uXbÔ-¥%–l¡wÅNúU÷rz®ÓD9ßµKW‰< €V¨Uµ¼ åñzÇ$.?)ñ³ ºgn¹+Âå8¤©~]Œn¨+Å¡úsšëÇ7¹†P˜)º2²C¸®Œœz£®ˆÌöéóMQyzÀ7$öî­+‘³_'"€ä.@!2w^u Pˆä£€F i´!ðµ…H_‹ÓŸ(DÚa–#øS€B¤?õMØ÷Â… %ëÔT½{œÓ©¿QÏŽzWÆMÛÿëæøL¢óZ×ÒIŽ™”@À Ù_VtAö?’̾ëeµ?t¯Ú…3ýãN €f˜3{–¤ÿåË$Îîï6œE;ôð½¿ôçµEéÊ®zkË Á¥ƒÝ®çþˆ_#E~Ѹé!ý÷óì/úƒGFó'åõqÏŽÿûMñ³®„œ±NsS¾KYy½ø%%^dI¹¼ÊöÈX¤ÿ>ß6D x ·ÄgZªËÞr]äÉG³õç =Ë# €À¥(D^Jˆ× %@!²P|¼< @!Òˆ4† ièé!9“ Pˆ4éÄ‘6^€B¤á§È Nû`ª dúÎÆÙS™óø2Ïeè ®=(Cø}ÎRœEK $l<+—ô¹ìA‰#¼Ô[x0•À—_ꊬ1Þ)yoÕŸ£*v-#Ç%Ú—6ÕxH ¤­Ô¿àÔ|¨¤Ñûž>né\U»š—+§+Œ¿ûy¥Ûë €ä.@!2w^õ…HAÒ ä[€Bd¾Éx˜L€B¤É&Œt -@!ÒÐÓCr ` ‘˜D3 aú‡Ó%Ýi«tïHg÷•‘Éõnû¦ëG¯"×GÖ)j¦a’+H +C¿Îd|(YmüåeG* €@á¶mÛ&tèÛNb‰# ß(- `3”=©2âæI­%N}iZ®›7o–×ëׯŸëu¼ˆ à.@!Ò݃#/ Pˆô20Í#€À?(Dþƒ„ `1 ‘›P†ã ‘~a§S°¡…HNº†üÞ'ïIoþ6EbjÑÓ‹-:,1ݵEä™î—Éqd]VD  P`äïÓ佯÷ùÄ6mÚ¸-ÞˆIàioH:¯ÿõªÄ¨†FJ\0´@F’þGØ‚(Ésù’†Î—ä@³ Pˆ4û š4 ‘&8ÒFÀÄ"MÁF…H£Ïù!` ‘Ö™KF‚î"Ý=8B ?"ó£Åµ €@á(DÞ °ìû%ò®ñƒî‘øã§ÜZiö‰®ˆŒí¢+"‹ÕcE¤ o“߯Ê{®Üp\â®ýºR¹F]9"}–Þ¥+WÜ£+"/L¤Èý ˆ3 úÿ)¡¡¡^Â1 €€(Dz•&ÿ)@!òŸ&œAßPˆô3½ €€ï(DúÞœ/@!ÒøsD† `o ‘öžÃ~ÞB]‘ôüüñ’«³¥®d2|â$ˆ†82~§ärù‰_ÐGãu%ö}÷?$çnjӯ3ÑÑцÉD@ÀžgÎèJ®ƒÿ-5ëÖ—Ø­{‰AAz·ßN:Èq°ž–ç< €€ œÝ qdÆA9±¡þåCõâúzíé‘òdÑOk%ÖªUK_à@À«"½ÊKã… YXAÞ"ù €€Ù(DšmÆÈ׈"8+ä„8"ù˜B`þ×ó%ÏñsÇJ h•ó^/¦ I"€€ORO¦I?û_лgF×Õ»c†·,)ç³2teDGg9~å¹W|’ €yh׺™\Zä„®ØÚ«{Ø —óñåôë\É®¥ôºrìq—W[®³@Ê<ýÿ†øÕÇdÐnH”øÑVý¹`è«säøæ›o¶ #Eü(@!Òøtw ‘y·âJP ‘|@Àì"Í>ƒäo ‘F˜r@þ ù·ÏL °hÉ"Érìì§%´ÎyedÒâòúé]I+<^U" €À…É3tïٵ߭“—ŠÑ»h_xÇ €€¯6oÞ,]ÞÕáz‰öÑ=ïÖÕLfo '³¶i<¨{ào¯+$£\+Àõj°—@êJýÿ„͆ÊÀûÞ×Wâ½Ý:Jܸê'‰?3Yâƒ>(‘@ï Pˆô®/­{X€B¤‡Ai"ù €€Q(DufÈË "Í0Käˆv iÇY·À˜ÿµŒâéGK h«+šÎºVBVß+çÿÈÔ½’Ê=Qãf à ¤_õnÚã;¼ ÍwëÚÍÝÐ& P`;oo'ïíúÄWè· ©Úä?9åÉõüe½+Êqdãh½€Gl$²Gÿa4Oj-£žúÒ´GÿÌèrþ®ûzI¬[·nŽ×q@À³"=ëIk> é#hºAÀ"m0É “ Pˆ4ù’¾O(Dú”›Î@| PˆÌ7o0’À·K¿•tŽz@âõAºò®šº'ÌkÃä|ù¬ˆ4Ò¼‘ FH‰Ñ•U7Ô’´}¢{Ñ)GrA{ lß¾]:¶¸Fb»êÉßÝ .º–•'%nѽ!õ,ØK ãœþü_d~1øŠ%+íÀh@“Pˆ4ÉD‘fÎ"svá,ä]€BdÞ­¸ü#@!Ò?îôj. ‘æš/²Eû Pˆ´ïÜ[bäo½:QÆñç¼ §Ý” qé^Þý«]+"G²"RExD‹ ¤©wýìŹrI­ZºBòb×sðµ@Ë–ÿ’.w:H¬ÐK÷‚ôuô‡€ÒfkVßÌп˜ªP¡‚Ó$'@Àö"mÿ07…HsÏÙ#`$ ‘Fš rAœ(Dæ¤Â9T€B$Ÿ@À"Í1OdyÀ´×_’3ÌÕ‘SÛœr»bÙ>=¼weyR~TM·×9@.ˆÿ#QNõ®Ø_⨡£/¼„c@À/§NéÏ9­z´þCîÓÜ~I†N0˜@ú2½[ü„»^”Ì:ÜÒÁ`’ €Àù"Ï×à¹i(DšfªHÓPˆ4ÍT‘(¶ i»)gÀù ™,.E @!Ò“@ yX¹r¥\Üñ–%¦¥§IÌÊÔß„fºšÊÈÐg•k—3QÃ˹^! €9 deèבø×ÎÉs>ø\bƒ r~g@ ÌŸ?_z¹p¸Äˆ–ú>êžnð©@Z\ºôwf“îýž›*ÇÎz·øô=>sTc»î”×ߟ1˧yÒ €@Á(DÌwùI€B¤ŸàéPˆ´Á$3DL*@!Ò¤GÚ Y 6Þ„˜F€B¤i¦ŠDψ—ÀÝ#);:N·óëÿX/ǽö¨Dgû ‰< € ¤Åé ëOí”—*F‡I,[¥¶ÄÁ#ÇJìtë­y@|%pßÃ÷JWë+®’V™‘¾²§ß ¤Ð•Ž»Çè÷ã!õ/ê”Ô\ªFkü+FãwŽ›åÉç õnÙz–G@£ Pˆ4êÌW®"såáE(€…È ñð‰…HŸ0Ó‰A(Dd"Hð’…H/ÁÒ¬±V­Ñ½%yùaI, ƒî=c¬,Éü)ûééþÑ€8‰Ã›ê Œ÷jV“7DÉ“-q¡'½2Eb÷=õ@ $&&J‹×ÝÚDbh/ýËwCsR ùPŠäµkü.‰óïÐ4ÛÕÐïÏkõÛ¶ãá•—Ë k6íÐ xD0´…HCOÉyJ€B¤§$ië Pˆ´îÜ22Ì*@!Ò¬3GÞž é EÚ@Œ'@!ÒxsBF^X³n´þÐÄþrß32~ÙI¹.¤v„Ä"t%”ð€–Xß{³Œ'ã–î@ëpÌÝ¢Ç3¶ê¦Tëë×ç'Lú ø·^À# àaÅß,–‡Î(±hö†ô01Í™HàØèÝ’mï:šô †çäIí·‹JŒ=­+ˆõU@Œ*@!Ò¨3C^^ éVEÀ"-1 K Pˆ´Ôt2˜B Pˆ,$ oG "@!Ò A¾X·atØÿ¹¾·¹¯Œ<ýÎ9¿E³ZjPu9¯ÂJà œü.VFÓø¯ãKé ÇûkuW××¥cžUN´k×N_à(¤ÀÎzWàãÇõëOóæÍÝZì7¨Ÿ/þIbxµ0·×9@À©«ôçôÇ› ‘áÞ¾Mâï ß“¸b·þ¼~4æ”GDè_2É €† i¸)!!_Pˆô…2} ` ‘æ˜'²DÀŠ"­8«ŒÉÓ"=-J{ €€(DúןÞý,°qÓFÉ ÷˜$&œÜ'q`qýÍê›ët—¸À«Êùð*¬D°ÀÁ ºçTú™tUd›’ê]²£–êño_ÿn¡Q30‚À Ç‘4ÌùPbRF Ä.;K\²úg‰¥†“ÈvHÙ›&Ãm–ÐRâÛ¯¼í6üï—|#Ç Ð•Ã?ü¼\Ž«T©âv €Æ i¬ù  Pˆô18Ý!`@ ‘œRBÀ&"m2Ñ ³@" ÄÆ›@à Pˆ4ü‘ /îéª{¾5LùAºÜH÷¢©;CW&ô­*çٛɳAøV í´®„ ŽʱãÔÅYr~ư÷%6jÔ(Çë8‰äW +K¿¾:òÖcô…¹[õ/2>جqó =_ªa¤< kVBbd]צ¶ú2XB #9SÆú…îõ¸òÛU¹Ž+%%E¯ Íõ:^D0†…HcÌYøY€B¤Ÿ'€îð£…H?âÓ56 ióÃÏQ€BdŽ,œD,#@!Ò2SÉ@ "ðï¾wËÛêžZ$ñÑ«uoÈì¶®p­ˆÌr­ˆ,ÊÝ*³iˆØF qG’Œµ}Ö­'OxÍ6cg  àgŸ-e,Ÿ,q\ód·ŽœÑÃûé Éñº‚ûò—j»]ÇVH›­£XüîyR±bE+ ‹1 €¸(DòQ°µ…H[O?ƒG O"óÄÄE P ‘…Àã­– i¹)e@ €€›…H7ì"pw÷Ûe¨Gÿ\*±N Ý‹&Ë¡+ Ò3õø‡Ýz·¾ðÕäºðËŠØ…ˆq"€À)ïë^n«¯–WÂÃÃ/¸‚C@ pÁAº7uÜúsÈÈ_tïÈëõëOù.e¥ƒ7—*\G¼ ¤/ÓÏùó='IvÛu4`–¤„ PX ‘…äý¦ iÊi#iü*@!Ò¯ütŽ€-(DÚbšäE(D^†Ó €€Å(DZlBNÞÖ®]+®^­+›œ®»UèŠÈìãàà`¹nÊ<ݳ)°»®PÈ[/\…V8û«îÙ6¾ý 2¬îݺ[ixŒ 0é¹±’Åó/Œ—XêÖÒK´×(< `2ÌTýù9õ¤þ¥Qj¬Æ”ØTIæ¡t‰}o qìˆq&!é"€äG€Bd~´¸Ö2"-3• Ÿ Pˆô5!`[ ‘¶zKœB¤¥§—Á!€ù ™o2Þ`G½ûöʰ»>ÚYb`VFÚñsÀ˜í-½’£òjÝ3öëÙߨ„Ñ#€€Ç†>5TÚü*ãK‰‘uŠz¼DÀWGÞ>(]Å®‰—X®„þåQ•h—ÓŸ§×Ö½PǼõ¹\×¥K_¥H? €~ étº4Ÿ…HóÍ#ài ‘ž¥=¸P€Bä…"›Y€B¤™gÜ@ï Pˆôž--[P`ÿý2ªÛºUbPO½»Ÿ‡Ê@à")sudz}ž“+X¹q(N#€@¾ê__OÞS¤¿®sè±|·Ã0‚@fŠ~¿<2a—¤óD=ÝrH#÷ŸŸ‡ü"¯Wîª{02Äé“ €€—(Dz –f­)@!ÒšóʨÈ…Èühq-äG€Bd~´¸Öè">C䇸G€B¤ÜéÕ䇒tìÛAbð]î¿ÙÍÞ'wÈSgñ ‰•†UÏ~‰ˆ&8üôvÉ<üœ.UªT½Ž5Nâíu/Y“´@À+V¬^|½¯ÄÐv~È‚.ð®@ÜGúósýã ÒÑ‚î__¥ýî®þ<™òÖ4=Á# €€%(DZrZ”·(Dz[˜ö0®…HãÎ ™!`V ‘f9òÎ…Èühq- `] ‘Ö[Fæ£ÇŽJ/íh'1ènÝ çèørüpÕT‰oŸ —Xv`5‰< €€ùÎîN’¤ƒ>Ü/ñÏÞº’ã=t¼º!JÎoŠÕ½®†ŽxRŽ}l D@‹ <ýÜSòÒœøO$«q±K9€iÒVë÷Í&ée KÌ“8¶Y¢ÄyI­$Î_²L" €Ö iÍyeT> é#hºAÀ" 0 ¤€€E(DZtb–›…H7@Û Pˆ´íÔ3pO ?q\škP¿ŠÄ:êJÈ„sºwäcÛ‹Êù²ƒXéIwÚBÀ—'ÞÜ'ݽ\UWnôЛÛ:Åk36éJÈétO؆tÅÇVvøršè S 4h}æ}ÞUØ`Êq49 $ïÓŸ‹›i)/OuºÄ=»wKlØà*‰åJ—”¸e׉< €XS€B¤5ç•QùX€B¤Áé?Pˆô:]"` ‘6™h›“B¤M'ža#€ yN#¶Ít%ÃèÚ›åmm«¤K\¨7×u<ºÕµ"r0+"óãʵA -NW(«{¿þç&Ý öµ NIoÛ ]ùøÀ¡rÜ÷Á‡%V®\Ùé“@ =]. Ò¯Ù)­[·Nžöžt¿ÄŽúu%ûu"fÈLÖï—Asu¯ôÕ߯Éq8YYúDsæÌ–×{ö¼+Çë8‰ `  ‘Ö˜GFág ‘~žºGÀ‹"½ˆKÓØD€B¤M&šaº Pˆtãà@À%@!’…hú¯ºòî{*î’Ø°¼®xÈÐ_;~smqóÆqýMpùaÕ ÑoEœøR÷€=úu¬t_þ_ºÂ¹H«Rr¶Yïn»ä½ïôõòåý‘&}"€€V¬X!Yµ»¹­Ä–ÍIìvWo‰»éysâfÊq±«¸[¶@ð` ôÏt¯Ó¯Þ^,ã©T©’%ÆÅ @ '@!²p~¼Ûæ"mþ`ø¶ i‹ifxE€B¤WXiÔ$"M2Q¤‰øX€B¤ÁéÎ+]+éçÚÓ)8PætêÞNzœžž!çã2õ.»C¢¬À(°‘@z‚þ;ξ‹­³ˆûn k’DcÐÕÃ$>Ü_÷ˆ´CEKÔ«©{Æ>Zû\¹:FW>ÎÙxVŽKÔ("1¤iq‰Q õç… ¢ú󄃛h‹ æH[¦{>>wç ’ð­ío5Gâd‰ à ‘>a¦« Pˆ´ÚŒ2..@!òâ6¼‚y ™7'®²†…HkÌ#£@¼%@!Ò[²´‹ÀygÏꊇ¦ËÙÐ>î+ªÎ»”§ `2Œ$]1¶@W0-_¢{™l¤‹^˜7o®´>ë¹¾çÞïÖÛw»õpÆfýùà‹Íº¢ìЉ—Ë Á¥BÜ®ç# d¦êæèɦIZwTл^9ÎHi’  €€A(Dd"HÃÚ"­=¿ŒÎÞ"í=ÿŒ¼PˆÌ‹טU€B¤Yg޼@ÿPˆô;½ÚTàܹs2òÆ·è]3Cû²é“M? Û‚©ßè ¦wÏÑ5iÒÄ‚£dH P«kW•·Üf¿Ä*ÑÚÚ°Ÿt%ä¬Íz\¶[9yÝB÷Œ äç•áÑÇgÕncR$¦Å¦JL<™®Ç)úý¯|É¢r¼ïh‚D@ÈI€BdN*œCÀK"½K³@€B¤&0¸…HƒOéå(@!2GN"€P€Bdáx…HIÑß(7hÛ@š ëŸûž‘ûÆí’ë*>^EbpñàÂtÏ{@À ‰;õîÙ·¤w”Ö§L|Ý ½Ð$˜Y`Ñ¢…’þ“u“¸3N÷˜-ßµ¬—¸¹”™‡Gîˆ}kŸŒìòxÝó|B ]YÕµ¢·t¸¼ôd½ûû–]äDéÒ¥õ@8O€Bäy#ÉÔþå°Ä¯»é ’ì ¿Ý­ÏÞØ Kž—íÖ½¶ÎžÓßÙ×@ÀzÓß›.ƒzyíD‰ÅšµÞ ‘eÒ?ÓŸOMûZÆX¹rå\Çš’¢ß×BCù ž\¡x°©…H›N<Ã6†…HcÌY à  ‘žP¤ ¬)@!Òšój—QQˆ´ËL3N@À7"}ãL/ä(#çãââ$:ºd@€þæ9û8"BWPµ»ó¹.«§þ¦Ùª×çØ8'@À§‡ŸÝ)ýý§‘þû\s\ÿ¿½ZÓhÔ¨±<éûȉwôè¡/ðˆ–hg;ãá&û$†” ¶ü˜ ùÒ~Ò¿ÌÇÌmn3ÿ  €€ß(Dú} HÀÎ"í<ûŒÝj"­6£ŒÏ Pˆôœ%-ùN€B¤ï¬é °“…H;Í6cµŒ@£ÊXÒï8'1°+#-3¹ ÄtIûôßááW÷JîÎ ] Õ¢„‡éݲßèÿ–ßr³®l6Ý@Iþ!pæŒî ;äßÉk5ëÔ“ØíŽ;%†…é]†; è ÇÁ,„Œ-üWš$Ø%ú‰ãG7vÂd‡ `* ‘¦š.’E@(DòI@À8"3d‚€¯(DúZœþ|!@!ÒÊôØW€B¤}çž‘[@ é-Md©%:Ãs^™~J³¼7I®‹¸6Ê£gK q‡ëßW­p·ÄÎJ–ã«÷ëJæO§Ïr{0¿@Ç›ZÈ B¬ø×i] ™–¥{A&•Ïó%»”–V¹ˆDð…@V¦îõ˜|D÷0NÕŸ SbR¥û¬z>ý€®ð¯U¹¾œÿù{×&ǾH’>@l#@!Ò6SÍ@­(@!ÒŠ³Ê˜Ì*@!Ò¬3GÞ^€Bdá iÁ{"½gKË €ù ™3ހᚵ¿Nr:×)^b`„®ŒÌ^ ¹û©r>ºîUW¶_eݺ@ÚÝ;rñ;ßÈP+V¬hõ!3>l#°mÛ6k—¶%níŸ ñ¯%˜³Eÿý²]¿?ŸLÑãÒt…dÔ%õBð‚@VJ¦´ºeàV‰Íªêç¯V´®”¬¥1Nð;–gè þï]ã…lh@Àî"íþ `ü– i‰id iñ fx¶ iëé7üà)D~ŠH°•…H[M7ƒµºÀ ›ËÏ\Bâ¡I»%¾ÒZ>&V÷†,ÓŸ‘Vÿ,0>ã į9+I ¼r¨ÄGzÔxI’Jàžî·Êû;:¾–xw}÷•fÃ~Ò‘³7k7•zéÊèÈFìÝ\(xÞœ'³ô/g¿{P®_ßG?Ÿ5KèÛwœÔxëWååÉö½Gô €xP€B¤1i  Pˆô÷ Ð? yq^AÀ*"­2“Ö…HkÎ+£BÌ&@!Òl3F¾ä"sBWB^^U“}ú ] ùáú¦§Oè‘e¼,—Vx ¼!qNÿ=†~!ͯüv•7º¡Mð£Àž={¤÷ÖëIìPSïFü៺'_¹®eå| ö„ôã,Ñuz‚ÞÅýÀÓº‡ø«­Õäîzz>rb œHIK @ Pˆô8) "à? ‘þ³§g.%@!òRB¼Ž€ù(Dší0 ‘v˜eƈW€B¤qç†Ìȳ@Ü©Srm*$žª+0²øÈµ"òÉã®»f?ÄŠÈl"¾H]¢+#§œ!]7mÚÔ×)ÐxY U«ÒÃŽÀý+ܯߟ½Ü-Í#'ä}úsb“Sº·xÚ½½{ı_åý ¶¤I\óçN‰*ðùÍ,!€äI€Bdž˜¸c Pˆ4öüç Pˆ<_ƒçXS€B¤5çÕ*£¢i•™d €€9(DšsÞȈÑß`Wª¨{B޾^÷öÑ{ :™®'›Ž)ØšðHyRn`@ÀO‰»’¤ç¦17Hü`Ú~Ê„n@ÀÓqqqÒd‹;ôßwè}º7¤§û¡= "™ª+ò³‹ÈÛ×.]çÖÌÔ×_•ã&<'ñ‹¯¾“ذaC·ë8@@ 0" £Ç{ð³…H?OÝ#P ‘@ã-˜D€B¤I&ʦiRˆ´éÄ3l@À`" 6!¤ƒ@~Î&&Êå'N”è Ô»è §Ó©ç]qÙÚåødK]"TB¯—“< €€OÒãõ.¤§žÝ-ý•+_UâÐ'Ÿ•xç=%ò€æX°`$=bÁP‰-ÃÌ72¶¬@úçúóáÂÿ|%c¼ì²œ÷ ß¹S÷†¼üòË-kÁÀ@ü'@!ÒöôŒ@¡(Dšð¹…HŸ“Ó!> é3j:*€…È ñ@ Pˆô8) "`|=ÛK’Gí“T*ÈøI“!ˆý䈌ä1§î%×¼²næ:yƒÞÕþ—ýºbeÈðr݃•X¬˜¾n†€%îä>׺ +%†UÖ½ø,9XeôŸõûÌØnº÷cçŽM“;‰"€XO€B¤õæ”!pI ‘—$â¼&@!Òk´4Œ€ß(Dú} H  ‘9 p @Ào"ýFOÇø_ ÓÝ%‰ƒ×ì‘\†•‘þŸ2°¬€ë.öëûl–!f>ã>Ò3)z7ZWDÚƒA#€F€B¤a¦‚Dð½…Hߛӣ(DÚxòºÕ(DZ}†Í9> ‘æœ7²F¬.@!Òê3ÌøȃÀí÷Ý&Wí¿j—Ä 2îwÓNÝ¡wçÞýúy½Ö¤Ú‹º_''y@N~#ç;þ×SÒ\â©t‰Á®?P)­ß`õ´cÌ”Oäõž={z¢{Ú@@À#"=ÂH#XC€B¤5æ‘QS€B¤1煬ȋ…ȼ(q·(Dz[˜ö@|!@!ÒÊô€ÉÚvh.ŸÞ¶JâºûõWë%&ë]@+?ëZÍŠH“M-éúCÀu“š3â¥÷ðუÜÿý$MÕg[VnõG–ô‰¹ :P^ûñ»³ïrßùÖŽr¼tãJ‰¥‡GIäo¤K•fwŽÑºŸê²8ºÖq}£qu:ög]Ðòi93f,+í½1´‰ P0 ‘sã]XZ€B¤¥§—ÁùZ€B¤¯Åé Pˆô8) @€BdÐx  €€á(DnJHÿ üúÓRéüÉwHü¥gœ[2¥^Ó‘Ç^.烋»½Î\àܺÒå•»§H#íniWðÆx'xE (H7ã;64SÚ_°M»ù`³~\uPóPîZÝû5´iq¹ ê_z앤hÔ¶Ç_Ú-c¿»”Þ%{R+ý\¾¿QI~ì!OÞûxŽm8 €€ñ(DoNÈ¿ Pˆô=#à ɇã Pˆ4þÙ)C ‘všmÆŠXG€B¤uæ’‘ P`%_/’÷>õØ}çÜzFb–ëOJ3]ñºtÏ¡ŠctÈ’¬ˆ,0:oDàä#º¢¥þžkä•Ùï°‚å"ð»À„ñc$‡³Ë^”ø|‹d·œêV°Ž»è÷ËÍIú}²ÆDý¾év1R y¿~߈\*-E=,qĵú-ãwè÷“—¯/dO¼@Ï Pˆôœ%-!`Z ‘¦:·…H M&C±¬…HËN­)F!Ò”ÓFÒ €€í(DÚþ#€bcceøö¿_âš5k%:\w[tEg î}¤{9ïÖ=¯B«»ßõ×ΖŒO ¤¦ÿþMûZš¬\¹²§š¦ð@‘P]éxhÞí~Ô/ú}rÖfí l·rò¤xëê‘fø[ 3U ˜¥+!×ý¨+¿]¬ß7ºwë"—(^Lâþ#úóÞß-ð @ÿ PˆôŸ==#àw ‘~Ÿ@à"ÿA  '@!ÒpSb«„(DÚjº, `9 ‘–›R„€÷z=ö€t²±Ì‰A—é]D½ß3= `}„uI2È_1Hâc³þ !&xé…ñ’ñsÏ•Xòö2KÜ\J"xS ísm}á[_É“*Uª¸u¯›•Ž1Lο9uºÛë € àO ‘þÔ§oL*@!Ò¤GÚ¦ iŠi"I› Pˆ´ùÀÏçéç  {@B Pˆ,oFÀÞ}õ€u%VI ª¢{dÙ[…Ñ#P8ŒdÝû+pNihíë × ïF 3\Ú\˜:Obd¢ïƒ¸P íç,95¶«®ÈíÒI÷‚¼ð:Ž@0²…H#Ϲ!`p ‘Ÿ Ò3¥…HSNIÛL€B¤Í&Ü Ã¥i‰ @B Pˆ,oFÿè?¸Ÿ@¬)¶\bPõœ÷ŒLùIïÚx&^W|•¹M÷Ô’7ñ€n ÈqÖ¹p‰cžIâ=÷Üëv à{+›×—NCújßN½Û½ï3¡G;¤lM“aÞÑUâ„§&ØaØŒ@À¢"-:± _ Pˆô¥6}ÙE€B¤]fšqšQ€B¤gͼ9Sˆ4ïÜ‘9 €À?(DþÓ„3 P@Ã’w®,ú›Ä êºgäÙïcä8òwGkFËqÙ{+HäþHÜ©wÍýhŸœ|¯½® ž¼>RŽ¿Û¥{„ ¦{Ô ù¤œ Ìy%²¼ÈxD`åÊ•ÒNÿ)º2´{#{–FrH=¥+!+®¬*¯3gIŽ×q@3 Pˆ4Ól‘+ ið "=SPˆ4Å4‘¤M(DÚtâý4l ‘~‚§[@¯ Pˆô*/#`OGG<"ÿaóÅêÞMKfÈñ¤”âËÞ_Q" ð·À‰×÷ÉÁ䚉»ÕýûµÿöõN=ýs˜<‰¨x…ÄßW­ÕxD¯ <ýÜSÒöœøO$«áµ¾hغ§×ÇËàRާJ ˆI‘˜éŠ)'u%dHz°œß±ç„Ä¢E¹;»@ð€ `j ‘¦ž>’GÀ˜"9/de ‘æ˜'²´§…H{λ§GM!ÒÓ¢´‡ `& ‘fš-rEÀ$ÓßxE2ýõÃ'%~ÜIÓÿÖÀÄdVDšd*IÓ‡©®0ÇÆë’ÇmêÞÓ×ëÝxßÝTD²)W¹ºÄ> ÖØÇuÛ^æJWØU Aëktè÷èŠ5g0w˶ëg¡0ã>6˜5ëSåSCõnÙ#uÏ,ÝáÎáÈÒ­ÇâÎÊuYõõ7ü%z•µCD oñ+OË…YÁºÒ*êÚbnoL_¨‡3ÇÍ’'õë×w{(¸ÀŠ+äÍn¹Qâu ¯–Øíž>÷Þ'ñ³Ó®»e_Íݲ„Ä}#í$ÿpRâú~éŸúMï’ݤïkrܯ_?‰< € `f ‘fž=rGÀ " 2¤aj ‘¦ž>’7¹…H“O ÉÓ§iò $}@| PˆÌ#€@NÙʶjÕ*yÙéÔ]Ù1 @WHfÏ[¢{ý²D®¬Ã]Gsråç $lÖÅw¿WN?;úÙó_æ9x@àªZU¤•‡k¸.VW¤ÍÞ$ÇŪ„J iR\bTCÝÃ58*HŽ|;Só$™æú“‘™ÁrýÜúóQ³& ä¸m%ýº_­Ãp9~n yj—‹@0²…H#Ϲ!` ‘&™(Ò4µ…HSOÉ›D€B¤I&Ê"iRˆ´ÈD2 @| PˆÌ#€€'F??Jš[¿HbÐ,%ñ¤/mYSàÜÛzWÕÍ¿ÿ%Ì^qlÍÑ2*|+°`Á|éðý1½$Îï|Æ-eûôpÆŸºòÿóͺ¢­Ö³—Ë ¡åBÜ®çÜÒ>ן{濱@.«V­šÛå-š\#Ç­ÛêÞ¥ã&¼äö: €˜Q€B¤gœ°ˆ…H‹L$Ãð©…HŸrÓ™Í(DÚlÂý<\ ‘~žºGð‹…H¿°Ó)œ/ðôħåð«S_J ¬—ûÊÈs{t¯® Eôú"º2åü6yŽ€U’–¥ÊÐ^êñªÄŽ:Zu¨Œ ¿ 4¼RW8¾Ýl—äP]·„t ûI¿ß|¶ES+Ó­œ<‰¾A/Ìýû—ßDdžHûEWÒŽíü¬äÕåÖ®¹æ+¯—*U*×ëx@3Pˆ4Ã,‘# iñ fx éQNC G ‘9²pÒC"=I3 €¦ iÊi#i¬)0öÅ12°1ó$Öw_Yræ½r~ïïñ¯šVO¢3Øý:9ÉH>’"#»b×Õ?›ñ¹EGʰðŸÀwß~+z “Ä}ñ™Ëu++±Ä%%ò€@~R¶êŠöNEuä Osìüøq- €€5(DZc– i‰id^ ée`šGà¿"ùxC€B¤7Ti@Àl"Í6cä‹€ Æ¿¢{&}qTWz%®;(£‘ qôwº·R½7ëʱ3D÷ì² CDàiŸéÓES¿–'—]vÙÿ^ã N`ûöíÒ@Ç~$F÷ /\ƒ¼ÛÖ©§ÒdüåWT‘øígºâÖÖ( @À¶"m;õ ã Pˆ4îÜ™q(Dg.ÈÄz"­7§þ…HêÓ7 €€Ñ(DmFÈþ'Ðö†Éó›#þ”8¢‰îÑ6Q÷„¬;ŵ"’»fÿÏŒ'ö8ó•ÞE5å×dôø‰zízõ¶#EÀKoN{SZž²ùe‰Q"½ÔÍZA ->]†‘£+Sbu/È´#“××ü°^bDD„†Í@(…ȱñ&ð……H_(Ó‡Y(DšuæÈÛ "Í0KÆÉ‘B¤qæ‚L@Œ/@!ÒøsD†ØN`ÈýdÌ•|!qð5º7d6DöŠÈ:®‘¬ˆÌ¦!ÚH`Çc[d´ »êJá¶êŠ­…Û2äüÁC$ù¤Ä"EŠHä.-жk¹(¶åQ‰ÁÑA—~WØN`Óƒɘ‹†ê_jT,®±F´îe],@¿>¯O¨(×ýµûíŒ0 € Pˆ¼P„cð»…H¿O ˜@€B¤ &‰M+@!Ò´SçÓÄ)Dú”›Î@,"@!Ò"É0°‚À]];É0Òv-•xSÝû.K82]qÈ÷:Úº¯ë‘aV>c@ O§W‘ë®øý°Ä…]tÅMö›cÏé³^ ƒåÉêz·ß'Og_BD‹ìÙ³G^é2ðv‰ÁÝ/r!§ø¯@ü’qY®{önî­+Ò³qNœÕgWÎÐëÇOÅg¿DD@À¶"m;õ ã Pˆ4Þœ‘ñ(DoNÈÈ:"­3—¾ …H_(Ó €€Õ(DZmF&ˆ×¿?]²ÿcãF‰N§Sb@€Æìã„]b°9z«^×ÀµTRŽx@ÀÚ‡Çî”.¸1EbŠkÎ[ët»¹é ɾ÷õ”×6Zb½zõ$ò€˜þž~zyíD¹¨X“¢¿˜Wp $íJ’g[ŸÓµ¿÷ÕšUÒþ‚~}>yZÞ s½“€ €€ý(DÚoÎ1† i¸)!! Pˆ4ðäšé(Dš~ ý2 ‘~a§S@“ Pˆ4éÄ‘68¯OŸ" lž!Ñy-+#ù\XW q‡®¸93uŸ 2е5jftˆ‡”’øÇïJŒŽŽ–Èä] CÏörñ¡Æ{%†”Ô½VóÞWÚQ +]þÈüXW>†ÑëÝ+îŽw6èù/—®–ã:uêØ‘‰1#€ "ù €€i(DšvêH¼" €Æ[ȧ…È|‚q¹Pˆäƒ€ €@Þ(DæÝŠ+@À oÍxS2{wƒîí؈•‘*Ò*„@Òn½vŠ8i%ú&]ZVWD&®Ð“£o#¯ßÏý…è·"`-„„Ðãëæ}ÕjÖ–ãnwè^ªQQQrÜñA]|§µÆÏh¼+>/@:ørʉժU“8ôÑ~çÍýLâ´5¶k×NŽy@@ÀŽ"í8댋 Pˆ´Ø„2œ(DæÈÂIò$@!2OL\T@ ‘„ãm €¶ iËigÐXSàí§ÉÀÞ^ý‰ÎÆ9¯Œ<1a—¼žQ¯˜Äò·—‘ÈfH;.é—þ¹‚ľXjæá;^èܾ­´xð‰ÛãÃ%&¤:%¦TÐï%n×ÇáU¹»±Àð£@Ú¯úyyº“®DïÞùޝ›;÷s9ß¾}‰E‹r7ö¡8‰ `  ‘¶˜f‰€=(DÚcžeÎ"svá,ç Pˆ<_ƒç… YXAÞ `G ‘vœuÆŒ€ÅÞùøáÔoHt6Ñ Ǟו7FèÝ,¿¿¬´¼^¾ +"-þ‘°ÕðÒêp?ó‰<¹êª«l5~‹@n»vé÷ö-Èe;Ô½#·ŸÔw}¾U÷ú›¹MWH=«çËtÐïQ7ëJÉÜúà5ë ¤lK“Av »]âÄg&YÐŒ@ Pˆô$Í €€q(Dg.ÈÄ÷"}oNæ iž¹2r¦"<;ä† `t ‘FŸ!òC Ìød†¼wÌÈK|¯­®„\}@WHNp­ˆìV¶À}ðFŒ&°E—pÝq—¤öÜÓÏ-EòAÀïôì"9´Mջߕ~_ˆÑ›Ï;†þ¤+"¿Ü®+$+ €€K€B$+Pˆ´Â,2o Pˆô–¬5Ú¥iyd €Æ iìù!;ðƒÀWß~%½>óé“mÜ÷ŒÜþØ96QÏ7x¿¾²¤KrØúoý|¶®¢¯/Ù¦ŸÓr5t%ä˜a/É ýû÷ϹÎ"`ao–|#£2KWmjáÑ2´¼ ¤ýª+ÇŸêøŒ¼åŽ.=ÜÞºqƒ.)ì‘åü?ý.14”Ï €äA€Bd¸ì%@!Ò^ómµÑRˆ´ÚŒ2O Pˆô¤¦uÚ¢i¹d$ €Æ iü9"Cð“À7?,–žŸúh”Ä 6KÜÞ_W˜U|UcE¤:ðè_Ô“ºwYìÌÃ’HX#ݲx3I{ÏÉùëO·’øÎkïJä+ lÛºU†sðÐ!‰7Ýt“ÛðúÖ•À¿E-“óE«…¹½Î½’·¥Ê€;¹]â¤1/Ú €Ñ"€ à ‘~@§K0‡…HsÌYª…H> 8"ùäG€Bd~´¸@ÏPˆôŒ#­ €€…Ê–ˆÑmè­w[­©ƒ Лh:®ý€="-<ý–ZÚLÒ²9?Ë“%JXnŒ Ⱦ#†–ÁÏýhºÄ‰»tj/ñçÍë$–~B÷L•l'v:]Æ\æ—Š¿Ÿ÷ƒí 0 €þ é/yúEÓPˆ4ÍT‘h(Dæ‰KL+@!Ò´SçÓÄ)Dú”›Î@p éÆÁ ð·@årºRlÅÝqr²R±¿_ûÿgÎgõ¸Á{®‘î¯s„€Wè^‘#¯JÒëu_/#¦INJ 48HÞtˆ®ˆ\´C›ûp³Sžü¼Çµ×ﵺÄ=¤iq9}í_èõmŒ– …H£Íù €ØI€B¤f›±"€@žjU¯,×]^4^bH.uÌÒŽÔ4Ý[jõáy½êku´]VDª†H;£Ÿß’?–“<œ¯w6tÒ$‡@>^|á9yÇÉo'HœÔJWg7s8AŸõœ¯_¸7'é Êkg_B4‘@ö×µ”cú}9%6M²O‹Ñ»b;O$˱3VçûÃwÈqË-M4JRE@À"­1Œ<(@!Òƒ˜4e8ìÿa§i¸©!! Pˆô ¦ šÊþºF!Ò“EŠ €¶ iû p¡ÀòåºgÔ±cÇä%§S÷ ЕÙÇ guIÍËó_ÔëÚë^d¶Ç1FH[¤K|?zúIïꫯ6bšä„@¡"‹‘÷ï +åžú]¿ž¶E›-ÓMWoÅÝã íç7ï{~·d óÜ@§ÕQ7Z÷­æºIú +CåºO¾úMbÆ ýœ9Ý#€ `? ‘ö›sFŒ— y ^¶„…HKL#ƒ¸„…ÈKYäe ‘™H† `  ‘¶˜f‰ÞX±z…4ÿè«Kt²2қܴí!„­g¥¥®a=$¾0f¢‡Z¦Œ#0ùeý\÷¤$U¢sY7–4N’dâ1ã/éÊÈ»JëÊÈ[êŠÈìº/Ô»cßõä{rª[·nÙ/@@ÀG"}M7 `] ‘Ö[+ŒB¤•g—±e PˆÌ–°G¤iyf” €æ iîù#{0À굫$›‡_ 1 ƒÞø¢)¦ê}ºb#0,ð¢—òÞˆ{ö¨4ýèÃ#$6Ü[]Ñ.>þŒ~ž¦Í“¾#ëõytè{Ó_“NKm<%qeoý>;li°—¿]ï¦>tØ0ß'G €Ø\€B¤Í? <'@!Òs–´ä; ‘¾³¦'ß Pˆô½¹z¤i„Y @r ™³ g@ ¬Y·FÞûÐÄþÜï¦qFWJn¶]^/ÓU÷,+Û¾TûääW q»îúñ~ykã !?ýC?¯ƒ=.ǃ‡’X²${ê ¦¸²y}É7¤¯¦à 0Uþ$[0ô/tžw( <úˆîáüxÃ49N¨ßOâSß)X¼ @ ,@!²Àt¼ÈY€BdÎ.œ5–…HcÍÙxG€B¤w\Þ*…H£Ïù!€ØY€B¤gŸ±#€€WÖo\/í÷{®Ä¬V©wÜ&ñÁk$8fWБå:°"RExô…ÀñÉ{¥›·êêÊÈÛjk¯Iº`È1yµî¥6ñ7=?nÜXy2ä‰Ñz‚G ,°j•îÙÛo²~ý mï4p¶¤æ)´ßtïå'Û?#MöèÚCâÙ³úuîÊÚÕåøÚú øó…K<Õ5í € €@(DæŠË@ü PˆÌ¯×ûR€B¤/µéË×"}-nŒþ(DcÈ@Ü(Dæ¦Ãk €€~ûýWiå–¶-%ž©+6†/ÕÆg•w­ˆìXڽѹ ¤œÐ•¹''í’ ü[ï&»Ao2ëxgS9ÿÁ:ÝË´s§[äø±aOJ¼îºë$ò€€‘žyþiIoö陋Õ0rºäVHäíúu­}ð­ÒÒKã^εÅ;vÈëµjÕÊõ:^D@Ï Pˆô¼)-"€n"Ý88ð³…H?OÝûD€B¤O˜ Ó …HÃL‰ € pI ‘—$â@ ` ññòÆŠåu¥cüp]±‘ÝÚÈõÙ̲®‘X™mCôž@̇¤ñÆ1g$þ§w—K×=ôn¸¡ƒœÿäãÙÃÂÂ$ò€€™®mÓ@Òͺ+E¢3„="Í4yÍ5팮Ü.µ¬¼¼eé—®o¬ym€ë@@Àç"}NN‡ ` ‘v™is“B¤¹æ‹l &@!²`nf{…H³Íù"€ àpPˆäS€xXàÈáÃÒbõjU$~Ö-Cb¦n épÇÌMÚñª+\+"oeE¤Šðè ,×ðÐ+{¥ù"eC%mYR+è±ã½[öúe¼‘m"àÄÄDi'"Â}ïÇõë×ËùÞï—ÜQWüz¤S1œ@êGšÒ/ót/æèèhÃåHB € à.@!Ò݃#@ Ð" MH^ éTšô›…H¿Ñªc ‘†š’A@ O"óÄÄE €À¥²²t­ã¼Ïto½Þ›&o pèŠg îQ–}|6)I^?ª{I†ÞÍf—Væ o ¤|¯+xßì?UºjÙ²¥·»¤}ò,°zõj¹¶Ã-m%^S¿ŽÄn÷ô‘xàØA‰sãgI,vµûŠI9Ƀy\B«{,§Æ¦IîAÛB$N6]b‹æ-Ì3&2E@Àæ"mþ`ø à9 ‘ž³¤%ÿ PˆôŸ==_Z€Bä¥,u…HKM'ƒA@àÿ(Dò9@ü,°{ÏnÉ ûã]%Þ‘éçŒèÞÎIûÎÉð›j%ñÝ)ïÚ™ƒ±T á•—Kf}«ì’¸éT¸ÄY“%†WнNƒ—ã¨FQƒ£ƒ$8Ù;R ö°œÎgú]ùx&NWh—)®1PV§Ù‘üìÝw`U÷ðñM¡C „P•^D¥#"<R¥cE¥ *>€4±Š ˆ ¥‰(V)"‚¢4é½z¯!ž×÷œççbÊöÝýþ3ggæÎ{?wðpœÑg*ï 7Eà:… È‘÷‡>$qAçK6-VÖÝ)[´òñë­º_éU­¤ÌS\Ÿ1hs;>8;I®ò…ËÏ]µ"ÒX’u7rŒV¶&&iå¤qžˆ €æ iþ5b„ $$"ƒd¡ýdš$"ýd¡‚t˜$"sáIDæº2+@þ)@"òŸ|FL pøˆV„´{¢­Œ&ü~ëÓú¯[Êž+räÈçÇ%–½òu-ØEÀyøÕú¬È¡õŸ—Nz>ÖÓùθ ÜQ³šôünÍ+[ w- •ýöhEdÑÎÅd?ª¡>32$ŒgD ˆI7ñ^‘ÅÿpBâ¦úÄЗ˜ ‹Ü¸CŸ±\¼xq“΄a!€ €Àõ$"¯að±‰H/·‘|üA€D¤?¬’ãc$é¸W € à/$"ýe¥'ÀÑcGeÎm{µ–þ VF&îÒJȰ¯Èñ}§õøMiePÐA1a¤^N•~£–ÄJ\>÷7܇NpEà·åËåò¾Ü#ñP¼>D°x­€ŒnʳM]ñõõµ×¾Ðg@ž^§Nj¥oE³® íÝéú¬Ð øz¨Ü@ì i'Í@o ˆô¶8÷û§‰ÈjðÙ¬$"ͺ2î‰H÷8Ò  €f i¦Õ`, €@&'O”£ÿi×PbîÓ‡$þv¿Vþ”œ ÏB«ö1‘™ðqÈEÄ™ú¬È»+·žÞ{ÿC{ärÜ'°{÷né¬Mo­ê•ß}Ó“ÏRÿÔJÿá-FÈîï|¿ÄŽ-›HÜ»mÄÞž$ñÁ”È@Ì/@"ÒükÄ@ ÈHDùÀÇÓ'éãàöÙ ˆÌ–ÇoO’ˆôÛ¥cà €ä(@"2G" €¾X³ò@ÿGô-Úk¹$û—’t\ÅßÓ·¿Þüñ;(wHývȼ:W “øÍV}{íÀÿ>#û‡è[µ‹-ógRæø`â2À÷¶½#1²Ž>;ÐÜ£ftY $îN–S-ÃõÏ»w^}7ӦÔã=z?)±råÊ™¶ã  €˜O€D¤ùÖ„!€6$"m8Øñ²‰H/ƒs;‡HD:ÄeúÆ$"M¿D @—HDºLH €€gÖ­Y%÷}HŸ}ö×#mn¯…#–¢cµ"²ú'TDÚ±ã’À…•äúÛÖž8«½VB&ë£I-c׿’ão¯ÒJÉÎÛËþ§Ó¿–Èo4ë|·ÜæÌ]Ç%æŠ ÷Æm¹‡›R.¥JE~-.ñ×9ËÜ|ºC@³ˆ4ËJ0@à:‘×°ëU‘^åæfN ˆtÎd—‘ˆ4Ù‚0@<(@"Òƒ¸t8#pìØ1¹¬yã;$;¡oÍNO×·ˆêÖb1ö£­@%ÆTtæv\ƒ@¦GFì‘ã‹ZkéííZ¨d™±E›OÙ%Ž&ä–øÄSý%ö‚6`‹€<(½wèßNb®.¼]{\ y†Þâ÷ïWȇ¨(ýýâñs@ðº‰H¯“sC@ {‘ÙûpÖ;$"½ãÌ]œ 霛Y¯"iÖ•a\ €¸_€D¤ûMép‹@BB‚ô“–¦å •ý}&¤±Ÿ”¤¯ÏnÔáN9Ÿ§‡žwË è$èâwé÷.lÆ!™{Ý’JðÅ}Fd…rZùéd}dãÆƒÎˆ û^`ò´É2ˆ1kGKŒ¨_À÷ƒb ¤þ¬—Lèû¡|¸ëλîƒ @@À¿HDú×z1Z"‘A´Ø&š*‰H-CÉR€Dd–4~u‚D¤_-ƒE@À-$"ÝÂH' €€ïŒÄe½Vue0y{i¥ïGÆüIàÌ÷úLÒ„ —dØ…šÅH,ܸ°ÄÔÙZqûÃø9²_¡B‰lð¦@›[ËíŽÔ9 1w}‹»7ÇÀ½þ-tFŸ)¿C+«S­û¡g´r?õ¬ÆË'Räâ^O>)ñ½wµ"òß=r@M€Dd ­(óA  ´KïÖ‰“ˆt+'yH€D¤‡`]ì–D¤‹€\Ž €@ˆ ‚EfŠ \‰‰‰2áÚÍkIÌûxö•‘‰›.K»äpmQ½`p1[ôd}dhîÌ¿7ñµÒéñ²ZÉ4ø¿Cl®gWâããåò~½“X®Be‰º> 1&F+tÛôi%û¹î—ÀÆ$I‡¯ÉHŽŒÑ·š®«¿OÊZ_‚mÄ5ÇtÀÛŠÞ'¦ÎøÆ$3` € ài‘ž¦@ÀË$"½ `·#` êgÓ!ég vÝpID^Â. €üK€Dä¿H8€†@r²>«ëö¦·Ë„òõ¶­p»úËY9žøói‰émJHŒi-‘ ™ d¤fÈáôÏÃ%nümSfÍ8†€K]ÛµÔë.•¸ïоûL‚~ÿÒ¬osj§’*äwé~\ì^k´2rçkû¥ã=µÿ†¥5þª“–QûjÊ¥®×l@@ àHDü3AV‘Áºòž7‰HÏúÒ» ˆôïo‰Hÿ^?F €€'HDzR—¾@¤¦¦Ê(jÜu«ÄŒJtç‰ù,Za´´ZqÙ/ú};²ì°A kKô­·>>QZ4iÒ$‹–FÀq¸¸8¹è?õn‘x°ï‰ô×—å»úöö/vk¥wœõxñVE¤]dëX‰lÌ!plð^È Úºn*鳌›ÿ ë´ÿÈ)s ”Q € €€ÇHDzœ˜ €¾ é[ÿ@½;‰È@]YsÌ‹D¤9ÖÁ]£ é.IúA@ÀÿHDúÿ2@À.É—v‹?$ñ»Îú6ÓÇjEÑ’*ÖŠÈ»©ˆ´ 4È]=¤MõÏÜ)Sߟä"L߽ѷ*7¼2KºïYCoÒ—·[-×ß_s÷j¥]‰Gõá‘…jEzb8ôé @ÊŸº^ÃîyQ®\¿üW‰q+¿—8{Ó%‰iéÚNvØ € €@@ ˆ èåer €Àÿ ˆü? >¹.@"ÒuCzÈY€DdÎFfnA"ÒÌ«ÃØ@ð‰H߸sW@ÀkŸMúPîõÛ´—$N»ç¼Í½ŸX¤•D +iEdl3}ÆšM#vÈB e¦~–ÌøEZÄÆòl¾,¨8ì„ÀñãÇ媚ÕÊKl])Yâw»õ{ÛYoE7¡’Û ^]’´GשyHk¹ÇØ×ÇÙÜëûo¿’ýÇJ\±fƒÄ˜} ºMcv@@  HDÔr2@àß$"ÿmÂ÷ ˆtŸ%=ý[€Dä¿Müá‰HX%ƈ €€oHDúÆ»"€ÿî¹Ç”ñ¯IltCšÄô ­$Òwe[,kâ®Éñ‹-KHŒ¡²HØØ'peµ~ê]k Lÿl†}Ò šµ¨'­wfì—Xâaý}å@4õ‚@êåT¹Kô/Å$.ûqy¶w½pA_wm;N"€ €@àˆ œµd& €€‰Hv<$@"ÒC°tk#@"҆ô;$"M»4 @Óˆ4ÍR0@À½‡–çÏŸ/1$D+!CCõ-³Æ~¾|ùäüØ)ïj»‡S$†æÖv²Ã,NO>"gªŸ¾"qñ^}ûíÀþ}eàP}[n‰T°eAÈál.^¼(gu¾SbžGõ÷X6—pʇÉÖ‚èåßþ&£(\˜gwúp9¸5 €¦ iÊeaP €€ë$"]7¤‡œHDælD çHD:oç‹+IDúB{"€ à_$"ýk½- àqZMkÊ=2H’š‡ÊH£ûá ÒSô)£ÛúîÑ'¿ ûéÖ‡Ž].ÇÇþ•[âm·×’¸à—ß%²AÀ¹óæJ³¡³I,Ð8¯=—ÑÆË©K´Ru|Ÿ rç&w5ñò¸ €ø‹‰HY)ƉxI€D¤— ýü6$"ý|ýdø$"ýc¡HDúÇ:1J@Ì @"Ò «À@ ÔiV[F•ÚEߊ–ÊH.“φtnîi¹w—³g$¾ý-…Ü{^‡4eKù0e£VJÝ|óͲ¿|å:mÀ;º?ý˜´Z[l¥Äü7Ri›Ûšd¤êÏuÒ™dé3ù¬>CØØÏ8¦Ï„}¦Ý9?¸ÿ·Ý›Ž@@ 0HDæº2+@Àe‘.t$"zyM39‘¾] ‘¾õçî €¢‰È@\U愸Q ~‹zÒ[r}+rh~ÛÊÈ‹Sõ­É'7ëùªïÝ䯻ӕYv>¥Ï†ÓX+¢&ï“¡:«ƒ¿ ûOô{ZbLLŒY§Â¸L( £ªßVÿäé®ß+5 ‡tô½8™×¹-ú{½Dý½_&Jסr¤þܯˆÓã¿þYÚ7mÚ4 =˜ €¸O€D¤û,é H‘¹¬.OŠD¤Ë„t‰Èlp¼pŠD¤¹ €A*@"2Hži#€Ž ÜѪ\r­íe‰ sŽK옦ûŸlÒJ™Šã¨ˆtÔÖŸÚÇïÒJµƒïÆÉ°‹×)$1“"CNje䨶oÉ~§Ž$²AÀ…‹Jó_=+±@S}æ¨#}ÐÖyÔøT¹øÈ«û$¾}gšÄž·ê3#ž{-, >¡oËîÙ³§qŠˆ €d*@"2S"€\/@"òz‘àÜ'œëîíY“ˆô¶¸íýHDÚz°‡ €î é>KzB‚Bà¦ÊÅdž–?+±g5}VØÍÓ´®Òx*"ƒâ‹`F]÷è>ãmºå6U†¹_Ì &é˜ÀŽíÛ傃qqÛ´icÓAŸ½eEÄ2‰Êå³9ÏŽwÎ}rHnØ0ñªÄ/Úi…äë+ô@RýarüµQ£½;0î† €~'@"Òï–Œ#€¾ é[ÓÜD¤i–ÂB"Ò¿VD¤­£E@ÀÌ$"ͼ:Œ 0‘ÀÐþ}d4E|-qHíx‰Ç5XªNÑŠÈʼ5ÛD«æ»¡¤ÎÖJ©ïÞž%ƒ¨T©’ïÃM'ðÒ‹ÃeL3'é³^L–ýNm[H\±c³Äbâ$²ñ­@ÊJ­|¯—VS²æ—yû׸$qyžög|;G"@@ +‘YÉp@ÀF€D¤ ;9ˆÌ(ÈO“ˆô¯/‰HÿZ/F‹ €€™HDšyu `>= £ß7_â#7é[“Ó­ÿkîݵtû)TÎWý š FÍ|-pyÓBÏ´’vØ@­€óõ¸¸¿¹ È+Š{:Iâb}I³åóíúûdñn­Ä»¡fA9Ÿ«n´Äèú‘ÙxV ioŠÜ ™¥¥Äq¯—¸e³V¬Ö¯WGöo©RAâšÍ;%²A@² ™• Ç@D€D$_gHD:£|׈4÷š“ˆ4÷ú0:@üQ€D¤?®cF¼ °gϹË`ë³!O<)û¡¡Z©dÄ}àå}XdH÷üÒ.cnBÏäÞM›6õú¸¡ùŠDA®ëqUâ««´rÖ.­¸.Ú¹˜n\Øü“ €¦|¡“øõëåò¡H‘"0+¦€ €f i†U`  €@ ˆ  ÅtÃTHDº1º i®E&i®õ`4 €’‰È@ZM悘H õƒ­d4ÇkÇI 7Ñ芷®N”[•ÙPAâÂÙ‹¼ukîãG¼7VF;ò¥!£:è³ £›R‰çÍeLûE+PÇ>þžÜö?ÿãÍÛs/@‘A°ÈLð…‰H_¨›ïž$"Í·&f‰Hs¬ ‰Hs¬£@@ HDòê27@Àmj#£8rû‰¹b3¯Œ<ýaœž¯-1ºv¤D6þ-¿Óúäi‡e"{N§Iðô}QbéÒ¥%² N!#µòǤï ÐMúÌÈàÔðÞ¬Ó“ô­×I›õ-ÙÝ«ô’›î¯ëὑp'@‘Á²ÒÌð‘‰HÁ›ä¶$"M²&‰Hß,‰H߸sW@‚Y€Dd0¯>sG¼(ÐáÑör·¸[öJ Õ·iŸzs¿ì—NN’xêžR ×§"R ü|sò­„TãªÌ¤UEи5ºþc×å•·ß^[âø‰S%–/_^² [Ý"óÌÕ#CbH˜>«0(&ïÁIžüê„ôzN¿&ŸI–ý+ç´2%I½o,%Ç÷:ïÁÑÐ5 € `±ˆä[€ à‘^a6ÝMHDšnIL9 ‘žY‘žq¥W@p^€D¤óv\‰ à„@§î䪿Vþ,qb=}«ò”­Zµ©~I9^¸Vè8q .1@âI­Àºô®V¼é§Ï¢3†6g—~š²C+_WÔJ­¹óæË‰»š45šX`Íš52»ÇÇõ˜§•VÊð”½:µSokErÍŒkrßjdYë¯×¢ùu8ùÞÐg÷^¸/òæÕJe¯–›!€ €@Pˆ Šef’ €€yHDšg-<9‘žÔ œ¾IDzv-IDzÖ—Þ@@Àq‘Ž›q €€ m›6«{—X+±}%­”ëüc¨ìo¬k­ˆ¼ƒŠH˜}~险Ge =Ã.I¼¢Cš²Nc½ZµäÇ”ضm[=Á6¨^5BæûõÅ/$FT/Tó÷Öd/Í>)·ŠÙqA⪇ôíõÆýoš!gÿ¢ªU«V5N@@· ˆt+'!€ä$@"2'¡À8O"20ÖÑÓ³ éiaíŸD¤wœ¹  €ä,@"2g#Z €¸A Ã=¤—±Il_QŸ!htÝuŽVD®³VDiHE¤aãO1#UŸA·wðnvîÜ:ú‚‹È‡\%õÙs÷æï$ûcGÕlƒR VÓš2ïŒõ÷Ahný=”^˜ôåï®È]Ž-9"qM/­Œ¼Bß>ûöWr¼eË–^ ·@@` Œ«Îœ@ˆôºnI"Òè~|K‘Þ]<‘Þõæn € ðo‘ÿ6á €€úöé%½-˜ó­Ä<áúvìt-œ³ddè‡Äd­ˆÊßµ”´‹¼ƒgŹq¼Þ•ñ²š¼Åódz朗úlе‹ô¡‘ùòåË´ý[àâÅ‹2¨(Û ç7ÊñÇFu“˜û^*!=¹Ò‰{õ!­Í2ZÈm^>JbƒÛ«I,l9+ñ¡çÆI|â‰'$²A@Ü-@"ÒÝ¢ô‡ `#@"Ò†#hvHDÍRg;Q‘Ùòxí$‰H¯Qs#@ÈA€Dd@œFpM >>^:8qâ„Ä­ˆ Õ (c?·õa‚Ãß.í¶_/1×aÙ–@Âï‰2¡×Z¿!±Kç.5Á ŸÍÚµkE mËfo®RAb§»K<~V̺òìGÔ Z ܼI×g@F.Ž‘ž›÷{¦whײ©ï÷ì`‰-[µÊ´@@WHDº*Èõ €Ù ˆÌ–'hO’ˆ ì¥'iŽõ%iŽu` € ð$"ÿÏ‚O €&èþÌc2šMÖ·l‡Si¢Õq}(Ig’¥“2*Iœ?s¾ëÒƒéêÞZYÆÔ³Ì^‰;.è³@¿Ü¤Ï„ÍU4\Žç©-1¢N¤ÄÜErI Õ jÙaã°@Ê—zÉÒ™ËäCLŒVFfÕQZšVP†…Q‰ž•Ç@@À5‘®ùq5 €€‡HDzÖ$Ý’ˆ4ÉBxx$"= œC÷$"sâ4 €x]€D¤×ɹ! €€#=Ÿí!Í7ÑgÎ…—ÉüíºéIúæ+ë.KûBõµ²*$ŒŠ*G¼½Ý6å½ãwoÏ’•+k·ÇÁý<#°xÑ"éxÜsH\Ôå’ÍVÕÝI›õçôË­º_q„>S2oé¼6íÙ±O õm7¶×{ò¡i}¤}WÓ @ðœ‰HÏÙÒ3 €€HDºÑÄ]ˆ4ñâ¸ah$"Ý€èD$"@ã@ðЉH¯0s@Wzx\ºø+b¥Äðò¶Ï0ÛùÔ9ž/B—}£Š«·äz/\Þ|EîÒ½¤®ïóÏ½à…»r o ÜY»ºÜò­Û%V,¬#´\+œçï׊ȘÎÅåDdƒ(‰T4«“½Û¤Í©Ò´[™î‡>;ÔÞKi‡qMÿ@IDAT €xE€D¤W˜¹  €€«$"]4çõ$"͹.î‰Hw‹fÞ‰ÈÌ]8Š €æ ižµ`$ €vôü¤´Z•…ăïí–8»½¾íõ_ôm»7ަ"ÒNŸ7ÉHÏ1$|”"qûj­lå­½>_·àúóúx×»¥ßcWõç5ÖZÝÄZ"éÖ»úgƳo“Në[æ“ÎêÏIòYÝÏ8«oOK”ÉÖ¸©¾ÄE³—úÿä™ €¤‰È€\V&…®‰ÈÀZ[‘µžY͆DdV2Ù'™½g@@ÀÿHDúßš1b@¿b"õmºzjEP¼YšÌÖŠÈ2<#Ò¯¾'‡ì’ñž¿¤•rýzëÛÒ!ÇË–-ëWóa°¶{öì‘mo%1²W~Ûìe*l­„Ü?r¯œ¯_VŸ¥Y9R+‰+Eh<©Zµìn&ífÍ_’iD@|-@"Ò×+Àý@œ é›i/"iÚ¥qËÀHD:ÇH"Ò97®B@ó ˆ4ïÚ02@L*”Ž•£Kºœ•X>J+‚vœÑÆ©ˆÌDͼ‡Îÿ~^WoãI‰_µK—øþ:}ûùØ¿òÉþmµêH2b”Ä Hdã}ú‘ tü–·%FÔ)è7É(ãW]‘\úî„ÄÍ=õç¤Xàz=lybeE9°n«VPêY¶ € €€yHDšg-  €€$"í@ò£&$"ýh±\*‰Hðþ¾”D¤k~\ €æ ižµ`$ €Ù+)g¨/±p>­„´¾tÙræª^üõþpùP~lU=ÀÖÔ‡ž×·ž/k¯o®®¯ã™wS¶è3?'¬Õ ÉŽ»Ê|&NùÜÔóbp¶Í»è³ O7:&'rEéÏ©m+ör0þWíƒ/Ÿ·Ó+ߨ’•&ê³7Ï]JÈ©+Î#€ €> évnŠ ਉHGÅü£=‰HÿX'WGI"ÒUA½žD¤{é@|'@"ÒwöÜ@À´4}‹òûÞ“Ö.\”*1ÔCBôm²Nã#ÿ’^EËÓ\Þ®¯ù-2ûˆŒipM]çñëu]·ŸÎ-Çûö{Zb¯'úI,W®œD6þ!pðàAh‡þZº—«‹ŒÛ¬£LÜ—,CkšÚBâ‘[$VNÞ ñã5IÔgè*THöÙ € €f i–•` €™ ˆÌ”Åï’ˆôû%´k$"íb²»‰H»©hˆ €& iÒ…aX €® }uˆtðóµêR隨{¯>úŽVÊ]Ü£÷,Z]_ÿ›»~´Ü¨øÁÒÿ\°Ò½7¦7¯ Lž6Yî7fíh‰õ­¯yöê(üÿf©W´b¸Ð‚Â2™?ýa3©1¯”ý÷ߟ qñ²?%V«Vͦ; € €€¯HDúz¸? €€GHDz„Õm’ˆt¥©;"éžå!éGzA@ß ˆôý0@ ß$MÓgE®þi  @*T}³™ßõá®íåDòΟ$ºVPã…T‰¡¥õç)òÞÙ§ÂXrÜ$oQ¿‡nxLÚûï°¯¡ € à$"ýa•# €€ÛHDºÒ+‘ˆô ³Ó7!é4]¶’ˆÌ–‡“ € àÇ$"ýxñ: €€ó#ßÐgF¾5r”t’ø¼VÞ5ýFßÞ|¤¥µ"ò6*"WvýÊ„?ôíÚ¯´Ðuº¯Ë}®wJn8~ü¸ôUç–J=sUâ‘Ëz‹Y;5~¾[®vŸÖŸ³â-ŠÈ‰èvÅ´AnÓôÙ´Ig“E ñ˜ÆšÉú–øï§}¤2L@U€Dd ®,óBÈV€Dd¶<¦9I"Ò4K‘é@HDfÊb÷A‘vSÑ@D€Dd€,$Ó@°OàÚU­Ø*)\®Ïb3®nö­>Ó.®¹VDFÕŒ0N} |.EîzÃ_å$þôÕBŒ‚[æ$зg7iRãìן¬©•~'ôåÚ–AËõçê§ýú¶úbè[µ#jéÏaNýûûùósNÉ®üuIb¼õ{¦–R…Õ'#Y+F'|®ÏÜlÙRß:îïógü € €€!@"Ò "€…‰HÿZf‘þ±^$"³_'‘Ùûp@‚G€Ddð¬53E‚Zàü¹s2ÿâÅb%îzJß–®Hk°ôZ •IÇ­oÍŽªEE¤¾8©s´tìóW¾áÜzë­fc° œ={V>U)WJâ½U´’õ‡½úóT´³> 2ºqá 4K<|Mæ½cä~‰ µ€ÔÒ¢¼-ÇsKsÉíGKôÜs¶ ØC@ü\€D¤Ÿ/ ÃG°O€D¤}NfmE"Ò¬+£ã"™ýúˆÌÞ‡³ € <$"ƒg­™) ”Zëøô“Ëüþ4ObHˆVØ…ZcH¨î‡…jû°¦QÒ.o#­P J<Múâ´£2šC+ô{½{hIÙÀa/ÉñŠ+šh´Á;”–­Êä·¤î–XòáÁ‹‘ÍÌ¿¶WÎö-§•£#j…öûkõ¢½e{ˇ }šM/œB@üO€D¤ÿ­#Fp@€D¤X&nJ"Òċ󡑈üF6IDfƒÃ)@h‘½¼L@ÀYqÇÉ¥3vN“ZÓxФ³=r3i‰Z)¶ëÙrùµaº¯×gŽ]_@ŽW­~›Ä_{[b½zõ$²ñŽÀÅ‹åF:ß)1Ï£Ö×A{çö~w—Ä}É2æˆ%Zq]<ù¸ì÷¨zAâ¤swIœ»ø7‰l@@@ (+É<@Ü*@"Ò­œNwF"Òi:¯^H"Ò1n‘ŽyÑ@G€Ddà¬%3Að€À„Oß“^§m,1¬¶nB—Y œsJÎ=tQßÊ<º±meêÒƒzé«+óɇƒ …$>®×éY¶ž˜;o®ÜbÈìA 6Îëé[úeÿ© i2îB?éÛÃWüô‡ìÏžõ­Ä>=“âö½‡%²A@E€Dd ¬$ó@ðˆ‰H°ÚÝ)‰H»©|ÚD¤}ü$"ís¢ €®‰ÈÀ][f† àF¦~(½MÚð‰Ä°:¶•yÆ­’÷_•ç='±xïŒSD'¶÷Ý.Wmì©Þ3·ë³'m“ã7ßRCb¯~%>øÐCÙxW ûÓZÉ·¶ØJ¹qþ©ˆÌlRfê÷wÉŒ_ätll¬M³£GõíðãÞ~SŽ¿ûÞ6çÙA@ü]€D¤¿¯ ãGðЉH¯0ÿë&$"ÿEbÊ$"í[‘ö9Ñ @W€Ddà®-3Cð€À'Ó'J¯Ÿ¬ýHbh]­ÔKÚ§• “âäøµú6ÜR/U’}6Ž œ[¦¥Wf볓Cµ’,ú.}¶^þK™ù«t\²dIÇn@k·$$$H?õZו˜·§¾ÍÜ-P'©Kõûûv÷weVÍ›6 Ù1@@À~‘ö[Ñ@ ‰Hï| HDzÇÙÕ»ˆ´OD¤}N´B@À økÌ @< ðéçŸJ¯ïÍ}KbúšC§µÐ·âvü5ì—IE¤@8¸I½¬ŽW]“+#n)hÓCü_Zúì­ú–æ~}úÙœgÇ;‹/’ œÙ_bþ¦ú½÷ÎÝÍ—ä-©2ÈK?*qø€áæ4#D@<(@"Òƒ¸t ¸$"=»¶$"=ëë®ÞIDf/I"2{Î"€ €@ð ˆ ¾5gÆ €nذn­ôòX‡&·>®•{kŽiç–R©žÙ¦]Պɼ?FÈ V-Zí™y¯[6oƒqqÛ·oo#òÄÀ>²ÿ{!}VgòùlÎëNÒÉd™zå]7Kœ5í‡`¥`Þ € €€‰Hv@°O€D¤}NžjE"ÒS²¶ý’ˆ´õ°wD¤½R´C@` l+Î|@\ؼq½\ÿXÇ»%nê~ɦ¿¿Žëî½?ç–¥_©lsž÷ $/L—' ˜*±^½zî½A÷öòK/ˆÀ—ŸŽ—xðl¢ÄN­›I\µ{»ÄØ¡QCÂôíв€›K›ãeVIÇ“$fœ±IgSäxž´\ŸÐö¡¡¼M\@Ø € €@Ð ˆ ú¯ €ŽˆtDËómIDzÖ˜D¤­/‰H[ö@@GHD:*F{@ 8xð Ì»qƒZËDfHL×`1âå­J(.çc^,#‘g®ìÓ·g7On-7xÿ­÷=s£ ï5² >û1îi­ˆ\²_AfìÐJ¿»´2µä-äD®ºÑ 7ÔJÉ@á;ôò^™Êm¹ôí+ê/€r:]KYët›ÌÐgÄnßwXÚÇÆÆ ó@@\ é#€‹‰Hs®4‰Hï¬ ‰Hu&éïwA@À ¸kËÌ@< °råJé5=]+ÀŒg¿1,,LÎoÙ¹EâG¿OÒHÛË· $}¦•i«æéÛ³ ,èö{s‡ƽ+Óß?{¤Ä÷š&Øp¹¬»þ¨ÏˆÜqMŸ‘XþÀ|F깉‡dÂwe¨Ãô–¶?ßugDÊù¿^"±N: Ä@r‘Aþ`ú €Ž ˆtÌË[­IDzVšD¤­/‰H[ö@@{HDÚ+E;@œø~îwrÕè_—z—må”]rI&WþÐg>ßx„œ}´Û£™´â«E£ Iv»"ñÕÕúŒÈùûµ2¦sq9u§õ¡‰®ÞÐä×_øö”Œ0÷†K7öÒgG>º Bö»Ÿ¬±kW‰l@@` ìßæ àQ‘åý_ç$"ÿGáÑ$"myIDÚz°‡ €ä$@"2'!Î#€ àæÍ’^^ŸýªÄÐÆÙWF&×·o‡äÕŠ³\…õ™{nJ@v¿U+ô®L=!ókÛ¾³ÄCµB²jÕª9ooOêãô™§/¾8HnÕQßݤ°·‡âÓû¥]M“û矧¯Éþàu}[û êËñöÖ¯[­‡GÉþà!C|:^nŽ €˜E€D¤YV‚q €´‰HÏ./‰HÏú½“ˆT ‘Æ7‚ˆ €8&@"Ò1/Z#€ à’À ”ë_ýVß>ÒD+«ŒN–“'~ÐgϦ¬ì¬œßhBÌDàä˜ýrtjÍkã.k%é¸ud¿lå›%|^+Rï¾ûnÙ7Þv.;lrúòPi3'QŸ}Zè&õÍñÂk2S'´xº¾»xq}6¦1Í7Uõì-qààaÆ)" € Ô$"ƒzù™< €€·HDzFœD¤g\¯ï•D¤Šˆ¼þ›Á> € `Ÿ‰Hûœh… €€[æ-š'ýüêE‰‰ag$VÛrZâó,W¸Q>¬œ•gªõ6Ñú,Í+ïiEdÜ“¶ÏÞ¼¢/1¶ þE+$¿Ü®ÏÚŒ;|L:-\¤HÖsæ_·6ºEŽåê‘!1$Lß–ý¯†z õWØ›ÝÞ–-›·Ìv¦—/_–óúíls@‘A°ÈL@À|$"ݳ&$"Ýãho/$"UŠD¤½ßÚ!€ €¶$"m=ØC@À«CŸ{Jî·{ñ'çtÖgFÖž&ûñ÷iEd¡ªTDf¶0g¦‘Ã/F]’X&R[MøK+ ;¢={DNôzò‰Õ«W—È3"Õ+§íš5k¤Iïq=%æn¥¾9](ç“¶¦ÈT(ÑMâ ƒ´’9PæÇ<@@o ˆô–4÷A@ ‘™ 8pˆD¤X.4%I"Ò…¯—"€ €ÿ ù? > € à=™Ó'ËÍ~úHßBüe+ëC!­C¨c­ˆ¼ÜÕZ¤o'ÎjEÒõYÛŸÞ)M" è³ ó–Ê#û!E¢$NzaªÄ–-²–Ÿ4b“¥ÀK£_’s_ŸŸ!1â–‚Y¶ ¤ɧ4Ya{U™ÖìésizÌ@ðº‰H¯“sC@,‘®} HDºæçèÕ$"ID:ú¡= € ™‰ÈÌT8† €€‡ÆŽ-=õ‘ÆÞ·$È~º¾„ØbÄñÖg†ô°VDV Ž 4{ÙÓ®é³4Ïÿ¦•¤‘uµ2wa}&äµcIÒU¸Zg~ú•½]Ó.Úw«cú‰r64w`<#2årªÌ'ùŒV>&ŸÕ׬'ÑX0®œß¾z—İ0}v«ì°A@pX€D¤Ãd\€ €€ó$"·ûç•$"ÿ©áùÏ$"IDzþ[Æ@@ HDÃ*3G@Ÿ $&j%Ù‚y³e,‹ü$1$DŸmª•V¡aZi––¡Ï@\}iƒ´ om-™ôùLük)ߨï‚I eà¥J•ò¯ xi´gÏž•;ÅÄÄØÜqãÆ²ÿØh}ëxî¶êiÓÈw6öÜ&£Ž( ?o¥¢u^å"õç,ošþüÍ}“´[µq‡Î’!#€ €æ i¾5aD €(@"Ò7‹J"Ò>w‘$"íû¦Ð @pM€D¤k~\ €€GV¬\!ý?;ቡ­ôÙˆ½iu~y>ƒ³õ2«§Ÿx:€fçúTÖ¯_/´my·Äò7jÅhç»ËþÉ §%ιö½Äˆñ¬Ò‹?œ”ùÙqA⚇m®öZ_bßfnq9¿'î„D6 € €® ˆtÍ«@ð¨‰H×xIDfïG"’DdößÎ"€ €î é^OzC@À#«Ö®’~ŸÛW"•‘ö1§%ê³þòü •|«¯±ï kugíê2ãn%¶KÜ{)¯Ä/6éÛ£-‘ú Ó¼õ¢åx¡:‘óÍ-1$Ì?Ÿ™°ýŠŒÿÀøC×=®Ïˆ¬j}Tf7tÞÉ)úvmiÄ@@Ài‘NÓq! €Þ éœ5‰HûÜHD’ˆ´ï›B+@@À5‘®ùq5 €^X»N+úžó„Ü7´í³íŒÁ\úüˆ|¼rV+¹J ,gœ ʘ´H+#?í?Yæß Aƒ tÈjÒË~ýUN½ötg‰¿ÞwѦéë#?ݤ•ŸoÑÓå‡WyËh¥ÍE~°“vU~òüPHF{õ>;ò™›OÉþ++Â%®Ù¼["o]6 € €€Ó$"¦ãB@¼/@"Ò9s‘Ù»‘ˆ$™ý7„³ € €€{HDºÇ‘^@ðªÀº ÉýúŒ~\bè½Zñwù‹£²ßàâ%‰KóI,þ\y‰ÁºIØwU¦þŸk÷Hü胕"Ûy7½£¦œQy£DãY‰ƒ–‡ÊþƒZY¸³¾M:ª~”÷×gD¦|%÷,þl‰|(^\çÕçÑûdÑÂ…¿š³HbÆ %²A@pN€D¤sn\… €€OHD:ÆO"Ò>/‘$"íû¦Ð @pN€D¤sn\… €€)6lÚ ãxà¡æ»Ý¨Ïö«£’oÊ/Ç‹îŠHc±N Ý/›4ÖÊÈ¡#^—ýêÕõ­ÑF»`k×®•©?rïO$ê3‹Z+ £šT}$¦åÍnoË|Z6o™é¼¾˜ñ¹ïØIŸY @LÛq@@À>‘ö9Ñ @S ˆtlYHDfïE"ÒÖ‡D¤­{ € €€«$"]äz@|(0ü¿OÊÝ îúBâ õ$þ¬…–ž¬Ïˆ¢o7öáP}zëó¿—û7ب¯¾»ŒgÜ}IIñ2•åÀÀá¯HlÕºµ6²íž={dÆmz·’ÙS+j…!ikŠLåþK|qЈ@™ó@@üB€D¤_,ƒD@ s‘™»\”Däõ"™ï“ˆÌÜ…£ € €î éGzA@À«Ïì'÷˵ýK‰Cj_–˜ž¡Ãøõ Æ~›µ"²ÄÐஈŒ¶[@VtÖŠ¸›bÔÇØ~ F´ŒY«^ÝŸè/§^õ¦Ñ$(âGŸ~$ó¿EŸQ§`@Ì;ù´®{ù­Ud>s>ÿ1 æÅ$@@ éo+Æx@ø[€D¤c_‘öy‘ˆ´Ï‰V € €Î ˆtΫ@ð‰ÀŸþ)÷muO3‰iiúVãÐÙ јž¡¥‘%+DÉñˆçb%Û&~ë™rѹG$.è¬^“6ªÓ”­ú䈢¥ä|¯~$>ø>C°`ÁÀ¨”IÙ±iÞY¿W§•Ö¹¢sÙq•y›¤\J•Á¥}*qã²Msåòïy™Wœ‘!€ €Ù ˆÌÞ‡³ €˜J€D¤cËA"Ò1/‘ŽyÑ@@À1‘ŽyÑ@¿Ø»¯Œ·ë;K ïb}ˆ¤_ÍÂùÁ}}Ÿ\|cj’Ä­'µ¯¨›µÒ±ýɉ&ê‰ Ý<¨íðL;ÈÕÕÜ—Öë3Q“6_’¦ŸI–xí¬> òâ9­„,Z(LŽû‰Ä^={Idƒ € à‘¾qç® €xE€D$‰H{¾h$"íQ¢  € €€«$"]äz@ü@`ÿý2ÊÎý;J ïØ•‘éÉé2ÏóóOë|oÈ/1ªN„Dcsu¢VÎíXµÓ8”qò´É2ï1kGKŒ¨¯ÏÎ4+FÒÎxÚáKœÔZ¿Ï5‹ëˆËê£Q-¯¯ÐgZîzQN¼üʫڀ- € €€OHDú„›"€ à]‘$"³ûÆ‘ˆÌN‡s € €î é.IúA@ÀâÅÉ(;ök/1ì>­Ìjèç¿=!§ò5ˆÖxCÞ¬šúåñkËô™‚ï<0NÆßªe+¿œ‡«ƒnûPéâp-ý_ÙsÇävµK¯\Ÿ|ZŸ yð5÷gÖÊÈÎUµBrúfƲ|úŒÔÏf~ï•qq@@ÌHDfîÂQ@R€D¤í²’ˆT‘¶ß ö@@<#@"Ò3®ôŠ €€©ÑgëµëÓVÆþ€í3#ϼs@ާœH”Õ¿¼Äüe«"2ñ¸¾Mûæý·Éü¾™ü­Ä@Ù$$$ÈTz>r¿Än,+±óýK¼ñÆ%¶êÝRbnm&Ÿýi“vM+{/¼vT†}ý>·.£Ï’¹³†_¾z“?M‹±"€ €'@"2à–” !€ ³‰H5"I"2çŸZ € €¸K€D¤»$é@?8vü˜ŒºMO}6â…ãúvíñ·^“ãÖ‡J ëSVbþ2ù$Ú&åÑüOȇn¸! ¦øèd>‰ÛçJ<šXPâÞ3úŒÌðÒa²Ñ6Fb¡›ÌýÖlä?6)_ëÎÂ)‹åÃS?‘øýÔñÏ$é3/;£ Ù"€ €øD€D¤Oع) €æ ©ë@"’D¤9~" € Ø$"{}™ €v ´þO=i×3ö/‰]nÒgìÝ4ET!½ÊÊñüå³"2~ýU™_¿ªý%>ÛïY‰²9yò¤Låöj$žè¯ó=qEg8k§ÆÏwézo=¡ë_ªE9Õ¡˜60Ù6u™Žsôƒcdd­[´¶áŠß“ýÏ‘¸ü56çÙA@ð®‰Hïzs7@L)@"’Däÿÿb’ˆ4å'ƒB@F€DdÀ,%A@ÀqŽ-î’‹³VBv¨ oÉ6zºyªVÈ¥÷(+‡ ”ÌŠÈôD}ërø÷ùežk—he¨ìÐæ©ÞÉlªøRâSµÓ$¹¬“d}&è’ÃúlТÝJʉˆÛ#´I¶I[õÙ–]‹=(#ziðÈlG–‘¡•“!!!Ù¶ã$ € €€gHDzÖ—Þ@0µ‰H]‘ê@"ÒÔ?® @ð{‘~¿„L@Çîmy·\tñÀ:‰1ZhɰhÅXZºVm=®ÿËrå¤]¾Ry¿™]qõS}«r1‹¾5{܇“dô·Ýv›Í"롞?^N–¿¡¸Ä6UR%þ§1õxÔÑYwâÃ3ɧµ²ìæÊ2й_è[À}8$n € à€‰H°hŠ €@ ˆÌ|%ID’ˆÌü›ÁQ@@wˆt‡"} € àg;vìïÚµKbh¨VÄÏÐ3öóç×RÉÿŽÒ·Hçy,0Ÿ±—vUŸ•¸g z|ÔR+BÇoŠŸ¨âZ:pø+²o»výusOë†2ômé»%–|°„_L%q²>Ës㯛d¼¹råò‹q3H@@ É7@  i»è$"IDÚ~#ØC@ð„‰HO¨Ò' €&/3ºãÞóô¬ÊÈs?œ”yu‹?'ñµ»´"RvþÞ,ÓOÿ]ªo .s‹XöÇ=á'Û‹/ÊHuºS¢¯+\SãµõÚ±DOòY}dÊÙdÙ=“$1üœ¾½ý‡¯—Êþm5ã™26 € €@ ˆ ¢Åfª €8+@"RåHD:û Êü:‘™»p@T‘º²Ì @$$$H¯õZו˜·§>[2«[e¤ieaF¢>Û/4¿V¶Y_ÎÕe^?¾í‰írϳ­o ?­C˜¸Qßþù­ÌëÙí>9ñdÿç$Ö©SGúÉvî<}ËôɈ 6ÉëÓ‘ï{aÜ¿X†¾½û¶b:œª‘ú})«è´Œø]×aùÚmÒ bÅŠ>77G@pN€D¤sn\… €@P ˆ$éÎ/>‰HwjÒ € `~‘æ_#Fˆ €€éõ™~µ›×’±å}<óÊÈ]OéÛ¹#*ê³KзO›eBç–—¡D/=!ñ\²>û2)_¸ìÇ© qÛz‡ìøñ¦ûSÉè×[)1ßVD”Ç_Û'ûVÐgCŽh ‘ÆùæßjiäÐ ßË¡fÍš§ˆ € €~$@"Ò‹¡"€ `‘fY ÇÆA"Ò1/Z#€ €¸W€D¤{=é @ HNÖ ¶Û›Ôyç{B+  Ú)û¯ÕÓ·"¿yº ì{º¬D³l.ütF†’|^çywŒìç-©Ï$LÑG*Z¾|å+9^½zu³ Ý¡q8ú¿Ô;Ô¹Ÿÿâ˜ôV!î²Ä%ë÷§Ï¢ü²_§×x‰½{÷–È@@À¿HDú×z1Z@L%@"ÒTË‘å`HDfIà @@/ ˆô"6·B@ PÒÒ´r­h”>spu} ò–“:㬑ϔõ+‚øíú–ðû"’q¿öâë~5~c°‹/–f>#1S­ø4Λ%¦|­#éßé)ù0b¨¾Ý»ÛMWe?×]C$Žzã-mÈ@@À¯HDúÕr1X@Ì)@"ÒœëbŒŠD¤!AD@ð¥‰H_êso@D ZùR2“YmôíÓ7ÉýôQ‘–g÷Y+"û—õË_ýD+<·ý±]Æšù[Â}5¹ÖË­÷8(±sçÎCBô-àO ì#û¿üUb úsÙ1Á&u™~_F= •ŽmZ¶‘Q8¡ß§7W‘ýÖ­ZHüìËïL0j†€ € ਉHGÅh €ÿ ù/¯ éUnn† € उH'Ḡ@`ÈÈÐ ¶ò¥‹ Àg%Þ¡ÇÓÒUgõQ_]Ñ·—T^øÙöê2}«öÛ÷•‘·i­{f™Æ›£^“¡L}ÿM‰ûNé3Ûµl"ûë÷ï‘Xtp”ÄÐÜæ¨èLÞ¡•¦ ß'ãzyè+³Ú<¨Ÿåʕ˪ Ç@@L,@"ÒÄ‹ÃÐ@0«‰H‘îøn’ˆt‡"} € €þ#@"ÒÖŠ‘"€ `íÛ¶ÉX†è'1<,L¢ñìİðpÙO·VNî:¶_öó>¥Ï& ×gÊA?Ø$žH’QÞ´çV‰ßMýÞ”£.]HƵ³÷‰ÖaÎØ®ówkÅjÑʺ¹ëFKƒÂ5jkÏo“Îh…iÙ•åfó¾œçù›r@@Ÿ ˆôù0@üO€D$‰HW¾µ$"]ÑãZ@@ÀHDúïÚ1r@üNàö&·É˜CN‘h–gÚ ™òVrÎýP+øÊ”)cï¥^i7ñ£ä>›¿.ñãæZiÜüÐ%ýôð<ÇŽ«Z¹Zþ }+µÑÎÓ1qŠ>Dtý’ r«2ù¬> 2é¬VÀ†oÏ+÷ñÊkÞ^S"@@à ëÌ,@0•‰HÏ.‰HÏúÒ; € €€s$"sã*@pƒ@Ýæu¤—”ÎW%†å³­ŒÌHÒg î±WΗ{±‚Äð}¶¡ìxqsbô>¹Û“¥´’sn\¤ì狹Qâ€a/KìØ©“D_m>ø‘ÜúùáÏJŒì+1ºqa )n¤®OêåTéÿÒ…4‰Å¢u=‹èKº-y£Ôiýöƒ"€ €˜[€D¤¹×‡Ñ!€ Ð$"=³¼$"=ãJ¯ € €® ˆtÍ«@@À õ[Ô“^’ÚÇK Ógnï¿Sö£ ê~Ñáe?OÑܽµ¹vT+ ?8 ·Üÿ„Vj÷_qX?½ºJŸ¹û’> ñðñ3F¯Æ¡/•ûÍIüNb¡› xôþ§&ÄIÿµÓ´²uv[Ÿ3zØró$õ9}A×Ù£ƒ¢s@@Ó ˆ4Ý’0 @‚O€D¤{לD¤{=é @@À=$"ÝãH/ € à†-H/k—®‘˜òB†Ä’XŸ58ÔZëÝŠÈ3“´äqdŒ¾5»Çm:ÙÉ4NÝ%.ghÅ_÷ÞýdðÐáÚÀËÛ[Ý"wÌÕCýB¬¦žFü¯gåiKNKÜÚS+#óYéYà­\rüÌ9}›wþüù==$úG@0‘‰H-CA@ ØHDºç@"Ò=Žô‚ € à^‘îõ¤7@pB -Uß¶œ'V:¦ŽÐJ>£«RÖŠÈÂC¬‘żS™vMßþ¼ëÙ]2”öÕõY•ßnÔJ¿’¥õ­ÙӦ賛7on Ù'qÍ­$í=®§Ü?w+­$õö`®LI’[Z£oÇ^ð :>½´ÿnñ*‰ÕªUóöи € €€HDúŸ[#€ €€ ˆtÏ7D¤{é@@À3$"=ãJ¯ € à€@HˆVfŒÌü¢Òje_Ôs¤AÞây2oèæ£WöéëžÏ|~LzŽl#±p£h‰WVéùçéÀ}øQ7À±î^õ’\ðõ…#nÑgV:Ö‹ó­S–i%ëë÷¿!ÜÛê^‰MÜ.ñôÑýßþô‰­Zµ’È@@ 8HDÇ:3K@L-@"Ò=ËC"Ò=Žô‚ € à‘žq¥W@°C ~m}ýôÎ;¥uzºVÔéÖb1ö GèÛ–£Ü íò”òÎ3"sšBÊ%}¶e̲Òtéì_sºÄ£çkß]KúO Qbhnï<#2i»:t*|ŸÜ÷•a¯d:ÏgŸzRŽ?;hˆÄòåËgÚŽƒ € €)@"20וY!€ à$"Ý»L$"ÝëIo € €î é^OzC@µr/99Y® Õ >ãÕ6öÃÃÃå|«ZJ<Ûè„Äðè0‰¾Þ$ÏÕÎ/})C©Q£†G†tòäIé·xñâ6ýoܸQöõˆÄÜ÷ê37my`'錮[™ •¤÷ù3ç{à.t‰ € ($"e%™ €~(@"Ò±E#阭@@Ì%@"Ò\ëÁh@@À÷Ý#­NÕ?*1¼ˆo+#ãw$È8º|@⨣%:¼9tH/1bD„ìo;rDb¯Ç–X²˜¾½»å½dÿÜ•KI\(±X¹¼ ^K—x²°>c3*^Ÿå8àk­¬¼šW+Pw•Í'íìÝ”=–$M£÷¦H¼­M‰a3gÚÛí@@‚P€Dd.:SF@ÀßHD’ˆô÷ï0ãG@‚Q€Dd0®:sF@ @Ú<ÔZf2`óïC­~ª°™aÚ9­ÜK¾ 1_Åü6çš»´²ÑØÒ¿ŒñÑ®xí­8ܲb›´ s°Ró­ô´,Yb×ýìm´©‚V<Îm-—¼4õ¸½—Ú×®€ÕûÊûÚÓ @@ (HDå²3i@C€D¤}ëH"Ò>'Z!€ €xV€D¤g}é@¼!â™·D×þ¬z¦£ŸðNœ¯¹G+(ÏEè[½/¥ë3KF•’óQQQ™^o‰×ã Ö Ì t¿D h4* cceÿÚµk/ž;-±D}¤6¶XÒ®ê§-̴䵞^]N+"¿j_T¼7þ°Ä …´bsOÑܲÿG¤Î#ýjšì‡$hGõÏjLOÑóÖ¸MÎ×ݰI¢¥\9Ƹu/Ëm³&wʹZ,±€1Ï,¯pìÄóCË£ßzÛ± ílýÛòåÒ²q“&v^áX³}ûöÉ+VtìB;[_°~ߢ£µBÖÎËìn–’¢•ǹré³Ií¾† € ð$"~‰™  €A @"R™D¤~×IDfÿ3O"2{Î"€ €€çHDzΖž@´4­ ;{æŒÌ9¦¨VÞ9üŒÄ,ÄŽ;&gæÏ-±Oß§m[^—ˆ¼œÛZ!™’!íòXÕ˜¨»–;ÑòüóºoÀúvð§f–ý©mµBõ÷ÛµRíúŠÈî/Uv=>="ñ–ÕZYµ¦V.ƶ‘Ö9»4®ŒY½AdQ™šªÎùóiIåéAê\æ}õ8rB+h#\¬l»¹‚þœÒDðž/µöjb²ŽÏÅm»f ¥‡fùÖKœ°I¿GûŽh墋Ý[?£¿W.­ûZºÚž\FâŸë·»Úµ\ÿéc%Î|¤ÄÂêJüaÁR‰®n–.^ ]ôy´«Äæmµbvâ”Ï]íZ®?|(NâMU´2xð°dÿå—_–è®MÑÂZ1üñ§S¥Ë.]º¸«ké§^Í[$NúìK‰·Þz«[ûïÕýéï­wÆIŒ‰ÑJhwÝdê”ÉÒÕ£u—î®®¥ŸM›ôõm·ÝæÖ~ÎNž<)‹/nrkLJÒ ù î–*夿óW´¢âZ¢FW+N>yÿ]éwÕ—¯K\°;Uâé ñ]Ý´mÚ@ºh]p½Äw•¸uÏ!—ºNO× ¿\¹´âæçnZ™÷Æ~]Ï_þXgÛÿõ?¿ZPf±è£-Ó­6•—i¡ÖgFŽˆVî5´»‡~°í6«ŠÈaÓKÃ.ËÎKü£FA‰+÷ëk«Ûw×ñWÙ¦ý½¤q E+®–î×ÊÀÝ÷´’1FEd»vÚpî\FEä¨Qºÿò˯-Z$qò ýNUh#‹¥Ç<­„t´"²Ï½®ÖŽ+ÒÕÒÃú=,ÐL!–R¯QsômËߺ í.T®,qõøñÃBC%¶n­ó»ö‚®_.=lÉ7Z`érý95ÞšmRMߟïžWå¢^x!ë‹í8cõ¾\Ý£G;zɹIõŠ7H£"aú}:î+ÙoݺuÎÛÑ¢c‹»¤Õëß?fÎ[&ûîúóϨØýl†Ž{ã¶ÝÒ¿«þS3*vG¼¬ëzìäY9eüÜíœófë÷t¸w¤‹%¿¯v¶«L¯Û¼i£ÿrú‰cÆ}i;g^¹¢¿-üIºèÒõ~g»Êöº£GÊyw­ëõ7£bôzö^‘Á»öÌ  ™ýÒ“ˆÌ܇Ddæ.$"IDþÿo‰ÈÌ>r:J"2{!‘ÙûgID™G‘™»\”Däõ"ì#€€§HDzJ–~°C`ù²¥ÒêÖ·K,\¸°WåÜÄx&W¿>=¥ñ‡Ÿè¿Ðæ2ž1–sÙ¶øówý—ö‡•vËþ\›m{GOöïóˆ\ò׆ÍW­ÛâhÙ¶/V$RÎßvku‰‹—ý™m{{OnÝ¢•+­þs‡\roG}VÖÇ“§ÛÛE¶í^}~ œ_öÝÇ?¬þîzFÖmUËJ¿•òê3Ûš÷'û}úh¥‹ì8±1žíÕ¨¶zß^J+Òz¼¢.íÛ·w¢×ÿ»äñoÊÎÎÇH\\+¢ÆÍX(ûõë×ÿ¿ÆN|ºûýù|ÁZÚöø­˜YºZ¿—åÊ•s¢W‹%þòe¹®T‰¢/ÖJ«üo¨Ï¹‹z>_¾|Nõ?cÊD¹nÉd­šÐXfå>Ôþ.ÄkåžSÿ}Q×6MåÒû#WJ¼¥ˆVεÿI+Åv9Y)véÒ%é/6¦ˆÄøaiWk¡†åù­7Ëþì…ú{hë]‡¦ÍšÉqcód=]§;ÔµäUý^l±VB>WL÷Wê¯IËw;ôÊ®ß=h´·"rdÓÂrA¹Í$v·VæŽÑ~ÞÈ«îS6è|7l '¾(ZJbäÌ™Ú0§ŠÈW^‘vçgÍ’øC]׉OFëõÖ­£‘+o-dsý§be¿û$…OÞ“ ûËbµ"òÒnõû]w-›c´¢ìÖ7H»+{të^SY¬ ­w ÓÂ'KõκžÖ—h[¬/s¶„d„jK-,µd¤éýŒóçw—óoÜ®÷éV]]ÏZ¿Öe'èõeêTÑ~¬×gXû ·VÚ•–F4*°.ˆ“ëÆÕ×߇­+èý·jÁ¨¥ù7ºžõÛ4—v¹ÂsÙÄp럷ÆñÜÖýŒiw~ÿv‰u’µ2kPÝÙÿå€Ë€U¥åC¯gI Óß yr©sîܹmŽã6âþ-Úï¡¥ú{àÃfZQ5s«ö?ýœ~ÿ^|í-9`Ìßø{‚ÑqÜØ7â¶ käº)£ûKü©ÓE‰ãô¶–=7êÖc´";«~Œã×WªîÛ³Kú»·i=‰;×߇CU‡"mGÉñ!C†Htts5A¿ÏÖ·{_}^×·×¢‚ÒU‹gõÏÙnݺ9ÚµMûò¥ô÷û¼Žçäø€e×_4Í›ë÷Çæ"vZÜUGZ÷½Qvä ý~̘·BŽ»ú Ê~=~ÊŸ] ñÝ?õçlãŽý²ïê³ǽ©¿ÏvÍOúûôOý}‘‘aýy—£Îoæþð­\üÎð>÷é¯KËñ3ú}u¾g½rçömòáî»ô{Z,¶˜ìoÜiýAvñÆßçóäÑŸ÷æêJ‹–[Ð\ì߸¼tqýó¶U‹{äФé_§ÜëÖ¸Iúy¼ï3û<ÙÏ-ý<ܵƒ||fÐ0‰®þ½Ïè׈o¿5Z>>Öãq‰±±±Æ)·Äµkô÷iºº¾îú?´ŒÁ9£Ž-ª¿ŒãD|)@"Ò—úÜ;èHDfþ ™¹ ‰ÈÌ]HDfîB"2¯ÀˆÔÌYN/«!©j#ÑF"R~F¢Ðp1"‰ÈÌï^”Däõ"¶û$"m=®ß#y½Hæû$"3w1Ž’ˆ4$ˆf i¦ÕÈd,I‰‰rô"ÖgÙeÒÔ©C+–-‘ë®&k‰@ ãmNõöï‹?£ÿÙðîÖr²Cý«·tîH…2ZyóÝìùÒAÍš5ë身~Yü“¹¯ë}W®]/±jժ׵tn×øæé_ÿ 9vR¢»*"KÄDJç/%HLJ±­D‘ƒNlVÿ©ÿÂÞ¯[[¹ú\’V€:~Ö‰Þþ}Éð}å`ü_3$®½¬ë»vËž7vâH5ë[UûW;.Wÿ”t§Äy?ÿîDoÿwɾ=»e§U­LV'^öWEj%ÁäÏ]û—åwF½$ýúõ}‰Qý—ükõ‡Ëþë£ô_jeljÍ·ë¿T¿[{¯\ýÅv]×›»i%K¿~ÎýËõYë¿ÀÞTñFé÷Ìý}Öe®V„<øÂT9Þ¹sg'Fm±LýD=þœ>R®ŸrVRÜõU”ìš>\MûŸ¾Yû¾µ |(\ï‰!éúsaTœûF§q܈§WèŸ{GžÒþí¬cþÔþÇï‘1å‹K4,VwcéÖ·½÷I³þ>9'×íì£?·²ó÷æ©…:Ο¯–—Ce+—•hüž ·V¦†‡ëú©F¼– ßß ‹ÊuûéŸK²ó÷¦ã,ýýe¹©•ºõ¶ŠÖ\áz>·­?—ysëï%£rõ¥!ýåºehÅn9ýcÉrçúçǽ½õ e¼ÚHð1«°qüÉÇî“þ_½=Nb‹rú}½i’®ëŸÏ‘ãÆß[~hôcì_{=ÔQ®¯Ÿ¢Žô­¡ŽÄŒÕyî>¨¿‹)"íݼ>b°\rþÉÇ4ÒŸƒ|£õ‹”bý8Ú¯ÑþëSåãWcõ>ï7ÑRÈFßèx]ý{ëú¿ÖHÿtºGâôVZ±ûÔjýÅÕ¿·^¶þŸEŠ–þ¿ïª?¿“Ï5’}WÿÞ*ü½)SB=zWÓßÓq¥î—S®þ½Õè¿YCýï² [äЭu=F~ÃhâRìÛ]Ç»óOýïÀNÏh¿ýûëÏŸKÿ}±ñ÷ïÏ&jÅîËã¦H—]ºtqµk¹þÇYßH|ºo‰3gé<5Òuvõ&Û¶ê/üNíô¿Ã—ZŸjü½ÕÕþÞ<9ÞÎÅÿC˦óììÙ£¨l}–ö?N¹åãùóúûÍ]y„ëeü÷†ñçìõçÝ'鬜—®3~ÀIDfN"2s‘™»ˆÌÜ…DdšÀ‰1‘êA"R^HDª‰Hu ©$"­ I‘ú…ppK"2{0‘ÙûgID™G‘™»GIDÙGŸ%"Êã!mpÇ2Òüùóg?b;Ïž:yRZŽ~m¤Ä÷>üÄÎ+íköõçú/?þø£\ðÕ¬¹ö]hg«¶wß!- Dê¿(}óƒfÔí¼<ÇfÆ3"ôJÚŽ}±§Áœï¿–fƒŸÖ '¿*ûƒ ²çòÛ•D»Öý*mû½ü±DWŸµcܸp¤þ‹òí%µ"aè{ßÊ)Wß¾ûÛ¯K¤Ÿ‘Oé¿°]¼f­ øñ79^£†þ˸1Gã ~=å’RG¿—8f…þ öæ]e¿˜‹¯JÇJ?‹;i)N•´r ÍúöY9éÄÆxöáÃ÷6Ñþ»^’Xkz¤DWŸµóÚ‹ÏI?)鿌w*§ý÷ø­œwõY;5«iåĔƇ¤¿ÓWt]Ç©'ûŽ>kÇøºCqºnêÞ*ýyJ+>×€´, m+ÇǬ¿‡ŒD—ñ{5§ý©'Èõ ¾’8±y¼D£âdKQýž>ÞçI9~}×ßçúó#‡þW®›Ðè”Äfå4õÌâpÙ?^ºÄ;îÔßsÉ©Z™bôcì§X+é’S´2&9%I®›;mªÄÃOÙVœtøNû?[KΗ(£\©Ö ˆ´4ý¹0þà3î—–®ã»t^¿‘'wÉõ¿uÓqÉÎß›:S´¢ât¡Rr¨@”þ¾ Óã!¡ús‘’!çCÂt?Ô¯^Ôʪ2—Ëù_ÔñÈÎß›rh¥MîÛô{•72žÒî-!úý²üo_1ÍúVìðuú}ÜÚÛÚÞzƒ‚oêxb»Ü GBóê~z¨¶û߸­ó±ÞǘGˆµâèìt­X¹0H|–üÖB„ŠCËYÇ­ýÞ„èô,FÆ[§ 7ãø®öÊõ§­ý_±.CõiÚA¹×+ËùÿÏ:^ÃÅèÇè׸Êb‰ªë»ÈZAgTRµýY¥_Ñþöëºo3>J\_U×Ý8øÄ0ï'o”CIÖ·[í >ôK›™ÆíMD.¶VZî(®ß‡þ{çXU‘ýñ›„BOI @hÅÖUÐEdqEA]ŠX‘¦(Mp¥, ‹]V¥HQŠôÞ „BIHHÂ=ß9Oßó½$¯äg€ï?ïÜ™;sîÜÏ;3÷Ìy3÷ =¹ídûû:@á!ö(Ê#òoCúúõ!‡µÏoBjGÊ‘ÿUˆÈÃkfµkö~ãùÐÛðäqªüw‘jL6÷ûÙh?\yDjÖÌ%ðLm¼1Y¢¾Üˆ yå'M4‰W2yÄ^É?¤Ú›—âŨ7:Þ+½çsQ?6?µMô,ïŽpÛxÎ1C‹ÇÍU!²~'CýUàØ«1¸ôÞ†úõ¼yO])(">åýý’â†h×Îd¢üÃN¡^VëQ³ .NCµîïxï #Ý›Ë Ç—‹ƒè¨—.´ü!Z='³VÁC®Ö/øNø¾¸ô2‘ókãý ¿±²èPK›ç¨zŒšæõ·x\2sÎ9x­a¶ÈîMpCwÿõfKê_®¾w´ßWÏVmõjøð”Ã’ÿÌ@è 2íj3Ó?¥íЪe%Ÿimž¨ÆCU=E­|´ÓÙ'PÞúÇJ¾ùíû§˜÷q¡ò¦ 6»«åëŠWƱ4ÑÛ1ïéˆ;À]"/ü„¾…rÄßt¥D©~›G¥YËTöµXÑÀžLB¿Ô"õfô7dAXa#À¿g_ŒkÔ“50í~®ÅjÂÁFø£ÁË9…÷hÝ¥|óÚc\¶·eÝ: õ~ô¸Ér^˩ҕ§¨ÆŸNK‘|ƒžë.rÃcgDþ’$ÂzvU=9ølÎ×"U¯+©zõ|nÆO ëÇJþt³vôçè­ÏNß.ñó¾[(ÒÓŸª•ËKÖuÏü=д¾ZW9˜øÉ?=U-ùts¿7ší•ð²DÔS¿[‡Hxˆ‹~¬¸íöདྷôÆ‚%"7Ë޴ë( ÷îÝ»¸ªœ¦Ó¥2VM•ó»SñûjmóYÆ>1û½—DÿñÓxÏÆLÿ¯„½]ãrõŠŸEONà”yú½]Û\”^øI3xÑQh‡ÌøúD*Úm_Ù‰b¢Âä’§Ì?üÎdãýÐrx+[4k(*RÍwÅÞ$ô7ÞêÕüíÛÜ!‡h5-ËÛ÷Võª|¶w9¬Q½ºÈƒ^×S>‘Œ!zšâ;÷ö»îö‰^UR¤G¤~ÈÒ©Èì% ‘ö<4DC¤’°—4DÚóÐ ‘ Ø næ/°4DâËÄÆ…†HyehˆÄ) ‘Ú‚BÒ‰^"íë ‘à¡B5$ÒéȆ"ŒUªÁ†HûöÅUˆ†HWdOCdá|ô, ‘J¹¼ä ‘wÜxµÜùê ÛDfda¦Ù9ŽâÇê_Ž+VÄŒL̘zºË¦ã•ÿ=óS‰šøú³"ó+ÆŠ\²Ê¸*IÈóŸGÚýE2G¦`&æhf¨f1ßs¥¿Ë‚­7ZáC<±^/9;vüG¿Kåþáó1C7ê¥î’ùê*Ƴ¨Í8p ûJ—ã™%×ÑÝkoyò‰ì±Ç~—ÚýØjU$Óª®˜qyüÌl>=|¦Ä·iÓÆ}¥r¬úe¹ä{®Û_E®ìý×üú'ÍY(ñÍ›7YÜõè:°¯d)·}ºÈWZœó!<VmÜ)aÝ}P /*uBÀ1œš “ö­QÿæÞ‹™œ„ªP¼Ž9˜7‰~uAW}*U¯J_»æWÉ7ö¸:$>™xÝ•´Á„9?yêg"óçÏ6]».ÇxÊiº¯æüKò]Wå{»%ôo=!ÑÖ=s*ÊÁƒ=Qot­:ý˨êÑëèùsfMÌõ KþoÚ¦‰Œ7\í‡þG¿GûÛ¼™D¨›Þ<Ìà*]ËJ=óÎìM”|{žÄ ]0ƯÖ,Lô[/®¨ çÛÔ©ža6Ï/‰þÍóÌ„ssr‘~w’Èy÷d‰lŽô£W@Ž8ˆ÷!¬9f$-ãq§†ª]ÌËxúøÁàyÞįè7{»8Ô›ç€þÏü+ËAåæx6Ï5‡rÛâQÝ~»Ÿ¥)’¿Gx ô¿3Ö~+ãPîÊÍÁIõüæ)‡rXŽž&|vôßrì¤$üèNÜßM3¡ÿD»Z_± ž³ÑVl‘µ zcŒ§ÒÆ#§þGxÐÁOÕ]ekâ=(¶b“0g7<r¦”˜]=QþÊ£PþØ·â$¾LÅ2ôyi¨¿{^Aû’ñž¯îV|õÔ&éuÌ´ÍxŠýÒÏ·å,”?nlcǤ… Ú%ùÞnŽþpÀxÖÔ2—ªÔ•G¤zBj:•ê™»ï×Üæà3ʼ_š®¸‘Ë›¡žõézôÓ¾ÿ°ª†…ô3/ŠzF:zD¶ntóÍxB×,3ñ.~·˜Ý[7ôí.)"ÂðüïþýÍô¿ Ypã¸iQÿ’+£~}Õí‰ õˆŽOD»qÓ&¼ß‡«â¹´ ƒ?d0Ù‹ñÞî› «„q¾©'z½CCvËaV:î?î½x=å•Ì?ƒ÷sç‹;DO¥§ÕÔÀ+½š9s1úóðŸáÑu b¨œŠ|6V“x%Õcô¾rxþ_—«ýÆx¥÷|Þû-}¶‹ž—oÀ{4¹ Ú÷h³ûº§Ñv¸á:p©ýK›F‹Êª­Ü«·ŽåH³_¢FÄ£˜°ïgÒ=5%¾Ò•èŸóF1ÿà1š0ýGA÷XQQ®^Ù"UÙ%0z³Ö`œ³ä¨œÖþ)ò´¿‘¯Ô—ø ª¨§v: ˜ç™6ýÒk±h'º%àÂÁÆ#²ÑèF¢Åߌ{ÔÀ«ßßv#êQ›¹÷z}šœ¿÷Þ{‘ÎÜ¿¿?Þ;‰,äç“ ïËÙ…Ó†‰œÙãLo¿7õ’‹|/‡Ÿì$r•ùž­9õfÅzô_11žµû‡’Ð.\Ñõûä ¨§oàþ³Ï"¬œµ\îJõØý©3ÚŸ–3ÐêÞîêsLÝ(ïúûäÔÈÍÕEnÙûsLïn¸Ë­%Kä‰Å"7$ˆ\øóZwU9M?dÀs¿þÛE–ox›H]cÔi&7"§OýHRü¼ÈÛïTä˜Æ»¡ÅuRõØ-Ò#’†HçiˆtÎ…†H{.4DbàCCdm©4Db@JC$Ú "íÛKW!"ñÁfÑ骊ØÅÓi‡Ã !Ò†ÂH; ‘0˜ÑICäÿÞ "íÛ"íy¸ ÑéŠ â‹4D¶¿»¥¤ìTS$=¾ÂLΙ,Xº W_ôÙ3s°óè½ûsÌœîMÂŒgÑœ§øúó9rbò°'E¾Ü3 /¬‹—ð/ë¶9ÏXÌXÝEî¦Ü$G•2˜óÕšºöáÞÞÐ;ÛxVmŒ‚%zÂÇÓŠYR$S¸Ÿþ(CžÁ ɲG0“:x1Ò»q <÷,ìê¦Ò•‡˜žóÖ`Éwê{‘Z ü½æc†ªrËg$¾µñôÐ|*‹Òßïé^’Ñ#¸NêM›9˜Ê«qóß$¾QãF"u:]³Nw•Í3»Íj|rr²¤ßµ`žÈÕÂÃC~šM†‡GDó[$ªbfÄÔã.Ϭ‰§žtŽ÷“rä„ä»Î3.Sï;§ªEFŽÆ RÅúu$‚ëù™í'ÕC̶¦šz†·Ìä4ÉwGfÄ'µ†Ç†^${Vü}˜‰ñ+ƒ–êSÏ9Ëxhø¼Náš59ê<,*¿êCRºi¢FC_L—Úr^×À+Ð5òtŠ×”W qz_erPÞ€oQþ­=¡C¬ëÍÌuµ'¡_ó[6}fÀŒ–ÍsÛ–•ƒzrt$ø§öƒþef«ã3sýB])¿ê×òÙôý¶xƒQ1mì…f]+o!.g=¿¯¼èì+ÒÓŸÄ—0ƒùC{v—€¦yarÙ3yžê?aø¼“€ú¿ñ¸M7k–FÝá©jÉ—nÖ*ì„™åx-¬Ÿ¯Š–óUoñΣåÌwx››Ý‘§£¸‡Û`Æ·R3=ZÌ]gýŠö2lêi*&h-¿±’"´Ú!“Üm‘c<ËNß/yÏœ…Š˜a˜± 4kn+6 Œ'×–¾¨Gyfí´«§4A ­Ïž^ÀäÛõ,<¢òŒçGãñ½ÔhŸ=ÉxFæš5ûê oh—ÀÑ#rdç(»ó®`œ°1-W’üÕ¾™¶ŠëùN7ÔçYGáy¸pæbÑWµjUûKŠðm·AΞ ©»f7B?fíÀóÂIïW£{±fA×(S½× YfÍÈ–“ÐßøJ¯»zÔC*ç0:ªàêhçmýŸ» ÒŸKA=I7ÓUÛ¯ž9¨qÌ2žÞÏJšÈîhÇ\fpóÄÑ7÷ G­P‘Ñ]½ë?ôòùèÏ·õC½h[MNEýÕ»þCõg.L‘ìÿ¢½÷o‡÷-üfïúÕ|ø^9¬”z“Ó±&ÂWxל?‹qÇVÓ>ÖŽÀ€"àñXÑZÛ»þ#k9Ú¯¸µÇEßò}è¿k˜µK«˜_κÿ“2š‘f|ððlè¿r²Wšñ˜ÛšM?±á‰­’õh?h¨3|}è]ÿ¡kŒÖ^Ž~ûÝ›Q?ïø¼Æ÷eL~õU©× 2ž©'ñ=¸û§/%ÿÊn¸ \ø©:  žê?úà_×^ D?é¨_¯c™¥‘žëý˜ä?úž¯ê÷{ G‹/–ÍçÊ#ÕU|³¦hWõÍ=yæù5ýõeÛ®ývúõ:*õêÚç(e5mPK?¹í°È ³öº¯ö$x u+ÑÛ¡âj‘Uƒð<Ý“@”üîçE³·GÅ=s%6¶,¾«·—ð§ÿ‚=ãwYÜ:œôÁ(I¿|Æ["›V@ÿ’Úìy 9Ú-}މu/Ž—ï(§\zDÒéˆa"Ñ0¨ÁM% ‘ö\Ô°JC$ ¿ñ©A†HçíŒc, ‘ŽDìÃ4DÚóp ÑéHÄ>LC¤=OC4DzJÎ> ‘ö<4DC¤’°—4DÚóÐ ‘Û eÆ CC¤©!6% ‘ÿ#BCd©ÞnŽJC¤y¿\—†È¬,x°õì ‹ê_C–ŠŠf÷Á ï`&àl.,øjhQCTQá#GŽˆ¾›nh!2¹ôœ4h×OÇ Ì÷‹°æƒêU©úUª§Ÿ†¿šËðúþ)úw‚çÜ\Öêº3$Æ¿/ç5Ÿêÿmm9”˶–YãnÆÇ%_Ï:‰"Ÿ¼3â_ï’ õòZÌÜiÖ¤Ð5ìT¯^O=ç4^ÿºûëE»c­¥*!Ðûñ:È77cfªFã¡ú´üyfM<[X×¶33ùH¾=O¢ÜÐjY¯ã1[ã@Tƒ(9¥žqê9§k¶iX׸Ë5»WY‡Š]ƒŸ®iÒë;4ðß½Uâ9›‰.K=èôz6O:3C‘o¦ör¿ÇÌÅï‡Á¯±q0imv7\‹™ò Bå:Z^5xi¹5¬»ÂªÇÛ™™Ð?îzði×øUÓ0Ö~wuÑ«»'þQîóñÈn6aOGdŠž~ÍÑÖ‡aýëK|pdHw2Ì äm)˜›hv9 yåjüA¼¨ô6róY?cF¤Æ ̸Ù3‘UFBÓ¼ó€ÉÙƒöçì”R²‚þ«§c†°Þ(ã!äf¹5¹ãZy :ãù¶_„ÀCð^izO¥®•÷áx¾CbÆ4²oOUÚåKúœ.µðžý;ïS¤—k|éERÇâ=nšç±¶Ú…èvÕ4‰Wò´yÏÊíH='oC{qÞ_¯”_ȬªÆc&ä´Ë•¯®è­jÉŸ½3G¦¢½ˆê+ñn¯ñå¢49‡1szx,ÞƒZ¯Â£ÂÓ5"/£»ÿ&ÏŸX£_ÛEÇôî†Õ# y<"";¡ßuWËôxm­ÓпW¼ÊÞSÉÑ#Ò¥7O¸òˆœ: žM÷a s4íU…˜ºr…òå1ƒïòr¸+ í¶•’‚¤uL{‘”„psŸ•áIâRŸÃ‰S¦ß/—ö(»6Ü‹fÜYýeVyŒïvÆÂ“ÇAË`h6ÚéFPo…JÚa=ñÞ¹ÌÈ—4óæŸù¹¨we* ~ùê¦sÖ£Î- ½¡Ÿõ•þäIEUh«p‘å}¤¿ ïËîì½±¯ ŽðlÜçx¿™Æ“vï,¼àGÁãÏWýG²é7’¶£½k>­‰c< d¡žl~»ä Á85îýxô9fÒ5F£F¿´%ítÍ×ã“z>aZtD².4ß#×|†ö&£#¸»jwô¹©ç¥Ž‹4þÔ”$Ñûr ¾¿›ÚãQþàîÐlÖvuÌÿGWÜa^&¾Œ=(é ·,ª»Uá]?‰0ß þk¹T¯^O=PUfïÀx¥Q þ!´ÀxÒš¥A­²o¢Á÷šßyèWiå›°ñ€U>*S7a\=êð×µW¡¹·&ìMhtmU[ù°êÓx?c°È0ÿì›Ûú¯E5±~Åc¶ÚÎÃ{óur#êa©k ØÖHÅ8'0R¯wr×fÉ׫¾Ój„÷é­ÆNt—n’N=QƒÊ@OÍ#LÃj Þ¶â{Éžô¥È×aÜõÉz ZsÏÜ"}^(ÒÑ3TïÇUüŠEßI¾M_À#rò_þÍeÐ,þ)9èÿÒ‘ªO¥+½¿fårÉ÷ÞEþô0Ú›G$ ‘ø°Wà ‘æ‹íâo›O˜0 ‘òYú¯†O"ÁÅÝ_"‹GŒ†ÈÂ9ÑY8" çãê, ‘ÎÉÐéœËåKC¤ó@C¤ .4D:£†"â±hˆÄwºiˆ4v‹Ô}hˆ„a³(ƒáŸfˆ¼¹ÍMòäŽí‡…¾gMX¤ÜKny®e^ǃ¿–h5À¨áÅ?*]cÍÂm¬3‡Ž‹‚>±˜ñïkvO=@+n,Ýuïi,éÔCNõ«õ`-IR!Þ»™÷SSñž=VõuÒ:\¹âóõä $õHËã®Ô¿¨^{ U²ÎÛ„zg< Bñž¹«WÓëZy•<*Q¿î…þfŸ$h¯dÎÌ(«g^–™9«?íŽWÊ/dÖ¿¨n~n»¨ 3»žÖ4kñy«_óoz›VŽ íå̸êU¹oÞƒJf·éðŽÕõ”Oä¡·öŠž Gd¥kÐþøDù%ǧ¢«xÚ²1àä+ý'—œU•Z =0ž3¾ÒŸ}3‘¾.·–/ϬµækO"Õ©Ê_»ÃCBï/#TgÎ4¦x²¼ù0ÖÔ-\xþÌ~e·$©wãMïµìÔ *fÍòHUÛ»03^=k£äŸxú›d8`Xõ&KÃ0Þòè"ÌD$py0߃é¿À“¥üÕÚ¿zÖÎ:ÂË;uN¢’gÀE©úÓµ“xÎZŒïÏ“«áé3 ®Wú3†þà|0ÆÙ¾Ò_q¶îJuÆcÕzÔt,‚Gaõõ›ÑSÍÃEOt‡Hô9fÒM²åaÜ´³E´$‰¸#Ì1©[áófw÷-Ï`<{êá®Ûð=XÅËqk–©çõVK­³fM|ýž[…þ]âÔ÷÷Kè­¸,‘ýâ{¶Š—ÿÓK¬5ã¡óC:úšï©€²ž½·úXc ¾¿0ÿ óÑ?äNNH”2£­j á¹f&ì8uG6Ò[,žDv+/ v•mf­ôô—pb=nÃê`þ!W­_èµ­±Š 6ÕcT=!5þÌZ´+Õ7áû{E\ïóÈÿôú²rP¾y¯ðZÛ<ŸmzMy5¬ú3çÃþ4ÈìÿLs$œ¸ú‡íC»P¹ôëÚª~ÆÐd «ųÔcõØ؇öºŠv Y{QÊÅ…úH³½š7Xáõ½0ee]†HàR&s"WnïÌnx*è³~§o™Ýµ퇇Gû+ZHúÞ¯šR•*îá9†q‹m­Èk®Aþ†Å¯9Œþ¤fMôSCnEö^WãŽ6ÝÖ¢ýˆïº 3óÑ/ñü% (­ò̸5÷(úІå|ZÔ\³f¤Ù4Þ oåf?VDi’}! ô†ßì›ï5]ò`GÿR‚˜§Í÷Z‚o¾×2ÃÃíÈðÝ_ýyxÌùjmp5ÔfÄs­iÖ¬2kDÕåiGQM˜0.^ýƒü5Ê#©›dÕY .‹wc¼Ñx‚wv-LÊ{°ô­ŽqØkái;ÜMHUè Õcô§î8ñÈÏ!rPýÕú)Ý ªÃNŸð}Ü+ß›/&¢>V{&Ö=…©OŽK”˜Áµa/:“ îÃsð^EvƒG°C¶b7öØ*i3_†ÞÁKuz$ì8Q÷ÈbkDBÝ$+âGx¼ÿÔ\ühˆt$ ‘ÅãECdáœhˆ,œ ‘…óѳ4D* Jð"}Ç’šH€H€¼'@C¤s†4D:çBC¤s.KC¤’°—ÿï†È »žÁäi_Û_T‡7GO×¹HpÅDXºýÊxç"“þOÌàw°àöþ #aB‚CI< f~Oª¸)¢`ùQXþë¼ëKzöj,ð ,»)!ø3}õW¼³¤ëÝæ$‚û±1û%*$3_‘>Z3¥À¬•°Ñ¬­Qýö0¹Ndxj9¼•jŒ0kOújw\-WâàÝrÞåvµ‹™¦wWžpP²hù½¡r¼þ‰ïà±~'2é ÈÏÖÅ5%í@1@$@$@$@$P,4D ‘ \hˆ¤!òr¨ç¼G   ø³Ðùg‘çuI€H€H€J ‚Ü)‹ß,xú­]„]±KMK¸ ŸÎ˜&W¹l¸ÈìäT‘~« “OKЊ}+N¹–$€ð—H€H€H€HÀ-4Dº…‹‰I€H€H€.E4DN“ÇJCä¥X»yO$@$@$@$PzÐYzžKB$@$@$ð'87þþÓå **êO*ÉŸsÙ´´4¹ð•cE>—!òåëðWíØñþn4®±Hþ €'hˆô„ó \Rhˆ¤!ò’ªÐ¼   (¥hˆ,¥†Å"  ðœ@~f¾dÎIÁ.ØçÒò$|.2/휄Ë&‰üdø ‘-on)òrù™þé¹ÕgŸyJä·爼!'BvY"Ñ/×GI€H€H€H€HÀ4DzYH€H€H€J7"‹÷|hˆ,'¦"   ð "}ÑZH€H€H€J]/îÒT+ƒÝ°kVö“pÍòfÍÃrˆ÷g¬}˜z ÛB—+W®ÝEÉeîìY¢ü¹§zŠü[4D·gI€H€H€H€J† ‘%ÕZI€H€H€þDùÙX#rï€RŠÙmá Ùº¤-î£ røí’µ"4h §.iyäȹ¿M›6‰Ü¼r˺UoÜ rß$‘a°‹xØ•$Ì    ð„ ‘žPc   RM€†È ‘…óáY    ’!@CdÉp¥V   RDàØÛ{¤4OÄ` ÄA7ÃcòÖÙ•%þµ‰_ˆlÕªU)*ué)Êõw_'…ÉiFd@Y¬­YzJÈ’ \ hˆ¼žËH$@$@$à"½ÂgÑé?æ&   "YH€H€H€.yg§`—ì{šÞ(÷zlõ\‘ç àyo¿‰îܹó%Ï“ܹkmvð dlï‰æ!   ¸Ü Ðy¹×Þ? \hˆôî!Óé?æ&   "YH€H€H€.Yy_ùɽM6Sd“„&"g|:Edß>O‰0èu‘/öï/’?Î Œÿx¼œ˜°a¬Èàk'd, 8!@C¤(Œ"  ¸4ÐéÛçHC¤oyR \nhˆ¼Üž8ï—H€H€.yËÏË]¾Òf°ÈŽí;:½ë5¿®–øúõˆ¬\¥ŠÓtŒ´'ð@w,¹+~«œ‰ ¶O`BÙIgå¨lͧçI$@$@$@$py !òòzÞ¼[  ¸,ÐY²™†È’åKí$@$@$@$p© !òR}²¼/  ¸ älÍ“»nöÈa‡]†Jþ–O:%iÙá‘AÝì¯yò³C‘²&CdÝ7ãD–)`Ÿ!    ËŠÀÿÿÿu!]o@IDATìÝw¼eµ0à´“Þ !¡A A¥K‘* ]@ÐÐå‚r墀té‚ " (^Š4éMéEB $ô5¤zJ’ïs½‰×““ÓöÞ³g?þ1kÞ)oyÖò[LfÚåÚ Úù @ 5cëcß^~ïˆgþô̬*{K¨®®ŽIm¹ç;ÔpŽS¯û0L~~FÄ/œ½fÄN=;6¼P‹ @ ¢Ú+DVT¾-–äR öÓºXךoŽˆxËÕ·ärY[ÔÝ÷ÝS:þªã"~öø{´þ¼ˆ<Ó>âZ—­ц @ ²"+;ÿVO€r! Yš4*D–ÆÝ¨ @€rPˆ,×Ì™7ȱÀ‚ùéÍ1í;¤'êÌKíºêôW¯ë¦¥' k¶{Žî£%Ç*Ù[Ú//8'&uÉ…gDüÛþµ?˜žæzÀ3]cgÅ“ÖHl  @€*Z@!²¢Óoñ @ › ‘ÙÌËâ³Rˆ\\D› @ 1…ÈÆtœ#@€J"0ý©ô1”ÿüqŒ_W;?b¿Þ"ìµðIÉ…Ç÷ùÁéqü”SNhSéÓÓ£Ž{í²m °nÇ·"^¼uú(Í¢Q/{.í?w¹ØYá •  @€*X@!²‚“oé @ « ‘ÙÌŒBd6óbV @€rPˆ,—L™'¨ ù Ÿtüä¼q±êãÖJï„ójU @€¦ (D6UÊu @€@ÁêŸNï„<á'ÆXûï}@ÁÇ4@ñÖÙdí´ûQ"Î7;â{¿x/âüéw0âwãmC€ …È|äÑ* @€@."s‘Æe.B!r™D. @€äR@!2—iµ( PóæÌ‹‰Ö¼Qq÷þ{E<çgç–Ç̲EÏŽz6îûÎ!;GìñyuÄó¿–~‡ŽJïŽü³5ZÔ¿› @€²) ™Í¼˜¨…ÈŠHó,R!ò?H @€T„€BdE¤Ù"  @€@i>¹|BxZmĹÓê#Μžž|[ô1äAýzÅñw?šž®·Í¥Àĉc];m»yĦßÇ™[¤'b÷|ZöÙ³úÆÎÀï Il  @€r! ™‹4ZȦ€Bd6óRªY)D–JÞ¸ @€l(Df#fA€r)0íƺVûøóˆ¿ûæüˆƒÓíºW¥e÷8?íLš’Þؽ{÷tÂ6¹þºXÇ‘Gñ¶=k"n½j„m¿¿}ì?0lPÄßè÷¯sv @€Ê_@!²üsh @ ³ ‘™MMQ'¦YTnƒ @€2+ ™ÙÔ˜ÈÀŒG¦Äb:=üYı#Ó;"­pØéÉû1­±†¯%/²ÉC<ûŒSbÜsGıoŽ‹Ø¥cZÝ:;Åλ“fEì|øÊ{~±GºÀ– @  ‘¹H£E @€l (Df;?…žBd¡…õO€(…ÈòÈ“Y @€\ÌúËœXÇ»ŽøÊ‘é‘‡?”¾’|Ö鉹-·Ü2뵈Æ>ù䓸`ìØ±ï}ðÞˆM¿/b—ÍÒ“’Ѱ!@€({…ȲO¡ @€òPˆ,Ÿ\c¦ ‘ÅP6 @ ; ‘ÙÉ…™ @€Ü Ô¾œÞ yðê#cÿuØ1¿´ÖjtJ_Õ>ú¬«¢½ß~ûE´©Lïu`,üå!ÏEì2¤seBX5 @ g ‘9K¨å @€, (Df1+Ù“Bdvscf @€Ö(D¶FϽ @€@£5jãü†“6‹xõ%×,ñúol¹i?íì "n±ÅK¼ÎÁʨ©©‰…~e»/GìzH‡ÊX¸U @€r. ™ó[(¥€Bd)õËwl…ÈòÍ™ @€PˆlLÇ9 @ Eóf§wBv¿+} û©{ŸnQ?nªlG{$~tez§hÕví+Äê  @€e. Yæ 4} E…È,f¥üæ¤Y~93c @€@c ‘é8G€´H öOé¶Ço}"vúöMOF¶¨37U¼ÀI??) îœyKÄ®kwi`òùóÓ£=óÙꈃ^¥Áy  @€l(Df#fA€r% ™«t–|1 ‘%O  @€ÚD@!²MuB€üS`Þ½éëÆ¿?þÊÙhÃÀh3MwØ$úš»Ûç§ßôqľãgDü´s爃¶FD @€l (Df+fC€ÊZ@!²¬Ó—ùÉ+Df>E&H€hT@!²Q'  @€@e ÌxcVÌz{vÄSk#.¨N±~Z}´k§§¯dÿ÷OOöÉ'œц@[ ÜuçÑÝûïñìmæGì¸`AÄsf§w‘îþtìãùò܈ë®:]g@Š_ùcúZûÌýV‰½Öê‘NØ @€dJ@!2Sé0 M…Èlæ%ï³RˆÌ{†­¨4…ÈJ˸õ @€VÌŸ›¾R<þÇoE/Wï–ÞÍ×iA]´¯œ²eÄ;x¬£¸•@¸ûî»cçå—^Œ8æÅD|õÕW#¾>îÈ+._q…s†EìØ5=!  @€Ì(Df&&B€²/ ™ýåi† ‘yʦµ @€ÚµSˆô+ @€š,P[zò–‹o‹{N8æ°ˆ¦ŠøÂÌÁŸõíˆ6 )°`AzWéõ7]Ã\pÿ¹«¶I¿ÓBŽ­o @€æ (D6ßÌ @ b"+6õ™\¸Bd&ÓbR @€¥ (D.•Æ  @`‘@ý£iïÌ}ÎŽ]wÜuÑ©ˆ?9îèˆO?õTÄ'F½Üà¼bwòb˜‡Úݱëš]Š1¬1 @€š( ÙD(— @€JPˆ¬äì—ÏÚ"Ë'WfJ€T¦€BdeæÝª  @€@“jGÏ‹ë¾3ô»O<îÄFï?~|œ_mµÕ½ÎI…øò6¤îH_sïPå‘…ôÖ7 @ © ‘M•r¨@…È Lz–¬™ƒ$Z K…È\¦Õ¢ @€@ëj>¨ÖÿxÈ×ýöÏ­ëÐÝŠ(ðÊ«¯Ähq@ÄNßj|ðÚ)éÉÉÎýª¿ÐY @€V (D¶ŠÏÍ @ Ÿ ‘ùÌk¥¬J!²R2m @€@¹ (D–[ÆÌ—P`ÞÜùÑ{Õ-Ý#Žzè¹ަk…øåoüá­ßGìºAÃ'?¾`\ïØ£SÄG¯ц @ 0 ‘…qÕ+(K…ȲL›I/E@!r)0 @€J$ Y"xà @€b Ìùpn W31½û±®º>ÚóªÓ»ñÚOIÇ»žž„|ê‘ô޽þýûsšÆ"P]öß9ú}£Oú]OøÃGÑþþ—Òp÷vï;GIl  @€ " YV @€l (Df+fS\…Èâz °4…È¥É8N€r$ðú1¯Çj¾:hAÄ5—KqÕž)öíš{ÂÃéz³æ¤'$sD`),pÌáÇêÿqÿÿF|ü yû{ûˆ÷­>(â€íúE´!@€(Œ€Bda\õJ€2% ™©t˜L‘"‹ n8 @€ÀR"—ã0È“À¢Ð¼ûÓ7cY×í”¾Ž½ë°ôD䢵ö  @€@Æ"3–Ó)¨€BdAyuN€h±€Bd‹éÜH€ÊWàÓŸ¿“?l•ô®¼Ó¾–¾ž=ìŠ^qü¾Ç_Œ¸Æk”ï"ͼb¾°òJ±öÞígDÜppzxxŸYѱB¢ÙóÖôŽÈÕÎûbèÔ»S:aK€ P…È‚°ê”d[@!2Ûù1»Ö (D¶ÎÏÝ @€B (DJV¿ @ ƒµSÓ“ƒŸY%f÷å¡Ã"ŽâúˆžÞyÖwD{Ë-·ŒhC œæÎMï‚|ùå—cÚcÆŒ‰8ö•ô¤ï«/ŽŠö;ï½±ÿÙé‘Ѱ!@€(˜€BdÁhuL€²' ™½œ˜QÛ (D¶½©  @€m! ÙŠú @€e"0çŠôNÈ—3®ªJ_ɾñÏŒöŽ=:⥿¿&âÞ{ïц@ž{þ¹XÖaŽŒØi§<®Òš @€ÙPˆÌN.Ì„\@!²àÄ(#…È2J–© @€¹PˆÌE-‚4.P{ú:ð çÝ®½ÖÚK¼áí·Ó;ó† KïŽ\âEÈ™À9Ÿ+ºþ£ë"v]/=)œ³eZ @ ä ‘%O  @€Â (DÞØå+ Y¾¹3s @ ¼"Ë+_fK€š%PÿxºüÔÝN=vݳY÷»˜@% lûí¯Çr'oóIĪ>*iùÖJ€(¸€BdÁ‰ @€J' Y:{#—Ÿ€BdùåÌŒ  @€òPˆ,¯|™-h’@Í«uqÝ>ƒöxÊñ§6é>¨d>ø –¿ËéóÙUû.YcþÜùq¢njúÿY—Á]–|¡£ @€ "ph @€|(Dæ#VQ\…Èâz¨<…ÈÊ˹ @€@ ,¨_³^0?źiõÑ®«NOdÕV§vígµqükËmñÆ+ÓW²£aC€@“®»1}=û‚GΉë»l–Þ9cÔôh¿{ŇnÚ;â C†F´!@€h\@!²qg  @€@&"3‘“¨…È I´e @€EPˆ,:¹  @€@ó>»éÓ¸éÓ‡¦DЧ}ÄA½S\©gzRòÃtºÝueœ9rdDš/pðÑÅM>s{ÄuêæD\¥GzGä}k Šö€íúE´!@€h\@!²qg  @€@&"3‘“¨0…È K¸å @€Pˆ,8± @€@ëÌKO"ó™W«"@€œ (Dæ,¡–“ …È\¤Ñ" @€" (DÛP @ ¹õw¶[þ|æõG ÑÜ.\O€@ö¹WŒðưW#vܹñ½R2ýß»ñk%@€äH@!2GÉ´ÈŸ€BdþrjEùPˆÌ_N­ˆ(Œ€Bda\õJ€š%P?c^\_W¾zÝþŽÑ>uÏ3#îóí}šÕŸ‹ (žÀŒ3b°ÍvÝ4b—ï-ùQÇ)w}ç» ë±ûZ=#Ú @€*E@!²R2m i…ÈL§Çä4* Ù(“ @€ (Dþ‹Â(¼Àû§½ƒÔϨ8czz²{×ôÕrÝRì³Ü 8ÿÊ[~RF @ Mîèþèç„ë~±ó¶"~vñøˆÝ>›qÎ6#®°}¿ˆ6 @€JPˆ¬”L['dB@!2i0 Pˆ,«N  @€ (Dæ(™–B€Ù˜rÍ1ÉáSgF¼}÷ôDdUzpªÝç5i C/í;Óg¦'¨ÒQ[ÊA`ŸöˆiÞzãíoÛ7=é|þséÿè“¿=4Ž÷î‘åOs$@€ÚN@!²í,õD€–) ¹L"({…ȲO¡ @€Pˆ,¬n  @€@c3›§Û?81⇦'#ÝÓóüªØ8yZÄ=z,:% Q52föúéIÈ{ö¨Žv§…ObAÄ=þÚ+â=½qذamÈžÀÐAéë×; “;i󺈫õMsºðU¯C“žˆ\û·ëdofD€(‚€Bd A€–& ¹4Ç ”€BdùäÊL  @€Ò (D–Ößè P¡õK ¿è_ÅÎÖ[lqýµVK'æ¦wËýæÏwE{«­¶JÇm ÈœÀq?:&æ4îõW"ŽûzÄO'¥w¼íÛ1Úsû¤8àä/DÛ† Pi ‘•–që%@€L(Df" &A M"Û„Q' @€@(DV@’-‘²#PûBú:öa#ŽŒIsø±KœÜ¾{ìÇ~þE½#r‰LÈ´Àœ9éåcÆŒ‰yžrÁ)?Úx|Ä.:gzþ&G€hk…ȶÕhD@!²§äL@!2g µ @ Õ ‘­&ÔX¶@ÍøôÝÍflÿþ¢+–}“+È•ÀäÉ“c=Ûî¿MĪrµ<‹!@€,S@!r™D. @€­Pˆl½¡”»€Bd¹gÐü  @€Ö (D¶VÐý @ úé½èW=~×\í• pÛ·Å2ϸ#½3²jË•°lk$@€´Sˆô# @€Pˆ, ®® ”©€Bd™&δ  @€V (D¶šP @`é5×.ˆ“OßùLÄ^½z-ýbg¨(£þçÈXïãÝþ±Ûê]+jýK€Tž€BdååÜŠ  @ ˆ ‘EÄ62Pˆ,³„™. Ðj…ÈVê€*I`ê£Sc¹õãfEœ_¾†]W]í9ÓSì´ }´¯¾î–ˆ»ï¶{D,.0b³áq¨ëá ß™þñÑ®~fzÇìûg‹ó+|wpÄ^ëô\¼ m @€@Y(D–EšL’²" ™•L˜ü(Dæ'—VB€4. Ù¸³ @ ÀœQÓ¢]}ã'¯Øa~Ä> 4xá+ úh—8¾ÅQ—E<äC"Ú @`qçž.zÁȈsú¤Î|zÃÇÑ^e¹ôˆdíþ+GÛ‘Á`C€”¡€Bd&Í”  @ t ‘¥³72¼ (Dæ5³ÖE€,. ¹¸ˆ6h‚ÀìwfÇUãÎñÕ#Ò×±×ì—n>õÑôSÕ¶§ÇSN95°%@€ÀR6Ùà‹qfðüôNÈÛ¾Þ¹ÜÅéÝ‘+ÿ|Í8_Õ§ÓRzp˜ m…ÈlçÇì @ £ ‘MŒi(c…È2Nž© @€MPˆl“‹ @€À’æ~T'>»pBÄ˶OO0M™™¾¦=zÐÁqüò«®hC€EO=ùDìî´Ã7#þ~§úˆû­“â”9éÊ•/KOD®}Ù:é€- @ L"Ë4q¦M€ÙPˆÌFÌ‚@9 (D–cÖÌ™h€BdkôÜK€•+^ Ùnîé«Ùcžûìº]2™ðTÄšAE¼ãþGÓq[*^`ÚÔ©a°ÚÊ+EÜwD"Ù ÿÜØ±BjWפxøs]cgðÉk¤¶ @€2Pˆ,ÓÄ™6”X@!²Ä 0<òPˆ,ßÜ™9 Ð:…ÈÖù¹›*T îæôUì¿þæŽXmÕÕHüÏí©S&Eüßonp^ƒÊ¨«Kï}úé§aÌ«¯¦øòó)Ž~!â‹cÞŒ8d³þ{Ô/¢  @ \"Ë5sæM€%Pˆ,)¿Á ”µ€BdY§Ïä  @€V(D¶Ï­ Pyõ§5Ÿ{à±³ãv;6Š0qâÄ8?pàÀF¯s’K8øèƒâÔ ƒžØuåÎK»Ôq @€@¦"3“#@€¬ (Df-#æC ÿ ‘ùϱ @€JPˆ¬”L['´J öåyqÿA_ø~ÄãùŸVõçf4U ¾¾>.]ë/EìzX‡¦Þê: @€@¦"3•“!@€¬ (Df53æE ÿ ‘ùϱ @€JPˆ¬”L['´H fBmÜ·á¤Í"^}É5-êÇMh­ÀO>]ü×oŠXµ}ûÖvé~ @€@Q"‹Êm0(7…Èr˘ùȯ€Bd~ske @ R"+%ÓÖI€ ª_ü<Úµ“ë".˜–ž|l?-µë&ÕÄñzŽ8úåw#Ú @ Ô§ž{jLá¶i7Eì:|É_Ñ®’þyÖ¹_U©§l| @€@(Dú! @€@E (DVdÚ-š@."s‘F‹ @€) Y‘i·hxõˆ±°ï:ÉbD¿±3¸Wjצd·;ÿ•ãÀ›ã?N'l  -vþZÌdÆÎS#vêÑ1âô&EüìÞWüÁ*ÑîùÅm @€¥Pˆ,•¼q  @ ¤ ‘%å78m  Ùˆº @€Š* YTnƒ @€@Væ×Ì©Œ?é­ˆWm—Üó‹éÉÈê¹i¦«]Ö-v¦Í˜Ø @ #ãÆ‹™|ûØÝ"NŸÞe»Óré··¥¿Û­tú°8_µœwEf$u¦A€*V@!²bSoá¨l…ÈÊοÕȃ€Bd²h  @ ²"++ßVK€KøìÌñqæ{«¥'#ÏüZz$²û¹âø”êô•ínÝÒ’KéÆaMàŽÛo±öÚkïˆ÷žèÞhpšÂàK:ÄÎ:—/|n:lK€(™€BdÉè L€YPˆÌR6Ì…¦(D6EÉ5 @€@–"³” s!@€¢ Ô¼Ycnßiçˆ=jÓEcº6Ú/”Î?ðÔËÑ^}õÕ#Ú @ Ø55éÝÇ~P =ñ•#þu·êSyêƒÔÜë±.±³Ò)é‘ .Ò @€”@@!²è†$@€ì(Df'fB€@ã ‘û8K€d_@!2û92C(€@Ýäô¤ãÐÒŽw_OƒQnýË Ñ>î‡ÿñ–;ÑF5¸NƒÅøÛCÄPÛo¿cÄ5WìqÄÀö)öñÓó#ÞÝ£oÄßц Pj…ÈRgÀø P…È’°”V(D¶Ï­ @€@&"3‘“ @€b Ìþ}} 9ö©×"¶oŸž(Z|~øa2ÄE‹Ûh P\úúôÏ­N:ÅÀo¼ñFÄ1cƤøÊ舿ÿΈSW™±Û.#Ú @€J- Yê ŸJ" Yvƒ Ð …ÈV๕È„€Bd&Ò` P,úÛÒ“·\|[ ¹Æêkkhã @ ¨ÇŸúãï¾ú»#vû¢'#‹šƒ @€ÿ! ù$ @€@ž"óœ]k#@àß"ÿ]Ã> …È,dÁ @ àõ¦!ÎÜçìØÙuÇ] >¦  ¿ñ՘Ƽ}æDìÐ¥C¦e @€@ (DV`Ò-™•( Y‰Y·fþ) éw@€dE@!2+™0h–À¼YóâúºÏÓWdë¦ÕE»¶:µë¶Û2?ޱû#žüã“#Ú @ Rƾ66–ºÿÉûE¬Ú½RVn @€@Ö"³–ó!@€& (D6‰ÉEh§éG@€dE@!2+™0h–ÀG—Mˆëç½=3âú¥¯aíµ Ú«öLOBÞÿNÇhŸwÕwÞyçˆ6¨4K¯¸$–|ŘË#vùJ§%L¾r_~ëå#vèê’K„rh¶€Bd³ÉÜ@€YPˆÌBÌrPˆ,§l™+ȧ€Bd>ójU¨Ï.k9¸&â雥'!ö@ØÝø_E<ôÐC  P‘»¸k¬{üúoFì¸ð+ÚŸ^ôn´gMNïÚ]íÌaÑîܯ*¢  @ µ ‘­t?”T@!²¤ü'@  "Ë0i¦L€r" ™“DZ*] ú¦ƒ`­ñÓ#Þ½oúªöi¦wGvÜæÔ8~êi§G´!@€@¥ L™2%–¾ñÖ_Š8ù½O"Þ¹Wz¢ü›7¤nŽøýðJ%²n @ @ ‘‚Õ-W@!²¸ÞF#@ |"Ë7wfN€Ê]@!²Ü3hþ õ÷%ˆ=×Ú-vnüÃ¥^ï󈯮xpÄ˯º6¢ *U`ï]¾Kïòé3ÿ¼Ëìˆÿø0‰|ûá.±³Òié‘é¨- @ õ ‘­7Ôd@@!2I0ÊB@!²,Òd’ @ — ‘¹L«E @ rêF¥wšý×F?ŠEvða_;6âºë­qǯ-âÝ=ц•"0ú¥c©o²qÄKwXñ° Ò»t9üᥴwú´>±3ð¡‹N‰ @€6PˆlF @€@©"K%o\ÊE@!²\2ež @ ÿ ‘ùϱ @ —5oן¾>ûˆ¿>ç×K\g}}}âñÇ"nóõm—xƒÈ«À-7ÝK»üÒ‹"¾ñÖ¸ˆsæÌ‰8|p·Ôž9=âgÛ Š¸Âvý"Ú @€ÚJ@!²­$õC€EPˆ,*·Á(c…È2Nž© @€œ (Dæ,¡–C€¼ ÔNMOB~f•Xêýy ïK¶>D`Ú´iÑïØ…ïÔ}lá“ã7¿|cï´sA†Õ) PÁ ‘œ|K'@€@9 (D–cÖÌ™, (Df1+æD€ò- ™ïüZr'0çŠô•×—k«ªªÊÝ-ˆ¥8ÿWçÅð×½MÄ®ëw.åtŒM€äH@!2GÉ´T‚€Bd%dÙ (¥€Bd)õM€ò- ™ïüZÊN ®:}庮:½ rQ»Ë›Ýc-7_|kĵ×Z»ìÖfÂ('oîµ]Lwâ×>ˆXµœ'ÐË)æJ€²( ™Å¬˜*X`QáQ!²‚–N€@&"3‘“ @€¹PˆÌU:-†å'0ö¯Å¤kæÌØ·W‡ˆ+ôj±gû»übÄ'ŸO×GÆ &ðñÇGß;²}Īý 6”Ž  @€ Pˆ¬D[&²* ™Õ̘•. Yé¿ë'@€m/ Ùö¦z$@€fLùcz÷ØÕ3ã®ÛvM_Å^ÔÅë“ÓÞž÷­;¯ûpÑ)‘Š pÃÍ×Ç(ç>ôóˆ7ïØ`Ô¹æFû³Ó”+»j´;vMO¸7¸Xƒ¨h…ÈŠN¿Å @ ô ‘¥Ï @ 1…ÈÆtœ#@€š# Ù-× @€@Áf>9-ú®¿û“ˆï‘Þ9½& ¹Ê¥]c§zæœtÀ–Š*pÈGÆxÿXþ‰ˆ5¯~qþSS"~<-ýs{Äï‡GÛ† °¸€Bäâ"Ú P…È’°”MPˆl2•  @€¥(D.Æa(®ÀüÚô$MÍU)¾6ê˜Àè#Ó<6¹ºSìL©NOàtëÖ­¸4*\ ºº:Ö^}PÄýFÔEÜgXúçöt‰öJ§‹hC€X\@!rqm(‰€BdIØ J€& (D6™Ê… @€ÀR"—ã0W î†4Þ×>;ƒ¥'n¾ôÅU£=yÒ¤ˆ?÷JÄÕW_=¢ VàÆë¯‹Ž8ìЈ÷ì[ñk+§q¯|1ų¦÷FIl  @€‹ (D.¢I€¥Pˆ,»Q  °,…Èe 9O€4U@!²©R®#@€‚Ô?˜º½ä¨ßÄΖ_Ûj‰ã}äaqü¬sθüòË/ñ:  @ mÎ;óÔèèÚËñ§ω8|…Ôÿˆ…ñÇkî^øîȾÙ/]`K€XL@!r1M(®€Bdq½F€¦ (D6UÊu @€@S"›*å:hSÚçæEG¬tÄ£M±MÑ´Xà‰'žˆ{G=ûlÄ1/¥8vLzWï˜7ÇÇñþ=Ò‘ÝLï†ì¹f÷éF @ ß ‘ùίÕ @ ³ ‘™M‰ @ "ý @€¶PˆlkQý @€@£sÇ¥¯­nU³m\wÙù¿môz'  @ Û£FŠ þóôUíN{.Èö„ÍŽ(™€BdÉè L€ÊPˆ¬Ì¼[5ùPˆÌon­Œ´µ€Bd[‹ê,¨OOÆÌý,= 9è¹ô±¿ßöpƒë4 @ ¼®¹îêXÀÅϤ¯lwÙ¸cy/Èì  @€6PˆlsR @€À¿ (Dþ»†}äW@!2¿¹µ2 ÐV ‘m%©T¨Àä›>‰•׿?;bMu}ÄÙÓÓW±kçÎöÀ>UùÇØˆÃ† ‹hC€ùøÎáûÅ‚^]õ¥ˆ]WꜯZ  Ðb…ÈÓ¹‘þ) éw@€ÿ. ùïö  @€Pˆüw û ÐlÙOWÇ=3oû8â½{§' W앺ê×-ÅnN~ø‹›âÀŽ;î˜NØ @€@®fÏNOÈo¼ÓF±®.ßoßèúj§ÔÅùÎýÒ“ó^ì$ PÖ ‘e>“'@€@é"KŸ3 @€@–"³” s!@€ÙPˆÌV>̆e+0g|zæÍŸ¿kxõÈ´”µû§xÈ}=bgó#.‰8räÈt–r)ðÐߊuÿÇã"VmÛðÉȩק'é§çW;{Í\:X ð ‘ÿgaZ! Ù <· @ ‡ ‘9Lª% @€V (D¶Ðí ÐP`î«é]_Ó¯KOº\¸MM\0öÓô5í.ß8=Ú?ûÙ)m @ ß?9ý„XàíŸÝqÚ_?Œ¸çÊó"þubz7äÓ‡EÛ†ȯ€Bd~ske(‰€BdIØ J€Ì (Df65&F€Š. Ytr @ ŸµÓ“Ã^ ¼õš[#~çÛ;DœöúcWßò;/»âêˆ6 oË/ýe,ðô“øðwçG|6=Ùîô©}¢½Â¡C#Ú @€ùPˆÌon­ŒEPˆ,*·Á P6 ‘e“*%@€Pˆ,8± oóÄë¯éqô¯,qÁÿ}LúŒö!CâüÿägK¼ÎAȇÀ.Ûn Y¹vLÄßnûyƒ…ýð¡ôíÛWÇWØ¡ƒó @€@þ"ó—S+"@€@Q"‹Êm0”€BdÙ¤ÊD  @€@Ñ"‹Fm äS þ/鉖»o,pÑK[íŒ3âT¯^½–v‰ã PÆ[n¶qÌþ£qc#n:4ý{bÄr³¢=|@z’þ¬§;F»zïônÈÞ#zFÛ†ȯ€Bd~ske(Š€BdQ˜ B€²Pˆ,›T™((º€BdÑÉ H€|Ôÿ-­ã#Ó×P¿±Í7ò±0« @€V ÌŸŸ¾ŠýÊ+éÁcǦ'#ÇŒ~)ú;ú¹ˆ¯¿‘ÞÙùˆ~Ñî¶R—Vëf @ û ‘ÙÏ‘ @ “ ‘™L‹I @ ä ‘%O  @€Ì (Df65&F€l Ô¾8/&vè:GD<öˆfs¢fE€™˜6mZÌo«½·ŒØù»™ž®É @€m  Ùˆº @€@% (DVR¶­•…Pˆ,œ­ž  @€@V"³šó"@€@‘æÍMO8N~8=™ÒnZmŒÜ¾º.bý´gMJq³M7‰ã÷Ý÷d‘fhȳÀ÷ÜË;åÖ#VmÕ!Ï˵6 PÑ ‘~‹'@€@»v ‘~ PJ…ÈRê›W@!²¸ÞF#@€@öjÄœ^>*}Õô§›¥)®;0ÅÁ½R_âŸ>ûJìüíÉçÓ[ ÐÇüô˜èåáª"v[ÃW´Û€U @ S ‘™J‡É @  ‘%@7$,. ¹¸ˆ6ÈŸ€BdþrjEh‘ÀüÚùqßû'¿ñ·Û¤wGî»vzbòõÉ©Û=ï[)v^÷a:`K€ÚPàK[¬½uú~ú÷RûŽí—ØûÌ×gÅñžk÷Xây  @€ì (Df/'fD€’(D–„Ý  °˜€Bäb š @ G ‘9J¦¥ @ -&ö^twàê鉔6šíU.í±z月6 @ -^xñ…ènä¹ß‹XµKê}ÎøôïñŽÝ—ïqÕŸ¯™.°%@€2/ ™ù™ J# Yw£ @ Ò"+ý`ý g…ÈùõãîwǼñù»¯Šø·7fFœ4%}F»{÷îѶ!@€m)ð‹K/Œî~sÃy»N˜ñÈéÆÍêí‡hC€d_@!2û92CU@!²¨Ü#@€¥(D.Æa PÆ ‘eœýˆ]҃톪ŠöÚ}gEüãèôï­UÏIOòWõíÇm @€ì (Df?GfH€Â(DÆU¯ Ð"…ȱ¹‰”•€BdY¥Ëd  Ðvu7§¯Žþõ7wD§«­ºZÛu®' ÐJO>ù$z;6=±ÿê+¯Dû®ûo‹8q󉻭Ú5¢  }…ÈìçÈ  P…È‚°ê”ÚH@!² uC€2$ ™¡d˜ Z#0÷ÓôuÑÚIé+صÕ)ÖO«n;LKç;MîíK.H_'Ýe‡]Z3¬{  @€@Q,Hï±ùð·Û _&YÔYŒh‰€BdKÔÜC€ (Df0)¦D€m. Ùæ¤:$@€EPˆ,µ PX ç½ôŸ17âÓx«õL_]©Wj_øl—ØùëßGE\o½õÒ [ PFO?ótÌö—±Óe4yS%@€* Y¡‰·lò' ™¿œZ,]@!ré6Î @€¬ (Df53æE€ |vQz2òàéÉȳ6OOD.ênÇ[ûÆî/¼!â;x„d‘H€å'pæ…gĤošø¿»­›žü/¿•˜1È¿€Bdþsl…T˜€Bd…%Ür  Pá ‘þ°|(+…ȲJ—É @ éÓ®ÿ(.^ó½Ï#Þ÷y¹¯GÄ͸$âÈ‘##Ú @€rØz·­búÕÛ}±S¯N –3}ÔôhÏŸ\q¹48¯A€^@!²ðÆF @€@I"KÂnP(‘€Bd‰à K€š! Ù ,— @ œjþ´ ¦{üþÇF<ç”ã#î¹Æ¬ˆÝ¶;-â)§œц”³Àøñãcú»³[Ī½Ó¿§þéÃhwz-ý ¹«÷Œö ‡­ц(ž€Bdñ¬D€¢ (D•Û` Pb…È'Àð @   ‘M@r ÊI þÞö1Ý+Ž¿*âFnñ­7ߌ¸îˆáG|`Ä˯º6¢ ȃÀ¹œ˸àœôÄÿ)›Ïö„ôŠÈv· ív쟇åZ(+…ȲJ—É @`Ù ‘Ë6räW@!2¿¹µ2(…ÈòÏ¡ @ êþ‘Þ…uÜé]ßÛÿ{Ê|ôQúªöJ+­ÔèuN @€r¸øü³cšW^r~Ä{öšñ Ë¥ÙoqCÇØ™ø­¡{¯›Þ™ÎÚ @€ÅPˆ,†²1 P…È" ‚2+ ™ÙÔ˜ø—€Bä¿(ì @ <æ¾Yß¡Ó.qæEå¹³&@€-Ø~Ëô.äN“_»ÏÛznÄáRgÒ«“Û øu‡8°â©Ã"v^¾*]`K€M@!²hÔ"@€@a" ãªW(…ÈòÈ“Y @€ (Dú @ Lj'§'!‡>¿z¬àžî-Ó•˜6h¹ÀÙ??+nûò¨ˆc^MOFŽ}{B´¿°B·ˆÓëë"®|Ñ#Ú @€ÅPˆ,¾¹  Ð& ‘m¨(s…È2O é @€@E (DVTº-–, ,¨O_½n—^aÕ®®º>¦[7-=Á±¨]»°ÝãíÞqþµg^ؾý—`ey‘æF€Š,ðúëéß“¿¾â×1ò“]‰Øu­ÎEž‰á @€…H¿dD@!2#‰0 È•€Bd®Òi1 Pæ ‘ež@Ó'@ ?µÓ;Çüô­XT¿>éÑÈA½Ó“Ž+õJk­™=/_wûˆ·Üq:aK€,S`“í7Žkjö˜±c×…a™wº€h­€BdkÝO€6Pˆl#HÝ @€F"ÁqŠX@!²ÀÀº'@€@“¾"²ú/Ç-k4=â]ßNO@.êç¡wÓÞ…ïm;>ž¾ºè¼H€,]à7Þˆ“û¸OÄN»/üðÒoq†h#…È6‚Ô Z- ÙjB @€e (D.KÈy P8…ÈÂÙê™­˜ùÌ´¸îmŸD|çÈùßš’ºÝû!±3öÒ[ @ É—ÿáò¸ö·/]±Ë†½wÞÜôïaï”l”ÉI Ш€Bd£\@€´ÀèÑ£££çŸ>â˜Ñ/Dûrj¿ôÊkÑî»bçˆ}~ºRD @ å ‘-·s'š% Ù,. @€‚ (D”Wç @`‰ ‘Kdq-øøÒ÷âæÚçFœYÞÙnAê³_¯ô®©öíÒW7Ǽ“¾ÒÙ·oßt-  /¹ æòÇqˆØõËé ÉÌLÐD @€@ (D–Q²L•òPˆ,<™%hŠ€BdS”\C€š& Ù4'W @ É³ž™×ξ-=é8æÐôDd¯Å øÒ5ékºóñ¸þK_úR“Çp! P\÷Ù!üh“÷"vî—þfCqga4 PÞ ‘å?³'@ ƒ ‘LŠ) @€V (D¶Ðí @àÿ (Dú @ @s?Hïˆ{Ê;1Âè#Ó@ë Lq§[ûÄÎ1ÜqÇwL'l  @€Ì |úiú›Û¼]Ì­jÿÌMÑ„ @€@æ"3Ÿ"$@ \"Ë5sæM€þS@!ò?M!@€ÍPˆl®˜ë  ÐLºÇÒç²gÿí³¸óÔ§G|tBz·ÔæG\í‘#G6³g— @€Å¸ùö¿ÄgÝ{FÄÎ_ë°Ä),˜Ÿþýßnahß±ý¯sT’€Bd%eÛZ (‰€BdIØ J€ " YV @€@…(DVH¢-“â Ô¼Zƒî3(½Dê”ãOöA{+âÛÏÿ-â·œñg?;%¢  }ÃŽ;,&ùLŸÇ"v]­KÄ/~ñíK'D\ùÀÁûo»|D PÉ ‘•œ}k'@   ‘åÕ9(©€BdIù N€e* Y¦‰3m²+0÷£Ú˜Üˆ÷Öxã7-q²ÿó£ÿŠãÛn·}ÄvNOJ.ñb  @€L ¬³ÉÚ1¯¹]?‰¸êg3#ΟŸ¦ûÑNCb§Ï—z¥¶ @ ‚"+8ù–N€@a" ãªW E…È,fÅœ @ « ‘YÍŒy PvókÓ£íoHïˆzáá›´†ººô.ɪªôí&Ýä" @ ¤¯¾òJŒ¿ý¶[D/ŽqÔ!û›«"Ú @€ùxï½÷b‘cÆŒ‰8vÌ«ŸøûÇÏž±Ûá="Ú @€žˆô @€À(Dþ‰ @€Àb ‘‹h @€&x"² H.!@ ²æMKŸ»|åÇoÆÂ½}ZÿW§8¸WŠ_»~;vþtãmé€- PñºáOapácçEì²iz—dÅà @€ŠPˆ¬èô[<KPˆ\’Šc @€@s"›£åZ¨…ÈJÉ´u ÐlóÄ=ïŸôVÄ_o™ÞyÀ:éøßÞM]ž?þ«±óÐÏ¥¶ @€…y@ìú|Ä.CÒ×´ @€JPˆ¬Ä¬[3MPˆl“‹ @€F"ÁqŠ*N@!²âRnÁ´Tà³ÓK!\§}tqàgFÜû!ǾóAK»v SšššXÙW¶ûrÄ®‡tÈéJ-‹,[@!rÙF® @€@(Dú! @€ÍPˆl®˜ë  @ Ï ‘yήµ Ð&õw¦' ¯;㣿»n¾>âc·\ñ¹ÓW¶§NŸÕ&ãé„ÈŸÀÃ>‹:îªc#Vm—þ|±øJ§>:5õþJŸˆzùÚöâFÚ P¾ ‘å›;3'@ H ‘E‚6 ȱ€BdŽ“ki Ðd…È&S¹J¨{2}û¤O‰¥ï»Ç¾ î¾ãöhŸròO#ŽziLĪªª×i @€ œxÖ‰±{׬Û"v];}E{Ò¥ïE»vüìˆ=¾;4bß zE´!@€yPˆÌC­‚(D„U§ @ ¢"+:ýO€ŠPˆ¬øŸ¨[‡v_n¯ˆgxÖâ—4hWWWG»oß¾ Žk @€–&0b£µãÔÛ/¿ñ»§+ô÷ôîÈ'®º HOL¦³¶ @ ¼"Ë;fO€@" €ªK @ €Bd ¨…È I´e °lÚ‰éë×Ã^ßzͭ˾É @€fÌáqõóÞñÞ½>op÷r¿HOD®{EúóHƒ“ @ Ì"Ë<¦O€@Û (D¶¥ž @€% (D.ÙÅQ¨ …ÈÊȳU ЈÀ‚yéëØuפ'^yâÕF®vŠ ÐtÏ?OO<®³æjqÓkÍŠxÞÖ5 :yö£ÔÜýï]bg¥Ó†58¯A€ò  ™‡,Z­PˆlŸ›  @€F"ÁqŠ*N@!²âRnÁ*Gàó13c±5“j#ΫNï€ì05µçOKíN³ªâü“‰8dȈ6 @€Ö ¼ÿÞøèâ°ƒ÷øþ„÷#Žÿ`bÄC{E¬š—þÜòÑJ=¢=èÈ•#Ú @€< (Dæ)›ÖB€@…È @€@ "K€nHȬ€BdfScb´VàýÓߎ.FtJO@n=4½ r¥ž©çÁé„vü5=ùöûljþýû·vh÷ @€¨«K3c̘ô72ž{þ77^±óÁéÝÕvâ$(3…È2K˜é Ðt…Ȧ[¹’(®€Bdq½F€ÙPˆÌFÌ‚ Lúez7Ówú͉QÎÛb~ƒÑ¾tmŸh_wçã×[o½ç5 @€Å¸÷{c¨o´\@!²åvî$@ L"Ë$Q¦I€ü‡€Bä8@€e, YÆÉ3uš&0÷šôÄã3wý#nèÕ«WÄqï¼qµ×ŠøË_ý:âŽNOLFÆ PBѯŒŽÑ>óÀˆ¾Õp2óç¦?ç|øë÷âÄÀï ‰Øe wJ6”Ò"@€,(Df! æ@€@A" Ê«s @ € ‘ÄÕ5]@!²èä$@ Xõw§w(]sòcÈ Ö_øŽ¥¥L`Þ¼ô.ÉŽ;.å ‡  @€¥¸ø²‹cà«ß¾"b]í¬ˆ®þ(b®éÏ=+þlhwà‰È€°!@€L (Df*&C€@[ (D¶¥¦¾ @€R (D–Rߨ ÐV ‘m%©2#PûTz²ñ„mOŒ9¸ïw337!@€´F`­5Æí«w›ñ–ÝÒ;"û\žˆ\ïÊá­éÞ½ @   ‘åÕ9¥Pˆ,…º1  @€b(DCÙ P(…ÈBÉê—¢ Ô¾^cîÜc÷ˆçžr^Ñç`@ @€@[ ŒzöÙènçí·xѶ5Z·>âsGh÷­Ó;!‡œ±f:`K€2( ™Á¤˜-Pˆl™›» @€ì (Df77fF€ÍPˆl¾™;(’À¼Yé]õ³S¬›–žx¬›–ž¨­N±þ£91£¯¬¸YÄ»o¼§H34  @ 0ÿýÁèø;{îñøæFÜdHoÄ )ÞñFЧNî;+64°%@€PˆÌ`RL‰$ é—@€Tª€Bd¥fÞº  o…È|ç×ꔵÀ磪cþ_ûQÄ5vˆ¸RÏW[ÇOIí»ÇÏ=ÿˆ6 @€rxóÍ7cê{衈c_y!☗Æ7ÇE»ã‚ÚˆÝwNHØaùhÛ @€, (Df1+æD€@(Dú! @€•* Y©™·nä[@!2ßùµ:¹˜~ó'±ŽaÒ’÷î‘Þ¹hqöþÞuØùã ·.:% @€r-0qâÄXß×wß&b·#;æz½G€å- YÞù3{! Yi¶H @  ‘-@s ”L@!²dô&@ ¹3ŸMODμñã¸õÌøä„ÔÓùã¿;=ñ\:`K€¨QÏŠ•~Ñ!;íX! ·L(+…ȲJ—ɨl…ÈÊοÕ @€KPˆ\º3 …ÈìäÂLX†@ÍKõqÅN½¾ñ’ ~ñšÝÒ;#Ï|ap´_÷aD @€@¥ œ}ñÙ±ä>¾.b×u«*Àz  @ à ‘NŽ© ÐP@!²¡‡ @`q…ÈÅE´  @ K ‘Yʆ¹ °Dš µqü«“6xÍ%×6¸n£õÖŒöë珞EΘ=·Áy  @€@¥ ,úŠö”¯K¯êÓi‰õ3Óß,éÔÓ×¶—ä ´©€Bd›rêŒB(DBUŸ @€@ž"óœ]k#@€@ù (D–oîÌœ@îæÍNÿ…¾Û}b­Oß÷L£kþßÿýsœ?à€½ÎI @€@Þ&LHSd×£v‰¥vÚgAƒ%OxJ´'ß7)âÊ'­±j9ï”l¥A€m* Ù¦œ:#@ -"ÛRS_ @€@% (DVR¶­•å# Y>¹2S'Pó§ô_õÉX{ß¾}+ÎÀ‚  @€­¸îÆôõì =7º©~æýˆ[vNïÔ¾ñ¥ôç­õÿ0¼5ø—4I@!²IL."@  ‘¥P7& '…È«ž³Ä~$@€h\à”“~\yù¥¿¶júóÕˆ¾3£=|ÀüˆŒ‹Ðî5ÅÎÀú§¶ @ € ‘ÄÕ5I@!Ò/ P…Èâ8…Z& Ù27w Ð YÿHï$š{ûÇq×;G¤ÿßqá;ŠuÕÿâ®±ûæø#öë×oÑ)‘ @  ³fÍŠ«>øàƒˆcÇŽ8æÕÑ©ýÒ¨ˆ/¿übÄv;õŒØ{“©mK€ ( Y@\] "ý @€ÅPˆ,޳Q @ e ‘-ss-¨ùpnÜõÚ©ïD|îÐÔÉ—WLñK×ö‰ëî|<âzë­—NØ @€D`ó6‹~g+ý –ŽÝ;d @€ (Dú P4…È¢Qˆ Ð$…È&1¹ˆÚH@!² uC€@ÓênM×.xczìühÄgo~»[Ä^xCÄvØ!¢  @€@aÞ~ûíèxïã÷ŒØi…H¯ @àÿ (Dú Pt…È¢“ °D…È%²8H€Pˆ,¬n øOºGÒaÿù¾çÄÉoí¸kÄCöß#â¨'ŒxÜ—D9rdD @€Â \qÍïc€K_øUÄ.v*ì€z'@€ŠPˆ¬È´[4Ò(D–ÆÝ¨ @€e (D.KÈyh …ȶPÔ ÔŒ®óû=(â‰Ç¸ÄëO;ù'qü€ƒ‰¸æšk.ñ:  @€ #°Ï!{Gǯ{%b—;/q ÏGψã½×ë•η_âe @€ ‘ 84(„€Bd!TõI€h{…ȶ7Õ#üŸ€BäÿYØ#@ j>¨×ÿxÈ×ýöÏm<‚î @€ÚR`ÆŒô¤ãf»nÝvù^zÔ±~Ö¼hzá»'/úsÞ†·åðú"@€œ (Dæ<Á–G ” ‘¥Ô76 @ ù ‘Í7s4]@!²éV®$@ ‰óæÎ+«néqÔCÏ5ñN— @€dAà¾ï‹ióóC#N|ᓈ¿ù悈'¼Þ9ô,ïôh’€Bd“˜\D€@s"›£åZ @€@ö"³—3"@€@"óEk úÏÓ×±çßÕ1fôðõFìß¿D @€òØw×oÆD¼ÿXÄ¿|;½ûûO£ÓüOžØ;v±r:`K€š  Ù$— Ð4…Ȧ9¹Š u…ȬgÈü Pž ‘å™7³&PTÏNñf?5%bí´ôäãœééë‰3>O±_Ïqþ”³/ŽøÃcц @ ÛÏ<ýTLpÛ¯oñÚÝÒ;¿÷Y;ý9oÑìÿûoé+Ú· ‡VØÑß|Yd# @€À²"—mä / Yñ? @€@Î"sž`Ë#@€@F"3’Ó eº‰é@¯üä­˜æM{¥Ùn±JŠ+öLñœ'RœµÑObçìsÏKl  @€2-ðãcŠùÝ|ó_"V>3âðÁÝ#®³|MļŸbíC£Ýg½^m @€@S"›¢ä. Yá?Ë'@€r/ ™û[ 2! ™‰4˜ò˜pÒ›1áó6NނhÿqáWé¶g´¯½þ–òZ˜Ù @€„ÀŒ3"Ž;6â˜1c"ÞÿÀ]ßœþ¦L—/wж hŠ€BdS”\C€@…È @€Ü (Dæ.¥D€L(Df" &A ¼j§ÖÅ„ç^š¾¢½ûªé’Û ù<Ž_øÞ†||Ty-Ìl  @€š$°Ëþ»Äuïùíˆ]tnÒ}."@€ÊPˆ¬ìü[= (D¶ˆÍM @€Ü(Dæ&•B€¢ (D•Û`ò!0çÊy±—I/…üÕ?öüUÄê}"Žy{BD @€| Lš4)ô¶Xu@zgx¾Vi5 ÐÖ ‘m-ª?  YI¶D @€@# ‘à8E€KPˆ\*,.Pw{:rãy‰µ×Z»Á%wþõ¶h_ùÛK#Þõà# Îk @€äKà¶;ÓŸÿθã”XXÕ–òµ@«!@€6PˆlSNÈ·€Bd¾óku @€æ (D6WÌõ¨l…ÈÊοÕh’@Ýãé?§îzF\¿çn{6zßìÙ³ã|÷îݽÎI @€|uü‘±Ç{<±Ûº4XXÍÇ5Ñžö·É´Rƒó P ‘•‘g«$Ð*…ÈVñ¹™ {…ÈܧØ  Ð& ‘m¨ù¨S Ûk…ý"žú?§ås¡VE€ Ð&#6ýt=<½+rúýéëÚ3Lq^÷Žq~•³¿Ø&ãé„ÊK@!²¼òe¶Š* YTnƒ @€Ê^@!²ìSh(¨€BdAyuN <j>®‹‰¯óîzoº2}%»â Wˆ8p—m @ ²"++ßV[á ‘þ°| @€@" «[äL@!2g µ ¼wÒ›qúýÒ“;®žþ õà^é®éAÈv_¹2}å°®~^cÝ9G€ PáÇÿס!ðÈ]7D¼ü›³#ŽH>¶ë^•€¾~cúóå;}Ö_øÐtÚ–*D@!²Bm™þ) éw@€ ðÿÚ»÷8«Êzà\‡ÁE¹©‰b𢂖ZêñŠŠþ´¼tÔ.–ijÕ9iy:æ©ãýn¦v±”òBejæQ`R–f y„ÄÀ^¹ ÁÌà÷{}ÌßÄ3{öì½×^ïÖw]Ÿõ<ïgþ˜ùì5k—R@YJMm @ ö‘µ?ÇFH` yW¿ûŽnHŸX_¾oz‡Ï;'º²>Vgüõå¨|çJ€ @à×]{m¬O}ô¡¨ÓŸ~2jã_æD¼a]ÔBKz7ù€ÿÛ½û÷ŠjA€ùDæk¾–@"ý  @€”B@Y Em @ ?‚Èü̵‘XC`þ÷^‹}ï_´,êýǦ'$wž°QlßôëôÉöN;í´Æµv @€XŸÀœ9éÉÈÛî¸-N½ù¹ Që>Òs}—:N€5( ˆ¬ÁI5$íD¶WÊy @€Å"‹Qs jW@Y»skdÖ*Ð4»9Ží½lÿ¨c?2&êøÏŸõýÓ'Ôg^õ‹Ø>øàƒ£Z @€èŒÀgÇ}&.Ÿºé£Që·LïìL›®%@€ì"³3WzJ d‚È’Qjˆ @ ‚È`9•5( ˆ¬ÁI5$k(,j‰C¦lõÁ;§´:õ¥_ŒíŽNpóÄØ>ôÐC[gƒ @€@1…B!.½ß¨¨õŸïQL3®!@€Œ "3:qºM Ad1j®!@€(•€ ²T’Ú!@€@6‘Ùœ7½&P”@Ó «âºÇþ÷ñ¨}ûö-ª @€èŒÀC¿(.ÿÒÆGí5&ýžº¶6[–¬HçõómÛk3²ŸYDfa–ô‘@‰‘%‚Ô  @€@§‘âs12+ ˆÌìÔé8ö ´üº{œ|Ó·o‰ºãÈÛ±3  @€t‘À9~3Z¾cá/¢Öoßú[´ßüéÜØ¿ª)=9øó[vQO4K€åD–CÙ=TX@Yá p{ @€6‘m²ØI€šDÖìÔnÝ HïÚù±gÇqG‡… @€@Õ ìuèžÑ§…{¿õÍë^ŒºçFé[¶§64ÄöàÓ<Ȩ€ 2£§ÛÚ# ˆl’s @€*- ˆ¬ô ¸?Ê# ˆ,³»(‰@ÓÍÑNóüôÉpaáê:¿%µ¿ _õzÚÜÇN‰ý—{YIî¯ @€]!páyߊf/½èܨS>½2ê-ÓÓ»Î'n:8¶‡6(ªdS@™ÍyÓëœ "s:ñ†M€¨qAdO°á @`µ€ Ò ,¸^ôöï÷ÿ-ꇇ¦Î¿¯_úÄxhzuN·IMŸrúwâ„ÓO?=hI€ @ ŠŽ ›½0êäcV´êãEH›‹v=#V.¼øÒVÇm @€¨¤À6ïKß~½yÏ·¢‡ [u‡A«¢ŽL¯„ì¶ÇOzÄö³GD­XÕ‚²) ˆÌæ¼éuΑ9ÿ0| @€@Æ‘Ÿ@Ý'@€@‘‚È"á\F –<žžˆ\|szBrÖ¸ôdä/ŸM½›Ò÷èX™pë/«¡»ú@€ @ žþù¨úÓŸ¢6>•Þ9ý©Çcû™Æô m¡eIlozIz"26, @ ³‚ÈÌNŽèÖMé§€ @ ‹‚È,Κ> @ ó‚ÈÎj@ÅZH·þêÁgÆÊNù|Ôó÷)D½gé£Nz豨 @€²$pïÿÞÝý‰_‹Ú{ÿîYê¾¾ @€À? "ÿ Ä&, "³4[úJ€ ÐQAdGÅœO€êDV÷üè6šÿœÞyÒN‰ã_>í+­ÎÛe‡ôåMéÉÈgŸ±Õq @€²$pæݽ¯pwÔúm}{v–æO_  ðŽ€ ò •@†‘š,]%@€è´€ ²Ó„ @€@U"«bt‚@ûšæ¤'?¼xï¸à‡W\¿Î }ôÑ8¾Ç{¬ó<  @€dAàC¦w ¯8vYt·G],t[  @`µ€ Ò "34YºJ€ PrAdÉI5H€² "ËÊífŠhy;½rÃûDÝýûâr @€ 4NoŒÞêœODíuĪuަy^s¯è’ë„reD– ÚmtF@Ù=× @€ÔŠ€ ²VfÒ8È«€ 2¯3oÜ™X~ãÊèïïNï|lhhÈTÿu– @€@)®þþw¢¹ëŸý~Ô>»öŠºüååQç\<;ê€Ñé÷æÁ' m ¨¬€ ²²þîN ]‚Èv19‰ @ '‚ÈœL´a Ps‚Èš›RÊ’@Ëâ–ènóÂT Ó·b¥íúWÞÇ'^ô³¨£GÎÒðô• @€@— ñ©#¢ýgæ?µÇ ¢²Uú¢_¿wpl9"ÕØ° @€Š "+FïÆºuDú) @€ P¼€ ²x;W @ ‚ÈJ¨»gî¿ølÔ÷Hƒ6Lu³~Ýce“ÞéÛÿ{#=ùê›‹Ó – @€t[¼8ý~|ð>»‡Æn}ÿõ;¥ß£üEúEû…1[Äþþ»¬þ…›TT@YQ~7Ï«€ 2¯3oÜ @€¥D–BQ(¿€ ²üæîH Û²§Ò'¸Kny%4ž?5½Ã¦÷ê'$›W$¤†‹zÆJS!½3 @€< Ü~[zwúç>û™`¸çØæ¨{mÙZeókÒ/Ö¾>"ô\×ú[ PAdEØÝ4ï‚ȼÿ? @€@1‚ÈbÔ\C€êDVÏ\èIšæ6Ũgœ3+êŸNJ»n–ê€+êceÖ s£n²É&é€% @€ ŒØê½1êE çG¹yú}y‡M–Çöv¥úo“ÎÎ?™V,  @ *‘U1 :‘WAd^gÞ¸  @€ŠD£æT€ ²zæBOò(¾Ô¯Û²¦—Bö]œÞq3nÛôîÈ+ï*ï}8êÈ‘>ÑÍã‰1 @€´˜7o^ìhllŒ:}u}r꣱=å‘¢öÿÆ ¨Ýº§bI€•DVÖßÝó. ˆÌûO€ñ @€! ˆ,Í%¨AdL‚.äW p[úhöW×Ü[Û:êçŽ?2êï÷›¨×ýäö¨cÆŒ‰jA€ @€ÀÚ¦N›O¾øÄ¨½[û¹Ž @€@ù‘å³v'k"× ±ƒ @€@§‘&ÔºD@Ù%¬%°n–Óñ ?uI¬Œ3¶Í .¿ôâØÿ™Ó×i8°Íóì$@€ @`M‹¯º(vÞüÒ„¨}vî½æIö @€@Ù‘e£v#ï "ßµ°F€ @ «‘]%«]' ˆ,ÎÍUŠhz¢%®û̈ô„ããÏ(ª @€ Ð~ƒŽNïZã_^‰‹z÷ïÕþ‹I€%D–ŒRCÖ/ ˆ\¿‘3 @€”Z@YjQí @ 8Adqn®"Ð!å/6Åùš÷‘¨7^=¡C×;™ @€âæÎzò!Q{×v[‹ÿ¼8ß$=1ÙwØmŸh/% ˆ,ŠÍE:& ˆì˜—³  @€”R@YJMm @ xAdñv®$°†Àª«b_aazdaA!¶7ž:8ê#÷ýqkì @€ @ <o»5ntáäó¢ÖíÙ3ê‚[Ó“Ë_Û=÷uÈáé÷øØ° @€N ";M¨ï "ßµ°F€ @ Ú‘Õ6#úC€@Þ‘y›qã-‰À[·¿í,¶(ÕE+¢6-_u“†QûõJõÚŸþ:¶ÇŽÕ‚ @€Ê |ü³ÇÄͼ箨gìš~à¥Ô§+ýG7¤– PAdI5’7AdÞfÜx  @€jI@YK³i,dI@™¥ÙÒתhš›¾{úÙ³¢OSNH]ÛgXë.Ž»¿.v|à“—G?~|ël @€ P6k¯º,îuù…ߎzïÇ—DÝn`êÂfפÿhxÖˆØÑgPú}>µ$@€Î ";+èú\ "s9íM€ qAdÆ'P÷ ȼ€ 2óShÕ ðòÙÏE7Îÿ`ú¶ì“wNð©woðÌX¹à¢Kª¡»ú@€ @ Wûì1:Æ»ysú¦[_Û=º'†åé×øn^’vìtý¹ò1X”K@Y.i÷©iAdMO¯Á @€d\@™ñ Ô}jF@Y3Si •Xþ—æ¸}ß{Ó·gïÝÿÍØµñ⨿©?*êO&ÞÕ‚ @€ò |tìq³f?µqVúzìm6ëÛCú¦wÀÏX–ú4ô‚mÒŠ%”T@YRNåU@™×™7n @€,"³0KúH€@‘y˜ecì2æyéIÈ¡S‡Ç=î™xoÔ+/9/êO¯½8êÀ-·‹:ù÷Gµ @€ @ ò3gÎŒN466F½ä{é÷÷æ£Ò;${õëYùNêjH@YC“i(åD–ßÜ  @€”J@Y*Ií @ }‚Èö99‹@›ÿAúz½é?Ç»w_ýµ{«Ï¾ëŽôNÈßM™{®øî÷ÛlÇN @€*/0{öìèÄQ_ùXÔ^G¯ª|§ô€5$ ˆ¬¡É4”ò "ËoîŽ @€ºJ@ÙU²Ú%@€@DúI P„@áöôäãíWÞW>b­47§wIÖÕÕ­ó<  @€¨¼À ?ýqtâªG/Z·»wEV~Vô€ZDÖÂ,CÙ‘e'wC @€eD–ÚÈ™€ 2gn¸(LIïˆ9ïØ ¢¡ÃÇѹ]M€ @€@Õ ÊqÑ·g†=µþ½þéj'KÇÈ„€ 2Ó¤“Õ" ˆ¬–™Ð @€]/ ˆìzcw @ _‚È|Í·Ñ)Ðôdúvìã·üt´ðûF‘-¹Œ @€¬,]º4ººÇ¡»Eíó¹mvý•+æÄþþG ‰ÚoÄmžg'ò. ˆÌûO€ñ·K@Ù.&' @€¨)AdMM§Á P‚È*˜]¨œÀk7¿7ïùv!ꊩ._˜ž€\²`Eìßq‡aQ§>1;ª @€ù˜ôÀ¤ì×nújÔæaË¢¾´úIÈa%‹åGm+ýwÝ0í°$@€V‚ÈV6ò& ˆÌÛŒ/ @€Ž ";næ ´% ˆlKžÜüõ«3c¬Ÿžž|üøÒ·boÞZV¦zدÆÊœ¹o¦– @€äNà€ýv1¿úÜÔ¨}2ýÁ0zBzwdÿ¯ýõ›öÉ @ =‚Èö(9§f‘5;µF€ @ ä‚È’“jœ "s6á†Û¶À¼k^ˆÝàïQ¿³_úd³9=(٭ᢞ±¿©Þ @€Ô´À¼yób|‡°gÔ±ƒ_‰ú­=Óß …ÕÿAÕ÷‚Ä0êÇ#ÓŠ%´) ˆl“Åμ "ó6ãÆK€ @`ý‚Èõ9ƒDvD˹5/°àª7bŒÃ›–Gô¯oGxE}Ô¿ÌIŸ€0 ¶- @€¨=åËÒ·boÜ?}ûõi»¤ÿŒ:ôýi¬; JõoKS=螺XÙò¼mÒKhS@Ù&‹yDæuæ› @€À»‚Èw-¬ @ ”‚ÈRjj+³Í¥—AŽûЗc [Ú<êI'uã¾é‘?»ïáØÞqÇ£Z @€ P{ÍÍÍ1¨›nº)êô§ÿµñ‰ÇÓöÌYQ-NÿAµé®ÅvÿSÒß±aA€k"× ±#‚È<κ1 @€h[@Ù¶‹½謀 ²³‚®Ï´ÀòY…èÿþ+ŠzõW·Ïk¯¾Ûûì¹{Ô_ÞuOÔvÚ©Õy6 @€ÈŸÀ‚ bÐ'ŒûtÔF§'%û NïŒÌŸˆ @`Ý‚Èuû8Zã‚ÈŸ`Ã#@€ Ð…‚È.ÄÕ45) ˆ¬Éi5¨õ ¤'!‡üahœ:é—“×w‰ã @€hS`þüù±ßÝ'j]z@²Ísí$@€@ž‘yžý]™ãÉ7t @€%D–TsÔ¬€ ²f§ÖÀÖ%°ìúô-ÙONy*NëÝ»÷ºNwŒ @€ë¸ëîŠsιã?£öÞ§ûz¯qò$ ˆÌÓlë?‘ÿ °B€ @€@‰‘%‚Ô 5+ ˆ¬Ù©5°¶ZîJŸHÞzþÏâðöؾ­Óì#@€ @€@ѧŸuz\û`ÝýQûïSt[.$@€@- "ki6e½‚Èõ9 @€N "; èrjV@Y³S›-™¹4Ú4¯9jaAKÔóÓöª©v_œž„<ïÜkãø Ÿ8!ª @€ºJ`ç½wЦ{¸2j÷žéï’%ϼÛ/}ïå¨C¿´UÔ†íÞÕ‚µ* ˆ¬Õ™Íɸ‘9™hÃ$@€ AAd'M— èRAd—òj¼«æÿüµ¸EÝ“ ¢ýþôIã{û¥;oÞêUSëbåË—¦wCyä‘é€% @€ºH`ÚŸ§EË'_|bÔEo¥' 7{)=ùÊ¢U±¿á+ãÖoî]’aA€@Í "kvjó10Ad>æÙ(  @€dQ@™ÅYÓgºR@Ù•ºÚ.›À¢;_{ •žŒ|ðã+ZÝ{ü¤úØþÀ'/‹:nܸVÇm @€ @ Ô3g̈&÷ÛëCQÏÜ}YÔ¯|(ý'W¯sÓw¹qdZ±$@€@ "k|‚ó2i¼îñÔ¥»}=Vοð¢´Ã’ @€%X¹2ýýqå%çG‹?úî¥Qï9&½ò}§=ýFªÞÝ;V¶<Û´Ã’5. ˆ¬ñ ÎÛð‘y›qã%@€ P=‚Èê™ =!@ :‘Õ9/zU¤@abºðÇçÞ+cØ'êi;/úú–GG½ñ–Û¢Z @€ @ Túã#ÑÔìuÏáDÙiÔ¢ÎMHvûÁ’†ØòÅ­¢Z @ Ö‘µ>Ã9Ÿ 2gn¸ @€ªH@YE“¡+T¥€ ²*§E§:*Ð2¹{\òS¯ŽºÏÞû¶jbôö#bû}Ãßõö»'µ:nƒ @€X¶,}+öüùó£©ÆÆÆTŸy&êô§ÒËë;åÁØî³Ç†Qßsxzr26, PÂȞÜ< M™§Ù6V @€Õ) ˆ¬ÎyÑ+ªG@Y=s¡'E4?¾"®:uÔ¸¨ãNNumM=÷Üsqh›m¶YÛ)ö @€ @ ,'ù¤¸Ï7y(jßaõe¹¯› @ R‚ÈJÉ»oI‘%aÔ @€DVÝ- ¨¨€ ²¢ün^¬@Óìæ¸tïeûG½î’ïÛ”ë @€ P•+WÆ}wÜkdÔ¾§ö¬H?Ü”åD–KÚ}J* ˆ,)§Æ @€¨€€ ²ènI€@E‘åwóŽ µÄ%¦lõÁ;§t´ ç @€ @ ª~äáèÏøk¿µçA«ªª:C€R "K%©²"ËÂì& @€”Q@YFl·"@ ¢‚ÈŠò»ù;……éIÇæ…ØõÎvaaÚny+Õ†76ŒãOü}ûö}§ • @€™øöÅߊþßöæÄ¨õ;Öµ9žÅO¼ûvîµ{îmžg'ªM@Ym3’Óþ¼< "sú`Ø @€tDú! @ Ö‘µ>Ãß3§NžÔ#êf é([¥øºõhIß&7mÙÖqü‰³322Ý$@€ @€@Çö9ü_â‚Eϋګ!}›ö›×¼Û fþ=ê–ÿ9C9éŸ 2'm˜ @€¬W@¹^"' QAdF'®Öº½tÚ¢Òâ‰s£Î:%=¹Aï4ÒÙ RsÇàXùëËo¤– @€¨19sæÄˆúÔQ_ž–¶|xè w¤ÿ }Ãȹá Pë‚ÈZŸáŒŒO™‘‰ÒM @€º\@ÙåÄn@€@…‘‚wÛ¶šßhŽ3Ïžõw'¬þ¤oÓtþÆ—öŠ•eMé[´Ó^K @€ÔŽÀYÿ>.ó»_Mˆ:ù¸ôNÈwþSìÀ»Ó¿Žmyþ¶µ3h#!@ ‚È\Lsv)ˆÌÎ\é) @€]# ˆìW­ PyAdåç@þ?æ7Ò“Ž#žÝ>ö¾öÔŒ¨'{!êY¤'$ÿúÒk±½ñÆGµ @€ @€@VæÎMïÊ?`¯Ýb'n—^’ÿõÝ—µҭϤͳæ6ÄÊà/lÕê¸ T»€ ²Úg(gýDæl — @€n‚H?äE@™—™®òq®Z‘žt,ÜØ=zúôïWÔ·ºß§~æØX»ûž{£Núí£Žé[âV) @€dTà'7ü(zþ­s¾õ•×ߊ:rhzòq‡+bûùK¢ÎÜeHÔ!ÿgPT dE@™•™ªñ~ "k|‚  @€µ "×Jã5& ˆ¬± Íêp ?O=¿ç‡÷ÅÊ[lÑæPn¹åæØÌ1Ú§OŸ6ϳ“ @€Yhii‰®766¶ª¿y`RlO-L‹Úç Q- AdVfªÆû)ˆ¬ñ 6< @€Ú- ˆl7• Ș€ 2cVkÝ-LNìsWÆÐÆì?¦Ö†h< @€(©ÀYÿ}V´÷?ËîŒZ¿]]IÛ׺J@ÙU²Úm—€ ²]LN"@€ @€À?‘ÿ °B€@Æ‘›°Zénó´ôΓ“¶?5†ôåÓ¾R+C3 @€”E`÷1»Å}šYµg½wF–ÞM(Z@Y4 ;# ˆìŒžk  @€ Э› ÒOYDfmÆ2Òß•…ôîÇÂÂBô¸° =Yx=Õý7LþÊedDºI€ @€ê˜1cFtèøoµ×ÇÒßaÕÕK½!@€À»‚Èw-¬•P@YBLM @€ @  Ad(v PÕ‚Ȫžžìtîµë^ŠÎ.h\µ¥9}7`£î±=¤_ª‹—¦w–Ü1ù±Ø?jÔ¨¨ @€ PœÀu?º..üÞSßÚ烽Z5´jEúûìõ scÿàOlµg_ï”leƒ.Dv9q>n ˆÌÇ<% @€Õ' ˆ¬¾9Ñ#ÚD¶íbošæ6ÅÓÏžuÚ)©Ñ›¶nèè»6ŒŸüæQ:ê¨Ö'Ø"@€ @€¢Ž<ácqÝó#Ó»# s—Çö¬kÒ°­\™šÝuÂÈ¢Úw:+ ˆì¬ ëC@é @€•DVÖßÝ X¿€ rýFÎ(Bàåo>W;:}Kö)£ÓGo§O®ýÛiÔñãÇѺK @€ @àŸ.\»Fí<,êð~éþWï»"¶÷½³wÔ­.Ü6ªÊ- ˆ,·xNî'ˆÌÉD& @€U# ˆ¬š©ÐÖ" ˆ\ ŒÝh~8}â6xæÑÐŽ=Ò»#õ\ÛKwûzÔó/¼¨s7r5 @€r.ðôSO…À¡cözöéIÈÓvIÿ¡öóé èŒbeȸ­ÒK”Y@Yfð¼ÜN™—™6N @€*- ˆ¬ô ¸?íD¶WÊyíhžQˆóÝà£Q/:çâ¨W]r~Ô\uAÔïXÔnþET  @€è˜À­®4*ô?IDAT ¾öï_Šzõ˜ô-ÙûKílÒ7Õ³§¤ú“ƒceÈGSM{-  P>Adù¬sq'Ad.¦Ù  @€¨AdL‚. Ð!Ad‡¸œ¼6æ¿¥'!·~z›8å®›~Ýæ©wÜ–ž€\´h~?ñäÓÚ<ÏN @€X·ÀwÞ'L¾/ýý5ý©?ÇvãÌç£ÖõL׿§gS¬ô8qhÔ wè—X @ Ì‚È2ƒ×ê푵:³ÆE€ @€@µ "«ufô‹µ "×&cûV¥Ó–ý0}KöôGžm×u+V¤ó{ö\ý]»®r @€´Wàõ×_Sóào¢^ú«ôÿ^‡­þC®½ 9%D–2·Í"s;õN€ @€@u "«{~ôŽ@‘yœõ޹p[jìWפw’l=lë¶®) @€(•Àå×\MÝø|ú¶íúÑu¥jZ;h—€ ²]LNZ›€ rm2ö @€ @ º‘Õ5zC ‚È<Îz'ÆÜ²4½ÛqÅÃÝ£•K>›>Q;fl'Zu) @€”KàÐc‰[½²Ç Që6é]®[»9Dæü £ÃDvTÌù @€¨.Adu͇ÞÈ“€ 2O³½Ž±®jZG_½ú…¨Ý—§'—-LuÉ¢T{÷H°ÿ^±r÷}¥– @€ w¾ÄæÏýíuüº¿E{åòô÷búÕfb”:I€@5 "«qV*Ð'AdÐÝ’ @€DVÝ- A¤„Xµ2}öüWgÆöøÒ'^'Jû7oHPÓ^MõÌ'·•‡§MO;,  @€ @ S¿¸ãçÑßóïû悔÷jýÄã¢ßÎý ~ûVÔaßzT + ˆ,V®Æ®DÖØ„ @€Ö# ˆ\Ô\àÿr y+™h¡1IEND®B`‚wagyu-0.5.0/docs/vatti.md000066400000000000000000000011211360766232600152570ustar00rootroot00000000000000## Vatti Algorithm There is an excellent book that contains a great description of a Vatti algorithm. For more information then the information provided here on the Vatti algorithm, please look into this book. ``` Computer graphics and geometric modeling: implementation and algorithms By Max K. Agoston Springer; 1 edition (January 4, 2005) ``` A very simple explanation of the the Vatti algorithm is that it breaking apart rings into [edges](edges.md) - decides what edges should be kept, and then re-assembling the resulting rings. wagyu-0.5.0/fuzzer/000077500000000000000000000000001360766232600142105ustar00rootroot00000000000000wagyu-0.5.0/fuzzer/main.cpp000066400000000000000000000177751360766232600156610ustar00rootroot00000000000000#include "../tests/util/boost_geometry_adapters.hpp" #include #include #include #include #include #include #include #include #include #include #include static int s_int = 0; static void signal_handler(int value) { s_int = value; } static void catch_signals() { struct sigaction action; // NOLINT action.sa_handler = signal_handler; action.sa_flags = 0; sigemptyset(&action.sa_mask); sigaction(SIGINT, &action, nullptr); sigaction(SIGTERM, &action, nullptr); } void log_ring(mapbox::geometry::polygon const& p) { bool first = true; std::clog << "["; for (auto const& r : p) { if (first) { std::clog << "["; first = false; } else { std::clog << ",["; } bool first2 = true; for (auto const& pt : r) { if (first2) { std::clog << "["; first2 = false; } else { std::clog << ",["; } std::clog << pt.x << "," << pt.y << "]"; } std::clog << "]"; } std::clog << "]" << std::endl; } void log_ring(mapbox::geometry::multi_polygon const& mp) { bool first_p = true; std::clog << "["; for (auto const& p : mp) { bool first = true; if (first_p) { std::clog << "["; first_p = false; } else { std::clog << ",["; } for (auto const& r : p) { if (first) { std::clog << "["; first = false; } else { std::clog << ",["; } bool first2 = true; for (auto const& pt : r) { if (first2) { std::clog << "["; first2 = false; } else { std::clog << ",["; } std::clog << pt.x << "," << pt.y << "]"; } std::clog << "]"; } std::clog << "]"; } std::clog << "]" << std::endl; } void create_test(mapbox::geometry::polygon const& polygon, unsigned seed, size_t iteration) { std::string fname = "tests/geometry-test-data/input-polyjson/fuzzer-" + std::to_string(seed) + "-" + std::to_string(iteration) + ".json"; std::clog << "Creating " << fname << "\n"; std::ofstream out; out.open(fname); out << "["; for (size_t i = 0; i < polygon.size(); i++) { if (i != 0) { out << ","; } out << "["; for (size_t j = 0; j < polygon[i].size(); j++) { if (j != 0) { out << ","; } out << "[" << polygon[i][j].x << "," << polygon[i][j].y << "]"; } out << "]"; } out << "]"; out.close(); } void print_clip_type(mapbox::geometry::wagyu::clip_type ct) { switch (ct) { default: case mapbox::geometry::wagyu::clip_type_union: std::clog << "Union Clip Type" << std::endl; break; case mapbox::geometry::wagyu::clip_type_intersection: std::clog << "Intersection Clip Type" << std::endl; break; case mapbox::geometry::wagyu::clip_type_difference: std::clog << "Difference Clip Type" << std::endl; break; case mapbox::geometry::wagyu::clip_type_x_or: std::clog << "X OR Clip Type" << std::endl; break; } } void print_fill_type(mapbox::geometry::wagyu::fill_type ft) { switch (ft) { default: case mapbox::geometry::wagyu::fill_type_even_odd: std::clog << "Even Odd Fill Type" << std::endl; break; case mapbox::geometry::wagyu::fill_type_non_zero: std::clog << "Non Zero Fill Type" << std::endl; break; case mapbox::geometry::wagyu::fill_type_positive: std::clog << "Positive Fill Type" << std::endl; break; case mapbox::geometry::wagyu::fill_type_negative: std::clog << "Negative Fill Type" << std::endl; break; } } int main() { catch_signals(); auto seed = static_cast(time(nullptr)); std::size_t count = 0; std::random_device dev; std::mt19937 rng(dev()); std::uniform_int_distribution dist50(0,50); std::clog << std::endl; for (size_t iteration = 0;; iteration++) { std::size_t len = static_cast(dist50(rng)) + 3; for (auto clip_type : { mapbox::geometry::wagyu::clip_type_union, mapbox::geometry::wagyu::clip_type_intersection, mapbox::geometry::wagyu::clip_type_difference, mapbox::geometry::wagyu::clip_type_x_or }) { for (auto fill_type : { mapbox::geometry::wagyu::fill_type_even_odd, mapbox::geometry::wagyu::fill_type_non_zero, mapbox::geometry::wagyu::fill_type_positive, mapbox::geometry::wagyu::fill_type_negative }) { mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::polygon polygon; std::size_t num_rings = 1; // num_rings += std::rand() % 5; // std::clog << "rings: " << num_rings << std::endl; // std::clog << "len: " << len << std::endl; while (num_rings > 0) { mapbox::geometry::linear_ring ring; for (std::size_t i = 0; i < len; ++i) { std::int64_t x = static_cast(dist50(rng)); std::int64_t y = static_cast(dist50(rng)); ring.push_back({ x, y }); } polygon.emplace_back(ring); --num_rings; } ++count; std::clog << "\r Number of Tests: " << count << std::flush; mapbox::geometry::multi_polygon solution; try { clipper.add_polygon(polygon, mapbox::geometry::wagyu::polygon_type_subject); clipper.execute(clip_type, solution, fill_type, mapbox::geometry::wagyu::fill_type_even_odd); } catch (std::exception const& ex) { create_test(polygon, seed, iteration); std::clog << std::endl; std::clog << ex.what() << std::endl; return -1; } for (auto const& p : solution) { std::string message; if (!boost::geometry::is_valid(p, message)) { std::clog << std::endl; std::clog << message << std::endl; print_clip_type(clip_type); print_fill_type(fill_type); log_ring(p); create_test(polygon, seed, iteration); return -1; } } /* * uncomment once https://svn.boost.org/trac/boost/ticket/12503 is resolved std::string message; if (!boost::geometry::is_valid(solution, message)) { std::clog << std::endl; std::clog << "Multipolygon failure case:" << std::endl; std::clog << message << std::endl; print_clip_type(clip_type); print_fill_type(fill_type); log_ring(solution); create_test(polygon, seed, iteration); return -1; } */ if (s_int != 0) { return 0; } } } } } wagyu-0.5.0/include/000077500000000000000000000000001360766232600143065ustar00rootroot00000000000000wagyu-0.5.0/include/mapbox/000077500000000000000000000000001360766232600155745ustar00rootroot00000000000000wagyu-0.5.0/include/mapbox/geometry/000077500000000000000000000000001360766232600174275ustar00rootroot00000000000000wagyu-0.5.0/include/mapbox/geometry/wagyu/000077500000000000000000000000001360766232600205635ustar00rootroot00000000000000wagyu-0.5.0/include/mapbox/geometry/wagyu/active_bound_list.hpp000066400000000000000000000345771360766232600250110ustar00rootroot00000000000000#pragma once #ifdef DEBUG #include #include #endif #include #include #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template using active_bound_list = std::vector>; template using active_bound_list_itr = typename active_bound_list::iterator; template using active_bound_list_rev_itr = typename active_bound_list::reverse_iterator; #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, const active_bound_list& bnds) { std::size_t c = 0; for (auto const& bnd : bnds) { out << "Index: " << c++ << std::endl; out << *bnd; } return out; } template std::string output_edges(active_bound_list const& bnds) { std::ostringstream out; out << "["; bool first = true; for (auto const& bnd : bnds) { if (first) { first = false; } else { out << ","; } out << "[[" << bnd->current_edge->bot.x << "," << bnd->current_edge->bot.y << "],["; out << bnd->current_edge->top.x << "," << bnd->current_edge->top.y << "]]"; } out << "]"; return out.str(); } #endif template bool is_even_odd_fill_type(bound const& bound, fill_type subject_fill_type, fill_type clip_fill_type) { if (bound.poly_type == polygon_type_subject) { return subject_fill_type == fill_type_even_odd; } else { return clip_fill_type == fill_type_even_odd; } } template bool is_even_odd_alt_fill_type(bound const& bound, fill_type subject_fill_type, fill_type clip_fill_type) { if (bound.poly_type == polygon_type_subject) { return clip_fill_type == fill_type_even_odd; } else { return subject_fill_type == fill_type_even_odd; } } template struct bound_insert_location { bound const& bound2; bound_insert_location(bound const& b) : bound2(b) { } bool operator()(bound_ptr const& b) { auto const& bound1 = *b; if (values_are_equal(bound2.current_x, bound1.current_x)) { if (bound2.current_edge->top.y > bound1.current_edge->top.y) { return less_than(static_cast(bound2.current_edge->top.x), get_current_x(*(bound1.current_edge), bound2.current_edge->top.y)); } else { return greater_than(static_cast(bound1.current_edge->top.x), get_current_x(*(bound2.current_edge), bound1.current_edge->top.y)); } } else { return bound2.current_x < bound1.current_x; } } }; template active_bound_list_itr insert_bound_into_ABL(bound& left, bound& right, active_bound_list& active_bounds) { auto itr = std::find_if(active_bounds.begin(), active_bounds.end(), bound_insert_location(left)); #ifdef GCC_MISSING_VECTOR_RANGE_INSERT itr = active_bounds.insert(itr, &right); return active_bounds.insert(itr, &left); #else return active_bounds.insert(itr, { &left, &right }); #endif } template inline bool is_maxima(bound const& bnd, T y) { return bnd.next_edge == bnd.edges.end() && bnd.current_edge->top.y == y; } template inline bool is_maxima(active_bound_list_itr const& bnd, T y) { return is_maxima(*(*bnd), y); } template inline bool is_intermediate(bound const& bnd, T y) { return bnd.next_edge != bnd.edges.end() && bnd.current_edge->top.y == y; } template inline bool is_intermediate(active_bound_list_itr const& bnd, T y) { return is_intermediate(*(*bnd), y); } template inline bool current_edge_is_horizontal(active_bound_list_itr const& bnd) { return is_horizontal(*((*bnd)->current_edge)); } template inline bool next_edge_is_horizontal(active_bound_list_itr const& bnd) { return is_horizontal(*((*bnd)->next_edge)); } template void next_edge_in_bound(bound& bnd, scanbeam_list& scanbeam) { auto& current_edge = bnd.current_edge; ++current_edge; if (current_edge != bnd.edges.end()) { ++(bnd.next_edge); bnd.current_x = static_cast(current_edge->bot.x); if (!is_horizontal(*current_edge)) { insert_sorted_scanbeam(scanbeam, current_edge->top.y); } } } template active_bound_list_itr get_maxima_pair(active_bound_list_itr bnd, active_bound_list& active_bounds) { bound_ptr maximum = (*bnd)->maximum_bound; return std::find(active_bounds.begin(), active_bounds.end(), maximum); } template void set_winding_count(active_bound_list_itr bnd_itr, active_bound_list& active_bounds, fill_type subject_fill_type, fill_type clip_fill_type) { auto rev_bnd_itr = active_bound_list_rev_itr(bnd_itr); if (rev_bnd_itr == active_bounds.rend()) { (*bnd_itr)->winding_count = (*bnd_itr)->winding_delta; (*bnd_itr)->winding_count2 = 0; return; } // find the edge of the same polytype that immediately preceeds 'edge' in // AEL while (rev_bnd_itr != active_bounds.rend() && (*rev_bnd_itr)->poly_type != (*bnd_itr)->poly_type) { ++rev_bnd_itr; } if (rev_bnd_itr == active_bounds.rend()) { (*bnd_itr)->winding_count = (*bnd_itr)->winding_delta; (*bnd_itr)->winding_count2 = 0; } else if (is_even_odd_fill_type(*(*bnd_itr), subject_fill_type, clip_fill_type)) { // EvenOdd filling ... (*bnd_itr)->winding_count = (*bnd_itr)->winding_delta; (*bnd_itr)->winding_count2 = (*rev_bnd_itr)->winding_count2; } else { // nonZero, Positive or Negative filling ... if ((*rev_bnd_itr)->winding_count * (*rev_bnd_itr)->winding_delta < 0) { // prev edge is 'decreasing' WindCount (WC) toward zero // so we're outside the previous polygon ... if (std::abs(static_cast((*rev_bnd_itr)->winding_count)) > 1) { // outside prev poly but still inside another. // when reversing direction of prev poly use the same WC if ((*rev_bnd_itr)->winding_delta * (*bnd_itr)->winding_delta < 0) { (*bnd_itr)->winding_count = (*rev_bnd_itr)->winding_count; } else { // otherwise continue to 'decrease' WC ... (*bnd_itr)->winding_count = (*rev_bnd_itr)->winding_count + (*bnd_itr)->winding_delta; } } else { // now outside all polys of same polytype so set own WC ... (*bnd_itr)->winding_count = (*bnd_itr)->winding_delta; } } else { // prev edge is 'increasing' WindCount (WC) away from zero // so we're inside the previous polygon ... if ((*rev_bnd_itr)->winding_delta * (*bnd_itr)->winding_delta < 0) { // if wind direction is reversing prev then use same WC (*bnd_itr)->winding_count = (*rev_bnd_itr)->winding_count; } else { // otherwise add to WC ... (*bnd_itr)->winding_count = (*rev_bnd_itr)->winding_count + (*bnd_itr)->winding_delta; } } (*bnd_itr)->winding_count2 = (*rev_bnd_itr)->winding_count2; } // update winding_count2 ... auto bnd_itr_forward = rev_bnd_itr.base(); if (is_even_odd_alt_fill_type(*(*bnd_itr), subject_fill_type, clip_fill_type)) { // EvenOdd filling ... while (bnd_itr_forward != bnd_itr) { (*bnd_itr)->winding_count2 = ((*bnd_itr)->winding_count2 == 0 ? 1 : 0); ++bnd_itr_forward; } } else { // nonZero, Positive or Negative filling ... while (bnd_itr_forward != bnd_itr) { (*bnd_itr)->winding_count2 += (*bnd_itr_forward)->winding_delta; ++bnd_itr_forward; } } } template bool is_contributing(bound const& bnd, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { fill_type pft = subject_fill_type; fill_type pft2 = clip_fill_type; if (bnd.poly_type != polygon_type_subject) { pft = clip_fill_type; pft2 = subject_fill_type; } switch (pft) { case fill_type_even_odd: break; case fill_type_non_zero: if (std::abs(static_cast(bnd.winding_count)) != 1) { return false; } break; case fill_type_positive: if (bnd.winding_count != 1) { return false; } break; case fill_type_negative: default: if (bnd.winding_count != -1) { return false; } } switch (cliptype) { case clip_type_intersection: switch (pft2) { case fill_type_even_odd: case fill_type_non_zero: return (bnd.winding_count2 != 0); case fill_type_positive: return (bnd.winding_count2 > 0); case fill_type_negative: default: return (bnd.winding_count2 < 0); } break; case clip_type_union: switch (pft2) { case fill_type_even_odd: case fill_type_non_zero: return (bnd.winding_count2 == 0); case fill_type_positive: return (bnd.winding_count2 <= 0); case fill_type_negative: default: return (bnd.winding_count2 >= 0); } break; case clip_type_difference: if (bnd.poly_type == polygon_type_subject) { switch (pft2) { case fill_type_even_odd: case fill_type_non_zero: return (bnd.winding_count2 == 0); case fill_type_positive: return (bnd.winding_count2 <= 0); case fill_type_negative: default: return (bnd.winding_count2 >= 0); } } else { switch (pft2) { case fill_type_even_odd: case fill_type_non_zero: return (bnd.winding_count2 != 0); case fill_type_positive: return (bnd.winding_count2 > 0); case fill_type_negative: default: return (bnd.winding_count2 < 0); } } break; case clip_type_x_or: return true; break; default: return true; } } template void insert_lm_left_and_right_bound(bound& left_bound, bound& right_bound, active_bound_list& active_bounds, ring_manager& rings, scanbeam_list& scanbeam, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { // Both left and right bound auto lb_abl_itr = insert_bound_into_ABL(left_bound, right_bound, active_bounds); auto rb_abl_itr = std::next(lb_abl_itr); set_winding_count(lb_abl_itr, active_bounds, subject_fill_type, clip_fill_type); (*rb_abl_itr)->winding_count = (*lb_abl_itr)->winding_count; (*rb_abl_itr)->winding_count2 = (*lb_abl_itr)->winding_count2; if (is_contributing(left_bound, cliptype, subject_fill_type, clip_fill_type)) { add_local_minimum_point(*(*lb_abl_itr), *(*rb_abl_itr), active_bounds, (*lb_abl_itr)->current_edge->bot, rings); } // Add top of edges to scanbeam insert_sorted_scanbeam(scanbeam, (*lb_abl_itr)->current_edge->top.y); if (!current_edge_is_horizontal(rb_abl_itr)) { insert_sorted_scanbeam(scanbeam, (*rb_abl_itr)->current_edge->top.y); } } template void insert_local_minima_into_ABL(T const bot_y, local_minimum_ptr_list const& minima_sorted, local_minimum_ptr_list_itr& current_lm, active_bound_list& active_bounds, ring_manager& rings, scanbeam_list& scanbeam, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { while (current_lm != minima_sorted.end() && bot_y == (*current_lm)->y) { initialize_lm(current_lm); auto& left_bound = (*current_lm)->left_bound; auto& right_bound = (*current_lm)->right_bound; insert_lm_left_and_right_bound(left_bound, right_bound, active_bounds, rings, scanbeam, cliptype, subject_fill_type, clip_fill_type); ++current_lm; } } template void insert_horizontal_local_minima_into_ABL(T const top_y, local_minimum_ptr_list const& minima_sorted, local_minimum_ptr_list_itr& current_lm, active_bound_list& active_bounds, ring_manager& rings, scanbeam_list& scanbeam, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { while (current_lm != minima_sorted.end() && top_y == (*current_lm)->y && (*current_lm)->minimum_has_horizontal) { initialize_lm(current_lm); auto& left_bound = (*current_lm)->left_bound; auto& right_bound = (*current_lm)->right_bound; insert_lm_left_and_right_bound(left_bound, right_bound, active_bounds, rings, scanbeam, cliptype, subject_fill_type, clip_fill_type); ++current_lm; } } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/almost_equal.hpp000066400000000000000000000232571360766232600237730ustar00rootroot00000000000000// Copyright 2005, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following disclaimer // in the documentation and/or other materials provided with the // distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) // // The Google C++ Testing Framework (Google Test) // This template class serves as a compile-time function from size to // type. It maps a size in bytes to a primitive type with that // size. e.g. // // TypeWithSize<4>::UInt // // is typedef-ed to be unsigned int (unsigned integer made up of 4 // bytes). // // Such functionality should belong to STL, but I cannot find it // there. // // Google Test uses this class in the implementation of floating-point // comparison. // // For now it only handles UInt (unsigned int) as that's all Google Test // needs. Other types can be easily added in the future if need // arises. namespace mapbox { namespace geometry { namespace wagyu { namespace util { template class TypeWithSize { public: // This prevents the user from using TypeWithSize with incorrect // values of N. typedef void UInt; }; // The specialization for size 4. template <> class TypeWithSize<4> { public: // unsigned int has size 4 in both gcc and MSVC. // // As base/basictypes.h doesn't compile on Windows, we cannot use // uint32, uint64, and etc here. typedef int Int; typedef unsigned int UInt; }; // The specialization for size 8. template <> class TypeWithSize<8> { public: #if GTEST_OS_WINDOWS typedef __int64 Int; typedef unsigned __int64 UInt; #else typedef long long Int; // NOLINT typedef unsigned long long UInt; // NOLINT #endif // GTEST_OS_WINDOWS }; // This template class represents an IEEE floating-point number // (either single-precision or double-precision, depending on the // template parameters). // // The purpose of this class is to do more sophisticated number // comparison. (Due to round-off error, etc, it's very unlikely that // two floating-points will be equal exactly. Hence a naive // comparison by the == operation often doesn't work.) // // Format of IEEE floating-point: // // The most-significant bit being the leftmost, an IEEE // floating-point looks like // // sign_bit exponent_bits fraction_bits // // Here, sign_bit is a single bit that designates the sign of the // number. // // For float, there are 8 exponent bits and 23 fraction bits. // // For double, there are 11 exponent bits and 52 fraction bits. // // More details can be found at // http://en.wikipedia.org/wiki/IEEE_floating-point_standard. // // Template parameter: // // RawType: the raw floating-point type (either float or double) template class FloatingPoint { public: // Defines the unsigned integer type that has the same size as the // floating point number. typedef typename TypeWithSize::UInt Bits; // Constants. // # of bits in a number. static const size_t kBitCount = 8 * sizeof(RawType); // # of fraction bits in a number. static const size_t kFractionBitCount = std::numeric_limits::digits - 1; // # of exponent bits in a number. static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount; // The mask for the sign bit. static const Bits kSignBitMask = static_cast(1) << (kBitCount - 1); // The mask for the fraction bits. static const Bits kFractionBitMask = ~static_cast(0) >> (kExponentBitCount + 1); // The mask for the exponent bits. static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask); // How many ULP's (Units in the Last Place) we want to tolerate when // comparing two numbers. The larger the value, the more error we // allow. A 0 value means that two numbers must be exactly the same // to be considered equal. // // The maximum error of a single floating-point operation is 0.5 // units in the last place. On Intel CPU's, all floating-point // calculations are done with 80-bit precision, while double has 64 // bits. Therefore, 4 should be enough for ordinary use. // // See the following article for more details on ULP: // http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm. static const size_t kMaxUlps = 4; // Constructs a FloatingPoint from a raw floating-point number. // // On an Intel CPU, passing a non-normalized NAN (Not a Number) // around may change its bits, although the new value is guaranteed // to be also a NAN. Therefore, don't expect this constructor to // preserve the bits in x when x is a NAN. explicit FloatingPoint(const RawType& x) : u_(x) { } // Static methods // Reinterprets a bit pattern as a floating-point number. // // This function is needed to test the AlmostEquals() method. static RawType ReinterpretBits(const Bits bits) { FloatingPoint fp(0); fp.u_.bits_ = bits; return fp.u_.value_; } // Returns the floating-point number that represent positive infinity. static RawType Infinity() { return ReinterpretBits(kExponentBitMask); } // Non-static methods // Returns the bits that represents this number. const Bits& bits() const { return u_.bits_; } // Returns the exponent bits of this number. Bits exponent_bits() const { return kExponentBitMask & u_.bits_; } // Returns the fraction bits of this number. Bits fraction_bits() const { return kFractionBitMask & u_.bits_; } // Returns the sign bit of this number. Bits sign_bit() const { return kSignBitMask & u_.bits_; } // Returns true iff this is NAN (not a number). bool is_nan() const { // It's a NAN if the exponent bits are all ones and the fraction // bits are not entirely zeros. return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0); } // Returns true iff this number is at most kMaxUlps ULP's away from // rhs. In particular, this function: // // - returns false if either number is (or both are) NAN. // - treats really large numbers as almost equal to infinity. // - thinks +0.0 and -0.0 are 0 DLP's apart. bool AlmostEquals(const FloatingPoint& rhs) const { // The IEEE standard says that any comparison operation involving // a NAN must return false. if (is_nan() || rhs.is_nan()) return false; return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) <= kMaxUlps; } private: // The data type used to store the actual floating-point number. union FloatingPointUnion { explicit FloatingPointUnion(RawType val) : value_(val) { } RawType value_; // The raw floating-point number. Bits bits_; // The bits that represent the number. }; // Converts an integer from the sign-and-magnitude representation to // the biased representation. More precisely, let N be 2 to the // power of (kBitCount - 1), an integer x is represented by the // unsigned number x + N. // // For instance, // // -N + 1 (the most negative number representable using // sign-and-magnitude) is represented by 1; // 0 is represented by N; and // N - 1 (the biggest number representable using // sign-and-magnitude) is represented by 2N - 1. // // Read http://en.wikipedia.org/wiki/Signed_number_representations // for more details on signed number representations. static Bits SignAndMagnitudeToBiased(const Bits& sam) { if (kSignBitMask & sam) { // sam represents a negative number. return ~sam + 1; } else { // sam represents a positive number. return kSignBitMask | sam; } } // Given two numbers in the sign-and-magnitude representation, // returns the distance between them as an unsigned number. static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits& sam1, const Bits& sam2) { const Bits biased1 = SignAndMagnitudeToBiased(sam1); const Bits biased2 = SignAndMagnitudeToBiased(sam2); return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1); } FloatingPointUnion u_; }; } // namespace util } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/bound.hpp000066400000000000000000000061561360766232600224130ustar00rootroot00000000000000#pragma once #include #include #include #include #include #ifdef DEBUG #include #endif namespace mapbox { namespace geometry { namespace wagyu { template struct bound { edge_list edges; edge_list_itr current_edge; edge_list_itr next_edge; mapbox::geometry::point last_point; ring_ptr ring; bound_ptr maximum_bound; // the bound who's maximum connects with this bound double current_x; std::size_t pos; std::int32_t winding_count; std::int32_t winding_count2; // winding count of the opposite polytype std::int8_t winding_delta; // 1 or -1 depending on winding direction - 0 for linestrings polygon_type poly_type; edge_side side; // side only refers to current side of solution poly bound() noexcept : edges(), current_edge(edges.end()), next_edge(edges.end()), last_point({ 0, 0 }), ring(nullptr), maximum_bound(nullptr), current_x(0.0), pos(0), winding_count(0), winding_count2(0), winding_delta(0), poly_type(polygon_type_subject), side(edge_left) { } bound(bound&& b) noexcept : edges(std::move(b.edges)), current_edge(std::move(b.current_edge)), next_edge(std::move(b.next_edge)), last_point(std::move(b.last_point)), ring(std::move(b.ring)), maximum_bound(std::move(b.maximum_bound)), current_x(std::move(b.current_x)), pos(std::move(b.pos)), winding_count(std::move(b.winding_count)), winding_count2(std::move(b.winding_count2)), winding_delta(std::move(b.winding_delta)), poly_type(std::move(b.poly_type)), side(std::move(b.side)) { } bound(bound const& b) = delete; bound& operator=(bound const&) = delete; }; #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, const bound& bnd) { out << " Bound: " << &bnd << std::endl; out << " current_x: " << bnd.current_x << std::endl; out << " last_point: " << bnd.last_point.x << ", " << bnd.last_point.y << std::endl; out << *(bnd.current_edge); out << " winding count: " << bnd.winding_count << std::endl; out << " winding_count2: " << bnd.winding_count2 << std::endl; out << " winding_delta: " << static_cast(bnd.winding_delta) << std::endl; out << " maximum_bound: " << bnd.maximum_bound << std::endl; if (bnd.side == edge_left) { out << " side: left" << std::endl; } else { out << " side: right" << std::endl; } out << " ring: " << bnd.ring << std::endl; if (bnd.ring) { out << " ring index: " << bnd.ring->ring_index << std::endl; } return out; } #endif } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/bubble_sort.hpp000066400000000000000000000012511360766232600235750ustar00rootroot00000000000000#pragma once namespace mapbox { namespace geometry { namespace wagyu { template void bubble_sort(It begin, It end, Compare c, MethodOnSwap m) { if (begin == end) { return; } bool modified = false; auto last = end - 1; do { modified = false; for (auto itr = begin; itr != last; ++itr) { auto next = std::next(itr); if (!c(*itr, *next)) { m(*itr, *next); std::iter_swap(itr, next); modified = true; } } } while (modified); } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/build_edges.hpp000066400000000000000000000133341360766232600235460ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template bool point_2_is_between_point_1_and_point_3(mapbox::geometry::point const& pt1, mapbox::geometry::point const& pt2, mapbox::geometry::point const& pt3) { if ((pt1 == pt3) || (pt1 == pt2) || (pt3 == pt2)) { return false; } else if (pt1.x != pt3.x) { return (pt2.x > pt1.x) == (pt2.x < pt3.x); } else { return (pt2.y > pt1.y) == (pt2.y < pt3.y); } } template bool build_edge_list(mapbox::geometry::linear_ring const& path_geometry, edge_list& edges) { if (path_geometry.size() < 3) { return false; } // As this is a loop, we need to first go backwards from end to try and find // the proper starting point for the iterators before the beginning auto itr_rev = path_geometry.rbegin(); auto itr = path_geometry.begin(); mapbox::geometry::point pt1 = *itr_rev; mapbox::geometry::point pt2 = *itr; // Find next non repeated point going backwards from // end for pt1 while (pt1 == pt2) { ++itr_rev; if (itr_rev == path_geometry.rend()) { return false; } pt1 = *itr_rev; } ++itr; mapbox::geometry::point pt3 = *itr; auto itr_last = itr_rev.base(); mapbox::geometry::point front_pt; mapbox::geometry::point back_pt; while (true) { if (pt3 == pt2) { // Duplicate point advance itr, but do not // advance other points if (itr == itr_last) { break; } ++itr; if (itr == itr_last) { if (edges.empty()) { break; } pt3 = front_pt; } else { pt3 = *itr; } continue; } // Now check if slopes are equal between two segments - either // a spike or a collinear point - if so drop point number 2. if (slopes_equal(pt1, pt2, pt3)) { // We need to reconsider previously added points // because the point it was using was found to be collinear // or a spike pt2 = pt1; if (!edges.empty()) { edges.pop_back(); // remove previous edge (pt1) } if (!edges.empty()) { auto const& back_top = edges.back().top; if (static_cast(back_pt.x) == back_top.x && static_cast(back_pt.y) == back_top.y) { auto const& back_bot = edges.back().bot; pt1 = mapbox::geometry::point(static_cast(back_bot.x), static_cast(back_bot.y)); } else { pt1 = mapbox::geometry::point(static_cast(back_top.x), static_cast(back_top.y)); } back_pt = pt1; } else { // If this occurs we must look to the back of the // ring for new points. while (*itr_rev == pt2) { ++itr_rev; if ((itr + 1) == itr_rev.base()) { return false; } } pt1 = *itr_rev; itr_last = itr_rev.base(); } continue; } if (edges.empty()) { front_pt = pt2; } edges.emplace_back(pt2, pt3); back_pt = pt2; if (itr == itr_last) { break; } pt1 = pt2; pt2 = pt3; ++itr; if (itr == itr_last) { if (edges.empty()) { break; } pt3 = front_pt; } else { pt3 = *itr; } } bool modified = false; do { modified = false; if (edges.size() < 3) { return false; } auto& f = edges.front(); auto& b = edges.back(); if (slopes_equal(f, b)) { if (f.bot == b.top) { if (f.top == b.bot) { edges.pop_back(); edges.erase(edges.begin()); } else { f.bot = b.bot; edges.pop_back(); } modified = true; } else if (f.top == b.bot) { f.top = b.top; edges.pop_back(); modified = true; } else if (f.top == b.top && f.bot == b.bot) { edges.pop_back(); edges.erase(edges.begin()); modified = true; } else if (f.top == b.top) { if (point_2_is_between_point_1_and_point_3(f.top, f.bot, b.bot)) { b.top = f.bot; edges.erase(edges.begin()); } else { f.top = b.bot; edges.pop_back(); } modified = true; } else if (f.bot == b.bot) { if (point_2_is_between_point_1_and_point_3(f.bot, f.top, b.top)) { b.bot = f.top; edges.erase(edges.begin()); } else { f.bot = b.top; edges.pop_back(); } modified = true; } } } while (modified); return true; } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/build_local_minima_list.hpp000066400000000000000000000014731360766232600261370ustar00rootroot00000000000000#pragma once #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template bool add_linear_ring(mapbox::geometry::linear_ring const& path_geometry, local_minimum_list& minima_list, polygon_type p_type) { edge_list new_edges; new_edges.reserve(path_geometry.size()); if (!build_edge_list(path_geometry, new_edges) || new_edges.empty()) { return false; } add_ring_to_local_minima_list(new_edges, minima_list, p_type); return true; } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/build_result.hpp000066400000000000000000000041271360766232600237750ustar00rootroot00000000000000#pragma once #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template void push_ring_to_polygon(mapbox::geometry::polygon& poly, ring_ptr r, bool reverse_output) { mapbox::geometry::linear_ring lr; lr.reserve(r->size() + 1); auto firstPt = r->points; auto ptIt = r->points; if (reverse_output) { do { lr.emplace_back(static_cast(ptIt->x), static_cast(ptIt->y)); ptIt = ptIt->next; } while (ptIt != firstPt); } else { do { lr.emplace_back(static_cast(ptIt->x), static_cast(ptIt->y)); ptIt = ptIt->prev; } while (ptIt != firstPt); } lr.emplace_back(firstPt->x, firstPt->y); // close the ring poly.push_back(lr); } template void build_result_polygons(mapbox::geometry::multi_polygon& solution, ring_vector const& rings, bool reverse_output) { for (auto r : rings) { if (r == nullptr) { continue; } assert(r->points); solution.emplace_back(); push_ring_to_polygon(solution.back(), r, reverse_output); for (auto c : r->children) { if (c == nullptr) { continue; } assert(c->points); push_ring_to_polygon(solution.back(), c, reverse_output); } for (auto c : r->children) { if (c == nullptr) { continue; } if (!c->children.empty()) { build_result_polygons(solution, c->children, reverse_output); } } } } template void build_result(mapbox::geometry::multi_polygon& solution, ring_manager const& rings, bool reverse_output) { build_result_polygons(solution, rings.children, reverse_output); } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/config.hpp000066400000000000000000000026741360766232600225520ustar00rootroot00000000000000#pragma once #include #include #include #include // GCC 4.8 missing range std::vector::insert (c++11) #ifdef __GNUC__ #if __GNUC__ == 4 && __GNUC_MINOR__ == 8 #define GCC_MISSING_VECTOR_RANGE_INSERT #endif #endif namespace mapbox { namespace geometry { namespace wagyu { enum clip_type : std::uint8_t { clip_type_intersection = 0, clip_type_union, clip_type_difference, clip_type_x_or }; enum polygon_type : std::uint8_t { polygon_type_subject = 0, polygon_type_clip }; enum fill_type : std::uint8_t { fill_type_even_odd = 0, fill_type_non_zero, fill_type_positive, fill_type_negative }; static double const def_arc_tolerance = 0.25; static int const EDGE_UNASSIGNED = -1; // edge not currently 'owning' a solution static int const EDGE_SKIP = -2; // edge that would otherwise close a path static std::int64_t const LOW_RANGE = 0x3FFFFFFF; static std::int64_t const HIGH_RANGE = 0x3FFFFFFFFFFFFFFFLL; enum horizontal_direction : std::uint8_t { right_to_left = 0, left_to_right = 1 }; enum edge_side : std::uint8_t { edge_left = 0, edge_right }; enum join_type : std::uint8_t { join_type_square = 0, join_type_round, join_type_miter }; enum end_type { end_type_closed_polygon = 0, end_type_closed_line, end_type_open_butt, end_type_open_square, end_type_open_round }; template using maxima_list = std::list; } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/edge.hpp000066400000000000000000000066201360766232600222040ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #ifdef DEBUG #include #endif namespace mapbox { namespace geometry { namespace wagyu { template struct bound; template using bound_ptr = bound*; template struct edge { mapbox::geometry::point bot; mapbox::geometry::point top; double dx; edge(edge&& e) noexcept : bot(std::move(e.bot)), top(std::move(e.top)), dx(std::move(e.dx)) { } edge& operator=(edge&& e) noexcept { bot = std::move(e.bot); top = std::move(e.top); dx = std::move(e.dx); return *this; } template edge(mapbox::geometry::point const& current, mapbox::geometry::point const& next_pt) noexcept : bot(static_cast(current.x), static_cast(current.y)), top(static_cast(current.x), static_cast(current.y)), dx(0.0) { if (current.y >= next_pt.y) { top = mapbox::geometry::point(static_cast(next_pt.x), static_cast(next_pt.y)); } else { bot = mapbox::geometry::point(static_cast(next_pt.x), static_cast(next_pt.y)); } double dy = static_cast(top.y - bot.y); if (value_is_zero(dy)) { dx = std::numeric_limits::infinity(); } else { dx = static_cast(top.x - bot.x) / dy; } } }; template using edge_ptr = edge*; template using edge_list = std::vector>; template using edge_list_itr = typename edge_list::iterator; template bool slopes_equal(edge const& e1, edge const& e2) { return static_cast(e1.top.y - e1.bot.y) * static_cast(e2.top.x - e2.bot.x) == static_cast(e1.top.x - e1.bot.x) * static_cast(e2.top.y - e2.bot.y); } template inline bool is_horizontal(edge const& e) { return std::isinf(e.dx); } template inline double get_current_x(edge const& edge, const T current_y) { if (current_y == edge.top.y) { return static_cast(edge.top.x); } else { return static_cast(edge.bot.x) + edge.dx * static_cast(current_y - edge.bot.y); } } #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, const edge& e) { out << " Edge: " << std::endl; out << " bot x: " << e.bot.x << " y: " << e.bot.y << std::endl; out << " top x: " << e.top.x << " y: " << e.top.y << std::endl; return out; } template inline std::basic_ostream& operator<<(std::basic_ostream& out, edge_list const& edges) { out << "["; bool first = true; for (auto const& e : edges) { if (first) { first = false; } else { out << ","; } out << "[[" << e.bot.x << "," << e.bot.y << "],["; out << e.top.x << "," << e.top.y << "]]"; } out << "]"; return out; } #endif } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/interrupt.hpp000066400000000000000000000020161360766232600233270ustar00rootroot00000000000000#pragma once /** * To enable this by the program, define USE_WAGYU_INTERRUPT before including wagyu.hpp * To request an interruption, call `interrupt_request()`. As soon as Wagyu detects the request * it will raise an exception (`std::runtime_error`). */ #ifdef USE_WAGYU_INTERRUPT namespace { thread_local bool WAGYU_INTERRUPT_REQUESTED = false; } namespace mapbox { namespace geometry { namespace wagyu { static void interrupt_reset(void) { WAGYU_INTERRUPT_REQUESTED = false; } static void interrupt_request(void) { WAGYU_INTERRUPT_REQUESTED = true; } static void interrupt_check(void) { if (WAGYU_INTERRUPT_REQUESTED) { interrupt_reset(); throw std::runtime_error("Wagyu interrupted"); } } } // namespace wagyu } // namespace geometry } // namespace mapbox #else /* ! USE_WAGYU_INTERRUPT */ namespace mapbox { namespace geometry { namespace wagyu { static void interrupt_check(void) { } } // namespace wagyu } // namespace geometry } // namespace mapbox #endif /* USE_WAGYU_INTERRUPT */ wagyu-0.5.0/include/mapbox/geometry/wagyu/intersect.hpp000066400000000000000000000035521360766232600233010ustar00rootroot00000000000000#pragma once #include #include #include #ifdef DEBUG #include #endif namespace mapbox { namespace geometry { namespace wagyu { template struct intersect_node { bound_ptr bound1; bound_ptr bound2; mapbox::geometry::point pt; intersect_node(intersect_node&& n) noexcept : bound1(std::move(n.bound1)), bound2(std::move(n.bound2)), pt(std::move(n.pt)) { } intersect_node& operator=(intersect_node&& n) noexcept { bound1 = std::move(n.bound1); bound2 = std::move(n.bound2); pt = std::move(n.pt); return *this; } intersect_node(bound_ptr const& bound1_, bound_ptr const& bound2_, mapbox::geometry::point const& pt_) : bound1(bound1_), bound2(bound2_), pt(pt_) { } }; template using intersect_list = std::vector>; #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, const intersect_node& e) { out << " point x: " << e.pt.x << " y: " << e.pt.y << std::endl; out << " bound 1: " << std::endl; out << *e.bound1 << std::endl; out << " bound 2: " << std::endl; out << *e.bound2 << std::endl; return out; } template inline std::basic_ostream& operator<<(std::basic_ostream& out, const intersect_list& ints) { std::size_t c = 0; for (auto const& i : ints) { out << "Intersection: " << c++ << std::endl; out << i; } return out; } #endif } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/intersect_util.hpp000066400000000000000000000306001360766232600243300ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template struct intersect_list_sorter { inline bool operator()(intersect_node const& node1, intersect_node const& node2) { if (!values_are_equal(node2.pt.y, node1.pt.y)) { return node2.pt.y < node1.pt.y; } else { return (node2.bound1->winding_count2 + node2.bound2->winding_count2) > (node1.bound1->winding_count2 + node1.bound2->winding_count2); } } }; template inline mapbox::geometry::point round_point(mapbox::geometry::point const& pt) { return mapbox::geometry::point(round_towards_max(pt.x), round_towards_max(pt.y)); } template inline void swap_rings(bound& b1, bound& b2) { ring_ptr ring = b1.ring; b1.ring = b2.ring; b2.ring = ring; } template inline void swap_sides(bound& b1, bound& b2) { edge_side side = b1.side; b1.side = b2.side; b2.side = side; } template bool get_edge_intersection(edge const& e1, edge const& e2, mapbox::geometry::point& pt) { T2 p0_x = static_cast(e1.bot.x); T2 p0_y = static_cast(e1.bot.y); T2 p1_x = static_cast(e1.top.x); T2 p1_y = static_cast(e1.top.y); T2 p2_x = static_cast(e2.bot.x); T2 p2_y = static_cast(e2.bot.y); T2 p3_x = static_cast(e2.top.x); T2 p3_y = static_cast(e2.top.y); T2 s1_x, s1_y, s2_x, s2_y; s1_x = p1_x - p0_x; s1_y = p1_y - p0_y; s2_x = p3_x - p2_x; s2_y = p3_y - p2_y; T2 s = (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) / (-s2_x * s1_y + s1_x * s2_y); T2 t = (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) / (-s2_x * s1_y + s1_x * s2_y); if (s >= 0.0 && s <= 1.0 && t >= 0.0 && t <= 1.0) { pt.x = p0_x + (t * s1_x); pt.y = p0_y + (t * s1_y); return true; } // LCOV_EXCL_START return false; // LCOV_EXCL_END } template struct intersection_compare { bool operator()(bound_ptr const& b1, bound_ptr const& b2) { return !(b1->current_x > b2->current_x && !slopes_equal(*(b1->current_edge), *(b2->current_edge))); } }; template struct on_intersection_swap { intersect_list& intersects; on_intersection_swap(intersect_list& i) : intersects(i) { } void operator()(bound_ptr const& b1, bound_ptr const& b2) { mapbox::geometry::point pt; if (!get_edge_intersection(*(b1->current_edge), *(b2->current_edge), pt)) { // LCOV_EXCL_START throw std::runtime_error("Trying to find intersection of lines that do not intersect"); // LCOV_EXCL_END } intersects.emplace_back(b1, b2, pt); } }; template void build_intersect_list(active_bound_list& active_bounds, intersect_list& intersects) { bubble_sort(active_bounds.begin(), active_bounds.end(), intersection_compare(), on_intersection_swap(intersects)); } template void intersect_bounds(bound& b1, bound& b2, mapbox::geometry::point const& pt, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type, ring_manager& rings, active_bound_list& active_bounds) { bool b1Contributing = (b1.ring != nullptr); bool b2Contributing = (b2.ring != nullptr); // update winding counts... // assumes that b1 will be to the Right of b2 ABOVE the intersection if (b1.poly_type == b2.poly_type) { if (is_even_odd_fill_type(b1, subject_fill_type, clip_fill_type)) { std::swap(b1.winding_count, b2.winding_count); } else { if (b1.winding_count + b2.winding_delta == 0) { b1.winding_count = -b1.winding_count; } else { b1.winding_count += b2.winding_delta; } if (b2.winding_count - b1.winding_delta == 0) { b2.winding_count = -b2.winding_count; } else { b2.winding_count -= b1.winding_delta; } } } else { if (!is_even_odd_fill_type(b2, subject_fill_type, clip_fill_type)) { b1.winding_count2 += b2.winding_delta; } else { b1.winding_count2 = (b1.winding_count2 == 0) ? 1 : 0; } if (!is_even_odd_fill_type(b1, subject_fill_type, clip_fill_type)) { b2.winding_count2 -= b1.winding_delta; } else { b2.winding_count2 = (b2.winding_count2 == 0) ? 1 : 0; } } fill_type b1FillType, b2FillType, b1FillType2, b2FillType2; if (b1.poly_type == polygon_type_subject) { b1FillType = subject_fill_type; b1FillType2 = clip_fill_type; } else { b1FillType = clip_fill_type; b1FillType2 = subject_fill_type; } if (b2.poly_type == polygon_type_subject) { b2FillType = subject_fill_type; b2FillType2 = clip_fill_type; } else { b2FillType = clip_fill_type; b2FillType2 = subject_fill_type; } std::int32_t b1Wc, b2Wc; switch (b1FillType) { case fill_type_positive: b1Wc = b1.winding_count; break; case fill_type_negative: b1Wc = -b1.winding_count; break; case fill_type_even_odd: case fill_type_non_zero: default: b1Wc = std::abs(static_cast(b1.winding_count)); } switch (b2FillType) { case fill_type_positive: b2Wc = b2.winding_count; break; case fill_type_negative: b2Wc = -b2.winding_count; break; case fill_type_even_odd: case fill_type_non_zero: default: b2Wc = std::abs(static_cast(b2.winding_count)); } if (b1Contributing && b2Contributing) { if ((b1Wc != 0 && b1Wc != 1) || (b2Wc != 0 && b2Wc != 1) || (b1.poly_type != b2.poly_type && cliptype != clip_type_x_or)) { add_local_maximum_point(b1, b2, pt, rings, active_bounds); } else { add_point(b1, active_bounds, pt, rings); add_point(b2, active_bounds, pt, rings); swap_sides(b1, b2); swap_rings(b1, b2); } } else if (b1Contributing) { if (b2Wc == 0 || b2Wc == 1) { add_point(b1, active_bounds, pt, rings); b2.last_point = pt; swap_sides(b1, b2); swap_rings(b1, b2); } } else if (b2Contributing) { if (b1Wc == 0 || b1Wc == 1) { b1.last_point = pt; add_point(b2, active_bounds, pt, rings); swap_sides(b1, b2); swap_rings(b1, b2); } } else if ((b1Wc == 0 || b1Wc == 1) && (b2Wc == 0 || b2Wc == 1)) { // neither bound is currently contributing ... std::int32_t b1Wc2, b2Wc2; switch (b1FillType2) { case fill_type_positive: b1Wc2 = b1.winding_count2; break; case fill_type_negative: b1Wc2 = -b1.winding_count2; break; case fill_type_even_odd: case fill_type_non_zero: default: b1Wc2 = std::abs(static_cast(b1.winding_count2)); } switch (b2FillType2) { case fill_type_positive: b2Wc2 = b2.winding_count2; break; case fill_type_negative: b2Wc2 = -b2.winding_count2; break; case fill_type_even_odd: case fill_type_non_zero: default: b2Wc2 = std::abs(static_cast(b2.winding_count2)); } if (b1.poly_type != b2.poly_type) { add_local_minimum_point(b1, b2, active_bounds, pt, rings); } else if (b1Wc == 1 && b2Wc == 1) { switch (cliptype) { case clip_type_intersection: if (b1Wc2 > 0 && b2Wc2 > 0) { add_local_minimum_point(b1, b2, active_bounds, pt, rings); } break; default: case clip_type_union: if (b1Wc2 <= 0 && b2Wc2 <= 0) { add_local_minimum_point(b1, b2, active_bounds, pt, rings); } break; case clip_type_difference: if (((b1.poly_type == polygon_type_clip) && (b1Wc2 > 0) && (b2Wc2 > 0)) || ((b1.poly_type == polygon_type_subject) && (b1Wc2 <= 0) && (b2Wc2 <= 0))) { add_local_minimum_point(b1, b2, active_bounds, pt, rings); } break; case clip_type_x_or: add_local_minimum_point(b1, b2, active_bounds, pt, rings); } } else { swap_sides(b1, b2); } } } template bool bounds_adjacent(intersect_node const& inode, bound_ptr next) { return (next == inode.bound2) || (next == inode.bound1); } template struct find_first_bound { bound_ptr b1; bound_ptr b2; find_first_bound(intersect_node const& inode) : b1(inode.bound1), b2(inode.bound2) { } bool operator()(bound_ptr const& b) { return b == b1 || b == b2; } }; template void process_intersect_list(intersect_list& intersects, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type, ring_manager& rings, active_bound_list& active_bounds) { for (auto node_itr = intersects.begin(); node_itr != intersects.end(); ++node_itr) { auto b1 = std::find_if(active_bounds.begin(), active_bounds.end(), find_first_bound(*node_itr)); auto b2 = std::next(b1); if (!bounds_adjacent(*node_itr, *b2)) { auto next_itr = std::next(node_itr); while (next_itr != intersects.end()) { auto n1 = std::find_if(active_bounds.begin(), active_bounds.end(), find_first_bound(*next_itr)); auto n2 = std::next(n1); if (bounds_adjacent(*next_itr, *n2)) { b1 = n1; b2 = n2; break; } ++next_itr; } if (next_itr == intersects.end()) { throw std::runtime_error("Could not properly correct intersection order."); } std::iter_swap(node_itr, next_itr); } mapbox::geometry::point pt = round_point(node_itr->pt); intersect_bounds(*(node_itr->bound1), *(node_itr->bound2), pt, cliptype, subject_fill_type, clip_fill_type, rings, active_bounds); std::iter_swap(b1, b2); } } template void update_current_x(active_bound_list& active_bounds, T top_y) { std::size_t pos = 0; for (auto& bnd : active_bounds) { bnd->pos = pos++; bnd->current_x = get_current_x(*bnd->current_edge, top_y); } } template void process_intersections(T top_y, active_bound_list& active_bounds, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type, ring_manager& rings) { if (active_bounds.empty()) { return; } update_current_x(active_bounds, top_y); intersect_list intersects; build_intersect_list(active_bounds, intersects); if (intersects.empty()) { return; } // Restore order of active bounds list std::stable_sort(active_bounds.begin(), active_bounds.end(), [](bound_ptr const& b1, bound_ptr const& b2) { return b1->pos < b2->pos; }); // Sort the intersection list std::stable_sort(intersects.begin(), intersects.end(), intersect_list_sorter()); process_intersect_list(intersects, cliptype, subject_fill_type, clip_fill_type, rings, active_bounds); } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/local_minimum.hpp000066400000000000000000000064111360766232600241230ustar00rootroot00000000000000#pragma once #ifdef DEBUG #include #include #endif #include #include namespace mapbox { namespace geometry { namespace wagyu { template struct local_minimum { bound left_bound; bound right_bound; T y; bool minimum_has_horizontal; local_minimum(bound&& left_bound_, bound&& right_bound_, T y_, bool has_horz_) : left_bound(std::move(left_bound_)), right_bound(std::move(right_bound_)), y(y_), minimum_has_horizontal(has_horz_) { } }; template using local_minimum_list = std::deque>; template using local_minimum_itr = typename local_minimum_list::iterator; template using local_minimum_ptr = local_minimum*; template using local_minimum_ptr_list = std::vector>; template using local_minimum_ptr_list_itr = typename local_minimum_ptr_list::iterator; template struct local_minimum_sorter { inline bool operator()(local_minimum_ptr const& locMin1, local_minimum_ptr const& locMin2) { if (locMin2->y == locMin1->y) { return locMin2->minimum_has_horizontal != locMin1->minimum_has_horizontal && locMin1->minimum_has_horizontal; } return locMin2->y < locMin1->y; } }; #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, const local_minimum& lm) { out << " Local Minimum:" << std::endl; out << " y: " << lm.y << std::endl; if (lm.minimum_has_horizontal) { out << " minimum_has_horizontal: true" << std::endl; } else { out << " minimum_has_horizontal: false" << std::endl; } out << " left_bound: " << std::endl; out << lm.left_bound << std::endl; out << " right_bound: " << std::endl; out << lm.right_bound << std::endl; return out; } template inline std::basic_ostream& operator<<(std::basic_ostream& out, const local_minimum_ptr_list& lms) { for (auto const& lm : lms) { out << *lm; } return out; } template std::string output_all_edges(local_minimum_ptr_list const& lms) { std::ostringstream out; out << "["; bool first = true; for (auto const& lm : lms) { for (auto const& e : lm->left_bound.edges) { if (first) { first = false; } else { out << ","; } out << "[[" << e.bot.x << "," << e.bot.y << "],["; out << e.top.x << "," << e.top.y << "]]"; } for (auto const& e : lm->right_bound.edges) { if (first) { first = false; } else { out << ","; } out << "[[" << e.bot.x << "," << e.bot.y << "],["; out << e.top.x << "," << e.top.y << "]]"; } } out << "]"; return out.str(); } #endif } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/local_minimum_util.hpp000066400000000000000000000276141360766232600251700ustar00rootroot00000000000000#pragma once #include #include #include #include #ifdef DEBUG #include #endif namespace mapbox { namespace geometry { namespace wagyu { template inline void reverse_horizontal(edge& e) { // swap horizontal edges' top and bottom x's so they follow the natural // progression of the bounds - ie so their xbots will align with the // adjoining lower edge. [Helpful in the process_horizontal() method.] std::swap(e.top.x, e.bot.x); } // Make a list start on a local maximum by // shifting all the points not on a local maximum to the template void start_list_on_local_maximum(edge_list& edges) { if (edges.size() <= 2) { return; } // Find the first local maximum going forward in the list auto prev_edge = edges.end(); --prev_edge; bool prev_edge_is_horizontal = is_horizontal(*prev_edge); auto edge = edges.begin(); bool edge_is_horizontal; bool y_decreasing_before_last_horizontal = false; // assume false at start while (edge != edges.end()) { edge_is_horizontal = is_horizontal(*edge); if ((!prev_edge_is_horizontal && !edge_is_horizontal && edge->top == prev_edge->top)) { break; } if (!edge_is_horizontal && prev_edge_is_horizontal) { if (y_decreasing_before_last_horizontal && (edge->top == prev_edge->bot || edge->top == prev_edge->top)) { break; } } else if (!y_decreasing_before_last_horizontal && !prev_edge_is_horizontal && edge_is_horizontal && (prev_edge->top == edge->top || prev_edge->top == edge->bot)) { y_decreasing_before_last_horizontal = true; } prev_edge_is_horizontal = edge_is_horizontal; prev_edge = edge; ++edge; } std::rotate(edges.begin(), edge, edges.end()); } template bound create_bound_towards_minimum(edge_list& edges) { if (edges.size() == 1) { if (is_horizontal(edges.front())) { reverse_horizontal(edges.front()); } bound bnd; std::swap(bnd.edges, edges); return bnd; } auto next_edge = edges.begin(); auto edge = next_edge; ++next_edge; bool edge_is_horizontal = is_horizontal(*edge); if (edge_is_horizontal) { reverse_horizontal(*edge); } bool next_edge_is_horizontal; bool y_increasing_before_last_horizontal = false; // assume false at start while (next_edge != edges.end()) { next_edge_is_horizontal = is_horizontal(*next_edge); if ((!next_edge_is_horizontal && !edge_is_horizontal && edge->bot == next_edge->bot)) { break; } if (!next_edge_is_horizontal && edge_is_horizontal) { if (y_increasing_before_last_horizontal && (next_edge->bot == edge->bot || next_edge->bot == edge->top)) { break; } } else if (!y_increasing_before_last_horizontal && !edge_is_horizontal && next_edge_is_horizontal && (edge->bot == next_edge->top || edge->bot == next_edge->bot)) { y_increasing_before_last_horizontal = true; } edge_is_horizontal = next_edge_is_horizontal; edge = next_edge; if (edge_is_horizontal) { reverse_horizontal(*edge); } ++next_edge; } bound bnd; if (next_edge == edges.end()) { std::swap(edges, bnd.edges); } else { bnd.edges.reserve(static_cast(std::distance(edges.begin(), next_edge))); std::move(edges.begin(), next_edge, std::back_inserter(bnd.edges)); edges.erase(edges.begin(), next_edge); } std::reverse(bnd.edges.begin(), bnd.edges.end()); return bnd; } template bound create_bound_towards_maximum(edge_list& edges) { if (edges.size() == 1) { bound bnd; std::swap(bnd.edges, edges); return bnd; } auto next_edge = edges.begin(); auto edge = next_edge; ++next_edge; bool edge_is_horizontal = is_horizontal(*edge); bool next_edge_is_horizontal; bool y_decreasing_before_last_horizontal = false; // assume false at start while (next_edge != edges.end()) { next_edge_is_horizontal = is_horizontal(*next_edge); if ((!next_edge_is_horizontal && !edge_is_horizontal && edge->top == next_edge->top)) { break; } if (!next_edge_is_horizontal && edge_is_horizontal) { if (y_decreasing_before_last_horizontal && (next_edge->top == edge->bot || next_edge->top == edge->top)) { break; } } else if (!y_decreasing_before_last_horizontal && !edge_is_horizontal && next_edge_is_horizontal && (edge->top == next_edge->top || edge->top == next_edge->bot)) { y_decreasing_before_last_horizontal = true; } edge_is_horizontal = next_edge_is_horizontal; edge = next_edge; ++next_edge; } bound bnd; if (next_edge == edges.end()) { std::swap(bnd.edges, edges); } else { bnd.edges.reserve(static_cast(std::distance(edges.begin(), next_edge))); std::move(edges.begin(), next_edge, std::back_inserter(bnd.edges)); edges.erase(edges.begin(), next_edge); } return bnd; } template void fix_horizontals(bound& bnd) { auto edge_itr = bnd.edges.begin(); auto next_itr = std::next(edge_itr); if (next_itr == bnd.edges.end()) { return; } if (is_horizontal(*edge_itr) && next_itr->bot != edge_itr->top) { reverse_horizontal(*edge_itr); } auto prev_itr = edge_itr++; while (edge_itr != bnd.edges.end()) { if (is_horizontal(*edge_itr) && prev_itr->top != edge_itr->bot) { reverse_horizontal(*edge_itr); } prev_itr = edge_itr; ++edge_itr; } } template void move_horizontals_on_left_to_right(bound& left_bound, bound& right_bound) { // We want all the horizontal segments that are at the same Y as the minimum to be on the right // bound auto edge_itr = left_bound.edges.begin(); while (edge_itr != left_bound.edges.end()) { if (!is_horizontal(*edge_itr)) { break; } reverse_horizontal(*edge_itr); ++edge_itr; } if (edge_itr == left_bound.edges.begin()) { return; } std::reverse(left_bound.edges.begin(), edge_itr); auto dist = std::distance(left_bound.edges.begin(), edge_itr); std::move(left_bound.edges.begin(), edge_itr, std::back_inserter(right_bound.edges)); left_bound.edges.erase(left_bound.edges.begin(), edge_itr); std::rotate(right_bound.edges.begin(), std::prev(right_bound.edges.end(), dist), right_bound.edges.end()); } template void add_ring_to_local_minima_list(edge_list& edges, local_minimum_list& minima_list, polygon_type poly_type) { if (edges.empty()) { return; } // Adjust the order of the ring so we start on a local maximum // therefore we start right away on a bound. start_list_on_local_maximum(edges); bound_ptr first_minimum = nullptr; bound_ptr last_maximum = nullptr; while (!edges.empty()) { interrupt_check(); // Check for interruptions bool lm_minimum_has_horizontal = false; auto to_minimum = create_bound_towards_minimum(edges); if (edges.empty()) { throw std::runtime_error("Edges is empty after only creating a single bound."); } auto to_maximum = create_bound_towards_maximum(edges); fix_horizontals(to_minimum); fix_horizontals(to_maximum); auto to_max_first_non_horizontal = to_maximum.edges.begin(); auto to_min_first_non_horizontal = to_minimum.edges.begin(); bool minimum_is_left = true; while (to_max_first_non_horizontal != to_maximum.edges.end() && is_horizontal(*to_max_first_non_horizontal)) { lm_minimum_has_horizontal = true; ++to_max_first_non_horizontal; } while (to_min_first_non_horizontal != to_minimum.edges.end() && is_horizontal(*to_min_first_non_horizontal)) { lm_minimum_has_horizontal = true; ++to_min_first_non_horizontal; } if (to_max_first_non_horizontal == to_maximum.edges.end() || to_min_first_non_horizontal == to_minimum.edges.end()) { throw std::runtime_error("should not have a horizontal only bound for a ring"); } if (lm_minimum_has_horizontal) { if (to_max_first_non_horizontal->bot.x > to_min_first_non_horizontal->bot.x) { minimum_is_left = true; move_horizontals_on_left_to_right(to_minimum, to_maximum); } else { minimum_is_left = false; move_horizontals_on_left_to_right(to_maximum, to_minimum); } } else { if (to_max_first_non_horizontal->dx > to_min_first_non_horizontal->dx) { minimum_is_left = false; } else { minimum_is_left = true; } } assert(!to_minimum.edges.empty()); assert(!to_maximum.edges.empty()); auto const& min_front = to_minimum.edges.front(); if (last_maximum) { to_minimum.maximum_bound = last_maximum; } to_minimum.poly_type = poly_type; to_maximum.poly_type = poly_type; if (!minimum_is_left) { to_minimum.side = edge_right; to_maximum.side = edge_left; to_minimum.winding_delta = -1; to_maximum.winding_delta = 1; minima_list.emplace_back(std::move(to_maximum), std::move(to_minimum), min_front.bot.y, lm_minimum_has_horizontal); if (!last_maximum) { first_minimum = &(minima_list.back().right_bound); } else { last_maximum->maximum_bound = &(minima_list.back().right_bound); } last_maximum = &(minima_list.back().left_bound); } else { to_minimum.side = edge_left; to_maximum.side = edge_right; to_minimum.winding_delta = -1; to_maximum.winding_delta = 1; minima_list.emplace_back(std::move(to_minimum), std::move(to_maximum), min_front.bot.y, lm_minimum_has_horizontal); if (!last_maximum) { first_minimum = &(minima_list.back().left_bound); } else { last_maximum->maximum_bound = &(minima_list.back().left_bound); } last_maximum = &(minima_list.back().right_bound); } } last_maximum->maximum_bound = first_minimum; first_minimum->maximum_bound = last_maximum; } template void initialize_lm(local_minimum_ptr_list_itr& lm) { if (!(*lm)->left_bound.edges.empty()) { (*lm)->left_bound.current_edge = (*lm)->left_bound.edges.begin(); (*lm)->left_bound.next_edge = std::next((*lm)->left_bound.current_edge); (*lm)->left_bound.current_x = static_cast((*lm)->left_bound.current_edge->bot.x); (*lm)->left_bound.winding_count = 0; (*lm)->left_bound.winding_count2 = 0; (*lm)->left_bound.side = edge_left; (*lm)->left_bound.ring = nullptr; } if (!(*lm)->right_bound.edges.empty()) { (*lm)->right_bound.current_edge = (*lm)->right_bound.edges.begin(); (*lm)->right_bound.next_edge = std::next((*lm)->right_bound.current_edge); (*lm)->right_bound.current_x = static_cast((*lm)->right_bound.current_edge->bot.x); (*lm)->right_bound.winding_count = 0; (*lm)->right_bound.winding_count2 = 0; (*lm)->right_bound.side = edge_right; (*lm)->right_bound.ring = nullptr; } } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/point.hpp000066400000000000000000000053671360766232600224400ustar00rootroot00000000000000#pragma once #include #ifdef DEBUG #include #endif namespace mapbox { namespace geometry { namespace wagyu { template struct point; template using point_ptr = point*; template using const_point_ptr = point* const; template struct ring; template using ring_ptr = ring*; template using const_ring_ptr = ring* const; template struct point { using coordinate_type = T; ring_ptr ring; T x; T y; point_ptr next; point_ptr prev; point() : ring(nullptr), x(0), y(0), prev(this), next(this) { } point(T x_, T y_) : ring(nullptr), x(x_), y(y_), next(this), prev(this) { } point(ring_ptr ring_, mapbox::geometry::point const& pt) : ring(ring_), x(pt.x), y(pt.y), next(this), prev(this) { } point(ring_ptr ring_, mapbox::geometry::point const& pt, point_ptr before_this_point) : ring(ring_), x(pt.x), y(pt.y), next(before_this_point), prev(before_this_point->prev) { before_this_point->prev = this; prev->next = this; } }; template using point_vector = std::vector>; template using point_vector_itr = typename point_vector::iterator; template bool operator==(point const& lhs, point const& rhs) { return lhs.x == rhs.x && lhs.y == rhs.y; } template bool operator==(mapbox::geometry::point const& lhs, point const& rhs) { return lhs.x == rhs.x && lhs.y == rhs.y; } template bool operator==(point const& lhs, mapbox::geometry::point const& rhs) { return lhs.x == rhs.x && lhs.y == rhs.y; } template bool operator!=(point const& lhs, point const& rhs) { return lhs.x != rhs.x || lhs.y != rhs.y; } template bool operator!=(mapbox::geometry::point const& lhs, point const& rhs) { return lhs.x != rhs.x || lhs.y != rhs.y; } template bool operator!=(point const& lhs, mapbox::geometry::point const& rhs) { return lhs.x != rhs.x || lhs.y != rhs.y; } #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, const point& p) { out << " point at: " << p.x << ", " << p.y; return out; } template inline std::basic_ostream& operator<<(std::basic_ostream& out, const mapbox::geometry::point& p) { out << " point at: " << p.x << ", " << p.y; return out; } #endif } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/process_horizontal.hpp000066400000000000000000000260361360766232600252320ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template active_bound_list_itr process_horizontal_left_to_right(T scanline_y, active_bound_list_itr& horz_bound, active_bound_list& active_bounds, ring_manager& rings, scanbeam_list& scanbeam, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { auto horizontal_itr_behind = horz_bound; bool shifted = false; bool is_maxima_edge = is_maxima(horz_bound, scanline_y); auto bound_max_pair = active_bounds.end(); if (is_maxima_edge) { bound_max_pair = get_maxima_pair(horz_bound, active_bounds); } auto hp_itr = rings.current_hp_itr; while (hp_itr != rings.hot_pixels.end() && (hp_itr->y > scanline_y || (hp_itr->y == scanline_y && hp_itr->x < (*horz_bound)->current_edge->bot.x))) { ++hp_itr; } auto bnd = std::next(horz_bound); while (bnd != active_bounds.end()) { if (*bnd == nullptr) { ++bnd; continue; } // this code block inserts extra coords into horizontal edges (in output // polygons) wherever hot pixels touch these horizontal edges. This helps //'simplifying' polygons (ie if the Simplify property is set). while (hp_itr != rings.hot_pixels.end() && hp_itr->y == scanline_y && hp_itr->x < wround((*bnd)->current_x) && hp_itr->x < (*horz_bound)->current_edge->top.x) { if ((*horz_bound)->ring) { add_point_to_ring(*(*horz_bound), *hp_itr, rings); } ++hp_itr; } if (greater_than((*bnd)->current_x, static_cast((*horz_bound)->current_edge->top.x))) { break; } // Also break if we've got to the end of an intermediate horizontal edge ... // nb: Smaller Dx's are to the right of larger Dx's ABOVE the horizontal. if (wround((*bnd)->current_x) == (*horz_bound)->current_edge->top.x && (*horz_bound)->next_edge != (*horz_bound)->edges.end() && (*horz_bound)->current_edge->dx < (*horz_bound)->next_edge->dx) { break; } // note: may be done multiple times if ((*horz_bound)->ring) { add_point_to_ring(*(*horz_bound), mapbox::geometry::point(wround((*bnd)->current_x), scanline_y), rings); } // OK, so far we're still in range of the horizontal Edge but make sure // we're at the last of consec. horizontals when matching with eMaxPair if (is_maxima_edge && bnd == bound_max_pair) { if ((*horz_bound)->ring && (*bound_max_pair)->ring) { add_local_maximum_point(*(*horz_bound), *(*bound_max_pair), (*horz_bound)->current_edge->top, rings, active_bounds); } *bound_max_pair = nullptr; *horz_bound = nullptr; if (!shifted) { ++horizontal_itr_behind; } return horizontal_itr_behind; } intersect_bounds(*(*horz_bound), *(*bnd), mapbox::geometry::point(wround((*bnd)->current_x), scanline_y), cliptype, subject_fill_type, clip_fill_type, rings, active_bounds); std::iter_swap(horz_bound, bnd); horz_bound = bnd; ++bnd; shifted = true; } // end while (bnd != active_bounds.end()) if ((*horz_bound)->ring) { while (hp_itr != rings.hot_pixels.end() && hp_itr->y == scanline_y && hp_itr->x < (*horz_bound)->current_edge->top.x) { add_point_to_ring(*(*horz_bound), *hp_itr, rings); ++hp_itr; } } if ((*horz_bound)->ring) { add_point_to_ring(*(*horz_bound), (*horz_bound)->current_edge->top, rings); } if ((*horz_bound)->next_edge != (*horz_bound)->edges.end()) { next_edge_in_bound(*(*horz_bound), scanbeam); } else { *horz_bound = nullptr; } if (!shifted) { ++horizontal_itr_behind; } return horizontal_itr_behind; } template active_bound_list_itr process_horizontal_right_to_left(T scanline_y, active_bound_list_itr& horz_bound_fwd, active_bound_list& active_bounds, ring_manager& rings, scanbeam_list& scanbeam, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { auto next_bnd_itr = std::next(horz_bound_fwd); bool is_maxima_edge = is_maxima(horz_bound_fwd, scanline_y); auto bound_max_pair = active_bounds.rend(); if (is_maxima_edge) { bound_max_pair = active_bound_list_rev_itr(get_maxima_pair(horz_bound_fwd, active_bounds)); --bound_max_pair; } auto hp_itr_fwd = rings.current_hp_itr; while (hp_itr_fwd != rings.hot_pixels.end() && (hp_itr_fwd->y < scanline_y || (hp_itr_fwd->y == scanline_y && hp_itr_fwd->x < (*horz_bound_fwd)->current_edge->top.x))) { ++hp_itr_fwd; } auto hp_itr = hot_pixel_rev_itr(hp_itr_fwd); auto bnd = active_bound_list_rev_itr(horz_bound_fwd); auto horz_bound = std::prev(bnd); while (bnd != active_bounds.rend()) { if (*bnd == nullptr) { ++bnd; continue; } // this code block inserts extra coords into horizontal edges (in output // polygons) wherever hot pixels touch these horizontal edges. while (hp_itr != rings.hot_pixels.rend() && hp_itr->y == scanline_y && hp_itr->x > wround((*bnd)->current_x) && hp_itr->x > (*horz_bound)->current_edge->top.x) { if ((*horz_bound)->ring) { add_point_to_ring(*(*horz_bound), *hp_itr, rings); } ++hp_itr; } if (less_than((*bnd)->current_x, static_cast((*horz_bound)->current_edge->top.x))) { break; } // Also break if we've got to the end of an intermediate horizontal edge ... // nb: Smaller Dx's are to the right of larger Dx's ABOVE the horizontal. if (wround((*bnd)->current_x) == (*horz_bound)->current_edge->top.x && (*horz_bound)->next_edge != (*horz_bound)->edges.end() && (*horz_bound)->current_edge->dx < (*horz_bound)->next_edge->dx) { break; } // note: may be done multiple times if ((*horz_bound)->ring) { add_point_to_ring(*(*horz_bound), mapbox::geometry::point(wround((*bnd)->current_x), scanline_y), rings); } // OK, so far we're still in range of the horizontal Edge but make sure // we're at the last of consec. horizontals when matching with eMaxPair if (is_maxima_edge && bnd == bound_max_pair) { if ((*horz_bound)->ring && (*bound_max_pair)->ring) { add_local_maximum_point(*(*horz_bound), *(*bound_max_pair), (*horz_bound)->current_edge->top, rings, active_bounds); } *bound_max_pair = nullptr; *horz_bound = nullptr; return next_bnd_itr; } intersect_bounds(*(*bnd), *(*horz_bound), mapbox::geometry::point(wround((*bnd)->current_x), scanline_y), cliptype, subject_fill_type, clip_fill_type, rings, active_bounds); std::iter_swap(horz_bound, bnd); horz_bound = bnd; ++bnd; } // end while (bnd != active_bounds.rend()) if ((*horz_bound)->ring) { while (hp_itr != rings.hot_pixels.rend() && hp_itr->y == scanline_y && hp_itr->x > (*horz_bound)->current_edge->top.x) { add_point_to_ring(*(*horz_bound), *hp_itr, rings); ++hp_itr; } } if ((*horz_bound)->ring) { add_point_to_ring(*(*horz_bound), (*horz_bound)->current_edge->top, rings); } if ((*horz_bound)->next_edge != (*horz_bound)->edges.end()) { next_edge_in_bound(*(*horz_bound), scanbeam); } else { *horz_bound = nullptr; } return next_bnd_itr; } template active_bound_list_itr process_horizontal(T scanline_y, active_bound_list_itr& horz_bound, active_bound_list& active_bounds, ring_manager& rings, scanbeam_list& scanbeam, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { if ((*horz_bound)->current_edge->bot.x < (*horz_bound)->current_edge->top.x) { return process_horizontal_left_to_right(scanline_y, horz_bound, active_bounds, rings, scanbeam, cliptype, subject_fill_type, clip_fill_type); } else { return process_horizontal_right_to_left(scanline_y, horz_bound, active_bounds, rings, scanbeam, cliptype, subject_fill_type, clip_fill_type); } } template void process_horizontals(T scanline_y, active_bound_list& active_bounds, ring_manager& rings, scanbeam_list& scanbeam, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { for (auto bnd_itr = active_bounds.begin(); bnd_itr != active_bounds.end();) { if (*bnd_itr != nullptr && current_edge_is_horizontal(bnd_itr)) { bnd_itr = process_horizontal(scanline_y, bnd_itr, active_bounds, rings, scanbeam, cliptype, subject_fill_type, clip_fill_type); } else { ++bnd_itr; } } active_bounds.erase(std::remove(active_bounds.begin(), active_bounds.end(), nullptr), active_bounds.end()); } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/process_maxima.hpp000066400000000000000000000116161360766232600243130ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template active_bound_list_itr do_maxima(active_bound_list_itr& bnd, active_bound_list_itr& bndMaxPair, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type, ring_manager& manager, active_bound_list& active_bounds) { auto bnd_next = std::next(bnd); auto return_bnd = bnd; bool skipped = false; while (bnd_next != active_bounds.end() && bnd_next != bndMaxPair) { if (*bnd_next == nullptr) { ++bnd_next; continue; } skipped = true; intersect_bounds(*(*bnd), *(*bnd_next), (*bnd)->current_edge->top, cliptype, subject_fill_type, clip_fill_type, manager, active_bounds); std::iter_swap(bnd, bnd_next); bnd = bnd_next; ++bnd_next; } if ((*bnd)->ring && (*bndMaxPair)->ring) { add_local_maximum_point(*(*bnd), *(*bndMaxPair), (*bnd)->current_edge->top, manager, active_bounds); } else if ((*bnd)->ring || (*bndMaxPair)->ring) { throw std::runtime_error("DoMaxima error"); } *bndMaxPair = nullptr; *bnd = nullptr; if (!skipped) { ++return_bnd; } return return_bnd; } template void process_edges_at_top_of_scanbeam(T top_y, active_bound_list& active_bounds, scanbeam_list& scanbeam, local_minimum_ptr_list const& minima_sorted, local_minimum_ptr_list_itr& current_lm, ring_manager& manager, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { for (auto bnd = active_bounds.begin(); bnd != active_bounds.end();) { interrupt_check(); // Check for interruptions if (*bnd == nullptr) { ++bnd; continue; } // 1. Process maxima, treating them as if they are "bent" horizontal edges, // but exclude maxima with horizontal edges. bool is_maxima_edge = is_maxima(bnd, top_y); if (is_maxima_edge) { auto bnd_max_pair = get_maxima_pair(bnd, active_bounds); is_maxima_edge = ((bnd_max_pair == active_bounds.end() || !current_edge_is_horizontal(bnd_max_pair)) && is_maxima(bnd_max_pair, top_y)); if (is_maxima_edge) { bnd = do_maxima(bnd, bnd_max_pair, cliptype, subject_fill_type, clip_fill_type, manager, active_bounds); continue; } } // 2. Promote horizontal edges. if (is_intermediate(bnd, top_y) && next_edge_is_horizontal(bnd)) { if ((*bnd)->ring) { insert_hot_pixels_in_path(*(*bnd), (*bnd)->current_edge->top, manager, false); } next_edge_in_bound(*(*bnd), scanbeam); if ((*bnd)->ring) { add_point_to_ring(*(*bnd), (*bnd)->current_edge->bot, manager); } } else { (*bnd)->current_x = get_current_x(*((*bnd)->current_edge), top_y); } ++bnd; } active_bounds.erase(std::remove(active_bounds.begin(), active_bounds.end(), nullptr), active_bounds.end()); insert_horizontal_local_minima_into_ABL(top_y, minima_sorted, current_lm, active_bounds, manager, scanbeam, cliptype, subject_fill_type, clip_fill_type); process_horizontals(top_y, active_bounds, manager, scanbeam, cliptype, subject_fill_type, clip_fill_type); // 4. Promote intermediate vertices for (auto bnd = active_bounds.begin(); bnd != active_bounds.end(); ++bnd) { if (is_intermediate(bnd, top_y)) { if ((*bnd)->ring) { add_point_to_ring(*(*bnd), (*bnd)->current_edge->top, manager); } next_edge_in_bound(*(*bnd), scanbeam); } } } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/quick_clip.hpp000066400000000000000000000116261360766232600234250ustar00rootroot00000000000000#pragma once #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { namespace quick_clip { template mapbox::geometry::point intersect(mapbox::geometry::point a, mapbox::geometry::point b, size_t edge, mapbox::geometry::box const& box) { switch (edge) { case 0: return mapbox::geometry::point( mapbox::geometry::wagyu::wround(static_cast(a.x) + static_cast(b.x - a.x) * static_cast(box.min.y - a.y) / static_cast(b.y - a.y)), box.min.y); case 1: return mapbox::geometry::point( box.max.x, mapbox::geometry::wagyu::wround(static_cast(a.y) + static_cast(b.y - a.y) * static_cast(box.max.x - a.x) / static_cast(b.x - a.x))); case 2: return mapbox::geometry::point( mapbox::geometry::wagyu::wround(static_cast(a.x) + static_cast(b.x - a.x) * static_cast(box.max.y - a.y) / static_cast(b.y - a.y)), box.max.y); default: // case 3 return mapbox::geometry::point( box.min.x, mapbox::geometry::wagyu::wround(static_cast(a.y) + static_cast(b.y - a.y) * static_cast(box.min.x - a.x) / static_cast(b.x - a.x))); } } template bool inside(mapbox::geometry::point p, size_t edge, mapbox::geometry::box const& b) { switch (edge) { case 0: return p.y > b.min.y; case 1: return p.x < b.max.x; case 2: return p.y < b.max.y; default: // case 3 return p.x > b.min.x; } } template mapbox::geometry::linear_ring quick_lr_clip(mapbox::geometry::linear_ring const& ring, mapbox::geometry::box const& b) { mapbox::geometry::linear_ring out = ring; for (size_t edge = 0; edge < 4; edge++) { if (out.size() > 0) { mapbox::geometry::linear_ring in = out; mapbox::geometry::point S = in[in.size() - 1]; out.resize(0); for (size_t e = 0; e < in.size(); e++) { mapbox::geometry::point E = in[e]; if (inside(E, edge, b)) { if (!inside(S, edge, b)) { out.push_back(intersect(S, E, edge, b)); } out.push_back(E); } else if (inside(S, edge, b)) { out.push_back(intersect(S, E, edge, b)); } S = E; } } } if (out.size() < 3) { out.clear(); return out; } // Close the ring if the first/last point was outside if (out[0] != out[out.size() - 1]) { out.push_back(out[0]); } return out; } } // namespace quick_clip template mapbox::geometry::multi_polygon clip(mapbox::geometry::polygon const& poly, mapbox::geometry::box const& b, fill_type subject_fill_type) { mapbox::geometry::multi_polygon result; wagyu clipper; for (auto const& lr : poly) { auto new_lr = quick_clip::quick_lr_clip(lr, b); if (!new_lr.empty()) { clipper.add_ring(new_lr, polygon_type_subject); } } clipper.execute(clip_type_union, result, subject_fill_type, fill_type_even_odd); return result; } template mapbox::geometry::multi_polygon clip(mapbox::geometry::multi_polygon const& mp, mapbox::geometry::box const& b, fill_type subject_fill_type) { mapbox::geometry::multi_polygon result; wagyu clipper; for (auto const& poly : mp) { for (auto const& lr : poly) { auto new_lr = quick_clip::quick_lr_clip(lr, b); if (!new_lr.empty()) { clipper.add_ring(new_lr, polygon_type_subject); } } } clipper.execute(clip_type_union, result, subject_fill_type, fill_type_even_odd); return result; } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/ring.hpp000066400000000000000000000443171360766232600222440ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include #include #include #include #ifdef DEBUG #include #include #include #include // // void* callstack[128]; // int i, frames = backtrace(callstack, 128); // char** strs = backtrace_symbols(callstack, frames); // for (i = 0; i < frames; ++i) { // printf("%s\n", strs[i]); // } // free(strs); #endif namespace mapbox { namespace geometry { namespace wagyu { template double area_from_point(point_ptr op, std::size_t& size, mapbox::geometry::box& bbox) { point_ptr startOp = op; size = 0; double a = 0.0; T min_x = op->x; T max_x = op->x; T min_y = op->y; T max_y = op->y; do { ++size; if (op->x > max_x) { max_x = op->x; } else if (op->x < min_x) { min_x = op->x; } if (op->y > max_y) { max_y = op->y; } else if (op->y < min_y) { min_y = op->y; } a += static_cast(op->prev->x + op->x) * static_cast(op->prev->y - op->y); op = op->next; } while (op != startOp); bbox.min.x = min_x; bbox.max.x = max_x; bbox.min.y = min_y; bbox.max.y = max_y; return a * 0.5; } // NOTE: ring and ring_ptr are forward declared in wagyu/point.hpp template using ring_vector = std::vector>; template struct ring { std::size_t ring_index; // To support unset 0 is undefined and indexes offset by 1 std::size_t size_; // number of points in the ring double area_; // area of the ring mapbox::geometry::box bbox; // bounding box of the ring ring_ptr parent; ring_vector children; point_ptr points; point_ptr bottom_point; bool is_hole_; bool corrected; ring(ring const&) = delete; ring& operator=(ring const&) = delete; ring() : ring_index(0), size_(0), area_(std::numeric_limits::quiet_NaN()), bbox({ 0, 0 }, { 0, 0 }), parent(nullptr), children(), points(nullptr), bottom_point(nullptr), is_hole_(false), corrected(false) { } void reset_stats() { area_ = std::numeric_limits::quiet_NaN(); is_hole_ = false; bbox.min.x = 0; bbox.min.y = 0; bbox.max.x = 0; bbox.max.y = 0; size_ = 0; } void recalculate_stats() { if (points != nullptr) { area_ = area_from_point(points, size_, bbox); is_hole_ = !(area_ > 0.0); } } void set_stats(double a, std::size_t s, mapbox::geometry::box const& b) { bbox = b; area_ = a; size_ = s; is_hole_ = !(area_ > 0.0); } double area() { if (std::isnan(area_)) { recalculate_stats(); } return area_; } bool is_hole() { if (std::isnan(area_)) { recalculate_stats(); } return is_hole_; } std::size_t size() { if (std::isnan(area_)) { recalculate_stats(); } return size_; } }; template using hot_pixel_vector = std::vector>; template using hot_pixel_itr = typename hot_pixel_vector::iterator; template using hot_pixel_rev_itr = typename hot_pixel_vector::reverse_iterator; template struct ring_manager { ring_vector children; point_vector all_points; hot_pixel_vector hot_pixels; hot_pixel_itr current_hp_itr; std::deque> points; std::deque> rings; std::vector> storage; std::size_t index; ring_manager(ring_manager const&) = delete; ring_manager& operator=(ring_manager const&) = delete; ring_manager() : children(), all_points(), hot_pixels(), current_hp_itr(hot_pixels.end()), points(), rings(), storage(), index(0) { } }; template void preallocate_point_memory(ring_manager& rings, std::size_t size) { rings.storage.reserve(size); rings.all_points.reserve(size); } template ring_ptr create_new_ring(ring_manager& manager) { manager.rings.emplace_back(); ring_ptr result = &manager.rings.back(); result->ring_index = manager.index++; return result; } template point_ptr create_new_point(ring_ptr r, mapbox::geometry::point const& pt, ring_manager& rings) { point_ptr point; if (rings.storage.size() < rings.storage.capacity()) { rings.storage.emplace_back(r, pt); point = &rings.storage.back(); } else { rings.points.emplace_back(r, pt); point = &rings.points.back(); } rings.all_points.push_back(point); return point; } template point_ptr create_new_point(ring_ptr r, mapbox::geometry::point const& pt, point_ptr before_this_point, ring_manager& rings) { point_ptr point; if (rings.storage.size() < rings.storage.capacity()) { rings.storage.emplace_back(r, pt, before_this_point); point = &rings.storage.back(); } else { rings.points.emplace_back(r, pt, before_this_point); point = &rings.points.back(); } rings.all_points.push_back(point); return point; } template void set_to_children(ring_ptr r, ring_vector& children) { for (auto& c : children) { if (c == nullptr) { c = r; return; } } children.push_back(r); } template void remove_from_children(ring_ptr r, ring_vector& children) { for (auto& c : children) { if (c == r) { c = nullptr; return; } } } template void assign_as_child(ring_ptr new_ring, ring_ptr parent, ring_manager& manager) { // Assigning as a child assumes that this is // a brand new ring. Therefore it does // not have any existing relationships if ((parent == nullptr && new_ring->is_hole()) || (parent != nullptr && new_ring->is_hole() == parent->is_hole())) { throw std::runtime_error("Trying to assign a child that is the same orientation as the parent"); } auto& children = parent == nullptr ? manager.children : parent->children; set_to_children(new_ring, children); new_ring->parent = parent; } template void reassign_as_child(ring_ptr ring, ring_ptr parent, ring_manager& manager) { // Reassigning a ring assumes it already // has an existing parent if ((parent == nullptr && ring->is_hole()) || (parent != nullptr && ring->is_hole() == parent->is_hole())) { throw std::runtime_error("Trying to re-assign a child that is the same orientation as the parent"); } // Remove the old child relationship auto& old_children = ring->parent == nullptr ? manager.children : ring->parent->children; remove_from_children(ring, old_children); // Add new child relationship auto& children = parent == nullptr ? manager.children : parent->children; set_to_children(ring, children); ring->parent = parent; } template void assign_as_sibling(ring_ptr new_ring, ring_ptr sibling, ring_manager& manager) { // Assigning as a sibling assumes that this is // a brand new ring. Therefore it does // not have any existing relationships if (new_ring->is_hole() != sibling->is_hole()) { throw std::runtime_error("Trying to assign to be a sibling that is not the same orientation as the sibling"); } auto& children = sibling->parent == nullptr ? manager.children : sibling->parent->children; set_to_children(new_ring, children); new_ring->parent = sibling->parent; } template void reassign_as_sibling(ring_ptr ring, ring_ptr sibling, ring_manager& manager) { if (ring->parent == sibling->parent) { return; } // Assigning as a sibling assumes that this is // a brand new ring. Therefore it does // not have any existing relationships if (ring->is_hole() != sibling->is_hole()) { throw std::runtime_error("Trying to assign to be a sibling that is not the same orientation as the sibling"); } // Remove the old child relationship auto& old_children = ring->parent == nullptr ? manager.children : ring->parent->children; remove_from_children(ring, old_children); // Add new relationship auto& children = sibling->parent == nullptr ? manager.children : sibling->parent->children; set_to_children(ring, children); ring->parent = sibling->parent; } template void ring1_replaces_ring2(ring_ptr ring1, ring_ptr ring2, ring_manager& manager) { assert(ring1 != ring2); auto& ring1_children = ring1 == nullptr ? manager.children : ring1->children; for (auto& c : ring2->children) { if (c == nullptr) { continue; } c->parent = ring1; set_to_children(c, ring1_children); c = nullptr; } // Remove the old child relationship auto& old_children = ring2->parent == nullptr ? manager.children : ring2->parent->children; remove_from_children(ring2, old_children); ring2->points = nullptr; ring2->reset_stats(); } template void remove_points(point_ptr pt) { if (pt != nullptr) { pt->prev->next = nullptr; while (pt != nullptr) { point_ptr tmp = pt; pt = pt->next; tmp->next = nullptr; tmp->prev = nullptr; tmp->ring = nullptr; } } } template void remove_ring_and_points(ring_ptr r, ring_manager& manager, bool remove_children = true, bool remove_from_parent = true) { // Removes a ring and any children that might be // under that ring. for (auto& c : r->children) { if (c == nullptr) { continue; } if (remove_children) { remove_ring_and_points(c, manager, true, false); } c = nullptr; } if (remove_from_parent) { // Remove the old child relationship auto& old_children = r->parent == nullptr ? manager.children : r->parent->children; remove_from_children(r, old_children); } point_ptr pt = r->points; if (pt != nullptr) { pt->prev->next = nullptr; while (pt != nullptr) { point_ptr tmp = pt; pt = pt->next; tmp->next = nullptr; tmp->prev = nullptr; tmp->ring = nullptr; } } r->points = nullptr; r->reset_stats(); } template void remove_ring(ring_ptr r, ring_manager& manager, bool remove_children = true, bool remove_from_parent = true) { // Removes a ring and any children that might be // under that ring. for (auto& c : r->children) { if (c == nullptr) { continue; } if (remove_children) { remove_ring(c, manager, true, false); } c = nullptr; } if (remove_from_parent) { // Remove the old child relationship auto& old_children = r->parent == nullptr ? manager.children : r->parent->children; remove_from_children(r, old_children); } r->points = nullptr; r->reset_stats(); } template inline std::size_t ring_depth(ring_ptr r) { std::size_t depth = 0; if (!r) { return depth; } while (r->parent) { depth++; r = r->parent; } return depth; } template inline bool ring_is_hole(ring_ptr r) { // This is different then the "normal" way of determing if // a ring is a hole or not because it uses the depth of the // the ring to determine if it is a hole or not. This is only done // intially when rings are output from Vatti. return ring_depth(r) & 1; } template void set_next(const_point_ptr& node, const const_point_ptr& next_node) { node->next = next_node; } template point_ptr get_next(const_point_ptr& node) { return node->next; } template point_ptr get_prev(const_point_ptr& node) { return node->prev; } template void set_prev(const_point_ptr& node, const const_point_ptr& prev_node) { node->prev = prev_node; } template void init(const_point_ptr& node) { set_next(node, node); set_prev(node, node); } template void link_before(point_ptr& node, point_ptr& new_node) { point_ptr prev_node = get_prev(node); set_prev(new_node, prev_node); set_next(new_node, node); set_prev(node, new_node); set_next(prev_node, new_node); } template void link_after(point_ptr& node, point_ptr& new_node) { point_ptr next_node = get_next(node); set_prev(new_node, node); set_next(new_node, next_node); set_next(node, new_node); set_prev(next_node, new_node); } template void transfer_point(point_ptr& p, point_ptr& b, point_ptr& e) { if (b != e) { point_ptr prev_p = get_prev(p); point_ptr prev_b = get_prev(b); point_ptr prev_e = get_prev(e); set_next(prev_e, p); set_prev(p, prev_e); set_next(prev_b, e); set_prev(e, prev_b); set_next(prev_p, b); set_prev(b, prev_p); } else { link_before(p, b); } } template void reverse_ring(point_ptr pp) { if (!pp) { return; } point_ptr pp1; point_ptr pp2; pp1 = pp; do { pp2 = pp1->next; pp1->next = pp1->prev; pp1->prev = pp2; pp1 = pp2; } while (pp1 != pp); } #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, ring& r) { out << " ring_index: " << r.ring_index << std::endl; if (!r.parent) { // out << " parent_ring ptr: nullptr" << std::endl; out << " parent_index: -----" << std::endl; } else { // out << " parent_ring ptr: " << r.parent << std::endl; out << " parent_ring idx: " << r.parent->ring_index << std::endl; } ring_ptr n = const_cast>(&r); if (ring_is_hole(n)) { out << " is_hole: true " << std::endl; } else { out << " is_hole: false " << std::endl; } auto pt_itr = r.points; if (pt_itr) { out << " area: " << r.area() << std::endl; out << " points:" << std::endl; out << " [[[" << pt_itr->x << "," << pt_itr->y << "],"; pt_itr = pt_itr->next; while (pt_itr != r.points) { out << "[" << pt_itr->x << "," << pt_itr->y << "],"; pt_itr = pt_itr->next; } out << "[" << pt_itr->x << "," << pt_itr->y << "]]]" << std::endl; } else { out << " area: NONE" << std::endl; out << " points: NONE" << std::endl; } return out; } template std::string debug_ring_addresses(ring_ptr r) { std::ostringstream out; out << "Ring: " << r->ring_index << std::endl; if (r->points == nullptr) { out << " Ring has no points" << std::endl; return out.str(); } auto pt_itr = r->points; do { out << " [" << pt_itr->x << "," << pt_itr->y << "] - " << pt_itr << std::endl; pt_itr = pt_itr->next; } while (pt_itr != r->points); return out.str(); } template std::string output_as_polygon(ring_ptr r) { std::ostringstream out; auto pt_itr = r->points; if (pt_itr) { out << "["; out << "[[" << pt_itr->x << "," << pt_itr->y << "],"; pt_itr = pt_itr->next; while (pt_itr != r->points) { out << "[" << pt_itr->x << "," << pt_itr->y << "],"; pt_itr = pt_itr->next; } out << "[" << pt_itr->x << "," << pt_itr->y << "]]"; for (auto const& c : r->children) { if (c == nullptr) { continue; } pt_itr = c->points; if (pt_itr) { out << ",[[" << pt_itr->x << "," << pt_itr->y << "],"; pt_itr = pt_itr->next; while (pt_itr != c->points) { out << "[" << pt_itr->x << "," << pt_itr->y << "],"; pt_itr = pt_itr->next; } out << "[" << pt_itr->x << "," << pt_itr->y << "]]"; } } out << "]" << std::endl; } else { out << "[]" << std::endl; } return out.str(); } template inline std::basic_ostream& operator<<(std::basic_ostream& out, ring_vector& rings) { out << "START RING VECTOR" << std::endl; for (auto& r : rings) { if (r == nullptr || !r->points) { continue; } out << " ring: " << r->ring_index << " - " << r << std::endl; out << *r; } out << "END RING VECTOR" << std::endl; return out; } template inline std::basic_ostream& operator<<(std::basic_ostream& out, std::deque>& rings) { out << "START RING VECTOR" << std::endl; for (auto& r : rings) { if (!r.points) { continue; } out << " ring: " << r.ring_index << std::endl; out << r; } out << "END RING VECTOR" << std::endl; return out; } template inline std::basic_ostream& operator<<(std::basic_ostream& out, hot_pixel_vector& hp_vec) { out << "Hot Pixels: " << std::endl; for (auto& hp : hp_vec) { out << hp << std::endl; } return out; } #endif } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/ring_util.hpp000066400000000000000000000662731360766232600233060ustar00rootroot00000000000000#pragma once #ifdef DEBUG #include // Example debug print for backtrace - only works on IOS #include #include // // void* callstack[128]; // int i, frames = backtrace(callstack, 128); // char** strs = backtrace_symbols(callstack, frames); // for (i = 0; i < frames; ++i) { // printf("%s\n", strs[i]); // } // free(strs); #endif #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template void set_hole_state(bound& bnd, active_bound_list const& active_bounds, ring_manager& rings) { auto bnd_itr = std::find(active_bounds.rbegin(), active_bounds.rend(), &bnd); ++bnd_itr; bound_ptr bndTmp = nullptr; // Find first non line ring to the left of current bound. while (bnd_itr != active_bounds.rend()) { if (*bnd_itr == nullptr) { ++bnd_itr; continue; } if ((*bnd_itr)->ring) { if (!bndTmp) { bndTmp = (*bnd_itr); } else if (bndTmp->ring == (*bnd_itr)->ring) { bndTmp = nullptr; } } ++bnd_itr; } if (!bndTmp) { bnd.ring->parent = nullptr; rings.children.push_back(bnd.ring); } else { bnd.ring->parent = bndTmp->ring; bndTmp->ring->children.push_back(bnd.ring); } } template void update_current_hp_itr(T scanline_y, ring_manager& rings) { while (rings.current_hp_itr->y > scanline_y) { ++rings.current_hp_itr; } } template struct hot_pixel_sorter { inline bool operator()(mapbox::geometry::point const& pt1, mapbox::geometry::point const& pt2) { if (pt1.y == pt2.y) { return pt1.x < pt2.x; } else { return pt1.y > pt2.y; } } }; template T round_towards_min(double val) { // 0.5 rounds to 0 // 0.0 rounds to 0 // -0.5 rounds to -1 double half = std::floor(val) + 0.5; if (values_are_equal(val, half)) { return static_cast(std::floor(val)); } else { return static_cast(std::llround(val)); } } template T round_towards_max(double val) { // 0.5 rounds to 1 // 0.0 rounds to 0 // -0.5 rounds to 0 double half = std::floor(val) + 0.5; if (values_are_equal(val, half)) { return static_cast(std::ceil(val)); } else { return static_cast(std::llround(val)); } } template inline T get_edge_min_x(edge const& edge, const T current_y) { if (is_horizontal(edge)) { if (edge.bot.x < edge.top.x) { return edge.bot.x; } else { return edge.top.x; } } else if (edge.dx > 0.0) { if (current_y == edge.top.y) { return edge.top.x; } else { double lower_range_y = static_cast(current_y - edge.bot.y) - 0.5; double return_val = static_cast(edge.bot.x) + edge.dx * lower_range_y; T value = round_towards_min(return_val); return value; } } else { if (current_y == edge.bot.y) { return edge.bot.x; } else { double return_val = static_cast(edge.bot.x) + edge.dx * (static_cast(current_y - edge.bot.y) + 0.5); T value = round_towards_min(return_val); return value; } } } template inline T get_edge_max_x(edge const& edge, const T current_y) { if (is_horizontal(edge)) { if (edge.bot.x > edge.top.x) { return edge.bot.x; } else { return edge.top.x; } } else if (edge.dx < 0.0) { if (current_y == edge.top.y) { return edge.top.x; } else { double lower_range_y = static_cast(current_y - edge.bot.y) - 0.5; double return_val = static_cast(edge.bot.x) + edge.dx * lower_range_y; T value = round_towards_max(return_val); return value; } } else { if (current_y == edge.bot.y) { return edge.bot.x; } else { double return_val = static_cast(edge.bot.x) + edge.dx * (static_cast(current_y - edge.bot.y) + 0.5); T value = round_towards_max(return_val); return value; } } } template void hot_pixel_set_left_to_right(T y, T start_x, T end_x, bound& bnd, ring_manager& rings, hot_pixel_itr& itr, hot_pixel_itr& end, bool add_end_point) { T x_min = get_edge_min_x(*(bnd.current_edge), y); x_min = std::max(x_min, start_x); T x_max = get_edge_max_x(*(bnd.current_edge), y); x_max = std::min(x_max, end_x); for (; itr != end; ++itr) { if (itr->x < x_min) { continue; } if (itr->x > x_max) { break; } if (!add_end_point && itr->x == end_x) { continue; } point_ptr op = bnd.ring->points; bool to_front = (bnd.side == edge_left); if (to_front && (*itr == *op)) { continue; } else if (!to_front && (*itr == *op->prev)) { continue; } point_ptr new_point = create_new_point(bnd.ring, *itr, op, rings); if (to_front) { bnd.ring->points = new_point; } } } template void hot_pixel_set_right_to_left(T y, T start_x, T end_x, bound& bnd, ring_manager& rings, hot_pixel_rev_itr& itr, hot_pixel_rev_itr& end, bool add_end_point) { T x_min = get_edge_min_x(*(bnd.current_edge), y); x_min = std::max(x_min, end_x); T x_max = get_edge_max_x(*(bnd.current_edge), y); x_max = std::min(x_max, start_x); for (; itr != end; ++itr) { if (itr->x > x_max) { continue; } if (itr->x < x_min) { break; } if (!add_end_point && itr->x == end_x) { continue; } point_ptr op = bnd.ring->points; bool to_front = (bnd.side == edge_left); if (to_front && (*itr == *op)) { continue; } else if (!to_front && (*itr == *op->prev)) { continue; } point_ptr new_point = create_new_point(bnd.ring, *itr, op, rings); if (to_front) { bnd.ring->points = new_point; } } } template void sort_hot_pixels(ring_manager& rings) { std::sort(rings.hot_pixels.begin(), rings.hot_pixels.end(), hot_pixel_sorter()); auto last = std::unique(rings.hot_pixels.begin(), rings.hot_pixels.end()); rings.hot_pixels.erase(last, rings.hot_pixels.end()); } template void insert_hot_pixels_in_path(bound& bnd, mapbox::geometry::point const& end_pt, ring_manager& rings, bool add_end_point) { if (end_pt == bnd.last_point) { return; } T start_y = bnd.last_point.y; T start_x = bnd.last_point.x; T end_y = end_pt.y; T end_x = end_pt.x; auto itr = rings.current_hp_itr; while (itr->y <= start_y && itr != rings.hot_pixels.begin()) { --itr; } if (start_x > end_x) { for (; itr != rings.hot_pixels.end();) { if (itr->y > start_y) { ++itr; continue; } if (itr->y < end_y) { break; } T y = itr->y; auto last_itr = hot_pixel_rev_itr(itr); while (itr != rings.hot_pixels.end() && itr->y == y) { ++itr; } auto first_itr = hot_pixel_rev_itr(itr); bool add_end_point_itr = (y != end_pt.y || add_end_point); hot_pixel_set_right_to_left(y, start_x, end_x, bnd, rings, first_itr, last_itr, add_end_point_itr); } } else { for (; itr != rings.hot_pixels.end();) { if (itr->y > start_y) { ++itr; continue; } if (itr->y < end_y) { break; } T y = itr->y; auto first_itr = itr; while (itr != rings.hot_pixels.end() && itr->y == y) { ++itr; } auto last_itr = itr; bool add_end_point_itr = (y != end_pt.y || add_end_point); hot_pixel_set_left_to_right(y, start_x, end_x, bnd, rings, first_itr, last_itr, add_end_point_itr); } } bnd.last_point = end_pt; } template void add_to_hot_pixels(mapbox::geometry::point const& pt, ring_manager& rings) { rings.hot_pixels.push_back(pt); } template void add_first_point(bound& bnd, active_bound_list& active_bounds, mapbox::geometry::point const& pt, ring_manager& rings) { ring_ptr r = create_new_ring(rings); bnd.ring = r; r->points = create_new_point(r, pt, rings); set_hole_state(bnd, active_bounds, rings); bnd.last_point = pt; } template void add_point_to_ring(bound& bnd, mapbox::geometry::point const& pt, ring_manager& rings) { assert(bnd.ring); // Handle hot pixels insert_hot_pixels_in_path(bnd, pt, rings, false); // bnd.ring->points is the 'Left-most' point & bnd.ring->points->prev is the // 'Right-most' point_ptr op = bnd.ring->points; bool to_front = (bnd.side == edge_left); if (to_front && (pt == *op)) { return; } else if (!to_front && (pt == *op->prev)) { return; } point_ptr new_point = create_new_point(bnd.ring, pt, bnd.ring->points, rings); if (to_front) { bnd.ring->points = new_point; } } template void add_point(bound& bnd, active_bound_list& active_bounds, mapbox::geometry::point const& pt, ring_manager& rings) { if (bnd.ring == nullptr) { add_first_point(bnd, active_bounds, pt, rings); } else { add_point_to_ring(bnd, pt, rings); } } template void add_local_minimum_point(bound& b1, bound& b2, active_bound_list& active_bounds, mapbox::geometry::point const& pt, ring_manager& rings) { if (is_horizontal(*b2.current_edge) || (b1.current_edge->dx > b2.current_edge->dx)) { add_point(b1, active_bounds, pt, rings); b2.last_point = pt; b2.ring = b1.ring; b1.side = edge_left; b2.side = edge_right; } else { add_point(b2, active_bounds, pt, rings); b1.last_point = pt; b1.ring = b2.ring; b1.side = edge_right; b2.side = edge_left; } } template inline double get_dx(point const& pt1, point const& pt2) { if (pt1.y == pt2.y) { return std::numeric_limits::infinity(); } else { return static_cast(pt2.x - pt1.x) / static_cast(pt2.y - pt1.y); } } template bool first_is_bottom_point(const_point_ptr btmPt1, const_point_ptr btmPt2) { point_ptr p = btmPt1->prev; while ((*p == *btmPt1) && (p != btmPt1)) { p = p->prev; } double dx1p = std::fabs(get_dx(*btmPt1, *p)); p = btmPt1->next; while ((*p == *btmPt1) && (p != btmPt1)) { p = p->next; } double dx1n = std::fabs(get_dx(*btmPt1, *p)); p = btmPt2->prev; while ((*p == *btmPt2) && (p != btmPt2)) { p = p->prev; } double dx2p = std::fabs(get_dx(*btmPt2, *p)); p = btmPt2->next; while ((*p == *btmPt2) && (p != btmPt2)) { p = p->next; } double dx2n = std::fabs(get_dx(*btmPt2, *p)); if (values_are_equal(std::max(dx1p, dx1n), std::max(dx2p, dx2n)) && values_are_equal(std::min(dx1p, dx1n), std::min(dx2p, dx2n))) { std::size_t s = 0; mapbox::geometry::box bbox({ 0, 0 }, { 0, 0 }); return area_from_point(btmPt1, s, bbox) > 0.0; // if otherwise identical use orientation } else { return (greater_than_or_equal(dx1p, dx2p) && greater_than_or_equal(dx1p, dx2n)) || (greater_than_or_equal(dx1n, dx2p) && greater_than_or_equal(dx1n, dx2n)); } } template point_ptr get_bottom_point(point_ptr pp) { point_ptr dups = nullptr; point_ptr p = pp->next; while (p != pp) { if (p->y > pp->y) { pp = p; dups = nullptr; } else if (p->y == pp->y && p->x <= pp->x) { if (p->x < pp->x) { dups = nullptr; pp = p; } else { if (p->next != pp && p->prev != pp) { dups = p; } } } p = p->next; } if (dups) { // there appears to be at least 2 vertices at bottom_point so ... while (dups != p) { if (!first_is_bottom_point(p, dups)) { pp = dups; } dups = dups->next; while (*dups != *pp) { dups = dups->next; } } } return pp; } template ring_ptr get_lower_most_ring(ring_ptr ring1, ring_ptr ring2) { // work out which polygon fragment has the correct hole state ... if (!ring1->bottom_point) { ring1->bottom_point = get_bottom_point(ring1->points); } if (!ring2->bottom_point) { ring2->bottom_point = get_bottom_point(ring2->points); } point_ptr pt1 = ring1->bottom_point; point_ptr pt2 = ring2->bottom_point; if (pt1->y > pt2->y) { return ring1; } else if (pt1->y < pt2->y) { return ring2; } else if (pt1->x < pt2->x) { return ring1; } else if (pt1->x > pt2->x) { return ring2; } else if (pt1->next == pt1) { return ring2; } else if (pt2->next == pt2) { return ring1; } else if (first_is_bottom_point(pt1, pt2)) { return ring1; } else { return ring2; } } template bool ring1_child_below_ring2(ring_ptr ring1, ring_ptr ring2) { do { ring1 = ring1->parent; if (ring1 == ring2) { return true; } } while (ring1); return false; } template void update_points_ring(ring_ptr ring) { point_ptr op = ring->points; do { op->ring = ring; op = op->prev; } while (op != ring->points); } template void append_ring(bound& b1, bound& b2, active_bound_list& active_bounds, ring_manager& manager) { // get the start and ends of both output polygons ... ring_ptr outRec1 = b1.ring; ring_ptr outRec2 = b2.ring; ring_ptr keep_ring; bound_ptr keep_bound; ring_ptr remove_ring; bound_ptr remove_bound; if (ring1_child_below_ring2(outRec1, outRec2)) { keep_ring = outRec2; keep_bound = &b2; remove_ring = outRec1; remove_bound = &b1; } else if (ring1_child_below_ring2(outRec2, outRec1)) { keep_ring = outRec1; keep_bound = &b1; remove_ring = outRec2; remove_bound = &b2; } else if (outRec1 == get_lower_most_ring(outRec1, outRec2)) { keep_ring = outRec1; keep_bound = &b1; remove_ring = outRec2; remove_bound = &b2; } else { keep_ring = outRec2; keep_bound = &b2; remove_ring = outRec1; remove_bound = &b1; } // get the start and ends of both output polygons and // join b2 poly onto b1 poly and delete pointers to b2 ... point_ptr p1_lft = keep_ring->points; point_ptr p1_rt = p1_lft->prev; point_ptr p2_lft = remove_ring->points; point_ptr p2_rt = p2_lft->prev; // join b2 poly onto b1 poly and delete pointers to b2 ... if (keep_bound->side == edge_left) { if (remove_bound->side == edge_left) { // z y x a b c reverse_ring(p2_lft); p2_lft->next = p1_lft; p1_lft->prev = p2_lft; p1_rt->next = p2_rt; p2_rt->prev = p1_rt; keep_ring->points = p2_rt; } else { // x y z a b c p2_rt->next = p1_lft; p1_lft->prev = p2_rt; p2_lft->prev = p1_rt; p1_rt->next = p2_lft; keep_ring->points = p2_lft; } } else { if (remove_bound->side == edge_right) { // a b c z y x reverse_ring(p2_lft); p1_rt->next = p2_rt; p2_rt->prev = p1_rt; p2_lft->next = p1_lft; p1_lft->prev = p2_lft; } else { // a b c x y z p1_rt->next = p2_lft; p2_lft->prev = p1_rt; p1_lft->prev = p2_rt; p2_rt->next = p1_lft; } } keep_ring->bottom_point = nullptr; bool keep_is_hole = ring_is_hole(keep_ring); bool remove_is_hole = ring_is_hole(remove_ring); remove_ring->points = nullptr; remove_ring->bottom_point = nullptr; if (keep_is_hole != remove_is_hole) { ring1_replaces_ring2(keep_ring->parent, remove_ring, manager); } else { ring1_replaces_ring2(keep_ring, remove_ring, manager); } update_points_ring(keep_ring); // nb: safe because we only get here via AddLocalMaxPoly keep_bound->ring = nullptr; remove_bound->ring = nullptr; for (auto& b : active_bounds) { if (b == nullptr) { continue; } if (b->ring == remove_ring) { b->ring = keep_ring; b->side = keep_bound->side; break; // Not sure why there is a break here but was transfered logic from angus } } } template void add_local_maximum_point(bound& b1, bound& b2, mapbox::geometry::point const& pt, ring_manager& rings, active_bound_list& active_bounds) { insert_hot_pixels_in_path(b2, pt, rings, false); add_point(b1, active_bounds, pt, rings); if (b1.ring == b2.ring) { b1.ring = nullptr; b2.ring = nullptr; // I am not certain that order is important here? } else if (b1.ring->ring_index < b2.ring->ring_index) { append_ring(b1, b2, active_bounds, rings); } else { append_ring(b2, b1, active_bounds, rings); } } enum point_in_polygon_result : std::int8_t { point_on_polygon = -1, point_inside_polygon = 0, point_outside_polygon = 1 }; template point_in_polygon_result point_in_polygon(point const& pt, point_ptr op) { // returns 0 if false, +1 if true, -1 if pt ON polygon boundary point_in_polygon_result result = point_outside_polygon; point_ptr startOp = op; do { if (op->next->y == pt.y) { if ((op->next->x == pt.x) || (op->y == pt.y && ((op->next->x > pt.x) == (op->x < pt.x)))) { return point_on_polygon; } } if ((op->y < pt.y) != (op->next->y < pt.y)) { if (op->x >= pt.x) { if (op->next->x > pt.x) { // Switch between point outside polygon and point inside // polygon if (result == point_outside_polygon) { result = point_inside_polygon; } else { result = point_outside_polygon; } } else { double d = static_cast(op->x - pt.x) * static_cast(op->next->y - pt.y) - static_cast(op->next->x - pt.x) * static_cast(op->y - pt.y); if (value_is_zero(d)) { return point_on_polygon; } if ((d > 0) == (op->next->y > op->y)) { // Switch between point outside polygon and point inside // polygon if (result == point_outside_polygon) { result = point_inside_polygon; } else { result = point_outside_polygon; } } } } else { if (op->next->x > pt.x) { double d = static_cast(op->x - pt.x) * static_cast(op->next->y - pt.y) - static_cast(op->next->x - pt.x) * static_cast(op->y - pt.y); if (value_is_zero(d)) { return point_on_polygon; } if ((d > 0) == (op->next->y > op->y)) { // Switch between point outside polygon and point inside // polygon if (result == point_outside_polygon) { result = point_inside_polygon; } else { result = point_outside_polygon; } } } } } op = op->next; } while (startOp != op); return result; } template point_in_polygon_result point_in_polygon(mapbox::geometry::point const& pt, point_ptr op) { // returns 0 if false, +1 if true, -1 if pt ON polygon boundary point_in_polygon_result result = point_outside_polygon; point_ptr startOp = op; do { double op_x = static_cast(op->x); double op_y = static_cast(op->y); double op_next_x = static_cast(op->next->x); double op_next_y = static_cast(op->next->y); if (values_are_equal(op_next_y, pt.y)) { if (values_are_equal(op_next_x, pt.x) || (values_are_equal(op_y, pt.y) && ((op_next_x > pt.x) == (op_x < pt.x)))) { return point_on_polygon; } } if ((op_y < pt.y) != (op_next_y < pt.y)) { if (greater_than_or_equal(op_x, pt.x)) { if (op_next_x > pt.x) { // Switch between point outside polygon and point inside // polygon if (result == point_outside_polygon) { result = point_inside_polygon; } else { result = point_outside_polygon; } } else { double d = (op_x - pt.x) * (op_next_y - pt.y) - (op_next_x - pt.x) * (op_y - pt.y); if (value_is_zero(d)) { return point_on_polygon; } if ((d > 0.0) == (op_next_y > op_y)) { // Switch between point outside polygon and point inside // polygon if (result == point_outside_polygon) { result = point_inside_polygon; } else { result = point_outside_polygon; } } } } else { if (op_next_x > pt.x) { double d = (op_x - pt.x) * (op_next_y - pt.y) - (op_next_x - pt.x) * (op_y - pt.y); if (value_is_zero(d)) { return point_on_polygon; } if ((d > 0.0) == (op_next_y > op_y)) { // Switch between point outside polygon and point inside // polygon if (result == point_outside_polygon) { result = point_inside_polygon; } else { result = point_outside_polygon; } } } } } op = op->next; } while (startOp != op); return result; } template bool is_convex(point_ptr edge) { point_ptr prev = edge->prev; point_ptr next = edge->next; T v1x = edge->x - prev->x; T v1y = edge->y - prev->y; T v2x = next->x - edge->x; T v2y = next->y - edge->y; T cross = v1x * v2y - v2x * v1y; if (cross < 0 && edge->ring->area() > 0) { return true; } else if (cross > 0 && edge->ring->area() < 0) { return true; } else { return false; } } template mapbox::geometry::point centroid_of_points(point_ptr edge) { point_ptr prev = edge->prev; point_ptr next = edge->next; return { static_cast(prev->x + edge->x + next->x) / 3.0, static_cast(prev->y + edge->y + next->y) / 3.0 }; } template point_in_polygon_result inside_or_outside_special(point_ptr first_pt, point_ptr other_poly) { // We are going to loop through all the points // of the original triangle. The goal is to find a convex edge // that with its next and previous forms a triangle with its centroid // that is within the first ring. Then we will check the other polygon // to see if it is within this polygon. point_ptr itr = first_pt; do { if (is_convex(itr)) { auto pt = centroid_of_points(itr); if (point_inside_polygon == point_in_polygon(pt, first_pt)) { return point_in_polygon(pt, other_poly); } } itr = itr->next; } while (itr != first_pt); throw std::runtime_error("Could not find a point within the polygon to test"); } template bool box2_contains_box1(mapbox::geometry::box const& box1, mapbox::geometry::box const& box2) { return (box2.max.x >= box1.max.x && box2.max.y >= box1.max.y && box2.min.x <= box1.min.x && box2.min.y <= box1.min.y); } template bool poly2_contains_poly1(ring_ptr ring1, ring_ptr ring2) { if (!box2_contains_box1(ring1->bbox, ring2->bbox)) { return false; } if (std::fabs(ring2->area()) < std::fabs(ring1->area())) { return false; } point_ptr outpt1 = ring1->points->next; point_ptr outpt2 = ring2->points->next; point_ptr op = outpt1; do { // nb: PointInPolygon returns 0 if false, +1 if true, -1 if pt on polygon point_in_polygon_result res = point_in_polygon(*op, outpt2); if (res != point_on_polygon) { return res == point_inside_polygon; } op = op->next; } while (op != outpt1); point_in_polygon_result res = inside_or_outside_special(outpt1, outpt2); return res == point_inside_polygon; } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/scanbeam.hpp000066400000000000000000000021251360766232600230450ustar00rootroot00000000000000#pragma once #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template using scanbeam_list = std::vector; template void insert_sorted_scanbeam(scanbeam_list& scanbeam, T& t) { typename scanbeam_list::iterator i = std::lower_bound(scanbeam.begin(), scanbeam.end(), t); if (i == scanbeam.end() || t < *i) { scanbeam.insert(i, t); } } template bool pop_from_scanbeam(T& Y, scanbeam_list& scanbeam) { if (scanbeam.empty()) { return false; } Y = scanbeam.back(); scanbeam.pop_back(); return true; } template void setup_scanbeam(local_minimum_list& minima_list, scanbeam_list& scanbeam) { scanbeam.reserve(minima_list.size()); for (auto lm = minima_list.begin(); lm != minima_list.end(); ++lm) { scanbeam.push_back(lm->y); } std::sort(scanbeam.begin(), scanbeam.end()); } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/snap_rounding.hpp000066400000000000000000000171741360766232600241540ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template struct hp_intersection_swap { ring_manager& manager; hp_intersection_swap(ring_manager& m) : manager(m) { } void operator()(bound_ptr const& b1, bound_ptr const& b2) { mapbox::geometry::point pt; if (!get_edge_intersection(*(b1->current_edge), *(b2->current_edge), pt)) { // LCOV_EXCL_START throw std::runtime_error("Trying to find intersection of lines that do not intersect"); // LCOV_EXCL_END } add_to_hot_pixels(round_point(pt), manager); } }; template void process_hot_pixel_intersections(T top_y, active_bound_list& active_bounds, ring_manager& manager) { if (active_bounds.empty()) { return; } update_current_x(active_bounds, top_y); bubble_sort(active_bounds.begin(), active_bounds.end(), intersection_compare(), hp_intersection_swap(manager)); } template bool horizontals_at_top_scanbeam(T top_y, active_bound_list_itr& bnd_curr, active_bound_list& active_bounds, ring_manager& manager) { bool shifted = false; auto& current_edge = (*bnd_curr)->current_edge; (*bnd_curr)->current_x = static_cast(current_edge->top.x); if (current_edge->bot.x < current_edge->top.x) { // left to right auto bnd_next = std::next(bnd_curr); while (bnd_next != active_bounds.end() && (*bnd_next == nullptr || (*bnd_next)->current_x < (*bnd_curr)->current_x)) { if (*bnd_next != nullptr && (*bnd_next)->current_edge->top.y != top_y && (*bnd_next)->current_edge->bot.y != top_y) { mapbox::geometry::point pt(wround((*bnd_next)->current_x), top_y); add_to_hot_pixels(pt, manager); } std::iter_swap(bnd_curr, bnd_next); ++bnd_curr; ++bnd_next; shifted = true; } } else { // right to left if (bnd_curr != active_bounds.begin()) { auto bnd_prev = std::prev(bnd_curr); while (bnd_curr != active_bounds.begin() && (*bnd_prev == nullptr || (*bnd_prev)->current_x > (*bnd_curr)->current_x)) { if (*bnd_prev != nullptr && (*bnd_prev)->current_edge->top.y != top_y && (*bnd_prev)->current_edge->bot.y != top_y) { mapbox::geometry::point pt(wround((*bnd_prev)->current_x), top_y); add_to_hot_pixels(pt, manager); } std::iter_swap(bnd_curr, bnd_prev); --bnd_curr; if (bnd_curr != active_bounds.begin()) { --bnd_prev; } } } } return shifted; } template void process_hot_pixel_edges_at_top_of_scanbeam(T top_y, scanbeam_list& scanbeam, active_bound_list& active_bounds, ring_manager& manager) { for (auto bnd = active_bounds.begin(); bnd != active_bounds.end();) { if (*bnd == nullptr) { ++bnd; continue; } bound& current_bound = *(*bnd); auto bnd_curr = bnd; bool shifted = false; auto& current_edge = current_bound.current_edge; while (current_edge != current_bound.edges.end() && current_edge->top.y == top_y) { add_to_hot_pixels(current_edge->top, manager); if (is_horizontal(*current_edge)) { if (horizontals_at_top_scanbeam(top_y, bnd_curr, active_bounds, manager)) { shifted = true; } } next_edge_in_bound(current_bound, scanbeam); } if (current_edge == current_bound.edges.end()) { *bnd_curr = nullptr; } if (!shifted) { ++bnd; } } active_bounds.erase(std::remove(active_bounds.begin(), active_bounds.end(), nullptr), active_bounds.end()); } template void insert_local_minima_into_ABL_hot_pixel(T top_y, local_minimum_ptr_list& minima_sorted, local_minimum_ptr_list_itr& lm, active_bound_list& active_bounds, ring_manager& manager, scanbeam_list& scanbeam) { while (lm != minima_sorted.end() && (*lm)->y == top_y) { add_to_hot_pixels((*lm)->left_bound.edges.front().bot, manager); auto& left_bound = (*lm)->left_bound; auto& right_bound = (*lm)->right_bound; left_bound.current_edge = left_bound.edges.begin(); left_bound.next_edge = std::next(left_bound.current_edge); left_bound.current_x = static_cast(left_bound.current_edge->bot.x); right_bound.current_edge = right_bound.edges.begin(); right_bound.next_edge = std::next(right_bound.current_edge); right_bound.current_x = static_cast(right_bound.current_edge->bot.x); auto lb_abl_itr = insert_bound_into_ABL(left_bound, right_bound, active_bounds); if (!current_edge_is_horizontal(lb_abl_itr)) { insert_sorted_scanbeam(scanbeam, (*lb_abl_itr)->current_edge->top.y); } auto rb_abl_itr = std::next(lb_abl_itr); if (!current_edge_is_horizontal(rb_abl_itr)) { insert_sorted_scanbeam(scanbeam, (*rb_abl_itr)->current_edge->top.y); } ++lm; } } template void build_hot_pixels(local_minimum_list& minima_list, ring_manager& manager) { active_bound_list active_bounds; scanbeam_list scanbeam; T scanline_y = std::numeric_limits::max(); local_minimum_ptr_list minima_sorted; minima_sorted.reserve(minima_list.size()); for (auto& lm : minima_list) { minima_sorted.push_back(&lm); } std::stable_sort(minima_sorted.begin(), minima_sorted.end(), local_minimum_sorter()); local_minimum_ptr_list_itr current_lm = minima_sorted.begin(); setup_scanbeam(minima_list, scanbeam); // Estimate size for reserving hot pixels std::size_t reserve = 0; for (auto& lm : minima_list) { reserve += lm.left_bound.edges.size() + 2; reserve += lm.right_bound.edges.size() + 2; } manager.hot_pixels.reserve(reserve); while (pop_from_scanbeam(scanline_y, scanbeam) || current_lm != minima_sorted.end()) { process_hot_pixel_intersections(scanline_y, active_bounds, manager); insert_local_minima_into_ABL_hot_pixel(scanline_y, minima_sorted, current_lm, active_bounds, manager, scanbeam); process_hot_pixel_edges_at_top_of_scanbeam(scanline_y, scanbeam, active_bounds, manager); } preallocate_point_memory(manager, manager.hot_pixels.size()); sort_hot_pixels(manager); } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/topology_correction.hpp000066400000000000000000001320701360766232600254020ustar00rootroot00000000000000#pragma once #define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #ifdef DEBUG #include #include #endif namespace mapbox { namespace geometry { namespace wagyu { template struct point_ptr_pair { point_ptr op1; point_ptr op2; constexpr point_ptr_pair(point_ptr o1, point_ptr o2) : op1(o1), op2(o2) { } point_ptr_pair(point_ptr_pair const& p) = default; point_ptr_pair(point_ptr_pair&& p) : op1(std::move(p.op1)), op2(std::move(p.op2)) { } point_ptr_pair& operator=(point_ptr_pair&& p) { op1 = std::move(p.op1); op2 = std::move(p.op2); return *this; } }; #ifdef DEBUG template inline std::basic_ostream& operator<<(std::basic_ostream& out, const std::unordered_multimap, point_ptr_pair>& dupe_ring) { out << " BEGIN CONNECTIONS: " << std::endl; for (auto& r : dupe_ring) { out << " Ring: "; if (r.second.op1->ring) { out << r.second.op1->ring->ring_index; } else { out << "---"; } out << " to "; if (r.second.op2->ring) { out << r.second.op2->ring->ring_index; } else { out << "---"; } out << " ( at " << r.second.op1->x << ", " << r.second.op1->y << " )"; out << " Ring1 ( "; if (r.second.op1->ring) { out << "area: " << r.second.op1->ring->area << " parent: "; if (r.second.op1->ring->parent) { out << r.second.op1->ring->parent->ring_index; } else { out << "---"; } } else { out << "---"; } out << " )"; out << " Ring2 ( "; if (r.second.op2->ring) { out << "area: " << r.second.op2->ring->area << " parent: "; if (r.second.op2->ring->parent) { out << r.second.op2->ring->parent->ring_index; } else { out << "---"; } } else { out << "---"; } out << " )"; out << std::endl; } out << " END CONNECTIONS: " << std::endl; return out; } #endif template bool find_intersect_loop(std::unordered_multimap, point_ptr_pair>& dupe_ring, std::list, point_ptr_pair>>& iList, ring_ptr ring_parent, ring_ptr ring_origin, ring_ptr ring_search, std::set>& visited, point_ptr orig_pt, point_ptr prev_pt, ring_manager& rings) { { auto range = dupe_ring.equal_range(ring_search); // Check for direct connection for (auto& it = range.first; it != range.second;) { ring_ptr it_ring1 = it->second.op1->ring; ring_ptr it_ring2 = it->second.op2->ring; if (!it_ring1 || !it_ring2 || it_ring1 != ring_search || (!it_ring1->is_hole() && !it_ring2->is_hole())) { it = dupe_ring.erase(it); continue; } if (it_ring2 == ring_origin && (ring_parent == it_ring2 || ring_parent == it_ring2->parent) && *prev_pt != *it->second.op2 && *orig_pt != *it->second.op2) { iList.emplace_front(ring_search, it->second); return true; } ++it; } } auto range = dupe_ring.equal_range(ring_search); visited.insert(ring_search); // Check for connection through chain of other intersections for (auto& it = range.first; it != range.second && it != dupe_ring.end() && it->first == ring_search; ++it) { ring_ptr it_ring = it->second.op2->ring; if (visited.count(it_ring) > 0 || it_ring == nullptr || (ring_parent != it_ring && ring_parent != it_ring->parent) || value_is_zero(it_ring->area()) || *prev_pt == *it->second.op2) { continue; } if (find_intersect_loop(dupe_ring, iList, ring_parent, ring_origin, it_ring, visited, orig_pt, it->second.op2, rings)) { iList.emplace_front(ring_search, it->second); return true; } } return false; } template struct point_ptr_cmp { inline bool operator()(point_ptr op1, point_ptr op2) { if (op1->y != op2->y) { return (op1->y > op2->y); } else if (op1->x != op2->x) { return (op1->x < op2->x); } else { std::size_t depth_1 = ring_depth(op1->ring); std::size_t depth_2 = ring_depth(op2->ring); return depth_1 > depth_2; } } }; template void correct_orientations(ring_manager& manager) { for (auto& r : manager.rings) { if (!r.points) { continue; } r.recalculate_stats(); if (r.size() < 3) { remove_ring_and_points(&r, manager, false); continue; } if (ring_is_hole(&r) != r.is_hole()) { reverse_ring(r.points); r.recalculate_stats(); } } } template point_vector sort_ring_points(ring_ptr r) { point_vector sorted_points; point_ptr point_itr = r->points; point_ptr last_point = point_itr->prev; while (point_itr != last_point) { sorted_points.push_back(point_itr); point_itr = point_itr->next; } sorted_points.push_back(last_point); std::stable_sort(sorted_points.begin(), sorted_points.end(), [](point_ptr const& pt1, point_ptr const& pt2) { if (pt1->y != pt2->y) { return (pt1->y > pt2->y); } return (pt1->x < pt2->x); }); return sorted_points; } template ring_ptr correct_self_intersection(point_ptr pt1, point_ptr pt2, ring_manager& manager) { if (pt1->ring != pt2->ring) { return static_cast>(nullptr); } ring_ptr ring = pt1->ring; // split the polygon into two ... point_ptr pt3 = pt1->prev; point_ptr pt4 = pt2->prev; pt1->prev = pt4; pt4->next = pt1; pt2->prev = pt3; pt3->next = pt2; ring_ptr new_ring = create_new_ring(manager); std::size_t size_1 = 0; std::size_t size_2 = 0; mapbox::geometry::box box1({ 0, 0 }, { 0, 0 }); mapbox::geometry::box box2({ 0, 0 }, { 0, 0 }); double area_1 = area_from_point(pt1, size_1, box1); double area_2 = area_from_point(pt2, size_2, box2); if (std::fabs(area_1) > std::fabs(area_2)) { ring->points = pt1; ring->set_stats(area_1, size_1, box1); new_ring->points = pt2; new_ring->set_stats(area_2, size_2, box2); } else { ring->points = pt2; ring->set_stats(area_2, size_2, box2); new_ring->points = pt1; new_ring->set_stats(area_1, size_1, box1); } update_points_ring(new_ring); return new_ring; } template void correct_repeated_points(ring_manager& manager, ring_vector& new_rings, point_vector_itr const& begin, point_vector_itr const& end) { for (auto itr1 = begin; itr1 != end; ++itr1) { if ((*itr1)->ring == nullptr) { continue; } for (auto itr2 = std::next(itr1); itr2 != end; ++itr2) { if ((*itr2)->ring == nullptr) { continue; } ring_ptr new_ring = correct_self_intersection(*itr1, *itr2, manager); if (new_ring != nullptr) { new_rings.push_back(new_ring); } } } } template void find_and_correct_repeated_points(ring_ptr r, ring_manager& manager, ring_vector& new_rings) { auto sorted_points = sort_ring_points(r); // Find sets of repeated points std::size_t count = 0; auto prev_itr = sorted_points.begin(); auto itr = std::next(prev_itr); while (itr != sorted_points.end()) { if (*(*prev_itr) == *(*(itr))) { ++count; ++prev_itr; ++itr; if (itr != sorted_points.end()) { continue; } else { ++prev_itr; } } else { ++prev_itr; ++itr; } if (count == 0) { continue; } auto first = prev_itr; std::advance(first, -(static_cast(count) + 1)); correct_repeated_points(manager, new_rings, first, prev_itr); count = 0; } } template void reassign_children_if_necessary(ring_ptr new_ring, ring_ptr sibling_ring, ring_manager& manager, ring_vector& new_rings) { auto& children = sibling_ring == nullptr ? manager.children : sibling_ring->children; for (auto c : children) { if (c == nullptr) { continue; } if (std::find(new_rings.begin(), new_rings.end(), c) != new_rings.end()) { continue; } if (poly2_contains_poly1(c, new_ring)) { reassign_as_child(c, new_ring, manager); } } } template bool find_parent_in_tree(ring_ptr r, ring_ptr possible_parent, ring_manager& manager) { // Before starting this we are assuming that possible_parent // and r have opposite signs of their areas // First we must search all grandchildren for (auto c : possible_parent->children) { if (c == nullptr) { continue; } for (auto gc : c->children) { if (gc == nullptr) { continue; } if (find_parent_in_tree(r, gc, manager)) { return true; } } } if (poly2_contains_poly1(r, possible_parent)) { reassign_as_child(r, possible_parent, manager); return true; } return false; } template void assign_new_ring_parents(ring_manager& manager, ring_ptr original_ring, ring_vector& new_rings) { // First lets remove any rings that have zero area // or have no points new_rings.erase(std::remove_if(new_rings.begin(), new_rings.end(), [](ring_ptr const& r) { if (r->points == nullptr) { return true; } return value_is_zero(r->area()); }), new_rings.end()); if (new_rings.empty()) { // No new rings created simply return; return; } // We should not have to re-assign the parent of the original ring // because we always maintained the largest ring during splitting // on repeated points. double original_ring_area = original_ring->area(); bool original_positive = original_ring_area > 0.0; // If there is only one new ring the logic is very simple and we // do not have to check which ring contains, we only need to compare // the areas of the original ring and that of the new ring. if (new_rings.size() == 1) { double new_ring_area = new_rings.front()->area(); bool new_positive = new_ring_area > 0.0; if (original_positive == new_positive) { // The rings should be siblings assign_as_child(new_rings.front(), original_ring->parent, manager); reassign_children_if_necessary(new_rings.front(), original_ring, manager, new_rings); } else { // The new ring is a child of original ring // Check the assign_as_child(new_rings.front(), original_ring, manager); reassign_children_if_necessary(new_rings.front(), original_ring->parent, manager, new_rings); } return; } // Now we want to sort rings from the largest in absolute area to the smallest // as we will assign the rings with the largest areas first std::stable_sort(new_rings.begin(), new_rings.end(), [](ring_ptr const& r1, ring_ptr const& r2) { return std::fabs(r1->area()) > std::fabs(r2->area()); }); for (auto r_itr = new_rings.begin(); r_itr != new_rings.end(); ++r_itr) { double new_ring_area = (*r_itr)->area(); bool new_positive = new_ring_area > 0.0; bool same_orientation = new_positive == original_positive; bool found = false; // First lets check the trees of any new_rings that might have // been assigned as siblings to the original ring. for (auto s_itr = new_rings.begin(); s_itr != r_itr; ++s_itr) { if ((*s_itr)->parent != original_ring->parent) { continue; } if (same_orientation) { for (auto s_child : (*s_itr)->children) { if (s_child == nullptr) { continue; } if (find_parent_in_tree(*r_itr, s_child, manager)) { reassign_children_if_necessary(*r_itr, original_ring, manager, new_rings); found = true; break; } } } else { if (find_parent_in_tree(*r_itr, *s_itr, manager)) { reassign_children_if_necessary(*r_itr, original_ring->parent, manager, new_rings); found = true; } } if (found) { break; } } if (found) { continue; } // Next lets check the tree of the original_ring if (same_orientation) { for (auto o_child : original_ring->children) { if (o_child == nullptr) { continue; } if (find_parent_in_tree(*r_itr, o_child, manager)) { reassign_children_if_necessary(*r_itr, original_ring, manager, new_rings); found = true; break; } } if (!found) { // If we didn't find any parent and the same orientation // then it must be a sibling of the original ring assign_as_child(*r_itr, original_ring->parent, manager); reassign_children_if_necessary(*r_itr, original_ring, manager, new_rings); } } else { if (find_parent_in_tree(*r_itr, original_ring, manager)) { reassign_children_if_necessary(*r_itr, original_ring->parent, manager, new_rings); } else { throw std::runtime_error("Unable to find a proper parent ring"); } } } } template bool correct_ring_self_intersections(ring_manager& manager, ring_ptr r, bool correct_tree) { if (r->corrected || !r->points) { return false; } ring_vector new_rings; find_and_correct_repeated_points(r, manager, new_rings); if (correct_tree) { assign_new_ring_parents(manager, r, new_rings); } r->corrected = true; return true; } template void process_single_intersection(std::unordered_multimap, point_ptr_pair>& connection_map, point_ptr op_j, point_ptr op_k, ring_manager& manager) { ring_ptr ring_j = op_j->ring; ring_ptr ring_k = op_k->ring; if (ring_j == ring_k) { return; } if (!ring_j->is_hole() && !ring_k->is_hole()) { // Both are not holes, return nothing to do. return; } ring_ptr ring_origin; ring_ptr ring_search; ring_ptr ring_parent; point_ptr op_origin_1; point_ptr op_origin_2; if (!ring_j->is_hole()) { ring_origin = ring_j; ring_parent = ring_origin; ring_search = ring_k; op_origin_1 = op_j; op_origin_2 = op_k; } else if (!ring_k->is_hole()) { ring_origin = ring_k; ring_parent = ring_origin; ring_search = ring_j; op_origin_1 = op_k; op_origin_2 = op_j; } else { // both are holes // Order doesn't matter ring_origin = ring_j; ring_parent = ring_origin->parent; ring_search = ring_k; op_origin_1 = op_j; op_origin_2 = op_k; } if (ring_parent != ring_search->parent) { // The two holes do not have the same parent, do not add them // simply return! return; } bool found = false; std::list, point_ptr_pair>> iList; { auto range = connection_map.equal_range(ring_search); // Check for direct connection for (auto& it = range.first; it != range.second;) { if (!it->second.op1->ring) { it = connection_map.erase(it); continue; } if (!it->second.op2->ring) { it = connection_map.erase(it); continue; } ring_ptr it_ring2 = it->second.op2->ring; if (it_ring2 == ring_origin) { found = true; if (*op_origin_1 != *(it->second.op2)) { iList.emplace_back(ring_search, it->second); break; } } ++it; } } if (iList.empty()) { auto range = connection_map.equal_range(ring_search); std::set> visited; visited.insert(ring_search); // Check for connection through chain of other intersections for (auto& it = range.first; it != range.second && it != connection_map.end() && it->first == ring_search; ++it) { ring_ptr it_ring = it->second.op2->ring; if (it_ring != ring_search && *op_origin_2 != *it->second.op2 && it_ring != nullptr && (ring_parent == it_ring || ring_parent == it_ring->parent) && !value_is_zero(it_ring->area()) && find_intersect_loop(connection_map, iList, ring_parent, ring_origin, it_ring, visited, op_origin_2, it->second.op2, manager)) { found = true; iList.emplace_front(ring_search, it->second); break; } } } if (!found) { point_ptr_pair intPt_origin = { op_origin_1, op_origin_2 }; point_ptr_pair intPt_search = { op_origin_2, op_origin_1 }; connection_map.emplace(ring_origin, std::move(intPt_origin)); connection_map.emplace(ring_search, std::move(intPt_search)); return; } if (iList.empty()) { // The situation where both origin and search are holes might have a missing // search condition, we must check if a new pair must be added. bool missing = true; auto rng = connection_map.equal_range(ring_origin); // Check for direct connection for (auto& it = rng.first; it != rng.second; ++it) { ring_ptr it_ring2 = it->second.op2->ring; if (it_ring2 == ring_search) { missing = false; } } if (missing) { point_ptr_pair intPt_origin = { op_origin_1, op_origin_2 }; connection_map.emplace(ring_origin, std::move(intPt_origin)); } return; } if (ring_origin->is_hole()) { for (auto& iRing : iList) { ring_ptr ring_itr = iRing.first; if (!ring_itr->is_hole()) { // Make the hole the origin! point_ptr op1 = op_origin_1; op_origin_1 = iRing.second.op1; iRing.second.op1 = op1; point_ptr op2 = op_origin_2; op_origin_2 = iRing.second.op2; iRing.second.op2 = op2; iRing.first = ring_origin; ring_origin = ring_itr; ring_parent = ring_origin; break; } } } bool origin_is_hole = ring_origin->is_hole(); // Switch point_ptr op_origin_1_next = op_origin_1->next; point_ptr op_origin_2_next = op_origin_2->next; op_origin_1->next = op_origin_2_next; op_origin_2->next = op_origin_1_next; op_origin_1_next->prev = op_origin_2; op_origin_2_next->prev = op_origin_1; for (auto& iRing : iList) { point_ptr op_search_1 = iRing.second.op1; point_ptr op_search_2 = iRing.second.op2; point_ptr op_search_1_next = op_search_1->next; point_ptr op_search_2_next = op_search_2->next; op_search_1->next = op_search_2_next; op_search_2->next = op_search_1_next; op_search_1_next->prev = op_search_2; op_search_2_next->prev = op_search_1; } ring_ptr ring_new = create_new_ring(manager); ring_origin->corrected = false; std::size_t size_1 = 0; std::size_t size_2 = 0; mapbox::geometry::box box1({ 0, 0 }, { 0, 0 }); mapbox::geometry::box box2({ 0, 0 }, { 0, 0 }); double area_1 = area_from_point(op_origin_1, size_1, box1); double area_2 = area_from_point(op_origin_2, size_2, box2); if (origin_is_hole && ((area_1 < 0.0))) { ring_origin->points = op_origin_1; ring_origin->set_stats(area_1, size_1, box1); ring_new->points = op_origin_2; ring_new->set_stats(area_2, size_2, box2); } else { ring_origin->points = op_origin_2; ring_origin->set_stats(area_2, size_2, box2); ring_new->points = op_origin_1; ring_new->set_stats(area_1, size_1, box1); } update_points_ring(ring_origin); update_points_ring(ring_new); ring_origin->bottom_point = nullptr; for (auto& iRing : iList) { ring_ptr ring_itr = iRing.first; ring_itr->bottom_point = nullptr; if (origin_is_hole) { ring1_replaces_ring2(ring_origin, ring_itr, manager); } else { ring1_replaces_ring2(ring_origin->parent, ring_itr, manager); } } if (origin_is_hole) { assign_as_child(ring_new, ring_origin, manager); // The parent ring in this situation might need to give up children // to the new ring. for (auto c : ring_parent->children) { if (c == nullptr) { continue; } if (poly2_contains_poly1(c, ring_new)) { reassign_as_child(c, ring_new, manager); } } } else { // The new ring and the origin ring need to be siblings // however some children ring from the ring origin might // need to be re-assigned to the new ring assign_as_sibling(ring_new, ring_origin, manager); for (auto c : ring_origin->children) { if (c == nullptr) { continue; } if (poly2_contains_poly1(c, ring_new)) { reassign_as_child(c, ring_new, manager); } } } std::list, point_ptr_pair>> move_list; for (auto& iRing : iList) { auto range_itr = connection_map.equal_range(iRing.first); if (range_itr.first != range_itr.second) { for (auto& it = range_itr.first; it != range_itr.second; ++it) { ring_ptr it_ring = it->second.op1->ring; ring_ptr it_ring2 = it->second.op2->ring; if (it_ring == nullptr || it_ring2 == nullptr || it_ring == it_ring2) { continue; } if (it_ring->is_hole() || it_ring2->is_hole()) { move_list.emplace_back(it_ring, it->second); } } connection_map.erase(iRing.first); } } auto range_itr = connection_map.equal_range(ring_origin); for (auto& it = range_itr.first; it != range_itr.second;) { ring_ptr it_ring = it->second.op1->ring; ring_ptr it_ring2 = it->second.op2->ring; if (it_ring == nullptr || it_ring2 == nullptr || it_ring == it_ring2) { it = connection_map.erase(it); continue; } if (it_ring != ring_origin) { if (it_ring->is_hole() || it_ring2->is_hole()) { move_list.emplace_back(it_ring, it->second); } it = connection_map.erase(it); } else { if (it_ring->is_hole() || it_ring2->is_hole()) { ++it; } else { it = connection_map.erase(it); } } } if (!move_list.empty()) { connection_map.insert(move_list.begin(), move_list.end()); } return; } template void correct_chained_repeats(ring_manager& manager, std::unordered_multimap, point_ptr_pair>& connection_map, point_vector_itr const& begin, point_vector_itr const& end) { for (auto itr1 = begin; itr1 != end; ++itr1) { if ((*itr1)->ring == nullptr) { continue; } for (auto itr2 = std::next(itr1); itr2 != end; ++itr2) { if ((*itr2)->ring == nullptr) { continue; } process_single_intersection(connection_map, *itr1, *itr2, manager); } } } template void correct_chained_rings(ring_manager& manager) { if (manager.all_points.size() < 2) { return; } // Setup connection map which is a map of rings and their // connection point pairs with other rings. std::unordered_multimap, point_ptr_pair> connection_map; connection_map.reserve(manager.rings.size()); // Now lets find and process any points // that overlap -- we should have solved // all situations where these points // would be self intersections of a ring with // earlier processing so this should just be // points where different rings are touching. std::size_t count = 0; auto prev_itr = manager.all_points.begin(); auto itr = std::next(prev_itr); while (itr != manager.all_points.end()) { if (*(*prev_itr) == *(*(itr))) { ++count; ++prev_itr; ++itr; if (itr != manager.all_points.end()) { continue; } else { ++prev_itr; } } else { ++prev_itr; ++itr; } if (count == 0) { continue; } auto first = prev_itr; std::advance(first, -(static_cast(count) + 1)); correct_chained_repeats(manager, connection_map, first, prev_itr); count = 0; } } template ring_vector sort_rings_largest_to_smallest(ring_manager& manager) { ring_vector sorted_rings; sorted_rings.reserve(manager.rings.size()); for (auto& r : manager.rings) { sorted_rings.push_back(&r); } std::stable_sort(sorted_rings.begin(), sorted_rings.end(), [](ring_ptr const& r1, ring_ptr const& r2) { if (!r1->points || !r2->points) { return r1->points != nullptr; } return std::fabs(r1->area()) > std::fabs(r2->area()); }); return sorted_rings; } template ring_vector sort_rings_smallest_to_largest(ring_manager& manager) { ring_vector sorted_rings; sorted_rings.reserve(manager.rings.size()); for (auto& r : manager.rings) { sorted_rings.push_back(&r); } std::stable_sort(sorted_rings.begin(), sorted_rings.end(), [](ring_ptr const& r1, ring_ptr const& r2) { if (!r1->points || !r2->points) { return r1->points != nullptr; } return std::fabs(r1->area()) < std::fabs(r2->area()); }); return sorted_rings; } template struct collinear_path { // Collinear edges are in opposite directions // such that start_1 is at the same position // of end_2 and vise versa. Start to end is // always forward (next) on path. point_ptr start_1; point_ptr end_1; point_ptr start_2; point_ptr end_2; }; template struct collinear_result { point_ptr pt1; point_ptr pt2; }; template collinear_result fix_collinear_path(collinear_path& path) { // Left and right are just the opposite ends of the // collinear path, they may not be actually left // and right of each other. // The left end is start_1 and end_2 // The right end is start_2 and end_1 // NOTE spike detection is checking that the // pointers are the same values, not position! // additionally duplicate points we will treat // if they are a spike left. bool spike_left = (path.start_1 == path.end_2); bool spike_right = (path.start_2 == path.end_1); if (spike_left && spike_right) { // If both ends are spikes we should simply // delete all the points. (they should be in a loop) point_ptr itr = path.start_1; while (itr != nullptr) { itr->prev->next = nullptr; itr->prev = nullptr; itr->ring = nullptr; itr = itr->next; } return { nullptr, nullptr }; } else if (spike_left) { point_ptr prev = path.start_2->prev; point_ptr itr = path.start_2; while (itr != path.end_1) { itr->prev->next = nullptr; itr->prev = nullptr; itr->ring = nullptr; itr = itr->next; } prev->next = path.end_1; path.end_1->prev = prev; return { path.end_1, nullptr }; } else if (spike_right) { point_ptr prev = path.start_1->prev; point_ptr itr = path.start_1; while (itr != path.end_2) { itr->prev->next = nullptr; itr->prev = nullptr; itr->ring = nullptr; itr = itr->next; } prev->next = path.end_2; path.end_2->prev = prev; return { path.end_2, nullptr }; } else { point_ptr prev_1 = path.start_1->prev; point_ptr prev_2 = path.start_2->prev; point_ptr itr = path.start_1; do { itr->prev->next = nullptr; itr->prev = nullptr; itr->ring = nullptr; itr = itr->next; } while (itr != path.end_1 && itr != nullptr); itr = path.start_2; do { itr->prev->next = nullptr; itr->prev = nullptr; itr->ring = nullptr; itr = itr->next; } while (itr != path.end_2 && itr != nullptr); if (path.start_1 == path.end_1 && path.start_2 == path.end_2) { return { nullptr, nullptr }; } else if (path.start_1 == path.end_1) { prev_2->next = path.end_2; path.end_2->prev = prev_2; return { path.end_2, nullptr }; } else if (path.start_2 == path.end_2) { prev_1->next = path.end_1; path.end_1->prev = prev_1; return { path.end_1, nullptr }; } else { prev_1->next = path.end_2; path.end_2->prev = prev_1; prev_2->next = path.end_1; path.end_1->prev = prev_2; return { path.end_1, path.end_2 }; } } } template collinear_path find_start_and_end_of_collinear_edges(point_ptr pt_a, point_ptr pt_b) { // Search backward on A, forwards on B first bool same_ring = pt_a->ring == pt_b->ring; point_ptr back = pt_a; point_ptr forward = pt_b; bool first = true; do { while (*(back->prev) == *back && back != forward) { back = back->prev; if (back == pt_a) { break; } } if (back == forward) { back = back->prev; forward = forward->next; break; } while (*(forward->next) == *forward && back != forward) { forward = forward->next; if (forward == pt_b) { break; } } if (!first && (back == pt_a || forward == pt_b)) { break; } if (back == forward) { back = back->prev; forward = forward->next; break; } back = back->prev; forward = forward->next; first = false; } while (*back == *forward); point_ptr start_a = back->next; // If there are repeated points at the diverge we want to select // only the first of those repeated points. while (!same_ring && *start_a == *start_a->next && start_a != pt_a) { start_a = start_a->next; } point_ptr end_b = forward->prev; while (!same_ring && *end_b == *end_b->prev && end_b != pt_b) { end_b = end_b->prev; } // Search backward on B, forwards on A next back = pt_b; forward = pt_a; first = true; do { while (*(back->prev) == *back && back != forward) { back = back->prev; if (back == pt_b) { break; } } if (back == forward) { back = back->prev; forward = forward->next; break; } while (*(forward->next) == *forward && back != forward) { forward = forward->next; if (forward == pt_a) { break; } } if (!first && (back == pt_b || forward == pt_a)) { break; } if (back == forward || (!first && (back == end_b || forward == start_a))) { back = back->prev; forward = forward->next; break; } back = back->prev; forward = forward->next; first = false; } while (*back == *forward); point_ptr start_b = back->next; while (!same_ring && *start_b == *start_b->next && start_b != pt_b) { start_b = start_b->next; } point_ptr end_a = forward->prev; while (!same_ring && *end_a == *end_a->prev && end_a != pt_a) { end_a = end_a->prev; } return { start_a, end_a, start_b, end_b }; } template bool has_collinear_edge(point_ptr pt_a, point_ptr pt_b) { // It is assumed pt_a and pt_b are at the same location. return (*pt_a->next == *pt_b->prev || *pt_b->next == *pt_a->prev); } template void process_collinear_edges_same_ring(point_ptr pt_a, point_ptr pt_b, ring_manager& manager) { ring_ptr original_ring = pt_a->ring; // As they are the same ring that are forming a collinear edge // we should expect the creation of two different rings. auto path = find_start_and_end_of_collinear_edges(pt_a, pt_b); auto results = fix_collinear_path(path); if (results.pt1 == nullptr) { // If pt1 is a nullptr, both values // are nullptrs. This mean the ring was // removed during this processing. remove_ring(original_ring, manager, false); } else if (results.pt2 == nullptr) { // If a single point is only returned, we simply removed a spike. // In this case, we don't need to worry about parent or children // and we simply need to set the points and clear the area original_ring->points = results.pt1; original_ring->recalculate_stats(); } else { // If we have two seperate points, the ring has split into // two different rings. ring_ptr ring_new = create_new_ring(manager); ring_new->points = results.pt2; ring_new->recalculate_stats(); update_points_ring(ring_new); original_ring->points = results.pt1; original_ring->recalculate_stats(); } } template void process_collinear_edges_different_rings(point_ptr pt_a, point_ptr pt_b, ring_manager& manager) { ring_ptr ring_a = pt_a->ring; ring_ptr ring_b = pt_b->ring; bool ring_a_larger = std::fabs(ring_a->area()) > std::fabs(ring_b->area()); auto path = find_start_and_end_of_collinear_edges(pt_a, pt_b); // This should result in two rings becoming one. auto results = fix_collinear_path(path); if (results.pt1 == nullptr) { remove_ring(ring_a, manager, false); remove_ring(ring_b, manager, false); return; } // Rings should merge into a single ring of the same orientation. // Therefore, we we will need to replace one ring with the other ring_ptr merged_ring = ring_a_larger ? ring_a : ring_b; ring_ptr deleted_ring = ring_a_larger ? ring_b : ring_a; merged_ring->points = results.pt1; update_points_ring(merged_ring); merged_ring->recalculate_stats(); if (merged_ring->size() < 3) { remove_ring_and_points(merged_ring, manager, false); } remove_ring(deleted_ring, manager, false); } template bool remove_duplicate_points(point_ptr pt_a, point_ptr pt_b, ring_manager& manager) { if (pt_a->ring == pt_b->ring) { if (pt_a->next == pt_b) { pt_a->next = pt_b->next; pt_a->next->prev = pt_a; pt_b->next = nullptr; pt_b->prev = nullptr; pt_b->ring = nullptr; if (pt_a->ring->points == pt_b) { pt_a->ring->points = pt_a; } return true; } else if (pt_b->next == pt_a) { pt_a->prev = pt_b->prev; pt_a->prev->next = pt_a; pt_b->next = nullptr; pt_b->prev = nullptr; pt_b->ring = nullptr; if (pt_a->ring->points == pt_b) { pt_a->ring->points = pt_a; } return true; } } while (*pt_a->next == *pt_a && pt_a->next != pt_a) { point_ptr remove = pt_a->next; pt_a->next = remove->next; pt_a->next->prev = pt_a; remove->next = nullptr; remove->prev = nullptr; remove->ring = nullptr; if (pt_a->ring->points == remove) { pt_a->ring->points = pt_a; } } while (*pt_a->prev == *pt_a && pt_a->prev != pt_a) { point_ptr remove = pt_a->prev; pt_a->prev = remove->prev; pt_a->prev->next = pt_a; remove->next = nullptr; remove->prev = nullptr; remove->ring = nullptr; if (pt_a->ring->points == remove) { pt_a->ring->points = pt_a; } } if (pt_a->next == pt_a) { remove_ring_and_points(pt_a->ring, manager, false); return true; } if (pt_b->ring == nullptr) { return true; } while (*pt_b->next == *pt_b && pt_b->next != pt_b) { point_ptr remove = pt_b->next; pt_b->next = remove->next; pt_b->next->prev = pt_b; remove->next = nullptr; remove->prev = nullptr; remove->ring = nullptr; if (pt_b->ring->points == remove) { pt_b->ring->points = pt_b; } } while (*pt_b->prev == *pt_b && pt_b->prev != pt_b) { point_ptr remove = pt_b->prev; pt_b->prev = remove->prev; pt_b->prev->next = pt_b; remove->next = nullptr; remove->prev = nullptr; remove->ring = nullptr; if (pt_b->ring->points == remove) { pt_b->ring->points = pt_b; } } if (pt_b->next == pt_b) { remove_ring_and_points(pt_b->ring, manager, false); return true; } if (pt_a->ring == nullptr) { return true; } return false; } template bool process_collinear_edges(point_ptr pt_a, point_ptr pt_b, ring_manager& manager) { // Neither point assigned to a ring (deleted points) if (!pt_a->ring || !pt_b->ring) { return false; } if (remove_duplicate_points(pt_a, pt_b, manager)) { return true; } if (!has_collinear_edge(pt_a, pt_b)) { if (pt_a->ring == pt_b->ring) { correct_self_intersection(pt_a, pt_b, manager); return true; } return false; } if (pt_a->ring == pt_b->ring) { process_collinear_edges_same_ring(pt_a, pt_b, manager); } else { process_collinear_edges_different_rings(pt_a, pt_b, manager); } return true; } template void correct_collinear_repeats(ring_manager& manager, point_vector_itr const& begin, point_vector_itr const& end) { for (auto itr1 = begin; itr1 != end; ++itr1) { if ((*itr1)->ring == nullptr) { continue; } for (auto itr2 = begin; itr2 != end;) { if ((*itr1)->ring == nullptr) { break; } if ((*itr2)->ring == nullptr || *itr2 == *itr1) { ++itr2; continue; } if (process_collinear_edges(*itr1, *itr2, manager)) { itr2 = begin; } else { ++itr2; } } } } template void correct_collinear_edges(ring_manager& manager) { if (manager.all_points.size() < 2) { return; } std::size_t count = 0; auto prev_itr = manager.all_points.begin(); auto itr = std::next(prev_itr); while (itr != manager.all_points.end()) { if (*(*prev_itr) == *(*(itr))) { ++count; ++prev_itr; ++itr; if (itr != manager.all_points.end()) { continue; } else { ++prev_itr; } } else { ++prev_itr; ++itr; } if (count == 0) { continue; } auto first = prev_itr; std::advance(first, -(static_cast(count) + 1)); correct_collinear_repeats(manager, first, prev_itr); count = 0; } } template void correct_tree(ring_manager& manager) { // It is possible that vatti resulted in some parent child // relationships that are not quite right, therefore, we // need to just rebuild the entire tree of rings // First lets process the rings in order of size from largest // area to smallest, we know right away that no smaller ring could ever // contain a larger ring so we can use this to our advantage // as we iterate over the rings. using rev_itr = typename ring_vector::reverse_iterator; ring_vector sorted_rings = sort_rings_largest_to_smallest(manager); for (auto itr = sorted_rings.begin(); itr != sorted_rings.end(); ++itr) { if ((*itr)->points == nullptr) { continue; } if ((*itr)->size() < 3 || value_is_zero((*itr)->area())) { remove_ring_and_points(*itr, manager, false); continue; } (*itr)->corrected = true; bool found = false; // Search in reverse from the current iterator back to the begining // to see if any of those rings might be its parent. for (auto r_itr = rev_itr(itr); r_itr != sorted_rings.rend(); ++r_itr) { // If orientations are not different, this can't be its parent. if ((*r_itr)->is_hole() == (*itr)->is_hole()) { continue; } if (poly2_contains_poly1(*itr, *r_itr)) { reassign_as_child(*itr, *r_itr, manager); found = true; break; } } if (!found) { if ((*itr)->is_hole()) { throw std::runtime_error("Could not properly place hole to a parent."); } else { // Assign to base of tree by passing nullptr reassign_as_child(*itr, static_cast>(nullptr), manager); } } } } template bool correct_self_intersections(ring_manager& manager, bool correct_tree) { bool fixed_intersections = false; auto sorted_rings = sort_rings_smallest_to_largest(manager); for (auto const& r : sorted_rings) { if (correct_ring_self_intersections(manager, r, correct_tree)) { fixed_intersections = true; } } return fixed_intersections; } template void correct_topology(ring_manager& manager) { // Sort all the points, this will be used for the locating of chained rings // and the collinear edges and only needs to be done once. std::stable_sort(manager.all_points.begin(), manager.all_points.end(), point_ptr_cmp()); // Initially the orientations of the rings // could be incorrect, we need to adjust them correct_orientations(manager); // We should only have to fix collinear edges once. // During this we also correct self intersections correct_collinear_edges(manager); correct_self_intersections(manager, false); correct_tree(manager); bool fixed_intersections = true; while (fixed_intersections) { correct_chained_rings(manager); fixed_intersections = correct_self_intersections(manager, true); } } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/util.hpp000066400000000000000000000063541360766232600222610ustar00rootroot00000000000000#pragma once #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template double area(mapbox::geometry::linear_ring const& poly) { std::size_t size = poly.size(); if (size < 3) { return 0.0; } double a = 0.0; auto itr = poly.begin(); auto itr_prev = poly.end(); --itr_prev; a += static_cast(itr_prev->x + itr->x) * static_cast(itr_prev->y - itr->y); ++itr; itr_prev = poly.begin(); for (; itr != poly.end(); ++itr, ++itr_prev) { a += static_cast(itr_prev->x + itr->x) * static_cast(itr_prev->y - itr->y); } return -a * 0.5; } inline bool values_are_equal(double x, double y) { return util::FloatingPoint(x).AlmostEquals(util::FloatingPoint(y)); } inline bool value_is_zero(double val) { return values_are_equal(val, static_cast(0.0)); } inline bool greater_than_or_equal(double x, double y) { return x > y || values_are_equal(x, y); } inline bool greater_than(double x, double y) { return (!values_are_equal(x, y) && x > y); } inline bool less_than(double x, double y) { return (!values_are_equal(x, y) && x < y); } template bool slopes_equal(mapbox::geometry::point const& pt1, mapbox::geometry::point const& pt2, mapbox::geometry::point const& pt3) { return static_cast(pt1.y - pt2.y) * static_cast(pt2.x - pt3.x) == static_cast(pt1.x - pt2.x) * static_cast(pt2.y - pt3.y); } template bool slopes_equal(mapbox::geometry::wagyu::point const& pt1, mapbox::geometry::wagyu::point const& pt2, mapbox::geometry::point const& pt3) { return static_cast(pt1.y - pt2.y) * static_cast(pt2.x - pt3.x) == static_cast(pt1.x - pt2.x) * static_cast(pt2.y - pt3.y); } template bool slopes_equal(mapbox::geometry::wagyu::point const& pt1, mapbox::geometry::wagyu::point const& pt2, mapbox::geometry::wagyu::point const& pt3) { return static_cast(pt1.y - pt2.y) * static_cast(pt2.x - pt3.x) == static_cast(pt1.x - pt2.x) * static_cast(pt2.y - pt3.y); } template bool slopes_equal(mapbox::geometry::point const& pt1, mapbox::geometry::point const& pt2, mapbox::geometry::point const& pt3, mapbox::geometry::point const& pt4) { return static_cast(pt1.y - pt2.y) * static_cast(pt3.x - pt4.x) == static_cast(pt1.x - pt2.x) * static_cast(pt3.y - pt4.y); } template inline T wround(double value) { return static_cast(::llround(value)); } template <> inline std::int64_t wround(double value) { return ::llround(value); } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/vatti.hpp000066400000000000000000000051031360766232600224220ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template void execute_vatti(local_minimum_list& minima_list, ring_manager& manager, clip_type cliptype, fill_type subject_fill_type, fill_type clip_fill_type) { active_bound_list active_bounds; scanbeam_list scanbeam; T scanline_y = std::numeric_limits::max(); local_minimum_ptr_list minima_sorted; minima_sorted.reserve(minima_list.size()); for (auto& lm : minima_list) { minima_sorted.push_back(&lm); } std::stable_sort(minima_sorted.begin(), minima_sorted.end(), local_minimum_sorter()); local_minimum_ptr_list_itr current_lm = minima_sorted.begin(); // std::clog << output_all_edges(minima_sorted) << std::endl; setup_scanbeam(minima_list, scanbeam); manager.current_hp_itr = manager.hot_pixels.begin(); while (pop_from_scanbeam(scanline_y, scanbeam) || current_lm != minima_sorted.end()) { process_intersections(scanline_y, active_bounds, cliptype, subject_fill_type, clip_fill_type, manager); update_current_hp_itr(scanline_y, manager); // First we process bounds that has already been added to the active bound list -- // if the active bound list is empty local minima that are at this scanline_y and // have a horizontal edge at the local minima will be processed process_edges_at_top_of_scanbeam(scanline_y, active_bounds, scanbeam, minima_sorted, current_lm, manager, cliptype, subject_fill_type, clip_fill_type); // Next we will add local minima bounds to the active bounds list that are on the local // minima queue at // this current scanline_y insert_local_minima_into_ABL(scanline_y, minima_sorted, current_lm, active_bounds, manager, scanbeam, cliptype, subject_fill_type, clip_fill_type); } } } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/include/mapbox/geometry/wagyu/wagyu.hpp000066400000000000000000000110211360766232600224230ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #define WAGYU_MAJOR_VERSION 0 #define WAGYU_MINOR_VERSION 5 #define WAGYU_PATCH_VERSION 0 #define WAGYU_VERSION (WAGYU_MAJOR_VERSION * 100000) + (WAGYU_MINOR_VERSION * 100) + (WAGYU_PATCH_VERSION) namespace mapbox { namespace geometry { namespace wagyu { template class wagyu { private: local_minimum_list minima_list; bool reverse_output; wagyu(wagyu const&) = delete; wagyu& operator=(wagyu const&) = delete; public: wagyu() : minima_list(), reverse_output(false) { } ~wagyu() { clear(); } template bool add_ring(mapbox::geometry::linear_ring const& pg, polygon_type p_type = polygon_type_subject) { return add_linear_ring(pg, minima_list, p_type); } template bool add_polygon(mapbox::geometry::polygon const& ppg, polygon_type p_type = polygon_type_subject) { bool result = false; for (auto const& r : ppg) { if (add_ring(r, p_type)) { result = true; } } return result; } void reverse_rings(bool value) { reverse_output = value; } void clear() { minima_list.clear(); } mapbox::geometry::box get_bounds() { mapbox::geometry::point min = { 0, 0 }; mapbox::geometry::point max = { 0, 0 }; if (minima_list.empty()) { return mapbox::geometry::box(min, max); } bool first_set = false; for (auto const& lm : minima_list) { if (!lm.left_bound.edges.empty()) { if (!first_set) { min = lm.left_bound.edges.front().top; max = lm.left_bound.edges.back().bot; first_set = true; } else { min.y = std::min(min.y, lm.left_bound.edges.front().top.y); max.y = std::max(max.y, lm.left_bound.edges.back().bot.y); max.x = std::max(max.x, lm.left_bound.edges.back().top.x); min.x = std::min(min.x, lm.left_bound.edges.back().top.x); } for (auto const& e : lm.left_bound.edges) { max.x = std::max(max.x, e.bot.x); min.x = std::min(min.x, e.bot.x); } } if (!lm.right_bound.edges.empty()) { if (!first_set) { min = lm.right_bound.edges.front().top; max = lm.right_bound.edges.back().bot; first_set = true; } else { min.y = std::min(min.y, lm.right_bound.edges.front().top.y); max.y = std::max(max.y, lm.right_bound.edges.back().bot.y); max.x = std::max(max.x, lm.right_bound.edges.back().top.x); min.x = std::min(min.x, lm.right_bound.edges.back().top.x); } for (auto const& e : lm.right_bound.edges) { max.x = std::max(max.x, e.bot.x); min.x = std::min(min.x, e.bot.x); } } } return mapbox::geometry::box(min, max); } template bool execute(clip_type cliptype, mapbox::geometry::multi_polygon& solution, fill_type subject_fill_type, fill_type clip_fill_type) { if (minima_list.empty()) { return false; } ring_manager manager; interrupt_check(); // Check for interruptions build_hot_pixels(minima_list, manager); interrupt_check(); // Check for interruptions execute_vatti(minima_list, manager, cliptype, subject_fill_type, clip_fill_type); interrupt_check(); // Check for interruptions correct_topology(manager); build_result(solution, manager, reverse_output); return true; } }; } // namespace wagyu } // namespace geometry } // namespace mapbox wagyu-0.5.0/mason.sh000077500000000000000000000134541360766232600143460ustar00rootroot00000000000000#!/usr/bin/env bash # Mason Client Version 1.0.0 # See below for `set -euo pipefail` # Print file + line number when not in CLI mode if [[ "$0" != "$BASH_SOURCE" ]]; then function mason_error { local _LINE _FN _FILE read _LINE _FN _FILE <<< "`caller 1`" if [ -t 1 ]; then >&2 echo -e "\033[1m\033[31m$@ in ${_FILE} on line ${_LINE}\033[0m" else >&2 echo "$@ in ${_FILE} on line ${_LINE}" fi } else function mason_error { if [ -t 1 ]; then >&2 echo -e "\033[1m\033[31m$@\033[0m" else >&2 echo "$@" fi } fi function mason_info { if [ -t 1 ]; then >&2 echo -e "\033[1m\033[36m$@\033[0m" else >&2 echo "$@" fi } function mason_detect_platform { # Determine platform if [[ -z "${MASON_PLATFORM:-}" ]]; then if [[ "`uname -s`" = 'Darwin' ]]; then MASON_PLATFORM="osx" else MASON_PLATFORM="linux" fi fi # Determine platform version string if [[ -z "${MASON_PLATFORM_VERSION:-}" ]]; then MASON_PLATFORM_VERSION="`uname -m`" fi } function mason_trim { local _TMP="${1#"${1%%[![:space:]]*}"}" echo -n "${_TMP%"${_TMP##*[![:space:]]}"}" } function mason_uppercase { echo -n "$1" | tr "[a-z]" "[A-Z]" } function mason_use { local _HEADER_ONLY=false _PACKAGE _SAFE_PACKAGE _VERSION _PLATFORM_ID _SLUG _INSTALL_PATH _INSTALL_PATH_RELATIVE while [[ $# -gt 0 ]]; do if [[ $1 == "--header-only" ]]; then _HEADER_ONLY=true elif [[ -z "${_PACKAGE:-}" ]]; then _PACKAGE="$1" elif [[ -z "${_VERSION:-}" ]]; then _VERSION="$1" else mason_error "[Mason] mason_use() called with unrecognized arguments: '$@'" exit 1 fi shift done if [[ -z "${_PACKAGE:-}" ]]; then mason_error "[Mason] No package name given" exit 1 fi # Create a package name that we can use as shell variable names. _SAFE_PACKAGE="${_PACKAGE//[![:alnum:]]/_}" if [[ -z "${_VERSION:-}" ]]; then mason_error "[Mason] Specifying a version is required" exit 1 fi _PLATFORM_ID="${MASON_PLATFORM}-${MASON_PLATFORM_VERSION}" if [[ "${_HEADER_ONLY}" = true ]] ; then _PLATFORM_ID="headers" fi _SLUG="${_PLATFORM_ID}/${_PACKAGE}/${_VERSION}" _INSTALL_PATH="${MASON_PACKAGE_DIR}/${_SLUG}" _INSTALL_PATH_RELATIVE="${_INSTALL_PATH#`pwd`/}" if [[ ! -d "${_INSTALL_PATH}" ]]; then local _CACHE_PATH _URL _CACHE_DIR _ERROR _CACHE_PATH="${MASON_PACKAGE_DIR}/.binaries/${_SLUG}.tar.gz" if [ ! -f "${_CACHE_PATH}" ]; then # Download the package _URL="${MASON_REPOSITORY}/${_SLUG}.tar.gz" mason_info "[Mason] Downloading package ${_URL}..." _CACHE_DIR="`dirname "${_CACHE_PATH}"`" mkdir -p "${_CACHE_DIR}" if ! _ERROR=$(curl --retry 3 --silent --fail --show-error --location "${_URL}" --output "${_CACHE_PATH}.tmp" 2>&1); then mason_error "[Mason] ${_ERROR}" exit 1 else # We downloaded to a temporary file to prevent half-finished downloads mv "${_CACHE_PATH}.tmp" "${_CACHE_PATH}" fi fi # Unpack the package mason_info "[Mason] Unpacking package to ${_INSTALL_PATH_RELATIVE}..." mkdir -p "${_INSTALL_PATH}" tar xzf "${_CACHE_PATH}" -C "${_INSTALL_PATH}" fi # Error out if there is no config file. if [[ ! -f "${_INSTALL_PATH}/mason.ini" ]]; then mason_error "[Mason] Could not find mason.ini for package ${_PACKAGE} ${_VERSION}" exit 1 fi # We use this instead of declare, since it declare makes local variables when run in a function. read "MASON_PACKAGE_${_SAFE_PACKAGE}_PREFIX" <<< "${_INSTALL_PATH}" # Load the configuration from the ini file local _LINE _KEY _VALUE while read _LINE; do _KEY="`mason_trim "${_LINE%%=*}"`" if [[ "${_KEY}" =~ ^[a-z_]+$ ]]; then _KEY="`mason_uppercase "${_KEY}"`" # Convert to uppercase _LINE="${_LINE%%;*}" # Trim trailing comments _VALUE="`mason_trim "${_LINE#*=}"`" _VALUE="${_VALUE//\{prefix\}/${_INSTALL_PATH}}" # Replace {prefix} read "MASON_PACKAGE_${_SAFE_PACKAGE}_${_KEY}" <<< "${_VALUE}" fi done < "${_INSTALL_PATH}/mason.ini" # We're using the fact that this variable is declared to pass back the package name we parsed # from the argument string to avoid polluting the global namespace. if [ ! -z ${_MASON_SAFE_PACKAGE_NAME+x} ]; then _MASON_SAFE_PACKAGE_NAME="${_SAFE_PACKAGE}" fi } function mason_cli { local _MASON_SAFE_PACKAGE_NAME= _PROP _VAR if [[ $# -lt 1 ]]; then mason_error "[Mason] Usage: $0 [--header-only] " mason_error "[Mason] is one of 'include_dirs', 'definitions', 'options', 'ldflags', 'static_libs', or any custom variables in the package's mason.ini." exit 1 fi # Store first argument and pass the remaining arguments to mason_use _PROP="`mason_uppercase "$1"`" shift mason_use "$@" # Optionally print variables _VAR="MASON_PACKAGE_${_MASON_SAFE_PACKAGE_NAME}_${_PROP}" if [[ ! -z "${!_VAR:-}" ]]; then echo "${!_VAR}" fi } # Directory where Mason packages are located; typically ends with mason_packages if [[ -z "${MASON_PACKAGE_DIR:-}" ]]; then MASON_PACKAGE_DIR="`pwd`/mason_packages" fi # URL prefix of where packages are located. if [[ -z "${MASON_REPOSITORY:-}" ]]; then MASON_REPOSITORY="https://mason-binaries.s3.amazonaws.com" fi mason_detect_platform # Print variables if this shell script is invoked directly. if [[ "$0" = "$BASH_SOURCE" ]]; then set -euo pipefail mason_cli "$@" fi wagyu-0.5.0/scripts/000077500000000000000000000000001360766232600143525ustar00rootroot00000000000000wagyu-0.5.0/scripts/clang-tidy.sh000077500000000000000000000021531360766232600167450ustar00rootroot00000000000000#!/usr/bin/env bash set -eu set -o pipefail # https://clang.llvm.org/extra/clang-tidy/ # to speed up re-runs, only re-create environment if needed if [[ ! -f local.env ]]; then # automatically setup environment ./scripts/setup.sh --config local.env fi # source the environment source local.env PATH_TO_CLANG_TIDY_SCRIPT="$(pwd)/mason_packages/.link/share/run-clang-tidy.py" # to speed up re-runs, only install clang-tidy if needed if [[ ! -f PATH_TO_CLANG_TIDY_SCRIPT ]]; then # The MASON_LLVM_RELEASE variable comes from `local.env` mason install clang-tidy ${MASON_LLVM_RELEASE} # We link the tools to make it easy to know ${PATH_TO_CLANG_TIDY_SCRIPT} mason link clang-tidy ${MASON_LLVM_RELEASE} fi # build the compile_commands.json file if it does not exist if [[ ! -f cmake-build/compile_commands.json ]]; then # the build automatically puts the compile commands in the ./build directory make fi # change into the build directory so that clang-tidy can find the files # at the right paths (since this is where the actual build happens) cd cmake-build ${PATH_TO_CLANG_TIDY_SCRIPT} -fix wagyu-0.5.0/scripts/coverage.sh000077500000000000000000000020161360766232600165030ustar00rootroot00000000000000#!/usr/bin/env bash set -eu set -o pipefail # http://clang.llvm.org/docs/UsersManual.html#profiling-with-instrumentation # https://www.bignerdranch.com/blog/weve-got-you-covered/ # automatically setup environment ./scripts/setup.sh --config local.env source local.env make clean export CXXFLAGS="-fprofile-instr-generate -fcoverage-mapping" export LDFLAGS="-fprofile-instr-generate" mason install llvm-cov ${MASON_LLVM_RELEASE} mason link llvm-cov ${MASON_LLVM_RELEASE} make debug rm -f *profraw rm -f *gcov rm -f *profdata LLVM_PROFILE_FILE="code-%p.profraw" make test CXX_MODULE="./cmake-build/unit-tests" llvm-profdata merge -output=code.profdata code-*.profraw llvm-cov report ${CXX_MODULE} -instr-profile=code.profdata -use-color llvm-cov show ${CXX_MODULE} -instr-profile=code.profdata src/*.cpp -filename-equivalence -use-color llvm-cov show ${CXX_MODULE} -instr-profile=code.profdata src/*.cpp -filename-equivalence -use-color --format html > /tmp/coverage.html echo "open /tmp/coverage.html for HTML version of this report" wagyu-0.5.0/scripts/format.sh000077500000000000000000000015301360766232600162000ustar00rootroot00000000000000#!/usr/bin/env bash set -eu set -o pipefail : ' Runs clang-format on the code in include/ Return `1` if there are files to be formatted, and automatically formats them. Returns `0` if everything looks properly formatted. ' # Set up the environment by installing mason and clang++ ./scripts/setup.sh --config local.env source local.env # Add clang-format as a dep mason install clang-format ${MASON_LLVM_RELEASE} mason link clang-format ${MASON_LLVM_RELEASE} # Run clang-format on all cpp and hpp files in the /src directory find include/ bench/ tests/ -type f -name '*.hpp' -or -name '*.cpp' \ | xargs -I{} clang-format -i -style=file {} # Print list of modified files dirty=$(git ls-files --modified include/ bench/ tests/) if [[ $dirty ]]; then echo "The following files have been modified:" echo $dirty exit 1 else exit 0 fi wagyu-0.5.0/scripts/setup.sh000077500000000000000000000111701360766232600160510ustar00rootroot00000000000000#!/usr/bin/env bash set -eu set -o pipefail export MASON_RELEASE="${_MASON_RELEASE:-v0.21.0}" export MASON_LLVM_RELEASE="${_MASON_LLVM_RELEASE:-9.0.0}" PLATFORM=$(uname | tr A-Z a-z) if [[ ${PLATFORM} == 'darwin' ]]; then PLATFORM="osx" fi MASON_URL="https://s3.amazonaws.com/mason-binaries/${PLATFORM}-$(uname -m)" llvm_toolchain_dir="$(pwd)/.toolchain" function run() { local config=${1} # unbreak bash shell due to rvm bug on osx: https://github.com/direnv/direnv/issues/210#issuecomment-203383459 # this impacts any usage of scripts that are source'd (like this one) if [[ "${TRAVIS_OS_NAME:-}" == "osx" ]]; then echo 'shell_session_update() { :; }' > ~/.direnvrc fi # # COMPILER TOOLCHAIN # # We install clang++ without the mason client for a couple reasons: # 1) decoupling makes it viable to use a custom branch of mason that might # modify the upstream s3 bucket in a such a way that does not give # it access to build tools like clang++ # 2) Allows us to short-circuit and use a global clang++ install if it # is available to save space for local builds. GLOBAL_CLANG="${HOME}/.mason/mason_packages/${PLATFORM}-$(uname -m)/clang++/${MASON_LLVM_RELEASE}" GLOBAL_LLVM="${HOME}/.mason/mason_packages/${PLATFORM}-$(uname -m)/llvm/${MASON_LLVM_RELEASE}" if [[ -d ${GLOBAL_LLVM} ]]; then echo "Detected '${GLOBAL_LLVM}/bin/clang++', using it" local llvm_toolchain_dir=${GLOBAL_LLVM} elif [[ -d ${GLOBAL_CLANG} ]]; then echo "Detected '${GLOBAL_CLANG}/bin/clang++', using it" local llvm_toolchain_dir=${GLOBAL_CLANG} elif [[ -d ${GLOBAL_CLANG} ]]; then echo "Detected '${GLOBAL_CLANG}/bin/clang++', using it" local llvm_toolchain_dir=${GLOBAL_CLANG} elif [[ ! -d ${llvm_toolchain_dir} ]]; then BINARY="${MASON_URL}/clang++/${MASON_LLVM_RELEASE}.tar.gz" echo "Downloading ${BINARY}" mkdir -p ${llvm_toolchain_dir} curl -sSfL ${BINARY} | tar --gunzip --extract --strip-components=1 --directory=${llvm_toolchain_dir} fi # # MASON # function setup_mason() { local install_dir=${1} local mason_release=${2} mkdir -p ${install_dir} curl -sSfL https://github.com/mapbox/mason/archive/${mason_release}.tar.gz | tar --gunzip --extract --strip-components=1 --directory=${install_dir} } setup_mason $(pwd)/.mason ${MASON_RELEASE} # # ENV SETTINGS # echo "export PATH=${llvm_toolchain_dir}/bin:$(pwd)/.mason:$(pwd)/mason_packages/.link/bin:"'${PATH}' > ${config} echo "export CXX=${CXX:-${llvm_toolchain_dir}/bin/clang++}" >> ${config} echo "export MASON_RELEASE=${MASON_RELEASE}" >> ${config} echo "export MASON_LLVM_RELEASE=${MASON_LLVM_RELEASE}" >> ${config} # https://github.com/google/sanitizers/wiki/AddressSanitizerAsDso RT_BASE=${llvm_toolchain_dir}/lib/clang/${MASON_LLVM_RELEASE}/lib/$(uname | tr A-Z a-z)/libclang_rt if [[ $(uname -s) == 'Darwin' ]]; then RT_PRELOAD=${RT_BASE}.asan_osx_dynamic.dylib else RT_PRELOAD=${RT_BASE}.asan-x86_64.so fi echo "export MASON_LLVM_RT_PRELOAD=${RT_PRELOAD}" >> ${config} SUPPRESSION_FILE="/tmp/leak_suppressions.txt" # Add suppressions as needed #echo "leak:__strdup" > ${SUPPRESSION_FILE} echo "export ASAN_SYMBOLIZER_PATH=${llvm_toolchain_dir}/bin/llvm-symbolizer" >> ${config} echo "export MSAN_SYMBOLIZER_PATH=${llvm_toolchain_dir}/bin/llvm-symbolizer" >> ${config} echo "export UBSAN_OPTIONS=print_stacktrace=1" >> ${config} if [[ -f ${SUPPRESSION_FILE} ]]; then echo "export LSAN_OPTIONS=suppressions=${SUPPRESSION_FILE}" >> ${config} fi echo "export ASAN_OPTIONS=symbolize=1:abort_on_error=1:detect_container_overflow=1:check_initialization_order=1:detect_stack_use_after_return=1" >> ${config} echo 'export MASON_SANITIZE="-fsanitize=address,undefined -fno-sanitize=vptr,function"' >> ${config} echo 'export MASON_SANITIZE_CXXFLAGS="${MASON_SANITIZE} -fno-sanitize=vptr,function -fsanitize-address-use-after-scope -fno-omit-frame-pointer -fno-common"' >> ${config} echo 'export MASON_SANITIZE_LDFLAGS="${MASON_SANITIZE}"' >> ${config} exit 0 } function usage() { >&2 echo "Usage" >&2 echo "" >&2 echo "$ ./scripts/setup.sh --config local.env" >&2 echo "$ source local.env" >&2 echo "" exit 1 } if [[ ! ${1:-} ]]; then usage fi # https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash for i in "$@" do case $i in --config) if [[ ! ${2:-} ]]; then usage fi shift run $@ ;; -h | --help) usage shift ;; *) usage ;; esac done wagyu-0.5.0/tests/000077500000000000000000000000001360766232600140255ustar00rootroot00000000000000wagyu-0.5.0/tests/expected/000077500000000000000000000000001360766232600156265ustar00rootroot00000000000000wagyu-0.5.0/tests/expected/difference-clockwise-polygon-clockwise-hole.json000066400000000000000000000000711360766232600271650ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/difference-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000000711360766232600306420ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/difference-clockwise-polygon.json000066400000000000000000000000021360766232600242510ustar00rootroot00000000000000[]wagyu-0.5.0/tests/expected/difference-counter-clockwise-polygon-clockwise-hole.json000066400000000000000000000000711360766232600306420ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/difference-counter-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000000711360766232600323170ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/difference-counter-clockwise-polygon.json000066400000000000000000000000021360766232600257260ustar00rootroot00000000000000[]wagyu-0.5.0/tests/expected/difference-multi-polygon-with-duplicate-polygon.json000066400000000000000000000001051360766232600300320ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/difference-multi-polygon-with-shared-edge.json000066400000000000000000000001511360766232600265440ustar00rootroot00000000000000[[[[2500,1543],[2116,2500],[1285,2500],[-517,2129],[-2500,-482],[-2500,-2500],[2500,-2500],[2500,1543]]]]wagyu-0.5.0/tests/expected/difference-multi-polygon-with-spikes.json000066400000000000000000000001421360766232600256720ustar00rootroot00000000000000[[[[1462,2500],[-2500,2500],[-2500,-2500],[-2466,-2500],[-2443,-2448],[-2439,-2470],[1462,2500]]]]wagyu-0.5.0/tests/expected/difference-multipolygon-both-clockwise.json000066400000000000000000000001011360766232600262560ustar00rootroot00000000000000[[[[1747,-852],[1127,1031],[-1427,264],[153,-1611],[1747,-852]]]]wagyu-0.5.0/tests/expected/difference-multipolygon-both-counter-clockwise.json000066400000000000000000000001011360766232600277330ustar00rootroot00000000000000[[[[1747,-852],[1127,1031],[-1427,264],[153,-1611],[1747,-852]]]]wagyu-0.5.0/tests/expected/difference-multipolygon-overlap-different-orientations.json000066400000000000000000000001011360766232600314710ustar00rootroot00000000000000[[[[1747,-852],[1127,1031],[-1427,264],[153,-1611],[1747,-852]]]]difference-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600357450ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]difference-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-counter-clockwise.json000066400000000000000000000000721360766232600374220ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]wagyu-0.5.0/tests/expected/difference-nested-multi-polygon-outer-clockwise-inner-clockwise.json000066400000000000000000000000711360766232600331150ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]difference-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600374220ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]difference-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-counter-clockwise.json000066400000000000000000000000721360766232600410770ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]difference-nested-multi-polygon-outer-clockwise-inner-counter-clockwise.json000066400000000000000000000000711360766232600345130ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]difference-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600374220ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]difference-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-counter-clockwise.json000066400000000000000000000000721360766232600410770ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]difference-nested-multi-polygon-outer-counter-clockwise-inner-clockwise.json000066400000000000000000000000711360766232600345130ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]difference-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600410770ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]ed9f280ce02a9b4a9a8b457b6295b60a1329161b.paxheader00006660000000000000000000000220136076623260020432xustar00rootroot00000000000000144 path=wagyu-0.5.0/tests/expected/difference-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-counter-clockwise.json ed9f280ce02a9b4a9a8b457b6295b60a1329161b.data000066400000000000000000000000721360766232600172750ustar00rootroot00000000000000[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]difference-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise.json000066400000000000000000000000711360766232600361700ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/difference-overlapping-multi-polygon.json000066400000000000000000000001151360766232600257510ustar00rootroot00000000000000[[[[698,-113],[1281,2274],[-658,2500],[-1679,2500],[-2307,-247],[698,-113]]]]wagyu-0.5.0/tests/expected/difference-polygon-covered-with-hole.json000066400000000000000000000001051360766232600256170ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/difference-polygon-no-interior.json000066400000000000000000000001051360766232600245370ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/difference-polygon-two-intersecting-holes-and-self-intersection.json000066400000000000000000000001061360766232600331030ustar00rootroot00000000000000[[[[-1792,2388],[-1903,2500],[-2500,2500],[-2500,1282],[-1792,2388]]]]wagyu-0.5.0/tests/expected/difference-polygon-two-intersecting-holes.json000066400000000000000000000001641360766232600267140ustar00rootroot00000000000000[[[[222,-1510],[-810,-161],[858,390],[228,2500],[-1720,2500],[-2500,1282],[-2500,-1252],[-1211,-2262],[222,-1510]]]]wagyu-0.5.0/tests/expected/difference-polygon-with-double-nested-holes.json000066400000000000000000000003701360766232600271110ustar00rootroot00000000000000[[[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]],[[[2500,-2027],[2500,1567],[2283,2500],[-1351,2500],[-2500,1983],[-2500,-1710],[-2291,-2500],[1330,-2500],[2500,-2027]],[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]]]wagyu-0.5.0/tests/expected/difference-polygon-with-extending-hole.json000066400000000000000000000001011360766232600261510ustar00rootroot00000000000000[[[[1747,-852],[1127,1031],[-1427,264],[153,-1611],[1747,-852]]]]wagyu-0.5.0/tests/expected/difference-polygon-with-exterior-hole.json000066400000000000000000000002031360766232600260300ustar00rootroot00000000000000[[[[-152,-2332],[-247,2500],[-2500,2500],[-2500,1535],[-1672,2163],[-1597,855],[-2500,-3],[-2500,-2500],[-50,-2500],[-152,-2332]]]]wagyu-0.5.0/tests/expected/difference-polygon-with-hole-shared-edge.json000066400000000000000000000001511360766232600263410ustar00rootroot00000000000000[[[[2500,1543],[2116,2500],[1285,2500],[-517,2129],[-2500,-482],[-2500,-2500],[2500,-2500],[2500,1543]]]]wagyu-0.5.0/tests/expected/difference-polygon-with-hole-with-shared-point.json000066400000000000000000000001341360766232600275400ustar00rootroot00000000000000[[[[2500,588],[2500,1252],[-1657,1185],[-2500,-146],[-2500,-1308],[1563,-1814],[2500,588]]]]wagyu-0.5.0/tests/expected/difference-polygon-with-spike.json000066400000000000000000000001401360766232600243550ustar00rootroot00000000000000[[[[2500,2497],[2500,2500],[-2500,2500],[-2500,-2484],[-2482,-2452],[-2475,-2478],[2500,2497]]]]wagyu-0.5.0/tests/expected/difference-polygon-with-two-holes-outside-exterior-ring.json000066400000000000000000000003701360766232600314360ustar00rootroot00000000000000[[[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]],[[[2500,-2027],[2500,1567],[2283,2500],[-1351,2500],[-2500,1983],[-2500,-1710],[-2291,-2500],[1330,-2500],[2500,-2027]],[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]]]wagyu-0.5.0/tests/expected/difference-self-intersecting-ring-polygon.json000066400000000000000000000000711360766232600266560ustar00rootroot00000000000000[[[[-2453,2500],[-2500,2500],[-2500,2448],[-2453,2500]]]]wagyu-0.5.0/tests/expected/intersection-clockwise-polygon-clockwise-hole.json000066400000000000000000000003301360766232600275770ustar00rootroot00000000000000[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]wagyu-0.5.0/tests/expected/intersection-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000003301360766232600312540ustar00rootroot00000000000000[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]wagyu-0.5.0/tests/expected/intersection-clockwise-polygon.json000066400000000000000000000001051360766232600246710ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/intersection-counter-clockwise-polygon-clockwise-hole.json000066400000000000000000000003301360766232600312540ustar00rootroot00000000000000[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]wagyu-0.5.0/tests/expected/intersection-counter-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000003301360766232600327310ustar00rootroot00000000000000[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]wagyu-0.5.0/tests/expected/intersection-counter-clockwise-polygon.json000066400000000000000000000001051360766232600263460ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/intersection-multi-polygon-with-duplicate-polygon.json000066400000000000000000000000021360766232600304420ustar00rootroot00000000000000[]wagyu-0.5.0/tests/expected/intersection-multi-polygon-with-shared-edge.json000066400000000000000000000001031360766232600271550ustar00rootroot00000000000000[[[[-517,2129],[1285,2500],[-2500,2500],[-2500,-482],[-517,2129]]]]wagyu-0.5.0/tests/expected/intersection-multi-polygon-with-spikes.json000066400000000000000000000001051360766232600263050ustar00rootroot00000000000000[[[[1467,2500],[1462,2500],[-2439,-2470],[-2436,-2484],[1467,2500]]]]wagyu-0.5.0/tests/expected/intersection-multipolygon-both-clockwise.json000066400000000000000000000001671360766232600267060ustar00rootroot00000000000000[[[[153,-1611],[-1427,264],[1127,1031],[644,2500],[-2500,2500],[-2500,-2328],[-2258,-2500],[-1714,-2500],[153,-1611]]]]wagyu-0.5.0/tests/expected/intersection-multipolygon-both-counter-clockwise.json000066400000000000000000000001671360766232600303630ustar00rootroot00000000000000[[[[153,-1611],[-1427,264],[1127,1031],[644,2500],[-2500,2500],[-2500,-2328],[-2258,-2500],[-1714,-2500],[153,-1611]]]]wagyu-0.5.0/tests/expected/intersection-multipolygon-overlap-different-orientations.json000066400000000000000000000001671360766232600321210ustar00rootroot00000000000000[[[[153,-1611],[-1427,264],[1127,1031],[644,2500],[-2500,2500],[-2500,-2328],[-2258,-2500],[-1714,-2500],[153,-1611]]]]intersection-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000004341360766232600363630ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]intersection-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-counter-clockwise.json000066400000000000000000000004341360766232600400400ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]wagyu-0.5.0/tests/expected/intersection-nested-multi-polygon-outer-clockwise-inner-clockwise.json000066400000000000000000000003301360766232600335270ustar00rootroot00000000000000[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]intersection-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-clockwise.json000066400000000000000000000004341360766232600400400ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]ef2ddaa401851cea8451b56c2d598737caa2a221.paxheader00006660000000000000000000000212136076623260020557xustar00rootroot00000000000000138 path=wagyu-0.5.0/tests/expected/intersection-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-counter-clockwise.json ef2ddaa401851cea8451b56c2d598737caa2a221.data000066400000000000000000000004341360766232600174230ustar00rootroot00000000000000[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]intersection-nested-multi-polygon-outer-clockwise-inner-counter-clockwise.json000066400000000000000000000003301360766232600351250ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]intersection-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000004341360766232600400400ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]ef2ddaa401851cea8451b56c2d598737caa2a221.paxheader00006660000000000000000000000212136076623260020557xustar00rootroot00000000000000138 path=wagyu-0.5.0/tests/expected/intersection-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-counter-clockwise.json ef2ddaa401851cea8451b56c2d598737caa2a221.data000066400000000000000000000004341360766232600174230ustar00rootroot00000000000000[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]intersection-nested-multi-polygon-outer-counter-clockwise-inner-clockwise.json000066400000000000000000000003301360766232600351250ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]ef2ddaa401851cea8451b56c2d598737caa2a221.paxheader00006660000000000000000000000212136076623260020557xustar00rootroot00000000000000138 path=wagyu-0.5.0/tests/expected/intersection-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-clockwise.json ef2ddaa401851cea8451b56c2d598737caa2a221.data000066400000000000000000000004341360766232600174230ustar00rootroot00000000000000[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]ef2ddaa401851cea8451b56c2d598737caa2a221.paxheader00006660000000000000000000000222136076623260020560xustar00rootroot00000000000000146 path=wagyu-0.5.0/tests/expected/intersection-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-counter-clockwise.json ef2ddaa401851cea8451b56c2d598737caa2a221.data000066400000000000000000000004341360766232600174230ustar00rootroot00000000000000[[[[-686,-577],[-1275,-303],[-1683,-581],[-1185,-817],[-686,-577]]],[[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]],[[[2500,2500],[-1399,2500],[-2500,-1591],[-2500,-2500],[2500,-2500],[2500,2500]],[[-2053,-581],[-437,1289],[1935,-729],[-1177,-1092],[-2053,-581]]]]intersection-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise.json000066400000000000000000000003301360766232600366020ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]],[[[2500,2500],[-1579,2500],[-2500,-923],[-2500,-2500],[2500,-2500],[2500,2500]],[[-1900,-720],[-1492,-442],[-903,-716],[-1401,-956],[-1900,-720]]]]wagyu-0.5.0/tests/expected/intersection-overlapping-multi-polygon.json000066400000000000000000000001361360766232600263700ustar00rootroot00000000000000[[[[-2307,-247],[-1679,2500],[-2500,2500],[-2500,-2500],[114,-2500],[698,-113],[-2307,-247]]]]wagyu-0.5.0/tests/expected/intersection-polygon-covered-with-hole.json000066400000000000000000000000021360766232600262270ustar00rootroot00000000000000[]wagyu-0.5.0/tests/expected/intersection-polygon-no-interior.json000066400000000000000000000000021360766232600251470ustar00rootroot00000000000000[]wagyu-0.5.0/tests/expected/intersection-polygon-two-intersecting-holes-and-self-intersection.json000066400000000000000000000001431360766232600335200ustar00rootroot00000000000000[[[[-1211,-2262],[-2450,-1292],[-2500,-1338],[-2500,-2500],[979,-2500],[222,-1510],[-1211,-2262]]]]wagyu-0.5.0/tests/expected/intersection-polygon-two-intersecting-holes.json000066400000000000000000000000711360766232600273250ustar00rootroot00000000000000[[[[-1720,2500],[-2500,2500],[-2500,1282],[-1720,2500]]]]wagyu-0.5.0/tests/expected/intersection-polygon-with-double-nested-holes.json000066400000000000000000000000711360766232600275230ustar00rootroot00000000000000[[[[-1351,2500],[-2500,2500],[-2500,1983],[-1351,2500]]]]wagyu-0.5.0/tests/expected/intersection-polygon-with-extending-hole.json000066400000000000000000000001671360766232600266010ustar00rootroot00000000000000[[[[153,-1611],[-1427,264],[1127,1031],[644,2500],[-2500,2500],[-2500,-2328],[-2258,-2500],[-1714,-2500],[153,-1611]]]]wagyu-0.5.0/tests/expected/intersection-polygon-with-exterior-hole.json000066400000000000000000000001171360766232600264500ustar00rootroot00000000000000[[[[2500,2500],[-247,2500],[-152,-2332],[-50,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/intersection-polygon-with-hole-shared-edge.json000066400000000000000000000001031360766232600267520ustar00rootroot00000000000000[[[[-517,2129],[1285,2500],[-2500,2500],[-2500,-482],[-517,2129]]]]wagyu-0.5.0/tests/expected/intersection-polygon-with-hole-with-shared-point.json000066400000000000000000000001211360766232600301500ustar00rootroot00000000000000[[[[-1657,1185],[2500,1252],[2500,2500],[-2500,2500],[-2500,-146],[-1657,1185]]]]wagyu-0.5.0/tests/expected/intersection-polygon-with-spike.json000066400000000000000000000001051360766232600247720ustar00rootroot00000000000000[[[[2500,2487],[2500,2497],[-2475,-2478],[-2471,-2493],[2500,2487]]]]wagyu-0.5.0/tests/expected/intersection-polygon-with-two-holes-outside-exterior-ring.json000066400000000000000000000000711360766232600320500ustar00rootroot00000000000000[[[[-1351,2500],[-2500,2500],[-2500,1983],[-1351,2500]]]]wagyu-0.5.0/tests/expected/intersection-self-intersecting-ring-polygon.json000066400000000000000000000002201360766232600272660ustar00rootroot00000000000000[[[[2500,1061],[-324,-1745],[-2104,-430],[-947,1164],[2500,1717],[2500,2500],[-2453,2500],[-2500,2448],[-2500,-2500],[2500,-2500],[2500,1061]]]]wagyu-0.5.0/tests/expected/union-clockwise-polygon-clockwise-hole.json000066400000000000000000000001541360766232600262250ustar00rootroot00000000000000[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]wagyu-0.5.0/tests/expected/union-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000001541360766232600277020ustar00rootroot00000000000000[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]wagyu-0.5.0/tests/expected/union-clockwise-polygon.json000066400000000000000000000001061360766232600233140ustar00rootroot00000000000000[[[[1790,-4475],[5174,4458],[-2137,5008],[-4826,-4992],[1790,-4475]]]]wagyu-0.5.0/tests/expected/union-counter-clockwise-polygon-clockwise-hole.json000066400000000000000000000001541360766232600277020ustar00rootroot00000000000000[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]wagyu-0.5.0/tests/expected/union-counter-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000001541360766232600313570ustar00rootroot00000000000000[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]wagyu-0.5.0/tests/expected/union-counter-clockwise-polygon.json000066400000000000000000000001061360766232600247710ustar00rootroot00000000000000[[[[1790,-4475],[5174,4458],[-2137,5008],[-4826,-4992],[1790,-4475]]]]wagyu-0.5.0/tests/expected/union-multi-polygon-with-duplicate-polygon.json000066400000000000000000000001051360766232600270700ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/union-multi-polygon-with-shared-edge.json000066400000000000000000000003411360766232600256030ustar00rootroot00000000000000[[[[1285,2500],[2053,2658],[2116,2500],[1285,2500]]],[[[-2500,-2500],[2500,-2500],[2500,1543],[4366,-3119],[4837,6264],[-5163,2658],[-4971,-3736],[-2500,-482],[-2500,-2500]],[[1285,2500],[2053,2658],[2116,2500],[1285,2500]]]]wagyu-0.5.0/tests/expected/union-multi-polygon-with-spikes.json000066400000000000000000000002251360766232600247320ustar00rootroot00000000000000[[[[-2462,-2500],[2500,-2500],[2500,2500],[1467,2500],[4324,6148],[1462,2500],[-2500,2500],[-2500,-2500],[-2466,-2500],[-2472,-2513],[-2462,-2500]]]]wagyu-0.5.0/tests/expected/union-multipolygon-both-clockwise.json000066400000000000000000000002711360766232600253240ustar00rootroot00000000000000[[[[4333,-1783],[2500,1224],[2500,2500],[644,2500],[-787,6847],[-5667,-76],[-2500,-2328],[-2500,-2500],[-2258,-2500],[-2040,-2655],[-1714,-2500],[903,-2500],[1453,-3153],[4333,-1783]]]]wagyu-0.5.0/tests/expected/union-multipolygon-both-counter-clockwise.json000066400000000000000000000002711360766232600270010ustar00rootroot00000000000000[[[[4333,-1783],[2500,1224],[2500,2500],[644,2500],[-787,6847],[-5667,-76],[-2500,-2328],[-2500,-2500],[-2258,-2500],[-2040,-2655],[-1714,-2500],[903,-2500],[1453,-3153],[4333,-1783]]]]wagyu-0.5.0/tests/expected/union-multipolygon-overlap-different-orientations.json000066400000000000000000000002711360766232600305370ustar00rootroot00000000000000[[[[4333,-1783],[2500,1224],[2500,2500],[644,2500],[-787,6847],[-5667,-76],[-2500,-2328],[-2500,-2500],[-2258,-2500],[-2040,-2655],[-1714,-2500],[903,-2500],[1453,-3153],[4333,-1783]]]]union-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000001551360766232600350050ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]union-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-counter-clockwise.json000066400000000000000000000001551360766232600364620ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]wagyu-0.5.0/tests/expected/union-nested-multi-polygon-outer-clockwise-inner-clockwise.json000066400000000000000000000001541360766232600321550ustar00rootroot00000000000000[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]union-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-clockwise.json000066400000000000000000000001551360766232600364620ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]union-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-counter-clockwise.json000066400000000000000000000001551360766232600401370ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]wagyu-0.5.0/tests/expected/union-nested-multi-polygon-outer-clockwise-inner-counter-clockwise.json000066400000000000000000000001541360766232600336320ustar00rootroot00000000000000[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]union-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000001551360766232600364620ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]union-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-counter-clockwise.json000066400000000000000000000001551360766232600401370ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]wagyu-0.5.0/tests/expected/union-nested-multi-polygon-outer-counter-clockwise-inner-clockwise.json000066400000000000000000000001541360766232600336320ustar00rootroot00000000000000[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]union-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-clockwise.json000066400000000000000000000001551360766232600401370ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]9e67857d364cc277bdcb0b5efc5c20fea0734bdf.paxheader00006660000000000000000000000213136076623260021027xustar00rootroot00000000000000139 path=wagyu-0.5.0/tests/expected/union-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-counter-clockwise.json 9e67857d364cc277bdcb0b5efc5c20fea0734bdf.data000066400000000000000000000001551360766232600176720ustar00rootroot00000000000000[[[[3430,-3627],[6814,5306],[-497,5856],[-1399,2500],[-2500,2500],[-2500,-1591],[-3186,-4144],[3430,-3627]]]]union-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise.json000066400000000000000000000001541360766232600352300ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[3214,-3766],[6597,5167],[-714,5717],[-1579,2500],[-2500,2500],[-2500,-923],[-3403,-4283],[3214,-3766]]]]wagyu-0.5.0/tests/expected/union-overlapping-multi-polygon.json000066400000000000000000000003701360766232600250120ustar00rootroot00000000000000[[[[-658,2500],[-1679,2500],[-1652,2616],[-658,2500]]],[[[-3017,2775],[-4598,-6334],[-708,-5864],[114,-2500],[2500,-2500],[2500,-33],[5366,94],[5402,3666],[-1419,3635],[-1652,2616],[-3017,2775]],[[-658,2500],[-1679,2500],[-1652,2616],[-658,2500]]]]wagyu-0.5.0/tests/expected/union-polygon-covered-with-hole.json000066400000000000000000000001051360766232600246550ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/union-polygon-no-interior.json000066400000000000000000000000651360766232600236020ustar00rootroot00000000000000[[[[-5000,-5000],[0,-5000],[-5000,0],[-5000,-5000]]]]wagyu-0.5.0/tests/expected/union-polygon-two-intersecting-holes-and-self-intersection.json000066400000000000000000000006631360766232600321510ustar00rootroot00000000000000[[[[-1720,2500],[-392,4575],[228,2500],[-1720,2500]]],[[[979,-2500],[1300,-2500],[1071,-2620],[979,-2500]]],[[[2500,-1965],[2500,-1872],[2953,-1635],[2500,-816],[2500,2500],[1669,2500],[4591,5190],[-5096,5738],[-1903,2500],[-2500,2500],[-2500,1282],[-3580,-406],[-2500,-1252],[-2500,-1338],[-5235,-3856],[4765,-4262],[2500,-1965]],[[-1720,2500],[-392,4575],[228,2500],[-1720,2500]],[[979,-2500],[1300,-2500],[1071,-2620],[979,-2500]]]]wagyu-0.5.0/tests/expected/union-polygon-two-intersecting-holes.json000066400000000000000000000007611360766232600257550ustar00rootroot00000000000000[[[[-1720,2500],[-392,4575],[228,2500],[-1720,2500]]],[[[-3580,-406],[-2500,1282],[-2500,-1252],[-3580,-406]]],[[[2500,-816],[2953,-1635],[2500,-1872],[2500,-816]]],[[[979,-2500],[1300,-2500],[1071,-2620],[979,-2500]]],[[[4591,5190],[-5096,5738],[-5235,-3856],[4765,-4262],[4591,5190]],[[-1720,2500],[-392,4575],[228,2500],[-1720,2500]],[[-3580,-406],[-2500,1282],[-2500,-1252],[-3580,-406]],[[2500,-816],[2953,-1635],[2500,-1872],[2500,-816]],[[979,-2500],[1300,-2500],[1071,-2620],[979,-2500]]]]wagyu-0.5.0/tests/expected/union-polygon-with-double-nested-holes.json000066400000000000000000000007761360766232600261610ustar00rootroot00000000000000[[[[-1351,2500],[1940,3982],[2283,2500],[-1351,2500]]],[[[-3376,1588],[-2500,1983],[-2500,-1710],[-3376,1588]]],[[[2500,1567],[3261,-1720],[2500,-2027],[2500,1567]]],[[[-2291,-2500],[1330,-2500],[-1940,-3821],[-2291,-2500]]],[[[5129,-5027],[5043,4787],[-4871,4897],[-4871,-5103],[5129,-5027]],[[-1351,2500],[1940,3982],[2283,2500],[-1351,2500]],[[-3376,1588],[-2500,1983],[-2500,-1710],[-3376,1588]],[[2500,1567],[3261,-1720],[2500,-2027],[2500,1567]],[[-2291,-2500],[1330,-2500],[-1940,-3821],[-2291,-2500]]]]wagyu-0.5.0/tests/expected/union-polygon-with-extending-hole.json000066400000000000000000000002711360766232600252170ustar00rootroot00000000000000[[[[4333,-1783],[2500,1224],[2500,2500],[644,2500],[-787,6847],[-5667,-76],[-2500,-2328],[-2500,-2500],[-2258,-2500],[-2040,-2655],[-1714,-2500],[903,-2500],[1453,-3153],[4333,-1783]]]]wagyu-0.5.0/tests/expected/union-polygon-with-exterior-hole.json000066400000000000000000000002331360766232600250710ustar00rootroot00000000000000[[[[7071,1704],[-265,3394],[-247,2500],[-2500,2500],[-2500,1535],[-2929,1209],[-2904,-387],[-2500,-3],[-2500,-2500],[-50,-2500],[2448,-6606],[7071,1704]]]]wagyu-0.5.0/tests/expected/union-polygon-with-hole-shared-edge.json000066400000000000000000000003411360766232600254000ustar00rootroot00000000000000[[[[1285,2500],[2053,2658],[2116,2500],[1285,2500]]],[[[-2500,-2500],[2500,-2500],[2500,1543],[4366,-3119],[4837,6264],[-5163,2658],[-4971,-3736],[-2500,-482],[-2500,-2500]],[[1285,2500],[2053,2658],[2116,2500],[1285,2500]]]]wagyu-0.5.0/tests/expected/union-polygon-with-hole-with-shared-point.json000066400000000000000000000005061360766232600266010ustar00rootroot00000000000000[[[[2500,1252],[2761,1256],[2500,588],[2500,1252]]],[[[-3181,-1223],[-2500,-146],[-2500,-1308],[-3181,-1223]]],[[[6665,2813],[-3335,4503],[-3181,-1223],[-2500,-2043],[-2500,-2500],[-2122,-2500],[364,-5497],[6665,2813]],[[2500,1252],[2761,1256],[2500,588],[2500,1252]],[[-3181,-1223],[-2500,-146],[-2500,-1308],[-3181,-1223]]]]wagyu-0.5.0/tests/expected/union-polygon-with-spike.json000066400000000000000000000002071360766232600234170ustar00rootroot00000000000000[[[[-2496,-2500],[2500,-2500],[2500,2487],[7477,7473],[2500,2497],[2500,2500],[-2500,2500],[-2500,-2484],[-2523,-2527],[-2496,-2500]]]]wagyu-0.5.0/tests/expected/union-polygon-with-two-holes-outside-exterior-ring.json000066400000000000000000000007761360766232600305060ustar00rootroot00000000000000[[[[-1351,2500],[1940,3982],[2283,2500],[-1351,2500]]],[[[-3376,1588],[-2500,1983],[-2500,-1710],[-3376,1588]]],[[[2500,1567],[3261,-1720],[2500,-2027],[2500,1567]]],[[[-2291,-2500],[1330,-2500],[-1940,-3821],[-2291,-2500]]],[[[5129,-5027],[5043,4787],[-4871,4897],[-4871,-5103],[5129,-5027]],[[-1351,2500],[1940,3982],[2283,2500],[-1351,2500]],[[-3376,1588],[-2500,1983],[-2500,-1710],[-3376,1588]],[[2500,1567],[3261,-1720],[2500,-2027],[2500,1567]],[[-2291,-2500],[1330,-2500],[-1940,-3821],[-2291,-2500]]]]wagyu-0.5.0/tests/expected/union-self-intersecting-ring-polygon.json000066400000000000000000000003351360766232600257170ustar00rootroot00000000000000[[[[2500,1061],[2500,1717],[3288,1843],[2500,1061]]],[[[601,5883],[-2453,2500],[-2500,2500],[-2500,2448],[-6285,-1745],[-1232,-4117],[3715,-2696],[3288,1843],[601,5883]],[[2500,1061],[2500,1717],[3288,1843],[2500,1061]]]]wagyu-0.5.0/tests/expected/x_or-clockwise-polygon-clockwise-hole.json000066400000000000000000000000711360766232600260420ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/x_or-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000000711360766232600275170ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/x_or-clockwise-polygon.json000066400000000000000000000003201360766232600231310ustar00rootroot00000000000000[[[[-2500,-2500],[-2500,2500],[2500,2500],[2500,-2500],[-2500,-2500]]],[[[1790,-4475],[5174,4458],[-2137,5008],[-4826,-4992],[1790,-4475]],[[-2500,-2500],[-2500,2500],[2500,2500],[2500,-2500],[-2500,-2500]]]]wagyu-0.5.0/tests/expected/x_or-counter-clockwise-polygon-clockwise-hole.json000066400000000000000000000000711360766232600275170ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/x_or-counter-clockwise-polygon-counter-clockwise-hole.json000066400000000000000000000000711360766232600311740ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/x_or-counter-clockwise-polygon.json000066400000000000000000000003201360766232600246060ustar00rootroot00000000000000[[[[-2500,-2500],[-2500,2500],[2500,2500],[2500,-2500],[-2500,-2500]]],[[[1790,-4475],[5174,4458],[-2137,5008],[-4826,-4992],[1790,-4475]],[[-2500,-2500],[-2500,2500],[2500,2500],[2500,-2500],[-2500,-2500]]]]wagyu-0.5.0/tests/expected/x_or-multi-polygon-with-duplicate-polygon.json000066400000000000000000000001051360766232600267070ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/x_or-multi-polygon-with-shared-edge.json000066400000000000000000000002331360766232600254220ustar00rootroot00000000000000[[[[2053,2658],[2116,2500],[2500,2500],[2500,1543],[4366,-3119],[4837,6264],[-5163,2658],[-4971,-3736],[-2500,-482],[-2500,2500],[1285,2500],[2053,2658]]]]wagyu-0.5.0/tests/expected/x_or-multi-polygon-with-spikes.json000066400000000000000000000001441360766232600245510ustar00rootroot00000000000000[[[[-2443,-2448],[-2439,-2470],[1462,2500],[-2500,2500],[-2500,-2500],[-2466,-2500],[-2443,-2448]]]]wagyu-0.5.0/tests/expected/x_or-multipolygon-both-clockwise.json000066400000000000000000000000751360766232600251450ustar00rootroot00000000000000[[[[-2040,-2655],[-1714,-2500],[-2258,-2500],[-2040,-2655]]]]wagyu-0.5.0/tests/expected/x_or-multipolygon-both-counter-clockwise.json000066400000000000000000000000751360766232600266220ustar00rootroot00000000000000[[[[-2040,-2655],[-1714,-2500],[-2258,-2500],[-2040,-2655]]]]wagyu-0.5.0/tests/expected/x_or-multipolygon-overlap-different-orientations.json000066400000000000000000000000751360766232600303600ustar00rootroot00000000000000[[[[-2040,-2655],[-1714,-2500],[-2258,-2500],[-2040,-2655]]]]x_or-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600346220ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]x_or-nested-multi-polygon-outer-clockwise-inner-clockwise-hole-counter-clockwise.json000066400000000000000000000000721360766232600362770ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]wagyu-0.5.0/tests/expected/x_or-nested-multi-polygon-outer-clockwise-inner-clockwise.json000066400000000000000000000000711360766232600317720ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]x_or-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600362770ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]x_or-nested-multi-polygon-outer-clockwise-inner-counter-clockwise-hole-counter-clockwise.json000066400000000000000000000000721360766232600377540ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]wagyu-0.5.0/tests/expected/x_or-nested-multi-polygon-outer-clockwise-inner-counter-clockwise.json000066400000000000000000000000711360766232600334470ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]x_or-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600362770ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]x_or-nested-multi-polygon-outer-counter-clockwise-inner-clockwise-hole-counter-clockwise.json000066400000000000000000000000721360766232600377540ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]wagyu-0.5.0/tests/expected/x_or-nested-multi-polygon-outer-counter-clockwise-inner-clockwise.json000066400000000000000000000000711360766232600334470ustar00rootroot00000000000000[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]x_or-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-clockwise.json000066400000000000000000000000721360766232600377540ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]ed9f280ce02a9b4a9a8b457b6295b60a1329161b.paxheader00006660000000000000000000000212136076623260020433xustar00rootroot00000000000000138 path=wagyu-0.5.0/tests/expected/x_or-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise-hole-counter-clockwise.json ed9f280ce02a9b4a9a8b457b6295b60a1329161b.data000066400000000000000000000000721360766232600172750ustar00rootroot00000000000000[[[[-1399,2500],[-2500,2500],[-2500,-1591],[-1399,2500]]]]x_or-nested-multi-polygon-outer-counter-clockwise-inner-counter-clockwise.json000066400000000000000000000000711360766232600350450ustar00rootroot00000000000000wagyu-0.5.0/tests/expected[[[[-1579,2500],[-2500,2500],[-2500,-923],[-1579,2500]]]]wagyu-0.5.0/tests/expected/x_or-overlapping-multi-polygon.json000066400000000000000000000001421360766232600246260ustar00rootroot00000000000000[[[[5366,94],[5402,3666],[-1419,3635],[-1652,2616],[-658,2500],[2500,2500],[2500,-33],[5366,94]]]]wagyu-0.5.0/tests/expected/x_or-polygon-covered-with-hole.json000066400000000000000000000001051360766232600244740ustar00rootroot00000000000000[[[[2500,2500],[-2500,2500],[-2500,-2500],[2500,-2500],[2500,2500]]]]wagyu-0.5.0/tests/expected/x_or-polygon-no-interior.json000066400000000000000000000000651360766232600234210ustar00rootroot00000000000000[[[[-5000,-5000],[0,-5000],[-5000,0],[-5000,-5000]]]]wagyu-0.5.0/tests/expected/x_or-polygon-two-intersecting-holes-and-self-intersection.json000066400000000000000000000000571360766232600317650ustar00rootroot00000000000000[[[[858,390],[345,221],[1154,-600],[858,390]]]]wagyu-0.5.0/tests/expected/x_or-polygon-two-intersecting-holes.json000066400000000000000000000013411360766232600255670ustar00rootroot00000000000000[[[[-2500,1282],[-2500,-1252],[-1211,-2262],[222,-1510],[-810,-161],[858,390],[228,2500],[-1720,2500],[-2500,1282]]],[[[2500,-1872],[2500,-816],[1681,662],[858,390],[1263,-964],[222,-1510],[979,-2500],[1300,-2500],[2500,-1872]]],[[[1071,-2620],[979,-2500],[-2500,-2500],[-2500,-1252],[-3580,-406],[-2500,1282],[-2500,2500],[-1720,2500],[-392,4575],[228,2500],[2500,2500],[2500,-816],[2953,-1635],[2500,-1872],[2500,-2500],[1300,-2500],[1071,-2620]]],[[[4591,5190],[-5096,5738],[-5235,-3856],[4765,-4262],[4591,5190]],[[1071,-2620],[979,-2500],[-2500,-2500],[-2500,-1252],[-3580,-406],[-2500,1282],[-2500,2500],[-1720,2500],[-392,4575],[228,2500],[2500,2500],[2500,-816],[2953,-1635],[2500,-1872],[2500,-2500],[1300,-2500],[1071,-2620]]]]wagyu-0.5.0/tests/expected/x_or-polygon-with-double-nested-holes.json000066400000000000000000000013771360766232600257760ustar00rootroot00000000000000[[[[2500,-2027],[2500,1567],[2283,2500],[-1351,2500],[-2500,1983],[-2500,-1710],[-2291,-2500],[1330,-2500],[2500,-2027]]],[[[-1940,-3821],[-2291,-2500],[-2500,-2500],[-2500,-1710],[-3376,1588],[-2500,1983],[-2500,2500],[-1351,2500],[1940,3982],[2283,2500],[2500,2500],[2500,1567],[3261,-1720],[2500,-2027],[2500,-2500],[1330,-2500],[-1940,-3821]]],[[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]],[[[5129,-5027],[5043,4787],[-4871,4897],[-4871,-5103],[5129,-5027]],[[-1940,-3821],[-2291,-2500],[-2500,-2500],[-2500,-1710],[-3376,1588],[-2500,1983],[-2500,2500],[-1351,2500],[1940,3982],[2283,2500],[2500,2500],[2500,1567],[3261,-1720],[2500,-2027],[2500,-2500],[1330,-2500],[-1940,-3821]],[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]]]wagyu-0.5.0/tests/expected/x_or-polygon-with-extending-hole.json000066400000000000000000000000751360766232600250400ustar00rootroot00000000000000[[[[-2040,-2655],[-1714,-2500],[-2258,-2500],[-2040,-2655]]]]wagyu-0.5.0/tests/expected/x_or-polygon-with-exterior-hole.json000066400000000000000000000002031360766232600247050ustar00rootroot00000000000000[[[[-152,-2332],[-247,2500],[-2500,2500],[-2500,1535],[-1672,2163],[-1597,855],[-2500,-3],[-2500,-2500],[-50,-2500],[-152,-2332]]]]wagyu-0.5.0/tests/expected/x_or-polygon-with-hole-shared-edge.json000066400000000000000000000002331360766232600252170ustar00rootroot00000000000000[[[[2053,2658],[2116,2500],[2500,2500],[2500,1543],[4366,-3119],[4837,6264],[-5163,2658],[-4971,-3736],[-2500,-482],[-2500,2500],[1285,2500],[2053,2658]]]]wagyu-0.5.0/tests/expected/x_or-polygon-with-hole-with-shared-point.json000066400000000000000000000000751360766232600264210ustar00rootroot00000000000000[[[[-2500,-1308],[-3181,-1223],[-2500,-2043],[-2500,-1308]]]]wagyu-0.5.0/tests/expected/x_or-polygon-with-spike.json000066400000000000000000000001421360766232600232340ustar00rootroot00000000000000[[[[-2482,-2452],[-2475,-2478],[2500,2497],[2500,2500],[-2500,2500],[-2500,-2484],[-2482,-2452]]]]wagyu-0.5.0/tests/expected/x_or-polygon-with-two-holes-outside-exterior-ring.json000066400000000000000000000013771360766232600303230ustar00rootroot00000000000000[[[[2500,-2027],[2500,1567],[2283,2500],[-1351,2500],[-2500,1983],[-2500,-1710],[-2291,-2500],[1330,-2500],[2500,-2027]]],[[[-1940,-3821],[-2291,-2500],[-2500,-2500],[-2500,-1710],[-3376,1588],[-2500,1983],[-2500,2500],[-1351,2500],[1940,3982],[2283,2500],[2500,2500],[2500,1567],[3261,-1720],[2500,-2027],[2500,-2500],[1330,-2500],[-1940,-3821]]],[[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]],[[[5129,-5027],[5043,4787],[-4871,4897],[-4871,-5103],[5129,-5027]],[[-1940,-3821],[-2291,-2500],[-2500,-2500],[-2500,-1710],[-3376,1588],[-2500,1983],[-2500,2500],[-1351,2500],[1940,3982],[2283,2500],[2500,2500],[2500,1567],[3261,-1720],[2500,-2027],[2500,-2500],[1330,-2500],[-1940,-3821]],[[-1796,996],[819,1219],[1422,-713],[-761,-1085],[-1796,996]]]]wagyu-0.5.0/tests/expected/x_or-self-intersecting-ring-polygon.json000066400000000000000000000001171360766232600255340ustar00rootroot00000000000000[[[[-947,1164],[-2104,-430],[-324,-1745],[2500,1061],[2500,1717],[-947,1164]]]]wagyu-0.5.0/tests/fixtures/000077500000000000000000000000001360766232600156765ustar00rootroot00000000000000wagyu-0.5.0/tests/fixtures/clip-clockwise-square.json000066400000000000000000000001711360766232600227760ustar00rootroot00000000000000[ [ [-2500,-2500], [-2500,2500], [2500,2500], [2500,-2500], [-2500,-2500] ] ] wagyu-0.5.0/tests/fixtures/clockwise-triangle.json000066400000000000000000000001131360766232600223520ustar00rootroot00000000000000[ [ [0,0], [5,7], [7,5], [0,0] ] ] wagyu-0.5.0/tests/fixtures/fixture-tester.cpp000066400000000000000000000200231360766232600213710ustar00rootroot00000000000000#include "../tests/util/boost_geometry_adapters.hpp" #include #include #include #include #include #include #include #include #include using namespace rapidjson; using namespace mapbox::geometry::wagyu; using coordinate_value_type = std::int64_t; struct Options { std::size_t iterations = 1; clip_type operation = clip_type_union; fill_type fill = fill_type_even_odd; char* subject_file = nullptr; char* clip_file = nullptr; } options; void log_ring(mapbox::geometry::polygon const& p) { bool first = true; std::clog << "["; for (auto const& r : p) { if (first) { std::clog << "["; first = false; } else { std::clog << ",["; } bool first2 = true; for (auto const& pt : r) { if (first2) { std::clog << "["; first2 = false; } else { std::clog << ",["; } std::clog << pt.x << "," << pt.y << "]"; } std::clog << "]"; } std::clog << "]" << std::endl; } void log_ring(mapbox::geometry::multi_polygon const& mp) { bool first_p = true; std::clog << "["; for (auto const& p : mp) { bool first = true; if (first_p) { std::clog << "["; first_p = false; } else { std::clog << ",["; } for (auto const& r : p) { if (first) { std::clog << "["; first = false; } else { std::clog << ",["; } bool first2 = true; for (auto const& pt : r) { if (first2) { std::clog << "["; first2 = false; } else { std::clog << ",["; } std::clog << pt.x << "," << pt.y << "]"; } std::clog << "]"; } std::clog << "]"; } std::clog << "]" << std::endl; } mapbox::geometry::polygon parse_file(const char* file_path) { // todo safety checks opening files FILE* file = fopen(file_path, "re"); char read_buffer[65536]; FileReadStream in_stream(file, read_buffer, sizeof(read_buffer)); Document document; document.ParseStream<0, UTF8<>, FileReadStream>(in_stream); if (!document.IsArray()) { throw std::runtime_error(("Input file (" + std::string(file_path) + ") is not valid json")); } // todo catch parsing errors mapbox::geometry::polygon poly; for (SizeType i = 0; i < document.Size(); ++i) { mapbox::geometry::linear_ring lr; if (!document[i].IsArray()) { throw std::runtime_error("A ring (in " + std::string(file_path) + ") is not a valid json array"); } for (SizeType j = 0; j < document[i].Size(); ++j) { lr.push_back({ document[i][j][0].GetInt(), document[i][j][1].GetInt() }); } poly.emplace_back(lr); } fclose(file); return poly; } void polys_to_json(Document& output, std::vector>& solution) { output.SetArray(); Document::AllocatorType& allocator = output.GetAllocator(); output.Reserve(static_cast(solution.size()), allocator); // Polygons for (unsigned p = 0; p < solution.size(); ++p) { output.PushBack(Value().SetArray(), allocator); output[p].Reserve(static_cast(solution[p].size()), allocator); // Rings for (unsigned r = 0; r < solution[p].size(); ++r) { output[p].PushBack(Value().SetArray(), allocator); output[p][r].Reserve(static_cast(solution[p][r].size()), allocator); // Coordinates for (auto coord : solution[p][r]) { Value cvalue; cvalue.SetArray(); cvalue.PushBack(Value().SetInt(static_cast(coord.x)), allocator); cvalue.PushBack(Value().SetInt(static_cast(coord.y)), allocator); output[p][r].PushBack(cvalue, allocator); } } } } void parse_options(int argc, char* const argv[]) { for (int i = 1; i < argc; ++i) { if (strcmp(argv[i], "-t") == 0) { std::string type = argv[++i]; if (type == "union") { options.operation = clip_type_union; } else if (type == "intersection") { options.operation = clip_type_intersection; } else if (type == "difference") { options.operation = clip_type_difference; } else if (type == "x_or") { options.operation = clip_type_x_or; } } else if (strcmp(argv[i], "-f") == 0) { std::string type = argv[++i]; if (type == "even_odd") { options.fill = fill_type_even_odd; } else if (type == "non_zero") { options.fill = fill_type_non_zero; } else if (type == "positive") { options.fill = fill_type_positive; } else if (type == "negative") { options.fill = fill_type_negative; } } else if (strcmp(argv[i], "-i") == 0) { std::string iters = argv[++i]; options.iterations = static_cast(std::stoul(iters)); } else { // If we didn't catch this argument as a flag or a flag value, // set the input files if (options.subject_file == nullptr) { options.subject_file = argv[i]; } else { options.clip_file = argv[i]; } } } } int main(int argc, char* const argv[]) { if (argc < 3) { std::cout << "Error: too few parameters\n" << std::endl; std::cout << "Usage:" << std::endl; std::cout << " ./fixture-test ./path/to/subject.json ./path/to/object.json\n" << std::endl; std::cout << "Options:" << std::endl; std::cout << " -t type of operation (default: union)\n" << std::endl; std::cout << " -f fill_type (default: even_odd)\n" << std::endl; return -1; } parse_options(argc, argv); auto poly_subject = parse_file(options.subject_file); mapbox::geometry::polygon poly_clip; mapbox::geometry::multi_polygon solution; if (options.clip_file != nullptr) { poly_clip = parse_file(options.clip_file); } while (options.iterations > 0) { options.iterations--; solution.clear(); wagyu clipper; clipper.add_polygon(poly_subject, polygon_type_subject); if (!poly_clip.empty()) { clipper.add_polygon(poly_clip, polygon_type_clip); } clipper.execute(options.operation, solution, options.fill, fill_type_even_odd); } Document output; polys_to_json(output, solution); for (auto const& p : solution) { std::string message; if (!boost::geometry::is_valid(p, message)) { std::clog << std::endl; std::clog << "Error: geometry not valid" << std::endl; std::clog << message << std::endl; log_ring(p); return -1; } } /* //uncomment once https://svn.boost.org/trac/boost/ticket/12503 is resolved std::string message; if (!boost::geometry::is_valid(solution, message)) { std::clog << std::endl; std::clog << "Error: multi geometry not valid" << std::endl; std::clog << message << std::endl; log_ring(solution); return -1; } */ char write_buffer[65536]; FileWriteStream out_stream(stdout, write_buffer, sizeof(write_buffer)); Writer writer(out_stream); output.Accept(writer); std::cout << std::endl; } wagyu-0.5.0/tests/geometry-test-data/000077500000000000000000000000001360766232600175445ustar00rootroot00000000000000wagyu-0.5.0/tests/run-geometry-tests.sh000077500000000000000000000037121360766232600201640ustar00rootroot00000000000000#!/usr/bin/env bash # ./tests/run-geometry-tests.sh ./fixture-tester TESTER="$1" PASSES=0 FAILS=0 if [ -z "$TESTER" ]; then echo "Error: path to a fixture-tester binary must be supplied" exit 1 elif [ ! -e "$TESTER" ]; then echo "Error: path to fixture-tester binary is invalid" exit 1 fi mkdir -p ./tests/output-polyjson for filename in $(ls ./tests/geometry-test-data/input-polyjson) do for type in union difference x_or intersection do for filltype in even_odd non_zero positive negative do if [ "$type" = "union" ]; then $TESTER -t $type -f $filltype \ ./tests/geometry-test-data/input-polyjson/$filename \ 1>./tests/output-polyjson/$type-$filename; # Check exit code of last command if [ "$?" -eq "0" ]; then PASSES=$((PASSES + 1)) else echo --- Test failure: $type $filltype $filename echo $TESTER -t $type -f $filltype ./tests/geometry-test-data/input-polyjson/$filename FAILS=$((FAILS + 1)) fi fi $TESTER -t $type -f $filltype \ ./tests/geometry-test-data/input-polyjson/$filename \ ./tests/fixtures/clip-clockwise-square.json \ 1>./tests/output-polyjson/$type-$filename; # Check exit code of last command if [ "$?" -eq "0" ]; then PASSES=$((PASSES + 1)) else echo --- Test failure: $type $filltype $filename echo $TESTER -t $type -f $filltype ./tests/geometry-test-data/input-polyjson/$filename ./tests/fixtures/clip-clockwise-square.json FAILS=$((FAILS + 1)) fi done done done TOTAL=$((PASSES + FAILS)) echo -e "\033[1;32m ✓ $PASSES/$TOTAL \033[0;31m ✗ $FAILS/$TOTAL \033[0m" if [ "$FAILS" -gt "0" ]; then exit 1; fi wagyu-0.5.0/tests/test.cpp000066400000000000000000000004451360766232600155130ustar00rootroot00000000000000// https://github.com/philsquared/Catch/blob/master/docs/own-main.md #define CATCH_CONFIG_RUNNER #include "catch.hpp" int main(int argc, char* const argv[]) { int result = Catch::Session().run(argc, argv); if (!result) printf("\x1b[1;32m ✓ \x1b[0m\n"); return result; } wagyu-0.5.0/tests/unit/000077500000000000000000000000001360766232600150045ustar00rootroot00000000000000wagyu-0.5.0/tests/unit/clipper_get_bounds.cpp000066400000000000000000000045321360766232600213630ustar00rootroot00000000000000#include "catch.hpp" #include using namespace mapbox::geometry::wagyu; using T = std::int64_t; TEST_CASE("test returns zero with no data provided - int64") { mapbox::geometry::wagyu::wagyu clipper; auto bounds = clipper.get_bounds(); CHECK(bounds.min.x == 0); CHECK(bounds.min.y == 0); CHECK(bounds.max.x == 0); CHECK(bounds.max.y == 0); } TEST_CASE("test returns simple box - int64") { mapbox::geometry::polygon polygon; mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); ring.push_back({ 0, 0 }); polygon.push_back(ring); mapbox::geometry::wagyu::wagyu clipper; CHECK(clipper.add_polygon(polygon)); auto bounds = clipper.get_bounds(); CHECK(bounds.min.x == 0); CHECK(bounds.min.y == 0); CHECK(bounds.max.x == 5); CHECK(bounds.max.y == 5); } TEST_CASE("test returns simple box negative - int64") { mapbox::geometry::polygon polygon; mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, -5 }); ring.push_back({ -5, -5 }); ring.push_back({ -5, 0 }); ring.push_back({ 0, 0 }); polygon.push_back(ring); mapbox::geometry::wagyu::wagyu clipper; CHECK(clipper.add_polygon(polygon)); auto bounds = clipper.get_bounds(); CHECK(bounds.min.x == -5); CHECK(bounds.min.y == -5); CHECK(bounds.max.x == 0); CHECK(bounds.max.y == 0); } TEST_CASE("two polygons - int64") { mapbox::geometry::wagyu::wagyu clipper; // Polygon 1 mapbox::geometry::polygon polygon; mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); ring.push_back({ 0, 0 }); polygon.push_back(ring); CHECK(clipper.add_polygon(polygon)); polygon.clear(); ring.clear(); // Polygon 2 ring.push_back({ 5, 5 }); ring.push_back({ 5, 10 }); ring.push_back({ 10, 10 }); ring.push_back({ 10, 5 }); ring.push_back({ 5, 5 }); polygon.push_back(ring); CHECK(clipper.add_polygon(polygon)); auto bounds = clipper.get_bounds(); CHECK(bounds.min.x == 0); CHECK(bounds.min.y == 0); CHECK(bounds.max.x == 10); CHECK(bounds.max.y == 10); } wagyu-0.5.0/tests/unit/edge.cpp000066400000000000000000000063051360766232600164200ustar00rootroot00000000000000#include "catch.hpp" #include using namespace mapbox::geometry::wagyu; using T = std::int64_t; TEST_CASE("test edge initialization - same two points") { mapbox::geometry::point p1 = { 100, 10 }; mapbox::geometry::point p2 = { 100, 10 }; edge e1(p1, p2); CHECK(e1.bot.x == 100); CHECK(e1.bot.y == 10); CHECK(e1.top.x == 100); CHECK(e1.top.y == 10); CHECK(std::isinf(e1.dx)); } TEST_CASE("test edge initialization - different type") { mapbox::geometry::point p1 = { 100, 10 }; mapbox::geometry::point p2 = { 10, 15 }; edge e1(p1, p2); CHECK(e1.bot.x == 10); CHECK(e1.bot.y == 15); CHECK(e1.top.x == 100); CHECK(e1.top.y == 10); CHECK(e1.dx == Approx(-18.0)); } TEST_CASE("test edge initialization - horizontal segment") { mapbox::geometry::point p1 = { 10, 10 }; mapbox::geometry::point p2 = { 100, 10 }; edge e1(p1, p2); edge e2(p2, p1); CHECK(e1.bot.x == 10); CHECK(e1.bot.y == 10); CHECK(e1.top.x == 100); CHECK(e1.top.y == 10); CHECK(std::isinf(e1.dx)); CHECK(e2.bot.x == 100); CHECK(e2.bot.y == 10); CHECK(e2.top.x == 10); CHECK(e2.top.y == 10); CHECK(std::isinf(e2.dx)); } TEST_CASE("test edge initialization - vertical segment") { mapbox::geometry::point p1 = { 10, 10 }; mapbox::geometry::point p2 = { 10, 100 }; edge e1(p1, p2); edge e2(p2, p1); CHECK(e1.bot.x == 10); CHECK(e1.bot.y == 100); CHECK(e1.top.x == 10); CHECK(e1.top.y == 10); CHECK(e1.dx == Approx(0.0)); CHECK(e2.bot.x == 10); CHECK(e2.bot.y == 100); CHECK(e2.top.x == 10); CHECK(e2.top.y == 10); CHECK(e2.dx == Approx(0.0)); } TEST_CASE("test edge slope calculation") { mapbox::geometry::point p1 = { 1, 10 }; mapbox::geometry::point p2 = { 10, 100 }; mapbox::geometry::point p3 = { 5, 100 }; edge e1(p1, p2); edge e2(p2, p1); edge e3(p1, p3); edge e4(p3, p1); CHECK(slopes_equal(e1, e2)); CHECK(slopes_equal(e2, e1)); CHECK(slopes_equal(e3, e4)); CHECK(!slopes_equal(e1, e3)); CHECK(!slopes_equal(e3, e1)); } TEST_CASE("test edge slope calculation - int32_t") { using T2 = std::int32_t; mapbox::geometry::point p1 = { 1, 10 }; mapbox::geometry::point p2 = { 10, 100 }; mapbox::geometry::point p3 = { 5, 100 }; edge e1(p1, p2); edge e2(p2, p1); edge e3(p1, p3); edge e4(p3, p1); CHECK(slopes_equal(e1, e2)); CHECK(slopes_equal(e2, e1)); CHECK(slopes_equal(e3, e4)); CHECK(!slopes_equal(e1, e3)); CHECK(!slopes_equal(e3, e1)); } TEST_CASE("test edge slope calculation - int32_t with possible overflow") { using T2 = std::int32_t; mapbox::geometry::point p1 = { 1, 0 }; mapbox::geometry::point p2 = { 0, 100000 }; mapbox::geometry::point p3 = { -1000000, 0 }; mapbox::geometry::point p4 = { 1100000, 453397504 }; edge e1(p1, p2); edge e2(p3, p4); // In the case of an overflow the calculations will lie stating the // slopes are equal when they are not CHECK(!slopes_equal(e1, e2)); } wagyu-0.5.0/tests/unit/local_minimum_util.cpp000066400000000000000000000467661360766232600214150ustar00rootroot00000000000000#include "catch.hpp" #include #include #include #include using namespace mapbox::geometry::wagyu; using T = std::int64_t; TEST_CASE("test reverse horizontal") { mapbox::geometry::point p1 = { 0, 5 }; mapbox::geometry::point p2 = { 5, 5 }; edge e1(p1, p2); CHECK(e1.bot.x == 0); CHECK(e1.bot.y == 5); CHECK(e1.top.x == 5); CHECK(e1.top.y == 5); reverse_horizontal(e1); CHECK(e1.bot.x == 5); CHECK(e1.bot.y == 5); CHECK(e1.top.x == 0); CHECK(e1.top.y == 5); } TEST_CASE("edge adding ring - square closed") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); ring.push_back({ 0, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - square not closed") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - triangle closed") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 10, 5 }); ring.push_back({ 5, 10 }); ring.push_back({ 0, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.right_bound.edges; REQUIRE(edges.size() == 2); auto itr = edges.begin(); CHECK(itr->top.x == 10); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 10); CHECK(itr->dx == Approx(-1.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 10); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(2.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.left_bound.edges; REQUIRE(edges_r.size() == 1); itr = edges_r.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 10); CHECK(itr->dx == Approx(0.5)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - triangle not closed") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 10, 5 }); ring.push_back({ 5, 10 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.right_bound.edges; REQUIRE(edges.size() == 2); auto itr = edges.begin(); CHECK(itr->top.x == 10); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 10); CHECK(itr->dx == Approx(-1.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 10); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(2.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.left_bound.edges; REQUIRE(edges_r.size() == 1); itr = edges_r.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 10); CHECK(itr->dx == Approx(0.5)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - square closed - collinear points") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 3 }); ring.push_back({ 0, 5 }); ring.push_back({ 3, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 3 }); ring.push_back({ 5, 0 }); ring.push_back({ 3, 0 }); ring.push_back({ 0, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - square not closed - collinear points") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); ring.push_back({ 4, 0 }); ring.push_back({ 3, 0 }); ring.push_back({ 2, 0 }); ring.push_back({ 1, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - square closed - repeated points") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); ring.push_back({ 5, 0 }); ring.push_back({ 0, 0 }); ring.push_back({ 0, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - square closed - repeated and collinear points") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 0 }); ring.push_back({ 0, 3 }); ring.push_back({ 0, 3 }); ring.push_back({ 0, 5 }); ring.push_back({ 0, 5 }); ring.push_back({ 3, 5 }); ring.push_back({ 3, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 3 }); ring.push_back({ 5, 3 }); ring.push_back({ 5, 0 }); ring.push_back({ 5, 0 }); ring.push_back({ 3, 0 }); ring.push_back({ 3, 0 }); ring.push_back({ 0, 0 }); ring.push_back({ 0, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - square closed - spikes") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 10 }); ring.push_back({ 5, 5 }); ring.push_back({ 10, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); ring.push_back({ 0, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding ring - square closed - zigzag") { mapbox::geometry::linear_ring ring; ring.push_back({ 0, 0 }); ring.push_back({ 0, 5 }); ring.push_back({ 5, 5 }); ring.push_back({ 5, 0 }); ring.push_back({ 0, 0 }); ring.push_back({ 5, 0 }); ring.push_back({ 0, 0 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 1); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 3); itr = edges_r.begin(); CHECK(itr->top.x == 5); CHECK(itr->top.y == 5); CHECK(itr->bot.x == 0); CHECK(itr->bot.y == 5); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 5); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 5); CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr->top.x == 0); CHECK(itr->top.y == 0); CHECK(itr->bot.x == 5); CHECK(itr->bot.y == 0); CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr == edges_r.end()); } TEST_CASE("edge adding - odd shape") { mapbox::geometry::linear_ring ring; ring.push_back({ 65542, 44380 }); // A ring.push_back({ 65542, 45062 }); // B ring.push_back({ 64947, 45062 }); // C ring.push_back({ 64832, 44579 }); // D ring.push_back({ 65176, 44820 }); // E ring.push_back({ 65542, 44380 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 2); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 64832); // D CHECK(itr->top.y == 44579); // D CHECK(itr->bot.x == 64947); // C CHECK(itr->bot.y == 45062); // C CHECK(itr->dx == Approx(0.2380952381)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 2); itr = edges_r.begin(); CHECK(itr->top.x == 65542); // B CHECK(itr->top.y == 45062); // B CHECK(itr->bot.x == 64947); // C CHECK(itr->bot.y == 45062); // C CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 65542); // A CHECK(itr->top.y == 44380); // A CHECK(itr->bot.x == 65542); // B CHECK(itr->bot.y == 45062); // B CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges_r.end()); auto& lm2 = minima_list.back(); auto& edges2 = lm2.left_bound.edges; REQUIRE(edges2.size() == 1); itr = edges2.begin(); CHECK(itr->top.x == 64832); // D CHECK(itr->top.y == 44579); // D CHECK(itr->bot.x == 65176); // E CHECK(itr->bot.y == 44820); // E CHECK(itr->dx == Approx(1.4273858921)); ++itr; CHECK(itr == edges2.end()); auto& edges2_r = lm2.right_bound.edges; REQUIRE(edges2_r.size() == 1); itr = edges2_r.begin(); CHECK(itr->top.x == 65542); // A CHECK(itr->top.y == 44380); // A CHECK(itr->bot.x == 65176); // E CHECK(itr->bot.y == 44820); // E CHECK(itr->dx == Approx(-0.8318181818)); ++itr; CHECK(itr == edges2_r.end()); } TEST_CASE("edge adding insane set of lines") { mapbox::geometry::linear_ring ring; ring.push_back({ 65542, 44237 }); ring.push_back({ 65542, 44505 }); ring.push_back({ 65542, 44461 }); ring.push_back({ 65542, 44718 }); ring.push_back({ 65542, 44766 }); ring.push_back({ 65542, 44754 }); ring.push_back({ 65542, 44901 }); ring.push_back({ 65542, 45003 }); ring.push_back({ 65542, 45062 }); // B ring.push_back({ 64989, 45062 }); ring.push_back({ 64844, 45062 }); ring.push_back({ 65032, 45062 }); ring.push_back({ 65101, 45062 }); ring.push_back({ 64726, 45062 }); ring.push_back({ 64457, 45062 }); ring.push_back({ 63901, 45062 }); ring.push_back({ 63864, 45062 }); ring.push_back({ 64336, 45062 }); ring.push_back({ 64947, 45062 }); // C ring.push_back({ 64832, 44579 }); // D ring.push_back({ 65176, 44820 }); // E ring.push_back({ 65542, 44380 }); // A ring.push_back({ 65542, 43911 }); ring.push_back({ 65542, 43794 }); ring.push_back({ 65542, 43997 }); ring.push_back({ 65542, 44007 }); ring.push_back({ 65542, 44237 }); local_minimum_list minima_list; polygon_type p_type = polygon_type_subject; CHECK(add_linear_ring(ring, minima_list, p_type)); REQUIRE(minima_list.size() == 2); auto& lm = minima_list.front(); auto& edges = lm.left_bound.edges; REQUIRE(edges.size() == 1); auto itr = edges.begin(); CHECK(itr->top.x == 64832); // D CHECK(itr->top.y == 44579); // D CHECK(itr->bot.x == 64947); // C CHECK(itr->bot.y == 45062); // C CHECK(itr->dx == Approx(0.2380952381)); ++itr; CHECK(itr == edges.end()); auto& edges_r = lm.right_bound.edges; REQUIRE(edges_r.size() == 2); itr = edges_r.begin(); CHECK(itr->top.x == 65542); // B CHECK(itr->top.y == 45062); // B CHECK(itr->bot.x == 64947); // C CHECK(itr->bot.y == 45062); // C CHECK(std::isinf(itr->dx)); ++itr; CHECK(itr->top.x == 65542); // A CHECK(itr->top.y == 44380); // A CHECK(itr->bot.x == 65542); // B CHECK(itr->bot.y == 45062); // B CHECK(itr->dx == Approx(0.0)); ++itr; CHECK(itr == edges_r.end()); auto& lm2 = minima_list.back(); auto& edges2 = lm2.left_bound.edges; REQUIRE(edges2.size() == 1); itr = edges2.begin(); CHECK(itr->top.x == 64832); // D CHECK(itr->top.y == 44579); // D CHECK(itr->bot.x == 65176); // E CHECK(itr->bot.y == 44820); // E CHECK(itr->dx == Approx(1.4273858921)); ++itr; CHECK(itr == edges2.end()); auto& edges2_r = lm2.right_bound.edges; REQUIRE(edges2_r.size() == 1); itr = edges2_r.begin(); CHECK(itr->top.x == 65542); // A CHECK(itr->top.y == 44380); // A CHECK(itr->bot.x == 65176); // E CHECK(itr->bot.y == 44820); // E CHECK(itr->dx == Approx(-0.8318181818)); ++itr; CHECK(itr == edges2_r.end()); } wagyu-0.5.0/tests/unit/main.cpp000066400000000000000000000000571360766232600164360ustar00rootroot00000000000000#define CATCH_CONFIG_MAIN #include wagyu-0.5.0/tests/unit/process_horizontal.hpp000066400000000000000000000013541360766232600214470ustar00rootroot00000000000000#include "catch.hpp" #include using namespace mapbox::geometry::wagyu; using T = std::int64_t; TEST_CASE("get_horizontal_direction finds edge direction") { mapbox::geometry::point p1 = { 0, 5 }; mapbox::geometry::point p2 = { 0, 7 }; edge e1(p1, p2, polygon_type_subject); T left; T right; horizontal_direction dir; process_horizontal(&e1, dir, left, right); CHECK(dir == left_to_right); CHECK(left == p1.x); CHECK(right == p2.x); // flip horizontal direction edge e2(p2, p1, polygon_type_subject); process_horizontal(&e2, dir, left, right); CHECK(dir == right_to_left); CHECK(left == p2.x); CHECK(right == p1.x); };wagyu-0.5.0/tests/unit/quick_clip.cpp000066400000000000000000000260301360766232600176340ustar00rootroot00000000000000#include "catch.hpp" #include #include #include template inline std::basic_ostream& operator<<(std::basic_ostream& out, const mapbox::geometry::linear_ring& ring) { out << "["; bool first = true; for (auto const& pt : ring) { if (first) { out << "["; first = false; } else { out << ",["; } out << pt.x << "," << pt.y << "]"; } out << "]"; return out; } using namespace mapbox::geometry::wagyu; using T = std::int64_t; TEST_CASE("square entirely within bbox") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(25, 25)); lr.push_back(mapbox::geometry::point(75, 25)); lr.push_back(mapbox::geometry::point(75, 75)); lr.push_back(mapbox::geometry::point(25, 75)); lr.push_back(mapbox::geometry::point(25, 25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); CHECK(out == lr); } TEST_CASE("square cut at right") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(25, 25)); lr.push_back(mapbox::geometry::point(175, 25)); lr.push_back(mapbox::geometry::point(175, 75)); lr.push_back(mapbox::geometry::point(25, 75)); lr.push_back(mapbox::geometry::point(25, 25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(25, 25)); want.push_back(mapbox::geometry::point(100, 25)); want.push_back(mapbox::geometry::point(100, 75)); want.push_back(mapbox::geometry::point(25, 75)); want.push_back(mapbox::geometry::point(25, 25)); CHECK(out == want); } TEST_CASE("square cut at left") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(-25, 25)); lr.push_back(mapbox::geometry::point(75, 25)); lr.push_back(mapbox::geometry::point(75, 75)); lr.push_back(mapbox::geometry::point(-25, 75)); lr.push_back(mapbox::geometry::point(-25, 25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(0, 25)); want.push_back(mapbox::geometry::point(75, 25)); want.push_back(mapbox::geometry::point(75, 75)); want.push_back(mapbox::geometry::point(0, 75)); want.push_back(mapbox::geometry::point(0, 25)); CHECK(out == want); } TEST_CASE("square cut at top") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(25, 25)); lr.push_back(mapbox::geometry::point(75, 25)); lr.push_back(mapbox::geometry::point(75, 175)); lr.push_back(mapbox::geometry::point(25, 175)); lr.push_back(mapbox::geometry::point(25, 25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(25, 25)); want.push_back(mapbox::geometry::point(75, 25)); want.push_back(mapbox::geometry::point(75, 100)); want.push_back(mapbox::geometry::point(25, 100)); want.push_back(mapbox::geometry::point(25, 25)); CHECK(out == want); } TEST_CASE("square cut at bottom") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(-25, 25)); lr.push_back(mapbox::geometry::point(75, 25)); lr.push_back(mapbox::geometry::point(75, 75)); lr.push_back(mapbox::geometry::point(-25, 75)); lr.push_back(mapbox::geometry::point(-25, 25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(0, 25)); want.push_back(mapbox::geometry::point(75, 25)); want.push_back(mapbox::geometry::point(75, 75)); want.push_back(mapbox::geometry::point(0, 75)); want.push_back(mapbox::geometry::point(0, 25)); CHECK(out == want); } TEST_CASE("square cut at top right") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(25, 25)); lr.push_back(mapbox::geometry::point(175, 25)); lr.push_back(mapbox::geometry::point(175, 175)); lr.push_back(mapbox::geometry::point(25, 175)); lr.push_back(mapbox::geometry::point(25, 25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(25, 25)); want.push_back(mapbox::geometry::point(100, 25)); want.push_back(mapbox::geometry::point(100, 100)); want.push_back(mapbox::geometry::point(25, 100)); want.push_back(mapbox::geometry::point(25, 25)); CHECK(out == want); } TEST_CASE("square cut at top and bottom right") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(25, -25)); lr.push_back(mapbox::geometry::point(175, -25)); lr.push_back(mapbox::geometry::point(175, 175)); lr.push_back(mapbox::geometry::point(25, 175)); lr.push_back(mapbox::geometry::point(25, -25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(100, 0)); want.push_back(mapbox::geometry::point(100, 100)); want.push_back(mapbox::geometry::point(25, 100)); want.push_back(mapbox::geometry::point(25, 0)); want.push_back(mapbox::geometry::point(100, 0)); CHECK(out == want); } TEST_CASE("square entirely out of bounds") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(125, 125)); lr.push_back(mapbox::geometry::point(175, 125)); lr.push_back(mapbox::geometry::point(175, 175)); lr.push_back(mapbox::geometry::point(125, 175)); lr.push_back(mapbox::geometry::point(125, 125)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); CHECK(out.empty()); } TEST_CASE("square entirely enclosing bbox") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(-25, -25)); lr.push_back(mapbox::geometry::point(175, -25)); lr.push_back(mapbox::geometry::point(175, 175)); lr.push_back(mapbox::geometry::point(-25, 175)); lr.push_back(mapbox::geometry::point(-25, -25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(0, 0)); want.push_back(mapbox::geometry::point(100, 0)); want.push_back(mapbox::geometry::point(100, 100)); want.push_back(mapbox::geometry::point(0, 100)); want.push_back(mapbox::geometry::point(0, 0)); CHECK(out == want); } TEST_CASE("sticking out and back in") { mapbox::geometry::point p1 = { 0, 0 }; mapbox::geometry::point p2 = { 100, 100 }; mapbox::geometry::box bbox(p1, p2); mapbox::geometry::linear_ring lr; lr.push_back(mapbox::geometry::point(25, 25)); lr.push_back(mapbox::geometry::point(150, 25)); lr.push_back(mapbox::geometry::point(150, 150)); lr.push_back(mapbox::geometry::point(25, 150)); lr.push_back(mapbox::geometry::point(25, 90)); lr.push_back(mapbox::geometry::point(75, 90)); lr.push_back(mapbox::geometry::point(75, 125)); lr.push_back(mapbox::geometry::point(125, 125)); lr.push_back(mapbox::geometry::point(125, 75)); lr.push_back(mapbox::geometry::point(25, 75)); lr.push_back(mapbox::geometry::point(25, 25)); auto out = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(lr, bbox); mapbox::geometry::linear_ring want; want.push_back(mapbox::geometry::point(25, 25)); want.push_back(mapbox::geometry::point(100, 25)); want.push_back(mapbox::geometry::point(100, 100)); want.push_back(mapbox::geometry::point(25, 100)); want.push_back(mapbox::geometry::point(25, 90)); want.push_back(mapbox::geometry::point(75, 90)); want.push_back(mapbox::geometry::point(75, 100)); want.push_back(mapbox::geometry::point(100, 100)); want.push_back(mapbox::geometry::point(100, 75)); want.push_back(mapbox::geometry::point(25, 75)); want.push_back(mapbox::geometry::point(25, 25)); CHECK(out == want); mapbox::geometry::wagyu::wagyu clipper; clipper.add_ring(out); mapbox::geometry::multi_polygon solution; clipper.execute(clip_type_union, solution, fill_type_even_odd, fill_type_even_odd); REQUIRE(solution.size() == 2); mapbox::geometry::linear_ring want0; want0.push_back(mapbox::geometry::point(75, 90)); want0.push_back(mapbox::geometry::point(75, 100)); want0.push_back(mapbox::geometry::point(25, 100)); want0.push_back(mapbox::geometry::point(25, 90)); want0.push_back(mapbox::geometry::point(75, 90)); mapbox::geometry::linear_ring want1; want1.push_back(mapbox::geometry::point(100, 75)); want1.push_back(mapbox::geometry::point(25, 75)); want1.push_back(mapbox::geometry::point(25, 25)); want1.push_back(mapbox::geometry::point(100, 25)); want1.push_back(mapbox::geometry::point(100, 75)); CHECK(solution[0][0] == want0); CHECK(solution[1][0] == want1); mapbox::geometry::polygon poly; poly.push_back(lr); mapbox::geometry::multi_polygon poly_out; poly_out = mapbox::geometry::wagyu::clip(poly, bbox, fill_type_even_odd); REQUIRE(poly_out.size() == 2); CHECK(poly_out[0][0] == want0); CHECK(poly_out[1][0] == want1); } wagyu-0.5.0/tests/unit/vatti.cpp000066400000000000000000000355261360766232600166520ustar00rootroot00000000000000#include "catch.hpp" #include #include using namespace mapbox::geometry::wagyu; using T = std::int64_t; TEST_CASE("no input test") { mapbox::geometry::wagyu::wagyu wagyu; mapbox::geometry::multi_polygon solution; CHECK_FALSE(wagyu.execute(mapbox::geometry::wagyu::clip_type_union, solution, mapbox::geometry::wagyu::fill_type_positive, mapbox::geometry::wagyu::fill_type_positive)); } TEST_CASE("simple test for winding order - positive") { // This ring is counter-clockwise mapbox::geometry::linear_ring ring; ring.push_back(mapbox::geometry::point(0, 0)); ring.push_back(mapbox::geometry::point(1, 0)); ring.push_back(mapbox::geometry::point(1, 1)); ring.push_back(mapbox::geometry::point(0, 1)); ring.push_back(mapbox::geometry::point(0, 0)); mapbox::geometry::wagyu::wagyu wagyu; wagyu.add_ring(ring); mapbox::geometry::multi_polygon solution; wagyu.execute(mapbox::geometry::wagyu::clip_type_union, solution, mapbox::geometry::wagyu::fill_type_positive, mapbox::geometry::wagyu::fill_type_positive); REQUIRE(solution.size() == 1); // Check first polygon number of rings REQUIRE(solution[0].size() == 1); // Check Ring 1 is counter clockwise as well REQUIRE(solution[0][0].size() == 5); CHECK(solution[0][0][0].x == 1); CHECK(solution[0][0][0].y == 0); CHECK(solution[0][0][1].x == 1); CHECK(solution[0][0][1].y == 1); CHECK(solution[0][0][2].x == 0); CHECK(solution[0][0][2].y == 1); CHECK(solution[0][0][3].x == 0); CHECK(solution[0][0][3].y == 0); CHECK(solution[0][0][4].x == 1); CHECK(solution[0][0][4].y == 0); } TEST_CASE("simple test for winding order - negative") { mapbox::geometry::linear_ring ring; ring.push_back(mapbox::geometry::point(0, 0)); ring.push_back(mapbox::geometry::point(1, 0)); ring.push_back(mapbox::geometry::point(1, 1)); ring.push_back(mapbox::geometry::point(0, 1)); ring.push_back(mapbox::geometry::point(0, 0)); mapbox::geometry::wagyu::wagyu wagyu; wagyu.add_ring(ring); mapbox::geometry::multi_polygon solution; wagyu.execute(mapbox::geometry::wagyu::clip_type_union, solution, mapbox::geometry::wagyu::fill_type_negative, mapbox::geometry::wagyu::fill_type_negative); REQUIRE(solution.empty()); } TEST_CASE("simple test of entire vatti") { mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::polygon polygon0; mapbox::geometry::linear_ring ring0_0; ring0_0.push_back({ -79102, 0 }); ring0_0.push_back({ -70312, -55285 }); ring0_0.push_back({ 85254, -30747 }); ring0_0.push_back({ 58008, 80592 }); ring0_0.push_back({ -79102, 0 }); polygon0.push_back(ring0_0); mapbox::geometry::linear_ring ring0_1; ring0_1.push_back({ 44824, 42149 }); ring0_1.push_back({ 51855, -21089 }); ring0_1.push_back({ -65918, -32502 }); ring0_1.push_back({ -50098, 4394 }); ring0_1.push_back({ 44824, 42149 }); polygon0.push_back(ring0_1); clipper.add_polygon(polygon0, polygon_type::polygon_type_subject); mapbox::geometry::polygon polygon1; mapbox::geometry::linear_ring ring1_0; ring1_0.push_back({ 31201, 8349 }); ring1_0.push_back({ 4834, 19771 }); ring1_0.push_back({ -25488, -6592 }); ring1_0.push_back({ 10547, -19771 }); ring1_0.push_back({ 31201, 8349 }); polygon1.push_back(ring1_0); clipper.add_polygon(polygon1, polygon_type::polygon_type_clip); mapbox::geometry::polygon polygon2; mapbox::geometry::linear_ring ring2_0; ring2_0.push_back({ -40430, -3076 }); ring2_0.push_back({ -26367, -18454 }); ring2_0.push_back({ 34277, -4834 }); ring2_0.push_back({ 33838, 17136 }); ring2_0.push_back({ -40430, -3076 }); polygon2.push_back(ring2_0); clipper.add_polygon(polygon2, polygon_type::polygon_type_subject); mapbox::geometry::multi_polygon solution; clipper.execute(clip_type_union, solution, fill_type_even_odd, fill_type_even_odd); REQUIRE(solution.size() == 2); // Check first polygon number of rings REQUIRE(solution[0].size() == 2); // Check second polygon number of rings REQUIRE(solution[1].size() == 1); // Check Ring 1 REQUIRE(solution[0][0].size() == 5); CHECK(solution[0][0][0].x == -70312); CHECK(solution[0][0][0].y == -55285); CHECK(solution[0][0][1].x == 85254); CHECK(solution[0][0][1].y == -30747); CHECK(solution[0][0][2].x == 58008); CHECK(solution[0][0][2].y == 80592); CHECK(solution[0][0][3].x == -79102); CHECK(solution[0][0][3].y == 0); CHECK(solution[0][0][4].x == -70312); CHECK(solution[0][0][4].y == -55285); REQUIRE(solution[0][1].size() == 5); CHECK(solution[0][1][0].x == -65918); CHECK(solution[0][1][0].y == -32502); CHECK(solution[0][1][1].x == -50098); CHECK(solution[0][1][1].y == 4394); CHECK(solution[0][1][2].x == 44824); CHECK(solution[0][1][2].y == 42149); CHECK(solution[0][1][3].x == 51855); CHECK(solution[0][1][3].y == -21089); CHECK(solution[0][1][4].x == -65918); CHECK(solution[0][1][4].y == -32502); CHECK(solution[1][0].size() == 11); } TEST_CASE("simple test of entire vatti - reverse output") { mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::polygon polygon0; mapbox::geometry::linear_ring ring0_0; ring0_0.push_back({ -79102, 0 }); ring0_0.push_back({ -70312, -55285 }); ring0_0.push_back({ 85254, -30747 }); ring0_0.push_back({ 58008, 80592 }); ring0_0.push_back({ -79102, 0 }); polygon0.push_back(ring0_0); mapbox::geometry::linear_ring ring0_1; ring0_1.push_back({ 44824, 42149 }); ring0_1.push_back({ 51855, -21089 }); ring0_1.push_back({ -65918, -32502 }); ring0_1.push_back({ -50098, 4394 }); ring0_1.push_back({ 44824, 42149 }); polygon0.push_back(ring0_1); clipper.add_polygon(polygon0, polygon_type::polygon_type_subject); mapbox::geometry::polygon polygon1; mapbox::geometry::linear_ring ring1_0; ring1_0.push_back({ 31201, 8349 }); ring1_0.push_back({ 4834, 19771 }); ring1_0.push_back({ -25488, -6592 }); ring1_0.push_back({ 10547, -19771 }); ring1_0.push_back({ 31201, 8349 }); polygon1.push_back(ring1_0); clipper.add_polygon(polygon1, polygon_type::polygon_type_clip); mapbox::geometry::polygon polygon2; mapbox::geometry::linear_ring ring2_0; ring2_0.push_back({ -40430, -3076 }); ring2_0.push_back({ -26367, -18454 }); ring2_0.push_back({ 34277, -4834 }); ring2_0.push_back({ 33838, 17136 }); ring2_0.push_back({ -40430, -3076 }); polygon2.push_back(ring2_0); clipper.add_polygon(polygon2, polygon_type::polygon_type_subject); mapbox::geometry::multi_polygon solution; clipper.reverse_rings(true); clipper.execute(clip_type_union, solution, fill_type_even_odd, fill_type_even_odd); REQUIRE(solution.size() == 2); // Check first polygon number of rings REQUIRE(solution[0].size() == 2); // Check second polygon number of rings REQUIRE(solution[1].size() == 1); // Check Ring 1 REQUIRE(solution[0][0].size() == 5); CHECK(solution[0][0][0].x == -70312); CHECK(solution[0][0][0].y == -55285); CHECK(solution[0][0][1].x == -79102); CHECK(solution[0][0][1].y == 0); CHECK(solution[0][0][2].x == 58008); CHECK(solution[0][0][2].y == 80592); CHECK(solution[0][0][3].x == 85254); CHECK(solution[0][0][3].y == -30747); CHECK(solution[0][0][4].x == -70312); CHECK(solution[0][0][4].y == -55285); REQUIRE(solution[0][1].size() == 5); CHECK(solution[0][1][0].x == -65918); CHECK(solution[0][1][0].y == -32502); CHECK(solution[0][1][1].x == 51855); CHECK(solution[0][1][1].y == -21089); CHECK(solution[0][1][2].x == 44824); CHECK(solution[0][1][2].y == 42149); CHECK(solution[0][1][3].x == -50098); CHECK(solution[0][1][3].y == 4394); CHECK(solution[0][1][4].x == -65918); CHECK(solution[0][1][4].y == -32502); CHECK(solution[1][0].size() == 11); } TEST_CASE("simple test of entire vatti -- ring input and output as int32_t") { using T2 = std::int32_t; mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::polygon polygon0; mapbox::geometry::linear_ring ring0_0; ring0_0.push_back({ -79102, 0 }); ring0_0.push_back({ -70312, -55285 }); ring0_0.push_back({ 85254, -30747 }); ring0_0.push_back({ 58008, 80592 }); ring0_0.push_back({ -79102, 0 }); polygon0.push_back(ring0_0); mapbox::geometry::linear_ring ring0_1; ring0_1.push_back({ 44824, 42149 }); ring0_1.push_back({ 51855, -21089 }); ring0_1.push_back({ -65918, -32502 }); ring0_1.push_back({ -50098, 4394 }); ring0_1.push_back({ 44824, 42149 }); polygon0.push_back(ring0_1); clipper.add_polygon(polygon0, polygon_type::polygon_type_subject); mapbox::geometry::polygon polygon1; mapbox::geometry::linear_ring ring1_0; ring1_0.push_back({ 31201, 8349 }); ring1_0.push_back({ 4834, 19771 }); ring1_0.push_back({ -25488, -6592 }); ring1_0.push_back({ 10547, -19771 }); ring1_0.push_back({ 31201, 8349 }); polygon1.push_back(ring1_0); clipper.add_polygon(polygon1, polygon_type::polygon_type_clip); mapbox::geometry::polygon polygon2; mapbox::geometry::linear_ring ring2_0; ring2_0.push_back({ -40430, -3076 }); ring2_0.push_back({ -26367, -18454 }); ring2_0.push_back({ 34277, -4834 }); ring2_0.push_back({ 33838, 17136 }); ring2_0.push_back({ -40430, -3076 }); polygon2.push_back(ring2_0); clipper.add_polygon(polygon2, polygon_type::polygon_type_subject); mapbox::geometry::multi_polygon solution; clipper.execute(clip_type_union, solution, fill_type_even_odd, fill_type_even_odd); REQUIRE(solution.size() == 2); // Check first polygon number of rings REQUIRE(solution[0].size() == 2); // Check second polygon number of rings REQUIRE(solution[1].size() == 1); // Check Ring 1 REQUIRE(solution[0][0].size() == 5); CHECK(solution[0][0][0].x == -70312); CHECK(solution[0][0][0].y == -55285); CHECK(solution[0][0][1].x == 85254); CHECK(solution[0][0][1].y == -30747); CHECK(solution[0][0][2].x == 58008); CHECK(solution[0][0][2].y == 80592); CHECK(solution[0][0][3].x == -79102); CHECK(solution[0][0][3].y == 0); CHECK(solution[0][0][4].x == -70312); CHECK(solution[0][0][4].y == -55285); REQUIRE(solution[0][1].size() == 5); CHECK(solution[0][1][0].x == -65918); CHECK(solution[0][1][0].y == -32502); CHECK(solution[0][1][1].x == -50098); CHECK(solution[0][1][1].y == 4394); CHECK(solution[0][1][2].x == 44824); CHECK(solution[0][1][2].y == 42149); CHECK(solution[0][1][3].x == 51855); CHECK(solution[0][1][3].y == -21089); CHECK(solution[0][1][4].x == -65918); CHECK(solution[0][1][4].y == -32502); CHECK(solution[1][0].size() == 11); } TEST_CASE("simple test of entire vatti -- all processing as int32_t") { using T2 = std::int32_t; mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::polygon polygon0; mapbox::geometry::linear_ring ring0_0; ring0_0.push_back({ -79102, 0 }); ring0_0.push_back({ -70312, -55285 }); ring0_0.push_back({ 85254, -30747 }); ring0_0.push_back({ 58008, 80592 }); ring0_0.push_back({ -79102, 0 }); polygon0.push_back(ring0_0); mapbox::geometry::linear_ring ring0_1; ring0_1.push_back({ 44824, 42149 }); ring0_1.push_back({ 51855, -21089 }); ring0_1.push_back({ -65918, -32502 }); ring0_1.push_back({ -50098, 4394 }); ring0_1.push_back({ 44824, 42149 }); polygon0.push_back(ring0_1); clipper.add_polygon(polygon0, polygon_type::polygon_type_subject); mapbox::geometry::polygon polygon1; mapbox::geometry::linear_ring ring1_0; ring1_0.push_back({ 31201, 8349 }); ring1_0.push_back({ 4834, 19771 }); ring1_0.push_back({ -25488, -6592 }); ring1_0.push_back({ 10547, -19771 }); ring1_0.push_back({ 31201, 8349 }); polygon1.push_back(ring1_0); clipper.add_polygon(polygon1, polygon_type::polygon_type_clip); mapbox::geometry::polygon polygon2; mapbox::geometry::linear_ring ring2_0; ring2_0.push_back({ -40430, -3076 }); ring2_0.push_back({ -26367, -18454 }); ring2_0.push_back({ 34277, -4834 }); ring2_0.push_back({ 33838, 17136 }); ring2_0.push_back({ -40430, -3076 }); polygon2.push_back(ring2_0); clipper.add_polygon(polygon2, polygon_type::polygon_type_subject); mapbox::geometry::multi_polygon solution; clipper.execute(clip_type_union, solution, fill_type_even_odd, fill_type_even_odd); REQUIRE(solution.size() == 2); // Check first polygon number of rings REQUIRE(solution[0].size() == 2); // Check second polygon number of rings REQUIRE(solution[1].size() == 1); // Check Ring 1 REQUIRE(solution[0][0].size() == 5); CHECK(solution[0][0][0].x == -70312); CHECK(solution[0][0][0].y == -55285); CHECK(solution[0][0][1].x == 85254); CHECK(solution[0][0][1].y == -30747); CHECK(solution[0][0][2].x == 58008); CHECK(solution[0][0][2].y == 80592); CHECK(solution[0][0][3].x == -79102); CHECK(solution[0][0][3].y == 0); CHECK(solution[0][0][4].x == -70312); CHECK(solution[0][0][4].y == -55285); REQUIRE(solution[0][1].size() == 5); CHECK(solution[0][1][0].x == -65918); CHECK(solution[0][1][0].y == -32502); CHECK(solution[0][1][1].x == -50098); CHECK(solution[0][1][1].y == 4394); CHECK(solution[0][1][2].x == 44824); CHECK(solution[0][1][2].y == 42149); CHECK(solution[0][1][3].x == 51855); CHECK(solution[0][1][3].y == -21089); CHECK(solution[0][1][4].x == -65918); CHECK(solution[0][1][4].y == -32502); CHECK(solution[1][0].size() == 11); } TEST_CASE("Test crash with two quads") { mapbox::geometry::wagyu::wagyu clipper; clipper.add_polygon( mapbox::geometry::polygon{ { { -29, 1920 }, { 30, 2017 }, { 55, 2176 }, { -128, 1920 }, { -29, 1920 } } }, polygon_type::polygon_type_subject); clipper.add_polygon( mapbox::geometry::polygon{ { { -128, 1778 }, { -88, 1823 }, { 30, 2017 }, { -128, 2176 }, { -128, 1778 } } }, polygon_type::polygon_type_subject); mapbox::geometry::multi_polygon solution; clipper.execute(clip_type::clip_type_union, solution, fill_type::fill_type_non_zero, fill_type::fill_type_non_zero); REQUIRE(!solution.empty()); } wagyu-0.5.0/tests/util/000077500000000000000000000000001360766232600150025ustar00rootroot00000000000000wagyu-0.5.0/tests/util/boost_geometry_adapters.hpp000066400000000000000000000075661360766232600224550ustar00rootroot00000000000000#include #include #include #include #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Weffc++" #include #include #include namespace boost { namespace geometry { namespace traits { template struct tag> { using type = point_tag; }; template struct coordinate_type> { using type = CoordinateType; }; template struct coordinate_system> { using type = boost::geometry::cs::cartesian; }; template struct dimension> : boost::mpl::int_<2> {}; template struct access, 0> { static CoordinateType get(mapbox::geometry::point const& p) { return p.x; } static void set(mapbox::geometry::point& p, CoordinateType x) { p.x = x; } }; template struct access, 1> { static CoordinateType get(mapbox::geometry::point const& p) { return p.y; } static void set(mapbox::geometry::point& p, CoordinateType y) { p.y = y; } }; template struct tag> { using type = ring_tag; }; template struct point_order> { static const order_selector value = counterclockwise; }; template struct tag> { using type = polygon_tag; }; template struct ring_mutable_type> { using type = mapbox::geometry::linear_ring&; }; template struct ring_const_type> { using type = mapbox::geometry::linear_ring const&; }; template struct interior_mutable_type> { using type = boost::iterator_range::iterator>; }; template struct interior_const_type> { using type = boost::iterator_range::const_iterator>; }; template struct exterior_ring> { static mapbox::geometry::linear_ring& get(mapbox::geometry::polygon& p) { return p.at(0); } static mapbox::geometry::linear_ring const& get(mapbox::geometry::polygon const& p) { return p.at(0); } }; template struct interior_rings> { static boost::iterator_range::iterator> get(mapbox::geometry::polygon& p) { return boost::make_iterator_range(p.begin() + 1, p.end()); } static boost::iterator_range::const_iterator> get(mapbox::geometry::polygon const& p) { return boost::make_iterator_range(p.begin() + 1, p.end()); } }; template struct tag> { using type = multi_polygon_tag; }; } // namespace traits } // namespace geometry } // namespace boost #pragma GCC diagnostic pop wagyu-0.5.0/tests/util/fixture_utils.hpp000066400000000000000000000025311360766232600204220ustar00rootroot00000000000000#include #include #include #include #include #include #include #include template mapbox::geometry::polygon fixture_file_to_polygon(const char* file_path) { // todo safety checks opening files FILE* file = fopen(file_path, "r"); char read_buffer[65536]; rapidjson::FileReadStream in_stream(file, read_buffer, sizeof(read_buffer)); rapidjson::Document document; document.ParseStream<0, rapidjson::UTF8<>, rapidjson::FileReadStream>(in_stream); if (!document.IsArray()) { throw std::runtime_error(("Input file (" + std::string(file_path) + ") is not valid json")); } // todo catch parsing errors mapbox::geometry::polygon poly; for (rapidjson::SizeType i = 0; i < document.Size(); ++i) { mapbox::geometry::linear_ring lr; if (!document[i].IsArray()) { throw std::runtime_error("A ring (in " + std::string(file_path) + ") is not a valid json array"); } for (rapidjson::SizeType j = 0; j < document[i].Size(); ++j) { lr.push_back({ document[i][j][0].GetInt(), document[i][j][1].GetInt() }); } poly.emplace_back(lr); } fclose(file); return poly; }