././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.703476 inflate64-1.0.4/0000755000175100017510000000000015112276614012763 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.flake80000644000175100017510000000011015112276603014124 0ustar00runnerrunner[flake8] max-line-length = 125 extend-ignore = E203, W503 ignore = F841 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.git_archival.txt0000644000175100017510000000017415112276603016236 0ustar00runnerrunnernode: $Format:%H$ node-date: $Format:%cI$ describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$ ref-names: $Format:%D$././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.gitattributes0000644000175100017510000000004015112276603015646 0ustar00runnerrunner.git_archival.txt export-subst ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.693476 inflate64-1.0.4/.github/0000755000175100017510000000000015112276614014323 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.github/FUNDING.yml0000644000175100017510000000124415112276603016137 0ustar00runnerrunner# These are supported funding model platforms github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: miurahr issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.github/dependabot.yml0000644000175100017510000000021715112276603017151 0ustar00runnerrunnerversion: 2 updates: - package-ecosystem: pip directory: "/" schedule: interval: daily time: "20:00" open-pull-requests-limit: 10 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.693476 inflate64-1.0.4/.github/workflows/0000755000175100017510000000000015112276614016360 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.github/workflows/publish-to-pypi.yml0000644000175100017510000000545115112276603022153 0ustar00runnerrunnername: Publish Python 🐍 distributions 📦 to PyPI and TestPyPI on: push: branches: - releases/* tags: - v* jobs: build_wheels: name: Build wheels on ${{ matrix.platform }} runs-on: ${{ matrix.platform }} strategy: matrix: platform: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm, windows-11-arm] env: CIBW_ARCHS_LINUX: "native" CIBW_ARCHS_MACOS: "x86_64 universal2 arm64" # Include latest Python beta CIBW_PRERELEASE_PYTHONS: True CIBW_SKIP: "pp*" steps: - name: Checkout 🛎️ uses: actions/checkout@v4 with: fetch-depth: 20 - name: Fetch release tags run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Set up Python 🐍 uses: actions/setup-python@v6 with: python-version: 3.13 - name: Install cibuildwheel run: | python -m pip install -U pip cibuildwheel - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse - name: Upload wheels uses: actions/upload-artifact@v4 with: name: artifact-${{ matrix.platform }} path: wheelhouse/*.whl build_source_dist: name: Build source dist runs-on: ubuntu-latest steps: - name: Checkout 🛎️ uses: actions/checkout@v4 with: fetch-depth: 20 - name: Fetch release tags run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Set up Python 🐍 uses: actions/setup-python@v4 with: python-version: 3.13 - name: Build source distribution & wheels🎡 run: | python -m pip install -U pip setuptools setuptools_scm[toml] build python -m build --sdist - name: Upload source distribution uses: actions/upload-artifact@v4 with: name: artifact-source path: dist/*.tar.gz pypi-publish: name: publish Python 🐍 distributions 📦 to PyPI and TestPyPI runs-on: ubuntu-latest needs: [build_wheels, build_source_dist] environment: pypi permissions: id-token: write steps: - name: download dist artifacts uses: actions/download-artifact@v4 with: path: dist merge-multiple: true - name: Publish distribution 📦 to Test PyPI if: ${{ startsWith(github.event.ref, 'refs/heads/releases') }} uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # release/v1.12.4 with: repository-url: https://test.pypi.org/legacy/ - name: Publish distribution 📦 to PyPI if: startsWith(github.event.ref, 'refs/tags') uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # release/v1.12.4 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.github/workflows/run-tox-tests.yml0000644000175100017510000000204315112276603021654 0ustar00runnerrunnername: Run Tox tests on: push: branches: - main - releases/* pull_request: jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-24.04, windows-latest, ubuntu-24.04-arm, windows-11-arm] python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14", ] include: - os: macos-latest python-version: "3.14" exclude: - os: windows-11-arm python-version: "3.10" name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }} steps: - uses: actions/checkout@v4 with: fetch-depth: 20 - name: Setup python uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | pip install -U pip tox wheel setuptools setuptools_scm[toml] pip install tox-gh-actions - name: Test project with tox run: | tox ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/.readthedocs.yaml0000644000175100017510000000067115112276603016214 0ustar00runnerrunner# Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the OS, Python version, and other tools you might need build: os: ubuntu-24.04 tools: python: "3.13" # Build documentation in the "docs/" directory with Sphinx sphinx: configuration: docs/conf.py python: install: - method: pip path: . extra_requirements: - docs ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/CMakeLists.txt0000644000175100017510000001444015112276603015524 0ustar00runnerrunnercmake_minimum_required(VERSION 3.19) project(inflate64 C CXX) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) # TARGET PYTHON version set(PY_VERSION 3.13) set(Python_FIND_IMPLEMENTATIONS CPython) #set(Python_FIND_IMPLEMENTATIONS PyPy) set(VENV_PATH "${CMAKE_BINARY_DIR}/venv") set(DEBUG_BUILD OFF CACHE BOOL "Enable debug build?") set(DEBUG_LOG_LEVEL "1" CACHE STRING "Debug log level?") if (DEBUG_BUILD) else() set(COMPILE_WARNING_AS_ERROR ON) endif() # ################################################################################################## # set(_sources src/ext/_inflate64module.c src/lib/deflate.c src/lib/inflate.c src/lib/inflate_tree.c src/lib/deflate_tree.c src/lib/util.c src/lib/static_tables.c ) # ################################################################################################## # Configuration for python-ext set(Python_FIND_STRATEGY VERSION) find_package(Python ${PY_VERSION}.0...${PY_VERSION}.99 COMPONENTS Interpreter Development) set(PY_PACKAGE inflate64) set(PY_EXT_FILE _inflate64) execute_process( COMMAND ${Python_EXECUTABLE} -c "import sysconfig\nprint(sysconfig.get_config_var('EXT_SUFFIX'))\n" OUTPUT_VARIABLE PY_EXT_EXT OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND ${Python_EXECUTABLE} -c "import sysconfig\nprint(sysconfig.get_platform())\n" OUTPUT_VARIABLE PY_PLATFORM OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND ${Python_EXECUTABLE} -c "import sysconfig\nprint(sysconfig.get_python_version())\n" OUTPUT_VARIABLE PY_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) message(STATUS "Python SOABI is ${Python_SOABI}") set(PY_SRC_DIR src/${PY_PACKAGE}) set(EXT_DIR ${CMAKE_BINARY_DIR}) set(PY_EXT_DIR build/lib.${PY_PLATFORM}-${PY_VERSION}/${PY_PACKAGE}) set(PY_EXT ${PY_EXT_DIR}/${PY_EXT_FILE}${PY_EXT_EXT}) set(EXT ${EXT_DIR}/${PY_EXT_FILE}.${PY_EXT_EXT}) set(PY_EXT_INLINE ${CMAKE_SOURCE_DIR}/src/${PY_PACKAGE}/${PY_EXT_FILE}${PY_EXT_EXT}) # ################################################################################################## # bulid ext by setup.py if (WIN32) if(DEBUG_BUILD) set(BUILD_EXT_PYTHON ${VENV_PATH}/Scripts/python_d.exe) else() set(BUILD_EXT_PYTHON ${VENV_PATH}/Scripts/python.exe) endif() set(BUILD_EXT_OPTION) else() set(BUILD_EXT_PYTHON ${VENV_PATH}/bin/python) set(BUILD_EXT_OPTION --warning-as-error) endif() add_custom_target( build_ext_by_setup BYPRODUCTS ${PY_EXT} COMMAND ${BUILD_EXT_PYTHON} setup.py build_ext ${BUILD_EXT_OPTION} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS venv.stamp SOURCES ${_sources}) # ################################################################################################## # build ext by cmake include_directories(src/lib) Python_add_library(_inflate64 MODULE WITH_SOABI ${_sources}) if(MSVC) target_compile_options(_inflate64 PRIVATE "/wd4996") endif() if(DEBUG_BUILD) target_compile_definitions(_inflate64 PRIVATE -DZLIB_DEBUG=${DEBUG_LOG_LEVEL}) endif() add_custom_target(build_ext BYPRODUCTS ${PY_EXT_INLINE} COMMAND ${CMAKE_COMMAND} -E copy_if_different $ "${PY_SRC_DIR}" DEPENDS _inflate64 venv.stamp ) # ################################################################################################## # create virtualenv file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/requirements.txt " coverage[toml]>=5.2 hypothesis pytest>=6.0 pytest-benchmark pytest-cov pytest-timeout cffi ") if (WIN32) set(PIP_COMMAND ${VENV_PATH}/Scripts/pip.exe) else() set(PIP_COMMAND ${VENV_PATH}/bin/pip) endif() add_custom_target( venv.stamp BYPRODUCTS venv.stamp COMMAND ${Python_EXECUTABLE} -m venv ${VENV_PATH} COMMAND ${PIP_COMMAND} install -r ${CMAKE_BINARY_DIR}/requirements.txt COMMAND ${CMAKE_COMMAND} -E touch venv.stamp) set(SRC_PATH "${CMAKE_SOURCE_DIR}/src") set(VPKG_PATH_A "${VENV_PATH}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/") set(VPKG_PATH_B "${VENV_PATH}/Lib/site-packages/") set(VPKG_PATH_C "${CMAKE_BINARY_DIR}") # ################################################################################################## # For pytest file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/pytest_runner.cpp " #include #include #include int main(int argc, char **argv) { std::string args; if ( argc > 1) { args.append(\"[\"); for (int i = 1; i < argc; i++) { if (i > 2) args.append(\",\"); args.append(\"\\\"\"); args.append(argv[i]); args.append(\"\\\"\"); } args.append(\"]\"); } std::filesystem::path src_path = \"${SRC_PATH}\"; std::filesystem::path vsite_path_a = \"${VPKG_PATH_A}\"; std::filesystem::path vsite_path_b = \"${VPKG_PATH_B}\"; std::filesystem::path vsite_path_c = \"${VPKG_PATH_C}\"; std::string pycode = \"import sys\\n\" \"sys.path.append('\" + src_path.string() + \"')\\n\" \"sys.path.append('\" + vsite_path_a.string() + \"')\\n\" \"sys.path.append('\" + vsite_path_b.string() + \"')\\n\" \"import pytest\\n\" \"pytest.main(\" + args + \")\\n\"; execl(\"${Python_EXECUTABLE}\", \"${Python_EXECUTABLE}\", \"-c\", pycode.c_str(), (char*)0); return 0; }") add_executable(pytest_runner ${CMAKE_CURRENT_BINARY_DIR}/pytest_runner.cpp) target_include_directories(pytest_runner PRIVATE ${Python_INCLUDE_DIRS}) target_link_libraries(pytest_runner PRIVATE ${Python_LIBRARIES}) add_dependencies(pytest_runner venv.stamp build_ext) # ################################################################################################## # make table utility add_executable(makefixed9 src/lib/static_tables.c src/lib/inflate.c src/lib/inflate_tree.c src/lib/deflate_tree.c src/lib/util.c ) target_compile_definitions(makefixed9 PRIVATE -DGEN_TREES_H) # ################################################################################################## add_custom_target(run_tox COMMAND ${CMAKE_COMMAND} -E env VIRTUAL_ENV=${VENV_PATH} ${VENV_PATH}/bin/python -m tox WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS venv.stamp ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/COPYING0000644000175100017510000006364215112276603014027 0ustar00runnerrunner GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/MANIFEST.in0000644000175100017510000000061315112276603014517 0ustar00runnerrunnerinclude *.rst include .flake8 include CMakeLists.txt include .git_archival.txt include COPYING recursive-include docs *.rst recursive-include docs *.txt recursive-include src *.py recursive-include src py.typed recursive-include src *.c recursive-include src *.h recursive-include tests *.py recursive-include tests *.zip exclude .gitignore exclude .woodpecker.yml prune ci prune ISSUE_TEMPLATE ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.703476 inflate64-1.0.4/PKG-INFO0000644000175100017510000001044015112276614014057 0ustar00runnerrunnerMetadata-Version: 2.4 Name: inflate64 Version: 1.0.4 Summary: deflate64 compression/decompression library Author-email: Hiroshi Miura License: LGPL-2.1-or-later Project-URL: Source, https://github.com/miurahr/inflate64 Project-URL: Homepage, https://inflate64.readthedocs.io/ Project-URL: Documentation, https://inflate64.readthedocs.io/en/stable/ Project-URL: Bug Tracker, https://github.com/miurahr/inflate64/issues Project-URL: Changelog, https://inflate64.readthedocs.io/en/latest/changelog.html Keywords: deflate64,compression Classifier: Development Status :: 5 - Production/Stable Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: POSIX Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Topic :: Software Development :: Libraries :: Python Modules Requires-Python: >=3.9 Description-Content-Type: text/x-rst License-File: COPYING Provides-Extra: test Requires-Dist: pytest; extra == "test" Provides-Extra: docs Requires-Dist: sphinx>=5.0; extra == "docs" Requires-Dist: sphinx_rtd_theme; extra == "docs" Requires-Dist: docutils; extra == "docs" Provides-Extra: check Requires-Dist: mypy>=1.10.0; extra == "check" Requires-Dist: mypy_extensions>=0.4.1; extra == "check" Requires-Dist: check-manifest; extra == "check" Requires-Dist: flake8; extra == "check" Requires-Dist: flake8-black; extra == "check" Requires-Dist: flake8-deprecated; extra == "check" Requires-Dist: flake8-isort; extra == "check" Requires-Dist: pygments; extra == "check" Requires-Dist: readme-renderer; extra == "check" Requires-Dist: twine; extra == "check" Dynamic: license-file inflate64 ========= .. image:: https://badge.fury.io/py/inflate64.svg :target: https://badge.fury.io/py/inflate64 .. image:: https://github.com/miurahr/inflate64/actions/workflows/run-tox-tests.yml/badge.svg?branch=main :target: https://github.com/miurahr/inflate64/actions/workflows/run-tox-tests.yml .. image:: https://ci.codeberg.org/api/badges/12505/status.svg :target: https://ci.codeberg.org/repos/12505 The ``inflate64`` is a python package to provide ``Deflater`` and ``Inflater`` class to compress and decompress with Enhanced Deflate compression algorithm. The project is in ``Production/Stable`` status. How to use ---------- You can install it with ``pip`` command as usual. .. code-block:: pip install inflate64 You can extract compressed data by instantiating ``Inflater`` class and call ``inflate`` method. .. code-block:: python import inflate64 decompressor = inflate64.Inflater() extracted = decompressor.inflate(data) You can also compress data by instantiating ``Deflater`` class and call ``deflate`` method. .. code-block:: python import inflate64 compressor = inflate64.Deflater() compressed = compressor.deflate(data) compressed += compressor.flush() License ------- This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA .. note:: Please note that Enhanced Deflate algorithm is also known as `DEFLATE64` :sup:`TM` that is a registered trademark of `PKWARE, Inc.` ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/README.rst0000644000175100017510000000405415112276603014453 0ustar00runnerrunnerinflate64 ========= .. image:: https://badge.fury.io/py/inflate64.svg :target: https://badge.fury.io/py/inflate64 .. image:: https://github.com/miurahr/inflate64/actions/workflows/run-tox-tests.yml/badge.svg?branch=main :target: https://github.com/miurahr/inflate64/actions/workflows/run-tox-tests.yml .. image:: https://ci.codeberg.org/api/badges/12505/status.svg :target: https://ci.codeberg.org/repos/12505 The ``inflate64`` is a python package to provide ``Deflater`` and ``Inflater`` class to compress and decompress with Enhanced Deflate compression algorithm. The project is in ``Production/Stable`` status. How to use ---------- You can install it with ``pip`` command as usual. .. code-block:: pip install inflate64 You can extract compressed data by instantiating ``Inflater`` class and call ``inflate`` method. .. code-block:: python import inflate64 decompressor = inflate64.Inflater() extracted = decompressor.inflate(data) You can also compress data by instantiating ``Deflater`` class and call ``deflate`` method. .. code-block:: python import inflate64 compressor = inflate64.Deflater() compressed = compressor.deflate(data) compressed += compressor.flush() License ------- This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA .. note:: Please note that Enhanced Deflate algorithm is also known as `DEFLATE64` :sup:`TM` that is a registered trademark of `PKWARE, Inc.` ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/SECURITY.rst0000644000175100017510000000065515112276603014770 0ustar00runnerrunnerSecurity Policy =============== Supported Versions ------------------ +---------+--------------------+ | Version | Status | +=========+====================+ | 1.0.x | Production/Stable | +---------+--------------------+ | < 1.0 | not supported | +---------+--------------------+ Reporting a Vulnerability ------------------------- Please disclose security vulnerabilities privately at miurahr@linux.com ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.695476 inflate64-1.0.4/docs/0000755000175100017510000000000015112276614013713 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/Changelog.rst0000644000175100017510000000611715112276603016337 0ustar00runnerrunner========= ChangeLog ========= All notable changes to this project will be documented in this file. `Unreleased`_ ============= v1.0.4_ ======= * Support Python 3.14 * Update GitHub Actions CI/CD scripts * Drop required python upper limit v1.0.3_ ======= * Add readthedocs manual page. * Publish Python 3.13 wheels. * Fix GitHub Actions CI/CD script for aarch64. v1.0.2_ ======= * Published to PyPI using GItHub Actions as a trusted publisher * Add GitHub Actions CI/CD script * Drop Azure Pipelines CI/CD v1.0.1_ ======= * Change deflate_tree: base_length[] and length_code[] not to be const to avoid C2166 error on windows * Drop support for python 3.8 and add support for python 3.13 v1.0.0_ ======= Changed ------- * Update CMakeLists.txt developer script v1.0.0rc2_ ========== Changed ------- * Update test runner for library developer (#11) * Project status to be stable * docs: update security policy v1.0.0rc1_ ========== Added ----- * Support python 3.12 (#9) Fixed ----- * Replace deprecated PyMem_Calloc with GIL free PyMem_RawCalloc * Use PyMem_RawFree accordingly. Changed ------- * Bump cibuildwheel@2.16.2 * Update cibuildwheel configuration * CI on ci.codeberg.org * Minimum required Python verison to 3.8 v0.3.1_ ======= Fixed ----- * Fix import error on python 3.7. v0.3.0_ ======= Fixed ----- * Deflater: Fix SIGSEGV when larger files. Changed ------- * Use length_code table for the range as same as original deflate * Add l_code(length) macro. v0.2.0_ ======= Added ----- * Deflater compession class(#2) * Docs: add technical note about enhanced deflate(#3) Changed ------- * Enhanced and enabled compression test cases * Add internal check for window alloc v0.1.4_ ======= * Move project forge to CodeBerg.org. * Drop github actions scripts. * Add azure-pipelines YAML files. v0.1.3_ ======= * Add Python 3.11 beta wheels. v0.1.2_ ======= * Actions: Fix sdist build command to use pyproject.toml v0.1.1_ ======= * First Alpha * Support decompression/inflation .. History links .. _Unreleased: https://github.com/miurahr/inflate64/compare/v1.0.4...HEAD .. _v1.0.4: https://github.com/miurahr/inflate64/compare/v1.0.3...v1.0.4 .. _v1.0.3: https://github.com/miurahr/inflate64/compare/v1.0.2...v1.0.3 .. _v1.0.2: https://github.com/miurahr/inflate64/compare/v1.0.1...v1.0.2 .. _v1.0.1: https://github.com/miurahr/inflate64/compare/v1.0.0...v1.0.1 .. _v1.0.0: https://github.com/miurahr/inflate64/compare/v1.0.0rc2...v1.0.0 .. _v1.0.0rc2: https://github.com/miurahr/inflate64/compare/v1.0.0rc1...v1.0.0rc2 .. _v1.0.0rc1: https://github.com/miurahr/inflate64/compare/v0.3.1...v1.0.0rc1 .. _v0.3.1: https://github.com/miurahr/inflate64/compare/v0.3.0...v0.3.1 .. _v0.3.0: https://github.com/miurahr/inflate64/compare/v0.2.0...v0.3.0 .. _v0.2.0: https://github.com/miurahr/inflate64/compare/v0.1.4...v0.2.0 .. _v0.1.4: https://github.com/miurahr/inflate64/compare/v0.1.3...v0.1.4 .. _v0.1.3: https://github.com/miurahr/inflate64/compare/v0.1.2...v0.1.3 .. _v0.1.2: https://github.com/miurahr/inflate64/compare/v0.1.1...v0.1.2 .. _v0.1.1: https://github.com/miurahr/inflate64/compare/v0.1.0...v0.1.1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/LICENSES.txt0000644000175100017510000000351515112276603015663 0ustar00runnerrunnerInflate64 is distributed under GNU Lesser General Public License version 2.1 or any later version. Inflate64 uses sources from zlib with modifications. Here is a zlib license notification. Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu If you use the zlib library in a product, we would appreciate *not* receiving lengthy legal documents to sign. The sources are provided for free but without warranty of any kind. The library has been entirely written by Jean-loup Gailly and Mark Adler; it does not include third-party code. We make all contributions to and distributions of this project solely in our personal capacity, and are not conveying any rights to any intellectual property of any third parties. If you redistribute modified sources, we would appreciate that you include in the file ChangeLog history information documenting your changes. Please read the FAQ for more information on the distribution of modified source versions. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/Makefile0000644000175100017510000000120115112276603015343 0ustar00runnerrunner# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = ../build/docs # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/conf.py0000644000175100017510000000506515112276603015216 0ustar00runnerrunner# Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import sys sys.path.insert(0, os.path.abspath('../src/')) # -- Project information ----------------------------------------------------- project = 'inflate64' copyright = '2021, Hiroshi Miura' author = 'Hiroshi Miura' # -- General configuration --------------------------------------------------- source_suffix = '.rst' master_doc = 'index' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.coverage', 'sphinx.ext.viewcode', 'sphinx.ext.graphviz', "sphinx_rtd_theme", ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'sphinx_rtd_theme' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] html_theme_options = { 'description': 'inflate64 -- a compression library', 'github_banner': True, 'github_user': 'miurahr', 'github_repo': 'inflate64', 'page_width': 'auto', 'badge_branch': 'main', 'donate_url': 'https://liberapay.com/miurahr', } html_title = 'Inflate64 compression library' html_short_title = 'Inflate64 docs' html_sidebars = { '**': [ 'about.html', 'navigation.html', 'relations.html', 'searchbox.html', 'donate.html', ] } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/contribution.rst0000644000175100017510000001102015112276603017154 0ustar00runnerrunner.. _contributor_guide: :tocdepth: 2 ***************** Contributor guide ***************** Development environment ======================= If you’re reading this, you’re probably interested in contributing to inflate64. Thank you very much! The purpose of this guide is to get you to the point where you can make improvements to the Infalte64 and share them with the rest of the team. Setup Python and C compiler --------------------------- The Inflate64 is written in the Python and C languages bound with C Foreign Function Interface, and CPython C/C++ API. Python installation for various platforms with various ways. You need to install Python environment which support `pip` command. Venv/Virtualenv is recommended for development. Get Early Feedback ------------------ If you are contributing, do not feel the need to sit on your contribution until it is perfectly polished and complete. It helps everyone involved for you to seek feedback as early as you possibly can. Submitting an early, unfinished version of your contribution for feedback in no way prejudices your chances of getting that contribution accepted, and can save you from putting a lot of work into a contribution that is not suitable for the project. Code Contribution ================= Steps submitting code --------------------- When contributing code, you’ll want to follow this checklist: 1. Fork the repository on GitHub. 2. Run the tox tests to confirm they all pass on your system. If they don’t, you’ll need to investigate why they fail. If you’re unable to diagnose this yourself, raise it as a bug report. 3. Write tests that demonstrate your bug or feature. Ensure that they fail. 4. Make your change. 5. Run the entire test suite again using tox, confirming that all tests pass including the ones you just added. 6. Send a GitHub Pull Request to the main repository’s master branch. GitHub Pull Requests are the expected method of code collaboration on this project. Code review ----------- Contribution will not be merged until they have been code reviewed. There are limited reviewer in the team, reviews from other contributors are also welcome. You should implemented a review feedback unless you strongly object to it. Code style ---------- The inflate64 uses the PEP8/Black code style. In addition to the standard PEP8, we have an extended guidelines. * line length should not exceed 125 characters. * Black format prettier is enforced. * It also use MyPy static type check enforcement. Test cases ---------- There is three types of tests and we measures coverages; * Unit tests for encode and decode, single data, and multiple data. * Integration test with CSV file which size is larger than buffer size. * Hypothesis fuzzing test. All tests should be passed before merging. C bindings development ====================== Debugging bindings has always been itchy task for developers. Even proprietary modern IDEs, such as PyCharm Professional/CLion, does not provide a cross debugging feature. Ref: https://youtrack.jetbrains.com/issue/CPP-5797 CMake ----- The project has a `CMakeLists.txt` file to run cross-debugging, CMake is a cross-platform builder meta tool for C/C++ projects. Jetbrains CLion --------------- CLion is an IDE tool for C/C++ development that support CMake for build configuration. Dependency ---------- - Python > 3.9 - python development files (for example python3.8-dev package) - venv - GCC or CLang C/C++ compiler - CMake 3.19 or later When you want to change target python variation and version, please edit CMakeLists.txt#L8-L9 .. code-block:: cmake set(PY_VERSION 3.13) set(Python_FIND_IMPLEMENTATIONS PyPy) Manual build and run -------------------- TL;DR .. code-block:: console mkdir cmake-build cd cmake-build cmake .. make pytest_runner gdb ./pytest_runner ../tests pytest_runner is a generated program that help you run pytest under C/C++ debugger. You may want to run it on IDE environment. You can also run pytest with tox .. code-block:: console tox -e py313 Library build ------------- .. code-block:: console cd cmake-build make generate_ext CMake targets and files ----------------------- THere are several targets you can build. pytest_runner: A C++ program that launch python and pytest. The source code is generated by CMake configuration onto cmake build directory (cmake-build in above example). generate_ext: A virtual target to produce C extension for CPython. venv.stamp: interim target to produce virtualenv environment for pytest_runner ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/getting_started.rst0000644000175100017510000000153115112276603017632 0ustar00runnerrunnerGetting started with Inflate64 ============================== The ``inflate64`` is a python package to provide ``Deflater`` and ``Inflater`` class to compress and decompress with Enhanced Deflate compression algorithm. The project is in ``Production/Stable`` status. How to use ---------- You can install it with ``pip`` command as usual. .. code-block:: pip install inflate64 You can extract compressed data by instantiating ``Inflater`` class and call ``inflate`` method. .. code-block:: python import inflate64 decompressor = inflate64.Inflater() extracted = decompressor.inflate(data) You can also compress data by instantiating ``Deflater`` class and call ``deflate`` method. .. code-block:: python import inflate64 compressor = inflate64.Deflater() compressed = compressor.deflate(data) compressed += compressor.flush() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/index.rst0000644000175100017510000000077215112276603015560 0ustar00runnerrunnerInflate64 Python module ======================= Inflate is a wellknown compression technique as a ZLib compression library. Inflate64 is a extension of the Inflate. Please refer technical note for details. The ``inflate64`` package uses C files from ``zlib``. .. toctree:: :maxdepth: 2 :caption: Contents: getting_started contribution security_policy technote license_notice Changelog Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/license_notice.rst0000644000175100017510000000376715112276603017443 0ustar00runnerrunner.. _license_notice: ============== License notice ============== Inflate64 is distributed under GNU Lesser General Public License version 2.1 or any later version. Inflate64 uses sources from zlib with modifications. Here is a zlib license notification. Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu If you use the zlib library in a product, we would appreciate *not* receiving lengthy legal documents to sign. The sources are provided for free but without warranty of any kind. The library has been entirely written by Jean-loup Gailly and Mark Adler; it does not include third-party code. We make all contributions to and distributions of this project solely in our personal capacity, and are not conveying any rights to any intellectual property of any third parties. If you redistribute modified sources, we would appreciate that you include in the file ChangeLog history information documenting your changes. Please read the FAQ for more information on the distribution of modified source versions. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/make.bat0000644000175100017510000000137015112276603015317 0ustar00runnerrunner@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=. set BUILDDIR=_build if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% :end popd ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/security_policy.rst0000644000175100017510000000006315112276603017670 0ustar00runnerrunner.. _security_policy: .. include:: ../SECURITY.rst ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/docs/technote.rst0000644000175100017510000000656715112276603016272 0ustar00runnerrunnerEnhanced Deflate note ===================== Enhanced Deflate is a slightly modified variant of the Deflate procedure. The fundamental mechanisms remained completely unchanged, only the following features were improved. Dictionary size to 64 Kbytes ---------------------------- The addressable size of the sliding dictionary is extended from 32 kbytes to 64 kbytes. Enhanced deflate detects matches from 65536 bytes distance and maximum 65530 bytes length. A definition is placed in ``inflate64_config.h``. Length code ------------ Last length code (285) will be extended by 16 extra bits. It represent length 258 and extension bit width is 0 in deflate. Otherwise it represent length 258-65536 and extension bit widths are 16 in enhanced deflate The code defines lengths in a range between 3 and 65.538 byte. The original limitation to 258 byte sequences is dropped with that. .. list-table:: Length code table :widths: 40, 40, 25 :header-rows: 1 * - Length - Code - Ext bitwidth * - 3 - 257 - 0 * - 4 - 258 - 0 * - 5 - 259 - 0 * - 6 - 260 - 0 * - 7 - 261 - 0 * - 8 - 262 - 0 * - 9 - 263 - 0 * - 10 - 264 - 0 * - 11,12 - 265 - 1 * - 13,14 - 266 - 1 * - 15,16 - 267 - 1 * - 17,18 - 268 - 1 * - 19-22 - 269 - 2 * - 23-26 - 270 - 2 * - 27-30 - 271 - 2 * - 31-34 - 272 - 2 * - 35-42 - 273 - 3 * - 43-50 - 274 - 3 * - 51-58 - 275 - 3 * - 59-66 - 276 - 3 * - 67-82 - 277 - 4 * - 83-98 - 278 - 4 * - 99-114 - 279 - 4 * - 115-130 - 280 - 4 * - 131-162 - 281 - 5 * - 163-194 - 282 - 5 * - 195-226 - 283 - 5 * - 227-258 - 284 - 5 * - 259-65536 - 285 - 16 Distance code ------------- The distance codes (30 and 31) not used until now are extended to address a range of 64 kbytes. According to the conventional Deflate definition these codes were not used. 14 extra bits are assigned to each of them. Details definition is described following. .. list-table:: Distance code table :widths: 40, 40, 25 :header-rows: 1 * - Distance - Code - Ext bitwidth * - 1 - 0 - 0 * - 2 - 1 - 0 * - 3 - 2 - 0 * - 4 - 3 - 0 * - 5,6 - 4 - 1 * - 7,8 - 5 - 1 * - 9-12 - 6 - 2 * - 13-16 - 7 - 2 * - 17-24 - 8 - 3 * - 25-32 - 9 - 3 * - 33-48 - 10 - 4 * - 49-64 - 11 - 4 * - 65-96 - 12 - 5 * - 97-128 - 13 - 5 * - 129-192 - 14 - 6 * - 193-256 - 15 - 6 * - 257-384 - 16 - 7 * - 385-512 - 17 - 7 * - 513-768 - 18 - 8 * - 769-1024 - 19 - 8 * - 1025-1536 - 20 - 9 * - 1537-2048 - 21 - 9 * - 2049-3072 - 22 - 10 * - 3073-4096 - 23 - 10 * - 4097-6144 - 24 - 11 * - 6145-8192 - 25 - 11 * - 8193-12288 - 26 - 12 * - 12289-16384 - 27 - 12 * - 16385-24576 - 28 - 13 * - 24577-32768 - 29 - 13 * - 32769-49152 - 30 - 14 * - 49153-65536 - 31 - 14 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.695476 inflate64-1.0.4/issue_template/0000755000175100017510000000000015112276614016006 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/issue_template/bug_report.md0000644000175100017510000000130415112276603020474 0ustar00runnerrunner--- name: 'Bug report' about: 'Create a report to help us improve' title: '[BUG]' labels: - bug --- **Describe the bug** A clear and concise description of what the bug is. **Related issue** (if exist) **To Reproduce** Steps to reproduce the behavior: **Expected behavior** A clear and concise description of what you expected to happen. **Environment (please complete the following information):** - OS: [e.g. Windows 10, Ubuntu Linux 18.04.01] - Python [e.g. 3.6, pypy3.6.9-7.3.0] - project version: [e.g. v0.2, commit #123456 on main] **Test data(please attach in the report):** A minimum test data to reproduce your problem. **Additional context** Add any other context about the problem here. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/issue_template/feature_request.md0000644000175100017510000000113515112276603021531 0ustar00runnerrunner--- name: 'Feature request' about: 'Suggest an idea for this project' title: '[FEATURE]' labels: - enhancement: --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/pyproject.toml0000644000175100017510000000766315112276603015711 0ustar00runnerrunner[project] name = "inflate64" requires-python = ">=3.9" description = "deflate64 compression/decompression library" readme = "README.rst" license = {text = "LGPL-2.1-or-later"} authors = [ {name = "Hiroshi Miura", email = "miurahr@linux.com"}, ] classifiers = [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Libraries :: Python Modules", ] keywords = ['deflate64', 'compression'] dynamic = ["version"] [project.optional-dependencies] test = [ "pytest", ] docs = [ "sphinx>=5.0", "sphinx_rtd_theme", "docutils", ] check = [ "mypy>=1.10.0", "mypy_extensions>=0.4.1", "check-manifest", "flake8", "flake8-black", "flake8-deprecated", "flake8-isort", "pygments", "readme-renderer", "twine", ] [build-system] requires = ["setuptools>=45", "setuptools_scm[toml]>=6.0.1"] build-backend = "setuptools.build_meta" [tool.setuptools_scm] local_scheme = "no-local-version" [project.urls] Source = "https://github.com/miurahr/inflate64" Homepage = "https://inflate64.readthedocs.io/" Documentation = "https://inflate64.readthedocs.io/en/stable/" "Bug Tracker" = "https://github.com/miurahr/inflate64/issues" Changelog = "https://inflate64.readthedocs.io/en/latest/changelog.html" [tool.black] line-length = 125 target-version = ['py39'] [tool.coverage.paths] source = ["src", "*/site-packages"] [tool.coverage.run] branch = true parallel = true omit = ["tests/*"] [tool.coverage.report] show_missing = true exclude_lines = ["if __name__ == .__main__.:", "pragma: no-cover", "@abstract", "def __repr__"] ignore_errors = true [tool.mypy] ignore_missing_imports = true warn_redundant_casts = true warn_unused_ignores = false strict_optional = true show_column_numbers = true files = "*.py" [tool.isort] known_first_party = ["inflate64", "_inflate64"] known_third_party = ["docutils","flake8","pyannotate_runtime","pytest","pytz","setuptools","sphinx","yaml"] multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true line_length = 125 [tool.pytest.ini_options] minversion = "6.0" testpaths = ["tests"] python_files = "test*.py" norecursedirs = [".git", "_build", "tmp", ".eggs"] [tool.cibuildwheel] manylinux-x86_64-image = "manylinux_2_28" manylinux-aarch64-image = "manylinux_2_28" manylinux-ppc64le-image = "manylinux_2_28" manylinux-s390x-image = "manylinux_2_28" manylinux-pypy_x86_64-image = "manylinux_2_28" manylinux-pypy_aarch64-image = "manylinux_2_28" musllinux-x86_64-image = "musllinux_1_2" musllinux-aarch64-image = "musllinux_1_2" musllinux-ppc64le-image = "musllinux_1_2" musllinux-s390x-image = "musllinux_1_2" [tool.cibuildwheel.linux] archs = ["auto64", "aarch64"] [tool.cibuildwheel.macos] archs = ["auto64", "universal2"] [tool.tox] legacy_tox_ini = """ [tox] envlist = check, py{39,310,311,312,313,314}, docs [testenv] passenv = PYTEST_ADDOPTS extras = test commands = python -m pytest -vv -s [testenv:check] basepython = python3.12 extras = check ignore_errors=true commands = check-manifest {toxinidir} flake8 src tests [testenv:docs] basepython = python3.12 extras = docs commands = sphinx-build {posargs:-E} -b html docs build/html """ ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.703476 inflate64-1.0.4/setup.cfg0000644000175100017510000000004615112276614014604 0ustar00runnerrunner[egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/setup.py0000644000175100017510000000402515112276603014474 0ustar00runnerrunner#!/usr/bin/env python3 import os import sys from setuptools import Extension, setup from setuptools.command.build_ext import build_ext from setuptools.command.egg_info import egg_info sources = [ "src/lib/deflate.c", "src/lib/deflate_tree.c", "src/lib/inflate.c", "src/lib/inflate_tree.c", "src/lib/util.c", "src/lib/static_tables.c" ] packages = ["inflate64"] kwargs = {"include_dirs": ["src/lib", "src/ext"], "library_dirs": [], "libraries": [], "sources": sources, "define_macros": []} # binary extension kwargs["name"] = "inflate64._inflate64" kwargs["sources"].append("src/ext/_inflate64module.c") binary_extension = Extension(**kwargs) _deflate64_extension = Extension("inflate64._inflate64", sources) def has_option(option): if option in sys.argv: sys.argv = [s for s in sys.argv if s != option] return True else: return False WARNING_AS_ERROR = has_option("--warning-as-error") class build_ext_compiler_check(build_ext): def build_extensions(self): for extension in self.extensions: if self.compiler.compiler_type.lower() in ("unix", "mingw32"): if WARNING_AS_ERROR: extension.extra_compile_args.append("-Werror") elif self.compiler.compiler_type.lower() == "msvc": # /GF eliminates duplicate strings # /Gy does function level linking more_options = ["/GF", "/Gy", "/wd4996"] if WARNING_AS_ERROR: more_options.append("/WX") extension.extra_compile_args.extend(more_options) super().build_extensions() # Work around pypa/setuptools#436. class my_egg_info(egg_info): def run(self): try: os.remove(os.path.join(self.egg_info, "SOURCES.txt")) except FileNotFoundError: pass super().run() setup( ext_modules=[binary_extension], package_dir={"": "src"}, packages=packages, cmdclass={"build_ext": build_ext_compiler_check, "egg_info": my_egg_info}, ) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.690476 inflate64-1.0.4/src/0000755000175100017510000000000015112276614013552 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.696476 inflate64-1.0.4/src/ext/0000755000175100017510000000000015112276614014352 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/ext/_blocks_output_buffer.h0000644000175100017510000002071715112276603021115 0ustar00runnerrunner/* _BlocksOutputBuffer is used to maintain an output buffer that has unpredictable size. Suitable for compression/decompression API (bz2/lzma/zlib) that has stream->next_out and stream->avail_out: stream->next_out: point to the next output position. stream->avail_out: the number of available bytes left in the buffer. It maintains a list of bytes object, so there is no overhead of resizing the buffer. Usage: 1, Initialize the struct instance like this: _BlocksOutputBuffer buffer = {.list = NULL}; Set .list to NULL for _BlocksOutputBuffer_OnError() 2, Initialize the buffer use one of these functions: _BlocksOutputBuffer_InitAndGrow() _BlocksOutputBuffer_InitWithSize() 3, If (avail_out == 0), grow the buffer: _BlocksOutputBuffer_Grow() 4, Get the current outputted data size: _BlocksOutputBuffer_GetDataSize() 5, Finish the buffer, and return a bytes object: _BlocksOutputBuffer_Finish() 6, Clean up the buffer when an error occurred: _BlocksOutputBuffer_OnError() */ #ifndef _BLOCKS_OUTPUT_BUFFER_H #define _BLOCKS_OUTPUT_BUFFER_H #ifdef __cplusplus extern "C" { #endif #include "Python.h" typedef struct { // List of bytes objects PyObject *list; // Number of whole allocated size Py_ssize_t allocated; // Max length of the buffer, negative number means unlimited length. Py_ssize_t max_length; } _BlocksOutputBuffer; static const char unable_allocate_msg[] = "Unable to allocate output buffer."; /* In 32-bit build, the max block size should <= INT32_MAX. */ #define OUTPUT_BUFFER_MAX_BLOCK_SIZE (256*1024*1024) /* Block size sequence */ #define KB (1024) #define MB (1024*1024) static const Py_ssize_t BUFFER_BLOCK_SIZE[] = { 32*KB, 64*KB, 256*KB, 1*MB, 4*MB, 8*MB, 16*MB, 16*MB, 32*MB, 32*MB, 32*MB, 32*MB, 64*MB, 64*MB, 128*MB, 128*MB, OUTPUT_BUFFER_MAX_BLOCK_SIZE }; #undef KB #undef MB /* According to the block sizes defined by BUFFER_BLOCK_SIZE, the whole allocated size growth step is: 1 32 KB +32 KB 2 96 KB +64 KB 3 352 KB +256 KB 4 1.34 MB +1 MB 5 5.34 MB +4 MB 6 13.34 MB +8 MB 7 29.34 MB +16 MB 8 45.34 MB +16 MB 9 77.34 MB +32 MB 10 109.34 MB +32 MB 11 141.34 MB +32 MB 12 173.34 MB +32 MB 13 237.34 MB +64 MB 14 301.34 MB +64 MB 15 429.34 MB +128 MB 16 557.34 MB +128 MB 17 813.34 MB +256 MB 18 1069.34 MB +256 MB 19 1325.34 MB +256 MB 20 1581.34 MB +256 MB 21 1837.34 MB +256 MB 22 2093.34 MB +256 MB ... */ /* Initialize the buffer, and grow the buffer. max_length: Max length of the buffer, -1 for unlimited length. On success, return allocated size (>=0) On failure, return -1 */ static inline Py_ssize_t _BlocksOutputBuffer_InitAndGrow(_BlocksOutputBuffer *buffer, const Py_ssize_t max_length, void **next_out) { PyObject *b; Py_ssize_t block_size; // ensure .list was set to NULL assert(buffer->list == NULL); // get block size if (0 <= max_length && max_length < BUFFER_BLOCK_SIZE[0]) { block_size = max_length; } else { block_size = BUFFER_BLOCK_SIZE[0]; } // the first block b = PyBytes_FromStringAndSize(NULL, block_size); if (b == NULL) { return -1; } // create the list buffer->list = PyList_New(1); if (buffer->list == NULL) { Py_DECREF(b); return -1; } PyList_SET_ITEM(buffer->list, 0, b); // set variables buffer->allocated = block_size; buffer->max_length = max_length; *next_out = PyBytes_AS_STRING(b); return block_size; } /* Initialize the buffer, with an initial size. Check block size limit in the outer wrapper function. For example, some libs accept UINT32_MAX as the maximum block size, then init_size should <= it. On success, return allocated size (>=0) On failure, return -1 */ static inline Py_ssize_t _BlocksOutputBuffer_InitWithSize(_BlocksOutputBuffer *buffer, const Py_ssize_t init_size, void **next_out) { PyObject *b; // ensure .list was set to NULL assert(buffer->list == NULL); // the first block b = PyBytes_FromStringAndSize(NULL, init_size); if (b == NULL) { PyErr_SetString(PyExc_MemoryError, unable_allocate_msg); return -1; } // create the list buffer->list = PyList_New(1); if (buffer->list == NULL) { Py_DECREF(b); return -1; } PyList_SET_ITEM(buffer->list, 0, b); // set variables buffer->allocated = init_size; buffer->max_length = -1; *next_out = PyBytes_AS_STRING(b); return init_size; } /* Grow the buffer. The avail_out must be 0, please check it before calling. On success, return allocated size (>=0) On failure, return -1 */ static inline Py_ssize_t _BlocksOutputBuffer_Grow(_BlocksOutputBuffer *buffer, void **next_out, const Py_ssize_t avail_out) { PyObject *b; const Py_ssize_t list_len = Py_SIZE(buffer->list); Py_ssize_t block_size; // ensure no gaps in the data if (avail_out != 0) { PyErr_SetString(PyExc_SystemError, "avail_out is non-zero in _BlocksOutputBuffer_Grow()."); return -1; } // get block size if (list_len < (Py_ssize_t) Py_ARRAY_LENGTH(BUFFER_BLOCK_SIZE)) { block_size = BUFFER_BLOCK_SIZE[list_len]; } else { block_size = BUFFER_BLOCK_SIZE[Py_ARRAY_LENGTH(BUFFER_BLOCK_SIZE) - 1]; } // check max_length if (buffer->max_length >= 0) { // if (rest == 0), should not grow the buffer. Py_ssize_t rest = buffer->max_length - buffer->allocated; assert(rest > 0); // block_size of the last block if (block_size > rest) { block_size = rest; } } // check buffer->allocated overflow if (block_size > PY_SSIZE_T_MAX - buffer->allocated) { PyErr_SetString(PyExc_MemoryError, unable_allocate_msg); return -1; } // create the block b = PyBytes_FromStringAndSize(NULL, block_size); if (b == NULL) { PyErr_SetString(PyExc_MemoryError, unable_allocate_msg); return -1; } if (PyList_Append(buffer->list, b) < 0) { Py_DECREF(b); return -1; } Py_DECREF(b); // set variables buffer->allocated += block_size; *next_out = PyBytes_AS_STRING(b); return block_size; } /* Return the current outputted data size. */ static inline Py_ssize_t _BlocksOutputBuffer_GetDataSize(_BlocksOutputBuffer *buffer, const Py_ssize_t avail_out) { return buffer->allocated - avail_out; } /* Finish the buffer. Return a bytes object on success Return NULL on failure */ static inline PyObject * _BlocksOutputBuffer_Finish(_BlocksOutputBuffer *buffer, const Py_ssize_t avail_out) { PyObject *result, *block; const Py_ssize_t list_len = Py_SIZE(buffer->list); // fast path for single block if ((list_len == 1 && avail_out == 0) || (list_len == 2 && Py_SIZE(PyList_GET_ITEM(buffer->list, 1)) == avail_out)) { block = PyList_GET_ITEM(buffer->list, 0); Py_INCREF(block); Py_CLEAR(buffer->list); return block; } // final bytes object result = PyBytes_FromStringAndSize(NULL, buffer->allocated - avail_out); if (result == NULL) { PyErr_SetString(PyExc_MemoryError, unable_allocate_msg); return NULL; } // memory copy if (list_len > 0) { char *posi = PyBytes_AS_STRING(result); // blocks except the last one Py_ssize_t i = 0; for (; i < list_len-1; i++) { block = PyList_GET_ITEM(buffer->list, i); memcpy(posi, PyBytes_AS_STRING(block), Py_SIZE(block)); posi += Py_SIZE(block); } // the last block block = PyList_GET_ITEM(buffer->list, i); memcpy(posi, PyBytes_AS_STRING(block), Py_SIZE(block) - avail_out); } else { assert(Py_SIZE(result) == 0); } Py_CLEAR(buffer->list); return result; } /* Clean up the buffer when an error occurred. */ static inline void _BlocksOutputBuffer_OnError(_BlocksOutputBuffer *buffer) { Py_CLEAR(buffer->list); } #ifdef __cplusplus } #endif #endif /* _BLOCKS_OUTPUT_BUFFER_H */././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/ext/_inflate64module.c0000644000175100017510000005457015112276603017670 0ustar00runnerrunner/* deflate64 module for Python 3.6+ --- Borrows BlocksOutputBuffer, unused data buffer functions from pyzstd module - BSD-3 licensed by Ma Lin. https://github.com/animalize/pyzstd */ #include "Python.h" #include "pythread.h" /* For Python 3.6 */ #include "structmember.h" #include "inflate64.h" #if defined(_WIN32) && defined(timezone) #undef timezone #endif #ifndef Py_UNREACHABLE #define Py_UNREACHABLE() assert(0) #endif #define True 1 #define False 0 #include "_blocks_output_buffer.h" #if OUTPUT_BUFFER_MAX_BLOCK_SIZE > UINT32_MAX #error "The maximum block size accepted by zlib is UINT32_MAX." #endif /* On success, return value >= 0 On failure, return -1 */ static inline Py_ssize_t OutputBuffer_InitAndGrow(_BlocksOutputBuffer *buffer, Py_ssize_t max_length, Byte FAR **next_out, uint32_t *avail_out) { Py_ssize_t allocated; allocated = _BlocksOutputBuffer_InitAndGrow( buffer, max_length, (void**) next_out); *avail_out = (uint32_t) allocated; return allocated; } /* On success, return value >= 0 On failure, return -1 */ static inline Py_ssize_t OutputBuffer_Grow(_BlocksOutputBuffer *buffer, Byte FAR **next_out, uint32_t *avail_out) { Py_ssize_t allocated; allocated = _BlocksOutputBuffer_Grow( buffer, (void**) next_out, (Py_ssize_t) *avail_out); *avail_out = (uint32_t) allocated; return allocated; } static inline Py_ssize_t OutputBuffer_GetDataSize(_BlocksOutputBuffer *buffer, uint32_t avail_out) { return _BlocksOutputBuffer_GetDataSize(buffer, (Py_ssize_t) avail_out); } static inline PyObject * OutputBuffer_Finish(_BlocksOutputBuffer *buffer, uint32_t avail_out) { return _BlocksOutputBuffer_Finish(buffer, (Py_ssize_t) avail_out); } static inline void OutputBuffer_OnError(_BlocksOutputBuffer *buffer) { _BlocksOutputBuffer_OnError(buffer); } /* The max buffer size accepted by zlib is UINT32_MAX, the initial buffer size `init_size` may > it in 64-bit build. These wrapper functions maintain an UINT32_MAX sliding window for the first block: 1. OutputBuffer_WindowInitWithSize() 2. OutputBuffer_WindowGrow() 3. OutputBuffer_WindowFinish() 4. OutputBuffer_WindowOnError() ==== is the sliding window: 1. ====------ ^ next_posi, left_bytes is 6 2. ----====-- ^ next_posi, left_bytes is 2 3. --------== ^ next_posi, left_bytes is 0 */ typedef struct { Py_ssize_t left_bytes; Byte FAR *next_posi; } _Uint32Window; /* Initialize the buffer with an initial buffer size. On success, return value >= 0 On failure, return value < 0 */ static inline Py_ssize_t OutputBuffer_WindowInitWithSize(_BlocksOutputBuffer *buffer, _Uint32Window *window, Py_ssize_t init_size, Byte FAR **next_out, uint32_t *avail_out) { Py_ssize_t allocated = _BlocksOutputBuffer_InitWithSize( buffer, init_size, (void**) next_out); if (allocated >= 0) { // the UINT32_MAX sliding window Py_ssize_t window_size = Py_MIN((size_t)allocated, UINT32_MAX); *avail_out = (uint32_t) window_size; window->left_bytes = allocated - window_size; window->next_posi = *next_out + window_size; } return allocated; } /* Grow the buffer. On success, return value >= 0 On failure, return value < 0 */ static inline Py_ssize_t OutputBuffer_WindowGrow(_BlocksOutputBuffer *buffer, _Uint32Window *window, Byte FAR **next_out, uint32_t *avail_out) { Py_ssize_t allocated; /* ensure no gaps in the data. if inlined, this check could be optimized away.*/ if (*avail_out != 0) { PyErr_SetString(PyExc_SystemError, "*avail_out != 0 in OutputBuffer_WindowGrow()."); return -1; } // slide the UINT32_MAX sliding window if (window->left_bytes > 0) { Py_ssize_t window_size = Py_MIN((size_t)window->left_bytes, UINT32_MAX); *next_out = window->next_posi; *avail_out = (uint32_t) window_size; window->left_bytes -= window_size; window->next_posi += window_size; return window_size; } assert(window->left_bytes == 0); // only the first block may > UINT32_MAX allocated = _BlocksOutputBuffer_Grow( buffer, (void**) next_out, (Py_ssize_t) *avail_out); *avail_out = (uint32_t) allocated; return allocated; } /* Finish the buffer. On success, return a bytes object On failure, return NULL */ static inline PyObject * OutputBuffer_WindowFinish(_BlocksOutputBuffer *buffer, _Uint32Window *window, uint32_t avail_out) { Py_ssize_t real_avail_out = (Py_ssize_t) avail_out + window->left_bytes; return _BlocksOutputBuffer_Finish(buffer, real_avail_out); } static inline void OutputBuffer_WindowOnError(_BlocksOutputBuffer *buffer, _Uint32Window *window) { _BlocksOutputBuffer_OnError(buffer); } typedef struct { PyObject_HEAD z_stream zst; PyObject *unused_data; PyObject *unconsumed_tail; char eof; int is_initialised; PyObject *zdict; PyThread_type_lock lock; } compobject; typedef struct { PyTypeObject *Deflate64_type; PyTypeObject *Inflate64_type; PyObject *Inflate64Error; } _inflate64_state; static _inflate64_state static_state; static compobject * newcompobject(PyTypeObject *type) { compobject *self; self = (compobject *)type->tp_alloc(type, 0); if (self == NULL) { return NULL; } self->eof = 0; self->is_initialised = 0; self->zdict = NULL; self->unused_data = PyBytes_FromStringAndSize("", 0); if (self->unused_data == NULL) { Py_DECREF(self); return NULL; } self->unconsumed_tail = PyBytes_FromStringAndSize("", 0); if (self->unconsumed_tail == NULL) { Py_DECREF(self); return NULL; } self->lock = PyThread_allocate_lock(); if (self->lock == NULL) { Py_DECREF(self); PyErr_SetString(PyExc_MemoryError, "Unable to allocate lock"); return NULL; } return self; } #define ACQUIRE_LOCK(obj) do { \ if (!PyThread_acquire_lock((obj)->lock, 0)) { \ Py_BEGIN_ALLOW_THREADS \ PyThread_acquire_lock((obj)->lock, 1); \ Py_END_ALLOW_THREADS \ } } while (0) #define RELEASE_LOCK(obj) PyThread_release_lock((obj)->lock) static const char init_twice_msg[] = "__init__ method is called twice."; static voidpf zlib_alloc(voidpf opaque, uInt items, uInt size) { // For safety, give zlib a zero-initialized memory block // Also, PyMem_Calloc call does an overflow-safe maximum size check void* address = PyMem_RawCalloc(items, size); if (address == NULL) { // For safety, don't assume Z_NULL is the same as NULL return Z_NULL; } return address; } static void zlib_free(voidpf opaque, voidpf address) { PyMem_RawFree(address); } static void arrange_input_buffer(z_stream *zst, Py_ssize_t *remains) { zst->avail_in = (uInt)Py_MIN((size_t)*remains, UINT_MAX); *remains -= zst->avail_in; } /* Helper for objdecompress() and flush(). Saves any unconsumed input data in self->unused_data or self->unconsumed_tail, as appropriate. */ static int save_unconsumed_input(compobject *self, Py_buffer *data, int err) { if (err == Z_STREAM_END) { /* The end of the compressed data has been reached. Store the leftover input data in self->unused_data. */ if (self->zst.avail_in > 0) { Py_ssize_t old_size = PyBytes_GET_SIZE(self->unused_data); Py_ssize_t new_size, left_size; PyObject *new_data; left_size = (Byte *)data->buf + data->len - self->zst.next_in; if (left_size > (PY_SSIZE_T_MAX - old_size)) { PyErr_NoMemory(); return -1; } new_size = old_size + left_size; new_data = PyBytes_FromStringAndSize(NULL, new_size); if (new_data == NULL) return -1; memcpy(PyBytes_AS_STRING(new_data), PyBytes_AS_STRING(self->unused_data), old_size); memcpy(PyBytes_AS_STRING(new_data) + old_size, self->zst.next_in, left_size); Py_SETREF(self->unused_data, new_data); self->zst.avail_in = 0; } } if (self->zst.avail_in > 0 || PyBytes_GET_SIZE(self->unconsumed_tail)) { /* This code handles two distinct cases: 1. Output limit was reached. Save leftover input in unconsumed_tail. 2. All input data was consumed. Clear unconsumed_tail. */ Py_ssize_t left_size = (Byte *)data->buf + data->len - self->zst.next_in; PyObject *new_data = PyBytes_FromStringAndSize( (char *)self->zst.next_in, left_size); if (new_data == NULL) return -1; Py_SETREF(self->unconsumed_tail, new_data); } return 0; } static PyObject * Deflater_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { compobject *self; self = newcompobject(type); return (PyObject*)self; } static void Deflater_dealloc(compobject *self) { if (self->lock) { PyThread_free_lock(self->lock); } if (self->is_initialised) { int err = deflate9End(&self->zst); switch (err) { case Z_OK: break; case Z_DATA_ERROR: PyErr_SetString(PyExc_IOError, "The stream was freed prematurely (some input or output was discarded)."); break; case Z_STREAM_ERROR: PyErr_SetString(PyExc_IOError, "The stream state was inconsistent."); break; default: PyErr_BadInternalCall(); break; } } PyTypeObject *tp = Py_TYPE(self); tp->tp_free((PyObject*)self); Py_DECREF(tp); } PyDoc_STRVAR(Deflater_doc, "A Deflate64 deflater.\n\n" "Deflater.__init__(self)\n"); static int Deflater_init(compobject *self, PyObject *args, PyObject *kwargs) { /* only called once */ if (self->is_initialised) { PyErr_SetString(PyExc_RuntimeError, init_twice_msg); goto error; } self->zst.zalloc = zlib_alloc; self->zst.zfree = zlib_free; self->is_initialised = 1; int err = deflate9Init2(&self->zst); switch (err) { case Z_OK: goto success; case Z_MEM_ERROR: PyErr_NoMemory(); break; case Z_STREAM_ERROR: default: PyErr_BadInternalCall(); } error: return -1; success: return 0; } PyDoc_STRVAR(Deflater_deflate_doc, "deflate()\n" "----\n" "Deflate data with a Deflate64 compression."); static PyObject * Deflater_deflate(compobject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = {"data", NULL}; Py_buffer data; PyObject *RetVal = NULL; int err; _BlocksOutputBuffer buffer = {.list = NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*:Deflater.deflate", kwlist, &data)) { PyErr_Format(PyExc_ValueError, "Argument error"); return NULL; } ACQUIRE_LOCK(self); self->zst.next_in = data.buf; Py_ssize_t ibuflen = data.len; if (OutputBuffer_InitAndGrow(&buffer, -1, &self->zst.next_out, &self->zst.avail_out) < 0) { goto error; } do { arrange_input_buffer(&self->zst, &ibuflen); do { if (self->zst.avail_out == 0) { if (OutputBuffer_Grow(&buffer, &self->zst.next_out, &self->zst.avail_out) < 0) { goto error; } } Py_BEGIN_ALLOW_THREADS err = deflate9(&self->zst, Z_NO_FLUSH); Py_END_ALLOW_THREADS if (err == Z_STREAM_ERROR) { goto error; } } while (self->zst.avail_out == 0); assert(self->zst.avail_in == 0); } while (ibuflen != 0); RetVal = OutputBuffer_Finish(&buffer, self->zst.avail_out); if (RetVal != NULL) { goto success; } error: OutputBuffer_OnError(&buffer); RetVal = NULL; success: RELEASE_LOCK(self); return RetVal; } PyDoc_STRVAR(Deflater_flush_doc, "flush()\n" "----\n" "Flush compressed data."); static PyObject * Deflater_flush(compobject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = {"mode", NULL}; int err; int mode = Z_FINISH; PyObject *RetVal = NULL; _BlocksOutputBuffer buffer = {.list = NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:Deflater.flush", kwlist, &mode)) { PyErr_Format(PyExc_ValueError, "Argument error"); return NULL; } /* * flushing with Z_NO_FLUSH is a non-op, so there's no point in * doing any work at all; just return with empty data. */ if (mode == Z_NO_FLUSH) { return PyBytes_FromStringAndSize(NULL, 0); } ACQUIRE_LOCK(self); self->zst.next_in = NULL; self->zst.avail_in = 0; if (OutputBuffer_InitAndGrow(&buffer, -1, &self->zst.next_out, &self->zst.avail_out) < 0) { PyErr_NoMemory(); goto error; } do { if (self->zst.avail_out == 0) { if (OutputBuffer_Grow(&buffer, &self->zst.next_out, &self->zst.avail_out) < 0) { PyErr_NoMemory(); goto error; } } Py_BEGIN_ALLOW_THREADS err = deflate9(&self->zst, mode); Py_END_ALLOW_THREADS if (err == Z_STREAM_ERROR) { PyErr_Format(PyExc_RuntimeError, "deflater9 return an unexpected return code %d\n", err); goto error; } } while (self->zst.avail_out == 0); if (err == Z_STREAM_END && mode == Z_FINISH) { err = deflate9End(&self->zst); self->eof = 1; if (err != Z_OK) { PyErr_Format(PyExc_RuntimeError, "deflater9End return an unexpected return code %d\n", err); goto error; } else { self->is_initialised = 0; } } else if (err != Z_OK && err != Z_BUF_ERROR){ PyErr_Format(PyExc_RuntimeError, "Deflater.flush got unexpected return code %d\n", err); goto error; } RetVal = OutputBuffer_Finish(&buffer, self->zst.avail_out); if (RetVal != NULL) { goto success; } error: OutputBuffer_OnError(&buffer); RetVal = NULL; success: RELEASE_LOCK(self); return RetVal; } static PyObject * Inflater_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { compobject *self; self = newcompobject(type); return (PyObject*)self; } static void Inflater_dealloc(compobject *self) { if (self->lock) { PyThread_free_lock(self->lock); } int err = inflate9End(&self->zst); switch (err) { case Z_OK: break; case Z_STREAM_ERROR: default: PyErr_BadInternalCall(); break; } PyTypeObject *tp = Py_TYPE(self); tp->tp_free((PyObject*)self); Py_DECREF(tp); } PyDoc_STRVAR(Inflater_doc, "A Deflate64 inflater.\n\n" "Inflater.__init__(self)\n" ); static int Inflater_init(compobject *self, PyObject *args, PyObject *kwargs) { /* Only called once */ if (self->is_initialised) { PyErr_SetString(PyExc_RuntimeError, init_twice_msg); goto error; } self->zst.opaque = NULL; self->zst.zalloc = zlib_alloc; self->zst.zfree = zlib_free; self->zst.next_in = NULL; self->zst.avail_in = 0; int err = inflate9Init2(&self->zst); switch (err) { case Z_OK: self->is_initialised = 1; goto success; case Z_STREAM_ERROR: case Z_MEM_ERROR: PyErr_NoMemory(); goto error; default: PyErr_BadInternalCall(); } error: return -1; success: return 0; } PyDoc_STRVAR(Inflater_inflate_doc, "inflate()\n" "----\n" "Inflate a Deflate64 compressed data."); static PyObject * Inflater_inflate(compobject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = {"data", "max_length", NULL}; Py_buffer data; int max_length = 0; PyObject *RetVal = NULL; _BlocksOutputBuffer buffer = {.list = NULL}; Py_ssize_t ibuflen; int err = Z_OK; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|i:Inflater.inflate", kwlist, &data, &max_length)) { return NULL; } if (max_length < 0) { PyErr_SetString(PyExc_ValueError, "max_length must be non-negative"); return NULL; } else if (max_length == 0) { max_length = -1; } self->zst.next_in = data.buf; ibuflen = data.len; if (OutputBuffer_InitAndGrow(&buffer, max_length, &self->zst.next_out, &self->zst.avail_out) < 0) { goto abort; } ACQUIRE_LOCK(self); do { arrange_input_buffer(&self->zst, &ibuflen); do { if (self->zst.avail_out == 0) { if (OutputBuffer_GetDataSize(&buffer, self->zst.avail_out) == max_length) { goto save; } if (OutputBuffer_Grow(&buffer, &self->zst.next_out, &self->zst.avail_out) < 0) { goto abort; } } Py_BEGIN_ALLOW_THREADS err = inflate9(&self->zst, Z_NO_FLUSH); Py_END_ALLOW_THREADS switch (err) { case Z_OK: /* fall through */ case Z_BUF_ERROR: /* fall through */ case Z_STREAM_END: break; default: goto save; } } while (self->zst.avail_out == 0); } while (err != Z_STREAM_END && ibuflen != 0); save: if (save_unconsumed_input(self, &data, err) < 0) goto abort; if (err == Z_STREAM_END) { self->eof = 1; } else if (err != Z_OK && err != Z_BUF_ERROR) { // Z_STREAM_ERROR (-2) // Z_DATA_ERROR (-3): case BAD // Z_MEM_ERROR (-4): case MEM PyErr_Format(PyExc_ValueError, "while decompressing data: error code is %d", err); goto abort; } RetVal = OutputBuffer_Finish(&buffer, self->zst.avail_out); if (RetVal != NULL) { goto success; } abort: OutputBuffer_OnError(&buffer); RetVal = NULL; success: RELEASE_LOCK(self); return RetVal; } static PyMethodDef Deflater_methods[] = { {"deflate", (PyCFunction)Deflater_deflate, METH_VARARGS|METH_KEYWORDS, Deflater_deflate_doc}, {"flush", (PyCFunction)Deflater_flush, METH_VARARGS|METH_KEYWORDS, Deflater_flush_doc}, {NULL, NULL, 0, NULL} }; PyDoc_STRVAR(Deflater_eof__doc, "True if the end-of-stream marker has been reached."); static PyMemberDef Deflater_members[] = { {"eof", T_BOOL, offsetof(compobject, eof), READONLY, Deflater_eof__doc}, {NULL} }; static PyMethodDef Inflater_methods[] = { {"inflate", (PyCFunction)Inflater_inflate, METH_VARARGS|METH_KEYWORDS, Inflater_inflate_doc}, {NULL, NULL, 0, NULL} }; PyDoc_STRVAR(Inflater_eof__doc, "True if the end-of-stream marker has been reached."); static PyMemberDef Inflater_members[] = { {"eof", T_BOOL, offsetof(compobject, eof), READONLY, Inflater_eof__doc}, {NULL} }; static PyType_Slot Deflater_slots[] = { {Py_tp_new, Deflater_new}, {Py_tp_dealloc, Deflater_dealloc}, {Py_tp_init, Deflater_init}, {Py_tp_methods, Deflater_methods}, {Py_tp_members, Deflater_members}, {Py_tp_doc, (char *)Deflater_doc}, {0, 0} }; static PyType_Slot Inflater_slots[] = { {Py_tp_new, Inflater_new}, {Py_tp_dealloc, Inflater_dealloc}, {Py_tp_init, Inflater_init}, {Py_tp_methods, Inflater_methods}, {Py_tp_members, Inflater_members}, {Py_tp_doc, (char *)Inflater_doc}, {0, 0} }; static PyType_Spec Deflater_type_spec = { .name = "_inflate64.Deflater", .basicsize = sizeof(compobject), .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, .slots = Deflater_slots, }; static PyType_Spec Inflater_type_spec = { .name = "_inflate64.Inflater", .basicsize = sizeof(compobject), .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, .slots = Inflater_slots, }; /* -------------------- Initialize code -------------------- */ static int _inflate64_traverse(PyObject *module, visitproc visit, void *arg) { Py_VISIT(static_state.Inflate64Error); Py_VISIT(static_state.Inflate64_type); return 0; } static int _inflate64_clear(PyObject *module) { Py_CLEAR(static_state.Inflate64Error); Py_CLEAR(static_state.Inflate64_type); return 0; } static void _inflate64_free(void *module) { _inflate64_clear((PyObject *)module); } static PyModuleDef _inflate64module = { PyModuleDef_HEAD_INIT, .m_name = "_inflate64", .m_size = -1, .m_traverse = _inflate64_traverse, .m_clear = _inflate64_clear, .m_free = _inflate64_free }; static inline int add_type_to_module(PyObject *module, const char *name, PyType_Spec *type_spec, PyTypeObject **dest) { PyObject *temp; temp = PyType_FromSpec(type_spec); if (PyModule_AddObject(module, name, temp) < 0) { Py_XDECREF(temp); return -1; } Py_INCREF(temp); *dest = (PyTypeObject*) temp; return 0; } PyMODINIT_FUNC PyInit__inflate64(void) { PyObject *module; module = PyModule_Create(&_inflate64module); if (!module) { goto error; } if (add_type_to_module(module, "Deflater", &Deflater_type_spec, &static_state.Inflate64_type) < 0) { goto error; } if (add_type_to_module(module, "Inflater", &Inflater_type_spec, &static_state.Inflate64_type) < 0) { goto error; } return module; error: _inflate64_clear(NULL); Py_XDECREF(module); return NULL; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.696476 inflate64-1.0.4/src/inflate64/0000755000175100017510000000000015112276614015346 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/inflate64/__init__.py0000644000175100017510000000102215112276603017450 0ustar00runnerrunnertry: from importlib import metadata except ImportError: # for Python<3.8 import importlib_metadata as metadata from ._inflate64 import Deflater, Inflater # noqa __all__ = ["Deflater", "Inflater"] __doc__ = """\ Python library to inflate data, the API is similar to Python's bz2/lzma/zlib module. """ __copyright__ = "Copyright (C) 2022 Hiroshi Miura" try: __version__ = metadata.version(__name__) except metadata.PackageNotFoundError: # pragma: no-cover # package is not installed __version__ = "0.1.0" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/inflate64/py.typed0000644000175100017510000000000015112276603017031 0ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.702476 inflate64-1.0.4/src/inflate64.egg-info/0000755000175100017510000000000015112276614017040 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326795.0 inflate64-1.0.4/src/inflate64.egg-info/PKG-INFO0000644000175100017510000001044015112276613020133 0ustar00runnerrunnerMetadata-Version: 2.4 Name: inflate64 Version: 1.0.4 Summary: deflate64 compression/decompression library Author-email: Hiroshi Miura License: LGPL-2.1-or-later Project-URL: Source, https://github.com/miurahr/inflate64 Project-URL: Homepage, https://inflate64.readthedocs.io/ Project-URL: Documentation, https://inflate64.readthedocs.io/en/stable/ Project-URL: Bug Tracker, https://github.com/miurahr/inflate64/issues Project-URL: Changelog, https://inflate64.readthedocs.io/en/latest/changelog.html Keywords: deflate64,compression Classifier: Development Status :: 5 - Production/Stable Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: POSIX Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Topic :: Software Development :: Libraries :: Python Modules Requires-Python: >=3.9 Description-Content-Type: text/x-rst License-File: COPYING Provides-Extra: test Requires-Dist: pytest; extra == "test" Provides-Extra: docs Requires-Dist: sphinx>=5.0; extra == "docs" Requires-Dist: sphinx_rtd_theme; extra == "docs" Requires-Dist: docutils; extra == "docs" Provides-Extra: check Requires-Dist: mypy>=1.10.0; extra == "check" Requires-Dist: mypy_extensions>=0.4.1; extra == "check" Requires-Dist: check-manifest; extra == "check" Requires-Dist: flake8; extra == "check" Requires-Dist: flake8-black; extra == "check" Requires-Dist: flake8-deprecated; extra == "check" Requires-Dist: flake8-isort; extra == "check" Requires-Dist: pygments; extra == "check" Requires-Dist: readme-renderer; extra == "check" Requires-Dist: twine; extra == "check" Dynamic: license-file inflate64 ========= .. image:: https://badge.fury.io/py/inflate64.svg :target: https://badge.fury.io/py/inflate64 .. image:: https://github.com/miurahr/inflate64/actions/workflows/run-tox-tests.yml/badge.svg?branch=main :target: https://github.com/miurahr/inflate64/actions/workflows/run-tox-tests.yml .. image:: https://ci.codeberg.org/api/badges/12505/status.svg :target: https://ci.codeberg.org/repos/12505 The ``inflate64`` is a python package to provide ``Deflater`` and ``Inflater`` class to compress and decompress with Enhanced Deflate compression algorithm. The project is in ``Production/Stable`` status. How to use ---------- You can install it with ``pip`` command as usual. .. code-block:: pip install inflate64 You can extract compressed data by instantiating ``Inflater`` class and call ``inflate`` method. .. code-block:: python import inflate64 decompressor = inflate64.Inflater() extracted = decompressor.inflate(data) You can also compress data by instantiating ``Deflater`` class and call ``deflate`` method. .. code-block:: python import inflate64 compressor = inflate64.Deflater() compressed = compressor.deflate(data) compressed += compressor.flush() License ------- This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA .. note:: Please note that Enhanced Deflate algorithm is also known as `DEFLATE64` :sup:`TM` that is a registered trademark of `PKWARE, Inc.` ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326795.0 inflate64-1.0.4/src/inflate64.egg-info/SOURCES.txt0000644000175100017510000000234215112276613020724 0ustar00runnerrunner.flake8 .git_archival.txt .gitattributes .readthedocs.yaml CMakeLists.txt COPYING MANIFEST.in README.rst SECURITY.rst pyproject.toml setup.py .github/FUNDING.yml .github/dependabot.yml .github/workflows/publish-to-pypi.yml .github/workflows/run-tox-tests.yml docs/Changelog.rst docs/LICENSES.txt docs/Makefile docs/conf.py docs/contribution.rst docs/getting_started.rst docs/index.rst docs/license_notice.rst docs/make.bat docs/security_policy.rst docs/technote.rst issue_template/bug_report.md issue_template/feature_request.md src/ext/_blocks_output_buffer.h src/ext/_inflate64module.c src/inflate64/__init__.py src/inflate64/py.typed src/inflate64.egg-info/PKG-INFO src/inflate64.egg-info/SOURCES.txt src/inflate64.egg-info/dependency_links.txt src/inflate64.egg-info/requires.txt src/inflate64.egg-info/top_level.txt src/lib/deflate.c src/lib/deflate.h src/lib/deflate_tree.c src/lib/deflate_tree.h src/lib/inflate.c src/lib/inflate.h src/lib/inflate64.h src/lib/inflate64_config.h src/lib/inflate_fixed9.h src/lib/inflate_tree.c src/lib/inflate_tree.h src/lib/static_tables.c src/lib/static_tables.h src/lib/util.c src/lib/util.h tests/test_deflater.py tests/test_inflater.py tests/data/large-file.zip tests/data/src.zip tests/data/test-file.zip././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326795.0 inflate64-1.0.4/src/inflate64.egg-info/dependency_links.txt0000644000175100017510000000000115112276613023105 0ustar00runnerrunner ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326795.0 inflate64-1.0.4/src/inflate64.egg-info/requires.txt0000644000175100017510000000031315112276613021434 0ustar00runnerrunner [check] mypy>=1.10.0 mypy_extensions>=0.4.1 check-manifest flake8 flake8-black flake8-deprecated flake8-isort pygments readme-renderer twine [docs] sphinx>=5.0 sphinx_rtd_theme docutils [test] pytest ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326795.0 inflate64-1.0.4/src/inflate64.egg-info/top_level.txt0000644000175100017510000000001215112276613021562 0ustar00runnerrunnerinflate64 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.700476 inflate64-1.0.4/src/lib/0000755000175100017510000000000015112276614014320 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/deflate.c0000644000175100017510000007660715112276603016106 0ustar00runnerrunner/* deflate9.c -- compress data using the deflation64 algorithm * Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler * Copyright (C) 2022 Hiroshi Miura */ /* * ALGORITHM * * The "deflation" process depends on being able to identify portions * of the input text which are identical to earlier input (within a * sliding window trailing behind the input currently being processed). * * The most straightforward technique turns out to be the fastest for * most input files: try all possible matches and select the longest. * The key feature of this algorithm is that insertions into the string * dictionary are very simple and thus fast, and deletions are avoided * completely. Insertions are performed at each input character, whereas * string matches are performed only when the previous match ends. So it * is preferable to spend more time in matches to allow very fast string * insertions and avoid deletions. The matching algorithm for small * strings is inspired from that of Rabin & Karp. A brute force approach * is used to find longer strings when a small match has been found. * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze * (by Leonid Broukhis). * A previous version of this file used a more sophisticated algorithm * (by Fiala and Greene) which is guaranteed to run in linear amortized * time, but has a larger average cost, uses more memory and is patented. * However the F&G algorithm may be faster for some highly redundant * files if the parameter max_chain_length (described below) is too large. * * ACKNOWLEDGEMENTS * * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and * I found it in 'freeze' written by Leonid Broukhis. * Thanks to many people for bug reports and testing. * * REFERENCES * * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". * Available in http://tools.ietf.org/html/rfc1951 * * A description of the Rabin and Karp algorithm is given in the book * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. * * Fiala,E.R., and Greene,D.H. * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 * */ /* @(#) $Id$ */ #include "inflate64.h" #include "deflate.h" /* =========================================================================== * Function prototypes. */ typedef enum { need_more, /* block not completed, need more input or more output */ block_done, /* block flush performed */ finish_started, /* finish started, need only more output at next deflate */ finish_done /* finish done, accept no more input or output */ } block_state; local int deflateStateCheck OF((z_streamp strm)); local void slide_hash OF((deflate_state *s)); local void fill_window OF((deflate_state *s)); local block_state deflate9_ OF((deflate_state *s, int flush)); local void lm_init OF((deflate_state *s)); local void flush_pending OF((z_streamp strm)); local unsigned read_buf OF((z_streamp strm, Byte FAR *buf, unsigned size)); local uInt longest_match OF((deflate_state *s, IPos cur_match)); #ifdef ZLIB_DEBUG local void check_match OF((deflate_state *s, IPos start, IPos match, int length)); #endif /* =========================================================================== * Local data */ #define NIL 0 /* Tail of hash chains */ #ifndef TOO_FAR # define TOO_FAR 4096 #endif /* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ /* Note: deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 * For deflate_fast() (levels <= 3) good is ignored and lazy has a different * meaning. */ /* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ #define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) /* =========================================================================== * Update a hash value with the given input byte * IN assertion: all calls to UPDATE_HASH are made with consecutive input * characters, so that a running hash key can be computed from the previous * key instead of complete recalculation each time. */ #define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) /* =========================================================================== * Insert string str in the dictionary and set match_head to the previous head * of the hash chain (the most recent string with same hash key). Return * the previous length of the hash chain. * IN assertion: all calls to INSERT_STRING are made with consecutive input * characters and the first MIN_MATCH bytes of str are valid (except for * the last MIN_MATCH-1 bytes of the input file). */ #define INSERT_STRING(s, str, match_head) \ (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ s->head[s->ins_h] = (Pos)(str)) /* =========================================================================== * Initialize the hash table (avoiding 64K overflow for 16 bit systems). * prev[] will be initialized on the fly. */ #define CLEAR_HASH(s) \ do { \ s->head[s->hash_size-1] = NIL; \ zmemzero((Byte FAR *)s->head, \ (unsigned)(s->hash_size-1)*sizeof(*s->head)); \ } while (0) /* =========================================================================== * Slide the hash table when sliding the window down (could be avoided with 32 * bit values at the expense of memory usage). We slide even when level == 0 to * keep the hash table consistent if we switch back to level > 0 later. */ local void slide_hash(s) deflate_state *s; { unsigned n, m; Posf *p; uInt wsize = s->w_size; n = s->hash_size; p = &s->head[n]; do { m = *--p; *p = (Pos)(m >= wsize ? m - wsize : NIL); } while (--n); n = wsize; p = &s->prev[n]; do { m = *--p; *p = (Pos)(m >= wsize ? m - wsize : NIL); /* If n is not on any hash chain, prev[n] is garbage but * its value will never be used. */ } while (--n); } /* ========================================================================= */ int ZEXPORT deflate9Init2(strm) z_streamp strm; { deflate_state *s; if (strm == Z_NULL) return Z_STREAM_ERROR; strm->msg = Z_NULL; if (strm->zalloc == (alloc_func)0) { return Z_STREAM_ERROR; } if (strm->zfree == (free_func)0) { return Z_STREAM_ERROR; } s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); if (s == Z_NULL) return Z_MEM_ERROR; strm->state = (struct internal_state FAR *)s; s->strm = strm; s->status = INIT_STATE; /* to pass state test in deflateReset() */ s->w_bits = WBITS64; s->w_size = 1 << s->w_bits; s->w_mask = s->w_size - 1; s->hash_bits = MEM_LEVEL64 + 7; s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); s->window = (Byte FAR *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); s->high_water = 0; /* nothing written to s->window yet */ s->lit_bufsize = 1 << (s->hash_bits - 1); /* 32K elements by default */ s->pending_buf = (unsigned char FAR *) ZALLOC(strm, s->lit_bufsize, 4); s->pending_buf_size = (unsigned long)s->lit_bufsize * 4; s->sym_buf = (unsigned char FAR *) ZALLOC(strm, s->lit_bufsize, 4); s->sym_end = s->lit_bufsize * 4; if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || s->pending_buf == Z_NULL || s->sym_buf == Z_NULL) { s->status = FINISH_STATE; strm->msg = ERR_MSG(Z_MEM_ERROR); deflate9End (strm); return Z_MEM_ERROR; } return deflate9Reset(strm); } /* ========================================================================= * Check for a valid deflate stream state. Return 0 if ok, 1 if not. */ local int deflateStateCheck (strm) z_streamp strm; { deflate_state *s; if (strm == Z_NULL || strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) return 1; s = strm->state; if (s == Z_NULL || s->strm != strm || (s->status != INIT_STATE && s->status != BUSY_STATE && s->status != FINISH_STATE)) return 1; return 0; } /* ========================================================================= */ int ZEXPORT deflate9ResetKeep (strm) z_streamp strm; { deflate_state *s; if (deflateStateCheck(strm)) { return Z_STREAM_ERROR; } strm->total_in = strm->total_out = 0; strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ strm->data_type = Z_UNKNOWN; s = (deflate_state *)strm->state; s->pending = 0; s->pending_out = s->pending_buf; s->status = INIT_STATE; s->last_flush = -2; _tr_init(s); return Z_OK; } /* ========================================================================= */ int ZEXPORT deflate9Reset (strm) z_streamp strm; { int ret = deflate9ResetKeep(strm); if (ret == Z_OK) { lm_init(strm->state); } return ret; } /* ========================================================================= * Flush as much pending output as possible. All deflate() output, except for * some deflate_stored() output, goes through this function so some * applications may wish to modify it to avoid allocating a large * strm->next_out buffer and copying into it. (See also read_buf()). */ local void flush_pending(strm) z_streamp strm; { unsigned len; deflate_state *s = strm->state; _tr_flush_bits(s); len = s->pending; if (len > strm->avail_out) { len = strm->avail_out; } if (len == 0) { return; } zmemcpy(strm->next_out, s->pending_out, len); strm->next_out += len; s->pending_out += len; strm->total_out += len; strm->avail_out -= len; s->pending -= len; if (s->pending == 0) { s->pending_out = s->pending_buf; } } /* ========================================================================= */ int ZEXPORT deflate9 (strm, flush) z_streamp strm; int flush; { int old_flush; /* value of flush param for previous deflate call */ deflate_state *s; /* Only accept Z_FINISH or Z_NO_FLUSH */ if (deflateStateCheck(strm) || (flush != Z_FINISH && flush != Z_NO_FLUSH)) { return Z_STREAM_ERROR; } s = strm->state; if (strm->next_out == Z_NULL || (strm->avail_in != 0 && strm->next_in == Z_NULL) || (s->status == FINISH_STATE && flush != Z_FINISH)) { ERR_RETURN(strm, Z_STREAM_ERROR); } if (strm->avail_out == 0) { ERR_RETURN(strm, Z_BUF_ERROR); } old_flush = s->last_flush; s->last_flush = flush; /* Flush as much pending output as possible */ if (s->pending != 0) { flush_pending(strm); if (strm->avail_out == 0) { /* Since avail_out is 0, deflate will be called again with * more output space, but possibly with both pending and * avail_in equal to zero. There won't be anything to do, * but this is not an error situation so make sure we * return OK instead of BUF_ERROR at next call of deflate: */ s->last_flush = -1; return Z_OK; } /* Make sure there is something to do and avoid duplicate consecutive * flushes. For repeated and useless calls with Z_FINISH, we keep * returning Z_STREAM_END instead of Z_BUF_ERROR. */ } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) && flush != Z_FINISH) { ERR_RETURN(strm, Z_BUF_ERROR); } /* User must not provide more input after the first FINISH: */ if (s->status == FINISH_STATE && strm->avail_in != 0) { ERR_RETURN(strm, Z_BUF_ERROR); } /* raw deflate only */ if (s->status == INIT_STATE) { s->status = BUSY_STATE; } /* Start a new block or continue the current one. */ if (strm->avail_in != 0 || s->lookahead != 0 || (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { block_state bstate; bstate = deflate9_(s, flush); if (bstate == finish_started || bstate == finish_done) { s->status = FINISH_STATE; } if (bstate == need_more || bstate == finish_started) { if (strm->avail_out == 0) { s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ } return Z_OK; /* If flush != Z_NO_FLUSH && avail_out == 0, the next call * of deflate should use the same flush parameter to make sure * that the flush is complete. So we don't have to output an * empty block here, this will be done at next call. This also * ensures that for a very small output buffer, we emit at most * one empty block. */ } if (bstate == block_done) { flush_pending(strm); if (strm->avail_out == 0) { s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ return Z_OK; } } } if (flush != Z_FINISH) return Z_OK; return Z_STREAM_END; } /* ========================================================================= */ int ZEXPORT deflate9End (z_streamp strm) { int status; if (deflateStateCheck(strm)) return Z_STREAM_ERROR; status = strm->state->status; /* Deallocate in reverse order of allocations: */ TRY_FREE(strm, strm->state->sym_buf); TRY_FREE(strm, strm->state->pending_buf); TRY_FREE(strm, strm->state->head); TRY_FREE(strm, strm->state->prev); TRY_FREE(strm, strm->state->window); ZFREE(strm, strm->state); strm->state = Z_NULL; return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; } /* =========================================================================== * Read a new buffer from the current input stream, * and total number of bytes read. * All deflate() input goes through * this function so some applications may wish to modify it to avoid * allocating a large strm->next_in buffer and copying from it. * (See also flush_pending()). */ local unsigned read_buf(strm, buf, size) z_streamp strm; Byte FAR *buf; unsigned size; { unsigned len = strm->avail_in; if (len > size) len = size; if (len == 0) return 0; strm->avail_in -= len; zmemcpy(buf, strm->next_in, len); strm->next_in += len; strm->total_in += len; return len; } /* =========================================================================== * Initialize the "longest match" routines for a new zlib stream */ local void lm_init (s) deflate_state *s; { s->window_size = (unsigned long) 2L * s->w_size; CLEAR_HASH(s); /* Set the default configuration parameters: */ s->max_lazy_match = 258; s->good_match = 32; s->nice_match = 258; s->max_chain_length = 4096; s->strstart = 0; s->block_start = 0L; s->lookahead = 0; s->insert = 0; s->match_length = s->prev_length = MIN_MATCH - 1; s->match_available = 0; s->ins_h = 0; } /* =========================================================================== * Set match_start to the longest match starting at the given string and * return its length. Matches shorter or equal to prev_length are discarded, * in which case the result is equal to prev_length and match_start is * garbage. * IN assertions: cur_match is the head of the hash chain for the current * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 * OUT assertion: the match length is not greater than s->lookahead. */ /* For 80x86 and 680x0, an optimized version will be provided in match.asm or * match.S. The code will be functionally equivalent. */ local uInt longest_match(s, cur_match) deflate_state *s; IPos cur_match; /* current match */ { unsigned chain_length = s->max_chain_length;/* max hash chain length */ register Byte FAR *scan = s->window + s->strstart; /* current string */ register Byte FAR *match; /* matched string */ register int len; /* length of current match */ int best_len = (int)s->prev_length; /* best match length so far */ int nice_match = s->nice_match; /* stop if match long enough */ IPos limit = s->strstart > (IPos)MAX_DIST(s) ? s->strstart - (IPos)MAX_DIST(s) : NIL; /* Stop when cur_match becomes <= limit. To simplify the code, * we prevent matches with the string of window index 0. */ Posf *prev = s->prev; uInt wmask = s->w_mask; register Byte FAR *strend = s->window + s->strstart + MAX_MATCH; register Byte scan_end1 = scan[best_len-1]; register Byte scan_end = scan[best_len]; /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. * It is easy to get rid of this optimization if necessary. */ // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); /* Do not waste too much time if we already have a good match: */ if (s->prev_length >= s->good_match) { chain_length >>= 2; } /* Do not look for matches beyond the end of the input. This is necessary * to make deflate deterministic. */ if ((uInt) nice_match > s->lookahead) { nice_match = (int) s->lookahead; } Assert((unsigned long)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); do { Assert(cur_match < s->strstart, "no future"); match = s->window + cur_match; /* Skip to next match if the match length cannot increase * or if the match length is less than 2. Note that the checks below * for insufficient lookahead only occur occasionally for performance * reasons. Therefore uninitialized memory will be accessed, and * conditional jumps will be made that depend on those values. * However the length of the match is limited to the lookahead, so * the output of deflate is not affected by the uninitialized values. */ if (match[best_len] != scan_end || match[best_len-1] != scan_end1 || *match != *scan || *++match != scan[1]) continue; /* The check at best_len-1 can be removed because it will be made * again later. (This heuristic is not always a win.) * It is not necessary to compare scan[2] and match[2] since they * are always equal when the other bytes match, given that * the hash keys are equal and that HASH_BITS >= 8. */ scan += 2, match++; Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; * the 256th check will be made at strstart+258. */ do { } while (*++scan == *++match && *++scan == *++match && *++scan == *++match && *++scan == *++match && *++scan == *++match && *++scan == *++match && *++scan == *++match && *++scan == *++match && scan < strend); Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); len = MAX_MATCH - (int)(strend - scan); scan = strend - MAX_MATCH; if (len > best_len) { s->match_start = cur_match; best_len = len; if (len >= nice_match) { break; } scan_end1 = scan[best_len - 1]; scan_end = scan[best_len]; } } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length != 0); if ((uInt) best_len <= s->lookahead) { return (uInt) best_len; } return s->lookahead; } #ifdef ZLIB_DEBUG #define EQUAL 0 /* result of memcmp for equal strings */ /* =========================================================================== * Check that the match at match_start is indeed a match. */ local void check_match(s, start, match, length) deflate_state *s; IPos start, match; int length; { /* check that the match is indeed a match */ if (zmemcmp(s->window + match, s->window + start, length) != EQUAL) { fprintf(stderr, " start %u, match %u, length %d\n", start, match, length); do { fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); } while (--length != 0); z_error("invalid match"); } if (z_verbose > 1) { fprintf(stderr,"\\[%d,%d]", start-match, length); do { putc(s->window[start++], stderr); } while (--length != 0); } } #else # define check_match(s, start, match, length) #endif /* ZLIB_DEBUG */ /* =========================================================================== * Fill the window when the lookahead becomes insufficient. * Updates strstart and lookahead. * * IN assertion: lookahead < MIN_LOOKAHEAD * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD * At least one byte has been read, or avail_in == 0; reads are * performed for at least two bytes (required for the zip translate_eol * option -- not supported here). */ local void fill_window(s) deflate_state *s; { unsigned n; unsigned more; /* Amount of free space at the end of the window. */ uInt wsize = s->w_size; Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); do { more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); /* Deal with !@#$% 64K limit: */ if (sizeof(int) <= 2) { if (more == 0 && s->strstart == 0 && s->lookahead == 0) { more = wsize; } else if (more == (unsigned)(-1)) { /* Very unlikely, but possible on 16 bit machine if * strstart == 0 && lookahead == 1 (input done a byte at time) */ more--; } } /* If the window is almost full and there is insufficient lookahead, * move the upper half to the lower one to make room in the upper half. */ if (s->strstart >= wsize+MAX_DIST(s)) { zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more); s->match_start -= wsize; s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ s->block_start -= (long) wsize; if (s->insert > s->strstart) { s->insert = s->strstart; } slide_hash(s); more += wsize; } if (s->strm->avail_in == 0) break; /* If there was no sliding: * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && * more == window_size - lookahead - strstart * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) * => more >= window_size - 2*WSIZE + 2 * In the BIG_MEM or MMAP case (not yet supported), * window_size == input_size + MIN_LOOKAHEAD && * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. * Otherwise, window_size == 2*WSIZE so more >= 2. * If there was sliding, more >= WSIZE. So in all cases, more >= 2. */ Assert(more >= 2, "more < 2"); n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); s->lookahead += n; /* Initialize the hash value now that we have some input: */ if (s->lookahead + s->insert >= MIN_MATCH) { uInt str = s->strstart - s->insert; s->ins_h = s->window[str]; UPDATE_HASH(s, s->ins_h, s->window[str + 1]); #if MIN_MATCH != 3 Call UPDATE_HASH() MIN_MATCH-3 more times #endif while (s->insert) { UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH - 1]); s->prev[str & s->w_mask] = s->head[s->ins_h]; s->head[s->ins_h] = (Pos)str; str++; s->insert--; if (s->lookahead + s->insert < MIN_MATCH) break; } } /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, * but this is not important since only literal bytes will be emitted. */ } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); /* If the WIN_INIT bytes after the end of the current data have never been * written, then zero those bytes in order to avoid memory check reports of * the use of uninitialized (or uninitialised as Julian writes) bytes by * the longest match routines. Update the high water mark for the next * time through here. WIN_INIT is set to MAX_MATCH since the longest match * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. */ if (s->high_water < s->window_size) { unsigned long curr = s->strstart + (ulg)(s->lookahead); unsigned long init; if (s->high_water < curr) { /* Previous high water mark below current data -- zero WIN_INIT * bytes or up to end of window, whichever is less. */ init = s->window_size - curr; if (init > WIN_INIT) { init = WIN_INIT; } zmemzero(s->window + curr, (unsigned)init); s->high_water = curr + init; } else if (s->high_water < (ulg)curr + WIN_INIT) { /* High water mark at or above current data, but below current data * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up * to end of window, whichever is less. */ init = (unsigned long)curr + WIN_INIT - s->high_water; if (init > s->window_size - s->high_water) { init = s->window_size - s->high_water; } zmemzero(s->window + s->high_water, (unsigned)init); s->high_water += init; } } Assert((unsigned long)s->strstart <= s->window_size - MIN_LOOKAHEAD, "not enough room for search"); } /* =========================================================================== * Flush the current block, with given end-of-file flag. * IN assertion: strstart is set to the end of the current match. */ #define FLUSH_BLOCK_ONLY(s, last) { \ _tr_flush_block(s, (s->block_start >= 0L ? \ (char FAR *)&s->window[(unsigned)s->block_start] : \ (char FAR *)Z_NULL), \ (unsigned long)((long)s->strstart - s->block_start), \ (last)); \ s->block_start = s->strstart; \ flush_pending(s->strm); \ Tracev((stderr,"[FLUSH]\n")); \ } /* =========================================================================== * Same as above, but achieves better compression. We use a lazy * evaluation for matches: a match is finally adopted only if there is * no better match at the next window position. */ local block_state deflate9_(s, flush) deflate_state *s; int flush; { IPos hash_head; /* head of hash chain */ int bflush; /* set if current block must be flushed */ /* Process the input block. */ for (;;) { /* Make sure that we always have enough lookahead, except * at the end of the input file. We need MAX_MATCH bytes * for the next match, plus MIN_MATCH bytes to insert the * string following the next match. */ if (s->lookahead < MIN_LOOKAHEAD) { fill_window(s); if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { return need_more; } if (s->lookahead == 0) break; /* flush the current block */ } /* Insert the string window[strstart .. strstart+2] in the * dictionary, and set hash_head to the head of the hash chain: */ hash_head = NIL; if (s->lookahead >= MIN_MATCH) { INSERT_STRING(s, s->strstart, hash_head); } /* Find the longest match, discarding those <= prev_length. */ s->prev_length = s->match_length, s->prev_match = s->match_start; s->match_length = MIN_MATCH-1; if (hash_head != NIL && s->prev_length < s->max_lazy_match && s->strstart - hash_head <= MAX_DIST(s)) { /* To simplify the code, we prevent matches with the string * of window index 0 (in particular we have to avoid a match * of the string with itself at the start of the input file). */ s->match_length = longest_match (s, hash_head); /* longest_match() sets match_start */ } /* If there was a match at the previous step and the current * match is not better, output the previous match: */ if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ check_match(s, s->strstart-1, s->prev_match, s->prev_length); bflush = _tr_tally(s, s->strstart -1 - s->prev_match, s->prev_length - MIN_MATCH); /* Insert in hash table all strings up to the end of the match. * strstart-1 and strstart are already inserted. If there is not * enough lookahead, the last two strings are not inserted in * the hash table. */ s->lookahead -= s->prev_length-1; s->prev_length -= 2; do { if (++s->strstart <= max_insert) { INSERT_STRING(s, s->strstart, hash_head); } } while (--s->prev_length != 0); s->match_available = 0; s->match_length = MIN_MATCH-1; s->strstart++; if (bflush) { FLUSH_BLOCK_ONLY(s, 0); if (s->strm->avail_out == 0) { return need_more; } } } else if (s->match_available) { /* If there was no match at the previous position, output a * single literal. If there was a match but the current match * is longer, truncate the previous match to a single literal. */ Tracevv((stderr,"%c", s->window[s->strstart-1])); bflush = _tr_tally(s, 0, s->window[s->strstart-1]); if (bflush) { FLUSH_BLOCK_ONLY(s, 0); } s->strstart++; s->lookahead--; if (s->strm->avail_out == 0) return need_more; } else { /* There is no previous match to compare with, wait for * the next step to decide. */ s->match_available = 1; s->strstart++; s->lookahead--; } } Assert (flush != Z_NO_FLUSH, "no flush?"); if (s->match_available) { Tracevv((stderr,"%c", s->window[s->strstart-1])); bflush = _tr_tally(s, 0, s->window[s->strstart-1]); s->match_available = 0; } s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; if (flush == Z_FINISH) { FLUSH_BLOCK_ONLY(s, 1); if (s->strm->avail_out == 0) { return finish_started; } else { return finish_done; } } if (s->sym_next) { FLUSH_BLOCK_ONLY(s, 0); if (s->strm->avail_out == 0) { return need_more; } } return block_done; } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/deflate.h0000644000175100017510000002610315112276603016075 0ustar00runnerrunner/* deflate9.h -- internal compression state for deflate.c * Copyright (C) 1995-2018 Jean-loup Gailly * Copyright (C) 2022 Hiroshi Miura */ #ifndef DEFLATE9_H #define DEFLATE9_H #include "util.h" /* =========================================================================== * Internal compression state. */ #define LENGTH_CODES 30 /* number of length codes, not counting the special END_BLOCK code */ /* extended (+1) for deflate64 from 29 */ #define LITERALS 256 /* number of literal bytes 0..255 */ #define L_CODES (LITERALS+1+LENGTH_CODES) /* number of Literal or Length codes, including the END_BLOCK code */ #define D_CODES 32 /* number of distance codes */ /* extended +2 for deflate64 from 30 of deflate */ #define BL_CODES 19 /* number of codes used to transfer the bit lengths */ #define HEAP_SIZE (2*L_CODES+1) /* maximum heap size */ #define Buf_size 16 /* size of bit buffer in bi_buf */ #define INIT_STATE 42 /* deflate -> BUSY_STATE */ #define BUSY_STATE 113 /* finish deflate -> FINISH_STATE */ #define FINISH_STATE 666 /* stream complete */ /* Stream status */ /* Data structure describing a single value and its code string. */ typedef struct ct_data_s { union { unsigned short freq; /* frequency count */ unsigned short code; /* bit string */ } fc; union { unsigned short dad; /* father node in Huffman tree */ unsigned short len; /* length of bit string */ } dl; } FAR ct_data; #define Freq fc.freq #define Code fc.code #define Dad dl.dad #define Len dl.len typedef struct static_tree_desc_s static_tree_desc; typedef struct tree_desc_s { ct_data *dyn_tree; /* the dynamic tree */ int max_code; /* largest code with non zero frequency */ const static_tree_desc *stat_desc; /* the corresponding static tree */ } FAR tree_desc; typedef unsigned short Pos; typedef Pos FAR Posf; typedef unsigned IPos; /* A Pos is an index in the character window. We use short instead of int to * save space in the various tables. IPos is used only for parameter passing. */ typedef struct internal_state { z_streamp strm; /* pointer back to this zlib stream */ int status; /* as the name implies */ Byte FAR *pending_buf; /* output still pending */ unsigned long pending_buf_size; /* size of pending_buf */ Byte FAR *pending_out; /* next pending byte to output to the stream */ unsigned long pending; /* nb of bytes in the pending buffer */ int last_flush; /* value of flush param for previous deflate call */ /* used by deflate.c: */ unsigned long w_size; /* LZ77 window size (64K for deflate64) */ uInt w_bits; /* 8..16 */ unsigned long w_mask; /* w_size - 1 */ Byte FAR *window; /* Sliding window. Input bytes are read into the second half of the window, * and move to the first half later to keep a dictionary of at least wSize * bytes. With this organization, matches are limited to a distance of * wSize-MAX_MATCH bytes, but this ensures that IO is always * performed with a length multiple of the block size. Also, it limits * the window size to 64K, which is quite useful on MSDOS. * To do: use the user input buffer as sliding window. */ unsigned long window_size; /* Actual size of window: 2*wSize, except when the user input buffer * is directly used as sliding window. */ Posf *prev; /* Link to older string with same hash index. To limit the size of this * array to 64K, this link is maintained only for the last 32K strings. * An index in this array is thus a window index modulo 32K. */ Posf *head; /* Heads of the hash chains or NIL. */ uInt ins_h; /* hash index of string to be inserted */ uInt hash_size; /* number of elements in hash table */ uInt hash_bits; /* log2(hash_size) */ uInt hash_mask; /* hash_size-1 */ uInt hash_shift; /* Number of bits by which ins_h must be shifted at each input * step. It must be such that after MIN_MATCH steps, the oldest * byte no longer takes part in the hash key, that is: * hash_shift * MIN_MATCH >= hash_bits */ long block_start; /* Window position at the beginning of the current output block. Gets * negative when the window is moved backwards. */ uInt match_length; /* length of best match */ IPos prev_match; /* previous match */ int match_available; /* set if previous match exists */ uInt strstart; /* start of string to insert */ uInt match_start; /* start of matching string */ uInt lookahead; /* number of valid bytes ahead in window */ uInt prev_length; /* Length of the best match at previous step. Matches not greater than this * are discarded. This is used in the lazy match evaluation. */ uInt max_chain_length; /* To speed up deflation, hash chains are never searched beyond this * length. A higher limit improves compression ratio but degrades the * speed. */ uInt max_lazy_match; /* Attempt to find a better match only when the current match is strictly * smaller than this value. This mechanism is used only for compression * levels >= 4. */ # define max_insert_length max_lazy_match /* Insert new strings in the hash table only if the match length is not * greater than this length. This saves time but degrades compression. * max_insert_length is used only for compression levels <= 3. */ int level; /* compression level (1..9) */ int strategy; /* favor or force Huffman coding*/ uInt good_match; /* Use a faster search when the previous match is longer than this */ int nice_match; /* Stop searching when current match exceeds this */ /* used by trees.c: */ /* Didn't use ct_data typedef below to suppress compiler warning */ struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ struct tree_desc_s l_desc; /* desc. for literal tree */ struct tree_desc_s d_desc; /* desc. for distance tree */ struct tree_desc_s bl_desc; /* desc. for bit length tree */ unsigned short bl_count[MAX_BITS+1]; /* number of codes at each bit length for an optimal tree */ int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ int heap_len; /* number of elements in the heap */ int heap_max; /* element of largest frequency */ /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. * The same heap array is used to build all trees. */ unsigned char depth[2*L_CODES+1]; /* Depth of each subtree used as tie breaker for trees of equal frequency */ unsigned char FAR *sym_buf; /* buffer for distances and literals/lengths */ uInt lit_bufsize; /* Size of match buffer for literals/lengths. There are 4 reasons for * limiting lit_bufsize to 64K: * - frequencies can be kept in 16 bit counters * - if compression is not successful for the first block, all input * data is still in the window so we can still emit a stored block even * when input comes from standard input. (This can also be done for * all blocks if lit_bufsize is not greater than 32K.) * - if compression is not successful for a file smaller than 64K, we can * even emit a stored file instead of a stored block (saving 5 bytes). * This is applicable only for zip (not gzip or zlib). * - creating new Huffman trees less frequently may not provide fast * adaptation to changes in the input data statistics. (Take for * example a binary file with poorly compressible code followed by * a highly compressible string table.) Smaller buffer sizes give * fast adaptation but have of course the overhead of transmitting * trees more frequently. * - I can't count above 4 */ uInt sym_next; /* running index in sym_buf */ uInt sym_end; /* symbol table full when sym_next reaches this */ unsigned long opt_len; /* bit length of current block with optimal trees */ unsigned long static_len; /* bit length of current block with static trees */ uInt matches; /* number of string matches in current block */ uInt insert; /* bytes at end of window left to insert */ #ifdef ZLIB_DEBUG ulg compressed_len; /* total bit length of compressed file mod 2^32 */ ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ #endif unsigned short bi_buf; /* Output buffer. bits are inserted starting at the bottom (least * significant bits). */ int bi_valid; /* Number of valid bits in bi_buf. All bits above the last valid bit * are always zero. */ unsigned long high_water; /* High water mark offset in window for initialized bytes -- bytes above * this are set to zero in order to avoid memory check warnings when * longest match routines access bytes past the input. This is then * updated to the new high water mark. */ } FAR deflate_state; /* Output a byte on the stream. * IN assertion: there is enough room in pending_buf. */ #define put_byte(s, c) {s->pending_buf[s->pending++] = (Byte FAR)(c);} #define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) /* Minimum amount of lookahead, except at the end of the input file. * See deflate.c for comments about the MIN_MATCH+1. */ #define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) /* In order to simplify the code match distances are limited to MAX_DIST instead of WSIZE. */ #define WIN_INIT MAX_MATCH /* Number of bytes after end of data in window to initialize in order to avoid memory checker errors from longest match routines */ /* in trees.c */ void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, char FAR *buf, ulg stored_len, int last)); void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s)); void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, char FAR *buf, ulg stored_len, int last)); #define d_code(dist) \ ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) /* Mapping from a distance to a distance code. dist is the distance - 1 and * must not have side effects. _dist_code[256] and _dist_code[257] are never * used. */ #define l_code(length) \ ((length) <= BASE_MATCH ? length_code[length] : 28) /* last length code is common (28) for 259-65536 */ #ifndef ZLIB_DEBUG #if defined(GEN_TREES_H) || !defined(STDC) extern uch ZLIB_INTERNAL _dist_code[]; #else extern const unsigned char ZLIB_INTERNAL _dist_code[]; #endif #endif extern uch ZLIB_INTERNAL length_code[]; #endif /* DEFLATE_H */ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/deflate_tree.c0000644000175100017510000012241015112276603017105 0ustar00runnerrunner/* trees.c -- output deflated data using Huffman coding * Copyright (C) 1995-2021 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 */ /* * ALGORITHM * * The "deflation" process uses several Huffman trees. The more * common source values are represented by shorter bit sequences. * * Each code tree is stored in a compressed form which is itself * a Huffman encoding of the lengths of all the code strings (in * ascending order by source values). The actual code strings are * reconstructed from the lengths in the inflate process, as described * in the deflate specification. * * REFERENCES * * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc * * Storer, James A. * Data Compression: Methods and Theory, pp. 49-50. * Computer Science Press, 1988. ISBN 0-7167-8156-5. * * Sedgewick, R. * Algorithms, p290. * Addison-Wesley, 1983. ISBN 0-201-06672-6. */ #include "deflate.h" #ifdef ZLIB_DEBUG # include #endif /* =========================================================================== * Constants */ #define MAX_BL_BITS 7 /* Bit length codes must not exceed MAX_BL_BITS bits */ #define END_BLOCK 256 /* end of block literal code */ #define REP_3_6 16 /* repeat previous bit length 3-6 times (2 bits of repeat count) */ #define REPZ_3_10 17 /* repeat a zero length 3-10 times (3 bits of repeat count) */ #define REPZ_11_138 18 /* repeat a zero length 11-138 times (7 bits of repeat count) */ local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,16,0}; /* extended to deflate64: the last length code (285) will be extended by 16 extra bits */ local const int extra_dbits[D_CODES] /* extra bits for each distance code */ = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14}; /* extended for deflate64: the distance code (30 and 31) not used for deflate but now extended to address a range of 64kbytes. These will be uses 14 extra bits. */ local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7}; local const uch bl_order[BL_CODES] = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}; /* The lengths of the bit length codes are sent in order of decreasing * probability, to avoid transmitting the lengths for unused bit length codes. */ /* =========================================================================== * Local data. These are initialized only once. */ #define DIST_CODE_LEN 768 /* see definition of array dist_code below */ local int base_length[LENGTH_CODES]; /* First normalized length for each code (0 = MIN_MATCH) */ uch length_code[BASE_MATCH-MIN_MATCH+1]; /* length code for each normalized match length (0 == MIN_MATCH) */ #if defined(GEN_TREES_H) || !defined(STDC) /* non ANSI compilers may not accept trees.h */ local ct_data static_ltree[L_CODES+2]; /* The static literal tree. Since the bit lengths are imposed, there is no * need for the L_CODES extra codes used during heap construction. However * The codes 286 and 287 are needed to build a canonical tree (see _tr_init * below). */ local ct_data static_dtree[D_CODES]; /* The static distance tree. (Actually a trivial tree since all codes use * 5 bits.) */ uch _dist_code[DIST_CODE_LEN]; /* Distance codes. The first 256 values correspond to the distances * 3 .. 258, the last 256 values correspond to the top 8 bits of * the 15 bit distances. */ local int base_dist[D_CODES]; /* First normalized distance for each code (0 = distance of 1) */ #else # include "deflate_tree.h" #endif /* GEN_TREES_H */ struct static_tree_desc_s { const ct_data *static_tree; /* static tree or NULL */ const int FAR *extra_bits; /* extra bits for each code or NULL */ int extra_base; /* base index for extra_bits */ int elems; /* max number of elements in the tree */ int max_length; /* max bit length for the codes */ }; local const static_tree_desc static_l_desc = {static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; local const static_tree_desc static_d_desc = {static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; local const static_tree_desc static_bl_desc = {(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; /* =========================================================================== * Local (static) routines in this file. */ local void tr_static_init OF((void)); local void init_block OF((deflate_state *s)); local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); local void gen_codes OF((ct_data *tree, int max_code, ush FAR *bl_count)); local void build_tree OF((deflate_state *s, tree_desc *desc)); local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); local int build_bl_tree OF((deflate_state *s)); local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, int blcodes)); local void compress_block OF((deflate_state *s, const ct_data *ltree, const ct_data *dtree)); local int detect_data_type OF((deflate_state *s)); local unsigned bi_reverse OF((unsigned code, int len)); local void bi_windup OF((deflate_state *s)); local void bi_flush OF((deflate_state *s)); #ifdef GEN_TREES_H local void gen_trees_header OF((void)); #endif #ifndef ZLIB_DEBUG # define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) /* Send a code of the given tree. c and tree must not have side effects */ #else /* !ZLIB_DEBUG */ # define send_code(s, c, tree) \ { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ send_bits(s, tree[c].Code, tree[c].Len); } #endif /* =========================================================================== * Output a short LSB first on the stream. * IN assertion: there is enough room in pendingBuf. */ #define put_short(s, w) { \ put_byte(s, (uch)((w) & 0xff)); \ put_byte(s, (uch)((ush)(w) >> 8)); \ } /* =========================================================================== * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ #ifdef ZLIB_DEBUG local void send_bits OF((deflate_state *s, int value, int length)); local void send_bits(s, value, length) deflate_state *s; int value; /* value to send */ int length; /* number of bits */ { Tracevv((stderr," l %2d v %4x ", length, value)); Assert(length > 0 && length <= 16, "invalid length"); s->bits_sent += (ulg)length; /* If not enough room in bi_buf, use (valid) bits from bi_buf and * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) * unused bits in value. */ if (s->bi_valid > (int)Buf_size - length) { s->bi_buf |= (ush)value << s->bi_valid; put_short(s, s->bi_buf); s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); s->bi_valid += length - Buf_size; } else { s->bi_buf |= (ush)value << s->bi_valid; s->bi_valid += length; } } #else /* !ZLIB_DEBUG */ #define send_bits(s, value, length) \ { int len = length;\ if (s->bi_valid > (int)Buf_size - len) {\ int val = (int)value;\ s->bi_buf |= (ush)val << s->bi_valid;\ put_short(s, s->bi_buf);\ s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ s->bi_valid += len - Buf_size;\ } else {\ s->bi_buf |= (ush)(value) << s->bi_valid;\ s->bi_valid += len;\ }\ } #endif /* ZLIB_DEBUG */ /* the arguments must not have side effects */ /* =========================================================================== * Initialize the various 'constant' tables. */ local void tr_static_init() { #if defined(GEN_TREES_H) || !defined(STDC) static int static_init_done = 0; int n; /* iterates over tree elements */ int bits; /* bit counter */ int length; /* length value */ int code; /* code value */ int dist; /* distance index */ ush bl_count[MAX_BITS+1]; /* number of codes at each bit length for an optimal tree */ if (static_init_done) return; /* For some embedded targets, global variables are not initialized: */ #ifdef NO_INIT_GLOBAL_POINTERS static_l_desc.static_tree = static_ltree; static_l_desc.extra_bits = extra_lbits; static_d_desc.static_tree = static_dtree; static_d_desc.extra_bits = extra_dbits; static_bl_desc.extra_bits = extra_blbits; #endif /* Initialize the mapping length (0..255) -> length code (0..28) and * set base_length[29] */ length = 0; for (code = 0; code < LENGTH_CODES-2; code++) { base_length[code] = length; for (n = 0; n < (1< dist code (0..31) */ dist = 0; for (code = 0 ; code < 16; code++) { base_dist[code] = dist; for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ for ( ; code < D_CODES; code++) { base_dist[code] = dist << 7; for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { _dist_code[256 + dist++] = (uch)code; } } Assert (dist == 512, "tr_static_init: 256+dist != 768"); /* Construct the codes of the static literal tree */ for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; n = 0; while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; /* Codes 286 and 287 do not exist, but we must include them in the * tree construction to get a canonical Huffman tree (longest code * all ones) */ gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count); /* The static distance tree is trivial: */ for (n = 0; n < D_CODES; n++) { static_dtree[n].Len = 5; static_dtree[n].Code = bi_reverse((unsigned)n, 5); } static_init_done = 1; #endif /* defined(GEN_TREES_H) || !defined(STDC) */ } /* =========================================================================== * Generate the file trees.h describing the static trees. */ #ifdef GEN_TREES_H # ifndef ZLIB_DEBUG # include # endif # define SEPARATOR(i, last, width) \ ((i) == (last)? "\n};\n\n" : \ ((i) % (width) == (width)-1 ? ",\n" : ", ")) void make_deflate_tree() { FILE *header = fopen("deflate_tree.h", "w"); int i; tr_static_init(); Assert (header != NULL, "Can't open trees.h"); fprintf(header, "/* header created automatically with -DGEN_TREES_H */\n\n"); fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); for (i = 0; i < L_CODES+2; i++) { fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); } fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); for (i = 0; i < D_CODES; i++) { fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); } fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n"); for (i = 0; i < DIST_CODE_LEN; i++) { fprintf(header, "%2u%s", _dist_code[i], SEPARATOR(i, DIST_CODE_LEN-1, 20)); } fprintf(header, "const uch ZLIB_INTERNAL length_code[BASE_MATCH-MIN_MATCH+1]= {\n"); for (i = 0; i < BASE_MATCH-MIN_MATCH+1; i++) { fprintf(header, "%2u%s", length_code[i], SEPARATOR(i, BASE_MATCH-MIN_MATCH, 20)); } fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); for (i = 0; i < LENGTH_CODES; i++) { fprintf(header, "%1u%s", base_length[i], SEPARATOR(i, LENGTH_CODES-1, 20)); } fprintf(header, "local const int base_dist[D_CODES] = {\n"); for (i = 0; i < D_CODES; i++) { fprintf(header, "%5u%s", base_dist[i], SEPARATOR(i, D_CODES-1, 10)); } fclose(header); } #endif /* GEN_TREES_H */ /* =========================================================================== * Initialize the tree data structures for a new zlib stream. */ void ZLIB_INTERNAL _tr_init(s) deflate_state *s; { tr_static_init(); s->l_desc.dyn_tree = s->dyn_ltree; s->l_desc.stat_desc = &static_l_desc; s->d_desc.dyn_tree = s->dyn_dtree; s->d_desc.stat_desc = &static_d_desc; s->bl_desc.dyn_tree = s->bl_tree; s->bl_desc.stat_desc = &static_bl_desc; s->bi_buf = 0; s->bi_valid = 0; #ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; #endif /* Initialize the first block of the first file: */ init_block(s); } /* =========================================================================== * Initialize a new block. */ local void init_block(s) deflate_state *s; { int n; /* iterates over tree elements */ /* Initialize the trees. */ for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; s->dyn_ltree[END_BLOCK].Freq = 1; s->opt_len = s->static_len = 0L; s->sym_next = s->matches = 0; } #define SMALLEST 1 /* Index within the heap array of least frequent node in the Huffman tree */ /* =========================================================================== * Remove the smallest element from the heap and recreate the heap with * one less element. Updates heap and heap_len. */ #define pqremove(s, tree, top) \ {\ top = s->heap[SMALLEST]; \ s->heap[SMALLEST] = s->heap[s->heap_len--]; \ pqdownheap(s, tree, SMALLEST); \ } /* =========================================================================== * Compares to subtrees, using the tree depth as tie breaker when * the subtrees have equal frequency. This minimizes the worst case length. */ #define smaller(tree, n, m, depth) \ (tree[n].Freq < tree[m].Freq || \ (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) /* =========================================================================== * Restore the heap property by moving down the tree starting at node k, * exchanging a node with the smallest of its two sons if necessary, stopping * when the heap property is re-established (each father smaller than its * two sons). */ local void pqdownheap(s, tree, k) deflate_state *s; ct_data *tree; /* the tree to restore */ int k; /* node to move down */ { int v = s->heap[k]; int j = k << 1; /* left son of k */ while (j <= s->heap_len) { /* Set j to the smallest of the two sons: */ if (j < s->heap_len && smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { j++; } /* Exit if v is smaller than both sons */ if (smaller(tree, v, s->heap[j], s->depth)) break; /* Exchange v with the smallest son */ s->heap[k] = s->heap[j]; k = j; /* And continue down the tree, setting j to the left son of k */ j <<= 1; } s->heap[k] = v; } /* =========================================================================== * Compute the optimal bit lengths for a tree and update the total bit length * for the current block. * IN assertion: the fields freq and dad are set, heap[heap_max] and * above are the tree nodes sorted by increasing frequency. * OUT assertions: the field len is set to the optimal bit length, the * array bl_count contains the frequencies for each bit length. * The length opt_len is updated; static_len is also updated if stree is * not null. */ local void gen_bitlen(s, desc) deflate_state *s; tree_desc *desc; /* the tree descriptor */ { ct_data *tree = desc->dyn_tree; int max_code = desc->max_code; const ct_data *stree = desc->stat_desc->static_tree; const int FAR *extra = desc->stat_desc->extra_bits; int base = desc->stat_desc->extra_base; int max_length = desc->stat_desc->max_length; int h; /* heap index */ int n, m; /* iterate over the tree elements */ int bits; /* bit length */ int xbits; /* extra bits */ ush f; /* frequency */ int overflow = 0; /* number of elements with bit length too large */ for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; /* In a first pass, compute the optimal bit lengths (which may * overflow in the case of the bit length tree). */ tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ for (h = s->heap_max+1; h < HEAP_SIZE; h++) { n = s->heap[h]; bits = tree[tree[n].Dad].Len + 1; if (bits > max_length) bits = max_length, overflow++; tree[n].Len = (ush)bits; /* We overwrite tree[n].Dad which is no longer needed */ if (n > max_code) continue; /* not a leaf node */ s->bl_count[bits]++; xbits = 0; if (n >= base) xbits = extra[n-base]; f = tree[n].Freq; s->opt_len += (ulg)f * (unsigned)(bits + xbits); if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits); } if (overflow == 0) return; Tracev((stderr,"\nbit length overflow\n")); /* This happens for example on obj2 and pic of the Calgary corpus */ /* Find the first bit length which could increase: */ do { bits = max_length-1; while (s->bl_count[bits] == 0) bits--; s->bl_count[bits]--; /* move one leaf down the tree */ s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ s->bl_count[max_length]--; /* The brother of the overflow item also moves one step up, * but this does not affect bl_count[max_length] */ overflow -= 2; } while (overflow > 0); /* Now recompute all bit lengths, scanning in increasing frequency. * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all * lengths instead of fixing only the wrong ones. This idea is taken * from 'ar' written by Haruhiko Okumura.) */ for (bits = max_length; bits != 0; bits--) { n = s->bl_count[bits]; while (n != 0) { m = s->heap[--h]; if (m > max_code) continue; if ((unsigned) tree[m].Len != (unsigned) bits) { Tracev((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); s->opt_len += ((ulg)bits - tree[m].Len) * tree[m].Freq; tree[m].Len = (ush)bits; } n--; } } } /* =========================================================================== * Generate the codes for a given tree and bit counts (which need not be * optimal). * IN assertion: the array bl_count contains the bit length statistics for * the given tree and the field len is set for all tree elements. * OUT assertion: the field code is set for all tree elements of non * zero code length. */ local void gen_codes (tree, max_code, bl_count) ct_data *tree; /* the tree to decorate */ int max_code; /* largest code with non zero frequency */ ush FAR *bl_count; /* number of codes at each bit length */ { ush next_code[MAX_BITS+1]; /* next code value for each bit length */ unsigned code = 0; /* running code value */ int bits; /* bit index */ int n; /* code index */ /* The distribution counts are first used to generate the code values * without bit reversal. */ for (bits = 1; bits <= MAX_BITS; bits++) { code = (code + bl_count[bits-1]) << 1; next_code[bits] = (ush)code; } /* Check that the bit counts in bl_count are consistent. The last code * must be all ones. */ Assert (code + bl_count[MAX_BITS]-1 == (1<dyn_tree; const ct_data *stree = desc->stat_desc->static_tree; int elems = desc->stat_desc->elems; int n, m; /* iterate over heap elements */ int max_code = -1; /* largest code with non zero frequency */ int node; /* new node being created */ /* Construct the initial heap, with least frequent element in * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. * heap[0] is not used. */ s->heap_len = 0, s->heap_max = HEAP_SIZE; for (n = 0; n < elems; n++) { if (tree[n].Freq != 0) { s->heap[++(s->heap_len)] = max_code = n; s->depth[n] = 0; } else { tree[n].Len = 0; } } /* The pkzip format requires that at least one distance code exists, * and that at least one bit should be sent even if there is only one * possible code. So to avoid special checks later on we force at least * two codes of non zero frequency. */ while (s->heap_len < 2) { node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); tree[node].Freq = 1; s->depth[node] = 0; s->opt_len--; if (stree) s->static_len -= stree[node].Len; /* node is 0 or 1 so it does not have extra bits */ } desc->max_code = max_code; /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, * establish sub-heaps of increasing lengths: */ for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); /* Construct the Huffman tree by repeatedly combining the least two * frequent nodes. */ node = elems; /* next internal node of the tree */ do { pqremove(s, tree, n); /* n = node of least frequency */ m = s->heap[SMALLEST]; /* m = node of next least frequency */ s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ s->heap[--(s->heap_max)] = m; /* Create a new node father of n and m */ tree[node].Freq = tree[n].Freq + tree[m].Freq; s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? s->depth[n] : s->depth[m]) + 1); tree[n].Dad = tree[m].Dad = (ush)node; #ifdef DUMP_BL_TREE if (tree == s->bl_tree) { fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)", node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); } #endif /* and insert the new node in the heap */ s->heap[SMALLEST] = node++; pqdownheap(s, tree, SMALLEST); } while (s->heap_len >= 2); s->heap[--(s->heap_max)] = s->heap[SMALLEST]; /* At this point, the fields freq and dad are set. We can now * generate the bit lengths. */ gen_bitlen(s, (tree_desc *)desc); /* The field len is now set, we can generate the bit codes */ gen_codes ((ct_data *)tree, max_code, s->bl_count); } /* =========================================================================== * Scan a literal or distance tree to determine the frequencies of the codes * in the bit length tree. */ local void scan_tree (s, tree, max_code) deflate_state *s; ct_data *tree; /* the tree to be scanned */ int max_code; /* and its largest code of non zero frequency */ { int n; /* iterates over all tree elements */ int prevlen = -1; /* last emitted length */ int curlen; /* length of current code */ int nextlen = tree[0].Len; /* length of next code */ int count = 0; /* repeat count of the current code */ int max_count = 7; /* max repeat count */ int min_count = 4; /* min repeat count */ if (nextlen == 0) max_count = 138, min_count = 3; tree[max_code+1].Len = (ush)0xffff; /* guard */ for (n = 0; n <= max_code; n++) { curlen = nextlen; nextlen = tree[n+1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { s->bl_tree[curlen].Freq += count; } else if (curlen != 0) { if (curlen != prevlen) s->bl_tree[curlen].Freq++; s->bl_tree[REP_3_6].Freq++; } else if (count <= 10) { s->bl_tree[REPZ_3_10].Freq++; } else { s->bl_tree[REPZ_11_138].Freq++; } count = 0; prevlen = curlen; if (nextlen == 0) { max_count = 138, min_count = 3; } else if (curlen == nextlen) { max_count = 6, min_count = 3; } else { max_count = 7, min_count = 4; } } } /* =========================================================================== * Send a literal or distance tree in compressed form, using the codes in * bl_tree. */ local void send_tree (s, tree, max_code) deflate_state *s; ct_data *tree; /* the tree to be scanned */ int max_code; /* and its largest code of non zero frequency */ { int n; /* iterates over all tree elements */ int prevlen = -1; /* last emitted length */ int curlen; /* length of current code */ int nextlen = tree[0].Len; /* length of next code */ int count = 0; /* repeat count of the current code */ int max_count = 7; /* max repeat count */ int min_count = 4; /* min repeat count */ /* tree[max_code+1].Len = -1; */ /* guard already set */ if (nextlen == 0) max_count = 138, min_count = 3; for (n = 0; n <= max_code; n++) { curlen = nextlen; nextlen = tree[n+1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { do { send_code(s, curlen, s->bl_tree); } while (--count != 0); } else if (curlen != 0) { if (curlen != prevlen) { send_code(s, curlen, s->bl_tree); count--; } Assert(count >= 3 && count <= 6, " 3_6?"); send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); } else if (count <= 10) { send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); } else { send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); } count = 0; prevlen = curlen; if (nextlen == 0) { max_count = 138, min_count = 3; } else if (curlen == nextlen) { max_count = 6, min_count = 3; } else { max_count = 7, min_count = 4; } } } /* =========================================================================== * Construct the Huffman tree for the bit lengths and return the index in * bl_order of the last bit length code to send. */ local int build_bl_tree(s) deflate_state *s; { int max_blindex; /* index of last bit length code of non zero freq */ /* Determine the bit length frequencies for literal and distance trees */ scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); /* Build the bit length tree: */ build_tree(s, (tree_desc *)(&(s->bl_desc))); /* opt_len now includes the length of the tree representations, except * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. */ /* Determine the number of bit length codes to send. The pkzip format * requires that at least 4 bit length codes be sent. (appnote.txt says * 3 but the actual value used is 4.) */ for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) { if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; } /* Update opt_len to include the bit length tree and counts */ s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4; Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); return max_blindex; } /* =========================================================================== * Send the header for a block using dynamic Huffman trees: the counts, the * lengths of the bit length codes, the literal tree and the distance tree. * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. */ local void send_all_trees(s, lcodes, dcodes, blcodes) deflate_state *s; int lcodes, dcodes, blcodes; /* number of codes for each tree */ { int rank; /* index in bl_order */ Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, "too many codes"); Tracev((stderr, "\nbl counts: ")); send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ send_bits(s, dcodes-1, 5); send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ for (rank = 0; rank < blcodes; rank++) { Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); } /* =========================================================================== * Send a stored block */ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) deflate_state *s; char FAR *buf; /* input block */ ulg stored_len; /* length of input block */ int last; /* one if this is the last block for a file */ { send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ bi_windup(s); /* align on byte boundary */ put_short(s, (ush)stored_len); put_short(s, (ush)~stored_len); if (stored_len) zmemcpy(s->pending_buf + s->pending, (Byte FAR *)buf, stored_len); s->pending += stored_len; #ifdef ZLIB_DEBUG s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; s->compressed_len += (stored_len + 4) << 3; s->bits_sent += 2*16; s->bits_sent += stored_len<<3; #endif } /* =========================================================================== * Flush the bits in the bit buffer to pending output (leaves at most 7 bits) */ void ZLIB_INTERNAL _tr_flush_bits(s) deflate_state *s; { bi_flush(s); } /* =========================================================================== * Determine the best encoding for the current block: dynamic trees, static * trees or store, and write out the encoded block. */ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) deflate_state *s; char FAR *buf; /* input block, or NULL if too old */ ulg stored_len; /* length of input block */ int last; /* one if this is the last block for a file */ { ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ int max_blindex = 0; /* index of last bit length code of non zero freq */ /* Check if the file is binary or text */ if (s->strm->data_type == Z_UNKNOWN) s->strm->data_type = detect_data_type(s); /* Construct the literal and distance trees */ build_tree(s, (tree_desc *)(&(s->l_desc))); Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, s->static_len)); build_tree(s, (tree_desc *)(&(s->d_desc))); Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, s->static_len)); /* At this point, opt_len and static_len are the total bit lengths of * the compressed block data, excluding the tree representations. */ /* Build the bit length tree for the above two trees, and get the index * in bl_order of the last bit length code to send. */ max_blindex = build_bl_tree(s); /* Determine the best encoding. Compute the block lengths in bytes. */ opt_lenb = (s->opt_len+3+7)>>3; static_lenb = (s->static_len+3+7)>>3; Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, s->sym_next / 3)); if (static_lenb <= opt_lenb) opt_lenb = static_lenb; #ifdef FORCE_STORED if (buf != (char*)0) { /* force stored block */ #else if (stored_len+4 <= opt_lenb && buf != (char*)0) { /* 4: two words for the lengths */ #endif /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. * Otherwise we can't have processed more than WSIZE input bytes since * the last block flush, because compression would have been * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to * transform a block into a stored block. */ _tr_stored_block(s, buf, stored_len, last); #ifdef FORCE_STATIC } else if (static_lenb >= 0) { /* force static trees */ #else } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { #endif send_bits(s, (STATIC_TREES<<1)+last, 3); compress_block(s, (const ct_data *)static_ltree, (const ct_data *)static_dtree); #ifdef ZLIB_DEBUG s->compressed_len += 3 + s->static_len; #endif } else { send_bits(s, (DYN_TREES<<1)+last, 3); send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, max_blindex+1); compress_block(s, (const ct_data *)s->dyn_ltree, (const ct_data *)s->dyn_dtree); #ifdef ZLIB_DEBUG s->compressed_len += 3 + s->opt_len; #endif } Assert (s->compressed_len == s->bits_sent, "bad compressed size"); /* The above check is made mod 2^32, for files larger than 512 MB * and uLong implemented on 32 bits. */ init_block(s); if (last) { bi_windup(s); #ifdef ZLIB_DEBUG s->compressed_len += 7; /* align on byte boundary */ #endif } Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, s->compressed_len-7*last)); } /* =========================================================================== * Save the match info and tally the frequency counts. Return true if * the current block must be flushed. */ int ZLIB_INTERNAL _tr_tally (s, dist, lc) deflate_state *s; unsigned dist; /* distance of matched string */ unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ { s->sym_buf[s->sym_next++] = dist; s->sym_buf[s->sym_next++] = dist >> 8; s->sym_buf[s->sym_next++] = lc; s->sym_buf[s->sym_next++] = lc >> 8; if (dist == 0) { /* lc is the unmatched char */ s->dyn_ltree[lc].Freq++; } else { s->matches++; /* Here, lc is the match length - MIN_MATCH */ dist--; /* dist = match distance - 1 */ Assert((ush)dist < (ush)MAX_DIST(s) && (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); s->dyn_ltree[l_code(lc) + LITERALS + 1].Freq++; s->dyn_dtree[d_code(dist)].Freq++; } return (s->sym_next == s->sym_end); } /* =========================================================================== * Send the block data compressed using the given Huffman trees */ local void compress_block(s, ltree, dtree) deflate_state *s; const ct_data *ltree; /* literal tree */ const ct_data *dtree; /* distance tree */ { ush dist; /* distance of matched string */ ush lc; /* match length or unmatched char (if dist == 0) */ unsigned sx = 0; /* running index in sym_buf */ unsigned code; /* the code to send */ int extra; /* number of extra bits to send */ if (s->sym_next != 0) do { dist = s->sym_buf[sx++] & 0xff; dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; lc = s->sym_buf[sx++] & 0xff; lc += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; if (dist == 0) { send_code(s, lc, ltree); /* send a literal byte */ Tracecv(isgraph(lc), (stderr," '%c' ", lc)); } else { /* Here, lc is the match length - MIN_MATCH */ code = l_code(lc); send_code(s, code+LITERALS+1, ltree); /* send the length code */ extra = extra_lbits[code]; if (extra != 0) { lc -= base_length[code]; send_bits(s, lc, extra); /* send the extra length bits */ } dist--; /* dist is now the match distance - 1 */ code = d_code(dist); Assert (code < D_CODES, "bad d_code"); send_code(s, code, dtree); /* send the distance code */ extra = extra_dbits[code]; if (extra != 0) { dist -= (unsigned)base_dist[code]; send_bits(s, dist, extra); /* send the extra distance bits */ } } /* literal or match pair ? */ /* Check that the overlay between pending_buf and sym_buf is ok: */ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); } while (sx < s->sym_next); send_code(s, END_BLOCK, ltree); } /* =========================================================================== * Check if the data type is TEXT or BINARY, using the following algorithm: * - TEXT if the two conditions below are satisfied: * a) There are no non-portable control characters belonging to the * "block list" (0..6, 14..25, 28..31). * b) There is at least one printable character belonging to the * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). * - BINARY otherwise. * - The following partially-portable control characters form a * "gray list" that is ignored in this detection algorithm: * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). * IN assertion: the fields Freq of dyn_ltree are set. */ local int detect_data_type(s) deflate_state *s; { /* block_mask is the bit mask of block-listed bytes * set bits 0..6, 14..25, and 28..31 * 0xf3ffc07f = binary 11110011111111111100000001111111 */ unsigned long block_mask = 0xf3ffc07fUL; int n; /* Check for non-textual ("block-listed") bytes. */ for (n = 0; n <= 31; n++, block_mask >>= 1) if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0)) return Z_BINARY; /* Check for textual ("allow-listed") bytes. */ if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 || s->dyn_ltree[13].Freq != 0) return Z_TEXT; for (n = 32; n < LITERALS; n++) if (s->dyn_ltree[n].Freq != 0) return Z_TEXT; /* There are no "block-listed" or "allow-listed" bytes: * this stream either is empty or has tolerated ("gray-listed") bytes only. */ return Z_BINARY; } /* =========================================================================== * Reverse the first len bits of a code, using straightforward code (a faster * method would use a table) * IN assertion: 1 <= len <= 15 */ local unsigned bi_reverse(code, len) unsigned code; /* the value to invert */ int len; /* its bit length */ { register unsigned res = 0; do { res |= code & 1; code >>= 1, res <<= 1; } while (--len > 0); return res >> 1; } /* =========================================================================== * Flush the bit buffer, keeping at most 7 bits in it. */ local void bi_flush(s) deflate_state *s; { if (s->bi_valid == 16) { put_short(s, s->bi_buf); s->bi_buf = 0; s->bi_valid = 0; } else if (s->bi_valid >= 8) { put_byte(s, (Byte)s->bi_buf); s->bi_buf >>= 8; s->bi_valid -= 8; } } /* =========================================================================== * Flush the bit buffer and align the output on a byte boundary */ local void bi_windup(s) deflate_state *s; { if (s->bi_valid > 8) { put_short(s, s->bi_buf); } else if (s->bi_valid > 0) { put_byte(s, (Byte)s->bi_buf); } s->bi_buf = 0; s->bi_valid = 0; #ifdef ZLIB_DEBUG s->bits_sent = (s->bits_sent+7) & ~7; #endif } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/deflate_tree.h0000644000175100017510000002250615112276603017117 0ustar00runnerrunner/* header created automatically with -DGEN_TREES_H */ local const ct_data static_ltree[L_CODES+2] = { {{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, {{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, {{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, {{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, {{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, {{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, {{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, {{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, {{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, {{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, {{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, {{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, {{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, {{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, {{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, {{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, {{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, {{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, {{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, {{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, {{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, {{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, {{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, {{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, {{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, {{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, {{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, {{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, {{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, {{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, {{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, {{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, {{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, {{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, {{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, {{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, {{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, {{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, {{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, {{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, {{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, {{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, {{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, {{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, {{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, {{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, {{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, {{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, {{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, {{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, {{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, {{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, {{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, {{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, {{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, {{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, {{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, {{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}}, {{ 0},{ 0}} }; local const ct_data static_dtree[D_CODES] = { {{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, {{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, {{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, {{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, {{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, {{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}, {{15},{ 5}}, {{31},{ 5}} }; const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = { 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }; uch ZLIB_INTERNAL length_code[BASE_MATCH-MIN_MATCH+1]= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27 }; local int base_length[LENGTH_CODES] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0, 0 }; local const int base_dist[D_CODES] = { 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152 }; ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/inflate.c0000644000175100017510000006677415112276603016130 0ustar00runnerrunner/* inflate.c -- zlib deflate64 decompression * Copyright (C) 1995-2022 Mark Adler * Copyright (C) 2022 Hiroshi Miura */ #include "util.h" #include "inflate_tree.h" #include "inflate.h" #include "inflate64.h" /* function prototypes */ local int inflate9StateCheck OF((z_streamp strm)); local void fixedtables OF((struct inflate_state FAR *state)); local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, unsigned copy)); local int inflate9StateCheck(strm) z_streamp strm; { struct inflate_state FAR *state; if (strm == Z_NULL || strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) return 1; state = (struct inflate_state FAR *)strm->state; if (state == Z_NULL || state->strm != strm || state->mode < TYPE || state->mode > MEM) return 1; return 0; } int ZEXPORT inflate9ResetKeep(strm) z_streamp strm; { struct inflate_state FAR *state; if (inflate9StateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; strm->total_in = strm->total_out = state->total = 0; strm->msg = Z_NULL; state->mode = TYPE; state->last = 0; state->hold = 0; state->bits = 0; state->lencode = state->distcode = state->next = state->codes; Tracev((stderr, "inflate: reset\n")); return Z_OK; } int ZEXPORT inflate9Reset(strm) z_streamp strm; { struct inflate_state FAR *state; if (inflate9StateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; state->wsize = 0; state->whave = 0; state->wnext = 0; return inflate9ResetKeep(strm); } int ZEXPORT inflate9Reset2(strm) z_streamp strm; { struct inflate_state FAR *state; /* get the state */ if (inflate9StateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; if (state->window != Z_NULL) { ZFREE(strm, state->window); state->window = Z_NULL; } /* update state and reset the rest of it */ state->wrap = 0; state->wbits = WBITS64; return inflate9Reset(strm); } int ZEXPORT inflate9Init2(strm) z_streamp strm; { int ret; struct inflate_state FAR *state; if (strm == Z_NULL) return Z_STREAM_ERROR; strm->msg = Z_NULL; /* in case we return an error */ if (strm->zalloc == (alloc_func)0) { return Z_STREAM_ERROR; } if (strm->zfree == (free_func)0) return Z_STREAM_ERROR; state = (struct inflate_state FAR *) ZALLOC(strm, 1, sizeof(struct inflate_state)); if (state == Z_NULL) return Z_MEM_ERROR; Tracev((stderr, "inflate: allocated\n")); strm->state = (struct internal_state FAR *)state; state->strm = strm; state->window = Z_NULL; state->mode = TYPE; ret = inflate9Reset2(strm); if (ret != Z_OK) { ZFREE(strm, state); strm->state = Z_NULL; } return ret; } /* Return state with length and distance decoding tables and index sizes set to fixed code decoding. Normally this returns fixed tables from inffixed.h. If BUILDFIXED is defined, then instead this routine builds the tables the first time it's called, and returns those tables the first time and thereafter. This reduces the size of the code by about 2K bytes, in exchange for a little execution time. However, BUILDFIXED should not be used for threaded applications, since the rewriting of the tables and virgin may not be thread-safe. */ local void fixedtables(state) struct inflate_state FAR *state; { #ifdef BUILDFIXED static int virgin = 1; static code *lenfix, *distfix; static code fixed[544]; /* build fixed huffman tables if first call (may not be thread safe) */ if (virgin) { gen_static_table9(state, &fixed, distfix, lenfix); /* do this just once */ virgin = 0; } #else /* !BUILDFIXED */ # include "inflate_fixed9.h" #endif /* BUILDFIXED */ state->lencode = lenfix; state->lenbits = 9; state->distcode = distfix; state->distbits = 5; } /* Update the window with the last wsize (normally 32K) bytes written before returning. If window does not exist yet, create it. This is only called when a window is already in use, or when output has been written during this inflate call, but the end of the deflate stream has not been reached yet. It is also called to create a window for dictionary data when a dictionary is loaded. Providing output buffers larger than 32K to inflate() should provide a speed advantage, since only the last 32K of output is copied to the sliding window upon return from inflate(), and since all distances after the first 32K of output will fall in the output data, making match copies simpler and faster. The advantage may be dependent on the size of the processor's data caches. */ local int updatewindow(strm, end, copy) z_streamp strm; const Byte FAR *end; unsigned copy; { struct inflate_state FAR *state; unsigned dist; state = (struct inflate_state FAR *)strm->state; /* if it hasn't been done already, allocate space for the window */ if (state->window == Z_NULL) { state->window = (unsigned char FAR *) ZALLOC(strm, 1U << state->wbits, sizeof(unsigned char)); if (state->window == Z_NULL) return 1; } /* if window not in use yet, initialize */ if (state->wsize == 0) { state->wsize = 1U << state->wbits; state->wnext = 0; state->whave = 0; } /* copy state->wsize or less output bytes into the circular window */ if (copy >= state->wsize) { zmemcpy(state->window, end - state->wsize, state->wsize); state->wnext = 0; state->whave = state->wsize; } else { dist = state->wsize - state->wnext; if (dist > copy) dist = copy; zmemcpy(state->window + state->wnext, end - copy, dist); copy -= dist; if (copy) { zmemcpy(state->window, end - copy, copy); state->wnext = copy; state->whave = state->wsize; } else { state->wnext += dist; if (state->wnext == state->wsize) state->wnext = 0; if (state->whave < state->wsize) state->whave += dist; } } return 0; } /* Load registers with state in inflate() for speed */ #define LOAD() \ do { \ put = strm->next_out; \ left = strm->avail_out; \ next = strm->next_in; \ have = strm->avail_in; \ hold = state->hold; \ bits = state->bits; \ } while (0) /* Restore state from registers in inflate() */ #define RESTORE() \ do { \ strm->next_out = put; \ strm->avail_out = left; \ strm->next_in = next; \ strm->avail_in = have; \ state->hold = hold; \ state->bits = bits; \ } while (0) /* Clear the input bit accumulator */ #define INITBITS() \ do { \ hold = 0; \ bits = 0; \ } while (0) /* Get a byte of input into the bit accumulator, or return from inflate() if there is no input available. */ #define PULLBYTE() \ do { \ if (have == 0) goto inf_leave; \ have--; \ hold += (unsigned long)(*next++) << bits; \ bits += 8; \ } while (0) /* Assure that there are at least n bits in the bit accumulator. If there is not enough available input to do that, then return from inflate(). */ #define NEEDBITS(n) \ do { \ while (bits < (unsigned)(n)) \ PULLBYTE(); \ } while (0) /* Return the low n bits of the bit accumulator (n < 16) */ #define BITS(n) \ ((unsigned)hold & ((1U << (n)) - 1)) /* Remove n bits from the bit accumulator */ #define DROPBITS(n) \ do { \ hold >>= (n); \ bits -= (unsigned)(n); \ } while (0) /* Remove zero to seven bits as needed to go to a byte boundary */ #define BYTEBITS() \ do { \ hold >>= bits & 7; \ bits -= bits & 7; \ } while (0) /* * * Original explanation of inflate() **************************************************** inflate() uses a state machine to process as much input data and generate as much output data as possible before returning. The state machine is structured roughly as follows: for (;;) switch (state) { ... case STATEn: if (not enough input data or output space to make progress) return; ... make progress ... state = STATEm; break; ... } so when inflate() is called again, the same case is attempted again, and if the appropriate resources are provided, the machine proceeds to the next state. The NEEDBITS() macro is usually the way the state evaluates whether it can proceed or should return. NEEDBITS() does the return if the requested bits are not available. The typical use of the BITS macros is: NEEDBITS(n); ... do something with BITS(n) ... DROPBITS(n); where NEEDBITS(n) either returns from inflate() if there isn't enough input left to load n bits into the accumulator, or it continues. BITS(n) gives the low n bits in the accumulator. When done, DROPBITS(n) drops the low n bits off the accumulator. INITBITS() clears the accumulator and sets the number of available bits to zero. BYTEBITS() discards just enough bits to put the accumulator on a byte boundary. After BYTEBITS() and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return if there is no input available. The decoding of variable length codes uses PULLBYTE() directly in order to pull just enough bytes to decode the next code, and no more. Some states loop until they get enough input, making sure that enough state information is maintained to continue the loop where it left off if NEEDBITS() returns in the loop. For example, want, need, and keep would all have to actually be part of the saved state in case NEEDBITS() returns: case STATEw: while (want < need) { NEEDBITS(n); keep[want++] = BITS(n); DROPBITS(n); } state = STATEx; case STATEx: As shown above, if the next state is also the next case, then the break is omitted. A state may also return if there is not enough output space available to complete that state. Those states are copying stored data, writing a literal byte, and copying a matching string. When returning, a "goto inf_leave" is used to update the total counters, update the check value, and determine whether any progress has been made during that inflate() call in order to return the proper return code. Progress is defined as a change in either strm->avail_in or strm->avail_out. When there is a window, goto inf_leave will update the window with the last output written. If a goto inf_leave occurs in the middle of decompression and there is no window currently, goto inf_leave will create one and copy output to the window for the next call of inflate(). In this implementation, the flush parameter of inflate() only affects the return code (per zlib.h). inflate() always writes as much as possible to strm->next_out, given the space available and the provided input--the effect documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers the allocation of and copying into a sliding window until necessary, which provides the effect documented in zlib.h for Z_FINISH when the entire input stream available. So the only thing the flush parameter actually does is: when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it will return Z_BUF_ERROR if it has not reached the end of the stream. */ int ZEXPORT inflate9(strm, flush) z_streamp strm; int flush; { struct inflate_state FAR *state; z_const unsigned char FAR *next; /* next input */ unsigned char FAR *put; /* next output */ unsigned have; /* available input */ unsigned long left; /* available output */ unsigned long hold; /* bit buffer */ unsigned bits; /* bits in bit buffer */ unsigned in; /* save starting available input */ unsigned long out; /* save starting available output */ unsigned long copy; /* number of stored or match bytes to copy */ unsigned char FAR *from; /* where to copy match bytes from */ code here; /* current decoding table entry */ code last; /* parent table entry */ unsigned len; /* length to copy for repeats, bits to drop */ int ret; /* return code */ static const unsigned short order[19] = /* permutation of code lengths */ {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; if (inflate9StateCheck(strm) || strm->next_out == Z_NULL || (strm->next_in == Z_NULL && strm->avail_in != 0)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; LOAD(); in = have; out = left; ret = Z_OK; for (;;) switch (state->mode) { case TYPE: /* fallthrough */ case TYPED0: if (state->last) { BYTEBITS(); state->mode = DONE; /* no check */ break; } NEEDBITS(3); state->last = BITS(1); DROPBITS(1); switch (BITS(2)) { case 0: /* stored block */ Tracev((stderr, "inflate: stored block%s\n", state->last ? " (last)" : "")); state->mode = STORED; break; case 1: /* fixed block */ fixedtables(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN; /* decode codes */ break; case 2: /* dynamic block */ Tracev((stderr, "inflate: dynamic codes block%s\n", state->last ? " (last)" : "")); state->mode = TABLE; break; case 3: strm->msg = (char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); break; case STORED: BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { strm->msg = (char *)"invalid stored block lengths"; state->mode = BAD; break; } state->length = (unsigned)hold & 0xffff; Tracev((stderr, "inflate: stored length %u\n", state->length)); INITBITS(); state->mode = COPY_; /* fallthrough */ case COPY_: state->mode = COPY; /* fallthrough */ case COPY: copy = state->length; if (copy) { if (copy > have) copy = have; if (copy > left) copy = left; if (copy == 0) goto inf_leave; zmemcpy(put, next, copy); have -= copy; next += copy; left -= copy; put += copy; state->length -= copy; break; } Tracev((stderr, "inflate: stored end\n")); state->mode = TYPE; break; case TABLE: NEEDBITS(14); state->nlen = BITS(5) + 257; DROPBITS(5); state->ndist = BITS(5) + 1; DROPBITS(5); state->ncode = BITS(4) + 4; DROPBITS(4); if (state->nlen > 288 || state->ndist > 33) { // (state->nlen > 286 || state->ndist > 30) strm->msg = (char *)"too many length symbols"; state->mode = BAD; break; } Tracev((stderr, "inflate: table sizes ok\n")); state->have = 0; state->mode = LENLENS; /* fallthrough */ case LENLENS: while (state->have < state->ncode) { NEEDBITS(3); state->lens[order[state->have++]] = (unsigned short)BITS(3); DROPBITS(3); } while (state->have < 19) state->lens[order[state->have++]] = 0; state->next = state->codes; state->lencode = (const code FAR *)(state->next); state->lenbits = 7; ret = inflate_table9(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { strm->msg = (char *)"invalid code lengths set"; state->mode = BAD; break; } Tracev((stderr, "inflate: code lengths ok\n")); state->have = 0; state->mode = CODELENS; /* fallthrough */ case CODELENS: while (state->have < state->nlen + state->ndist) { for (;;) { here = state->lencode[BITS(state->lenbits)]; if ((unsigned)(here.bits) <= bits) break; PULLBYTE(); } if (here.val < 16) { DROPBITS(here.bits); state->lens[state->have++] = here.val; } else { if (here.val == 16) { NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } len = (unsigned)(state->lens[state->have - 1]); copy = 3 + BITS(2); DROPBITS(2); } else if (here.val == 17) { NEEDBITS(here.bits + 3); DROPBITS(here.bits); len = 0; copy = 3 + BITS(3); DROPBITS(3); } else { NEEDBITS(here.bits + 7); DROPBITS(here.bits); len = 0; copy = 11 + BITS(7); DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } while (copy--) state->lens[state->have++] = (unsigned short)len; } } /* handle error breaks in while */ if (state->mode == BAD) break; /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { strm->msg = (char *)"invalid code -- missing end-of-block"; state->mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits values here (9 and 6) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state->next = state->codes; state->lencode = (const code FAR *)(state->next); state->lenbits = 9; ret = inflate_table9(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { strm->msg = (char *)"invalid literal/lengths set"; state->mode = BAD; break; } state->distcode = (const code FAR *)(state->next); state->distbits = 6; ret = inflate_table9(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { strm->msg = (char *)"invalid distances set"; state->mode = BAD; break; } Tracev((stderr, "inflate: codes ok\n")); state->mode = LEN; /* fallthrough */ case LEN_: state->mode = LEN; /* fallthrough */ case LEN: state->back = 0; for (;;) { here = state->lencode[BITS(state->lenbits)]; if ((unsigned)(here.bits) <= bits) break; PULLBYTE(); } if (here.op && (here.op & 0xf0) == 0) { last = here; for (;;) { here = state->lencode[last.val + (BITS(last.bits + last.op) >> last.bits)]; if ((unsigned)(last.bits + here.bits) <= bits) break; PULLBYTE(); } DROPBITS(last.bits); state->back += last.bits; } DROPBITS(here.bits); state->back += here.bits; state->length = (unsigned)here.val; /* process literal */ if ((int)(here.op) == 0) { Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? "inflate: literal '%c'\n" : "inflate: literal 0x%02x\n", here.val)); state->mode = LIT; break; } /* process end of block */ if (here.op & 32) { Tracevv((stderr, "inflate: end of block\n")); state->back = -1; state->mode = TYPE; break; } /* invalid code */ if (here.op & 64) { strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } state->extra = (unsigned)(here.op) & 31; // use 31 instead of 15 state->mode = LENEXT; /* fallthrough */ case LENEXT: /* length code */ if (state->extra) { NEEDBITS(state->extra); state->length += BITS(state->extra); DROPBITS(state->extra); state->back += state->extra; } Tracevv((stderr, "inflate: length %u\n", state->length)); state->was = state->length; state->mode = DIST; /* fallthrough */ case DIST: /* get distance code */ for (;;) { here = state->distcode[BITS(state->distbits)]; if ((unsigned)(here.bits) <= bits) break; PULLBYTE(); } if ((here.op & 0xf0) == 0) { // XXX 0xe0 ? last = here; for (;;) { here = state->distcode[last.val + (BITS(last.bits + last.op) >> last.bits)]; if ((unsigned)(last.bits + here.bits) <= bits) break; PULLBYTE(); } DROPBITS(last.bits); state->back += last.bits; } DROPBITS(here.bits); state->back += here.bits; if (here.op & 64) { strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } state->offset = (unsigned)here.val; /* get distance extra bits, if any */ state->extra = (unsigned)(here.op) & 31; // XXX 31 instead of 15 state->mode = DISTEXT; /* fallthrough */ case DISTEXT: if (state->extra) { NEEDBITS(state->extra); state->offset += BITS(state->extra); DROPBITS(state->extra); state->back += state->extra; } Tracevv((stderr, "inflate: distance %u\n", state->offset)); state->mode = MATCH; /* fallthrough */ case MATCH: if (left == 0) goto inf_leave; copy = out - left; if (state->offset > copy) { /* copy from window */ if (state->window == NULL) { strm->msg = (char *)"try to copy from null window buffer!"; state->mode = BAD; break; } copy = state->offset - copy; if (copy > state->whave) { if (state->sane) { strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } } if (copy > state->wnext) { copy -= state->wnext; from = state->window + (state->wsize - copy); } else { from = state->window + (state->wnext - copy); } if (copy > state->length) copy = state->length; } else { // copy from output from = put - state->offset; copy = state->length; } if (copy > left) copy = left; left -= copy; state->length -= copy; do { *put++ = *from++; } while (--copy); if (state->length == 0) state->mode = LEN; break; case LIT: if (left == 0) goto inf_leave; *put++ = (unsigned char)(state->length); left--; state->mode = LEN; break; case DONE: ret = Z_STREAM_END; goto inf_leave; case BAD: ret = Z_DATA_ERROR; goto inf_leave; case MEM: return Z_MEM_ERROR; default: return Z_STREAM_ERROR; } /* Return from inflate(), updating the total counts and the check value. If there was no progress during the inflate() call, return a buffer error. Call updatewindow() to create and/or update the window state. Note: a memory error from inflate() is non-recoverable. */ inf_leave: RESTORE(); if (state->wsize || (out != strm->avail_out && state->mode < BAD && (state->mode < CHECK || flush != Z_FINISH))) if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { state->mode = MEM; return Z_MEM_ERROR; } in -= strm->avail_in; out -= strm->avail_out; strm->total_in += in; strm->total_out += out; state->total += out; strm->data_type = (int)state->bits + (state->last ? 64 : 0) + (state->mode == TYPE ? 128 : 0) + (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) ret = Z_BUF_ERROR; return ret; } int ZEXPORT inflate9End(strm) z_streamp strm; { struct inflate_state FAR *state; if (inflate9StateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; if (state->window != Z_NULL) ZFREE(strm, state->window); ZFREE(strm, strm->state); strm->state = Z_NULL; Tracev((stderr, "inflate: end\n")); return Z_OK; } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/inflate.h0000644000175100017510000000703115112276603016112 0ustar00runnerrunner/* inflate.h -- internal inflate state definition * Copyright (C) 1995-2003 Mark Adler * Copyright (C) 2022 Hiroshi Miura */ /* WARNING: this file should *not* be used by applications. It is part of the implementation of the compression library and is subject to change. */ /* Possible inflate modes between inflate() calls */ typedef enum { TYPE, /* i: waiting for type bits, including last-flag bit */ TYPED0, STORED, /* i: waiting for stored size (length and complement) */ COPY_, COPY, TABLE, /* i: waiting for dynamic block table lengths */ LENLENS, CODELENS, LEN_, LEN, /* i: waiting for length/lit code */ LENEXT, DIST, DISTEXT, MATCH, LIT, CHECK, DONE, /* finished check, done -- remain here until reset */ BAD, /* got a data error -- remain here until reset */ MEM } inflate_mode; /* State transitions between above modes - (most modes can go to the BAD mode -- not shown for clarity) Read deflate blocks: TYPE -> STORED or TABLE or LEN or DONE STORED -> TYPE TABLE -> LENLENS -> CODELENS -> LEN Read deflate codes: LEN -> LEN or TYPE */ /* state maintained between inflate() calls. Approximately 7K bytes. */ struct inflate_state { z_streamp strm; inflate_mode mode; /* current inflate mode */ int last; /* true if processing last block */ int wrap; /* true if the window has wrapped */ unsigned long check; unsigned long total; /* sliding window */ /* sliding window */ unsigned wbits; /* log base 2 of requested window size */ unsigned wsize; /* window size or zero if not using window */ unsigned whave; /* valid bytes in the window */ unsigned wnext; /* window write index */ unsigned char FAR *window; /* allocated sliding window, if needed */ /* bit accumulator */ unsigned long hold; /* input bit accumulator */ unsigned bits; /* number of bits in "in" */ /* for string and stored block copying */ unsigned length; /* literal or length of data to copy */ unsigned offset; /* distance back to copy string from */ /* for table and code decoding */ unsigned extra; /* extra bits needed */ /* fixed and dynamic code tables */ code const FAR *lencode; /* starting table for length/literal codes */ code const FAR *distcode; /* starting table for distance codes */ unsigned lenbits; /* index bits for lencode */ unsigned distbits; /* index bits for distcode */ /* dynamic table building */ unsigned ncode; /* number of code length code lengths */ unsigned nlen; /* number of length code lengths */ unsigned ndist; /* number of distance code lengths */ unsigned have; /* number of code lengths in lens[] */ code FAR *next; /* next available space in codes[] */ unsigned short lens[320]; /* temporary storage for code lengths */ unsigned short work[288]; /* work area for code table building */ code codes[ENOUGH]; /* space for code tables */ int sane; /* if false, allow invalid distance too far */ int back; /* bits back of last unprocessed length/lit */ unsigned was; /* initial length of match */ }; ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/inflate64.h0000644000175100017510000000233415112276603016265 0ustar00runnerrunner/* inflate64.h -- header for using inflate64 library functions * Copyright (C) 2003 Mark Adler * Copyright (C) 2022 Hiroshi Miura * For conditions of distribution and use, see copyright notice in zlib.h */ /* * This header file and associated patches provide a decoder for PKWare's * undocumented deflate64 compression method (method 9). * This code has not yet been tested on 16-bit architectures. * These functions are used identically, except that there is no windowBits parameter, * and a 64K window must be provided. Also if int's are 16 bits, then a zero for * the third parameter of the "out" function actually means 65536UL. */ #include "inflate64_config.h" #ifdef __cplusplus extern "C" { #endif ZEXTERN int ZEXPORT deflate9Reset OF((z_stream FAR *strm)); ZEXTERN int ZEXPORT deflate9ResetKeep OF((z_stream FAR *strm)); ZEXTERN int ZEXPORT deflate9 OF((z_stream FAR *strm, int flush)); ZEXTERN int ZEXPORT deflate9End OF((z_stream FAR *strm)); ZEXTERN int ZEXPORT deflate9Init2 OF((z_stream FAR *strm)); ZEXTERN int ZEXPORT inflate9 OF((z_stream FAR *strm, int flush)); ZEXTERN int ZEXPORT inflate9End OF((z_stream FAR *strm)); ZEXTERN int ZEXPORT inflate9Init2 OF((z_stream FAR *strm)); #ifdef __cplusplus } #endif ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/inflate64_config.h0000644000175100017510000001132715112276603017614 0ustar00runnerrunner// // Created by miurahr on 22/06/28. // #ifndef DEFLATE9_INFLATE64_CONFIG_H #define DEFLATE9_INFLATE64_CONFIG_H /* common constants */ #define STORED_BLOCK 0 #define STATIC_TREES 1 #define DYN_TREES 2 /* The three kinds of block type */ #define MIN_MATCH 3 #define BASE_MATCH 258 #define MAX_MATCH 65530 /* < 1< /* for wchar_t */ #endif #ifndef z_off_t # define z_off_t long #endif /* MVS linker does not support external names larger than 8 bytes */ #if defined(__MVS__) #pragma map(deflate9Init_,"DEIN") #pragma map(deflate9Init2_,"DEIN2") #pragma map(deflate9End,"DEEND") #pragma map(inflate9Init_,"ININ") #pragma map(inflate9Init2_,"ININ2") #pragma map(inflate9End,"INEND") #endif typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); typedef void (*free_func) OF((voidpf opaque, voidpf address)); struct internal_state; typedef struct z_stream_s { z_const Byte FAR *next_in; /* next input byte */ uInt avail_in; /* number of bytes available at next_in */ uLong total_in; /* total number of input bytes read so far */ Byte FAR *next_out; /* next output byte will go here */ uInt avail_out; /* remaining free space at next_out */ uLong total_out; /* total number of bytes output so far */ z_const char *msg; /* last error message, NULL if no error */ struct internal_state FAR *state; /* not visible by applications */ alloc_func zalloc; /* used to allocate the internal state */ free_func zfree; /* used to free the internal state */ voidpf opaque; /* private data object passed to zalloc and zfree */ int data_type; /* best guess about the data type: binary or text for deflate, or the decoding state for inflate */ uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ uLong reserved; /* reserved for future use */ } z_stream; typedef z_stream FAR *z_streamp; /* constants */ #define Z_NO_FLUSH 0 #define Z_FINISH 4 /* Allowed flush values; see deflate() and inflate() below for details */ #define Z_OK 0 #define Z_STREAM_END 1 #define Z_NEED_DICT 2 #define Z_ERRNO (-1) #define Z_STREAM_ERROR (-2) #define Z_DATA_ERROR (-3) #define Z_MEM_ERROR (-4) #define Z_BUF_ERROR (-5) /* constants */ #define Z_NO_FLUSH 0 #define Z_PARTIAL_FLUSH 1 #define Z_SYNC_FLUSH 2 #define Z_FULL_FLUSH 3 #define Z_FINISH 4 #define Z_BLOCK 5 #define Z_TREES 6 /* Allowed flush values; see deflate() and inflate() below for details */ #define Z_OK 0 #define Z_STREAM_END 1 #define Z_NEED_DICT 2 #define Z_ERRNO (-1) #define Z_STREAM_ERROR (-2) #define Z_DATA_ERROR (-3) #define Z_MEM_ERROR (-4) #define Z_BUF_ERROR (-5) #define Z_NULL 0 #define Z_FIXED 4 /* compression strategy */ #define Z_BINARY 0 #define Z_TEXT 1 #define Z_UNKNOWN 2 /* Possible values of the data_type field for deflate() */ #ifdef HAVE_HIDDEN # define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) #else # define ZLIB_INTERNAL #endif #ifndef local # define local static #endif /* since "static" is used to mean two completely different things in C, we define "local" for the non-static meaning of "static", for readability (compile with -Dlocal if your debugger can't find static symbols) */ #if defined(STDC) && !defined(Z_SOLO) # if !defined(_MSC_VER) # include # endif # include # include #endif #endif //DEFLATE9_INFLATE64_CONFIG_H ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/inflate_fixed9.h0000644000175100017510000001464215112276603017370 0ustar00runnerrunner /* inffix9.h -- table for decoding deflate64 fixed codes * Generated automatically by makefixed9(). */ /* WARNING: this file should *not* be used by applications. It is part of the implementation of this library and is subject to change. */ static const code lenfix[512] = { {96,7,0},{0,8,80},{0,8,16},{132,8,115},{130,7,31},{0,8,112}, {0,8,48},{0,9,192},{128,7,10},{0,8,96},{0,8,32},{0,9,160}, {0,8,0},{0,8,128},{0,8,64},{0,9,224},{128,7,6},{0,8,88}, {0,8,24},{0,9,144},{131,7,59},{0,8,120},{0,8,56},{0,9,208}, {129,7,17},{0,8,104},{0,8,40},{0,9,176},{0,8,8},{0,8,136}, {0,8,72},{0,9,240},{128,7,4},{0,8,84},{0,8,20},{133,8,227}, {131,7,43},{0,8,116},{0,8,52},{0,9,200},{129,7,13},{0,8,100}, {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232}, {128,7,8},{0,8,92},{0,8,28},{0,9,152},{132,7,83},{0,8,124}, {0,8,60},{0,9,216},{130,7,23},{0,8,108},{0,8,44},{0,9,184}, {0,8,12},{0,8,140},{0,8,76},{0,9,248},{128,7,3},{0,8,82}, {0,8,18},{133,8,163},{131,7,35},{0,8,114},{0,8,50},{0,9,196}, {129,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},{0,8,130}, {0,8,66},{0,9,228},{128,7,7},{0,8,90},{0,8,26},{0,9,148}, {132,7,67},{0,8,122},{0,8,58},{0,9,212},{130,7,19},{0,8,106}, {0,8,42},{0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244}, {128,7,5},{0,8,86},{0,8,22},{65,8,0},{131,7,51},{0,8,118}, {0,8,54},{0,9,204},{129,7,15},{0,8,102},{0,8,38},{0,9,172}, {0,8,6},{0,8,134},{0,8,70},{0,9,236},{128,7,9},{0,8,94}, {0,8,30},{0,9,156},{132,7,99},{0,8,126},{0,8,62},{0,9,220}, {130,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{133,8,131}, {130,7,31},{0,8,113},{0,8,49},{0,9,194},{128,7,10},{0,8,97}, {0,8,33},{0,9,162},{0,8,1},{0,8,129},{0,8,65},{0,9,226}, {128,7,6},{0,8,89},{0,8,25},{0,9,146},{131,7,59},{0,8,121}, {0,8,57},{0,9,210},{129,7,17},{0,8,105},{0,8,41},{0,9,178}, {0,8,9},{0,8,137},{0,8,73},{0,9,242},{128,7,4},{0,8,85}, {0,8,21},{144,8,3},{131,7,43},{0,8,117},{0,8,53},{0,9,202}, {129,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133}, {0,8,69},{0,9,234},{128,7,8},{0,8,93},{0,8,29},{0,9,154}, {132,7,83},{0,8,125},{0,8,61},{0,9,218},{130,7,23},{0,8,109}, {0,8,45},{0,9,186},{0,8,13},{0,8,141},{0,8,77},{0,9,250}, {128,7,3},{0,8,83},{0,8,19},{133,8,195},{131,7,35},{0,8,115}, {0,8,51},{0,9,198},{129,7,11},{0,8,99},{0,8,35},{0,9,166}, {0,8,3},{0,8,131},{0,8,67},{0,9,230},{128,7,7},{0,8,91}, {0,8,27},{0,9,150},{132,7,67},{0,8,123},{0,8,59},{0,9,214}, {130,7,19},{0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139}, {0,8,75},{0,9,246},{128,7,5},{0,8,87},{0,8,23},{77,8,0}, {131,7,51},{0,8,119},{0,8,55},{0,9,206},{129,7,15},{0,8,103}, {0,8,39},{0,9,174},{0,8,7},{0,8,135},{0,8,71},{0,9,238}, {128,7,9},{0,8,95},{0,8,31},{0,9,158},{132,7,99},{0,8,127}, {0,8,63},{0,9,222},{130,7,27},{0,8,111},{0,8,47},{0,9,190}, {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80}, {0,8,16},{132,8,115},{130,7,31},{0,8,112},{0,8,48},{0,9,193}, {128,7,10},{0,8,96},{0,8,32},{0,9,161},{0,8,0},{0,8,128}, {0,8,64},{0,9,225},{128,7,6},{0,8,88},{0,8,24},{0,9,145}, {131,7,59},{0,8,120},{0,8,56},{0,9,209},{129,7,17},{0,8,104}, {0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},{0,9,241}, {128,7,4},{0,8,84},{0,8,20},{133,8,227},{131,7,43},{0,8,116}, {0,8,52},{0,9,201},{129,7,13},{0,8,100},{0,8,36},{0,9,169}, {0,8,4},{0,8,132},{0,8,68},{0,9,233},{128,7,8},{0,8,92}, {0,8,28},{0,9,153},{132,7,83},{0,8,124},{0,8,60},{0,9,217}, {130,7,23},{0,8,108},{0,8,44},{0,9,185},{0,8,12},{0,8,140}, {0,8,76},{0,9,249},{128,7,3},{0,8,82},{0,8,18},{133,8,163}, {131,7,35},{0,8,114},{0,8,50},{0,9,197},{129,7,11},{0,8,98}, {0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, {128,7,7},{0,8,90},{0,8,26},{0,9,149},{132,7,67},{0,8,122}, {0,8,58},{0,9,213},{130,7,19},{0,8,106},{0,8,42},{0,9,181}, {0,8,10},{0,8,138},{0,8,74},{0,9,245},{128,7,5},{0,8,86}, {0,8,22},{65,8,0},{131,7,51},{0,8,118},{0,8,54},{0,9,205}, {129,7,15},{0,8,102},{0,8,38},{0,9,173},{0,8,6},{0,8,134}, {0,8,70},{0,9,237},{128,7,9},{0,8,94},{0,8,30},{0,9,157}, {132,7,99},{0,8,126},{0,8,62},{0,9,221},{130,7,27},{0,8,110}, {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253}, {96,7,0},{0,8,81},{0,8,17},{133,8,131},{130,7,31},{0,8,113}, {0,8,49},{0,9,195},{128,7,10},{0,8,97},{0,8,33},{0,9,163}, {0,8,1},{0,8,129},{0,8,65},{0,9,227},{128,7,6},{0,8,89}, {0,8,25},{0,9,147},{131,7,59},{0,8,121},{0,8,57},{0,9,211}, {129,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},{0,8,137}, {0,8,73},{0,9,243},{128,7,4},{0,8,85},{0,8,21},{144,8,3}, {131,7,43},{0,8,117},{0,8,53},{0,9,203},{129,7,13},{0,8,101}, {0,8,37},{0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235}, {128,7,8},{0,8,93},{0,8,29},{0,9,155},{132,7,83},{0,8,125}, {0,8,61},{0,9,219},{130,7,23},{0,8,109},{0,8,45},{0,9,187}, {0,8,13},{0,8,141},{0,8,77},{0,9,251},{128,7,3},{0,8,83}, {0,8,19},{133,8,195},{131,7,35},{0,8,115},{0,8,51},{0,9,199}, {129,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, {0,8,67},{0,9,231},{128,7,7},{0,8,91},{0,8,27},{0,9,151}, {132,7,67},{0,8,123},{0,8,59},{0,9,215},{130,7,19},{0,8,107}, {0,8,43},{0,9,183},{0,8,11},{0,8,139},{0,8,75},{0,9,247}, {128,7,5},{0,8,87},{0,8,23},{77,8,0},{131,7,51},{0,8,119}, {0,8,55},{0,9,207},{129,7,15},{0,8,103},{0,8,39},{0,9,175}, {0,8,7},{0,8,135},{0,8,71},{0,9,239},{128,7,9},{0,8,95}, {0,8,31},{0,9,159},{132,7,99},{0,8,127},{0,8,63},{0,9,223}, {130,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143}, {0,8,79},{0,9,255} }; static const code distfix[32] = { {128,5,1},{135,5,257},{131,5,17},{139,5,4097},{129,5,5}, {137,5,1025},{133,5,65},{141,5,16385},{128,5,3},{136,5,513}, {132,5,33},{140,5,8193},{130,5,9},{138,5,2049},{134,5,129}, {142,5,32769},{128,5,2},{135,5,385},{131,5,25},{139,5,6145}, {129,5,7},{137,5,1537},{133,5,97},{141,5,24577},{128,5,4}, {136,5,769},{132,5,49},{140,5,12289},{130,5,13},{138,5,3073}, {134,5,193},{142,5,49153} }; ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/inflate_tree.c0000644000175100017510000003124315112276603017126 0ustar00runnerrunner/* inftree9.c -- generate Huffman trees for efficient decoding * Copyright (C) 1995-2022 Mark Adler */ #include "util.h" #include "inflate_tree.h" /* Build a set of tables to decode the provided canonical Huffman code. The code lengths are lens[0..codes-1]. The result starts at *table, whose indices are 0..2^bits-1. work is a writable array of at least lens shorts, which is used as a work area. type is the type of code to be generated, CODES, LENS, or DISTS. On return, zero is success, -1 is an invalid code, and +1 means that ENOUGH isn't enough. table on return points to the next available entry's address. bits is the requested root table index bits, and on return it is the actual root table index bits. It will differ if the request is greater than the longest code or if it is less than the shortest code. */ int inflate_table9(type, lens, codes, table, bits, work) codetype type; unsigned short FAR *lens; unsigned codes; code FAR * FAR *table; unsigned FAR *bits; unsigned short FAR *work; { unsigned len; /* a code's length in bits */ unsigned sym; /* index of code symbols */ unsigned min, max; /* minimum and maximum code lengths */ unsigned root; /* number of index bits for root table */ unsigned curr; /* number of index bits for current table */ unsigned drop; /* code bits to drop for sub-table */ int left; /* number of prefix codes available */ unsigned used; /* code entries in table used */ unsigned huff; /* Huffman code */ unsigned incr; /* for incrementing code, index */ unsigned fill; /* index for replicating entries */ unsigned low; /* low bits for current root entry */ unsigned mask; /* mask for low root bits */ code this; /* table entry for duplication */ code FAR *next; /* next available space in table */ const unsigned short FAR *base; /* base value table to use */ const unsigned short FAR *extra; /* extra bits table to use */ int end; /* use base and extra for symbol > end */ unsigned short count[MAX_BITS + 1]; /* number of codes of each length */ unsigned short offs[MAX_BITS + 1]; /* offsets in table for each length */ static const unsigned short lbase[31] = { /* Length codes 257..285 base */ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 3, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, 133, 133, 133, 133, 144, 77, 202}; static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 32769, 49153}; static const unsigned short dext[32] = { /* Distance codes 0..31 extra */ 128, 128, 128, 128, 129, 129, 130, 130, 131, 131, 132, 132, 133, 133, 134, 134, 135, 135, 136, 136, 137, 137, 138, 138, 139, 139, 140, 140, 141, 141, 142, 142}; /* Process a set of code lengths to create a canonical Huffman code. The code lengths are lens[0..codes-1]. Each length corresponds to the symbols 0..codes-1. The Huffman code is generated by first sorting the symbols by length from short to long, and retaining the symbol order for codes with equal lengths. Then the code starts with all zero bits for the first code of the shortest length, and the codes are integer increments for the same length, and zeros are appended as the length increases. For the deflate format, these bits are stored backwards from their more natural integer increment ordering, and so when the decoding tables are built in the large loop below, the integer codes are incremented backwards. This routine assumes, but does not check, that all of the entries in lens[] are in the range 0..MAX_BITS. The caller must assure this. 1..MAX_BITS is interpreted as that code length. zero means that that symbol does not occur in this code. The codes are sorted by computing a count of codes for each length, creating from that a table of starting indices for each length in the sorted table, and then entering the symbols in order in the sorted table. The sorted table is work[], with that space being provided by the caller. The length counts are used for other purposes as well, i.e. finding the minimum and maximum length codes, determining if there are any codes at all, checking for a valid set of lengths, and looking ahead at length counts to determine sub-table sizes when building the decoding tables. */ /* accumulate lengths for codes (assumes lens[] all in 0..MAX_BITS) */ for (len = 0; len <= MAX_BITS; len++) count[len] = 0; for (sym = 0; sym < codes; sym++) count[lens[sym]]++; /* bound code lengths, force root to be within code lengths */ root = *bits; for (max = MAX_BITS; max >= 1; max--) if (count[max] != 0) break; if (root > max) root = max; if (max == 0) return -1; /* no codes! */ for (min = 1; min <= MAX_BITS; min++) if (count[min] != 0) break; if (root < min) root = min; /* check for an over-subscribed or incomplete set of lengths */ left = 1; for (len = 1; len <= MAX_BITS; len++) { left <<= 1; left -= count[len]; if (left < 0) return -1; /* over-subscribed */ } if (left > 0 && (type == CODES || max != 1)) return -1; /* incomplete set */ /* generate offsets into symbol table for each length for sorting */ offs[1] = 0; for (len = 1; len < MAX_BITS; len++) offs[len + 1] = offs[len] + count[len]; /* sort symbols by length, by symbol order within each length */ for (sym = 0; sym < codes; sym++) if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; /* Create and fill in decoding tables. In this loop, the table being filled is at next and has curr index bits. The code being used is huff with length len. That code is converted to an index by dropping drop bits off of the bottom. For codes where len is less than drop + curr, those top drop + curr - len bits are incremented through all values to fill the table with replicated entries. root is the number of index bits for the root table. When len exceeds root, sub-tables are created pointed to by the root entry with an index of the low root bits of huff. This is saved in low to check for when a new sub-table should be started. drop is zero when the root table is being filled, and drop is root when sub-tables are being filled. When a new sub-table is needed, it is necessary to look ahead in the code lengths to determine what size sub-table is needed. The length counts are used for this, and so count[] is decremented as codes are entered in the tables. used keeps track of how many table entries have been allocated from the provided *table space. It is checked for LENS and DIST tables against the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in the initial root table size constants. See the comments in inftree9.h for more information. sym increments through all symbols, and the loop terminates when all codes of length max, i.e. all codes, have been processed. This routine permits incomplete codes, so another loop after this one fills in the rest of the decoding tables with invalid code markers. */ /* set up for code type */ switch (type) { case CODES: base = extra = work; /* dummy value--not used */ end = 19; break; case LENS: base = lbase; base -= 257; extra = lext; extra -= 257; end = 256; break; default: /* DISTS */ base = dbase; extra = dext; end = -1; } /* initialize state for loop */ huff = 0; /* starting code */ sym = 0; /* starting code symbol */ len = min; /* starting code length */ next = *table; /* current table to fill in */ curr = root; /* current table index bits */ drop = 0; /* current bits to drop from code for index */ low = (unsigned)(-1); /* trigger new sub-table when len > root */ used = 1U << root; /* use root table entries */ mask = used - 1; /* mask for comparing low */ /* check available table space */ if ((type == LENS && used >= ENOUGH_LENS) || (type == DISTS && used >= ENOUGH_DISTS)) return 1; /* process all codes and make table entries */ for (;;) { /* create table entry */ this.bits = (unsigned char)(len - drop); if ((int)(work[sym]) < end) { this.op = (unsigned char)0; this.val = work[sym]; } else if ((int)(work[sym]) > end) { this.op = (unsigned char)(extra[work[sym]]); this.val = base[work[sym]]; } else { this.op = (unsigned char)(32 + 64); /* end of block */ this.val = 0; } /* replicate for those indices with low len bits equal to huff */ incr = 1U << (len - drop); fill = 1U << curr; do { fill -= incr; next[(huff >> drop) + fill] = this; } while (fill != 0); /* backwards increment the len-bit code huff */ incr = 1U << (len - 1); while (huff & incr) incr >>= 1; if (incr != 0) { huff &= incr - 1; huff += incr; } else huff = 0; /* go to next symbol, update count, len */ sym++; if (--(count[len]) == 0) { if (len == max) break; len = lens[work[sym]]; } /* create new sub-table if needed */ if (len > root && (huff & mask) != low) { /* if first time, transition to sub-tables */ if (drop == 0) drop = root; /* increment past last table */ next += 1U << curr; /* determine length of next table */ curr = len - drop; left = (int)(1 << curr); while (curr + drop < max) { left -= count[curr + drop]; if (left <= 0) break; curr++; left <<= 1; } /* check for enough space */ used += 1U << curr; if ((type == LENS && used >= ENOUGH_LENS) || (type == DISTS && used >= ENOUGH_DISTS)) return 1; /* point entry in root table to sub-table */ low = huff & mask; (*table)[low].op = (unsigned char)curr; (*table)[low].bits = (unsigned char)root; (*table)[low].val = (unsigned short)(next - *table); } } /* Fill in rest of table for incomplete codes. This loop is similar to the loop above in incrementing huff for table indices. It is assumed that len is equal to curr + drop, so there is no loop needed to increment through high index bits. When the current sub-table is filled, the loop drops back to the root table to fill in any remaining entries there. */ this.op = (unsigned char)64; /* invalid code marker */ this.bits = (unsigned char)(len - drop); this.val = (unsigned short)0; while (huff != 0) { /* when done with sub-table, drop back to root table */ if (drop != 0 && (huff & mask) != low) { drop = 0; len = root; next = *table; curr = root; this.bits = (unsigned char)len; } /* put invalid code marker in table */ next[huff >> drop] = this; /* backwards increment the len-bit code huff */ incr = 1U << (len - 1); while (huff & incr) incr >>= 1; if (incr != 0) { huff &= incr - 1; huff += incr; } else huff = 0; } /* set return parameters */ *table += used; *bits = root; return 0; } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/inflate_tree.h0000644000175100017510000000511015112276603017125 0ustar00runnerrunner/* inflate_tree.h -- header to use inflate_tree.c * Copyright (C) 1995-2008 Mark Adler */ /* Structure for decoding tables. Each entry provides either the information needed to do the operation requested by the code that indexed that table entry, or it provides a pointer to another table that indexes more bits of the code. op indicates whether the entry is a pointer to another table, a literal, a length or distance, an end-of-block, or an invalid code. For a table pointer, the low four bits of op is the number of index bits of that table. For a length or distance, the low four bits of op is the number of extra bits to get after the code. bits is the number of bits in this code or part of the code to drop off of the bit buffer. val is the actual byte to output in the case of a literal, the base length or distance, or the offset from the current table to the next table. Each entry is four bytes. */ typedef struct { unsigned char op; /* operation, extra bits, table bits */ unsigned char bits; /* bits in this part of the code */ unsigned short val; /* offset in table or code value */ } code; /* op values as set by inflate_table(): 00000000 - literal 0000tttt - table link, tttt != 0 is the number of table index bits 100eeeee - length or distance, eeee is the number of extra bits 01100000 - end of block 01000000 - invalid code */ /* Maximum size of the dynamic table. The maximum number of code structures is 1446, which is the sum of 852 for literal/length codes and 594 for distance codes. These values were found by exhaustive searches using the program examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the maximum bit length of a code. "enough 286 9 15" for literal/length codes returns 852, and "enough 32 6 15" for distance codes returns 594. The initial root table size (9 or 6) is found in the fifth argument of the inflate_table() calls in infback9.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ #define ENOUGH_LENS 852 #define ENOUGH_DISTS 594 #define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) /* Type of code to build for inflate_table9() */ typedef enum { CODES, LENS, DISTS } codetype; extern int inflate_table9 OF((codetype type, unsigned short FAR *lens, unsigned codes, code FAR * FAR *table, unsigned FAR *bits, unsigned short FAR *work)); ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/static_tables.c0000644000175100017510000000510315112276603017302 0ustar00runnerrunner/* Build and output length and distance decoding tables for fixed code decoding. */ #include #include "static_tables.h" void gen_static_table9(struct inflate_state FAR *state, code *fixed, code *distfix, code *lenfix) { unsigned sym, bits; static code *next; /* literal/length table */ sym = 0; while (sym < 144) state->lens[sym++] = 8; while (sym < 256) state->lens[sym++] = 9; while (sym < 280) state->lens[sym++] = 7; while (sym < 288) state->lens[sym++] = 8; next = fixed; lenfix = next; bits = 9; inflate_table9(LENS, state->lens, 288, &(next), &(bits), state->work); /* distance table */ sym = 0; while (sym < 32) state->lens[sym++] = 5; distfix = next; bits = 5; inflate_table9(DISTS, state->lens, 32, &(next), &(bits), state->work); } #ifdef GEN_TREES_H /* Write out the inflate_tree.h. makefixed() writes those tables to stdout, which would be piped to inflate_tree.h. */ void make_inflate_tree() { unsigned sym, bits, low, size; static code *lenfix, *distfix; struct inflate_state state; static code fixed[544]; gen_static_table9(&state, fixed, distfix, lenfix); FILE *header = fopen("inflate_tree.h", "w"); /* write tables */ fprintf(header, " /* inflate_fixed9.h -- table for decoding deflate64 fixed codes\n"); fprintf(header, " * Generated automatically by makefixed9().\n"); fprintf(header, " */\n\n"); fprintf(header, " /* WARNING: this file should *not* be used by applications.\n"); fprintf(header, " It is part of the implementation of this library and is\n"); fprintf(header, " subject to change.\n"); fprintf(header, " */\n\n"); size = 1U << 9; fprintf(header, " static const code lenfix[%u] = {", size); low = 0; for (;;) { if ((low % 6) == 0) fprintf(header, "\n "); fprintf(header, "{%u,%u,%d}", lenfix[low].op, lenfix[low].bits, lenfix[low].val); if (++low == size) break; fprintf(header, ","); } fprintf(header, "\n };"); size = 1U << 5; fprintf(header, "\n static const code distfix[%u] = {", size); low = 0; for (;;) { if ((low % 5) == 0) fprintf(header, "\n "); fprintf(header, "{%u,%u,%d}", distfix[low].op, distfix[low].bits, distfix[low].val); if (++low == size) break; fprintf(header, ","); } fprintf(header, "\n };\n"); } int main(int argc, char* argv[]) { make_inflate_tree(); make_deflate_tree(); } #endif /* GEN_TREES_H */././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/static_tables.h0000644000175100017510000000052215112276603017307 0ustar00runnerrunner// // Created by miurahr on 22/08/02. // #ifndef INFLATE64_MAKEFIXED_H #define INFLATE64_MAKEFIXED_H #include "inflate64.h" #include "inflate_tree.h" #include "inflate.h" void gen_static_table9(struct inflate_state FAR *state, code *fixed, code *distfix, code *lenfix); extern void make_deflate_tree(); #endif //INFLATE64_MAKEFIXED_H ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/util.c0000644000175100017510000000332615112276603015443 0ustar00runnerrunner/* util.c -- target dependent utility functions for the compression library * Copyright (C) 1995-2017 Jean-loup Gailly */ #include "util.h" z_const char * const z_errmsg[10] = { (z_const char *)"need dictionary", /* Z_NEED_DICT 2 */ (z_const char *)"stream end", /* Z_STREAM_END 1 */ (z_const char *)"", /* Z_OK 0 */ (z_const char *)"file error", /* Z_ERRNO (-1) */ (z_const char *)"stream error", /* Z_STREAM_ERROR (-2) */ (z_const char *)"data error", /* Z_DATA_ERROR (-3) */ (z_const char *)"insufficient memory", /* Z_MEM_ERROR (-4) */ (z_const char *)"buffer error", /* Z_BUF_ERROR (-5) */ (z_const char *)"incompatible version",/* Z_VERSION_ERROR (-6) */ (z_const char *)"" }; #ifdef ZLIB_DEBUG #include # ifndef verbose # define verbose (ZLIB_DEBUG) # endif int ZLIB_INTERNAL z_verbose = verbose; void ZLIB_INTERNAL z_error (m) char *m; { fprintf(stderr, "%s\n", m); exit(1); } #endif #ifndef HAVE_MEMCPY void ZLIB_INTERNAL zmemcpy(dest, source, len) Byte FAR* dest; const Byte FAR* source; uInt len; { if (len == 0) return; do { *dest++ = *source++; /* ??? to be unrolled */ } while (--len != 0); } int ZLIB_INTERNAL zmemcmp(s1, s2, len) const Byte FAR* s1; const Byte FAR* s2; uInt len; { uInt j; for (j = 0; j < len; j++) { if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; } return 0; } void ZLIB_INTERNAL zmemzero(dest, len) Byte FAR* dest; uInt len; { if (len == 0) return; do { *dest++ = 0; /* ??? to be unrolled */ } while (--len != 0); } #endif ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/src/lib/util.h0000644000175100017510000000341315112276603015445 0ustar00runnerrunner/* zutil.h -- internal interface and configuration of the compression library * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler */ #ifndef ZUTIL_H #define ZUTIL_H #include "inflate64_config.h" /* functions */ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* (size given to avoid silly warnings with Visual C++) */ #define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] #define ERR_RETURN(strm,err) \ return (strm->msg = ERR_MSG(err), (err)) /* To be used only when the state is known to be valid */ #if defined(pyr) || defined(Z_SOLO) # define NO_MEMCPY #endif #if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) # define HAVE_MEMCPY #endif #ifdef HAVE_MEMCPY # define zmemcpy memcpy # define zmemcmp memcmp # define zmemzero(dest, len) memset(dest, 0, len) #else void ZLIB_INTERNAL zmemcpy OF((Byte FAR* dest, const Byte FAR* source, uInt len)); int ZLIB_INTERNAL zmemcmp OF((const Byte FAR* s1, const Byte FAR* s2, uInt len)); void ZLIB_INTERNAL zmemzero OF((Byte FAR* dest, uInt len)); #endif /* Diagnostic functions */ #ifdef ZLIB_DEBUG # include extern int ZLIB_INTERNAL z_verbose; extern void ZLIB_INTERNAL z_error OF((char *m)); # define Assert(cond,msg) {if(!(cond)) z_error(msg);} # define Tracev(x) {if (z_verbose>0) fprintf x ;} # define Tracevv(x) {if (z_verbose>1) fprintf x ;} # define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} #else # define Assert(cond,msg) # define Tracev(x) # define Tracevv(x) # define Tracecv(c,x) #endif #define ZALLOC(strm, items, size) \ (*((strm)->zalloc))((strm)->opaque, (items), (size)) #define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) #define TRY_FREE(s, p) {if (p) ZFREE(s, p);} #endif /* ZUTIL_H */ ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.700476 inflate64-1.0.4/tests/0000755000175100017510000000000015112276614014125 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1764326795.701476 inflate64-1.0.4/tests/data/0000755000175100017510000000000015112276614015036 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/tests/data/large-file.zip0000644000175100017510000125636215112276603017606 0ustar00runnerrunnerPK x0UT,ΨB\10000SalesRecords.csv_ٖ9}h_,a΁] ve`72203rVwR z#B۫wO_ŷ>^}sx|x/pswן_7˥?<>;y_{{,/_=<^}{xOo noÇO8\a8~^|Ǜo?^]L(L6.;oJr͹䮂F_ys)eupWzA+ԏw7a/቟lx2ay-\io똯V*]G讍!Ywq7}<݋?~O?nW>?>`q8u_i[R;!Z lTx?U:a\;!=ikUJ.PT)\߱"(.ZM&OnûFk'Nyk~k@Ykl6rAZn-[-[,^aʌ7f>X]'3_;s\;U +hG۝_W9kR%2eųͥ]*vwsRk6+o nOGޗۮ͛#ׇǛS,%-ebJKfP9) moxcVHF3k(6Y- XT7܅!e0 "Y]pkM?}~{N{%~p@bsfLٓF;Nz7e]NAg$^˼nU [?:dX ay;'Kg<ׁr[Ff}1R!]{C =+ÆχI;2;kc^|4rr 6V>P8EPs\~z /+ʚonooo7߼'^a)X^K˵d<-ucč=~3-^ut<=luR PLYr[a#aTT/bX iO7'q·[,!pвMIӔ"[K62wKQx:-(xkܵHTb‡D$uB#˟"vm~[o˺gГtpAnAp/YHB{)wx'o}{nD_u)[YV~?RcZDZ9g?k`;hH,h8*sr/2( ;q>r_PnH+Sd$wINE F=24ne0Y6vs*Uf``CF0pzg&lq 6"Ȱ9+Uv(j%gj+YoCnei4*`l:m6b+L gY歶Rx?I<6bl.&hX\kۧne , ~`U_XJl-UAr5ptڽցM>}C'gR5v7vO(W\: W8_u{aGS{[Hl,pƆciغNѷQu1f@c8Tߝ 'UeQ\ybq(kOTsjDPj?Qu n"I@ڍ`##Jƅ]KlǓN p@UTGx *cۋ? \LwKR\XG S P\<3RYtBA6OZ^_ƁO.U.``:>gsIFku'7>\^ g_X L;;.E>}w ̼:!(G_%&t<--X t[p)95>^̮ݨ?O_S<%uCaf7Q$vHe{lV;_!tg.Z=;iA{{qN3\ rE|s¾ {fB_^yP-\PBjz,~ݚg\uQ;wf1l|Q+}dH5NPJ{ұa`Wԇ:9DT KUz}|nY(tۘTh?e¶s˘6_?nfZ}XrNUϣǺL6`с0q?.xT 5AR.1p0xsW=|]K,`wPöj0O>D,,2Hv8ӏ/ ; kb{\&noӤX 5R pm'$GK)9jToGC֢=V")A~]Syg7O/\GIfr%14lARuHJAnߝA c`ƜPa{}D#A9&_HQx ~i7먗f+5KAD]֏&(@*xV,#LbjrǺ nBMȂh oj=dH h-lOg駕X.nĸ) zP)[dFUIŭǘIqݴS.E v+< ) K}.yۅI23u6ČXH|J"<|"TnnFlngT#Q? X u<*Ng K\'&D=Co;n!;xrh8qFqMϲnp(Yu$Usb(▌xl rU/0 t*3@aBP)ع"H Ysڇ/I}FS \#}oU15B2;׊gݠLn,ØIP%Gw2bO{/aXG_ݼ~06aݥ'`d3` ?h1 [~iTЂ BtaDf SpjCW('5ː 4,-2IYu<̱-ѲjGP- J}NF5vRӕ)rFhB={ޠ5E25 $z I]޳5=p(^,Ҵy-kvØoԋ 6Qz|(uz΍5g{lpSd)!ӓaA\ &FlZ.!j:^bQtV}in]] >_vghz#z|7;7ww|xƲtk 6 6V!8lɠN ~NmT61 Z{5l/c2*0 n0VXsyVz Zx~Tдn7΄n- !z"&YCE1b`cxfy_׀$2#R?Ǧ1]зx0 n\HwOmC^BtJ$I8hvkpE_:H VYtYޝ#C+ӄ}Q;F`c0¯7a̱rd,C?=lX|JJĪnK#˼NG|oH:v¦"v[=I(I}Y0Lb.L=q7%E$`:3!9#wuI.r1a[C PZ1Ƽ8gvQe9Iev7q#.81s00aOm 2=L5Dh2D*( .Kvw'J<6_A54*C!3v*^Šd rWeN<Ra X:pK*)@r|V b =s ^23aV.ea:@ISӤ vw0th%Y0 .8 :'"3 N2hF.C<3:h^bP!~bnn&ć-a26Ɉ` f6x 60n_ntU(ؓLX%]E],ˮ1ar~\pZX$ztww6>׉YT9M<GOb`&%sѼ{v?+42dCH" COX}а"i?)iik8Ⱥj`X}TŎw*y<?_/i'H<h\L#43#wnDC@hd w0gzUDG,E5L۲hor_Opt,MT:L<S8 b _&X @5to7^< De,;>FVSْ %  TI0oT$ Q`V6E_=CN>=wbpN*c2֣FX\8=IT;ŖW.ט`1?Ggxp$  Lz%,GՆfTP6^?-gs6^.+j7)sj b4@,K؉f3nzďM'\l*>n Quh&lbHPJ`Cx!EMzq--0}9%us!pŌYG[J#@%wg\-83S`L!PtE3ٗ ?0VM[I Y9S'tͨ9pR#`ޯI̖e pW?|zji|ۖ@CJCݎ-N0J |8} mŚhQ1?;XF_xoj|OFrFXQ3VScF"uQ=8oLfU=s7~RD 1r) vqWgaXP6ژKB^}alAPx+P/ܗ<\b뇯vfxE.Zư(CtKEKZaF7 ݻ>U(G&%7"S=Ho4`Z.0*cLYlEBĂLjyEk9ڃܔZ^ &7ߟRoJGčL ]t-P6 7m֍Tfc5VטU9uvs'j HN6;!y,DF}5F7%Gl, 1u_ܒN[JQUVmР0,%nNԨ- B6P٢ R'ꤐ۾-z&>fUD:R  Z,6J3}V #Yd3y6uVbD J tfȉS@zsx>``/4[ ^+Nų]/2LP`ٴ'TOPfrVZ a׺j0:lߖ+EyNۉg5f/L i1cIͶX8=+bL1+WN &霴T?/T0BGW(NS֒g",0:4vnYe$Zc܁!PVO_͞X^_SDO]?&=$)0GyaPRP1ShZSprTTȍ @ǝ-ZιU3Ģb\2g 9GZAP ՁאǪ@yUkHn:Npy,q'C |[[U>֧Vþq p!/Kh&%,ȼ%o J~9 %@`^[ si\( wa u ˨LeR^=X -؅ nܔ ^:^EUM i#]Z$NȘ7 ;0L^ZKwNMq $̼[FǢRIt̀X'-wܑfz-Pn,L`gЬ5G( Oئg ItXfz UI]
  • dGxlZ鋅38TI)f|.Bܺuʥ/%[u Z%;Q(YEv]#?^AC8 ?^aDz+žcpL,;XJ Erap#VfrPc0j5YTU,t87v,(RʵS .'29t'>8BW]&1%+R|Kbj4+ަX(a{b hEG>֫Bh99x4v@\ɺD߉πKND4/ڟa6lhCɭoƄ-FͼZ aEn-[%9Lҵ+ٗJ ZSÞ m))Vu- 깭ӴhX q@'ol=¹* &0d.a =y4aN#wQsf-X@ }kT l&<eRrol}<^D :rċ v:t1Thd].p߂}("wMc4F.?{fvK'}njۅUFB5c&Yiaס{F[#LX4-YScl͂؊#ڰ4z!H]C"F11_Z]:ϺCu_O2q^dŶݳ%JDIV@O: K]dC 5&Ā!W" |Щ濯e=@SFYVhP Ic&ehH]uJ Qt#SMb|hE\Ů/g6WUKlF7@=4AݼةA?n UzTSg-3ԶD*~R`zOp&#Zwc|x[BU_*ҥzTrpL2u%v[Z ִ8{O?9Xl1z }h2YhA{%4 ªNlwLx+ܔoj>r{'nz@6HS9vnr+:| 3ɂ$<`#;bnm54WTS6BQL`l ]:[ #t ;sTmW:'#"4ʅ3G萎4iaZGh DkRahC#v<<P>ۋjo v!Bx8_*+21Dw8$f @ܺ 4h޻NB.›$I1mV5 r%Yt5#G9( mq)bB B\Hk4?Ѵl #rL#ξ(DF:u02Cq[Q9Tf;,yymN7GpUq*+|e,)_ !9#)` 굧II cԥP'^si]IDA{7>A/+o9FO,RObxԽgOm=oFVcz$-NY~%U c_Ĭl1w" }sbXl#ޒJqn;P2KPshKud&6L#ac%a5gj+ <g>r xܳXNpC"H/GҶ\]@4@i`Z[}]D`zHIL|BY(EK1~Q�@gK;HvZ4pzFo=𽵳Ǥ@H%bHC  .F.M)=v*-6V:hjR5aXO˿* / IU"@RFœv4UG9oԈ~hUY@(5Yu sVGLQ0EҎtX̦n)D:S4D9R1Y!y*JiYkÛ'nҐRFyWv[_.@{.B2ae B1DnTSkOC6k"$fɔSqgwQdbk.! ÿp W"R'ʹ60T:<\C0Չ])Qd*c)= }I nCupkE~% %vv,SIv*$/-k)8/ÇǏ/~ g[L#İ!E̐ =k?[#8780[يU5ti Y3BAζ9}c[xvRGy4=cq0l3I+ˬ!h_,6{os] Nwd=M!sZNt !_k^1-24n ziCZ.pICw+10'}):U/ᴧ'g1dm~M$e%'{+ȅ[[iƺ F *  /׃+B6s1'bi皀 0-!^\zTSO-傳lWP5YWb6W A1ʛNab{,hˆ+g+d^k{G_$DW04EIPlzf#NH0O׎Gjc FXLyHsNnF{9l1'm/UwQ.4z=a7ŪZVe4r}R6 L0K.ݐ7X6[7Rscsas" fpWLֳҤT˧y|f5yTY"źBY%pX9沖m` K}pK e-*-9o݃ݱxKH'=3Ԑ(lem''85^Ne0?yq?ܞ_i.k քX(Y0j %6Ϩ[ c,7?GtA,}6\6v 2q:R C45Kf`Y J"/a`M ]?iM$\%/"cRȦ @P!h7T%/v {J1+jOO1ŮAhjݪXL #XĎwfqc$RS  M-;1K'D]VL MVNƕ%^' : #ٰ܊e,7,%8MoYk"W a)kd C)Z(`- u%=J3qSl"ԪT96 |6ͩQI;rLjNgc0*)R "YUz^M5Juƚi-SNIN!~{pݮnd.UCD eJ@G<:hCVh|/Xbg"T<H.2Q}v!7cK4x;=]vkW: ;ZaиO^]$ ;];Q;{#^0QShr72Pz,UBCɅ'Y/7O/(J:L2É S-֟|K+D"c~}\6v3n=ClߧNtcp*'ө C$9Jk÷AnX<{O*E`I%hsa9e`Ũa '4B|=bǚħM.e%R"r dDt2u$uz 1RkΗxڞM-fuKd!lJwԓ 0Xon@}xuD]EaX u??":ldtJ!+Isax|!:gNƾȭ:}v:-+ ?-Zևd%v .ċpn\\@X~s 6Qϝi|V&w1_t% OflqȦ"I )Z6 ׇn@l6*tYVd*ӯ62%]l oݸnQU|^qjP~bM@ΐ6Wٲns ;LD ¼, + Gdk m;F)*n.{3zO3D.]-0Y&Vl g-$i,ϳ[ ,YԞ_[X*qARt|QȕCD拌t;{BvY|ۺCGjң$"І\RP1i$; G9cAS"%'1%$B'{l;wU/6#NV%%US Cv[.We֔ U 1 LMV)X ۰'/xkIFfأ]X1wcaԢ7-@ı-94l&M .]uJhlI3Zae~u!ܶnr*{ɹ1y'y,6)6-fx..STG)Q"ϡsC1q:W绅[d,'Pr/KK}lx|պ*`~09$ cr\I]3F BS9r"UkF5oC^ B꙾ )~_ 8N!5/ xmߴC ,c3]+89l9FfxZ^ZyZxN_& o/98;G(a vj'pw%}0#ȇ7/M?3f~zҴ\cv$bJ"$I:L˜>{"!Jzp:XOdEfIx[ V4G[' 巅@A N^jV yNH_xk-+ *^xұ (ksƄr*؈rMբ`21mۀ,{‘[Rfiʰ`cZ=0{- PWa q:zo9C%z \4!{43.džʊE83տР;ﳟ멥٥JZbrjT @ hj:taRIhVjYɱ0Cxv9wjRAklqtN j 0Q3Xw’' ckڗ̼M3KKrs r`YFVp=mo؂JHH5g`#C_ZV/},gQfz;b+$(WEMnoɵ%3Mqv{Y")$~Jї_9$5\H|SXWx^,,|Z c<`AUV;s8茊{ %%|ъē3$T~H*`V+>vvɅĤsBFs<J'jMra&+_&~j-١C}KDYZr@3"yB(Y爵!E֯;Ѵ@ ?v'\D},pg h8 $-]LIYQ㔶k4<,2¯4u{Jg riǎsn"w$L}=Ī(6'ϴCȴ;e݉sy떕ݚ:U *_8e9T ľĞf$?V\i:qAni[ p+YErvO=-b'Cz"È_.94kw!+ƌKbmI-{t(xX0\+?F+)fܒGE]MGpBkk*AD BB P?40U8⤡Ujz:s?,/A(_yqmܜB{jWOw)Z,QA8hy wuβZ4ʊ%*mF@%Sh{y$S"``+2קɹ=PX; Ql<De=ݺ.u8X,2Pqk!11"]`"שb6<;<+vvt[B،? 9^Nen9[ &ILZ-WQޓ7 `bwhGv4'gKfg3v¦|!)3xfe:ǰ-޿#b\|KŸQKN_r8S KkmAo"QXe.9WIg\B/Cj ]' VbF;b|8|2z+&ip a֠Xfq1nbWQz㵴\L ]˙~MN|"戥RBMOgpʖoapE@RɅTHے~Ț:)eOvcoK+JH$((lnݗњ2<{3׊5l)(mkϴk V$B_ʎ֘M;`JbV{,ojR{ӯ)05\NI[وI'_ aWBiKg.<(~9McANZ6ʜ<\r-`21c̲S Hn5`=廮P6]XT~wD,+5u̼"T)b_1@bZ"g8nG@GiQ£qC&o:%&0hIm)q0[N*ȣKh!'^@)L==3N|c2QeQXfr7?l'X۲*W|o[<~Ѿ2ay-N3w2`REqe*KǖͰ' (}Oi;k!E[ƥKEke8f,a2WpxwrjAv`iv &vX=)g:;" }t\b@+*'HÚHr~%rr^,>ZxuO u! 炷 aݝV1\fx (LÌu-Rþ4 lӆčE˘^._,~^P=vXM̜n&9!;s=RsBf0}~V>IrT$}dk)߭/eF7{,=o$zi7"$q2a@sleB }=>4'1aj1p{LqU!ja,>{r^ v SR =x>XݬJ>඾lRȕKr~qע@Q҆!`/p*`h ATDd2*`zba3 C#G;5yں|C /,ј|9uA7"5#k0 *&"+xj@Kղj/F5s/!_{г{ J>rx;[&qÜ7J~|_?%p-2R( em4kb"Tpuӹ6PPFݘ0B$@( ДD w`_ |e@;&⭖р&^x{ G%D1![hCvphCúB+kpj.I#~F8#ի*"Վ_KYCx6E!^ CW*-*K4a}+XepJ[@cʊha:@/U_֒}/oH9/UK߱y7֫Ba=uRE=Q(+&$ij//4fB.(lCbסyo-+A/CB90lc-3odZCl Q 9NЌ@jˆBYR1T*rT3TŚ14Yܯt % 6RPYgx ,xpa-.iDP9Z+T:(V\YMA=-kϴJF#|APG)s=/a|߫Cz._uϣ? j` o/\[@WmBṼD@Wg"g=f6Ii"&>6ZɦWeb߄^qb"Z_G[tejyRd5u¡/ ],ʋQ}:GPɛ _%wGK\BךϠ,M#S?U{\9+UЍqvep29W<'CҨ7uw"`ʙqKΔ!<<isŢX >W{#k4-KC* #u籃 ,E9 biZkU,<!BRJge Qͮ ki2\(ʧ`M>3 m9=g;>%Mԁ48e F%Vnê43wLfuyL5 nlue'ߓ^ʭ ɆdsY?HBkv{_& Ί? k%D*>3O׳+e.)ukpz.rk'n˱l'ʯ1CvT׌p8VZ`O(D_MaM4 $]]m[uqgIuh%)-6QOGZ9XV_}HE^xuGNZUkp[<{ZgcK01]KO$uwzZŪcJ#`>xO8v=#\/>Kٲy-hM 9%+F*+dž Uƾ0̙GxNYl_?r⊞ц&ST@S֗2v跍Nre8dg@%Rҏ9Q79djsoc4dhS;a 85sgALR!r#M%闐%T%k{g tmCh`aHn4L_$^8lyh}zYw iĈ]V~;`p7{(XQ3`m{YYW8-L^_O_Hb)"M7/fk4Y6mNFTJ.-kEN98G' P(yb4j+־@JFR|"/fX?4ݧ6%0/2CBySi1Ajf1dvlJj3mz`ѯ^ȎVo!Nw=r]p~Dn1Sw9l/;3ⲔU4A.%ţT dO۝^(D\\ <*i&I*,kl0ovxnA0ۯ{‰]]ϱ D֟P+j 'K7Ph1WMvo/.W*-P[Pos o^2W[\hGh:4z-##zg(VO==/>2zU9<0bߥԦih&a3ʖht.E'L>㬹G̙ALăb#,|+(]r9F:gA6wqV6Pӭ B )ҷw ǽjKWj¶jEi###V=)0jTM}0SSz=S~91/kg16EV"o:7ihx.䘣Rt5xU6Oju1u0~&܅Gkd^dE!D}#̳&p#m9Ծj @#_j¾d8FBEh3^(Ud625ecy>2Ϯ|Ыi|R0Ec|-#ưt哹 ?TVdH_#a$|]Y){l]A_`__{<})ܤܜ5|ɹ㼱h@>y;Xl%Ul\@Š`KnD͘YmԝdrsSS`shRLUNs^[:f&TPIu6ԙ$i}3;d646յVP&$wTwW0Y-iþ"U?^5nO^_$@>]j.ת=%jHkצkhX}{'mS f S?ZBAeuU&xϫk&*])''o S4dlmuV4w^Rig8xa `ã l >r*GHyw0U Q€)8qK;xb" W* 5Qd}vŊZS`Nmzbt~ eY5/%/^?-&E ̡T~e {>ڌг7f7@vSKl-5F*.1&)~b5@rpi}qC"ܶ%I8!Fܭ #oK,qʩ ^+֣iGXV99'k2 KvYA]&Y[5U5 8Q-Pw mr~^sYӜ-mE Pńc\(C$qoBlQLWI9.-.K|i4nXhRIZXv}u;X?Mx-7Su2(&Aal<< N)%;hsҔ`[&|)bXTa[">$G0 H.3me>>sͬ%ouOҠNr'(xWXϴJ{7G $[쁃EUTh 0'v}`OI6AIj rZ}<B%u"2kOw!Q?j~a*Uv ~ǪbaHJI0"f}dXk'4s9,4JAWu">ξ/JTowYx6쯨VOLU BR$oۀY]@o!jT[m4L18#ِ}RXo%,WH5Yژ0Nyu}=*/$opS碞>)1EOyq?"D/8WZȉ3.B$@x ]/~ y oƣVt[zKGeyԓKAm]͘d^JaLedm0WݏZ~wW??~!&osR&mͳl?U:Kytپʤ7[r/äq~}@﬈~Ҟ­gF-զL<%X.0gz`@f41%tt8Ժ/"l(> - w-(w9q=b`ԓRbU;t% i_xgiQDz:APA >R 0 ~0.e];b^kNfRʑ{E"`iw>s Ċm{U%(@ؠ:#gLb?OvV` p@k^5i4,qbtOipg/U YSfJ̺!ïfxZV܈l~ƑޠJ x,rr~Vh T&KaUGa'VZM1h6 =Xf %jUm"dZ ml}S{p). ey+Ѭ}e3,Y,M"^@M14v8H2SasV%-%\* V־*˂l0>lWK[j W"SiBOFO\wjL$Zu_kT+_iI-~CQO@ AK ?o}*9\%h4 |.\6N*ZQ"K y))~BVZ{B4}#*ۢf,X#rq=xiPS>ePL#P[:v%,k z&y+ ]Q]aj+CS5~$iBD{Х_KK% ls=2Rjff %EVԊ$x:ĹׂƠ0(=mI-z7tKr0qUq |u_~x'jBS`W|5(jZ1SO?xkv/g _+uqPB(f93j$GҨ p(:]zi hzAK-[ED+t}жU#n,XW9_i&فg "^=6*Q Ki7Rr meQDrjm_ p"w[/3 aD;w>Ӭ>o}z#iTP2IkaLJcپ_c#_5ZH~5`z;M?K2%Wp~ ϐA&NRmމ^PC`FrVaykI)߬IQV,os#Fy[yΟJl^xH}D@pP1Jo`c+ Y9Apź0ˇOŻ/D]\eI[6\xSF8=l@ʊ%^T=lxG!C&DL\_bα6-˗`N98o H X,@8%3}DHX/ob#ϻ̨(8iyJ Pџ\eWsѩ#pR݋`-\K^$x("5a]mZүqy2s{+IUy˒b%BaG8Ɇr@.hTx u=c[jXI= +ѽ6Ԕv߻W%UG)XgeT98dD|7VIeQT(DR?q6Y?d($^yR^8I.Jg ͷ!RQ,lޝ.cG4U*arpAB$g4zul!ףu lYUD~{_htLx!?Zsd/+PU`E B_|F6=5 z2rz3ݘfȱa|e#MIPD,!^䚎/|ٓ"]tZʗ(G(_[9Fs IJA[+<6 -XSstnԏd,@]FM1W}*qOMGϮZ-s?Q՚t>7B+{*VSl0zգ2Y}Ю0,`ܥ־TTZ ʜj|lIycgکZ2M3(PԚ`;!mwn:Cn[xHw?za(0=Hu$W -)ge-1´M'L 0TgŽžĔHQp:J񟥻cS}k|DD1!Gy~>"K)K8E.;jآ\G%.TijUPJ(l@~h[(:RBBp5÷Ÿ,,(/E!ڙjjeP}!Hlz'yMp @ `z!F ԟwr.RzۉD8)-z}S77n@tpV~E&M0iWTDͷd5jg AłGg+Rrԋ RQBУ ZػingXA}$T3VJUjoUr2)_׌3mwz&dB|'8C@>|m큙UWx,8 3۰Ƃ: +옍{ q'DVYSC%˹s>d%<(~6Ečn݉r Q}a-YVͱ=?1| Vd- ~׿zÚe ei&a4aGZ,L{z֯"#2n4w|ojc%I/5c6U{=?gE}cdm_t%wkQpW35rV~dbt~هkӞV}c_*3 6"7ozJPZIi\arJc(;#iQmxV @=M qŹWA 7+h{pUxYfd|ا_KWwʑ({ HxM:y _[xeūPFCH cx3ϝiEU= 6Ia~`/fkI0SKsÿ>`hP3F.nlT˜Һg\ [)cbCW._w\ K3^0cY%+E\:mI9Pʒ^ousƖ0zV->T.L:\Rj k"HaoQJR-Քt)8kDh)?cbQ92u_5TJ|iVṨC t+*cAi:hVyID0(&/_![+T1z}tQm:'Xe.]y7H.,rDyu&w@:h|X[!{.8cGTlx1EOmBz̿!6gmUSbZSE7iU ZŊᘭa 21ő`bϡCU.!^vq8g0T| | _bApMi/v3$ QZ5 &=J4# je'$?N~:{"9ј<[GoI TOGpk% zA1c9?PlCP! \}q`UL'0FbE R"P.\T5fȴ^O'|V^%}#>+V- # AD,`W$&>@mY9LidX3- ėuit~c;Rl6j )fїNwAk6cN͡m-{W3y2b5B0x;>)p^JXl%mJ9tW9ItZ"m_GRG3"1B'}n~u\Ҡs|t\D=33'bث!*Pky63YR:TӑoE%=*T#pn'kOz5;u|dxB>[!I@W'<lY0nbԭD Th~S̵TU{[0-^f׆OP7]kojɤk;[ձ ?;1a a٘s;5N0q>(}oP[_<~ |IuHq>ȱkw gVo$B8e ϥfj(p&5_4Z?OrO'"/pu6VJ5LuT{!AHSJ}$ e]p L` TiE^coSc~Ьg($j4HFW!a/wFjα0(ږя}uY I9Z|bj:E&d:QQ4K+9:R࿓P4Zl5Z^0lp" 1ajQb}XrirYqu|H ;şs2d0Hq_Auh>*m }!*YwL>v2e~}FU*Y2\6 'R%1wꩋYbZg)ɃE,Y_yw!Ub>3T/' *=QC]ӡvn-fqu{ЈSFBr4 KZ\`ð~dxR*RUs1V- Dѧ@N{~uM(BcyV=QM}u0-b)9^Mre6m.[S%؟NON%}%bgH ΆvM1ayqLARg0KBISTF8OKF2A&.'ڦVއ۸c'_=yR@g9|t_+Fp ٤o w,9`UE ;5"O6KWuKdfBW>'UjL섷 P|FvɃiv8$ͩߏf YA)0G~޷NU3umuo޹ >ͮQg"xy؊UµX{R i GTPb8ΒK7|}kcNX5,^/7&g  tr:]RԡN%@xgdIrq=,F y߇D/PW~l53IV,ԯ_ׯuCU%1d>H#ڐGp+M5k9 f>LhLߍQϲ?PU_cJȄnYE-븒e\߇*UŊl$>VIi;'=3ù,.VïJ36%IudLd.*PWHW`y!G4SVu rV,x 8Q 18[4rl6psk*RGV%I6@ ]-`FEI Yzw@]YP&V#WqWV'CeX@t>_mεMDb P r#ZPև *m+:^{ )uhS YOq_# Xx ;p^JM*Z>h.\ hh,HSOGJnKrxrfS9Km%.cѴH5m]P`Q#^ި M/dbaGo6֟2Z pQeGNnSV[v5\fOz}Yd$ `^~sS?g,]b"-4Qeظ9c io=CH0t>_z~yx6e+K&֢gg5,^;jɇFW YndqKMCC,An $[-}/;D5\vQ +Tk벫$Ja3P)Vv΢W/2/s;{q5`^y9N2/)^aj)^QPPʟ_'e]d5ZQoswlFR_&'J9X ujn]E")BM%jUAɓlhة/hnc&k}@r $S_O0s%S4++GZ(Y(Lbv_Y2 +|zt:Sk&Xmt0,NaZ%fӵ2]/RDUـ^&€2+". rT˼O絞)*h :BE/JH}jkziMN~HvVY\+䁪kBHgc qJ,bӔXDV?b]{ op<~J!ݷPevC^+ȚQP Tn yFيd>%^'Kf:Ioq XwF`ڑ[OM1g"~Z7QE?z?[_P/'#x},",UDxi1 ҲK\fݶ=[=M0Ò#,l }40yy'ΰ+Qa:+/"?`X?4yP_)t0Z`rl#/OJLrLm=D [7%Yd?M9CTD62Mmh`hcp侠$ WTC!M s^ Rj>c&[9"!5jAtHcIP}jw5C=bA%V+::p)ԕh˖Æ*Aط$6'ɜ"/ZCl6׳ $*&0R?zq-MΕwUwۆ)ՔaHxe1Wl` ^4ԂvcQAK1|IRH́#WAe12^UI`ql6G7N( ^M[<&K6jj is7|Bw[9 G}LxcwA\ameī6{笘ēZ>G#-mM4E5-Id#21h-i7s%R|!$*^砂'[yNMf r-LDdb!*<ԧ"eDHDekzD 9FKO :g^2~ IB`Zg 1+PVuWAì#e GNoyʄMwN$KN'I6B L}zvlDkEk`? ߳U)'SܞU5';tdP0cЊ!z8˩yHS`^GqЉHHdhFW7SGm'(q#A>[hM#`R2MȒQcף;j(0;jy@,g~kW'>giܝ&X ?[0vʿ4ZbWv;%O_mmHElSUP2Tk0T;y<'Q6g]%܅vL5jYE?͟yZfͩCPVk_n/D=a٠D?SwD4=zT2>m pz[ EI}IJLM0C\@} @tҬN7l55ջCĉG܈mOE:hc1zuɚZɇJV:.hV uMWE.1V G>ATDtr96Uvlp\TT|dcU#ݖk35WjyHP  ~DPҺidw׻xz 0lK:@In}SW 9\%jBSy3L'9 l!,l!I*ssLأ ,Pfz&:^*:<7+Yw:LZ = 'CH%C[=Mx?#T2 JW?^M)[]M!rqDDKq3DP%F먊|.#\gɮ35^%(胉duk3oAAR#Lw G&Du-ܗlWPd]-nq/~U1\C!%!2x آ%<ūǎcYԸ e7-$BGpskVك99 HIy j/VBP`KT#3Qt\q1=az|V`>m0H6M sy놢쌇Ya "κ#ԩ^V?RP@-q[~5wo@G9 [#*q50C,@`Pq Ɋ e҆) :#PrF aHBȅ~zב&As,kll]`?+rMкBS<Ӌ5IϾعM6RnG|П"AK|Wb*,h9I'Wfqo4j8.h fӣSSpDuJN~]^ νg 1E&5~+j9 5u7TWĸdOBz0"gϞ9}}6aA5I 6'WٸqDK7 kK˅KD rPr*"/q. !;!N_PE Ier/:hhYm1~ R_Nh{v>swvܟae4'c{-:ZĴgjYrH}Rtx'q[Q/_#$C9#-hFB !IaX Zm@cZMȟA_, A.sԢPۦ Us&ww~܊tLpƒldotzACu MnչKO=jסV0ITʀroNll<Gdm%N(5yD2S{L8CyU3vwNUsKU+#f?ʞ6=(1Z,4{|Tq" _P{[<DUh~=B=a V> ҫՒ5fn2ßXr J7TC-pVʒypf^a֨G]OC}R8(t㒃+Wf*D[as}F*@I_ &)Zn"YrJuW_7Onxrɺ z>q#a͇nίlO\2nu8oFB Po{8 `J]qa"Di׽ЁX5§Q >mJ%p*|9v'g3r,]B *˃uW=uQ7L qL"~!8W; c7{:nGpU4D{?xM^zژӈ>W9cZlz,铏CeJR?gEχZ&05s 7ǡ8>6d.`3!e$0)0V|iGmZAEV&ߒDT.̸Qd߆jA#9UVLqOF}])*evVaMko݆L_u)@c):mmYYq&Ӎ>+rI>瞉w BݐdE+`%ak 5炅/pO%0ĚcR+'1a`%F[¸Hv'xpd7JU3J`X`Bhj4oBQ'pRn Y#n5L#pj|}S|5S񕾣vHx2hiX듟L3PacZ 6-BH_[yP2U=װ%cq8r펞īk! M4G_U|?`H:egW]re3"D)$ gS\X袎baQ7z?N[2U0Λ%zP9ۈc*֣{蹩*x j ZLj|xN!]ho Qv,p'%JC&D(ywa&_8*<)T?˳NG.U:LΔ 6X EY9BD.݋([$TPf@.:%B#Lɒ$ dv2GD@VI`j:P"ЖW+gS*g{;n'=9u.(䡾ɸDgZ6eJ5;̤c'KnZJy[-U='r =3U/@bZ-fG忴e*|GMEU~jw_rI%d)W*q% XDEJb_%qEDdĢu̮uH KO9]jOGB5b8հrVl3$Xn\Jc2|`CJ';/,ë-.;>=.TPง=U#nqwap~v@՞frV{3`r5 R gq%HY]qA!l aF` gZ4wdqe3"'Jz}PR?ސ3՞7{S&|NTg-@CcnL ]:CLȬ\.q/%v (ȵm{g㵰at(«6#$J,t6}LjTM`{fpß1p0!CeS ɷhدB8T`Kh"G~~©YJmpYֶ벲̣-sSUKNw 46ޮz?yϜ] IYl\Kdos8UˇOYg78⸺,n[ &]jkVx0<[Sw>Y/Ό":N(&VgFϊhQ FS&]gϣ'[,6V>Om'[$AQ*>"us" ѐAs_S4PrKQsxɽ?ͼ ~ iIQٱ F/Zv9˚_Ѩpm@~Ujz}n,qr˗' (dF5d,3=Sop4 Hd9[@)5$C cV3б4Y7@g7ALhյÚQ˧;X +JK`%R[K.B ֔чPi\)q邬u78XRsXI4x E!P&p02̈́onS2Ω"(^sg$y D%7oP~V$[\)1L@ E>oe\)<8yBHU0ݽGzhQȅ}QG P[Bu /1'4|}pZv/YwPAuX!,Y ĬB.)9Kt$23o_} ;Vrۧ8b"<;Z:,FK}0q+%hbN)}Ϙ10M`{[i]=h =f"Qxź}̩C}7&˳IEjlVtG337?:/3~7g9ϔ'3 wZ@M^cLP\?1T|w=R {:pw_SVnFyQ"쁨_mnBKƷe -T%%&4:4P-VNb;Warx~5Y ]zǦ U?X,HiLɽ7,"(r:~`G';}0\%q0Rj|C{t= Ymښ24{VO"~Y b$ ZG fHH[(B ,q;]50\MD} d A.)ň жf:$j9 p=ۚBVf;:Xi8Xgnf=hUtKRRg ɶ1BDl^߼29a BQCю`]{Qp-Ec~\&+Xg=RG GV ~h:MP2l KZH?ePcoܞ놧 [H$B ;kedg;mxVKaZ+C! @_0Nfd,%4Gaڭރ0󫑶OEsiӓ^qac^ɢy_={@e|}ѓ|1mH&Q4c(ᨙl ah#NE/R~S 5a?{ځS+ _WU)Ӟ-+- Bt2l)&%-jazÍ  uHcte;*ك=\:Ҥ뒃ȖQ:oQߓ:=NC|nηG{=c̕1O%K^󆤁GT䢾qcFbdсqwc0_X ԕ\&^fWAM8l:UJW'e5حpYrz[ؖNp. Z&|)}FF#nd؁( E $eJH*fӷ[cZ_YO'V;/sƲ4iPB vY^z>\p{<@ZW{l\ܢ4/I!jZ~3w:Mz2ۨA~H(sXtnqȚZ6'jh %Kc!%}f-Ѻ!FsgZ uSmɜ 6uJ@~yN_?&AVuwv>pF4f_}LF &΀0~Mm:)=UdžCem |Gaj"؟(}E.9୊jj.fﵪB:X(($"9K>FZCJ_V|}5_&[x`e{ N@{ZX1%G{ ǿ>zI]vx3; @c4s9YS(YLRXw"#g:(Fť0rG׷PlO's\Kɍv<4KR({z/$knƚI|ziz˺ߏ:CSW6ڕD1c]DݯT0೓ ]0B`@hrΙE9{KL'HնbBCmyKPJGPaܳKƪHlT66w%XIJlaY995 QĄO鼕4„6;Z̜z[ ir/|wS=*:]srH yNƄ7Sq-5rqӝdJ:/GۖQW?ѐ<%iK`|(t~-"~nk_TؘVCJZQ7gA_cKmNZp c͒\OƂ"5If4Q}Ôժ}|c'xcP`п $Bŧ:9*9&5p4bavZ;R\I}LM 0%GXv(:X*!(w6o< W2o<,VGGWdF#WA\ؔ׳Xo_};<=bٞ%iY71H{; EBxehe@7kLlN1^v܎/d 00mؒqr[s4bif vA#X4}]!l2qYs%>4X_9V^9=o4;wEٟ:iG_jYqQ'1cd`~y% f !4Iu\ M2&AĞ6 sp{p{`bWĤk䊭V i\ fOל|;74q@2֥0hYykt'n.#j]a0ʹAؓ4ArPIthF˄nlb{-go(҈{e_7Ӹ ̟7vՅ3>aVUm[d"u.8B]ܧ4ƥ"[~ewr/]d3>Gr>&Ƿ*qEaBdZ.J1jY$m9i,IUSQ.pEXѻ ʟ jH*_JwRfI9>xEi,A)% L7­p(ޤOxG3"횠P޲&BSų3N<"nv chC;5 x?r˄n1 w4nHN J ]?OT旆Tbh֔%_ٌN%g6*I=P)[T(ܼ8ck/޷uB=Zy`v1իy^fT<S(jqj˜\yzSmsRו:7fp/Yi_@*w*m'a'u&݈`O %/aSh\w$Je&kOq(1S-. [B5j@>( 6z6G(MetB c0+1咩iE.98\?*}9,F/T'Tr==mY!ka/JcV.uȏN)ɭ╩5 {. NޕY,ͫ݋j^IPt*Z7G84gx$&L4rWRA SgQ@ kC̛_2aYr||L tNө~U}L*;³.~2`M+0cR UwW>oͿ0C5w%2 "S:J*蛽>g?/Nǜp{PM[l&m*!7ݔp?HZNsXd}cap{4u;=$* pTɷ!}:%RvB&QNT Auu.e׆*g=j[۷K@gj v$\1]8o*xx, t1Vl C?e7'_V1p$ rrY=CQ']C)EWqѴ4ZOs6 %aUQh=5DՓtrn&ogy<|i t4CDp4yMQ!nRFz9PА_(|0;O^bc:ZA hHr c:wgPD}vݻ&H˪[!ޚJ%#0x G']S'ea++ho_O*о܄gܲR#񳒐#h=R̦(A,]T;<RF aq hPh G\caT2;nh){oize9=}+xKmXp5>^MvaJxXUhX=^MYAl%oLRnLUsh=;`~ &Q ߒ[M/X0[hS>Jz< UB-F ~Wl+aWٺ=02cLEsNU7w!>-70}MzlM_%>Sd*ap5pwJB GZ8;Z|%x4<nKr+2P}3 |6J#j0 ,oBgi81(K@<[P1v.^aXjdټ%]G`2 e %{UfBz!$\-%u)SQnҸblMBrg&vR(.X?\'z%P$J8 "#PciQT]|>K&"#< Qvt,C(J p%)G gb҈EE̻Xw9y)Xf-O$B:{0̜<=Bn#CiR7']=*Xf}PיM{)%xaGKlsɤn&nYH1?-G=^9U"bsRI帒l:<mj(Hp+O{Q?,`uB85tu|ػajH@7|K'luI241tU o4[7*Jlym*BQO<ya+%hIp<ՋׁcR uL?']t0V86F9l}r cݧH5b-efM>-{QNU OqE fm"scB첑[KpUN\!P.k"ߟ KE9Ap;k{LT"ЄMC4eڄ|6{$ OSf1uN-ʸw$gKo.Ţ v5R H5/V 埍v 1X̜mM>h2#O0t㐈 ]09$g*j3+ye'¯Ž B5kH,{&b%}s°ۮ(K7D-Vp<(ͤX*W3_"h 7{XːYoL@&O< /o~_r\樰{OLR3=00o?T5Q ge/ H% l`;s9=)?d'пx;ť+f̎j mQ Ьajo&ϫ)0բ K*v41#V=+7"qbDΘ>ϜG;Pq[+bgfGcCբJp3M?5d Կ3,(|AA:X߹GpDTNveI xϼꊸVaMD!z5Ab Di#s(N_ dUMuKC^ >j}yFԵA1P(6vl [q>DzpS l27(6p&56f8 v: "I{"R0?z v8ĉɞ3/H cVUP0YZhMSyX~kHTm n hqg0Ba50$^8%U6㛴#[[o0a qP!9>?/ZL!dieۑڻjd+!tzٴ*)3C*A&j0ݚ>2֝j]<7GID/ }4Gh9;;8ԊcQ 9exc BPZāX{SA:эq,1팏;"zGBE6_$bTe:&ϻ!ct/J&abĨ%і 0-X/bid- ~CXx"'e MڊbD@Ñ)ѣYHk~P:@@9nq 7sۤ,,vo~s=v:kL uvD cl7ԟE.aBJ/HAc!Bc:oZ֟^7(Ѧ7 !+ACt' U WY*SfbJ};FTns lO1]G!0q^BMRF^/#`8G]%J;y1h tLG b]r*tIFQ%7VP)raja8|JIʠ! r%P>2]8QT=5ZB#F]SX=4M݃l xog4j'kJ<3:BKG 1<4XH=~庿%3 J?-"dWYło|2I7+l"J\hv`Bj/~??Z:ro4 +FaAv,Aڏ P1ZA1iz$N CN&0}{J2 -#U%^EE49CZ^izŒe& ֙H;) ("=D>>r2.k&PҐ.'?/|dY~GДT@vPL,̐R Uec ''He;(O1u 9E׋ъqD."`bo.4\g$DŽ(#4^l5|݅*sv551 {% ^( ,[P677_(Hw4&@aǸ3B]I^ HhǜVp'7SM է3tOfݙŅ0oPء=D>(%HB ^A5@qW[A,m+;@8=VEjr34k퀇 n#WeZ((7z1<2Wt1勄2 yn.;'NqM+6f R<:Fd``0@u'4A55v`^Ψn5$"p&rb32^SiZrVqqA(;=Q]H%釶2͖ڭG!жJ.+`wmW/RήnAZ2Lu\:Ġ8w:kNC)-ukkzϲ*M-c -6QX?& 퀃4.T^Kί"U YavcY/b }5cr,Dj( /d?$Xzܦvh6 5!Gu}嬚 c^ggDQ<=k A^Lx 2`7b;P?8B#{_ =}r;5R1wQ -Iv=OniИ!Dmߟ ܍I"rrX|vvlB_N37$š&ܞgl8Or!%ZQgHMe/o'xt7VJsoU.݅ 9otNd)H@~GFY!뮖Qz󑚀?~In*^]PmC ,5ͣ]v #,E*S0H&=AєpYDQVh{xBZEl1MEsz ]FZk-[䭻Ƅe n^* Nk1"N0y-FզܜuaI=̢S;'Y4ec#)gDwi-I4zE**(Vp@dpZ{HFVLWN_%mYLvДoPKC߆1e@fmJst&4^: a{񣖭u$ TWDPF,9oO݄&g*d@4nɺ ACB$/;@&V++v=]RRfB}辊s2v%F5:o6WG8۽׬Whsldib#Z9B n_ݤc*E49?9|uD2&^d?&iL GJpMopQ \QP% P &54?!?{؂_(R6aHSD*4; 2-a7L} 5<1gpFQw!!,Xag}a)2FR=?0u޴15H C_aBLN e\olWbI>f ٯײ$3! #4XZ!BPֻSy L)Q}EP&L闞(4Cs3q(z ExD+dCq Tp*ffQBΡ{Ggf3β«bz3豁B/-qnk8Yb\#n!PrZSS f0}{(N^5ani:##/TF%#~=Aq:sWq \c\; Dj l{J7MJ12Mis`['1ϣ &x*ɽ3O+ A!ࠩ2~YKN DR.+,x5kEvBw8uI]9$.,qUPa}]A2 E-AbCoW()dZU@G>S8cm ?bymh4n,R> pܐ' L}C=~R2Sh묆y0tʘ#Ϣ!Ln scw&ي2c Qͪ1fDUJn@pWi;U"Oȍ4u݀FGQ;%$&+I}ƿ>9'%1^vU1ύE~嚯us?d=(@kG)) *|r~8t'uzrv $2 ?iwE\[P̠$MljT[,BFb 0HQǗ%O'[E :-݇ " -iikxJw $a㠾ˆD -OPiKek7>yO 3;j2_<;I=ShײC qZDlxf"Bl+MU\b D sHa=46 Z(O΃٠Yx8{䁌@W!X`Z'}l6D4G R핧.SM+< B? "<63q|HGH]QFD@ø{w^t?7`;gڀAO~YG۱7j)%L22C0ޛW38(It\*{T&ޤ -vn[: 23n)Jatf _ 5.x|ԜH&-QAm kn >ۅNk,𚷀:쵊'.`Z1(H*"kۍf3ÈB1*g@eGg$o3LY7Z:5r3]ta|O$w6.D-"g$PP&U(#d{J"_gLĺV(Ct2e hZDv/t1w:J;hZf$:ڠsNRň$*$rܟrf8Z8]2b*l$_jlhꄉcVWqlFT+vS%]#(Z7ĀP0߹O!zeu%:Qe}E8kN Vđ  KzaW!ؿiF4 4w?>,)SgNpHz4k`=4y\Ϫd3K_t*n\~d5p"JMaQhb˞&]},vh׬ߢS2"gr's'Jm7~ӓ)oL׆g kGcB`B_X[ZdZnp'}]WM)7:0Om)]0q. _LjCd8ZT8)nD5[׍SJuJ.jK&([`05kc"__?3Fm\+ $AdW uT揗as"uINi uWn&7`}t' Tmgya,rՄ_ u&,3CP_ƪb:O]a}WؖÛC,@AXMF? L0Uły\sj;X((ZV'͢0 u~ Nנ6g/t@C$Z M29Y^}MI 2yw)걿fB}`JPt^uCpBo>ZvLkO=ݤ]CWHB8,D\uJ.i6qSpIYƒԗ/C JX9C'V{c&49Rp4KVӿXYv Ն]t~ TzI#2 0λL]BcV'Sj1W duՋr'A 1[z'' nJAF y 7$G14/0ħ`CRK{ 85-HߚEC)H#a<rdbJ CDGDsȡi ޹|y~8;)%_o/hpDbQn*_?a:3y5ۑ$'Ύ:_%_MS3y[dӾ,!͹wN1dIHi թ4I(T oYnѰuDwvg6K-<|'e B$'g"N*Qia|<MYpTaN]7*Cj.m lh&'G-P  2bf#ydlnL=WX%qKۨWȠ)1K]L- T[b7T堉;SlmÓP|Qjs22OoƜJTcd0` EG G.)DuS3=RD" *ax#VJK×H"`򱰚"t^<3`=r7&/|8$צrN?h ]z.3MP1ʭ]ކC8&䟷+ uTv޾cVEO6鼽țUMc'8٥9~(Sp3G]\1S$Rp%.Db(gBDwm8u]^T{mQE4]nNe T'5* U6T֎:=PqQ]W+ JkSSQxA7Br^CԝGLF9I9CzV9xHRȲtJ;Uc —_Yu}} 9;v{*8I}N5]p\ Y,lJ$&Is (^*!:23&u7t6,UMKj%P!b&-iS08xFإ`QBˤֹ(aX,Ơ@D7Y/_;Szb19WtԬp#ixeo_>[3cr_{cZ{:^V@$`R7;xx8> K:IwLʴ4܀N!וQhs?'f[!8Wti`qJ#{Խeq+ؔ3oa6Q fU\GRAY:H=񏏑sḠsxSlhO&1&i]j&>՞ *=Zn,|TFd+gاE@Pp\4wKaS"LREǬOoZkX$77-͇=45tx)P|kk|VW(n׷+t{gM`; L}M.OF̗(`dO΄:`=&Q-7cIX|z+̠ҠvƄFH3F걜B<2PL;|忱 I*L@'@^J ;1IW@5N"(H(6- TG"i%:mp]KAX$zL E ʎїgKIrONF_Ԍ^YZ=^NC,44v=0h}H@8Bkt|fP9-J)m=/}?X+%@JVkټbSzz >Ov`럟-)sh=al^7,E_Jbǵ|9)qTN#,pdI" j((=|94ܹsvGIa՛*ޛr#p^\-%cf-!LkU4$dDGGŠ'm+7t܎G$M]g ΜH&ٞI B0Cq mfNi/QpYS5%=b3ys O=@ &wՅȭ$/7>2x;L;j,4KADv<%څ̴"-*_.~uCPv MqXd+dn- ֶaAN/^q"b]k{ tbOI،(0; HQ Zin7{+]r3W?ě&8۹׎|Җt@40C G`GQ2AbG*p u}js̔ V}ܜ>]To{,zmGZe V$g'=AZCt#D gɪw )ٳ`u.A|3;BKy͵$Hl.Zg7JN Fz^ B9KGS$1ʌ7aa M&]$Na=?QQ"ܳ>ݥG1s8r$&uǺƢcD ;g).kB{hi WNϏi2%~S6ҙymхWfzV@Zf9̙cA%lJђlN1JXd6!3ptz)=^V'TT>*`u+{Z`Rd 8YtS :\$0իԺw' Ŝ\==9N7ت 15Gi;4!ح -vOuh"B)_.?A/RyrAFTsCQKUe'` &_^:zhEm "@Oc y=Y- mȇ<] S!ZRz}p1pg026? dtBBXM℔v 2BDc;!C/kb:vY !T9,$@H`G9'CUC lt}y]u;f@4sE#<<&y$P1T":0.်4Pȁb"·Z? HW*3I@Ҙ-)nҘw{p eE:1\A> Z}5~8Ҭ:iLg[@zC 霔Nfhs{|Zn 3ֆSd'%ƞ#W*TAxsc!4?Bhj;?wTYI]kr=vC?I~ev>-\Lo_J)0ospɬ=K]1,yo3-梉23QN$7@w`e#|{"B<LQkٽ'z6;p&}xguwS}m;=ݘe -Q6 8u3ny$1E@̓!jOe{;RqBVH> kA^:!o-oa!PŨaTWT#=#6| 6XRCYz=t[OVQ+r'ٜqIdȉBlȵtܓbdNM'JOY@RJp6I:޳Z"/%4ETI<0o8#$b1|fryF^U]c1M L2l.BH3yr&|ݗW[o`Ycat@H_Θ' &Qj.$&5pn0HŬ}m}[F#ԏ|ϵtB HQ;?QK{Μ:<qw<1uvo~mB9t:\Ez( .g攸m&59p8q| Q1!p3, :C=t|ǂA⠂6]_KK_&Evm%y0*, T.vLL('Y <Ma9BV4۞X۬LFC؍FpSD/ Oqtҹ-`v e뭋^x4i#o%z=`+O/9ͷ7|_dRFD>HRRTz4~,vnSZ "P4h%]K7-T|U`8Cg򋆲y`^/Jy79ã@^ەSh.ZzMPb5*ڤ€ hVzl^y>+>`K)^ "C-&:n A7ucXArD4%سe4JYt(!8k4r7֩"1>yz5"y{5CDkyEp{=7<%܄չ~4ZñXx NTBO,vO3WZ4Ot:E+B< `\C~dE{5X ~):083O62漣ǚ*XjC͔̔)>l<7d)ɸGYm7u]4CrdELx9@^Y S4M>%PKI:NgO א%Iʤ`"{/f8G8k-fL f큞4LX/rk~TW21gsaCZjMfjTr 葏q)T/Iڮ%3%%'a4_HҬbhOayqv@AL|h[bw sAa]zӰux|H1pCŸbtd)ֵG$OEp[b bBaKCN ő =R0} ;$]g-G `TCu2,?3e7D-NeC根CH& og͌"iv`crm8--j0[{13RK.RlPexe+̣;U% Х׷EWv.'37Fij"Mҙz{ITwTwLFF49Ht:JΐzƦO) h]pOh 'hGfUxoʔ4Wg!b @'->$^|0mͩ rbm0ӟ{]U@dS{Lq,艸RKB Pq10ańA[NHߧlwH[g}K->x$H@6kpSM8b^3DbX[6 (cSgryĄr`I2C)RM'Kx RT2r`};B~ K_q1(lWFXryt1}1:$CqJ|l=ɜ1Bad#6֗"71a*Te#> b[L3Uj>z&p>oPu@~~>nH2;ܾ']qFMLKmAa(\qK !'[C=5=rMRAtt)lUOeюShiZbj!N$uoɄ׆Y;XggN#ay?L(H"J{mh\4yH.gOa#0t44<.O A^.=G9Fu%ށ/AHI :ƃ[L\v -@$uIƿ/4:D̅9wTf\pn]'W)^gĭ.FRHLEQ3{N'eI5[9:,? ~kFZGG'O2]Xv1ꬤ_?_h^ݔ/b$Uˆ}^u-Cр{VmCQs T ^ƻU} NT6-V#LGE.Tbԓ0}V:iã ASOENZ=_|Dߧk 븃,2WuRּft7TBG򪥹Y3tV+MoBd dǩGH—9(!ՓB}GIi`1fAQujhӕzB#6*!84ٸ=/h |HI>I}BBU$8nY!4M' 8%E%zU?柨,Q0(=ʪ9d Rʺ+a,9+_$,.` '3圈byur Mi$qGR=:"M)Dba~ { <&"ҧP!Ņ:?}lGABÒ%'Ȃ[P+`z*8f*QV_6pnkY7R,a3ˤ=3-;FK/ҮEVn]~=tnqIkFB谛KNGkRE"E2'01Ύ&$] g4ihn=L%ܜ! Uң(%Qׇ`t]'+we4l94}JVK_hҿl?vw] aW4IƋNSi"QY?C J'3J0XX`L52H /xk~Df lj<. zc=b!*a[}ɤgLP&{1$Ya/hހ{>:ǖvyj?п~96שC^Q+ cbEE&h ?h?,h0PS=1H!MѹnaaM~|:L:Mnt'Lr:Rk,25VWeFڈhAL>eZl=O,~m>CN*@BR0xkX}1~s45PHv;b3L` ɌN(O&WTsFz(i]lf~1mS}}CtibrFfM :ia ~ڵa KdnE~N4F"8IȦH:(+bEW$32#JtRZ YLV_0RL@JDNټ87 4Î=uM^ZƥJD@[F;'ڔNM$xdv f1RvC_JyQ mG&AH,l5FVxcC;I\<Ƿ=z8~;VO9}mO. LlAt%ԛ%VOi&ptM!,]dꛣo6u_,WLzSPy#uƈ"lY8h[s,*!%&s]Tڤ1{pWŰ"Ay;cOti"v Q%go~\ zKb<!%#A+ p&uZgnK1 ڵ^\&ބLC,)mUn@ʉZ}RAdb F &&YecCn{MOʭ ^sR]t.ʲHupTؙ}ԆZ|DdI iC_aZV h9%ey"99#iLp:x%q/dY@JM"K<< jBzoRt[6]U(G1t. 6g9y'LkP9UZnm}=KR?qU87bS;4Tna/hu׌ʹ 4]EuɘO^/EH;JWMD3;r$K24Twk1}IF6 ٳo|pPX v { |μ6PťDȻҕA)mh&_fyJn=%!ӸvVa `̨{`:S`z֊b+!ɿ+5ehZ?B^3Q=>JJT|0U2bb6dQKJ-Y60Z5'88 DC l#E<ܹ?v/$EЏUl9xsE}{IMj֞Tpxʿzfk / ^J6>;GVwL0)1!EfJ}³0ֽ LDLm^qQ)~0 u'ƛ-B)|03`Z;{VK^#~0]A̴vdo;hY)$8 #uEKT^WeIrzR2C #낰s%m, ޷gYqLH@#6ߟ~_zzCBuh&tB:5і3ttlpVwVnEׅ:NPcQHe0/bD$Rw>׏F I2B&[=a/YBUwva怺FZiw/Ӝ=dząfm/d n<@V)yd4 -_XbEX!P1Y 32 7ҁV Pfw9gz%䜩N+0Ƅ-%ڽ5krz$hX2 %{O`l+;$Q0CGvPdm^gb, 9 $ 2#LeIAYKkB00l\:+b~eb33e DlQJڭ0'cBfǒSMSʬ^JM|dO|F{[JBbc~X p̡Vtr9|J"%RMktp? Q!_82WzFTǺ6 b|Ӧz^~'j<-͐~X@iݙT=QAt~>uE2ٹӉ40LhޅPc} 2L۾Du{+ 繢H"$|g9dJ.!áufA<@JCU ?4Z{9&D˚Bb`^&7(p^iH͏Z,c\WL.pbMtrhVwzɖFo Z;V>Uw(־G,)KhS MmY`5Y9KֆȎ t̢G#яlD|c1-H8z_XHU;M %~؉vQu%H8X]%>09Ijr9[ A/dq>d_σIAzm 2Lh'SEዓ.+"V@"MUdIx/eQ3+ Ivҡ(>gwb%i} ]Y% Oئ-ڬU+q>J,5YlBF/msu6l9P>QqP3v8^7-.]qȘWW>̡*J/1 ܞ/ ׼,YjpLēm2#1"a]sU8Q& SJDJUPRKRZuH6Y)ſks'6#%3f&ƍw.QIe&48hڨ&#{ȧ?{k`3Ϫu;_w,ǿ632U X^CZSٯkF Z$6d$2:+䵔=>(:?&UC`b?묖`lX,W0+{cD0j)NyãuE!*:lG2YFhsLL:WS$Pj^*yzEIr |Xk/iЬ'sJ6V.A튇gQ*J%c Wڵtmt'kJU^|~~Nuf%f4InO#{_RX}MiVxdOnHAOzR* IqMO`V+P]vmk5mǯ)M3g`]*S&>2v>a#l1W#ʕ,;Tetx}:`zSOQklJOfFu)A6QNDRc[哐^ytWL곫+otlq`Y5lBs~cXb-D"HWV4 Mf-PO, )`O:[OR1zȴ<.&0k!X/Eb& K<_'5I(lYӰbҿv}ӵsd60qer }: hm7c$Gi9l6 \# w "o4ag"뀣kS!*9Ly;'h.D 3Ǝ)~!KopN DdHDbUDguD{G͌Of}fuA0-ǃQ_Y -,!g9O<6RБZO\# M\8Q\8%pz$mF"-Bm_]C@=G,=չLm qF4> [w'ZE8!?:Nj0tF <tFt sCs깬T[K- )b ΈhĀP !nZ $4s=c+z ` jqlm:ĢC/Tyn0GK?:(:dV޽1i"/"b`K/z0mWWذ*Nnfځw6;|k]>{62MδKa`0=c_TmcMϲjA[/rRfRt s;و9"[B4bA,J9TE=4AFJms}ʇDsAbWt0;LITX`UL9qQ I%5EbkA0a>0<K͒vtߞ+P5顁P٤ 5I ˨9/y>/(i]m쀻{Bue_j2᫑\ae Q'k]c?ZoM] NKh ky%_ܲOzYˈC~PFTKZ}0|A#Ī2;.ºd36B܆u'׻RJHƬyP6]#e^S cdtwS_L7hBAZC>5GD>{ D6bdtr,xxN)7I|%Mz&qϏ%4n[g$|vz3Brf:kg~x(xi0~RlJvUD\P vtIUlR$cG 炇}#bMi:^⵬J,bݤu^E?_-OY|uYDh^Br*R"&"4KC[Cc!cŖe7,;eQHn0ЋB=3@2S> b{zS迳R-NxqtF_ 1A]]?պ]ᜟ6a=SI9Fǵ 9'"Ĉ#ڗMv;Rk}E]m߾(3 QuvRcY27t*+$ŊXʹ5 GQ)\VAG 5dЮ1Dp4=j |%(A܀u85$Y(Z8&wգl0Ũc$Tt|y-%xx:! "W\u lv`6~+vF@6ćo΀_cܝfL9Y}3ЦjprҌu"NW.$Ps0p:`io Y`]OM,CÌ$堓ހQAg87L[9KYJU * K~W OMC7?}De{jЦ?1e5g{lkǘը !w_E$պշ%"KɎ6RTx'o &+< >/Y蜌jyZNn7_*G0nNm=gxMgr@TD>*<-MgvV NV.UmRvq,@6 .{`jwk3CJ| gglE*nq2'UT\UK>i ́ X8;Tm)GYu&\:i=8X\<Ɗ<M;LFFPovMℯ(!NztfI|GCw<P(q>Q^ϞنPq&UQ3ZLcs21R.Pz"!v84㚑5ȴ?S4VzU`XzӵLcɏa1+Vmpf8 ! ʌ٬j-EsHɼ0ѧhtٺpsrD1ǹ ]wVC4/v4ݸ`sD5(>GpiΧɵcϒqy}I^e>m3iodet:_:d ئ԰A/}# SW6Oh {G JSXsw2ОRCq*Zz4^*Г~ /rGXÃiv3!O@h_29j!\Bax_wQ"%0Lk5VO9Tc{7E3T+/ԷUi™aMMϰ32ٙ:"wXE}]D%boK,Ǵ:Hڹ ٖrU hTSJC[0y4-D)\Ef3^faa^E{o oiYf䍈{{}>N˹u/E!kzoHt4ȡ8ݯ~*Y>8{3k{A􏜑 _mU54<7qȨ:qSw#d)U Cn49bTS)n~y2x6q\KIk$v'MZ[vT1-sHnBij XSҲW`~<u9aTlAYIU5'EF"l\3P40cܷvqOr`&8}Vثuq6b&o;s\*^>SOL:T÷&h8Hz>!ο)4xu"q\1%7BIұ2c$teJ.%ڻ8ÛA.}M?X`=M5i؜NhպK |h73baIC͡} D9[17(SB|#,E"Z0evMؔI5yV8E$L;!Kψ1:KqPd0)5bwHJe@񳱸s~X$){Dfc$@GǮ"R6$#H2~5bΞ5CzK}E>G0 پ"2 ʁ'22C 㛬ML/ _Vis]0!&2'džy@`ŽN<}R8%I@~fȧo>l@oar269əbEhFؘH QP-x{G73k;hGs1ɳ$\;tgU58Yf\ Λs?@^M hHfSx}G'qTE-~[̐/'C`3׷P>|E*2zAKA*F#ԿE`mYfn9Ր\ 9 Ň(tA{mnѸۏW;xd5WpW7OF@76|utX, F2B=p-B`y1hk"$#ϕ:©^NqGhj7}4m6W2'5 [!A;~ \!3cP(Y@?R0NoT֚am5t+z#񘪫 ")>|Dd3ǽ<鐆W dеhhѱF,i2؊͘/_Y lQ_Ko[O~GxO=?)8Ģ1Ln,쬵rty3:dfV<[G(-dоe_/G OV8elMvF$JUG(?6F)Z7p>`̒4;"AVZ9JMDM/V!>B -`}ٻ 5F|eECU`M:Ya`Y7NPf۱ &Ml %/I<%BW!?xXƈ[M:Iܟ/W"yWĸ: C@X^DbcoDΆM&m8=:[ו}MfJs*""{8^ {1wS+T2_=J|ACRy>CR܈tĝ}/^>!,bU&q)Ah4QpLn 䴣=VNb&hqIA7H9ZvFiaêJBorP}Yzk0}Sp_l]WYC>y܉m-pvn84jixGy8 *D\P"'u YsoBa^X*S:7>/o'OŁGv=ɮ<qu 񃾑Б[B8G[GA$b: 뭋?ߢXF_v s d y3tM,y5}_ܫcBE: Y 4mX6ׁ~'H%'}-F1|B7''Gh& DC1ʄUmH0ؑ?M!S%H4뚍kIM{eXӵXv>okNosb&Nsd @wI5 S˺ex(QQ,d3,}bT?C /p.Nld+!a(H=EMMK5裉gI:..>8Zt'HZD ~'nDPk[ݼiˆ.N 8eDvdG9Ѹĝ0˘c5q5zhNfc_d% *P%]:A#+ƒ:ìVL_,آHCIv@G QX*̫[ΤQQo@6$k6(1> #)>*VSwW IKk&M{L)),c=.T9c#!reC[~Qp/ n"ln>TiE{zɪ:5};GD4)ThCwx\@̝Цe Nsb`ot=qKa .ܢF֋Zk}T_g2'R26~p }=7⨅ Kֵ_@R Y$!Z cWZ,^lG EHاQq1kRD$m(YoT=xTB5i^l\:$;ot1_T=J̍1e#3H8Z3Z-RI;*`a(upN3Aӄ[ԾԶ༅ =p5:O6eRX0Z=OًS NXwaȔ?Df0 Ѯ^\f^d匩oDD#U1Yp&RH?h K;)Ka\WOuS(` p% 4/DŽa0+HȔT}/`8XGlvYT<ڼ&n5{,+ʠMp;~d7vF=Rđ>NouصpDM¿nZzV=bZjm C_0X xHg?:1ܷ~W:nB"l29>Z`DؠЮKzÝӭ_ӽH a \s&( ׋z V"%qHU,QG_@`&9(JYÒzZ/w& M$'?fHBmP{}<)hFf>4w,;iH "n4eANZǙQk/FJq [G` fY"6>N}|^Cx-~JIYW'|I.ˏ9g*Fxڱm!AriN+pw uArqƎ|ܘi2vHBT|pMLE Ve\ #QR <`\xͧ掜CmZ$!G@T={cM)C&0Q {;oL UQuI͎ꢸ1 #Lx-.ץnY< 5 4H6ρeQH .w"~菣1~5mAO9@[jy?$,̒3XlCn*bHehH_å\LHBaÆ;RqtpFg;Q_:[sPOs6QMiz'0%BPI\\Y:LִxhJv2ASun>7)rKhsەz[!g)lIM! sA{Kt{ik@F?x `͐[/ϸܑl XMYvpz. goyb-P< zq)\]YTNsDگtՊC"RgKFeZnUS➲$*U K48ܵ=F0*lm틹%%wg ]E;OH"ᅲ-x> 6!a1]|ϱ*$A^Ͼ=vDĉ56læC@sYwv*$2Gz"K$ׂ[9?1~tLVZrt O&QIUhI6.ɗ߀eפ$yBaHXQn TI*A)QwFeӦ&C'&*ͣt(yS6!}2Jei9N"rbf~L.s-Xg3((}' 9u~jx;'2؁%HF^#ú /2W%fC"=ZQF/0o&3v0f:-.@L2Hv5_kYVɘnmy|[چ0#'/p80)Ծ7"Ħl+o />Q'IjOw_}EQ\\ 8>{Qʹ6 @RZ5袤-N/ZK";~OHzѹ8h`U4Sq9#Rl$1.)kpƒK'µqyY)@<!yϰ~[M.CWaFI ifI:R=z9A.IyO# uF@hf! zᘷ߾ƝH2=Q8\@?R$I>H&pgs8l:iDFdAy\diܤ|\ qljik_ak@BإKMaD1AC,|Do9=\3KD Y^#EB:w!"12N/RF7}.{D>SzAdzr/t$<(I aP{ &l]7-r-e7!^ђO4xRf_;KrhBA`?yܽ'N1Kw`̺DFPϕ25#[{۪0@fA(*$ $IL䝬ځ_y%"p9K#!rd=AS4>b;JBy$UI\#}WsPr8 ٟryp ٚ#p$[=$$];=gwUJQR82_d3Gk OVt?bx#"G[+f$ۓOpۮYa(@@LK=`;8Meq)rk "DTnjh|),[pݙ!eT A!ԱO-C>0uٲ1̄v9AB; V.ψN~usj9=/t ǣ)bnY5hQd"roy\Sgb3fW <"HM\J#zb!+5|=%bQGtfbX^e.ZpAŲO<`Oi9߬3r+<Ƒ^(I|d|sphG6ѽDzLJM9X4EI !@r&mfŀo9[!#ǎ9#(@o,x9w] ^:赛Si:u/S0CEzwک:Rר Hj<{ h5h&"߿@mApح4kg(f+MTa$]G1 lL?cf j大Kz<7ȷՎ{ $ş9q&( h!:DCKW J':ZP,W6HO_2G w|?Z]pYh'3l.bqW0" Ԡ({G6#ObD%0.'BW%h k(%N~(B܋јMgZW57}Y حR鋁g  /M LA2EtHe0*0H A^|}aًDRǎ8W]1r^zV+@B<h Z5ag9 VLLОu79ˮ&[M2!GCA1\1d|{_t?puB-8Ό=g1: T08G Ydgz-HٕVpOټXOwt!jN n2C<ܞx Cdv㉈eL]>I3_zE~iu ][ϸR -@J` +u|Qq-\:ڮ" u~O$^7CɔCهo Fo[wLK\=RY 󣙟R8Xy.9ԑ$~Se?$ *wLTkZΏ$FS3Fz[>KgdD4l wlPj;(Pbb&y g ،sSBdQ#Ċeͻ˅ن^@Il YDD ڙDe14mܦkB`1GK( X8 oAST+wR~œ jFxD.zZKY1v yC̄OԵ&!3]X@CXaSAߋmR~E81hÍKhv z @ټ.EDٟ :犑 ?1?gM^v 1\d#]tD=Ae$6B9Ka1}0=.1EjHj?]|7 u)۱‘&3~uԖ30 k9YzqM36`EGN? M'@LzA4XA? @u'o>]b)8g*"̂@+%{oSXh)JV&)3+<1 &7H*өc1i<'kM0jЀvy, wR_7?[PTIzs^Aё ̓,rgJ: Ӓr%w L>0q|r8rLqMk!WOw$,}ӿ.ƖqEZ";3z﯁(xS(]GhYّͶɱV{=~ҫbyPÌ Uiù>r(BA&3:\* L :Pyc{4s8?IuBTCUjyyI?5NմeuGBcb#FAisәfV<ŗ %cLcE8\#Qz/?H:W 4,0dcfmh73}0yN)!EEWC/mlq(ғDa^2zQDʎ²FHW)dqyO78Cls =X/}E$l6>pVLw<- w#c5ʕks=|~_Gȳh׹]}r7uwCQa>R+$^Uuol 'g({֗ 4%lS(5h9'U[uiwM%yMi(m }'-M9pM{G&wq8rݗ8te!* \0J{< <Ɯ04s {O,PaVބ2={nM>+p#w6=>o><"^b XNxDF}yC",oۓ@Tf\Ϻx}CDFA -(H1bdgNDEKJ-MͱTNЖ/wG7'o^*lc[f#i PGNlգTutDHQXi~{;]Hagh=n2Z:Ex(*)G!"hAW=T@~B.éowhl-IEky CtCA ސv:A^|OHC&ШG'a/N,7n}PaXI'xjzR(]ma1F\_+]E5o|aǾw.㷘&  _l.OyaW+KND1[@;3IWى:l[iG8zN`y 8Hh(F1*m45O}S 9T[°E?L4;K-EQ s'}[F°1"^ cvgىDu95c98!WB6, `Й6/aU|,gsq<#ipD xd+%AEha0靣Ig/vH@☀CɡJ}ޚ$I\w޹ D5rU#$2I 6 08,Y$wV4>he3 1f$ M/,y W;3FeX?E!0"iE.J`ז[dڸGUUBjŷs>41ηګN26fms`s$^0t'0iud ;4i2;q8h.l#!QMyu$E;0u]bigǶ}s{*"chڥ)p42#}Hjv&ffN BGКip6it%)Ee(<n#XJjoC90A3 '&Fj^M!:} L$̖0h=&p/2igNYĆƛnq}*.q>ev È^rI}E}0H7#Y& ¥jGbT2 t N7Щ8J>9Eb:ДɱBAkI%y>>=e=h]E ds]5jb_>AKH *vaKcK5(,3B~E,uD$˪]mo-+Y-GDc/+Rg<|"SK3YqL8Uإ,Phɫpl߭Hyb_.QzP0oĕr?9 x)f0mIQ\zѵ峈5^Ans>~%L%N/4&Fz)P&OŪ*tgOSp: ņ/ dSמ `+l=] S;${9_8PˈuH,u3X˂JrLT8xUʈćr ڞq~',tg$EgD~=ZS?`N,j/ν>Dq~5ؾ⷏plHnPA;(xZ6WU &seqn֮2dFW Xps*δ``HiRm12[}V\SX4; S<Y>gE$O?"hOp. .yp(B`X8?  1W)YgxLN*帤`lsٶI$DwzA"`.cGKk_=OYi'-RsQc'A4v.Vmy40 ݮ8ah̗5ӴMfM\,.ֹaVnWװybpΙ*vXuDz I/\c)\@2t$jyzq-HJcɂ&;2( /!R!CoJ+_y^5/I1~ wΜ-1jrL?U53<#ʅP`opD ]C}jۛc$mv.ӛ^&U  1d%ON]\p=VfHS/4Ƒ#ѿڨW 5 6`tؖNː#j#D;FmkD ښtHKK`lbkL_; s´vrGN-RSTW^hbT5֌z'O6ۧa|SC .Ȅ̘وt{0#dtI({1%yHvN|~9EҎ30#vJ@MvNP] *XRƦv$`fsPpyAa̒~٧7 eu,!tQ:4{@std7mξq}2!l޻;)~I0%m)BRh(>Wx;T)Vjpr54 :Mf?ٟ2<d糂16ЈO=$kѮm{,y[u% lRq"P'+̷WG!ƛ9͛@d KLLd8EHOGZ9wJ*iC)܍ilZoGɧCHD8G>I>B#Q4l^c8 k_c*C3S9jA Hk‹2'xHE2GyMzy_F=U8Qxks'Y*ּ`惾( yFNMSa:hᘇ9] 9BNw;z|Ẁ"af"p* "?.aiTr}%iH.X2sL=kFRDz~y5sz!3pQ9ߌqfY4zIC ):OoPLn7KQ35"~quSsxA='"7Kmlm[7?οT)jش3gCE_dÂ[u]MKʯ70*6FOnդ?`DaȃАIim/μrX@ẞX?n. KOYn/8ݎgIkF`eD2:k <%N,aep^6t:NPHert3])vGVYיO'~8!(9C*NOkhTq- j2Ls0v8 |2elfWzDӓm@ڀf/+?+r!LBu^cx֓AN(7_pSL)-k*B6 8ruBo HZU;N+oK}9cwKHh$scjQI7}M& N%hZ*a( xD_,bT8 ;OY4L"F*߰*)(9BH bqLRFǑGs~qLx7€`g q<#qh[njB>shh.Ո~7uծWuGb-ϠA[opBr 5$4\S؃׹r-A\;Qő=80$ -I Ǻ?mNzۖ6RA\w݉@z1̭Apr4 2I.=&B;+e# '߹>B=W^ *O194# @;-選0mRLkGʊ *iQ0T_zbCpx=pk,r2=-{֠u%ABԊ77av )sdQAc),fJn[Zw0P29?`FRag#\F{wWJo2l6ÈQZgbxp&ȴ DJ/{ipjq)#&$ 93+eCbYP WzW9nn:QǘRP]]JjejJt~r|IY/' wT@Fdz1H(P* GnY*'d+FnW$e qЋ#ۭ6Ŕ@0W@P X݊^hdٓyT w.m?ҨGwZH9O\EĎ \]` NXS2 [L)ܻ;V I9NP cfR<YAi6±@DTʶQ$':(H *ՑY}fc&NWS3xÞ#S#F/ؓ|8D=|yoCĖRmV~盅r您@ʑn'c~ʎ@oRr_5 ss А|74=-Vvt"aR/Eń{+fZK FpyO>j[*UnKb8J|7a1F IKz %4J%KYnq}K j,ʑ,=O \Fm!t,&&QVŋFB\oOMHL/hUQxgevl=I/Ax8@%S`c}_XTMV7..BqIwci ERLc-},k?LDzqd;XCL#FJQ ;z+/.pA뗃`"Jv9lxN&.FGcS*B(@@N쾑6[gF"m4{G?7 j(%"8"[H:"RR11A*7uu7Jr рdmEppgPJPbF"]OgF*v,\q}pf.N񀊎M|{AIXj4s5p!B=r#YĬ@#7w'K8 h̀ _引0/hjq9L ؛M"y4kv 6 ۻ2o a޺N;y[2 Ȉ\ gW.C01{bU/B@$^4Ղ·{QsƳRV8F^5`,8(Tjl#,a,wS3ԍi Sc狾pO#6u<m3.jN!C(J\Ƀgh~[-]K[#>O}f:_182G8r& d?Et@#S XTd{ur|EQvKlS.ׁ2ZF&(<0F~%h>6A1p*Hc(b7W8wBf^H q$?1\>5̠e%<o2H92 6}g떴rON|XYIyPIy46Z?_:_tRɔ/D(Gh͠1nn]#A;/bfpJNf8LݲȘ #D}gc-yIҝ2ˬqzܸ)(QB|n+2X]\bV6`ώeo:q7"VmtLSGN+X<4VAd7Bf#Z;4M v-W\9d# @f`.b:jŰ/|YS|{Uol_ɝ{<50(=ClTg U2aV ϥSf2U0>}qz)!'UNOE(kzQ8G SfQ5)3u܏9?p ie *>pa\UϤG"f썻ct0lxwCU@|$EUOCia -,Pȣ'|IQw/5O":7k->DCs)} #Wi&-/ _tSFd6r΁;1F 5FK ]SJtl.E[-orG:#/Y8 !EKF,̷2kP (+0} WH9$^-˱sX=NZ9.I2a : dU/n*&oX7%ߧг1GXG/ S :3bx>hd[5vwM$BaLEߞʮ n*~29NG N5aN0|&swk7@1bL?:bc\z:MZ'|bȤ'v(o-aH5qMHEঈt7Q+"y< OGX \lv'vMDF#'㉬2Ìu ㉚] LdI5mhu@g `ӗD3[!ĤWs7L:*s{QS(,1&ܿW㙆jh"(@OƃrF %e+$aWKLAYj ]'D0|iӂyGTPژx?۟ KfT 8u Çu'ʃ_|xtc`H5LsӁL$!DaN~u}7??3rr cE%"ìx`CAkU::+8fP򇖁 kg.UOxOY TQ}5n_m5~ aVkylc` ԺZ¾ 28ڞB!RuTN_orؤ`kܴ5YrOv}Tvu>f#':P޺^yH 5׶\+'Z1 %y!P0@a|z@*7#tK/CSYs3,h;! ̑+:v:{f&M8ٗ\tjp5kL*ȪA0FhŸ&BAy{uoMIPf^q'9[;m2dI5.WȕcvyL`eE;4a_EdZWu#ՇSfۿ }E='Xan'( <.3q6Q@AVm= d9dn `쮥>TźI.V#lcz0/&L OdP K BmSp"8;hN=rw)1# {6_ (FA(ʊ:BlZ``ҰzRrta&flc@nkwVGnxu#RۖR'Q6kt' pb aZ‚u#e~p)DQՓ+mL qut&0d '۸Zj7l1w;bYlZq[i([/GDG0CdJ iTkAy kDOi'"Cӗ?3"TCl4o??]EE& $|&H2!_nk-HkޥGӔϷ@Q8@{X-b }p˼Re-^2W{"kr᢮dW3>H5LݡVqF9'<>/!\$ʾhN BzˌSSU=Yc0w>"pj]+jN, *t S԰ԊY˻I^ wG?~?/$Y A-c&Y"5!c㏤Ţx\Wy3 0)={/$B癢e-Ğ{W@fzVg!"1cш4PҘP7a_N>3E0)td!Տ]v\Fꦚ^EMF㷠O\cF$Lܕ2Ket$LK$[};5wGYTi$KHʗ%uGX5yׯK|r$-BɁ9,QoHgh-@3_+d>ĺeآSWXM 6A)+>!JBd̥un'!!##/HcvY%$>aZ3hhq3 Vl" 1Y.1cIUozdR_}xo#1=9mKgӇkx^XAs$foEE#d9YOd FȦ<ZΔj\$Zʧg3=f@ k+6+< [)J"t/bW4c~zsK|ӈ_[ű"g%*;jy6 >aqzN#<Px h9$U}D?xٍ[Ӆ4} >84lFǖ|Cl!I=VKh"F=*>O~{YdaKzeFvxJoAf'lUxfpBmV^r6Q7C>nB)~>˸=MAdC $M?HX"lĘGń ^Hh&4exɦQ}8d"S5d;d#`"P!7O3,mP\wS;< 0zn߁ĴWdx+hg J?YΛ^TCr!Pzj4o^;g-+NjȜ -0/ }zrj=zUR@b?IԄڇ:|$zRb== :s0 +0r?sTf;+ G퓤s=ڼX,%N!_ ^ucβ!0D*0R|>sɖ&il朗7a*靖E,* 1ttTr(1y#uڝh2ԪxHhZ#a/mNs >,bp 7C|H҅IO`!kӭ= A:$cs@Gw%GP0QDx͸'6QP%;"t(b}^nbzg9²{zz;oR%ƇwzAJ60їf!PŐ/1d͢*0ѐ$dk.oPr^'' @bkmB+ZptZ,m0R;;ܱeR'q*e@&IWuW0$[vm\5p`OCPpjky:G//~'Kh\m`cY #ctjEV@-ax)g̢_=U>7xW1eHѮLhֲ-"Me/}+`Ako98Ai0'ɵioOf`:E^XQZΔAmzV v_ ;Q\+j#"/rʄȔ]vM98lCSݿ3F.E DZCde#@#ZptBaԒ*l,Gn?_d6"K / =3ueOk73I8GbB D p0R $ E c[`[IkdlA23HKC_<$ck3|hFiqXjMC.0&3*(mV%Ƞ@hNEedKF\~{C6aMf6\#S  xdBګݟ>R8R֎oAZRvɱ:./RF\\S9/1Ӯ'0jMxg{s4"mb5W&r UaqM_y=[ o%zaCAQX'oyw-))7: v?d 7::Y-=eϜ*Ǎ!N@ ] sJv3Rih3JDp8iWO< eFjypEϽF~ff!̘L€O~b +͹f8>~f7w9"Y.$Gi ;k`5v^~F/w. 3' e@i #0:6wM6[6L.~oMp չ%5{yo'1F@迚(7EȽ|z,s`Y̋29Q*3dy@u)++)%YgTh`^k ؁,79&؝Qztt=x YYfĔg(rh|9J3%]\07VgA1Bh7C04FN2 &G]{;Ii wQ]8Yqg,FTQo\lC%) Ket9iàӏyk,:Pݿ͝41e!8T=  G:xN)~e'4w7Bوi'Ik@ Dvz >لM4'<[N0@8" ӴԻxaARRS~VOңzmkPaQIΡoMiM#LK)lfo+qF8څKcHP! 3^~|IMfۘIkoW-Zo!`_s%gg8Ј|`V J$ӷ b\EL0*Z"! eh̋l@!RVjuٙK%DuZm G/2)K.Ŏw u{.c&e³qߤfȐ+n/%?OP~l~yIYRS.<$25,4qop XccC@{pv* \rsL6F+^@Y@C@^C H#)CŝG,js(Wh/B @K䀣Kz}1R!N#'LWvEDح2ȫGm~@9Ǥ%v@t1M*zĖ rІJJtR:iwb288ŽqI@uhƗ9\QAa=3g]p Dт8o 'BAFpÄ+o7 9ȢI9NJ jDј v{N{T̟ xɢ{|AH.ҷk cs XȽIZO:]r@:=lX# r }wω3iTBV?듆 ߧ%@ I?+QIn[ԙm=LC>*AѮ)7.n3ʭ(QEPM3sTwJfL)]&I\$_*VvH5籽I ^JC,'KGdvᤶ bC#zT"@٨Q P PC~wR x31ZD p# >V}-~ꮙ4 ZmR`fcNmPkځ"ݸeX%ae(3gq mkqGR7&duMh!֒F|D84g)at[ {RFoIAP:}@M]=@ *(RP B ͊i1tDZE|i㌔MJ CY˺޸.EZwCAPߪegUȬ_'21a03zq{1L. Lp[ݰ'Rnv8KL$*jd݀cz>6+$E;D<'y蝃.9OKFˉdR˶O!ޏC,QR1#7fIKZ%m63Z]È#[".b<]:`-<Lr-|822[+LJ厏C8'-^&Hz )LEVx5q#AKqr :ZXW3踌%!C=b%!b/f0c\zҴ0jc%BSq)$` 4N̞1_>_nT=`ɮjUd 6@,Ⱥ"u瞿=6t F4E16nh=\?41[#J,봜o=15ΨI^\S(5;-J( Pc$NWlɑ;AV?IǗc }1@Ƞ%%:NݝQ5(n.ҥw{Sh=PM\I_DWڢP? %ڱI!U M4ހ8fPB>)ؙkh` G$5 wǁ٬? T"*bzONr%) Zs!ݘw זΘjNYAoзHUTze0 c}%$ eq $c=A>$K9PzZ5!`r FluN괵lH(0$?J ;q*onT"G&&8눺ڰS't'#Ʌ}\8wN6Ģu+gqJ,!H&^@>|Ev (hV?%=!3skE^ Isم$ Bp|"ﻔH&jLn 3mh@/d&N؃6ݲۍRՇUZUiQQ+pn*BلM0{+xdlMfA =L6,m8!ճwKj4y.?ך LkMH^ywoqCwYm2iT?Dlg$q7ũ%̢&sիCڸ S x':g>TClk'qUv^˺Vui#,pESYD5 6 {`FwlJԉY#`ȪK6q{,X9Ss}`> (3llo++dշ4.ʚme 豌DzNkSp\TU~8$ٻvF%Y2񧤬C(8ι#qyFX]`"M!/G3xD\tVS]`V".JfO?z@-ی@ˌI 3aBK\ImLhg[g+C"L.{E ,F$%_ކQ2 b;`l͇~5x󣕲:}@/ |y5#) FbQV(uϹg淕1k4$x$K+7NS̊\]3ӠE.1z>"t/>@qb /Bk5 F4>)+9g|&Uv,GgtFZd|I1GyMh^u?rzԇws3+N@kGIU۷@S#pD6+(dK1?$7)q n=@@Ds!IF2 RE5Lu7TVm^K5`$d\Iyˠͱ\UT4QD0j%th̊y.#^ Ni2 Ǚ=A4 ]T%@Fp[Y1v_lb0^ZotDBgTz? C !pb!U*'|CĞ6i9jq[HR;~HT(<*|נH~)&F1Oa9Y&(-jL62R Jzޝϫ\ \\"SBZϕ,DQ<+5#Sk4S,3< 0WxTs71©#2#f7kIھz6ra㡆KYUJG%ru sc ń!hr50(=K:f0jy4;Kh ,u.n7#X|GppȄT2Ǥ:4CGQW) 'BuDQd'Acb8tt[@vc'i qtp8K&<"K)־D>bK\_ ;ʴדAd8S[7߻&- q),*/%NJwgje)+ E!pl;E?PG1TwۑxײMy6)E9BY{LXMoNw )C\x!ɂY9z}.ԃ\n}f2n#"W.HP*g=SΈb{J`q }VD% =6cź@յoBC*& š3kM4"LId{>#Y UE9{p?Zxen| L샭D̃>T߾'4Z:hрݺ,EL_,dLMQƜG _QXq&h͊6K5 n;Q+g?(7}TzX"3͗A(DN1qm?o׉SmL- كenoR-GE4x8saXPșƜ}_6R ML0D0G6x/"MQÐ- I$ɴ&zztkFƝƌ^оm3 SqV?kU ɴX{?Z[=/cF &>ǽP־)57m'#?ddEf*HPxX(ԝG/b7vG]Nil]pܺ֜ -$pEզ8̃ BJ!{;Г/B!r4{N{iŒ}3ԿpQlG8Y]Št#ƣٛbh8㹘1AU iQ[x[Io&щfr VYK?͂Ӿ"VzlާjoA<٨aiCt< ڙ_?) R0LÙԞۧjm3]XTI~^i:א  ݦ8)uWn?Ȭqd=oO-#Pk@eq&29nc3nHPˑ+%%cƅ2Xګ|sTaNcms.r* %"TIqiySj 0 }_f1 Z F@jmўkz.kD;LG0Q)Vb-& +\U,~~Hݢᯯ51ftsصÆNA#MRRKɹf 0MG#%uFG}EH(9wJe`|n{<Y vǮ4i^гЪ9Jsw,_<A,ߩʱc*aLxU34q4Rqd=-Fi {2`Mvѝo1is4S%%n[XWMP񅳕NqM7U !e惥OoHRf q eDBYGC (4٩z(#s鋬OX}AsX݋țl|sh8 6 R7E9AʟΔ),e(W}d RVҖQņދ2t <$H9"^aBn-(J2 ZIF2WZiPR)B$LZg pZQqq B0stBVK27F3L {\!ULL,=5ꘇ19ME$Iivr)^D jS[3#I2C?U<듈ϚB18ߊ0հ6b#hH(^K}/Bf]ILR/r3Wֶ u+T7>K IW@lj1`f>#xfLKL&j`gm-܁KK y{,`C `$pgF dDPk9f*6:wQigܮO{k iQ0 UIAj_=QFW) ,sUtMA(NG=l_27i]R &`Cǡu'W: ]4G#@T+ A /qc=x rᄉ`^7@ QJtQYGpW{rٽIHYf'dk[K?6)Nf{}`{i¸LOEW3mNwO\/|_3X[-P}|5JqSpBv`xeq/pk[wp)lu q39Nit:4x@ 6kAzߒjXk.BW@.qbxŬuu@te=L>2% jԢ=Ibf}t6<){4<*:@P]ܴ~ p$ 62hl($ Y)C-/mR:|5'5.-2`EhkbዖP!ʸ'{o>2Ժ61um-bnXOͣѷs3i vP/ ٴ2Ke"rB!|t:t2{Hp|;w;fDץC>o=֓vP/NX1Kt=!^%[lMX |j F` Vߊuek!6UWD|ssTDfހH |\k.$ 4{,)slzOxǞrC)Y_Z =Uf%ŽH>S*.2}@@`xdN _ zhYGW!fj֑^\`3P+5̠dR}ʼn22Y{LAkYC[ܾXȼAay(rS! @#dS}<${@LuY,Co6f= Pr%JϽ;pLg-{D% Y{* :J-=zW-Sٵ|a{anM5k>ں"SR1)R 8>y2ʫkJx4dQ]95V=ɴ}MLi_L1U4n*`SNXXo=+ ZjHΫKe㌋ME:0k ,fW@-/FTE`z db׬A@K9&%_6>g9iJ=I0t]ikOmC5xܩ^U8 D5v8цu覥bۮv΢0-CԄSYeWIGQV*y zv \A< ,~\O`]C&ڤioL>e dR^_S!1U* ՟w5קo*baajDk2k$ ˷kDnzOGaH`#u) Qd%~п,2gݘed&U~j&Zb'DZQì^_n12f%3˴‚:г#H fS-?N[ڙ"Ar] vsg26yx\;K; _cJ *0dMź!ͺ>nGY$N4_?Ùq X/R6`2Y6;Tk[j&~GP҂oFAUU;SCcʪWN^>2 ]An2gA<1/n:(w19mc|o;'+nj-۫dԣ& R&}ҁ!cW͝Z&"Rg'>w3ԝa1k`mkc)HGl43m#;F QO(F"zNL /%rGW`},Kùl+ rwwߏI|ـRKan9 {$;8>2i ͪc@(]Іe!VQYo̻} 0blL餬FWj`òGOG)'Y@ײ e82u8\$C!݌&8%GYb1ODUqؐd+ ڜ*ߢ 4j3Rhu 6! h`/shxWfi0eM$fUƎ(0. *?.x~:,!vĎ !fˇeG{$IFNXbSX$/CӁIĭеw_Е)3MW{\>p7$UcyW #?8M(1$KEF덮,X%^0zTe(c<ܲܪM'Q#i0 e9/YMu+;W!#7!@a""2sFOm$E%e.F'94k* !6*ac#b9٥W!YoÌv)K㒋(ßF`>!nڟO7hYcZ0"ձS`ȥw/'((呃ɲɠ?WPo_1wD ދ%#!J rGIO!Pʧn1t8TbT~p|WO/YCdHE0yê?١Ri0:еl{0v 7<2()vHtђ FQsy*l”pӅŭ.c j޾a޷.;C ?lѐ#{?:tF'\3EbQSbu\G>O7zR ɢKG?$Kc:yQ0f^¢AAn ݴ+a/DZ"FWB2$F`'EPM꧐ڐk|@`D_y*ۣc ,-s+1Ck}I) ?C;6 I Wu8LVg`=vs6SΞKi,z;iuWba(MDLG!) %f-L4w'jwHJ.n섣){pPxɚ${{9B\%YiGg?ܺ906!ؘA{'mAG m\s?K+˂K;>bV' vC_}n{ :"|mmKHƩc-*^yA8S[̴/1@šbG9dwZIZ#O(׼받&'b}n;1çgV 9z`|Q8 ԁuPϓ!ͧ-_fNq+ch'^LO0&QK?E+44@\J lyԥ On4%?5Wbl@Kld$L Kd N dJ<*Ě&CsD* Ult|rRK83W{̈-aA%aK]>F( xNTfu!/^7ntⴶd1!1 9( K>BfCP~TV;̂).,?\ޘ&L=:dYA?5V'I%ai+Qá6|n;[BBۛ!#Ȃqն|nO ̲BA[hM7 20ؗ"jJsZyhv),I9$IP,y,?ЩVn| {T#ecxw?y!GHO@3eMw"L#R3V~KɓՃ $VA8t$(늄+ U4p/h>g٣R~._EO㇘O}^xi|I4xL![m(R$:>0j52>dV#YfK*W_х[/b%1AspYR]4pK+K DunL߈:wONUƸdxTS}\4eITc5|„-T b.ݟ,2Z!l HIj:̰> 򞠱j ӏη_:^.(RZn:8l}i=fiHǸ>A}|@Ō̯& ]a܄K_ԕmcڀRUx\ =5(w&;LeӑXjr1Ha23Qc&N+Lc(N~9|G șB9+(YCsNУf66'iJYv9Q$>urD&9⨊rU$ d0^AD"Y63,yb#Gq,~&۝`||<1%<D,x?JַI-)=Zn~_MQh`s(yAD? \($n+W1%+]R%ZfAy[?` f֫?85h\ 1D= mJ⡰P:4(;aXoX39H-kYKئy|\"Kk*ڜ+ky>P/xo` M`6h#!bۗO![^u.݇8 Dfi"9l?7,v@ATUK'!;:0i{[k:)4BiLhyGԏD7og}"rBk;W04/1> q6ޗY2 "9[5Tf^G 6zPS `X,C\Կ TXXE˯.WQK (J9g~7yv/<^OH)*Nj犢Nk< iPYz[K)B WdD sNnxtR5#9bFBn$y;2ō{*h:fǕޛuH"˵VY?z8Z=< Y)̩]9 BW[ 4Q%iBY/J 1`zuCG'cNc.`w URil,8%.% ߏfF:&Dь7b=ϊi:4WuEǫjK,yLЯbLp i"IdI[~-}N7e3 &x!~)zqhnS- yHdJ!9q  No,XRl;$ ;K,PLGDlTR{8oo iY2ѹ[XSlmْT)]UJ>,U +1|y{3rR/F+ɻ*g_Gpf1)Z멎yl cog牏,DmMƛ^7U1h!M#m>43PԾ+kF-EgKݮb3X-Kmvn{i7,>Qܩ"?NjXܤ$[8s&ngPrv[_9݃xj3q AX9}I iuM;o:0W/^pniM]t)eLMk8 m@1Yu_i h,rJA=%b[sw k_jaa(ܐ{ CbhkqD?,8I|el1 eA,J#\_h(ӹ.'ڃ $Ɨ8Q>[-s}LSf%夂 u%?hsVrhԁۈ%DtE0 Qt=~'c8!2XOPp¡=MʠNKJdk?GOQ ?k$ܷp˔e*Dr\`pSQ&%[YշL3 4<]QdLEVx!?Y$Q'Y]Ep/Oq!\G(x4Ӯ<[B)TG_I//<,&&/`万u֮ Y J4 8.De*ioEZ)gp`f#TؑNaٳ"Sh2$qګ&ᇗB:iiH |s;t'$;\8wfHǦIN"Q{V1c{>bHmdmnMz>Q8o+Sbi /e/ә7@#d%HL;9hI<0;˸ ]y0([>=c 1/ Wۻ N JȐpS(CV]}ZH5-fE: {lOfShz`k۟\ѓ2+(Mעm6^^䐬DiAcoʷI؀)Ϟ8cץCxo5H6{R'Y5أ6rf$8#<lx7UPAFdao#5%s$N$O)D$z5G87Fz2$ H#?V}S{Ch+Ac/% 2^jvki?9_6~3i0͋a%j~8/ð rg:_{UT=%m{1Y7\4Ky"%>)#P%8U+T'b0,U=$n3yX1ʡ:#9BH~»(M-.ʎFK7T jƤ8s+ }W=j>-H ym]8yq+I|);aT31Ak 9ق!'}#rHx^60%'`HNלJjל>y tV  $APqMbξK[މ5=Nr46:{ٿi|ܚI.u?3 9S'u/i83<rx aÕ0P:}0LSW: iUn3{"y/k9f-e9IAZT8Z-h'n$c2dBnje$ H2{#<6mJbO11h9!*O>t0-.ҎIZRkgѳ@xeX." 4񿍪吜Hp)H1C2aH0c1ãm%v/IY\4\1 &4}f~z9~{+m~HUwU I2rnFY4~7S0BlR\DIȀFLnpOU{yw"QX=9ሌ9RMm҂Es'}̎ED8gDi#2G6)z}G~_|{o'vRB(Ix} p+i2^#iF/6BF x&},O}5"Nq)RݵMa1ԣ彠8@TlNPOX ޗRJiXF.s_VfEv9Y(6 m[20VI@gD?K mX׎o0I[7}S3]HxIm5 slA/""\åV́ #DHg{kJlaY9H&kUkdabm9\jcTt|E(-Y͞πM@Upx^|D!AEdk7@OŅ0o1+wSk!rȘ&20 QߖrʷNa8$sD߃Y/4B ٞ]tbr'#ۈ (v+Csˣeu-dU͸K~!014R:s_Amu*:9SqbS =&K<2?ydr!B~Gt8uq"ЌAaH*>z_}IJ-ZninMgPgzf0]#]Kl7p[QIt.)ZlnuB5ϟb^ݶ# b`TM:#iob9HE|=>z6R@"[^]z:"Xa#X36op?c1;]4{ہc2~/OLcf#3U^?fN^Su95 P9<<<%MF6<^AdYds+me.m& Q#p ;ŇiOMTbBd5\v_4a9E Z54qa'ܺ5"AQ3@y=d0hUyt4:AL0${5G'0l|1Ĭ1M"w<* &YSsQ#GC!+IQPȏ`I_zS,2 3ܫC-%aNpG5 ^\Ed HKSLJ- *8T̓ ܵI(,SV`Zj;_>Xȫ" n|Дd@ ,U{ǹOgpM{}ur> &h,AHyW4Wp"Q1R5N2TYp8ƖGm) cPN! {jU$ia=@c[zmM+1k֟~ Sq4hF]` %1]#VY7;q?ڀ({wfYC$woc: \`Hϰf~lF0>ݩB0eh{Aj#YhE2uCU戃(~~&%眚uۄ)U姬aEijC &;{:|m5S,{=*.; D l86@Ăx db)'R/v)Vk#ܸSr#Ƌb bġ`Fornm{6]$Jxޛ. ueQ{~Eϧ\bvs">po828U7 .(aZcd v$U٧Is]?YQ@'PҶf~(}}/wy-38o `D;Bj,-ʽ{ |ȠtKhlLNf~۪hNR8^2I:YHz֡٘MK+j=l P I#`H~ pld:AÄYK_DO-fd@=\N G(_̍)jQ@cgeqd4Zv!>{gAfb"؏ CTB 7{P$d5ѐ2Ͳ!:kUZWzKss]0T/ny" W>z3zC~{|БJ3b}̆e$~B@*\|l{JC"f?z#yI<թD.6@۠[ ų)e:} 1%`yf-xDwQxs(3!lVwGeQf+Y. >ŒH9qe,3,8e gW${zq,UccѨͮG TWI/a榺0 mEf%s%7O*5sPw&dS 1ы[٠u"D洕IM;bYK+]ħ:jzZ QAʉp!u.)@|MrC%ߦV(mǿ"\z,2Fɒdc ɜڔ-I}O)0s+6)_Ø^0[+D²X4W@٫-1OPNED 94$eEXj_>)(޾qi^t7] (X{=;sm(i~]Dbm,1ys8m~'E sdbb)Gd3`x`h./K&zގ<4{֣e.R5+rԹ;:0P{A jo@ Zxc}af] 5ld9`'m)Rab—kDW+ikxPl{ +4%ݚ"bٶ/6`Cz%:<%}И4O UP8d|M |>6lpo!teYa\sT.SAL.H Prr|N%YSW!e<)S)TKxxH{[?$SipghauCX| )R>!In 67!w L3~iaPbeP#[+'<~&/?摄<-ƛapx) BkZɉ0~ !NJ|\wuya8GE"rZg)mm]N᪀3AN;kal|A1?t^8%Lp#~g>U6n!v"{>`DNl(5p!uNeTN&Ӿ[\GbBT1Mu|:|>K|)B̋i#2$JZZ-#g-LP"+!r,21f1[ba!8ozK14w`{01gh_lGrnN pb#7gbetٕ,W~*4-k eykg?W`0ېZW\Jrg\ĆR O@jb1;kUCP2/PЅB3y2_jh]FH3H/Q=uF^<6 &$Wwʣ:6@_H|md[t<C,\d_x;)"P0_yy|[1xf#*"uMet Ѫs N(嗉8ƖTrPI':l:0쵇_~lG6Sv D$ɾh+qc?&dxI ŰRf@8MlXMM:ל|C*5L5i ԝhg. LD cQWcvøJ֛'VnjIm|t/5&d|k 3ChR^-YQ\ 9ڠX3j~)]AU$tdРH!#.L"#ڟ"`9iv` 74L0XSrD HA>0Ax2W=A~$A* |;0NQ$c99A|_aG ufshA'Uv|i+Tc&BcлHlmv]H @l Gc.5$OF} mՐ'^|9z0nb*X؇8LM U,Wͽ"=JRGzB[Y8C՗GV5r$Hh'jط%o3D}D aUb_v`H|S-zC ֢AmxKF $A&[}+3o^DQFU;1w7S*bă4lT‰Q\+?_jyp#5ꝠRTf(b"&z`Okp,8@dm4C.?* p'ТRE19{?> E ē޻.*Njw;-_/•U]f"oK?7tZgFԩ8u]o*d x9foMC͚Q@W]%XY3E#\#5`6u+Ek2"E.h^Eѳ NAmXFɢL?*U_hh3~sg~Jܡʹm\] ˃P:nyTD8$[4FV2Rxi"֬$4 $9JfU>R\d{~&|"}PH9FEFLg,/N ~r֌).cb4* /UOƃsdd#Z[% [ 7Yn/3D0&3 V}p1 ֣5!5%vot'D5f_L D Ə緑m4RngFxt7ʿk2{F$Hxնm U#&gi `pvj'kH|_ l/Si0ܭbOMS̪3./V:<'#tڡݶ)gV1dBЂz=i;+9\:qL<;h ?b蒰Y1]|0er,6/Q@FAUOO4 o0jCfsuDMoVN "Fmڰ@<>S3s{Rot0Md>gIi91޳Yg2 mQ{RvsMeT%Qi"3 ޤ/%J>whu/,zW/x~?׿{zjJlsrJL 1Q$=~PŖ"ǁW#6U= }ϽwCyzAGJEй^^ eam3tMzbF0X4arn^Ngb7 ݐl͵)S;BIjɀ=z';? }G3 6a&PYx'[,Y@% FL w+, Q[?ڧ.ʭ+$@U?L0Rc$v*mtvl$H[x=)]I@ºjnZڋ`QWQ߉-ݧF;"޷gO/,D 6.0vFApo\G7(ۢu'tCUmO34I $ n nc >O@m*.9BnOf^6Z i T5B4I/ƒU hp(4@Hwβ).zq$KjUOl`|SKװicO ~a#d/:3'+dz!J}\K~ͭQuN%+;ʗ%k{ BVb8J?j A8bРqmd:. \2+*.(!%vY?g|3@$x`9#*ƈ Iw#kd2HS4x 1^S h+.pG y4l&tЮGxa|:i;&k˃RX55SX[tO&Jߐӓ/թ#Jaijx 9k8a2O% V?u⿤r(`rIV="nAYV6QXdmM~t 3K/N'C.dY?d|1|{( ~ )tR e)Em?qy'AArxPS[QP7.T$ _)||iK(]4J%9_,!6ggw#m> q~q6ѽS6oJb_W'qilm x_j{ 'Kj,dށeF[i=CVt6&W ܦ -mdǬeucsH2QIWZs /Bk@ڦZ4dDN;D 7LM׽}Te32%-qfc9 Q(dč2 *&7gl@Ǧfv!zX[JZu& !<dTjx@(doh}60_%qBX/ l@шeawAn Bkgډ`lMۆ8HQd@ozqu~r4ں8 %;FGaܵ!هYxF[|]1r՜7Xް.ٛ r'_鮁sKޏ FzP^axk,£uii.eƩF,q$Iwgo{ssB$`çoi:0t۷I\<,s\Ozum2`3Ui. (ZOxvӐaǤY92ǛM}y.eacL1 aJb|cTɞ`ZB{|dLG?Q զMl'vqC!7AՆ5T{}eytY4ԡ-)u mi{元8H>I68,oE;?Eesqd j[5]zє&N/s)D-HD(hCdlɭ]K9rh秂hDD!/m-,EegX)>.i"튎J#Iux \Y SJy27svu=u^i Aj}^C9\;AF+eKM37cZo<=^iK*$l5I!MH-k{m6i1ao?j-$JGpL\؍sۨ::4_ ci+FCWP[>dX.3 "4?/hs^M`N*+yaR>ԏoG W|'EL/G7ORU Y܌@|;œPQEtlsq؃A)23(g6ZH1n :~I6^z6XYxJhv0|ZTY)Z D)&zD?<U [0p]C2%l/YiA|6.BY_&׏4p1-r6`~TL ǥ< gL@*i|xƜv3!/ϘI=cbJ hqNY2!v-S25wSLT".wh{WSց dQ ^>i[L|GёN3%mQ`Vv oM5u Pۘ#9.|IRF PZ_ވ8 ϭ3Roc4141*yJ=VonlL+^pqTnn 2c`yhiE%jo)b!#&[k*cAnQ>Aoڔh4UY͞=PŃ/QX"66Jv6"G3?N:ekݗx_Y"BLCRS۰P~Gi=ZzsX @GBNIC}1eV"FE<\G!D_rJ^N^z 0Ge=@vi@," "_u"Q<2q,W(+0h+2{#ۻ. Gjlc|bl1uG L+$C|y/ҵ&͕.Def UF,rV=J@n>pLx[dC[F?H{c߮PuR-RލX6Y".Z'=8Tls'K fs! GUgFH(S70²v(Bi=S&wS)[- lbr;I 쥂0,;{FToGI.Rc\31MaъV7O<ұ+I"N8=zA-:\fr%:>A i :lBE̓tXCypL ܂k-ja>2}H^'PmF|d%V%%ٟ3"Hbs96w>"VL+DnMf-_'*irsf$PȺPiyھ7` F*z9YHgfJ.$kEPxXq' j~Du̳FEH7CI[eCtXo$ \/ &Ԙ&FPh`xh{K8[_H؀# ɬߴ mAbWqX  4=G^Hk`Q Q cn",rl~<:sGx2ao#]7>rVm-i0-cO4Ϥ·h(kt<8MS`Gø^2f~ aL%VQbt(7Mءt$O/HDR"CDr&Yjwjf7$`I}fa}ϋDxPa)Iz.Q 7o܄9 CMr]`RokUܰʌU)6 XRt6GqFT#1WaUw.2$v]6!NSXP3}Řbk=6`I(6M`%cCpńL@#&ϙl@1>5*n-)/me/fSb9ufb_<" Ufz nnFB~_g wKQÖKNrJ oec"1kr#'SOQa`M*ef!IM*ŰaT xob&٩$9Smp,wtfP[n}`$\3Z,hOnu TAGkM=]r(ޛaO.C+Lkm6p , L=ڮRM`Cǿ_2_*$R84;qe\GM5PR ,[XjUbHܩ'+p RWjv3^0'6#LoA#0%J&۞^B)ureƧkˍsˣgERX 󜷁MI@wn0T_Jۿ*eQV!PW>1="A|!0pC ق/9 :74=؞.$q1$,t-À"Ti,^{l\ilX߶|!JZAЮ&[W T*_yxu6FHD( ^ ٫rOLB*}σڠ$DGm!ґ۫;US8bHW:иDtļ7~dR<8R) |ʄϛ,, /]A|D``F# @BsYQ!ĐHC$LCUgڳw׹%ycU aA s{92*^mvho MҔd)ҨSE`}攋UW!CdS6j>!Ї U_g߱8kdp$$EN+F6\D] vyi$AFT7%*ܘb˥iH^ r4akDhK4R+t׽HB'^=/11j TP-,g'?H q3X+F8 q2 Yg>W, 0ċL##s #kNRRE'%Q֜1­eh9*>~~E'a؇EBsPYr`nd(_ۤtlA;+eeDuҟƶ&'ڧ宅H@n&͸3[~,Hު =$lX4i bV`䰃[*b?:=p`E(׺DJۢfŒ+XoVAF\%~) ;I&y)A~Q !gIVR^I`Vpy3q׹A 3"#Yv ;[mбQV-0#ӑGC҈sb }n!0a |ó8uh Pxdص7^sqC"W8bnR0Wl]o"ԫ4\Y r<"5cCWX`10.P&0^l괵 (=v:1Wj#x i0/ 6)P`R;Q;Sc I[KjGo{PCJ9U;훕-^/ZhthJSnć8Ş }Ws8$7n;$_LAUk,Tԯ'O_ӌ$21;Pw9>YfGR/*jAsLRf2h38MmzBB}a hi{ѡ>7NUNZohA#YSh3^sf.P4.iҕpH`)?3yYGW3#XMҖ;pH[$ ^zJijJ K$-9w,d;2vjvdHBnQC4,$u170Š,J\V1ur˗䪡A n/Ab94;\=&h!*ISY-R?wePw`IVj?!u>O\.A#/n ?F v.C$ډ7arr, Ayz'sW ިM|+N̎fs8z?N<2#]{>i3I0.&0G&LHl~4u5e:󣈩I S0d#\_?x#Sr:5gD˶mt*R)ęɓ#XN?ɦ&ݖ7YLS'XLr?Ik(yvyJB`C*&AYF]cDd(k\6KD `|o7px+q0' "18 O#2tF#_x9JQ[~݀X ¥|u} GfRe0wJaPaY^B.hIw]]>C!䉹YJ4C3fGcv ǶýOr2ڹ$ăYuPo-u{F$TVkXӹ@LS#Vy:E:#iwv3֭ n uQ('nOSBw7gNZ -h-|i/s  s-SNN= uY URf~7}NY`uKat^A/. #L #d09Y|%xk+#@<a5_DJ5bqӋrWP!"f8IFF <~d̑V3fUT!{<.fC>A¼}JBGptߐ)4,JK6546ɛ=ͻC9ۼH>S;c?Uzd(ivqZ/. AЉ#Qh.kNSpAW*ÚBusGڨ4ٳ1AeG4N Æ,%;(Wvz (q!cc I4FtNw\:-$S]{vh恙&uEDC2jӭӤPTusK|HH9)&HVp{B98SĆGEOT↯|b@#ŜQC9;ϬMQz^ĸwe|SP-9yh5*@ \&z_jU=k(ĘX$* m+ ^O#$5Q"s1A&4klHGW-~}"䘜gd+Bc7m5?ITJ0$9۪_q&m|R >4U{I/"?Z~gaf!1WTSClPn+U8}'51x}Uy/J=ڬ"3-sBi4[`;+Mq柧xЅP Mv?{q ,W)\-m+H7952 4)XNNlM]>[?o&T4ƏAq7!LKmXH4&u%V}KĜ7 q4SdN) cnUigxSIg(;LLj%[[ ]cOFMB'O "H+ $LOI5GV́>2v\fO)G%Vz/QbSF"$+sBgu= !4,㚡\vcL㻵oZl5AӔANԫ["CoDbBўsjlϏp!WC T;$EO| PhAyc'j܆s6:9X)-8hNIjյ/UP4 ƞ/Y~LS rg?j,Q G/Ԗ #5+`IhAjr c(<.)N"m(l K3$d4õ ):Z*>X]ﶩ^@PDI纁{a -"G;2j).A dxOˠ Dž i i8İK3XHp)0/FhwrY/H蕣4uMAQGF'1 2—ol$˩B-aP:JrMElޅrEY֌HnʙK|:'2:5 AKu_;_'l1\=0i|eB!M,_HU>Qn%m1orzi%bǛspaz5gYY jҀ - )Z)rsn9AOֿ ˷mB2 mLD%acP>fo<81<{(hm&%o2Zd&z,R81g$ CV $2ӏ1IXxDCq3j 2ͺ 'y#/@lt2__0jN;}r_7dۍE4'xVzt{"Ƌ⸆${YiE$R⸏z'=/25Ic9| gP2KeGr? 110a6o_m`f2Zm {., uqk +ވ)!H4l%FwL&*&G䌉s 7*:pѪrVl8j+q!8ܿ2Vc"T%#_oxavT"?"4'V *x~*b8snZUNnJ^J!ZྡD*#""XG$VIw&y<Av7Z8amT pq`0|۪9 hw^7nAoGq=ҘzW5 ݲo> s|9_NU:_qdt申<"bG:w9쥪Z7.sdMӔUխuQQQ0؆|9C8/Zb:_tXL8/fiօC`p$Ae9VcauC~ogp Qbøڋ=GAOp2oe܄Z/bax6KI\S(Eݚ{X/&Y = +> 8u15_yVIEUMEѵd I>Y(ET#ߑ+dcKmRcߠ_uf!Bf-9d H&MN޶/v(=_+t*trG6]*i XbV͡~Q_A)S\07Z\`NwCóũeku9R8R6>@1ޝyH!Zψ $fhjdHuCce'8S“ƈUM-(dBgC4騭(>4@{UNtMYX疉>HmMit?i XgX~ >Wx ʟfsѩ[SvSm7p] aS5G瞿UPFGEQz/\6r #VNy.~K(j,7޿Ygz"|`NrdIKbm9k!3: t_;8ꓐgS-" VGOHp8/0!-A΃/|@?ldR6:\ I=uBD|%H3fɶನe7g#v,jNso^:d{@cֈ`- 81#a-jݍ_2xIz %Z :wӦ/(M< }6DclZeO(x22 T6k 04(yZGNv3X**00,Z9;C ] r?}6kTVt}q& T Ui &J'YoAiG\א30 hܴ5NIf% /Vv!"h " 5trH ٟF]DI@_@< R|nPJXqC))ҭ@O/d ..{AC_GFtE= ңZݰ?R@(5[ k`I|.94Dfxl A-FnUUy%2<9MA.M!Ke(jΌkEǎv-Plly]oB,50sIL 3=o9Пh(\s @ U"k Ce<"SўU2Q4 y[7;@R&\)"CC>FZQ|yrN/RQ5cd§k eCԣ`y"=*ҀAí<@Н[YJC}Zg+Y/%{ޭEnVK ӵDiF|-kwfsH5O)Dm|6: `a.<32toL>3yHDbDHXRB]U/p.9: 8(f}ۡ\l_4ΦD:LC{?-gBkX{ ?Ajc!v0UH4dUa[o=K xvH "S.)uhH)h('ܫ% ̲A:9qpYԤ7;4"*$ ~aiCj:@&shU>.(QI{ q[k_^S@E?'!ypoFQSAsVFء: r`Lft5a"\WyONÐe̱rsK~I- $pl55V4`AŢ_~lgn:RJǽ&pZ%Aգ=j ;vKViUX#Xz&'n1Kπw j X:_Z<EeBcFűTWnH'gPkty-A8m9u1/%hޜ=\X:37Ey٢/I BDZ8 X rPky:zN2dgKTGTv 9oX+t(MG@#;,ќS@.PU<=0#,CX6{{^>Q0_`FB/plb? =C q^ /l,PA^ՙ'3Sғs>%ZTҹ|$7bȐ3G4p| -UO|n?OϪ>k5V+Cb2dU->z9ӧ{G(Ra4 mI۳R>5= W fv.~?xTV "*嬟2A(ݍt!Vs ͋?=:c0j"ނ1,l)$[ D Ps!fBB9dP]v @tk>4P.ˤaPU< CDZ0?deœ40g x vi\{3n^݄ z 3oeK"ܑ<~'*>z_LNlJ9}g"RE= g 8W8YFe8=9E| /H 59*_OO䊜cBO ,u\xy :dSO=(c  )wr4r@vlӳ^)Ҟzoe[kN!)$gApL3 x ͔$Rw6]X) 4mĴI1m$GTZ^K_L]4řhwWcHXD-?Z7Ȼ .Re| H(x_R18kk2GpZ~0.OBjeEjh( ?3gУCj}ol(G}`SRFUB[ڡ[B JL3rAK姮)5+?0w|:11.y1ι֔pV?Bz?+^v_a4.E;rk.W1^dq19!CƮO7ydW >F&]u  ts/Pk$`o ^;Pbk@7i QAds?õuPE;NK~ZdnSAXW/s #* Uo2$$ j$$/C`>ax+FWg2B#~8^ݯ=Ѣdu>.& @P!Ȥnm)HHTfӕ#:c1k(l6P$SM*N, X~ޛH搶4|@RٛhWcэ.o/&L/(U KӍ"X<8H/~W%I/zm64,EQI1}3u=~Se#ЮL0[6y@$E8Ŋ !  ߗ] oxOIkpHCvB"1K^O*YF,"1Dq8(r 4aj>4H \ب9!L)O^UeiBVd_@sfЅ~DfábG#1:FyMqbhp$q&He2βObUh {71TIGF2ꇾt6-Fqq7L|Jur4{i۶*.lF [(\aQ^o/9{{JH[)K jOLDT;]+ܟk^bBC/@C6C6 j*@^ϾZKisևoGeq, H穙\Pˆ=Hv` \=NެsJA0=}?:i"%j ̗ENkaƽs$VD3ݞ2!Jڄu5Ӝs+7"3֟̐PQ|J+ C2'L^حcy,2'mˣl,}yaaP>1 ;!0*SS :U?ۿ\LՁrA͠vC}B+yw.SuTh%pA<\킚f#jrRn|ޟ8'> @@]e?gSbs9I ڿ1$3L,G=t2@!enԡ71 UgĘՍfߨjxEP+wϲ1KBG[ >ƐEӽ^(/>NΩ$kpD((Sa %ݸmTJ|:Jp9o`?}+C34 Ze&dwo:B+Qc.) f}),#*8Xaz9jj=_Łi ]eVRwt s<,E ՝f|CrrÆY\s]nRr&*MyPJ791/JGlqbpl Gjj,tpszub=#96YYGBm|g kAaG:S} w!$Dn >tJ"lGhUAd=o"i6J(ֿB6TJIMHCA]b$̤ȹs=9||6gWCM ~P]/D Jj4uW;K+|@%Z~z +GH6<=/'}N='`5,=©X#WX}?c~U@ZL VϹ9c'&< X$(T@&A[2OE q&| .;puӈREϯzL@Ll(s!b h(-:0Qbݾ53_芍tU+@93@9F\%P~LVpF~(vT9>EWzG쏤w1qQZ naDCk %!6E%XT&80 jiWƲ&B#prȍ1xPEqi7B ;)(FrL KW[ٳG\9c4F܄jy@pJ+Rْ1oX0QYez~~[C\Q/O0,fވ]ZJb /> N.R-ꕝWc_dӯ,"20 #iW1=(L"XpYc~F Pe @0"0 qL,͙Lٕ 7IZ [㛝4on3vZWb6)W[?J!iTL_0 },GaP2HPK$|ˮy #HD*@1.soQP04Uկf9xkQ&jV:n*wƉ߭T, NBOB2- $b4%a_6O;Z׶bɠe8 D2?ܙw{E4$aaW&AM*h槧 ` "+hcwv}cȵ`B)YW'gUhzk^4 ULbLz{69OCd%oègŅA&Uͧʖ|0ABM+X֊e! (Aa'/&>2EaK؏2|``:YO'\t'Y:h**syT40iVk8?g7'4)vvאVIZ5D g /P'r^hR4b%Wyc 5 qb}V*CY,E!rzH"RU"Tbh- ltiݺRp YUPPȿlY#KtK,$m&kR&Ox.&_{HuܿC4"ːh*؛0:g\FmڤiQ9Ix4yp. ئtYh)$w!1=A?AAM̌/ Yx_/;;ןd` |lD%7KM$k RN8|:]J. v)f;5$VnqcL{LKJlbDast (M )Kd;ĚՋ _g6!PB*hCRyZ~[],l YHIbj)xl%KK3]Ky> j,-.^Gԗn9Y`ȥ%˲d>H0af>dt;`8M?PX|`C? j]V{ةiJuaG@H}?2yo09T%ʕ<̦n!H? Hkb\˵-K@b \}۲Dr:Zf [ig?(ջO˾ Nk3^CT{:Yn)-NKOjgA/V !D囹gWgɉ.ϯq8 $6 ӛmUz jU dO@];FD3DՎ>Kw+3?Bٺ'TF& LqIuX4'xM!DۋUZd:n(t 'F]U4h>Y "5N)\F8 C#R7pw>׷-#e"k >ؚ#y j#ʏ'}Ȩ eG]dI`CLu+0cG%:#5٥L4Ϻ& v['il^ B"Ѣ.?ŝ4 b1ނ˵V{icwH3AY1;[i?nKyA:\Hr%nߵREV4Q VSڀe8% fgOnNz \#.kitC,_IȧEK)q8vIsu+KdVn( yNcp2tw[=" (r1ECYֲ<2x r8sDdLdZ\LgțS&aҘ᭄Ak8?!dUt&?&>hU@F-եןS `Fy5AwBfOtTj5/6k/٘q5t8ؚI)>dw*~P ,nKsj׿LA Vyt, Zǘò*xq_j=l+fd\ x9&2ܱFT(-ӓ{(tG)dx(77{j;X^@Tfkݦ1tkn>fM Jb33"mUVy3)eyJ!8@:ns Y>\P.)XJ.hFl٬YdNs或3 KЎ 赺|d۹{9!u$h8l%IЈ].0]6Y0}Ie״鸺1/A.AmRMOԵ4++p$t"Gd=y6 >(Empr#Vz- zuqbBؔcs&ah  ۊK5|]eؚѻ7*&6,b>r*0eVW~/pf<$*MZ\vX3ͦ~vD52BdMn- E+$봆/y|Z6 S8Dl]v`F3wKѺ| {5$gmwG"j)ޯDK"Ƞtq[ 5rd0^%TsOy$Ohb{O;Œ{~y7MOftDΕ d: 49 `E~lS$DAÝѥM[!N=`e4f|@]dۧ4k0i(=uabG [Z&Ko s"\K O [܄xt\|ģyvRtrk1^h䘌{bQ]ًƆ]c'ޏ33M8/܇^) 0$ē鮏C0 ɋ}=rpUGL 70< ]d,y}&L|+6lљr;b)tXAh(vKHkfM5CD rkq1շid#Ԏiu3Ӱ!@,saL *Iݽ6}x]'p=ie*;T+y/r k)ű9kr^(\j,"ܣTۗmˁǧ^ ` uFƃJY<`R}0sWj A_U=c" ph%_¿U7gK,}dq-y/ԩ$,%j ~=u|L!P9L{QƊ;rvVq۬u KNĥiv9B4B>AC/ 6{:$;(ej(g>F} ~%R8{!*,^$`SZOT2iDaeß#$jbxBFIxs <)";A'5%$^+y+-H0tezyJ!Ǩq Z?Xk?@3?kC$/^DL&Kxl "LH d_,С$ӲQ:1z/`{qDM~mf#u$k_`e!Uچp{J3$afg6m{6ȡCCAj^۲{mJ./#!E'Oo̍3 'mF0,Gq4ua10A֥U+kj~&>}Kxׂ\){>K/iy}I욷##u?t.29l)CVRzvyƠq}q. a٫  q+yd^c)9ϪP%kijIh(Xn묺u<4ͪspL30TƎ- \ v1*d" /,>ZΣ'E9]qt aTG-4sΉr LI-X`@zedV<-fh+(* s޸MaJ!l;FZTEL+Z)p;bnh"r BT;T)1QP ~`&my6MƳ9]0$[|qu]NT9=PӠY@O ɴ@qpE/e71;ϑ/%Sְi&=Mɕ4`px>0gIEj`V&RHcdcd?js«cA6 J緅%E(Nb}-$G'QpMyk TV&{́(m0!2\?['c I쉂- C2B1'FIa\#|>up}ʨDЦ*W<v&f§CԷ# &H\W" )v@ @tX=DY?0ԓ++3ir,z KI0SWj%W޵ H]`=iŃA=%Ǿ҆S!/IB07h+Q{Jm7*ZT]}"bP9)L,;sǎtEpD5k{EL 'AяIiس>cj(_ W!,;53Ht@a7ۋ7uE6s6 rI&o>8~+j\ ~79*Q}9Rة#Ȕ$ID 5;ӈzb%%u1Qu6MD 'vbBO`e- 0kNjC!+3nhQ|B{?ub*i}K k)az2c '@dH'9 ~Th5WygL2I.CQU%ʃD|xֶ*v~ <='1l% m/|nW$Y04oLӖ^t4Z~qfk ؼ`C~ =pbaYa]aJq{-8t(\-:ʶ)j`Yb\3>ĭţC1r} ߝ jxN@G .@9 %Bqb-8IS?'Lc@>W{CUKѽ̈́ǃF>LRɩhvWOf(ֻ!KS՝\Jijj$m_RU> `Dٞh kF4pa9aNG7LIjNsjר;FYL8fX:3 ;Ԡ҅8^8u-Id68ꖟZx/p#;7b/{F{0,f@flLE)0#5NnLxN[M۸Dgfn$T1Ffn {(iJނq35lP8:߲;~@ HDܟ!2d ‡IQ6l6{ ugB,*> TW14(ޅ/%;Ws@a%_>E|c hUWQT's7%ba*Yxs)O&ܼ,4:fDNk~ Gs<_ n'"K\1X`(f G˘4S?ͯwyg7n] .;:p! \,;KГ<2/as~g?I+"1udo}F9KW83Ek/̾Y=CH͵3Wþİ~k]ZCkw?48Eg+j'H@|_in#Kg,z3 #װԀLǔb_X<ͬ3wQp?6˖(rGv?.cv.rFgcn8(Q20=AD^v=Ӊ=\6aKMG@s1%jz/sw|1إŴ{Mf A'crݨ%/aS6cѹ.hrflf.R ![r7A<}wazvOMPB8'ӊ""i m X_K$k#mXZS_{JP 4 Ԏsؒ]UjSziNcD S6Uҗzh5 e)qN3R]@I:[Hr𞖅VJ-4Wс8d T"[w*ؼ%生f̀Q .KTI&W@ +EbkOw#ǃ=HcF|Ծ5jlE" g Ԯ݈kXsٝZM+ [=x\s&@ҵ#Ga"[%,7uhﮏx7"kEWbDk׶S$VR ЭIuw`r{ ͪ ~JVEҾ4ede2'SL%eRrDK,kqQ/NLT :A$R:JĀiv-O,Vt# E9:w he %$*xk s) $I}뤸(vIad-Cx.qN?OXX+>M0JƳZf~#6e#'M1sKkHh_Vic7e`jDCdHN>( 8ƈ&ČUƯz1Oq gU7c B4Yq$Nr?63Ѓ'u<1ٶ *}Wf^R@V%S%=s҉JwТP1#^HSTy`"ňX"G.C OX=A<_=)@=YM´9JTL܁ I."&sX+b=,댒%-tጡ ﴷ>xq {-. nQf6Eՙd7lDćC{=M q3S:ZdƁNC1(KXI{wh*;5ĔB:wàA8x? g3ZOKX'8B!ؠlqV7vS8[㔍3͇Yy,صgWϼWd-c1,7+2V3 glg%N僩XMF'j=ϣ_y6ui厔pO#P6YOR+CH4>Q.ˇ#?E`A\fWo4̂{ai9^)m#jĝk \Α: R]&@meVzsaq*bb(H;M鹂D:9lq0ӫz4C4vfU6`9)][c({G p]?c!pXk5,GfB6|{r>L[A5zw:?xp ʭp+̃3kXCb7"#DEHwTȶ$C7pzTbRis ըd> KzdthhjRBu'/Y^qن%am:wHp8mrd@۞h$2%'s5P®_e\чe]C8<qx4tD{b\޷O`Dz{\R",N2y|E=kn H}]+F@GN "0Ck)?/9B.f[LTJ S[IJT+(;+uj6d2HQUt#M,1N#Mus`[UUt AiUGZ{:$bOQsO urǩWS {h(fg!.CbЯTЖ|\j/JmYO Q32!vǩY0{ٍ|&6Vc52_  KH SmΈTm H<(;rm!wWi5lxs7RAk~y 9`FPu:}EVhy2p#[Je?8Kj Kq\;< `dLj^%%zCU=pܿ7#M o[?;ޕߵ:Ζ#I᳠$Umo{ &^dWQm{H R'#fhhO%7DpKx! ֍ ȴdyVfIQ%J;G< )4x7͵k[szd_gzeGѿKO'ڽ["@h 3R3ԁ^sC}pWܵox!ݲ'DWMP}<7R9듧 -1yr8 L@}ʑu#`кn@Oj2 LZ_@nER}QL<<\5M>-`_XQP:M{ZD"wRO|c jn S)<t  rp~s^ M[#U>=0 ҈k]Q5 `m^wkDSɕcYpw5DG Wb]RjK\~~:#,$?F߬ W耽Mi5yBQ>ETz',CSXT%`0<>.ii9:yM%ɂ4{Vs `4fkDx=7[|7|!d`P0\lF*tOSjGCC/ΙdD$9v%QnJ*ژ$">(=.(Ȇ_Kv:$0ƫJF`lߤ} ;'eDH4A%Q~M  S{|>W~HXXWKxEzzf'E]3ڌ&Z9ZRg &Ҙ hPcm|>//jW.JZEBÚֱ-EK8| y898hF&*Xm(bhF)5g˩y6VCuȽ_y^N+NQ^\Wj9t6?ijTE 1$`pgMJ;ЇZk;yٿ˧fTfkvP2DvLS/P/" 4nП,%7@m]J*ܿG'.`.` w$ 5=+JxX|C&sS/Mϸ3i`JFNWI"A`!l(,G5[^+6/hpAk&3`ƇEv|:XEO#d%X4I3u!i3V^n!u_/Ep6u$x14@2:q=Wɖ8=shepvKY'PZcq.TFB 5FYݳϡfs7.k.`KZ/Y0z|~0qC`q@}O*&/1 zqGUYv;BlŸȃh} <ʉ@sҽ>n2{h]CkҶ^1 .Q֟:[b2l BUXrE@]qLPXiq'#Ԩ"u; ЄNZ+t\ZD]pNUm~]A5T&&i#(@xGKЂ< uH~($??{B"C4r~$ƑҘ_Tʦ r Yӻ]-ab_# fzkZHx7Da"mwv0x "CSfh^ec%=eQ>?21d#e;'!C[{dЅGeR1h!vx:&F,9E2D9 ,! 2'izm6s*Gg(i a8fT&Vy8Ty \cxf'A#/hGDy$ir˦J|E}[[Yɵ#è+SvJ`)G4\*Q/hfd. {OYA.ӳ޸DD;[`lE:bZæbE0L¦*h]neYP`|qg(zM ps$U[[!b׭Eu@&&F'Ҷ?\>ZN5`VݸmSDK(]%~eLMfœ{ R(4/C;KþXlXs]l"|^#|&61s^aZ9gYWs%υҡdW/et k$ ;>*g{V}naEP'YTS]*tXQXb>94< ؁ ^oo{+A a#W Jwk']a*m`SC-Zsg*sy9ތDG NAb;[,zh ҩQ?!6 D]@@/\n G์:Hp@OGIm^ | .u M(1#|MsR7TuZ W-E;Tal2nI ,tg{rPLH^#PWIj(m*ai.laG vN٫HrO{w Xƈˆp@k5L!eNFQ8+[gL</}I}Z+U $6ɺQD]k'|(*A:΍E?Rj z‡rct{XœcE8 3GӇ 3 'o)1Hz y0O RMt3Ae4wAu"}pi]|_麘 kd;xAH !DZ_,[* Ruz^=e_-~xyROÒfCҹ>=^8 HWD7 mD祀$jPʚtPHEѫXWgM^= ak~ D::4ꭋh"z#Qb)H0^Q ^P|2qQ_z6&ԔVPųȓJbEfZugZ@r‰)ŵJ < eMB_X R+@@RO%4UKdvDo:WhV=U(D 3oˉ#yaȮWsUNE buVgUu{ےR9T9H_#@XױXMHۜKg?߂k܄rЌ9+6O[ v`d}MУO)1A7T*TfYLl2,B{YΈ*x*`w)u)vĉS@Cbsu1񚁂u7=)16{‡ {Pb4[MDV5~OR^fǘc?9Zut8D~]n9mO\ZPV!툌Ф)/ H=( uӺ4njz'vgh:6b!RNj7܍c\(@uRc(Ґ "Ivf >#s!3Ů?,bDE 6/{>*Xv}2㗳BzgldgT N!Ug%(~bE)zem5 D2RTpI0p׎i{A{sLC/ǓFUA̹.Έ T6JOlUibLxM˺#;db?B5J f h4ԬvϢpT8- 'q|r1͏*sLb6ٮ . _#O&kj5L.W{ydVд٬I (u 9B{X]26÷`2fawט*uX@d$Jn1,] !C>4ћ R'k *!^J|rSmɅA Qg&K4mm2٭ͺkPKI^$6z6E^1*F>ZX:{Y/.<%H[e'-YQO'%*rHr],BTlE ̛Uß XOF/w`̗v+4 3dֲtbnMNDr>knG:#UL{Kzh>sՍ.βl"Tոkh>pWs(0l(LB\E~J Vq!$ZSJL[rSDzS^0cr Sյ^s D"}zRUu1$hW̻Q$gh؟K@83Btg@JxQX} a-͐f64!w0`0cEk*V0-MExΖBB^,ɱ>luKiэL5 HLdôoK*!cǛ "Y@O3E(mO(jWLpq~g-Yj11 ~P%S>;<&P TF+'}dgg$_|<쟿?^6U]UF'D0P6/4L~ه Fb⣰8!.y2< <|U\A&z6n} > r:ɨ璉#d9 3/QwѾ/ߣ y3.Ъ$gxZ!̪!)>,ar gn#$s$\{@&ؓ@J#}q[~LǪ5uu3#q$yr~Od3`N$8sLqkWyp-Zh(ړFe+.*ɹ ncT̈B5ot.l5pl  өva. OO0=XS"(F҇/pjWw1YmLҴɳ}_p{}%>K\-tWaYIh#ՏX3ivrM82_Yѥp7/B(ڡd NyqN_`k8%<ޒ[֕LlE:I9Ƞ^GA.eخ@Qw eLt W/)_o_CNՍH&?np.HRWaxRdvb 櫄$료;\'|;o܆}Iz;e5ߘsazL߷YS.XJmɷrO",Au~zSR yުYmUl*y)X:.ӉV{7 q5LqS̈󇦎.]DvGZ/?;m;!T bk%? 7O.FJesFSK9!Jveɉ!İdB o9zH{*3g/?WWޢPR Jt|L #k`Q?K V7R()UڇZRcHN}RnP,Qkǩrn-b_D4_\2?$YlPO_WD -}jBɯ=cXȱ( KW4VvDRcBmZ콬q !zN#C2eԳk.G4(#d{u(js&4yc {2x%hz8gXDVj?xUt(Lr@D%§2÷wˇ󡏳ZIYD9:W٤bA&xs6)5RA/!Z9F3?H8J1ȲUNp┠V8˶\oeb5XCg(xGN$\3/scuնO_ၿ_ހʃiG F%bJ?{n~WUWDW{I軚7Ϝ7 `<е S!uBh-h:ƋZj~Q Wl7Y)M 8OOCOOkIC 8m8 A^wF!ۢO^VdU &;aԒI_$;0PTFӸ" *|L8dŽkӛP~ hɍٵpͯLKƏҝ"!c^\Uۦ:Q ͑I.p0mH;ȧ3-0$jU]sʄUbdUruMxuU({zX3w$bB\le:-4ج$kש (n">鰗Ra-J0SƸfOF32-Ǣ7tI픣]B:ٗZ؆؇N%:VcHI$>HczQsv/[%ؿ66>wΌŽu8]RUn~IAuQTK5RŨB!ѰjR#l8yNjC u璻Eszҳ" OXj#*1K5oL9r[! oM*Q:YUnk>xy]>ͫ0A'*e\>g[Z~!l+BPf TScz{>7[8k˃ovtֵ M)9Γ/2Qw/&L(.՘[ReZe8IٚGZ8l# YU}Zg3Kv[P!UT'g%01ۛ܃_Hw6'm#a&j$ߌ@{OUe`RX0=n$Y媔N>O DLPkF4y093YAz}׉ZrKQ_)VsS5Kީ XJ\&MU716֡z?~*^]mc]dv"xyEežOOqkhRlHPz(qZLq,|ݍHqy5CYr̯(=wW dk tخ0RL} Wr E rCxvYY1P] ZE"(|f^[2pGf̪NI'">dRV9Wd@;->f̢KqoMx=~SKb_G"2iBH~;*58] (ǧ]6 53XMk,mR}qh` ˔1a !qq+s>J~.b]_#ƻ 7k/hhMMsmK$ywQt 1"bfK)D敵MJ!2%M%ֵGY8f]AXEm }ڍQ>2hT*-U 7) _Ew"~}."b `9^NM~E&DI'e/*VtrJ035\5H;)bJ&|:4}UWjc>vsҚ9{m/Ͽ+ك&Y蠂cb-QH6[S%bWSdAEUFWn@ Y iuBa"K8hdj1 :d9Rr&4I$vN[s\D2qrW QKti1QA/8F8bPa*FPISR1h/>2*!cMzxK .(T*nƽE 6-5oJ}rj3,ΓvK+y$L)$s$tsLmoVvs)5T/'q^߾zx5ך֎.hW ^m$}pQLL#y H(4C27L' ou?ޓWq,*f05)FF?ian3J`6P-ԩmARQ0+rfBfRǤG9ZлY \cL܄6ߪk#2l*6Ĕ?kMug8RwʜD>MrF㔺^܎nF"rͅ7# nLAgoMyӧQ f+Ae",c6L|>1Bo|q`ِ^uA\;x2 Go4eC Ε{U-§qWaepu6<9֞yQ rk0+a毒eCgsN1BU112"Сo\uH|~U=doFEFifX: Df-e&&OuMle&3XuOW%!6EWT>E\dSQEo ^6ZU%zGHUY S5}UDH݉*2.piB@*9-hX7hWVC> >طW 5LWeuHQvcN0Ov޵. }58U/d(FOtn(oK7 2&؇')QJ; B 7sp3"}rnT{ jYehtlu~M>]:6~>`N1 1wfА\EVihׁ*ÒÕ|*h"WC(+J\uI0ͳSl#JwtShzA]h0MA|yHV/;`=09B; Vu[080btDQw322_ 9Q*%l{}4|1<@jx벤|&%6VRAQ1ثWG\F+Ub+vj* ڗu'?޿;!n"Эg$5UpEz:j|$ix2nKRJ"omSױ1VU/l%vВ԰rP =ȴP IIj.N3|1KpZ~-jN/ yӺ3{5q5 hmlus=V.1NTZHR tގVI[PeOg^ISWCUҸq]i'2 -|Cdu5}Ŵe,Zƴ$4k;fzM mH4p_o?t E؍@_3i oL ;p"dcn:j2ck}mUHM.l/(ږٻIMĐt醨hǎ 8MJ}/87?&Mj.+`0;=0/#u /85 _^&ɂD35#HV8i.l&0̐x/y. h\LUwOi:/ӛSBիa(.('kvJ iL Oy{V9lNǬ*e>&P dW%H!L 8iSiQoD\չS[ӇWqDJ }]a8F9ֹ8 >Pzl_4L,hR LGmW qÆ5Tc7ysyR)#2}ڻX.Ua:nEs'9?Ń*YC:Rb,w:Odv#&hyY~/H 6' ^%4gI \;pޟ% |gS}9ݜ6zʚr*S"Qvόy uˆϞ9SHfƢʝ2\P=iD԰K j5rj.)Dػ "nu19X54$JqM5]o&M y+9%hW#vTbsbɝ!;* _b A ,eJiZgy-Uux9fÎ{v4>d#iG5pRm7b$6}ѥ3}LKs)@a &m%׏2wQ~Y>M923o.C U-]aܾ{v ti7֑MTOQ`v(Rq٪)nՠ[VݺY>OpZ@&Q])9u|HjZ{4vs: ұ$ypBz'5RHSI97c+t̫Q+U~_W`gq&񂒏;m}p4p!bF_b#nU+nT{3@{ǭ/*C%/ -`yJJb{q_1>ۼ-ž%1rx H5ᬲ c`آbÖ$F}5o‘ s\tk/6o"g>^72tqu2R>`Ja9VJGX1 ?|R@P8a/L"ͭ9H"+o6ү ҰDQbS˰{Q.):]o9h^$1%R1/۪qXtz5J\ t萒8.FO6dnU^6xըBt"u>)<46Yv)E0 (cɚA鵟k `$Q`nrɀ+-JX^.0 (բ}H'ra~?uO%DxX r_AO_E|eÉ<@z%:=Tc$ݩm_U2*SgL S(2~ƨĩ:`a{=fÔM1 E!r0XkPcZ?4߀>"yDO>+BNJ2V]nmg, V}ұsﳬ6 +l씢O/fmtmho`9u* 6Ƽtȩ_!m"4 vqNB/R/ Gf}Eɧ&R)]tJB,Y펆hd#|(JӈK2NЍ66`'b T-}_.P6Vy}> hcʨFeOX#**ߍ7d'L6FqfePh(楯[Eҭ5V9joFKD^ TQ,ځPh̑)FӖO>lOSA|k["F(gBV+AlGށXozyDH~P+Oe.&)?,LC_n;n%HWIʷ`)9ldƶʕIi ٵw6Am4 yI D -b"׼:~Ӄ<8%PGsgʃڜs֨*aٙ,v 3f K|"=1EF,1{ɪ1y$] 17j3=.bvi_ -/m/#VgS\O4k- zE@ݤW\atD[(;!euewdoWrL !i {{kX`9LW $'#(x G}c}(SqLeR=*(eM%A^Hl7$VҀ=YuPLoq.dfv#o2G,ُ'){v,CK]$]wH M/^Գ %]tyVOKV&A@mb3h˛8-av"ts4XEaa9~{ +5 Nw /GDv s)0;Zlle)F6R᾿iSf6h7"YZ yxȕhR([jf8_9-&" !'(ܷ[%d7An\eQXP⻟/*䞸#=$UXFTw31jכ|Ŏ֊mSəL8;}vFQN>`p}t.棷pUbj)`l!T'M<yr^ M嘮jKX`VؿހXRů2ܻ:-Lj|%Q"Y* o9 UiOD/,Mv\eD;ݨ@U.H?Yіͦ Eg=[s)8zPPe\DF3uuI2v-2-M\Pp4'^~PX׉HԨ9HXZ/DY2> @64'doz erXRRh {4{E=&Jt*1ROoZkYxA9nQ-j`_bLMF]ǧK.^v%:+"Yj xlC?n?HYגɬ,m|V^۾>?p}#J@eϪK j]xo|(q ,]&Ȳ} VԿX37 oϞNMϣd-9:ͤ=  Qʘݝslj^cNd㸰,xhR-B总XPiƸT-}z1iPBP!c$c_ctUH![#нa\VcY4|dlCtmQ"VMFKLoFs|0+gY4IS$Gx֏#^?r'0E㦩D{|YeO`V|% _SMڐQi~b9'aN.OaFj]ыKwGپbkeDQ1Z8K,ik]YqˌӶaGVGl]nQE#MI; ",8G0кE"WG.,R3 F377[OS_I[X)YŲlIU~*;aUk^$?`:yHC#<]?=Ү+&jZ)"6T 1o k?ߜek?i&"c /A9/Hbم=з<+؃ 'BG$TxMٚ2v3^k?9UCMO1W!Oٴ'V q+{~"ӫNrgVJj$ZVO ]}u_vf!ޜJٵ#`W.XDnF6Uئe`h1YELliI,;6 2 x IO0tήdKYR>}yՒekW,R*AѬ^z JB)& %Y'I'o'/婑$ WS"=t{Zf&,|[oq"B4 KAgE>h,24iy}*tp:W45׸ +Wr +wEJZM;,a@`b(HZ_xڒ-SX =<ϟӍz=I, `^G}91D<3\iIP71`<% _L> P5 ےͶFH lp}jsPW<"hb>W3e n5w@b{ooQ̵vV^s7Aɍl^9ӵ[ޚS&R9eV7>y`bv(:f@:y8[yj$\8p/SSCҤ*Vr4^_r|%) Rv2(yǞ[x} G%}JLzoz$܂i>k=ˈ T qR*sv"Ag+GV6bįLgM&FrJTVS7;)^A]%]x4h[Xl3bR :9(D"kkmERjՔ5ZSA'IrȗpFRUim$(fY!ռ~V^ g,>h$pK_n/B@yZaҚ3j%o߇o|X(| 5mq`*ch/5mGwgP֣u^%ҝT>?Fe%HL)JfF8ͯ|ͻS.S5`Jnt=,j{r 1# %Þ6T_:jBF^8X|iCb M Bc& ֟?e?i>"6*Y!=*sZKӐ4vT`Y%Do2h'Nzѝ2mv/ݬ-Qv5#ÌfԘY>%vyy>j3kyhGVN)p9Fmj |T$.P!JM:H] fJ%Ʒb=Z0-l.Jo-qّQA|'6Fe>zkב`' שGH zpyH`hvgS v IeBfDO!s׀&C({ofa,=y=($/2n.\E=%m/OG󧱪筰p41[u-zr9,V?]mq@ `׿"N55 $FpHOC:vT2K9]PNG[_>i8s1J1f=tnôu=W%l21>u}őx/ ; X3'Dx\QVB׎M Yr5϶ {cq@LdUA璪_0bO~,S݌9i8 C+^J}ç;R|!r-ڣsYQ N3 U}JռwNT-u xְRr9a?Cm`6E8Tˆbӳ-V`.NNoOJ8OKY;HRU\DJV!!бߧPՇ^OU F"D|΄>;rg>mb/+sP:\QfCB }ij]T%) #]hq«zVŋ+wJ!0|~dgIΣxx}UômHơP>1}l Sp/8q݌Ac!RR9n?Jm_;z}H7xr6`r3.ro?_バg74/JdT˯3bn~t4ZV7Z n{x j 탔o'O ceT⢸bf5l|eG qB>RNrI^%YapM.'j gnW|Dt>XȋB(=qEآKL^/t&*uMZk/L`[Ǡ{Er9-ҩC I~p%$mDK/ң{M8Gz~ukmv&Bب' Zi)U.*}|0󃄐LAۥ 6}d\`1E忥Q?&4U=IUuF'EoNRZ]H(s8M`c!ՙUK;n}hV5Y˦[q;xҤԦ/M7/V)X1+rpzI%=sa6,Ҽgb> >{%w򈃍M|lf1\ޢB΀dA3R.L:1GoR_TL`ICܿYc[4tdm瞨[~\rL$1~sV(f <QVcBRʂiHe_8I mXBjzx!׻F16*;pD(&y4C1>T,uyAL\JԆDJff5ct_nĔKVadl ţY]~;w \y^&S:wX(BDr='s630yL#B"(#_~x qªIc.IA彟K;\s /q@ PĴc]s LF-%2<)zaAK%Wf]>$يNJ'׬gc#/typT-'d,n;4'v9 s~+1kۊpM4i{m 0/Gl35V󁜓K<\o3 @ifZL k2DRC?5Y[ZX߫j/Hvpr"IAxZʡXIT#GEhʞ+%tO2Z\1 #VRʸFz61V_)b +Hx`ż= 2o@QI&KPzU˝<-й5˦3ayg1!ϳ%Qh^^BAh/4J}zSO^]׿l!\m#= 0MO z}ɹ6aaBF 鸧RlSÏ8 Rkyiȶwjó̩"c9bsz\ɧ$푰Q+約F"*(}? EŬ%uuC^K+,ҩs!~? pSEt;rFObA- ,'pہ]l.3yV 5TO1rJ֮{6M^/n )DwRv40u#4wΦ涁>g,{_fœUe6ŁJ)cn0x1~wGc$if=Ec) ]v  DnG **:db/'̞z8)Y}^!2a$І,5g7z/~K*7_d_Ls- );BaQo^/aYkn_I&U9Y8+`ˮ=$B9RZb~ףs&L´va;|(a\Lu^mLR{@§YQ.h!GւүD¬5/Zn.!zgcGJGMEFR:9of) $1 S~*<`bahm@p5IKj>f7uv Z9 $Dٔd7%sy3Ȋl{)W086Ma]KrgkCnɁNN0Va}38?E7}"JڧQ#QVҹ˄lWH+Q ja>d56h ښ@5 k>uqsB 0«=+ w;O¹@Lc#jwl% mD|2__akx* < u뛩\q _rA΁"lhHOB<e:z6(^H*$r6}_{V"-jxk^~p7Π]Vpۓ}z|p%1=FQ+A'۞Iofna@QqKZ'H>8LuIU,9LkO 3 ]%P gJVD0p[|O蕭ȪlhCuE!vGY:O /W#m宦saMGk#ŹK7\qUÀzf5 0Rŏ6zğ!^}n'ayK6%_lz Wc;Ƶ{Wmop^e̫?Z1rк }<-c|Z"TUָ(Ƒf9NpweB ;K^RHU9U ┓Fqg3Ǻ\ޕYZiXs!g*CC> "yp 2\KGC:`6A{Oʑ`sy68+Qb}EYr#'GX- gC3i^Yiod 4ɞ${K^ye]MX-F^ OOI tusKI[r#k9_&[ :gCz=l,uI4ap[&bW=ULa'$AgXS{ s i_ \hZ#!K@=+C1M+SPC>OgGSYXtC[u||4Nj?3mT%-.gɏדCݯC/{D=n~_$58"\fQN7Jp.2|jJ$\ڟijDfm2<(4AgFw䊯|Fߘ/|xu]7I-eH/U53/ F^_+PN4$|' qFKsýq>/-YpxsMp( 7FlhX"qL2]I wXĬ=oWdO]j)SaW㊥)җy9`ݳ v<*=Wn =XMDyܩYGo>ΗL`t/_͓'φ*0t?<V"DeA 8:_1"91"u0mE(|<Xyn9fS!2QZi܋ޛR]x^R6H1U5*#E#E5\x,k%DQ(ͨ/biP.;N(IKt8qTMN%N & p^*6AQ3\aS .9}BNM'Ơ^5sBcK!r&982 !=0~T,>jeB. F #tig_GVw y]H)oٽV|S9G@g5-Vhm-#t?G(ܪD%NޘzޜVq:a|Ҭ9=L*m>3ixp?/,.KN&/>I?cX-j 吽ZcH"%Jno#+&{x5[d\Kʋָ!#x~m. 61A_[0yeVj^YUGECu\$?P\,Ҥ -s3qR[dMKy|o~YvQKIT5Efb Pqh!~ 현Ux*075DhL6dB^ZJ~VELTP/>iJ=xUMT';{jlQq )[~N)vhoRhO3u/yAzXfب[#,*z $ydY:k6ל(zC 4Lf!ō,\< Wv L G}I?X韋zVfkjg&&FH[3oFķ=O}bE  5善M{,h{R}Z: m\z4$sLSuP/9~]ٯs0'.+dM[ L[ ښO;;hǛO5i?F_7g?XrFHpr B?)k֒Skz7h$<A't'8] B)7cV8Ⓠ0#*~@WEJ-H׹ %s k馝,i.|2\;h cS~dzĝUxM55Oay-:V4LaojS`eq(1Myہ9_+§yyO\"6+j*{ܥ\r~ʒP}4k_)&p?!i~{ ̽"{x"6"Go+R)[M^};Xg, 9wȢ|Y(1j)kȬ O ,&9.? u*N4=|/kT dm:%T׭Xaɕg|[؋i??sGϔW 2,|k+ v:@iDbWM|fg>S*aq{F:Nl$ zctvK, V{H3-d٤гc.Wh?ԋlO*Q⼐Ft,g)o9 ʣ oKX/&FB%^HD{ҍGc!g⬴1ꔗT7](m;0&$Ý#m??TIL~ս0b,.9X݋rڦ0HIԳGTI>;ó*x;у`;h1R t+&U~:ž~ Qm)>גٔ[:&}*%f0bܴ}A.fmkeT1uӽ;P3zƈS~H_} -4Pa CډK+xңQ;XLHƣ~P%iCeJV}2o W'+"z߭ b{I`ϑm7Jኔbr5(^hhup "CmxHYZ͈v~Mf:8p#d# u1\6S=F߸Ryomrb6W"޷.J[5gUN-@I'kݩld3m ILvYԍr&=7d=r'ECN=2uYFj$O!&DVp0S8*wh*f`Y|#/#8DYp< ImKMIrh2ʼn2$YLGzMz9=ShċJ{fy-R@蒓RXm ~@~b#DQaƗHTEۓا 2OܧuCDI@dP_;ΒlO2:"ϣ|PE9@!3${Je=82?g7hqv's*x9/kSᭌaewR*ϝU8k NA)_Oc*螐QW('u) 9h|M͙1 sem\]Qsko0h$!; uҸ>nqljMT񌃙G|ٹ$TkR5b6ș]=ڈ /ۧT! i  .g*$adOwN {"X%cAx_T FTkkjƥ*IokFvx d@)W;3&J\X0jN{=*s>j~WCEٖY8-"c~Eؤ>/½pKu$ݹ(EeFef "VP; BqIS ~k9urKJ7LGK&2cFqc,GͺAze72r4 ʏ?C7#`,#( +R@j:MLU>^ :3*H;8* swV1wnّ⢬0,&焷|ejZpvOF-Ƅ؆%PG%PכI2Ē[#RёD%l@B&+&%H̶o9.XJ"CsM|`A3!OpTpGlXNȬg&ag s*a0sꈱPd&{j-f.+:7NYIi $Z ՗cwU+]+Bw$IHMʏ23㻖~-ϔT2[GצԏPPR?E 5Ƶi@^!LScpp0ea1H5j~\<}!|vQ|#p~aguqW= bM&r=qzc%bNc} l_9}EudkɴqlzUn~Ek`hQ)TܱZlytQ 5e`dVCҹWf6Kcn9Z5|8L Wol3ZcS>.0pO\=p>H: 8\"/SfM@Ř9ƭ=/{)ǝ%zjl@Gzdly`EM6{dNKLLϊ)Ƀzy.T[Ksf)sj?{}k)(Ԯb0' s>Weȍεw jm9fǣ =}_| r=oYН#3Hηwqimk 8&d^~L-LOXAթϵs8 dQhFV-0ʙepޑ:kFi8DW;NRNqIJ]qWhzV3=:?'m瞊_T‰Pʰ(7Kg)_JW]\F͛1. ]B%H,+fT0= sΐy֏5k#qE(Nx[YM/Wɵ&N<RL:u?v|5I2*zGvxLZ01J|\{B>܅ ﯽY/vrdY|lf`bٗ Af&D66Bizrt2IO1YA>p tρKpJTJeO)$/㧏e癃kIDy&RUdZA3#-oJÅ7)NMiТNz~6[ #-羃vN0w_Qn|h.FLWgd m?\@&ױe`O.`%͉ۯ;r"{\+GSKʿFWqs7p՗/4;yH0D}S9[V;bTKOyK0 bbx+%!̟HL,o0.(. YG;}ӡi(!tSkGFGZD*&si`S3+uAe9 cR,@FQc =/y6I2e֚ET$hݡn+ևd:v$H! #9Ud6Ґ2/9nM^H*^4O%DƬ#/ 7^̋2ᎈp*~ JXhV3$ ?mRNj<Uz ݖ-gLLȤвR!_DOVR-Lm,5Ԗ* 'v-}e?cyӵbH&撸oI)f{+ZQ[?"lPFus+AZ}`y~X% [J`1$~/n8=e{ T a 8^ &n5~x[ 3p;^27[Y!ȏ7z%fd/ 94^n۷yP}[ &Z9a!TljDCaM'#Q%燕lq˞DnF2IqⴰgZK&É(FR<1^4ٿ۹$~zTTH-̽` |j.bpqH|.?waGFeP6˼zn./,;;yg^{l̻uw%p`箩vM77eO MA;49_1הșEl- .(S|9)jR ɻZ'Z@)?:jpBth:*ib-P QMrǡԫIn$BFG}O})'_π,r ;Em'bOn356CB59p<PXxy L4 .I q^S#Xd$"PL mo_zsh>֛u,Sp9䒜m4Qo*hܨ-qX^/g1s!l|ڛEyvg2߸Wٙ4Hn_AyցBhRp[ox+!"F{_0ù Rs3Gvϸ>v\*s7 rᐽ1g "p.=$n%ش7  bӯY ױqYz23Ĉ" GY{6Qu^"%NaE `u4 MiL x$_J% -qme #P{5I#ÿ9Xcn{1[jE^#m 4ц}߲(^R$RtUu=d,HTp&ۚgNN"m\xi/I _cKo@/OkHgH53ӲoRn#}:5ZX%_94Y\+r{,29ok$pӧJ嗤){K< Sx.CHV ٮto=-"޽)D.X댟!c[ciZT&qTgeBr_V/44͂fb _*B7V /Pne xN!ǟifLW=#̸]2JYkq0*w qMT'd"{/5VOSǒb<6IU m%:l'lx)EwzQ ")O"' QqXq! Y;|-f z +ş3r=PpٕrthCm5V7QABE>kHd_.)QfzVWg2ef_ uʙ"aVZF/'[𗶮*wUF7 cGePwq+Ţ95*ޛNy6ky${RkB 78+p( wvpiB |+ʌ_ClR$ٷvQ.0k dilX=#.r땔.])jaaYAFg->r -ɳ1װ+LSwE,?ējA% ^W*_+_R}b/1_)";MЎn v+Z4r(}+:̃|K%>}Uqr11oR3Pv~ڂR,j~`0'׷w.`EXBXoɴ4jԸU۩qPW6]&}5N\SuJ$|Ka"yzxmȔi 9[lÿ,)1Mؒr잉GڅFUr喸ߠN!֔A:Ŝ2vF* $7BW~)a(CÆGؼJ5s{=TT/^z6Wh!@#D9ilNK~ŐjOF! ̲Eopˢ$Qҕ%v&6QT+?Q3/'@ȂBnd8%7bUD.q跫=NWDSv9E[E)(びh)n~KG$h u:xeY? 6w}%[2n4=(EQ=QL}w6Y3M 1n>UO5v qNں 3|NA9ؽt&5fM㭖@++х Ow^/=Vu"=ifC%A_qF". RMo7܊oW Q8нlu!6K_lo-FG&Qg3(IjlgRp-=Bw~^# S{B\Ee}uQ=z`1]h:UĴn9Mƃ*owȚyV?5͙"HQQbϻ, ;ǩ󽛋~oCޒ8ҠGJ}ǘbaD D|0`pFsD#S Z)Ok#UXEGFy{2-ϜjE[v4أ2hNsgjI>0 Jr[eEO@+pr4ˋRUgmF쒢7R.}ұ1uDw*Z FZ􂮹V;dߪm_+ ~ƽv cJjaFR>Tҥ$DRÿc7ˢ~&嗵j#Wd2~2'Jk> ra-Uκ*_y*9KLHjNHR7n`BvIv*e.UGBIpW`ݥ)ԲyitR0 ͔g "B ZR#Üw&NaMa*QkQ.9LP3MG\"OG"hjQ Ca[rR]9Zd̦ڋ-0OY[*Wæ%ǻaY;RK3=w܉#|DH/ؓS.XwQk7FSs:*1ڑŐ:x}R81+AW 67kЂ /~@lQ2i<~NmL ҔW@;RܮIg~#o mwdBQ+[ؖgZDH9{PI&[S%HL\;HUs‚F[>T4R* 'sj,U<=`rPj$8돷=N2)<"Ц`\t?u"tArHy}CMܹKhL#Nþ)2as)5jK!N*9i]\Xs6;J+h媾*ѷxlˡѾ֨mdjVm#$}|*!qjBS26c#;;XX;#+E]QQt[Î5:wD]k@Eʷ ᬢC55ao(ykSW/+R ͡aC/Z{l.i7Pp[܉SیܼÇ_)U.z,Pp|7vfV"q#G#IeK^ f"YCRI]W4~>Ϛ*] ȄX\X#)\β-BH7g!e7@%IaL%ɬ| $O8CB`Z0Jˤ.;W= ,2ۭoRqݨ,jRLt/G|n2xkD93nN렢MN1Mm2c*ekJ AJv+յ#ef DvSD K쾻)>wj s d!oMtTX\JzBR%isUuNܫ18Kj8!w#㗒ZQsKTߥ4>P9ד8Eȉܠc/3V` QfSQd (z碇O.c%..c95wJ [ @. N|xLOԁfx~W!ΔsE\Rdm*1 Foe.g Xn Pxpt-@SƷnS -&5q)L AֹTZtZKKѮ6P(=xUf/?߸6ׅP5~?Ok<]CgPPI440;s+I53SNM]:~pB }? yr@N}NMsr3ᾣ@Վ*fވrC\q3.:4%3>v1Bd􀽾pIvךdJ$b@8_GzV[դ]@pe#%~J0g6g]ba>;60VC}jbgqgb_RʘǚTio1ײCm6KFym*Uh=;71jT]2C .F%^"G^%BUF54H%A5SS+ByfC?8{ Rn)[Rvb"뜳TI^--HxbR;Op"3o7@{{ܭOr{ro@bEnǗE(:nʾUTuӿuYUIuF>~&8 mZ3ܳd6L:#/kw$Q;ϹWeT(%cK@dæ(WB 43OBSu-mAhIj{I;;Oݳ11(, ?]+ Yhk' FX"IiaM 2F?yR>8Ի;ח-(Cw35TG2迋cy͋R6|PeD+&/=Zc8V*F3n K$>ݱ1\4>u<< ;pZO+iU_wiNF!pjv&Y1)XHꜪf/ JZͷPq{P=KC{sI QQ/^4m\߲|&ӿ`VϞG&GqTE [qC(]!劤[vfx:؟MĿm޳C%i-Ƕr, l {++^m%IX̡ho%)*0 &:lŸCk29݄ 5DrG&}2LPocLP/>~=拾r Wj۸ZCǕ`MS).6{iI]8s^dw\ܤ;6&ͧPg$,vlc E-gẅJc꧚V+r,;-U>F%z7^Րt'횻 *@p!U7i#Ilt0?M^*䥄N%[V}e!b{;y N''+_^4Xr?RSZͥユ.%/&=sה::$yT590?%Pf!caylމ&݃+$Z_KVq:.e4RKs8oPJC 4"%a9DX|@dU~Qaf* ViCzΠ.(Iɭ?z\l%A"ebSy.FdR&aˁb98ibaYx*s`w ײ10bL[aAA\&ڎ>Mg=[gԐOlg/b' !y~+juZ(/25ݡ`'^}Y摡u+r?TT}P'?̎pUb;iҺi.&qsƗ"-N<98u>YRyC3!ғB] rh3y|h90rhkWN>c deV1 cW {©UӢz} h||KXydXG>EEūTZcòZF5 V:v@5xp Mk^Y!xG"?遡-ցPxJCT݇nXoz,4qDSxeb2y|p=[=Wc5&Zd9fЩQ#U6'N-ZS5MyQј 2gq6-` +03 z^~E?fQҤz.wӟiYt%fPTA ߔ=dD&oϣvOgLB-F$+rw(_X6ۀ>1?;" c32틯ٳՃѤo$q[-*t/ݺ7DҤpŶGB>k3wDNIޛ$Ow{dY<@#7ViN`qG`.(Nhf>شw'gQkV?C;_iRܽ)0-]&Iό٠c Q5N;/"m#GN;i4 s(nqjhuO\Mh.1a?e~ i7§,HM<"Zk<ŰGH,#M0Qا[uz c"񽯩\4u 41~ūS@.pi.]e.D_[jt;*3!H+l@F!sOQ TIvTx$1yDIJ<ۓ5/3+E2(#nr,{PmH wԭ9fTVJH#Swt%('SY~" =R 4w)UUEP֯7g2t%"  eз;.䖽%BT۷Y{ɺPfti%Smv.{OZ܈_ZA:#.Fq[e=ÝbԄ5"a цt%v@z1ͼgv5;~)Y9M)s.cQ=ڜK f)V.PFOu$׆#h(&ų'o>c!8+ǒi|g֥1_@ h&{/ ˚0>˜S߃>օ̨J"Az|UJв0Lg4ɻwVr_+ s IĢ{UN d=z[re4WsL4 q l5>_+݃pyrTeL˽P*T9&On]_ !Қk tg!n&>֟_!M؀s)1OA!4سpt(6sET|󎸵 أiqꃬN xg?Z,*≠[3ĴΗg3u(Giu,~!HFSipqx"V[1LE>Ϻn' Pv|o[d'CF/gMi>ܴ?;:,%,eJMEZnU<0d˧NQA. v\9FmA?TvԌ\,Neu ,+{ L d-Ds \=&<2o4_ \DD:Mpjq B8| )zwY]RV`ADg 1~t]r&sk^$jz-S!??tԞ X့a|'{Oyc;˦vqz?kDڜw>- |orQ -9P9JyRpN8٤Hvl8n3^@-S)|Žk%WM9tYfO5ƫ#ew 2aV-{ mBj:Dh.9t`W'UZ'"HN+Les5I"K2{DՒP.GfFr?dgxƬ;Z#-|Iޯ b]ðSM"(}sWŶQ^@UZu* Ըdÿ-ɿù5|sHTG-ٓ f6oXo{cMNӈ\׎ *VJ$RjfWig"MH46QuRe0<1VU~{@8%m0KV2C;bzQ~x>\/yLչUvțsw e>p.!y؝R4\.(Jx`GT2 ݉~}02> #@ ȝ_}cJ\ q 61x,0ie{f|ȊS6F༰PĊ ׻,:l}aj">m]j &D4.3c*c>n;Jg&8j'SZߊpi#to7"6ǡvH%kNrLb[*G,`lbiF-p㈂&Jek *'8xۿPRn4j"ƋOK@ Br8 >A9a9j; zvi#[,C:o%K?,5'T%*Rj⤽y>.BG]sML1-g:^hHfreKQ_R|ȉMW}[Գ= #zጁI~"bH,O"o~q.  -WsAlIl"d3L )1}x햓(Z$2ëV/{#_;"!&/]:fTKm&ʼnB-۱k47JB3B1CvE DDE%'D J\m Zwνy 4xXU*O"!;>iڋ]cu[h%MѾS+}FiĨлg]-~PfK|Ob܆1>"&ӄVQ߈jʷrg"X:1\;\;K^Шt{j"SΚހP9EŐ6}rf2+q6G8`TtYg>ߌƟX*{Gホ_|Q*-7dc:Nʧ o`Y,yu\ix,VC[sy\A쭘 #&"Mfu2#smq,(KB KWtn5[0()ZX<4+ hj`MƒC[$.' @Bd4/7-f 6=gCQ\{>Z(Ap+Kzq,-|.s˛ѽLN" QRNaA]Y)R> z95 %Pf14-&:JfqD-v( e;%?G.S[y}m %Dk L1OĞ?zQ XդUl 7lܤEkߞf9eHEj.MV*LUK>x>s/#)GF:K[~=r^,jdrd˔kB&dPteH;O~k__ۮm<{!A<A.gu޶&kKwըqic?FJEwnar:}|5i۪gwkp}8JԝKrgfs89.j/:C)K6B7N齻KwwC-N/ p l(t/jKq@ 881o*sO@Oq Uj +nѶR^)ɞlN#f# N\UIoJ(dpllqƷl4EWQFI/3d+B)91Ipei^5Z|[ "[wLMGMe+Kr??) 7h0O+&!MҰb^-BԬjH;@On_pNXZ$<ӊp&> vA%#ԺK}Q޳G'%7Ą v"c;r!]C((W|pWd*JA5V8!G,iϵh s~Yz=VQu2 BoIB 6V@c7E.Wr#Vk CZ4]HN1m <5/ ĥ.mKlJYP_>~ͫH}.,\}3S[{wmTDtoMl}#vyҝEkir縧8Dk,;AywyFKuS .zB;YP;G8WO ?X_es+,n%44<,W| Nn:P׭LG>0Ow01_l[ъǃMcmj:._9pu>Z_ܞ#)L%]؆UT*͸H P%kɦwE7$Edd:|EP9+slCosDYYK2cPaHV6){NX\S {`IQVyLȯ1}t(0#6/yjÜ86U0-V50pN\>#mQ|y sA#MSn'}wEeKD7SYM@P/n[g/rc4cNb-,MٖD ҉nEKnlt1%!_3>UzeOgqNr])Z3LWJ>|1Ek6Oq H.qr j(΁38a<0pXW />7o $jY# (IK~ /SfbMsrhKHVM/CN{Ɉ[aIu --Y4 ֌;Cw2\$ n;HGJّcr5%wĚ*b]O-6El ݸfP[aۻqfdcA@γnƩ|P|YZRKv0 Ѷ!5}xgdumnrc2|ʙׇ*`,u?pVYQm\dauD7d`LIj>U+tbL>i$UJTI@w[ŽA<uk)L]!"UЏr}uQEٍty aR)m# xVNZyUd9])6-UhA/UCV{C}\+suUҩă/ɅhWllAe` /<<*,$ } ܶO[绗ΠdLV9R2M N9Ϡ_E\,6pGiD;QL2ݫb1 rqm}v ('KdmQ֕!g{ #Q\^䜅M*jOCv#Ff-īyty"cQמXm3!X՞X.căTB^-GGR T/7&\NB[ݠoTpQ{xY]9w" 1F$_iÏ:QJFG]w[&}PKJꃚV'&|,B P"p{M/tYvSԙEc`5`ϋt24Sy\C:zYfG@EwWyUŎyw28kY']N[dH %`kZRG5t$U|F$f v$+!1h1kT?OZPqb 5>TT8L=1[v/W'qhy,3=8te+#;8l/@0ּXE|V%8[J߉i H]&T)B H@N\ rn)EcQ2a!1je6~K$AYG}YߣTZČ5,s#E-K;X[F.\bASPQQڢ'ᔮC8k L. Rf. /kby3EMQ3G`\`@)J[ΛH\rƅ"ë}=}V9\.U&=c RH.͝dv6W䵄 J5fg8aV3QJs隈8@޾9d}%B7DQLyR }2:f1}44 UBw.;lSWXhסDýe5| =hϝӅۃ1&ݠ&yĬe~Tڙ%/W~K)@(:d|,9nPʱӨP]2++d~-+n>+GRvon DX[zw(+Zט[2}ϵ8zFW뛠SexQLoHbD4b\!i ݚbF&JԪ'uN_2 T];kX f$2z*J{v}~W& 7 ۘki<: Ӭ5&оb1duw7&5|HPŔU9;؝ UM]1c rgd:_"8;#kwp?<͠-GIRlfE|4m;5 D3Gp]ZK%L72\|Yx`PS }8;tlbg$2bajY*ys#Ryò! _uH5%R\jf㝀B2k|&#3싴sAK%qRJ}#GXL Յ)inDpl"p|x np~{VZ}0L@\S׻)5[D?(ȗÂi6/Ic$Ahs"i'=/U;]뗏EW;vQ(Mj& fvQ ߚkxpNeyDϴk%;fW~=韾@IT䚈4uDmV_thlOsYJdlXbbAh))ZJҿD;ߨ'Yxi.4GHpnU[a'| 0e&jҲ\sA?ƝK;A΁Y!+≫).\M!b1u(|(kwoaf8ЭDa描O =~kH w ֡(3k$ej>\|09ȝkךyyU¬B- 󖍟uɴb%4_b.ҘxO(#BZ|/\ʞU k`Mv.[,E#塩I%*qVP $WOEa"(JEfܘ<+I*\F6٩O,l=GמvEs~bDYV2] ?RMobܣJua/ϸRPsϜpJNno,McS|i!Rօ.ӊZ/|x7mVM% jT9>t|nEܩf=dWo>xRUdB]5=m:pV \Դp{[ȴ,mIG1=ٔIrBz-bC|@1f|e׊eW~Նz\".ۚAhM(5_ jn 1̆tƨbJ(}8W{I7%E(ڐb*23y̑aXᫎCq6 F_ ']iX5%UORր66wJͯXyZؒdKjGG6HazAYwhizng8yEz -!L=UWjN|+>N҂rs/jq$m**g讽̳la1*jzbFCP4mBA D% jQz?? ^$N0^͞3p)0-Aw등X$ !!׏4'CgjOf62 \2I,d7xBӛSLo.T -<*(jza\5~tw.*{1"Z:P˘!zSh.-R+~bMu2M!ϯ}'*Z06OJ{8ex_)>6=yϖ#G߱u:Kn{53fi^{`qѷp1@>ҨbDc<| ^ƾ[&I ~Y0X7rB˧iM 9.Qm!l<{d\tOFxD_o/g >,Ebw9͒\#霕:p&ZsI]ʯd8#l'됀KMHrl@.8ӄJ[%<Yr%; 6ϭ1EbӼKD#KFww5iXۻtH.fH|vCg4QOMI mY>{͓Reȳ~ wv+ rI^V`6Z*gWt%[nq <2Rd@3E3l w#) [?OJ)2!6-/)7)FFW[$Ny1QѰ tx)[yNՒl/kUP`e!d{^Ea8| Ip.!5x񑵎^p0;^dĻm3n : l^RVHiZ=!: 1h@?xZ4`y;xgEª'j_-2Icc\&vM{sΌSK^Sݗ2< 6_FE2&AM *98DX4OKVAx3|Χf6RWo)l(β@ 4CUUh|dy'lgC~~)^cɣGTs^v⯠.4BEUN|?>xs얰јNA}ȐDWpr ګ)=s?9T2{%܂?l!𼯉a4%\߃5zA1՚BWB-ttRCyvDB''K&sȽ]*ݣ Ռ.Qi۟_;$8-W}?{!"ְd'm{}ݣuXB6uJ,,yqμ L/qȯUcpYD)B{ӵ/KU8)G(e[EzK~] ĕ}ĈCj$iyd1 {IlFha%vwf*-C [m {4GԛUDKe5'i77ogũ̕27V0w2@~?夶ijwܶݯxG@ᣇ/kZmL1<>P5">POe FF<*{VZ43Yll7m.˙K0 e>g?Dh9Sx0ڪO(R:Ϲ3*XJ(2kh zBH_KwIdJqʯO[l1z*M7v-D^*Up2:aJ0fKRJ&$$r>ϫRɗu!DP1-yS&5y!2 G8 ]Vr1݁Vx._ziHw}" )$b聈kqzF,5aLdu}ڌ&Fр;Ky FU~tdQjшKzN+r,7r ݧG<bҖEE=҄ܤEBؓgZMsXC_̎#W/öu#e3±Qd\J;A.3TdBG o7)-s,q;k^X/ާ/b쨻l6iވ8`̰4`qф\]$S:dg3C3\K_ˆO25S9 3+B$m:LNiqkCʙͼYe8휁UknٕE\DB/L?~ pȵq̉ ;5 QIEƩ!MK |A)SA(yxL] ?^< a3rF"lB"]'W5&,Dˇ G}4G\QlgbFMpԌHQ*|:gm)kfFoa96<wnE6%X[`fT=YL6q-y3՚m5{9R]Z mm XbDNM\:)v/ˤac_o-{dŎ4k"l۽Xj4F%n)<I\ u@ӉuOcUH ,ǝI efg[RiA8\sm伛m$[scҙ[`3k̥L;)˩` ̰; e4mJ$W%tz8! N5PX0ͅ~H"?h>5!%!MgHr*$ڙIߊ?25 nkQMf C҈qp m VPU i=à / !CMFE*tY4t 5G]./:M* 4V9gt`.TE\.P` jdh}C.Ow`ťU9j?;JLBxgTJBFlXeK"E`kZ$hx X>|\e}W95hd6~0N'L.FmT 8t=}P}U&j TWKL}|rm4 S푹sk/b:Į掖B&S*_slc-ឃyQZikX0^\rvx̶gMY d^qS^"brEU|\&*xuKDǪ[-JBG6=mLލZlkFtƶ/e*FQ4~QO ;H[ϻ( dxڢ((dP-C |2߻w'@.#C^{ۊ_Ϭ%zV/.M`GNsM$:}]̬pA V)!eF tg_;C%y4ﮪzZ-"_j =i{4zUN$R|H>HzJ*BRM bԣU:_LlcK~d L!r4½Ao[gE?59jκӾLl{?Ń72_v IE/yDc2jòat .*r s.92"hfLEJ$ΖI Xjg %ӉfO_&/ ~b=WoA8y]d%;cz  1ؙ4Ymddt˚"twJ'fQP=N%3[i3Ŭ.Wq?H69=v>>NyR)yU[5Hѱ GF~w> [X\C*v &.KAhOSfgpS}NE{-℔D8+HjH.pxji/I?B.PDW@/4eOt*+B޴uFI:V.M7a@?]jDjah|{}? [2:8նLXV1(ݸw{3|ڢs/կ6(JSH/ŗQrVi:弘_ih 9+Kum՝2xhyk ZreT]URn?Չ;T X7薍*ЪNd&אޯqvWu #DCWʳ53),oѩ>B3-NR(CPjOŌnO9f[jmo6%GJDb- izHGΥjR2RbTMvj-p̝D64x)pse0S5F%+a9'LjK[髖:hi6%Y&%Qkҿg.wPM|p ۄ<]t$EV- eAvf90T͊C/IϖXk.}3+M9yzMyʋ+1OWOir3 g_ZhǝDn,Hko#qZ>'kH*7_Q{A-Nw:[$j) LpUOϵܱAA ˨lt0bt{85䅚羬agQY6nh*+q>/>.7*J3'$p%Gt Su QoowN.qNg^xWlZR&KfQ~裗\ՖTZqas՗ drsWĜ9߫hTu+M>\i_~ÖI"=g]9 )]f=Z4è~zˡ<KqBӊZjSTuI+AJQ8Dž>Tֱ=7ջ_TqImY:Ά#9Z2qI)7u<WT:H{"(g@2}?3]u_bt.r臦y8>~Jh#WP؎aOqU{OcF=\˚0]um49[J5rw@W.ή*Gx2St]vQT\vˠ!7L"SQÖDQH[Y<28 RM c6Dݔ`Ϋ.il/Y+9nC+ltecdnMLNKSdT/@O-ur/0\P\mcm0ʨ-Tȟ-<)feV5 :MVm*;/mp+%EJjceJ==uq@W96 e)j'fNhiM<|q^>/bZ N0Xq"SW9C(fG8<;tY7g*wnAbLڃmFΛw5쬬E^>@2ATeRq4ȷT飫qBcb{|`&1 .XNYft+tǡ`PK4`1[q[r ӏE\ 0o&_vrY5t45MXo1Pf;zrHbXzqQ 9^` 4DoB"i:h SQlnƥo볤c,kz$-o佡SVحK*6eU* }k9<̦@ӆQAy~촀i4}]L4d)#lNu~'GǛ@(̀9^,N O//,n1jsz-e:cf ;߈R="p_4Y/B>UZ;Fy ư䦂o~a&%WV$|_?=i^rQcALÆ|E:<ݚzP~=P,DJ0ՌXgsSkRKoQSF/6y@F}H<-O~1r;C"!`Qɴ 28.&rsrnB)-+Rt%rJu_NM5`3<=[}&o44mssa|ߔ+ ]Zy@P?vy%~(&~С\ajo^Ǟ8x}= J:5A>MåЇJnXc' ZRoݑYLq.݊f`uGY1^  Ӽi* 2!O3"!ݼyHŬH)*UrMn)1Nh!c_c}ΩIBdZQ a%2;>BhCQ5c>"E-v(95*/ڽFH ƏI|p ilcѤ a"Vk<)0rP4ͨLUTzc\}nopS-Qfo/s7y_O=qB82p-f9/U>ƛjq9My?$7a#ƿX<*r̛: 1>^:>XJ]R%& :Ț;wA7cmh5qU4f6Y[Í|.q!o͘eXLe.J-/Ouq ; >ƪSǧ"Õ{1{8c?RDKl֛~aXZ MsX ECU #~\j796G0<+=__,HlD5աS#Jߟ?ͼCqD8NOJ2viFqFkۺܺ^}`#߮0*J b_fs&LR*!7!V6% m簹Kr.mFZJ\ѽ(,bDvƝ9^ T.Չk"m֏SvsDz.j[:2as }/حoB.Pot|ɠ f Qacɗ R%AG&Jج)gUXf9 &kKԆD}Ț%z1N#;Eไ@ekbPtk~]LOlz> <-w+FQ |kIY HndXxH=h\Q߹J; ݍJh s/s'bZD_HBO gbҐA(q]>iܲ^}3zW$Qp;\4;u8æmxN"BTU|7=[hZ'xbM8k3kSZ,q(<|9Tc-APSCiYz!P@.FmY `s*{q a-]q[*ܖ zKgW Ir/i H76(f1~[~_Fמu%ܩKէ)r'ߨ$ U[_?nr5k®śQt@/Lb]$ ϥT/N$!56faX^&"=Dcwy 4Ps㫵 ބ$yKSp?`EA{sXՆy* |u -Ml{ѠI7l-0G~:GCQ  O!!n KkJ3%=B'wfQ9E7y8fe58bFm*qF٬;WC=Nci[˒:.a4eY%8@ygi&YԕՕnEt^x&^I7c\w7IǼ?D91sM{ž`rvҼP޳gR{|~Ng!gxB2Jx:̈́,7NYl\zRçH%dŸW,-:#_M 52g ­z< NZy- /Avrg5U\ ~U3Su6՛͋#eե$*DPC[a u2wAqՖv"Oc(IF#ҘD3[ẺC9V[\zFˣ,-GGv[Ey0_*DvMH J>N,R,enuʷ6 z&|peo%}*6qgݺxUB<-m˞Sh8b&cކ[jMQ0P ف֬› b sm,}}MÙ.Qn*]lZf>AV~a9:? n!SՄp(F+w okۄrj2Z\1%r#rH7 %*Mšh6v#0u[|9_ϫu֝XПs4dGM૕*Ι"-sbq_u?_ lX&nEuv^/撈|65t2dD_ pj`5CIө8'~tlXx3[!Ų/L>]O ci||~l-]m ,uMw;9:Lg'&}@zǻ.e%z O᜻o#)Ro*ti "yu哞P"o|It,(gƧR Ȗ{#1c\@CYĵ+D҆<΂mՕ9@%q# 6SAG"}gmh+’, (P[9vpKi (1M%PP|%|IDZ5LRݍ/Ӈ=;ܧ_ϫ>Œ8i ؍;Mv<]7 W%Ue:w%"k.$:zy N\b½5Zǻ Ds1 GjE?2,g•{+MxDO cO BΦ";6ט9_C9UG?xQTT)5}y_{>ɯ GfzGaHuhv:L1ˡ.:ѡF:p Y%hdsU@h'ť_{6L-OfXcS*T/֤dGX-[CZZ3Q6I{IfML@Ir(zzdJP%ķʘK{9ob ''T̖T$'5*vK k? Xssqg}v{,l )UhҤa3Z]/qU h\`a8oe^9ed fd:ϟZ}`ЫprՖYubrt8ekz f͍֩ Php]Z `ƀͤ/ծ-BN.șI̳5Lb 0xxU<zfNad>MXb Y dP:(QkZ}|(G?  rp-X0Vj(On ]\QlD\|3T;F^!;{&F5S}lDp~Z%<2jճ8WyGPjPRcYX¬>.;[q.7=Ǘ>- n:.2\rњg9>ju$\ZV+$~Kdxu5 ߇ᙜFԓQKaRlV g7"c{ UnyCx'FVuA0(JpyLyKp䂤ߣrpqԴ><|<5$ 8|vp\!zk^Jt#H$,*XP, =P5GLE]8eZ+zQ?pMČg@Jڮ:ƜT3S{V_ORC<ԕ+QczNEʧNYWZ[RM P1r!&]S- =t?$_~cMlsJ7 v ox3SMBЁفkB,4a7LDŎv$ DoVun7.X^5V 3 (L_9y7$J\}@J|bcB]JǼe\; G#qЦ"3 y +kM LNj r m GّUPUYRsnW**ڄg'*C& CK uTɖgnM=,o2/raQEWYJ%V9GoFso&3f.B R0Wh}T;R]dM":vMWBZ*e'G둴|TiX\˳ɆjARZ8H;%GΪ9"Y? ӏZq/|gB1kn6ҬsNhI/^.$`JϏtM1 LHa_*=]I塶L"bRC$'qMD z3[xW^,Tj@i Glx7z^OBD;GP] u@|"1k2rp^9%cdMHge@n-R*kA-"wZH.S3#3[+D{Ob~hY"$c]VӤʠ b5YxRRgF++z4oDέQo.YmBFR{Y绗]pV.f3;ԘQ'VåV1ztOPF[3Qi0VH;C|jKeBѭ͒gu fdvɯ7JD*naҼ:Uΐa9s mJK 75q6y|n1뿳6x;5 wiMw% RP0N y2Df X,,i >\Ich|V#++ӿR+@4m7<[qH% Y=xI*$p~ ݏ;PǬ5GeЫT2/1S N`_::HOHUUBu{w3?e,T6izZ+,/Pagm_cq[ʰ0皘"j%XhT>O ٽo_j$*n.KFYUs縨y7HPWm[VWC 2VsN"-A:Lm#2:zQL)a6 1]x[⴬BϕS9I^pA{:t^rCM.0:|)3wm]ߚXof:0))i`5?/͚~pGDq /gc9ImPE5lMK3Vc_8"QPYwTӐx ~i7KNQȨ.5EC:GmQj2/{#W6rϛ1уyT06؇#S(d< 8$L/0IK[=]w0C4IbEC,gLVMyA4O̜*eA D"(w>`6?f V9(Y}cV#EXBYiEɞW)ծlZ qI~tXz_EUbVPM`ÊWK [T-Tc%a)4%FL0Ep';^QvQ]˨vnmaRIv~Dicȵ_p!+\I(\R&7E`Rp8fDȘix_^S~J+<~Bngဝ_f*QD1FSod#7aD.JX(>-踚wyJK;x,q;OK5Mij$mhԻ?9psWMfĭbv!u4P3oi'Žr"<ՙľ/wOͼ壼k(1@J.> B/IS.c"Ťt`񝙱EYDF/X tFF(O!S@C->y:<1/$uxB_CƦ=R{M[#k׽y䰙rwje{sNm 7"x.BesTے_XPg:&IAZ%Qlm\lƕL£Ue+OW^SV;Wpŗ/Sn6Jl䷯BF:%葺`qU#|\K9Ɗ8f fdA?y Pu_;PNYs[oE2@ئ?Xo>'!XzuZTjiE9Y?į^*_.4A͵8p~K23ʛEZ*oaZNͣZMeI#Qӟ hCԛS i\bcHҨq~P-{0&7Wk&kFpbR߂Mo/_%\p:z8(y9f,|io-l~_%*k Q\_>4M$~e]ɞkZ!`Mdj>;Vy/݉R;rj6UnLEIɇB{SBby7l cRJ̃:/=qeT%Rt3לfKDZê_E'sd\4#l sɩ6h6׏L#+hξ#1NHA;!3:;W(5ȣ ҉aA}: HJ4< t/{BN3Huh* )d\sRgMДBZ8ZF 0|\~\"JƗ;WZV4t ,˦0iyϤ @5WD.ra%ug㵬Vf ~XȤ[\q5uyÍ(1xP1)T%=acNQURzke$.A“d6`d~<"4 V[|{Gq딄#0?S|+LtkKj  dO~|'MȦY>k:(cCO wq}M:H6cU6ocQh{Tee[싓 @T5Ip(Ѣbj2fۭV>ҏzO5i[>R)K&`R*MJS.0AcCAt5 `~1ý*fs Cő9JPR6a-g4";CzJek@Cbng("NL;ȥ=OF9S%c >}~(u ("(X,ډ%nާa&!e.키$3fz=Y )ٹמ)&&a59X9_fyʏTK%:ո}%#}9Mv ݙ=2^a.l*@]w#վ|| $k\#ad9$G G_D1)2bq `r 2!8I)mrMOꡔ|yByذoѴ=Kdr3VQ FdzA0Xe6{iC &%uG]U"lSKL}'P5$qͺB6lӽȼCUssFМEd\J~Qy$*:ʖϴ_KBJ5ڏj%N\ g)(~(M4-"2cG(Qc cs/$Q6Z~s۪U6RIVwD )3i~UM.UITWly-F-#M%̉AI}jK2 Ql7c!ɴNvd:%^ 9①OF薿'Vڂ*nq>g._'y>gr523ۭ..Udw%Wν֫yRSnL"YTz܎gEk ^gs a5jɣ4Q9y}8ѱ ᓙyӉzIRWu'bn(Ryk);{GT/su_L!d qEw_ >8u6l*+&ሲWkɗ'PMkiZ ɝZeie,i)\és`mحxs[U0.e L FJcl1JALWHblw[1|_'_?Ek;\UC4tx%Kss/hg4:k~ 9;# ePJ(IR4+z8$v[u=.6%W "j)Y_tS<6$iȇ_y}V< 2\CL)n15Vd4LqEJ|u SR̽{(O'5qe|qt]'!j )1ߠz\hm 8 8MUnS==g& eݽ2gj7xz &s9^,].eu<.yC4a{-}Q`i>q#E,MpJgMu&KOZDN0XE{ЬW>&ݨg2h" >їDT'#κCGةG .VFwhOh.CKFۊ3tV쎋'Wk;{ϞSW4HO:fD/GOS,m'"SH|T<7Y ^krSD-Qt9ήrZrX}x+k"tb )wW<N> +Y¯ 9}9,"lX D!TVt66\NU8pϝp2qbٮ)9!~δHCU=z[k K vݵGdVegV~ %*ߘAU: 9Ëb.Pj5s%#&G2PGGF A0KM϶ K61qNO?;-Ž a9aNuݭdn'ai0;u( *K Uiz+65{eyhk};gie]ULcec{3 FH{f1x'S)6 Ivegv":Nt9{ K#>X jє6< &ܐ$x*hP~f㍫U`HHLJI9;U5gҾ{>h-6EReAVN)6hX<=^NۧѺb)י@J Kdæ̙QTntc uSJEUm:?W²n%g {I'"?rգ~r'&lc;5qO@nZU~IMPbB$J1*WZ=v* ~THyyr ]jBF|R5czZo{Y㿱u8,/BF,%S:=MG4 W8v734˘Nk#ar0H, + 0`<B` OIMlIEdca iIJjC㳨CgY@<&!UL?R:':L78 %˝v$oF$!&;ݿXYr :(#HG^ EI,E֎Hrm(+A Vn,W!JǙ>~j-JNNBO5[j+M%twoo*](-P:a-]#|h+ *5*m6kj2P#fS9iV:O:uzeK)Z:[fNCCz1"j82IjX=#i6> s)1j0l%ϸ}Wbf(-Ռb!ڇ6?8[[,Tt5q,ai/}&t=PB*Fgr(I(Hf99 +//Ƒlu?3Y&ϼwQ$I2x_oχMQ&qT댏ƌ"Cww{B ghf8^w IX4'(7{Ƅ1;qN_./*~,BNkx'r1{Zo*?v@X59O鱘tIJMΊo;W #F,Ma6|]XU٭s.$OnUnZ3ԝe8 myd˛i-g4b26S2T{ҐdCc.,`;>QrV 6˫|7|``^z-J}XqMiCxLb3{Cum$bC[Ի5UguZĺF[#u M 3 vYڒǂpemO7K(aw& vN2w@`|Gse [@@YH/I2j1[j3M)khhWmDt%Ӛ0b,+b23ƽ㋳A [TdkHǙ46k$DW~pq)/l <ٸ)Dh$Փ"(4$ͽZO\߁|(MK<B2&A"ktSC]ޅVܒӅvWI}eCV,jg1YUD j*<⷟lv0}U]Ŧ{*-C54^:eHKF=xKBIݡ4!;sM"qBc0E?B{u-!n#\ME9w'HtTG@n3);yO3;cclg^ ^H= 1RmLo< {\tU[W 98zń(m OS.dA!VLQ ȹV4Q:1c2 t˰+\ï ޣ86񧸺PX6/\:bK;xE\'){?_B"ۆI7 ʤ##RUBiU$)x rH5֍(]b9i-%7⅖Ͳ$U䢊^։njynɬ]ZEN w5֒ՖxG~f- j\2: VsƇHhӍra2TN|r*y/S;SAoYd=ѐcm(=vLpa2_d1\v h B}POE0|:LDx1///bb/벅ԋ¾1uKM!k0Az/>K}WH9br*o$Y3犃[EH%cR.๚V3k91[x1=>1p~SJZ6֐5 OZlۆ^3>mEIiIE6ͥfpә_SM'=o nnFɔt( 0D:tĄU֛땏3a:HJp<J} hN%b#&6u]*M{2#)h.1G\r/j!\zfۄHgqY#lbCL[-3⮭,'ZYsGWqv(zĵ-eŴc/bQ+Nwz"kIVew^eI<.QJ6/9ߟQ`/`EiW4bHlstW̿>L@n\bU$]-rNobO|]GS98)!h'Ytr[tYOPgAٱA{N8tvHfUᬏs /Qr[SE$eJڌYdn+ Gx+qRw1p3r^\Zyp@+{7 jPY@I.AT0}mUAG7FA4Dv6#HI>eØdkmz%)1p,3U'4Ac|VD=f= U`7 Q{O&SuF2N\1.Ϧ=Ι!%N1p`eE51 [((=aeF ʜJ ꖏR܊E;\k/:>;ZbLXN=xZ.tAWfmR]*U>r%}U\k#Cu`#:5g4eZԩMU5. I/q9жCrrnl-K l'B+Wx" h=ETN/BEAWf:qlb:K z6$s܈&xI8L PNwق^pe6; ;J&{&J166d/,<+ \)0nvXRy(=YHvg2Κ^lKƅfI+cHFMs:/3 F3E :{OԄO:`C7e`MRr0+Aۛ3v>@4]XT5g8˼,Ky2!s.;xv^5K+`R_~`{{f!Z_s7EP C^Eq'.HrΗAnf2 .bPA@9XXE?=^,-M&򳎞M?Q2lU[Mi<_hig"Jk%rw",&6{7ǽ孁|V͵ˠ-PvФ*c%lZU@TJQM圹V8D!)nbTqwW-[5QhnH\"4#3g`HrTvK6e[ JeOqtC'̿ WWv/BJ ߽rgCi.ʲtye:eya-T kF)Fu"yL,5Ф,OLsM+9o_m_6WQJ0u*SēD+Ң2$FpqB7n'e ~ʈCCϣ+RT m &.Obn(PFs6d4h:ˑaӓ7)+Fp Ɍ~3P a(719MLZ44Bf܄O򯤰ҫW7S_kGB%R5@UH@2 )6_g| CG$ʕk*{KwKb𗲄upJ%Ĺ %ָ~pWfhrG#AąE;"^ALƂK?0iz"05J}囬k(bc syo~Y&0`PuՂ;ږ7û]KT(ݏŴZk,"Sj^j* Bm 9Sߤ#ZJ{E(jɌ$8 %@f-a>>b0!5YfqO&3 jϴMO> b1q{Wr]X8K@R6}XAq~gc\ :kަ` 0ESC3p{F5xPqKkBn\d&dd=6-!|Pv7ݤ6bΧ7NvƐ!ٹš9fW4P'%&,|reRMeTː_Lj˟t[UXX*&B*D$0/wf</g:x%%E!ME3:>ohm GR ZUAW66Ԅԉ':%Z,qJ*^\l,8|=L \̧$Y24csFbI}Tvto"xh$ŁZ/c"Kc1x!9B/վs+=@f!uA%Y$4etfarpeg $e@f #ȏ[ ]!Z~Y*Z-w lUJZCHֹrVC[*s2o,\T{ O }ed s6I2rǀ.-O:'\,?[NSKB8} W7NzԄ{9RDEK7* )rLd>CoR0qϙY3ӓ5u@!GjeKG#ӷkZ̎'LjW 7lk,r δlaDn`*AmB (&lmmtLU)a.ص4=o9)_B5 PL"",j[i:lpI4ʁ[2oj?L .BR;jOMkK ?]DTi;Uv9rt' Kad<ѣ+h.5-}53W{:8:u;zr`…A3JxQKrfh׈|*땼Qv4ċ%)bLhhH-okrkfƩY$ԦWڢxr/xP`\ϳ#}L2W͛޶U,Ȅӧi k}h9UkX{Z $X@A/:6}0t]3"jr8"BΪL*JSlp*G2(LހMwX1X?!ay-]NyPC -k$/v֯8'%"tqXܨ|Fds+^e2|3Zy!SUn,B+u&_Լz }seWn$?soT{'Aqvc Q VQDe5~M0oc)7Ҝ0ҫ,v$lS-Ap>T SCe/ uҢJVVCP4!2A$.u9`` A}Đx]τ( {%W(%kQhɈI;K~=0pb(r# 7JQc[|؃pRzvJI[ռ|z9Qdm/"ܦka8uՔ UB&.ҩ?>tS_K\{!ɓASdHć>s- bF~[*701` 1{-,y k3)!0URq 4pN&4,ߘ3(hF@ bȗ%v~BN$~~8ADҹ_a„wE-mj r\[edk%i ј m7]! 8c.h|W5WbPG՜hI jϣixԹa Fb֥ ~/ ww50()g'̍Rz:WҪ۵w j-^eB7&\K&3gwH3,ȊToM2ɽШ5'<*k9Y|`KhL!)#Gle(붜 )9<vB զC&ͭGm Rsd PBٛ['ט.Tn0ɩ63T[,7=;Z%:;gfZygĘ5G>mPz6 Ӽ7BçAp0\#yo2:0̊hR%>]ڲT9<1ؽ> *U Ӯ:5A39"{潍x@hepftT̰Y<(G!eAk沥8YgX}=ȷR>hds@ 6fQ`{ސc/QH۟;jIj"AD^^ǩm\ g%kvhl$(/iMJʄDe1.דhjKUSU&C֗ 6VI:7j;ZTjfIvȟJ->kBC0+ˢ21T߸{3'7\O"e8cڲedqvN-dbN)0$XW8̭rb!1ꄇ2*oN%6.SD|\2 S3!za|SuT ϥ8 r.j!356M!KUW.Uu\[mf1u]z Ľnf W Daq9rb[N&0\( 'NYp9bE)9 (jЇyzb aw@a24JGW!{f;"1.IWiq/ޟ|1sIyW<,mfMw-\sW&N31ȹ:f5yh1`V,0[ib9BEw)8L1`'9.:p4鉯JbEiаxu&"j:>xw"5v[ TTb6ph9Mx(qX%EN'.\˸= y'k.2>LOj6L]3A?x*=:&BpHhW`5`6~.?/&渴$kAiiw,Ql-[eZR.~SY\L$g Ln7+@IcŜ`DyS9{}Mem4 {'n1&r:㛪޿Ϳϣ晃 .KS!"`>Fȅh@r" uODKϵ*vI<ڲ9\ic_+\QF1ЁrnVƴ!ީLJ[u;_͑f;as,SYg# ΞVfǀUҢoQ E|Ψ[2p">j=uKl,UUfeF( wXA \NbX*g 2dYsgO ]+*&.qs\/L<097hXm|nvi@K8 \a_BUۛ7/G%A.RAPL6f|I8͹ѻhx?d}%SνrS}ưsK5N??n/,<1фWxvTA _\\{èG*-%BBmS6 K#;_K>3 ~'ְԝsQ3ҭYP|;b^ѐdaToHb &Kf`]͡i5}aT'] %P`w !SMߖk*R "- Wn0и*P#f~DkoW$GWɝؓ%xl (ʪ ÛAKz dW]Oi$7cʡS A=FX؈59q4gb`O3UM'4Ӟazf]]\}?j:Bi6)4?qnd6N )y|٤.A}x58G?4 L5kngz6SCǍOzog pT[\(耳̱M_VppxˀPb ޲ҎZ;7j:^pϵ!Q|#=-cOZ\y]{y3 mZqGƤZ}" $zc*ګB"C~zS3:fqD|MgBjec11,<&I++2֯3qNG'ūڲq&Y"u1QihG=7ϕZxGȲ.d M)z!)1YҼBzPֲk05Ͳ' HcF\Švy`wG*E¯v:s>ɿMFiAX /m _ ͟F9VR9"/ăC9nHST}Ly(jjaɉ{"t7岒~;<"FL-ϣgouqYPk1ъ6^o0'q> HW{v3?^.4(yH2xt@`O`]Bf:bӽsޓx1{ Jn= FmА@_{e3p{/CT?=xbw6 {!L:̃'em- leC)}"3aY583`Oޛ[&Qb9nv0W>uWIf=4|YdׅYf(K& du[lB%]GpSi>y/MFͬgztZ76̸֏tH_hA&._%_U3.NJV_]zC(%WMFѫvKtADav8зc jB=ge`w<+ie?E\D1&#?dg6aq__v汦*ğ%qwmZM^ss!wT,+"{}1xmgGIzDqJyLyڟHiz"znPL/-lX؃ BӃÔ3.`D]ӎxyQmiK<(;7I1}D?RdrguF!\!6E8WLK.Bx< Ny}N\Bc,d9FAO4S8:\3|cͦp4c6SS/\T/)KƻUiVG#^f̗sx3Zo]"}3֡Eq*(VD5ۚDAJ۞Tfu6rXY)Ă7{_|jK+ ,]ܚkVrI,r?pUR[8@oq|>&ͷD\guB:sSV Hcg}u:n܇Μ72'nQl] oblNq,qw ==j`B#KMF g4 ͛(+vC1Mӡtt"Nky,9dAjf: @ k.V|庴,QsQdC&u1/n38(֏`t2Zi#qۜCԑTRH^2<| 낿 ԕnj6!iͤ}4dJFRM }E82h)9CȢXrP!}HOR)HU7$̰]ˤ`b]TAH R8ЈådN*y|†5B{YNIU= y#~^H ݛ6QlhtqiX8pfAd1C/cm~ C'fw ֒kqRٴ!ۇA"ez=^qEkiG=   䩾̋E_3P07"[dC\oUBba;43O#  K꯿Ei[m<ty2XVpTS~=(ˋSUy6놡ABeqH[veyX1ω 6کلe%O %M0 ύF4Ǘ,C_'s 4'v@4#;\ro,x[5,a+E͘א r7R싶3z\U+2m"7Kx dߗ/3-$A@Iua *f_w!^(e,}&)0CD5ĀY}@|YQ}/A$<)p'ǜNtN~֗|2""جoJ2bUz?K_gYHK|xgP '#D Cc AA)Õ#ݴqE [vа;47ϓiJZhr `rm]i3Pa 3 i 5/4H[ֲ̳ Q.FMץqgr/7uKaϏ,A: ẄmgǷ\&җPI}x2 ra;f|*iM]PUdدIkRk=ģf?DPml\o(n_IQ+Z3\A>SHFÎAB_>V9nY]ctZR`xL;{~or&m&QGWD:-$2;dI4_?R`sp 8!j<"؃5N6cW$pLlz@D?Vav^+LfZ:5 UpL[=v(0rR;OCY(}cRh |^]fb6YBOk#*6uF92ns2ogB4,!~-X2z5 7v .l`~_gtQWs5qFT.E6v`bU0 5 ֜$<&%;'+gOa7-,Ouc暄¥yta ~ِxxmRCK!”̦j .jUq`^Uq0 |c7U,3ˢL8WU5eB=+dp.g@#Iã/W Ģ!H+ W=LYZEM"W5]A4t\8s"imSҫs23BiXi~ pv<;PCvIG%D~tmKOW)> X&8+_|*H܈U܏F4-pyLy7{##!#*!)DBcj_h8Y7,}Ⱦ&h|m iMbC~ȭN/7l9[季 pT|a|ΩRUKGx)Ntp[Õ&%)J7BZt{ 4ŀ ;rG-AR&&ʦc%?W~{⟻뢗p}5#9۶5ȧ|Kq[=D8Iór,a*=Łpi>L rgX\Cx<-١S,)i-Q&aqEcUY,}WGFX.)(117/ ~v HILt2#y|yg7[ʗEQjGoUSH(Ի9s{sG#`۔+(u_bNqDL}k))=9t+Ɨ!Mم N?/ /&q[3s $]c~O快7nJ%5d-ʘDcgbHJq=X7M=kqM2NؖIA݀v lQYE:Q#bGbwӅyi)2K톑eN%HCTрa'i-P%4ƍbDJEA}l-֢Wu}1zqz: ?_䉾 'Xv-i*Sxr]1S`I>B[-ϭF7!{OAS>9f9Pb4XZkؔԽ{ҮXל0TQ?Zje")BF f=0kBH~C 2VOԩ_DqY{["b63 ]'[_kRT 49Di砖!#vu8:1W|= @Qe⿊YI,>9"jMo?`Jrq<~y: $\1^3 aEsת M5.;ܹthӚ*Vښ @ mE3#nP=z ̃lhyJ$!MVdI5]ʳ}d\.+0?G,ԺD٦h6jX|syu=2w5:]ZN4]a|v0#y(ej\Hjދe/7Y]!XsJ/28|_ $UJ,g**ZdMn2qKЈf fzBB;EDVH\5t8"7S![5t(|p{cҖG;jKGM^E09ZhyRLL]HcɴK<2Wa9NWL4nbE=Cݨ5?|-$zZ&2>@eL3$vO}N3\?EB4uf"&bZ")f}:]B^v?}-<۷f0#֙V_c'T]1n}7Nj4}qARYT Ξre,7,oP`I* l#"WiȨf2~mի Qϗ/+ӯ2yrlMCu=R! H _{KP;;AUvAp BuP煟'Y*ŷXGJ%iiSQѕ5gUK*|5وԥ3rGe$r'jMb/q25|ξEU2,s([g?:Ӹs0ØF<7[sgS(\nV<{HG$]ӆz?[?k:k\>SfQe~C9Y0` #9 1m5yr7Чkyq-LlТjل:4ÿV s<\gB0v*s ;xxbԃbf4nFaR@? 43;65^f1ڈrL=jK iqp,qz%uKW@P% ]Fw45iILg!.3|zkf)2[w.j#I4XsJJ#ݧ4t(Jx׈$]AR/ wUci}":C-YAm﷣"/h59KzG]6<87E׌9τ GL+'xQz[(!4% 5 #D ɷ :ؑ/"4HP3IA"|#^zޣEVkxDIOȜ8IHEGυBBK3_E*gE "bxzf po}Ց |[44q' ^1R{0g{yE3PO߲8YV 돚2Gq3$αaXebxMuE!p,A`ɔQJ>҆t(3\Dd[{"@yF!`s6txϕ.α1Ȟx '\rYm*؏ l+AŴyīiƊduv; nT/.GY8`HSZTgi,D:熺\[ď> & Ss/ q)64n@)kI'n/h*TX:א{ɬ M4' Z)WJ%7RĄ,rg[a/N3A+ n驩_ꨘqPIKOŊ`s1iXR nɖ6 !4ݛb`߼Ijk9XPEy:< upuK)ٕ%/ڍwql%cԃ<ˤ5,T:q#}\b˲J=Fpk(xU#TU[6]hnz2";+\J=R\sE2VL5_ME:?鹴7UT"QJ*C _Z{_][k=~b;IFquLɦ.}Y[ɶҌ8{rnZ&E4m3~U.b-eY*8qe\UoZ7"Yfs$s'H*yh4_g S?wLDEFEŗn1zNhS2 _a窪dP /(wDJxd?{7uӨ Rʿ]*%htl=Ɯt/;DP'i*i}DSm2bWi*6q;_MfH٫%qo82پF$;2'\=rw*pBG;eM&+ҫXz PhNzZ*GXv6s:cݎ84_^G2UsbJ4P77g;-&$YڜK*H&sEL>rtuX9 -/eK Z,CŇ=/cqnV*..r(}`2q°_0g[ fŢԈvsY20 )!*6X7YJ{LL9,Gt=ŭA6lczNk}Nƒ&oUXS#tpe85 X=eXs\-20JI` Fˏ^ٿ=&7Gh_sP;sryqӵ +~6u b7[ѭRgFiU-G7ٕkʁh!~+Bf_\xZ2Zf }(23]E2stke5~lCO[~N U.^{ jb:=h/+v:'Pd %u3yEa85,>DT?>w[K& whHS'!>GΤadC=MZC> xD9j$[ PUd |4: l Y( n`+'*' zRLí0aqHC[Ds\]>^\"M]"\1;JAۆݎc˺ÇP8 %7TjҚ#9zQ*aTo S8hw*|%qK QHђ`o U'cgUFݫ^; L2!Zփ?:7 "4זqB*^^ q|KYWx㝂4͓>]sY IjI_:? ,:|Q3~a*ѡ02 =ƴ@&$Ȧ hg?q PtW`2O% .pF~LH..Ҡ0oOsm7A0̙wogcUiy.%PKqꄲhi<:CيtL[%j : pz]ŕez r ;j;GlA mLywqʤf4ɪ]D>_NbN\Z; rLLI,E(h;Mk0mf@U޼} nя&bMe"e@TƜz~L"::iJZphqL[lu5gMWbܷw њ&VX^1NڔwuJ2Vk4 [Nk8BefxFaJJ 5=W$:F"|*&USHU:w"IQbFcgcދꙘR36?Wa-;#I 4^ q ʌpQ2[zeK{u) ,pTB8~-t]PJItyE5c,ɬJf\#çW=^CEa)X&/;ܣk˲wLqpBc]m@|_Ti&Wsf@ -p8fYy/_EuG ŲEUgBTXɒ@$cǔ3Roze9\lWib_]C2THX(gNPZY>NAZ""duuԒ T!1FLƘI|TY͟R$^>j% 1)?,1lwmbR\LauޜYF{[Qs$(YY/3hGߍ<"d FW&f& T4 o^:jodXzq 4r[Rp(S}3 .f:}t(npI0%:q35nԿZhviTdtOzMb& z` tؤde$SR簺P"䛘&Iy6/5lBCG/׺CSYeXo==^xQ|#ve9??ms;;UΠ;3 aG"8Y[ >3HB, S$7];چ(H J}ɻekZK% ޓ"J#g L|?cII,7\r֍fdґԜ2.Eb YӜ8bmN;vy~ fymbJ I) j#Wd2Z*+_\㝮4HPeS'nq€k˜q͌i5z }|"2RKDMSq4`p,KR `:A/>Tº$YQV]C/&8 ] uL{|uB1 7 vX&kK 7߿+TF$:THcNŠ7ꢠKRJ-S{**PHEG T5R= u_H<1*zZk3aͻ2apAuqM3e?m MG)fqgi""c*.ԜZIyfj+F‡҂aO}b?IJSm"g hB9hۏsɗ~e9Dt+tb @<V9?< ;vĉ38Xw*jQRDW WL97ng~9UѨq4?M$Ec)MjZK+YEBA'AicS╏7}׽e\~ ~Kc*BHG卤\7ޠ ("2gxʧX%cvr hTmDt^s9+rO #^lw GI1\Üc7()p͜zlӬPѾh'G|z56+8io͈}S#1OSY% |tߡDDbʍ\ ٫~ʕ/e1XފjIN7Jǎ ªE{cRI^p,"f.Ph"C4_BM߯"!Xe|BkRV1A"bmH<:1KWpw{I2p)ӐIeMr̀JK 7 svH&Ԇ|4z9O*󽙰R5T2bR5рe;my[3n+MNwƶ ^EeVm>qF9_#wl:Tm3x]f8u\S>(631LG*K,͇UDMc%Wc㯛]č*TmzU%ԆaRIɠcnϐy{"$t :e.H 십EB>5qX~1]Mssqp xL?CHkB&iCa2RhsTqЫ#VDQQ?o@ CA5[sI|w-.k{DQa|1؜chX97s7 V3n;L@܁ۍk}tco'肻wPtS&lhoTe@|x$^Y'3dmp rELf P0}"7]g]kx@XqF^CFs}9f s%yO0[cid~{Xm;)6P\ ~tj]{Ɨ63- dű !`(}{_=bS4UiN2$'xUiS1)ܧ[B"UmsY֟k36Yls{=^tYfBu{"W I|g1SA~Vڹ([ʷy;d֚iLG3;2\[N ^85ˤ}Z2a=Z5}+D6Qp̊xc,ؚI߁ނ,/q}\jzb3ib(a.=.LRYQV28eE8,(ѓ?˿˾w'(b23Ɩ4h&3KwتJ!3CZ764)z4ֽtV6hndg8&4!2 !s-Sp3wfHgja}W K͔vrcfĔwh}`/돸]nEL2hy1MNrc'p9KPwR;۔e&/&)l\ !V˚vmk *eD~12IƔFG}: _p5f^-M$:Hso>lV YPXq'I3ZJvL/R-A` 9Ɯ݋*c ޡ>Lz;ۭY[܌FV4+)S .2Zk,+t!ԏ V6o yL":%9Tpxt4(|b1#oX?_ל.hx.c1tVƠA SuG}9[4j&({j4}s ճEBv @T%- K'r π%ȗ)Zz>fVemߪBe '![ﶂ™*h-O{C#2)3phw3 Os&r ,E@nUloBd'Ioj~TVV£.pVNCqqAC-dͯuLC't>1jކ>}4۸ 3ߖϵGqv|ǍbJz\dXLk502FoE`6rA֕IkbK0[d$rүSqO+Yc'>^rKѺȏ4!4m no/2Q43s0|% td7_ZqUɽTX(asH漿KaPN5ӹX 2lӒP~\~3)$ܨs1%CɦyOZfO\7-BGE7ݞG.,lRIqzbycCQ=,Xpmp٣xX`c`&Ov,SKm,eIi乄C %Ypfi1ыxIzf@Wsf| ![Xu4[cc_[_(A^ I~D5PQòԂ&^n %?r%{#m_D&39i,oz![d%xmooKzgH[?3qp ы SBBM3ԽxNҷ{Jx(̿ɵ;Bx)̍ob_u!1r;4|32@ґ9m.(, ~Lshy.p }(Q֑FZk %ևv1 U|5_߾ɉ;KS-?T=3Z*@?4ce)=e ־"qPI,Tb-T{vg+ZKR|K`v=Ss4mJSּ94 LB,_lÕ*TUdg4J\.A<-OâC @ Ccp25|eyX;Ot!cd0Z{xdL.s>%_G?مe̷EE.ڴ~Mm#S~;pXelGQбs-(Oôl}/->QMmyȗ3%}G,Tt[rڑ3|\q߈8δ[X8=2g)@I)D>|NH_ryJ[TsWQ.Ms>CuԏLB9dм0b_=T$0N6s['֌ Gr EUT&Er47ΗMڧ ҡVY 4)'^b?nd\8VZLUshhLȚ3c oڝ%Jk.ҝZbG+WF`hou`U_Bl~[ Gf5hE0} =R zA|r !ثß|gu4359֔,*}HmEO8Лcu8W8F53#iQi0a߀9xwK-xM<>jnßl;E'Hf,^b8qRပfwYE3& )}HT8A_ccup-EMF6W1(F/~Ʀ11lɡ*dP,1'HŇ)٣{kXI ;qT+ npw.S"DbHle˫WO /~'񯾎\I]K!|XHM>pM}<4aH\sb&x$?,^Dঅ/XM9Lpmۥ#dP/Zd#blUƾCXm:2(mz~i[>[!z PΫŰsa4L{.&y (1jJ7ipH0{Wf F{i9Q`aHZ<3'5pe B]Ec4GmeUV~+w{g ԰x^;$SIq0YE5wĖIZҞrTpb@ȼbjfsԚ=|BV!fn`S7TC5!ל}&K' f@[$yؽCDV6MoZsQvbju0).3wXŦ5m [,c˗p7,3$g4AŵRV@uvi@2*rw\uݦcӍe)e٩lE'5<Q 6Ky͎o5 %swsWVr1,*&JϊJ!>PpzcۜLmVd=ft2SKab_DhCv+H 78d2j$Wʗ pܪNB"-eYLcC (xS=9n~9]9%I\Y{*([/rкҁXasٗZw^X(ձ+rUn}`'y. I9rTy%815| ReE\/v5|c9f#wțW^ ,Q8 lq3xާr:.UA8Sٹ<^5ZY2kFFy'(v=a6m:DK^ߕ_EHxٴ/^s,"s1;Pٴ t0 JZ e.|B"Hi.dهђ28ƹv}T4ʤxFګAi_> ^Y"bV~JoILZ]-K縖B~z|`J{*ʥybh5l ޕw 1B&yCL|)k_.1^ Jej)}v w?ҍu/e#{XdA'1Nd p]Pe󸭩"V4_O94B'h*7sq4[ҍ_?G,eI<j X(IR\`4 CijR@Ǘ'xp+Pw_j-6f(ބrLо$v|] Ԝy9\μO,x.t?\i1Kh݈B/X}hFkg~૫f񻍱=qWrF4xo t-3zdXmcR!nLhC:y٢U|Sz:H Rt~'M-k _%2Sf?.2LZ:Z.-[oxWz*\N(Lm-H=S-40YKW}YhVQ6YG;'w$J s-K2k?:7D#i#W#$TcE1{)me4 z>pK 1Xq-)YcgVME5'P!Pn;< \L"kR-cs_\i^Du-)a"PNLaҸ10Ř[h^ы+{yIS3G˷JdiH}~3Ub5oHE /տ{${[˸K9Kom>>60(sXG b re7a: NjLTS3od~0?'WjYk#8HEVp+? CVؐ0E?L$SBzṀ.9Z%0Dj?>vQ뭺z 3lj0ͫtz9DvE,f>3n`k!,ŝYE UC !?q)K)W9qZĦ;SE:ChOü]E أ++& #wYw[?_~^d\>0`hULp 8P4xno._Q$ۮ 篶\53)ǐ0#(mĝ+Vt8'' (AL~Q֡zS}WXo ej~-:٨Or"4~ޯIZ rrW5Oէ~K*J%ϱJŕ @^RWL*9 :_OzM"k! y3:),ɒ1$Y G"–n!* 47X}eN|1xy*ɤE@_uC2b<&bC͜e=>5/k/|{URZpr2ϖPUq46qi8OSj!Ē:45vXYWdv -ܚp(.= U!ʤP`(X%u`WZr@ʒT1~E? %(Xx&yRs6$95͌>8 ZM北^#YU!5S8`i띿a(ClB&"9Bs-((~%L2̌u:ҹZ i7̇;W2\hI:XX:W/b.*cC1d5{e"̡5LzWqpVz:>dͤq^sQ25=F6>jo(hWɄج$DQѧ >nmŎQ״]Ô(,g¬yX';75=ӻ-PeA2 ObS6=OJJߛ ; 3 HQ@d6!6UIU}8>{k(މTFz0RyM(L-ӱ  ZQ5 =d".&>)K: G=6_~r7@W"JlO74iثn[u{^SYY0-(d%P؋{9E3Kalo "iлB2-JuS[vMw{ulz偘 },f֒>[Co7oH frmKw >[::oI n.։،`^g LCj{{_fa`Py\kpxky%2jw7SiVn.*4_҆gVaWXWJ&) R~Kf$JKλk?zKZIV7W9 F_NHmFxVpRd!XqueT^dhUrz5=u\/.u2{AAwETV!U;XIZ6{a>jWtSf$͒oZHS6ĹC)S8kY{fs[ <Mo3?&BDSlW.҅B5v9X@;1aXݙ גK'j f`)6sVj 7IgL S)?})r|UZtXZ3_bY}PeLI9wS- )dY|*Nk9ט)e)QdTF+??eLŢT*O$%]lSN`2'h{yE%q]B#i#HX4-7$s$j;qgk^ȝ›Y2)Y'IG1⤀ 9u\6G-ovvl0&6 iI6r(U>635?"պ> kGgEH5yD$`1%Dz"#4(NϺl{ԀlT>X=H!@Բ}S%H)6|S5Rf&%|wlF}'#Q@GyF> u/qEmMYhZ=7CG1KHZ@>P3,xzdͤ0h2X|týS^q#+i} "i'o9| kkJ #g.o~N(6!q]՝Na{hla&ߐ/S*XffRD6۵%7H*x{tȺM?z\Lr+* ˲ Y12`B%t4fi re!šwՓHZ¼:up wPHT`\+@bQp`+?6epjqshlB4F><}%PH q!1:a=,MeO4m)bEm}H̀>Bx\ckHOE)ozd 3M=iW>Ƣv'r=T\?c 3&$ g@ߌcf9!%2mSW匰Fqq;9r`yP~V8H,Ţ H@Qڏ!LfX+LA ׅw*R.j(?lsM8׷O̝iIyyrƽ ?y<*WhƊPC:#5x:CX(T|r?,J8M%|F6$n)uI2gp-Pk֞pBif]W.憯9|:<=L*K6E3>hq:_n.1jC,i9g/ੜ)Cv= H"+@YM ߤA} ו"OEO;B.&Bbgc6'lҌ 䦫rc0|fL{8(9ZR8S0-N)v8[{iK {xQERk\N.`cK"NLZg |-̂<< ._{3)]CmIXh9+* Bu,HA*s 3P`F3aIm!G_WI1,>Y9Z)C,N%EU. );[!+'\I'۟]kqZ٤;E^\5TZ\%wJ[ojZNc!1P/$vEoWݗ-zܹJQeM~EjAcDy&J1[׬W*t"Ҷwz]e~s5g> ] 뎟DG{ͅ )n"5+:bVuȏauBrXȏ.vb4}# F=a3J3Bc  cؔZ"ΊBJ8O&kƠqCJ.~,S8_ :tZamco6d_g'/+V$yj5 rƄkVZma,YOa=7"ބF! F3mˑCL{X5QtM8Rr|56qH7(47\UFfFVmsc;4JfYwltNBvB'Fz5DPڴ5F[wC8Vbƾ8~0ʴQ_`9§"9}rǾDu蹨.~7dke?>WR12 7#/6攡r˜ѦAhˊ$gH`Ɠ+,s޸|7ÞuNBJe9'Gn2?6|s.D@*LawE!.m^5ɶi7 ʂԺšz!g)D ֬EbӜ|7֫wS P{Qbâ2FbC8K9k'Afr֒տ;͙<ڔ<G5 -5UB5NLAFt Hj4-@(L)1~/tkKiMs'LPbVRkۄ)0zUnGXsӷcU;on 1ᦜ٢=F>u[ᩖJjYO\BGl։LKy<. .c䜉*͓kq9Ws k=6`,ugXX.šQ%cKDclx _Jͤ% ,M v__]XK pL,*!YhH&$I5N1`q34)+m$ZFWY ɸ|aaO_.}oVaD#f6|vdN.lAr˱pD()c ircg`]G._"G%.H?eޒY Y"9y W,'1a ,GoL_>Œ4>g ڜ@ Nqv;+hrgT<Eq2ӣ.-F*ԂgۿV,UE +PaC7 #):kt)s(fIm5Iד7So!'QPH![;!  8wpB'WMY|="0PX5xuM9`căW 1qZ;_of%XlZK;sUTiTJ\_%b$θ=/Zb)5`&?hs8෾ʷ9\K_wh¿A5F&ţ .XCfi(5}ԉ$!~X2B(YIoovUɩ*;29?U1Q@~`a-\T(GSxŠ$RfM Soˣ!|pU: N}㨐>1%s$DeԒK@h;RAH QFeط:r` atu2R&_#fp=&`|Qʵ m.Y¶ Z3ZH?.k.!4&4; ~דoY^J,ў/юꠌ3;<`yƓ *~ vdnO.jU8S7fUu3niKǤg-}7pV?iJbϴdUySI|4tŪp# tܾe YT[ߪ'fy`aYC"{'1%Y!['йuBIY7ElA/I 9N m&`8'B!*6߁вQ~?k:Xh-jcM5h?39oJGBh䥇_MWDf+,[{|AWbT% 2Z>cЇȭ_wblH^=퓷QkfE9Sh}19PMj ;IiiM>o^\TGj&Ih9?fIHO+>j,EblNu].ĖWJvyٽݚM%58>yȎ(\&bKC,ٔ07'"ϸvG jeq u6D2Ct o'P $X }G:aY5# 솩T -Q9JB QkVYfx!RܕPϖ.\Ro/y^eQͺbvu٦O 1@kBP >wӃWCjNíYk1s|o ]>_y/gt,@-EN6 OQxÝw?6ek\ĎI2>Zkq,4{]&Jz,LSB3LAݟwndyuO$InGuޑ\))nWǖEZBdT5f}b$}${ڠȔRZ#e1K*2YB MϚW'oܑ\-ЅfuLXa"H7^}l:L[iT&UdN"kTB*#tVZJ9l<DU[-dVisƣKpe7w4>J?"A>q?Mg)8g.yGPNZMH?QׇӍд_68Vs,"2[A>R}]%#֜V*c͕ (M ^3E9n.aŇ@̰ߒ)^*<*"D;rRJ2g*7axt_LxQFfhSH"{AJ}?O}̄t<B-j?\﮷ĻU BM%yrr/73_x5%:ƵѼb7\o󙀪K5tp;bL jUP$)=y+U˻@nLvp&jf&rU7*[ۨuJ?`y X'(b9fX͉i_Iqkq$ ql.6FSssJ^݅G0+5|=Ҍ P-Ih miM2Ϡ[Haݣ,R $lуgh^,Tg_&H9n&="_'A%CH?r^ /^#\ˢ[AQ?\Fka.ud3NB\cyT%2Hupߟ-!.aɓ2}iWLQsvx@L!Z/S[--^,Y<-9H TW?Lt^ ヷ< mPiS¶{ca}!@r&3vO`{Sz}-l[u>y!,ř91)yO읕B/ĽlJ6Q: 7>^^Xh8L'W]+fq!O7~QPJ=zTW$ |']kK.+Ƣ"*x"le=H:<.Hx,Y߲!d ΀,BF3ɉ"zmG; SXt<=i:_L@{ɹ;)݆*('ڸŗVvFUt6W.xcI~#F\\zf]΍Nr7qDs>Q32nQ q[4><:XT89ںh-LO|^CxMrf,(Tsc/zytSyn<{T2ךlikBg 'oeŴ]ok'FPDb|U)VH2_YF%Q.F=jiRuMnr7Wfо##]) {gɹ|߾^xݪZc&9\J!xc*lC'iTcJ5!]% sq "0~-_KwL 7Ujբ&/2-P!ޑj(WCC%zҬis7o#: -&TgjH$ˬc#N\bhjckVdn %q;_I}KKXځP t(3xVVfT1K ,5XuA%Đ.7>мIk"`6>neb4@ִ)!#J~&| #T#d*;ҢKiCZz%\3p{ <_K9 ՟x~E-`*#Oe(Z>i{*ѸnM=o_pٌ39Z`HKm.J.sIOX8 QL͂K0=<A^dĢM ľ1,҇;(*l^8*1`[r˗x-lWB8EAjᏼ>W{MQY9Q%dR_D'#/ӹQ k-OP5̓v^NU"6d"%)nXEuMDriX;+A߷)X+4nm>SsMeHCھChjna&m9i@U$<03Rzƴ Őⴤr/%io)%mϠ p~7bc;V0tm]̕|+zEU!5K/çT/uaQjūcOU DA >:Ÿ\.I}QƓ4*uJZh? d;/bb2%NUQڨ3XMIƞ[>j-90mNV̳ э!0iBi;cGм%S/[i+p>kҴKc/,z2[)V>}W ӆL>өY$<%-ƷО(Ѵl/(y BKžE9?|~|p-(31nd暺VQ S% tUS}6X DTba:WE3wٌz(YفP<&7 F61"2BjK1ڿ(æsN볤9f+ndOVTѸP~8|T1+E"ՋV)LӲ2|Wb{P`+ x~=n PP9͌i,C8 ^b<;5s;Jf itkDžsbb3(SwQV#?\8q|!,Wq##qDLq+IthH;0Hb**Z<ZQ`[J Nq WE}mx\<]%׼Xpi/hx||[04,r[C+}iNyNR ۅ"JwAV8R)Iͤa9ǃXl<08%\Αԧo^2xaNr?p)1Nkgׄh~^:F@]8âS% g* 㜳?4K\3>Oc4iyeB'rgn?ӣ'p)!V'L=/u 'Gȳ#%nBuxP1D3;0 )%qobNjV-ҋUg*Eɳa"f~'=ut98 1tE̤2纐Ӽ#E0Vڦoѿ}o/ E2z6JBSZu5[Ң{8ehuQzϻW5l0/JZ9^>0-h-, ɷxB8g1/~K>J7B[Ie&QZqG plQY`%O>U砻JYڃ| ,SDeF$ʳL6kU)D:pQ?(jbyc+mS1j HEg~Q'yfOD7(CŠ}9 {iMUqMr\ƮFSqqA<$7K=6XOS”.uLP[W,(0?GMd\uy82v90~WBhwy 3:\mclf^b+XnBzƀ'̀&?t"pٲQ+T$5I )>zFք(#ϗo B}oNjݳ筵*]cx`vȔQZdl{qyAi?_I,;]{`Ew3A&1}3Ճ*gb[ `r?Wӎ8q7^}wFWՍ8-r>TB96A%Q$,9ˆd,n͹U'A⋡i,Ejx˕} #T{yv"mG3ŗdOizWLd eVN( 4eН[k'!C|UHfs6oQQMoق~ŖU9h1N"yVPx̥PS J%[;t>peq,R:}nw^P9:TfKpÌa!bM}058G.0MD̟E yΰ#k4E܌LvF{ iNhWGnMM7 ^>HD&xk~܌ԺS{QN`ψh +/6*Q5ODޏ+ rQbyp6*A#5= $ŬeԳ>}8*ni:⤞E.5,ƌzp?kzgjƾ, 0)5eg/ |b4rguȖ嫼g5(Ԕ)5hagJӺT'aIXm0'o9po<<ň4,}. SK 0=X ???^T{{POQ;BaBޏ ?UC`Xε -Y`0h9G`'DdZa \:iK8'D@Żb!ZEɷ՗4^ؖUģj֮)k+&^s$.9XFqhOJ)5izQZUNB UgM*1#4 $Lt sMUqWDP(&A {Nv!RӬnkoROVtHӚ^kO=։,:TM )ar$deϚJ( X(|zdnG:0E|s-(?IU"ٴ(rM*/aS0rc21]-0콘zR爐UV~Y`~3l>aY ~<|qpX9xj'1H%'0"E u|FNwlRdZ{Ml៻{(cE.*q뻪%89HfJ*+:Oc7x Mh15W N)jL9w^mZb_ٿ㘩-U":dP/ߚA"dI|OJ)Ϗ0P պ6Ԡiu.q@PgP2[V{:JHOԦX" nٛ5䪝='" JTf' 2!M M\~Z0~td+3q-9SюOd"FxYKC&YYz'/OMԕ-vdzO@;f׶1w3t3.ߥbEF&0J`abbf"Jt!ꘆz,U/vIc83mKcF'ѱ/}kI e9ga̡ǮHY_O\fv$P'vƩGshwf+Z2 [\7V8mک"En%#ޖSLE9jnBIǸ%Y'dcS%iKU13xkj4#pLsr|>ogׂ p@ROGEfMUhXn|ϿY˙9kcԮMaGZͪG#q )"ֵ(2oo9话0(֑sh,Xx"ȭIЂ5bӣ-oievWʘcL@dPAo)Q:qW-f \ )'`-k#1d;߭j* 皻nxeuG H.5+-_p%eJ5=0LdK 5^ xq_(Ǣ7FSmޝ˲LVmٚ]쩠}[g^)VK'0ߪFg> ~Ը BU$)glp%櫲KǗ>V% IL@ vT#:-'Jx6D4w`իɊ=qj529,-Q<Rc/Xz[Y%36mLJtg{384xeVteW5F& >=>Q?cm>4 Ea;^f:ζN%Rz >@ܑ󄦚xY̷>Rf`F+|r/_|*e\a]*-=~9$Ǵ^X k]ewO7ۗeT#줛dW3֘PLŗd:w;3oa :gsCGcfbBŖӝv%Ӵ+j2"!8PIJge)D+;<H`$`ڞcptvЮ@)j&=4;,:5Q2=Pfm'?5rhA7[$ }qVin"~A2_NӷnXVaM;B{[Uf:c?\V!50'GS#n[s_4g:/vEM tI|3 X#b4+(`[…(j 0_ߕ8S@5_le; .]v&Xб6kd k3n3#-u{̪\-"{7|`4m%lu_, )пG]p|6ݶ["=N$SmQv yƤWWtclO'c "X]f"DRF3G5S;~ޞ9I)0n+X\Z`4G#/eU_kET޾8(k }.sTF"L*ftGa.aҍZZa7xRYA`%quL{ qD%4Zٵͻ5hhC>A+MfVM}JJ7'7OlgHw~8u͖Z.[VoYS|h\ ?xC"L6}o~?1 c^Ʊtn~ddh͹\t ,GHϹ/k |tf̾,L>]/.+! wFq}.*ف3Uw(,RI(2ǤLgFԔ Ѱ$+X,& D"o&3K *Mg`F9a5ѦΪq}Q|eL:d9OyaҾ LShX׊lHJf ;9?K׼jk)> *Ecs[!ў҆EerMʧ U]gIiwK8(tYT)Sѥk8 *Q,1 +ۊYf>}HjVn"=pуj*eB_bc9aA፾%+\_\,=|3*jk:򐷪˛g[YMtkz$=Y? {I+BkqލO\iT p'Go{xʰݚZfgw59_UT. l݆?AT 3fM >i2uEWg9<YL9"c@IԚ\}fEb1[˷\`uXJ&Y$f93F&(GQi| W1( zvU!< v VEVSuڬ=y&*΂94ZC멄.$&aj ߛdцS7DH5&*1P&w'pqG[2PGUrBW+!?3BgK^-slu~A;rOF$9Jw:N]Y`ͥpd7|lq;'ʮjQ9Y4;r ZπesTYȶѳ|x98{ 륲bՂq jP% Y_BS݉R60U<H)2vY97-C5nҪ.9\0~TB(̓f3!Ysajj9l>+^a^$}c@ d ?:/}&r^*d_:g F>ŕϷVki`MĮ%WYԝsˀ]U$G|$I\[pڸ>'~eۿC|4YUcnyS)yT}TdĬ(#EOK&6kR5/TbU.rW݊HUR%$TOƞ& ґf9~(A<¬_Ip)&^\2 ۳9.)NS;ߑ|ji]ݡ 09K/߱C3L&#>U];}Y$E_>AtBYW,+ )wېko64z5]+%kLӫ|W}JZ̎ƒזaޟab;*}daHks +e`ET`Ҡ$S#(UI)2!*Zde=QgJKTAAΪ봷EK/O2&yu7p1JuS~[:gh($1k>`{CMdSSGN_J8ՖO] D8ݟM- S3jHd#ttEZ` 496s!A9yUS>1r#v(*S&'w(|E[קÌ yy.+˨x=J=K\ DGzBsAF5;T7Ԩ[WޢVU{&'B'!=~"#w:+. JhRnM"T>j}~B,&fk$LrV$l 7Fc0s̫D-;͆,7cǩpa/RZ[ju<(|J&<$D=eR%IE(b }V>r/zqURk5/qdK.fcA}П _ p)J3|QA7^鞅+λIdJ{6Mp!iҠȵϢ^e o;Ippۻ\-km0/L8g@uw4,(fnX$or=x|_K;K s$ H77ǖڢQT\fI at@m^HVRG@;|IfU-׳5}':j}䣂 yh8`b\0LĹXvꤢy]pl@=+6w3uc 1=85d(\zz 9b1χ\W$ =}'QP_-7;M[#5X ['EQ@Z3t my;~;3e9nH:ejq)FLՌqO懷=E7vĪ|@.`zTK7hR륫d{oz'W^(N暞Qg•2+!b3-WLEV9kΓ $Vͺ Y^xp\ѬvC͏m~J1,kUS /m!^_ %2*-E;6 ꠎ;J%`'[/w+1䜁36kx}Qo $9 <3;7" `~{ olx滥`ex!HhQZj}x5?z5"[n560pbzk{)Pr>JB+BYgAnr.G*r)W.G|3Wҙ] 1ȁ?}1'2 %"YY\?_~0ث\P]\Qj:N9l0|.{=/?oaֽF bcImK>(+8.0Nnt@Yt 3ڋF 2]BBTw.S0/P qX<+ݧ(]tޜNT${$T31aZeTĔ q8/36EVL{1m![mY y =a.G ڨATzfc&lW3K󥦢ؓhF,{`lΟ%yWiwJxik{Es$LSOox74n*Ja @dF= 0F`ED_:9B 0Th#ƁLs@ RD7%S^CyeWCZe 4 J(Rrk+;}kZ+^dLId=r=1N2QAf`^<%|^Pm{z3'Ŏz"f>OLEev4NDE^(Ր5s* e/LsᨿRY9K#i*1OlQ7rqmHPW .{=]v0!wo `}D%5  kV* ]EOqM&l1@d6AQX#9l)`wKKzX$G8GoPkJg5i("Imo %N9%\J^ڃ,|K8jaB+DpVTG7!:f679փbv>5|ZY|'t7MYذfߒ^ -Jkc‰Y$c#ߟX@>WҙV5Ғ!FutmK}X?*rXsv%.k짧X"0PO=5{IÚ I7l:aֻ7':) c!'ovfO}-ۻZK <*?/ ˸oJrRHhX[M%ga Ռ{^IP՘]}(F_(\qv{y,v_w^0Gr[S'8r:cz4`zU=$/K"_KoīJ%0L%r8Me0vqkǘW]UKxBL7} -E7Ʌd%G(>21@,]iuK:ƃoC}C!_ ~˺fڂzVoD) h+ o@rMaq4NwX @SU&$B-=[A]MPX뭎~4c Sn9e4?YnH-m'),Y}:( dtJih6/үcW PSaB KB2nHwgS'+hfC.], }ҽZEҬ*&;8pK3Rs)yh-pxJч4n`5 u X˹fs%p(Qha"J4LCʩlTջ:`9>~鮏܅E14EhdW5?=`cDKOmr )D+i_[ػh2Rۚ8^5q%vmq;'/e)"Kj ,)Ry?:i)>}Qi6rMYmh+~YIIl )Nbt"r}x C/N=Aŀ"MfR$ iA"5ku3JD*MSb<I{]\!(2:8OrX/Qׅw<=$,J3%0?;7/6.٤~ ^#uZR$Oh@$W!0[LSbmX*82 c;bť>HYř*dAĚ<]w%" 6A|BRMҀpHH& F6Mε׶9E9Oo6ƧTǦFoi^DКW [' &ARxwn҈2Tsj'r$cN((Rj2$ukYKFvA b0\@ | ƴY$Zߡk.ZL۳} W7~ޅ H_(q;s}˒H_. IPty䶙_D2l`ey7;uUdRbտM7xZC_'ŬV%fC6χd40?؝*zT̀i+?y|uBe*B~Ij5kQAuMUvƯ/3SaEIzrYM3ӂuLl+C\eu7ٴ6/NS>~9# Nde#?}L&Ϟ8;Y};xͲKn]䙿F9˃S짦k[*d]u`TYl1k/OoR/dqL)*5JIrCu苮B; 0Pfvo%31G;Q7TzG'D*NM(iT*!u=c4և.d7oVkK?Ou+_x獰6&X)rXx"l*NeBX1|wrKSz4ϮdWʹFO{v?j: I}T,rxD+ ˷N?tͶ?[ir'4CF>5jCEgkCtz&f'c&v}jRXvs̈́xo%af^.:v^ߎ37LMM󉯼`ZvVZnOʐGsOb5we; {wx#͘2btw^ xArB[>G;!LT"]-{Vi"[+6UXis=-L֣{Rs7նEt)Mՙ% 6ا_XD ٠7W`zJݹ(\`DpRX4wC ys{q{'Y*kMx G5zx Vݞe;L rp>U8&W t绘W"F+Ey*D>5|~2@[v9A-mNwigЦt!Y=K4e}9CKVsxό/b@5+lB68)䖄i훆eF$iuR`tml?Tta ~EJ4>zl/Gk(t LEݜS*缫;|@ױX;G`FmVG2F^wLុ8, Oc8Ɩ3nj[LntlY8\lnԛxIc??,4Qz isLX8u}Ԃ\D^5niNf:r >P1fl t `I\h }|~^kE9EZcE݋&jP '/|%H ^ -da͑mcӵ 0i,.*ɣA}i m-DSҤHc "]KAq]:fXr"(tMA~~/0 0#nl0jJyst:t/:,g-AzaKB95fALs  ;\fJ _9qy 3y-R17`Ijuu~.!J,Zݗ]DHŠSy8o^J.~;M̆U5`%Ѯ,'ݸz5Zwɧo>X7?}#0nDUX1FE앓$~Ja4VDY8} DoNIjP갢#"V"):~/,F3 %uzsJ>,fzeS\[dm( [amȢ9d<ʥmVn&0w5ŻQ vkdx?7r..ϥ`Yȑ֌t64 3/HUOPKW)^?FICym?9ft3=n9CAI9E KsO Lt\ )8ub(lꗧ/:$&7E PNF#eiCהOoW$=u4TC9z_I2i8պzB_ʾkⶋUCe&[-pػ}{!]sNHo%kv";;zZGF|]nMNmp"*~=xxME&!9%+LhQvyt%GȤ L oMZcf"MFJ(5 kIWo'3Z4%PWa*DΦhL7kA5/Kaw,*{Nt9.zdfj[gi]aMr㟂MKA֠rE(3{L*,Pg/-(;H0E\lDzLj9J9L_ ٻĆm=jOꌑ%+\Q, )VFvJ<Ö?$kzJh']p $N?jd>dtVj b.%[@(8:qU.m}Wg}9֜(*ώO.Ti0–TDZf%r|>DmLV-[Ǚx:PpHe]a[xBf_Hҷ5izɤA5vy'L\{x%<!}|,R|K_a^Wc# 0-w9đbY(§^;-uMe G0 :o\>CJKRC_|x a@E/j`f Lh(B5@(OrZQHyY/R;,k0z7hyXu:$wԙ^CqO} W *U—IzW4*$k皝L tF&ᣗћ&u] iWS3b-#Vyޕ Uh;t5}uzsyaa"E?eHNdYy}FY#Z IoN7qƞݬ HfQ@|+^ X/ugxgH䢆 e Q36gNܛcX(L"Ik+H&R@L&tAOfԲ.,$17̫z+ԩoDCµpxV'.yL9SLRh'j%B%XRt?DI@-1sՅ"$ +5,ByDc`5 cH6c$H_RYb7Rm[W&&$8 nl0l]f/tb7a2髖>ԫ,)h?QRħ1ֆX OXOݷ &S\%]> gprEe6:Κ9? $rUI76>êu@8'F6?oy;tB7g踬ʥod[1>ٗfkNZ ^t ;Ѻe]UakgbUvZhdU18-CWwufKaxA`lsA_ yOtϒ&;d9'%gs,L%cEW1&lA:"Jۡ66ZJI>x"Gohy~A31jޢwsZy>0VS7>/? sFnPDU6 v7ydY0xBk?hS:u2"'ҡR"i,a)KRniC`Va'5&~-wܪ(ZLXȐs,^;]1D1ԛ UZqDBILRu(;I_$V_"aΔ,}zHsK X|s{|#_UWծ4"6`K:S(Y 0Ll)kӯv9R\ҽtS͓;ԛ/+BCI~KV VrbJMFԤZO#l^)Ùmq/hpܸ 4%ֈ/= Yqf\7Sly`hzVI[fU$z.BEgLuY#|ٯӦ#+D܊c;t B5eunRz GIV+(68Ys*t {+iEjjg\eP#ӽm/NH9h#KӳDET pf̵ `BV9РãEG*p{W}礄J(1rG}]rOJPެLEwdw ٢T~O߄,̕2/t0büz7.ɉiUQB޵ӟ+7Zgni+e$qHvG7Cը$$<*V&z/ S*OBr'_Εu4g j\J?$cr@13de[?ٿO ZN$^@Bd&:&GPv$lKΑd ;YH~,FHҮI>`.tG[K")2'K  }!Osp5aB:ge E{Zf~9 g|ߛ0̬ێ<5"b4W+kPnRc]E@l%BnB3tsOqK~Ƴ(%Qc*sf q&[/ `:8> wU vpMywE%=*= y$=E%LzMk7h sM9`Sn8e B(JwD88IC(ڝ;(_|>'zsb\`Ąix\ ˂y,&$^.'k2 FdO舥mSG8]ټٺ W_βd^B;r2^%r1PK= ^]@uaT\.5 ~~u3)69Q\6`k UJձYѵЭt5XW L?ij)|iZҖBJ뚢質Gzf?(v%sO+)Kڃol]4U5k c()P|'3NTP)0|)":&Ob H ]jT/5rj]y~+֖2}} "4?rfyx<=u%YHU9)M3c%ݝ)Cxyu.cEQm-`*nDL#^mL2LuW;56L--*_>gw&pۼ4(5>׊툍ZɨINM Ҋz(- hCVZKV Ygx8I%gR/I*31S`LZn veLM\&t.R(JـNۈO8_:"$I wЙ;:77kf-RC̴\Jo`ʼnҢk~lm( ~7( "u/Rsc:HWgQ H5g0q $]G:>Ȥk%=OPU_1JcMg:RpSoe8R!Y0e~Yc[#o\IX&(h=-} zD@lk^IUUm.lJZU.zH#FJY+ 2 uᙟLsiԂ ^IY C_ͥ<823T eRHˉܸ_5q f{~VPw-?-nhy[RS)K;m~ uCz4mm1DopiN wFx3){$RnMC#8OBO\nr񐐮U"+ %s 49exNŃ@ e:W؀^4q4fgS@' >~,+ ZLhcWDi6H.Gb}12eũ*u|hN&jkTaI1rN_܉ipfGf9C7p嗑*)uk|0uu5mh>FyES1&^#4hcc%VQԏV[u,A5,N/x`:Ҋd&[% ZwWSexG!# y`!XztUx vSyeӻx.gP4KJrsgy;Y鮹^'ZI W4@ 5}Jjm즼煶0™tfڙ1-̳ M2-ho@Tg:N"0/O~_LfEX5j'L)p/)C|}_bԭcORCT:-l0{ddZ,h)o-Aލ*PoNaULgDCy1C1/fw 4ј `%ƥ5c1Ri j/7FV=C8KH'vl;[gaӋyg,㕡( S GL#5x?y/]DkXz/\8PM"o77*,O#[et3""*gю$@gec+ي]2ަҁ55wp]m/0kiYiRX3H@emi7*S˨+؍ V^]i12hQ0r+Y UC wjcl}%*X;7[6g(֫PqQ++ijqv G _$ RڒJ1A>{0$b,iGhINk1ez0,,&S[H18 >}" mw? lxX 'z(DI)ӽZjL"_YVP'm3 4J7r>fc ?h[NI-狵NlbM7c+C^p,lG++kR*ƊP6rtܑ9DC=.RJD_g>iʎ6[׼hUF}y! iz_*wʹkAIJ̾[9GL|8se^FS2 -&] r8 zKhָ3`1 \!&ڱ?sxfl'YyV +<(@}̢鍐0|4&[\u+0SH5Qꋒ.oT*ʂ}eh7iTȽ<ϿܑN/qϷثu.j5*>w6K= ݊XrudJK1q`?ʷ{ƼU*UДQXA\.1G3VրP|ͯv4up2Tg%h`.Z ڿƃ~gq0(бsM!7OTDwX!q!u~Yä\H=^ T 2qrs (k|`ٝqjoA0Y̠Ξq[CĽ5 ML]eՃQ:'V~+/sAΆè#Mʣh+KRNlXt&;jrc?88Q\ rd 47=4Z'JPXa4><~#[wPa6ܺCYM}д/qg|(+Bf,8ȓIQYGا\n|'kДaGxͨ[S?QWQBr5 { DMgҀw>l# &uu/`ane,%Q;߳"r* sۍղ됦hztuӰ{o_6T e0Kg90,6m`HIxE #:_ґ)3clsYoO gkؕbZ"kD?G!B\ g~.WQ~HϚ6DB_/~ Gef 5m< k,kLI_jWef>s= ^͞$ntCcO%W^T0]8rM]xKƴߚݫfVtѭ=;y-q3N@uMČ.pҰ`{b͹1˃W>!$.8jypֿA{:Xū1Hy keHғqKWLzKdIhSj+? 49By4YAD1O *Gl{ǎ.䄦6|0J 0QAd ^,甸 PT9 cC5fK*[b<gE V189O0eY4#\vmtjçR>9yԏiH0kqypf s>/lŞ]iw<6- )Q坑??;"Y9 ǚt敏&m+k-g$*sC=X8UkBj-`d_3y Zf1ݜ(D7`a̓/8FgYOo+^S+:RpWd[py9͢ǘ.ȗtE\x6[qUqٍ`6W]&Y3w1]lLeި i8X&?g͢tֹpJt!Zt.qԢ%k24I-B7AB/9_dM"w(걝 HnVb|Dy؉+ɑ''&bz10J 1#a3;b5ʴ#^I,^eY,zoG@쓑i$W)e7MCmqLos'< -Ne) ]я {`~DήWh+X[jGx, E zIRqHw@SgRR|W(Q'`D6|?$>`eFT!MUYz@,wfH_p(*J5x'*C;g?ati:UǮwp S>#*x>z 6ZeǚGR'^I^cxY4l\Tlu/)PbXSV( ,~^aWȪ(j+>Xw NV^IqwNl6m`:6 7[giӴ1#sI(e导V )C@Rij۳PLp:e]4* F-->K?] =S9V8xh|t?95_&&;8hy 74ŞnީQ^c EQїwcئms֕Cq'\L-dnD5Xq$srw iqF+T6̍?g;pg\)mo%j,L7;ϣo|T4Knɱ%j[m "72b!*(yf0z1]#?sUR\xMÑt $.:sFF5}Oymsw ~ 5i(}J2YP\K95q1trOI,+2J0+5Rj@v0 &se.,ԈXҥbsr@")wW:͑8z2{%2pF>gg.Cr8,ïl۟Y)6Ȑǽr2G[BF'HMU[!D5 |)|9NKM \no{%"YlSl.J(X<#Z7mr0},\K+,D6ksrYWA<ӡn}DNŪ߆3xR$jaQXZдE) ۖAz@Ȍartbyk^wg-xm]S K]5VzhbʣjcSWu[I3Rk&3oz U`Fĺ=:/=$#{Ev%3U$ 1)me2-=nsM~@- ĸ9Gs c "hJ,vnOA}`NuA[pfEZ+؏b!b襴 D[ ”\Sb[氟T0jrq!Aϋ\_nŸbܑ/ԥl3!2ש"ґфowCZD3q|pm3eӃ '+tB,@1ة"nbP1#'IEsHDTZOV=.irz,3brn*%=AЊqV|}A\sJ\V‰ kP&[96gDVL溞5QdĥaDM"=o"}VQBw"NA[桪>' ]f}} SkǢv'?xmoSo JR ͣK&zhJgqF~0ZjT옕P.p$ۿ܍@K_hL\Ky>X9mt/;rܕ2*Ko,^ [p(/Бq׬PYrXp4|kMSErB7T ӢNr+EUdut9G Tv|8p[Q(P.^l\.rDN;F٩n1,ׁߐ}z9ӔRYo0Csaby"81̔!'|u͡S)+&H'2 ٳ_K`<ߚP7"{}٦|*"#5>VEa"R\M0eC@2Biixv8*p#tNz2j|<~Q(xԆALޚ^5'K%־I0 X \*}Mh^FT6Sㄇ3ʳp=ruDЧ^JCQЙgKen鴸'$O¥H9V<(%L$hɠ*^ TIVp9ؒZ'"EM87!(.owa㈹~dDM2m]̸=ly˗x1#'V7Hw/ucfJ (֧&ώIE^Ge/#!X]uchHj{TҒ '.* xհ8CϜhdCKwqӜPs0f"c-3va 6u̐j}8 Qǭ^0Y]܃/v4,f1/roƜ13˨]"-YWei!J1O'&5ȥ(ʂzga{o( <;JMmh*Fv(RV#(?ӏ6SHd_OlV" bb}lpB)DA춚rF]D8ʍƊv՗mץ٦dvYMq6Q>/薪H3[V~W)zESV k8AԷw)ڽgwL?uD5nO(?MGaqX= WmO选͊F1P &/mQP\+}jB &ʱj0 &nwWvUG(~V0bX%,a*Hx@*Drn'_9!N}0gp 2b)kħRIUPIb}# ёF[T.1#L\ ;5hCn%נ8z߬y|]Q"hCR %+Vꋇ= nKiF[z v=6kL֖>a<+J88 qb37 AұshKR:;]c SR(Wi=XLبxYcţc^TbJGAv7dڼªs`*sOn{q :$Asj38ɥlq؇$Q]I;^&alR%|(s4X2+iz2%72|ƴȩ@Η(oȡd дL`,]PQ3]P3͊]'\YLsS㪆bM苋/_>,}LhZ\ԓA+5gVW ?Jt0#WJ<Ó9ᆜiY>~ݝ=fyVݵG~LtҚwk7>3Դ\ Jik;5ZS{hcUjMYBrsAPJS![)Wm?Z{!L2[&GZ_|kj穫Fw?9mُKguh_\u[+%;:4$?ev\:tG4;\6vo6}ۚRj]dgfdz 2)UudV-E[FĘ98"V ST&UFÝ"C%/_ ^'%qaJ_*Hr!,F|Ƞf|L7IN,W"@ %jgb$g m㩢 ^ԯ׳]˦ 6es!8gd'NoddA:%R8 VѯJ3V]W%(mK-A5{Q"K%$2+s b:~(Ei;M۾^l!I@q*55e+5?WեYRMגz^*B4lT a1 Ғ;ǯG֞]!1Gɂie5F%}:;k~\]߂䇛0ٽ"Y1imϮӭ^:܎l$rHx  RIza%iTEԼzx137B2Nq>=R)GQ6tO LJ5*n*UgX|ʴ k>YմǦ qRYr{9 '!POBr!wψxE2R16ͥscSpQaVp&'O\iVip^^]JE|M7=8{ćX[ɾE=]bQ/^pOkM-LLjБb$$h.u'<0WG0km:BŠj. į &MͦDs/CC}6$oaLiWoDyKHF 8;.f0- oRJnڗ1t| zЮӔ$K"PVQĒ,\gM,x`ID 4)a2l2S&u rXe ?vG3NJO f lV m֎N'H)ӝU:7a%APGxCŶЄX,#tm~)5;.ws(O\7mKfo#j2rHސF=DALR@pT8.T\Òᛀ:=c}8HdN ,Y$CU[igwNX"ҕqrL|fbj0W<\C*u/hTEF zD˃pRLI߱p׏TjI4CQv>~r/E-/RGyY5:"%`H,µ!z>i 1#3ԩK#]e"NFt"Py\MZ W4k~dQm?՝#EYtL] Ӊ-A"9iop&ٰR˭ٰRaCgaDn1ӎ'5X?I9AxbB-% lmN\P֒jpb,U{w՗]'i̸/L,c.fR5 a^ʝIW. KID8ݐsX*-V$ܐ5#SmK ifPz47!s8g9ImMckOr Ë M|M"UGKlF0*\IPH cϲQjpgIfQC,ƒ{YML SkE7SB2a6H5rp;o$ 2TzzMB:I>Ԙ?LS۰\b+a5Ww}!st.wqV;nxjgJ*!-/(} wJ _iD^>ݩytzx7y.E/Ȇ[iEǨBIva0$KXsZIMSR:sD_43"nI2;. / '~ZzvWtJ>[ȒsN F:BD[V܆ XtQUN`k2KzTguue"k9҄p OvX LU/TG:>7Z+ds7Ш{ܲ]%Mr7|J@2\[D2.*]A[ fjzi7!4)r *$gh_}l>uR%fvHB%qdL2kC>ᜰ\T5֖v{.%=H͘a%CS??WQX-1G'M i@{=m'(lI0W՝P@QD65ݦi'oEu>V3-o2KrBG:iڎ< {#6NJTt3-J3\Ŋ/ |`2ͧiE[Bo(ȞJ+ ivMڤEFL Vy@z6!^&0Ճi64ǽMɣK*e6D}#W|ZR1Qd^G-7 ?xpҊ뭘)cqQ`cJh~Ihl|pf)KU(rI[eD(zh|I,(Ґ~cM&$.I>eRZUYY@@%RgL^ͤT24;_Ȯ?g1WQtp>5"5!{%P&|x8sɄ5n,m䓸WSi ˂5^2o\;bvđK%x@^?T<PCs4oҙE]ex^7kPQ4Dob>phtstr%\iZU3D/b0Л<ڋp5DIi ״E̳ RPN#OT]*Zn tADm} k=E٣v]%9ĥ=U<Ƒ{{Y&r\)XlHY٦wMI/x|< \'fuL9YR,HjNdTYG|mC\x*7b2qM99;o=â֓Y{]0{o-j#^J󟻋٠wn=5y+Я~ }bzlriS}iMʞq.˴q{S'i"8T(S/9ɓ_&eqڙ.4JʈA][Q{$6V6;X gJInޕ% hԼ)Eshש[ (׫I;%w[Ȭ`-jUd2l!1Lnttiǖʴw -z@oʦ:FۤP8L2"j7l ۬(չ n9f-D[PUnV)mZ6%M839eIaO<(wcڑjd4cտ\PPI7. -l<D5stodwO7d n.ղzPL/מ7^c Y6nҎZh]2ql$yg֓ULjajǢ1颵W1`&cšT+:3]L 2T}V JyxSɚA2jIz7dlpEa4\I6@jytTmqlO& N9qNRוLk.0Xcf{d/lA0 u8g3ofXaz(?c,9U\pnSdh" Bkޠo}֗`f웠͵RK& 06L+ w1w dNc+IGkHW'50ȩQ'|TrTt׌˦ahl H˜|FcC=8G䊞n,L̋UƨcbbeRu(&;>O<2Af3g5&,j(LLl6#UhLRNl,dL_1Bg5А*7#eGK̅JA&ɫ.9s V'gdNJZ+@)lc%dhW1 ⍹ÛlR!!z( oL\3T1$MױbnWF>!i-ԃNkHⷈ益2 Am-Z;>qWk5:ܸH!ͱRD^:q=yE#j?7*{|uڷ0zG`˪Pj9jc_`8U~)n{PKp&B/ ~BHRҪÜKAUq8+C~C1 ۗ7g ~KceOCLh][j.7QQ=yNڐCOJoWxQN2Iflc*5JBQghKc0$rirȂa6`!S1~i-)9;\JVrN񓐉fusjV17Βzp[f*`'/y[<%, W=ӞRqPE.+&hcQ^4\T5rI@hs:`ce$+)"nGS}u%S;hAY6P*28s8ԇ™lobhU߽әJ;ӒGbmwcc /\{"wgn}7L!ԏ'lg0?+y%PĨq.. $3{|B-|଩[J)5 QBLw?47nNYX7)-sF$yxS Z^i R㷨ۃ ;'T7cO.PDv9*ypDH<`Ƃy^I1&64> K Bi,1M^Ql7ٌb!Ҧ@? ! Ufd-"f>5j}#R\KmY = SJ➒0J&8FΤd4lk>h.n&58<J]T@T[Dx7vxf8D f;1eEjȰ~%񋛗03, o E-uhkjZ4$C.a[_$4).f-=( *Ma<1[-~ĩdkcXQ|f.5 P1"?xWPCHp8drgi>ilr^\\:BD̾IZ5DoB*;ƍTv2i CIU)Q(|40cV{SDEk4r."JrdۉVXD3 1N{pX{}_V~'ʼq4hʂ,맧~&(Q8G |YJB9D6f!Yd|mn@NNjӓ#<EW,m)cGQgn}vpl.Ȃt_i;(7M(g+Fde kY:=Xg*c}!lsjEաEޙkɘW`(yg[K,xDHB' \3l@;yROn׫窚9l.eP~Y&P!Vt4>qs:"Bzl_9VwmP_M;|ǝ 59K(/"4T0[yO/eT,X^mh·,hXYtyZT ʥx4,+*|}vV2^ 㻋";N$Z>Er43~qӗkx!Mb͈cJM㼿Oԕɼ"rV:fH bZ"׬*;VU,8&"ѕl{`I_>|T&f_Cyt9r5eYhA~n.\aM3TVd&jOMƸ!HgsE ):AA':lE=vR=^ :hؔz 4Z#WH3Jo2+D>48q50B$N|ڪ2%l-fz]=929+ޕ9%Dl\R(Ry[nUeRi֐^Jd$.nDN2.U,״.C3.S>DA=B:OǨcdqWL.e+hSj| QX3.8h -9Dٻp%!t 7E`G /ZHˁ'6IoYLDF+s09{ n=Z|!b)h`B* Db@΅Q">Nu;GbXm/&vא8{R6?6{ (%GvME"g` p](X+kukiuQo!} u)+ЯG2'r2͵H:ӶJsܺ]t(Ef IQ _n/=Qo-XL/Mͮ!LIcX8#3<:iL`*w/'fb\q{*s:H{WV;gV!87ky>O+}E/Fc^M]047C5Kg=%ؤ>*#YH䪴8.26퇉EV 8pIr r(ok]80<9GowW*pgGElI)x*~ڰ'f8x¦+kUG<\ . 4"jYCҵ*PNoNoBtQ[ h^(.0gU@|؇vYQb m\Anm^ zFI;:atS;[ mw;)^ka%i/3M&dԿK%R:5F0Lc0ba n " .Vw1xFwB[\ȩc2s7}Y. K3lB V-[D2`l-:#9i| b'eZF&'.*l!02/H(ٕ'ȭ͎vPH4~1EŚ9얒 LƑ^&/U{B}rI&ȱT9*1%3ϲk{$fN4m\Wب(:H)a~~+R!zBkO>3&JNԣyTir0ϯ0Wjr$w ̕>W fB Uej)}v]cx4A2o7?Zr^S$9 _MӐU_ Uthk7pM8  #u^g/wB_BȆ7R1H*W4˦sm;2/+82B$S =bܡhܾ"ZM<{ ~GFvqdOBHs>yQ~Y?U3赿Մ*O{Wj]9&&*#.ZD,(|\H._MZׁh.SpvלDO(p6zcXA\)hԮ.#1ۑA4]| ׳=OD, A2Er]40,(c{+J ^GtZ v"#flڹcݕcnŗ!hYKHAߍApN hg3m̉ŗӒXi,\)">[4cOM7g S^i%Wɓݎ]Țt6A;k(Tl-jK^ 8Ĺ6bĻr>nTa}:dO~%7݌3.}V*0JXȽSLOh<wTtE)1b g1rDG ~J_2P, k2$aDJfЕ-xtyx-z5$, 9p z+ K;3!w3`{@teISbsǜ{8ʚuXIӽb(10`OJN7FBnđuhwWj&pp|ŭQSfBߺz*<y4ݚRN]g6cdtW>\f1TR)kB)T?oh+ՒKkgi蠪 C0 {w%t{NqHrT*rꮋD1 r !՟ aɻ c9HSXJl!\N:W~Cq-^ךW#a2u j}gįx݃Yӊ,{o"T@tb,W\7vU=_&3hp}P{P$Nv/u+i54z`_| qp]jq vҢNa2]y?<>MR4ÀAs? ?э;Da䥁ڎG'&@ ۚTN[FD2dLRYuO lUAбvaӛ8ͥf̴3C*vyf*Nك K0aqAptLۚ{Ȇ<SxdVjXRpdM RwCO\J{n1Mg9E Pd65LTnM9~㭧4CK܀[9xl\w!t\RnW9<=A[dy*|7NbMk/8`Jʵ<׌wQ wF+}١1f1*9L:޺̽QhR"pDF@{*BtTGwly.g02a縞/LӭQ kKr Lǫ?#Q'[;c-Μ¡Z۶db|k 휖D_wO1Fjq׍o;XM[jBd#ѱrAnV)xH;\9tz="򖚈-[eح;uΡ?d"9BK/^s?)]~Qvՙ뀿AퟛɿS-$6d I­T ayijqf%nZ  VҠʟ92LKWM$Eyr,0w>D['c^3BˠZw w$*Zfu?ib.5,.of*Uw+6K䦫Xf2kP(#wO]7'3p[WZvh [2-QM+#sdiUY?6,%4F_L-MK ,:A:Ћ',͗Ru$A"I 2.BE `3g<`EzNlXt,R'}-5O'J-ޥ".v,`k.H@R۞T*nwVb$~$uM/w5,Oem,n>@M{h/K-v* .n] G ]GDvX=vNEVΡS,rQNiVrV'hߊұueWL֜csɁø&sdA1(ϞzikbL4.MY%#0uvrx 圆8)=%-x}ۊeA}*8#Tr^~?6 {OocvsW=6oA\ kҏ|qh)[pSuvD**b\?T8SdTQrw(i%rr; %$V5m@'ߜu`qf 5Ik~,A+&:Lg1)=Xe~[ia4+6 DFx,k<.˯~}A^&ڈ|dIP3[U(<O fQwh|}Z[D'Mե˩R 'P񆁱 tH-11"w6x ,eLY7_X3|8w*HUƎX:Ra& Rǒ<&+ҫs.vHOD2{fQ(z|>|cQ$gK2FνxT٭1?_DUik hL#DteTB䫒!Nq/~:(K$ js@IH7yEL=r' 7-ebtDr5[Cwc #|X|fqO1~SqnN\M%U\t2X0Q7V~[3Ƭ8&M8hfCM[_J^r2K{^3Dԥ., uXH$q[Q% >J=X9J8py\z3Rl첡^QfީIZ܊f{DLaYQXgH8 ]*3p*O{vfWnrgΧK3~xR M؆[Ux "]}̅Z,\g'Fe_2<(]XX"C)=W"zpv0̵HRokyHTN1LH:'Qg`>w6=Y;V)wtν8n X UKFpL%kJi5VRփK.$2 BŝGbA~AEuK){VHoo̡UV jAD?12rV 3v܍7)OlԶY f7B06/DYBfH}@ Bnu:);&Up 54xfv1$בLd w-F>=[U^nJ] cs)eEs6( RrYTO+ыH9xb]ubL78jVJpf*LgY s |}O ^PU1C[#FSz)D ovDʽ.z_i;C23/yVܙڟSR6"Z0z{20Rez*;d~6[5J⼹m'ϔJaO I t͚rJ6x*oF(KBc22 ݂~nA%-jO\'0~ɬ!/g :B6o#QfT\sDb`BeݝwdWF5R?"1yHmN3̵z-cm\",9|x 0H^Ϟ^D6 hbAqQh0ΥJl`T`kDb[֮Wْ:#"2`3-RQ8ƻD?Ӛ9u_pi%+)n RiI#Sxi>O$r>%(SwZ-T d:hQ}ȾQӑBG!k ݃e5i<f .9C쨷2SymhN}+;Wz7C(qdi՝*7(:]n?^PVR:\dw_F]:f]= t*7۱ *$MA`_8O(U_(98\SMbL1`x/iuX)ǭT}cQER6;L|id9IܴQ{kD(h8ZQVH rm4L"6ke4q5^6}|R̵ 㣆G.'@S'ٛ3t?k+]mipp6p*}ο\ l+r)d77rJ%9[+^stGG8;;]S]ҋ1̷L L?J$oR|\AJ#2+E@Iq褉>ՀFvǵQCAln3?&H#HfxYd}~eSDj/bJnCu lPnγ۵eXGR\ IjI'ii> =hQ(c_[+GM9хޘ:w ea&<#rءxdFx8-"ǻew}~k^0U}P ieT郔gn5^KcL 5W&s)lJujfF4TJ?>5\Pw֚輀Fs^m J-u:wm YEiYU޹*H/t̬x1'6М-5y@LD?9gҪ\QW!-Zɡ9Ӡ&4(mhm-K@SBpBf3}DkuR<,:~6ӬiQ<ͣdHđ<e=ݦҐTʕ $s߅E Q!0ҺvϟTg@H]r3]ε8G1H:{G)QqeLV cD"BcP8!+2VjNCXsMi]Κ1l}Vd*UcӍ5QRȺ ^n+'G)є7ԧ0)uq8oİ,,HZ/J ,޲tOs-P3a&) 8a_WziJI \Ф1⡘c z;d@DK$H􀕕Gґ#5nw]qA8FE9 sMsu~B&5d*)b7Pu'ҥ+:+㶦mx&@B<݉1Xe،]hϪ 3$B>mi}ճˍôX %2)`[oyQ$W}g6tNT %5tp6o2]32c^N`њgiq kJ5>IG6m׸YC@Lϙ59 SQzq O1W#CG%M{i!)oȶmYL ;QQS0T9B+E$5_VpۜTf?&~Q4pDTT:>jv ?] Fq+؄'V=ᥛkf꥓ZI0" ~\xL:eJN.ϵQ8Z*$TS|80 LokthD!Jkd0iATQ{߳&Jo X]w.w7ѳ?}4JK{w):u ЖgL$㆔} 5%F_RJގ"aIBDD}~mzƥs~SODf^CK"MQ Ⱥgr؊_>LWPPJj} |Zu WG2oLvIΗ\u9,Gi2_#U{j3dkiU2MZmc̓7bvb紟[5}ؼo`6hcJ7q.1T5sf%sJVD]jӓ HO`W`nǯ|/2AjSӎP ɆSBլDkOdգ%,FMFnr"tZqz h!Tu B\;K8Ļ\b<m3btt&xd.Lt`F$Cr 㒺pvnU95zW7b:k*>8.n)"vvNkVm }qsWFe' QNcp|vm^*#6{А钞1Ӏ .m UY0AHAs AYFk;e <ƴ2oԫM;]FYRD|'VݭC)oф_^W)M̪쐪< ;bT%aE~Ci-^K,"VG z0DIz00&C>8 ty<އ% q`+- EWpe֖Ktւ현*B e}HC/0+^O'b莧Z\_C+n<#&[d%5XT$CTԷ.t󭩞qZ3^t]8AjA3('^/b0w[n)ٌEf=xFqu*s#٭Kp'sF[]XI4':g,omrD!g >7C 6IA;nKЊ s44/S|n~il=|yNtҁwSoˇC EfFvYɆKt.s,*_C50[hqۧo$|M=m .j/s$-~@櫮rGK\*;q3&Gl Ef?~;/~4o{Xz 皜 S1j*aj *-v'"EHzpsZt紷g4,ؼS ӞunJL'ZnC4q]gQ=6R} 2_^H#l`\+N:dC jGfMEyT ?~g?<JcGOVS5c}a ) _I{PvI$1V;@ry&FQKoSn^ 'kG}@`Y$-Rr&/ D]&+c(bV'ړ0W>#\|\KYpz˞c[Ml,ZK/a`SdlF:<`\9"\wS0>4.ā&,}%l(eD[h˽!,%WBen#vBe xÃ6PH@Liaov#FrZ$~gċF4 pw&XUAψ˟V-S:! 0jJLO^E%#RE" #)qD?4XZyG}w\\o:%;uY&Dh~*^_g."F-ƞSF̵#}Tmg`.#u\R:XDubebƟtp ST|)Edm *!0/zjn}\ȧz[  ~1&CnO(^y}#'6IAѾs8 R'\9 em6`Z2WK!fg}$ì9V-zW}B3GLip0m|ɧNGd_ M5fi}gVg EȮhZBITzc~.C`UjwṶ;aքc6.K*F\N/ r.18<3rMÌ[ikz锂 ˸ξh1L`O-iƼ8r>d4k$9 "_ov9SV&ˊbXece-esϷRswN[&s9D 5J6qfNj) cpouD!J1pThk`@|X }+2gmg$'5]JHApk̀9F9+VԴ ެB55܌kJe!$8yJ^e–B)ہ UɕҗvtS KCͲާ7S#OڧDDOPO`IA P/;PZ挑VuG+*Zy˳g/SI"cjn~#ڇĘՓ$Tj8tfVt|$Z6XƻQ'*J0ׯ$e~[=7g2BjzG缉pbi ,lTr'{: [vJOB4|~_?o2[̑z?4T0MclM~8xTlzxx\hf̈́O]|ufb:< 19M erT8?*݅<_CRG맙/R|Xu,W\ {1þL }Nޡʻ^RBՆ9i=+n9yXX8k񀔏>xCyzzGQ~WedG눣{/u)Tm\SHicWO2xkr‹S>~8W)ќ$6>V^DJ%>B|VDDALrrN^'+kWk\CNsfL jk*za};ڏۿ_XH`+ v[܂+ؓfT) Kq|^W b^Vv!3p)0nvoL;0z!).wekiJ<}RIOU\R?Y!7*Ak= :!?XC]C5~tdzt;6F}mvȫz_ccǡj,Y+F {zyv+Tnq^>f(n fJs9ˮr1SYa5s-eXUPv!b3x ȿm&-LՄf>(Ut*bY2٭)""uo? ۟jR(GR=l:4+=d2k°:O蠇ՙٛ%wޢXP\-Dnb 9.9w*ظS V2Z٢Ƣ hjJIp[BgaYٻ*䵫ջ)_Ӽy'qT=\:=)xZl_JrXتXo2},\B Cb՟n儓uS:MPz_6B*M]]pBWۥ\ߠKUQ9vLFpN֜ s dnL 5cEQcGo#%jWZBsMxJQ:GYυ!A'Cдܺ%P!'] kOjASO]՗wQ3q!FaԌy7/u* ˄j'i=ۈ ]tx<@҂KnrM]f- H A84=!6JJ_F^޹=G2Gu樂O2;7AfJi. $α_`=S;Vw0vbXȰ5k»o6Q`Q$\W= H^)P~kE=jw2PZ"uhך!Ֆ&nڼMR(ғg+獗yF/]s7w:6gG撏Ga8k+5UByh 'LJs)EJTv;ZJᲞήS,2_FE5L0'rLSp%?}\'/$IڋAhO80!9IYc+E9-Sj RFZf2nA1UB:裪ٲci\o9nQyFe7Rd_I 6ZH띕ӨSAEG<:&*ys͢S݆[MsV0!Q +~1aZonf .z㕶!@g~%S)˜Z- |YwN8ov@Ubšdm.Z]yQoþ2P9/Ju2rKT. Z9D=</vqŶ;5Y'rM*MCh? ܛe6O ^ ҲqPQOnkg x=}"cE/UNVV#_)_EքSj5:tw0O ޾cm(ʼn [crQhJf‚Fn!寿if!5NXODV=fQ}hS6[RɼD*,lte?(8_bgNu[:nHT1m13 g"ю hw:lW0>(\AQDT`O ѱ)) xZњvw#wYc s- u6>`hsW|f٭rY?a2fڤ- t8#o8!0ܨ:# ieMvVi` Mͮn(Nh%m,G2ckK,Dk8k[Dm& F6uN<$K8vRlXjF#,El| 3"zsgi2g914Q$8]lV&Zwו_0 Z9.߅7Cm9ԗ/2G/ W@& :T _Q;#MW FU\|463Y#ԉRH{>PzфRո}hm(DOdʹf+Z :j?Q?u'5DGv:XYg?*HY&qZ:Inv(N -/ ̡]wx崅->ղȭѶhe\]@l4f̓Shx@ ڷ6d~ X% ֊xwÜ' *&4)}~7Ɵ(NE4(lM4L.g[Z)IK>yNmv jA|SJ{0v*ц+|J ho<$݀BMd#ŇLJYTae!Ě 33O2IJXjFeHDR}OhH(yڜ)vȌ(#X5+,D11 چrAb&mw>N;nNNͲNWyڮyc־ǜw?g gbZM9v'p4ڇ"0MLJk.40|9B R9%Uy,J$,?م *>ȝ߉u,g701;:0Ҋ8E*:Kw6cV 3鿏0ͰgTer5 +T0C*z/<uZY ռta;4 O TTUk7_즹 Nw0}d4U.Jߦ=\*73G_hQխ?e; Ή|(󘔈ڭ^*"> `\!S4"f|t()dڑeT阍qNGOھ%.vXg@2鮼vLڎ_9 @`5jPmR?"Ì'E4ð3Q[,JT b湱Pgt0ܦ#ŗ2V4q*F-ha9> "r޷$nxF>Ds:,']L{Lp c2D$&rjriq& K|%GiB8n6AT$5n*K+6A:WGLs/EL)BiĊ MdZm0[ԑDE怽UaaV*wvKftf͛rjiB;gV>X>3};1DD2;0WP33o#w$% lY>[u:O!^8FZvʭ LG'6* K[C kA#IpjVu`i0^Z {GDcL׭Hd$,կ4hތj\u˦AG ? ]2Z5a༅ #3[*2Vs07#3;3\Q_u[:yJ-myp=CX4wް2ҔkP!Td7F2;Y .#o{@3gIM3z)YE7{OH͕T®A g3/bA9V\ΪA Y< 4F><tu2AS+%(洤dJt{:;& f~&*l戄s~3Tfj^2ߠ'(v_FC)8| ZlhO~e*;x~9Xy%LlG aii&hr{dգ(J^Թ`."ڸ֝=x8Ε[l :kmޠ|)̫CG6KݎfYE-tK*%+_n7hX"JڪUR)f4^9kW X(BHqZl:64 U4֡{A^EpoRcȴPZ'tlzy [ndֆrN aYCԗ ~J^$|4irH'Rɋ)Oi<;o$sD·܏FGV g(ĐUu 5.΄J$5f E9܃"{EX:M$ L0PsY[|Lўa͒T㔠Mj6Z7i\ҊI6jN:~UN"@Vc!*.c827S,@QPP)J*lResL'6#um$k4FX;AKʯ]Fܢ!-:"SxY˚:39vf>j=`:^nj<:Q,UDQ0@QR1.vȔmdc+.OUsѱqHκ-9uR `٤{KQޠ,"s.  9\tz^J+(ΕPb)? 2" Y]U)jsMʏYØh ͝/3x>y;u䪓%a&!>lYQj#r/Loo>0LQcjY 2YY' FC~s hFa#CMdH3jF{I_`Y粨b_ p:`J2n:נGGuZ>J vI/ GnTg"v7 }0\֜g(a4u  뉳˹:.v1 077_۱"fked2X{Cu3P/ۀ,.9אvC#-&"c%}1jZKRcsQPuX)MUT#F+q˯NkYpR'GhB49EY1))LiJS4FRܥYQ|Z>'B1JlwPس&8,m׻)媟^*C<\v蚧ׄ@&t͜g9Nc.VrW[1T&Դm1ݏ{W2LZε㈜.Ima*M/;+G#_}<ǁǎ{@-&G[RH%hOW@HauXNUxc `vF*blnfDMv-v2a\*:~c1~(),] <s͉_V >v:}NDB:5ndRdշ CF0`ţ剜zR9CHeNU PM#(sPuS Dž iq o/ ]:wbb'F.Ӗm\1ɢes\l+_Tv٩Sҫ9{J_p:{U› ЏdEñRI/TijO/DP p!GBِA4]~qEŔ&ʥ%f8h@ciQq\U6S:D)G8/w9YtVEUo-{ ^^fzM~ 19A]LA&90=FOl huG#kc_%Ed=,ԩX+J(ni!㵧yLX-uU,IwsK}TJ8M|DwDbYӲִ!9*ԭL,BV)SP0Շѭоӱ -lcoVB@TU6iT{K\ An|Y\# Y)ѫGc`Z h(PS,ǐR5 Wq(̔IjZ}%J]8Bnd5C<\1sYUri1"ɲB6Y ?ƴRn>W[2N,Y4}gI!tFΔQZ,tn "]t( `k{%qXgZqHIvXI83oo2BjplN^%kMi%H!USȊ޵N&hAmPK? x0UT,ΨB\$ 10000SalesRecords.csv (!(!H3+PKgu\././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/tests/data/src.zip0000644000175100017510000211143015112276603016351 0ustar00runnerrunnerPKdKP test-file.1UT :0Z:0Zux ZK=nfμ乮tVָ7]Yr9'zL'zƺ&^*}pi/_+_}%u9.TtrAH{)zc o'Y"mϴN!/g]Ē9ח.DZtJ%&Y%IoM\Σڎ = %s^NtF2n|_76&& 7 YS~K +'g)P5mH&RV36=C3R}Ql#^ctWV!E }L Jg-'ʎV2h"28^_3Gc>N6zrPi i&_tQ/?@v[(7/5Dcv{C^i{kݵlG]y>Kg:LaӜ ǒYvY2;=\ϴGtC|:k8ZlKnv㜳ڇwox| s"A՗o:Ӯ oA( -'ry+a_IHhOjb9ylrfJ SQq=I3]yj3vXꓯ $n6f8u8aw LABm! -okxy˜10,2>8.&l%_{RFng9j;>9 `%@DVdcʋb8aV`#Uv4lj;8*Mݺ񛢩3l_#آ6VĒbsyzpXkyT\d8Ƨ )`HxpQJt1%/mWٍ%BpN.řbBAc/96-m?+,S[jwo݆$N dojX:~[bؾYĒR~ /[jJVGY/ M1m~m.̱RU-x3Vk="`8f ՅVOH=ɘ=)hXT~S .|a z'nh>ɍ Gi&)(X-)M@*%|)4{;e 7QQKƜ( mRҷ'?ƞV%t-qNR֤ S鱮l̖Ha-ڗ ,J[{r;RV+G&'A2(~#r=  R^:oF"y}^#tj/Ŗ3s@-%SuےJ+xoňREYӋ KI9\l$ tk6#D߮[Oi47OX;qY$pehUgߩG}sRCrk'﬙="WI 9- .LK ә &%0:imtt4V|[1UHp&pqU fXևx'D+ pކ[P^%6hnmF=#JK^ NConVR0*Qq_S)OC RNS񺻱mex끄 @[]6RX4U[qy L_qOgXkЦ8 :ABVY兾o}||E<4:[AUWk< 72=@mIZ<lEr\ BJ?5-a~﹬AyszR4>iqshAndMWVЭ46~(O3D^zD q+fvMB*WjgDhբ=ЍQfc+le{S A7ey>+F099[^D6ޡM-b3,9x}vrbt5\tqTm.KQo):(5ԍ?@8~Ӂz,:1~Hk`}-jqok'e6ortc/߼]yi{pF{j<PؔkU/Aw^ {C{G0{1:zAKKNBcvr6Ƭf4I"ӧ(a~e1m ߡKu{XѦN8GoxS`јpN T=z̩jت>aqj!M$0auoIa)"JX6Ccd6BobNPΧ\'l"yǠ&PZ6\?BGC7Bte_ilq|Ο?;?.m[951=ַ_w:}MJ/c=Kr>{\.KFᲧi/k/6oKy˭\]~;x[k[Ǻ)Pi=o{}<ѨZ-kK~Lz;o- ןs=w|~Yw,S eަ-ug@ei#:ضuK!s?^Kt)A8FZbXeΥZ+}~?Pi SϏ5eNwXR/gRǾ=rGymM-(uHi޿Ke͑X|n{|t ڮYGrNCLq}ߟq :&%J#(]/#Q̟-![hOmr]~]_>8M(=G34:τzs6dyt)>=x.<"!9±vq5']/xgo%)2JKC|iTX8uS2`5R=-ϴ,u.isnS[jsShsqK൝9 K-8*q[G-i:%:[57G<E3۞ Wc?w1%82V ào)yS9eNZQݖek{K_<-5b.ZY~Krz,`l"='Ǿ A}{$5Fɚ5Gf4@z,;9G]N:l^ꎠmbve>t%m)3؂Ղ%OzjY{k4LKsQ*e:ʓ5 %ucÇk#Srd')nK'7(u8ޗ=e y+U6/#Qgy+܎YT[ v٥s-Zڢ.uz^H":D|0 n \3ĢU+.xzmsTTS:ɾNwM]S]{ލ6Iɏ(&5*tJA1jio@֧EtͰ-^{yʦ8so\SR=G潦vQ˩ڂ},[ g9yFn ?a]+^ z^ zhS=f|`= Ζ"rHѯ*nmq)DR[" 1TSB[ j~[ۃ<nⷯ(M.u:ecψD_-z7lQV1z]Qjۢj)lUGl.}W_ױfDaR[ # h-sig\b e!αZ\E6.ճ_1cL8*Z?ŁáJ81!jZfzjoK|k_ONuQϛZ.ӵ<ۚ߼=k Uˣ7iPC+Ӛr)O)] ȶV!Z_ m<;a)'X[uZ 6>ЦO;+7:%Ǒ8/{-K[1fvH2,2)JmcݛS8ZJܖ(GZRooOZ 8;羥?ԍ.+\+9kbI!u2o=Ω^uO9<|{}XZXR;cdo"S 'y¶*:yyE^]Z#zyYrf֫fаdZb߷rf?j_ʹ%ng SY*-5?R6AJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>PKdK}  test-file.11UT :0Z:0Zux ݎu~ =@_Wn p^]QP?UR~<ĚY TIyxxH}e?e8ηaLa8ޮL:݇4̏|}xM\np8L>qu%q;cu>m} K1ޗ>Ou15>|\;:zNu R'rn3󔯑o8iS[~_u^7]i u|Li÷{9s:0_>iNӷSny 2NBmdaD.sk}|%>,8k_c#ws~?O;yh܈! \ i6]OÒ3_~>^Pi S9yLwR/gRsGueN-(uHa\)}|s$8۞?+]#:k}i1.=N|!icRQ4by~)\gguN1=<,c=~QO5:τi9l?/cJ%R{kvi&$4>(/7Kp=DVx.\Ԧ,s>q2c/kJh4â97>{n4{Dqu꧱NIv]/a+x0ejd{[|i5R_y,iSN1)-5i9)1%%RJI}8͋=͖4uӊSL-yǚG<aE3۞ Wc?>%82V <6u#U-xϧ:x]p Ȯ:W }[Uѻ왢q{e9|^ֿHyO9"[MH-$/ˡ4y˒y1HPK./ M;Rja H^[ \9L .**rOzclKrb=qgz9Ͳ˘{O{(fW%c.v-6̑"yVvTP}JdxN"ڤ֠~mie0nfL]B]AoƵRc?DzD$-ՕitNJ=Hh~}z 3Tnn,)NJ~|tG1Q9SQ+OU};=l[v|uSn-k[Rwo]`].I=꺚;D˶Wp]C[ ny/Vkʍ"DAyɱg4-jeZ i}̶;t~RF;EEXoͩie-t%x{jnKo#-'l]Vs[VqS5_FrnϩI?rx\W,K-5x>-=Lӝ F3on/1 -gn `)opZ_i(c)i/sy~K.oϙ+oip=RhRA=},dn?> w?U9IRH>cM`.'CqmSC=hR/qK=^tZfh%a$feK)Z?u_kҸn[l;9j׍kFvlh#Zc+ɷvZ~PV縿<('mw{y3Fd>W۾7,+haW[N%:ҢuږvǚV~{G#H6.Qt25N{9͡uKe:s2E`^qO|OU>k Ӿ$’@[vI}tQ/rFӏ FOmno*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}?PKdKg"t test-file.12UT :0Z:0Zux ݎu~ =@_Wn p^]QP?UR~<ĚY TIyxxH}e?e8ηaLa8ޮL:݇4̏|}xM\np8L>qu%q;cu>m} K1ޗ>Ou15>|\;:zNu R'rn3󔯑o8iS[~_u^7]i u|Li÷{9s:0_>iNӷSny 2NBmdaD.sk}|%>,8k_c#ws~?O;yh܈! \ i6]OÒ3_~>^Pi S9yLwR/gRsGueN-(uHa\)}|s$8۞?+]#:k}i1.=N|!icRQ4by~)\gguN1=<,c=~QO5:τi9l?/cJ%R{kvi&$4>(/7Kp=DVx.\Ԧ,s>q2c/kJh4â97>{n4{Dqu꧱NIv]/a+x0ejd{[|i5R_y,iSN1)-5i9)1%%RJI}8͋=͖4uӊSL-yǚG<aE3۞ Wc?>%82V <6u#U-xϧ:x]p Ȯ:W }[Uѻ왢q{e9|^ֿHyO9"[MH-$/ˡ4y˒y1HPK./ M;Rja H^[ \9L .**rOzclKrb=qgz9Ͳ˘{O{(fW%c.v-6̑"yVvTP}JdxN"ڤ֠~mie0nfL]B]AoƵRc?DzD$-ՕitNJ=Hh~}z 3Tnn,)NJ~|tG1Q9SQ+OU};=l[v|uSn-k[Rwo]`].I=꺚;D˶Wp]C[ ny/Vkʍ"DAyɱg4-jeZ i}̶;t~RF;EEXoͩie-t%x{jnKo#-'l]Vs[VqS5_FrnϩI?rx\W,K-5x>-=Lӝ F3on/1 -gn `)opZ_i(c)i/sy~K.oϙ+oip=RhRA=},dn?> w?U9IRH>cM`.'CqmSC=hR/qK=^tZfh%a$feK)Z?u_kҸn[l;9j׍kFvlh#Zc+ɷvZ~PV縿<('mw{y3Fd>W۾7,+haW[N%:ҢuږvǚV~{G#H6.Qt25N{9͡uKe:s2E`^qO|OU>k Ӿ$’@[vI}tQ/rFӏ FOmno*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*PKdK)[J$ test-file.13UT :0Z:0Zux ݎu~ =@_Wn p^]QP?UR~<ĚY TIyxxH}e?e8ηaLa8ޮL:݇4̏|}xM\np8L>qu%q;cu>m} K1ޗ>Ou15>|\;:zNu R'rn3󔯑o8iS[~_u^7]i u|Li÷{9s:0_>iNӷSny 2NBmdaD.sk}|%>,8k_c#ws~?O;yh܈! \ i6]OÒ3_~>^Pi S9yLwR/gRsGueN-(uHa\)}|s$8۞?+]#:k}i1.=N|!icRQ4by~)\gguN1=<,c=~QO5:τi9l?/cJ%R{kvi&$4>(/7Kp=DVx.\Ԧ,s>q2c/kJh4â97>{n4{Dqu꧱NIv]/a+x0ejd{[|i5R_y,iSN1)-5i9)1%%RJI}8͋=͖4uӊSL-yǚG<aE3۞ Wc?>%82V <6u#U-xϧ:x]p Ȯ:W }[Uѻ왢q{e9|^ֿHyO9"[MH-$/ˡ4y˒y1HPK./ M;Rja H^[ \9L .**rOzclKrb=qgz9Ͳ˘{O{(fW%c.v-6̑"yVvTP}JdxN"ڤ֠~mie0nfL]B]AoƵRc?DzD$-ՕitNJ=Hh~}z 3Tnn,)NJ~|tG1Q9SQ+OU};=l[v|uSn-k[Rwo]`].I=꺚;D˶Wp]C[ ny/Vkʍ"DAyɱg4-jeZ i}̶;t~RF;EEXoͩie-t%x{jnKo#-'l]Vs[VqS5_FrnϩI?rx\W,K-5x>-=Lӝ F3on/1 -gn `)opZ_i(c)i/sy~K.oϙ+oip=RhRA=},dn?> w?U9IRH>cM`.'CqmSC=hR/qK=^tZfh%a$feK)Z?u_kҸn[l;9j׍kFvlh#Zc+ɷvZ~PV縿<('mw{y3Fd>W۾7,+haW[N%:ҢuږvǚV~{G#H6.Qt25N{9͡uKe:s2E`^qO|OU>k Ӿ$’@[vI}tQ/rFӏ FOmno*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/PKdK4 & test-file.14UT :0Z:0Zux ݎu~ =@_Wn p^]QP?UR~<ĚY TIyxxH}e?e8ηaLa8ޮL:݇4̏|}xM\np8L>qu%q;cu>m} K1ޗ>Ou15>|\;:zNu R'rn3󔯑o8iS[~_u^7]i u|Li÷{9s:0_>iNӷSny 2NBmdaD.sk}|%>,8k_c#ws~?O;yh܈! \ i6]OÒ3_~>^Pi S9yLwR/gRsGueN-(uHa\)}|s$8۞?+]#:k}i1.=N|!icRQ4by~)\gguN1=<,c=~QO5:τi9l?/cJ%R{kvi&$4>(/7Kp=DVx.\Ԧ,s>q2c/kJh4â97>{n4{Dqu꧱NIv]/a+x0ejd{[|i5R_y,iSN1)-5i9)1%%RJI}8͋=͖4uӊSL-yǚG<aE3۞ Wc?>%82V <6u#U-xϧ:x]p Ȯ:W }[Uѻ왢q{e9|^ֿHyO9"[MH-$/ˡ4y˒y1HPK./ M;Rja H^[ \9L .**rOzclKrb=qgz9Ͳ˘{O{(fW%c.v-6̑"yVvTP}JdxN"ڤ֠~mie0nfL]B]AoƵRc?DzD$-ՕitNJ=Hh~}z 3Tnn,)NJ~|tG1Q9SQ+OU};=l[v|uSn-k[Rwo]`].I=꺚;D˶Wp]C[ ny/Vkʍ"DAyɱg4-jeZ i}̶;t~RF;EEXoͩie-t%x{jnKo#-'l]Vs[VqS5_FrnϩI?rx\W,K-5x>-=Lӝ F3on/1 -gn `)opZ_i(c)i/sy~K.oϙ+oip=RhRA=},dn?> w?U9IRH>cM`.'CqmSC=hR/qK=^tZfh%a$feK)Z?u_kҸn[l;9j׍kFvlh#Zc+ɷvZ~PV縿<('mw{y3Fd>W۾7,+haW[N%:ҢuږvǚV~{G#H6.Qt25N{9͡uKe:s2E`^qO|OU>k Ӿ$’@[vI}tQ/rFӏ FOmno*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JPKdKK'Q  test-file.15UT :0Z:0Zux ݎu~ =@_Wn p^]QP?UR~<ĚY TIyxxH}e?e8ηaLa8ޮL:݇4̏|}xM\np8L>qu%q;cu>m} K1ޗ>Ou15>|\;:zNu R'rn3󔯑o8iS[~_u^7]i u|Li÷{9s:0_>iNӷSny 2NBmdaD.sk}|%>,8k_c#ws~?O;yh܈! \ i6]OÒ3_~>^Pi S9yLwR/gRsGueN-(uHa\)}|s$8۞?+]#:k}i1.=N|!icRQ4by~)\gguN1=<,c=~QO5:τi9l?/cJ%R{kvi&$4>(/7Kp=DVx.\Ԧ,s>q2c/kJh4â97>{n4{Dqu꧱NIv]/a+x0ejd{[|i5R_y,iSN1)-5i9)1%%RJI}8͋=͖4uӊSL-yǚG<aE3۞ Wc?>%82V <6u#U-xϧ:x]p Ȯ:W }[Uѻ왢q{e9|^ֿHyO9"[MH-$/ˡ4y˒y1HPK./ M;Rja H^[ \9L .**rOzclKrb=qgz9Ͳ˘{O{(fW%c.v-6̑"yVvTP}JdxN"ڤ֠~mie0nfL]B]AoƵRc?DzD$-ՕitNJ=Hh~}z 3Tnn,)NJ~|tG1Q9SQ+OU};=l[v|uSn-k[Rwo]`].I=꺚;D˶Wp]C[ ny/Vkʍ"DAyɱg4-jeZ i}̶;t~RF;EEXoͩie-t%x{jnKo#-'l]Vs[VqS5_FrnϩI?rx\W,K-5x>-=Lӝ F3on/1 -gn `)opZ_i(c)i/sy~K.oϙ+oip=RhRA=},dn?> w?U9IRH>cM`.'CqmSC=hR/qK=^tZfh%a$feK)Z?u_kҸn[l;9j׍kFvlh#Zc+ɷvZ~PV縿<('mw{y3Fd>W۾7,+haW[N%:ҢuږvǚV~{G#H6.Qt25N{9͡uKe:s2E`^qO|OU>k Ӿ$’@[vI}tQ/rFӏ FOmno*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*J~*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*Jߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}?PKdK3)  test-file.16UT :0Z:0Zux ݎ8vz =Q/W,& WjC=@.槻ʖ(e?e8ηaLa8ޮL:݇4̏|}xM/\np8L^qu%q;cu>m} M~wJ~e5v]!qL 4sze}ޮq}/÷Ԯlzhvﵤ[߇ezM}L;~~1z'͔1!<ߦiXRw W6coeBެ]bL]k%Ck0_SW̟>֡6XGk5a>t)+@=wT}m^[Ԣ.R1}rǷ9Gbힻi5b*sf阆>R:&%J#(鞂~v^3;S.p]c{^>|{tOOy&N-_cNӟrrMo!OyL=-v0, @rP'U4/4[yL+JN1uknZqvw͸o{2\*O >stX%^hבv^*[W+=bk[*Sqv-"^1woM܇VEg{ĥ.zNeFyY#] knh?l=7#Eȓ. ~,KX" B-bX.4J--("ymy:.XRpt32ʪd=uNDiU/{ʉibQ|7ˢ/ceD<ԛ̭>Rf(5*?c+qR.#/L21%^מRtT)0Q\ w{Ym\}lYPmS,7.Jm(%Gf4j=Ho3>u>)KoF](meRl.څST1uF3 ^tO=jharXKiP_C7H:Js-XE fSJ^?DźlsƲACjnV}ש=uZުė)m|O˲VR X?[H)l"3nXc_RF~m{$5Fɚ5Gf4@z,;1G]}Om^ꎠmbvoe>o+KR\gS"Բ4uthvJǺ'o4Ut'-k-uc݋k#SgORܖN/P:7O{ʚVlFVS)ZmskiƺAڲ@vֹ$糆1̇Xp[D!\8t)륅^9ԃCMKN:6:ޭkʞ1k)#pƹ1mQjV_REs[ar7(ϧ6Zֶx:ͻxT6Y{ǚ9R75mÈZNd:[<3<6uc_rH0R\Xɏ?{C9>|FPi5Tmv(.?7 Jص弾ԩORv[s#JlI.OMO+!v`J$/CE8*F鷴=ؖZn+J>tmI!OiF{miduiPRxHU)eKl%VC=W]֥ qu}+. kn5yu{*6حQطV+H=F*{/B?4yYsWQuK%F;?fl)q?]E^8؁yU)62N~eZ PQOqnVk۶`OuQ7$\kyӜ?y{̗8V-JބGB?lʴ|\ʓzJWu5-->ڸ*ڪxM6}Y]^((r) aZւ$ȱEZok$"ίjQ6[sjgY6] HKӓVGN.?Ĺ-fuc+ˊ8ʩ{ΚXRHFrnϩI?rx\WaYZjja|Km[&{$2Nwž'lϨSo}Wֈgh93uUlKy3nаdZrNC1K9L˧?jʹv #ơ,ǒ)Jc{l}Sel.g >XKzEwۼ>Ԑ_AW y)}yl+ZIgvfTw3Dz%>)Z?u_kҸn[l;9>ծ}c{->LVk$Qkm/?Ãrvǚ7ctASyU;?p#Zϲr^+VF|$^Z"(#-[mi'~<ִ;rdu@XFx~_۩wNoshRwٿέc̟}l_kSսa5ôwh(4$CSvI}tQm9uGwB[qߧ|L7P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TBP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*PKdK` Q+  test-file.17UT :0Z:0Zux ݎ8vz =Q/W,& WjC=@.槻ʖ(e?e8ηaLa8ޮL:݇4̏|}xM/\np8L^qu%q;cu>m} M~wJ~e5v]!qL 4sze}ޮq}/÷Ԯlzhvﵤ[߇ezM}L;~~1z'͔1!<ߦiXRw W6coeBެ]bL]k%Ck0_SW̟>֡6XGk5a>t)+@=wT}m^[Ԣ.R1}rǷ9Gbힻi5b*sf阆>R:&%J#(鞂~v^3;S.p]c{^>|{tOOy&N-_cNӟrrMo!OyL=-v0, @rP'U4/4[yL+JN1uknZqvw͸o{2\*O >stX%^hבv^*[W+=bk[*Sqv-"^1woM܇VEg{ĥ.zNeFyY#] knh?l=7#Eȓ. ~,KX" B-bX.4J--("ymy:.XRpt32ʪd=uNDiU/{ʉibQ|7ˢ/ceD<ԛ̭>Rf(5*?c+qR.#/L21%^מRtT)0Q\ w{Ym\}lYPmS,7.Jm(%Gf4j=Ho3>u>)KoF](meRl.څST1uF3 ^tO=jharXKiP_C7H:Js-XE fSJ^?DźlsƲACjnV}ש=uZުė)m|O˲VR X?[H)l"3nXc_RF~m{$5Fɚ5Gf4@z,;1G]}Om^ꎠmbvoe>o+KR\gS"Բ4uthvJǺ'o4Ut'-k-uc݋k#SgORܖN/P:7O{ʚVlFVS)ZmskiƺAڲ@vֹ$糆1̇Xp[D!\8t)륅^9ԃCMKN:6:ޭkʞ1k)#pƹ1mQjV_REs[ar7(ϧ6Zֶx:ͻxT6Y{ǚ9R75mÈZNd:[<3<6uc_rH0R\Xɏ?{C9>|FPi5Tmv(.?7 Jص弾ԩORv[s#JlI.OMO+!v`J$/CE8*F鷴=ؖZn+J>tmI!OiF{miduiPRxHU)eKl%VC=W]֥ qu}+. kn5yu{*6حQطV+H=F*{/B?4yYsWQuK%F;?fl)q?]E^8؁yU)62N~eZ PQOqnVk۶`OuQ7$\kyӜ?y{̗8V-JބGB?lʴ|\ʓzJWu5-->ڸ*ڪxM6}Y]^((r) aZւ$ȱEZok$"ίjQ6[sjgY6] HKӓVGN.?Ĺ-fuc+ˊ8ʩ{ΚXRHFrnϩI?rx\WaYZjja|Km[&{$2Nwž'lϨSo}Wֈgh93uUlKy3nаdZrNC1K9L˧?jʹv #ơ,ǒ)Jc{l}Sel.g >XKzEwۼ>Ԑ_AW y)}yl+ZIgvfTw3Dz%>)Z?u_kҸn[l;9>ծ}c{->LVk$Qkm/?Ãrvǚ7ctASyU;?p#Zϲr^+VF|$^Z"(#-[mi'~<ִ;rdu@XFx~_۩wNoshRwٿέc̟}l_kSսa5ôwh(4$CSvI}tQm9uGwB[qߧ|L7P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TBP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCPKdKZ2*-.  test-file.18UT :0Z:0Zux ݎ8vz =Q/W,& WjC=@.槻ʖ(e?e8ηaLa8ޮL:݇4̏|}xM/\np8L^qu%q;cu>m} M~wJ~e5v]!qL 4sze}ޮq}/÷Ԯlzhvﵤ[߇ezM}L;~~1z'͔1!<ߦiXRw W6coeBެ]bL]k%Ck0_SW̟>֡6XGk5a>t)+@=wT}m^[Ԣ.R1}rǷ9Gbힻi5b*sf阆>R:&%J#(鞂~v^3;S.p]c{^>|{tOOy&N-_cNӟrrMo!OyL=-v0, @rP'U4/4[yL+JN1uknZqvw͸o{2\*O >stX%^hבv^*[W+=bk[*Sqv-"^1woM܇VEg{ĥ.zNeFyY#] knh?l=7#Eȓ. ~,KX" B-bX.4J--("ymy:.XRpt32ʪd=uNDiU/{ʉibQ|7ˢ/ceD<ԛ̭>Rf(5*?c+qR.#/L21%^מRtT)0Q\ w{Ym\}lYPmS,7.Jm(%Gf4j=Ho3>u>)KoF](meRl.څST1uF3 ^tO=jharXKiP_C7H:Js-XE fSJ^?DźlsƲACjnV}ש=uZުė)m|O˲VR X?[H)l"3nXc_RF~m{$5Fɚ5Gf4@z,;1G]}Om^ꎠmbvoe>o+KR\gS"Բ4uthvJǺ'o4Ut'-k-uc݋k#SgORܖN/P:7O{ʚVlFVS)ZmskiƺAڲ@vֹ$糆1̇Xp[D!\8t)륅^9ԃCMKN:6:ޭkʞ1k)#pƹ1mQjV_REs[ar7(ϧ6Zֶx:ͻxT6Y{ǚ9R75mÈZNd:[<3<6uc_rH0R\Xɏ?{C9>|FPi5Tmv(.?7 Jص弾ԩORv[s#JlI.OMO+!v`J$/CE8*F鷴=ؖZn+J>tmI!OiF{miduiPRxHU)eKl%VC=W]֥ qu}+. kn5yu{*6حQطV+H=F*{/B?4yYsWQuK%F;?fl)q?]E^8؁yU)62N~eZ PQOqnVk۶`OuQ7$\kyӜ?y{̗8V-JބGB?lʴ|\ʓzJWu5-->ڸ*ڪxM6}Y]^((r) aZւ$ȱEZok$"ίjQ6[sjgY6] HKӓVGN.?Ĺ-fuc+ˊ8ʩ{ΚXRHFrnϩI?rx\WaYZjja|Km[&{$2Nwž'lϨSo}Wֈgh93uUlKy3nаdZrNC1K9L˧?jʹv #ơ,ǒ)Jc{l}Sel.g >XKzEwۼ>Ԑ_AW y)}yl+ZIgvfTw3Dz%>)Z?u_kҸn[l;9>ծ}c{->LVk$Qkm/?Ãrvǚ7ctASyU;?p#Zϲr^+VF|$^Z"(#-[mi'~<ִ;rdu@XFx~_۩wNoshRwٿέc̟}l_kSսa5ôwh(4$CSvI}tQm9uGwB[qߧ|L7P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TBP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}?PKdK(Y.  test-file.19UT :0Z:0Zux ݎ8vz =Q/W,& WjC=@.槻ʖ(e?e8ηaLa8ޮL:݇4̏|}xM/\np8L^qu%q;cu>m} M~wJ~e5v]!qL 4sze}ޮq}/÷Ԯlzhvﵤ[߇ezM}L;~~1z'͔1!<ߦiXRw W6coeBެ]bL]k%Ck0_SW̟>֡6XGk5a>t)+@=wT}m^[Ԣ.R1}rǷ9Gbힻi5b*sf阆>R:&%J#(鞂~v^3;S.p]c{^>|{tOOy&N-_cNӟrrMo!OyL=-v0, @rP'U4/4[yL+JN1uknZqvw͸o{2\*O >stX%^hבv^*[W+=bk[*Sqv-"^1woM܇VEg{ĥ.zNeFyY#] knh?l=7#Eȓ. ~,KX" B-bX.4J--("ymy:.XRpt32ʪd=uNDiU/{ʉibQ|7ˢ/ceD<ԛ̭>Rf(5*?c+qR.#/L21%^מRtT)0Q\ w{Ym\}lYPmS,7.Jm(%Gf4j=Ho3>u>)KoF](meRl.څST1uF3 ^tO=jharXKiP_C7H:Js-XE fSJ^?DźlsƲACjnV}ש=uZުė)m|O˲VR X?[H)l"3nXc_RF~m{$5Fɚ5Gf4@z,;1G]}Om^ꎠmbvoe>o+KR\gS"Բ4uthvJǺ'o4Ut'-k-uc݋k#SgORܖN/P:7O{ʚVlFVS)ZmskiƺAڲ@vֹ$糆1̇Xp[D!\8t)륅^9ԃCMKN:6:ޭkʞ1k)#pƹ1mQjV_REs[ar7(ϧ6Zֶx:ͻxT6Y{ǚ9R75mÈZNd:[<3<6uc_rH0R\Xɏ?{C9>|FPi5Tmv(.?7 Jص弾ԩORv[s#JlI.OMO+!v`J$/CE8*F鷴=ؖZn+J>tmI!OiF{miduiPRxHU)eKl%VC=W]֥ qu}+. kn5yu{*6حQطV+H=F*{/B?4yYsWQuK%F;?fl)q?]E^8؁yU)62N~eZ PQOqnVk۶`OuQ7$\kyӜ?y{̗8V-JބGB?lʴ|\ʓzJWu5-->ڸ*ڪxM6}Y]^((r) aZւ$ȱEZok$"ίjQ6[sjgY6] HKӓVGN.?Ĺ-fuc+ˊ8ʩ{ΚXRHFrnϩI?rx\WaYZjja|Km[&{$2Nwž'lϨSo}Wֈgh93uUlKy3nаdZrNC1K9L˧?jʹv #ơ,ǒ)Jc{l}Sel.g >XKzEwۼ>Ԑ_AW y)}yl+ZIgvfTw3Dz%>)Z?u_kҸn[l;9>ծ}c{->LVk$Qkm/?Ãrvǚ7ctASyU;?p#Zϲr^+VF|$^Z"(#-[mi'~<ִ;rdu@XFx~_۩wNoshRwٿέc̟}l_kSսa5ôwh(4$CSvI}tQm9uGwB[qߧ|L7P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TBP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^PKdKWoYx> test-file.2UT :0Z:0Zux ˊ$ɕ@ '@+-@$DkoiC {ݧEU,f8UnnvTy.czL<qT.Y?Z}-wv{\ӵ~2 +ne-"٦^r^۹M??2zM%WcK]123U|Gzz{; ^ozY>1O6D۾/SlYzaZP+"-4XA˦L8[UuٮSXXΟ!x>v&^k1wZ,'l%\v-ncj`Ib'_{0E2Uvvc_7w?7lU&5u[\̸Ti;4=q=U^\)s}-ȣ^>^1{\ҽ#Ep8kx7guõtֿy*WjOj)u9>B 9☞F|vqrh rTJ(g^-4Rcpn,Zy nЪx`96]͌c//S>?x}~M?sPn7=%27^Y:~ZF&6p5˭b%)cYO^AHs5F+ue`Z~U5DR$Hn^Dk&)*xfwJz+4"Qz} !Dp RPh>E&/{jgj'/y6yPz@jmJ;}n50"EwVq-Tj) muZ^<}=X"'-{~&5KVt[6zQ#cO<{_b*+nI"zɪzUT'xz4yQ,Kthy ZA"T[(x^$DY*"͕KzKOF*^x1S&E@zk25!E }YEYu/2{뿙9沫% siCI-$Z9;k-O5̳'4 ̸mH1qba~凜7ҍf>r|V6;%u^zג<.:UY<R{|RG( #I ^rb8"%e(\1U#zwd"0܌e1?dD?66xi1]>.DXN)K6zFx\# 7{͓TAjQh!>zö.5LW.--hcġ[ix~9'# 5Sgw!\"sqF+-Z0b޼jn!HxWhuVl@vayw*N;}}9b|Q5|v0\/k[uUOM=':áJimO̴_E ;;T]`[yۚIj7e6wc_y- jmEW1퉪uV&yʓ҅AflwWpP! &^,N~AOA6+=: dIKm6e3 .$CS0"붝eJ=4gr$z=أMF5q<~W7f lD43Te=zVhdžǑ Mi#PO=H&R gæyy|m1C4+o)m8mCCQtULyJ~dʸIܛ|}M*R?y4||?6o ݍW xMKJ'#C=93E7XKCzkzW#G-fڲ|99joQ]k}Z2z$Z-4Z],g/lqӵ̗*6h̲4. CL'~Y䑴Z ;}Y"|{{WM;KB@Mq/;t󡳅n_k֞ck{c|˗sXw5X ZPj/[*xOw7-y:}7@Ȍ~w˖3P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P *P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P PPwPKdK䔿A0l  test-file.20UT :0Z:0Zux ݎ8vz =Q/W,& WjC=@.槻ʖ(e?e8ηaLa8ޮL:݇4̏|}xM/\np8L^qu%q;cu>m} M~wJ~e5v]!qL 4sze}ޮq}/÷Ԯlzhvﵤ[߇ezM}L;~~1z'͔1!<ߦiXRw W6coeBެ]bL]k%Ck0_SW̟>֡6XGk5a>t)+@=wT}m^[Ԣ.R1}rǷ9Gbힻi5b*sf阆>R:&%J#(鞂~v^3;S.p]c{^>|{tOOy&N-_cNӟrrMo!OyL=-v0, @rP'U4/4[yL+JN1uknZqvw͸o{2\*O >stX%^hבv^*[W+=bk[*Sqv-"^1woM܇VEg{ĥ.zNeFyY#] knh?l=7#Eȓ. ~,KX" B-bX.4J--("ymy:.XRpt32ʪd=uNDiU/{ʉibQ|7ˢ/ceD<ԛ̭>Rf(5*?c+qR.#/L21%^מRtT)0Q\ w{Ym\}lYPmS,7.Jm(%Gf4j=Ho3>u>)KoF](meRl.څST1uF3 ^tO=jharXKiP_C7H:Js-XE fSJ^?DźlsƲACjnV}ש=uZުė)m|O˲VR X?[H)l"3nXc_RF~m{$5Fɚ5Gf4@z,;1G]}Om^ꎠmbvoe>o+KR\gS"Բ4uthvJǺ'o4Ut'-k-uc݋k#SgORܖN/P:7O{ʚVlFVS)ZmskiƺAڲ@vֹ$糆1̇Xp[D!\8t)륅^9ԃCMKN:6:ޭkʞ1k)#pƹ1mQjV_REs[ar7(ϧ6Zֶx:ͻxT6Y{ǚ9R75mÈZNd:[<3<6uc_rH0R\Xɏ?{C9>|FPi5Tmv(.?7 Jص弾ԩORv[s#JlI.OMO+!v`J$/CE8*F鷴=ؖZn+J>tmI!OiF{miduiPRxHU)eKl%VC=W]֥ qu}+. kn5yu{*6حQطV+H=F*{/B?4yYsWQuK%F;?fl)q?]E^8؁yU)62N~eZ PQOqnVk۶`OuQ7$\kyӜ?y{̗8V-JބGB?lʴ|\ʓzJWu5-->ڸ*ڪxM6}Y]^((r) aZւ$ȱEZok$"ίjQ6[sjgY6] HKӓVGN.?Ĺ-fuc+ˊ8ʩ{ΚXRHFrnϩI?rx\WaYZjja|Km[&{$2Nwž'lϨSo}Wֈgh93uUlKy3nаdZrNC1K9L˧?jʹv #ơ,ǒ)Jc{l}Sel.g >XKzEwۼ>Ԑ_AW y)}yl+ZIgvfTw3Dz%>)Z?u_kҸn[l;9>ծ}c{->LVk$Qkm/?Ãrvǚ7ctASyU;?p#Zϲr^+VF|$^Z"(#-[mi'~<ִ;rdu@XFx~_۩wNoshRwٿέc̟}l_kSսa5ôwh(4$CSvI}tQm9uGwB[qߧ|L7P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TBP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J *J*J*J*J*J*J*J*J*JoT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T>Tz@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JׇJ/*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P7*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J_*J*J*J*J*J*J*J*J*J*F%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PCP T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%ߨ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*}}*J*J*J*J*J*J*J*J*J@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@^@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T|*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*JPKdK4:y test-file.3UT :0Z:0Zux ˎ丕}?@= {BAZs$/l^]!Q!Ty.czL<qT.Y?Z}-wq+^ަcuxvs?sKq]ϲV׻q?}4dzymq_鷳ܦo.y=Un.z]zlQ-}M}^r[l{]e܏<}ۤ'~kSV:(j!ܖm.>Es.U_k-Uh R]3Vu{\hzCnMG/re~ފtnyjwM_~]o;:46b!mzLt^ >q]scqCBHfVѻ )c("?.[]a^vvT^|f{{.~-rcz.UUeOm2 ֙ԇYd<9]lܧ]sxV1bf^3=c[\s _osy+J~{}&Kʠ$MBůx(#/싳G\~9]]l򱕯z)~V6) fwLux=M'C'7b1e%I>76ֳeYۮӒB]idm! Z_4VoUl,8e5YNhr,M\v-Ǚ`- ̋#pO_kESLV{~{|h}m*u3wLgcn>ez_hHCSRevUwG;cNد}.| 0^1ػ7lku])"{Iw.$<گ7m҈̞[O-t[2Gӧ ؒvy$O}A'0Cզ6&\}=ľ4[$T/2j&+RT93^oF,^fz)CG KRPhx;e{M0?^dՐ{:W`oxK"mJO̹=c[f/hjbN\}5\"O|[uCQlY*뾀(a㙱O| } ADiw۞tr<_eHwFÇ@zk}"qko,PbͲeO9AR~YYdfᘗ].Q9[~ R:k-;k-O=k(2Ͼfxj'*. ^9AR4vҾ]ӊrFV3Y 7lB4bPֹ͈Z?thAn3LBs0 tW8!Df-Pmn uȠ-68GT.ӡb-Cgg-O&9/ṛ( vYf2I9'&:Mms[ی%>@V 5B_Ě(V9YΕ8H _/^ΠV%{Xˏp#Ҁ9$Q>|qG^-? kYnn]&?DJs#660"ʩh>O93Ggocc~a.C>V[.?Ú҃f}XFlǶ:-Boc|mk<>duWd8}Ʒ+푫^LұH4#x/bikeif+ZySZFz T?EH|ESKgj]BcIA>i$J1'hϓw?Tg|E}}h[RZd-c)^S~E U.5-K>V:$3,%loaz9#= ?j1kܰ-XG'Gvli߽wɢh%y/-jk,g/$?wKM8|)涯F4β4/ C\NAdg/KޞuI1].6ܩ/:[kڳǜ͟ױԥkƞ/Uwav}ydD%Ri%SOE1=!W\/lwf?J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J(T T*J@%P T*J@%P T*J@%P T*J@%P T*/*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*O@%P T*J@%P T*J@%P T*J@%P T*J@%P Q T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P ~PKdKs\| test-file.4UT :0Z:0Zux ˎ$uϣr[ηwX^`|yS>PouT~oKiW=:2Hu9xXyoqտƣ6yy+ҹ6~uIЬڈIo2ҝzu͑}lQ !ޛEȻkLW "SKWԯuJ շ([ϲG6DlUu-rUz?JylQmަ;h"㩜ah<6`5|*5#6{Y]<|ۥƘ7,J=c}$rS?{_!3cwksѮzׯz/<}(m&gh΄ǥ>t b>2]G=r.6eRc_x|K[TKg6q\Um/&i*~E]~Df_=*˹&b{|KN:腷/$ߛaa2E]sU<7 "<5wԗ$?m,[ϖe9oNXwLK =vQ$%(h}({_8[U}`l"rcdzZl:Xm4e Z<3G;5 -Z'A?+cGf-M"+-:%rSkQϭznn3pU.g}˂KGюq= :zwƜ_\jlaU?>bwo$*=SD .zM6Y=pm9|]ֿIx_=o C=."[$e%^kg} Brn0h\|`=M1mL,Jz$}iH^dMVsKgIi X(Rk] t=w)סv0`(ɪ!t6? k-V#+>3mQCFH.*Σǟsm:IsZ^|z*rޥuRFJ[ĭuRd@u77ޗ=eJ٦e$bgg[c^v2DVliFc,1H- $s$Z?ιh7H]ކ-C-Xі#j/| PT4O޷WuC #[9̞o:SDC='?.@sUJF3CDj 8;[fm%ւ̱({ZmMmc_y-mtTt.cG}j;V&;법'qJku{oY{7*;a)\{/N&H>yVg7EEI0 *_(-A1foƎCa(6bUn͉40β6C y\zɤoOlNc5<YnVX$+SONjU&}{8V|}hR #P_jxlMp®6G1|KX+/ M3Ӱ^ʛ2j;?_e(<|}+@h =oG6oL-Qt)`i\̐%a0unf-a{St ˑWi QYm?B> <9jocwM#ְdLF+[~iV_e?Ky`']"oAKy6}w7qyWYz|ru$8;}Y"|ܯ#HuiяN}x9R_k֞=lE.^}6ė||#$,J -)@-`*xϸ.ߴ׍a<zߧe[3 T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P TBJ@%P T*J@%P T*J@%P T*J@%P T*J@%PP T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P~*J@%P T*J@%P T*J@%P T*J@%P T*J@%J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@?>T T*J@%P T*J@%P T*J@%P T*J@%P T*/*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*J@%P T*PPKdKV: test-file.5UT :0Z:0Zux ͮ6vཟBPj0N&guty<$Ų d VIyxxH}_66]sz4ߖ4rޖm_|Y?y}ܗ>t=.~ۯ|[Pm~/ӟ^󺾦=~ٗcIZ)}6]??~o딾:yeoϩ]u{uIYΧtu7\粭-ӯe^7]iL}|,e=Nkr=MuM▟cm)~<_sz=}`},˚?o^>m^N4HyæFh^[sy4\~Ωs_-uCFLi>rÃ\~ԝץ|s-P7cK̩[{-=ӵ}jM{sy>:T?/u.}Z^rOc%x~_9aIJ9U_5h!yy/95Gb㙻i5b*kf/ӿ9 +=clj/~uL7JFQ_g 6Wٙ?{_CKhO}z]~]_?O.eܧWG$=~p]f\f|yI89)L9q{kqi^uMIh+>(/7~)|Q1]?_MY=2e:͵L{3,:,Ms5cKC~N|FQ~$vGgy|,IQRlX[\ok:.nxdI}usN˿8sRCB{#[aXl )WӼj>lI_9(9ْ<ȭNGοZ4pի-=+/p٘[#cʣz?Ѯ#= o)UjAW{ܷ9Uz̅~F]u<&SYwy;2E#R2Y#pr#] kahrD[Α"[I^ Sci?%mb,H@1OC^,ZwRԖH^=r<K ng^VYlΉH1 zRox6G0B5Y}s(#iOތgn}2CMԮVq&l]˔: >g~e)9ұXH.)nzajNu`^Oܘ(E>֣_yS^Ҩϴ"ՊԙǤ, PF}<5] _Ok hgƣ&ʟ({Zy.A XS"-+駭UǤo9-3|š/)y**sΙuRsӵ/1V5'-y[j\JXٲEzLaOb }IǽIj5k< ijX-vsH-)uؼAhğ<}^/KR\g["Բ4uthvJה'_94Ut'#kk<)F/ `ORܖNo,P:q4o{ʚVlFVK)ZչEc] 'Ea+)ѥfEW$5]yzksTTSedIF'ۻnKQ٨L;6l-hnیW;zy6~3K1mݐTmS-z%o nO#S4]6/}lJ.C줿[m#kE2i󢭂- vlO"ڤ֠qmie0S*P#1۸Vj\ĵ%ҽ=\ 9.x,QםA?K6[p: Qշ vӎ:fXݽCۼGOeSU7|)#mu^f;TmؾHsų͜j6r+s8 ǹgG=^9bA[sʥ/ ycnkKsj'eXC1̇\ǡl,wѹEO3#1F+Wm[T=%[:H@ۅo<:=s֌([j+{ez#}(KGvJCVv? / rn6l뛱!ɰ(eĆZTuoNM,kf([?Rs[ziI=i%pdCǖnnl%pYZ9 YK i$~qN&'{q]ò,4!{&{g8aVg)n/1z3Ӱ^7s?.%z44EIWKO7LgRMipRhRA|ld^>}lȓ~S$1K!!V7e 4mZ[đa7'DGqZ.xiG9^P3x9-aS ۑ1^Hm]ٿbqöc!_ vrj׍kFlh#Z=ЎZ ޯe5˃rv7ctA[yU;gY9/@#r-֑ŭzɿ5j?t#\.0/ekﵝrϡ][y\?_"0/Qx$ʷ5kiJPijaIJ%*Doq]/gn ;@h+nǴw$@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@+TT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TC@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@?>TT@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%PQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TC@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@?>TPKdK1+ test-file.6UT :0Z:0Zux ͮ6vཟBPj0N&guty<$Ų d OUERr֏~.9movΏk9o˶/i޿MuݾLZ|Ot]yZ-[\6^y]_}?_הt.s۟rO?}ܷuJ_ySCss__<ϷԮ=,Sk.{sԖ_r2~MM/E]>2g5soqoH|/_b9=Ş>>eMߟӷSnyM6/BmdaDnkk}|-9m^{??ԹG/RYr#4kArL[|F>umB(wћ1%EѭʽZpN>&N=ujU?z/C1Lђ~O.eܧWG$=~p]f\f|yI89)L9q{kqi^uMIh+>(/7~)|Q1]?_MY=2e:͵L{3,:,Ms5cKC~N|FQ~$vGgy|,IQRlX[\ok:.nxdI}usN˿8sRCB{#[aXl )WӼj>lI_9(9ْ<ȭNGοZ4pի-=+/p٘[#cʣz?Ѯ#= o)UjAW{ܷ9Uz̅~F]u<&SYwy;2E#R2Y#pr#] kahrD[Α"[I^ Sci?%mb,H@1OC^,ZwRԖH^=r<K ng^VYlΉH1 zRox6G0B5Y}s(#iOތgn}2CMԮVq&l]˔: >g~e)9ұXH.)nzajNu`^Oܘ(E>֣_yS^Ҩϴ"ՊԙǤ, PF}<5] _Ok hgƣ&ʟ({Zy.A XS"-+駭UǤo9-3|š/)y**sΙuRsӵ/1V5'-y[j\JXٲEzLaOb }IǽIj5k< ijX-vsH-)uؼAhğ<}^/KR\g["Բ4uthvJה'_94Ut'#kk<)F/ `ORܖNo,P:q4o{ʚVlFVK)ZչEc] 'Ea+)ѥfEW$5]yzksTTSedIF'ۻnKQ٨L;6l-hnیW;zy6~3K1mݐTmS-z%o nO#S4]6/}lJ.C줿[m#kE2i󢭂- vlO"ڤ֠qmie0S*P#1۸Vj\ĵ%ҽ=\ 9.x,QםA?K6[p: Qշ vӎ:fXݽCۼGOeSU7|)#mu^f;TmؾHsų͜5B=J*"uV{{#.h.G/_{[+ؽw}.84yYsWQ K-F;g].I=꺚;D+ǡB}G0,kNK5iguFG\8SqyIs1f[ߌIE8E)#6_բm{sjgY6C HKI+#gu5Nv^w{Wֈ^^3*6t94,;揭ٿ-#OZxz9?gr<˕N $<2񂺝̹l mXގsQGhj+e ZVn]ӈ5J|d{G$vZ~8(s>^=׼[2ʫaݍh=yZuՖh(nN|iW{yIu@wyi,_c<ԇ}=uj#9:y)u#VU|Vo^3LVHS KR/T!|7}9ucGB[q?e_[&+*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*_*J*J*J*J*J*J*J*J*JE%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P~@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T/*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J|*J*J*J*J*J*J*J*J*JQ T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TC@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J**J*J*J*J*J*J*J*J*J_T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P T@%P TPPKdKnZGY test-file.7UT :0Z:0Zux ͮu}?/a''p*MS%]oX3H }oDԇܦߦxNu۲Z۲s/:r]2Ӈn1]uꟸͯucq^t/2},O5/KOmyW^Ԑ\/yOr~sjW~ݞy]m)z]5 =lkj/{k}cMWڢr_o.e{m3Ě\O|]~طy[Jo_>rvbOXo۩ruS|62 zyQ5>Zזn~^/= s#wo|~]nw,S ey_-ug@ui#:ܶuK!s?^Kt-A8FZb\Ϲ}KV*hI?k^t}{措ۚZ4Q<Ӽߗۚ#4X1]圆R]:&%J#(]o3Q̟/!_%fv\S.[u?د}~i3~bpF𸬏(/7~)|Q1]?_MY?2e:͵NfXtX+kL㗆>(ιN4)I>2l%{~{ Y)N4DA˷F6E->9:G^ۙð$SA?Ry<|ْsZQr%\sSoyё[۝ޝh}3WkzW^;1DG*G~]Gzu>Rl]ՂzosL ="描Q1xtoMܧVE^vdGĥ.zOeF}Y9G@?l=#Eȓ. ~.K6X" B-bX.J--(zOzϗy\9,ϼ n**rOzcH91ma\/?k,2QFӞJ0)O#e]#:1ӽM#߫ٺ)u}ή1rr)Src)ٱHGr] SjpUb1uQj|G)4;PQ۟iE3IYzuyH+ZkhN!Rj24GM0?Q3/ߧ)b.]F7xDZVO[4Iru[g5^RUT[OU3 :kEw_cܗj.IO|[LԈ,ke-뱀e&2cߟ25J{ۓ%ky<걌[0u;[R(y;ъۉ?y^Ec V Dލ6Iɏ(&5*tJA1jio@֧EtͰ-^{yʦ8so\SR=G潦vQ˩ڂ},[ g9yFn ?a]+^ z^ z<7kѐ#hN+߶;.uZ c]7J 5v-m9*uj>hS=f|`= Ζ"vHѯ*nmq)DR[" 1TSB[ j~[ۃ<nⷯ(MB3Br܍gDJ=Ό(_mQ5P6nuD#~V\6m־jܫǏTlnyX3oVz9T3}\.W1qqhX-TO[vyĉv ez@xáJ81!jZfzjoKּ`'(GZM- Z7ooMxz4z,T}ʴ|u'd[jS~-6 ^:-hӧՕEpNi[O{-K[1fvH2,2)JmcݛS8ZJܖ(GZRooOZ 8;籥[ \VĹVNsĒBxeɩzSI?rx\W,K-5x?vǞDNmUu>ۋF򲞡4W,ˡaɨ5 4l<0m-o9Sٿs[)TP/[j(ǯO=dT9IRHcM`.'Cq})>-zQ%|\qK=^tZfh%a$feKmvkW?@[WkXiܰ-XuxFQ%;d%y/=kAY͟zV^;}?܈ֳ U_m9JHi=V~ܟG:ޑt.Qx25N}x9Swٿte_ilq|Ο?;0--~>ROk4͗5][~}Fr+kx|)<9};Znr/FAZ^6=O4zGҭӶ~Kǜ:w~y1_s_k<4KnĔ`#7z>FĜ(O3]JΩѧiX?cCuٿs֊}2{-cMw oQ1|u[S Jxo1Ys$8^?+]#¾k<?c\g{B귷IF҈:JHA8;goK~3;S.po\t-bsW6?N4J~bpFp[y!;>O.eܧgG$=y?G8.3._uYFKJ}Rm5y/iОuMIh+>(/7VY)"cyNbyH%M]索SgK#Ϸ;;h}3W[zg^;1DG*Gv]GzeSl]Ղ_s^T1>{Ev٣bޚOe޽,5K]d-5G@?l=#Eȓ. ~.K6X" B-bX.J--(zOzo,)rYyZeUU:'"4Krb=ø^# ֜fYe=z3aSv{ 7QFXub{GlVu%.S4]c:)R6KSc "Ժ1n8Ձ-{>rcXRbivNFmVmƧ<&e^hԅ2ۖ^!Ŗh ]8L~PhD;05PDӪvϼ|(LJ΋w kiY?On<&}˹GmQC Qo=U?s\6H/딚Emiq[$=u3R#沬T*G6Ζ-c Ȍ}KxK(=ݷ'/ORly\sdIpOT2nØsDnI,F+n'ZAzA]Җ:S-X-x^7FT<>=aʱRsL<9_Ӑ^_R7I9|62xI G}tR|cR׉}S֜Re2uE%ގpl]J=ׂέ-_g5-sI|g s^O.5C,Z%"q钏:GP N5C;D{{ԕ=uߵ1{)#py1mQjǡC/Ưtf)Ӣ<ƹ0Rʻ! !r*%=T_U:As^ibdJK塏Uy{bz sdH&m^U%خ-IXS4N-Ӵz>c_@j>u{JdTW9Y+ U0E<3g<{sX`SbRr@9$V6v{|o}QAߟ kY╺whwl=F5%snkl-ɲuΰxgxl0SŸb `>..Ǔ 9ȱmS}RP9u܀(QcҖRV<Jc f#JlI./M/+)v`J$/:CE8*F鷵=Xf-~2-ăƧ4}4ྵ@GQUevF*&0M^UjR=uN36ϔ8ю󟡢PS?@<_ok8{kͷ,TH%2]cs[<*yƪ U?2).Հlku]eP#z[ދU%`mr.QP^r) aZׂ$ȹEoƎk$"sίjQ6ֽ95 eoyHmr%mӺq[CJ"εr&R+HNUMNQʷׇeYjh,CPKdK!*%B test-file.9UT :0Z:0Zux ͮ8vཟBP d5N&A^+ vty<$r7E20?uDԇcNsNo1=mvs9o˶/i~[y}˺}ܖ>te_ilq|Ο?;?.m[951=ַ_w:}MJ/c=Kr>{\.KFᲧi/k/6oKy˭\]~;x[k[Ǻ)Pi=o{}<ѨZ-kK~Lz;o- ןs=w|~Yw,S eަ-ug@ei#:ضuK!s?^Kt)A8FZbXeΥZ+}~?Pi SϏ5eNwXR/gRǾ=rGymM-(uHi޿Ke͑X|n{|t ڮYGrNCLq}ߟq :&%J#(]/#Q̟-![hOmr]~]_>8M(=G34:τzs6dyt)>=x.<"!9±vq5']/xgo%)2JKC|iTX8uS2`5R=-ϴ,u.isnS[jsShsqK൝9 K-8*q[G-i:%:[57G<E3۞ Wc?w1%82V ào)yS9eNZQݖek{K_<-5b.ZY~Krz,`l"='Ǿ A}{$5Fɚ5Gf4@z,;9G]N:l^ꎠmbve>t%m)3؂Ղ%OzjY{k4LKsQ*e:ʓ5 %ucÇk#Srd')nK'7(u8ޗ=e y+U6/#Qgy+܎YT[ v٥s-Zڢ.uz^H":D|0 n \3ĢU+.xzmsTTS:ɾNwM]S]{ލ6Iɏ(&5*tJA1jio@֧EtͰ-^{yʦ8so\SR=G潦vQ˩ڂ},[ g9yFn ?a]+^ z^ zhS=f|`= Ζ"rHѯ*nmq)DR[" 1TSB[ j~[ۃ<nⷯ(M.u:ecψD_-z7lQV1z]Qjۢj)lUGl.}W_ױfDaR[ # h-sig\b e!αZ\E6.ճ_1cL8*Z?ŁáJ81!jZfzjoK|k_ONuQϛZ.ӵ<ۚ߼=k Uˣ7iPC+Ӛr)O)] ȶV!Z_ m<;a)'X[uZ 6>ЦO;+7:%Ǒ8/{-K[1fvH2,2)JmcݛS8ZJܖ(GZRooOZ 8;羥?ԍ.+\+9kbI!u2o=Ω^uO9<|{}XZXR;cdo"S 'y¶*:yyE^]Z#zyYrf֫fаdZb߷rf?j_ʹ%ng SY*-5?R6AJ*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J>PKx0UT,Ψf 10000SalesRecords.csvUT 4b4bux [rH}~V[ڎg ` k tbB@RFGɢ$TUf<'3Wlrsh}k]Vz|ڶ^vqlG~[On_m߭n7v߭.7}i֫ou{_nwu[=U۪]QCguSi⺐_(!e2X u!UfL0TʔDŽPtPjK_uT[x[=yY}[h'DCsRx[_|,K +%ޔmJ4zWUs?'X}iv-]?n]|oBH+w'pf<ƚR"2jlKh/R7ElSJ%^-o~[{nϫS ӵjsOp9B-} ׭yp.sUZܼFPY#HS;Z ]8iȢaDv7A(i-evl{܃"P8qkr93@U/O8 \%H AL6`Va[*Aydsn;ccV5<h#0:xZ3(vԴ8Yucf32ٜQV*<0( xf,*TicZXQIp2ۺ*nj?oYw(nl;QVEt;xE,5uV~r<|n նnWUoA%lC)">߻-~8Fh@D(5.JY-/ Ai//\WwGYvf;j1+x !Dpp<\F)Xo7]?nͼ`x|>)a=\·4-}s؅?jv0#p-<;]#/}@{#CV1J\}/ Yn覺%u+$BiJo^7G#,8r(!UH"|f<nN uL8xSe8aGpokաm/LJ_# JM3.4+6eqPD|˫.ܨ&hwpp35u947@^ԥOJxi vIjsk#\_l&D!9S 6 dU/ZviIm=(&,UI 5g->x<|I1/y%4u:$ ~Ew9`P `>8rP8J)LG+Lh@[ka.`~^Я@&/<H_2h½@Gחm+(M8nBn 6'Hom¦(vӛuMBHt1ؒ" EABZW½#Aء[)X׊zH+v'c n_78"$C;րS^LN0=li=lf9%HXpMf1$329Yi%:!:ǽYߥm*S>&g QHA (`cjĉh[dl,("% eحE"6X P+d/  5'yDG~ ܐi;YǰT!q(R9ekUL]*dNE;*ds^#kRc-1NRo}y[=-{d$/V"Y萹$hԜJI+L#ل?e O[o40~DJ >*b&6R xyN;+=A\B$rRGT((#@!`;17vw}Œ9ꐇ@L GeVr1U[*(AĕySJ=xz:Pfzs T݃FçL:ԃW/WkP* $ 4§c9"MnjqY4}`ɩL3J 4:?߫fIt6bQD) _Lńó_x,VOMy]KWׇf.R9#WUqP\d<_BnS(֗Y6ǦZ ]Qxi/1Ř@dv. ǥ3"I(0tkp)C3#n"'7:ѩp34M;aHXRd ΁J*cR4V;::v.tTqK9.PIV G,na]}IN $[EؤHZ[vX+HIM_Nz P8w>+s2$02@vo6nr!Ltz*S˚nXIEQHr?.YR.ۣB@y Hoñ S?vM;/43{y_AdT,{AD/EE1ڦcLbL ".`9chBz,q" dUWEe2D&#k+J.z䰀NbI02dnMGe=1P9Uƃ0图:';ч$P2^j{ : ;{'.(KƉVBrl>"9@гću)OF5DY pԎ`Q1|Joh۬b3v)3lv0r$T06lJ.213%pHB(haQ:YKim;<؞9N؂ҸqE(m& W#+J)Jh@+9 d T#VaF2NHx. "Ol8k%D=yϻj, a p,;s!I``V4Z'v*4)&$s@LIP:s ˌN!x9*19Ľ(SY=qv,mȥz^/nFy h#`C)4֧#8D˟5#cR0g2͎#['0#!u<w@ǽ%tXvph5uC_B>Rݼl1$WJ2 Ź!mmC= ";vѝC%$B`8Tu_YiIjyq]ǧæ ߍ?=ǥSE+iRs(hr!!n%;1yBTi ١YA {JF a ٰfX5/L B̀֊~^NfbP1H* Nl.uscIl^y=aFYɌfuoHݴ`TQ%"6m~RG̳Mq *>>Xr*󶸋u\o4,Bݼk g26 w˨#lJY)muFRI8SY:5vnڔM)V!q?Rqg |Ժc' t <͌YrN<%+߸ȒU%%Bbgzr`c mL iDEs]Zнf"dT)pYFU`yٻ.{QIFGvMs!N|x r+iVah{Us\T}.]@=Hj6\0MSǒ '^J'!!D"y%)<ɮ6!i&`i8 3Bt՜8C"Ў]⋗ l(fYboY8`PRGW.uTX1ꥆ\2?ˌFJb^h]_+I.L. z SXh5,C?l dK.}ͧC@cN>_ ";`A.үEɤ!=.ҦqO[÷5>U](/ [ ק/뀯>J=s^֞et C]`g`[Jmd%C -6r} Tt̿cW>MɊ…~j?#i&.. 7p~pxd3Js~Mq{OR_d*RX.p*I g(NäA`НK߫IQ6g@@a` ֊YxcUiO? PsYsiܡh:s+Kh~Ϟgi9`&9\tFg΋Pb`x/=K^ kY#":ZcSR"&PN0ф9M"!qN BayyO)K5 SiT4"YUM7ۯ)KeRx+ sBrxso/M[~vДcC?}yk[6=__s E4:ۖǕ>~6håLJuHD" =invudHZfTp|;x{ 0ߙ̒;mq[z( huvE=|ׇw#(.gHBCuႤW)u99n@FpɱVb:!r=Qg)ɥ q -)P62_)b6~IXic"Yw>H *I:g=۾PHJa]OU$B1o埃|c\)WsОV\ϟONN$Ã9Z@V :^1Te\:Fַw<1;jiz.w4`SÜ_g̱9A);X N![:> 8 R̫.d:z2노}k 8Ùs>$ Cˌt"$Q9T?W_ J|ъϪGQHMW2f{B9爛qv{sۂ$qb< Shl (sy* GGp=^Ы/7CҸݖ }E)|+g/S[~t!^ejU M_=|xvތa6o VSI*X^ z!CINŻ&y{+iTAgF.I?>|O:tK,6̟<l Qs\<9ʎcOFNڶ+k]a`2tR/d6uűa%cJKFvPNIX')%՛fWGdV<1dij)nl G 7}8J('~lHWqr2Kz#?w9XZKӥn_YWZY%ܮ@(ɰ*w9[dVQ$+pDg1xNܪ7[4@IEr,#A_m?{x{:s=|'ĥPicbɝt- BQό,><>9+RQIƂKC5$o_襯Kui7)gt7̼ R=Y[6\غ+/o__-XS؃ )D7 B=6UW9ߝC> )E pKۍ‰.Z,rv^CZɜ 1 5-?0iTĠ.y3p0P'}kzKڔPb!ưٓWH|v^qE_> `*g_>XJRgUG$`5ɽ0Op7Ӓr;'%_@4"`-cS2!'c0N[<-b^N:Wo_$>Pd$p*JMD?=^ gz~@Bׯ~ҁDŽGeCD֒+M^{H ddLTOz$f5}*Ųh~V\88gSٱˮ$._1LP$X(&0T퇻wӒ 毾y<(q+(bFPއgk)n=5LD!:2 ,Hsi 괕Wi:@E1K Dzu4/8uXqCT8]$VjI_ڨߕwӏ`vVm;CIo(i[Cm֡Ljkv#"nf]e!65 F[1~g\֯Zi|2fHtT4ct4xVh$Ӄۖâ"a("6YqPI"0z%F%^jg0/V|qb IΒ'&#=?p29iBBț!YT9ẁ9w[):ԍKܿOb;}E/wWNZ 9,j%NpAט 3}b0 (O ;vjҫk4B>?q I>Ǎ$ʷipcQY %:Siج[MhG [7AKt9#.Q4 iAWA_۵q=䐴ʚi5GmˆNLk5q.g̯i'$g*'x[{R|n}.Rܠ{D7 2=]^m8bёC0R *a=zE{HWJ'`䬫-&PjPE>Ci۹B"ޗr}h= Hn3 9T|>+!*"D ePVCFLɔ- ?:A`;fy\-W:|X1 cޮ/3&8Y!n~-H#WrGl(qڨQ+CcI xО_J&RT ՠzʫ`<dނpaWE~?&٢̺,ףڭ!bT#bkj]gJ8 BDG";\izP8j*$w]MJIa HY Ye,_{>lWi@R˄צ\(Љ:Q?ػT9SZmб*yzUDq닦 82j!eQP$|NETō~)fyI:I~DI4%G׮O8'+^-pr5olYZ+QɅ/LůS&֠'Pc*$Ę*dǟ$$7bL#ʠlijN1_ DUz|w`\QYxYz, &R/Ň$ "&sy,0 m&u3iVuDv 7WUc,& &<80Q ^8Kb;X3CXU@'Os;h"#7'Kz :Kg$%˖Ujbte:#mbv̌c Ԩ'sAmE'tRI, Zi4Z2S~>*DS9A*B|b1~C_3UiK^#=SMG yNww:NYOdsC(tAjN+P4{.CMF\dXw&U;9= zAΒkqyk,!fI ×֌/&=٩;'+j 㗦C8(Ip[ՌjPGe]ٕGX+#|FK&JA)GO7*B8,&h|&}ۥMNӁNCkVjT%lRw~ll @a9c2)G\}{"4'7iqړ'2[~_}wgͿ,DZ*@]Iᅷ+*t$OEBljx*LIM,gw2l>z,oy=;'.y@xKPaSI 9@.Eڂ."W('g'ՔM 4 ͩÄcHc/۩HԐ̥ftruf owkF,=JR}*l$$&.7.`:G?bj7Hy(qOJ.Qq^E_ZVΣJY۱xErBTiDHfѹ6$9.@ C(hqE10tܫbjFHYz q)؆,d#`)7A"$bWbYt:_訷H/6*u pY3TYk#K1Ǖi$1F.9鬬TySXZjLQ.=W=Gp+S+.c歛4jZhQ7}Pk=:99bsDwrB$pA ipp1\ 0_foey(9d~Ȭ;1<[nyî軔s@H^.5%ɗrՕ8}?1RL@v{1,5@΄CSu<[%J*oPUr6%S% Vl<+s?#eMtHS'TRfH)[19͜1};W*=֟g)e9d⇌8饣U<.y3H91E Y%t0ŎNEn BQC4Aֱ@$?&zipzɜnsя' >h?٠! EyΓ)6:>o(2e򭟓v3hshYq݊ʕ1%Pe4$j=+v{; g(f @ڹ74~R9f6U\>P4p|G5Uc{hWuWPW9HSk63ê@O\ezn]"Yv|d;ẤS71'F> (5)>CZEcYC2xfm[Tx eK?p3EUi5AA0ǷU1|zܯ>HD,xʾ bۮ+e4 mc.cWUA`o yA9 L}rHnAgB^xC|&}x+guFu#$BZD C0k?K.E9k%Zmzs^*3r]=6 ƂݧB[ScY}8 #6lc)r!?<>| ʲ1PTBO2caϊIVNQ4A»Oޱ-Wp=SsK)#.Xk=`j%~-< r "O=9V e7( vC Geve Øԁ0ߝWy,/kH_FqR@ ʅ$͟`G&B# )`*1ֳTZ \$n_Ҷ-EF;hۧ' 4m _IvR`&*cj,Ȧszrs'.;!1J0pJ8Aݡ=lf#Iqv}z];ѥvM@- aw&#AVD|IshBx=vWǟ݇;T/N_wv/,JIv2NH%l^Tg!_v 0LxoRxDq$"E_9EL+Dx?@ Zv2hCJNOid)A ?.c_FsIdJO`X]ƕI/VJAIVD3tESy9Y^0=ú- G76RwŁ`2r/`Wu}M@8  ]jqpqFeC Rsez*,aJlVZu ѹR}WTRNdS]/+Fr1%y. }-ۡHKm$E7dĜf&r<ͱ/^7FvCs4;:@f@zFVI Xl^2Xwu1Qg Kgd[ H ?2d2#bUaGQ. g5"ɦJU8ϻFvϨ5KQaS)pFxI6j,`CDCk=)_c:M:WpfSʙyEN۫N02|:&ݕZ]Іǚa6\դQUpż.Fu:P.Bd9{*4}mjfy3"I*SЧȆ(XΗ& 4: rE}.c RE8 oqQ=1 fx-57ߢ0j y$')Prr`b } fԳ_O0OT6`AVn^Q_sͪD/=gjLU@ * bRJdLf!-y*zZJRo;UUCl8Wh1{zsҲF?apr7ʬ,ծ*3zl^'~E;2ѫVg0orh:2f)zgAJ+a4kiAيӵQ<[NK+;?)]!2#smmlN ALM4ܶ4ڳ@nGv*xڰw1IL1b,ӆ>7#8M(8(Qƥ̗+>;4ur}֙!jPs BJH6I]wWsCI4b,:oU%ȀXbS?|=DzJ}YӁjʱpA&!:rQ=ЧR)7zϩQTհ@{ {y쏡 p}~`C8S:͗b[r~$QΘ Fʧ0iVaqfDiaSX lھնcgc4͘=XAծumѭCJ^ltN-i8n [rIP|+k+.c B&a*ozNۗ r*6ہ(`pDI6qt}CP]no_5뚚 WȎas6޹JA#l]Z-׀HdlQvC] <;>*xH~sI:Zywp[IcY2QZP4v#MPTfO1 HQ?o&?tڇ=ap )fIenBY#T1h`׶v+fH_IM0W,FDϠ`䶲ZD@AS}bkgHhMe^S%iJܸ{P-\BoAJ=x<]O1m,1G+j=+~^2YWk-!}FIE}R'^gm+[A-!]w+.7v< 3RL'i4Tm= PM)Q#:g!DV ӹ(_)`)޿>ȵ;&8@uޏџKS@}~;'Ini10m2TdMJ)4p/"Am\XQj,AaBmPDRa [珸\$xwl-$K=xU$0V4"F.!Fށ[̨ n`|R`;>y^)eł /~vDlS7@S) }% kNIU˧PHf,mK:<t.׫F"记l`=|^b|pn7^+܃Ǖw9d4: dWoCkYӜWb׭vot]ڙos(Y$OI%NZqbrH`%Y]pً K`L;?rKMACCᰁ50v9ua*OEjKH{`xQf IjbӼ8qdj:ED=ߏ &v%%_1uHt˽,sWu|+Qhv"tь ʛɠ. YkƧWC%KW'y1L/_f0ҕ??~\eH>YdWO?a\ v H<{+ X" W#ْi<ki"[4J]i;HbA͜,9mi$sq*Xim*-R0[ތ챤.,q8wJ%W5 Epm2sSJ[goi+#s+N;,5n.?F)TPKww=|;/M,z^o,?"r5A^b pJl%יɣZ E_&sOJnC܉\J6dȆq| C'2O_`JfN Ɇ.. O?Z)H]AЎrNKY~}Fb|J BS7N=Z3[eKUļTM-/T֐ B b,}騢KÎ$$Ax4<.o d&Plq4UyΒZ^;,i/gró{Ryg|10u[Y/cj:2R. ]Ni,@4'bpټ,S@]0 MB{`Ô kg ~Ϣrc6v4|Wf|SIb$qknsQu\Fn x}qfykV\ݒBlvqBwO_mHSy<|;PDW-(GU6M+{r2.%J K r.ET(PbKKb C;t3@prt;BoyݝKk)wv(}wGs ;<ٗNΤFNQXCb]q1FLREy력15ᒧ7vЏ#^%`U1)yW6TC5K+peG]Aom%S:ހSU@ɺ9\i4,eeQAeIztz3^>=<_mlBC?n3‰ pQjXۛJ3|OPiE.T/no{n$Ri |SؘV``E..'fIF 3;B4COE J753BbUBy",Ƅ9om 6(( C@2,`P|J]KZ^i{aK"O`u ~1ogC.Gf`'2KIwMRaC܈,qjR֣ݼdU0 3$-bh83]n N?l'y%~t$WHKT(E!F)x_wޫH厇rthKuY [Ŏ%?%vaBJ0̲jqI.rCJ _ (ihJ{㲄jBқ%d 1+֠ ?DNgJ;]5yɳ}| q~4'l]CZ2ycb%TQ<+ۛ0Rsx+ꃊfvB6TN]ڇTtk4~mٝ""% 5ɾrqApQsM| M T QpzΦ=Y eTGcCk99%ebc3LSmt,[ʯ /w_݌5[ukrdIf@,(a`eqڪ5!_yQɉnȫeJU8(eǑ't3{þ/}H"/mU{z%\Jm&W-Sx>(+5u5,U\ bb_Ԗ(fjɁ#ԛa647R2|SRw߾Ћ] y~sr"5Z&,@3aJ$*niV-DL mE>KiKǻ_/ !?x;){N-ڍ$Ne@<?l |xMd$»ϘZ̫)za 1Hy5Jń)oWOrhN^JМ0{z* *{ty5N"I Ԫ>e8v-5{(p.Zֽ/{E'3LN[4zAEHNu [+UT&1 -HxYb`.D؇!ퟵ*H'>L*IDsWM+Ahb[*TCŏ)z|S$|yx$uXGĝ~}v(Ah~ 95SXR98|kB!z&ۜV<`H56hݗp&Wl"a*D`K&R+Yq5 <ЗLR̐TQ d+;a՞YjcaKt֏h|TgC(UXp0L)"刎qE$QeZwMy V2_"u!H]#"QM6L3p% ѫAH.RZܶНMOq$9_Rw2 p[P,,.U,11G(ۧJT4cj r .jB75́2&>! sJRprcK]Q9Gv"_PuRW}wkK|Bb2$WqvO:p X-7+JmD>qŲSQ|֩`-ֹd(;'3vN*9͈40 r_| ܩ[K<M8C?`T@@sݬ619ʭUn^`S4èl]nbA[U&& Hڹ;,*og=t0zoFIքH^^Q|V.B$=]Z*w]Q䍉Ga^U5@U}|`Vcu6B2<ȨWjQUGu^JSW38@'iSA J+.F{5|yf y vLN#@|Q\wUi%_ׁ8 labn!5Sc+E`nߟQͷznQ /ZVt&of(ҲH>5qDNvîk-qIU*\,TX)jqIQPD Nmx?yb]wmnطq#CW<ׂM<:=`_S% i8t ⮄HC”gLHWCFps)[E2Q1i] ]Ye*9"Qe ,(i;`ʐ'&x5jR&r eklXiF@\e W/t 6!jj$}Q2VM./ZRO|xZ;pebi,~]RѲuRSjߋ @}oA*Iit Ͳ{rW9WרPJs+?! }56^sk•Q=-UuꝍOD  g,|ՃBDAػmm"?/ v)j Rry>hkU83Ǜ}]ű$܆YN FB`xO0n50\YmΩĀ5KSL!ണx~r{9>rΗ²&H3IM -GP[2-f97?"ޯbJe{fLkSṀ.yd_5|jЦ>~{/#;"I`Bs!eĪ ǫn:Ië@hb{\|AѸugEkX(}&},>1&EdlёArWxМaW;< e-O\WHav*$wx5~X]F-r4cA/VhO0@/6}1Q]VJc vf{U"MsQ_g4&/=KrδBY}0~ϟv?9.h"xJ5=3s%R_tukB[ůH8 V;2uy](='\^_gHqV?W{j^>[$:&z!s+ݫ.JTx9̏&k/Pp`:SUPjL:U@xn>y@DJOxzT¹z))^dyN&S\LKaRk (9{f{XifIJFw(@hB1CG XD[<ഴ4J?{q WdKq.ҩЫJ uBJcOu7Wu`Oa/ K*TގÈx&F8nT=]NgmA%FA;}TPirU#E_Ǎ{S3NQp,2)PF`ʢNPYu":1LNߋ IFy0כH^MvA?~᧻|uᇁc* kLbVZ)%#I.=Kw2g&'fKcT1$lN^(7yghK[&`^sj{*ܳ3Hht|ÐK>0gL,Ω⛷ywᵴQHBcEVAU*ɃKl,?gNm $\0kj2S _6=A\;3a#kbEt@bBןB-#|h]q*C ØR0igwjM~ !z3i@k/'hNz-vW2:RI7܀I:PI]o=kU#>w"|('gdaOˉ0iFU\5Ա>]4{T)vЈ#̹0 P`4d7smQF|-i8"u+Z~Bn%mf4rU-(7^lK}Q-h vuXKZj7)f:eԽ=-ٲacT 2%O.Yѧ=`,e^wę 5wAH41ۂ!xp}VGV00P(IG9&Np{A9}Zj<) 5.nIgɗ2z#u}[Xpsj0Q{ O;AXD 4yRNS7ZX>_NW~@iY5J;6J"Jdx\X\,vqdh"!ҋvrj2v T{QV|v?T2nmG,O sŲu^!,0H*K*zPvjAz7Cc-%2_ )__nALg}׋# &\ Ky/g\s%bl/O:.Ɩd~ÇnV1f-O_r)1^̂I_Zަg0 m\%*ݠbcI%h~`]oAA6RRQ8zFfYcIaF(q ̖ G̓ްHȊtX3sPC" ¶cwZNRԘQF9ҤjEɥc]iޕ҇gUG>InЛ0e&(>l)b;?~/~o(MT'!뤕(<G)`٨X]9;J2GJ\ePs,5WUQL}iZp8Ntu %!j𒧫v*e>u&0j4yU5FUՂX^i>-pHiݔ>$ 00,_Zma5u?/1saϩ]ޖA݈j*qU{浑2Xx4r_bTˤs-i'6 Aґ2  R?7J=Fj[]z_> ;FՁڪ*Us@%vl3ҋJ1/b/)Ƅ+O&?95pNi9¿а^o6$(:O_wh)%Or@py0RlGzS4V1o[o$Ca<4,=3/'w%:\yƸ3[J*EdԲ2|e6q3H `P=jl:-V$rSNOۨ DSUyCadBg;?i%+A6z(9 q2G_Ij|Ww |he|ZG*WI/p]ލ.<5Nupw-BTkU`}lFC94ǰ1$jm'@-@&߅ (.yw6 ڥe婀L>0 ֽȿ=<s\noy-9/s(QT\q*5wHNЫ^ăA#fG E-|_fAiA!Qm % $EӜ"#ĆzxR$i\Lv0O`\ZH1 zr3#_~On<0Pnɫ}M m ̗jۖ݇K+}P g5$㵏#*rX:uq/]RY杴m30 Y}6^GI=lb Eҏ{/yQI?q,A%l{qh*Ҥw(w(<^DCs]K6V%+E(*gx!Nj:͂O N'VNKDy0%]!ic PICpZ1 ͶR:\h}p7][]QRLpLv%B۰ϫ@@RV^1;yo%^8zuJ3En J`nVV-X t~栝yOB$8abLs/~V q f|P]SܘC15 n*vNAn|=e+~<30 |[h{jEQJxEki9U^;>| J͐!`v4\É>lbc"L#ש x] fRZ n՜Lx~x+5>I~D_TY=!'ZUt:̾ _tnUWqyH~a9YIɅu3iӋM3Ó爃U*<h'-mCY^n)Fwh;濫ʋEªB_R ۾Z|lZv\3^eM&ӁQ,Y\hx7tI[X&H& `rT^nig7J(rbUtHISMju륻UN-B^s$>. S>Έ F5(!9HƯ+磉. *7P|en2n ^.򘋻GXN>Wqo `g0¾RL9(vc9xYo/v1lቇU.J L._`|ջyU6,Ey4Vv,ʼZmϑޗp`C!:U\(yCH rHdh% n춚 tU_ !B:8i 4tC&ubqø@o`qN|FUι[*wL [fadhPl}!}5=@lځIF̣LcDη!$H! $৯s?cc\y)QNTBv#"MI,{B/OkC( w NT{ȢOL[>ZjNWr֎Cdt䠰VWկY7!/0˦w1k I(]* =-CÄ"'h:HgHcA-bbDiVrѳBcg;E)1k߰ti;v 0P㡋 ’v/Oϛ 9mRó8-d R X0I6$e im < 9 XŶf7)K=\V ZclJeȑQQlV.dIq@qVvRn.tO@ywetxw>("[1Xo P||rs*m@)rجVNuUZOVn+GD`]xnhԊw,C骬=y`KGd6G60DrC I}sv.:W*,ă:;Tj;pǨ-ENC?c7jue!>ݲzL2V_b&jʪj#:m9}_BaZr H׶MFe)ig2w1T2^a]KKN\4Zd.'BXFb]<ۯq24ij?M*=e:%paMߧh9֐!nM&h< }_<_Sv/Wרv`]hx{hZ1G[b$ aj$g:ǿz َ`=>&v]O0jSH_?=|L7/X9sK-JSUwR1KbM<$ss6hU6lP? pˤyZRYMI)LKJScZk{trQg0YgT2`˥΅h|Meߠy<&Қ0z`*E.mq^9skFZ\2Qd۩\Kxu{ɯy\чtУ)9McMU|ԭ <0M8iu>YTqVSQG@k4?ᱶ[~PtY$? SN fNyN umg 8Ƹvjփ"G" $VĮȱ^(PS=%VKcC[M?Ludf<ꤺlʽlTCi\emLSYW>lBȎֲA15s=n}A, )%A,1޼qnOh~]urh>\MnQ(LZuqU.wp"AZ3pUf΅`b9 ސ[%YI0 -Q 7ٯgcߠ~2%1+Hkr ICO#wHD9Uܢ׳8ol^֪P'Oy-D S1muxG֨U5Wz7nva. IqיŔ'QҴtjE"ڦ%Q=SMv6\󨨖mzݽ㏧R”p꠳8IYUkn#G"\6H8bR3ӴLz[0J:2YJ sGʾ4@y*\LvɮBt] INKI =eL'Vhtt4D\ IO s[???t[OêKm#f! Nʫ͡LQ[﷎ޠi}0KO0ϻk H5~V?>ud4y5y[&<B >m-ŒǩXD*+zLD$?bé@f@(;\4W\sc˗l-L)r8h/m^ |2J˵өőŐҶwCWo٪5Ajm)z\'`l]0P EQPE6)MVTǐIyG7Ӊo Sxi{TCJ3͆9n9^onk*<j!W3GBd:~((TJOS CaS! N=tm1J%Uٜ|٫҂9C6twopMԘ fXSû^0qf RvlU}qz^h]n|]Oh"ݑXQPJ Aש8Ŧ@ TL쳵wn; iO)K P}˺aXd}͌ـ :#F۝ŀxvf 7Wu(Vfm1K*X7-;[oG&8:PjvOfVbm'-ücb.Ǖ=wwɝ8eU(m>qhg,Tt4e+5,ZJ&n# /M=qttuUÊ*%ʈۋ!>CXf6eJ]~۪/Fa)ϖ;+~.1E -I'Ll\j%s @jdyٖ  , K>|xv (qg|27HT!^}΅fGTLqK%on' vw[oĒb ˢC+pl;6fì(J<<#۬}2(CvLiVc2iTIC>D;I?m6iэ 5vq ZAmj7+U$E94GCD:~K`1SS3EBYJXlMrT)#SMOJ"ZxvYW1k@tТC`Šuh@rq@Rsk 'Bz$ x\D˷(>ͨV騥2AOAHӫۘЁkUҘq]m|9 tx4QBHyk~acb΃ED>uKx]&s=e:' G~Ba sЅ!4c'_)ƤliWvn_#1-Fgu8H,Q"K)SPj9&\j︥`n)ԪTZRzRvfWx'6|4~#/>iGn}fȷ9F\W.@9$4p(VҾ`.Q̿rxô pciiIɝ},.4~`λ:@Ñ̯[J$gTPA+N|Bv%" V*gwZJH{BlՂVVVDR.0>n( ϨhW tL@ /w:YMv@` &̫f~BWjSqRĆӟYw(%wJj:qiKF)zIdase5^?EWdGSU<{)UūV(}ۋw3L֛ &L`#UwĎF@͏KUR--}b#!y'y)&R6N_ʝyq Ĝ#XJWUXj.d#wU>K OKʵ[$'29{7(U%nC:*XܖT{H(iEEmh%]^C֊v˄҅ L#nP.V8U"ZI=^Z~ JἽfZi-Ρy2'v $ve,^O»MnIDeF34W'>^95# *q~ `ΜP|SoUr ¢s[;@+J= AiόpK/ώ@HV Fƍ9J7 $b@!v}>PU-5$YݧG]UN2tP?@:zjO,7b˂o!Wd.sZLs?yu쳰yNGM<_#gyÙDX;½jN0yzh_AaDg;w_۱-aH<0f+xM E(ŵ^]KaV0?Vevcp$ 7 vOg]yTH"I9~7͕PRnw*hՎK^kX] SK;w;P[7'EzkAN:dZ ]{hBUᖜxD0\b^)H`jx$45]dbx^Ub'Z $T5s8l͵ZR4D.)&o1Ѓ'-Cr`1NߑҢEAgoGJ1IgOxjR:rYwSHI\6\:kUa!{TbߐyJx&KJPY"a\]Rt"K7h0Rë\s#K-( YкõD6hDž\v2b" aU%JVNY [ILSAN'bA xf^ĴU^eR8v%m t!Evrilthv~0Mg]Us^|*z)%O(wi?h1Y2V<] j~^l9Y,;114elءC-lecSZ ';39uڬ(nt^# '4 $aG^6:_dq6CZwDoEgrܥ?QsG/2hrC' B]I5SW6qL1(*'ɗUUi[]S,݄3.c5lؙQGSU^J#gGP=ҍԽKܲa]ɹR&cđYz{r:bt%&]Sۘkt H\6uԾN(> ׆M:R|@S~16'#Te%3 TTJw{s"@lK*k9g0+&LJ;*wu?/8\V](I莩yqt#'PFHJNG\sg"xuQ0H8+(keN/\1? h;ӍYRgfu,es[?;w{wwNߌIܦ,c>oL) i-ES?^B?oOqAW\ϒZb3C)!{@h>\.R 7/!4r߅Mgh:>RPOkYwO'C }*T0[lJ%bq^nJH/I$HOyٳjN$U_x)87$ cR}*%ԓ\Ӈ(Z_ēU!r WXăLQqL +,`viU~e m)'ѯ)5M&e:BRL@~T03Hm[5DCٶNa^<mdOgh&UG%)0')5AT9]$"QKsb8=rM~|+byӧϿa̽u1\ fOASs=2I:h"4;^$UCh#wqHBTZ_P-]Kqid[rr"ʩWEO1L@łzBg\Trw έ'Qg8"+ܼflث'~_NUЕZ7*yU$*eEKyؐ&NΣnz8B xI^5ͮi'K-]WheR8pZH Ӿd8)kFa+v;ȇ -mR@ mρ)o]1f6|n$o.qƐv9v׻}uҐ1?e*Nͤ\cT\92np Jñj7Y\UTI+Dkס>9& 7G{ֱ|53i,N f1UNO"qTg?#/@۠4,ȸmïRY1cnv-U$^pE~3@}dY._b( 7o<>pcqZ0/醻 V{"I-=T[| I3&SfBYȶ \B $׻`EqnMxۇϷOOyڌfcI5c$+Ix]I<^f _ΎF;X+(ɁKIsmtV\j1F xە$.k~C A+ABZ^a}9_׻ww2oox\ϹMoq!<)&q~j[Y)KSLj?ꪷkY,["]T[Iz nX>92Ói^a6BC]n4?7P 4]<՝rɪev"J͒f6D5iɽoSD:%Ȃc&-n2&g42B|2m,*1,r֥@uk Č'DhRV8_ajXny7Y4Qv1yY(w?nx AթKLTtP˜rJl':1b IP:b]Sv1 /rtSRqgIR<ZUWVy62): \UF[)kWD0Ok*].\҄XVWr}!K>o~wn@7zW ?% RQ ${i~+u=NDLlm d F9P]BAWϋ;n GإNYP>z-n%]'RRV Ƕ 8A"} K׃_B=úP4#)RsQY}.lVpS&feU'h4o(YsBA?z ܯ=:fvc杢3f 0*Wo>}Ivc:=nb |"ǯ/Q B3QY(FVVO ωʋ14o ĩ*4٭g``ʨܭ pac!UG7 Ճ Oha468%GTW~[MQh6"WlIz!OhsvN2NNSVvyV1/myۙ0@@d:H[YZMKd Yd"JNb$Ma^uY0W[Z)bt_?lNז88 T[$|xYJ=&#cw^^07XSWuuTUcKA#hUw w~RU^C݆d!_2zՒ(Bybtn<7ݹ&cR~)-2VwI:@~ 6RA+ '=S?MQezC8Z(=,\k/W351NikR-@]:*͔X6(61Yod gCw-ņz%Ԙ,<5"\`hޜ |C8ow=.fb$2-v #H3t͂,[:d8Is-'MƵ2U#G Xg+' S]\LNgbY|ع&7Fx)RȸdKf(ʗhISf'lvRgLB{Y*9!-U+fi6{% qRy11alL(5 xp{zJeVO2I^F9`8śVKɌ.`c!4ǐ pG*p|Y 8"IYrڨ\ɜd%XcͲN^T8#%*5W[GO!z)d]ʱ k:X,$&!-{Y y)kowtHo0ޮJ#"cwjya$˭E/!1AbE9@<2S8qŤͰzoxj7HrFW2\Л_jMs^]o<Ԭ>-yd&эLPOxY^e)H/?K E\25>M"DkPߒs3Z@X~'\"B%matÒ~Ƭ@dh6af/Z^?$yf0 vVUZwhˡ1/o_aʰNO1{,bw Fy44DLQ AUEّ^FU< eFI DU UPnB'O:Ӟbݺ[-Q%4-NVYIFA+z(IC:en0lZd;0pŒ܎Z UjkT96K+'0c0CTnfކ٫1YRV\/U E - cǙnLT[au<H*%vUt}9qR6`= ,1ō{Hm~_%^rLRG5 t jk]z dЬp'Y J)%h4As nϘnX =XH%&tE i>@Mp*՝QkfS u!WyzZԇ IٖymفcV x 8saF{1dZ#ls`#I7TpG4QyTPυXk^1NH.82 P. Vł:[o2rm[;0n^HL}o~uyvu:ތ21vm@J]d >zxV'4U~Bc 'N s`W 7FPZ(_xzT3xu7O\*DxX)[Ѽ$`̒+И^UYuqB*wfa*!2Ǩ.#PE޸qw\D5*Vc^/^-Fǯ1}jrt@PHXU˧铆yg?lCIC0x4K|^4xVmK̫-&`M6fDBmPcN5̜JP!X=JRIy'9p)7'NȂ;Ndy $O*磋>pN2C@|V*8edJUzAXv'k!yYp]AdG8Vp9cT3 S'[2ʀN)S 'u{gҿr`?'kUg]2b`5Π:z{ś ;geyݽAdtCXx_ 4BQ1Y'C/%6㔳cYY«Uh֛\љr33OHf`83R/Yn뉚 >̧!OxM8Xe頳, }|:}ޏj8K4'94O5:l P.hݎ0Ҡ9օZݎk毿>~_/r 6eĠB (M '{)c?4YY*ܥYN 6*JPm4/;L+8&@_<EW(sgɲ RHbscǵx$K> 4M<5:bo,c")ּ >AI}`2b}"4pzk1|:sؠ=eb%TcYK0Ϣ:wpw9Nq1W/Bʓρņ+" =(\@'JCy ^\\Up`zôp;ZZ:H3ùwH깷ƪ>)Pθm2t9Y7 ܣ* R:;}x_No6-I`MX¬@^iu *6Ư"upČ*5Z]ʡ:aU&!m)Ha G8ဦn^$ʧaH5c?"?l V/+5^D/FAvQF.6>./Ӷel *%CsB`2!8J3 [K?4@~8G/B`#q!-C NIH_A@V8>.M1f5T)Wj"ڟ4r伺JxFgClTt|O֘j8mʖ- ̀_K`d{ !ĊAX?E0e"~܊&v҃% d~a .ͮQz?Tb8\R+еӔ:J mdBO'g`2E=%CCϿ>of/Po32In)ʳ/Dz=<>^=Wq+HUZ)rT*6jHdrǼVi3KUvٚGJ:o$XRiIML$Whh3>KIJ\X4ŭ9%Uf >>ݽ|$%A  T@yn(*_.=^ N($,#$՘9*Z FO/?q|AeW0l3#ŽjY JBj'bL|״~dX K#.qBv><˯2?9{HBiUҳl^7rUx-6c^E>bbw.Āwji.oCŎ1%u{ YA>CcyD`;[eX̦ WbJ)UE:/ZkHUSUl}Voa00kn~>g#JƳ\&\)ïP?:wTB8$+a@ (g"Qӭp9T_سvI*u OI-y4f?Z`e$6+ge{vEq]ߏz,ʒq@|BvG5j JFb!ɖ )Ex56ܩD<#c/_zmtjAuLuuW,MS f:((bo]i8':#qP4o\AVhvNbwfQiZ˶jM-;`逧85lϫeDvIC1'jH L< դ^*l] O[cA!څbHuvR9uuoBIﲵ8`qppfŶ'H'!當%](Wr,7d˖[ 1PVE!n}R@SDz՘ n=1RC"3J㹔Ark8ɉM7|I*~ qE"=AQhoK?^E}ґnfuL~FTb]렇ݾlbIK$x%4؞M)QR&CD&£s wK R7klAUR?_U|8 cL*Y31c-ͅ4R,"0"灝f]墎K}ؕ*Iu-^03Ӥb]|QBډm^Ia1gfVR3;'FNgEUySn-H&yþ];"tA\_D(dv}jwWKV(88ɴ,x鮶Ht5]\.b>nCYsvo0˱I:ctC08 oWwx-zoN<|9ȃkDI]*ɃR2sùJN].ԦacDqI\-''A&_Iʁ`ͪ3CY+ T>Q<賳1 ~Ul{'We7rb*ټmo~݇sjxI qFK- >Nmarj!`U~%_x0u1%)Xz!Fg1gr@\cס*l 0\,Z%' _qCΪ,ЁAK9.pZ$#5#(Di.Yj R"k1Bɠ+gy,nK }c)$%tH){ҧ|)Y*Uf& ZR:eGyݥsj)%nuV&شOΠr|j[\}lQ*" ؘkӴf: VcO$ h+Oh[:3;ⓒ]YޮR ~_$#["=Ae=VrnՍ% CfSr:T5J{+}$>-9XOkZtomEKUWoHؼ *Uy #E^:gљI)i .mm G־ox>55 =hv& oee)alӱO BȰyiy~XNfm{ymi$%-I^bqXqj<PGy2y||/ )K,ؙaYsrPT Kj9! юXdhWj&; $ ;Үfх~XoaK*Ԁvfy_1씺G@t@G&r/t-DKӌspg~P%ǪfbTSj),MpivZId!-_?6FrfG,|$[{b`tLo\#\cğs*u\Z;N!OVH n׵wxxjSL1m6? ~i~UM6`[txhia8q~/}\J#) "'gMuO=-Xj--vz뤯J$q 'jqaKd&uuc R@?kQr]K0)pXAViq?@k"cT1]R-›'VeG2f^)4ҹGhl`JE4܆Şuߺ֥"ѢʇUhRi35JNhXtO)j-MU;b]iz20  }@ܱu 92ʛQiD/ڷںrm|彎Q~Ef!gdz=w"-§]<6Mw3:+-I |s@eaҖGh*7UX:wE p4*R(T4cQN/U,eeFxgRM/im-ֶ'!qk''DloמR.BSMѼʝ#U*Ys0w# ,?UƼ2<~$lX+=# ՄSx]up$>ZQ;ij\*0MxzIE`p0}HMJ{!%71K D @Q]8yե꤂PR_%oyhPڨ9 =J7!.!h*Զ2/S,oNIXD@r :hyh.B %esUI瑫2*x~&EP`g3ˎ[E&$gEQ>kKj`ѫ\[0P7pU-8,^ƻCT~{: >1t풴mD31]K+pQ~RpRoGT'|윊,PK|/)[--8zvC33zCq*KٙNF5*8ނϡYIw3 l:=*vhrR57ǽW1֯oIm[ 44y#lZal_cCGyo'~8o6]nDNoGFk Q)j47RByA%&H"5`IZa"|; Q9^h4&9V"lƔoY|(oj?<#8֌3/F[,du_ZHCTh&~/4)u6[kWG6e#OqG3`Wm -E;.}@Cvie;"a1%[M.!'"Q!vOu5!$WLJ+/>VʧlV$i0dC=}TsULV%}^$mc""UoliFY蝝YXпO-0c@}5ׁCTHpɒҎ^ѣ/-}+;Aj0B¶&vtk#EGC.y )X]ct`6h|𜓳ez2{ cxp)}tι+7Gv.*#1B?s,۩@+vLˀ",hV125|dlbQg#@wYKLn;ӈy" f <?<ݾ7c`Z2PX:ҌNϭ*]x i.Qhv25Kh8EJTs>?N[uw0N1F} lMZ`y%͔ <};(#Z]0~*59:*%4!vvXOB$Dq9 =zcRKj48,y2^0ȱ1JS0EJ9K^㒟9N별3[S+^KĐ E"$aU2-j"hii\UMjŢ)@F>Zy "ʥ7_j5 yjΕDmR=Z{??}C_inήO?p'kNJ,cnSqj/Gp+z?ԟ3H,URȤ+S5,RHnЁvč%yƝGZvHヨKbG0E\оl'e[nJc=<԰2NkyQA+}cq.-+Wr_i#N!rgk?<6#?ƂvTӜM@Q1O즡RӲ0q ;$n~Vn;B;mR fI<(K2-ges<HSi"">3l/,?db%F*?Ƀ;q Z|pe~r]u UUTŭOz"‚ GdJ~ K8@! f-0# C(3xim}1]wƫЀ:D : >|}|Haz!p_&$ie~(/}y8$3CcN rP`d:/t `I'E}b鉴HY6ƷqcUY S/")AN >ٝz)4RmEbv-M̱aN ׂݨJ/ؐb: qt5I*w۠dFȣDڂ#AM%RSD7LԪ8$6or`TIahƜS}NEVK+Eck/tz(jqB$JJ67HQ Aj/R0q8KIhT {w|ю V̈́ w,jljWkXEElܓQK }TB3IohSRuS0>|s6m]\IιO}Brv@"r  %mfzaF2Rr5A6/W1<}AÓLcze`5$cJю4pD!n'&^׿:9لl|S iډrʛ>Tn f ~|FVnhŨ)ʰua*B&ґWD4͆дn$&ˈ"ЗG?ߺӧ,R2` "ϺU;N2]ǙH[g22X[F6miI6"PvdatR,iygxn.r&Mh㴘:vx[zyTja] r!,ChuPnl*q@Z(T⺞,UGhO%JLx&rr2D'd貂aKK7{`݁ -UPQ\~)?ƭIe:6g5VITenWlms>C8yO =Sbakg,[ISHxQC8y7It~a$T,BrS'9R7 @/PBG+l0 Zas ęQmeh2/[:qtq`i`奺#HMZtr[רGF`Q_ԩq\ KYG_'-ty [FP6[ߎᒻ{rŻyvP/Q @L]* 9!GIWm祣c R`"`^R|W>Uxs'K xz}nj~+;|:֪X+ ǔVX)ͣpaX7zhd2؄NXck|CnՆ\Tg$L;5~%~^\ƽE9Y- <$Ukj9c$D q< qf| v32B}%OI)eЁ.pR>*ˈەE`NU@hǿz]}a cbZe,+Ta?|Ogmc}}F:L4w.3E 8X@!X $[6 4WepxǻAAKHK.9UHp>/+wuT3YACа?RE olwFBK0 i9Jccbpm8ňᘁAJ7@D( 7`"ߓN NZ2/=zTku<.YzB%UP$N3jKxvra,UI[).L ՋQՉR/:mС׳m0[Hs#VK*Uد@$nTTg9†iǻŜϺT.3STc[ۤ}8>vk9Kktlhy3'\h!ϷUjʬLn3>M>4_gZFSf Yq(rIb|cy9KF/SD.ql~庵=[&?t:2P5-*NmQCy;*>x铑=CPF<튁& xԌ(A /fh7A0f].?QWiH>)tE7ȫ$2 YKYWLwH򈀂.>}g!Tf]Jd6 G,0%A" ?,ۻ~|U;Hi -I*!_N$ 0< S.8k_?]RWzpuH、II*Z.c߬Z%c?6Q cT\?N]rwv$%7?i}8Oz8tcB'/X+?/1\UW"J.gZ׏GR=ϵC,$8e옧Ҩj́„kOYkDzf+f@PYAA',2E о.qT"vp?C]ӕQl2Rm^A>!:;+k>p\r Ҙ6QCn4 IDǘ}p{llNAlhrrMyDDQojʜT)n0)'d4ĮU{/xk"; QP<.1 v*?Iΐ0\O~c@*<={]A$FH$ӄRی<,I؆hc̖]fmW"g}_P~c L JPvO 4^p=,2kk=& \U]db|ÆCJN\ G|ìG%*~])1'$A0r ZR}~ɰ+ѬIhRmo|faiv4u]9\%z6H{.3jS`dW"@o[F+IgOӾQ]DubZϰݡE;{Hg4]WO6/Ze,w ӳCZ3AoKBu;=J ^$*W*@ DQ*rhu"nٳS,Rc$}vhC3)H&ͨqjFCA;\oa΍pBP jU}PtJy=s@vo2 ;Qd'XRqs$mO -5T1 9.D8rLT{/waPej"qe9m!46:/hc|aevl $GHډ`*)vy4gTprs@Q癈'dAEGٹLmC< KƧ<X\8560ͧ(Ng;Y!9lg Ŧ.Kҏ<"9ڵI^o%q{aX,%7RjUnkYw5*Wb!8-8D(BeSFFA>lφyiua@yzeɿ1W|BJUKުpv_Ęաe6v%{Ba@"wkD&.KsϵY]XsGx'Zb8A@ВrAg]CqLb"/z֝cz^:ÇyO~1xXot.q! iI̺p؈~1c<m'.ޭV̺0Ȋw$Mү_RԵ-ChИUxݨqRg;m~Oܷ:ޥKRy*JHXJ$2y,nL^;7L8O| S -7?QTb ;wxP1A=&Mw9[قP<\:<Λ#+)),Bl`03j׭oTN_fǴfUGlʿOm[9 :FovbWz~.zv{o%#1^l|N R6t򔥡bR<.vZu>sI ^}?X{tyźƦ7ME.sUָ$=&򽭟{ȣ,=gՓog8J 7ʫ Q/r[Γi}ai40hRц;>[ WlawD'80[ I'٬diT1R$Ktu*mQ<`'YT^uh_/߸`w $$V]}KuK6uRp~[ _,'QIH x ~|EW:- vj+0 *qn,یYn4ӬY`I~QAu{E, E%iaLfu*Zodc!-Q̻”ZVsf "/NJg\L% kzVeB{GƬjR[_OLtR$!,;K6HD2yh܉uA!|U1iՄ@3Q' >iu :r4dj6a'0ZoRwʟk/ FO }`,dEXA_A(bF=&k"PV. ǸM[˅ {Pҭ$zEmmkL XiS}6t"uϏ?wK:px 2 tsP™ayRjVUL:[2RDy,e#o!cc3 sU-O -Υ,sh3 Oc2˯0 Na1kXsTCچo];9, #IA!3?Խ\7^hᜣ`YN*&2CxbeWuX|thKӌz4נ밠H/.+AԐ6aijTa~{\ۻu)E,ST1ojA $=p# uxppJk,}E^>!5r4,慗>>ݽ|Ĕai p(@(`kRYZJ.ńߖFQS(R`x=Y =p[ W|N,q+f5"=)F(b>RW\Я+?b"O%9HY!U vyŮ%Kr_׫Ӛ2R""u\Z73CX' /P>7aL#Dںȯ7Q+C1^VNun[}b5j*fꮨ}hhm*CQ$^+siDJ -vL{jNU&J%WmLHIN"%`&FҼ|,P+Dra`)|'$g@.$k*`GsWw5K~"[UHKAb.C>fPĄqOM+l[9$ &wUf\72=YEIQpA;j*0< YFW1FHf|%M",A#H /%;:h'GyF(#.ZG"m 9}`]z03o`za6 X'< *{M1F|/RjخLN̚Qw,ͻe T0=OJWY\@4[mBqcTU*L+ŨүQf{b\-mQQd ofLV'**.j9%IpOM̎`'{=ү1ev-=ff{Z*{1YA`9h1‰ub?8Z|A|Ĩ=YAΚF/ϯLVmy +9Lbߥ3;N(,I}jskS[Fti*c=KCjQ/h[?4Dw:IfL,h6iIlUL dE׫z"v΂lBp q,ep@sc, 4#OxLnM7%[qކ+4=0d`^醺陫NTO;+7 ^F!/t:+ u1yj (N'үWvG+1i~uoHHЈPG.6ϒqCyltrf_%Œo]ÅK' `h,h}w SK0[]Ҍ+w~8u0CUbo1K^2&IrPXع@FC[&3JSGkV|q9eɰpj!0 >]d5҅U8 I~dNw: 2)V->e$eYLo Ъa\$lAK v1K\콚\#kSSfM1:Ve"u@A\#Гahх?_]ERUDHox:BRS X6kʋFV@^;Е4#s>pVL !jp|6RTG[[;iEI!(jmbj1bg04f <`e"٥},r-Egt͂W3FlUҢNH3|߅EW@KѧKn Ah9H<) [8&hTl1Dv!a6fʼW%4ޝQzQ:F߆."f;cfS@H 6zחoS]{bbLnc@Nʳ/:-1fRDƶy2v &"ë_:LtC)Wwc՝̥t>I\ }:(TK<<vRD(yqR8/<5Q2z 19驎-htKZy ϔ2er^ҬɳuB*2G%rwWׂzyu.vjbRaO1N}&9#lV'+^l2jXɰDbb{bkeHs>^|$:-H,0AHЗGsک•>  <Ѣ3j\w+:䰝XxiN uZ,5̅KznpozrB> 4_t@pƘ^ g[uSiIUE-t4TNcwfqyv0 %$V\y"*Z{^)d[7NsjәwnY>򋲼XlK>G!!xS,p3Kpyx&r&_y;1^HXA%ͫ)}T A[Nvx8p28o doljG KYcyzxfm>IVc&GU^`B8*szs`N!׷3uF gSU?;4~;?MkHᆙQmpJ+#NnX_{_xff+)Ԣ=~f<:b^jr2a_oY?3*/ayepT,6VtaJy,yfxM3#HJf@~d(kW(r)kO'KDI3j?)u ?9jJ'X 0 vs:e5e2SW:) GHWe o~OOl?JIB[H%᠕$&fBg&:>>~>]\YeABORn2Xe.?3vIՋw`< Ȱv4 ժ^\ZVa&﬉]єEkLAT_(9@d6Y +Keku+mj/ώ^fKV]8"e Sf+fxQ%mQD64>MVMs>^VyZQNh B"zs,{۲串3W]@I;.IU) P!h Hd+-s3w7w&YȈaojb03Ǽn&$ݏ_XI ,D"56|]5AkAĤEC!*brqJ:;2Fv/E$onXh Ά˻*6:mha)3 N%bwaL[VeC;„U] )RFa볁ȭYiA=9~틝.o[/Ct lX=z?3~[ 2~&90mDq~Ewkc{f0lXj;"@Ʃ_K_."OgI\O1rǪ =roX;R[[z/,$RO^ZD!:o74XzA'tRY5 y* V`J*\KP0GTV E<A{bTJ1K5E\f S)sE|oOvl)ƵzJo! Jo~'%8j{D:q87h:)Qŏ6n03栈cdZR%_9:#/)%"0UM)V?!?Qh=7 CO;i洇N_Ӏ5(js6cs{O#g/|  S z E{ !7Mwj (b0'?v䎜6V%=*x C{)WÛB 7 г1|>7&-ʤl6y5DZL^hUc "DV?y&Ba}薮OX;r0 0Mr HyUvߪ:`Cg㓯F`sGSqj"߭/k^[;~s\"خ#}Gi#?&}OpyQo̥3,M4/G:$i(h.X CrDnT_@ CΈZRsJsUf|ϸb-+ȱh{{mD_xm)}åF)fdЈ3bp=՚ߊSЄ+MN!Yj/4A% }hQ :>련'=xN_kbȁ)5Of(UӚb`3AJf/2P/l-1: UpըiSOW&ú" E ȪY7^ǐCiEh5gԽD4!+og01J䍔'%gMrW~,kCKrjP~u`BQJk;#tQU?CT"4vi;<u$j}V[\9P(5-K7u#5IjDzhE'8 ;4ղ~j8{ڽbvSn[*CU2 ݼ S:ߢqTF ^4%3/(gMý#V!]SM+`9 *e~W߉4ُKiOJYE}:a ,8In5Fѻ ߌYNS"i9 G@!jfwgT٩tezې{{"kRf& T2/x-:: @.uAyԗ{co\?d&R/q#R%h_P ]ʄ{ˉE{@Km'@wD#*YXV'-P>lr4rH&o!G,Z^UbS_ij\ST,M+RہuQV6y,d|61>!t:M?p(lmU{+xٻ?>(z=R:fp̙CE"41d<'her#,V~]t=,K(F3zKf/|W&yNqS{]_6koKP n|.mfdGDi՗Mjgݟ<Jvg-HR'd""  Z6°C`d2U~QĀr&Lg2xz5})J]p\VrC1u%y^4n=Q6K~.듬T˗BS GSˇtRlf%Fh*fWs[W󰳲ӢA?-Wn%slGIQD"fO45xL` mw2aΰX&<իƫ&s\pi#>mOXvz襤sq:ݡ(u蘼"@zڅ* w9UF%w4,6#]w˸ch,9ޫSU-9TYUy-8( f{G+C}hSE7:T)̑rDqma/%sqxaMW6Pt2ē7,IVCPza7®f"]0n>>vtZbD_mpFi;顑٢46p\R%~bcW+XLlTT"a^aXlj3]_e!P@ݸInRR07:1Lo6ҙm6¦CI:6t՗Z^%XEyn`agCX+}/n޺ʛ` 9ň[q.YuIi`&fjΣWA@eQK%t$"+_b%cJcX2)Ψro?sö[mf>QqVCK )-4 ؠ?~r}[D7y|yiYY*jf3|=r6iFE9ŝkM˪kBpeEЋs6&qG/h$)4[i,y7̞y&]9>c3nOU4Y/n-~%ݏn!O֕ -𬛱|/՘(p#N~IeUǐQ&kBڒ,qmn97T6AgcӤOrjyf\q nMupA9nЊjCcRy"Nն RkNˍaU WVsㄪ7aBb`jV?3d*yIbaMîGeG,~T!{8)kG *].Tv٨tc4w9eUqn:e)`zuEi"PS-h"~I:N_u`[Zv_Si ;w%|G^0ezfK|ҦOZ9[s(> !MS&9084Ҁhz'f`2y_p!m㻷6 !nȞ)ƦӰV$II3*GQ2j)w JTd4yTńs m?]$D%ᳯA kDLM-W*~/jdbrF~]їl{:Jj&c3th*b>RW)?]^ehYy7Fm0P 3dM [U-T\ysgUUT)#*y EK諥2;xahs>.M%gLZ Π {@C&WhzPԘTpx^V_&rnXJT=Eo>ܩCQy,6rwqMϸOX\.K#cU`;c}Spɘ=Mm1Jfa ̞@Q>n@bV;Lu@W BebX4QgȸRj^w> Ȗ_N$:nh!cͳjr$Ɂ@ `erMG<EAс@ZۡҋmI6 Х_Na/ӗ%nёfH2UU;d͗"$Vw ;\+odަC јB94uwv{|k-X/wSγ_XRh!%o ȃFJ24x \E餙SE"6wLj L)p栴a[(j::eKTk)ҸVUgT'W4L \v=Ype|xM kUmCAR3_B%أhj/)޺J 茅xNҞdgL 7 "Ÿ N"MQ /E.$~k~:P/gŇ(']$+!j˸%A:/^!S#m 8׸ZuUR˜}c' yъCwV} N7 y'rT=~ gV$~o>h<ǒ'̫ PPwb^`7nxAma]*}ȕLՖ .^q.XMt:a#y!4ܫ5%FMJW'ŝsܕ.& vcw  I0H=cJ!GYHt%j]MNMP:jib:dI+Kťo9,;qt!g66,tcƺGNؖO]3u+H]rCWﵧxfՉ5%8ڽ8c;'Q۳xҏ,R^;׬P ]''{4ہΑ>ݨ}sqrY6~_-03,~~]示zU2ZDBoPC1i_wTTm~xF-$aj= q}%v;yPG!$5/6bm݋ڟ?<+CR:;|/*t]Wu}Ha+:.yLzq,:hq{.[ܫBiv??gTgU҂NE ay++׼tq`CH* +WGXu,>֒%HG[:l*xM>^߫z iMjHe{$[1PN6&+gHBo2zʆ_9ub9{X7A +Zh*e{B$hrGp!`wnJr:5=p#- kk5t* sΥfYߏ39L3O,>=M\WD*' Qz̅#Kxѫ>6pG?KxJC8E’l֦wޔ)0O]N|:˰= `W"4Z R\\f@ }%~F"FeBOO>>}GSw `>җ>P(m3D4g^םt\J[#G5j/mNFL}i9d”&+8*h.LC<&ZCl@UY1+|e I\QJEȥ,,062V^WaXՓ$ EDc>CH&Z,iNY Yc@AzkKx 58b+]$Δ+lR>a9w~ӏIAH{Ʋ1w9pĚ\+f ]}\f/PMDFPz[y#R>FvN<:mG$}/}2s 0L"@uHͨE)Oe5Fp|3޴RNQ6j|:hB=a#g%ۚ# .Ԝ8K?Ro$}U [pF[@Qf.G?2{L0d:>qVnvը@c/aS 8H<Ѻ :eGL j<&({׬6.캨 Ӧ?HD؛OMR(v_-g ^ջj_X4"uX|N͎`07yVe8`Kl#XK.5":&ri!yJߟ}/7~N8e9yWJXFRWJ~ ٷ3 ؈3h7HjlLäMKuCjRù(iQr_GpƱCǒ]ݗ54 3>5 ݒ\v!\KaC=2HUPdAi]Q6Z=ؑkj_rHuMca#=n pQ3@vrJXN]NXC[+;|ƃi_Y؊jcirAIGW)2GX*99l$0˃4־kIKQ:v No$7CL.e ˿6uH$pa -HF~Rp(S>|N˫&0 <~0?L R)"gR築gUK / fA,"n.oFBsMᰑa~Kܯ Θ%"ZOU2Z]E$mE#[kQq,::\u(8%Oxa*Z7yR߄0(}^ (U,ҫr:f*v1d`u Pqy "vSXy[bП;[ !2und,$ßJc79n @Gʤ%7 8 ;*#ΠàgAT~4/Okq29W8klMn!%jQ&"fReRh$.&՜ p:dK44i#q@@Pъ;2Иa3x'C} g4 % vfã/S?KٵW;Ϳ"vUFUyk5 #׫y%GeRM2g*|+M>O$HZsH<(M n&<'kjQnNv&)fE lR)C4H5˭rk|LPYpOGBf.5;7GI[rn5-m`E՚ȴWM=C}CE<24HU.F( 5k@YƄ:fhfSLU|/&GlOxCTHI!^ :p8M.R`JR( jWA2$ mErGaj/͗*6.THP!⩯4>T;{3pÅD9m ZˈDчO?oYVXZP ^#|,* (0.u^bM~qOmT# !\TKLjA[ szNj?[i&ESX4%{ZPtU,S7x;)T͚(QڔH"=}En1OrnjDXf( +N5T;3ǟ>LmS(=n91ͱ -ߞ>\(9>VP]Aq!a<'jK@ y/bJ90Wη7jW4 XKr3w6A:|!|ieՃ)Ӎ)?,t/' ]#ov[z('SM:lJ~m(RwX_Wh\m럡?kr8û Tr;mo~R8{KA*(򅙨p+{RU@FV؃%APX&t{ty1[*]>r;䡣)-Lh 'D7Ȓ(r/(\YN|E,BV\~>&,`6>^9uf!+QJm"Iǟ~r-.)R/ Ji<ڕς+~$ssR$i=WEf'в^껅$: %!"%CnS~\"^VY)٥fJ&p /̳?)Q"|cJz '*}Y0]*O:T24U 0-|EG>~N'WL-J+ܙ~*hU70Ai8g)f~"2i(lƀ\ޚi,v)Y#г+&0_<&7hn)-Wuv1oNgv-89[b"lcBdn^ 8 ۈnϖ?'2F3ՆVphm9k6l{MI`FdnիaqNQrhJ:]rC,c-z ԅ7AX${Lإ'U#<:zp]z简#x>z!N&(s|Fʡ+PbɢxوQQ60dI2eDܦbȭב=o|H}uѓ1L lMysE:34 ÊUm葃$|#. iXy׊42(#Q0Ezٵ7d=É!U‹h )[se nQm[<&`ou#C}twT*DiNa kӷ?KW?0nNɍt,$V6lvϫr*[ M{r>)S? g_6tU{^f J:RxߘaP>Z=:ndqyy`HcGKLI˴2 eA/'}$2;=6V?.S oYj|=A 9I\~pjRxRILcΗ x T`-XX$c?ۢ}TpnkAl(uM|W ǟ~xյ(\&,A~H=(!+_FnH;nGLmNx \a`MxmxbnULJg>]r*se);ϵh3#ǹ#>LO1e$X5dMNnҤ;OouRP)tν,y7'[-)ΌNtFا@t*GClϚ^"++u3?R"MevHwpbTQØm drRӤ~'-Y:͓6511.clMж)4"EKR3` T[R}r薴VL#yg݋՘hIϚ. ,oG͘/ygi^uSi$DwFV&Q*;fg<TR_hH&w7}|_gwh#iF)E$9Ӿ! ͥ 1e5>=clrD?4RfY5*T)B6Q>l0s~ۺĭp@.ҮlC|8r 8Ի^0yVr_J< 2DD~)lH+yEąו} }d3.YSd!r6kYfȶA&j^"掑c_g  uq/,ސY9M+$C!ȴGt+MhC D@fR@͇F٤jQk4Tj@;Iw~Sȣu\6t,Ɲ+>5C>8Qn"{hnu7w:c4DGRdRʥ=vmymM亳X) fHn:O._Je/5˲ŐGɻeV0+ypB2)K+m ߬C\`0*u˺-i<㯏W=w/u?d\_tD[ݐd]mK>YǢbmf4@ |kJ;-*P.Q?b϶Fjuj=ƇUgVLBDJٿ~N`P[xP _A\^(WZ۟MJvR #*|9m7kéf`L6rF6j-m=U]@!O&V;y~ӷt N#7Z2EM|Tu,g% $zbc.n9??9n  lm-~7bN׾+|wjQѰ,,`FzkTɮD~9xh n3 ߮Ǫ /_ I%G<tJITRA6E:v:̛Fw=F Kȅ#m0a.i//n=a\n,Eí 14xY!ǖ $N^I4V_.UamGe~q5֤#0v{L5hRR-h)< '=8GW# {VdY,ICT-rDPY,@o%[eGyAh`r#OBT P}Ri~A4Iscf^*9.~:Uwx*wmLͻ9Mz^Ϧl&`S @vyϕ>1p'-OzNJ4 z,="Li]Чqw( " 򨓅[?pn?3HJZ.0J,;C.GzЃT.c rA{s?Wy)}SdlynrJDWEC'=JxǩO}EJ$Ãsd\śJRP ѼQo?O[2&'5xMB<>&1CӺJVfx2bi\lƹ:8nl%[c9k(žX>MzAVZ?<}DͱXǯXVЎgFGr@\raz(Io\] {n8mo@ּ_ndY9@O/_) %y߾HKDYy6ح?\$M'lp{RٳA{-_Ivǫ|j0-.4swT'1͈?frQ /|GqwA[]'Dg6 XQqF%\i Xy%164eฝfR2 ӻ~Nם 6 yᠰ9T@HPqIU<:}alHax|ڠ3$6> 4{Z\AJP 4n*& ɒ(~3 &^RFn [YHJA;NVşjorf?הPJWgdVr鴊sP_m ";5~9&Ey7G9oc)6:e.I7%RGjpe#iōčmn#\H,B*A?߷TUiPŻWjDJT.`!"8F+XDׯ$M/>c0(ݰ\͸)FJ>r"T΀ aP0~ERhic3ȣzΩ QQZ7(އɀQ'{Ru.Ayy'w/6#Pz"D =31U b0h{aǡĥ!*({uA#֢)5:齕~?o[3D;;1 yil%HYѴx+yAvEA Oc M8\s[ؽ o&"[ vC&^2$ fQ&gnWqc3{NlC?\l.]D÷On*&JioAN &5cpiI\0aî&b"4z7fy*h q4At嵗!Ǻx }kF^`nL+w mę1> 3N>vӥ :M J;IK>$V2RRQ2R;2õI4gV uritafk4x\J::aRk)HqG +b `r0lͧA\RJCi;"jA:[PJ-*7ay8d0iOg 0)WFޣ9M B`BNr*ccYC45ZP``Wiښ]6ԑCZ!yjg6}E)E%5Xtfa_F @#w.˳h5q퐷nLBSQ)jQG߂bٯ=ˤ( 2+yw;GnW k`ܝAdd`U۰^R_kִP` ~d9C~&YZ99itǔ)=l"r:ii\jb6.!' 3K! 6.PrPJ#t˹Sаq.mG†}e}$. 4C 3xn||2`fl͵ mj#è["ܩoo;H8< ca%6/s^-FjӴ1̹^l&(5gd3H.@껲{I_4xsZ;䷠3a#֍&ER? _!??ׯytYT#'1{Ωy QTy L@!VܤJނEqSӱ],ENws-VoGȚfuFcT.c=>Sȗ{+9HpsU;A՚5K7 m0\"H` K+Pd2In'- 2suygNN,JwuuVZr13~29i^Z\A,cMCh5َ > uXq`Q#zEqW&$4e()B"iM1E>&s[/vf-RbB{gt0{t,OKk9nbWcg&IX)re0\=c WB4Z|<GW?=pU>.cfC2I@#jnNCCzI Nk #o:/-#vvKo_ Vw2rf5y"C;_io)(%QP>^Zrοme(ِjl$MGCVV-T-zX!N8O{f] 6ke( M ?Pl[VέTG.ZS66z6o|Ǐ7_s(;ux WDj,t4wvc-z5}iEK"ǭ'-v_Ywc_U Xm[' 7ciAaI8CS(?Hl OsH׵߾MU|4⋍P~PE?.EY? H3th#5+X2p1fN/ԗ nf$W&s7Jv/搜^6x\CO-}<]RRenxiCN<8?[D/ۻ+(cjZ2K& X"0J{q] G5Z.*.t4׼٬*DŽY{CD5ޗ>ЏAV},$f7h* b)Os2Lmgq[ 1%=P/5>c9iɾ*QS-Eҍ䬿<86{Mf<ϢAHZ~iN'ҪA=󙸿_{sS|9'_yY2=&`l-Nqv&^dU59՚˄DW͢eB6nc6-@JCQŦA2~3ܛ|Vu& 0V;i-.pH b+Ydڽ<{:c=ͤ3̅2<:DqJR&\ꍺ[^,MfbٸE-'QO֎Q6cU/Ot2KAc(#T#3p[o9˖.GWH+c*,GoCQThTnI' 20@N?k܋^kߨ&IJ +\d:~ͩ늈Iagl m(?^( 956U n5*,f!j#I^u!(jʚx$P̑VwRKI}\O&ҢO a(OcZ-Npd5H_;;VsG۬릮mHЮv&(\`;wp_*#p̡RXRZ;nn7b z"C|Үe:iX"IT,nL` 5P%` &i؎(zp:uK&k|o 2I#(=얺hX&hOdzEj;,% Qk8@ٞk f;fO>jWWgZ!:"4YW} .wRXJu"]!(rhljDĥ XU.U_q@zׂt#JqPC6 Yc\:k0Fily%mx "BQx46L {cʪ=i;.z"tug#o"d??Ip(+'њZPzjSٓAM ̒ΧX/?UhD^J'A0[7$rQ+J螤 ZMRd'-0"Zp{-M3'M[j'KoFr yd1T;I + Eη4H~]򅟭fXA|5ѲCIr_$ l[9/':Sn<֟b畯̫@; űW۪>=5a{yS<;yj64[oM<# ]9f[T `_̄lv#8%)H+>_!-*D3KQ\Q=E UaQz$.qfڒc,W+([k/S"xB/]޹7D'hݲwkHf.Ig&g`qWrjW;CZa-J),_$:)7~<4"rCtI3%wjcj"[Cl_4|049%y䙵ZåJո(+Ԩ]:t폥2Eݥԝ$Ak 8ojOE#;PZ7c:^ѯLScZ٥-(N} ĶC^2Nx9oFO˫U-~}¥W7RUB[_\3|OTS*ۍ=*kAYǝpax>wJر7;/\3 Gf٤P~=fi2ԌmP|\.^x3%iР3Z (dMC7f!YQ2 X;XGqzɩghV>}N-Pn?53[VC.W ½Zٛ-耒N*XȻeўK]*, Zމ0l\6+axG)d:wdx1ꐽ`ngJy`&gotff҉ n2P|9O*$鯛'NZv)17 .(.w pW ?b=. x2p}U:o*IOE4FD[UC~iP?u_$p_}\+NY;.2h|((ȺKv۪ɞ zǫ(?$RķEw?|bJD ?t"w}6(W.a[4`)(1/w`!WM ֮ K$cѣLM +17HG>q\Hy4ő'W-Iq@"ZT;rnbkh`0[xf-U@N 1sْO>22zq\aj:VoH)xJ/>s툸 I.y$&=(8Z?E8i![ k>sXa{4;ygB ?t3fI3 &aOi>tt3^-'0Q'"wik>8g'o;渻{v2(:_y+@\3q#EY8h.a/?rxV@M 1y0/;OqDlGr٭xƑNnB.B_fJrЃr,cG讻׏~sJpۦIFh6 QU|hu~[etdHwI6.CNIA^yo~ y)_mf#Y5(v 45bDr(Ϩ+J?yr5V :QnJ>eW]= *S#Nû?>x5v: $a&4dE0"gBlUCvDŽa ?.Zy)oi=]VL1}8*74ı!SFV%+7}@"JXdÕMoҭ$<ijB\>u Lid.eu5AuQ`O )Le j+Q>?옄W/Vi=/@  N:Zlj\LH 7<{~kԃS:2<$UyZz=Ii`F 4:9Ndwg,4? ,&t*6c̝CcڠM5oYJ:FT?su߲߬fy Wtڷ]3Z qU]-?gM̩ !tw5IyUZ(..n=amjD6#ryªq/n.TQ79%S6e[z@9UDUE?Hc,'˖‰}=:tAU9]zNyټb)-pxu)L$cHWQ KU4$)RB(;|֬cwwr\ӄ=-DBS~*o!?'<J(P(Rș9A9Z !FE%N߸Ma8ZFԩCe:M\ imCk[MB;,󃉪mna'_}?.ǝjR&fg%+%nlUˏ@L_~~Ynl˼X ߨ1ghno?}yw.@[(#3v/&٬W}Ogԋ8ؕSI -^,j7ziQuή !dp)"zaU$5KI ҈nLP$]I"/d>$. )=X9"^>~RZkA~VO \Ms"؟ԒL$3f ['ݑc)2K8i;Tc'8VsT|e\omIm.gf# _siY}2kDU]>PcNTO1bR7lTeZ;l&{N!|F$Iŭh^MoI ^oQO"-ޫ`=U'4FY̙=ƅ {+4č2|hQά.D:zցpb!ucC ]'˶]l[QL*ܷ5/E搊1Im َEn`:3r@(;\RU<%Z? :5qziŞb?}fQ٨V)8/B-0>hcr4ygܰGԜ5ӹs /{~1m6tPd Yv0Zx2u} >t&]NB\1S<3BeK>jT۲vSTKn#.-Uގ{Tā-? 4݆hLǞMRR cc$5ug]"A/GGעZgIoF0\S.7lzUUn|,J?"e6IK͟I1?K* Q&rq:H87a&l#Y;aE*!u kY\{JR+yέEps^ EJ及[qumY*фJ&#f'!ƨYhjGPNRƗ:-OI)J%)UtM*:VžlW˲ubפlzko_P `CV=nN( u*Nyh#)QÕO;ݰG`lia f3N5Tp-_gy(4b-FM&*}cVgQW*2[Lee3AS಻cdՐYD|`N=O}kӟK)KǩƜ0è&aQcφ{[ y Ngiet+K!QO٦O0k}EM"߯ױ"+_*@P:ʗʜ0"_X}WYQ m@o"ͨJ9thfGk*j@мxMw/k$ǘ]CJ֚ Ǵb }C95/-vCUW0E* 'Dw]5NbDɓAPXmŧRj_fF5= r)*m&mc֠ZfO= |"/%e.JyUXo?{?3 7[ @y9Y16ې=hOlܠ&kN_<(y3,#@F1)V(Ko[% Y!UUOTbCW=&'N^hB6Y[}zQmhUwQ j G\z\j2vӡz*(IfEex ^h)CyQ-U@H8\޸ Ƽz .:Gh|z~_X3?<}0IQV Ahy*:{Cr)( T{jBm]aeP|~?Bӷ@~ ~M/a]^nԓXC4fu>*ޡ: 'K=##ZUcɺr3? H㌍Za=Mq G*c kޭ[P\dwnʕ饎ǝW䁬#]ˠ+ivv҈j:+SF]:?fHU!a^W%$NjE}[\RnCXn G)Y;Tdci񗟞~~ͮ;@>̂ZK=9K\ЭP6ԥҙq:B_^,VgY$495%C=L(w'%|ߛJ~n,ZDaN-S2³RA/JΡ4.yfK Z&ƗVUjm+OZwN)$YANbo 4I_U)A6YE&‡ۣS- P!ի]b6szq+໥SEmw6gV$2aT&.WԣBNVoV w:+ ߓSkL\)(l,0/kY CFC IN)Cp:_0o/Fw\B)ݨr5|H`j겚Y&툤_2&ͣ!,Ӆ4̲LbAr!?Sq'۝ߣV;XDƻ'Y6*K@HXE`O'o.DqTN 8#}Mý>x1r2ϖ>8ngiQ'k~c+$@N*<bO$D(UT Ux&{8InʁҘC*$09[ǡ[J J !3tzH,Qi\Gɗz)gf>lGQ*pi:yP!3qG՗=A'4(vQcn7s蓿\fAޙʘr{ep1fćt3 S9*=fStty H- K:r)F9T0\'a`k e F +LxVEOE2"Əqيp`IAL5s?v -V) [N;./=2> ,S鬶~\*ĝ0*+utٌ*bf;\|[YTY`IJH-\dy^[.y=_.6 ]MV8 ng emZH{͙9;?Ӭb&pt>jv(i"8jB!'sO16Zi` K􂙤7ŕ}lV.|@2t;(" b;&AaH ʾ %NWϟcT\jc֒P5 lPUܛ& bP>%ṛG!{ @^)(Y>(* P/Ɇ}٫޻eº^~BxMYvz%UlU9ݵ\RwZ:ѕS;(nA}~t: a!sk V(:*25f&gR߇F CB"G I/R6q<)T%OgDsk-R9HMӉTgjΜ\vxw!g/Ҁ5\#ri_R@$5N"z+,>[*qqc Ii;L0tGalxahn X H[zGF2_gġn\oԫR&\F1X>dr C iuJ[GT/1#m+~ kB-1 Ch\CDkN90,^6L_lhkEǤv)LJ/zIVkH~\7+b񶙹)rKjH>c|rQz&ovz#2vXLhi}%ÔƧ2)ۣe"u%kq5C0bW~rު5:)kHbw~).+oTNUG!|؞;WM< SQHe>o渦w?11եN< cӔKc=E/Ʈqw 7B\-;7F"j+Y;2x0 uPh5 ֎)(3O#əۇOf,C=]J<%~cՆ'Bvr X72\jmʉs]T*Ofx)[lPOo=]F HfuNo=E$_Uw}g3 ?3ì >;: %Hbm m93QZ.x)3 rh *.>χd߿U)c|Ҫs7+$&yu | V8CyŻ N-lXBjRgsyy<NLzX]˜6#7꾳os$R3Һ6qD::y JODWn4A26r)mv v(REoy#3wгafb5 #S{Hij"Bml\Q:}Y*U:E5+}> Y*ENG;5^Z7׾H: E< M>oT-~=ZGueLr"O#gQ,ໆ'X; ״ԩ&"Q1"^$֓s YM贛0:M`VH4 bPoyCB\_Cް<'\`Hz|(!Pt(|U; F*@e ϼ ~]'v;X)R.O:v3ui 5NYg[&l0*NUnr'c @ F:C-`&ע*֮0Uhs/- WŌ屮>g+.2!Iy%u2MΏkk\^"B W*Nv|_ӳS%'FGP:gj9K}!m{.5ʛbÓlg55K\έ,D}F.,4q&@v62H~?[J᱌eGFĬVs@ ;U=@5JA5$=.ZYlƪrUv\BI@Ğ姨Y K+_}!u#N'3Z-%müW\e'KS(D'"ŲCb. SQAMŧkh٥GUSKϩHhEkM$Ϸo}ߟ}/߷w8Q:$cXd/p7tojiuH& |u ļT'IL!8Z'IjKV%s|F܀ϊq* 8rVPT@ՒKtɹU`C(<- `Ҙ7ޒwG&;E)M荨fӞ<č c؋M0޾B.CY[z>yA;){!ӛp~%^oʇA޾LHЏmk?݋۞*rc>(X Az֝w^S 43{5'̀sӢt%S!kS5ŅV%//鿥r+bWv{i\!#.n4΋rzKHPmQA/K 3rkZopP*q8M9(|y<_ |hf-wf~bXJAڋiVsi?3]f S m\Фo^<=p}wI(^ ~8ϻdsF9#> H oy5DdRFg#M!U6Djg4wԁS%!ndOcU KuN!w7)Y8IC cNpww:2ACMm߄c=vqlzоalA|@|!_$/ǧ#_7e)Ojl)d6Q.mjg/%RP/嘢ҟ/1!CYo1ӻ3}B\E+Y*|ZF,hc܍Fq%FB< '&Ug5^rir ͊s^QZv>~k_3JKE}At!ǯ<}ɄQ_}xqfoǺ\RY1Vj9HRù MjO!pxH/QQnk{lZ0>ik6S;JuzG&l/ <Ç%1#z7IKȤJ`a/::mUsܰɊ'W,1\jysLp˨ؽR5Uu"XRПUl@LN%]7.I#d<ơm%0S vZ*e)Yq]`a>mX(K'gvTUMPKuuܟ';˱De(m? ]]IP\Zlv>a?݌G'" XQK/'kS 99_CeEh%-jLRYM]~XF*H =fF~nt"1=eDA}!PI*(+5NIyǮE/&=itYYh \1b A[!%t1z%lJ1rO&p'T?F6D:jP;@FW Noؐ2Mlq뿩q{)K?.h .^,iRf FZ7O~|=/;SbZ^~O8 *T$nvͳtSdYC,R lʶ|p<&5_/f#V:c^5VfZ9;x^8 4uy| 뽲bA$Cb%9+u3 t4:f:,n7D+)k1{j%U\+0X@.V 薑KuS;0~^ 6LMF/<ϗN29-9N*ԋ͙nw8*gVOkGJiUY<|ğͼR1hvs O.&{Y rӐI]\.Mu]&!@>E[y ԉ*C0&P|\\M2Aq rMt3]AJYRKI؄=$O~O =t0i<3b!UkX&hԼW^u\q/ Wbcܓ0fC|l|Vz4۶ Z&mD8Zg2XaE0 JBšu}'Mᶵw9]_G=" /HuE ܸ'2.nc~C*XT1 HUֵ--cdJ^fg21iI!`]*p&C#> ȿ?&vQ5 5nYqQ Xf(f,[FNY.3$L4ov nGQA-ZS)Ja9u/w<Ճ~`#jN%}; 6!?I eV]n.M*:Y Vhe iUe_biwNխOG.as V M o7z\O^?~xa-ՋvF4DӲ̔ bдDsF6E/-kzhΏ|RӼDc-OxH%"E"¨Q~jd? (ݰ|9Ī7%hnxQηt@X`U.:6pЕ/{$mưip3ERyGA*H//jӅ-,%);JPfܢ0&1V j\oY\oLIt9pؾjBj~JG897[y|W/l;m>}d'rҳevɼc.rf/FmbMg·= 4 QQx6{`b)Ekj Y|y+Ȇ[9g:v$MH9|0vv7DqHBknG/=S< e/=lWO$&)2DFM'W \bhV;As? .g,yEf֘jlVg{,!LlȚ]e$>kmH,/"PNr~gnA2N%7⯤]D-8n1K%OLVp> >*lmdW;<+O~Ug~JÁ2 %[0qO _ჴ`kZV]~{ ET$U.4Uh`[TCZ&?#NBO?:n#7+:n)"ۏˌyMآ(ԋ-F`8 s9R*g*">I pi$ryBɻx#hA#%oPDB s|u.??s5mdlBjÒ$ָ&`q1W)^rcM}$ Ї6qsA~;kV'.%'k:7ɹ5YWnFF>帐wC%;Y$of, "0-A!!׿-B>ݏ'sVE $e1DYmF>׼[۔wcsHyVz4X`a3E˫_z`Z(M/A¡:* r"t lU٬?>=||/bX0O\@(@>`H u sYCQQa9 rr-z`>WNIMF/ҡ( cBh4Cހ7,^.KFQlL`(?X*P6-IDya3\BU 6xa[uK'.8>(T/N_IkJFQibhM>ݦ6wuH!.2f; `K"zs4ll A%2s?PY|YE[aWUe'SK\%xtӘ],Q' *JNz+qnnސ@}ddWZ}^/v7~pI-*[5:4q)Lcn_%-WEy.%_;.2~D{\jIڛeК*!y,_ bTlQ\RZJuU "Vo81'眛bCH?ߊ4C pivҙԣ*2f+:pl*Fc8}Pw "vfT\KxXUM!kKMa|V$Z(7Js%-IKμ;wc 34JWnk D"O}tZ`mո }]DVN0^]ЄsS3dLٸCxQ,QΨzVpMǢs`jBEeӿD/Bw|1ݾu jWO.,n٥&Sε@cs>z@&)ҩ6'4OeQ)6\QJ@ FxitgL&꫟~8J@ ݵi^_pZzMTlh.R,?5:Pwcy?m̰XGcAc/"2[#o,/8>] :d*)L!\X-ImJny8}HTf5֡PNҘY:y5ho<ضoOLtd[Hi t*M,ckz N ?A3!A:a/^+iBKQLLqr3䟟>~~<}8A6LEXD/BMRVgSi~?]V|nVnې8w q+.9Қ_lɍWY HzoE.e$  B/3kn:HF,*âQTtx-) j*+~IUѼwYNFY%&kQ>t<-{?岼{t.B[Z`a=Q V6GA(ܥ<;{njiMZ9χ/>.#ڐ >) lxuiױ,'Z-L(qZMmdzlAQ1aȧ֡=l} _]VDW\_8IJg-Nj~FvF}K4fy50HUK`ǚ'/Lz8xRtJy$9xGX59RŴ"_mg4BP]G]wN5RN$ ,gj߀U5w%+u]7CLn5Ik6hD%KY`錥/['<^+L2XӘGJW1-婞zTF$-\CMIDmHYQEoaMf>VsQ= :*UND~e6>tVV:zu?pH? +9#>wlYY%2shȜ6漰m6KGtD&<;TgȚpeF#Ιվ,͡AY}uZS^QZM%ƱOwQq 9ODv${nΓFpy*$)/UL{翸`VB3[oS3i%Ozшx2%pUHԦ_=GGUB]'_/Y*i  NHr`@vqzi|z{yF{j21lDMɺ_3b1oRb^"uI*BEP \8; F=mK mjl9+2ɛ7z=}wSK>?kvj t/9d,meU浮7^ wYh8BqްZ_j+y :i֩uOqNymbŋ|;gIO'SyyrO8W[yndi T23u;BFCa!2y^OqH䋘}=fh}Q?HwمGU/ Zc.4O|Gl2O7MQG<B]@!ݨ֎j޹YXrVSAOau4Bc~^Ygx`m "7DrhO)DJeSYǰ-fDCo>\G87[4֝EJoǖR@GSXmCx_?=|||+ **y)7[ گlm;RjDuiJ\[ܦ)w`U*C^,a]݅x:}t<8քhLqqƪzfpM Es9I|hdiխpMes(6ۇLa~_6Q YD; /i"I~;ܿ_ :Џàg-K^O\ws-9K _,qf lUS;v0'{FeVF\>J ⨵twKcdMD6 6C p'\+LUI. lz{5j^dU?Hyyǖ4ig<_v4ˤdc A50g~F>lGJ^fئl>(gW-Qe7[fe٦vXмԀ!Ud!!kNbGpwC؄MNUQ=lgOi 2D0/H׎* NR B.Od;Vj@᤹cz4a{,os2p ?ssk\^Z)!oy3O-a!+wTA2_oDi9~CEUgE<'f>`j[o|?Fj%ܗq[tұm *Egw_gV6#2G5s6>eT?4hӖ5|(U)fګk[tzLa%nyUx]!8n` }QD>HGæqi \J _#\_GB'D?P J(hFZ)٫F?,JxZҒ\$[G;hŢ~9@"69x.fڀ5u7"/07ӈ/O)GGjoRn䫑^`O0'+d}ܷrƚjNN:;w *: ?ܻi5QV.n'IW'CrF,>K7Mjxu-`BN}zPe !/Өr{[S#16R @0 Ƕu+\HM|lx> >9ᮬMj0BS!N`,£.؞G#j}+^uv-mRC ]s'LteSjO@́ 7M&$ Zm:* wk&YD/`y),J]6G{dNdfηHGpk7w-w$ꕭ*@LI`K-ʭ߿J;0ZwrLs?&j -1fB-'>{tqrXm\#8Q0F-8c#@0dvHS!;WEwҁ|WRB,H@GVuyPKRYx-N܏צ Ô4q/\{!Uj|'KP7p6ºZV4ICC!Ќoh Q@J~7_Ɔo+qT>r!fPjE,*?.y)nɞՙaqbY+E& '"/*Xe[H=}[ygd۶jI 9+Y*;n!2'e]r8͂Bԋ>?3Bٯ8; '^ {B1sl)*A6NFzQ S;$ZEo²$Z>vۇG ^+xs`Lo K/]^YV(|t]vXYlCfLoo> v\sY2iNxo{ qer@|ez/bc&%WYήB43և)Wpzx%ȘQ;9OAM;4R).@f;fc\"#yTH'68Ҥ׏ĸ(y~c8*YOAxFX@XP}8|H~ b[GgAA32¯3@ѐ\2'~! ð|~r--!%h*eUOny* *y(IӺtGcs\2pSEx6UuA<~˹5aCȇ-4ԓ ,WXJ3"S<^ %iפW㱷ǡ(I-2 nKMzWc0&Zi6ҳ|NDp+Ƀ+-LK}`G=" F9~ OGrVyσ>UָG"=oyoʠ>CUbZ/n_\0&)L~w^#)τGZӌHryV E_Lh:1(n\qLjwӀ )lF< ~A dE(w!ϞH-=`8[w8BH:ؾ=d4O>ܻ;@tiZG 'M&.x])FXs2w8e5E qprJņhv/r.c907˺\wn񝞳 </Y>9tX66yʪbJ)Z#ùrO/sj6R}ޗJET/Aނ.g>2vP ,˔LI TIU~ =y@hP^yɸz~UNU[J/8.T~д=S' 5u]>6fXfoR{le? 賺csP2Zq:9G?nR-Y{2T-+hO?4ˌ5: ]zbȈÓ FmL'-ʒHpQq{q |{˗w7RQƸe8'u5ileaCP%MELdUmqM>F.>|iFzK8yIșQ NRQ swE~ ,*JNBʱ K!s=Q87(>-k($ҀsP_$C+M=G,|Nɐ|lONy-CL/~4,UG$M6|є:.ƍ)6 ԲyZj<LxT`VUf뺚(=a68WWOTY`b$HV._p.3 Wy_Y :fn[uJZ}/8F[yirɴ]|3^uT7F@QX"eTkWE:1WS3A(mjGo6{;3Keº H>֡tRq)>TP-v$8A/a8wLMQERM+[G;oR䛣9 jr=qa1ukP2T |BU?wR}`S)|-quZIҕAYPvi }m#'īKW[I>:QV)yQ`!aW.xmU `&f*u\ wX|6r8,ifa"fǹdf1:u<~yVJjBPiS%[U~hE1/ CzCAқZѢ!9!M|_5?ry'=k0N5^e)/L#wN. 9܁ّ Y^w@>g m&E}Z^:(U<*+p&ZdޓLOo{g=D+C^E s]*Ƞ|A0Ezy+74R).=4=!5U>bR k:^!On=eؓ* 09x"7ɏ#uK[h'?0׺y eZ}ȯ%)+…Q&Ti3|}8$ڷ칿pF}JE'Iv>#V.YFNfƓ%/i,9\ l}=5+*(Oy咙T499ophl0%g#Hv>w ?ۼ_須V4c_N|>[_8g\-)4+ەhcVb =IH!)!G?$[0E޹ϳdW+"NEi+W~*gMS4n?z#MCFznnb$j]{7GP| jP aJn檫[v㸩*:,UyUOy—Ag $OX X:$GYls!mEEV.,z> b$R(J4](H+ʦߒo]0 sa4c;OӣځXQnm՛4PQ1/Ϯ5RCBb-)Z5j[K )r0)@T?)ft UsIS|Yv(RTtn َ-OIڟ GPhvOcMRW)6~ZD\PsEoeˀ4K*^d9Y^52)f8*kc3@^7^Ԕ#9g;L !=!?&яJ8C1r˭N&3J:GZE>+N؎J/׾U&9]șY פ߫F24Wv:y.upLs1Rm`Z"Sd:z}20*"]ۑ)aFsHNiR7+g?RBA&{&gQ^ئ4E'BAwgynͥ\W7TZҏ`jUbV;j/"h::>!!&pjuRjΐR%8ciqT}5*^bY Rv́"4j)pxߍ+ƥ ![!;5TH< OOW*eP ]okKsf4P=@șƩn;綕K$7:<#=NC!P :.k.ς3ʥEǰbK_ORI|HX#uүҫ5dCŚfX0i3)?XкW8zm% +kW:ZLTG`-0;u}xysRzy /3ElXfZ~Q-f<Or]9ϐua:ÏNֹ &fZOg>2zpFUC?cI?+-|xtR}Wg.9+@R\Q׺7Iuhְy2RǘBn'͊M(9rjQ>CUmFowxlEۏ8۰3 xك'LB>mOU>blxkh:_`Xk'Yqֶy 5dw.J~xx6 jSa(bs Ed|h}<2ey}c==*ǹ;*i]gu*wdRf;ˤLwa0sW-OXZa *ғ6;h I?)AKg^2y, iEKͪBޓqAm_m%IRx|Ydh=9mF:%끔ha/䕚6R'hHL aXۭn"&MNKZuFDsn/#B' z:bnMnROۡћMЭ+h'L l)ڠI˰]/Z+U.r Gss-,T1rN[vcC[ILJ`x3[7JxqK5BDK.WU:\R'BAEƪt?7'LwEQ{fAjI\A):Etrx" []o`Zw꒹ڀ~ ~ђ(@Ɔ+H&t)[!6_۩wtԨy̧$Ǫ zKilNWBmk~d2c;9$oPYjiޫϛ:Jgx6;c벘t?}5lx꓀k|9~ʓغ5g,k"YS5A1zzrno%g['.Xh҈Ȁ|\X!?:;ęS` b n1JEz7Ao_v iΈ.šȻTOA Dd70*F?u}y۟P\DVjt v grE7 #hyzyuK3S>+9 Vu+/"(.mi/oE4D֑Ҟǟ9b#PHlG ߚ%Brmƴc9U S.]RpVxrp|:s)G)z*f0 Ta ڢݣ 9T8Oá}=dk/WhS%x{jOzSJ3b[&fY4LQmGuHpZҸ" |Y`4忐oIe:g784<3OѸCf*MG4WO--dղEL.6V&t&éB.,j{ˎY&r+ypZr:g"RaDvi'\&E?8[EepHtϥT4uaL퀎1Yǃ3OE)H@Yu{x Sʍ(P݂FUED$5UAuɣ3psnHǟ~:joFgADŠ7-B]_^Ӆo&Z/X2jJ`t*!=hryͯpsfP`ΆlD}jҾ4} 2ں֩4><a]ʟ&MWr~'1$F] ROА[F$} mpsVxzg7r3^ˮXIvX񣄻i-2IQH4yWKWܽ~x>6hU SVʞf𧳖SEͯf 쳁4_qK䭶_5'\(0jgB,'ߞ.[u!}0_pU[sdX[Zem^oHRq5q>[S%澑3Wڻ8bjC)eɜN=IH\ҩTF/%k> :!t/x&-X;MB,H$tniUw0q,YqU)~%e?L_QR-)$),K5L姆]a?;ʅZ$>¡ؗq&+b -.~;E WN,P0=X,`ҽ= xiF \~Thg+~yLK-IV=;Fz'5q4/Rozt_K# Ӷ:<&q&"\Uk`.;*ߓٴ:kq1LLVv_-~+yx,QٍݓebgW@U;ZtHhw y]NeYVI;&E Ty7׫AюzIq S/aI3Ú^N]d$YxrSX !ʫoKn ͕3lM 7ph"-gHVe oEFdfddUA{0TPұf\{ );;ˢήd=IpLyG"}g_B2Q+twsdWjȏ"p[-a{t(/*>E͞9')1X˜'9s?N䦈}Z ˬR#EJʦ`XVy%q7"9;RF2?Ux8 -zZV`:@|* w!rF o"/TcELr[֩4^n+\$ʀ{谩?{IP(~Ŀ}8xH4Dz2#|qSqw5s`y;O0BbM5>jO t$-jmrĨ%jIuAGbh[d2c.T].$^Pbܥ{k2tЮH 1B|CtHTlZp%D`ި^{[iɯ\ol]Km;=݋ZW}Nm[UN>[^B>MXj$൐y;y 7PAƒ, )u$:w^ W=:`jkpl0נ:%<ӟGXRV6|S0Hi`ՒIrfS*z,#'SjtjA [f p[[ud^BTt4{(C*&8s`]Ug+vP+z~FtvKqVWJfXvmPfʷ{V `PM)S)wɖ j,h_\t|ipk څBaDЙdp/ޗ!uy@zmzoo7: ŜK92vs(3#3nRƈxu۪:*9wHF X_-͸0c} U 8c׻{Z4ؕz8b^pˑwDNR;Z$UN_wKv5=jfH'J}"_6lPO̬2C*hH,af" ~] {Ɔ7a `v/Kw#Rqk/nPQP:9`Ju ruIu5OP[/ 6NLD"k$13tf1_st2CߺI?ez|Iؠ#hHgHLkvQШHE;̄i2*fMI7PY9n(4!` ԩƑ>Z E9k@K~S+a烈{Tq-PL?!6RgH|EJL"V{+rkZU%ð4SL&$iE[^:bC YMΎ[)ZuNL*:VWq%o}w?0gKf 2[64,pF8Y =1еmC {gT,=OA*ysi?V?ơnS&9d~.憽~<̽ [ƛ8lxYaUMbp%RmvT@W[5DQX; m(\fZVm.Qv) .JvRN*ym<<ꪚ#0zv'l&iQRN¬1[NZj PA7C3m_k2_ZSo9iF)pqEϟ3~P|6>FhYݩE,nD@"zxMJ'TgKXB {8?۴d0)Ge΃Zj$ ݬF'vߌbBV:˯g5QW_Q nLd`^&|w m9*uE #3 ټ=/ THҚ@/½D {iT5z>>XEpNGCI-)UJ{!ۏ?r>YcMfeH(}Id֮UD7xRS l~Bx- Q1)!Q#uK&;K`. Qjt.PdwߴSHcg ;΂ZՄ&bSޫ:m4G!uY,qgu[\ Ty>{74O\_hFt{%P\'u.HgM)N i Nqǧ?I{]6.IgIuUjn;IqtO~};"PK;T% F4ta T0Fbk qXvWtaC#{So )-KR(B -O_w5;BY(q)3X?Z ! M.]tShu:q|%'`&M>4!t3 . -?T 'K;2Iof A=INUaK rQ7>J'ف+ǐ^Io Z1S;6PUeqT{^P?=RE`ܧA H11`7ӾxvҮXmP|;/bO )Ah& UP7Nm­Ib OI~f~P&TW4eJ6Myqr{.3_PpsqZUs' oUz6][o,kX[ֺ6RR}Dܚ6[49 G=\/33P2&(|3".ӈ D]?L2;@Y*4M)Rm%[ktoJvbi_2gY MF-ɞ;9.p2ZU/mb?\HsAf>C&$,߁|݅_$RGU-093jy$s:bjT'A=TnyJ+[uN=`1:+*.BI #QCq),r{g49S)RiZNEdY9h <#@E*5J/‘wt9g|I vd)Jg9j(G=[\$ߩ08G>7M"p5)F9c6:pn\DjO`)nHOT\цi\7:^u,eA:9 >^qYeB\Mo^.2}r%x[VA`,7_hͶZ^} ̳{Yb %.OK3 Mi/HQaTb#6Q%5GBaoTȘ&6!/] uRd>0#:jjEsAKk7x̍cB v8-%s\Ą 9q۰{bY~tTzlOx6ٍ>,[ǸZ( ` TfHf晡TĒñ(7-{TۍTppo8_T+P{y2)sb"DZ=QK XLv t VzIioh)-=g?Oǿ* G>J̈ǹp19#'{y3 G)Չ6mz2B&dUYYP7\TUR3ԁ ŃFW:oLJ~j|Xq .BY B~) ߑ8c0a뻥j!ׇh3]Y(*nlmqu'HM21LS Qun_b4O>_خ_/J! n)xIxFE[ApщkXs?tmӻPF\pwp8TQB'/-I[҄+H@h;;,@M>ۨIdqp2f&ϭԍrLάl|B&INT#+]<=ƋŻXZPw8|z֚o*5&6Yqϴsmt]0R<&+3\&JPr0gVEE?R"u;n&JokxW[7ܪi'ni絋WV#:eTAjkzOxM,uDVClo( ʐ #Ce[jNYM(afP@LƏx 7>9Pl~r=H^WC$o< :V)U/a_q hpC67Wr`2_\ Jcjyhi|ƚagEvџIWl[Wװ /Eg Q0L3ĹIzueRsKU0I<|}p=]aj,Y(t%Qz3fb51l4Jܶ?=|~)Qz٠ХYD͞ f,<`=C̸(_Z2A"Hy_yayv[FR{WYΓ9D*3|ϴ{AIb#aƒA( @\(* 7mYއt=oجxGI&qy~H;RG'י,^z)dR+p=W[j1*9xmU3KŊeoCv|tU%BUUso*ZYey#b)ULvmom^VpQYzwy-,7b]V& Mts;)n0<$X]T8"49#IJHHk[kOe&!er<,Y|!)k_XrN^EddsZ}cN'`Bo_֣0Wr`İcjmH>AM!Up!$kq$VHBS2bH2ǒsrS@1 w2u1eVxE+ 6_& .euwޡ//i  -ޥ_$/J WɞI°NUwA\ЍseJPGHňArŞƘf؝s˸a!M<<~Hx7 -TnE,ګK1Iث;dO.ИY1ëo3cQ4O>M]b,w}d '뒎TYo& ~Z> 굵CRS] ZU*O-o^{u9[>Dϔȴb2L a~9;q1fw[ش&UO<71bX~O߮ /}n 8>Wj*Xs@g!>,{uI "y@;I l&0JZ5SqGkN^95,3||!0@޴ 4  vF[b͞p+)2 .r0XF;WUbEHy?cotoV%ˍ;2B P1Yv $9 |؟ƣ~AUhB?, +<N>;[JQEDnQ2x+ֱW r.b?I%`ju#WKk-ry`/`*s&=N/x7[U,mPFS]:$U>!{ {6`U]PYfd RYgNǟ/2+:3u$?@%H[>|X [<EUw +Nȉ =UGv=..H^HMXMـSqx 6}(c%MV\L#3Q@*ϕ@@6۰d?ASv44t`],዇x ;H7ɖ E!? v@{dݯMoq)Xj)Zg{gu&5Q[U} F/0$}TKW3-A,Hf1ݸs]=(! G\.Y%g@CѠ˜/C7!]3$v IQ2w$SU#׆1*hyo;IAr`iBgt!Y]Ankcf ]@L0JL@'"mi:437Xvr6{1}mC{7` h1ߠjF; 8v.Ǵ F)?~Qwꎜ>w,i VDa1.6C) *a3Z_z1XYuA&]hU}xq[Bэ *>Lfg9.>J\jt3o)FZ@$ʽzbRFgH!?oS}ۣό@u"y;\0dMvUWkC7,vo%K 7״%Զo*+&,$vIa<;9k2Lo Hә3?~Ï(5T wY+U M4ַ`yl@  -V= W9<-]!8tGԚL٤E1SM|FbR'R>+~'rfTo' DwDcwQ' v;f5uܟ"`,˼?cQ->645~z&E!V8/`i"a3Ey4vw\kz1ɃHѕT튴=]J$H,>uS3HWBB<}U:Hv[v{UOm6HưX*Nw'9ھ(aCE:ysȏ ! sP ڛԡdw=fd9,1"ΠRHИuI7޳'*dlhds:(WLrԕX=9vu&ü0 igq $+UutQX~Zl1k8 9 \L+4Wc*d%GF{7iՠcb_5\`"2,-3f_R*.U*KRb\>koV0ʮvˉ T(޴;EAӲR&jͮ`3nP_4H:5 !4Fxſ>H@!=kGWh ^W}'RɡZv!ZLn;O?}_da|r.yt%0mQP#AZb:̀4kCM0jQ8.u.Cϸ7U?drK (c6vJݏc<=kj.()a:D;E%N܄ ~ jfꜹPKׯ OٻrдPIψd^sS=_ϤQѣ6DLrMVf+kʽ NZ1LF.\ǔ_ZAJZ[{ŧ!TmKg0g$:lt$+$ÅM+oЀ~p}ǕO8!Ұpj0H@Cջ$;19LPfR~?8mTd=FSOWI>FQ_)KW0Hq{BN9HnhޠMHm^^ن3RL |mjaiۤ+hU9,0y[*)C]5'#Ǯ #od@$ D}'!1 kب,G~ y5Ֆev脄t $ox'އFdqڷ,ˑ+ ZA1Tscyʟ APZPlep@0#{KzVz*jP6JQ^Ok~Gia98k MIiuܱjs4r\cyJH‹_4*HD.AnTf^-+)u6uM. <;l=٥ȿԺ/z7k9h<ӧ滴 6uNd㎻eO{MԠi\J| ^O$dp2[]/kZ0-Ҽ)I*,d\Kf`P#DEg EeBC SDƊ&CȾ 7 7gQTjS$dG <ۜؔ5]<~L7#=rO5jlګ_nt_s.6yvoI+tV n@JEs}axjkAT%>{;Wé(0VTr;P2(<T}t+jtCغ;Kc?=?rը5h$

    IO 4*=qR*+7wP/%Ox0e.JdP[浭/x3~c% a»_BOO>3EKWIZgzF}ĊC$ϋBuv f}DZ.MQF?(q\7ltmS:r %mRXaļy:l >,ݐ{,x)K[n4."X򿲗S8tvqQ nUَ:$&dEëWZiGl0/~GRĬ}y)Eج%a 3]2*RR$g/@! (%`v{VH8Pp&jf\[sdr5Vd;csz)r'!O2imkTZU[4hv|)_"L`Z?蔱X )L9(WWr@QluH:lڢhR䚁+k b@AIAm$OR]T2Uk g16Qb/kӊN- j:]Ax[ 2}}n #'|IÅBn.Mʩ@EZN-G) jU-KfSЇޭo1jgѿ2yDQ C;.}R [wi=bHVͬoөr T ~YG*Aʣ05Yx^n>V]e׼B0>~^hQxy`:hoEzn5e!Jw3~.:,|UsR٪YEMMrs7zJ;~}`0>Mnհ+x}K-~ лW)nt^䅤RX.|MoHK*z\)Ӈw+OnKi0mJCO7t aRHJ~͢a9qH*U+*!LYlҬ~^l^UL_7j6#` 򻗫W53>kNB:E#d|@ h"{bT7Cc 3!OcV0`I[W_?,l r&،&l0W]qBb:} i*`i)ІYa9HZF tp:#xGC*.)݆Oo0h;L ;-\7K`Y̽}vr`O2yYUt[zIv&h(M&{Wt닙s-mۺs!ۋ_%cVE%Ш뿄_VrXWk9pWụ NukE7}(~q%"d8^jޔҀY5_ؾё%IBn[j%>JS4m۲݀쎡ԥE>`oVC])Jq b)ĹRWӚS ځD'g ѫ· Ah`@r x@v84ך+}L;i:%4sdKg}f-J5̂xupUÎ 7Øe'/|?W? %Ֆ+D\Avɻj&64e܍[rn")mfɠi-g8Ht?iUH emDAJf$p6m*6b@ϨE^yrlEnz ٿ#2{CndbK  2C!a.1ΎU }6l>獄Y#=BI)ꄦj3-OyU\B_yڦؓxAl⸳ejfȱ9FJ^ݻOp%?}ZOXBrRg#>ShQR12,@t`uk' 䬄ˉ]N(b4Oj>ʇte\t2r}NDwoTN0v9eZ)>v0k(}AypW>~r <|>}!sfN/bǩH]1H(y,e>g h *m6ȨGI'i v[mХcVeg+Qn ]TǕ0]bG"WN;+_>t<) P/I.4;Cu_kLݠ]:+CJ fUbqvˇ58u"S. ~.]ot2X!߂BIf{~YAY[L҇](U' 2UEJLRfcv_>]n<%1:BFiB'iz`-4v1d Vp^GKz`2zY=4FpTe*=yKIF`L-Hc`XwGaSI3Ea#D jR!2DeŊ WfV@|)(J@πО1Gwt ԑ4l:ןp QݵLd7RQ& ! ф{ucuPeȐ2$/HÚ1̨RIhno~j^mF\7 7 Etppg([Wmo+{Iُ?-A̷yZ'MvI=9zd%L`40ϜGQ9;#$0%O/Cw/@L˵9G2mΑ<|]ﺕ J:`?-4IohJcn m8K)5eβ[Ձ:lR5CU_z^v'fi]fX$Aϰr+aT+z|*HLji kbث^$6p d Gn-a8p 竉.@dt ;4Uzlֻ/go5ƮkP~ǒcs¾A2]993,$F[&-rѦ{'0I`fwOF4.@'DO\w뎓JI=%5F^E>z3ے(Ҽrz;WĹOï * )GO]~ FFMP CJ$/zca!&RU\n6CJf֓ˣh>FH*u_IZr" ]~ej}oy QS#}z+H(XkR=JqEᵠ$ e/ gaYw8vP>JW WOgEa7"W\1?,8+L|_H L{P:wr_!6 I\9Pa(v{ܠHYWxU;*̓U5'E/U> }s]3}5 ؅{؞?Lg%GA١(/A' zlPzPuC9gf}LMACj)~~w?,%sòR>K˩n!JUJE*2`дbO nq.Z4H,bO"zdTf> Y(e vvk7󣗦%~2IJ\t(>|# ] )nn;6^5pT15UZ3R/ \zM:TZtcz})\S5EdT2J'(N? t,L <&bRD;/EuMUE 3ȷJnlϿn;V>HQݧRE#͒opOqZ;A^յ>c> xg$";] ME܀P3OT.VjP40 R$-3+MC`bœbl*סiQR}`Al-1nGu50ȏk[c䊾8>Z߮r6 p.oգS "wnnE-PR  !JvU+>gU+(U+V-UvCRdil` t±4E2>r@FӦ,t?|G4/fpӱS[]m {̉3}xT!_YpgG32ӘhBö-)׋ n2$qHcJnɼtu5W r8ĊHq4q3rX.FR2>7&z2:R<`_V 3X$Z1WIDImjz?o[5ZzN'XB~D=֩vk Jw}]phELJJNےfB(CCxLٚ!'m@Bw2YK{b! ڒغz@T j`0w S/ja^j:؄Ԭ:osQd=Z]RRrajԭ(9Eyv啰%z?pbp,/gĽg^ĊYgZqp])Q@Der/H\ NX1A+ԊׂAԑan?L:0;gZ17Cr!gQI/s}oJ?̌.v)(#ɦ:i/I\WcLVbݥq>U%dC>g`IbR%$Mc'(H@H\A8I<7AZ]"X%.H g2Z?hj")[(>?>Å+>֑7F~KvR҂UՠR$@J\mOUIGG&[RpwԪnP=;ǯL^joͅOȋU9eA8Rڹhn$VrZ{_aI_FƗ>SZ崠4DTj'R8fdTyQmn$CX'Q:PU}{;=M-9Zg5p}, V'RոgM 4vtRAwÜz.οN}r3ڳZL^YB^.MlG>'x+iJQBK.\IxO?6Km-ZR5]%Aq@R[+Mg2!$^ 0/RZ[]V: ,9_g,,,詨VckfWa|-1pnw5&I:GεFBA?ȷZ諝؄x3j eIdV7՞[n-77 ȢQq9X 3b;-ޝFgשy=[?}WZ'eJ;ƥUuUԔ؞$?>=IQ''[[g/k'%hfvK^-)BpBׄ*2}_ >D ϳ9-$'QVt(MP/~+Pe k4" 1O&|\7L>U}Co؇5\+F q"M'*rN<0^/n0KʫC.O5NN}Cab6nyL-#KEt$AO:eυ (*~+@?38:oCQU#tlSd?XodnJ7>)|9X@Qr D!UpC|3yCautl e< m3@oԆW8umIDL hn~1:RY*&-5YeZ.i^Ɉ`cdC, tr¸"vMIn3u36=ž ZZ҇-o[ z[ 14P#'D(B/>1zgTv>'uQU'2!~ߐZzH/1BZ\w2aւWM Ğ$U{UCo8oD筏 :v3:cj1a8 2<}݉a=2 g^oGȺ R9 }9$H黠hI6J !W| \vyU^ *019i(^~إ^Pw@!uC/Po6_әo>U*Ú# xe*]LN fbAtge5n'31w&7g䏧I2f2! wLo<OG9HQݿͪXWM'3g}2hQ7 Es9hRKT9_-#|'D"PN~+&\ \6 Q*q-ۏq>`֨}q`Vk !Ԡ̽4u@i\H'HFF>kQg07R'oI;3TiYUURj-E -leCSΙXT8bH)f@gmhL*n1J-T ˝ 5 S(N1]&J bn 7<4#1.яv4FSxE0\J${YsDfD !;:IaEzf|__’CkH!,p@QXeKD54lpS 1%j7kc*(sv'cBV_8`*̆*N!ՒmK'1H80O}m\o WOSezPgu09o f|S&vY|w@3#+gՈ)~ɺ{)i K˟lFԽ` BIohMYԿeQJK{qG=gRR %6M)+}E76phDڔer: mnBDr.s s<,RJKvPE,sYS*rm"(KY|E4ۭENtDHH0Ji0J;s鷫ȅq;.=!L{M _s§mG`6_QnCH;/p8Q -˧"hn(7ɍ&[܀N~cW 3T Z=;e4XBRt;7}^&<5^]\3 ~Žj/ ܤ+*r/"רK`:xj[5+ݒ/3UM * Bq H(zQzW@qk7r*ְs^Ƞf+RF=Z@#BfwB UN6K}0Dݭژa^ gK ! 8?JT~iot] +SY-Av j,"MY)Q0>T$v ΪաE|];Y)uizUU>@0kywZ͍se7b ~3I>m.:oKHp'˷?<(Wk >r 1 ֱR11F%a1B#?Xye|$obǠR SQt43՝3in-rfr8Sa#O~F^{-ToC>B"Y#t.҇Y:bj"IX!ʜ~(eY;$#`ޖX̅5T7/*#MR %_6A7 h!/Uvx* nؑ|#__ g֊i{fYEuU[>?ϰ x@?|: X]_)y#Un2E-O/ #e(t'ξPf>F+n.6@`1l KlnG|DN+D)H.W.e=ʠSC颩IĜ4F`KWKw订=o`Vx>CZd:bafϯwcZ`>]0%ӹ 9 BRV2}.[ 3dk~][%$%?r콑o=/`ǾXTj̍K9Ww0fI`+ۋ&VzĔC<LJaA|e1c&Y6{`.q77*J>}xX짿?[TcHs@[V4U ،(͚kaCͪV'%RIu0hby ؏ ms .23X 5 X0xKJ(]7^cXREiT4f&%^ʔyęLU`&;8k҂y 3|B 59 [u:HjFX3ɮIŊ'wk->SAJ+;jQE 4oIFG%+m{i~|Q&SZqj@4&t_/$6 3^W>t:a[B-D&Ph]Tށ]Xu`Mhv 6?J{+/Nj #&GOآ%h+ >x3,X ~=;$0MJ#B?ۆS_=~_%.XƠ/|{LK/e3ܲiET *GTg|d@ٓVl+yo<Jx E@zMN+XXL >Wh9qCw਺9֛EG>P*@NhϺ.tv1.pͼMutTQ;m˘οtj%ۤpKB* ڙ8x'{ycav%nq.<0ALۊ\χx62m_""ߙΐ",x1yMJuJv _3W, ϗ|OoS[pԼ]Ł/-Z n78G!b!#C[a& YwIa5`>(4kv *PiڦY}UC͠v.{Fł8XHf]TO7n(B+c֩QG{ڼw{|,yWH?U[5vﳅ}#TO=gy("zA2R{J^i6ˬ* B\*Mʠ[Os5j߸HB7%Yu&|uEAGe1sJ:5ކ)nŚ (,W.--X-(=D0uSMWW2JM) CO>i) y3g^+4jM^lӗ<ߎ32]NyՋ%fCi^d@PK$l[t̠O? @e),P{M[\6'۠F1R!lѨ#% ނ2w5)o*ϗJG}5l6j* yxaM@0}\,zAP*Xrǧt8"|?HR^rKGo߽ ʋŨe^ߥZcr<|`g>W4љ+UP8W#r@#fģÎ@,3-JA .S \i*pu ?ST}νمNїIA&FfLV dCeh99E5)Eڲ6IIFٵrnǒI3M̀i8#*TЕM+=KR ҵ^.eN3'9F&|y|/ȯFVtI[v(ȩ́Wi,eYf2E1~8+5A2VcGU'4MB࠲Am_.q-Mo_uT'ݬCQPZt.I/wjy]O-a[5mP@5w uCԕi_Ŕ3*ZP&γ\ɨ<T%"KQ]BQbjNK,j8as2=z7*_?;\YЮ5 'MQu5׃}vsF#r#NN-3Jޠߗ"!*7D{:2);`N,xC+tc2C,uq%gp,DXwTU34{xR4q8N]: =hT0e1h (:g/vuk|)uiL"25U=p)4em3k{~,8!I'&uw}֥ghn`46pCll#RZD$Bǧ|xY3H됾͛] I 7 n o7wyGfTHWO-;M 7v̺M*an,%o9R".Cs9am֐;{ݓ7+m@5aBIXIdLP/a#45Ñ8r $6^,Cİ-a+ W#a'[5hjOeW}ᗵp3qKQ<YY6W%#VA >* /mXO; ۶qpϿHm&jyXT6wݓO YꌙN%v -\Sc(ڢm\d9$Ba @8 sZwLTGy4n9 e@jߍ.P鋤ѡOyrBn=opĀO#Lҍ >j5(/4QG%{YύçGL=BZ~+':~+: Ezjn7Mz}U=/~SRےѺ#6q.q>Dj)n?l{զ=Kp]r@!U\42z7.I!}q/S\oYfnWV́KBnĒVe;jױBζY⠋?;rx5k?o4hRyKa&̠)GO.DvĭRrIpЪx XLb]5JqH%2[iq :KX/┋G,'9tFT)LŁ ?Ӛ23ԂihO;o-0T Q:Y?*[1#x!8zK=σf̱p2*j\nރ$+:jROHD"tIjMo1gŖOXB6Urq-IJT6LIĠ)XD;dËO6CnԜm 煿 :ʏņDI"t dJIX. xpN^hAf{2/_n/M1#P-/-4FƓc ww_vh^OءW}ã ni@T7Z ׹shXr>eŕ? qʑRhߢTH Mɔ<r+EЩ&EF9,n왋tJP;{#κSEKp4'ArTq*eW;(Ǡw Xͨ }o =˷]]uZl^u!kf:]Y#*J.ho/bl a: z)TU"^7$w$-RHǽ{x>RJK_C:IH t:I.|2ېm>RVr{s 8uN3`rPTEacN0TH, C(d!MFATÇqmu.w_t}b*tZ;W6ΪND1ݹ<NjtW;'cW#iEZ3Hɨ3Eyp]X:|5t(SX?kUJpIÖ̑ۻ<`Edަ}QY``1AQ0z_8m.$zR2k]{1e 8nKX3zbgPN#!%\gbщgUfW՟8K)R'H(>߽uRԌR*s^w8-?f֫'i8 \9=u.:#TQvl$^o+IbuD؝6pKXޚ'_\#;i!"@RN_~᛿<^*C(Hp=/лIo9wtˣzt%5a\qdSUZ%"s^ހwmu sV.n#FcofxyVk`&D2N9|BDr2yV(w=aw#,as$KN% [ 9NȵeH&N'SۆuLML1P9"Ba4^\U~1=P7J$XvDy&5 i/U] ¹F ?Z<(g$qH%o'ȫbw %; ,!"& B̩H,uBZ`uuiHt^JJyvXJRsdT'۹r1'ZӥtL5y0ĈgJ@0킆r^N 3: |bV2q|c@?Kv\MquD}wP*Y⎴zE˝KMbI/dtTO$$U3Ƀnft!XČVhSlӻUAs<2%87u'_\$6 NEXLiQGvoZȖ]6w/BV@+LMM IY{d;\0 &e{طt1LGUQp+8sm 0j;Nr}5AR}ĪףCl&nR1#^M'å{j.Gr|PoCQ!JaHN^hQo+Wd~< 5 2kCK"#8;-:d׸ϝ#3]bb_x.V[L<mc)(иm=ww SlBIJhg?Z{>L^Q05v>8.= ʝ":()Jia;`3l$hl/6G_y?s6h)s}AGRCk߲?]lPD$HUo?'9 1r7e嫪(l\.CalT&; u?X7 qֳDV@pri_k`񻧏nO+=Hl>U'GHGKʭJw ?Kۃ6IE |J/tuI ?GiNi:6v(pe i_4-Q}}~v|ɕnfI_b*s("EjWW\ANPξP i>QZr{=զV p&oG=)aҩ/n-rj dc.nȉ?Hj}In~ÿ Xby ~q cS> `- G.!'_( 1ڋt+ǂhRa^( \wz1wzAR oH9ѕܿg{Z?~CΛ|p6\V6s>rş ;c_0}sbKʧ+DQeG9duyD P2*Tվ9dXB]'H&(>xbHLɦ$q[@Z`ّ7х^.[<(̈$ |\A(& Iģ *Iv;4Gj&l=ëz]RV|~כQU!3Mޓ-Q*>)G:rSfUJ)j)FJ[D8K} Y/L|cbG㨩7M*عeJ8>%21%!mayEZ3 'N~K <#.kIm`"r9M+}fjotԁ9Г.Ԥ3Imx΂|hץv %]CJu )ArTET.[>"&!9ca(B䰼:wm=w #CdRD;[A[glg/jK ~,MT% T3XWP'i_{x!ʌqMiK$YkDFOo|dY[RMLiPs:䜧8\5K@\qA$pJrROC _D2*GTb^xYDn\N;؎-#Nb,.4~hvUvzZl}7yJ͊orr  sԌA=j+'6踆)T!i-2 yQ; &"r#Ȇ"hR- uG"xsH{?>n)xl]9O91!G[Pl`6tdȗ?jbc] ;{޹K6菚6)}zx ѝt=PTdieAKq*)x ,,;%,4l/U]an>3÷߽_ Q:;F?{Sh'OÔMNؤZ_z: Jj ${d?S8Z(` ?E@O0>ɳ:>$Ъ}ey -EpijE#瑯3%2[ l[ѡ 7UҤ'%-iߓ:Nå ,=7riڶv-j74YёTBϴY3Ka[.*BC )~BzILR0%Qy7/ ۾ `0#J]AObcWf𙎥}Fz߮Xz^VadpmQao?Pe>`L+:U}~Ug}jBr*z0',Yi+ ͑wmat](00Qe|ArS(Yՠ kԚ:Z/x)@Č)ߝ0vd>ꊕMRgXǢ"wo㐨!<Uހ\"O3Eb'i}|f~쇀ŹJPLCdYlҺB.]<t:Nr ;du?ע0aB2j-*] t׾)kӴ.'+"2╡UgwF*9)\meMC#MqHW$PDmȏaяǻZ1f[)U'71~uXI/S˓J&*]Uh2+#7 $7QNIe0l3*Z;_U5zub 'ģFio hTM`Xt-gX2pdtVf8g8Q)QoTVA,%3C;poM71CW>[mk, Sk[GT *q{?}Xr fd،@8;v^k|[8 jSLz 0.kulWZ2'WX=@\S~ò;|Z٪~ˠ`ŘBĩ@IcdQBhIv_ͷ3hqih+~Y o=FrlU'Yd>Mj1.< M If1/E- ]c֒.K{t}l(=c_bt`lึk\\u~ Gյ_ڹ.c]QVDT(S,\OΛ (U]ZTk 4?&iQ()y' KEi|zÓ\$"6ƒXːV\Jv­C0[~ '+r;lߩ9'=tujW]YJ;F4 M(D0%g.=;i9%? ?]yu6U^ WE?{iv4dv]8kjGjFq-xبH? Q:e`0M8@4xY!|ՏІO_ n+#6] wlza=G:|8;YWvT΁֎-8%ߔ&7ǖT7I*rx.nX-maZk$^ppFB.iJVՓ 00ݹmιJ{|>|=ўUrԵm-*U/|'s.Z$ܻN\tyߎVH,.˶ 95,m<u?Ij)u[ȿà,Wy=LN#KmNRMj.gO q'KrmACS,ZL.iW;C`_7-ˠu2O[2mt54I\Y{Z9,\μ ;&QBAA[-EP"MUP/H`~[*m)c&sK+'Ys[QI0s\MC2-cD{uskGb_ˢ꽑+Ngkx0MG;4J :hfxC#;U;+sjֶQg+Er|okC{)2丼aضz._"EPr٥7@XGesb6 N}&6VEtkf,#0]~]v%񯠉>xr"WnO|vvj@r]ܥf[!`d򝹐4MҎ&PvemHw#J84BCF>ۇ߽v4ogVj"j!0lyi>+ՓMd'R=9INY\et͕ш6:y>_V^m|ҥ\VVը@UI9$kRtjB΃Yqڙ|< ~ yZ uIM+rxƂCaGrm 9-f2WA;IsO`Fw͏1lLXPE<TvPXrW3vn\b؃ 1t5u4̉OV 01k{-7]-+;"9%ᄝȌي0޽QQʲw]9^@ufzblFV}Ρ%TUjcs˯7i0TGRbIu=7_;eUQuzYxzCv-RgI;٪$҃s]LYܦ"Y^GRVg0+^&HՋS_QٹڐQ*actFl,cW{Y2sMĬ/v[ԩu 6U~}n1>-͗ *Vp<s6NW0QAk]9}ů_V'_X{A맢V*n&>CP f4 E^HQ$N NjY$w"DAfV,?xQ^j*g"w\Bh]Ev>wS3`bśþWchhV+drIFGHrjV% C+. o_bmx{%|;!K9(,I0z9M y3ϗus&pIp]1/a854{eUvʎLNH|; Ո7^X%x&_ʘH K (.ϵb/NRr!DjJ lBRUz+JnOn!6jɕ=659ۺ)tewK~ #ȾM/!pޤ3bhŒ 彵| |7L,|INBw) 0R Ny1/iƴn&do_ӭ##_}t:5B8믽`'8RZu#Y9<͌y$`cLЃfwUԦ֥.oĈP6#$s=SSVվ\:7SjPQ3,o.,@@S:,K8e7JCI칆d|.{-bg˺Lކc[F"EZjhnd&טn2QX ^e9Fm*!e![\ uI e\䐯a)O)/(/O}U#KrKY_BL*k~#s)5BϾ&ñwͯJ_=<}|ZUtɛPh&w$>*)c3 onPxx/O~/}OHjBZ+ͤ938wx0Vwu@ZwAz=ᄣ@V-?,zqêMeM8@U]i0:v6x%:gTJs^խ\v815H{%/8( 1Q$/'>pRBc1ýRry: @݁% M@FR#bjyʵs94lgyTSBd_c;/ʰqUDA:I .\oTjb7*ȍYJe@cFLʢ!!>Rw?\QD̃jλ9ZdU |0r 4wQ8^J{0I0z@!foG%`H/]"t UU~fNBwNMrV]964lwo}iY®+}0X(|rS8 -6q(#YYֱ;ɀf R65`r i+i2W~f?Jn띧P+TÅQՓd/Dm!>Y|'ߧ\t᫲ғ5AĠZ¯O7n"{Ł/ђm4祶 o<[_-p!nt{ҺyZ^"ՍZbAE$PUcJJe!]/d%~cH`_bwCۦEJf۽. NnY3Z%C%WJS. Qٔu&,xPm7q1(:nH_c嚏=2[&Qy (Ptq㻧LMSTQ_ɒyUǁZqԢ,ґ_=~.Xu/mVB?)$OJ`l (lY9ˆ=tFy\H a6HfO+A 6FZL'Uch}^^>G\Y\"ZOPcA )ICM >jHiժ8m'DIM 6A`x ׏<[b| Dڱ\mTK5U~8Wlm,D"@gT9JgZqyD;H"PQTUd/Ӫ3VJZ_'+8{{K2աBH_ '!ӫz`cJZGcPkH/n- sԛonH,wg`O{<[u5~tsdh!Oexs)#%łKJ] rքdfk)'LqTeo¥CEqO637aWقM|~n/:6RJ1#ķ]FmʍBG fr8W1oC6a!AeFLE)k(ʿ(72$0BPN7N*,U֪ V6O?~LOp"u9Lp疎@,4@_mjM;$*T'TzR):^3Ռ*3>İ,@ e3e}ÿccԼ4xޖgHuNRyiVTGQI9*p;wa0/œm.vu_{GnkDĘG˟() ńXe:˅MׇU`|ql{;3NbF9[yl#f;oa)U&K(<rRB*$Q>u:u3ٍ) iAFQ(8T=/|Z@_5/uxj'ȃ_5s^FpZ; JHݑ3U?9 e$l=bJWZ!ꗦڀWN+C-LzH쀫E]WM0)\ Z@^;Hw6MGL.ߌ ~XqĮQ0& ȍ._a8oTUj&o(0{J;g? VU, d<'!~J5U)VYN\5pfc$@v wެCH\Wcz{5@)ۮ1KƢWzamyM[_=I~xm tXfnKV\9)1f/UCj(SjxzݢxTk`Cl9VZ } uog,h%y$H! 9s"aJ\Wt;Q6\@FTLVq2a1,٩Fvŕ{W>jrn6%h͂-d \*}CjfcKϟ4Mp,X$F<ҒfKQƘ(1HVD9IDyH*E'MyzYu}ḚZa*e,^B %f=++ʶV5pAP{QA!x頭ݐ. SAv45DE%GHαx}UL:u_a$ꬨ{[L:=BEc!_2TrDO/,2!4>*Wa hZ̃ow-L8.z8<*b%({p/*߶ut͎zP3j:2X1`3f/ekpfCd=њvu?eX'>v*S.0zy}A(M2^KeN~W9{ot?31;l؈G@9Q84,=;1xQ̠ } v3$n u/?3nRZbls8mZGP7Ǽ 2}P=pxhOڿ)e W9)qm8ơ(9f؈B nۣv3t]IJԮN7mmυytFЇh`=AzLjlp1!- 4j.(1Uh qF4rynIEc?R6c}W6JKYJ H<>OS;@ұlHZJyc;诮荡nc%PG>S KV]tu=TTie7F }% HhNF 3~]+n]DɥPƲK;j&0צ#$~CfsozA[:iIh9$9hM )qa`';5:xu _'魃E*)TQd!Nrlj1+ձW`+_Ԏ|#yMj@K)FA+e?<3$+FRCG:@K cVW 3",$;׆-z{bNקw(AR&Cȓ`6c K`i\Nˇ?=_?|x$t]VH?+"OoݓjJJtl˃?H!W_:C*,+ SPVS6:1] j.bw<%|3{PnV!x¤:$n'I[d[w 7o7 :\l Zabx%\ BtƊOs\ { ,x.9`_?=.1m(,zU[F3kVYHvQHoR8Sc|龀mK#&ZM ۮ>}8%x',%K~H0d1~#[J 8a_(M,b0Gbff,Pw3\k_6o2J) Vۇ?3XBL_ppx`Ac~#nRAMGPW;6uYq"S;bVg|y Wg*E.Y,~3! Ue2B'S]ROȧ瑂]x+/-f#2[7ѳ2ߝt uHY3 .XȼI}/>.hVR;gB1e:d@`'4YE,u÷lB~Q"Ԗ;ᄄqЌO/xnWgtaa 0 LRd,n@DDU BĒ: p_% Ygax̘;X?X^XSI<^RabA8=L4}n:D82*jt &v/=n-B T[ϣEtf6IJN.$l*YIdn,v,Y75]ԑL8RcK*X8O . Mٝ1 YEC AId *DW`3>+Ȭ4!D؏AtР7NO5c4} /9Rtduٳӌ.ZHHS4b:{D]VGn1_En%Ska%.4ٴn5I|hڮZƪMzVfakjt:.k1Kck*1@V꼲*/w1c~87*FYetp@jyb6;$m >yږ0SlhtF.?劸ԅ`v0rE"*륲j TWC_}+Mbi֐=pytNJx16U.:H "[m;NS#Yu+`^{)xBAqϐםeO~IA(5!]VRB8!JGTyHQ-ͪqTIMRO+)@~9YbjSᆿOBI d~-,(EQmK棜-AA}\qhp[Ɛ>4Z|urg*Y_+{krpB`"HgLA\Y&tb=XPJgef |KܩK&Q/p%|o+w]>"8wlc-žJHf*z ρ: Qs9 |NZ #I{c/Z}IELc<{פe($'ݩ, ??|g*{kR}[l"H9ؖrgD+g]L3ݠ1$ /aa.(qE9Dgv:%Ksp/p,fORKK1r`/c^PxA۽᯵ G+UN)FuN׋8.7 e ҳT,L?0 U9IW\,T BPΰiy8Yv+\ǚL%mo~yF @:Hewds3FQr4]åf mVj]$!IZm\c/2jE ,Ju%ͪĹF 9`3F{Uʥ+V`=fPNRz#i@Oj;Jr ̓ۺ~r1حnn ]W?: Zj( ggE<_]3f@'&6tx9iA(ARY/׵lyPmb+jH I/ﰞ ӳ$T;`._[ฅ,KRȑ}C:{֪C 6`U"\7 (qoDN=ū`Y!!/%یyI+[uBuSMA[x$W sB\T?+[2t!1uB"dYE aks 绣=άg%qx.@ljٵ& Iw4N{INH"jB͓ߏ,gIQ|^Vxr e.V`̭$Zm %v鮪#c#vt/'s,'jw kFd԰*ϐ}-(_Mhx"5*Qr5+4.oM:K_oю1Nr!acj]8"lԶ0CIn "B1禾nUO}}=hsil-QZ^zvHD] +fl~Rk!"mJuoz }`6%(>):´٢2 Eؑ]X'=6-]GěPe`{(G/7Z Ӛ:?eIo]W3I_ں1 rnbS:MIOtF^a@[_o: F.[߂mUX8@J\WBw3 be n[-^0(8rU/EmJ`0@Ւy/|m[0QR_7aMOҪݩEF˫AkUasyK%q%~{ldn|=AuXt KYkk:fW[yhF=ܲµDdR0K]f^k(hK&ݠ%:vE(SV-x|q!I,$աd^N3^T)e])IzV.M}K&ѢQX sS`hȲi(-Q#D{\,FCYnrjR:r:}!mZ# ZvǢXg+yr#PW'5v}|.M sO]ۣ ?;E[OԴU&;.[석~xaK? 'hUg(/RdMrNcժըc;ʱM*ʯt݈WAzWEHٵ@sr%epR'yB_&1pGDu$}Ro)y 3R9'|2X7K+a ]&X xuqWؐWn.; ێS@0VBe G%I A|途0n CCuӌU"9V+`,@|9º9)tT"]4DyaRHnUEFvTh M<ga w~Y7qH 'ү_Juҋ. HdQ61uy^' NKwP b<L'd2zuA:ܠ&E"NAp@Xv0B(NTW|/f$A~lwKbǸ8~fYxb Ɨ_%IUի'^ΑԴl1*f"eiKc$W&9ˉnoȸ՜5dbH3Ij'@ڇK4Up7^B,+MTwA:H~J;̛&!XnkٜtͷrZBܜ%t6XѠq\q7W%tZݿQS2\Wfxo@).*ǂ>M/ڑ! QT. >U?ʣ;G|̓|/-%c`GlSO C%.oyqDEa x~2㼗r6 t0Qwlђoio!=I:jRSL8|?]@Tz*M |y{ӏOVRn륢BCLuLS | C bD.JB`tNO/ԺbY+%ĘwN>0 1-YFH1D yn/'+F0UЄwiF9k|&vtxt==aFg*R }aeʁMaq$w泫঑CQׅ61jR@Bji|n`yR TaFJ?QLvwZ `VNܔEo{Hy$<"Qm / #u[" +MREGα\y!*&#r-``j$oN e2-W/}U&@GqAm/*E+_T嗺 _zw?=|1ǚ)&u֞abM')t'¾FMVaYܫǔ ;߳QVN> 瀾]_Z~4gۻfU / H7e )X֘5gQcGخߕEiRr,Xn%[NyQ06 {X{TWxf<%'O=$EٷWUkIg Rj&)}%:R*}R Ծb/"d*yV.QhL ys0kUwV]Z雃 |082X!t/Ô/0Nw QtL-ׅ5gL* GsC3 WS53 \T r(y=Aj u9";uv,[?65ctF!5me&vQ]5V!уꙇZmwjWV|(_g)kzx.vTgغKe MJ'J}T;23lJ]Saڢt>a#;wͼDNFQh)ˀ>n6U+׍o.ҘJ!3C!6^cL$0:$I>DDAnl3aJ4etfVT,yH`Iz6;/;}# @bs/G9" J ;feTuua!9P)u]m(&7]砲BVEO! 0t RL~ /~N:T@Z/rlOcE J ԜOFI{g {o7A2~ Ӊ-U pT]Byz( C2BE'ql ]~-rzWC5Fƌ 婅T98TSnˊaZ-;0=2tcV I5oTBEGuFGpH-ݾƦ\|}|F< G+щ8FI(Kɔu/;F" Җ?Pc5CU5V:Κa+W`t7=`c Á8A="&+_w[zFۏOZQ,9tP]2QaBW} j1V6nR6Q<>~rZ3ttV`i1 lɯ"l(;j&o.])8}QQ%1]Yl}ju;PB6'*f6ʪ2hs?zΓ19DŽKbܒg"҇DL}u,5+bCFp,eec2/=!6Cv6v28ͫmZZYUnS4rRB0bh3(j+*}AB2/M–O RZD]l?U_w̰YA.F m/Ey&7?oL:@IlBb Q뇏 iXf6HqTI,VxZ<ìzKEHbbhϳ'"W%W9l|7o_UM)Xu~1SХc Y"b~l]]Ҍ\:3G*+ > jpA`ΛjYKӁvAƠX^eŰlM j|z vj!y%7/.Tv|8YÌpAQ:#h qʶQXYX7ϵdDzM"\n<5$fR";#w*ܷK'5@vvy &wUi@i?WJwqd@b1ŀ~??~;w UgΉWLjG3^->gnw#gR`w~Wȭ 77}Mg(rF@򱑎V`7&uV0N7Hqs蘙!FLQʁU1^QK(rB#g$>̠8}(41Mӷ|"Z2D"|ί!1ÕBB/K)ArxҋR -&ȳyPXĬ TLz&5yom<}''B&Ѱ^ $Xe}^O`Iӳ㝈N_bN_,xnpB Rj+Y(S??qI =4O9ql ,fû;ȩT*^J0U$MGqr$딩QÝ.eYv]Ӏ11SL (/(UJO46Ox{b<94J#OZ_,>/ <_01#^7Qn~$Rt਎DnКiKev;%td{6u7*@9 #yW5gP4Ug>RMscKFa(1%I]"GQoM7m+Fxn_U}E 5I YjcIxţe3K5_3HnW rTRc8@lldRY2b fz#5;^2 Fz:bRd1QÒ4Ч\49J)Oq2`:tV}Ĕ~a\N"N5*%ĵQ$5#֔7x-:hM̡6X .M ⡬3wNc7taKrթ!^y*U˥uj]些ґ|4КA-heKQ;*XҼ46\xpp\fP%h.ޫ:&BSzUx$)-67}`Zo~ڃy^"]Knzg^0EwRHČ% ˾[1Sp(jg!a.4mcdHd?=-`}: ( uЌL NAcTY0LΚKOL7l6kx ݬrus,/L#B1ypJ-xWaƋ3 1ĄQFw6/003֌#AjVpsL&doH+}% %M 68oNC*k,>~ԒLl_i륧.v:E,ti]"R5 qDtgw-ƿղ+,+uO\jTH+)iRqTa6re佯ӍĦ}/JҤR! ]6ify:k݆R!CqvW0E)'V-*t^'G{l$m5TSS9>8%4ޞ~lARb,G3E ^)ӭPK3weWw~z$yEgi0>>et\iYkZmO~)tnŶ䉚y]()zbRQp!爙YV+nj]h}utRcDOm d` q"~! HC`8E=c_S%Uw-w^>aR?4[u;bm-]ZT1F^Ї/ܩ]V4gŰ/TW3F㦩(b( Ta 5Xܵ23XBM*<݅Gf^*Ahv}&@JXaw3mg*:xVmi\-(g!vcNJ]]bwMxoq{f_Ԁ44|C Ųh䅃bZZ~ 7[З/kJ|8C&R!|z<kܗQ(ͬ%%O-H-lzYX+F{eM7FigTTmj ӝ-)Vr9(Lr2!EI.蕗<ǦU5|A'jm סZ+KVeջ)f†~2;s5[L2ݮqdΊ0]޾+:qF]] еn3cMT$بI/]6ak<&jy!@& j*i6ŽZ3,4BL-|I1q`Th|j"{Vx F*4ku<`L0!}܇u `<7Lfk֨ lZT} ꍅIKo. Fޔ-/Z cP讨 0bߐoxԘ@Kڝ#n3]I"I{dٯRq#o2HujlЀhXXaB]XZڮi][a/MW.72&;2w;| uWf Dlz ,v/4v)WQ}OKW _=_񶋔k ax15rQ$,HW'ލy#1nt#!yCV)X![#$Մf19k4?E9Z*r(eK ʠϋyr_D"U+Q%2=mzWTEKp2[@ Ɓg̊N!RiofMi7p/|w~N?>GϬsIţ-, `޸}3 o F*I:0.զt#'c (OOnAF31o@2ZcKXLYl ZsJ6Բ?]Va+vHȅX5' ^g]o;cGW&k]ggr̄*hE7[zd1߈nُݙKc-I4ˬV7~ގQ5+t_N1@Ű rjWg'w-e|0-;;v<$הn2lO_4) fGHq,@vjYjIzU?f Hunź ㇛htаjxxƮ/ea*V70g"c5RgO4υFd-G],s թ@*(4"ݮ(!ٗ-\bN(RngM)'צWou?{0,g2Fx,I5ԕS|+shi]#ue#񝃭+ԍUIK0)Ov|kzX,?1<< (4ga ӷWH/}SMCȓ{t|G >>{Ý-vFP,oKhYe@ح9L UnXX-)QΩJQJuT.Rv͌`t2_rF8dV*$ʏMPD+zܴ'+KeaadC [o+ʬ rzR |3~ &u솟ဓX[}*/ahrM;rKHXګr!)Rt}T,[n'cӅ9mR.jwNfx,mˎ҄_w}|PY Ieu$HUz^27sws fU=$H""v7[9 \ݹ׷e;HޥT}>YeW7km6W>\Htk"(lTCռH !5C;zzXø#U:n 4K2x.\ rB^8Ef.:k{,ypIo,rO;͵ 1Qc2@䭟CTnjfft~q UBcy+#@Bx7X̧^,aj*۽E.5(6uNa|*ue;l/|VO8S&1֞N1y<( RY6B7cD.eb&f懶K?$~A\L krɳ )/ZMK YnjwW>McZ\6i(Os dK(*B-(}x W߲b]Zq$ ]-.2S YVX'F/ vv1=sT" dϪH鮥waO_KIh9JXݻ}\Tr/+!GɈBvǢk4QHt6fZDya!"MK m睟^ ˍ!hNT̓Lw}_ A&\ln۔o-+a6XV8˼H4f2. -GEON8{Q}0+D=@yʊd,)¦ILj CH0'l}>'c[ r[hRF;مB׃聂IHlA},>(H"o3R_ǥ(~2hi8f LJGj ]Ln!GS@0MA`UAݓ0 )V)wIdQ2ʩT4$pTK>kꚏE1,2zl5dxţ< tx9! ]?~`Կ<pеUwq=qB=<9ncn- bIL:Qf,EqJ]j)6+uf?Yi *iOyImˆPA r*#aWe0\pm7tME% ɩQr; @x6>)Ohd 6dRYcr0x޼j"Jρ088WkM3U2hMQG O5T{H93JP!6J̊rm\ ieg ة~oE `v͠A:Y7tu~փWF*t5|иZn }O< 襆ó4Cq mM5ř5"֫OCu&b!msK4`b t ل|S X齙4E(Jj8[ Ag/?*,zaw-:tzwnNlRCd|Fl1ת QFQGfjsK~@Pi_)Y@cr D@Z*!RoEV/?]k1@0#׺Oq(vtMqR7mY舆)uT,D\$* BٟY\]a_gQl"4;ʭ7&>fQ ]i Itz+z*Qc :r HmnTulSZl3ov_%"'3Gj *87*@q$J%D HfUFvCG0T*[UX[yrRFJh3 RĤj]Gv%1C*f3N9w`0%T<ˉ% 5;ZrU:ImYޚyxX29ܫG؄g}\{>9`6w'"=pR%OH9d|TKkTfG#~ "Yi-~DSnfP*U| O@#J޽N̔.r@n80'x $E<&d]$vрY.BTC ٴ$vv%yn~i!fj}xƬįW$EMbuuJɯr29\>&L:lzgd;h`v r9;x45%k~v p \ bbƎҵ(ľ#LI5ަ0t@~+ i>p&%'>?pTcHP9E2q|֩> NjvKݎ_9hSC\lD؞9iu)~-VRҳ3rc يXpa >`۸aW Y%i=(^~t5|nX|#IL񆅙r0FMѢe{FՏ"pχ1D.s3B:b}i?scv;ġ*un똎lSK5u<1Koe Y+%!ZB=2E$+$xߢ.[u3@e/uc%0ܾfIR.ǶTpDM |q}4rm=xhٵ}e7.OcaV놢B|=#zn̰,V yjy9SRRcRspibT@1'1tL@#ړ@ q9WWPԡ}q| }_ 5̘87: >yst~$t<~*E$.V[ٲ m#j KHaTFcvj+)l8/%/91mg.j83%vj%W݉jzʚ{T51 Tt ^oOaXXo~ g3.zmq}]~a}&FrHXG>=r+@LϷ$jbf'oX YӍ5\l}%\֍%0e}ņZ٩7w#ǀ* tlP8呭Cs@~Gt+ R^[I'i)яwa>y˹_jkj"S긜c}jPQCbbflLn󚄰y'ykfwUӾ&tɦ=l19]=S0&\ \|wBQJ\cbN+@wtyzr0 -BTfr5xd n Er eEYX&b]"U|o ^R69.y" [7ȫ@%RVsMφ'PȌ?;ȟ09ad['d-we#gOř_LRSv٢X=!F2ch3g㘟2?*oƀCf\گ}o N:a5oR %&7HQqK4^Q4;r:J($uT:[~?4 Z$s6BJRw]f0zJz94"UT#s/h}*uRiʟwk(G| ."!sڍGyѳȷOǨ ɑSd/a"?"Mc`tuc;,4-c}|`^L'0QIǒ;,/ Lnן'֡1!jWO R8D͊B7$26V;χ(wclj(UJ,/a*Zb&15lpT.],Gaye$%g Î\ݭ4dƛH{>L̻:@4x!bHH g>1-żNyl%9׊_v n;ԅc-bR`d)lwy k.fٺa伛Yt=L^ɕ3-֡F1A,8~⁚̣eE:%^BSZrV F |A3Y=GUE×Rk2yX,_jlhRUT>EnHIcD[mJZQݚM"^ aqxkgwR }t/+^M*/y^n+ɓ Q5{G.ϫ妪 gT~ lh\N"m㐤Xi sKTW*"4".pA٠]R_㜥 yJAH[(YtάS4WLy ~t|A beLh6uW Gu XXTk:'- eܫn4_q*No=dsUy'3h.Vkx~ G53ߚPu'U[2+S#c?t<,Zgrf$&5$1cG9`HCII`UM9l)嵦Ht)d/Ǹ }O* 7%ngJdv8 ]0}%Ө":`d@?\. [JƸ={V{1v:>HrHjjk7s/GwgT}ڃ}L0@5\+|ur\Z $ݕ>4$7 <ۻd)gK&NlҬJ4 JI[F 3R"fB[^޴6i]F 9̍.*δ93[S=Lh>y!&)m A?]5U/?^1{]U]z 0AK(< \Xn z/g+J͹-'Z mj$|&.n@}2HY#ctcʹGߛەu.YTUr&%yzɗ@X) .kG\ȐF@ ]T;Nj'Bf(֛Q=gԫ=19'.d{Rf^nrφVXuJ#vaCMCKe$]|-gǜF;J歡t RO},f/u2)Eݛi8:[Y5 ][5Z A_TvlnZaZ6S'-fs?zI[kqUe6n<ך8X,)Cxt#פ[h.75LL4FDᤓ#5Oy4z,"P3GypIQng%Xi+],y(WbVK'MfRbc`տϟO';w=1PQ7H=NfĦN[bB n<=||'LAY)n>"&*}d2FCϛC&.<&F@VO{(%-gUc-* ˧Og>C/P'32߶Y& [m7wO?xBTʃ|'`ͤK!}ZDӟJ8>O=&NN)Ӫ椵~8A}R0_0U遽)oDZ%D %vlT/|PM_vy.HydM4Eu3K#8ߜ <ČhYõiRTt m%My KQc 8!n#M";ȫ&dR͆c,AƱFNBMҲ[B.km-|Sԗ~ Pw4R,_9oƒOs\H_2J@1 ,=j4eW6LQgMI˜%iBÒ_0:Wp,c^MO?"b;qNaˡlq' gK,hiBSgQ\seێݼ:]P/ͳ\/0*E 1VNL"H6v.aVXx 7K(N\nDK)._~ Xy" }; E=[v r{osg*)9f4RZ/ߥ$5_:x"Q/أlJ6FI}gA\KhݼQ\>oUJfHU"+2Jj7AOG+&ĐECrkO拏;x:[aI[3|{(P ڸ$;rw:3 x$VڮRNdߤjp^4Og6*]78X U(D'ѱ%RҐr!|WRX2DPfn !+oόfaEF*(:HE$u}}O˔w/rXg:I48˱&Jd*2*(k3>:ɴf#.R>t:}}6 -2u[:?-bYFiw.6I ]G-&9 "e #XL VbRsy?0\At N- .ϥT귣%?DAi E&6qu9Q)5R^ͧaP q$<6SWo}Z늫~ȔqfJIՌ@9Es᳷8痙[T;qoyˆ~BqUouC:a'Sr:R+L Y_tW7su[~\f<+1S/V{:uE:h+ Xبc /j0u+UwLLr@Ġ#\.Z՟6mH4ռa G>)IE4‘ ,Lcug;&,m|͖MN5CYیy%%y8(!ӵ8u}ҚMqfZi˖ӷYPɲ:iQԵiLjQEU8EpBTqj|[뤖C( P>kZ_K e :*݋O6o4[6Rk+}5&5@>>sgo_*C$)Lֈ$EsAw?C[yzn_K  <^*0j݇A=n9ciAں? xv}op͖֨oOA/G:ïW8EkYCjc&r%& λ1n"&qX;XdC*ك0 +908N!e YR!}Mr,RbS5e0ꪺ=IPm,z58 ~HRԉ66DZӣT{~\q[2L\ȓܢ(qXe\GP76Q_3&+^+;*:X'NiM,Hx 0,&Druj-XO$ğ0c2+s,agEx=d#\{x/NWvđ/H/`FC̓[ĉ#"$@3oB&}l)ժav0s;R4tP._,"qmO>:a 6qC-t+feS$Tn罎pbre.; qL{s67^oYc̆;{р:M ]2ڲs|[8?(vIL1չLZP5\ n݇; h֬T%;W9RF;a &j(G1 cKl!n4oӎĪ[:bYZ.i[H&C c!wa޽Ӂ뭑dIeo:siNjc͠np b1Vidl W0wxjȣ8VT\l߼O9D:dhVH{4<!c;l[+_|gU\֥Ԗ6;$}^ݨ+ [5#7 Z1 [֒,2Eu&? $B5 ~b Ф3ESrɇj%2^:3SpǸJ $%X˨izi󺏝L]P<#'T;k#9L*t|0F  >^A``EiMvaG 8߅OdȷE?S'~3sn3wxN1snXQQyDCJMZbLymҾ<&Sb=-D^TnHhIܠ6|*Gyt3"_4lFeu3ҵyglR=[3VFʐ"ͥy+U KO0S\3?Y9V$gh~wP%:WNI[:Bo˿b{?&7]Ol^TnHm)P-dqwZC|A㱤 ͒i ' _ʧ4dc/&HCeB*?iƍ^_Lex;Bb -pXkv0O'a4SqCSH "VF$E%|,z#d qQcqE# 0m[.[ʌ*>r[6r#VYwg" ދQd'εpEzMO=ful`F*5ݰyZ%(I}+Oݡ*DPTm9y9$\b?PaWnp.|r, Ҋ$)k :S kxO>N 5JJn4*e֞:Hj`h~;bƨzkdѨEb=BDNERNnß}XW|ujCky=ma7~魬wRwlV6's\Jub[d!W m#X/Ot G57zjXgu^)|a}kY!ыj]N1A2/ۧT0F+'%SW 5A,7r͢ dkVmUqc=Čqz qxf= }8Dz1"0͠2nI30D"RFKė 9.fL-RJMrv؝ |o1pSba^ؑ&_.8A5C 6_Tec`B c-AmzTwN<];b#kvfY8Y1đmu߹gb혭(-Eqif>D/m\B܈`ObdV| @3ӬjjFIMf8> heN$z._S:LUBIJt42`+9v~{s|K1Sx&ZX`e.ˮBF8K:RK",o<Pck SZЙEp(XUHWVuc;*6UE"W odKzIx'}/e\bj*k5P ai䚞rn_elh0Qqmui׉p 4BitO@[Y50T?ik s+^jPb_WQ( a Qr|s k=@[k>yg2疚EGTCJcIM%\|ϻNހŁm+<L[~UW>gaQ^#ă|j3[bWdbyZu-/0xYXqwe& r))F?6,ɧ&-.w|~!-!7wH:gXtI wNT?LƛCۂ#|AkMm2˫r{ע!'6U\UŽe![ 6n4=qz_CaR[6@By6Pp9v&,sNLͰU^ղƬKbWd==;aWṚhёuci3@ <7= I#ʜ-OuJWo/g\Q D׃]gu#ZL5ÓNNHM ån!@iƏSߐ\!GB'+U6ȞTA[F/^_"Hd$s'UK&&)u5W :MX7/aʊ Tscbuw@֠[pnU%$;Gsgԏ3@ ÞAU^(7&Б'=ncupϭ "_A_si0ͫk{~dTEz?/GNjQPɟr@ h{a[=1A)8ctpwPRB̏֝QsKR϶sgͲzϙ?KNS;!6caTNgwdm_M8#qrKFruuNv*%Bz0s3*U^P4iR ]z|϶9ꐒ )06nVT@*nI*w2oGJ kDߖ󤭮$SNwBA|UA"772Aix~1b䱮!*Mf$>oPƯ'@,Ut|Cj fK{fjA=]hsWŠy{u`/FnB?/ EZV54Ʌ9nWDܒFØi~]3eE|{u|弙R?[wCUb;笓}2!w7@$Q8XN0m&rVYFصP$Ó%6l~t"ǫZ,SmM?>~~KOx={1GER YY!W1Y=;+.sDo9gw 1~>-FH rn=**\b`tTM0Wޯ|EGU^ʤz9PX]z2g^'F g\A&;d+Uہ4z6A:c5:,aAEZJIY=#_8<QU%´"++Yu1q Tm<)yjK3d?m|SuK+_^y8ȐElz]/ly0Z9 ]WޤQ[!y*sgf|╠u$u@w*0T,+,'>j 55e]W;[{bQ[&djy*]"v#GxRRm\bl0㰇lFD- GAj7f>gK.ʮ8+_՗,횝~\|HhMz ^\f˧9%~r~?gG>6`*j17DL7 J5FEy-3O?O!~\7m--O\tI> ~K~_Gcgadok8Օ'J Ny7T,b#Iz;*dS?ypjP6rOgH!"D]݌fOlq9?ǿ)2x{~\Cu-y%Ӊ-h|&DSb!`y%\ۇ/;\[\0^K-K:rnk0"q_\R%u].w`.G??U2 !TFKMu~`}"* -5-]ǩ*I-c 'ǯNDۖuO*iB ǁp 6MHÿI}/w#ұZaR@%RijATrq8`8g:l!pis}؜urp[uK<_(Qѩ۱bN՞fRoЀKe {l[yэB*uM dOU7 rlR!:CxxyxHb=E޵ z2-0b ?JT6Ia9ݟؿt#Fvbֲf>jϒZ>7@˽-aMTPpa4eD`8ytHt򲪋b uKdqG4eV9kVqec'xR`3-$e~gR΃6" jf u#GjR6:6?q }ͽc_Q0vOjI}&D,F.y3t}fέj փ9Q*<ɗ~g_%^75u%sp>FKߓYvkVA#6 $s-/=;WT##zbu|삑:GdXެَD~~x;, x"5&KIz}uMXB&Ra?|!SJz"e]{u7r~ڬKuVpY7t Siy99EH93µ.mk8 :,:VRn~ٲBAIR"`WR_R<>=Nd$*j'm_fĠN !5FO(LQ?O-Ji{@)1OdXCNײ\76BU!d ?`X)8羡C&O\i%M$yYގ\uH^+ `ʵ/×2> +)Œgz m" Js/-`yj;,$Si#KMzSxr|_Nv D).AfA+Eȧ?+HD2&=>X1߄\k9EGߗ T 7z78"CؒݯWugBG5я 5E;f1> 58?sÇǧ =o{t@.ՔLY7[O)ʘ+6& I{.S6)u}IV 2#U[3a\="z>0YqD>TjM;4tI>K_(n!?$FgGT:oKNsY/VeNN\3cƐ\y']s9@}Z忒 ??=||'ݾLDNez ֬ [)OGljCr)!SzC6- 3_JNCZ ɽ uM|8LvKs_rZ4n9_ /hoDa5F߉oAWshU ɂ}%`SHC پ8J/^Q8w>DKc+ Bs0&G!O,o4CnEo'/5;|2&-WO1iG߇Fˬr@V#Д)򆩂>0 ل~! S۔wXor=Bnʈ&fK~ `Y 'j‹?f ndZOՏ::ӆَM)!؍W}\hW\oD{I^OGPyV%- i: |R\.`@R<-Mwv+]:. uSVCS#5:XHWYQ/4".O4kI+YUU?]D tsV|lG\SS 9s8VSYٿE. VEEqI-%դ[ "o׽FdC4y'p@c,%-Oyj.gAK5mdJooĢ9& hjNEaHSJDaEwdv4k\=ݲ`rA˛x<$.6#Yϗ@?rw}L*4} Xz(f8?I}C*qe͌f̀Ӥ^WLEgV':ҙHM,.Æ90Fu{Ch!3Az%TI 7<2 =H@ܤz\|;pU^e[1 4\D:bYk cھطc-<˜@v'?fm|nUATUd닎߭`cĖq"(U&szBOK^|lȟaKԩ v^) Tjn=6㽐+5N]TY&FM)VIMzI[3*J画?MqZIj7X+ci+?θ#=u9B\yH1c|HJXKڧ:הw>7g7D6Ҽ4Ec'FVχc;B^s4o8m&´Ur$Qn\WD> :&-[J5 @m&jV铒ϺALTC0fZj|Ǿ JGLg#@Z%>>~<̊$>. 83C)̪p<',QݲLtpmX}bJvc ~cαnLh)~ (PT\JgTYuA|SWq_[P'vJb8Tڰ\Nw9ލbïI{32!$"E\u0MG"Zlп~48 )G%`+sd]&λ!4>n^4מ<"s`6 tme_<#$cUfc\B_5IJ틌00apg)Eroa!> @j*S PZ?ð_m(k bXC$>(IZ}NYt Rtid+? uŊ֨^N%% {tQSSԠwMs,n7 K]wUϩr~7.#0hlUסG9u-gnJpz<3hd򳮖?=5وOEk]Wi++DcN N΄26Q"f?St& {O<+zr᫺ʦ%׌K)RTCɂMcA/^gϸ|ZH-7D3A:4**̀7D;xSa9;>vmwShej?^*P|+-,z}f$g[.cjO&ap.1BTaiMÖUwbVӣLP s^<>Ry. RjWʏtl6:TX-DQgš%Bf_TMz&S-/4+CczRqxE±w:c]4aGOcˍJ6\5cL=y>O[iePT(9AyU--_))ݐiHu|iJ ,R[F (&WӐkӅKE~t3&Ny([& A^"e 2ޘsX:4"$UU2nVm*&4ORff”D_1*p}ZqŠ+xYn >|m LcY^(ěMKB(M[G*|/U-*]NR})VT}O[E4Z ʤGRU#&2۞J#ojt5/+tRLd,X 3u r)5t3>DM^[C-΃C9ؼR76oB9G/bSD 0gK'~;d2e4Jc(9TcY-]y0{uȕyɊ%0c<8΁qY~Tff^VoΝyKe\=33qtMHeԅ\@Wń[pw)lfc -?)H"5r1%S(>ӫsA*82rT|Pfը|"aI#@ЬPm&  Yÿ`:H!%13 f=@Z$`5esȱq3t>!cCM;٠6ǻnt (xQAu/zѕKITI/'mv9F^*n&7lTn}e264`|w~<+tFMR\VQ(G`D8yK_gwf{]E~[ggjEB*Pιuݝɓm\'~?<DnּX]T Y1~n*Q2YislYs:2ߎɡ#f5TZ@)'>+O 񒝱F"Keq/#_ʜ-Ev3`M2mM˄ĖpOk@|`7Iluw2εf1"Nw}pJc=fEqrRɚ:+\| o+k\Z D4eTO9O|8By2Yq'D'! CuFc"aڢRߜ:W,0s@/h )|l~Oj͋ʝP5u;}vSS2zOSZxk}&zrl^!e9+$-]!YWu3/>пqNWܺOriza;'h _W7Id>/F 9!5|^cԇv4l))}w/[:;en yjGKI\6. n^X״ЄX_Islmt&u̝ȘIŏkb0 -^ `ӣ2=6@S.]O&$iU+?YnAj7QJo]85ZcVGUjPNxoS*9lڄrpPRi~Ehe~8wYaMo]f2FEo9,[WE%cLyfx؝:y؃f8"Ue6A8&yE據DXULSغ)Y޷hiNRGv,56r'2™*dЧ58~a P 홠sۈ=^LO(zDBw\5Z|qZߑJKRi(Z>;}8g8A*k %!VV|zJa+O㫲*gNnGušy^Mg/Q;"E(k'E5:.BGPF=KX䋨v⇰C&?wP FA)@ a(a__Pvv'_voV$lJnzl'}l&~zǿpoV[  Vv8/ߧ+(R_R3 8S|[;)bSWϾ؅AzwNxxS_Q_VcH)_|{MүmxU"׺ܔi iow/a;t*/=n5"}| x|ryRx`u-Ԧ0|=8Y k#B'-&/-:ò}v@qs<QJ>21W2.%s$yT:ػߺ̽D+Y=d+i[4_b&S9]f!'G%p,e3=W{ɩ"^>x$w^^Ln֘" Cw|V-r$puܙlhrӉug$Rߊ9"-~v/_%oWeo%t7/*Ol[賿jUEr(= ' x9J~W !0RLJs qzʲT_p{ɬbetfJ0990"˯ DUmyOnFƯO¤'qٻ: ӕ0=#H̰_('s4/# njֵH-\tYc?=ȾT|o,G9/pǟh!vHEzrH5^&{|z;c!KaF^8EҒEBBTA&骒ZjgmN*}3UGδ̏)0J-G`zo U9y{$pխ!d&1LImcM5|iVHNXgrp,_*g>l{iXٽx/'w6A3n)As9!ەe2sS ݀\kqM#:4wSpb }ݢ|~Uzb/ ㎋ؕJ~4'm^% ;t T.!y&ߋ*8y!֧W+u.UzZ; CO2͒*dV뢒it`y{'cԻ ?L8;6X_bs*DL%L$8HyZRdagJxRsRn'd7!-h*B+'Wjy=X| j,3@)P^R94՝ۭ{nҚH 1GG6eo.H =߮k< &9 \"A(j)"tBozMR g"PT>5m JQqXή;bC3+H9A%oK3_ ^Zk.KOXnNz 黮‹=(#y)/".W`7NP96ms$ i'gl>#)`b[.@:IH] AwiDyVQ*iO}r!-¬3(WOHzL4ܹ|,.{ZݔML~L\`ZJ(^(N9P-w]]>O\AzUGFNϢ0*%5Z[ V&D&z7w<#p&TЉZ6u/Psz ٯu:Al^H~ٳK.]$W_ų}كײԭE9.;R1._/Ryhpz5^z,./@;eȤEfnȺ`+ߡћ'$Rԑ"M4fvl[:pEzg=OYPUjP2Y˼mkWf^t_>gjC\Jݐ눬B[oDؾr+ &!){=*Z2eC+Zr`ʾQuBdz]8RM&o<ֈYNX(^aɝ)jM}U&aBB׉C%X z|z:ɮ]Ta>&Ýy2 ! w2 n_7zjc>/% ru]<k4)`[IqWɆ@؃2s)N֍8X`,z雓ŨCϣa3RXfZW][DU)ehj-sC$?^g :أNJ^bMCeK@,Of#_RkI0Y&9J?7 (6eyZ3Dgݒ8>gkpg"%Eq=O!M̱|hoعp?CZ6a7y!sL,P+WoDžHD篧hHdB-.Eez+v Ws XF[xFlY\9Ӳ/dܑrMDv;ˇ鱧e]pQvU Ѫ2S#!CWVIIJzФaҔMRy W< G@ FM3փbR9[G*6zd_4zWȇcc_!k ),.Wah-#9SaLmȬk-K=GNZN/A'8](j:fM񓙛,XK켺lNs1\a3ŏc,yլ">5~G ΑuQbz_o 1z$oXۍҸc(|Za2'ۯ̿qY˫*vd R,W Hoϗ%'~UArBP3j<[n` ',!;Ne$=:("! &Hrܔ &=6 S/떞'G9z97d]"t֧^PFڦ +g'G,Txd1yxؤj5gɘC1rֹ;GH7z0f #,#}cZ!RnMqE+]SBٴIb=cEAS%xf<+jϤ{-8tͧ_-NoD`ʅcf&c҅C/R,Ĭt׏>c!(8|_].LEm19Lj%$pc}gN]?jجFj+af.)ȍ{d9Ǣ=?|7 RbsUo7"bWo֓t$"x3fW~&~ GoV"\J ^F99/y%he@x⌑BBw+ MbE-e&).s;TFmLI(Xus:Eh,ile^ [43!/ݖF,&.s2m9@kF 6 ܊P̄SUWݰ @۾YгR޾=}?W۳7Gh=@Q<""NX@JԹij7&j><~:-Қ A* M,[hJ@RG⼂Ꝩ~ߨY# Iq@+XKQA K%+|ȎK,DB{MW]W&-'_B͖9v|O;ږ (;tUCA)I4cxSKt,ہÕ3}I ґx m3~29jVJ06m9>yʨ_kĕ*h갛+.sFk*>`Fdr$Dm飶l*8Ӕ,ւB hՔ #5t=\3( uY0aN- 55zNj phͩl}텥q]Q)eDnSru7b}۩'?} `QVph)V[/}S--F#prYӈV??~ORד#E1sǔ'$ZYU,ZP)Kg$M!R},wZaNozՆ::ncC}n_|AAYʰ0>X@}AA Zxt}c{ +#ӂ.nO(XŷG Y%%ೣo'J"$߸>^cw (F)0@A9rn)#3H}9yD^RT8TcP&I賴b&̺]4zWu~GyYJRyØ,ՍMJ{[G:bXȠݴprBPqa9l!};ӐKIЫ/6HmCFOi$0$/%z.-͖~ ~czc{YMQ<ס*LT%Jc=&/?98cg)B]%IVϓ4ݞW\Pc!>?|)|Or!}vȽ ?L2$(2hz)لmq.{MñmeJjzJ\0-k|j[ZAXUj$髺|y*!VK %lKO<+P qe&ߦ!T}elPIW* /1HN~3\)xb+[tPW|#&^)e3ī#2ݸp;? [:yD5+NS^%L$H &ڮe Պ9d(u߉BRo N@$-{uRCF$hô LB{$ ɹ8Ti0, /4#.YH1R6gdU%QdV:o6iiE?݌F.E'YmJT VR~b ! +[@7F>:mzz㑜"%ܬk(nvqU%SRfTҊ.심}[ Bub&(1ޞ|5[@cd⠔Tר4BfRK<%okl/X[d|?T Rq-m|3ʜJsE)hhsz }{cPh5m{/ZQ"eaYpV9 |1%5i]HAD.򍴣=O~ kG&:2N34'IRj덌ີ,qH70}Av?7Oksd ;VHSw'0g3?k03䑶#Ţ;ܛTgE¢h3r=L*IG{{#9^VH 8 fRh42ʉ2נbK|fh ;=INgU0oUOP1t;`C0!y80Jam9?:(i+n#wYDW~~z|u n@Vԅt 6%4y "K.<l*+Җ -V=~/m?pda;'42I ;vX%5>ejǵ-@,SZB$NOH*y rJ⇒g]_н1qہh%ǽ?1r!~=f!txԾ)a \7}%FHiv/??}Rv>~aj+_o'žhS{CƳ;FT}V}x<~ S+OIz1:D $i9Zo}Er[h"AD ă^TA*đ'݇:b7AJl]M\̩LW|Mڭ?_O9)55KR'9h޺L ztZޟߌA<-$CQ};WN%@~,J#\ )BJ,WWM_u N$䶭EϿ9pUܲ!%] I'J2وݝ)$3ETTS),MU#fڳn;Dv/K"qNEYكN/SIoG{J;'f= o9U;Ц"i3gpg!XR7UrIN>fii':F߹WhǐY t4q\i2%GP<()'޵@M2("̈́TOySY1GT߈V!fTwսZw2nRW׮_:N:apB*vjC+rg)Z˨8^CA[.K(δK g4y;a_r`{&/@ G/N̮r)b$)gmdliŸ\rqۤK>P۝2PV)F8!ji ã%o50oRn<1¥Ji#ui* Ii < L:v$N 0I_NJ>|oz*0Ms:ԧM;9Hv) 6$J1e.m~f'?Iiv^E;4Яc|a'٥-4X&(WRM<(Ma{ITSHk.n"bshlT-vQy[Aa ]*G1"wS<5"= U29 &Bcv zޭ̑Î6-B|溺f1Ifr쭨9dk d/b;{,ꊷ.χ3h$HnIҫyD%e] |PZnc5r j8PRKcۊ{9-}T1wBģE$}FҐ cJ<5EVGN^stRޭ%F*w2AeϿ{c#tٛJiH/wq3oa+^/FrfXylndT\\hov,wͥ^v[00f<3Iм;;WGQoJJ^fN-ʁDncnTY^v˻c"Oy3Vi Z#FC2T#D`flUAmpk=p^×"u!-Cv+浹+YWl60!)ѧj#cy&tÊ^h_UOVn$Fc\?nE^mR_y䅏fݞM4Hmb:PiZKq:x$بb˺ R*;"rGTjj&.gՖ,)L銾貗,ՒiQ˞IrrWi//,1YEn!waϘPbmT`^W+~QխI/a֥JtOƓźю!s`:$l{BPaLcbZ_^ˆK~p'7mlB1 dBIճF9}Fި Qd#gi*2PzR5+! OI"0Yv}*mxf)p7#oTeiN .?zhGb936YQЪgV-u%x;4kch=!piKN ~\+w *ӕ*ZO{\.S($8L@Lz}:txvXI 0$%G'][c PKa7V;źN(}"33 7vK"E.?r#0R)NŒ7yrRR { q sB0;RYnA|I$*.R~'۹7!9 [ J}r|bLq1Œcx~ aj|LMm&07aŧrP?+.U?]v12™XT$fJR*VDMVc'+V"Yf reo VnB4eI@ 5Bп {)|v:v&FXue휳ק ŘY"vXRy"xZ *f7+ $7 BkyK\D: խaDR5‘]ioTaj^kZ΍=ۍǁ0#XW?c 42yEw0% E.߻?c (;@~Wl5 a] }5u@ 8)AKxK>01(RyM$?}ۓ(s ~k_ȧ 7Q$M|冂+-#8`sxMR.# wMOYE>uהےZJv5ϩNq# Q;gar ˷OC" uYP0BEB5&pm Oj^ї2([88/׭X8a[.!уr" TZRwؕP}jSnbC7c?L .%4{8ax+N2H)E>ca-Iӌ. k/YAGX8\#Cb9(ȗ`‘D)wH"leN&z7`!4)Mܗц8EoqRoRf@ƅyW dyyO먷yd3@ O37cI\ Ý6n9VWy\Qt}vjWY鴻i󧻏w.S֎_cs?n Y= (!H%z +|do$dU>(eyWcOnИ*yљ/tpGW)ܫx\NĢDp'9UժyEʝӤ9=y-LalǠNjv`۽"d*/RQR`Pup]Q/la RQ喸)\_˯%kYJlG~?5]gRc7qO_>͇Bȹ n5KzaTgPQ+KD|돿ܿ_݈H̩l 7f-Ƭ9lo_˞zvό}Dl=ٴswJiKmX2TtT)')Wdww?|ǻ3YiCrK/=0ԔJu8TU~cܻUn4s^uSWQ CZdGtmlx\u㬪 )dU/hx<`qj#{|[+G,عlηoi37c9rpTs]Õ8BUx-Aaܱۧ*K>z i U2W4'㕞tA{M'b<&V`3"_fWw  :]4uk}kG b$ R75йɛ#;09cSmطo{6xU:LɜaG8Qd_-Q[u}A_ȩ٢wYdU#+=$wuN(m>F=>pmÃBZ{<_<%^*F$U͆ ˆ 5hDomڙTBy")I)@O|sUWY|bE"?XhP)4~JA޻('R],R3-’Ҟ%'4mU:T1,)]N¥eI U+F?]6]c:Z)y@2cEJt }xn](,+b; Vva]Z|B ]Uؼ3JF{58G%llNpG@J^i«{5#]Pxr4ց}0gr؍IwCQvE> %!'TVG&HvɁ*MR((n>:yG|$q"m F [V6M]fV8?-սm/bp 3ǂ ɜ&)i2eh.eM.yݰ`>)S"~|55ӏ-0OQ|!tjr3QKf#!)b:K mҝGm0XRa8 "6JQOJ  9oWfErcNv\E\nc9ZղE|nF7ethb/J)ij^mhʸaF |8d₋dUԈp::py Kұ4-gUgd5q}9ߤBj{/_t BCpxۋ+ptQ*j^GZ3.&cvlѻ?UDj_?v/u4XFo5enLӦw 3:)4$WWlX)TL,|4=$/+au})~typ1lj,QgLd5y:g'w,<|kC{gJb&6%>P3Hzȑ:cr>><6X|[ɐx¸ae3^|o~pE't6KluD߉tI Vrn!C~пZ>/kUfYIJ*Ѭ+dJh蹭J+aRrMPM>Vx9+5W!fegط<°H+]k76eLb!!?U9DcNm\Bqnʙ 49ÅNy렽)mGIU3,<0M֦{ǫ$B'/Oe;/#ɷ@i,9DtVEˀN֭>}+)x{=ə_G0 (f.>xBhˣa|arB1d\}0[[r]y^:HY@^?3q=1Hr!dA8i~O@^Gj6)Y|˨qֺ'h82Φj`̋ .>C 3Z`*6}"q&vn[پʩ\ E!k;@=$w zrϿ<ĆYǺ+U07,ȉZZ_[$jAl@^;Lt7\ uq%7z0TI) RݛHg~94ux|9cP*ɈY9'-om}a@њޙEp=1Lll, :~JE24|Y9 Ơ&S{Oy#*pV*9{ϋWVcjL#*2uwoxT&;zb=d@&^0Q_kj|m%]aF뇶K1Vx㈖E?c49#+B>8`&[fqc>g9vpzMe>]ϑߍG ¾-ir#Gf]M},79ETl̕9C]G?c5:tTS%FS`t]& l:p%_6!Eg4wot9z~ ?Nz7;4&"XN[6ҰC􃗟i5:#G ~"tXq&wb!GsqSFu~y!!ms<(C/;/[W~˦A⋟J )EJ@pvn7hX2U /] uж[|.%\QV{{%qNx5NF.@-a*; a+4Vg.ob m~BR\j{tG[ i&b鐅':rBzs[YĻ ]8h&[GO: . 墝՞e\)+)F8M!N{3hJq. Rxԭcm cF:a}j*f#ZeW]wf$}J/[֮-Ȑ86_I0? !9<+n+y~l!&$\(Cva\ܚv9A|@['4+mZN~ _Nm2ݯg}4 #GdYN?W:8p6㐓Tm" ң??Ǭz yL]!m<= (||:bn^oK>y>&QdZgN}–*بN?2W|(gQebl9`"eyf讍'&ya ,\lа.rzlǃzS i7gÃ:&SuO-͗?=^\+8VJLAE[ `jczgb|T $pڱm ;:$BU1ۘ XO(nm`0f®Ψ6ˋD!f^JDC^0H"g}܎D/DB.3k}Ab4w=ŎI^nZ(&*pƮgDfl '_Jmzru덝JQcxˍ WF&Hnb rFQz,n]r"]x"GSB?VQFZש /vC>jd#9/ E+@L }g%ٚIln6OZj͍cs!o&W/#>}zSI:BK,Um A߿4(9 ,zڇQuH}Jcl?~BƉDգkEVd3"^aj=;wKWrYoTgMK.E"xt,gu{gBe̘.M+ 6w5xIf|BӜv'P9'\ 0cUj&239m-rnkDbRȜzW]Tl nG|}@>Vsks S=PSv:lI~Rjd dK?G˙Hu*{eN5.+1n?|hnztRyijׯ;rw fǿ*ʣ|/ז =<5\~KtazG~A`;lEnf9< A-!NN$ichFc).qoQ$3;"]wbX|U<™>yrNtma/-M<\r,^s19צxU}q5AAa ^qaZo$~ ~z 7Aq6~W#2C"LP PVt8bc%fxʈXwv;%P2 kHQsz4NZRI7YVRtG#U5CdU릾;i_P"Jqٮ:8so bѰ C:H1& 0Mڍ}Ph"DC*~)/OwgC:̎?[~z&^ A /2uh8܏m.]wK$o"mܐ1/T%sX]ߙ.gTṕ6iNc TF5@ { x )!sAS GRTLδ_.S pR-]5r \ {)< FOv綇= [r,ڭڔ[nn~OewwMHe[Am4Ģ L+S~Wi]xGS1˿ZھWiC b|A"U7twlƑL ]YY+@a cy><>=}Ĥ*DfƢ4u4Qz\N 6lǢ(kH?Wx[:h}fP|v/5TY:#4"^S_<^5q`zHrkQ- Esd=T,~J1CCe_}HRq|L\ bS_fMifgTQ^tu}.3wĩwNN'L%`,5.{bA,#aW;"^gAӲ\m<+$)"i8R%֝Gq1skiB!+(J{.喫O)+J2n1r2 im噻2zHoE(hźMU< L,D<"; *đ78* 9W 7{4)CEqQ cHkˍ+ WK/z8\d&Jqlw"$'y傳/d]O2°; C쏆6KKjv8$BmrFѐ>vT˅|>[ a4}8 zn7B}yDrgytW Vx}&BM)H+McX_v̱7H֪X {b2bYW#V>9J_4FYjojgy/wx4.|FR%'ñJ)m hZNn'ZӃj4֘D_Fg5eatRnNf<@y{2ofǖr iEFa*Mz6 r_U$UtsK kZOZĜ }+Btc ^!xR;>|).uƚPkP4m4;9ܘ&#ll?QJAꊎfjG*Ff9(eE==ɺU~6&a}>M "X7 r+F29jNwU$gY+/}D Eܹޠ/tGN;ݽY Mvyr򕦚!kBɸe6jźvvxO#a]n3+S`ϑ>W j;rԞ|Sنo(9r@tUXzQ.iİ"ϘF u&/1D*W}&x[}R!<h=6j™WMj6URDȼ)E(ir>_^^ʗۑ!a EϤ0(4CvjwO?(0Y,F?s\5ܻhW$! JE||E8@"4 ݌@!t,3?>|KۍY_.ML>ڥ{RA-ʏVJE#ۧ^|%nΥs0Q[-+OϨA]t(tY^'GdvHCqFF|VJ:LD.rhw>Nzb!BqNs94\X/_;ׯ$DX8MNz͈:ޕg#b>2%RRH-o|zjuJ%,MsN"8K.G8kU/m7߽| pj / +5fRh04ldҦ|* t!aê2E.cvY>MKY*queo'83Q:&Na]Gr&9ܤ~b@s TAHyr2["HyIB"\@ ACjWV>ĭԯsVu2"m59(A7*il֙I{O͎b7ʳB~G/L\zQU%ҫdK7$"zLt4iLkK-Ov"&:PE*#87s :B7`c90, 4eH dA;c8ZjhA|Ogu߶Y/rɭ9"X=~Z~ [/iC[|uA1J~xhl葈~Ux zAxt3*3Hr3ƚ( tKJKc|܉ʝ{.4mn/2aCemN3 +*Xea4z(6!m,%EABDoU|wlG#qITQIl&M!'꽲Ă)y<,<댸e]It+%"1=3E1V;ɻvXrZ#CJ*&kٴRͿ{Ź1xDIIfWE]kq>3g#1@&rѩ)+cUE@mōn@OomL:@yˏԣ-K,}&ƛKSuVzQʔYih 3Ys ÐTCvE6+8 L %k]IV/ vu2ʼE-(x>րU&Ġ.*Xb3u[ 5Gђ_˟!>Lj藇 ݌۔} \Xd(@Ai3,#qtOѫ%k,(m#>Kq5E>"_%_sat`"(flVbJm">.X2)ziY0i!mDNRfK,݂R4åCj׿noM q݈Hfm FF?RU}JtFH`6>By@(VO:rj~;Xt`9l#,pE5w) 6.]`9 &ꂛ-Sp\p߿$H1A8N$ӃvlkUU0cx,{ԥ߀4+('ONCA4[:kyOC@/4# ƙ:i\,BUO ?|Js03jbA59PD+BTc)f·/O? V4rzJ agtR[q-'/ 5(To*QC^j4Z>wY VKh|dxUZm\g<:?)T,5jFBAJCfKx5Y3GQqc!25x9/-ܗ6s6+[]P>^V:$LrꪮFs^/@3lղQAoUk_b@폫VV\`tfLPRWC;Bin0^wr||.a*k@>{_F"J3@W}E4})GHHv`&=\VwfgyU zsx!xܾ2w\Y#  J` Fjg;seKӖY~v惒þ W FTZ&|zA> wý~VvهO\okɕRzIy~,7%LXؠom M/J!;*w1Gu/*Ϙ꡹<.:ή dE;]"O2)TA=iijN$ 0@F1i:L:39GZs$L]y5:/UGn0a+²8ՔU*tҜGDTĮ^q:mR?8+JOyKq$bQ`vLSOg4۠/ښIJLD9-FJ2wZ[Q(?5HQ1BЙ.MKX } vjc+.7^!r/ K(SPUktcrQƞFQ1$fvbUCPSP-fW|=j7VhI\EbhjUw~ ؼrŲmcrny}'*O$"$y W 1R26=]'nL]ǵq,wT')mxK0JgAyewW8u+љUUT(w)rRxb)\vl\hp\c8 `ɐW*> K/5vUu/cZD#QZЇERw},z )Ov[P'ԍv$Xڞq|-g;oE#b.$sՕԏo>ѻ}?}8(w`i^0Օđk@qRt:NͧTsKϢ7 :鞹(Q`!8R덮NvW<הh8 tID(Wޫ[&4v%-߷ͷyEg/ q[O 3z_h5xHMΠl; m)jrԺS|´Vud%ro./Wm> |^08t^}}fxr*8BCrfjNʍ4BDBYPP Wu?#JU2F9'`únAP'5,1^?Wd {VITW5!~yC2qiҨy6j7+OÁ 6~K yձ}0AjÂɌӶ++0gK,o4pL Ɏ&o)LSClj ڟFƋxyh3fJ{#HOw aeґՎ+2P!a+ľg  vO?,H<@ %{(2,,A6r.tTdeF*6|&9B7&tuw_m?6 $]F{X7- *i[ߝs Vh7wHA y۟0Nθ $qw0<ͩɅ>[2)zVo#eT0.gl~W# -dFVtr\7} G|BHty]ܙ~h򺶣ز}gItjʩQn:DTyH0HNZ2)s4̨YO.FE~SdcqFJogO!rLm)r*r{B7sk)$S`oy|™2:;5KpKA nx  < a;0}<חLf.ʉ ]LzgԦXT[rӒ.Xȣ!8S`QZ$.rg0g$҃mWAMc]癌[tt4IES:Gs((Ic5E~hӡC<! np *PEzv=סX 8'cʮ/hƝ掇y -P5R?I ¦i))ؙvlJ6r_+Gh\VOr^ՖӖz?j/,X"@S'vhsظ >,9Aic/W[4{61$Ȩ3(<QzN7/RN`v|J12구&.h)_Y,yPFCRnB(!P[A(\VLr5+tt"3Du4U1M_az:9ukb"?/>:9)33nhPgT{P  'EyO>p:t}STA QU7rH}}Jwp>|vuH8e5zP&#*{̅ ~ :ҁ,:J;N.μfg@RV҇ @A@|:#YJ;W*Q/uIuǧWҦLc+gF<, F5tP m./}w}I/wN3C76@ ƀiaܞw)c$5nq"%%&0кߑmYӛmY%' C#.\(~䥠6#jRaRĽ؁qڌ0Jt{Q?Ҷy+2rbZ\ ACCk[{Z=b/ &M7~:~[j~^m$]_3,K~XǮ@1cmxӐ7MM}F/w< 6.i*M߇Q prtfRw!Wh2"~]&O"wiV rfa 6o9dnOzzymܗ%Bi)#,tIB 9.R:jsT,KϢ@lUhu=az7|/! 0\fOnn %EL}NKucC4 "l^fKL?ov~6fWYGty?mˎJD߁wu p)"UluR1:D4)A,G,H,(H"r7AۅpIiY4jC?vP|C_e0+%k2U E4/w};iB %"`6`M 1:p^O3|iKy%Ei7*s:\@s!'$I>hzL"\ۦ1?dYƟй=zWD,_"'|*E:t;WݸMG0R_ ۷/;ɇ!;7WXS> ^fҭqO=C}4$:)ꇶd3KHl )S}\pR+wBw*GBF\՟QCB7d8IT;o)FiU_ڑ%=JW %夛!Qdg1kY~F˫sgY*19+qn'Cw2k N=[u[˭*B|#].tWglQNJc@OM*rM9qt< e%bFd_C癁$2p$L1Fz.u/Ñ2s!jw@ݢ#r.d:@Id,+<ؐR44UO$ PIX>%u&n>:eOoɹ)d(&"=6,*י =)ݍC*5M4,ZS$md+32D*O@t绯_N~WG6cJ5ONRE0-eԆ厯qOi~Uwe ޚY f6'{XE&xÁyVMb77MxO)/(|[tҗfsLZ g%lm(OrSi#4&cXȭ:t@Вt!1JD:jw8 ;XW^dfNW6c}f45>f$ j5΍6ju݂栀,:k-Dw,rYq,M%ODw/bsoT5 )]Uʣ+;ʐU5&qZ@BDLIVD*.,eL슶G0y*&IYݶ݇wzN0}~z$lf3Ai-Vl0vV\\Zێ>r.^>r.<ްp@xFγV2rX1ewx"J9-p-u:P@~yn ۖD7S1iV6|9/L 5UPydTh|˩Q\ԮX龍]zPbh YOTTU%-X=iy_#컄;wkUj;xRE*$dtM9teɂ"MAkl 8*h)agx6 LTY#A%w#X$IɔRF=Igw}Ytl cz5"!m$5^Gxt>kf(}2J\-:UT-xk\ dg- /#eލfg # ?1j(|դUUQb*bv6Mw UGSŦ gErPD(wKm1-T  ~ޚJ_o,D;,HFti`5f\r+ E ?UJA+ GQߘfzڈu7 E igNAgZ&+Z +"ZssR27|I\v\w294(|WKѪS-}|{4۫lg},QefXd `$41&g/ >VE`ŒJ(f^H}7SB/ph{pρUlzȬZS_Vr"޺wP77q3Ubw5^9D'ӞsM0%_=~ i y19Hd j-[J@w_$`I/ueV?*󋖻"e.l }0ͥLxk6^% 9u(] +>Qi&0_qdIDJF~txwM7f% Z,?y_&HntX%)76b Jl.v̉CB?Zhf4{Փ}S{쪆!xUly0rpgW' FIWdz)G{/uH4k0̈efpkסLg|Z>q,~jLZcu]JJFQ)YѭjY Ĕ-JMi]fDެ J&5UF]+7i0SD6' fN-n)}0rRF_.TT/=U(!wMQ0eGSKUARP!+G^ ~S8o AǫyѮ(;8Pn}N":/JWB\g"I"~آ? _>}[e7nFH ,O^z5U:ެ&H-u{+7.wrN3{$Jxޫ0r}$A,BN95 z$ $#p~^qX8 _l׾uR0T},C<%d˒ U(]_JBǪXf؄7p\yv.AJCBޣړ>_gI{؞COM|bV.,iyQ}S,M>W3l\L@ט!TPr.0PSQK%=ʟW{(%S g%?z*IeυPUBx)8æܘO1 < HPvU3N[֙xhB`/0Ra9Eto\WtY]Pvoӳu2YWʫ[OLGx^_pW$# I|BƎiLn1Q=3d{PY EwsylF5]h08Ɓ}Ƒv&o2 2_rN 5p .癑<rjs!+e.,U%ai,avP|ww7vVZ g _]"MEՆp.Ku<B%rJJ6wOg ܠ »4KuI.ȰZR_eu6uU*m. $Nؗ>ƬAŖfYSϺ 'nQCy`(S@m0qd[Ԩ&0b%p \YDOI7bL/:E(  _M@ mKր+6WnʢWAėIhHQ/4yynFMk.֪ C\&ϋG-0hQ=Qh :ms{avAْd(_.%HpaRܱ6Tyb FR,vmf-5,s9tui=X#`Bp5(*(Im`w拸5¹w R:l|/Z;muRc.lU.]nl_O,BqR؃ނƪp3 鎀 hAüa[ձ`mTڒ8~/N:==f$,E)t# 駩h]ńEW_b>ʫA5[:K#՜ y&wa2R S3эVpf" JQ%)HWBQ~ :Z34z&;/LL Y py'͘(0IbH{2᪜i[ 1,qj w0zHj!H5*7A~(An%|;2 K$ Yk~,2{OMf:oVXybҦ'u˦fw`Vh'pi7q[bo8}"'\wck*(ڙ%ӵ_,l*h9űm- -F^A z>yOa5-ܡ宍ă+ o$WP}t=>+u C}F^v ;7AQE"7t۴sO+Ʋ#QnE7izfECʧm~.Gⶡn4FvU%J2a$wt,'7;!mM z"'ta`sVgLφxT8^XOxF=w"54:'qaf#*^S࡝vQ}/=25dnkUE] z@'tǾ__Pmכ gv0&hE} <ӈ jn77hLȚFkDt%c5NYS ?{ϏxPT) WZ<9b$)llOe0\!>͵wglITrRN +mMDo-߉ãF$9ۣqߑ^ZC֚.EvTV(6ka(?FOB&E \Cs>mekXӽ7tfImd)pdlhtHG> VTEdK4-_aUbߔK! ;i.OA3jJ|j5X[J,i}h}tHL9,~W.wQbQ9+kIrP]eG}ȉℽ#o3DQhG(X!qvu+%FtuD/%`")|p1U5wKuňP\Qt̏q7BBUf*<{ΰM0>`ҙ@5lY|XIç&}=%]%UXGVfDAE6~buű*u64:QyғKHQEgp!گ[HC|v% CV˼ÊIQ7Қ5"<u-k_(P H%\N"<[u-[ɶR׎F.jXSܴ*4]# KEOkpԗok[N}dK2U'm9tm`^͌]4rk# gS:Oy1n̺,ay*<OsQg$՞@LHW.f)6#hzI5R)l/.CQ{]x'ypwXW]'[6lgcΖKoU}00`L''t(2=YcYt%}0^KЈWJZТT71V__։~LĔe5ti]ʗ1Ud Uf"v )d|^wszYOl>A~݂ltztt*Nڅ|wQ9gr0ƒT&£4Qo$Hk×b~S*͠0Z׊sC11!mt̙90߷> ~_8b'?eD Y$M:闶?;)C(su\6@{ԒR3jAL燿_m_05QZjyG&Ǐ3MC-G 1o Pj<e)IQHtwm =oҋ}^T# sbA&(Kq M:+wU*Kylײ 2;R(9ض/6^)dkeGVʂ`&6@BC2e[+mSXz3A}_ UIqy,.G]!gԢUZYeTRU9VD-1:(Zj; ;:<.\  !Ժ,Vu1/y5@H" l.|R\syFrJ>dZ8dYE̪!yLiꅻh~g!]+FoA[-3K~E(QETUIjP78𠍢濫f%2R0oqEɫnL'9 m[zc' FyiwRdy9\rƛ~:Ii!oKawuZ^E ܷQMnw=+d)^JSǩ¶.*$\UCJldF.ZƾJ絻PK|!॔;)$f]&RWqW.v]=XH{ }u~3Ռ+SU=/gw>H/F+YStzFdM'E]%Ge8*:f YCbky_j/8焘`%-qw涥yFu7y3urw4V; ocm&y;[%1_MZlwdJA:h??rk7 ;ZXr&phhi29De ?M|KCBU=1׏9q zZ{)xm*˜B|BOw?}>j#tjژäGF/&QS}9 T0WN?[*)1 n@_;vg%aeҦG/qGJ$PoK :ї+s1G;JuuA;yPIc(a`!utx AyxfsK09Ȁ21D8_E"7vDAkׇOo/M}0bW_/Z1Y\5)r_F74$XK?'IJfkaItU5OP5"p _j'F‰'1/6%Q'`oja $#YqVdBP~p7YɱCQwhJZ`K^ Xv|E'ٞ0`Pڀ$HS+'SJlnFLǗ @n4kHkHľ6er@z)H(B"(%p&8pQ:DPҷ <7RҨ/2rB8 \kΡf7HǙR&&Afاf[,8_O`mߩ2Nty\!۠ :D촧$W)mُSy4fkG. Y: q5__?D-`#Mᤀ6x D_Ǹ*$K`F$U 4OȠHv0 )TOr_[Nsgu 88`,ݠ)$xf-Od lGhc7X N tp"&HF=0#vNryf'!Pt=/zJGzu!#B'HqҲhkn(ւ#[4rlΤ,eR9A=P*71T`7ki ֌h{iM '6x:9k?YUMFK3؃%;vYࣤ(?񔈷YNf2sƧ(Vtm+_F%],rfI'V}$ GV.DUc~ͽ҉hK9wvC6Gр=1 0{oTck_,w/- `FB4tvD>‡O)mNK~dK:>"PloI>47"Q1(7Wau݀,G]-gm_$Ź٪eπBVE]!YWL84D [ħ<Nz/A&K 1ɩ"V+6)u(#vShm a Oz sܱ\g^ڂfyO1RvՒiWFsSހ .) wgjMn%,U,7Cam9┃ȚqDԕOʤWW%UשJl۴g;G%_TڹIMۥm6dyOPR!Zڱ8Y}1IA3((tk QfE]r#- &i_q)NJREUD,ԩR4*(W5@>C;/=_j|.p_ iRlI`+Us|">:ĕ\'ˎAEAE pS]L'l~|VЉm3\d[(T#oP^ԝ疋h c&5)﫨Q-(ŊIaƚc̈́(àCn\Ak7+c*)Qݠ-iU$QJ9 S2y=iZb] */31s'κEx,ƖxIqZ RFe,exBZ~sb_",p -aCBD|qh:C٬{Uv T#f▆hYdPaHǯ6[tV%43ɶB#55~hp. yQZF)Â*컯pMϧ^ONPQS@_Ӱ0ljbo6c &}./duD5eV#BB *LRPRfJ#-Ca@C݇dZr|Ve_qܺ E_.%Bux4D6Hr3hk+Ǜlgnӳ G0d- w9ƚ`ʎY %N z5b`A"z|=\kԺ%6ů>HY|TUzg\r_?=@DJ5yz;~~)>B\WN9~kA=X^rUr` )+ l.:>w~Vȴ4(O)į8Y.C pT1 caEu+r>%D"'VOޘo~bH A)6x펈UXj؄ Uy ?o?|~pp=p%U-K!IqӵI oJ ,&4t1%XJ~aEƈ+F}3mv uP] #I`ˆg/]AMZux}">li"`esr34"K1U!`޶/sX: (ЙLRgeݴ3/RGsz;x'7D=nW7.YMS+ZsuƏ5JU| @Jnb6@SrGP#^w̜& 5'4cBԤ8mZ h|Y}MҸGeU3-' *n7eP J,hV+-*6#ʉB>\Iz-?wݿ? FՌ|_3zcyxʯZ`9(`Tߴ̀^ܢ|E(+ṋ,1ɰj2A E%7F$:O(+V?h=*`ؐgEUv:YW\Rn[SwsљʸU@wI%ẽc4+5m);MĝO#> +bhXPH¾H*Em7rag\5T6BSB8#dzdmSxm5!`v6w}SK5'4 XIZQF ʬt;>UHC_^S9)H[h\nbd =%1r%ѹBf M$I q '4\9 U ==,hec_NV-ʫx~Q1urp[J099O:Yޢ"-O?!ܜau uEB%äqW0+w% j4w(n;gr.ۖiH8h~~#u)me9ԧl,"|sV1 gk,0l_T bbC,}{Cੂ°:&0]o`f"Oɰx[4zmZ},Ϊ XEɇ6~ן*lR~iǵl%8tvQ7h|.D˜ ,mlU ]!VUY}0hUɪ+.L-w#C*`*6p'C2p:=(_-٢}z~^]B@.m/pPߎ%t0䁒0Zj3ˢ5]Z{>SO L\$gsYaI`i}WDЛ&BIhB]څ2i*c1$5 *sdr15r_:`"86sUR=F9E(!E# vø;IX4RyHnR}~¯UF|=:ɷeS o0CTҷEDS;rV\ ~ `u)C Hf۟L: _\k10&57ƚȪ9LqHr~u>=UռZ |0a +a)ơr؇H]$2-PIT7C9yԜo#VJkW CQ3yu/шI(%"8͵]5IV-0gZ *tD)]S&jr^յQ);=3wn?%2t0b0&ݧ}ġ2Fa}8tRi-_\̍u^9 w^̉ vmNt \?[RLO=YzT NUR:Ce\B:X'ImFaE#4x o:{ J%U _v]F tvmbXSFzb; FSep7 QGD Q(^]Z6;EB3,ouTPy5eȈ rp\{UW{hVa8_-˧4VNoJ5B*e\Yp$K!@$ :B.0֥&qє<984񼊨OcF?6*3QgÆlkF=my6k<z{8ysz%|nYف РŔJ6fԫx8/0׸]^ ?@SiZ+rԦ9Q*jWF\nK2< $֠ν̦j߬+XRO[o<fLt҄f5 u6՜WǍuѝfm 4Vu!<%#|ċiR#gX`ɭf\wf |H>"3nEoZʕeR 2jJ _ugsL3rjS.y7%5\2Xl'=$6&) A]*$f^ 1 8~$LhSȦDJQ^~4Oз4Kax~Rw5sl2Æզ m\3,̪*ZCc酊W@(o6_M@lLDZ c->JNM}\:%#-92Ju #;ͦkww3ov[Lc7(R$;펳YE)u>+~ p9 &=0 U'iJ@G9?;_%`\c%u73)R ײˋ4ʄ[x{rjܧE(]G@q?ҧwKkVVRïwӛ ɽC$̛ݣ>.Nތc Z.EE .<4OrZ:Y~{~drznQܶjpo ygIS`FwZܟޝ@ߌnRL>~$2uFl' ;-rGZ%fR_s_GA 0r*}dH1qF\WWlhg`^uy+~nB/򉈘F^r >R42n,: \픜shjc/1! CM*G'#SsJ{mb7cZ9)Q ̳b NpEO/Ҙ~0#+#g&(~)8fWK뽿ܽ|aJu`| qdx4v"37@KBr7s4P7C8xpʀ[ܬ*K7@bo_KU0K\tp}'Q>bo؏~e$U:JʃZ^H 6'RU=z:b2O=u/w|rbvcRԘۧQ._OEb-f:]Z.)mA|s +/ى{ے:id(Qڵ`vZ$¸2 [g'C)q\Ս6nֈ"6L'a9иMͪRp\5xuldХq(xV춛~iyKv*$e|È&m#9-CЬz.yӘބҼKdCľ,, !<^ _Ӌ)\Ue/Y,tXYH"cmfl\ x]kxWf㻹ZO˕Ёa ͳ7 PK/mS*9FK|)H ̥W~>@<L2<պ`$rP'i6pc<:Sdڨ&Yn8Ҿ\&NLLjd)k|*`{΀[L邗RVmRJ1GG>BuG۾l +%AxڔW$K/nx%%bEef0;@I>{tD.WfZ;e " p*'y(Y`>ʅƵ[ 9igӌn"j)@;&OTExe@W݇?S8lP:krZ)"ItV^[><[ q@ &y\v:Fe/ֲxüeT [v<'Ga@B^L90~|8ng{x2rNҽC,JKg6hr?9R3Rj;g)4~d R?ij\[vde j+䲜GnrMn'n`:+ aPnOXelSւRž y}tFjFl -&W.$9^V_3Y"3Od NwKg}Z:+d,iyZf=Dk5,H "jBth{;}lpun^jU^EdlsA[tQ-Z2ϯȵ Y!e#1.ҀdsTObw0ͨ3?-!I̐@jC8Mc$5BK܏ Yc)i|?aGoEu@BޛHrpЭ w \_>~C QE}AqloSl 6 R%VmBaNU \@)M²FfLA3+ΔDE'¾R,+{m*FN&0l"\"!̤N鑤iM}g0&) jFyaH<+3J%u("Yqfu2Oٗywc,C`8)Ä>phov/AC+'_a~&9Z^^P 6^cI˥k)<9<_O?_!18Y!7{KIȨY(rVD/5R{-ixFHF‰uC-~]ۮ,VPyW/4k|{v- ~%oAɳP3P>nN.[G=3bgu~K["Ҧ޺W*Y 6YjI"#emJ ;3FHNWŪKeVL+ ڎxC Y~h Wi1%a1˹ʝ.*Rj$۴ug_++63'3|֊7rںeHoxGpBJJ4Wli+ JYb-؀J޼0 vH^@ˋ`(:V=HNj8csA~#θxH(bq i{wo?tsfhς;_PJݜX V(gHIc% 4cWziw,hxd,D]RӦMԒ{wwM- Y;I6aq<9—k^z;#;|z]=qge6jH"BOP*XL &6D'gҒH4Ôj8h(n_]5IleU)藣޻{9x6Wn9FipCլ ` F0 VLNə1 HE>՟U!hQt{:QVH5-^k(e b>^>|m:q: MZ࡟gO5͗W[ԹͿYΊ^;P/=I@Hb uww2VC2}O3Ѐ,Il6zoZ,X4P[3-AQ]8$j88z@ixģ>-_֘}#5[W%` l6-kmtU4734㏗v}އZclZ;D:Ԡe&SG `0[HfT9Y(mWGrA\?{ AG'еANY,yԽlGZUÎk`$#P&Ѫ+أN%$0{!fCRf^1a\OUT^*J3clB$t$yNa;&bWf5I.R_$7Gh+r>l5#;⃻,&Ob ]j$1.o*z~`WVnYO9Wop)}L%.h_Ө$W V'9C._Tm'u2Jv\,W1<- JAe`z0/)6L=KSzٲTPw.a3y 5Kxl0R4C?V0 7LLZ*vH,J hVșbRTqF !8s;ݻٱhOJPvB1aPHRf=}~>} ,::eKk3%`?$1#斻4{}ֽ鍃iEG5̝?*'dj"ze-+w}@V 1on{Y k|R8h"&գs.=4Vy/ˠr+_:Iz(wcI@,.Yh=ekR_mw]%9 S;?T+)uY;jٶO7c^PyU3]\gZO2 *t& W] :Q~Bo"%$Y^F<YrIՍ|.e$gf7+߷>I9>+%Mw|*bP<|Apbzm[]9A@>{*TV%cʵGӛ7%M[ tgx̴1B-^#H,3S V(FDyVz^mKN)nb "+tN ,-EJ3:oNwwレI<:;fPo 9 x[ϊqtY`ʎuBՠVoH4x3wiJ.7*?Xl̪..$9z׀;+9 u T_)c 6&& B_4Jxz<qj_#:h,(P+X0!ўUbUpTw>#@;2=AЩTE}I1I2,_L۸F.ԨT|sۧOej)o"09}z<*͍hEq/@TċQFSܨ&jXDLt*VRtjk8TW3I?OjZ+:}N m,ҧJ<G̢yl 5kҧyNLie;Mx#WoXzCSIhi+g^rJwHhs]'6ʀmʫڒ-Q9Ek`;SWGrjx y7lH몝Ȥ^8ZV)}$rԐ1Wٵ#F#]?ܱB\@1Ub'_jˀky3;ݵ7B?sU&IQd/ DS^ sVmh*HցӱN ΪtP r"餺3]FM {U'{%Gc"^)υsϱEPaݩpD`T&̒Ĥ23-rڗK)Un*0:!|˪reh-0.^7} y/ SRg(B?!pc*v/Ӓ$l2 JOsD ]M~z` ˉ>l(XY)a:K+0PB_gr]mU_H發`;.,(%5ft\`{[ C /cT{Ɩɏ]@2y#x39Ԝ%i>*wH\dbsrE]k7.r/U"O @% *ч%mgX֫R~lE‡FӽtXDb< sY'߹6uw¯]K$u@af0.$)%RzyVSn>~mN]8qYirlK׀C8IR(R6|vVtmVodګSR gxJByTqzNJ I$u hh6GY3?t9-Z^az(b0$txqnRI쮦3JQB ɿ㳒f_>+V:#}0^6rR K yM*cyΨaٚ!Tg[u^Tzu*C7]rq3E/ybJ25?LiͺӤWTJMYD}f` ^w?=w}SzM+'"-4(u^xmrO_mmtj:\x:HB ( }vݻ4z QD+{Hw Y:$#@{C`P /BH2 Nuİ|n:E> OD k;Rmj#b{tIםhіn ųqp@eKײ!OLG" ,ÚNWMa0 L Y\0QTyUĚ'_~zGZ뱠%3KJZ4JpAᏌ<Ўj|r01 ͪ'l~lчAcg.=%rI/%S5mHBei}8zXgT%|m G{$cQ/-zGtY^;бa``G{x*ӥ)CR,dcڊEnilFQAhL%3P=ΜXW~9 se+!zjy_ù%fy]1wNzݨU.mR@׍I{{W]&K`Wr NkyP ËOrE2 4',rP %q+! Ѫ ?h6.oA0eE#]DN:V7>53<׻OZf0(vI~)v;#vʣ;%qx]tϼb*$1G'#a3lBҨWTBe#9~P^}HTф}Jg.66rc_7F{hUR9zp5U}`uA}L2|^d@eUy\- w=A⺪Փoi|Fڦw FګI!GYqfF0A'fS9>TpFO"dʹ6#6۾`:6{n83:&RX!Gd+xjøCc@e|ƪRKL8FI<I:0! yqy-$|UL.;y ^Vlf  V#q ]kL6rmu!qaS8YZV@ 9-ipnOPҏS=%Zpw]IvCu&tؼckia+$ (zD5jǣjKk"{^T&Kyo~r*WQE}pfrx+Ri}-@'YS=Ǎ`5& ANPVlo|>^7{>5iHfհ`!M(3Hu GgjS0m,:6 .+T v}ӅFÚ.f:_jQ :BCժ՟IըcoeK4kS"lkә0O^n!CjW,"nt3vew 5<á:or]b1 ZܵFxkXnꟈ5~f R!DV_6ܻ JѴ¤Z /8Yrװ@˖JR #- NE;hwz}ˮeNbks (]g할f5 wtZѥ\u t$ӽ~c[>-P̔H¢;^c]cƒ[tDK< PyMC3 ;P- uc`mnW!yW+RZ0E48F}0 S9[c־` F]bWi}Y>6ؙu7mn=߽۟;7 b(3Ds3zY.J|vwbr2,"cg.=!HGs%+-I bEEN Ex%RyT!2 կ0(}JOݩm$k̬TǴh1#o5 K1ՊTpu5JZ@.fHSmZL=pGza(g%(0;JIA%\k{^ ƥ/94BaKY1JGN:z~6ͧV F99y`:=6'$'uMM͘:yY!O$׾IO{GQ>z&=y=P>usaUԡ^56P},L %m# Jnp>|wo/lΛ#Qq.uRH Jkh;r(J{L 0rX2@_ύ ٹF VJu]®}G =rg1^ !~H4Gjf@EX@JS#"ف ( XDŽ\g\E3o `xIy_؋MKoG bԔ`PQNCUzVJiu,nּ4&'fkeLj4nSHS,w^'SW@ 9pko.,hv^~{80l1uot5'M'ϘfH+Wc򳲤1`*aKeΨuBid7ީ %C#Jcly?|'r[4J$OƖnU}, PY{!#S"ub{g Ev62 [́,@ZY TtU,vsW$h!'TN13%H/tr2NM0c&8VVJ5wIoi^JlXٮm3n:o+sMpaP\=&SVb`˃$Ȋڀ1H6Uw; (C ҕ '2XD%|{A=֡0إ1]_\-I\Z 0A'Ò-Bj˵軜 Y^'myO75-)ȩieL7 zʃ) m j[cB_IIx?oDwJ oLyX0l帣- y ~7 Ҟ&E;tQk,}o*ݦmD҇;Y^ԝj|2隱Ҿ&*7ŜWXu@6+ɜr}uJ!d\:M LdcUä`$AI`*yqWWː7ns3 U.8E$1eI3Q9LfYBDutľ&:1B&7ꆙ-U4Z)nPQO.vkApR֗yEV퐢W'&^ؼZm+zA,ڹ4jIvfJ)!v`eD.0nJVyaHV$g>z&枵4RPOUKmÎȂОk;DH,p'ד$ȧ_T0t ̒8]d6.ag6Pgؽ\+Dشlac4&kԠ2i#)B@Y{eJ޹htesRAI uSԷ4 {'lԕGqYPj (oLz3=zFC^0r6I`Z̈֍:_&խzfd,l {NxEFt3<_q 9{a Vf}z4^:Z:V;33vVg#Wr|]GU~`%=I-`oʛjsY7U%;9T0&N`>K5e[sjYC\nn/0ud5szڹvqQ۩mnկ^VMF HF\zfnf@-r+緬CYT]^YeUP Q:K!]ʻ43ڀI|2X)Ydl$%ZF#ԁCx5冼0ɯƠh&ҎʱԘ*-Fy5nW. k!ͥF@6?jB+UHdМzF$ 6HG$)THԃO?>ڵ΁F)D]$izO I#\8WTZf̫:4:fd7[3Bp^[uqU;cKYƣZǺXvëJl_JKHϚ/CxIE7/wfVbYׯSF;ziJ"3mZ~'(^89?`BX]@6_ܵʾNleNWT$k26a: r=H$@rl +J^?JYuD 83,i[EYj'zr,T]۟>+}r$3gg.9D]jFpV7 gsPz;cu%:,l o+x?jJ$3-9螂u`H. 9b6#?Gz9JMhWs U>Qnq 1782GeL:/1Rs`ղ⧳u;-NnT ӈ}8L r-VqԍmFu'Ɇ@RH.S00ݸdiŽx)ԧ`[A-TlXKCgcC;ޝOyKr͔[ŕLJO>~o:Lv-@ҰJ! >,aEá؂@Y:cft QE*{ȞMFtA*cǠZm*a!(1>wvڡM3~IM|]LFjS )a\VjLLPWƩxFLuFf\JKe/Ov/l=JΈga6aqNP wRX>(}r%& #גLsߠܶ);qFW>\={| ͞Q9c(\u%v$d5MZA †@{RXF7D!JA=yۨ2Rl4Į"@->T~CXf ^ox̯]>h핔!Z\ ]fؒ^iA&&:i33(n2iL|x0#϶~ * $Mq;F L.q/w^m\":;dCRwâ#)^툖渦Q7 0>2w`\:B>b2BT }I-JAEL&M\ AX;VE5ĸ鬇Y AN6F V%k.N$۪$a$x-Z/_ ߭互ể^%Ҵg$d䭡ouQVo^ehصQZ4仸4¥Dnt$xiȆ.]1hfRW`k!E#Pu{G k!ǚ.J9V S{9XR r?j`n3, i^~:qs$_]ƨkkj JM==XB:i߿{Xg*]0 Uܻ!XnĜ[j&;leN!< (9/Aݬ»k-7;CḺ;ǝl4$dcD >Fr(BRWfts,Ÿ+ #VI!Yaw_:<3Mtj^@* 6❀seTkd}5F`wz7r%7%(-Mxyy∺JzC0J-&6JKÂƨ';l>w<NoFӮ('348~&{" Q e.CPj 6J}Nۖ]Z@8@4hۈԧUD`\euyDH3WMt )wQl(A>WlLj7͡ܠ47rZ[1C~8>!h6K2Mzjc0a?ԚԂodk>e56  hy"uCD+ˣj#pT]$Yݮ.ITt{$U|U-ΤӍf=ĔT&L76f~Gc+,2=éY+c1:HJMޫKDU8vz*cFAr?/eBfoȕD&e2\6AW}"^Xc)c`a@$f3n4LOk:taqJ_D"/`@m{F3 ;_.V5w"Jpnpp }˶(]g/=8$ ЫҼs:J>9t+>sl:R2yl`GNTT[5\j؈ XK:&_:;_.Mi!ltLq% }G=3WzJ< yr-LTNsuF*>KO'qkg6l}EFmK~M%X:xUUKWqiȵ@F8Jr&aYȸ8ԧ)xѹƜBR᙭n˩t״]R"z&_0 wW 1VQDc ߀gO]fIrє%'2D"/Xn06A;W]5V1"K$\ym:\_NgyH^詂㜩0ز$-C1^msSABS%J)M9$Y*5>uæhԧ7E7?[˼%v4,1:ث]btI@$8dPLsiŭcAiE剁M^IJd]`U%Ih 4WWK#ϕ+|ՆyguʰT7v+\!w,2g@*<886qS^{Kp66=JeK"^b#h!xtPTQ4tVnSh1 zR~_x;ߏ"8OBX`(%r }fhLgIY,_zU֔VHE䲃O|VYHާa%hKo?KN}{&ڠM7 q;E%tN7X\Ԙ}YKHM:ӫ-ֵ EdgGESb*Rp=l᪹l`ϽJ ҉uEݵr31/b2hH]`n -IwEOP:9Ew#av`.]n\tQ'ۥcB qECkI^VnΎeLU2C1c;=uP]A RNyEVUa(RچtvTrqj I]gݝΟ_f^J1<;极bP$T5ݞ?YFly:Idj5] 8 '<PJ}2e=z!ukX<s#,C=U }rBSE>KA<YtNbLJ=mq#!V"FOV~qDG~)Φ: 8=vĭܗLii9";J% fl&L,"`0_ϟN+;YMMC[ e891dG և/|+18KTAKfv^ϗ6!MQݳ׼эi\vy 'i -(!6FV\GR1 /0dI hq E,D~n=9 D 0C-vCKFmm'՞JfsT&vg#i3 GS̪Ʉ4M ѭ0Wȣob.Mкhs."_EN1ժl q=]a 2dҽ 9@ڭ~{/ 6u0n+svL^зgd%tn`/yϚ=̢$׆]ޔNXAg"/ou'X#T}>̘u]fV@pQppzƞ]FzkK?"}jQ IeG^@/$jެ}=Kz*/ܜ= v~ qKݏ@E P 0/r`rӚ,-:ˋr :bblT¬T[Xͤ;;VKC`{-e `/`y/"DcdLnW4zR[ q+}qy $Y2C zLQE O񎟗GuHtcSuX#iJ:V^o4?_5(/c7GyH(Bv 2@5FF;3 q0^d\MAϤ?ݝKg;I3 V(}Q+r䓼pP+"U|\>k/)P?xyӘX ݻOAzߑee6h9y)8ƅ.\ sP }"sMBc3wx[$G)*DZט}R$㝾v0Èan$Q v>Ȯ+mFݑ\;wP ֫mX37ӊCl,ZoOqN 췏"zYW]4a>li6t|brjow}O"*k`%L=~*yjIk($0>x{S#Ycߎ^Ց=Vc 76bɞɯC\0H0wDs>A@~UF/N+#fd #Pp,̾5ܴYxGЩr+077.XeJJ1TQy#P˩P3;H{ ܄~( R'ce+\S>ouȩ%`l*=62nh(˕t_:Yo$j O@oI'sIBq_;^uNC;hj#JNU%0IW.&O?K4,&0l&&íئe%Rped{#&[k]LbA-yLYi9)4"F6W{ų'k٢W>=M2&cn5>dqfnW / !`s9ըNDՔv1IEGrH>p2W'Lig:}$؁ќ^9=E=֒ӣ׃C6mvrʇ{;Z/MKhWyV7񍀦 toXZy<9A}jV $1I [B+lz bMkF.=XHc#`\Yf<r9X={^ޟtRFk3BJB_$kȥF5-ޝ^eEBTw^3DDf˖S]:J۲fm+y/IE9*\8ɳԌ.J0bɺ\؈9 ؉+4Bd7!ݔ~0S̬-axY` {Fnкiה\TvCpX:ıθ1ȹ\58MFSN7x j<%c~08nm[~> >!;R\yGW!b TA&]"2t绯@^)LohKG#!|{ęs DCD4&DTV*_)缼\1/y„ :=։lZ!Er6ur&9N$0L幩2+'4'p{1{~c{(_H`J|B\[[z~_j_sԎ6+;HJ>d؃`fLImf_WF9'ci VRkuo.NyRUo6"X *ieuiQPI7 ݨ<<&[pț'te[e[KN򵲎ŵlb\κ.%y1 )ml8Y!DΙAKoδK3+:/k5wd&8c0f1:dE ;kܩqec`^<0J I fc,tB ]nnLxJiJN蚅]`sxg{V:I sU`g{"t\Xa',:s*~;սrl$efTvUY93b>׶Bth7Ԑ Ȑ b [N2 Lᱏj mOН& 3Zۺ='¸WLc1J?2yew͞4=槸 3srB-v X3%$ȥj*KLD.a`6UeE%8*tud\le\(5uLU҅ wNUFW4ڰq4>)GF& pQilBZz{)mݠ$VK_4Hys)(ޥ@lVSf^.@O, ;.8 ]rv/+w?oP ~3g|hz\nӆQҩ!0a#%2ЇOt!sPSi,|3>;caJqw@9-[vs3CEQ@MNs3r+ΌjO-kF%}"n1q'@0M !$tRVらQ JZٹ'#%/r}V >3s28)$Ks;n?^i75ek>K-Ć@5NVe[ *62FJO ,TGM?01;@*/8jAK>3p( (+W:`è-INP ;1:K(fc4R6"z݄MqK@)0zAnݧ{iT,! -H>k{8<52,0_}CK /n׉,0$H/'8%az߽< Ű &@ՙ镱1rNIO , cƊ5*InS<*9Fzߟj7^T'ވs8<'$u`aɸ%6 q0#J)`k3bYQ_X7 #5ѽ ΊA"l%WYȍ,]!RsRmJ(V2C{SMѩox]/]IEFcb?JeO^I5 Ұ`bf8 "Ҋ iL0%FpTI)"eogGD!"h-$ѐZ8膫FU}d8E' @.^ms3Sx a@рg!3B.'c~vTF =(|.xmTӬ1`Y|Gx`r "*'<*@d/?Ab1̼Z&DE*" I!=EH$u(NyF\T3pK~>KjzIt\d+J~gE'Ne׍oe "}g1.TѳlqÄ'EsnUYPx5ܼj^! 2; F vC < zߜŠs=6h/YۄcC!kw?\_Cz$̹ !:cA2 ¡KjꧠgWt6Py>Pӌ2"E*Uqw60Օ4fz3':ɅYg,b*QwT 63u46RJ|~}gnoE%Σit󝥾r)u~i'/޿>~x{p*h8a?Qл@γK*0vS˧l32e:ӳ-=hiMcIZ~x8j^AK/eXc(FJLݤJJ9jHcZ! ;sHq+鋘`x:(Kѩxet0ec YV˃ͽ7If9Q ]DE${Ed\^&F$73tZp"h2G!!y1H ^7:b\@Hϓxֻo=rM+6lL3[`/bh#o3SV9T9.cªA]W^-btRkY^ӰƌzN.QsW5lWbh gLW" :Tqu'vv~{k1NYa@.IA+Y`dЌ|ȣŘ>y~o|:z i3 ]FƗs/f|H/V8s0U8a%6Vbg[TJWZ: 1RwWՈbdҠ(ߓmR/k+YɼD_.b7h^Ve^CxjfRV>)u:Jp~Օ;+Hm~MFsw!nwH'R' -ʠpS܆IU\"eqH"["M]@K>Uᗞ! {.+wHD^tg3{tZ =mY(MF,)\xJ * e~rHF,:"GfIHlOuvPb&nzWLlFBHt ^$ JlWLNΤ#% rz!=; 2W x3܏PFBIGw?=w_=5wZ}45E*=XX-5\ PnUgPr`, <߰JYҲ~2lRq5EӎoK`oKmdZn1SR *.Hˀr=8e2+yi}Fu(^aVJ`r7ށ)ڎF$ƪc"oOBvfr]H& >0! _|K_Qi%'óG)&ߺ K?#um:KM^JSQ2 M:y#}\JGXj۩܏蜻w!$@ 9 @  ӋZF~ [btaGINT*Y 3AJ($bL.NPe $g’aϱֵPckfvJ F;T*kg*UsH\`ɰp6Ssؐzdz V[y 1`Ƿ*D*̆fZU::rpr F3?5k5J&AU%3P='RPa"]{4#F>PsbQ.]1+ Ƿ j)ǶdWQ*vN@ќ*6GXJCc2-*Y,{R)"o go r+ Uj_rǻxMK`pnW|wm*R5τ {Cgi:X2n$#OA~R&g a B{8p4Tqnnn[ZhR#M%5YQkyN7GO{74k2!etJҋb[/?χ7G2,9c)^Ba)ئ%w!T3[-S}qu!ceyڋ ԗip6{ْzqNF/WN )'Bu/,^& z2]ܑe87~nmY̒o5>yw:I 9 Fb,M %Ƚw 1/@`D xکJhIlÏybPؼ 9`)AJgrk!y,4%C׊ޟ0z 1hx*&m/g&MZH;УdǗ)׼|yԠ%*-8׆}Ca%9o<祙+ƻTU$YZ%܀ {N~XMBō9>r=G8Iq|7GW %<^3a!0x& U"a^sDg^.-BeuV&J{'@|H,{Z;B(K$2̹0hC''eUu7= 'XuÇpqNwkwxYD=q6#6gkMX%L"ר8=!ʲ+\0)Hᶼ͐a#_ `gܟ7@>W"ҡMjលTo"hUxk#*5u/Zw($DkHK)E5VI3G?=6OحjPS}PC&(*fy| M3DKnRA^$;UQ/ Y̴X zwgL[{mE ьXS6ImVg1 ]Zqf$3rE`'Iu XKO98G·i*P riIԄǩuew8hFU'q(Xȣu2t#axQpoKM_qlVUf8SO'XP@e2 z{>z/!3X=E͊BFpaje]%9iT[J_ӿ{Ç:; 4zQо@P7zC] :|j:o`]b>2ȫi:r‡,Q܂[QvmV+̠2lI WP-/p^ k<k9?򞣄v2!@%qEW\ oknY]AFҗ:aǾy_%%!}NcwE5y&/̙ Qk~jzzTn(#I놵ڇ'G_>}S!d_fL[MÂ}YP2aUYQRieFMOHTEvc͍ HN Nϑ]nW/;9N]'lWGq/" ůI"Ni?P+y4oUǬml*qhKo f団4QT|N|=-kpDЗbJ1RYIQZ&&;ˏ;1j+gP/a iֈQ$c\  I޲=rAbpx?#ጔ)~cߚSMS/4 Ln¶;B7piN{U.nq6L^kAGꞢNr&qʠFW1Pd9wsiݘxDokEx%*J!9iP:FK Fv:%xԑW"J&ܫ2Pyy顏eTPY}:yUTE5 +O/߽$|~nXu'{eUjpQ4 v9kzO(33kI #1 ^wۢQ&quSF-&SY zesfhZk+>r@.K3J΂@r!HQ+^.mzGftǁ.NGc]mPJA (+å*pRYxWwicz&PGUw^ÛvuZq]7PUd"1c?l %^_yy YT]L!}vBb)wT)gФ7<]^3oՓנ !ah[Ai5r_ MV_]C!d*=}bT')V(MtVa8b'In*?\3QEUi/ qH7)έp,Qzn֔HL0bw% f#_:In!Que:o&Y>ZLo3 \[}GwjY]fInlH=dN[2ubN4XɨygSygVo`e|Ƅ=$Xگ6N6Vsv  =Z\Vˉ #ͬgdUClp:09H`,t^0.{/׻_u_U_F:Rk%0 m" MIEt+RVౚ;rR;]4@ǯբK׷C+?YrLOkRH9ȍqO0F@Q'" Q 4A-)կ&4J%V*C ) ͤ|r)_WRqh%2KwBWg˙pXPi t$3$ ~AC W[a~&#]qQD Õu"R C⛤'brbä@3OxΌm@M}XeB7F8欺O+Iy=$@zK%ų|z0) T2fͶΧ;u0R2ee-hkfЪ;Un΄V8"~1 )QLV8(^oA^_OC LP{Pʠ#PfL -V3\MDfRmвo|93MgJ)Mf80P@$;hq9EKŧcNUGq:Y"8ԗC2t=ràVP$vCbѕ)pr~"=ImUr]:|̵%9Hj؁f[p?>T)QLn;$1yFH9ؾOǭtIjA6 .fe2DݢTU4zZ3(]܆+&M 2@B'2.!&6*r"Ynp ;w8!^3Ym1pI?+嗿) |e[^Jڰd Ç>*@9ŦYK1ehMJÝYoc :;e{ACEU!LkA$ Θ~9VʢTa½ei!-I-DV&2Sdb) $!%$AqAmjMOҶ;dPBՔd$]mHKf+[USR8ɪSh2o*b&ZorCQzo4AØ_j4+yG|‚|z3ЗSU 4Fɺf`ߩapuHUл?dԡ`h ;%Dᅚrx( zM.eMMw](sPQ`kڶĂ+U'ko_>ݿl6jc H~,=ټZc -$ '鲒x/*B] i@W3 s$K yoceQ~L%-!aÂiYDl` m(߫\"{i$vp\lO t6Q'~N|3bQ gjB.>/p'5Ϡ3#2muuFGyRt$(-]k>wsynP.!y-G5YE3 sy9ZQ Jghծt0ɣ",>\W`-:%-/ {.w18t{\l1㙘-;ɘ֞6HC͑@z9SOyZk滛zP*$Wۦs.Xfɖ܄fϴNHeh2,EEX(ugxj"5ҞJN\q,Jt(iy[fo64,@\XKw⛍tnMw R\Ll8ǪV'(7^vX7 yh/ 9VP(`r/8mCtɞM+/d@3=fl Qu!>AG'KHď~MeC*rufPSP3!?/T<]k~*6OBPRd!F>'ڰY{sήUjv*+@!fvߦ(r O}'`Gp|KJ^HxUՒڏ.L01=&EU<جC8=̑&W?kz&Fj"{dfbYuZV} l=;ћY)=G\ 68@Bt+f:7ANvyDτiY5ڀ8HvuxsXByd P0\/:BNpojCD,D5WK8-n+B\#PxZHI46X*a_Jz(%)h? %wֲa ܵ9P׽ J}Ñ$0BcQӹri|3 #6K=B/"1QW#C^rV?撟= Nn#A&Py+&eu]ݖ^[h 0PqEҞ䎯_U+?%"a/1}Fޙ8V'ɣE!>>dMJSԹ+*}]f*^bԿ&^2s[cKS# &4SIFwʴ6l}*NLOƵu{KS%>I;?+6JՌd{F|_r://96x}r$0cĪ(?;!W^]ԨHsȮ=ȈELaç2pݱwcr4OiTK)6lgRFόpUUbPV,C<#o,OJϛ? Lb@ JHMX2 G>6$0l0t5AB1:uݯwo !E$ɰi&k] gl|hv{ݷLR_$(n=Ge~rZ8\U3e|˪saFm8Az%>s]. sj7:AKQKrZ%xg0ScF#0`|(Y ӰrPD)ZCㆥ}ʡqupegLm,=%ɣUE &}{րn 낵|`k{',}vr>̔S`ZQ<N^gLAnV ~vRIC>Tա #?aπqRz Vu~~xznVɈIJ-d9,K b|F7XcmXQư4U=*1=F-ɷGom*SjRraŔ ,!O2+jSTMY:`,`_BUBQ+wUL'+vD0$ƻ4pTTpU^fF6ʌFv)ZsS(ݔ\B^ _LKXȫ+k[(IMC]k4"*4{R>?m? rk+냨RWp$bΩ!ᶌmglsR&* XZ#+OoLEXс!\K4b ="Z(i㭏.<xM;].5NkȂY͵[1J /h -k1&0nH: dJ oGWՔ)1@샰\apBTrQZhJ :O)yx0D`\;K~bs#/٤2&}BY$'zU&w??M6pH/ r>i:M#~|?|lky4ȿ|n4 #ެiOIp(ἃ] c&D͠CC1#תJx=u=KJ]E,#ܣ!~>\ aaR#uQqs \7W..huu-r4*~ԢvnZa`ڨH Q1- SZKաb (swEn*:T h{sOw?<ǟKeQ~4uy޻li $wcI>''ɡX y.5+/1MM1eQ,HPzQED$PcCMߝ| >Ke!X:Wb&U1Pe ]҂>\P_}xJW\yf(C"LaUm m' iSPAq4j;nax,/U*}i\LF84#!PE'贗ww:fSJ*;0,_pǼ#1}>c_Z;0DBN!`~~+վ Ƕ~tO3?Zg14ڮ"LJ?}|7M] *E-eZ$ 1aq*U J d46$W)!P< ƃ&$(S0VONF^] #`\S6ʳ.%#;pѷ2aZn?{xӔvmWu-=oۭȳ֙bݘB>'XkzQY@A`3^_*YK ;@j[3f` ]]VrBXnfY8GYv~emR[.,>H3N"Q)SUUw*WHTF_]Ty3I}Q-7jR ݍ2 JA8a6EX7G^X*_}s"mQg.))~xvCUGǽ嘲@7 T)la4/DHkk7;  i^fIb \PoۻݏOYq݊  K`R3-Y>/`Aq^ZUbic91Q <ޫ h>9E:!$JQQ @|c39Սc]JO׹CO|Ff+V ϣ'+7{ ƛτO&JjBaB*%+54U1<@L² Cn|v0Vd3((rᤒ$J3$+w}qTHKڴeC3@ u)r\\-]ZVסO3p;^IWqI7s0g|c0$I"DpZzY0]y |T#V-"AS xe;uf&*90k eޫi.U=QoD/X؃|UEb 8u2>Fv70MҟqMNÙWVRuIUK[PP&g\ʩ }6Xȥv:ޔ I5:\KۡЂv{_k9ӞrMZr (-U+ 6HԜ$Lg4qK1Ib5eg T:m\O8M/%2kW'~} ̼렻TSTm`HKTTnZWljc)#84> 㦠Fek ÎEֆ_r"+ [*.30E|4. Q-36wvγ}5ݱ1&Hct3F *wCzRS]Dy1˄)  ߚ%  j6}_Y(dPhQk4{pf07fBjp{2 T2<]9cDb{j^v!Q8ם0B>rƴMdM[ikߌ jSJݙu [> y#>qE$^VROW,qKj@+U̡ٖ֩7Q^eLmy4]CUSiL0m ~ + ^)*iۋܒ=[l4lXryV- X *P 3EX\?޿EBN%ڃGf~6K =u0©v#Ķ2? W>d{C,|5.I[ko_:OylEȘYЛvh:uչ$taB n@Rgm&5 .vCWI#T0XJǸ?4[ʷ]ao>H SO y?ԭ%12E,Yp60uשֶNwqHԛw?}dpTtαZ}3JQT^H>! WDrϟze&34-tH8҅  ދR7M-*%v!I1h)w!1Wuri x lRRFv% Ab)~3/ k !]YӃ7{OOӪ, z-wAhZPT}qiZ^j,N&ظcBsZ!'W*%T}:!bԾ 1IV@58]VCpG!dpy/Iܪ,qdmՄ/ ϖTүվpu߁U5VM;L@1l{N6%i zBWX9vK'gO=~xxX *iJ 69Χ_& w6.6jbp\aHr8 -&: x[+᡻$+ -wMco z%9NFM+ &;0}ͫ!E 'F 9HJ RWp@dcտDpRI;nhxl|>ĞBRjQ1oOӨ)QfHbWB<~ۗ_=*"ȔL%ZW=%=-NƜȅ0?@RC,Ãc(&W߽O8!g;BD+-̔=QtHR$F?=? SaꈶE,VsԽTw|-cAˮ[NxjGK9/ O>!RȠ5컳E^˪.c kh+%V}T7#[*޶Ώܪ벪)'ܧ:.aiӫ> uIתp^" ~zhTmw,ZqJlW/NLneхdksl D^PEX a1Jc:@leћnםSETr08څ۪)/Ŀ4#ay-A5F? .N*2dB:8պr4 Ͽ<|^MqNݹ<3o{aImT6y߬ssv6_H'bSF2m9Gv\\u׸Wì0/4~,!9$ÑmJ7)/嶂AlH->9quJ06xktv :y웲_~<;AY.hV4{]J1)r-竹?[nE[jjy"D?UXS@h_ZߩC6u+U|AI5VwQh>X{lIW agGaPK_ƋDdž Q^boT֥cjE*K)a^EJ] _s[ڎ'woS)~7a=&`of]ɳj+ʍxD}΃N"H<Xu~KfL;K YjÓQd_T'xN*\dCUI6oꂋNV[WfxK)Ōv<8ѱ/jF,RD@0? /uǖu0`"xYoBs=w* \"ڣWP2Zƙ:꾈|Cg{$:5yκeۅNBe<3=7Nj#V1vsQ^FoSigq hc%#_/- &\0:Jhy8*=({c8dljH ʜ#;G ze c ͗TbYH&-Ug:``bmb;ld "5-:(+ y*4䌆H# -rUL" tY{ {^M<ݚ8ՙolUQRU sou(9\j`y]j K]j9 6leDymIq:%P(}YL@#՟֫`]-7d$v)&b! 6 s_ !m 5p]sZRiWn+ڤnil[#1D5fф٣!dT0] vènH7]7ڨӏ Xu) / k@I(M7AC?/WrݧyA)S#2Ȯ|ߌ6V?%`REoI{T4AWRJ7*Dn繒jdzXw; qꙏTO1%VM_}o#'TVWNxpRK1ށqخ) ᝳHc*y Li9[@K2w83FNJ3>\g>$lJhƌaAAyjG] +œqeդ~u@\2J~S2 ']F!$'rpt/ _?pm'kL*>[TRlr#ʪW*طz)*5B779I$puI;BYspqڙ:XnL7ˑ`e:3 7:KJe) ȅ EɉU c)t( "A&oȵDi+I( )N:rbO,%\i@8?l=޶W=誖#]ZE/GiPbR! 1 ~g:nU[ G \ 29sTeCbG/Fc%pc BmY9ѦfK^lo&;n`tq=ǼEnk! e=ɧ"ҁ@ o@TOx^T@bGZ)<,b%-΀qbt'}q:ה D w$7?oAԡk?OxW1?/+.L|I蔩e_Ժr`:+ULM}v\W!̐~8 $(x^xUedzlo5}/UF$R1z(QѫW3LH;GM"oDcSXX95jVF2MG,6ILUf-?E1]BMg+*~ߔi"қyLg~t0DmծI*yfccЫ `P;~E~G ZܪByFkqoe Զ)+{xO iusx!=]iKT㲶y+xn~($6Ĉ%KQ$śEqSxqٹ\v.)`huD]>_ Et˻vU4A;0&iv-7R{۸x1\V[Y 2pvU14r* $u~$5|f;‚KB (ryRHEĺ<{%bo =BcVSj3CjGG@ش!ʨO矡| F 1ix2?asM9dTE01tӄY@Y =4+vU tFyi$/VͬQnVt$*[ʹRݯ vvQ(6ز$$GO-J=|c楹PXBt2=)_azO5tup`yG$P8[΂j~l}!>Fu$;I #lM Zfʹ0Kɠ}>儹 @STu[zO}تS. C_1T,e$ Z+K Rτ_{JC  7t\ÖKy+P.䠙jX͍M[!@[13lJbu&ΟG-pjV H ko<>}Z*nJ0SCt:+8j LPd/krmTgo~]}6/ 1׃(VQTmo|O'9ytŐax "?,prΛ=+7x%FW>xiLtJYd=3J<ӈ{$?ՁYU"rNN~@4fӌ^G5A˯{ih m:Fʾ 6gf? (c!.uyCk-Nra9­*uNZ%7gaf5cۆO M(; y :=!S&>Ikn#1ȉRxmrCZRCTu7rpWo'«˼o UK)um86Hk&WM N3EUzj0!V p7ְ.LxU[\3cJK$.fU 4%# 6 RMe%\g{8U tNF%DuN^/NAgL./OWVx-)Q#P- W~pߞ>~,}z( b[1M;:P gȮ杩1z^~5BDUu]4Gi$ra!MbEx%<IGiX#/I>cLCn/xy*9S2T3&nwr;*S;}#=fmq q#S_ V3MaIo@`͵L4tb]~Ҩlϐ$uqbj +V:gV/fz%x0mÌ|Nѯ=%Nc ugЩjM_Twwyl /5](1y|( @m^_A&vObyb\uCcj3@C'EɨkFv=hz-蔑04@a1{O78gYMIK̳?SV3Y:zT]nBлrAJ ޘe~4d] ?|ǹ2cQ<o_Qbj )Rըx ~Q5蒽!Mi){` :P(( ;Hp>v@JWDwTX3bTÓh))]a>.v2_Z\X-k@2"^G-u3U'#\T)ݼ{=|: ,/QҶ[Gtnu33"{5ZSzo{z-RFʬgݿ *dStR峵=KyPWh+tb4hJ!nXi3l-fa_ZWRޚmO3.u*~ÀP WIʳ+un>¾ )j!6%s[eآ 43^A&O^J0A2$Puϻ 8z_r(+ 5rSMV; <$@ɥB0 hoR#OMvv*Mdnb8!1b9o]uԙ RXW\9}F616]Yj12xLYp?qoJ0ʌ:sMmRʮWaUGf]pb:tÿF X,&,J*A]obb½6+w1M&fOsJgP^w_:%Kn~eFk)T,nߥk.G [oLketM?S o3Y5gP~&ұ'Yn@D~j$yI!lt%"EroR8an,!uR"?P󺤆Yɼ^O f Ԉ-#r?pgQܔD5"+U9#dt_^NJah|bR} !5`Hr!z@?:sS;Fu)_Xd^'(`W'yZWwg_AGD %vi^SLsWC@$ޥ ʥbpdZ6Յd D>mo0=W] 96R!G7MW SJd c%p"(7_%۽c 3饐^qן8 KZ.jIW$>qS*NZXQ}v ?H"wL\#`bSu|+)^Rkm?=I[0Wbˢ_Tmg%[PV!DB%̰48yl05K rW7!ڎq^RН}t3Me)-^uU^4Mm /2~^DV'FUnVK1Ϟf|ޓչV7׈+&2S;)OtRdTgI,^ Y(&ҷ+k&Zёfo*Gۇ? wFsAg P]Ve;k3~ ckr}|A3 RsZ ^繣עfy}hY')wP&^jrȱ++kYJg7kYv>0Z(r)BJFaBwAmu(#3$C8X`! Ž?vGXR $~N!63^;PUٶʿ?;AlZ):,`_wktv`u,e ~\x+Fơbcy(n/ ȨkCt*9{QY!W2,:ʼnӒYjQŒCzB"P?w6 w !?܂]_e+(/_9M~D"t]3y^Qy}UaRAuNKjWiJL5-c휶=d㚇P*:eӚBK-W6Kϗjœ]°Bj$ŅBlJ|ÐF:nWDu툦ʟ@ X-yr3rz @Y:鿝?QT2+TEX ?uX?2û1t7o[c8Eb!`rCqQo 4R3"%(ΰ2TrfQu |٢|p?1kuADAda7bjX;W#Q66~u? #fmO:/g_ "LG5ʹDJ<ЮM o f4CEwRI *F::%O/>k'pISF#ARʁZ$\,K380lk1| r$Ik,6eV'ѱgy` "ѬPKU42qWI~BZJ:qΥ ZA"Rړ!P5ɢ Hfx [+ vT5iEFU_f_hxT\]  {Q4Tt`wQ U\n*oImsB[R[hʔtSN|r-0RXGy˃0PϕF -;@ùSH#+ռ,۾﹍i 6L2󉎈(W1en[5Oh͈. cy/^T8jׁUcKE=C=}#^gODKV'jUyZ.ʳWـO? :]Tvc"=cuMcS‡^;()QV0\ > Y8;29tnۖjS UoZidtר`=smyp$k_ڮ`Z߼nn"~Xۂ-, Ԥ 5W抙pE_? ER[ΩzIIAG`$6$iA)9 经qRu58B+J[məS%[ֺ%\Xʍ؏>t?dP:Q#JT/ Q:fPA!> Z\gWłmku )w  -Bij. R" Խ_~^ˇf;O ?g]tPweE'=_Z1v`zM& ',p7U"gJYYJɖmN@8LPZUgѹJ,mK6@ׇJo;85E;j\Оi1:!8 lI\{.2g6 *nt@V@, R\ n@ խb GCG d rKؑC%8.hhE'* uُW+73 x>9O꽾+KA 5b)5N'Q۩O\j޼JBZkZ*1ˈRjtH~ϮtPځ8< eWXQ[xKQUS=p)]h7+(+EGܟ{fsSXkQ0+\= Ju!-eUK*_\rGQCiVDhKcĊ@NN779Muf@~E#rVy^;4+)ofoU$Npe@ U 9O AUw+}-~;D(/6 NAw}U`?s>CJ*(QLB(qP͌wǞQ^1Xd@B0'Ge4g":ۘɝ6-b9j(y^کܒ~6sV$3tFewAΊ~Gn'>PݯwD䲲"E.V4dJ2A\rRmL.hPy#}mGSB2x= =EߣԗI7h9먮YyL'l\ԫ!njVc|8gI%U˦@Qa s^kwj擕؝"$)wgG:RQEM!csbrw)nz `k0LyrrKmjÕ#dA"d0Vl2ε4-S CHF"ZhK\ 1 oFg%)EߤYrE B8c3(m)A NetC)jZpģ/X$Ţ3M˜&Œ89j璨a葮KbVe^ [wª{e(зכHpY=[7瀇*ʟ܋sLr΅VEA^NjF=I)b$$%KrC_- :/eE BTJPFh$H$u0 @On(FA/pA{J҉ ]A 3Ť{F;iMi*P1zӾ`Y.1#[0Ēds0>vPllH#g5o&*#g祅H&m-I$,~˫AU]_^qМdA tn3rQ2 ?e ;k+/:}??(Pw,cժdyN(ݬ8 x+yf1g/rBFrͪb}3zٛkvYy: cF6 [oT'>1}=F I 8:YGH^UiUI3E^n[;HzR*Oz=ć6Sk)ەelUj AVuؘU'JU#R"|i@eQר( 4bsL8*;$\3t@aY;ŋb~#G (RDd#VTxugwl@gƩ&iiH~r)XbM膹aJF?dH5oi)#zrt8&u|+ Kbn=^F zP8 WL3Y8|M2('@xEp%("JŋcV 88ˠ< HďY}CxT(7n5QuURw))Z6ȽE.? I\.dow?7iLD3fA,fDV#f7I $ ;J,9)XN&<~&K@ރ}hI7FeQ+"9ELceڗN *OZԻdC? Rz+K ~N*F1kw 1DHh5[Wx9-ΪApCJ)݂/]oczu*\ƈ_LVn0sF9#yI ͘B>| %CQ ˜Ml~P[d0qH]lo2-(GC?;lw6J~-ɨ]Hrç?ލW9K it$YɬEFAJʣxi˃si)J1TT'Bjh)@Q;kfe:ۈTrgzrmmC$Ս:Kie1_hm?P{b盇ͧS'E=x+aqz+ (//fuFA99U4FcW:.D,yR6E1S ϰm""(ydɳu,ՌoWi:}ԏL](Qߩ:D@l/U^/E N@wf 1K^5SG1'@QQ2}sq`(–]vPP'\*]™0ӳ@ Ju/dY]5'IXQ%C'HZБWdB8CugcQQf_ KLiU8]ya̩*Yݍbi$u p1a 3 >AR,P#FveY|Ur FXwh9 h=ZD&2% u?f3k,̆< [80ƂIIj3'n@)+IJH)/8pۻw_ėwy[ g`+5~**1 IȬT M1YgZK)Cdi4ոl_rQՁO/RDƛLR8ad18 rNw9u&Ձݣ=X"?`).maƴL +ͫ (o, ow%Ϋ.])oVCE^F/]>-cڷkٝɻ#Z*Y%.mK-_L[>zETT+yi?~8H *ERy3ݶn#` R6OF:)+7g4%.$/)OYbvBӨj9O ;T:6zVqؕAy06>f ;)sW]3T$gVK3v3)UNz?{$~ܞ<(AD63vkV. ?2)PԘ4)(: ős̈́Vm-VjV>h8%ɳ%%6Ek]'R򏉫+!2+$4`̛U ׮ܷX0QZ<&j1]/ -ppЖR6 U:"t I#jzyNt/V5'!u@.cvx<g#q(о (_n %]i| 1X',c Z-OZy)ekF\}2I=o4V1 WN$yſ+z.y 4>fJ\%eUX.AO͍ +u3clDq#h?2u l7ޔL/UtI݊sM'ɨ",C [epg}x=d*T*v9ۧ}뙐!xI{&%B\'vIo]E^+"qg?Qo,BqT/v#UQ 8 S Eq',; ^)F>kv\4;$Y!zu+ ˓/q?FrQAYZ8cE`d!u m~f[;|(sI|F::LwZ(A^iNa EbOt0vFgxT)Toʴț:Ş${ONyHnIX~@lz=*[i%:MoJ/Ai?na)9mx_>0 9t .W>gjiV*;xj$]{*g)t!PH0aoHx>;w~v˧hvtĹTfѥI azX¿bݍbdE|0IifbI 9)r@P,[wSڋz3) q7C9@l7e=rgQa;/-SZ]D+BApUʪLg5HZQ̃}p*: y[4Im׍Il>gM]v_>m؊;=ʇ:P݁ò՚au4ݐQj$ u8NPM6TSmA1! !i۱0S;EZ9a 9uݟȲ5sKRQGY]f9ԥ6KnX:@l!z'UD^T5} @dC0*S^\lBXGį ?>x"˝1X1eP^ô^n\Z{RWcwIe<6I0a%SYU/&x+!eVlXa7Ö}XTBڭNJJE`|fnO 7XU$oqB=lWUk;r6K}ns>\p(&7OQ e.6Y}yN)@Kth$lj~|V޻ I1a^ƒHGӰdXGO:'dfXUotoÇim&y'>Ĝ:eN25Ui *.p -, AB@gYw>9qZ)-QcC?os} )D^747:)J jJzRlݍʠ/P)hdQb57{lTktZY]{ S= ?b!l%v2Sg{"YG< *?pT{!HV*2ļdIS\л'+U29Lb+UiY1/ͬ[,+; Pq)eO=Rd 3ĖsMesH4Ĥ,l&y3  -w``)J p @iua=[QLMh!.L/ʑ&,+һ |C܀2p!RXfg*FDhI7|Գx0Gkڼ@Hˌ 1I/-CfPI||z_,\=K"Dڶ[C6r6%9:]3Q5:-`|4AgQez-f}OLw嚴[c ?98e*جwSLgƩ*aTt_!KIl-4XZ&mfcBf)Ή(TWg-0Kv؊PƮR%H.y@?^\ݗ2,b`g$#U5hT>%^JH<ߌڄk/bԾ?pILRc./6)s 4ڨҹWE u &.! 8ʽ^mP$Kg8Jx]ffzK/kU<X|+q7w˜Q%<(r@\{O «`yܹs$,[De*:@;2ؒ%sK-$].[[v=RެC%Q_ inఞIiqs׍Cr&[M:)JfcyzN%Vhdș̳SrS6@F#kf"Mõ9/VM_ѧ&DA?4ӢiLΰpHV:R^̸֊hGIC<)s΢%0e <: %&+9e*2I@ )7ߛSvP䞩Pz-1_Rp x)mR&i_|KAŸ7:ֻ>L=vkkcϣDZ$f<hN baoW5B$LjJROxoܳ׳J5 PbGIlNTpS"ܼڔ[/G)5oVҠH,#'4-B1aqV 8Ѩ3 1!x܆̏ .i3+c-Q-L23eI!)5t_䄸NS- KǍE2wNmq vЛcuo Ԋn)]$/w+,PTFf5FY2jo?QK++&G+^"-hZPMfI :cC8oT Z5Nl{?8g3?mR`] AuWv> fzZ ]-DںUHl cehMaP 2R85t. .!=G`ai|[hp0J'zra"0T5 K8eId^}(Oeq<n7GY"`S,ZƥMҴQ[ 9 \_!EyW)Eә*C;ei<+U|<0ԙֹ'W'RƇt>p`Z {$ȅKb{u 2f|oe 8B+5%ki]4^G[uCgY r-cy enϩ3(54t) ̓'>!vtAdߍ ~S1\24hg=S}u 6G|OòtI& j]ѱ^iKg˵WQ8;SP' Mخx_TRiY:H>1M+-ᠨ^QJ/0J' 0Ee 8X9#1)u]qr 8/ VZԚ#JHM7isx :(^!.fat-J'Lzir,3TU UίÏ ،.M`l7'I8}emRcUc $٠5i]k9h_Ńn׼|{wt!\ 029E}H >{@ptT'F}J@\G֪I93(?y<_ֻYN27B"VfC\&%T1K!dn;ɌuW$*γ+ T[%3\rF4; `+EyLsW"͈ȱ еN M%hb`Gϐdu4:tIoX}i|Q[?{e~PU6jIa ]q ԸQpJxSo:0\qa)괳٘61iIIk`IeZЄPSຘ3O{5UjCB0_)FD)kUyڈnzoכWl0GzVNSZ$ƲPD%3Ͻ|:=v,mcǸܝtBR\/ˆOh\v cS/a| tgrL\o҈'.?ZIHtjgL)tdDhXpĮ+E4tL j;J`UŪEs&"RV0M~iG[xfT`y%˵0K(`O23hޮ2A`q0!敞HUM}.Hٍr|  } r@JVUVʯ brL!XDfݐe^`-ZX}շp]'AgZ- >q! RQaɽxyېrv]o@:K}`Һ⏀ڍ.a}OG;a(bUEɺX@-\>嘍j9%V9^- ! ^ԛxԕ!D̹b7CL> els>w_%xV;-N쯪&J|tu%'{S jtJw<fjw3QSNA׋buY C癎Wm٤' $DLy@w_Q;ƾYǻҞZHqbnm[, O yRo &>CqQujS%#/Hmyev8!:22c/d:e^-wm:=*^9R%'oY7#b39l5fwX-ﰻ$TdC. 8x:$A:+?~Pfct\Q`,XW&ͨ`a!8TS&?(fD$)3?ӾZJ.ز8NQ[%۬ G{tq;1Qi/fC/gjǃr:ɢʲ#%è% ~7 O>~9YLmqĆDNW@#C[) ށSx? zV.]DO&^sYa & nH||Ͱ!˸AC^V<`H(HE"Q>ӌ}6L>9*bBg[y|BϏ*wĻ *i/Vi +LsO%l~uؚKI_-'# O'TvcƓɞ ey.hY\DcAw>&rI="sz?uDбT9bgc VϮn"O[خenH"q a,jjr9$Wmk |X3@(EąSKG4YY:JB1NC|fp8}.l5JWr'N: %28zR{30^ 4 M4IzO_oh2iC~;C)e%6m~TKv Ad O<ƎHTUF޼TFw[ Q&è  11 {rJTl'JzNSZ-[PL@v\$ijRyrPtO7 z8oY:+ehWc F1S @Ԫq<@}`BzTLl {&´[ؚl»DvuDػrjЊHoZjVԬJUaUYJ$~>]|(Mq?=NWh;O9"KD:9 A]<Ԉ%$skbQϨy?w3Yo8RĨ[JDw8%$&b2:wI:(R`)mtgD}h,͟=vU1NV]tQ4jVhIӎtq*H67ìcUMLQAOjetD$"{~lVZ0J, o֌}n t*;RTm0Mū<$d/>(UaeH1Eg {dKҗ@ŘC,m&ajp+zoW> G\$Hlh!]>_j0?^O rW򴽡ZFa& Iַ^rΊω~MȨ7̬wc4 !a\njRi2h$bȯIz~/rrjWé}jE,y#(1_~hq0hgleerUKRjn;iĵ`m7uraauGz:h5?t,$:7Va eЃ&qr|Yh9𵹖v^9E: uO7@C A֎ Sg2!y5uxv&i$C2\DHΓǩM\ Őօ kDK@ EsLWnC#6?ccPn ,"s}Aov"Uoln{|ߕ+aXP {Aj90sCgM$תg 9M'WC!/i{J>|'ޱ]bJ `YcLV!qתu):l%7Jro#R{Z+xw2lШ58rH( `ぃ,(B#](_ye@J N>6+5<M *:cAkcL2څp \Y#f-5Gӗ}M/EFv: ԲRX~nVQxF)BF=ϨX{r۶9o bqsIqvC%*m7yi[bv^ui"E.ע+$vXW8<9uX̊T]FTk/"2XC7%xvQټK&蚩6 ZQC4|ӯ3ui0 6=`W>NJ,kϿrtm}:*zQ6EpH6 ,#_]t)y<5ɗ/R1*.- 1V ٱbU/6^@T#֫Ip1TBY5R+XdX/PֵR[8jz]YZ\ZUPA^+ LIG9ZF -5)k xF&^a՜VV$"rl0pܻ)*" Y-lQK^-bTdl6k-Y{{{:K5 Rgj Fm蛢4PP[; PXu.M94 [^>ZB=%YW\JUũJ\Kyi@{/WO tQ9u4USg׭GKzQB-#"BQaV0ܹ^6B.`Á y85tӁZXq$eיەM5Z V7wWԮIct]//GIqx7 D ]ֵqRх,s+UJׄ$뗄,A3fD.%{I8uvOYnM{"7kOIV\H*Ƭ_{QxZ_C !Rr @5I8fy)WP2lq+WJn,u\m8C jϗ4fFЭ,aT?]墀f,қb_gV37v/qH4D8xW\dü97yj CEC&o^Xbm;10E$rOՍ2[Pd)t^@\fuQ3zSu*;wM$4 ?E94p03uT-CBRЛNP"H*;Q'mp U[m1 y6ɉRrg%,8Q+2Q`jtr3[&_wftp D!){ IiyRJ ,1}]W\vg&5밀gF ܵ/$XTy 4*jO%Pǀ;ʷf:}qx*~jVJ[DlC豧K'N%)8Mj2Oz {ٖLSqM_*`CY֤2DJ^JܗD{x;3{ln]z N̙-jRsIʥY o|n*]~3˷2,7^ vpujaqVYr)ѷH<3*FU:ӓ fYuNBЩ F@TSt)2j4]EsG0`FYVIR[;w7@!zF_?|M}jnE*`Ȭ;@RSQB03Jw.A `lggVLy!A|$$gsO?=<|\'5lDoNoߘYA,Ү~] 2s (m'HNbJ_䙨ض{dWUedzJ.8d6qq'MFÏxMK3.(]'\`26zv8MO;}j\fIWTy(ѣH. Ow=YP.m1-N. X'cu+=Ñk!/'YPݟmv:^H%!adfpE*If)_ YQC,F9;>KU5J `v[C~Oe?Tm /vF2} ܬ4oؐIc 6/R7"fcSf)L-40_S]xN r#K1u?3FAȇ*<''ߟ LYV\e1|(+f@:B8lyD?ZRHD#Z;ڶfg*t1n k|aKsgnysoeYȫ"䠚䫌i2d[N)a~cK#_ `!p oR>h3][39j̳> a-UGN]ǫJ= ծk}u̻t<01 UZBSR/1W+ N3 7~f˜ H  J*&,CjuI‚l3nA/lfIAٺ.l!¤-rN/=kc~/O??x ~4\t4#d)SEݖCqCTnLp/ 1W]KgLdXº,c2mtJU\Q+ȟff$s P SnMץB6OGNi%CJ2ql=7PNZ Ii& RvۍqbC0ANĴ(E Yؖ'g 7ĈTY91V"$`x%0 =+F,B6 2q)bT$~BMz(Ԧ<YpY]M܅y$UR'HzLZtԯ^o={ڪ#[,LQzR[<)npco4Ң@DȏsZU} a*Iݔ|Yh0yܥA;#i\]ϑ.iNӇe.f)^ncYHvLjЇ.Gr|Nzx<̅9 \L<ԕF/֧Da +CD 3ѩvѸyPE|Oe4쬒d @w*r&ys}Zh.Kꈕ{Ԙ޳HX5JMeY=GnNF)t9S16K^K[tިd?iZ$^%왨heǻM:=#EXfAqJi#·n!Vrf٫YsxAS{˹>1U&fCQqWղ(O/bGy9)G7U*'JNXc4zRDA]%MYpq{WuZ-@MSh!0UJ KUDPA)Jk`e,,AEBb2UϺ],X$ s߫((<KbNhV P090%to&}v*JUH4 Biwثl稽djH+¨0۾FT_j8(10 wwR}piZ_c/ı)23KʒڠO"Ghn^3S*fqb3NIv=-1~UUjuN)JZ;4kl^i$̰G=u.zz)le$wT Bp5.]G<K %|eDnU˻L[of(*͑TXrذR:G]ۙ~n-W>g/CI4/J%OPBw~8: ?'@{nqDor DꛁLCu(Sdm abv%: 㩛iVG Q&*;B M` BBT9IJx.*@`]djs|]K69n`I'ÇӐBn%}(7B+չ'7^j6("x*S)zhNT2%9IE~x;K8"/Uu"L+c94B&O[uE*iKPiE:.3eL93ɨ T_6KUc]W F>4 s͍CEA8dQFbY Hs(\38SjyE/{ΫUQF6Na =.C+`8x4Imz7ݝ4)rP"Ȯ/P-;?I/K/ @F"UR,f~P}5tfee rWꎻHy\~A+٤FޜVR#D :7yGedZ E'o>b>giXfI,.i1 mލ~:(dlȱq7 d:ZL@ʘÀد2 MW<@Cs@ -Yi6D9[tǮIN'Ɛ0rz="@=V!3({,bc}`nϊ2Z$iBH }\'>SmD10@޵]Q65CݎT t$]Q"Ǡ[A=9\z-;u]OR!ArT7wМU=`Ձؽ _){1θC-P)17"IR9H%AU΅G=|G)gA.c%$:woY(][RLz0: ҧF= a(X!nj0]2Gqn&Ew ^6]H;tϗuؓCi^$5э w=݈'|g>(|%UwaiRT>>;b tZƖ!g-h%GȾRVJggvoΰAV<2ȔQ al[/17Ed\)yB\查kzHhw\F`6_>45}q?hqC/.kt ZOh/}xNGft=$+Hc`v7z&r.`rHTF[%\̸39I.7p4cH:> Eq}߻18d q3y .Fm>Tyx)mlϊ<0UT9U?7!z}JW3' E=#&yT3E-9bC^^r#/F$ ᙒQg[9 ?l5 '圜 { KqA?gvP]2LTq,W Ϳq8N2FWFR޼NF EUfP*+'urT1ȪpfR9UEPwaN_r5~.]E®TXКy Xj&)#]3=|B~CzEjuPftIgW-<ƣ~bN>vuX.iZe]oF͚q-߫G%S/KVVśSnW‚8;u.!&M"%oc˃-^ y10hm9db&:콘Yx=KU{eV'`XP&ؤ)ѕp*x{'Ut%4/ܱ1|vh$FԨh)A-2OqF 5tk㝔FrtYsQ 4*8H2A [5K7p3XcZ"u4˳pbd< N4[/%9*(3L;d9F3)6Ϫ3c:P4ES(Mw%evq*?҅6NZE&ΑL4dJÂfiv@W6r!e͟$\R)ejHXWf4ifttH =e"j7dאg[Ό/duDJ )!FjQQHoU:Ơ5s V;^_VaEښ}\I" R$/Mik)f&95xJF >ĽV.A[畫 ׋zpc'?C-C"\˨d,eG_9p  #RHu;.i `:K»Ȃ{S48rB2tik1=wC)9e-qxq/P!E(+OP~3$ CIV, = u[_vp-7D.tBP%+dɳuHD,.. ANUrkc>ε?x͙G%$KAirJ~-{806#XL=V{\I/^egE_aZ|Juf+7dy[R1ȕS%ϲ(peLꪼfYwa:b  }X5H*㑂z-q b:>p.Hwz83 mШ tj/8ѢCBǸJz@ D S*H1B;sWpSb- mwCLZ&D0j˱zr}0dp.!TG]fH&as1 %̡|B ;=G/xTa(5leU"fKA=N9c>w+jDWWY,1_61-QMzQ1KP~q/:S:} [us}-] 24\kZP.YY2G$3GOF t ҏydTpJƒO+[%WFV۱ۇtO:6iDt6Eg7 _󮑂؄8Tt %?NƢ'̀MPTG*ݺKh)Uܗpmt"N[r/LJн:Wun Õ% y'z`ޑ1ԕH€p.yY J/gzrѠ ZUoR+n"[WvCoɱH FHeGw_z7EZ/_*\ffϿjg̈zI>ԄhU:]H]bălHpD>qd4G–E\ʷ.΢?<>Iv绺5kl{yhW1Kj|C'Lz#969$"~7e9!DÐT>n]* E4PB( !8 Y˧۬c$&gޕV=Z: HihG .KR-ׄ Q &+>=~X I~'˰Ȧr0j (9K+adQUHP{_Uo0٣"Ab /EO;~(bvC9FSXWhd#Ң+d!U_uF귎fb0۴LևJh 8hOH>D^:8"[_UMR_ǻ_H;N}AtI2N֣T{E@hN褓QuűeGes:|u<#oqtj i$37(i`gFI?%}G8XPXwmDs7+Stč0elijߢP یO-e܌!KWX!fS[er[ N( 壻S!$6fZٟ͎FI;bFiZ{mD`yWaL'4)6hԠ P5^\Toעϯ%EN!t4rƤl(:<%8ի{'Gڜ$H5ޒ1y;};n\rP w8f U@MpN@6WI뢜Y] : fڅAc ϸm؏#f5?dmpTa! _SwPΪL7>~/3)aՠJu4H" .9sQQ ($_@$u@<=~7agqImbی qcwHXvQa_'8jGU*< |=`WbT?+vrcp]96cIݗpymL$cNUi)lQ u|4ED=j+E𛔳OWKFe;w8;gvόY)YY ,ρ+SהGEjr$utP%O/pZk!`1#; uO79̓bka4k8HͲ/Z?1mATPPK TH!FA4?iG2PRiaAax+Dl%F1&o+BZ0p C2Vd=Cp;a<*Mő`h~_NiR h#:\ ہ͟q3Qzh p:X-;}m iZF K/g$gjI-6u6p|:~K!rBիދ@\.%I7.sM.B lJꝏp=_9Ju 8m^Bp"M罚/}4%o{KȺ6rRR 4Fq~Aۻ܎ KLh-ɧ #޵CMJpvVA&E˚>IrH499=&E"|*[ %}q!'[P!lN: Tİ0^ G8ѰCLenH?hMչR7]=FŻ Hi0+ݭ`<@2#{ oͧwQ= 7yFIe5mGeˋ= 䌊R`2i SvJG.UjݩUJDi/frx66%?$M0v4-qOF:#PIiȭU,-w7K}Kgc}`֎TpZGuӛ/~#v!I,~#"<NX&#j+edQ<:&)hIX#Mk\]Hp^P_d&*94`"Iƅe 6fps`lJ mmLJ;!-l!W~? MUh:x'}o;,&I63w\n mӷP9&s|a \msWbsn,j&Ur\8hUv.F3Dz%2ʨ"AsN -D{I/U--7z+5DNW,}aVsЬ:-mdT.!~^kGO0Hn({}N+X6kjsr+g;|8=`ԽF E|+g#?7m96ĖHcf] y,cjs"]Rz1ki`urypr:}0w`;ɅƩx|PK]J/é0Vu7,S:8THtq[qg]k*K-9D [pFEwW=oօpo8Ҡ{ +8hPeʅ +r69U-4Y ٹLWy0CJa+| q7qduMLv\` VSAʑ9WpM ZHr]qln< e&ŝwr?>#f)$ uf*w}(W>Gđ,Dv{!$ouȒ֝ EPa;Nˆޗi{>ȅ /bf ;,݁iR8i0{=>HpE^FnzA,Ev? Fx*q^I:O/ dg :..+O>/㤫q3 9;7K.1MѶmiK&;'eMT}uNa,ORl@T%eYT LBLT/ڸXp6SEZnF$ œD) W%ؒ$bƴ1N)łAZAH|Y:-x4y|4Z݂#Fu*0&R:=grHY:fGg2]׿t._yd+Ef*{/70 5R1`thl'5mF%qgDŵ |yq2&=2)):TކCĕ Bl+[ANx^m^}5R 0Ԧ;ȥhJM[,{LRCV<0D ɎCǿ hOf='3 -X},%bK)Q+hvd;q|V!ײs.ydZa 0|NUgV|RqV;MFkE^On\9^mhTQdN\R*FꈬG(nƷ=(6 k,y ;XFRB%eV報+Q5b7_>G>O]ŽytJb8-%Û^ڡE!G,i/A!UK. ߣ DOjBԡ0] WEKCuO CάyuK(N d]W.Bᵂ14K̓ə]Coq01(ECDDfQ n1aKZߌwݥ tQtDtO& SIcRjhKoJN$^T挤/f{ƅ~YU칪a{/eMT<OJ~ɝzwXYk%M)]atc[pv# jI ,2bOG4xpq"KȺN10/\A_ 11#[4v;!2#r7y3 F#NEWz 3tGJcڠ6{zKk |iS1 : iZjr>U0ȂW4F(qJ>+ḰV*vFXa.jOڎ{ -U:lҬФtd#ZPOFq^3S\#݋1(U$CJzQƿ]ѧ0¤y>Μl%HZ\)jj~჆IȃFI-dYIL!|+`]O'7Su>[ap"gp:uAdۘ/NZ2"H/DuX΄5ȃ;!geg0I}l!"7yt?^O1eojT'~^(Q\N M E!zܻF:Vwe7:xIƹQ:3|78`IngAݹ+5"KtY 1 '$tjiF&(8kybVނ98cW 2'E|_-C v0Ztv^8j18.bBf92 Y)uA"<[*p:黽 pL||>#C>g+Q muI|VADb *<è~\I5:-߲[TeI4)=MߤDp6~;Jxl%$ =MtH˽sʦwvc@8gBS4>L3 03#DMOE5Xij.Tp Uڢh;1I~=ߜi_~x|:vY)ԓg`L]0C(?A$%O$SyjSJ»L (z%%Ԑ0Eʳw]% €"Gd( Rҙe,1n܎Vڅ??W|A>kfs ̗,Pg<}]hvJse؝yQ.; :aAo5h5XRVM ṿeM sZtI gM]k['3;+<ʅ{~ʅc5#չeꋴG#*崚,3CE&ފԥN$'>aݠ>#wB6K9y4:D;pj؍4hx' f-:w̧yI:;me)0{C.qP؞ވN$tJXP( &{FhLMapԞơpCws=O - b~\/ɧСW*Yi*!kS&5Q-Pi{Kau "4g51%DOb+܉a8fZiR܊3'5Y_Sp+ު$ADb*hX*ZN<BV z3< BO[fJrUPOrC} 2eꍲBOaٗKDGRByz3 ;$tp^o_>qǗ,ɡ".?ģ}Z_{xZNk57GE2]\D"(m%yQF+ P GBg/ gWEh QڼE- V)-#"w?fېe(YHqaZG?F"q/2FڎFkjl?wJwte.mȶ{ϓ* j9F| 8na͑ SmvEX7߉XU0 CW >:#<ǥ@+o:@]uкy+VR0cRzjr1^u=J$`]X6_wM7ZI[3%뤴Zj,+>tȦl|N%Q^\]=c[T5╨$}\gvܡi, u P2knOMc(ZU "/-FwC |Tdf Rr>"=#4 t<.wY`"ꠍ=Kv"n@IRkh,AN"0,T[nU"!_RxnyÚY3NIѷa E9ОKIɅ X"$S6- j7zrxQLYRHjS'ᡨ@?wASbNBAA+hxݒY@tů[:GJ@G^n4%~ٔ# Kp}e<VQ6WT JfHtdt,_jC)iS7b=&^THl%^CׇDllV,No{ U~ǧg\2ҝ08;\:{[0RlYP"{VZvnI[?%}#8G`T5AMMV |]%,_7 ,i4h 9LDi9lgPm- mx> eJAnGU%볮 +[p¼|D|TNbOj9/c`v0yуIt=4m(b银#q\3X>yWdnA9DgʱʷU @.:7ȳK5UB1*P.gK\tMj.ySej^9|uP_0%Ql|S-OO~A՟_d)$N!Y˜L "eDFJ6_;SF8]lj)'J1\h'I&0tȴTraTyyTl%ŰQTa} ;Vu! ɣ1kA"jT06H6Ɛ'2VOVʳCf4D̕ekg!ރN6$ ܱF иgS^v&%NR-ig8U5cL910eC0 GCq*˚mj=,@lyRa7f$LS ˱٧bfMU k\D#B ]vR{oM6^}6$J;L(m-z@Z0 X@("63^=-(JPe)C ql- }~a$ֳ&n[K2 ޶pSŵ"Gфc%ġˀ栃,jce-+ sNW;ͱKW)| >ɥx:(>LT֣Olt;v,+!ܖl6%:mܷ+#,v:c4- :A2Ũ 0eb]LԳ^i68h<<]ɼT8cx^T#v/,v~{z5K~fRIb&F_LJD7vT1nW"`yu !$.>Vc:57rO.i_\'Y({UitX4S^V:dtLaO}D,gq-L4ep_3ЖPAr(xkɧT CD>I ӫw_(Ok.AmZ1 R\2";cmտv,7"q=(jLÁϰ4*gW0Rѯ;tW;zשX\´/ޯC q'U@R9N!%Φu}j[8OȄ* IT{A!'C>! *h2 uE^]E߽LM -{,#y(i30ˍ3(ܥ{޷/ipIʃ,!ciJx(g҂ Aa E__nìMWv$gJ)ЪΊ*8ڱBɤ6o<k*R)ۻM59L:1ˢ8EL8<'Ϝ/2Q1IhLP8I϶]MC!wMW%F(Yh@nZzDCGLى[|5A>a:X"1.[aZ%VCڜ^G|$8{vnSɖ~&QMQL%llxFq vBtGy/o2}pw6&lU̘,ԋY*#@ASxj+́*C?q%Dʢ~Ix.[BDl_B]#tl\~EWݏhMY 3t)xeQ~S^"Y~Å:*'0kFLJWgh%ՠّk)C8b.dzK3I9əw1V8&TP;x2Di)du{ E=',ߨ!` @nyj4F /] M S?>`E7kN(Wι<*o`cڏQ2$6`պ>LڍMtw??nJuxcس/D;X1-Qfr+8NUI!Iï3Q~.Ev68z2^6l4t!gPrI8. ^$ 紹7V7G͎iL;9qf'TdsCL]f5!nsAS)#"k-VzXj3Jn%""-gHQmvP^05"_"XʺH@ !y&@Pv--9Ӎlp*Ԟw*ґf*v?*/]\TJMUh6:H)FݰQA* &^[ޤE2|/`("ʣn/%@<%g[z)|ǧS٬uǥ,'>$O=WƓym3vg:kkpuF1iXa""o~?fYOMAMe SHbkL9 5(U.uQ;ZU=U1۾O['#JKMBA~hac`ӽts٧\w;mC'|c¯qK^\ǭ-$*&Ddu:kv–^5whJNC"VwԻTLљ)Mea3uo6Tu7#L{mъ=*+̭Ax; ⡚f?(],JgK^Of7iʔ15j i.7 6EAg,GIϧ!ϴF|(gSmPs9},W5XU?=5K bK?6Et}^{y8 S uSwa'6[Kpn0ԔaRXHk$ ajrpnp@1w0CM&6G!U̺5"lm05)I#gKIlD-ʒbX70S _}x`yXSKGGF PPWoG|^#%@HCRe!OOYkuk"EsF"bxoT<8ݔVͩ[TERv8؞]$A$R`>'Ht%(02~Iޱ^#7MlYtVNyj,͐UQԨ%ɯ\*ӘM31!ɘ=h+-zjַpAN`PZ{u[z B[cQI!"0lY9kH{UJpHYnYٗ8)pu}*w5m}s7ձg6 +/uN ; M\^+tȑ;=pIY<5l&OJHQxV؎}ո ]NT5jf"Δ)%tFS|O)CǼ;,7|˲*c+.SN7ִw |!]T+^W jqU{KgS3vz7 װxgJYX.9N_5r^=8O 3T[)oԀeM֪RTP;YD r&@Hr@t&#Sq:+AA竲yft{%/SEGի2Pxz`$Ĕ:Y[ « "Oƨ[3O&t *bΡya@ݐo,U{slQ.1C0TA8"򬄐MҒRA}vza4cP:C.8*7+IkFwϠg"R@}m^  E@>[_RQeUA[f)8!Tkt (U0?Sx.NL !^Q䳺 )7@јFboP;mO%Rb7T g5?+n92FU1/ k@s<&,u F#Nnc t߭Q{A/Tj{}mZz}2f#߷kd?aFWLD@i-cS.xOcDJ}$s#R%0̤?jjLz& 1@mb7fF#AAqh'%u|{?ݿSArYd&265#¥A;jVmn^b;ҥ4KV$[AؽKF߯zkp\!W5jIQ.gYUm.d` vbѶώ3+f @:߿?p))jlIQyC Haj48wg;57 %DuT[@IP*ݓ~Fj.+m[F :4[dY vt rb:d^7>+-1I`tZ\-?iQR py/漬z!+)u8";]M7jR fG)(e7&#lnVj@:6ًb2qOu>u 'i|y`( :i v˜fuR6iI1o^>%Zry%4^GV~PUYE! %gy&ĊN'f)_~5bGy"Um,0+nSJ$B6)MI=mQW64?<~dSюV9! A;>z Xy]$x8P {˝Iuktu}*xXƚ!qLY))^r/d}ٽRZi!$"G^Py`! 1?ioRY0Kײj*\+ZBNYT<XD;+e؈N;jDKr ݆^ys3W=``fV9e5͊̏S#d-!pxjBNjprYsERgg!d#ɍCլD4j&ת[Q{0AZ+ >eԔ}h$իIhQvM 4pN!LMzPF%96=k7@B5yk8lKلC/*e'[>8ݏ-/]/I@cEuL]j||Q]{OraJR.ܑKJ$JWeZf޿M\ߣX8 9T\'Ŕ R܏|oƛ^l7z?I4/|jZn!%5rUw̰nFw L.eĵw0 S<239WGE% C[F0TR"'5*Qpno)mr$}ٯ@5C0oqg*nP9\;XW {9خ_*֢c;^r7KLqciQ~ۄw-Ĉ=zZǶ7Wmr|17BkF%~sq;`NC[q6U^RT3W'qZ|t(mtyBݫRNv*ih<$.7.qq 6VX]}~1e Qь8^oˋKY훿_f)~뚂hJ]>*bڅ0=}BkMQ$J'i,:pQ>$sL3&Jv1zdz6|<8K@Z %^:B4B#WUIK㥷}|#'6T_XѮ:YK#GTF>|Sʒ I6Asc>u@\T̫β &<[al[ 줮^KF .N6҅$o\bλ>YSfv#W9R"2-:3?HM?Uayn 5MUg;)9 t4_ ÇX>n~VA7tmM8&^e|H-(R W$e%֘W_ÏOom$V<@o&ře^Bj2#`T&]ń28نD[+"<t :tv AO#ZKKf2QV5cFF/Y4h) "x~Y}ONnEBIoln3wC=Ңj>3,X3MT1k%i#\Lh/QJRReCMέNzBg&)O]}fEA7arIDZ7c;] flqȩ= +۸s/z[pȥJZȧ2pۨ"osKGd`4N7Ⱦ~LUtP2䋍JUry ~]+")<[bY)JZ)ЭӲ5'n˾RINi汬rDG**w#y#&nqQ̺mRB7Nƒsj>-PY~w)jfʀ#EZgmȤBמ3[zOsX)|-/jpxR>Z\*4П |O?Nߞ~l$]VɖJ%8;%^ɝåNXԐLR rE')D4kN.up+?v(ۜZQfg?3.Ցk5K/Z|$-|M&Իȩ(VOMw`d()TueIM?@}}5byq^hX/4 Zܩr%_Sr:ɇ"x(:+QiLKВE"Ӭy.$ۃ55nyR2?`̜ j ֱy@|ϸ .Z~n d.UZKMj|{l$ (T333F1u>` x_ynl֣pow0$% 9ŋa՘QI5%WTߔFS,K#g?y;Ri> 7bU#;kS jw\OS]8ODͭ)>IM`g|ͶIbV߈4!Hҿ2wP }ώ\SD'ͮVkx6lRĸ( (yF2dk̔_d:@Z%1(Vs R_ ,uR3p/c`+{ ڍ'ˤ'Eo-T|}_[ W%jHl `:uʽc)SYxD[[Ͷ~J`.抗]W6)-Vds]:tHx1KKf佗TW,I%Hb6 Q/X<+7@GAǰ1w9dy GYMsr+HbR1ۧ=.}zv6RHrƝ զ[" #?U܌*@NzGQI0Bt[ Y/PK]1v)q'O׆@5H lGSQ7z«B5a00oN(Y`t\b8 /,5 |>MB 0MP}d0fq ~ Ct*"ZwA9o2}Öc+Cfb^3Vs0h~'jXRV#9^K$~*tvG:%\2MRȳʛ@#F(.F k2~1ȅzN61Lʒϑ[rGd.""`3|3?Z*]ʱW;zi j8_t%UgbbC6O*sq)==JWw@jףu 5Ez %-?0:"ɇ&-Vy;7[rx ,:=y/Y`k:R^"5ć7ͲVȚЍXȒ""rJ(u8 |9|[nEC[ΡP/TC7$bQ 0TziBz;]6Ý|Qk˯Wb}|xphۨkYf%O[prS J VqA!g|ÍF@"mS,4R ٕNJCja;0M$J{sW2z&JTca@,[1YGzE`)L ڶ^.Yv \i]2,p8$YӪIo!snpeXڭD1c] G)'4R3bk෻|m2r/rw|WL "Bq"m-S"3 Pe%SS֣춉W(xע+ QU#(m` f/) ,߁`PxA!:jp\svlV-<M #Hn'>gL/uE,2OڛЍ]/1Cntn/X$QT9) P9.lGMpi:Ӵ^R AK``0p dK:y fC՟UAVBv +Dc,zM=X3zLMb3 7sHEzL}ex$/@צzAvr0*OVqЖ,7}樝^';ݣ1)w.ї^  W4X 4DRS3ԗ!7(E0*R:O.Nw2_m٢] %KOXĠ2|NSRS@@o x8+iH'_UICkJ*64鳯~/AЫMd`vظOHLeAa$T~e_6/r9k=Ju[4ZћGUW=2. &@ԍcΜ*O(\B^_ wsuv!FӶoEZ!}؀P[Gl7_@qS7 'A71L_T}o]]-=K|/(c\95(h(Gd> s֫q\E<%1h a!Dow#u\@l|ɩL[TC[G([Yyttei$bؔ EaX>x9 mxв%21ZD-?覼.df5$9@k:)Kr}yU HzS̳+NiH] [h}EyFMu%w&@5,jddmU)L 1ΟWK!.?3VJ&r{'q<d)ꮃʷA[]WmnrvLuF|̒tU5r>~㵊Pzwa@3ջdrihRqڋQq4n7WKLŠtRɈ(;~G B$~Wn|PF#LZ%N7FAPW #awd2PlO&~nYYjwfс|ͯuĸv:㕬暅DSԆ昮ےfJeL9Z@ zxn|KGy!fa!d!F Wp&Gu q=4δQ绤ʰ>}f&4.%W]2LTqAÞuîp-Ls4^NI?QdG>>|UmtuEl-af c,O4$:y$]VC~lR%Fygc\8rMS!Lɿ ^? ʒ1F{1n{&Q6b7;i0ߖV*E)xs~ç}cs0$vЉw'ؑY u+wb ʥzk$@O\ vWKoKXƔ˙DU~ieژIx&aGҊY3@'⦠X^R;JRߠ-bn _u䓿\fQ%5iRlKA[I`[cƲUa%LՇTYlp|x/<|kfE!"*^=jD*UN[ H.9Ol f6d~J<:iDͿjw~\lYi0L1at}GQ#@2k3iưVXRAUg$6^jŚƾ*w<ߎ [Ѭk;0&=3=;$$r<7Ok9dFWBH2 g;ݣZ#:܂ժcD{FVБ  \Zrpn1Џ^a:s¡(`#J%huJ7]H<=?˽\5 @>yUBnúW5"bo!b6U 0⠷Z侟sNqmgoںk1~rȫ6DIZ 9!6~x.<ַ؆E32ouIQiZUGJoȔ C?YLT\|9tD/:,BiA6U"|aֻ9BsZH~jU) )"*b Fcs:C\@,g]cJ\U@>A zۘb[ಷ #v^@bwrQ-[뭀ԟ(Cu7 ցF{y mX=z6v}?ۮ: tfŦ)qg8ze5rsE1xWiiɋfU}jX~$ݾzCqӉC!aw*he#'RŦ_rfU4T[pIk]sp մYwц~vT=!̮ﴳfX$R*4;_#a@UNuy`ww"Qqo=\J}}無CըatѦ?c'=U&*~wvȠN Y*9"uxAYF7L^O{o1ӀfhCkʼfw?h+]z~=9]FJvyݮc.V{beT1̵B&AF۫])L^IDGF@ng9v`1cD+%{vǵ8.IIa1RIQSW0LLˮVOX369Uc0ijgx+\_'K){~*ŖiSy/\EM$4Sy] /A!Թz"(K@#K?tTKKSu_KnHeضbfunEق"bt6?voqm&Ļ=O0mtnx=4,}^|%9Db{vM8Ҿs_Zo.-9DYy$EAp{fݒVϾ-~xdCu ^TlV phS-M JKöWЛqF]8;uJibo [<~"m0 =2_p=^ބzi4(WW~kE[#(#2FYQy1`VL;'φv`9MvuDN#*2>ECQZxմiĒ>NʱL~>&Pj.խ8/hVmj"a;ŽOU (gbFKЙw M(9rb̙SKCʬFH i+7B4>*j\.SH)^&)*o$:OC[Hym-Oa@UR_Jw1o2=T'ؘ|PDձM/%7 <ֿO?lV :p?K6<[%ތA#rF5`g9/4cXĎ[`ئ{nL46{-qRyerv1s X j!SLQEջo + ?ud;@<̒~rKk y6 ̶x~e4O~3֨g.&3u4[FAR0@v@ N(EՖP"IR\݆z3.#(rFn{^Mt+j`k^eAA(ρ$:i9\Cbm$y6W>Og٘Ia%LsMFB$}~nr E˶4H݌|K`U_*ޏ Ӫ$j# ÷Y"E*IY= {aْ>~~Jy] UCbuuQ=GIɫi6fDU1}/bPa<.sv+(F&Ҫ^?mr 8pS_6sv$LJj^ߝDVDfs71ffbI0E_4?)I 4qAlEnh(TF.9OQ^=Puq x(6<ɚ]Œ|R&wA4RHq':t7+!YY6fFӑ _}5Y`vv>0`s1E6 ii? f۳^U:3paJ(L ;*|eZE1@ؽB^JpA1xdlNBO(-F MF? (!e%,e)JCV1ABD{NL &kϸ{GKaIW{(iT{(^bm yPzvqߛPUaPBߵ,THR&@!kp[CukB0A?ɳ O_v`@=.`O UU*JS@fHt;9𯞾VTV0w՛JmteGlHaFH@R2)   zq,'o@M{fg\lŌI)<74Գ{}cDZ 1tHsK*FɏJӈR}ܸ:hv£VgLkZ壩E,4 88~lc%L'$ʛOnFI GKQ,3#ģ[lmiǼڃviPª`bpmWQb-5?мA?؈wF&DC><;~,&+9Tp 3 zdTT9'`+9UZzup|79:d DOV' ^Vq$ jL<KPPc6NIϔ^(ev h_ɽM3VSq[:ƴ4& |\oYY/njy /uzMJ]jsڧH>_-y[aTi"eW i4*)@p(:/VQ~ZWjb1AXIAbAVD= ZfN% w|m$TBlZ'."1󵦠R1i3YXsFE<68<9;X@KGRE+*x.2 >yf*os B'= !QE{D$K!ֲaJnDs=è.'LuA=kUkw; x Es2*fF@@=>0=|黇ZEcUP P}oԉ8uR3!md!ƮL gaD<졖vD 'R*5CM,;pMΘU0=Hu2q\5%}r#VQh'C`SHi -νeZpH:s%;Ʉvo^yM:L,$kLe9CסQ.hiohhm-_ #4bTO1+=n+V[ފQ?qiad{F"kZGOH\K5DM]Pw++.4pxvp:.d SQbɍ^Cc-.(b,szrtf`v 6x {٬NݪL`7r)mׇY%&w`ͣ5oQG~[f}( dnҤV'-E[-K`[~9۹.=O4XܺJi䕕RWUB˼,y_u4*Iwa@&c2W,ٶ gYOa̠73L*dR=|kNY)#\͸IJxFuo~wT}TzՒzo2]EfտTO͊?V1|({Q궍Sm)ONOPU]1$bw(ҚY$ r͕GrGkwzN_H9ORu)3O RCխ>=RG\X1 ( jYjɏ%B~oa?(񜑳 Kҟ@=xZiNgfΛl=#xZ)Q$~"5zXRewnBWjϏ cSIsثtlzSD)x:+i)w5r]]2/_G`^*ԘCd*%4rDaD`lK9nB'Uݪ ϧ?<(gnjի7 {$#/7 A] U]sfQ XWoX3*$0;?Vu`P !ns-wq! 74 ⫆{ܹpDQJ@Zv2\S?*7w /DT[{X6HrN xѮm7:1-13»zP_7o%J|xģxSDrwdK4jN TjQmkK+l Z8L?LdCx3|<#;D-PhN"ȭ3 Co7S1ԞS5A9S*|Ԡ_X:dJ ] Ub(M̙C%EIRD0#:03O5Tx52>Ѳz$ =RcN`vl1HK{‚`\qh O?/nVڝ8_ 7 Z4d;{׊>|1hfP'qf: VvGDRn `G17Iƕ N_>_gn)>t\cVgv`=3MGy@[׊di`cڡ5+vW{i/Ja0#I O0 iWܯ9J-҂L (Aƺ<ID[U Yۼ)82e0ԍMmS'U!X{ EH4A6^H S9,yz koR"'2)8(wV|l6o@dU]nFK-Bi^  3Ϡ- FKƩ1k}GGڀrëAR83嶓Q`"?~(yȩo8Cp1ȫz]p>rÓKHM4@U(ӠeA{Hx 1Y7|~wl2g)rSڠPۼw@iYsYᙵYѱ;9*orEgswRڕv$Phx 6Y[qT5zU`kY,ܰaHHY~"8)h֕×]3d.KZHݙ&0ɚn{S*LG  "؊)J[xyEW JhI$]!Ujot ,QH҉rnm{fkQ3&vlƒ+MlXvX ̥ ʮ) ۯ0&j}BR0vyH&7CGS,J0$ʦ4vܚ/c1.kTȯT_sӪj+8h~L@nNa> :2ϖ^vǗeOJԘT7!i.Qv&UM/n^"-#E ^ T( N3p$,;qGFǿc(cHLBέR*]xikPa"8f]F/g-!;FNZKĹԋ*R qU7x$eǵ.) H77RL~Il;߰3-+sA'=9`$-} ~NX"kWF$T_Gp!K&EC:R5FuJUDF!E ;zD72O.眝aix8 # t_)$ XJ'"6.ܒ+DfJ3W3o[-^F3Zbf '*Fu$Q@Q-񶱉c@SdmesΉr)w5ʋt  Zz"m+."qԕ䱠jb⭿^}FKV=[-rg}ɨWFUf%5y(_?OkuhIn/z[Te˕B2G.Nz$VM2Z A79IK'w 7͛7[̈́uA\FY(VuSTTW_cO MX<9}BLm6 p"HmLȪlޯJWxVE4~ δFn7G*E"QrCd+vItK ?SP'2u *k+$]@ }\W% 4/(E$WcYnf ֎'lݻP5hו窰X!aA~=B;UF~_UTrYefvp@щt1TqsxPC@g<-mf .zӵԐ#Npߎ b'vR UM+5(olv#>ֈYPF꧎b?5 `؋߸hIczTRg)z\ U<))|oKOKf0A~L!"MmU)NݓfJRB21$zR7 O"cF?/&wI턐hpQ8֡x6KOb{g^ivb^>*.H0c@A\Lg^6jUO.B* 8}A.ppV^`P<ƋW_?l@w'?+9Z]BۚgPB Xԁu2ZA8kKYU%lkhg՞KRE*wy޴(iOɭh8%4g]BGZ @U`nMe}Q+NB(bO¥&״A Sx10U-m;*i;I_L78AKilEď$M?N% t1.EE0 3yur[ȂR1tgLGSjp$t{ x̯Q VcSX3\k;}JʝIl !ߪj)`ut6eam2׭X%z2+3z\|S[%=sb0ݬ'cn@88v tT6@|xۇo_V2-D8ȖW3UE5Y0u*dxW-{皌UR32AbKh8;\Jv-JznƧ&φQZ/HO$UǫU-)T<$XYȿzݧ=Ʒ$$ח N{:E}׋m-lt!c[T;(}B?FX^|myjkX[8ȏ#?FzX:Dpm4W[ٜR@6t7 vj|]y׫;MpD|UI0NjVx tnQK_=w2!b/6ٜ/cHǐ Q%f

    C;WYϲ5b G`zfx[B3{iPk; U1&u> }gy+f[TBRag:/]?yYql#$IWBԴZ8鄋 0#"XFt2 sRksۤ7< gO|[ۅ.2U - h҃T'߾ fQGDR.Ho9YǍMB$ 9z; Ra+JJ%^]U-. ?(8žބT<îfrL=v̊͗/C+糄i$zXh*wCK;ʧlKtZ"yUӍV%A ՀnylƢQvA#v8̀GZuT81afMxo> Zu=x  S=X@,E%&놎d;UG(MzFƵ;ȫ~imiAsR@ &'"&NGe$~GҳsY;[Np`N,hOaa2mь3Q7P!N!ܮN 0B]ICE:l9L\ Z@EhD, $ud}([1v`@ϼcuYLV!j5;KE\_VY~<۱@RdU,1a8*2Z5w?Kܠ'+@b%.m=@g.9y 3 旽*b3bP8ͨFƫ4jk˸bǝĄ"|d}5I/$3sXM{z{4T)8܄8Ʃ,VMؑ)7j⑵-uE1@MLUvX<#>E{U()}ľe 񂅆o$FfW6r8 ;WTѰRFVKC3"{ǥtvVPW8Z4X]z;:> &#A/WkqWc4?Wr9ۄy':5D(X /ØlXݶ:^*x<4֗!+'&z~ >-YX:|UA%d2R (iUB1;4 c1{泥NE߭fH]2F pw6gzh*HN+c?nanQ:{4!3+YOZ51S)C RkV1;Jʽ蔡"NƔАИ1uUkƬkP>+dRxEjP:{ ]2xFf!O>Ҍڻ ^Ҡ"M)w 3(!޹GXfGx վlRpo?ۘI7Iȹ1p c*'b}v(H nbfmr_}zFMvpt~Eo*H*A1MdRqϠ[a_ng~} 3[ 7ܭ]:LMk6AJӁhaHkĩwA!lx7U;KN"1 Xȱ^F%FCf+䰯y_><-␨AWAr9ہ"`=!HI>E:/MUj1zh0Ks+&"M/&EĂJ#?O]|sz -aAeiNJ6n IXWx>VNsrWD RB 'Y`#i%]P&_5Btށ&?,YE &0A$8XP_%9;CD˥E t/2!U1tbF_RHRmý3Vr ^(mWuT+f[*C (~CXfJltln_qrJa?l${`PQ-*2ghtf_+֊y0:h f*Ӷ}OYޜǿowE+dڂKI ]L1Ϳ}jvB=7ekҴ0hPo&g4? "~߆v$ңU4WUR.gr],@}Ra5\Y(a 9E{+菉LYB rwyng@I.xvFcV<T }Js"MQ>ug-h#v]svx+Uf |R{bY0P 6_e)P| ;F+JQ@0xkZ2Sq%f'\3ʈvn+;RFJ dV)7ݪCt@qшR^-?YUҰB7GJrlSES;UsXD$1_" ;/5CX:Ut2ѕ1F߁Fl猿so(yjG'}=BVJB@兦 5# UBRIe}D]ppc8(͈Q 5_<ۥҼ+4(#3< 5UFt V+Cl?r~dKmc 4TTell6QUi+lMQH05!jEpR$(ABL^ō3ѭ֏Ä5K}%wiN2=hR!qYЌ"?}xx~YEՁsRf|ra>̙)Y0Y0ENBjnZ`8x\7T82 |a\[cME뤋$~|_N#:ORttf@Rhi3vE= ]tʔ v%~gɘ䒖Lxgߞ֏I=ܵLFuܼKeTN`9a{3i3#Քk< DfeIJ_r/dOY2ʡL '-pQ!O?r1*xR~-a*l4*,8P'Q(V4Ґ瑦AUW5>0Xr R \P5AyY&㷏4mq껧o>l䕀 E:% Xs 3s<)y\ve-m1zkIi_`l~icWf$Pa>x-)TtRtg^ghp`nHhQEj-`;CF aW.I堠H_5!wg[ʣȖ % d38_);e{FY҂.%;/crCAt*[jB1yá;% T2vz'0 M"U}- 1]/k#Ife乜/;`~c#PDz<9*NQoTnypGA=K3^pMty.n "'fGE\E_^L$A֬&S /]Zrw*R)a!t2;$VhM]#ܧIh[UA u,|dr]qؓE4 5~;29EY'xrKVJlɁdks= -W4+w}yEUlmnh}љ} ٦ I-䊟 R/aVUkך*؊ m|3. J4ڈ1mfHAfu \{&.!.fR 4 S{39KZ.>D_$(yieRi*++WZ(iV-NhH#An?1yUZ0s,LS{eܛ_/Lۨ:erEo>GRb.-{z9wʶ)cY7ܷ}=~( ;vegJ9uh*I]ޢSڬx?7dC#mwVhGZ*3ާ`\j-`qplq4u 5GSpQ YEUK&>ڎ\b ɢ[*G+}]v+TO,c@Ja;M{jQh0ŻZ{"k2ePw. r@ƀ0-y4w:#"?84Ep@8z 2Ȝ2sT;kUcoHł@(|J^hTr9v6 ;|s% ֥] è**~FW1f /*I ^ 1s&pQ΀)ά.g'FÝٟ>fY{i'OKRd(:8 l"-O׫jc@+AI3+]G\m~Zjx}!Z" ׄߩjglak|]Fs{Nil?XL}jߍ!]H~^)K.G;6Uz3H`TD!SSYoW=p:\>VYgtTQ_?,-V/)oI H?YξZNd|$*h@LIovƸsw+g#@U;f !!E ;r;Y2sTUFJ(gJC>־iZ)!dM`܌X$ȝl:8Iii'Qڵ n$%ϪnԲb{C=9Gg 򰕎X;3hhNRGqU "G0vfub8at:|& 8U.x>16MѵI!4#h"QߞR\$hـB2s?ê#rj&O`U+SV I-)9e58E)N̳FMJ [9ыPnFWws\ s1$&6h"lTP>fU*nܘO m{,-syƠaԃKu*\ Yn՜[7ecǵ_J'*\ӔZU2ܖ"bAu~x͚3ڂ|R `f($} 3^79F#v;0`7}{fqhyb#$ZǬ}'o̚x]Rف,&œ2\<$E6h.LB ކ_:E733k_5LO Ig&\ u{ϸ9&-y$Xʿܫu}_ 頧$ 2Ӛ0›Ӻ;vZifZpފqZWR!F@afSrl{Mqu!$cTu dd0_7WD<JDž]مM9$SVt`ۂꐱ+J.̛mjיqr%cd 7XE]#Rk%T{/F#UxTs W_74Y|T2ȺzyV 9eAa4b/"ZgMK\z״\JIK qfL=)ʝg`\WM% wŵ,*&t_!Y'z[X4zt;:I7_NJu7erҜu@n@g#]Zzt՝ن/n4zv9ʥʀr 6r֡j7җ/'m207YΠ{͡ SI>ɸӬ$]"p 1oojj΃u\mn""w4! *fLJ a*oC5>t$m<>#Y\^tv#_7lZɮzNe1KO0"j`S9Hɮhݽ>=q'`@:L,T6LM)y0[Mwvln )^V-v hs,/G_bםn˙VL,^^f3ˊ\lHN߂&AYk? rEh]7 YZX7e>&]VlAѠng+-#ZB8@]di& 6uX םzedF"L:2Q <(_sj/+ +i%<豠&Ot_v}[ )$m 0f3(%ݨ>[]u&++-)]wXErXUЛLF=$ݵ:}Uj к1pG~T1 0NYdmmß,\yL sW"$7fk 7Gǿowe1;{?fa !_|BJF7Ke2yOj8:KN.vaJHDjU-Qoi$}IP2ݷ3'A<3*,-@hE-hicem0BgfQILm>^fs8>NjดkL"TՀ-;Un rwي100uVmm l`8jUFWXӌ滹1Nn B0bځLMk g4!Upv0hSTxq ?'WD"Rtp$Km-uhRWU)Ų<$}r[͏u\޸&TYb-koL7aa3pȞʌ[2-ȵPyZװ  ȵ/ZUzZ*yԐԌSk^vjyr @NE TuKnje0߿-;?ӏ.NX,T;uàݯf-L~a!_?M^NPk">zϛ*<.=7/\ 9b UmzDbL^aŹ7"wj t#R?('SRww5noGǁNZq׮t/#oA_(rjrxL]&~Ϥ :ڟ5z7YD-s_69K H"'U v8bcQP)"A: .bXK<[F@z.w@͡T3ȻgW=?QSU֠HkUKQlEc_o%-Il4莹C"٩ fY=C -W_ +biCRiPjxb}t{F 6yd(L*QFXkw=Z/z6T @|}LD-<r2mp؊x^a,-/$+[7>r˟{{=BZmy+CܦMN3 ̉78w;|mHzI|",$ Rw?~Ç* /-!Y6Q*?ŋ¼# hrT­HaBIh!AaK| e'XF--/ۿE G&nDI\0o}jUU>S)="% wvnmHf$En7:+8(GNT@*Pﬧ(/%@G̨j@[\6Euz;%d,tͅѵ?}J=;Ҁ6 Ʋ/A]}1P0y)Џ ~wjEC*G3 QRI=ZO1dF6:-̑|/R߁N@ν}9z&*zR:aXh 32t%Oހt^WMNI0sC%)X29YzqU7:K $U>eM<|L^ >)Sg舥lnQa* g$.S;P@,Joۗz0}fN}Xq׍ovw*5)uDRrD^V^Mh,3$@uR'H%Um[,teF-<g+Ku%žv9 mѳFr3R>GIpH^\k \w79hA[Nt% <;jf%N}zǧO鞒ݶQ"z\hȘc^;}7aHmJӄJ|xXXP1Rv.ݨ/Yׇe R/\/rd7 J=D)}؅Y/nhGR :u`oi*s/hۻԒzMj2Tic8˺~jQ8`q{M\lM\5inu]-Ǟ)J*թbY/YbD𖐦Kٗp"si}1 c2L|&a'y$bj *@RK}sշ΂O;\H\& bz Դ"_ "N+-ʾbG G͡D"lcQbo&}Ģ4y>s>]PK47s5OSQJfv# ϡO^8 B}qIUOqo@fUv<Ii@N+Xpqc4(drkqyü7[y, n*~e~%î s jp^exe_o 1,?>ϗuh="8e\r Oª>b*y |ٮ:>wlʧ>AF&djմ #uY`s/B V5"ObӔcmzw8!Z흼>)IJPk9VdyĨ;Yvxx7!:6y܅UF5hBh.s*n]UTO^-yFSܐ˂^60.oiMn;9eRL R{fV8W`}؝͑~b]W51U:ö4$'F3ܪ<-U6|B~Y]N^Kn VYtV~*..\u&|k.Џ%vyC FWAepӈVe\ =[UL D3{'ɏF 0;C; q'C+Bn+bfZx,2cn3Vn+-0]$cRǶ?AϭegqAwv]&XG%Ws=))*a ͿL\#zRVvH'_~~wp2ǐ2'Y6IgF{=#f1ZjQ "A)ã~zt0!N50ZRʼnRe,`Xoi,Bj'5<@g`xpmp #Xl#Lpq]>_(u pq@;A({ۦ wGqo-&~f":p@ӉUDY1ɽ9,+1"mZ44vRc񇜔Eaџ><}ÏY:Lwu.J%L JC(E5.K? qXGUo!/xk|ylځUq~AݐB Eɩ.HүO+5M]t| T<ՠxDwzݬ'%C/v% >IQHڪ܏IhEg3UxK: uT-'0ΫäOJ\;B9  .Io#T}8$i t!|Ԩ䶰}ѓ:_+?urp5!&+waR\qw 9e<تAeЉHj%N),fKZ7:wQ4JPMnV3\tWXaOz $ ~ :ktn8)h!D\d;tt/?~ǕJ>jT;Ct%Cy:<)\]|"!'C=q4 0sFkVCPgI܍I%#][x6!6ONˀѫ+ aO24$|;Zج^th;b6/ цЭP j(\K^0dPKT{uptم^3P5iOeTnW<'4[ٗ CdI*~;*}鼓G RW^)Y)<(ΐWwc%3f!6ODd&$B~_*}mYVHwnO3m v^fvczɗCFtCc9)?+n@'Ff20'(lSPYc UI{V*o4:G;?|q燬rSvL;KoVo۹NPD|l[X:V~vm!hf)\zz㕏4^xDDOE)T'c GmRhSnV5^ Ua ;,v\aO/'litOp I#.yc./Ƽ,?;A;:X,#QU3J,h2|,.KǺ$084!b#//01b8*npp#\u\~63H G tty@1C?ht@/wzl$Tښ>ywPSh_H FeО֛!Te=h?@_$ӈI+HOc5CL~4¬CS~eW5đPTO0(ooIU3^Bo._>TuW\.W jzXOEw~ȉγ:JdT  ʇNh>./o:h@ Rv.'+js#5%I.Lz1}Kl%=]S:@TnVS/Y/7i)cw1'늓`۾aP]{iv8{])ݽ" Ej|iL`3NAWzڃP|3wpsә.+n+(yX!Z WD>}[ְ}/G!xPnJBF:>#X ! mC7. nb\&*Juړ?|'3xvz"Tx4jK1o[%8eY[E~%#?}ӏׇ ]#⑘s*Z'tfRn".g; zoNX9FTx'炔l@ Z(ѳW |㷟>< 8(I~wYfR؍%Ԭ3*nz*i3`9v@(-,7Nc ;rCԽ4TTiƭ2jұOnmvToB>P2eu2ǓEqUh(Iy\ V5TV .kջցRIթr& }[t!t 5-Yi/E]Va6g?7!!wnt"bنI1׆Y9§+a E9+<W('Oy.a*4 v#O_;BlQ1ȷQOIWCE>8oWzir͑הRDq>543_TﶹtX+Zh{ gTQH(eE_BIV43ۤ*zԭ<ڔ;.s1W*tH d$9ig;}xGjWƛJOW,9~Ԡ&֨segOiDivԧ )&+ 1tfS[Lأxթ*! *Waj4Jz*eQSN&_4 m+Wg iXra_!)8bb{:'ѲjKGh*%3/m1óCI 7r`6#W^/>>-xu)MٗԺI6)#Bnk6[ 5[2%8^ɍ޷f'^Ijanw6]"38pW3 }Y"9N vBj?oc&gб  [+@nhU`%hZu%= PI{9)%*+R:;Qyvkka*m'@iLQrviGaUWk3,X$h7֨^Ua9sgVF^5n[e1; sNMrکlXTW鼣 &LL$}d7Jb3t%E.w-`f^%B/ d@E!NGa E,\+0Vޞ0X.p Ye/ifz9ǏO>|fݰcVS za fIjB5.BӨпM` k{VͰ/G_V 0gq!=n[.K ܅kXS_>4=H-WlΫ>\PG۰Թ㠵 1\( &wӷ}&9 2-hm XYV:hQ(P$yIA4g{mB*ҨHȋ~|٪5(MmFOrb.J6 ƿb{CFC # ȓ| aT-Dn']Tє󝿿\,B+w2[)m[w!`~F}S#_nxUN叏?YMD:ZPQb0桐@VюI4g}]5 MKdy#Nϖf?դt;B%OK[F.חj␻-j;tJ<܀eK 3N2:R>A Nc䧎X?HǍrPڕ;Ó2-N?WUb0cyv}Ռ@Ŕ严nozx) ]s_XWLVM,A^5y/2b'jyISbY""ڂfquzaZ6ƥ}-7O]a3'B &]>Cq?(5^ f-i^zfȢe3Y5Eً`ֈ e̓VI)1%o?"mrd-}Z|G&w-D`gc -3'O?eDbҌʷپ ŲAO@^nCӿam 9jSXASFq:[8'ᔖLzR/ñZmk}Y9rm-=7:@\㤌"sz a-7dJ(S³6r+{)^$X*@L;w]ڀnrRQv(7y'יl|̪JcZ ~&\kRDNnH#g5ٸ}8j0D>*+j֫zЫfԀ ~6W3CDmmJ"By}Yb/6X=RǤ&r9v6%;w/_VI7MϮ 3Ϥ⚶>xfb2qrUwS( ̩,M4d/>eCuF~EpBM LzD͒5VW묈RͻkU*t3 *o!S+ו]-E~8뮎o}O-;RyHʃfƱ)!fYإŊ^wƬ R _*LR9cT.Ku]vK܀$*JA+s{mM İ|;>;2 bQ΁S5jWU hqfQ}.-!7 QJE32ryCEIX@lK9tr$ Z|eCjS>}%Txn"#m.#1&x Dz>&&;Z0̖s_ {L͐CCَH^[?[4 q t@ vpBq Ts(Vi$u:4Gݪ@ JH]}A5t-K ? '̍1ގr g"^N:LE}p7bGRI&\g! 5Va huAz%Vg567)lf}Qvё2N\8atQcGiJ478;"0pmsˆUzeD`Q+/a!y/qPx/(=)mawå>%_O[PѲck]SļYy{kwPu&7P6;=d7rFzäJ)nEX L^êQpNuoחo;:9ʆʽmr׬XH-8U}]Xf5Sp5^</;zf}xY2[Yw 9;0UDlWYے2 ɋOu\55gU4;1Kd" i t 2ا"|A ,[z4N a/+/Q!r$piH?;4vly)>V[ ?-@s1{9V w53z?X%]+h6ngwi.9nJc4Sgf<'Va]-ǟ{e=UmZbꮳ5%=L#b Z#sdޠ6UZ[xF!EΈ47*y^*0z?9mkS)<%!Kh,)/u7slW%}58mD-#Hz'H`R|ACXoSf7C|i3n5)z9+1A C0+ɋRU@_WnUOaxI3QC{OP {ivi[ww[$,U>C%K7kJa)L'u0dkl[e iyZpX::8̰!· WS)(Ղ0U=_v~/ Ϸlj<8K5eaRKi^jL7Qy9FETW7 U{ҙ0Pwخw! "-=5eCT]ܦ,5bwSpӇ[5~)gIveWWSV JD67˗w=|҉>`m-d5 Ʒ+NO]O-ebMGM*f͒v?=]jbb9mlʔy@B:UaW?~_͞ԑ5`\wN֪jL6KvwyoxڐNCl̿ql5*L$[IFSr7 nHPMVeFyWisl._F}EPxe| Ҿjnmv6x%%}/*^^G5qh8!^qmZЄۛZ93wf*5R Fus˖^WGiSEL?RWM1rԪ#*vӮm3ytمdaę%l!(f&2N!ŨBSov/BnQK;C1y̨Ma7:۷ڄ[Rs7 ~* 5TdO4yr5VMc;٥WLz]㠉/@O EAΗKٕqr8 :yM8f,In7{'a\r}х?;ʓWPmrH)]u*kz?PKdKP test-file.1UT:0Zux PKdK6 test-file.10UT:0Zux PKdK}  -test-file.11UT:0Zux PKdKg"t Ntest-file.12UT:0Zux PKdK)[J$ qtest-file.13UT:0Zux PKdK4 & Itest-file.14UT:0Zux PKdKK'Q  test-file.15UT:0Zux PKdK3)  test-file.16UT:0Zux PKdK` Q+  test-file.17UT:0Zux PKdKZ2*-.  :test-file.18UT:0Zux PKdK(Y.  rgtest-file.19UT:0Zux PKdKWoYx> test-file.2UT:0Zux PKdK䔿A0l  Itest-file.20UT:0Zux PKdK4:y %test-file.3UT:0Zux PKdKs\| test-file.4UT:0Zux PKdKV: test-file.5UT:0Zux PKdK1+ test-file.6UT:0Zux PKdKnZGY D.test-file.7UT:0Zux PKdKEa} GHtest-file.8UT:0Zux PKdK!*%B  dtest-file.9UT:0Zux PKx0UT,Ψf 10000SalesRecords.csvUT4bux PKH././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/tests/data/test-file.zip0000644000175100017510000020335615112276603017465 0ustar00runnerrunnerPK dK  test-file.1Z] }S`&H8ZvWŌf W!%@_{DupxvlJZT̈́=և)R84{|k3-T,48\)a>c,&z~k\_Z1ý\-ǐgJݐlrܢo{ha>)xüvm96۾ǾZ6 Cݖo.x_M*,LH]Vik-kϰ[ׯUW{}{/|?E y}R3V,^#O_FNhڷΦR}O0ħ;{8BK #L%-C| i35;- OA#ouZc=3yzS1pފ["3 B׍j7!g'z -:Z+x4q([5G˱C[_[(9nX"ظ8HHx3?/} BDa~vJ?q L[R`\ǗO;ruNz6:d 2%o.ݛ'W]m5!m9},Mpn񤜥My4]8+D _]`3TG/1\^0s<\T/jb97{L"rXa2y~1 ?}˥Y޲{aYsD V|QaG(č{jK񳦿 wHꗰYԎOxyߎB O&n704S[×78(WG B=YZ8߉'nȭp.v `gYSZ'OeF nG[u&3sd_ +\G%Khp7_INqj}s,8`v:; ^!n˵ ݃)q9;s\e 7ЎA,\sI+/ gA  /BsC0ЂD0mn?MT*+f+pi0ԋl8)i3=0`,=!_ DOZ֛8v3< Xa{w5+S.tO r8N,RrҬ=,f$LݺŲn}L뻄j#EIr.R,:[0<7"6}_R7ًٜJIOHb*Eqr0rfNa12&dᓇ$̷ \R8Z)no,W66c8겁e6Zh/AS"-Κ$3ӬQe( 4 y# dP`z)Nv t T[ L,fd+ Q fH6Chd9*w --P^Ŏf%[Ad})1B=C,M h^hQ_$jPЎIj.5hMiK)M9a)Z4ˆ+-> 1*I9 Tg`x+7ջ(?eӍ"@ aFO U SiǺ{8TGMfU{s'$s*ͻЦ#DN} KuR<5s(KcHyo?b؍APF [U ([$\Ĥ@)%DG/K\RZUp=4F'Wvsi?89PJtee; neCx8Չ<q+2{B4p5(w˕ĨeCu&P&c+d%A5JM""%ϊ.LVMN^ױP[jR<"3DN;a\T VXCCes,2\׊h)hc(J@]CyFbbF2PS@*;榯 Z&%aNW>C3Z5 5htƭA]fy"S:j_+9T;Ŵ( MFS3 cS>@g "mŬfuI"3(e~%Bae6WޟԬrDI]oOTmTus־YUsEts p+Szͩj{xx,U^,)5),#PF ;%F Iq֋<)ؐ2C#fZ@7n yhȌ*zJ1"o|o|qfPK>\ &IwxI,$w @nȥ8]miV'j'-:@4U{H:;=)eaLp f<㦨.6'!ظ-['4:9(ήi%L&ZcH/ZܯA𧛗< o"2ȼ+q}FTfYS:QFPiv{V>~4H?λ@*}8r9=r 5"J18Oς0^6ѷbv %мԩH^qpQP7N^V\|+_~*?PK dK 6 test-file.10_ˎ6W 3@ A٫d- l٥#\l& $Uum"i#݄3ݬv$C1ve1ٻK5!oO>zE~½n/X_ۜvȇ !hQ9}*lM?m*5OX|^-5CIa nힽrDGykv+VRpm[i Kh|T:f~[3V*/0>]w9j.bR@=~|.ޏ)j OkhvlX1r7ay`~l*mdJ.59lV{o;}󻏴`d! o>mksPnޔc%[ĭ?ڙ6mF/j qiw>|JVB=XZۻe4r(k1/cBmm_n!ՒQrg ͢ D!^=8@Hx#ۮ̯m B Df~hs;~֬ kR`\WꜝtmtWd6bn1m`w\uMyqM>ú 8є Y GӅn==V8 9hMuY?ߑ\_7G;>K&co{(d  7mG+߸Ƕ)7b>=GX-5{0Vp3ev3LܸΚںŴ6bI#}=S‚#ɤ0 Քζ@A(= Ǚ(eG`8`,_dy7-XN'"G&r)>u! +C&X}iʑ5p2Moukd 7uˁ|~n޵&3sdڱ33\z%ShViKwV_JNqjm£/av:; ^!kyWSRWzdp^u-@~oL_"sށ"-(Y,ctJp%̼A$xxX*( ȫNSj'#DebHNz]Ȇr6ƲB)K8zgVNvܬO]+x]s`fsJ-1HS4jQ F SnF?[/E]BSEW)\(u *~ͺ.4PB*؉bjЅ.|3|fM~ӺILGUI{1P.wXQo[Q9^9w Pڢ`OSw Rz ւ^|ѹxzޛ_V*(`s㑄{C ({r!XHV+!Q# %=a%.S"6Z(>q.R,:Z0<"6m"Kf96[n3ҋH&oHbd `'7 ;Io(R'*{/=pRt_"!Ymdm|pe=l+WgT(E_Y\ DZE;kDNKyAUP\ ЖL+uW E~_~c@ǐK`n4S Romjc6~Li#Za pW8^ ih[J̣Уb.%vwE0@&ZuT I0T2\$ \hN5hNiK)M9n~)4B+-j>, 1(I9 TGΠx*+7Ի(?iӌ"@+ aDO U SiǺ;TGUfU{s+$s"ͻЦ#DN} KuT<5s(KcHyh(\+ ^>8oB)? ᬾ*_m964hQBO@kr.Ny'q$eGwͥ=r5@PLJR$/ˑWR|10 H pb.үh֙yneJ78~URXk`3Z6R0XAFQ*'"D J.Q%Z[jjk(T_2juLZ?lCyF0s1:JB@Ggu~1)Yq n@V6cV}3;N$SS4Qu7Gh`2eI+j 9OOTmTysYUsEs dG S]CX>>䲤Ԥ@Qj?_D:O)a5ZgH뼼>ȓ uy)34b^dycp̨w~lƞmS %S#ԶZ[9?*gi} mKaY>Z|>jT}ǜB$[r)N.E@-0OmLD tx @|.5VGJGA%`Zg&8t3[L2'!ظ-W:9OQ]{hI}F &%ymh~AxݭDteyWⰥQe/rKAa(VuڡϭZ{)xF_gT9qO;tϡکנs`g|;@*yd >G> x}\F D,dRS@*pW? ucI hŅi˷2S~Ei˳|Q'*=_TzlW=^Tzy/*/!ɤWv^|:wkykv+VRpm[i Kh|tuZf:T`1_`| r՛\żb[>vbgo9b@8k킰>o>[ybݴӗ*mQѷr4ګ)!XdYI~?>҂ٓ&z䦃l>ⷍ+6_yRB9yxSїnD^kg&ĥ)Y ՛Ԋ>l/CY}om;0DcV}L"Xxaqe"ؖw5f\gyOVe/<̿jvG=̟>7nm.o1'CR?u1u1gsuϔ`2) 6}58P}y1cqJ ٣mq䍫a : ~k\f]Jb' @_rbr.AL`]!BMrhp+[w7E9\oؙ ܙfnX .jt=)4c崥JA+/W%856r0sapµ ݼ+)q)+s\eͺ 79@,\1: %Vf^DAՏ  L v~Zyv'vXn|2XTY1[{$'@H^dA9HcY we%rva3i'J;sn'ЮA.9}UR9]_v)EJN^(PY7X֟­qr".)FHQ"zɔf.hjVffHJzR(o^D 5XB~?j>}&g? iݤ &٣AyowAB;I;(mQ €k7S Rz ւ^|ѹxz7#,5.TQl)# 3%} @P:$BWB&%G: K{@J \^E:mP|^'~<@\X2u`"x.DlzD~d'fs*mx+=!2-Hg%ǑMl8)A Ov0,PN sU^zJjDB\"zV[jQNv$f *󂂫KI3h1@-VAP/%ĿIс5R`!j+%hle!*Z Сmؙ, 4Gjp " sK;T׽`A -˥ 2 жGG{\LKr!&dakL4/ @/`dI|ѤjМ4ҖRr51Rb!4iW[Ռ}Z.,@bP2Jw=.s2$ "=.ATVn֩wQ`~(ERAˆ^@ai[A6S-uww̪7V(IHEwMF f@ꜩxjPƐ~PbW |p̅R^w52@Y}Uڈ-rlifK. DEע\.bJ OIʎK{@k:H^M#,0c`A(,1*T9\ *_34+\npfl`UOE{2]Jy2>k% wChpRxeNp@Bp=19 `[I,Pcԭt6γD{D =ICHCYyFDeCu&P&c+d%A5wJM""%Ί.LVMN^ֱ&_jR<"39E>O;aXT VCCes,4\hߑ)hc3)J@]TpR)Čue0QUW kUo`E2hϛ9]k'o9 ުQT EGPοџʨ)e'2@jj;nq T dŴ( MFC3 !`tdŁ(OiAZEڌY8LEfLQ8bJD69˔m& ?YK/䈒>=Q S!Qfݨ+4S%}<29ꪆHR!%&uR$yN >CR\=AV`K3M ۇ<4dFfs6$ob](km,k<7 sI4̡2?K3Go'w)1'A6>c@E> \Kh(u |ߧ6oxb`|Ig#̠p0x@3H-aRTuƐ^}ЀUablԖMX(i~Y=>蒼K6VƠLӎ< o"2ȼ+q󇍨̲Pu|i9v: |{)xF_gT9qO;tϡکנs`g|;@*yd >G> x}\F D,dRS@*pW? ucI hŅi˷2--~m^TzJ4J/7ϟttr7^nҍ*='*/*C/*ܸ|E{trJJ7FJ/-zQPK dKg t test-file.12_ݎ6 UE"Ț-lW!%9 7;m23-Q!mɿw\wۑLݗŸ#f/'cpB|7~ a~.c=f +v}p!dm9VoN߾ 5vnclm6G,>/!ɤWv^|:wkykv+VRpm[i Kh|tuZf:T`1_`| r՛\żb[>vbgo9b@8k킰>o>[ybݴӗ*mQѷr4ګ)!XdYI~?>҂ٓ&z䦃l>ⷍ+6_yRB9yxSїnD^kg&ĥ)Y ՛Ԋ>l/CY}om;0DcV}L"Xxaqe"ؖw5f\gyOVe/<̿jvG=̟>7nm.o1'CR?u1u1gsuϔ`2) 6}58P}y1cqJ ٣mq䍫a : ~k\f]Jb' @_rbr.AL`]!BMrhp+[w7E9\oؙ ܙfnX .jt=)4c崥JA+/W%856r0sapµ ݼ+)q)+s\eͺ 79@,\1: %Vf^DAՏ  L v~Zyv'vXn|2XTY1[{$'@H^dA9HcY we%rva3i'J;sn'ЮA.9}UR9]_v)EJN^(PY7X֟­qr".)FHQ"zɔf.hjVffHJzR(o^D 5XB~?j>}&g? iݤ &٣AyowAB;I;(mQ €k7S Rz ւ^|ѹxz7#,5.TQl)# 3%} @P:$BWB&%G: K{@J \^E:mP|^'~<@\X2u`"x.DlzD~d'fs*mx+=!2-Hg%ǑMl8)A Ov0,PN sU^zJjDB\"zV[jQNv$f *󂂫KI3h1@-VAP/%ĿIс5R`!j+%hle!*Z Сmؙ, 4Gjp " sK;T׽`A -˥ 2 жGG{\LKr!&dakL4/ @/`dI|ѤjМ4ҖRr51Rb!4iW[Ռ}Z.,@bP2Jw=.s2$ "=.ATVn֩wQ`~(ERAˆ^@ai[A6S-uww̪7V(IHEwMF f@ꜩxjPƐ~PbW |p̅R^w52@Y}Uڈ-rlifK. DEע\.bJ OIʎK{@k:H^M#,0c`A(,1*T9\ *_34+\npfl`UOE{2]Jy2>k% wChpRxeNp@Bp=19 `[I,Pcԭt6γD{D =ICHCYyFDeCu&P&c+d%A5wJM""%Ί.LVMN^ֱ&_jR<"39E>O;aXT VCCes,4\hߑ)hc3)J@]TpR)Čue0QUW kUo`E2hϛ9]k'o9 ުQT EGPοџʨ)e'2@jj;nq T dŴ( MFC3 !`tdŁ(OiAZEڌY8LEfLQ8bJD69˔m& ?YK/䈒>=Q S!Qfݨ+4S%}<29ꪆHR!%&uR$yN >CR\=AV`K3M ۇ<4dFfs6$ob](km,k<7 sI4̡2?K3Go'w)1'A6>c@E> \Kh(u |ߧ6oxb`|Ig#̠p0x@3H-aRTuƐ^}ЀUablԖMX(i~Y=>蒼K6VƠLӎ< o"2ȼ+q󇍨̲Pu|i9v: |{)xF_gT9qO;tϡکנs`g|;@*yd >G> x}\F D,dRS@*pW? ucI hŅi˷2--~m^TzJ4J/7ϟttr7^nҍ*='*/*C/*ܸ|E{trJJ7FJ/-zQ6;*R/*PK dK)[  test-file.13_]6}B?`v-vQY–}\~ER}3&3sm"i#Hy$p溛؎dr(,1{W|>3d[(OvѾa^7k/X_ۜvȇ !hzsUxٴvgk|l?=byid I&5{#zgV/ͮveJ .wKc)j Okhvl^X1r7ay`~l*mdJ.59lV{;}󻏴`d! _|\MF /܎5qp;$&r(mͧc:g']=2 {xX[f.ݪ#Wu{hb>|\O.d4e±rB6@&tḛl#EFObۜqH.?mq _O{;>K&coP$"!:F9o֎W&2q*ȏmyWSn6|d_aXXfap3qv;kjR|;$_XO{:WL &n3WSj:ۊݗ8(g { |=瑫O޸`9߈#fȥlօ,p.v `)Gj-&N44= U-~+-iex~S4%;S;-1EQG["=ultW)8aEFF.F`W|C1^Vwe0`x .|wNVᵬ.ȯ)+Bz;P%9 ExNC Q@ B//BݳCE7pyu݉`]wD UVV P/ҠpPfxX{AU9?e|2]XoCډΜu +`uqKbl_լTbNe{bW=rp`Faq64ħ(aj(peb\H`Kz1Rȣj2 !UůY7ޅJ[;Q,B ЅO߬OBvZ7iI@j=|/r|r*0]PE+*|.4G+J[3|0 *jT58rނi涵 cD/_t.i'=eze/+u9[ HŒ?A G_!{{r9,$+ŕIIpаשy@-։9uAh)L- b3ىٜJ-JOHbd Eqh7v$Nb12D`$7 \R8Z)n/,W66c8겞e֫Zh/AS"-⢝5IYʼ*R (Z .ghK+trA"K ?tht`owTv1XcȥJfb 7)[Y 6Cz1t@?v&4g0Z+mu/XhmaPBri4 -%Q^1SGc ;;٢jZ  :*$b*.}._4i4'u c7gxXMk5c_ ]z˜LsE `ƂCKgg:g*9h1_?bؕ/7sqr] pV_6bu@e(' Qѵh9XҼBœ8p#`9 (N%i)AH+) >jq c$i y 8 U W< 7E2*)5z-)E fǓp^ ikhL#OsIE<9^Y&EsOLy΁(V_+k/ a8u+]?d,:Q .k@fh.RPn9y$ѫE{P  mP͝qHvIbn ӻUWuɗda" (pzN"N=#PYKq6 d wd,e &ژLP[jjk(T_2juLZ?lCyF0s1:JB@Ggu~1)Yq ܴ "mƬfvI"3(i~%Bne6WԬrDI]ی٩tY(mnT ъr)Ē>sNuUCc˒R:E}`D~}xQfPI8f<֙ $݌㖰?)*SIcH>h@몰h16nj˦UNSmiG4ZRтDktICZ_kcP&ikw7]d^8l}FTfYC:RFPX;ivsVi<#KH@dz@*}8ݧpPkP903E bhm. w"m2)@)N@{r1u$B[~QqnwQ|QqJJ[J_v/J7J{OT_T^Tzܸ|EǽwT_Tz~;ҍQWݵE/*=n#-eNvPK dK4  test-file.14_]ݸ }B?O]Xd52–}\`}ER}h73sm"i#H~7u7P}Y;bR}2v g.wP'}?lnw_Pb9ۧB6іkVi7=ӦRSݒ]3$k~_Zn4ڕu+)6-mmmkA%4[V:i~[3V*/0>]w9j.bb[vbgoO)b@8k킰>o>[ybݴӗ*mQѷr4ګ)!XdYI~?>҂ٓ&z䦃l>|q5o- Wl^#Hr$v/a"nδ1m3zQMKS/>R+a3/Z ئlw[jI(9Ff^=8ٷ@Hx#ۮ?om B Di~hs;~֬ kR`\7ꜝtmtWd6bn1om`w\uMqM>ú 8є Y GӅn==plsњ~#%Ɲ37<#?w[S/ۇn}hC!,V^[;B\ ?]MYޓ}bYc O󏚝QaOč[K[Lk (&~]LL @_Ml+t_^أp)Rv&Eh[G>y[؂t#rlߚ!YbI0deЗo1fvYmrl[n9p4O-û}.Y_ؙ ܙfnX .jt=)4c崥JA+/W%856r0sapµ ݼ+)q)+s\eu-@~oL_"sށ"-(Y,ctJp%̼A$xxX*( ȫNSj'#DebHNz]Ȇr6Ʋ B)K8zgVNvܬO]+x]s`fsJ-1HS4jQ >E SnF?[/E]BSEW)\(u *~ͺ.4PB*؉bjЅ.4|fM~ӺILGUI{1P.wXQsQ9^9w Pڢ`oPQK9L3#zsI;){|oFX.k\~Y R@Gf J8tۓI`!Y)LJ#DU7tP'N͋thNy> :DKdhD\ش,NTlVzBe#[H/J#Eَ#qRN!@u<ͯ$aYH Jq}d EQ,^RE} Rgr%iI,UW!f@bp8C[2]3 ^JF{kC.V5K8OBT0HҫC3YAh8k!7]DoDv^{bG3o ZKAdm)1B>CLiU h^hQ_$lPp0pI;ՠ9i-4k=cKBh=X\XĠd${\d+2HP3Ez\:>㩬ܬSQL3̃5>-TB߷>:>rOmZ-P;WUoϭP̑4B:9%,9S̡ G#,!tsŮ<$xି j0d|[ج*͖F ]>E˹\:*ā5ȁA1u*IK .G_IYaTP#I X8c(UrTH=Xgi)W>( ZײZ2jVq< !*UPv*Ѻ4=TZT0`]ͣIer;Y 1Ĵz(n%qe@SCx8Ϣy2V d& !h"k eQGZt ՙ@1)7dD:+F@0[59yZ|IvJm ,̀)]w9j.bb[vbgoO)b@8k킰>o>[ybݴӗ*mQѷr4ګ)!XdYI~?>҂ٓ&z䦃l>|q5o- Wl^#Hr$v/a"nδ1m3zQMKS/>R+a3/Z ئlw[jI(9Ff^=8ٷ@Hx#ۮ?om B Di~hs;~֬ kR`\7ꜝtmtWd6bn1om`w\uMqM>ú 8є Y GӅn==plsњ~#%Ɲ37<#?w[S/ۇn}hC!,V^[;B\ ?]MYޓ}bYc O󏚝QaOč[K[Lk (&~]LL @_Ml+t_^أp)Rv&Eh[G>y[؂t#rlߚ!YbI0deЗo1fvYmrl[n9p4O-û}.Y_ؙ ܙfnX .jt=)4c崥JA+/W%856r0sapµ ݼ+)q)+s\eu-@~oL_"sށ"-(Y,ctJp%̼A$xxX*( ȫNSj'#DebHNz]Ȇr6Ʋ B)K8zgVNvܬO]+x]s`fsJ-1HS4jQ >E SnF?[/E]BSEW)\(u *~ͺ.4PB*؉bjЅ.4|fM~ӺILGUI{1P.wXQsQ9^9w Pڢ`oPQK9L3#zsI;){|oFX.k\~Y R@Gf J8tۓI`!Y)LJ#DU7tP'N͋thNy> :DKdhD\ش,NTlVzBe#[H/J#Eَ#qRN!@u<ͯ$aYH Jq}d EQ,^RE} Rgr%iI,UW!f@bp8C[2]3 ^JF{kC.V5K8OBT0HҫC3YAh8k!7]DoDv^{bG3o ZKAdm)1B>CLiU h^hQ_$lPp0pI;ՠ9i-4k=cKBh=X\XĠd${\d+2HP3Ez\:>㩬ܬSQL3̃5>-TB߷>:>rOmZ-P;WUoϭP̑4B:9%,9S̡ G#,!tsŮ<$xି j0d|[ج*͖F ]>E˹\:*ā5ȁA1u*IK .G_IYaTP#I X8c(UrTH=Xgi)W>( ZײZ2jVq< !*UPv*Ѻ4=TZT0`]ͣIer;Y 1Ĵz(n%qe@SCx8Ϣy2V d& !h"k eQGZt ՙ@1)7dD:+F@0[59yZ|IvJm ,̀)\D[՛ӷ[ͦݴؾ6G,>/!ɤWv^rDjwծ[I߶ni{l5hC_/O[ݚ|ܶR|1WoSs9%趗c/U[<{}34"/ #v.#%W(/AM;}rv}*GJ: ki~N6՞#N~#-=abȡGn:WSr59TJ(Gb7o1-֟kL65ф;_>%+{#_6ȡЗm Ͷ|yDcE SnF?[/E]BSEW)\(u *~ͺ.4PB*؉bjЅ.4|fM~ӺILGUI{1P.wXQsQ9^9w Pڢ`oPQK9L3#zsI;){|oFX.k\~Y R@Gf J8tۓI`!Y)LJ#DU7tP'N͋thNy> :DKdhD\ش/,NTlVzBe#[H/J#Eَ#qRN!@u<ͯ$aYH Jq}d EQ,^RE} Rgr%iI,UW!f@bp8C[2]3 ^JF{kC.V5K8OBT0HҫC3YAh8k!7]DoDv^{bG3o ZKAdm)1B>CLiU h^hQ_$lPp0pI;ՠ9i-4k=cKBh=X\XĠd${\d+2HP3Ez\:>㩬ܬSQL3̃5>-TB߷>:>rOmZ-P;WUoϭP̑4B:9%,9S̡ G#,!tsŮ<$/xି j0d|[ج*͖F ]>E˹\:*ā5ȁA1u*IK .G_IYaTP#I X8c(UrTH=Xgi)W>( ZײZ2jVq< !*UPv*Ѻ4=TZT0`]ͣIer;Y 1Ĵz(n%qe@SEx8Ϣy2V d& !h"k eQGZt ՙ@1)7dD:+F@0[59yZ|IvJm ,̀)\D[՛ӷ[ͦݴؾ6G,>/!ɤWv^rDjwծ[I߶ni{l5hC_/O[ݚ|ܶR|1WoSs9%趗c/U[<{}34"/ #v.#%W(/AM;}rv}*GJ: ki~N6՞#N~#-=abȡGn:WSr59TJ(Gb7o1-֟kL65ф;_>%+{#_6ȡЗm Ͷ|yDcE SnF?[/E]BSEW)\(u *~ͺ.4PB*؉bjЅ.4|fM~ӺILGUI{1P.wXQsQ9^9w Pڢ`oPQK9L3#zsI;){|oFX.k\~Y R@Gf J8tۓI`!Y)LJ#DU7tP'N͋thNy> :DKdhD\ش/,NTlVzBe#[H/J#Eَ#qRN!@u<ͯ$aYH Jq}d EQ,^RE} Rgr%iI,UW!f@bp8C[2]3 ^JF{kC.V5K8OBT0HҫC3YAh8k!7]DoDv^{bG3o ZKAdm)1B>CLiU h^hQ_$lPp0pI;ՠ9i-4k=cKBh=X\XĠd${\d+2HP3Ez\:>㩬ܬSQL3̃5>-TB߷>:>rOmZ-P;WUoϭP̑4B:9%,9S̡ G#,!tsŮ<$/xି j0d|[ج*͖F ]>E˹\:*ā5ȁA1u*IK .G_IYaTP#I X8c(UrTH=Xgi)W>( ZײZ2jVq< !*UPv*Ѻ4=TZT0`]ͣIer;Y 1Ĵz(n%qe@SEx8Ϣy2V d& !h"k eQGZt ՙ@1)7dD:+F@0[59yZ|IvJm ,̀)zA~{ݬ`~nsOsB>\D[՛ӷWfN{lMc{祝]3$k~_Zn4ڑu+)e[5tA_ɗlZntn[b>vWoSs9%贗c/ng-xF04"/ ##%W(/8AM}ٶ([kvdJ.59lV{;}󻏴`d!i#_|\MF /|\O.d4e±rB6@&tḛl#EFObۜqH.?mq _O{>K&coP$"!:F9_m!Ld|Tly/ɾjكⅧG(ధgƭ]K[L;k (&~]LL @_Ml+t_^أp)Rv&E.q䍫oa : ~k\f]Jb' @/M9Rbr.mAL`]!BMrhp+. o&{p*jTFt6s | bpQTіHOy[--U :wX|*9ũ `ؕP 3{U]L!K!_靓rx-_ m+xc mETy/AIeP;.ieE$P("ċoǪPA \@^gw"jW;'*EGrԋ4E.8(i3:g*9h1_?bؕ􆗁PعCh8WE:M2liZASi^I8Iّ]si0{h Sˠ%of L81<X*KA+ڃuf"~{E 6*)5z,)E fǓp^ ikhL#OsIE<9^Y&EsOLy΁(V_+k/ a8u+]o~s(AеR 4iA\c(r7ψܒբӽ\P  mP͝qHvIbn ӳUWuɗda" (pzN"N=#PYKq6 d _d,e &ژLPZ|;}< #-{V&Tzbm.J4J7**n*=F߿^zPq}GUA=7._v=7GJJ7FJ{\~kTzFzQ2|PqFAAW݊G*=8t >o~-ι2W҃J;**= PK dK(Y  test-file.19_ێ}y2X 6wŝa QZ^߇UvK& td.NA?w\wۑLݗŸ#f/'cpB|7~ i~c=f'v} p!dm9VoN^M>[OJMK]$5?/G|v7_\ɺ\mƶy| M~D $aUNz˱/)@^~[B`WZlari>EL'HGtm=ӧ5Ւ+ !wv_lBF?hҖNZcyf'i/7HfOBr薛6m4u'ZNhЋhB\ȗOɊ,Hׇ?ٔzۦl[w!ՒHQn{ MɉBdcc{ɾD;@(ԠsşW띏6mgͺ pG\DFJ[xXzIFO~EdC ٶJnՑκBi1>ɧyXg"XA1K&N&pal#YBOVw戣9Ue}GriSB7w[SOۇn}hC!,fom qe ئw5&T{yOVi-6nm6/o1mCB?u1udwZ)`ɠ0| )5m]Hg {ag"k%#Wq-lr88ZG2AoMK٬ 1XIn@/M9Rbr.m `]!B淂M]rV?- o&=dmgJp#rg8:bsUKOy[--]Utl}UbC#o#^}F@Wz|γ18+pv7@ q)+sq9^B ܘL_GDKP3qYh7SZq P?P 2"OۘX5StWٝNHp̊ #1Et" A t7^ zUOQ]"nسV3f <%0o_٬dbe{BWraFar64ħ(fj^,OD8y`r~S#a$)iG>d 3J]C45E_#~n%k I /vXV ,p?5InQ֠kR^ \k)h31J'47RzBBRG]v¾ k:;K,ߤ ^尫RBEx-WE?QQ^?LOK'Zg:wdnq4`Js1: x@G{u |1)Y@/ z쳪Yq$袰Ŧ -8s)L\q@^u==Q S&Qbި34S%}sLuVCcz|iIIE}E~=uSΐ~yo=ȓ RzhLSB47 Qٜ=IۦXJS#m6y۟}~-ض`.9gibhmQt;f<$f&3dI R\L@]@}*f'h'):hJshu=b: J Œj`CR8. IQץOCjWpSY6B`sOPU|Y{pI= 蔼KwmpFLӎku7a]id^(luBTzY˃(;i:Aa^JC['M 'K㌤_@Jl}qt8cv5(>3~I bptQqo}GJEڢJH;*RwjoT/*C_v+]TzqxQ>Ao~{QFsnLtQqs}G?JERPK dKWoY( > test-file.2_n%7+ g&Ak Te=.TvHw۾UERG gYH&bbwŗꓱk8Cv!>B}6XGݬ_Pb9ۛvȇ !h^9}*k6>blmNJM#Jv͐dRX[{gf;^n^]ɺ\mǶyZ6 -~_L㶕 ,a]Nz˱#kO-n_ng-xF0z3"/ #v#%g(/xAM;}rv}+GJ: kf$jOrv'o~̞01#7dmR+~{Fe-f~lShlV" Z9Jp3,Y4(@16>''{D;@*ԠkJo띏6cgz(%J[t,=WgCf"a/ktoRݭ:rYg6-5>LFS&k8(g)ddrM >RD`W[(挣5e|GriK7g7#?w[S/MMj7>P$"!:F9o~oG+Ƕ)7b>#gX-5{0Vp3ev3LܸΚںŴ6bI#}=S‚#ɤ0 Քζ@A(= Ǚ(eG`8`,_dy7,ud ͺN!,4H]8 ÃfǷʵCoV>?m E9\oؙ ܙfnX .jt=)4c崥JA+/W%856r0sapµ ݼ+)q)+s\eպ 79@,\1: %Vf^DAՏ  L ~Zyv'vXn|2XTY1[{$'@H^dA9HcY we%rva3i'J;sn'ЮA.9}UR9]_v)EJN^(PߢY7X֟­q".)FHQ"zɔf.hjVffHJzR(o^D 5XB?j>}&g? iݤ &٣Ayo_VTy)4G+J[3|0tFcAJ`m-KډwOޫaqe26gK=I'(K8ұwoO.'d2) U=raXBVR:5/h:}^tpbтi?Y-6ͩ(F ^G6y#qRN!@u/$aYH Jq}d EQ,^RE} Rgr%iI=,UW!f@bp8C[2]3 ^JF{kC.V5K8OBT0HҫC3YAh8k!7]DoDv^{bG3o ZKAdm)1B=CLiU h^hQ_$lPp0pI;ՠ9i-4k=cKBh=X\XĠd${\d+2HP3Ez\:>㩬ܬSQL3RAˆ^@aiϭT˴cy*ͽJ9R]hS"Ă>:g*9h1_?bؕ/7sqrCh8WE:M2liZCSi^I8Iّ]si0{h Sˠr$f L81<X*KA+ڃuf"~{E  } ֢@QTIQyRKT54^޷xբczhN , "H'<@Alw+/ӕj0@ys(AеR 4iA\c(r7ψ\Ij^6Tge2B_bTsn$"]묘mk;l%٩f@+1#2 SvH`94T0R\AM%DLDIQꢟ0:PI63ו!DG]pVW_%خ5W}O)ʠ>oRtcnr8UP^FGʨ)e'2@jjB_M6L@&|/UG \h謎7"Qґ ii3f7tH21EM+Xws,S$f-#Jz{l3feCݨ+4S%}\sNuUCcz}eIIaq>3"D:O)a5ZgH뼼^Iiƺ1T}8CCfT;_6'yB |~VkY:{<7`ۆ$PΟ&I'e<$f;TM R\B@[`ڼq @|.5VGJGA%`qA3H-a)*SIcH>h@몰h16nj˦UN4kY=тDktICZ?1(':MDWy%[z_~YP/-'x֎buZ:7";qH/S.{Nܿ՞s?YR)#=Y0V f!R:U+"~@Њ ?Ҳoeۿ16@PK dK䔿A l  test-file.20_ێ}y2X 6wŝa QZ^߇UvK& td.NA?w\wۑLݗŸ#f/'cpB|7~ i~c=f'v} p!dm9VoN^M>[OJMK]$5?/G|v7_\ɺ\mƶy| M~D $aUNz˱/)@^~[B`WZlari>EL'HGtm=ӧ5Ւ+ !wv_lBF?hҖNZcyf'i/7HfOBr薛6m4u'ZNhЋhB\ȗOɊ,Hׇ?ٔzۦl[w!ՒHQn{ MɉBdcc{ɾD;@(ԠsşW띏6mgͺ pG\DFJ[xXzIFO~EdC ٶJnՑκBi1>ɧyXg"XA1K&N&pal#YBOVw戣9Ue}GriSB7w[SOۇn}hC!,fom qe ئw5&T{yOVi-6nm6/o1mCB?u1udwZ)`ɠ0| )5m]Hg {ag"k%#Wq-lr88ZG2AoMK٬ 1XIn@/M9Rbr.m `]!B淂M]rV?- o&=dmgJp#rg8:bsUKOy[--]Utl}UbC#o#^}F@Wz|γ18+pv7@ q)+sq9^B ܘL_GDKP3qYh7SZq P?P 2"OۘX5StWٝNHp̊ #1Et" A t7^ zUOQ]"nسV3f <%0o_٬dbe{BWraFar64ħ(fj^,OD8y`r~S#a$)iG>d 3J]C45E_#~n%k I /vXV ,p?5InQ֠kR^ \k)h31J'47RzBBRG]v¾ k:;K,ߤ ^尫RBEx-WE?QQ^?LOK'Zg:wdnq4`Js1: x@G{u |1)Y@/ z쳪Yq$袰Ŧ -8s)L\q@^u==Q S&Qbި34S%}sLuVCcz|iIIE}E~=uSΐ~yo=ȓ RzhLSB47 Qٜ=IۦXJS#m6y۟}~-ض`.9gibhmQt;f<$f&3dI R\L@]@}*f'h'):hJshu=b: J Œj`CR8. IQץOCjWpSY6B`sOPU|Y{pI= 蔼KwmpFLӎku7a]id^(luBTzY˃(;i:Aa^JC['M 'K㌤_@Jl}qt8cv5(>3~I bptQqo}GJEڢJH;*RwjoT/*C_v+]TzqxQ>Ao~{QFsnLtQqs}G?JER&27EPK dK4:5  test-file.3_n%7+ g&Ak Te=.TvHm*")/&f=#/qG_OƮ م0~ f~c=u?|BloK!.l-{pٴv{Tj >Wk$\;{7ޙjwjO֭ox=ɗlytZf:T`1?`| r՛\ż^{m1v m-u;kų7ڇ՛y1] ѵS@O޷m-mksPnޔc%[ĭ?ڙ6mF/j qio>}JVB#XZۛe4r(k1/cBkm_n!ՒQrg ͢ D!Q=8{ $r<ܑmo׶R]S"~3X|c?kw5HL F)0.Qݧc:g'==2 {xX[}mnՑκ=Ci1o>ɧyXg22XA9K! hpMg"'|G6g.; O[b9+fhۚ'}ojb>V}B& Y0y{;B\ ?]MY>jك⅛W/ఛgƭv֥-wHg.&_6u|L&ft //FqQ8@);d"{-#Wq`9?#fȥlօ,p.v `)Gj,&N44= U-~+-iex~(WU~kTFt6s | bpQTіHOy[--U :wX|*9ũ Ͼ`ؕP 3{U]L!K!_靓rx-օ1ETy$gi(2" ~@HeE^ȷwcr. γ;LHtʊ #9Et"A tbO+,/CF MY}H;Qڙs?v=NwÍJ)LtO [N,RrҨ=,F%LͺŲn}L ,w UO12Fy#_M4s5DSS57FR׻АB }b'eWBQ59IhN&M0U '@OCfs? ]ﰢ2KQ9^9w Pڢ`S7 RmkAELj^\N{^=e/+u9[ HŒ?A G_!{{r9,$+ŕIIpаשy@-׉/󺠃KKLυM[oolNo'WF18RɛrzX 2f~a' E0We不NVK$$U,bgmEꬖ*K:+HhgMh`2/( 4 ڒi% dPRO+4]#o rXyVAꭵ͐^m <Ə2 BsY+  'z 0Cz ;y[в\`= "mKyzW$bNNfDB " fJKMکI#m))G]#%^z BF1~Zا$%#t2'\A*(OefzOmZ-P;WUoϭP̑4B:9%,9S̡ G#,!tsŮ<$xି O52@Y}Uڈ-rlifK. DEע\bJ OIʎK{@k:H^M#,0c`A(,1*T9\ *_34+\npfl`UOE{2]Jy2k% wChpRxeNp@Bp=19 `[I,Pcԭt6γD{D =ICHCYyFJWN:(1F2۠;%p&H]gho&'^f/N5^EP"Ex{,G*+̡9 Rm. od,e &ژLPЁjN*Q !">ꂳڽ*vk,}~HQy0+{ tîEZt4: UVFMy~.<)RkTwe nq `*2{1:JBx@Ggu씎8e/m HH1CȌ) Gl_ƺ#40g$5kQR`1;.km>F\(B,Էs"}KC.KJM &yN >CR\="OJ+0Јzi2ٜ=ۦXJ[#׶Z[9+gi6%0\t,췿v?>N5AO>)1'A61^o Z t#O@O[th*stzM8szlG29cw_㎘+T] a죷=z-\D[W^i/gk|l?=byid I&5wo3o՞[I߶ni{l5hC_/Vnt>n[b~v7yI!>b[>vbgo75b@z=k큰>o>[ybݴӗ*mQѷr4ګ)!Xns٬$w_iwwiC=rA6^|\MF /ɧyXg22XA9K! hpMg"'|G6g.; O[b9 flۚ'}jb>V}B& Y0y{;B\ ?]MY>jك⅛W(ఛgƭv֥-wHg.&6u|L&ft //FqQ8@);d"{-#Wq`9OD֑M[3R|6B 8V; L Ҕ#kvl'e* nG[2kMgp*cg*p#sg:>c1(hK<Ӗ*;p_ȅg_Juv(ýB *xw  ĥ r9B[ ޘBۿ"DE[PpY4KZy T? H $2"/;j9TPtWٝN`qG$`Qel" z  m:e'?S!#pڅ&ά>(̹Yǟ@VX$UJ%Z&'vc~-)9yigHCA|f݌bY >&뻄#EI<ꑯ&SP)ZUu#)]hHUzŲ+` ]f͚$4`u&dݓb '9 ]ﰢ2̷Js$r@E=' PQKǯ9tւ^|ѹxz>_V*(`s㑄{C ({r!XHV+!Q# %;a%.S"6Z(>q.R,:Z0<"6m"Kf96[^3ҋH&o~$Na12D`$7 \R8Z)n/,W66c8겞e֫Zh/AS"-⢝5IYʼ*R (Z .ghK+trA"K ?tht`owTv1XcȥJfb 7)[Y 6Cz1t@?v&4g0Z+mu/XhmaPBri4 -%Q^1SGc ;;٢jZ  :*$b*.}._4i4'u c7gxXMk5c ]z˜LsE `ƂCKgg:g*9h1_?bؕ/7sqr] pV_6bu@e(' Qѵh9XҼBœ8p#`9 (N%i)AH+) >jq c$i y 8 U W< 7E2TRXk`3Y6R0XAFQ*'"D J.Q%Z-][5 5ht/A]fy"S:j+1T;Ŵ( MFC3 cS:@ "mƬfvI"3(i~%Bne6WԬrDI]oOTmTysYxUsEs d+SSzΩj{xx,U^,)5),#PFכH_ ;%F Iq֋<)X2C#f@7yhȌ*zfs6$ob](oяVjmv>K|l0D*s4_}x?}6oxzbܢDC%P) 0>xQfPI8f\PnqKoT.#ҫк*/Zڲ)y|~-_`|-w`2]w~І~m ʄ?Nh] H㎤tRi =ԧCS7AvTA|jEu|0"YȤ/-N@{r1u$B[C~>}_}ҧFi_ToTE_T_PK dKVT  test-file.5_ˎ% W 2< 0@l0{]*UG!%UĻUER n™nc;ɡw]dΐ]Pn'}?lQ7k,ԟmf~n;ÅMxޜ}5n}OJM#Jv͐dRX[{gf;^n^]ɺ\mǶyZ6 -~_L㶕 ,a]Nz˱#kO-n_ng-xF0z3"/ #v#%g(/xAM;}rv}+GJ: kf~N6՞3ٯG=k{GIa`)5mŁˋQ{3=PʎpYm'o\-XN'"G&r)>u! +C&X}iʑ?5p2Moukd 7uˁ|~n޵&3sdڱ33\z%ShViKwV_JNqjm³/av:; ^!kyWSRWzdp^u-@~oL_"sށ"-(Y,ctJp%̼A$xxX*( ȫNSj'#DebHNz]Ȇr6ƲB)K8zgVNvܬO]+x]s`fsJ-1HS4jQ E SnF?[E]BSEW)\(u *~ͺ.4PB*؉bjЅ.|3|fM~ӺILGUI{1P.wXQo楨I;(mQ €kTҩjq)݃i涵 cD/_t.i'=ezf嗕: ؜-x$aޟ/J޽=DJȤ$8BTqCa uhXIԼHGy]%Z%SG &BĦ7@dLvb6f+قtFzQr)v܏I9=,F }r3f"ubS 'P+M%*F1w G]̶ֳ"zuVKR%Huʕ@E\&Io4kT\\JE mɴ^wP2(Xz)'N7 t T[ L,FpPPp)~E{pSo(s}PAZϲZ2jVq< !*UPv*Ѻ4=TZT0`]ͣIer;Y 1Ĵz(n%qe@SCx8Ϣy2V d& !h"k eQ+^-:ˆLL]WKljDDK"us#]zcM$; {6yDf@s}v0X+Hi$h)hc3)J@]Cy8FbbF2PS@ j*۵檯u"EMJœ|5[jjk(T_[5DtHR_+1T;Ŵ( MFC3 cS:@W "mƬfvI"3(i~%Bne6WԬrDI]oOTmTysYUsEs d+SSzΩj{xx,U^,)5),#PFכH_ ;%F Iq֋<)X2C#f@7yhȌ*zlI6źPߢ|^9=M=ضa.9Tgifhq :xR}2sd3 *&[r)N.E@-0}LmLD ĸEJR>`|Ig#̠p0̸֙ $݌㖰x]F1W4uU_7eS*V'GV[5ͿZRhd5$ҡ  qy|n&+̋-?؈,xy(U< kG:}nʇOIu {کO=jn_jρ9Ο,C瑍ʋ,isa}+DiI_[@*pW? ucI hŅi˷2ɧ/*}~E/>Q'/*}җF_T_PK dK1+a  test-file.6_ێ7})w AkT-T54_Tcyk {$<<R+~{_K#Bom;r3Dc?KhM 9P ɾB"vf~mk j5%7G1f=npG\D`-t,=WkCf"a/ktylۥ[u䪳nmZ̻k}L8pPR<.w| o:QGkӖwB7o?ڹG~I_*w51|C!,V^k;B\ ?]MY>jك⅛W(ఛgƭv֥-ݵwHg.&_6u|L&ft //FqQ8@);d"{-#Wq5lr:9ZG6o͐K٬ 1XX \$22)Gj-&N44=~ U-~+-iex~*WU~kTFt6s | bpQTіHOy[--U :wX|*9ũ `ؕ.P 3{U]L!K!_靓rx-oօ1"DE[PpY4KZy T? H $2"/=j9TPtWٝN`qG$`Qel" z  m:eߕS!#pڅ&ά>(̹Yǟ@VX$UJ%Z&'vc~-)9yigHCA|f݌bY ^&뻄#EI<ꑯ&SP)ZUu#)]hHUzŲ+` ]f͚$4`u&dݓb '9 ]ﰢ2̷Js$r@E=' PQKw Rz ւ^\N{^=e/+u9[ HŒ?A G_!{{r9,$+ŕIIpаשy@-׉8uAh)L- үlNo'[F18Rɛx='t"d0XNԉaKO)@7ݗHHpYx?1uY2ۊ`Y-U4Jї u)WqΚ$ÿӬRe^Ppp)i-3%Jx:C9Ƞ`ꥄW:i4:F*,1Rm%X3,D[k!:ty;e戳VrC-N6Adani,v40(ezDږ(h)~I1ĄlQ5`-VAEv1 > /S FRJS3FJ@,&cJ{˅H JFR.eN"U0cQġǥ33:. ?y4oRtc+pzFQ&B;?QS?,OdJ'Z-=wed*3iQ>:㍆fCNȊQv_pq:$̘pĦ m9Bs)L\yP^%u}zl3feC'ݨ+4S%}<29ꪆHR!%&uR$yN >CR\=AV`K3M ۇ<4dFfs6$ob](|Q9=Mkm\ sE~kQt;e<$fg 'Kqr -n}jf'j+Sth*stz=9T;usT{qgH?lħV^TgAO ]!HLJ!x S."'nL>< #-{V&yoQ)~{}QYwTzN~QTz~QEg E'|Q*EPK dKnZGr Y test-file.7_ێ7})w AkT-T54_Tcyk {$<</!ɤWv^|9wݼ5ڕu+)6-mmmk{#-~_L㶕 , a]Nz˱=m-n_ng-xF0z3_#/ #v.#%G(/AM;}rv(GJ: kf~N6՞3VB& Y0yv2 PA~l˻r .ܓ}bYc 7󯚝Qa7č[K[Lk (&~]LL @_Ml+t_^أp)Rv&Eh[G>yk؂t rlߚ!YbI0deKS[Lم<١f q/\ͻ2B0<B;'+Z߬ m+xc mETy$gi(2" ~@HeE^ȷ{cr. γ;LHtʊ #9Et"A tb+,/CF MY}H;Qڙs?v=NwÍJ)LtO [N,RrҨ=,F%LͺŲnL  ,w UO12Fy#_M4s5DSS57FR׻АB }b'eWBQ59IhN&M0U '@OCfs (aEeoEHz܁@izO \?NU9L3#zyѹxzޛ_V*(`s㑄{C ({r!XHV+!Q# %=a%.S"6Z(>q.R,:Z0<"6m _c3ىٜJ-JOHbd Eqh7z$Nb12D`$7 \R8Z)n/,W66~b8겞e֫Zh/AS"-⢝5IYʼ*R (Z .ghK+trA"K ?tht`owTv1XcȥJfb 7)[Y 6Cz1t@?v&4g0Z+mu/XhmaPBri4 -%Q^1SGc ;'٢jZ  :*$b*.}._4i4'u c7gxXMk5c ]z˜LsE `ƂCKgg:g*9h1_?bؕ􆗁P8Ch8WE:M2liZESi^I8Iّ]si0{h Sˠr$f L81<X*KA+ڃuf"~{E _  ֢@QTIQyRKT54^xբczhN , "H'<@Alw+/ӕj0@7YtC.KJM IV}{~<)X2C#f@7yhȌ*zlI6źP?E?Gm,r{`ۆ$PΟ&IwxI,$PQO Z t#O@WP T1^#lxtTufI7%OT.#ҫк*/Zڲ)y|T[5_`|-hd5$ҡ /1(Ou› 2/Ja#*,T_ZNp)#(N;uB+zop?EH%$Y F`N}z8sv5?"J18Oς0^6ѻB6 CP y=\DOz9Cݘ:}xZq!GZLS _˳OTz~QEg E'|Q*ETϟshJ/PK dKEa}~  test-file.8_ێ7})w AkT-T54_Tcyk {$<</!ɤWv^|9wݼ5ڕu+)6-mmmk{#-~_L㶕 , a]Nz˱=m-n_ng-xF0z3_#/ #v.#%G(/AM;}rv(GJ: kf~N6՞3VB& Y0yv2 PA~l˻r .ܓ}bYc 7󯚝Qa7č[K[Lk (&~]LL @_Ml+t_^أp)Rv&Eh[G>yk؂t rlߚ!YbI0deKS[Lم<١f q/\ͻ2B0<B;'+Z߬ m+xc mETy$gi(2" ~@HeE^ȷ{cr. γ;LHtʊ #9Et"A tb+,/CF MY}H;Qڙs?v=NwÍJ)LtO [N,RrҨ=,F%LͺŲnL  ,w UO12Fy#_M4s5DSS57FR׻АB }b'eWBQ59IhN&M0U '@OCfs (aEeoEHz܁@izO \?NU9L3#zyѹxzޛ_V*(`s㑄{C ({r!XHV+!Q# %=a%.S"6Z(>q.R,:Z0<"6m _c3ىٜJ-JOHbd Eqh7z$Nb12D`$7 \R8Z)n/,W66~b8겞e֫Zh/AS"-⢝5IYʼ*R (Z .ghK+trA"K ?tht`owTv1XcȥJfb 7)[Y 6Cz1t@?v&4g0Z+mu/XhmaPBri4 -%Q^1SGc ;'٢jZ  :*$b*.}._4i4'u c7gxXMk5c ]z˜LsE `ƂCKgg:g*9h1_?bؕ􆗁P8Ch8WE:M2liZESi^I8Iّ]si0{h Sˠr$f L81<X*KA+ڃuf"~{E _  ֢@QTIQyRKT54^xբczhN , "H'<@Alw+/ӕj0@7YtC.KJM IV}{~<)X2C#f@7yhȌ*zlI6źP?E?Gm,r{`ۆ$PΟ&IwxI,$PQO Z t#O@WP T1^#lxtTufI7%OT.#ҫк*/Zڲ)y|T[5_`|-hd5$ҡ /1(Ou› 2/Ja#*,T_ZNp)#(N;uB+zop?EH%$Y F`N}z8sv5?"J18Oς0^6ѻB6 CP y=\DOz9Cݘ:}xZq!GZLS _˳OTz~QEg E'|Q*ETϟshJ/O\|J/PK dK!*%  test-file.9_ێ7})w AkT-T54_Tcyk {$<</!ɤWv^|9wݼ5ڕu+)6-mmmk{#-~_L㶕 , a]Nz˱=m-n_ng-xF0z3_#/ #v.#%G(/AM;}rv(GJ: kf~N6՞3VB& Y0yv2 PA~l˻r .ܓ}bYc 7󯚝Qa7č[K[Lk (&~]LL @_Ml+t_^أp)Rv&Eh[G>yk؂t rlߚ!YbI0deKS[Lم<١f q/\ͻ2B0<B;'+Z߬ m+xc mETy$gi(2" ~@HeE^ȷ{cr. γ;LHtʊ #9Et"A tb+,/CF MY}H;Qڙs?v=NwÍJ)LtO [N,RrҨ=,F%LͺŲnL  ,w UO12Fy#_M4s5DSS57FR׻АB }b'eWBQ59IhN&M0U '@OCfs (aEeoEHz܁@izO \?NU9L3#zyѹxzޛ_V*(`s㑄{C ({r!XHV+!Q# %=a%.S"6Z(>q.R,:Z0<"6m _c3ىٜJ-JOHbd Eqh7z$Nb12D`$7 \R8Z)n/,W66~b8겞e֫Zh/AS"-⢝5IYʼ*R (Z .ghK+trA"K ?tht`owTv1XcȥJfb 7)[Y 6Cz1t@?v&4g0Z+mu/XhmaPBri4 -%Q^1SGc ;'٢jZ  :*$b*.}._4i4'u c7gxXMk5c ]z˜LsE `ƂCKgg:g*9h1_?bؕ􆗁P8Ch8WE:M2liZESi^I8Iّ]si0{h Sˠr$f L81<X*KA+ڃuf"~{E _  ֢@QTIQyRKT54^xբczhN , "H'<@Alw+/ӕj0@7YtC.KJM IV}{~<)X2C#f@7yhȌ*zlI6źP?E?Gm,r{`ۆ$PΟ&IwxI,$PQO Z t#O@WP T1^#lxtTufI7%OT.#ҫк*/Zڲ)y|T[5_`|-hd5$ҡ /1(Ou› 2/Ja#*,T_ZNp)#(N;uB+zop?EH%$Y F`N}z8sv5?"J18Oς0^6ѻB6 CP y=\DOz9Cݘ:}xZq!GZLS _˳OTz~QEg E'|Q*ETϟshJ/O\|J/ ҳJ/PKA dK  $test-file.1 f@tf@tf@tPKA dK 6 $A test-file.10 d@t$7@td@tPKA dK}  $test-file.11  @to@t @tPKA dKg t $%test-file.12 dD@t @tdD@tPKA dK)[  $2test-file.13 |@tdD@t|@tPKA dK4  $?test-file.14 c@t|@tc@tPKA dKK Q  $Ltest-file.15 @tc@t@tPKA dK3  $Ytest-file.16 @t@t@tPKA dK`   $ftest-file.17 #@t@t#@tPKA dKZ2* .  $stest-file.18 @t#@t@tPKA dK(Y  $test-file.19 @t@t@tPKA dKWoY( > $)test-file.2 @t:@t@tPKA dK䔿A l  $ztest-file.20 by @t@tby @tPKA dK4:5  $test-file.3 f@t@tf@tPKA dKsG | $test-file.4 G @tf@tG @tPKA dKVT  $test-file.5  @t& @t @tPKA dK1+a  $ test-file.6 e @t @te @tPKA dKnZGr Y $test-file.7 )@te @t)@tPKA dKEa}~  $/test-file.8 @t%@t@tPKA dK!*%  $test-file.9 $7@t@t$7@tPKO././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/tests/test_deflater.py0000644000175100017510000000453115112276603017325 0ustar00runnerrunnerimport os import pathlib import zipfile import pytest import inflate64 testdata_path = pathlib.Path(os.path.dirname(__file__)).joinpath("data") srcdata = testdata_path.joinpath("src.zip") @pytest.mark.parametrize("fname", ["test-file.1", "test-file.2", "test-file.3", "test-file.4", "test-file.5", "test-file.6", "test-file.7", "test-file.8", "test-file.9", "test-file.10", "test-file.11", "test-file.12", "test-file.13", "test-file.14", "test-file.15", "test-file.16", "test-file.17", "test-file.18", "test-file.19", "test-file.20", ]) def test_compress_n(tmp_path, fname): """ Compress test with various data. :param tmp_path: fixture. :param fname: target file name. """ with zipfile.ZipFile(srcdata) as f: data = f.read(fname) expected_len = len(data) compressor = inflate64.Deflater() assert not compressor.eof compressed = compressor.deflate(data) compressed += compressor.flush() assert compressor.eof with tmp_path.joinpath(fname).open("wb") as f: f.write(compressed) decompressor = inflate64.Inflater() extracted = decompressor.inflate(compressed) result_len = len(extracted) assert result_len == expected_len assert extracted == data def test_compress_larger(tmp_path): """ Compression test with larger size of data. :param tmp_path: fixture. """ fname = "10000SalesRecords.csv" BS = 8192 # compressor = inflate64.Deflater() with tmp_path.joinpath(fname).open(mode="wb") as target: with zipfile.ZipFile(srcdata) as myzip: with myzip.open(fname) as myfile: data = myfile.read(BS) while len(data) > 0: target.write(compressor.deflate(data)) data = myfile.read(BS) target.write(compressor.flush()) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1764326787.0 inflate64-1.0.4/tests/test_inflater.py0000644000175100017510000000463415112276603017347 0ustar00runnerrunnerimport hashlib import os import pathlib import zipfile import pytest import inflate64 testdata_path = pathlib.Path(os.path.dirname(__file__)).joinpath("data") testdata = testdata_path.joinpath("test-file.zip") largedata = testdata_path.joinpath("large-file.zip") srcdata = testdata_path.joinpath("src.zip") @pytest.mark.parametrize( "fname,offset,length", [ ("test-file.1", 41, 3096), ("test-file.2", 36434, 3112), ("test-file.3", 42984, 3125), ("test-file.4", 46150, 3143), ("test-file.5", 49334, 3156), ("test-file.6", 52531, 3169), ("test-file.7", 55741, 3186), ("test-file.8", 58968, 3198), ("test-file.9", 62207, 3210), ("test-file.10", 3179, 3227), ("test-file.11", 6448, 3237), ("test-file.12", 9727, 3249), ("test-file.13", 13018, 3266), ("test-file.14", 16326, 3277), ("test-file.15", 19645, 3289), ("test-file.16", 22976, 3304), ("test-file.17", 26322, 3316), ("test-file.18", 29680, 3328), ("test-file.19", 33050, 3343), ("test-file.20", 39588, 3355), ], ) def test_decompress(fname, offset, length): """ Test with various size of data. :param fname: file name of test file. :param offset: data offset in target zip file. :param length: compressed size of data. """ with testdata.open("rb") as f: _ = f.seek(offset, os.SEEK_SET) data = f.read(length) with zipfile.ZipFile(srcdata) as z: expected = z.read(fname) decompressor = inflate64.Inflater() result = decompressor.inflate(data) assert len(result) == len(expected) assert result == expected def test_decompress_larger(): """ Test with larger file with looping inflate() method. """ fname = "10000SalesRecords.csv" offset = 51 remaining = 351298 BS = 8192 # m = hashlib.sha256() with zipfile.ZipFile(srcdata) as z: m.update(z.read(fname)) expected = m.digest() # m = hashlib.sha256() decompressor = inflate64.Inflater() assert not decompressor.eof with largedata.open("rb") as f: _ = f.seek(offset, os.SEEK_SET) while remaining > 0: length = min(BS, remaining) data = f.read(length) m.update(decompressor.inflate(data)) remaining -= len(data) assert decompressor.eof assert m.digest() == expected