pax_global_header00006660000000000000000000000064135412334030014510gustar00rootroot0000000000000052 comment=5b7dbf7bba75c1bb95be058d9c5a60bf85aebb47 conda-package-handling-1.6.0/000077500000000000000000000000001354123340300157535ustar00rootroot00000000000000conda-package-handling-1.6.0/.authors.yml000066400000000000000000000007401354123340300202420ustar00rootroot00000000000000- name: Michael Sarahan email: msarahan@gmail.com github: msarahan alternate_emails: - msarahan@continuum.io - msarahan@anaconda.com aliases: - Mike Sarahan num_commits: 96 first_commit: 2019-01-03 20:00:40 - name: Nehal J Wani email: nehaljw.kkd1@gmail.com num_commits: 2 first_commit: 2019-05-01 08:25:27 github: nehaljwani - name: Jonathan J. Helmus email: jjhelmus@gmail.com num_commits: 10 first_commit: 2019-08-02 14:19:54 github: jjhelmus conda-package-handling-1.6.0/.circleci/000077500000000000000000000000001354123340300176065ustar00rootroot00000000000000conda-package-handling-1.6.0/.circleci/config.yml000066400000000000000000000023371354123340300216030ustar00rootroot00000000000000version: 2 jobs: build: docker: - image: continuumio/miniconda3 working_directory: ~/repo steps: - checkout # - restore_cache: # keys: # - v1-dependencies-{{ checksum "environment.yml" }} # - v1-dependencies- - run: name: install dependencies command: | # conda env create -q || conda env update -q # source activate adj conda install -qy conda-build anaconda-client pytest pytest-cov python-libarchive-c six futures conda config --set auto_update_conda no conda info -a pip install -e . conda build conda.recipe --no-test conda install --use-local conda-package-handling # - save_cache: # paths: # - /opt/conda # key: v1-dependencies-{{ checksum "environment.yml" }} - run: name: run tests command: | # source activate adj pytest --color=yes -v --cov=conda_package_handling tests conda install -c conda-forge codecov codecov - store_artifacts: path: test-reports destination: test-reports conda-package-handling-1.6.0/.codacy.yml000066400000000000000000000002241354123340300200140ustar00rootroot00000000000000--- exclude_paths: - 'conda_package_handling/_version.py' - 'tests/**/*' - 'tests/*' - 'benchmarks/**/*' - 'setup.py' - 'versioneer.py' conda-package-handling-1.6.0/.coveragerc000066400000000000000000000002211354123340300200670ustar00rootroot00000000000000[report] omit = setup.py src/conda_package_handling/__main__.py src/conda_package_handling/_version.py versioneer.py tests/* conda-package-handling-1.6.0/.gitattributes000066400000000000000000000001071354123340300206440ustar00rootroot00000000000000src/conda_package_handling/_version.py export-subst * text=auto eol=lf conda-package-handling-1.6.0/.github/000077500000000000000000000000001354123340300173135ustar00rootroot00000000000000conda-package-handling-1.6.0/.github/pull_request_template.md000066400000000000000000000006041354123340300242540ustar00rootroot00000000000000 conda-package-handling-1.6.0/.gitignore000066400000000000000000000024101354123340300177400ustar00rootroot00000000000000# cythonized module src/conda_package_handling/archive_utils_cy.c # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ junit.xml rever/ conda-package-handling-1.6.0/.mailmap000066400000000000000000000012451354123340300173760ustar00rootroot00000000000000# This file was autogenerated by rever: https://regro.github.io/rever-docs/ # This prevent git from showing duplicates with various logging commands. # See the git documentation for more details. The syntax is: # # good-name bad-name # # You can skip bad-name if it is the same as good-name and is unique in the repo. # # This file is up-to-date if the command git log --format="%aN <%aE>" | sort -u # gives no duplicates. Michael Sarahan Mike Sarahan Michael Sarahan Mike Sarahan Jonathan J. Helmus Nehal J Wani conda-package-handling-1.6.0/.travis.yml000066400000000000000000000016001354123340300200610ustar00rootroot00000000000000# Config file for automatic testing at travis-ci.org dist: xenial language: python python: - "2.7" - "3.7" install: - wget https://repo.anaconda.com/pkgs/misc/conda-execs/conda-4.7.5-linux-64.exe -O conda.exe - chmod +x conda.exe - export CONDA_ALWAYS_YES=1 - ./conda.exe create -p $HOME/miniconda python=$TRAVIS_PYTHON_VERSION conda conda-build pytest six pytest-cov pytest-mock - export PATH="$HOME/miniconda/bin:$PATH" - hash -r - if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then conda install futures; fi - conda build conda.recipe --no-test - conda install --use-local conda-package-handling - conda info -a script: # rebuilding the recipe with our new CPH installed tests it a bit deeper than the test suite. - conda build conda.recipe - pytest -v --color=yes --cov=conda_package_handling tests after_success: - conda install codecov - codecov conda-package-handling-1.6.0/AUTHORS.txt000066400000000000000000000002651354123340300176440ustar00rootroot00000000000000All of the people who have made at least one contribution to conda-package-handling. Authors are sorted by number of commits. * Michael Sarahan * Jonathan J. Helmus * Nehal J Wani conda-package-handling-1.6.0/CHANGELOG.md000066400000000000000000000133331354123340300175670ustar00rootroot00000000000000# current developments 2019-09-20 1.6.0: ------------------ Enhancements: ------------- * add a "prefix" keyword argument to the api.extract function. When combined with dest_dir, the prefix is the base directory, and the dest_dir is the folder name. dest_dir alone as an abspath is both the base directory and the folder name. Bug fixes: ---------- * provide a non-ProcessPoolExecutor path when number of processes is 1 * open files to be added to archives in binary mode. On Windows, the implicit default was text mode, which was corrupting newline data and putting in null characters. * extraction prefix defaults to the folder containing the specified archive. This is a behavior change from 1.3.x, which extracted into the CWD by default. Contributors: ------------- * @msarahan * @jjhelmus 2019-08-31 1.5.0: ------------------ Contributors: ------------- * @msarahan * @jjhelmus 2019-08-04 1.4.1: ------------------ Enhancements: ------------- * several small error fixes from bad copypasta Contributors: ------------- * @msarahan 2019-08-02 1.4.0: ------------------ Bug fixes: ---------- * provide fallback to built-in tarfile if libarchive fails to import. Won't support new .conda format (obviously) * tmpdir created in output folder (defaults to cwd, but not always cwd) Contributors: ------------- * @msarahan 2019-07-11 1.3.11: ------------------ Bug fixes: ---------- * fix BadZipFile exception handling on py27 Contributors: ------------- * @msarahan 2019-06-24 1.3.10: ------------------ Contributors: ------------- * @msarahan 2019-06-14 1.3.9: ------------------ Bug fixes: ---------- * put temporary files in CWD/.cph_tmp(random) instead of default temp dir. Hope that this fixes the permission problems seen on appveyor and azure. Contributors: ------------- * @msarahan 2019-06-13 1.3.8: ------------------ Bug fixes: ---------- * Write output files to output path directly, rather than any temporary. Hope that this fixes permission errors on appveyor/azure Contributors: ------------- * @msarahan 2019-06-12 1.3.7: ------------------ Bug fixes: ---------- * Don't print message for every skipped file that already exists. Don't even look at files that match the target conversion pattern. Contributors: ------------- * @msarahan 2019-06-12 1.3.6: ------------------ Contributors: ------------- 2019-06-12 1.3.5: ------------------ Bug fixes: ---------- * fix recursion issue with TemporaryDirectory Contributors: ------------- * @msarahan 2019-06-11 1.3.4: ------------------ Bug fixes: ---------- * fix setup.cfg path issue with versioneer * try copying temporary artifact to final location instead of moving it, in hopes of avoiding permission errors Contributors: ------------- * @msarahan 2019-06-11 1.3.3: ------------------ Bug fixes: ---------- * add .gitattributes file to fix versioneer not working Contributors: ------------- * @msarahan 2019-06-11 1.3.2: ------------------ Bug fixes: ---------- * port rm_rf functionality from conda, to better handle permissions errors being observed on Azure and Appveyor windows hosts (but not on local machines) Contributors: ------------- * @msarahan 2019-06-11 1.3.1: ------------------ Bug fixes: ---------- * try to wrap tempdir cleanup so that it never exits violently. Add warning message. Contributors: ------------- * @msarahan 2019-06-10 1.3.0: ------------------ Enhancements: ------------- * add a cph-specific exception, so that downstream consumers of cph don't have to handle libarchive exceptions Contributors: ------------- * @msarahan 2019-06-08 1.2.0: ------------------ Enhancements: ------------- * add get_default_extracted_folder api function that returns the folder location where a file would be extracted to by default (no dest folder specified) * add --processes flag to cph t, to limit number of processes spawned. Defaults to number of CPUs if not set. Contributors: ------------- * @msarahan 2019-05-21 1.1.5: ------------------ Bug fixes: ---------- * generate symlink tests rather than including file layout, to avoid issues on win Contributors: ------------- * @msarahan 2019-05-21 1.1.4: ------------------ Enhancements: ------------- * moved conda_package_handling into src (src layout) Contributors: ------------- * @msarahan 2019-05-20 1.1.3: ------------------ Bug fixes: ---------- * improve tests of symlink and other file contents Contributors: ------------- * @msarahan 2019-05-20 1.1.2: ------------------ Bug fixes: ---------- * fix creation dropping symlinks and things that are not otherwise "files" Contributors: ------------- * @msarahan 2019-05-14 1.1.1: ------------------ Bug fixes: ---------- * fix path join bug, where an absolute path for out_fn was causing file writing problems Contributors: ------------- * @msarahan 2019-05-10 1.1.0: ------------------ Bug fixes: ---------- * simplify .conda package info, to work with conda/conda#8639 and conda/conda-build#3500 * add missing six dep * fix reference in cli.py to incorrect API function (how was this working?) * Wrap calls to shutil.move in try, because of windows permission errors observed on Appveyor Contributors: ------------- * @msarahan * @nehaljwani 2019-02-13 1.0.4: ------------------ Enhancements: ------------- * new api-only function, ``get_pkg_details`` that returns package size and checksum info in dictionary form * add version info output to the CLI Contributors: ------------- * @msarahan 2019-02-04 1.0.3: ------------------ Bug fixes: ---------- * fix support for python 2.7 Contributors: ------------- * @msarahan 2019-02-04 1.0.2: ------------------ Contributors: ------------- * @msarahan 2019-02-04 1.0.1: ------------------ Contributors: ------------- ## 1.0.0 Initial release conda-package-handling-1.6.0/LICENSE000066400000000000000000000027411354123340300167640ustar00rootroot00000000000000BSD 3-Clause License Copyright (c) 2019, Conda All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. conda-package-handling-1.6.0/MANIFEST.in000066400000000000000000000000271354123340300175100ustar00rootroot00000000000000global-exclude tests/* conda-package-handling-1.6.0/README.md000066400000000000000000000072171354123340300172410ustar00rootroot00000000000000# conda-package-handling Create and extract conda packages of various formats ``` usage: cph [-h] {extract,x,create,c,transmute,t} ... optional arguments: -h, --help show this help message and exit subcommands: {extract,x,create,c,transmute,t} extract (x) extract package contents create (c) bundle files into a package transmute (t) convert from one package type to another ``` cph is an abstraction of conda package handling and a tool for extracting, creating, and converting between formats. At the time of writing, the standard conda package format is a .tar.bz2 file. That will need to be maintained for quite a long time, thanks to the long tail of people using old conda versions. There is a new conda format, described at https://docs.google.com/document/d/1HGKsbg_j69rKXPihhpCb1kNQSE8Iy3yOsUU2x68x8uw/edit?usp=sharing. This new format is designed to have much faster metadata access and utilize more modern compression algorithms, while also facilitating package signing without adding sidecar files. For example, one can transmute (convert) the old package format to the new one with cph: ``` cph transmute mkl-2018.0.3-1.tar.bz2 .conda ``` One can then test the speed of extracting the old file and the new one: ``` $ time cph extract mkl-2018.0.3-1.tar.bz2 --dest mkl-a cph extract mkl-2018.0.3-1.tar.bz2 --dest mkl-a 18.16s user 0.59s system 98% cpu 19.015 total $ time cph extract mkl-2018.0.3-1.conda --dest mkl-b cph extract mkl-2018.0.3-1.conda --dest mkl-b 1.41s user 0.65s system 87% cpu 2.365 total ``` The new package format is an indexed, uncompressed zip file that contains tarfiles that can use any compression supported by libarchive. The info metadata about packages is separated into its own tarfile from the rest of the package contents. By doing this, we can extract only the metadata, for speeding up operations like indexing. ``` $ time cph extract mkl-2018.0.3-1.conda --dest mkl-b --info cph extract mkl-2018.0.3-1.conda --dest mkl-b --info 0.21s user 0.07s system 98% cpu 0.284 total``` ``` Package creation is primarily something that conda-build uses, as cph does absolutely nothing to create metadata that makes a conda package useful. However, you may consider it useful to abuse cph's package creation as a way of utilizing newer compression formats. ``` cph create /path/to/some/dir my-cute-archive.conda ``` Again, this would not necessarily create a valid conda package, unless the directory being archived contained all the metadata in an "info" directory that a standard conda package needs. The .conda file it creates, however, uses all the nice new compression formats, though, and you could use cph on some other computer to extract it. ## Releasing Conda-package-handling releases may be performed via the `rever command `_. Rever is configured to perform the activities for a typical conda-build release. To cut a release, simply run ``rever `` where ```` is the release number that you want bump to. For example, ``rever 1.2.3``. However, it is always good idea to make sure that the you have permissions everywhere to actually perform the release. So it is customary to run ``rever check`` before the release, just to make sure. The standard workflow is thus:: rever check rever 1.2.3 If for some reason a release fails partway through, or you want to claw back a release that you have made, rever allows you to undo activities. If you find yourself in this pickle, you can pass the ``--undo`` option a comma-separated list of activities you'd like to undo. For example:: rever --undo tag,changelog,authors 1.2.3 Happy releasing! conda-package-handling-1.6.0/appveyor.yml000066400000000000000000000041311354123340300203420ustar00rootroot00000000000000environment: matrix: - PYTHON_VERSION: "3.6" - PYTHON_VERSION: "2.7" install: # If there is a newer build queued for the same PR, cancel this one. # The AppVeyor 'rollout builds' option is supposed to serve the same # purpose but it is problematic because it tends to cancel builds pushed # directly to master instead of just PR builds (or the converse). # credits: JuliaLang developers. - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod ` https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | ` Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { ` throw "There are newer queued builds for this pull request, failing early." } - appveyor DownloadFile https://repo.anaconda.com/pkgs/misc/conda-execs/conda-4.7.5-win-64.exe -FileName loner_conda.exe - set "CONDA_PKGS_DIRS=C:\condacache\pkgs" - set "CONDA_ALWAYS_YES=true" - set "CONDA_AUTO_UPDATE_CONDA=false" - loner_conda.exe create -p C:\test_conda python=%PYTHON_VERSION% conda conda-build pytest six pytest-cov pytest-mock "conda-package-handling!=1.5.0" # these correspond to folder naming of miniconda installs on appveyor. See # https://www.appveyor.com/docs/installed-software#python - call "C:\test_conda\Scripts\activate.bat" # Needed for building python2.7 x64 extensions with conda-build - conda install -c defaults -c conda-forge vs2008_express_vc_python_patch - call setup_x64 - conda info # this is to ensure dependencies - conda build conda.recipe --no-test - conda install --use-local conda-package-handling # Not a .NET project, we build package in the install step instead build: false test_script: # rebuilding the recipe with our new CPH installed tests the unicode issue that occurred in 1.5.0 - conda build conda.recipe - py.test --color=yes -v --cov conda_package_handling --cov-report xml tests on_success: - conda install codecov - codecov --env PYTHON_VERSION --file C:\projects\conda-package-handling\coverage.xml conda-package-handling-1.6.0/conda.recipe/000077500000000000000000000000001354123340300203055ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/conda_build_config.yaml000066400000000000000000000003421354123340300247600ustar00rootroot00000000000000# The default AppVeyor VM image includes Visual Studio 2008 and 2015 but not 2017 # Rather than using a different image, use VS2015 for non-Python 2.7 builds c_compiler: # [win and not py27] - vs2015 # [win and not py27] conda-package-handling-1.6.0/conda.recipe/libarchive-patches/000077500000000000000000000000001354123340300240425ustar00rootroot000000000000000001-Add-lib-to-CMAKE_FIND_LIBRARY_PREFIXES-for-lzma.patch000066400000000000000000000007151354123340300350750ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patches--- work/CMakeLists.txt.orig 2017-12-15 16:52:54.709341000 -0600 +++ work/CMakeLists.txt 2017-12-15 16:54:40.943948000 -0600 @@ -454,7 +454,10 @@ # Find LZMA # IF(ENABLE_LZMA) + SET(OLD_CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}") + SET(CMAKE_FIND_LIBRARY_PREFIXES ";lib") FIND_PACKAGE(LibLZMA) + SET(CMAKE_FIND_LIBRARY_PREFIXES "${OLD_CMAKE_FIND_LIBRARY_PREFIXES}") ELSE() SET(LIBZMA_FOUND FALSE) # Override cached value ENDIF() 0002-xar-fix-bad-seek-in-move_reading_point.patch000066400000000000000000000016451354123340300346720ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patchesFrom 5a837b80fe94cec2aeee77751a9b14386167c509 Mon Sep 17 00:00:00 2001 From: Grzegorz Antoniak Date: Thu, 15 Feb 2018 18:15:32 +0100 Subject: [PATCH] xar: fix bad seek in move_reading_point() --- libarchive/archive_read_support_format_xar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libarchive/archive_read_support_format_xar.c b/libarchive/archive_read_support_format_xar.c index 602fc7722..4c3d50a10 100644 --- a/libarchive/archive_read_support_format_xar.c +++ b/libarchive/archive_read_support_format_xar.c @@ -967,7 +967,7 @@ move_reading_point(struct archive_read *a, uint64_t offset) return ((int)step); xar->offset += step; } else { - int64_t pos = __archive_read_seek(a, offset, SEEK_SET); + int64_t pos = __archive_read_seek(a, xar->h_base + offset, SEEK_SET); if (pos == ARCHIVE_FAILED) { archive_set_error(&(a->archive), ARCHIVE_ERRNO_MISC, 0003-VC9-compatibility-test-for-BCryptDeriveKeyPBKDF2.patch000066400000000000000000000021151354123340300362360ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patchesdiff -urN work.orig/CMakeLists.txt work/CMakeLists.txt --- work.orig/CMakeLists.txt 2018-04-22 06:34:09.127722200 -0500 +++ work/CMakeLists.txt 2018-04-22 06:37:35.445261100 -0500 @@ -635,6 +635,8 @@ # Following files need windows.h, so we should test it after windows.h test. LA_CHECK_INCLUDE_FILE("wincrypt.h" HAVE_WINCRYPT_H) LA_CHECK_INCLUDE_FILE("winioctl.h" HAVE_WINIOCTL_H) +# Only available on Windows 7 and above, so not possible with vc9. +CHECK_FUNCTION_EXISTS(BCryptDeriveKeyPBKDF2 HAVE_BCRYPT_DERIVE_KEY_PBKDF2) # # Check whether use of __EXTENSIONS__ is safe. diff -urN work.orig/libarchive/archive_cryptor.c work/libarchive/archive_cryptor.c --- work.orig/libarchive/archive_cryptor.c 2018-04-22 06:33:58.190129600 -0500 +++ work/libarchive/archive_cryptor.c 2018-04-22 06:38:51.330777500 -0500 @@ -57,7 +57,7 @@ return 0; } -#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H) +#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H) && defined(HAVE_BCRYPT_DERIVE_KEY_PBKDF2) #ifdef _MSC_VER #pragma comment(lib, "Bcrypt.lib") #endif 0004-VC9-compatibility-define-BCRYPT_SUCCESS.patch000066400000000000000000000030231354123340300342540ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patches--- work.orig/libarchive/archive_cryptor_private.h 2018-04-22 06:33:58.205352500 -0500 +++ work/libarchive/archive_cryptor_private.h 2018-04-22 07:01:39.353981900 -0500 @@ -64,12 +64,7 @@ } archive_crypto_ctx; #elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H) -#include - -/* Common in other bcrypt implementations, but missing from VS2008. */ -#ifndef BCRYPT_SUCCESS -#define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) -#endif +#include "bcrypt_with_vs2008.h" #define AES_MAX_KEY_SIZE 32 #define AES_BLOCK_SIZE 16 --- work.orig/libarchive/archive_hmac_private.h 2018-04-22 06:33:58.565158400 -0500 +++ work/libarchive/archive_hmac_private.h 2018-04-22 07:01:16.915110000 -0500 @@ -64,7 +64,7 @@ } archive_crypto_ctx; #elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H) -#include +#include "bcrypt_with_vs2008.h" /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS --- work.orig/libarchive/bcrypt_with_vs2008.h 2018-04-22 07:33:12.000000000 -0500 +++ work/libarchive/bcrypt_with_vs2008.h 2018-04-22 07:01:13.212019900 -0500 @@ -0,0 +1,14 @@ +#if !defined(BCRYPT_WITH_VS2008) +#define BCRYPT_WITH_VS2008 +#include + +/* Common in other bcrypt implementations, but missing from VS2008. */ +#ifndef BCRYPT_SUCCESS +#ifndef NT_SUCCESS +#define NT_SUCCESS(x) ((x)>=0) +#define STATUS_SUCCESS ((NTSTATUS)0) +#endif +#define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) +#endif + +#endif /* BCRYPT_WITH_VS2008 */ 0005-VC9-compatibility-ignore-some-warnings.patch000066400000000000000000000011301354123340300347010ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patches--- work.orig/libarchive/archive_private.h 2018-04-22 06:33:58.393242100 -0500 +++ work/libarchive/archive_private.h 2018-04-22 07:13:01.088919200 -0500 @@ -46,6 +46,15 @@ #define __LA_DEAD #endif +#if defined(_WIN32) && (_MSC_VER<1900) +// Disable conversion from size_t to int possible loss of data +#pragma warning(disable:4267) +#pragma warning(disable:4244) +// Disable: "The POSIX name for this item is deprecated." +#pragma warning(disable:4996) +#endif + + #define ARCHIVE_WRITE_MAGIC (0xb0c5c0deU) #define ARCHIVE_READ_MAGIC (0xdeb0c5U) #define ARCHIVE_WRITE_DISK_MAGIC (0xc001b0c5U) 0006-VC-openssl-define-inline-as-__inline.patch000066400000000000000000000025641354123340300342460ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patches--- work.orig/libarchive/archive_openssl_evp_private.h 2017-07-09 21:38:04.000000000 -0500 +++ work/libarchive/archive_openssl_evp_private.h 2018-04-22 08:25:29.735929400 -0500 @@ -31,6 +31,11 @@ #if OPENSSL_VERSION_NUMBER < 0x10100000L #include /* malloc, free */ #include /* memset */ + +#if defined(_MSC_VER) && (_MSC_VER < 1900) +#define inline __inline +#endif + static inline EVP_MD_CTX *EVP_MD_CTX_new(void) { EVP_MD_CTX *ctx = (EVP_MD_CTX *)calloc(1, sizeof(EVP_MD_CTX)); --- work.orig/libarchive/archive_openssl_hmac_private.h 2017-07-09 21:38:04.000000000 -0500 +++ work/libarchive/archive_openssl_hmac_private.h 2018-04-22 08:37:10.860250700 -0500 @@ -31,6 +31,11 @@ #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) #include /* malloc, free */ #include /* memset */ + +#if defined(_MSC_VER) && (_MSC_VER < 1900) +#define inline __inline +#endif + static inline HMAC_CTX *HMAC_CTX_new(void) { HMAC_CTX *ctx = (HMAC_CTX *)calloc(1, sizeof(HMAC_CTX)); --- work.orig/libarchive/xxhash.c 2018-04-23 10:39:36.548437500 -0500 +++ work/libarchive/xxhash.c 2018-04-23 10:40:26.751993100 -0500 @@ -37,6 +37,10 @@ #include "archive_xxhash.h" #ifdef HAVE_LIBLZ4 + +#if defined(_MSC_VER) && (_MSC_VER < 1900) +#define inline __inline +#endif /*************************************** ** Tuning parameters 0007-CMake-VC9-compatibility-ignore-some-warnings.patch000066400000000000000000000024731354123340300356740ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patchesFrom 998330d99a8951a6cd22afcce9377645912c7004 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Mon, 23 Apr 2018 10:23:54 -0500 Subject: [PATCH 2/2] CMake: VC9 compatibility ignore some warnings --- CMakeLists.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 73bf07b..60e391c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -172,6 +172,17 @@ IF (MSVC) ################################################################# # Set compile flags for release build. SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oi") + if(MSVC_VERSION LESS 1900) + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4127") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4711") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4820") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4668") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4710") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4255") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4267") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4244") + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996") + ENDIF (MSVC_VERSION LESS 1900) ENDIF (MSVC) # Enable CTest/CDash support -- 2.15.0 conda-package-handling-1.6.0/conda.recipe/libarchive-patches/0008-VC9-compatibility-remove-C99.patch000066400000000000000000000101121354123340300325500ustar00rootroot00000000000000--- libarchive-3.3.2/libarchive/archive_read_support_filter_lz4.c.orig 2018-04-23 16:51:54.000000000 +0100 +++ libarchive-3.3.2/libarchive/archive_read_support_filter_lz4.c 2018-04-23 16:52:00.000000000 +0100 @@ -336,6 +336,7 @@ while (state->stage == SELECT_STREAM) { const char *read_buf; + uint32_t number; /* Read a magic number. */ read_buf = __archive_read_filter_ahead(self->upstream, 4, @@ -345,13 +346,14 @@ *p = NULL; return (0); } - uint32_t number = archive_le32dec(read_buf); + number = archive_le32dec(read_buf); __archive_read_filter_consume(self->upstream, 4); if (number == LZ4_MAGICNUMBER) return lz4_filter_read_default_stream(self, p); else if (number == LZ4_LEGACY) return lz4_filter_read_legacy_stream(self, p); else if ((number & ~0xF) == LZ4_SKIPPABLED) { + uint32_t skip_bytes; read_buf = __archive_read_filter_ahead( self->upstream, 4, NULL); if (read_buf == NULL) { @@ -361,7 +363,7 @@ "Malformed lz4 data"); return (ARCHIVE_FATAL); } - uint32_t skip_bytes = archive_le32dec(read_buf); + skip_bytes = archive_le32dec(read_buf); __archive_read_filter_consume(self->upstream, 4 + skip_bytes); } else { --- work.orig/libarchive/test/test_sparse_basic.c 2018-09-03 22:07:16.000000000 -0500 +++ work/libarchive/test/test_sparse_basic.c 2018-09-04 07:27:01.946534600 -0500 @@ -109,6 +109,7 @@ char buff[1024]; HANDLE handle; DWORD dmy; + size_t offsetSoFar = 0; memset(buff, ' ', sizeof(buff)); @@ -119,20 +120,19 @@ assert(DeviceIoControl(handle, FSCTL_SET_SPARSE, NULL, 0, NULL, 0, &dmy, NULL) != 0); - size_t offsetSoFar = 0; - while (s->type != END) { if (s->type == HOLE) { LARGE_INTEGER fileOffset, beyondOffset, distanceToMove; + FILE_ZERO_DATA_INFORMATION zeroInformation; + DWORD bytesReturned; + fileOffset.QuadPart = offsetSoFar; beyondOffset.QuadPart = offsetSoFar + s->size; distanceToMove.QuadPart = s->size; - FILE_ZERO_DATA_INFORMATION zeroInformation; zeroInformation.FileOffset = fileOffset; zeroInformation.BeyondFinalZero = beyondOffset; - DWORD bytesReturned; assert(SetFilePointerEx(handle, distanceToMove, NULL, FILE_CURRENT) != 0); assert(SetEndOfFile(handle) != 0); --- work.orig/libarchive/archive_write_disk_windows.c 2018-09-04 07:15:12.902734600 -0500 +++ work/libarchive/archive_write_disk_windows.c 2018-09-04 07:24:43.543382500 -0500 @@ -1515,7 +1515,7 @@ return symlink(linkname, a->name) ? errno : 0; #else if (linkname != NULL) { - wchar_t *linkfull, *namefull; + wchar_t const *linkfull, *namefull; // Not sure which is best here, this is an absolute link, always: // linkfull = __la_win_permissive_name_w(linkname); --- work.orig/tar/test/test_option_C_mtree.c 2018-09-03 22:07:16.000000000 -0500 +++ work/tar/test/test_option_C_mtree.c 2018-09-04 07:23:14.413229300 -0500 @@ -30,10 +30,9 @@ DEFINE_TEST(test_option_C_mtree) { - char *p0; + char *p0 = NULL; size_t s; int r; - p0 = NULL; char *content = "./foo type=file uname=root gname=root mode=0755\n"; char *filename = "output.tar"; --- work.orig/libarchive/archive_read_support_filter_zstd.c 2018-09-03 22:07:16.000000000 -0500 +++ work/libarchive/archive_read_support_filter_zstd.c 2018-11-02 08:36:21.350115700 -0500 @@ -209,7 +209,9 @@ state = (struct private_data *)self->data; - out = (ZSTD_outBuffer) { state->out_block, state->out_block_size, 0 }; + out.dst = state->out_block; + out.size = state->out_block_size; + out.pos = 0; /* Try to fill the output buffer. */ while (out.pos < out.size && !state->eof) { --- work.orig/libarchive/archive_write_add_filter_zstd.c 2018-09-03 22:07:16.000000000 -0500 +++ work/libarchive/archive_write_add_filter_zstd.c 2018-11-02 08:52:09.469969000 -0500 @@ -259,7 +259,10 @@ drive_compressor(struct archive_write_filter *f, struct private_data *data, int finishing, const void *src, size_t length) { - ZSTD_inBuffer in = (ZSTD_inBuffer) { src, length, 0 }; + ZSTD_inBuffer in; + in.src = src; + in.size = length; + in.pos = 0; for (;;) { if (data->out.pos == data->out.size) { 0009-CMake-Force-Multi-threaded-DLL-runtime.patch000066400000000000000000000023341354123340300343500ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patchesFrom bfddc49f8119d6718a8a11b130381096ae7c0362 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 24 Apr 2018 18:37:28 -0500 Subject: [PATCH] CMake: Force Multi-threaded DLL runtime --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index bd4517c..828fc80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -169,6 +169,8 @@ IF (MSVC) SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /WX") # /Oi option enables built-in functions. SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Oi") + # /MD option for Multi-threaded DLL (non-debug since you cannot mix them). + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MD") ################################################################# # Set compile flags for release build. SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oi") @@ -183,6 +185,8 @@ IF (MSVC) SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4244") SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996") ENDIF (MSVC_VERSION LESS 1900) + # /MD option for Multi-threaded DLL. + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD") ENDIF (MSVC) # Enable CTest/CDash support -- 2.15.0 0010-Use-CreateSymbolicLinkW-on-Windows-for-symlinks-WIP.patch000066400000000000000000000030101354123340300371120ustar00rootroot00000000000000conda-package-handling-1.6.0/conda.recipe/libarchive-patchesFrom 401ad3c40f5876da0e05511196b27d2b77b61957 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 20 Jun 2018 05:40:46 -0700 Subject: [PATCH 1/2] Use CreateSymbolicLinkW on Windows for symlinks (WIP) This doesn't handle SYMBOLIC_LINK_FLAG_DIRECTORY yet --- libarchive/archive_write_disk_windows.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/libarchive/archive_write_disk_windows.c b/libarchive/archive_write_disk_windows.c index 78eda4ab..b393a1fe 100644 --- a/libarchive/archive_write_disk_windows.c +++ b/libarchive/archive_write_disk_windows.c @@ -1514,7 +1514,32 @@ create_filesystem_object(struct archive_write_disk *a) #if HAVE_SYMLINK return symlink(linkname, a->name) ? errno : 0; #else - return (EPERM); + if (linkname != NULL) { + wchar_t *linkfull, *namefull; + + // Not sure which is best here, this is an absolute link, always: + // linkfull = __la_win_permissive_name_w(linkname); + linkfull = linkname; + namefull = __la_win_permissive_name_w(a->name); + if (linkfull == NULL || namefull == NULL) { + errno = EINVAL; + r = -1; + } + else { +#if !defined(SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE) +#define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 0x2 +#endif + r = CreateSymbolicLinkW(namefull, linkfull, SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE); + if (r == 0) { + la_dosmaperr(GetLastError()); + r = errno; + } + else + r = 0; + } + + return r; + } #endif } -- 2.16.2 conda-package-handling-1.6.0/conda.recipe/libarchive-patches/0011-Debugging-for-this.patch000066400000000000000000000025261354123340300310730ustar00rootroot00000000000000From 39702357f26920b078537762e1877e30fffbf6b9 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 20 Jun 2018 05:43:59 -0700 Subject: [PATCH 2/2] Debugging for this --- libarchive/archive_write_disk_windows.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libarchive/archive_write_disk_windows.c b/libarchive/archive_write_disk_windows.c index b393a1fe..9fd8ab0b 100644 --- a/libarchive/archive_write_disk_windows.c +++ b/libarchive/archive_write_disk_windows.c @@ -283,7 +283,9 @@ file_information(struct archive_write_disk *a, wchar_t *path, & FILE_ATTRIBUTE_REPARSE_POINT) && (findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK))) flag |= FILE_FLAG_OPEN_REPARSE_POINT; - + if (flag & FILE_FLAG_OPEN_REPARSE_POINT) { + wprintf(L"Hello symlink a->name %s\n",a->name); + } h = CreateFileW(a->name, 0, 0, NULL, OPEN_EXISTING, flag, NULL); if (h == INVALID_HANDLE_VALUE && @@ -1275,7 +1277,11 @@ static int restore_entry(struct archive_write_disk *a) { int ret = ARCHIVE_OK, en; - + if (wcsstr(a->name, L"cluster.tgz")) + { + // Using e.g.: C:\Users\builder\m64\conda-bld\src_cache\R-3.5.0_fd1725535e.tar.gz + printf("Debug this\n"); + } if (a->flags & ARCHIVE_EXTRACT_UNLINK && !S_ISDIR(a->mode)) { /* * TODO: Fix this. Apparently, there are platforms -- 2.16.2 conda-package-handling-1.6.0/conda.recipe/meta.yaml000066400000000000000000000017051354123340300221220ustar00rootroot00000000000000# libarchive 3.4.0 breaks some symlink stuff on macos. Holding back for now. {% set libarchive_version = "3.3.3" %} package: name: conda-package-handling version: {{ GIT_DESCRIBE_TAG }}.{{ GIT_BUILD_STR }} source: - path: .. build: script: python setup.py install --single-version-externally-managed --record=record.txt entry_points: - cph = conda_package_handling.cli:main requirements: build: - {{ compiler('c') }} host: - python - setuptools - cython - msinttypes # [win and vc<14] - _libarchive_static_for_cph run: - futures # [py27] - python - six - tqdm test: source_files: - tests requires: - pytest - pytest-cov - pytest-mock imports: - conda_package_handling - conda_package_handling.archive_utils_cy commands: - pytest tests about: home: https://github.com/conda/conda-package-handling summary: Create and extract conda packages of various formats conda-package-handling-1.6.0/conda.recipe/static_bld.bat000066400000000000000000000076501354123340300231150ustar00rootroot00000000000000:: Needed so we can find stdint.h from msinttypes. set LIB=%LIBRARY_LIB%;%LIB% set LIBPATH=%LIBRARY_LIB%;%LIBPATH% set INCLUDE=%LIBRARY_INC%;%INCLUDE% :: VS2008 doesn't have stdbool.h so copy in our own :: to 'lib' where the other headers are so it gets picked up. if "%VS_MAJOR%" == "9" ( if "%ARCH%" == "64" ( :: The Windows 6.0A SDK does not provide the bcrypt.lib for 64-bit: :: C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64 :: .. yet does for 32-bit, oh well, this may disable password protected zip support. :: https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/673cc344-430c-4510-96e8-80b0bb42ae11/can-not-link-bcryptlib-to-an-64bit-build?forum=windowssdk set ENABLE_CNG=NO ) else ( set ENABLE_CNG=YES :: Have decided to standardise on *not* using bcrypt instead. If we update to the Windows Server 2008 SDK we could revisit this set ENABLE_CNG=NO ) ) if "%vc%" NEQ "9" goto not_vc9 :: This does not work yet: :: usage: cl [ option... ] filename... [ /link linkoption... ] set USE_C99_WRAP=no copy %LIBRARY_INC%\inttypes.h src\common\inttypes.h copy %LIBRARY_INC%\stdint.h src\common\stdint.h goto endit :not_vc9 set USE_C99_WRAP=no :endit if exist CMakeCache.txt goto build if "%USE_C99_WRAP%" NEQ "yes" goto skip_c99_wrap set COMPILER=-DCMAKE_C_COMPILER=c99-to-c89-cmake-nmake-wrap.bat set C99_TO_C89_WRAP_DEBUG_LEVEL=1 set C99_TO_C89_WRAP_SAVE_TEMPS=1 set C99_TO_C89_WRAP_NO_LINE_DIRECTIVES=1 set C99_TO_C89_CONV_DEBUG_LEVEL=1 :skip_c99_wrap :: set cflags because NDEBUG is set in Release configuration, which errors out in test suite due to no assert cmake -G "Ninja" ^ -DCMAKE_INSTALL_PREFIX="%LIBRARY_PREFIX%" ^ %COMPILER% ^ -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS:BOOL=FALSE ^ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^ -DCMAKE_C_FLAGS_RELEASE="%CFLAGS%" ^ -DENABLE_ACL=ON ^ -DENABLE_BZip2=ON ^ -DENABLE_CAT=OFF ^ -DENABLE_CNG=%ENABLE_CNG% ^ -DENABLE_COVERAGE=OFF ^ -DENABLE_CPIO=OFF ^ -DENABLE_EXPAT=ON ^ -DENABLE_ICONV=OFF ^ -DENABLE_INSTALL=ON ^ -DENABLE_LIBB2=OFF ^ -DENABLE_LIBXML2=OFF ^ -DENABLE_LZ4=OFF ^ -DENABLE_LZMA=OFF ^ -DENABLE_LZO=OFF ^ -DENABLE_LibGCC=OFF ^ -DENABLE_NETTLE=OFF ^ -DENABLE_OPENSSL=OFF ^ -DENABLE_SAFESEH=AUTO ^ -DENABLE_TAR=ON ^ -DENABLE_TAR_SHARED=OFF ^ -DENABLE_XATTR=ON ^ -DENABLE_ZLIB=ON ^ -DENABLE_ZSTD=ON ^ -DBZIP2_LIBRARY_RELEASE=%PREFIX%/Library/lib/bzip2_static.lib ^ -DZLIB_LIBRARY_RELEASE=%PREFIX%/Library/lib/zlibstatic.lib ^ -DZSTD_LIBRARY=%PREFIX%/Library/lib/libzstd_static.lib ^ . :build :: Build. :: jom -j%CPU_COUNT% VERBOSE=1 ninja -j%CPU_COUNT% -v if errorlevel 1 exit /b 1 ninja install if errorlevel 1 exit /b 1 :: Test. :: Failures: :: The following tests FAILED: :: 365 - libarchive_test_read_truncated_filter_bzip2 (Timeout) => runs msys2's bzip2.exe :: 372 - libarchive_test_sparse_basic (Failed) :: 373 - libarchive_test_fully_sparse_files (Failed) :: 386 - libarchive_test_warn_missing_hardlink_target (Failed) :: ctest -C Release :: if errorlevel 1 exit 1 :: Test extracting a 7z. This failed due to not using the multi-threaded DLL runtime, fixed by 0009-CMake-Force-Multi-threaded-DLL-runtime.patch ::powershell -command "& { (New-Object Net.WebClient).DownloadFile('http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-64-mesa_12_0_rc2.7z', 'opengl32sw-64-mesa_12_0_rc2.7z') }" ::if errorlevel 1 exit 1 ::%LIBRARY_BIN%\bsdtar -xf opengl32sw-64-mesa_12_0_rc2.7z ::if errorlevel 1 exit 1 :: remove man pages rd /s /q %PREFIX%\Library\share\man :: remove the dynamic libraries del %PREFIX%\Library\bin\archive.DLL del %PREFIX%\Library\lib\archive.lib pushd %PREFIX%\Library\lib lib.exe /OUT:archive_and_deps.lib archive_static.lib libzstd_static.lib bzip2_static.lib zlibstatic.lib popdconda-package-handling-1.6.0/conda.recipe/static_build.sh000066400000000000000000000040101354123340300233020ustar00rootroot00000000000000#!/bin/bash # Build libarchive as a static library with support for the features needed for # conda-package-handling (bzip2, zlib, zstd). # This is not a general purpose libarchive. autoreconf -vfi mkdir build-${HOST} && pushd build-${HOST} ${SRC_DIR}/configure --prefix=${PREFIX} \ --enable-bsdtar=static \ --enable-static \ --with-bz2lib \ --with-iconv \ --with-zlib \ --with-zstd \ --disable-bsdcat \ --disable-bsdcpio \ --disable-shared \ --without-cng \ --without-expat \ --without-lz4 \ --without-lzma \ --without-lzo2 \ --without-nettle \ --without-openssl \ --without-xml2 make -j${CPU_COUNT} ${VERBOSE_AT} make install popd # remove the man pages rm -rf ${PREFIX}/share/man # create libarchive_and_deps.a if [[ ${HOST} =~ .*darwin.* ]]; then mkdir -p tmp_reform pushd tmp_reform # extract the object files into seperate directories since some of the # archives have members of the same name (e.g. compress.o). See: # https://stackoverflow.com/a/23557928 for name in libz libbz2 libzstd libiconv libarchive do ${AR} -x ${PREFIX}/lib/${name}.a mkdir -p ${name}_objs mv *.o ${name}_objs done ${AR} crv libarchive_and_deps.a */*.o ranlib libarchive_and_deps.a cp libarchive_and_deps.a ${PREFIX}/lib/ popd fi if [[ ${HOST} =~ .*linux.* ]]; then pushd ${PREFIX}/lib ${AR} -M < Bug fixes: ---------- * Deprecations: ------------- * Docs: ----- * Other: ------ * conda-package-handling-1.6.0/rever.xsh000066400000000000000000000014671354123340300176320ustar00rootroot00000000000000$ACTIVITIES = [ "authors", "changelog", "tag", "push_tag", "ghrelease", "conda_forge" ] # # Basic settings # $PROJECT = $GITHUB_REPO = "conda-package-handling" $GITHUB_ORG = "conda" $AUTHORS_FILENAME = "AUTHORS.txt" # # Changelog settings # $CHANGELOG_FILENAME = "CHANGELOG.md" $CHANGELOG_PATTERN = "# current developments" $CHANGELOG_HEADER = """# current developments $RELEASE_DATE $VERSION: ------------------ """ $CHANGELOG_CATEGORIES = ( "Enhancements", "Bug fixes", "Deprecations", "Docs", "Other", ) def title_formatter(category): s = category + ':\n' s += "-" * (len(category) + 1) s += "\n\n" return s $CHANGELOG_CATEGORY_TITLE_FORMAT = title_formatter $CHANGELOG_AUTHORS_TITLE = "Contributors" $CHANGELOG_AUTHORS_FORMAT = "* @{github}\n" conda-package-handling-1.6.0/setup.cfg000066400000000000000000000013031354123340300175710ustar00rootroot00000000000000[flake8] max-line-length = 100 ignore = E122,E123,E126,E127,E128,E731,E722 exclude = build,src/conda_package_handling/_version.py,tests,conda.recipe,.git,versioneer.py,benchmarks,.asv,rever [tool:pytest] norecursedirs= .* *.egg* build dist conda.recipe addopts = --junitxml=junit.xml --ignore setup.py --ignore run_test.py --cov-report term-missing --tb native --strict --durations=20 env = PYTHONHASHSEED=0 markers = serial: execute test serially (to avoid race conditions) [versioneer] VCS = git versionfile_source = src/conda_package_handling/_version.py versionfile_build = conda_package_handling/_version.py tag_prefix = parentdir_prefix = conda-package-handling- conda-package-handling-1.6.0/setup.py000066400000000000000000000026151354123340300174710ustar00rootroot00000000000000from setuptools import setup, find_packages import versioneer import sys from setuptools.extension import Extension from Cython.Build import cythonize _libraries = ["archive_and_deps"] if sys.platform == 'win32': _libraries.append('advapi32') _libraries.append('user32') archive_utils_cy_extension = Extension( name="conda_package_handling.archive_utils_cy", sources=["src/conda_package_handling/archive_utils_cy.pyx"], libraries=_libraries, ) requirements = [ # package requirements go here "six", ] if sys.version_info.major == 2: requirements.append('futures') setup( name='conda-package-handling', version=versioneer.get_version(), cmdclass=versioneer.get_cmdclass(), description="Create and extract conda packages of various formats", author="Anaconda, Inc.", author_email='conda@anaconda.com', url='https://github.com/conda/conda-package-handling', ext_modules=cythonize([archive_utils_cy_extension]), packages=find_packages("src", exclude=["tests"]), package_dir={"": "src"}, entry_points={ 'console_scripts': [ 'cph=conda_package_handling.cli:main' ] }, install_requires=requirements, keywords='conda-package-handling', classifiers=[ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', ] ) conda-package-handling-1.6.0/src/000077500000000000000000000000001354123340300165425ustar00rootroot00000000000000conda-package-handling-1.6.0/src/conda_package_handling/000077500000000000000000000000001354123340300231455ustar00rootroot00000000000000conda-package-handling-1.6.0/src/conda_package_handling/__init__.py000066400000000000000000000001341354123340300252540ustar00rootroot00000000000000from ._version import get_versions __version__ = get_versions()['version'] del get_versions conda-package-handling-1.6.0/src/conda_package_handling/__main__.py000066400000000000000000000000621354123340300252350ustar00rootroot00000000000000from conda_package_handling import cli cli.cli() conda-package-handling-1.6.0/src/conda_package_handling/_version.py000066400000000000000000000441301354123340300253450ustar00rootroot00000000000000 # This file helps to compute a version number in source trees obtained from # git-archive tarball (such as those provided by githubs download-from-tag # feature). Distribution tarballs (built by setup.py sdist) and build # directories (produced by setup.py build) will contain a much shorter file # that just contains the computed version number. # This file is released into the public domain. Generated by # versioneer-0.18 (https://github.com/warner/python-versioneer) """Git implementation of _version.py.""" import errno import os import re import subprocess import sys def get_keywords(): """Get the keywords needed to look up the version information.""" # these strings will be replaced by git during git-archive. # setup.py/versioneer.py will grep for the variable names, so they must # each be defined on a line of their own. _version.py will just call # get_keywords(). git_refnames = " (tag: 1.6.0)" git_full = "5b7dbf7bba75c1bb95be058d9c5a60bf85aebb47" git_date = "2019-09-20 15:30:59 -0500" keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} return keywords class VersioneerConfig: """Container for Versioneer configuration parameters.""" def get_config(): """Create, populate and return the VersioneerConfig() object.""" # these strings are filled in when 'setup.py versioneer' creates # _version.py cfg = VersioneerConfig() cfg.VCS = "git" cfg.style = "" cfg.tag_prefix = "" cfg.parentdir_prefix = "conda-package-handling-" cfg.versionfile_source = "conda_package_handling/_version.py" cfg.verbose = False return cfg class NotThisMethod(Exception): """Exception raised if a method is not valid for the current scenario.""" LONG_VERSION_PY = {} HANDLERS = {} def register_vcs_handler(vcs, method): # decorator """Decorator to mark a method as the handler for a particular VCS.""" def decorate(f): """Store f in HANDLERS[vcs][method].""" if vcs not in HANDLERS: HANDLERS[vcs] = {} HANDLERS[vcs][method] = f return f return decorate def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): """Call the given command(s).""" assert isinstance(commands, list) p = None for c in commands: try: dispcmd = str([c] + args) # remember shell=False, so use git.cmd on windows, not just git p = subprocess.Popen([c] + args, cwd=cwd, env=env, stdout=subprocess.PIPE, stderr=(subprocess.PIPE if hide_stderr else None)) break except EnvironmentError: e = sys.exc_info()[1] if e.errno == errno.ENOENT: continue if verbose: print("unable to run %s" % dispcmd) print(e) return None, None else: if verbose: print("unable to find command, tried %s" % (commands,)) return None, None stdout = p.communicate()[0].strip() if sys.version_info[0] >= 3: stdout = stdout.decode() if p.returncode != 0: if verbose: print("unable to run %s (error)" % dispcmd) print("stdout was %s" % stdout) return None, p.returncode return stdout, p.returncode def versions_from_parentdir(parentdir_prefix, root, verbose): """Try to determine the version from the parent directory name. Source tarballs conventionally unpack into a directory that includes both the project name and a version string. We will also support searching up two directory levels for an appropriately named parent directory """ rootdirs = [] for i in range(3): dirname = os.path.basename(root) if dirname.startswith(parentdir_prefix): return {"version": dirname[len(parentdir_prefix):], "full-revisionid": None, "dirty": False, "error": None, "date": None} else: rootdirs.append(root) root = os.path.dirname(root) # up a level if verbose: print("Tried directories %s but none started with prefix %s" % (str(rootdirs), parentdir_prefix)) raise NotThisMethod("rootdir doesn't start with parentdir_prefix") @register_vcs_handler("git", "get_keywords") def git_get_keywords(versionfile_abs): """Extract version information from the given file.""" # the code embedded in _version.py can just fetch the value of these # keywords. When used from setup.py, we don't want to import _version.py, # so we do it with a regexp instead. This function is not used from # _version.py. keywords = {} try: f = open(versionfile_abs, "r") for line in f.readlines(): if line.strip().startswith("git_refnames ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["refnames"] = mo.group(1) if line.strip().startswith("git_full ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["full"] = mo.group(1) if line.strip().startswith("git_date ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["date"] = mo.group(1) f.close() except EnvironmentError: pass return keywords @register_vcs_handler("git", "keywords") def git_versions_from_keywords(keywords, tag_prefix, verbose): """Get version information from git keywords.""" if not keywords: raise NotThisMethod("no keywords at all, weird") date = keywords.get("date") if date is not None: # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 # -like" string, which we must then edit to make compliant), because # it's been around since git-1.5.3, and it's too difficult to # discover which version we're using, or to work around using an # older one. date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) refnames = keywords["refnames"].strip() if refnames.startswith("$Format"): if verbose: print("keywords are unexpanded, not using") raise NotThisMethod("unexpanded keywords, not a git-archive tarball") refs = set([r.strip() for r in refnames.strip("()").split(",")]) # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of # just "foo-1.0". If we see a "tag: " prefix, prefer those. TAG = "tag: " tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) if not tags: # Either we're using git < 1.8.3, or there really are no tags. We use # a heuristic: assume all version tags have a digit. The old git %d # expansion behaves like git log --decorate=short and strips out the # refs/heads/ and refs/tags/ prefixes that would let us distinguish # between branches and tags. By ignoring refnames without digits, we # filter out many common branch names like "release" and # "stabilization", as well as "HEAD" and "master". tags = set([r for r in refs if re.search(r'\d', r)]) if verbose: print("discarding '%s', no digits" % ",".join(refs - tags)) if verbose: print("likely tags: %s" % ",".join(sorted(tags))) for ref in sorted(tags): # sorting will prefer e.g. "2.0" over "2.0rc1" if ref.startswith(tag_prefix): r = ref[len(tag_prefix):] if verbose: print("picking %s" % r) return {"version": r, "full-revisionid": keywords["full"].strip(), "dirty": False, "error": None, "date": date} # no suitable tags, so version is "0+unknown", but full hex is still there if verbose: print("no suitable tags, using unknown + full revision id") return {"version": "0+unknown", "full-revisionid": keywords["full"].strip(), "dirty": False, "error": "no suitable tags", "date": None} @register_vcs_handler("git", "pieces_from_vcs") def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): """Get version from 'git describe' in the root of the source tree. This only gets called if the git-archive 'subst' keywords were *not* expanded, and _version.py hasn't already been rewritten with a short version string, meaning we're inside a checked out source tree. """ GITS = ["git"] if sys.platform == "win32": GITS = ["git.cmd", "git.exe"] out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True) if rc != 0: if verbose: print("Directory %s not under git control" % root) raise NotThisMethod("'git rev-parse --git-dir' returned error") # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] # if there isn't one, this yields HEX[-dirty] (no NUM) describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", "--always", "--long", "--match", "%s*" % tag_prefix], cwd=root) # --long was added in git-1.5.5 if describe_out is None: raise NotThisMethod("'git describe' failed") describe_out = describe_out.strip() full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) if full_out is None: raise NotThisMethod("'git rev-parse' failed") full_out = full_out.strip() pieces = {} pieces["long"] = full_out pieces["short"] = full_out[:7] # maybe improved later pieces["error"] = None # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] # TAG might have hyphens. git_describe = describe_out # look for -dirty suffix dirty = git_describe.endswith("-dirty") pieces["dirty"] = dirty if dirty: git_describe = git_describe[:git_describe.rindex("-dirty")] # now we have TAG-NUM-gHEX or HEX if "-" in git_describe: # TAG-NUM-gHEX mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) if not mo: # unparseable. Maybe git-describe is misbehaving? pieces["error"] = ("unable to parse git-describe output: '%s'" % describe_out) return pieces # tag full_tag = mo.group(1) if not full_tag.startswith(tag_prefix): if verbose: fmt = "tag '%s' doesn't start with prefix '%s'" print(fmt % (full_tag, tag_prefix)) pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" % (full_tag, tag_prefix)) return pieces pieces["closest-tag"] = full_tag[len(tag_prefix):] # distance: number of commits since tag pieces["distance"] = int(mo.group(2)) # commit: short hex revision ID pieces["short"] = mo.group(3) else: # HEX: no tags pieces["closest-tag"] = None count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root) pieces["distance"] = int(count_out) # total number of commits # commit date: see ISO-8601 comment in git_versions_from_keywords() date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) return pieces def plus_or_dot(pieces): """Return a + if we don't already have one, else return a .""" if "+" in pieces.get("closest-tag", ""): return "." return "+" def render_pep440(pieces): """Build up version string, with post-release "local version identifier". Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty Exceptions: 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += plus_or_dot(pieces) rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) if pieces["dirty"]: rendered += ".dirty" else: # exception #1 rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) if pieces["dirty"]: rendered += ".dirty" return rendered def render_pep440_pre(pieces): """TAG[.post.devDISTANCE] -- No -dirty. Exceptions: 1: no tags. 0.post.devDISTANCE """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"]: rendered += ".post.dev%d" % pieces["distance"] else: # exception #1 rendered = "0.post.dev%d" % pieces["distance"] return rendered def render_pep440_post(pieces): """TAG[.postDISTANCE[.dev0]+gHEX] . The ".dev0" means dirty. Note that .dev0 sorts backwards (a dirty tree will appear "older" than the corresponding clean one), but you shouldn't be releasing software with -dirty anyways. Exceptions: 1: no tags. 0.postDISTANCE[.dev0] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += ".post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" rendered += plus_or_dot(pieces) rendered += "g%s" % pieces["short"] else: # exception #1 rendered = "0.post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" rendered += "+g%s" % pieces["short"] return rendered def render_pep440_old(pieces): """TAG[.postDISTANCE[.dev0]] . The ".dev0" means dirty. Eexceptions: 1: no tags. 0.postDISTANCE[.dev0] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += ".post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" else: # exception #1 rendered = "0.post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" return rendered def render_git_describe(pieces): """TAG[-DISTANCE-gHEX][-dirty]. Like 'git describe --tags --dirty --always'. Exceptions: 1: no tags. HEX[-dirty] (note: no 'g' prefix) """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"]: rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) else: # exception #1 rendered = pieces["short"] if pieces["dirty"]: rendered += "-dirty" return rendered def render_git_describe_long(pieces): """TAG-DISTANCE-gHEX[-dirty]. Like 'git describe --tags --dirty --always -long'. The distance/hash is unconditional. Exceptions: 1: no tags. HEX[-dirty] (note: no 'g' prefix) """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) else: # exception #1 rendered = pieces["short"] if pieces["dirty"]: rendered += "-dirty" return rendered def render(pieces, style): """Render the given version pieces into the requested style.""" if pieces["error"]: return {"version": "unknown", "full-revisionid": pieces.get("long"), "dirty": None, "error": pieces["error"], "date": None} if not style or style == "default": style = "pep440" # the default if style == "pep440": rendered = render_pep440(pieces) elif style == "pep440-pre": rendered = render_pep440_pre(pieces) elif style == "pep440-post": rendered = render_pep440_post(pieces) elif style == "pep440-old": rendered = render_pep440_old(pieces) elif style == "git-describe": rendered = render_git_describe(pieces) elif style == "git-describe-long": rendered = render_git_describe_long(pieces) else: raise ValueError("unknown style '%s'" % style) return {"version": rendered, "full-revisionid": pieces["long"], "dirty": pieces["dirty"], "error": None, "date": pieces.get("date")} def get_versions(): """Get version information or return default if unable to do so.""" # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have # __file__, we can work backwards from there to the root. Some # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which # case we can only use expanded keywords. cfg = get_config() verbose = cfg.verbose try: return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, verbose) except NotThisMethod: pass try: root = os.path.realpath(__file__) # versionfile_source is the relative path from the top of the source # tree (where the .git directory might live) to this file. Invert # this to find the root from __file__. for i in cfg.versionfile_source.split('/'): root = os.path.dirname(root) except NameError: return {"version": "0+unknown", "full-revisionid": None, "dirty": None, "error": "unable to find root of source tree", "date": None} try: pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) return render(pieces, cfg.style) except NotThisMethod: pass try: if cfg.parentdir_prefix: return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) except NotThisMethod: pass return {"version": "0+unknown", "full-revisionid": None, "dirty": None, "error": "unable to compute version", "date": None} conda-package-handling-1.6.0/src/conda_package_handling/api.py000066400000000000000000000160351354123340300242750ustar00rootroot00000000000000import os as _os from glob import glob as _glob import functools as _functools import tempfile as _tempfile from six import string_types as _string_types import tqdm as _tqdm # expose these two exceptions as part of the API. Everything else should feed into these. from .exceptions import ConversionError, InvalidArchiveError # NOQA from .tarball import CondaTarBZ2 as _CondaTarBZ2, libarchive_enabled # NOQA from .conda_fmt import CondaFormat_v2 as _CondaFormat_v2 from .utils import (TemporaryDirectory as _TemporaryDirectory, rm_rf as _rm_rf, get_executor as _get_executor) SUPPORTED_EXTENSIONS = {'.tar.bz2': _CondaTarBZ2, '.conda': _CondaFormat_v2} def _collect_paths(prefix): dir_paths, file_paths = [], [] for dp, dn, filenames in _os.walk(prefix): for f in filenames: file_paths.append(_os.path.relpath(_os.path.join(dp, f), prefix)) dir_paths.extend(_os.path.relpath(_os.path.join(dp, _), prefix) for _ in dn) file_list = file_paths + [dp for dp in dir_paths if not any(f.startswith(dp) for f in file_paths)] return file_list def get_default_extracted_folder(in_file, abspath=True): dirname = None for ext in SUPPORTED_EXTENSIONS: if in_file.endswith(ext): dirname = in_file[:-len(ext)] if dirname and not abspath: dirname = _os.path.basename(dirname) return dirname def extract(fn, dest_dir=None, components=None, prefix=None): if dest_dir: if _os.path.isabs(dest_dir) and prefix: raise ValueError("dest_dir and prefix both provided as abs paths. If providing both, " "prefix can be abspath, but dest dir must be relative (relative to " "prefix)") if not _os.path.isabs(dest_dir): dest_dir = _os.path.normpath(_os.path.join(prefix or _os.getcwd(), dest_dir)) else: dest_dir = _os.path.join(prefix or _os.path.dirname(fn), get_default_extracted_folder(fn, abspath=False)) if not _os.path.isdir(dest_dir): _os.makedirs(dest_dir) for ext in SUPPORTED_EXTENSIONS: if fn.endswith(ext): SUPPORTED_EXTENSIONS[ext].extract(fn, dest_dir, components=components) break else: raise ValueError("Didn't recognize extension for file '{}'. Supported extensions are: {}" .format(fn, list(SUPPORTED_EXTENSIONS.keys()))) def create(prefix, file_list, out_fn, out_folder=None, **kw): if not out_folder: out_folder = _os.getcwd() if file_list is None: file_list = _collect_paths(prefix) elif isinstance(file_list, _string_types): try: with open(file_list) as f: data = f.readlines() file_list = [_.strip() for _ in data] except: raise for ext in SUPPORTED_EXTENSIONS: if out_fn.endswith(ext): try: out = SUPPORTED_EXTENSIONS[ext].create(prefix, file_list, out_fn, out_folder, **kw) except: # don't leave broken files around if _os.path.isfile(out): _rm_rf(out) return out def _convert(fn, out_ext, out_folder, **kw): basename = get_default_extracted_folder(fn, abspath=False) from .validate import validate_converted_files_match if not basename: print("Input file %s doesn't have a supported extension (%s), skipping it" % (fn, SUPPORTED_EXTENSIONS)) return out_fn = _os.path.join(out_folder, basename + out_ext) errors = "" if not _os.path.lexists(out_fn): with _TemporaryDirectory(prefix=out_folder) as tmp: try: extract(fn, dest_dir=tmp) file_list = _collect_paths(tmp) create(tmp, file_list, _os.path.basename(out_fn), out_folder=out_folder, **kw) _, missing_files, mismatching_sizes = validate_converted_files_match( tmp, _os.path.join(out_folder, fn)) if missing_files or mismatching_sizes: errors = str(ConversionError(missing_files, mismatching_sizes)) except Exception as e: errors = str(e) return fn, out_fn, errors def transmute(in_file, out_ext, out_folder=None, processes=1, **kw): if not out_folder: out_folder = _os.path.dirname(in_file) or _os.getcwd() flist = set(_glob(in_file)) if in_file.endswith('.tar.bz2'): flist = flist - set(_glob(in_file.replace('.tar.bz2', out_ext))) elif in_file.endswith('.conda'): flist = flist - set(_glob(in_file.replace('.conda', out_ext))) failed_files = {} with _tqdm.tqdm(total=len(flist), leave=False) as t: with _get_executor(processes) as executor: convert_f = _functools.partial(_convert, out_ext=out_ext, out_folder=out_folder, **kw) for fn, out_fn, errors in executor.map(convert_f, flist): t.set_description("Converted: %s" % fn) t.update() if errors: failed_files[fn] = errors _rm_rf(out_fn) return failed_files def verify_conversion(glob_pattern, target_dir, reference_ext, tmpdir_root=_tempfile.gettempdir(), processes=None): from .validate import validate_converted_files_match if not glob_pattern.endswith(reference_ext): glob_pattern = glob_pattern + reference_ext file_sets_by_ext = {ext: _glob(_os.path.join(target_dir, glob_pattern + ext)) for ext in SUPPORTED_EXTENSIONS} matches = {path.replace(ext, "") for ext, path in file_sets_by_ext[reference_ext]} for ext, paths in file_sets_by_ext.items(): if ext == reference_ext: continue matches &= {path.replace(ext, "") for ext, path in paths} other_exts = set(SUPPORTED_EXTENSIONS) - {reference_ext, } errors = {} with _tqdm.tqdm(total=(len(matches) * len(SUPPORTED_EXTENSIONS) - 1), leave=False) as t: with _Executor(max_workers=processes) as executor: for other_ext in other_exts: verify_fn = lambda fn: validate_converted_files_match(ref_ext=reference_ext, subject=fn + other_ext) for fn, missing, mismatching in executor.map(verify_fn, matches): t.set_description("Validating %s" % fn) t.update() if missing or mismatching: errors[fn] = str(ConversionError(missing, mismatching)) return errors def get_pkg_details(in_file): """For the new pkg format, we return the size and hashes of the inner pkg part of the file""" for ext in SUPPORTED_EXTENSIONS: if in_file.endswith(ext): details = SUPPORTED_EXTENSIONS[ext].get_pkg_details(in_file) break else: raise ValueError("Don't know what to do with file {}".format(in_file)) return details conda-package-handling-1.6.0/src/conda_package_handling/archive_utils.py000066400000000000000000000017651354123340300263710ustar00rootroot00000000000000from . import archive_utils_cy from .exceptions import ArchiveCreationError, InvalidArchiveError def _to_bytes(s): if isinstance(s, bytes): return s return s.encode('utf-8') def extract_file(tarball): tarball_bytes = _to_bytes(tarball) result, error_str = archive_utils_cy.extract_file(tarball_bytes) if result: raise InvalidArchiveError(tarball, error_str.decode('utf-8')) def create_archive(fullpath, files, compression_filter, compression_opts): fullpath = _to_bytes(fullpath) compression_filter = _to_bytes(compression_filter) compression_opts = _to_bytes(compression_opts) files = [_to_bytes(f) for f in files] result, error_str, error_file = archive_utils_cy.create_archive( fullpath, files, compression_filter, compression_opts) if result: message = error_str.decode('utf-8') if len(error_file): message += " while writing file: " + error_file.decode('utf-8') raise ArchiveCreationError(message) conda-package-handling-1.6.0/src/conda_package_handling/archive_utils_c.c000066400000000000000000000123531354123340300264600ustar00rootroot00000000000000// Utilities for creating and extracting files from archives using libarchive // for use in conda-packaging-handling #define LIBARCHIVE_STATIC #include #include #include #ifndef O_BINARY #define O_BINARY 0 #endif struct archive * prepare_gnutar_archive( const char *outname, const char *filtername, const char *opts, const char **err_str) { struct archive *a; if (!err_str) { return NULL; } a = archive_write_new(); if (a == NULL) { return a; } if (archive_write_set_format_gnutar(a) < ARCHIVE_OK) { *err_str = archive_error_string(a); archive_write_close(a); archive_write_free(a); return NULL; } if (archive_write_add_filter_by_name(a, filtername) < ARCHIVE_OK) { *err_str = archive_error_string(a); archive_write_close(a); archive_write_free(a); return NULL; } if (archive_write_set_options(a, opts) < ARCHIVE_OK) { *err_str = archive_error_string(a); archive_write_close(a); archive_write_free(a); return NULL; } if (archive_write_open_filename(a, outname) < ARCHIVE_OK) { *err_str = archive_error_string(a); archive_write_close(a); archive_write_free(a); return NULL; } return a; } void close_archive(struct archive *a) { archive_write_close(a); archive_write_free(a); } struct archive_entry * prepare_entry(void) { struct archive_entry *entry; entry = archive_entry_new(); return entry; } void close_entry(struct archive_entry *entry) { archive_entry_free(entry); } static int add_file( struct archive *a, struct archive_entry *entry, const char *filename, const char **err_str) { struct archive *disk; char buff[8192]; int len; int fd; int flags; flags = 0; disk = archive_read_disk_new(); if (disk == NULL) { return 1; } if (archive_read_disk_set_behavior(disk, flags) < ARCHIVE_OK) { *err_str = archive_error_string(disk); return 1; } if (archive_read_disk_open(disk, filename) < ARCHIVE_OK) { *err_str = archive_error_string(disk); return 1; } if (archive_read_next_header2(disk, entry) < ARCHIVE_OK) { *err_str = archive_error_string(disk); return 1; } if (archive_read_disk_descend(disk) < ARCHIVE_OK) { *err_str = archive_error_string(disk); return 1; } if (archive_write_header(a, entry) < ARCHIVE_OK) { *err_str = archive_error_string(a); return 1; } fd = open(filename, O_RDONLY | O_BINARY); len = read(fd, buff, sizeof(buff)); while ( len > 0 ) { archive_write_data(a, buff, len); len = read(fd, buff, sizeof(buff)); } close(fd); if (archive_write_finish_entry(a) < ARCHIVE_OK) { *err_str = archive_error_string(a); return 1; } archive_read_close(disk); archive_read_free(disk); archive_entry_clear(entry); return 0; } static int copy_data(struct archive *ar, struct archive *aw) { int r; const void *buff; size_t size; la_int64_t offset; for (;;) { r = archive_read_data_block(ar, &buff, &size, &offset); if (r == ARCHIVE_EOF) return (ARCHIVE_OK); if (r < ARCHIVE_OK) return (r); r = archive_write_data_block(aw, buff, size, offset); if (r < ARCHIVE_OK) { return (r); } } } static int extract_file_c(const char *filename, const char **err_str) { struct archive *a; struct archive *ext; struct archive_entry *entry; int flags; int r; if (!err_str) { return NULL; } /* attributes we want to restore. */ flags = ARCHIVE_EXTRACT_TIME; flags |= ARCHIVE_EXTRACT_PERM; flags |= ARCHIVE_EXTRACT_SECURE_NODOTDOT; flags |= ARCHIVE_EXTRACT_SECURE_SYMLINKS; flags |= ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS; flags |= ARCHIVE_EXTRACT_SPARSE; flags |= ARCHIVE_EXTRACT_UNLINK; a = archive_read_new(); archive_read_support_format_all(a); archive_read_support_filter_all(a); ext = archive_write_disk_new(); archive_write_disk_set_options(ext, flags); archive_write_disk_set_standard_lookup(ext); if ((r = archive_read_open_filename(a, filename, 10240))) { *err_str = archive_error_string(a); return 1; } for (;;) { r = archive_read_next_header(a, &entry); if (r == ARCHIVE_EOF) break; if (r < ARCHIVE_WARN) { *err_str = archive_error_string(a); return 1; } r = archive_write_header(ext, entry); if (r < ARCHIVE_OK) { *err_str = archive_error_string(ext); return 1; } else if (archive_entry_size(entry) > 0) { r = copy_data(a, ext); if (r < ARCHIVE_WARN) { *err_str = archive_error_string(ext); return 1; } } r = archive_write_finish_entry(ext); if (r < ARCHIVE_WARN) { *err_str = archive_error_string(ext); return 1; } } archive_read_close(a); archive_read_free(a); archive_write_close(ext); archive_write_free(ext); return 0; } conda-package-handling-1.6.0/src/conda_package_handling/archive_utils_cy.pyx000066400000000000000000000024651354123340300272520ustar00rootroot00000000000000# Cython wrapper around archive_utils_c cdef extern from "archive_utils_c.c": void * prepare_gnutar_archive( const char *outname, const char *filtername, const char *opts, const char **err_str) void close_archive(void *a) void * prepare_entry() void close_entry(void *entry) int add_file(void *a, void *entry, const char *filename, const char **err_str) int extract_file_c(const char *filename, const char **err_str) def extract_file(tarball): """Extract a tarball into the current directory.""" cdef const char *err_str = NULL result = extract_file_c(tarball, &err_str) if result: return 1, err_str return 0, b'' def create_archive(fullpath, files, compression_filter, compression_opts): """ Create a compressed gnutar archive. """ cdef void *a cdef void *entry cdef const char *err_str = NULL a = prepare_gnutar_archive(fullpath, compression_filter, compression_opts, &err_str) if a == NULL: return 1, err_str, b'' entry = prepare_entry() if entry == NULL: return 1, b'archive entry creation failed', b'' for f in files: result = add_file(a, entry, f, &err_str) if result: return 1, err_str, f close_entry(entry) close_archive(a) return 0, b'', b'' conda-package-handling-1.6.0/src/conda_package_handling/cli.py000066400000000000000000000127551354123340300243000ustar00rootroot00000000000000import argparse import os from pprint import pprint import sys from . import api, __version__ def parse_args(parse_this=None): parser = argparse.ArgumentParser() parser.add_argument( '-V', '--version', action='version', help='Show the conda-package-handling version number and exit.', version='conda-package-handling %s' % __version__, ) sp = parser.add_subparsers(title='subcommands', dest='subparser_name') extract_parser = sp.add_parser('extract', help='extract package contents', aliases=['x']) extract_parser.add_argument('archive_path', help='path to archive to extract') extract_parser.add_argument('--dest', help='destination folder to extract to. If not set, defaults to' ' package filename minus extension in the same folder as the input archive.' ' May be relative path used in tandem with the --prefix flag.') extract_parser.add_argument('--prefix', help='base directory to extract to. Use this to set the base' ' directory, while allowing the folder name to be automatically determined ' 'by the input filename. An abspath --prefix with an unset --dest will ' 'achieve this.') extract_parser.add_argument('--info', help='If the archive supports separate metadata, this' ' flag extracts only the metadata in the info folder from the ' 'package. If the archive does not support separate metadata, this ' 'flag has no effect and all files are extracted.', action="store_true") create_parser = sp.add_parser('create', help='bundle files into a package', aliases=['c']) create_parser.add_argument('prefix', help="folder of files to bundle. Not strictly required to" " have conda package metadata, but if conda package metadata isn't " "present, you'll see a warning and your file will not work as a " "conda package") create_parser.add_argument("out_fn", help="Filename of archive to be created. Extension " "determines package type.") create_parser.add_argument('--file-list', help="Path to file containing one relative path per" " line that should be included in the archive. If not provided, " "lists all files in the prefix.") create_parser.add_argument("--out-folder", help="Folder to dump final archive to") verify_parser = sp.add_parser('verify', help='verify converted files against their reference', aliases=['v']) verify_parser.add_argument("glob", help="filename glob pattern to match pairs and verify. Use" "the --reference-ext argument to change which extension is used " "as the ground truth, and which is considered corrupt in any " "mismatch") verify_parser.add_argument("--target-dir", help="folder for finding pairs of files. Defaults " "to cwd.", default=os.getcwd()) verify_parser.add_argument("--reference-ext", "-r", help="file extension to consider as " "'ground truth' in comparison. Use this with the --all flag.", default=".tar.bz2") verify_parser.add_argument("--processes", help="Max number of processes to use. If " "not set, defaults to your CPU count.") convert_parser = sp.add_parser('transmute', help='convert from one package type to another', aliases=['t']) convert_parser.add_argument('in_file', help="existing file to convert from. Glob patterns " "accepted.") convert_parser.add_argument('out_ext', help="extension of file to convert to. " "Examples: .tar.bz2, .conda") convert_parser.add_argument("--out-folder", help="Folder to dump final archive to") convert_parser.add_argument("--processes", help="Max number of processes to use. If " "not set, defaults to your CPU count.") return parser.parse_args(parse_this) def main(args=None): args = parse_args(args) if args.subparser_name in ('extract', 'x'): if args.info: api.extract(args.archive_path, args.dest, components='info', prefix=args.prefix) else: api.extract(args.archive_path, args.dest, prefix=args.prefix) elif args.subparser_name in ('create', 'c'): api.create(args.prefix, args.file_list, args.out_fn, args.out_folder) elif args.subparser_name in ('transmute', 't'): failed_files = api.transmute(args.in_file, args.out_ext, args.out_folder, args.processes) if failed_files: print("failed files:") pprint(failed_files) sys.exit(1) elif args.subparser_name in ('verify', 'v'): failed_files = api.verify_conversion(args.glob, args.target_dir, args.reference_ext) if failed_files: print("failed files:") pprint(failed_files) sys.exit(1) else: raise NotImplementedError("Command {} is not implemented".format(args.subparser_name)) if __name__ == "__main__": main(args=None) conda-package-handling-1.6.0/src/conda_package_handling/conda_fmt.py000066400000000000000000000106201354123340300254500ustar00rootroot00000000000000"""The 'new' conda format, introduced in late 2018/early 2019. Spec at https://anaconda.atlassian.net/wiki/spaces/AD/pages/90210540/Conda+package+format+v2""" import json import os from tempfile import NamedTemporaryFile try: from zipfile import ZipFile, BadZipFile, ZIP_STORED except ImportError: # py27 compat from zipfile import ZipFile, ZIP_STORED, BadZipfile as BadZipFile from . import utils from .exceptions import InvalidArchiveError from .interface import AbstractBaseFormat from .tarball import create_compressed_tarball, _tar_xf CONDA_PACKAGE_FORMAT_VERSION = 2 DEFAULT_COMPRESSION_TUPLE = ('.tar.zst', 'zstd', 'zstd:compression-level=22') def _lookup_component_filename(zf, file_id, component_name): contents = zf.namelist() component_filename_without_ext = '-'.join((component_name, file_id)) component_filename = [_ for _ in contents if _.startswith(component_filename_without_ext)] return component_filename def _extract_component(fn, file_id, component_name, dest_dir=os.getcwd()): try: with ZipFile(fn, compression=ZIP_STORED) as zf: with utils.TemporaryDirectory(prefix=dest_dir) as tmpdir: with utils.tmp_chdir(tmpdir): component_filename = _lookup_component_filename(zf, file_id, component_name) if not component_filename: raise RuntimeError("didn't find {} component in {}" .format(component_name, fn)) component_filename = component_filename[0] zf.extract(component_filename) _tar_xf(component_filename, dest_dir) except BadZipFile as e: raise InvalidArchiveError(fn, str(e)) class CondaFormat_v2(AbstractBaseFormat): """If there's another conda format or breaking changes, please create a new class and keep this one, so that handling of v2 stays working.""" @staticmethod def extract(fn, dest_dir, **kw): components = utils.ensure_list(kw.get('components')) or ('info', 'pkg') file_id = os.path.basename(fn).replace('.conda', '') if not os.path.isabs(fn): fn = os.path.normpath(os.path.join(os.getcwd(), fn)) if not os.path.isdir(dest_dir): os.makedirs(dest_dir) for component in components: _extract_component(fn, file_id, component, dest_dir) @staticmethod def extract_info(fn, dest_dir=None): return CondaFormat_v2.extract(fn, dest_dir, components=['info']) @staticmethod def create(prefix, file_list, out_fn, out_folder=os.getcwd(), **kw): if os.path.isabs(out_fn): out_folder = os.path.dirname(out_fn) out_fn = os.path.basename(out_fn) conda_pkg_fn = os.path.join(out_folder, out_fn) out_fn = out_fn.replace('.conda', '') pkg_files = utils.filter_info_files(file_list, prefix) info_files = set(file_list) - set(pkg_files) ext, comp_filter, filter_opts = kw.get('compression_tuple') or DEFAULT_COMPRESSION_TUPLE with utils.TemporaryDirectory(prefix=out_folder) as tmpdir: info_tarball = create_compressed_tarball(prefix, info_files, tmpdir, 'info-' + out_fn, ext, comp_filter, filter_opts) pkg_tarball = create_compressed_tarball(prefix, pkg_files, tmpdir, 'pkg-' + out_fn, ext, comp_filter, filter_opts) pkg_metadata = {'conda_pkg_format_version': CONDA_PACKAGE_FORMAT_VERSION} with ZipFile(conda_pkg_fn, 'w', compression=ZIP_STORED) as zf: with NamedTemporaryFile(mode='w', delete=False) as tf: json.dump(pkg_metadata, tf) zf.write(tf.name, 'metadata.json') for pkg in (info_tarball, pkg_tarball): zf.write(pkg, os.path.basename(pkg)) utils.rm_rf(tf.name) return conda_pkg_fn @staticmethod def get_pkg_details(in_file): stat_result = os.stat(in_file) size = stat_result.st_size # open the file twice because we need to start from the beginning each time with open(in_file, 'rb') as f: md5 = utils.md5_checksum(f) with open(in_file, 'rb') as f: sha256 = utils.sha256_checksum(f) return {"size": size, "md5": md5, "sha256": sha256} conda-package-handling-1.6.0/src/conda_package_handling/exceptions.py000066400000000000000000000036221354123340300257030ustar00rootroot00000000000000from errno import ENOENT class InvalidArchiveError(Exception): """Raised when libarchive can't open a file""" def __init__(self, fn, msg, *args, **kw): msg = ("Error with archive %s. You probably need to delete and re-download " "or re-create this file. Message from libarchive was:\n\n%s" % (fn, msg)) self.errno = ENOENT super(InvalidArchiveError, self).__init__(msg) class ArchiveCreationError(Exception): """Raised when an archive fails during creation""" pass class CaseInsensitiveFileSystemError(Exception): def __init__(self, package_location, extract_location, **kwargs): message = (""" Cannot extract package to a case-insensitive file system. Your install destination does not differentiate between upper and lowercase characters, and this breaks things. Try installing to a location that is case-sensitive. Windows drives are usually the culprit here - can you install to a native Unix drive, or turn on case sensitivity for this (Windows) location? package location: %(package_location)s extract location: %(extract_location)s """) super(CaseInsensitiveFileSystemError, self).__init__( message, package_location=package_location, extract_location=extract_location, **kwargs ) class ConversionError(Exception): def __init__(self, missing_files, mismatching_sizes, *args, **kw): self.missing_files = missing_files self.mismatching_sizes = mismatching_sizes errors = "" if self.missing_files: errors = "Missing files in converted package: %s\n" % self.missing_files errors = (errors + "Mismatching sizes (corruption) in converted package: %s" % self.mismatching_sizes) super(ConversionError, self).__init__(errors, *args, **kw) conda-package-handling-1.6.0/src/conda_package_handling/interface.py000066400000000000000000000007261354123340300254640ustar00rootroot00000000000000import abc import os import six @six.add_metaclass(abc.ABCMeta) class AbstractBaseFormat(): @staticmethod @abc.abstractmethod def extract(fn, dest_dir, **kw): raise NotImplementedError @staticmethod @abc.abstractmethod def create(prefix, file_list, out_fn, out_folder=os.getcwd(), **kw): raise NotImplementedError @staticmethod @abc.abstractmethod def get_pkg_details(in_file): raise NotImplementedError conda-package-handling-1.6.0/src/conda_package_handling/tarball.py000066400000000000000000000140441354123340300251430ustar00rootroot00000000000000from errno import ELOOP import os import re import subprocess import sys import tarfile from tempfile import NamedTemporaryFile try: from . import archive_utils libarchive_enabled = True except ImportError: libarchive_enabled = False from . import utils from .interface import AbstractBaseFormat from .exceptions import CaseInsensitiveFileSystemError, InvalidArchiveError def _sort_file_order(prefix, files): """Sort by filesize or by binsort, to optimize compression""" def order(f): # we don't care about empty files so send them back via 100000 fsize = os.lstat(os.path.join(prefix, f)).st_size or 100000 # info/* records will be False == 0, others will be 1. info_order = int(os.path.dirname(f) != 'info') if info_order: _, ext = os.path.splitext(f) # Strip any .dylib.* and .so.* and rename .dylib to .so ext = re.sub(r'(\.dylib|\.so).*$', r'.so', ext) if not ext: # Files without extensions should be sorted by dirname info_order = 1 + hash(os.path.dirname(f)) % (10 ** 8) else: info_order = 1 + abs(hash(ext)) % (10 ** 8) return info_order, fsize binsort = os.path.join(sys.prefix, 'bin', 'binsort') if os.path.exists(binsort): with NamedTemporaryFile(mode='w', suffix='.filelist', delete=False) as fl: with utils.tmp_chdir(prefix): fl.writelines(map(lambda x: '.' + os.sep + x + '\n', files)) fl.close() cmd = binsort + ' -t 1 -q -d -o 1000 {}'.format(fl.name) out, _ = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).communicate() files_list = out.decode('utf-8').strip().split('\n') # binsort returns the absolute paths. files_list = [f.split(prefix + os.sep, 1)[-1] for f in files_list] os.unlink(fl.name) else: files_list = list(f for f in sorted(files, key=order)) return files_list def _create_no_libarchive(fullpath, files): with tarfile.open(fullpath, 'w:bz2') as t: for f in files: t.add(f) def _create_libarchive(fullpath, files, compression_filter, filter_opts): archive_utils.create_archive(fullpath, files, compression_filter, filter_opts) def create_compressed_tarball(prefix, files, tmpdir, basename, ext, compression_filter, filter_opts=''): tmp_path = os.path.join(tmpdir, basename) files = _sort_file_order(prefix, files) # add files in order of a) in info directory, b) increasing size so # we can access small manifest or json files without decompressing # possible large binary or data files fullpath = tmp_path + ext with utils.tmp_chdir(prefix): if libarchive_enabled: _create_libarchive(fullpath, files, compression_filter, filter_opts) else: _create_no_libarchive(fullpath, files) return fullpath def _tar_xf(tarball, dir_path): if not os.path.isabs(tarball): tarball = os.path.join(os.getcwd(), tarball) with utils.tmp_chdir(dir_path): archive_utils.extract_file(tarball) def _tar_xf_no_libarchive(tarball_full_path, destination_directory=None): if destination_directory is None: destination_directory = tarball_full_path[:-8] with open(tarball_full_path, 'rb') as fileobj: with tarfile.open(fileobj=fileobj) as tar_file: for member in tar_file.getmembers(): if (os.path.isabs(member.name) or not os.path.realpath( member.name).startswith(os.getcwd())): raise InvalidArchiveError(tarball_full_path, "contains unsafe path: {}".format(member.name)) try: tar_file.extractall(path=destination_directory) except IOError as e: if e.errno == ELOOP: raise CaseInsensitiveFileSystemError( package_location=tarball_full_path, extract_location=destination_directory, caused_by=e, ) else: raise InvalidArchiveError(tarball_full_path, "failed with error: {}" % str(e)) if sys.platform.startswith('linux') and os.getuid() == 0: # When extracting as root, tarfile will by restore ownership # of extracted files. However, we want root to be the owner # (our implementation of --no-same-owner). for root, dirs, files in os.walk(destination_directory): for fn in files: p = os.path.join(root, fn) os.lchown(p, 0, 0) class CondaTarBZ2(AbstractBaseFormat): @staticmethod def extract(fn, dest_dir, **kw): if not os.path.isdir(dest_dir): os.makedirs(dest_dir) if not os.path.isabs(fn): fn = os.path.normpath(os.path.join(os.getcwd(), fn)) if libarchive_enabled: _tar_xf(fn, dest_dir) else: _tar_xf_no_libarchive(fn, dest_dir) @staticmethod def create(prefix, file_list, out_fn, out_folder=os.getcwd(), **kw): if os.path.isabs(out_fn): out_folder = os.path.dirname(out_fn) out_file = create_compressed_tarball(prefix, file_list, out_folder, os.path.basename(out_fn).replace('.tar.bz2', ''), '.tar.bz2', 'bzip2') return out_file @staticmethod def get_pkg_details(in_file): stat_result = os.stat(in_file) size = stat_result.st_size # open the file twice because we need to start from the beginning each time with open(in_file, 'rb') as f: md5 = utils.md5_checksum(f) with open(in_file, 'rb') as f: sha256 = utils.sha256_checksum(f) return {"size": size, "md5": md5, "sha256": sha256} conda-package-handling-1.6.0/src/conda_package_handling/utils.py000066400000000000000000000364001354123340300246620ustar00rootroot00000000000000import contextlib from concurrent.futures import ProcessPoolExecutor, Executor from errno import ENOENT, EACCES, EPERM, EROFS import fnmatch import hashlib from itertools import chain import logging import os from os.path import (isdir, isfile, basename, dirname, join, split, lexists, normpath, abspath, islink) import re import shutil from stat import S_IEXEC, S_IMODE, S_ISDIR, S_ISREG, S_IWRITE from subprocess import check_output, CalledProcessError, STDOUT, list2cmdline import sys from tempfile import mkdtemp, NamedTemporaryFile import warnings as _warnings from six import string_types on_win = sys.platform == 'win32' log = logging.getLogger(__file__) CONDA_TEMP_EXTENSION = '.c~' def which(executable): from distutils.spawn import find_executable return find_executable(executable) def make_writable(path): try: mode = os.lstat(path).st_mode if S_ISDIR(mode): os.chmod(path, S_IMODE(mode) | S_IWRITE | S_IEXEC) elif S_ISREG(mode) or islink(path): os.chmod(path, S_IMODE(mode) | S_IWRITE) else: log.debug("path cannot be made writable: %s", path) return True except Exception as e: eno = getattr(e, 'errno', None) if eno in (ENOENT,): log.debug("tried to make writable, but didn't exist: %s", path) raise elif eno in (EACCES, EPERM, EROFS): log.debug("tried make writable but failed: %s\n%r", path, e) return False else: log.warn("Error making path writable: %s\n%r", path, e) raise class DummyExecutor(Executor): def map(self, func, *iterables): for iterable in iterables: for thing in iterable: yield func(thing) def get_executor(processes): return DummyExecutor() if processes == 1 else ProcessPoolExecutor(max_workers=processes) def recursive_make_writable(path): # The need for this function was pointed out at # https://github.com/conda/conda/issues/3266#issuecomment-239241915 # Especially on windows, file removal will often fail because it is marked read-only if isdir(path): for root, dirs, files in os.walk(path): for path in chain.from_iterable((files, dirs)): try: make_writable(join(root, path)) except: pass else: try: make_writable(path) except: pass def quote_for_shell(arguments, shell=None): if not shell: shell = 'cmd.exe' if on_win else 'bash' if shell == 'cmd.exe': return list2cmdline(arguments) else: # If any multiline argument gets mixed with any other argument (which is true if we've # arrived in this function) then we just quote it. This assumes something like: # ['python', '-c', 'a\nmultiline\nprogram\n'] # It may make sense to allow specifying a replacement character for '\n' too? e.g. ';' quoted = [] # This could all be replaced with some regex wizardry but that is less readable and # for code like this, readability is very important. for arg in arguments: if '"' in arg: quote = "'" elif "'" in arg: quote = '"' elif not any(_ in arg for _ in (' ', '\n')): quote = '' else: quote = '"' quoted.append(quote + arg + quote) return ' '.join(quoted) def rmtree(path, *args, **kwargs): # subprocessing to delete large folders can be quite a bit faster path = normpath(path) if on_win: try: # the fastest way seems to be using DEL to recursively delete files # https://www.ghacks.net/2017/07/18/how-to-delete-large-folders-in-windows-super-fast/ # However, this is not entirely safe, as it can end up following symlinks to folders # https://superuser.com/a/306618/184799 # so, we stick with the slower, but hopefully safer way. Maybe if we figured out how # to scan for any possible symlinks, we could do the faster way. # out = check_output('DEL /F/Q/S *.* > NUL 2> NUL'.format(path), shell=True, # stderr=STDOUT, cwd=path) out = check_output('RD /S /Q "{}" > NUL 2> NUL'.format(path), shell=True, stderr=STDOUT) except: try: # Try to delete in Unicode name = None with NamedTemporaryFile(suffix=".bat", delete=False) as batch_file: batch_file.write('RD /S {}\n'.format(quote_for_shell([path]))) batch_file.write('chcp 65001\n') batch_file.write('RD /S {}\n'.format(quote_for_shell([path]))) batch_file.write('EXIT 0\n') name = batch_file.name # If the above is bugged we can end up deleting hard-drives, so we check # that 'path' appears in it. This is not bulletproof but it could save you (me). with open(name, 'r') as contents: content = contents.read() assert path in content comspec = os.environ['COMSPEC'] CREATE_NO_WINDOW = 0x08000000 # It is essential that we `pass stdout=None, stderr=None, stdin=None` here because # if we do not, then the standard console handles get attached and chcp affects the # parent process (and any which share those console handles!) out = check_output([comspec, '/d', '/c', name], shell=False, stdout=None, stderr=None, stdin=None, creationflags=CREATE_NO_WINDOW) except CalledProcessError as e: if e.returncode != 5: log.error("Removing folder {} the fast way failed. Output was: {}" .format(out)) raise else: log.debug("removing dir contents the fast way failed. Output was: {}" .format(out)) else: try: os.makedirs('.empty') except: pass # yes, this looks strange. See # https://unix.stackexchange.com/a/79656/34459 # https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html # NOQA rsync = which('rsync') if rsync and isdir('.empty'): try: out = check_output( [rsync, '-a', '--force', '--delete', join(os.getcwd(), '.empty') + "/", path + "/"], stderr=STDOUT) except CalledProcessError: log.debug("removing dir contents the fast way failed. Output was: {}".format(out)) shutil.rmtree('.empty') shutil.rmtree(path) def unlink_or_rename_to_trash(path): """If files are in use, especially on windows, we can't remove them. The fallback path is to rename them (but keep their folder the same), which maintains the file handle validity. See comments at: https://serverfault.com/a/503769 """ try: make_writable(path) os.unlink(path) except EnvironmentError: try: os.rename(path, path + ".conda_trash") except EnvironmentError: if on_win: # on windows, it is important to use the rename program, as just using python's # rename leads to permission errors when files are in use. with NamedTemporaryFile(suffix='.bat') as trash_script: with open(trash_script, 'w') as f: f.write('@pushd "%1"\n') f.write('@REM Rename src to dest') f.write('@ren "%2" "%3" > NUL 2> NUL")') _dirname, _fn = split(path) dest_fn = path + ".conda_trash" counter = 1 while isfile(dest_fn): dest_fn = dest_fn.splitext[0] + '.conda_trash_{}'.format(counter) counter += 1 out = "< empty >" try: out = check_output(['cmd.exe', '/C', trash_script, _dirname, _fn, basename(dest_fn)], stderr=STDOUT) except CalledProcessError: log.warn("renaming file path {} to trash failed. Output was: {}" .format(path, out)) log.warn("Could not remove or rename {}. Please remove this file manually (you " "may need to reboot to free file handles)".format(path)) def remove_empty_parent_paths(path): # recurse to clean up empty folders that were created to have a nested hierarchy parent_path = dirname(path) while(isdir(parent_path) and not os.listdir(parent_path)): rmdir(parent_path) parent_path = dirname(parent_path) def rm_rf(path, clean_empty_parents=False, *args, **kw): """ Completely delete path max_retries is the number of times to retry on failure. The default is 5. This only applies to deleting a directory. If removing path fails and trash is True, files will be moved to the trash directory. """ recursive_make_writable(path) try: path = abspath(path) if isdir(path) and not islink(path): rmdir(path) elif lexists(path): unlink_or_rename_to_trash(path) else: log.debug("rm_rf failed. Not a link, file, or directory: %s", path) finally: if lexists(path): log.info("rm_rf failed for %s", path) return False if isdir(path): delete_trash(path) if clean_empty_parents: remove_empty_parent_paths(path) return True # aliases that all do the same thing (legacy compat) try_rmdir_all_empty = move_to_trash = move_path_to_trash = rm_rf def delete_trash(prefix): if not prefix: prefix = sys.prefix exclude = set(['envs']) for root, dirs, files in os.walk(prefix, topdown=True): dirs[:] = [d for d in dirs if d not in exclude] for fn in files: if fnmatch.fnmatch(fn, "*.conda_trash*") or fnmatch.fnmatch( fn, "*" + CONDA_TEMP_EXTENSION): filename = join(root, fn) try: os.unlink(filename) remove_empty_parent_paths(filename) except (OSError, IOError) as e: log.debug("%r errno %d\nCannot unlink %s.", e, e.errno, filename) def rmdir(dirpath): if not isdir(dirpath): return try: rmtree(dirpath) # we don't really care about errors that much. We'll catch remaining files # with slower python logic. except: pass for root, dirs, files in os.walk(dirpath, topdown=False): for f in files: unlink_or_rename_to_trash(join(root, f)) # we have our own TemporaryDirectory class because it's faster and handles disk issues better. class TemporaryDirectory(object): """Create and return a temporary directory. This has the same behavior as mkdtemp but can be used as a context manager. For example: with TemporaryDirectory() as tmpdir: ... Upon exiting the context, the directory and everything contained in it are removed. """ # Handle mkdtemp raising an exception name = None _closed = False def __init__(self, suffix="", prefix='.cph_tmp', dir=os.getcwd()): self.name = mkdtemp(suffix, prefix, dir) def __repr__(self): return "<{} {!r}>".format(self.__class__.__name__, self.name) def __enter__(self): return self.name def cleanup(self, _warn=False, _warnings=_warnings): if self.name and not self._closed: try: rm_rf(self.name) except: _warnings.warn('Conda-package-handling says: "I tried to clean up, ' 'but I could not. There is a mess in %s that you might ' 'want to clean up yourself. Sorry..."' % self.name) self._closed = True if _warn and _warnings.warn: _warnings.warn("Implicitly cleaning up {!r}".format(self), _warnings.ResourceWarning) def __exit__(self, exc, value, tb): self.cleanup() def __del__(self): # Issue a ResourceWarning if implicit cleanup needed self.cleanup(_warn=True) @contextlib.contextmanager def tmp_chdir(dest): curdir = os.getcwd() try: os.chdir(dest) yield finally: os.chdir(curdir) def ensure_list(arg): if (isinstance(arg, string_types) or not hasattr(arg, '__iter__')): if arg is not None: arg = [arg] else: arg = [] return arg def filter_files(files_list, prefix, filter_patterns=(r'(.*[\\\\/])?\.git[\\\\/].*', r'(.*[\\\\/])?\.git$', r'(.*)?\.DS_Store.*', r'.*\.la$', r'conda-meta.*')): """Remove things like the .git directory from the list of files to be copied""" for pattern in filter_patterns: r = re.compile(pattern) files_list = set(files_list) - set(filter(r.match, files_list)) return [f for f in files_list if not os.path.isdir(os.path.join(prefix, f))] def filter_info_files(files_list, prefix): return filter_files(files_list, prefix, filter_patterns=( 'info[\\\\/]index.json', 'info[\\\\/]files', 'info[\\\\/]paths.json', 'info[\\\\/]about.json', 'info[\\\\/]has_prefix', 'info[\\\\/]hash_input_files', # legacy, not used anymore 'info[\\\\/]hash_input.json', 'info[\\\\/]run_exports.yaml', # legacy 'info[\\\\/]run_exports.json', # current 'info[\\\\/]git', 'info[\\\\/]recipe[\\\\/].*', 'info[\\\\/]recipe_log.json', 'info[\\\\/]recipe.tar', 'info[\\\\/]test[\\\\/].*', 'info[\\\\/]LICENSE.txt', 'info[\\\\/]requires', 'info[\\\\/]meta', 'info[\\\\/]platform', 'info[\\\\/]no_link', 'info[\\\\/]link.json', 'info[\\\\/]icon.png', )) def _checksum(fd, algorithm, buffersize=65536): hash_impl = getattr(hashlib, algorithm) if not hash_impl: raise ValueError("Unrecognized hash algorithm: {}".format(algorithm)) else: hash_impl = hash_impl() for block in iter(lambda: fd.read(buffersize), b''): hash_impl.update(block) return hash_impl.hexdigest() def sha256_checksum(fd): return _checksum(fd, 'sha256') def md5_checksum(fd): return _checksum(fd, 'md5') conda-package-handling-1.6.0/src/conda_package_handling/validate.py000066400000000000000000000022201354123340300253040ustar00rootroot00000000000000import os from .utils import TemporaryDirectory def validate_converted_files_match(src_file_or_folder, subject, reference_ext=""): from .api import extract with TemporaryDirectory() as tmpdir: if os.path.isdir(src_file_or_folder): src_folder = src_file_or_folder else: extract(src_file_or_folder + reference_ext, dest_dir=os.path.join(tmpdir, 'src')) src_folder = os.path.join(tmpdir, 'src') converted_folder = os.path.join(tmpdir, 'converted') extract(subject, dest_dir=converted_folder) missing_files = set() mismatch_size = set() for root, dirs, files in os.walk(src_folder): for f in files: absfile = os.path.join(root, f) rp = os.path.relpath(absfile, src_folder) destpath = os.path.join(converted_folder, rp) if not os.path.isfile(destpath): missing_files.add(rp) elif os.stat(absfile).st_size != os.stat(destpath).st_size: mismatch_size.add(rp) return src_file_or_folder, missing_files, mismatch_size conda-package-handling-1.6.0/tests/000077500000000000000000000000001354123340300171155ustar00rootroot00000000000000conda-package-handling-1.6.0/tests/__init__.py000066400000000000000000000000001354123340300212140ustar00rootroot00000000000000conda-package-handling-1.6.0/tests/conftest.py000066400000000000000000000016021354123340300213130ustar00rootroot00000000000000import pytest import os import shutil @pytest.fixture(scope='function') def testing_workdir(tmpdir, request): """ Create a workdir in a safe temporary folder; cd into dir above before test, cd out after :param tmpdir: py.test fixture, will be injected :param request: py.test fixture-related, will be injected (see pytest docs) """ saved_path = os.getcwd() tmpdir.chdir() # temporary folder for profiling output, if any tmpdir.mkdir('prof') def return_to_saved_path(): if os.path.isdir(os.path.join(saved_path, 'prof')): profdir = tmpdir.join('prof') files = profdir.listdir('*.prof') if profdir.isdir() else [] for f in files: shutil.copy(str(f), os.path.join(saved_path, 'prof', f.basename)) os.chdir(saved_path) request.addfinalizer(return_to_saved_path) return str(tmpdir) conda-package-handling-1.6.0/tests/data/000077500000000000000000000000001354123340300200265ustar00rootroot00000000000000conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000.conda000066400000000000000000003354151354123340300236730ustar00rootroot00000000000000PK2Ÿ$N,ÄŸˆ00!info-mock-2.0.0-py37_1000.tar.zst(µ/ýˆ=©Ú-3°ˆ†ˆ G‰a@ I˜®í­å[úÄñC1÷Gkj¹”<Çqý,{t~õý¥t,:³oŽóëö"]¤Æqª eÇaÙR`;=+ƒÅN®°Óžd Š¿PNˆð@ÂZ“W”%­„޲5–À$d Æø^Kp,:Ö-!l–EMe‘ ìP(§0" åÿÞo»°e”Óã£åÅÿŽM·®¡´Û´mþòÅ(%ÆÏ¾±úÊn[|׸ۼ·b‡MRÆþþ79+¤ïÉöuÊ{_¾lˆ§ì í­m«{xq³Ò댯]ìÛjÃèÖod“â‰RFßþ?ì ]‹ÌJo”Õ†»²ii“ÐkcMºŽóŸ²(ýúj­ÝóÅ)¿MØð6ž4ÂÙ3Øf[ÛüyÅî/õ¶ÁÅ龺TÊÎCÈÔe›”õ_l§ûê챌ïc³¶>|e¥5zãlýð=6mûû¯£s õÒ¥rÖ0R”ʥ̄W ÊkM«q©X¨JmµS @†ç{–ã‚PáÞ?Å÷L–·ïÖØTõO•}r0¾:{Uns=¨`­òÖWùi€bpQOUí<_qËdi >”Ÿë?=¿DtI’7_ù]Ю²›¥¬~MQͤ“KlUNEö"ã¢$ÈÖ–”¥%=½Ag½¨§&‹…vé&¥ò YßßÖ–dy0y:’:%tÎa󕲨{L6U¾Ûì[?Woñ>•‘²**,|gz cç«]yŠ¥šs Ì€mè(Ôý„“¥C7·«Ñ3ñ¢çMQåSdÿRyŸ­÷B‘|š˜K²TO-²]tãÖZî"׃fU'§PZ¡lM‰MÃm.Éš·¨¯¦·¯é.(=‹e t [Q%]&Û Ê^®‘M[ù±ùÄÉ©¢hºSäÀåd|3ãñêvQ‰lS-”*O0 ”TU”ˆ‚]Âo£ŠSLù30}µx)ÛŸ‡2~ËT9ŽãSU¡ÕS«Š &ÇÄ<˜œÂ¡€¾O=Ž¿rŠ8)„Zëü5•ýîXeçC&ÿÑw²Ù‡eúìê CvñS‡Õåc^g»Ý³º·Ÿ:Ú÷Aˆ¿{«‹0Úöjÿ?Öj–Éfý=j!nõUÉâsõ-v±ÁÖã·£dòI6í7–?a›ŒÑW±mÕÚ‰»Ÿ|ûŒMæFgÐNæ¾wÎ9Ÿkæz×èà»®úýZ!œ˜FiY›·>ž–ºt×QÖv°Îj»ÙZk£ÐUf›UYÿ:~.åuôÍv´'}¯ßÉ+¬’^×­ºûØõ›.»Þ6]cÑ¾ÓÆmÛ]gÛž Þ>/ƒÕÞËÞ¹d°_W9ee¬:µO¦Ò)¦6²‡½Ê†«ôov^(ßËø˜{‡:a‹Ï1wìã·ÙÍÅÝð­ÅO2õeŒ-fdhmÁµ* Y–û«¢üY uÿ1ƒAe Ÿ¦§$ •hÂëòLä)ZkÀ¬K]÷+_‹Ê”É*@6æZŒî1 X X ‡Y Ž31dó<åu1­…ŠÆ©ðŠC¹#µkâK ‚Öš‹å× ìÀä¾€2Å¡"ëAtËsy ˆ™¨˜'S@¾¨°0>_¦¢¢¢¢²Ï@4I‹©™¢iÊòÉ2Ar%WRäX$ˬʫŠ™€ü±O–Ë `ö¯Ã @àXiL‡‡ƒÓÐhÀ<¸TCÖ à ‘š$ë Tcz)r`TPÔÀøÙÔ#I Æb˜@ ‰‰ãððHà4^lèàDÆ ³ª’¿b˜¼‡ÀEBÀ*€šÈ”…,²LÌZTTD¡*è+ £@AA±XS¾‹ÅO4‘)éï"‚‹Õ¬UY,ƒ‰ƒˆJÊ“¥æ:ƒ×ÍëþRËÞƒíbÇõ1[ ñV L4Í‚Ñdé"-†,†¯8ÄÀ0°°p®_c ޹n×¾òGª|Õ4ΈF`ZŒP6¤×zµ³K}â÷ Ë¿R·ñÝ÷wóѶ‘¶|ðY _:î[›÷›¤.!k)Yl ÃÙî:vzÙ¬>XããÖïÜZ«·mçó­´Îá¼°ic3þ߆éWÊû÷=*/eŽÙGÛµ›aê*ss>s6Ê)¯mïèìÛè“Sùº®ú¬ø¯ƒÔÙ¶PÞˆ-´Ž|uVˆ¡ßÙîÅŠ¾U·³áZíÖl¬Òee­ÅopÚ;kœŒÙçï]ÝíÃÖ²=m»e^£³ŸÐÙwþÏQûÑMˆmm]+“¿|³¶†YuKïW\Û—ÓÙ¤5B6r¾¤wö½8„ ¨'¢4Íb(èB#3CÚã $LÊCIVÛSšDÂ,@1 PÆ@Ž¥6×!° ÁJ‡Q’#q ÄîdUÛò~•Cú­ Næ%µJÿuÁþÁ“¿–†þ¬·ÿýö‹&¬¾Ë÷½Þy¿²tÿÇWæ~•Úü+í'úçvëø›ÅzU*“m8c-s”AFYI 6O?’‚¾Œ‚h–…Z¤*ÂÕ¯¯°‡ªÝ•=½Ð1ÒG[áÇÁÒ•¾ôo-½ HYtiÙÐÚŽ¦´ÿDmª^8љۃwX¥Ü=‘nÈi€]ÁˆƒBe&5쥴¨E¢ºP~ÚìÅÔŽåÊ–HTù³R@¬1ÿO{€O’P¹ƒøS¾PÕìoÑíQBvšW¨-¬ñ I7ôÆFú@Äô’±<œŽþP¦C¬ÔîÜ35C¶{xƒeè½!FËnŸãôÙi+í4ž\Í!CÙœ}ÇáÍá)*gÅ*ͦ3)§Ee!÷j ˆUUœDæ4Íz Ž4³l¤R#ÇÑ ¶Ê ;.펿J‹³Ms˜Îþ«ÍÒ7û§Í& ã¢ý–>U5”ƒÛrq†g×Äã©B+‡ ˜²§v.ºW®}ÅO%žjhÄý…#³Âµý‰½Þ–kQ¢¥á¡íS”¢ƒh•~‚âWpzSã/w`šÅ€͆p6ÞW›TüÇ`I‚H€ÒØZp£ˆ?hT>–(¾î7ñ U$”TÜOƒÄqM™‡éLÍ93‹÷ˆÒä(–dg± • ~[üIÌï=­ÄBö—~¹è†T²Ì2цþ´PØ‘QÍœ¬k(­ÌÉ’qùŽ\s¦PÈÙ%žEû@FkÇÜräÈ™UnÛT~ksÝx+d‰h©Æð÷KÇçâ.«0ÁKdžA§R¸A×Ù1ëè¦Þm JÁÀ~Æ8ìüY\¤º˜×˜{€ÿpÐ*œ"ðÛSj`Nýûœøs )f#hæ—[“'[PæáêF_(O‡û“æV»—ëÛ,2¡sóà'/ÄBƒ¥/l¼Kdø‚8­ Íðþh‰ñrúð?ID±úÁ%î'XVØKÀdéà±ÜS‘È÷DòúÚ÷âÁvÐÒ¢¿ù£vxÄßaçøý¶n·–hÈæ…Iƒìbœ¬^%Œu\Œ;žÞF¬ÜVeˆ¶¾ä¹a)›`vÆC¶°„—³ÙFeú›ë´Ü¨j“éíÊN˜s§\ÚŠ1Ïàǃ‰îá­®w ¿@‘~Ù{#¼_SaãOÓÄ7yf2/6¦-¬éÓ-í:Ü¿lqý•tdƒsa:¿yÍ:ܹ^ | ªËfxïÆ²Û~–º”ØP‡v«‡K‚nzG¸sðþX|÷t¥Å7³‹2ïùZ—ûÔc¹˜Õ{[a0ËQùà¢Fþ"º˜«lB¦ðézT03V¯©b"{û÷éßc¾¦y˜©«¶Ñ= 6É”c¿P­aBòP$¢É^½ÖK¼uÌ ÄèlÌðòâP— ß&Ðt\­kRËbe` DœWÉSÝâÊü ‘…ÆÊé¶\‘Ðiÿ ºÎÀêé§éIØòiJg•ˆoNXÀÙNÇ–ùê(ǰ6à6‘œçC «šMD,• f1ýi¤rv‚d#SÃ"M\aźr; ;îËâû`ÖX3ýníV¹Ð$œ½vàø”º‰ÖHÍ*> ü`ÀìùÐæîH.î–²å~r/¯s9Ñ©{a}­}$Úä}Ÿ¸Sè€\6cMÖ.]ëŠiræ·„UjU&ü_UÂIhŠùñ—Rûò|YLµ°5GØc®h¦éµÆ“×[, Øt‚³¹-ÐNÐ Œœ2`% ¢7u Ç.}½«¨/8vi|®÷CXàxK×Á±´¼:Í 1¬ãþbÔ56’]¯±p™D&ÔÌ“ÞÑ ¦sñ›&ß´F¦ì{÷6Æ! ½ÙfQ–†{ ±ã…íüˆ$€Nvfo‚w’CSæ·Úò09Ÿ)ö z œä½ý±×‘MµïqIÀY€Vµ#×N©‘ ÷­o í1N(çN®iŠh‘Œ ç qCXUhÜ5d©;cJ záÛ§–nÂ]&Å" hò¶Ö“BV†Mn‡:)çŠÃ×P É5d6º†J`¨ÍÅ0GÇáAã)I˜KÏÌÉñûÖÍ"c‡ŠÌ Ií¾)…ý¦Ï_Ð8©ôxB8hËû(û™¬%@KB6Ù‘wAB+cñTQaׇŽÒTH…)T_<Óßo®Ó40…_8»ã(™E|ÎIœ ÜiLÇgx!¿7sçÜO› @3•‘e¨H„–#Ñr)m®;|üµÃótž0ë’–Å\QŧÉ^x[€¯% ¹zœ¼Pý9'âó ºÔ¸5èj!D³xûÓfD²ËM<°wÏN£? ^iÛº)6 "o¹ÆáÅN¯óZB/½X.ã­˜Áÿè®r'ú¡Ô¹‹úym ‰êk‹V26Cbþ˜JƒõÆÄJÚÑßZ™(ÞH¿7Þ¥ˆGH1 ¸®›`OŠM¼ÿ·³P»€…ít²iïù¯ ÚDÂñ½U[ ì±Zj2Âl¸!o10Üc…à]cø„‹ghM8„/0hƒ©Z[§§¬Ú¶Ç 4Eªá3ÆE)àíDÛ1«¾²M©á ÂI&•Ú³žÓ0ÌYBá!Ѿãš`Í\ÆDävd¦#¿})Vÿ›0ÑëËË¡‡+ xËeóRíb¶Ø- PK2Ÿ$Nä­Y(¤(¤ pkg-mock-2.0.0-py37_1000.tar.zst(µ/ýˆÔÓ˜UYq?Çæ3ÆÀßçcdˆa†y𧉨ä,'šÒ²Ui[²c "‚´©¶$<'ÛzM€ÜÛ$fìðoa< Š¢$ ­)½%mÚ)e’@ d ž ¥|q÷(ÆG sùNGm,(8Lí DͶ{¶qÒ7Ûßó¼þaô=âÁÿwWˆ—É÷¡DžîƩіÊR¯òr{//² %¶ªšC‡MéŽqùâ:$< ž'V¬'ëÔâOõJF¶ÓßÇI¹ãBÜpž§¾]ŠÅ4Ѧ<-=cºÄžLâFaEèØQ%ë¸Â*QoÙã÷m]ÝõáÃ!½²uE®7—ûþ/0Œf-–Õ7n.غ~ÂÝ[¡/nÜYBÌzÀ"¼U麵¡7ÕÔ›¼äk•ÙR›?•ÀN!NAÊh}…¢¨NfM•¨Siš…hwu. u ®›—ëÔ@ÅcðêŠ+béKµV• ä2 ÈOœ{óT 7¸ljZÞ£0Ñ‚‚"_,X^.:ÀD©7¹ê­©«.uÒÅÝNž«¬»üñÍÝÓâtEÌñÆ;uYwuÃSÖ+`/+êwÛÃ+eþÌ­NÎM‰Ì•}-n¡ÅÛ$7aÏ ©j ,_Èìø Ï¡¢4£ÿÓi@fä yé§ýàÁÊ0n:¸Òä«…ƒ?ù1ëaW¯"Hº"3$‘NH€Ò¬”¤‘rîÔCP'™:ˆ ÿ÷AÜþžFâ8ãø+Ä]ÀM?ÜÆÝXÇÊ_ìøGFx1‡Ãy h‘ ÔYPäi\¨ò‘¾ã‹»§Yº¼P¡  ’³LÆØÓ÷OC8P\ÐxäŒÿèjò‹—ßS 3å=ú¡X(ÞTÍŽ–hoD¶¥ÙèÝŒ´Vš}iþ¿Ü%yH]'a$Ì$wÖý߇ֹ…ŠÜ/Þó©ÂÅa|+†æ;Y "úqÁ¾¼¼gZg\öþ͸w8ñ\Ø»1ëî+j<‘U%?·¨Í…{3Œ÷¿9-#·¼ ÁüéSTè„Ú~ÿ+^U Ó¦ÚÌ““”GùêÁÖv3Û°ë]‘’ÜşϾÙÅíÛ/Îû×áîÎÝ ër÷w¹îß(â±/¬õÂÞ”êä¤-ÑÎJäÂÖÓ7 çð¿¸OlYVúI¥—è&VOé⪣ô’ªŸô0ÕQåÑO”¢JÚI„Ä4El¥Ø• TÉŽÑÐU_´¦þ€­Îåíú-;Tfòø¤´ý×jôfôu¶x\W;Ç/c[Qµÿ„ÙRöân®ÃÝÂ0î›t]÷ylƒ†ìÿ?×S能0ÎáÂ|O%S%P*Ka©ÔÃGÁÞývÞ;¾¯ï¾KoÈëÝ 6€î·Á¶.Ý]yh§]l]]j”å2ãòÎ:‰Ï yAÊn\®µ»\䙇º5Mí=²ëº’¿!¿.w]×Ö®ë¼4e¿¦BŸ›§ ÔûÉK&QakÚyIKy‹ÖNÛ× évUq»IšyS¿©µyôÿóöµ>íæËL²àì+ãº{“<œ‡tqÞQf‚»Æáô¬Ãé#>º]uø|t“òÇHwÖý®ë^k×u6¾a/ïvIé¢3éžQ\v?äŽ{IƒÕ!XWN-=k—_ñŠ› ]çù Ó¤ÑNÓüZÓÓ%Xv]‡½'úD1Ó ËM²¸¯ïÕ[-5ÑODS× Õ^²ëº®‰&»ܽқi´´¬Ë\Ã4|oykívXC*ÐDfgçÆu³sS³v]w{j2xkts¡¡ë®ïx]²ûéz×uz¥q§Ðu]†dÀƃ®ëºÐdªQs“s³cãjíܸ€µLó§¶Ô4Q!Ø 3º™æ‹õ&ÈcG† &‰ùSÌHƒyÔ›k #€W GgÇeÓéäØÔuÖòA·ð¯<§ÿE8\¬hO“„´+šú@Lý¥7ȈJ»Õväà¸Z7;:-—ì$’ÙNµÚéeßvCûÏ ¤£IT»ùŒ;~€¬Ea64íD>cG» ý¶êjSmØTŸ&±áx#êª2ºsÆŸñ¦ÒÐ$è4–®ëI³Qû'-H˜ÞŒnµ_ô[8~^8lìðñâEJ 2?*óç÷è_ÏÚ !˜íY’µ•Â\¬i’Z:¶Z#ÏJô;-%ª‘¾XG<ê‰ÖuGÏ’3czÞˆ~Æ?5xXwQû©ÒlJÔ&?xà¡¡}D=Z#BÑõDiAhnD:-WúÏÚU˜·¥ç·©°QhUbSoZ7£ÉC­ö…Z/^$Aû‹Ö S» FZЙäiº?ÿ:ÚZ]‰FŠh’SÈú£UhüDjG×õÑ¡³6vÛ CgAª’í5ô¯FëèÇpýþ¼(ì¤ÝP?ª$RÆU‰úwŒ-[úýxŽkúo©‡­èðUÈ«ÇkÈjCa©PæÕfÔÓÖú×”FÃ…-yhéYC]ØFOäó‚v0/j*¬D$ôSÙ‹<ëí!YMÕ®AFí½[EÿOmDcL¿WoC°3h”ÙRM2òù³V#ú Ñ­¯Ð¦åyljºz”ˆ‹óŸýü蛚œšœœœ››'§ëºHŽ×8ôÒ…Ý8úó¯D]ÍØÙà¸l\95:;9;89.›ÎÆU££³ƒ££SÓ¡±suqKY_µ½Pc¶Ô…L†¶Œn.jZ5-—‹!˜Z{±¢²svÞ\ ?]_ì´nlªÐ7º½Ji©ê$…:alÅÒÍ… ÿvÆ:ǺãçmL ˜Žbì'^º —NÄÇ=®ÒJâ…†ójw71¼í·eÙ-ŒÉ1ØŸB7Úé•'ë•xEÆëœ¨(‘òŠqjÑØÉáÑîU3ë²[H4¨q¼Ëio¶ÿ÷÷÷z—ÓÆá# 2Έ¢œñ ¸ ¯:šÛÅ+QmÞŠ×øÓœÈlÏÒ#ÃccZ©ÐÅÈvz{v—Ëadóùð>YmT Šz¡ï¡N6PNN-Ó‰Ñ- HxÝ+/_A㯩Іé}Õsxùä/U £,ðxÕYhÊéÔM+E…S¨­—»†ap[!â…@pss㪱ñè† ]~¤Å›Â!¿8æh{^çø#ðß–&YI¿½æ'Åò-²€<\á%– W0Á[ø ²>þqŸ¸‰—8¾Ñ±llÀgÉO Þˆ"ü÷ !D@g„äæi1rø±±Ã"¶ã–­»9±²BÑ/.–d0õD²4fSa§çÆkÀk¯ÁÁ›ÒÎô§¶ÔeƒÛU æ–ÁŸA7a™Ú¤7ͮ֒¤ xÞÖú(÷Œ”s¹w"R„ú 0¿fZ„êv·¿(“445Ç•êèèxNË4«Fc3Òk3­œgŒµ±ë.zâ‹ÄÊéhïçH#…•&OMXO3…ñšt²îý—„šêc¦W;‹ v_ѺB`¥ !dpx†q3zoœÄÚmDjʈ ÿ¢?ŒÑÍè6ÚÔшöm¨Gc±´ë «ËѼڷn |Z’íœ"–ŸÀtáþ£+êÃRFÅÍ:9…O÷+êaX¾š^ÁÏhÀHi~÷­ÀØQÎÄëÖKùlN2¿Z®Ã°Ö÷ß\Æ—KŠP*ä¤Ô-™qÇQýã÷‰ÁQZ;j#ê,Œñí'œ{LÞÀ  ø!çƒÂGx‰r´ã&q §‚Z~ð¡-¼á3^Ý|¨`G6õ¥ƒÅ_¡xû¢ÉWëÕ_J¦ Ó£G·8DÎAŒ;Ùw™ìNö=&÷Ë@gã[ä…Uípu”_·Qº.Ë0Í[í…>±NwsÃúiDg¬D*”ÛSs’B 4äe6•¦Ûª´˜×¡´¯ý¶4³H›"µ&—6·½^vÃ:£šÿzÊNõÕ<ÊLõO~ê„:™ÄÒ÷ÃNjÞ徿»—õ]Õà¨Á4PŽ{;Ö{½‚½³®ŠÅÉÈêµ, = '#ÚLeš&_ïŠ$A¢Múh%~—¢ŽÿÝóÆ9ò‘×ñ‘î¹\îØ-1Ä+|Q¬_2MQfÂD»RŽ,V[zÒh°wµ‡n®~]wpwþy;wý‰à˜«T*SÐÉ‚Úø  ©‰ÚÖ€Úp@‚ýµ9÷›èf‡æý9ƒ»_œîgÜ3Ö?w<ƒɰ,Ÿ®J P:¬Ò¥ÉLóÓLs·\Ø‚¼,4¹X¸W°Bô¥Âí¦ cHÁ¤»!¿¦þÌ1­¦Âôm1P u2‰¥äß.ý6Ï»WkðóxWwC닼ù ¾²v[MUƒBÕ£¬MÝA޽m ¯gùߤ(8fá Ñd „h2R׳Uì;³šjxŸÞä$·EéšÃ  CÁŽÞÄ)×MLôè$}0¼‰ à&-c“p÷mÛ&B^ÿµ@aŸ0?ÝÔ*¦"O Múš¯ À&M\B¤½;êvlÐû™=*ôU¯Æ›;³N«2,õ6Д¸þu2uKÄþ•‹ ¢Ûwθ|¤w¿³ÛÓØ3ƒÐE ÙË5ÞA'­-J*FhÞr#®·õkymƸ ã±}-˯‹[_Y¾]Ì;1ÝönFh‹¾R3V¾ôÔQŸ T¿KN¦íy8—èœb|ø=@HˆÁ8ÑT¡€ÜÏáQµ±ØQÏu Áý&åÏsUz€¢ï)nUü õ7¯õÞ™U…ÌŒžŽ2NZ³|Ø]ƒt±)QT¼izýÙPTÉGƒNšº¦æúÃêpyí’îëÜñþ9&¹Nv÷o¸V‡EÌäW_¥2%v»^‰9C'vu‹…Ö4¦q ÷ƒñÕ÷"Å4¾¸³À«-£*iÒFF‹Ó%W.GÁúv+¹ßXw‚Бw놽:åòQÚ[xLŸÏ5ô§•™féò s¯Dë£GoÁ£ïè,tt:™£ãè37º½òé2+hôºŠž>£ÇÈè6ô<=Œ¾‡`f(Ð>êôœ~§ßôW·é&jú‹îÒê.z MoÑYXt²¯Ìt™**zL/‘¢ÃtŠ>ö”ý¥¯Lt—ŽÒÒYºj¥«ô“ÕS)}…ÒU'=usÝXœ•Ð DïØúaòeSÓ5M’vÎEÔˆO5»{RžÔR¨U;•§š‰–Ų–!/ù.=—­ÉÝÅ(7:â†4äèܬ]e‘D¥÷ÝyW¢aR¤tæ-kŹНJ²,á1p¤ÌÁ;tä ‘"_,²ê¦nŠß;®=õ6XøèÜ%]$ŒM}eÙ¼½œ¯¸v4ɉÒÒ¿ñ~8g?¼·÷°¥óÕ2¢(³›\ÜEêp]_B +ý“eüˆ‹ê ÄÅ~é">’…1´‡ ÁÀv¹"Œ‚LÔ äq :s›ƒ+†ïN_!ŽZ…;$¬(+˜Ë+–² ìFÜ,^ÜÙÀ‡¿qÙx=üGãšÕ, Kaß;»Ç»þ<½[ tÛÓÆáüg7Á¯ç|ts›•u€'0¿"Ha)Muƒï‘Áµÿ¶§/îÅÃfUg­¥ÿV3]มɮë|<÷!éÏ Ün˼O{Ûó<„q8ÿîö¸@T]V¸ÐÑCoEè©Ý¥uÛ)´eøô}†g!’6x\IãBP˸×%}HÝþ0Ya ‹÷©Óè¶åêws‡Y„ÈwûÍÄ¥¥£Xú¹‰‡ùf­1\-™‘¥ÄÊåD¾°‹¾ÑJKMÚµGöÓÛÔ» ºíy[ý_º›¤»ßw‘Ò"dX.?Õ:,õAµô%Ƨð0þót¦µ`9VáÆ–ž²3,³ÈލwañJ‡]¸àMĬÕLX ©2£='ïíJÜÓM ÂlÌÃÛοHµ±R»­ªE‰hgÓæ‰>êÅŸ¡õü&s¼p×=¤ÙÅ,!LܱyqGlô _û‘1tï¶„¦ª:ÄK³ƒ…wö/óp–u7ë™Çvc ô°!Ç'3cÙx<±£Œ™cÈöèÁÈmÈÈJ]‡Ü^×™A¥¢¢Þð«nuù±+ÛÄrVÅfi4ÛòE‚ ù¼Y)Ì{Æ?=ëGø®E8æu/÷þͦ£ŸñuÕ¦Ž3,¾Lþ ›÷Þ»ûáÕ#òMaÒÔ¢6±…¥½=!;-Bzv”‘yÁ®µ]ΤXÁư×ÑÖŽ²bïÒT©£N&°‹¼—¾p÷Nz½ë\wüåYZ'¬ÎA£]’ŨyûôèèGf%Tô ôR== ô t#I©±@¯@'B~D2.nDÿ@/¢ y@'¢À½=úˆ}ýŤ+ ÿH@G@÷D_Ò{ Ñy ÿÐwäº]GzôôG×q ³ý†Q/ê6”ô$½QÿÝgí¾Ó@ÒoýµÛzO­ÓúŒ¡>ë2Ò.ÔmõXçA{ï1`=¨Ã8;}Çìè:;ô#=G‡^vœº‘~S¤é®!¨Ûüt!½=È ýõ£·f.Pš>z΂œ‘YQ£ût1)`PÀè;]…ÕSp’ªï¡“."•P¬„«u p7òÚæ!3/Îáå.V¨HÁלUk¶y0(Æ­SK÷ÛÂnëuö*}7ì½`×(w(ÖI”Yrw†cX8S‡‚åaÒvâV·×ì´Œ¥[þ¡3ù’ ÒFC‡@Ž'fûÅ„èÒÂR¢\É€ŠJ Vɪ¥”)µU¹ª¡¨JUí$U¦j»ôt©ñ=á`‘0Ô$ƒ³“£SscÓ]>Dåsë ºQ…),┎O^¨dì?­„ÙH;ð:À ^Ô`/1LÂ4q’æP~»Ÿq6q÷Ââ_~s N2â*Qˆ^T‚ÚRFJ2Ïìr!ÿ²þÞLÿ°@¬t ïœ1ÀºÁW¶l$’‰nбM¢U $’Àdð7THšÂV¢º‹ÝqB²'XO‡™•‹;223>ŒÌ ;†4¤CزzùlÖñhµ°ê²À; À+5YâЇ÷J¡d7Ç÷•eYW$èHåéÏSäåò…Ù>İQ´Æ‰ÈOø Yœ¯X(žÂUø /ÁY,7ÁC®B±6?9•LüÃ5®ŒZ°˜€"ø€èŒ€B´ ÈÀÈï×¥Ù†„¥JKϨ™,Öa,È—Š|U€òh¦i‚-J¥­.Ùí:—3WÌ^É2­hzø¬o½,ÎGpn*;ç0å…†Mò ùu‚´›Ù»ú#Ö‚Í4t©™T¥ÍÙgß®ëg7hØ»zÁ2o5¥–‡ÎIH6ä;ŸÐB ™ p² ^ êFF)â6lìy3¤Ž1¦Â ‹Oš£¸" ’Å©œ»8gÕæR³…—sßtÁ 3ôöfï3OgØFv׸ «Ì„ˆË xµd<·[{ÞÍå -Vü[y8¸@H"!6ÕV*gà#œ$½’º%<Þ?(!%ùݶvaMK\ ¾tH:Ø­.Ù²±ÓüVs<Ó$cGÑ Ûõ!åùn…_Þ{Ô»º³ÂÿŽö ô‚HÂñ 2êâ](g3½s#BIÒÕÁPß‚õ´NÍL3Ô?™0Ɖ%þùÇ!ͰòJŸ0¶a%` “¼²#£sGDwƒÆZ;ìÅ1Íœoï"8H®Nú0Ö¡»nÉ‘îAà Æuì4uT_#ëÂS¯¤ °U€ –MLnýY#‹³,¥_DK­ìEvÛXˆŸe¥Ár›s~±=TÇä$ž‡äõ¯ã<­w.‹°7±É¤„O4Ÿ ’=ó’rÎ4^E=&u× Ò8Ž<ˆÃNÉŒ”ÿnåÛ3Ž¹Ú¥‰‹ ‡Y¨‘yäYæ}¯K’Á×Ú)ýÜMI‘Ï"‰óWß! Ö=Óƒ3?5V[úi)Qi8A,?®?¼[6@­¼„)ñEIx¹ŒªŠÄœ0Î¥ˆ'ËSXT‘àäÔbÞNŽÓ‚³¦“é‹sÇáÊ’ä°ûj šQqÇiÒàŠšå«“g„E˜-ÐlM˜(ÆK—K†7µ©¯A# ‹‘æchY<ÓZãt>êÒ Ø8ÑlêØc†…1ÄŠÌ¢onËT÷ª#tGÆ÷·tØÌu* (opÈlh|‘pžå0‘‹Åïbòòve\>ï‘D+­’¬Ø{X°5•`EÈ|½™¾a1(dPß’eb2e¬çŒÝŒƒ¸°áÍ–®g»¤Ï¢%ÆX%rœº=¨ H®lž9çß÷Ýó°ÞÂÆ§M–þüœ´8äè$Ž~£ÏØè5ºŒO§Ñoè=3ºŒcCçé)bt0;]§£Èé87ã‰.-,+ºŠ¾ÓSÀ¨”`¥¬PT')ÔifBE$Ž–BpÆQ! Oá«?±ùr§¸ÈUÀüxadH8ܰÆŠ|¥ðÊ–®‹‚»7Ç¿-Äb/iªÝzﯧÃU³^V§Lâ`ñS"“B¤œ§¿Ùþ¹{HIù -,˜Å庰à Í£…Ž×,&r MpÄœ.IDʸŒëVžº? Á+ã_‡»«™pþ÷Ï.ÒM¹\•1 ˆ6_×Ç^r•ÉP]^×ÿ;Lònz‘–ð½jžöË$ûLÄžó:þGpͤër8®RÙšå®T»6ºý‰¼¡hP‹=YXÒ²ä gÉ› –”‘™Á²)–eqéµäÇb–” ’™qŽ47#kŶB–œa_+*I¥"ñY‰Ug¥¬P¾Ùe²gÞ,…b’ÅRÏW‡ÌüËÝpI¬(íFôW;62k÷¢c÷·Š:jKaŵ‰%öH|ɯq.'äÒ°+¤°a}e¸þ¯/†Å,´ôx½r½~?ËÂ+ (J=‡ñ/aXÕ)+XcCàÜÎã…ŧz ?³â¿ñ½GX¹"þ¦QjåÞîé‘‚/ÌÀ(êѧ­²©.S'a¾y¸>zÑlµñµqkÜ-´L¤ 9cÚñX#’.§½ow¹ÄhEÀ`pÕ°k·°¯Ý4·?É n´THLâ/… ’×?oÉà›æ«©ÔärÈœÙüx1VCêôƒnSaèºÛ¿ú4æÕ¼rg_N^PäÚØxÇ&,Vá¬.Œ°D•ýTz?@îHz;øÿüRUÙ׫~F×(²9T Þj!âƒÇÇ?3ãf5Bô|“ð¬3½ÔäìØ¸\.›ØWÚÄpGKå¶yÛ)º8÷ùÏ®[ë~gz³¤Dï¡`Óà²Nf$ìueŒÆ·gÊK—Í —_ùå@vþß.A‹¤Y oëu>âr!Llíê¹qʧ=*éÝ'µ@îK÷•ð“ ÿ´ ‚ƒ"Ø‹kà‚](Ø>$mø¬ÖË17¿Ù ¶±E=ä~ʧP¿`–NõØt¬\æ5ø¡¯4µZH‘0¨'Æÿðf=.J "5¦l>.¼Rç²Ó(pt0hô\ºÍGm@úI¦ŽøXÁ‹¼ë(ž=äáPý´ÅûöTPÄ>Èd¦~eJ(ênŽ… Ÿé1ìÀõQj–¢H@ðÆ4N߬G”@Õæ3hKPð¡Ý–&û}h¢WrþDRp¿(ÃÈAÊÐÈÈ̘1êýì7TÝS)%T½…å§’ê–ȯžf©¶“R¥ÑP!¯Õ?Ëà7ÔgH¡¾´m}âAá/Ÿ¢JVýoϳó* Rð«Wš'DÝHõÑÈf:§uzŠf÷w¹YËdnÊ  äàäÔMªn‚Õü¤M°Bµ@äo–„t¯6,KLÕ0¼zg!LW„ÉM®X ›à^†n‹JRê«ôwSz©Ÿ˜ôJïAcQu5†Ia¦ +*ô½ò†¦áz>.› ’íÀÕeðHBÐ<ö«ÖØ„j¦§ˆŽŒòU5Ó:üBqŽCñ£®Ä·qî;õWÑ>"‚;}ÓyGÚg[„uW1ñštŽ‘"ˆÔ¥ßl#]&¥ŸeÝ¿GÞî^î^ w‹%g–Ö7óÌ0Á2,u9´ñ `Ô„…É_dÚƒÑ2/ç•çi-“ý"*Ð,ýã\JƘ\Yæ²,⿃Ò>i(²´ƒ;–aŽn­@ð¼m›pî²…Æùvïéîù½Ê"¶VA±5ø2,áÿÜ·aX‡/w¥» öŽ ŠJ›X þôÊn› ÉrY¾TZvÒ»ÿŸ©ãÀ{§û‡‚½¬ë¢Âbö‚ SÃßRV ß2QÄ$÷î½¼ ±Ë1¾=Ø<Ü\Ìü§1ø­TÜ'd^< _r€÷†pˆ$ã%.ž¢(+ áþí›»×8öâ|(Â÷HãûóÊÖ©_@¶Ž’ðBˆ pC2 Z䜅T\ÆË/ Ëu¹/¬ ^ívÁ,•­÷¯ ¹‚§cmÂrf¶t#ņ™ÜìZ ë#¹C„)ëVRº>Z%}…4Û?·½Þ¯¬Ë¡tÕň?çËäû]îÃCì³ìdêIbÇ—cü}c,ËHD­UY•CGæÜ%XFákù*y#žØóA±Â¶\·]]XRÆ%ÃÂACNB­hÝ`ŸL48Ch‘…«ÈÃm\)ìûìÞQÆÁ(Ò³o&Ä3²µˆl­åV·8ôF‚Îû6ëÆ²j“®Ò/(BŽtØ­VÙ¤»üÛHùˆ\Î_˜…·G?-á’9„ì¸a ÁäcGް|e®ÿw‰´¨òTDXÏSy„!¡ú¼žq8ï⌜°7̪ÌR‘‚¶+Ž®¤`É€Òɺ]…!n[ÓÂíš? fÀz“T;È~@p{ü3u×uß¹Çf*øv7îÿ$` 3¿H8ÁÁp „ð&…ù®`ÃÏ&jl"Ø€ëmi@¤8 tÍ+å¢#êÿjb[3n m¤8§ÑŒz(îÈ ‚.È1xN t‹Ï ~ˆ`>'sO¸-, ABG­,@¢ùšØ|ÿÉø”O˜ˆ¯ü¼ÑM…éõ$­¥´“ôPÙõnngĈ`“70âöEhÇØì>TDŒÅrôãë‘Âóô¢¬¾8ˆh{ÖqZ2'‹Ï½[âÂw‰ÉµŽ A22#Öõ±˜ŠÊt~áX*;×õÄ‘ ²yÆBò@Ç#ò¾ûS :iUÔ . È­2‡q^XÕ*»R¼–ipëb,rwÁè9ŠDÎâL0¢¥ë‰šè¨…ðE@~˜ÛÉ×Á;ÛÞíPHÁ¦N?0YxlèÒk©°)ØC¸Ô»+ÛÞÏ÷oÓ\gzf2˜[£R­L°š78²L{ÚÇÖ¶Žk 6Yìžaïݰá(ð`ÐB7a‹|ϼ¤œˆú Vß“‹ËÍÝ"XAjP.g)OÇš–î–Ü% aïémHñ"ƒUïÖåÓwñlÍâep˜Ã#*j0Üjl“xÐäM2‰}ÄbÜ~6çJ95éœÈ›÷CüÈbOXèĦ_†Ï*ØœdêXvS±—z¨³I¼²Ò弛g,›»r¹t`ؘæÌ ŸUÞ&›º’~*X…1æ˜ïÛQµ#ó!DFÇñ2_z)$Ší( æÂ²´¼˜`g ½Š‘§e•ZQaYì½á•¯ŠVô›jÜí«”‡êî;õÝÉP:Ž™Tbïd'¥ÞõÏŸXÂ=yîÛfÎwϰ8«Žp¢Áa#’*e¶“¦»ßd÷ã [ä’(jªZÃc¯7Ã7fãTFH´®sMi·{&9gº¥é|Â$¢8kð dó~v³`ÅÇü GÖ†¹èbÀr½Àˆ'äÁ›/NÖårÆÝ pÂ,xãÕH^B†á²K?!ŽâK°l ü)X¢ñ¥?ëg¢=]‘b¨¨$Í·f¥E4“S†c‘$JŠïtä‰Í‡Jãƒà b @D¤€1) ÈH mì}›,?¹ãKŸæÞ¾Ú”¦[‰šøs¸ä+N÷ãþòÛ‚YlJWÄüóÖŠäP´Nw–:¯@ó Ù´ b÷ñâ¶¾FžO$»;`PýIû ±Œ­Ð¤OÛÍ,°š¤I_0c¼/.Õ¤(Ò–YËPÞbÍ F'ÅÒUpœ»œÿ£œÈLg»²„R21á.tÂÿ/™º–RÝËof £Œ»Éeì€R5ՌԠC³Òšn¢ÈHHà–kÚFù==Ù‘Î+˜ÜeÒ¯=kXÛyö¤ZÜM¤p¯û.s?B ¾çZ jŠ.F;‚Ù-2ñÚZªýå~?…U®fÔòå÷kÍoÁÇ‘ŒzP¡n/'¤N;}ßRD¨Dø yU«:< èâ’¨éâ0«ŠJ>|DÇk2JŒ¨Æ@^€CLÐ_PQGb`¬]ÁÞy”ÔÏ:™Ñ.M†Ïϑѿ(†< ¬IWT‡°>ˆm¡›ª’ãþÏB[ú§.šj)L_ñ_D[¶æJ±ècõËî\ío—Ðe¶Ì€¨Áy˜PÀ…8ÊzæÑ7E‹è꿳˜â‘DŒöw{ —)Ä+Æ‘vèò<‰>>$í ;MʧsÄCPk31×$ÎWêm%p[¡./GÒwxÒ1±Eïm ­¿}âÝÐ?³“[3P4\Þ¦ýo¿Û.`¡û,õŸg…-¡ó ,¿¥W›ssgà`þäC–ßGèÀAÃ0ŒöbI~Ü®·p›RdJ\Óˆ%^#÷üéŸ"X¢ƒØÏÌþ…UcY‘&Ã8º>â¥Rqõ•‚ž3èNîdªüÉþF×þ˜n=:j‰~tPÊ&8 ð1“™*ƒ+ð3I˜Ô¼Þ|èlïu5BG ÕÕ+M¯·ÀÝ`/+ÜG/'„у¶íðªÎSv¥Ô_ ¾l  ëŒ"о¨[(`ú3òu¬QœoNepÜ@»>fÈIC< šI«OGî×á'ÙïSÂ÷ç"Õ¶óøî©ÍÇ:”ƒáÝZÕ¯’f`7Á VÄÙÎ(W¦ëÂIŒ§°¨õCS['WH?q¨ò“ñÑ¥Òjr÷}lŠ÷oŒå¸ö„µ:ksZ^¾~28ARí§˜Í¸ V)±©¹>_N{°—hûS𽉠§kQ~ªO‘Ü#v›¯¨Hy$ò¥´oG=\ᮿÇDýÒ êvÃO)‰=÷›¿ýÓ[ÝVHÚ!|ô]>)s E²°PÈ ÁB¡Y„A}=t¹5cDp¨qðT#ܾ´aëKÊ&^TNŒMMv¾}ZzMgTÚTGl ™µîv´Ô$˜FèÈÃþ ?ÈíÈ[L˲ÃÎÞ‚"_-P+AØùß^ZÜ÷–#ÃtôÕ‡ëîy¦ ˜ð[â’.À ñ™ ÞÈûÇ’SÃú?MÆOævù&& J7aÇcaƒ’ôrÁv›ö<˜«ñ†› âøC2¿ÓšH™”7ϸ$@Žxl¸É/ß^/zЏ$Þ>wŠS2¿ ô\àè’ÿŽOãd¹‚00ï¦ É€\™á8Cùk§¯æ(\-Jëz ëCcUØÿ‚)ü½|f¨W/ìW_z•hHÈ@·ðbgà—€òFC±šÞ‘ÖEÚ™·Â1qqHæ–7`¢(XaÓsÛ`o3X©5$óTr`ÁàoP¯¹,%‘Íše£¨ ø'`\ÉBó !ùÏ…øËÎþâÊÃÁÙ/K Aôþ*2°vgŠ`h— ¦Ô%Òx­7…MZy eQû•"le.YæìH`&92,@¡ç8óᢠÀ‚ ™Ðl%gpe¶ apÜf$õˆÍ†3î0óNð¬1ÂCȾ×7:úÝAãéo+†Éti@ž´á?N3Ç WiùÓNÎ-¢†^'à–ue§Ä¡,v¾L·”ßÑÌÀB tá.¢q¤N ’özÕGZ>Œ“£Ñ&ÞX¥rdR›Aª«Oëî DâmGz&»m%Œ9æ»*N~Ät"“Å ¬ìó¯oWYô0`= §»-ÀZõv 4"7Ûü.úÍòù>ä²é¾ž “p·é>F 10;¡&.ƒè³+½è9Žð޶eø… î~°Ž£¤ýKËO}¿t—>)Ý$$ƒï?âX›­½´o˜ˆÆÃÖ\—IÈ÷kß­YÎõ QºII d $Ð8e9߃dõ'ÓcÆ·¨¶ž­·èSŒB¡"PV)ëÞb0kí#@ñ´+vjy0ܢ쯹ÏYƒ‹?QôÍF•Ñ•”(5@B^)Äú 4ñ„!È{d1½¼gÈÞׯ“iº›àhœ@‚ç&Kãuâ7 Lm¡õÖ¡–>¿I?„¾2 è pEqrêk%¡E]3éÑA²Ú¶rC.NõuD·Þù¿± ¦Eªÿ¶WñWúE¶ø]Ãò8ôD”×qWÃÛîÑIÀLýÕ¼Á¹Ý õkηۮX‡µ²M¢É¥ÏcøD5½9‚X¤û;I—€‘Èâ—½÷¨Ä'ü¯­|ŽJV^‹*ABø«*86ëßÃ\nþiá,WýFÖáD‹ü>!2Vȼ"#§žý`£lrhÔK¬¶!¹óÐ œþШtóoÂúר3¨Dr¿Cº©laÄ»¶—d¹ab¨ƒhMºâ‹Jˈ`ÐoˆQu±èÔÍåª ¼ì¤z.åuÏh«Ü %2zÀ­‘æŠX¨$¼YҤ孤0u§Vº!Æ'8ʶõ᥂ÇA­¤ŒA‰Ê10]Ëþ¼†ÔólßDç…\ë ½Mç”~Œ­ÿÝIÌB¬â¬‡¼Bž¬¼þí›QÝßÂw‚Ÿú3Í÷xeh-ûà@)ñÍ ¨×;àžŸP#{“/úEHí-oDÛ)ç|åHCðLr‹ÛZÇÉM,ëY3£²¥]©×Z+ɺ5»çñä€x0/@1ƒÐ‡»“Uîãë‰ÊÐCv3>za½‰Î þJ\ PbÛ…Á¡3«¬¤oÔóRëÔ5Òƒ #Y9ªë`[êæóÙ./u.vjG•]õj1šôpih)t+þQ©/ȧ¯œ¶Üö³Þ»R­ð}«ÇlòÕ¦o0y©§žbY…â}”£JŸä¸3!¨0¼Î/óõFNïêþÅŽ´Ø±ñÌð=݉:؃Iñã½Qd³×!ßð — °>ÔÄüð5ëª ¶§@6/Wï^ ÍWššÜ[Œ0¼¤¾»u¢Þ¦Ã.]ÄÍ8Ïœ>-päZ𫥂œÓ.íµ…ìjM\'.ú‹¸› Ô&ãâª3ðô“ß3ó!ëÊϯ8VÇ ®¸?±ceÄs♩‡Ôb}·Gžã³º‰å¡Ø'î7Òšr¥KŽuÇV_ñò¶@[&êÖ×[C§ ѩՉ¯óÁ éfF¢âí—û‘DL5NÐŒƒE8OLŒKSžõJ ›jÐ.ÓSôZ{ø|K5Éùg“쪑ñ¨R1ŽrÇ8ªÿ`º´${òÚ•Mž~n ä;ŽO>Jç.TäU˜4–“Y¾Ê¤YjÏŇ)ïwÂE æ×»çg BÉ_ ŠÙªš´*÷øî¿ÖÍzîAm¡)â!ž{ëfb;áÖùÁ‘nþ6EÿONHãýÛ˜7•v†j3ã¤ýÚc>hhqÆ7=1"—Ðöˆ|ªÿã„õq[Eõ•‚r{éðV€j J“D~ÍDzYYàѨ{¼ xwØÍñRÓ˸MM5£`Þ2Ó—¿ß(?{ÔGØ_ŽÈ„gë @xð¤q×ÕE\ ÀDo.4wÿÉA:‚R5•Ö)² ¤€Ä ½ÔH¼x„'Ò•¾üh¿4mÇàC°?ï´ùâÊSªo ¶¬ @W“pKý~¢0‚ )M´-,Óår!ë’˜è¦ ®ÐÓ1P™}ûMîi`yá/{­Ö}¯Oµj‘×üùË¢63_Ïõ1® T±€ÝîðF‹¥I-¥.Læ–Øõ‚­æB¶3É#ÛÛô\ÈœK"®%–Ñæk6‚tÓ´k]ùQ¬˜ÓS†"1iP|û¨”c¦&vÜss¶¸à¢‡ùBI"þñ‹!e/YÞröVƒñ\èK*¿€¾ñÇ÷2"ç\XâÅcßzd×9¨Z<Ü^'ú2‰m##uE„¾Ýƒ ß~Q$¼«zTŠCé× kv§ûÜ8äžd—ž@¯óú›VÄ„[ögôêˆW†qÐ÷âàÿ59EL‹˜'„XA,a¼Èß/.ñ&ǽˆ0iž,*:¬‚Ê•¦·o" Û²&XŽ’Ú2wþòÎ/™R1>9‹_èshïRŒ˜Ôld^õˆÜ?Ëž»ÖZ‰NNíÝÄ]kâÿÃc_ÊÆ x_>˜b6M½¡RA€Ô}7`tr¥TäyõßD:¤SÙ°´.òûhîC´ëÔ쫚ÃJ ×+…6T­Ö sä{£wq ›35òÅW`¼gø¾þ¥Ý¢¹¤bª!èqQ¬ÒèB×]œ'Ÿ0>AWON æ§²âîABéU¹žëMÅ2«Ø†4ö`宆ªÜ„ûFZ÷j¯ ª’ïß'P {ò‹ãUà-±M¡2¶)ÿ¨¯|Tzàv¡ÍfÔÝ-S˹zÜÙ‡„¿½ãk¨Õǵ2 Ýë©ò¹RëöÃÞT»9J:–ýCSËŽJžLêÜä šoAû‘»ý0éŽéa¼yÙpRØ,O¾&ø6²cÙóŠƒ? Þ”D²A©LÚ1¡ !yNñë1S®âP½ÄrÕ­ú®œ“:Fc^ÅÓLcöbe‰V#V-k¹z-3NîóÌ0*Öo§:¨%a´2! Ëü=ª<(®r©1¦ÛÒö²)ªTÇ4çT [뛃"æì¥-ß3`${¢½¼|³¶?‰ð`±[è$’jUÛìGxÆúÅ{@ƒ$l4ôøÄº.)EŽx;ô¢h—âbHåÈ5”Ø««Ç(ƒm :a’œaêÃeè¹ÅÓ†¬ªbÎvŠЩƒ‡óÌÿtžÓ@Ñrñ¦Q‰ÀÑ¿à2æEÎn½Ð䓸[Ǫï»RKSÀ’ô°F)§’tì¨ç«™é?[ŠÔx¾¥C ¬›2»üïÝUqDÌû3{‰_ÄwÚn°ãºU¼jYŸª7x* y…Ó¶Gê}ä!¬ÇáUÞ=`[8ÿqË.í®›ø‡§:ècŽè_’i±y·‡ªGƒq‘÷=?ï¿ç눴]àXÛÜ÷'××§ mªlO»r#|ƲŽ_®ªH›xJõ~ʬeÈÏ•>ÒÿŽ&\'käy*ÉI@KèNËÕAv½vì?°9ç“Ø3úé¶b ÉÞéï…pk°/ˆ”²wŽÎ"qy³õɃhbõ>Ž/oÙty¦ŸÚÖµû1ð(4n/ÒÙíI®]>ÍTÁQX¥(,T•Ga9ÍVN%ªê#ʺˆºj²¢D49ñP@;Ú©iê­óŸùpöE¿)‘@6ð3¯b‹Sž— bÏßA0Ùx˜±ý`8>‘°/ß´UaøiËäv[4ß”µ@ýÁ©r™èIF¡’ïVk¡6*Ãų` I› ºôX†zÀ𼇧]©Ù ˆ|†šDÆw~¥’/™EÔÜÁ_c¥Ÿ5 ƒ-*0‡ÂËkeѼBVO|ŽŽ´¢`Ìð8‰™©¡éhÐä§¢î)FûDµ¸j_÷: Ý£æ¨ÛR‚xëÜFrÅšLå%æ 6ݽò9ßr¢)šAö²kq‡²ˆYŸÝ mìþÁ3¡szÜ”õ„i˜Ã ð^WØIÄfœgð‚}/lf6k88:œáìrª:ÌùÈAõrMÆ”6¿ófuj¨ïÉW1¿C^döÌàú!D6Ü…8g+>\pu › ÍÉ8`‚jBf@ˆ*ŠÍF3€›ŽÔ”4±ÇÒ·-߈ ~WÏï8Õ{7þ¨±2õ¶QÇ 9K5ædÈëHmù×ï¥ö™M ;³¸‚E‡ªÞÚ‹h&· K½ÄMŽ‹“—I*çßà^¾gÄá«·È'duý©€, -gè--@½ïÝÏ) %iyÈÓ¤¹§ò%M¶˜3À×€²VeEÛ}ÈóÑ€‰oJ­ö¬s(WQƒÊZbþ ¬ûFœ‹N;ä¤ú]/9iÍôU·7Õø ”¡Â]¥é tŒf\Ä)'ÛHÍ/I–¶ö« 𱡖”Ž^Ú"nrDÀ "”Aí@‘Ĥû \-É$‰ˆ¾< U Bqõa/&›ËQ)3fðÉÔ“pø¬þ’ IKÿõl²%·ªgßüvjü§ý£ÒGªæëœg™ÂûÊæ½Üeqe?i—ý\¤ddø£Ã¼s9µ~h•Ígs ½¸àV滎µS´R2ïGc9ºè7l\Mæ„$ ¹øJÇH~µ~Ι²©x›uéQ_\ \ñõtb"f¿ÉF»º9|I† !Ë7à©ÔB­›ËgÁ¾x³é(˦òW£GŠ,¿³È\r…3 2$ì„]>k—+Õ"9R›»hŸ©›\2²§k²p~zÐ`…§ûÎö~¾”Ëq·¤ÇxéÛsêÕ„.æ‚n°9íÜû#Z Í¿LA%5M×ÜĵÊg€ZÖ£˜Ö,/M|å,eö¨c%Q^¨d^Ää qD%ObžÓš «ÁV67ª~%2ðè†þ1ÿꋜ 4‡³ü+ÒþÞ' €_ÎøŠð€ˆâ!N “¿&_v˜!‡ÐbGhÒã˜d;I÷JŽLòrº?C_¡„žù;C@ô6Œ JôÓ†Ùô¸X6¯ìº}ßÉXkÇ”¿]ÂK‘Ô2ô–p/Â:Y(´|IS^Cà 2W‘!¾h^ ¦{²—å/,juÙôÔ­UÔ"fÞ%wHTJDU; ²Ì‹Æ7èõ‚ýÎI™ãÌÒ]ÈHÚÆPÓ‰¹÷T.!˜_šv¼Å´‚–A‰Ã›àƒ÷‚u¦)éÿAŒ³=c>\þP„„*ݸƒÓ“ª ³a¹Á‚‚àµÒg½À:·”vdÕÀ¾T¢Ò®+­J)‡Ÿ)§OðÄwç†Û¶"¹*þ®™nä1hNÑ‘ã~€aF¹8‡<°æa'eoª&à´Ù:VÈóCëHŽÂVú@¨þ18~hÔ˜žéfë?Àýð»ÄvõÛ[I ƒ±qå*EQ‰‹¸?8Fõ<ºãSˆ¡¢øÛ}¶5€·Ýλ¼jæóíèxà”L‘Z‘ß”ÑwÔ?oÚH‰ÑŽuyðiƦñ%EÂÀµÃõÔØ7cÚÝ´<Ñ!;ÉQBSü]¢’`êíïÞwzxÕ¡”PÇ×YHÆÊ®ka©¹¼ž1&O³Ëót=æs:}HË®Ïzü#ÎEhÌý8‰¤R2´†JMm¤Þ* qÚ.É œ9ªð­ñCÚ¾::¸¤ #‘3$Jþm¬ú`Rh®›½”Œµà]ý÷„ÀÏÆm¶ÿ?ènX¬âuµÑ@:r,N¯‹”šyÿ4»4ñ¿†°ÒîSOyHôñ½1EÜ„¹>˜rØ”¾wŸ?²r_ _â6Ø’vÆ.nRJ,ðŠÎOV;Éš£e h ¢8݉²Áee³“¾ B÷©-®™“¬â^¥>‡* ÚUÜ¿4îÎ#\Ñb9ÑÕÑ@þ„ˆ[«>Îì)@³G’ƹs4YßHØZË’‡,Ç àk°o–°R»üÕKKçs~Þ9;¾:É@qº”Õ„Ä­ø®‹¨¶0½Àµ |{ p0&Ò˜½KŽT£FsE 0n'PTb–hll†ÈA¸ª±p%€fÖ5s úNãqÔ­bÌ>ôÔ?©öHdޝ˜¨¸ÄÇü«"z Œ=I¤4kd«n_í"/9GèÛ¯õáºõ¬{Y.yJÀÑëºS&žàA9]íˆÍ,¢Âw} •ÛÖ%.Š©¬½K¼Ó·IkSï9Áé –ÀKŠöµ{Úh.(“b¯K"Ê5ÜMBl ¿½Sƒ?…ȱ[²ª«ñÃKI ”k·®µ®ùßù6DÎÀŽ#Ëàëï²]G{­1~,¸Êܶ•s¾æó³RAͳ÷†ï›ùÐU‹».úIwVò²ýÓ粫)z8Up ;åCµÇ&Šš8­§hV¶8:SR`Ãq±aš—Új%ú- Œ\?¾Ø™MïÖXµ¼Øw¥RZ,Ÿ¦ÀÍCXð¬äþpÜh!2êÿZhob ’ÿÎÿÊ‘<fÿ‡¬7Á0š`©}è~@Ø;ÔàCEgÏ@Ãô£&§rº«¸Ì!“ õˆ£ÊëÎänâ¡B#…hFz_æ1T©]ۚϸ¿š _‰¬ƒšçI—)ƒ‹rDÅÝÛŠ£Ú~“7>LuYŽÊ¤ø'›ùN’„7Òõ‡dpÓã7Êu6ÀRËmT^õ>Ï[‡ ‡)$…I´Ò9. XèaóL4È$>b+‚&]P’‘RF,T2¤MøUÌ›Êñ)vhïoȺw ѦݺY(¦7 Ñ3¦×6;ûVe‚,3ÇtV޾ÉEœØ%ó]~_8W¦)xÏËoµæþfpTu~«gÝœq=íÛ»å]Cx¤A¢Â=Cí(deb~- ý†¯(`¡çUë"bö§‹°ûeñyŠ“‚ÞWÖÎPNè–áçE¡* ÉãcÁø<šf©×UÁo™ûÒäa|L E+eV9A–/Ý9U2©/a¼¾L±¡³ ÏZÝ1îæ£8Ž ŸõýBDyØ»V†6 8ïY!0ÍÔ%öP²fô„_¾_˜ßM2ý†vu ÅÃmÿ(šÓÇ$£©%dÔ«B1¸ûkùî‚=K*ÙëRó&¦M†ª¶‰’`c)Ò+©Ÿ M&´ªKŒ ¯§¶nÊ Û(oIN²³ãE˹gqÇ%˜³?ê2×?~NW° è8ÀÙT™™5ªÞÊîO´Q´Ô亓B$¢ô¨17 ÖA@ëï++É™˜œík€nÕÉ]ÃF«[4§Âe]w|¦]·Ñ vˆWý€Ns}pºr=R‰ =µbu\qM>\)Lq;UÁM”"õÊšëÏÝ´Ö&êû Tm¶!N2'ÄJts2lˆLbEd¦Ê%bwvbNŸ7s¦\©œH­Ä뢅A‡TG§ È”ͧŒ0°û"µ…µ£íé‘ÉŽÉñÃþ°ÏÔ– „‰ŒˆRÎë½v†æÆŽ’è+Kb†|±§|Œ1ï\˜‘+Á³K X\îQý oLG º£ƒ»jb^b}´¶\ÓÔæÐ‘&\¢³lÍ}F´ê304bCpȺÓa@ýdrÕÅ%Ë«§ P݃6Šs½ $¯Ñ™MÆæ¥@ÊÁô»A™-RòÞÌÁºÚ™cxç¼…Î †@z_×ørʪU{@áDÒ+À€ rÛ6'Ðú¢.«DW! º‡Y E«ÿöùàôЫ9!ViÊS‡æCÈé|™³}‘­ƒ$ –Ëô\E7—³½ÎPîQ”R=®/¦Ç/CQ#è³IƒHËçF)S_c`•!bîº2t œ×0Ëð¡Ýq ¡Œ\É`kƒ1ÔL3Uù[èц‡z÷ÁÍœJ¢Á¥÷RÒúë½e]³ÔN}~x€ë¢Ç‡Ö£}ú”/`¿J˜Úog §÷'A æ_/ú!vi.-@ÔƒfßþY/YB¾ß§k¤Pí`FB2Ìo²òDxM™-@ý\¸œ Qê)€¢À­e¡ˆÞ'E€>Yò•teDp1òsôòJr!x«/nÍ— C[;ÐB“ÈŠû¸k½i8»ä{4C'F†)õgæ4yïvà€"è\W¹ :„gHµDþ»EðG+ ¯ý‘Ûx4¬·’wM•ð„ö )èÏø&Ö;ûoü°ò†œ_xŒÉm.,ô®úÞ,€™&‚Âù]¾ƒ ºI’ÆŸßa)µå¤€K3™Ö—àó¨óU¬$øƒGÂê¶ü É^F!å§îY&N-ìÑmV\ùln€v'ß÷1¢®ÖqÄ峊û‹ ÷×{ßlö³ÉŽ„·lÇFrmÙ*úhK¢®f°Aj(Å{ìý„BÐC¿‡9oAöÎõjåÇTˆè§Ä¨Ü>LüÝ€†±Ù› e ¢Zç· êð®?TâE¿›ˆ6Ó@¸JÓâ•éГg$Š,«±£[B,Qp8 ¸ò“O—ÝTCþpJ% àù½lI’u(ÈBÕÀ‹¥î¤"ðSì8åc·»XÅù=Ï6LÚ‚¢„}ø’½;у‚$ u[¦”j€’Ÿãõ£âÁ@3c¤Â+ˆ–V\w8÷ûˆ8€Zv™‹ÝãlW&>âJô´§Q1îÛn³O¹Ü`Àƒ¢'^‰ HbÂ{pE:1 œ@xΞ›X¹”±ùÄ Ÿaœ+™¤Y‡¹@#tÿÜ蔪´û:Ž€êG;3œˆ¼Îôñ ð4싹 úa5Ø0*µ¥ªèCåxÚd`Ï)‰rvTàPI¿ÀHV!4OÔ,Ê|c‰’aÍ·”‘R!ÝJñ Àky:>¸¾g»»yð†êÖŸ+wNêpiývìß²£ºŒÐ-r£ºqEåi[qœ)ЦºË1ÓÒ)œ¨ç°¤¢)f߸ÍÐv;Á„#ÀêàÙs>Ûgß4~ÉÂ’·µòñÞ+,Ф\ú2Èí¼÷‹v½·"¤)Ñ%Œì|ud8Ö¸8È„]æ¡"?ú:Á„/„ÌÎþi¦s0ü ›p m®ËXÕuÁf·»„‡+eºcƒqt³¥€´+ï „Cjœ'ø®à¦BϚƹÂÉ ÎÉ®aÚ‡„£ ÿ2¸ Cƒ—Ê9Ê܌˜™«<‡ïe‹Wê%ß³ŽôTýûMÿ.J¼Ìs×S.­Áa(‚™-¥ª ]]¾¼éȃn\Î’EvjÎ ¶á vn¸Ô*ô¥Ðz²‰®ÜG8éã4™¼£xÉØ $…;<@U—“{¹™¬\BwFl,Á7#².\yCr‹ñé¾qHÚ†ÞRXiwì2ëæC ï/aT‘K7~e‰Pm_f‰z{À–„ÂÅh?Î)ðEðÙÝ‚}7ÙyMé´´2ëÏ5ºìÁ2äÃImžR¤åËÍ}© öÄ%®Û{…ÝcJ 6&1»,bÀ="è0•‚.E ;è€ËGT„{û»T<¥’Iµ†"3m€Ù‡DŽÎÊ]˜ÀE基K,2oO'ºÖÕ†¶É²]?HZÆ{ñàɤ«êõ9ؽÚÖÉu8Ѝæ.©rˆE%¿.r »ý^ñjÞ„õãè@y†P¹»ØÃ´À üÚ/‚ÄÍ4û~øhÔ6÷DTõ7L­ þX椡/G­óbL¤þGßÒYÆÄ?xŠ…»Ø•¾éñiÜ Ì×Z€¸„&Ò %“¾A³&^ïÀ!´£ÔÇQg說g$.]h·²³?ø^cÚ¿÷ã)º>¯é¾ßÆ+€J ]à ëÉ{Ç>–U%±#n3À#žµ‡hô0ÅkôrÜ$!Wã᎚—ïk‘ܘ±W‡Š8ÔÑ~ábŠî¥ÒÝúΛòö-ùV–¡à ú¨¢E¿SyßGޛ؃ );[¿§ó6²Bñ´)U-™ßYþ»Îf6—™ÅðïÕG+®ætn„0ÒïƒLdÛ•¶ú»ìsºðŽˆL;\ûG4œÊlëÁ2B"Ê«½-aT\J ¥ zXØd/(uÛ¤<Ÿ ÷ÐÊû‘ 4éb÷òÓ¾67Í pÁVž]ø˜V²‡ H¬Ç5û¾è¯À¹%9‚r¶&=çŠxkŒõ:›4PÈé°„Î@G|ôáœ}ý—¢=.ÿp”å–JÜÞí(·ÑÔ©ªîJt‡60+Uª ƒ•m%ß@·8tK1Xz©ÿ…&äf0ÉO™ihvAeñíòŽŠ•ÆÆ:‘”^½zª %~ ph9ýö&-ÞÄX=?¹/ňGQù† c]ÓFc¥Iæ bN³æ´Îð#^ oëYh°§V»:)>ýψZz£C+(3*ö˹q—6¾ÊôP§òSÖÊs˜!ÞS^ëõÞZ¬-û\¯ º$‡ ‚¿]0e$D«e[k›€?«Ê®Ù~Ô䊛þ-w®YŒ-À°†…` òZ¹ø>Yõ§*¹ ¤Ô ¸XeO¸5`´Ë‹Å¶Ï¶÷U ðë*¨kÇ/ï»ç}³àø˜ÛÃü;Ú¬ñ…z™£¨z. b²D!ãrsýÝÎúã@VAx(8*)]„ö{}‹tÙ“éøÀø<¥ØÏ _¬³Ç£Ýª}"íÁ¤‚8ü²Éc¢ŠÅ”ðÐû¡íz.ÕA )HHª™­Òè 5ÛwÇëä\OÌÖS ‡b³kªŽíôOåÚ' oÁ¥RÐ]ä¯ÈÖ2ŽË2úo~{èð¢úçM\ÑæG JL7¬ÕS•zX~8ûû$M9réC‹ 8Ï®SHúÃ×gÚº((Wæâ ĤrS$º‹Q…[w›Þ®6h¶ÖéUtQþÆáªº™érIÑÜš…‚8IüUúÔMáyf‡A.OO>~ÛYh­àíÐjªº¼‡ eTñÞ1<Ö¹\@X2É—ë>PX’h…÷êIýã#^ÔPbª/E¼®ÎÔ w”–žDQ÷4Nšöcñÿ´’ì½Oò;œç¥=§TL`Û(dÁÂîMÓÊÎeäÉå@â¾êJP›xî*™ÒFÕ â‘[¸•ÉEHkÒ¢Æõ™CÁõ‡Ò1.‹a"ŽÓÚ%¨«±°„bÊ%^¦Ùv­î2޻ء0µdÈ3½ˆcÆ•Ãܪ‘ãÆIßå°òŽˆ6%е–\0pæØYXªØ”.áÒî§0Óô7€Å¬"ÜÕt–Žp<«êã1’2ÚÑ&ðï¡ó¢£Y™1pÚØ¯CãܶՊa#oì…T‡ü(#ô9Ct§æî‰uÑ]0€'¿uÚ¬Æã•Ë¢™°×ý[Q†0…iªÙ]C7DH4ùõF7räô@$ð Ëê|aÛòì¹á=óÄä„È×qu(1A0“Âç&PYnÖÆQr•ž…¿‘ÍÀmÂÅ“‹1ËÜt}\ï p—W9ÎçiâËæ}m?Õš‚‚2_pŽ5[v<‰ Љ.çšÁ+T·ÕBÓáéuZä§*vsC¥¾X÷©Ï…ᎂ—‘Eæ•_Åž+4_ˆ¦sèHÔ|‰ÜPò¤/Š}%Ÿ˜ùƒKÝœå¯Ø¡÷ª;ç}¯Hi…|æsúš5—ee$0¡bÉb<œÉôÉú©`×A¡›V²Fd£<”ƒF«n'(.Žó*V€½Žøi®{ó`|Ø#:´6ïàÏã‘Y³"‡£ŒãpH œ–Úiô`ãÚ”~g»µBÒÎjË¢ÙÌ:¯8œ"¹ T2i{Í:½L9kÙ{¸WøO—KGY;µ+Ú(/pQš(ˆƒÊH9»ÀâH?nû)3ákðÚ)àq¤¹ó“7X ±F¦áêýÝ¡Êf×ÉBŠàÔžÈtHï¡p€×;Œ„æ§ŠÆç˜¹˜rqµ4‚ó=¤‰‘Ô©˜èÔ~ë¯Û‡ÈA»w‰Öì ’þÁ» ø'íÛ}(rq/3蔵U— #ØË“šVÇ’1CQu3Ì,úöò.o™ª?|2oLLUn!rI°”í<œLãÖ*_þb xOGÈ%ã¶Ð)†à·C¯m¹ Ž›Xج!ÓB çëE)™r4ÌCVß2.ø2•©Íóäæ3Ò3ü²÷j¾Kñ­h±õQSFDù/Cœ äÃ5CRñr×/ƒùWŒž˜ôiÚçžöA45¸pRA"õ3‰ÞˆhºÓƒ0†æû¶ èo{ÄbÅ ]ËŒðœ¢JE1”x‰ IÝ9(-·ç¥(àR.Áó‡nnË.Èx…—Ð`íÒëënä`¸€ÂB7’¡,£u>¢Oz•d„޾ÃÇ;t¬ƒà–’ ^¤bý¥üüH°–‡ önIŠ l6N:Ù˜1kóo`Æ È·‘ÏiM_ø½¶!\ܶö1 ã!"–Û %V¸ˆ~®At÷µ&l•ïÁ§dù[ ×Û×ä!qÆxPD“#"ã‘Ñùr9*·¢Êƒ¼Šiò|£!FL'‰ê—rÆ«F …ÏS§Û‹=õcý•é jᮌi¼.ÇsCo{±r¼µsE±WùTÁ$N--* õ«P=ãðwÝ ܱ¢ìwjdœ%_:e›9EøC¡Ó*‡bu/£ÃÉãlT šæR>2hq²Ê™ ÚªQ¸ 7³ó>••E˜cvp”j'ðŠ÷]OD—Ð5!ϧŠ|=Ô:Éý™RÑݶa-ªÎ½®äÖëfƒ9.D^#ÞsX_ÀÝ k¼~2NOk>æü¡bŠuCÝóCÁHå* QAň‹a5uö³•}å#ê±{Ú‰ü°”öº‰/¤„ç_Íî©v²‡–nˆ¡u¨}{§1U ¤&¢ØÒq8]ë|”§\ ¼qþg‰INç³08qú‡T›bá9!7>Q”#*),‘5êúTA-îõoÙÄ}u÷”8š|âOý©‡80Oí´ ñCÍ~k©—9Ö[1tþ°àOà"\cÁ¶mˆdÊ|"Й’5†€<äFŠkSúãÛ“H݈MhB~!ÚOªyó:ÇCmŠ1YÐn[mY4|î¤üf(~£Ä9Òí+F.B…"+úm°;:?°ù1õ¬ž(3¥Ì}þô˜|±Ä´¢pEÕ‚‰vz ”|ˆ”°}€U\aÎ^‡ q‰š«‘3ùÕ ¯#šÝ„^(pé,EïHþfÞ°¢¸ë׿FQ³42¦i-¥³g#éFúmüpw dœìâ^LùCì2°à±; àY«<@ÛÀ1:l"ò"·õX©¤µ^iÞ‡ïHƒÝä²Hˆ M%møâ½Ýí31´™6”NÎ%£:cœ%Æô±÷ÚoÂâ u«ŠCÓGZF…8Ñ‹EO;b’e´_%Ö~Ý×m˜Ùêi'¬Þ ¦ý®Z"·ž¼`t?¯&ÕÜÿÑf‰Ùì!,¹›q·½@wuœ/ó~­4K[[˺áâ3ápâ ´s$ß,Ä”C–ˆγà‚$CðSŒithÖ!ùmÆ å´°c…J ¶4Ð@Þ‡)àð/ŽJ;±y_Fê˜j>ñ˜¶/€‹ÀG¼ÍcÏs&’&'Ø¥ð4À5•^§¹ÄýÖƒ­ýãàQ§À'½­¯Û åÎÆZµÆ:€³IÝÃ?Eã $À9œ5ÓÀAòê¦RíÖ1CÎÃßúõ~åÑ`Òh`êÍ$EÆzÐuAˆË3ë}í\?ÞseŸ°µ"+@[¹9VU÷¯ºØÏ8=*HÔb׳‚Haгñ…ä.¢P‘ñª³d(æ¾pFF‹áiÓýÖ¡!î¯á»„‰ÀvW®X÷ȹÐR{3B{ÃØ©‚ƒ¢zÍüÏTræîtŽ`1Q”æiÐMuL¢©q‰TâœU¶JÌ^ƒcªKç–M®pù mílõvQÈr&8~´=å{‡Àˆ]I/}3l¸!vuëb— /DãF,ÿBò~¨æä÷8p+†G¦A–8Ý Šq7“3t‰R•oœ@ÒÔHìœôGÓ&«µUÜbÕöš(Ûtôh„…†â—ÖÙ/b²cq#Þ9aÖs׋A+—°´ìÑÇÅ¥„¥#Òß÷®V%ãίÕe¾Á” cIJ²Íõ§™¿Ä-ƒð€[q²ÐÓ˜A†àaçaX×à~çîk¶Í–#°‘G –ý׊s Ç$­/Ù,ïâFAúêpëE>Êù‚@®‚  D¢û tY£6“,¼s$ŸœÇŒ‰°x°gj˜Ý4µ9ŒV6Ý ‚«ˆv3÷Tï Ô«ÀWûLßd¸ »Z]V0sƒ§S¶¦ÌFƒH•xíùˆ7*„·£$äc 9gú ^¶ßû¸´4)º£ÐÀ:IÚÒ2â‡"ÖDý©;¨ˆ&Þ‹i£ Š3+:c*E'Bðú§ÿƒëÓà"F¶74…E a>dQ<Á¼ª9›G±¶”ȼ{ÚOŠ”VÇñÙ«/ìu[w²}°vdˆ°Ì5žÎf8 sÝ—Wæ~TM*Û´Èôõ A/HÈ*·}Í7„ã’ðƒ–lM‰ Cømµš<ðÙ*tæe.dz|Zßo )á@Ý€TøL@þ}Î]¨ƒßžÔ²\¼¬sš_h¤ØŽöv("õÙ<\ÃèË)íí5a‘|ÁJ’Yzï$oO¶ñ CŒ¯\˜½í=5JY“•8´ªÞ~ ¨zT0þã |ôíê±îÊžöª›%o`4cÿ{˜ Þàªp•Vd­Õ}E‘ÿšÈõ¯Ž¨eµ0’W]ê ;€_ˆ¹Hru¥ÎU.,sa:A§l«í­.ÆJŠÄÒ&,ÌH¹š:Ô.…8.W üìWé À¸¼whäï\T¯xѪmœÅwöŸB"W|»ë}²?µÕNµál+e’@sËRNYÐFù+Ð]qØQ|î–ªŽË2¹M¡í¬L´•ïøÄ*†¼Wªf ;Év¹ TíØ¸ v¡Œþ{¸ðồF•§öЙ°±eD6MÒÀdLLë°S[«”nÐBWkÃÚ™2ø«YèØü»_}6¾ÂâÏ×—qµ/ r ºIÓ€£9 é¬3ÿ™¬¸6ß*ø;´ KNNIm\ŒOÞt ˆ®@æÏßU/:†lñ¾Énm’¬ÆŒÒ"6è0‹£Tç¼ñÒ0¨I®R"¸Ò6"ZñŽº^Ÿúî®r]x„ üN4æÐ›°] ÄÁëGL9~)€NUÃ7º)B5÷Ïèû;\¸X¶µ…S ûÎ ß)øÇ/ë⬈Éé£V—°¿VFTÛÒ˜lB˜ O^ð)òªC7Ìþ3¹,ó­[ÞÈ0«“éâ2ø²šŸÂk —uïДODooÆ L^lKç ¢ÂõÉl*~¾îœ“40Êh×ΆC`D¥Tï«=¤>ˆŽº ü4˜ sHš¹ñþÿvÁS ÒAÅ›22x\ç5Àåº)³ÇzƒAÁQºâiÒpÁl¶`R’ ©}ñæøÁò4.síùƒ´Ò”mGz(ž;Ô{H =h Öà#Ù]àBJP¨ig“ÇLF×SºŸ¿þv㜠P§Y7Öçú  ªîݹ¶Â­' ΖøP7ªÏOߦœè§ÿXXöˆ7÷a[ãhoh½FM½â™0 wóº-]‘úkEÆT‡ çC Ï2DDs¼1 _vã*S?âÁZ0…¦OñÌÀy„£+-†•vú ϳ·ççñKtX ãd¡@Å-ã™)ÞÀlR@á¥þm*Mwª,±n)&ŠL8©¿¾ækòþ ;Kj`€÷TÕ)ÿðµ÷Þ!(?~OOqÝK 9˜êdh^¶½XßýÁhf„.é’–ËöwCR•D Óò?ëÇ‘¤®ã¥=7ÄÛó¬…¨ÃÏÐÇê!î:&žÃ ç%Ö‚uªaB€H£ƒÖñdDÞ°†mSyîóz̲)Ê-JÂ|æä8¢Ì)ÄÝgÝzu“kYZy(ˆÛ#Ÿ0Ð ßv¿=¢šáµX¸ÌšHpã‚ébÌæ&5Vê¢u‚3¬ ë¥Œ–i{/ÄÂݧnâ4ÎéJÒ÷åÙWÆÖ{Aý?Zê# ±³èðQÒôl­Š ¾¦‹Än?±—Ä2"Ëý‘ ´^M5´æ²£-€I—‚É5×H2Eà—•ïPäJ zyo|Áèó«¨ZEòï¬RG±n} ár„âþ—if«álp;Ëi4ª'Äa%2(ÎIûÑÕRñ\Òãs¡»ñ‰íü´À#Otªªþ ®ÈV€&ËŽÖ°:™OÊnQþô$§SßÏ,X•Oá±O°×ë Ñþ\G8{â!ø }o*#žÄòqÒ=J9:E;Í"¹PÎ`i€RµöÃéˆ@ÌEÆ$é¸‚ØØ²#„GVÕEbºmÎÂ#Rh CâÊ|éÎLœßaùòÁDÖ8@‡ t ô¥ÁeÔÞ{.ùR¥³¢€ù¡!è~´FàŠ‰ì‚$*nÉÊXñAß-4ª“­jþ¨á²Š¬ìñr¡vÞðkÛ4W—PÖ”OÀÔ0Å:ùX4kÃ;çüz”pÊûÜfA8Së¦h‘>zàªK`7üx†ëÛЇ_[Y剨1e¨o™§¬·ïÓ¢LDÆØ‹ T½&­·H¹ZŽû¯f“Á¯jU®i*=ðh™*ùF§v+K–ƒÉœW1#J×Ù0yˆŽ› ’ØœË ¥Û6‚¶³pIÙ¨QHyS®.¸ [‡~}U%ÄÊô/­†÷èt‚2#ó¤ Û=LXŵFØü< †õ€øKꨨÏM†šwnàà;<¶ \N‡‰\ä!ÚšPj:,øSúß–.¹>Ç[Z{;‹“ÑÕèþýQ£#óè  ª@³¡sÛ<¨N¡¨©¢4ÿÕÎ\î_£•XÔ‰¢;îeoe ­˜ÿøpÆ#"Õ‚õ€ñQX‚;øJÉ"g$øøM —\^¶ÏÆE,™1‘¶wA–àŠ(KC3ì)ôÃÂtî½t¡’½:š\ûÊÒ:Ñ«ø÷zYïÞ]'ÑZ¸ =~äæ+®AP Z7EªDÍ—ˆ Ÿ2? Ð'@ëk]‘~6oUíÿl6¹Ê.yíCmìœKȱ•º|µùû-½j(s$€¯gÊYÜ ±2£`Šj…³Ö4&ß[˜øûÊP"™p• ø´ ´\ʼn™…88N+nw¾†´îEgIñÓª®¯¢&™ b9–Ùœ[%ôõ;_ò˜‚R¡€ÏǸ¨0¨‡69…¿Xgï‹åeEÉ–ä¼]é+¹O¬MjÑu¸öCuÐÂÞä.¹“þšÐlo”JK­”i²rô5å Ÿ£³…²†ž¸;1ånm¢…ޏ21åvi²d`èiϽë1IC%v±A«ˆ*A¢|Ý•Jü¶Ÿn³ÆÃé`ÿs§|¢Ëç ¦#æ®ÛÐÆWÃ;ØiP.˜K}+aZ ‡Ø1÷Riµô#S—R¢c¯Kõêï܆Kž?åAæŠó6 ¾7͈bÙÍ™ŸÖ•Æc|‹À>Åx¨;Œ¿!¶~[ñ<ð#˜]¿^.äá>ãÎ8mJTC|Ñcˆõø0Â[^oT~(_Zá0¥½à²ohÓx]l–u)"®ЍŠE+f‰eåÖÊ€˜†Ñ65zȇ3‹°/bÊÛYRäÙÅ÷¾„بK|&q±"×Gâ[…©+¸0ßðœ$ ‹(V,Ì¿Á>0¶£ý,ÜJþq…<¢f>¹þç׿“A±H©ð¬6WQ–úÕ êæî×û´±Yˆõ¦D…ýqö™QOKeÄ„ JÔëª@þÌKü"}¿}o2¤ß/Ii…ðUwÛŒßÎ^j;i«ak& ~D‹Z÷É‚¼´uQöÑ„j•(ÜÐ,pU2¿t·UZ Øo~Q¼Úꦿ áW6 P-ý+²Sñê¨áÅ]±>ˆèŽ{ÂÒc4I6É4S€ dFKñ¦Œcã¦|WT=ãéŽ&Ó0z+%Ã÷݉7À|ÌÞî  ]G…àãE$kÇ,2}ªØÆžmÞ"¥LNy:¤`r©Îå¹\¹â1ÂDQñâ8jÚko¿Õ{asÀ„âó ·÷2XKM¸·D%|g"c¬`]3fx:êQý2JÜÍWኚRI­''¢´ƒ¥½žâ€÷Å,ÚSü8Îz‹ãW02›ìDvç85ò‹ù±¥îQ—3ع«­¨Î!–Bÿ“fX)-Í©:¡÷ò4eêøÛ¦ÓÙ»a?»8©zTÓ\9y=2 ¥}sRÂy$¬˜ý¼Œ9Ü—(LKhM•NÓ×ëOåêø³ŽG£Œó•Ð6(B°G©" sÃ1!‚³•ÚL.Yw—š¾1úw9 Øß”‡ñ˜„} 0ÃTù Hid>^ö)û‹«âô®$r¾:ÕÇÈnÝ ç‚Þ›ÞóñL §mî䀘—en^Öis6Ã<íÔ$á@Ã}AiùÌÍd¤µE]<©Ã[|¿Êðo- «ê>ê™%WÕ?'F'IÅ$p>‘ée¥i¦ fª ‰ ­ ìÝîÝ6|³å\ÜRl×È5ßS„ÝÖEG‡°o ª[:WM«\úybxˆ?Æ`tð%þ‚iÑIÖ€ ÔrÖtõnt/lÑqsinà}þ¡y°F‰AŽ’ã-«AB¹ØU`¡R@¿~¼ŽÂÚÁeZo’A‹m¶h Zýh£:î™ËÒJPNY6ä–>ƒÂΫÝÄÚFž0ˆ¾èWu`÷jñeC«À*Äó1³mîCe¤­eZV!®À»JiÑ5y[C‰FXiW‹…·5÷ À­í•hÜ–…G9}Uí°cPç¬ÞýxBY\4*x‰r."#Ñ;è½½'i×µº~lÙ”Cí$O®Es—Iò vIˇÿ!×dj Š[ÛcsBäB8£ɬ•‚‹ÿú ˜À¼:§g…ó³ä·–Ê’®¨N%OÇÁ2ˤ—iî:égH,ºè ¬´}_+Åß=š*6ÆAÚëyÚNN?VÁ²\–…Fjt/ýÈxoŽiW­bc²9Á/C"‰~4ÊM|¿‡—Ý,”S熯‹Ô›Â3$àú¤zZAÔ“}|v $Ú,¤È9?î ʙqí 2WÝÇ+>‡ÉÚ]ç’öÖð« ~ß©Ñ Æ5J9¹ç|¢‹Nê J‰ÚV’Bèk2k¹‰C:ŽÑÖÕáÇögÊæ¹‘\b8]„#¨œºÓ)}Nj&Œ0¸üâI$åó™xh;ÕQ´àåý{¸y@KI`&JË4ƒ[ª,½«N¹šÛûϹãÔHšÐåðlÌFœUóÈ¥)c%<[8=yõœes[WÚ‚Žµ¼HûSv\oÜØÃ`z„5›·±Ixs*c}î˜úçïÖHþ»ZëX4Tx–γŸæÃDz~žWÈPÞKâr/©ÚÔ~!—²¤Ö¨-òe Fš]r+ݽ©É.©º»Äw®uHGwhKu‘2¼Š:IÁl|EiÈŽôšE1Öoñ­#¨HÔ2fç'uU­oÓpRØ>êsVbNÖ¹¥®Zž@ù”í>!GëÛ kºâ“Âú<·Rk#2BÚôú¾Ì„k3”M6ky³ŠçÀÂ’sÙcê–•vº³Ít……„ Vz[kÍc «œF]„¢k¬µNÀŽz•©¦ܦ(qf–‹RµìÎÏñ/þZ$g1ªã#ææ¡{‡Ž« BCæeUï«)!étëA½ÆwHBD0rVÞè%»=Ån§ÓáøÏµÃoP¤6}•.'p½ GPéJóg'Õ¢{âM!íÂ$ØÅ’ŸëÉa#¬¥AÃJÜ™Úcµwq-ã÷2HʃÆÏTÈ$R˜/ΦõÂp1’þ¼%Ì3„`bE*sxE10ÅÌ… ÿÇ›x÷z¤CdTŒ™EüÖ?ñº"Þ›p© QãF°È¿=Qˆ¯l¶©ÑAJêS Ûi[Ä_¯^£VAÆÔ¤V úé ‘o,)Lð$¶Ã›ìAÀº!ù,÷Ôg¼¨x£ð=¦F‰œëýé{¸À,Ú¹£(u)BÓj¹-R @<]­îç«ÛêëÀr‘w7 žýv³›Ìvµñœk˜™vǺI¯¨ÿ_· 8–²­îl×lÚé BŠÏqcçŠoÿ›Èº .a$0GÒIž6dƒÃËTGÁCÎ×púå>øˆá»‚d¸æ8Ò•ÎØê~ÙXF÷0¶`Ñ\õ@»­ú&ëà· ·¦%Ïù:·Q~ô†tú¹­§÷Ó¶uiÌæG]0j’;Ð&Ô΢Gb>]†0Ž[Bñàü99¦‚ÔóŸ‘–`œçh>}±dMòr‘ °J2ߌœYKÁ™òr‡Ãž{¢´ç¨Ì'©qÔ/””¢f‘¹Zä/^æ­ÇŠ7ÅQ쀉ŸîÌq©ŒQEøÅ S“ŒÂ©˜5bÝTÈOÀ6.Çß‚8¸1†‰Ñ]5±Tѳ>ÔÝ'($PhËóAáB~úœÀ½œQ-¯P毱Øt¦ÉÞ-¸ìsrSàn:Í nÂ#%Ž >QKϤËççéèÁ¼ðøAÁøŠ¦µþëùùÊÜtÿíî(eÅ‚N¶u´<£x×TÕÕQHJáüu#lÑ•$[ô@û¸Ÿè:@ãˆÑšýØÁiö£?˜? ¿Rø®†ªë)R[mÌf$Q –@|è}3ŽèÈõ*éF‡O$ò¤Ú™#R"1YÑ“EOICzƒ$+ ™aÒ¢U”Ö¢]9¡é|!ËœHódäÓĈ(e˜N Ng7—Õ‘éß5:š9Œ?óñôóE¤` ™‘:ИUzS02{W/®OžZ ¬å1Mô´"[î—å~E£Oø(fjê`™¦óžcƒèàRQïñרx«@íðäÿCP¼™›Xª´Q®çä‰~)cnÆòß Ü ˧àkw£6y¦Ï3åP TófßìÀ#ÛšÆH p+öà—¦DŠbe9&½Í‹ŠU¿RFõÁ${ ŽD4ÖnF>HÁ•Ötézå:°¼ðQ a#ô7,§­9{„hÍšLpðC‚ÙÊIÙ§»Lv°Æ”˜iCQщíÁMÉnHßj fÜðQïW(t9ð%zóG¾?¯|Ðñ†Û£aê»öö>ª>ô:î9ù‡›ñ) ¹c¸1UžK¿×“=Íd±TÕ_==åŠá–á< Œ´Äx¼þÈë Ô…n@&·$a ‚ ÒGñBîÃÄÈ.f¯ éʦˆ+2’_ výÆ^ÆCÎK‡pvrxB©ÕÆß"møý`*½2åaÄð4’*Jœ®Ë#ßG‡²ûk¹â¬Ë——ïM!"‘Äçq"›‡bQú¶Ò&­™çï_ª‚¯‘åi¦‹,ï§ÁY¥0赟“ˆŠ«'bÜ]µõýâ6žšØO·%”-ËS;ª-é$þv—ü ê¢|S”hJês6vMô¤q;©v)xEƒó.¾D'°5)EçF‰r‰sª¯¡lP± ÝòÅ•h žšBµöD×ì¬kãÛ;x‚Æ~Ú¨HŒ”ÈÖ웿©˜éáeö|Ì•ùŠÊæ¯ùóI˜03²Ò@l˜æÙaî¤[î/ËÌõpøø¸Ý—µlHæý(+žÎ¿ÐbþÍ¿hGtý|åytF«Ž 0ÇKÙF¯Ï›/­‡€Ó“–h+P’µg«îŒ²aÜÂ{Þ7¸ù¯áŒ«¶PdUˆG©ƒèÏèäÝ›ðe!y@öç óô§ÃÍüC'„|l`”m(Ñ«¢ŠŽøÈ ±¢±l¡ àëŒäϹ8ð ‘Fh$ãeÖ@u]‚ê‡:Ö2ÅÙßÐTÿ ê|ŽØÀ¥‰Ál 3qŸ°Ò¨¡ß(#Gõ¾¤/¦†~C½²[w/Ø ²Ûûذß?Ðæ}²Ûü ±~kOþÕPI§TßÀÀÇR /øèYοÔó®ÍÜšŠýŒ•09$“ÄéŸ*€Á³C,™7âʶ@„›AœÍ›#Ì[®¤Î–*qÊmÞIA.ð£[kŸ¨-T›g€Òëu^j¤ö„²ÔÀ—dè8_x¶*C~*†a¢0ýðÂQ˜Y'¨ä× ‰Øž§Ž¯Ž\’T”ä‘H#äG•0´Ø ‰€D3ºk(´wXK@ò¯z{b ñÆ$ІLaŸà=Ê/“ôR6 ®º ”Ëþ>š¨àã¡ZÖáåê Å?Ø c½sÆŽŒ„Ñ=Å{Uð–DÈ Ë°?’ЦW©ÇØðÑ„îUFÿð~(LU[ß8ˆ{k·¬_ãáÙÞt†ttLXuèÐ1tê|T?¿®~¥Š’*:™ÎwqáÙh-‰…à`¨Ôø{"Eã Ìöd´MÛ±ÍV”CŒF*™¤%h…h_Žûß|³â?ú‰Ý·÷ï¨EŠl`«Çš–óq€[‰\ulº#rÞVÊKÎ\î¼y_$ƒ—‹v×ÄàUé–ËùxQQ¼'>=ožgc}E1ö×g™V“ø…ù¾1¸KyÌW]-ªšâĨúBo zô¤dja Ç•]~B5]ÊW‹‹¨e–äØEÌCÞ¿&û!·¿@ýtÏ"Î?$º¾ÕêÀýÍþSBw™A¥[ŒWÀCÒ%•/ÿ›Ë9ñEgÚŽzøœ›4ç ›³™#ƒâ+Y #ƒ‰Í^f`2.1/™oI]è½2Óš¯Ê”LÇÔLKrì?|ô¸›ž@T‚zUYS…ùÖ·Ré~lQQ;æn‚’“¿âÜJYØó2) ç‹`´DD¾½>[uåѶÀáVŽc(Y¾>†q¿¼»zæ· ]X{êñžT(ØïfŸÏõm¨›  ß|SÔÃÙÁ³å`¢ƒã)ÆtÁa½öwåo–%IŽcyè³YzŽ¥l¯Öe±ŽIŽI¬oŒ‹I¤TJQ•AÜæA2‡g„‡#Q|ÆrÔCÅ$)þÞÿøû eâß¾ñýE`öKDñj–oýoh®1”kXæ8϶X’k™¬=9WõwÄ;ÙIT” |õY•ÿA¾›*Ê„1wþ%UIáÒ…±¿³5J,ºîáPxwõÒ2Ž˜j€s™avÅõ&<MAMy;Ïk¹ºÅ þ¬ëËÜð”€û`†O ¸v†Ž„%0­C•JŸˆF-h”pá‘ûq¬'³§w´0ÀâZ¸ôcªÿØ© RI*©÷ªõpÅ)ÍÊò9Ü€ƒ'€/€·áŠ¿Á@§} 襡7ý²Òsá^Á ƒ 6ø OƒaoÅà ƒ€çÁ¿€^*1 @•OŤ â[€Ÿâ4ÅcII¥x)+ø + ùJ >Jz•ªFAÁŸà¯ x Wá{| èëJ{¯¨ü™ÂøÊ£ž€ê+ìªNIùŸ‡â¢¡Q›þô?Y¥Ué“´‰ QÊ·=¯ÃóÚg…2ñRV蓯Ú=A/–‹“,6õTYÞ³h(ääÙô¦jmò+ªójÎOõÒ_Tª•òR_“(Hð(ToÏC/ßioãµ/’2y ÁïÐtˆOò/Ä;¡ú*—6¥HH>H þH—Ã¥=zx#\Q‘ç±dǯ£%$¤8<ŠŽ ”äˆ Tœ„GŠäˆ" ø*È3¡KFЊ EzDR"hx¥”*ùŸ!>> !èÕÁ#rô½X¼Fé½*êíHy¤;Ð|¥#uáC 9ˆp Cé(ŒBc/«ø…B(ÌÛ@]|j KP(uyY@) ôƒþ¬€ÈíéÙð xwëÍèÙRZjCm:Èè‰iËó wGKkhOwÒP'Í!½9iŠ“înz­”†ÆB;Q9³“}¦˜„ª±¡I»•‹Ôê"8£Í 2½’V1hŒ &ö’KaèU÷¯4Jä-´µ;J*M+ŽòîÌm\îQH4 ¾B5~|h ý„axÉ0<Æ_ºåÂ;vMnûƼRW¯[¥šPy('žÖ^j4ÙÎð=LÿW‹þ-¶ìY:17V 8³ª³_SÌ94Qæ™ sàOÂB¢ëcZé=sõ’ÄÚE§2Ó\ 6p¢&*ŠèMÓÕ–ù[âよ–W>²àšá-½µ§½7£–¦#‡ÊÃsJÙh•˜°Î‹VéHM‹ÀZX~Á¥å›0²N¢-7Ôü¢gÃÖиøî»Àýò.X=Ÿµ  b—/‹þQ¾™*˜†+·ô21¬ÏŠedl㎄É*ËØ Œ5 K–E„D£/{ /¶e¶°¤eþîQ0ùGÉ€*ùH ÿG<ä‘À;Š¢øoª‰]ãËXˆ¿|4¢b2Ü/¼€Âê;+•$){øsàÖ8̽üÒbÖÝÆfnڎ͌劣e:ÚE‰²’;ï4‚wú»¬0ëB!ÃÚÔ0Nt2“g0|¯Q}úBqdGDq}Ðy)*þrg¨-$ ¨¢¿Ùs•ì¬J deP¡°B<›:Ú ©j²ª¡Õ¡x1Šc÷Ô±2ÖLô†ƒÌížé臑"8¦¥LâÙkYËÔ%§hÖþF0—A‘‹wé¥[¶ÖOpÇûroùB·@*ÄbÆ–Ê’ÄÝOŽ"ß:ã^–6ã'Ö—Q!| ‚ÇxôÓêèœ>3|*ÇOòß½¸?×÷¯1ýNÿ˜tR’¹Zf‰Ž}kõ¤š„Oûjz³êû‘h¨ Ür{)@›úÙÓÜT}| Eå¥Ê ÑLMZõ ¼n]㥫)õTR¼“—®µªô·ú~RëŽRÍïx]j•®:_‘-—cÓ(É;­xV^„ó–¦K'«ãá±ýÔ¢3—û­»™Ë‘çÍSEñ|ÏGÞÖS7Äóú±=È%º—©].!8ºLËIglº°–ªíÀ‰£8úB]?ß‚¶PÀ `3FEq"†?¨—©%lù02(`^ÀX ª…uqùX..ÀöÊ {}&÷êÕÃë¿€¯`ËÏoˆßõ]­²“$÷ån™-ÖåkË$a1濾µEoµïAíßrßÛ¿úØŠ*Hv þâ˜}Ï7÷zØk\þTpØ5³¦éâKDבµ“ú•å •‰[ .ßõ/~œAÍÒé’»Kf½ ²DR5nuseÔ¥0Cf2s3ËF²Õk$Ù±´$1ƒ\a‚)‚À‚ð­0P”ø­8ê€ðÀ£t„kG÷HI©${gA9µîþrÝzj§OÕ©;NRoÕòšüœ¬¬ŒzÑaÎm¢© Ô, h=óW°‡ ØðH‘úÒ5Åó“ʢݛ®÷ +ù+wÆ®Æk¬a$Ov@ r€"áÑäŒÜÀ¬Õ´»;­n"†ú*†RP¾Ó °.Ð%{¹©:«ÓvîÒT½5Q59}µ3—2‘¢ë5.n@E’d„ê?%~—•˜ÿГfwªØ[ñßçÿ@{Ö1s»¦kiÓOUz$k³ "ywßVhj`?0XÕ^Ë9¤?×v/]±âð|5|QZýíæŸÅ¾ü™¨(ì]Öy‡¥ìnÆÚQ;ÆÂS–-Ò\¸a…ÆŠ¯hiÔi#û™T(#Û*|@½ =é¹*d/#u±çQsxÃZôjÚí§N=h8B)uÒd·ãÙV•Çä »K›x·µ¶sîœ:í›J¡ð%ÿ×ßÛËú¿¬HŸßñ9ÁN¦Fi‚«X[s¾Bÿ|ÃìÖÀ,ŠàB×p² ޹¾Kɺ–™€FÄkBBO9²NÔ‘dw£æ@ªxfñÂëËÔ²SÔ¬Pjº‘ƒ*¿©ãp±n*έ…»¿‡…jsý»ã §`‰‘m¡…ô,ù7‰P°[„º?V5/e¬Ì1&1,Ö ŽèªS\ çÁfZµkê™#hU¬ÎÔMFž¹ÁóÖÔ$Šj—®T¹–JŠ¥:йWf“óöKÔÜo¤6–F¥Y?ƽã$<‚-QG}éJ%…ŠøÑp$†&¢¨-µ‡èeª8½Ý-Î-®Y‰‘éfhú±Õ+½ªIz>öÑKÑ»HfåËE(îÙ߀í9P7–s͆qKHg#—“Ydy‡È̱µ±Sœ…€–ú]Ë=Û hÈ/äÔ4‚§ý¬ãXûñQÍÚ¥ZO›ñiñîçy×~çìñÍX(àTKIÏó¿'íω`%“†°Ìþ)^äcaÄÜWI>*¡ã.™/àÊ246rLÏ0Ï\´¹.¼ix²|ˆ ºŽ„ÀãU‹@®o΀("ò5–±÷Øe-ÖÄá_â>ò¾µ xZŒµÌÕ†ÓÈg¬ZÝÔ ’„º0Ôm›öŠ=Šqg‚!rW¨{ð­wTŃ]D¹ÌØE¾µŽº¡‘šˆÅE0=• eú 0´Mvò¡£‡J;amÏÓ¨j{2?ŽA"#¯mT÷øÅÊÙgÓa jQsSdó_™Æ 8à¡6à5à{ðð¼ x x&Pø ø§'<ün^>uÂ7á=>Þi ¯„oJÂCÀëðð¹#¼W„w€_ÒO„/~¯d^>‹O€Aøá à‘üà}è_‰2- ¡¥!I A äè‡FEu¦‡S”7¹è êÒDGa-“ÂÅô Q£Ðsis׫÷³?Ñ$ÏŒùŠyÉ`-˜Í+¦ï^ŠÙæretKç±;y y]þCÞPf–ݶoÀÒ׫×ô×L½^:çÜ•¹ù_ºËè5ä̬—$Œ®±Ö:oŽeo»°6qï×|ÑÙŒqgH!‡„jnaÅ”¯Çc’úêS×Ó¢Ôµ…n”e²ƒkG[¨ˆ^타~JRo&tÀá ,¨*øøÁô# = D ii iˆ¥Õ-Aúè©„ñ#]^ªbó ÓxäÂf©¥Q¬D#ªÕìBà0ŠK×—ÌHLRi˺ŽAüp¤kJ_ÝG$±bÁՌᠣ3N3Ö ‰ÏA¸éÊ[RS«5—ËùüE¢ƒá›Ñµ_Ûeñ`…À]xA$‚d$ú¨vS+åˆúãáFƒ0µš)0ê‹1Ð &ºWÉ#ZøáY•«Šæ"¦T¡¢æü4–+¼£kí˜'ã<ˆÜ«XïžM¾[nõ¹3Çó¹•Ê)‹ð»¶¥Äð…3+–_`..Ük ¾ÊX-¬ ×êaá²ÄTHo²P~¨#Yí ucÏY%úîw=Ÿ³¬/ÔíÊ&_€YÐA͵sÚÑŠTEÞ yk°‡DÛGˆuÃ?Å'ㆣJGû¥5Ǫ«‚˜´z^æšÿŒ·¨tÄe¸>$”°á7ºcaW¿.¹ÏñB ,x;ª‘Ë=!¡ýP4‹w$;†ìÐÔ‘m¤ê­:ûÜBvâ.òâR˰Ö$î™ÂÁ‡¦˜/ª˜Ö²Ëáƒ÷Ì0àæäŸBÍå|;>ÝQFÒµ iɰ>­Übî–w™~ÿ|ÅŒl ê#ÿ¾ßü0,,ö*ümú<¹/ôb¬Y¾°.+£òÃ`jQõ‘rô9ëçú»zy+þ;PGL¶H ÉŠ€¼ÒGÑ¡«Œl•*±Î¶«ÅvàÖDÛ‹_û$ÿ$UüDÞ‡//¾Tœóº0YwŸÖMhŸÐáÒ]W]5š£€rB)}Âêx)›Ë­©•yhOÚ&‹'mW©+N©ÙîÛžÉJãcZ¯/ä‘YšŠ½Kêæ¬-÷‰—K»C 7&eÏÊ€2‰aý†-¼DCDĤ!gšÙl3ƦÖXˆ·ºU&9¢æµÁRå· ïúyþºüÜ“å×lI’%”é#¾î;?bÓBž˜•Ùщ~…C³øBì{Ÿ‡áÌÞfZ©]‡éÂ%8ÁãV«9æût"äAüÐ`%?dŒwB¨|†ó}lØ@!¶aJÜ‘ÿ9~%ã¿L´šE¾DIƒUu:¶ŸÚ™#ÇY«MÐÙÙi:×&ëiÛÉÙ˜í £i™%9v‘o3¿i®æÇf/+Z¥ UˆÐ\ª``¯ƒó¥»vcÆŽ¥ÚK3žþrÚpvB!Íu~uÙÞÃ)¡eRY÷)±5¦>îtTöœÓ¥çzµcµx…Ѧ£™’HƒŸTxIÐòÿ7: `škÜ€ÿ _ŸxÉ'=Àc¨Xu<žÕï¶îxQtüê l“?eŽ^K|ÆûoGǰìÒb*ÐBMÔªªjÕdñó½ âË\i¦^ ÐC@¼<ÕÕ¯ -Tý½PŸn”£Š1*§˜quEþQàŸó½“lš­½fmp”~s©*ž0æŽB–Š%ÏЫÚÉäVW§ÞÔ7bö%s›Ôm^©¯Å©\F)j ³·Gs_µ™A}Ý •éaéÒP¯Ø$$ñˆè’ª4(S¤„ˆ¸ƒEDh.Ä¢ð­íœº'ËëÚZMWKUÚ•«šþÈ5]M…©©éï¼µ¤ 5Ô"O ߊÃËmèeNçÕ"ímÕŽÇdò^Ç£MUÖŸ¬“&Ýù”úÔóL[ßzžSéùtFéТ;DÓ{Ê(~ªÈR’Ð Wôø‰Ãj.ö­…¼››Ìê|¾^ÌXÁk™Ý Gœ9/“ÏÃánlî].Ê`—ˆÓBRÓ8Cü­í ÏÄX¡ ±Uz åûUY|µuž²d‹! ƒÁlÀóÍ0üý6¬¦ß#*¹Î¹G–ø)«W]¢:†/KäCÏ廷è Õ:cö–¹$Àš$ËEÒÅ'Œ[¹­ï·¡£ê Rˆü1¤HÉ‘ö‡a™Z `„(n|ÿÎWÅÚôK49 4¦4KB0Úšvˆë€6ÑopÙ‘1K†À­˜Á!7ø CjM,¦»+ï¸QFGí“x Ü™¨ÅÕ2Ë͆3d¾÷Þ(d +ïQ9Z ½(ùmû»µÚ¶íÚáݧe^œÄ}7C9ŠöÈš÷Þš{Oš}Â;¸˜cG_ôò͆u¨½;0n3„’/­ŒVÇ¥5â‰Oa‘çœÔbY•G¡Šœ6v;Ã5úUêBE—‡¨ÑÐmèF%5ßÛg/ël1Ì|a™OÅ`Çšä'lèàÜx ‘_Iôá{ë%k{Z‡…9‡ìI—úÊÖŠ]uìF;é§ä«]’ª%/ìÐ [[Ƀ÷Y½qî/&ñ/æª8NEÞã|󜉣M™k.Ö2èýï÷¤;‰[pkT SãØEøã§ó[gíNãÒ³›#z`ck3`z‚‰ %Vªäb"÷Þ‡‚T‰<‹¡ÎW¯6<"M?ÑÐá‡ïˆBLqžwÖÝ‹WgðÀôváL"K:Tö%Ùï¸{ÎLºWEƼ±ü¯¨r]ÙZ¢ñ_Ò¶@ú”Ày¢6é›ÕÛݺn‘é!!^ÛˆVÖú^µ íò‘)‚|ñÍ™ÇÕúç¯3›¸`;芞E}å‹èb¹)þ’û‹š?ÛŠ»Ïm¹ÌKjSÓÜŒ9654w_$¹O=Dæpdñßøç›ñÅ¢1£úÙ±]?;XEÍÅÓ ·6ã)[oS¹S\0´]¸>7,Á[´÷ VÛg-üâ“ælÞ|<«8u«ß0µÍhg¼ûf4×DQSÁGFPs_vMÖH¼\ÐOGŸÈ HÖ:`îš¶¯àÿ·ÇÝÖî¿«ªt˜Sl/Svµöá•%ß—ŠûváDºªB·UÅuùàATÔå»Ã£oȱÅ4 ´[â©-$Oe @ôžžŠ¸É–ãæù&3™ÃQnbMKtDRu™žº^A‡Xrß;Pì‰"ÿük¥ìTáï÷ŽÅ2­läÝjøöùÑúçãéà4¡,ZÀ±ç¬îÝdj–KÎŽ'L铆CTÆ%K’ánÄÓSClá[Ä’¡âÂŒ×Ö9°r0ÊÒƒ-€~²Ö‚šG°.éb¨ûæiõ.ç—öÑAùHä[o­Ä¥cý4ÁKäHÂÄFzV•õ Ìx…šwíÇâp/¨—cMGËîö_Äùf,M4-ž™–w€k-íîÖjuÊVäÜïÝÓ¾HËâÖŽò+ÛŸ0ÌÈxgÚ&³F`0,A³âFÇ5&½ñUâû•¥ð±ê)n$üÏœYϸٮ„øŠ RÆ´Ø|Õ˜Ûle)-ô6O‚‰^€é€Û 2N*ðŲéÀÈlÏ‘ƒ"AÉ£R¡’=rEÞ™­Ü|¯Àš"cå`†'†¥'*µ]vfL1Êåf¯ÆXTØp æ93X WTQçY«s;/(Z;êÊ.òw½%0sÉŠ.¡uhb çóè õï0ßpJ ·ü ò`óôkŸ2îp\9ì(Ôžµ¨ùÖK²™EÌJì+<º—m°vÍ’DÓ*Ù2÷03z†T±SÓbSË@¥ˆ‚‰Y†ˆÚ$Ç.zîóöW†m—‘É/C 0òñÙe´ëîAYˆ`ÀtQæ‚T@õ!8Ôí6ÀНjÍòbÉ)9vÅ<Í2¤bQÿÿÿÖ÷joN«1 .r k à[¨Vð¶þÈ6+ÆÅYæ%eÆÇ®ÑüàZõ~Œ?iu¤¦5qûÒƒ-Ó¸· ‹¯Ð4&×3ÄÅŸ0M‡’Ì—7úÞsáFŸšFS4C‚‰`ñF[ûó³|"Ç|yÝ‹½ zZËÁÉZÏ… ùdÜËÉ1ÆÎ5¾Ra¦¥Ù6˜ËpÇ»E©Óà—+3W73xþr<ÚnPÏœ318>u‘7_Ááäú²›8xÂÒ@_b,FÓ4Á-J}O€æû÷Ï J²7²"«³šc]öĹ3â\ÈZnL{ëR ¡;·9ºÈ±à¿w4¸_#phKØppލéà<…i6KÀ˶g(ÇßÞó|³_XlàB>¬Tº÷ ¢}è¡ê@å6´ûû=YÊEÈØŽQ¡µ` `§Ñ&Õµtý‰ k+ûÓÁŒ/Þ-Wñ* 8½éޱ¾ANÐùCPcmG P2ßK–¦¹R0Z •ãŸ'ϪéUÔ>‰9¤s¬Ðþ44$ÖŒ0©Š=©ÒC—ëó. ²y_åK×#Qéþú–,bóñ"C ÊAŠ>=2 ¿9Etü(Bƾv㎴#ŠÉía]΄ýŒvψ‘Gîé(„±öø^u´!šOMÚé圖ÛÄÐàZL”zDÓSùN/g4i*}ÀxLÔ^ï¬ÈmdŸcÓrš°7¨4o—%Í#S †Ãñ€<¢Š²òTDÊPH‹%–øÃXŠ!F$ÆŒB3C ñ.\>aÈ]ʼni1–2D€)<òV¾“PH(,•Ø×—xSm?.W'Ós ˜hhëD]5‡†šÌO˜Å­ÂÌrfá¾ãäÍ«ž°‚P×ᤠ®SÄðôØL\ÂÖŠ‹© +ª_yî߉¿‹[L‡ƒÌ¯]“g1ˆé——O(fxoN©´øeÙc€±_Ž~*?¦úeüeZ«Îy²¾’s$’dö'„ “fýF9‘r5EIpH¨½9µR©P]—Éy:tóûÀƒI¡ÚYõêV›áþFY¼ üM"qXìš!J½ÇŽÅú§!/6@¢ cÝØîìFêŸ[×Sìí¸Id¿qbî90FîÖd§·äð å1cl'¬©‚!ù?;3ñ~EJëÑß;ïx-ëvÜg?HzÜX§ABÈ ëÚí"<ƽ’^‘·¹ö¨ÔjÄGˆ4ÿtéM\›òó¸ÒïÖeÇJ€º÷«„³Aô¤ØÐš'´Ëõ‡1É>:ìsT|ð8Žôó GZŒ z5„“º„B¤§»Þ‘ÚT¯×Ń‹|É |D½'­ ðPSÀ Béiq ûÿ<»‡,ÍkfEÔ)š7DâúÒ{Zõ§x옔 – ¢ð8çÉWWÄ4pÍeÐ6èX,^AKÚ·†BÈ)Mië:»I“V­QÈ®„¤Óññ¬Mot1·ŠOE¨ƒ¹oÓæïºÍ{ñ¤GèoÀN !¦{if·‘|°ÕbHKÙ"û]«¼°(TòÄGK¶E•ŽX±s­¹ÈðÓÔ;P þø9˜3Ò˜¦ÛÕŒùWSs€ó…”š¹ºÏ}À¸Ñ'k,7ò› ƒ_ép€• ÃyµB—ºsùÀödÞyxC¹öxÀnµé4¦þP4Õ¥ë/Ï}6‘…vñ696~‰O#Ûþ{™’ÊÖy?K¤d”93c‘ˆrYM.K¿Å8‘0°@ –½ jÒí¢F¤J^Ã둚qN‰_#ªäcN»œ#DqI­NÄ ÖH~2œ]×d¢‹õªÆhF&ŠWâôï6RþªåávW˜dL¾IÐNg‡LÝ­G'&)ÏÔ&Òw-蛵ߥÒúX|Éz&-Àa˜³cæ-l¤Kñl{¦ã1zÅÌ„ ¼ýw‹C30˜Îä¹{@­ZÔëG '©–]N[" õ':l¨{u†/•Ceî—lx3I›ø@N^½þ©o¹H‰šÉüt$•ÚBËPªØÍ5ñ‘ض½ÎZ4ðmºAÑ9:½±y!™´!¿äâªïji‘`©aêMVò±ÐÆ®‘¿ûÜBfog+pÍOn½‹|Œ'±ußµ½A4'¡u·?÷9Ø!~‚¥ *F8¶šéÉì·i×ñ8H_”V0ò$2ÍA®á§]Ä4HkPŠr«èª©Ñpu$É ‹ÞS›@kê¯ßá‹âL=2ÆQ0Vkîó¿¥›.Çc[ë o}9ÖïzváÛHtKb> ŽÛ†ª·›Í¬}^bÔ^>ú±»4ÇÀž•wcÐw JíŸÈß!²Ï:;|âf͹¹×!åßk9¹(Cë¨ÙίŠ(q}æì£ÅG&JYØ~ÛJ߯q~¢J\¤í¦š|bé\}¢´FáœCCrzEìÉ(¦Cæk=AËK+éýfr#¤%o6.W0HÀ LEŽBgJAÚ*–ò>í¥Ih³§\ù@ä¹ará7J9‰Z ) (x-ù_ª”¼º’8¼°`ŒçD•W}Šã`DÄ4\|à%@H·+1 "!E«ÝGø]8ìRo; fJ¢Ç?›¯Gërö÷b$pæ Ú½ 6‘â%Õ¡/A;Õ ØñOrŽ#BÎü|…Üç­®Ê`FIrbtYƒê¡—Z„ä˜bD Ó0GÎcžûe0ndÕžƒ^ßì]Û/Ù®R΢9 b º£±6/#6/ÇZ1ä¿T%¿ î¶Û‚®MY-tOC©á¼bíΩNÏ1zQÞ¥²hóGå`@dÝQ¥„®>#Fzê…=ºrç›>ý pÈn²a#Qí܆Ì4¼k–`k÷(Ä Y<¡»þÙÓˆ"ÅiómùŒ\¯¸H©±|k~½õ¾âýвŽA›ÌÄÁ‰uþ̶v¿fàzª‹(ßUÝáËÜK­t;˜µüwì0J˜ ¦Q á4ª9c@]GÙ ¦þ°…¸üŒ¨ØåæxLcúèËïpÁ@3b‰ ¾Et +¯Çãÿd%M´¤±ÏÆÎ“seøå*.`’'oÑú‡r·¹ù‚ÖÓÐñ¤¹GÏ×Wºˆ©fòc ‹Ù7§Ïf˜š}+ûçL.m°jÚeeÍëÐDùBçå.¾ÆrWèE¥›ÂÅŒNˆ™óÜ3àƦÍ#_h(+ ?„JÓÀµpÂ)À‚è5AkD×Z70]OÒ“/¡ôTû« €~ÿdƒÍçi<íÍEµotEf~¤=[wʾ!2+îZÛúá囋œð™s¨×ØË,wI`¿ÜE—b—]Òò%Ì™E+ñä&·¹Æ°x>÷*\’{³8+cåýò[Â,fÝ×>§hH61C‰ÕSm­º±¿é¬uã܇ӷw™1²øç™úßh¤ZþÜØ…SƒpÃF£õ~Tô%=t@‘I,@F&qçŽÉ1P–8!ˆqß!ÒÝPê|{Ù-gîhôLEЊ[‹!ý‚Œû6#;ôå;¤Ê›¾-¨aVçkD¼ah9‡vdá°x[ã×è‹æa \)An¡òGBY¥ ¡ÎpP°ž À¶ÜŒÓ9‚àü€¸J,ðÄ1±°´û…Ç"æ!›Ç—õ[¨'˜pžD_+*Ö~[Ø~/¤~mýks[€Jƒ“à°VÊ«ïJÑÎþhÅ&)¸Ä@ÿÁ¹Cʾ HKÜ÷ Ê!ãñ…ŠôþTøLŽ#õ%ñ_Í>ÍÇ)G¸¯ÐËiÍ\ÉUì˜2®Ðu‰·SsÒR×Ç©ßq|šPÈqP8(q¬n(­aÓÑF­h†Ø…IßQëv8¨òÁ3«Lª·N÷s?øõ-Ðÿ‹¼Y(è‡Ò‡¸@D ¯z–oHSåT8ÀM{¿ÏãÆ› J k$UÍ˨;#ã¦Ô|-´QQ̃ 8­iBÇ—ÈɉR†%Ãõÿïˆ×bý–$"²Öc‰*éKÓ£ñ”¸—²D¥"F!„ú»§¶Òš0f:xŠ„L©VDÎa;ǽqN’>[' ˜Z´Ô V¨‡Å1Äá>Æþ(Ø3 –²Ï¢s%µ£Ùg}þ‹DÆtq<âñÞ…¨Ð¼oš\±^&´Âö º¬ø ÃdÜÊÒ×ðÀoÚü¼Š6š´ÌË1‰§qIµoó¦È*ˆÛR lÌz kÀÕ—g Ò\jMYDÛóÒ/K‰êâ` [¦é™IZJÜÏ:&®m¸½ÒOf>z'–@…Õ_²é·Ôòï`Ëx ñÒs@,½»óÇŸËÞ.Q›UOOø¡Dƒºq© ýùól¹Ž®gn¬¬êãK(÷«Ò‹ø´Ac%´Òg‚¿ì¥è£‚¡Ç R‰ë–á&9’r%[ ÖƒNÐÉœÔ &jî^ õ÷¦—R:ýx$îxhé±ó hlv£`N³(Ÿ? ½= ¯úÜðÚϲš;x[úHçÅ0\V]gèíŒß±(ð®QBýc iñïsÁ|µ¨ë œÎaí`ÊÅÒu€PîkëØÅc”Ïâßøéɇfƒ~F5Ýèó;04Ýî‚ò}e®%8,­&-¶GX½áîÛµˆ´yµHàb`¹¢Ro;+mÅÙ'`H—8# óƒ22%´üaNrÇ•‰Í®îû¯s,}c²‘H[sj_¾A±q·Ø+ÎÐéE=M$ÞÇŸ£]èüáQ¿Ë´†ŠPCA´$æÁ“lNÊG³ƒa-XØÅ•èb#ã´ÀMQã=f®ÿ–†Ú1eÕ—Ô èÈë´^;£fs@ü² Å%–€pYIÂe-@b¾"€ ºé(9ªyû¦Jû+˜¼tI;¡hCiçpÀ’xï< åM*¶ã.ºh D ”%l¥'äRï½ g«ãI¶éqÛ0Ì'.Ô.VH«q¹^ŒWUÒ~H©ËO¶àš–[ç5ùë…Cj °Àô0Kz†Œg+þ~^«çÅs»ù‹[ô5¹tËׄ»×WEZ ×»IìNÞ¿u3~£ ÙC' ½]œõ­ùê´¢Ö¹¤TÆ¡UuA)ÀÞ_C -“æCSn€}ZŒön˜ˆÕx œ¾,\lÊÀ€!úlçbàœ òh~ŸØqܯqÔ]¸’žÁ Äò¡ &À5ÐãÞ¿ÂS÷=³ü€|ö ZÉu麎­ÍFþí©örÚùº8Ó<=`¿ŽÇ1ì«·ª>ÀÈ0}ê +hçõIw 4úXï¶Â›’P™!>Õ´6ÏßÑÓœãðœðX~ªJ»Ÿ>×›[Kæ°K}"ÃÀÍ8ò»½ 5_‡q­Ñx©þR<&°ZE}¤a¨ýA·¸¼)Yèé^Ó4"ùÿ€þ›L¢v@ºñ†‹µ‡©ÿ9ŠÀ+îU$PÓå.󈊬êŸÿJ®­[Ä:#¨äâŒ1b¯Ï%oõ|5^Wý]FZ‡Jþc¿äI&˜ì|÷whÖ©….ÉçÑúûÒ} †¸ .”Wª(ýJ›^æ "±õúNû83Š—¨õ¨br ˜±ë F+delÑìÔüûж|´t3µ‰ œUâIËÜ@Ù¢FxPò¡¤Á¹¤9ã1Ò¨²‹N«OtÂ6 מ$m°iÐd‡èÕÍ<ýtˆ‚º”óà6è1ÝÜMu¤xÊ2ëœÆd\S.¨6h›)]ïÕyñ&UÑÍa¸ºÆÍÍJÓ½ M˜Të…d ŒÞæ¾!ÍTL8ÕÎÑì¢À;Yh[ô¹ ÛÙ‚´GW‚BÕ$®Úîêta»|3ÞžƒydˆQ_TUB‚B’§¢„dCüq;ëÉ€sWeèæ@é:¾p6ˆ(üWg㬰’÷¹q9œOZ£ãÐY b†A/NŸoÔ•Á¹X—ÿcúz*p±¬§Afévšqkaλ¢ ¸Ñ# ¿ë:<3‰ûû¤ªFgØOZÈQHíl,éªýñÿjÿë×rÂÒ9ï›7uÂÕOæÁLë € £ƒÊ&£+¿ºŽ! A [:µí' wŸ±j¯°†6Zâ"ø1ô‚–J'\(»šaWµ"§6¹J³éëHÒ›,ú­¿„­¤z§­âFè´=RæÞ±¸¢7S!ÅÔ±å‹Ü$ƒëËù'ºF€J*³v3Ö?Œ¤©»­K¹WªDsVO(`ó›ÈÈ$Û_ à7ö¤ö¬L.¦—‹@*$ó¤c„8æt +ðdex´ºÆÀâ'y ÆSuà­¡{eøiÜm–ñÎ~­é3#ê ÷ÈŸ¯n<÷§ÓäœÐ­Fx?Ë‹¯€©8Tø6YðczUµvbàQfÊî6ºNýª9´¸½cçhV©1‚a›góÆÌzûÅ–u¡N¸´^Ü=ºDPI>n68_;yí¬!௮ éðHÓ' ‰¥ßŽ€½®Ë¬†[œ¿2TÄñµ ØdÂõŸX¥)iyê˜Î'¸£ Í–/½PK­£Ä€•S*dGubç‹ñúãÚGöŠq_JR‘©óÓ¡ ÿÍæ¾û%®@rUèŠñéùó:±z‡ðM†æ€†ŸÐ/9QpR¢‰4¥cdõ<¤kÈ«jútÙZÞÔ‡!íüO›BAEŸ¤6 W¬¤× •æw)(E8žŠU‚–ÙÕ—Ãbˆ¯_'=\`ëÐhÀìÇ_þ £íZpÊZ¿Z°Ûúq½Ukõ2ˆ˜Èpʡ٪OÛ%Ž¢KHõ¨¢f¥ŠÔ%Eõ®#4²JSØCõ[H¨‡AÕLd2Êɸèaœ-_²Ä¾Ås«»ÔÌ8§`È5߯Òv¡M}á•-‡¶X[œ`Éô‘äœoHË—:ø)¿§âH s'uÏ⯠²,%ûÓÚZÏ‚A׊áÆnv³ãþÚk‰úÿÍ‹ºí«¶=ö¯òÔL]¥—]S±¨ *.ºÝå’XþÚ2Íí£a~zkð sŸñÇ2Éæw2À¬±¾ÜQ3ÑϽS0û¾öév÷Ô'ǸøGF1ƒR¬rªÌ¡ÝIîË µ:Îñåª}/…í“fêQ Î"Év×Ë vãªÑDØôF"cÞœñ©ä·ÉAà™ízY:”˾ÜÙB'¶g·ºl\ƒïœ\×p¹bB(¿!Áëb~üÃë½kƸ´mç…P â‚„/9m œ¨K/æÝ»æý0XJSwÍâP—iÀñÅòQ­ùKñBvÒG0—œpLÀ"a±A+†þÁ-^POízP’FE%Oñˆö¥Mÿ3 ëÞ3‰dàÜIJ7@Q Þ·DüsGkÄen‰Èº'#`u…R®c‹Å†%†ïÅ5áÎ¥/Q'G~Ôô8ãK΃)ów•ŸDU„—}õf£'ç`ßWÔHJvòsÞ™JÒM!˜¬#˜[ú‰6FauCáÃbÆæ#š<‹æZÑšK¾œ`Kl%kÜÃ#“ê8·žïVÚKÅÝ:⤬~ÝYIÉz?cëì-‘”t¯ûFK§7»zƒ\Öz¦pŠÀ ÑEßYõ6ºfðX£Ø‡çŽå„ü9÷n¿´žŒ*mÞ˜xžÅ€¸ðÓ䦨Ø@áUJü5r­®Q{ 2¿™;³­\ÉmiÌZÐÕ,~:]Ê …}ÊôѬ‚ø6!§ïÍ®µ:*$±H€auœAÿø ¹É@ºu a‚Ï%__–>–N+÷‰Ôè£Ä¦7Ý홞O&?9Ç€}€]ÒJëLÝÙšìB¥÷ñ“™:jÊŠæbå q›1tŸ“Kë~ÛDœ¹E‚ erG^E´«ÒÄVW‡­ÕN 8\äêϸÎÝÍ‹ kmüÅØ"!l@Ëõ’Æ8Š×…À¯Æ}T[ü+gî >Gz´{YßøŒò^·IbâáBš;ÀFõºÍõp{8„ÈÐ:pÄÌAóEw…o›Á…ã”}LX¼iP…%k'“jŽâ×K ÿ<בªEù‚§¡®Vº¶ÜP1¿ï%!$ÇgnÕ°„úÚ’æ!ïâe^¨Oùé˜UJ¦‹é¬®ã}ýûd]¯ÏßF¿…fÄ€¼f•ÜÓíD|Ìݾ$“óß:_MOc†Wúß™•D ‹áÀ7ýt]l)èT•<“¬)F ›=اÑì¯,mÀYxá]v­fu áNÇŒFåuÚÁZ%ÃË’1/>} ˜?>)â±IrC’²z¹¥Î¦I!j½i;f‘VCÇ©JÉ-žfR’¯ Ç\$ ¿mTÒ®ÍQslË®óñ¨%Ía{gÝ .Å$î$uqÔ’‹ˆÅaèì6ùÜÿš`‘t‘Ç º“øUËÜš`Ç]ÄæÈßÚä²&DΆž¨ù0(« ª…„îuÜéomø6ŽU.gxÿrö@|ÿiO B‘·A‘‰±©kO0ü/ú{dÂ1bІ:¶!çÉ ÛIÝï`LJ †©”#gŒòôÉ”™«ÃnÜË`:â/ç4¥Bv^ênvðÖß ˆëV|tb̤Fš©ƒ0 RiZ>¦°ê=§`MÛ%ïØ¸è—q!"é1M˜™nú»†¿f¥ÿæô+“x$ß•³­krØG FõÐ-<|ìÿ;,Cô¤X ^g™‹ˆâŸV[Õ8ž½›áBófJ3™ü{ZD…’v wwëΔ)<‰³J/{œÐ#à"LÁ­J&Q:BR@X)Ø“M :©rIDæÞqŒÝ¬spMæx"`i-«­8N¥/nÕÃ6>N[ÿ!\‘¡®¦6¨h+™¿€"Ç*îÍ©`Ö"íDŒ"(õ¾Â—‹6¶±"ýRd Y;ônpÅô¢ ‚îH‡b Z×@®B#UÒ¼DsUBc€•57‘½ãùf9,>ý=ÉÅñZâÐr¼Ã°P†”+lØš7´t¸‰sÅRÎN7f È´9–(É@×5ÛŠ²_süéFEÒ¸p#GàR60ËI/ÉiB“IÈ;KÒ‹Öɺ.5ì>Œ‹¬×­É18æÀ¦„{/3iÀO¢ê[Ÿø{ÚÖûð%ÉßI|Åùþê/®_禈ZòiÙR[Õ,Õ¿qʨã@Ö¥!³µ½šŠ“SeãûÉR®_|ùcŒÍ”ýñZKÜ}?Ø{æç' ^Кb&AåaQÄÏ5)QQrMÑkŽL)öb¿’«îjU‡æ;mGdÈN7ºccDVi0Dô³l Ò­úšÌëâåѶ{ãØ®y„ këCßÞé‹<{E†š“u^”%³‡vðct;?"flðŠyt®Ô6ö”~†Œ ÄÙó·P^&ÑÆ4팬–ýr&|,'ÿ´s]çÇŽÏAÞ&«×0L¦ˆª“‹®› Öž.h61þEÁ[%àmðýyjjΡ\é]Ÿ ÅMug{ÍŒ³ù"ì:q0µª3ŠŠˆUß™ÆÆ:Ÿi_¤ßŦä¨áÙÀSë_͵0~,õ+?ͪÁ-~hc߉Em2oBÂýYE/ív­©ü’'‚£ãN¡Š‘á÷aJ¢rƒhƒš9KœÉ¨D°jV%_’)Àø–4˜‹½`c3€¬dþa»9­®·XÉöÙiB[Ίõ/©Njs«ì œïPš”ÕãTœîR@©‚¼®6B¡@ / Ré=>aÆVó¦Ç d5Xð0bXën%„&ôJÕš‰5™ÍÑÃ,ølÅ>Eå1–ªdçôër@Ýï %ëò­×CôŠ1ˆô¸}ß÷!Õ–Ô·¨[ªS6V å—ÉÖ(ÿs.y¿äÑ-|•|`.J¢Yä8»ßèÚHü¼“$C/oп Í×å â· ›Ü¡)cfî™—©¨Ñ”qüm3" ê&ùõÕŽS®«×[" ³´_‹ v([*ÖPŠã~¤„BQ„"™¿ûD‚T¼.‹ª¿“ʤëç°~å@"ÜÇHyа‡÷æLZ aøR‰¦áU]>À /WdÍðz0s]RÓát»ÿsÉÀØ=³é/[GßešÌn‚þÔ,‹K3Þ\R¦°’]Ž æ@éÖÆú¿“÷C °Ò[&õ‹…éò—Ô°XäðýÈÂWåOÄÔIJŸ¯Íªb™¯/‘ï¡Ôþc8^aX¢›cˆRë t ÷–)JïùT€1Èɦ(ëÒÙ#³¨oN yÄ´UšhžPôC_4J^Œû/¶Kæókü2Ù‘û‰éÙõö51»6([²òòü3 7_%{Ì_í5ÉIR’O%ÀÁ˜ögªJm€K(±:tÑ¿>Ĥl'ãŇٜã,¹äþGƒY¬Sê¼Û>l!lhºHužc©ª1S²êx<rßÍ2ƒý»¶±–\LÍlÚ¦Q«…áD[·ÑØ4¼Ù¨›ÙµˆRx]ܽ‰aÒ¯"!‡m«„+Ÿh½\ š]Y[…i?ÆÛ_¡x=pèv1ç‘&™Õ’Ö½JfìT¯ ,¥z&e›KZBR¾FóÀäâ¬1œjfòJÞØÜ7ÓU©M`êÒ™ƒvÛ^ýL‰ôcì¶ÊÉÒÝqmÓûé)'[ƒ¨X/Üù…ˆ0mË Å¾1P@æ•j¤‹9àöd‰”ñdökÏšóÒé Ѱ’_¤nåïÑ3ÿŒ qlÆ6xËèvFVW‘êQÜaÞÚ)®ìt¾.úkÌ—Ëóáù›g þƒÚšinwÅ 4.QŠHól#S—ÓU¦‡A‘qæQg„ùö(36?ŠÈ 0qpi‰ÎŠ‚ÖõïNA—¶ 7¶ ïul¤ôÃi;&¤5-[l‡Ô:×ôè&½¿‹¨sÕyi]u®TOÏú¡ÝW®Òü­æ7˜çj©™9y³PF ˜o‚ÄöT* Qª¼ɳšëA¥¢ i¼}ñÝŠÏÈfßù“ƒ]B ËÍ=Ø]Å´YLÎÑ Ô1ñæsÚQMù h±à -ýaT7’œ“‘mDZJEGÁœXÞQØÁ×í| beŠJÅ`Ò ÷ç ²_7®È8ŠæUÀ¾Wöà·’FÉnïÀ´w…T¸‰Éáñ‡½F(µ*N˜3iøS¸†‚÷ºÑfšårS„¿ÍåûÕàºám’Q{¦©ÈÝb&AŸrħv]:…&³j«i1™÷]òóõÊê–É~TÍšéèŽuÁˆ‡W]¦¼ö4_¥YS)Ü|Bq‹[…~!³ÆÎž–¬´2¤71íšò°%™æ—Ëf¶šå<œl¢J?8ÑîßT}âPû”©Í ïûLIfuƒ $sžÝ ”7–ÆÜ$²ƒÆ•5Ž˜iSà ´NmúÄŒ›:¼¿lQ¤~JH"ÉZõ`Ó£Eá-íÑ•ñ'I}©|ŠD›„ÏéUZ»[Vµ ­ê—. P—¿+C RpN^ˆn$.ê⺣’ôò=ÞOÃÓ}EÑ×ÃRª¼(UŸ|Ñú~iÃœ× Å´ø{½’j ÔÜŠÉ0Þ™Û´y12dé±7XgãUÈÚG×la§EÌzmØ&[&èûDvë¶Ìy¦fZ °ÌAgw¢Ù.·@¯”*w¢ñª,]£Ë¬6¶5ëpÐ0Ú¸ØÇ—íæÀ0ÿ -þ—M«Ü —Ï "3§|ÀìYÓ«6(å¼hÊ)²zôÊ6ªh m¤: ‚)ÈžxÝ’‚ø¸¥ÀmЛ…™)Pð1ÆÃMANúSÍ œÇ¤‚0ÉSA:*0ñ3ì¡QÓdŒÖ³—9ée;nÎ’ä:ɧ¿ #°Oø‘V0·6ŧî{ÁˆSk z•-%A]@öŸæ W¹Òˆ :ÝiîïÊGG¹QÚ÷ŠÂ'ûØ^Èþî*ø° >†ÝTCþ²~|ñû™ŠßØmpYô"à%))jp»YÒÃ'Z¬s{ÆÁ K³P˜ðµ.³H¶9Ÿ0Š@ Æ`HH4=m¿}`P=˜M¶h¶×çæ°ÍjÃÄ” vf:áñ˜öÁ3Æ#'„ Cb÷±Á”Øî@}‰‘ªêLB7¥5þÒñrWÊvAök‚¬ Ø´’Hì ö- Í"›Ÿú9ëÈ\QYTF"ì^í]Ö>¶X ˆ ×xmááøGî3±¦kÊ«!Æ7Ѻƒß©8@ó.aõ@‡rò¤K•¶¤Û#v…²µò„…–HןÛU»O°£‹Úö¹¯Ë‡™úØI^äZbÖÐ!ÇœA¼¦K`iv¬Ìêþ ßp°¡ÔÒ9ÚªÁû"Ú*Þ‘LàÔßÚ5:Œ‰wÝÏßU¯P]‡RÝ"…âm« ŠaÔ&T?_onŸì¬å.ÎSÍdg„0­‹wJ–Ë·- ZûÃè³Ó†S“Ý~§s 7œ˜þÔ\NêÁ­|œ»:)äg¶3ål¡»öG½iÜ?ØÀçk»$®AÄ6±Ørùb†ÝËD^‡©+F'-‚§EUìwúéÛ‹Óžþ¿;ÜAúõ¤oûè–jï)  šÞKï¿–¯àó{÷¯ùî¿J"6ú-¿îaÁ†~"1kï­ù£$=Ì|GWÝJ~q_âù¹œÖîi {±Ìïè{/ú†´IÄ&Ú§:ú—l^kqj”LxíÍó‹lâIŸ;‰!Ó'Ù;FîñÛèµð­¿8BhÙ[Èx?uØ«6]îYÇóÑRV=h“¸.™Óà¿f;Ñ*ÿÅÝ $ê|@Äå# Þ<4bÚ|ѹpa‰áâÃÐ+ Ô@Ag%ç‡v°ÐDÒ´´t!`zÈBŠbC¬’¡g <+Wl1îES³GÉR>œìkù³1Qf¨W CÏ Á±§nÜ•U¡Õ°,ËKQ:ƒ²'LÓH9W××pW}ùãaÂ+®xüSsYM+u†ÉÊÚq^4ßk9QuGXÕ6ùd–Xÿ×îÞ˜„‚ t !-@^ï¥ ¨±Hsàc“äo>ŽÛ/[=®'Hhï]¯ÚLŸßŽ5·Îÿšª–ÀjíÅNJÓ?Èã°#uÓV‚úÌ…–4ÜÎÏ,]Œ "ä„çaä³:\–Lñ#q ”³PšÜ¯‹ÃÙˆ8q{έvAžÕîCyQŸDä•N…ávÀëbë˜Ø˜œ½{º,ìÿ 0z©v„ÄUÓ55…‘pKÉìt ß Üí¤Ü¹$›Ÿ›ÉVÎåÎ6…Ç;ýÀËGÍ·¿ÓKiV&A·¢ás(”ÂÕÿÉ#šˆ uüT±Q],–ÐôúîÍŒ/ICÌ»Üq|Y1‚›ÝÆ`–Ç ßm1>#&~Ňi«u™OnÚXê3Øø ¸º>D/Ê™"càÂd5DÎDÏnÒú”_Í[´'" v“¦…t(+(­Î%õï`0j6¬;ÉKbŒ±l²ndo«ÕyMc»ž–}©å]¶Ãk8ÃNÅ“œ‚~×KêÚmúÀâ’‡š?©Fh®è{M$„ÂÛ[D±íÈñÃßh•‰³§ë?m5QY †š‡+á}4©¸ÒL1úâSy@0\gÓå<óÕãbg˜eI`×Mm®£.š+,‡vz Н(^tŸP@3,%˜–£ ŠÞz÷žòáGEÄy5L•j&H$»¬¶„ܲ²léêÝ]Í~ž_)]7Ñð(ˆ%øËv¬õ\¤þˆ1S¡’|"0LõÀèòÃÕÐÒÓ¡Úê¤bà›ê ÉcOìý+S©tàOň'-šíýà¤_ÃzjÕI_ªq+“¹_zü/¯©Áñ,ñåõGM¾âæ®xÝ~ñ<ä4ì€ YËÃåõãUÀ4\*N5“¸BæZËá}HŽl¾ ³1éøü1ÍÞOA*iñ£°¦ƒ,Ú@¯ûVŠËB0Õ7ÿ /Õ}Ó™4bô<ËAP8Z‹ï£$Y&$ëàˆØöÜ„ufsôl}iqë°€žõ“ÛÍYàÄ_a^[íµú†½ &£j%nŒ’†‰?…8˜‡|„É;ë$.éQŽ‚ 0‡Ö%ç7”ý8{ßÖ?–ÌŠ$+iŸÔ]WFýÓÝ‚å“ڟƜ݅GÆ ¨ÈuïWç‘èË\<™|…,º ζ˜;A|6aFK¯i@&Ü#Ë)0 ÖF8 %] x‘ãDèîâHƒ‘nð÷£ˆ¨Kœu49X1ë0k ÉüY+ ~'—Ý– ÿ÷~†jž“ú§“¢ô.ưËtӜ˜u?Xƒ›²˜h©ˆ ƒùlðö}5*IÊçS#V=WlÜ©@oˆÁ,‚­3u—½‘”[ažà2æ™ì𸛘6¬f Õb¨c*EƒÞ'Íò›6¶ÅžÑ[ˆ¶ËÖpÍfl—NÒ}C8­Ÿ¼’ò‚øÓn CjV2ÊéA¦Y~?L—zúAíqóŒó´ã6÷3•}¼~?UÂpƒ–©`‹ø¦’ß‹yýInsR¯“³ã X~÷ÐC㑞\ (ü©uWµ ™°ed™lST’ÊF#©i®³ë.úž¿¢ì4]ƒ{ äfw‡E†2ŠÎ9ÿäÂÕöøT–âë"hnºXòÑ­®ä1b²Q97¸OËi Q’§Ø™äúó[SG˜yÔX†Í&Qç.ãýùJìUòªàÔGñ–OÖ¢„rw§Esጵ°ÜG‹Ôè´ 7¸ü°qTºéÙæ–=äÒÒ8Œ¤Š7"¼‰X«µ‘¾–¤|S£Ë¢Ú»h*§N‚‚¾²„óAú0 Û6¯]ñî Â<ôšY…`ÛšoÑ»´à^þœ\O»q[HGëÑÆ­–Ý îæW‡EéJA1í¥Í´¶7›9uzkº…$¤3Ò›°˜Á6«n¸82Ü>ÞÙåz¥œ÷ÿ ªf…W4ƲV1ö‹HDoÑèΰ£—éÑwœÍ±”¥ça›9o®"7Ô. q]VRë_æBß§çÓu äs ½>%… Í{„Dc}jSS«•`@O*sMG#(Ç…ï<5SÈÓä{‡°×I³,zÝhFÊnƒúµfe˜²(XTEöÙ6¡¥Ux°,QnMƒ–_aoX¨øäp…,ÿOoúØ}`üø&~_KèÍÞe±î›òmù=(ØsÀëv\ÌÓYIKôÒ8G±½jnÁµC~8eZƒ4ÝÍû¢&GåîúÚ˜!ìŽÒŸsx—‚¬¬¼4_ŠjåÂKù"ýnÕ¥ý›_²p ÂP¹{76¢VäРþ[”‡~Ç3¨ä’{!¤’¨p1©~qÐ1\à—ÔÓÕ04÷Ûˆq¶T«yç=º“G‹G) J¨äöË¥ b|0ë¤Ú)XEJ¦—Lc¼ÌÖC |Ý]ÓÀ¢Ú¦Ç±£‘Q‡K„rʆ¡xÝÍjã«Ó;yκ3ºÃ‘ÜÕYCÒ†JèÆÐ¾úGü6­ŸÙ×Ñ Ì¡µ+‘ÊkØÈö°†‰]Rïà¥Û¶ WÛqc¬,˜=wQ¨›b2hάô¡ë bûaKV‹x Lc¦Èõý«|Ô“5÷SEs jWyóhŠ'œ“É6‹ÛÇqZ)±âLjŠÑ×ä'rêAJW9Wìa7Ã⛞ܿøõ8œ¹»—Sþ¯kÅY<>v¡gÁE¼=þʈ߭‘^‡(²tXÁ²ï’Ì£wÞÅÑA1¦IFèT±/"Gãóñðs(?ð¤MzÞòðÉ.˜ß¶Ùfù rØhÁéÎi ­Ð¯ßÕÖ’ëbî×÷,¿A¶‹ñ†ìú¤ä¢?­¿7<ø]ØôÁú oA¿¨2\ Vuªôpy|ò…[˜Tˆ“@êþôçŠkä®É^1£^AùWwKgW /mú¬â¶Ôí”´Ø …š*¨UÇÖLW4†DäK(ƒ‹ÏókÕÔ{×äßÒëãøŸ:ù;•E >Jc€+Œ™a­{O•ôd1rík”0]ª”Ùag87‘Jy•Çn*u– ¥ýéôêÄ·³·mÆ€Ó£úlõ×=úB'×G÷ï¬ ižwMáp¨4lß+€¥<øÖhŠªe-P¼Z•†szÖÓ{¬uð$/5 ÕäKX“¦áÆÍ{Œ X½ìðO5ÙKs`'-k^#khë@¤§¤"È hÌ¢ËAcâ2ÙäwZÈäBeî+RÆ*¸Ëw›—ód»?Mãðu­ƒK,@î¸ö©YâúŠ;Ró·3¢eÅ@(¾½Ñ‹ÆÐy½ä¥ŸåøUѱ兮˜³ôæŽkèéî†ý·Í®mC-'ÙWûoP£•›>èþ„Ì, [O=à=PÙÞj‹ [Ñe"lå ¯T·c–¯GíÛ£RéMñ“ Wüö°GK4«ÆÀŠdw[7›¼ó€±ìQi§©"R+dÔçÙïà¦åÝ¥ M‰XîC¨¶Yó-p@fÊ˵r]O0cQ©Œe+N]ј0×þ½–»&ö º0Åîö»\L“k¶íh[’eØMÅråf¹\ÔdŸÝði/ãtkxƒ¿ê½h¡²<Ü%wéü0ã‘pôtH+/ ©™ûÑŽ ”ïM@TˆÊnÅÁòxé-¯æ@jY¼ËÂȃJ/"Óѳqaë[PpAùXMøBÎ’7ldxÕù÷A5  l D ¡ƒÃ$Ì“™Ó}07§^Í;¬ý¸úÂÅÄaý>¬šÕ²Û…>Õ‹øS˜@ÐwY‚ÜiaF£Üãäì}{VÜ„RxSÃýAˆâ"^l±Ø`$èd¦Y7_ª<§ Ä}w1Ðj2¡ºek€ðä*Ò¤Zó«Þàÿ®2Øbq²$RCÑ©¡X$XT¨ˆÂ^ @?«Zd—§oµ$BØ1Z<]îµÃÑFBtÑä©°Ÿ³' ‰Ÿ”)Ȩܠ‹ÜW)ê4ÍBV+˜äŸÄ‹õs±Ü,^Ù#ØÂÛ¡©S_”í N_WR¤ [AçváQ=I¬2òêÇ´ËR£âƒ”KNOåÅYœ«„5Œƒ¦å"’+ûs/S´>`ïNТSOÖ¤ïθO¹Ø_&WQ|o¡èQâà]ËÏÆ¹ì)ƒp]´í1¦7&ø\,‚«â“M\eÔsO–Úø …eïϼP3!M£ê2åxñðxȃ”ÒóZ¥Þú8&4ÌŠ7äË´ƒQ…’¾ë¢¢8n­ˆ¢¼´·Æ ÁQº³Á)Ì!Ø6È …Õ?Ò}êÂÁ°’ÃÑcV~“kV¡žzÅwÒB-ÿXdgðDÏØœòû°µH³èLžÉB)s›•ÝBÝ/˜*ÃsB•åм–üb•“2Ú“¯O þD2eLÛmrJŸ›CvônÍ™Æ_¢W‡rJÓ ‘R­WªCE'àfåq:/Ó “õûYt ­œI¦ÀaÎõã/\ׇ†ß‡Eˆ†Û!þ­ë÷nyT[>ÃöŠuêì`C“æ—kÑ:v gŸÈÏ%êKW_×qqÎ7ˆŽ°µuÀõܨ©CQv-vaÿÞ‚7#* ½}q— WhÑßGœÒA2¯‰ÄÌ6¤G•1ý®¶`-ø|—.œ{‚£©Éí ‡×òÞbH„‹`ÖZiDΙŒ<ÿÁ¯9=ôZ A.nÊä·6m’Ô‰3ƒý·[¬ñ§ÈõôyÔ*ŸŒ¶X¸-lSÑ®uóîZQèkt¸“;1ÀÕ_°ÛŸ Aãi–Úâ ­ï=ìÓzi뤽BskZÖixøïgž1á;GGs@ùŸWÞÖéØkß!M°.棓RÊuHTçm!D~رî«ÛÎîü;o,™¦ºT§ëqBçåÅœM ¢õà%–¿¼0×ÍÁPÉØ{ÿÁ¦YhqD؉ˆßûaúN´x\V¥×]ø(Åo²¼sY¤¥ä¸ð‹¬gérÔrFk_¡ï1¯ìò«…VÈ"«Qa[XwG!0]˜U-9ïŽpB௱›Cm‚Òr»(Ö¸#yS—0G®[:¼Ø8 œBýZÚÇ•W#¥ÜÕòA6ybfy5ÇëFK£³.TÍÚÿ´]z´ÿÑÛ—‹iþ3Öíûœq •Eˆ;9ü•Ž/ýk°^Á!¤TÔ™åŒD¨4-–_ˆÙ“$¨íÛš#kEJ:Ã8ϯ"ÚžëÃ8©Àw0))Ù¯‘(FÝ+ïÔ T%ëzî^xñ«¹“7ÞäÉÆ¬ö$C¶’"ù(7óAˆÛÓ£áãf§æºü‚Z+§º¥úE†ÔÇÆQÈ#›(•8Pˆ ÿ_6TìÇFoz×_(ÖÓí='u€“Üæ=w¦Ä9&¾OšµšŽ\ê¤+íÆw½Â̈;âŠÉߣQ¾lXÔ¡Â¥ÉZÆ ÷Û¡µÔHO¸¶TžÄäã“w ¦•k0Ø´ƒÑ#\uz×­.ûÊ<^h5]íÒÑáJÛZ'8 3ÑT  ,9À,ÃWÁo\¥GnÞ ¼  k®> ‚ìÙrqDrE9šJWàxÁý¨=¬ÿèõ ¦ÃÚëâ#_à(õPõXØdð¨!XúsÁT.·¾ãpLˆ¢k!¸î—Yà¦ÿºÅýNIyvqÒ+šEf:ñw§‰rO³¾ µh Ì‹n½ÎS~É7ZvEq˜ÂŸN"Kg±2ClÔ ûP¶×Ò›ˆþÍź3÷·a~£ ¦Ž¯?RFLn‘±Q8Ô!˲ý´nê*–55[޽Ô)a#¤‚ijýZwpèÃbbô¸çÔñ§¦%;®B—C^UúpDl¥?W'RÀÊ—æ¼å®å‰[¦Y$ó«¾%¬ â JÉŸ=Íûòk‰ºl‘GD{‘aV)  nÞæÇä á U¸ ²í: ƒ}§˜µ÷.yÏPÉÇ .³\4[Û¸#‚™_úß\µFMÜh u(WÏp ûoŸ˜Cï™~1?â hji¢Õ…´pÔ)ìÿ<¸ÍK UµiËÀrHÿ¢`(¶€n˜³,uÅŽ«fTL÷N:øÙJFèBMCª]†xÅW×4ž±ì}”ðsÿ\ʆf â¥1gk˜ŠU’³—× ¬åQR]´A …` >qxu <âQÀ•Ú(`³ ƒ|N¿ŸtB¥œe\”½Ñ_°äˆÏÜð$ÇÎ˱À4tË·sM[Ò˜Z‹ µºdÞ¢º»­ØÑûeÚœ¶L‘ÖGð#X>h„rlTå….ÔUÆ5kkªÏEàꉨVX¬­¸ßÒQ7ÞK$ ãíÔ†ÏÞ¹Ê ò»±;^ÚL$ÁBFm{·S°VCžN‘nS(–ø¾4c×í)-ÖÂ^öL‰äÍŽ#Jo$E9ÅIyÎÐнư¿ñö• {”ÓºM³nWcÒü1`U“ØzÿFÑŽ.ˆÓŠß%ä"Ñ´%WM§Tž(ùΔAP dAÙ¨’¼_Ó8Ïq¤†¨R6aðÝ£[Á rúÊ& Úˆ&ˆ×é€î”[£ .P¤ÓØìhà1íÞGa|—VNBë…£CÈ›àÜêìGÏ?ãÔ°¦™K÷òê¤0ˆn·,MEJÍ ÜÛ1és¢Ñð°°åY0_m'^– ™¾üš’Ié,À#šnˆÓ%™``ÌèB»Û‡+Œf\¨ûЂhÌò˼̓¥²ýÞÏJÍõ¹!¬¢¸¾ÿu8rFŒˆùçWéHW íiH©Ï—EÄSYœ’¼™Y‡V—8³Ÿ RÒÜÁâpö‚SáˆM}Vùø’(]½ƒ5q1ÀÂ0ØÆ3ÞÏ^³;ž‘Ó ë´çFÑ•UâìDk~§é­.|BsÒQt·@•6Ç|8à赘x2NËRöªï¬œùÞÀˆyòZtà»øUôÙ|Ê(ÀâÕu$6vðNöŠß&§jE#­p.!Ä?²'Ï^“øº4=Rì9³ºQc×DÒ À¶ûŠkÇÑ3ë3\Àsá-Qц_øþ™¸ªq ¿z?º¼Ô£<. •Ò¾'V/– TæPÁ•¨ÝBoDF´K»ymù;Âd•óÐïµBÜ QPl2™¢‹Ä§.ÛþýØs'¡Ÿ4³$}—À9%þŒÎÀ?ApÕ0ðÊ(>l ã¥>`p)ÀÉë  gÝÌ'PJàŒ€fyVÓáô5{NF„Xƒü~œß©¥Ë;ñg¢P ¹6$ Ue¼©[mOPp)eF}ŽlŠÑÉé(8ㆫ¹‰’ þõÑì÷^&Tlø>Yú=iì§OÏ7Å›՜K|?E»Wò¿æÍ¹#? ¶0Æ¡ía¸ÊÌ)s© å5óŸß­Ü ¼÷Ìê2›e¬´è÷<&Ð;³Ä…Ì`áŽíí9#â‹^éìˬCVI«·Ö¢ÁMízÑ-À¾%ˆ '’™:ßHƬIЦT»Eüž…'VfâÕÚ OJ…<µ™!àÆ¸hˆ÷ÕxHh@¨p"C†ª;Uf.ˆ±¬D±9¿´cGRb:Þ¢õ]1sÚtPé?ƒLI!eVû{p# ±€GHfÖc7Z­Vœ ¶]@ûÀ²•1 [å7€+šüèõ×TDdô)mkÛdn"ß4÷Kg:Ù¡Ôí‡yçë´â/Y+¥ Óû’òíÚ0ú„¹4Ã…€Zž¢ûÖ•¾2~W½@o´…¤~Ðgþ úê;KÅ` ý/k¿ÁÁ4Û"xÂJòkôëgÁÖÓ÷æ6îÁ2‰Y|ÚÚ;rl<ƒâ¤­ë6ÛJ‚Y£¨Þ,ø¸sx4<‚—Õ.ÿ"áë[÷$6”Xk~ewà½â˜ºuMC6Q6 ¶kjvz1—d®&½óïâ“ÀS8@œaõÐ “8¼éúȡǤVÚ`Xú†2@Y£ñ¸;ÊÃgïÞJ”P¾Þ5ô*÷û€~~ H XŒÔ—–›\qݶÅî ¼3jd€ë´DŠîÂ9É,BéìkY0ãKuÄ2þFÒ¸Äîä˜ÛPE‚ Ôà[ÖTgf ¬Ó³#=`ǾàÅø=ÖGKæÈýÉGš&(Õ‘|Ò¨@=¥ipÛyìq’â­Fˆ¼žvPÞ©ìe[$”b_DVTßé/è¿&É —&¿[Ыñü>ÛõŽô™C´šãó¦/(Ü`Ú€>žDMU#ýÌœœãöU!½,À»ü Ô}öÛËwŽy-A|Z‘ºûc$Áòï?»¹çV/ òÚ~\j8µ©CA6?øM´8”HœØâ•ñ…$lD{ .¸+NPʱôûšOg».“‹Ú£:X^{M7|QÛS-ïÒ¯½7R´*Q¿®f´“Ò¤ýÐû!(ÅnÁÞR6JXÞãÇ›šj·bÍhŒ]E)`€4„òdIo6üeÝI …%5ÂÌź%…9 @À y®¬{¡•îe6InB…S¶¯³ë*×/ÐÓV…7vÊæÐm„};¢×c?Ï`ÅØ¿ËüˆÊò— 3,ÃDØCu½(¤!órø7áóýLó€«4„ !ãhÆâíÅîO#4 –ÿä£nû•HoÄ’™ótÙ; ‰E>æJfÎPgT¡„ðÕÊÍþ&,ãu³AjDèŒ æá˜#K/âÇW²H7À’däRT¹û:‰—aW2æ­ÊÀKžEüŸ2¬ 0yÛMnB°üÿe•Î+už¥–ˆP‚†%U.Ø”÷cœ­‡E$üFþ(÷L¢t÷“¦Z–üTíkéG !5çzp…J—ÁЈyÊ£2@rQ÷‹Êä¥S¢ý`oî‡3äÙ‘_³»È‹+2À!\"G•u« ÃLø†hWËìóºxÛ¶ØÜ^¼ÝMI »#âM«Å`bS¬[žk»§²\Òý<&_Z—÷C”ÓUèK£h7¢ÄcL¼VÒ"ÔÁÃæ¨¤z-¾3léJL„N뙢uö FmVabŒ°pzÒ`jáJ×!_¥¯7OUöÅù=·V!ˆ`Š0æ-EŽkâFœÀgçþB“bþXšûš9êT3¿SÄ0¬ &ÎuöHKU_³ÙWj‹—_ÆÝ©£ºìmI,ô2‘ÖCXÃȶ„!U@UÞ@D?ëBŸ)DVœaiÃØ~>Ø6:f0¸Âï£' hV³“$áEˆx%ÝÇÁï:IƒáŠn“[hš]ZÁÄ÷L­ÌÇ­A iCßEô‡©ý¤šú޶NRÊÍîá?‡œPt€4OØÛσ$V½òõ…pÒÞÎÇ'›«e OÈÌåÆÃp¢ãhÑGzİ֨QÝÞ„WÇþŽš¢ŠB‘“Q*à T×à CÁäÒg·€r„£p(•-$+Õ•~˜‘(·ùD»0 ”‚) esŽ Q´·Øë„ô:™i°…í…êø è½P;=‹oqÉ‚þS–¹IÜÙ¦ &ê=Ù¥ìH²kú9äÄ(wnü ù–¸•A7ÅŠ¿¤u}ÒùÒ×Ã1²ŸæØuÉåãˆÐZž|W°—'I3’a°F:0T˜·t„P¶¸e~ß>!¾Èsñ3uRÜÒГ€´Yý®~ÇìÞVX2tdš’Ë Wõ-ÁµuΨRÂDNãŽiJéi£Î™6·ò¥”ýŽ£ÆØõdä}ÐfâÐëmœ3r¥æèPüÍËþ ñ øÖ¸|\ÅÃ爑²+÷Gø6çÓ¢"£…h Éròóv81¶ 7V옄Ðè‹ ”E’}#Ç= ×ÖêRäç|-wEîYO¿,Ž<ÎhÃxJn¢9ž°Øçqü:” æêJƒ¾YãÓ@»[P­ÿÃq[ºå"é/îÝ=Å™•ŽÇj$dÒ—S‚ÙG³–ÆæŒ¥‘uÑ@›Î@ߎ»œhï¤*¤šMÚbùë$2ŒÔùÞÐÛh¢bíg¼Æ¦•sæU¬ÛÙº@ÿ!\˜¤Ç¾aþ»C^BbÐõ[%©JóÒ]fVñèžz§¶Ôs8Èg‚7M cÅ#M3 °:×™Kw¤ô¼÷#³ºçåÑmfŸG,eúãßÚÂÝŠ¹+9†43c1Í.áÔ×ý[ƒ¼j\¶Qe4P8&HÓ=þŽÉ×P3×¼ /‘Ÿüt/j¬ÕÇs—åÈè?IÎUFfÎ;b5¥yw“|ìÜË„Xñ¦×w)2%aþÿò'®4¿‰yçD.oSÒ%òM¢¸¶HB j Ìl%¾YÁ±ñMÕ $àíüje[˜½öx¾×Y‡Ï€´ÄM~³z5)n<+&zTcWÛ ¸J„ÎuvGå`l¸ôF1+uepÄéWèŠ|=?áÿ³³¦û(Wã~#ŸìÅ ƒ›lOsl¬yÜ¢šlg{ƒ4b“ÌèŒ<>G|œX¼ Åź^ýSÄ4A$‘^c{Å>‡÷NQ3r-çX!£-B«kƒï°t’æ)D—yIã×ü"w}¼v@p"t<Ø>™p$]2"™ÚiCÝb-•8ruXެD«¯±‚0 ÒÿꟅÉÈ«3‡ù•O`¬-‹òΉÀ\µCTÿX$å(Å`C¿ó-ÆW‘zùÌŸI­Žá ß%4ÕN²ìó%ÙË{Þë*»3^jlùäªp´M! &pó.Ì×of3î%KQN%;ÌZÉõF~gԮƗZ„ç•×EJ‹¼·p‰gOyÑl­1 $´jÃkõÄ vJⱃÝxí‚­º)Å’„ŸV‡¿éÕÑ àÁ%›µ u yMmÕÝ‘ƒNPkÂmKQÇL’䃭Û'ªaÏ5B­aŸDÉgªÅ³²Ë¹Nü”J@ Ž¥C2 …µŠ¹šÏB%NuøÛ¨x0¡t[òS¢µ¯Ùgt¡¹Ê˜¡µ_Iø–˜R¾Î1aHxä% O• ûψt×oædàbŸx;¦úÕËIѲ2Ã0xjPy¨?Ðv|çsUEÏ*ÌçØ 2 »­Íêz¹øþU˱˜h%`4ÎIãe˜xè3Þ£J¹k"ú[?#”}ç*œ sõ„Kßë5ÚýJ7„.}]É»÷³¾_µ±1"jÓ\ö„C±í(`𔑛Øt+\Ù½¦ÜQdS9ÁEsãcIœï½jy“‚õA)u­.έ±FÇ~ÚIJÂË+®¾ ip-å&•7cÎYË  >¼›òV‚øê#Hà߇ÀEÌÍì’cuô} çß­5];Í„…ÎS^Å ^Ô´vÈì·Óœž½yCé9{;Ø–ëz¸JEv*zïdã/ó§ÌF5½mÄ|‹„`@) ñæëÐOÆÇjã( íÐh¾v¢è1gí¡Éîo„Uk†ý¬!ÂA³ñ‹škç"ä^¦vÀ‹Õ)EºŠ’~EHNÖ8þ k¼dG+*ú1õÎŒ¿œþ—Õ[O‚®µg©²oïAíÂ,´º«uŒ- ЃY5ÙáX}7Y’\8b[V"„Jü±pÑ|$;«á;ï–à-¥GTNéÀv™ozŽÂ´:¬Ï»E ¸U½ýQ^ÑŽÚ‚^ˆ’Lõ*ŸN˜ñË='\Ó;$ÅÄGmË ùqÑP˜SÄPXAZnÒµdg°{ïÅDíbOO¢~ZApdf¶ècQAJ´×½dåwQäaA¸9Äç–—(°å: ,Z $‚^å×ç=Ã!\ >µHÙè‹u%ÂI¸¼oÉË=¸¾M`¥kjvXFC?ðγReÎ}ø­§±¯ŽkúHp=„Òº!åÉÀ(ÀRµZM0LDgYà’·j²l…÷WÆÒ‡‚ò¿[.ú•ø@¸ù?ͧã*æ‰ö)è‚™²C½ßÏP­-T¯í<¢ßðJ™ù¥ ¶Ä\ ­ÆÌA’…ò0Ä­EÓ[MõC-ûrzù©¹Ží¿Põ®®äÉQ:MNýšGÀЉªí´iÒFø!“©^œÀÑ™¤P)Õ©ˆÒ`?ýì © Š1¤ ižX Qã‰.¦êÂAché);êCÍ;m§Ó—šÐ†0åߢЀJ-ÒM€JVð%” `Ñë Eë%ïd‡]ˆê²Ý-¿¸‰sÚt‚€‚â´—­ä¬‹aêœ@áßéŸZ áiÄ>к%dŽdG¾ëkä9{µˆæ?¨štÕ€³ñf¯$ëÍIFÖLüö5…†S:æÊsì;VÕõFcÏD¬ï¾ê‘Š¡g*q¤{¬-º´S'›~-éº?ç!¾äΙú?X[l‘yƒ¯š—F‚es˜ò&G« `ÉI;—{Ø„´þŠÍPò˜ú4Û‘Ûk|¢¥g9¾•{Íb–¿È,œ£ÖqÕË—Q@ù`£ýX„ÏÚŠ²mM±ÈYœ£ƒêµ&ÚÇïÑ5†ù%I~ÕP°.pH‚øX/Ýü”_>È ¬‰ù¦Td©Ùež5(·G3ç0ôÛ÷S„|ÏÆ¸Ø½ö&G-ys ÷PU/½Ýá ß$’ns&Ú7CÔ#^LU€vÀSg®eU¯TÑò#ÃD â€c½>úÙ“«–^Pn8 e»4§¤À/P ‰`B&üÇ‘[–kZæŒÎÃÜ™9*#OÔYÕ+¡)RI¿5Až 0@áû³ÐÚÀG ì±[öH¶´x Ö×g‰(ØŽ’e-V¬Ä`¯ù̾Ì5ìN§$×xh"'@ &­†^yq½Q|d“Øÿ à\ª+N2c•»VM Ã*XÄdWjn<*Åô·8iÜÑDÆd­,hFØ…é_ø‹…ü3#€ÕTZ\«WÆ987•"æß0¹å=KÖ£–|ÌÜ2â²·*’%çºñÓ¾‚Œ¨J£e÷<^Ä1ƿɨ4œ‰$êÓ¼²¾¢we”nÿå—™¾G’†+EV¥—jºnÚp3Ó0jš×=±Îé  È7hJ97Ø©½›ã©%:«âéh±+Ùÿ–ÞõÓ ‚,uE©ÛýyÉg†Y˜ë º"ŒV"äå'ˆ‘É"(=gúôØæLœãÃÔ”0àë2¥Ëé¹0ÉWà3+Œ¡)n䫲nØS)7Ö¹½…h™·(ˆ©/#ª0ôÙAà?ý²ÕH=(½6±ü«a¾…AV¿[2ãÇÑj6Bal¯ù€¥<ˆW(®› _®Ì]ûèS̲äbºtò5ˆå#Û6¿"*ðkÄö;%Ía¥¡âma°"<S¨ky€_ƒ‚ÃçL¢X´wA$oÉev¨!€Wš DF˜½¦*ƒHëôH¥„¸µàneÔ`­§çú΃Xê °% ·â&¤W"9&t1!ÞWJ™l`ÅDá‡ÑÍ@¾ÀñïE%­ôÑÎÑäµÂ.Í cEE}ˆä`a ¨Ÿ^‰O!UÔdçod<Ø„Ûg 1×i„7Ï„rIÇs×êU†­àî¨Hh~Þì^T7AˆI”Ä ÑHŸÎ☃›è’ÚwxGáÝ[ÖˆIõÏÊ3Mfø†Æe.̪M[- Ž Á³N¢; ÒºxYUœ´žK™,âVN–¦kä ÀrI°³Ä" 5S¬ðmͶð2%n’7…É9ò­ER£¾E¬Ø ·']厎Å…Ü:p<âøYÆÛ¿0ç7VmÉÈo'ÄÔü Ñ‘J›Ü„—œžÆ8m³øÆxï²ÎéÙs›Õôi‹ ÇÚÇv)Râ}Ù“Áóg›Æ"’ãÁŒúØâ 7šã¦VÞSñò,Î"³}©;@!ò'gä+Ûü{pÀU# O‚kœê2*OËòªÔxö]˪g½Mü›|ü.©õµÛœ˜ô¯<ë­ø[3vš?vÉBeY_¾÷ë”/œqWômh»>"5ÉŠPÄ‘@fa®}q¬æßQ|£çctH¯DI²(¥^ú¼ +Ó1œ|]Eú* ó˜ 52Ñý\  4Dâ¨4?'„/‹Í¿ëþnr æð×¾\#ø<Í#rî[»Æ†`w:Ñ_ã^q¦óù›®¨1±|ŒØí¾bæõæ¶ŒlÞH rÏûý¡ˆ¥½­íHJù1™öNk¼y—!]L9: 5 $² f 5Sgü:-´uÞç¡Â8V¼Úä ^zûàKCK Ó,jÛ2­Y zvyMŠé^¦ìmœ ‚,°²].Rljðn¼xhc›†WêdiWÓé± n¾©}™?šÇÏŠ{é·)ÙÓPÓÀØy/R»¸†Ü–ƒ»DÉÐ8ÍPÛኒ¡8œ…B¹¡ZŒ’J6V……â‹Ø‹™Éö^B /ç:íÛ´@—hè»Ê5zabžÈþ;ݰ¢ÏK4CWB¡z"ûà÷âÛYùbÌl·”eMJí"ì+SV431 ®™¥÷6_°9Ir‘´ÝØx‹Î¡¨ ­Ò¢PG¿»×³ÀÞžÉùÈOÃY Ç‘wš·™ÀŸí› åŸÄ½*é£À Né¥ÊK“ÓKä¿–¦b”jƒsœ]G!9t5ðÆú†Püæ“3\‹Ý®;Šh,q¿øãõà1+™q6muÌ®ÏG.‘°Âh5ôµjEf ФPµ€…é²ýê· ËY‚ìÃZ/ çÁMZ%*·¥؆ÉÉãmpgìQ‰•{ÌþD‡è6ï  ~w4#Ǹ—gi·è´šÝ•?QÀÞ°DRËþ™Ü)ü»9ãên±s‡Òmí²úUpbÎmª[¸>”*„1ÿµøjâéh|$u‹Ø÷*Ô¸Ü|¹t ƒÆ«÷tb·ö\Áx€áÿ/è 1sL± :‘Šãþʱ¥£‡Ç ƒƒ“'3Xš¾¤0:_¨2ÏpÁµ@múɱ×à3?æšSœ9¤©y"ÕT»Ë>@‚÷‚„l ©1û›ÎÛ 8= ±M€û`xwiÈ® uV.èz:ý¸°[±’ƒ6*탡1X"Ę{°üEç© f™à oa:úªÃMk­uœ9+ã·ipéeÏÁR"Þ]Ôg›@ èC®™ojr´_ëÊwµh-^HÜÓ™Ynª›2Žñˆ+ÕåÝ“ ðôâö' h;£u vÍòÝ›EÑdº ¨7¸[ ÄÛ2)±ê)Ä?îó üT+P7¡"å¥Â‡òFßZxÉziü8ç…Åšà&®éd oûp–6ö‘jNcuä!*[Òê{H›ÍÖýØ;m©dˆ%¶D¡ÒØ9›E”º3[A]ŽâÍ~#õ‘ÿñ~/Ý=â *0óBƒ%{RLÀ; rð‡6éD0„ú˼;RýÖd:Ї—ÇíoÀyê×Z›.Ï_s“_µ9g'ÉM¸›jrp:¾b`‰û†•¨Êô€Âë›æmèj6ø0\Èëè/w¡ÍîEC:0ÕFè~X¸Ç­¶Âüž3õ™B0|z·ÃÅ ¿*j” Z„Vüy§}s3ÃLJj‚CÙô3¿0«•?^{jr%­'`†º9pÌ2¶ Ô$ĆPáì 9¥Mo¸Æ4îWpöÕ¬¹C)”ë-˜S„Nû{Ë42ãkÒúܽMhti¨Šbнf¸Í;©Î–KÛ¿Ã-61"W“ËÚwBž5StæPëzriÍWs µ+ÅŸaH®žIA3èms3e þáÅ®½o ªøFxIrÜ m`»…w"=èÒU“ÁÒÞG"Ï1ÂÖáb ;øÛÜýªÅ·xDþ£óÇnY»¥ƒ‰M ¦Á§â‡Ø»ã„¸ö`ƒÆ …ƒ(µYpÙ·#G€f,¼êwÙû¯Xó5#qÂ+¨ËsAl¢øú/Ògò¢+ŽLHßùÃèû‘Ìvÿ3\°½Ú["q‰—Ó;²Æ(õefÿX]ôz*ÆË?{¦´¡{]P~‘øæ ½d=@E®Ï‘M– ô´þ·]º=Ö"’öî•Õ(°Ëäj³ïMñËh®ÑbV„ØÛ‘ª…i: ÑÜã#€æV¶aÒ3³¸0âx€¬š¿¥• ¹öÁµ˜[F4á¯sÐ\ÄÝ-î0\ãýfQȱ.ýS+¸äÔ´2[µ“JšøËª-é­¶¼Ò—w’$¢L6²p˜Y¦æäm‡èŠâ%W8øfP°¹ÐG˜$òÒ _ƒÎáBNù ÐÏôéªÏõF*Ú‹…QîÁ˜Êa‘Ä„5Înì¢@T¨÷Mˆl G¶=ëù/µýV;±‡wÖ)¤Cš[ï%úUQJ<óOe½¾¬*é¶ù™ ÙTÆ53;yéY½ CõA™¾Ôú5÷V`C\Ë¢w¹‡ÕÙß¶•VšE"r‰¥ãhjä(B𤛧¯cÜ*Ødœ=ŸPÚ•|aRv¥Ìa¬Î˜¤ŒñÅ}ÆÑ,%âg|c”@¿A¸>#þ>cÝ- ´’ÂC\hè`Зwk¬½° 6³àÏÀ{í.IfÝÀ8«þD©>`]l)þœæ?;8#»°K‹¿‘3Ž[J¶ö”ºšÇû• •­ñÑÅi=6R-&M>óˆ­€ÖFÞ¡æÒšå—"ZSñÒ?úÞÝкää ÂJ°0D2pßFî1´[|ðCTí²¾q>õ}G=”dSGhR®~âó8A6BË)n3R\=þäÉ4“Ë:°G&5ý®iEÈ£`¯ŸP¤šÓUÉ„æ[”Lª·H ” «ZÀr‚Ââ·ÎÓW¬\b`°¯oNE®±ä¢*S%„&EHjºþ¥ž‚ª©Ý¿—\ˆØ>Ô’µ)È™¬Ì‚„BA+óøyÄWEl3;Jêh¥!>+:P’ÆeB\ž“wh»0ks¬n-·m*ÖЩýr›Û”ÉMâå{=-½¶6Ö:+”´®óÞ|‰ö/Œ¢~Çžû =tÁ¥Jv‰öЦg{<h,ån;̪©J«Ud#åã³wo1uèÄñ£ºÆ žÉù…?}Рu­]ôù}ÄÉ~NûD~ò0ÞI¨(Q‘±“ŸwRDÏšS¨%ÂÏ&,‰‚x Ÿ¹ÙL(°¿âú8„ƒi@úø^eÉã²°izšÍê<‰À®Z¹Ž¬û gÙ½Á7­Ê÷Kè!mŠ [ל£\<¦S°Sý!UåÇš…þ5'ï×{±F.=›ÝO*õññŠÜ¬øBy æ<@ƒwf–¯‚™LyÐtZ,ë.»ãòÈÔy[¾@¤š˜9@ö^¿üN@­›2MѪ,»g¹ž€Ó›ÿÓI ¾€îÖ7¦Þ–ˆõ– Jªìv»ÅŒÈ‘—Ý ,à¨708Óz)æÌR¢&‘)€GÜUdËuÚ­|8˜f´‘ ’Ë=ŸìPî‡N”v퓈[áçX?ùÔœœwM‰ªMÙZØÇYpõ[)á*$d8Cr+ÒhÑ` PŸ™°´æ#ºš¸2ͲˆØô~ÇæÃÊæéFÏÿVÀk‰¢r]÷Ô¦C£îGØÂ{×âÊÇ<‡âA –r@g*榀%ðuˆGð•?ñ1«†&&Ûv%s˜ü0Nµ³‡± ¾¨7ÃÓAMÖ™pf¨$ô ℤ  , Þœ›«l™u+w?ó²;ýKdÊg­j|jrRFãÀD°½áûŠª,É—ï-?6†iæÀÐÞâat3ZÂÑWèÒóŸPÒœBžÝùçá+’¥ó#+®Êÿ·Ä`’âr¼ç|Ýt¿­AáüÊŸ“\9DS{Õ™VjÌ\o@"¥œ´„ûxe /–üMxðÙIïO䈶¯‹|cʽ˯ä©ÿZ&нÒÊo'ÿ Ã1Ú€ÉZ2`…NŒÓÕC$íÀª¾Áßa[¡?| þ•n4ÊÚé/á´ç¯§Ç±Z½TâÊ¿C¸§ì—–ýé µÖ±~ê‚›ðD+"cÒ[NhØ«+¦Iq¿Ò„lÝnù(ÿ‘|³uƒ8\j³Üýľ,Oèïó-ôZÍq>B–9/$|0Ñbµòz;å%Ôã>Üx)½¸x%çœF^k|N±›¨ƒj?Õ=±€ÿ#,å'À!†æ–ä…¡xcÐ>äFXä( Ú¥ZH¸ÔȰ³oW×YøÊQë´kQ6Pb*wóÑïf«®bmH½®šêºÝ¥6‘Sšð Qi¤m®8ss´\QÊ?$½T“Ë0]²ïŠÈµW‹j®¼ë’ wŒùùm ¯”ôr¡ô °Bt}ê H—,ìÅ\Œ¯q&Š>fì:M 86†q#_°‹ó7)Iä\÷ôI¤ÐМ¾ È9lEà£EÇê†c‹5/‘+úÿlåˆÛˆ×YÓ û3D†Í.¿zkß?ì›ù³*ýûÝP¯^ÚÈýêÒk‰¢éÿZ‹­•(d-®Þ]äpÈuϲ†ýFwÉ&F‹ÌøßW-ïîPíÖOŸˆ–j)Î$‡ÎvCCÃ)•&åÇѬ!å­³œ¶ó©ÛIŒAÑê„æ,µd¢DZ<žNäQÌß“«Þ:÷½ð)q”3¡ê…¹ ØuÉÕ^o‡ëg,&¡Ã©Žâ8ªÇOÂøè[Od´Çþ< UòÃSœ°È ã÷ܯ.:‘69†ìÇ¡qÉMH³%Á=ÝYÿmú»ü&Ûbî/™ŽŽ5N‹ùbæˆÆóqƒåµÂ‚Xòû¨ÀÑn¥I…´nI¬E U“¹6׵澳üØ´ÿŠÚíË:–µ‹Ýt_ΞÕX£“ÄŽãd $ZŒÐQÀql¤,‘ìÅýC³g—¿!Ò¾Kh®Hc!•â`±H àJkvÑJ[+ñŠ2"~ÜCKLGDNȶ2Òbõ¿®2ñ¤æ´áŠ•cp›‰ŒUŒ™©µÒÐÐÄ̈À¯kÌ  C£O„®QBÕÔÌt#*݉¥“ CMâFôµÕ¹ý)Þ)ÝÁðÀZŒy<÷’ÔzÝ  GHbŒ1Æ£è#‘ÔÓgu AšM!XU6 E…%Òè@e%Š> R" –Ô°I%T­ñ¢¡’ÂbcXU5\­É5¡8ˆX½&wÃápÈ|r’ £Fí%®Xšø'‹ñEµù$Z[«|raøb—90Þë±lUøÚD+B<@:8„ ;HºGçY8.·hA3Í9›œœüç“Ï&'&݉ô•nÉqîîXžZ•Äû·Ä"¹Mrñe1P¤ñ‹k4"Ñ,ÒU©ÔGf¡ã—Õc˜ÂOØAKù׆¯ež¯ý¦]SïºîüŒ&ÐÔ©¬½Ã0Ü›–…Eš‘iJ¿²ÍÛ>Œ;ÏÅsç:¹Lm†¶0¾–…†GSƒ/¾n=—Ï¥Ki B!?íâSÍ¿iª]|:=S9¢”¸Ezå7 NóÌ-_ÂMúT‰/eÓ«sÇ)†ïUy®eaÆ)çìïý[Þb§žçìΧ>9\¸ ”Nz‹·¼·Ä÷,óyîzNÏíý5ǯ¹ºwÁûÉiüè´¥ic–Å욺ÇÅ| LwÞà æƒ&î[ù9›~Þ›znu±9»‹ï5Óœ½æþ—™áÀ‘¤Ìý^Á¯;M=ü®Å_Ëc¿æ™Ø¥”ž¦×;Ÿ´v?ÙÏ÷OÇŒM1ÆXsÇX]Öuy*OeãS-#‘DýùîtbÍ]Ä—ˆ¯½0˲.ÌâÚt)=é}¤‘&›J){3ÍÑÇ…¶xÕCM½-œñ©§Â—e]Ë’Â,ÿór“òwr‘%w:šÔ2µÇM››×®æjÛâûÏ u:}›(äɛǚÞÄy«aN Ó"Ó)Xó–a:©¶¹æEF}]õ—{æ{òÉé ê´=Je‚šçÜPD"‘‹ºšpsQ ñÔôU«¯åÏÚh’nšJk™–US8½«¾^¢ÞÒsñ\^6Ý&.m ×R~^¸˜’k;þKîªi}Ï›½ÿÖK´Uvÿ=þöûT³#Ù•µuöœù³+eYY^—þRNi¥”õçÌÔzZöô­œ·§–ÕߊõÔkR9f*ÇûÓ9ÆPÍn¡ÈyNóyÕgܾ”n¯çÂð…1 K\ú”¼VÎn+‹ñ¯ç¾ï.RJ¯¹A`(±·I_M=M­/ÑjµŒ…ÞHfûB¦QXâ`´LPÃÖnf³ú¥ ü¼û¤üä*>Œîœ¾*üº3í}¯Uo«ŠÃz£øO霽ü¸žêòüS¯ôgוfÉïû»½÷^ß¶¹UJÿ§GCá»O¯tNÞ{»é]U±ß—ù®•y¯éLͲª a7Ò^ËþÅg|^ç?gÀMpæÚ‘•%z±õ°†&eSy#îëËãõ^XKð×{¯½ ÓQüÍÒö±YÔ°µ¶i…]oû¤5‘Ñg”åÝj^ÊÛ_킱!ÖÔ£eþ1÷*eŠ}‚hjÙ[ÿ{ߎ¢–‘æÔ|ºå  S·úÖµÍßµï³Çm5âè=)E¡ÿ;ÇÑÔÄX æÏé[Ó|!- B ˜ G(hD‚™‘©¥Röò¹küÍi Ã÷ «'Ñ WÙptÚJ4”AUÔli_‚“óú•%ûÿ× NÔ‰jÙœ9eOOçÔžºÄ²;%ærüR¾Û²OrwkÓ:gÓZ•dîS]Œ»™a¬©bž‹¦ú#ibdަ41¼4S·/·-†©þÄ—Ù3•š”s†/¥×:gÓŸÓíuáÛ4/¯[‚YÙ4KíCœ{ºlú.[h˜ð¨ùzáH³@ šŒ%q æqÄÆHÈÏÇÁƒÄ9&Bi †ÁQ†@\ÀÀŒ„LªÛ8b ±Œ1ˆ’ªÇȉH·ç ’«}¶aN¡; ¾›‰Y¾Ÿq黽9ùå¼ÿÅ‹ð†KRè³÷HN\ñ "c…SAøüc¬ d¢šÒ§±ÅOPõwðÏó·7E27ˆyÎ#ëŸ*ƒ S%,)ÖcŠ>tù¡8=ÂpM5&ŬÚÚîRžÍL/ð/¿p„ÍõR@¿oÊiä° [÷æ N´2Ž—5[Å›Ìèºn¹ KGp·ËÄ“ÎLTþÀ“š÷c°¯<”¯Óx é'VD.$Š£O ˆ¸$úl%G÷LTl b?Ûs.*°é{ÙÌÝ6IÆÆª¨Ãjð÷kHZ«Ì‚^MË´Á5àI%|¸¼êÝÌË÷È+þ"úÈ)NŶ{èžJdîɪ¬N¼„ž_6&l–|&€K’Ù @ |ˆª)ä©|¤ÅïkXZ°é£è[k3² õ°8aºë =œ½wó€aú Úà ®¸ßsº*Òá5´³äæ¶:‰x•:ÉrùÄ幜A·–ùXܨmˆ¼Ú»1—­Ñ_Ý‘y«â3³p=§îc:%!!qE„¨ÃÁ‚ã‰ec¨òǨ( š7%uKù9˜âw½¤EzßNT¬˜%ærwÿb”´@yèß?Àp¿¶ÌsüTz@Ÿ‡â4~Ù‹a-aj¯wE'¼£ÙƜǂ$Ôãîj_KC9Zo戞ôÝ W#ù7šðJœÖUÝkN򼓿 ?ûwý¤‰¥ö¦†iÞð¯é'”€ÄÞ ¼l±(`‘I&p/ Å’UÚ’æŠ\ðš Æ•{„ÁIYÇÌ8¤0"Ö ï ïð•ØÞ·wA{&F˜Ë¤]Ûª}ä&]ª„È d%EF e A¿}WE>½”‰ ­a¾¸3¹ýjW¿CÏ'q$˜¬Nìïòf.§¦Æ§gsɇBìý;ø¤k¿Zï#×8oÚ«ßwá†n©â£Ü²"øÃt»¤74XÄÀ³ tÂ[ð2î{·Üк¾m'RñœŸ4e¥ ±i*òÆÿH/ªÿz"÷çàûvËâÂtÌVIO¤ÜÖ&J–ê`ß$fóJÇ£¸€ˆŽÊ3Txé›çL ^y#H¯ 5 4xîʇ,’¨Òš•šäS¬w}ŸÕúà ÚÉ ÄêvÌbç'an({ÆÙm|LÏ'ÏÀ­!¬5#lÄ9ã—¶4ˆCL‘…ƒ¥šA<Ö;æ©DV÷éKåX8·}“bÀ)sk(â¦W3[Û•Íæ²ð[×å’0ev°‰ij vÉø®b›Ã±HQßÔüíó`thL[¿ãˆ“ª{]IqbR–sÄ $|:‚Äš¼¼RÂw«å@nÈQ¿1—4‘D)h·!*Á ˆÃ0)#ÜpM–m@=Í,‰õ÷ý/ºiagxa2íÞóàºóF&É•/h\Ì¡4‰v¤Fš«^)3×Ñ#O¤ZÉ_¼Q” Œþ“¡Ì¨ý†Aœ4Ÿn‹\n?{V½2O†+³/Mcø«Pceê¯ÁX£?ß æˆˆGÔ„ªyÖ*ë§Ž¾Â2 ð!ð$#¤«žëkˆãÃrT¹Þ‰W­óÃó±~ôH§ƒgƒ'[ýÝ Uß±?5éÛÚµWháoÅ1J{BV?+þn>Õ±q?aí0`ín²xkµ´ù2ºÍæÎ^|ê}kVß¹cÍHçQèÒ°E]™ïH|"‚ük)c¨,޾¢þê¡(+m0»‘_Õd£ÁÿI¹¶§_öÍ#‰Ö§6|Æâ ßP‰kÝ•CNŠÁ2\rõ†n¯ÆaI¦Zæ·ê᤹=§ü&/~ŸÕ) Þ¹½½ÝœÂæôµ¦~˜š€œtÅ}OÒ¼ ò)@|¼áQgÙ€¢-©Í~ì­¡ÚÇáíâaSŸo1úîq‹KŒ¤³FF¼|AQ.ôà Ú+)Û’‡KVeR«B¬ c#©£j$»}M+Š.]%´’';Ñ(p…ÅË;MO¾A“XyçŒdÊÐDˆ“ï_“Ïä{åâ>“µ¬nÂ+7¯UÕ´ù[tÄbˆyׯ3…VߨðJúæØ -«6•Â.=4-\г‰8I‘/ú‹”×ÎÂG›"Àq„™ Õm%Õ¾ qb#ä°ç¿Å–v2<ä]mSbìz^#muÒTÛL&¢Òv˜òyÂ{¼÷>¿=U}ÒsZyÖ=«UyÎÜ#jåÞÞ/–_ªs„'»ìø[B‚¶ßÐ}ÍË —EZdˆÁ¼#k® Žk-êã3ÔÂj9 ¢vc~ÕYþÞV\kgÁå#?)…T‹A²=ÿL4xsæp$>…UÜr:aœ™‚iðÄ© K©Ik,»,7kª,«÷ÜÞ\ס>9˜çÑUý”ýÆïöRsô­Q tСñü…¶¥>&ŠoYŽÝÔIÒîpCƒÄÞ"§ù‰ ZúÍÍm[Œ"”4X  °ÈAß !Ú“mžÝD]y«¶QÛ)‡‡°ìúð6¦Çy;m¦á‚¥û¡+(#جώv XŽ{¾ÆÙ ø¤»[M£ŒLŸ!Û·½Ýt+ýøo”·)×.[#†Ò‰µäÁ›]æRû3ö¾óª>ËG_'ÎRP`?(Mä[vþ[+â†8¼U¶ô#`JâZÜM0g0qI."üàCóNWi|]}O×±‘Å- Ó 7Ýõ]öI;²„Ê¢äù+VÖœþ𩆲3V*y°Ž­QÎ~ +‚¾Kê8ËT»lòƒàŠ˜öouzCye64é ">7Î4ðpödV½a„£äE±ŽSg-hûga,fáF4m|ÕÖHÍé+„4`)+ô¢KÆ€þ,¤#yg0|äàÚ°hKRÕ´;Çø§u÷ŽH½Ì‘x­¹#¹H̳3˜÷Hz¦í%ã›e.'dɘÞQG©kmÁçxG?•Çïë`ŽñÈL¸ø»¸ºíØäoCF–¾¯âRX%€>âÀÅ2‹’Ã7àÒñæl€ÉBbzÖÃøÁ”NH„¾Õ¥vP¥í ÿñÐZ*¾Â¿òMš¶ÜuëÕÙ²Ž[íûzW£Å0f‘Ï&"éèÀöFÖëaÏ|Î#Ö:|StµE©hÝ‚¥Õ*¶AÛwMâH¹¬Ý…ºÌ* ½Ñgªï(ΞaÛz½ÍµK¿+'hðuÏ*³ºÆŒ‘ȼ𲠼[ªŠ¨04 ¯8ÊnÚÃPL‚Ë» N˜Gò8å`I^~Õ;A:À`%Չ爋—ÿØm®…t œÂãzUå<óqcY ӶjhQ´.rý >OMôª®¼¾@Ú¹my·îS«þÈx/Ú'*ïô•¦¶ÒM•ã,’ù˜¬Á'8ëýb¯$Ùæ GPLèO7¬¨jhqÐX7K»ãŠA]y>Éë_ŒÈõå‹Ü82´¾ ØÏD =C­ÀˆOyÐxé°çU¤;¾ºCkŒTU5æs¨ o f¦l¨À o’Â`d¥ê¸Vë*ÝÓ÷xy’b„šŸvžhǼ?±@ŒÇZëBH„ ‰Â ñK´”<5ìAIÀ4ü%p5—bõE¿_¤ã‡ ³©†2 LÂÅÓ;ÉÏ¢Zg• ‰ƒv©«Ø“ó.UŒûm ]OLš@ ÀõŒ¸ÁmŽ» ÉØm+ËPÕKÕ(‰Ž"$™½ÌÍãtg¬ö_äú?‹É£HSu‡}Üçb>Jö”¶†¨;у 66\ÔI*Fþö¾«Zl8ÐŒ³*$ê‡'¥Œ‡ßØKˆ~$W[¬µ|"X$5‹ÅQ¬œ†ÄDBÚÑ[ acÉ%M’I߸‰.·d#âÝO»×G'¤§uŠqD—®‚7ò힆{Û‹Lu~ág¥¡x|yçÂRÀDîÒ³x=M U’ÿ¸DFÑ&c8ÈÞ,…Í4‡*ì±Q¤ SÈàQ¶(¯¦Z~+& ®&¸ê¹ôyO4¤ ió‹DYiÝD쉗[£– n&yŠ8µÆd¸`s»˜Ult•’yíÎ4§láÑð¯®Ó„‚ôu•mc©Åj9„‚É"°t§VÈb¢á®ƒ!çÀeÎrþãlåbÓ»[|p`;x¡Ö÷Q¤±fŠÿåhRæ°†°×ß[漦5#CÙCoŽõ—GbÞ¡ÌQK¡-ŽrÕØvÞþf³hY¨jty|ÂçI5E¥(¬1uéûº˜—ÚËeÞck_*_°Ó†Æ3ŽñNé ôdדˆØùņXΫñWv½ÄYE +Ëå:îÛ*ª¸…Š ²:ÃN˜Ko=ŒZ¾¥Ñ<ô{µgŒ¨þùä°'.\Åíá&éð {ùN®÷î(ûmÝpó_ÿ2«Ö5aWHGâŒë†ôÎÞô2IyÎ’Ù.Y®…šƒ D°¯ƒÎÈI¹GÞ³Îò¥Þ`t#ª2úåÑP,jHq •Hµ¤¤t_Fú§1‡u§‰—~3A0¾j½a–s?ýaÅ~Cr¨]£·á“êÛnqÌR ƒõ.Ï“ž÷Ásœ…Î!"jñwT™ÔÛ÷ô“*&Ü_å€ôïMû{2¸ìIý•aÂT–DN8€¼áû¸,Žì[ìaÔyA¯±èr£ßXŒÀŸ!Ž Z ©ßRÇ´ †Œ! ‹}“ÂSð0:¡Û˺ÍFÓ¨˜´Èxz…ÀŽjÛ"£6„ßÜZúЋÁ5¢±õ²2ºWÖ7PsðüÞûÚ߄ʎ#ƒ7±ÜX·6.>‰,RЋôèB‰¤ÜŠ©XãR¯NÅÌ훋ïŠrwoÝcÞáÜ>í™_þr¯G§œ†ÜeäNÆvMÝÓd™zå÷p4L5BNù~™J7+[ì«RÙu'ar dœÓªüÐô¶¶ŽË±"Ë ººujZþºèy~£§[rJ¦}ÈMOgA;u¥TõñÓª-¤`BK€f«ò¿m‡»T”ˆoÖª')@eIŒ€žäzþ­BÞ6u6eK…’Y9Gx-X™ç+Ñ™–>Dýjh˜£’Á`Øï†¹ÝÜf@éÂVåÛrЩmç ½x64v¸A‘)–ªê<,³ƒj%ôí ÙFn^ñ('=ï¸qbevÆÞž5vJBÁž'Y½®KO¾€íáßžî$XÒû7ùlúëjQÚÍë¾z‰kóÓŸÈñí¿û¤¢÷Krh¡PqbB]6¿’#×–š·]Ñ÷®àÔph¬ÏÃ#b–‡“-d2±°hY?9,ŒGÎUÜÍŽñ£¬‡8y nϸÒ÷^ˆ €K…æ½Kpôþhïb,åDÍP©ÓÁ&R#a¹v7Ÿl‡cœ]ŽS^­SíÕZºëËÁ4H´ÇPÍý7®™…üStpï4]©qPzé˜8z$>Žˆ+ïVÒ=,ޤýÑsLÀ(óG£¸’I¯ÍûÕy®û5i%Ð¦Ý o Úçlehsl9aÛã©‹¸jš‘£ê柅UŒíZˆmLJ£¢mëi kùÅќݨ)¾s Â:ìàÛ‘÷EKÁ¡“ìpÏBÎÛaEÛ´xäÚ€>ýÂXH.W›YÅàÐS²<-pX†„‰´ö Ò,3/Ë:¨Â¯}I©[ùõ¤Î2ÖBH!*=ºÿ š_.zå&²HúÕKÌnÕÒ]5Y³öF.—AàxÚ‰úžÍ¼¹p¦-R žA9ÝãÁy·¨L^NÊÞ“25Ãäñ$_B’Ñdùcáïµ’l¥ÁOâmjJ¾6ƒI;93öcÇ«¹Ø¥C»¡cÇãîD÷š‹ªýqç(„/Õø·èAŠ›¼ï˜ñ^ÎЛF\@"ÙsÌ¡K?©K»Ž÷O âni†ÖîA—‹'ÅC“†ÄË©8lþ"Îèwn”X/b…Ù¨o wÇŒœ‘q5fdÔc©œâáªÅO`ÉS¦03N°O‚.òv¿rÊßÖÖÈ ¬S?¿7KÝf C:u|,ìüöur4Ê+Ù|!Ér1Ral' º¸­#JЬ »rb••643ñdaM¢!†_ÇLd)ÙΘ©EšÑ›ë5œÓÖŽ[Ìv1†× æB§¬[Ž/_ªNM„DÁ‡Â‘i!ų(VCÔ…,Ƽ=¥ ´tƒÞ¥¯|fH©“v´’¦v+¸ôzÉÊãiÛ„`ѰâA5QÅHOψ-š¨]QȆ×ìÜDÀ à J•è-žðð Å;[cãÖ'‡ 8~«bàéx,ƒ@¨ðYï6XWÞùï{ê b áÞP(²Ë4Œ°Åá;½Ù8£p`|SL¶˜+ýô¸Ú†ƒój§ùûœ»Îv‚]oÔ©kâ_=V.žï|˜B%üÇ*pt‘@ù¤lF‚CÈ[áîÖÃ5|‹v$HÞ뤬xu’ìÒzEšÒòƦyˆr!º…Þ[Ä×é{‹_¾Vb•[=çpák‚Fé<£Ò!‡î„_¡l²€žTò½úwxni(3<Øntß—¨bÊkSŸ’-ZjB,@œ“ #d­Éìîáªíª-³½Þ ˜ê4¼ò3> ˜¼‘D‘B¢=A0FÞ¼yÈË •ñÆmÄŠp™‡z"O2ÜèáÇA«æ¯Â)ÑRàè\°Ì%#àÞ–~8Z—aÃyôú ’| ò|µWÊwó­9ož¾@Ñ#B³l#ay±ãàêÉZ“²ñ'ø¢×®¥á9Ø”™Çñxn  ›ŒžÄ¦¯ôPÜžB‚Ö/!ˆ è$ÍÑ…‰3Ÿ¤õz¾E¦‹a^ŒÍ¦pþþ ©À+”#¢[Ø® ˆ«£ÔCùí컺gÕ<·Ø‘¹Šð4Úz„&2>ßå¡s0–„WEC?:5”ꀫ§m ¤{{`ªÌ†1")Šöœ§: Dàiêá#ÎwZ¯4¡ÿN3,ý’\––Ñ ¿¾TÀ£þé®uŒ'ZHɇ¢&­ˆ„.vŸÁ-ƱòëWèÁ±eõÅ”jÒó±«KfÌX 1'.ä3^ì‘ hìd ÎãAi,•pÆÄxW_õÒâ?¡ö–ìÅÇÜ(äo{'’þ×M9Ù‹—õ¥yÄÙô®YbÒã>F•=ù‚_m“€U„ž ˜µÕ‡3Q?óÓ_(åOJL,Á4æÒ‰•ÔÝù[åÂR€¯TÈsìØ“¤ñVfCÍÁ÷KäÌà(œp­[ŒÓÀ½½n`­Ž.…¦ÖW†u,?½¨È`lŽÉQ ‹—âDBO1Öƒ’E  @/v<º…a6-µÈÐ@ÿãN:IÎŽóý¡Ñâ¢W3s[ÿÜ€ ô‡û }ò÷·/á™툒*ƒ²3¦-€óŒ*âß1 xj¤ÏÓ"úÈ CÅì¢3”vfÍKÁM…òÛ.m©ÿ½›1|Ÿ|°ðÄõï{hÚ8_Oˆœ€q•K;<¬Î,-Ò†5kx ¤vF¿=qÀèe.¨›sÀ°Xwç×/Ԓƽ“‚p£PþÕ_ùt^, …e‹5ÈE”î üò×öým±½zæêÈ͸ú«»²‡ÈŽÜb" ¶îC>δ2 …ÖÀDâûû'6¼–ˆ-¼Ês%H³wà‰×fJ]@HlÙ4Z>ú®’·]Pð;gûeÓGÒÒ.JÚã"L®:—§ÙKÃÕí|+6¼  lž¬„( ý |vù)Ÿ1£´ŠÝRWïQåÝŸ›>Oã*C*ñÞG¤@W ikXŒ{ 4MIGðä9£ü¥“³jD’–U5 :µw£Ó jÙ¼,Du%†VnªP8´FLe‡‡ ·ÿ¤òå—6U¬BÚuXï€Õí#q¼c/l¿³Ròû~4Ê~•meõl>×F<6ÛÏ_+¢ëH°²^vÎëjƒ­ x'?ÊÛà ÖeôTÑmF¨[úÒÖ;û/v1Q>ï0Xu× p2Å™½ûÙá[bƒ u•Ä»©D¾j×r?Rú¸ªÿ¯NGòGù0¶[qu´'c4½_Ã`Uv0`ÊKŒ2 P}™÷~ Ã¢£šT‚¦=:ƒi”+ áˆÍ B«§öãF|P†.wÞ*Юu¯PÜrpU•†‚„É|yd F}É£èµYî¶’uº{¯Un Ÿ çšá⸰e¨FºIóp~|çÖ1y³½C‡F¢2ˆjR €„NgÚSÄb.׈ É÷k×CD¤ãU¤‡‚h3”ù„-ÍÕïà ҠP~êœÆ­&q˜CÅræBýž.ÿ.b¨Þ 1Éà tתßÏæ)É(›J––t™ àΕ·1Ð8Ählÿ2ËÅÕ@iO%ð6Z*^ñgòŘ·u­lx@¾˜ //rÝÞ7õÄL6Q¿¯‚«ì¤kB8#gw{ÿ^+ØA"ŸÍ±1rIõ‹òuÆo¢Ì±O$0uZÿlK在7«nAÁZòѾ‰->ÜÀG!’ñ2iœÚ=ÚBrª|íé!CA° Þ5ã?Ü=çè—@!v DÛ}x/øÉ•´: oŸýþ(ïò‡¾ÍJ ü|v~ôÕP‡Ø†øl¶xm¨Â¹ï HŒWÄí€O‚oåVô<Ýf©¦­•H Å™2À‡fÙUuCØ š&_x…5ª¥+| FÐ Q‹¥3Oü,ëOÁ­p‹ï7ßôTbÑAd”WkU<&…É౑›”°d×ÚÞ},—TJëuÀãðœ~ÑÔø5WP=<Òì¤Ü[Ìidü‚ì3²iÛIJå‹ÿóÕþ&ëõ¢lŒ+É­s"2¼­„ÏÈþ™¾ÚÊM†É×¹B2JºóÌ6Ñ« biµˆCû¥täÞæùJN‹ªÿáf¬ßòþ?О3›’Ò¶Dä1‰æÙÎ •è¹Öß%o{$©Þ{>¯$Wø:ß^uÆ 0âì»lf•¡ŒEÚlþŸC ¯ÄcãÌÞ­¢ Á{Ó¹D™$°P³éw¬eJ‰oá‚jO³ :Ç-ÛκLû“¶Þõk8Ôet¯ ¬²^_#EŠ1¨/ñŒFmîÜÈ=›?1hÇ?ó&NèPAìA)Œœ(¾—€¸‘Rö8Ô3ô~Ok*=½ÆÅ!,¨Þ¼RïR÷ær´7<zO–”W¦0”k4N† Á±pyï/õÌÆB¡‹C—Ù/˜)}DäSæs7¦ÇQ’% €7eÊ1 ëoŽž„-ª¬ø[Â„Ž·³œ°Pù¿"ž¦ë&{!M%o~wÒáuñõŒGf"÷šIމX•Û5醤·ÐÙ,³UIs¯å0à­0\´tc5]âR=ߺl+4 8”U&(‰öFýÞ/_4ùk‹(M¨óõä †!ý¨[¤z|È#!t_àÇ›qÎñ®¹T³ÂŽ2ó†È°Î‚åÛ ÒD.7=ÛIùÌÙV²ã`âålÝ5¸é!Âg¡,ÂjÌi™`‘þŽ=!ÝWï´ÐYƲ’°¯Øá&aô ÀÅO Aæë@?ØJ®B°g¨«H,ˆí1øä&¶ ˜E2ØšôÌ ›$XIî§¥D­»Vè껕É}·v©ì»1·€‹–t³F‚=¬*ÁðæM‹ZÑí=Ì#ëF\ìÛz\ lŒO)•ú@A9 “η™‹ÙæÆ(–cëÓÏ—" ½·6Ô˜|µ¯êØÎ…kY… @ ±Àcg"¡–eÄL~q°í!úoàE4£qC†|TŠMý—TÜ :K™ ¥òÍÎïÿ×NšT6ŸjZ È€jH[%„kÚ­ @QkËȺ§íþv©:÷É:âã¢Ô'ñ«›Fõî$Ò¡ôAâƨ©Áõ3Tüb(î/ÄjA‘¿lwø‡d&}jç&øéK„€XVÊ7ðO¢:'¯qFâipteSpô›¾'ØÈ¦5Ä—5’!ìã~âPë5˜é– OÍå­¿€A®“%þÁøOÍ:6Õ±¨Ëý„síø„Ò‚~B¯D¿eÈú¦D–ߨÛÞ»&Ž5†t™ kGöàÖþ·†àGsÕ΃ˆ1y%*R¡ Òª ^V–î¡õJ…KÒü(<ÓEáeoUÎÈõ7¡ _3ø¤βkƒ N”FFƒ†?¸Òm9ŽAVp­]p“7Žœ¤e!ê/ˆ ç§íŠsx XyÖ2Þ¡Â/#@Å8A ûåÕì;¥€ÙÎï€^wð‚ÒöYŠ­¿Þl„ypVÜ"ן^ç–ŒÏJ´©»%^™†Çä ®[ÜS %Ó´iLú‹=­”­3ךúºÎ3$cñêaâ¢WsÇ =Ç)‰ªæ»Uü/ûLƒä¢ fˆ¾uýe˜Øšp»-u]ìfT)ìùbe¨Ý2 ”GÄÆ¨,“Æ>ebó3æ$ Þià‡ÐX„†Ø‡;ø‰Ø|4 Zûζžv½v½±éOYƒy•òìÝ‹hhéžWiC(8—1¾`bžº…ïgðD%)¨ŠMc]¿<öé‚E&œ'ÿ,ô»Záz_ פäÉÏ!ÚI KZѮт²û¹Ä›„mú–2§‚oMS)h—xαà°t‚™s\˜Œ¨n^Å)O}\.>Ï«N¾&i­óe®êIÚ·>Ÿ»$až(u¼2¼}¡ÞBˆ“‘gÀ(Û¼‹oÍ«îê¼;bÊ·âƒÃ3³M-èëëŒÎ»T½z-x XN§D‹y׸4>.+¸‹ #NçCeûTÝlÏ…È?O„‚Bÿ3¿Wy“N`#ØS¸åJk9Hû#'-mOˆ R4ê·î6G3À•}Økør•žaTá—¼büóL:h&|miý&/ÈSÞwG÷«ß–>¯z^ F¬PË ¤ÿb,Ȉó|æ<ý$i_Õ@\®¬#úT÷aŽìÌâ}¨¡þtâaN2Tœ=‚œÇ*¢C? €AÇN²ó#öÞ« ´;MtÒE-L þøFÚ#sé ìÆñÂiœ— ;q©³x£)8D[Ž÷úó·2’R Èq”$¼qš¸¾ \mäåá$µöHA‹< ó® ¯wÂbMÖàóŽÝ·½›èS+¢ãålqÓÀÝcÐÊ¥AoB±È}‡þ!ð¼Ž%±[w.H‚Ò[l(Ò’ÈÿÀS†>sqJŠlIðPÈ~·{pD¼¨ºÜa…ÓKðêu€gÐI`di*;dì!) Éõ®’3ÄFƼˆ“½GˆH¹ø°`ó[pñò´We+é,Æ—§ÚÏ&Á°=؈8äûCb@A_ú@ÔÝ|&{Ûu/üsO§OÏ3›—ñÿµH²2ø6rôì€dÏ6=|üv§»¦ès¼ ÂÆ—¨C7¶+²+Ôâõ!BOq”E”Q4_)á­ »§|©§³ãPtAá»åkœùÔ¾S=^ C)°tI€ÁÔÑ:TÒ bï0Ýp‡®ݯ^EÉçÀbÅí>³Ëkûá·– _áhŽíÓŽ¸ ÊZÏ­3´ÿLP¨M¢¯oþØ6‹ôÆç’CRØy´ˆÄÕRöÝòGʰÉ2ÓÒËÜ›S­¼’€üM¶ByDt|ê@\9¾I‚´jÛ‹vįÌì‹`áÁŠÅmid¨’µZäf”UiÆ@‘Þ/;cð-‚L•J_ C†÷‰²o?&TÙ¾zœ[Pœ/òvúHÇfž!ëEUM²XzìKüÁ0Qª>:Q³dj ´SâY£j¥ @ÀÞ׉ù\%„=½<ÞU`ŽÝ@ʯðó–ʈŴÉt¥4Ïnyí„ØÆÈ­BŽç‘ÉåØí+Û¾ YÔŠ¡ èyy×úÿËÈ3•‘Ó®ºQÌoú½6tI_z-C^þßþÊ|3–%xr€~ð’¸b­Äîøk6ÐÔüƒ–“ðxX)S-ÿqÌÏqjÕÒ¾(ƒ¾MeøRN€j«¹¸b}øU×ßþb #Ö‰ÑÁýšFI:ü± A·¨ÂÛ‡GšgØË#õÚy)¶Òµm™–ŽWsÿŒ©ó%7É}5ˆzƒ$-8 »ïyy£#Xg¿où±MÏVí«;È6¡“Hîìâ6(щtBfÀ*»p–å­i"$áx3 (aêúÿ­ôÔ¸.Þ®pn†a·RJÀ½O? BNâ”¶ Ïj1]ˆ¼õ_Ð=iN,°2l$Nf xæ‰Y¾ÿ«Yu¯£íãÜð:в47Ôóëæ91!ÙìÈ´8~$Àì~3Ä%*¢ñóN¦:UK«dñç ylÎÈPƒè<¿x<‚oh(éôý”iòù>ÀõÆñ—0!Ç+Ÿ0þ ÂĢL˜RKJfcXoø¥lHPLÜL~ôy$\Xÿç86yô$~rmÃüŸ®ZŠRWÝ+%Ò]M··UéÚ6 ™\EN“¨pwd·™ £¶}üƒrXµ#ˆäœ»ž \­â¶ ©* ø@i“N®FƒD`7?2ªcý‹¯³Â„rxÊá×_Ð&Q0}·‡þÄ¥/ß7ÂÐ"íHÖD+¨uU­y,N*è+ÿÜòüá·~rßÖÞö½ ~Ðç‘ö<0߉;Æ3ë® "o®R:üÎ^Ož]Ìj1Ka(²¾—ðxD(‚¶Úçú8Xýñ–=†Ó •£„}*xH>‡ƒm†ç½„\ëý‘T»ïÍø“ìÔ÷òν*[ð‚‹ñ{ áÃDU2¦µ3¸>-øà±üßÈ “ïÒƒöç¡Áõ’GÁ„3ª(G|c,)t×)W¨œjæšðb’¾Yµ¬Iø­lòÒ¥³seÂîP€ái¬`òñb”xV¾u%•“„ý©8DÔJ œãs)pV~„lH–°Ú@lwçmEë\]ˆG$5ìÎÜy»½Åñ‰:WZ¤ºìrÏSýs|ì Ä ¿müÂ0pÈ!K½v°Œë ƒßä¶ o àªÍÔß3€Ôd/@ÅÉä>þ ¾í[Âòci…›¿„“‡ðnÝ$Içr¸©&³pšžœ€ ð¡à) Òd~Šžz:–@º:üuÊ,VÖo¸ÍçëÇûqIø–£dÊF©ô€¬Ü†’ —E$Y—öÞø®N'àˉçÀ38•Q\±¶xÿ±èGHe6é‘ý”îÖPUéé(Ë"9迈¸°Èp˜cKÃSBäRô€¸ §Yá’âfAßùfáK[@Dÿ¼¾e†¼³§5“öb„×úœ9‡6=l’‡± XbœÏŽó‡ÔûY<|††4¯o¸gó*åi8µ«ò>\Ú›#סÝû¨:·r3ŠA° øõ‘ÆÒöý(¯]ÉVÌ9̰2 Sõ’ pýðs–d*á[ùÙTD_-BÅx¦ù69jÊR‡Ú˜äVœ4̳ÉÀ½ùS±ëiÉdO§Ìê#üÿ¾ý>å§@"RȆS'‘bÆÝŸ¹¿èÜàTWZÏ8äÏ1òªð¹UóÕ$ Vݯ3ƒ—èFFX6“äd™øZÞÏ ~¶ò\ž¾2h‘eBŽ‹c#x")Gã?®ûòïwí±FRZcòàýzÃlƒ8cìQx˜¶¶“èŒ 0ÙFXßêiPÜye& ~HIÝ\óD]ýfwó˜Xך-Î1#–g‡*ØÔîíêOæÇè†D~¾ŒX¬Þ1 HÛû“_o')ƒÚ¹†^û_Ô “%uÇ ñ½º”  4íMÀx RipNC(§·³ˆ6$]xR pB¹Î¬²ûâYh&K]"ÓV÷ I@©„ 8y„lh× ùÒƒ +[wLY¶­Ç^Ç‘ ¿ßñ`0\ ’ØÎ?X€GÇä`½´âÂÜÃG…º‹îâ»Tµ6¤ÎµŒ‡vÔQô–ûéÆü ™-hƒz{F0Z®·;Ö¤¸ÌO!ÓÕŒœôªŸ×YY&‚–ðSˆ[µŠ ¥û†‡,ßä"´ÂŒ™OlÑ7»SθPLéI7‹Ôu|FìüŸSßOžVÇ(‰}(ÿ¼cK‹‹¶^ê+“\^+}CÜA8&†(ÉõÐHsÿ2+çNa!ž¡ì§õ»¯ôÏæ‡àšó‚ä€ÂüBðt#@ùÞÓëO´ÉHW‡×ŠË[jd×aßê?n=Tý€| ;nþæ¿Ð´ñ€% %0é-ÑÎ']Ç™Êè7lçAS•§¼h ñP.ƈ‹r;“\—×ÎJJù²}¾ksF/×<ø"$gE¤ ?±îã…¬e½ŒrÏ¡Ó1¡6“glŽÉA÷¡ý° èL¶¶*ª°„b Â쌾±x*Ú®‘PÚ dùÂx³¦ÌÖ|&–ŸP¸F$'vPܯ˜èXj*9®møÞ©«Ê)ÀŽ=í$éCec .¸Öo´në¨uÆ{y?×>o@"åj Ϭ§{ÒÎ÷†­ÌSNð!¨¦øË*YïêËt€ï_Ûåoè6UÎq(‹æ½oK+“èñuzÒ&ÔŠ/& ©ïÆÏ¾¸o°B ô ,±ðZ;`¾vðWŒqpVRES°È–NTûFe¿/jFl%»š$ãua†J0–’)9ÉHÃ.Ä7e>Éɱ‚îSøôÖËÙ&dq.1&b˜"5g°Tu¿ÏØmý9eM´ ß!ºIù±_ýc7€qÅ£GÁ²=ðP`Tå–Et5T É 0w’êüb&n8 ±öÈ ¨íùýCÄðÖzÏãKª[ãâëØØÊV-êºÇ-Ñ)<  tãI¸GªÏ X-Û»jk•âÔjc´\XmA8{ éMh $kÎôLoj¡,|E ^®*Q£N8ÐÁ s©Œj;ÙôÌ` ª /ƒC•‹Â°™åD™HÑþŽxHõ“ê¸S¹ ¬]&x™ŽóEÔŸMü²F¾m¨s¦am èìüÓù~¡„:Áš¶jÒÏ_Tàœàþ±»ðç6†&G‹Ôm\%¶Hã—Ý—TŸh‡•~K!’•ø»PŽ~I£[põ¤ÅKDÕnÅ22údqö\e,©E8#‹£ÖíØ@Aj9nŒæðyÐùîåçóÛ(žæÚ8zê{û#Y–ÒüJWÓ6|G$–ïŽ[׫ùkÌêó¸s§!o,ä÷jí"º¢TmèÁý®.6¸âÜ{(û^6174˜”Šç[—o¸óDÝÆ,ø¿âjµíâ~b67r¨eaŸ°Öæ|ó|çÄÂPrir†ÊÍ&¹7QWÀ¼D²O©ƒjŽ&4%ާ`•‰ Ðox«u¦ž“­ añ–Ø…$VÓpšmë¯â¶½xI›ÕŸY“‹‰“+=u«q¾áÄðe^Þ} ¹3+ƒ*¬Y1PZ pQuT ü¸BI—[¤Öÿ&x Rh×þ£/Ëoú690DƒËªú7“Kš1àã)ö•/ë7ÀœZdªzÎT|Lg0ÿcì<ú:àFø±&´£»'ÑT¤¹y?4_©SÜ{Ï 8X°»e¡ä}N3˲´û<ADèå#–î3v.2VÀ‰¸F¦Ë*+.¦X]`á‡ARh9k}ÊÓ`›‹D0.iÎ*q§rf F ¬ºJ5¢Xdð¢pÜ’…üšTµšS„ ßfëÇðHu—Ó¯üh„»M¬ÌM’òg[™­0šP¡ ‚©zìiù‡Áh2ÄhÖµ5¸j|'{IòJš"ìw »à* qÞ³‡}‰Í…ubYá&cïƒhTZÀ?Eþú*þ;3þ¡`t›—ôXÔp`€Yž˜\nuõ3†Çæ.ù v³/2ôMh×Ç‘öè¶Tí 8¥Ò¸U{aXÇ ÁpÜ Á‚þ¼± Ú¥?È?sƒ[˜+8t6²GtAÅc²¤ÿ»Š&øh ç'–‡ªD«Õ¸7Z£IYíECüëìêŒtX†ú¼F ¡°º¹Á‰éDÙ~VZ<½>+^ ­)Ðôñœ ;j…¤Ð|‹ògßáM³Žãìý€ZÝHŸg*¦·­íÈèýRd=‚ÃQÎ;¨¾§’Iå 2·]‚ÖØ/hð¹X«cô N…¶ûs€Fİ!y›@jª½Gм'O¦/`ÏÔW¢¼UøSëFúQIZx8>*:Ÿ_yßa;Ü¡\# ß•&6Á°k4¬9¹d=wð17@M¢ä”æã2+ÜR‰ç¾]/T^ª3YáEQ™ÍèË&JÔDoè<ˤʢË£¹Ï!ÆÆù@"B׳Ž‚ Î<Ša@á Á…A}åÊU^?ŸùF 0"¤8©)&D†œ(õGTN:@œWîsvñɦb0Ôê‡üä*ÀÈkíÛU›Ô®ùÚ ôˆAùyÜàšIýÑ4Pɉ9¦ ¢9{1p!ô!{?Þ(åÈJiâ2¹cç¦ ?*²çT†PIk^.pj¹²bè®&é™ßyº¨è0å"îi’z‰ÐEÅH;J/¸0ÍMú%C¬ºO_Cdœ¢D4P&QÛb÷¦‡ÖY XëD¾l¿‚)À3²Ù*¢˜úR••‘â'Ä™ŠÝSÎöW;ß3«/þÛŸºh:¬3|ÇûÛå)2Ì<ïÑx+–xûÔíÔ8ÒLyW@ÝKÕtàžlÅ×$¨ÑbïtarX:jlµ×Ôê»–V™¦„×%‘à àÿ0iš¶ž¶Ðz!űjMõ>šè.Û’BEÀ6î ©/&êexa({®¼¨9œžUC=%c¡U\TÉÑ`©xú”x}èÆÒмµífXJ#1§À1z«·÷6¯5µöÌÛ¾LsH@Ùäh&RÏ5,ˆ  9Þ‘Ö̸ºH%I'°Ä#t Ö>`Z}-ÌKÞÀ°zyi/­²[ð·Ùz#µE&SøZ#©ë<Uï_ :: ´V4è9$¤pÇï˜"ú(‘¾Ž&:ÿH…; ¨ëƒ¾%›þhré¤a™„©u†Õ¬Ñókû’µw)+¸è•ô\s½_i$ž ú³ÇBBÅõñ&35šƒðôß§Qµœ¬]û§àxÛ0Ñ÷ùQ ojšÞ¨Z­… ØzÀб–” AgmâT…wȉ+@b._µŒ¹k€Z?s«·›:ÖÃÌýn‘-ˆÆèZÊì°k¦£`!ê\èå,R:LЮ¨Ü‹>‰—ß~ úFÐ=I­޼àÐ ìÞoE$“«ñ¨{PÙ³ZX2œ‹;|Ú€/¥'Dµ*ö°²0ïÒ̧òb:”‡ÈW$,*¢ò †h£ï}Þ·E{í €‘ëü÷(‘6¸¤šfûÐÉtJˆª êL÷ò&(ˆŒÊG_qÞ2ü½Þæ'6‡@׿DCdZ0b¨öÛõz{UµšqÜ¡o³–‡r1Ã,þcÒ7°³Þ€ —ü*ýk_0áúœÙ˜x\NÊ€o Låvì¬dW¯tgPêU‘6ñ¹1lº!œÑ¿©3x _œ„ãÐc¨?TxX %² ‰fÒ\b€©“ÞÀ„âœ?® "*" e…óÝ$àLYé]0ªíA×]Ò´.GEá‚3оµ¨Dšf-¦û”–ûØ¢Ø7drß²Råg³ÍUy ½ƒÇu§xCv’|_­œäš—›þhwÓZƒ²•^6àîa@Œ†µ'ƒ]ú/ô7²¸Hdm@ôµòÙü=&‘Ç<è¨äiÙ«cØÕÈ ÌDZî r\ Þ`ü‹&d(8­Š:Ë;l—ö%oá?“‡ Ðýkïz.Ñ*¼ZèõïIt ™ï~Ù‰ÕF(|æ‹A«$ËHÂþžŸ”g$<8C¥I O[V¾èD|0Œîà‚}…{s¬±³›>¨ø%îtA©TêHü\þ‡ô¶{'èW.;°S`Ð0ƒeR=€ÀƒÀ|”z]„‚×ÿ¼ ^”‘@«Oÿ†‰^(&m:}EƒÖ!3’? ÀÅã€}âÆoG”0€‹½3P «õø§ß€ ßŽÛºGþù†ëà5bº70Z˜¼Šõ€»–@xމ9°Àl dÿÚÊ`&AØæØVîÜ€sZ²Àý=ÎÙ@ˆeê0 ÏètŸôy»-—t ˜ã]3øÐŸõËwÇÛY}·–f{h 9MC²Ì+ülK@‰)¦£÷S<’"‘lñ0 -É?ße¤?0Ê™B{RŒVýÂÐý̆€ž“1ÿñ S+‹ŒWã`ú|‡$ŒSat­ÅyC¼ËFgè ýHÆi¹r˜¯HÉymf…fäÆÅ8Mêh™è› àØ_(gh»Ã 1:8ƒ`šMºH´*Ø-“+ÐÕ*àa*Iµ8ýc`B‚‡ ³ÏÖ9óŽ—…ïòÔð‰“ý>¯œwÆ`vU4áÕªÕI­Ü•êÄ5ºB±¹ ¿=|ÿê„j!&øØ7b‘£…^$×aÆì‰æ*£dˆ—ãèk¶L«A¶nÞû!H;ÀàOûOòužá‰–÷©|¾Z1 v÷©ði¸\ˆNY*Îïù.†>[ž*”v4nUÓ^tTce–íÒlFQaÇmáÄâ3 9‰˜”Ð,:jædeù…æµÀÃ`<3b4;Û‚ÛÉm;è `‘"œ9Sµwå\±ÙäôJŸØö-CžÑÚåpâ®ñ ÖŠ8ùh-%eÝžÒ¬‚>¥u>µö”l2v>^ ÈSˆ0¡A&ûá<¤èÅŒ4T„"ȳçÇŒxVvŠvnT^ÈŽiøFàÀó+jdزl."ßào5v QµÒÇ2rtßW¾$7¦ÍšÈÚ8{v¤DÀ™?µ‰¢ùß×u€Z9öÙ€ËÛi” \&¥€r¼œöiV®˜µ¦“‡õ Û0FϤ'&ÎSçOk[° êßyûCñŒ ¨kûum1î…€ŽæØ×aJà`4ºtQ© 94w+²ÖPyeÇ@´ÿ r¯°KiÐpZñäóæé±‘ .ÕJÞ.JJá«ß§vÁºŸYx7É1‹ãд,ºWø,°Ì¬ÊX#‹öíb‡ƒE‚¾ÐoÝ<. êVhY˜Yôô§”¾Ìè ð_ˆ#1o‘ø7 ®§wßÔãÞvG‡\gÞgîîíß‹œ%ÿ“užÇaIêMÔšè›'´ÏÒß;ÎLRäqÇÝ$yE^ȺçmžÜiC³^¨›:éyÃÔ0©{ÑK.I¯ó¼.FïWe ¿ï·ÉH£HŠž¿£w»èSORÚçlZbQ'y' ŸcµK ™‹ÿ„8sóMâœûΑHÇ—~%“á1ÿ¾nϼu0ÇÎ[5ö;3‡£HÔ‘!¬Îºï;'÷ñ¸ÏÆœY–$(I’íK£¤á¨$id>Ъ^—1çE· OeÕß#&»*K «&Ve”ëŠØJÃh––=`²‰ ÃL:‚š (‹IPeoQ•5©.ÙW&ڤªÊU=,VY*®J…’ÈV³TÕFJ5aQ•IfQ¶Ê® †¹,FU0KèËb„E³ ,4«b=P¬šXˆkÿÒ4kªh—e÷#,S™X¬ý¬²4 …Y•Ë„µØµY¦ Z˜Q0Ã. ó`aš…b¡6Ã*Jå’XM"ÂÂ,.×d+‹‡¥T‹âÂ.[aT…qe›YÚôØøYo£Ñx$ îâÃýÅôpœOè›Ûù'Šu ˜"ÓÔ 6»o!ä|‘öN܇0ÓÍ>ÇÿýØÎü{òäHd†Øê›¹ßNÈ·ý¾çyÜ»¯9Jf÷…2~¿Âï:ïÈï Òçžõß¶Œd–ª+ÙØ78öãXÙÝq‹Âð5ÐF̨”®íß®*?Ng!„Rî&1H¤ G:§ö·vH˜YUîCóͲ®Ñ(‡¿.|æ§±%ߪ 8ŒY|N5Qc•Û|dÀ$EM…Æê¡Êª1¶õÌŸŽ ¢ëÿÆàNþjv²ÔiˆR”\”K5FØr5ÔŸY5JL¬‹EA¡ÂÚÇX™åUfU\ÕÄREX•ˆÊ²Ú$£°J¢bß»*ËE¡*ÜrYÚƒa•feØEiU•øùXU½äÂô#I!›7„ûåª2ðx´=ý ÊÐBoNU\Fîâ9âø ’q Œ©ÚÑ ³êVPßþ÷?;S}LšÞWæºgtx•;BUVUÌ–Ùï¡ÿ­¡v—+_²gþè÷àbÛ™;ã £¡C¶ ðë Gàýmvè°:€ï² F”‘ÙÂ}ÿÿMª” áþ3ï;P#íßr]‰›ÐÃa7 ½ïÜ‘ûŒ¬›s”Ûè¾·K¹à:¿ O£yGÒýv$r/=uuÕ‹‡Kšûó Çe\ü£Ü-šÂ¨tûe$@c@$\€.™‰Ãy'‚îTAˆÄŠCS‰á±)` † aˆA8` ˆ!Ò8‡hF§ Ñ¹ý0—Y–|Ó9¦íL{¾ãGÀo³ÆÔ¸´pS¹\¦´RwI£Ò·`\H!ÅL÷YR°[3ëw*ŒxÞ­IxmÞ7ÄñL†‰ß¨ÎÏ™a¥]£oõi£DÀ|™D‰Ã¨3¸<Ê{0?“ˆ éô0kŠ#ùð€p­zó‹*\·$&OZƼ$›8 ägë Ñ™¡8…‰'¹™j_óUgP(ÙÍ+ÙO+óDì!ËR°/QŠÍH¹géѽ<ÛOCÝëX¿| )^9jÛ¨Fƒ«èƒýIð# oÜO°zݶ¤n¾˜r’<‹ÃMÐx"Pª!»v',Tãò8ޱ€\˜€‚~ÃÒùcZÑŸçñªš/!)ö6ŠyJ-ÀPn{R`ø¼âwôÊbâò5s’g5]‚´åô®´Wdìû¨›pìFxæ×µ[N#DmâC׳!§ëf¡@À¥¸IÎ|[hNèâ☳·Ë´%z¤„©šž_yû/ޱKˆ=Ã+Ž5AÜi½pQ%Õqã雄–vx:!#bI¼ð ƒ è8IsP!}¿MÅ7à2?R«#+JœÝ¸ÉÆu×7ùßÊ•b@bˆpêÁެBCáÃ)=Ÿe›’µ»Zä ¢‚†IëœÖ "° Ú™qáO?G;©üºƒ’4É›[-†MS×%Yÿ…}tsÞ.u ËZÂÕ(8{š£´ñÏ1¤G®;³n€å÷£'ýÖkˆ"Jç~|#Ð+3ðaâ;øfT;R¡˜›F*ª}¾Glv=d5#嚪*}š1';ÙÞ B|ÒÛ±ù 9¿PbU.õrÿ°|ôÚfbžþ¶tNÃDêg¥ i¬¡ÊÍY[»k@HY„¶Ëí³"“†w~¸›-£í^@b¤U[w)¢]ú±Ã.Xæ™n½ß³ÌÝl?o'rþŸZÂZÑÑŸHµÞW1$ó'9!þ‚ä ²yóEÖ¯¾Y˜˜lú ¸p\Eú[ž2':0Ÿe-~æa¹¤g2xÕËÙöRÊáÖ64òËÿFwù¬iôBPÈG»ðqÜŸY‰Â—PÊŠ—"h’| šÏwŽæÎNr~m¦§!Ñdú/Á ¢MøŸxBÎþˆð¦h™o–q)Ùh3ò~‘ùwU]T½‘íÜ,­ôaó‰H4ÂÈßqä7(ºÐ9§ß— Á®08;õF#x#¬äÈ® šX"˜¹°dôƒ^YÅÞ©aë&R_øõ\ðB1ae*ž`pý‰û´Ï&³ïWX™Q¯ úm Ê®&ntÄ_?IøŒBHy p=Ã[¤Ž|±S9wïá¢j“ë"Y–úxd‰¢"ŸjŽL_´°rÔ.!B‘¦cès)B‹†9„ÊõŽÖÒ€<×_È\]ËfõX“afêIàO +T¤ùI}É#29x¦•'lÅ\˜ŒuÔÐÝ‘‚¼^(º— ôî Ò”Òã JfäæÄ4t#4[©zùÂÄ’¾mÿÆ.«Ž¡¥ôo@äÑ`sᜤü)wH>³¯­Æ‚”ç¢Ó®"¡Âsåʈ³nÒæ‡šX¢u— y6YW„ßjjqÈÏ·_ k>¨¢‘&c/³+†øn)ÝaSàôeÑàh‹ÎŸ’¢øÝkø]€äq„íao *3ÄÊÉOÅ$´õJ‹A§ÞûbÂÖM),„ ä ‘ š32üZ̉§½lžÆ¢cÙ^ÿOî˺Šqyv7à3‚ÙO²BÑ ©Ã&ð@ ù’]^)»šN.Ϩæ§!‘ÆAӡι 5ɨŠÏIå²y‰—] +߯S8 —HTÓ6q\ç˜;–9A?]šG&O<:ÛÝÙNÈJ‹s+˜f-FUWmÁ¯F/PVygÿŸ’„]4kî|Úvº(õ7CÈ98Vn&ï"åᔀ3Uex¦ÍVQb»ÕOš[Ùr-‰ïŒ ’=D' y¸\i¡Ð««ó¯³aø"3#ašBþ«`ÒöP¾>ïy¥üŸ¼¡e‘Èè鬉ǵ—5v5^È:9²üîÎìä ©QR©Tœ¡Ë²ü²NöXÖ΋B úñvœÌ¹úš[áî$€͉…srêÜ©"¤¸>p#â ¡â©>Ö8bä$Å-'Ë ŠŠ˜{‰ÛSѸD¿©¨cg5¹¢õ™Š¨tTRQŒEM°R‘Ž!(*0>µ˜ÀÀûá‰èPUá Ž-*r¡‰£J¢"}¯˜[/Iâ¹¢˜3ÆÃ$ÂlÈfÂÂL3 ”s†ß&½ùü×U2JKæ¢{AÖ•ß@]i=˹q H³°hDnA#:ÿ¡Föâ®0Â3EÁ®e1Ì¡íZψ¬ðvÁ‹\ùƒ:…^V•€ÇsÌÂÖ'k[V¡©1ЇËÉdoÉSÁŠ)†–-êEQ¯Ôé"nqÛH¢¨ Mˆ"U7víPô&ì¿gSg×c:Êõý¦ó y zÖhü-¨°ð‰U#"cïz"7…z¢kŽsòDáDjOä Fcw¢ë†«=‹ ŸûÐ_3$ï|¤»/©«Fió×­·8äm[cßZí> ½i8¦ÖÄVT/ÐõºË˜¶‰¨éáÏ…=‰‹ú±®G¶þ¥ †lɨýÿÇ~´ðÆ"¶–¨–‹ÿß>ÞAm‘ƒÞFoÑ¥ J†:…¬³fxhƒ¨Òé‘DvüK¹NR8”ÒÌ·†Ô‰©ËDq(p-ްӥÀuÄ+Öέ€t¦1¥Gn¶­Épžu½}@&š+ÃL©ÀV`6!ñ´‘¨Ý^%›DP~ö!‚ìrŸcÁŠAT“n\Ž"¥›È£MD.JCçZ˜±±žò©í6\óÅUmïã¡sè:]  ºDZÁÐ~¹ÿº$”>.´$jÄ+ŠP-âçu_¼!phv;ÉYp™R1B‚~ µÛÔ‚iÌ'oµX·Næ¢5²°`_¨ÙWû€ï,œÐEs>¾BÀŒÈ·'x&ìeà ‡Ï¬Ü(j|t˜B#éxÛA€14¼ÈX^ºÜ²;»¹»èËÀ œ¼L_ÙL(:ÒdmѧϨ„x°i±ö2BÏޕϼÌ#î`[2¼Ïˆpk O#:ý[Ó¤rá—q¥mô’÷-4%2·¦m>â¿ûÍW©Þ¢®¦õô/¢Ì.‹eÁ*‘´3ÀkH>=6éùkãônµo<øf¦–8*‘p£DÓuSœ³þ¼FO:ÏÆNx;¹µs-nP¿ÂÂöï ˜Òkâ/Ú¢0Üa™…qc’,ìOR9/³+Â+4;Ç6sÝÉ•6­M-ó‡*¿=gÙá¿ñå(û¨åDdÝ,h•« =¸ô?ÊžeäVˆv¡A|tÈÓ¥ôh'c¨iã0µ£ÛFý€+ã W€+èý ¿Q¢úÞ3BDqC,¼ï†þ¹Èø¥˜EXäÖ ‹—'¸£Pž ðŠ Ä=ìóü%cpá¬'¢Ê£˜7C’jeÐË$ëö "I<Š=ljŒwjœ&”~ù”‰wîðH'¦¤^ïŽaü!œÌî ´ÖSí@·˜lµxÌpáŒÀîÑ$­’ܰj¦ýQ÷4ˆÈÜðÊ0gÑÖ©wlºLœ{ÆàŠ)“U„èž]3-ZüÂtYbâ)SÄP¼}ŒÐb)YÊPd=®î%I‰mȱÛZ8;%MÔsáiôJçìL7LÄójaV= s$ŽncÆS’E±ì,>ø‚Õ-‰ah¤-š«µ÷³Ð`¤×Ò×дh\.[›–‘¸ sqèf«ï ‹>6º"£Þ ­QKêÑúãggÃX{á hO2R]¢/K2à"ŽElhüàO'I½Ø<¤Ó·H‡|è¨ÕÈoœŸÝr)—%¡,6y/*ýÔ [cj·Ôæ ¥€C׿§.lâr5ÔŽk£SÍ!ÞßrVüòïÈJ°,á„å‡g¡ž£ÿ·¾ˆAㆠ• zÁ²Ü1ü·þù§ô°Þ1RSuÆbõÀ´”[Ó–ò;B ¼›ú)+°™<…mA¸ðzéÖ„‚¡3,›[ÅÚ¥5`égô•޼Sl?:è’­ ¦JŒ»p^ø¦¹Í¼§ò¯›~q]þÁç€ c 9²12‡íc¿µOnWÁFo[+èŒnúwÀý!Ø€óµPö—Ëñ"a™ °¡è! ÅìZ†]¸‚W aº<¡“„Œ„~³Y*}tzö 5ˆ2±}å#ò<“ûkˆÿ¤Ö¢ ëëMù„¡æ€L "&—±ô‡>Íü%™„Òu¯ÞGW<…Úríëú~Š>#,žc‰¿/Á¶HmHeâc°TŽb3]ÙRh,B^q¡­€9ù4/v¥ÑÎ`hºK#áÁ»šT-#1«2”òœBÐe†*³œŠ¸Fž7¸„ APkV·ÞXµg‘hê&þ‰!«`éGQšÁoIØòãWÈìÈ›'e5áÛhó=÷œsÀëGDì¡gªt{ÝžHÞVì°õ»öµ {7tŸïD¨ è*´‚‹Tyàä L·]}&£2T¥Ç•ÖóòHœLï 4ð vK^íÄѱ=ð8fˉϋ)ïf06 bÞŸòï[}Ž:+pž4’¿†& |ø½I>HÁäå_æ—†l~-žg0"ì-!Î,Š@-­sÖ×7VKÉ+•Á±¼EÚ²YtÍ@'^÷±®_NW‰î6‰DçòâR®ÙxŠGYd4‹{†aì韫>QPŸÛ¦™sÊ€)”0¹¾ï·~îJ ”¨Â¡VåˆÊÍÄ »d th¢¦‚¤»)=âè“Ø°Ä dŽƒÐíˆÓlçL눔Û[ƒëPž“Y»‹a¯Ñ…!gGqÏ¥ tÙ¸>ƒ³ òžôBjx¬#•»ô®–Fãñ$ïëË‹XÀ .ߥßç Q7Û÷è¤[‘ýÝ´ð,À»™×Оö¥¿«î=çþ†ÎÀDË9=yŽ0kþxÙ醡ñ!tór—Eùl®ä*”‹$ùh‹ùçõ9gV .ð/›Œ,î½—?ÕÉ‹yã£Ù\—ˆin™a’—F½Ä}\¿zìB‰úédâ›ÆÓZÅoê|0èÜ1È,“ฌùY!‹'çŸXÆLoR]i3;1Z½B×­{$Ù¼mðu¶Û®"×@‡"‡Ïtü#žœAÓS¾?}këð`Ü_ ’Â2HLñ¿D`¡j ùC† ÊI)ƒ*æ`O3æî^`ÜÌêÙ!M`¤œDà×.[*#’MŽ<|"…ý>_|æ†Õ/¯~¢€#ãW¼È…Æ‹±¶U9çsøRÿÖ’Ë*W*âLî¡ûíò Á­Ä2Áf0šZêøÀ¢:ŸÊ|³òÆkh¥ võ£¥bQ“ª5Y¶ý©˜Wâ —áçü—«wýi›rÔSÆ ÉzxÊ- )ŠÌïPêY¬\F_Î8K ÆOŒ¦A³ÚžÉÏâk ?5¼X"Ò¶.—~¢q¿hýOÌWPcãÔ…ÐE«7üaah$þJð%¾`UÐ7Åá>¹¨h{.¬=Îml´µçè çŠïǽ´”ÖÄ z‡4áò×¶X-tí’òQ{,lDÂËV²O+˜`Á™‚ÌCöòeS2 ³jæÈæ Ý„kâsì;”ùùÞ"¡âÎL!)Tå¯]°5%옳¼Ø¼† DlË”ªç²WÅl¢‘à)­«é©RñkÜPaàM›…‰åÐraX«}ºJCAE*¤Ç~¸xpL‰Ò 6ò c Ù}&ÛÓ;výó f–lÎVuNJÄõ:jqa8lIoIí†Ë;.TEzÁuºÃåÀCKiZt:4o™7ˆ\†»û{Û„äŒn9úòÓÜþ· ËèÜãfNâFBõ&9_ˆZWÅœ ‘·“‰\¶_ ÍnǨ‚ãE}ÞI1©fÓÖ#“åpúF#?ÈÞÕi¬, =«XÜNÕ‚¤Ïr¶²VýJ]Rß)F0ÆBMÚÜÝ[UúÌ[}>ÞÃ+70ÁÁ&ÂˤsOñoRଗ:eE¡»DÈï©óú¤1§ªÐ§-q_hä™·)ŸF™tÿf³?Üãú¼ASŒw.zPJV°€æP߀ÏÿB>/Wqq &惼¬ †NíuÈ-ƒ‘ôµÅêÙ±M0c-Äíq‘?uí9+ÜÑý¯#`^¡;‹I³ ùçDíqj3Ñm&ã=èÕÎý¥ºWü!·š ððÂîï[1±WÒˆßÒ²Ô˜ ÊÖ.{F JP;˜’!ì"x­}äA-{Š7_§3"fNYœ]6©ÜÀåÉÆðÚÞÛ0ý|ÚÓ.!À}ôÕp âMb ÊÃî!MÊþ×=çBú۶Ϫèiá1Ü MÐ~1è{°Ôc¼÷{”É]µ|£wúÀMÖ8Èôךˆ™@+ú«JvqÃ÷£…¼7EÓ´xi¾ÿ«é{üu”Bj¿Jr–‰3Z4¸ͨ'ùܪïÙ±PBÿ*%O…¡¤ÅÄ= ˜ßúVOûÓBÄe0õ·4R¨зÓÃJˆ7\XÏ\‘ãòkˆ?E*˜¥À?æ»@“¸z®¬Î´6ų\¦™®â²(x_[žQ_ÇIÔzÐaVÉÖL¯&/È]<Ô>–Q¸êÁêçÆ;%‹:¾¾¥Êj¦ý&€„Í-]ÊÖ£,c1=\ôÏDPVb3S~È÷”oÀź]rô9¥óžª1Þsš”Œ oåæ px z~ÂkŽBâžåŽ ê4˜Ù§”çÓ_¯37Т4Ó ¦=Ál%Ká*ê9ÿºò» ‘šd÷M'pÆ~i“‹p”b#_"ŠžðΊ´YT[Q5ù!ßL¯ž•%k›}å¶ÌX€ï‡L2‘)=Z‡Eø%¹lÙ%ÈnÎMgbÄó|³ÏUû¯»\™ uó[ï(O7v¾—l‚ÅÏÎ.…’]\«9؆á5í<ß 9R1 @Y-¼È ôOv9¹ÍòXM;~€TWÕd]ŽLôßVAø©ô^©þÊæãêg·„}à()ê‹#ã•Â5)#UÎBÊF؃žá‚úøßL%Øæ:0RVÒ“6›[¶È…"(K|&}ÿ·š:—Òš ¶Lf è¶<eTêIèJÆÀ! ¥Ý.ô ƒ”L%»N¬L$usÂ&¬Š4±·rÒ˜Û¢ËëØ DÊ ´ÏˆG%nôÑíñgÃË¡ãFxð-ŽOb ²Ä2®?(~uóÀ¾ØLAþƒo‚ ³= ûÛú˜BD)ç¢-ó†(å<@íÙÆµ,“úS|×2ZmìÌ'S:e]•;,¬ªÑ/£_æëöñ§ š/_¦¿nœ­Nz@Lðy]?–×þyÐà.Ò1~ý$½=?ž@ëR a”3¢$ÎC•$›;¤Ss‡C’±ò)òHÃ{B\º“v1àù°ëèðjwþ¤þÌWú¼:sò :ün %b$jö4«¼JNáñܰHo"¬toÉÑÆ‚‡ßþKÞ!Hö"Ï˪çžl^*¡Ê‡ß17÷çˆÀóSvè°ï*Ø“8 ûê´Þ¹I\nN·èˆÃ½âºo7%F'àþL?ˆ·Iþ“']våîŒ`{›)Ë GnrË_ÆYÿ½má6åÐt?$\‹iädC4ÊbŽjó ™9ŒFÚ›ž®lsÕ‚þÖê €RòÔ6ë}(9Ý^¡ ˆé7¡3È5ÉŸÆÄƒó˽Ã/ÿBßËËŽ8)VrÎPœ…LýýÊÑHDKÆUS±ãR—éÉM¬gDt‡‹5\¬§Cð<ɵ„*îEFùË’ÛàöG½˜(µ}0ðËŸ„ùNûïVþ9%¸a.˜k¤A d_ƒwô°†ãµ¡Þ“ËÂ+¿Aö; T/¬«—\Û„KÁ£*°€Ü.@Jð\Íðk^Åf &΂„ÊA'’¦Ô©ÚYpu&…žž¤ÿjžâ [ÞòΟ…ÆÀçA2Ž6°oÈ×Ì.Ã`Tø[YŽ9:%…ï–xû«Ð(4.ÈKá\.±™Å¯Ýl~Ýž´bPGþ †wc)}XoS×çæ¶'¡Æu9n‡)Ö£K¦I™Ñ¸Ø) £ò%˵Þo öÇÙˆ 0ÑQ²6è¼5/]x43ýõ;ŸU.±‰®iÛ“®OÎÓ61EÔ£c_íIŒÈrûÞ©lã|ÒÄWš¤<@µv?<úVEH€á²r¿´erHõÒK e,ûŒ0ÑìU–f½3W=Šþ²»®ÈÓ9ž5‰†VŠHÐÀ `˜-VÉÀÞ7+ŦDÒ„Ožqì# ?ñCdʸ<ƒ*(Rþ8y°/ÊïHÈ ’!_(²ºUÚ)…–§Sþ©9“ùJaJ¼î Õ'ˆ(b¡…½¬Tßåî%&8Z¹úØr@#âÌTh›8•€QôŒD'¾Õ2µ÷9·ÌeùÀB ë8˜‚”BrÄ]GËVÁGˆ2_%q[SWî¢Ó&î™oBsœ‰ÔjÈ_ˆ›Û Éȃ!áÊP¾ "®´çLàD@k¢L>”îRؼM¨–¯Bc5wkÓɳ¿çœ=Ê‚Ktýý‚Ð|™âBË(ŠPåu›Õ:ú]šû&[5 m!}$UIb ê°*$а ·f•BzûzÄäwê´¦¦^[±\„…̓™x~8?fTKÞÓS‹ÒæÔŠ ÷õ¶KÞFb>1/gãì _ßÐ\KA‚ëÈœM[ÌÔó7*³ø…v|mÆÖ¯KL±‚¡¡^ƒàŸYÎxä )}ËÆnÇ~;ÂØó—!៑]S¿"NÁ[tŸâ6A~1£™%àñn†3„ÃóQsuNð.· bHdj¡¢&*ˆ¸ê µ„¤0“¥át Ñ/£ÙB¡*ŠO¯ø¡+6RØAÿɇ€¼¼¢¢p΋JŸX‡*d­„óÎ{:rB_¹;`¢ç3Íx ÷Ë‹ÌxLÝ\{(‹íi(~…´#–™iTH„>ÆÎwi€GŒS‚aSð-a¥QKôâJo}lï”8+É©‹8Ã3±¯y Ò3ahYï'äÐøÞó‹!ö1Ýðq4zt¨Ô´×oAÎ^¢ÝŒÓÊðë\«—¤ÓI1Íħß[%³égk™—Ä ðÒ‰]ï /Ó)^cY4’=y.ÓV¿œI'¿êêÉ® ™‡Ôu’¡Æ¤i å–ð¶8wf NTHYÎ<Ÿ±º¸ÜŠ nòz8š9i|¼ÃØ Àa³ÈìM×¢± a$`á4Æ-‰ ˜aÚÅlŠb•$“µ†Ê¯dÉ®c”xÛ%E÷Ô|Häe %F,׈Øp*eè;dµ` 7ÿ1Ûœ÷òô,Ü£¯° úò®” GÈhϦ’)Ê0×àÛ«®Ž’ €A¿o=]ñCW•‡^?.êM*²*–a¸^\u©ptç-Dnö¤îø½@? É= ;´½†Í׆9ÈO‡ë4¶¼0]ìí3C*e6Ã@ž¨Ø  oáôp…‘ûv Ø&þSN”p4;¢Ò¡÷xjK(¡ý%ÆeNR‚;Á6Ý H–>I°ABØ&*íê§%Û ¬dqNŒ%i?™ÔC“Wcžû”g"Ç×"˜Ró1½Ü`ZËÁH™’i°P–Y¨L™88d—¢˜¹h.ퟄ¡˜Mðä+í[_n¡KHœ0*žì¡jð[cé ¡Š„.u­·h˜§w Û(a ¦D¢Ÿb‰û¹E­g"6Â(2× Œ‰uQ×è’ṂDß3x¹§ÒâàïIá Ý+[ UƒÍ\[A§xxÜü[»lÌGÏÆã)7DS°Ö‘ŽÁȱâ<¢Ó´rÐtGx”I>¨0™9%áööE›}wÂÃñ¥—§\•§ÑOr\˜Aû%I¬9H§]þ¡º±ã/~ ó’ ɤިþiÞ æ×˜ÙacŒ¶}xŠd… W•ù¹4«±ŠøÖ$«úÑ+Ú?t-™²c—ØF ¦#ÕÜ¢Ÿ~ĉö?ÁɦãNö«‡‚£ot! 31I|‰‰ÖG4²Aösº 2%éëôÒ{ ìÆû>% 8 =s9Èn†õË_i:9rÎŒ;P+îšv·ˆ¦xñplý/*”˜ ¹ÀƒKv0!˜mÙêpd‚S_w„ï<%Î"?ƒ€;A´ÆÙö¡ßDT†‘’ˆ˜SˆÉ0zøªóë¼(üD§§ nïeÄúr:°ÈAˆ¾àÉ–d$ :Ò)ŒÛ€;±xdJQ¸FŒl # xÏñ‘8Íü!ý ß™M_œIgqÍ,yvGoüp.cT¬¨™Š†8·LóÍ7• Ö"EI8{_Ú‰žq% žÄ‚5‚¾Qða´@»”*–FÈDsQSÓoÔQÐ_Çܺ7v— •ä÷±j’´H°VÁ±MŸÄº{3)uY1L-†]hQÌ ¬UˆH×2s¯ç/âÚ!\Ð}X²íjÍQI–6­ Dù÷Fè•äQq@¡1ñ'ŒµnSŸQzšZÿQsAô‰üì蘇)Gbè,VÒe¶,›µsy4×Ò««7å‘¡Ál|›b…Šv[oCŠ,¡°t´[œÛAõo;" Woˆo¨»sàéLCšY §>¨ÃqÒªÿo'»ëoÍè8¾F2"YmÐøâå¢Àò£Æ!F†JR"¾Ö—#â´ã°+ÑmɦÈʲyËái¢;oy Ø\#Û†w§Æg ®zs¥ÍžN Ñ‹…¯ÐK•´Òp äÞòK"%¥q]L0R«­ 4¸Ö,>Ò[àb@Š?ÑÃ,·tÿ²Q,¯þOé1M亀!iÖÀáN²Ò„„ƒØà~[òœlÀº~ޱ„Ñí0P[[žÙ•¡ÝYl¢ dÅÎk)]q‡N^¼N‹J0,K·ô¼9Šãh%nv𢠵¥]ˆdÕ™>–RúD¯ÜÐ÷׸šlÁAë¼yNFŠ”n{ñ®¾Ô„&h‡¬bt~¥t0ÔEú#×Ã'‡8î^™Í¡v+Á¢d%GpŠ£¢^¢!plO5˜ ³¥‚+µ#Ö(rzÙ*B†´Ñ¶ ­5Ǧ'4J‰¢½xOxk(R PH瀆57nˆ;òE‚²ZR‡¬-Û걡¸|oA' 3C1³§Átœ‚Ê<×”ñ¦Ÿ ½˜´ :p›×GSp¤ GEü Š…*ôàm±dN©Züµ ^ÌÝòéèC\u‰Œ„ü (ã¡'Õ¬‘çãÚò9^§ˆLOfRÏ¢\ÞbkqÕ"ë³ËÔE[Á݈M‘j@eQjI{Û¤öM¹èVÌ‚î©bñoé`#¿qá‚J‡ž ødë´*JÁ&w{f 9íñõ‹Ú€ ¹¯qÞòõQÞô½÷kw{$xsVAžwõʾÜ‘qC챞ZÚ^†W9ø¾É3¡í&\®4ÿx8Ðä.¡‚b—j¿»CLÝ&5HtP‹­Ùê=T ,~\Pû¨iÇšª4€u=BɃ°*ed…Ážª¡v-à“)å¡§F¢ß×Ö½³¦ÀâM»›& ÷¾,ΆFÍO›ŠcÛR>i=aŒ (ÅPæž+‰Çw¡4F†2`Õ‹q Ã]R2qmB RšŒÇˆ@5òÌ EŠ 5eI¼ —¦û´óš'Xì둺g º¡úÌA»ìÂäõÚ<®ÑAnsÃá2Ðàí Š_Bz"A¹måUê¾nhÆ,XwrHp«òåSÀ±Á©YiÍ—± »¿âg%ÖÓŠÔnì»Íføò2=3vØmª4ºë ÃŽùqILJ«¨i¦cLˆ±åž"ê¦bäzÊ´°;„òsC-Â>Ô6þ?ÂÌ…P†áƒÜŸ  d Ê@(ßN ¥2‘¥G™s¾„ÚâbŸB‡4 ñ'›–œ=Êܤ•›`C¹xõ®Ï0˜Í„ îÁ™ NÊD× ©ëb¶ãˆ?Š\§{~$nˆOô BJÐâèæa+"‰ýúMÜJ› >"¾ÃÎ¥Tº’¬ü…Ø7î‡?í2•½ŠÍc“FÚ„Âu@eD…»dd‰ªJ$ÚfãMD“ß 26MP¬nöP‚)œEmî|–w¥Ë¶•ÿÕ³Fù<«Ã%ï+!tç©®Š|q‹×Ãõþ+·æ¥UYìÄD.p—%TFßÃcþù* š7‚¬¢}K™ŽëØéŸ—øô|_ßWÀÄ“…niˆø ÷`³ºe¸"Ú ú…¾%Ý’ð4ROÄ$.v–ÀÛóšê›I•°ÖmeTïLJ<—¤¾±8{ÍÐ4Â/CEWH`Ð!šýÐx™Ä@yƒì¼¶/`!5îj â~ÅPÄ¿³Wi"£B¤€ áìÓ@Jf‘WÝèlÓìðL*“är­b!›Ûƒ›•ýMpÛ.>TI¹ÅÄœ^5´±±Up¬d†®å§ òrþb&o nå믶zàßczH&Ñ.D{xTØì¾Ê°ŸI,}”c7Ù;ÐnqóUãc'Þ-öŠ^W[Q‘ꉾ„ü£Øš2n¡ÅŸ-JœFªÓ ™;(I ùz·’á©EÀ ¢;úðk|Y cw.ñwœƒ.óòÝù¬É…_#ÆH0%k㱃À^¦Å=ÈÇæêô ÈMwø”ØÀ~çÏú˜–5Ì¥€Û3wÏ5æRäv°í‹©YœÚK°ÚQÄU…Àƒ†g¨+à [Q•#J7eDmÀ¥'ÇæÎôýºw‰¡N8|Ñu\å$ÇST«WvÕª·‹¡ŸáÁ¿<7Ù8‘莨«5£YM5œ¾·Âãæ€¬xLyïåÊ¡`ùénÄÉ^õÐþ┓£üWzìæÿ!èÅ7Î8‘òw³¥>69ùÇŸ¿‘P©¢Î<ÈÿàYƒhÓ7˲D[Ð[ J/ô¯©Þß]´Ë¶ä|üö³m…¶`T0ÿ$&N¥C„NØ“¬ðùGvèu óëçª3²;.qí4ÖÚJx²Ÿ·õ°KÖê}ÈÚ¾Zfá¥ü6‚&,V ¨)c8¸î¨Tnû‡Üà Ô¡™(¶^Ö߯<ú9…ª%çr(dÞ7Ôć 5¬î~·A[W7‡© Ù\á¾'NrÑÚå‰U^¯#êÜCe °ƒ}‚—Ý_ÇÀ( 9n½ô¨ò a˜2L©Ù Ìw… #ò§<ð|Äå»Ë1²¸ÇìIi gŠÒ„ÔØ±†Pvåö¤”*ŸqÙÛUÔ”M§ÇåÀîO ÷M€ ép=RŒçbß…î¸/‚ªAjNrâ@‘Lkíög#+`¯B€¦¨ò%h„U®óÇhÒb0Õƒ@G•K—pà.›„-rx´Â¬mbo4Rƒ¿Gn¶ƒxxÑ cnq~Ï­•åŒðºÄǬA%›‘…vü ,¥óôåg™î®§“ÉÇÉCzkcìŒð¸·¯Òc¥j›ÇøæŽä[€¿Ê¢†|ìÆCj/“äñ¢ID¶%ñƒ9•X>ClHÚíI¶\§ØÁÔ:5¯sqÆÎ!ì¢2i¦~…u89^Çd¯+&‰(N#É”ãŒ!½ÕÒ`¼ H~§‘p¢N…FXaøäÌÔ!.P‚ضõ³äŸÌAà‘Â<ñГVy¸ë™>DN¿ŸyŠcxéi”@² ‘Ï–v5ˆ/ذQæÖ\ÿWÛÉxõàV‹Ck[€é-mw®ĈpúÂ$°y… ÉÛ ëšK."ΡüluÒ((ݽµQO”£s"ðNÂ0TõÄKƒTàs¼ÐŽ%a³B ½Žv™"cÄä­4Ù$kÖ1hköŸ1l¬ùxk TËÇÕÆ¯BøO¿Ç³(@ayx¥ešgŽ›±å!I £PÞɲL½gºjÉÞÖæã´Î׳Û>½•Dñþâ›4t³íÀb;W›nŸ‹®µØRâ§øF”ec—}peò¿®Q'^Ÿ"®íSéIgÜ©i$õ3ñ®;iÕ«f›9**2RGhÈã— ^Ž˜Á6 o5€±Ö']ójjI’ÉG‚é§±¨,²ÏIŒX ²å6íï&O~ú‡ZóýÙþªR2`Aj—EÚÁ\j³o{¼¥.X-Fð‰ÌèW~;Õ»ZD#£~XP`(iÜ¡~ĸX·¦, _¡¶\èhÚ¥÷Å‚Œè‹Zÿ š=‘,Xíüða”U— ÕI]z3~ ü´}~‘8k"‚ƒxqÓÄZø—-å»`5Xmz3NŸ~Ô…—N/„.\è»®uŒkV´Få T¸ý~º^@ º³v, ' IׯCOÖkr>’_ tüŠ83(Ê«… nA½668¥Q¤v3fÑûAA™ 4CכВ_Nàj·¥L_­:{W°xö­>~V‚G÷ÏH@)ËÔä¨r~"‰Sß#ð²¦þB€ðÑÈ[zj¦“äJY ÀΊ}YuåÜx Œ9ôf'ñ !åvä+‘f˜ÑNêø·¥±‚ø$iü‡úÙ•<»í”H–¡&ß4ú¾û׫uM°¢>Œ´GÆ”ñ¥‡ýe†Ùˆœå¿ŽM%¯ F‡fI¶û(pÜžºoMÁãöæîí£WñäZ4—ĤBRÏÇ•ÐæšÔšÓfÔÕëi\;—Ö‘Ë“‘ë«©š'•Õbm`€˜Âæèl¯¢ø8j-õU‚Ç•ý³þ<é3ðñ,àr/µ5¶Òˆþ@`ìgž«ryÝÍ:ç©9Ÿ#“ùu'ýaÕ¨þð ÃΦäÛœt.9:qàk›iù¹x´®là”âØ ɯ]hE…Ì̘µ,Zè- 'åyZ’Z²``™¬©êàQKؤ Œ™ƒrŽ^-—k•áA« My%°wØg¥ ÜZl’ xðÕªyô+°]ú)Ë›À“eùî&k“®6”œ½jºáõà÷|ó•” ³Ñã“Ç0%s0ׂÄ¡kÖ Áá‘ÚPOA"Ùû¶œN´wy>7…½ Œ¿jEñ•Oœ5|êe›u Óg\Y¯¹'%Ênl,ÝöÈT0…s¢´&2­=ð^Ù6Š™ke,;•Úžå­ùT­w«ç¢ÈëŒÑþ ÒÜþ­å¤·§A~´Íõ2d’ÿwYI/´¥;¬‚™òù"ÜS¹ÅÊ÷l{ÀÖ†’鞦lœâmÖ‰YkOœÑCx”TAwm{-ä½2½ÿ˜¿e¯\r p‡Uæëõî Ò¬Ú Æ5 bŸ(³ æùÖÀ¼nзáÑ(¶N  ²D¢n±óï‚tjcPÍ»ü¤Ý°)&j£Ã@Wð°§€¹›Œ„ðé³ÖHK'›NÇ61¬3Xœ¬6Õ k‹ø‚Aíz´ã"gÈH<¾Wã:fCRbDE†ŽÕ\:¦Î¿•ƒ{³©ú)V AÜ`ÎRÆ |MZ1 )îÁ\5>Óúb€°%Áúa“HõÏ÷pÁÓÏì´dˆL¨òª÷/Â8åfÔa ŒiÛßø-i§ ˜ÖMkò ü-Õ(x:‡'~â²@ËÓô™vÔÃ7õÕÛE¢°XŠŒšÕÀ†QàÇwu.œÎJ@£ÇŽÓšM}߯áOåX³ì"Çdo6ãÇã¥5Ò5¨‡ôßûEŽœ¿ŠXwˇ•s‹ˆ–®d—šMöƒN56Ñþ¶2æ>@µÙüî½}i_qèá›zéC !œ(eeJQka`Í- ‘©X>¶ÏíÆqº:MpLH[€ôáv±?וðFOà¦-lnTIfšnñr]Íè$›D+úN§3Ìàš®ÛËÊJ$Ái×Cú~ y6®u£ö‚{0YdØ08õt`ŠƒZúù%«ŒŠqQ TÑ;T±èSrÿ%Ùtàã¡ò‹™oYÒ+|*Ò÷i‘3ß‚±ã‚bÜŠÜ}3L4Â=Ÿ £'‹&V9×<±ôøù™NG¢* ë©[ NŸ²¤¤zmSËéÁЈžI©P±IÙ„Jc r~—xT/Aü^¦—4ZÄÞ!ÕÈKäØ&œ" þóU[ÍÝ©­ß¹}^— >õd¡+DE¥)Uµ$üˤ†,ßaY¢&&„zsŒÜ¼À/mâ6éLÙr°Ëiêf{(°hu”V”º!ìŒtDB†L¥¸&ö ¹@c"'C†NÁËG‹ º/ã@p‰ªm¡ì•F]œ°ºÔf½ŠÖƒ4›ÂºOŽÀŹKy0 –:BÉ"kø%*†žn7Gin¥Ó&¨´~?"êa ®Ó ¸)CCRN\¯?µùèÖNdvwœÑmVÂâ’à¥}p­?Ö;!'Õ[í¢krê)û‡D¯öð®Mý +éÛ” "yIÍ™Pôê~V¦N¸ƒ`ƒûzKçlE ô^Yóc³±Ó–œªÖ+¥i9éC[üI pÖ`9Õg›Í6ë‚Ñe”B– ð4hFBù™¬VNÜ('L2Kˆ†r¡)yƒbqövðçÏ…z­%üÍ )^ÂéßÀÅÂ×¶¥  6F§ #’¸>†…´‰„‰Ž%ž JÉGD¥p YnàÇ!ŸŒ²í$^Ð&‘ÛRM9³'߼ÆïbOìJßbŠ;ÛØ’ýk„-¡Çºˆjbg-p(;ÛîtûLvÈòÓ¢YÂ_€/²º;}zi‹ñ¿˜r5O2ç:˜ /úZÈuÃÊ4%8œn4"ÍR·µ¦8ïîa8û-¼±?g¿d»V½Ìòg¿­ôwA´ªÃÑk벞éhŠºf{Nø>¹h‰¼´»fñ9sµ>S× æÍ· põBz?#ôµ^”ëŸó¬îkÜÛ¹|IGÒ ! K<>CÃr°°,}ho£O6l×%üuw÷–Èb%A'­6¶ŠT¹. Q¯KPãM¹)A#—n²¨'åï¢ì÷Þϱ)öY>\e§rO|`‚ŸÜØÒ–÷);ï%|Agk¼/Z†TLìüØþÐñ<*Ô}ä€kº×ØÎ׌Gøèö‚‰<®±¹  ÈKDò`6þ92 8Ý)Ù ôÞ8p<$85Æ>ÅÄÇS8]ccª'—["I{&Oކša”Á˜J 9¦9bUóì9™Ú:™|’þLs¶á# 5LJä>O‰dÀ$ ˆíV…¬W$r,¾H-!ˆfàÒHL©A§‘ùzGÿ>`ÿæÒªhpÕÍ(™_;5§)ix„ñ?:’^ÔAN£Ö÷ˆB)–Ç%›ÎUmo·ÓŠöÌ­Û×VÖ!éÐÄ1ŽÀͯ¾Ì£!úÆt!LYŽÔS3 dœÛÌWÖ°?}„ë¯ UÈm($å jh¢‹Æ¨{8¹K%ëÅWЉ€xu%±£À¥þ>ÄÓ§¾”nzê¯%YÂÈRóOÊ Iá7q¥º¹ü­•.êAÙen§rÞìô^ _´‰¹¢ÚŒŽ4*nQ5mPå7.—¥Ð±Ã‰vÊ£7Û è.ûr÷±öÉNH%¸+ò òñ6€¥?»XW{ Kóàæ¨ÑDjj!³¡¬hlhwþUyåâp$(›ÒQÙ×äȈgsD3·1<ÀܨØÊË7sù&*ƒ ÑÑÚµTsÞèv¹Ì¼ãÆ™s  ÂÁ¥‹5ì)¡\RP±´ia/07€XÙü“-Ë0rçŠÛ>Sý'¦Ÿnc²›t™= ÷ü-[¯ví|Á²lNȺ ‹bÞÙ,Ÿp}Iªlzi6=ØJ8$-‰È7Š×‹IØXžÅ6²§{]TéPj^om,% †Ìf{q-sª«ü/« È3q¥–+ &”¨ÁžäïÊþ½“(Pb² _8d¡v?,Úˆc…núwžÕ´õEv9yÆ8’d·wÈà&Á®Co‡ÆvÏ0  Nñu`ŠÖû;)Ë›%òç´©TXÙ9~Ð)yt?á7;À•çæ‰¥ÔŠXê‰l_v`­àšKtÍtÌ._ƒ€=ŠÊbx?„¨q{Œp’ÂÇHô/ˆBaœøÍõÏOQlèk·vLÈAT`¬¯Z覯߉X™¾fáAeœùmôœš C’‘š+𶝤‡Äé´J$n%¸ª jJGÜp”Fó(ïQ¯âˆöÙ® ¶UÙÀÉk[æRÀ8-Â5©¾j<4š¨ÛÔŸðÊÛïâr…½-6¾ÕŸŽkýÃ÷f÷uìò7ß…ëL¾apÍý£+–Ò³PC}Ö¬;Šé´cpm‚m¶Ë˜Þ‡²£N”6‰ý¯.Šñ¾¥¢©‚š©Li´û§ÓÚÅÐhž.&‹Ñö ?Jt«Áሱt  „ nôa2B®wOŒ×gt[ç¶¡&ää5¤™ƒr¦÷†YE±QÑ(b2Ö¥–Ÿ ÖÙµa5ÔV?:ØÝ6°?ÒJ5;sJé‘Ú—L›dÀ@bóéºd×b›§L[²ß÷ÑÒpj½Íø?׿GiÉY>(³5VÅŠ2hÕzaoÀyi.NjŒWòÀÝ ¹–âCŸ¦§P4ô½Æ¤gOšûø­>x‘º¿ RâìS%`¼è̦ÑGè‘›8:__̓ٺâì÷i6£/2±SèGä´mÜcƒé…6Ç„=ˆÔMÁþ„œmÞq%Ì7U¡Jop–ZÄÙ‚ÂñDÏh¹«2ñ ð9Ê,ÚÐÔÏ[þ >A#0-Mæ ­œìøæÁ*=™Lˆ&ž±eЙ•¼o5žúTžL 4¸Q7 ‰›ðr xLylßÐìÙ…æc!r¹•0DÚ/ÀU],7̪ºC9ˆqˆWºQ™YH¯ìïáÓ–{¸‘Íÿ\0øæ» —Ø÷Øõ"9r`аËÿܾ¬¯kɶ4Ømàk…wMŒõª]2"r x«"A,“Xˆî5 rÄ¢7~}åm”{ûëHÔW6J»[ÛTˆ´8¦é޹: Av³ ®õÙƒ®ŠÍ6t“*,ãªø·,mb]Ê굫üÝê½? ^+Mù~‘Øhëû„Ög&rüöÞTg“=2’œEâ;lÐi—;ÌH7艔ª;{òNw%yS‡†5ºór²‘|³)eÝönz±]}ª«"›ÓÖ¸úž f8-{ÕæUÄnwаQê×ð™Hä®›¢ð¨d¥¡oÐ#–ê×õŽ$Q žùÚð<¿Ñ ¸Œ³0€:…¹x‘éŒÒÛŸñ#À/§ÿñ¨{—Ðäí¬ö¬¢´ü6£s`lº¾ÒÝ·á%|–·WxԂΩØÎ=lšÈFL$FQðL‰¢»Úe-Åó,=iH’LÛJ_ÒUóê«Ä¢÷®ù,Óh µ5ÍK/˜E=¦S‹þÆ¢³fϳe¾0yŠæðÑ1‚ø1àïeÓìÄÓó2^Û7 Z#¬³öݺ=_'¨qFâÁt ¬|ÏïThöâi:݃&Õ«åÖ.²º:j\OÛ)”à¤õÞ±c“Z{ XË`¯“xƒXo“Ò¡pGëtZÖdK;=ÌYÏ€&yÝa'¿°ô„Óµ¢î]zZqE{¨¢/©°ÄÃ1Õáúöô‰ÄG,wx+‰*xžú4¦™¤@EGT&'®Tæ`äMçvjXZ˜1HZ?Þdâù-à{þžÒ¦ÆëÐiw¢Ý÷„1Hs$=EH^_Rl-QFޤqkí¾l­v§ÉiZ£0ôw‡å–RÎé…Š(49†žèé®\ŸV¸Ñ[9!ôÊ39ø«yõòªä v}[o¾T=R8ŠºÒ¿M‚¿z¾î¢°Uî„É­¦¦*SÌêˆôD|þݧïè\« ÛßéÊË–³8ÔŸ hµv?@yünÜýéÛI&«¢ÎŠ8î­ÍjVJ»úOþ¿Û¢wR‹¸‹Ö0k‚=AFOÒ#þ[y&|W©j f¶£ä¹¾·p›†ÕpÁßeIÙ…þZYÀ’œV«Ž6 âsGÊÄ›Ð9Æìüs= L¥oÜõƒc¦NÙ4XÕ*ÇH¬âwhQái‰•øÛ¡Ø_åïÂ.ƒQ‹$„RÚöÂáô‰^¨¢Ô1tWý!\Ûó+e` L}ߣÎã£ÜäÑ…?¹öá\Ê’ØgS¢­/Ar¤»â_øèå@hŽw0ÄtÙññ›=—F»k+!Â5c튃8Q l®åxW—À´$Œ÷.ùü†K†Ö÷!„IP¯J˜diâ".ýN8&o(P¦ ${ +^¶°†1ü¡Œõ/C@ÊU °[’aÚ£@gRã!æOÓãàÌ9V+­ca€FK$<B÷ùÓq$Êç¾$?Ú_Ò‰/»”L}Ö«ë_µ‹Êµ[qpæÄ˜ŒÃ, êBâæe)|~%‡•s—Ó¼BÍçgÄU % òÒ£ æ|²Åx QŸqoBC|š´ö)¼ñ !èžämBñ £¸Ñ¬IÊ7±c†º[ôcŒŸ C'ï!ìô #°<±*ãvK™ óÔÅ’‚Äðê%À6ÉQp‡á÷qñ~ÆA*S˜Hòz|†WŽ !ËÙôRU‚♿6Ë@tL©â§&ų›Â*GR+×ùc¶E/#Öý:bF`k¨Š%.tŽÞ¬‚Æ AŽà¤‚›üå‚§<ÐÇ[“•…¡•U¹±k&*ÌbrãÚKpÌ-v‚±ùïù" ·@FŸú€Ð ¸Sc ¤)œ¦¼¦nQ‹x‚­–‚ά"ß"„Ä¢$É¢I’¨9á«ÙÌ_(°á ¤ã":KMìï_ÐS¤.é®Ox÷)–%åЖ¾x2?çÀšš&!_V…¿Tý2Ïì^v8<Kçð¡ìF¬Mö€[üÒìOa4AS©ø/šnšD@j(CÆxÔŸ.¥° æ±äÕžñ:±ÿRj‹ë^Uö``0rgÔ7/æ¹<×t_‹­•‰ë·.¿ 䜆ùW⯠3½¥ÖüH­€ @ÕpóÂDn–Ýàñûvo’ë„»æ± ;}bî;a?ˆ¦üÔU¡"öLI{!´žLI‡—L‰sg)¢™•E´s—ZÚ T—Â>ÿÇïãeN…AU¹‰ uVŸŽT¶³N%šAž%[ø@Gàë„€4hÑA9QšAü‰ç£T"~ÅÛ®¨x3ŽØ"Û”\J9AyœÎùBà’YRåÞoææÙ»0ñõ˜Åü;lR]ÇêÃ3×$#IÙÁ’ü.Ù ¨l¦EÄ:M¾"|5S­@\,xtÝ^Göá`ÐЈ'Dˆ4P~ ¿¸ê]Ðxa¹íüDɆ9îTZ•O/žs@Ü0¥üúÌò×< ·¨¬ =@m‹Y¯+8LIãÓÄî~lµŒ=6ì\'HÏS£DF“sO|'Ÿc¥Ô¨–&ímәП$¸VÐaH±Ø€ó_Ï,ŸtV þò®²:Žº’¸ö><)©ãäž5±ô¨F6í|'¹é @ÍÛŠh%Ëë±mE’«jb m;xËV,›®7„ß~|áþg³ÂZ”Øa´¿4ASâ­éÏÊ O‹ŸÔöétiyx‰vúü#Ï/g¦:(‚jâ‰pôü¤SNµ3-|îY‹˜Ê/9å;sbm"C¥0 n\{D+ªÍO6ؤ•Ÿe1³L:=“,ÝV#aª“ìs2GýlÆ©3ÿV®ÅÕTƒhOOW-»Ž-¢w5óòj.ˆ®—tLnK5 lˆ¥ ?™Å×½H~›ÛR)çæ¦H.V0sa¥5ûãÄ©/-{2° +^ Ù÷aÆŒà)=¯Éµ#Œø*®`+Ú0ð6‹êð5z‘d1¥Pè‡ „Àø h뙿͸·´tˆ AÞWÚ“XRüòÄ^-'ê-q'ZýߪÞéÆ,NÚ§x{ÇÈe5ÈäÏ‘¤ƒù‡D¥T.¨9ÆO„Æ ¢ÖMs¡4ìb 1w'Z/LMÓ5Ò‹Ø=@ÏïþÅÍ„$NÔ’ü‡~d¾êK‰µF~–5"à  õ ¨ƒàD|þ6ÚQ DÕ{"R nì’øi‘¨3›ê—ÑÿÊ6'"o M!Ø4LXh“Q‚QÂuKúÜ`y ý{z—$Q± ¹>èÉ>e€6«ä/W‘»Û¿,à.EÒå*Û#WK‚®D—ü—Ôza‚€þD¢Ibqi\Õä_À=*Û®»¦ÃâMöW¸‰Å´bÓ! ÷y-¥hz0ÿõŽÊzã}¾ÞâãÃ#"÷sè¶w§¥yt–J•Ó8µÌràŸ9g}kðÀiYŠŒ³­ RbšáÀ [ˆ>;íœ'ÏŸËu ¥ÉO%²+íùÃNó.mÐt艎Wœ»¸Îú´-녢舵 jÐS«@Nýíc!^e™ó}H˜ø¶FØìHšUøYÅ_ J­kN\ÏuR$x:Éù[ÌüI\HÊñ³.¨öŸ¥ØLj¬`Éû(Ë4LAÏ­†÷4¸ÅLÇ÷¤ –ØÏDç©ÿjªa¨håvÁQ#páªNÙ¹°ocDµ›ôkdp\°`öO¤|=ð¼X9â2ÎÎÎiˆ˜BùzìÌÿw+¦)ˆ«h,]_OùªBlØ—PŸNmÇôhWã?ÌÒ47½ëà:š: ìüGÝ\gWÁ§z®-Ý¥c,ò6ŠQ''x¢#Ê…ªôé<&Ø!Aû36ð…aq6 %_Úy cô^øÅ…"\HäKÓt Ù3ÛòÈuû•PK2Ÿ$Nà¸m˜ metadata.json{"conda_pkg_format_version": 2}PK2Ÿ$N,ÄŸˆ00!¤info-mock-2.0.0-py37_1000.tar.zstPK2Ÿ$Nä­Y(¤(¤ ¤opkg-mock-2.0.0-py37_1000.tar.zstPK2Ÿ$Nà¸m˜ ¤Õ¹metadata.jsonPKغconda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000.tar.bz2000066400000000000000000003201201354123340300240540ustar00rootroot00000000000000BZh91AY&SYõtL_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâm_>—gÇÚ®Þú¶ÀûïWÇ@zÕ*û½çÈ÷m@ú«ïƒ€ {Î| Ç–ÀÚÛ€4C@èdJ¾ñ w;h<` ¼ òðÎݺ$W§½ÙEÌ|áõ톲©{g5k€»ž÷8JW݃Ïn§ +®µ¥NìØkŽ>Õ¼w¾y{ ÏEÑÛÖÐs¬oO/y}ÔøxǽçfÈçÇh{îtï—tC¶öw¡½óﯵ}÷oM{=õàw¾{îÈ·›ÞmSÞ²îó{}ó½o;{}÷ß¹Avë]sï]»-÷Üá÷Þpðög¬Û»lº½tÝ×ZãÝW»Ûº¯Epž÷·Õuôª^ß9ïuË­îÜï»w»Ýᛵݷ7NAu‚h Bç­Æpwwz­wt£Xë×£«½Ã»MîǨE)µ7¯{y5…4ÄC¦éª­»µ_O÷wO½ÇM<^P5€(!*…öë×·œ÷žprz­j”¥:x/a®ï:F½´ìt»4:s¶ëmÖ€Ö›ÕÛÝç;ÒömÍ<ŸX‰T*Û62m’¨5¤¤Ûo¶»­°Ê%{Œ½ÝÌS»:4 k47m¡ÝFZ®Øô½ƒžÏlðŽæŠvõ FÓI¾o&_‰l$=Ï®yÍÂØÕ(žÃ"‹<óÜiµî±=öÏ‘÷}í·-Þ…öúÑÕi§>Æùã}ã}oyƒ@/k@ã¶×·ÑÚ×ÍÂuÖørªmò·Üg¾øöóš»®¹Øúy«ïu¸k·¶ì/Ju½¶¦JœÑ<éÞîö<Žçw³½‚‚{“Ïw·næžÑÛ®÷·½íÆ»{u‡‹<.íÙßy§*¢kï·ktÉÖ±M´ u݆¯o{Ú;‘uéÌÆ{ÝZ—”›Þ-Û×;Önz×leT¥·{W=îÐEãÛØìÊ›×GkH¶ ô†ëP¾×}ñ޳ëqÐóÞó×¢âÖÚÈu÷·÷ƒ/§@kÐ Ùéè) Üöõßk«ëÜÝ>÷p;Ò+ÜDªmîÅSǽŽÞg«® °Þk®ï¾|ªóØWÌ}÷ÇO¨Ñ÷:ï{˜»ÏmJ:¶tb€Ç¦t·žº÷£¦«îøœù:îû€:…¦Š…÷ÞñîøU2Þ÷x‰D÷¹ÖÌ9×ËÝíl)Î÷xöòÚÝÅÖ6¢­¶ûv·þºn†¸ï+1ÖXÍì3¾i°G…]ãc•²ÄUj{m^r3#Øzí…&w×áQãõtþW’Ã}=GþïtúãWñŸ±æÓ£f0Lmi–²§ÞþÖé^x*/Bž÷Ëþ þþÿ?÷þHžÐïÆ œ£n]¿ÐôÃ:øêo­i—0„‰²MJã†Ò£ ù.nÑxÃ1Á,.E¸á¼1' e%xÊÆÉeá¬ÓÕ{æÆfœ¤!µnb]ct±%+J<\Å)§˜hŠJ䉄õ,Þªªáóƒ§oEEÛÖª),UÁ›Êš¨Â»*é˰§yªšIå8¬6®¡ÕéÒ<»Ì0@Cù+\&ÊÏèUŠ­Úº‹°è°‹‰ç×ÖÎûæôœßy)ékðú¶öKd<©Ÿeשð#'kœùâ:·P^Êhïûá`æèž-É£³Çh°X+€±Â´X ¶NîÐ:²<à{ˆ§Ÿï0¸Óqè=G­}`WîáÓqt$".çâýŸ¾ôó:žJ!ø,ĉ7à™ÎèÄö²¬,›ÎèIk°n®¶žÞf^³â¬ ªD1³ØtÞÆþò£«èc%²>wáÖ ¾KÛ=Ü):=ý·u Üb5U>µ¾V:ÿae¥ù|2·Ö,Oå+æ¢=Õ]à›íøÛÛî›çåVáµ÷¿çù¤ŸñXc)•ƒÅ¾³Ð3¿ë&z©Ú^7ýu í~ßF]9Ë; ªz3;íÓK¾íéß”nïŸû}ÁöÚƒrq,¿Õ £°@žÀu^__{+KÛöÈránXˆÙû®„!5ÉÖêÜ«³Á¥É¬Âúlýh³«ñQ›¬^ï´çr{KjL'MÐÖr&‘“wËò0ŸKÒóïÔ\wƒ£|ìÁu’Û£H¡~Æfîqèm¼¥ÆÀT÷-µü¸¬“ƒËúöÝæ¬©6þ´‹Åø ÝÈßùyûŠu~l?ëÜ÷å‰2àá¦ùü>j²<¾$ôk%zõl/“Ûv—C°gií|Ù†û;ðDò§ Fû1²Äî¤8÷}ï·Þ=úºk}ßËŒXe|¿xºnæC&óá/½,,q|÷("!‘ E"³Bü<¸`uȉ$ÊÂþÆóãÎæÞʇnµ£iDeÈT@ýpFRߥ]u@v/YuƒÅw¹B€Hî¤MËÐN ÄP öŸê~5°¡à• Í+¯ºó™Ìõû-RYÿÛ|ì¥Á}­üÈÙ=£YX4û=2—Ùq»ZGÃE¥Â™$-ªV>Pê²í„‘oñˆkfiõI;]·8  6¹\v €ˆ'Q˜ôèV_=ú¯‘ľâ®0FaF€N¯ìêVC¹ú<Æ?úκ¶|ʈKã´Xs~ ¬VT‹d´c › ‘®e :M~Ùl¬ÚC›Vf5/MyÌRÑÛöŒ5J»1‚¾åñ(ŒÉÙ½ ŒZˆ$mÈâ"¢à) ¿’²Á\tæû„H33'A›Ojp=/GÓ9î¶B‚‚?EûÛ:vWoÄÀ#“>´Üa0M"QåvÙº¥éȬ½~‡†›³wÜ¢†ÚV1QÉEøiTR³{ˆ ËÔâÓ!±‚îhFLày7ˆ‡Ýñ«ÔLIœØ€h+/9A ”(^w0(p¤K¾Yk¦ê=Ñ:xl¾dµ ÌÌËždßbèu~=N8÷·…ÂR‹K¶ïÕ¡0®2E~j03`ÌFúÁžšz\@Ñn/v²h7bÓ[È&~væ›9?kŸKle3f ÷† x݃E²’xwÆ“ê}l|Æ‹çj»þÍ}¤²ËíÜèk2(]_â%ÖŸšš‚Òc¹ïö(H¾21쫇ð©°PB? ç‚3HSñå…(}¼ÄCšê0»@¡WÅÅßP)làt ƒYûxLh8XwŸß&HÈtq©âê{ž[)foðÊ«8ì* â°KWÈ'Îÿ.ì?«q !À!ÿůÿHÞe4¾&ï­ÝûÌÃÿNú~zC«Vw0Å~ñDÒHÒÄ…âÄLü?Kæ}›²þ—ކúÙ§è¼ÈQ_ TÀS…—»2/hcP2 ¯¾F˜€9¤|pdÕ<ÿãzôã“ü¸»šP3&‚I‘. €™%‚$8-îÖ3šºÁq¹é ;®ñ¡šÅÑ®Ùò>©,»ëŽcìî;g”_DžÄóDP öW¢R0fD±Å8’^mSº˜<›k^Rhô`E™Îé#ì\h‰‘MÄ Ü"òÖ3Üè‚bIw'f:™U1_ ]f õcc,S„RSKª–…qU™üOºZU¯·.7~£uZ¡dÊwBÏ›rôz ‚ðÆÍõU:ÐFkè½Ò§šÉÖ[,N°|œ™ÌÏ$”)3˜JS ‘´pV­mÀÍ}§â;ßøø³ÿ à9Â]òØÞR¶ûˆ‚ñÑŽ­€L ÓÇêEÂmU1!$S&XƒWÞ‚¬BB`õ¸ÈˆîoñQb’œ¢ÕÜv ìäy5çÝÆ¯ œÛÉjü‰édñ­$P8#ƒ….ÑM²…ÞÊgLTÚ• ÜèPpm‡«!•Î „PQS¸1óHÁw³ËN5 ‡:T]sZ&В"´aíKAÓ,.Ð¥óf¯ù±ƒ«n[(3uØÇ¶™oÐî]z%X‰¸}çw@°•šòär»[¬·mþ±^DŸAà´ÇYŒ•8¬uˆ d*ìÅßY:¸ØŸ3[šÍûîÿsÜ–âšñ]¼’šõWHÚ£ìdHkÅöY\ü(T˜+ Á™"³0H4æL¹—;vfjÝûÕ.c_‡Å‹Õ8`Uˆx$IëX’OôVòL2O³r©Ž!‰ÂÁU#&k J–ò˜Ãb«ì´ª33¿„£Ðï÷æ V¿˜ßì>‘T<±†Ï¬Sd¹ãc6†ñWôˆ¦šÏú÷]÷£+4ÿ¿‚ŸZnÐ>´÷t(̈¨ì™p?Ä锓σPXú˜2jfkB|¹úSø%_„m¬ºv<…ýØè¾õÑ Ae2¯äÍŒd.ã™Svg”“rÛ™|’ó 'ðÎ+Ðvh¯Úá . cÝ–€¿õe& —Æb^¥k:Ííë Ôúš}ÂaBé’lÃéCyíÖð¨n¢—¡ÐcÁà#Ö1À0ÐÀ\øwñ4¾)`QØ#2¢1Ø[86t5¦GôgÇ–EU@rêz€ê^åÜÆæzØþ£eàÍ¡!…Ÿ˜¿Š|•åŠHªc£g©f¬€*ÒܘØÑɤºåñDo¨W)̈˜#ZÿašÐUÅXóËí®É‰“-Sw× …ÉÝÂEÙø mŽýýÐ\ËRóÊx²Ä©¬Bozx³L¿­{ûÔVá`M⎓eŠ.(jqÜ´eû¥˜TW_­RΜqßÞ§¸óå'︋JG¨¿þý6@Ë&Æ„…«‚ˆ<üÅZÅ"ª4 ¹= ”ÑÿõVQnr„ÝËc -…âϲœm,ÿ.|KˆIg8nŠw¯¡o/§®éù4™HÀn/\¥³>¾“ ’'°Å(,žÄ$ÈpíÐC'ÛlÓˆZ E„‡ÈºGÖ‘Aøµêãt0|Þ™‹RàK]‚º0èâdAs‚‡Y3_?Ûª‡Xz¶8ônçÝ{–ÝÝmÞ/cþ–Âq @•¿ìŽÉq™^5]‘ûhZSÜðxp ë­5$}ktZ玻Ðη÷É!JAØ%6þ¯«ÛOhþÜ}1Ö¤ ¯´À )k6'ÍTÈ vGȸc:Þbdœ©Õïí­MàfËÚA úAÀHÞŸ©¨¤Á¿–«=|¿U ºrN÷‰+ߪ)yH'yp aâ#IwHòry.Þ2ʼnM„Á%¤@ÁO´ª ?‚gð0ÌôR’ï€vVzDŒU¬ƒ–>œ”Kô¢x wâa¬9%wüä>rµ¥P-e"·åäÝ(i])f&Ç>£½@Çu}’ÿF™«÷v|Ô¡6©Ü`×@GFƒýÚj×Äu Úì Ji5þ¸c®úÿ7‡:Nv½E}wd9ðÜ ßs¨wh­’ïØV| ÷¦206‰¦0jG§.†åÇÛ9‹ŸP|š?_SU|ß_3ã·O˜lzrÀ¨1–x9\¤g³#”¦?µüzmÑs»¶à]Ž ¸€Ñ «Í_/=ë2üÁ{íÒŒÿIlj8´;Wh>I‹oØô¾N κÏ9¾²¦Ùä*Øù¬ÓÖâÊÛ! î„ÓÕLâ¸Éœ¡Ð¤q£ÏOúÕénÆ7Cïå˜SÝöÉ‘&Ãü}SèÞTzù‘öuž¼žÿáóa£Y£^JBRöBK¾,ßýAôže¡¹ãzúDl¢T Ÿ)ßÀnð¦ù‡‹[cgòZi7—= Õ¹øÝ ¨®Ÿ<Ðw×>¢:­:á&_e÷|t=òú<ŽºbÕ»óÕä_Z móÚ&|ú5¨"ƒÂøÓñŠ[•¥søÍv‡ þCR<wZeÙ.èÛŽ;}î¨Ç½É ŒÿTUf´ÍDUdzôÎÔ›IX˜6'ñXVæ«¶šX0E{Y1µ?GÕÅké羪Ù3–¥aüf@ôå ·Ù´÷Á,°' m!ÿ«°1¨–ŽÇ££^½}ö¼<éX*ú@v©’µãUI¬ý±®¾­µ—låj˜ÂîF; …~5òc²Y ¸1juØ_¥D ý˜ïªÉ=›ý^ pOû_DÅ“™ATÛøö¹U,¦5”v ´ ¾õ¼E›Û‰úîúò8ˆÖ [øoà¤qÇ‘4­’ÓÐ •@WOÌèN³EžI4•Uúp¬NlÈ '´þºùK{~ û4ö=ËçZªºÍêßm‚ÞìˆõÍ®gh¿ò}¨ €<ÿ ‘ªšŠNôa(ù_}D¶”t8cñõ7ÌŽ<“ÿv£çÌ~kúî%ˆê‹ÜÏ< – z°ý:¤ï\84Ú3•þ,0Zà Ȉ?n*wïï· ºggý(D¨°ek_ÔÜï6ùvê>Qíä¡þ\ÎêäNcÿo÷ý½žouHÙ+òìößeWßòúÿÞÿÇèÔç’_›ôráÿïýÀªû»}8ú¯Dû_,ØÒYNä¯%ëù8bù|ýkÿQyóµ´TTÒ£úíö§{¡âa=œ}‡Çgޏý±Sº÷~ÚOûØæ¯§ú܇ÓeÛþ¾.JëÇå5=§{·ê½mnÓü}Øÿ‹Èû';?o¸§›µüò\îÛÛ÷1sïìþæÒ§¢>ù-ü웟áëðV~ÿZÃßç{Jåv™¿·aá̇¿0f`ÌŒ˜FY„sR`̈Ԃ0gº ÷eº¿¿Æÿ–_ïèˆ6舭í}S£Òâ³þù|;OVåöSg' ‘‡@ɇ#àéÍêu;K?£ä¦ËÝw¾ÏçÞ}÷_Ó¹ˆX¤ "sx’ 0 )‹ ^?[áêå׬" Û~‹bÀýØi¿ôó+î¶ùŸºzôŒÐh#@7ô¦ºû5àþîëà¶;·-‰RbdŒ (Ìmª*ÛY¶‡íVÀ]$@î3ŸÙþ¿ïì(£ï²;@ÆÿûY«ÿ‚zdIâþ P\= Oµ…JÀâ$¾(H (ÌÄsDEÔ$K¢£÷ßþ?o¶ÍGŽ"8Lé“üó’Æqfó×þM˜e¸ÃnÆCÝý.Ôï4|ÿµ¦5ƒœb¿ÛåÅeH§mxøÙ³¡î2Ž—t˜Z^.ØpùÙ5ÂSú=ÛÀò†&5—›YEæÕ+PY+Xš°é«Š†ÿêÒj$Ñl…´/𚸅E1+#Í”Õ8qùUUQD]YX"ZR²ùü½bªûL« ã“H C´ ¡Ì¼Ð,3Úœ.ÿülŸ[öS±ðvºlÚ×;€Íá»O°úP†\‘Ó~IÛë-µÌígDŸÙÇÎjžËy£Õ’÷×!ûs§ýä‚|Ïp°cÕ“•â¢zFÁ®Ë¼ÄHó¤÷S²j’˜ÍÌЕ¾ð7Ó,&¾dDz‚yeYñ¼À´îs ãS:ë>úf§o„ÄÇ6ŽŒ{ž¾ãæ¿€Q'i¢Wü}þfrª$¾†KéóéÞ?{’³“hà¯]Ôìb:û+d™®µ˜¯Ã>üó郀æÅƒ?§‹qÚª¦¬Ï+…]WcREw;Åþú~.C ´­SµðÏ íšÌ6½o“yð~äÝ”^övxjñK[Éd0û.£ïådoõXH—Âqô'Jx=¾›½Ô‡Äb‚t<¤'týt/Ï·é¸x!§ ÏÀoõ;_üò/ë.‡6ïsþYÝœsÁÆ}Sý7¨tâ>èÏÓî¡´‰8»äŠ“dK˜A/¼À)ãÚº,¦§7w£½ªÄk€f›#BëI™ÆãžvÍë2¿Š4;+± º:1“‰2ø>ƻȬ$òk9“ľ<«ÈœŸTá0&D'æ0QywýìË_ïêâ»b ?œSÒØ»Ôé|,pÏb’¶õ®ÇwŸÌ7U V¡j"jcZ™ …[,¦QÃ×!½Gf=T{‹öq*¯Õü~OìŸ\Ûgµ´ÐjÒŠ@TãÚòí›–£kÙÀ­ÝCî™¶ç0àS=B˜’Bû•dÑØ.¢ Aýý¿÷q¼uõ­þHÞñ:g.ëÉŸqêïß@‰0»qâCrCª#{S¯]o‰Š|)/¾C%è;æCô­;ã$X+’~{¼²ø€¤€3²»L§kèSÅžòÖJö Ï?`¶{ÔØ½GIfÑ?Üó“7·ä¿hνæ^ÕKx˜É¶t‡Â‹’—¡œûçw”yïÅi+Ö#èÿ”í\-œÕmƒóõh˜Iºu ë&[ö&À€*Q.”¦•2+Eô¤¯G¿Ìµ’5‡Ëï¯cÖI·Ì¸öî5Y9„©’Ü«Søj«ñÒR²ï¦Ï×ðÔÅu$1k™þÝõÿP»ùtåë’»Õ·8«ý’µÚºÜß"EÌSwc;‹ØÌŠ8Õ·kE¨•º\žc°U~¯]®½‚ǸÊ-ƒE«Èá-ýËÞÊè 1\Õ\Éoðº–xzÓsß–=8Nèää Õ{QQ,™ÑNLÖèeÓÑ@v_‡'èÉ,1r4JÞœœ3ÍaNbåtû|ÍfNú…É…"<ŒÜêó‘VeÉ¥šî£%xm9Ý éoÎfï?f-º-⧨¦âÓnn Î/Q,õOQÓç«ù‹6p] Œìv²’´”6ÏÙV¹eÑrcc¦_)z°‚bÃ3MÝx+ËÚ^üMPÌ Xœ¹½4!òr–rÖuQð6.ãhäãxÅiàà²2›*©hs~dÌ«±Ž].éQx¦‡…5ÑUï/„1u·øé©ˆÕ—m}Û7Õ*¶‹·Z((ÒQìtžZÇÚZùDïqº †Ü! ¤b2çç_km†ÁŽSX9ºŒSü¬ëÆ·ÓØ¹±e´Ár¢¨àÅ­ ¾ 6+ Q_ÔiÄ’\@A±¤ÎTV0í€Ø2'MdŒ&¡Ò¹»B Æej³ŽÄÃáùr …û™Ô÷ýÿãþU~.Øì¶Mž©ÊŠHPØ}v"· Y{~íY¢ƒqðÚ,ŒM40+œëZ“áiÃáÆŠé4šÕšH²T0­Ž˜Ì¶Òe²jIBÊèÇ ¼F[§âuíØè›þ?‚؃t²HhÔÿ§?ÔÏâiR0·ÿO3mÈÄ£Ã^ººEö+¤…Ma…ª›£|´á‡¼{ÃYÏñoD¼å@¦x9öÿßû=ÿ{:DOø¿åuéU9ä U(UP F‘?FÃÏëσ›mn!B"¥Ð ”"ÐQTD” PªÁ*´ªSAIB ƒJ”± R R#HÕÄ P,J4B´!@SB ¿&e(D¡JJ4£’TJ4Ò P­E-P… JRRƒLERДP¥4” D)LK+ûð‹‘T¨Ò¡¶.Рd´”#0ƒDAJJ…"0H4 ÐP±%#HÕ*P!H#DJU(Ä*+D’ŠÄÐL”*A#@4$Ô5-%AC­”4) €SB‘M JSHJ‰%P´41P4-- H©H±"P…" $HRˆÐ£P@% Ì¢PТÔ2¨UÄR”%3RÐ5MD”4¢U,ÉM*P´4#­ *­ÒÒRR”‰!BH´4#E*R%RÒ„JÒ1 Ð#J,¤B“"Ä€‘P-AÐÌ¡ ¥%P,Ê-"4!¤H”д(UR H44#E@Ä%B±Ò+@ÒHÒ$J%!CBH„HID DBDªQ@R@´ *´-(ˆÒ!@ÐRP”Õ(R ”4 Ò‘TI„I@¥ÄTP¥@P$IB1U+J4"P-*´Ë3 ÒÒ±E)@PB4 !B´J´¥ 4´ T-I+AJÒŒU51DªÑ@ÒQKRQC€D…Ò‰Id‚©,€³>¹æ´†-—64jíLÂ5³Ó¶Ó.=šF1ª5uƒrhÊŽò„-ª¶ßɲ¶Þ9fq2å-kT‹6¤ÒÍÁê¼{30Ö•E8‘CU5§3ueD3¬<ÎIS’'óLY*ušÔM&¢Û Œ’%‘ÒqÜy—dÉ”†ŽëM´0l+7™6†µ©F¬Xµ Á»£€Û+­›Ñwnlй‡7”Úîæ!ñ§«a™‡´÷1H{5E%.аi:·)™ Vï5 ÍŠ!T³ÚJ!iex˜TSŽ¦ÜŠsˆ.²†BÎé%¤BkÊNŠw [•! ‹»”$0UM[[Óºƒ‰IÈš˜2£* Ã,Hä™S4“æâÁòä!æ¯Z±ƒ&5œQ:ÔbÚaLk¨9¢m .Ù ä$ÊáM<H9«½—Nî`@Ñ]œW5u±Y§P'<Û ãÔ6ÛzÎ;ê­Þ4w–±)2k†.Ó4§¬V©†‰Ò²$ÄÈø‰–¼»¦|4!ͲVC7Ï\†úÙ6ÀáQ8BPœdMHð•ã ÂÚTNï¾*ÞiF„¥„d•HBof±È"J¥(5(d…)@RJ T´Ò€RR%1-ÒÐ%RУJ´(P H* "ÐÐP´+B…H´€‰¯VÝÏâÁÿñün<Ži¥ )h&ªTiT?域þʇüSÑ/ÿ…v\(LpIŠÌü "ýᆡBР?Ρ1aŠ¡ eœ'PCDJE®”­äÑîyw@S¹*©ï~yäÿrìˆþW“@þmþ94¿ä÷KDBÊû’ü!ãñõ~Û`G£#X€á*w>ëìÿ ÈOþdÂ%ý§öUü»¥‡™¼CâÞ®£?óñ°Ì‰T& ‘,J ?¥"ŽT€Œ!B*Ô¡ÁR˜P  AÿW(=ù4 NÈeFèB(Ñ@Œ¨ÂCD Ê…ÃE"{#T•%Ih¸†ˆUJÁM3BJQÇ ’ Ìf–“DäÝÓBàdà’hb‰!êQ ^áÞ‡¶îwnñ¾÷ F‰ ¡cMU> ”RP±z²®ªqW3ƒïNúãÃbæG7Q=Ý(‘ú°ª@“×€á, )åøþm#G Š%Wà_,ÿB¶0! JH(!J’dgØ‚ÁÿuÐb€ÃÙü†ÐøKà™áü¼Éœ˜`2bµ yWAã—(]0»žþ:#†Ø®ìÉÇœ‡h|2š“hu*)QÈ 7€*nS—)êëcƒ¾ƒ¸ØHª†’jZUüÂ2SGýe5î8‡¡ÿå Ù“ ¨’„™ Îö¸:JVÇ#é&~ôD 3­~úW!Qh,ñû¸$í¨Ö2`]4’©'¦Ê†ˆYBV”„ €©–`a€‚d’H$ïáˆd”ƒž)8ø0M¦…2NR©ñ_ÝA¨7|~3ŸŸmvý°ÐİU¬0Ãb(0_´YŒ÷tÓ¬¨ª¬DDJ–1V1-UQLðÃZ0´"iDŠe¥&bš(En¼T0¯BRÊxüÙÍš6!̪Àbœ!§ùqáM; #Çs9ô‹ËlÏhX™¦–ï2L æLL¶Úš(¬ùXöâÅ™Þ ñ˜3½L¾QQa¾5–ªª«øVª«î©8I=áJ DÐmUUUVÀ z:3ÕÑýŒsk)'†üÂ:ºþÒ‚Ã `õ®e³xHCW E©,/Q^ûlWMDd9˜(ÈSxrÆúKà^†ù‡L;<‚–‚`$»I2¹‰Ücõ®hM6 Ã%4¢BËrTŒ‚âAi6•Vµ XRxÀÑ mfjÆ*V2¦ª¨-јe4&`¢4BhK&¬TÆš)D4Èa%7ºAàáð$¬ N©èH1 ÿ¶}ŸDðÈmžàJ±°³7JÈ!÷ýÏN$Œ4Ž)¹p`66gÆÑðÔ\‡XØi‹/:±å…ÔÑGûR‚@ŠRR*!@(´4€¯Tú¨@ÐBó ¨jAê•òB‚£¼ Œ H Ò !ª!ÿ‚DM  ¤"(H ¡’PC”…!ÓP¡/¿.I§‚L“QØ`˜á$sà˜-&K„m‚ëÆŽJR1(ÄD”Q2 DBLP{wÕ'ÓÅ÷’èº¥Õ T%ê5f¼“*Œ]e§u߸‘ƒ:÷"eE±­ë d15‡¹69»a(½ç¦Ç£}|»–ï³|³×ì;[$ „íØå¢'F:$*>%…KÁ W†³®@ëVap8^Ä´5 0OÊÝ“g9ƒËaË\£±±¶í'3ÆC­!@ò²­e+Ž8¦×1ŠÆß~IW]Ë÷}WkPî.½»Í›ÇLaoëÀ3C êˆù1 TR—˜–†$PYÍ3. 9ª@PE'æ$¶+/[P0\‘Qv)¦›;¦ƒ<âvTZg_I°¤B€5MBh£m.]qËilñä´OÖ§ ßÊ`ù;kA0æ!¥`¨"ÆR`d(O<áÄ! $$(ªX€ÌÆšJŒ/6œI€¥)E%€(v$•ñypÔ‰]P)#©qá–M6ôWhò§ÖÇmiÄT®òLWšÉ=P@¡D„S’naÍ… 浡áŒj÷{MC²CrÉŸMÚ$2鯞òtÔICv¯2Á/)HÞ»½Ò 㫦8Àvr бS¾NÜibs¿ "$ž;NCq&a8I$ Étÿ[²[ˆÑê– 3\ƒ; ¸`Ú )¡¦ jü?{;ösª„œ¸ã'^_4zºHEõÃRÁØL7dvó¾mÐÕå¾eӣŵ,wÃë:ã$·ŽÜ‘Ž`׉QÑú­ Òévq{·:4_Þý5ÍíÝ5µ¯^:¹¨q&ÜË`£ßm’RdÔ¢<¶J—cÝJ ¬¤€Ú˜‘?b9ÉVòxåÍDwÛ¥@“!2šŸŠxHdqLmF¯~jb­†ôÖYC]Á ·Ö$ºpM¨¥SD¡Î™NqÍ@Ž7ˆtþ¸}º<_í1¶¹*ª%«¬Tì–R¦~Ü]ZIo¹1kSëµÈÕè!)…@Õ1I˜Ä@†!Bº×~ 峇‚ÓÕži!‘p4v¼Ã0Àg“Þë6g4Ó²gÒYI-<ÀUHæÕ —,»r°jôdl Æ«;³”‚ŽŒÁ²`  ND³ñ=´²Ÿ²QD~+4žûŸ<åâÒgO!Ú”Wž#µ&‡¡áä(o蔞V 99¤ÚK8¾ž›óã³9Eï¼ZC5 )Úv»&Hc‚ûþ2Nk¯²¸èèzõÍ:‚@™5‚/DMfw9ØÂø„ØEú!BΈնg›>¸¢\xw ¹†{~ÙêÈ(>paæ¶"€¬ˆ L­ 2USÓ^¸1`’µ€j &’¦T)t@Y‘’!Ëá  YA$"ˆ5 ¦ êcS€¹jMc‰’Ë´êL#-•¤h EpÛJÁˆLe -FªÔ¨c! ƒdÆËϤÐÍ=wÙú¯Y¡;ûƒ‡ƒ¹ó»G¨n»Kù£r\çQŒ68F^¸Ù­K¶ØfâAYxåæ6f7{ÙrΛcœÛ];S¶—µPD;Š|¸Aþª¯ãý(/âc÷Ê–I„ DòÏÿM„? ?£¢ó€” CRP’T"XÀH:®Ló©Ðóç$GÎÙê6þKÉŽj®jz8> ø9Tñcó&†šáÕ0½ê/ìÐö « uü³^N)m’ºœ’Y§Y½Ð*’Êk95’Ï·Kr‡‘®stÒ˜¼óù©»;mü~³'/‡™ª—ÌÑïžaé3¹èò’Õ™Êmo*š¸ÅD¡b²¹Zè¡0%WÔú’&÷••sK(Š iÇPD£±Ì™¬ðRpF>}–ôø rãdBü w ¶êO spµe5”QGüœ—f„lh¶&ìB/“a€’’Êáe¦¨ëLíå÷ÙÙLý<‘›jQ>/¬ Rðr²Ç‘ÇÙ⿹1yï˜Úá0ö@qu#WA|›Å—/Ww5jÎ!W6ùtq+ƒ¢ÃšG-óœÌW™:ÕòGÎurø[-8cÉÊ%˜xÑ}*{»<ŒÔYT ¾Ð+Ø­î´e‚øYZÊŽÓ™øé‹}._E¡›&ív£ Y1çàö¤ßõ; Ƈ]Õ§¡š¦ßãm´šÞÓQú{Üòuz^ü©õAIÓéW׋ ÏŸ—ךQ§Èú=ž×§õ­bj´J<]›®xý@¶™Ìh{­§YÑé|U8H™­^t# o ×¨ÌÁîïˆws™lvÆD„ ­€žy§á0uX|4Ý<Ñì-g« n5”ݾcm¹ÌZë.ëéµz<}Íå^/Ñô|O£´¸ÆÀÖËÀ·Ò÷ó\Ý=L¾ÿ²ÃøòX)ß[¤ÏA¹©~ÎãÇçæwúkÿ¾ï[ì«Çf8|¯²¿îöýUuÜÇü±Ýzù~ûâî5|Ü6#Îä~îôåëÿ£ô×ÿloBZ×òò¾Ìÿ÷ÑðwüEVO*볟ŸwŽL7¾:׿»þ÷¿Æù^V~uåx<Ÿ;¦[‘Ñò7ܾínÛŽ®ÞyÛÙÍu–†Ï!¼ÆÈzœ<¥6G”æÃÍ@¶ìô¼ùµØG^Ýgííž³ ÍÈÞ‡?Ök̺ú«PD@X¿=ÞæwÃX"Ëi¸ä™™ ü ^ˆ(²·XÏÒßÛúÜÿµær²@ʪ"í.DÁ̸¤\e%Y'Ge ý›Â¶ÉUŠCB¦­œ6&˜¡P‹S-"$czd,w(rÂ'a­CZ–¨66ñÆ:ºI§Ž1Ó¦c«TŠ +!* 5&´Å—3÷ÿFg3ûÞßÂÿwG·ÁÎQÓ¤Ce1¶ÙŠsŠÖ£ m‹½˜Ë“¡™‘õuÐÎ.æÚFJ7ÉCŒxã®á«8Vƺu”Ý–eã2ÞyÞDØ¡B#FÒ¬m GßN\ù³L@á¸Ê"´z]d>÷Â~ÒŸOégdê¨/´çdÑjؘ)Ú!ÁË’HâP­h Tu*%ÌP¦Ujf—!R 5£4©ÔuL`É[.³ ðÅü`–µcɿΩCPäd‘ñã‹w¥¥Ô8éCL44”*iã®NNì”B‘  ‚L15­È]h,X`ÖH,YFÑm¥£"P²F5‹*"\­Jƒn­r@ÕµËGúßÖÞ´ð¥wEˆå§[GÒÕ§¡˜ªòÛ}öúöáL­6Û‰ë#¢s†¦¤õa³l#ËÖW[ŒÉò'Vd@ƈ©i™Mh¦ªW»Vp/ÀÊÜ“5–jã°Óa’L®‘IGmªÇãSV±&"cŠáeÎ5¬nŽ'È.A¼´²Ö)cÕ6f´qº“­‘*Ôh¶Ôšc@ÍBÓ¢‘Pµ—$QÖ]}Ïê‡è;ùÓýIdý´R2ædÓS’e™‡öH(ÂRn© ‘±å&uÊÝdÖHë ,*C" ÉQÀ°¢ ÊUµ­J"•“VD`•ì Ç¢a?.LüÐ8©T‘È¿yŠÂfšqÝ7¥ÍK‰:qRh@ŒáZSwýÑüê5b°ËÄšiHB¹Ââdž•¾ß“5¦½dÙ·WVö“׉»Úˆ‡6sdà索ÕT•ôÏTcêÞ>r°äúŽwab²²[fù#ã¢fµ9ç8­úmÞ›½°9F0xT¢òqzÅ2¯NBIÚÝäÍ,4flMAI¬‡¼½bSçx ¼Ý˜gFpáX {†™Ž)êj'gÆD±v®œ…C#ˆKŠr¥Ê©L%Žío+gÎbeiK¤Ÿmž”nû,g)“R¬’ëm;U¾¶ŒÎI Òm·Ñys øÖZe4bßÅÜ §+9UNç%8¶ž.i²ˆ\[êÓ즌“+x!ZËêaöƒmX9JÝT"çeHuF6RSÔÃÍ*¦I˜CÎôUÍ‘n;¾^ÉzM*iÍ'E»¤O7¾Äç¬Å›ÓZeÀ˜…LK¼‘j”Ê["a9D9#¬>Ó5/¢aaM<ç“·8Âl¥¹£UÛíÃáß}Dkw˜1Æ[y¶‚ Ñ”LÌ»éiÕ˜ߣÁ‡›Úq2)UÑËÚs8¡òóS0üÖ8ƒ4$b0¯‰Ú$Œ Ó¡ ù†„(fög œ0To‹‘Ç-”\7˜m½ ðªá)Î8µ©ƒ&Æ\„Ì“† i™W;Âq‰#3y¢gQ¶×*&v¹Õ«p½žb"•Ù2ãÕð§|Öë0ž(‰.¦ÑBÌÛÅ8ž`OB»&¨Œ,’õlЌɬUβð²åÆ73§6Žjjvû5˜Öò‘“Ž›Äq\Ê«éGMß|õëMo“œM]òó’íææb@çH´¦mÞTŽë8{qòø4 9Ô1ù+ÏÓ7&#mÓÎÑÒgˆøË©Ó¸öµ-µª&bùX©dŒ¬bÒE!íáÑ4å.‚ŠÕ<äPîûŠ*óÕö̽ÆÕ´êGZMƒjÍ)¤L©JÔj)ß"¨1m<å VNk5“ÂõŠXØZrá¥%Á¨+hªÖpÜgmœ¤°o¸b±k]`ˆ‚‘…S1;qU¡ió[ª·œ=Ü›x=âqŒ›Þ8FqQQÒ!HÎ?‚º‰8‡%Þ¨ç7œnY¾^£ ¦L¾+ˆ³]²¼«v‚ó§>&š«* ÞæbÞVù‡¹:&˜N‰ÛyÀšVȹy0E$Ȧž#yfX³b´µš ÃèNBÞ3U[ÔBw­gkµ:Ä$$‹¨ŒáâW”LñÂÖvÓÜç[V£YÛJ0ôîëZ¹…Obß×ãUk2+P­âwŒVñ{¦¨(ˆŠÃãÆ'8WŠ}aÈÆµ›v¸}–'hxÛ)ø­6‹˜[JdX F+™‘q:„’ŵ,摬ÍMK¢¶3vñ§áñRñ"#Lämœ¡á%1Œâ®îæU’J£‹rÄP´¬œf1Ó2TÔ8“훡šÓ«B5pÚLa4 ÂÊ)’¢õ›ÕLÍ-íó¶u’écOä*ÔqnÙ̳U¼Vófõ£õ½TdƒŽ!CÚ7[-h}ßêÒÑJ~ñËXJݬާW¹¦2S‚TDDK›¼Ö^ªôïÎ(Ƶ,iæmdXˆÚ•ÖÒQbgsWª5¶ŸDbmM´Aº§öKú$/kBñaüü œxí×Ë–/4uâcËÇ8Ç~Õä¸ÝöñÈø¾W<§8‘ë{Ûy1¶·ïî;~›ëW3 Ð:?]uœe'[A¯<ï¼q»-$»D’fÅv玜ñU5#øu¾Ò^úyÝ´¸™â|SwæM,rYÜûÆsÖ5ž‹¥LI7Æù,4\¿ùà_Kç-¸Ë˜æ¯ï¡ Ù³ƒ„Æ6¨‹‚`¨¸_q®Q–ûÙ­òúߪÀ „—Ã\?nѱ4q ÊKŠŒpãóÌZ’#CÚBa#ˆÒ¡¦ZÓa¦•i¥™Ñ¡D\é:RŠ¥±Q_Å:rÏüÀþÝ©g±þm“Å´ƒYàX5±Z¶QQP*,EO(Ê–xysO‰¥aý(è•îAm´j‹X`Âp\ÄhÐx†'ä€ÏŬ”+Ðâ´Õ&n „ÏJ¥·oÏšRtÁC2ìÃ2’\Î3MUX&F¤As‰iTà˜,‡¦e`¨c-Nh§SíÌÌ¢wõÉ “¨v§Åd‡&aרX @ŠArlÉ• (ÀG§ )߀YÞ'üê‚tdæ`Nzõ3»imKiÑ„íG³L;ßV¶kŒ4jolÅm‘“má¦L>ÆÒÅ $ͳ¦ˆ¡gÉ8o© ” ëtã 7¥:t°™Y²²7¹äâàíß ó¥¼ç¶k˜b6vÁ¢ñ-qKFH©>dDÓLÖúq»²žƒiÒÿ ¸vÒl¡/n)½á<õk»‹ÒJ€³”Šm’ÏNœ-j³¸ÐÅ0C 4ðêÅË()ð4ÙÔàöÚ9FäÏ™'4¥/LÀµnL]0M¬0’SiÄÌ %&Z‰‚)á jpÓ‘6A‘†0P*kWDÏ£@áÆql{ØC(¦A§{J'[F+Ëm•œ=Iu±F·±Á6;A­àol|àçT_]8yòN5)@ÌØYú^Á3V]€„€tîÞW®`<ÒT6Ö=iÓ*qª©&ÅK%IÕ  Iç·é=üØß gKzÚ«$Û¶'e¡' `åÙaÚm &†rÂÂòý:tÔå jÙ‰ïgŽP'fœRËß•çS£“iÁ¨²Ã–@Á†žšL±¶ÓVÐ Æ”+QìÒ‰¶ƒ’ܬœëèbvgPB¿¸ÚuŠžz$4Ë~­lbîðÃÉæEÌÏjét—P©&$‰Å.hfP7«gJPb·‡´M*¡‹bš¡ž(f—XEšá•8âàÆ' Ë2òˆaÂİÜÔ¶Gð ©== ©¢G‡r­gÕ6¯8ŒQ$¤b¡=!ÙÉ˿ɥšÍcÃ2'Ö±öA1ô¾›´¼ü|­%—Ñ>}ZXÑôææø[ôU9{>½úŽT0-p®>;}Ê™b(u¥­ž$Ô^ó™zÄ¥öúÖËvP¡tÞ—Ñ[QüÁv+‡yÞfp){Ì^¾1½½oo&+K{”o³Æ_¶£4•¬ô×*´ïƒ5Sw£+ZºÏÞ–Wu˜F¶s[o‰UnäC㫼»p¤È‡Îê{¿1˜{‡Ä¸§ Lª÷¾rbºãŒÜXéæ RªQ¶Ú’1ÞL£)”;#QœNeºÛŒ U˜á@Œâ-7)^m‹LZÑ,1£³Øxúˆ†z†ŸßòLü$Xq3{î¤t¿Én°¾lï, ‰žCõð¤Ö²Fdh+Ÿ8½&É6Ç>N%B>›l°›.;+æH9õª(¡¾z80](+Uœ¶^´ƒrM'ÒÖ¸ËM=¨fec¸àôäÇ)‹ª®v3ÜZÐÃaR¸L)Xæ¶Û¥!xö`¹¿£¢q “dëNçÅ_F—e¨ÊÎŽêÓ¹žI89e…@Ðp)ÓV,ªÁ|TβP„#:æC¦¶)ÜÓµ>e¤P:ŒMÃí£:6O…7kž¯nžX·ÔÃö¶cöñ/‚NWËN Yc@A!lJ»@˜“Äq‰¹HçDñ¨©deÉ5§Ý;2Ô8 (rRŒ7tà5˜É à*‚Ǭ³§Jm3W<.ç%:§ ÒŒæê™‚ ¢öíζ²IÀ‹Ol' vÄõ”êsh<‘¤Byâa&¡("¤„"HîbE" ˆc ðs ÓU3ZÀ{NÛ0ðq4ÂTï@³—Yªr [£©˜yKBŠª2,‚E‹DEˆË”¥KÒÎ0±u™†7E‡†Ö Š0U‰§< aâu7‘W…S3q­$&‚cÇF`— ¼zÆšwÀø„iޏvs½¸Ãi‹Â]Ž,f8Q¿w¤ŒÜt½h²4Å ©;:­,rŒÆJÚ)J\–ÛYCc‰¨"F¼É0X ù"dF3…KhX 㯓A¦Ã)´+ª«f\ð) î-c]õÐhù#6Ò;: “>¤tˆ*a›Šk.bê#‡ÕŒ%—Wˆ:qÖ]§7Á¼/sªáNºº${2!¦¨m¶ÈŒÎF<r©&ÎÄ}gÛÌæå¾ÍõÖCÔÅfòÎ|nú6Ÿ&Ê*»¬§*Û@ÿN—s: gpG¦F¸ˆ\ÁlŒ†¬È†¥U£$2_åBH”©©r2PÉ„¬”0–‘¥Z2C „(PiÔe˜ÑU© ÉRшÁJ‘FÆ™ &AˆQÑôè—$냬ÿIñþ'X›³¬•’Œ•ª‹Í¤U†A„'Úö‡M{Ò–Ý0 ” 2O]·dâá·+º}ÓÅ)e{¶ÐûT§{zœ'‰wJŸX/õñ¬á³ˆ*µTN ¬W²öÝèÄaß7üÌ`½`¸ÄosU”ûg8}¥ž3Ÿ=¥kgYÛ3û}¥K¹íwÕ]—Åáç½¾ûÄ.4õVp–/yTäô¬ÿmžcYÕiêdªªvR÷™k«²'mc®£9«t)}ô‰9Xë:½¶åó*“廒¸ãm¨ÂÉŒ¾‰º¼Èõ³¸$É ]ç+ÿ$<ÖI·ÂMWQÆÄmQ‹˜|šáå¶’ðØ1‡œ=ðú';>vuÍJ’ÛIñ¶uy{‹ÕO8¢.Tg…ŒÑy­Þ¶¼1‡©z¢Ú7/}žð¦åq#¶¯ê»rt<3·êäwOØ‘úð\¦µ¸‚³¤ßÏqËÉ£]¤ì¶áA ”h‚8‡É`tdCú=Ñ]XJÀì’ЫFÙG9 jI¦!‰´`fN5ÔÔ ËMPµ´T_,0ȳ›“¨lm’iˆ§‚ôzÕ]ÁãÚ‹z2ï[ÿ4N_4¡ÑÃ=~ß>ÿê<^@ @¼eÂ@¥ àFÛûÚ]T›;ãß5 šÕ¬2W'Þ„ÉHž¹9ˆwfI©óS·O8b&78pËZ+ÉLpnåzyˇóÑ(´Ö+[KUjí™G%ÕC¶vƒ}ýûØüä+øÇþfA1‡«=BI|}\3‹cÕ‹Üf G¶a-¸ï!ˆˆ4psv´À÷B~G£ŠÐlb¬1¡„ËpˆÖE¦(pÅ%E&ZFõç:œHÌO+°A)cUièxȦ–Ò-2G«³¥ ƒPpâïËâ®Uq•Ôrx%Éàïȇ+ 'aT¼qKíñÛ¬ó÷5éIeF9›/¬í:ÖW/dZ„ŠëD“¶R0è—ʇG„ÒV‚*ËK+GˆgTƒi¹§ÛòtM“q_ia8j\GK055°ß&þÖCZ ¦á¹¦–»³ s½äkhÛHim4Éñ 9ÞŽk °ÆôD“Ü|ΛF#–¦»']X;¡EBÍÓ‡ ! Ðë 5†Œ n€êÌ: @YŽt´ÍŒ:¸ÐÑ&¸ïshšbfˆV1òµR5¿S Èf·Ö;Õþoçž‹ StÅQ¥l9 0(v«lg¦–MA§ÍJÓÈôÓ…Uèö-tȸ£1Þèåô@Ù¾I0bbi V"¨¡ÕËfð{Ðã'Ìv˜„|Ž¹Ñ §4+ËD,ÒY!J7•lʰ²CÓ2jxx¡Ž+ d³¢zx/´lÍ[ ;Ì« –QHƒÃ=fãœsÛ|wNÍ÷QwS÷Å!nv•4w¨‡Wtà}in1 Àï!ÕMm†Ædebè PÚH“Ñ ÔKòû€PòD'‹9>ưzçÑš¨(‹´pЯNyk›í¬¬­1‹&Uƒmàá\auŠ-`Ô7ª6ÊÈ =hÛZ#Õ€iów ¦ ,Hž5È»>>z‰õ‘v@gQDQ#ýž1¤t¨Q €Á“™@Í0HÝ}Y\_{·–Ýx?kÝÓ^X÷ßþcC}ÿ¿4ÖÊåpß/?ÃðíýåpýéÿVþ ¡Âáî<î³=Óÿåcù¬~^ÛiÎë58¶{ˆü4¨ú;Ï­&oùÌm»Æ?/%S}ŒËZvýGøxÔŸWCÎò?žÆ¼ˆ’üA'ö ~ÿì R(°­þ5¹ %´?‹n¤¶ŠI-ª²"JYj*‹F Dk€ˆj,uZs¥Få‚""D3ˆ­B5)aj›m€lÄ{SêSÿZ?Jîµ.^¿K?ÖÔ°Ç%(ÚeÒS9þî ¤è-˜àªRá8òÊ%h»±h‘ÙJÌŠJ)I‘à{Î-`˜.{¼àªŠ?sH™ž\—UW€(eWL8Ú¹’UV1z’¼ú,ÃÑpÝ/Ô¿„(Š£oOs9zs=M¾Ø72~¤~ßÚUüS—1Õ4‹úöu³Ó¿wbÛhëÈ$]Z--•¿ø3f¢ -r¸¶>úÑ ?F ’´Q/7†¢ãÓŠ5Éa²lRĦ Ù€â,B€f€Œ¡rž`AC Ãv‚ﱉt›ñlÄ€[ð‰"D I”“çR:rÌ8Ñ&Æ$¶s—†ehÎöÚ‘¦ŸcTõOˆYeiÕ£e‘û7gt<¦qÜþ/lÉ›¢Äçj ×jZ*‘b C¥íÔ'F*Ãl6¡Òu ˜–”¥dˆ”eR ±fKa…±e,°DRL‘ó %ºÈšxa¹°rðV^ã\!ü=íbdŠuJ% ëôöÚÂöJœ¡{—)ÚN£³«CÊJ¹±8ËÅׄž>²æîᦺ.i½°ËC§LªEe³N4^¸5[³ YvÊd¦6øNö¨l5Á؇»šðµÀÊ)’cP˜$ÊSHx÷%ÎKV¡Ý†ed8Qzh¶5—jq«ZK CQ±’)/Ga€Ì:™ž™¤jjSZ±1ƒ$pŒÚ[µK"Iuðä*?ªœýêžTTÚT…$~m§d(Š‚(?Wg4Œ*î À‚‰F €À=öW¿Õ^o°¿žÃ‹Yøî9W0?ÿ­¼Ñù7ßÓ1þýoƒ‡…Ðs¬»¿Ÿê‘Ä×qè§î:ç‘ìôþf‹ÜÕg*úl··Îéáy˜,»]ˆ;!™FdT¹Õ³pÁ'ÙæÈ$Á™u³#<—fµ»hÏ>4>0°/Ñü£öü?|Àü (ãPR,Qeaú™ÞtµQAQ4õp?CF!QT?ØJŠ'úJJ‘Q‹O¯g·ŒZTå1SX§õí"Á`˜Êµ AcûOÁ„Û‚)}Øúî¸Xª~u¡ÛÉT —ùiY‚3¯•¿ájû¿û—øçwÁ~5êX–ôŸÔÇ ½*«}φ8fSËy¿4ŽÏH:ÞöRüŸfVÚ:[¿=º±tì?±±°¦°ÚI¤ñ.Á¾(éG½®h ßäÝOÑãº2ž3¯Þ¿à‡6üÂhxÂ¥ä~— ûwö¿´ìÚgÓ,ñù¿ÞFIÅ<0‚0‘U$¡fC„†BD…L±vAÞcF3Ï:ˆ¡˜b¨;4q2…øY `˜8ñr>å¼ñ2ÍüÝ]M" yÂ…ÐS-¦“±kİÁÝ‚™¥m6DÙÓCªéšA¤‘¨ Ñ@+@ƒBzÃÑ4)kø¿ÈÃNE”æL„S.é¤w††¨õ½t^‰ã/’‹áaCZYG) I€7MžˆÒ›îàŒÚépL@Gƒ~AçHpÁvgx× !"ÂFhU øeL©"™©²xqÛ‡2tNm%Hh )‰-=.BI€I@Š9(e˜àÌ ”T“@ã!¸w_ršþyeuO=œÁ¤©dã²¼§SÖ:yOT(yÜÄ ˆ˜ ¢Mw•ðÏX¸åì]z¬É«00t.«n¨bÌ66J R(Œ.Ëg zú7¿> ßœEèé²€"*ÉQÍ!';ì<ù"i4 4Z´g"#9¨•v:›©¡VÚi½¼K¬÷o´¹Sœ¿"Ý ”Ôˆ®½¡ Û$p'¶š1 Ì¡Š=ý#¢Öðè€fù¥@JrôæÖìQ!r"­¡0„SIky[[DG…±”V [*‚à'sª3¶î‰½à`,+º¯ðCÍð'„Qœ¢ ª˜ˆD=HH’I‘2,˜Šd@­—å§ãw)ýsš¾C–Ó—ùêì7—°˜Ó_¾Î×õÂ}™|Xþ7åuÁìòòUö5–®Ôëu“]ç³ùKì<˜û.Oó­@~c¼?¢D&6˜ÏŒƒø}Ï7×óü_-ýO¼~r‘J Jñ4ÿ¿‹Ï¨ß(‰ý`É " ùÅ7êÁä~(”ý%`”XøÙ÷O»|}‰Y+{ â˜Æ+nü™±ÍÄz´5ÁU[#61]heãª÷å ,N%EArT’ôKH“‘0í URÍh-Æ ÙD‹T0’ìFa¥41Ò‚tù†!§"«„KRn«¬?î°á"¬š^ª”*0ëÁ ƒ4šÒñцÉzµ‡>8]=“ž^ÅèŒ"†¤ÝFÙRn„F%jeÄò—8†ŒaF1²w›W™Ðcœº$¶2"K,<$‘$»¡C¬ÔU\68ݧ f%ãX¡Æ¤]y%× U‹lÁ|¦a!Èè-! êì¯-k`¤§^…?Uü/({CHYêø#¾¤ „¬HD2"# ‘šý¹4X¯#{Öô´¯I¸_ç_ßbã%ìý×·àÿUÅP|ËìàŸLš‚†ØÄôZrÑLƒOÙÉü-^,©8f©bÃF]GH¡xã/ü ´>ƒrQHˆ¢„Qc „4abK’DÑe…Dsa‚kï†i)m†ÚÌ–Ñ´ÕXÅaŒD¬‹-D.Zª*%¡F)'ì¦|÷øo§Lê䆭 ²¤•"0&X¯Þ¥EèÂŒ,š‡ÒyÎ8,4•‹1£øZf˜V TÉ `bbt5dX°cã„ 25ŒéÃWÛF„—Õ 7òE¦L($ Éš44¢I2‘´ã Ó ¦ó¢ã`‰ÒìBÑ¯Ä >*$:“m¸k»t¨&ö…/Þ)3k²õȬ?6“ÈCK‡–$ј‚„.Ý„g}AͳخÐá™02éÿ/§N¸1ÝÓüƒÜTD‰Ç®ÒýÀ§î<¡SãYú 9.†Më½÷M4ý*mÇsMCñ—}ì|éQ^Av ¼ÂFZm®R뽞µƒ8î3×Oe‡#¢ÐÃȨ D)ˆ+8ÏØì™‰8©'•tËpåZ„DÌ8Ë)§’«GnIûo¢ïš‡*¶¹eÛ!I–šÞO7}ÞHˆÒ\žZö4°mûéi¥áA^n^û‰rQ™™‰už¥ø‡©šiÍr`";v/b-<©&¥Ö{0ÄËR¦îuuèe¦¤IÊÁ”Ÿ]™_m]_Þ}ew«“ ýOÒ# FûzñŸO±!cäîÊÎz#úÝ}8_Üúâ !£Dü…õòš$6”™½÷Ub±Èʶ#þÐòŸ´Ð…©Š(hC#)ŒDŽGNƒC!„AöþÝY}³æŸ±O$«Tû¿Js®Ž©ÀΔ´û7¬bš,zÌÂ’s6€Êm™& Ý*©Þx0„2Óöv:J©r@ÔbÀc7ÔZÂyB²C ÁÎkT†F*âAQËpæßT PÉ !à c@çD¨u’’1'W E(¡Ã´C¼1PCUPhf7 ”Ã@ÎçxUY¹$„8#hB¸†ÈDÈì°À¿:bóÑUae l¾ð3°h § «9ûç²õÊ´˜ŒÕtÿ²q,;ºišÞh±k!šˆŒœ†m˜kP)_ó9½$?¤ÉŒ €r<þNßUäÙVÂÓT€º¸ìC ëYl¤˜Ã¸ $f…›†Ò1–×PTæXÊ2Ä¢0V$䌈‘@ s·]æû¾½™ÔõžÄç+÷a_Gƒ‘1=ãÏŸ÷à¾Öæ|¼?¡òþdí–ëa•oôËJ¦—sÓéEš¨TÆ5s†Sð ¿„™% ÁŠ]ZÀP3>_°:";ŸW& òh¹pè–ðêIˆ½¯qÍå±F" Â‚ †PÁ#ìnp¡ÚËòr;q̳̇“‰8õ9`Ë$1‰tý󖢂&b³2ÂLÓEÀõ.÷e¢œI‹¯±l¤¶'#‚-™–]‚èC2RC̪Т°P² óGì[ úî?<'Òd}Nî{§ÐzÆ=žô} )ôè\7ñëBšœÍßxwp÷ÏÍýÇðà¡JÒŒ‚‚Ï X,¢+¨()hÙ*¢óI•PÓM -SJSRPªE‚Šªj•Õ£YEQŠb²ÄE_ÑlPÒPûLh £xÊ!†\¤¢ ¨ÅTeJ‘Ь`¡öì•°÷²ÄA@Y µ‚«A²²ª1QVC£YûO¹Òþ HyXúüzæ€|?r~OÝæÓys/ËŽ_íO÷ropòá>Þ}zl#éõ qZfK:zMI†´iC†b+ËÆõηý÷ŸÿÞú<©ÉCòÛøwóYj‰°—†—Ny:U;±„¯k?ÉÎÖ7÷Ì2¾ ¡50 ‰ýa(fù´Âž}®‡ziZj?NÞ)x=`x¬E(†¼©Z„â^›}fŠ»î³¶#£„IhLŒ‘È2"i(¡J ̤HX°"’¤2=:a§Z¯’ç#{ü)º{™ul|z€šDšVÿÀ…\ù®Ðl¨Ca¥ÖmQ†Íã¤cÇIfY?Ùrk!3Û- Œ ¬Û¿®øÄÓ=í$‚lëèC1úØz¸vzæ ÉÌ$ã¹(R,8æòå‰rýô³“ˆZÞVq`#òj.pƒd6h Ù¾n(ÎêOeål XÃ~D³’»Ë¸’ŽSþéÏ\ )3Puügb µœ6ÂHÐŽX\ïMЗ#]yØI€X"2:§x•öÁ'•ÆùÙ±ÙÃÑy5XzÍÝáÛì÷P‡ù$DŽᇕY¨×ž´—P6‘k¹K–†ÇŸ1ý/ŸýŹVXÞ:ºc‹>Û+±¦ì˜c)&:¦„À—ȶíù:™¸bdm,DÊz_ J ௑|ÜÊ Å)ûÖÞ(PÏRTWa)é꤂éEòϤ„ÙhJп;û>ƒÌšupž°ªJoé£Ã`3â•ÑÙtY/XuÕmW]4p¹µ›\ò‚Mt´CLMš¬Åô²á.ÌN÷s"Gz FŽvÜwà‚¿œu¬b&„"û;0=Sw’È…UAD{`ðƒ^‰ P/Ãr×EôßÔ³°<„1ÇG9„Ïa¹âzìïöÊýs]Ë=yÏ`ô4ÐùÁ¡äpeþÙáu< °èl!›ÁÚ”CŽÉR+÷b1§–%$Ói°×ow»ä3\Ô»Êòí’O®1€²rÈLv‘É_Àþ"j¹áã¡2EÈùpdR”®ÅÖng9ó=›^ŽF£Þˆ#°Ó}»G¬7÷™Ö¼5üý/§Dg ÛÜž ]:ë#òKï„ÿ‡ö)_Zï•’çÄ ¹ßÏ/íûêt¹,ÜßñÖõ~Ï—Ö7ÎIÇ‘®†‡µ^D‘ƒØ#¡ÉØ85Ldðùìƒ×n(>_[I9õ¯)KtDqÇY&ÏK‰íì¿m±C.8[<~þZCIÝ ä‰Žév9c ý/q/ã¢GkãÛbˆnI³EUh„cí%dwûšyúÔBI¡:À§Âj[¥×®Iº†îž¿ 4¶·ÒáVw‡ñ73’L?Öü×í³ïÚZjé‰y1§{7ñFßb³vÛ|Þ«Mºûþ©Nn.d!“/*“Så3ü¶Ñž™ì$C‚ 6ÐCª"*ж*‹í!SÑýý>#]°ªò›ö`D“«,«˜ØÂd1ŒœŽî}R—‘é wôNKÏ“œGgª¾ŠØwüþ³çO}t|t¶ŠQçñ,3 ¹«>‚r3›v’ÖGÇÝèúg?+±õ2ùEô´’¢(ù)[|°=$Bl["2ˆ4÷Í;ž¼öµ´hµ¢Öý~¹ˆcO]®3­¬u6ÎxNÌÓbn;ñ@­Üd!€ð@:|ù#cÊuóQÒÝÒ/–B}øOK×å®÷6ö¶–tK@ÒDz4 ?ið´QM©^X^ë½Ü ¤_[=žCŽ–©é³çw«¦Xv¾»©ž!œ Úéßp>þ”j­s«:]W‰x°üáƒi6™1QêžkšnÍõÓ±‰©¤ Ž{”@y Ð %ÏnŒCአËÃç„0ž=xj)-ó¦u%MžGŒ* 0E“¹½ô¶ÑËyLA`ë±pH³‡1á¨*ž”ô¡èÑd>³¤;=ÁÇLü}ø•dšóß@ⱞ«(t¡USΫj‡T¬õÒ§ï3,'œJd8¨UDórNíU“Ážd8êáL"* grpõCïÛ·máíÓ§—_-ÍDÍÄ}¥Zeö]Ìeáy(ÖI¶ £Øü6ˆ£ß̵G†‡'Œ>³ª“‹ì'‘D‡aÙ#Àz®Hø³‚å;!7¼Ô™dÛ V6¾ü¥˜ùwq×LÞƒ`c¨§ÎÏGä9ml^#˜Ý——‚Ÿ_ņ™wQ.ènÏH/傃¿ÏƒØØ6ßfìx¹Í²ŒuÊFÙà8¥A|˜gŒ†¸ñ8‡°a¼Bé‹]èç|7–ÅÃî³(öP@ˆLt‡$Z`¦MOÊ6õ¨HšÉ ±3$`rŸP­Ï¬§·b&!• RN«B‘1h^×£´üZ§»{åÄåÁzÂBðbøZÒ¯aB4÷Š­½ÓFúãƒÏ|[ꀽ2æ”nxÉXȼsˆËÍü¢ µ…ï]r=vCç1gŸ\3RÙØvI—.é‚loõí"ü/Ñ)E×o°úi®-UM=F4Â&Øùú0™o²®ªÍãªVˆ¿0‰Ö©îµF&6Ï]ø2Î¥ {‚œëzWœ‹ˆcT"Q®v ‹LBÓH6hFCá§d†1×¶Yˆeº¡>‹ ‚„ÏF|Ý>B_]âõg=Í™ß:LvdÛd)o^ËAzû0Š(ÅCìKv•úöb¡±']Ê)Ã}Ž5ÔUø>µ† ³ë²¢«Â–V)4…Fn´…jNö8Í鉪30®«P4§ÃñSÐöô)<üS¬:Üoݺyûï©ÝþÔdB³x! ·AˆÚ‹BC ×¦Å¢¨­8êaâdz>¶ªšŽ_ •MHB•…+á´ ¤Û}[§…0íЧ¼»¿QD ÄüêwƶÉ,! ÓC8AÚkŠ‘gsm<x$'ÐgG·êÔ£¶V" °Ië´xh0e,§Æ—Ïk­Yƒi±šœ:ÙÌï3ibF襆pm™öÙ!å8G ×|pnvÀXÝó³3Ë  ì7èâfG«›ÃɤâBè»R$Üîgnä$ãBl f÷bè»Ó%G£Í„«³uÊßò?ƒØ³èÁn´=îU–êæ(ôO¸ýâ@Úô!uúÔ-OK Ø„²Ð$q¬šÿˆB:´«ž\÷÷»òïTøm¨iˆixqùýã\û±Úx$%úÓ ¢û/ (âÆ®¯¬¬IÕᛜýÑÞ¿Ss€áß— œ/t;n ¿Zô·é^_5r[}ñ}ƒk² ¾¹ú¾Ê6ÓèÀ¿â𾌨tôX½ršbü(Ž}å)æŽ"Eu¼´Iu1Pî|5K›oéΦ{å$~[݇4ì1¤ÎêÓ4ýó–ŸÐåýZÀþzƒÞõSçulÊ.eÍòOÚ i‰æùظ;™ Ńxjrð_¬6žô[R¬oL²sflB0ÎD.\Ê6Ùv°Ì^:B]ÖÃxßÑ }œéë!„Ís†ßççXÛb2ù§m ‹[N[;o‚u(S6TEÅx[°Kc¿| ‰’˜dš÷ögn³Ñ6r!3w=f ëìû:]]˜Ow±BÎ.T·½·¸ãîíŠÈ¡ˆUcÛQ»“Ý“¹¸Â\U:”*ÙìͽÖ~y2‡¬Lä¹¼ôÃOÃåøë¦²×3K t÷zt>êl*ëØ]_ƒß÷¯Ú·qý®8ª1‰~F"e¥^‡wÝ„—3_š ž¤:ÆgÔti xàɇÕúSåßPÞÒ 2IF,:ô=>«––˜ò᫊íÀ‚qit 5à=raHϹ¡zo¡$å†ü´ÃÄh!Cq»{xà†SÑë cb룺0ï©Õ¡Uº,¡¤d¥Q‘Ž5×AeP T¦Q›!ÍÃrOÀ¨xü¸^CËÞÏÚîaȉ* }1!¬óšû_ͳ«?€ÈŸ±q1©EH¡`2?VLh¨ªu!“TÐPzà+—¶D\µt-ŒÈ"¦7)X˜R¦Yd•ývbè¥dPPÒTŠÌ°©û 11-ƒÒ®èpñª,– ,‹1(“MrÒ(°PDXÖ€ ¦2UˆŠ ÉÂ\lW `ˆémF*MNä}„º%cê_ÌjŒÞåVN¾«ÔvÐÚ$12ŽdvDÚò.ÇÞGh¬¾²°æh‹¢[,1…“²Ó÷õó|àx?HO/5 üôú«êS6ÖÎTŽ€ÅÎíB.²$Š=Žu’A„â¥ô¸’²æ'¥ SDŠžI%0цêÌ/Ði/xÝI‡gp鯏§~yàÇI»XÖ é´ý·a­Wß9´ŒÖq.ÚGEìä’ü#—q_Üæ:ÿg›‰$u‚qÿX;öìÓÊ›åC­'3gº|IÉÁ£…d_y¢žÁÕ¶¬Ú‘1IUᲺ3Ù…ƒ çQ”Olêt0î€Ìšöï¿,Û cQe!°¾ ÝSV‡†{„'pCÆá˜=”ÏæÂEYP=’dP=Gù´ß„4á,dåowZ£âœ ˆ& Íó&‘‰hád‚†Y`¨‹QDACMH(6Œ<º2…ˆ¦$¯™d”QzîB²<И€)"3f c2ã¦ú"ñNÙEöTt¤x'ufœÜª»wO™ 7Ô¶øRê;©´.X\ÜMxßnŸ[ë=WË BQò@ÔrÌý^0 §äút¾C±X ?7%Á¶[g ¡×ÂlX^?R>´Œ:–ÆóM#ðµ(˜Ñž°H7ŒIgÅÙ°†xØx˜[¸ãP·è:ñö§–ñ<¶#ºb%ÌÄ=]L9HÛë°€Ãx´ûQµîÜï¶ôÃzãf˜70êã››dõIpß…÷|":t (ž3 Iîd÷½Ê)*š=ìÆ‚ ˆöÎåžþYŒT‡¢ ©Zš˜J†ªÛ)Š (  .¨`ï4>Eg ÀP¶Š«’T%MºË"ɦ—Ü̘žv±pã}¤é"2ç’2©Ý¿®­lÄÿPã^'𿯎g—í’ÏF›yÒ:Xø™Œ é O­•Õ×YQTÈ‚}½‘“˜l~µ•1Ý)êz³£ñsaÙ'çJBpB!‹£ž.²ðTU3ÿ?o޼±Ó>ÞñãJ öw5Ú„éƒ;'};ËÆDÆJ#÷Ð÷õ·Ç'“Å/R6=]&}åô#‚˜ŸµK1 ”϶´îQ„©Uû FÒ÷®pÝ0lŠ BqÀK°{I'½¡t gW¥}ø“9_9²ud/Òù° `ˆcQH«"–Ш¡õâÉXEïLá(§¥/‡Á®P8ó(v¥@’;â˜/Wßí±±èêò‡ÃðÑ'¶L‡Ë¯Û-%¬ †ŠZ¤<0žÃ&€£Cv‚hÅ…ž¸ßê¹/ õJ‰oÞD.ï!Å"•B†'Ì8iQ ÛE$AÆæÂãSªBÙr\Jcì=‰^w8 AŠT;¶(žfĉòËN±[ H9´ æê¥ž•C# ‹Zºè¡möˆ³_Cv‰§ÿ˜¯0@†&$„§ncñúöóaä~©!¨=P°Qoh˜gËBé«-¿‡§1~&‚ÅUÏîïgKïŽx¼h質LC’ÒPd†Jdñ$»ûוÅ]Ù6VóóËù¶[¦ûéê²®d•Hhé'Úˆë'>‘ÃÛÍÖÒ!œ8cUµ!|oªàêö;yXäÑGb…6’{üf\Óëá9tr×ÉóWYUÀjÀßÎè±  [8ìäí•Eˆ‘½Í X”Úêæ¡&!€}h w{’Ñ—¤à<'ÅÇ Jih(ÆkPUàÙíIl é‚CWy–͈܈O’²½ÐE‹‰ ƒ©Gˆ²bH XYê†Àïõ“—NÊ…O‡ÁÞ˜XþwgEüòÿæ·üÌ:9œÄÎ#é‡Vu•}ŸŸùß…­hbæʃ‰œ|ç Âhy¿¿Šû"¾¤‚ë@íB‚@{žý£@ˆñÔy³¢¦!ºÓ«`pÝ£CZš<»áwµ£‰+(ÎÝ›\nIRMÉ7Û|ûN!˜^š³&!"ý€ßHMìBÀÒÄ\ׇT ¤ñªj‚4Ð9rJðA Š_> ^®7Ÿ¸åTíà LÞtR’tÒB2–d#CInc4sW•[x쟪8^"+5Mtp2WÖ êÓÔsA'ê£dû¼kb4TÖæ x©"RLÏREb @c8(Ðàþÿ,ŠqNfÄýõšm"Zt2m43*)êHè–3 v)¤ƒfP[ìèJœø 2fmJWƒFb%%¬ ó!Bq]%&…éDÀÓÙàÙ@`O‹TÔk3;1A6¹J*;B‰ÉD„M¯)EñÈ(þq"‰J@¢¨óB¨)º0¤Áü?øæx|‡1 û н¥c µc‘oHmÄW?·zú)ÏßÇ´Kû3Ð…¥ ȾUó%ŠišJ¸oÀÖSL Ê2™h(Š -¶ŠŽ)&HºE¼0kò%ÅPleBH¥¥‚ƒ=.·:o"žrÌB‘£HÐ[!ú+À±@"áþz m( 7Ï$,ôá½ c¤–€Ñ‹ 4r$ѬBƒ”º €†Ë€¸0˜É^Tè’qÅI\ªÁ DV2x,ž Ä6m¬B¼ 8H¦£¢bh:&ÉÐÈÝ‚Ágè&Óö¼E–RÉR¡h ‡&‚‚0 ²IUÿ*ÃŽt S¿ðG)Q­ù(â•®…ë·Sb„ÍúÙÌ—‚ú¾÷«þ9¿¨Š£c’ ú¾ø&ö68 ÉræÄó€µ ü†$ƒÎL÷&)´'«°—èă³1a‘+¦®÷-g^ìê-."×ô4-îvA^Pq§Öä+)²?c˜u`ü)|¡·‚$Ì øàÙ®ÛU€1þKRAÜ‘iß„g)èÀð~_ÐeϧT¾UËNÇùc)˜ÇÃX:)),*ÑܘCþÀ*(÷òåæ¶½Û£9{âzù}{Ær;ýàî™§I¦æ™Ë>b³!C ¤Ò,OÖÌ32#! Ĩ¬2Õ1Jý=ë¯ÐmÁÁˆ”8g€€vvf¡/$Èm \önó½7ã·–eÅÆb „hh›bÄ¥#!ÄîÃ3ϸ ûçN0!œ¤ÁSÊ©Ï}¨îÄ#Òª²Ø³Ã ª~… òg Ž¿7Jœ§:rgjgIÃ[iZÓg¤óD)ë§M°‹ÙKÃø,ªõk4:ÃLõEÌlzop®fܹ1ӴرÙ±Ü-Ç?¤{C)ûeÇËtÆ:5!"wûû¸†Æ ~œ —t½IM„ÅH*ƒ=k ~½œ=üïã®ò£ ȉ~çT2.ά\ñ-žÍ¡ F5Ìâš6vógzRÒu¾]­âQÏ„·;êöúwtÝñà.†qÒàñ—²}0â#Æwk¸ßØÊwz¦ÃlÓG…›ã—¥¿¾Õhi6>ÇŽ G×žŽ£^G…òà9ÎZ·q—ÀÕ4éǤÚd¡øT-¼îI/î™ÛI~ ôÞ=r\/¢ï¯mÚ¶è1å§: Øšؤ5[ÈÓn£^Wj· +«™Eb•<›÷ËI}†—Áà›âAœÚêŒûk&'+žPí£¶£[ÑfïS—(|· œ±:„*÷Þ’îüÉãM÷;OŸwæò@\8@ž[w½8é\û2e¥¼΀ÚÙ¶¬êYhƒ\²ž×M.–&D¦G[³ÙfÈqW˜ZÍWçÝž­%F±Ë{*e¹\ •ÅÆ M5 Â"!RxsÍZåEÔºµ\P‹Q+PÞíûôVúp"VwËcNuŸÕkY)q“ã5¢%pA†qÑs9Trx^Ùc¥µúÛr^èdE}Ârbµ4õá·[aÜ´ãŽ×önbÓ:ÒÌø6V2pËB^hÎ1À´èON"9ö=|ôJö͹ZTë7zß.ì½R"%ó%¶P»% ˜;4LEePCm§gÚ§}°a¬C± ¸¿`qŒï÷»ãgušu¢Sß=ó´óŸÉ<$i´»iÄy ¦Ôêγÿ,‹(4©"Rrp‘²ÑM&ŤÈ4ŒÄ†ÓmV %4|Õ«åhŒá ŽüMä‹ú§üc9ëÌNpõ¨**¡wšÐd‚¼dœ ¬ýa–îYE…‹ †Gw­Nv£¦Àˆätså§eqÁ}š†äˆ:ÄXB-;NT:Î2£Œý¡”-’ƒ(â>Ѫ1„^04ËŸnˆ§qܧÕàCÈc ³© ± ‚[ÃA"óüóœÎFÊ*ÌîX[É‘ÈP¸z߬ˆ,DÕrÖ‚i ÜÂnÆŽgUN GΟÊÃÌvž i‚„X„ ì„‰ãK¨ Vµ‡oz‡<κGAÒq†X¢À.ÂÓ¹Žù@‰D8iIÓ i6œ!P0N_mšN‰4¹vXN¶bDÔ>c™Øš‰†‚bj ¡„š1~521ñ=£•$ó'ÈIð8²t.-ýª°O<…K?XÀ¨¸ÀÂß²ý©vÿ}€+­ª7Ã&Û°ö˜@L”!6LîGMµÛo ®(´f ªgt7jöBnÕLB9&‰Ìs!!™Œe]šêMB;sñœ¤Ìƒœá‡!Øìn'‚Šy(m‚…4q3MyÌîï.ëQs#Ì;öF»»,($r™˜à«WY`GÜÐJ„&ü}‡©6æfˆ˜ë‚²b²LBˆ,í H°‚–‰‚Š£Ï†âtCÎn¾C¤Y8Q+DZk³$\˜m–Ëed„4Û8â ÃàöÇI­¡bá— ¤/Jb9ÉÛ]tINùÌ\Ѱ„ÖÜx@ázÙÓ7 ,ºÒ1rñ;·šSˆÜ, ù•Ór«1(®LäA=›(ˆ‘e¡­çCÖãsËÎʼÓó |Ý0OÖdÏΣúš¢Ä9%ÜlïN*ªŠ¬8ƒð¹îÛÇlÔ24·0ôy7†æGsrÏ‚Y`ñ((¤`ò(‘ÈG6ƒÀE˜,GÌ@r@æ60Q#†N䛨Üû†ä”t2l6  ƒ‘ÛEp` a¨$ÁÙ,¢>K9 ÆÈí¿®·9Îæ…–PæQFÆ 3Æ“mQ­˜ÜCQ¢ƒc%EmQ-Öž¶NÛÙÎ3¢²â ,FP9gŒ›àrG—Â5Fc,팘xœŽÖ3#4CºÐÑ“ v¡€ÈÊ ÍÏCö¤“€¯7‘Û®ß[¦dãCð8‡(ذUùƒ¶è‡Ü³8/““²¿ËêhÞ:8$üenÍÔõ6³ dî'b(+Š8õ$ôÆå=†… åžnAþ°S:wˆè2Œg‡ÙÚüͳµE.!ÆX!ÒH1ãù>Eb ŸËR),°';ŸÕþs”`Á¹·!I:f6ñàÑèlPlÑä~È1ï2Þ2ÎC¸ÜˆäPš°r5/Ú¨êv >"ò*èÙ7÷¦ði7 à7aƃC°Ö€êKžÿGŽÂîŠ:\:ÌM˜Ÿ ê¤á<ì©c2*2 Éb\2D¬Ì¢ãJ†ÉTkûl!±±µ¬&ï¨f‚ v-7bNä „km#Y`Tψfò_G‘€ÆçµC±‹H9+u”!›%çºE†œÁ‰ˆ´sÐU=8õž%®wl‡›‡iC¼™à®baÔ~Yæo‰ ëâ¥Dbxv.ÓªŒòC¬x7“`¤}|Ô!Ø)dE&‡” ƒ6…¢á­2ê^¥Äˆ¨‚Ê—–‘9‰$‘Á””Gš€í#YYz¶¥Ù î胱¾;÷mƒ"¡½¼šw[æ8õÛ™67[í£s"790@pXþ袌ˆS.:2ãww+Ù×ËÈ·Òdï]d6ó4p`\“§¾ìg¨ tì!~AÁ]ölòpͱ¢ór{rÞ®Ì6Ìoz#uEw÷‡„!0¸Å=T`ÞÿoÁ&™›É×úQ$ßÒ“Ý*Œl-Ï=,‡‰AåÊ"V$o ¬ˆÎÇVâ_|¤Î@ HatÏ/òýS~zv†Œä]¡’­Ng ïJ]ÔhŠûŸvþ6½ezŒt,ßÖ=vû±æ|=ïè+Dw6’~þÒOÞ¦Iná1|›z"WØîY h=]þfçl úæwyîY/á\¢ – ·ëM}Äð‹ ½ Í1ÒG‰ÎБb(‚ôç¼(s©¿Iù ö77JÛë9ÉW¿QŸÆÁ‰ë‹¯XýG§Š61[ú¼TâüqŽþxP›Æü Ù{¶Nh“pÐò„zQœlCDcßïö¯.¯–ÖþÐY¨„:\¤‡·‚ÎÞzÁ£#0¸ûó'=kÈÏŽ8Œgª™|Ñ Z)²V;Ò¸a ô_\’4…›î¨Ü2+½q‹YLÙ™a¼b¾í†¡iã¶››$Ûˆ¡ •qÓòk•W±|˹XÐ6‚È6s¬uóæŽ2A¢³âòd2†YP`\÷² Kªîu8¦Ñ¤ºC†„íµ¨Ô÷Ì,ž§C97Cå†ü‘4y̱Îã°¸ìÆƒÓVM^JTªò ZK\ „éóßêä'‘Ì™c$9ÉÄF§ÁŠ¿7×^ý°1‡E¿REøuò–˜A¨°¡-‚º ºÈ/¯/†<~JéŠqèÆ<èº=0HIÒà÷ o‘ƒÄc Ý}˜ö²ñ€Æ_,‰ LbƒFLõ`v ïIäV +HûžpHÁ¤-ä‚®ÞfÀÑlBßn»—Ç\  {›ui T;­á)¼›Ä,3:žhMHœ¤±bÑrw°ßc¸½*O ¯šÖÖ¡nìa¿0¢£z#ëOšìŽ”ÒAÕk4zKjרљ~ó E‹SI´Ú`Hä&Ve‘KyŒ—VˆöŠ­Ü]ÑÔØÐí¤ÈÂ~ÞeÐá×ÌØr°¹ƒ´4c KlñŸ?ƒìKÜýgúÏõœÄô§õç|Ñ#‚a„B„ ˜¢"aO F`=‘'&% í¬k†@ï ù$•÷8J¢(qZÁÔÎíENwŽéX°)},pψeë»GÞƒºg‰2+Ѳá$»»W 6aÈ—D‚cî4UO°Scö»ûðØëù4“ëÖÙ ¨E%°~&ÓbdzGæ bÊÞƒšÐô®·¶1ËpL‘ÀaˆV@˜ ¨Œ¶tÝt¾ah(a]lžù='ß 44"ƒ)ž(wž¹áÜZñ¡;Íë ,ÀáKñJ ‘k,ó’[&a|X5D’^åõ&ò-\7ç_[9Ä–……ýžJNq‘²xãcØQÆ<þ_»å_š~ƒ¯Ïr?Aæ¿}NOéõ¨Z¢e±NWHîY›9IèƒgkòmØ ¥Ê2k+€5ç&áxö| ¯‹ÛŒŸËK*ºaËGÀj>RÞ;ø¦Át$ÅÔC3P>(ÑñÒH@‡KˆŠ=9,ìØºÑÓ˜w†*œÑW‰ Ácåò#qøð)’;sqù:8èÔpÄÛ6D É‚‰³ä5Õ«¡ÅŸ”wrYÙë´bÛ‰¦ÙV†Ô½Ù×õt#ÐäPhͪi7¾>n'ÚÄF>¸wº–Œ«+!÷§“‡vLxÍÌXÜ25"8U³D‰C‰ 0儼Æ4A‡p•=¦Ú˜ ÄÀ1fC 2¢$H†ÔLÃ7Ý{ñnÞg_O¤xX8œ§^¢C¼†™·LÞ¸Žº8<‡»Ú$6}„OVéô៧7¹Î÷‘\‰uîŸI±PÞµöMJGé•̆Ž=~=Ô8:a‚átYQæâ9JÑ}øTSÍ™<ð-ÓÑ=xé—©ïžóFÆjÑê:ûýûã‰q”¨¶d˜ßY"Æ…RÃc¬¾Á—à0࢜²NI0` |aÀYÇ(Aõ³@‘Ô¿)v±hßc0ZtΟ0IìÎÙìåk“bNÜ™ ,=hc$x02iðÞ¿¯íŒøó b.›y:ÀY™|0;7ÉMÔ:Ñ}DA¹_)£L8h’eãâ,2|ÌÓ VP™Y·?QÚìÐ!DRE1PEŒ¹ÑTÈ/ÇÍÍö}Ûònàp6¥_dg–îü!¿ tøuOA]@TƒìúKÄ02Œû`bþ `f„Æ$ ƒhb;±þXûTÑù G£í³ç|Åàs­•5k#ž@JQ6 =¸RR3)f¯gåûóô|5……‘ç¹ÍÕø ¶/ìÒ9õÂ/.åh2š¢©öþøÓà‡(’§­nÁMQ],‹¡-— üóìðû|ä€çs”|}Ùs¹É„Ï·åœé¬‘ºI"\–|èDOäÙ)òaR=ìÏ“m·ŒVzôw®£® È>{'Hˆ±Îtï¸;·ý>¬óMšŽð`•Ĭ›ö³aÂ|©ì¡¤œoñ|ý}WÒ²¯Ïv9 BB„Ïè~ìÇ?ªs àªïÞïnë½x9UVøuλ¼iõrH/¿#UÃÙ˺¾R¢õц6ÄÚ‚øICë_†Jú¿ zÈ ¡=¾®·BH¼>¿c9è-œ å°¿JŠQÖÌÃSðãóÈóSîÄ~é±üʱöni3ùf/½ÁкˆÙ›ûòV¦®ˆgÖ™ñcJ>­TRU'ï€\4Õ‰Gí•fHá¹x¢(5+ûLÒª|9§@j'˜÷˜ÇœæöBg£³F28r v6?âÅ/ û^îߥr×0 LŽÝ½rï§Õc‡ñÅ´¿ªœ¼!Ó:¿(¶I&…§ŸËw°°þ&‘×½Áò j§@a~_ ¤ÆÅ" ÛƾÁîýuzyÃäu€[ìwãçÍS§Éìøý0ñÛ AÊš”ÇQ´ü:ÕkKõx&:®£f¨Ó¶³ Åx·-Òb Dt‡iÁ+RÚQ2ôqÛÈ‚›á#™ Ô{ieΟV´ø5VÖ8Èó†JV£0c±ë Ö:5,"ØV’C,‹ý± ð#Wva.+6!kL[a%êàuý$~ôåî»þFi`Àͳ‚ó"¤zgÙ¥*¥-äÒËCy¶Ä€64•¾þí¼Ýâ(%ɪ S^÷†è˜3‘„ÿ³åÞP_.€’:g³õ½É7xƒ÷Úôþ÷†â¥à€¯S­þV Ä?â~i З ÷‘ûÏfDó°j2<ÓäpLþ%×àðk¼¾ðxpøÂõÃΜÁ2¡ /Å÷ôwù çî¡y†ªí½ž&½ìŠœg¡[<§£Ë€–ÿ‚€’Ðö4àÝóW°¾±8÷\ÉÂ5…U[|´ñ{ü9(÷íú–cŽÉ‰_µç±Ûd9׺<·ºÍ°¼Æqâëß0 ¡µv…s»ëmÕ¦v¿½ö+úÿjWþú36N=oD ×CQSINE3;µ „I??­›zœó[A)ê|O‡§+WíýÊY3ÐWóÎl5]„‹J T ^\ÕóU¤c¥ÁªG./Ètö#ì‡ÓÃí3¶BëB‘&Vàñ9#­ì׆{kîrPúVóìÙJšámRûl®¨ ±·‹íi×CÝz„t}爈=Ò[W_ëJßfÇת#ßžûuÑUñÑ_sJï•#,'ôÝøao^½ ìá$98"Û' ¶ÚOÙ¨ñ¦ßφÅwó%`÷m)µÀ´vã·©W¿ô=Eιb G.Œ4³ŽG4”ù`-K7í|ùqéÝU :¬̳ ŽtTY¥ÏmÒ9äDTy¥§Rà ö†»¶¹¾ŒdWÜÚŪßsÚ„Ýíº*ô1/C\¹;‡ï?ªø9íKÀÜémšOÕ²£gǦE¶»³f$„‰Þ=a 4s%W‰ ÚÖ¤@må¤r=WªÕú%Ž)Ί×&¸p ø%w™³«áÕø¾¡ò$! ÝœO‘ÝȉháX¡°i™sºÏ”\—½¢&L¿KÖl2µÎÑwÜN™µa†Åñ×#óÛ(ãXÞ–¨Ôp¸r§Äž#r|ü!´;”©e°W¹®à_ðÈxš˜»8ä;ÂfáÚqœ*’Ë2v#˜¨V -äÝQŠ&¬î’œWNzWy~t¸œ¥(~¬³ÐÅ[€2×÷ò—*¯XšY_årKE6-¦ÍìÉôl!Ll4ÅA¿n¶èâ" ÉAd확'Írs¾¡Ñ<,Šy%Wn…’pÕœµì º„У*žõ¬3ïäÀEdACaAXЬÐR—çÆ’¦œUVÚzÈu3‡ØRŶš‚s ?]‡˜7 £ 6"!wI2DÚØ$M”••¨#‹lU Yú¬Ð½›6Â.Šø‘/•ðµfÖ"¥wðÊ*U¸¾0›É‰2 I‰ét¦  ú˜;ê0‚Š¥)Rµ,¨RŒ‰µ#%¥AÑ?jlˆj’ù4a 0ÑàSø8N0z ‚ä‹Dq!‚K+ë\\!§1€‰U)Æ® L"~¹TL}å%¥ªG1Òy¡FºìY&6 €F2Œ)de2ÉŒÃ1aã€ûa©4š8óz©w>Ç¿ßÛß ÔøxGö = vž§¼Öçöðý]»¦êS "ÁK ˜rÿh®Ü7·Àt™¾Ë(wÛœÌ}O®:/-Éöµœ¿Á€«f÷r‰c`AÆ+k߯±KcC·£ï­Õ^N‚R¥O£lÒl¡prp¸— =¯€²Žn©…{»L9|î¼që.„y3þ·—t£¡ënq·iÕ‘:ãcs>AÙ ‘àî$Û2ÈÖ«Xó©÷kvðéÁ"Ë®W†å¼ÐZ2àfÛs`ÒBYMÐf„3MdÌ„ $´/JØ]ÄO¢JðîJÀW³IŸ«]za¤ÚchkSÕveª¦ˆtIY_|¨yPàC„áö{é8êÒ«˜ÓgŠJ«Âá™×å¦;×;©ÄôÖ«/G5EÛíe&å¶µ®½‹iëÑVžµînb¨óN¦‘x¤—g“¥ðd_}w:¹Œê{ÑÝ4Dz^»ËltF$<ö±ºóxòí†KÌÝG‡}) $$$’7Yé÷Y\l>"(~¤Àx ›¹¢åÜ;d³õg(ë°÷ÙSÙvœˆmür™×ÖÞ¸ ¸Ií°W$¹Á|X3¶5Іt.ÃŽ\Ín2†F‹ó]IG\ž0qu×µd"ÇÁá€0" ÓenLч{¬ØÙZ½˜«ÒDC…›ªP²Cì Ä1)¬ø¬È[[SVîN1ÉÎ ‘•ÆÝú6\9 œâüEõ“ða:×ìYÎb¼ç©Gò©£ÚcÔw)zžçÅâ ‡7Gw›æÎ}ôè±1¤0ÚN™Ûê›iÁÛ¼òÓÒ"4Ì|Í•›Y¦ÞÜI€ßãß›ãèÛܺäÞ‹Ñ´øßÃÉ'MlNg¾ã¸ƒë>#¹×‚;b å‘áÃÇ&êðDpÒ$ìr%&nëmÔ.w Úz*k !O~`ŽM=¦úÏz:;“fYÑEELÏÒR½M…§(M.ÔbXwU˜AîÞæcÊû°ro>;‡²þÄÊ¢L¹„ºn¸Yº‹‚ùö³—«Ì’Ѹ6ÃTŽåµ›$¦Øük˜,Z‰%œ¦’¬¹*Ì¢Ëæç $ƒdBús<[±×a“zü ¢Ð€Îøzf(ꔾ¼§¹¹ŒäÍ8M«´fÖwGè«d]v"A};ºí×®§…÷Ýû§ÓíÕû Ô¥eßè­m8É£\Kñföu§ð+‡ÜÛwméâ÷|¤’Y›ï}Û"]9Ì>îÚñ|‹ë¦\/"PïÙ9•=tž 9„¦©ƒHgD¦n>W=RýAØÏ®ï©murèxÅ:çI½E“áP‘\ˆË’ÂwÊ™›eð›L)¤ˆày©—fL!ƒ˜½ŠŽ.2!ú ¤¿¡®bj8B#5ßǯâūݩÁoÒz©KNøŒKüÿ’n&¦ 1Ó^å±É¦ÂÞ™BZ˜4Æœ¢šžªÕ§Ïn7ûdßsÇêŒÑÉËŠàÍK×xÍÌŽ} ëëD$…æØ”-~ø~¸ýWñM7niQ}2§ŠLN@‰gߨ¹ö*š"|PI… GÔ`ÐŽf¢½Xyè„Y!ê¸aéê…:¡ñÎý.ôu–àú¨@U‹žÙz|"ñ÷}šlкÙÊ„DvÞºµÇ2W–ÊhA=¹_Óáö‘þÎÉl싙ݘPÏ“d÷¾µÅ=ô7XÀRZSÏw£¦82Ø}ÿNÉ#™‰3)É J-‚Aû”Ìâ/‡QðõÇ=+þè¿ú§"¾1·TMUtB`ù˜!ÀE÷RUºn(’‘¶0Q »˜QÔñb9åÓªbÃ7à0á„¢_«âw`w›ÆO7)­¡àÊ̢僵ûQ‹öq´žn–m˜ÎÇŸ2/ ŠP=ËñTñØB×|M^= z8m<[ÒÍÛØ!+ã#Löpç‹=uƒFýü¯&bòkè—š£¢{H8À€Ù,ìÅòJl.Ýš^íªÖzGÐÓ(ZTVyÞçÌšÝ=vxº_i˜°ƒXIæ¢æOG_–áœ!vµ»eyÚj­ýó›/”KÉìÑÁ¤¤· µ˜{=ß‚€ ¡íÄ6o`Yd´=mÂB½—Í@ËÜjb›(F\Ê‹ ÍèœåÓb¹† @‹½Ñ…Zçå¾{lÛDc'2öaÛûÓž»%Èêa•Pªi´i“ä’ºš?;ñ鬖ºû’í+Î<ägtZP Ž^¨$ lœÙ[¾ª†õ&ކu #º1ò)‡õû;Ö-–0Â$“`[Øþy~¸gå}™â6X†¤mø÷R…)¾öèI³—Å3ªIÛ ‰¢ÓÍôPZªà!¤>^åR£MY¾EýøWN¢R¦ Α‰ïÖ«jŒô èÀt´âD´8:õ;1\Ü ‚õioͲxØ®Q­K ˜'*† !ì5¹å-T¯;q;5ïßv:åTôúÝ¿oMNß©áÖ Uõkǃ¦Ý÷ž1ˇöÄc¿kão8wzË ÛXýû>ŒgðÕx}[ûñáÔ˜0Ÿ=ϯáÞkÕsÛ,çŠ÷ú/>‰ïÁþM¸æê[ Äùü3ÏDÊiâ2£‰ªð´þ0s÷œæ1Ÿ½×d`w}йÒ0‘ëÀ|Û³Æú¹`ét·+µ”…9ö×É«K]Öa|¯5}zwÊQýùk«½BÍ\±y_]'Ó:wR« þ‰®rÐëlšˆ~;Œñ¡â”ÞíÝ6åÉóµg‡o‡^^mó'f9mñÏÇÕìú>ŽõK†¹åyÇ>Ç·{qlV7‹—>Q"Œ\üÇÖñûYÎû|º”w«îN#ÆŽ Ç…ãc¦õâ¶ø<5ª¦x–uA:=×\KÓª-¬‡§Dœ²Ë´…ª Ý–T|Øcyi´s§ßãñäQ¿YƒÏ ä*_¤ýti:Û«rãå1ÏìRéGpÇn&£Un1Ÿc«2%ðÅ–á~Ë*%F_4t§ï3™<:GÃQö=6'_m¯§]kàñÇ}ÞHCn&=ÈáU.üN “.Èzö¨ŽÎóMçú·~õÌœÌgî{#K±ðc'‚c© 9 4h¯‹qÑ#ý>Ÿo\[Þ=>³qk­üöñðRÕC«Éáð¿¹ôóËn¼²³ü²ÔôW~f_‘i¯^ì0c³¼¸çŽY]Úî¯}u”ˆðËbÑVWIa¾f·Ë9ì†ÛN!òF'HfôkŠ*ÎXRæ¯.k·g®ÿ-².xï¶UÝç’UíÍš¥Çaª…L)·vš\Ú#»û Š·Á¢ì»þâ¾N{tǦìxMòmÎlç™;Kü¾éð%³Œqyý˜øýnn$©žzä2p¶¾WL Ιœr‚<5×}•³Ï½3î¾íBÑV©ãeJ¾8§{û“»U~^3«ªº´'÷ æ—6è›\‘ž×XÓ~^ò$LôuZ\<6WñÏ—™.·$Û¨Ó3!k†£Õõðx]N#o£Ý¡*ÿ·ëï°_Go£çrsÀ.¦H<¹‘|[Òß7Íz Ü/ÓÝá]8wnP»/jnþ«b›ß^Râu •ÚåÈèáéd²xYà5²ZõÑx«æ%ÆãtwmÇ1Îç¤-;äsÑ!ës³E/œòÚGœ27Êq†oM <ßPW+¯9Á#ô®i›Çb6ÌG7±ÓwˆÞ ž¸µUîêpÓK/ñøæÛßW=;¿xŒRØm“xÙÆå<¾8¬ÓpŒ‰¢ùí¿ŸW â6ÆÓëv¢Ìö½›ÉŽX1kîjÁß]¦‘¦ÊùìÂÑ~j÷mÐü.òŸŠ¿\:Š\4Ÿ ãÌêæ娯;|mqƒ¾ åA¢¼&Äl¸GqGUyCÇ,˜e„¹x©†þ;ë-í5›ï³² 5´5y_Üq©hÜUÃC­ é°ßQ·fÛ2VÖ^k¥7e+Õ‚©£[ÚÓå+¯ƒc?×ë¾5G~Q½ÜdéGЈ);z=uu4¶0ÝXÞÐëÏšå`gÅU½úò©š¯*J×IÁTúãË?gÃ^ëcV?›íá~;úª3¢$vÜÎ7s¯¯R,½½M¼U™ÓÙY·W˜?:îºzêÓü¯$ÎÄôG'±íºŠjÕØû­ `ø¯°µ¡ΩK(ÊH Yû”œ¢©ÔäjG³t‚ÉÂ8Wî0µ£‰ªšùUz¥U‘Ä4·G.Ïü@>: pgY×)\µþQý LõÙ‡DZcT×(»úùÛaBÿŠï*ïbª¨Â©zò©ùl:Ûý`‡a”‹`d0†gÕ‰7ÏD>·,trÉTĬ`—;Ec’‚=ƒeµå¹IŒ7G½›fi^*åüW|Êü¹±Ô5OÇë“ð—=RÖxçîzeguœyè–º%ž–hEñº(•…=Š¢qvyËUV¶=F»HjóŠÃ ‰ì™•žôD͹šiÁÙ¨éÇLià ÊɽŒÄŽoä熎…ä9* 2­L ¤Ã¡[x©Ñž~¨î¨L… „?«¤›î'9Ï©NÝTMú¼Ú혽{2µñ—A©ãžU©5rC O Ž[¨JuÕu±Œ³{¼¥Uë¾aŸ›ƒÈqó”„™%ÃüdYeÌòxcÕÝË©¼o|;™Lþϳ×ÁÝûž/‡¿¢ú~ÍlÁsnÜ1Z=Ôk‚©Ç·éãSä--4é×R©ðáÒÞuVî(šk"±]‘CÒÉ“ ¢Ø„¹´EP·j–‹npnq® ¾‰Í%[çíhöôÍÏ3w±ü/LK6i“7]‰¸dÇO?Wg˜²A_{¤*JÙ+Cþ1g»;IÂÖÖx¶°,઄Ýí A'¨zÞ/›ðÌô¸n¾ŽµNÁ÷¡§W…ƒsqMˆá)‹èm·4´ {:Ç…m)]aħÓêòš©“ؘš|ì7Ëm&¯Á5‹HRhøvQºHf°6㡞g(#f„Úà0‚h c²XO«†t84jUe™ÉÔç/ å+ô;ŽÎŽªŒý{|:7C!ðïˆJþY¹)?äCÇ};}— -Zªè²¤SÆñ…õ¬¢ÑÅr’@è¨LÁíÕïîV©¤ø SÞc×ç 4 DC†k#ÆæÁVÁÝ«DÍÔ¶¸z5o5’Î4'–ôy⪻Û˃6RJÉñzgÝYÇ«Ìèn×qݱÃ:@Oá?­0wÀã ׂCJš1u†lcÙÄz‘dy£nŒúI¥ÙÄ~/ÑÆ/mƒ2B¹íëQŒòTDé Dû;g ½°H™Í¶%³é:FìmÈ‹µçÊr§)¯LçQ£áŽÃùC,ʕ،[:0Œ§+'-µjÚN¯RÕÎÔF¬¹Æ‘…¦‘ÝÍþY‡«˜³;¾»^mR[¸ËéèÃå¤&ªmà÷´™wOÆ}Ažj|ó·_ ÌO’ÓIÄh7Ê©² œü·ç¾ëËsï&žƒa¶âÙ6A=#GâpGB§kVik£¬ B^Ý„¯ä*ªbD³>Ba£d$¦Î=0·ñòºèŽvHÑŒõ/o¢ª¼·;Å3h¦×¨®—í:õ½.¹)"n܉rô‰Cý[ŽØ3OâÓž®ŽÆ=0ç£5(o1ªŸD‹̂¼E¯G kéÆÌ# ¸–% Š3¯ŒëZ¤Uºb0êZ“°EADs[í°‹$Ò¡¿OÃÆÈ,ÍÐåÙ) ³Šùi4æ°#!û#­&gà€¥*RGcÓÃÇ\”YŠ·žƒ¹HÔtéÛÀϺòØF[‰é»¿Ô'kTÞÍåÚ›¾âÞHÏÐÉ3ÕÌÐ-ÃDkWÉ{;LÔHñ²; Žû3ñ•†Qçá›uÜÚLõHÒ Êå&äMÙÉÚZƒE>Ñ~—Ó;ì=ÔëÉäWÔ_iD¿±öRDÀ^çƒËîÃïmû1?‚ÅrŸ÷ŠŠ-8 ¦a¢Ér¥GãÂ?A§ô¶âé%¿“{Æf›0ŘLçyæ¤6[ ä®”ÔÚÍ:‚_*Ɇw‚`Á/™‚…f-Ì™±¶½`[ll8lµ‹õ…í÷ýÕíÈö!Åø®ã(ù]¾Â¼¼<Éò/¹O¯±U~ ÚFíR3YÂ/×g\.‚…ÙÆšáÇa‹McécÜp6 pÛKq£ëct5† è"i‰E´˜X›´oŸè1ˆ¬OZ§ç«E¶N:M†¤lJè'‰µ(O}BÞgìîk;Uá,w—OµRªDdIqª3f¶T9 5$Šè冇§Zî=@ý_ÀæÔÄñ ±&Ó‰NdM‹mL˜7£3(NÌÁ)€† pv vË,…Õ…SÛ´Œx05±!1¤ƒÈù¸ó£X7VHB‹„$^É!0‚ùEºÑÂÔ¦4õ3%a}0Õöxëú+ÏË^Ì·ämÐÝ3Yz}òìÄו2$j“#©œö3Xò4Ðlºî÷úw×~³]wݶ)¶~ºœtöClE ùÖí¡d~ý8nØ _><,a_YÝZ”Ï2ñÄ8ÝÖÆÍÞzôv²#qü³Äså¬ú=ø¾n#¢ßÏn™<.zví)=¹¡UBÒ143]}»óÒíG`œQ8¶IÜò5YãÎKÊÁ­á6ÆIÊTKåp¹ëhæ ræyÆ(r„ßYG²PŒÂŸÈdoì9ïàõnIÝ9xtõ2v×.øƒž’´™%ÈOmìF"á Ä„ä¤ 3Iä´ÐR!B- \1  ,ã³ Õy“7 ÆU~Ò¬X»ø™°m# 3¿2¼+y…? ¾fð»_jµi¼VQ'ìï<ÕY°ãœÎä4¦E~SÊw]QØòXCƒeÓ#z­žGí:fHkÜïŠËÂC}{#à×Ù¤ô¼zö%A…â\\èÎŽ¥à¦Q¤Ú {¹…N"ÆÆ4ÄßB0P‚©Ó>Ý|Wo¥ì‚ïiJPÂ[dàÄ›t¡I>7¶ûÇ úƒxñm½ƒ§ºÚž”®·f Õ‹{5gh×ÀæÕfíÊò9P’èšµp‹»&­XñqP¨¾ç,S0‘¤êe4m>.Œjº‚ÛLLhx ´ÚlM¦Ói¾ë¤ö"j‹®®K¯ä8öxy´íÌoK=¯:^°Ã°!›3CÍ¥-Ð÷J*j §×Ò,Mv¾¬óUèµÊHålcËK1„kÈã!ÐãíÁhlDYêçË4rçAÉ›mÒj·4¥¤SY˜X‰H$ÆX#Ô®!Œ@Áøùõõ7‡ ‘9›‡’T¼r©0ž“ŽZé ØUæ-sªŽ¹±X@Úãã^MZ4\×ბ7äñô˜w²zɹ-KuJÁˆâÍ1ÒG7Ÿ–\&àh£Õ.»DX˜–¥Æ0t¼˜`ä²Ð㨘öo$äÔL‚ "E̦‹&8dÂX/Ûqê«'Z% |&9&¿#€î{<×F _] wNã²÷Pðð‘DÕ®q(Æ0MáËk»&í|Ÿ©œ)/ËÔãåioSB·Ît÷í]Qå^ðަ>¯™ãÞ¶l¥ð r¥0É$BˆÑ´Äâèê×®Œ1ËUr¹»-¾ª·Îï+4ã£÷ºù§|aT)—tvÔs½ÁœFbk= Òß›ÓXüàĤNÜ9Âh˜!…Ë“IÔðo‹~b]Ü5¥ð|1 77& ,EÀª †ËÃMP†[uf®%‰·„¤(á1€ÆÓ¶mäìN«s czb( ·Œb*es…c' ¼F{þO6Z¶ZÚi$7`ÎÙ· jD¦aÔ †,±%74)†°Ö²•‰"â`x ™¥S}à €íîð4EÌ\`Tâ…Q"¸3ÆhY…D¦lÃÇ— Ó¹ ,KÖòÐZ&–i"+hõÒ-ªQJ*ÿ[â¬'G‹$>ň²išAêì¨;)-/6 %AÓ($b“5òW~mޤê) ÕV¬ê±ú¤µ‰šNe|ª€á•ry®tJX1/,‹P|i|ñ PVk¶ÙR‰¸™YNï¾t•U.RAS–qù[ÿ/cÅßßr£îpâ“FR$ÍšÎ>ÓÚy›û¾¶ˆåµÚíÞC±4hð™¨(()¦ši¦ši¦‚‚‚‚‚‚‘³F@ÌHD±R²Ô‚Bu%Óä…a°È wø4!ëè‚ö †`‡˜p0`‡AÒaòFëþÎáåQ<Êd¬ áïéAåø<ÜîžQ!îB.V!.=0/m¥Ë ¹Ý–åàjºu¨b†«bTTbJ¦/F¬gií0;ß.+ô"9ÖÜýéMt˜´mó›¡ ´kMAè]!!b6Hˆ1d@A»³9•c,6š'X§™ü=ë m2J%–ëÜÁ»ÆÓÊìJÛ;0 " )Rg½ìw$€ö ÞDîÙâ÷¼n¹÷†¯VâfBÇIiÝ £œø—M¹ÓMl›a ËÕçMý·[%Ómã Ãt¹ú¿S>¤Ð ãc2A£JÊrÊÉ ¤U¢Òü°°ÊÛôOVEv¼m¡¢ýKÀxÐÚùÑøAc¢Ýæ¬WÐŒô¸4ì¡v×kÛ»…8åT£2wž³‹ ê|»œzÐzÊÏW|¦XBÏŒ"Ôä"&¼B³\.$ë±°Žès fTÐ "ûÚll*2 wgCïü?u¾_ÍÝÞ¿yà8"© É”¬¾wÄVt,ž|²r„¨8™”Hyãg…¨B(:/ÊIa –~ÿ Îtv:6(‹ü®“RrN°«xçˆLOƒ±J?°Lö¥FÞ¿[8:êWŠËÏ—É&J â‹ø{ž_7“ä~‹lgb»iã«EÓ a¨W î]G²ìgÛay¿Á‡HÈkã¶í_ÐzGâ@ÍF™š®ýe² žÇÚ'¼½!a-X™×N< oß«¶a°Mâºí\ôߪLjo˜õ_·y:K•Î8!øâyç>ßÎkW'‡<©¿ ë×~­ê¸úÞ}=Ùç1µŠòlúkÓÑ?Ÿ8дZ»Âì6ž”ƒ«yãŸgwgoÔù¸6“Æd8Æ_5kg' Ï峈ÞWÝH‘.Bt¿ˆòôc‘~ì\»ž×B0ß]Ú+1²~€5\VLìÏY†Í1§;m»·Œýn~®¹šøy«Ô“hÝÓ"L½úct2rß/Lë]–ø:sæóõÖµnцztòr¹×Ó2;þkqžþ®C3vùÅÑQÍ]ÆÀ?ŠZ0£ç«•Þd*íÂÓ\ªÂe^a¶Ø0âñOƒ<‡~%-+P×EÖ ºjL1¤9¬(#ãøgKuxsoR&I’lŠ'%zÙšRvÔì9JÚÜÂA!±Œisµa/!ÕA’wqªÈ ¤²¼;o[^˜ðO õÔtP²ÊèåÓÒª²ž‹«Îf³múoöñË,°ÐWk–)V§nÜÒ«×áÄy^#^ÍV|®xñû¯ª›å˜j޵ßPi/ð-`”žÞ¶ºìàÚ¾Úé·®/eøŠ4“ Œc 4F­ MuR™NZ_B7±·Ô?("ÚHK¨Ç,xõW¡Ý-º_ºW`ŽãªŽè¿ó0áÉOI†Rß ð¾íÕñYf̬ÑW§ŽÆl@V¸äyü¢@Ø!iœ€’À¿b`U$ÃW‘DëÌÍß—Ù~Eõvχ…Ä;~ŒûY4/¹øfý¿rš:ug% ŒùT²FDBÆR‡ä²|B`÷r'"ˆÃßn½4$/mµçÓÅ«˜é£6QÞíµôY"ʯÓ× 4—_€îë®#}úví5{eàæ`è<ÓñÈÄý~7Eºüxñß|©J³ÏZþ>X×jíƒXX¯Oדy⣴œ]cÉÆ? ¼HÅ/,9ox­ûë½ñÏsËö­ï—ëõ0~AæWatŽ‹~·Ëm}yι¸«ë×õF¦qjÙ³ŠIø)7§d;ü½ÿ¿P¼öû:àúP²Ê‚–¤F÷É=”×ßðÍW²¡ ~íðFŒ‚c½Gm¾;KâÅb7®:cééœ|µµ6ÚããÞglƒ2{úÎndÓ¶Ý3“?†0û3 }plÿZ;iâ2)™îs{ɾp‚ËòÛ')ë”Íݦ¼0°ïËfÛ'ž·ŽV_†Ÿ˜fûÞvX$íä#Pp¾#lQÔ–wòOK·LÒ´âWº ÚP6JÔ ÄÉ #€èɵ¤¤C{{N<÷Ži_gň¯<|¯·¾óWïFÞMßY·®Ûb5òÍVµLãK´@z­îCг8ÄK< ðÙˆj-’B*ºÇ#Q5áäñØ8Ï'w6OÕ€<Gl@Ñoˆmƒ¥,ü×këÜÌqœuòÛ}ZÛ>éûaÞLkâ`>ÒêtÝ e ‘wÛ~šìg¯lïœ÷~Üàí¿7µæxê*¸ŠJÚôVí‹°¼ .“£½ÒxCv€’‘½Îö[^²Œ§)cÕaÉáïËø±A@ñi8qgÕ,cGp>mâí“ç97 ƒ…¬b Á!p<||£{ý>>ÙlÏìÿZjÊï˜7±5{>\Ã=qrï?ËÎ×­FtÎñ+g©“KÊä­g~ϼ?:Ú#3/ÇS0Ç]¹éÛ:™íÓ¶¦l«é]8í™ÓÔ3ˆ×^Ÿ33aƒnþw;íZÌïÓ'}ÞqÏMîk.nwíó=Öúnc”?7¾Ýr0œðÙjëäLbem/'·g½†ÝEù=ˆðh|ÊúÕëå|wÝ˳†up¶R8]aÅÅU;óßda®È#›xö9õgÇEá˜UŽyã¿{ƒ~“9:+×mï§}·MtXúKàðò§~_àÚk­ˆ§Ç6³™Û¢øX÷¦o¨ñ+}F|¶ÞwãÖqZæÙÎþnŽ6ß˃Ÿ>ÿ‹èëêì{ Í ã•þ|óß–û¹i:ÎmuÎ|Û6Õ-é-7·"¿‚ýWzÛ{“Ùöëàºo|Lê¸ïw±6fãZ;7»wç§Á¶Îg·r;ïŽÝzãYœá±Ó®1Ñúß­p[ywÜø4-mžcš‰ßgpùý¬&LŒ€î1{séóv¯À’ùG gj.|/V]]Ïw´[yñÅ¿Ýä5Žvï‹v£F-þúõ°Ä‘§‡áplU£ƒ¬­irÃ¥5­;H Ï Ÿs`uá´@<­çŽø‰ú9ˆÐ#¼ m$ÂäûdØ€®HeY_†“ùLFNîoDãÉšï§7}?Ç]¼2hg´…N] 8Bk=Fy½Eç˼“l"‹A•ÝWu×¶ÑB\?T@¶üõ Ã(f/dÿ µXS¥Ü³ŸU˜ðÉÎ%SKz—›Ì'3Þ^ûs1taɳ| TµK»Ï±:qÏt–æx?SJ²ÎïEÖ‰£'ž·ñÅÐR³ÂöÂÛcéÀ²E’zSÁÁõÁ"óY"cf‰Ñðۼ囼rJ-ݧUœ^ÍÐvy”‰c#;áå`üÆÞ¸ÊëȆn`ßɰW\g¤GÕ:ͲWkt™z^Ñ)‚B:)Üi½FLT"Èw¹…5Æ!‡ãèò‰ìac~ûwÆ0â”ÏnŸ²#ÉÂTµÖ\ÜöÑ*·U̯M´„*Y€õ1¤¡<5íÂtÙ s' óÓ~Áäj®pD^þi•–( I n2„`ÔÛ¤/Ö3™`\YaBjpD’ÆöIz™ QL2´šØQ£øHv³Cxë€%´E÷Ýqcº+M9Ùƒü—Ä›öÅ«g7LEøÈIîoÕs·}¾ö(;3ŽÔ퓪(¢ßÙë3 ê"GÌK«¶@6ØØÐKÇÏYÄVwA?˜/:`z”ºm:òœÿùvr¥ówW5ç<]ÊÎ…Þ˜îƒÙÁˆ<¡d ûe‚ˆ0¥²€°X&Ógj°B L޹:wc"»¶âq)S³Y”ëÛÚ,LxÙ©q½œÒ;©AÃz¼_h¯¾ÅèZ‹xúÑЙÅôkã}ïQ°¥ O§ JPÀz;¾ýÀ÷z^þ”\Òý˜x-ìCh4Ù(©4о‘ý©!wTÈåÄ·=ó#¬hø‰LPØãóŸ”Ëí)⣵ScqÝÒ0ñ‘&‡äåm¡¦ŸºÎ`vÜç¯ÎæÚ‚ÉËÂ2y§ ›M¡æ@+rÁ^$•ËëÙ{-!Yi;$&w½ÉüîÁ–ßP`D#Stð¸/“帬ãö„4CZôç>31 ®ÍŠƒcPž• Oèå§m;n>bsTŠÓ°‰¦äˆxª#n2•öÑÃ0˜w>‚wìÖ¤J1¢**¢deˆy¾V¼òÏà`4Æ„oÝàeäS‡àðgbŒXñ¹˜ØˆÈ‹ UR¢C؃„h=’÷éE޲¼‹êó™uý—â¼G•’¹¶t k’ìÊ}†b€·šáˆò[=BÅ•^¶®Sêè¢4×®êG—ZEÊ¥YPþá¼Í›+,çzeÞÿ7jŠ-ƒs,ô\Óÿ7,Ò˜JØW#0öfi™!nuMX`².KIÊ‘SAXÄ@Ð6 R‘eI+0qy § ]ã mZd€îY! ÐH¦<‚¸oÌÊ‚°Å‚èÞŒs!ð~ÙQXÏYWð‡ñ¤yE &^nixüg˜–’ŒjHª¿ÝËúfqößá =†ÚAàP$hçšm*áoòî#Ÿ¸‹ ¯°¢ñªüÎáTþ@ôxqƒ¸¹º¼b`SCι&dB]!"!6FfÑ dÍd% tTöKù5ÐùÞã4´­"åy²,ˆGï *Īˆ·”™ |§ìsª½Ä ¶4 iwØ{– pEÇiìŒV8‡æÓý#s[ü >ϳ§QCæb,#ÌxÝô$~¦‚ó8øö†‹¨®è:x/ ðÕP¸¾õ¾÷ëÔk+_~AÞ;„mñúÿ´ÊWpLA0*æ‘÷G _Ò{Á#â(lüD ¶e »yBy0™딃Äè K#¨t:|=mbÃQ£Ýï"îÖYTÔWHHaDµC’GŠ ©½‡µ¯Ì¬ªÇë_F¥ê¾DˆÓª§ûÕü‡ýõç•ðÄHðúXÇW©¯gñ|&"PŸŸ70M¬ÖƒdšTØÚDH“×1Yg4¤çm±j˜!Áu)/0Am¨îcÃæéTÊöX›µ|X¶ lL`''ð×ê'ö~‹]ŠSGïÝd‡9?M²ä™¶cÈpõëñæV¶¥­Á«³)~3ñ\ÇiÕ´¥Ïäxû?Ž øâ!e(òCègÚ$¾&œ*—ŽS¤ÚLºXP øÃ]mVî<ß\øE dZ@Íÿ¾ B0‘QgÅÖUÜôo/ù}òù‡%Ü¥ãB'ÇöàûañššH‘üÃì ƒ} Ä㉂á¯Ú)ÃöF@÷†ÄÀ`)€öŽ9ü£ùfÇ#d‚ÏŽ„pQÅ–YD0hà6fÈpS |WÜÉM'`ýc.Ÿõ“óA6ò*ˆ~TDÌ"iJ;“úQ ¨Ì)&eý®8$ØåÒªdi p!Ú4-Hð‘ P6kLÈC6—2”jµå´üÏãƒüñ¥ô~›Ój– Ô]„‘Q;´ÊÉSä@„þ]@‚ù±P¸ Ÿì]ës¡ B}Îýô)ç¿ð黉î‰eh sH4ŽÀð™%ý«¼Ÿ)ñ}õybµ¦’]ä%ñ?–ÔŒO½Bš8ôXç ¼¬dÏgÞ¼ø'ìügñ$`v2ŽØ:Shµ‘HŠ“¶`È`€ÊHýWó]§ÝCtG)ñZ¢®Óou’–ÖMÚ`eh$¸˜½CQ;ôû¾ïÑõ÷¿ï“„é‰ÓAƒžõÄÄ…ð³0ˆ*E™+PF+F ë$<\O@!‡`RÑ/¸/®3¼ö†F3Oܾ‡Â{›t ­|?† ZEô?³ö I‚ó3g›oá4?H¶›ÊA1~ P˜H4Ôü@}tÅ ^âm«Ï¶†¿œŽ¬Ã)tªÁ`:Ï ƒ°Ôj=âÆ€&I³Ôžï€óHPHÆ0dá)‡ê£}§\|Ãû§øLÇiÚ” àgˆðBg—ù=]}|²5δwhÜê媵XYkV ‹[ü%ûÆ¡iS »¾ÃaY™/ "ap£¯R³¿gã°aV/#!ós‹Ïõv£Zø’€!UÈW.m*¥é‘¢¥~¤A§@³¨²¡dm°Y !M®–A±Cck›s¿“‚x­, ~œ6²ó\aiáöô×·‡d’‰ñ•E+ª¼¥CÔÀ~*\w1aSBŒÝQfK1<‰²H•œI¦Y"ïuÀ|# VígÞ³ŽÈV1; ”Yñþ£ú˜~%^(ԫŲL\e®rˆ‚Þ8Ù[Û¬[ŒM߈U(ÐŽ%ˆªO¿&ÄÜ“ÊAbäÄI”ªÒ…! ¿ŽpÊûóÃô]l$pè=}‘0õÂR‘Wžkºû‘ìû.ïsäm&Á‚™~+\íù 8ßÖœ ÚIJ’YõY+tÃ9uŒ]ú•ÿˆG&6̓lµçìãíøgáõ¾ÂÝÇé˜PøÞgô«yúh¶–¨7ó¯·U1=ç2ïÆƈEš€¹6]_û>`u˜bûËRšÊk3¹ÞÉÓÞªvEHõÏOµqºËmäœSçû]œø9Ž‹m2ÁÛa&>h\N™Ær+)§€®äAòš’šçú/Ÿ´>Ò?q"_Dðìj‡ï‡ï’§òR?lª¨â¶P—íÍÙ¸Lûåß_`lk‹ Hfƒ2dµë1|HŸÐ]Ū^ÀÉyOETƒ±Â_Mêy«ú+.Ïdäü_r©ëÌCöÀ3ópkÀ.Þ‚Ó¬¹úd…â»øùŸ» 9€hîÿœö èüùÿŸ­ú§æùÑœzÐ3Èž'9Žk9¹Å±Ž»¼Î2ãiJV`ñÄœäô; Å^È~Ù6ñã ´†¬ß­)zÒc*ªYöuÓ¨‡41êr´*”S×Z6¥çtñÜžw&&z3SÙ+fÉLÌÌÏOF·~úiýÕ ÛR¿IfÛ”:¼”z9Z œSé­,yš'ÒòòïgUO¥A7ç÷Ph覎r=<ô´¦f8J©yØùYçËÎOÐPÉÚT¿Û¢¤5–ºÔrÒttÓS³³ eé^¹ zÊ*†£ÏºcWPo] ð;(Åv-ËM`/…u“XN†2àçè„<È Œ¦EƒaÆpãìýÏÕûEk;.‘çbö1„«û7ˆãØ(L>Ñõx`îp("W¦Æ(._Ææüsï è!‡ÓH_ˆ÷í¢¢¡m¨>zƒ?'!:­ò‚ 6÷èsÒCs–B4" 9($‘Ø=g ôü/>có¤’Koà­T+¬8„?ÞG‡Þ¼Ÿ(Xe$v±ýÏ¿Ü+Ç!Ì þŽ~†Ew>)4#$PÓ* :ºC ¹—L¢”C×˯ö3T²„PPÎeÍf úÏR$EsCHLܰ ÀÛ.Y+d‹m­­‚HFe´¨š´“‹ K½@8pt p ÊÈ(D\ÁLËY ¤ Ðh]8è‚6zbX0QœJÍÙ»Q×p´°œÏÂÄëöBɤ°-€/S„+jÁDX4µ4I“h¡µéd†{Ýûþûþ·þý8^Èp=Ö>oxÅ4žƒ#±šnÛ y²ŽÉòdD©Dü ÷»ä”<'Šdƒæ Iœƒð¥ðùË !ü‘}D)Jbcähzßa©>÷0à1•®*2$€ô¹KÛõû'£ä¨TBhGï~ßâü~k—{y ðŸé‘QA~’"?“ÆbÃ!ôßãÚDŠ!¤Æ•zØd(Èð«ó°þWÖôUùû®TJ?1ÕF€ê™ÜŒd7DÄœIƒPRº²gíP ˜,†`Ò°Qb´a,cêrÿ#ëäï]d1x¬MÝæbvƒ7ò¯ó9g1Í߯Lô&¢>u˜{}“Äe3\‚ë0r·&ða¹LÓy­]®bî$3‘i Ûåâ²úч®¤îkÁK×”¨ó2T™^ÏâB÷˨8?$—+¬¥$Ü¥IÁ{õÅUJAR?lcHBèAˆü½wuT¾Ó$ùaª?^è ¿?§C!ô¸h'OH:ŠÐwK:R\MKíó$t\`D—Þʳaúç ÒF“žÄV ¨U/LÜ sH)W[Åœ·O¡k}O³^ç€&†?ÝýÎ÷ìĦvƒQJ• 5Ù ^R A ¡l2Œ˜ÓÅ,…IhbÛî! ÀªŠ,ÀŠ  @5‘hXŽì9$–Jb¶ŒIßWŠ®µµzÊ.w–V&â¢KYsiuˆzö² $gÅñ¢>tÄ(Ž!–b!ÑÝ¿f®=ÄÖo…J4й,>,"ârÍèC´K½¬ª<-ÍuÖ*Wµòb]È»žrLcR^IÖÂŒ¼†™ÍIØ ª¤Ö&µ¤Øx^ÅÉýúˆ ÂɺÖÑ_ì•>¬blòº¾üÆ{ÑÓ¥zb@WÝÆŠ‘b"…¤¡0Mqú ý|ìþ“ëýÕxÈ3p'îL‡Å*¥´U«oî¿Ãe³Ïê ’"‚7‡ñ"€¸.·ÆŠ°ôB­¥Ò Œác2¸X% B»€[,x]pÊyŽã mÓ%ÏÉæõAHŸG)?/¡‹òµŸæÿ`õüôžsð.¨3>!”:2½ ’Å ¼r1+pÆA¡}"+aÒ5€È€ˆ gŽÜÀH:Á‚BLˆLÂP3X ‚•¬Em½jRàC!&›Kzu5•u™u¸aÓ­7â‘gçÒ/ÕìûhòbA‘'(°¯0rÈ—Š‚&TU «`næÐLGË;˜¿*UŽ?«ÿ?]ÆZs;»E¯!®k½ç·G’ÚöªO,Ñy# =®ÐÒolÈ®¦-O$è+€bä V(€¸ …np²ÜoI¯MEs„úìŒÊ® ³}×xJû¨È"@Š,±ßÙ.©a? èY–ÀÊ^ÜëŸý·¦ Oã“óyóÄ'7 )*DâoóØú†ÒjX")h‹?#Ëjê`Æ:ñØ`ˆ2JôÒxjA)9&Ŭ¼DÃ=Ã$ôóÇž*@ÃÈAüƒî@L˜BÙ¼.G?©—o[kðH¾Œr àŸ?3¼ˆýÿÔã&ÛšK‘…OôaT„_û°Q~ˆÉÚ¥-N91—dV? "@²?â’§»ïÞ„<šxÛPr††M‰I¨ÌAWVÇÜ^¢ñMD„3¸ô”ÍÚS1ÐJavÁžI½Jˆm¹'÷]LÖÿ•ú6hÛãþ¡Ã‡ÚËôÊRØÓŒäå ’× V["¿êÂþI¢µ0Lv}Ø 'Ð˦ÀËô¯Ü<ôUT.ŽÖkTùW:>ˆ9´Âò³ö Ë#œ>WˇìŸö\ZRÂcâ·šÄ_-YðÏú­vï6îøyû~­Wjkžø›Hæ’…AéïA“ØÏqÝ¢ ýPZÐ`ú¿ºµH›¯—ã.>ž«,Ój^KêeC_òÈ¿ d¦êbÔú¹ôTN¦¯kðq—K]qP3íRý–|&[+$Ú»8‡Yßþ¡Ε4WwÌþ»*”kî^sÌ žsêDe=¿¹5šF4gÚøQ?WÈï|ïåþôºT˜û¼ýM°XOîo/•Äýóè`˜Â¡ÂÝeE1…äf?Åf¿J×í!ÆÂ¶pボpgâ`±b±¢öšÐCh,>âÜ'æ³×üm¬q²r•ª¬_È~¯Ä ¼aFªc3Ø÷øèx~›*TxþlþÅ#?,–-ÈfÆÜÖ­wMCrüð#ò`Ovêú*ÓŸ“ ™5ýGÕù *鋊ƒ•M8 ë5CGÈGYø´Æ.†°¨©È¯|§WÞüís'EE¦h8?€æ¦j è)ö a~tk!uhf% ÐK¦ïôñ?LØ8Kþ›ðð¿'½£DëɧE$ز;¤±9ä}=?/—-„2©¡L’×hoœäTTÔÞ;±\¢¢` Lo糨ÙïÇøìû‘:¿µÝÿò”®;äˆlæÐri_j=Zýôþ¶‡ãö{Šr(P š¥)B´~£+J´«+"Ã?$¼± l¿þ¾ØÇÊ}¶sVÝTpêû²çðs¿,g%:Ö&N¸QñöãìrybvíÆ–‹¬¾J,‚éd}=VHÏ;¨„t0EåÃb¨§pŽy¢) OƒK¾áøN×½Ä|«7Û5N¼O„90™?‘±Šuû ?·¼ýÑõòFmÆÓƒÎŽŽ3(«ËøšòW¾Cm ¥S~büõý#ãÓá›øù¿µ“ù©YNÈÆ(›MûØû8+®ÉÙ“š”|ŽâÆQÒ1îý('¡PzÈWoÎÛ‰úœTL?E2m†ü³óŽ9½­ðdxMù™æÖYx¬ysµÔxÁ .#»øycÍÀùNog‘á@ïnÍ&õ ÒQ‡JùñÍoåá3Ùô ºq$ƒ°Îï(S¯ gwW&»Xxqg,gB•BŒFT£{1´Y[œ*Ù± äç¯=yñãG=üi,¢¼ê8ÝÙ¸;ÓšRlþCq〒¾ÉÁ÷ Ò.LæÔ/R)h|Î|w,Èi3µ‚‚Š(£Nœã|ì1“áûFÛ†Èá…‘Ûð™#.9­xãFº¾Ú‘ Ød^l¹ê?MûÏm=käÐòÓä?XÈ}ó}ÛÀñðéÞššÞ¢!ÈD%‰ˆg–|*RyóÇ2}gX,@Ç*쪱¶VDTßÞ”ÉÞOß‘ëïÆÊBͦiÁ“6¹‘³å×*… ŠD£0tò©Êj&.¬ˆ“±k«A…ŠÙq%å‚|­Ó²Î‹¸Íg#1U÷Gļ~¿±¬Ë_l -í~ÌJ'­@nþÞÝg•ÜÈ»ÉÙmçMxwÃ^¬ß)SB'ë5’kY èÅ\dÖŒ&Hb6ßS1t$èI¸ö³(–ÄF‹Ù3©qtˆÃP=¨ Eg߉؆kšïb¹L‰öóYwWáÛÇíxOF”ËÏÏÑ3³U”š¨œ¤Lï÷»ó‹b•E+”™«[׫‰óN6 © ›¼ýUm¨½Æye¡øäLv`ñ·¸p‘ÜÊ’|¶ž<(Õ/…Ì;[Éž=^/äY8Íš: ~"ØÁöPÍØÌ Æ ’7xyvíq‡¼$`Žwá+«››Èü<×au’JvJB:] ‰˜åoÄ*.m+ÃR(¬U‰¦@¶ð[gãSºœ2 ‚¥ŠÐ° À(u%±Þ1 ÄäP6ý<"ó…¬–!}£SDKЩ„·ÏJÙbnš!6ŒÑ“‡L”[ž:ä‚ênrVIhÙQéeù“Fú°À Â 0ÌLCÆ™‚}@)¬d¨#%¼R`wÂÛk"´tÈàŒ$°IÒÎ$Œ±F‹$ëOhÎá‰ÈM7OdÙ<"Ô>ÇZ ¶ç8´IºïÖ®5UpüÕRþaR2tòŒas˹U÷!ßz ÎÆÙ×FhNÌF3r‹=ÈvOƒDé°²Ûµ*ž€Ì¢âø^¾îú¥× JˆèQ³‹û;ÂææL.OÛ®bÄ Îã‘àØÉDslgPzÅ‘rl(¨üð9ìèªéÔV³JT2Â1¢-tÜ+ªaϽãâpz\n³Þž¸*XRq¬pw%æ÷RTpˆPèÅLˆR™}g¦}£Z0@,$’V§dî™ÑJûÁöºª'G¤r¬õú#¶ä£š­Î|‚`GgŸ¡Ã¥I6”ë\ øz>zt©ŽÂ\'”q¾Àì›a<ï‹`ö5Q#¹¸À}YVx»]¾aŒàd™ß–Ç¡ðåÕ#ÃÜê¡á™{Þ.óœ)w@ó2¦#(ªÁ(ûU‡-ÏP"šI™M3Ý;ÝgSìæôr´ìWÏ™¤üá Ê[ªbT’9ïçË–r܃ܿ}È`+®ªpÑÉÂ&5ýJU)øÞ 5ÌcrîÊZö½wëš ayª Ü¢Û [gk4DL$‡JEM«G®ñzs[a3ãÎö°y 6©ÙHJºB—£ã¡JS¹_N€Î¬žO@4m×`Õ©WÇÛÔ‚h­TŠ×#çˆq†I9žÜ¤à÷ž‘+R¨3ƒ‰SgÀî.ï¹ð¤¦«0 •BôîW5XÌÊWdÐ2j¨…b€EZŸê0£Óßel"…c‰ñz)ïÒŽÉIô!éN_¡îßkTÓÃ…m«°¾é—Û)¼5º*‚ÆÐf¼u+'žýµ£Ì«‡:qUU.+€ñvõÕ"®ç_Þîú>U´¾ïbK¤D ÐóÞÏwÜþM@ƒ bè»]¶~½Bac~~/YõÔ„kí8$´Ûm’‡—<¼t¿ m4LV“hwQ ð9àPÏ ¶Û_;ºÜ\ùð€ò«ƒãÁ+}Ä7ìC)e9%Í“5Z4G¤mëVĉ_+U¦ÛzŽ/^kØ(**tÎb™?Žv®‹©nŽ ¾‚ã;™A–é@¶dÚ€àÞYº †U›–tD*€Ã&êÒV$·¯Ã\¯eœyú^OkÒ´§?Èú¹€à<25Í;8ÉFmÍ6ðäû µ4qp²6  ÄX*C™xÃ~‡¥‡—A¹!Òh/T+.´Ha4–­ßÇîü¾»‚òè3[žâQ)Ókã’IËx1çÛëÃkY1:CMN«a ´,:‚ÊŠ6Œ$K™82OV•tK^ï›ñ6I&-ÑÀß×Ï¥Šè“,:¿3ÖÁ a‘l“!­`¿7×ìÑÑ®C²õíåõ•rÜŒõ´·‡XEšãšÔÇT &B˜‡ƒðö½¸×Ôå}~76K³®÷k½<5®Än)¶-m‰lmø!ú}Íhã2SÎ,@»õÂVÄÐ6‚ã:`Æàê{(šü]UÕ\5`”ÓÕÞ/id1¦ùž› ÉyÒMîEâ:ÞºÂ-ôk]{¯ED±¶Ç¬šÀ¹¶Ÿ¯¦ïPÏs’½ š‹ „Ó¬«N¶NÒ=ò üìn2Ø5–˜ñz“õ ž Ö§3òpžEqIìh®|8 mŽBÔ o.åÎÅâžîÿ?0ýÏ$…(òQrÂbAhrWåç_Ëííàkàx¡ÇÆÅ%54EPÌE+3ET•M TTÔÒQåBqÇ@éV2!©Ó\bÜ«™–ÉÝ5Š0èW€8œÃ$œâòZªª¢(¢Å…›†]²!ɨŠñÇ”Á8áQ®a•Ø;©ŠGAUѹÄàà©Ñ(ôtJT€€QΡŸa¦t”>Ð`b{¥¤ Ìf‹ ¸1Ÿe‡Ø- ¬Ô@@ÂÁ0™e¤@C$»9 r "09£&I $ð:`ñ2˜;9&I2@‡¢I ’=G‚N‚FŒ™$ƒqø‹0;AÌ ƒAÜÜûG,Ø qFBFc@1£êÿî×DPtî+™±QÏõ¶˜lï) H‚"D DJ± Dq!†1†¼_¹\ÇOvBç¶®æÛúØC1?VP×·¿êPx‚úª:_tY†Ó½f ÚÇD‚Úèt#ö>~ ›Èö—$’0—•høÞ>ž?g‡9ÔÄÔ†HŒÝa@[ð'¡†Dшd¢Z*ˆ‚8uÖ~ðÓÂt ‰ºš€dˆBð &2Y+l´ŒžQOVÈc‚›„'×\ýÊ.0,œòƽÙ}ìêtÎßi[Ž% ¹íÊ“ŒOÇaÊé+´¾öŠ­v—K1•ùY*]³>cë܆€ßÑÄ„*0(QR1Q ˆ};V ™öJTSœJ¡òöó>~÷e×es§`LëLƒzÛÓÏ*oãéþÞˆ1赡…Œîw—W—Ü4šÈD4xíCôØ'P‘J°A´Ô,¬HĪ$@LŠ£"‚‰?Iáë>礀:W«6vl+Aï&_*€CI´ÐWb˜(eÌ}ÀBóˆ1}ɲr~Ä|sÈP•¶$à6XSňCñßÂÎùæ:Nèwt±h˜‡Û÷èØ… ÙtHïi¸<ÿŸ÷ãÓ$º¯e1†á‰*Á‰”m-§óeе·Àók³=‰ ç„Q‡¦½Å‡¯×æ~‹oÜN<÷çÑ_¢˜Ðó$Ž”„gÆ%Èš2 %ë_¸Š5ã‹N`|B&…G”~X‚„¨›£¤CB}3x “ønR úÁ¿²q(HJH$©`k¼øóЦ•Uƒ¯Èpá|ãéÕÎ: ÑõÞÍù ðrÈÑñwè5šÌc™V4« ÆYlfzq&–gr첄¶•˜ ĶU îí¹‚ˆí*£’¾Æ ¹o¨`EšQ ªTN/]À°» îf$Œ†°Ø„×fp3 ]=ð#UôÑ#ÄÀÀÄ•2”ZÛ ²*EÈU1ðá’êÈMæ“ì’b³ vS ¬Ê¤p$ßH‰CXDj¨ (Q>yö?›ï÷@9¹¤@Ô‘É%˜ˆV&bI"’˜• ”*V ˆ"ma¨Hz PIEãõ×\n8aÇX:’„<$;1 ˜C ¤L„Ò´Òäöíw±WvAú<ˆi¿4æóÐjSÀó¦„G™Q:` ‰ŽBqë ‘?(HM ѹšæ×9ï"^‡¸Pu–(ÁT± ñJ©ƒA$B˜KJˆP@°€À™)(SÏ+ø €ø¾·7=Ú4pô¡¡4Gp (dD¡r¼F•û¦  î/§ÈÞev:€T7çU~Ñ+ê”p(‰ÁN³õ (ƒÆ721â!ß邦!4j ’íX/Ríƒv›qí4ô ÚQöXÝñŒÈb„6Ò?0FC%LFc0¹¥_» 'HAÑÀo½Ò êë!3ﻨ¦€Ú(àb fcQL!2ÍB–U¶‹ª`ÉV Uµ€ÀV8D®¤û:£IÎ'¤ŒÞ¡¦åÌ•¾ê !q 5 ¼ÖBBï½§J G“ó1äDÍÂr&ò˜h?Ä?—Ø=kÊ(5×â½DF‚ƒGóÜ’³vÂ#È’À°µ/ÐÃå…d"ƒª@¨µ {Ú,UC (ÒèÇ-îÚ L”Â;!Gr[Hµ9L‘~÷]ë@%ÇÕoæ:UÍDbQ«¨D@ó ¨’„Ø ¢ÏØ æ´#Ÿj9 ÑêŠêÍ 1Jù>aΑ0|èèÖYJï=³E€d<Œµ€ˆd&®"ø!=Ü8Jn¨NÄx$Båï|³¤:q/WÂR–Í›;2Q±±'BcÀ:ôuw߈†€"%  ¡$%""”âà †@€@=¦ß^ú7ìïëß ÿnõø>EÆ2,’©ï¤‚Ä»ÀÑÞ/§E@ûsA¿ŠGÑ)‚ÒîkW%… (ƒð‡çkMìÎt(1ÇÌßZ™Ÿ®ê³÷e6’mþà×úFe§ ß|¡BÔ:dq]Ë\-ÚuÝ“VùXdе¦RøŸ[Aö^as IjFÝ6—Ì+`.¡0<'‘G_lÞx@D!ôH0d"D v4üMŒLHƒóC­öœ704«EÀQB‚⊰ªºdPÀHX&*MÑ%P,@˜D£C´ÙÝö•¹d>q4'ã-Ø÷kl?8å® Ê·sZ4ÓDaŽŒŒªÎ‡2À¢]\’— Aœ( *I¦“qñd³R, f:Ð×’ ‰Á%t€f¶pˆŠ”âŸÊÕ&!µHV—PsHÀàÐ6„ØlFrìØõ°‰D‰¤æÒüÙŠúº×_¹˜zºÖJ$A€ÄIâÊ…[b1B3jWC5ÉŸuÅ”eþ÷¬ÑÐfPÍÞpX²(ŒE§c }-t·Ç»†®0†'Éû ›(‡ð‘ ŒN­5™ƒFm“b 0JdBŒ CPüf‡á |¸ Ö2¡Ä ¡²ztTÉ¸Ó ÍÈu {„ úÃvUÊ€H™ÍÊ}$I1¤X]Ž®ÜßµT÷ @!“ÙË‘âÜMÓån`ž!¶U `Pv·Œƒ4{à‡`Cî€>ãô’)ô׳â˽€- @Òž'0/ˆìíåß”|©Á žL—;BcaÉ^ߢÏ!G¸}¥õ:0L_.gÙ“ôiˆ9.lGNŒ¦£M(ˆJÌA!}]ÿk¡çõ­VšåñJªŽ·¾˜ã†nŒ1³vs«ìœýž½ï·î­þ;Ï8vß9soÚßçÅw!þÌuS“²Êû«ÆVß„µlÜ’ñ1  lCØÛŒÄä—Ùh>ï^½sK~ô2\4îX1¡÷‘Wäòs¤Ú>“íŽgA¢²ä{‹±"Д0!—§ÇJ}YwMˆwÖáóÉÁ¬myÓŽïlk6òX`_wö©¶C}yc3,àíWÒ:ƒ‘03Þí[4EÚQ~ž¯bú<Ï›æîÎ}ÎïxB8$©ÉÕCޚ­wu‚AãÓ¢ëzŒ_™$’¦œÊõÖaÛ×ûžý»i¾ÁÞQ¶@Hæ€Kp&áU·5†Î;Î]¦™?Ígs 5„_uôˆA ¤A w ·à{¼ýÖè•É\‘nFhL†U¥*–FX”¤¥ˆ ˆHB ¢`F’e’®­Ê=‰êG?± Ÿ'ÊzM™¤‘¨›Á܃ùð#KýN„Yñ.hânÂ{3Ý<ÂÍ©>š¨‹hê†@÷ø¡&æ–”„¸B@H^ë[Íø}¯WžRö}5~g?€ç×¼&šêäJª{-"(±°m66°}½è>9×*Rßb™}ûΘ!7Û„ðÚžn´ò®¹ÂÅ… "Š“‡¶S»éÙƒ‰,AšðÉ×P£ÞÙʉ7« +5´jj«\#€*ÒXH+••G“Hýâ¯Ã×5“ª-­ß{Î!ÿMBSìÒú¥¶×ÞwÔ‹\Dï¿Ig‹Q·ljqQDãs¶Õd×#ó¯ÇOÝ9ÛYÙA=:=Ì'å'ˆÔû#%Ùî·H£•Q·hãÛÏç˼ñQä£ô¨ÛmÈ^ÿŽŽ¾[7IÌQÙõ/*©ßÓ³™“žöð|f{!<ô×e5ÂgË5džÎÏfqz½Žàë¯,î*ŒñzY‹1ШP ¾H%©Ýb±%>n_¤EðFØUÉÌéÏRP–LjkÂó§¤+v÷Ü0 ÁzÆ •KE«9 öÙj{ òœCD³"0BÂQ@ÕÁ?/âÉà“ëóHd@Âã†,`r:G°pd iˆÀÐ…‚©Yù¬_ ×~¦+û(,úåc*éJª,ƒ|MÖtÅ!°0s0je¹ät|£ß:>äõÅtr䯗ån®»åVø|vç<ºñÒº>¹¶/&/ªæ‘|ÞßeÖ/ƒ©ÓZ‰ÒÛ/™7ñØú ”«"GpÀ0U$7ã Â΀zQ}ÄlН0&C"~§E—›óÌÙf‡¬Õî ©œà qôlîšM´ÃkP%ÒÒ*>«¯«åÊÂfù?׋+Ÿé[EKO…ÀV~Ûø{ÎÙþ—ëA:ttkÌÓ$%ù¯J÷áÈB% ™Ýý†¦uÅ0DLy¡q-,c&ÜŒ>?q ä€û…·<Ñ ¦E­Q$OëVÊaVˆÉΑ « HbHÚŒtç*<¿…ýö}Úhº¿µŒ6ÔXPzžëJþKà€ãR Z¯‰·÷Méϱ°-¤ uÊîÅdž~?@‡ƒN4õN1ë0zºqѲ÷MaOËœ——,u0ÎÄg×Ö•授M®·Ž€èŸ¹øTÑî#ÞáÀZŒ$Š /Þ›\ñ¥@E*d¨¤ e(A !÷˜`(e†4™ÜîǼ)±È»'uÕ‚>º S Vc%?gÙñú½^zT²bM´sõ÷Î_®Cìþ(}á —gÙ½wú_€1•©Ãϰ@h¬0ƒF"·n"ä©Nbâ±Ë·ê}\6Ý¡8IG{\¹§3d# ¾ a¾b[¾¦PÚZ•hR=à@"lí¯¤\3@•¬$+»^»÷ﲞý;NËF‘ 10Hda uB¨2ˆ¦…‘ØNݾ{ŸNgRöüÒxù,{_rd P+Rào"@Po8íæPâE"N ÌAÏûL‚þõ·€Oöâ=1+ÄÀI"áoP ¡iK{;‰êäš_ Å Du:•%g!(’ ɘ"‘F2ELȬH !He”DÂÌ0ˆ1`¨°…KfŒ¤r!(¶%d!Àv;Øêý OÌ‚žƒÕCÊ‘hÆ¢˜“,Ëb¡ ¬m¶YknVHðSòaõ†m7©Jš"( W"31yyÐZ†’ò/'Zys:­ÀçX¤ˆ®LRÈQ[1}ÛFOâÄ iÆÍÖä6I²p‚A¼uKØÍ"§ €wŽ[áÄãyDuð÷x,Ã:%)H -Î o¸jFÐÒaÜD(6J-±yuí× GâOL>Í·ÍOïN’Ž©Ú¨Ìñ¹CÈÖ|óF³AÙ)¡ˆ …‡x\¯Ð}’¬¥ÕÙôÌb¼´¦f„1!ÆªŠ³ËÕ–è0ÌÛ†äÄD$P”-i÷x?^ˆ—xOŽM “:Š÷Ì_Øú8²$77Å^&&ÿ´’LhÃiš…&@Í­mÒ?n^vy "QDaíµU½vhÔâ÷S.C#ÄÄl_„ æÖ·RÄÜ?_(<’¼­:ÁÁ¦B‘¥H",ý4…`Äib-¤3ˆQ¡!&© ™J"aX`bpÀÂ¥¦¨*ˆ&Y’‚T¡P™¥&@ˆ `‚ ¡"™‰  ar•0*‚j™ZªIh’*€’@ †ˆˆJ©¡ Nëð´®Ò°¤š…>‘º•MåKCõA4›’A.ë K‚$ÆÊš_MB0Û—%W% ÐÞÁ÷ŽéD´ó¼äõÇÓ Èýžù¨:Ó܇ñ4ÎR«CñC…NT‡ÅðËß½ØP7$àJ§†Éª8Èà‘MJ }ä£÷S¡Ýø8~ŸÌ¹!™–gw¨ÒLаÑIÐc¤â¢¼ý¸¬iÛ²7[Ãùëü%ô¦5ÇëÇènÇñ 译]ß«ÛÅwÄâ“[½¨êýçG¶¹ý¦ÛóÄ4:›ûˆ8T9ºPJÇÞ>&$±Z#68uL“O‚Ÿ³ýGó>øÿvêLgSíØv‘õä™Me1™`¦˜5Fòq8€¨kCL\ÿ]ü¿ç` .·cRÂP¸Yl•2¬£)J¢øÝ#«4"ÅŒF¡„·E@öD ÄjçZöŸ“åéóíÈã0å°m&0VBÒG#–É2¢È¡cl±³òÓä,˜¡Ò &STä31†´é༅%ç“ÒnNñF˜µÜ7sô¼Û?oæzÞ{Ô{?×þEPDMXÏ&zÉʼqPXK ËÚ´l;³‘ɵóÁ±—PÆ´ÍöcÈã*$ð«pº7µë³l.³IÑ:#K;¾a¸vB#þäîúÚâ[½œ¢Šp˜ÐªËE[°•-µLÍqÁÿ»çã™:sN™QA• -+|S9»âõ¢ð¦y¨çòy t`Ab$PÃq%›Ý|Ÿ[~ÛÞCr>¿bÊ÷_ñçöU+f’C C*&¡R;{º@)5îÃj©/n0_ø¯ºV„!°!à¿wçÇæ[áqC!˜ÑR…RB†¢y®h>„a°9XÌRb@i 'ðžìZ¿Ù^¬ÿ!ý¯ßÿ¯!{¬wû§Fx{tl b^&Ô\Œán¥ÉI‹’iw÷¿Å,ÅDz5‡C$Ç‘4éºfüÙ‘"gÊÏàš+æÊñ4ËÇÇ6Á°ÔÍ•ºÄ©úò‹ý¶.pd„>ŠLP†¤s|@3BÝ ž2ÂEÝ35(š—Õ BÂ)©J)†¬ëŒC¼Ö‹°½=&4SÆB ïE¼M• œõ훨¬lÒðE>¶L‘²eiœ‘áó6¡ƒ( BT†5•j.Y²‘›“{„"¸p²# Ç2ÃŒ¥á¿&0É#.§àÚÕ¶p±RšRªŒ$e3nãh_1×}xU«ÜáÜ÷.V0Õ¬V™™Ä‰fÜ¢ f´7jvåäŠÌºJZë’ +·™Œ9‘:ߥœûù#Ë-ˆßlÆ!ræ4úŽm²Sdªƒåß½P(T¡#9ÙH“5$3p­P ÛøÓÈñÉŠÙ¶€Ð¤–ð¹Öë³ýí^´û!ÙÉå‘ÙwLBW¾ˆ2eÚQÑ0’d3ââ‹aÁ>58‰²Õ6×é‰ñQGýGÍ)|(moR^Ò¸hgų š”'›B0‹””È8t·Õ££Åœ%ßÓüù¾h+ðhé}J¡X¢™7˜YÂÖ£G«íx¥‹0qÕTib<j¿e2&Þic¡¼s-þ£7Ÿì93e¾dLp¡ºOéFuE€ÚLtAáØu”†¤ºbž| ndæêï¶¹vÛ:ªÐˆqKá‰4 Œ°a¢h± Ï¥V.+­¶¯æÿî²àµ“c^1Æf}Ï»M·ÏÛgÒ+=ætàÉ–•àü{£ b²ºP(¥EŠ=?‘VýmåyrVÜwK©óÿÕSpÌB® ×B²‘4¼ wcø–oAñ/&ýö‹`Êçžzc¡ÞKÇlƒ|/¼5˜ø„efÝóðed,iû”R¾úe•_=Z+Õ™JŠdk+ÁãÇ«X°èá=€ý†4`hõ €ÎBÞ0&ñoYy±|M¥Ç mÜ3>öbv­½?Õãúðà3ëtb¾¦:N½X¿×eïKCZÈ0« ò„¨y 3®‚̬çm(PV·ô°EQ\ ˆ `üˆ"‡åÀûh‡•þ2`Ã÷œÍ¡ö²ÔôФœÊ)H ¸D† +B]}ÿ5ÃD Ƥá™AaeQ‘¡Ÿ¿Õ¬4je†–1ŒEÁƒHÅTmjIÞ ³T] G²Q%1 ÜrqÇ,‹H’mGMUFE Fs`,…Ÿ !ÔÍ{²Xd—yiÉ šKxŸÖkÏv¸á/Ó~ÖB'Íö¯¸Âÿ˜ýÚßoÃåþ§ƒó;ú³áø 0²¢ÉUÄ¢eƒ_'Á–áŸ%šÂ «Fo©„`ÍPd+E™UÖŒáWÇÛµXÒ!‰Yûñ& ‚·+¸oÚüXÖu~¢7ùgäÈÆ—.P;YØwøÈM°òÅbS(¸ ÛH´ø?¼‡œñùÿ©¹þS¸°ô;22ÛÁÌóAŒŸ¬I5Á˜R ® ´0êš­N…þãa„—a-qŒ Á~ù#°Jcð×$“d$Q„˜ŒðýµÃB¤2r%2JM<ý1ÅøÌLÿ2ðŒïf&K‘E&CŒÌÐDÐ7R²¹˜ÊÇ$¸U%PV2̦`àß3C ¤(0¬F4¤¥Ï[¦¦Ý»[ÈØ6Än$W†”t’¦” T bE °†€4 ¶8+æò— ±¢ïjËÍ&#Áƒhû1Æ}蘨ƒ…ÑËÏRJ¡ /òô²Âhæhöî = FD7×l— ÅÁœKsžŸ1e¼ÝŠšö™&(\‡Dkc:‡c)0Ñ©Êç8«ÔqñÝÜõAàë§âþÛÄz¬ü\Ú8– 84¤5Å‚ïŒ1Ž-‹XP+C(£ I‚ ’’ Œeðö~æâÙ–ÿ!‡¤7œ.„G!Ç1ŠJ¿eó§$´É¦†Á¯h IJ»8ci išÃª €ùò¨«¹¼Ñ’A¤P‰d!E¡S4J‹|7"¡ùˆÈ«Úü|~çÍþ3ÍïêBG€lId3/鿇 úp›ð~JP‚þqO¦4Ó–ì$ºÃ`W ˆè!ħzÃ)ÅÈ,Ç_·Û¥ËB¢huñØ{­æáÍÙëöJ[Зö5Á{t'×ñâå:½}?ÒëækÃâ%! ÜCéR ºûè$m±Ü²™B•xÕ¦+œÄqº 6ýo½óhT ÅžòB%ðé²êÖôµ¹¸ÉØ92‡žVƒR„ È1‰9LÞ Ó­ M4‰\ßuÅó¾X$³þ”èñáè~hïIþŠˆ2O´I}ù=Ñ$wóF‘Ú®µ#Ü)ô©yÿ ߑ۽Eÿ½êECîÛ™èqD o=¯d?äz{dŸ Pÿ“àþ}°·ï[íï3%öÔò…ÝÑâ8Â{ioxnWW#yóAõùÅ÷ÒóÖwëéÿ«¾“ž§ëÒ|½7“–¸ü÷ý˜ùè:L{½OãÙ~Úµÿ+jOS~Ÿõ¿¤eFÅá‡êTS@I¾Õ°ÀDzd€€  ÈéµÜ¾' FïX| ç›âõºcá‘umÀPwA*f„óГëxÜO ÇlKöÞ®Ðî—]äežŽûyØÆ~˜q»î&ó‰V„MKBQ…uiž0±²€…ÍuÍc[Kkü{Éš(òãªkYWqúi›5ÑúçÀáB B<~Ö 4ãí=¯°™ÌnzóÀ5Äâ‹®šêˆÞã.2(ÐY¹„͸îCJeº 3.D(šˆ›pZ¸.è# ,$©ê«.ÒÍo /²œk0+NK|NÁ ÚXauHS³L‰OŒ(pÞ-ÀûbnÙqìÖÚÿgÁ$ï¸e @„ÁGCXw:DB!L¨‰(ÔŸÁv7†âŒI¹Ë„"Žë–ðgƒ±Ì°›/,‚‰g28̃©µDÍ ·ËÇ6R6 äåÍÄR61#Œƒ±ÙÈc‰ #¡£ës°664uÑÉ ³;@d“4²Zw¾O¸iûrûœ™½¬ÉCsø²œ §i×63]Æ#›ÜÑe>sxµìMVº‰Þ¤5A(yž&³ÜÉeõrÃ[¢üÈ YyE³ 5ä(]VsBXä@„jbjß0`‡n#d,ÀÒhЈkm„âfä¡L»>M‡7!!ßÅ3hÃ>¤¤ÈFmºˆ nDÍ¡Çhm"ƒÍ‚s:z¡á“äŽ3`EVì„5›oNŒ^ãæ ÍÕHì0„PìÉöÉ—ø£¡‹ád‚¢$,L†8ŒéÈ Ž‡ãg“HÄbÍWAur„RäÛ£êèêHÀå $àÈj¨œ>#sr 2'uÆBE÷^2b›+¿_ƒ‡ /Î1Õ%³w á»úÚË7Á»z)nó¿DG¼ûýg%°4‡¡ ñHHˆ`!D•¢á˜ P¾ë¥N6Æ ‹ (%7ÊNkJ–²ÙƒŸÃúßë?Õ|ýúsÉÃ|'·µÁ0WXxEæ†5#›¡Â —ÊÔÚ{ý51(w4SVÛjiccm‘TgI ɤÉ{-Ù d„Ì&Â-Œ BÜŠdK)„€|ôlèÚŒÒ-æÌ‰ÆA…:‰R3‘´²r-l±(Cñ,™Õ[³jd0ŒÙQmˆäÕ]é Ü7vcm´Ú¬ÝâßI$„mYš}¸kÎæƒ¤Ådz„ÇLæ2$°í–•¹±LNÈ‚Çcmµ¨W—›Ìó¶ÞŠó98š¨Öyœóˆ8¬Ím©Ê;D"ÍjdŠ^‘LòDeà´´ž§)ƃÛÁâÚÑ]@ƵI¶¡¡Ê»v‚¹{¤åT‹›´’ºÒxÍ,[x8(&±îï ‘T0Ñ—"ЩâÐFL„Ô¥ÇxͰ‰k}ƒ4ͬ¦û¥3i-{í(óñ2ÍW ïð5 ©¶r±Öe’†f^3LÚ™Y­£Øº6Yke´Ùê¹ Ä&‘uA¢É¬†l’Ê!6S¡¦µ&ÛÍS0ÛD²D•„Z5M‰»ÒE}5K8ÍØªGHÐ&΢Ðâ)ÄÜX¢‚†¶fŠ©Bá2ÊÆÈäc_‹ÄI'Äa¹a¶—6ƒç$UÐñÙ—¤ `Á*J^|IlkW4[&¸pD©‚ÄäXã²Pû|@Ú6I»;ŽVôÄRÙNîçRmn!‚††Ù8Ъ¡ÌÉ Ÿ´!ÎÊWî¹ô¦Îî7*{˜ÃðÙ8Jl¥ˆ4l²ÒÌ’*hƒµÒúG\¶œn ì¾tÓO]º|„Àh2¢æ4ù£J¶éã¥Úx³ç«0ñ·Ž¹•WÑUâšéC‘ìq8oŸ `ÕU‘>¬•Š TÙKžÞÊdqíUtyW¶5 µìÛxhà5Ã{¿é/YÃÜ”Ô&½Â“†m5ˆ(rE2„€Ud¹=Îæ·µü=MsÙîò#›[ƒùÑûyã<2 D§¼—Qç°%l͈Ùq—13)0pVaia"˜ØÊ@E«$¡J Í@c ÛR•–Ò –‘ÈU[øÊÇ ówô{9•¸m¶¸ÿGüè¨ú_ŸË£˜z—ÉBŒI$ÓdSüÇù_aÙ¾Âñ|ov³%¾=^7›“H3ûJ9”5&bg#¦!²¶‡â-!m&M’Np߃àÖöš`›J®¤#Gheâb5•²`åé†ÍïÈf™‘ ”ÄUþÌW‚Xcx­´[*ÚÑ,RE fX!Çx«gzB,Lì Œê€jfiÁØ Øc+KͶ6âZOŽÄDáJ2Â0RÒÐE–òb\›#ÝBSpZA(-!ˆÐn/BiWG4`gÄnž—¡ÆYä™ýWõsÆw(„ NJS‚ˆp``Âsñù¿ærú¿80âC¡2Š|ÌÍPÄG{ ÄëS­$|$+Úø—ê8<?H˜×ÕšIVÁ+wnŸ<$pÕÃåR"D ný‡³Î9íO^&®¡N±ÉiU¢W„R|ZÝñDZon:gIopõÝãAÇH@X,’AJ){¿[·Ÿëïö¾¾*)ÊT¡C—ˆñ‰ªñý“¨{ý×tKäPú뗌*2 )å@c0“‡Þ²‹ýxÛÛdºÓÍÜî±î#·ŒóŠðì@Û¥©%ö‘:•Á$²B XŒ ‡îvÛã·ø¶‘â­wF˜ÐH!†66Æ ‰ cíÒ3Úà¯õà¢BKëL؈g¥4 Ë"RU$ud·¡ìñMwsý¬/u}'y¢‘ü¾ÄíAíoÚ5%`õ˜ =@%øõÅ4ckUЉ(}L| бF( U>A€Ê⹇Ý_rÊnUˆí0Ȇ D\ C¸ PiCAî…-Fµ©Ž8!¢–H´dƒA @šrúUÝÞßØË»°†“Ö„>ðl0ÓQšZ„@0ÄÕ Ä³åEI¶cØRu8ßfì»”'-H\ r‡ »XµáÝCsX·îõìêw8›œxéPü"R¨&@Ö¬7AOÀ‡’€Å_Fý²# UƽqÓ[·»ô^¾u;iÓÛɵJ–Ôæ"*‰‘ÉÛMMÆø)¹”;9H‘Á³¼H‚MQ#0€£üfc—aÆ´70"IÑhs‰Õs¢à…“Pèt²HM E壟nïýÑa®„C¸i™”ê‚Û`“¬-´`6—{Eì$.ãUºãEÜé©ÐÏ!$ÛPÊœçë:fÒh – ™Œ•ªA@eTU7ƒŠ¢ùýÌÄ4Ð0Cº¥Ãhn6áb·‹›Ö¬äm2d Ž`BNZ7æ‘¢ÆùŽ(AL«H¬K(ÔA¬lÆX€ ¡"ˆPaa•RN4T/0$¦!±î. Pó,tBnJˆ$”°1HI˜(žÛsJ†¦¾ð„ÂwåeD0²1”@¨b´,ƒ1*d. @DLeKŒaŽPÌD“2Q JXG6€Å%4DÉ Ÿ¥ °@¤ÂÉEÉDÔ°3&#ˆ‚"“ý—ÜØÞ‰†ªšš’*™ ’!¥ª‚ˆd‚(˜Xö+þ!íØê„órØäF•<ƒyØU"(P”B(S¨N)±1ÁšZJ¢(šnÜ5£*¢‡¾Bâa€t(§&dQwKñî/쌆˜ÝJìŠüÛiˆ—"\aaþôaziØâÒB{¢K«¡Ôx•º˜ÂZܶƾL™-¼Tù½~Eښܩßáø”ycrndÞë“ ØæoŽÑ¦]Tieþ.ŽXÃod¨úÙ¸Òô(àF&„ÃaùÇ×£Z”´µI%TA¤â$:ȳEÝN°ÃÜ—÷òðÍ¢Àâ™ÄóõEÔ&›Bc;Ä(‚! i'Šø ùÒ7—Þ/jÚæPÏ÷}þ~;÷»:ž»ÑÝô¨ ˆö8´¿ÖD—Þq?@  ˆŠ“¿7~Iø\È;F´»þ_09Øß[8õöP?äÿê]ý^ÏÉé¯/;â'*`ús{,ç3Xm8ö»¾.ö—¿ÑWµÖvYœUí.Y1_•”Ì1”!­øo“šÎ_JJœt5÷9¼_«èº’(Exl'Ä…EoW)a•²(c dWû['晚ɚDů§šŠŠÒ¬é‹)³c§…;¶*JëæÿîjNU€ *²²,mZžfkgj±Ä—eÄ!\.+/m”ØÂa­iKc+B¦f ºÉ†…l5Õáþ;,.û›O8Ï”~Pƒ[l E%*çµGÉ—¾e@© Àö„EÌNÕ¶C°,±$”@‰E!H•QE5Q’‘!IÞDDDÂ’QL…C,#tµQM%b)R…¥­ŒHTݰ§DÑ­@ Ë‘Å$RÒˆRÉ+Œ,Be Á`™L! R0ÀLK° B³ R T P¡DR²¥¸IE FHÝF ë×íþ‚œÔH#›;Ú$ê ‡ìŸ€a"‡b6”}ÄF­õjw…ÚGhuAm¤4Û0d+ÓÂBZÅOi †‚”ä Ä=ï¦r ÐŽÄ€ì'zûŒ¨È©–²ÚaOæc_”ÊFY‘*ã×e¶èÍÇlœed§ü¹òÛË·ô|f·«Ž1›òÎËÇ…ÃõëIJO­¼@†˜ üœª@÷öCM iìÆìpË%iŠ kzbéBM Y—¡‚5þ<-â•óë~ý¿äb:ªŽ´Æn÷ô;WDŸb– –Dì5’"Ñ>½?[™>ðt‚ñ.1Pd×qåòˆË)_(xcf( {Å51ã~àñœ ø> ÊL $%ð‹D‡¦£q€¹®Z­œŽI8Ó%(ô°ZˆDil d3_ù?Þò®&q0ÛtOö4¾ßëaò­ÿAKDy9ÿ™"o•—f¹‰@Ú–’côþn;Ò¤;üœ› uGËr”té0L=}Õ%"wbìžÓ4è”r¹ÃªW×áì‘Ñ.]4âD.ÎÍ(À¨¬ËDBlÉÐð"ãPF›m]IlºwÓöYÕá6u¨hpÉ0ZY1¤vÒá†ËRm=ù £'%¡Å–-f@@RCAž²ðdøI  èΓE.‰Ô‘MDÃO!“kixŒ%…ú"HmÍU¦¸áÉ&›Ò°1¨î÷F%Į̂b²$&Ó—Rd [pMÈv¤l†ò*Èš:ØMÆ$5`]XŠ BõÈb•̹ùðˆñƒk¢·ÉÄ Ø%rùíZ ù®)£”îž/îŽHJå/RØ ²ˆˆÀˆmþI·uïðîÊ„q0¡Qä<‚ :@ä`1J&˜xí¯{3÷øû·($&áé‡Å!î<Ðü䦸£0y4|èÅ ©u^H);û‚Qô&åNá5YgKà…­:4¯•õ²û§Y䦤ûØHü¿§­ƒ¢ÛpàO <ë„ÄLQ-×”†€J’ƒ¦Æ $Ì,hÄÅŠ=¬¡™@ € R $R”D"ƒ±”´V1"€ VQ…(Œc#¢’®RIVª •**®Å0 /Ù$iÂÄÕ§e6Ù ª¢‘ˆ%†ÎÙ @ÒL È!Ñ1N§ &aI¦•ŠI$¤¤ ¢¨¢`X @b =º79DO¤¡ÓÐyп –:¥±öLw$Ó°õEÍú2†ªô&„zÕ¿®—åâ`ûãÖ¶t²ÍŽáù°RŽ¥ ¦h¹Ôeœ0‡ µ#„éD·•xøF Le"DˆˆJ("X…Z€X €658¯.þŠh£d:^ß0xùœÃÀNP™ h"†`áàæEÍLJ2 ŒËZ(Ém­ T d)‰U€IáÖZ8æg©è{Ûñy… r1‚9ŸÁÚp†ï©*ó® nóB¸$Ð ’4¡6J!S JÄ*¸ä¨Ã‚Y’"bI‚$á²#Š=jÏ‹©èôGÓœ„U€¹†3¬Ã6ÃJ? ÁIˆ;»˜ 2d€ÄeG‘‚l/ˆ ªA~0\ù‚¤`H”šS³ó¿9¾ÍG™ÀIó2›ûedR\ÖzšÁ¢²« !ÊvCx ®Íýï?ÉUl¼p1šÃG‡o¡ùâñG.åHûyã¦_±„ÏZ&eC¸HÊÉɵ94JQ™/ŠSº©_P;Þ´{u> ,Žš¦#©VÑ/J6{¸S/V¬&&„º†ÂKÞU„D“co,Šl†Êˆ½{ü‡uåuâË\u:DPÕ¤‘)(™AIð§Þ·­vÐ'ö(1óI?²d:€=RžTS1ç"Èrˆ[­X„ Zî›'¼|ØølߑڄJ?< 0–;Æ‘…ìN=üõ3ò^¢˜:HZÆz}å„ɤ-™ÌRј}Yñý^“ë/7¾àm¶2mI&Ù¥Èá…›Ý83&2êÒ2Ò6 7¬µd,ÆMTLH šL¸}å,½·pJ,!Ün7Y,s cZ¼|¾CÚtÊ…"ýRaÔ½Žw¥Ùæ?H«æ}ǻᗡWˆHøÙândËîЯ©-)}×'ÞO½Å5lKÏȇ<=ÝëîeÝ$ÛüÌ:È@0‘(\€)‘L$^c@f$½n›…9BÄÆ2Ô€³Âky™Š''1®éúŠÔæSæ:\ùˆž˜R$¢¡@i$ÆÅ 4—¢Á5»úp 0æÒG¯æÚáСWÝ…ÎÀ@pñ HS·a¡^Žt™ Sy2` q÷_§½¥C±è$† šxA¿˜ª/×ë&~.Àá ®Ø „féW> A¡ÒÌŸ¶&S*M1åK†Ë/M¸ÌÐå‹Á‚((Œ»8 lì}#þÈØ-šÊÙÌ˘,o€E“CŽ-ãc’ ÏÅ(„dºL;ûú“e(°ÆIðŠÄBPBi“B6€9×|p÷aŒ´w€f¬UÑ…hh! uïöL°Ö&HœEB7„ÑVäË¥X[¦‚‹A²*>ð¶3†¸m¨–ˆ*àX¸Œ£½WYj"£+z^iåXþ×·äò‡É|# ˜9Èöè>!…4<¼<@¦ƒo‚ß_ ß:r‰!aÜw>y{nš=gÈàèîwù4˜JTÐÂôT'Gr.&‡aÁ&ІªbjSY'Ïjy£Q«°ã«)ÔÕ‚3딓L™,PSîgQ{†È¤k(ˆ»½?s—GNg¸:-Q¶¨Ü”‚ ý0‘Iü©5€·Èä2*T3cT4„@4¤3BÓI4ÐG¢ÈŠ)H"‚R¦%R–ˆ‘ZLµï¯×O²$i=«!Àm]hÑæ{à%‚&fSêÁði:VG¾ˆi6Q;ÃÞ!h"$¡9Ñ,! „•I„2Ì LzØ6-F0yM}(ó Öc 1Ø0|Ï>“e;¸&'žO{¤zÕ<ЉñË‚’ jÕÌúmžcµ‰t Hë;vH ÀƒNàWÜT&(¿Èo­î=Ìœ‘¢$&*ª1HšP¡É2¨(ÉrÂb–UÉÈsJb“G€ "ˆŠH”Þ2>Ï_Êâ›ñí=Ó©É ¥ ë=f<›8Ó®ƒE Š Á"”!AD@”ÒP19zÂÉ¡xo²3¨˜ÏŒØ=Œ(ˆÅ{oèÏZÑJZyÍPÄ€ŒMP¾Æqâ{R—í'\©ô"ªƒâšQz¥l SàCi“X‰õiY ‰ºù‚Cò„€Bˆ¾Ð`p€?“â<*‡ȃ×ÃÌ%‰‰žÍÜ…¸ið $*NR‡€‘ä2:»¦ yCŽèð4¾õÑBB´É÷Š–<éÏF „xžÚGŸžðû£æ~ i™H†$ùÐ –¼Hñ¢„t!`¨¬U‘D -(æJ£”-ÄË*PQ` ˜Fª6”@~M}ÝI©œ_U¦ˆ‚¬žùn-ÆüN÷°Ç„¢J+Ã* ŸQ(,ÑA-‘‚1jk+ˆ%›Ã\ P–Úªƒ,F0ÌÇ%¹ÎjÓC&AjeÓCFAš˜é'u•ƒ šz f¤4C—*Ç7a\ƒ\rÖøƒLy¼ZÈ2984Aá\®â沚D¦©N4Míb;H•âðZ×”¸œÉi™eNPfBÂôãÓiãƒn[¢lôðÈCQF›™r™H¦¡ +l’¸µHW˜!¼ j²BQáks>’hÚR²Ç¼±†îhÃeN]eåÙ©aÆV£;sœóMš­ÑÊk@Í‹™‘&Þ‚¥¥ZVîôòUýª'ص‡ÎÏ)'ÆŠ ‘9ˆ´B˜rçâañûJŒgI¥A™—DÂPK˜Û’+êTêUŠ¥ø./P)Æ-°™Œ¯¿šp‚rj$"b°D;ÓŽ’¥ñKûÛzDYÓ¯ù>;lïòPþWòßþjÃS"ô¤€-Ѥ#!âf,–زÁxæ(…¯›@«Ë¡­¡l;•Ÿ`½>& χ_²•´!íw£ÙñaþIý¯à„´Ãà¿°ú•EQ} }?T¬a{µ3Y53êzúßm9ö>çª4lî«ø6Þ¼ŒfÓº~KQ,î¥Ðíqúþ»!UiN\è>¡t—ÿA/#8ƾõìB+dBÈìø~ôEÝè;÷jr0ÈdƒNüC§L•– ¬QfÓò Ä„ô~Qþ'Z¹š0²÷F:ˆœÈ΄©ª‡)ÿwOòÿ´_†0B~¹*Þ„NôT‚4˜B"R(¹9"Ä!A>‚P ¥ˆT•Û‚‹ñö-÷ßB¸ºüÓcÕ¿wscÏ…n©¢¨%-ñ ˆÜÞ‹ÐŽ;EÌÓmƒ ˆñ©Y3 rêõd_^ÎÉîgóO7‡qÑÖË2>©±i CI"¥yÆc —°4÷ÆuZ2óZÛs~Ï(t¯ÁmxϧˆÂj$)"F„=‰ ÑÕžƧW6Ðÿ~½8O+Jú§”²ä·ó©èoœºLf‰ÊYôƒßC6ÀÌ c‚Kj™j) ¤bƒ›hœ6c”Þ»ºyT"¸ïšôPÄÐŒÚ6Çó|IHp/¾ƒ"·ÙoŒÈ[m‘žÓvÆMòŠ!|Î$â=UEG³+´>ÉÕ*YsåM±õŽ­ZºCyMì™h›‚%³,’VÈ%ú… jÇF€ÃBCغ0©¤C ˆËï”ȈÌ2XhL‡:ˆœ”•6jØŽæ³Hèc WÔ’’ã(µ ¤¨HÀ‘4 Шp%R AÂÔ àVCÃYP´ XÎ<¹2 –Hi bÊ%nòQȱDp¥"–ÒÚŠ‘´—ºÑ2‘Q–J´*TdÁ!”¢Pd"½0–!5hT¢*‰ÍÌs ¦ù¤˜¤X0ü|•D`iÓ- V±r¡$4HÐN(°¨J †18ƒ’‡‘‰‰@B‡Þ|ôëþFƒ õÂò AÔÒSiþa·¥m#ìó´ŸóÊ0…)\D)°©ÒŽdP“ŒÄ*d¶Ôˆ9jETdDÊdÉ%b·˜cÓ)d%Æj€IBKl ©¨-¥@¬(! #¶ØW%¥ \­q×I擵y¶žÀýy´žyÃÚ¾´¾<Äá óf壽˜C€EIs‰‰O’~퟊BA`|fæBMå µa!Úð\¶ê̑ŌŠ"³.añ™¦<ŠH±à!BÓ"ls0i”i‡ššZfè™w Á­šÉŠSïÊÒ¯ïÑEkE «þ‹ÅŠ,xÃï<§é)T7ÔµÍ%-2$Kãâ*¸p|’o7¨Ó1KT(áj.Dd¥Ì #(Êv–à‚ùÿ€Ã3ð6à †ƒ\™ì_³žïðÓUüKUÜï`ôÜÌ} ï&‚YUZ¡XÁ¶VoËð£¶è]]!Gy™\Ã\6Ⱦ8;H””ŠRR, ‚ÁLâmRð[s[/šmC#áF•y¾Á &¢ŒNJq‚.Ëjë6wØ£ñŒèŠQò¬!ÓÇëuG$„Dq`ÑùÃ4U×;Sº@$oü·þ/ða ©µ®EI\Î#k«@°š¨Û¦àn4Šë8î„Îîò‡{G6°äÃñ³{ã$ŠKCQò sÌTHô4DÂCµ¨bþ1ˆÅ“2/*+>ˆ(I{S8˜0óÞz è<`+%x"G”oÌÔ1´‹À°à¡$1¯üÖ$Ø Ø1D4 §Ü0pŸ¢nÉ÷¸>^.!baŸO¤]~%ûgã8’à\ç‹`‘0ˆˆå ¸#Dæ…ûRPTqxÌ´£4¸±õ’£d@ NÆxzæ¿N|^þu¨­Œ&-½¨ê@àä„{‡%@òä@îˆHw L²å ú4sS°Þ<¨ÇÇйI7‡8iöž†xE„¬ Ï(ÄqY Q01…ª“Ph­„bŠ X®DJ2” 4 FB¸2,@$ˆT!@k[0€@2ölŸ½àq&$¡8bb$1†BÑ Vˆ*A)(CuˆÂ;^ª RWjQ ¤@4ЬσƒŠì4<Mÿ¨n{¦æÁÀ¢Ì…¡hž\ÈÄIŒÃŠˆJB@þn²]¥=©y'yZB¢Hb¡0E ÈÐHƒ=稩fOÔðZKˆ«?»sÐ #!²V…VKÚÀÒ˜I¹Òš°}SÓESGCb{…ðÑE³ÁïòÄ·A©fòäá1  m„÷€v&2´¦ð‰°?8Ãd/”ÇiàzÍn—·˜Ô8j êÑôvMËœ»˜.Ï4%"´€yµ€‘"¬H1)“ 1 ´ÒCJ¢c #E9R â‡œ“…5 ”¢v!ç$<¦á.‡B€J¡ “°Fé/ÌÀòŒ­*}ììrN))Ýõü¬ð ÈÂfÒŠGt5¤GCH¡þ1ºAó§S„——Ý×`œÆñ >uðŠQP"/D»ýH°û/γç—uzyõ?.‚zH½&{"4†óTÎçœ ~•á>ƒ°hKã¿ÂSDŽߥÓPÑÕ)Œ:ÚƒWÀ¶P1!„cÄÌÅŽ ØK^!Œäu¢ÈXÈ‘J–¢”¢€" ‰†%¡ Aˆ&rÂd †pÞ0H*èHŒP;`(%¸Å+SK1T4ë&+$ˆŒe’ *UˆRÌÀHt$YCÔ‡ ´£‹ªHÛdCgr@À€ècdb¦“nÇ"bééùdIϾ¬¼Po»\Ô-?a‡<1üt *""e}Ïé>íÁ_ê—„½¶-îrvNГ¯%¢[±‡åö¶JþÏÜAí2iµÞl¾ç0ѨZ¬S†bº0±|váéb„#tæ RØØÁ†H]HÒä1fØš‡Lq?_ChSh'ɨSD“ÒRƒnDSZ©‡/«s24!JP†HóJä4: è‘ FÄ©´)IµfPlÚŒYDēЂB¤‰ šu†%F§#R…"dôJ®¢¨@¤C\Á¾‡ª â0pŠÂQ)p‘ÙDücZ¤¹&JAê”Ç~@Àä.Î!̧Jb!Òp7tDü„‘£”étøOƒÞæ×šÜ>yÈ‘ ¦h7ÙÌ÷ó„ñ ÆU %©!ÈÍ…]‰¢ýRr…rÃÎC;”qÒ<#hƒe–’ à(FÛgè#mÄ9>‚Ævð‹¸fÚ‰VÝà{ª œ¸ûÄüɪ¢&†" ‚ ¤ bGh@\# Ťh"€‚R"*¥Y† "b¤)’@’ŠbJR–„)&Pš ‰ Š¨‰ŠH¥ "‰dšHЍi©’V% &"BQ$Š ¢`†*H‰‰( ¢R!™)¤a’’ªš”*HŠ "’Z`BŠ )A‚ Ji‰H$j$J*h€†bQˆVe $‰Uf¤¤P<2 ä4SDKPB”± )*I Á$­pŒU ((CÍ„*D %!Dxö_éEÌ÷ÎáÜÝ߇{”¡ØY!LDAIÐa‘€b(WÙ*:$ƒŽî/NÄUHÀ@ wžZÂåȰDZ€ Ä0@@QAü øªXìØ„þð ƒ3Aü`N©¦† o DjH3Èke7¥æ!°lt°&‰{Ë(i]GþžÝÓ „ Å$JEI,LQÓTÄ”• £"°Cß:NG_âÂ@§·š&x’æ9jŒJdƒT¸4Dp,Ä*º ¾¢ÀÖRÔKŒuFI¾`tøTÅ ˆ]H»<‚“-ª"B QÌrJ ‹áY–DÙSºÚN˜Üt)ŽÏF”¤ÖlœÇ †¦b€,HGPÓg7Y.á]“*Ó!¢iõû'WäbÂánN³”ÖÎ$ 0V6ƒš8 ¥O¶%™UZÀÓÖU¼[fu€úžñ0Âw“Sé– (¶Haü!åPØá€åÁ 5ð!§D@“xûDÝ•‡„óÞ¯Ö©ŠJô`¦BUH4ƒH¤B´Ò4ˆDLCQ5$K+K üù\ ™ˆ$ ˜¥’€ €‰J…¨!H‰ ˆ¨&¦‚‰h•ÌhÅ“12iTª¢P2Æ@ªUË"&BA˜SpLPyï ïWs‰Â7#Â;±9®<."ø’U¢‚¢JFŠ€µß"|ï‚m7A‘`Ò þ8*h›±!¤¤EL¾Ï§I¢·VÓ0m$ôÔ 4ª®9RæÑ@ß]ÆÙ&ˆ;ßk,áx8 ‡¨ŒE<å0ˆaP±DÁ“›aHÎK%8(@D?ÝÀÙ $9LdÁ lB¡L8N“? Ñù‡Q98¡ƒ$Ú¬0‹ Áy¶@6e !VC@7í‰"¢€Ú×?ŽfÉD 1C1$(˜V!‰»”¿Zšt„#½VÄâ"r;ƒ¦ßWxÎÁBÏ£2B)£˜æBPà;k”Óär_KAŸG3dÚ:ÉJ°‘óÒ6ÙŠXoR Œ øèŠ"n@ýã¡=‚?­h:’¯´ˆ⃄=ļZÆZ¤‚J/ ©¹/Ã#-ˆM š$ãæ[‰FCÙ³8–§ g®%/5fgQà3) %EÀ8ïªöù”‡F 'ˆeѦJôQ‚ªPH1©€&¬HUˆÝ/g®H Ú >ð?cÀ£Œ6Ñ·ä÷cÛëõRÞ>¢ŠcmUS(«Ì™±q5àHÿ M2¹Iï>Û¢©X´X6žö™Ê0AÑÜÚÕ¨¨˜,À‘ó¹\;ÂÖsÞÀ‰éò~{CAºvWØšiÌKfW›£ aBBR{ô’&gRIZq§Õ'Òa£Þ”¾­!{WŸš4ü|™àE¾níœLÕ_-f‹z‰¶Á¦uÀPTüå±™L©\¡Dû!$ŠÓfzvÚFf°Zhls î‘ÀUœ²õdªà&ÄaÜp1¼­ «A”­Çbé!d„õÎR Nˆ$([Ä‹»N³v>/ª ÌtœêðÌ£¼’‚ e8j;COÊ@zrÇ«Œ ?Wõ©Ë, }–Pk<Ã^nhäx$DëK¤Uë@ýØÝ$>N'Îó>žtæf=E‰ÔÔ„[l† ¤4n¡@±òsšÅ, áñœCsgºg<äÇè©,±0MÕ–´›Èlk¢ÇHê4I“Cz7;çÕ7CÜqÓ™±(DD¤Ö°0CJ R°Í ³%$“ƒ¸ïÍÍœuÜã·:È(¡R•Aä)—Æú‰šÙ„™ 4焟’e¬G-ŒÓ3=;¦«‹ÝÜ܃†øpR¦¡Ú`p7Œsa—-¼2‚"3‘ ¾_ßäÉèjÌ Õ³r´x82`:Ø X#©ÐãAg#ÒªÖ÷/¯ùz—j/°j%ß`ÓS/Ê=üö€"ý±TU~² À; íä“@HÀ%«Ä`½Œ’wõÏ6”.hlyóh=cròAg(ÞŒqî¨+YÁ`M_Çá½bIŠœSng¿Ýd¬¡9' píxzÍ»©Þb"R¨*'£ !I „- 05 å2>;  S¨S ûâp€ha‚€ûd+…T”¬„@HA'žvxxƒž^¼1¸_ÆŒ ˆ„‹nÿÓâ}uÅóÈ’IuïÀi*âÆiêe'HÏC$¼cbDÚö®D…šál?HR¿jÓ¦áŒFmåB„#{9骤 ¤™Ç‰àØM ºƒD«ì76·Wçv³Ô/9 H2\Ð8J¾§Tó~)¡l yxÝzƒcH Ò˜ÊÆú(+Є»)‚Ïi*Ë•€³Õß ùj{b,U%ÆÞî{²}!!ñÓùßSzÏ ÀÖ´eˆòµÝÜUIiT}O–ÍdVAdÙÅó•Ðpà‡"O’å/ ~êFßõ¿ Õ*ÝÉ/–æ@Úuê” ÝÝrþƒ²¬ë€µ‰êgšDÝ´öcðÉ[ú¿–HàÔß«ª²"ixý,ôâŠþîD>Ÿ„Z±uhõ:lÏÍ…«–ÿn‡êߌ­É®Ç¬jÖja<­ªÊiz˜S(ñœ#Mä% $’›˜xþxÿ ¾9¦÷ðjä)‰[u~Ln§4ÿ¹©/žõ°U>,²2˜C r…½†I:ùñ‰ }ȶP`ÑóªÙQ-r#ÎÖþ¹utIkºM3—ÅïD^Ô[¿6æßÓ*ö8Œà½0“X[ƒ”›ª ì"ÿ*6ÚŽ1ì=º€K,°“â%ï‡Õ>WSï}©uëx_¢UqGEe’Á„ºÝ9 Öœ5ʽP.°¦Ï›ÁÑÏ2vÌ ™-:n)òZ4&„Íε,±AÎéhù,+9÷/Ÿ[×ÒÈO:¡ä‹³Ž4ßRPôÖ†-õ>ø`H7NˆN˜îëÎ á6C†®¤VBßYê厹JM¶zºŠ#21²ÍW# •Åý~ ·>ôçŠg7ôwÔ¯Ÿrí²ð°î‹ki6ϧÜÌ[÷oªzç6ôíœ=IyX‰PÏg‡Õ¡xÈú,õçdúàè:ãná²y¤jʳ~¤|Ùí¼›tý ?Mœ¡ÊpiÇø2öP…„ðdrÔÊ‘õ“§_+O©‚òŒRÛçÊiƒj»ÿ²ØN”{¦`Èji@ï˜w­­ªÎÄàÒXņ³5†¢Ä°æ:ða¢ È0bAVÑŒ%Èi­T lì kK «1š¹)1–mµ¼äµF‰ÃÁ8êlâmâíçb6}=}˜ƒQË™Õ!KÒVòWOÚãu¸[,Õ—Z-Ë4ŽÁ)xføâa]Ójލ0ç($ŠÕƒ 5Aì,¥S+`Í;4Æš"äÝ Œ‰«+¤éä!‚ÎֆӼû¯'ÑÄà³ÝºÀ%zånmgdËü™ŸMªt@ïCÞžˆÉïô«c”¦ZÑ Ü}|%Á°P ¨Œd„m0-¤MF¦B–ª¡f"œÂM„õÍI"„B 7h-bG[[_Ò®£×_;ò)ò¼»|­“ud[lŸŒYÀ¼ìGŸ«W¸hÜh.Ò—kH”‘áÃÑÍç¸w`â<<)ƒ£AƒŠ¸J0HΣ´qÛòøû§SÜö4±\Nô`N×T  “6ÆØ#dÇm_Ù“ en©{ræ³±¼™dL{ϧ³oYÁZTF bب¤ÚriÊ8Ë(-޶!4U+^MmTÒ×3Øì¡ èÎkÇ\!ÙÍ Å¥å¾ lÓ§‰ÐECBcJFø uAo®M;¢;¶ÉXÒÔðŸ¯v‰el¼ÐOâ÷ª$îzš!œì£55üÂÅ‚eªJÈÝÜš-`‹é %>È>c QÐ’(ï©e [£‡¤õXÉ4û'håsÒÂ{ð\Öur͵•d ¶&†63´ï‚@TÀl]ígré Üê`Øîn¡“¿–ô$`@pîíÝÜìÞh%òKÑ ïKº›K„qÏ{°_“HQÀ»ˆ=z›(; îƒ ³nrÛ<é• Ba -ÐŽÓÞ=òRJéÙ·ÞbŒ-C6Îé a0wÙŒ!€ì&O¿ÏÇ3H)“¤ Ž2}tɶëä+›vf"=2Á,KÖê•YÛuGÈêrNÖ4ܘzÙó[-¾Ë凎Êlƒâh$Øo¶ri±VÅÌô0Ž:Jâ!<-––»YF|7'dBÉá!4ÆF›©¦œ˜Åll`Û퀵"øò¹Ûæ÷¶Ý…aÌ×ÀÑbi+šêG½‘Îi~«í#§a–=Ú5Ôø¥œ¡€Ú©”k‘¯'öñÔ’î²¾ÝXÎÃLc:Jœš˜ü“ÃQ}R©ÉêŽ)næc)3yÊO¶4 Ýv;˜­H§sROÆôÓâ²wnïNÌ>oV¹Ò‘üFš“/,‚Wíü˜V{üø~.$•%|ËKD“͘¿ŠuIbÔ:µz_§á“鯋æYM4Ñ‘Id¾¿¬6Í"+a†Y£>Rìo×GpÏž§óRE5çx® Eå y”çÐ= söçmˆ…ˆ„” &bZ€†"SˆäSÁ>bC²|nºÝ —á')¸šP÷hÔc'vVòµƒetHíH0H¾‹.’ íH Òc`œAzŸ:ži¨`ñê£Ãל.S¬'æ°Ûñ§“¨3¹(þÕ:!H‰0¹X¡•”¬ '¥(ÃQ´MeURw0á¤HÛSv ¥0dCoH±cxÒÃíýɶ~Fç,ƒ€0_¥DhØž ×ÙyVâýµ0è̼޴ýÑ,BD @'`î?¶íÏœ9¤ê|þ“äX†$Rmž„“ÀxD逇 ñL.+*¡óP&3ŒA•;¬ãøæNóYÚìp<Æ}Ï{Ô§k @‡œÈ„!ˆ!³c1N‡ŠøáïCÏÐ|Ý'iéù.Õ&¿…Ÿ¨42ÙˆlF@(¦dù¾[çkÌü{gk vò̺A¹ ŽIEÞñ\fPËï@…¡¥ËyÆyIàêt›õ¢»d.FŽÅ¾ÖC‹ Ì©‘ßk¢ÉC´•„–9áLVÎHÐ>=êÜu˜hh ¡ª´Ës]¸¦¥,) ÓC]ÊŒ´µ[FYP©B†XTh˜¬¸QDbÆ0JLïâñ¢Ú·¶ÿ&À6œ&:?ˆ8;°5CŒÆ­å‹?Ì‚?«Éö©:¤)«Eg}©†~ŠTމ>°BÁÜiX /' ÄïŒÁ5ÅDÖËUéaèÒ¾ƒ;] ö‡%Ò^õuÖ¡4˜)¸~ìlz¸l¾éóüÚˆÌ( %HaW$Q ¨Ñ»+Ås´8ü"ƒF3™À5ù©! Pû©Pìh?fÁ?º(’d–’ â!\æ%â#íOœ€l!ºÖaÛâí ôÞÞÿd7ú/É#Ë«4"h3À/¢€z±™é)Œ¢Àj肜+ Ô™t>²a“}ƒR}OƒÓ£¡Gx TNs .œ:RUÙ yvìqóG¯·Å>²'²*š+ûÞŸkÝõ§°õn ãÒ$˜?x°ß' ™Xº'L¢ôÓÅ£dw63"ª¢f Œh`7-¡®üÍÌÿjÈ9X¾”¹z¹øûúìl}#Îé˜jÚCñ¹d2eÚŽJ/¥€ÄoÍȨ$(¥T ¬VBõÉÂ"7¨ðæ÷R}Ôû#²8w1ë,ˆCÉ ÁYŠ3À¹!“Š–Fú7I:¡fO¸ëã³<“hähæCÉ|=»¾÷6 Õdƒá BÂce€ !(b-P£2¨¸J.!a+2A& Ž#(°dbp$I "b¶Ò¶²öª‘Ï4ÐÝ … „IH ¥Ñãêllu&à¨Ò*eƒñðqxº,‘öIsèºG3³Í óS…iဢ·¾ÀÁ4œþd ‚%¢„X¡Ž $0 M áÊ# Õ@À­ÉØÍý6¶ë²¹í¼ìB|Ú$øm5ÅEî² 6gÑÕ3u{ÜL)àÜ/n×î1´KËÅΡͽ˜Î>í=¦ûHÂØš[û<Ã|)™ÑBjGdÁÛ©¨óT!”Ú¨$n-Â{ Ò“Úg¥„1r¤6öC;_iñwàùPzgá„åo`}VݽÌÕUÊNgz>–±þâeÏ<¡9]·{–RíäÀíô㼞‹y6Î4é{­ è§éIi{œÞÒã;æ"sîQöB”ǵN_؆”ůB6ë¢äå3Ù´Lï†,ÛDåìÍ0¬è÷½DT{©)ÓKf»Î3¯Ñ׃EèÒ>&—¹à̳¶åGcQ"¹HÏjÃ8éΗëóÒEPá'ÐÂ’h†…†¦ëqô~¤¥ìµ'#¦q±îkØidcÒñÑhÖÍ“Ý%[`ãžêkŸ—‹’a[µ†«üôš“Ð\F¶•LWÛÙVʺ"˜E¬]-¡†¦–}0¹WŒlê çL”†ÆÑ »Ù‚`ÎpÅ|߯;çm<û9ä2æ^Àó2Õd=¦¡Ä××bèûÐmß‚•ð= šŒ*&ÒúöN9¥fÓÜÝ“ÕìXr{4÷ï³oùY—>cÅ®_GC×#ÐFHcŒvÛ;<7Yß’4Þ7l@qµ­˜óU%f_Ÿ|ôèƒSF#–ÇqšØŽþ¿ ².]Q)zå ˜[jG#†ˆ":¥O Ý3lñÉaGßgû¼Sdz"¥ÃIZ=‚꘴en›Éa¢“V –½17½Ë¦¾HíjŒ±…Ö² Á·$xuHåh'œåkè²në`[Ø„iÆ(* o¡é \< &ûà q>ÇÁdÚÆ@ÁPõ̦„ø¸oN.ƒ¡Ck|æSיɣç=fƒÊhŒè7>i±n“…£oN-çÐäÛÓF¿ L9×1¬ë~[\¤_3E²É÷0±©:Æɉ,vœ„AóBökìïo#Ü„uÃØiVÂËA1 Tf­‹T+”uÕ~Zïˆ6«Zêá dsÅ„!¡&Ûàù6ãoЩg¥¤48ó [V"Š!Fn íÄ6<ýos¡1Ù7zsnpr7mTØBã ó=l„ÌT¦D€äJ‡60^‡9ŽÆÆ? ¦Î¡JhåˆÅä° ‘No4!û;Ba^ȯY– ¥C™ ˆaÁVÎq¤NSÖh,¾JvÁIYƒ†® BÑg°––d! HŒ8È-“”6°†l0æ‰8ɤ@ãnãs® …Æð<4Ì[›"ˆÜEvåÏ,?^8–2l€°(¨&G2,-I*,ÇçœÕÈÛ£™3â‹}ܳ¨â9:ã$8ÀÖŠNÁøÅ5 ;xÄØ0ØÂ«¤RR¨Fž†ofG7:"6Ä '"(‚'Šˆ¡Lhw¥‚D(|ˆÜˆ¶å«-âþ `â€FMŽI;“FŽ…raÄ¡Ø3“gˆÙ¶á¤Ö$q#ì„i™Ü A¸²Q­Qœ¶+0Þ G—¬bf1Ó“XÐÌGåúJŠ{@4—-ÁQ‚åzÉàÅ ±¤D±/Cn|ŸC>¬m°F½*7„Ã^X /ÈG¤Ç@S è"—=a9Òzv݉–±‘SZG4™Ã,Å\<èy-o*4&ë×¾Ó7Ðd{ð•EBZ¥²”¢³X¾Žñ£8’kRÊYCã¬šó˜ ÆC»¶Ÿ—ªÉG2p«ºJˆÍεǼ\CšL‹oŠM§G`˜ÞnÙ”¥¥T°™BÔGž)Ää²lÕë—–[k(ÍÚ)É ¢¡¥ *hX‚n˜gݦAÁ—ŒŸY†,7•ȤZZ4^À¸ leJlm%ÉG3 Ã%¶\Ì6c–)Ý¡Â1}D-—çÙ §gkõV½ ×Ûæ™Y¤ ¸‹Î"³XÊBYM@\BÌXPåžDW¡©7óÄ °õˆ‡w•¢\¢kB….9hh-&íÝuºµ”Ú¨NbA²Ý¶®ú3“0Üv«ÌáÁûB¬º¡¶:X®}¶tT˜Ø[^K<—4ÒWZ+†®BX ¡X]qüFÛcÀœJŠüáÅ„«Ã‹%y`‹’bi´lmÎ!d);ÂÒ´Xxô[Çû;¤Z¬Ðž ¤É€+ è=FhÙ â zƒÓ4妄zØ­¡8—¨ƒ¹íS!åã©ètËÓ¼¬]ô¿œÂEçÖ«gm´9eNhS19˜Šô=å2¬QRB"éW4¦± g:I(H¼× TÅ¢ÙvIZ’2,ÌEB ÛHL 겉GFï K…¤Æ$õÀéÄB@ì>†6à Í“ç®M„&6æÄ“„õ *!<'5hÝÅ ärè³Xˆ9¦ªBîEÖ¦ï!æwv¡  âìCA»Àîˆ4<Ïc§Hr‘b¨ K`Îz\ï˜vŠ̤BÀ(  ‚EªƒíXjÈ¢Ùy u'N†ÝØ1^e!8'£€peÒt$ÄXP‘Hˈ÷ljnñ!«Ò_¶ÐŽÏáâtñMÏLWnÒ?2óŠQÞ QCãØ¢2ø¼Û’’Õ>îûREDF1.æ-Kí{·È¢Ñ•É%Û3?{à¿»•ƒ8¯€†”21‚Š[5¢BÆŒ%=r”ÚRDgÕÛUM#Éå©•ßD3H‹¶Â6i 0ŒÄŦX[cµ $ €$ô‡¡¤\,[#-’Ðk;ɤð…ï{‡IÄïB½$Ô„B`a@Ó †J™"4ˆ¼‡Sé½óƒÈ4/6ºÁ¿Úe¾_\â&iµý%›¾à2@ɬÄ&DDÉ2S …‘N÷H@+¦Hk­$ð9 ˜É¨ü†KĘp aŸšT«5üX§,5òò¹1¥f'0ÐËM1 %‚eb¨- ÒŒ–©T’€QÄ´–[(µ«-¤!ϻК… „e‹F9‰”á%L1ME-4E54¥15a8Œ¸ÆAb}æ–ãBå `$X±‚EÀ´Ih))°‰d¥ „aŒQLSIIIM HÄ‘%)”Ÿxq`v¥)DGufÌ«b1‘$”±Æ„ÈÈJ H ¦hh"ªH""5‰5+µŒ@DŽìò$îÕá£Ú”Dˆ®-¥`‡DÌ´£¦¬b,A”´¶ÄÆé,Du YD-´¶£áT2P»¥Þ°š&½Êâ§O©1T4ü‡V[}?¤ýëÈùî ÚŒä TÉoƒ±!´D¨S@ ’øÄÂ!ídµ#¸rÒ¦{-kOu±õÁ ²:&uJ £ù‚I!$n, ÖËDÜq@P‚@»hI•,Ã(*LŒYÁëæ*PšG‘Š|ýc&¥Ë"œW¨qÀÂjÄ3«Ôëkó ‚HL€Ìì}Ú ¦ ?:¥€Ò fN$}† AœâÒ4-þ.5h3Ys;Ñ„Ð4ÄóÚLõ"Ð!ÂUŽC[–Ƹ’ñPѧx6á¿­èI¤ÙzÅq¤šl¤Å[øGÄw cjòQtתOïò~X´Ÿ‘ëC%{çf.®?§ÃÜÞw1Ô†G½ˆÐK´8ðÐ[3ïÈë`µ‚=ª«ª3M1¶ÕÆT/Åuºê›¶Gô6q! ˆ ñ¹>›=´>Žaz3ïŒj¤P%BôB© =@ç›Õ2”­g䎤à¾vÚ ¨6žÞØŠÀ ŒB´vîõÐ(qˆõ&\H <üµó¼ñés»fë0¦Ä±’úuâxIé1Ŧ3‘Èñ–)E2?uÀ9}À™ÝÞÈË[û;§·mrÊ¹ÐØ•s©´ÕÅÓ­ ƒ~áÊh°Œ¢j¥(ÁYZŒì$&B‘9›[ÝÚ ¦B©0~¹‘xâ µ¢L®Qà@ÚIºÒ+\¦¹‡Q  o[½„  f°¸ÉTZ6ŽÆCDˆ=ÆeÂ{÷TÖ¡5ºcÇÌ`Fd‡›1ŠAŸ =$“¥Ä]å¡ EPANvk^ÄÉEâÃXglÑ*fBʰÄsX®v; ÃD`"’‚2^m°j" ,J >"3K2XNlê `¨¤””–HGu^ž­[›éMû†ujMdê›ï§Å n›TŒÃ+{ÆÁ5À†ÊF0ÎþiñpDâ Ç}Y“5ÆMc pJ¹DœÔà`Áë/;¬NÁtí´»PÆ´õœw¤ÞðìáÙâxži”Œâl‰éœê«ž»Á¦m±ŸæÛózÆ9ˆÓNgê{ÑÞïçNçÆŠ¬BDÄJ1RD¡@@$@ +"‰ Š}¡P[*hñ`IS4Yáp#Hž*IkÔ'„{tme<ŠàËJ‰.îVÃ&‹õ¸d‚š5‹›ÄÐm¶Œà%ÈJÌ5&‡$åà¥E"Q€ ‚#„˜CJ¤À@RDÐJæÄÑ%”5T9MR––, ¥ALŒA”DHY¶Œ  ‚PPˆ ë Ú"XPˆ™DˆSQÜ€¥È –’„hŠ©Tˆ=‹ûu’ê@Põ!Óò¹(™§Ð*\±7—Hjäo^á²鎊%Xà/C¾“]y¾uñ¥’®"p?šÑÃ]¼©¶ž·±0bËká+¯“®¹Ê-ž7¨eÑ´1§¶¹Ç±È7?Æ@T*=mM¹—VI ’5FOÙ…ê‡wNñá¸#Òã ã]m/L„b]E<³ÃXÒ7a·öÿƒ£×Fúá†u_©WÍ;fÍ0l¿­ÇTÅH-­6™'VeÒZÀ¤ðMëñ~k®x³ÅPÆ#âÍ[»¼zZcèîÁõ/²¨Ðæ¶–"" mžµe&"Òl¬H/YßüiM‘^Eˆ HPä<êW™X»1.¸úÅÅ2uñÀ朘 Áá­¥Óy£&ïãÓl)[¼°u™ùb¬Çß´Ú£ƒrHv­–;ˇ 3s…30$’ á†ÂJÁ·"¨‚èIZ;+žñãÍLñžº€ø^ŸÆ¶³åïß}õ?õ¶û.4}ÜvdmÅìÌáè&xÁ+‡=÷8ÔEêÙþOê~×ì|E{)Z)(ˆg±45%NUâ\i-ÑrÅÁ­?­‰Á¥Ihw‡a8žÈ"Gvs+ú/×Öù|¯ŸÈ†×±vK¡Ÿg’Ðù½Ô;-6}k)ô*ÞüxtH°gÕƒ(ÿÌiIÿM•s|{,¬.ýŽ~abM‹‹Ó†€É#©xí3(‚ð4ŽÚ¶Jé¾ÄX:ƒ2ÎŽÝ»§Â3¡Úœ¿`ý|8þ/iß_&ýÝÏœÍ l±\¦Ÿ…£i)EÞ?W–ò½ :‚,&Žù/TíT)tæ[X¤bâ3—Šª’PƒJÿbåÑ] åKÊÇ!f¢q^&hÒXŠ´E19n0Å™[4ʵæ ÜLà˜¦ gÄšLB->‡09±ÆL?ãÍNŠ(Ì’rOZ5˜âQ÷ ó¦Ù±c Þš– m!·^²6ÙpÃV†²X‡Ãè¢IÊΘÓ.Z­æ¬¢-8†¬”ä¨k,6,65#LmR=³Å1"2odå6-51­œ±@†Èã„„¥#îHÌX¬W­e,ºNËb›…Ó[5'HnJr´hm÷¬›[tS‰¾ ’I:ƒ[< ‘ °C˜˜ÜC:xvÙÞ*ãUDÙå6lÙ²T“ª&,æ`ˆr9 ›³rµM TfˆDa„i‹% Å£ *l8°ê:ŽãrÀÓ¸i0T,ÅDî‡ áŸ&æS? $±b+aagFhbéìqËàA&a6Á™¼Û„àÜB )°u/Q—YâH$€’DdNI£€Î1’ÄkAbâ40TÅ„˜ÞMîôÞôÑ3“X´†=!ËËÔ’%­Â¥µ2†Hm t3$A’AAèt ŽIlÊ™% Z2Ópi‰¶È†ÆˆL'S&œ ¢©‰ÑÆ ºéR†­H6iÛ$PufIÕ52`‹Ò—¤¡Éeà˜êºŠl ðs†1c6fTry“É,Ì£,F1·w¤Úo£EßlŒ•Ôêº7j‰¢(À™¬Ä¦W*[æS5 V†u&Ð^*”âæZPã½$;½ºÍÒ rÖ0¥fóå4Ûàl\k9©Ç}Jm G6o¥Ú u#‘RªL“6.1¦hN†¦&4ØîÂ#-9k¶í£9 WfJI¥B¢&ÇweX0e䌆3bmG4fø06R‰812m†l¯M ….*Ó´4XUÄ4%F:Ò#@õ²ƒÜˆO-fÀ⫬€M¢$xæ±£u¢¤´X€ RF %¥Ù•ñ$Þë8mµÖúW$ï(‰DxX£-,^ü2*GŽaÖ‘Å!I‘uÅÔ(ÐLDEQT1D HI@‰D@¥"1QT}ž&“J“-C2ÔDH‰HP”•M(ðÓÀ5· ¶ßgtÉT’ 7„Bùõë/œKÅ…Í¢(¢8³ è@ƒ…-~8¶TêÍ:|TDÖ0ì]1P7# #€42Mdá`@Ó-M ‰¡G1S˜aÂXhC­Ú¤¦¯Fˆ¥4×– œÈ°º`VÝŽdÒ˜ML±°í­ ç "‹zj @j¢ÁÝ⌠„ÓØÂ0ØM*ï É'A&ü+ˤ ŽsɰìÀ›*ð]P3ð1ÁƒsÅz „i]—“!.P¶àရ\¤ÂÒœë 8#3j6´“–§H“ÈÅ(ÉvIy…ÕLUHÌËÁÃAP"´ ig›X)<0 1ÌwtœAÍ)iL™¬˜¡d¤æpA 3ϸÇ2h$]×™wA§1$$>èn‚oQ0 À‰I(…@¥)Ì&J˜Â;ŸÏŽFŸÐâ¼DûüMãPüñ7D䲫¿#Kêþ•‡›O©†9¢ M|‘æ}ßÐ" < Áæ=Ø `Õ4SB5Ú{¢+¶ÝÀ:þ¬xM‡£Ó Õ<Ÿ=jÃMÁ²©u f-3Våï|:Ý70JÂv€KBBFDp–Dé””äkóãñý°E: (·ŠID0bZB€1Š + ‚ÊH¦t¦@E„\s ª”¦ JF•Œ̉,¬5iVSjŒeU¤‰eØ148'%z„ÍUVµB qä’+*M317¿Q”ЖXÄÓ6Á@(Èaì5pÒ„CXÖk(ôcM‘‹°Õ‘N‡!Nc ÌâêsÐãQH饳SH[HfŠyhFk$ad i›Lê†MX€ˆpGª½¾ïô¾…TÈJÐ ¯Ú@Âk=UW8šl­Á4TGhØnkÐ.‚ùÔ²OC(ƒe•È¥'kÔ š¤!¢*(b*ý.uМ”‚ 0tNá¾õ†l–î[ {(`÷š7—°ddD"À‚ ì@LVI€C•U×È Ø0?¨ @½à‡(Œ E=IQXx‚lUÀÃT pô h šáŸá}÷|Ö4³6T¢&µ­|‡èÚ?ñ3ðYùò{äæ/æÛÖh;4"Òh$ Ëa*ÐŽ¥)æìU±0£1¤CIîpôÊÿ%¿ôíOæ¥2ÔûO“ͬ|Í=‹z[þ?¿3îžñ“îMe€¢‡km¥óf)h¾LöØs“i #÷ÈøÈ¼d×¾©fò>~º^.N?ŠO\'[ë®Gå'äg_õ¹u'”ƒkÃ…¯ÎOn×­§J_U§èÛüË}-O}¬ëoë>oµ¬_7ŽaÆA~»ƒýàXÉ<¤á"ÉñX÷$o^vûR¾å ª{O\³Ùk =5¿·^úämµÙ!Üã>)$KËâ·ª@o«y‹Íqú™WåJœ5õ__*{v¢§Þ¾l+ÚÐúmN¶¬á£æ·Ãã̇³Þ¾\¯µi¶Œl^R.Éàê[9î|g:«¯Ëä´õÈ&ÏÜu=‡0SÊöËúVÙéjÎÖŸ»¶wȽ$…>Oá}Ÿ@'­ü¶zdùäôÉè“ÊLÓùhI!Œ-÷;éã#éÛ^ù©¾Cy¢M¡l=ßbÐmvHy¸×®CN1qÕ¾%§}§¡ÜÔélö¾LÅ=ûCÞ·ØjÔy¼ªQüÎ4z§UQ‡}´LøEµŸ;õ_{¼doÆxYî“PåzÝ}óÊÁ³½üöwIöÓ!é_HŠy:½¸˜‰ƒú El¨ì’½ŠåZ>¡))‰!D8-“«ÙöW¨îüB3m ö€â­=ùǃüæAŒ\A¯Å0VHÆ1\@%ÉJZZ\˜› \$¬3%EpƒŠ£ØB&ƒgAÝ" …Üûdt&ˆSb%Ø¢ÂA]¶NŽ6ËœHÂ_©ÖÐPD½)Ò+J†ìg‹OC=6{¿[’Ø“ÑÔ$çW‹¬ š@â0‡d_ÃB}§TuIÑ;‘ÝXC è) i$P¦X ¨ÐÙöðÁ Ž8`™½œ¡Ã1Õ¦ùCÎ "Hv‰àkt,»LG/ýwJÙ}îŨ)"]çßn·¤`Å{TUñƒ¾£ßŽÞÝŸ9Ý —PìboÁ„´ýÖ„¼Å€¹l'–ÑxÂVèì½77.¾`¦#s<Ú:ïÂä*Ø ‚äý¤mrˆ®!ÌæS øˆ“"ð]˜ƒ`Y¹`X9e¸u:‹8~’c„¨¹f*Ê2”`EDde ÈöȈ*ñ¢â ,±¥œ UA"c™Ø„š¤4ƒ M„Hà ͹1¨ÒÕ8à™3aK¸&O Eâˆh܃rC>Ï!Ž{¶ZX ƒ(’VžQ ñ.!X4“LÇîGõ|ëæ2Þ¸ØA™ÕJ†D†@ö„6}Ëk~ÏÓ×ã]qY$ŠŠ¢÷Èj’„5´²2ÌKõÈÂZ^x<…§•Y†dY‘–±`¥‡B|…0u,´¡g\q«Á„å*NTIS•ݸzÀ—>¥è `3#‹ÞÌk‹”'jí= ÔA*BEß 6ÔDW/ "f!1M CÄŒF:H}Áóm®Ýñt|­óÂÞóö &à4×YÏ ˜“¦‘4˜Ð÷œP_º¦!Ò†yÏ®xuô™ÄO“ÁÝ턇N‘•M$ û_™¬ØïC·{˜ùì?f ¥yˆ´ù¹Fè£\Eg?âµ* B7jj`Y.­„M¼¾¨Ñ»ìõ¸Ž®èeÔ›*\¦LÆE¤i7/¸·?CÁKË‚Æu?~vµì·ìïÒû{¶SW=ƒEöQSË ú¢êa+Êá»C£þŽ‘üåÑ åüÃùÒTÀ 3T³)KMÌæõ=þâñ ~½öDèÄ[—x×8’,€DuðÌ÷‡ªÒM#K H!¹(}×Õxw¼Ê§“£¨èþûÎK2Øß-Ý)çfŨ÷%ýV|]¢!§·(Y]©q{çA ´hå#(–þ'SúÿNX3ðÿ7OmRk[}Ï\ÕO’Èð}N£Ž6tLÓ¹ñð[Î1‘pj$pF0XÈ5 Æ\Ë T·r6zè· p²fÖØ $Fì˜Pð™Ð‹qäÜ¢NAC![˜3­à½ˆ(ª#@ ™%ÝÍ—²ÀBg¾ßDú![AS$;þáf9:GÏŠ¬Ó@°«Âx W’G1ÝÀÊ1Ü¡˜h³ŒXÅ0E“b tí°œaR¡©!`Î)|³¯Êlа†Ãž²Ox@»ãpHçÃggvdršíC[†ï­7 ‰AVª*3;}^ô•£ú6ºøwìÛM4¤$„yv¹Ý¯ßáÏC·¹fƒT…ô 2¨3à%Ès’2ƒ¯™§œû©h) ¤ PdjI„"ˆ©9YÆ{»x-¶ßÁ¡o¢S^B0”cWájdרö÷Þb<»Ÿ…aü›$Jb@‰§+‘ÌÎpÞ’ø_=~0 _eÛf¯`ðB"MûËEž–¯ø(Sïè/IöÅT~Ž´dá ç‘(ù:¦aÎþSéÆû~^J6éïÈÃ0ˆP¥9²F¹«IÕWlÑP(d¡Û·ÉMeù5Õ»TzÕ‡rÃK2[„r±Ô’öÚcå¼gË[,-WÕ™b…û_7bLËeâÑÖÃU8™CŸ]É M„@B×¶y÷Çݪѳ[+Aœ¼hû½Þ‹I2µíÏܶl$’GGœ,C,»MºL/5I!~2::{&iTŒeã;fY¾êeN:»çJ8ÝVÖ=Ð6†ÊÝXÖ:ù®Ë‹—7²ÒóCpmÃÂÖ#Ë6S$,o˜”&I&˜ÍNQù¸½©Ð–2úí×Shá0ÙL7 Ñ­p’ñH@•­8aÝ®ßãöjXcù^vÆvwHÞàCÍásV¡ßO'>³ð9=¦{LÅQiÃÄ$,Ó´¶ÞOÅ!&ÇК[ &VäCíè5 ‡£¶,«I$ ØèÚ¢–ysÓ¿Õ*ÜÛ«iýö¶rßÅÕÂjœäc]ß/ó©ù¾è¶|Zãa!U_(³²M¡¦£[Éש­Cƒ#,Þœq²±×©“9Þg^fƒ–æe‹1lXë ›pÖhÙßä*WUǽá‹Â¢.”¦M QPéU¼ïôÝ£Áp‹A(†«åmkcŽÕ™ŽLæh¦ˆMxM¿^+0`Xm=ô´Uèî“V Q¡Úº%ìÔaÝå´šš|(†™¶ iAóK\®øOñgųOpgnÞ„x=äñ€ÇjÚ;ÙŸh$ 0J†SÕæÅÑxóËÇxÏáB„HcÈé|²ÐÁ'”êCñ#Þþçô5¿ó>ß³ev"G‹Ëk@¡/™{å}8yÄÞ?÷Õ9ÅRö¦Ù²t¡D>»^j«ú.”ê‡AjPÒ¡ÑøL¿£Hüõ~ÆØýš•B’YB±0yëÇýÒ³7;6"ÚÓl-“BTãd¢#ƒ"¾ ÆÎò)$ÀÍCðù&‘¥vð’&“´u0¯ò¦«Ý{çóÓR˜5âÏ᤟¹ôçmZã ’Þ¢)Ä/×ýçõ6Õï|áÍ&¥üæ]C«ˆ³ê‚!øórEìNÚ}cYšõ![ܱý’ ¦fz& q…fθkEfcEš4ͲhF!ÊOë{q6*¤%Ž’qèÛQoTèϧý ÌG¥´+)9lÂd¢`c1Q¡ÉZ!ˆˆ¬‚Áj*Ñda›á9ç¯'äßZ\Ù»QœoÑQ˾›z´j¨…Üø‹Xc]Ã#MÆ›¡‡Ì2×ÊàKxkT2àü%y vi’… Ê&%Þ†-[RŠ/ó³ S§þMõ‡wY’Ûbw¾t—H´£jtzkF’Ì-¢ºmR×+3ÃN©Š$q’v­ãqS:Ûá©&ͳ¨Œ§Lr‘o-Ó¬~ûhw»£ÇÙ!Ým€ÛOŽÎ¶5œù™Y!nÎWnHo±aЈG9ŸÆ+F“¿âmt3‰$ÈÝñ÷åÙ6£òcã—IšRÚâ ÄÿŒ¿ŸÀt67®O¾§\–fn°hAäĦLã2€Ã;¦V4Æ5’Ævõ# À” ³›ó¾;ãà—ˈv_Öþd—5 ˜y‘áG³k«‰½sÿcéÿ°Î‡*ð”e‰`v \íÍ{ YŒÛ­š`ÆÑŠ–ë3 #xrIK¡ÝB©q2];{IíR°b4ÖÆ¸ãç)§7”“Ì;²f„(†1®iéïëà©??ØðŽXpÛƒ$ŽdšÑ!¬÷¿±EÄÒÝ’Múø-#\YS†þ£S‹?%˜ Î=k‘`¬1äP/Ú-\ò­[ õ&'Æ äSCñ~PExd™áñm”ã¥5$i†† ‘ÂQB‡%µÄA¼#N¦‰Â*bíõvÿ´&ûßn#wÙÍæ ˜:UT÷¿ã/ͬŸSÎJý(ôßìW•cm9N8BPzZü© ýŠŒ~ÛYšÃüO¶~òù¤þb:ÈZ'êaSR!‹æù±îhµ0úí©íu(q3¹.ŽrS¼¥áñlÐ"ÜÏÞ¼äµe¶% Ò“|õûs“i};¬Cox Ä€–BìAbJa!‰hY.Ó—§fõiÊÛŒá4Ó诣XÃͬ{¸Óª lô¢žÏØ_î>ÕþÛàÞÓ3hBm$@ä¨vxâšUÏÂ÷Lª/Iž]•KÇ U—9ÃÑɰ©àû?^î)´+ñfÃ;SU±ª§|Í,Ó^(ÆtÚh,h¦‹rF#J–È­¾úL2Ï'–þ=oa;ÔÚ>’¬áœ¢™!þó»ëD/¯—|ýžðúŸå_ûÿ2–èVD3\H"RYÓª|Ï·(Îè“W]%k‚ÞÊV´À¡5æ»óL¾ƒa cD0†|0Ÿ#NOpñ®‘£(Îf&­_ù<:~Ÿâ~oî?G÷?C¶›š@BsV¼YwõL”F”a'ÛX¡Æ8Éc¨@\(GeH•eD—dûÇç—÷8߯¾ïÇÈ.|ªV¶÷Q‘I„aS¼~Gö5„lcÛ¬ö®qΰ&P'NïÊd¼ Ñá=¨ß#·ðñÒRç~ÿ‚ñððdÛ¢Žq$}~JÀ°ð:ëàz%º[ XâF¼çcŠäÜgŸÔÐŒðým×[Vgé˜¨Û ‘DÄh¦Tät•û•uÕ[EÌþûÎ"txÎáÅás×QÍ|vë˜ùvßÑÏ_ìõòxÁÑWâc6[øâmηÓjQࣲž5;Óß-ŽÚ¿/ŽÝwÿƒóÏÝËv­ íxȺé×øã?ríëæËËv{0®SÙùçŒl¯ªtº”yCd<|û§ø·Ë¶Ã (£,¤’ŽÍ,Ãç“̽]ÛX^'3l¸eQd‚•,úýÄKL2hƒˆ„©3p×i.Ž릎4‡z]©7ΜYÃ\䌟©ÐRPÂ^ ¥sz–jj–ªšL5ψvÖE„ “+?ì< /u‹‡>ÃG?z—O}S±Cu‰”à _‘¥9íé•¶ßÍúßü3}?½ ñFâƒëˆ§lŒM#õõá¦#"jÒÙ%b~Çë\SEm•~‡ïÑë`"?%*>µ`¬ED;¿W§GGçsIúÓ¤Á<~ï«O„gÓI”‡s3ì4ŽŒhJªÀGáÏÊÿÍörqjû_»üO¬aŒæu8üêâ²Ðª©–;°øî¾§¥Ã+@ÃfuºŠ†`Ù0”ß6€ ¨F.–D’è4 3¥-ß`²ç6ÉdIù¨H¯ÑÆhú?&æ½ócfÐÏJHˆb„dkÉ™Žzÿ,dzDgܳaÎŽi¹N”Öe¼nÏ~L—½0ëú—gå\1N~oMw*ÇŒAÆÃ°ÐÃOÚk ×sF¹M¿÷ã©›àšÄ©ÅwiÜëKœw/ÛÌþ§8ðÖÆIÖkÂõ¾[qÚð˜ÐŸè2½Ìe]ƒ¶56ã ’'S<¦µ‘¾K+ø?ä7ü¾ ˆÐFWÙŽ«õ%¬”Ã÷]Q7N.¡)iëÙTXº§‡¼3ù‘™Ñ3gzß`·yŒ*&ßúÿf­àtÙjUL ØBósœ(ßéþGâIf0„ž!9îw”Ýö‹N¿#‡/ÆÎ}Óýç†'xÈŸê)«§ó™vÉÙOÏþ—ÑO)9µ¸Î½Krªs×ÒtŸ»á¾>í8’_·'d p!y…G0l—å9tûgZƒæœe•‚Èa‡ÊݸÄò[& ÌnÁ§®ó7¦{Äa†ñÌš¶A =ü¾‡¿–ÙhØÊµGl‡^¿ýµÒªnÞA|÷ßeœ±ú¤bŠOkTºÒpÊ î£ “(j4ð’RCƒ `ÂB…I‹eÏî´þv°‡VJP¤Q}®thÿxœ°Æª?ÅmÕ¥$¢¯x©­¶æôý¥Zƒ¼’·8êðý›98ë½?1r• ’¥´‘Eý>î9蔟oåàÅ^~­ôò[‡ìÙý.ÜMHkrŸUϽ֠h /ºõ]rÆY "¯#·¶/qnJýO³ZÒ4Ìc¤óJ2‡éÿm¶´CUBI~Ûm·—׬0ûRÑœù—ípÕàoV FMí*ƒfu6ËFÆ d8vûkˆbÜ4nµ `ptá% $cÆ&hC& ›E Âc)‚íIJÅëPÖõ £Ûžï8n¦ÑÛ8b8¹rXCcȈÁÜ3CÚ¨7E+Ò¼:z"*‰Ìæ·yÃ{¼—1™cj=é+Fb¿®Çš5^.:²S†€¨ª!óÿôÿ§÷x“iþ­>Wûlü´‰té/A’AÈG;™LÔ¬¯·-î¡RÎ÷eðÍhþwößèùßÛ÷ÑpÒ>½eÉͬ8ƽt´ÇƒéJï]ª‘¢&m…ukZÃ\fí)Öñæt[¸‹ÂÖþUª™²ûy£Z?/îñƳ‹s´‚Àf ±E‚*bU–ãX¶”fºÉžîøðÀ¦80ä§rG“ˆ+›-n:Ö_ÒäHÙgr+])³§3œ¿/x”£„“IŽß—Òà ^e‡¤‚&I¹ë0ÓnÊ0äÆÜ6ý~>¯ˆi0g–ÚI5»Â!„+ŠzL\ƒÃ27Å" (Jy\Â~øé>cn ¹1„Cpu²b"Ä¥BK1¡CÙŽ:Ÿ Ùû77Ý v¥JÉÿ(¶ sG 8;Ùêõt/ezÛgüö” ,ï .Ô#½ÆœGxXËjëHë>?£±*|’ó¢GTS­;:ë®A.Î(”ì® «öm³Àõ{5x‚S«Ô—^€kл9.á-µ–¤KŽZríËŽå.ܧ].›·Câšrëº_-×¾VQnñ{åûµò‹äWÔ/ß/¬_˜¿*Õ5«7ÌèY屩_\¾¹5—ÇhÏ¡h×JѾ“Zì#^…£^ £Zæ¾VuÌk×ùùø×ø×óWYXus¶½]×Éäð~O¢çþ÷<¾>#²çqíþ›ß÷syvþgÛæÛ[uþ׋ά¿wý¿Ä Iñ> ˆ „\2ápÇ p‡SÔï¶ †»Y«ÔôµZ] î€Üf/‹ÅøE0%ÎdåæIqL…Õ2¤š0]~/UŘÊäúlVÞF×-wü=¢4 "c$Ót¦š™‘&BLÁ2„ È†·@ã£ÉK‡N„­GTñïM³Vïi´ÚxÞ4@ ˆ±@@z<±*•ÞXÑnïXdn“;˦]w»ãã¶¶ ‹4¤#e1&™Bã31I[ל^u·<&-85dÐÞ!axã³_é?³íb_ÏÐáÙÓú§¬œ«û|ýΓnt[îíøÐ¹ÓÚðü&|ëÄólÅ™ìS€çöóœç8Ôx®C»4®4ãdÈk#Å]LÖ0Â'c’B¤ÒSI÷—Ï.…4c±€WO2Ä þëŽJÿ>̓¹â;C¸÷ÈC†ǹ&-QÖôƒÙ<^"âDX$’ö¿»3xï¶Ü›ùÉŒaÀ9¡”iØ7áxC bÒÔÇeá>&ô!B†LßΡÍk ðbb5Nö8¨2Ú«"ð3pŠIŒ3PÛõ=w Ö>Ûôƒ4}õî—+šÆ Jrq“héåm‹Z:îx.Õ›rH{š§rQÇÈí°îßÜ/îÀÆÆÍ\ùøø‰õ¸s~q°!Õ¨OC—“û”&qKØ… .õ¿!ßÁ²çOØþ‚>?ØøÛãúD6¹Ãœ4uÅE',&3-:¦±éë2V²G°C¤šª&e¡Ým À?Ïó ï–ÃRBÆæ|±a²i4éVB‰Ò{ùø{û½ ÷Éì:.ÓÂHP½¤Ÿú<õTmçš Ò?¢C9¶™™ aC¹ÉNb§ƒŒº)ðlìq ®ý¬ávXG÷9ãÛwúLMßn#Ùqºß9I*Âù%¯pë´zsä8Ô~…ÒŒßCÅÉ¥¹q £ft/_3O>>tÆñåå1Áµ¡Fz´©Á­àxžfk®~Jp¢ŒBΜØ¿ëÕþ0Ì,@|NS.‰b!»ÜÏhŸcÙU˜2òäÌéQ…E[ÌãÇ8[nµOƒ)1¡µÆý™—¹rD +7:MM"ÆØ•Î5x»½|§÷,³ëÙ£,Œ2Œ’´¯üIi¬øÑßÝÛÿwx-ÇL øwW,ò’jó„«ãÁr¢!ILïi'N¡Y’, E$[¬ˆ§6¢Í%\o¾=ÍäÞ%ŒÅ/ÛÁNØ}m¶?áuhÞ%"Ÿrï`Þî3[7òjšF£30Ã…„ÄF ÁV$dJdQ%AfÒP8ÞÅh–ýgG|írèÇ,Üš,Šá†.JJÌ›2ŽBÁ±qÂë°6[ºZ„â’kg•Ý™FÛš6™rk™´\® Tlá!b,"ô;k‰éÆZU5×PóRâÚ¦ÌHM”2LÇ Æ¤ê™T îÑÀ …¥å8a¦HLVT–2±šÄÌ,-Lf9T‰—F÷6ß|ÉÌE’)A¶C4 — •,Æ7ƒÇ–FØBË[ŠïF6­œ&ó6¦ùEˆôÎüÇ]xº³¦QUD˜Ý†ÖÖK:xzÍäLlgM0KLÌ>tuÕë¬áÁE‹:wcƒ)!чW:Ztl×–QWN!ììd ð@^Pä/º qŠg±w±ó¾˜.œ¤_ÕÜâÙ~ ĥŧ7s!¨8UÀÞãZ6N‹½Å»jc)ïq$¤TCBíŠÆ-U/(””ËiDUv²(ÆY.ªœY:‰tj®™Ñp£«¢b•@º°Q>oú8ÞÆ\rf-ßy¸&±èS‹JT§|`~(rî"Ðþ.ë®Ç«YM¡§–QÓË'&ì·›»5 E¸÷z’Q8—OÎï=úûý~þýð>î2Gg~ÝëÑC´)™E&f•Ö.‰h1ŠïyŽïeÕê!š]B.Y¥jÌ5¢”âå"üî ±Sƒ‘°ƒYL¶“Ù’2ØË[0fÜ`ùÕ"ÄŒvÒi’èËÖ÷±Š½MB¢j6·#Nè·Ç|SVœ¶a6³Ç>T‘ÆœÄeL¡Û˜—º¡Ò å½åÀѶÐäæBã ®rV¦DVkFm;2ƒ|I $ŠBNo…IÔRÅŽÈPåùœSv¾Î~÷ø'¹ïÿ,Ë,5-3“‘JQÊ®¨lÑ=ó„®s`RjgNíXcÇDzŸ×äþ®/rVÈÔÂn Þ¸U’£\É5·Ãì»ç=yÛŽœúŸ×®ÙÆ[~IÚdžɇ7ZÍdºš4‹Im$ !* [º-ꉚØëEÜ\A(}ŸnÂÞJ1ù#Áim³¦×{ŽWí(wâ#è”}|Œ¡Ïösê†k“âú?Sáææx#‚¿9Ó€jSlÓ¤9Z~†c܈Fá¢bK"ˆíÌüÿf‡ü?ÚñüòÙË[Oûœ›ä/¿œ)#2îú¬¿¡{q`ÏÇ7^{i+@»4CñçÛÃË[´%þ#k@ZhëÇ鯞Õ#[þLÈ6u´ÈØÂÛoeIo¤Í;ð׈b«=ä¤1ÜfŹ0å"å{œ¼ÞXšVÚø"Ó%ðcñʨL#ŸŠðÎF÷åÌM´ë8檌I1¤‹Ã¶é£ˆ[ï5gk¡¥~áÊ2›÷wüÈÀ7¦Þ{É„ÁøõÐê´iK÷Ý3<ö‰XÔA°Ô„×l" }, "extra": { "copy_test_source_files": true, "final": true, "recipe-maintainers": [ "jakirkham", "ocefpaf" ] }, "home": "https://github.com/testing-cabal/mock", "identifiers": [], "keywords": [], "license": "BSD 2-Clause", "license_file": "LICENSE.txt", "root_pkgs": [ "anaconda-client 1.7.2 py36_0", "asn1crypto 0.24.0 py36_0", "beautifulsoup4 4.6.3 py36_0", "ca-certificates 2018.03.07 0", "certifi 2018.8.24 py36_1", "cffi 1.11.5 py36h6174b99_1", "chardet 3.0.4 py36_1", "click 7.0 py36_0", "clyent 1.2.2 py36_1", "conda 4.5.11 py36_0", "conda-build 3.15.1 py36_0", "conda-env 2.6.0 1", "conda-forge-ci-setup 2.0.8 py36_0", "cryptography 2.3.1 py36hdbc3d79_0", "decorator 4.3.0 py36_0", "filelock 3.0.8 py36_0", "glob2 0.6 py36_1", "idna 2.7 py36_0", "ipython_genutils 0.2.0 py36h241746c_0", "jinja2 2.10 py36_0", "jsonschema 2.6.0 py36hb385e00_0", "jupyter_core 4.4.0 py36_0", "libcxx 4.0.1 h579ed51_0", "libcxxabi 4.0.1 hebd6815_0", "libedit 3.1.20170329 hb402a30_2", "libffi 3.2.1 h475c297_4", "markupsafe 1.0 py36h1de35cc_1", "nbformat 4.4.0 py36h827af21_0", "ncurses 6.1 h0a44026_0", "openssl 1.0.2p h1de35cc_0", "pip 10.0.1 py36_0", "pkginfo 1.4.2 py36_1", "psutil 5.4.7 py36h1de35cc_0", "pycosat 0.6.3 py36h1de35cc_0", "pycparser 2.19 py36_0", "pyopenssl 18.0.0 py36_0", "pysocks 1.6.8 py36_0", "python 3.6.6 hc167b69_0", "python-dateutil 2.7.3 py36_0", "python.app 2 py36_9", "pytz 2018.5 py36_0", "pyyaml 3.13 py36h1de35cc_0", "readline 7.0 h1de35cc_5", "requests 2.19.1 py36_0", "ruamel_yaml 0.15.46 py36h1de35cc_0", "setuptools 40.4.3 py36_0", "six 1.11.0 py36_1", "sqlite 3.24.0 ha441bb4_0", "tk 8.6.8 ha441bb4_0", "tqdm 4.26.0 py36h28b3542_0", "traitlets 4.3.2 py36h65bd3ce_0", "urllib3 1.23 py36_0", "wheel 0.32.0 py36_0", "xz 5.2.4 h1de35cc_4", "yaml 0.1.7 hc338f04_2", "zlib 1.2.11 hf3cbc9b_2" ], "summary": "A library for testing in Python", "tags": [] }conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/files000066400000000000000000000040151354123340300246320ustar00rootroot00000000000000lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/PKG-INFO lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/SOURCES.txt lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/dependency_links.txt lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/installed-files.txt lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/not-zip-safe lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/pbr.json lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/requires.txt lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/top_level.txt lib/python3.7/site-packages/mock/__init__.py lib/python3.7/site-packages/mock/__pycache__/__init__.cpython-37.pyc lib/python3.7/site-packages/mock/__pycache__/mock.cpython-37.pyc lib/python3.7/site-packages/mock/mock.py lib/python3.7/site-packages/mock/tests/__init__.py lib/python3.7/site-packages/mock/tests/__main__.py lib/python3.7/site-packages/mock/tests/__pycache__/__init__.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/__main__.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/support.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/testcallable.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/testhelpers.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/testmagicmethods.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/testmock.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/testpatch.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/testsentinel.cpython-37.pyc lib/python3.7/site-packages/mock/tests/__pycache__/testwith.cpython-37.pyc lib/python3.7/site-packages/mock/tests/support.py lib/python3.7/site-packages/mock/tests/testcallable.py lib/python3.7/site-packages/mock/tests/testhelpers.py lib/python3.7/site-packages/mock/tests/testmagicmethods.py lib/python3.7/site-packages/mock/tests/testmock.py lib/python3.7/site-packages/mock/tests/testpatch.py lib/python3.7/site-packages/mock/tests/testsentinel.py lib/python3.7/site-packages/mock/tests/testwith.py conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/git000066400000000000000000000000001354123340300243010ustar00rootroot00000000000000conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/hash_input.json000066400000000000000000000000021354123340300266320ustar00rootroot00000000000000{}conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/index.json000066400000000000000000000004401354123340300256050ustar00rootroot00000000000000{ "arch": "x86_64", "build": "py37_1000", "build_number": 1000, "depends": [ "pbr >=1.3", "python >=3.7,<3.8.0a0", "six" ], "license": "BSD 2-Clause", "name": "mock", "platform": "osx", "subdir": "osx-64", "timestamp": 1538654520670, "version": "2.0.0" }conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/paths.json000066400000000000000000000167541354123340300256340ustar00rootroot00000000000000{ "paths": [ { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/PKG-INFO", "path_type": "hardlink", "sha256": "3ede1c4415ae4e6180065d91049b7df3bcc15e353bc7fe0abe28cfde609817a9", "size_in_bytes": 2852 }, { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/SOURCES.txt", "path_type": "hardlink", "sha256": "1a9de2fba3a1cc68140fe184598f6d46481e7853866bbb3be9175bb309ee8562", "size_in_bytes": 712 }, { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/dependency_links.txt", "path_type": "hardlink", "sha256": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", "size_in_bytes": 1 }, { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/installed-files.txt", "path_type": "hardlink", "sha256": "d6526358ba73ef98006fd4e2bc6bdc4d678f467e7edd78be0ee73394b871eede", "size_in_bytes": 1009 }, { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/not-zip-safe", "path_type": "hardlink", "sha256": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", "size_in_bytes": 1 }, { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/pbr.json", "path_type": "hardlink", "sha256": "714afbdd81ba16a9def62e515616794eb01ee090eff775517f3e881b1c81695c", "size_in_bytes": 46 }, { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/requires.txt", "path_type": "hardlink", "sha256": "12ca807142eefd58e756935a875764d1dae3e7ca5e27a815138adf5bdacddec8", "size_in_bytes": 186 }, { "_path": "lib/python3.7/site-packages/mock-2.0.0-py3.7.egg-info/top_level.txt", "path_type": "hardlink", "sha256": "61b1946176b6d6031da0cac42e0f359e77e47c121de491809bb2bc6cc53c8564", "size_in_bytes": 5 }, { "_path": "lib/python3.7/site-packages/mock/__init__.py", "path_type": "hardlink", "sha256": "179e321b2773287d0eb834f61661a167136f2274e3233d949e81cb7929b4c64b", "size_in_bytes": 207 }, { "_path": "lib/python3.7/site-packages/mock/__pycache__/__init__.cpython-37.pyc", "path_type": "hardlink", "sha256": "367f6c99b0bfb5e687d519408f073fcce466f9006681e5f0ca6afa328add8023", "size_in_bytes": 251 }, { "_path": "lib/python3.7/site-packages/mock/__pycache__/mock.cpython-37.pyc", "path_type": "hardlink", "sha256": "43284024b4ae20357e374d8c1ea7bd910f17baf305c9f9a79f29ec9ab00b787b", "size_in_bytes": 63640 }, { "_path": "lib/python3.7/site-packages/mock/mock.py", "path_type": "hardlink", "sha256": "7a2603661e0ddcb40d8a53c3ed4186c6859d26c7d56f69aec501281db67afb5e", "size_in_bytes": 83651 }, { "_path": "lib/python3.7/site-packages/mock/tests/__init__.py", "path_type": "hardlink", "sha256": "2fed2b162d97b427d72e6339869268392d77a3fade357b7b06c0b2421badf59e", "size_in_bytes": 146 }, { "_path": "lib/python3.7/site-packages/mock/tests/__main__.py", "path_type": "hardlink", "sha256": "bbbc16cb8b42e626b7562a7a9c8febd810c759f844bbedab2d3425b674da47a0", "size_in_bytes": 623 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/__init__.cpython-37.pyc", "path_type": "hardlink", "sha256": "8884b2e34e208c40a593a0800ece7366336f8c633cb1cfb39008148e7f6ec807", "size_in_bytes": 137 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/__main__.cpython-37.pyc", "path_type": "hardlink", "sha256": "075411eb675de614152fceb23507b3b1f4c933adabcc75170c5bb103ee6b31c4", "size_in_bytes": 554 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/support.cpython-37.pyc", "path_type": "hardlink", "sha256": "52bdd3faf443d6929e451aab866d18ba037ab4a9efd04a42b6cc78a4c093f3c7", "size_in_bytes": 1172 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/testcallable.cpython-37.pyc", "path_type": "hardlink", "sha256": "e93e704e84a0b02ae67963a2cc47449843481d6dc63748698161d483653aaebe", "size_in_bytes": 5697 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/testhelpers.cpython-37.pyc", "path_type": "hardlink", "sha256": "cf54ca6845d213bcb3e81a35d3a1ee367bdebd9a76a0b0156b2826db58d089e0", "size_in_bytes": 33282 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/testmagicmethods.cpython-37.pyc", "path_type": "hardlink", "sha256": "91f630fccf6829b13db41d82853fbb00be2fe740a17163b14ccd2bd58194f265", "size_in_bytes": 21342 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/testmock.cpython-37.pyc", "path_type": "hardlink", "sha256": "a9b6876541e2228522a9a1cf2d250c5a5529b3b9dc0f3299333803e659f329a1", "size_in_bytes": 45487 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/testpatch.cpython-37.pyc", "path_type": "hardlink", "sha256": "da94c52823a0df6214e1a311663dd79a7b701b1a1108a00b89901af750c90e4f", "size_in_bytes": 67757 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/testsentinel.cpython-37.pyc", "path_type": "hardlink", "sha256": "41fc081052442e7d09bc6fd22124f0f51bbecbd589ce848023b2d7518fa2b890", "size_in_bytes": 1382 }, { "_path": "lib/python3.7/site-packages/mock/tests/__pycache__/testwith.cpython-37.pyc", "path_type": "hardlink", "sha256": "e88889d491289786df1d5f0c22c75feaf201514ed10c1425f6351b4bcd773719", "size_in_bytes": 9608 }, { "_path": "lib/python3.7/site-packages/mock/tests/support.py", "path_type": "hardlink", "sha256": "a481fe1a4a677a5f4ad56d62fdd68d97bc16e878964e4c16245b980a87f51eca", "size_in_bytes": 552 }, { "_path": "lib/python3.7/site-packages/mock/tests/testcallable.py", "path_type": "hardlink", "sha256": "2bfbed9cab0f11cd7b837ef370bb61bcf4825ec9235de8d3ec248e0a5ba0ca6c", "size_in_bytes": 4431 }, { "_path": "lib/python3.7/site-packages/mock/tests/testhelpers.py", "path_type": "hardlink", "sha256": "b7614ecaa40d33a3890c0085e6b8dc841e5110b7a26db7b5a5fc11692bbf184e", "size_in_bytes": 28697 }, { "_path": "lib/python3.7/site-packages/mock/tests/testmagicmethods.py", "path_type": "hardlink", "sha256": "87bdf2fb53268da4f4b8b343fadf2b0fc4cf5d74c6c2942de8434fb8a93bf260", "size_in_bytes": 16379 }, { "_path": "lib/python3.7/site-packages/mock/tests/testmock.py", "path_type": "hardlink", "sha256": "ff7391d6892e268db7b168dcd28267875cf5c20e8820b29f066b6c5e0fa09d79", "size_in_bytes": 50470 }, { "_path": "lib/python3.7/site-packages/mock/tests/testpatch.py", "path_type": "hardlink", "sha256": "33debf24024d77d5d9ff261dee5801964d84a2c7ce8a26c6ab44cca2e61fe5b4", "size_in_bytes": 56347 }, { "_path": "lib/python3.7/site-packages/mock/tests/testsentinel.py", "path_type": "hardlink", "sha256": "9dc09b80d9af801ad2e5b684f051ec150776047a971ed811456fa7d68e49c343", "size_in_bytes": 976 }, { "_path": "lib/python3.7/site-packages/mock/tests/testwith.py", "path_type": "hardlink", "sha256": "395c69382eaed333835ca9be417f0e3f8a9d0f786d4cbacd95a8709d4671d645", "size_in_bytes": 10587 } ], "paths_version": 1 }conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/recipe/000077500000000000000000000000001354123340300250545ustar00rootroot00000000000000conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/recipe/conda_build_config.yaml000066400000000000000000000014221354123340300315270ustar00rootroot00000000000000CONDA_BUILD_SYSROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk MACOSX_DEPLOYMENT_TARGET: '10.9' build_number_decrement: '0' c_compiler: clang channel_sources: conda-forge,defaults channel_targets: conda-forge main cpu_optimization_target: nocona cran_mirror: https://cran.r-project.org cxx_compiler: clangxx docker_image: condaforge/linux-anvil fortran_compiler: gfortran ignore_build_only_deps: python lua: '5' macos_machine: x86_64-apple-darwin13.4.0 macos_min_version: '10.9' numpy: '1.11' perl: 5.26.0 pin_run_as_build: python: {max_pin: x.x, min_pin: x.x} r-base: {min_pin: x.x.x, max_pin: x.x.x} python: '3.7' r_base: '3.5' target_platform: osx-64 zip_keys: - [channel_sources, channel_targets, build_number_decrement] conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/recipe/meta.yaml000066400000000000000000000032551354123340300266730ustar00rootroot00000000000000# This file created by conda-build 3.15.1 # meta.yaml template originally from: # /Users/travis/build/conda-forge/mock-feedstock/recipe, last modified Thu Oct 4 11:58:58 2018 # ------------------------------------------------ package: name: mock version: 2.0.0 source: md5: 0febfafd14330c9dcaa40de2d82d40ad url: https://pypi.python.org/packages/source/m/mock/mock-2.0.0.tar.gz build: number: '1000' script: /Users/travis/miniconda3/conda-bld/mock_1538654483896/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/bin/python -m pip install . --no-deps --ignore-installed --no-cache-dir -vvv string: py37_1000 requirements: host: - ca-certificates 2018.8.24 ha4d7672_0 - certifi 2018.8.24 py37_1001 - libffi 3.2.1 hfc679d8_5 - ncurses 6.1 hfc679d8_1 - openssl 1.0.2p h470a237_0 - pbr 4.2.0 py_0 - pip 18.0 py37_1001 - python 3.7.0 h4eca856_1 - readline 7.0 haf1bffa_1 - setuptools 40.4.3 py37_0 - sqlite 3.25.2 hb1c47c0_0 - tk 8.6.8 ha92aebf_0 - wheel 0.32.0 py37_1000 - xz 5.2.4 h470a237_1 - zlib 1.2.11 h470a237_3 run: - pbr >=1.3 - python >=3.7,<3.8.0a0 - six test: imports: - mock about: home: https://github.com/testing-cabal/mock license: BSD 2-Clause license_file: LICENSE.txt summary: A library for testing in Python extra: copy_test_source_files: true final: true recipe-maintainers: - jakirkham - ocefpaf conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/recipe/meta.yaml.template000066400000000000000000000012661354123340300305050ustar00rootroot00000000000000{% set version = "2.0.0" %} package: name: mock version: {{ version }} source: url: https://pypi.python.org/packages/source/m/mock/mock-{{ version }}.tar.gz md5: 0febfafd14330c9dcaa40de2d82d40ad build: number: 1000 script: "{{ PYTHON }} -m pip install . --no-deps --ignore-installed --no-cache-dir -vvv" requirements: host: - python - pip - pbr >=1.3 run: - python - pbr >=1.3 - funcsigs # [py<33] - six test: imports: - mock about: home: https://github.com/testing-cabal/mock license: BSD 2-Clause license_file: LICENSE.txt summary: A library for testing in Python extra: recipe-maintainers: - jakirkham - ocefpaf conda-package-handling-1.6.0/tests/data/mock-2.0.0-py37_1000/info/repodata_record.json000066400000000000000000000011351354123340300276350ustar00rootroot00000000000000{ "arch": "x86_64", "build": "py37_1000", "build_number": 1000, "channel": "https://conda.anaconda.org/conda-forge/osx-64", "constrains": [], "depends": [ "pbr >=1.3", "python >=3.7,<3.8.0a0", "six" ], "features": "", "fn": "mock-2.0.0-py37_1000.tar.bz2", "license": "BSD 2-Clause", "md5": "0f9cce120a73803a70abb14bd4d4900b", "name": "mock", "platform": "darwin", "size": 106576, "subdir": "osx-64", "timestamp": 1538654520670, "track_features": "", "url": "https://conda.anaconda.org/conda-forge/osx-64/mock-2.0.0-py37_1000.tar.bz2", "version": "2.0.0" }conda-package-handling-1.6.0/tests/test_api.py000066400000000000000000000213171354123340300213030ustar00rootroot00000000000000from datetime import datetime import os import shutil import sys import tarfile import pytest from conda_package_handling import api import conda_package_handling.tarball this_dir = os.path.dirname(__file__) data_dir = os.path.join(this_dir, "data") test_package_name = "mock-2.0.0-py37_1000" def test_api_extract_tarball_implicit_path(testing_workdir): tarfile = os.path.join(data_dir, test_package_name + '.tar.bz2') local_tarfile = os.path.join(testing_workdir, os.path.basename(tarfile)) shutil.copy2(tarfile, local_tarfile) api.extract(local_tarfile) assert os.path.isfile(os.path.join(testing_workdir, test_package_name, 'info', 'index.json')) def test_api_tarball_details(testing_workdir): tarfile = os.path.join(data_dir, test_package_name + '.tar.bz2') results = api.get_pkg_details(tarfile) assert results["size"] == 106576 assert results["md5"] == "0f9cce120a73803a70abb14bd4d4900b" assert results["sha256"] == "34c659b0fdc53d28ae721fd5717446fb8abebb1016794bd61e25937853f4c29c" def test_api_conda_v2_details(testing_workdir): condafile = os.path.join(data_dir, test_package_name + '.conda') results = api.get_pkg_details(condafile) assert results["size"] == 113421 assert results["sha256"] == "181ec44eb7b06ebb833eae845bcc466ad96474be1f33ee55cab7ac1b0fdbbfa3" assert results["md5"] == "23c226430e35a3bd994db6c36b9ac8ae" def test_api_extract_tarball_explicit_path(testing_workdir): tarfile = os.path.join(data_dir, test_package_name + '.tar.bz2') local_tarfile = os.path.join(testing_workdir, os.path.basename(tarfile)) shutil.copy2(tarfile, local_tarfile) api.extract(local_tarfile, 'manual_path') assert os.path.isfile(os.path.join(testing_workdir, 'manual_path', 'info', 'index.json')) def test_api_extract_tarball_with_libarchive_import_error(testing_workdir, mocker): try: api.libarchive_enabled = False conda_package_handling.tarball.libarchive_enabled = False tarfile = os.path.join(data_dir, test_package_name + '.tar.bz2') local_tarfile = os.path.join(testing_workdir, os.path.basename(tarfile)) shutil.copy2(tarfile, local_tarfile) api.extract(local_tarfile, 'manual_path') assert os.path.isfile(os.path.join(testing_workdir, 'manual_path', 'info', 'index.json')) finally: api.libarchive_enabled = True conda_package_handling.tarball.libarchive_enabled = True def test_api_extract_conda_v2_implicit_path(testing_workdir): condafile = os.path.join(data_dir, test_package_name + '.conda') local_condafile = os.path.join(testing_workdir, os.path.basename(condafile)) shutil.copy2(condafile, local_condafile) api.extract(local_condafile) assert os.path.isfile(os.path.join(testing_workdir, test_package_name, 'info', 'index.json')) def test_api_extract_conda_v2_explicit_path(testing_workdir): tarfile = os.path.join(data_dir, test_package_name + '.conda') local_tarfile = os.path.join(testing_workdir, os.path.basename(tarfile)) shutil.copy2(tarfile, local_tarfile) api.extract(tarfile, 'manual_path') assert os.path.isfile(os.path.join(testing_workdir, 'manual_path', 'info', 'index.json')) def test_api_extract_conda_v2_explicit_path_prefix(testing_workdir): tarfile = os.path.join(data_dir, test_package_name + '.conda') api.extract(tarfile, prefix=os.path.join(testing_workdir, 'folder')) assert os.path.isfile(os.path.join(testing_workdir, 'folder', test_package_name, 'info', 'index.json')) api.extract(tarfile, dest_dir='steve', prefix=os.path.join(testing_workdir, 'folder')) assert os.path.isfile(os.path.join(testing_workdir, 'folder', 'steve', 'info', 'index.json')) def test_api_extract_dest_dir_and_prefix_both_abs_raises(): tarfile = os.path.join(data_dir, test_package_name + '.conda') with pytest.raises(ValueError): api.extract(tarfile, prefix=os.path.dirname(tarfile), dest_dir=os.path.dirname(tarfile)) def test_api_extract_info_conda_v2(testing_workdir): condafile = os.path.join(data_dir, test_package_name + '.conda') local_condafile = os.path.join(testing_workdir, os.path.basename(condafile)) shutil.copy2(condafile, local_condafile) api.extract(local_condafile, 'manual_path', components='info') assert os.path.isfile(os.path.join(testing_workdir, 'manual_path', 'info', 'index.json')) assert not os.path.isdir(os.path.join(testing_workdir, 'manual_path', 'lib')) def test_api_transmute_tarball_to_conda_v2(testing_workdir): tarfile = os.path.join(data_dir, test_package_name + '.tar.bz2') errors = api.transmute(tarfile, '.conda', testing_workdir) assert not errors assert os.path.isfile(os.path.join(testing_workdir, test_package_name + '.conda')) def test_api_transmute_conda_v2_to_tarball(testing_workdir): condafile = os.path.join(data_dir, test_package_name + '.conda') api.transmute(condafile, '.tar.bz2', testing_workdir) assert os.path.isfile(os.path.join(testing_workdir, test_package_name + '.tar.bz2')) def test_warning_when_bundling_no_metadata(testing_workdir): pass @pytest.mark.skipif(sys.platform=="win32", reason="windows and symlinks are not great") def test_create_package_with_uncommon_conditions_captures_all_content(testing_workdir): os.makedirs('src/a_folder') os.makedirs('src/empty_folder') os.makedirs('src/symlink_stuff') with open('src/a_folder/text_file', 'w') as f: f.write('weee') open('src/empty_file', 'w').close() os.link('src/a_folder/text_file', 'src/a_folder/hardlink_to_text_file') os.symlink('../a_folder', 'src/symlink_stuff/symlink_to_a') os.symlink('../empty_file', 'src/symlink_stuff/symlink_to_empty_file') os.symlink('../a_folder/text_file', 'src/symlink_stuff/symlink_to_text_file') with tarfile.open('pinkie.tar.bz2', 'w:bz2') as tf: tf.add('src/empty_folder', 'empty_folder') tf.add('src/empty_file', 'empty_file') tf.add('src/a_folder', 'a_folder') tf.add('src/a_folder/text_file', 'a_folder/text_file') tf.add('src/a_folder/hardlink_to_text_file', 'a_folder/hardlink_to_text_file') tf.add('src/symlink_stuff/symlink_to_a', 'symlink_stuff/symlink_to_a') tf.add('src/symlink_stuff/symlink_to_empty_file', 'symlink_stuff/symlink_to_empty_file') tf.add('src/symlink_stuff/symlink_to_text_file', 'symlink_stuff/symlink_to_text_file') cph_created = api.create('src', None, 'thebrain.tar.bz2') # test against both archives created manually and those created by cph. They should be equal in all ways. for fn in ('pinkie.tar.bz2', 'thebrain.tar.bz2'): api.extract(fn) target_dir = fn[:-8] flist = [ 'empty_folder', 'empty_file', 'a_folder/text_file', 'a_folder/hardlink_to_text_file', 'symlink_stuff/symlink_to_a', 'symlink_stuff/symlink_to_text_file', 'symlink_stuff/symlink_to_empty_file', ] # no symlinks on windows if sys.platform != 'win32': # not directly included but checked symlink flist.append('symlink_stuff/symlink_to_a/text_file') missing_content = [] for f in flist: path_that_should_be_there = os.path.join(testing_workdir, target_dir, f) if not (os.path.exists(path_that_should_be_there) or os.path.lexists(path_that_should_be_there)): missing_content.append(f) if missing_content: print("missing files in output package") print(missing_content) sys.exit(1) # hardlinks should be preserved, but they're currently not with libarchive # hardlinked_file = os.path.join(testing_workdir, target_dir, 'a_folder/text_file') # stat = os.stat(hardlinked_file) # assert stat.st_nlink == 2 hardlinked_file = os.path.join(testing_workdir, target_dir, 'empty_file') stat = os.stat(hardlinked_file) if sys.platform != 'win32': assert stat.st_nlink == 1 @pytest.mark.skipif(datetime.now() <= datetime(2019, 12, 1), reason="Don't understand why this doesn't behave. Punt.") def test_secure_refusal_to_extract_abs_paths(testing_workdir): with tarfile.open('pinkie.tar.bz2', 'w:bz2') as tf: open('thebrain', 'w').close() tf.add(os.path.join(testing_workdir, 'thebrain'), '/naughty/abs_path') with pytest.raises(api.InvalidArchiveError): api.extract('pinkie.tar.bz2') def tests_secure_refusal_to_extract_dotdot(testing_workdir): with tarfile.open('pinkie.tar.bz2', 'w:bz2') as tf: open('thebrain', 'w').close() tf.add(os.path.join(testing_workdir, 'thebrain'), '../naughty/abs_path') with pytest.raises(api.InvalidArchiveError): api.extract('pinkie.tar.bz2') conda-package-handling-1.6.0/tests/test_utils.py000066400000000000000000000031031354123340300216630ustar00rootroot00000000000000from errno import ENOENT, EACCES, EPERM, EROFS import os import sys import pytest from conda_package_handling import utils def test_rm_rf_file(testing_workdir): with open("dummy", 'w') as f: f.write('weeee') utils.rm_rf('dummy') with open("dummy", 'w') as f: f.write('weeee') utils.rm_rf(os.path.join(testing_workdir, 'dummy')) @pytest.mark.parametrize('errno', (ENOENT, EACCES, EPERM, EROFS)) def test_rename_to_trash(testing_workdir, mocker, errno): unlink = mocker.patch("os.unlink") unlink.side_effect = EnvironmentError(errno, "") with open("dummy", 'w') as f: f.write('weeee') utils.unlink_or_rename_to_trash('dummy') assert os.path.isfile('dummy.conda_trash') # force a second error for the inner rename try (after unlink fails) if sys.platform == 'win32': with open("dummy", 'w') as f: f.write('weeee') rename = mocker.patch("os.rename") unlink.side_effect = EnvironmentError(errno, "") utils.unlink_or_rename_to_trash('dummy') assert os.path.isfile('dummy.conda_trash') def test_delete_trash(testing_workdir, mocker): isdir = mocker.patch("conda_package_handling.utils.isdir") isdir.return_value = True lexists = mocker.patch("conda_package_handling.utils.lexists") lexists.return_value = False rmdir = mocker.patch("conda_package_handling.utils.rmdir") os.makedirs('folder') with open("folder/dummy.conda_trash", 'w') as f: f.write('weeee') utils.rm_rf('folder') assert not os.path.isfile('folder/dummy.conda_trash') conda-package-handling-1.6.0/versioneer.py000066400000000000000000002060031354123340300205070ustar00rootroot00000000000000 # Version: 0.18 """The Versioneer - like a rocketeer, but for versions. The Versioneer ============== * like a rocketeer, but for versions! * https://github.com/warner/python-versioneer * Brian Warner * License: Public Domain * Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, and pypy * [![Latest Version] (https://pypip.in/version/versioneer/badge.svg?style=flat) ](https://pypi.python.org/pypi/versioneer/) * [![Build Status] (https://travis-ci.org/warner/python-versioneer.png?branch=master) ](https://travis-ci.org/warner/python-versioneer) This is a tool for managing a recorded version number in distutils-based python projects. The goal is to remove the tedious and error-prone "update the embedded version string" step from your release process. Making a new release should be as easy as recording a new tag in your version-control system, and maybe making new tarballs. ## Quick Install * `pip install versioneer` to somewhere to your $PATH * add a `[versioneer]` section to your setup.cfg (see below) * run `versioneer install` in your source tree, commit the results ## Version Identifiers Source trees come from a variety of places: * a version-control system checkout (mostly used by developers) * a nightly tarball, produced by build automation * a snapshot tarball, produced by a web-based VCS browser, like github's "tarball from tag" feature * a release tarball, produced by "setup.py sdist", distributed through PyPI Within each source tree, the version identifier (either a string or a number, this tool is format-agnostic) can come from a variety of places: * ask the VCS tool itself, e.g. "git describe" (for checkouts), which knows about recent "tags" and an absolute revision-id * the name of the directory into which the tarball was unpacked * an expanded VCS keyword ($Id$, etc) * a `_version.py` created by some earlier build step For released software, the version identifier is closely related to a VCS tag. Some projects use tag names that include more than just the version string (e.g. "myproject-1.2" instead of just "1.2"), in which case the tool needs to strip the tag prefix to extract the version identifier. For unreleased software (between tags), the version identifier should provide enough information to help developers recreate the same tree, while also giving them an idea of roughly how old the tree is (after version 1.2, before version 1.3). Many VCS systems can report a description that captures this, for example `git describe --tags --dirty --always` reports things like "0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the 0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has uncommitted changes. The version identifier is used for multiple purposes: * to allow the module to self-identify its version: `myproject.__version__` * to choose a name and prefix for a 'setup.py sdist' tarball ## Theory of Operation Versioneer works by adding a special `_version.py` file into your source tree, where your `__init__.py` can import it. This `_version.py` knows how to dynamically ask the VCS tool for version information at import time. `_version.py` also contains `$Revision$` markers, and the installation process marks `_version.py` to have this marker rewritten with a tag name during the `git archive` command. As a result, generated tarballs will contain enough information to get the proper version. To allow `setup.py` to compute a version too, a `versioneer.py` is added to the top level of your source tree, next to `setup.py` and the `setup.cfg` that configures it. This overrides several distutils/setuptools commands to compute the version when invoked, and changes `setup.py build` and `setup.py sdist` to replace `_version.py` with a small static file that contains just the generated version data. ## Installation See [INSTALL.md](./INSTALL.md) for detailed installation instructions. ## Version-String Flavors Code which uses Versioneer can learn about its version string at runtime by importing `_version` from your main `__init__.py` file and running the `get_versions()` function. From the "outside" (e.g. in `setup.py`), you can import the top-level `versioneer.py` and run `get_versions()`. Both functions return a dictionary with different flavors of version information: * `['version']`: A condensed version string, rendered using the selected style. This is the most commonly used value for the project's version string. The default "pep440" style yields strings like `0.11`, `0.11+2.g1076c97`, or `0.11+2.g1076c97.dirty`. See the "Styles" section below for alternative styles. * `['full-revisionid']`: detailed revision identifier. For Git, this is the full SHA1 commit id, e.g. "1076c978a8d3cfc70f408fe5974aa6c092c949ac". * `['date']`: Date and time of the latest `HEAD` commit. For Git, it is the commit date in ISO 8601 format. This will be None if the date is not available. * `['dirty']`: a boolean, True if the tree has uncommitted changes. Note that this is only accurate if run in a VCS checkout, otherwise it is likely to be False or None * `['error']`: if the version string could not be computed, this will be set to a string describing the problem, otherwise it will be None. It may be useful to throw an exception in setup.py if this is set, to avoid e.g. creating tarballs with a version string of "unknown". Some variants are more useful than others. Including `full-revisionid` in a bug report should allow developers to reconstruct the exact code being tested (or indicate the presence of local changes that should be shared with the developers). `version` is suitable for display in an "about" box or a CLI `--version` output: it can be easily compared against release notes and lists of bugs fixed in various releases. The installer adds the following text to your `__init__.py` to place a basic version in `YOURPROJECT.__version__`: from ._version import get_versions __version__ = get_versions()['version'] del get_versions ## Styles The setup.cfg `style=` configuration controls how the VCS information is rendered into a version string. The default style, "pep440", produces a PEP440-compliant string, equal to the un-prefixed tag name for actual releases, and containing an additional "local version" section with more detail for in-between builds. For Git, this is TAG[+DISTANCE.gHEX[.dirty]] , using information from `git describe --tags --dirty --always`. For example "0.11+2.g1076c97.dirty" indicates that the tree is like the "1076c97" commit but has uncommitted changes (".dirty"), and that this commit is two revisions ("+2") beyond the "0.11" tag. For released software (exactly equal to a known tag), the identifier will only contain the stripped tag, e.g. "0.11". Other styles are available. See [details.md](details.md) in the Versioneer source tree for descriptions. ## Debugging Versioneer tries to avoid fatal errors: if something goes wrong, it will tend to return a version of "0+unknown". To investigate the problem, run `setup.py version`, which will run the version-lookup code in a verbose mode, and will display the full contents of `get_versions()` (including the `error` string, which may help identify what went wrong). ## Known Limitations Some situations are known to cause problems for Versioneer. This details the most significant ones. More can be found on Github [issues page](https://github.com/warner/python-versioneer/issues). ### Subprojects Versioneer has limited support for source trees in which `setup.py` is not in the root directory (e.g. `setup.py` and `.git/` are *not* siblings). The are two common reasons why `setup.py` might not be in the root: * Source trees which contain multiple subprojects, such as [Buildbot](https://github.com/buildbot/buildbot), which contains both "master" and "slave" subprojects, each with their own `setup.py`, `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI distributions (and upload multiple independently-installable tarballs). * Source trees whose main purpose is to contain a C library, but which also provide bindings to Python (and perhaps other langauges) in subdirectories. Versioneer will look for `.git` in parent directories, and most operations should get the right version string. However `pip` and `setuptools` have bugs and implementation details which frequently cause `pip install .` from a subproject directory to fail to find a correct version string (so it usually defaults to `0+unknown`). `pip install --editable .` should work correctly. `setup.py install` might work too. Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in some later version. [Bug #38](https://github.com/warner/python-versioneer/issues/38) is tracking this issue. The discussion in [PR #61](https://github.com/warner/python-versioneer/pull/61) describes the issue from the Versioneer side in more detail. [pip PR#3176](https://github.com/pypa/pip/pull/3176) and [pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve pip to let Versioneer work correctly. Versioneer-0.16 and earlier only looked for a `.git` directory next to the `setup.cfg`, so subprojects were completely unsupported with those releases. ### Editable installs with setuptools <= 18.5 `setup.py develop` and `pip install --editable .` allow you to install a project into a virtualenv once, then continue editing the source code (and test) without re-installing after every change. "Entry-point scripts" (`setup(entry_points={"console_scripts": ..})`) are a convenient way to specify executable scripts that should be installed along with the python package. These both work as expected when using modern setuptools. When using setuptools-18.5 or earlier, however, certain operations will cause `pkg_resources.DistributionNotFound` errors when running the entrypoint script, which must be resolved by re-installing the package. This happens when the install happens with one version, then the egg_info data is regenerated while a different version is checked out. Many setup.py commands cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into a different virtualenv), so this can be surprising. [Bug #83](https://github.com/warner/python-versioneer/issues/83) describes this one, but upgrading to a newer version of setuptools should probably resolve it. ### Unicode version strings While Versioneer works (and is continually tested) with both Python 2 and Python 3, it is not entirely consistent with bytes-vs-unicode distinctions. Newer releases probably generate unicode version strings on py2. It's not clear that this is wrong, but it may be surprising for applications when then write these strings to a network connection or include them in bytes-oriented APIs like cryptographic checksums. [Bug #71](https://github.com/warner/python-versioneer/issues/71) investigates this question. ## Updating Versioneer To upgrade your project to a new release of Versioneer, do the following: * install the new Versioneer (`pip install -U versioneer` or equivalent) * edit `setup.cfg`, if necessary, to include any new configuration settings indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. * re-run `versioneer install` in your source tree, to replace `SRC/_version.py` * commit any changed files ## Future Directions This tool is designed to make it easily extended to other version-control systems: all VCS-specific components are in separate directories like src/git/ . The top-level `versioneer.py` script is assembled from these components by running make-versioneer.py . In the future, make-versioneer.py will take a VCS name as an argument, and will construct a version of `versioneer.py` that is specific to the given VCS. It might also take the configuration arguments that are currently provided manually during installation by editing setup.py . Alternatively, it might go the other direction and include code from all supported VCS systems, reducing the number of intermediate scripts. ## License To make Versioneer easier to embed, all its code is dedicated to the public domain. The `_version.py` that it creates is also in the public domain. Specifically, both are released under the Creative Commons "Public Domain Dedication" license (CC0-1.0), as described in https://creativecommons.org/publicdomain/zero/1.0/ . """ from __future__ import print_function try: import configparser except ImportError: import ConfigParser as configparser import errno import json import os import re import subprocess import sys class VersioneerConfig: """Container for Versioneer configuration parameters.""" def get_root(): """Get the project root directory. We require that all commands are run from the project root, i.e. the directory that contains setup.py, setup.cfg, and versioneer.py . """ root = os.path.realpath(os.path.abspath(os.getcwd())) setup_py = os.path.join(root, "setup.py") versioneer_py = os.path.join(root, "versioneer.py") if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): # allow 'python path/to/setup.py COMMAND' root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) setup_py = os.path.join(root, "setup.py") versioneer_py = os.path.join(root, "versioneer.py") if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): err = ("Versioneer was unable to run the project root directory. " "Versioneer requires setup.py to be executed from " "its immediate directory (like 'python setup.py COMMAND'), " "or in a way that lets it use sys.argv[0] to find the root " "(like 'python path/to/setup.py COMMAND').") raise VersioneerBadRootError(err) try: # Certain runtime workflows (setup.py install/develop in a setuptools # tree) execute all dependencies in a single python process, so # "versioneer" may be imported multiple times, and python's shared # module-import table will cache the first one. So we can't use # os.path.dirname(__file__), as that will find whichever # versioneer.py was first imported, even in later projects. me = os.path.realpath(os.path.abspath(__file__)) me_dir = os.path.normcase(os.path.splitext(me)[0]) vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) if me_dir != vsr_dir: print("Warning: build in %s is using versioneer.py from %s" % (os.path.dirname(me), versioneer_py)) except NameError: pass return root def get_config_from_root(root): """Read the project setup.cfg file to determine Versioneer config.""" # This might raise EnvironmentError (if setup.cfg is missing), or # configparser.NoSectionError (if it lacks a [versioneer] section), or # configparser.NoOptionError (if it lacks "VCS="). See the docstring at # the top of versioneer.py for instructions on writing your setup.cfg . setup_cfg = os.path.join(root, "setup.cfg") parser = configparser.SafeConfigParser() with open(setup_cfg, "r") as f: parser.readfp(f) VCS = parser.get("versioneer", "VCS") # mandatory def get(parser, name): if parser.has_option("versioneer", name): return parser.get("versioneer", name) return None cfg = VersioneerConfig() cfg.VCS = VCS cfg.style = get(parser, "style") or "" cfg.versionfile_source = get(parser, "versionfile_source") cfg.versionfile_build = get(parser, "versionfile_build") cfg.tag_prefix = get(parser, "tag_prefix") if cfg.tag_prefix in ("''", '""'): cfg.tag_prefix = "" cfg.parentdir_prefix = get(parser, "parentdir_prefix") cfg.verbose = get(parser, "verbose") return cfg class NotThisMethod(Exception): """Exception raised if a method is not valid for the current scenario.""" # these dictionaries contain VCS-specific tools LONG_VERSION_PY = {} HANDLERS = {} def register_vcs_handler(vcs, method): # decorator """Decorator to mark a method as the handler for a particular VCS.""" def decorate(f): """Store f in HANDLERS[vcs][method].""" if vcs not in HANDLERS: HANDLERS[vcs] = {} HANDLERS[vcs][method] = f return f return decorate def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): """Call the given command(s).""" assert isinstance(commands, list) p = None for c in commands: try: dispcmd = str([c] + args) # remember shell=False, so use git.cmd on windows, not just git p = subprocess.Popen([c] + args, cwd=cwd, env=env, stdout=subprocess.PIPE, stderr=(subprocess.PIPE if hide_stderr else None)) break except EnvironmentError: e = sys.exc_info()[1] if e.errno == errno.ENOENT: continue if verbose: print("unable to run %s" % dispcmd) print(e) return None, None else: if verbose: print("unable to find command, tried %s" % (commands,)) return None, None stdout = p.communicate()[0].strip() if sys.version_info[0] >= 3: stdout = stdout.decode() if p.returncode != 0: if verbose: print("unable to run %s (error)" % dispcmd) print("stdout was %s" % stdout) return None, p.returncode return stdout, p.returncode LONG_VERSION_PY['git'] = ''' # This file helps to compute a version number in source trees obtained from # git-archive tarball (such as those provided by githubs download-from-tag # feature). Distribution tarballs (built by setup.py sdist) and build # directories (produced by setup.py build) will contain a much shorter file # that just contains the computed version number. # This file is released into the public domain. Generated by # versioneer-0.18 (https://github.com/warner/python-versioneer) """Git implementation of _version.py.""" import errno import os import re import subprocess import sys def get_keywords(): """Get the keywords needed to look up the version information.""" # these strings will be replaced by git during git-archive. # setup.py/versioneer.py will grep for the variable names, so they must # each be defined on a line of their own. _version.py will just call # get_keywords(). git_refnames = "%(DOLLAR)sFormat:%%d%(DOLLAR)s" git_full = "%(DOLLAR)sFormat:%%H%(DOLLAR)s" git_date = "%(DOLLAR)sFormat:%%ci%(DOLLAR)s" keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} return keywords class VersioneerConfig: """Container for Versioneer configuration parameters.""" def get_config(): """Create, populate and return the VersioneerConfig() object.""" # these strings are filled in when 'setup.py versioneer' creates # _version.py cfg = VersioneerConfig() cfg.VCS = "git" cfg.style = "%(STYLE)s" cfg.tag_prefix = "%(TAG_PREFIX)s" cfg.parentdir_prefix = "%(PARENTDIR_PREFIX)s" cfg.versionfile_source = "%(VERSIONFILE_SOURCE)s" cfg.verbose = False return cfg class NotThisMethod(Exception): """Exception raised if a method is not valid for the current scenario.""" LONG_VERSION_PY = {} HANDLERS = {} def register_vcs_handler(vcs, method): # decorator """Decorator to mark a method as the handler for a particular VCS.""" def decorate(f): """Store f in HANDLERS[vcs][method].""" if vcs not in HANDLERS: HANDLERS[vcs] = {} HANDLERS[vcs][method] = f return f return decorate def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): """Call the given command(s).""" assert isinstance(commands, list) p = None for c in commands: try: dispcmd = str([c] + args) # remember shell=False, so use git.cmd on windows, not just git p = subprocess.Popen([c] + args, cwd=cwd, env=env, stdout=subprocess.PIPE, stderr=(subprocess.PIPE if hide_stderr else None)) break except EnvironmentError: e = sys.exc_info()[1] if e.errno == errno.ENOENT: continue if verbose: print("unable to run %%s" %% dispcmd) print(e) return None, None else: if verbose: print("unable to find command, tried %%s" %% (commands,)) return None, None stdout = p.communicate()[0].strip() if sys.version_info[0] >= 3: stdout = stdout.decode() if p.returncode != 0: if verbose: print("unable to run %%s (error)" %% dispcmd) print("stdout was %%s" %% stdout) return None, p.returncode return stdout, p.returncode def versions_from_parentdir(parentdir_prefix, root, verbose): """Try to determine the version from the parent directory name. Source tarballs conventionally unpack into a directory that includes both the project name and a version string. We will also support searching up two directory levels for an appropriately named parent directory """ rootdirs = [] for i in range(3): dirname = os.path.basename(root) if dirname.startswith(parentdir_prefix): return {"version": dirname[len(parentdir_prefix):], "full-revisionid": None, "dirty": False, "error": None, "date": None} else: rootdirs.append(root) root = os.path.dirname(root) # up a level if verbose: print("Tried directories %%s but none started with prefix %%s" %% (str(rootdirs), parentdir_prefix)) raise NotThisMethod("rootdir doesn't start with parentdir_prefix") @register_vcs_handler("git", "get_keywords") def git_get_keywords(versionfile_abs): """Extract version information from the given file.""" # the code embedded in _version.py can just fetch the value of these # keywords. When used from setup.py, we don't want to import _version.py, # so we do it with a regexp instead. This function is not used from # _version.py. keywords = {} try: f = open(versionfile_abs, "r") for line in f.readlines(): if line.strip().startswith("git_refnames ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["refnames"] = mo.group(1) if line.strip().startswith("git_full ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["full"] = mo.group(1) if line.strip().startswith("git_date ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["date"] = mo.group(1) f.close() except EnvironmentError: pass return keywords @register_vcs_handler("git", "keywords") def git_versions_from_keywords(keywords, tag_prefix, verbose): """Get version information from git keywords.""" if not keywords: raise NotThisMethod("no keywords at all, weird") date = keywords.get("date") if date is not None: # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 # -like" string, which we must then edit to make compliant), because # it's been around since git-1.5.3, and it's too difficult to # discover which version we're using, or to work around using an # older one. date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) refnames = keywords["refnames"].strip() if refnames.startswith("$Format"): if verbose: print("keywords are unexpanded, not using") raise NotThisMethod("unexpanded keywords, not a git-archive tarball") refs = set([r.strip() for r in refnames.strip("()").split(",")]) # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of # just "foo-1.0". If we see a "tag: " prefix, prefer those. TAG = "tag: " tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) if not tags: # Either we're using git < 1.8.3, or there really are no tags. We use # a heuristic: assume all version tags have a digit. The old git %%d # expansion behaves like git log --decorate=short and strips out the # refs/heads/ and refs/tags/ prefixes that would let us distinguish # between branches and tags. By ignoring refnames without digits, we # filter out many common branch names like "release" and # "stabilization", as well as "HEAD" and "master". tags = set([r for r in refs if re.search(r'\d', r)]) if verbose: print("discarding '%%s', no digits" %% ",".join(refs - tags)) if verbose: print("likely tags: %%s" %% ",".join(sorted(tags))) for ref in sorted(tags): # sorting will prefer e.g. "2.0" over "2.0rc1" if ref.startswith(tag_prefix): r = ref[len(tag_prefix):] if verbose: print("picking %%s" %% r) return {"version": r, "full-revisionid": keywords["full"].strip(), "dirty": False, "error": None, "date": date} # no suitable tags, so version is "0+unknown", but full hex is still there if verbose: print("no suitable tags, using unknown + full revision id") return {"version": "0+unknown", "full-revisionid": keywords["full"].strip(), "dirty": False, "error": "no suitable tags", "date": None} @register_vcs_handler("git", "pieces_from_vcs") def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): """Get version from 'git describe' in the root of the source tree. This only gets called if the git-archive 'subst' keywords were *not* expanded, and _version.py hasn't already been rewritten with a short version string, meaning we're inside a checked out source tree. """ GITS = ["git"] if sys.platform == "win32": GITS = ["git.cmd", "git.exe"] out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True) if rc != 0: if verbose: print("Directory %%s not under git control" %% root) raise NotThisMethod("'git rev-parse --git-dir' returned error") # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] # if there isn't one, this yields HEX[-dirty] (no NUM) describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", "--always", "--long", "--match", "%%s*" %% tag_prefix], cwd=root) # --long was added in git-1.5.5 if describe_out is None: raise NotThisMethod("'git describe' failed") describe_out = describe_out.strip() full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) if full_out is None: raise NotThisMethod("'git rev-parse' failed") full_out = full_out.strip() pieces = {} pieces["long"] = full_out pieces["short"] = full_out[:7] # maybe improved later pieces["error"] = None # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] # TAG might have hyphens. git_describe = describe_out # look for -dirty suffix dirty = git_describe.endswith("-dirty") pieces["dirty"] = dirty if dirty: git_describe = git_describe[:git_describe.rindex("-dirty")] # now we have TAG-NUM-gHEX or HEX if "-" in git_describe: # TAG-NUM-gHEX mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) if not mo: # unparseable. Maybe git-describe is misbehaving? pieces["error"] = ("unable to parse git-describe output: '%%s'" %% describe_out) return pieces # tag full_tag = mo.group(1) if not full_tag.startswith(tag_prefix): if verbose: fmt = "tag '%%s' doesn't start with prefix '%%s'" print(fmt %% (full_tag, tag_prefix)) pieces["error"] = ("tag '%%s' doesn't start with prefix '%%s'" %% (full_tag, tag_prefix)) return pieces pieces["closest-tag"] = full_tag[len(tag_prefix):] # distance: number of commits since tag pieces["distance"] = int(mo.group(2)) # commit: short hex revision ID pieces["short"] = mo.group(3) else: # HEX: no tags pieces["closest-tag"] = None count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root) pieces["distance"] = int(count_out) # total number of commits # commit date: see ISO-8601 comment in git_versions_from_keywords() date = run_command(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip() pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) return pieces def plus_or_dot(pieces): """Return a + if we don't already have one, else return a .""" if "+" in pieces.get("closest-tag", ""): return "." return "+" def render_pep440(pieces): """Build up version string, with post-release "local version identifier". Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty Exceptions: 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += plus_or_dot(pieces) rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) if pieces["dirty"]: rendered += ".dirty" else: # exception #1 rendered = "0+untagged.%%d.g%%s" %% (pieces["distance"], pieces["short"]) if pieces["dirty"]: rendered += ".dirty" return rendered def render_pep440_pre(pieces): """TAG[.post.devDISTANCE] -- No -dirty. Exceptions: 1: no tags. 0.post.devDISTANCE """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"]: rendered += ".post.dev%%d" %% pieces["distance"] else: # exception #1 rendered = "0.post.dev%%d" %% pieces["distance"] return rendered def render_pep440_post(pieces): """TAG[.postDISTANCE[.dev0]+gHEX] . The ".dev0" means dirty. Note that .dev0 sorts backwards (a dirty tree will appear "older" than the corresponding clean one), but you shouldn't be releasing software with -dirty anyways. Exceptions: 1: no tags. 0.postDISTANCE[.dev0] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += ".post%%d" %% pieces["distance"] if pieces["dirty"]: rendered += ".dev0" rendered += plus_or_dot(pieces) rendered += "g%%s" %% pieces["short"] else: # exception #1 rendered = "0.post%%d" %% pieces["distance"] if pieces["dirty"]: rendered += ".dev0" rendered += "+g%%s" %% pieces["short"] return rendered def render_pep440_old(pieces): """TAG[.postDISTANCE[.dev0]] . The ".dev0" means dirty. Eexceptions: 1: no tags. 0.postDISTANCE[.dev0] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += ".post%%d" %% pieces["distance"] if pieces["dirty"]: rendered += ".dev0" else: # exception #1 rendered = "0.post%%d" %% pieces["distance"] if pieces["dirty"]: rendered += ".dev0" return rendered def render_git_describe(pieces): """TAG[-DISTANCE-gHEX][-dirty]. Like 'git describe --tags --dirty --always'. Exceptions: 1: no tags. HEX[-dirty] (note: no 'g' prefix) """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"]: rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) else: # exception #1 rendered = pieces["short"] if pieces["dirty"]: rendered += "-dirty" return rendered def render_git_describe_long(pieces): """TAG-DISTANCE-gHEX[-dirty]. Like 'git describe --tags --dirty --always -long'. The distance/hash is unconditional. Exceptions: 1: no tags. HEX[-dirty] (note: no 'g' prefix) """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) else: # exception #1 rendered = pieces["short"] if pieces["dirty"]: rendered += "-dirty" return rendered def render(pieces, style): """Render the given version pieces into the requested style.""" if pieces["error"]: return {"version": "unknown", "full-revisionid": pieces.get("long"), "dirty": None, "error": pieces["error"], "date": None} if not style or style == "default": style = "pep440" # the default if style == "pep440": rendered = render_pep440(pieces) elif style == "pep440-pre": rendered = render_pep440_pre(pieces) elif style == "pep440-post": rendered = render_pep440_post(pieces) elif style == "pep440-old": rendered = render_pep440_old(pieces) elif style == "git-describe": rendered = render_git_describe(pieces) elif style == "git-describe-long": rendered = render_git_describe_long(pieces) else: raise ValueError("unknown style '%%s'" %% style) return {"version": rendered, "full-revisionid": pieces["long"], "dirty": pieces["dirty"], "error": None, "date": pieces.get("date")} def get_versions(): """Get version information or return default if unable to do so.""" # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have # __file__, we can work backwards from there to the root. Some # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which # case we can only use expanded keywords. cfg = get_config() verbose = cfg.verbose try: return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, verbose) except NotThisMethod: pass try: root = os.path.realpath(__file__) # versionfile_source is the relative path from the top of the source # tree (where the .git directory might live) to this file. Invert # this to find the root from __file__. for i in cfg.versionfile_source.split('/'): root = os.path.dirname(root) except NameError: return {"version": "0+unknown", "full-revisionid": None, "dirty": None, "error": "unable to find root of source tree", "date": None} try: pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) return render(pieces, cfg.style) except NotThisMethod: pass try: if cfg.parentdir_prefix: return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) except NotThisMethod: pass return {"version": "0+unknown", "full-revisionid": None, "dirty": None, "error": "unable to compute version", "date": None} ''' @register_vcs_handler("git", "get_keywords") def git_get_keywords(versionfile_abs): """Extract version information from the given file.""" # the code embedded in _version.py can just fetch the value of these # keywords. When used from setup.py, we don't want to import _version.py, # so we do it with a regexp instead. This function is not used from # _version.py. keywords = {} try: f = open(versionfile_abs, "r") for line in f.readlines(): if line.strip().startswith("git_refnames ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["refnames"] = mo.group(1) if line.strip().startswith("git_full ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["full"] = mo.group(1) if line.strip().startswith("git_date ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["date"] = mo.group(1) f.close() except EnvironmentError: pass return keywords @register_vcs_handler("git", "keywords") def git_versions_from_keywords(keywords, tag_prefix, verbose): """Get version information from git keywords.""" if not keywords: raise NotThisMethod("no keywords at all, weird") date = keywords.get("date") if date is not None: # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 # -like" string, which we must then edit to make compliant), because # it's been around since git-1.5.3, and it's too difficult to # discover which version we're using, or to work around using an # older one. date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) refnames = keywords["refnames"].strip() if refnames.startswith("$Format"): if verbose: print("keywords are unexpanded, not using") raise NotThisMethod("unexpanded keywords, not a git-archive tarball") refs = set([r.strip() for r in refnames.strip("()").split(",")]) # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of # just "foo-1.0". If we see a "tag: " prefix, prefer those. TAG = "tag: " tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) if not tags: # Either we're using git < 1.8.3, or there really are no tags. We use # a heuristic: assume all version tags have a digit. The old git %d # expansion behaves like git log --decorate=short and strips out the # refs/heads/ and refs/tags/ prefixes that would let us distinguish # between branches and tags. By ignoring refnames without digits, we # filter out many common branch names like "release" and # "stabilization", as well as "HEAD" and "master". tags = set([r for r in refs if re.search(r'\d', r)]) if verbose: print("discarding '%s', no digits" % ",".join(refs - tags)) if verbose: print("likely tags: %s" % ",".join(sorted(tags))) for ref in sorted(tags): # sorting will prefer e.g. "2.0" over "2.0rc1" if ref.startswith(tag_prefix): r = ref[len(tag_prefix):] if verbose: print("picking %s" % r) return {"version": r, "full-revisionid": keywords["full"].strip(), "dirty": False, "error": None, "date": date} # no suitable tags, so version is "0+unknown", but full hex is still there if verbose: print("no suitable tags, using unknown + full revision id") return {"version": "0+unknown", "full-revisionid": keywords["full"].strip(), "dirty": False, "error": "no suitable tags", "date": None} @register_vcs_handler("git", "pieces_from_vcs") def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): """Get version from 'git describe' in the root of the source tree. This only gets called if the git-archive 'subst' keywords were *not* expanded, and _version.py hasn't already been rewritten with a short version string, meaning we're inside a checked out source tree. """ GITS = ["git"] if sys.platform == "win32": GITS = ["git.cmd", "git.exe"] out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True) if rc != 0: if verbose: print("Directory %s not under git control" % root) raise NotThisMethod("'git rev-parse --git-dir' returned error") # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] # if there isn't one, this yields HEX[-dirty] (no NUM) describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", "--always", "--long", "--match", "%s*" % tag_prefix], cwd=root) # --long was added in git-1.5.5 if describe_out is None: raise NotThisMethod("'git describe' failed") describe_out = describe_out.strip() full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) if full_out is None: raise NotThisMethod("'git rev-parse' failed") full_out = full_out.strip() pieces = {} pieces["long"] = full_out pieces["short"] = full_out[:7] # maybe improved later pieces["error"] = None # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] # TAG might have hyphens. git_describe = describe_out # look for -dirty suffix dirty = git_describe.endswith("-dirty") pieces["dirty"] = dirty if dirty: git_describe = git_describe[:git_describe.rindex("-dirty")] # now we have TAG-NUM-gHEX or HEX if "-" in git_describe: # TAG-NUM-gHEX mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) if not mo: # unparseable. Maybe git-describe is misbehaving? pieces["error"] = ("unable to parse git-describe output: '%s'" % describe_out) return pieces # tag full_tag = mo.group(1) if not full_tag.startswith(tag_prefix): if verbose: fmt = "tag '%s' doesn't start with prefix '%s'" print(fmt % (full_tag, tag_prefix)) pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" % (full_tag, tag_prefix)) return pieces pieces["closest-tag"] = full_tag[len(tag_prefix):] # distance: number of commits since tag pieces["distance"] = int(mo.group(2)) # commit: short hex revision ID pieces["short"] = mo.group(3) else: # HEX: no tags pieces["closest-tag"] = None count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root) pieces["distance"] = int(count_out) # total number of commits # commit date: see ISO-8601 comment in git_versions_from_keywords() date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) return pieces def do_vcs_install(manifest_in, versionfile_source, ipy): """Git-specific installation logic for Versioneer. For Git, this means creating/changing .gitattributes to mark _version.py for export-subst keyword substitution. """ GITS = ["git"] if sys.platform == "win32": GITS = ["git.cmd", "git.exe"] files = [manifest_in, versionfile_source] if ipy: files.append(ipy) try: me = __file__ if me.endswith(".pyc") or me.endswith(".pyo"): me = os.path.splitext(me)[0] + ".py" versioneer_file = os.path.relpath(me) except NameError: versioneer_file = "versioneer.py" files.append(versioneer_file) present = False try: f = open(".gitattributes", "r") for line in f.readlines(): if line.strip().startswith(versionfile_source): if "export-subst" in line.strip().split()[1:]: present = True f.close() except EnvironmentError: pass if not present: f = open(".gitattributes", "a+") f.write("%s export-subst\n" % versionfile_source) f.close() files.append(".gitattributes") run_command(GITS, ["add", "--"] + files) def versions_from_parentdir(parentdir_prefix, root, verbose): """Try to determine the version from the parent directory name. Source tarballs conventionally unpack into a directory that includes both the project name and a version string. We will also support searching up two directory levels for an appropriately named parent directory """ rootdirs = [] for i in range(3): dirname = os.path.basename(root) if dirname.startswith(parentdir_prefix): return {"version": dirname[len(parentdir_prefix):], "full-revisionid": None, "dirty": False, "error": None, "date": None} else: rootdirs.append(root) root = os.path.dirname(root) # up a level if verbose: print("Tried directories %s but none started with prefix %s" % (str(rootdirs), parentdir_prefix)) raise NotThisMethod("rootdir doesn't start with parentdir_prefix") SHORT_VERSION_PY = """ # This file was generated by 'versioneer.py' (0.18) from # revision-control system data, or from the parent directory name of an # unpacked source archive. Distribution tarballs contain a pre-generated copy # of this file. import json version_json = ''' %s ''' # END VERSION_JSON def get_versions(): return json.loads(version_json) """ def versions_from_file(filename): """Try to determine the version from _version.py if present.""" try: with open(filename) as f: contents = f.read() except EnvironmentError: raise NotThisMethod("unable to read _version.py") mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S) if not mo: mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S) if not mo: raise NotThisMethod("no version_json in _version.py") return json.loads(mo.group(1)) def write_to_version_file(filename, versions): """Write the given version number to the given _version.py file.""" os.unlink(filename) contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": ")) with open(filename, "w") as f: f.write(SHORT_VERSION_PY % contents) print("set %s to '%s'" % (filename, versions["version"])) def plus_or_dot(pieces): """Return a + if we don't already have one, else return a .""" if "+" in pieces.get("closest-tag", ""): return "." return "+" def render_pep440(pieces): """Build up version string, with post-release "local version identifier". Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty Exceptions: 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += plus_or_dot(pieces) rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) if pieces["dirty"]: rendered += ".dirty" else: # exception #1 rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) if pieces["dirty"]: rendered += ".dirty" return rendered def render_pep440_pre(pieces): """TAG[.post.devDISTANCE] -- No -dirty. Exceptions: 1: no tags. 0.post.devDISTANCE """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"]: rendered += ".post.dev%d" % pieces["distance"] else: # exception #1 rendered = "0.post.dev%d" % pieces["distance"] return rendered def render_pep440_post(pieces): """TAG[.postDISTANCE[.dev0]+gHEX] . The ".dev0" means dirty. Note that .dev0 sorts backwards (a dirty tree will appear "older" than the corresponding clean one), but you shouldn't be releasing software with -dirty anyways. Exceptions: 1: no tags. 0.postDISTANCE[.dev0] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += ".post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" rendered += plus_or_dot(pieces) rendered += "g%s" % pieces["short"] else: # exception #1 rendered = "0.post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" rendered += "+g%s" % pieces["short"] return rendered def render_pep440_old(pieces): """TAG[.postDISTANCE[.dev0]] . The ".dev0" means dirty. Eexceptions: 1: no tags. 0.postDISTANCE[.dev0] """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"] or pieces["dirty"]: rendered += ".post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" else: # exception #1 rendered = "0.post%d" % pieces["distance"] if pieces["dirty"]: rendered += ".dev0" return rendered def render_git_describe(pieces): """TAG[-DISTANCE-gHEX][-dirty]. Like 'git describe --tags --dirty --always'. Exceptions: 1: no tags. HEX[-dirty] (note: no 'g' prefix) """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] if pieces["distance"]: rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) else: # exception #1 rendered = pieces["short"] if pieces["dirty"]: rendered += "-dirty" return rendered def render_git_describe_long(pieces): """TAG-DISTANCE-gHEX[-dirty]. Like 'git describe --tags --dirty --always -long'. The distance/hash is unconditional. Exceptions: 1: no tags. HEX[-dirty] (note: no 'g' prefix) """ if pieces["closest-tag"]: rendered = pieces["closest-tag"] rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) else: # exception #1 rendered = pieces["short"] if pieces["dirty"]: rendered += "-dirty" return rendered def render(pieces, style): """Render the given version pieces into the requested style.""" if pieces["error"]: return {"version": "unknown", "full-revisionid": pieces.get("long"), "dirty": None, "error": pieces["error"], "date": None} if not style or style == "default": style = "pep440" # the default if style == "pep440": rendered = render_pep440(pieces) elif style == "pep440-pre": rendered = render_pep440_pre(pieces) elif style == "pep440-post": rendered = render_pep440_post(pieces) elif style == "pep440-old": rendered = render_pep440_old(pieces) elif style == "git-describe": rendered = render_git_describe(pieces) elif style == "git-describe-long": rendered = render_git_describe_long(pieces) else: raise ValueError("unknown style '%s'" % style) return {"version": rendered, "full-revisionid": pieces["long"], "dirty": pieces["dirty"], "error": None, "date": pieces.get("date")} class VersioneerBadRootError(Exception): """The project root directory is unknown or missing key files.""" def get_versions(verbose=False): """Get the project version from whatever source is available. Returns dict with two keys: 'version' and 'full'. """ if "versioneer" in sys.modules: # see the discussion in cmdclass.py:get_cmdclass() del sys.modules["versioneer"] root = get_root() cfg = get_config_from_root(root) assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" handlers = HANDLERS.get(cfg.VCS) assert handlers, "unrecognized VCS '%s'" % cfg.VCS verbose = verbose or cfg.verbose assert cfg.versionfile_source is not None, \ "please set versioneer.versionfile_source" assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" versionfile_abs = os.path.join(root, cfg.versionfile_source) # extract version from first of: _version.py, VCS command (e.g. 'git # describe'), parentdir. This is meant to work for developers using a # source checkout, for users of a tarball created by 'setup.py sdist', # and for users of a tarball/zipball created by 'git archive' or github's # download-from-tag feature or the equivalent in other VCSes. get_keywords_f = handlers.get("get_keywords") from_keywords_f = handlers.get("keywords") if get_keywords_f and from_keywords_f: try: keywords = get_keywords_f(versionfile_abs) ver = from_keywords_f(keywords, cfg.tag_prefix, verbose) if verbose: print("got version from expanded keyword %s" % ver) return ver except NotThisMethod: pass try: ver = versions_from_file(versionfile_abs) if verbose: print("got version from file %s %s" % (versionfile_abs, ver)) return ver except NotThisMethod: pass from_vcs_f = handlers.get("pieces_from_vcs") if from_vcs_f: try: pieces = from_vcs_f(cfg.tag_prefix, root, verbose) ver = render(pieces, cfg.style) if verbose: print("got version from VCS %s" % ver) return ver except NotThisMethod: pass try: if cfg.parentdir_prefix: ver = versions_from_parentdir(cfg.parentdir_prefix, root, verbose) if verbose: print("got version from parentdir %s" % ver) return ver except NotThisMethod: pass if verbose: print("unable to compute version") return {"version": "0+unknown", "full-revisionid": None, "dirty": None, "error": "unable to compute version", "date": None} def get_version(): """Get the short version string for this project.""" return get_versions()["version"] def get_cmdclass(): """Get the custom setuptools/distutils subclasses used by Versioneer.""" if "versioneer" in sys.modules: del sys.modules["versioneer"] # this fixes the "python setup.py develop" case (also 'install' and # 'easy_install .'), in which subdependencies of the main project are # built (using setup.py bdist_egg) in the same python process. Assume # a main project A and a dependency B, which use different versions # of Versioneer. A's setup.py imports A's Versioneer, leaving it in # sys.modules by the time B's setup.py is executed, causing B to run # with the wrong versioneer. Setuptools wraps the sub-dep builds in a # sandbox that restores sys.modules to it's pre-build state, so the # parent is protected against the child's "import versioneer". By # removing ourselves from sys.modules here, before the child build # happens, we protect the child from the parent's versioneer too. # Also see https://github.com/warner/python-versioneer/issues/52 cmds = {} # we add "version" to both distutils and setuptools from distutils.core import Command class cmd_version(Command): description = "report generated version string" user_options = [] boolean_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): vers = get_versions(verbose=True) print("Version: %s" % vers["version"]) print(" full-revisionid: %s" % vers.get("full-revisionid")) print(" dirty: %s" % vers.get("dirty")) print(" date: %s" % vers.get("date")) if vers["error"]: print(" error: %s" % vers["error"]) cmds["version"] = cmd_version # we override "build_py" in both distutils and setuptools # # most invocation pathways end up running build_py: # distutils/build -> build_py # distutils/install -> distutils/build ->.. # setuptools/bdist_wheel -> distutils/install ->.. # setuptools/bdist_egg -> distutils/install_lib -> build_py # setuptools/install -> bdist_egg ->.. # setuptools/develop -> ? # pip install: # copies source tree to a tempdir before running egg_info/etc # if .git isn't copied too, 'git describe' will fail # then does setup.py bdist_wheel, or sometimes setup.py install # setup.py egg_info -> ? # we override different "build_py" commands for both environments if "setuptools" in sys.modules: from setuptools.command.build_py import build_py as _build_py else: from distutils.command.build_py import build_py as _build_py class cmd_build_py(_build_py): def run(self): root = get_root() cfg = get_config_from_root(root) versions = get_versions() _build_py.run(self) # now locate _version.py in the new build/ directory and replace # it with an updated value if cfg.versionfile_build: target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) print("UPDATING %s" % target_versionfile) write_to_version_file(target_versionfile, versions) cmds["build_py"] = cmd_build_py if "cx_Freeze" in sys.modules: # cx_freeze enabled? from cx_Freeze.dist import build_exe as _build_exe # nczeczulin reports that py2exe won't like the pep440-style string # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. # setup(console=[{ # "version": versioneer.get_version().split("+", 1)[0], # FILEVERSION # "product_version": versioneer.get_version(), # ... class cmd_build_exe(_build_exe): def run(self): root = get_root() cfg = get_config_from_root(root) versions = get_versions() target_versionfile = cfg.versionfile_source print("UPDATING %s" % target_versionfile) write_to_version_file(target_versionfile, versions) _build_exe.run(self) os.unlink(target_versionfile) with open(cfg.versionfile_source, "w") as f: LONG = LONG_VERSION_PY[cfg.VCS] f.write(LONG % {"DOLLAR": "$", "STYLE": cfg.style, "TAG_PREFIX": cfg.tag_prefix, "PARENTDIR_PREFIX": cfg.parentdir_prefix, "VERSIONFILE_SOURCE": cfg.versionfile_source, }) cmds["build_exe"] = cmd_build_exe del cmds["build_py"] if 'py2exe' in sys.modules: # py2exe enabled? try: from py2exe.distutils_buildexe import py2exe as _py2exe # py3 except ImportError: from py2exe.build_exe import py2exe as _py2exe # py2 class cmd_py2exe(_py2exe): def run(self): root = get_root() cfg = get_config_from_root(root) versions = get_versions() target_versionfile = cfg.versionfile_source print("UPDATING %s" % target_versionfile) write_to_version_file(target_versionfile, versions) _py2exe.run(self) os.unlink(target_versionfile) with open(cfg.versionfile_source, "w") as f: LONG = LONG_VERSION_PY[cfg.VCS] f.write(LONG % {"DOLLAR": "$", "STYLE": cfg.style, "TAG_PREFIX": cfg.tag_prefix, "PARENTDIR_PREFIX": cfg.parentdir_prefix, "VERSIONFILE_SOURCE": cfg.versionfile_source, }) cmds["py2exe"] = cmd_py2exe # we override different "sdist" commands for both environments if "setuptools" in sys.modules: from setuptools.command.sdist import sdist as _sdist else: from distutils.command.sdist import sdist as _sdist class cmd_sdist(_sdist): def run(self): versions = get_versions() self._versioneer_generated_versions = versions # unless we update this, the command will keep using the old # version self.distribution.metadata.version = versions["version"] return _sdist.run(self) def make_release_tree(self, base_dir, files): root = get_root() cfg = get_config_from_root(root) _sdist.make_release_tree(self, base_dir, files) # now locate _version.py in the new base_dir directory # (remembering that it may be a hardlink) and replace it with an # updated value target_versionfile = os.path.join(base_dir, cfg.versionfile_source) print("UPDATING %s" % target_versionfile) write_to_version_file(target_versionfile, self._versioneer_generated_versions) cmds["sdist"] = cmd_sdist return cmds CONFIG_ERROR = """ setup.cfg is missing the necessary Versioneer configuration. You need a section like: [versioneer] VCS = git style = pep440 versionfile_source = src/myproject/_version.py versionfile_build = myproject/_version.py tag_prefix = parentdir_prefix = myproject- You will also need to edit your setup.py to use the results: import versioneer setup(version=versioneer.get_version(), cmdclass=versioneer.get_cmdclass(), ...) Please read the docstring in ./versioneer.py for configuration instructions, edit setup.cfg, and re-run the installer or 'python versioneer.py setup'. """ SAMPLE_CONFIG = """ # See the docstring in versioneer.py for instructions. Note that you must # re-run 'versioneer.py setup' after changing this section, and commit the # resulting files. [versioneer] #VCS = git #style = pep440 #versionfile_source = #versionfile_build = #tag_prefix = #parentdir_prefix = """ INIT_PY_SNIPPET = """ from ._version import get_versions __version__ = get_versions()['version'] del get_versions """ def do_setup(): """Main VCS-independent setup function for installing Versioneer.""" root = get_root() try: cfg = get_config_from_root(root) except (EnvironmentError, configparser.NoSectionError, configparser.NoOptionError) as e: if isinstance(e, (EnvironmentError, configparser.NoSectionError)): print("Adding sample versioneer config to setup.cfg", file=sys.stderr) with open(os.path.join(root, "setup.cfg"), "a") as f: f.write(SAMPLE_CONFIG) print(CONFIG_ERROR, file=sys.stderr) return 1 print(" creating %s" % cfg.versionfile_source) with open(cfg.versionfile_source, "w") as f: LONG = LONG_VERSION_PY[cfg.VCS] f.write(LONG % {"DOLLAR": "$", "STYLE": cfg.style, "TAG_PREFIX": cfg.tag_prefix, "PARENTDIR_PREFIX": cfg.parentdir_prefix, "VERSIONFILE_SOURCE": cfg.versionfile_source, }) ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py") if os.path.exists(ipy): try: with open(ipy, "r") as f: old = f.read() except EnvironmentError: old = "" if INIT_PY_SNIPPET not in old: print(" appending to %s" % ipy) with open(ipy, "a") as f: f.write(INIT_PY_SNIPPET) else: print(" %s unmodified" % ipy) else: print(" %s doesn't exist, ok" % ipy) ipy = None # Make sure both the top-level "versioneer.py" and versionfile_source # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so # they'll be copied into source distributions. Pip won't be able to # install the package without this. manifest_in = os.path.join(root, "MANIFEST.in") simple_includes = set() try: with open(manifest_in, "r") as f: for line in f: if line.startswith("include "): for include in line.split()[1:]: simple_includes.add(include) except EnvironmentError: pass # That doesn't cover everything MANIFEST.in can do # (http://docs.python.org/2/distutils/sourcedist.html#commands), so # it might give some false negatives. Appending redundant 'include' # lines is safe, though. if "versioneer.py" not in simple_includes: print(" appending 'versioneer.py' to MANIFEST.in") with open(manifest_in, "a") as f: f.write("include versioneer.py\n") else: print(" 'versioneer.py' already in MANIFEST.in") if cfg.versionfile_source not in simple_includes: print(" appending versionfile_source ('%s') to MANIFEST.in" % cfg.versionfile_source) with open(manifest_in, "a") as f: f.write("include %s\n" % cfg.versionfile_source) else: print(" versionfile_source already in MANIFEST.in") # Make VCS-specific changes. For git, this means creating/changing # .gitattributes to mark _version.py for export-subst keyword # substitution. do_vcs_install(manifest_in, cfg.versionfile_source, ipy) return 0 def scan_setup_py(): """Validate the contents of setup.py against Versioneer's expectations.""" found = set() setters = False errors = 0 with open("setup.py", "r") as f: for line in f.readlines(): if "import versioneer" in line: found.add("import") if "versioneer.get_cmdclass()" in line: found.add("cmdclass") if "versioneer.get_version()" in line: found.add("get_version") if "versioneer.VCS" in line: setters = True if "versioneer.versionfile_source" in line: setters = True if len(found) != 3: print("") print("Your setup.py appears to be missing some important items") print("(but I might be wrong). Please make sure it has something") print("roughly like the following:") print("") print(" import versioneer") print(" setup( version=versioneer.get_version(),") print(" cmdclass=versioneer.get_cmdclass(), ...)") print("") errors += 1 if setters: print("You should remove lines like 'versioneer.VCS = ' and") print("'versioneer.versionfile_source = ' . This configuration") print("now lives in setup.cfg, and should be removed from setup.py") print("") errors += 1 return errors if __name__ == "__main__": cmd = sys.argv[1] if cmd == "setup": errors = do_setup() errors += scan_setup_py() if errors: sys.exit(1)