pax_global_header00006660000000000000000000000064151354271130014514gustar00rootroot0000000000000052 comment=7096efdee61a8e1bc47492bdd0bc860766df40e9 syrupy-project-syrupy-7096efd/000077500000000000000000000000001513542711300165325ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.all-contributorsrc000066400000000000000000000214031513542711300223630ustar00rootroot00000000000000{ "files": [ "README.md" ], "imageSize": 100, "commit": false, "contributors": [ { "login": "noahnu", "name": "Noah", "avatar_url": "https://avatars0.githubusercontent.com/u/1297096?v=4", "profile": "https://noahnu.com", "contributions": [ "infra", "ideas", "code", "doc", "test" ] }, { "login": "iamogbz", "name": "Emmanuel Ogbizi", "avatar_url": "https://avatars0.githubusercontent.com/u/2528959?v=4", "profile": "http://emmanuel.ogbizi.com", "contributions": [ "code", "design", "infra", "doc", "test" ] }, { "login": "adamlazz", "name": "Adam Lazzarato", "avatar_url": "https://avatars3.githubusercontent.com/u/453811?v=4", "profile": "https://github.com/adamlazz", "contributions": [ "doc" ] }, { "login": "mcataford", "name": "Marc Cataford", "avatar_url": "https://avatars2.githubusercontent.com/u/6210361?v=4", "profile": "https://mcataford.github.io", "contributions": [ "code", "test" ] }, { "login": "msrose", "name": "Michael Rose", "avatar_url": "https://avatars3.githubusercontent.com/u/3495264?v=4", "profile": "http://msrose.github.io", "contributions": [ "code", "test" ] }, { "login": "taion", "name": "Jimmy Jia", "avatar_url": "https://avatars0.githubusercontent.com/u/3112159?v=4", "profile": "http://fashionablenonsense.com/", "contributions": [ "code", "test" ] }, { "login": "sloria", "name": "Steven Loria", "avatar_url": "https://avatars2.githubusercontent.com/u/2379650?v=4", "profile": "https://stevenloria.com", "contributions": [ "infra" ] }, { "login": "arturbalabanov", "name": "Artur Balabanov", "avatar_url": "https://avatars1.githubusercontent.com/u/3062003?v=4", "profile": "https://github.com/arturbalabanov", "contributions": [ "code" ] }, { "login": "huonw", "name": "Huon Wilson", "avatar_url": "https://avatars1.githubusercontent.com/u/1203825?v=4", "profile": "http://huonw.github.io/", "contributions": [ "code", "bug" ] }, { "login": "eaculb", "name": "Elizabeth Culbertson", "avatar_url": "https://avatars.githubusercontent.com/u/31480498?v=4", "profile": "https://github.com/eaculb", "contributions": [ "code", "test" ] }, { "login": "joakimnordling", "name": "Joakim Nordling", "avatar_url": "https://avatars.githubusercontent.com/u/6637576?v=4", "profile": "https://github.com/joakimnordling", "contributions": [ "bug" ] }, { "login": "bendidi", "name": "Ouail", "avatar_url": "https://avatars.githubusercontent.com/u/22003440?v=4", "profile": "https://github.com/bendidi", "contributions": [ "code" ] }, { "login": "fbjorn", "name": "Denis", "avatar_url": "https://avatars.githubusercontent.com/u/9670990?v=4", "profile": "https://github.com/fbjorn", "contributions": [ "code" ] }, { "login": "N0124", "name": "N0124", "avatar_url": "https://avatars.githubusercontent.com/u/29734397?v=4", "profile": "https://github.com/N0124", "contributions": [ "code" ] }, { "login": "dtczest", "name": "dtczest", "avatar_url": "https://avatars.githubusercontent.com/u/97055299?v=4", "profile": "https://github.com/dtczest", "contributions": [ "bug" ] }, { "login": "spagh-eddie", "name": "Eddie Darling", "avatar_url": "https://avatars.githubusercontent.com/u/58013020?v=4", "profile": "https://github.com/spagh-eddie", "contributions": [ "doc" ] }, { "login": "darrenburns", "name": "darrenburns", "avatar_url": "https://avatars.githubusercontent.com/u/5740731?v=4", "profile": "https://github.com/darrenburns", "contributions": [ "doc" ] }, { "login": "mhwaage", "name": "Magnus Heskestad Waage", "avatar_url": "https://avatars.githubusercontent.com/u/57612883?v=4", "profile": "https://github.com/mhwaage", "contributions": [ "bug" ] }, { "login": "herb", "name": "Herbert Ho", "avatar_url": "https://avatars.githubusercontent.com/u/139780?v=4", "profile": "https://github.com/herb", "contributions": [ "bug" ] }, { "login": "tolgaeren", "name": "Tolga Eren", "avatar_url": "https://avatars.githubusercontent.com/u/794719?v=4", "profile": "https://github.com/tolgaeren", "contributions": [ "bug" ] }, { "login": "john-kurkowski", "name": "John Kurkowski", "avatar_url": "https://avatars.githubusercontent.com/u/299487?v=4", "profile": "https://johnkurkowski.com", "contributions": [ "bug" ] }, { "login": "atharva-2001", "name": "Atharva Arya", "avatar_url": "https://avatars.githubusercontent.com/u/55894364?v=4", "profile": "https://www.atharvaarya.tech/", "contributions": [ "code" ] }, { "login": "michaljelonek", "name": "Michał Jelonek", "avatar_url": "https://avatars.githubusercontent.com/u/7791528?v=4", "profile": "https://github.com/michaljelonek", "contributions": [ "code" ] }, { "login": "ManiacDC", "name": "ManiacDC", "avatar_url": "https://avatars.githubusercontent.com/u/1823305?v=4", "profile": "https://github.com/ManiacDC", "contributions": [ "code" ] }, { "login": "Stranger6667", "name": "Dmitry Dygalo", "avatar_url": "https://avatars.githubusercontent.com/u/1236561?v=4", "profile": "https://schemathesis.io/", "contributions": [ "doc" ] }, { "login": "AllanChain", "name": "Allan Chain", "avatar_url": "https://avatars.githubusercontent.com/u/36528777?v=4", "profile": "https://allanchain.github.io/", "contributions": [ "bug" ] }, { "login": "UltimateLobster", "name": "Nir Schulman", "avatar_url": "https://avatars.githubusercontent.com/u/21122724?v=4", "profile": "https://github.com/UltimateLobster", "contributions": [ "code" ] }, { "login": "joostlek", "name": "Joost Lekkerkerker", "avatar_url": "https://avatars.githubusercontent.com/u/7083755?v=4", "profile": "http://joostlek.dev", "contributions": [ "code" ] }, { "login": "epenet", "name": "epenet", "avatar_url": "https://avatars.githubusercontent.com/u/6771947?v=4", "profile": "https://github.com/epenet", "contributions": [ "test" ] }, { "login": "sparrowt", "name": "Tom Sparrow", "avatar_url": "https://avatars.githubusercontent.com/u/793763?v=4", "profile": "http://about.me/tomsparrow", "contributions": [ "bug" ] }, { "login": "samylaumonier", "name": "Samy Laumonier", "avatar_url": "https://avatars.githubusercontent.com/u/2417752?v=4", "profile": "https://github.com/samylaumonier", "contributions": [ "bug" ] }, { "login": "paul-ollis", "name": "Paul Ollis", "avatar_url": "https://avatars.githubusercontent.com/u/6062510?v=4", "profile": "https://github.com/paul-ollis", "contributions": [ "bug" ] }, { "login": "rahuliyer95", "name": "Rahul Iyer", "avatar_url": "https://avatars.githubusercontent.com/u/4255590?v=4", "profile": "https://rahuliyer.me", "contributions": [ "bug" ] }, { "login": "serl", "name": "Sergio Livi", "avatar_url": "https://avatars.githubusercontent.com/u/2742655?v=4", "profile": "http://serl.it/", "contributions": [ "doc" ] }, { "login": "bwrob", "name": "Bartosz Marcin Wróblewski", "avatar_url": "https://avatars.githubusercontent.com/u/43605200?v=4", "profile": "https://bwrob.github.io/", "contributions": [ "code" ] } ], "contributorsPerLine": 7, "projectName": "syrupy", "projectOwner": "syrupy-project", "repoType": "github", "repoHost": "https://github.com", "skipCi": true, "commitConvention": "angular", "commitType": "docs" } syrupy-project-syrupy-7096efd/.devcontainer/000077500000000000000000000000001513542711300212715ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.devcontainer/Dockerfile000066400000000000000000000032711513542711300232660ustar00rootroot00000000000000# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.224.3/containers/python-3/.devcontainer/base.Dockerfile # [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.10, 3.9, 3.8, 3.7, 3.6, 3-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye, 3-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster ARG VARIANT="3.14-bookworm" FROM mcr.microsoft.com/devcontainers/python:${VARIANT} # [Choice] Node.js version: none, lts/*, 16, 14, 12, 10 ARG NODE_VERSION="none" RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi # [Optional] If your pip requirements rarely change, uncomment this section to add them to the image. # COPY requirements.txt /tmp/pip-tmp/ # RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \ # && rm -rf /tmp/pip-tmp # [Optional] Uncomment this section to install additional OS packages. RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install --no-install-recommends libpython3-dev # [Optional] Uncomment this line to install global node packages. # RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 # Install pyenv RUN su vscode -c "umask 0002 && curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 2>&1" RUN su vscode -c "umask 0002 && echo -e '\\n\\n### START of pyenv ###\\nexport PATH=\"\$HOME/.pyenv/bin:\$PATH\"\\neval \"\$(pyenv init --path)\"\\neval \"\$(pyenv virtualenv-init -)\"\\n### END of pyenv ###\\n\\n' >> ~/.bashrc" syrupy-project-syrupy-7096efd/.devcontainer/devcontainer.json000066400000000000000000000037001513542711300246450ustar00rootroot00000000000000// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.224.3/containers/python-3 { "name": "Python 3", "build": { "dockerfile": "Dockerfile", "context": "..", "args": { // Update 'VARIANT' to pick a Python version: 3, 3.10, 3.9, 3.8, 3.7, 3.6 // Append -bullseye or -buster to pin to an OS version. // Use -bullseye variants on local on arm64/Apple Silicon. "VARIANT": "3.12-bookworm", // Options "NODE_VERSION": "none" } }, // Set *default* container specific settings.json values on container create. "settings": { "python.defaultInterpreterPath": "/usr/local/bin/python", "python.linting.enabled": true, "python.linting.pylintEnabled": false, "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", "python.formatting.blackPath": "/usr/local/py-utils/bin/black", "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" }, // Add the IDs of extensions you want installed when the container is created. "extensions": [ "ms-python.python", "ms-python.vscode-pylance" ], // Use 'forwardPorts' to make a list of ports inside the container available locally. // "forwardPorts": [], // Use 'postCreateCommand' to run commands after the container is created. // "postCreateCommand": "pip3 install --user -r requirements.txt", // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", "features": { "git": "os-provided" } } syrupy-project-syrupy-7096efd/.editorconfig000066400000000000000000000002611513542711300212060ustar00rootroot00000000000000[*.py] # isort configuration line_length=79 lines_after_imports=2 multi_line_output=3 force_grid_wrap=true use_parentheses=true include_trailing_comma=true not_skip=__init__.py syrupy-project-syrupy-7096efd/.githooks.ini000066400000000000000000000000411513542711300211330ustar00rootroot00000000000000[pre-commit] command = inv lint syrupy-project-syrupy-7096efd/.github/000077500000000000000000000000001513542711300200725ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.github/ISSUE_TEMPLATE/000077500000000000000000000000001513542711300222555ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000012621513542711300247500ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve --- **Describe the bug** **To reproduce** **Expected behavior** **Screenshots** **Environment (please complete the following information):** - OS: [e.g. Ubuntu 20.04, Mac OSX 10.14] - Syrupy Version: [e.g. 1.0] - Python Version: [e.g. 3.9] **Additional context** syrupy-project-syrupy-7096efd/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000011301513542711300257750ustar00rootroot00000000000000--- name: Feature request about: Suggest an idea for this project --- **Is your feature request related to a problem? Please describe.** **Describe the solution you'd like** **Describe alternatives you've considered** **Additional context** syrupy-project-syrupy-7096efd/.github/ISSUE_TEMPLATE/question.md000066400000000000000000000002351513542711300244460ustar00rootroot00000000000000--- name: Question about: Have a question about Syrupy? --- **What's your question?** syrupy-project-syrupy-7096efd/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000014111513542711300236700ustar00rootroot00000000000000## Description e.g. This PR refactors the X submodule, applying Y's algorithm to improve Z by K percent. ## Related Issues - Closes #0, a short description of the linked issue. ## Checklist - [ ] This PR has sufficient documentation. - [ ] This PR has sufficient test coverage. - [ ] This PR title satisfies semantic [convention](https://www.conventionalcommits.org/en/v1.0.0/#summary). ## Additional Comments No additional comments. syrupy-project-syrupy-7096efd/.github/actions/000077500000000000000000000000001513542711300215325ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.github/actions/setup-env/000077500000000000000000000000001513542711300234605ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.github/actions/setup-env/action.yml000066400000000000000000000023651513542711300254660ustar00rootroot00000000000000name: setup-env description: Setup Environment inputs: python-version: description: Version of python required: true outputs: python-version: value: ${{ steps.detect-python.outputs.version }} description: Detected Python version. runs: using: "composite" steps: - name: Detect Python Version id: detect-python run: | if [[ -z "${{ inputs.python-version }}" ]]; then echo "version=$(head -n1 .python-version | tr -d '\n')" >> $GITHUB_OUTPUT else echo "version=${{ inputs.python-version }}" >> $GITHUB_OUTPUT fi shell: bash - name: Detect Poetry Version id: detect-poetry run: | echo "version=$(head -n1 .poetry-version | tr -d '\n')" >> $GITHUB_OUTPUT shell: bash - name: Set up Python ${{ inputs.python-version }} uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: ${{ inputs.python-version }} allow-prereleases: true - name: Install Poetry uses: snok/install-poetry@76e04a911780d5b312d89783f7b1cd627778900a # v1.4.1 with: version: ${{ steps.detect-poetry.outputs.version }} virtualenvs-create: true virtualenvs-in-project: true syrupy-project-syrupy-7096efd/.github/renovate.json5000066400000000000000000000012201513542711300226700ustar00rootroot00000000000000{ $schema: "https://docs.renovatebot.com/renovate-schema.json", extends: ["helpers:pinGitHubActionDigests"], prConcurrentLimit: 2, semanticCommits: "enabled", semanticCommitType: "chore", semanticCommitScope: "deps", rangeStrategy: "update-lockfile", rebaseWhen: "behind-base-branch", separateMajorMinor: true, separateMinorPatch: false, minimumReleaseAge: "21 days", internalChecksFilter: "strict", dependencyDashboard: true, timezone: "America/Toronto", addLabels: ["dependencies"], automergeType: "pr", automergeStrategy: "squash", constraints: { poetry: "2.2.1", }, } syrupy-project-syrupy-7096efd/.github/workflows/000077500000000000000000000000001513542711300221275ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.github/workflows/benchmark.yaml000066400000000000000000000017661513542711300247570ustar00rootroot00000000000000name: Syrupy Benchmarks on: push: branches: - main permissions: # deployments permission to deploy GitHub pages website deployments: write # contents permission to update benchmark contents in gh-pages branch contents: write env: VENV: .venv jobs: benchmark: name: Benchmark runs-on: ubuntu-latest if: (!contains(github.event.head_commit.message, '[skip ci]')) steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setup Environment uses: ./.github/actions/setup-env - name: Install project dependencies run: . script/bootstrap - name: Benchmark run: poetry run invoke benchmark - name: Publish Benchmark Results uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7 with: tool: 'pytest' output-file-path: benchmarks.json github-token: ${{ secrets.GITHUB_TOKEN }} auto-push: true syrupy-project-syrupy-7096efd/.github/workflows/ci.yaml000066400000000000000000000077151513542711300234200ustar00rootroot00000000000000name: CI on: push: branches: - main - next pull_request: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: VENV: .venv permissions: contents: read checks: write jobs: analysis: name: Code Analysis runs-on: ubuntu-latest if: (!contains(github.event.head_commit.message, '[skip ci]')) steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setup Environment uses: ./.github/actions/setup-env - name: Install project dependencies run: . script/bootstrap - name: Lint run: | poetry run invoke lint tests: name: Tests runs-on: ${{ matrix.os }} if: (!contains(github.event.head_commit.message, '[skip ci]')) strategy: matrix: os: [ubuntu-latest, windows-latest] python-version: ['3.10', '3.11', '3.12', '3.13', '3.14-dev'] fail-fast: ${{ !contains(github.event.pull_request.labels.*.name, 'ci/run-all-tests') }} steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setup Environment uses: ./.github/actions/setup-env with: python-version: ${{ matrix.python-version }} - name: Install project dependencies run: . script/bootstrap shell: bash - name: Run Tests (with coverage) id: tests-with-coverage if: matrix.python-version == '3.14-dev' && matrix.os == 'ubuntu-latest' shell: bash run: poetry run invoke test --coverage - name: Run Tests if: steps.tests-with-coverage.outcome == 'skipped' shell: bash run: poetry run invoke test - name: Upload Coverage if: steps.tests-with-coverage.conclusion == 'success' uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} # # TODO: How to do this with poetry? # version_checks: # name: Dependency Version Constraint Checks # runs-on: ubuntu-latest # if: "!contains(github.event.head_commit.message, '[skip ci]')" # env: # SKIP_DEPS: 1 # steps: # - uses: actions/checkout@v3.1.0 # - name: Setup Environment # uses: ./.github/actions/setup-env # with: # python-version: 3.7 # it's min, so we'll use an older version of python # - name: Install project dependencies # run: | # . script/bootstrap # poetry install --with=test # - name: Test # env: # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # run: | # . $VENV/bin/activate # poetry run invoke test --coverage benchmark: name: Benchmark runs-on: ubuntu-latest if: github.event_name == 'pull_request' && !contains(github.event.head_commit.message, '[skip ci]') needs: [tests] permissions: contents: write pull-requests: write steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setup Environment uses: ./.github/actions/setup-env - name: Install project dependencies run: . script/bootstrap - name: Benchmark run: poetry run invoke benchmark - name: Publish Benchmark Results uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7 with: tool: 'pytest' output-file-path: benchmarks.json github-token: ${{ github.token }} auto-push: false alert-threshold: '200%' comment-on-alert: true fail-on-alert: false comment-always: true required_checks: name: Required Checks needs: - analysis - tests - benchmark runs-on: ubuntu-latest if: always() steps: - name: Fail on error if: contains(needs.*.result, 'failure') || cancelled() run: exit 1 syrupy-project-syrupy-7096efd/.github/workflows/release.yaml000066400000000000000000000023341513542711300244350ustar00rootroot00000000000000name: Release on: workflow_dispatch: inputs: dry-run: required: false type: boolean default: false description: "Whether to run the release in dry-run mode" env: VENV: .venv jobs: release: name: Release permissions: contents: write pull-requests: write runs-on: ubuntu-latest environment: release steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 persist-credentials: false - name: Setup Environment uses: ./.github/actions/setup-env - name: Install project dependencies run: . script/bootstrap - name: Release uses: cycjimmy/semantic-release-action@b12c8f6015dc215fe37bc154d4ad456dd3833c90 # v6.0.0 with: branches: | [ 'main' ] dry_run: ${{ inputs.dry-run }} extra_plugins: | @semantic-release/changelog @semantic-release/exec @semantic-release/git env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_PUBLISH_TOKEN }} GITHUB_TOKEN: ${{ secrets.RELEASE_GITHUB_PAT }} syrupy-project-syrupy-7096efd/.gitignore000066400000000000000000000011771513542711300205300ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python .tox .poetry build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST version.txt pip-wheel-metadata # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports .pytest_cache/ .mypy_cache/ .coverage coverage htmlcov/ benchmarks/test_cases/__snapshots__ # Environments .env .venv env/ venv/ *venv/ ENV/ env.bak/ venv.bak/ .idea .DS_Store # IDE .vscode !.vscode/extensions.json !.vscode/settings.json syrupy-project-syrupy-7096efd/.poetry-version000066400000000000000000000000061513542711300215340ustar00rootroot000000000000002.2.1 syrupy-project-syrupy-7096efd/.prettierrc.toml000066400000000000000000000000151513542711300216640ustar00rootroot00000000000000tabWidth = 2 syrupy-project-syrupy-7096efd/.python-version000066400000000000000000000000071513542711300215340ustar00rootroot000000000000003.14.1 syrupy-project-syrupy-7096efd/.releaserc.js000066400000000000000000000021171513542711300211140ustar00rootroot00000000000000module.exports = { plugins: [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", [ "@semantic-release/changelog", { changelogTitle: "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).\n\nFrom v1.0.0 onwards, this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Pre-v1, breaking changes are indicated via a minor release, while all other changes fall under patches. At any time, you can see what's in progress for a version by filtering GitHub issues by milestone.", }, ], ["@semantic-release/exec", { prepareCmd: "poetry version -n ${nextRelease.version}", publishCmd: "poetry run invoke release --no-dry-run --version ${nextRelease.version}" }], ["@semantic-release/git", { assets: ["CHANGELOG.md", "pyproject.toml"] }], "@semantic-release/github", ], }; syrupy-project-syrupy-7096efd/.vscode/000077500000000000000000000000001513542711300200735ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/.vscode/extensions.json000066400000000000000000000001751513542711300231700ustar00rootroot00000000000000{ "recommendations": [ "littlefoxteam.vscode-python-test-adapter", "ms-python.mypy-type-checker" ] } syrupy-project-syrupy-7096efd/.vscode/settings.json000066400000000000000000000000651513542711300226270ustar00rootroot00000000000000{ "pythonTestExplorer.testFramework": "pytest" } syrupy-project-syrupy-7096efd/CHANGELOG.md000066400000000000000000001226471513542711300203570ustar00rootroot00000000000000# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). From v1.0.0 onwards, this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Pre-v1, breaking changes are indicated via a minor release, while all other changes fall under patches. At any time, you can see what's in progress for a version by filtering GitHub issues by milestone. # [5.1.0](https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0) (2026-01-25) ### Features * add serializer plugin system; plugins for data models ([#1062](https://github.com/syrupy-project/syrupy/issues/1062)) ([df9bc8f](https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a)) # [5.0.0](https://github.com/syrupy-project/syrupy/compare/v4.9.1...v5.0.0) (2025-09-28) * Switch to MIT license ([#945](https://github.com/syrupy-project/syrupy/issues/945)) ([d74d340](https://github.com/syrupy-project/syrupy/commit/d74d340f8884fdb04831fcf77f29d66e098aaa66)) ### Bug Fixes * Block terminal summary for xdist workers. ([#978](https://github.com/syrupy-project/syrupy/issues/978)) ([33a848d](https://github.com/syrupy-project/syrupy/commit/33a848df7c4a33577e4057eae5792f6592ad3172)) * ensure syrupy's pytest_assertrepr_compare hook is called first. ([#984](https://github.com/syrupy-project/syrupy/issues/984)) ([eb0024d](https://github.com/syrupy-project/syrupy/commit/eb0024d339248b7e1f76fdb65ed30ba3e19c0857)) ### Code Refactoring * remove incorrect private underscore prefix from public methods ([8cfc905](https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f)) ### Features * add --snapshot-dirname option, close [#810](https://github.com/syrupy-project/syrupy/issues/810) ([27135c7](https://github.com/syrupy-project/syrupy/commit/27135c7c861441962c2cedde841f3e4fed2949fd)) * drop support for py3.8, raise min. pytest to v8 ([#904](https://github.com/syrupy-project/syrupy/issues/904)) ([a879ff1](https://github.com/syrupy-project/syrupy/commit/a879ff15ad82e59a2f387db0822be072a5684f2f)) * update min. python version to 3.10 ([#1024](https://github.com/syrupy-project/syrupy/issues/1024)) ([16b4113](https://github.com/syrupy-project/syrupy/commit/16b4113cd56da96e84a90ebda0919e9b8dd35954)) ### BREAKING CHANGES * The following methods have been renamed: SnapshotCollectionStorage - _read_snapshot_collection -> read_snapshot_collection - _read_snapshot_data_from_location -> read_snapshot_data_from_location - _write_snapshot_collection -> write_snapshot_collection - _get_file_basename -> get_file_basename - _file_extension -> file_extension AmberDataSerializer - _snapshot_sort_key -> snapshot_sort_key Renamed constants to improve clarity: constants - SNAPSHOT_EMPTY_FOSSIL_KEY -> SNAPSHOT_EMPTY_COLLECTION_KEY - SNAPSHOT_UNKNOWN_FOSSIL_KEY -> SNAPSHOT_UNKNOWN_COLLECTION_KEY * Min. python version is now 3.10. * The Syrupy project is switching from Apache 2.0 to a more permissive MIT license. By using Syrupy >=5, you agree to abide by this new license. You can continue to use Syrupy v1 through v4 under Apache 2.0. * Drops support for Python 3.8 which is end of life as of October 2024. Raises the minimum version of pytest to v8. ## [4.9.1](https://github.com/syrupy-project/syrupy/compare/v4.9.0...v4.9.1) (2025-03-24) ### Bug Fixes * **serializer:** preserve trailing newlines in ambr serialization ([#950](https://github.com/syrupy-project/syrupy/issues/950)) ([5897490](https://github.com/syrupy-project/syrupy/commit/5897490e9821156327fe56bc5f7695146e2363a5)) * **serializer:** preserve trailing newlines in ambr serialization ([#950](https://github.com/syrupy-project/syrupy/issues/950)) ([5037477](https://github.com/syrupy-project/syrupy/commit/5037477ceece0f2cf861aabd356f4dd07a9eeb71)) # [4.9.0](https://github.com/syrupy-project/syrupy/compare/v4.8.3...v4.9.0) (2025-03-08) ### Bug Fixes * **serializer:** raise TypeError when serializing non-byte like object in binary mode ([#951](https://github.com/syrupy-project/syrupy/issues/951)) ([2bd0f54](https://github.com/syrupy-project/syrupy/commit/2bd0f54ea0923f4c549209abc40d2eec9b973d65)) ### Features * add --snapshot-ignore-file-extensions argument to support DVC ([#943](https://github.com/syrupy-project/syrupy/issues/943)) ([056cc6e](https://github.com/syrupy-project/syrupy/commit/056cc6e1057f6d1c49b4b609aa09be9f507dd55c)) * add compose_matchers utility for composing 1 or more matchers ([#952](https://github.com/syrupy-project/syrupy/issues/952)) ([157dbec](https://github.com/syrupy-project/syrupy/commit/157dbecc87fd03ea938c4a7dc194418da43c90a5)) * add SingleFileAmberSnapshotExtension as a single-file variant of the default amber extension ([#959](https://github.com/syrupy-project/syrupy/issues/959)) ([a753b7a](https://github.com/syrupy-project/syrupy/commit/a753b7a0aa6763a7489da78291bf27b7b5081b74)) * include details about created/updated snapshots in detailed report ([#942](https://github.com/syrupy-project/syrupy/issues/942)) ([25d37ef](https://github.com/syrupy-project/syrupy/commit/25d37ef978cbbd5b034fe394d283e923295b1750)) ## [4.8.3](https://github.com/syrupy-project/syrupy/compare/v4.8.2...v4.8.3) (2025-03-08) ### Bug Fixes * snapshots of deselected parametrized tests wrongly marked as unused ([#965](https://github.com/syrupy-project/syrupy/issues/965)) ([52f3bb2](https://github.com/syrupy-project/syrupy/commit/52f3bb2089f6289ef6502486301d56d7b13fdf28)) ## [4.8.2](https://github.com/syrupy-project/syrupy/compare/v4.8.1...v4.8.2) (2025-02-20) ### Bug Fixes * avoid unnecessary env updates to reduce chances of segfault ([#956](https://github.com/syrupy-project/syrupy/issues/956)) ([7fdffd9](https://github.com/syrupy-project/syrupy/commit/7fdffd906dc851d8ff7aa0327b6a8bdb5d0cbed5)) ## [4.8.1](https://github.com/syrupy-project/syrupy/compare/v4.8.0...v4.8.1) (2025-01-13) ### Bug Fixes * check current session's pending-write queue when recalling snapshots (e.g. diffing) ([#927](https://github.com/syrupy-project/syrupy/issues/927)) ([0f6bb55](https://github.com/syrupy-project/syrupy/commit/0f6bb55000593e5d5198feb2bd9ccbb1376a37fb)) # [4.8.0](https://github.com/syrupy-project/syrupy/compare/v4.7.2...v4.8.0) (2024-11-23) ### Features * add option to disable diffing ([#924](https://github.com/syrupy-project/syrupy/issues/924)) ([d283e87](https://github.com/syrupy-project/syrupy/commit/d283e87c2b8d1d5623ea3258653d579757bfa78c)) ## [4.7.2](https://github.com/syrupy-project/syrupy/compare/v4.7.1...v4.7.2) (2024-10-06) ### Bug Fixes * allow snapshot dir to be different ([#892](https://github.com/syrupy-project/syrupy/issues/892)) ([548ec06](https://github.com/syrupy-project/syrupy/commit/548ec0660c2f8f3c80f2b7f0188e8bb2b0c81fc8)) ## [4.7.1](https://github.com/syrupy-project/syrupy/compare/v4.7.0...v4.7.1) (2024-08-23) ### Bug Fixes * pytest-rerunfailures compatibility ([#881](https://github.com/syrupy-project/syrupy/issues/881)) ([16911ad](https://github.com/syrupy-project/syrupy/commit/16911ad0541c642118f3f1ac2d1347362d80c854)) # [4.7.0](https://github.com/syrupy-project/syrupy/compare/v4.6.4...v4.7.0) (2024-08-23) ### Features * Added a new CLI flag: --snapshot-patch-pycharm-diff ([a4dfcf5](https://github.com/syrupy-project/syrupy/commit/a4dfcf51df4df6d5da1afd863126ddca3f2c9b43)) ## [4.6.4](https://github.com/syrupy-project/syrupy/compare/v4.6.3...v4.6.4) (2024-08-21) ### Bug Fixes * relax python version constraint, remove upperbound ([#878](https://github.com/syrupy-project/syrupy/issues/878)) ([05a35a1](https://github.com/syrupy-project/syrupy/commit/05a35a15d6d13484bd6445231b963c33e2d7d76c)) ## [4.6.3](https://github.com/syrupy-project/syrupy/compare/v4.6.2...v4.6.3) (2024-08-21) ### Bug Fixes * ignore unused snapshots for skipped test ([#862](https://github.com/syrupy-project/syrupy/issues/862)) ([3f6e301](https://github.com/syrupy-project/syrupy/commit/3f6e30182b3aed34687782385c16001c7cf0b5f3)) ## [4.6.2](https://github.com/syrupy-project/syrupy/compare/v4.6.1...v4.6.2) (2024-08-21) ### Bug Fixes * update classifiers, metadata ([#870](https://github.com/syrupy-project/syrupy/issues/870)) ([87592e5](https://github.com/syrupy-project/syrupy/commit/87592e581f34f213cfa4d4125bcc15959dad8113)) ## [4.6.2](https://github.com/syrupy-project/syrupy/compare/v4.6.1...v4.6.2) (2024-08-21) ### Bug Fixes * update classifiers, metadata ([#870](https://github.com/syrupy-project/syrupy/issues/870)) ([87592e5](https://github.com/syrupy-project/syrupy/commit/87592e581f34f213cfa4d4125bcc15959dad8113)) ## [4.6.1](https://github.com/syrupy-project/syrupy/compare/v4.6.0...v4.6.1) (2024-02-07) ### Bug Fixes * support pytest 8 ([#855](https://github.com/syrupy-project/syrupy/issues/855)) ([3175615](https://github.com/syrupy-project/syrupy/commit/3175615a31bde0cdac6ec4a18d4a9285001d5d21)) # [4.6.0](https://github.com/syrupy-project/syrupy/compare/v4.5.0...v4.6.0) (2023-10-24) ### Features * **serializer:** add support for FunctionType serialization ([#823](https://github.com/syrupy-project/syrupy/issues/823)) ([f3a454a](https://github.com/syrupy-project/syrupy/commit/f3a454a378681ef647fc215a05b8fe9dee3a21c4)) # [4.5.0](https://github.com/syrupy-project/syrupy/compare/v4.4.0...v4.5.0) (2023-09-01) ### Features * support setting defaults ([#802](https://github.com/syrupy-project/syrupy/issues/802)) ([c877559](https://github.com/syrupy-project/syrupy/commit/c87755984341ee4772f4f00b9309de6daec30ec0)) # [4.4.0](https://github.com/syrupy-project/syrupy/compare/v4.3.0...v4.4.0) (2023-08-29) ### Features * **filter:** add paths_include filter ([#798](https://github.com/syrupy-project/syrupy/issues/798)) ([1676fa5](https://github.com/syrupy-project/syrupy/commit/1676fa554d74edeb1f448edbe661e053bf8ad350)) # [4.3.0](https://github.com/syrupy-project/syrupy/compare/v4.2.2...v4.3.0) (2023-08-28) ### Features * add include option to snapshots, similar to exclude ([#797](https://github.com/syrupy-project/syrupy/issues/797)) ([d3f891e](https://github.com/syrupy-project/syrupy/commit/d3f891ea4e561cd1b182e9b2c5d0414821187cd7)) ## [4.2.2](https://github.com/syrupy-project/syrupy/compare/v4.2.1...v4.2.2) (2023-08-28) ### Bug Fixes * remove colored dependency ([#796](https://github.com/syrupy-project/syrupy/issues/796)) ([96bffcc](https://github.com/syrupy-project/syrupy/commit/96bffccd229bb1b13e6721baffd80d298000e34b)) ## [4.2.1](https://github.com/syrupy-project/syrupy/compare/v4.2.0...v4.2.1) (2023-08-21) ### Bug Fixes * support python 3.12 ([#794](https://github.com/syrupy-project/syrupy/issues/794)) ([e2e314f](https://github.com/syrupy-project/syrupy/commit/e2e314fca6f90d9601c3b7d30370d2ca21e09cfe)) # [4.2.0](https://github.com/syrupy-project/syrupy/compare/v4.1.1...v4.2.0) (2023-08-21) ### Features * **serializer:** add snapshot regex value matcher and bypass custom repr helper ([#791](https://github.com/syrupy-project/syrupy/issues/791)) ([3ac2ce8](https://github.com/syrupy-project/syrupy/commit/3ac2ce84c5dfe180606ef32d1dd067af952d376e)) ## [4.1.1](https://github.com/syrupy-project/syrupy/compare/v4.1.0...v4.1.1) (2023-08-17) ### Bug Fixes * preserve Falsy values in assertion diff function ([#789](https://github.com/syrupy-project/syrupy/issues/789)) ([118ef92](https://github.com/syrupy-project/syrupy/commit/118ef9260cb67369050c3bf7672e9aed0046f7f4)) # [4.1.0](https://github.com/syrupy-project/syrupy/compare/v4.0.8...v4.1.0) (2023-08-16) ### Features * **amber:** expose serialize_custom_iterable method of AmberDataSerializer ([#788](https://github.com/syrupy-project/syrupy/issues/788)) ([d210cf1](https://github.com/syrupy-project/syrupy/commit/d210cf192962afc3196c9d6cc81e7c799a6caf26)) ## [4.0.8](https://github.com/syrupy-project/syrupy/compare/v4.0.7...v4.0.8) (2023-07-20) ### Bug Fixes * diffing excessively large snapshot lines ([#778](https://github.com/syrupy-project/syrupy/issues/778)) ([64b4265](https://github.com/syrupy-project/syrupy/commit/64b42653d1c3af5b56347ccd9afd24e87b29aa18)) ## [4.0.7](https://github.com/syrupy-project/syrupy/compare/v4.0.6...v4.0.7) (2023-07-20) ### Bug Fixes * large snapshot diff recursion error ([#776](https://github.com/syrupy-project/syrupy/issues/776)) ([24260b1](https://github.com/syrupy-project/syrupy/commit/24260b17607a11f7afa691c0ecd4da3e09de9bf0)) ## [4.0.6](https://github.com/syrupy-project/syrupy/compare/v4.0.5...v4.0.6) (2023-07-11) ### Bug Fixes * improve reporting around xfailed snapshots, close [#736](https://github.com/syrupy-project/syrupy/issues/736) ([#769](https://github.com/syrupy-project/syrupy/issues/769)) ([596b29b](https://github.com/syrupy-project/syrupy/commit/596b29b7eae26292fb671b3f339d255fd5ac8761)) ## [4.0.5](https://github.com/syrupy-project/syrupy/compare/v4.0.4...v4.0.5) (2023-07-04) ### Bug Fixes * hide empty snapshot report ([#768](https://github.com/syrupy-project/syrupy/issues/768)) ([8f581d5](https://github.com/syrupy-project/syrupy/commit/8f581d577068f19a9e0fff65f4476f4601c137df)) ## [4.0.4](https://github.com/syrupy-project/syrupy/compare/v4.0.3...v4.0.4) (2023-06-19) ### Bug Fixes * incorrect marking of TestClass.test_method as unused, close [#717](https://github.com/syrupy-project/syrupy/issues/717) ([#761](https://github.com/syrupy-project/syrupy/issues/761)) ([0badfdb](https://github.com/syrupy-project/syrupy/commit/0badfdbb06157a7e2365edd551aaa1914681f3de)) ## [4.0.3](https://github.com/syrupy-project/syrupy/compare/v4.0.2...v4.0.3) (2023-06-19) ### Bug Fixes * support colored >=1.5.0 dependency, close [#758](https://github.com/syrupy-project/syrupy/issues/758) ([#760](https://github.com/syrupy-project/syrupy/issues/760)) ([783fc5c](https://github.com/syrupy-project/syrupy/commit/783fc5cf71901c8bb54769358787dabfa2b51e4a)) ## [4.0.2](https://github.com/syrupy-project/syrupy/compare/v4.0.1...v4.0.2) (2023-04-25) ### Bug Fixes * defer snapshot default extension import ([#734](https://github.com/syrupy-project/syrupy/issues/734)) ([dfd5910](https://github.com/syrupy-project/syrupy/commit/dfd5910cd5ac9a93011d639303cdc060ef4c779a)), closes [#719](https://github.com/syrupy-project/syrupy/issues/719) ## [4.0.1](https://github.com/syrupy-project/syrupy/compare/v4.0.0...v4.0.1) (2023-02-21) ### Bug Fixes * **serializer:** handling of multi-part file extensions in SingleFileExtension ([#710](https://github.com/syrupy-project/syrupy/issues/710)) ([efe687e](https://github.com/syrupy-project/syrupy/commit/efe687e263647b1efa2673847372389ea90961eb)) # [4.0.0](https://github.com/syrupy-project/syrupy/compare/v3.0.6...v4.0.0) (2023-02-02) ### Bug Fixes * defer snapshot writes until end of session ([#606](https://github.com/syrupy-project/syrupy/issues/606)) ([68f1d5f](https://github.com/syrupy-project/syrupy/commit/68f1d5f4ecb1cefab1a0b26fd7f1626e6c8a1b71)) * ensure all pytest options are serializable ([#667](https://github.com/syrupy-project/syrupy/issues/667)) ([e8ed9f2](https://github.com/syrupy-project/syrupy/commit/e8ed9f2e3548f6493349bda2666698f165596f3a)) * improve pytest-xdist compatibility ([9b9090f](https://github.com/syrupy-project/syrupy/commit/9b9090f1d139ada1d12e89e002d48bc35c191d41)) * lru_cache on snapshot reads ([#629](https://github.com/syrupy-project/syrupy/issues/629)) ([c1a675f](https://github.com/syrupy-project/syrupy/commit/c1a675f0960608ff3655d6ba67387940964064db)) * remove legacy path usage to support no:legacypath, closes [#677](https://github.com/syrupy-project/syrupy/issues/677) ([#684](https://github.com/syrupy-project/syrupy/issues/684)) ([6385979](https://github.com/syrupy-project/syrupy/commit/6385979084958f33365c4c544e7583569bb24e06)) ### Code Refactoring * simplify data serializer for ambr ([#676](https://github.com/syrupy-project/syrupy/issues/676)) ([3d296e1](https://github.com/syrupy-project/syrupy/commit/3d296e1e524e90a6f2d22f550a6e7847d4805c92)) * write performance improvements, api clarity ([#645](https://github.com/syrupy-project/syrupy/issues/645)) ([2c31c39](https://github.com/syrupy-project/syrupy/commit/2c31c39fa2430ad42190a0ac3f80181ced803b82)) ### Features * **json:** serialize None as null, close [#622](https://github.com/syrupy-project/syrupy/issues/622) ([c330680](https://github.com/syrupy-project/syrupy/commit/c33068030bc1cb296c1b6f36d3e67d6d55e484fc)) * numerically sort snapshots if possible, close [#657](https://github.com/syrupy-project/syrupy/issues/657) ([4ca0716](https://github.com/syrupy-project/syrupy/commit/4ca071641f9508b21c29df244639c9db61032cb1)) * **serializer:** preserve key ordering of OrderedDict ([0a2289a](https://github.com/syrupy-project/syrupy/commit/0a2289a53b03bf36f55149eee51fd6890af13659)) * support overriding the amber serializer class ([#683](https://github.com/syrupy-project/syrupy/issues/683)) ([662c93f](https://github.com/syrupy-project/syrupy/commit/662c93f18619245d3d8d7c0ac30830d7c4587a2a)) * update python version, pytest version ([#658](https://github.com/syrupy-project/syrupy/issues/658)) ([c360b95](https://github.com/syrupy-project/syrupy/commit/c360b95192607ba55421076487b533f8afe8253b)) ### BREAKING CHANGES * Serializers may now throw a TaintedSnapshotError which will tell the user to regenerate the snapshot even if the underlying data has not changed. This is to support rolling out more subtle changes to the serializers, such as the introduction of serializer metadata. * Renamed DataSerializer to AmberDataSerializer. * **serializer:** Key order is now preserved if using OrderedDict in both the Amber serializer and JSON serializer. * **json:** The JSONSnapshotExtension now serializes Python's None as "null" rather than "None". * Raise minimum python version to 3.8.1 and min. pytest version to v7. * PyTestLocation.filename has been renamed to .basename * refactor: add test_location kwarg to get_snapshot_name * refactor: get_snapshot_name is now static as a classmethod * refactor: remove pre and post read/write hooks * Pre and post read/write hooks have been removed without replacement to make internal refactor simpler. Please open a GitHub issue if you have a use case for these hooks. * refactor: rename Fossil to Collection * The term 'fossil' has been replaced by the clearer term 'collection'. * refactor: pass test_location to read_snapshot * refactor: remove singular write_snapshot method * refactor: dirname property to method * refactor: pass test_location to discover_snapshots * refactor: remove usage of self.test_location * refactor: make write_snapshot a classmethod * refactor: do not instantiate extension with test_location * Numerous instance methods have been refactored as classmethods. ## [3.0.6](https://github.com/syrupy-project/syrupy/compare/v3.0.5...v3.0.6) (2022-12-30) ### Bug Fixes * ensure all pytest options are serializable ([#667](https://github.com/syrupy-project/syrupy/issues/667)) ([e320d7b](https://github.com/syrupy-project/syrupy/commit/e320d7b799b7890df5a63eda59a1382a3d73f39b)) * improve pytest-xdist compatibility ([8739194](https://github.com/syrupy-project/syrupy/commit/87391946af859bbe9a63c5ac297cfc7b169c7742)) ## [3.0.5](https://github.com/syrupy-project/syrupy/compare/v3.0.4...v3.0.5) (2022-11-08) ### Bug Fixes * only instantiate colored objects if color is not disabled ([#634](https://github.com/syrupy-project/syrupy/issues/634)) ([7f0fe22](https://github.com/syrupy-project/syrupy/commit/7f0fe2255e56cafbad86f6e505019b8e507afd00)) ## [3.0.4](https://github.com/syrupy-project/syrupy/compare/v3.0.3...v3.0.4) (2022-11-03) ### Bug Fixes * update poetry build backend ([#631](https://github.com/syrupy-project/syrupy/issues/631)) ([4819026](https://github.com/syrupy-project/syrupy/commit/48190261f31ee801d60daab046e37d6a910b3efc)) ## [3.0.3](https://github.com/syrupy-project/syrupy/compare/v3.0.2...v3.0.3) (2022-11-03) ### Bug Fixes * use more expressive glob when building whl ([#627](https://github.com/syrupy-project/syrupy/issues/627)) ([6a766e7](https://github.com/syrupy-project/syrupy/commit/6a766e78d72fd3e74cc7725fead46b7f839b468a)) ## [3.0.2](https://github.com/syrupy-project/syrupy/compare/v3.0.1...v3.0.2) (2022-09-23) ### Bug Fixes * update classifiers (no material change) ([43d78ec](https://github.com/syrupy-project/syrupy/commit/43d78ecc0a2175487db1c9bf5857d6ee34344046)) ## [3.0.1](https://github.com/syrupy-project/syrupy/compare/v3.0.0...v3.0.1) (2022-09-23) ### Bug Fixes * avoid reporting crash for snapshot dir outside pytest dir ([#621](https://github.com/syrupy-project/syrupy/issues/621)) ([f2b2e77](https://github.com/syrupy-project/syrupy/commit/f2b2e774b6055fde887a36d2a995ebb284ebc76e)) # [3.0.0](https://github.com/syrupy-project/syrupy/compare/v2.3.1...v3.0.0) (2022-08-11) ### Features * drop python 3.6 support ([#612](https://github.com/syrupy-project/syrupy/issues/612)) ([bcdfd89](https://github.com/syrupy-project/syrupy/commit/bcdfd899e3ca1d107fe6009144b6b51547ffde4c)) ### BREAKING CHANGES * Drop Python 3.6 support due to end of life. ## [2.3.1](https://github.com/syrupy-project/syrupy/compare/v2.3.0...v2.3.1) (2022-07-07) ### Bug Fixes * ignore test_a_suffix snapshots when running test_a ([#607](https://github.com/syrupy-project/syrupy/issues/607)) ([988a8ab](https://github.com/syrupy-project/syrupy/commit/988a8ab42ebbc94e2965bc73a6c8b6074c4f7416)) # [2.3.0](https://github.com/syrupy-project/syrupy/compare/v2.2.0...v2.3.0) (2022-05-12) ### Features * provide __repr__ for SnapshotAssertion ([#600](https://github.com/syrupy-project/syrupy/issues/600)) ([df31946](https://github.com/syrupy-project/syrupy/commit/df3194606f7e8cb9fe6a7de97416f00fb7447fb1)) # [2.2.0](https://github.com/syrupy-project/syrupy/compare/v2.1.0...v2.2.0) (2022-05-12) ### Features * support snapshots in doc tests ([#525](https://github.com/syrupy-project/syrupy/issues/525)) ([97256e3](https://github.com/syrupy-project/syrupy/commit/97256e3091e78fefa4d3d89533a95adeee78fdb5)) # [2.1.0](https://github.com/syrupy-project/syrupy/compare/v2.0.0...v2.1.0) (2022-05-11) ### Features * add snapshot diffing support ([#526](https://github.com/syrupy-project/syrupy/issues/526)) ([e424f31](https://github.com/syrupy-project/syrupy/commit/e424f31e06908e47b7cfddf2c9bde595f0a08846)) # [2.0.0](https://github.com/syrupy-project/syrupy/compare/v1.7.4...v2.0.0) (2022-04-10) ### Features * **amber:** change serialization to be py syntax like ([#505](https://github.com/syrupy-project/syrupy/issues/505)) ([b64b965](https://github.com/syrupy-project/syrupy/commit/b64b965720768d787eded154d4dba256e0734620)) * release syrupy v2 ([#575](https://github.com/syrupy-project/syrupy/issues/575)) ([bc8b3a9](https://github.com/syrupy-project/syrupy/commit/bc8b3a909bf5b75b581f16247c12c8bdd087dd9f)) ### BREAKING CHANGES * **amber:** update to serialization requires regeneration of snapshots Migration Guide * `pytest --snapshot-update` to regenerate amber snapshots ## [1.7.4](https://github.com/syrupy-project/syrupy/compare/v1.7.3...v1.7.4) (2022-02-16) ### Bug Fixes * support pytest 7 ([#594](https://github.com/syrupy-project/syrupy/issues/594)) ([17f0660](https://github.com/syrupy-project/syrupy/commit/17f0660b5a2b39b417cff38d9a3d6122e7fa8140)) ## [1.7.3](https://github.com/syrupy-project/syrupy/compare/v1.7.2...v1.7.3) (2022-01-25) ### Bug Fixes * **json:** use additional forward references for py3.7 ([#587](https://github.com/syrupy-project/syrupy/issues/587)) ([8489e93](https://github.com/syrupy-project/syrupy/commit/8489e93477f2f38d1ef2ab499d58c4de069f7993)) ## [1.7.2](https://github.com/syrupy-project/syrupy/compare/v1.7.1...v1.7.2) (2022-01-25) ### Bug Fixes * **json:** use forward references for py3.7 compatibility ([#586](https://github.com/syrupy-project/syrupy/issues/586)) ([8f0db02](https://github.com/syrupy-project/syrupy/commit/8f0db02037be83527881927552663f5d9aeb4d10)) ## [1.7.1](https://github.com/syrupy-project/syrupy/compare/v1.7.0...v1.7.1) (2022-01-25) ### Bug Fixes * compatibility with pytest-tldr ([#583](https://github.com/syrupy-project/syrupy/issues/583)) ([f6ed0b1](https://github.com/syrupy-project/syrupy/commit/f6ed0b142158f27fad651d96c7b675907a46c595)) # [1.7.0](https://github.com/syrupy-project/syrupy/compare/v1.6.0...v1.7.0) (2022-01-14) ### Bug Fixes * ignore, this commit is to force a release ([effeadb](https://github.com/syrupy-project/syrupy/commit/effeadb751d16841222c147c6a383cca4dcf4003)) ### Features * add JSON extension as alternative to amber ([b366082](https://github.com/syrupy-project/syrupy/commit/b3660826439a7cdd0ca84abe307b711a4a283cd9)) # [1.6.0](https://github.com/syrupy-project/syrupy/compare/v1.5.0...v1.6.0) (2022-01-14) ### Features * allow extensions to override snapshot equality check ([#548](https://github.com/syrupy-project/syrupy/issues/548)) ([a44f1b9](https://github.com/syrupy-project/syrupy/commit/a44f1b97a8b14bab57c3eed1c09cf19ec3bbbb32)) # [1.5.0](https://github.com/syrupy-project/syrupy/compare/v1.4.7...v1.5.0) (2021-11-03) ### Features * add support for custom snapshot names, close [#555](https://github.com/syrupy-project/syrupy/issues/555) ([#563](https://github.com/syrupy-project/syrupy/issues/563)) ([81a8a45](https://github.com/syrupy-project/syrupy/commit/81a8a455ca13b88c9420cae7ce54a93baffed7e0)) ## [1.4.7](https://github.com/syrupy-project/syrupy/compare/v1.4.6...v1.4.7) (2021-10-13) ### Bug Fixes * NameError when importing SingleFileSnapshotExtension ([#557](https://github.com/syrupy-project/syrupy/issues/557)) ([935e256](https://github.com/syrupy-project/syrupy/commit/935e2563b55dc295821619d4eac318d8035296e5)) ## [1.4.6](https://github.com/syrupy-project/syrupy/compare/v1.4.5...v1.4.6) (2021-10-06) ### Bug Fixes * typo in single file extension error message ([#553](https://github.com/syrupy-project/syrupy/issues/553)) ([c4785f8](https://github.com/syrupy-project/syrupy/commit/c4785f8d1e26acbd8a327a6e6f7de7ce6f67112f)) ## [1.4.5](https://github.com/syrupy-project/syrupy/compare/v1.4.4...v1.4.5) (2021-08-29) ### Bug Fixes * filter ran items using selected items, close [#451](https://github.com/syrupy-project/syrupy/issues/451) ([#549](https://github.com/syrupy-project/syrupy/issues/549)) ([7374862](https://github.com/syrupy-project/syrupy/commit/73748627f0593d2fa4effc14ac272804e1aaf7bb)) ## [1.4.4](https://github.com/syrupy-project/syrupy/compare/v1.4.3...v1.4.4) (2021-08-20) ### Performance Improvements * memoise DataSerializer.read_file results ([#543](https://github.com/syrupy-project/syrupy/issues/543)) ([df5b516](https://github.com/syrupy-project/syrupy/commit/df5b5166bbe1ccf1fa492707f009541460813295)) ## [1.4.3](https://github.com/syrupy-project/syrupy/compare/v1.4.2...v1.4.3) (2021-08-20) ### Performance Improvements * cache session snapshot extension discovery ([#542](https://github.com/syrupy-project/syrupy/issues/542)) ([10cfc90](https://github.com/syrupy-project/syrupy/commit/10cfc9052afea119e3e62636bcb338bd3ace09c3)) ## [1.4.2](https://github.com/syrupy-project/syrupy/compare/v1.4.1...v1.4.2) (2021-08-18) ### Performance Improvements * discover snapshots once per file rather than per assertion ([#541](https://github.com/syrupy-project/syrupy/issues/541)) ([84c8b82](https://github.com/syrupy-project/syrupy/commit/84c8b82517766f08ac3ee5cef7dada4a490f75ee)) ## [1.4.1](https://github.com/syrupy-project/syrupy/compare/v1.4.0...v1.4.1) (2021-08-18) ### Bug Fixes * unused snapshot not filtered out when tests have similar names, close [#529](https://github.com/syrupy-project/syrupy/issues/529) ([#531](https://github.com/syrupy-project/syrupy/issues/531)) ([d0c8ca8](https://github.com/syrupy-project/syrupy/commit/d0c8ca8bb4f0824ed44c332a4f4cbec6242a5334)) # [1.4.0](https://github.com/syrupy-project/syrupy/compare/v1.3.1...v1.4.0) (2021-08-02) ### Features * support regex path type matching ([#532](https://github.com/syrupy-project/syrupy/issues/532)) ([0ff4acf](https://github.com/syrupy-project/syrupy/commit/0ff4acffa082634247855e479114c2d0daecb63c)) ## [1.3.1](https://github.com/syrupy-project/syrupy/compare/v1.3.0...v1.3.1) (2021-06-20) ### Bug Fixes * support attrs v21 dependency ([#527](https://github.com/syrupy-project/syrupy/issues/527)) ([547bae8](https://github.com/syrupy-project/syrupy/commit/547bae86c860ee3dc9dfb5529a59acbbe3498206)) # [1.3.0](https://github.com/syrupy-project/syrupy/compare/v1.2.4...v1.3.0) (2021-06-05) ### Features * **types:** explicit property matcher and filter types kwargs ([#515](https://github.com/syrupy-project/syrupy/issues/515)) ([8dddebf](https://github.com/syrupy-project/syrupy/commit/8dddebf6c217abe64b81137ad78561e0f7e8ab61)) ## [1.2.4](https://github.com/syrupy-project/syrupy/compare/v1.2.3...v1.2.4) (2021-06-01) ### Bug Fixes * correctly use pytest invocation arguments ([#507](https://github.com/syrupy-project/syrupy/issues/507)) ([8b511e5](https://github.com/syrupy-project/syrupy/commit/8b511e5561edf9e1427fa523f6c82cc411fb5848)) ## [1.2.3](https://github.com/syrupy-project/syrupy/compare/v1.2.2...v1.2.3) (2021-05-12) ### Bug Fixes * support python 3.10 ([#499](https://github.com/syrupy-project/syrupy/issues/499)) ([407ae13](https://github.com/syrupy-project/syrupy/commit/407ae135b0529a309d74ae3f3485eb121ab3b69f)) # [1.2.2](https://github.com/syrupy-project/syrupy/compare/v1.1.0...v1.2.2) (2021-03-18) ### Features * option to report details of unused snapshots ([#467](https://github.com/syrupy-project/syrupy/issues/467)), close [#465](https://github.com/syrupy-project/syrupy/issues/465) ([1c50db0](https://github.com/syrupy-project/syrupy/commit/1c50db0c5aa6f2d7445cc0aa8fd532c48d593f2e)) # [1.1.0](https://github.com/syrupy-project/syrupy/compare/v1.0.0...v1.1.0) (2020-12-01) ### Features * add PEP-561 py.typed file for downstream type checkers ([#440](https://github.com/syrupy-project/syrupy/issues/440)) ([fe15bdb](https://github.com/syrupy-project/syrupy/commit/fe15bdb88371848fc72ab1f63a577ac7b05637cb)), closes [#439](https://github.com/syrupy-project/syrupy/issues/439) # [1.0.0](https://github.com/syrupy-project/syrupy/compare/v0.9.0...v1.0.0) (2020-11-13) ### Features * update development status to stable ([#413](https://github.com/syrupy-project/syrupy/issues/413)) ([69e14c6](https://github.com/syrupy-project/syrupy/commit/69e14c67e76976865308ff6e5b0050922a142f39)) ### BREAKING CHANGES * Release v1.0.0 # [0.9.0](https://github.com/syrupy-project/syrupy/compare/v0.8.5...v0.9.0) (2020-11-13) ### Features * expand single filename legal characters ([#398](https://github.com/syrupy-project/syrupy/issues/398)) ([302916b](https://github.com/syrupy-project/syrupy/commit/302916bb87727344cdc1a9abec8ad4e6200e2c50)) ## [0.8.4](https://github.com/syrupy-project/syrupy/compare/v0.8.3...v0.8.4) (2020-10-30) ### Performance Improvements * optimise session items data structures ([#403](https://github.com/syrupy-project/syrupy/issues/403)) ([818d405](https://github.com/syrupy-project/syrupy/commit/818d405a85c2f1f5db9d673e632677c10cb52ad9)) ## [0.8.3](https://github.com/syrupy-project/syrupy/compare/v0.8.2...v0.8.3) (2020-10-30) ### Bug Fixes * assertion exception shows error at correct location ([#402](https://github.com/syrupy-project/syrupy/issues/402)) ([d46bba4](https://github.com/syrupy-project/syrupy/commit/d46bba430fa74ec016402d3f521c4812baf07bf4)) * only perform session finish on test items ran ([#401](https://github.com/syrupy-project/syrupy/issues/401)) ([61a670f](https://github.com/syrupy-project/syrupy/commit/61a670f83ba07de148ae005573676f4507391ce4)) ## [0.8.2](https://github.com/syrupy-project/syrupy/compare/v0.8.1...v0.8.2) (2020-10-30) ### Bug Fixes * unused snapshot detection for targeting single parameterized test case ([#394](https://github.com/syrupy-project/syrupy/issues/394)) ([e008935](https://github.com/syrupy-project/syrupy/commit/e008935c052106d157196ca77415f4773a14f64a)) ## [0.8.1](https://github.com/syrupy-project/syrupy/compare/v0.8.0...v0.8.1) (2020-10-29) ### Bug Fixes * support python 3.9 ([#397](https://github.com/syrupy-project/syrupy/issues/397)) ([6013e9a](https://github.com/syrupy-project/syrupy/commit/6013e9af907b94d19df089bbfea65ca217f83a9a)) # [0.8.0](https://github.com/syrupy-project/syrupy/compare/v0.7.2...v0.8.0) (2020-10-27) ### Features * **amber:** normalise line endings between operating systems ([#377](https://github.com/syrupy-project/syrupy/issues/377)) ([82b624d](https://github.com/syrupy-project/syrupy/commit/82b624d94259422d2f5d5a4d955b615514d0d060)) ### BREAKING CHANGES * Line control characters are normalised when snapshots are generated i.e. `\r` and `\n` characters are all written as `\n`. This is to allow interoperability of snapshots between operating systems that use disparate line control characters. ## [0.7.2](https://github.com/syrupy-project/syrupy/compare/v0.7.1...v0.7.2) (2020-09-20) ### Bug Fixes * add support for no colors mode ([#359](https://github.com/syrupy-project/syrupy/issues/359)) ([ec39b80](https://github.com/syrupy-project/syrupy/commit/ec39b80b14189032b1b61a4959809737c56ea149)) ## [0.7.1](https://github.com/syrupy-project/syrupy/compare/v0.7.0...v0.7.1) (2020-09-05) ### Bug Fixes * support attrs <21.0.0 ([#350](https://github.com/syrupy-project/syrupy/issues/350)) ([d327168](https://github.com/syrupy-project/syrupy/commit/d327168af96385bc2c2eb97f73233ccfd9513226)) # [0.7.0](https://github.com/syrupy-project/syrupy/compare/v0.6.1...v0.7.0) (2020-08-24) ### Features * bugfix, pass indent to multiline open tag, close [#332](https://github.com/syrupy-project/syrupy/issues/332) ([#334](https://github.com/syrupy-project/syrupy/issues/334)) ([3b06a98](https://github.com/syrupy-project/syrupy/commit/3b06a98928a64729bad7c2113e6390136bfbc512)) ## [0.6.1](https://github.com/syrupy-project/syrupy/compare/v0.6.0...v0.6.1) (2020-07-29) ### Bug Fixes * support pytest v6 ([#307](https://github.com/syrupy-project/syrupy/issues/307)) ([ef6496f](https://github.com/syrupy-project/syrupy/commit/ef6496fb50d8cfea5c9ae1c5954ae546024e28cc)) # [0.6.0](https://github.com/syrupy-project/syrupy/compare/v0.5.2...v0.6.0) (2020-07-12) ### Features * add simple props filter helper ([#290](https://github.com/syrupy-project/syrupy/issues/290)) ([d76cc07](https://github.com/syrupy-project/syrupy/commit/d76cc07fa5b9eb7d6cbbbe4b7894e0ba29bd0df6)) ## [0.5.2](https://github.com/syrupy-project/syrupy/compare/v0.5.1...v0.5.2) (2020-07-09) ### Bug Fixes * **amber:** Do not add empty line to empty iterables ([#287](https://github.com/syrupy-project/syrupy/issues/287)) ([0b4a9b0](https://github.com/syrupy-project/syrupy/commit/0b4a9b065a235f8c62ad08e29f3f36f80b3a25d6)) ## [0.5.1](https://github.com/syrupy-project/syrupy/compare/v0.5.0...v0.5.1) (2020-06-12) ### Bug Fixes * support ignoring fields when serializing ([#262](https://github.com/syrupy-project/syrupy/issues/262)) ([f67268e](https://github.com/syrupy-project/syrupy/commit/f67268e23de477c6cc0912f34d6c6d0f70548683)) # [0.5.0](https://github.com/syrupy-project/syrupy/compare/v0.4.4...v0.5.0) (2020-06-09) ### Features * **amber:** add property matcher support ([#245](https://github.com/syrupy-project/syrupy/issues/245)) ([83ded3c](https://github.com/syrupy-project/syrupy/commit/83ded3c73917673fcb46857eb291e26704c2c0f6)) ## [0.4.4](https://github.com/syrupy-project/syrupy/compare/v0.4.3...v0.4.4) (2020-06-02) ### Bug Fixes * only process valid test nodes in report, close [#246](https://github.com/syrupy-project/syrupy/issues/246) ([#247](https://github.com/syrupy-project/syrupy/issues/247)) ([8ed194c](https://github.com/syrupy-project/syrupy/commit/8ed194cc9e7365c6c4fbd9fcd45d403646334b18)) ## [0.4.3](https://github.com/syrupy-project/syrupy/compare/v0.4.2...v0.4.3) (2020-05-27) ### Bug Fixes * Update setup.py, so that it allows for any Python 3.6+ version to be used ([25c2688](https://github.com/syrupy-project/syrupy/commit/25c26881629589949e5877f829f54249deec05b2)) ## [0.4.2](https://github.com/syrupy-project/syrupy/compare/v0.4.1...v0.4.2) (2020-04-22) ### Bug Fixes * Handle dotted parameters in classname ([#200](https://github.com/syrupy-project/syrupy/issues/200)) ([d961f7c](https://github.com/syrupy-project/syrupy/commit/d961f7cfdde4d3eb36777acce7d2926968531447)) ## [0.4.1](https://github.com/syrupy-project/syrupy/compare/v0.4.0...v0.4.1) (2020-04-19) ### Bug Fixes * specify encoding when reading and writing amber fossils ([#198](https://github.com/syrupy-project/syrupy/issues/198)) ([a6a53c4](https://github.com/syrupy-project/syrupy/commit/a6a53c4065880433953b1372e6057e2c8ec03768)) # [0.4.0](https://github.com/syrupy-project/syrupy/compare/v0.3.12...v0.4.0) (2020-04-19) ### Bug Fixes * remove added trailing whitespace from multiline string ([24f3d57](https://github.com/syrupy-project/syrupy/commit/24f3d577726bc9c9b09433780f1647adc8fd35a4)) ### Features * **amber:** indent multiline strings, close [#193](https://github.com/syrupy-project/syrupy/issues/193) ([#194](https://github.com/syrupy-project/syrupy/issues/194)) ([de5af3e](https://github.com/syrupy-project/syrupy/commit/de5af3e233712e1db3132b0cdbcc6325dcb9a625)) ## [0.3.12](https://github.com/syrupy-project/syrupy/compare/v0.3.11...v0.3.12) (2020-04-19) ### Bug Fixes * use the test node location when determining snapshot class name ([#197](https://github.com/syrupy-project/syrupy/issues/197)) ([1010c94](https://github.com/syrupy-project/syrupy/commit/1010c94378dbf325fe3fda6a2f563ae152c640ca)) ## [0.3.11](https://github.com/syrupy-project/syrupy/compare/v0.3.10...v0.3.11) (2020-04-17) ### Bug Fixes * show snapshot data in report when does not exist ([#191](https://github.com/syrupy-project/syrupy/issues/191)) ([7ebdca2](https://github.com/syrupy-project/syrupy/commit/7ebdca2d5537ce6f311b09e812aa54ffc141222e)) ## [0.3.10](https://github.com/syrupy-project/syrupy/compare/v0.3.9...v0.3.10) (2020-04-15) ### Bug Fixes * parsing identifiers from snapshot names ([#186](https://github.com/syrupy-project/syrupy/issues/186)) ([#187](https://github.com/syrupy-project/syrupy/issues/187)) ([45a2931](https://github.com/syrupy-project/syrupy/commit/45a29312a8a416db420cb2c9a839069dfc289c46)) ## [0.3.9](https://github.com/syrupy-project/syrupy/compare/v0.3.8...v0.3.9) (2020-04-08) ### Bug Fixes * correctly track unused snapshots in classes ([#177](https://github.com/syrupy-project/syrupy/issues/177)) ([f780501](https://github.com/syrupy-project/syrupy/commit/f7805015ac874843fbd996d209a6a6851f5d0ba2)) ## [0.3.8](https://github.com/syrupy-project/syrupy/compare/v0.3.7...v0.3.8) (2020-04-03) ### Performance Improvements * only clear assertion `_extension` when overridden ([#172](https://github.com/syrupy-project/syrupy/issues/172)) ([82eae91](https://github.com/syrupy-project/syrupy/commit/82eae91a2156556753ced22eb9b6cc97594b6f9c)) ## [0.3.7](https://github.com/syrupy-project/syrupy/compare/v0.3.6...v0.3.7) (2020-03-24) ### Bug Fixes * support call syntax for snapshot fixture overriding ([#160](https://github.com/syrupy-project/syrupy/issues/160)) ([4cf051c](https://github.com/syrupy-project/syrupy/commit/4cf051c808da59d7b5a4dcad6cae440dae262541)) ## [0.3.6](https://github.com/syrupy-project/syrupy/compare/v0.3.5...v0.3.6) (2020-03-10) ### Bug Fixes * specify correct min version of pytest ([#157](https://github.com/syrupy-project/syrupy/issues/157)) ([858bec7](https://github.com/syrupy-project/syrupy/commit/858bec7e3205679eb0099bde66af564002c4af8d)) ## [0.3.5](https://github.com/syrupy-project/syrupy/compare/v0.3.4...v0.3.5) (2020-03-08) ### Bug Fixes * snapshot name warning showing on false negatives ([#151](https://github.com/syrupy-project/syrupy/issues/151)) ([d56860b](https://github.com/syrupy-project/syrupy/commit/d56860b9005ee21a04f36f0ea7550fe8c4d7323a)) ## [0.3.4](https://github.com/syrupy-project/syrupy/compare/v0.3.3...v0.3.4) (2020-03-08) ### Bug Fixes * show hidden line characters and accessible colors ([#126](https://github.com/syrupy-project/syrupy/issues/126)) ([fa442df](https://github.com/syrupy-project/syrupy/commit/fa442df2981406b31065938c57b6ee8eaed2e724)), closes [#150](https://github.com/syrupy-project/syrupy/issues/150) ## [v0.3.3](https://github.com/syrupy-project/syrupy/compare/v0.3.2...v0.3.3) - Conversion of all `os.path` and `os.walk` calls to use `pathlib` instead, setting `pathlib` as the new preferred way of doing path operations (#130) - Add `--snapshot-default-extension` option to specify extension class via pytest cli (#132) - Fix bug where snapshot diffs were erroneously printed (#135) - Fix bug where snapshot names were incorrectly matching tests (#136) - Fix bug where deleted snapshots where incorrectly colored (#136) - Fix bug where targeting specific test nodes did not filter out unused snapshots (#139) - Fix bug where snapshot report was printed out before the pytest report (#144) ## [v0.3.2](https://github.com/syrupy-project/syrupy/compare/v0.3.1...v0.3.2) - Fix bug where untargeted snapshots would be deleted when using pytest in targeted mode (#123) - Fix bug where snapshot files were not cleaned up when running specific test files (#127) - Fix bug where targeting specific test nodes in a test file was not supported (#127) - Fix bug where targeting specific test modules using pyargs was not supported (#127) ## [v0.3.1](https://github.com/syrupy-project/syrupy/compare/v0.3.0...v0.3.1) - Fix bug where newline control characters were being translated based on platform (#113) ## [v0.3.0](https://github.com/syrupy-project/syrupy/compare/v0.2.0...v0.3.0) - Adds support for named tuple fields (#108) - Add trailing commas to class fields (#108) - Specify explicit version range for pytest peer dependency (#111) ## [v0.2.0](https://github.com/syrupy-project/syrupy/compare/v0.1.0...v0.2.0) - Fix issue with using hashables as dict keys or in sets (#103) - Add support for custom objects repr (#101) - Add support for nested test classes (#99) - Remove `_snapshot_subdirectory_name` from `SnapshotFossilizer` (#99) ## [v0.1.0](https://github.com/syrupy-project/syrupy/tree/v0.1.0) - Initial release respecting [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). syrupy-project-syrupy-7096efd/CODE_OF_CONDUCT.md000066400000000000000000000064001513542711300213310ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq syrupy-project-syrupy-7096efd/CONTRIBUTING.md000066400000000000000000000106421513542711300207660ustar00rootroot00000000000000# Contributing :tada: Thanks for taking the time to contribute! :tada: The following is a set of guidelines for contributing to [syrupy](https://github.com/syrupy-project/syrupy). These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document. ## Table Of Contents [Code of Conduct](#code-of-conduct) [What should I know before I get started?](#what-should-i-know-before-i-get-started) - [Python 3](#python-3) - [Snapshot Testing](#snapshot-testing) - [Releases](#releases) [How Can I Contribute?](#how-can-i-contribute) - [Reporting Bugs](#reporting-bugs) - [Suggesting Enhancements](#suggesting-enhancements) - [Your First Code Contribution](#your-first-code-contribution) - [Pull Requests](#pull-requests) - [Debugging](#debugging) [Styleguides](#styleguides) - [Commit Messages](#commit-messages) - [Code Styleguide](#code-styleguide) - [`pathlib` over `os.path`](#usage-of-pathlib) [Additional Notes](#additional-notes) - [Issue and Pull Request Labels](#issue-and-pull-request-labels) ## Code of Conduct This project and everyone participating in it is governed by our [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. ## What should I know before I get started ### Python 3 - Python typing and hints: [typing](https://docs.python.org/3/library/typing.html) ### Snapshot Testing - Javascript snapshot testing [jest](https://jestjs.io/docs/en/snapshot-testing) ### Releases - Semantic versioning: [semver](https://semver.org/spec/v2.0.0.html) ## How Can I Contribute Before diving into writing code, please take a look at the following. ### Reporting Bugs When attempting to fix a bug, create an issue using the "Bug report" template. Give as much information in this issue as it allows for discussions and documentation about the decisions reached for any bugs that have been encounted. ### Suggesting Enhancements Have an idea? Create an issue using the "Feature request" template. Detailing in there as much as possible, the idea and any potential solutions to it, before suggesting a pull request. ### Your First Code Contribution Have an issue to submit code changes for? See below. #### Local development - Clone the repository - Run `. script/bootstrap` to ensure you're working from the correct environment - Run `inv test` to verify enviroment is correctly setup - Checkout a new branch and add code changes - Add tests to verify code changes and rerun `inv test` - See submitting [pull requests](#pull-requests) ### Pull Requests Creating a pull request uses our template using the GitHub web interface. Fill in the relevant sections, clearly linking the issue the change is attemping to resolve. ### Debugging `debugpy` is installed in local development. A VSCode launch config is provided. Run `inv test -v -d` to enable the debugger (`-d` for debug). It'll then wait for you to attach your VSCode debugging client. #### Debugging Performance Issues You can run `inv benchmark` to run the full benchmark suite. Alternatively, write a test file, e.g.: ```py # test_performance.py import pytest import os SIZE = int(os.environ.get("SIZE", 1000)) @pytest.mark.parametrize("x", range(SIZE)) def test_performance(x, snapshot): assert x == snapshot ``` and then run: ```sh SIZE=1000 python -m cProfile -s cumtime -m pytest test_performance.py --snapshot-update -s > profile.log ``` See the cProfile docs for metric sorting options. ## Styleguides ### Commit Messages Provide semantic commit messages following this [convention](https://www.conventionalcommits.org/en/v1.0.0/#summary). This informs the semantic versioning we use to control our [releases](#releases). ### Code Styleguide A linter is available to catch most of our styling concerns. This is provided in a pre-commit hook when setting up [local development](#local-development). You can also run `inv lint --fix` to see and solve what issues it can. ### Usage of Pathlib `pathlib` is the preferred library when dealing with path operations. Some [documentation](https://docs.python.org/3/library/pathlib.html#correspondence-to-tools-in-the-os-module) is available to help translate `os.path`-type calls to `pathlib` calls. Documentation on `pathlib`'s API is also available on the same page. ## Additional Notes ### Issue and Pull Request Labels Please tag issues and pull requests according to the relevant [github labels](https://github.com/syrupy-project/syrupy/issues/labels). syrupy-project-syrupy-7096efd/LICENSE000066400000000000000000000020571513542711300175430ustar00rootroot00000000000000MIT License Copyright (c) 2025 Syrupy Project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. syrupy-project-syrupy-7096efd/MANIFEST.in000066400000000000000000000000421513542711300202640ustar00rootroot00000000000000include README.md include LICENSE syrupy-project-syrupy-7096efd/README.md000066400000000000000000001167411513542711300200230ustar00rootroot00000000000000# syrupy Logo [![All Contributors](https://img.shields.io/github/all-contributors/syrupy-project/syrupy?color=ee8449&style=flat-square)](#contributors) [![Stage](https://img.shields.io/pypi/status/syrupy)](https://pypi.org/project/syrupy/) [![codecov](https://codecov.io/gh/syrupy-project/syrupy/graph/badge.svg?token=GB9EmYKPAl)](https://codecov.io/gh/syrupy-project/syrupy) ![Pytest>=8,<9.0.0](https://img.shields.io/badge/pytest-%3E=8,%20%3C9.0.0-green) [![Pypi](https://img.shields.io/pypi/v/syrupy)](https://pypi.org/project/syrupy/) [![Wheel](https://img.shields.io/pypi/wheel/syrupy)](https://pypi.org/project/syrupy/) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/syrupy) [![PyPI - Downloads](https://img.shields.io/pypi/dm/syrupy)](https://pypi.org/project/syrupy/) [![PyPI - License](https://img.shields.io/pypi/l/syrupy)](./LICENSE) ## Overview Syrupy is a zero-dependency [pytest](https://docs.pytest.org/en/latest/) snapshot plugin. It enables developers to write tests which assert immutability of computed results. ## Motivation Syrupy upholds three principles: - Extensible: If a particular data type is not supported, users should be able to easily and quickly add support. - Idiomatic: Snapshot testing should fit naturally among other test cases in pytest, e.g. `assert x == snapshot` vs. `snapshot.assert_match(x)`. - Soundness: Snapshot tests should uncover even the most minute issues. Unlike other snapshot libraries, Syrupy will fail a test suite if a snapshot does not exist, not just on snapshot differences. ## Installation ```shell python -m pip install syrupy ``` ### Pytest and Python Compatibility Syrupy will always be compatible with the latest version of Python and Pytest. If you're running an old version of Python or Pytest, you will need to use an older major version of Syrupy: | Syrupy Version | Python Support | Pytest Support | | -------------- | -------------- | -------------- | | 5.x.x | >=3.10 | >=8 | | 4.x.x | >=3.8.1, | >=7, <9 | | 3.x.x | >=3.7, <4 | >=5.1, <8 | | 2.x.x | >=3.6, <4 | >=5.1, <8 | ## Usage ### Basic Usage In a pytest test file `test_file.py`: ```python def test_foo(snapshot): actual = "Some computed value!" assert actual == snapshot ``` when you run `pytest`, the above test should fail due to a missing snapshot. Re-run pytest with the update snapshots flag like so: ```shell pytest --snapshot-update ``` A snapshot file should be generated under a `__snapshots__` directory in the same directory as `test_file.py`. The `__snapshots__` directory and all its children should be committed along with your test code. #### Usage in `unittest.TestCase` subclasses [Due to limitations in `unittest` and `pytest`](https://docs.pytest.org/en/9.0.x/how-to/unittest.html#pytest-features-in-unittest-testcase-subclasses), the `snapshot` fixture is not directly usable in `TestCase` subclasses (including Django's `TestCase`). Possible workarounds include using marks: ```python from unittest import TestCase import pytest @pytest.fixture(scope="function") def snapshot_in_class(request, snapshot): """ Wraps snapshot fixture to provide instance snapshot property for unittest.TestCase tests """ request.cls.snapshot = snapshot class MyTest(TestCase): @pytest.mark.usefixtures("snapshot_in_class") def test_foo(self): actual = "Some computed value!" assert actual == self.snapshot ``` Or using a fixture with `autouse`: ```python from unittest import TestCase import pytest class MyTest(TestCase): @pytest.fixture(autouse=True) def setupSnapshot(self, snapshot): self.snapshot = snapshot def test_foo(self): actual = "Some computed value!" assert actual == self.snapshot ``` #### Custom Objects The default serializer supports all python built-in types and provides a sensible default for custom objects. #### Representation If you need to customise your object snapshot, it is as easy as overriding the default `__repr__` implementation. ```python def __repr__(self) -> str: return "MyCustomClass(...)" ``` If you need bypass a custom object representation to use the amber standard, it is easy using the following helpers. ```python def test_object_as_named_tuple(snapshot): assert snapshot == AmberDataSerializer.object_as_named_tuple(obj_with_custom_repr) ``` > See `test_snapshot_object_as_named_tuple_class` for an example on automatically doing this for all nested properties #### Attributes If you want to limit what properties are serialized at a class type level you could either: **A**. Provide a filter function to the snapshot [exclude](#exclude) configuration option. ```py def limit_foo_attrs(prop, path): allowed_foo_attrs = {"do", "not", "serialize", "these", "attrs"} return isinstance(path[-1][1], Foo) and prop in allowed_foo_attrs def test_bar(snapshot): actual = Foo(...) assert actual == snapshot(exclude=limit_foo_attrs) ``` **B**. Provide a filter function to the snapshot [include](#include) configuration option. ```py def limit_foo_attrs(prop, path): allowed_foo_attrs = {"only", "serialize", "these", "attrs"} return isinstance(path[-1][1], Foo) and prop in allowed_foo_attrs def test_bar(snapshot): actual = Foo(...) assert actual == snapshot(include=limit_foo_attrs) ``` **C**. Or override the `__dir__` implementation to control the attribute list. ```py class Foo: def __dir__(self): return ["only", "serialize", "these", "attrs"] def test_bar(snapshot): actual = Foo(...) assert actual == snapshot ``` Both options will generate equivalent snapshots but the latter is only viable when you have control over the class implementation and do not need to share the exclusion logic with other objects. ### CLI Options These are the cli options exposed to `pytest` by the plugin. | Option | Description | Default | | ------------------------------ |--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | `--snapshot-update` | Snapshots will be updated to match assertions and unused snapshots will be deleted. | `False` | | `--snapshot-details` | Includes details of unused, generated, and updated snapshots (test name and snapshot location) in the final report. | `False` | | `--snapshot-warn-unused` | Prints a warning on unused snapshots rather than fail the test suite. | `False` | | `--snapshot-default-extension` | Use to change the default snapshot extension class. | [AmberSnapshotExtension](https://github.com/syrupy-project/syrupy/blob/main/src/syrupy/extensions/amber/__init__.py) | | `--snapshot-no-colors` | Disable test results output highlighting. Equivalent to setting the environment variables `ANSI_COLORS_DISABLED` or `NO_COLOR` | Disabled by default if not in terminal. | | `--snapshot-patch-pycharm-diff`| Override PyCharm's default diffs viewer when looking at snapshot diffs. See [IDE Integrations](#ide-integrations) | `False` | | `--snapshot-diff-mode` | Configures how diffs are displayed on assertion failure. If working with very large snapshots, disabling the diff can improve performance. | `detailed` | | `--snapshot-ignore-file-extensions` | Comma separated list of file extensions to ignore when walking the file tree and discovering used/unused snapshots. | No extensions are ignored by default. | | `--snapshot-dirname` | Directory name to store snapshots in. | `__snapshots__` | ### Assertion Options These are the options available on the `snapshot` assertion fixture. Use of these options are one shot and do not persist across assertions. For more persistent options see [advanced usage](#advanced-usage). #### `matcher` This allows you to match on a property path and value to control how specific object shapes are serialized. The matcher is a function that takes two keyword arguments. It should return the replacement value to be serialized or the original unmutated value. | Argument | Description | | -------- | ------------------------------------------------------------------------------------------------------------------ | | `data` | Current serializable value being matched on | | `path` | Ordered path traversed to the current value e.g. `(("a", dict), ("b", dict))` from `{ "a": { "b": { "c": 1 } } }`} | **NOTE:** Do not mutate the value received as it could cause unintended side effects. ##### Composing Matchers Multiple matchers can be composed together using `matchers`, e.g.: ```py from syrupy.matchers import compose_matchers def test_multiple_matchers(snapshot): data = { "number": 1, "datetime": datetime.datetime.now(), "float": 1.3 } assert data == snapshot( matcher=compose_matchers( path_type(types=(int, float), replacer=lambda *_: "MATCHER_1"), path_type(types=(datetime.datetime,), replacer=lambda *_: "MATCHER_2"), ), ) ``` ##### Built-In Matchers Syrupy comes with built-in helpers that can be used to make easy work of using property matchers. ###### `path_type(mapping=None, *, types=(), strict=True, regex=False)` Easy way to build a matcher that uses the path and value type to replace serialized data. When strict, this will raise a `ValueError` if the types specified are not matched. | Argument | Description | | ---------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `mapping` | Dict of path string to tuples of class types, including primitives e.g. (MyClass, UUID, datetime, int, str) | | `types` | Tuple of class types used if none of the path strings from the mapping are matched | | `strict` | If a path is matched but the value at the path does not match one of the class types in the tuple then a `PathTypeError` is raised | | `regex` | If true, the `mapping` key is treated as a regular expression when matching paths | | `replacer` | Called with any matched value and result is used as the replacement that is serialized. Defaults to the object type when not given | ```py from syrupy.matchers import path_type def test_bar(snapshot): actual = { "date_created": datetime.now(), "value": "Some computed value!!", } assert actual == snapshot(matcher=path_type({ "date_created": (datetime,), "nested.path.id": (int,), })) ``` ```py # name: test_bar dict({ 'date_created': datetime, 'value': 'Some computed value!!', }) # --- ``` > NOTE: When `regex` is `True` all matcher mappings are treated as regex patterns ###### `path_value(mapping=None, *, **kwargs)` Shares the same `kwargs` as `path_type` matcher, with the exception of the `mapping` argument type. Only runs replacement for objects at a matching path where the value of the mapping also matches the object data string repr. | Argument | Description | | --------- | ---------------------------------------------------------- | | `mapping` | Dict of path string to object value string representations | > See `test_regex_matcher_str_value` for example usage. #### `exclude` This allows you to filter out object properties from the serialized snapshot. The exclude parameter takes a filter function that accepts two keyword arguments. It should return `true` if the property should be excluded, or `false` if the property should be included. | Argument | Description | | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `prop` | Current property on the object, could be any hashable value that can be used to retrieve a value e.g. `1`, `"prop_str"`, `SomeHashableObject` | | `path` | Ordered path traversed to the current value e.g. `(("a", dict), ("b", dict))` from `{ "a": { "b": { "c": 1 } } }`} | ##### Built-In Filters Syrupy comes with built-in helpers that can be used to make easy work of using the filter options. ###### `props(prop_name, *prop_name)` Easy way to build a filter that excludes based on string based property names. Takes an argument list of property names, with support for indexed iterables. ```py from syrupy.filters import props def test_bar(snapshot): actual = { "id": uuid.uuid4(), "list": [1,2,3], } assert actual == snapshot(exclude=props("id", "1")) ``` ```py # name: test_bar dict({ 'list': list([ 1, 3, ]), }) # --- ``` ###### `paths(path_string, *path_strings)` Easy way to build a filter that uses full path strings delimited with `.`. Takes an argument list of path strings. ```py from syrupy.filters import paths def test_bar(snapshot): actual = { "date": datetime.now(), "list": [1,2,3], } assert actual == snapshot(exclude=paths("date", "list.1")) ``` ```py # name: test_bar dict({ 'list': list([ 1, 3, ]), }) # --- ``` #### `include` This allows you filter an object's properties to a subset using a predicate. This is the opposite of [exclude](#exclude). All the same property filters supporterd by [exclude](#exclude) are supported for `include`. The include parameter takes a filter function that accepts two keyword arguments. It should return `true` if the property should be include, or `false` if the property should not be included. | Argument | Description | | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `prop` | Current property on the object, could be any hashable value that can be used to retrieve a value e.g. `1`, `"prop_str"`, `SomeHashableObject` | | `path` | Ordered path traversed to the current value e.g. `(("a", dict), ("b", dict))` from `{ "a": { "b": { "c": 1 } } }`} Note that `include` has some caveats which make it a bit more difficult to use than `exclude`. Both `include` and `exclude` are evaluated for each key of an object before traversing down nested paths. This means if you want to include a nested path, you must include all parents of the nested path, otherwise the nested child will never be reached to be evaluated against the include predicate. For example: ```py obj = { "nested": { "key": True } } assert obj == snapshot(include=paths("nested", "nested.key")) ``` The extra "nested" is required, otherwise the nested dictionary will never be searched -- it'd get pruned too early. To avoid adding duplicate path parts, we provide a convenient `paths_include` which supports a list/tuple instead of a string for each path to match: ```py obj = { "other": False, "nested": { "key": True } } assert obj == snapshot(include=paths_include(["other"], ["nested", "key"])) ``` #### `extension_class` This is a way to modify how the snapshot matches and serializes your data in a single assertion. ```py def test_foo(snapshot): actual_svg = "" assert actual_svg == snapshot(extension_class=SVGImageSnapshotExtension) ``` #### `diff` This is an option to snapshot only the diff between the actual object and a previous snapshot, with the `diff` argument being the previous snapshot `index`/`name`. ```py def test_diff(snapshot): actual0 = [1,2,3,4] actual1 = [0,1,3,4] assert actual0 == snapshot assert actual1 == snapshot(diff=0) # This is equivalent to the lines above # Must use the index name to diff when given assert actual0 == snapshot(name='snap_name') assert actual1 == snapshot(diff='snap_name') ``` ##### Built-In Extensions Syrupy comes with a few built-in preset configurations for you to choose from. You should also feel free to extend the `AbstractSyrupyExtension` if your project has a need not captured by one our built-ins. **Amber Extensions** - **`AmberSnapshotExtension`**: This is the default extension which generates `.ambr` files. Serialization of most data types are supported. - Line control characters are normalised when snapshots are generated i.e. `\r` and `\n` characters are all written as `\n`. This is to allow interoperability of snapshots between operating systems that use disparate line control characters. - **`SingleFileAmberSnapshotExtension`**: A variant of the `AmberSnapshotExtension` which writes 1 snapshot per file. **Other Formats** - **`SingleFileSnapshotExtension`**: This extension creates one `.raw` file per test case. Note that the default behaviour of the SingleFileSnapshotExtension is to write raw bytes to disk. There is no further "serialization" that happens. The `SingleFileSnapshotExtension` is mostly used as a building block for other extensions such as the image extensions, the JSON extension, as well as the `SingleFileAmberSnapshotExtension` extension. In the default "binary" mode, attempting to serialize a non-byte-like object will throw a TypeError. - **`PNGImageSnapshotExtension`**: An extension of single file, this should be used to produce `.png` files from a byte string. - **`SVGImageSnapshotExtension`**: Another extension of single file. This produces `.svg` files from an svg string. - **`JSONSnapshotExtension`**: Another extension of single file. This produces `.json` files from dictionaries and lists. #### `name` By default, if you make multiple snapshot assertions within a single test case, an auto-increment identifier will be used to index the snapshots. You can override this behaviour by specifying a custom snapshot name to use in place of the auto-increment number. ```py def test_case(snapshot): assert "actual" == snapshot(name="case_a") assert "other" == snapshot(name="case_b") ``` > _Warning_: If you use a custom name, you must make sure the name is not re-used within a test case. ### Advanced Usage By overriding the provided [`AbstractSyrupyExtension`](https://github.com/syrupy-project/syrupy/tree/main/src/syrupy/extensions/base.py) you can implement varied custom behaviours. See examples of how syrupy can be used and extended in the [test examples](https://github.com/syrupy-project/syrupy/tree/main/tests/examples). #### Overriding defaults It is possible to override `include`, `exclude`, `matchers` and `extension_class` on a more global level just once, instead of every time per test. By default, after every assertion the modified values per snapshot assert are reverted to their default values. However, it is possible to override those default values with ones you would like persisted, which will be treated as the new defaults. To achieve that you can use `snapshot.with_defaults`, which will create new instance of `SnapshotAssertion` with the provided values. `snapshot.use_extension` is retained for compatibility. However, it is limited to only overriding the default extension class. #### JSONSnapshotExtension This extension can be useful when testing API responses, or when you have to deal with long dictionaries that are cumbersome to validate inside a test. For example: ```python import pytest from syrupy.extensions.json import JSONSnapshotExtension @pytest.fixture def snapshot_json(snapshot): return snapshot.with_defaults(extension_class=JSONSnapshotExtension) # or return snapshot.use_extension(JSONSnapshotExtension) def test_api_call(client, snapshot_json): resp = client.post("/endpoint") assert resp.status_code == 200 assert snapshot_json == resp.json() ``` API responses often contain dynamic data, like IDs or dates. You can still validate and store other data of a response by leveraging syrupy matchers. For example: ```py from datetime import datetime from syrupy.matchers import path_type def test_api_call(client, snapshot_json): resp = client.post("/user", json={"name": "Jane"}) assert resp.status_code == 201 matcher = path_type({ "id": (int,), "registeredAt": (datetime,) }) assert snapshot_json(matcher=matcher) == resp.json() ``` The generated snapshot: ```json { "id": "", "registeredAt": "", "name": "Jane" } ``` Or a case where the value needs to be replaced using a condition e.g. file path string ```py import re from syrupy.matchers import path_type def test_matches_generated_string_value(snapshot, tmp_file): matcher = path_value( mapping={"file_path": r"\w+://(.*/)+dir/filename.txt"}, replacer=lambda _, match: match[0].replace(match[1], "/"), types=(str,), ) assert snapshot(matcher=matcher) == tmp_file ``` The generated snapshot: ```json { "name": "Temp Files", "file_path": "scheme:///dir/filename.txt" } ``` #### Ignoring File Extensions (e.g. DVC Integration) If using a tool such as [DVC](https://dvc.org/) or other tool where you need to ignore files by file extension, you can update your `pytest.ini` like so: ```ini [pytest] addopts = --snapshot-ignore-file-extensions dvc ``` A comma separated list is supported, like so: ```ini [pytest] addopts = --snapshot-ignore-file-extensions dvc,tmp,zip ``` ### Extending Syrupy - [Custom defaults](https://github.com/syrupy-project/syrupy/tree/main/tests/examples/test_custom_defaults.py) - [Custom snapshot directory 1](https://github.com/syrupy-project/syrupy/tree/main/tests/examples/test_custom_snapshot_directory.py) - [Custom snapshot directory 2](https://github.com/syrupy-project/syrupy/tree/main/tests/examples/test_custom_snapshot_directory_2.py) - [Custom snapshot name](https://github.com/syrupy-project/syrupy/tree/main/tests/examples/test_custom_snapshot_name.py) - [Custom object snapshots](https://github.com/syrupy-project/syrupy/tree/main/tests/examples/test_custom_object_repr.py) - [Custom comparator](https://github.com/syrupy-project/syrupy/tree/main/tests/integration/test_custom_comparator.py) - [JPEG image extension](https://github.com/syrupy-project/syrupy/tree/main/tests/examples/test_custom_image_extension.py) - [Built-in image extensions](https://github.com/syrupy-project/syrupy/blob/main/tests/syrupy/extensions/image/test_image_svg.py) - [Amber Serializer Plugins](https://github.com/syrupy-project/syrupy/blob/main/tests/syrupy/extensions/amber/test_amber_serializer_plugins.py) -- e.g. serializing attrs, dataclasses, Pydantic ### Inline Snapshots Syrupy does not support inline snapshots. For inline snapshots, we recommend checking out the [inline-snapshot](https://github.com/15r10nk/inline-snapshot) library. ## IDE Integrations ### PyCharm The [PyCharm](https://www.jetbrains.com/pycharm/) IDE comes with a built-in tool for visualizing differences between expected and actual results in a test. To properly render Syrupy snapshots in the PyCharm diff viewer, we need to apply a patch to the diff viewer library. To do this, use the `--snapshot-patch-pycharm-diff` flag, e.g.: In your `pytest.ini`: ```ini [pytest] addopts = --snapshot-patch-pycharm-diff ``` See [#675](https://github.com/syrupy-project/syrupy/issues/675) for the original issue. ## Known Limitations - `pytest-xdist` support only partially exists. There is no issue when it comes to reads however when you attempt to run `pytest --snapshot-update`, if running with more than 1 process, the ability to detect unused snapshots is disabled. See [#535](https://github.com/syrupy-project/syrupy/issues/535) for more information. _We welcome contributions to patch these known limitations._ ## Migrating from another tool ### From snapshottest You cannot use syrupy alongside snapshottest due to argument conflicts. To ease migration, we've made syrupy aware of snapshottest call syntax. Simply uninstall snapshottest and remove old snapshots: ```shell pip uninstall snapshottest -y; find . -type d ! -path '*/\.*' -name 'snapshots' | xargs rm -r ``` ## Uninstalling ```python pip uninstall syrupy ``` If you have decided not to use Syrupy for your project after giving us a try, we'd love to get your feedback. Please create a GitHub issue if applicable. ## Contributing Feel free to open a PR or GitHub issue. Contributions welcome! To develop locally, clone this repository and run `. script/bootstrap` to install test dependencies. You can then use `invoke --list` to see available commands. ### See contributing [guide](https://github.com/syrupy-project/syrupy/tree/main/CONTRIBUTING.md) ## Contributors
Noah
Noah

🚇 🤔 💻 📖 ⚠️
Emmanuel Ogbizi
Emmanuel Ogbizi

💻 🎨 🚇 📖 ⚠️
Adam Lazzarato
Adam Lazzarato

📖
Marc Cataford
Marc Cataford

💻 ⚠️
Michael Rose
Michael Rose

💻 ⚠️
Jimmy Jia
Jimmy Jia

💻 ⚠️
Steven Loria
Steven Loria

🚇
Artur Balabanov
Artur Balabanov

💻
Huon Wilson
Huon Wilson

💻 🐛
Elizabeth Culbertson
Elizabeth Culbertson

💻 ⚠️
Joakim Nordling
Joakim Nordling

🐛
Ouail
Ouail

💻
Denis
Denis

💻
N0124
N0124

💻
dtczest
dtczest

🐛
Eddie Darling
Eddie Darling

📖
darrenburns
darrenburns

📖
Magnus Heskestad Waage
Magnus Heskestad Waage

🐛
Herbert Ho
Herbert Ho

🐛
Tolga Eren
Tolga Eren

🐛
John Kurkowski
John Kurkowski

🐛
Atharva Arya
Atharva Arya

💻
Michał Jelonek
Michał Jelonek

💻
ManiacDC
ManiacDC

💻
Dmitry Dygalo
Dmitry Dygalo

📖
Allan Chain
Allan Chain

🐛
Nir Schulman
Nir Schulman

💻
Joost Lekkerkerker
Joost Lekkerkerker

💻
epenet
epenet

⚠️
Tom Sparrow
Tom Sparrow

🐛
Samy Laumonier
Samy Laumonier

🐛
Paul Ollis
Paul Ollis

🐛
Rahul Iyer
Rahul Iyer

🐛
Sergio Livi
Sergio Livi

📖
Bartosz Marcin Wróblewski
Bartosz Marcin Wróblewski

💻
This section is automatically generated via tagging the all-contributors bot in a PR: ```text @all-contributors please add for ``` ## License Syrupy is licensed under [MIT](https://github.com/syrupy-project/syrupy/tree/main/LICENSE). syrupy-project-syrupy-7096efd/SECURITY.md000066400000000000000000000005511513542711300203240ustar00rootroot00000000000000# Security Policy ## Supported Versions In general, we do not backport fixes to older versions of Syrupy due to maintenance cost. We may make exceptions on a case-by-case basis for high severity security vulnerabilities upon request. ## Reporting a Vulnerability To report a vulnerability, see: https://github.com/syrupy-project/syrupy/security/advisories. syrupy-project-syrupy-7096efd/assets/000077500000000000000000000000001513542711300200345ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/assets/logo.png000066400000000000000000003707561513542711300215240ustar00rootroot00000000000000PNG  IHDRxsRGB8eXIfMM*i(0@IDATxkeYr}ջ{f3jg-A! l aL8` 6`0haB ,$ˀ3QkF3Ҍf^z[_f~^g{έSɕ_>VO׍mXc +0V`Xc +0V`Xc +0V`Xc +0V`Xc +0V`Xc +0V`Xc +0V`Xc xP*0yP+0V`_D΁ݝ'V'w'tzrtMNvH7L&tڭCߘL&Gh:tmf t?=5d;֧?yPkLz#R90 lڋx"N|ϪO?ߧ /~iu+o}_~>Eݎ+/Ʃ0V`*gGv?0Yحt/b3{w_M>yLLomO`_[w?|L0s}xp_;:T+C_u_gK>}ƅ /m ?u?5׮uo>H9x*0^< Gi]lg??~lBF\ L~?W >󓯞| ]+0ʌǶ/<?맫+¦mAƁOWqUxU'wvv>rݟݵq(ccW UCSnc7Lo&oƯƆ `Lta">po&oOv~;w'B0Vxqh+_:~t͓]åĨ"!dW"3x|8/2JՕnW<0ݎ| <nCqmIgtx3 _ՁAu~c6_}S+`_} ^}nkڹ6\j ϋ !i.|nFt8ز?P…y G0.v\ ܏ tXG/ηyc/ y; 6t lM6UALVjy۫v1Q\4^(̹xߠ߿sh_G|b! )9L^>5ɷM'6V^?8YxPzwBgӑ~ Zq_|PWәW*d[]w3|nqwvŭ} ܯ ,\WX}䥧׾~eemxm%wDoi<`3wyŸC]<^+k*j|;[^wP\^v mk|S޻//T/O/z.C#9grmz8~\+_XY}< ]W.Fd|e9@|^#Ͷ{p~.nme_;__6Wc+pU <xTwl}e?fxvu3iGgw>_';VnܐjS3g@i8=^Lc(Gć/q`z`ZYWr o5Bp CG_;_Blc pX+/]wwcb(KSz5Amy'uQTѥ056eN3omNx,9=.a`7(RecVg JOo+}JӷQǕ-27~vqQܗ6>sgOޗӱo8U6VMo:Y=b3ΊO qVu%т C@O{pA7Wz2#5|n3z|ڌˤ)Ѧ^ Ӥ_9Pkzex`38"s[xwb Cm/އ!L?~`ó|AM=[jݍei|+E׶bT`_/(~ }x98ǦoWboѴ)Tzug6})DT%&Y ]4MR@v0=Ůޔ3[S^I BhΦQ$^݊x1oFŻ?D9(+*>XK{־7+tSmt>4[̱.$Xu_pl^=\y4vyn~g[^opW}cfMy/<^CzW 4ި:a}wW\̟ >Rgᗃ𭂫xe&M!O"xsk{_,ܯ~WNK߅~<}>]vkkaϵM"3l.P{ }M?ALxf_Pq+_f4|hfN# VfM-dף ;3B1֯3: <=oU|o`>D8ݭ?أl~V ܷ rfk)¯?gb915 L{ hS.#@ugzfy:)W|a>ÞoyX-{wqMǜ)W.1Q_r_=Ż m} ^:-Zf;oA~?y[m5Q=عPY=i҄87mtڋyZLg.6`W6'B,鯎+??Dk;ؼ. " * ;j՞o+v(jc^=?X ̮WCQ6V` |p5K̅U}{p~9xf+KɉIվW5B升}{U`:iSOz~tX]LxXywN&KooÍ2<63asQƞE py*.&Rk 12%03Ovj툖PoþWAsWzq[[_ֺUAʟ/ ~hkksvuNw-QNe>p^d+Ûgjh #{Uo^o߫?v~5e1WǼZܩg} o3>WϛK'>7,YZk4sdwʁ64"67=kq#㖷D=4`]lTkzБ#Cf̺{Q!%ַ! q `7)t&. xAy۷nu(ϫҏpl]`e0{YƧ{ \g6>6/"?s[!Gc+ p m*'H7G>p|o]n^]v^Mrrp8=m23v6<ȷ۽b}Gun/^w23V` Yp@Vmݟ0wJw/sMmˎ*kZoYj!(Iþ3BQ'_Ӧ/ZXj+|dW^v?85+;k 1{5  MEO%uٙ0xè!yFw󭫸(mj@W})߇|ux+5o,c-9wz%o\ޏ NM'?W܎o XuLJE\X/ta1B.~gIԟ7 ve1+"uhb\; )G_yO8R6mE7aMXRdab/?ui;. "Gt[aNͻWxى3JD@y~׮^n@GǷlKZ-aTBqoan? w3>Y6s+g7^Z+8@O%x7 63Q&*rr] ʵ[{(&7Xyffz| }'Ќ+1o<ЙoN<ӧt̿XȓO6;7 V)_N+NېB}1[W߸Խy\w҅38=VSݳ,֭¢{O?7xƿ:/ȹ Lҡ!xab-E;H(.Z^soֶ&aNw;oD,Es0?ӧO+ 切[#om i&"ferSUr8h|Őa$7K^ >+x _ *%HZM٥/V/x!t.*v_߼߼~=9 X6ckK;~| \\T.X،Ǣǚ:fGxw;_4==[qhoa+YAN!<3^\#p2?W8KyTU:-z|X9 ikT:Pu <" u)g(mA1yhlxQP0s]-|vpLtSH;B: u<>v.3xa*99ϬjObZg _NEE/7╋PsĜw(5.rmd١ʃ!./u+zPӆO~fo>7EvXt6'm" [Ӌ^=_lV`r\ߋ⽔r?}.ڔjhrr5*fOhM<H,7hd\u8?9󓟴_ _/m=A={Izg#G̟䰢íq k-o5 FϺ:n\o1m|_hadؼ6qJ׻7}k߄Zcx&=S2 *g ,+kf''N.EPX6oű: pU 86s_[w /g۾&R2\[RE&nsNwY?w{m s|op_DލOIgg#8qHQ^-_~^9u̇bʇjSӲɉunf3hq ?r^+50`g9׋\9B@Fk^eeƙ篕+k >ƐuXeZk_l>d@'Sm%|_oA i|gǛ:!O\6HlgBy₏"Bn]}^}V@ ̓xm޸ Y|_;wG{fy4X7w"ք߱Bpb<{?q3]͒.|-CkvKN*qqqm3|Շӯ+ȿ7{]""g<e>QpQwIM"??l [[և{OrhY<ғGV'?@5t]XA^7-m$ešo02۹ ZyPtĬVěv_zuI514z?&.cL7|xg{v;75j 0`}]n A.c_)l5_|pmPCKQIf^X!RZ:}3ӿ,<bS&'^o]uD߄sّ2@yiY]mqZx wa{9|P.n R3{yQ#u%ڄspHW<AFy< GB̜..h< pz /v_TѳrMM"ƭP.Oӫ7F#aH-Nv'}bXq(<_mu*n[3P^z͓8oKalACm0;-SG'f y9ͿG;z\u]T^: 'բ0U/Ja9:|@k=?ĉnصYr!EdS=7HJR[3+ƥStؒO;#U"NSv(ٱOt_C:|L­(.m[{|drx]=p`=x:Wά}ڏZ)||?MT ioC$%dkT,s+x3S2"؅x;.V"R(́(уOxqQo7+̣ة>2pFw֑ f?(MNLj|tĵ͌[!y4 v jn~&(D-C ZnGM>M|v'vn{.<| ߞOge~wS:ln#~X_]=gN;^&W`x 'uvC۷-d{ت=C{gEE!V[b0)p@[kܹpkۙpЋzmQ=Q1_]/ucw?S6~0FO5 5` C\i8 Xе'Q{t;?6~S`=v= U१׿jue}8lH?OƗO`YHpEY-&&xl1sk_kEۉ[Wey˞->+Z.x᧟e fֺ>Ԭ>Hߏ_|vUC<[^!t_"U6n)x}<' .qxr80{XDO:gD͟5_z{ :E\>o W> /nkkƗ^5뗓:Ac6%|>`Ϸvo{@V`|!=pH{++U w{Jwx}Ֆ[T8`% VWip+3[7r<.w}jzƱNnc^ 5\_?G,9~R?ŷ+^ '闡{= mrxp؝owvs#%hKKR9|Pnͮ:V-@AT_»,bzB\EjfWKZp-CέnO/3+U"`_+@|W[{x5cŽ+[n|lr=T3{(wf!OZ8 EambGq:3a*xĔp)ʢ,Rͥ a[囋_qkv:sho\ 7m1jÙKzoܡCoXK5;@@~`KqvoC[a]Q}(!=yy=۾?o)cln~?W~>ϩ_L^-pΞo".wc硨 CqJYVr?ǂ|.g^?mZ7|DOx_Dţ?x >xK -QF\ܯs?_?eq r E^i]AV~m|實e1?yo8S[)X`nj:H4y a*Jb>ݠS[k^Y"&dOlvcXJӁ!3յ3uϼy|Prwu?b1EcBv*]ݓՕ9{xߞQU`xƂTV_>_ ,x$ʅ:K)[D|q`.'x:?HłXޙvov0;3m  z`+0Nh~زin~W~?- o|%Zr>Pz 8.0=2~/ x 7ik|x*s1N襧ql-Dm/ex~'mv_ܵ$TEz)X;\Spvۺ uenkReÒ[x#`@`v|҈; ]f+p9,5W}r]cc%Vr# ZU}3qE8*L&X N❦q33I:|0eSN#앯y Oxw1aړc䧇_ 0Wo|8p{\+{ion~??%w{SWV7~-k |N+\\uLOz,%M\8SI t^:\&DSOW8#|'Ŏ U[u"LY|3T$X[0Z;+;q^ٽIB (D^[øs3>ǖD71_gYfE˟<Oy,"3 "3T&g[[|qy>>mݎzJ^p^LҀgT-:~-+Etkk;_́`4,bඔ'cPSHTC'Ii92̥O9W ׻&7bC[?oّO9ESZ5g.>(; iy~<:.xK`A}gL^?c:ūxū}/˧7޳8[1{?IZϓ޴3W<}y2;-'{OnUZ~=a,azDZC:AF# @uzπzvK02j0g_zaϏ-'h{pP$z=a@!u^8a hkʲ o%{QiȳI.jXgG=ֱ>izI /\b$[9erAz<׮v7_ÈԄ@W q+] ח'+qZ|ULJ/^ /^-2~o =˦of<)%7"69 @8? GÙ4%~H3g @$^QiG~QXB&(x̄4r5ϯ́?fubj8WTrQ(sT[BmE[uky8е1NZ$H0͞DIRѯYNS;&s<F~uu{=3ƅ/yCk÷`A=~{q߇ P{uUOtOlX8yY|Y|?C.bxr)7-yf}/~p -<1]qZxĬwT7vu__o vgw޹m5w9ЏwD#8޷l%xӇh @RWmvi 67_oA`El(nf~79!8_Ϸ~B% Cٜ‰ְp !E|g˻SknRѦ,fgfOZ{bvL|-cv8\"搌s2 qNI˹n8چ}ώHoз!?cƯU?\ۏ m0+Rvʱmo \o ,p~ &Ww^f_WK{zN&Ng1)4nnfk1_@񏧜p}1@} @q?"CҪcA Ga5,Sxw 'x}sG~W`.ӫce2'8y.oLA{Rų[.:H4%.J_wP8SR[G"I7hT@rE!"d;>X,8\N6O{Kv7K.V/!^>/ѣ#osV;ݺu; bf1:!#Nv$8~b`[#*sHu8IP^`iby^ҸٳϾA\'kK}n?7'Ẑ2WOi]gG\ ;]Xq?6<|qf~5G>^q ^း\;w6C|џK֗sCt1 &ljy$ %^ }̣8ЊjT2늗 N}+Qƒ;_ }0aP/|S;_\|M|Ǚ+w.qRO㑏ʙeGʟ=}h7߈SNPk h3 }a  x,)e8FYNUpa@qzF@j\hO,:*Z]-;[;Vz^GT^?=zxfT}ANwQH4y%(zp4N7^z(}q3E]C.6*RwZC>zkI@!'?.}znyB|wIq8턣*r?yn}@s6LeJǵ[Z1ؾ ;}"W U>${bb/}[_~$_g\h<9MϓOOQ(t?? +sz&A'5c1Q70_/#K_^  m%o+Cvf 1#J9o Ԗ ( ĸko߾v mՍ5,wIF8(k&,V:9i=l 3=992+|lg V<>zdDM|>[ynNN`*prJި&\%."Ak4"#ILBD~3Ny?w 8xf?*V iWy{V8#}>4.hx:8x\ QċRny3=# V\]ZKXviiCQ|O?-x;.xD${-H&;%:ͱ;J=<> $ָ:zH/>(XZ](_ [~ ֣jdKkdSW9 b(og0z&;ޱGz|xL H-t蹶ȩ-.Cgkd8BNtqyܾxK t,,u`׷eoGVѝ{F 2D %WKǻ'6&W/ckD \J}HV9IcQ׆GsēᑼԉJlB W9 _ a3yF䶒C@shYo{ 8 CC~`+q P[|zD_kz\MoCw! >p x7&t?̧sԘ?j.?;:j[ ;7 Wc އ&xGɅ3Mez>)8zDBye=H4o-[w aIؿ_j@IDATgv><0 czyq`m'1q"t~>_ʼn<'E[4"XMgyAozF~!Q8{ n6|{Aqǣ:4A@i>縔/pԣ ^U4x}*lE|׸Euiy#+y11_ U7+.8)hGGaΤ`/w6g4}g}3+lil>JԚ_ kǑfƴTGG`;M'\*"s ?#k"a}+EBժ)X-9pͻD~T`|`??=8W_%w ékOe vC?4ӷ!Q.gphx#&(GB+xA/ ?Џ6v-G oq?;=o^1.́uz^+}[%Wի)V8`ŏvpWtGVHřMeImaqZq[˪~5gGO%8%t5R6fh3{6Wn3r0K>:]lmmR"P L]YawjmewZowWH:ba^z{aue')IPŽ$}TC워N>Jn'c&5p½m5#]"/mOyGZ$5_)fnxؙl>xŏԣSw6c ܚPo.# ?hMZ~ڝ={{S >  o./}+JK{$}Y ^. D+"Nwpxg ;soK/Ɀ f=xeeuq)0 l~rE; %O:Dt盂ˍ70̓gy8C?x?g줆DF,NL}  PEU^&^ ?=7^O.W oz_Gˏ1'x؊K~vm=Τ}S‰B (p6gCya]][:{Cy2?<") Խ&?:sdؾGr*153F2%Gڅ=^Gd,0V?LD=ϼ-t|"8N_Qp!7Jo84M˔gU^ozR#?BU/Z&aW\z(z/heyyc/~޺Ûe?Oy:]y}?@RՎÆbt ֎}.-wļ{և>~Q;+*@&|eNv>hϧ?| +>6gOvwn :ĢZ b.w05Uꋶ^4[,?dZ^ ȕj}[yBc)M/I61m|f{] O>՝g6Vky| fFԌaz6}c"귟9}ounl{xzϮl|󘿖kw;Jxwk*;ŋJN˃ua/cϖ~*6rnEصY+k4ZqׇgfMl4$% o>4 Nl j:.Rw tǦ+C/(W`^eȿXwjc΁ݯ?)dG`)|/ۧ?h6q葩IjOp7y qʟ _ g݄ŇV?Ror'ht Pps|PoZZEߚϼP# :?}ss{+AHV5>Vҷ"7O]H'`Nc6䳑Ȫ\<ELD=3r~sx'Upw lc-MxЀ7 Bvk\]YS+>ժ2UZȿdwOhXT _?dINhH}*-թa'с.WtHyW㳴R+ r6g4xdx㩏OtQ4C?i|NSѷ1S9DvkkA vl}GK}8?}:/(DۼZ\ѷqbbMS?L^4жNq/㧃_ϙjZLT2 !otRw <~EP5]DWU(鎬Wp?g糝?IPep '!NzS0<&; M%qAIvXc|eޑNb*z#xӑiR0{`|KeEp>?>'ZNrvI.IÓnE6o (cBà t~><$hd狁RAqf8aD$ǫb\J8q!, ,sTոࠌ༐Q/ZzY@;2dN/e>#9=}Z;Cm@ӯ%y+(ntW_ B5'i2b.\y.,ZMgg\Qr; >2ƵP 2Nkq{U'H;Em+_f-q{L tʙ7,ڤ>sb]>n '&7g5.OPo' /q8n`g">O >c@˼KT8yO{g1=ie|>x{~差w:r<ٌo? .e~:.6UJ_63`?W^uq*<>xcֈ͠}}W#8O;?CCӇ2#&Rx_;nlLgcx0T"[9uv0Q{i >UK8 ꓄'!1u@'Wn6&sX_Ïg\g2Z[)߀;g-w:y"9xܾ^X@_Di{W(Fgz&.Fjw`3iv6|EB}{A;62H(܄Y^<~7V|QE%VqV>$s9a|L`GLjYܠQ /S[qo[B'~f`K:#E T,EK6;|BXnwnx i24 `/=st׷?\%9v MAjߋ ֲ>*矟ExMj;85 '3dz f_Q{$Ѧ48X32l<(:ykB]8) x`x}t1Wya4w?~hxŏg #97>٩yWY/&? Nn׻z:9":$d: W;D =ΝWs 32Ce7GEյp7FǍZqx-Yu My_Y1._=(5uJt'xo łg>}/=`Ρt+x'~P؉㤯&wHImД5eq@G ;wGAuRnjXꒇANWƸ'IkQ]e6&x7|8O{SEUQKgƷtX/?Cj(@s_;*r~)tPӘ'Cﴮcgcxଵw#ڨO+^j]|=R'~G`&bO*MbW,st|Y|mи,{|s͎Hzf4,:VeTZYXlmڌaDZ]:3y a@w69'&A q7tF;>BIݡC PY]Nk'ɷW+.|}d%V,?9w?r43N_?{N8)8~͛. XD-'\Wwo襭NW axdܗmMY d,֓H/0:7 hsell0W٘#/JIydga+㡏O/_lT…ǛeM{kpegT^!fך+ QU!iWH;dS]ï ~ⓟ>˟n ] I; ~g.&-/MY?Wu][~t *=1oC(1Pxc" bPl?'bd_۷/ ܣ3]F)̥ՍIގۤ=)f&}gCG9;xR4|ϑ\k#mLZ"8"~?B$z*êG:`Ciǡ ]2i3qqWǗ!͠~zqle`F33C^<8q;{i=p Rǖ|oJ[\pLȴ9'FD꤉SԴA4 y(p w_u7o\by|%TKvj?Wt6y*__Q ρsyh |eW\ܹIN9mVd<~?xxUdݟۃCz~fh=^ IhQyqd6~k/T^%:J^&vwuT>c4x ˟4<1חtPp*<}E6Nhtvr Gٙ$@5'Dw(q^o(q2U{]܋%{ֳwOk/⧺|sMZOR7ʖeײE}"BV f:2B= Jy/|"{8PG? >GWcEGR1?7l6/jqCYۘ_'W8c%Esf'=xGpz"bQp8㋠TX*`"r8Oe]_ EƩÁZ*1OrL?ir&rH7ncƛ_lfh !sZ5v}ݺX\8 $sһ ~Fa] ġEj8_u@H8v,l@N=2\' Q1#ovm7@_|fO`Eǚ?-s`rQ>xɉIXS>w&}\YESq">5nn>#{׏g8?qSPz;pAyd֯wS^^:/yEwO">4.Os<, {6H3yl:BԣCh N8ЂxRoy_!L yxy+WW, X%s0d] %2dfj>F< ~P;e'o]q<'Ihqi8%2s-7Į w~bW##ru?d_I$i[P-4BY{cgIA'N-V!|J,>[X`E_ 3U^q)@>~ΎʋゃOCX -~tc?xB?Qy<WmrxU~X!̏wR y6)C<nyҊ/ʛ1j ,ٓrs]x/뉿-l Aͭlh& O!\E_25ʪE?a٩0Έk/G[~(a6AJxv@(E@|4g :ݶ?&=&0_x;~hc{ }S`iAQa|8By>:[ĎK$S;Irb"g5|Q|kص-|Cё>Om~5-gQJ`N7yܢR?$Dc#IgK3NVI%x\[zKMߙg}\TG}\0 \\8ZpQEy]mFYQ#z&K' wth-w"80<|cM62Ha_֍v`=\\<09!ſvk+;w,)`A5fVmw7^Dq^bp dhYHak5>Y@Y[YjazPQT9Er~,qV_.x|{HO:0>c%ԛujЫnL^**?F \8y$0Ux%wTsoe?ɺ876S+KK)£ޑo?O&;:j*U|M\ ܾ}TEB!$-# /'?◢,ZI:P yW.UM$xB>y臉>uzClo @7_| \;z~=[?nGI}4<+/}rRajH9VfThnW'ZĒ%k i#^8E{'uZ/U ưa]_{lz?un=wɺWXg(އWp k oy~鷭elpzGȖu x aWu*2q?s׆qQT >>!;-zr>8~"9 'xsMS`γ̀KW/^z7>SXM.Մ8#AtW]$fRK9|wN5?_w>pf\SR.`mr[_|ދQs 븕g'~o_?I(ckr!ɋ/QkW/Μz-V`h X7d^jƬ~5Fz =P pB#%D,"Q__r㳝^~X,59Z^c+zS{N3XTnH^}xk OW/_Q˼G]e/R T~7欿IA=tWv[^Cѓ5M t*rG'.>=s@9}6W-8dlٽrixjݼ c8ފ7UgnvCvm8^gdOgo(Wgg '˛O"=;hp+˼F6sR=N<} &b<42I}`硧XkBrEi.X8LG^iHԉwppb:8q~uKjKXz.9_!ZrVn<{^yyy饗M6 usTWWu1Jļig`n^fN._۬U(wȢg 0>r[S|'Eq n";"] Mm̖|e[l-_tNghp%%pxq4/zW=/q}5|?cg :Y5ܙ_a)m{-/+֔g%BGNMOh' dq>d#kz3UniqI}d%/ݟ y/5WI/'OpCC3|aB e Ň"eˏŋcAw>C2Agޕf!Q8_Y@XA=`mWknvOlẀyy2=/_;!RgNǓ/GQvEΟIIrejh?aMƢby~kpT8@$[ɾK/V[!8f VL36QnjLL$5i)񶼄C/=1;?xx _hZ.ܕwT쯕үOFyPÏǦ{*=s\{O'nDOWX%VO19.]ŋ/^oxҫ9kvyzKӫ1_2g~wx˜RtO%ܧJXwՕ>EomlO6;[fFkK-' MoNVk$XWcAœF1:f\88|6Mi#m~ijS\ ;~nzҿ*w̠bwx࿵/ >>fi4/5*7MJbMQȦ]'qᦉ =5b[["6SIV^WA˂рn2w/^_/]}`zꩃs{Ż郺E?vl-W\zɹB3xa'7wѺ\둟'Q'*͑:7w"ލ^eRqmfɔƑb>5==y. >^g{mz櫯Ny陯zR6ח:8̵_& b:^j٩m2I^7 ;~^t]|'[&]ƱX&oO6hgx}NhI37zތwOxK->o<şa*Ҝ of^P'|^S']h%xPf[Ĺ;akxu\_ԡǸZ?oxZƗفߋOWe'] |#/!h_0~k!>pȵC`vb?˗>/N_svhdw⿋ m)\E=m|4/ʾ_׹){\?E585Cފ57@_+³Hx 0A܈^ul_lr|7f8J!,`"GNd xOR^#r}o oKWǹ~c}9i"BAkMNPn%2{.m򓲟Jpj2ӟ߉WiUHt3ko 7Fpg.~#nUm?cSeH4IvHѼZ0/&`);yM&b?iB+n%-O9\n n+hA0}p& OYk \K~`⛐YΐTTB<g̽f2pԧ+7gտ>1Jau7Pb9j*NarJm|d?@}f#.:_K mܭI+đ gSqwx}IbZ,mAO2pU^%a&Гq_ij<{Գ/][nas \GN<~ڵ_y੣Sbf^iFfxc|{:&M4;M)9.p'_GMNXX:Ÿko;]xo-;,L]G1;3 }Ɨm_7/#p|Q/< gs_|yg7>>HMh5nEYE_ext^go*4E`pm%}w~[(mM#̯ ܞ_'ҦDDPgY|`еky#Գ 3x_]?75h>7)lj Gvq)&KzL-`N>Թ;?zV7O/R y{M?=%ɠԖZCnVlv1> -\v/d|){;P AN³7 8dXS|wOnJj7?~)v( Gc%x#Os+Ĕ Og>FWyKbf@BhveW*9_+ 鶘'O979 06~W=@H=5I%R۱P%9N~Lh`Xn1ۤ1u;/7[ 2ϩbt71i~Ç`nvh@; }a/Nk ~ӏ h*<"q_Ml0Q癓*-.J#혊8ʍ5;fwƯ':ʹ"h.I5W~OŋuLaNC+M3Yk_9$^^p!"[5WxR{c%Ջ?[=|HDW ޭ t/wבqj\f4x(4GK. Y?̙(ifN |.3;;#OXFx|9\:%K r o oHK / _rRPv1]n0j͌'`W=|l{y ˸m^xȑ?/<,N rS@ $1e7װXeܝF~^6K6{l3,~XL-`İ\«<9E/;J.49{G#L,$>ٖgL߿~}fzO]E^@ &.x 蕯勅.<̀1}7N0];5J{W .oyqB"\rXv?.:䇃' GC %MF])~ⲛg8HfO+o+uQ՜8 /fOI51%nVFNd,Yp6pxoj^#ŗ~X-;qѿ/giSKEV쒑MNpR`r{Rv7G$򀲠ݥ8EUcN$Q燰pv +d3 !#'jȵxd5Q Og8%nu3c}<?; Z3|T6؉x/h& 0Md g~;(N;==*@Sȩ{PX.ZCk|u#LB$3`$wâ9ÒCb^O<\lIn 3&tȅl oϛGrt91F9a C|g\+Y㶸8zSXMUj*r6]&97CfblSʌA`V F#_M&e4Bɵ/yt1t\o+Űe?:X׌/>8)s2֘|dPh|IŸo1϶97MOS{] /^ߜ-88@72*'#33w~ap>ّRjz.쇪O(:Li 'kҰ8,t;ޙ3^ԶSkv[S/!-S8㶾ۤ+ξp~x̯ 0뭤l,9cG9E G&(LD](:롉kZ 9~l(|t!1obdK~`6MlM $:"Cp*\߰y`%I" Lͅ#hrB[\H.7O6T4}>35}Hbޖ"Jto #qf] ;@9ݿ(Eɫ~͜6(,70Ca: 78C5U$|;qJXn' 6ěx<%py.x-z%wțxx G\kkG“Obk07uy|?߳KWsPYSmfQTH.vӰ+#XR,F?!n!-D/ȅ삫pȷ%8nn?!C3l8]_bM<).o&LaSIrw/8\ڼ G5>h867jw6^{ c+N 9r@?Ϗ˻Ǚ^836~} uEX5?O'!Ƅr3xc%W8ۜJ_~/8 - [p(_rNo埼& _hgc<2/d>5g׈wKV76Ku_ڽfpQCjiʶE=66붩 sItu0ɨP?Kཉ;^_U8?<!=wR潐m)ZO-h-rpyKD G/q[37m?͏NƼ #'~.cV|Ux|z(2,cMbvͩMƺ-jhRj]Vv5aWp'sC ;L쵴>>Ԋ!~Mb8@A?6ņ#OR<30 ?"\?ޖ4> Ўp98mÞ-aWs3Ó)qo8> G;G_D9ɫPޏU7*h?鉹Qfk8̏Lޗ¡G5a@7FG hYL(5ZJ]x4pڱ`&6qP0 Gb8Ɠ(/o ;Bk%W1{[?~?BV Sgb*2M3+vє`qh?{~e2(6p:Νx-x ɵ{!r͔ +ptެhĿ_Gr 6耵 /ɗ:b]*̫+懃]7/2 [KF_x 4%%~XZs&C7qeݟ:sP#ߝzQOf#DN:P,["9Km6 1~)^)6 /ZT_#'\#3c(`㵟'o8%oDxfxC6W A?Xrv%!+ Q8l<,"?ȹo][ 2_Kw4Ύ9Zˆ[YC6MnKY3XĬ߆i:+%_僋8䬟xS.CoqXO-_r((`u<6l!nIDo3 G)( oh)[+^^pT`8qA/o^' p_H)=ܖů"…3:%Bk*>hX-$<|<}1k_7)kw>KYvk&vP%xʐ(aQx Go'p$+;Xkʯo}TxLO$h楀_8nޝwM94{fQH/%1N5Yg1jϦw,7Uq  3mr48K|OG=Pg7>8I@rKR5,χƋ#u.!a?:ơ B'.^fj$oKWyS*XnW]bNac=guR~p:jbdIz ) 7qfZ ƃN| /~%#߀O)r>HR~8g| ATxaslq$YU^A[JN|}}g9\G''pJpɷ : |Rs]0@^%++7riP?kx/;_2S\ 7H€ rd5G0\Á?q,bV4F7H ,izf|,1r~&u|jǡ謳9xK!Ar" [pPX#)+񭛊l8Q ai79@1N[xi 7C>}=I`ɗh%Μ1kvHu/u6ExU>#oΞ<ڵ~/S^s'𐧫Xw=;߁G,oUBZ y],Z^˅xM95/ }*0b3)gGnWf |z ~|Hv`z<~O[&98NG|s-8x` sge GRz#\?y쑹o"ij/sJRZthyjqh#^scc>.G`n"1=G <9|;cp/r\xhanc⣎9/' 7_PG$E}EU' z(ڐ1=DNq7Wp\lG9^]aJJAx}hq<j^+ ǂ_r]QwMxNy 9 p!΋?)<#oɿwO;fKlÝpL(r&1)$&뒳7Xv_xhro.ǃޠ\^h'r|\6>Jd<)Wk܇Fu;^XJ~0tR ?rRGp\]| yxY"ǵǢ^*cG~~lc@kSԗ7eª*7S$NOoݜ 6>6^"3g__rƉdž(aelhx/$͇>Z8~%>WbƃnhPzZX N '`C<=Ȼpm nųqv'HJpMUx̢4=knŖ=Ȯ bOb"`6k |cO9*%8Jl0C|\'rcl8?%_-Wx/⇻ w o>JΚPs'ViyB$(~kg75‹:?hƬd9!I9q1Pa!IAp“{a'ny&9s֟5/<˽-x^pQwr~:_q4}s 7O`7V̒ۨbS|)  5 Gy ހ3txe#LM3ߊgġ:.qdQD#^|.Ca1pZ W ?GK *3cCOλ%ok>v1IwGu]/˯7'Iî 8%?ŝd\Ac,?zI9p2|w'!rT%r`? DK; )NʕۍW ̯$+GlmyMMʉ'Uo:9/~d{\xzG/?]27w+[Ee]TRGXSS> Y{M55 怏<rPup(|E֖A9zI̯o]ֻɡ6k<>/#v=4}ctƍūWK1_Z|?zO~}}?AQ+Un>Ƨ7RY%>౺A:0,9kOŃo^ ,Ł`Dڟ2;yW8?\U /xbǭ$=tɥ%LCG380UfxwWJpvoAАZ왿%|S/ |yM`:=5ٻ Pw1ꭙ =:Bz_(zA]B>],0b8Dz "e~ClċO؇|!xGjfm{JM܊'5ĕ\I>LGd\Jvp:g*%p4qbKHㆾ^xBBX:AV%n8mxG=q?^߭J s颲u̖Ӧ Z1@/![ٵЬLkq xc,RYZ ̚Kt}Gpf?ctoqك'=w`Z~uyg::|ɿux>hIP?e_HMྒF^ep:}xc:B\Ʒom2'VHꓘn<m-׍ :k@1xbuw|-copox:"bO7YFw ԏK꜅7U}FH)"j'Nv}X]#`s} xd x'!g?Orvp[riˇ~_ůx@`oċ?5dˁzɭӰ7/uHa9 3t 9a /gˈ!~#?wzXmA=dΧUY@|8X| M$;H#ȵ$z?k8VptwZǏ\x`cЭ^\"c8s%.~X KxG\0p⮓APc2@=g#~ 뮋kx\chJ03燬 kMݏc;"#3ěQf.L#'?+@~[_WrTF%e9P6ܬUl:-WUN/%0Ӛbo+H&dYGމ7~%˶1.+ x2xGް2/1}G+LF8.(A Oq([LS7 /fQnyh0-B 'rQwWM[g_YA>UKf,a~'tA|z?"rO7$[[b8*#RCe@kADž%[ȯvCM[q??:,+P|tJ/>V>ypG\v#3;{>_Id*Ⱦ,*ۍ&EE6^=I gKc )10)l1W'0v\@vQGkM.cs󃹠:޶x_5ix;Gqx$|Gwh?3n dAICT1ElOl.v w|e|g9583c^|Vq ^`e?ƍa㐇/q` axě7 Ypx{W{-8Ln-^egRKv_{Sxw!Ø+Uw.qU_cyvr|g} 썍1r_T_ԾZ>䴮>e! V]6;O[ɧA_DągvN|)g` hM3y~PX#[V>#oKBr6vX~2?p GegpE3,L8 5},p/֊Ǜ0xSNh$w975yj!^|%;=:Tl CJ9igЉ TMrUBOҸy: d!vܭLnٛl\[mo'VΝx'֡Oo}k=:GrTdmuoRxg2~8.M;ђAh- &[tmcZSy ovben?*W/_^Z9~G~㙋@7%hodS6OVCS0=;Ob^^G\#t <~[A.z?M *ɪ2DRthMƜb#^EŶ@@Z=4[x9hp9C͘6l Y ~hcC`ցgIyI*d`sSx׺8gxV1AP3>"˟T^?;%}\ s_b4I;fV7(974կA7 e6ꒃ̲Fis(6qI$?4|B|G.kkLH-o,V-\ĐFM.|nH45; kq;nGo @\O[BIb%5 T& ,wo2#Кf>?9XlwkxqclV)<p+\݌l8x< O- 2 gDI劏Aˍx͎< +>{"-)Zwu)>))2H(ٟfԿrgE'-O%kǸW+< oiy%\↣|,2a=,ug$~$!8[5yTV@(:=(`g'?N;"m;>'RXoGoʛxC#'}O&\IS^fh2A.Z4KYpSztZbC vQą:#]x#Iִ[sy G;|T0?(`-م7 ޚ az+/gƒ>#4şm:!ȁ5 B̯z<6G]|[/}尉 $97~{G%{tVPo2A;ZyrSinrYC5}$3D ub2rPXu|"_ ,zWrpu+V~{%1.\Uhx&PK^)Fw,O`3YJhn#{4>uڮ&>~Ío3N(4@cѴ.Jp Ӑm5Jjh1:\ˀ&kMM>9;X؂p16mqT8j(`Ljcj؉GvBWo_w8b4<or! Ǐ"x^.> P~:;CqÁyrHGlOnR`Fu0Y?vb D>}KS3ɩ u>^.ob2 f#p6'&7à .Xy"B73͏c *>v8-T G̎gI;^\om[Q~q+\xk?,pK'ʳ+p=$~6.+T0c7^m̈ɱ2T ~@aFf˪a۝f6^V=.)5%d:[ʷu~wejK/f5,g u%A+*tPO)r㾓֍}ϝ#"'<| ^O(KٱU'GybQˬaLLYwI kO}晜 7 t W9ps8JO$PŎWo.dVGk|w>#&NPhxTYx}}6o cGwNHM'ɌF2m?ֈ׹,eí9dyKj^,FNݬ$#uyhiSxx$!}h o`ƣ'83E,Cʯ԰FD0p䁖/ aC$uФL@I|+ݖ$VbɃςƓkMf9ܵ#%uv^ P)K^rfZ(_`O$')J(<9[O/q[fx|f֐z1IhHZSí' >qNslr^q;ϡ G3~cˑ !\xy%@4O%Yr "'ֈ{ DwCߨCop"g"YMf4RՒ4[ƗTDj0P6٠|I͐RyeOw ~īd7qqHAKPY͈`eȼжt Fǁt<൝18qqOt3F` ʟV|-̣ܥ4r 8q%rO}z-~<`=F=Nی~|$ix2 Ť~6^a|.}|!} ac)S7 xW7iTΨBqu~S~jvPr Ń*5DQ En^c>rIH<X=?*| !Vʞ _xe(쁧‹?F@7.Z@op,g7RF<,'tNJkSO* {zNOK b0trFˤ;!FoT$]-7%z;F (2d (*~XK ?>xr$fDuCNxG\<=צ/?_^oRFe~N\wBvyMNGGlg=>WYAo8( unƋ&>?A]D%hr&#&)~@ s8{-xV 8_RxIď]^k xj 7늯rIvOd]YG]oq*)'I<3bPMM8CBf;4nfҢ WYqgV~3'x  9TQ D~vA~spd]W$ sh\Z{~ݡe;27I~ٙ)ů&&<1tTxKoč{;³;,G9)Qr4 Ongc켾m|3cw{ߖ-gʭy osL?M/L~ax?~&b@xYwTځoFk7jd>f~[WÓ&vbx*sc,8ZC%`ua;ăql\V3Iȥ=Cxbs3WDb\XA!HrS@Ahx?sq7omO5pkZ7a??7}W&D_ Wg~SYA=gqB t ^z͟1`<btA#3(|`y'?$_{˜Z%z^lvO3(z@ƶ<ںEu+-~r`T C1d&9bKn&?|ȪM&*:v0W5WL(<3?AY2۸C><R\:p`{xJL~b!$^-мTh~'מ>ZrDD`Xa˺V!t(+x]>*\_gyf8j?_4؁9~A0@@ͧ)}ᒷ;J=y;O=ſTM/1G;\n 7~Ԗҋ?tC,9Cr<ܙIR~ӕ+P:.oC &9'A'V9 8qH픇@Ej:F-$E\ Ҁ+ۃmu{vNC8(r/btIm5] ݴjNO cs>h+ E'fE f'yw,|Ǡ,W1+ N˙uI~|H刦OLL|벮/.LBˮІ%vzm/c?F:4>"`=fXWӁe.|$y O~FvcH^M`,vEhOk\ ndsx18'u9@-ɓ[؍Vp\#Qs=yM`hs]'Tcpe/7m-/bҙâDSd]rZS|g|5>4EW|'=:~US8W[x-^X7r>ͼzC53[JGKDu_zdzun`%qacwMf,yUqH4ʐog(3NC __ Kggh\|qLnP2[>Rt%\@| /tS-?A|ݣn8IZ+!"YUc/ķV q:P6Oo`p ¢%(f̪Bٕ99Njh&WpNBNJO1-gXDs\=t]HӋ@G9W;+aV B1ßJ}&-vsomA B]AI(kCQ{&: & I^$&)mђTD@s:JQm# ymqO^"Zl+l=`m\vchq'U?6'\3/כ.>:=X8ZJ |A?Ÿ<v&|[qWk2Km>yʺ|ttpOSnI%@BOfHL'ďHT:h&QKCGyU\Ö"Q{Nj|b=v?Lx?~i/Kj:,|Vw[7g2aϋC|W}+ˏJr4hTGIqӑzalVp$?ab3GG`tZƧ|P,|d*ف;ih,z|gk5Y@烙ohA6Ux䬛WBfu?5ϖDzD@}pgtD Yo{7z(<:s:n 4 .@Eagas-cc~Uz+ڸLLiP'mǼ 5Żx F4v6.yI So:HҒm\)P,w܋/>VԸǏIo֜CkDG*y̩@Ahդ)l9TpQ#XLEN 0wyncq FѓQ&|8ph>#)^CM7:AO^s>+ȇv*:uDkqNތp*;O /WD ) Ru\/Zǒ熟|:>0HS\m49DaVMy'eQ>s8hf[vMѱ6IJ8d)y/ P|eۀ`ݎ=~ȋxV 4岇8 * 10͐W6>yo @|7]a}"q%xT<4~ӪZӏ<-Uj슋_5f/\g4oix(S5Mc 0q`((#~#j qmjg>\J;XMEęB{5Pܼ*X'e8x3ʉW|Ɵ|0~oo+Ϯ (`^E㰄Z¦cAIm7^ aCn?)ZE4NlHvsqxT 8h[| h<<#xoPp m$D!Ƭ[ҩ~|ӏ\hiW_\lg&:,%3hLJ]pmm|e,N|_4a nX@/7Zȳ?mI9%o5̳aOC\heG9M^#z%<_|fW|0:bƏqE3L zk<X1'E8 :EVOçF9|ד_2['('/D#mCr3o9 C8qFp)r|gQur3;$KDFE9\TU8IT릪?=mb:w-1>n΢@p@}Ơ6IŬe=L\T90ZMAG薟hT yHoa6%6_Kρ2ya@%n/V@Ap7{;ox7>$EAR;Iiѭjl볢bpPEQW`ȿiOD;y0z,+Q +yEEGiWT˝(|"5o d;uſ^40#ҀH@.~lyҟCo@bMe/۬bZuk;<Áju^Pu}[cj8- F@s&W0hN `tTKPZNPvY3jm8z~78dGU>EԸmb˩͚qPihGq_T</Om{fobIaRf3BAp*#Dcs9vpvp +XOQ7bGC- *2|=y=7kb qpGsG 7Z6C5BI?jNO*8';("u]7ҖG uz[b~$%D:E…_]뺹NOzcwd~2 9k :;[r,uBE,n:NI#'6>2΋x~YNe(;'uun1uH|,9 &?5rIѰ!Ԋ7JrasnǗ^Or" @.o_8ZZǺ\YC:˹O_]nNG.%P>qeΕ`s>P;g$C!ڔQRM} !SP>/l~@Ufd)@#M ȡ _|`4E;:Zl ?_㇝6)>YKnP_4&pn ɪWMp|2 oktD AXWkƭ;(ZlУURO}4t׹DE`r.o]Z,_jo(vi>y6> G.Wߪu嫾9[Cf9wPq 'ȟ.[]ff\*2.N .\`:g/KoIr֋}}^f쯙 5:QeR?wmQ~XNq8 //NVb^<4|GYA e2P%cQ݂ݡ!?G?KC9v\x`lz1 9Pye:mq,r8v:p❼x<ژiF?t*c? "rX"p-#O/y%e2OgtN[<3|'55uHtAu6b!\,  ?RXf<s?q{pZ7y7Ys\\:ָ]8E;BOʃray҉T*=E' MJtf_:? y_%5>y!\V@|cP9+80`iW[$W8>C̀Xq"'a&Tx",6sB빮@^=}we{rոV㯚9dƏqBt;?+?r GwhKN,yRj P舒flrO2Pnp_vgVðY/XFAJvNeȇ ˉӀlpSkIuaĉc}X71711'= " (|`W'UDa bX!tq#Mq9o3oO:X/l|Ƌݢ*_nv6޲X5 @ RvO~N<|<urDE[̙ϺeGᨕ[Ptpݍ{ό͛L=ww,xhǼc qpq<ԟy2Rpi} ;˸'xVBdk(b~3|k~~dmg*ŗKt 'pΛFXx[1S8̅m^4o]^_nHaָ`&-WAkk8cY= IqI bFEXN^Nsh\M3/ƕ2i80.Y1ep$ŠmɿSwҏ^> CC+xѵ ## Dڛf/x?mb)$Jo8?@ m 5LA㎁+0Q/BP8(C~)̠U279kKy3R q$$ux!ŒϊJ^y?3y!87Eޕb'~6<5+S+/ZyE~{6} c&1FQZgA9`L̤j k'r69pLph$?Ͷ59FMfQg:WIAa{wwBlo7I7,'x23ۂ'*@YoD7_?U gTQ+}wxU}+w YׯkF:tDZ^b\iW1I⇹U<%_+Z=n>#1Ѵ/ɛFn*ǿ *Nm?0#|-~w7gC&*0DGxiIZ($Aqf[rh$)h)*V!ml5A ֢d_I6T|F\5ɽx0,޴ClqU q[Z-kV83տn\{O/z`^U5<:&]CWM|,( @똱8( q}#:w~#Ofy@@èx(A%fS]!Ϗ;Ro9Bx0/˄@Bjx+ ܈̇2P2/H%/~gh yt=!ι?|e ̴A0@P@vʹ9,2lG'EV8$vWc'!~evD8Haҳx`3j7{-t&8T90]N\\=\P\YQgun=?Y9>Exy'$]!4_KjJ4=pY~sf)yysʣ_H*E kxDmz(OtSB%dGf8C}hp/^_dI!xMƽYDWG}A)j+,Ag594ȉ VdnAHkd9nBsĞrO"$ʜqap}i59c*^rvr|"j^/g\xUMV?Y\ʍO?yݙKpt_5|>47đ㥟\ | 0 gd){X7]gNtPW1bWG4$4Nh/٭0[_vS8xQ:ӱNV+|1y ޴qo^u=PqI`Ehd`^0Y!h4Ljp/_(dpawGj y<$ԛ ^@݉^ 1'P+Y~WZ9[/Mշo@5_J},Yyxo|rjܪ0_+q^L^Ԑ7BJyyq؞H#Q$/j7K^R8˄Vx%76k諙;O v*H.ێWk|^l*;{#{b um Q]$f%g!X`R*k/ioю`qn vSI.lGN@PNnklLtdDfD:E~cڌX^@˳u˟׉w❝dsW5;׻8GP/tv[:]2/_y4īī,yoGRP-Y4~k2,NŊ?!JƝ^us'C3{xzލʉ˗>71V(` !!9VP49",? d>p'rI}aH毋VꖯhzI( r?i]ۦED}t+^%$|_?zᕙ}Eн~2fj!^ G;˛z3o+.O&oyC;$h+V~2%Ef.^6o^;0W>2Ynr<üMʩ*Ɖ+^?M V DTWA Ԧrr7WeGal4?WA"(xla J,<Z8젨b3er:veN5'I˓Ss-XNʫI>xϘ@IDATLl`B?p!sqVUw^  [~7!/8#x#wx++W_͟%+V;_;.89ʜ>?ibM|\3Wt'q;>V<\wb7 Pq#qKÛVv6n z'D-p)&ߑW GO;OĄIxiI<+5Wlpex)>I@yiw2qM89Wj]X=zUqzV+qT$*e ]t &'Olk0Up!w4 (V݀b'xA?snί9J7+->5U~՟m@WOQZ%W~k/v|X\סg]\|7/|+zϞ^E|P̛26gG\_8%Hp՟x@Vմ;/$|dϡT~GٿO !ٸ~ϗU5<ڎCuW<3j)e>  tލF$H .lBȽl'u/&-VE)d&Ԝ_t6YOx#ߜ6mT81=3Gexe0J ;jwx1Pr,|#]*wߵ bWWck}צ_y@cCt9>^n][9\?t}:ylݺչpzu׫d/ *8xz~=bDިzL d~{1?`/:P~-=,gKnG=VJ87ezܹ.^v,yx[AGk Rvߒ=Cաܺ T?L t {Q`"fY{x2xI#ēn!,/zeߋZ׵:xyҖ>l;FxƉL3<vZåP fIcv~Φk9oG7ry8nƓ9񥦝1g >^G|q lgww๭ĖOYad`R(، тq.JHT£&n𦉚xЖ! kzCAIG͝ǿ9N7u #Ћ65e{~~QZND{?0}t¥ @|ǯ;J.fkrx rlvDWuD[VGN|p1R'Pg5#u~#sLv+J|7yzꫧN'VRo)߯_z5^پ꟰TpݶuO$5[ڥNl<>q"8b3ƃ@]Qok9ޝҞ^n)>M}sx~]C[P-Q~_qv> T?d8>~ 6gFs^֝CzDR<CWu6Ē>mM"U8Swm FU_4RA<0E5λ? v:7+-fDO~AIsiVH,Wd^,۞ 8Z-B_.rb[ׯN/ӛ?E7wLY{8 tpzF>@}q7_~2$rW-\Nŵx!?,S+(n-pE(%NsRDwmJVylv{iQj9!+mZ~iӛ:qCQj^5ށ3W֗p^蔂x#rH6y?5]5)M/N,y< $$*MF `LΊiэkpb?X\7c pT`KojŴ'u9^kw8=٫6x_`xwn$ʘZW3rps7}ϯ:jyXc)>=w~^=w:.e]j18>pҧfUaFy{h:|u~NcŞ2ǣMTv[<2.#Q<7:Ȏ %=A< FѨR"êAIDZŝڂЂ Q-JJء񧎂D% H^́@ O`&ǟ-'yj.^#L~eFF=ܡv㇛Gv'x?p;%K3.|Z$|iz=}땿A3oaQVK<Yz̺Iyo{4bJ^K_GћUƋ^k~ ~oÉcnV7ƫnH|^rXVp<Ѡ:ĉفw9޿?oewq<?&D5h/KIyE'B&&T >ٯN0vjc@8$w!ƐqWh= ԣ8ȿ*hTOw΃ 7_fX7;gz[O?ބB韻xj[ EPc ֚<M,(RI`^.v/s *pC-ۚ$5e 24"8?a\I"oo'\!=QdE 7n%޼' '*k<w?Y>|z4m[`7=Okݴuj=ʵ4Ǖ^Q[h^{}ZYxx||O<}m3Տ(C)B])4i4\FU]3*FAZaQ+ˡu5?^BF~4kJx{I:eh@8WSc?!L -0=}-Kƭ9ټgW۽Tv5ռDɱ*H0%ILLpN[5 .!vЪ &?Lj/LxsjxI'i@ ݑ"q ~ph˯Z4R 1ffz6?g^e-Zd@v+L^\;\>_ϯ&*0k1}skyhskZЬf) #/{6r㌏E>k/z׻Kl3|Ow< q:?ZTnWc8Kg 5Άmn} ZW8|ۯ*!{j6;zۍ>qxbdwwGSSyhZMjub2/x}w'&7(=8*8[n :GQT(d8X8:2X-xeMD?`Hԅj̪> *a]/bP^/Gt'_ 2]uӓt~}αGqHCnij$EPzy߉Wlu;^(̯q;5Sq2_m03L׉9e?+Ѻ:*_?g_{fg~/!C|C0nz Dzq gQ*c̍Z:iJ椀puvtSlҰt~͗Zݱ -/oQgGsG/FJVG@n=uG;‹l85 8cƽe.{`W+F}|'* ^4S2 ū]׊Dxr+[hv[PG?ʖġgAxɠX}{_e /&6%ǩy@5㑽ǟ~ۭ|5> jg/8ڜ_V[ڵ^*ҮyeݨD2Z׮$^L.\l{Sk @tWrA{|y{i''cRdzgNL_|#W5nz@-?/ޘE8'&֕—l#jI3"ÐMZ>4|o ï Aoļp3iiu:(x*FEVz8_ͫ'?.8g0|[ug.yS95{8ۑxm*Cn?i߸Pm/^/Cb\_x[cBMN5.q^88Hs+C@׃&zKh3Y4vdWMǹqDm^"xG詁QO[)7YoMo1n-'m7ܝ*8Id^-|DG?D %2B5t;uSx{g'#ΗD`)o/d?okj3c:S6ʣcusptg 3 |B[R܄H*Dha{om{?0|֍c܅ɾѻOyz'!\;wjŀ;<+*R*tuh;~x<ߠ8Wl75>w~kҵD`{8/v~ʇæZy|Iԛpnl$ԕ-|~%km58ک}O{>%"{;=/<:֜kutoykR{ Br )w !l5kupt`MjUqV'Ր/RDW"1H 53oo~e'$KY"DඏCy _?^%Knocʼ?Q*V *k.l`\ZN=jzqv~$4mLF?H5Xui  |e⩭/޷\jds!SS]"*Aix kh;.M,&b6Ud<ȣԥ/3i΋PXvnNTnɗ=z~{ӯ#ӯܣ3^%K AOGz? /+ϝ[^nmel" 4z!Rҫ]p鎂{^Iqʺ^U ,5%5{q:_3,o,'[?V~bg@;3<'  6 nmq:&cfoœoOoo7v?yVvyig/=?}qzoETN?)MZ^PLR]P@v[Ur0A-ԋW/~ֽ{ @w@[v&>p&-I AiqP\0Ѓm[5tSO5Eq`# pyjWm$=  o}qTx"ݛx$ x%(1;yQ7w?L<|~1ŖODț?8S^*QgZhsgs',clSKz/88OblL§nݛ?1O{FXeƝDETT&,q=ph `e{Ӑ80tīOJLo{4M7yN=6~پGOM''^3_vgg~ҳD`nQ*r\|wrt>U }u/J yyp}):2-EYx 1ve/2} 9׶'x___=ᣕl6*-IO%*ň E[)9TAT%LNqӦ)MJ\U 3H#?4D.|hG~^^~LY%Kn]Gx?C$V'\l߈.v&aW>#iPT^Ej}$-Bia7l~bݖ0xƿ+p$:?aw67nu.޽o bIIpOMnE8`+`pC NvTS^Ih}D}Q`g>> [v^CS&a%7Q]i)H3^$i? ym-{ K ۋ/M\*#Oso@/gT.uԸ|vwh_]t_ R ̨N`\%HCP3z508B.ǁ] zT/kQuoOVNϼ;};ֹ,X"DN&۶S'w/~Ҩ)us>Ry9.aQ(rkЍRX`ajeH>;5q!޽>Og8VO-za"1ǠkN’c!*낟" mh;D,꒻8V43T|Pe4xKl+LJogm%Knmm8t^eN vvsٛ ZomMpvXxWEX\E_Kr~],;mF;|}!fЊ A H3qT;55ȴHңeOImGsf'Z/2Tzb/|p:'{Sqٞ:{.9nMJ':*o_vpeJϙ< FuZApѓO4w+8v.;.{{[@ۋ#qa3++aDZ m#ΩI HWx08@l=95mqE=({xk쨛S'zG;:7~\gWdfs$?<3㗎v(—= VlVkw;w;s2]pq3AJ;{t/w!>/GI.su>?X<yn#׽=A5fD;#!l%ᙝn)ڻX4\ al"N@v4HAY"f ֓ʑ`ouANJd/̍TS`({(ٝzoZ X# ??χcXTyfzLO<}g lGf7^kkvי3|} [5rSu>;S vWz%/oʾI7wezg8gaָ0x&o8"8fl'c(fتFgsȁ9|Lo֥~lř3&Z8H# w|o~n̫K1 }Q9rglݻLW@F|>@cbNjpAmD9m&Y2IDH$!\0)Cws GfGwt}wM_g_9}ɃQ` KY"p#p#.J9+r׶B<艁VyY/ȳiGotn?C~%joc K0>P#pHe8s'6It~EOH̝ EAI|#f±MTݯfԤ}#{h:'M5a֎rR{ @q#~ZD?͝ﶷ{!RRMx%ا>wՌcky¹vYmz{lf`]qȒf>O®c,|w@"xm_ALRm8sȼ?'@/\ÐCU4MA&ǜP#6n99=9Td԰ɩ }WN4ԁ'_B_񁽫q l-eZ.t&\Iwt5`oWFU-\v x(P_C0o PGtt?ǩ57Apsgs9 (VG$9[BI#,44$4q,Z9i/otv7K/Uݏo]vMqvo~Xmt8y}6=۟ɱݭ)Qk?<[.'MՖGceFt= 4F Eu4}˽6{$Gr]yQ{">o,nWxQxÁ4hHdr@ `$'!zG\ FMZ_(hE'fe(p6|!pm8?%Wë|+G` Cgyd\/2( %\%xzS~b`}CAOeBm{~E75s;;!;OxAm~oz cx<8|=`cם|7mɓS '/'<UdGc*\4&ʬG\s6;<>rF/Vo`|tWEWl4|K-?\^vi:p!ɍ;s&2JґN޼9 k 6sM8pͅфވkp3ǻd~!s=;.G0SpP;nde]A𞬮,&nFo3A?ͺFxUFn8 -H|,7lWsizO~5M6[_o^6>1x .RɎ6Y^&Lޭ|]63yڑdM^ŕ7iގf(0;K,ڢ6n]MˊkORU!f V3򈖴>7o- ^.ݽf-{8DK\;<,sAɣv`}u#w/vs[Vnۂ8׾S;.74/hd ?[P{:7'`Ixӥg8!7{{;?J0bc( }7_ڔbIdI$PjmRx"zQCkxE"G}y]yZ*b7]> 60O+jSgґ\A;觐/ѥf $o '+:ķ(ݛ?&{aJXAt04FGpgq X  ,cljK^o8lc. 8Jߢv<{i]t%,ߡn^Nn 76 ;/6ʴNMb&o+O+~ 6`lhq6|GBkr+&t*tÑ*o+XC}Pd!Cn1\)MӮ#W>Dt+S y]T>8J#~_m&jG}x{7S&xllkOW!ͯ(1Ho/:'ϒğ\;K|&|!W"(یmoΖ ?(b@Me; uo*4dķp8q쎓\uB=3'5~GcXwEikm5D%+FMumm+#a$>j@yP[~4r}0.}$%(ȯb~pov1Ag0#h(3!jT|FgЌspHakpX.'o>[ѣ`WX x'Mw.䬷7^~'q̳;˷9,rδa_ocp:q>݂4mQ#WͿ }"+C"]CHșp*T@0 ?POu_ oy)x2HQ 3Q_E`T JL#1}%dWDHf[5n JxlmǩRkM$rש5wb{sS>9}3|zVoZ"p;EFnTFjQҸκJ}G#9S55IPUһ ~7)HD34s*mݻC{p0!&=(| &j2-<9,U[GO]n X|mϜaׅEaIM*~܉ Q7w寯]KD`liuX=YLe%צݾp00vsIyGc=t:޹/ k7m߻LT* jW'$u!Q`EAAS;/ٰaɓG-,89d?V  kuvOw|[L/|ۘrC}-}Zھ/,PeM堜HZuw>&R*/+*FepCD]U6e:-2˿Ԧwvf_+8S|[]D j9X,MCHz Z੝TM5Y AObOj.:°Pf>.tߚ~եS|b#=Y34nw[ w`wn~-KY"D'm+ΉQd]{!"=;jcD}fK5W*NrldrJ)@V)n)E[R 0g8Wm1_?vًAkUjPk|=]}O@œ<9QzhaiIkK=Ȼ]]NRG;M7}wt70^oצ/M۞}bü_Ϸ7LwO%Knrض?p=fHj$RIwW2G&v%/<V~@Ǻ+ Plv#8;)r]wKe 6>H:_(I :ɓS Tb^^frrf7 bAFhV05iǿ1߼>4Vko^?2OkӶhM|j| Ec| gm{ܦ^D;r|Oze _~R.{ǻqif@8}j\iwj (( nN0 l"/L'Cd=&؆61Ax֤WVUTTZtm`uqwM~0On 믾1O_]?ltv ~kWee+ ߢDG"94+3Gf\F\$l#OoCGi;|Gn֝}ҕi6E&A$ * -V`IQ-C`JbyzRK7(RK: nkec)8m*pnJǞ(`g7[ ,\ ` 5?? ['(px4#@IDAT'[sL&8Z8됢 5oc@~H,Um?YJ})JË %49l/nݬvC\4N1N5 59=*?ܥu_Dv[?gzB*=|&ÅWӯ}uxit_I+Oڱ㖴uۖ ޿o6|Gzn/Zd?\6t鑒~=_3̻23P$ւQ8m8T>#p6F&BC4>ǝk:f#t?7NYkÿ?4=?b [ʄ]'OM l#oSd_ ܵ[j^6@̜1U=C?ht_ɑ~`RM뢈vKoti;L*_:ʬY쇭{(GZ~'ֵ7ڹ|M]O}=ـD]~58}pqQHoo{DZޚ/~5Ji s>:vGvvC} ~[k,-_9<-k֮iqPVtZKPN:LH1' Lhg\V%z:E+@ R>k"S*ƙ{dXM]Ӂ{N+eJ@@8 zԗO_~~ p:q%K*:>gLw':plA/%?j#7@ { J/UGHϏm3'hHJI ZߛvGGp, vm*_qr3_v!fދ/:ٴxC_inEEEFG6Oa=*׎ǦHhw}W> y{l~˾GE}7#.r3uE%oG=Bi`}t}fbAV4&-&AA(hsr/WwmE|Jʐ1-lvPƤԋw <ЀHo\t,9vzsz%"""Q"$'N9?̀=r( #y#Vvؑ:oP^(LR(}/*OA.Qsr2R&80D 6p㋝ْ fUt0&֓m ~VЇqD|ouKߕt.FZZZ6Zwȃ'J#Dz GP׃T.cP:f_c/| l]E>_?A[b:f0sBc, `Uc O>[qK[7͔B;:ȐGĠvW@>1d)6^M6)A!cI{#bJ@Ə@`&. 9s^sN <x?qsuL w# =w>&טLVOda2ڍ oS\HG?Jc+lvPw1<}~0J@@M&!y鹗Ng_z-o5-35D>f! LL%X"WX`u{"ag֢nO]O#o|4h97n0&e ʦLs; RNla4 & a$T`uj?<٩`Q4٢0og2jlg=6kF-#8`"y<`IOw=Ln -pU Zc$Q@Tu*z(敾ds/lz] )p^Wl=_`f_~BGgl0l2`-;vޮnNN$XkQx{+jj[@լAJMh?v!|οnd+-[؃|v}ك|vݚn"p H;~S;# f\|){Xpr>]}{ۿtrl?A>v':{QkU3 &=pXNIzxjdd0@x/?N߅/mߞj؝q]v1aw!@06E|uavo<}>zlg }߫Y LA0!F!W" 'yͨGQM' F 즜ObPLw؋Zn<؃Gi|-"p VSMk^7a;q[^QBAM_2ۍ䗴~8%RH>P֙w{Ԁ3֡nIύ*;?="'DMhE` Ab(7ݵ3o.d|4p I4KuBI8 /w4۟򍵇33tTb`jǓi,{Y-:8~qen7zGh * b &nveF-o? E#hl8l)#p慯Ny1 5N0w J֎f&ÌWd(v_|Ц:&-J#7e?ʃirN@7hJp]]SL IO}-wQ۠CwM"#tʺ8}C9p݄W%AO!*0Fj|Lv'[z;p0 x ئBMxpF(c ?gfEj$F>aN!uڡ=ACB&fb=W8r2=c;!kz!7|l c}LTZתx8~QS*@KT-T3AZ;gF  PjhX3z*` 0mP9p] > oDXQ8ZDMӌJ&C]uPP#6|W~)d/S0t9-W JB{S*^σI`Q;'7a&׃fgԍ.#x<2ф7jW&iQo{:{LgxI4lr7i> FʟͤHcW||az2n"o߭M P*] xO=h{` @@br<2a=?!l,4/_uP?-p_4Gi med)YӤ F>VJ4}'-Njɽ1"0 vჀd .4p\ K7H.F0zEaӉ{ ԓ *(/ALفS<=%M˵؀RfL 'YՃga(ArDiE|&թE({Wm#h.'HWh'Pl۲u>|Sm99(>yYAgA?DcѡxH>ȁc5P-*T/S ܞӅ5}Lk+x8烷X!ncF`l#nC/[(v8 2_@:#AŏӀu1^Ɨ~h=3!O/|\y|P4xPg|tǺHkU̔L̂#&TNkAB;HQ/2M<&nqUA +CMNGX.'J,"?<ҝ\ka4n"n `SI.W:_&o(PtThAhU6] vE}iUS#c]_>ZNuOv4H:~{?Rv_٣I׃I *J`gsdZKW^hN>t@/]A')c}'lj7=ba'6h16ccXL= 6cb-۷sf59^~ 3ŭ\}v{:.pNKKi>vVޗ<:|ů#3;{5Gb^?U>%BmOa|n%ٸFj~ Cpt;$nL"h;"kVsP`ԤnR>ueh)Μ8g.H`/yEӗRLyUҏ#XЋKz<4yb1 (  pȼ&W5({=S5 Ъщƕ{`cYT̏u0``p`AF\bAD#2A҂Nt% ܬ.z/W\9򟼒_^~ljp1y>)p=[w9|U?'s>)v>أ'Vq9MF?!7]Y̍}q>?7qp%&KAg0я aNС(W 2LQ,~\Y#6L43Qb8yn?֢Zi--9`ppBb!^+?t:s╥t6Oph\o ւx~ކlzM?[&U^dZ,drmL朓ɭ ~\[QN'zihy"lT^:%d` O_ZN?/jmL\&ίfཱwQ|5?!G`?Vzk{%/h<3t`P@xe;~[ ]nML'̘E`#X>9&ل|g>t{gښZZZF-\I4üm.Q$K@`%O4فXw޾uS7p_7+>ؖMuA|LN@; 65G~`|H_CQ]#Q$G3QNh`4ɋe&< d+Z<1l98Aa~+d@| ?%^O;վt';+}Zc@@la_lݱkBb4`۠F"}Xୀڸ }˂gk}$oxwH쇀a$2 >7_G)P4jG'm6vCc+ 8{u2g|݌_Q-sKtny>E )qu\?ziEEE`|ޱk]{ՙ4r6(U;^?([+Ur^8U`k~*@ 'CyB /ƅ~$0ޠ>YY^Z('O8t<=g[Bx$Yѵy,vWA5;<?Pղs'@°du&vK\ }C@@8Ԍ#Fܻ~qg_zS8u&CyS4ǻ.) |Yisv;`'HV~>1V|8C9) ;iڬ9uLzq5m`37I ̜=QHC/f%,/:|A!FAUհ~2 Ǔ4+l~"drtԎOx 幣ҰT:[ZސغsW-o{z muraa5xM\^x#87pIpVU_?_j \"SFn'p>5?"bcRn.}L*<0-"F'1 %MOA `#d2Ϫ6ur#Ң}Bżّ[JaO?5)Y>/aߝ]C5#m?z-wޕ<<[kU |1;Hdօ@]ێdvxOw~㶿>A /:uzG 3|R ?5NjE? 4"<07<'ٰ`QAbĠsGXA( &;L FXlFqs䛳M};h2-^I_yp} ^8x NklhX3s7~/#5I?kXgtm8M@&MAwPn=zc0>1Nybg~{T18KԀ Έ|b)b|O pj+ܺl@A]ƤXP(OS|\:$C_tU59ijT.aIMME#ZF}ɾTetg@+ 酧_J{ߓߺ 6"""08~vi-SV,.$|Vǯ@{}OO~mn?۟M<󇏥j7` <'>{: d7(Ǫ'KSwkevu"x&y{ kSuS"kGlЯ<"H_/fY~m?&z8Sztؠito9MCJ1yCElZ:skc}ۖ}䑴gl|׽5gEEE`DCϥg+xgyp x w*(g^~+^&{k ;7yG(uHǼ#5aʙ=|ķ{&޶~׷gR{'pѫqs%36JTCUXC >9 K3;䗍ΤG˻n/YOf inߖӚ}kcϿ>ihT;oɴǫ{R$07 h!x8x-~~&,W̏pW,Ê٥=C ~ sW +J>M !@?'.؛|0m4q:QU)Wj#dт࡝qd#ty $r t8X>-sX44/"k޻{g}oDqGw}I;vܒ݄a="""0 ſh p'ҩGUpҟ,Ø>juc{nќQU6Mx IbPynlu" ~el5E=;n&@esgk}.=rM;q _,-0Zg@@Ơ^ӯq5n |qӹ=_~ža{cl/UoPW~"O t:_~~R?G!Z$t^ TihbV)muM&L%ٹ̆LC7g?I~~Þ~D< kSz0VZZZuj1(.]UH|$mr_u9N_8 x#^HX Ɛ#Pku$+ŮU wj$شɞ|I> "St0`V?1ji7Ω. !M"ޞ Tt!PJw5 BV߭N|@%z n1> ا[=~| um6m;۷fT.Vl&Oktnf$ 9l_cਫU wa|n|dE ? Ȱr&8u>9TTorv?ԥu &+\d3:"Q 9GzU 'N3Tɬcf ;X+N;oUEʪ""".#p;c7۷.%',j&d訒7.Á K mqˎЁ-^;s#]g4g.MIb'k+McmZZ/%=sy u 'C?S AY;< V~v+/6{g=Ov \K;`fMRCzP_;O=*-/waW [ihh@@F7N/rxG5T <8mi>c!]Ǡg=>xpo=q(G;WluO=7j|? ̾t?Slh{G-zY}%?;rb4 1KyR-he2JKLH9' C+N03 >Js~!뉯.y9nGvhhhؠ·߾6g+K͸g` c%΍F \x]? \= j$u *CN${}7Q٩?%ۦ~/;%hG 'dMs"pA䱊FNTű[;*E u v]㧄CCH\uOdT\J@@:-]M۷xF _$G5]IC.ĕ!{֮Fv~g<.:).*yz \犁萗  I΂z{deY6uytצ[L}@xI67G46\ ֣^R{z\,>Ǚ'|FL{? *l\} ߆ }q8 xlH3NK|uLaOI${(2913$Uss{GN #`2o#GwOFeD|GN FP|vnjsKŌPow~%[7nSob}_ڝgukJ@@ cx@ЙWBKiQO&<ώɿ8K\w|f2abu[LJw=]?Kn>y`-h'-ÃqH0c0@doXu5.Ms/bE-\fIϡS{ڏ8pmsDVǔص=}G>ݲ;23Bվ^c\G>.ۘ+ ~ ۳D/: ,9;Jmm4LhF{E~#;PZ+O-ȡ1s8L>3wݾGaASJmcD=l;A(>50fs`U|Fb'{K h]IT[mu@eۆ_oy>--%͒z+uaoܙ)L ;׸ߙG  ,`p% :~vG#}y'rt' dCgeoB3^~z_> magtVUI)$`IqKϴ(0X"5X pX+ K}6/<|oz=!&Ex?o:ZZZnpwn| ߂Brjzžj?cGLي^^%azk| y$\!Fޡ]`䇰9 W$df-Pl|bjHV4+5уMvzdCIhl?fBuӤuvp]hujAQ-2P6PiVZZZ6JY.`ؠ>]H`RhI4s t WlXQ^J^vB`@E/fO^Vϱn_8d_Ov$`rԂbh3>)삟`\eĦv &KfcP0 ݷݒ>PYm QhhXvao~[;k$\g=5x]2YQv`"}Q@ץYvթ`PbxVKt _Ymf$m̚I_d%:1 eVժҦ٨vN8 * #%dy4 ,=v`Zg@z8}C|[N@F,韱+E(i _뎳ÚSp^{7 ?*F$`?P7jC4T)( 's N;M 5Pd|.sz- fA? sXj1zeKMiת\ X$x8ZW@@ƈCy0w0YuGr&SfED|Eif7E(qپ~K)]x a|8N_Vf[/39i~3ى{Ƥ$aRkapE5dph|E>SSODSjxV_Z$Co '+---7Ka}(-ªg(v'pו6 ]JN|QcG3wU7*.T|V_' fAv|1 ?@t76[>9LҦTD' rޘ,L2wfnyIlAL6+75l՜D '4xih)"LY8~e>o'U1/6WxJg{WUg=0@!N>u!}_Rـh/](M!5tϭiq&i &'ʺN1oϤtM|9Y|:јb 5ũKJ={wn}---2ð6 akUERh<ۂӎ5#uhԐ zU 6A>z(T-H*'.vg' xM6O-~vG2Z@'MRh(bȥsTDNaQ 5,AQQnlmC\'-Sm+o0|B\d.ov>wc(:?)_tZg֌'LWWX|r:-@V~[97]-b;291yԓc|B ;`Lvٜ)PpR3f1;""#0 z,_8.E೺3Q VQEV]B7fFV{ ;MW'-Y66MzXYדfi@sj9v?&5T`r07>ihQ-GkDCyv =KaW_E>qfl`V^^GfgI'Fcm@hGk0IVՓZN$V&O婗Z$0$EFd׫({xadYk<`P6Ǖ ~CFI[L>V *"Jq>2ڔI $`͇@a)pՉ>}>X|5ngr2MsɳcX5`5LVSؠ؋BW~q""""]l u oՂv xFb ll|B3#j'%U,MZkv_ 0!(dLf_| 9f'%(O+Sc$[ldUcMg.\aZK.[ZZ6lΝ9?Wc#PVwl `k> (>LB# pPլPУ:嬟5q!uΆI :2tLJW͑_ՙ j09,VIdI$ڡK3uC;ШEŠ|ГŌg \4_ڱEEE`cE`qqi×8)^̓m]nR#6v 'Nu_j$:J?dةruhs"EnhfdgN&GT!Ɍ &ZdB 9ժ@W'_贒k5C:ZZ6pF6`Qx)揝 ;LmϾrx M"a3vfU]|`'gpP&$`_r2~H!=?DNz՟Hv k/sç(K=ia@&LNDy;bC 5TrGEk[:~f"""A#0 N_w @K@h("LMJ/ν>(ys|G;oOI T6V';ul 4tu81iϞJ si_tP"15h GwV2<`vITlgœRL|u` ' & &'U=O99TN^LZ5(>w-F"9͢A؈5\x%})j `0mP9)0Q tgO xq>73?=ZjJRW3_ >K&.v )x6GN.>aQ-ylL 0E=`b$cMx|`{]ü)6=?N=}oVJ۱EEE`}F,V?`ց(a-<$a;S58uz]U Q@-N,I ʟyN">ب k?K.7 2mAÅ8|bc6vth4w>IX16bZZ_]Ò?0B UD~cthܲNոIp*Ϲ#aP(=P_;_4p_P|"0C?=]B5irE+{ذX|qQa%`J4erbXAxCp_T{;k[EE`FY]|)ѺBB7ux'{;pEڬB>ఝOC^H;eFn'?bCebz婔)yLZ>IO*Bjpz1H֘}MdEEywv2[i4`CN}}S~=SC+P_3|/-xvduZT1_zvyB+7,z~)d:Ȍt8u`{o Ⱙ k8)y5qr4q hRjRjIWb@̎/[˝c߹/m2 6C}ڭ۷;YF?DdV +h_.+j;cx8uª{^I>c=۾`#U|hGށX+?7 #M :ȣo͛\CHdE]g+ >YM;hcWW3+\Du;![}[nI+Oڱ㖴uۖ4*l---#D{.Ϳx":~z+ZOXHs ;RS*zF375Whw E|Pެ6:w<&m<'iyNbR@8gs6oI)'M!$W §:Ѯ5(Hd~Uo>%==H@@?j' " 0⩰HC'?\'E6 a_y~˒A69J,0CoHP*J ~k1l`Vvrhdib4yGNY :|RQ^/Pv!I·Ŧ6[oNwv 4R4"""#3dNJhު{)Qܓr(`F70ٓ(4 t܇M "iy? @Ǥ*eܿT䐜c0L1跿2iDMr,nJ5y^  IIWn۞w<߳0˔pMh---3|ȏ}_z1'WG2qac-)V5~l|9ٳsr|n6Wtb<7xizw}7-vjXDX$V0U>(4yeZb q-fUfU\rFɟҽL?]_̫Z7/0i7m *Ώ K} m~_D ՜Xr=ypa1hAc2sͫV_2hYM{70SDzȬ?ZihhXoJHO0j*ՀzOVLI/=!W;2:;pX~F)C)TD} ~#hώM6YQMN1i6kV4Hb=vz|(š5UX0ь|_q@-7'8A4F5c@@!cH`+={ҙ W3Vl+^, ~ WЂR|G$8)ܚYicKU4.؉ +Wl9V<z;&@iϝSL* YA}>9tkv?Nv}vݚn"""p-#pt: 93~ KS&MŚ Ygr"s+q|b|*  CAzgu~qSZ!в.6#{MsDoKL7D+VI/@l ݻ[oߺs{z}Wi@@E~3(?zG-D'V]:_lP~0T@M\ >)v[kV[{㝬OO, ]f6=7LiKs:>I>QK;B.&onħ5v-[~k~ڿzy@@'I=6O]H?[O+ϠH6+0:'gOI6㫱}OEL΁Ӧ8+~n/~tpytΞ;R25GGpۢm2W'9& }h11}&,Vɧޒ`X"wdj---78+t؏nv}'k-хBO MIջZݫRZ.{Lnw&(ԇ?̛4+MxWpBᙋo#t6ٹ )lƤšQ-"|8ۏ|=gX]>[ZEc,îa[7;b&L::5)s/:P-ځAid8^!>.|Ylm3/dFj]mJ:fH(8.bĤ[?{,.._AuoyXOS{#?oL["""Q"vS`ar~wAp.`&uxPD~I4^ ah8bK g*O"Kav*(8)^Zy< Ap]o:jsofD9,pXٕΥW-w7̧6Y,ȝ =ahxœo#aѨ:E/C_kEEEfgbOG*+f&eR33oͯ-68?ӺVMR>pO'?~l:;kao0s M\,vXN(\4t|k|g=9.޴C@@ƈ=smV'cAi´ ZP໤ fhct6Nz痏_6 x~9iny f9{ްgwҸ3KAˇ x=hTEEE^'Jzj&ޢK;-/Nt_qh j 0Y>3GRZu~ɥ3򫳈v{v-_tPՊVǢp&̅xºz,tsg+]P5.&_pVEPC8+IIYί$uO1P_P~ɀM3~ҽfP,M2#֠Y)bC^Dv.2t KiZZZ6Xz|qLS8%_[%hޢ~*Cw&n;~Szb}at4l ߟUxVOw\$xX&J[z9؛v`p|Zo@ƌ($$C]HJ[/u]Bk󠋺PU7fWEkiCmC%C -Xg/;XArns *N n}---2ðWCAڕ#w_ũ+z"wOMVj~mbwg;meeyԺ ତg4}/رjј5nĴj1vK3[g@@F0l;{*sshPm֠.D@̺G3El'^+@ɐL(?^4PHN-~gf9K`iľ"/J_XMrшکn,dǞ{e OlhhH#_{IX)WI99r.2r>st [KiUxl|'Xh} @; k̩֤W/N@m^]XNV׀rz[W@@Ɗ0L{}y2F!uOX*7_]1(HEK/<'4uN|4])- n9.ߜUHDV'ŝ/h;+ h]---#2`ڠHJ^# {2.J'Pבցׅ8nϰ̭,iScڰ1;UI]JZ\<6*_~aε|X61LD& 7W:QgPl/fLAB8fL/D R7LMs僵U#vXkX\\tB_zk~٧?4컳kɷ`0l{ }H+TR:% ~p8 äkv ˳5u 7Oc],Ƞ,Hjv.2Ppq|Մ_ *x|m0(FEE`E5,}OyE PM%g&pWX=g9@):N;uU=ڷ~ކ7vټݗ'.A<+[ W+KomOsmZ`&@PmQb;wnK~=ߝ6}ͷk/~?vv:s,5;C&+x]$uZO]{O!'69͞wfui\#|SijvqMVbBEoۜo `Sp`%|=}f h@+~ɳMg_M'Σ vW%_^,,kO1$BWx53[ǬmC?` ŏlռ|CԈۛt~3#v|_y+vq=^X]vEAwg9_UPh:^uԫNb/vk=~F{Q^w'̇uZC`KUs~Y ZS {[c=c<}土O)3(ΉKs<3N@ۺW)}ÔGmV]?ẅ`}s-_bRInU] ݯkhfnO֔u0(xjAwwtk [t=ZA+ƚjA$BcgACgl RLBk֊S?jIJAݭ%"c~!Lh/-= tfܫSʯj- p /~n7.S(kwYt<ȼ!Lzءmi Q;W3,OEicg !.v;^ȝX]/`rTKrZ$.RŠz V1Q(G%;`8TqBK- u(Co'[Kwh>u1P}CCgo|_[XO⦟n:c^}><ɽqD?7PY=zN,ۃu= !(ƉSX>}p!̛%%⃶u`J艆ZyFjImEA&ZSG3Y 5Uh7gs8o66 Ż}TmR"C]E\b2_:zUq[e⩽˩3kРxE*>QS"zu{[0-ndQo*mo~ @?@V`R[[$b'/ꢑ Jf" R8Pv4G>zYP/v@-8E_6q [uqeo7L9YY/f?u$vzo8H=r"^LPP~rydQ3̊eykztCf\_c|%sB @8@=$}P@_B!/>;?M٨4ہYo(vP셀ّ $j7z'kWngj(`.+aA{)Jzkx'g4Ku= ug8CN5Uf{]6h^/XC?z oDݐWSY g794HF]AW,h Y *Q٢Wf/>0'e ä/tRvZ,%|d~)rK=dqzy0yF/q- OVjCL}>/gl*yCo0gˁٹ靶"+jPbM^|Qo>Ƌ({=@/&խH |]/~bpū캟POǡ$COzq) U7} p?O ;Y ;jX%]ԅVKiSkEُLWwV0KW7Ǜe^ (?ćz5y3>eΏ~z5֋zWzC>h^`D\#p^+tnUո<:8H+/7Yd_+;^)]1ƍ kؓL:uK%^Z<\xqE!O\ڏRv@\.9nuZeUwXx 4  `K\5ռ9{iOwhi-* U`^P Q|_k?Jq?{Sc8jl}K-߇iFݕ9H84_Pt\Wq [}o_H;)u@*1*JyTZJ,G)% ZJ EYP>b/T/,LEL#DL½3㠁0ݷ~|{D<?oar{F3u+G_c?0[kF,j4hps54nvYLa'il"jDy uq ?=Ʊ%l/n)c T8e;+_C/ >Q?pYQ2~5(H9?ȿVKe``23gz<**SE%o>KG^YOGOCqk|?_5ΙZouǂ}ݦ_ek׮"66 txPB+7[כ:¸pEkRkJJ<\0^"dЌ;q}}Œx5zϩ:G̏i?~,oxgw^:8/O[Qž+qS 3--oc Can'hp˾Jk;,lӒ-QVn6p}g~l?.)= cc5WS>cf=f͑8LA{t0#m7UmȩV)m[ڇG2Ah_)l'mWTW9H~9^b_D/xD%>pSge'37?7~kKh8xݹ'ozwoFZll^@ ͩn2ks];J^IĮc3p ȴTh Tim#K6ꍍ*w=&9:6㸖?M e\ wVZk2֟:H'aʪUJK)ij}kດZ 9VۙpGUl:99iܫ׿01skk&D`Wu: `LG*>%qD\\-18<15x ?>uzcm\BuOȗ;|0K槮 ^G*R?$ ܊4,Ҳs" "u<ƆxҪy R$. }'ʲq^.sȑW_? O.)]Ȧ>T?Kג <譿/["~܋Y$C@shS"7UvjAnw⁷[t$ۑBR5퀬g4.u=2OէBc/83:lCMr?PqAPoB6Y51`FMyЫGo]vxB\lG28zC* 1K~ˆ:Szpݱ޻B">bpa`Su.)yrӥ>@Y"Hxxf6eOS!~) Zr>{!>|H/e^uĢ~@G@juP[#x 6 aR7#5lV Qؒ@+ca/v+ A%n䆶 F]ٌLWuX9V"ϒ4\̈,5c]0R \a}T@u|!)≄ tuaqBк/(p: n+y= g|~cw ;ܛ}|c1P 싳~sbm5MΨ J'ڼRM]ě˛R<1l4i;)`}.ja #<\WҌ,+q'%cNg*>qC0/+!#b|j~k4Z9oB^x8S1nx ÿ@AG w|eQ``gԂBRq.ą])o)Ű ~@%~;?g8\LJZ |BN QdGYj=BaH9i̗~@T6z>)[_ko |5۪&M-$nܭ"rkq- =E0Ņ8U g#M#p=t$E]ur[a]ԪK dc)qVPQ0?9\P*Wf_t 2jh᥷_uw.z<XT *^:| ~+gmwgGKtM@ƾCBO97Mr6UܞO9 |4J+zƈ\Q!r\\Au*{lt'\ iJ 6pu+INି9Uw/BXWc\҆f<giz.)f_3urWxStXg4y(y3|2~ Ro.R?`5ӝ֓M%>|g|e5dRI/ ?oDRS@>G~1` g9Edd&~v?^X}t3o?ӛQ N̒QfgHYC)=x}V^La{C !L%X`ų!XDˈѬ\=2p1{~j s&Wh}^W}(hZ뷼6ikg>_ .C{E<xPҸn=ysb|Qz<;~Xhަև_C?)ͅK{OT*vZc\ - 4!Z >^ncRc\@ԫʋ~]|pEN/ě?_\_{'_&yVpjh@M tDaF[x_0fR}x: Ʀ]RRDg,2r6g{X:cטuK/yX"-miFm#$.RVoժK/GLzSi[Os&Hž0p{Խçe QZO;PEȺ l(l^/fjO~i{n(Of#jZ 02'ۦME"I]͠@kwKhIEæՠe?4\d+86zV) kdp O}I=ex3Vjx52!>3>8b,#zz |ZaWE_^DMel12:^:.⥁QC#+ d$m}Cz5m7K99:Ool`C3y;b/l(PWa!ܜ}c&*R<\BN|Gps J5nDhN|D/oI18LbX9^xCrŗ< 00, >L~֏ \? THzM] %9qnΌ uGzgMcO/l= 9م*-Mth z}3v1P#T58|yC@v8kee3 &z~6xɗ-N>%ױgCIٸepgu248U-WR|q1|(@άR=8G$OҖbyڼsѯf[m~W6<;XG,֖v.chM5kfΝ'oZ3I ;\.xPʛQSK@~@xaķXjK C" Q- DQ]Ыr݈+IG xYXF0>h3Z?J^-?7yUU=LYgj}qiא"<+ k\_]B|*\wM@|IZ_¡G2Mu룂r=dG~r:,xx! 6>߇6Wq=<{Oyl_bĦm/7Ͳ/EF]s MMM%@7,Hop[ܗbW]N 'q 8tb get6`a _#j¶W岱fEPA/'KFZ5>.ɫtP5'uIY5ey݁wX 9~:|XQMjNWn|8)̩o}h6v4T`Kt|Ep][r!XNػ~:Ĩf]}i\`.D6ioJ9 ŕ8d(DiN > Pvxԉ,p:d!_z*XkxV 9zi~8L 336Gz῕SܯVnzOl/ޮ5)ejPSShTD9T?jW]<-*H}Ra4.lf3֚pB}q!YSs+wu,GK e_ ,P忼> DKNȃpS:]h@a^uz,9̯B('Nr>iziUAAG!'xR!?/8!o2a9A l _o Z̩߲xh[^ay`=ű!&y9y 0Š+h } mV1ܺAb<=S#jLt>n\(֛QzC}yOQ7fCV!(#C?YLJyFQW@!`oQ/''w߹w[v[?zkw ȿ Kut;w8uXxjrj~h Z{u Cg4RxAHLfPIj 00~PR^/]j\nI b= U e}YO(]jk[Ϛj C_ۑ,Ra"Leao [泏?|g̖D6ڼ4Ԝ[ [VʦK8n2l<_&0v\Hhછ .ۯ*%2[l~ZQg}Ҳ<ࠍsلu-{$ a}7EPPc%|HпU=?Nw},wuq~^oY`!JG8np 6栮f?؄I^z3M >MM O#@aT 4p1d|R 34Kd /s}=D9> O\ֹ/,ҝ(/or;*z:Ab"4:Sz/Pȃ:: 6xLi[@N1ErKO\`' ).1'qI7^eNk6]'^?M ~R`7Wh;jP"utД|9զesˁ'^@ R\b =%LO$]Cr~M ^MOCc(~x.ouY :?N ~4Om)Z>s@6"BN쫕pm;i_8B;o]|/@@#(@]Aoo$(F6'G\m-ٴ`OM.yo?7 Hঽn@,x0V\5)A3o% ݝ3hj?2Ԃ)~;B>W9,+[Ϳ%6'lY:Ȟ4"{M܄ zJ6ܸ過&y7;67KS^=Ք gdZߘ[ס <\7㼧s|St-4lZ.Ī?!x]@ 9gk >|wܹw}+g,qbذ?+<4"Дp]p7Yhfzé͍MxMpI}M.'UDs펼 _pj*OKbM{ɓIxwa\1Py$㼧(o*;fuH63?&F󠸰N<{ʟ;28JY6a:]??Q[N؛ȇ \NuP`MwT_O#ދם[ɂ < M*Θ>1&7&&Ǹyh%\\+~/<;Ob7&/t"98RgÆ*NqZZm.-</>\-Ӏ7m,>L\eQM ,xm : zrZ* xQYB*_n o/Ύ_u)gsr|bdE=m5#= ߠA0 # 5Cػ)ݍoB7~dg: /C7PP@taҟyQ8)񈣅^| b^)xK3j`i"WK}ԿG Jy#S,WG_O)4N]OH0yr8¡2oA"^ʉu Aix1D%פEۼ"~oZլޓ*bR@gYtГج@H=_6AM j{\ꎅ8la&k1)چ(_>cfV?E⳼6p{[jU,WOWNhq$5=PügH8Ev4 X档G_>.u@ k+yFzr|?-r6CU^!P(Mo#l^_/ȇ/y_v xB `G<>>z;*hm 7}OśnodӋE&6[;0#t.ݐni+o G0EǼk|$|VX945VgDi}#XH8(${xhñ;_!e}[Tkgro|~矺{]6_"?}*ތb OgsRtG7Y7lOlnn⁢&J;&q1? )%_ң2e ?<Ó*J /kvU5&4H4l{jY:b4c>($7,io(nS#el_)Ϧk-VmnRffQ=YRM!Z7MB"FTMG3Ee`ST20J7w簌h~3kiV&)Gt)ʇ(hKyh/\Αx}@龲bE+$G ;bo o~>c;vvYwS*n#&2+Xvj;ŷΔ4讔G,O3sn'~NxyH >M/ng~5R^>|lP/끎wc}ֻ=z}.;hhҏq2.C'1/ 8~Nj}v_ͯhv{md(j8is8y rG 5ӢNCIQ) l P1C<̝y鋇]{j_y?|q=z~a><_C[ ꫮ'I[JG*<2启 wL}] _?Խ_7OXT>ow'C}|W?jx;噃a9:x3cumh>Lԍ6 yn Jq$x3{|@}gtzk"XW||<26ߌO~ߊzϺ "<8n l}>Z8 zvHd|fGG ', @5o;Z~ZE?ՑG򪽴|MxZɣX (|n.-[[b[N-YX>9Q%֥ζ_b%;f&AuuquԋFv/~i 3λMFMoNlʡ`oVY2졟ʆm탷1-~C_~N*eGHyfrGx%<ϼW؟&wcs^KT:qIG|>'c=]'8Xo/J8w|@-T%Dkc8O"ooޝ2UbVe@eSႾIp< j'Zh骱4i /;{=teQ%򳚷pLs!!̷oxEzwۖGa H@?q؃MޙOpt(Xa#CZW# E?]G;fwFW(î~VgEYlGc>tHv}$sL롦|/pr\I#uyc"?"O3k~)^_'2/T|11mIW_eֹxm5::>^>uw>G/62TWeBT۳nh]_~Z4ѽ(5֡l~AXؔ!`s'S0EO[<2>DZ^q9)p?rFR%e?a%<]D_);yp]1_GQ1/Yy8~{{wy+uݯ^ <ѭ/W?㇤hY?gk5$.kCG|xxH~GO/sT}|Cgяq̇_yR+†8ijwg_D{Gwx o~EƱt?Y,%bT  An{yusʳq*W\Cy9/>P,̟!Y|X~gm5qaE҈~}a/2rW_VGn3[_ NUޥNey m;yÂCQ.7ׇh3_:ΣOyc_RE ̇R\-4W!~]njVrޫYo.z_JŲ>. :י[-~o4K k !Hض6=geTAQm厹pܸCs%}+M^=K_h]ZGxћ7x8.xVoq |c~ x~ dc-7>L`[W WBozlG8e^Օ $. qPt?G29|Sw۫LV;_Z>e3N~.4m;$pWm;yأӘ:]KFB_|_~t#Wxط9.o^G2|E^#|<go(ߜwh̯ywGv_ۉsGX+p~; ݯW!~[_ yY=Z8C}r:rv@P?![\Pnpb]}M*b~>f3p~k]Q~?=ϼ05J@ԃu׾֯_%i??e΃mWbd<8~W|?~ǮWzץ5ޣ7߹?|oFόBA}[f8wooݽ}i6WC]POoOnYՁwe}@g}rrޗ|ׯ^kUp'no|~|]ۿ*~X U\{gGG΋Kz+p+OV`M{oCIZoMf0 77=)?qlzz\Jt+;oY!EJ?gdz}C@“C G7ndݼ#=بvoo{aϺ+ mTc^ ?gؿ|oxx,OF{{E9Wgs&lo{d>f6?~f?c'F A9:+ '7o>oŦx o ?m;^/7j?5H__wW5gW>垻QpcW7>e[ON>ums<|J|5Wx5Ҝ:a~7{3ɇ'>}F1=ʇߞCV'ۻo<ġH v}+a1,<`[f{6GA&0~GQ`%Loz||㽓 ^Ktzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz^jv2;IENDB`syrupy-project-syrupy-7096efd/assets/logo.xd000066400000000000000000013727361513542711300213540ustar00rootroot00000000000000PKhoxO^--mimetypeapplication/vnd.adobe.sparkler.project+dcxucfPKhoxOp' >n?@tf\^צFYi?X/)HxU^^ҵ{lj{Fc"*VR-Y*@ 9]"ܫU~{":cr@"\VPki=Yޥ-bljRYfF>6)u7-7Uu}Y}X_1+nuw[ʧiQ$bbw2DL-|Mř 6t%$3:2!ڠB7쿥V)D(G!I/K&⤢-:>aZ: )m<<+$i$cgTJJ~;BJȦ7DcPVkEbJINn<,yr}>hkX6C̳4( )&y֎IHu%޶p[lQNuMr-s(\v,֠\9<T #4BYބ 0ARZasmϪ@IBTǢ("OSӊ֚NVI@0biJ]˙ 4v7Cq+w[h9дOC1^k H>aH^x .|C҂sʀΒO`H|FJigNxpT)Lqm logo PKhoxOɣJS2YQartwork/artboard-373446f6-b78e-4b78-b269-99d20288df4c/graphics/graphicContent.agc[Ǖ }fU7[l`X4h8p+~9vܤov3 -u9[vZoF/ͻ˫v?n:vz[Zlluˢ+)SRk]n__I}WݾozϠ]Hkc꧛nxlozU}1+ync0.v{"jV6_W:/;6^T6?%޽mMT5KKxje~9ޮ_9ywCopm>}sݓ!^3}D^AW)*e,Mpa׿NQ澗iNBnUH:RoXԹ"Vu,:*4{,~}ow`53^XlQd$κXu{57[VXF{ 4C==<q^_m3'=zyu%;j/=S]Ixo/z[ }n/?1Tޔvu)Rl4jbzXZAOdA(eHBl/E;dq,S7ݸo]ecSskP(?GPᛑi27Wת*+X2إPŮ䧋 Ӫe<{܏=Pb ͟*х؉Lʸ.:m`*j닺 ][u@35߂nHԟ`/{DWiU麦|c:eZ} 2 S` |`؇>xB a4.J &u}vɄVq^"A < QȻxȶ,%^IAGݡLZD٦? >y=+v'[ɖ)FׄY/K7j2^=K\I k7pqMzj&st pA mԮuoO2Dž~cK&l~|iĿ9Za蔵FY'ѧd ԡB؆\uluUK)|ゝà >T}! G{T!m9>V1FVD$\*5 Ȏeظ2glP5.,_19 gƯGWTR|[DS*6+ʳEe~p͵,/P7\۫VÉ2IE{5J+IxJg@Bh¤BN$JKoh e77r(˨4PR1.*߬hC*9:zjd7I۔l޹dV30mtYt)%b>SeexdZ=Bc2(Ȕv_f"صJciJ57ڰ&P)lKy_6 bF|LA7J[̌R>z!,4kx@Egt fsj0g0ۂN[jh޸|$ V30^ @_&g[Erɣ> /"2[37HFUG0 `95@|BX P'ՕU |985c?t9 uü\$J7z5*5/**(Th()*\֢EU]->W ůA5ФBU=J1]Z*$v\RzR:?MgڦWUH{fm;_S5Rץ(4jJ x!灜Q}J.ۛnW퇮êmxQ]]7Տ- DKwQCpO]*U@<ަh;@y3T&f02m S ֝%]KbIoB3-0MM]҆7!$p/J~uQ̧-eQ|v< bL|fK#7N4\=~d;1 {{c^KJ{:wN'l6֚mйF  Y^$6E؎M/cѓ"HU*$ ;Z*Bg6>*Zsov-D+BCQѺ(m P̵`7+1>fcm#Qv䨊&BK[ #,N?rYڷGw>] 9q ( ?8ߢcZlH xx )4lSHD~CͼD/G״mQw],h%"Y2'RG /䥃 쁗pH7tI^9.9`yES5&V;E^I4G׵/d}M:cC:4Lb{|ztȴRV2$2bui&\xP碨#O5mԑx y~!TA.k4(RzҡSA2uMR̥?THpqr[*%,N*@3PS4D-忡 5*-c z,U6銢.9]])tFj) ,NI1})\p'שr>쌰=X[S+qw匜NܚֺOdNzn\0TRItw8{Q|c2 h%K\CVgr:{'[`V}j';K-kDNJAU9N*[ C{隠u1砦S,*/.АV@2;Z%HˇiaIl.HB(c=h XiX:ƚάjh73ݐ T<,AxpU>łvO>E Sw_ĆSCz RURz%]Gv-sM8:pNzzA˒)swv~vd3q\E,;t\^TbFM(/X_.΍(scۨr8Ĺk9b! (gop$^LGi8a)GZ݅Ti!75IƾuS1FrEU+#CE,_QJbƉ7(ݻjEU]>xH4ԚN:漏~|_o`88WB|J'4r>o8p͔EǪk%^Ғ*oʩB1 8L;6#sM J X\87rCFɉѻ)r FX%l 4_:E+J'C/ ;((fvi3=s.^o|-mjmB7+sY^S~L;gq+JMk^Жh8{"ýn꫻j[W\N9\utSxOO.R1\xjҨ7\*R]v <V\tp\U$gD_J޲T2`dGbJ]~Gx(AVr5уwú~ww0ͻB7Fr=PKToxOٜ'\.artwork/pasteboard/graphics/graphicContent.agc1 5A-ll}@8p@ߵM&3'I0ӽn`CܜУYA(!2 >eƋCSTnPKToxOVinteractions/interactions.jsonV*K-*SR232QPKhoxOtHڲ preview.pngPNG  IHDRxsRGB8eXIfMM*i(0@IDATxeIU.\sLO΁ pQQD" P \T0*ra!MCO8={kUksut;UkwZUj}g]VX 30f` cg 30f`f`<'˜1c XOࠏ]30f`1 8 30f`x}1c O90f`1c`8c 30f`1c رmkھmmK;XoM;oK۷nj`]wL{IM~{/o{{jlt鲴tٲlY |ŊzڴnÆ~ÉV֭ Fz|,c X4>1ͷݒntx޾M7^8pL&bҥMg{~; s{I3pd`<8^FrQ&]se+/K_}%7yn߽kQܪUdtϻ {t]nGc Dq*8B. 7yl\q)^uyڳ{0̬\*{}yBp'vrpp01c? p3mtѧ>.'şd/oyfɧ.7<[[7>iÉ@Fc '8x 7>|<]O$\ՏyvwV <KM-:z#3pf`<8 e ;sD?.+ww+k׭ON ?-o,c '%ckf_'>>}+\_>&<)=ߕǤoo^30 '׈>N2/|>} -K]K/b"SZf@G Go}ģ]_?11G8 NhmlJiUbS_VR܈8vdI@Dn.|' kŷ>)>>;Q T6|jz#d۾ 4˘= > W^+~lَZ:嶡/,6vlTF+y%qּ%`%"ɀN TIN„s},oLħ>i w720Y}m?>O%ɭ+mc_aJko=pj&\{i6$m=aG&DG=Kgo5 v=Fm{98ߘ- ݖ=\妏7\wOܲ_~o'ܴ a^mW(_6rEMSW--~΀躖}50Ό ї^SnNӓ8!m'}~@)9?=Ó|9˘c5 :r <뮾";ߞޙnw{6̯ZejW-{e/mv- I!>=6kƼc=#ssޏ{4woCsi΂nC*5+e'w m]G:̳ӓY{\{Ghg=Kp3uw%=z\ݯն6>>y=ü6SmJ*$ė+w]1OHW⃵9(}Who_7QޟIs΀ tgŬ:,7 &ݵ/[~`:S֬]7mj1GMf(@2xǿ'pys_kWkpK6~l]~@a>ivب!WԔEѳ?TdE'U9 |`޻NS??w0^ؾj91Gkudx\ڏ=nwwfvʮ6!ߤmsԕPܠ2E| 8$L;Cx^)Cו$:@X~%;+y_pY^+r7_xWǯ~xͧg{)s ;F,N|(vFzӞ1p7 7|玨mEؕR QX ;BP]Vvi.hkuDZ-)͓֮M{gƼy7?ul R/t2FꜤdprKꥷYFk-Н͂#^bw$nKSXe5zB x׻s>|.øJ`_gvgk3צ<R=Sxxiykܔx?n?li C3{[>LrI?s_,4~g`vw1faUx{^ʄ eݕ>L<'ćyƚ>\4 pDP+eL1⑤2hHM:plͭl67]&'}CڬsbrNՍͼ=zXS׭>.[wS k졶mL?Wgƨ7f`RI<?~p jbrwW[dJ۶~%_eS՞+Bj]c1nBhG}zڕ65lŞ\ps .&z 6^50O4j".]4-wX}.{=*㫓瓒_.>|PߧwH}^}0࡭+o#/=)fX8 'oOV^<?۵-S({ 0fNM.;j Em_2쀯2ReLݎ6cƆ|ltٲt2 d.MKjl9i'Zco,|X%T&UP"Aqu6wFZ䱝3Aߔy|/.^ay{"wwU: by7P~^_-huЋmDwvJ᫨wޱ=ݱ}& i#' { l':'=?kH!˘d`<O8`oO[r_m_;qj&"QNKsK5*k \-9ڐ)芮Mn]z=8髮`с==ZHT^:_[ؠ0Ӄ3] t8qiGfĨw;ӝ;INv]|O9FWӥR0 t%-GC~fz2p|k:ws4",xj+~o[a=akwkmպ޴sB*cqtŞpUmjڄ%-NŇt)kI'bP:tN25Ye-7k!;txIwl[ޒvډF5"Eg@S)UA3?M=3x@PyW~?>>T -V?V?Tc3#ߖ][}5z]/!'ߚ(0_ϯ/#.ᚺ'onWyQ]~[w7qN8|SOKʿSGI2`T|cNc<@FoX4&~I?C78p[p:¶oKo۔vKmZ4,m 38" E҆gwpG`E`ry^oH}Qxp!M77Us<$}(aǦ]/uL`i Zl 1ag=-]wT4}֗7k'ծn@Ss܍y7pB:SEχKoT:b7&;Coݔ6UP>ӁJCf2OVN!{! O|/:-h30YN[9V}ˬ`!⦈E6Ҷ9Y6ƚW܃]|uMlzاۊFTز_ӕYSv\fDXWv'zMMėi|]Wk~IP-N ڹY&A%dg|42 b@eU [nOUoS32PqIxazPd'ig}Vnkvdרkn=ۭ;]ClGf1vmB=sʇpuӥltzA,˅]Ȫ;wiÇ- >>3o>7, =~n\Gg# ['trzgp`J' tn__|ُkf>ǶERX ɷUJvʧE4H[c6Cbu|=^]{_~[x~S+vgo3H[{0x!֥R1.U2\NIt3./O=` N$j~Νw-d` a. Dz~Oڐ8 {|D/oKxXv<_yyw㐲—,֯!X6lVxX]}mL  Źxo١/f{k8d mNCH#^m7n<)m<$R@M.Pd27BtQKi&rh9^Nڬ NSV{M|畷i#t]w#R4=Pץhyx·CM?Km8v7P4*.oKW[=s%?پǏ.zfueN|kpc85ͥ uN:^Y' {銪 qs|#5E?:2hGvG/?G|ط~"_&_Y,##=A1S r\O_tȽuCfLs[h8yſXP\ؾ0A G+Qɼ]ot5v<21|;aA#p(;IwE}9308lȐ:0q]:!z[O Nz7 y>mKʻ[wL;yRЇWPGc4 1:p ~uzǛސ{-^V} $V1g~E8xk[Xյ:47;Kö:0hkҍW]vCƵ3N;u ~?G_ʴbs^F1?tM7[?sje>{h/xƦ *x΀j0X ƌ9mOm"44l%.gvC3ϰe]CAg)~ l&7 -xNHLn@֦o.:>2}]}x6m \  ';$Γ3_Lܾ7DPnv-nx|=n30C|iпw޽r?~_d-\Xh銣YvXzQjK.l^;-ӿ\7F*'}Z }9D WqviS4,4Ÿh?^]0T(О6\/ܨV<61fQ4X \i;2eeZ61#',m;2b/Ii'`ۣ$+/M5͇Ur ]N@$c'^N>ɠQrLg`<8orL}3߲Ξ׏-'X|*7BmAXWĆUXƜz*~ zًE1* x-P#Ym9c0Za?S]i--:+gO-̛!TNUv]"CiDiW& Pu;0A{A$3 0^8B>]NC;U{{/^ 098y:>&tC9uӫ^ٕF1ݾm+?l j>b mAf"'!r2} 5Pciݎ%W΃:6S>.ta0PQd4KNQf>lBͥiR4Ӌdp%m횬1WŽlbpMp`ES\`ކmnn3Ur@7^{U⋟ i'kr%ߔ֏_Ĭ8nxp eJW+[s?ELQeu*e5_!|ޤIC,f;E@E6P,dڳo߄+[a^scUx3Šhs9v-U)f" 'âu&?je顶LFi-p/c)EOJj\SP#d2:X`mr)÷o}ģc" 11LӃ'@wO+qտfI?Hx Qhk|YgN{L4D+o8 w8K'STG`tLS]/vlattP83wn7ܴ)JFhW# ;K" a@b dr0 {}t~=<xp~-oxm׽Q>n,{m+YXďZ _lblpXcUjͥ4]x93Eeq<0_nkxf> Z⨭ pWnt;OfzAu6[!; զ- &9#܈jsJأ SM`XՄ>.pqN[-:q@ [ _}5})57{5>L"fl /\Zo xp YJ7؇^cJ_g=~u e3% *Yf#->Vfb3/wGB3,x\)Wf' ܵ Ӫv3PkQ?F`dvn4 |ݠ3zPnmv;O{Q vLc7茧y`DwOK]/yZXz-Zzui0]:r:}sc0oO;h/#NYMBa% FUeWE"T/ߙc|1rÌQy<6*UQĆ=*9mod C :Â/|ci k9t||eo ̧_7UG?~>j#^xp/qu{ϪBOr76m,ժEBeM*#_2Ng !{YՉ?w<Կ=[6itwOW6?PT/O }= O~ݞ0_uiy`[`onfvoLW3/9.燹q;z@5zCkRqt~p=Mvҋ?훾X; ;ݕnl%SUD:30ŃneS<=}kz=4{~[D+. g XM`\ڪE_w&Ma]W+T28'>@j|?~/^O9Wf ΋MT,D5(Q9bMҞypB*lT(ɊϦrC9U!\j!wh:1;kq}C1?=ASnhVn*@kV85K[}fLxW~dCnD?1*̺ ~1U!gUbANGW ./t2[ ^3-\w:O|٬h0LY8ѬM֩i~  oݜ.G I': $c6<3 wAJX?yB?z]zS3?gݒaOrQ5nL~%̓8ڋ$6R; Á{@첤>qj8x E+㑸\3fHe|3e^{/7=_U/SLtя~Xӭ^c<"p~ ;/JP5ވ*̞޲yx Hog iEr‚?@%ʵ6c9p`VB|}<2aOnq/Z0/qEG.YRڲ:G~f;Rի9Cź+1GU1דXieS=( ydE }xXlx1wMnB'>-.,[a.(]K|]096[ϣLnW|@p>_ăλ,GId ƿ|hY)%$-ھ@`y\jEE{^e~fҐ9,^-N%^)Měr \^ s OIum7W$G?sϩ6DZxK 0gG(;%l(:Y*˴Ԁ_4QWm|#]XP]_J[l>o "O<@"A%q}Ky|@p~O^D:  Q0?yEqb}~9v?\|}, 0_kF݂_:ǧ!Nɱ t8rl?ӷ58witjH^?/A7G8PӍUE׵#;W>+?7n%*'BR(UoV4ު4tvT6 # K:mutё~Nfm2Y{@NLxڥ Ua a-|KG^?Lrf`<wݛ^J .񳽫~*圲,@b5b Pqs&4dg FJn&U+@&Ը+@ =wIS]a&fgl 4^HtC-uxNoذ!y1 :ОZfLҖIrʝnf K!#sFyçe]e7O@zh9- i`8 'xeAAy `i3A ywe -/t{:㕿[= Tŝ'q}8}0R2TpsMkA'⎵CkjCTMs;_zX<~ p+@LqZ Мxw:+[]//N0F*jvJ9cZٌɳV@cx`#幌|p]EХ Xg]jv' 1i|[Epڷ{(kni&l+JOLCxp;\5̀F!+d|3Y9hno 1uMz_: zf %d7§؃}p;p3q6͟g搃&j[|r V$A^=/֪XW ֤֠ݰ!(΢i/ajN4x/xa8֬}䳔ʞ˥牁Lv\ϗ&j:G&/_CW' sIt%I$WW S]$lq!6̧Lz?wP| <<4xz.1Ư`m= ?O@xɌ^|Ez#+m`W?1o1,ҩmSpҤm Xrg`p{߿o޴oo66l?x4R98!믅8I*'= K&M{{=Uɰ*^!eZiR4IVP[qKeMaZYj90#@W^T&.(Q'klH@c_jˮ>."4 @r>J AGn7#5Cm~<OBJuŹ=O*Or`e t R%|&1OY#e`p9?_3gWWZ8-@ ؠcqlÑWX$N4|J(pVoJhy9Vf$m?te$JbiqDЇ1O᫸xQuW_~R_U)xGmyݥyP\#%ڵ;pM䂈"*Dƀ\Ng-,[z:!kq1.WmмyXcK~Z>j_ߜ.|-g9/ q}R,{z ְY D[[Gx%r}6_Ludޓ~`Ձu_H`:XÀ-aqiVYjYe$u\* ",/ݘ?F|U2K q(1Y,]㈍#qJ7n<1~nwzeigf.PX0bc&Rd_zf W28rjx.qf']]azjGw _+\K>yF~$96W= ?^{oQ xp7'x=zJGcfOY8{vg3u;L '=fxf3?߂C|M|=x"~gթ _vY+:3Ohkv]ʗ/]?ҩސH/5䱂QF]Q1T ;T]hpHa!;L8q^Ȳ  {u1nYCE:&t=K/ ~WA=a<1Oۻ;&V>r;-g-osjݱc{z߬;BΰplWy,sBRٺ{\_ J9>K3c ?:Z|YbюtPX/~U颎c<ڸ$ 2@m~_gp{F7?ǥFSJ<~OXJ?5//?^!XM *>|a1Ձy(5lX~8,v $V:[|CgH %Ce)ȇG'<+Kry8٬^8hE`yYhi 䬅wۤJo\n?&$6)qʱy0sY=!O_͒yb;L\ͷݒG̼iW| jQ`J|@s (Xy8ܞ:8c&2"z ?𼊁G$df̚C5͎8hjÿ7 Yw+~"&>P bgO^>14!wGqxWڏG骫s.MtW2>$[C$jB*NW [>J/?Y< u^w] o'y{g ʷ6\sη܇qP+9ֺ3g%k2C?L[nmO*@IDAT;[6ݔ9O~'~t`|^A|9?hMKP탆S-{ [nqg\6+PT]hH_)АB库&KVK*<*fDOc0K9>Ko?Owf130-'=r_;>gV|gER`mZ6{Bbjy8*B@x ^3 gvAE8_ H? *ϧZ/qgK\]~fBHW 4 M|t_ŷwtŕW;d.iAL)ex42]+UmUW"6cZXs[W<(w0njx^WQ-v?.4vhXn=&uGqǺ#lk}t=9pÊIEx~s&0XL;G ^u]ݢu&k'ڄ?~wC $]T{>2XT4V>, ط7_oġո".Wc֪wUhxqOy3<er?-eQ˅Z͟f_ d))\7`q8ݾp}Ux եgx4DK^B9c- 3j^D{wTad8h\י,~Mm{i⻼w3t`6yzcUr읆|}Mp֟>3y'_YC.te_$=>chAFǮ5Hr;h]˱NԆ&Ã4¡ՎHW+l- 3u'iBJ#:w3wU?``8wН~&q5tA]>9?yvZq ̎@=͟~eguc=B< yu״ du~42iO{ P`˳Xhou_Av02_Z ְ| kY݆Bȑoٹ!= 'O4~WmS8.U>W +-_"b/^Qq #!`=8K[LW|勳G̔ w$g.g}g)A5ȿ|Pb;[yʢ=AT50~A:1#;~afMgD a(I٨NwOJNv@Cf yaIB{ph|zC/# ځ]僬s©cVaY'+AGF)[nx?ʕ+I+%rrIUr1)ux=]ixxB$&"Fx -j5G m*C3'H:v|_zE鶛+m8VuE;\,eÉ_ӇـZ;7>=Y6Lvn_/``@ 2ǂ 8 o #?6 &*2ˡr>k`<3tqs7> On:O0u4Oqu%Zp<8~Ыӧs>ЃG0S @ uP^}ðwwᄑ+NLИR;X0u6V_u+?KKK&>o\bb e]C92?0505-?C]|K|ڝMJ¯ڴd2Fب@;IDcA.0Yʶ- شg w2֛oO7t\PNrLU5?+H„F} :Y.(t0|T"3qW . 6KylfMS ,*'ob?MhHD`? !/=LZmڽwLrCuV_( ֯_>̴tRnTJT6Ur^mŢrq܂ T- ?)1~xe\t/qzaOSgyta3Zu}+.Sa3.jH.Sg{Az{?ـ/jqlÕ,?{ښEi}T^lfWƌ3967 gЄdZru92*g2s8h`q*犟Vx_=aQtCL YC~Ka?b@?~#]kv0bW5$?*nM{a;%ģ"^·ر3]zٕ|n ?lg e[HGs' ?1_6^D7|;hO|\51|+`\]p=`Ū6]o cº_84J`f٠ , 2 w摯۷g?+.S˞uN+z%yWV)v!*TvaUvTT+2x$V=/NWYdq^p N;\V=&i%kL& Kw1}6^p]iÆ v7tmO%L@t۝޾#8.ǢKNuW+OLכـ絯뀔\unzoB]ɞetbIF[ ZU,<:EyTϔg[.|3 O7V+27Own! Y=?}st}sfZkU왛>d -Yݑf3qBMm3N'F0%ĉX]NHl&n%"CEx] XwJS L/83^֓\ GUrĚ$we_QcQxc;;}# }3%־{K~3mۧWɌܾ8|Cj4LLA(r5͚/i9؇ympϸM8pV/x]1JxPO=4Ut < e :M4};K{b| q"ˣ_VQ+c~x?sso3g_|xx\~+xX}x}Iy F@{v#}Wzs~n|_mf<k4R"xL&[|Lkjds(!_Ol WU8]ɧdW[Wc\[SӢKl<,9]Б\?Q5y<|:T)}8sÉ2=)9`1)?OA^Ai'j3ࠠɏ1BFd9}qu ^q kPلT1Z\_ލOG7q^w;~sjrQ9*4R+f}q(|/XDR̵/ճ=PiYGس?)f1)dɒt6n$X'ҕB%^g\K$V&IY"H |\<:ګ<%WԜ}ߖKsn\1hs`&p<ǷIN׹mEQ&_zُμ{EM0%LjlsS8,0rZEn#9Fˬ8*텀/Td?u`qW4c GM8?0pǟsdz/j4J8E[<<f=8xARWC kg,څ I#5Y =_j#1wAށӍ7no \p%&Ca4W+tZ{ vkk'5BC8oι,6 <a;>aۯuхЯOQVm '% aQ QA1A dNxޓ~?=A:yg _])6!WW$i'(&5FАyl:,JtUXIÌE O֫2fkj 6[=ƭYq21W>g&q}ZgA Ս;֕bmWO]7Cߨ8۱uߕV^mwNMk֬In|h_˖e:Y_KڊO,%#"OXђv>f& 矷Z3Gq?!|ț8ٝ.짤L90V;o݅).?˿cP;Y;Wcϓyf^\@&N l.x~t|s?h{6t|i0Zr&@]Ѽc{X+t1'̽Fk6˃EqV .}8(cq5vxdcTZ\r6+u}$K}$]0pk >g?u=m'P`1ChNrbs?686'j`-9l!ǻ5Wp4D[^ܟ`B+  3M7A/nQq1:b "oעR|wfB2P/;"N^{,7[aT QzaCq}`kokvx5qh[`MAОCΈNW/D<e]ƴwwzpd%!Kzz4{u'v6$cx`,٨{ǧ1^P-Eະ?YdOEǕhAj)CJA3ߗoX pɯxO&|{,ZHM9_wcǑTMr5%%4eh|1.;v ?5±p"⩥E8u#%Q(Y:2h.1q@\co~˃kП*64'#ؤ~ruu7|-%6{VW}MI+O_8]^n]x҉iڵcC6rC@RaN/A#ˡp?Kj'>{ &dвc/,Sbp( 9paU+<Zd h wO j/խt0xJ =!iӍ~:mlOZaʕIG| ;d?M2qQ֊.r )Tnlg`vw֡&:QT6nۛ? |mSo![*m؀bq~hQ8ㅋLҲˢ/t0ұAA'xBڸ|yq^Ln,_qq"Uf вЭGh:zƠ_Nwוb/*{[6ߞn:n!zscȿž,J;LwWnzOks#=qXL?͟s&ju^iBUV$(pK- N-7ԏ8|SZr'-/;@`/;XK!?mPwa8Vq;I/PG ޡEq;$ sjqQ\^k|? @aD-9'`҂. Z$I}<{K4ѡ分89AwH*~԰Av0|Sw!D xԈ[ķݶ9]~=Ok6,_KC)OLҟK>Ͷd@L`ud2vcs?޾M*ߨ}pPE)ä$a\Bc{X*ϿsK7V_sj$IM4⤫&gX̸gnHmG,N/{~ϟٗ`5Ykr\t5yK&%# m<5d\zf-uGodGkcb̠_I*?S/hO(WWD61^\e`[|?'MLx͘U S֠Bq8z|ݱ/t=w-Uc(_@ jħ~H/DI5kVuץuB_mlIMwW 2R?N9ohg|s?Sm"

Y EzL7vw`u ,]w 팏F lO PlfbW0.Mm[\ g6FD ܅FGpffƓOMЧI8Իq=Syڜ?ɫd3sh&=M7}v ARqiZ8 <O} xx`|uF qr `:@ͅ"N/nM yȳ;"έ{xJ #.F/>8 1=S겐q{RpB 0 c9Z [3< ⲃZxҍ0_Dn<g[t^揉yeo74d`zf`Pp-vޱ3t&kKl'܉-GoF?OLjz5Wq7oJYn-@xQ||61LSqh}j|_b9.s\(yߟv\?}ÜCǯY)[̵ O r)/n2<%mx0N&ٙ"^sY䆱娭[eµQZKՀ KT/f0Z~K+_KZ7 ? RY8'VsVe,ڪ Gu E07T2L9JbgݐM{ep۶nM?poTyO n fW~` ;f̀Kkd긭_93;{'"Hm(D‰FpU(!mLky?5"ӹ85-ihhh'+'?{'+vq޴\_D*?/v?ʾߙ$ ]x?9è-0 ; jwvlf1VrXqiCj8W;=?ޛ]zZŲ$Y Yx0 {& $ajjfjTMa2L } 1 .H,Wٲ%ڬ%K9}_Kݭwg?y}] :e#ӱKM.1ss0c77-RlXMbagSGzߑ.~'YC~}N&g{ 7\;$K0%ʥ-RSIiƒ&Ix ^%N7OOxS휽e?bg;>/ѳIt3oRb9o5#sc[٣[gv[Ӗ=ė:ފC|.&p8ةZ[[|soo5 fsq刨.n$BT_#Rh! I`_z: aoaog<1 2~|Z=}`v145q/5Kʳp8v^|cL c#F ?6]S36"rޭ=5V}Uv@|m͏뭼~2o`QXD c{7>)IVg׿)947?>|R]_{.Kܶvlͬu]ds:Aib'3fF\3mU6^ᦝ0>Y :@h@3)~2+`K-c0췅ureq>@iw\@[|->r_=ϣ& EmFعkrf vbh\-l_|ǻ{* ;ſ(>: /P 5RwiB!4CDVKw(?|5];+~sz`&~f\TӦ˴_ڛ9Swx_.є>LΡ9yWo}>_Q,7Z?9ԓ.t\,}=wG?#hηJK>cooS.9^'󵏯<pW~ /؂O`!yL^83G..¸!0'n \⎫ޒhpw|<ߐ7D{Q ze~fxW⫂J(2~N/-9M;;_l{>$<~ozs>S㜻)_%=]{vH\a?t#T7fq8UVi'/fG[Î#pEg{{'cmgUE),\v٘9/NfBz^n{KZvG{[dq}c-Ư^~+@$}G5M>O<ݍ U?4m'oP&R^ivӆ;+1o+S7SOBTy͛Ԧ`x,|TE[0[ae~[^|xoL} 5_閛?0|5~.2u'8 }4E5s=i}M=]hڗ3 54؏x~'.@\x6%YL(4|$y8S<+ޘ'Jq7V-4og滧nsᦻ]6'w5qVTRJB#aڅނخ,p荣Q͋N53㦗f9q$fƙ\xe{f{&n>]h%95<>0goZܣwU+kqݡ@cܖ:4~cWLwgʕӧ=9pB#ہw[ysa xyܸdCt.G?O~}CvP98 foǓxgƵOTق{-co&aW4YȹfSlߪtoW!wįn?S8}W~>3|M_E_qd+_QO4Ǵpq2cVjBba-'qŹLx)0Ɵu Oq=^i [EMA "3' oFخهwƏ@ "G㭁yW0"lI J]o[O 7czr{ҞRo{oi[L>[} ]9^oo3^eu*O _m_`f8vw).>kxW}}/~n3{V֯?ڛbqW %mOQ|91$|^XkTLw&Joz2|Lwf'姇5mOբ1QQOc G;7EgfœWWzm(% גzS&K3>J?v|DfsLjV:>›8LpxC|;++y߅Wv^+< y=(^'d-|l~)~@IDATg8 //{OÿXI\OՄnzpԡ=UۈCge+l \2|46;%f^x"_'Wz2e G!_5ּT ፸{?7 IxJ~ѓ&>oȭL";A9O=2]/'\b863p~?AEC˟ nӓJڡ]2B[thv: >nw}D . y>i_Sso{~ ʩI܏(\g^w W֛Ogg __kUԠ,/G_'ý'!&d}x/8t8w`@ X>Qg7Ϫ8J)K~c/ޖE+]IL-ٟz>n7C?z> s^bM/uӇ}7fmLMe͞ZviG&FK~] XIx4W;qxīXy3ZPS|+mvʢl /y5?_v4t{g_lYgȳԏ}_Eu?,A_]s6z>TZe#{B-nTɞ}ܤXhڿ</< /t~ˑ1h|1;Ű O hb# ݇W[}dr Mٖ{<}~׽git݇%.a|M|S']{,>J=TH;\p}C6>{ mir">baRqCAΐ:y.7O#> -=o_y˹;CJp@OU૎꜅4q}T4VV?^3/Z٤7 z}ջOWj0ДFy(j9x1cOv,\_m[AMMڅw Db&>TC^S@kmZ;f^~ry~ x||SOݽ^>0]/`{~l19o$4DSM}Eݣ3O"dP|S[riMnt7juT$t o3ۭ@92'SQ=ns2v(ڏ;{p؞QWL}_NW^}׳7/ɟ4q49/;O$NTjgG0l;M-ULp<]0cǫ}0ar?`wƱgOz*lpxAԡ{ xyUzP57,.|ڟ'{Wy|Ǜ.|_/WB7J7oÝ2u_I_4ƿ;]u:gG 7^fDO y5G}ㆣsUu<6GΗٴR| Rʗ$ oZ4^㽮kҷ_#O<9 op^)ڻyga,EŃ0)輛lߛ{nmwoY3Κ7wx&p||0 ͙s+OEȸ9g|5, G566'43CO*9 [+& ş;犣Yvs8pn?.6Af:f _i;ADlHS.|pOɡ1_xJ}ο"5o>#=` ƍ+28oۛ}d૿ɳ`W*u>]&示?|ktG4Wfl &a$_}j5u^4>]rqkw "QSEaě•8 /f(9ȏ go8ql=!A6Asm>jʛ 3qxT㿂?+{OGa\npN[n/__j>U3[ѳKFb ~I]Eds lNRgh"@G)슏 t~}YZÑ ͦuYrOn څ|- eG%;A.hSy Ap`㱡K>RnڟvQ|%>vPS`y$]O،7 Ӈ<_r_?q3"g?#(/UD{ ؘ!/ W_G{ɹɌ)?x&;ttp&~k~[{u <"J~ xPLs>!]Oa;^8JPv G˩7J{e?)_8؅q/=t?笳a7?wg>ZM*r̮a9MS9(hM#>Sً,] s#S#l.=6 ǫ@'q*/h#ޠ4S>.Td Cȑ&*H\͗eeX ]ގKS"DP O‘yMK֗p6vs"xeOps7ޡΙ>Ձ9-/k\{w13c2}ބ΋pM~hIh9=zgb-_\Zբ13G+qX2{CsoB܆"hya p=p7% Q9^և}(62o6w୼a9xxoatCx?{ 7=}p,3_=9I:٧ԅQmyAYi? +nޜ3RP 'cċQ|I{?䍧ہC1 ^],}ي׌E&u($6a)972R3C;-{wx Gc3n/OAňG\* 塪kf-Ԋ+ OɇWnCqh be*K=?/L_{<ǛyxY q{}I(~NW\$[OG @?di,=9Y dF>[ sL}$ꄞ%#6~b]`6tOGEcY`SUw%0rT1ͳNҰ . ER8<|;w9#xg uyxoPEZ0Zj4_kh_E-~5!Ջ.Ƚ!͑fiZ98 >h OvƑVʇⁱE~Џ@n@;YOǃb( ǒP@,BRM żWÕm*~h//bAX;oqdy[~ <3ajYOn ? 9hOij~6l&W u.őyG-t$u̼ɞ<cἼf-~OF>o{i'1.j䰚\3&6ϭ =C(~Ͻn9‘ M:]6-x\p\êxB|pdRǐI% @Ao˫-v^{/ю,6{s)!IEa` L-;O8> G'i|>S+Ӭ|OS$|CÙus4̏ 0yHB9^㱝x^|tok?/k=96Are\x3^ɇfʜD0.v;"|}p?xBQŋ]7yL+0$p i<6w⵺Jx]05/zK_]Wc㾏/4My!XmxRyn7 \BU?b<*4F&LbٱN3'.i%< P4{s.Ɨ#ˍxV2݁ ?e\Û8myxd^ >&m t[6(oÓ=JM }ȹz+y }-kWy4?>}Ͽ?Wai*H)isФ!jBA blX08lz6i*>6X*t~K k7ᱢ K:ǐWx;&/{NxCduƇw"}wJq@xkEۉ/>œ>|H#N #/jOK>{UAZY>F9F2˖!駹3G9/lG7 ǬsDdx\%'&p:Fᴝ3'9ϒy/x.Ń,>O73mq7xɏOy,uwENj& So:TzrNQ]͔[YE3Njj_:;|c00>6paG؜R/<NƓϼٰ%PdgcސS6otR̯_xAEk/x`u 38rw_=H]n5b{vZd5 ?}Q'VƔbȍ)RrjH?1l0$a''ƣ x7؊e 8m/7{$m0~ǀ ^ǃMrJ[Eƌ}o<?y :I?]"oӋ~^q *jWQ^Sݣ&A5⻨nMHV;Te/쎭ً=1 ;0)»ɧ*SO5*^$L ġ oYx0)<ǃ9^_|h`3e%W + &_#fQN3зk:6cA%/*f^x.~0=vo|@|L qU%2jz=%MlH:" | j(Ys9(9{KULKh3j˅yB=9+%Úi>@!a7Q9hMamga@7Mrë8~~mߗ٭Ju? Q~)u|jŗbs*kHB,itמXPMdCv “> B-/;-xM Y1o >'ʣN: 9`GjA*7I_ҐeRhj7~0* oơ:@Ƿƣ}W=jḡ7R[ PAnRGc~OY'YO1$썅\V'MlSOmK?7gL3<OJx#f<.\1 n£E#̥ iQ[gGS^ ,pdZjFi=x\h]y9Ә g`LpPtޕެBOUh:O|uaY59 +9PEi5>8̶@ʧ# ^3a?#߾牅e vVȼ@\H 8o'oל׆?O e Jކ'xXxxK*yF?7y{yέ74?!{gqpӋ{㒼rQB~.18ѽOj[ b{0356Bp_'g$Fٲww=ӐAN5V'Ixb@ 9Ys*9@*4̥d\#Go:\k:f9OtS ɂ1X 2}xl`reǜL%xG{&΄="^/35 QE ޒϢBk0h,gkW;{~`.HqX[7Us%0^&s/~<,q־!Gr#Eԇ\p^ /xrh:H3fxro+C+x|Ñ>3ގo[0y/~__Yn2|*4F_]O]2/el9XKc.حm-p^'JNto]pUw&6H\%&C0|YX%}c>R~k\kWqސwXq<=: >x:^Jf/:?p0MqSPބ+ |@Ӏf_ Ja\xx7zn^9-G;% J$Y 7^ⷙ_3hanAvamgkrVS{خrLހb٤hbw^51nn7y<b바6/ۡ [8£yWS"T/u>f h IQω|C~|S |yL`slS 3@/nꮾs~Pi?)W^Dc yK : 暌COq>ܿ0nc9V^cL h@ql̀u=o%&nfۘZ#~['<a+~/9 oox9 ׿gēl$*d|XXP,zp(Ut7bVCQ|Pغ݈li$ Kp?!W8<Ebl܋ 6 nzfxV;'j/bN0h1u`' )[!oӖlu>b?^9O\r4ȍxD6e;c̭t~/8* 5'w'P;kq^:3sza}VcQum{cيmOSkBYFHg oM9w{kcW:x[ \ųc ޥ~.x W .n\yt2u⫃G{7 zڣ?|> Ox_;^wsWGjǾ@Y17Z,f2 e< o_{6,v faoqRvyK8f,뽚xgy.l0޻&=pS>3WΛ;W{QNߌog^L(Tc=wTmIΎ9m}#avK;΃1{i<#m~ qV=橝˗x5'm~*ů_ғѓ1)yϺFncw?ww#ӵW^<]w8Nn2\FZW?Ƭuv~Y0d|jϗ߅=tխw.M79? ŗ|h[{ ^-VHAþ=8S2 +Nw`[ƻM__EԒ^H1S3V1RdzR f>őE?i:s_=rB@m'尺 7^<Q3  Yx t=x"Sk\W" O~4 G M;ޞ7H<؀W@&/]7hXa<L;l\*.r,104a9C|ΑeZ )W8ڜ&x}صB#@{g[J qBޅD}3N8 CiJ jaC1rmZ9p:f7vO{6Gwznxz_%`m'rNU[S͇fj e fMh'>Ri 㓜xM.xsQxIgxF٤m8kl, /m`~3 <0f3X\. 7e=ؕ$_͐C: 3Ι痽A.q?/jǡO]2W'v6~, 1}@7bFVd8;Rt/xч?ãh=툗e"ec %r_ OOQxl^;F#Odz+A yPR[ˈ\0}o~ZGe?#{-U54a/z)ix֬a@҈}nCsh;ȅ`+Y %լ9w#݇f~ ph5(|q{/#^?,bfU)_^`_# j :gVZc#z5s(ka'1:{Y=&E$?).dPv< ^xD8瀷lj7#^xc2q˭:ݕ jA*,#)GP84|l^xE/i#7NWVەT[ uz$VABrg3u]ҖӬf ^ ̦^| ͝h|E! g<&^^a5"lIr w;\uBn7<-v,PW/[\X z\l𤜤I)QVLFz=gENB}e177c/fD {^&xC6g%MIȗ`%N4'oa<Wc-xŖAx26E'c'8KM|cOl<6-n ϻ#؊_[nnӵ87'xUDD_Ed*)*.Md*zk1o,6h;C$V Fsc4%gܜ`gO% C?2ǚ鱅%uwJK5gGYxcăYC'b?D𲇃5':^e2搠nWיzZG~|tG?5$~[rŤdƜC&zWb 1eHɀ-ZdtNOIFF1DW[K~ΊB K]Y؃Mev8A:֓H吃_80 іqngx|٥8¤{΅?0㺏[/Fn{rKG&7k :#5;'M73nv"}xKvSYb$_@yx{oUC iHVې3cgdxOo0ۏ?0ݳp^t?tŕWb<{*Wv># Ft]˭jYL Gsi[||R^V|9hw~!;6 O,݂pԌv/5+(F RIaq'^|6V߇" bWb0\ `f_{iJJ2y^U_H;Ep'{~a̶4҂C2?+ =ag0B%ڋ*Z,aAvr/ċxSxxxg71p9--.W:|p8>a*\&7(D۾*O\Y7:8o<sU/}Xȅ$LL-(s\TT6chη6g77E,~?7p`@f"'yqXN~f-1ƒ`5c yo#~O5WlV(.Hs(ɯt ;?!{^ͷPMn0o<#9X, G\U[{Cy'/ir7sڕߠ k0W}Q?^P:hF=wV!7HNx(G(vQÓWlM$Bʜ`ȝw18w~gx4U52Bο1W(J U/9=/</_6Ҫ&!יeMC[u 9|(Xc9YsH|&hvzē`!$8f!.Bn}6X^-ݕ9d^va'9nu'5~.3>T|R7q%FPO (䬅ky|^.i8U{T=22R$ێl0 qcUg$?Sy 1\I,iR1*ީUoέݡz쵰_9Yt ;V U\ n[l 17+*p r# OZ 6Y^:3u~ Zq!PxoZl80x ئ3Y.bJH^W!}N}{^qkp't^L'^YɴJfUaּ!cU,F*P'?f}jM| D-\3'97}H87=-}okx /B xjFz067bD@IDATŇ+?!!_|ELV5 _|Kܰ;. ~1!>CYLr_pSrXoAfɽ{xb8sz(A e/y)id>Y[UA:wཬ+=ȟC޸ď;݊oo/RO k 8"Vdv_Lƣ̷<#|fh(\g)$%tl9(;`p XW^Cn+(Wc‹}xݫ~F'}}Jo~/#knnr1ؚl٬dd,=Ū&a%y;5>YXcWvB<2ĝ Osˋl[r)uc6o|mWz&?瞿ZhġYa4quBLfpozctٱW".[)'>{?sy ~`З^|db9ل؝#T]( + TNo̙O$> Z|P5rr*|Ć{{u|Z}'?&79`/r. \3Bٍ.W|YθYx2.{~ox:p86^K#c0Q H#Jr_xԈW};'CO87݉r$BYk8yɲZ!"Mh]ž/~gCM^ځ!dfsv=DG\vl?`85n.\ :4f5uK@;1Ka>؇-u~0f0XŔ :=zԌ,Tt$u豖q;Ņ<#z#+Gx/ M4^1 [\7/k} Z:# ?*/[$k_OGLDn#oTȿl5IWL AP 97%,B ~9q <[m()NYn_'єׄ9'H|7-2::n ߋ9:C,{,21~k?햾q4cà$F#f @sjl7\l7@9>zEB]Gg$ܯ>Gbn!.=㟾@sl\UUs-u޳ NNJS{(eB07o9pֳAp^;nIS}XzŨz/A [+7x4H\, ш؅f6SO|oPsS1?DbOS(Y4H=Y=vЛ7*BV_s@ghb[ o2c͐z A.x[M NU~27fJ><Rr?wă#[7 xNOMש549ؓeϹ`|ٯ#1hV>7Qnnp^tN/92.Hg@2K攆oq>1⇯=|Kmyr(A(> l=g\AsOrXwS΄TYPdT U8a56/:\y(gY=p^S7}l?)˷wN\z|5w$A]$ז+9}x٤/vDq.q)RO÷}դ;T~ö'māGYؕ:4!՚]_vǸ; Xvlz㕗_4]R_WPD2peY!%No'J퓮Oٹ{w~v}DMŗ/O]\ή;?32N0eJaI|x?eux_x?vK{39o?y7lZ W5w;Sq~IPދ>&^%Tau׸{~txU"w[?ٝxV`ߋ"?qꤱ2bxȅbdOZHc3MA. tTŒ/!oE`?v;>p5\ӧ=QӓK/.{Z|?,Wpӝoٷ'ՏxutG0}{fn`8(枸 9ס( u 7rIqOSANesNx)<2/9ns'nd<W ,63' 4,Ury$.I1',,6̧+ 8t_ g~v26ds>v-[ eF3Y}h\{ƸLc]ɵfXi*OGx8(GS8<`̯ SrC2hv^mM7/4cĀDZ\`=<)GN/<2,gy =:)I_:-_͝x*ND^J>Q[NkO͸_YxJn+?gނwG{G)X1}􆷼OpoOLBWU]Ք̩fVRaM^/1.8v@q=ؼ 7, [ca 5@R+I9߀vx\6ɡ.CE ?<VŌcG 䧀!wYlHZpm ^x2}X3=~(⽭R=|7Lo{w O8\ث8LBVEdTb!9\~hV<|(]NKr8X: ^q7uk9oQjy&>Ʌ ~?FRȽr_rG #^;1%%L<?|[Kk>u=_:|xXM#u^85طSOZN{c6 ]߄~=k ]+ W~d✟.0_:؋# Yd]~B^0 vgx*;=e"86;gWC^ `~Pju}N-RJ>iS҆bB%&ěi2\$t"@=C&>~blk0mYxc%ic9HÀK&$7ĝ!z!n;43vBg'/5 k_'L§46VOvLif_Ӳ|;}]31&k)(dئxwMMKc8FHfĬ2 1AQ>qp])<|wam)̓VL;3+  8+$n~K!?M*P>4jxy!LtO7\NXY0\='_5RV[YCL~sMpz1Z ۊ NpӛF^7=6XޘU6oq+ mœ2$^ .WnbI㩏3wxP6+,>~SnyB Qn ؋8'7:IT>Nru'uҠ0`Aspˡ_TZ <08 d}9#BJB)m^|,WIfwIPwxGLuPN>S2 qn]ꚹITӄsm4' lbE0il^@/<85 _x&?M2]i͐9El[^;rzMf˭mG/Rcw}*? coO>uqx3~nfup89O O+/o~uGx <Z`aH.|]'W^Puų2_0S.[6[!qAfeP|kg,^Ty܈9dU"5,;$ 'r'si8~d9yʎPO2d'm',B%_fhN1ڌ+*vP$<HŒ&/mjdH+Hޒӌ#_F/$.2Xqɿbc&r͍c{IgJ\ ӞfϖיF @aHB$N$j$՚nwG`?o~#:Pmk6IQd3 H@$0j~߷Vfs=[U[NvZZ{g\.,ea" = 0g[+;yƂiQ PԂ[)瞺B+" U>A4ȞqKziO; e:W(G0)u4O@$_׈Q8Ii.d=9,r/pīTl 9ew枕+`3xO>l[sQeBq֦qTUU3)fl][: f"MŧQ?Lr<P|hgw፞{b]87ǙvwgwzmאY/[z_ X>֏#c6GAu&o8e=杒Wm8+<6K Vl\g{w> gF2xyd1; F>"G@<+q 2H8˫^ϧ/=>=jǿMw|%'Ƒ˴ 䁺|CMQV@<r%FAုL}>c/iGArG(/ 8a+awG#hommeڷ(%'sm'ZU> bCeb3LJ`܁WT8q")hj#W& =8/.e^<EU:p4Umj7>!/?ub#٢`C[v8=UVv&I[i?~i/K.iXc z]ea?wMsݛpp_5~3hݖNùq䳺֦Vp,a]$ WJGe@3?kpcC?UzmM!ĩB`'xc:U|Pƅ>6{Kuayko瞝lŇ ivXQ l &Τεh"֋AvZ&roÙ v? ^(GO'Ea ~η5ApɻjiGD6Άxd,>t}y.K.CBM| ק/\G/7ct]&#~Qſvvnp}w-_9H!"*e=ez08PQ\TANi8m$|%oͯ %oˆ _hEƵ Z!/CF>ٞcґWozSIn>nQ}?xf;tiͶ`f-@:dy(h9YmN-䵘v40rG|/i8*UU>gFg>6rMqq>B54|]Ly4o<|ڿW&\Oyk!77x1+\@<#M\cek?('Fqu{(OЯlKOCcx4 @58j84R|cX8j{+N5 TH8cҊ O1OfW$0WOſ+8D%gri^'U|(9b~`<&!NkqpVfr-'ǓV+=jNRߪ5N5ɹN#߳4x G1x&pVkܮ~xGhmrDrF@kv@q=Z7+У3~K#)|,Gך!w`'țd*=҈mqVT'Ci*MmScS(&M|[CiM=;IQ'/4§ߞ|pB/pIn>Fz,YGb&iNHУa$y˞ Ѓ.u|J}C|J>پc{d[FwX7 |.W8~h0<-uo eR7th~O~^a74ZEu36`SnU?-\kNuw3ϼ%&>ߌEpHh u0ଧ+hi i˞^VKNG'0)2 qgkFm'RlCJ /:U78&m>yA3f_L3Oo⪿ :A ZD0NkN'8QYLouG bV0CAcE)3K"~J.xT,3\@3s<KPx<h|Xo8XӎrJ<=hdPaA%q[&J=ڑw; 0R:/C7t>jq֓U)Eڨѵ|SMcKv7[Hx褃@^-=ҢK0qchʟ\-cueRBbp#l79vRZqŇvs/F[W$v=NVl{6\|`hDㇾ__6[1Z7>,ڡm_$pc.g~x@|z]-GyJ((ߡ.O*!Ar5.\h܀c@Gn+IF$.yOP̤' A6_iVsb{N\y/m_?;.>ޫD;/מ$HQDI!Yrp@*4PfbƇ52~+ZcVϢ);,hB$4 m xn /{9iE0U~a>4b6y7f8Vǰz":~$as{+uLueò纹ʇs@Ig-ʟf慊C\-_4y䇖,'8~(9)fG8G9uz]pc%2 P =,Jcv[4Xt\ve'8?Vj9bE|3zU^6N4kR*(cI0$Ȫ^>!TL"cN@z%WON$@6')IT4C[#OX.24\?#D'ݮ-p,\޾pbsi)rr2ks︵Q.Oh7O*QM!A&roi( 7$8)WTLW~g)@&__#c=#KonN?S>ն=xan7''*QQܣS_K3LŢf($qr,|J ۭZϼcfW*漕G^5, 88+ h_CUZEV_'W>,x#zZc]gyp9"J`Go^zkDPe.L0T['\t׻G:|ˆ1_Wt>5= j@T鼢GʫF&\Z[|UFAem緁g$o) _/`I{ |>Vny=kxkClo|oqgL__5sxHJ_;*HI4UQێY5KdQ6^C|+b GTÓ3ih1pVr)fm erxc!Rx# vCOf]'DM<w cb-6j_mƒt1"yd8FRh{%ٿ|o>;+_…ŶJ8N$YEn7IQwjУfCݖGO-":fD ]{Sd ~Ee&rz S q!~U[t=LP4`{H$ .;/)Ӊ&;IasL/x?]QU2FZ>Uw 6@}ms':P gV#H/:ϐŶ@9%x\ר`t0 e k-9oh*u޼0/ ;cyG㫞 PΝ=;}K߀,:Fͼ4EtAazP|ɣɨq$xXwuU覀sq E@ +C'o{ S9 :0@Hœb/2dR a\GM8(t7nN+~.eO==uY\%q :Z.)?|`[zLnwys;,q(J1x|U ( Ҍks8 o{oBn,#o =4孎RgP.8=/D@vy,7,J;m(Rsbr44/2j8J?-Q.)/ ˆF޵kW-ނd 7E!MV9AAVe;n8/xOo;ꜞ˒JK.%W ?}ՙU2˜٫/Z] )"^qtRW8IO <Oy:7gVcڒV$%NPu[^寶x :H;4Uǀ!hZmr }xxo(yj^܀kN}xaS6eE&a 4(Oa$`%\+v#xj9&_00_L%|<%4yhK7Lq;*$>K3P~Vͳ7.?Q]GS/T,EGOT2:ֺ7^7P~ǽ76%Zu:Pzy#qD%@+_G/(1óFFe]Σ`3_$\T|GXju*vwԎnjh`WzB Njx6>Rdm\*<%iƀo{i^-ѓ?}"8~M-"Z&53,, EՃcmqUwuT1.NDp$P/%ڋC:>j6@\^-jv^M)bҀ0?KK>+woW 5ߋs⇪f]YH /~e&/OpE7hC;ߎ*K~#-(? V>ȄG(vW5uu<)g:2G;?Ҥ_c4?z_%~p G?:hRV-k pwS%<#0(HbTppy(btO*ݖH=`;$oe?b[8-{[ɃAVWfw[N[\+L6Xŭ t^.QqK`ө@D2ZDJD[?xaf?q M]/Gmw0[GCO"[8%,(Am\q%Ǟ4Vї8HwE˅(ܸ]G gCͻb&Ryu5>Ra2Piugȇ@IҜ8BhI>ɛڱsCG, EIq48I_>gTI m&'{yK> oc'RH-:Qq/\S +O>(2/R"~N<`/k_GyG|pܹ[?3X]A$j$| R&;E%l9HR484{ٞMq^4KҞu08lms u)()xh+fwm7p;F#̺lK7Y^|O׿2J2!xu^o庉'r_4G럪pbTn8uH-yCErg:RPr%l#o&o`QaFSv$#qũ9r3_ϸm֫;̚o~Kk!5YׁoLϟ)YmZ $םsͧGY3:Is9o%O7l^L6N|P/T%o#4ȸwX D=a4yG6vt~m/5?/ !X> '͜zSA68|#)ugz}rgD8&/'9pވ˶a˞N}v#BpaGȋ!_u{W^RQ8;ә9=e!Qf6\m[oY\\J_ʼ@Dp H=P1Q۳Mt.1&ͺNu_ KZT~UY?y7zHxlhDAcbƷ~o`4jb T[N^j2C0L5ŗBJ2Xf3ZP\I3~+-,萂3ɨuyA\e ^Wm~rxJN#!(D[qtMs^D}sl_xyN/hYm[Jw}e^O9U̙zx0jZVZ&PQwǀ(I tQm^8E++_v⯁hײ$j2,yv'/H_t^c!t+jk̚nxcf]nj9 U6̝ !sIS^wgA={0TzPAհl#s8 99U_@ask1*p'nKfmCɰ_Jm'Bq՗He|9})=zdyË|\nϸ(P H^ƒ$+_/\#L58zL\T6Z( T~~4^&!z*6/Ep(9-šc|%N5@r@%{od"] #~{xtXl,V z¾{RAA2JBT+diӟAQЄZofȣj= v$g28rEA(K 4+[ix7hn먎Z"˓fq\Te`xhO&zcS/eO}'g6?| `ɲU6[wFpIm>kIp[W0o_q WrSE? 3S=!> ɇj~%^i?߬l#!)\^ё œſ3 8{= ߚ 9͌=-,F_|Q!jS{'kM )P YsP JepGpr_jɠ56$"F:tB;pwu-w=sE~'/MmYv8ܲG,'K.Cߟ|鋏AΚ=Ϟ yu-V~}/o{:zfY](;AV~ xƅp#9jOT0? ya}j#(x'Tl}&lFCDDH00ꆏ^xg\6.ywŌR)R47m٣W[gd28ݙ!H-(YkӸ'=+H@$\œg961Mb.@@KYog=W*tRC?qJ/ƶ/}7A1ě!_}Hmn9ٟB6t/K.y9uf?+˟ZC]?\ Pт랣LW~n\շḢ+?}'K^'މܐ/cCGFQԬ ]`KouS|~XqpЁ_#(HB*'<"7oۋn6{+3~) C#|uba,|#L=8v:r&,UW& \(EAR3Y[0 j& …8kO8k9`w/^C;+B! ixYMЊ;P~=2Xr]MW/\}xS_yjC5_s:B0_CԹQ7pSWD V|<(*k4NҘI\!"4s';e\Λ~-9 aA0`=3C8 8i?it<B'yր@^NWͫ[vqϻoٶGUJ{݅D堌N gkr$8(g8Fy>6Xf0mO[v"^^ {3+,ox5+rhPj1IvbV%xU?A<@IDAT WB[VO/o=3| k?!֢|]^%JaX:@gh]7\E|P qw?\Syxs !֧#}ȋy>MzK_o?q@_m0?l=3VqV^slsէ-y=7fN0Nă6x(?Pr%p@G>u?}a~]˭ Y#Z r/-*ωeY(-4CNT5`H\+@gܫ.dfS'Ѳo|oFlkW}g:p/`B>`fmpC6q\E3c)ZtglV=lU~Zêh#O5ȵ6u/p'n7P-g*{nz^_<3W~>,/ze=_thu11ۓUWe䉕WƉL3]xZ\8jݯv7 r5x f< CP/?]ǸGڿZ*[~zw7·|_`8+ T2ޔ !h1)q GŴQc,CC̸kM칖8YaMb?d8eOv{xK-Tg*v8h?Fh_?Beqħr\<,"r+gOg]MgϾ6G7|s.3D}_/|.6smkǗjIW]%Lҝ~wMw/{1Wx6=Wʿ+$^_]R=}|iJa͏؞ @57Pqkvh;3=!^bo=nϫ^6u] O>o aruuk\~XŅLjv3+qq)(I4NM:pq͋.'Dv5םE>@ Be/3cWKw|"{:PT\wj]5)j'ٔe߲WKav9wX`dѹ485s9$F03;բiw㿎WGӿCeG]m"HcՓF'GTfhC b% ґcOKv<ԁ~~=kI@{gia%/d{kQ@rZqXg,I|Z_O?=w)!oM/m/foRȁXd9 W5:uHszP 7Z{zWO.{:~Ɓ_Wsy9n=^VAβMd5MY{") m35 M }{Us""i1~]HaH^D\7hKk)Iǵ?qz*U dViyUjۛ.gpр]#Jmt !Ve^4ae9ؓi ⻁?z7y#yGH}?y|lV=(OwY5ӼW9x~s.^/oWc|ٯuu˸?=EXnL?|\~3].Z7Ux_1ghf;N-u;`8q }te->iOv1Tvzu>[ 6'͏??6OȃAGLnxt_0u?ukvxʐ_`*#H+ s2|,(CiUigVJIP1Lmnksn7_ ~okKgbU7^#)ě{vd'ucESvͨ459o/R)7R|zO?O^>YϬ(nF(zP<<_Z 3(d=QGQ"}! @7kmu|#/R6=:hCx؞OLf.~PS|#;5h"4C &Ta>ݎ粏ZW ?E@4Ӣ[,5^V#nC:m|7~&qtSE'+ۓSE{&AAw=YQԳvF#)\,QG+4f\CXz 5.&⌳W\\k[/m>ቃH_zl;][l__y,eZZBgrm1fP+u9.5mUwa9(ء=_᷎oWC?}ZnGT?xث"0ė0k p,;׻`]U85u aifm B@d?\wk)FeᐨII֨ݦ*G{[^euHUbBm>UYƨO^0o!& E;k'nZpϒ gD j-fؗ6sxx2̓p_-;kx7Nb1 I4~.C q>/|xmul|ЏOϞq9/ ۵^uZ^x:aTI՞jFy+F֝oˍSG>0v \r5M+x%>䤇c{ r?}[g(3ͷ8\um&&L3S7 0,B!c\TB^iJVQgo1( gt%4+Ɍ*^U@ί?'?WZEֈ Kښ́2F)$& 5yv>Dy(Vzn[v缐j/j>~cWq{onz0~{OC^?j8"ȽDjOs$i>Wǿ='/OϼxNydHRZ@ 0m]ւ_~jZcɟWx~p{D۾6$Dn*Omٳkn7[OL99EױܼJ`q171 Ԧ&4Wb4hRmh4=<WDOR?#n7}^>}#wM^aND`;wĿ*?_yןwO#iL͕·Jʧ-\XzZ-)4J9/׀ĕOde?w"D漢6 }2+Dp>=ޗDGs7S &Wt3p.Ť2 B"u=N(';fm_j˾x |{o}{ƝiYΗ,X"p"Aǯl>؎y_ѐՎ|8U>vMT|_)Wyjn_୶ڮ7Ħ3瀮-g_~llzC}qsޟ)>S䜩VQw;&0Vp+ }3Q`H&^⨳P@?`9]1F_í9ow=O_7q,X"DM2+?g&>_Siml|樄;Fgb8mpI_t%`g{|'K}/6Wf'_ѫu f$x.7&wow2]@uS@KaÕIOcVKZ+gO㣳p^珂l YqQJx@aL.,xEǧ1rݝo4[^u>ȼKgV8VIGղPCN5B8)@O?`qBOF cͬkҋCS/<77%cYiA,傃8؄dcsW Qi>Q<%:2/$QN8@&N&:M+b,GGꏷ>3pkHAh2P:.t*fنiZ?6kyoxox[BPqqdt.N 9@lѩI" {[fЃ< gNX/<|b\G:.จ"AҽQz%o\?_}o}[.U }ެ$rC:k3q?#e 򾕚ӰُIƞN}:CkSĹyOMIv :L lMˉu*{ܧ=+koڸP'C/ eɵ4qL?gm*zc;y4%?*elA vgg7Xчq\ֱ?'sOW}mn?gߦ(Gh^:w<^:_֜y量Ʊ+|@*j<]뎑/>~!~c<_΃SGrODHSvrv?(&!pC/J~vᴑW_k;~p`ry򤜩!G\e\IN64۶os8YD U!&6d^jJҗ| 3'/>Tx"KgOh?}~4H^"D`8Bsu#pu⧚CwCnz-*&Δ yוkY:3žxm$>@?p̯ ąϚ0`3s˩[pN1`e,ZPmqG8Yl)i`0\ v9+\#QjP3_z4?)o~_c.ltwNҮ}n>}Uǂ["D`7(r9ܵk9_}W43ϒOClPM\%~})z(*^ ]r)Y[ư2ڐ$yQC- `DP7>?&Q1'xb*_ 7~N8VAmb%5)g**'t3Tm/J-"-uhqu/l+C~?uswuZK,82 q'qSGcp<Tv)1ڬ9# gsmuBo0d5ᤙ.OC^y,Νݪd?S'fhT AT Xk nd0T> S$T9)ūt~itFj Kk`?6^>iDaɞaonV2nQ\m7|NW~o?hI$ʷr[:"6܇ѵϑ{?֕?AjDd)#qGυ;{㹳@E~،JJ`mmh+캳fљo|}q5ZY&DCVŒv> wnKc8>}|r:y SڹHQs ~N?A?y=CN؃/7Z_xt?8=OIRr ^v?w#>/<+FKV>ej=鳞1_k| ps~{qEf8/{zr~?޷d9>p]8rL!"/G6O]7 jֵk҄/̵T1^zFsmdH%k-{{O_쿡]Otgz?K`?K9~fr{)K.W.=_g}@CO|Gӣ_t3;C{/{MӉxٹ _ɻsP;)*/+8v3}E'R#8[6)H cÕg~[;^\1ӁV47}sVr@m TPSɐq. rqT_郟 >_Q\_O>.:]5w6˩eQ~UDrUABnz߇=rs g4ԑOoˎy4& ش{i?)3x_h2(\?cCb~ wz;w{4w2l#T!f(ad Xi1D+Zr]"a9L h/a.JV%lGq(/^/Ϟ>ӧ~>6=W^wG'DrEJ{v ;=Iu>V]ұ͙P?%p^Y&"Pu .cqH֊>)PqѼx}n$Ra` 6‹x.}>@>)H9J1Mhcrz4Yl`< v6 8\0qs1I`a#腥Vm^/p7;?ć?{mn8zOLq"?Q6й%;Wb풫"wm+x7(6,y*Q: C_[zh~!$_8 8gG9Fi[vsntgK{&'`^;HVL=95ŝM1ѵ$&Cݮ5Y5*Nl&g{}wKEtbD`9\K]_, RkEJ9pW-@DZ镼JET,|?} 8 '60ڲp?Qy5> %z R`G`J:(;'G1?O;1Ƌ@ˋWNZ#Z8Z/d23 >7Ϳ"re[{&Z7*Wj풻xrMpݓo$RUS!p.;4 fH_z_C>@~4.w>5W3^)OeJ`=D7p浈@HNTU2T^VF y_{Lv7a@A7Ҝg_R8䜸>5 Z+<lC'AMܮ/2x>؞ @c:ǬCP.[TI~MBN^ɫFF &EVG~Nq}N$S5x9}a4=|>`O~4ԏΟΜqW& RuX՟p.9+Ⱦ HnfM[w9b@ `Eŝ7s:ڲf F;qO=8;ܪ9w|s3?ObΡ%|#⬗m/[uHw,7lriz_*7[^o|эO $7zkE2F>-e鞯`rV~6ЧM:•BoOwo[azi!;0;kb_[?p_MlCd@\~*X`R2XDgMp<& v2} yɰq%}Fjb̋>IS7y9{ۛKKY"V7 ؖFee8r1tþDm?c\R]붐@&v_F?s&)S!2 /wo8q7Fy;vtpb\as 9NfEӛۜ5) /\!7*aQ &?_^t# @A^W:c%`e4irD-QƘ'諝qh1ӤZt3Zbp2.t.ߡH,!Wo5=|mn$}G!+Iu!s^歑Jc 'qos؉~~%z̓/@?ïrinvxa3G{Q(:8)BU i 6SmFv'& L&qO7 څjph|va@?7,ߡ~cXR_-E6EjeS,up2[>D}A8et6[$e:lC6Sx)L<4Rgs63x`w[0ȏO'?n3Qw6A=:nk8ю|MXO&Es6Li]_Zv #'X.=<'Ǐ]oxNO*ꕀ/7EL셫{*O=F 阴1i3W3{]uޗ-/f$Â}p#Orvc_>Z瞃wٻp1ɠjRgY'>]A[ѫI`*X=9k䞕9N5=ʮY~If5m I}8HӯzQ7wf7C̎m|S8NҜʯԑI+V ŒWާn0 xZoa_?̳kc|$%)F@]i(-`qM*8f~& Ф|7/Ũʥ E`f;OJ0Jfl=G1wFc r3Z =^( ;-dǤO_ $hE͊8'ՙ5BzcPwe%1rk^!4\.y~%b 6wwD{?h84j_aȂE[K93n8j4,1;hts`:ÔK5]"6:(ug6t3}DDJAɫdX,\Wk\ ٦&U֢@'su.m!:Q7B}~xBf̷I]Cueɛn>6@d>: F1DA:5^' )rf;ꎳ\䢱gRS8p pwo?|b]nYO|GCNQ2j)[>67PɳT&W>6_7nPlA8I4 XRN׈Kȹ|gs3/ýCU7woK,zk tkι*@NNsFP5g,j2Iu>+tOe?@<|iEQvց_:y曀G>"Ύw/篯]Ne%+ؖȉ~ P*TD@"?5DyZD7mk'jo}^ح}jbmo߻~phAl&ol6:c= 8=]Զc22%> m!aJy|h^x,roNW3sƕ˩^-X"03ߒɼ: W7 Gp?ϕ@Od)RF#-A;˜$5l:O$Okŏ _.bcr]٬ IAO\sm|-p4t΃ =fC znnT9 LrTp4ᙵ*cG>. _~X?y{m7m{zVX]P׷N=*н%Kn?l[qN܋"*y=g<7o]x%āNptG5m&qFOSH/M~A"k=Hux~p]z8MpruMO?$o_ tP*VZ*H]^Gmv4㴆7o\OOx{y^^ym Ͼ0?D<ta^߯[ /=>X^:D`э'm{_sayR'X}%wdboa_ڕw}V[}yUmm;-;Elz~ )夼#h|LH:_(IY<95z1[^jg4<>̰4_cRM\:}aM|J^:7}L>29._=@CdKr]_^"p"@"wmΓ0 O$ڙg|]y? H h\j#eG)>Å?;PA9\q[w ?%/-9dN*Yh\f:#c[ -q7iMޠW<4SY ~Un.B0Ъ9oн_}Gӯ}!Bo9ӟ]5tEoDGw"_fiVk1gF\AOÏ6<ϫWSB8/aA[Wvxa16E&A$ *6彮40<2cUc!Z8/\9^owG Iu>\J)WgϽ z;_o%(- \ G?~Hzdv̙vjÈ;;oW㔷I ~2ǁݸxƶ}FWگ CR Rs$oz_dKxI,"ApT;`t6n()$)=HnK\O:+RE\,3eĚte?K-I%әsom}+U?7x]UvvpkDઈ9D?#[}|8rtU{“ LMYvK j 6yVw)~7d (rl} *?;4ښ4j0lOO[8 Z[~e/]#gۓD9H>9~DCfEEnw~ϗ^>3_G| _g1}o5}ߝ;x Ӊ_5onfy-8%s?\?~gwG8rޫ[>G5Nе9qƣ }"58+"}$Ƶ8^w\0K5n0,YRWA1 8t;hWvr]3WuYx/F1<ۮYwNt}Ũiz1nn짞:n5繚LoGH;H~/+WFo/l+={Q?M?}ȋ-W3Uݼ;*߯y5>6ѳm@[ߡw81pl}=ٟ.y)((5.GЛ}-\o_ar3YL>%cjɫ9+}Q W`BxURYHu&Hzokz;w{[D`7>΅K{ /KM|,~,6Ti%O3| yr`c1x37 oG---73sBiWgP#>;[4EN> yJ~;˾Ѵ>} %)zq|3j< r(e kץ;n(f9C+ɇ(hʔV-EJv))C:pd!hrՋw <%~coWn8=]aǭ,Iɮ{o:}>MRp=XqpW|8 eV|EYfw&&)~/c%f9{2R&:̳F5/EK폝^ 6YU|rT7dӞQO yNf^dF?&;~Պt/L8/+"""# S|5A\_HpצaRruL+ 'zWz%0{%Wv{U;uA,-gv|i `YF0qPOΠ Ca 8j(JEQ@v`X<>+^|rŐg?ѰU-S-ŗ~E@ Qsd:O`@4&Q4*qDJ۟51@<e?詹GO-T~F?oC7QeoL?AA=HNk2z|ۯ+L*+]g3y=Wةs0(qykKiBd[ZZ\ȆxHX-&e]&\އhTm:/8"Otwgs^ EPY}V>>B(wuP$4^>OvaƒΜ[#N8AA0l(XëTd"um?c& *\b.bQ@3BN9T%>H=ꍴf"y<`I~xl+SٜnjV%#=]/~/M ?#PA"eНa"(No,(.]}&eOJ_On:=7y~5iA>NG|@[i O+O:%>퇑F@3dܑ<)mƃiۯj lǶi=Mx|#oh1`8!18T5yS": lWewvbsHL<Ʀ(3} `I'v¥TM[$1X4"9I-e}X~ 7`D7ԫ!:z8v-E/ Qϋ'Oٷd{a?.??[?6GD_'>tW^8 FDCl ?6m|{Oډ+ʫ^ti,`ԌpI^O dhY3% zN_ n.sT]3~cƯI?I dJ> >3<vj0%oԡx|Ŋt'$qT֜1{ +ä FQA@KN``"8F5 h ΤC8aw{5:.ߊeKM_8p >t\#-SE>vT:ŠO=yo 6]p X5ͯxE|iKFp0ުctIt_S#O(oN\Wr ye3?@yG<.%>LrY,;`[ [Fp#κCf9)|Q & OL )!:=A;@/Oс^{ DiGG{ ?Ѿ1L_o<6"wޞvoVЬUlN9tg2>  k"iEN_~NS U/;'Ӓ3's?0jug@v 4U * сA:&ѣC`"Z ~Fu<)Fl!Ns焅uY΋`j,"XOB}wǝ*pL5MFwqP}hƧ۶-_zEj8n,îa:o $XU% ?unl9 @5?BP:~Tv Ng ykp}7`'2) ;)del֝{ބH P2 u`B 4xLvmOZZAZs<W+>Y;p ]RįgGp'v( >=9h-+AU`j ތO}MAD 6iz$5ZT8{s.|;?n~jV[ۧBvaq+Lrc}Oz6NS1~Mx,@DBuC͊]M;OzAW7? W7K"獑G`OJ}g%v>s(.A~|T>kL@AP+6ylÁu'Bmj#,@+;{wZ07 ;xJ[n /T+Gb|TM) 71~Ap@ٿ3"> G]/`]쇄Le\=,je&Fw>,E IbُF Pjh7B*` 0mPY.U$#IORu<&^+aj\K8Nna{{?ʟB~ShQ~)d/ " ^wJPI,]֮;gd7иx~FA2N2f00<+Aätcy)3FxƧ&TWʤx̅~Wag9{LT 7$v9yzRp^_1p߁({@2|Yۣ~M3ohL8:ړ_[\7`# .l,ɱ6㼷0=J5)`z,e'Aթ &kFƙ"Hk~qEGz#?!ޗi#FOL#;&wG6zk4VTxn1 &|3iU9%uqXb{{F衿WߪVkѰ:˸9z ((-X*)Z-h n_ۃ= MiD,>5dE5&%CܔF;nȭ0<޷i"NZf;<"0 VჀD^Xh(.An鷺}l`(pZHN_<;?-]84<$fUkGl,F9&1 >ICV';> 6;J1s ~:m#lVZҕ+xqumE`D`myPNDC}$a~vPJ:>;~+8jE0A(v[OZ~C@犭]n|GXB7Y6a01`\cP5Ę\#8ḞVN=xH>ȁfZѠE% CogѲ p+}E<~`6I#0 a $@^QTrTdʐ4Fe3$"|vq~;fQ@ w}aO|\i`&& P(F;oWS&--/MMVQ@L6\3>`OqBݾ?C!>y@>zuh|0!VP*@ŭ ^.YcK4/l$3 AEJo@u&5 )=ixcnrQ0Uغ[1x0XknhhXسDz怲>FI*79H[wջyO|lj"(h֙g|̯6; vh ahuON3Cm=CgҗK9dI[4:`8&AbtlT$x?mC"xUp ÔUŇ+lkYBdq4l NkhXۄㆣBd9qpt}gίlIwMl3ٍO/NzבTMU3^z;m߉;臐SIPDy ƃ@&lP@U5de /[ؙ#L\yMg~lc]J9H<у6/f n>dsv}(MDjtPC4ԛ6׺T냛nON| *_}艜tV%GsܜOx*g|P#\ROQ;v{|cxb-}%$:!ʜ\}cctXOBPgUKĂIcx䎯|q>PH_}d#mښZZZFSqFvwðmv=Z=OQl 6+j' AV.Y0٦:ZZZE`J:݄eUJ{l$p: w +D\R xM~c7,^xwH/iz>`b}:VGL'`ˆ,h 3JBt0H19 8? =*TrƁUOkjkauPNɏOZpo}ǽh---cFS֌)QWzZh h PouFO9~mTV5KEo.'>XW.mk^'C]l F> >l| MV&+?3^V{dT  +(Q 69@ ڟmP>cF2jXL#d}tWi_sj+---cEuԌ%:,q{( H3 Y.+i* MNtxȡ7ysV 3iG8(6)ϸ=y;@ ՚a?OJyDm`g]7:¾A^`W#_$}P̡ϢQu{Aw5V'V< ( l~9n6A/頗woJþ7;HXz̪tg=v0 X6÷F%Y2IVMA߆]u J?m cpIq{t#1(<"on\Bq؅ax4| 5>ϤaߝOXs3ӲU[Gg 'S/n ?=;aW,ys6Q(:,ҌĂb]}^1>Cq=>/0 y ^.jcrQbXGAP_'VGu + 'ܬ(&87G&bwX%EA ;)/_O<nA1j}--s#pQGt{ƙg_?W-Hax0 NK^% 9oS KV~t]|΋f`:c`3x=R`#VP|ԆakG]/T3ˤ\1;gwb=`ÃXS fWbq >l͋?#%G+].ϥ~^qVaeJs_rMc/{vH[~CcPُۧLˏ=>Zsz:3ӒG4(?ʕ?~_yiHLk\r1{ qŞFgaGGi2 pY7܌ȧÑ /="on>qۧ'ܤ0Grs1'Qs%k-uAL4_aR:;t2Ah*7˗-It_&་N\,|ӽWqJl'R< `pd^~+^LcwJO}8H>j\̣ikD#^MMןx1M=79rwJ9;c5!"Eρԗf,B$JჀ@vvH8x?}+q+ _>6}2^[ZZ@I&`԰pֻPT98N &p(JWiAQCZ$-}Lysa20_ .J@Ր h8v*$8ge>A.P׿xbYNuxs 1jMϽ5'#72Jc:PW4ywf1;ozfDqG5':5\"- -BטZZn~N:8AX\ #AƢUs|@McU|2FGbTz n1@cM@?z3ԇVZZZA۔<-_4=pgCD$(pgPV V.\I`$J=`Cg- ?]$<)|8az_4XGf鞻^x &@L LvAVv3g/'8>W$9}`};(\g'|ѼN]YC+--- ܓɞryЃ%-"FI=|o$Yipp Fb 9︢pu_;{OswkGnhOW~ ;8&A&…Eՙ*a|TRh,j 3]UZN[-9ّ¾'i#2Cc5,(mEEE`qGIoz3)׆o wJdő振PHN:.+YY׃eu(8%_Qd?v$7Tb' ǟ~,x~"rZ_+---BVMl.oA1g@Eհ/{ _!]J8>3FWDa1?ڨ:B\x i bA5jb8qy63y M/䌉CA"d\5 z%M&C<ܬXS-z:zY!&w~#ܪkNM/nm,} ߆",>8xúg$}ƀ̈́Wb֢B{BDkDgҨWw lfEu8׃Jߏp:fOiy3z>{W=y x*juR,`Ɲ~|_6X,ؑ,s/׋q)oKX7{me>aoo=STN[d&= hu:m= hǹ vp 7Az@KB xkxĺׄ/q{S囬XƢ<$^on>+(YD''(cgP`g+U7%^{;`}e _D)_^oRC[PM?kC< Axp=$$[L&[tohdfk. _Y*nu)~X(Xn?tåiIHІK/y SS=pSx񘸫 \51oϲ"xUYCy"l#_ 2bڋ^xX֍]|T#0_\ސ~4OձH\Ddy)Cި Ofkc?e>ku&|Ӿ`D+N9g[gK@+O-aә&% E|h~PV9):c. 1rQĦ F)${Rz ;aU7""#+#fv +W3P/[*%^;:N⩫Hʮc&cU&o ;Γ!."I ]Aq^|C~kM[P'(/z+'_dU[AjrPdI+O'uJ׋C >瘤SA}$Ă~MTKUե צ좯ڴt =EEE@Fv'x9\ p(\[6W2F+X8)/ 8;dE7@; UN>0_ R-q'L\fr]Y]8J ŠC;*LZL$XܩI-'#Oh·͋u4HwǮH7^s-8qpۿ%yC:ZZp]a^qv:nrI}v|}o=]x4 k?p75Apx_H!T@ tE"OfS֮K/h sEgnyZtFR$%W-šМfHMݰuRt%SW[ nX Ձ~]íVZZZka73>I8I$)7ەu5|fEbNUh!n^7fBzb% p^yrVB7nZsg- ,MvNOcS೧r2=I"95˔ *PwA_RlJfNY.{jeh&*|rmy0yNTM4D9yUL68haW9xih8$"LY gHŀ}Z&S6pxu ުΆ ;GC\Q]ا +MPH)O?Av(9umM_;@o`[ԉ¤``$PLFp\\E8Q=X ԐnJkVn}---2ðX ~ѝO5?P#Y9xL !/u֌?:Dױ<lMB,Wg>-LT?+oyDrÄ+X  @8}@"&}>iL64IeЌI4h"4iPFZT.֘LTۧx+---Zaۺ53?e+j&pQpZc:|Aفvu>E(9N~ͤ j|S0ӕsο`~+_;!W}P0J19j`crl44.624P4ԓ J@@af_7\&n08c@hd >3uV j5tqT*?aOt~'۪:kIFoo{w`&L*&A`2xP&G=yR|db2X<7>i|m6&_*u&{YPYpMExE|QoqA%d㪎 n7+62~x9/adGe' 铡I1-hD5C;5oyrM&&Rh7 ־KVZZZ[=%Pj E ,{oB+@n:W c<o8Q%JfYS KjՄCQ ln/----}"+e2I|Sv3xJRj 1&{Gvp @v:( ~q_Ӗoe~+`~x&%NbI15j$>(UI{(HHMa}g0y.-;휷u,lټu}3/^*5~#fMگؙɷ,ɀ,-U'"<+' NK-lӣθ`}mইj---6ð7/+`Q/( R`gP:C!k.;4H~B /_Kh08ug> G|ljhVtԱ sN&U1YZce\|dz PۭmCl=---4ðm %cT4W͸Xvq]8~Hs^4F8#_~Q1+>%7tpjcu—׼{&O,xRcr淧:jL~<㵞4`Ib?v|-z9kv5~'_YTw)G!6okmEEE`ElT^ꎧYdW]١Oxk&/"\Dz]Jވ:5E>œ.[M3h "d_ŏS}R}I]kC֡łU14z]>ЎEQčSڵ{oڈ[]w;u, 4߱{q#c|2C8On{^Z ">;q8<|GF)_|QK_؂><說e go|ۻ{3C֓2&JXL\&XϤaߝG5a>R%Y,q۩0Z._N1 C[tnQLyFȑc?q p+&NM掫&,JtM&2'I.iu>,* {O@iTp|m0(FEE`E5, ' ^e9p@́_-e#pe j 01ܯ^`_zzI~*QHs+}rH %Kk+;5# ǤUIՠ̀VA^l՘-oM~caj-- $O2VY$RÓ2k//;rA7z;#Wu Qhj z!-o~[B<Şˑ0~+ζ8ZԦ*>1CL A9S\\|f3 J]V|M3N XtI:EEE`!Eߘ CnGe$>DU_jX\_p/.*vFn#'6zT.ȏ1_5ӗISr:zb7鼦t\u0 mrI_;BM.&M;EAB;ClBvHkd>q1~4?͝_VVJs},mJ@@0 voc+10 2@>Vɏ#i Y_ :@~Q-N>s?CMSf΁Np>=SMJ } `qA /Gf >Mq1=ZJG|לN;Դr労tْ4GTZZZna?\Gzl_+z[c#Yq\+Z m+C/Wh`uPL,G<;?`l0"mҿ`eg;'Բz_di5k,ê W_&W+@IDATf0EEE`F??p8 < :4ʚjN ۹/w}4}GC"L3 .<8e[[~_T)rqh|Ʋ"ɆEcɇnChw,Sm_|(hEEEPnQ1F^Q J(r U7aـ+4Vրz:@@ffw(TY$hw A)mW.I涚lL',Xe)Zȇɷ2ߢ v2-KvÁAW,?*x ;4K뽍, _|.cugqq X#P1%)j茤 X'Jc7qtXasp9hTOZ֝s^T<#'?#ǢE>8I,/ P/Z_C5Z\&J^M]aK+"""(#O;>7ӄ<H#i;lW)Q\n Rpjse?+$k"%} $\xA w-WyL*'Yw&ňZqӠUvnǢ:S-,hEO-], L<gԱJQ[KCMמ|Lz7f蓊"""#_?~Z߀Xd/f~SLPJѠ ~45 ]1 7 U%ュ󁃚A׼-O%&dkmi(4d^^}ZZ<:or}ݯG\YdЯq"xZZZX*lڼuwSī$Hʠ)O9Iq T+fVi`]pI (*J{SYѦm{$39˖SZ\>"?.>.ӯET2JH)9.,D.06ihh/p1ܩgjZ|7oHnX dE WYM+L o_ 0{>B?ZaHIJ>e?At@ THkG}V{?rP?ܵsgkK?h4MA}rdk`1icQ禡_{Ji=N::mmEEE`F`Ƕi=Mx'IٯG/3ЕǬJox뻢:*ZlequI-s =Ѣ*zc1@o,Ɣw#'䚖&""# ,ZY'4S±QfP(#Ll(AqL q6P jpQI|詨qzSJi˛ &c, fgwNX)O"`QTX }P?(VE [My}{4*f.6-tƙgd!yΐ\y`[Klܽh@?>"p9}Ɖ[i- SlhXvvלCsQJW1=&scvĺ"S7q&E㹺p_`{?3MoN~^pKhP-_6e#kMqɇեʼnUf ?W_2p+` 놺'IՎ„Kcp631Wc9w2śx2'~E OќC G٤ZN;ꨣBzfLT.5L,xx0jYhuYՁʼP [|^PGN>3߹0W|ϿC%0m'O/!bLVF3̢1Vg RP+>6"x-? bNB-&_dg {!?V+--Ji>A+ w9$U[`ZWb^wswq'<ЩCWܜ.Orn~f[|6tKp&(7f_kd 6`.`Ul좈Ϊ&ek(!~),k@C(Gw-GydzӪٯ zpyH~$܉rV' KFuRZ?m8|UVנg"""pE`(E ʤ(8W%m(Tw#qQ'q*#Ԗq42[}mU7?Y|wvv\.|E3/"$_m _QߨV}`C&#cspa7r9cnW]. jG~_u1|'DgG"w-7'|jw&qNE4/2.6,Rk.".*,&ET~jLtT%c99ï51y߳`I0$]1_AEOF7Ah2wЌj;3*Zx]3`ƞEEEBꋒڵC?.y4a59~ D 6+jV<~2;qlk2Af O9@$-g;'};;"(67f#LsIH(hmQ`i-b#I$X<3s)jhh8"j XCO[ 9T'q:y'\ Cc$}I s'| U_ii, tfSnOӮEgKea`sZXDԼeǶ-tG)/L^5X%"w qsoJ2 _PwxʡY>Ģ(fhjZbvǎU?W/v ;%ng~tkS!~( ^^yLh:p*SOKYt ԧ+{-%w.25M0gaj--1`[*S I4rtpoQ?$L> v~+k!U,џMQ, ^2+kbybA#M^TbmAMn}---2ðޯ?ZfM[CJzY Sr;8h 90,mզ-]Z%VS;3T/.(ϋ|w|l@_yh"""#0 ߶9r4(gmQkuIl8͋1n ƙ/`sqbQ=d#|/xL[{@@ 6[orp^'r3p#AvZW'Ox:)X5j:? 9/lNWpgaTzoN?IGZ8lyaiO~ Tp|m0(FEE`E5,}QQW6^'d;&rLcȉ*Î.y`M$p/?NYsE@^7~M3 esb㢅}qb1ڢ۵{O]_ÖǷ[?vH5'fv + F.9_TZ` A/\-r1;oZHwrsCR\atLPVxrOܹ(~w2 ^{$-b¢ ~1һ^uuZ=}̊Ӻsm--!u~siاc,i=9y7qMWd^~^tf)NC2]g;T!}f:?(\8iezm)#pigV\.[8o@@@'epzFuoǢo/M~i9zΕyI.n ?InxXQ瞎 |ӏ{R96;wlO׆UeN5V٩buwmU>\a4EEE`FO>/>$ɻ9q|{}\;?+g>htd{&=NPvڡcѣXo?ݓmr--- :';݆OuCC\$yGP'q c ?$2rS!e;*K\G| uIoypfv@;RSYJx鞇o|趡_MQ@@vPFc.G2WRdQ݁'{66&T:bӠRG~P,[1I{Mҗh E;RuabѪjYz iEEE`AF{anGtZ;I<_3ES$ӎoH+y?;+ͧґGvBM(}I̮<)|s"@.^{ڑ!0;"~|ooDCWKnNx']a?ӕ\{tC%L7VHd`>J?W|V{FdcYO[_jӋ:GU[ZZf>b=om:%oxWw:^9*]$v7Eo\Ki>_eP`uD~ }0\mQcE{T{8p':){ v4ZZ'}~;+s\IW)P)?>wS]k]x >ݯzQOtOXAu.ZF`.9dn ֟ {(O L={xz|tyAg$_9;_baI.?W{t,hm?M^hrĚl貫~/>zȾ_G`~t LOl~t !e;־wb"cG;v;9z tՆr`O7uXk{' G>[O.[ysٷo9:>q{:Sm~9l6G[[f9XuQʱ%W 89YVe,8C-\;ꬭT+{Us.o`PakA?;OX,`c~d(~B+AAg+ IW4 TA=4zGV'5Sݫ'C6Un_vf|Ҙκ:0>ri 0x=7Z *}R ǣJ__J^3^뮊)xbz F /_pI7_݀qyUG_ٺ!ևc>wsK'J0=o~v1np{+QUV%e&1Nj6vN>T/{b>랑/V(GC8Z&<{~g䏸VwbuHQ:-\X< ˓ߖ/ik9)NX~q"N` Z+{T_{š܇ڻNW?ެ#_;T$ 8ݵ ZaqohBͨ45Tˋ?Pu_CpR (?L0ZW"~&ƁT(pkV#l5~\[gWW TawF lRɚ◦d‹X갺vVKI޶Zc'Ru2_\Jy8utZٍUQKS!E u:{e (p6ROv72^unv0Bc#(LŝnUW_ţ^XozOPӞ8yHxƗ{_l ]r>_ 2tY?J.^~͏3GOyZ͒#ȱ8Ԏ'y{?{yI8gAWxyܴ<֮K c9,`ϧ׿:'g>^?UyRUWd99pp;8deni qUqcO᪹:(4'}8P[:lfLSV+ɺӱo*mapuЏ7)sij+h޺# J ͽ8Pv4G>zYP/v鎯Lvw+Ǖ3eg\t鸢ay3wŗ_w&7ַ^Ytdcʡ͊nNZtXY; (z(Ph퀏|T}P@ZWS ">d;0 ?A{&/AHna){sdv}L-tWPڛxxe cN]b>oD>OiE]v+\k݂ 4uJZpRz#ptup1Jtq<^Fgc`z?jmuC#i< cXA8/zG经ۺ^W4Uǃzu߸yh}I*L}?w4wbM/Q!^Y-pPu&?T&`e&dˠvIAa2pl%NMR*,~tP5+T ?U$u!2^c'x8(P=6A\Aac|@Ǡ(OwzUdٞz:u1R= THڡioݣGJ.^!>R8G{`f4v偺šJsu] a3Ȼ=g=b;uvb+C.yt}_AfѢ{1pW0#MU|4/_$ 9Z0&E|'\D/iȩN䏐w={3R U\x.#\85p`SN .YOֲ=NGm_Gvs9ݵb?+L0:l%^#ƧԬ?=ݡmOm_t@ z uqi>>>~#cf. I+6h|(5RUSWuwa >]> ]8(3~:axR|?|oҥKguq:`ڰ~þrƙg|KnЀDhHj,< ɿ{ecz$"䓉('@0X |~؉ %>!GqDMF<8 2p@Pc^q#Z JaR vI]:vw~b<.;Q>tN,|u =I?Fc% ÑJ JN; ~㧸qqn0YGo_nw7iW9[xg~q$-< ,'iil.;=s%ig|Ax5'@a)2[7=PuNZ{VRk0?G{zǸ@;QE{m"8; y턼c5 !W|;7B׍Jj·|v?fKB3e׍ 1wOH#Nkם3#_MPpɒ%Ulj\:ġڒV6ΤG?9<ɟr&"*Pg'g$MhiMNB ~ʛ yQ1vkOG3ؼ8Ƌ_EoN|#t|?Q/#\ڙ[U%q~~H(\k Y=ig|e<kG:ٮ^8f\C)WC?懅Yˣj|S~uuW퐗B'L=^C yz-J5%@9)?kǰ(!qâ/KHO sdKآo_]ޖAmw`?G|stwaYt@yVV4{+Ϲ>)5G y<@}tXl>`8.nxͳV;}~]z{>ЧgQIq>`gI$#<G;5E?Cn.z(}VTu}KW_CaSL!`#%EmC9I0@Dedp N#C %@0Ad`2LbxV{9N!vuUzwu;Ew|܃XP3 92vh/zӟ6OF ᧞s0EcXScqp-,/*,>o*N3`,R6ś8(t̲m]AƋ摕{ 97xP-CWSO/a%V;zM(TD[P |ɩyIռw(Y'.9u.9\GrH^SyG8t[/|[Dt>2W~^S4/ + Q,-hFޔ\47K,ۣY0^$hOhz!Jyx@_g0pCAUY5z^#yTMa:C &=#*p*&?PW4rSǙG(ghSh?ߡӁ8Ue[ x|<8B1mןpA N=: L./n c RVrqOxr;9:5\.qK~_л.raOfL};ć'}~q KX6 ,pS77] swZ[5f(:ZmaP 7JkJ#N@|ՅHtJ] pw<ב^NF\Yjک< (|+|hAP ({3׎m!bA Cq8k*X˺;negeӈtqz:jaiq/&mr|k׸V=xx.R5$ $q`C{Cz3I݀07;!.*<Gx@  e^YW:(AL!GU3O.wgrt_(qx'=OΧ_놼m\uɴ'|E ^WSsߘwP _9CeO1puj@pN9܎7 ΃ rqwN/=Mm󟣦9o^K?skWBqb@H N}8a@1wJN+]J\FBq #D<6`92G)x@ ;]_qޣ)ry>]URW_"ϪU^|]sO蛉6b.`|a|ǃEd@Bo t5C웶̀xBNa Sb̡,+w>ws݅ad {7oMMR˹l`IdŕWȹ0|im`= ׋4;0kq㗣B(Cc=n -Pٓ2~@2E]ʟ  ?="<72`pv"zN'}8N%śy,ەu}yxPd]Zqw ~a+ܐ8`pB/x4!Mtn<>֯c˿WO/Oq¿=m}0y_I?{/r~ugY`pbvKYMYrŢv{_-6gfLad)7(á7Đ8P:[lf6#ռ(>3%)THE|.J.)Tyu+|߸ԁK+/ \=`(wSǙJI:[cTVãv«[NPi!R'^$0tZ2t! mtrz[:ȣǕ6$E_m?c6!*4V)+(4ʥ:/ɼB㌇q u4㚇L ~|~ 'vqYAE>6/Q-uB,aq^ 78@h@  J{w1RF~mfK]z:qˤ-V1/.|Ǯat҄&w+ ݹ|"Ýg]5ЛFQְ7ioQ$CuC3qS=-L&ٯgSכ_E5uUu%6#͋hy OZ^?ʠf#Jt5CצzuR,?HX_ɲg\ucrarDwK@ust| O^x;e~ラe'~Icsa&i~> 3ќe?nf^C i@.ñhe/\r^u;>(:b\X˛pnz-zn7^ kH{\0 OM+ת>NW"9VqMpպn޻7k4sX-=F7VgfΫE&+!T]ԭb~܏-5y)bp:?nv^@|; zDT.G|q0aoU2s1gQu⻿!= ~)KϻI u(b=AW\g0Eи:> p°S8Ai@ǝw Xu)*u_h'k8Ǹƥ?g>u*s:FC<q0ʓ0Q,^# ?BNf܁ g=ZXA.ph\Pg}0`]=)==|a؃ r5=/0\{͹i+>X`1K/I'=K𣵍{]Xz\+a3 oصA):U(ra^8e0t8^6!vTLW^[h 4@M<›%N`z}TlytZUzdcp&Q ojP? .bl>tf %;='6RSS 7oI?euO9WKp ⵯ\ac7))Wnio(ioF̈́wbt.eֆUV0r~!Ǐ+IDAT x?trqy|6d@5H{?JT7CJGN# $]|"ΜW 냪z=DYggx77^=E+e\S 7w7;_!`hy`2~77^KS"O_S"^qzߒ<B_ōf^hrl3!aBX&)8l^f^]Vus..8Jtsп8ި8Lo,\0T܍XaWԛ$/\raY%S8oޤDk3_?ժ4g͒.v>xu3[o4 n״&A wDT-݅BrI^Sy?39սŬhMhl'5]4tó O=:{s=$Y&'w[lXUrxu%Gkx G]#~xN692^χy~tx OJ.q.3ϸp0N(?#~p?',mCrJW͇. {]CϏK|>ʖ)`~M+|CB{x>b_xkrRӤ#r4_ρjr( < xwyEn,DNzxz= Po~\6>N٬2b@Ñ7%4  $j?k0&l&gsfY^/WKA4|dUSݯDTA pW7a\.DctY pKsN{Y >X~.OXZNiiWظpk$E9'4x+:p0wCUAq6_AG7y}̌^"`H ¡C^;`'H=A]i軗9#?=t1"cyyܙzS;rڠ{1r=Y^hȏun {Wa%LX?(|̇{~0*<OO@9G\us<#?yoz׃2'①2Vb敧iV~f_?ڼ3flz0Yf/GOPʳ)S̓_+>,ryK_sJM*Ǜ]<@>1q ^8ͫpD  Eo<ٌb4-8@c_(@`нaQ?Szv=?8_(%t^ Bzků5?>'0h<С6˥ƣ޹CEycnv[- Wx`5]+N6ء69M-ҞDtP!o:]N r}]P0NKmxfx1wHWQ_x]~HWGZg 6\yE'~T||}d η. %zB4`M w8h_,yBOAÙOUAreˆqӃGcR^\)+~&N||گ΃udc|͔M/H;nVXZq~d_SYP {YWz8ػ>f6*>XRa=:{-',i,7&7YڛK誰wúp0f Vʛn/Q+i$ÀR8Z&bTqE `p7>ij^0G0t=yƳ|N]?O|Dg<~fz So ӯ<҅ӆ}ڃs+p_bzG_w'( }}?"=</<6A _Fڈr =ʮ }z-M/G\'ZhR9!ެk YZ.GxP_ oc$USר)<~%{x/~JgQgPN WxATHxCOP`uUa5t^Ņ|whWk= OI/;tt_ؘѓV>69P`ɊL".C &RhC}ZѺ /0 aE r\ vy __'e:I !J95 9dnom)04 ߩ7*b`EmПý8Bܠ<_CN h:`4;t#& 79E8a2<Cna XRd5W+EP\Fi?BBw! i ċQm4]|ģ-Ii\x}Q]jp苯) <<B- ?^2 ~>z;x7.>zpȈ} :bu9(ٰ#s;<]}Is6xunyFz֯=.]uwԣ_zS(oVjzlNѼĆ(fne^ [ؤp`d<偡+>ͶCY7xQg %P\0aX5](q3xPAK! nlr' AfU\^w_g'Uk>Q :*,|pQ7ZKa&ټss&6lD37Pʛ!c٬zDs^˼d=?kWuCmpq1Yy^d"x()Sxrԁh:cց3>s94|9E8Y{>Ko z6=@k*Krn6%yq߼>X+⣉샦& : tՄ>ٵ'9/ˀb\|Xgc79\7ΘQ5>dO ^eɽۈ9TeR.,K.!:xOwM:IG,?y7شtv#5үc+=0""x{ yxD\3פ\z+\lToE;{We>] ś58ColNh:pCZMM2xo?Լz3F̄Q6? <7{ߤ'.56up _5Ǩk S~R]^B:@38ldOy |]Nֳ.?2aA0C8's |$^iE2;,Im_f>XN]Fp)/NZ?9@ۇmhBObxr$Ş/G|yۃ\|ywlak4h+É:|F*d5>@#>xo5U_ =^_S1~y()fӥ/{gnG-Wsyg`{[ \z>cfG۩YI74Ʈѫ'pmg8xU25.TSsĴqfqx&uZ&/'5\޼;\hQr5yyˇiγeox!JN=xl, Me0tNy抦;u4cBrsIAϮ@JA7|I< co 5׺ֵ҉OvڳgMe+W1O~ӀG/}5ZnL]0Q鎿!'yY7!kэ1nvYϚÁߛ,޸_+憛3|g*ZyBV>}yMo13ЦQ57/(Ҭ/)4X㹩f|wgb%_:Z_dhxzzzi\_8M4y6v%^ܞ..ɇz7I '72`wQ+{ .FD{Qi,^z͐_Sv|iz g|^lb4H(LFb3cό2Ӟ}rڻ8hRvؔ/k\|g} G61wCkP6*]#^f<5&cˢ-؛FS_Kw#WMZ/:Uc{6%^97~®Iw\ z.N QguWŃj&>h/n&>0,x9P5'\P]ϗFhn8 H!oL}=*Ombov"0ӳ?GUR4}4&niގav0I9 Uf_ M9pgkS$8;#׳?(Wq _F3@55am= =~y~*?iG~~&Vjt{SVGWY20:;X^N 7-Kq07%(auxS:Closy+ƕ_cg38d,ʾs~QoyΏxAΡkG^K|0k0|N=|3GasZ4Tvl!xdzcNZbUY~7z?au풛18 4hMbS56;6࠽͛oz&(ȟSsh3K;Ňq2av|MD>xmv owaǼW;Dݻs8dx_,bQxaj@a jx[U`MfPz֯>nIo-e\M_ nL}lDSӇ1.G_c3)px[WGz|ռgTk̗%0O^|8ui# 6^8% $>f_S('(˄lnv[Uַ&xo.R`+&Ƃ_'|kN%`A4j] eod2妠a6ix8hX㕟1*?_4㋟Fs}7X! kSSs޲],~>"?䫽O|3~ҷ]ОN!b`eDo?5ǥ`7xqmލEC rC$S63AzJBϒI6~]5}M{Siϸmn!vġVw7 E޽闞t_K{ΐJۥh]:Ҿ ҋ%BCSfnuf6ӱykS՛)lߘ#7)sHyရ 6cw 7iٯ*WNϘ2'Wͧ#oSHO~0ߵO*~xE}هoOg>dE^TvN ~3^J~۹}Kl _)iˀoڂM͏.eqo3%â7-SCCQ^l}W׏_z;盯雱ߟ? 0`# \[w2屁N1Y׏iz^oY!4۠ &i+~zo=%~|+Sbw>+iOٕvMs-To8'MŏvU[k?\Hk@; OVE}fǤ¦.5?0 l{ O Pt#C|gČvC@wpb:bClpo|zN[*e'~be:'/}"/{@̓'T6e!7Yo~(ofȏ4TɎQ/W'QW/<>+_UO'[Fuxx(52+gsQh7ӉO~Fz~}p`MStgA?6 J͜/m6r]pwplB.ߊCCMuCBð7&ס: A_|&(*]65`B{o$B/|_ZSvXO՚M)yɎl1|Mo{6_m2zSz՛mY5/k4:M~VT?0}~-&xXJ.OG< #vHo{7]@;, S-?tƷ2m[wne3cB-7P#6 tuj zyڏ_"!9_S7OP.+V~slǝp8{{'VEUUɆ3XN?m眕=Ɗz/?X{mU},qKs}ӷJ&MC?K_+۾ #w[!&G=J1wodF(سgOzPzIn-Sh(/jz+_S/dE^#w~zTuȼ6Fխ[I evbE*np C}R>1Wh]:}}s|mz͟hܵMmFqik)Jl'F偫M/"NnǷ|#ҵohm0I;5ď]/I-6Xl ?O o?e< MV<)e{'ڮO|`F̏ gum8e y.,|Bi\ѽ{mR:.wc`;!]oz~Áv]KӘɫ.;4^'<%q1;4˖v@;lq~+xUzcś1.1Q~7xs;KO>_#ϔ"z_L?_HHe+[~vg}vxu: Y^CMx} Ljo&a 8NB'ˡGGcMww1Z[% {>w7i!]q5**w?3'Ƚv,lBRvXH**p>>7U`+Tߘx}t޽\g+bhYvY+xa &}݊!vxn|[>QM}~϶+;qVwYN'?wv'ee]en}{>av l vD.ʗ}CzǛNl_?m=ݟM0i|?pL'.?zt.ɾ+ywqtCwہ/zz~+BxWv# |/{K[avP鄻3Myʮ* ֬vpOM珤Ӈ'>av15|-n}tqw3ķSN*u+SG;|桠1=NFOH?pSӢh->A-[!>!}R G Z^߻7ƾao;< U`WvV[||:Oe f{ÏJ7U?ꘛ&|~ZZ6^vx B  y |tn_o;c6|lW' + T  ~(=?]|W].K/zC{|,CK~D:숣ӡGi|~֛@;9oo \Ek^.^|7wW_ToEoN{_vo goo?y~7!npIۦ߮VVQvԢlhhhhXhw, UUUUU`{T<([ZZZZZvXh9X@@@@@;lyjQ ,r6VVVVVQvԢlhhhhXh`l`ۣ!NT-lIENDB`PKhoxOtHڲrenditions/image-512-512.pngPNG  IHDRxsRGB8eXIfMM*i(0@IDATxeIU.\sLO΁ pQQD" P \T0*ra!MCO8={kUksut;UkwZUj}g]VX 30f` cg 30f`f`<'˜1c XOࠏ]30f`1 8 30f`x}1c O90f`1c`8c 30f`1c رmkھmmK;XoM;oK۷nj`]wL{IM~{/o{{jlt鲴tٲlY |ŊzڴnÆ~ÉV֭ Fz|,c X4>1ͷݒntx޾M7^8pL&bҥMg{~; s{I3pd`<8^FrQ&]se+/K_}%7yn߽kQܪUdtϻ {t]nGc Dq*8B. 7yl\q)^uyڳ{0̬\*{}yBp'vrpp01c? p3mtѧ>.'şd/oyfɧ.7<[[7>iÉ@Fc '8x 7>|<]O$\ՏyvwV <KM-:z#3pf`<8 e ;sD?.+ww+k׭ON ?-o,c '%ckf_'>>}+\_>&<)=ߕǤoo^30 '׈>N2/|>} -K]K/b"SZf@G Go}ģ]_?11G8 NhmlJiUbS_VR܈8vdI@Dn.|' kŷ>)>>;Q T6|jz#d۾ 4˘= > W^+~lَZ:嶡/,6vlTF+y%qּ%`%"ɀN TIN„s},oLħ>i w720Y}m?>O%ɭ+mc_aJko=pj&\{i6$m=aG&DG=Kgo5 v=Fm{98ߘ- ݖ=\妏7\wOܲ_~o'ܴ a^mW(_6rEMSW--~΀躖}50Ό ї^SnNӓ8!m'}~@)9?=Ó|9˘c5 :r <뮾";ߞޙnw{6̯ZejW-{e/mv- I!>=6kƼc=#ssޏ{4woCsi΂nC*5+e'w m]G:̳ӓY{\{Ghg=Kp3uw%=z\ݯն6>>y=ü6SmJ*$ė+w]1OHW⃵9(}Who_7QޟIs΀ tgŬ:,7 &ݵ/[~`:S֬]7mj1GMf(@2xǿ'pys_kWkpK6~l]~@a>ivب!WԔEѳ?TdE'U9 |`޻NS??w0^ؾj91Gkudx\ڏ=nwwfvʮ6!ߤmsԕPܠ2E| 8$L;Cx^)Cו$:@X~%;+y_pY^+r7_xWǯ~xͧg{)s ;F,N|(vFzӞ1p7 7|玨mEؕR QX ;BP]Vvi.hkuDZ-)͓֮M{gƼy7?ul R/t2FꜤdprKꥷYFk-Н͂#^bw$nKSXe5zB x׻s>|.øJ`_gvgk3צ<R=Sxxiykܔx?n?li C3{[>LrI?s_,4~g`vw1faUx{^ʄ eݕ>L<'ćyƚ>\4 pDP+eL1⑤2hHM:plͭl67]&'}CڬsbrNՍͼ=zXS׭>.[wS k졶mL?Wgƨ7f`RI<?~p jbrwW[dJ۶~%_eS՞+Bj]c1nBhG}zڕ65lŞ\ps .&z 6^50O4j".]4-wX}.{=*㫓瓒_.>|PߧwH}^}0࡭+o#/=)fX8 'oOV^<?۵-S({ 0fNM.;j Em_2쀯2ReLݎ6cƆ|ltٲt2 d.MKjl9i'Zco,|X%T&UP"Aqu6wFZ䱝3Aߔy|/.^ay{"wwU: by7P~^_-huЋmDwvJ᫨wޱ=ݱ}& i#' { l':'=?kH!˘d`<O8`oO[r_m_;qj&"QNKsK5*k \-9ڐ)芮Mn]z=8髮`с==ZHT^:_[ؠ0Ӄ3] t8qiGfĨw;ӝ;INv]|O9FWӥR0 t%-GC~fz2p|k:ws4",xj+~o[a=akwkmպ޴sB*cqtŞpUmjڄ%-NŇt)kI'bP:tN25Ye-7k!;txIwl[ޒvډF5"Eg@S)UA3?M=3x@PyW~?>>T -V?V?Tc3#ߖ][}5z]/!'ߚ(0_ϯ/#.ᚺ'onWyQ]~[w7qN8|SOKʿSGI2`T|cNc<@FoX4&~I?C78p[p:¶oKo۔vKmZ4,m 38" E҆gwpG`E`ry^oH}Qxp!M77Us<$}(aǦ]/uL`i Zl 1ag=-]wT4}֗7k'ծn@Ss܍y7pB:SEχKoT:b7&;Coݔ6UP>ӁJCf2OVN!{! O|/:-h30YN[9V}ˬ`!⦈E6Ҷ9Y6ƚW܃]|uMlzاۊFTز_ӕYSv\fDXWv'zMMėi|]Wk~IP-N ڹY&A%dg|42 b@eU [nOUoS32PqIxazPd'ig}Vnkvdרkn=ۭ;]ClGf1vmB=sʇpuӥltzA,˅]Ȫ;wiÇ- >>3o>7, =~n\Gg# ['trzgp`J' tn__|ُkf>ǶERX ɷUJvʧE4H[c6Cbu|=^]{_~[x~S+vgo3H[{0x!֥R1.U2\NIt3./O=` N$j~Νw-d` a. Dz~Oڐ8 {|D/oKxXv<_yyw㐲—,֯!X6lVxX]}mL  Źxo١/f{k8d mNCH#^m7n<)m<$R@M.Pd27BtQKi&rh9^Nڬ NSV{M|畷i#t]w#R4=Pץhyx·CM?Km8v7P4*.oKW[=s%?پǏ.zfueN|kpc85ͥ uN:^Y' {銪 qs|#5E?:2hGvG/?G|ط~"_&_Y,##=A1S r\O_tȽuCfLs[h8yſXP\ؾ0A G+Qɼ]ot5v<21|;aA#p(;IwE}9308lȐ:0q]:!z[O Nz7 y>mKʻ[wL;yRЇWPGc4 1:p ~uzǛސ{-^V} $V1g~E8xk[Xյ:47;Kö:0hkҍW]vCƵ3N;u ~?G_ʴbs^F1?tM7[?sje>{h/xƦ *x΀j0X ƌ9mOm"44l%.gvC3ϰe]CAg)~ l&7 -xNHLn@֦o.:>2}]}x6m \  ';$Γ3_Lܾ7DPnv-nx|=n30C|iпw޽r?~_d-\Xh銣YvXzQjK.l^;-ӿ\7F*'}Z }9D WqviS4,4Ÿh?^]0T(О6\/ܨV<61fQ4X \i;2eeZ61#',m;2b/Ii'`ۣ$+/M5͇Ur ]N@$c'^N>ɠQrLg`<8orL}3߲Ξ׏-'X|*7BmAXWĆUXƜz*~ zًE1* x-P#Ym9c0Za?S]i--:+gO-̛!TNUv]"CiDiW& Pu;0A{A$3 0^8B>]NC;U{{/^ 098y:>&tC9uӫ^ٕF1ݾm+?l j>b mAf"'!r2} 5Pciݎ%W΃:6S>.ta0PQd4KNQf>lBͥiR4Ӌdp%m횬1WŽlbpMp`ES\`ކmnn3Ur@7^{U⋟ i'kr%ߔ֏_Ĭ8nxp eJW+[s?ELQeu*e5_!|ޤIC,f;E@E6P,dڳo߄+[a^scUx3Šhs9v-U)f" 'âu&?je顶LFi-p/c)EOJj\SP#d2:X`mr)÷o}ģc" 11LӃ'@wO+qտfI?Hx Qhk|YgN{L4D+o8 w8K'STG`tLS]/vlattP83wn7ܴ)JFhW# ;K" a@b dr0 {}t~=<xp~-oxm׽Q>n,{m+YXďZ _lblpXcUjͥ4]x93Eeq<0_nkxf> Z⨭ pWnt;OfzAu6[!; զ- &9#܈jsJأ SM`XՄ>.pqN[-:q@ [ _}5})57{5>L"fl /\Zo xp YJ7؇^cJ_g=~u e3% *Yf#->Vfb3/wGB3,x\)Wf' ܵ Ӫv3PkQ?F`dvn4 |ݠ3zPnmv;O{Q vLc7茧y`DwOK]/yZXz-Zzui0]:r:}sc0oO;h/#NYMBa% FUeWE"T/ߙc|1rÌQy<6*UQĆ=*9mod C :Â/|ci k9t||eo ̧_7UG?~>j#^xp/qu{ϪBOr76m,ժEBeM*#_2Ng !{YՉ?w<Կ=[6itwOW6?PT/O }= O~ݞ0_uiy`[`onfvoLW3/9.燹q;z@5zCkRqt~p=Mvҋ?훾X; ;ݕnl%SUD:30ŃneS<=}kz=4{~[D+. g XM`\ڪE_w&Ma]W+T28'>@j|?~/^O9Wf ΋MT,D5(Q9bMҞypB*lT(ɊϦrC9U!\j!wh:1;kq}C1?=ASnhVn*@kV85K[}fLxW~dCnD?1*̺ ~1U!gUbANGW ./t2[ ^3-\w:O|٬h0LY8ѬM֩i~  oݜ.G I': $c6<3 wAJX?yB?z]zS3?gݒaOrQ5nL~%̓8ڋ$6R; Á{@첤>qj8x E+㑸\3fHe|3e^{/7=_U/SLtя~Xӭ^c<"p~ ;/JP5ވ*̞޲yx Hog iEr‚?@%ʵ6c9p`VB|}<2aOnq/Z0/qEG.YRڲ:G~f;Rի9Cź+1GU1דXieS=( ydE }xXlx1wMnB'>-.,[a.(]K|]096[ϣLnW|@p>_ăλ,GId ƿ|hY)%$-ھ@`y\jEE{^e~fҐ9,^-N%^)Měr \^ s OIum7W$G?sϩ6DZxK 0gG(;%l(:Y*˴Ԁ_4QWm|#]XP]_J[l>o "O<@"A%q}Ky|@p~O^D:  Q0?yEqb}~9v?\|}, 0_kF݂_:ǧ!Nɱ t8rl?ӷ58witjH^?/A7G8PӍUE׵#;W>+?7n%*'BR(UoV4ު4tvT6 # K:mutё~Nfm2Y{@NLxڥ Ua a-|KG^?Lrf`<wݛ^J .񳽫~*圲,@b5b Pqs&4dg FJn&U+@&Ը+@ =wIS]a&fgl 4^HtC-uxNoذ!y1 :ОZfLҖIrʝnf K!#sFyçe]e7O@zh9- i`8 'xeAAy `i3A ywe -/t{:㕿[= Tŝ'q}8}0R2TpsMkA'⎵CkjCTMs;_zX<~ p+@LqZ Мxw:+[]//N0F*jvJ9cZٌɳV@cx`#幌|p]EХ Xg]jv' 1i|[Epڷ{(kni&l+JOLCxp;\5̀F!+d|3Y9hno 1uMz_: zf %d7§؃}p;p3q6͟g搃&j[|r V$A^=/֪XW ֤֠ݰ!(΢i/ajN4x/xa8֬}䳔ʞ˥牁Lv\ϗ&j:G&/_CW' sIt%I$WW S]$lq!6̧Lz?wP| <<4xz.1Ư`m= ?O@xɌ^|Ez#+m`W?1o1,ҩmSpҤm Xrg`p{߿o޴oo66l?x4R98!믅8I*'= K&M{{=Uɰ*^!eZiR4IVP[qKeMaZYj90#@W^T&.(Q'klH@c_jˮ>."4 @r>J AGn7#5Cm~<OBJuŹ=O*Or`e t R%|&1OY#e`p9?_3gWWZ8-@ ؠcqlÑWX$N4|J(pVoJhy9Vf$m?te$JbiqDЇ1O᫸xQuW_~R_U)xGmyݥyP\#%ڵ;pM䂈"*Dƀ\Ng-,[z:!kq1.WmмyXcK~Z>j_ߜ.|-g9/ q}R,{z ְY D[[Gx%r}6_Ludޓ~`Ձu_H`:XÀ-aqiVYjYe$u\* ",/ݘ?F|U2K q(1Y,]㈍#qJ7n<1~nwzeigf.PX0bc&Rd_zf W28rjx.qf']]azjGw _+\K>yF~$96W= ?^{oQ xp7'x=zJGcfOY8{vg3u;L '=fxf3?߂C|M|=x"~gթ _vY+:3Ohkv]ʗ/]?ҩސH/5䱂QF]Q1T ;T]hpHa!;L8q^Ȳ  {u1nYCE:&t=K/ ~WA=a<1Oۻ;&V>r;-g-osjݱc{z߬;BΰplWy,sBRٺ{\_ J9>K3c ?:Z|YbюtPX/~U颎c<ڸ$ 2@m~_gp{F7?ǥFSJ<~OXJ?5//?^!XM *>|a1Ձy(5lX~8,v $V:[|CgH %Ce)ȇG'<+Kry8٬^8hE`yYhi 䬅wۤJo\n?&$6)qʱy0sY=!O_͒yb;L\ͷݒG̼iW| jQ`J|@s (Xy8ܞ:8c&2"z ?𼊁G$df̚C5͎8hjÿ7 Yw+~"&>P bgO^>14!wGqxWڏG骫s.MtW2>$[C$jB*NW [>J/?Y< u^w] o'y{g ʷ6\sη܇qP+9ֺ3g%k2C?L[nmO*@IDAT;[6ݔ9O~'~t`|^A|9?hMKP탆S-{ [nqg\6+PT]hH_)АB库&KVK*<*fDOc0K9>Ko?Owf130-'=r_;>gV|gER`mZ6{Bbjy8*B@x ^3 gvAE8_ H? *ϧZ/qgK\]~fBHW 4 M|t_ŷwtŕW;d.iAL)ex42]+UmUW"6cZXs[W<(w0njx^WQ-v?.4vhXn=&uGqǺ#lk}t=9pÊIEx~s&0XL;G ^u]ݢu&k'ڄ?~wC $]T{>2XT4V>, ط7_oġո".Wc֪wUhxqOy3<er?-eQ˅Z͟f_ d))\7`q8ݾp}Ux եgx4DK^B9c- 3j^D{wTad8h\י,~Mm{i⻼w3t`6yzcUr읆|}Mp֟>3y'_YC.te_$=>chAFǮ5Hr;h]˱NԆ&Ã4¡ՎHW+l- 3u'iBJ#:w3wU?``8wН~&q5tA]>9?yvZq ̎@=͟~eguc=B< yu״ du~42iO{ P`˳Xhou_Av02_Z ְ| kY݆Bȑoٹ!= 'O4~WmS8.U>W +-_"b/^Qq #!`=8K[LW|勳G̔ w$g.g}g)A5ȿ|Pb;[yʢ=AT50~A:1#;~afMgD a(I٨NwOJNv@Cf yaIB{ph|zC/# ځ]僬s©cVaY'+AGF)[nx?ʕ+I+%rrIUr1)ux=]ixxB$&"Fx -j5G m*C3'H:v|_zE鶛+m8VuE;\,eÉ_ӇـZ;7>=Y6Lvn_/``@ 2ǂ 8 o #?6 &*2ˡr>k`<3tqs7> On:O0u4Oqu%Zp<8~Ыӧs>ЃG0S @ uP^}ðwwᄑ+NLИR;X0u6V_u+?KKK&>o\bb e]C92?0505-?C]|K|ڝMJ¯ڴd2Fب@;IDcA.0Yʶ- شg w2֛oO7t\PNrLU5?+H„F} :Y.(t0|T"3qW . 6KylfMS ,*'ob?MhHD`? !/=LZmڽwLrCuV_( ֯_>̴tRnTJT6Ur^mŢrq܂ T- ?)1~xe\t/qzaOSgyta3Zu}+.Sa3.jH.Sg{Az{?ـ/jqlÕ,?{ښEi}T^lfWƌ3967 gЄdZru92*g2s8h`q*犟Vx_=aQtCL YC~Ka?b@?~#]kv0bW5$?*nM{a;%ģ"^·ر3]zٕ|n ?lg e[HGs' ?1_6^D7|;hO|\51|+`\]p=`Ū6]o cº_84J`f٠ , 2 w摯۷g?+.S˞uN+z%yWV)v!*TvaUvTT+2x$V=/NWYdq^p N;\V=&i%kL& Kw1}6^p]iÆ v7tmO%L@t۝޾#8.ǢKNuW+OLכـ絯뀔\unzoB]ɞetbIF[ ZU,<:EyTϔg[.|3 O7V+27Own! Y=?}st}sfZkU왛>d -Yݑf3qBMm3N'F0%ĉX]NHl&n%"CEx] XwJS L/83^֓\ GUrĚ$we_QcQxc;;}# }3%־{K~3mۧWɌܾ8|Cj4LLA(r5͚/i9؇ympϸM8pV/x]1JxPO=4Ut < e :M4};K{b| q"ˣ_VQ+c~x?sso3g_|xx\~+xX}x}Iy F@{v#}Wzs~n|_mf<k4R"xL&[|Lkjds(!_Ol WU8]ɧdW[Wc\[SӢKl<,9]Б\?Q5y<|:T)}8sÉ2=)9`1)?OA^Ai'j3ࠠɏ1BFd9}qu ^q kPلT1Z\_ލOG7q^w;~sjrQ9*4R+f}q(|/XDR̵/ճ=PiYGس?)f1)dɒt6n$X'ҕB%^g\K$V&IY"H |\<:ګ<%WԜ}ߖKsn\1hs`&p<ǷIN׹mEQ&_zُμ{EM0%LjlsS8,0rZEn#9Fˬ8*텀/Td?u`qW4c GM8?0pǟsdz/j4J8E[<<f=8xARWC kg,څ I#5Y =_j#1wAށӍ7no \p%&Ca4W+tZ{ vkk'5BC8oι,6 <a;>aۯuхЯOQVm '% aQ QA1A dNxޓ~?=A:yg _])6!WW$i'(&5FАyl:,JtUXIÌE O֫2fkj 6[=ƭYq21W>g&q}ZgA Ս;֕bmWO]7Cߨ8۱uߕV^mwNMk֬In|h_˖e:Y_KڊO,%#"OXђv>f& 矷Z3Gq?!|ț8ٝ.짤L90V;o݅).?˿cP;Y;Wcϓyf^\@&N l.x~t|s?h{6t|i0Zr&@]Ѽc{X+t1'̽Fk6˃EqV .}8(cq5vxdcTZ\r6+u}$K}$]0pk >g?u=m'P`1ChNrbs?686'j`-9l!ǻ5Wp4D[^ܟ`B+  3M7A/nQq1:b "oעR|wfB2P/;"N^{,7[aT QzaCq}`kokvx5qh[`MAОCΈNW/D<e]ƴwwzpd%!Kzz4{u'v6$cx`,٨{ǧ1^P-Eະ?YdOEǕhAj)CJA3ߗoX pɯxO&|{,ZHM9_wcǑTMr5%%4eh|1.;v ?5±p"⩥E8u#%Q(Y:2h.1q@\co~˃kП*64'#ؤ~ruu7|-%6{VW}MI+O_8]^n]x҉iڵcC6rC@RaN/A#ˡp?Kj'>{ &dвc/,Sbp( 9paU+<Zd h wO j/խt0xJ =!iӍ~:mlOZaʕIG| ;d?M2qQ֊.r )Tnlg`vw֡&:QT6nۛ? |mSo![*m؀bq~hQ8ㅋLҲˢ/t0ұAA'xBڸ|yq^Ln,_qq"Uf вЭGh:zƠ_Nwוb/*{[6ߞn:n!zscȿž,J;LwWnzOks#=qXL?͟s&ju^iBUV$(pK- N-7ԏ8|SZr'-/;@`/;XK!?mPwa8Vq;I/PG ޡEq;$ sjqQ\^k|? @aD-9'`҂. Z$I}<{K4ѡ分89AwH*~԰Av0|Sw!D xԈ[ķݶ9]~=Ok6,_KC)OLҟK>Ͷd@L`ud2vcs?޾M*ߨ}pPE)ä$a\Bc{X*ϿsK7V_sj$IM4⤫&gX̸gnHmG,N/{~ϟٗ`5Ykr\t5yK&%# m<5d\zf-uGodGkcb̠_I*?S/hO(WWD61^\e`[|?'MLx͘U S֠Bq8z|ݱ/t=w-Uc(_@ jħ~H/DI5kVuץuB_mlIMwW 2R?N9ohg|s?Sm"

Y EzL7vw`u ,]w 팏F lO PlfbW0.Mm[\ g6FD ܅FGpffƓOMЧI8Իq=Syڜ?ɫd3sh&=M7}v ARqiZ8 <O} xx`|uF qr `:@ͅ"N/nM yȳ;"έ{xJ #.F/>8 1=S겐q{RpB 0 c9Z [3< ⲃZxҍ0_Dn<g[t^揉yeo74d`zf`Pp-vޱ3t&kKl'܉-GoF?OLjz5Wq7oJYn-@xQ||61LSqh}j|_b9.s\(yߟv\?}ÜCǯY)[̵ O r)/n2<%mx0N&ٙ"^sY䆱娭[eµQZKՀ KT/f0Z~K+_KZ7 ? RY8'VsVe,ڪ Gu E07T2L9JbgݐM{ep۶nM?poTyO n fW~` ;f̀Kkd긭_93;{'"Hm(D‰FpU(!mLky?5"ӹ85-ihhh'+'?{'+vq޴\_D*?/v?ʾߙ$ ]x?9è-0 ; jwvlf1VrXqiCj8W;=?ޛ]zZŲ$Y Yx0 {& $ajjfjTMa2L } 1 .H,Wٲ%ڬ%K9}_Kݭwg?y}] :e#ӱKM.1ss0c77-RlXMbagSGzߑ.~'YC~}N&g{ 7\;$K0%ʥ-RSIiƒ&Ix ^%N7OOxS휽e?bg;>/ѳIt3oRb9o5#sc[٣[gv[Ӗ=ė:ފC|.&p8ةZ[[|soo5 fsq刨.n$BT_#Rh! I`_z: aoaog<1 2~|Z=}`v145q/5Kʳp8v^|cL c#F ?6]S36"rޭ=5V}Uv@|m͏뭼~2o`QXD c{7>)IVg׿)947?>|R]_{.Kܶvlͬu]ds:Aib'3fF\3mU6^ᦝ0>Y :@h@3)~2+`K-c0췅ureq>@iw\@[|->r_=ϣ& EmFعkrf vbh\-l_|ǻ{* ;ſ(>: /P 5RwiB!4CDVKw(?|5];+~sz`&~f\TӦ˴_ڛ9Swx_.є>LΡ9yWo}>_Q,7Z?9ԓ.t\,}=wG?#hηJK>cooS.9^'󵏯<pW~ /؂O`!yL^83G..¸!0'n \⎫ޒhpw|<ߐ7D{Q ze~fxW⫂J(2~N/-9M;;_l{>$<~ozs>S㜻)_%=]{vH\a?t#T7fq8UVi'/fG[Î#pEg{{'cmgUE),\v٘9/NfBz^n{KZvG{[dq}c-Ư^~+@$}G5M>O<ݍ U?4m'oP&R^ivӆ;+1o+S7SOBTy͛Ԧ`x,|TE[0[ae~[^|xoL} 5_閛?0|5~.2u'8 }4E5s=i}M=]hڗ3 54؏x~'.@\x6%YL(4|$y8S<+ޘ'Jq7V-4og滧nsᦻ]6'w5qVTRJB#aڅނخ,p荣Q͋N53㦗f9q$fƙ\xe{f{&n>]h%95<>0goZܣwU+kqݡ@cܖ:4~cWLwgʕӧ=9pB#ہw[ysa xyܸdCt.G?O~}CvP98 foǓxgƵOTق{-co&aW4YȹfSlߪtoW!wįn?S8}W~>3|M_E_qd+_QO4Ǵpq2cVjBba-'qŹLx)0Ɵu Oq=^i [EMA "3' oFخهwƏ@ "G㭁yW0"lI J]o[O 7czr{ҞRo{oi[L>[} ]9^oo3^eu*O _m_`f8vw).>kxW}}/~n3{V֯?ڛbqW %mOQ|91$|^XkTLw&Joz2|Lwf'姇5mOբ1QQOc G;7EgfœWWzm(% גzS&K3>J?v|DfsLjV:>›8LpxC|;++y߅Wv^+< y=(^'d-|l~)~@IDATg8 //{OÿXI\OՄnzpԡ=UۈCge+l \2|46;%f^x"_'Wz2e G!_5ּT ፸{?7 IxJ~ѓ&>oȭL";A9O=2]/'\b863p~?AEC˟ nӓJڡ]2B[thv: >nw}D . y>i_Sso{~ ʩI܏(\g^w W֛Ogg __kUԠ,/G_'ý'!&d}x/8t8w`@ X>Qg7Ϫ8J)K~c/ޖE+]IL-ٟz>n7C?z> s^bM/uӇ}7fmLMe͞ZviG&FK~] XIx4W;qxīXy3ZPS|+mvʢl /y5?_v4t{g_lYgȳԏ}_Eu?,A_]s6z>TZe#{B-nTɞ}ܤXhڿ</< /t~ˑ1h|1;Ű O hb# ݇W[}dr Mٖ{<}~׽git݇%.a|M|S']{,>J=TH;\p}C6>{ mir">baRqCAΐ:y.7O#> -=o_y˹;CJp@OU૎꜅4q}T4VV?^3/Z٤7 z}ջOWj0ДFy(j9x1cOv,\_m[AMMڅw Db&>TC^S@kmZ;f^~ry~ x||SOݽ^>0]/`{~l19o$4DSM}Eݣ3O"dP|S[riMnt7juT$t o3ۭ@92'SQ=ns2v(ڏ;{p؞QWL}_NW^}׳7/ɟ4q49/;O$NTjgG0l;M-ULp<]0cǫ}0ar?`wƱgOz*lpxAԡ{ xyUzP57,.|ڟ'{Wy|Ǜ.|_/WB7J7oÝ2u_I_4ƿ;]u:gG 7^fDO y5G}ㆣsUu<6GΗٴR| Rʗ$ oZ4^㽮kҷ_#O<9 op^)ڻyga,EŃ0)輛lߛ{nmwoY3Κ7wx&p||0 ͙s+OEȸ9g|5, G566'43CO*9 [+& ş;犣Yvs8pn?.6Af:f _i;ADlHS.|pOɡ1_xJ}ο"5o>#=` ƍ+28oۛ}d૿ɳ`W*u>]&示?|ktG4Wfl &a$_}j5u^4>]rqkw "QSEaě•8 /f(9ȏ go8ql=!A6Asm>jʛ 3qxT㿂?+{OGa\npN[n/__j>U3[ѳKFb ~I]Eds lNRgh"@G)슏 t~}YZÑ ͦuYrOn څ|- eG%;A.hSy Ap`㱡K>RnڟvQ|%>vPS`y$]O،7 Ӈ<_r_?q3"g?#(/UD{ ؘ!/ W_G{ɹɌ)?x&;ttp&~k~[{u <"J~ xPLs>!]Oa;^8JPv G˩7J{e?)_8؅q/=t?笳a7?wg>ZM*r̮a9MS9(hM#>Sً,] s#S#l.=6 ǫ@'q*/h#ޠ4S>.Td Cȑ&*H\͗eeX ]ގKS"DP O‘yMK֗p6vs"xeOps7ޡΙ>Ձ9-/k\{w13c2}ބ΋pM~hIh9=zgb-_\Zբ13G+qX2{CsoB܆"hya p=p7% Q9^և}(62o6w୼a9xxoatCx?{ 7=}p,3_=9I:٧ԅQmyAYi? +nޜ3RP 'cċQ|I{?䍧ہC1 ^],}ي׌E&u($6a)972R3C;-{wx Gc3n/OAňG\* 塪kf-Ԋ+ OɇWnCqh be*K=?/L_{<ǛyxY q{}I(~NW\$[OG @?di,=9Y dF>[ sL}$ꄞ%#6~b]`6tOGEcY`SUw%0rT1ͳNҰ . ER8<|;w9#xg uyxoPEZ0Zj4_kh_E-~5!Ջ.Ƚ!͑fiZ98 >h OvƑVʇⁱE~Џ@n@;YOǃb( ǒP@,BRM żWÕm*~h//bAX;oqdy[~ <3ajYOn ? 9hOij~6l&W u.őyG-t$u̼ɞ<cἼf-~OF>o{i'1.j䰚\3&6ϭ =C(~Ͻn9‘ M:]6-x\p\êxB|pdRǐI% @Ao˫-v^{/ю,6{s)!IEa` L-;O8> G'i|>S+Ӭ|OS$|CÙus4̏ 0yHB9^㱝x^|tok?/k=96Are\x3^ɇfʜD0.v;"|}p?xBQŋ]7yL+0$p i<6w⵺Jx]05/zK_]Wc㾏/4My!XmxRyn7 \BU?b<*4F&LbٱN3'.i%< P4{s.Ɨ#ˍxV2݁ ?e\Û8myxd^ >&m t[6(oÓ=JM }ȹz+y }-kWy4?>}Ͽ?Wai*H)isФ!jBA blX08lz6i*>6X*t~K k7ᱢ K:ǐWx;&/{NxCduƇw"}wJq@xkEۉ/>œ>|H#N #/jOK>{UAZY>F9F2˖!駹3G9/lG7 ǬsDdx\%'&p:Fᴝ3'9ϒy/x.Ń,>O73mq7xɏOy,uwENj& So:TzrNQ]͔[YE3Njj_:;|c00>6paG؜R/<NƓϼٰ%PdgcސS6otR̯_xAEk/x`u 38rw_=H]n5b{vZd5 ?}Q'VƔbȍ)RrjH?1l0$a''ƣ x7؊e 8m/7{$m0~ǀ ^ǃMrJ[Eƌ}o<?y :I?]"oӋ~^q *jWQ^Sݣ&A5⻨nMHV;Te/쎭ً=1 ;0)»ɧ*SO5*^$L ġ oYx0)<ǃ9^_|h`3e%W + &_#fQN3зk:6cA%/*f^x.~0=vo|@|L qU%2jz=%MlH:" | j(Ys9(9{KULKh3j˅yB=9+%Úi>@!a7Q9hMamga@7Mrë8~~mߗ٭Ju? Q~)u|jŗbs*kHB,itמXPMdCv “> B-/;-xM Y1o >'ʣN: 9`GjA*7I_ҐeRhj7~0* oơ:@Ƿƣ}W=jḡ7R[ PAnRGc~OY'YO1$썅\V'MlSOmK?7gL3<OJx#f<.\1 n£E#̥ iQ[gGS^ ,pdZjFi=x\h]y9Ә g`LpPtޕެBOUh:O|uaY59 +9PEi5>8̶@ʧ# ^3a?#߾牅e vVȼ@\H 8o'oל׆?O e Jކ'xXxxK*yF?7y{yέ74?!{gqpӋ{㒼rQB~.18ѽOj[ b{0356Bp_'g$Fٲww=ӐAN5V'Ixb@ 9Ys*9@*4̥d\#Go:\k:f9OtS ɂ1X 2}xl`reǜL%xG{&΄="^/35 QE ޒϢBk0h,gkW;{~`.HqX[7Us%0^&s/~<,q־!Gr#Eԇ\p^ /xrh:H3fxro+C+x|Ñ>3ގo[0y/~__Yn2|*4F_]O]2/el9XKc.حm-p^'JNto]pUw&6H\%&C0|YX%}c>R~k\kWqސwXq<=: >x:^Jf/:?p0MqSPބ+ |@Ӏf_ Ja\xx7zn^9-G;% J$Y 7^ⷙ_3hanAvamgkrVS{خrLހb٤hbw^51nn7y<b바6/ۡ [8£yWS"T/u>f h IQω|C~|S |yL`slS 3@/nꮾs~Pi?)W^Dc yK : 暌COq>ܿ0nc9V^cL h@ql̀u=o%&nfۘZ#~['<a+~/9 oox9 ׿gēl$*d|XXP,zp(Ut7bVCQ|Pغ݈li$ Kp?!W8<Ebl܋ 6 nzfxV;'j/bN0h1u`' )[!oӖlu>b?^9O\r4ȍxD6e;c̭t~/8* 5'w'P;kq^:3sza}VcQum{cيmOSkBYFHg oM9w{kcW:x[ \ųc ޥ~.x W .n\yt2u⫃G{7 zڣ?|> Ox_;^wsWGjǾ@Y17Z,f2 e< o_{6,v faoqRvyK8f,뽚xgy.l0޻&=pS>3WΛ;W{QNߌog^L(Tc=wTmIΎ9m}#avK;΃1{i<#m~ qV=橝˗x5'm~*ů_ғѓ1)yϺFncw?ww#ӵW^<]w8Nn2\FZW?Ƭuv~Y0d|jϗ߅=tխw.M79? ŗ|h[{ ^-VHAþ=8S2 +Nw`[ƻM__EԒ^H1S3V1RdzR f>őE?i:s_=rB@m'尺 7^<Q3  Yx t=x"Sk\W" O~4 G M;ޞ7H<؀W@&/]7hXa<L;l\*.r,104a9C|ΑeZ )W8ڜ&x}صB#@{g[J qBޅD}3N8 CiJ jaC1rmZ9p:f7vO{6Gwznxz_%`m'rNU[S͇fj e fMh'>Ri 㓜xM.xsQxIgxF٤m8kl, /m`~3 <0f3X\. 7e=ؕ$_͐C: 3Ι痽A.q?/jǡO]2W'v6~, 1}@7bFVd8;Rt/xч?ãh=툗e"ec %r_ OOQxl^;F#Odz+A yPR[ˈ\0}o~ZGe?#{-U54a/z)ix֬a@҈}nCsh;ȅ`+Y %լ9w#݇f~ ph5(|q{/#^?,bfU)_^`_# j :gVZc#z5s(ka'1:{Y=&E$?).dPv< ^xD8瀷lj7#^xc2q˭:ݕ jA*,#)GP84|l^xE/i#7NWVەT[ uz$VABrg3u]ҖӬf ^ ̦^| ͝h|E! g<&^^a5"lIr w;\uBn7<-v,PW/[\X z\l𤜤I)QVLFz=gENB}e177c/fD {^&xC6g%MIȗ`%N4'oa<Wc-xŖAx26E'c'8KM|cOl<6-n ϻ#؊_[nnӵ87'xUDD_Ed*)*.Md*zk1o,6h;C$V Fsc4%gܜ`gO% C?2ǚ鱅%uwJK5gGYxcăYC'b?D𲇃5':^e2搠nWיzZG~|tG?5$~[rŤdƜC&zWb 1eHɀ-ZdtNOIFF1DW[K~ΊB K]Y؃Mev8A:֓H吃_80 іqngx|٥8¤{΅?0㺏[/Fn{rKG&7k :#5;'M73nv"}xKvSYb$_@yx{oUC iHVې3cgdxOo0ۏ?0ݳp^t?tŕWb<{*Wv># Ft]˭jYL Gsi[||R^V|9hw~!;6 O,݂pԌv/5+(F RIaq'^|6V߇" bWb0\ `f_{iJJ2y^U_H;Ep'{~a̶4҂C2?+ =ag0B%ڋ*Z,aAvr/ċxSxxxg71p9--.W:|p8>a*\&7(D۾*O\Y7:8o<sU/}Xȅ$LL-(s\TT6chη6g77E,~?7p`@f"'yqXN~f-1ƒ`5c yo#~O5WlV(.Hs(ɯt ;?!{^ͷPMn0o<#9X, G\U[{Cy'/ir7sڕߠ k0W}Q?^P:hF=wV!7HNx(G(vQÓWlM$Bʜ`ȝw18w~gx4U52Bο1W(J U/9=/</_6Ҫ&!יeMC[u 9|(Xc9YsH|&hvzē`!$8f!.Bn}6X^-ݕ9d^va'9nu'5~.3>T|R7q%FPO (䬅ky|^.i8U{T=22R$ێl0 qcUg$?Sy 1\I,iR1*ީUoέݡz쵰_9Yt ;V U\ n[l 17+*p r# OZ 6Y^:3u~ Zq!PxoZl80x ئ3Y.bJH^W!}N}{^qkp't^L'^YɴJfUaּ!cU,F*P'?f}jM| D-\3'97}H87=-}okx /B xjFz067bD@IDATŇ+?!!_|ELV5 _|Kܰ;. ~1!>CYLr_pSrXoAfɽ{xb8sz(A e/y)id>Y[UA:wཬ+=ȟC޸ď;݊oo/RO k 8"Vdv_Lƣ̷<#|fh(\g)$%tl9(;`p XW^Cn+(Wc‹}xݫ~F'}}Jo~/#knnr1ؚl٬dd,=Ū&a%y;5>YXcWvB<2ĝ Osˋl[r)uc6o|mWz&?瞿ZhġYa4quBLfpozctٱW".[)'>{?sy ~`З^|db9ل؝#T]( + TNo̙O$> Z|P5rr*|Ć{{u|Z}'?&79`/r. \3Bٍ.W|YθYx2.{~ox:p86^K#c0Q H#Jr_xԈW};'CO87݉r$BYk8yɲZ!"Mh]ž/~gCM^ځ!dfsv=DG\vl?`85n.\ :4f5uK@;1Ka>؇-u~0f0XŔ :=zԌ,Tt$u豖q;Ņ<#z#+Gx/ M4^1 [\7/k} Z:# ?*/[$k_OGLDn#oTȿl5IWL AP 97%,B ~9q <[m()NYn_'єׄ9'H|7-2::n ߋ9:C,{,21~k?햾q4cà$F#f @sjl7\l7@9>zEB]Gg$ܯ>Gbn!.=㟾@sl\UUs-u޳ NNJS{(eB07o9pֳAp^;nIS}XzŨz/A [+7x4H\, ш؅f6SO|oPsS1?DbOS(Y4H=Y=vЛ7*BV_s@ghb[ o2c͐z A.x[M NU~27fJ><Rr?wă#[7 xNOMש549ؓeϹ`|ٯ#1hV>7Qnnp^tN/92.Hg@2K攆oq>1⇯=|Kmyr(A(> l=g\AsOrXwS΄TYPdT U8a56/:\y(gY=p^S7}l?)˷wN\z|5w$A]$ז+9}x٤/vDq.q)RO÷}դ;T~ö'māGYؕ:4!՚]_vǸ; Xvlz㕗_4]R_WPD2peY!%No'J퓮Oٹ{w~v}DMŗ/O]\ή;?32N0eJaI|x?eux_x?vK{39o?y7lZ W5w;Sq~IPދ>&^%Tau׸{~txU"w[?ٝxV`ߋ"?qꤱ2bxȅbdOZHc3MA. tTŒ/!oE`?v;>p5\ӧ=QӓK/.{Z|?,Wpӝoٷ'ՏxutG0}{fn`8(枸 9ס( u 7rIqOSANesNx)<2/9ns'nd<W ,63' 4,Ury$.I1',,6̧+ 8t_ g~v26ds>v-[ eF3Y}h\{ƸLc]ɵfXi*OGx8(GS8<`̯ SrC2hv^mM7/4cĀDZ\`=<)GN/<2,gy =:)I_:-_͝x*ND^J>Q[NkO͸_YxJn+?gނwG{G)X1}􆷼OpoOLBWU]Ք̩fVRaM^/1.8v@q=ؼ 7, [ca 5@R+I9߀vx\6ɡ.CE ?<VŌcG 䧀!wYlHZpm ^x2}X3=~(⽭R=|7Lo{w O8\ث8LBVEdTb!9\~hV<|(]NKr8X: ^q7uk9oQjy&>Ʌ ~?FRȽr_rG #^;1%%L<?|[Kk>u=_:|xXM#u^85طSOZN{c6 ]߄~=k ]+ W~d✟.0_:؋# Yd]~B^0 vgx*;=e"86;gWC^ `~Pju}N-RJ>iS҆bB%&ěi2\$t"@=C&>~blk0mYxc%ic9HÀK&$7ĝ!z!n;43vBg'/5 k_'L§46VOvLif_Ӳ|;}]31&k)(dئxwMMKc8FHfĬ2 1AQ>qp])<|wam)̓VL;3+  8+$n~K!?M*P>4jxy!LtO7\NXY0\='_5RV[YCL~sMpz1Z ۊ NpӛF^7=6XޘU6oq+ mœ2$^ .WnbI㩏3wxP6+,>~SnyB Qn ؋8'7:IT>Nru'uҠ0`Aspˡ_TZ <08 d}9#BJB)m^|,WIfwIPwxGLuPN>S2 qn]ꚹITӄsm4' lbE0il^@/<85 _x&?M2]i͐9El[^;rzMf˭mG/Rcw}*? coO>uqx3~nfup89O O+/o~uGx <Z`aH.|]'W^Puų2_0S.[6[!qAfeP|kg,^Ty܈9dU"5,;$ 'r'si8~d9yʎPO2d'm',B%_fhN1ڌ+*vP$<HŒ&/mjdH+Hޒӌ#_F/$.2Xqɿbc&r͍c{IgJ\ ӞfϖיF @aHB$N$j$՚nwG`?o~#:Pmk6IQd3 H@$0j~߷Vfs=[U[NvZZ{g\.,ea" = 0g[+;yƂiQ PԂ[)瞺B+" U>A4ȞqKziO; e:W(G0)u4O@$_׈Q8Ii.d=9,r/pīTl 9ew枕+`3xO>l[sQeBq֦qTUU3)fl][: f"MŧQ?Lr<P|hgw፞{b]87ǙvwgwzmאY/[z_ X>֏#c6GAu&o8e=杒Wm8+<6K Vl\g{w> gF2xyd1; F>"G@<+q 2H8˫^ϧ/=>=jǿMw|%'Ƒ˴ 䁺|CMQV@<r%FAုL}>c/iGArG(/ 8a+awG#hommeڷ(%'sm'ZU> bCeb3LJ`܁WT8q")hj#W& =8/.e^<EU:p4Umj7>!/?ub#٢`C[v8=UVv&I[i?~i/K.iXc z]ea?wMsݛpp_5~3hݖNùq䳺֦Vp,a]$ WJGe@3?kpcC?UzmM!ĩB`'xc:U|Pƅ>6{Kuayko瞝lŇ ivXQ l &Τεh"֋AvZ&roÙ v? ^(GO'Ea ~η5ApɻjiGD6Άxd,>t}y.K.CBM| ק/\G/7ct]&#~Qſvvnp}w-_9H!"*e=ez08PQ\TANi8m$|%oͯ %oˆ _hEƵ Z!/CF>ٞcґWozSIn>nQ}?xf;tiͶ`f-@:dy(h9YmN-䵘v40rG|/i8*UU>gFg>6rMqq>B54|]Ly4o<|ڿW&\Oyk!77x1+\@<#M\cek?('Fqu{(OЯlKOCcx4 @58j84R|cX8j{+N5 TH8cҊ O1OfW$0WOſ+8D%gri^'U|(9b~`<&!NkqpVfr-'ǓV+=jNRߪ5N5ɹN#߳4x G1x&pVkܮ~xGhmrDrF@kv@q=Z7+У3~K#)|,Gך!w`'țd*=҈mqVT'Ci*MmScS(&M|[CiM=;IQ'/4§ߞ|pB/pIn>Fz,YGb&iNHУa$y˞ Ѓ.u|J}C|J>پc{d[FwX7 |.W8~h0<-uo eR7th~O~^a74ZEu36`SnU?-\kNuw3ϼ%&>ߌEpHh u0ଧ+hi i˞^VKNG'0)2 qgkFm'RlCJ /:U78&m>yA3f_L3Oo⪿ :A ZD0NkN'8QYLouG bV0CAcE)3K"~J.xT,3\@3s<KPx<h|Xo8XӎrJ<=hdPaA%q[&J=ڑw; 0R:/C7t>jq֓U)Eڨѵ|SMcKv7[Hx褃@^-=ҢK0qchʟ\-cueRBbp#l79vRZqŇvs/F[W$v=NVl{6\|`hDㇾ__6[1Z7>,ڡm_$pc.g~x@|z]-GyJ((ߡ.O*!Ar5.\h܀c@Gn+IF$.yOP̤' A6_iVsb{N\y/m_?;.>ޫD;/מ$HQDI!Yrp@*4PfbƇ52~+ZcVϢ);,hB$4 m xn /{9iE0U~a>4b6y7f8Vǰz":~$as{+uLueò纹ʇs@Ig-ʟf慊C\-_4y䇖,'8~(9)fG8G9uz]pc%2 P =,Jcv[4Xt\ve'8?Vj9bE|3zU^6N4kR*(cI0$Ȫ^>!TL"cN@z%WON$@6')IT4C[#OX.24\?#D'ݮ-p,\޾pbsi)rr2ks︵Q.Oh7O*QM!A&roi( 7$8)WTLW~g)@&__#c=#KonN?S>ն=xan7''*QQܣS_K3LŢf($qr,|J ۭZϼcfW*漕G^5, 88+ h_CUZEV_'W>,x#zZc]gyp9"J`Go^zkDPe.L0T['\t׻G:|ˆ1_Wt>5= j@T鼢GʫF&\Z[|UFAem緁g$o) _/`I{ |>Vny=kxkClo|oqgL__5sxHJ_;*HI4UQێY5KdQ6^C|+b GTÓ3ih1pVr)fm erxc!Rx# vCOf]'DM<w cb-6j_mƒt1"yd8FRh{%ٿ|o>;+_…ŶJ8N$YEn7IQwjУfCݖGO-":fD ]{Sd ~Ee&rz S q!~U[t=LP4`{H$ .;/)Ӊ&;IasL/x?]QU2FZ>Uw 6@}ms':P gV#H/:ϐŶ@9%x\ר`t0 e k-9oh*u޼0/ ;cyG㫞 PΝ=;}K߀,:Fͼ4EtAazP|ɣɨq$xXwuU覀sq E@ +C'o{ S9 :0@Hœb/2dR a\GM8(t7nN+~.eO==uY\%q :Z.)?|`[zLnwys;,q(J1x|U ( Ҍks8 o{oBn,#o =4孎RgP.8=/D@vy,7,J;m(Rsbr44/2j8J?-Q.)/ ˆF޵kW-ނd 7E!MV9AAVe;n8/xOo;ꜞ˒JK.%W ?}ՙU2˜٫/Z] )"^qtRW8IO <Oy:7gVcڒV$%NPu[^寶x :H;4Uǀ!hZmr }xxo(yj^܀kN}xaS6eE&a 4(Oa$`%\+v#xj9&_00_L%|<%4yhK7Lq;*$>K3P~Vͳ7.?Q]GS/T,EGOT2:ֺ7^7P~ǽ76%Zu:Pzy#qD%@+_G/(1óFFe]Σ`3_$\T|GXju*vwԎnjh`WzB Njx6>Rdm\*<%iƀo{i^-ѓ?}"8~M-"Z&53,, EՃcmqUwuT1.NDp$P/%ڋC:>j6@\^-jv^M)bҀ0?KK>+woW 5ߋs⇪f]YH /~e&/OpE7hC;ߎ*K~#-(? V>ȄG(vW5uu<)g:2G;?Ҥ_c4?z_%~p G?:hRV-k pwS%<#0(HbTppy(btO*ݖH=`;$oe?b[8-{[ɃAVWfw[N[\+L6Xŭ t^.QqK`ө@D2ZDJD[?xaf?q M]/Gmw0[GCO"[8%,(Am\q%Ǟ4Vї8HwE˅(ܸ]G gCͻb&Ryu5>Ra2Piugȇ@IҜ8BhI>ɛڱsCG, EIq48I_>gTI m&'{yK> oc'RH-:Qq/\S +O>(2/R"~N<`/k_GyG|pܹ[?3X]A$j$| R&;E%l9HR484{ٞMq^4KҞu08lms u)()xh+fwm7p;F#̺lK7Y^|O׿2J2!xu^o庉'r_4G럪pbTn8uH-yCErg:RPr%l#o&o`QaFSv$#qũ9r3_ϸm֫;̚o~Kk!5YׁoLϟ)YmZ $םsͧGY3:Is9o%O7l^L6N|P/T%o#4ȸwX D=a4yG6vt~m/5?/ !X> '͜zSA68|#)ugz}rgD8&/'9pވ˶a˞N}v#BpaGȋ!_u{W^RQ8;ә9=e!Qf6\m[oY\\J_ʼ@Dp H=P1Q۳Mt.1&ͺNu_ KZT~UY?y7zHxlhDAcbƷ~o`4jb T[N^j2C0L5ŗBJ2Xf3ZP\I3~+-,萂3ɨuyA\e ^Wm~rxJN#!(D[qtMs^D}sl_xyN/hYm[Jw}e^O9U̙zx0jZVZ&PQwǀ(I tQm^8E++_v⯁hײ$j2,yv'/H_t^c!t+jk̚nxcf]nj9 U6̝ !sIS^wgA={0TzPAհl#s8 99U_@ask1*p'nKfmCɰ_Jm'Bq՗He|9})=zdyË|\nϸ(P H^ƒ$+_/\#L58zL\T6Z( T~~4^&!z*6/Ep(9-šc|%N5@r@%{od"] #~{xtXl,V z¾{RAA2JBT+diӟAQЄZofȣj= v$g28rEA(K 4+[ix7hn먎Z"˓fq\Te`xhO&zcS/eO}'g6?| `ɲU6[wFpIm>kIp[W0o_q WrSE? 3S=!> ɇj~%^i?߬l#!)\^ё œſ3 8{= ߚ 9͌=-,F_|Q!jS{'kM )P YsP JepGpr_jɠ56$"F:tB;pwu-w=sE~'/MmYv8ܲG,'K.Cߟ|鋏AΚ=Ϟ yu-V~}/o{:zfY](;AV~ xƅp#9jOT0? ya}j#(x'Tl}&lFCDDH00ꆏ^xg\6.ywŌR)R47m٣W[gd28ݙ!H-(YkӸ'=+H@$\œg961Mb.@@KYog=W*tRC?qJ/ƶ/}7A1ě!_}Hmn9ٟB6t/K.y9uf?+˟ZC]?\ Pт랣LW~n\շḢ+?}'K^'މܐ/cCGFQԬ ]`KouS|~XqpЁ_#(HB*'<"7oۋn6{+3~) C#|uba,|#L=8v:r&,UW& \(EAR3Y[0 j& …8kO8k9`w/^C;+B! ixYMЊ;P~=2Xr]MW/\}xS_yjC5_s:B0_CԹQ7pSWD V|<(*k4NҘI\!"4s';e\Λ~-9 aA0`=3C8 8i?it<B'yր@^NWͫ[vqϻoٶGUJ{݅D堌N gkr$8(g8Fy>6Xf0mO[v"^^ {3+,ox5+rhPj1IvbV%xU?A<@IDAT WB[VO/o=3| k?!֢|]^%JaX:@gh]7\E|P qw?\Syxs !֧#}ȋy>MzK_o?q@_m0?l=3VqV^slsէ-y=7fN0Nă6x(?Pr%p@G>u?}a~]˭ Y#Z r/-*ωeY(-4CNT5`H\+@gܫ.dfS'Ѳo|oFlkW}g:p/`B>`fmpC6q\E3c)ZtglV=lU~Zêh#O5ȵ6u/p'n7P-g*{nz^_<3W~>,/ze=_thu11ۓUWe䉕WƉL3]xZ\8jݯv7 r5x f< CP/?]ǸGڿZ*[~zw7·|_`8+ T2ޔ !h1)q GŴQc,CC̸kM칖8YaMb?d8eOv{xK-Tg*v8h?Fh_?Beqħr\<,"r+gOg]MgϾ6G7|s.3D}_/|.6smkǗjIW]%Lҝ~wMw/{1Wx6=Wʿ+$^_]R=}|iJa͏؞ @57Pqkvh;3=!^bo=nϫ^6u] O>o aruuk\~XŅLjv3+qq)(I4NM:pq͋.'Dv5םE>@ Be/3cWKw|"{:PT\wj]5)j'ٔe߲WKav9wX`dѹ485s9$F03;բiw㿎WGӿCeG]m"HcՓF'GTfhC b% ґcOKv<ԁ~~=kI@{gia%/d{kQ@rZqXg,I|Z_O?=w)!oM/m/foRȁXd9 W5:uHszP 7Z{zWO.{:~Ɓ_Wsy9n=^VAβMd5MY{") m35 M }{Us""i1~]HaH^D\7hKk)Iǵ?qz*U dViyUjۛ.gpр]#Jmt !Ve^4ae9ؓi ⻁?z7y#yGH}?y|lV=(OwY5ӼW9x~s.^/oWc|ٯuu˸?=EXnL?|\~3].Z7Ux_1ghf;N-u;`8q }te->iOv1Tvzu>[ 6'͏??6OȃAGLnxt_0u?ukvxʐ_`*#H+ s2|,(CiUigVJIP1Lmnksn7_ ~okKgbU7^#)ě{vd'ucESvͨ459o/R)7R|zO?O^>YϬ(nF(zP<<_Z 3(d=QGQ"}! @7kmu|#/R6=:hCx؞OLf.~PS|#;5h"4C &Ta>ݎ粏ZW ?E@4Ӣ[,5^V#nC:m|7~&qtSE'+ۓSE{&AAw=YQԳvF#)\,QG+4f\CXz 5.&⌳W\\k[/m>ቃH_zl;][l__y,eZZBgrm1fP+u9.5mUwa9(ء=_᷎oWC?}ZnGT?xث"0ė0k p,;׻`]U85u aifm B@d?\wk)FeᐨII֨ݦ*G{[^euHUbBm>UYƨO^0o!& E;k'nZpϒ gD j-fؗ6sxx2̓p_-;kx7Nb1 I4~.C q>/|xmul|ЏOϞq9/ ۵^uZ^x:aTI՞jFy+F֝oˍSG>0v \r5M+x%>䤇c{ r?}[g(3ͷ8\um&&L3S7 0,B!c\TB^iJVQgo1( gt%4+Ɍ*^U@ί?'?WZEֈ Kښ́2F)$& 5yv>Dy(Vzn[v缐j/j>~cWq{onz0~{OC^?j8"ȽDjOs$i>Wǿ='/OϼxNydHRZ@ 0m]ւ_~jZcɟWx~p{D۾6$Dn*Omٳkn7[OL99EױܼJ`q171 Ԧ&4Wb4hRmh4=<WDOR?#n7}^>}#wM^aND`;wĿ*?_yןwO#iL͕·Jʧ-\XzZ-)4J9/׀ĕOde?w"D漢6 }2+Dp>=ޗDGs7S &Wt3p.Ť2 B"u=N(';fm_j˾x |{o}{ƝiYΗ,X"p"Aǯl>؎y_ѐՎ|8U>vMT|_)Wyjn_୶ڮ7Ħ3瀮-g_~llzC}qsޟ)>S䜩VQw;&0Vp+ }3Q`H&^⨳P@?`9]1F_í9ow=O_7q,X"DM2+?g&>_Siml|樄;Fgb8mpI_t%`g{|'K}/6Wf'_ѫu f$x.7&wow2]@uS@KaÕIOcVKZ+gO㣳p^珂l YqQJx@aL.,xEǧ1rݝo4[^u>ȼKgV8VIGղPCN5B8)@O?`qBOF cͬkҋCS/<77%cYiA,傃8؄dcsW Qi>Q<%:2/$QN8@&N&:M+b,GGꏷ>3pkHAh2P:.t*fنiZ?6kyoxox[BPqqdt.N 9@lѩI" {[fЃ< gNX/<|b\G:.จ"AҽQz%o\?_}o}[.U }ެ$rC:k3q?#e 򾕚ӰُIƞN}:CkSĹyOMIv :L lMˉu*{ܧ=+koڸP'C/ eɵ4qL?gm*zc;y4%?*elA vgg7Xчq\ֱ?'sOW}mn?gߦ(Gh^:w<^:_֜y量Ʊ+|@*j<]뎑/>~!~c<_΃SGrODHSvrv?(&!pC/J~vᴑW_k;~p`ry򤜩!G\e\IN64۶os8YD U!&6d^jJҗ| 3'/>Tx"KgOh?}~4H^"D`8Bsu#pu⧚CwCnz-*&Δ yוkY:3žxm$>@?p̯ ąϚ0`3s˩[pN1`e,ZPmqG8Yl)i`0\ v9+\#QjP3_z4?)o~_c.ltwNҮ}n>}Uǂ["D`7(r9ܵk9_}W43ϒOClPM\%~})z(*^ ]r)Y[ư2ڐ$yQC- `DP7>?&Q1'xb*_ 7~N8VAmb%5)g**'t3Tm/J-"-uhqu/l+C~?uswuZK,82 q'qSGcp<Tv)1ڬ9# gsmuBo0d5ᤙ.OC^y,Νݪd?S'fhT AT Xk nd0T> S$T9)ūt~itFj Kk`?6^>iDaɞaonV2nQ\m7|NW~o?hI$ʷr[:"6܇ѵϑ{?֕?AjDd)#qGυ;{㹳@E~،JJ`mmh+캳fљo|}q5ZY&DCVŒv> wnKc8>}|r:y SڹHQs ~N?A?y=CN؃/7Z_xt?8=OIRr ^v?w#>/<+FKV>ej=鳞1_k| ps~{qEf8/{zr~?޷d9>p]8rL!"/G6O]7 jֵk҄/̵T1^zFsmdH%k-{{O_쿡]Otgz?K`?K9~fr{)K.W.=_g}@CO|Gӣ_t3;C{/{MӉxٹ _ɻsP;)*/+8v3}E'R#8[6)H cÕg~[;^\1ӁV47}sVr@m TPSɐq. rqT_郟 >_Q\_O>.:]5w6˩eQ~UDrUABnz߇=rs g4ԑOoˎy4& ش{i?)3x_h2(\?cCb~ wz;w{4w2l#T!f(ad Xi1D+Zr]"a9L h/a.JV%lGq(/^/Ϟ>ӧ~>6=W^wG'DrEJ{v ;=Iu>V]ұ͙P?%p^Y&"Pu .cqH֊>)PqѼx}n$Ra` 6‹x.}>@>)H9J1Mhcrz4Yl`< v6 8\0qs1I`a#腥Vm^/p7;?ć?{mn8zOLq"?Q6й%;Wb풫"wm+x7(6,y*Q: C_[zh~!$_8 8gG9Fi[vsntgK{&'`^;HVL=95ŝM1ѵ$&Cݮ5Y5*Nl&g{}wKEtbD`9\K]_, RkEJ9pW-@DZ镼JET,|?} 8 '60ڲp?Qy5> %z R`G`J:(;'G1?O;1Ƌ@ˋWNZ#Z8Z/d23 >7Ϳ"re[{&Z7*Wj풻xrMpݓo$RUS!p.;4 fH_z_C>@~4.w>5W3^)OeJ`=D7p浈@HNTU2T^VF y_{Lv7a@A7Ҝg_R8䜸>5 Z+<lC'AMܮ/2x>؞ @c:ǬCP.[TI~MBN^ɫFF &EVG~Nq}N$S5x9}a4=|>`O~4ԏΟΜqW& RuX՟p.9+Ⱦ HnfM[w9b@ `Eŝ7s:ڲf F;qO=8;ܪ9w|s3?ObΡ%|#⬗m/[uHw,7lriz_*7[^o|эO $7zkE2F>-e鞯`rV~6ЧM:•BoOwo[azi!;0;kb_[?p_MlCd@\~*X`R2XDgMp<& v2} yɰq%}Fjb̋>IS7y9{ۛKKY"V7 ؖFee8r1tþDm?c\R]붐@&v_F?s&)S!2 /wo8q7Fy;vtpb\as 9NfEӛۜ5) /\!7*aQ &?_^t# @A^W:c%`e4irD-QƘ'諝qh1ӤZt3Zbp2.t.ߡH,!Wo5=|mn$}G!+Iu!s^歑Jc 'qos؉~~%z̓/@?ïrinvxa3G{Q(:8)BU i 6SmFv'& L&qO7 څjph|va@?7,ߡ~cXR_-E6EjeS,up2[>D}A8et6[$e:lC6Sx)L<4Rgs63x`w[0ȏO'?n3Qw6A=:nk8ю|MXO&Es6Li]_Zv #'X.=<'Ǐ]oxNO*ꕀ/7EL셫{*O=F 阴1i3W3{]uޗ-/f$Â}p#Orvc_>Z瞃wٻp1ɠjRgY'>]A[ѫI`*X=9k䞕9N5=ʮY~If5m I}8HӯzQ7wf7C̎m|S8NҜʯԑI+V ŒWާn0 xZoa_?̳kc|$%)F@]i(-`qM*8f~& Ф|7/Ũʥ E`f;OJ0Jfl=G1wFc r3Z =^( ;-dǤO_ $hE͊8'ՙ5BzcPwe%1rk^!4\.y~%b 6wwD{?h84j_aȂE[K93n8j4,1;hts`:ÔK5]"6:(ug6t3}DDJAɫdX,\Wk\ ٦&U֢@'su.m!:Q7B}~xBf̷I]Cueɛn>6@d>: F1DA:5^' )rf;ꎳ\䢱gRS8p pwo?|b]nYO|GCNQ2j)[>67PɳT&W>6_7nPlA8I4 XRN׈Kȹ|gs3/ýCU7woK,zk tkι*@NNsFP5g,j2Iu>+tOe?@<|iEQvց_:y曀G>"Ύw/篯]Ne%+ؖȉ~ P*TD@"?5DyZD7mk'jo}^ح}jbmo߻~phAl&ol6:c= 8=]Զc22%> m!aJy|h^x,roNW3sƕ˩^-X"03ߒɼ: W7 Gp?ϕ@Od)RF#-A;˜$5l:O$Okŏ _.bcr]٬ IAO\sm|-p4t΃ =fC znnT9 LrTp4ᙵ*cG>. _~X?y{m7m{zVX]P׷N=*н%Kn?l[qN܋"*y=g<7o]x%āNptG5m&qFOSH/M~A"k=Hux~p]z8MpruMO?$o_ tP*VZ*H]^Gmv4㴆7o\OOx{y^^ym Ͼ0?D<ta^߯[ /=>X^:D`э'm{_sayR'X}%wdboa_ڕw}V[}yUmm;-;Elz~ )夼#h|LH:_(IY<95z1[^jg4<>̰4_cRM\:}aM|J^:7}L>29._=@CdKr]_^"p"@"wmΓ0 O$ڙg|]y? H h\j#eG)>Å?;PA9\q[w ?%/-9dN*Yh\f:#c[ -q7iMޠW<4SY ~Un.B0Ъ9oн_}Gӯ}!Bo9ӟ]5tEoDGw"_fiVk1gF\AOÏ6<ϫWSB8/aA[Wvxa16E&A$ *6彮40<2cUc!Z8/\9^owG Iu>\J)WgϽ z;_o%(- \ G?~Hzdv̙vjÈ;;oW㔷I ~2ǁݸxƶ}FWگ CR Rs$oz_dKxI,"ApT;`t6n()$)=HnK\O:+RE\,3eĚte?K-I%әsom}+U?7x]UvvpkDઈ9D?#[}|8rtU{“ LMYvK j 6yVw)~7d (rl} *?;4ښ4j0lOO[8 Z[~e/]#gۓD9H>9~DCfEEnw~ϗ^>3_G| _g1}o5}ߝ;x Ӊ_5onfy-8%s?\?~gwG8rޫ[>G5Nе9qƣ }"58+"}$Ƶ8^w\0K5n0,YRWA1 8t;hWvr]3WuYx/F1<ۮYwNt}Ũiz1nn짞:n5繚LoGH;H~/+WFo/l+={Q?M?}ȋ-W3Uݼ;*߯y5>6ѳm@[ߡw81pl}=ٟ.y)((5.GЛ}-\o_ar3YL>%cjɫ9+}Q W`BxURYHu&Hzokz;w{[D`7>΅K{ /KM|,~,6Ti%O3| yr`c1x37 oG---73sBiWgP#>;[4EN> yJ~;˾Ѵ>} %)zq|3j< r(e kץ;n(f9C+ɇ(hʔV-EJv))C:pd!hrՋw <%~coWn8=]aǭ,Iɮ{o:}>MRp=XqpW|8 eV|EYfw&&)~/c%f9{2R&:̳F5/EK폝^ 6YU|rT7dӞQO yNf^dF?&;~Պt/L8/+"""# S|5A\_HpצaRruL+ 'zWz%0{%Wv{U;uA,-gv|i `YF0qPOΠ Ca 8j(JEQ@v`X<>+^|rŐg?ѰU-S-ŗ~E@ Qsd:O`@4&Q4*qDJ۟51@<e?詹GO-T~F?oC7QeoL?AA=HNk2z|ۯ+L*+]g3y=Wةs0(qykKiBd[ZZ\ȆxHX-&e]&\އhTm:/8"Otwgs^ EPY}V>>B(wuP$4^>OvaƒΜ[#N8AA0l(XëTd"um?c& *\b.bQ@3BN9T%>H=ꍴf"y<`I~xl+SٜnjV%#=]/~/M ?#PA"eНa"(No,(.]}&eOJ_On:=7y~5iA>NG|@[i O+O:%>퇑F@3dܑ<)mƃiۯj lǶi=Mx|#oh1`8!18T5yS": lWewvbsHL<Ʀ(3} `I'v¥TM[$1X4"9I-e}X~ 7`D7ԫ!:z8v-E/ Qϋ'Oٷd{a?.??[?6GD_'>tW^8 FDCl ?6m|{Oډ+ʫ^ti,`ԌpI^O dhY3% zN_ n.sT]3~cƯI?I dJ> >3<vj0%oԡx|Ŋt'$qT֜1{ +ä FQA@KN``"8F5 h ΤC8aw{5:.ߊeKM_8p >t\#-SE>vT:ŠO=yo 6]p X5ͯxE|iKFp0ުctIt_S#O(oN\Wr ye3?@yG<.%>LrY,;`[ [Fp#κCf9)|Q & OL )!:=A;@/Oс^{ DiGG{ ?Ѿ1L_o<6"wޞvoVЬUlN9tg2>  k"iEN_~NS U/;'Ӓ3's?0jug@v 4U * сA:&ѣC`"Z ~Fu<)Fl!Ns焅uY΋`j,"XOB}wǝ*pL5MFwqP}hƧ۶-_zEj8n,îa:o $XU% ?unl9 @5?BP:~Tv Ng ykp}7`'2) ;)del֝{ބH P2 u`B 4xLvmOZZAZs<W+>Y;p ]RįgGp'v( >=9h-+AU`j ތO}MAD 6iz$5ZT8{s.|;?n~jV[ۧBvaq+Lrc}Oz6NS1~Mx,@DBuC͊]M;OzAW7? W7K"獑G`OJ}g%v>s(.A~|T>kL@AP+6ylÁu'Bmj#,@+;{wZ07 ;xJ[n /T+Gb|TM) 71~Ap@ٿ3"> G]/`]쇄Le\=,je&Fw>,E IbُF Pjh7B*` 0mPY.U$#IORu<&^+aj\K8Nna{{?ʟB~ShQ~)d/ " ^wJPI,]֮;gd7иx~FA2N2f00<+Aätcy)3FxƧ&TWʤx̅~Wag9{LT 7$v9yzRp^_1p߁({@2|Yۣ~M3ohL8:ړ_[\7`# .l,ɱ6㼷0=J5)`z,e'Aթ &kFƙ"Hk~qEGz#?!ޗi#FOL#;&wG6zk4VTxn1 &|3iU9%uqXb{{F衿WߪVkѰ:˸9z ((-X*)Z-h n_ۃ= MiD,>5dE5&%CܔF;nȭ0<޷i"NZf;<"0 VჀD^Xh(.An鷺}l`(pZHN_<;?-]84<$fUkGl,F9&1 >ICV';> 6;J1s ~:m#lVZҕ+xqumE`D`myPNDC}$a~vPJ:>;~+8jE0A(v[OZ~C@犭]n|GXB7Y6a01`\cP5Ę\#8ḞVN=xH>ȁfZѠE% CogѲ p+}E<~`6I#0 a $@^QTrTdʐ4Fe3$"|vq~;fQ@ w}aO|\i`&& P(F;oWS&--/MMVQ@L6\3>`OqBݾ?C!>y@>zuh|0!VP*@ŭ ^.YcK4/l$3 AEJo@u&5 )=ixcnrQ0Uغ[1x0XknhhXسDz怲>FI*79H[wջyO|lj"(h֙g|̯6; vh ahuON3Cm=CgҗK9dI[4:`8&AbtlT$x?mC"xUp ÔUŇ+lkYBdq4l NkhXۄㆣBd9qpt}gίlIwMl3ٍO/NzבTMU3^z;m߉;臐SIPDy ƃ@&lP@U5de /[ؙ#L\yMg~lc]J9H<у6/f n>dsv}(MDjtPC4ԛ6׺T냛nON| *_}艜tV%GsܜOx*g|P#\ROQ;v{|cxb-}%$:!ʜ\}cctXOBPgUKĂIcx䎯|q>PH_}d#mښZZZFSqFvwðmv=Z=OQl 6+j' AV.Y0٦:ZZZE`J:݄eUJ{l$p: w +D\R xM~c7,^xwH/iz>`b}:VGL'`ˆ,h 3JBt0H19 8? =*TrƁUOkjkauPNɏOZpo}ǽh---cFS֌)QWzZh h PouFO9~mTV5KEo.'>XW.mk^'C]l F> >l| MV&+?3^V{dT  +(Q 69@ ڟmP>cF2jXL#d}tWi_sj+---cEuԌ%:,q{( H3 Y.+i* MNtxȡ7ysV 3iG8(6)ϸ=y;@ ՚a?OJyDm`g]7:¾A^`W#_$}P̡ϢQu{Aw5V'V< ( l~9n6A/頗woJþ7;HXz̪tg=v0 X6÷F%Y2IVMA߆]u J?m cpIq{t#1(<"on\Bq؅ax4| 5>ϤaߝOXs3ӲU[Gg 'S/n ?=;aW,ys6Q(:,ҌĂb]}^1>Cq=>/0 y ^.jcrQbXGAP_'VGu + 'ܬ(&87G&bwX%EA ;)/_O<nA1j}--s#pQGt{ƙg_?W-Hax0 NK^% 9oS KV~t]|΋f`:c`3x=R`#VP|ԆakG]/T3ˤ\1;gwb=`ÃXS fWbq >l͋?#%G+].ϥ~^qVaeJs_rMc/{vH[~CcPُۧLˏ=>Zsz:3ӒG4(?ʕ?~_yiHLk\r1{ qŞFgaGGi2 pY7܌ȧÑ /="on>qۧ'ܤ0Grs1'Qs%k-uAL4_aR:;t2Ah*7˗-It_&་N\,|ӽWqJl'R< `pd^~+^LcwJO}8H>j\̣ikD#^MMןx1M=79rwJ9;c5!"Eρԗf,B$JჀ@vvH8x?}+q+ _>6}2^[ZZ@I&`԰pֻPT98N &p(JWiAQCZ$-}Lysa20_ .J@Ր h8v*$8ge>A.P׿xbYNuxs 1jMϽ5'#72Jc:PW4ywf1;ozfDqG5':5\"- -BטZZn~N:8AX\ #AƢUs|@McU|2FGbTz n1@cM@?z3ԇVZZZA۔<-_4=pgCD$(pgPV V.\I`$J=`Cg- ?]$<)|8az_4XGf鞻^x &@L LvAVv3g/'8>W$9}`};(\g'|ѼN]YC+--- ܓɞryЃ%-"FI=|o$Yipp Fb 9︢pu_;{OswkGnhOW~ ;8&A&…Eՙ*a|TRh,j 3]UZN[-9ّ¾'i#2Cc5,(mEEE`qGIoz3)׆o wJdő振PHN:.+YY׃eu(8%_Qd?v$7Tb' ǟ~,x~"rZ_+---BVMl.oA1g@Eհ/{ _!]J8>3FWDa1?ڨ:B\x i bA5jb8qy63y M/䌉CA"d\5 z%M&C<ܬXS-z:zY!&w~#ܪkNM/nm,} ߆",>8xúg$}ƀ̈́Wb֢B{BDkDgҨWw lfEu8׃Jߏp:fOiy3z>{W=y x*juR,`Ɲ~|_6X,ؑ,s/׋q)oKX7{me>aoo=STN[d&= hu:m= hǹ vp 7Az@KB xkxĺׄ/q{S囬XƢ<$^on>+(YD''(cgP`g+U7%^{;`}e _D)_^oRC[PM?kC< Axp=$$[L&[tohdfk. _Y*nu)~X(Xn?tåiIHІK/y SS=pSx񘸫 \51oϲ"xUYCy"l#_ 2bڋ^xX֍]|T#0_\ސ~4OձH\Ddy)Cި Ofkc?e>ku&|Ӿ`D+N9g[gK@+O-aә&% E|h~PV9):c. 1rQĦ F)${Rz ;aU7""#+#fv +W3P/[*%^;:N⩫Hʮc&cU&o ;Γ!."I ]Aq^|C~kM[P'(/z+'_dU[AjrPdI+O'uJ׋C >瘤SA}$Ă~MTKUե צ좯ڴt =EEE@Fv'x9\ p(\[6W2F+X8)/ 8;dE7@; UN>0_ R-q'L\fr]Y]8J ŠC;*LZL$XܩI-'#Oh·͋u4HwǮH7^s-8qpۿ%yC:ZZp]a^qv:nrI}v|}o=]x4 k?p75Apx_H!T@ tE"OfS֮K/h sEgnyZtFR$%W-šМfHMݰuRt%SW[ nX Ձ~]íVZZZka73>I8I$)7ەu5|fEbNUh!n^7fBzb% p^yrVB7nZsg- ,MvNOcS೧r2=I"95˔ *PwA_RlJfNY.{jeh&*|rmy0yNTM4D9yUL68haW9xih8$"LY gHŀ}Z&S6pxu ުΆ ;GC\Q]ا +MPH)O?Av(9umM_;@o`[ԉ¤``$PLFp\\E8Q=X ԐnJkVn}---2ðX ~ѝO5?P#Y9xL !/u֌?:Dױ<lMB,Wg>-LT?+oyDrÄ+X  @8}@"&}>iL64IeЌI4h"4iPFZT.֘LTۧx+---Zaۺ53?e+j&pQpZc:|Aفvu>E(9N~ͤ j|S0ӕsο`~+_;!W}P0J19j`crl44.624P4ԓ J@@af_7\&n08c@hd >3uV j5tqT*?aOt~'۪:kIFoo{w`&L*&A`2xP&G=yR|db2X<7>i|m6&_*u&{YPYpMExE|QoqA%d㪎 n7+62~x9/adGe' 铡I1-hD5C;5oyrM&&Rh7 ־KVZZZ[=%Pj E ,{oB+@n:W c<o8Q%JfYS KjՄCQ ln/----}"+e2I|Sv3xJRj 1&{Gvp @v:( ~q_Ӗoe~+`~x&%NbI15j$>(UI{(HHMa}g0y.-;휷u,lټu}3/^*5~#fMگؙɷ,ɀ,-U'"<+' NK-lӣθ`}mইj---6ð7/+`Q/( R`gP:C!k.;4H~B /_Kh08ug> G|ljhVtԱ sN&U1YZce\|dz PۭmCl=---4ðm %cT4W͸Xvq]8~Hs^4F8#_~Q1+>%7tpjcu—׼{&O,xRcr淧:jL~<㵞4`Ib?v|-z9kv5~'_YTw)G!6okmEEE`ElT^ꎧYdW]١Oxk&/"\Dz]Jވ:5E>œ.[M3h "d_ŏS}R}I]kC֡łU14z]>ЎEQčSڵ{oڈ[]w;u, 4߱{q#c|2C8On{^Z ">;q8<|GF)_|QK_؂><說e go|ۻ{3C֓2&JXL\&XϤaߝG5a>R%Y,q۩0Z._N1 C[tnQLyFȑc?q p+&NM掫&,JtM&2'I.iu>,* {O@iTp|m0(FEE`E5, ' ^e9p@́_-e#pe j 01ܯ^`_zzI~*QHs+}rH %Kk+;5# ǤUIՠ̀VA^l՘-oM~caj-- $O2VY$RÓ2k//;rA7z;#Wu Qhj z!-o~[B<Şˑ0~+ζ8ZԦ*>1CL A9S\\|f3 J]V|M3N XtI:EEE`!Eߘ CnGe$>DU_jX\_p/.*vFn#'6zT.ȏ1_5ӗISr:zb7鼦t\u0 mrI_;BM.&M;EAB;ClBvHkd>q1~4?͝_VVJs},mJ@@0 voc+10 2@>Vɏ#i Y_ :@~Q-N>s?CMSf΁Np>=SMJ } `qA /Gf >Mq1=ZJG|לN;Դr労tْ4GTZZZna?\Gzl_+z[c#Yq\+Z m+C/Wh`uPL,G<;?`l0"mҿ`eg;'Բz_di5k,ê W_&W+@IDATf0EEE`F??p8 < :4ʚjN ۹/w}4}GC"L3 .<8e[[~_T)rqh|Ʋ"ɆEcɇnChw,Sm_|(hEEEPnQ1F^Q J(r U7aـ+4Vրz:@@ffw(TY$hw A)mW.I涚lL',Xe)Zȇɷ2ߢ v2-KvÁAW,?*x ;4K뽍, _|.cugqq X#P1%)j茤 X'Jc7qtXasp9hTOZ֝s^T<#'?#ǢE>8I,/ P/Z_C5Z\&J^M]aK+"""(#O;>7ӄ<H#i;lW)Q\n Rpjse?+$k"%} $\xA w-WyL*'Yw&ňZqӠUvnǢ:S-,hEO-], L<gԱJQ[KCMמ|Lz7f蓊"""#_?~Z߀Xd/f~SLPJѠ ~45 ]1 7 U%ュ󁃚A׼-O%&dkmi(4d^^}ZZ<:or}ݯG\YdЯq"xZZZX*lڼuwSī$Hʠ)O9Iq T+fVi`]pI (*J{SYѦm{$39˖SZ\>"?.>.ӯET2JH)9.,D.06ihh/p1ܩgjZ|7oHnX dE WYM+L o_ 0{>B?ZaHIJ>e?At@ THkG}V{?rP?ܵsgkK?h4MA}rdk`1icQ禡_{Ji=N::mmEEE`F`Ƕi=Mx'IٯG/3ЕǬJox뻢:*ZlequI-s =Ѣ*zc1@o,Ɣw#'䚖&""# ,ZY'4S±QfP(#Ll(AqL q6P jpQI|詨qzSJi˛ &c, fgwNX)O"`QTX }P?(VE [My}{4*f.6-tƙgd!yΐ\y`[Klܽh@?>"p9}Ɖ[i- SlhXvvלCsQJW1=&scvĺ"S7q&E㹺p_`{?3MoN~^pKhP-_6e#kMqɇեʼnUf ?W_2p+` 놺'IՎ„Kcp631Wc9w2śx2'~E OќC G٤ZN;ꨣBzfLT.5L,xx0jYhuYՁʼP [|^PGN>3߹0W|ϿC%0m'O/!bLVF3̢1Vg RP+>6"x-? bNB-&_dg {!?V+--Ji>A+ w9$U[`ZWb^wswq'<ЩCWܜ.Orn~f[|6tKp&(7f_kd 6`.`Ul좈Ϊ&ek(!~),k@C(Gw-GydzӪٯ zpyH~$܉rV' KFuRZ?m8|UVנg"""pE`(E ʤ(8W%m(Tw#qQ'q*#Ԗq42[}mU7?Y|wvv\.|E3/"$_m _QߨV}`C&#cspa7r9cnW]. jG~_u1|'DgG"w-7'|jw&qNE4/2.6,Rk.".*,&ET~jLtT%c99ï51y߳`I0$]1_AEOF7Ah2wЌj;3*Zx]3`ƞEEEBꋒڵC?.y4a59~ D 6+jV<~2;qlk2Af O9@$-g;'};;"(67f#LsIH(hmQ`i-b#I$X<3s)jhh8"j XCO[ 9T'q:y'\ Cc$}I s'| U_ii, tfSnOӮEgKea`sZXDԼeǶ-tG)/L^5X%"w qsoJ2 _PwxʡY>Ģ(fhjZbvǎU?W/v ;%ng~tkS!~( ^^yLh:p*SOKYt ԧ+{-%w.25M0gaj--1`[*S I4rtpoQ?$L> v~+k!U,џMQ, ^2+kbybA#M^TbmAMn}---2ðޯ?ZfM[CJzY Sr;8h 90,mզ-]Z%VS;3T/.(ϋ|w|l@_yh"""#0 ߶9r4(gmQkuIl8͋1n ƙ/`sqbQ=d#|/xL[{@@ 6[orp^'r3p#AvZW'Ox:)X5j:? 9/lNWpgaTzoN?IGZ8lyaiO~ Tp|m0(FEE`E5,}QQW6^'d;&rLcȉ*Î.y`M$p/?NYsE@^7~M3 esb㢅}qb1ڢ۵{O]_ÖǷ[?vH5'fv + F.9_TZ` A/\-r1;oZHwrsCR\atLPVxrOܹ(~w2 ^{$-b¢ ~1һ^uuZ=}̊Ӻsm--!u~siاc,i=9y7qMWd^~^tf)NC2]g;T!}f:?(\8iezm)#pigV\.[8o@@@'epzFuoǢo/M~i9zΕyI.n ?InxXQ瞎 |ӏ{R96;wlO׆UeN5V٩buwmU>\a4EEE`FO>/>$ɻ9q|{}\;?+g>htd{&=NPvڡcѣXo?ݓmr--- :';݆OuCC\$yGP'q c ?$2rS!e;*K\G| uIoypfv@;RSYJx鞇o|趡_MQ@@vPFc.G2WRdQ݁'{66&T:bӠRG~P,[1I{Mҗh E;RuabѪjYz iEEE`AF{anGtZ;I<_3ES$ӎoH+y?;+ͧґGvBM(}I̮<)|s"@.^{ڑ!0;"~|ooDCWKnNx']a?ӕ\{tC%L7VHd`>J?W|V{FdcYO[_jӋ:GU[ZZf>b=om:%oxWw:^9*]$v7Eo\Ki>_eP`uD~ }0\mQcE{T{8p':){ v4ZZ'}~;+s\IW)P)?>wS]k]x >ݯzQOtOXAu.ZF`.9dn ֟ {(O L={xz|tyAg$_9;_baI.?W{t,hm?M^hrĚl貫~/>zȾ_G`~t LOl~t !e;־wb"cG;v;9z tՆr`O7uXk{' G>[O.[ysٷo9:>q{:Sm~9l6G[[f9XuQʱ%W 89YVe,8C-\;ꬭT+{Us.o`PakA?;OX,`c~d(~B+AAg+ IW4 TA=4zGV'5Sݫ'C6Un_vf|Ҙκ:0>ri 0x=7Z *}R ǣJ__J^3^뮊)xbz F /_pI7_݀qyUG_ٺ!ևc>wsK'J0=o~v1np{+QUV%e&1Nj6vN>T/{b>랑/V(GC8Z&<{~g䏸VwbuHQ:-\X< ˓ߖ/ik9)NX~q"N` Z+{T_{š܇ڻNW?ެ#_;T$ 8ݵ ZaqohBͨ45Tˋ?Pu_CpR (?L0ZW"~&ƁT(pkV#l5~\[gWW TawF lRɚ◦d‹X갺vVKI޶Zc'Ru2_\Jy8utZٍUQKS!E u:{e (p6ROv72^unv0Bc#(LŝnUW_ţ^XozOPӞ8yHxƗ{_l ]r>_ 2tY?J.^~͏3GOyZ͒#ȱ8Ԏ'y{?{yI8gAWxyܴ<֮K c9,`ϧ׿:'g>^?UyRUWd99pp;8deni qUqcO᪹:(4'}8P[:lfLSV+ɺӱo*mapuЏ7)sij+h޺# J ͽ8Pv4G>zYP/v鎯Lvw+Ǖ3eg\t鸢ay3wŗ_w&7ַ^Ytdcʡ͊nNZtXY; (z(Ph퀏|T}P@ZWS ">d;0 ?A{&/AHna){sdv}L-tWPڛxxe cN]b>oD>OiE]v+\k݂ 4uJZpRz#ptup1Jtq<^Fgc`z?jmuC#i< cXA8/zG经ۺ^W4Uǃzu߸yh}I*L}?w4wbM/Q!^Y-pPu&?T&`e&dˠvIAa2pl%NMR*,~tP5+T ?U$u!2^c'x8(P=6A\Aac|@Ǡ(OwzUdٞz:u1R= THڡioݣGJ.^!>R8G{`f4v偺šJsu] a3Ȼ=g=b;uvb+C.yt}_AfѢ{1pW0#MU|4/_$ 9Z0&E|'\D/iȩN䏐w={3R U\x.#\85p`SN .YOֲ=NGm_Gvs9ݵb?+L0:l%^#ƧԬ?=ݡmOm_t@ z uqi>>>~#cf. I+6h|(5RUSWuwa >]> ]8(3~:axR|?|oҥKguq:`ڰ~þrƙg|KnЀDhHj,< ɿ{ecz$"䓉('@0X |~؉ %>!GqDMF<8 2p@Pc^q#Z JaR vI]:vw~b<.;Q>tN,|u =I?Fc% ÑJ JN; ~㧸qqn0YGo_nw7iW9[xg~q$-< ,'iil.;=s%ig|Ax5'@a)2[7=PuNZ{VRk0?G{zǸ@;QE{m"8; y턼c5 !W|;7B׍Jj·|v?fKB3e׍ 1wOH#Nkם3#_MPpɒ%Ulj\:ġڒV6ΤG?9<ɟr&"*Pg'g$MhiMNB ~ʛ yQ1vkOG3ؼ8Ƌ_EoN|#t|?Q/#\ڙ[U%q~~H(\k Y=ig|e<kG:ٮ^8f\C)WC?懅Yˣj|S~uuW퐗B'L=^C yz-J5%@9)?kǰ(!qâ/KHO sdKآo_]ޖAmw`?G|stwaYt@yVV4{+Ϲ>)5G y<@}tXl>`8.nxͳV;}~]z{>ЧgQIq>`gI$#<G;5E?Cn.z(}VTu}KW_CaSL!`#%EmC9I0@Dedp N#C %@0Ad`2LbxV{9N!vuUzwu;Ew|܃XP3 92vh/zӟ6OF ᧞s0EcXScqp-,/*,>o*N3`,R6ś8(t̲m]AƋ摕{ 97xP-CWSO/a%V;zM(TD[P |ɩyIռw(Y'.9u.9\GrH^SyG8t[/|[Dt>2W~^S4/ + Q,-hFޔ\47K,ۣY0^$hOhz!Jyx@_g0pCAUY5z^#yTMa:C &=#*p*&?PW4rSǙG(ghSh?ߡӁ8Ue[ x|<8B1mןpA N=: L./n c RVrqOxr;9:5\.qK~_л.raOfL};ć'}~q KX6 ,pS77] swZ[5f(:ZmaP 7JkJ#N@|ՅHtJ] pw<ב^NF\Yjک< (|+|hAP ({3׎m!bA Cq8k*X˺;negeӈtqz:jaiq/&mr|k׸V=xx.R5$ $q`C{Cz3I݀07;!.*<Gx@  e^YW:(AL!GU3O.wgrt_(qx'=OΧ_놼m\uɴ'|E ^WSsߘwP _9CeO1puj@pN9܎7 ΃ rqwN/=Mm󟣦9o^K?skWBqb@H N}8a@1wJN+]J\FBq #D<6`92G)x@ ;]_qޣ)ry>]URW_"ϪU^|]sO蛉6b.`|a|ǃEd@Bo t5C웶̀xBNa Sb̡,+w>ws݅ad {7oMMR˹l`IdŕWȹ0|im`= ׋4;0kq㗣B(Cc=n -Pٓ2~@2E]ʟ  ?="<72`pv"zN'}8N%śy,ەu}yxPd]Zqw ~a+ܐ8`pB/x4!Mtn<>֯c˿WO/Oq¿=m}0y_I?{/r~ugY`pbvKYMYrŢv{_-6gfLad)7(á7Đ8P:[lf6#ռ(>3%)THE|.J.)Tyu+|߸ԁK+/ \=`(wSǙJI:[cTVãv«[NPi!R'^$0tZ2t! mtrz[:ȣǕ6$E_m?c6!*4V)+(4ʥ:/ɼB㌇q u4㚇L ~|~ 'vqYAE>6/Q-uB,aq^ 78@h@  J{w1RF~mfK]z:qˤ-V1/.|Ǯat҄&w+ ݹ|"Ýg]5ЛFQְ7ioQ$CuC3qS=-L&ٯgSכ_E5uUu%6#͋hy OZ^?ʠf#Jt5CצzuR,?HX_ɲg\ucrarDwK@ust| O^x;e~ラe'~Icsa&i~> 3ќe?nf^C i@.ñhe/\r^u;>(:b\X˛pnz-zn7^ kH{\0 OM+ת>NW"9VqMpպn޻7k4sX-=F7VgfΫE&+!T]ԭb~܏-5y)bp:?nv^@|; zDT.G|q0aoU2s1gQu⻿!= ~)KϻI u(b=AW\g0Eи:> p°S8Ai@ǝw Xu)*u_h'k8Ǹƥ?g>u*s:FC<q0ʓ0Q,^# ?BNf܁ g=ZXA.ph\Pg}0`]=)==|a؃ r5=/0\{͹i+>X`1K/I'=K𣵍{]Xz\+a3 oصA):U(ra^8e0t8^6!vTLW^[h 4@M<›%N`z}TlytZUzdcp&Q ojP? .bl>tf %;='6RSS 7oI?euO9WKp ⵯ\ac7))Wnio(ioF̈́wbt.eֆUV0r~!Ǐ+IDAT x?trqy|6d@5H{?JT7CJGN# $]|"ΜW 냪z=DYggx77^=E+e\S 7w7;_!`hy`2~77^KS"O_S"^qzߒ<B_ōf^hrl3!aBX&)8l^f^]Vus..8Jtsп8ި8Lo,\0T܍XaWԛ$/\raY%S8oޤDk3_?ժ4g͒.v>xu3[o4 n״&A wDT-݅BrI^Sy?39սŬhMhl'5]4tó O=:{s=$Y&'w[lXUrxu%Gkx G]#~xN692^χy~tx OJ.q.3ϸp0N(?#~p?',mCrJW͇. {]CϏK|>ʖ)`~M+|CB{x>b_xkrRӤ#r4_ρjr( < xwyEn,DNzxz= Po~\6>N٬2b@Ñ7%4  $j?k0&l&gsfY^/WKA4|dUSݯDTA pW7a\.DctY pKsN{Y >X~.OXZNiiWظpk$E9'4x+:p0wCUAq6_AG7y}̌^"`H ¡C^;`'H=A]i軗9#?=t1"cyyܙzS;rڠ{1r=Y^hȏun {Wa%LX?(|̇{~0*<OO@9G\us<#?yoz׃2'①2Vb敧iV~f_?ڼ3flz0Yf/GOPʳ)S̓_+>,ryK_sJM*Ǜ]<@>1q ^8ͫpD  Eo<ٌb4-8@c_(@`нaQ?Szv=?8_(%t^ Bzků5?>'0h<С6˥ƣ޹CEycnv[- Wx`5]+N6ء69M-ҞDtP!o:]N r}]P0NKmxfx1wHWQ_x]~HWGZg 6\yE'~T||}d η. %zB4`M w8h_,yBOAÙOUAreˆqӃGcR^\)+~&N||گ΃udc|͔M/H;nVXZq~d_SYP {YWz8ػ>f6*>XRa=:{-',i,7&7YڛK誰wúp0f Vʛn/Q+i$ÀR8Z&bTqE `p7>ij^0G0t=yƳ|N]?O|Dg<~fz So ӯ<҅ӆ}ڃs+p_bzG_w'( }}?"=</<6A _Fڈr =ʮ }z-M/G\'ZhR9!ެk YZ.GxP_ oc$USר)<~%{x/~JgQgPN WxATHxCOP`uUa5t^Ņ|whWk= OI/;tt_ؘѓV>69P`ɊL".C &RhC}ZѺ /0 aE r\ vy __'e:I !J95 9dnom)04 ߩ7*b`EmПý8Bܠ<_CN h:`4;t#& 79E8a2<Cna XRd5W+EP\Fi?BBw! i ċQm4]|ģ-Ii\x}Q]jp苯) <<B- ?^2 ~>z;x7.>zpȈ} :bu9(ٰ#s;<]}Is6xunyFz֯=.]uwԣ_zS(oVjzlNѼĆ(fne^ [ؤp`d<偡+>ͶCY7xQg %P\0aX5](q3xPAK! nlr' AfU\^w_g'Uk>Q :*,|pQ7ZKa&ټss&6lD37Pʛ!c٬zDs^˼d=?kWuCmpq1Yy^d"x()Sxrԁh:cց3>s94|9E8Y{>Ko z6=@k*Krn6%yq߼>X+⣉샦& : tՄ>ٵ'9/ˀb\|Xgc79\7ΘQ5>dO ^eɽۈ9TeR.,K.!:xOwM:IG,?y7شtv#5үc+=0""x{ yxD\3פ\z+\lToE;{We>] ś58ColNh:pCZMM2xo?Լz3F̄Q6? <7{ߤ'.56up _5Ǩk S~R]^B:@38ldOy |]Nֳ.?2aA0C8's |$^iE2;,Im_f>XN]Fp)/NZ?9@ۇmhBObxr$Ş/G|yۃ\|ywlak4h+É:|F*d5>@#>xo5U_ =^_S1~y()fӥ/{gnG-Wsyg`{[ \z>cfG۩YI74Ʈѫ'pmg8xU25.TSsĴqfqx&uZ&/'5\޼;\hQr5yyˇiγeox!JN=xl, Me0tNy抦;u4cBrsIAϮ@JA7|I< co 5׺ֵ҉OvڳgMe+W1O~ӀG/}5ZnL]0Q鎿!'yY7!kэ1nvYϚÁߛ,޸_+憛3|g*ZyBV>}yMo13ЦQ57/(Ҭ/)4X㹩f|wgb%_:Z_dhxzzzi\_8M4y6v%^ܞ..ɇz7I '72`wQ+{ .FD{Qi,^z͐_Sv|iz g|^lb4H(LFb3cό2Ӟ}rڻ8hRvؔ/k\|g} G61wCkP6*]#^f<5&cˢ-؛FS_Kw#WMZ/:Uc{6%^97~®Iw\ z.N QguWŃj&>h/n&>0,x9P5'\P]ϗFhn8 H!oL}=*Ombov"0ӳ?GUR4}4&niގav0I9 Uf_ M9pgkS$8;#׳?(Wq _F3@55am= =~y~*?iG~~&Vjt{SVGWY20:;X^N 7-Kq07%(auxS:Closy+ƕ_cg38d,ʾs~QoyΏxAΡkG^K|0k0|N=|3GasZ4Tvl!xdzcNZbUY~7z?au풛18 4hMbS56;6࠽͛oz&(ȟSsh3K;Ňq2av|MD>xmv owaǼW;Dݻs8dx_,bQxaj@a jx[U`MfPz֯>nIo-e\M_ nL}lDSӇ1.G_c3)px[WGz|ռgTk̗%0O^|8ui# 6^8% $>f_S('(˄lnv[Uַ&xo.R`+&Ƃ_'|kN%`A4j] eod2妠a6ix8hX㕟1*?_4㋟Fs}7X! kSSs޲],~>"?䫽O|3~ҷ]ОN!b`eDo?5ǥ`7xqmލEC rC$S63AzJBϒI6~]5}M{Siϸmn!vġVw7 E޽闞t_K{ΐJۥh]:Ҿ ҋ%BCSfnuf6ӱykS՛)lߘ#7)sHyရ 6cw 7iٯ*WNϘ2'Wͧ#oSHO~0ߵO*~xE}هoOg>dE^TvN ~3^J~۹}Kl _)iˀoڂM͏.eqo3%â7-SCCQ^l}W׏_z;盯雱ߟ? 0`# \[w2屁N1Y׏iz^oY!4۠ &i+~zo=%~|+Sbw>+iOٕvMs-To8'MŏvU[k?\Hk@; OVE}fǤ¦.5?0 l{ O Pt#C|gČvC@wpb:bClpo|zN[*e'~be:'/}"/{@̓'T6e!7Yo~(ofȏ4TɎQ/W'QW/<>+_UO'[Fuxx(52+gsQh7ӉO~Fz~}p`MStgA?6 J͜/m6r]pwplB.ߊCCMuCBð7&ס: A_|&(*]65`B{o$B/|_ZSvXO՚M)yɎl1|Mo{6_m2zSz՛mY5/k4:M~VT?0}~-&xXJ.OG< #vHo{7]@;, S-?tƷ2m[wne3cB-7P#6 tuj zyڏ_"!9_S7OP.+V~slǝp8{{'VEUUɆ3XN?m眕=Ɗz/?X{mU},qKs}ӷJ&MC?K_+۾ #w[!&G=J1wodF(سgOzPzIn-Sh(/jz+_S/dE^#w~zTuȼ6Fխ[I evbE*np C}R>1Wh]:}}s|mz͟hܵMmFqik)Jl'F偫M/"NnǷ|#ҵohm0I;5ď]/I-6Xl ?O o?e< MV<)e{'ڮO|`F̏ gum8e y.,|Bi\ѽ{mR:.wc`;!]oz~Áv]KӘɫ.;4^'<%q1;4˖v@;lq~+xUzcś1.1Q~7xs;KO>_#ϔ"z_L?_HHe+[~vg}vxu: Y^CMx} Ljo&a 8NB'ˡGGcMww1Z[% {>w7i!]q5**w?3'Ƚv,lBRvXH**p>>7U`+Tߘx}t޽\g+bhYvY+xa &}݊!vxn|[>QM}~϶+;qVwYN'?wv'ee]en}{>av l vD.ʗ}CzǛNl_?m=ݟM0i|?pL'.?zt.ɾ+ywqtCwہ/zz~+BxWv# |/{K[avP鄻3Myʮ* ֬vpOM珤Ӈ'>av15|-n}tqw3ķSN*u+SG;|桠1=NFOH?pSӢh->A-[!>!}R G Z^߻7ƾao;< U`WvV[||:Oe f{ÏJ7U?ꘛ&|~ZZ6^vx B  y |tn_o;c6|lW' + T  ~(=?]|W].K/zC{|,CK~D:숣ӡGi|~֛@;9oo \Ek^.^|7wW_ToEoN{_vo goo?y~7!npIۦ߮VVQvԢlhhhhXhw, UUUUU`{T<([ZZZZZvXh9X@@@@@;lyjQ ,r6VVVVVQvԢlhhhhXh`l`ۣ!NT-lIENDB`PKhoxOp<9%resources/graphics/graphicContent.agcTM /+*=l,IL"dש>zQKM/e 3yV18`yG[[BQͩlڪ᭲6 *Tmh2븩Qt>9z .$xD Sl~9\bw!8ӡ|Z=<<?/B ;Y[TԵuEEk$;u?`L(,@y%b={ʌTpЮs:W)%oz_2fKgS0P@ TƛB1xzPpJ0N%W*+->Ѿt^6P fiڑIÚbHØ_fnBTtd-UCh-h'-׆ۊَ5V6! )r)*IoPKToxO{%#sharing/sharing.jsonV*K-*SR23TQ*NIM.IMV5PKhoxOtHڲ thumbnail.pngPNG  IHDRxsRGB8eXIfMM*i(0@IDATxeIU.\sLO΁ pQQD" P \T0*ra!MCO8={kUksut;UkwZUj}g]VX 30f` cg 30f`f`<'˜1c XOࠏ]30f`1 8 30f`x}1c O90f`1c`8c 30f`1c رmkھmmK;XoM;oK۷nj`]wL{IM~{/o{{jlt鲴tٲlY |ŊzڴnÆ~ÉV֭ Fz|,c X4>1ͷݒntx޾M7^8pL&bҥMg{~; s{I3pd`<8^FrQ&]se+/K_}%7yn߽kQܪUdtϻ {t]nGc Dq*8B. 7yl\q)^uyڳ{0̬\*{}yBp'vrpp01c? p3mtѧ>.'şd/oyfɧ.7<[[7>iÉ@Fc '8x 7>|<]O$\ՏyvwV <KM-:z#3pf`<8 e ;sD?.+ww+k׭ON ?-o,c '%ckf_'>>}+\_>&<)=ߕǤoo^30 '׈>N2/|>} -K]K/b"SZf@G Go}ģ]_?11G8 NhmlJiUbS_VR܈8vdI@Dn.|' kŷ>)>>;Q T6|jz#d۾ 4˘= > W^+~lَZ:嶡/,6vlTF+y%qּ%`%"ɀN TIN„s},oLħ>i w720Y}m?>O%ɭ+mc_aJko=pj&\{i6$m=aG&DG=Kgo5 v=Fm{98ߘ- ݖ=\妏7\wOܲ_~o'ܴ a^mW(_6rEMSW--~΀躖}50Ό ї^SnNӓ8!m'}~@)9?=Ó|9˘c5 :r <뮾";ߞޙnw{6̯ZejW-{e/mv- I!>=6kƼc=#ssޏ{4woCsi΂nC*5+e'w m]G:̳ӓY{\{Ghg=Kp3uw%=z\ݯն6>>y=ü6SmJ*$ė+w]1OHW⃵9(}Who_7QޟIs΀ tgŬ:,7 &ݵ/[~`:S֬]7mj1GMf(@2xǿ'pys_kWkpK6~l]~@a>ivب!WԔEѳ?TdE'U9 |`޻NS??w0^ؾj91Gkudx\ڏ=nwwfvʮ6!ߤmsԕPܠ2E| 8$L;Cx^)Cו$:@X~%;+y_pY^+r7_xWǯ~xͧg{)s ;F,N|(vFzӞ1p7 7|玨mEؕR QX ;BP]Vvi.hkuDZ-)͓֮M{gƼy7?ul R/t2FꜤdprKꥷYFk-Н͂#^bw$nKSXe5zB x׻s>|.øJ`_gvgk3צ<R=Sxxiykܔx?n?li C3{[>LrI?s_,4~g`vw1faUx{^ʄ eݕ>L<'ćyƚ>\4 pDP+eL1⑤2hHM:plͭl67]&'}CڬsbrNՍͼ=zXS׭>.[wS k졶mL?Wgƨ7f`RI<?~p jbrwW[dJ۶~%_eS՞+Bj]c1nBhG}zڕ65lŞ\ps .&z 6^50O4j".]4-wX}.{=*㫓瓒_.>|PߧwH}^}0࡭+o#/=)fX8 'oOV^<?۵-S({ 0fNM.;j Em_2쀯2ReLݎ6cƆ|ltٲt2 d.MKjl9i'Zco,|X%T&UP"Aqu6wFZ䱝3Aߔy|/.^ay{"wwU: by7P~^_-huЋmDwvJ᫨wޱ=ݱ}& i#' { l':'=?kH!˘d`<O8`oO[r_m_;qj&"QNKsK5*k \-9ڐ)芮Mn]z=8髮`с==ZHT^:_[ؠ0Ӄ3] t8qiGfĨw;ӝ;INv]|O9FWӥR0 t%-GC~fz2p|k:ws4",xj+~o[a=akwkmպ޴sB*cqtŞpUmjڄ%-NŇt)kI'bP:tN25Ye-7k!;txIwl[ޒvډF5"Eg@S)UA3?M=3x@PyW~?>>T -V?V?Tc3#ߖ][}5z]/!'ߚ(0_ϯ/#.ᚺ'onWyQ]~[w7qN8|SOKʿSGI2`T|cNc<@FoX4&~I?C78p[p:¶oKo۔vKmZ4,m 38" E҆gwpG`E`ry^oH}Qxp!M77Us<$}(aǦ]/uL`i Zl 1ag=-]wT4}֗7k'ծn@Ss܍y7pB:SEχKoT:b7&;Coݔ6UP>ӁJCf2OVN!{! O|/:-h30YN[9V}ˬ`!⦈E6Ҷ9Y6ƚW܃]|uMlzاۊFTز_ӕYSv\fDXWv'zMMėi|]Wk~IP-N ڹY&A%dg|42 b@eU [nOUoS32PqIxazPd'ig}Vnkvdרkn=ۭ;]ClGf1vmB=sʇpuӥltzA,˅]Ȫ;wiÇ- >>3o>7, =~n\Gg# ['trzgp`J' tn__|ُkf>ǶERX ɷUJvʧE4H[c6Cbu|=^]{_~[x~S+vgo3H[{0x!֥R1.U2\NIt3./O=` N$j~Νw-d` a. Dz~Oڐ8 {|D/oKxXv<_yyw㐲—,֯!X6lVxX]}mL  Źxo١/f{k8d mNCH#^m7n<)m<$R@M.Pd27BtQKi&rh9^Nڬ NSV{M|畷i#t]w#R4=Pץhyx·CM?Km8v7P4*.oKW[=s%?پǏ.zfueN|kpc85ͥ uN:^Y' {銪 qs|#5E?:2hGvG/?G|ط~"_&_Y,##=A1S r\O_tȽuCfLs[h8yſXP\ؾ0A G+Qɼ]ot5v<21|;aA#p(;IwE}9308lȐ:0q]:!z[O Nz7 y>mKʻ[wL;yRЇWPGc4 1:p ~uzǛސ{-^V} $V1g~E8xk[Xյ:47;Kö:0hkҍW]vCƵ3N;u ~?G_ʴbs^F1?tM7[?sje>{h/xƦ *x΀j0X ƌ9mOm"44l%.gvC3ϰe]CAg)~ l&7 -xNHLn@֦o.:>2}]}x6m \  ';$Γ3_Lܾ7DPnv-nx|=n30C|iпw޽r?~_d-\Xh銣YvXzQjK.l^;-ӿ\7F*'}Z }9D WqviS4,4Ÿh?^]0T(О6\/ܨV<61fQ4X \i;2eeZ61#',m;2b/Ii'`ۣ$+/M5͇Ur ]N@$c'^N>ɠQrLg`<8orL}3߲Ξ׏-'X|*7BmAXWĆUXƜz*~ zًE1* x-P#Ym9c0Za?S]i--:+gO-̛!TNUv]"CiDiW& Pu;0A{A$3 0^8B>]NC;U{{/^ 098y:>&tC9uӫ^ٕF1ݾm+?l j>b mAf"'!r2} 5Pciݎ%W΃:6S>.ta0PQd4KNQf>lBͥiR4Ӌdp%m횬1WŽlbpMp`ES\`ކmnn3Ur@7^{U⋟ i'kr%ߔ֏_Ĭ8nxp eJW+[s?ELQeu*e5_!|ޤIC,f;E@E6P,dڳo߄+[a^scUx3Šhs9v-U)f" 'âu&?je顶LFi-p/c)EOJj\SP#d2:X`mr)÷o}ģc" 11LӃ'@wO+qտfI?Hx Qhk|YgN{L4D+o8 w8K'STG`tLS]/vlattP83wn7ܴ)JFhW# ;K" a@b dr0 {}t~=<xp~-oxm׽Q>n,{m+YXďZ _lblpXcUjͥ4]x93Eeq<0_nkxf> Z⨭ pWnt;OfzAu6[!; զ- &9#܈jsJأ SM`XՄ>.pqN[-:q@ [ _}5})57{5>L"fl /\Zo xp YJ7؇^cJ_g=~u e3% *Yf#->Vfb3/wGB3,x\)Wf' ܵ Ӫv3PkQ?F`dvn4 |ݠ3zPnmv;O{Q vLc7茧y`DwOK]/yZXz-Zzui0]:r:}sc0oO;h/#NYMBa% FUeWE"T/ߙc|1rÌQy<6*UQĆ=*9mod C :Â/|ci k9t||eo ̧_7UG?~>j#^xp/qu{ϪBOr76m,ժEBeM*#_2Ng !{YՉ?w<Կ=[6itwOW6?PT/O }= O~ݞ0_uiy`[`onfvoLW3/9.燹q;z@5zCkRqt~p=Mvҋ?훾X; ;ݕnl%SUD:30ŃneS<=}kz=4{~[D+. g XM`\ڪE_w&Ma]W+T28'>@j|?~/^O9Wf ΋MT,D5(Q9bMҞypB*lT(ɊϦrC9U!\j!wh:1;kq}C1?=ASnhVn*@kV85K[}fLxW~dCnD?1*̺ ~1U!gUbANGW ./t2[ ^3-\w:O|٬h0LY8ѬM֩i~  oݜ.G I': $c6<3 wAJX?yB?z]zS3?gݒaOrQ5nL~%̓8ڋ$6R; Á{@첤>qj8x E+㑸\3fHe|3e^{/7=_U/SLtя~Xӭ^c<"p~ ;/JP5ވ*̞޲yx Hog iEr‚?@%ʵ6c9p`VB|}<2aOnq/Z0/qEG.YRڲ:G~f;Rի9Cź+1GU1דXieS=( ydE }xXlx1wMnB'>-.,[a.(]K|]096[ϣLnW|@p>_ăλ,GId ƿ|hY)%$-ھ@`y\jEE{^e~fҐ9,^-N%^)Měr \^ s OIum7W$G?sϩ6DZxK 0gG(;%l(:Y*˴Ԁ_4QWm|#]XP]_J[l>o "O<@"A%q}Ky|@p~O^D:  Q0?yEqb}~9v?\|}, 0_kF݂_:ǧ!Nɱ t8rl?ӷ58witjH^?/A7G8PӍUE׵#;W>+?7n%*'BR(UoV4ު4tvT6 # K:mutё~Nfm2Y{@NLxڥ Ua a-|KG^?Lrf`<wݛ^J .񳽫~*圲,@b5b Pqs&4dg FJn&U+@&Ը+@ =wIS]a&fgl 4^HtC-uxNoذ!y1 :ОZfLҖIrʝnf K!#sFyçe]e7O@zh9- i`8 'xeAAy `i3A ywe -/t{:㕿[= Tŝ'q}8}0R2TpsMkA'⎵CkjCTMs;_zX<~ p+@LqZ Мxw:+[]//N0F*jvJ9cZٌɳV@cx`#幌|p]EХ Xg]jv' 1i|[Epڷ{(kni&l+JOLCxp;\5̀F!+d|3Y9hno 1uMz_: zf %d7§؃}p;p3q6͟g搃&j[|r V$A^=/֪XW ֤֠ݰ!(΢i/ajN4x/xa8֬}䳔ʞ˥牁Lv\ϗ&j:G&/_CW' sIt%I$WW S]$lq!6̧Lz?wP| <<4xz.1Ư`m= ?O@xɌ^|Ez#+m`W?1o1,ҩmSpҤm Xrg`p{߿o޴oo66l?x4R98!믅8I*'= K&M{{=Uɰ*^!eZiR4IVP[qKeMaZYj90#@W^T&.(Q'klH@c_jˮ>."4 @r>J AGn7#5Cm~<OBJuŹ=O*Or`e t R%|&1OY#e`p9?_3gWWZ8-@ ؠcqlÑWX$N4|J(pVoJhy9Vf$m?te$JbiqDЇ1O᫸xQuW_~R_U)xGmyݥyP\#%ڵ;pM䂈"*Dƀ\Ng-,[z:!kq1.WmмyXcK~Z>j_ߜ.|-g9/ q}R,{z ְY D[[Gx%r}6_Ludޓ~`Ձu_H`:XÀ-aqiVYjYe$u\* ",/ݘ?F|U2K q(1Y,]㈍#qJ7n<1~nwzeigf.PX0bc&Rd_zf W28rjx.qf']]azjGw _+\K>yF~$96W= ?^{oQ xp7'x=zJGcfOY8{vg3u;L '=fxf3?߂C|M|=x"~gթ _vY+:3Ohkv]ʗ/]?ҩސH/5䱂QF]Q1T ;T]hpHa!;L8q^Ȳ  {u1nYCE:&t=K/ ~WA=a<1Oۻ;&V>r;-g-osjݱc{z߬;BΰplWy,sBRٺ{\_ J9>K3c ?:Z|YbюtPX/~U颎c<ڸ$ 2@m~_gp{F7?ǥFSJ<~OXJ?5//?^!XM *>|a1Ձy(5lX~8,v $V:[|CgH %Ce)ȇG'<+Kry8٬^8hE`yYhi 䬅wۤJo\n?&$6)qʱy0sY=!O_͒yb;L\ͷݒG̼iW| jQ`J|@s (Xy8ܞ:8c&2"z ?𼊁G$df̚C5͎8hjÿ7 Yw+~"&>P bgO^>14!wGqxWڏG骫s.MtW2>$[C$jB*NW [>J/?Y< u^w] o'y{g ʷ6\sη܇qP+9ֺ3g%k2C?L[nmO*@IDAT;[6ݔ9O~'~t`|^A|9?hMKP탆S-{ [nqg\6+PT]hH_)АB库&KVK*<*fDOc0K9>Ko?Owf130-'=r_;>gV|gER`mZ6{Bbjy8*B@x ^3 gvAE8_ H? *ϧZ/qgK\]~fBHW 4 M|t_ŷwtŕW;d.iAL)ex42]+UmUW"6cZXs[W<(w0njx^WQ-v?.4vhXn=&uGqǺ#lk}t=9pÊIEx~s&0XL;G ^u]ݢu&k'ڄ?~wC $]T{>2XT4V>, ط7_oġո".Wc֪wUhxqOy3<er?-eQ˅Z͟f_ d))\7`q8ݾp}Ux եgx4DK^B9c- 3j^D{wTad8h\י,~Mm{i⻼w3t`6yzcUr읆|}Mp֟>3y'_YC.te_$=>chAFǮ5Hr;h]˱NԆ&Ã4¡ՎHW+l- 3u'iBJ#:w3wU?``8wН~&q5tA]>9?yvZq ̎@=͟~eguc=B< yu״ du~42iO{ P`˳Xhou_Av02_Z ְ| kY݆Bȑoٹ!= 'O4~WmS8.U>W +-_"b/^Qq #!`=8K[LW|勳G̔ w$g.g}g)A5ȿ|Pb;[yʢ=AT50~A:1#;~afMgD a(I٨NwOJNv@Cf yaIB{ph|zC/# ځ]僬s©cVaY'+AGF)[nx?ʕ+I+%rrIUr1)ux=]ixxB$&"Fx -j5G m*C3'H:v|_zE鶛+m8VuE;\,eÉ_ӇـZ;7>=Y6Lvn_/``@ 2ǂ 8 o #?6 &*2ˡr>k`<3tqs7> On:O0u4Oqu%Zp<8~Ыӧs>ЃG0S @ uP^}ðwwᄑ+NLИR;X0u6V_u+?KKK&>o\bb e]C92?0505-?C]|K|ڝMJ¯ڴd2Fب@;IDcA.0Yʶ- شg w2֛oO7t\PNrLU5?+H„F} :Y.(t0|T"3qW . 6KylfMS ,*'ob?MhHD`? !/=LZmڽwLrCuV_( ֯_>̴tRnTJT6Ur^mŢrq܂ T- ?)1~xe\t/qzaOSgyta3Zu}+.Sa3.jH.Sg{Az{?ـ/jqlÕ,?{ښEi}T^lfWƌ3967 gЄdZru92*g2s8h`q*犟Vx_=aQtCL YC~Ka?b@?~#]kv0bW5$?*nM{a;%ģ"^·ر3]zٕ|n ?lg e[HGs' ?1_6^D7|;hO|\51|+`\]p=`Ū6]o cº_84J`f٠ , 2 w摯۷g?+.S˞uN+z%yWV)v!*TvaUvTT+2x$V=/NWYdq^p N;\V=&i%kL& Kw1}6^p]iÆ v7tmO%L@t۝޾#8.ǢKNuW+OLכـ絯뀔\unzoB]ɞetbIF[ ZU,<:EyTϔg[.|3 O7V+27Own! Y=?}st}sfZkU왛>d -Yݑf3qBMm3N'F0%ĉX]NHl&n%"CEx] XwJS L/83^֓\ GUrĚ$we_QcQxc;;}# }3%־{K~3mۧWɌܾ8|Cj4LLA(r5͚/i9؇ympϸM8pV/x]1JxPO=4Ut < e :M4};K{b| q"ˣ_VQ+c~x?sso3g_|xx\~+xX}x}Iy F@{v#}Wzs~n|_mf<k4R"xL&[|Lkjds(!_Ol WU8]ɧdW[Wc\[SӢKl<,9]Б\?Q5y<|:T)}8sÉ2=)9`1)?OA^Ai'j3ࠠɏ1BFd9}qu ^q kPلT1Z\_ލOG7q^w;~sjrQ9*4R+f}q(|/XDR̵/ճ=PiYGس?)f1)dɒt6n$X'ҕB%^g\K$V&IY"H |\<:ګ<%WԜ}ߖKsn\1hs`&p<ǷIN׹mEQ&_zُμ{EM0%LjlsS8,0rZEn#9Fˬ8*텀/Td?u`qW4c GM8?0pǟsdz/j4J8E[<<f=8xARWC kg,څ I#5Y =_j#1wAށӍ7no \p%&Ca4W+tZ{ vkk'5BC8oι,6 <a;>aۯuхЯOQVm '% aQ QA1A dNxޓ~?=A:yg _])6!WW$i'(&5FАyl:,JtUXIÌE O֫2fkj 6[=ƭYq21W>g&q}ZgA Ս;֕bmWO]7Cߨ8۱uߕV^mwNMk֬In|h_˖e:Y_KڊO,%#"OXђv>f& 矷Z3Gq?!|ț8ٝ.짤L90V;o݅).?˿cP;Y;Wcϓyf^\@&N l.x~t|s?h{6t|i0Zr&@]Ѽc{X+t1'̽Fk6˃EqV .}8(cq5vxdcTZ\r6+u}$K}$]0pk >g?u=m'P`1ChNrbs?686'j`-9l!ǻ5Wp4D[^ܟ`B+  3M7A/nQq1:b "oעR|wfB2P/;"N^{,7[aT QzaCq}`kokvx5qh[`MAОCΈNW/D<e]ƴwwzpd%!Kzz4{u'v6$cx`,٨{ǧ1^P-Eະ?YdOEǕhAj)CJA3ߗoX pɯxO&|{,ZHM9_wcǑTMr5%%4eh|1.;v ?5±p"⩥E8u#%Q(Y:2h.1q@\co~˃kП*64'#ؤ~ruu7|-%6{VW}MI+O_8]^n]x҉iڵcC6rC@RaN/A#ˡp?Kj'>{ &dвc/,Sbp( 9paU+<Zd h wO j/խt0xJ =!iӍ~:mlOZaʕIG| ;d?M2qQ֊.r )Tnlg`vw֡&:QT6nۛ? |mSo![*m؀bq~hQ8ㅋLҲˢ/t0ұAA'xBڸ|yq^Ln,_qq"Uf вЭGh:zƠ_Nwוb/*{[6ߞn:n!zscȿž,J;LwWnzOks#=qXL?͟s&ju^iBUV$(pK- N-7ԏ8|SZr'-/;@`/;XK!?mPwa8Vq;I/PG ޡEq;$ sjqQ\^k|? @aD-9'`҂. Z$I}<{K4ѡ分89AwH*~԰Av0|Sw!D xԈ[ķݶ9]~=Ok6,_KC)OLҟK>Ͷd@L`ud2vcs?޾M*ߨ}pPE)ä$a\Bc{X*ϿsK7V_sj$IM4⤫&gX̸gnHmG,N/{~ϟٗ`5Ykr\t5yK&%# m<5d\zf-uGodGkcb̠_I*?S/hO(WWD61^\e`[|?'MLx͘U S֠Bq8z|ݱ/t=w-Uc(_@ jħ~H/DI5kVuץuB_mlIMwW 2R?N9ohg|s?Sm"

Y EzL7vw`u ,]w 팏F lO PlfbW0.Mm[\ g6FD ܅FGpffƓOMЧI8Իq=Syڜ?ɫd3sh&=M7}v ARqiZ8 <O} xx`|uF qr `:@ͅ"N/nM yȳ;"έ{xJ #.F/>8 1=S겐q{RpB 0 c9Z [3< ⲃZxҍ0_Dn<g[t^揉yeo74d`zf`Pp-vޱ3t&kKl'܉-GoF?OLjz5Wq7oJYn-@xQ||61LSqh}j|_b9.s\(yߟv\?}ÜCǯY)[̵ O r)/n2<%mx0N&ٙ"^sY䆱娭[eµQZKՀ KT/f0Z~K+_KZ7 ? RY8'VsVe,ڪ Gu E07T2L9JbgݐM{ep۶nM?poTyO n fW~` ;f̀Kkd긭_93;{'"Hm(D‰FpU(!mLky?5"ӹ85-ihhh'+'?{'+vq޴\_D*?/v?ʾߙ$ ]x?9è-0 ; jwvlf1VrXqiCj8W;=?ޛ]zZŲ$Y Yx0 {& $ajjfjTMa2L } 1 .H,Wٲ%ڬ%K9}_Kݭwg?y}] :e#ӱKM.1ss0c77-RlXMbagSGzߑ.~'YC~}N&g{ 7\;$K0%ʥ-RSIiƒ&Ix ^%N7OOxS휽e?bg;>/ѳIt3oRb9o5#sc[٣[gv[Ӗ=ė:ފC|.&p8ةZ[[|soo5 fsq刨.n$BT_#Rh! I`_z: aoaog<1 2~|Z=}`v145q/5Kʳp8v^|cL c#F ?6]S36"rޭ=5V}Uv@|m͏뭼~2o`QXD c{7>)IVg׿)947?>|R]_{.Kܶvlͬu]ds:Aib'3fF\3mU6^ᦝ0>Y :@h@3)~2+`K-c0췅ureq>@iw\@[|->r_=ϣ& EmFعkrf vbh\-l_|ǻ{* ;ſ(>: /P 5RwiB!4CDVKw(?|5];+~sz`&~f\TӦ˴_ڛ9Swx_.є>LΡ9yWo}>_Q,7Z?9ԓ.t\,}=wG?#hηJK>cooS.9^'󵏯<pW~ /؂O`!yL^83G..¸!0'n \⎫ޒhpw|<ߐ7D{Q ze~fxW⫂J(2~N/-9M;;_l{>$<~ozs>S㜻)_%=]{vH\a?t#T7fq8UVi'/fG[Î#pEg{{'cmgUE),\v٘9/NfBz^n{KZvG{[dq}c-Ư^~+@$}G5M>O<ݍ U?4m'oP&R^ivӆ;+1o+S7SOBTy͛Ԧ`x,|TE[0[ae~[^|xoL} 5_閛?0|5~.2u'8 }4E5s=i}M=]hڗ3 54؏x~'.@\x6%YL(4|$y8S<+ޘ'Jq7V-4og滧nsᦻ]6'w5qVTRJB#aڅނخ,p荣Q͋N53㦗f9q$fƙ\xe{f{&n>]h%95<>0goZܣwU+kqݡ@cܖ:4~cWLwgʕӧ=9pB#ہw[ysa xyܸdCt.G?O~}CvP98 foǓxgƵOTق{-co&aW4YȹfSlߪtoW!wįn?S8}W~>3|M_E_qd+_QO4Ǵpq2cVjBba-'qŹLx)0Ɵu Oq=^i [EMA "3' oFخهwƏ@ "G㭁yW0"lI J]o[O 7czr{ҞRo{oi[L>[} ]9^oo3^eu*O _m_`f8vw).>kxW}}/~n3{V֯?ڛbqW %mOQ|91$|^XkTLw&Joz2|Lwf'姇5mOբ1QQOc G;7EgfœWWzm(% גzS&K3>J?v|DfsLjV:>›8LpxC|;++y߅Wv^+< y=(^'d-|l~)~@IDATg8 //{OÿXI\OՄnzpԡ=UۈCge+l \2|46;%f^x"_'Wz2e G!_5ּT ፸{?7 IxJ~ѓ&>oȭL";A9O=2]/'\b863p~?AEC˟ nӓJڡ]2B[thv: >nw}D . y>i_Sso{~ ʩI܏(\g^w W֛Ogg __kUԠ,/G_'ý'!&d}x/8t8w`@ X>Qg7Ϫ8J)K~c/ޖE+]IL-ٟz>n7C?z> s^bM/uӇ}7fmLMe͞ZviG&FK~] XIx4W;qxīXy3ZPS|+mvʢl /y5?_v4t{g_lYgȳԏ}_Eu?,A_]s6z>TZe#{B-nTɞ}ܤXhڿ</< /t~ˑ1h|1;Ű O hb# ݇W[}dr Mٖ{<}~׽git݇%.a|M|S']{,>J=TH;\p}C6>{ mir">baRqCAΐ:y.7O#> -=o_y˹;CJp@OU૎꜅4q}T4VV?^3/Z٤7 z}ջOWj0ДFy(j9x1cOv,\_m[AMMڅw Db&>TC^S@kmZ;f^~ry~ x||SOݽ^>0]/`{~l19o$4DSM}Eݣ3O"dP|S[riMnt7juT$t o3ۭ@92'SQ=ns2v(ڏ;{p؞QWL}_NW^}׳7/ɟ4q49/;O$NTjgG0l;M-ULp<]0cǫ}0ar?`wƱgOz*lpxAԡ{ xyUzP57,.|ڟ'{Wy|Ǜ.|_/WB7J7oÝ2u_I_4ƿ;]u:gG 7^fDO y5G}ㆣsUu<6GΗٴR| Rʗ$ oZ4^㽮kҷ_#O<9 op^)ڻyga,EŃ0)輛lߛ{nmwoY3Κ7wx&p||0 ͙s+OEȸ9g|5, G566'43CO*9 [+& ş;犣Yvs8pn?.6Af:f _i;ADlHS.|pOɡ1_xJ}ο"5o>#=` ƍ+28oۛ}d૿ɳ`W*u>]&示?|ktG4Wfl &a$_}j5u^4>]rqkw "QSEaě•8 /f(9ȏ go8ql=!A6Asm>jʛ 3qxT㿂?+{OGa\npN[n/__j>U3[ѳKFb ~I]Eds lNRgh"@G)슏 t~}YZÑ ͦuYrOn څ|- eG%;A.hSy Ap`㱡K>RnڟvQ|%>vPS`y$]O،7 Ӈ<_r_?q3"g?#(/UD{ ؘ!/ W_G{ɹɌ)?x&;ttp&~k~[{u <"J~ xPLs>!]Oa;^8JPv G˩7J{e?)_8؅q/=t?笳a7?wg>ZM*r̮a9MS9(hM#>Sً,] s#S#l.=6 ǫ@'q*/h#ޠ4S>.Td Cȑ&*H\͗eeX ]ގKS"DP O‘yMK֗p6vs"xeOps7ޡΙ>Ձ9-/k\{w13c2}ބ΋pM~hIh9=zgb-_\Zբ13G+qX2{CsoB܆"hya p=p7% Q9^և}(62o6w୼a9xxoatCx?{ 7=}p,3_=9I:٧ԅQmyAYi? +nޜ3RP 'cċQ|I{?䍧ہC1 ^],}ي׌E&u($6a)972R3C;-{wx Gc3n/OAňG\* 塪kf-Ԋ+ OɇWnCqh be*K=?/L_{<ǛyxY q{}I(~NW\$[OG @?di,=9Y dF>[ sL}$ꄞ%#6~b]`6tOGEcY`SUw%0rT1ͳNҰ . ER8<|;w9#xg uyxoPEZ0Zj4_kh_E-~5!Ջ.Ƚ!͑fiZ98 >h OvƑVʇⁱE~Џ@n@;YOǃb( ǒP@,BRM żWÕm*~h//bAX;oqdy[~ <3ajYOn ? 9hOij~6l&W u.őyG-t$u̼ɞ<cἼf-~OF>o{i'1.j䰚\3&6ϭ =C(~Ͻn9‘ M:]6-x\p\êxB|pdRǐI% @Ao˫-v^{/ю,6{s)!IEa` L-;O8> G'i|>S+Ӭ|OS$|CÙus4̏ 0yHB9^㱝x^|tok?/k=96Are\x3^ɇfʜD0.v;"|}p?xBQŋ]7yL+0$p i<6w⵺Jx]05/zK_]Wc㾏/4My!XmxRyn7 \BU?b<*4F&LbٱN3'.i%< P4{s.Ɨ#ˍxV2݁ ?e\Û8myxd^ >&m t[6(oÓ=JM }ȹz+y }-kWy4?>}Ͽ?Wai*H)isФ!jBA blX08lz6i*>6X*t~K k7ᱢ K:ǐWx;&/{NxCduƇw"}wJq@xkEۉ/>œ>|H#N #/jOK>{UAZY>F9F2˖!駹3G9/lG7 ǬsDdx\%'&p:Fᴝ3'9ϒy/x.Ń,>O73mq7xɏOy,uwENj& So:TzrNQ]͔[YE3Njj_:;|c00>6paG؜R/<NƓϼٰ%PdgcސS6otR̯_xAEk/x`u 38rw_=H]n5b{vZd5 ?}Q'VƔbȍ)RrjH?1l0$a''ƣ x7؊e 8m/7{$m0~ǀ ^ǃMrJ[Eƌ}o<?y :I?]"oӋ~^q *jWQ^Sݣ&A5⻨nMHV;Te/쎭ً=1 ;0)»ɧ*SO5*^$L ġ oYx0)<ǃ9^_|h`3e%W + &_#fQN3зk:6cA%/*f^x.~0=vo|@|L qU%2jz=%MlH:" | j(Ys9(9{KULKh3j˅yB=9+%Úi>@!a7Q9hMamga@7Mrë8~~mߗ٭Ju? Q~)u|jŗbs*kHB,itמXPMdCv “> B-/;-xM Y1o >'ʣN: 9`GjA*7I_ҐeRhj7~0* oơ:@Ƿƣ}W=jḡ7R[ PAnRGc~OY'YO1$썅\V'MlSOmK?7gL3<OJx#f<.\1 n£E#̥ iQ[gGS^ ,pdZjFi=x\h]y9Ә g`LpPtޕެBOUh:O|uaY59 +9PEi5>8̶@ʧ# ^3a?#߾牅e vVȼ@\H 8o'oל׆?O e Jކ'xXxxK*yF?7y{yέ74?!{gqpӋ{㒼rQB~.18ѽOj[ b{0356Bp_'g$Fٲww=ӐAN5V'Ixb@ 9Ys*9@*4̥d\#Go:\k:f9OtS ɂ1X 2}xl`reǜL%xG{&΄="^/35 QE ޒϢBk0h,gkW;{~`.HqX[7Us%0^&s/~<,q־!Gr#Eԇ\p^ /xrh:H3fxro+C+x|Ñ>3ގo[0y/~__Yn2|*4F_]O]2/el9XKc.حm-p^'JNto]pUw&6H\%&C0|YX%}c>R~k\kWqސwXq<=: >x:^Jf/:?p0MqSPބ+ |@Ӏf_ Ja\xx7zn^9-G;% J$Y 7^ⷙ_3hanAvamgkrVS{خrLހb٤hbw^51nn7y<b바6/ۡ [8£yWS"T/u>f h IQω|C~|S |yL`slS 3@/nꮾs~Pi?)W^Dc yK : 暌COq>ܿ0nc9V^cL h@ql̀u=o%&nfۘZ#~['<a+~/9 oox9 ׿gēl$*d|XXP,zp(Ut7bVCQ|Pغ݈li$ Kp?!W8<Ebl܋ 6 nzfxV;'j/bN0h1u`' )[!oӖlu>b?^9O\r4ȍxD6e;c̭t~/8* 5'w'P;kq^:3sza}VcQum{cيmOSkBYFHg oM9w{kcW:x[ \ųc ޥ~.x W .n\yt2u⫃G{7 zڣ?|> Ox_;^wsWGjǾ@Y17Z,f2 e< o_{6,v faoqRvyK8f,뽚xgy.l0޻&=pS>3WΛ;W{QNߌog^L(Tc=wTmIΎ9m}#avK;΃1{i<#m~ qV=橝˗x5'm~*ů_ғѓ1)yϺFncw?ww#ӵW^<]w8Nn2\FZW?Ƭuv~Y0d|jϗ߅=tխw.M79? ŗ|h[{ ^-VHAþ=8S2 +Nw`[ƻM__EԒ^H1S3V1RdzR f>őE?i:s_=rB@m'尺 7^<Q3  Yx t=x"Sk\W" O~4 G M;ޞ7H<؀W@&/]7hXa<L;l\*.r,104a9C|ΑeZ )W8ڜ&x}صB#@{g[J qBޅD}3N8 CiJ jaC1rmZ9p:f7vO{6Gwznxz_%`m'rNU[S͇fj e fMh'>Ri 㓜xM.xsQxIgxF٤m8kl, /m`~3 <0f3X\. 7e=ؕ$_͐C: 3Ι痽A.q?/jǡO]2W'v6~, 1}@7bFVd8;Rt/xч?ãh=툗e"ec %r_ OOQxl^;F#Odz+A yPR[ˈ\0}o~ZGe?#{-U54a/z)ix֬a@҈}nCsh;ȅ`+Y %լ9w#݇f~ ph5(|q{/#^?,bfU)_^`_# j :gVZc#z5s(ka'1:{Y=&E$?).dPv< ^xD8瀷lj7#^xc2q˭:ݕ jA*,#)GP84|l^xE/i#7NWVەT[ uz$VABrg3u]ҖӬf ^ ̦^| ͝h|E! g<&^^a5"lIr w;\uBn7<-v,PW/[\X z\l𤜤I)QVLFz=gENB}e177c/fD {^&xC6g%MIȗ`%N4'oa<Wc-xŖAx26E'c'8KM|cOl<6-n ϻ#؊_[nnӵ87'xUDD_Ed*)*.Md*zk1o,6h;C$V Fsc4%gܜ`gO% C?2ǚ鱅%uwJK5gGYxcăYC'b?D𲇃5':^e2搠nWיzZG~|tG?5$~[rŤdƜC&zWb 1eHɀ-ZdtNOIFF1DW[K~ΊB K]Y؃Mev8A:֓H吃_80 іqngx|٥8¤{΅?0㺏[/Fn{rKG&7k :#5;'M73nv"}xKvSYb$_@yx{oUC iHVې3cgdxOo0ۏ?0ݳp^t?tŕWb<{*Wv># Ft]˭jYL Gsi[||R^V|9hw~!;6 O,݂pԌv/5+(F RIaq'^|6V߇" bWb0\ `f_{iJJ2y^U_H;Ep'{~a̶4҂C2?+ =ag0B%ڋ*Z,aAvr/ċxSxxxg71p9--.W:|p8>a*\&7(D۾*O\Y7:8o<sU/}Xȅ$LL-(s\TT6chη6g77E,~?7p`@f"'yqXN~f-1ƒ`5c yo#~O5WlV(.Hs(ɯt ;?!{^ͷPMn0o<#9X, G\U[{Cy'/ir7sڕߠ k0W}Q?^P:hF=wV!7HNx(G(vQÓWlM$Bʜ`ȝw18w~gx4U52Bο1W(J U/9=/</_6Ҫ&!יeMC[u 9|(Xc9YsH|&hvzē`!$8f!.Bn}6X^-ݕ9d^va'9nu'5~.3>T|R7q%FPO (䬅ky|^.i8U{T=22R$ێl0 qcUg$?Sy 1\I,iR1*ީUoέݡz쵰_9Yt ;V U\ n[l 17+*p r# OZ 6Y^:3u~ Zq!PxoZl80x ئ3Y.bJH^W!}N}{^qkp't^L'^YɴJfUaּ!cU,F*P'?f}jM| D-\3'97}H87=-}okx /B xjFz067bD@IDATŇ+?!!_|ELV5 _|Kܰ;. ~1!>CYLr_pSrXoAfɽ{xb8sz(A e/y)id>Y[UA:wཬ+=ȟC޸ď;݊oo/RO k 8"Vdv_Lƣ̷<#|fh(\g)$%tl9(;`p XW^Cn+(Wc‹}xݫ~F'}}Jo~/#knnr1ؚl٬dd,=Ū&a%y;5>YXcWvB<2ĝ Osˋl[r)uc6o|mWz&?瞿ZhġYa4quBLfpozctٱW".[)'>{?sy ~`З^|db9ل؝#T]( + TNo̙O$> Z|P5rr*|Ć{{u|Z}'?&79`/r. \3Bٍ.W|YθYx2.{~ox:p86^K#c0Q H#Jr_xԈW};'CO87݉r$BYk8yɲZ!"Mh]ž/~gCM^ځ!dfsv=DG\vl?`85n.\ :4f5uK@;1Ka>؇-u~0f0XŔ :=zԌ,Tt$u豖q;Ņ<#z#+Gx/ M4^1 [\7/k} Z:# ?*/[$k_OGLDn#oTȿl5IWL AP 97%,B ~9q <[m()NYn_'єׄ9'H|7-2::n ߋ9:C,{,21~k?햾q4cà$F#f @sjl7\l7@9>zEB]Gg$ܯ>Gbn!.=㟾@sl\UUs-u޳ NNJS{(eB07o9pֳAp^;nIS}XzŨz/A [+7x4H\, ш؅f6SO|oPsS1?DbOS(Y4H=Y=vЛ7*BV_s@ghb[ o2c͐z A.x[M NU~27fJ><Rr?wă#[7 xNOMש549ؓeϹ`|ٯ#1hV>7Qnnp^tN/92.Hg@2K攆oq>1⇯=|Kmyr(A(> l=g\AsOrXwS΄TYPdT U8a56/:\y(gY=p^S7}l?)˷wN\z|5w$A]$ז+9}x٤/vDq.q)RO÷}դ;T~ö'māGYؕ:4!՚]_vǸ; Xvlz㕗_4]R_WPD2peY!%No'J퓮Oٹ{w~v}DMŗ/O]\ή;?32N0eJaI|x?eux_x?vK{39o?y7lZ W5w;Sq~IPދ>&^%Tau׸{~txU"w[?ٝxV`ߋ"?qꤱ2bxȅbdOZHc3MA. tTŒ/!oE`?v;>p5\ӧ=QӓK/.{Z|?,Wpӝoٷ'ՏxutG0}{fn`8(枸 9ס( u 7rIqOSANesNx)<2/9ns'nd<W ,63' 4,Ury$.I1',,6̧+ 8t_ g~v26ds>v-[ eF3Y}h\{ƸLc]ɵfXi*OGx8(GS8<`̯ SrC2hv^mM7/4cĀDZ\`=<)GN/<2,gy =:)I_:-_͝x*ND^J>Q[NkO͸_YxJn+?gނwG{G)X1}􆷼OpoOLBWU]Ք̩fVRaM^/1.8v@q=ؼ 7, [ca 5@R+I9߀vx\6ɡ.CE ?<VŌcG 䧀!wYlHZpm ^x2}X3=~(⽭R=|7Lo{w O8\ث8LBVEdTb!9\~hV<|(]NKr8X: ^q7uk9oQjy&>Ʌ ~?FRȽr_rG #^;1%%L<?|[Kk>u=_:|xXM#u^85طSOZN{c6 ]߄~=k ]+ W~d✟.0_:؋# Yd]~B^0 vgx*;=e"86;gWC^ `~Pju}N-RJ>iS҆bB%&ěi2\$t"@=C&>~blk0mYxc%ic9HÀK&$7ĝ!z!n;43vBg'/5 k_'L§46VOvLif_Ӳ|;}]31&k)(dئxwMMKc8FHfĬ2 1AQ>qp])<|wam)̓VL;3+  8+$n~K!?M*P>4jxy!LtO7\NXY0\='_5RV[YCL~sMpz1Z ۊ NpӛF^7=6XޘU6oq+ mœ2$^ .WnbI㩏3wxP6+,>~SnyB Qn ؋8'7:IT>Nru'uҠ0`Aspˡ_TZ <08 d}9#BJB)m^|,WIfwIPwxGLuPN>S2 qn]ꚹITӄsm4' lbE0il^@/<85 _x&?M2]i͐9El[^;rzMf˭mG/Rcw}*? coO>uqx3~nfup89O O+/o~uGx <Z`aH.|]'W^Puų2_0S.[6[!qAfeP|kg,^Ty܈9dU"5,;$ 'r'si8~d9yʎPO2d'm',B%_fhN1ڌ+*vP$<HŒ&/mjdH+Hޒӌ#_F/$.2Xqɿbc&r͍c{IgJ\ ӞfϖיF @aHB$N$j$՚nwG`?o~#:Pmk6IQd3 H@$0j~߷Vfs=[U[NvZZ{g\.,ea" = 0g[+;yƂiQ PԂ[)瞺B+" U>A4ȞqKziO; e:W(G0)u4O@$_׈Q8Ii.d=9,r/pīTl 9ew枕+`3xO>l[sQeBq֦qTUU3)fl][: f"MŧQ?Lr<P|hgw፞{b]87ǙvwgwzmאY/[z_ X>֏#c6GAu&o8e=杒Wm8+<6K Vl\g{w> gF2xyd1; F>"G@<+q 2H8˫^ϧ/=>=jǿMw|%'Ƒ˴ 䁺|CMQV@<r%FAုL}>c/iGArG(/ 8a+awG#hommeڷ(%'sm'ZU> bCeb3LJ`܁WT8q")hj#W& =8/.e^<EU:p4Umj7>!/?ub#٢`C[v8=UVv&I[i?~i/K.iXc z]ea?wMsݛpp_5~3hݖNùq䳺֦Vp,a]$ WJGe@3?kpcC?UzmM!ĩB`'xc:U|Pƅ>6{Kuayko瞝lŇ ivXQ l &Τεh"֋AvZ&roÙ v? ^(GO'Ea ~η5ApɻjiGD6Άxd,>t}y.K.CBM| ק/\G/7ct]&#~Qſvvnp}w-_9H!"*e=ez08PQ\TANi8m$|%oͯ %oˆ _hEƵ Z!/CF>ٞcґWozSIn>nQ}?xf;tiͶ`f-@:dy(h9YmN-䵘v40rG|/i8*UU>gFg>6rMqq>B54|]Ly4o<|ڿW&\Oyk!77x1+\@<#M\cek?('Fqu{(OЯlKOCcx4 @58j84R|cX8j{+N5 TH8cҊ O1OfW$0WOſ+8D%gri^'U|(9b~`<&!NkqpVfr-'ǓV+=jNRߪ5N5ɹN#߳4x G1x&pVkܮ~xGhmrDrF@kv@q=Z7+У3~K#)|,Gך!w`'țd*=҈mqVT'Ci*MmScS(&M|[CiM=;IQ'/4§ߞ|pB/pIn>Fz,YGb&iNHУa$y˞ Ѓ.u|J}C|J>پc{d[FwX7 |.W8~h0<-uo eR7th~O~^a74ZEu36`SnU?-\kNuw3ϼ%&>ߌEpHh u0ଧ+hi i˞^VKNG'0)2 qgkFm'RlCJ /:U78&m>yA3f_L3Oo⪿ :A ZD0NkN'8QYLouG bV0CAcE)3K"~J.xT,3\@3s<KPx<h|Xo8XӎrJ<=hdPaA%q[&J=ڑw; 0R:/C7t>jq֓U)Eڨѵ|SMcKv7[Hx褃@^-=ҢK0qchʟ\-cueRBbp#l79vRZqŇvs/F[W$v=NVl{6\|`hDㇾ__6[1Z7>,ڡm_$pc.g~x@|z]-GyJ((ߡ.O*!Ar5.\h܀c@Gn+IF$.yOP̤' A6_iVsb{N\y/m_?;.>ޫD;/מ$HQDI!Yrp@*4PfbƇ52~+ZcVϢ);,hB$4 m xn /{9iE0U~a>4b6y7f8Vǰz":~$as{+uLueò纹ʇs@Ig-ʟf慊C\-_4y䇖,'8~(9)fG8G9uz]pc%2 P =,Jcv[4Xt\ve'8?Vj9bE|3zU^6N4kR*(cI0$Ȫ^>!TL"cN@z%WON$@6')IT4C[#OX.24\?#D'ݮ-p,\޾pbsi)rr2ks︵Q.Oh7O*QM!A&roi( 7$8)WTLW~g)@&__#c=#KonN?S>ն=xan7''*QQܣS_K3LŢf($qr,|J ۭZϼcfW*漕G^5, 88+ h_CUZEV_'W>,x#zZc]gyp9"J`Go^zkDPe.L0T['\t׻G:|ˆ1_Wt>5= j@T鼢GʫF&\Z[|UFAem緁g$o) _/`I{ |>Vny=kxkClo|oqgL__5sxHJ_;*HI4UQێY5KdQ6^C|+b GTÓ3ih1pVr)fm erxc!Rx# vCOf]'DM<w cb-6j_mƒt1"yd8FRh{%ٿ|o>;+_…ŶJ8N$YEn7IQwjУfCݖGO-":fD ]{Sd ~Ee&rz S q!~U[t=LP4`{H$ .;/)Ӊ&;IasL/x?]QU2FZ>Uw 6@}ms':P gV#H/:ϐŶ@9%x\ר`t0 e k-9oh*u޼0/ ;cyG㫞 PΝ=;}K߀,:Fͼ4EtAazP|ɣɨq$xXwuU覀sq E@ +C'o{ S9 :0@Hœb/2dR a\GM8(t7nN+~.eO==uY\%q :Z.)?|`[zLnwys;,q(J1x|U ( Ҍks8 o{oBn,#o =4孎RgP.8=/D@vy,7,J;m(Rsbr44/2j8J?-Q.)/ ˆF޵kW-ނd 7E!MV9AAVe;n8/xOo;ꜞ˒JK.%W ?}ՙU2˜٫/Z] )"^qtRW8IO <Oy:7gVcڒV$%NPu[^寶x :H;4Uǀ!hZmr }xxo(yj^܀kN}xaS6eE&a 4(Oa$`%\+v#xj9&_00_L%|<%4yhK7Lq;*$>K3P~Vͳ7.?Q]GS/T,EGOT2:ֺ7^7P~ǽ76%Zu:Pzy#qD%@+_G/(1óFFe]Σ`3_$\T|GXju*vwԎnjh`WzB Njx6>Rdm\*<%iƀo{i^-ѓ?}"8~M-"Z&53,, EՃcmqUwuT1.NDp$P/%ڋC:>j6@\^-jv^M)bҀ0?KK>+woW 5ߋs⇪f]YH /~e&/OpE7hC;ߎ*K~#-(? V>ȄG(vW5uu<)g:2G;?Ҥ_c4?z_%~p G?:hRV-k pwS%<#0(HbTppy(btO*ݖH=`;$oe?b[8-{[ɃAVWfw[N[\+L6Xŭ t^.QqK`ө@D2ZDJD[?xaf?q M]/Gmw0[GCO"[8%,(Am\q%Ǟ4Vї8HwE˅(ܸ]G gCͻb&Ryu5>Ra2Piugȇ@IҜ8BhI>ɛڱsCG, EIq48I_>gTI m&'{yK> oc'RH-:Qq/\S +O>(2/R"~N<`/k_GyG|pܹ[?3X]A$j$| R&;E%l9HR484{ٞMq^4KҞu08lms u)()xh+fwm7p;F#̺lK7Y^|O׿2J2!xu^o庉'r_4G럪pbTn8uH-yCErg:RPr%l#o&o`QaFSv$#qũ9r3_ϸm֫;̚o~Kk!5YׁoLϟ)YmZ $םsͧGY3:Is9o%O7l^L6N|P/T%o#4ȸwX D=a4yG6vt~m/5?/ !X> '͜zSA68|#)ugz}rgD8&/'9pވ˶a˞N}v#BpaGȋ!_u{W^RQ8;ә9=e!Qf6\m[oY\\J_ʼ@Dp H=P1Q۳Mt.1&ͺNu_ KZT~UY?y7zHxlhDAcbƷ~o`4jb T[N^j2C0L5ŗBJ2Xf3ZP\I3~+-,萂3ɨuyA\e ^Wm~rxJN#!(D[qtMs^D}sl_xyN/hYm[Jw}e^O9U̙zx0jZVZ&PQwǀ(I tQm^8E++_v⯁hײ$j2,yv'/H_t^c!t+jk̚nxcf]nj9 U6̝ !sIS^wgA={0TzPAհl#s8 99U_@ask1*p'nKfmCɰ_Jm'Bq՗He|9})=zdyË|\nϸ(P H^ƒ$+_/\#L58zL\T6Z( T~~4^&!z*6/Ep(9-šc|%N5@r@%{od"] #~{xtXl,V z¾{RAA2JBT+diӟAQЄZofȣj= v$g28rEA(K 4+[ix7hn먎Z"˓fq\Te`xhO&zcS/eO}'g6?| `ɲU6[wFpIm>kIp[W0o_q WrSE? 3S=!> ɇj~%^i?߬l#!)\^ё œſ3 8{= ߚ 9͌=-,F_|Q!jS{'kM )P YsP JepGpr_jɠ56$"F:tB;pwu-w=sE~'/MmYv8ܲG,'K.Cߟ|鋏AΚ=Ϟ yu-V~}/o{:zfY](;AV~ xƅp#9jOT0? ya}j#(x'Tl}&lFCDDH00ꆏ^xg\6.ywŌR)R47m٣W[gd28ݙ!H-(YkӸ'=+H@$\œg961Mb.@@KYog=W*tRC?qJ/ƶ/}7A1ě!_}Hmn9ٟB6t/K.y9uf?+˟ZC]?\ Pт랣LW~n\շḢ+?}'K^'މܐ/cCGFQԬ ]`KouS|~XqpЁ_#(HB*'<"7oۋn6{+3~) C#|uba,|#L=8v:r&,UW& \(EAR3Y[0 j& …8kO8k9`w/^C;+B! ixYMЊ;P~=2Xr]MW/\}xS_yjC5_s:B0_CԹQ7pSWD V|<(*k4NҘI\!"4s';e\Λ~-9 aA0`=3C8 8i?it<B'yր@^NWͫ[vqϻoٶGUJ{݅D堌N gkr$8(g8Fy>6Xf0mO[v"^^ {3+,ox5+rhPj1IvbV%xU?A<@IDAT WB[VO/o=3| k?!֢|]^%JaX:@gh]7\E|P qw?\Syxs !֧#}ȋy>MzK_o?q@_m0?l=3VqV^slsէ-y=7fN0Nă6x(?Pr%p@G>u?}a~]˭ Y#Z r/-*ωeY(-4CNT5`H\+@gܫ.dfS'Ѳo|oFlkW}g:p/`B>`fmpC6q\E3c)ZtglV=lU~Zêh#O5ȵ6u/p'n7P-g*{nz^_<3W~>,/ze=_thu11ۓUWe䉕WƉL3]xZ\8jݯv7 r5x f< CP/?]ǸGڿZ*[~zw7·|_`8+ T2ޔ !h1)q GŴQc,CC̸kM칖8YaMb?d8eOv{xK-Tg*v8h?Fh_?Beqħr\<,"r+gOg]MgϾ6G7|s.3D}_/|.6smkǗjIW]%Lҝ~wMw/{1Wx6=Wʿ+$^_]R=}|iJa͏؞ @57Pqkvh;3=!^bo=nϫ^6u] O>o aruuk\~XŅLjv3+qq)(I4NM:pq͋.'Dv5םE>@ Be/3cWKw|"{:PT\wj]5)j'ٔe߲WKav9wX`dѹ485s9$F03;բiw㿎WGӿCeG]m"HcՓF'GTfhC b% ґcOKv<ԁ~~=kI@{gia%/d{kQ@rZqXg,I|Z_O?=w)!oM/m/foRȁXd9 W5:uHszP 7Z{zWO.{:~Ɓ_Wsy9n=^VAβMd5MY{") m35 M }{Us""i1~]HaH^D\7hKk)Iǵ?qz*U dViyUjۛ.gpр]#Jmt !Ve^4ae9ؓi ⻁?z7y#yGH}?y|lV=(OwY5ӼW9x~s.^/oWc|ٯuu˸?=EXnL?|\~3].Z7Ux_1ghf;N-u;`8q }te->iOv1Tvzu>[ 6'͏??6OȃAGLnxt_0u?ukvxʐ_`*#H+ s2|,(CiUigVJIP1Lmnksn7_ ~okKgbU7^#)ě{vd'ucESvͨ459o/R)7R|zO?O^>YϬ(nF(zP<<_Z 3(d=QGQ"}! @7kmu|#/R6=:hCx؞OLf.~PS|#;5h"4C &Ta>ݎ粏ZW ?E@4Ӣ[,5^V#nC:m|7~&qtSE'+ۓSE{&AAw=YQԳvF#)\,QG+4f\CXz 5.&⌳W\\k[/m>ቃH_zl;][l__y,eZZBgrm1fP+u9.5mUwa9(ء=_᷎oWC?}ZnGT?xث"0ė0k p,;׻`]U85u aifm B@d?\wk)FeᐨII֨ݦ*G{[^euHUbBm>UYƨO^0o!& E;k'nZpϒ gD j-fؗ6sxx2̓p_-;kx7Nb1 I4~.C q>/|xmul|ЏOϞq9/ ۵^uZ^x:aTI՞jFy+F֝oˍSG>0v \r5M+x%>䤇c{ r?}[g(3ͷ8\um&&L3S7 0,B!c\TB^iJVQgo1( gt%4+Ɍ*^U@ί?'?WZEֈ Kښ́2F)$& 5yv>Dy(Vzn[v缐j/j>~cWq{onz0~{OC^?j8"ȽDjOs$i>Wǿ='/OϼxNydHRZ@ 0m]ւ_~jZcɟWx~p{D۾6$Dn*Omٳkn7[OL99EױܼJ`q171 Ԧ&4Wb4hRmh4=<WDOR?#n7}^>}#wM^aND`;wĿ*?_yןwO#iL͕·Jʧ-\XzZ-)4J9/׀ĕOde?w"D漢6 }2+Dp>=ޗDGs7S &Wt3p.Ť2 B"u=N(';fm_j˾x |{o}{ƝiYΗ,X"p"Aǯl>؎y_ѐՎ|8U>vMT|_)Wyjn_୶ڮ7Ħ3瀮-g_~llzC}qsޟ)>S䜩VQw;&0Vp+ }3Q`H&^⨳P@?`9]1F_í9ow=O_7q,X"DM2+?g&>_Siml|樄;Fgb8mpI_t%`g{|'K}/6Wf'_ѫu f$x.7&wow2]@uS@KaÕIOcVKZ+gO㣳p^珂l YqQJx@aL.,xEǧ1rݝo4[^u>ȼKgV8VIGղPCN5B8)@O?`qBOF cͬkҋCS/<77%cYiA,傃8؄dcsW Qi>Q<%:2/$QN8@&N&:M+b,GGꏷ>3pkHAh2P:.t*fنiZ?6kyoxox[BPqqdt.N 9@lѩI" {[fЃ< gNX/<|b\G:.จ"AҽQz%o\?_}o}[.U }ެ$rC:k3q?#e 򾕚ӰُIƞN}:CkSĹyOMIv :L lMˉu*{ܧ=+koڸP'C/ eɵ4qL?gm*zc;y4%?*elA vgg7Xчq\ֱ?'sOW}mn?gߦ(Gh^:w<^:_֜y量Ʊ+|@*j<]뎑/>~!~c<_΃SGrODHSvrv?(&!pC/J~vᴑW_k;~p`ry򤜩!G\e\IN64۶os8YD U!&6d^jJҗ| 3'/>Tx"KgOh?}~4H^"D`8Bsu#pu⧚CwCnz-*&Δ yוkY:3žxm$>@?p̯ ąϚ0`3s˩[pN1`e,ZPmqG8Yl)i`0\ v9+\#QjP3_z4?)o~_c.ltwNҮ}n>}Uǂ["D`7(r9ܵk9_}W43ϒOClPM\%~})z(*^ ]r)Y[ư2ڐ$yQC- `DP7>?&Q1'xb*_ 7~N8VAmb%5)g**'t3Tm/J-"-uhqu/l+C~?uswuZK,82 q'qSGcp<Tv)1ڬ9# gsmuBo0d5ᤙ.OC^y,Νݪd?S'fhT AT Xk nd0T> S$T9)ūt~itFj Kk`?6^>iDaɞaonV2nQ\m7|NW~o?hI$ʷr[:"6܇ѵϑ{?֕?AjDd)#qGυ;{㹳@E~،JJ`mmh+캳fљo|}q5ZY&DCVŒv> wnKc8>}|r:y SڹHQs ~N?A?y=CN؃/7Z_xt?8=OIRr ^v?w#>/<+FKV>ej=鳞1_k| ps~{qEf8/{zr~?޷d9>p]8rL!"/G6O]7 jֵk҄/̵T1^zFsmdH%k-{{O_쿡]Otgz?K`?K9~fr{)K.W.=_g}@CO|Gӣ_t3;C{/{MӉxٹ _ɻsP;)*/+8v3}E'R#8[6)H cÕg~[;^\1ӁV47}sVr@m TPSɐq. rqT_郟 >_Q\_O>.:]5w6˩eQ~UDrUABnz߇=rs g4ԑOoˎy4& ش{i?)3x_h2(\?cCb~ wz;w{4w2l#T!f(ad Xi1D+Zr]"a9L h/a.JV%lGq(/^/Ϟ>ӧ~>6=W^wG'DrEJ{v ;=Iu>V]ұ͙P?%p^Y&"Pu .cqH֊>)PqѼx}n$Ra` 6‹x.}>@>)H9J1Mhcrz4Yl`< v6 8\0qs1I`a#腥Vm^/p7;?ć?{mn8zOLq"?Q6й%;Wb풫"wm+x7(6,y*Q: C_[zh~!$_8 8gG9Fi[vsntgK{&'`^;HVL=95ŝM1ѵ$&Cݮ5Y5*Nl&g{}wKEtbD`9\K]_, RkEJ9pW-@DZ镼JET,|?} 8 '60ڲp?Qy5> %z R`G`J:(;'G1?O;1Ƌ@ˋWNZ#Z8Z/d23 >7Ϳ"re[{&Z7*Wj풻xrMpݓo$RUS!p.;4 fH_z_C>@~4.w>5W3^)OeJ`=D7p浈@HNTU2T^VF y_{Lv7a@A7Ҝg_R8䜸>5 Z+<lC'AMܮ/2x>؞ @c:ǬCP.[TI~MBN^ɫFF &EVG~Nq}N$S5x9}a4=|>`O~4ԏΟΜqW& RuX՟p.9+Ⱦ HnfM[w9b@ `Eŝ7s:ڲf F;qO=8;ܪ9w|s3?ObΡ%|#⬗m/[uHw,7lriz_*7[^o|эO $7zkE2F>-e鞯`rV~6ЧM:•BoOwo[azi!;0;kb_[?p_MlCd@\~*X`R2XDgMp<& v2} yɰq%}Fjb̋>IS7y9{ۛKKY"V7 ؖFee8r1tþDm?c\R]붐@&v_F?s&)S!2 /wo8q7Fy;vtpb\as 9NfEӛۜ5) /\!7*aQ &?_^t# @A^W:c%`e4irD-QƘ'諝qh1ӤZt3Zbp2.t.ߡH,!Wo5=|mn$}G!+Iu!s^歑Jc 'qos؉~~%z̓/@?ïrinvxa3G{Q(:8)BU i 6SmFv'& L&qO7 څjph|va@?7,ߡ~cXR_-E6EjeS,up2[>D}A8et6[$e:lC6Sx)L<4Rgs63x`w[0ȏO'?n3Qw6A=:nk8ю|MXO&Es6Li]_Zv #'X.=<'Ǐ]oxNO*ꕀ/7EL셫{*O=F 阴1i3W3{]uޗ-/f$Â}p#Orvc_>Z瞃wٻp1ɠjRgY'>]A[ѫI`*X=9k䞕9N5=ʮY~If5m I}8HӯzQ7wf7C̎m|S8NҜʯԑI+V ŒWާn0 xZoa_?̳kc|$%)F@]i(-`qM*8f~& Ф|7/Ũʥ E`f;OJ0Jfl=G1wFc r3Z =^( ;-dǤO_ $hE͊8'ՙ5BzcPwe%1rk^!4\.y~%b 6wwD{?h84j_aȂE[K93n8j4,1;hts`:ÔK5]"6:(ug6t3}DDJAɫdX,\Wk\ ٦&U֢@'su.m!:Q7B}~xBf̷I]Cueɛn>6@d>: F1DA:5^' )rf;ꎳ\䢱gRS8p pwo?|b]nYO|GCNQ2j)[>67PɳT&W>6_7nPlA8I4 XRN׈Kȹ|gs3/ýCU7woK,zk tkι*@NNsFP5g,j2Iu>+tOe?@<|iEQvց_:y曀G>"Ύw/篯]Ne%+ؖȉ~ P*TD@"?5DyZD7mk'jo}^ح}jbmo߻~phAl&ol6:c= 8=]Զc22%> m!aJy|h^x,roNW3sƕ˩^-X"03ߒɼ: W7 Gp?ϕ@Od)RF#-A;˜$5l:O$Okŏ _.bcr]٬ IAO\sm|-p4t΃ =fC znnT9 LrTp4ᙵ*cG>. _~X?y{m7m{zVX]P׷N=*н%Kn?l[qN܋"*y=g<7o]x%āNptG5m&qFOSH/M~A"k=Hux~p]z8MpruMO?$o_ tP*VZ*H]^Gmv4㴆7o\OOx{y^^ym Ͼ0?D<ta^߯[ /=>X^:D`э'm{_sayR'X}%wdboa_ڕw}V[}yUmm;-;Elz~ )夼#h|LH:_(IY<95z1[^jg4<>̰4_cRM\:}aM|J^:7}L>29._=@CdKr]_^"p"@"wmΓ0 O$ڙg|]y? H h\j#eG)>Å?;PA9\q[w ?%/-9dN*Yh\f:#c[ -q7iMޠW<4SY ~Un.B0Ъ9oн_}Gӯ}!Bo9ӟ]5tEoDGw"_fiVk1gF\AOÏ6<ϫWSB8/aA[Wvxa16E&A$ *6彮40<2cUc!Z8/\9^owG Iu>\J)WgϽ z;_o%(- \ G?~Hzdv̙vjÈ;;oW㔷I ~2ǁݸxƶ}FWگ CR Rs$oz_dKxI,"ApT;`t6n()$)=HnK\O:+RE\,3eĚte?K-I%әsom}+U?7x]UvvpkDઈ9D?#[}|8rtU{“ LMYvK j 6yVw)~7d (rl} *?;4ښ4j0lOO[8 Z[~e/]#gۓD9H>9~DCfEEnw~ϗ^>3_G| _g1}o5}ߝ;x Ӊ_5onfy-8%s?\?~gwG8rޫ[>G5Nе9qƣ }"58+"}$Ƶ8^w\0K5n0,YRWA1 8t;hWvr]3WuYx/F1<ۮYwNt}Ũiz1nn짞:n5繚LoGH;H~/+WFo/l+={Q?M?}ȋ-W3Uݼ;*߯y5>6ѳm@[ߡw81pl}=ٟ.y)((5.GЛ}-\o_ar3YL>%cjɫ9+}Q W`BxURYHu&Hzokz;w{[D`7>΅K{ /KM|,~,6Ti%O3| yr`c1x37 oG---73sBiWgP#>;[4EN> yJ~;˾Ѵ>} %)zq|3j< r(e kץ;n(f9C+ɇ(hʔV-EJv))C:pd!hrՋw <%~coWn8=]aǭ,Iɮ{o:}>MRp=XqpW|8 eV|EYfw&&)~/c%f9{2R&:̳F5/EK폝^ 6YU|rT7dӞQO yNf^dF?&;~Պt/L8/+"""# S|5A\_HpצaRruL+ 'zWz%0{%Wv{U;uA,-gv|i `YF0qPOΠ Ca 8j(JEQ@v`X<>+^|rŐg?ѰU-S-ŗ~E@ Qsd:O`@4&Q4*qDJ۟51@<e?詹GO-T~F?oC7QeoL?AA=HNk2z|ۯ+L*+]g3y=Wةs0(qykKiBd[ZZ\ȆxHX-&e]&\އhTm:/8"Otwgs^ EPY}V>>B(wuP$4^>OvaƒΜ[#N8AA0l(XëTd"um?c& *\b.bQ@3BN9T%>H=ꍴf"y<`I~xl+SٜnjV%#=]/~/M ?#PA"eНa"(No,(.]}&eOJ_On:=7y~5iA>NG|@[i O+O:%>퇑F@3dܑ<)mƃiۯj lǶi=Mx|#oh1`8!18T5yS": lWewvbsHL<Ʀ(3} `I'v¥TM[$1X4"9I-e}X~ 7`D7ԫ!:z8v-E/ Qϋ'Oٷd{a?.??[?6GD_'>tW^8 FDCl ?6m|{Oډ+ʫ^ti,`ԌpI^O dhY3% zN_ n.sT]3~cƯI?I dJ> >3<vj0%oԡx|Ŋt'$qT֜1{ +ä FQA@KN``"8F5 h ΤC8aw{5:.ߊeKM_8p >t\#-SE>vT:ŠO=yo 6]p X5ͯxE|iKFp0ުctIt_S#O(oN\Wr ye3?@yG<.%>LrY,;`[ [Fp#κCf9)|Q & OL )!:=A;@/Oс^{ DiGG{ ?Ѿ1L_o<6"wޞvoVЬUlN9tg2>  k"iEN_~NS U/;'Ӓ3's?0jug@v 4U * сA:&ѣC`"Z ~Fu<)Fl!Ns焅uY΋`j,"XOB}wǝ*pL5MFwqP}hƧ۶-_zEj8n,îa:o $XU% ?unl9 @5?BP:~Tv Ng ykp}7`'2) ;)del֝{ބH P2 u`B 4xLvmOZZAZs<W+>Y;p ]RįgGp'v( >=9h-+AU`j ތO}MAD 6iz$5ZT8{s.|;?n~jV[ۧBvaq+Lrc}Oz6NS1~Mx,@DBuC͊]M;OzAW7? W7K"獑G`OJ}g%v>s(.A~|T>kL@AP+6ylÁu'Bmj#,@+;{wZ07 ;xJ[n /T+Gb|TM) 71~Ap@ٿ3"> G]/`]쇄Le\=,je&Fw>,E IbُF Pjh7B*` 0mPY.U$#IORu<&^+aj\K8Nna{{?ʟB~ShQ~)d/ " ^wJPI,]֮;gd7иx~FA2N2f00<+Aätcy)3FxƧ&TWʤx̅~Wag9{LT 7$v9yzRp^_1p߁({@2|Yۣ~M3ohL8:ړ_[\7`# .l,ɱ6㼷0=J5)`z,e'Aթ &kFƙ"Hk~qEGz#?!ޗi#FOL#;&wG6zk4VTxn1 &|3iU9%uqXb{{F衿WߪVkѰ:˸9z ((-X*)Z-h n_ۃ= MiD,>5dE5&%CܔF;nȭ0<޷i"NZf;<"0 VჀD^Xh(.An鷺}l`(pZHN_<;?-]84<$fUkGl,F9&1 >ICV';> 6;J1s ~:m#lVZҕ+xqumE`D`myPNDC}$a~vPJ:>;~+8jE0A(v[OZ~C@犭]n|GXB7Y6a01`\cP5Ę\#8ḞVN=xH>ȁfZѠE% CogѲ p+}E<~`6I#0 a $@^QTrTdʐ4Fe3$"|vq~;fQ@ w}aO|\i`&& P(F;oWS&--/MMVQ@L6\3>`OqBݾ?C!>y@>zuh|0!VP*@ŭ ^.YcK4/l$3 AEJo@u&5 )=ixcnrQ0Uغ[1x0XknhhXسDz怲>FI*79H[wջyO|lj"(h֙g|̯6; vh ahuON3Cm=CgҗK9dI[4:`8&AbtlT$x?mC"xUp ÔUŇ+lkYBdq4l NkhXۄㆣBd9qpt}gίlIwMl3ٍO/NzבTMU3^z;m߉;臐SIPDy ƃ@&lP@U5de /[ؙ#L\yMg~lc]J9H<у6/f n>dsv}(MDjtPC4ԛ6׺T냛nON| *_}艜tV%GsܜOx*g|P#\ROQ;v{|cxb-}%$:!ʜ\}cctXOBPgUKĂIcx䎯|q>PH_}d#mښZZZFSqFvwðmv=Z=OQl 6+j' AV.Y0٦:ZZZE`J:݄eUJ{l$p: w +D\R xM~c7,^xwH/iz>`b}:VGL'`ˆ,h 3JBt0H19 8? =*TrƁUOkjkauPNɏOZpo}ǽh---cFS֌)QWzZh h PouFO9~mTV5KEo.'>XW.mk^'C]l F> >l| MV&+?3^V{dT  +(Q 69@ ڟmP>cF2jXL#d}tWi_sj+---cEuԌ%:,q{( H3 Y.+i* MNtxȡ7ysV 3iG8(6)ϸ=y;@ ՚a?OJyDm`g]7:¾A^`W#_$}P̡ϢQu{Aw5V'V< ( l~9n6A/頗woJþ7;HXz̪tg=v0 X6÷F%Y2IVMA߆]u J?m cpIq{t#1(<"on\Bq؅ax4| 5>ϤaߝOXs3ӲU[Gg 'S/n ?=;aW,ys6Q(:,ҌĂb]}^1>Cq=>/0 y ^.jcrQbXGAP_'VGu + 'ܬ(&87G&bwX%EA ;)/_O<nA1j}--s#pQGt{ƙg_?W-Hax0 NK^% 9oS KV~t]|΋f`:c`3x=R`#VP|ԆakG]/T3ˤ\1;gwb=`ÃXS fWbq >l͋?#%G+].ϥ~^qVaeJs_rMc/{vH[~CcPُۧLˏ=>Zsz:3ӒG4(?ʕ?~_yiHLk\r1{ qŞFgaGGi2 pY7܌ȧÑ /="on>qۧ'ܤ0Grs1'Qs%k-uAL4_aR:;t2Ah*7˗-It_&་N\,|ӽWqJl'R< `pd^~+^LcwJO}8H>j\̣ikD#^MMןx1M=79rwJ9;c5!"Eρԗf,B$JჀ@vvH8x?}+q+ _>6}2^[ZZ@I&`԰pֻPT98N &p(JWiAQCZ$-}Lysa20_ .J@Ր h8v*$8ge>A.P׿xbYNuxs 1jMϽ5'#72Jc:PW4ywf1;ozfDqG5':5\"- -BטZZn~N:8AX\ #AƢUs|@McU|2FGbTz n1@cM@?z3ԇVZZZA۔<-_4=pgCD$(pgPV V.\I`$J=`Cg- ?]$<)|8az_4XGf鞻^x &@L LvAVv3g/'8>W$9}`};(\g'|ѼN]YC+--- ܓɞryЃ%-"FI=|o$Yipp Fb 9︢pu_;{OswkGnhOW~ ;8&A&…Eՙ*a|TRh,j 3]UZN[-9ّ¾'i#2Cc5,(mEEE`qGIoz3)׆o wJdő振PHN:.+YY׃eu(8%_Qd?v$7Tb' ǟ~,x~"rZ_+---BVMl.oA1g@Eհ/{ _!]J8>3FWDa1?ڨ:B\x i bA5jb8qy63y M/䌉CA"d\5 z%M&C<ܬXS-z:zY!&w~#ܪkNM/nm,} ߆",>8xúg$}ƀ̈́Wb֢B{BDkDgҨWw lfEu8׃Jߏp:fOiy3z>{W=y x*juR,`Ɲ~|_6X,ؑ,s/׋q)oKX7{me>aoo=STN[d&= hu:m= hǹ vp 7Az@KB xkxĺׄ/q{S囬XƢ<$^on>+(YD''(cgP`g+U7%^{;`}e _D)_^oRC[PM?kC< Axp=$$[L&[tohdfk. _Y*nu)~X(Xn?tåiIHІK/y SS=pSx񘸫 \51oϲ"xUYCy"l#_ 2bڋ^xX֍]|T#0_\ސ~4OձH\Ddy)Cި Ofkc?e>ku&|Ӿ`D+N9g[gK@+O-aә&% E|h~PV9):c. 1rQĦ F)${Rz ;aU7""#+#fv +W3P/[*%^;:N⩫Hʮc&cU&o ;Γ!."I ]Aq^|C~kM[P'(/z+'_dU[AjrPdI+O'uJ׋C >瘤SA}$Ă~MTKUե צ좯ڴt =EEE@Fv'x9\ p(\[6W2F+X8)/ 8;dE7@; UN>0_ R-q'L\fr]Y]8J ŠC;*LZL$XܩI-'#Oh·͋u4HwǮH7^s-8qpۿ%yC:ZZp]a^qv:nrI}v|}o=]x4 k?p75Apx_H!T@ tE"OfS֮K/h sEgnyZtFR$%W-šМfHMݰuRt%SW[ nX Ձ~]íVZZZka73>I8I$)7ەu5|fEbNUh!n^7fBzb% p^yrVB7nZsg- ,MvNOcS೧r2=I"95˔ *PwA_RlJfNY.{jeh&*|rmy0yNTM4D9yUL68haW9xih8$"LY gHŀ}Z&S6pxu ުΆ ;GC\Q]ا +MPH)O?Av(9umM_;@o`[ԉ¤``$PLFp\\E8Q=X ԐnJkVn}---2ðX ~ѝO5?P#Y9xL !/u֌?:Dױ<lMB,Wg>-LT?+oyDrÄ+X  @8}@"&}>iL64IeЌI4h"4iPFZT.֘LTۧx+---Zaۺ53?e+j&pQpZc:|Aفvu>E(9N~ͤ j|S0ӕsο`~+_;!W}P0J19j`crl44.624P4ԓ J@@af_7\&n08c@hd >3uV j5tqT*?aOt~'۪:kIFoo{w`&L*&A`2xP&G=yR|db2X<7>i|m6&_*u&{YPYpMExE|QoqA%d㪎 n7+62~x9/adGe' 铡I1-hD5C;5oyrM&&Rh7 ־KVZZZ[=%Pj E ,{oB+@n:W c<o8Q%JfYS KjՄCQ ln/----}"+e2I|Sv3xJRj 1&{Gvp @v:( ~q_Ӗoe~+`~x&%NbI15j$>(UI{(HHMa}g0y.-;휷u,lټu}3/^*5~#fMگؙɷ,ɀ,-U'"<+' NK-lӣθ`}mইj---6ð7/+`Q/( R`gP:C!k.;4H~B /_Kh08ug> G|ljhVtԱ sN&U1YZce\|dz PۭmCl=---4ðm %cT4W͸Xvq]8~Hs^4F8#_~Q1+>%7tpjcu—׼{&O,xRcr淧:jL~<㵞4`Ib?v|-z9kv5~'_YTw)G!6okmEEE`ElT^ꎧYdW]١Oxk&/"\Dz]Jވ:5E>œ.[M3h "d_ŏS}R}I]kC֡łU14z]>ЎEQčSڵ{oڈ[]w;u, 4߱{q#c|2C8On{^Z ">;q8<|GF)_|QK_؂><說e go|ۻ{3C֓2&JXL\&XϤaߝG5a>R%Y,q۩0Z._N1 C[tnQLyFȑc?q p+&NM掫&,JtM&2'I.iu>,* {O@iTp|m0(FEE`E5, ' ^e9p@́_-e#pe j 01ܯ^`_zzI~*QHs+}rH %Kk+;5# ǤUIՠ̀VA^l՘-oM~caj-- $O2VY$RÓ2k//;rA7z;#Wu Qhj z!-o~[B<Şˑ0~+ζ8ZԦ*>1CL A9S\\|f3 J]V|M3N XtI:EEE`!Eߘ CnGe$>DU_jX\_p/.*vFn#'6zT.ȏ1_5ӗISr:zb7鼦t\u0 mrI_;BM.&M;EAB;ClBvHkd>q1~4?͝_VVJs},mJ@@0 voc+10 2@>Vɏ#i Y_ :@~Q-N>s?CMSf΁Np>=SMJ } `qA /Gf >Mq1=ZJG|לN;Դr労tْ4GTZZZna?\Gzl_+z[c#Yq\+Z m+C/Wh`uPL,G<;?`l0"mҿ`eg;'Բz_di5k,ê W_&W+@IDATf0EEE`F??p8 < :4ʚjN ۹/w}4}GC"L3 .<8e[[~_T)rqh|Ʋ"ɆEcɇnChw,Sm_|(hEEEPnQ1F^Q J(r U7aـ+4Vրz:@@ffw(TY$hw A)mW.I涚lL',Xe)Zȇɷ2ߢ v2-KvÁAW,?*x ;4K뽍, _|.cugqq X#P1%)j茤 X'Jc7qtXasp9hTOZ֝s^T<#'?#ǢE>8I,/ P/Z_C5Z\&J^M]aK+"""(#O;>7ӄ<H#i;lW)Q\n Rpjse?+$k"%} $\xA w-WyL*'Yw&ňZqӠUvnǢ:S-,hEO-], L<gԱJQ[KCMמ|Lz7f蓊"""#_?~Z߀Xd/f~SLPJѠ ~45 ]1 7 U%ュ󁃚A׼-O%&dkmi(4d^^}ZZ<:or}ݯG\YdЯq"xZZZX*lڼuwSī$Hʠ)O9Iq T+fVi`]pI (*J{SYѦm{$39˖SZ\>"?.>.ӯET2JH)9.,D.06ihh/p1ܩgjZ|7oHnX dE WYM+L o_ 0{>B?ZaHIJ>e?At@ THkG}V{?rP?ܵsgkK?h4MA}rdk`1icQ禡_{Ji=N::mmEEE`F`Ƕi=Mx'IٯG/3ЕǬJox뻢:*ZlequI-s =Ѣ*zc1@o,Ɣw#'䚖&""# ,ZY'4S±QfP(#Ll(AqL q6P jpQI|詨qzSJi˛ &c, fgwNX)O"`QTX }P?(VE [My}{4*f.6-tƙgd!yΐ\y`[Klܽh@?>"p9}Ɖ[i- SlhXvvלCsQJW1=&scvĺ"S7q&E㹺p_`{?3MoN~^pKhP-_6e#kMqɇեʼnUf ?W_2p+` 놺'IՎ„Kcp631Wc9w2śx2'~E OќC G٤ZN;ꨣBzfLT.5L,xx0jYhuYՁʼP [|^PGN>3߹0W|ϿC%0m'O/!bLVF3̢1Vg RP+>6"x-? bNB-&_dg {!?V+--Ji>A+ w9$U[`ZWb^wswq'<ЩCWܜ.Orn~f[|6tKp&(7f_kd 6`.`Ul좈Ϊ&ek(!~),k@C(Gw-GydzӪٯ zpyH~$܉rV' KFuRZ?m8|UVנg"""pE`(E ʤ(8W%m(Tw#qQ'q*#Ԗq42[}mU7?Y|wvv\.|E3/"$_m _QߨV}`C&#cspa7r9cnW]. jG~_u1|'DgG"w-7'|jw&qNE4/2.6,Rk.".*,&ET~jLtT%c99ï51y߳`I0$]1_AEOF7Ah2wЌj;3*Zx]3`ƞEEEBꋒڵC?.y4a59~ D 6+jV<~2;qlk2Af O9@$-g;'};;"(67f#LsIH(hmQ`i-b#I$X<3s)jhh8"j XCO[ 9T'q:y'\ Cc$}I s'| U_ii, tfSnOӮEgKea`sZXDԼeǶ-tG)/L^5X%"w qsoJ2 _PwxʡY>Ģ(fhjZbvǎU?W/v ;%ng~tkS!~( ^^yLh:p*SOKYt ԧ+{-%w.25M0gaj--1`[*S I4rtpoQ?$L> v~+k!U,џMQ, ^2+kbybA#M^TbmAMn}---2ðޯ?ZfM[CJzY Sr;8h 90,mզ-]Z%VS;3T/.(ϋ|w|l@_yh"""#0 ߶9r4(gmQkuIl8͋1n ƙ/`sqbQ=d#|/xL[{@@ 6[orp^'r3p#AvZW'Ox:)X5j:? 9/lNWpgaTzoN?IGZ8lyaiO~ Tp|m0(FEE`E5,}QQW6^'d;&rLcȉ*Î.y`M$p/?NYsE@^7~M3 esb㢅}qb1ڢ۵{O]_ÖǷ[?vH5'fv + F.9_TZ` A/\-r1;oZHwrsCR\atLPVxrOܹ(~w2 ^{$-b¢ ~1һ^uuZ=}̊Ӻsm--!u~siاc,i=9y7qMWd^~^tf)NC2]g;T!}f:?(\8iezm)#pigV\.[8o@@@'epzFuoǢo/M~i9zΕyI.n ?InxXQ瞎 |ӏ{R96;wlO׆UeN5V٩buwmU>\a4EEE`FO>/>$ɻ9q|{}\;?+g>htd{&=NPvڡcѣXo?ݓmr--- :';݆OuCC\$yGP'q c ?$2rS!e;*K\G| uIoypfv@;RSYJx鞇o|趡_MQ@@vPFc.G2WRdQ݁'{66&T:bӠRG~P,[1I{Mҗh E;RuabѪjYz iEEE`AF{anGtZ;I<_3ES$ӎoH+y?;+ͧґGvBM(}I̮<)|s"@.^{ڑ!0;"~|ooDCWKnNx']a?ӕ\{tC%L7VHd`>J?W|V{FdcYO[_jӋ:GU[ZZf>b=om:%oxWw:^9*]$v7Eo\Ki>_eP`uD~ }0\mQcE{T{8p':){ v4ZZ'}~;+s\IW)P)?>wS]k]x >ݯzQOtOXAu.ZF`.9dn ֟ {(O L={xz|tyAg$_9;_baI.?W{t,hm?M^hrĚl貫~/>zȾ_G`~t LOl~t !e;־wb"cG;v;9z tՆr`O7uXk{' G>[O.[ysٷo9:>q{:Sm~9l6G[[f9XuQʱ%W 89YVe,8C-\;ꬭT+{Us.o`PakA?;OX,`c~d(~B+AAg+ IW4 TA=4zGV'5Sݫ'C6Un_vf|Ҙκ:0>ri 0x=7Z *}R ǣJ__J^3^뮊)xbz F /_pI7_݀qyUG_ٺ!ևc>wsK'J0=o~v1np{+QUV%e&1Nj6vN>T/{b>랑/V(GC8Z&<{~g䏸VwbuHQ:-\X< ˓ߖ/ik9)NX~q"N` Z+{T_{š܇ڻNW?ެ#_;T$ 8ݵ ZaqohBͨ45Tˋ?Pu_CpR (?L0ZW"~&ƁT(pkV#l5~\[gWW TawF lRɚ◦d‹X갺vVKI޶Zc'Ru2_\Jy8utZٍUQKS!E u:{e (p6ROv72^unv0Bc#(LŝnUW_ţ^XozOPӞ8yHxƗ{_l ]r>_ 2tY?J.^~͏3GOyZ͒#ȱ8Ԏ'y{?{yI8gAWxyܴ<֮K c9,`ϧ׿:'g>^?UyRUWd99pp;8deni qUqcO᪹:(4'}8P[:lfLSV+ɺӱo*mapuЏ7)sij+h޺# J ͽ8Pv4G>zYP/v鎯Lvw+Ǖ3eg\t鸢ay3wŗ_w&7ַ^Ytdcʡ͊nNZtXY; (z(Ph퀏|T}P@ZWS ">d;0 ?A{&/AHna){sdv}L-tWPڛxxe cN]b>oD>OiE]v+\k݂ 4uJZpRz#ptup1Jtq<^Fgc`z?jmuC#i< cXA8/zG经ۺ^W4Uǃzu߸yh}I*L}?w4wbM/Q!^Y-pPu&?T&`e&dˠvIAa2pl%NMR*,~tP5+T ?U$u!2^c'x8(P=6A\Aac|@Ǡ(OwzUdٞz:u1R= THڡioݣGJ.^!>R8G{`f4v偺šJsu] a3Ȼ=g=b;uvb+C.yt}_AfѢ{1pW0#MU|4/_$ 9Z0&E|'\D/iȩN䏐w={3R U\x.#\85p`SN .YOֲ=NGm_Gvs9ݵb?+L0:l%^#ƧԬ?=ݡmOm_t@ z uqi>>>~#cf. I+6h|(5RUSWuwa >]> ]8(3~:axR|?|oҥKguq:`ڰ~þrƙg|KnЀDhHj,< ɿ{ecz$"䓉('@0X |~؉ %>!GqDMF<8 2p@Pc^q#Z JaR vI]:vw~b<.;Q>tN,|u =I?Fc% ÑJ JN; ~㧸qqn0YGo_nw7iW9[xg~q$-< ,'iil.;=s%ig|Ax5'@a)2[7=PuNZ{VRk0?G{zǸ@;QE{m"8; y턼c5 !W|;7B׍Jj·|v?fKB3e׍ 1wOH#Nkם3#_MPpɒ%Ulj\:ġڒV6ΤG?9<ɟr&"*Pg'g$MhiMNB ~ʛ yQ1vkOG3ؼ8Ƌ_EoN|#t|?Q/#\ڙ[U%q~~H(\k Y=ig|e<kG:ٮ^8f\C)WC?懅Yˣj|S~uuW퐗B'L=^C yz-J5%@9)?kǰ(!qâ/KHO sdKآo_]ޖAmw`?G|stwaYt@yVV4{+Ϲ>)5G y<@}tXl>`8.nxͳV;}~]z{>ЧgQIq>`gI$#<G;5E?Cn.z(}VTu}KW_CaSL!`#%EmC9I0@Dedp N#C %@0Ad`2LbxV{9N!vuUzwu;Ew|܃XP3 92vh/zӟ6OF ᧞s0EcXScqp-,/*,>o*N3`,R6ś8(t̲m]AƋ摕{ 97xP-CWSO/a%V;zM(TD[P |ɩyIռw(Y'.9u.9\GrH^SyG8t[/|[Dt>2W~^S4/ + Q,-hFޔ\47K,ۣY0^$hOhz!Jyx@_g0pCAUY5z^#yTMa:C &=#*p*&?PW4rSǙG(ghSh?ߡӁ8Ue[ x|<8B1mןpA N=: L./n c RVrqOxr;9:5\.qK~_л.raOfL};ć'}~q KX6 ,pS77] swZ[5f(:ZmaP 7JkJ#N@|ՅHtJ] pw<ב^NF\Yjک< (|+|hAP ({3׎m!bA Cq8k*X˺;negeӈtqz:jaiq/&mr|k׸V=xx.R5$ $q`C{Cz3I݀07;!.*<Gx@  e^YW:(AL!GU3O.wgrt_(qx'=OΧ_놼m\uɴ'|E ^WSsߘwP _9CeO1puj@pN9܎7 ΃ rqwN/=Mm󟣦9o^K?skWBqb@H N}8a@1wJN+]J\FBq #D<6`92G)x@ ;]_qޣ)ry>]URW_"ϪU^|]sO蛉6b.`|a|ǃEd@Bo t5C웶̀xBNa Sb̡,+w>ws݅ad {7oMMR˹l`IdŕWȹ0|im`= ׋4;0kq㗣B(Cc=n -Pٓ2~@2E]ʟ  ?="<72`pv"zN'}8N%śy,ەu}yxPd]Zqw ~a+ܐ8`pB/x4!Mtn<>֯c˿WO/Oq¿=m}0y_I?{/r~ugY`pbvKYMYrŢv{_-6gfLad)7(á7Đ8P:[lf6#ռ(>3%)THE|.J.)Tyu+|߸ԁK+/ \=`(wSǙJI:[cTVãv«[NPi!R'^$0tZ2t! mtrz[:ȣǕ6$E_m?c6!*4V)+(4ʥ:/ɼB㌇q u4㚇L ~|~ 'vqYAE>6/Q-uB,aq^ 78@h@  J{w1RF~mfK]z:qˤ-V1/.|Ǯat҄&w+ ݹ|"Ýg]5ЛFQְ7ioQ$CuC3qS=-L&ٯgSכ_E5uUu%6#͋hy OZ^?ʠf#Jt5CצzuR,?HX_ɲg\ucrarDwK@ust| O^x;e~ラe'~Icsa&i~> 3ќe?nf^C i@.ñhe/\r^u;>(:b\X˛pnz-zn7^ kH{\0 OM+ת>NW"9VqMpպn޻7k4sX-=F7VgfΫE&+!T]ԭb~܏-5y)bp:?nv^@|; zDT.G|q0aoU2s1gQu⻿!= ~)KϻI u(b=AW\g0Eи:> p°S8Ai@ǝw Xu)*u_h'k8Ǹƥ?g>u*s:FC<q0ʓ0Q,^# ?BNf܁ g=ZXA.ph\Pg}0`]=)==|a؃ r5=/0\{͹i+>X`1K/I'=K𣵍{]Xz\+a3 oصA):U(ra^8e0t8^6!vTLW^[h 4@M<›%N`z}TlytZUzdcp&Q ojP? .bl>tf %;='6RSS 7oI?euO9WKp ⵯ\ac7))Wnio(ioF̈́wbt.eֆUV0r~!Ǐ+IDAT x?trqy|6d@5H{?JT7CJGN# $]|"ΜW 냪z=DYggx77^=E+e\S 7w7;_!`hy`2~77^KS"O_S"^qzߒ<B_ōf^hrl3!aBX&)8l^f^]Vus..8Jtsп8ި8Lo,\0T܍XaWԛ$/\raY%S8oޤDk3_?ժ4g͒.v>xu3[o4 n״&A wDT-݅BrI^Sy?39սŬhMhl'5]4tó O=:{s=$Y&'w[lXUrxu%Gkx G]#~xN692^χy~tx OJ.q.3ϸp0N(?#~p?',mCrJW͇. {]CϏK|>ʖ)`~M+|CB{x>b_xkrRӤ#r4_ρjr( < xwyEn,DNzxz= Po~\6>N٬2b@Ñ7%4  $j?k0&l&gsfY^/WKA4|dUSݯDTA pW7a\.DctY pKsN{Y >X~.OXZNiiWظpk$E9'4x+:p0wCUAq6_AG7y}̌^"`H ¡C^;`'H=A]i軗9#?=t1"cyyܙzS;rڠ{1r=Y^hȏun {Wa%LX?(|̇{~0*<OO@9G\us<#?yoz׃2'①2Vb敧iV~f_?ڼ3flz0Yf/GOPʳ)S̓_+>,ryK_sJM*Ǜ]<@>1q ^8ͫpD  Eo<ٌb4-8@c_(@`нaQ?Szv=?8_(%t^ Bzků5?>'0h<С6˥ƣ޹CEycnv[- Wx`5]+N6ء69M-ҞDtP!o:]N r}]P0NKmxfx1wHWQ_x]~HWGZg 6\yE'~T||}d η. %zB4`M w8h_,yBOAÙOUAreˆqӃGcR^\)+~&N||گ΃udc|͔M/H;nVXZq~d_SYP {YWz8ػ>f6*>XRa=:{-',i,7&7YڛK誰wúp0f Vʛn/Q+i$ÀR8Z&bTqE `p7>ij^0G0t=yƳ|N]?O|Dg<~fz So ӯ<҅ӆ}ڃs+p_bzG_w'( }}?"=</<6A _Fڈr =ʮ }z-M/G\'ZhR9!ެk YZ.GxP_ oc$USר)<~%{x/~JgQgPN WxATHxCOP`uUa5t^Ņ|whWk= OI/;tt_ؘѓV>69P`ɊL".C &RhC}ZѺ /0 aE r\ vy __'e:I !J95 9dnom)04 ߩ7*b`EmПý8Bܠ<_CN h:`4;t#& 79E8a2<Cna XRd5W+EP\Fi?BBw! i ċQm4]|ģ-Ii\x}Q]jp苯) <<B- ?^2 ~>z;x7.>zpȈ} :bu9(ٰ#s;<]}Is6xunyFz֯=.]uwԣ_zS(oVjzlNѼĆ(fne^ [ؤp`d<偡+>ͶCY7xQg %P\0aX5](q3xPAK! nlr' AfU\^w_g'Uk>Q :*,|pQ7ZKa&ټss&6lD37Pʛ!c٬zDs^˼d=?kWuCmpq1Yy^d"x()Sxrԁh:cց3>s94|9E8Y{>Ko z6=@k*Krn6%yq߼>X+⣉샦& : tՄ>ٵ'9/ˀb\|Xgc79\7ΘQ5>dO ^eɽۈ9TeR.,K.!:xOwM:IG,?y7شtv#5үc+=0""x{ yxD\3פ\z+\lToE;{We>] ś58ColNh:pCZMM2xo?Լz3F̄Q6? <7{ߤ'.56up _5Ǩk S~R]^B:@38ldOy |]Nֳ.?2aA0C8's |$^iE2;,Im_f>XN]Fp)/NZ?9@ۇmhBObxr$Ş/G|yۃ\|ywlak4h+É:|F*d5>@#>xo5U_ =^_S1~y()fӥ/{gnG-Wsyg`{[ \z>cfG۩YI74Ʈѫ'pmg8xU25.TSsĴqfqx&uZ&/'5\޼;\hQr5yyˇiγeox!JN=xl, Me0tNy抦;u4cBrsIAϮ@JA7|I< co 5׺ֵ҉OvڳgMe+W1O~ӀG/}5ZnL]0Q鎿!'yY7!kэ1nvYϚÁߛ,޸_+憛3|g*ZyBV>}yMo13ЦQ57/(Ҭ/)4X㹩f|wgb%_:Z_dhxzzzi\_8M4y6v%^ܞ..ɇz7I '72`wQ+{ .FD{Qi,^z͐_Sv|iz g|^lb4H(LFb3cό2Ӟ}rڻ8hRvؔ/k\|g} G61wCkP6*]#^f<5&cˢ-؛FS_Kw#WMZ/:Uc{6%^97~®Iw\ z.N QguWŃj&>h/n&>0,x9P5'\P]ϗFhn8 H!oL}=*Ombov"0ӳ?GUR4}4&niގav0I9 Uf_ M9pgkS$8;#׳?(Wq _F3@55am= =~y~*?iG~~&Vjt{SVGWY20:;X^N 7-Kq07%(auxS:Closy+ƕ_cg38d,ʾs~QoyΏxAΡkG^K|0k0|N=|3GasZ4Tvl!xdzcNZbUY~7z?au풛18 4hMbS56;6࠽͛oz&(ȟSsh3K;Ňq2av|MD>xmv owaǼW;Dݻs8dx_,bQxaj@a jx[U`MfPz֯>nIo-e\M_ nL}lDSӇ1.G_c3)px[WGz|ռgTk̗%0O^|8ui# 6^8% $>f_S('(˄lnv[Uַ&xo.R`+&Ƃ_'|kN%`A4j] eod2妠a6ix8hX㕟1*?_4㋟Fs}7X! kSSs޲],~>"?䫽O|3~ҷ]ОN!b`eDo?5ǥ`7xqmލEC rC$S63AzJBϒI6~]5}M{Siϸmn!vġVw7 E޽闞t_K{ΐJۥh]:Ҿ ҋ%BCSfnuf6ӱykS՛)lߘ#7)sHyရ 6cw 7iٯ*WNϘ2'Wͧ#oSHO~0ߵO*~xE}هoOg>dE^TvN ~3^J~۹}Kl _)iˀoڂM͏.eqo3%â7-SCCQ^l}W׏_z;盯雱ߟ? 0`# \[w2屁N1Y׏iz^oY!4۠ &i+~zo=%~|+Sbw>+iOٕvMs-To8'MŏvU[k?\Hk@; OVE}fǤ¦.5?0 l{ O Pt#C|gČvC@wpb:bClpo|zN[*e'~be:'/}"/{@̓'T6e!7Yo~(ofȏ4TɎQ/W'QW/<>+_UO'[Fuxx(52+gsQh7ӉO~Fz~}p`MStgA?6 J͜/m6r]pwplB.ߊCCMuCBð7&ס: A_|&(*]65`B{o$B/|_ZSvXO՚M)yɎl1|Mo{6_m2zSz՛mY5/k4:M~VT?0}~-&xXJ.OG< #vHo{7]@;, S-?tƷ2m[wne3cB-7P#6 tuj zyڏ_"!9_S7OP.+V~slǝp8{{'VEUUɆ3XN?m眕=Ɗz/?X{mU},qKs}ӷJ&MC?K_+۾ #w[!&G=J1wodF(سgOzPzIn-Sh(/jz+_S/dE^#w~zTuȼ6Fխ[I evbE*np C}R>1Wh]:}}s|mz͟hܵMmFqik)Jl'F偫M/"NnǷ|#ҵohm0I;5ď]/I-6Xl ?O o?e< MV<)e{'ڮO|`F̏ gum8e y.,|Bi\ѽ{mR:.wc`;!]oz~Áv]KӘɫ.;4^'<%q1;4˖v@;lq~+xUzcś1.1Q~7xs;KO>_#ϔ"z_L?_HHe+[~vg}vxu: Y^CMx} Ljo&a 8NB'ˡGGcMww1Z[% {>w7i!]q5**w?3'Ƚv,lBRvXH**p>>7U`+Tߘx}t޽\g+bhYvY+xa &}݊!vxn|[>QM}~϶+;qVwYN'?wv'ee]en}{>av l vD.ʗ}CzǛNl_?m=ݟM0i|?pL'.?zt.ɾ+ywqtCwہ/zz~+BxWv# |/{K[avP鄻3Myʮ* ֬vpOM珤Ӈ'>av15|-n}tqw3ķSN*u+SG;|桠1=NFOH?pSӢh->A-[!>!}R G Z^߻7ƾao;< U`WvV[||:Oe f{ÏJ7U?ꘛ&|~ZZ6^vx B  y |tn_o;c6|lW' + T  ~(=?]|W].K/zC{|,CK~D:숣ӡGi|~֛@;9oo \Ek^.^|7wW_ToEoN{_vo goo?y~7!npIۦ߮VVQvԢlhhhhXhw, UUUUU`{T<([ZZZZZvXh9X@@@@@;lyjQ ,r6VVVVVQvԢlhhhhXh`l`ۣ!NT-lIENDB`PKhoxO^--mimetypePKhoxO(interactions/interactions.jsonPKhoxOtHڲ (preview.pngPKhoxOtHڲirenditions/image-512-512.pngPKhoxOp<9%Uresources/graphics/graphicContent.agcPKToxO{%#ksharing/sharing.jsonPKhoxOtHڲ thumbnail.pngPK )syrupy-project-syrupy-7096efd/assets/usage_demo.gif000066400000000000000000063020651513542711300226470ustar00rootroot00000000000000GIF89a"#$*+,[\\;<=CDDSST678mmnwwxKKL{{|cdd73zf6__T@GOѬ>N"v'>4Y.L IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZעͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺU!,D!,D!!,  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OLX0[B1 xćzMW Cg)C'$fH!A4 <@5 $!v^|hFD:CR}=#FI[td)L{ɡ&S~=sH0 eQcP&&/{m*Gkh 8sdP6K|KHMK ٔZZe */"ܞpJ.Q2{I^ ԶukFQɑpS:TLRlDqZa;<8f39Umi]WoywF!^#?qULsz2{j1T~Pfu!&`/NA$J"5Jhse[L:!z<}AIME} hF2hCf=RGIHcg3)' ؓq n JQZBeN_Y%:a^) L9_'FeBp՜L}*Ot6c@ be{VZI#B${Z-ƪ/"PguFO7#6D`;۞R.'l&:Ttv*fy,MW\$]G:i&:Ac?4I]fISUU];g qs0NFo&AMu|akH,<UXp^UW:Ҁ%)ekW{UN\K!C"s>ES>X:c!!,;   dh,h+ðү*HC ` ,JJ:<81#xDa!r(M,EiZ$hr{W#BzS'MOYg"UVU:.ry8YŻ*0!! ,J   $h쨾i´Ұ]n1Q1, D#0}%\K@EHJ@u@-F]J8MHf$'|O!!,X +  di@,kl4}r ]ر-UM3zPaPQ=f฼P ^9D3} QQHPj|* $<>q5} *Kd*i"BWG#C>wFST'c8$#)V!!,u  a $h쨾i´Ұ]n1Q1,gS]Nv}bhTK/zvPX:5;np@<8yrBo>:O!! ,   dh,h+ðүn1'P$b0LjDV.x0R|Z;=OgB}^tMuld\*/"~<8HNL<tFJUDH!!,  K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,   dh,h+ðүn1'Pta7ũ6>9?S}($5AONdVWhVCaPH! , +  di@,kl:w-_,U!#]T -=Q)QP+50*QD>+# Fg[Ng#hK+ {D&WYY*@z" 9$*4'* *v?dVSI#38ŸL}ȑ"y * w?؁3Ʒ-EeĹ$p`&G#! , +  di@,kl4}r;hHe/*f3@0)MGJQ*"l2Z/d `*yM*$f&W[^PK6R 0>, (Y_-'F% *B(*%%p$r% be+%*ቹ3x=,'uU/pr c .{IKXÆ9B!,   $h쨾i´Ұ]n1Q1, qD#A˸#pO6(QNI9N9PtJTz<8yNK ( x8#4h$G^_Ob `/9 )O 3`IF>DMK!! ,"  @pH,d$*Ȧ 6O+J`aˍ |6Af!z_ۉ}NJUClmi~{Cz\|X TE G+]DGpBJLHgZˊ˓ZA! ,1   $h쨾i´Ұ]/<@ ƋATb8$Srdku+Zd9U.5kswaW8%'qx#(Ojf%* ~#(u:}:<1f!!,? + n di@,kl4}r;h1MS}MU4{rq/#hs*|{>OnA=Ald}>=qb_\YS!! ,\ +  di@,kl4}r;j%$PRiJAdNRbI-YhSyk;A9R5}"o|`nk>x~ue95y:#*{e* $3+ ?4@)w"- ^$  =(qEϽ8$e#!! ,y   $h쨾i´Ұ]n1Q¡JPKO%a a\OBQJ.jRa4Q|rl@d O~' |uahzHwj'# 4H)WZy8mS>X:c!!,   dh,h+ðүn1'P$ P.(`x=C-hN09]#)E w@ih{@8U͚kFL!! ,   $h쨾h°ү]n1O1 8F JQkr% $*S䰞( kP1,?^i*]pl(o4O3'yMX$ 8RUm4/uIF:0=t2N!!, +  di@,kl4}r;k ]#K&Q,>C$k ڻJܫp)eJQXk1CLܛW_\]G)r}"Sa~M* *{#-p@vB'|#G!! ,   $h쨾i´Ұ]n1Q1,(\K5" t)Cr\Dem{Q=T ?_j^)9m(p@2'zN}$[_SVn~>K!!,   dh,h+ðүn1'PªHOb%@%K$s'*8#{& "mCj["ces8 ha"'q.uw_'5#~f)?^t#l7j ( ~(3Dk\6LNJBzD!!, :  dilp,nxN۶üoX ֈH$.oN+\ ch,)EP&mGdK"$+jJ<xW, ^|b,S" }o#dF\,(,v+;']%cO)~˅ ɒwТ KƩFf#A( +#]6W̝p‚ sTq|װcˆz۸sͻJmս Nq?_μrNؗHgßY '@a/ϿFh  `F(!xNhWavk~($b('0Jb4hc3ި<c@g&H"cL6INF)PNiV\e`ޗbifvd̥piͅ!, ,+  di@,زx/-_HBUq>yQ4P%]UYQ>ï/orKS`-f":&*s-]#jTV#^_Z*$ *'[?W"}# (y@"%) tT/\Ľ-~g,o &DŤP%h&z;oO &! ,),  $h쨾i´Ұ]n1Q1,$b0Lj| ``{ TL&,4~ onywvLL{\K}e'<)nlOMIFK>>:O!!,7, J0FjuG萙 6._I؏c.QMNAU앓n%74.# !,F,  $h쨾i´Ұ]n%Q$x $sRDc1 ΘON^颋}~3ur.R~QxUy' @$' aw(e$jo*=>:<A>>R!!,T,  dh,h+ðүn1'PDx0.( T=%"ZZ9aJԀ.W5yXL@g |@' :tfPq%{q sjk*<$iW _8IJFB>͝ZD!!,c,  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,q,  dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB' '(A>>v>W!!,, ZIk8ʩX'ؑɡj; З-~>^6c)S6Qړ6KV^a1&<7`ִbNם.w"! ,,  $h쨾i´Ұ]/{PHעhD&G!0d5a^ \Ψpm*7bPj۸ \X} n^}|.~<8^0G)N:{"sl_sds!!,,  dh,h+ðү*{0+)N!1:%U(D7jL"߈eQTБt P($֔Gfyi"k{9}zw4'\" '4x< YZ@H.xf*Q @BxFTTL9`(nɹd%w kVmCSgØi~^M;_1ILDy!R) l&U=as Ui*wNۧ`㻣P>z\)fsUnGz3Z`r! c>dL4{7?VdH uR>ˁ 1;)$%!DNGA]0L@ {20gƙp/C ܇O>_x辥,SX2`"<*Cp,4de5))_҂tWyqUFHOKKd'\g1ec=Rz#6m8 HR%66 D*(!3`>7zi(s/H%K9|l~r&=@1 Vp Fk2sdZ8ig$c@B*. CLxR~ձ湸Pq-II*A9 s#4KNڨAθ2eZ&}oLb @v5unmeAQq,!<1%#TIITL0rp#l.$)xc$ƫ_iL_@AJ>O*UKGVH$' ʁlPS]4>kZznVrRm6$)6nTCvx*LcP" "?ױ$W`9կ4WluXvãi7Ghٖӥ,ZQ5%-u[Q M܍x,{7Ot](o)];.ۍs\YwBwV\}dZ:7֏[C+|xp ca.]7iiɨh|)uahx5oetѷ1lwvVE!zIqz5]EEwX*8y{Qz̥W}=rǗnaR32hsdԂJ~eٷ}{y,t>MCądXKX^U􇅘兩xāah\/(EhY[e[$7c2_wXdwxG&}mf~„;\SKY~g36p WnR߇Pv+'(!'8Չ}@FahSɸbJpnxQrA/ѱ1D~vB1aSV(|jՁ:Ո%z؍pj31h 5H\KSSeQ߱)?d.0YJu'yJ€#O!'VS8莔~pl9/ʢH(w$px>* % )yi387#u9WKWnP158 i{%V'WpV]=YEjWowBBO@9>gI&*|BQw1Y+}_I5`)HAt4< o'^6ExwH\,$~iDA=ȇhmٞjp}BH@a bеq?k۹{,+bSKGFUjg6kK8;a6[;Gkk?k^+c{>л;+N嶽;нKTСe: +([۾绿c<\| Ø{+˙}A@|GC۷Ki5YgU wRd {y[[?X _l Va|:M78`kfٴxHc7J5yK 8C<)*A*4yTHj܀|+ Vo*˧1[o(z1\}K2aLXR0#7 (glIlAP5j6 娤+©LڜÚN >)@ф\O: 0~˦|Ĝ+LAα "0ρohstY"!3PXt^k|hd ZJ};ͣLՇK(eMDxmlMC,!$/,ߤ];&F+5(;%\-kȺԤY)1LAh914{} < exw7}0(E_ w.I͍Y-ٮY}ߘ*@@{V27!(m  !V"QI1۔|EE2K-'J12^8^%Zvbll0҄qQJTVF Vj$`eeD9`h9<]:FAr֞q*`<\X D4X]*.8X[Exǥ$3MŠݑ΋k÷ǼS "#8l8ً_]j 4,n5Џ MR8>6mrqT^Eg7A]b* R&;B*u*ժVbb'J%ĉHE!ad6WI44dJp%T|$V`j }e[PD& c#|Y9A\8lF<.e y/*TrB-@ F`ڑW fȵᕬ*W\ iͮ};޿_+:XXʹmgÓ`!EYI% 5\>C=XO_h]v^EWdٷrgE_6D DǠ(t-U(Wr!Xt JاLpxdDJEEcŷV)!VN>cG ߗ=k٦oxE`A7hT gh`gA[fQyOT]pqtV8 \tJvIh&`D{40)zp\E8:Yej> Hk裑NDn]j@&5FR+~@# $ =@3ĈQ$c\~zl/<@$n%jAP0RuxP\-c#fq+r=Yγȗ2/"%ll|*B3vEKqr q102)sB3}cuas39kG2-f=~bT*3"A}뚬uɜoY^+wb.25$a^Vl7˟G5' x%:?`(CmgsȚFI+팴؆%F _VY_;~7ΜIlh2zm^羗'JH`f6&=#97;%?Y*zt2› Kf JV`OK# KhPzZp#/\E ]0O+P_AjTg'E U<E̙.qDAGv "'82E&\@YLFhL]L |(8 71rw:p^HGv qtkWJlt##GB2k,ΥJnG~7HN)4-\%+[W’M_bT @%/{_3Kj6a-SgB3Ҝ&5iW&&7o3'9is3\';Thn'=i{s\D>4u>0Ѓ"4 ](CY@64(E+·BԢ(G;Gb4=)IKjғ,(])K[җB0)Mkjә:)O{М4B*Q Ԣ"5J]0ԧB5RSjիb5nVկ5 +Yjֳ"0(Zַ~p+]S5zI׿6 ` kړ],c+N:63!Kb6f;Ϟ-iK'њ6]V:6-VPK6Z7pk\]eB!!, l a $h쨾i´Ұ]n1Q1,gS]NUM r] aiwXѥ4?.}~DPF}6223K!!,l  dh,h+ðүn1'P%` WJ@[0C("Ũ\P /Q=ajڡm>try |'tL^i L!! , l+@ dihlp,tmxpqH_r*Cr*l Jz}N_/sWg 8\#{'Ep "m"~V"bG#[f#WqCyw[|AoW@d$w%`E#&E 'kf(-,+<c;ahN=擸bs?-9PC M NTYe?w!,  dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.zn|N~X /Y 2h L$ex.\ 7: 0RӔpB oG 5OJ#%cDG0ZDf!п_ò0@Ca4UbCieg!Lx<76-I'&I@ ~7 ͗ڞ3[0 h)W/%Q( n %Z r 40#(iZ/^ZAok1>'S HO,A,)2B$j`t@1.IU#j*| U85"ʡx|"o.W딢bYX+Ȗ ))z|j) 9wO)Ȋ&kxZ)(r=!(hKWĒ{ f {TQw_ С¢62*spc­.V{<@-H݃"wBzbٶL4AL&DM)2-,tQXSuYДL&Կ oĮ. lu"hjX³9> 1A 6r`45s4LR3<[yND4oeSnMi3 8>t|01#S*!^sCBWW;[̘k_SxȨf:#^ߡԐٔ(XQW\cZw ūS%`(Cք4"Q= 1]ō@QU a3dSgU-\ڀ% MwQìzhupJ2M$K@I pVXJYa.qdҟH'}zs8!_[A 8m; F&ҧGtO*7?!6=Yr\4}ЉjnjWL'6. :4Z1<|x\8T5fAEp9e32gazҍ,*SѴ28EZLTc>DjYƚr`9'M-A fjg]ʆg,)s+vVs 33T9'+Ir86wYڙ^hE1,|5o6_D S3 5y[0~JJ(Ҡ Y$A7bvۉ2=ڎX~Eg͙/p!{M=ԡs[@LƣZl\XqO#<$2rI7c;z\ C˯NLWijx5;؏t6nicӪ1PNm[O'v#.4;+n}# 䂦\nžV)q norу,rc /2[s /AOl{\ӸKIAw[m:qֹ㞠BZpfq`kj]š j Z7yu %,WҊ[ϖ6j'%"K%FUn|=픃hóػlǬ_̨v3aB4@;Pq|3?siηj'bE(7 )+ ɡ; ?*@4z][P>! ?ϳCf9֫8"~_Gk7oRr~V6`d~~7U~ImizP|E8y sxE%Hee;أg~G5uzSxVx1$5A nmgjvp'.u_ѴG+zS7o'NHWf}g]Ru޵ǂch{z"k[vh5W Ux?‰n7_#6!d8c2p^HBU\>WHX(spu!hH~wS Saj5HM76d%\AKABlyGJ!fxyh!aFbh__6h_kmya!f\u;+6a5{g&=HCO7gVhPqHɋVt T9W5=[]^B[0k֍'Y<5grH]i_<^L)dUqx/Y|MARcǗ 7~M-9'Amdd0pBc!n|/wɖ1w?oQj)5ujGe4NgwEW`h^ep[5T9I&ESkG irv)CI֝1 ؋Rvu(iFIjY3#atMXJkeaq|&&ڕ){ef1`Ye{Tv]WuiY('(#U4U{[aQ )E@  &CdX 3Lyg^TjX(X{,3'? ~wUj_. q\G:a5sJ gZUӥwZ!@9@ӥp YeAoZ9APb>t0PzHȆBFG`2OB ʡ Dl&7?jFcZu cTk^=u!j=i1"ёRnߣ]wk8 "]hf m v7bĦ+ci5ʬ[KKڗuYS#FR*4cXdZP˒ dRx6yk**`X7W>fG$X%Qve#4/z8fE؀0ji4 T{KU黳4$IspK"=+%K;P)T`YqG+چ@B=D]F}HJLN->apV}p Ũ`*8G *\P@|[$ ~ 3Ȩ| lj|s@Gv^< ޠct &ظVl,7͐Y؊fm)~=ڤ *Ń80rhR{]J^LEܡM JY}]P;tP2P:JYϣI9bM^70lPdДb9]ZZ l ߽N:Y=k?}ghW4)dE  = P"gÞU0-ְ!r/\### ò)1 vZ. 'GR)w/b,!1 -^#b@$ש48'uV>`䱣i1b>.SM셵J=,V !k ַ6w]cvMbaZd{-p=%Z֏TaޕIW3c^1` a_1W'q#L>A|”)aٲ4FmtE(rAC[dF 7-{>ʤb?C~IQ?͝sILEaE@frݘ!Ҁ}L^7^5؛;d%g. Y DScx9skp-<^^J-3IyB iѐ$h0l! d0c|o|w>iȖ'nW3CM{ α%mοZ /Q*tv&(]YMt3qQG=KEޞ &8y±<ӵ}㹾!/Fb\FI2Ea0p eDG;("g@A MC8"P68LLN Mv-۶nZz!+H`_7uBF,Fc "R 0KT0@h9u!T|?fR k6˅BM 5<%tFrcϮ};޳(%D9/wa+}?Y #=Nw} vhX!Џd-Uwx/,Gy1SQGIgdt`tRg6nhqq:@XK2٤OB 2` ,mYf_V6).IRʭ_{-?]Hً9GKyɔ֥Wd*8`fqg\6H#Xp%7"N<z ń!B蚂ZRb}蟁Wu&KBpjAq Qrۭ߂,Nybt3H(P^%c&虯Xl E'B{ba0߻' m&Jn2M2 VTYO[X74vUZc젵d✳;8;/3GF?شKa;^$-%"l xdd +9赜X@WmΕlIʓ |e &z 0EG% 9l%3'ۢ 裓^Ш|@G~% ndVem/u24 tU 4F0I_V8H8_ݦ;=8>3{;w/߿v+Hȏ|x+h b0DU@pq\0*\! EHa a KhPbө!{1B4`8#"1J\"'B1R"h+b1Z"/1b#h31j\#71r#h;1zܣG AҰpݘ4| YGF!;X!D> ̋E#+q}$$9tJ6:#+s-TbQ,D%:%,Ϋrpv!ZuMÆ©ͨW 騪J4jS+ xd:{0Z]}kr dRef6ͭ"lamKoqg;i S6T mP\ ɴ>l n$ܲlW!E` 0b]m܅Y^ |孰$)W4uۖl d0 ۸]Hg2}VUޖ v#^݅wh${;ښ%P1$3b@7b=.a!E n,i7'u#zו2KVٵH Of:8ӼNXCC 7 QYJcr-LvG>1όgY͚y|y-xjѬ #W|^6f^ 3 ـv1ּ $Ȣs-])BId*4qZԯ7Y SWEȧջm\E9Q_gV꟔DW2wPn,,Z|8t0mkvؖ.ְð;  w-X4Mgz_޿ഏJhMn"|HX81k\ɸ-| nQeRŔ^ [#LPEӈݶGЛqZmWUJET)a:ȉ8Oz 3WDa ޱlGE&q0 e V@nt]a@Tzaןnl?<z:qx򠏴 v;t{{j&0ޑ.>^_#=97R pz~ y17} t_랡_*s3e>ص) gYN;۹i nL%|pEQ>_fiͬ1\B]BFy HQMmCq 8`Cr(ǔ}4ݵ|P28%\AVtVPYL[y OM }A]IY@DÂh51P EPa\!palU$ 4N(@Вp u@UE uE\D]9bH|\ pT!`Ї&.>\HRPYܻړ^_qL*iMc)&i: 5^a+LF@5AVNShɩK0G?.d4D  Oh)RGIY!vbGFD`e(@BHecK\$S>e#V`$l.>F lj$)#ɭǟG&IY Mu| IЁQJ/cJ ? !AG @) ^$arA>#/a&@d|eA* e2]g  9!BELdd~b_c^&iLlz[ˁzG0A|ӀV[LL%sBeVi"πϔ*ـS&!QxVxNn !0YUJ'B?@ttꟍhf,'d6 }\Zz,`bΎd& ]zB!Dfš errJݺ8r#%68qhjAO,Ld ΘUVN)bbzg D#"m"߆l`T1iR˅z[`%Rp(C(:MyLFVVw~WDXJ0OmaLgJǙ['ᄬ >> hc,z) si@&T5ȇFc~Ah!&:R9P0dhg ij{%lJmiT0\ak[R$t\,a$In0|{)Lf$5jD'9*:E찎+UVf %+1 \롎f*FfFK*`.鬽̲D#bڝOVA:[CtP} lGjct,2.+g "iFi <+͹dn(e!bu(: AAP-gY҉:MM1a:'EuQn'WvQ8d]$&T|X"բa-"|zTcU\l",ϖ% c&Gރd:+_Db^Ԑ"I!|N/(lƩz~o)&n %6NV|ײ敺ug&l^Vo̫F=䢀-6a@vjj#*DO*v K_^˅2j!-e^".@کإHTITΠΒsH1%PbJC}6Йojqe'6Ӻ138^l*RjEl-~MG"b-Y>T.;IP#!C03godW"lIU,HNR(,a9jDzMR8aik~øY K$"mXYڇn$]̰ckh-+Fv`oDuz+ʮ?K |#xC㏳' ]Mő22;k t(L{^.,5:l/W/A$G\OE5TTAU+$ Ur,A<5AqIſ+*,|S@< =[Gз60;=:cwmuLvs8tIa}QvCQ7a_[|=1dwp. /O'`_N$0<k0=ND"jhήx k1O ׂ.bRljJ4čG< `# /:} W?r*2U]փIl"B"z'扭0BTnR&3Ii օڨEJN0iL2vj+WW?DzD6 ~ya_h$3~ ;vT-)mh[c[쾃 cMFNGpk&FF0AHT&À$pv}-Rb4![ xG4PhP@vhAVEb%آJ8!(C,N` ,Nֱ8K2 zs(#dRXWfhW5{Ȧ+viґLpxbj5]X!`84f*h) Ri!‰;(8HFp<8Ob> iȡDLŏ0I R{',KSH V' {yo}t2A޳8*P9_Xa[{w2FDdk<0y #҄=TR vy˃!k,b6!EXDA)F_4G'CȡwɍEHr4mVI~0*[R ޤf$8d ld鿘kvG~3|^Қ%Tz'èH4Ū}9Ը!";7(˧ Uj"5ZDWnCjVDC3RE5YS}`uoѣ&q Sd6,ԥ^*n|Z-B)Yڲ2/+%U2mQGrQ9GO4\XmUk…r)ޡn"˥Y6gحzws*F1OKk}0 s=eC}9,e %Gi+hd! J89TT׮f{U",ϳFgx Ρo\ eP N [aH&Ul#.wR+bbD%w %4V]=ֈ 1`y&G 2<֜gk;"MXose%hWNYGƯ{}a\6[+fm' *Gmv4obRUXZ,&q5 dY͍ ǝ$Abm[Ѫ+֜nfkTOZjk{?˷VhF W-t'LX.]3rމ̳BJMVw (+Zscd;xmŭ/kۻ7vT=j$QFo64ncr,\<[I>&AQrPjb GOIrC }-Jy FZ'7LǍ$s;SWUws> (TVb8SVOs7ZK9cgk "hOz.g[#YDgmP^2l:{=p[?Nww bܶH m`:RWĹ%vUh$; HQ7XH#7iI'6eV$!%٥[nn=wkEFhޅQ{Wao3GEz%s F$XSCAc1 @g 2E)E6,dE8c@%ephe}VR1$u'Jtqk`l,@T)5x._e)q*@J(^4<IMpRazbdJ>Bn3^;hi>l3! @|p<2u' @S !F5 Q o +U % IXмw4M ``SB'yJ R߈E"^غm)X7j r|i ؙq$M8 e]lSF #ӅicMcYU_a2&}AQm$l}P_em݅ # At wԑMwvuqz}v6nCө,s Qlܟ/maΓB}חy:]svh֛|yP+#hwCMG 50#GMx_T͝?Odֳ1E: 矀pDl3z֫3Hxh0G'8]xgnaJ**֪3Up@ |`{Jyc,RjJM+b!V^wrC"^c :, iYipۀPFrost) 恆n(/Nv-^` EqtHz8B)KiGc0ȯs<ps# e9Lr'|r(5[t@"{$ܤ:fG I2pZ3m)-f1@ڡ<5iBʞ.HфbxFr9a j ) d`pJZr]xG%aBBQEo\Biɛ)lLBT8(*~̌ [Fe ~~V졀d( Q ĩI?B+8F׈y ܙs'u +Nw (c1rweeH0}[œrY|~BB.. ,e"D}諱ItvtfB·<,o3.'Bv<9ёNsh(̟ ^i)>m2wwd ԝf6˳YUأBALλfNJf0MMv]Υ _ 0L#{'ji͞eo4uȩf=¦oh }`'WMӗ+xhZTfkt~bӗcn>~AcesfRb?$kgGxWt:mD6w7xvoص7~`#|c/ EM^FO"wjGy"auihe@@y.uTFHvGP?u͕Pcg,wmWXz77W{p([Rwm5|֥;wȧ3{'@ iksj}^H؀}I#oy%RZsOBo/r†֖4F؊A6eƁ8=0fj]| 8cQyƃ }Q"YgB!#&6i$FotD@nǃ[z7qcKH2 f'SfEJ ƃŽCc}wElr8rA$9dTwRbOsC6bjj|X`ι}MEgDIH@CRy^%%脭' b) ;YX9A{ I UZ%%1vdI8`g?sSP&qtYy3pG$7q!b!JeSehɏ9ōdjwBH%c8u磙'O8`B  fsQ&W&q׍ 9v6Ti&Os¥Thr)F:= Oj-j g dO?~ [ /H*y;)@D1*{jz7:MH_%e@ReʘV&!B4WJD;k@ "aa~뒨J0 rojT1јF8iꤖrTLwuxA zG jtc,<A gY풐BN+Hj <`Tj $h&=Is= HBsZ[S<Nu%mʳ9]>j'6?;i xx8;W:F8v=KAc3;z`wZ[(ӂ: z²SAY-JB}KpH@˖XMsDQ赧yZ|ŵW}1k],Z0vH엡8i|ǚ<1| lFz< ʩƳP4dd1AUPF!$)é;̀͞Ͷ\́~[>͵pgʈ<k |s39_`Η?v1Rs8-M }xv@u MTKm+02=ӡM`4-8<>@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hj]0hGh@k] $ ;5BpMC,MW1 | *ئ GŏcvP Kܜˊkp n3S::pE"͎3Q|(09p͸.Ϻo OM1ڲ*-D6:pRkܧY׸M$x=$a2} ,)YƬtH0dZdƛh -b* ) bh,pЄo\=NYg3-4gmA`lA0Sr$&- ^K>`%\AI}BΞrO^_/._,В6I xbyfPbg+&;f4&*+9Iz]ߋB3cN B5‚=*Rz!X)h>1*†PW(Ƅb%tt2\<%b-#L* Akr'~+ !b"246T*> y$#+r`-5;`,f㴉\t0-51u ̓4rt?(7IsAV_3X+‘U@`fĻtaS d[:;;ͧY ֯r{I G}ML&OLkeG p@q2h$I,HX;$$_D4+DcFraC?Jņ:4V~1CK;tQ#IDi^F1u#A甡>{ITEXQKnBRBO6/CfX5*UQμc V]Ua<癰ʩjß`ePDy$p@A\/Uq5$1ݒ׵W)VE} 8Ap)b$"eNhH)Lē!J]L2j^YU ͧ<ʙf:mpq"= ԝpmDM%֔UETuzibؕD 8RJ^=>lܢ<8A"j6qz}}*`g+NzO3,ݖZ+8Tk :%70FA A<,틕 P#aC d9l9=T2YϛX$#Rwh%˖._Œ)ss͑0L 4<2B]dRYٴU1_$d FAFzUk:P|zǟ U* h$ek an~zg#tK , $49fBBZܻhc]A ֋N.*XOVR>s󼝧 ̮};޿I]qu1F54/V^tte'j"ĐU~Jab\Xm$RJ' 0 p_)G aSyWĔT5^,yT)ʒ"9SUmЖAJER5c]#ƇkESA &eJGcYwN`'DA @fڎb)|K>ciXSDLbV'ё1 \]gٓՐΙAs*+śqΙ`rVc5U;E 䧟+UZ 0 #`>J#Gi19}'&:X  WZ"ݐTwa+ܞo dfz_'^&N_5|jFjlc)%SQE' /\\ ?Uj5RB  sNł:3wӨzcXt,,*E*i1Jku,hH)]3*s]ߴn%TpgBUsZ*VI9.) EN^p%l|mZk(qoV,^-7PN,7㑈W >9lsEl{5Ww\łŞ9|磟K_Ы5g"y @ nğL1E4#Hpڷ}^Xp$)sB`U>Stu :pIZZp A& )5=8;u@s2 7i( %o^#ԟ'bAJfe{g]g%K#h3qIZ)&&$ mK`M],g.7]>sp 8 CĆ5h&…3ibX4U@SE9%3^d/tx-0#fD]]X!EʮG2$F[=]D3%);WEb8 3|QOs&&:)  E]TnFB7`7,' p`UP`FKeq)M;я}IH9(~ ڰR]0 G:@98eB8dIJu?R6MrBPMT1)hZL 280AizReFHIW/硾GjI1ҨUS 5>EZ 4JϪ*Ȓ +!t`bռRح4U)e+k09FN(sO~ Tde&JBx>-{$?b:2`dPi0Yť}bմ>G`1Z%WU@%nqh%5`}r,ШM!( ĕ%G`x))9U|"^3ۜFÎ XrP2 g:Os).ktt{w^4 Ƴ`;;.LЙu:ժ^5[ N^3F[ :s_;6h{>;}6S)dzmkc;޶L`gn;7ms;^7w;7m{;7<8 n#< _8C<8+n[N g'(NfI0y82z\{(yfB'2'qm `N[}J$_.k\LtFF.|1l03Y@UQtBA㢎L.nggЭxoq0Y渻aIFQbWT=s9R#AL hqFZVaZ!ZhT]q89c;Ra0fؕDIdvVV$ L 6ݚC@KOB9nYD\OBY] TruM?ԤMB@ mCVgye%񕊇 ؅#PUdȥR:N"H0@I(SiӀK4߉ =`6j >_<0gA EV dͤVZ JrAQ 9UC NU||&PlZTLp!tF$ EWs>J'`x]*P LfSO}Yz8z@s94%XDC|zv+?Ggx'qADqJyzE{ZFZ=B e!gE&T9LMȄ4C=C8zg j݅"xh4!5dTQi ;hj'R]t٧~i?:R :h#J؏oJ内!/q˜؉3  ]~<œsAQ8`Ҡrj]  YѰG!1Brr^:0֩")|\- IV}NR8*=UP$@8" <8 gp"I~/_ Ug^%Mi+H<(Jkƻ͒eXΨQ菥*a`+5jp(k )H" B_˒%\L:iXS]! YvY`8W6S@+FĀb౪ BbYjM?e$`[yzL `rP_m{;?O*AKem4wDQn:XJfTq:k}M,z@ϮnQ1ɑTL9x`֎q^^efjfg\0lO E j &@hצ* (eF2'`6~5ʍqT&:Nɚu hdFäo<;ӤeeSo]"$p2>x;@  I֨o)KbFPlxsEXpnoҮ Vm-GeX4HHN:^'Zȭ8q͎ ZKXk>/Q1o <`=.8 Uƌυmk\iKqv-P]NnQiRLҪ o?œG&1<%ZQe!k ߁{XVvcΟQh (Mai,$l GS`.'o흮,Q~QfN9ew. 4\p [=˜nR,̩L 6> -]t@;b90bp > Z+;pXbFC#]u<3$Fc2MLjY%D.)n- ]5r"xp&Cj,+-"LNTrQF) )*Gp Գ s^RVX;WI!f. O`K17W (qBJ@ txAo [Rbx`Lpn!D436Q'M&٩܊^7F[RJK$h\kԌR_Mi3ϋNHgw'L0p0PohS2d?J. ̉ $96"4-6|B?ngsU*Qm.9 n/sga LI6c 4 ^%3w5܃9\^x8bK3Q8t8%f OI8+( ?-8܋*.Px.r^) i`nv{4UmE߈_ xwDL Xit[uyGp•ʷ(ds\3@0Ntφe[X&ܐܪ4p~bV:KwcF/hkÕmz58WTAn&pM|xEm<\F DO4n )*2QoQr9A9P&ВM34z&4XI{S39W5{#3Wix5X=qς}3N!^*&#ÎK< ;.rS>Pi R`X! R PYHC0LzT[`˳iIRiŲ՛Z% dY\ՊG -i61"1O'I/ lyi37rDtЇ@asT&"XDrŢ*b:rj;0E"K+qÃA,CWWlIl*Vq=@P`,.X]zN"xE2'0Ņm$hzҋXE-،t7B $TtLAI 0iH4V9IJ0w+^cьp5iP$*a.J/.@"% Q7bR^0pU5wfʃ,]30wyAfn42r_~&)ݹesN. X8!Qe%?SH"vh4/:LF2X܈i95닋3V&Ꝺ=Ԡ+r 'vmbZ9'l /aOHtTt:`#MRkL))BHa ([H f$"Tdڅ !&aW+.bbf-fo8!e ^8A+ӏq,!dSR8 tBMtFtJ/tN? uROMuV_uZou^ vbMvfvjvn wrmrcqo\xsb. >a05tL>>( $Pfӌ1^Klq,RKv^iy%ڙc^4^REÒ.UZAi/';en6d(=2_}PdJc&|!-|j09 n&Vb>ܴhbw\F5L2?P4AX3W3f$iCYPPb]NGaM 'GpMt؆ 3<ΆzWWU<} A%'C4r.8"q0:?F9Έ^7`^DGfEb)FNB@YkEbM[}daB^ӷT.tdeA)j)x*^MJ.bni6JG8зsz2>3':I`BQ9![=J~hJqlHV@uMaLbB~O9P$tOD``|pW5Ґ Ď?Dr7Ɲ񓿂E PX:0H_{3~O0/l3;lz/ 1WщGVsIHrdL7j\7f_,%έo|rZkiZ`Ղcb~Du64gHXtWJQG["MWFHCҜoJZRO;d_oٲ&Q!  ^t5S oU KW%>/q$]D^wSFEs;VGz84[QoP[߂t|ԬT򨳇{3lq[,涆Fx.z 匝hrW]ˣ-!6kk싚Q  vd9ʸQG7 iXpxlBXY@}$e`KG]b4k(?/5ր/ )w+nZvɰ|^rޏUQ:4&nt w}sbq_ۀS3q-c9?} ¹kPLIҺw2&L!6~(A#:LV 2;/dHpAi6 ou[W8PVkpb# P BUigWU@{7ԗsdFX8yyBn\%?|}Gvgvw9]%L3{UwyXqQ'yQ8 [qFtuGtH{U6y1?ueۥU #[UQOq]hmPɳ91ZHV:)2?Hf2" QC u+{x*K‰Ux&f Cœw GY TkPTs`aS):iECL f)hu! Qgrdg"N*D E8|멠ۣr-7;Fl bHu@= 97f[ 䤙8t@+T8 CŽ˾U1+Kk˿ ,Ll  ,LlKr)$5ŗrP0y:.A9 (c€Xs13Z*<,3Õ!8bh*i\0k%2šśŲ*G`N{c"(be'Q|HER VL!h)ob%HWr5=Pu|e_2/V ɛ":jҒ+Rca BY̱"t{\BMVG ,vy-bK5nJS3L\ʇЪsRRHʲkGڃy,,^a.+U.'X\!'a&`SUITMLwOOR}1St"SP>{TTBeX5R?}GmRmu+wt 9Cέ0NSSUPTR+UC(֘rךLfOo-kN`RtSؔmaDlºhmK$PӤcNvS}?ATOeSX>rL.EUMpmȄdmtvd(  #3eYK}лI[pŵ ^< f 9w+ET: j=aICMPrSU}W5YZ8 Vл#-A&A˦iY4F>suucrLBX[2N񗫊0W鼭+ (/^>*X:0BBhKy >]?νPYIut'NqILȺ^;F%M*"Y,<NSҷ̨}x cʣBz ~?aZF }=} *@D3b 6SAFbt+&BWۥa} 4bO}Q~eB<B`xN>-&acAN ^^}jW$)}2sa Q}J.S>TW_*Ybq~DbTVYbP ͔IzVH-_ tc[Sd;_f mVHi^B]s௄nftj92E[oЉkdnA?im vk]sm& HsiV:qHwσ;~hҖ= k}pQo5q9p|q֓mtIñt!5UϬJ$>ob6itbkL煶Zb~ffYp9pl0qK406|Ppof93y`wyg(됒n.Jg;q IbCN'{:H{."">F Z9)0d)N5%Yu7L ,(YޘX] WD"_T` ag'b_ &E#Ӊ$n% Vi䡯DA(jro0]Ev3hIϠEyԭax-{efR = l~yfa Q5' OMDia6nC /PFd EcG'aLj}TFS)v*L$/$܄@*L!2|5:ED0,p ’h^\r񒽐BDv%Jj*9uzxG%tO z /EVBodmP8,!!"SCFˁBAGJboIX"SBQ9PZE/R>i%c1;uPi+Ny͋0OK0II2Jڂ~o?hЀV7Y 䦋҉9<,N txGn=w9RyS6Ud]"gXE &@|Φn5#SZtyHHZ[s LϏ6Im 4-o&E1cE Dⴠ v.]VXP=ZpV *+Xy$ R$Ҁ.maAں,qgx}`g|nt]nPҮvVՐ75 {Aݭv MKHh P @iL;t %8KNHJi`u!)'ٱ.؊zSiTI޴}jOMM+<./짝9_ܡ MH֭ Rk#[!Rl'B5w2zNw˭Ni|ɿ-lPl9FdYIo8[͆ P0:ҋ!Ti6UR'zv@^#S-kmiWwi {\!'hbtF^"\@S -~a4-OgL>i99i vLtު^{`io&>g{f]ux*~8-7>Cx@зs.VM`J 2۷`€c65(k`yG _ ]Bhevh` \ Ő+`݄`1 %RqI J V.4>!FV&ÊɓTU2 Rd !(G!De!!JO.P@-T`@hF Z"vamD<ݩWoY",\`")b^ *.`"9!,"- U{".z1Db*`]Yj^b.:&_0bg gt™"#5V5f`#H5nzA[p#8֢D Ѳ`9:a8jB4"9M;cx>#??#@@!6$B6C>$DFDN$EVE^$FfFn$GvG~$HH$II$JJ$KK$LƤL$M֤M$NN$OO$PP%QQ%R&Re(R>D,c=R>+yTtCU!V&ÒTd%0 1^ԕT%CJ xώV^eC?ThWeL\WZ@UiRdv dfE ]q gfT٤f.;-&c82l"p])pҍ$nF&O&󑅳,g .s>$X'1I9_>1݄ĝ^Bҩxr#6 <Bw>R[ҩy KM2R'u$m6t TMxngB[(qt<@jV>&Q(L~Zf}.T\TFo4K»EtY9*}"hO*GꠛyMT*iű `"<5BfطZ5DwghJ ND[LtWmQpשiI|cqm@m怠NijÍǡa je\!Dv>C;ꬖ Qa$˧:Lꥲb|&՜e 9ODkR~jtҟ2@PC;Ɔ*jFki*JM-R^@Z@+,Vcd_ڪzJ@<*Ȫ>^ z[¥N*lZc4-ũ.bQ&.ߩ41q!jJg֊J[ ei:%, >E. 3Qǯ)q \iU2f2"t m/TzD[iPahI[T-eXǡR&BMf|X "$Ba`>!QE@IbIirn`q&*E^xZ@6HY_ #UqYn5V/!Ve\6aV=RW)2 Ȱ.VanBH.c<x? j<YuڀSrM2XM≸w=L4Q*’ѯHg6DۋFJӽ,ipѱ~n?eD,*EըAHɮx㬱ԙDmq#=qQFnYB#)w|mVU ='}T 4`݄Oq)G} eh Pf ;P B.+pC`^%*iT5FOhу U6i΅L ̭%21_|r-$[h4*\j q3 ##2#ݨ_#.23 #J~ >3؄sؠMР'Pݐ;0N{z3+#3BQU'C eh@\"t:]ӊ 1g?EW3ĂV=Zޡ7º(hJw'G"PJs©7s&+!AjmޢPWnv&U}ȉ:TA2כ`p/A\N'X:viU E9XU2:*Fk%-OLA41@$u-/_t.P"LcϒԶDBծ6cJJ3w1t /y5>WxcAd-ʓgQѵ_=Jk;H C`i9uD -OatB8Lc Ee:TmHz3.ZP9E77;W1"t^-K4{" ԍug„N {KuZf(3Y.(^!<`mO\xl A@(@8|wW Ow< aΖ2;ҔpE 87ӪKdjţB Cq?z/8:>19uw M-ЪmPMA#cVs})vbVN`tfu 莟5x#z1Α̣RҔ-ib5b7C 3KyHWWG֩בn(&ab97eF?h&xˑmr{ B@lSak&S#DJئ*:|/n0Eg$8ms(q'%azR\xp'v'{?g= ?~H7F~6d{5rtyoBR%T-[&\>fs0](5JOۆNR|~C%Ssf S6,>^,wn=B6 .=:Y($8o`e\fCb7$ $Xtf:9=BU{ڷ,In[8xLz:o|~ð_wj7mPaV 1ԃP`9Mopr"*~8$ @ٚA8y]VC'ۺrjq1"<`־P蒁` gkZ-JK/8WEiX QQ\W3a h :vy,)3 mn.# v'>-3ώ Jhtʎ6#3Eb#npR'0#" ɖHbi˅X1,83G$8BQ͎=Ssd$q0 n@`Q,4RNGv*S( 3bTLYUu Ok9Qj/ h:׎%Ym5Q)z۸s]ρL%X u L}fle\?~Vlc l.Y ~<toi6.qO7D8Q0e f)7u-Ղ$*QX~'O8C_fӬw`c`g E@w%|E @cfI)cY%Ui[(^h#@*5DWZg= +LjDIaf&~矀*hd>Vȡ,砄&ʟQ*v:ÔRo2=D *hHQ*}@uBe:!'h}.D rZ[ ¢@"<_ny\k G[xʧ=k/;Opc_Ruj"F ;,Wl+0Sk2Af<`B'7԰ 28<k9mB\iTWmXg'y,€Z0+`ab(up-tmxg*n|߀.n'7G.Wngw砇.褗n騧ꬷ.n;(M3p<`o S[px<_` VN3<Ӕ5'N“ٓNQ<H1'?*Ǵ PiAE60Alo:iF@+*e7g%1A-s`ㄐF! >#lQAҶ9Ba%v`x|pT P+B%R"'eYU 0rg$)Dq#GԶ,:YE 92bĎ?lnL11cS*6hH6,`*I]mRml)EI1溤4Vb44tH)x𗿜"%$DkFRićJfNRد+ &&*i;\s;ۥ>7d:3 iɜ{^ Z,'"214  (A2/DlpY":L p9A č.@~}6ޖf<040Q?>NN `7EO JTq**D5'~RUV-jMfU YIJϴ?0 \:Qq2 r&dgQ̶Sl*I (^~@S:RX4VUT .AʋqruޖHdwzVzNdw*B"_!JU rX/IK3 $y&&cF-a334hk ؀Zȴzȉc_# I<" 3IZAC~BS$ ͝=22aKTEA-91sae ļq1D+jbƎ;8`tS; חɠ0~ә$a/-;/?j'6/X eiY>u^(sۘ(&IB:)/.3dTp*;IDx1!E#@Jpr+XP =/t•CFPBR.*C"ՑF;JTcPnBjoϪj15!ᰖV$.F/nsZ b@E?j#ԈQnFo1n3&Gk~9$& .2ЀFnT-Ai,GJn{ B 'w:wyb1ktR-&(M&Htmh*x{ Xo XyY,CJgȪ_eX`xX/F笯 !ƼPb_D}})SpV"֖SQ)\JȖ]u;Hy 7@(?.^'T&#쥑$icđ$bTXR)&!a)O_C 1<7Cn)aC}+G4)M'pNNX7E/=AK!/I1X~1Gǧ}pmFG%|$xUh~}(@z#pgy ~y4ve7yp`fD*0{jW.,b.D'w3vjT$bEq P8WzquNȄO474VxdgEl/i/0d߰pQ M}/ "N!wAKVw,`ĀC(&QL8B/o4gi`聟C؉E󉇑Z- 8N>DkI0F0_3cc>X؈ȏ{ q$D4tuH1lJǀ"jfBqWAEcb~Y 0RJs1(1IB.\6 w`sv搵x4v# D49g~qrA@# v0r]svnɎ 0ohX,8l9HNy~fCbH hȓjh&&i؏piB*u@s;|ș9yU%(6bi璫U?~ԋY#yg(٘X)G8YK+9xwۂd`h08WFA׉Fx&xY )%/) wbuU@Qٸh;7:VcA@iT&MѢPcDa&.adyq3*ĉ>e_q-4*Z)grAt`ɂ92G5ZAJ*7I :zZ:pjAw`\2R$m|2j ږvcY/\EyC3F7xd3$Y`Df"(+ɹ.AjhptF2=D}{3)EpNJt4I؎ܨI c%AɧA6tmA3#gHٟסE|6,MgxY~3<'KbNbgym"F{ \(!ʜ*81t9[=vǘ ֮ wϩyDQ{-{dYX11~A#-.JohQь=aX!sڛ%I$ QSxˉRAzLZ D=ȉ۔ȱZ@"̕m=&I˝9` 9+32xglHZj9l4x#}9[crug}cv$ZkKA&faHB,;>ڻGK{~$|Zk"gR x˥ ;Q*h'"G ! y@kE숫4B瓈 6yꕡ ex O>}`3{O_"k&{}Ni:{6ky3[( u12QLj62M"  g*FAȲ$3Ľj#+_aD@S^bV+B}* &9Bd$4p\`E`);tR\x*M : 9A]B|gi9>7M^:3ϮR< N0ܞ_%;Yh9c2#vC~vоSV.1׮"e &~B/N b'hfH(.02=*>8:<>@B?D_FHJLNPR?T_VXZ\弃7n5]/@3N3WR4ҵF0+$t{4_0Zss%o4"J#bOL+x[9ƎP_D.@ s[O-q^ y44{.6)/݂e;OT jgƓ][; lT"Eq3qvdU\h/m츁-[`JѵjF8K@±{2}9!c9*fH*y9MHJp3 d8vOX|9n}Vl+P]xH$&4X1)n@r~F8xqf N$@F4v6Pj<*/37;?CG;M4LD`OXYkE](D|kP\O_\TKNS,a8y$]8P @01ĶF@4Idk ̩51 XočTn$xduXR!'ɪ$Σ)6,1!]Aih0L ]yR;Kz}#ISTY V_ъZ HcUi?-z&R& Ya4c7a"HdRS֋WLtc XZ1] f(FoVzg/9 ^7‹^ux_9ǛM%cnfUwi5n#wEiaD8I)0P3Xi #IDq1O3`􂞅( a $ 4ua`m#L\\ж( l`YH5vZDe椚\܅pqD<^.DH"aVZDBϣe7ӣԜM6ern*6)g2&1[9"t G 4)i%Dhc"DžF(aijll[߂}l rڊ勳m~4[u$"$Z,Q*|elh1qmǵX56g)uіَ~hn-#@F6W!014 Fj ѶHvb(S}a!f XP$0Z#\o>bt .rLӨ-]Z]4~,+bq/21یoư~MErw(2.:!8"s\kR0z.Ny \`u 4K9TX ,߾Mfݐ,!r@JoiۺX@]Nd2<]8y)X5}TPzBƙqtiK =t % {@Y ?v!5 َi:H 6 g+vv|kZg31e㡹Xw@2pa^qm~R")o\^yĶGILVF}-@q5$4A9<(7Tcu*dc#5@ BBE9Vd&S%-w+d|G1r 4fsR#5iM3pRb!IOQޤ"bKP9}M^ bhı@!4E)AXa,\b"g5*Yc40PLe 4J` /d'T9UIH a+e"o5 ?a^3RH鯡M٘fD`@4/XJ7>tC^䓬#L$2ɯEt2eͅL ?dyΫҥi1K i g kQoB,*3Sĭb$H7XĦd)mS2uTNF/{LڹjV9O=:Z#4Cp$!0mc3/q.J`.̶̥Xr^㪰HmZN6VXLLݬC <(yDAV"1`)^MNo5Z|~Lm4&l uB ?Z~^t[j`7Bzإyy1OH#m!XJwI>qN*(lsjlNpsl\o~fztA7KlKc:€HO7ӟ,BxK>5UOՕ#Hg)+"뺄r*_r`1tyjvk=:YȌ%(P" V&H@l_3H mhl]]żRF,G=e]cm6K Ӈ܏txz 6EP࿺B BE+8~^@4Sj @VxbӖe::߹jӰ7<rч'hI@#+DN|%ȡMWuyAN.0d2RοO54`#=I.MvOo #ReݻOa)cyHaF<=W=O΀H!L0X3GҎmrIvͼ<A.C߻zl*j2Sjg˽9 T+):\7ZE z?S 2R1ωbL9 S$Y%%ޑLYb`Ճ΃4@2ayo`Z`̠ ]`t`ټ u̠ EV=X.Pza0eQ@CḾJa=ZJ+iah O!nab#J$Rb%Ρ|%z!%')b*Al*y)bϝ&.b//l!0c11"c2*22c3:3Bc4J4Rc5Z5bc6j6rc7z7c88c99c::c;;c<c5%@@QZJLU%14\P. $FCdq)ɡ4!0) (%'$Ny"DN\u5`O՗)(_Z1 4T4%I2hDWIZ %'<%^.e]%D 'f! P|%֢5@dɈ^ \n %b3g&t^&@h&TbcbSledPdDB\ZY2aנ _cfDgdg4$&m.&j&]:'%Wg4TXF!^QP`lE`MW6,B[LJ (ůբZt9(icInOxM<@&hZlhGEjLh>IDODH ދ(\$\(n"C(Ml'dCY$@HhCTÑzIK: ) f)\ZօG`*!i) P@LJgUQ<lN[[ID̨)Q\C>)>DE.d搔ZP<2dRLv(~)Vȭ,ũ[LUWEhLh֓l"CHAK~S(VS(>x@NWLR-u5Omx|$ݕlu p kQ,߼QI8 *& |ҾaT8gZإZ,n],FiZ+-MgBM̸ZƺQqIHL҆AIBUkSPjͫ ̖yҞ0ʻMV:,6Ԑ5Kw.'EeDڢ세,)RnQ!TPnLɴ./ J 9/#>"mD n'!#FN I_"J/oId J=d޸ ']lYh A\̬QՊr!m]pC+`AqMHL"eeZpCn|A >d:Fuh { DLƟ}+IGE1iNh1NDC&2L)L"UƠ[tL po[qxٿtA"@L&rw ,]Џ%%, &g 1p-NZ QYo e 8 t!Par9-!hq'^^w1Rk Ʋa<qe q1pD& ʔgX+,ݬuxn`%krTN3HE_kM%AtgXM㒊mMbE@mM,X9/ƹdӳA4F1 ]DQ Sۂ5ߛZ;J0SF¤۬3u2X_<\(@|V(k:)~D>MCyS \\`Hv'dQXcYre`u 7tem1c@ƵP5ִdb^b#BdkJur/[wwyAUe;3@gpR/GUU J ވ% ޑ֎+S^7-^s1a@%)S:6No R(a7tZ-o];t}Ķhy-GLDMbcO8eaݵakRxHU 9GvE'AL6C'~v=Cko#Z_z'SFkS/X+lF!4OX#cpAU)G-X}H!w'^bsjxf_T肺 77M~ĩsZyry"ϦY Wx:8E9VIИO+749,e8K8IXc0i5'U3ZTf/1wKNSwyS٢wFm-j 'cASgs'6OxࡿwG>F^m[st8Ww(Y0Y`6DiÕ5 2͇8>wi!r ^ r$#`$z̴ !tӻ5;`H<(;N{;o2#'ϻGK/9 UwXc{ y ;:oĿǡGJ ĖeG c>e9{[{ytzT3|QYFVr ?|J=K/_A!MQ[BD*'?$1o+ljt ~>@3cS 4W"ZVFcl~}(KIJ(5FL$U^ NTw@n.\Zɗlxffb#6vf!sҀUBW !ӸcQX ;*j w khIP u$`˗5H"k2]<\jn2C'N]~ t>D=H(xRڷ_4MDb0*dY0qӜ0F-Ys@t± g%-&U+TVtHO/N@3a18U"fnLk u{P4|%G[(}&,Rq@(GÁR dP A9(Q|ɩ  a )ֱmj *PA8N:-@߰;ka;$ggu>t G*'3R^wH\ߖ1k`ؓ&Į]{m_)t25g) qce"`}b Ie@#nUF]ܘ[zg2F`4Q@RU8 ٔk&"^rfWF>zK1hdǪhB֘$;|M{4֭;ɾ&_̴}Xw+@3}jC2̓#[h:T~_qU8-`v;BQYFE"T60'H)l=Z"X VӒMPH( S[&BTp"Ѓ `S=e:u[5ZdoϦȈlsx!37k\ /Os|#? OwE:E?2ș )8<<2:B`rDS$>rģHK’d+IU.'gYT @^P8`*3\l3 fBAPѬ51^3.Yv Б7j|>NJ&3=9I{#:> PVY-5UcP%S ܲ MB n"~% Z*QN S z\KAR2M)Zt[vOW.c8APY`ysšx4x, 薯&U^WוgI iH.)4[Pb5jRfضjj-Hv0psP&XoL_۪Hz\)1:1RoA߬A&ppfY7Dӽ~_./.o`ϸRJ`AbgF8H%ni fYCL:nhS8Ņqo|( OzOWw}q$gE҃gs<6ƕ m&'@N; |WED]_@; a0 ܰ;|w_:}p}nKm(Rڲ<%Ј[|A-gSSPqXys}I4!s B?s`JXWu݁G$f8h9iϝ٘чDb[ɲ<9NmLhEn"jOspkJ73G_yXPTqppFhoG qUbm*/\'Aڄzs9vlV6r&%S?3 #饀$6A(#L$@"8G"Ŷ9,o$3"(4h5T<8 C"0V:>S!zG}?=GSDUsHf(7G.3 tk)X?SyT2 Ik؄yjԆ.P3L@#(,k,$#0vg4fejH8r"nGAT 9!MNp?$e/vHYAA\C3NrgE,N$Q)Sgl6%ete{w}АprBm1Xi7Kia 3gZ0#(5QI ܘ)i"뤉a ]p(UA(Yy=Ї0cw#@L. 2R:#2^`()Vjvuc{r qwfGWz^j'\R,K,IFSD(~ٓ`  $2myi׹B3Ƌyd:22QYMea#-QHbTGC3]ђw`]n7=,jx C.ahc~)=(zP'ds%K *>0Nјy-90zĞjo=ɥ3i?4Q&q.F3cTXX:2$?u`{MpG¨֨5@0cJw  ^l2 pF};xکv:!ni 6iT-  U'Oho3#'sa٥͚_avʪ=j808hN<,p?嚪6B: B&L#Zaܔ, Br RpJd}%Q'?601J,=xI &iQrKwbg(/[O")wH%[ƦYZ1ZAz6$ҴP'pģ/+H^i Cqk{jfK૭S`[0xf͉iE {/R:FAIZ 4Oh;Ujy@;lHNg@GPcaMzIW,EkJM`pIKFrjzt Gz;Ӡ|f (N06qKF"%u$&dJy]pA'Ĥ%e;8ٻ2${aKy|%5 CT6z".#_5hg)}R|% | $j& 2`&C&j$h#)TB)!R1d4i'0\ :#OK+D.yHMm)x<|Gd٧a;CW{!Cgʞ%x oΔ\1sq1 +&A2BeJdTxS`3y#KVe8Rl7w, TԼzd^34OU1˝-c[mUELĔ'9I:ZP~SԷIe݉GORzcrg+owFR>ieѤLu#5{NfrJNPM4eLeM,^}\h~ҳN)x6^|ƐQ]mԈ>uS#h}Uk9拖^~T,n NZnmMnFVcs.eli\Q ;b㻹^~!ޟslM+ЮZ.HLO~mn.HPb[ʟnSMjE>>BN)!3h *LkGM u£ swwbra0jp wvp:v‘Æ\=)O9 W u^')Xw:$A'? Vyq|ݧF?Qr85WoBryVw7ƒV7gqt(gVj)ǠOUHY4H[YhoQ2x; ({iMLx(m,7x4$l:MF/F0j%l w44Aͷ AWVGo?iҢ^|iA,;B~ 0Y .&<)L\g-xԲVS=ZEMQ 'tx`LBvA'xUH&C .`TwL.[7IICʏ` Eɟ$c˅ C O$TaA ( nna&kro@F*msK u6 l"tn7',BNX` {W<^IDyZb)`7;7Bc4l%""}SēpxB,d9 BK<˘?;`pBY-bsrS ђ,Wʨ<ƕM{+*p>eg."$G(X8-$J4 2`зErB|S!챪rCT#lC] C ,u[Bj|t݉2a)ˉan0Yfo VbJIӒLwԦ\T[&Y^'ΥK^{@Z_@v~ nnHVE 8=_`"y!VP>h\ x'g"b8Vܘgxz(^)9˓J効&G9hr"9 5DyǞFIcIiH=d )gAFYfl.Y@LYNZU0Xwdf9i7c2Ye9%) h!lYAM&.yԅ4,d@Q}Sl| AN'Jm/&RZ":ezaw4kBIgArDt19-Hv0匢!vD+nVLKoۄ@mR /lf%Ks ,m&V08~<1&`A|b/P#FދܟYL$*6gHmFoIY5T/4C 1ڞvL-_4NЍx##$ qaX%es{xB"{%$Ib?\N3DA+$4gG1q^g[eG=@$.se(4 2qpO+sExqjs1C'C|IS6@ ;TsȠ0ӸIPS0(>F|J)>V*/i>$W!n+4FϕTS1/=2{y / { X PNI/ɘmFɽ/ӫ8)E+\0Y\~uMn{Nȿ ~W^)A@hXj^iك-^uIɟX͑Ex8 c%]w,@rx׃qA_C`1`!`I $с@hE֏Q MO4B(O L n8\@p!|#^VpI@ JմK[4@ JVykU -2ܬ B4 ^|޻!^L(,7t#D{  ߙQt0?K Z]ۯ]OTb&b%؛%uKJ&pb-!,6)=,@]b*-jDz\zQ}1#t -( L6Ȇ"Dc+Y)/b@Y5"[.120qA2`!fu!@D n@ʄu!Ęb|#vFbEud<::b &)˼( /' &C$dY$ OB ]{F{dOOQjuBcGT}DSp#yV~Ә+]% AaX~[&dtUDa8Ew$\54(TI_– i)H^[J>ظ!N"-IMS>S"[c_#՝=YFq }gZݓ&j&a398V#mU$>b$P$4jCEexAžʰΨXx'Bb'y xJy'^Ty}gF_}S^z'm$wI'n§cg'Lzg{"0(Ǒ)Z'vgɘ(gv*(h0))!=X($!N)V)̤fؖ)h^2٘) Z W}B_ّʁR.ܚ)"ըy> _}&b-N银iAZؤvk>*vzj**niWWOfX**k*&.+6>+FN+V^+fn+v~+++++ƫ+֫+櫾++,lA,\}PrjuV,/jD/(rlNDh]祴*-tIoM8S 'af}~(Bn  &裢vkZ9i!"r0-j$XM % gfh.\bi,A $J.<]ۊjdiԥkO!"*x؟B krrDm`?3xٕێپA P+L:K_D\kL@l,1f230 zÖ%hS 2񚔱&ke,Pq/PHp,AKht C .  F $dM2 rf~1C1)@!qaҎ~#_+gk`#C(!KQ,+KP/xa6\$}2g}=3 W"_!E$*%P`0, _1><[A!g)3[? O :gY\<3 GS0iW|DnQi$/ GJ.m;%3zAf=޴~pzIE&pǹ]֜ucM gur+5t *uE"5˱ʝOkX,N&&Rc2M`6ĴYg8\rG{.5^5Vk#^u%ߗ4(^ 9o;QEbLU7\FPr>c]F˕tZN񆘰ɅSQR k"0x@ȈKʀ@M1~6i, .0+!&gVqȑL"ln0N-6]ydk}Dpd{?XxR('v]ZLISBrgwKLuGIPQi|mxwy|GkE|bwiNtĤvŀBBܖRt3PgZPmqVD/"UB=IϮo X3JF7Iwo' BDXUxϞpePd3r{2 sLOԤ}4r'q"Táwx*N` _$Uqubޜj\a"·l>k Ԧ1Ya]/Y;+-WU lp! K‡ix@UmVqUCliw;ߝ?( v$ ؕ^]5Ug@&T)Sf]eAo_`UiWNM[WlqM򝨛Sy#ct;L7S $rL`$YL@ ``<Ęx[nEWn)㞗]fzQRTZ d Mi)aɓ3y />itZ #; QhIl E/(`גQcu7*ЉCC:1mcDFEz jP 4 闝Gc reC`OhTˬ&|ٌbU*SzbHc%7X5iub7vBē#4"RWL|f;nɈC Z[e\Y& ficޛSibÐy2U.5ܶ:SұEA"?c܌C7(4ZR Yč"֬),7$.!tue,Vk|t^sYc-~8]Sl6{g{3=])W2+wgV~} I < Au[U2]9\EH}ic E5n(˂/SZ'`ZKu ױ;pئJ ǽD9jۊM Pڌ8 nSG,qcۮ>h0rNͮj A@54=ce&c%"dχXM250HDQ#"J/ X|Y@XNU=$Em \sR;Tډˀ" 48P0Fԓ'e|,A6YP]~q5@mc=B톂:%`XFSb:)A*d\٨n}*'Z%qA!"g2q)LM^m [a G3`ob  aJgh?rϠ\b"Aհ`dZ[*NcOۦQjuB>t-]Qɉ:lCʘTXTnKN -rѹBzc!ֆ]$C1۸96\JuHUPN#(ȕ eAS,rq8*^%qCIB~W ;}K{\KN1˚ U")AX ܹE2D?E_;#SH@81v9|"JA9yzгZp.CygȦ%' cbȾ[N! D*m,1?4c#73vvCBzڣ mC EmۀT]`vg;@Xۄz{}.uכIvfw[lCw8܀ NJm`zlOp+MxD~p7bL!'9)~m|~9 l9<*/wc -\32zÅN'|m޼P'^S*Θ~ ^9,*+sٛ^붻㭀CFȀu;7nJSS4 8u}?yGW+}pmgOhG˞:=}38O7.VЏn:؇:#mTg`|>_HO7OϿ8Xx ؀8Xx؁ "8$X&x(*,؂WG~.284X6xyrq<؃>@}7V'HJL(lCׄR8TXVR$w^`b-9kCacjl؆oln8tXvXY`mu|؇~66BXxH؈8CixѷY.2#x4G8-w-8T7WDxIrGȋ88SwUʸxtH]،Xzf_x؍ވץpXx$踎؎|8Xx؏9Yy ِ9Yyّ z:0vQ ycdgI},a_cvCfGjX'q|z}񥅚JNm39"s)ըOf_ jW5r@"hSHy:n'QF2Xz= I*yHºIojV:G6uJw*SJej:JWOVGwH Є:t4J IT3lO DU{D|VJXU$ܳS{v<*vap%ąHS'@rHB`4{?zGÚDFK.훣@*`DE d;CaV[IO4nl5;Aŷ k綱D#BSr(oV<]@1R׹8tZ)9YeJ<14! +,zCͰN`Vl"c ʃPog+u@1Z/>y - u邋ޓġ0q(|(Uw/މ϶B,r_`}|b+^#Sk ܆L庒21GY:tpB1Nn/j ~_l~[ 8?"gzlG29/$_0魝XdcVY 3*0Y8! 2f |mn/p_?gG&t)3L6yzJ Ih~ԩ\%V-9v) =sncg!&(Hc2j;Ƃ:2p'[Ѹ'‹:5Apވ3ܹsDwJK\#Aύ4\ - 8p WDfiXX5.AܱFbzN$s*sp|4"}Ԍ~d`` %Z7\v9c9Nބ yy fxt3m03 v&530FM(׷0{^[)`{ jpIjWT*Y Ded)\%]rm1kyH`2$ـev $)Y3NsD8Le Qp|q MFe#i{3\RNLԅ94hTLB4m:%:MAZ4ĨF#юn )IKJIϤ*gvүA\,Cs ȄЗ5HPТHRz.5Rjx9]N5pLmz ^5j]+[֎r})8׻:ugf1z5}В"^ k"6],cǒd!kb6,g;ς6-iKkӢ6]-k[6-mkk6-o{7.qk"7].sB7ҝnFUbw7ڤu-{fw J$PQ$ҟ@eùDV^%]W H n묀 :^c.7'#Cxi8%ZL XF)Y_,w]xA6I,ʂ~sg -a~X9C`cԽ}i/w6i u{E̋iwxC-$Xia^ U?r|Yq !EE:/) g1ߠMnaqA3кɍ@lAʆ,4&u\HaiNN_Tu9IQk7s:XOw5H\-MV܊!.jŵ 3A-אʢ%vnf<`!zg\in6+٭[صm@&`oH]|/#q#+`oF[U&x 0σ&'z_~VAv-]?)Zޏ\x3~&Gq~eIdExW\.7/*߀x>`',ѩ[b17=ts2lvǽk<=xw(݅zӜh߷[xJ)62):cU9= ͅ 8{7d)T޻sej#&LpVT(xl/eb*B 2g(-UF ref$ KN"p͸.{c_RHߠULCi^u\0=ߘiڬ^m1hɞmYc @=J9EbЁGTõ DHJy(JM3Y9`C XMY݅JƋݫ!8!T~AmKt^ pQŠ˱?xn5|GPŭ pݹ 6JQK |\"Lȼb]ԑXP$b ֓pKDrhvD}Hhlj ʰWACJB*6zZj7!SD&)zֆarX6n%5{e-n-|il~iX(NۮR PeR0JJnT-p%%D}hT`jD2,glzo3..s`/Ra.V~ :oe`%ݾ0 +~V& ` eZe@ g:0o[^\v<.!59:U9Ԯx77>Op ͆/VNb.ƑJ0Bcu~l A-^q<:Gey3ʒpY6~-2%a[q-L𿺃czD͝rziuJ ( (ڡ kǸ%%;.DPQ_Z#/-sMj aE18Jvn`Gd32μaU7dn?N*xk8%)PgwK2 .O`hvT+t2.:pSLԗhxA<cSPe1uOhSa,.Չ6|Bo";ӈ7B;xGpxt4E1[8ۢRAi$rauX֏U\]uZ DyTq[P1uymy`JH{7yoAG2/g\YP ITM9 ;?y;O]Yc+JYnyG'`/Z mWANҝ ֨r틂zbM{#{+3{;#V~~&S{[g1s{{{I{븴{;g{;<{|+3%|C|Kr=[c|nU|s|{0+%"1D pQ>VbӧPJJO$*x$q֌hk Zش (, M4ȚYHW dBh@kl03k̹sOFWXnfH9XB#gc 85^s=8d06! 5J20ТmУKNDؾs4]l -pF]'&Q | Oi͂lWXU9DXjD q zՂ_esKPLpc_-3AO'I/FP0Vwax5kCQ!wFGהGHhu`)d~%W4cl-RBTP癉}@&&[f@%piB()I6/4-RiCY?)um((gG1G]yl4x\[S:D$ZkrZF:H7e 9hpY*@RXjіi&nuD #[rkB$햍dA`)Mk~姰E7AV*Op)Q T@oaʨyI2R&L/=ᎷֹLel[-Q]VB4nC4?6+2%~7LRbG ,d!qH{"/w>e:X4lQ.bjdfK:y8hqzl[]Mn{4)vtw=gs 1|ZY祮 ah^Ι%K7a쳿+|q c])T7^Mܖ3'J%K7Y 1v;]% ڙ>*,$y&S4%YI, E#lXZ=\.ˠ,P.E 8Ѐ Bn( #&.zIL>h$* hiDN20 8MJv*>q )rFB$gR S66F4ׄ| L"ՍXc-JbꃕhOGipp!Rt)ROVlK jZbtDLzmZN=2hL1RJӄ3H&Zz'2Yp\!J{T @\І2RdZ6hZBђXvČS;5ЃM.g}_ VdElJ> P]t04mY/xF W橄`!)J&( Nz*79gk^iUfmK?KgI5~} ZeCHC XFpUo*EV8fͬfӾM?ll ޸㤐&zޡk Y@LHr_06;5udhBF22C\Ee7 .Re25]/A񤵓bKI~0S;z ;TS`m%P@ӛL"]$n\&ͣbf"9NiMTnĄr̀7HެT,?N\^iRʢ T^ k8uĬp!-#QtPE"۲^NЉ^q-q*e;"0.[-Qʃ(l  d.'[f+sN(4;[N-F:$¾Vmw^/D)9\Lav[|:=Kv7)<e@߇X[{_jxNAzS{UyLM*%4n<7MNC{eV)%U ?'pQop"e!l8E(f+y:myV^_ݘ8Ix/GI\NVd0W)v|dOXqmw5 +HGfHڧPv]pc/+Az~W:o4;)K OBYʿк +Lxn\όݰGO}C^ DQf6w?td2Ϯ* O;:r鼯 2# =F߅'=ߺ8돿/~L~_' c| (|v؀x|E0Yv؁ "8$X&Hpv,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8X>İ ۔;LWqtT!kFEB\8~xM\|sw~ke ( w=asZp\R$# H7Љ~S fDlUBVG˨GjE,2Y:#Vm_npb" p)0O6HWЌ Q#\R`1"VØץ?HG ,x qrpP j^5\(sS35)w-' &7/ihq;rMS'ؓ8P.Cxfo熒0|13IꘓpŔ:qbǡu}0|8c24]}dtszUu|t aL`V`tS`cgb?nRyB [c /"DR6Q1'BqSJet"P <$mqi|@$հ #Öq 5w$#'+!p2қ,!^!!HЩp7! a#!=3a83m*uh!+"$!׆71 rK4$ *8!IEp쓝x/ q z 衾 wi9# 'J[01& t87/:_ɡX< \g /0jSsJ < 2@ȩ r1 '2r( 4KTRdK@ 6YaOC~uJozs b*'V~_H}Rk%nJyeS-n O8~)W\0ɨ/Xt`sb{PmvQlwJLU$g{SlaoթZ*W(G=Ɇ!ynO >s"lEJ\Vu ԣƊTcn*: m:H#esگV/:*- W)R2(GAS(#.c0#-3 {2)SVP+%C'~5U00jyF-Sg̒+-g-Ad0Pò{*8J HW*Alk±Ka3Q,'d;riJ#g P{D*cc.'0!;7T]mh: *ح!92jyd{Jfr u+.38[pW"5CQYv*$ۺ qd/k :85'9[ck#wgH !+Tk*ka%tWsfX/S9ÕzEO;?~ 9RZ;)ҾS@kw\{WM:űbk۫mlUCm P 09?JpWfiח@!,gtR+ T :X8d1XCFq)ua1I78nA^[-akXuj{qZ8VZP=/tJT<C̕XԽc󵨨*\yf91#9Ni:R`\z{z`jTL֧9q{Zw2KJmxT[ Sư .҅2 )l{0,es183ђ-:@ce F[sFg<_Hz']\Wr,Eaj'jb)KdE+^kWIϽZǎ0FǣKm \퇲;K_,Zf>CyF2C%Qcetfшt U5cBU =ZlIXmU"-FM -ʆF(n)2= Gů;pT[W+$=h-\nm< }}l\i;s4@3$[@ÛGZr]_'-`{28s+N)|WGc;NM$Y*}>k7j4)u$[n#` KLDTW|^-M4ݶgE-;q_<ݎLiKH<ݔ9@-)- ; (h71ЃbrJrٗ#K9`% uG!-ň^\aQભM݌1̘[a[j;' ֒۸!^5~t*ܣxGͼUOJe;]P8^RS GDY Ju>L ;˭%fyYdgf>;6pm 9,n#~.e6Qq=hcN%XeϖmB?=ș<OVi`4楅319nyQNXa1T5#n@> F[_[{8}k GIԮ n /-3핊\$l` f5XK&;Y9cY_6_6wX55H /Zr. 2"vN-un̰TvNyJ:?ݱ Ah]7O<= 3 [̮-iY\}#ݻZ21]n9  ~mP_<\qJt~(K4FDmN"ŘcUī-Bf {Mæn^ `r tyo :<U'(~*;릥Ѡ,Z3_b] :'e*Am'DC[m윒Ptj)P@:tƋ 8Y,@ ,ThhA> =SssR<P; L^&)cR2̀45tW]ie2GN&aكdP_U^]]Z4xJ/8S,W,9Y*aA%Th/%:f[e/[)s.538[(wYj$k j3s9xZhXf>TMPR?ԩ nSNPMDǸYfür;0s0 4D- #,9# ?Xk b͟xn.= o:H  o+N(%h{r= cL*+iFDz+` -)DZi+#!`'bjA:Gt<+A@+g?,$A*C4D69@;RI,dJDNCS]kHf TE6Y:Ot&>:&ZKI4pD]RJF,LF-}F!՞nFp E;k][hJVX*,C!exv%ŗֈ8.['+G*! ŗ&CթHGtܑvŲWH4݆Fg--qt^U+[' yґ^uV]fXPm&>(K jV*{Hc^mkdXԶ"o YnjxVKPGU~YwǓVx|9O fA&' .i Y5ʹ/`ŤVl`Uh}%V}M:FqbN/|d 2΁\] <#CrLKԜ@jee_2p*` 5c NK/!LB3+uX~n%w"@UUE-J"f[[ؚϊVX%2G9Αu YpgGQ}HA!!UN e7*1=2v*0TNܸ NodaZ$ 4JO!a{ \|P35X< a]!$¿:V0v@ efeOQeʒΔ dBPV 3i%8@Q$[܌/uޯŵ@2ͬaDv((Q_Td; n% H%=A"zr:%sdvJ;R+G(k2 QH I'ڱ %ˁGKQ" St*-2n .<V"l'Xv9Ѭ!Ar*U:~.^@M/{(FZTAdX)j&3 AФ$ǔ3K1 :M!I2T SErd# hܱ7;ia+2..!QD :/2bA10 & h3RAaD%# E$3IrF&t70+E-)0U/>,7%8-/9!d8wrB;FɬFD'R*Q]>GGR4A˓y,5Cף'2ƂS>KEe&E5?%S_4D4N ,ߦZ Ll<24=6Tm 4# ZF=D8KFEiMD솂".#T.IirQt]]NcgQu_Q?+f2!E2`JQS(QjCVMk-sLK}T+3N p)ֆaDzl zHeOY qRfW%! Ms3[jBٓ? %}01*V$vUV#D#],t_aںjO@hOEFe]rFWUZ[bg\0bG4aELaЬQ.bCopZ4=- h&R8_ ^iGɑv%{dnm%Zm?2jRRj6/% nr,,,J׮xC753g?ghqVYi rykvֻh,PWuL!X(R$Ev;x#-usOA pO$[sz $-"O!zfgTwf0fOdteFP^N)AupVoVlkriw yIF%uycOl8Zo3EЃe28nA!`J:cD"H H|apgjbaʕ~ ~]1w%.kF Y'Za|H3L. x#BAx80@Ԗz3@ Ms&((sbdmv$q<5PXoA3f&D5~tV]D?bx\,5dEg$qH#e5IbfVU+b;u3JH9uvIcu&DajxV6LF$Y^;Q^4 {ג'm1J}Vq+KyH#kZ)@YTƜas恝5nHHi*o5i rb,`F߫t`+pod̹zEc x:pҚdnqfjQq!JbsG%&4vdu ^5!Lz̓ l_AfgMdhF#tw}kva!/Hz=LymH&Bk?'Vh; cj%[,z^3(D{ܧ/ESZiȹqn}rq3'܎~)315WN|:;2|=|ӝF +VF| l+-d>?m4cIq\N\3lzǍȑrp# ē܆ ;mb"y+aɹ˽.<ɼ<|ټ<|<|=} =}!=%y2h|ٚ܋zI=.:G7wʋ0 3P^]r9Ckb=~VpґʮKcvӓci_C)!HG2;8Kd=M&smޗ[/9WSI++v%{އ Y}9ݎ^[9 =' W 1V#@^Խ9߿Zl?N3 x`II gthP磞̊X̬>Db끞=X C!U!>` S5HIaH7y>hL8p v>eJ]TԎ~-]^65E-]! 7%! = &bB6]dm8)ߘM^;ahb]Ā6d#3 5HM4~_i(| kLPhoDRa\}c8UZ$A:~G>jA𚂗n`xՁg,Dφ$#_G@Z$q-zݰmG.7U /Bަ\Z b& ~j*v@nR8xk]j1)~ֹ.tV =:c)04љ*9uaY|/{TrW1w_~{YpNVla4Ϩ9#5lRۜg7uC#;Sk!iܔ 2Zg5V|4]BI/xgmI: 8uH\ ]GvkrKsIı9qRu*]\lԖl*t~ZQ~;_N>5C(n*/o( L d+_FN ˹hڅSMHMxt).cd<#/3䏀jݫ,6tIbI6A((|#VWł]B9hSƒB*m$d5 5)4gFbh(56[jEC%TxD&MPQtD0;P<hy(]7!ic1C$n},F5r&4ӛ,a$i9DPzn(a>̃e(;iH+YY=͓a4յb+\"]FuJD%(H `& Pfr6Bj|iT b-l8&eE4Y Ь5I3gƑ!&>jKJ8>Ϥ6{"{|7 jH5:y@`YY=JLg߹(4\313LhGs/Nt54SU laPE^# D,VqrvIg&1}Қ"F.+\Vuf]`G1fh2 ] P>`z(=ie7JgQNn[h>큏]*4l`͓9Gơ0z?7a=,tAuc;Q^ߟu'jtߪe{6[i^ ɛ¿m^Cg`ZFN= ɜPhA_җ2Bǩ ?鋈x ʤ>S6;~ugpOgz/<{ gv!<ӛgOW,BM嫪I/MScyi9i:-վsOO:~m3;,ڠt˩ea6.?:?B %g )i^i鹐9=_uTg ƾT@o͟eTAu n4Q(Φ )E=^1٘LU5WޝAũUl8֦U͆ F^q-P(ئŗ 9yd(@XX\aF, 6=8 SބX@"C$Y= "'X"&Jlxb"}O`a*"o"w 4L/fDH@8m_/b/F"Z$$"J#1"Τ22& /BU "!zZ! Q9Wa舿ɢ1Eeݢ<XVQ &:Vbq"#a1*D"ܒ9 2C;^jFc),bH#cDHu[LP@K|LJyEO*x}#:d8Σ8#3N^K\.b~tD8:KgyEU*+5E*>GU>͍)nQ_!QJPf|]]v abpe_0Om<¬eĢ_%Tn!ӞA WÍf(_IgdGzfOr`tkKoZ6&3P%ޤlNMzz%x}Peg[CY"gNf(g{j,_*\\If'.H{nc܀CD$6Tx.dK}EeMY˩`{Fa}B1) && cFfU8hMUEzUVM vALgPn[A6Jnnnn-rnnv*,no o"o*2o:BoJRoZbojrozoooooooop p#p+3p;CpKSp[Ѳlp &7l>D pٮ+!0~j&k: 04IŞö!qy Or-6q[,휱gU:PY3^͚mV\efr9a뚱žy>` % q+)h$Tcq"+"CO0quq -uV6&0NqX2me-0q-1r//{lqL \+RAd"r P21+#)_m/ + Q`h(i <ӳ"9?fVuR+3W`2_lԚݎlUr2 #>(jGDz+L!@ K9E,_3(0HI9$T.O.4H.8A(K(П.$G[u[T!Ks҂QiwtgHkj?ULY2;V)cexgڱq'_0Yer& %]Jo.pgD_Jeu)ZLQj`D.萪OpȎrwqs]V'zv&tbә%p."~8FXwŨkg˄}b-.E+)7iK= ?݄!HpSU8lvN@uC] ޜ)/ItLH(4 ﶇM:9T\XȜ-KE;jԂ3z#?d[?o_SLDz噊X1Q[dD ߥa>w3H4aqgQ􈞞qφŨCϡEDPPΎkte '\>^7pȇe=pcVS0M7<1)EI~rLSNi ?cSQ,uG-ӭNG+2}!xk~/-wG7tMzW[>/; 84dj0XR]F `-Vd{FR8HX=to6+K,;@heoüZ*X@Kp0&, P e\&,^,TPEEjãGCq3 -BZB%2GJE)~\IUu BɺLq\Vbc Z2TȘYU[YjZ_ahL2h4a#[͌mm%#\ylب+cXk>l0L~;Tߤ͟G^z:6>> ~L=1߮j4Ѻ ό%0+L| L{D،2?r3z̽\"C X..ϐsc AΎ `ߠ  l8 q"+li,S+x* 9ބ3N9礓$,.Ӗ):*rی8p 窌b*)45[*,fF~Rk.,h*ՒjDJ7J@OQ?cB8J/ 8 @T. uT^$.S֖LC=ZVRV.&c0)@SdL[R:8` +H@Vqי~?&`̒ q@ݒcϡͬEu'T]}6ORY3PV/"h aQM&m5aWG5 Zzb>QbkpN\h3~M$]$` 6+ݜg;uz [nDB#\93.G WU:GkQ#bX-İ ؏*RIܑ^ Ѱ%y矇~;a|g-tl ~ԿWR?ȜiDbPqbw]L{;"}Fu$~t x4jAN \oT(5. P=6>>0|zq%@3!L D&6щAq%@l&@8$L 1* g(65^]l( >[Wd@2pp JTI0`[eFFp_qw=!~o p@) Q:la-CwGH2lO>nR%и[ whp/^.Ie~k') ѓ&~#t~.[D/FĐtԼ-B]]DĪA =]db@G?wG2J^}4;Na1.[}te]y "s[}\nu򆧑y5p >zMI^gA2wcEL Xx߯OOQ0nAڒ8Θ{nS"QwIqIo,}~#ىhįgeY`] %k;XWк c婃ɾѦ˱ĒyINÏ4{ 0:ax(Ei 9#5@RG!" Q{@hAH&x+2cОQBz"3^ ۘ!&n $ $ze@` (,ZJAȦ'6 s /V닃;ھLCB2 @@; Il/vBB-d A#<0>|#s)CdSsHr:_\ ʢ)d|`0ɢPF"X"shc mFu`$!&!ZhGo؀2gxƌ;ф&Fv 'GGd g<6g99844VE`|d+9(V ȸ Gz9sH|߁EeuP/$:8e&"ۙ !3`B \#E-?Vyğ`p\! cAY$A ֠bt9o>A#)9YTջV6m^qe1[Č$qqpŃT? s@%}LՉF8j2IȔT 68 yT7Z1R#ZsL DͱQBzaDKIS8bAO DqLI,k3!η,N'(tXK6utC1td 8LHjCZ<7 ,t|NAR3 E ZXR܊ybqKđL ͔Ds-\DL"8G$ED` 4#Q VkA\#MpQ&SE@wG08^9={ә#+ȉ B4 CTpPp4SE9-9*tI$YKTx2J2h7.SDRBͩR+eQ2HkT+ *P@CRm5xj0xU:X Cd/*[LQe:k:#}όb"fōc%7.q#3PX#"L ASQ} 9(s-W9Y͗SqZCQڔ]!#WчPVujZceEsTR|ʴ_youp"*sCi!x-LPIĢס9}Q K;mBU\KVQ1Mg%o <@-}@SMZAMٱ?J[\G"Vk$XiAE,!H [+,}PM)Z3<aac7DsaLDEV]5D|]^^ĥ]Q98Q`P` pK*KA9 MD(]$57{[mSU xݨ*u̇Jm\ `:?ʒ=&Zx[!}7@8*1S1 &^`9QÍ >AdQmJJt_7a`}b $v=u1Q C7y7Qsed*f u&ax2(ږ([0guO:8f47yMm"l[gh 'cBd[Q> Pk Q;1[3o-ܠmIFD6[=V!VM r]"!TKg&ST3HaR<#[i.x&\6OaZIڗTQ)6M_RD3f2V01 c`ꘐ4^&#jSeZf}%G=xg4g*FhSWvZY߸xՕQ)kz +ʕQmhRĵ#926[ "`8m)΅U&v#mFGO=vil:pʬjPameTЛ 4ѕpb߁ Ͷ;ı@1X-oZ$4A1v^(c1J9Nt%"aީX P >~IX0B)J! ۱L=D8puE &9ʕ,[ ˙4 cmLPRDe&} 5ƨU6Y 6lX.4(6mKGeD頥-5< N_A$oҽUl?8f1ɒ'3f9fel\; +4hs!n8;ݼ{ k;xpftdJ :qz'vij{>˛?Ĩѻ?ۿ?`H`` .`>aNHa^ana~b"Hb&b*x!r$r!@:c>dBIdFdJ.dN> eRK <%RҕYŔ \-CLI& $@0d5 iRc1#ub׋e5Veqs$cYĞYa]C|J 'YAt$*jY3B*Qb桪Kf!2J0*`bTKnkZ}q2Q4$&lwƪŲQn^d>gK lVHl4+:-e\vKr~*r /ILPDgm;.TGm@ˌ< spm2pKHW r& 0ݔ1Tv}4<3aݓ*{R/m&O'4q%Y x7Gko6H5m AKֹȡMzVyʨҀ]p˗RL<7B↟_\pAub{WQ"O{ )!<]6Έ@Zl9#$ZGnycCX+KkU鮸/ "u@v|vUkp| M#c6*H{c6vpl o5ȧ58`qwSG4BFD|K;ڃQ1 c|6Q,,91~l,9T22hoJpx\G'CZ⻔Dx=Wz+]|f#͗[|'Iijr #e nd8zDp)!kh' Jx~q&PIT$ S ;3}x1Ql1*@P`tuYTF rv}MbILkcE:r XAŴuE5kmCҽM!TP]G)ՍԑY Zj9 [@֒Zck6Zr0ƛ<3p6W+*݁iBY.=)OJ:纊"୉,>htEiAI w\`z;RH!lG S9ِzcNtZn,Wm?~qNJ\f+1jJحsK3݅5"Lj;U~Ӌ^&JyVa%jkXM4Ţ0f5 K m.-5<['ҧK#jhVSh=Պˌc4'^BBZBKQ hOJ-kbBY<K%9QvFF'jX=p(]tN ڣwvad=/V-/_tR3 嶡ygZŦ;iY TQDct"Ek<.%ِϬY;ųܐ/ztMh |mC/,0hW(,Brnd IÝ!|{5\+gyޕzo=]m9Z0ԹbzSy1woI1ys۝mk-,An9sw+6[t lC~إȱvjӜ0投\ۊT5k#WYa- Ցyk+o]kdQ_y{3J<:k̀;w%0q6a r'/C~"wᱡ F5To=k;5, -HOmvOV`?qɄ>ttpOڃ v:lǭVf[WTu#^d>l"`HQ8/3UCnJ%lt%P+ 0bmewTDRyT9nTFQp/ mk~Qfl'i|etDT7:3&foMf\f g h@XZcdabާ'& H,f Vb0>xwdWWY0hITmY?Rfu|.&_2]TZgNHz(7lTh&O ${5GX |XH:> %gb'QUxkiѴ\sw[6OR S嶊W7d~xwu3rLH<%>r8Wcpg3 QM~u5 /7Ad3`(C)H0 xf0bK>ba:kwwfI =h? ,xepFhq3/h _T1YO1A_ eu' P)#Y]Io)+%p)PlUrIsnqQ:eDRf-tqqGJYRp nqp1H qH QG ("'mU`s] .%,(s@3ӔqA h t- L=D5)h SMsustLС P"9&1W LWiSs=Q Hƒ)!HK/ TP=K7NC6 iJ]li31M-d`j>{v8j$>פZ èF9曯Y?ԛq 2i9v/GOىJr 6E[Ɇ:TIi nvxRc^C6KzwG#bv vXpQ Oy&Ya#wvUPE11Ml~ uVDO8z9YBxw{$5%9\%M;~z?4(FǭQ A=vL3?s5ݜxGG3<̩S\@cbLc@<dԬBʊ@18ϼS?,r +<9`5ʆA;GUBB >Ip|pH{)s:Ym0a|8KdtEK˨ĴB0{:] Pd}ƼFvWJte{_ܩS>(CRr1,iF5[D &`Nzm@z{ZE=%-]\痆BV)sx J€W֋zX FoCGv ha K]gVT )JvcXQg|T2=2L-;S:QTT0z]ޝO՚t8#_,ͤ9?pixw # > êOUkm--;ƚkQpuσ24"O9bNB5n+ͧ#z #VT i'kfPrRzOz8+r1Nn9sSN /nI; 3O/k wHG[}ъ6nq *N,J;m$. 6R(zެU+sWLnjflS͌Mg `l eIЂ)` },e]tq[w0ȫuTȃ~eͽ;,ΧR 뎣^"Zdka G x}Wx㐽#}LWfL n6I>O5ިTe^ME% DZxd-ȗNm=(]¦-PEAYajҪ*/|H]Wflqqa>XxZe)cBF ͖Mq~wM9fٻN~tX;Z<LGeSݺP1rshY+>ܽF+Wu[WX4~b @W'jPDcopZvzgv=t?_5!++mNɑnVk28ׄguj:lp1VQ\,Ok\l_kh1%B4Pi؞:9v6lpKSO0)j\q/>3TN&/eP`nn  5Р *~aE {9@i8jplz0 9$ c[h1 YPAĹݤ(; R"80ozː99`.hM w ́ hS LSH2D82.!ƤĈ,GՓS#\3ФÔX1$PLHUG3SX1B՝͗gQmrܚlrO?^Y* 3GYtOCIc+6SꦭDݻ`.KU(`iYnJ":p^juzB!%/La 5}]Rzvr_VcP#@ aPA( lUtN<.0NtCkd8č+2m}y Z`EZ@E9P0v_,,K ehA- %$C$#vj mhE)uObS6ey(NQ 'h Z֓DAjPM@uUcl@j 9BJ\[X'-< aQ :VrFO_78d 8kIe)O3S6D)+苴1x5yNjd i@8( `u`}|DxGrz.DtZE=mjeVc:uiQ`nny4pG'W1☏kebnJݖ0ps ˝+MmIm8RrL>-$ \]JClse1V$'eY~^VHw&1HuFmȭ9lFT{a Dp]Kpc>xO" Pf14= ;!QbTrO)3w62V@4(px .ffu3MuV#:o u#! #<4Xг s{&H8Y: |C+W#Iф;R?]x*9!"R 4&3h`41}=!ֵHr-H_oRj& ?ZCSsC\n]V!2FZ YvEFo`b>ƒIu 'Tಾ w. 2`F̐eEixYQڊ[86Ȕ;_m(,`Vfng^w g)m0\fܳSF^Ӥ=Uٚ,xjכtke(ӟj*q"?.02ܝ.v~#D/ufbq76H|I_JQu+@27L{Lu{G[ۿϼ>5}o{'L? }:w{*WԏsD$웊)tn= >BopPP Z&܏pQϞ&x3P6a/\#;J0W2.{7%Dw{XcɄ߯oL0~gi NبA !  P ǐ 5̏ΐ.PPQ Q#Q'+/3Q7;?CQGKOSQW[ɀqhvXPfW tp$0nzqA O"' iO$ NkŤl /Wn0da!Ϛn5uQ-OVq˔@ mlރ RQdrpR.R&Qs k(ܮO$qoBbhRX {PJ~8 vk 65R/ Mؐ`lO*]̂#MJȦ J+R&9*2< :*&1-(R"RtDT2gQ/ͬ+0}{xp+i/2)}njr(A.:&b 56Mb]d-A-o,u2fs%0` #rd&7I/3R|# %5`7h^&J1%d1:w4`Ӕ$!c$L>˛tc!H 6iJ= d5dJ7RDS$T w(,!.aEWz&2+guJD~F6_lv%)ylW+9a}(#`̱Yo2iSL 6m68镐Vsji A{ui!&=G(^V~4kvGOf;*"؍ݸh'KGgӒbBFL ~GϳjhF=cwt)8r‚ \T-[e",ņBpns xqize{.m19wx[(E e~ nv{fnMcqoUuӶ&@XM[S1R 2n8쀤Yk 4|Tt+Alx ً288YA[EENv[ݤHǜ-Ֆe…/|x}=ZVxT%¤pw@[\$5\7\Mn{ 7] ͩJ74[[#W!*Ocr  r4:nm`:aHսPN MJ#Yg4l:C!e?tN(V{"Ib(Cr2]R@g9b]`ku\UЛL8dB%=LT #S[Ө5H}F_I%S$.:6VU.a z :0{R{D@NsY!}oZ{{*ɅǕ{Z)jIHIuMy%}F;(㭏nrzL9/((@v_ڲ Ykc@G[+0;'Ӭ˓后q, FP̘ (v9lۆ#f,uI퀊{`b<y8y*{ auJT؋‡t&\¯I{;2ww|b㞬T)ſSiplht8қx 0)h1a9#ӻ|/oW7 (=.uI4֭eAZsTf@*ng;xj9{4xHA}MSew8=H / =4i­#ڟ$&'}ܝD:ߐb*]tr1 \tR5B5J :]9*EG6~k}Ɠ &l'3!3pNO2ft!I $۟Rqx>EBϏ[IqXʮĪ"ֆi|(zCxJ=ֵ;M#k7JwK˛*WbTﬞ^_* %S$*;^C&Sj RТ/x9 9Qt~oj|r42$Wj qboB[8<6lb Q<Hn+tf'ZtLgUu^KynE΅^ cȁ %@L!)m*6r1USFP DY=US^ԜQßUe&`bۂFc!Z!Efm(Tb+0@W&3隠%䐆!raڅp@$#{cr>?,GB>l,lNʤ>OSrMh]-xC2(;0a[EI2)rC@Y#l3Z.'T,2H@y혘ĵ()p d)y?d;3%L-RYn,f.G4]%ԼiqP* .IsDHUpY ,*߸K@>ʥcW M@-Vf\3ϒ(m0ዛ^~;p^\QH=FXn;Ǔ/Bcu=i~cZol;}q5_rpĞi O~c`sah f )0|Y78-I~x(b_.ϙ" F2Dm 9ކKWQJ9%UZichWjԈ[6l(8&ey&x9x%%Niyi!7T(z͉( ,&Zz)T2jr u9B*:+4)+ ݫUwN[[,:,J;z-jʪ`PZa[El.;/ڻ// <0|0 +0 ;0K<1[|1k1{1!<2%|2)2-21<35|393s{а"D~Vb]edʌ8\;f 9AO9Q̜3ȼ A-{|ϞN_ *{J~tGe/^󪧾T=Ym >Lt& ;{qJ^@+$<"CD1U),ބd8o {|v!qJ3V ̆`x'Fɉb?*Ş "rتv0/ruLdwᵦZٸR' `.2 0rSFjKO#K(M~q 8`Z(Fʌ*$h*IYf ,Ղ$ka'SU6 `/x(ydzfЎYVZGTڌ7?yI[bAD2T:hӓgK acyH[Fr¦Pr F,'C0RN-20NC\G`Ӄ))FSP3[B$U:DGpCA?=aap '&%GGO7$ QNn+0]\luvDɾXҢȣDsDW%pFx ![Y65P[v;̔EoXµ~e W) X& X8P`N H]:[%ha6JO:Ye"CH7}@-Jo,Fe=&`@%|gmIYF-X|toz(,͗1{tƋkc3 b_l[ܔXwnWT=q0x5yq3aH#/ Rdٺh8nqlj0%'xW_r3Zj9əV) ݑV-Q-!?ľW kΠIaN@]t 5}ܢBK^ _م0 U١Zڄ ' 0? DQ۫%-av,>Y!ؗxHamxF!AقQ_Eq?pZ\ڬyuVDX`[#n"3e"u ἔ՜t(b`H!:`+xS)"qZ!`"(Z\ւ WZnYH -6^[<^4)ca\z #@er`#hq"IbcsC+c!Zd'D>n!k ,#B,t41c6-8YA$=ٕ֙;9Od6lFy[G!bQ%ފyQ.PFW(.cX謁+}WP׋V+Ybo| UNce$IJcx4c|b*$tNV%[vc?"ELD2iTW.a{dmW#%B9? H:̅Ժb20ѕ9 H&FF>宅R9NJ%ޭ4$j>tf]RU[T`EP$~ ]qrkv"-\\26ڕ%~wz5rgC6C{vO~N}VYچwf@%S^[Kj^\:ѥC^]bf^6 x~W~D->{:EqUuc :J'FfEhAgmC ;vxހZeʅF悖B\dFsh@{`Re'dCw% ) fuؘhp.iATA!BfJhj''z 77.qCRgB_ESɡ^(0Xl֩ObB2~(@`"'\)HB"p}N8rcRe9jr㞲zax4JiAjtf-'aۚC)gTEe䭦_e޹hڐ_chƬ⦝zIe% +vǜ_"RY+ڹV?%&+PZb-(l zd/XCwlBM'*b3VW-rF0*Ѷ΅ oHX20j !Ȩq::ܫf4,cvz N?R龅\x (i~+>d[M+-nhk2@lG:\l"UV& >vA ly.GYTIr8%:D{'uknsZ_(6Wgqn )0Gց,Nnz|ld; \WÌo~+ %|<ϝ~~,-M;E6gN˗Jˊ9>ڻO);+DZpjt:WN"j/wקȌw{dll[f}⮴}TWG~).,J{>>)|+QwF>|QfGOΫsDr^2x~$)cFE2]HPgia;'}΍z쏾z%-@8$Gdr(`6OhTT@8u ,D `5@f0F;0:"1%:EFGHIJKLMH B-= V"ң _?_"υ" `.$C9@" O%k XVSqZ >@GQYPw`av bC'T5 d."]ə Ċ<h44ȰTixLXHO0ʣgI2z\z! GIXD͙`0Z&#` @фn)qG[qΥ[]o?U2tHYJJ+D-`r>I2"5WV-Bέx&fg9 /z]pt b6 %wzK~m_ʍ.}3Of(<,AlgޗMXW?oN{F;*`"Q%$//TpAtDkm (+ 9MA` *1 N02?c?tl"끠T/D!-S1? Z CR?FbBOZ$g]Qq%a$x #21F\Ƭ 1 KB@u!ײIF W`vX ˯Z=<d15>.sU-*8(I9\TĐ/7Z"G)aJlO>ݘYY\NE":Z ipC?ϭlG Xm3jؚ֒V\%@upaa}/e[GBtt֤o)vy裗{@S{؃wdY&m@MU16bs w`+2>: [`'L0d"}p  E ;bTײpmofpaʅ*:V» &l>^S3X ?Ol%QKdxlanV ؚ:EFMx\Դ/ЃXZ=7,54baӏ׀ɇbkD0bqf'10 $ 'e;M IpAYO Z֖LP|)۞:e-mY'/XMzYf]΃P`!I?;+ }g w" Tϋ*0p 8R9Y&D}L=S&2BW8rW}iID0"`DF.۷6AM!f'p,oRTH7="n[' Ҫ(s:̤3i$ 3`9YĒ?@9bC}Bn#pQj}d/&Bgo_GpP.՜$wwQ1vP*SjƳT,ğ =lh&9(rM MCu{",iZU|BXa+)ߐ ?e6TV]NMۡAvN ڵ1R%GO@woAʝVRiWM")zioq!` xQ+(L>Z1#2XY6BN"1<_uo۠J(n_2nz`~q},?Uhw/Y1x<UK ]6L^]$# %sH>09f+A3pQatRE54 ī2B-dЀ|GRhֶM3ݐ~F )8g F @wJ1^ 84*("O>zqlB|h1F^`93ɺGbsh%7$0-%ly^ 㘜@SEjE؍F3 hJT ~p$vP svNWdMBMfjf'`α@w᰿*UE'YңyRM_>lPܘlּac-'USE "ÓFΉ0n):W̡TRomyy7 xwڄ]k6c0@-RghG*d\48g G̬\ۢ1#cc9;vn0:zthvLe[IqDN.-␼++?Alza"_:qn ~xgysGjg{`D^J-&,U G'[ v)/\+1G?-?$zd@xI*: d2C@L/{AM@3Q + B"AA|%$)A(B)*BKA'%tX@8)B3<1-B6lC7|CB D`!4!C+CADB,_5 DCX *-?DKD T `FDODP EQ̋HQh5YX7PIΌ>՘Թ؜؇8%  ء$OV`Vt51YG0C*aX fK{YMi"F / ;ysHX6V^r Z=P>xۗzbZa|k-;ш*]O zu#mpa9ҕĩђX#YXOxIX{]p{PL,pmO!+-78ݪ-9+|s/[ !0:me]ac},^l9ީY4c+3@59ɳPqh~E1 u= 1\M C:xZI>ڥ@AR;•[:]p֨"X1 >a6o\\ ^ x#FΠ5DFZ}>ݽȏy(#-։Zy!`8f'- $+]X`5b3k37c_LgҐɨR\ ܉aEfdakaX%XC LRb5'bp-!0 W >& ^hښ& ")\ba#b:b݉A:gKkHUY@gwWov])dg2$Ki.Yfig|v\࢜JZ ʼߎ2e2 3ښY60W0k.2%xS4&_~dWv HpA:c jEHz!ޑ6j0vt5X5L RfhtRq>Zrk*g9۞@5P]UQh:턢n03!գ;-z:7q*0.ls1޲HlGȃ50 ҟ-B)Ke%nת9h> r\nۜ0)`N־k`>aZ:t%j"³(`hQ2";C%%bZ 8v k S5gs{~ι},+"Y$$lBʕ/.Ȟ+邞o?cFZO A* m.of7X^8gXrIn!X@D2`~f(r&jN('u&f~¨?.ss@?q*$>)pVBU;BjTq``HEtܨtj-tLr>--9r#_:؅kC/pqt }Z6wBU1ȞУ;ٖ^u-6,-tz| wLue(:Y?w,{Wsyb)&kٓK)qj~Xh-0F .fft0oai?o3J ǰa !(pHG2zblsX@fӸb8c12<H Cqlebvb]Dhbg\^[Cm}YFXRtbpR GBzF|FQ Ѱwץټ`XVH { sIF% 0EȰ0w,&,ctU|` ܈b06`,YC^LHXe!8Br|07$j0'T$8)QW'M5SmTG0`KVCye-L0QMvo/_AXR=Ƞ@AfU>q0!W ,FN5 @P2]5GWs;4@tl_F)E߮n;Jo͜Nsd9H@z+͙`pWƥSV|b7aȄux*W)ED l2H$aHN-d-:)P \ě*F9J2:^c0 Mpo(kO-(#ΉbsM:3J$ &Bz(M'y+! jutC(EP1 xjp%jZ v*LitƉTfUUjPVq`$ֲ xK{P e<4bTNRe}+YW /)†" 8aX(FQzd53{Xn螒UfGKҚMjW{ea] Pͭnw pKMr:ЍtKZͮvz xKMz|KzkTYI-$B~]:uY - G5%LJ8UZ$)!J0U(pI ȉHvؖp)cػ#1^e|n1AE)2 ,GtѹQMFcuDȫ4_DטK њԝm).g/nJ/b:59^9kEzҬdH׀F$|p4G{ۥFe8lmR JBD~%N_=ff9( p`Jx_to+z~2&s]8!$p. \@3}^LCFGkB*VWBbqΥq_"8@({sΊŜA8 FGtM qlOqePg:jCaubR7z"y0:Zj 4KnD̓/ $WVb*w실Mnq'BL_er>LhfD+ι^m-LHtq]?#5"zr _5/rQ(8.0:jF#E3y@rƀV;G~t`jciU.Qf~c3R $qrrz ,hH}:R';2{+ !.5%VoCgQiRcwBPbZ3<Nx+g R"a'aXNx26V({Ro] B1C@nH;G|o6h`in,c1>x ]srpd0=+/@kiȇ҃|`'aHH yX`7i/%m } oʘQbñ!CvfB-XeFqX7(<#b Ebz4UTDpC.QB nHoɢ(%1=12!fqL0wX%aNI9i&*/d@wGqxXr/mzMGhP8/aj B av-X~C k4~-aV-IPǕkBQ0tY0Yٔb&<D0yHhg Ha h81/l(xitDT]*"CvFٚ UwNfSJxڕ?fC?Ӥ|宆Z| VdH)K%)0aWmiwORB1fyg Z›6p< 1P}UpأJ}* W**4{`q9"KV9dÚ)"+SԤ7m9Bdy飱8;Srj J-e KsZe5ס@<*2P քiڳU 9i嚴xXZRbkyZd~RA-Kupʺ*FoXUB۹I:s$oC2"qIZ|p+7yA?TkC [ADّ(٫Gߛsի'Jze:KqŨ'1N0+=ҙR˻$R(w'0BI7 qpfZ:)K@$/uKSR%R%k԰'B'G>S,A R*Z!bHKv#b<2'( Š4~b5rQGg*cJ#N2&8~\(r &3UB+u)QE!5n%|EE'HLSV+8SwN i JJ@N9nl)1Jف:t9R686~?U^>Ȃ.i6JcR7h-rSUISP2ü>#G;d%8b )4Sp>uY8Hx) =QѮ:FY!rӾ]mFFн#ҋ"Cw tC@AήKG /g `9שJ"d` B equRVW4˿I?9LKEL=c^~ ">$^&~(nk5b\Jϟ5Zp$tf;tH3)%@@W EBI3H$yfUHHקC6tiiǚ/X8,O1Q+S0@@gqںBb燶հp*U>n3|oCԵkN3\϶-P-oNU P'%43竾yHs~KeΙ=.J~]nV~6s>>X><! }]z?3dy9OՐ`ܶkQ #ɍAN%/T<j= TLQ%*Xt ]3f )m+m.O/:W]>H1 ?JTQ^+ nÝ!S9 2Qf@4Z i~!w{ux{@u9lt@ur7znozczts:~>M`t47ubt,GkoJ7:K  dEgсw!z7u2ztiۄ]Av#sxGyY;vQsz&{s 7iIp ksx,E>B$ Tsb><%uu`J=lH$0 `C9\M9#ڥV*ri9NB,}Nrq@d \0.& ")"Ζ8Y3eṢի_.lȵ NcK2iJR*2k~BXH0x20" 4-:HZˆt&x3f y1aKaݰe}ݚݚ_(('^ޭA:>;ȾjxӠ!{͐[!"< |H- 돞Cm1 B CдsMW zxvX3[:+R䊑("=={.s#yWz *%39tE]ylteMMA:}]um-(VID+mČ`p#}^lN yXσo3cV Qe"p 3;tUv_{r@"H g&P-M uQj$z~4-U]C+c."kf)ҢI.ˠhHڤٔ&;+IMlɜڬH 6%+IJr,RD]oIEh)9A?&+(A%Ed>CM~ylAa.I(IOk >[Nbư1$Y!Z)qco,=c6\ZO[cPRA!1kf &2͆iYfiS nbUi *UL'P=}YXJ6(A$0]!kQɎV]DҎ EL5Jjx.ժza*{d4-fT8[ΤUbJںe1N*τ+{׌)MCTT*O)*Su*B]lU H`ˤMxU5~"u)`uW.q5Ud:p u@6aXdkvsN/ h{CT2.֫dϹHٴ.q .|Y . =hQ"KC5Q3Q+]g_VV187ymLmR8~~x1K:HvB&_gVBMɰ/̫cl\e1sg\ǬL>:-7bҰ( >4 G]cc`Rwn$@'~$vȺ&'麎GoL'`QYsD8{sg|_и}\1[xޙ6bx(?rjqhg26umqXW'IqTԕUu'|rKK,dEd ^'i s LTΞVl}=.;#K’?xMYo `*/b"*pb%yN%DH`,<`CJdVq \/ng&TȪ T &%8H@6 zOO6"s(zĤԩ37j CM [00 lz?XH06D*/ڔL}gi5ޮ"ZbƙfZ"Cg"Ynb %R0NFQPF(m0(b &;%2JOPʛ*&]r"#L rknŇRJ<"*)Y* %MNQPA呂(t:B)z *a~(q0B%I-#--52/&*./E% 8@ 6j KI1"PjR,Bu -hOܥO@6' P^4,@7Cs#;<`8 %!sOVS-&S+QSlRyĬf1W/0F(!3$<)r爃G\)z2E&?ӯRM5;1n*@R>S~ZFnB+ò0!0IĨS+e(I،iM%sDt\MI7 \Ljp<|z-tJKt tpe"QLt”D^FI )3RML1ˀ4K 'PLPU RKQS=u+tP'URSTQuUYUtKa5VeuVUK2Im5UsM11ruXXUOXuY GUYuZ?VZudruU.u&WՔ|`TBU#J0Ϻ]]1u6^Vi1TUI4__ [6`v`ɃX]uWP_']\sub)vb*6c5^vc=VZ 6dEvdIZIq=1uDMQ\h9cifmfq6guvgyg}gIhh6iviii6jvjjj6kvkkk6lvlɶll6mvmٶmm6nvnnn6ovooo7pwp p jcca26`g$wrfiRBvfU/i|p^AR+ו"Lu0438#R9WLYWJCdRLWuR5:go7w=L^nҐwUG.K:ge2`g^Xr"z.|Ohgc= tWN5 mRQFsY!{= KuVU~q6ۜ'DVXIg/ b@NzHUgC]XGtvW(<7&pP%Wz7F1!קgUf R5n+G~' (!䘪>Ìf{zY5v8 Eyu}"Ü})3:M.XI[WX6:nWi/R1tV=i€!Uɣ bՐu._gi/El+?תX7 9YͤqH5= <Ɠ;šf$ӕ}HLHУRL^3@Ee^Y$& _C˫ۀW `b5F:2?e<37۾OҵrpdhY}#|'lS9x]`>Y{tDNeG/ hlc8RGIprD8''ͤ8 _ƃU`Wd& "$i01(,yU%hXZRy}H=  Q$eL^jd>q2.B=$zUf.R\:axbE)j! :2ٕS%B[- fUsMr͢foC[|yJ?`+8cʜ0A^q(Qi6-%#`BbIE'/3ANF cM$:hoUX2_8/HEk(ư/vKw*WIE8+Z;- q~xH}9Ss'$?>"r/32h88N~1gWV#e^zE4GwPt,Q;\(ZcxGSMSj6qvxU[%dCo=Ӂqy` cxōq[chbٌsyvuӏKn-41$02b"J9Y7%eYh&PE*fXHnfIy2(H>ZioFNA$=4.\hZpGЩ@^M32~ߧ hDžwdVzȫn ٙ >Vj碛.> 8EAB߉PJn$d<Ҙy!GvWw?)fD{~11*O QV'?# >˵v(Ƙa+7չܛqTYA3 = 0}(TCOBkZ/I[v}5-|p^(5)6TiAu۝0@нh{vOc}+?5%(~'mw9kb{i(3B MH Bz$FdvEd젚 z&z.J!T0N2Jy{6ԑ3qaz 4=lW}_%+6lh*ƈc.G4~c1iV%/>9 7' <IB&86i#Y]PN)tEgh&}Y܁"V; ؓ*WsC>ks ՖQ{P(j $_mv Ѧ^d95skӏP<4Ј !_pB{zhH[ ҋ3L nxOJߋCϚ8 2]܎8@ZKT<惄B8\H4JadA`Ro{nlQ?Qţy2t4n9L;0Ugɦ&ӞMi:MR'jT~GD<4*#0dM NdcUĊ|XNňij y3KHgR sز Z c.6|NHP"utA\ݭ# 7laW|\YMqȬGJHpXeն'qJ)0Kl:{0l-B2fZP! eje 0H*ZJ[(1M:"/UF0]bJFmm=9s$̥7Ĥ)ޔ $UJ$q.4Ȃcbjȩd=´.j4#d'H.|UD݌cIB6z!;]PY%'2Z΋nIE7ܐTlj8hk\̒8E!yDqfPx2b:݌;)sE5J .`V2Fp2&~ AK,D8p4V ٌ6}':d\QҭN)#Ns)U:NEv *^eR3l w 6~xS-nIA{=%G6 XYQ)&wh:z IN.8z:Zv36к- Xs ]%W*░DipZn8jdhn> ]&(sG.cwtq] O Μӱ Ej/ۊA4`!T|BŠA Vajra1`qT^a~᭕aa΅! a֜8C!a I:Ӌ`!EX5b%Z%bb&j&rb'V'(b))b**b++b,,b--b..b//c0 0c11"c2*22c3:3Bc4J4Rc5Z5bc6j6r#Y[7c88c9Baᰍ9c;;c< ܸc>>c?b?dAA"%*1TOBBdDJDRd:ӁYErdGzGwdII$Gi^JKdLcaюLMdN2yE[OeP e,f]HP"eR*Ram0eTJTRJdUjVreWxXeY8PYe[%Pj@[e]%JRn]e_eDf(RXa"fb)cBfdfhXMIebffn#Ijfgzg&#>hfiifjjfkkfllmfnnfoogp pgqq"gr*r2gs:sBgtJtRguZubgvjvrgwzwgxxgyygzzg{{g||g}}g~~gh h"h*2h:BhJRhZbhjrhz臂h舒h艢h'TUхtRyF<^f `#\kBiJipGRpAg,GdLni [%L隲iET]ꞖSt)ej' rIUx) jLi*ꢪhsrݘJO~jr,z4Ok`+J}XŔ ]M+8DN\c,y?}@ٿNBmJ-vziA!Xsc9\EP5PfR= Nܭ,TXm\ʀ-T` cXMN$OݖgX "(}5 $* RW(׆@Nn"=i Y:LUڒn-GLS8) B-J`@*Ԩݏ]L]u<g\Ij6n&ۓY$2IIV[iQ?e5PgJYASѥU`ێ%NZn*l74AX>lo{[Ľ 9%G-_ C*6T(n9MU-LXS@Є\$n0&MlYu()`рpkq/6hJ ~Ғn9ܤ`F-$p=~8nonI9 b2=Mltl#C2[VKJɜN/ ޑd7VLrp$rtSEUV1Aʡjd2$8qI Er2+ Kr. ï+}r68놠J0O۱̘,'5,&'S4\x%)#_q?-?3-pː141iڬSgr9r=!7T-QD/$dMPLtI%#4~mBB:ANEN%%=E,9T.=[TDI/PdC+85qN5d4ԝ܁BыCZM\.P.k쥵9c2YW`S5,^+PjWwBz/_:ʟL9RϨ%z!' J+ ߬cC)j;M_-ǣnsEG(;U/OZpfpSy/5*ᪧ{^!sJyo*`K% 򋌀4 ot 4Ϸj+8TlR6'(] mb,Ž.»~vx4)#{-tl$g0Kۍ80ѻǻ&5 n8R/l|j C)+y/3NU#PCE4l:cC;6dң#;$8R6{SL v9j;04@BZ-JiWس,LeͪQ=̄}3Ud@5"Zj¯WQֲ?DUݤ!7:6 h4@ 5b(->= 05QCxZ=-2MkLT,- 7< .ZD iP(TVg:m72u ai>HQKw^|]MFc[hNi RPކ{PKVA>ٶ {ӹWIqӐhrAqZX-Zwݮ#Vo T2n.*!i}@%uڽX8:UD¾YZ:{Q71 q I&`?Fl.B %@@f'xl#@`hӺ-~qHut# p;m&gY8U-P+"y]GYR74:2mO LG_Q b`Œan0h0 eص]˗bFX$v!X>F'G]7JCOxܦAF41brN+G9ݩG~ӟwT;yZqK$cn$&-ЉHbW YGa'>Y@XPJURHRUQiW1XFAI ֱH SQ'2br 4%(ƶaHDM-XVcԭ]aQńjeX*ԒVZAd3+ Zѐ" D+@B?%;YʢA>} EF+!Z6e#?Wcs.AJcZYɎO 4Lej!uabT]Qna AWL;a`G"Mian8VPIlp h h(X@ak ϦtmR"V ^*'AzfpqYt #])spk!-:4SZbOd^N#+"ŭA?2M , jCIX̌d{8u|~Br $#\*`*#tbgBVg#e alimPz! < e7ZOhҗ78ķ4H]WG7HcJl+Ưiޜ;=5|MI"L fRzI 05iwP=ÚLIDɔNdAQcn6 WKT[.&Tl4H6oN9"zf4VkHYT7O\HԭV^U# .XnS6#<7(L7ol|^a y *=m`@&r38k@P`LvC KqXMۧ65PvQa;R܃X݉Mg=@ft'`5|FWFI&N V@ f!Ky@]yj#Y9Iꛣ=6p`B>%| )xGo:o}D9 =z1cDz!A 3k{@4qy+5Nl"qXKm΂H*a:uh/&7SyP!. ;C@K$ԛm)sJ4aAAS% @s$ 1/*4 k9q@.*-sy?0 rG#$02);q @ @B6%3,0lB2+Ę,A/#s;-q(TTUl#`;ts(E F<9<㿛04z1,&hakF;j= QA@k8Ƃk +Cw >'&Z:j:GbGj:kt^2GzqD 6}t|$G,E /Fc\tHh.n1X0iи+ƖtI~ :]J{I GLLI\0h0DI==Apʛʪ H )J FճvG&JCIJ Ӌ);Ƹ;Ԇʜʴ˽˾<<$˗K L=żƄc1ĴL S6$d9Ԉ(̌LӤڴܴl 9x$4DTdt$4DTdt%5EUeu %5EUeuQ !,Ǎ<ɇ ˋ8BљpMh@O ,-P±;ʃƠГ2jM̆JOӆ9:SRܞbh ۿDx?R4v8;eFuG O~2E l>Gxz%mkpD= hC}SEͅUeV:+,⬬0x͹Xbl.8\cM5WUeeV5+.JtV;T\C٨;m]bA g!T=u6'yR>Z UәaMBYjM ;pmz 0<#W( (9Ȅ#F}fِd )nNTZl70[iz*|+C5Qe+dXy%貀zA9*X5>8P@2ڭd KADN09(ِ_CeR,%?mI `Nn Su*xaY yܨڼ C EU*x6L:F]pQ/ (k a\ Zrc >~X07j=jQ$b?MY{XTƬpcRdXfcǻdvd A挢]2AE9% `bf))ե[OH72\cg(35XaBCe_T-C_V䱒ǥEzGecB:TM.?4JH4B|&s>;hvkfj^ʥC;/KZ5VVrPhz瘖-2d4;hh{2C>Eڑ !aKR*bb~d#gUT!>V>bVkmn÷^#5o ,1;9ݕ߼lZZX]"jR CM, q8*Lț^"k^Vme ;9Eymͼ Ef$Ʊ8ǽ[?vh)C(vF: a``-]Dl#OLS+$ F ~`vov.wm[o-ҪiE6NX@'H ?+t| zjQ<1_⢘](3gGWB 儢3k~0͈۾'\<[ڽ%s]6<.𮶡`TE.6[QŲk ', g~HSal:XōF`<{ s6_84:ZH<'~S+R =>oVtDǥ;DqG;J|.J 9PQMD&D OW3&XYL/ r%L+#Z_v]eVW]l ;f egfwDtijklmnopq'r7sGtWugvwwxyz{|}~'7xɃw{sŶ B'g/ Ԝ ~#jx^7r̽l`gx% 8 O -O̫Dy?ʺȘhđy0.{bW-벖 zؚjIE)c?hh^)F08eC>L%Fh{w{ y?M(Ԧx똩Ͼ!zCQ|=n.ә\7{*{Zy!kFz,ο4g:[{C)CL~Z \d >|=w&>!~f,PMMoBTߑHǬGIټ0շJvo//YUSOlN i-/D}t2} ĢL*̦ Ԫ\,AJd3mv $ڌxGlxukFV#EG&DŧT9$6uuiU7'A* &`1JD0vafh&AI|4qQ),;KD+MxTTJ W:1tmp0\m4+9q–;H:f ,r-mM0 pNgѦ# C#HRx(ϓDŽ3E7f1Bo>X7`pTgDzoI#VD9D"w5 Wb#U+GFZX)ݭxj5qܭvO-,&*ƨNl-PHüV'ZrvjB2:Jǐڛn*%p32@]MDnU>YL x8W=x.$l3E! ùS|"їDv#yUS]|vE5iX2@xbA^!XD~rEMC W zGM18N4.#]BtbSm &`T"a 8XWh!dfw!<Ie/e'6ctf٦uH;:@MK^s'kLST@uh_(h6MHb`'L[I`@A@FQJ +: ]KȮ,?J< h0M+.<E~+h$l9YȎ{*ѩc**tRN‚=GslRHtKGE:ёpp`Yhl 2:AraB:+F du{ D(0L\qZ„,!o3Ù F"z& DEw̛eX o`]ݘ8No!(N a^!R+"PfD*@Tc;;Zg 58$ DF# (T2~u OZ=Z:bSRQU Me,B>Fnr7rJ@y óBXl35'Jlp:ac 1>*#Is2rTZPCiv&{ޗB5ʒ=h >z6 &NlK!#:} ~+ `UҭfL4%E7JOSNN&OPTc- IB$dO.Mu'VIl4 w%YPW3gԏ$6 MΚb8(q %)ڡKP8]UHh(觤rR"?ŝED Ce:dXZ .1C.ِi4UN5IlFZ/(ipeKVx t`M ,^KZ*=tr]H :\h/K0%^6R;Q_b5vbs#)DH[L;lP',}7b)8J7~.OK׎{.O FT_@si"<7鳉 hAwfb X"|٫4 k+۱1:Y‹h7 W˘h^0qW?TQay,m>Q@t}ak()f58 Jp9dCPڋ?bͯ|]_{8ƛPѐ~w|C/p]ѹ.DoNlz ?QS)H.=!ydĭ 4 H?`߿d &t2ZFpU|^B"C]hia<g(6`ဈ p#Q}s"yCJ6F%&HWSxevudYfWEvH02u3x>|p C ob@4 4$EL`+AtFЉO鸎s~6Ԋ(X 7jw#hqZ0Hø"yp@`6ɒ,1EyR-Fu6bC"4PH^VL1$I^Vy<8SVZpci"jQ(|:!DRsSko\9W V񖷷]]Gx%$&12U&3vmrnh G]Y 4O8Y>'$ w%~“)f9?U&k" E G<%ק7V֓Mu*!ovU~!K^pt#A\b^Bhi:$4O9EY}xiȇc3CdhЂraSv9yinR<`cq Q 7ѕy&){eli\z9p^68ArNC2щ<䛈^$&* gşG'pIc8u9V$IKz[Zω Ֆoamg HM2I{s |w['K hlCu~.*tҘ@uv#bj{m!) z E hZn/ƨ Cw8 mƔQq,:z(ЈǪ Xxԩi['X@Z}9תIWˊ**೭ Fk:  @k~ZNQ y p ;˱\%  <&[N KN蕩PJ:$˲9;˳={a1zoG!>KTY74Rr (ĬǷP ti[QP~q$Mbǥ̓]O ʼn٫Q|Ћ\ܭR Z.M¸[cmKS"Q &<֩cAQ;ζop o)zm t< &0)=ǀm &\MgQZv` Ҙeu}cB\-m]׍ڔ|oێm="ٔۀ yΏڽȤ}6;׋ WG١֛m mtbٞ}+؟M ;[D]d+] |>^ bNMU˾L .ϝ9dL2]l,cmN|߬<\.\᧽:Xl^MLM),>9kE<{*N|6NJN.1pHmV| x ުM[ǔB|r/>Hp[xnL{&"- GnCn:Lĥ ͘2O @ҍlImÝݷ< l޿rži^®e2N@?n(lب\}^ʄFՎnl4> "   O/]‘^~ lN'D/` > *ξ^@OIp9W\J`wn"m2Nxm[,0y9~:o=hh?]vDV}Of\i/>O/Wj 1_9}ᆿZ# dhԜ׌CNȡ.J0|ÿ=:яf~.ŲᜰKU/YћoN#@ MNxpD# sEkL)׼9=n;ci oj n kJ jOLI  RSQǴI'MOS/U.04qJnAWPMHaٷui( ZWgL8||owZWv ^xx`{}+FO*f8,} d%Q=@xg|d7/#)G` [>w.B DRpTIE>ؤ@N6lm֔h@PZG2'5f1E n-87Ak4սJ4nP\*юNzJ`-8!ZP,ݗ5hNMR߶{eWfq1v+#^6Ef+V&bϪU[u}kqL 8[ 4VWbR#"ηuh .J҇$)=gRú Ć@Lc.@䨑J?(=f:L( bF 9|#'[P+ͽ iѣ [Zx+:6v`|Sdz RO"tʑ^yRzj:! c)BRK/K "K9&$3Xp :pʲ0:ұNdhiZkݰd =ӠU[MZyb] I,|ѣY,]!S~IpSR*,m'QN-k)c onRWgR7A)SYDV.)̢6:;q 6X_̺omR>!Bzb)T#P*1!5Rx45RȨNIȈM#hQRhg;߬4LfiY5Vu9@`vbcl{O 薻gLQ Mar=ccED={JONoEjRVk_轢Ld#2C5SJ\U"җ' -@!Ex=fBYIL) ÆrJ *ok ?ꂫ w sxq%:GRYԹ"%NoƻUkÍ^)!.\pI`.1W4y$jH(_IX:P~uWx>BC!y&]K!ÕzCfB7)wZ1%3ϭzkDg{|[P7g$VMI7OYup 1zdwOGk-aܻܴVP[!ee_oxn#m2S<%og5]1͈r7]7N =~9SZp࿀x)npn[;x+cI^r<]SuGb1le^9ysAٳ{xJt?#zϥ>u_YֹWj[}3u`]ǜWPsMWc/ڟ:a}gܝqS8/:2ܷ9y|V8F@`E2Ek-(.RNЀiv2.r@(g̐~f#4t(k)NlkP^ަK*1D"Ij@oPT(F0Gq^&RIDȤ0rIRM>0Kt `=OOz#vPʁ0+.)0qTNȨ6#Hp9*~NstQ )/Ep1Ȣ 1..JP Ah Lve`a5Nhl~e0C+,Sg4pτInN \ zDUKR3 8,t'bp5u6@LQ3dӊ̤:!Qa7K˰:f\Npbs-)S7_|6}!RF*LƮА c<Qns>36e=7)&z}v=u,T?'7)>N; ,i2-4!t:w7*L3^tNhEI"D+MRMEk+U41M*rEIب7FFgŀq*w48 HPJ`EHH+IM񃰲lA4sMMf4'1,.~;+FɉIGI!H 8VnI$hrQMiԴ< ($-qҁP?)KsR R,#R4GMP%5AH˜4VE4-Cd#;T”:9-Ao#gu䨑+Gmhr.pbZQAXD d4,$R4/UDpRwJ43"hKzGxQz`$5#WJ{ԩ(Ktm_6U @i7aBS^y'l|ZXc700Go\ ŷEA4P4巘/2(6*_v7:)8ȷ,b#I4L_x;u>a@x~EQˤ)&'-w04b<5j 9y~-U472\Uakd{=ht-&JEfvMfs[g!@W ,57x97փ-*xx;{̑ 6XBwŘ-aAy }'y&k4f j|A=DqB;_ .="(eՃ}xl{S„syWXv)67@l*a&c){Ipvsq:XOT{)-`Ǝ`^B0(- &s eϛ979/QD5xw UPG>y?'o2?E_"Zmbo.bYi؆k94VR4 \BxD\v fdCHv:}Yì7A[:u%?Yv9%lXn.riZvYBgYefHV銟/Xʤ5#6@ɳX쀁T~ a-߲z3_< ђFx2%ˇ2aZd[[xg5 M崋gڬEc0ZqǙŷgs9۴G^Su.oX&g;54}H6}KbnQ'؉է˄E&TywBU&sC6]zߚ47ϖGG#(ɫWp -|ĝ\a̒xnR[#^ۛ\7 U{ɸ/c딹طF}# 9:Q@7u[ý!Ou؏ׁZy{,3}&*--^3<9AAVZƹ֣jbQ <}$ꨲY6 EWˣVbNJ}s!tiGEͼʣb,L_7H+Ī܍.ԚKɤnق"*ݒnDDjc)e\Iqt\ J+q )bzgyA\8RZj,@PUU]ξOmKČٝl#*zeޝ~=%~Ԋ2M$]U ڬ*d&7 `}9U_9w;{B:w*ݣ:@OJT* _rLBAE_ȣy̻Km?6Y=5#ys|!b6It:]Gڞ=i|dstә^dѠJR[2S , 6pFNa k*Ω<+Uc$}E"fy/OA%%lY`Ԓ+_רL0AP"WR!!'`:h«T~paƈy٨*8d|!'ㅲFUhbCJ<-$ d!!\qZ8U Bt# d[E 4J"A!UK0G cօ(RvAg}}xx (1>u ^ 9%B(Ej ]F( }#}hNq4 K&d  CTv2hdKe .WqᱛzZ`\ZPR<H=O<ٓX MA2x_1$TD0G38qUs`=#zV4L9Ea`;i[DI ͘=SV4)PLoP"\1_;)@..2SC"ypգr!?X@|Lp>VUyQ=AѦ6ըl7Q 9 H*e Nc3J2F\W0v `AԮagU)hD_ஙa'&-p:+RJjeؤK!XCEVo=lZڂ:y%[Wa{`\5bz]ǭItZO?]hxq[ZTK'c[X"OK`\*mTpZ~6^^ ژ12Mbz%I(ħp@K3ֶ2v/jԥiey >eXd8%SEpE{ַsm ٳJgcf$i/ ܦ0pO"j!kKhyGx#3s} +Z_3imxGZӋD7ldI'ۆlX A=g;n)rƹnmٖ^S@\`Sx޸ 8\MJ,{'w!S;Dװl(ߒٙ04q o7R5'(Ny$ů<خٝه} 根ΝN\^7Бtma)9^iYf(NqZ(!DH/ݣRˍF6!hB|ipbX> XtX+Jhl$Rɹbfs\o~Fl](߷rGj(֬5[ew>'{RxUVwI8o]gzFB ?~˭M}@$A{EkÇöoyKU{ q/Pޮr|vt=>-I^0V 5 CIΒ_yގ4a3\tB i\%̔ryǹW "bE+O& )8|!Eb`E.h<ضƉBGzFm @ǵka9\!eEr$Ft`@9`؁Z!%P"oi#M%^c%FJ#" L%]Ib)!&+C1mI(F'Έd$^$"0W;,b"żN@"~͢0N#5V#5f6JI!,D!;, pH$Ȥrl:ШtJZجvzxL.zn|Nú~xxswOE}FryՑBHLȰÇ .HŋMq^Ǐ Cz(ɓ(S¦˗0cV!)͛8+ɳvJgB*]ʴ)NJJUԪXzծ`Êk'րldӪ]+۷p ܻxt߿Lp?lrKc/DQYCD8m,ӈP^ͺװc˞M۸sͻ Nȓ+_μУKNسk]2WA=>l%Ͼ}ѫG}}~8zG8phM>4ށF~_|I"Uva("H #,0(4h8<@)DiHFKZO&)TVi%eWf\v`)dihlp)tix|U6'}&"|w**iA=hv ! RH_ꪄ嫴rW֪뮼+k&6F+Vkfv+k覫+k(xR+pIƗk0CB .,C.Xg\G|ت TN9`(0,4l8<@*BmrL7PG-TWmXg\w`-dals+p3*f4}߄{\)&3.98gw砇.褗n騧ꬷ.n/o|.}|n'l!30|[ZӁ:֛*㊃Jo/o HL:'H Z ip]`(@y"LFBꥐ]^Ñ}4\J{ WH"HL&:PH*ZX̢.z` H2hLϒFgɊB8Raa2A| @CbʨBm-)[Xβ.{`L2hN6poLә>qL &h0d#E;ѐ'MJ[Ҙδ7N{ӠGMRԛ1GaU["ψuu%ǧʺ-KH]_"ѓ%aNf;ЎMj[ζn{۔vZ-6.Ð7$9fC]({+~NO;-q*L30?CloBC΄y ׅɥ蕻0gN8Ϲw@ЇN[7m~W~G-an[N'y{`NhOpܵIq/M(Ǿ}ye~u)CsO;񐏼'O[ϼ7{73^#a1okkO](ᷢY<ϽwOO;ߧH=  wyT%|7}ηOo"X@ (9L`2p0*(<   Hcǀ8QOC x6&(`KPLpx (0 H9H+dX䠉Xhؕ2 РiږYx IQz6UTJsP \СOࠥZU:t^6 ٞ xahdZI!3j`ꞥHd:H 9U)J^N0ZJRyIP 4(ahx@^(؂ jwМJŨ ɜIpن#]:i%j*UP\ Nq*=Ȥ=Ѻ XhS`ڬ؊X(ڣ9zΚru ʌֺݺJj]z*x 娥yɥ[(0۲ %Jɭnzv iMىzz5˰2Dە +QYK;ȦִJOp*ڣ͚@ړگm7+axHhMe_zi;8Ն `ʃKP(-˕J N6*1X {hHiʹg0oʥA+ pH{8XP˙f9; P6˻ZRyk{=z<ʴ_JUx뽹ʺf׋ ؽY"Q{JAZRHQˬ SC阴(PV[p&@@o&r%IsnV4ϟF P ,+E+&aQի%hzšN@V: |UNp4+ֻ;Hu{PCā tꨥ蠱7h0_JHe$FK `$Phm2eiܹw cg `w]Hv)NEp4'Z,۾C.iKcO߯G-"1'RUf߁@^t#$vgD 'RgYP`vXZ/DNyAASH$cS%̞ZD!!,)   $h쨾i´Ұ]/{PHעhD&G!0d5a^ \Ψpm*7bPj۸ \X} n^}|.~<8^0G)N:{"sds!!,7  J0FjuG萙 6._I؏c.QMNAU앓n%74.# !,F   $h쨾i´Ұ]n%Q$x $sRDc1 ΘON^颋}~3ur.R~QxUy' @$' aw(e$jo*=>:<A>>R!!,T   dh,h+ðүn1'PDx0.( T=%"ZZ9aJԀ.W5yXL@g |@' :tfPq%{q sjk*<$iW _8IJFB>͝ZD!!,c   $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,q   dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB' '(A>>v>W!!,  ZIk8ʩX'ؑɡj; З-~>^6c)S6Qړ6KV^a1&<7`ִbNם.w"!,   $h쨾i´Ұ]n1Q!LKOa<.%/)RJ*$ b$=R涜(6n'dx Dy'Z3d%Yw_q T @#4n^)8-b.FOvG>>G!!,   dh,h+ðүn1'P"8I" %#mQ QN48Eѡ2L!!,   $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2 s:O!! ,   dh,h+ðүn1'PDx0.( T=%"ZZ9aJԀ.W5yXL@g |@' :tfPq%{q sjk*<$'iW _8IJFB>̝ZD!!, +  di@h,oθiyOﯓ&0D1, Aa SBKi7uŊ,l`ĠDO@,1~/jdWG|&K[Dy1p#x^Hu* 1l1+ RV1t, (_# 8 a*@Y9şgi`Ϛ$C%w|\&/%TJ+;& eBU7j!m!-h݋H! ,   $h쨾h°ү]n1O1 8Pa ײrzmB1\D9hD!I47 MNs|~'yr{`"<k(8'bz#eIFK/=ir8!!,   $h쨾i´Ұ]n1Q1,8I" RĠ%GnLQhHSE9N:qtL$xz@"8:GPu>{IO!! , ,  di@lllt~r>@~ѕ-ksN%`bP=DoaJl/@(e tGk#_# fj#WXy{*(k%x#+h%$*nW= $3#s% )( *>m q*a" D>4č"_Sz/,h'bx !1"̨G3B! ,   dh,h+ðү(io8]ÓȈL.y%bG@NMױryȈȼqcriO$ }5EP$LNY#r8bQpU"9aT=dg_:.ihx8DɻI!!,-   $h쨾i´Ұ]n1Q¡JPKO#D00 S1#P"(J@.Q$T ԘoO%]Xt'_$ 'j%~bt`#n l Zx@ i m4y0P") l$ ;[NF>bBd:O!!,;   dh,h+ðүn1R&O b<&x?'r\BD2x 2T&_SXz6x>wT!!, pH$Ȥrl:Шt -Zv˽^xLz\,8MTC~_vjW-YF}nu-WiCkEYD7VEhDBΗѤ˱۷ӦD J YC@!4!; [J*!K - 0\ɂ, `0ÓHK%OD(pdB I*Hrd'QW !oX ,a+I&=PE`,.Bۣ.*g u%R6_JŅSE$ ۗPa}a}Б1ʖ>jT\EUٴNҀb[4smK!."VL| H ,P戬[_|nGtv(Ɇማ$!x0hb(H⍸!,  dihlpltmr|ﳷ`G,>l:IUn,,(a5E<„q(d!‡$fh"~(8`!d , i@ dihlp,tmx|pH,Ȥrl:ШtJجvzxL.znוM~~^Chnb_diú b4cԻهmxWXe T@=v0ÇXAN"ŋ,bXǏhI?:.\Ҋ˗0cDʙ8sYĦM@ gMH*iҧP2iRիX{PׯEKWcͪ]mɷвKWܺxƼ_(| l$0ÈyN̸Ŏ#K)eln/k~yga?USɨS=5,֮cvbزsm`޾PYqP+|F͟K/!, , K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,,, \I ;ԍ\hZdz"9욒9ux{9L ^~#QN4Ja)6Z-$+]ymύ:>7V!,7, J0FjuG萙 6._I؏c.QMNAU앓n%74.# ! ,F,+  di@,΃x/-_(p o14._M*шh ǥR8U$pD1;Mշj #$+}w?Q$iX"*lM/* Py"] _+# $n_;"- yj hix*% ~iZ {%TIˁ##un k@,ɚ-0'* HJ1Ժ 5 7s4/ l?bHQɎ@B!,c,  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,q,  dh,h+ðүn1'PDx0.( T=%"ZZ9aJԀ.W5yXL@g |@' :tfPq%{q sjk*<$'iW _8IJFB>̝ZD!! ,,  $h쨾h°ү]n1O1 8F˅}s9uUM=@x)"a>= 76 ~De @yu<HI6s6:N!!,,  $h쨾i´Ұ]n%Q$x $sRD%x=XqR3SW肯Lwt.RQzU{' @$' ay(g$lq*e+>:<A>>R!!,, J0FjuG萙 6._I؏c.QMNAU앓n%74.# ! ,,+  di@,kl4}r;Wh4 #]T利J@TPn ֊_gUTb.oMلNVM+O{=};k"sT@Y /hW< 8u<o, K|\ FLb|c;%y< r*@y3;-wDR %ȴ'ܦ9祉h!! ,,  $h쨾i´Ұ]n1Q1,ªHƉq;:̩Bb`l1G*yZ"bD.^ f@#'o[cDM:L!!,,  $h쨾h°ү]n1O1 8@JHe ENT'`莾gc-&Eh5"emio/+|sb' $z@P'# (<( 88"p#w?FKIb<O>@!!,,  $h쨾i´Ұ]n1Q1,%` R pS"Ũ\P 疀0W19p z'~q$ PZwk(# q 'Y*r4Hl{@JnivD632k>}>~FK!! ,,  dh,h+ðүn1'P%:L+O"@rZ0'LȜGw[&Gí2ȝNst|m"'egC(8#av ur}"r{"Ei(?"k.P$t; j7P)u˼>LN8+JL!!,, K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ! ,,  dh,h+ðү*{0+)N!1:%U(D7jL"߈eQTБt P($֔GfMi"ky}zw4'{9 '<xYZ\eZ:6K!!,-,  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!! ,;,,  di@lllt~r>[ED-ksNFDz\*+g1ipB0vz(P#*)WIZ \j<4<+ ;+; ra7]$OA} ,;C KEp,k %sг#b!!,X,:  dilp,nxN۶üoX ֈH$.oN;P$M# [HH9|J|('B1#FwSy+ ,g}^+$kX;+n$+{'zw)(`#[#i+ 'aó5&+x", h, E;ɪ&B"O^}OLF0;i2`a07&G: u=[@Ge2X,9"tiNS@էVJ! ,,  dh,h+ðү*{0+)N!1:%U(D7jL"߈eQTБt P($֔Gfyi"k{9}zw4'\" '<xYZ<!! ,,+  di@,kl4}r ]ر-UM3@=r0T y4db-%)泊gQ(`$r+z)S+"rvr{C}P""*W $X*#,. "# oq$ uƩ"˚9Ĥޫ"#rx|Yx-2%s!Ѓ앢U<{8Dz 47҆͠%8J0t$!,,  $h쨾i´Ұ]oK;^8aS KSmNyU)$J'CV3dHcaa"pqD}C# (+$'"}p:!!,,+ r di@,kl4}r;ߏt$j()j^@ tBʫ詊J֮7+qcrU@2{_{ݭ/I|_U#}zwtiYd!! ,, g $h쨾i´Ұ]n1Q1,g0#Tyx`oB]N͙X`N6':O!! ,,,  di@lll:w3_ڈ<# YS.**}A5^dķ]0/d`upw"M햶!tLfbHDD@y$x2{?uyW!! ,,  dh,h+ðүn1'P$pDChd"*\ޥvrʐX5p$lLe8T) .Zc_)9% (r@6'Os~%\yS}{'\/H!!,,+  di@,kl4}r ]ر-UM3Z@=r0T E}#PQ[iїQO+ &}s=Kl+n$ U#{G~P0C X$]o,.* $*#>)w" + 9q"x$˾ѹº}٘uvkxx o"4*B5SP*B,p"OG3>l!,1,  $h쨾i´Ұ]n1Q1,14k 屛TK#wN$$ '|@~p#iv(Η!,\,  $h쨾i´Ұ]n1Q¡JPKO#D00 S1#P"(J@.Q$T ԘoO%]Xt'_$ 'j%~bt`#n l Zx@ i m4y0P") l$ ;[NF>bBd:O!!,j,  dh,h+ðүn1R&O b<&x?'r\BD2x 2T&_SXz6x>wT!!d, ,{@ dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.zn߯|N~.-ę͞w 0|uuHAL*\Ȱ7Y#J0!ŋ3nPCǏ ]ɓ豈˗XœIf!xdɳ> tѣ."]TҦP.#UTjj0+ׯ`@YpҪ]˶[$g}Kݻxʕ߿CWÈ+fAǐ#Kv˘3kRlϠu&p^YְcK۸ͻ*^Nȓ 癙CN_ֳk;{9Oϫ_?)=yO&gȃh+- `F^g vXǃ("o h≗,!d, L@J0I8;,^(dilnrL/z?\6mYru-}fn)UR1{&C !, l:  dilp,nxN۶üoX R$A( ı3JSap-6i^X NJM _Qls%1N z$ r %g+Tb\˝ZD!! ,cl+  di@,klt0w/< ƈ.#!q5ByBifVhqy r)O H 11G%fx" gN)^ g%&Zj$WX7aDM(]t3'%c3$^z*`~'v[D"c%@M a  bw'3|~,&f*c J}(% Llሀ !,l YIk8ʩX'ؑɡj; З-~>^6c)S6Qړ6KV^a1&<7Pi|N;]wUċ! ,l+  di@,kl4}r ]EB&8kŅ fIi{shwT\4۽0 vG++# qM)^dP$Zk$^_h $* %bq%y[a]O*{*GW%$ Ğ#*|}ş ѣ%CZ[ pƹ 9&3w- '$ 'wӒLb!UCM^}>v I|IӿKՊ0Ѳ%WLy =U9C%҇Hg 2FA"q❊G?:! ,l  $h쨾i´Ұ]n1Q1,B> 9œMUR& ^vQ(qO}@f|glGoD @<{}8;GMvF>:6u6K!!,l+  di@,kl4;w/SpF .8"FUq`MaabK ?z0 +dQ1^b3kmaT/DLD zI$Sx' uy#-Q"* (L_$(+%#'-\9c04|~6 +3<= f{$iE% Գ#ӿ&} Րn9R$-@'tp `g5GRp!u(E / ! ,l  $h쨾i´Ұ]n1Q1,<LAyT/+0PM;',ʜԐy{cj <A'mO}_t|I:O!!,l  dh,h+ðүn1'P"8I" %#mQ QN48Eѡ2@MJH!! ,l  $h쨾i´Ұ]n1Q1,14k 屛TK#wN$$ '|@~p#iH!! ,-l  $h쨾i´Ұ]/HC" ` ,UNUuQaHQt}ciDq!rBi[$)<#'BMa"rTXzW:.ryV:J'!!,;l,  di@h,oθiyO5_/ȒI7%R+ɪMO.2}h&^?hms.xMDV+s*zH+ #_&Y`Ur *$ *]D*v#_ar$)b**%P%#\`j˥@Zӽb_ & <׉5'/yrs+1ҹabA;%!l!o=( /n1!! ,l pH,Ȥrl:Шt,ZvzxLzܴl-8Vω~iW-YF|pX-^\xM IDhkEY |KYWm{ YzJLJy͚tŵݱGYH J J 0'omGPWO 䇤… ^Q m\F.BTix$Cu _*&;GrB̶[= 6( yrD^&$bBDݸ8@' ]d"o$Smp`H["ve̙weK 5Ϸa :+A$<Жz$_xkZ2YPtIZqw4$`R8q{' 5!ghAe!EveT d eZa[qG|.6'P‡E' ` ތap6h#-=K8 &!IH3VgQiixIapfg6uW~gHd`* %$QAs;6j;Yҩ>NHF%9bQ```*Юr- (Vx3 4PP%`C H4MVHHnj.hiiu(~5 ؒI첛~0-2@=._j`Z" jȘFSP XctTc ָȬG~lG&->KX@G|4INapl:Oe1ЬVf#ؚG pIhWмm0Z2 + 4rsp%VqyZ{WF *c9Ja$Uz|)x\%PE,4:$*  $c# }dToқ| uX5(l($(A"L $;B8A 9ES E0@`\)+<³Pf^GCQL:JETw'EH|H iB?4F1!S4 `9v-N`qK9*OFd I{+ME+ܕPmG.фP '6(oP4bEQCB#m5 ރߖ3sǛ aѣΕ Z1;G+o3a:.h62aF`bcRGb%A}UCog{c9FFu]}v`3@#.7]T 10K҄p5d*RX +.5{XmwV1Clb@#=y-`Iˠ! VH"pڒ5ǂi fgDD%T[bJ2YYhx̨܏U $-rxrXe4ڦhby.rL7XrX0gI{U :f2 `z‹3 &7aiA$hC…\Wmbk ڒ)Zݪr"ɂjȖ gwnޙC `z+n S *( İ=L1]Hkomp r Pr")rȨ!d , lw@ dihlp,tmx|pH,Ȥrl:ШtJZ_vzxL.znx%~C~~tBYdj`zrh]-c ) _3ZAm},x šy*pÇiBH[3zBC )d=&SϦC8.cA͛Wrɳ'@kJQ'A]ʴI>JӨ8j V]Ê{PhӪaڷph[IݻhW޾+te*~GHBLIʘ3︬>sێ^-.4π  v3׶s*iܺfƓOFK_}u̯k}w!!,  K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!, J0FjuG萙 6._I؏c.QMNAU앓n%74.# !,) K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,7 J0FjuG萙 6._I؏c.QMNAU앓n%74.# !,F  $h쨾i´Ұ]n1Q1,FDc<.k X{B0@DL*!preS92(vcT4|( \'#G e;zD$@i )<L8'5(<$ 3wF>|IcBs:K!! ,T  dh,h+ðүn1'P$pDChd"*\ޥvrʐX5p$lLe8T) .Zc_)9% (r@6'Os~%\yS}{'\(H!!,c  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q'(gv$ (o@2\s:O!!,q  dh,h+ðүn1'PDx0.( T=%"ZZ9aJԀ.W5yXL@g |@' :tfPq%{q sjk*<$'iW _8IJFB>̝ZD!! ,  $h쨾h°ү]n1O1 8F˅}s9uUM=@x)"a>= 76 ~De @yu<HI6s6:N!! ,  $h쨾i´Ұ]n%Q$x $sRD%x=XqR3SW肯Lwt.RQzU{' @$' ay(g$lq*e+>:<A>>R!!, J0FjuG萙 6._I؏c.QMNAU앓n%74.# !, f $h쨾i´Ұ]oiĎ#]N!T:%ӈT.ըP4V :6-7<>wv>m23uxRvz|67c!!,  dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB( ')A>>v>W!!,  $h쨾i´Ұ]/HC" ` ,UNUuQaHQt}ciDq!rBi[$)<#'BMa"rTXzL:.ryV:J!!,  dh,h+ðү*{0+)N!1:%U(D7jL"߈eQTБt P($֔Gfyi"k{9}zw4'\" '<xYZ<!! ,  $h쨾h°ү]n1O1 8F`@\K@P 26 jɂg̿/)5"/fuk(n<2[r8"kjg_rw 4p8o*P xoIFYz0OG!!,+  di@:h,mθiyO-_ FdԌ#$ޠiJ^ʼ*ccaG,d0BLDfZv?eX@]h[;:O!! , J0FjuG萙 6._I؏c.QMNAU앓n%74.# !,-  $h쨾i´Ұ]n1Q1,FDc<.k X{B0@DL*!preS92(vcT4|( \'#G e;zD$@i )<L8'5(<$ 3wF>|IcBs:K!! ,;,  di@lllt~r>~ѕ-ksNɅ" hBjD-}"DS G *[un*"t#X)Wy==0*S#f{h *3l+ ]Ku#ɾ kx؍#+u ,wΆ>յ|X`M UÆ 5Axjⶊ-˨n>B!,X+  di@,kl:w-_*KDtG h`9j^ b_- sapK)2eQ$`N]y+#{f^(*S'Z\2% +/M& + 0x1$ *Jz6jD#*?*7Ȫ $  i"@44g'@8'p`! ,u  $h쨾i´Ұ]n1Q1,Pa P9=^Y綋P W呋r^5$'xMn&y{;8h4E]TrtBɸ3CDi\V{g"*+}&tXSy" (f`d$7w$6,Bx# 10c#hj9t":#Z=J{|[XTV!! ,+  diA$+pγx= k pD&SMuMNJĐDq+C*\f7IeHMO58-?k %s;\+ <|?kgOU {U:%d6 _y)5d2Ii+EQ 1ȡ˺БӴעW!!,  dh,h+ðүn1'P<La} DI0 LFFS dFS+kHz|8~'o^uL#8e45XObZJFB>`4+]m@!!,  $h쨾i´Ұ]n1Q1,FDc<.k X{B0@DL*!preS92(vcT4|( z|'#K e;O$mi )@L8(5(@$ 3wF>|IcBs:K!!,,  di@lllt~r>@~ѕ-ksN%`bP=DoaJl/@(e tGk#_# fj#WXy{*(k%x#+h%$*nW= $3#s% )( *>m q*a" D,,4č"_Sz^8X@'eOUIGCy "!16 #NjOB! ,"  dh,h+ðү(io8]ÓȈL.y%bG@NMױryȈȼqcriO$ }5EP$LNY#r8bQpU"9aT=dg_:.ihx8DɻI!!,1+  di@,kl@w/-_ڈ.#!q5ByByRH1< rhTv{24a!&H++# pN)bcQ$^j$W\ɲ6 )YI>6sI x JtӧPըp WÊo7cӪ]K,۷pKn˹v݈w߿|Lbˆ3scvm"KLe3̹Ϡh~ӨSXװcfX۸sU Yȓ Y}3Nuk߾mï.Zȣ_Ͼ}O޽qϿ'HZ| 6˂F(*NhᅞTRa xȇ"hb$s0:b4(m4g<6c@9qBi$h?e$Pn!,  K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,, ZI ;ԍ\hZdz"9욒9ux{9L ^~#QN4Ja)6Z-$+]ymϕuݘ3#!,7 J0FjuG萙 6._I؏c.QMNAU앓n%74.# !,F  $h쨾i´Ұ]n1Q1,FDc<.k X{B0@DL*!preS92(vcT4|( \'#G e;zD$@i )<L8'5(<$ 3wF>|IcBs:K!! ,T  dh,h+ðүn1'P$pDChd"*\ޥvrʐX5p$lLe8T) .Zc_)9% (r@6'Os~%\yS}{'\(H!! ,c  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q'(gv$ (o@2\s:O!!,q  dh,h+ðүn1'PDx0.( T=%"ZZ9aJԀ.W5yXL@g |@' :tfPq%{q sjk*<$'iW _8IJFB>̝ZD!! ,  $h쨾h°ү]n1O1 8F˅}s9uUM=@x)"a>= 76 ~De @yu<HI6s6:N!!,  $h쨾i´Ұ]n%Q$x $sRD%x=XqR3SW肯Lwt.RQzU{' @$' ay(g$lq*e+>:<A>>R!!,:  di(lۦp,nxN۵Ǽoh $D:0]V(Ū"b״vT(Ӵ8q9t^jD&pF>A%.\$vt9 ,T#W#:sdfv:78+gY8"%Zh%¸3w;3+$9+"$<:, "  ޹FLjhM UAij"E/Zǎ)2 i'!,  $h쨾i´Ұ]n1Q!LKOa<.%/)RJ*$ b$=R涜(6n'dx Dy'Z3d%Yw_q T @#4n^)8-b.F>xN6@!!,  dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB( ')A>>v>W!! ,  $h쨾h°o%)nǢ1x”1txB$˩g0Cw$9-K+ήII=-v(Umdfl8_a# [4%Sjv"M]JD0~R\}/96WXpW!! ,  $h쨾i´Ұ]⯘HTN!%:,eEgr&z#IB0S"͚pyAw'.w1&N) RoE"vN sU'~wPeU`spiRg fL:Kv:]!!,  dh,h+ðүn1'PDx0.( T=%"ZZ9aJԀ.W5yXL@g |@' :tfPq%{q sjk*˝ZD!!,  $h쨾i´Ұ]n1Q1,ªHƉq;:̩Bb`l1G*yZ"bD.^ f@#'o[cwv>m23uxRvz|67c!!,;  dh,h+ðүn1'PɅZ\.'8JS%aπ8EPwt'Cr"vo" { <#u.y*_8t)sk0E"BLNJFåź:D!! ,J  $h쨾i´Ұ]n1Q1,FDc<.k X(Ay잰L5!ʁtX#\4 T(xeT4~( |~'#K g;O$ok )@L0(`9(@$ 3yF>~IeBu:K!!,X+  di@,kl4}r*%H$EH"օ9rV5\KK\*&,Ɂ#R"*sfz&Q~#gDWMc{}xD%|`th">#nl $y%FiŖ%ZX+ W$,²9ĨͭTj'U'?3!!,u  $h쨾i´Ұ]n1Q1,# Phx=cXhM.qj~t4'|D@@zU 8 {6Oq2s, Xo ]8"8[g)W< ?bIFZ>>:O!! , c dh,h+ðүjyh/FR]Sɨ4% -JEhVCfz\cl hy}d{as~:<'!!, r $h쨾i´Ұ]n1Q1,gS]NUM r]Hh$+"kn'&@Yb"( 7l~rx<Pn 3l>T>:O!!, J0FjuG萙 6._I؏c.QMNAU앓n%74.# ! ,  $h쨾i´Ұ]/HC" ` ,UNUuQaHQt}ciDq!rBi[$)<#'BMa"rTXzVW:.ryVz::Y0'!! ,+  di@,kl0߼L [Eѕ-kSEB4kY.\ar"iVԔbp*{z>TļVƽsyKͳGUW{8$%*'G!!,+  di@,kl4}rK2ɰh!E@c`'4[j:QDcM"n04#&%h-yr{F osjp=`)dbMwiF>kn9S :+3*DMf/'Ѩշ׬F!!,  $h쨾i´Ұ]n򱑅d;\=IH`XD1 SxL]ygv[k{`[~|m(_[r8"4>}Gra>>:!!, r dh,h+ðүn1'PNfVFk+vyX%ytH@Rvqn8A8$( ;\' 7Xx'k3\>DMcq{8!!,  $h쨾i´Ұ]x,ĂW(24 ӉheAAQ@ jb.K뀀'?AF-w.a,n|g( &# El"(N~3 _lDtFo0t:88żp!! ,":  di(lۦp,nxN۵khM JACĘj(%r,, Y9 \`+z{+c"KcI+ |}&w0`N})+Lox~?0>2E t(f[P0umb0Ký1±)y{B'qXͷ]dRT(Vhi&dG!! ,\+ y di@,kl4}r;hbѨRƘM +4{N, Z zVL.n+'Q-L^#F dAP7X@Xu#)tur\YVRNT!!,y  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,  dh,h+ðүn1'P<La} DI0 LFFS dFS+kHz|8~'o^uL#8e4]' 5m_bJ]FB8+mH!!,  $h쨾i´Ұ]n1Q1,FDc<.k X{B0@DL*!preS92(vcT4|( z|'#K e;O$mi )@L8(5(@$ 3wF>|IcBs:K!!,  dh,h+ðүn1'P%` WJ@[0C("Ũ\P /Q=ajڡm>try |'tL^i L!!,  $h쨾h°ү]n1O1 8F`@\K@P 26 jɂg̿/)5"/fuk(n<2[r8"kg_rw 4p8o*P xoIFYz0LN!! ,  $h쨾i´Ұ](io8]CȈLF3 =ʜbNA5 (b:q ʑTS$ |~gxQ$L/5nV"XOoH!!,  $h쨾i´Ұ]n%Q$x $sRDc1 ΘON^颋}~3ur.RI@~Qx' "' aw(e$jo*=>:<A>>R!!j, @ dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.zn|N~/vq wֆ߭.qq% H.kÇ5;.ŋ3Ǐ 'M#ɓ(S6⨲˗/P̛8s^\`Sϟ@eh`gɠH*=rӧPs'GBXjtׯ`=u K`Ϫ][ڶpʝsuݻlwkͱ} ~ÈY̸ǐ#GNL˘3k̹sʕ=MZ@SFͺװcPX۸sNC neȓ+_ͣKNsճk.׻_Ͼ ӻϿ!߀~&m!F[}Uha?Ja (^h甈,nb0Ƹ̋2h/ٓ%U9T5EW_O51)ƣ  !,  d hf;pq<5|=D ţhT2%1fĵ@Q#p]'`:P8<ѸVxidK'L k2(Tj) ( IhZM]dA#)=#_2" Y9J5ȏG5>NѪCCE!!,   dihlp,tmx|pH,ȤrD\hd8I(X)B`~imS&6Z; s ''sUi0s" srtvx& sH s;u' %:+(.$G;:ȅ˳εyOwOT&Y'_OqbXpW]*J&(̧›1x$L›`">E=TNӹB,c4a/bxmA %Lx5i7 "8$'S,:ǖS좍P :NOZ![ngBfB{8kH uya.$mf!gPD8,6cH DA I9[Yx4 #5:*C%mRn&i1Vw HwB&rÀ膣8$}k,yMt]kΫ$/ɿrp^bշSClXBWr_ M 4xK6M-x_~%oxH+Un GXUc0$JްoF!"w=ځ%pIk`z9YQ6h^mC) XP m,uT7_ : (\LڕIG9a"b+95/N):{X0^p /ąQcl ,tŷ7O&0 $DmPn|GN3 A}V|>{5LP 9^*d9bn I$Tevzؐ2RQe)+]8 @hM9nH;*hM: *$æ{ݻDqP+)Ey+p>x1UFV9\[F Ȟ-au*N;ޘQKTmޯ@샧ttaǀ+g֮qW5u=w6q3) Pax!_\zS$ o @h<TaXD,($nQ|Pnp!$t,T\p+R)/6R EpWvIH0I$!k1i#$yA ]~ ̑yChggG(c`Ne'nBgꙨ?&]&ΉX5"Z>OF:CDuʪ+rcB%N+xqL'LY>@,2YVZ(*P0w~PuI_EQ"GH+WTJ# ܤݺ nf6;lxL$ª.#9֪3d4ı.~8.ꥌ JaD }/}B\†E/23rf}d*C`Miw}ng}h,D;aq4#nzn bnѮ{tfҏ>QRGQyڗ׉Efpq }? D r-}zUHKL^~Ytx\03=H`zрS"DԉhKWCh~ U< 8)YgTo9\*Tk^#ԓY$P`"a (Wa. {Y`XaqQ$ ,vY!B$Xr\l8D,kآ`G}dAuf`)ssҜzx9 EP؟>¹ T9\FxFqf"9#E+tk*Y79)sSY pxHyj:Ѓ ޛD!R2 |BN\dI7<$ i@gҜ~Inx2KO~?dzdx&\c豗.+b30պIέ ŏB/t[z #]L1T܀S}*B[;#o!0uz`F%aSbU B!I* @YRF_ELΏmW(n)Y\e%` X4P [rԱ=IK"DUhjrTrz^ 0L<BX*pkMm+įD$j&ĩ¢^5!*J+ҫɌ.I4&XZOREv/ ҽw؀"]D.nG 85d!?VIB>Y[W3ܯ)/70ofB̝zluR|KZdM^aCkp ~O^.' 87j̲!'#X_%bR~&æ-whEHgIXT|sQ-yǡ:[נvǰt]iCKv*hkZsQz|p9em{ SfҞo>O7]껷ek[CP4G(MIsuK@@7v{v`gV&).7$pg8wVUjӗ6مOeB|Cgsg#'y'/6GIyjVo0{܅?@038 VUT'y;5ׇzTx=&c?ǀ3yg+f5sgb17w]'PF||&"z#sy:sdzSԗsjlpnUmwkֵD?!8CGGw8 tHUKZ'A}N!yڦ ѩ_$J<'[BNa Xȡc!݄pO)M>8QdEVwIPyz) jBCF&{ ٭ ijRZ%x|HU5jX3C}o66+8qocic`_W/q&C+ZfaiBcxT^؞9E9/@gIdU=]$jGiI>\|q%Ck2n9&X4Xeۡ{B cJEWhI<#Y`&[geVhzѵ+VKsLEV;j/*-7!%y78`;#+[2 nZv5H0c p&$S4Eڵ=&$]31cfD8'w dvVlv#LmPkg.NjPQ:/ײdJx4F="jv27U~]$ݫ >{ F3ߨi ̓YB|4FM 灡{M,hŽG”kMGz Yfj \*z0 #xGQkM*[!V~ɘ)57^YfBSLG:ּ!OEE߻pr ſؠ\@e,k [C>k.F˛̙~4 EQo=/Q le|S^`w,hdh|(t8)` *ã+ˮ*!r'0#?2h}}Wy4,+G:2 2*,ne?C/2K$%2}"/3oD1Bk2">22cR,>Bd]((I>R$r]kN@TzBw0mxXt'[7Qy9f;6SJpYW>:IY#}4Bζ絶ݺnX-YAv;T7ͷgX2}#pF_H3@ewS)F!x0'6h&3MĆOG A?K)h KzwB/GTa9ƽDWOHL7)׵>t8QI]B𜽿^'TOd[ML_=_GacVF>t bta\tvDZ@0J"c2K8^VyTc 8de4&' $3,4,.! Z'VqcǮ 9+2V/2Suoa֜ܞ5YMZ>Bd8tS'4V i[(U.t+k Y_1ׯgN`#ҋr헶t-}Znٰj=Oa)k LD+4P$4Y+V䞕D!o.R,h,[aQiT ,VK8ڊ l61(Rl4fIE\|0Cc0:M&C3C+‘ 34hÌ/dK;"DІ'HLHM@30,S0c2'i}kVmgpxqxV4ԀθW-$BbJ/[E]/ _EncsG4_ a#TGHn կawO\o{ Ukׁt\~iS]:^bj'_-HnE/fgn.쳱}v)wh7C.36!$_`ުmޘ(q-XjLj ,⸾Kõ nuh@iݏB'ӻ&nGaD XOZ2^]ϠhL6oHES{ŽqlC5$aqZ~8=7L&:g4õ=]hLƷ%DsT*7I?(b B 2drDEGM59xGG9Ga|#q9܅vZ=eIv@8OiJFXBr1T+5)Q'( OW Y)8iA /*NȜd 7%K{^RI Rv:f&r`i"yf#N4X5,#P%*"A)7j*}1vʇv/zADB'mhfhKa<'d'hv"EhΥCixABq|,;jQDq mYU/eEױ2㜨JK+3"2$[bG,HCW,R@! Vh4jڳiIׅNM rCL24 D: e/l;r^ZFZ]kŪv3՜ĩP%j4W+Ĝ#qj]X|V`U O9˓jhu*Q6i5,D+YAB@u$E ,1.S{Y)Ynjl=c]Zɍ{;_) }V7H-l nq7Ϗ2lXFhY)OʪHKhY5x%~])|#Cĕ#Y5PcmN{0>mJlV#GQ'^ʔB4kh&p/\qN ]hAaDi\D9&?3E @Md}t֠P&W)*A%ݧ}Cl,2lEffmiMPsy|T[^efݫXi]`0J ezԛe{QJe)ʁ9Mq@)lG/jcM"-t۷IF_|YM۝3`AG~gJ(($ ~謹LuY2M2ȝOHޒDtEMB G ;K(Uf To(l6-a hǮ=>|.f\zcv,Bo[2/MݝdV8m^|b$r@|7zd (-vڼ}ݛ]zlr{~/[,k|;wշF} ][9Eܯr 'v"`b$U> -#0p H?+"@PHn`*Э/&EpIPk RpjAY gepy}0p0 p 0 p 0 p 0 p ɰ 0 p ٰ 0p};o[$DPW m Ƥm(F`M6LoVE"c6)hD4mk@A*FpÂop0ow ˯lPOb1;c`c^d0yhﲈ*faeDo1FzF| GD%M.-lʜ1,o[q0Fԍ-h!i#P!k]!obR1*1  "bئZ1*htTOF@  F& hJ Z&'5lr1(`'&'E'g)&l )Q*Q+đ#ɑ0vF0#&_Dr1h[m6aan#-|.OxZΑr޼Ʃ XDɆڜ+ (dM$2%@kH2)A4@bCh Q.).`r5/(AHR$Q)$$)46p-1WeZ4%S NB qHs3u6/`P359a:'6' ւ(+BH$8ܸo(36]N>GZt8%2#m26aOj35ws :%C.@OT& 3Fy25#sDqPA>2 lBR,*d4E;tQԂl09:/pD3GS?CAO:"F2AJS9. S^,,z(Wqo^%(-8ҼcOh6)POnPN&uPzOjԅ5HOQM(F]RfPUTUaTP+LqZC$zMUQ m@*OYgQcnnLĄS*TQVe6L6cide8lX҅xTfwEb{L ꣼!eVb"v`+VVh6gaZki>F['j њ3xhwut:g~@N:nAgɍ^U23`ve& 那*`aF F(6fBNd7ڀ3'8%uD,WTֵSBϪ 3N%wL&A}Gbcw,hnH6dh6kg耔n2#$pexb)>" Nm) E#"Z҃*}D}ij@2NA8,xɕqo"73JC8ָ@!nPa>t4 8$аkW) $DM8Zx={ Z ldalxxHTS.)4\S6dhXv+ M%ӄ}ḱ!OY YS9J=j[/ U|f}eb}57re S6Gz/,ӇKSzH<&e[@e-y[֐F e<ʼnVaU Z\ѧ׶ǵBVNykYl Fhz{9ʛR~pGe[,r:;yҬB]ό jB^;R%;oېЯ GxX}@ i(]hGg GuX>5yw Fj\}B hgOIX:k ? "/[ȏu#t2O;ꊕ baXC;b-rH\x<tD8dr x_D0u(8a.Mrƀw\LϙGxԛR$d g=\#zM)[3p\] He\Z72 TN7ݼGŻ"ul:wx5[K]Ze<] ]΃)A/yI e1 k"'yM>Y.%sʗFHn )g ^ Pg:.e4@ XhQ3k܆ୟŝ4z!鎰Z>S"T[GPN5KѸ^^QU \]i/3:mIvYg9,g3d)q<,`<S}U@mFs#7pEp6[;g_ 5ILOOc~j;%2W-+Dж:Ў@FiPS_=~(}YdE^[fkvHOЅ5`#H&C9)6`4k}krS(rs?al:v\6C1M0EN ?7lKie1jhm&hF;SSkgZ0! M, Hލ5<(hlq cҠZ0+bVCȤ'ݝ!x ?]rn08I5 7!Egq)/O (k/NjgtrD׮jX@7uE[vD²*UExu ;P|fts1 {)}Gw@&pplÏ\r[7n)W W!f@ˤKXs!ɂʜK"JwqG`7Huکь/$V'DqA: ԬМ`}B D2+ " X!dxX "Khʶ!@ea^ @ITA!-B|=A:ȡ8 ٌ  OڝPzj!YeOt"H!Xb0O'Ԗݝ$JY-N!xM[R)ꠘ݁0c3F >J (4 3ޟ6cdGԋuL>-^[Q7Fƙn"=Qz& $hMc'(XC㪅`6 *v7FNHGCȾYPYP#:($'5iYd)$#ہNz,.L"2ґU#uecUzTc7ƣA %B8 S@@S}#?>"@@eWJHOPW e ](#5\J:J?0ul؄AG!eϓeL&^dMJӕgMGեĝK݅"!]ؗ] fF 6&UM:b` N#4h $]MK,UA^^#%#sjoUaeu^\$Bl,]%< ]EMT<Ҧ0 %cbd4f_ 5p] r6H G*pX7ɧtwM DL QyJm>c'i\}%'LhEÍ"J̧o&(RYfbMl !iDZ\#>s^iؙVQ\|b֑*1<%pf#jfLAˆV>F>#  ,iO"MMl'\n&q)wYii*S~X6œxH?]iH`t7rFjA٬%%WOd MCr*N4idqa%DPxND9~ich ԖJ A5Zi2îal7l,,_] JB"NDi칊c.VT,fǮS-҆mib+tҪ,B,mѡcrpZ`+za@h+9GT"o7F'b)4@!FcHPJ ExJ bhnè"j n6ĄƆ꞊oQdEi^ZWY <+,[\/I_^LΆjZHʚA!D@ t_ڪ -( MlՍ GFkoҝHKbM<0,lq&5" ኝI p0 YjĎ94\6ǎmi(0On6tfaN{:c&&tr0q00IRԑiMi}⏤ވ^x} Xp@1Ceکݝٱ vr bh;r-Vͭ#5!(;!U2 ұ[`ƝXJ*ǘ0_1{qNnq3}Q4jA,uUb5 HL߶HfUy8m,ysIiZ}=_35#X-8-3+tA1!54&k8CReQlg%N"й/tIA.)41`hJדEےVҨTGYNt@4f:B*5TTQR3u9EDsSRJn2M!5R4VsuUQ2,IWwuYYuZZ5Y[u\\u]]u^^u__v` `vaa#vb+b3vXT`eUP78NPr`KYpLSfAKݕM[OTj¦?3R:cWɓ L6e{0fmy1@(!V=rj13IN[!IC9E JTI\A;k2 *v?R&OVֶV1rڒ6Q#$}wur_.9uOwK>uwIUxB7٭)>p\u,0 rJf8`9;i#8"x᪕9E8 _ԏ#T=7 :A㒮JI%|7!BxGPf7ԑP'Pcgj TtCQg%9Y*}fp}8~j雵TH[ Hf1oPQ[yG͸)ͿHո|76Lz1zkCo,9^!Raz _۶ e6f0MIZOQ%wm'QO@E[ksX3e5/]O]7; </Ì rPmogXp?fϗc|U[Doj'߱I:hTzX:K΋D,o]aJ뤣ss8VX F,!˭4KzcxٷvM2c46cw"ۗ{pi9}!(MϨ '6 }Xf0C3<`]YG㑵njɢL7@cDs~>+e("3* q270.LҟU_q}rx Fda>nD Fx$QHQ45F[PZD#PFL'Pz}-@ԁ1.zKJx`#̀`C34KR B$XZl| K@[eۣt2dt Ð2`4 Xe僺4*%@xdnULeX:}MU^0lFJj]֓JnfU Z7ɔW0ea ~bB0~[! Q0AjP*%^mRp3QI_40aUhLTi>FT jkJQ,T)IN_$تd!$H)j[йCgNXJJfQ\Z:] )%tXtKqnM\ zXbU%-gi}Vmnw蘻1_m<ª 3^4˘~pShҙoQ!HW.6MC?h %4>| ({TRSێ;܋@ц8# RR`.,/3xF\R%?B% CkO,1/d|,+!ܮ*`I (4I 1%HG0BJ.Ⱦ:S* D2OO$99KA MCJ|!lShu$bVflD5|h %}Ov]kLJqudY֫+kO[V|mb fD$$NRMsaEǔovjY*%' i9P<-z7U} j*(V\^x䀤Bv+PyafZT[bUf{P7"S鞰Xx%qĵH#v^ xneCY!jdGv1Hz< mjw_[qНhf{@Z.yr3e/ s 7O^kY{iZل)}SN>m`cR] 0xQ'K{kLϪl:%{ּ޹߳;=IJoq~j؅vc(/>n"[um}dӥ gmkH~Gɔx\@`;3'!oN1z TUzF俢Fz81z:(CCcF (P✒; @3ISG)`* #)rqaĠ+"q C#,*4 363!Uzy0!"+Û1A!4B#$(3._!ȳ(*x5"}BO* ,C*AK6SB+d?8tÐ%A3G|D`Dv-NL ;%/ܧ;& D8A#,; Ap,!Yyp/CX8XB.c#QL H(+IP:!(M,Db6TәBS@OcPDMGHIJKLMNOTGQ%R5SETUUeVuWXYZ[\]^_`a%b5cEdUeefug-ЗMhK|8ѸmUxoV+p;*X+=OlN`RQuׅBH1<5s)iNQ"ќJXֆՅTR:*vKMZS]BS&]ш4 ”@._LTUYI#]&s؞Jڈu ŧ@$BS00,X LuSO:R[-a1AܱtQٸ}2#'.MyP CЭ856L>F̜[[͑kI%ڤu`'XY; =յZ}[ؽΌC|\\=[D.gJ j/6` >cϳ0 8 4HFXU[ uPT<:J9 (.{aߤ6# ME-m~M_ #w*n;MNh_N~Q2K`\_qW4$ Pv\uE_uhw![(WhSЀX'$v>`!^:a~_!…g܆)[GXHD.I[7)Q 7lB/1aRF&5LЭe6Xg'3^0(L2ʠJCū ʂKb]l@~Jnb6eIORTs18QHPv=3u/9q^.j! 'C̞ 86j!ViKAuG7w/<"[s.lMtvLs,W?t@Ɲׂk̆l҂SlrlGB\ɩXGC'n*s"&Gm+Nǥorp9wvmd-Ъwe5AW{1XG>/\a_[̬t#%Q8?d3jw*rOV0,E,p8UCD,fzﮑņb^4m={op/ eSzn6i|L"G{?dnfwǼ.y| 2ͧ(y./4L)o}$y4ldf27so轗]^g@|7[dsI-[D<6_d 껗l{  GQ`Jʀc @xF%b#Knt #x`PW7xFUe&@u``1W)8'9E6zf$4zy4G 01$ qDW  Hh*yk+e5\w -H!-ulp7:,{t!z-@Nl ߴAݣ.S)Sw⿉+Z1ƍ;z2H4XX] 4H 'Cf.0&&3@A&2 NV9yr;{nI-Ѥ<IueCp9UbmT g*Y0g!R^8`3ѢGc2eKRBxbJ3S1P33WO2@_oZ!Ŋ. 2& e:)0o$vb累p?&My¶kδa˖aQ,&W@ X{ U/;Gh `H``Q<0h- 62"q1\XMHah VDFV} nct I!aeA b8r'N8@dV؄F7(#yl8nDLx-X$2jA"]sq9 T"1Y<~D㧌衢 %Hi^i @'怲gRV@˟yLPޑ?cr03Ǫ*)Iɢ2q_i~Yz+_Qr'u RԖjhKP-Uw6:(e6z t2(J:.9^+6ƞO K9✅v^ {g>"LFe9ax'w+:VZ6ތs:3Htf&X&.y_%'{Nm=HyKT7t5\qsS&4m]tq֙GF6FW 46yd˃ ^%nD^ՒK3-M.|7ԕY(~O>ojtCsL5ߏFb_Va9Jpܦ,`HYΒ|@!)7RA)]ŀE^L_;^³\@6^ |Rx΁D2<s (?ّ2 QpI) [y9djЫY3!-DJF.RB 3~FLЏA8w-ֻYBEgғ"+[KT?kN@`'5tP*F:J|/md3 KY^֯9hF d%dK$cŤIJqnt$C37Rrꨪ(- 0Ր}_SvG͏0vTlj f_ۃ'Q/ J5b8l !璈`J&ߙEؤz|0VaهX%&f >IcV .zLpXƑZ<4ϳ=@UizS:ѡsy (J3MsY{AKXgoo]녌919^ kRKcOϗ{ì(\7dڇK]V<p'8اrbsdQ=rvW6O}tGvZxzRr\:J"w+x$ZRT1'U"s#36n5?a.e'jG07۰YC5(! sڅ-ˡ C [:~q ,UQe$?PMW};хU~o{+@v6;5(/"q7p+Gt/ 0gia 6+ //ÃvSݱ '[B=$ss]`$EsVd!dr|x0t+ApQYR1@%NFH=U&%/0-]Ԁ}T"Xr}ǂ$XPC 5/rA~ɆyW:@2=M!;k@R[e و$2Yf,a+2e[*'M8)$b+xchFæiWrwZՊ@DI! x55UxЁK\Ae`R\<%MX)Q5IssA~6hy#2H CؗoI!vr7 (f1x [b+%te}5)طQVVe&M Q_ӑOY?FnZjp&og&1B8*-Ӕ6Jstٟ^7X 5qz/yS"󂨀%.LY1T}aqj{eQ(YrqV$QJp~5-&q ` 0:`Ɛ) x=v͚B&.ńҧf꜁{:a Z%ᭁ ;e65 YdɌ!נ huߊ!Jbo+!"9=q}:ۉ\зvfk#ZvJ hhPtʔzZn%j:uʡ6iPX޺L[67HO{: &N슭T0T7Q:/*YNB =:; #?he0 @}ZqZ(m{ٍ1b 2;Yh< y|J 5UV{ tzjJ ۸b؜Kr,O@'K !;$@Ynt-T{0Vvf(ä>B{Im&rIJ",p#ړr5\.r\s {"6tj/gq|uZsYWZ A d ԩԔ.Q5co<0h)*&k=_]B=4m\!4yLqme{՞}=ۡ-iZ`g:Y%5ۢ9lv|ە}wnGTLy{iNAӶ!JY׈24_mA+ݶ7ϻß)Gqۨu-B=t G}&2LG[Br3 >o;\f6~u~wG'6"ɁVr qm9"B ˜pJ}%b k:-W(L 3P`wx Mzmb$W.+PҹRJ}Oߟ pOC_o&t:ƃi1?]-T.e{ en.@f]Bz1n]'xpʁIN.9R؂Fk.iB1"a,lR˶,0JP,gC1e"g"Jް>~pceWX8.Mof.T铙 c*^3M<ĐzrQ0R05c Z56U87bآ6F4l:$7 5::)E S@L9Y\BP[E' jCo 87]ADL'/YlcIjCX_6 AZs4ax?𕞕MF&ċR ŷaʞ9`ؗ#m~3lwŖm݄Kϖ\d c !HvM=UFS>N?:C?F6_/AKn}<V^Sq_YpY06uʝ<:`rIMpN>O g&@ET.MNUn]eVuϏ%N}0Pp1Qq2Rr3Ss4Tt5Uu6Vv7Ww8Xx9Yy9S#`: +#:Z\+X@0Lpk56 ;3hqI ^͚VU6nSV5"{c bPv+ K^NXb8iA=!<n>J;JsvSSQ[*@!+n?|S@1dA *H)%\++"@' A|dAOK"G3.c,N#&H{ ,ᔨ&HqIϏp̹g+*(}F#g9#DJ* ;T$3&Bⲇhq6 8tBѭ6lŁ +) .`{ 6MWP["r#ެc+%BO "CTkK#(-hU.@Sd "85l%VM!lT8e7*7Wp-,Kg6yȲpeXf4M ZS1QdV~]\V[()[[#[˭ c/TDn6_%L!5z,d?7Kn pZDyugJegӹd0q/(\v7FYeX6`s6 }=: 69 %~e5Ie x`tm%*VX/bm 7jXo\B\6jV;Xz51EԈ8 ]l v.">T]"=rs%OÑVX z͋o{v̱!]yՃ< '`#'m->A `Bvs4qh9]`@66>̀*$~SvR6k$ l UH+yӎl.W`R2#h.o S!(7Dh4Y"btO6D 5!JX΢ %6D|v4X;utCH!8#NM-pBȕGZ .-B7b7Oqg=c\^fuzIT"Dzшz {"( 2T_ ըUsL`I%8Qf[ i# J``iV @j j S;+<̦N /' ]*2eaMvUyR?i_ :D RAԉ5S[M:NR5יr"*R+7{5[\5(maׂElBKdꡜ9+P`Ut!kA[qa1z פIUhn(dGa F9E:ťsXbՏdŭFR0FN͹4r+xAkr5k IkNͶrꔯ*jv o;{MvKVa&6TND9و=XuD ož]#bMkA?!˽uL//X4`o`⮨XrDŻ>KFNK p(nԌOɺ"((b߈MNPBNN >nl٬g:ʘ\*|ToRol9 NE ) ްm6@,P 'pVE`G *x N0  L`**l׆..chQˮ#"o5Ov*DԨ"xbAŝPvyf cD$ɬX1opx8 7FZQdOlN#M'/Qy2'0֑=B20J88%VB/Bȼ[ 6 )fXnB)!&-QVL"1[Vfb:2lHlO6,ar̊&t]Jl|l"(-eL{ln{N D: /'92&rNjj!POGu&B$x~%,nlt}PI2;z$B$% gJ 3l2+B8)&;r0$6-r=.4 oP]K8s -kgX3".F Khg8p,|y `Ǎq"Lnǫ0 s|Ѓ;82x;gX~3L8S5>,ͼ.ݔ"m - \N 0{ 0> jf43<+P0ǒ6͟?ӥ$Dly8iB9E-:dEn uFƪ]@(lRI C&nqQHH=F2vVtͱ<;G'&MJ9ܓ${Pf$/bIbI8C&*ii|nwHp0 M%"usK=ЗB*(R%FJ#J'.”{CuE1u;tdRc3si* uTWR瘕V U7QR-`+4j/Z[m:r\ "5X Z0b!ذ(+Bô3U  w  U`'bhraVB^8v6$ZIpjVj~YFG)ojkǖlO5$b6kgb8:mh kno VoopWpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtAiAvv 8U4i a_fW]Oɀ#v p<9u`u_ij-]!qR zIA yw ,BPu@ 1+RXp v 6 ,`|wx~  ;awF 6l2tN|UipYNz )~G(go7.HAt 1y!` 6V b8 P*  A{z88 GlcG w `} B#``K8 X~# w}Ϗjw~ Ҙ Ah8 Æ" Zʏ_ YfxJ]HcÀO?#ű4aFidZ$&YRb(ek(O9`i\t~S4eCVnh1Μo%mWb &xEYRh%\y` VYH9ƚŞ'pmw ȗ5e8v*T*CT9FZfiWYgyR F%N3YzW\/MVZ. ̗3SNP_XfXZeJ*L`!r:\fW^&zw%lky3.Fʼnd7 =͂FFSRBڂzPF/[ټ'z{vw6 0Q'{T`4I=-5=B:%{R@g? 4Q (L|&4ۼtU |zqf\)J+b$/Cl(N.S*"sl0Rݿ3@I}ѡ+8}M?} 0i~.}p*hz;\/F#m (0םO{뼄0>ڼeG}r0{p۝❚xK$H;Y'ܼ2M$ޕ#=ՓD-!~ \ _C몮4wLxɧIbWIJǪ[7Ѵ}_˳?b̙#)^%#m27Cbw]Я@}$6Y!y,9Щѻm/Q|< Aީ1UeAh}-Aܗ^łĬv![ F 2y1-%bl # X4HYPFq^CCWFá\E]^E۠Qa" eg\"-)B](VYӃXc"pPDp@B,b$&۴|Avvf Anc],[=?:Bb@#ˌ*neLW I8k! f S #'wuOfCR:抏K gqTz$2y " Fz!UG(Ȃ(\bT(HuEO`#9c!n\)؋0m/ +k0bEtHV c%Hb8ǵƘ*`unZ3{)$ǡP=D~k񤬇GͯmԱQϨ;k,p-a W2팲LRx(ipSx-RQ!C}Z\qg8it+{tM@{^Hu<%S$ ~כ$XY4t,$p$G6Tz-"eG$y I*Pb0~wZuj%-Jpft7@cV)eΙ@>s-hV|pS9_r'E$n<`Db|b3* 9829ԚZnzvfaZep9MZVXdžKDiK} uJ}^i쮒dnV(!(T)jO8vhK׋)Apd}=0e6ʆI !0áX@2Q롢&&STM&\!) ŭ~z/];e,wXTR´/5 L3]'d5Cm˘ʮ_Sl[K,5Oea#ň+h}ґ+dtM<۝/?Уٱr,`yZ=; _u~["gSۂԮk|X}jzL=~N[fqWhfE mƥ3/1{=Ox:IUyG`ǴK:cJc* #S~ Z4fB`а*@hXx^ìXN0Ӆf3=3[JY^T2MYY<X1df$*,zT☆.OV Pmbn3Ff 0G1ą) ?M"3xH ҮXAZ Bm\R:lsZ(JdAp\c6h8R|((CȢĬ91bʟCb- Pk)BŸx'r5qg,L3(* XGRjlQ, `cC؄L-Cđu4iT x\˞B(Nj9KPԣ"3PiJǨ>a ȀKCJPHR]*XZ'/*XT8iMU朋x*GjǐR`bPҌv8_eRҕZ’2:Xi4pV"5 X@d~Ari?VR`Y֑9,y.{#qr x-8VUPX( 7hMΙ*iFX>4xMex %u)_@ˊka Oٗ8뀽ZRlU;-f#QW&;ׄˆ|jd#dPo SHS3\c7pы[3İ8.}Vg Iɱ`Y1=$OlĢޞ}^"1G\8Ȼ-*ۂ f[2vHI Q|wcDx ¶٭sWY9o|Vo rfH#T 7HInӼsz08@eŲճv)/h  bޒ`})}m&Ǡ)?p4ض>QjW9rn{ToUsA쳁V=b卍,%afӽ(pt5GL}fh쭎 yk}xa &xF3󆙞'B :lKssdƲdzUF&8=O7M_9N޻ zsL+@ǕnC(ws9O9{~&jH& Cg2Ue11|nEcDܭc<`>Gz/yη4oLWӱ$mWE =:z񘔟Tg td<Qo>s=}[4sSqOEҧ/~~KӿgzL,Y^. .  1 8 NpH ֟] v~U[0 Ԍ b%"$F$N"%V%^"&f&n"'v'~"(("))"**"++",Ƣ,"-֢-".."//"00b .Z v16#(P\(sy4aOU7l-CA!7!6 cPEc,ވiU 3'IU ̍NuAvf-$rdan VXdUa~Iߝ)ܡ!?$L&-O0uXEBN#EԍzMɑ#ΜNTQzJCF!bɶ 5f>\ϸ%gƬum!0SxEqiWUwA,TLRjeKG*טXGH8 cdN.\PF'Q D<ϊꅘCըWmHSWieA$nm_,!]18L-9 iN->-cEHɺh֦Ԫ %E|AZ&gn"\'.>ʡ\r '-+['/0"??GO?W_?go?w?????ǿ)~h(+[@8$GdRd  F 7>;B0E.DHFIHM/K7χ4"UV ͯUX[ XMVV[ ;&a;ހfb>U eـGlqZrtUrtp`uzw!gД~U$a@kēH[|kXEĹcV0`4*KŐ9鞸ySQȪEZG!Bm @?< MB VV(Mn Bs[r7/3fXs')o T{mU^,eVD8Qd !'{R&Mm\ ur&޴n2/cQ{4 3>ʍ\w3<i0AE,7p!C#uH? 'g]z$HP&5Ko>k! a 'l$8d#C!3"?I[@B\'֪`(=1HƮhdÔ:Q= `@H!a2',%l,2,)!#dr%;ioڌ>҈ V/{ڈBA4BLWCֳ HB MZ̰M9eq|sC);cQ2ct=CV,9sG h( Џ?˽"e 2!R#+t /pl &lpV.N@*u\&ҭDK@R"Tg6Jb{NYw*v;ٗH``?D @9ࣕ{L"gg~ehAe /h%^`?Y ̨01Q0Jdok^ r^q,r!r|mHǶ)kcY O|{wcv" ]*!\efdDM~ 2V9vtIOYV㪫W% X6! Np-a7? Jgh C7  H+#Y}WB4qzRCAppt[{wB狌JL"$|{濗](c&a y Hꭒ3.jLxƭ1|jBX[ VlOJG+NT%y>{0E@dvPIgvfCKVOI3dyCje68Jܚj;ˠը!4c@2xi^(HC$4Jڳ u-sJT$`eGǫ← Cr=: g {"*I ƒ"Iq|`ۆ.% n~#Pzv%~`1_B_2d\RU+XL3ۂ:3e%bVUO;ֻ.o9BVpB`+9(v ?+Ǯc{ @FV c4ƹ]F 0i(οi^J :x| =^f`9jK->h\(O;?a*`ՌFy!px\%LUB-_Pnx1ņV}AԍL,?iu"Z^9mfo_,;fW<舛5nx_[Dyj<|>wNMmGHq [Swo!d7)nɩޚ׀h@.nKhZnEQ LޠsJ]/+GewӼ?1g{}eZ>H'+n;-ِ𿺶? GdQ~ !;7泹=x; s*lûؐ??!`P1Yb={=r#; y;830K [J:{ps{9- 6[79"A -һ6kx:0( 6̭%/@57CZ[CR1Yg63o𺬃C#97|ະ)Hd2@+ӵ0:ADX$%"K9û :4(E%=, *6,OàP%Ў̺(h+:#2T9ZEBc/8i3Y d 8f0Hfr"FT#>p[kDGq*1* cD5E4w19iȟR0cHJr5+[$ ¢B2<[EQXJCC̺Ҏ3$ʾ\ -'k ZXC.˥γ-vT)HE I9E`hŃ;dkB`nh T¾4/|!K~HU)JA 띦K+5͔~4ȋG̮7:؅n > /tL;g:A}x͇ } ] -;`I\ jQt12z0d7^t<6#Y0D&a/<# 8~K#hNdBGK+2Ii TFe#g\$\,BU|͕O{ˋJC ](Y(5ʰX豀gXQ+ƔPQ $y̼uc`|K]hB{=Ԓ\Š@Ph#5Y)Qc0B[Qd!#)U"ǿpQt4-UVy2nR&]QuR*+Ǚ56H48Mah -aSx5JE"6EI#kDų5OpS)Cm!:A?Eẹ9XԤ|GԁXB R SҡB?84mP+i$@SH=m m9BO$&!R`SVU鄜qQ!uUz+P!{3NB&DE&QVGί?$}TQEљ"xI'uJqܝ=r]% QeS-̓b٨XLCIBqYm9i%ِY!#aٺCڜB?"RXY[Z 褻e _ m\XYmYH 1] ڤ,6q̫|Z<[!*3 4$ ˃WWڟXK]P$AR397i(0#sZr!׽MQ[SY-W*  C dcBdB3)F@6HFUVK \f\^ Qw>6JeŎbZ.Rffe6fjf)>f`b (qhCf| sVQDd;sn x爚cb;.lhƒe1uHժٟ]hV -Dhgz i+i `[ޯQghmfi`ZB ɔiijw0jf &Nj~jjjjjjjjjkk.k>kNk^knk~kkkkkkkkkll.lHf.>`ʬ Þ|뵉>9hj&q c\fm+5il-(+2vfTd-cm޴..!n6@ML>`0m'#\mn\ZX$@f#$1l^l7nȊwFXto :k2 儑v2gjGc ͅMhp\:0Y*gelYojn⌆"zph@ ԡ/w;bhK`qi#0ɒn`zbs{lEǵhnor'gɁqɋr|]FRmq  JvsepM!O[' YkJAP-/tQ~ Qa@VI5T'WA [Ş\^1_ \(4yUQbqg#zi^qr/[w٢FvfFlXcB; ~E#P#)7tt6гJ0r/W-4Ǜ-5aj}&8yl8GȇNeY }8M<MZUY ޙ5$Ie\jxky"yy϶,u"Ƣg Ƨx'$B#,Sf5\s)2{+V359OOJF{-Z}.'\3pS:MwC4 d,aB""@A{y :d<)LJTO;"6 Z$Y^s %X)b+zǚz!4})BĠ^,W-Ю}t8Aȭ~PW +/H_pggPͪ1E )zZ-OK`;С@p<.1 t{(E *XyZcrTJx3hRB_LbeF vF Nm\QU_ BTVnBOwF_F^Y`M\zdiǓ£}PGׅ\rSM \rID/Dl -:`"[{c,",aab/6$E)Z|EU dϟ@+9ħk(WAUOg$-P#뤽YGfSَ4v-^XAmkq'<6;Ǯf/2̖fi by#KL˘)QW "0@c&nܬ礚:^L)Nb v awd0`H"Y}H|'!fDx%E{ J'k7AXh WęlFP JPJ] 'H4YU!ihG6wc+k`am6Naُ@)Dc]8w$wgmo ȘqVnYL{R-ɘ&̨ h)T[yZw䴧yHhT)1K[%2T_Uj%TC /4#)5 1]eꙦ}^I :x~j."kn&6r-kUAg>it"[ТPt蚸>ƭ0 Gl-zc25-g݊R$f 3,F_K&%&3nkc!-bBj\ZR\EX$3橳`-dK^9yflgԷZ9^yB&@0ΌVuOb*WcLmSq A 3eut\!>x\sf 8+WU\O;䱾`c5~fqW^ uJ nGwXҒŮ5KRԿn-i}9Jz'C7Uaà= zd&W9PeTAg%GW!*'Y 㤤F>-w X 1iZYrTpMG K1$cG38((RNys28' ] w!xRQ̄Rsn !LA[f:S@2hI-4QBadblNG,9'kPR,.l_'YBH 'zߢǏeɣ"`L,XЅ82uf5,+B[~vy9+_쵒oeom!@ʽ6&Ys(>Kf/blsv@2I'wd~s((re2nH`5m`T$5@\ _}ŁPr"R,NV墄`}a愄>R@8"e'aAwב`P,qb(r\VɈyhF Și<(=X>ՖHpw@XyCA`h TV~)"BIDX&ąr(2/RV\g4AaX" /'d+}q|AӚmU5Ugi"qx!*Ty^Xa4$Uc'(% N XƩA%IP9(l*&Ai ϩtdw )xiJ6n %4Eʇ~Ĉv1$77cYTyz) +6pRSg.!8*=RsEu)0Hݷl9 j0:5RJ >zbXZoI__| PL2ơȣٵ_@5d* m*g8Jã]ZW)3coE XpP8^Q[ju j; 1'r [IP:סZ@9UGxRO@nz`æzrsAE!B Z:V#zL\Jb;Y$$!XӬʠxj`xL9*dlʤVvaedЂ}uhAD@fC09H@&}wAY|^!b@+ !Lh#j$Ġ k9` O~w_JT0ð` 榲:e}$FKD;p4"PGtr/s1:20K-UEODvn//XJdfSi^ꬱ PpjuE ۊJF#`{)1XT{T:.xc곽&-dؗ+GgUv)ꂿ8V;-SF{8 %Ɉ<7r#*11LE^R81C;%c(UʢytnD0$uJI72Ѳ6; X'Sqm"\7ap|U}+9man̸1qlaF1A㹂rP# rJzH8:"!5oeVsä|D*ľ%(5TP;r=K >;*;uyKO"cۛF%LoJ:3Sks[6+.< iso IJdjB%1=,!t_o7de@ A㥈 (ǚLŴ`8k<'}d!{$Y[uƥJ%Y5,1"Zi爣s%jڰE&jAb\q;Bʴ{&ƊZ,G5ȗc"z:#ɦɲǴa1|0tL&64<&a"^lϲ< upybK,#EXZ܌ $`Kc4İKYFPM&hT4^+ǟ 2[ kD#2@ @gp\lPI)] ѐԩO = 3R7A}#л!=(g-זҾ'S"Ս\ii,Mw} sʒ J] 0UM(X׀s;`b1>K4!JTP--wTKKAT |.Q%]dFSM=]W'>L8%G<'{:=dhPi?)(`"ߒ!:єk4c o=MВA  b786h"GO}8E0z0Rֵ]}; 68M,]Mi=+А'\ϫЛ"|m'rpD88e3UB}șG vvNER5$cL5,EaCPdDbrD|yG/uOjED+pY~]yhrJV{f _U!}4]XI,b=<dPm>4A:!}7zKo,%B~3AWۧlVu.0.D.c1 J:(Lu5d/.+.H>:%3쉋薮y`}E"A MX󉚻Soz J A0V@S(UȌ_Ԉ_NegJ5Q%R/gejU8K4RYM 5u }CyhMgT%`-E#Nw!V_DU5dܲ$2?_Kf;,걐9K'&% r aQ_z31 KN9R6RCAO7SVx0I%B3|$r h3P]RL`\C/R4c'Xͺ* ( .$%!$/ 4ʐM%800>/5*-2"O^=DL$l1r2"3&P$ݏCBy&bOm`  ɷ}> I!=#$08Kg&I$Lv/()Yiv)ošyA]H3ش+CAϲ4Pgf > Kݷ#nB)c3N2iijhw=fcb7;UUԳKm9cVe[-+@Ѿ0Ne_-6 4tZ*LA!KoamSKzrP ^['*;%=09ih p tByC⻞rC\o5 P \+5P&8[Qʼ L<$2Bc \;"Jƣ ʾi]CpL:.t? n hCPAqIenK+P1)6LE'ye,EmR.Rl\˽K8H@Fkm Sw֑֬ӵ`-ֈn5d!jVYVb!Juf֣xxC0^8ٽWEݑ[\Wl.t,_guw`E͈7q>_e B8W֔IRVa҅曋u_[wqHe}yNZ饙?Vת:jBb*~ǚlhgu;f*{(d/C恷&ܔUK.29<\Μö Qo=ge c4>]߁^/38io硏^驯^_/O_o__@4@. lB.1 ~A RtXU,[@.JC0 S`HUY)Ǟ$yK/ Yx2'o"^:B%TQ d?T}wj!NF)kj d)Q.+ XԷ#"*ptTF5|E18 w/;v -fʩAn!l$h?h¤J*a,$a;%<$:&!LFje Up!yK/6 T,ECbAB,q&e[uܼt5ȯLOjh7_'׉1AJyN;J-dl;vTU msÕ9AW0f_Љ˽fJfY̬cؔ<5tqٓM5Ϲ8zNJ HRHt 9h$c y+eOS+)HӚN,< Cf̆b̢f($ttFN 2jJ.'%hp&n0E!#_*)KUtVS#ӶW2a'X 5&/ gs#ތ#}]i\. `8B,x#JSjۂ㶨s^ҟH#)c)e%mRVԳʮw KFt-~ԇZm*/1E@d "8m[q'":jp>V2ܑ1j5QH[gGzlV]J.@ϥ/Ȥ'ewr]$[9dm?v{dD8fȭ[ T0Pn,{Ovob#dJQ@;Glbz_ Y+peѼ1RM~AS1k?]s?CCD |acr{]0J5֏(ޮ@F{Ԑ-+S @-mݭA 20|J2T+2ێ|R%2^*! ˏm:~NkS=klK9@*HؒB=6R@3egb7\`?/1BSlL.tܒP;FɄSI#eC=%Ot SDKs3BVF -U3QTQ9W'7X'nes]@aF4[cTO ja)eN $m'+ qdlklY<*a' NUhbuG?3RSZfc2;ae6RzU #ekh6=s(hLsG " WR/O?p5DP4a'V69oQ%ah@U<N\mI'E\kwy7WNtSf&4)W%U"LsoE9 5%׎jOV[QzL3p7'i(\y]B0W(Y6y5WQn?;Riy(wIMӳUWqiSXu&HSyb 70#c6W4wE&ttl}cVaxt$+z!,{7ggnR=&(AnuD>ҕZPsQxbw ,䙪B3yk{cT4ڜ2Fxr3:R̶ב9fa7KDcGj&Tyv&)39):4/F* )b#7f cH))bY'Jc08Ȱ'a#d^~Q=8$Cp zmV{F! #}IUtx;\zTyҠ[;Lۘ,,b5'M! C- R-:pUM]]ayZY"2WkY8pNqDsrY)C/d<ޣY;d@+XWV>mWYv<2P;Ѥ4xġUJ >-ƿ\vb4Hj2S*qToGE AaOmCD /EO6KCǁffGTIjWU0]O|DZCkqLU¦7bM7l&Eɰ8ڏ\*&acw^^Ϋ= (Vw\=gȽp}ݟ3Zҽp ܕE_>6E 8cڽ=ދe'Js7WJň3`HFcO_^"ŝ3 ܗ%wjs|RS7tcfGeP_W;]yhp6oxi`U?X;/>oڥ}w=][pEGOfm0mi^(棾9~!]j_˧ɵ ʫ&#vN6T'd.9=AIMQ?UY]a?eimq?uy}??s4ƺ?F,'܊8?_Cq??ƥnk!h<"%|B)jb-1`~9n= RUE%6:>BFJNRVZ^bfjnrh-Uvj< %M )X -?CGKOSW[_<2;c0"DS1I#ͦ'p "ܴV%%(q"Ŋ/:Pɚ1 )r$ɒ1dr@ɖ._Œ)Od0PșQ3 *tYɎ3#ѦNBR*u+׮^V,ٲfϢMڶn+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3Ξ?-z4ҦONz58_< nv ȁ O_0JI:n-UFo' ે'&dfр΢FHI'+R8( lLD%іJ,')bc4җRG5(084!=xut:H!m"TLA[ Hҏ š[Q@hH=rm<;`Dd6Pf㩵N;,`ZiKB V]\RLS?,5gU*A[;*תjhj U\풤ns1l=&&jK=)u ߎ$n9y1%z\C)k1&5ٛ9'B'yZR+XRVKMjQ/=ۛ#9j)e){Kr&BE@XƁ8ūSF8N3 JzH.b5@jPzXn0{2AridkSC-v=rZW2AD=pS^4~[{]ǀՈPdQM_'PH Su©[YQp djBA X=$UzZ!c?"0.Jq Nӣ ,x:zZ\\W('cv؎=SmєiQ^)?ds'?7ȑwPsl<ܟ̻CЩZ-ߘuuG6RR]yuBWp@.KYE{':t]'AtP+Dp0/Y9!`UHDWq;=Pp?O = )즴O]2'"5 3*ins+)G['#4^xYݼŚI 3[[)𑩍Z*Sw}) IA!+Jy&9Va ]W:[ Y69` bE&QZYNG,U1\IQW%IH `!_GL=X.Q"A Gϙi[u#&.X uDjA~ %"]۞abjy],^pׂbx#v`hMآm!+bb1W/Cyïױ1!, ^S@ "+f]`e7R#M^u7RS\Ԟ$[ʑ32"@!>`(c# _6杣&Ԥz-:c4J 9I`͏ bHIp0VV"X2#Cjb+L"p1OHVI" ޶\*q9J)6OU/\' X* SL DޜVV*`+.^5eH^%=5ŀeƝbDcra A>:AM%ݑ%J6X%YʁPJdF\.Mm$Th¥S*rPPVbבc"d.^-i 4"A&'#L͚f^ ,䄙Q9plbz&f|:pdD^[|b..;$oe}tArXTٔ!d1F^d;Fd|DLM5tRAagiΜq[@hp6&be@bl"ѓ"Ŕh^"E$ 6|2W\gqi(Ad Y5 MZ'bǓޤfq" "}&^v:SO)yI# ݡW4} X11zԅ&^>l~hbj]!6%iC(wO:dyҭݹ8MAtŤ` [jvh \ViP'nX%¡>)(I}Q * Φb4җ5*%uꬪS0X*S5AX:l4~$8<6F_}:"_>ϧUp ˞~P.@k8Il:혍#J>.r4mĞ۰,:і'➪% :LDwf-٪gJ mI *QKMMPLNZ6`- V,Qz 9.c}v1ؾ*W>Yg>^Ͼ-ԺDēdm > .㆒zC?#<-澛vI,].D6Hۨ6bUl-- jq*Yv١+1P*0^X`:N4kp3ŮQRj\ WE Qoհ+5=Pjn. WBb3-Cfip }&1R Y+gFn1˵+xq}zO荱6 ;k&05fp/asO n@\&0CIN#TLi[!R$PlK#.%G%G l&(wf,nb*2 gbp`l$q+c&Hc,2Y i"J.ScCOVd!2rdѲQs2w\PbYX}5H|Ha_bЧ(sP)S%c6_#;/{s0q-ܐ6. ? i4/ nѬE3insBO stBthm͚lQATa5RSe^5n< *]Xh0DR;YcMF[/U5u> ꒡^4Zb@vl2c cD I |lDzp(h6L˃ijd#VK@$l,o57E".lj\xlScZv+#Hr FSjL&v0^wov7=GbPdMhŲe|w}P~wx x#x+3x;CxKSx[8|Bm_W)i*2 qTTGo]_u;w&&w]v wIԫ{sx{tן]gdQwYH)/.uj g[d)7IRye*2{2:vxEoA"˱3ɹ9&%N70!.dzj7r+ Pw{pV瞻Y9z_",]A_&.[+*&p*3W:/l4eX:BqδTҥ;T7eOL[6{,;%[m;A,,f*&3ä'ߌW{K2;9'eѤWrxkБ^ fkCM:N *gzN@ }:\L$L氎y- MϹ;hM̏-*T#8Ȍ7Pӷ/Fjɰ3,E 2+,ϭLLס#wg|tҋI'WcoeO@@`&R>#ǫH{3hpQ!]Ҙ/KxaCJf}:IO>R@{%UCk3r108~᪩ "헓,q*eAwYC~P?/~Sd FѡlFSjzf[nc2B\i2L*di':hJ3J`p`pC3(dHH4ä$rШZ@5K x]:K[jmh p"ehbxxlBRB8|#0] ` he<˶TC hDtm@ IP3so)"9[8#+r`2I>z NћX U:G "DO0z'0 Y"]rf BkmݾW\0UCNx7 p+jt] 4&$V['c~Hpg3H!v 4pE7$5r"Ta>RV `.<,%]ӽ:'O&HO7oz̝v##u NcN0d @Bٲ &,\P4 FꊞƘ zbQxFo1GHp@V/J*Q&Zj2ɢRɰcoɞ H&̢*pM7leB,f#ĵ^8#SzYUTH!AnT-:R*̰ii7p'|qR /dHx'ejq|/NvkOZ6XEO$&^tTG˝t"AOTn- %9KY܆W4*g+$xN myXpK^ߕ"f??PB<ݎ, (V&,H1طY\Nj'u#oeL? H! GXݢAZ\ɭ,`P]"(; @, a d`X\=@[Vd5h 12("Pg>*ԣ)Aah6pVԝy6᫐<='C&U*g;WM h)$ 2&<: =|*é24A6Ml84 |M*"0"c˱D$sK*oچ{j_^yG/~ݳY 4,!6 Qm[*`N~zwZ0[P}\P T(ZGύ}- Ļt?\ROf~%^+(8^C fgfխ//~6b~6)1}կh,TZ8eudyHf6{f46 *`;hN^G89k "b ,F p8x'S5'E RC?zfzHcq[W0R:'==c͗]UĹ崡1ݻOB(*!q+&*9 =G?{M٫L9zڣ:%̼[Sċ"Y1ښ]B-%8 o84xإ\D9YY(Rсm)*0jѩ՚ I%[1ZE?V ̹?@m۠C#OxYmdU['۪Q]QWI[Ý6!aZX8L2UpY>1>} ^B 𕐙Tpϊ{{j7;I(&-gޅ5 s#x 9iyDސ B]3`u5X_Q%#E RDާ%%3/?AK:ӶsIߑ 1*+~^ n2`Wc}!_ c =!1 x֜3%mE g/S 3~+#̵ }+`iY8M=rR0?mCG/@FPgISud+H6N2qѕ%٠0CeO]Be re> Ḽ:5'9^ &dc8Ne Neׅ?ašjuqkRgWkFF[. 뉍x Tϝ$9n)Ԃ h&CfO>& 'oؖIJ:R:Rjе0^E&%h:dYɨJX*2p' [Qu0qκC ͇.`HMg"%ݘ,|j 9Y:c뤾@9)kKI)ڭ1B{e1]ZkY=sl6`̂.~(NYV+Tjke燎BJ'KyL ލAҳ6ՀޒوQ8UMNсn1d qJP N>6}IV.Z)ƵkEnn8@ 'rB7aVn:o.)mml'HǺ_RiVr4kX^,hn ?3dkFݻ`;n|@>n66ib}ܒzk[>^fd"Nu :-fΟ0 ~oX_% C,3"c8l5s`Lg*C.>r&J:v(>$j7 fGBvj>1an"@.j'`dQKxؒ.ըnZN"Wuw'*v?މx-{Lt{(BBʒrw?M>N_{rOx;2쫆?u ;h'8L;{$s˄+bM ݂f34c'AA]bLTpryأAr`*(NNi u2&sU[fh6Q>Q狹' Qh.EPw @ 3L e@8#Y Lcj(PC :M ΋Q(yIwxEƧ!'9f8`p` 659d@t7eZȐDe*$:)ՐP1 *y'ii{z$ID;}fJ:U=[)ꔵJ~wPq"o! NE$BfPr[Ӫ+.3%3Ei4x9wH 8Lb x2y*抑R ۝!LfjZ`ϚSl*!p"N1I%wR5C<6YknǩJ 5PH0=&_w8-;qmg4$flyN*qB)1_Au\rYK|Y$V^\I6Y7%WXC=l3UI}ƕKֽ `4Ez}ݚ<_hjכj9)cceRo lKƻon}Z7>?8n]/ vT$r,_y6WZmU}XZ7B+eIS*^q,1k(@Uo7VaX`A+p%lj R8R+2X %[38MR$]HAU=S%k6&zLJiEEd.=X?9I 9hL0)ǡ7>}biIhx.Yh(qLfAAA aG F(v K?撚J(]sЦ:BVYv()[(+DgJ*,G‡`J;cJl?1oL^6{q&pl)eMii%^DT2[klPJ(޴ʕfmHSEGRQJYN. k#yvHK9-@L9C3P: %lRj;NA\=)[#T9kJNJM!W'ņsA٧CD{gi~tg]i>qO4AȌ8jƣL鶌2Sj3k#QԤ*ueR UpB QEĤLERժ0RNm^Xճu#[uԣ]W=dH]̫_g OujKЭ򘴫Tfϰz+*ٖ$ͬg?jf%UK^D7Rk)իJ}Gv{m[1ַmoumnf9wmldJ߱ eȲS^L.+M8wm{ wiXK~ x.+x n Kx/ kx? x$.Ox,n_ x4o/$ձ/޵* d!kxWU8&Yg2b:8;d2QY<:!/Z#^N-}QKq0 'R2]r*M,F#sApl=%W K ]-F?z^oY?({B$޿Xw[MVjP Vt= H5\ r-brh'~RaGZB[!Mkru?a'jVU`oinH!tmW8ajo[7:i]3A"j{Gy6:ר7ydt#yh5瑍t OjP˩ 9ϼ7qol9|I~Ԟ\ɟMIϯzt!ezp:Xo9&we*F'mi~]sn8=шea:qxCxXS|^*\/W$4t͸xre@,^zU8+"x7N]T*/+0]פp)ץPfM"/W2K 8VypKuc=+eul@ ltTڼea"ZV9N]}BsiP$|g|Ry Jyf |W|H@2y1:R-BP-w {ȷG0~}Xx} lj{j~g{{7|gl||~G|Uwx#0a0w%Q@2}6:$ѓmyflT==15V?#v6r!?r<ߠDi-s&aH2cNiLD"QD7xHHLfr GmK)ТCv0/G_X/ZLq_=N+29Lp& P\Au=u~R7X>"b0>X ׈vq)[><vAypG[[f@Z0H;WurY}+,uiu] iQVFviTmsChGl& * ('(98-Y-awqSQ޳]{Ru8IoU?&3.0 l". (9Bzo3RDvZkW^嵓' 19tx,9o)DyH>+F35n iI Kǔ KٔsEj+xH“}6>bV9HpXXJՄK X;gCVr'Opc+q lg@b$!2MљK Bd VW$]9i]@7j哕K;r5i"v{UJ)1A) 8"7YX 1Gt!/˩.8r.@&.rX o]# 1Z B' 9æqX<va9 cHt%*eM?m vfwYR1L-ș{3 ;2<АmE z !]3VhmZ dTE$*>Q})WXn-OZ|I`7"/iFJF`" g;AD%m~S p5"!Heѧ:Z#yfj@9i ` > ꗝƅNpAio}pz` [:^uJJ" ; ;A :bF$"}D ݷ,G9p教)Ej2#j ~72zN991CDQzŠ(y*WhA~AW"Z{kXSSh_ʨA 1HCj49CaQ;J0԰) :oGk [J<`:HNTM(RLy1jc+p:\K UB) 9z$ nY;BC:}D;[LDԤOz yZsnٵ`3hxwLDn~v^lfn6wSv FSe#CF۵TLvT9zh8Z-ZoS9r;tp;aR &f&i@q+K2Rpyk۶u !jCŚkF81[~()'|@R'u%Kr}{T+3<|цBir{ PۅFG$W<H&qr}SK =tdB˛owuWh[.gR{R𺃡ZaKK;/*jm#W+ASW{?+,n.۹:ǜ[*[1 icƃf 6m e]0u= 1#q;x. Jz$ +s^ ʮrpy&A;<1G89/)QKf1n"ņÍQDbRtzpXea` ?ꧪ@xewhoh9;5\8+pʁg#l@H+ ɀ[yї+;\{̅y gњpTby;Ar 1L Ѳ T]LP. [~:,dNiF˙s#{Q΂Ir.b2'6[KxvVq|skK֞yf ԞZ*S%3r&c]))VӵR#$Ck[5VMj ٱڏ&=5uьE-+v͈ Rm8P˯XZR_`uzq5-['bBCqR=\yKp"'r/_JE,Slas)']ޅ؁c>L@;' )FAVr8/R[؀{Bhaq3-.Ƃ*e"}'㍀| &{S6>qb|:S#(=[r\V! @@P<4uoԎÂ29A>7-:=C2%shF. $Eݓ >g>>;}|Vl^+M UE;4鼨_rgs>;lړI)>tkCؿ+4{.½lȘאD}{8Yh\YO9=>R w>ξ`g{&J[8V*EeI° Kȫs XлpLϿyGO!#TFṘŞ\DG0G`/>\B&&$K14QrLDK'C% !ı #1S1aKJ\0s =n>AMmHUEBM 1vقcEmd])&"}MYI5V-8mqDfF.J^B]>c iVBӊ}W:g6yCVO($AgR&U|Z[V WCz@VzmLlt~gB3VAC:WP> T\$/0/4{щ%<'9a)[0rb2.pVrbԆ.5NYaCq)Z\PR2ND!&(}eS:J4LLN  #%3%ԇ84jDHDHriby,E]Rv$]0¬Hc]5'Dg37RBjD,!+h&/ɉyqs 3ѩr[yFԥBSq‹|B5өoӢAta6%"a d1h;D͓N :pEĩ.A&tJa#xأS?UYDsHFң3Mr`L?;8TQDR]>+U|ʊyjK(CiZL-N7mbp*Ry]Sd-XմIE{SX@ZXU!(d=6!6^fzw-PVd~Y7Nm#:vzR*`DZEbU\m7mi%Se?U*GLjMYk*e&~Q z;QqQ@wL'$9Ӌб.B-Õq1cPXJV;XVQy! &3+a'V$s&>{r"qw&(eITP'eiWڏgC<ӽja%*7 s-(ʒڅ};-3Wcy.1Bg:L3hd{\hRqZWeUkh/x6ԛ[qtƒp+6$(°F҉t. 239o,8<e"UuIȔA8zRͮcI-Lgr{m9Ej你KLo6 h47_x\ Nv*{zVÔ-^g4iF0Tל)%g{%sЪ@+`=AI\6YEٗA\Ldh\~LN6\ whM}Gx@eԻ^ܬ+<| уo*,/s}B'K;Ĩ7>\YRǹ/Fn_;J EO0yK м?9e(Q/:` }.h/ <$@fuϕ |p̹f{^Jlj O RXN.>o(f Ɨ N/!4x,r zx&/ n>^|ɗi4BR%ޞ-퓀&;]M^ʳ$jR摳TJ/RC+†>(${I%+0f`!LҦ 풖RP*h o# R h|%/2/ُd20h+21-Ѳ.W sDA//kj1#siV*w L5 |;k23%nDP8R08jG1 OQn 8͒43D]2>V 5;u(:IneX6c<_4Sct&i1l(> c <0 44ܱiSKWDE^sCG;OXNP54OAc54n:%ilt{T.lB+t@?hZfx%@ɅC1C7HՂDET#?D>p= d@iCZPT7+KDxGS9xN ? T8m mRx=<&IQo~(e\0,HH5S۲~R-BD0/rJKU-iK+7 (V=Lq?CfIؖW365t-MuVYHVRkʎxZU6ӍBWPDO\KG&Վ\E^W FUP1 >p(7R%hMf9 hls&UU'vSAZM(5KJ]"VPrdN HGYn.unpmԌ\d;q3.T*! +rQq2_ps}sq7tsavqu7ve7wkvŴ*ew-`p<]vWxB"K&7yz Veu# SzAA{|W|\*{!w|iv}~Qwt,WX ؀X؁#X'+؂/3X7;؃?CXGK؄OS)wAB7A#v70gx+Jgb2l&+ 0 #p;mZ%tXL66Ҝ5%.tW\dl~A42` FmZ&v b%x6ktouN{3?(76$ Y,¬:91u5A6pER'` Vgy~Ad]&,9yb\$}!L< "@NpSzdNIʠ32mED%TbO}%@*(GY(yp⡩pjWi7TUNKli m! {ngDa`ZfU}DgBpifmnph|d:wlT}2mV㥯&mD}}Djtz/Pmu}F7|GXȆ4y6kduGi^eY馃9{-}Mij DQz9DCqb}FN=-8D󺱽"oc{'f}ԙuE?szD䲷OQʯRGeLK^͊XOSGU"#\`b`%h51Yh_fG*śɧ͘_}W-vWH2a#x87€qݼ]D`R|sս[!n rD3{ϼ17+±/i71n0_˦6VęZi8NHz1'1*Щs. V|GZ6 qꣴlYJD$?:jj \Jdӝ9\ Gs>t L51/*)*ʜѻ3':h&u˽kҟԕ6՝j3z+eϿ^]a"Ysh3ԁnqBϤfkaI]c 1ǻRې;W;EHi+7/ڷdBR0PT':]| օQzk/pHy,+Z$ke˝\B(p3Y߅PprgN0Fd#sҦ*"AxO9 ĚsKŖo ZeQtށúE+U7v&1>@ˍM[=Ž\d$) + eł1U֤,-Q)0`u%v߭11`8yY 6'^zۂRDO0YpxJX\0e) ; &9AQ*?#/l~ zdzt lXi @Y߃ ܦgIv q 0c.M۾ʡ Հ:T bNH|RVjqg~B\ _ ݘ6T!f^a`[\ᤠW"]"R$g""XRA&g*VU֐dܖo//Z֗pAi Sf]ҫn!S.(3!r.xu_߳exi+4=R[h?h m^8q}#XѦD#i4* )>IX-HY%!6⑙B-i?(Rѥ,r'Nc%V " ImJQYGNXJKT-\*EW5k۵YirGd#̶\ۓF-^ETWfdbɎtlJ5u9uMHT"ƌYj˾6Jnc ]N%Z:э;sת Y+,k7nSJZAB e欒I%VEUSVt!W%5p!5cJWL̅}wY']dܹJ91fQXESOe8d߬(;"M=xql]XCi;EQX*O^@e="GQj儼٨v_v67_Xt7>MiaI F!IUYv]`}:#L(jAy8#/!idޱNS)cWbӁ X dp%ȁ찱.ܤՅ! bh=*xƶhspMei_t)+( ;_l (@znڪY}ԑuV{tgsSrUT*ZM8c K.6йN,dvxde"ڒy&$`Uh^ɳT\p|IUN cbPMGb{2x6+ձ ϫQѤl=kU6l%6NIܘ'ڦMZ돴%JkP9~{LsUϜx?7y%24|,QJLɽuX̌ɟ;ghEǤjo -1-̛>EÓ8'SGLM2`7¢7tbx+PG" ɂ{.A";I 93u}9ە̡|K.CRO+Ma̺6J,۫YFꕇQ];LXCD-\%Gp\]š0`R ,F)elÂXEV:1 )TqQV<ǜjtA)Ny0(-Q6|Q10INt\p\$VI㪜CT "#Lp+yU\n;$1 C$n`m>PsRX&&j`0n1Da1cLDGP4p|?r yNqٯV"ӊ!-\j`@y"@[Tq ^{2lN&;EPJJ:;9Ztԝ(Tr$&9 d]P) ڟt/Bh_$jN#r)Sذhv‘|<ƅvYWt0YV\g}"qPWQ%k؉1)&[Ǫ+/KUtqE\z+mT֞ї>](bU^@թ[uV$ R5xZS, įkn5VXA2f*9V4#U;[ ;L1xEE.` !mJa]Un"aJT}.J!NjYʗ'DJ"V+)*C3!Eeʫ΄WKw jy?߮sJHk}6xKn\ʮBU]uTip=|ܽf x[LQ開Tg X&LypГv2 =v*z 8Y]4#HWD^?hjz2u޳QP?&~ssO]T)s#~ A F3ń6}[Wa^JG#J.F׳3귝:־6msqmQi>w栊Ont;Dg ~7Su|7.s;Ni  QuU8ġ}-; ?w/..rOj|S]/k}טӼ69S<>9Ѓ.t#+y=3xSV:ևg^:.f?;Ӯn;.ӽv;~;/?<3<#/S<3s<սm>9;(QlR{^(@s[hOكtko'ɾ蟆W ӥL;t=OطnFk*7;/Wwk~ӿ-{Sբ)A隯_͟`E=۠!`@߼_x]ZvK1D0H?pH !X  ``!ED$R lŠT3q rA[  z\8N#ꆁ!R!ĵ$AaU  !9`f` +R[zݠV"`\WhH] eǡ'aSZU=d9O~9`ŋ൑rtK~VS1.Z(fxpVwd"N"/c)sEc?dǕY6^ R<(4ѓ zW4Y<}Sy .`:.SC:㛸Dcq#=?_`ꥏx`HWKS:|?jNb}aM(jf`XP'8&v6 Z S8P Dm\~t`t zc 0A5DPJl]YȹB bÀHyt6xdaN%gp%tzE?H?Ov[w4@e H"fdm'r5ՓaƁ N#gL1VŁ~(l\%jH M,]WiBL$m!PNȖNmE=x QH˦Oy)n" A}2Z&3UmO+MRYT.:AIdnoI N/fqk yE@b__q.'jhQ+(Mւio4ߴZ#41j},2p0\yCƭ=yi^?}/{r[i\Ä]c.eܪ/>3??3@@4AA4B't 4tCU\eHFS@`D_A<HF+4Iy@tJ]@ɢKd.KLGNS4L[KIQ3$JK{tt44`@OϚO`P5X5-u%@D-TK5UM15%|X׵]KYgZOM ]ߵa,aJxDv@d{d/84DAesFd`8pND6Kg?fhOCklcvCeSAdvJ/ChGi!,JwXLH\@IL7u[sS\h`/D_@vk7tCf`KKss7yKpytyG_0xwy\wuOBaT79?Aw~>Z?7>(~?>K9;>#;t/Oz,z~n/w8[?7?z5x 5k_=TA @d6yLyH4_pRsmb "I)EC@ѩ5?ejkKk]݌Fk$=MFX/UeL̽@(XamtTxХ¿|y~Iv" OQ`2geT3n!/YbH0"R')inF▙*CcD"*l4jĭspj+h/`<,ˀѯ.n'# uJ,rK.$ݐj _(w[i(4\UCLbEF4D,N-4CvR*F=Ѣ rY8%ՏqQ?4PqO.kV\su׋x`hZ X`OF٤e=*vXgzħL,je5"d`ı QvSʹ0F< J` dù$ 2xo! | -E[CbS}%"἖>^syg{Kf}/Ol̤͗h:]Vmi_N#7>i_fJj2 j~C. Ymg ~G?`w;J ?X Y{8=%Xr`p 0.!#9"Ez~}/~k U'|ng! ,  $h쨾i´Ұ]n1Q¡JPKO%a a\OBQJ.jRaN4Q|rl@d O~p|ua$fhz~jPws(# 'x/H)WZy8mc $)*bk]#*H_m°9ƪ"Üce:"g #z$3yӜ%F+!. 1!LoX_(xb"/+#! ,J  $h쨾i´Ұ]n1Q1, D#0}%\K@EHJ@u@-F]J8MHf$'|O!!,X+  di@,kl4}r ]ر-UM3zPaPQ=f฼P ^9D3} QQHPj|* $<>q5} *Kd*i"BWG#C>wFST'c8$#)V!!,u a $h쨾i´Ұ]n1Q1,gS]Nv}bhTK/zvPX:5;np@<8yrBo>:O!! ,  dh,h+ðүn1'P$b0LjDV.x0R|Z;=OgB}^tMuld\*/"~<8HNL<tFJUDH!!, K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,,  di@lllt~r>EѕT.WM3}MUt4ٚJ D(UTT*"%qWTnt"=T# zO|b#j"* #K"+:ur x#j G$ ``$ž$yd*slc" %P{` &>&wʵ[)`F_@+=,"A8%1m` DsBXlNfܣ! ,  dh,h+ðүn%O$v $<.XK5 +Ř'9C>N.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!! ,  $h쨾h°ү]n1O1 8FtiZbPPzz Sp6h(VNv*{y@ <w:N_Gm%x8m  f@h44#/UoN]XIKF>><(!!,  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,  dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB' '(A>>v>W!! ,+ s di@,kl4}r;h1c`@&M V6roi#hs&0:|xBb$db_\YVRNHD<^=J!!,  dh,i+ôҰn1(yRɅZ\.'8JS`N%' )q,\"ohCq"u@{z ' @#tC~<$a)_8s)r.xjnIJdNBF>:H!!d', @pH,Ȥrl:ШtJZجvzf&p4tz.e~KP~EOC K FT~x rWTxIĵd[H G XV҇HdNdROdCK dwD*|{I Xlcr/D*9HNŽ\0So3a8ɐ['2lxЄd"1MoNq !V;qe{UQ\B#me!g3> DV0d| : c&cELXfXO:Iń L!Py@Bw)mh4Aw~&nkjA^>ub]昰9SI4h,. .K[01'}e'C(ơNYģ;#}ȥn9ę|#f*:i B `Iiަ,y( +dg2軶6a) #JjBb]qVam=96 4; Vs!in@ ui767ǚ$fW"@D*pEqtPb\\@ ^CU4S2&˙LGhD(4<-0.b=og7"7 s +'?|e vH͵~eGvV=bWӉ'DIBM43oe-Oxތ:ysdB@'c-ނNe+T' ٕ}nSZl,z7<3aۨDqOWD |FH4={fݗOacxOx}6zӄ*]ޓOs?  Z@=h4$wU!`M;] p?Uo ~*B`;fgH kYhI$]PK.UME~>+ T藘-(+_ pkn Ĵ54K 1=2ns$B$:Jr2T5ʌfNA$:c21%cCD;urClo)j]#OtОMD6c 嗽XAƟʱ}Om(]=uc*"#ٜ̀jk`#99n5{%`EjR*bH/Z"TC3zn q e7P*a˚zeLs/*GZ OiW bpXeT&K`]WFD |/rW@ ;&ĕ L(ܷcLW/jȼQYK\pk'E@;*=åbTE@&6 eO1e^T]\%N_HZㅧ흯! ,e1,M`(,k/=0JexgۀH1UP\'T 23y^iaBxNP:z4횜>5=pن\Yd4JUo>|i_\5nUc.Pcȓw8CnQ+v Pݎfq_NHjhWǔ ~Qyts3QKJ&nBn{ԢngYgglUJ^q0ZRz\! 32mK/=}_K6yDZ,e I0#Ra'~%~5S'|5G)bŴL3Q?#9~Ҧ}']"jV&W] HGHv4mg9?@4MAp5fo3q&X4W]=U^IY-3 "8:~]eEcSd~ڥTG b {痆0BR}fZxaE&& $20H9r( r7@d*PlҰ .&8T'v>x* B5‡ !%p-P as<|Ӈ6P (EAYyx xm ҉ x q.@AEA#f&|T~Ipg7mo5DCē7]h؋9g"M}#-&%bfHm<# ;$(ٳ<[ oi*4T2Vӑ`2c5Tsf^8DS5C/T3l_ p0п~s1G0KvA)vl:dxizYAџ9рqS{Er* $77Ni$7CA ڙө 5 ; ԾHw*5f[&9˜= N'9`t{\dl]蠐ʷ:9LڪxB1)UEሐw?e($ظG"y+@FY{43B aY1@bd͍N|K)Dڹ:=<#!Fw4C6L"4$[PWF 9x,=Gd?|DIaEdi'YC_KB}'"=M@`?@&- D"֊AC$vm l~q=QAAߎ" N?I0Ol  -3entbmx8Wc}e Wf#P nz{MQ_yWkZje\CufuZpNa5G ՜-[\5sh!ϡsכּ$tQ\xݡz^5L'fGx̔z@CW$]o\vo$_uq=q͏\!RiNPG`q[56t]Obny]|O)'/t(XJI%BxY>Z.+S(H\.'sMB!,XPx*0"ž *2"303# 4UYR-J'b Yh>$ACPwVyg *&e۸s>՞ 疤IݒӾܓ) ׳1% ]Â/%];N끌N+V+Gu)qd9*I)a0N!$>1`F*A"zk!? / SC)JtOW;*d`n1Z7lWKJ uRuA7dhuUҾ47dҦ1fJfah2vߠ!N]$ZlUGDTojewZtMÏaGM_̇kǒpEӥõ2ο2DԈ`0" ϼŒIJi73/ʀ.yʨ'[)ʍ ̀ +3q,+nEq" j- zI% r#3# 9̳˴#.K0/23Z6Jl$(=+@K8R8,IKC=<%OJ7KY9s2b4=&E5&GL|D4f0)RV9(K:uP0 'L2 DK_9$TDZZAB)zmܽh\UI=tXy 4Kh@_$(;&w+q)ir܃% QA^(I\ȓ?5P| PVJ,d6&B Ί )yl@LwfjfގܐeLSmﹶ}lۖuC&:&X"Lvnwֿ4X gBA՛m]Pvsgu`7JtŠ..aTW.pbŌ7rj1pk1i'CV>6]^vB?HT9\ѱ!q$ȳy]~ŲJ9IR{I_Fezj>5QTѡ ojnG3,5-"(r}L ^/m#HU<-%;ۆ# HX0&[X8,HͪZ &#) Bؕ Fn~<5,b2,7BX#sd:N2|eXtw1qe6`ID@"^`x YHoR@,/h׷E$WL FC2Ўpғ 6:D l \&ΔPf1>H&R $ j\I5 s2i01i-,BH'ڡT[dbZWS_\H%a g,IIxl"0:0 Gxbt ѬgYAIf>'* k4!R͐@t;(9HcSqslM,Rb#IM)@e7K!ߩQ<俞 E\8_<'š쒯+]'bQӁDps:ƂDZ= a%q5(mTg2 uld>+0qmVQ{Cr2z{ڕUMi MB{N(F-R(qj\Vp25-* `t7!+{/hL#>Sm%%Kܾ+qTPG{i ޤ7>?> .@=4ZZ dt2+|}~VO+ˎ9/vbg:sɦAȐc䘲l44K1d'[ѳ&=MrN`f2@KJRK sptsŜXz3Ԭb2f#hP0T+=:q{Qp55Wɍ+x9m90(q ⻼HuNmI36bv$\+ ٲᶶku{ @v"ǭj`B7$𦷺ݛu#5ߛi'?(.(ݖ]pg:Ҧ1 {o=^1;-ar? 9f(@λ^r`t<=ρIE-mtA )U:fmv_޹/=I&^u\iw;v>}@0M$%m5.w;{q.G_mgc~|IwwKw~ϟ0p 0p!0%p)-105p9=A0EpIMQ0UpY]Њ`نC nBlyLL˒N|6J-lpVd儐 O ^t FT/N-*DVD)֬\//NO/J.RGF21Jr?vϢhC.fn 9Q406Q4,t,dr˹2 L6& Vnq^nX;1/)جQ4Oۂq,@QNLx9D7o7oapT=n kGxR`rQqp&VL!΂Ď3r"RR NTo"3Kitщ!e,r&Ϯb: (,50& r GA˄r) ψ. O+b2e!*ـ(ɲ @rNR'DBj R+W2, `#+- O'+Ca -tsZ@-Ѣg+%%,C+SM'-A: ,l,B20˸,3UӬ/3+{*,f"=o5'Ƌq:-8Z+ɞ1x8KF:] j0cߞG&'ȳ\H𪴨#ώ+: ,\'E f'l;&s;<";͏"4(?iA&oμ;m4,q.O 6|qscF.G/~ *,(JnJKr)p 3 L}DY/7PkWf yQ8jq`ƞ/޺OSq /Ԋݦ5cO"#2Pw&4#AFCqXa6fR*eRd+)%uJDgff,"!H\1]g eK9IpU[kJEL5yk6bguqJSؓNkzր"DUNֆ\Ra[[W9S}W=6bvr q( ͂)@W.Tn$U,HbG(kr{7 8 E)t!1U uxKUhU+R^YE"gpaGk;ݓje pŀ]+:!= T%KE-fiW2t#]aSl阶;*KwBSjvFqe1d WAVwsXHq6xmP.}+x9ACr7F, Y72OL}HHH'yZGu$xEC7ІqhH*C1_w5X}& $596Sn7WvyF1CKC5y9%|YKc)BU@v_ƌML/L"{O1CBe7ӵ8pv;.B>uIGUN#m1q7PJ${MIWK1p=w%NM_n:iT%{yJW{gUX$.W$vhݹ;bͨ٣0a7Y;6^Ug{ya^ZHFbjpt 1mgكe6(h LF9=Pq7TVv/ :0:K^Hc5 Vlڛ-}vK&zBh Bnc]z1bSljNWzmiZ룎 *#0-Z!pIflY˯\r,>EpI.:.ą:)P2T\LMu-HG]RJPl჆Kck F μF˸Ht +jlaӌC㕧9TP|)ji@>FQpv>Ld2]p"~edtv*qB Z@ a)Ъ,$V.Up g-# SWc1Zka d';>B@y+ZiwB1&f]tv+bE{IfT6; 5AK, ؈;!gljg $L zRHT~ie!|M4p&%3BFN!4pЃ4R?.+ M,Qt -o[h"P>'Tʬ\շp!fŌ`p5\$y#p` lXY2CE )`=R+ BF:\}ɒDAJ¦v6!_)/f zϼ5A:b; WT؜@8Sw|Y6W^(Rc8R;,2lB/uenۆX β8@}>t?XjJ@]<;@H25xSj7K95Y߮vQ_Z,hh}<3K G~]>4E{R=rMd{ l靵DXāC"Tu2WG)n^n`&/y|*rpa܏B^(:G6QȣaHi(#Zy'K{N;ކUFGӼ">npz].L >wO~Nd_wa0.Bm`Cq^vamX0)y՞hƝ9J@=dz > zV%yY1tXWURMQ- [c-F]G _)\P=6!/8=tD4dEy[-j=xaW_ȽiZ[X͡!\r%9ma$#R Ǝ  ZnT(\=}zύcEF)d^-J!

r<1BiV%e p9cyW# ^W]שc%9}`dcbF>9!xIWUXSOLX O:jA @#qSQR=  #1JbҴyy4G£5Nu@!@F(Ea T8VZ QWT]*=qGY-&N EJM0ca^&eu/ahz -@^an2QcPDZ얊QɦZeIfI=`[َ D3& v!'"agvZ$Q2ޤwgrΦ!`!g*e_lTэ#V]m-!݄%C) && t.d[F4\]D8`6Q($$WE#|"^8d `Ҡd(@& :QTؙ@(^#A& R'|+bo (&ˬ@j@.p(8ih&T>vܠql)qɏT(^fEQL)䖈rfBHJhj 0 шh:Tg*FefgvB-y (`R ,6* “A t!-<ΔaKpxT*Q؈QᏫC."񛕍(YPY@Jjj4+hK>rjVchrXvh)VORɛx*d PFdƀ$̽SUCɜ Nzه]Əejh.JlxܛOP1ڣ$UpJ]#b@YEMIe*TlρilMzǞe afbҶlRA KcJe~~+W&l:lTOlZZ5| AD)KOI;E*n:0k$ 7PW8<$rdJ܅@Ȑ*y.buzd LM~^ ,qzd'n׶WH 200=^Y*i8f^`@*G!N`t} -< r/vܮ+bM[s:/"C* Ɩr5 ?CtDKDS4#"q\dtEs4*l']rGHtIItJJtKKFLtMMtNNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[UcuVkVsuU5W2# /gGCwuZ3$H%sxAHB"%+0[^=?7O S۟G'8O¡> e3")%zzƒ՝L(ah;BTe-k3E1FnX/NU),4f#w4R3$o2aҫl/B7#>ZoO$_1$;囚L2+BxSf^-TM? ]o'w~3uZcmhvRbH:xFq&@Yw(";(Yj5+n*sc$w;s3;LX77ukMbs‡6r?wD$Ű2oGm uG[y::Éܠ<د$]8=] pgpp` ɓ\ og, Ϥ-Ҁ\U'в㣹]*NOmԀWX P',6N,b'Rs"j7c&;gwwhg8[&q|(uYO !qvx4RC#:K̐P9?S}ҩ{ vƐ0b;Rt<&bWCE'ElHQ'Q[jsPߘ]+)էEFO,5sj}$q&^ QIP(}=.:0}W>h]ɮ E oT@`Ym#K =ldߌMGq428u͓bw&&_s ;T=G ($H pA ahdP2fXJah-`@cVag)}0:#b*B{+ [jx0hKМ %-5=EMU]emuM< #Rl*0zbR: *Z#LVt0dۖc2tZ6.Εuh2 !\ v¹EwdK2ġhҪj gMo"=8ioCPzfXdVE>W9fҤ *A&PJM$^ŚUV]j% 5@f=$v"˃e^ΒA›E*ވ%ntIX:v90J!-ҤG`EpZ(,m0?=4VuLs#S%ٲ,{WW 0LCg)V6P25#9-N,gߣC.JFXJc ,1-_e.231B?4ZiŀZk`12M 5 OCThK qӱH-[i6נ ]1~uejMmUO2ĝ7z0|uz/Ka 4`;c*RWfeMw$5W7 >x2zŠ_WGV)WTȌ%KsIUah7i]-ݣ>6U9 yok^\cMX́ oݻ8gY 4 S-;Z ^F=uW_};t&Ù n'U˝nGԽlJф7.22ݭ[Ԧ7>{2f}78P*|sb4n]h'DOH\o=xxu[#j⻾+lr'GyUrOe>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuc @ƝSGBO 15LDV4, XOf-QLK 1Lj+L@L[.S ,$aЂWZͩxj+T\tǼ"A0k tj Ē0+&T Hxsz+ZNJLIM@ NQ?=>S࿦8 K̰#sGZ=ՓXBS-OӻA 8S,*m3E<*F-LTpCL9zBbȦ'QAzi Y¸ /2Q-^t1yuz}%6 j A42C1-B1 (R,졆 M<EB{*1P* q:#5F} VՉH˜%cAa-nQ"pT}W%mW\)$ #7-c@[+PՊO\5X!'=tqRLpiMێH4(-|+j:r8\:K( uUU};ӬʋʚB+ Y,٥@A]{]1ܚ(Z\]T|Z]"'vCX- 4N0^hPɰrI齞hJUTM`'7)pIԽQ8eeB'C zj\ ݟP 1HH011-4@ZTf_dI JHkU)0&FA,@lާY?5u5 D$f %ɦ/ƞkJI8ԋ<(&Eω, LN`A)=%nYH\7ݔC/Fa`VV: v<[9p1\W=-*ziaj- :z IBf.PNJd E>Zᅭd%nvLN8gCb0]#W` Z0g tJ1vs!ETw_Z۱#0YTY3i@C4jBi{`j~i gךgf ĝ5>eEeywhXKVg6ބjh9Փ|uAbe.pֳ~FFRPskyQ֎]kj%[GiSdg~4!hM:t[$oq FqluI4` BnDq gxYEi56|JTTkkZV4V_UVņ֨i>\o60D^_MY쀱F)^]SH]}l%m-_iPRț!?Cw륢oІ枽lC?j^ZV壱h h֊>pq&Lq&_cpXQշ-=(r9վomkcԚnpspՂVs`\frWQl 4_1-skmE] pA[p(m#ps.6>/CsX+Zf 9~f`鴺)ݤ^cQ= P<_UאY_(D_eN'~ 䫺f"(g(*rWf\>LCoiP~ftH0`140ZJM .GQ#8# k&;ZqNw僈8; 1ga"xkD"|ڂt,`o쒠=3+5+.ZBNu^o^& F"mzumTbw'@6zQ#m>8(5>cp#>BfKm ٿFױ+{/{i|E'5VMiǶAW+C ֔ K[()?}"zu CL *hh BM,TřQD'B65M *ɄŲAEA E4Uv&GԶXEAA!HaveЈhP@*Xx@ V V()9LQ˶8\tuzA`=d᪐0M`1td'6(ASzdX$)EjWy26:5[jƊBu[nELsJgn姟DڄdGtn ?fʛET"]``.Kt^` =&?),|JKR\N} P x}Gt^'DE&L_G`5ko6>]OT2 I|3 [ RCfW p' @;J>pR60+a Y᜔>C| 4>A{SV88*[]nVAUfcUfa]ĺQZ/yy6mTUTro4Ť3ؾ?NcS(ELMav^b)װ;! b)wƯ<4b 4Y^4 Ȅ2DHAΫl'r e_4( `Y+uc^nz<6a0~.JnLxU]Z#L,n|}WO)o\5sCl*Ba"p49Xg]نV#ƍE]c=jI~g._9WP8Z&覝>@{Dp:g3(S[2(e3n;v!ɲ@``-qwӡ61$Y*E+I2q7ݠMS!j%3o"qMilPr~! 'R }PhE7"r} 9u|WpE73s*WV{M5j޶|7Dan KpVcdsj0 N'WcWkSnWXUH5r"~Y](Y=4|Ԅ}փ\P|7T!_Qdpol207$ wo3@@?~jGo1A8@d~mh5A3emro&4cJc)X/AJ&\c7q2+7L]wZRE#O5A]6 8rB\($Ð92f2 {HFCDo]XFA[zoLVa8)!(h8kdjrpʓT1_0s"y]9YCmRz؋47%E`WPэCk#xzk p5sj@l+gkhtSt#gSږD9k곖-h|ynIkSe Bbi2Y\`"#e)>[yNa*wQSȆ>))91-E7dx7IqךxORɏalSZ]`j9Bdxz >l舗kIyQ Pn) q',KSi7<ٗGHsٌvTp۹bPGDXٝ @ ) ف}Wa.teXGI2A 3-JED9[!Xx z+(N,;8Kz%%\'!HU-`$a)P3J 4ƒblSJ|Df' n(o\Px"j'"ȑK<ʑ_p)f2!%*Bǀz#`1:"L^|̥"׃/)!4IsP^׈9* 8THǣ"ښGDm8/}V;E?m8szG3 g=ih%RmFi >$m .Nn .Nn-}>`d2sJV)!&KKZchtd#j]"CL0uAvH>.eUלtI5PngnAg]c#<[58:`Hkq[}i5PGB^N5`~*p5 @٪a dy|J]3 Cȁ5ۛR7k8r %9e8۝^4F63գb]zkF.MRDb0t뇞NNݫ8WA?~7n6n .о6M{\c2eYM=\󊮪j`DmTYNbF.@ʮ6>41^5mݭ9#ãVN˓aBD tC ]Z$!P_L&bAf @6a^fa'l6f~dbV`P-c4bb(rf鵗a,/.^eIF 2ceR6%w`vg@m(PO(le?;V`|geMR )hlaEϕ(/keaAU27whI.dq6w?)I/9_[dhVf6_p'1O*ᥱR^RG"{oo?a1ym_X??gA2`#h?6'@1 ۟΍ABOdu{C_+ɺ_"L_ & Fn # Ckm@ $^$Dx8F$JM$,rl,GPV3_#ugg Ю()jLp 2 ) M1)Cn/PpaRN4HNXo 5x.!,M 64,kZr@6`k-7W\^vpYK"d  [.\-2@+s:n,^"@ BNTHaY8i[C*#`D` 4( />PYTN@`:@儗C13%`2 ,ígTyB)طp;0Տ_B0E XbrMJ:\pfSWQnUMLc]Gwc,ȖPf^`]ɂ m'PdugK.&LO0Y/!^o3Zkĕ\$)Tej@g9RLks@}: H , 4*,;Nrj;% 5HĪ^lO<) :;q| (9XnRd{3`ID2Y(܌KZlYl#PO@1,9"$Pz-GP"1ՊL$GNǮ͍,Z4E#A@?I4 M;EHÏ43'D\،xeɁ\X+`Ԛ8;gBN/8+nJh+ÃO- dҐX48`> 0(9YJp :$1v p..27L@`4~0?X#BC qfp&seo#.zT)00d0& P+x y.o:!/g'81R"i+↥Ѐg,3 Ŷn@[m iB o BbXXnXgjrJ@STI qV4btn K`fNA4/C1nqD5+ƈ#Jp *616qð0 ;uQtKE$rҰ?1j`>L4H1@*J01rg: (iB'xڣԭ/ ,o%8@$=^µ*RS.d Cp%d"pjpa K,r "0o)BZJ/)PHL)3.X2MT@ X.2+2b.'ya`FU j2!H;$ K PXSk~p ո13Q+/s r ii-k f.U2@8}:ܰTJ&0P)ES$SP!~Rpв8 .'')"DᦑƇR!* f:c|Z@aa7wl D=TؐD;ED!6Lke0QmLDIH`$B׏B4Ek4sFk4qR2PztVC5&HTTKT"dE4B4nKKC-TMLBnKYtLEeLNPUPcP P!P4 "%᝖oQ+R/0Ҥ;5SS?OCP7TTOU!+U[CU DwPPcXYTXQXRXu[ntMuYUZBUZEb!b5RAO%r \\]uTT]۵T]UoD#ӃtO M`V`` `aVaUtDab#Vb'b+b/c3Vc7c;c?dCVdGdKdOeSVeWe[e_fcVfgfkfogsVgwg{ghVhhhiVii-\^U0jS6kVE٠ k;UK)PՅeJT6aku z2 l6n[BY4i]p9v2jTUn4TuFK4Z\% e`wT4̈9wF WvI,q稸 TH(@Jǹ \!<<2l"a2G3sh H8#KΆ" EXв{M{h3 u"aT.\}A@]Y)؃۩z[w]I(uKƿmL3/U=툗|,TU߹jM4[nyC3s)*Jp0^C-eK;ݠ;KA?jY_Zއ~kxj]Z-&0޾?c*/p*tMHCatWR^/mͩ>~wo)Di3,ȴŘ>#κxQ.Ѭ溥,(]4rGj%zCmG$ߢ~u;E?ָ";PZw>$>O^){{XUrڤIڅuόZ }L\ Mx";3G#vMq']{_\Q3pjE0>){/(Fe8<2@PFᤩP =J1:^7<.;>_YږXSPӄ"QY@dTE"!!cgC(ӔZáhdڙWXŗEoAn3u-B%Q)2.@y50SlkZsٌ#HHH)7eSwJbQYhξQ\ C- ~)<c-.Ƅɬ:w'РB!æJT)HX g!%;ʣHLהWRn)hR6aH^5P!A/aT0J;0Z,/O!>ގ7Uc5܅(hIBic"]$LX/#2 @I5s(e uG"d]|81]vs^LV_\f2^IdH(RgA!j)rzN3LjW(-d^PWʙbJSV8IeFRbfUpg",rqn`AcֲÊNΙD2WFB=,Qtw'˜;zfQ }}шEZj<ϡ/N*cz6IV)1<35 @Y,V+8kl<&8uF#)?sN,-S; !5K^bS OCt]Fj֌5vHSַ i/6 >8~kގg)az5rJܣ~:ꩫKg+9^G볣#;f>!<+?{𿼹<+ǸESyj{=ዿ-E@y"8&ڕ6iNVkO|d&;f/ÕT DbxIN֐8Ӌ{RQ0;&P)pŒE@{(G8($8g͝T(+WbezJSm4*Ҥ=§s6>(l)mD;iMC4v-u,9җQQ1Fi@E d[";lu0+Q/!F E:qec\! 8".@HV ڈHP+ X=}ebnjm1 0lr^*JZ}@j8[25km[ٍpV@ms 5ѐ+pGbujkY: *}xFJշt;4P7 -W[KcݍAY.¬ՇZ]4*z&󢂾c}(&v1daŒ mvk A+)[_״| hmޏ=v& ~v{]_]F]K9V(U[n$A쥇FMy}1qƚŠ8 fEJX?8|$m2󭿴j,: E$'] TB@8FDb\R<&U:J-6ٷk&q}@"|f=(pwJi-'YbueIQIeJŸ zE+,iC01[BG̎rpfy<mKjer:M9[gsQZ$+?#snDц>Ulz!TMrSS)FdsU`iIHJ{fgy?KrVC7%:֞&b: 9hl >)lJ1|eDl+ m uIO ҄ T!_\j:8+|18"<_/|yS)E%"btP>鉣H)(݊%-b-D| Z'u![*.aTWI`0G~c~8#.y__12aNPewp X!뭡L7ވEE96C8;*f J[کa؃90|#?t b20Eeq1 P5YJaa?j!Y~DD2vX MUZrecENK*ڕR¢:^䑰WAFEBBeI5!-F]XBAG{ahQ㉂WfH&{ a&/ҡ@N^SE$($ceTuNKvڢPZV^Ar*͙P}'\&[|yaOM`%b),-8e[ ۀ.ND؊zG]"fvݩ]"-~OfE灆Nޤ0V KE#:HhHtn菒)׵0Ġ1ب8<B;6&hy4ľ=@'`) : =d'S TZx}(>&QٜrT]QjШc[]!TFʏ=ڪ]*X06*aZ*z*Sh.g,]AV`%FFzA9 ^*5N䍐&jDiiTThgcqV奄ji>8Qx:stjgPiZ)~.pRғOĎuݷZ*"dÛb*)*jR{'0p晢`&f2 ezS pX?,1DcM:6XBku`I,ړqZl>Nv[IcJ #(.lVi\҂@r,a1, "i ƨ$¸alj\&*{kRX༶H,t|9Iԟ2nnlut:k#a N{wJTuOb6J2ݑf}*b&_!%/ ~ `GfF ~M#^SQin~b^dj6=IŞ# d5.<.j# &/n&z(A=fʞ-I` 7oÆIky^+j~b%RPMʝ=s)jGpfxnB*e$ʄz4~r!~xF9H^S( +!Na3DIn];R}ZZnC4lf,*B[B1*N4J>}Ɉ>p})+ ⦁1Ȣx)){0n$Jr Re7`1 GC2rixEr^ULEzdxS$Sp9[@:G`C`DGw"3;C(gc864hGՆ@3wd@xͩZlR04R4Ō=rAf/F/w5'Rt4T|Vdڤtl!4eXd0|I𚥽܎,)&86[Hv1nqPTv-ÈIr j&wmA˱t')MK7r3 ]Luik;u "b驒Tl޽evpS۵U0kX?x6ǮwwH ` 2brpxmRV`{Ir"UJESJepdRmQVkKlwRsGVrw֋;=DA`_|B*o( r @ yﴌ[3C]&LJLv;9 hL6y5lўˏK9~DvG@o'xO]4j :>z#5V/3v$rEZG!w"xʜLl#򾺻H;dECF (@^hE[1X;\c&GCrH{LO+*;{#*N{u;{˻NN|Iݡ2s otO`OYV<SO޿%>cSh_L vkoJD 3>臾KjųPD>뷾>Ǿ>׾>>>??'/?7?_N 4kak>ދU]pfA,=sRټA J/ި\R@8$GdRd6d#@id,r8XQJ5ox\>w|^cӋ)!)#½G"?IJÿIEBŀ0 L٫,RZ]]%9F N Q ѣmnopqs̳dX&iTwuSXYH4(Rb)F[3ECW m_1H8kBUS̩ R@$ `.M&5ΤYM-rN$ *T8IO6:K4+ƒ $O ;(_|ӌQd&ɖV<>M,tH@^[Z2 {oNT&[ĉ/f mQD; [}h)S,SCBc&QSi4X@BFt5׺s$9>05|5`әk-29 !_K#PSu'qp<; d; a <"҃["0'"7z#O VNSOD*Jt@(k"T@; ؉f$D#2hsScG#B#D$@$$%EbF+#$Pgr c;af|2AL;R(,@DiRL-))a8>M<:͸.z'5$PBUStHq"uN}U"ZCIƌXuPqG}xi@j u[iwQXQB Z(ŀ[ Uv_ ןNZߑp :Nȉ3yd뇂/BV rUcfؒUeeN*[(`hˋ$s h0b^2gz %0fTb%.Đ > hg)%YZF~[cժAj(Ҽ=y^ k©^\z2:j!7ٷ愘rwC&įm %=dw>lmMP@/[YU|j*Vzn]$guFY_ H^^*8ZH $ _WnJrAWZ5D CIm\;9& a+ f+n-n e0 ~HNb>BAnUִ6GPP6gA YrTAC,c9ݺ(r2%`NiUYɜ8Q  F166#(_nI#5ѺU_#.O*a޲Mk :D (3@MR6@9Lzi1fYl.CXuKb qOeVv@jKa6!9c^m\bY,ŊMO\T S`ėbv}yNV|k j.m몞O JKˮ=]S:Lm&EY{]牵\(Sͦ enGbr[@J6g,Eg;dg,/Xz3 vyGC /`^9܇~^bt7k rR 0༜;+m|:@ /*L닀jOh S\DKUH呱{e,CG1yUHwŲMOdJEY=6|_v)RfVtrq]Zs4afuDK(ܐOj.PM087uEXciRReS;KkN"4D:&sKRoH3CRyouzv؈e_c/{w8;6O6prY@e9[ux c\Y(oORܧ1n[ ?y-NdPN)b+TxpZzMQ'zs]r r̎I %o:[y^gs.b1!$Wof>S9^K=ltx?'"i~f"3Sb^13~515*A ԏS"͡Кt8 ^^jTW~;l=f^ԿnDb[#hc?% `8%#X 5JѡD;'R;˾fZ@h@ Wi/ 1QB(&4B*=!B(0o9"N*Nب$4:B+TR,>>`AI ֒Bh 7lBB\B$.ܹI1B<>@~N<*<3w#'cp¹(8(AԿA&30…Ax8!BTL]p}=H5QB#1\ ( =>̶(j2#"CKL>y:J#92B=EDͩ>Cs6SH`,|!yXN1[F c@_S)FzE#$7xPXC?| ,4SE;=Ns. B,DopI2?;Iע.zxɓt"QʲT Hd=LfXJPsrDIOs9p;?%J`NnлQ>XKYHQ É^:$n3ļ'?)R9 R6٨Hɸ GU&LK݅lq32k-#l HP4Vm`=+%=lI3ٺEȒ%6 h0mM0U!\>Y1ڄ dA]]Y,8[T>YV 2qŬܡe)r>ҍǚΓ:Ǭ\  :X i/B ۖKpY P8ɱeY֡tM²Cc6\|j6ic@C{RJaL@З$C&Tj{DDCƴzb$ݳTR\`!``E0%=^Ƌz DB6TymO8;ifn:6ł `> V~8(:&: PV&ݞc>dg(LC ˹֜ C&&QbgXU:mU.`NxEyPT3g;XcQCiԄjk=: GIה(Y˖k̛P6%mV1<T24"j$f^NP);(^A(u0Ҿ">!a7r+& <&s:_Aƪ-ow4~WF3Z3kuBxE4X|a"p8@1O S4[?!C1 oz@:o$oFzIN7O/P}zvgcR'A{50Rx_嶠(ăjqˁ[r4X_ +GE_F`Ȥ2Xt 'Fɰh3뱋VVC8`1NYCZra ckXbKCXF ~VI Y]GJtYJ FDw GeǮ ʻIΓvHePDGKOz`DR wv1ܴ9gQjMSx"8Vy$Iff]2(h`gHZLdϵS5vPR3k [ cGxgak,(&9P͌?^ C[]{3Xڃ"=#gV+ɋg[ԚZ,N Ҥȍ| c&\b>!([fj.p 9Ylolg1|hz/ JPm5'o{n)vRcn$0} Q_BB R؃!P)QQgWFUz%~4לw }T}$]Jס58pȟoPY~fd)Ӡ0[_j*7P["ј1"6nVQdMΚrz,ipQEl bYY ^tq _m!cz (cdZBܢXXCZ)AjK*#&Zx]Y*+j(^yzJ4.%{Bz?n "_{f1:y#iPu]x4eVY3PekwK'kwGܰ딴@H g$&Kr$*Bɑ+*+jͥߊ~uH<;X;Bt]=]|܅EN` 0VUV]SW _|29amQ:-hIوVAVX.j6Z'6Xyw6S Uu$J& ^֐S]w\R+H5yOg3g޹ӳ4uMYQͷJәOgoRzpE/@{@#pd@'X=_Zfǩ}-}A⛖4cPsGfoz FQ"O6I&D$Gj!ӟ$`@>bUcB MSڀ٫ƴޅ&3~u@\G*lIΠEEV'!$~&pP줒#pOD MLi0YL!8eG |=dYQ3 OɷR}&] q^`[T~E@\x+ m9@2*ڢ"' :hG1&Hq0ps[&= HzB%m5xf ql qxN "1.ѐ^Jx) x7 .P v)ZiOrNWVհg Oִεw^MbNf;ЎMj[ζn{MrNvMzGl(f Cחy|6Hcl`g G5&!#N@s\݋czyC/Z`GJ ݆91a\#,-K1H/3[ubTT]Kh#7 3"5Q*_N]/gfi2ɔbm<0qM1'<Ühn LR]Sg)-#C6h><ޡ W=uf ̣Ȍ^)}i!.m?@v>Q6^yǛO C݁R`n~O 7 |#nG{0R!.7r%XGKD4L’XI&%^!&ldV=Y+OA^t6nUeo`}[P. nA<'"4ApI9'>3uiLtrY0Xb Ȣ h7 ftA2%~H& "ta?d (Rb7iG21RDßHz m#Y٠L@.f IzArdɘk j9xEr`2pޓ8J 2IGyKBA?1\tkE?anhe)%,H uf! aAZI5"WE51(0h !  1g*#9CJ$eWHo-q)"HK,R jFicz0X2r`I/S9E ohh2}(L@$Je csJs eOwFwP>#K z&oZ02#0Tkwt~DN@rQa t$fZp;: eP 直X嚫çZ=e}䒛I.)CKODP`"fd{і/4%.@1&M4 xPkUe" yQ:V+>"a{ X;~.{pa=b0h۞%Ye1G*ɵVr/b")MMWc{hfvuuTK 7{$b H1z AU$+ E{{w#Fk ?9:?+N(rxֶh7e'B9C$;G:J+B=||<_@cQAMuFqXn\%'6>e~?˭J7+RLݩ"AjXmryZ(w}1! >~X@oϻbLnUΆaqfn+Z|m^!僀DgtY"#2bGn#!l=իȶ5 !I-w{ t]W,VU4pu 8JBI"&V='<=B)0 [m~ 5!t Fl.R{ C$>nbO'Fَ:).t&zZ-ǒ01c_СH|=AE~y1Q&?߮t1X8ќsC5w($DpfiuCOc|o闗S<NL=3?%Y4=OF̧[/B[=9$S~4' d@[Ȳ>-[0zu7{/-$"xO}CMR~;d[a~so0;X2 p{ X+Y=9?3=:u⡽PH]Lb XQd 2Um~$CH3K]0`*0NF&*Ɗ .Ɣ.8 4E9(4N%ڶҾ4Dm6;[?^6Jx/}MQDOC # \@OguÏ ..3=먴պo٭/LoqT 6cFT|X0M_ ] ()DG(w]:%IF%KHlRkN?&2 (ʨksaWm$̠p)rjU^"&OU:L i z,#2PJ˛+;pbEn覡Vb^K+ꃈiI([uoմؖ¹кa@zUOpp(98]m92W7EoLŹ @W Gid[XbZ5d$}kW\L᐀@g9Lbجir2 <,Jc +IPv 0*FX<,*DRB &રFC#2QO7029,Q:>Gcɕt,6LSMPrM6ݬ R7 @}` S T?}S9TsDtQ0 HgtITQ3tS:)P=I=u6Q4MD]MӥsVVʴN;QQb )XPpL0"@t8ׄdJ\YZ9SU56<}%sոpUkMtmu =(y- zw{&hիPހ^߄W=bJ%F7c/6IR K~/6TKNnY N4VXڜmFފ uhsE<% "S;'beZꭹ߫{.l쵥vxf[nԶh0.wޚ! 1)4"3Y|r/ ;y3 @ Z"ӦQVAŗBTjyF*UuԄ}Ʉ"Q|qDAۊb֒Oa] YqՀ$@#2+]VbIpˈ@U\vbPaY%Ivkmb-Z GXJ: H~"SCBڤ]L|] \@Lq}k{ْY-N0%8Z^ɷ s(\j#[)a@Bq0y{Z炡;iZދaxm|½u~鷻Meg7eYb_I5pku#kB5I0ڊ9Ѓ@mżЀ^m|!'c 0 @(1t*$K-l}ʘUfttEl)FۗM<0E|q=y$V@dI9qfqF\\h1DFNXmp4MGѬL4n 2cFK4Lc gWWf%<#?csph(`Ux8n7mgn[M2{ѠNϸxdkس=CxlZK9u|PWqETɑXpd[!4#u$M+/.L|\(pSwX!BB$Wk%9m*VR }5urv]k "?$2aJLiRHXJ۝áral(!]] Kz %uۺRw\ Ty9+.mtmW8^JD?v[(:%T ΄>\'I ^uym\fx!XJ=z35+_"C->V9"҈]U'2T%єj ~l/QH(@#NvB 0K#ʮŀl6ނ*J#`W%@0j\νV!ϭ(‹ B⮨. X>@rP`T~I `- ac0+%!-F<,%["T$2C_ jȑﰯւH40BpDo*.%%1 B[#Sd"B!&q*?Grh0 F*% etE"8!(@2$d'/c?B&ac*dc./d$fP2$KQ\Ţ2%P:-1wFN+h#ABƲƅ:2L!Q^+1n3 ē$r&IJR͖քƒ.," ~bfbP&9ͱ/s24A+ SK7kC8*1¸R Pq[RHoܠ$-Zib*,>\<_SZ03<2Ls;Rb25_.S@I&2N3K43=AE2]Bs@32 35H G3WD7±h6#*x)CMt {?+uJ`,& /Ap8m a `WIE?4h&M)TCtLT)J36:ci.-!D-LPCfrĬ#]Bd3sP3Kz!0M250O!5$-5p\N eMVus8TTHDS:_qvVQCpDc+6 E`(">3T.[8.F1$QхDQ*X1 !M7) S5.u?S1~MڴM7P~'NׂN*Sc -]jd@\'2Q1* =Ds1RGYV]`>6~4M=qeb+NrBck. >_f=fwsKz.8 3W/6gm5Vqq,`i-5ëgaX]6%~( In`5ZcSfOZm 8VO\gU6SL }Q4- K)oCݲ^k `{r54KnG?c}vWKYEQ_ 7X5n (PW UDUUE#$nɗ)GK3OHWhx6|2=bA$`TuE60 1l3~v7Tsm_"T/vWh 8ÇwTJM3QsԌVzcsp F%؈'r;Xo8GWw+SIWWyCG0ÊuHtIP. 3A&,=B@ @bh 4K(6o1GPd<-a<4Fq8v$0WYb LC_2ܵYdq#+pp-pn/̝oBB/䢇Sҍi:zUnM# WrA:[%J99uG:0BKt3VyC,)97$葈QD,kbV_3 P4A&cHzBwWL bsŒ#C{^ r%L'&D² XXAfd;FV,PQd0[GBS* ~PfnmӖ55BѨ Zw/ȄgȺE_۠QQ$-`Z.1q/G j1$4;uUM;yy֠5@xP.WlH z/Q,Iۨ;H7 ű+eCKrXV *-VbQer-n,sn[!|82ΡO-ɇsXa:\)E'>U M: VB# YVAɯ/auёa^ \"ܔԓƹ3vя.ΙJWo( 6ʏ!Q6pCWKh [ !/Lhn6ErD@ }LW8c"O^8=E`ͨwEpk]f]`kԊ. A}D}LKc=#-e6](!PEx,BA}߁<9NcewH&뤪yŕݏI}ͼR\Wa@ OVSx|^'A㏚hcI=cΏ/OQ+-C$1*a^%\Mm>Ǖ%aH mf]EQbm#%}bтVҫp4'u ?]e4fQBU Q^gFM8 -/]WYup~nx_t_ex&-Ԟk_+i e{;g,GKuF(ogf?|k!q %|B)jb-1l>S1F4~)CnjDahI$D)\ =MRVZ^bfjnrvz~r,v #'+/37;?CGKOSW[_cgkosw{ON=/ٿR9A& 1h1H) G U[2rD`Ebą Q(  Q2L((dI!4ð S@vY䒞vB}'9Y" &CL-AG2(O[ +/|2A-5xUիQ* WմdUy !\Y7X)4l Ef T" (`84T~ T%@n"Գp/=؉.yIvTt 4Lwt8&}AҀm^|9T.YM W L2Iya!g%hEgEXcS$bW68j_ NiAgiwo^/GddIn|ou @gȍODq*r=9HAtD1{B :wPHz8(I:|ƨ;&Tߥ[:d `M 9j\?)'biEMv:G&_h+XvɎȳ߾:e"&U@Vl+ ,I͆lZV bOs@6S9o*JFZVJ)fn.#"QiɓXqEwfdfmX'>݉h^:!9fJt}^~pm]"! JǞyAR˖k|]e&ؒ=bv!QALSơ g!`T$}RXO)eKnՏmyi]niIflC Y.66w.m%ū.Wfqم^v= Y` Z,q."?j_CS3]:c\W59 Fd)UDG(9[ޜW( 9@|p9i 79J U3I )0-a{ϫ&#wMY1h 3NjjE=0C2bh#Qz8#)*$C$aZ H&i쇿ffDdNIةQ@3dX JhqSy aGUm70/QRi6͟@4ŇXRO\ I՝.[wj`Jԩ9PfF]QC#;֛հ |Qd9w!ث)I $(r]=b*UBL.Ĵg+K!hWe}w ʹ!FG:)X%.ܞo7QKEm8) Jb"lH_-sffq綍ޑ{Ʋ5nɂvp\pojWY}:.2߫a c]qT lpL3ogZ7'tfK qqmj{d&9.M >aY@lnh=X +Œێ!BE+g ca)%{s m?P՝9(D;׫GcZWVU:ν{Jol=( S2 1_^͝2-U$)h^]ދgA!U!bG=RhʥJ L৹Uߢә R ʹ80\P;@2em}$!Om^ډ8ID*0NVJ `Y\ޠIDԽ[@PIkLH_,m=UVHG “V!nx vM`eѓFJQU}ތ\*FdƯ5"-D !Sa ~%>]@!D`"N4f#JzZЗ,Kx?AW$d@icM#3dQDTcM]i>JDF&z\ CT~Q9ZeQ5_ Gpm[dHǤ#:N!4cY@XR5Rm H!^eWI!9J 8a+-eI 8&ߐeXgt_.ɬN*FbpA"e"fKNchf:i%]˼&#ek"yԔF&`RM@nvO+n̂G%A#l:v6ye:Zh[61Z` 1hRakFO5Zi J6j FjnAm>vȈ :Mx*4!4x-@F,b$ .b)DUa]v DH G1{d)YCf3Bn+(8*Cz`LkԞVtk:#%râ~B%E\Fl($*FgRlɚD6FB#Bʪ† lAv׭mЂ )E*2m:BmJRmZbmjrmzׂm؊ؒmٚ٢mڪڲmۺmʭ2$-uAʔC'8@Eh,DW߾AJXJ: v¤-#hzAĜzSiߐ&U]t''&t^"A뮃}EzcXץ I$^]VfBAy瘅I~po:/<'`loIzᚶA&&}QB9\kbB./S/랠pA|n։I|ʃtfbDhx:$n(wO8L$$$q%p4TpobY l1S-iwBrʰx,CDI dK"  5 IɥD4 X(!V2 ˸|Ť`La9 &?OK(xeS&+'# +Ũt-z6s"2"i /G+<̋%3)W5?q,U 3L+ (# &K,FP 0-c$2ǔ LH"1bQ 4;ċA"MNF%WBL: &#lD !p lBXfH}5esN &g%@pەlj !΁Pb'|ByFchN0bhfͣY@RWގZkI8PuL'2hv]aduFJX?5Pf^stݐ^&pU_#Z'(ƆZKWwuvec5Oh}5^+TvU[VW'c^n܄pYήOs4"#L Mqt ^u{7y܏"I$XenH/$ 1Q?vԷL\$w鍒c u e]{ 7Ia 6u[dYcxWXPQA`w u$,Ic)efqIzoFpraEJ7eѧwobK1ii01rPM98zoOmyuPa%oeҐ VI][`wd}hN?W0^q3G9U PIeqAB ڎZf+ӓc`luw1l5H^,zXyz=w2gzqαg#'RjK C)_JR4 ORR}(UdG *Mޑk?n#r:iJTd4l@vX楴lN %=cOl+41P{$JMKu$SpSlΣF7}҂,+ pXi9i\|= H bz~GRA";;֠2B}{(_Ka5ېj8CSvW·Q{M 3;ٸ1y=Sϻ[HܷW;zt"O#mMbfA6_ך/O!j_f(wŏ}& Y7uy_JռHٞ&TV?R"8p洨QbU@Yx(/E3F` QW&#Wg?(>ܱF~ L('b; ?) NW ̵-qGe{>Așh5u(9ܐ4LcV.+gK ̅z`X4ę@2#D D}{Bp!H7@/! f~Z$0N$~ҩK}շ~W2?tx?($̣3?>#+ ޣJ@\@R@J$A{D tA: =Yr:9{AoS9qA|#D$T%d&t'|2<(BX+,-./01$243D4T5d6t789:;<=>?@A$B4CDDTEdFtGHIi?Jĸ%zy"#GDD#"#DE-hR< @"h>ST|:r^/8Ek*+7#H`t ræs& ٺGI$A{u-tʃH&cLݙAFˣI Rr>C=w9 "\˩J +J[Ap˅Ա OJ*lJV+˺JI2쁀GBkK|T(<=w K7tLR;L$P L̢#LK A#Y񴎱3J4ml=p7ڋ, O7x nY " ~ 5>ӎe,4PQG;PhX9Ple`,Nh P ݲP0$3hPe T ͂ s?k&\ĸ lEM0u1Pո =LhNPO> iQQLQ1Qx08 =O.j}Q5P-)PY$@MpQՀM&hP(=Pd4?R%ŭ5qi%Ԕ6\EXH^83r,pStXT0[xfGm^fD3՚L >@"\ɑ䄐i܇PgScM3U}V$M]qk@^r%>X+N>@38nl/>:g!dm]%%4iXaW|Z~f fU7 f f.#풋))}j}lފՆ֖##lO&ÎV!O^6/K颸DtcXt ,,m}m Ugݜ•H2bXi//)h#p$H {W"qse%̙. 5fYZ+'h7&lnuU{cj{0k6u-7/trľh7ndx$Z m"҉ҝ 7?zI%_~4|a&ۼ^W|W*=8rwBzCb$n}%:N}t/gk1pƇefavüf'wZ"z{gVN(+P݂Yd| ""&! eb-BX4*sb.Æ"S$D-YPa֠p8h$DȘѐ@GPp'a):صe$i Qg&u1VWP׸ h@VDБqՀ&q(ql\gN]` 0yQظS*NUlF-i,=`zpK! f@||"q"Hj_,%( :v2ENEFZTȦp' Rʦ!}6ڵlNZP56&e+X0J6G6ݕ k87LYE2q-^c;%ʐtVfuxЦcu9]sVkxwvӕ&%V0sN5~̖NR_jMv a Nq&E仞{5YJef`Wf5H(6ə{nevˀbWjfM.c4WxH5ANy _acTHQArHdZV reLNYvz4BQ VAN7c{q]!us$v<֖YGeDZAaplq!JI!RG1QQ vWqTfyu!O ְy`zzW0뾮؍.츻tѢ?o澓anġ斫}o}/_mGޏ`'{>O7rkpϣۆg;lpr_iBE",p?nO(l _p4 op< qD,$*qLl(JqT,jq\0qd,ψ4qllcBP(;Z*G&`;r@"R ?LAB>ҍlYd#GHf\X KDHCϓQ$^Ƀ|,a.{) 1wPK!SüE (Pg d|6)ER&Ch!2[+ δ8 'Z\~(,%'j'<Ӟlyf?6 =[~IzC-hD`v4&9P`)1?NL0IDqt{=aORzT$*EhJ>ȁ_F. QHy6Цiid8 ^>[]EE˓S-ؐ叡rU:Q63<da53X+OG~*PTYYkys]JnF kє>[n0,o5 5u bĪx[VUjOz&\<Ju'ov!ȣ#;sXÔbrvTYp079%F9&WqԞvxJnu)=kZ.һ ܤej)nXWoė]셆wzɻt>Y pVE:j}%.I[n5|[Ǟ<'iVJs t^ZzY/p>EP }l`k]Q+ԷEaKcE {^]wr~7)6e'G6}0y ]ї}@}g7Wbk~M Uz55z+SVuaǶT#7u5S^^uVurQnva6bjUxmo'kFSGmPuxVW'~gNmAgSLW=H\~v~fqa*(xVk.kWGSfEnh"t兹wK}nQQk^vrEzQvzl#ׄrsmXq&ItxpiW\T\]~(}gR1!YmXuLmcz`n'rUw7ljsTS&ՈIsV'SV(n3njVuWCp¨T& ؆H R.X'L0v, 1YSʸ{jA~txa?H v&C&MOUm1gszۖWN0OXu-yx-w5 ɍuu 9ournݴln3`hё%HÀFȌbHa(Uf[|v2mmXKhs(څ؊vLzGr;|_Oukd*B;=;Uy pd,w%6c3bplJ>['?gP{"˕z 8Ml zz~!'b&ڨ\"_M h%#ubxhC˪tWp;N~9$jj5vMuc>HĺH6v-ۜ'_o1icp_ຜ\Zˌ{J{L[0O;$V%;WIbӺ|0hO9}H(;yۜ(QWzQ9d nxdkYU#xx mGkbx牵& *JH 3,'<ھ$o),gF:3 9\[k nhãHIDg;SK|Si  ¿&}j+P06LysK@\{yZ|\F&7ULxTzt|XK]yVqk<T^ pv2`kKU|&KV9KʇҘR"a`Zlq ]s̩5[)_ @*a,J[o ʨXYe^ %[>gʨkћb(̴lPʭ-a cS~ }щ ZQ U\tm̤pU+Qz.ڂ qqwws vR{ UQqi-|6G?bsUzWELw(nv#LMVӺ{0rRgzLyuMgLsg߹{< BnjL"tx=hW`F[<-?K=eo?ڮT?TCs܄L'3ިZe 7ӔHívLl}u_CAl<95/UYw#f_cQ'β[5.pmɣg4ʱ+͙Ӷ&2Cb=XCϋ@{OKh Ͱ &%$GQ?pPP)RӝhD-ky)?3jE8QaK94ߜcɴEZC>jO ECGVd iQ>Ӛ D2Ƽp~!̈s~0)c`w՝bO)*:/AZIO3Kjl-rĮyF:߷S V|z9!1b&4=zRPRҥH:__*΅nASKC)E*i|q!yg+B)vTvb4x*yuY{%m[1ʃ#uEW)xkiWC-6ϊlwRJK !yhoTIAgp> 8pe\_Bo]0i궨lwI8q~IĻ1 +8E|l`2OpJ C ͭsm f尼 bM(4ޝz oYe+3pq1: 4\xɨ5ݔ,[CGEa|F3)Z)_LߣllѮ3Ƽ E霴ͳjbBY[w'{bsa dg$$qiio&U\_tS8gk62]GMǹ.6g7.-묭dS%w+rXǤOIҍ wLSzm3$%wroҾ ǥLSӳ_hz{KD^93F0Ѡ2XbQL2in.z10IFqB/VǾ󛕃UF*#=5`9w7 !%Z:qdT$\S;^ٱ#; ;khwiiڿq)q@asa཰Ql ] ~I+ڧ>D(@x{"ԏ@&Bz Op^ -k5U^xb͂T PZxx©n\bmdgTz+CbHa(OlDQP J"]¯6꥞ `O/ i-.؉Jh~/x HNϫ2+ʃ ذN0R+iIAj 뮼P4Q~" 8 E.`DG?l<ѻJ$*>Ю1~$LLJFAH-N) v]*CeD#_PFB .©JQqBj=pР0Ӑ*lN2Npemٱ`>18KV;,I#nҮ9# Æ-#21(1[>18Fq? jj,DL͏Z q%@)VRJJ)ApQ'@-;c2%9!!D-\$syeuh㢒JP 2*ҀڈBi:. J'&rj#|7$EQ1on2E/GttrqlRso61Ha,-r#&k6k njZi -t3s(,!66qSpsS81#7s;H;U'<&9i8;s<+e?+?<ד.P0@ӓAAB#TB+jB/4.TC7)C+A?TD*D*BKtDWE.>_TFgFkFB oԼ/G?HT9tF4hhETIJJTKK݄[KLMDl\TMNTNN4.74#NOtFkP PQUQUOsQR#UR'R+R/S3US7S;S?TCUTGTKTOUSUUWU[U_VcUVgVkVoWsUWwW{WXUXXXYUYYYZYAMQ/5IJiG!b5[_ԙ Gu\U]5pTAh;k:LN#^ cOD^`Dv ArM@?`*4D.r.,k ߨp,kᤁK !WcU-V׆LZ:^ajڅϨ+ |t{;r4<3" ` $9^JSc6xZo ;DeO@-ڙQwwYڄ# Q ř-L AèƔ+ % `@[ ( K Ns1z",wZϰzڭy7 i̮w8S9k+Z}J7{Q6-z2ܵnel㌤ѭSXX-n)uoYrX(.ڠ;frzfAE.,=nD^єT,P|,dRοt\, /jƎzlʅ/3YL;T.#{sk}&F &Amn6ȷ0$=FIO <<*&osn.:PO߮O6$Oo͵6%0zf-POP V+]FVv!VpcҼPʩ3 WDS7/p}&!Oq[pHUL=wN QO,a]+5D_Sm4ŷ.D.'8W[QwmOq#߱}qf}Z.g;KM2) Ѹt5 QV4/3iiZZv21QVq0R `FCUw)) f]3|#xeiҶb>.+ۇ^NK9s"?F4ɍsF47K~#㨫;@11+Lu=Aaֵ*^ >֏OUe6K6_WH+S5Rf6G LQYTUu{o_0͔X ͽ'| Nta__ן__HHHj* h<"%|BDb,1CeF1l>5~9n=y 2] e@8Yd$M(^)%.&A\*f2n-(B1()`R`Pj'$0>CGKOSW[_cgkݢ6`Ts%>}79ov'sMEp!Æ*%;|(חT|<}2QVFR~Nx&~їtDl#X'mQ\K`fUvHfztoG$7ta(rF(BwuǛS !]Y#sTG` EW8 hAkbӗdz B@8Uf&#X1mDI(]Baf/JƧ'*QŠq]wHtDFL8!7dqץ% dW@GxPt ;үE 6V>@FS(2n68C@KD9f/"1! W+yI`w)S\"6!kN,#KJL.:f=2u~I͹.Ę"E1/'&8IH|h H܄ af@o]wb{VByMC/2SzvP;uqpZR%ZPrP|b1M˃ݙdg32̘#y50 !!օ` fBu8GmGBR{z3IG@0e1xk]GEpb۠<.ܥKXReH3~S/XJ0}LCT\΋$7͉魒w(tx8hhV!g <(xt5rKN!~hh G`ellAmS -ӒcҫӚ͓4Y@#G%=J:Ճ%,],F ZUT8Vns\ @6˝je(~Pv1H`_ܦ02  b_0~t4.h65zE4R$T7Q^6oqsYILf=Y+F. IrW`&M2btiae:8w 4[*=eXAt cp  [SDK.銉7EvC5BL(npZm kwGU*ыMk7/!̺6M :l{'z!o ŻT-rp\ ]1[7MBp BDI,{%eEF-e 2fBObSKZlt[aa=DSGO0`(%M]ȴ2f vp,,}dLMeE !8J<|HQEf0i[P̙ 'ejX"N~B4FHx24EQGz$^ ia?W,Af 51էV sl!) J*i:@~i#E% #UI hK$. b8iPa5إ6)1)n(*)w橱tɌAdP(UbT|`eg~J)gJf m8g#U08jjlSAyy(_FrV=E]6fq>!Uqj@bM?FhG%+#Tb꼑TN^j#J(VԵVT[-UoJA($AeJʫC8A3aٓM+{(KA1^9B/nOhq#H>t՚iaN(|#'l}Gh§%J]M$ X^z W$͔JGv+x|a$}g8Ⱥ%`dG |&Z) f U8oؠ)lRF9{qw٫u--Ydh4|T! r͍̙[)&C흉 5< ^4]lـhfㅍo O%*`N5AIİPD Vd`Bp:薽BC Yqr [q#$ξULKDq=:^SS/)qW>?4Js@tA@tB+4 B;CJCCDS4HtEctF;EktG{=pGHc @tJ4JKBKLtMtNMtOtO POQ#uRYR3uSQ;uT4T]UV*TpIu3SWK7VYoZX]!, @pH,Ȥrl:ШtJZجvzఘ L贺jTcM~sOhI F T}u U{~KĪZJ hj{ Nhm J xD*rݘ | 8uPq@m V&,0K=G&X,y0!LjE؂ҝU"r NĒ$ɲӧPJpa`>ie}[MڰMV`fY##׸ӗzR-Ykw[#dF+ C fa0l%](ɡAَCTj6>%^͚%ĒNRi۝/c 2mC{߽3#RxLR+ 41H4zwߤ>D&zs)^yhv9Rn " " !QCoI CDRpԆZԈDkFW KUZ"Fa=7I7i P6s9-\PbD58Tf225ݕH,D irLR$2%UFBV\gF5e5DYYB@ݜj*'\\@ޙDEgx\AΎB9UҙYDD')3VNI請2zip豊ڧ@.zj )RCb!`:))f{d ^ňf"?@.z0hV7yQh@Pl1·:)d?^o9yo- %uqX ^uBxՋlj1Cz.j}TE`66!'B5K" a `:^ExzDRƷ"hr;Rʘ5BR;E$ D AoYfÑKlӟF'he-f4*_`-#cHY =CNX33還1 +)L^`r$22l6aO˂q$HxMT@#ӆݸ澬 !,v&0F!@ h"Xq! (D3ػNRu!Tb$HT&ȑR8/% (cbur*ᤓ·S`IMȍMVzL]4iLSKQ&&m$bQ7CR3C8XzVq.d'Nm^5 6$bկH5 1_%§¨$*ħMDVv-lFgY @ry(dfɖ ۥ؅F՚2: nT=eLåU@VCԒ(Cbe#언WeU\$(wj"muUZEB砦E >.'ߣ/$9y<^wk@ &]\,HIi7w-t)Ä ,bz:6xXަPٮ%4~{fX-#Z3'^k]VV)-G.*8% =MQX~߆B3Ʀ^+`ζ&ԔO զ -%"//9_dx],rdzďR[J-:B:u &X5Y!3y\FN lW;fEzkK8 V4MdN)Np)j}@!%\u|ƍ&)Q01=̶|͝&MW$:\.`_d?8m?A7MX 8!ɛp@IMNʍ{Z\uMXೞ oc;d6ё}n^acWNY%}ӗcQ6Mvshu]}VMќ/[aq9=NٛwE䕒5ҋJwҀg.TY6xvܟ7/~cUv{^ZYf5ؑ,}z娪PPe_t͸7n{zRI6$(/ 9 $+||edr]{< R; hnѹn_ctW9NoU'my'FmTYhN u̦nWU~WY3Vz6Ek#hUXY!XmI@WS@|jc4`5t65Fqo ~}rʡ 'vD&%̢|J6m `"y̔ɖc\nF(Yu:Jh雲zn3(lo\BHmnvFcͩ4VDT}D V/&6ҍv"@uCAK!DuٶV=ⳛ&Ez嗊6$mL7e#:T?+FFM-*ZmXV3t{$(}tdEmb QV@Qs2&ZzIĔ2%9TM\J H@:ֆmi5Yk1wcekwe HKFz[-4 gc}ڨ} ("|N }k>XeRE ѸEtgz M5)l¬}9[oGBCw$v=ϲ-Uh>T HƞJR&`Aқچ*`ls݀mdV! md a#T >ȧf3`.]gl&*zVlvp]3> ^@5':o"ޯRa!~Xξ#~7&勚#)=Oys_qqN'GsܤG ~ ;x>&n=͒?c䶭]m6H QJ.,.jI~;={ub,u HH'{vKk n>:ZRyĢvSFQ7sgG4DYҮ^inݥU.souBܖH7-Vh~y\vp3<~F.psؽwsΑlӾ H~ZL: ?=eVa,LteQ ^IgT/o#wJnh;"g- Po ԗ0ʐU);3; 9P.“eI7b#ui@#G$zPÈPCjΎip>q sraX{ڒ(^(^"5Q} Pr vgY\|eofRAZp|^Drj $}X9 N/zօ*?ky*,9ɨ ;j36ћGpu5kNqeVϱHEusf 綿nz-'t1B7ڋvbFoLi|{R}/=X O<T^iP]>L""梬E'  A@Ht:De 5h@CÂ0^fv_ m>֯L~]縺/Xxp?x che7f]GHq{_܉JFE J}c6늓u],ȫ,Z}O-}j}Tp"RwC_cwycו@z\Et8L/ezv/d Q[Bqy*{)N;?wطO-faS=j&zZ=u:}D#tT/*KXe>Aflod ʄ򀉡sʭ>И/UWf+avdp,FS|TlƧ ~Mgo<B{ȡPo˨ȯ~CH馚&-U<ȳ HL\~H av(etЌXWg|jJf~.c >Laza5q0K* h挲pLLt pYҸ*H~h(m4N&  0I(HSEla$^ ehG*8g>ꐢ nrB袤$+`}H\L٨iKPpqnd+Lo$@"3Ό'^ݾL PD1f0Ć8iF Ȏi&K~Ǝ h].!n"ΜRdXvQO . & ,Z`mHj ! XҖ\Hgʀ)kPVaFgސlT f*(qrZh,q mR&*-F,dV&-2<Ʉ,1DeQ(KJgG(ZPiantQ'O? zzyfo)aaHxJqCe7I̯JOl-asr @4 i HZPeUt4f \P0@I>; g&/#C_"" qBeX `C|C } mE{ B!`ALvReH& TTONd`tQm#lF˧F"+tItSN߸60!@I洣8&FOJCdbWvIL$G Q IuJ$< TQSдOO4mLu+?16< Q!5RgURPcO#rI)SEuTITMV@BčXU]Ua5VeuViVmVq5WuuWyW}W5XuXXX5YuYYY5ZuZZZ5[u[/c<l0 \\uS]5^U]ctB^5_VEWu_v` 4B8m`vaV2Nޖ^D|*jRr6lvlwT,obAf =}ЫD^i/nvooIBkO+> Bo!7r%$>oM/AM-#/JvrQ7uU7G`33Scv H2v au}w @r\.C&|BwÏv1xz!Cxځ$z퓄$E}7lOfPnD8d.W,Wtwtw xa I|s0 85X_/ 4碅q)VmzwmU'6^zs? xv?pt喈qxZurx :vvuq::Y"xNˡB_39xX$VLS]"긏WD=* TNgyg5=s'y)ٍS*0Y=R9RMQ9UyY]a9eyimq9uyyW5ԗytT"~:w2388K b^47w Xبtݼ99,, ORW>PE_9y(4>d Ue M(Em % ]-$̈́70GPS/zI#&j$:C a:)+*nX}F@>-T0BN.&PGяz:q A0Ĩy7:@!p HDZ:QB/Ѳ:z7pC+ A .2հHFJy GE{M[h)GU6m{uXEϹn{Gyd;饉/*T;{ɻ;{ٻ;{黾;{߻<:rNؘxZ`VCBfs"Lſ2C RX3O`1%9p|v3ŏJbM&oA ׫b&!J%:`} >moZ< vve}GuG"fnOIƮ\`Ռ]&[\ gkd7A!*WDw.qdUyYY0Motp"ݥM+R喙S+{b =|e78ӣV]P}ȼKdiHLIC$}]@lS>p&]}ĝGT~Ͻawe=':،JHwF@˧FrႤL_9+7hG,77A2,'e/ +V* .Ėpמ"x$9]Z|˖wE4,WQ| g\>)GY;e= @(}NM㱲R.:þY3ܽ% _kxx?ڿϚyC!XLLp01@ Jѡ|B dIUUj (xȢ@@#l =lV "&*.26:>BFJNRVZ^bfjnrvz~y1<5QDB**FY> I!VL]}!eY(K>$>+EOW_f@?1Y- [ 'gKQmUKVcRA"ܑĄ锁vW摏*ujz_kګ$nv ^m;54˞&g8`C X@#RtX.C΂ ) tiqE)K)nYHA.%J)$xo}2Ŋʘ ځ-pcyL6lbKf`Yen\✳;sH77`}CseBYJK^#вZc8xhҨ>\]mmTK˧obC`'@(N0lV.oUM{,8ru_*wߜcffwjjn t^ؾ݇o$߿)Ucc!0 \ G2/ E b0f Y0"H4hP,J! [B $! kh*…:a 0 0B"hD<0<"'B1RNA/Vu*کAjgZ浠t=DV@ӄf.T`)NPh LnU6; a@E,bLh N hX  &pj%bxY&#jx A69CrN;a@XfT>Y^y5) άV£`nl8>|2{KRe)uʂ>{CRWRDdI,֎y|k^)=eU RQIwQ.|r @6M%%_=DzI's5|o:O`aj BK@h1vs^0.-+ٰejyV9Xy/ym|6: |4ž_R*4ף^*#FsX=n;}'0f&!Q< 􃚹-^]V"W^K@!H1[ ~ ` ,qOv24!Sm'v]Kϭa.=E$ZZh3=~T/4ǮUXUrS-G_؞͖Fߎ̟صy-ˊG&9L L@`?lNhH 1L8BŅ@,yA`$ ZEf %aq93 T@u]/+W}3G=8[X%_k -~ @QgHEM &.bVx>&M{J@W&K,M'b"rUybT3}pKT`{щO}ƪ:H ^@+:O/$!fablB b ]!EZ,Vad:Ȣ-"9b!.^{Œ+XȺaDa4H(^8A 2V< A>Iu|$9`!!Md:PHCiժT\--V6'O:  7bbt P pGSN^qՊR]4#PeG+`H-I& )zRv} T^y$W]yY\ITZ&Y&]a{m`6 H,@y/nݗaA1E.yW>LRb4Y6!$TU$_& \n;$<8Gm8@uJMH#@NT p4cP.uR%]9RTYZ]'Hy^i b[}ghf88I~._[^!yVjbiVV Uv%}`GyFj[ℶY̅v-]GɏJ ]NMa ZCގ>nn^Qg:#S@d&pPފo򢉲I2)F^DcoP(ME@fa'Vݒ4v$ݘg u\3`fME~z9jʅh)H%[hdCa= Q,JTn*tji!c^ ]zd]ZAU,@71yeŪXd%"aܠ.,4iB\a@r䛼+WU8C鎈\JziĶwi`Uo"x}E露WyA|$aE|F) BaO$}DI{,ﱈ* C;$jJ(ʦȸP*nګ^ҖLz S@G톪],WcֈNj<|,-EjpH%+-ljrt&c⓫Ъ|!1b^Z~07xCwɆm%MONM=r\⮬RC튮ii,Z_#X93iH-AՌlzf(n,ZjǗ"uﮂoR$Z+(똥F.i*kQ*BH?ԮoQRoBp8ߦئ&!/npY<0:t1\沉ZӚ̆ҡfl omKidjVpJ]QfNe@ki/ӂhcK/Vv$I6N͗\'W))~`09o Z. qD&Ԯ/F]t,"م؈Hph)<fvsVpL6l$?>eIU,8JG<)wV,0G_ت(^J(M*E(T Jy@oyr@x ~,4H /V $JoYGx Me(J1(I$1/H~ k) 푼IV+Vs:+sEI^h0#BI\`/#8MԬXD!]{5'R9gW)of[CՁ y1 $ U:'gw~\x\!QR~D&"uY'1- >$SWc?o.96l37H?MP׽#\(?CbxD&@3@QF$tB[ncr|N*sz~G#Í Ps DpKHh  %-5=EM;8Pu}&.6>FNV^fnv~'/7?GOW_gowT8Ɓ!ФU@ >ځEIPEF=~9*E'CSLUIQY$aV~V)`I:VڦSk#;1śW^4 ۷| FU HNTɕ[jq˝Rz#N#Zj֭1XJ@]׵mƝ vJ&4Ik0ō/;_)["]2XTr ݧRwe28@ABh_>$!Qu~%C/"P@|;rAp&cA /0C 7C?qG$DOD1EWdE_1FgFo1GwG2H!$H#D2I%dI'2J)tJ6+M .HGP@r9`̠2%s4X 2&8: ʄPAJ!QX2)Ltt /-SJ4;,ԳHz P% ^2`8HRH X,0zm.&|W !٩)Uqha,nԐ@=V>N],Uqwd^nDWg_Uv[13  :3F a{ۙ8`0-[!,pp^duxh Sbd"dހf"Vw@U`T.F LuzXAZXv6%uj9 < ~nZ '+\ׇ%%ehpv#AZCh_vC%P h.+^'$~|CD! K;w?\3 @L 8C#j0 BPg!_O7 jjdc' zz\xtq`nr\͆xĵOY.D+ h+H1O<EćWj^ʾYyL1~"f+q>)7o+.Sw_0zR_M_u~tOz/kxoSC`fyKR(JFГǥrRo2wʥ' YެrW\[S11}@Vͯ77I"5<5y߸ ^r}Y^:oXO- Y?y\ռ"JktZ'&qF~mwe_Cw)U/ /&(GLtӵ Mo::3ˬXa;#@w/3`=s2@˽gq -x@"ˎk@غ@4`1 ۾&K@/P4Px' h)c>*p+3yM,L8"\.xh82?[C U >z+>ͫBK'.'8 Kĝ4]cЭ0@Rz6EkD=|W4';K Ԑ:+ij*ľ(13DS ɹ$O$+fADxv˦ړŢc"TnD*mԧ}7h«شD'(xK@kb=2~,eԺ(K6B#g|$%+0(xa926ñVh7`3DܫKnHǒ5ɑ,JK5$x*Ŷ4ylS)xcR8G3M[DS-(SGԙ-9T*EKF̘:ҲąLEx6{{S^ 0%V~Q=?Ak MqBpek]Ԫ>EESb>m$׌a`t WTSBD::ײ oԵsAIشbXX{uc"( ,}ra9>FL훼ZٍupTFҚEMXڛ6XWZq(-ɍl2jg+6M״ɻP娐UgE)hrNw XR !\[k3[@ lUĵAtm@&┬hR|ŝFʵJ[[1<3QP2$"M]^0\ ܃+ؕ]8 \\ ѕ\թN:E#P븒]EWx' ܹ܎Zs’tMG"ͫ \Dł(:]Ԭ$قP(]u'isK]F݂ݧö^@Tm^|x^%SpᤰU}`Ľ( K4ۺ%ZóbϭȾ ,+U[؈]M!b:!Sl \ʴ+D% *j 5Ł̛b46&PKVgBߥD@ld;s؟ CFeG-ę)2eT>KGc7WEf:5Wf۩`P g;[tLl.y|B(}>82X^a* Qm)Ԅŀ~&0Z Y"cl] 8R8^h\ĆN~=^cMhYh[]@\ޓEZ!irF{V6;]F cԾ!? '@,6 \$™e)۾B?{Z^!GucF}ia)Rg4~)Q^| FjȻ^֊;Egv-J`+hĆ㼆.mµݝQ5mOy]Br쨱_qC|Imܶvcd+ ־pl L +emq`;Vמ&5mf]vC5diO(l e{!<0Mѯ_sXdhpQv /&2ˋUWݳ,؅O7Ç`:q3q c^qf>f_%g&齢? K,`Q0-01'273G4W5g6w789:;F8a9 =g>wA'B7CGt7 D ?=7n%&JwFSebp؝2qg,FU9N+ 6Rq`n7t"!T_apDg]5܅?[GfXq]Jvr/PFXweBk[`_*dXfr:{QvDžoZ 0"wܱ%r=o 3AG{p~ia@J;":$Bu9n92r*/Ƈ#$ 4X\$‡Ri8z2I`Ϡ#@`1D 7I }9]KA7NN1an "6#Y (%nZL%5 哹IZiUVagaVXM;.J-ApQjO.v0>4p J3]P4r8z(GP|Ƨ,6 fJ{2iM沾v;Uߍ|/C^(.Ea> s^>ق* $=EdO{DQ9Γph\aU$,#Q͕+ ^J*QhpӖvP}U;(A?Z]" Ƣ?M-\C{SuRS,y}:?zPW(7_禁uOy -I~Vr]"2em $ffʜt/B:nPJ O:[BUΈڳiQT3, }BfjgU]sQؠ0dDIKr ry΄m\Mx1BzK!Ĵ5~p[:N(C_e Y! =' h TuYE=Gi9PD(jX%Lb U]cZoK\qKt.D  ҌUTQ7㪆tݭO *-F$TYG$1*cJ3ʟԓO 3kPoXy Y@|wyXQ,pP{P@h$ g3'mi&[Rk6|Z/U񖈜1iI\ۊ(fĹbm1UTdD[Me>tcv&F-fLݝQy d/.R6%xo'/jݗ?bH^#/QH=SrGw0uu0:Xz:!j;˞OGpif[ Ϻ*J_dWòXŮ&C,Q:!EбbƊ 백ӳKa j6"J>{Q:3HkJZF @1]c񛙥R )ҦO30k`T::-K;{QtX7T԰a)L­+k*fc['W}R8tP}#)@{PR} DgATP}j(":};g%`M:),څFav~j6|fy:x{޻H^n;TӦBex ~K (:ۺ86Ш_]y Py3 m+FPrHXKC '2gRg~C Fawn{ !c6 !!LbzCW@MVEP)AqU:]~Yfj?XtX ,9ć*{@}Kק"AXip@=<9AlPR2JEkm9Ⱥ/a"ǎk9QľzXzUc LvF <=!NSE+lAuˌŠ2sq8!B"ApJ K|(ż'<&H%p0βd:rV ѷnh\E+h ?Ѣm˼#|C*TߔLUU҅k%Uj"E\'zx8&])R?UҢjs=ӳ /wc3˲hI\7hWfu u ^6ө+gN] ?DꦓddhpC§gf4Kf/ռ-QvՓbCM4FDcTŵ\ 2'j/]wO-=;M:P4 ?13#c2 \xϢ'&sp1'K2 ,^"HE3 ۶] 9emHJyxqa2{B^f|m5a=Q!c3gegjLM;|ua  w *5ZAآ54ݣ " nˏm| <~O1zCj,n]J, 4GQ у@spC<Ѱ}ܶuc-zp%WcI΀M*Rr|yOXU `H2U_NR3( uOMi-HqTI-5寻%%? 4S@8WW@LgdC`]LFѽAoeN0Z؄E`ۛ]YUs_@X_ Cl)+Ki|f;Afa@w- Mî J 5\ҝ׫꺼HO}*[GCE..~Fݺr%6~W,_Z| W;P`=ے`E+\Xd}iAK}Fz0 ݢBK_ Ixã' |%~ {QNߎn %"L6 LnDNSM>FN^id/, U,pO^NpGCZ< .8)WR8N`Kc/ގ@*)IgDR2@)L 3(VDlUK'Q'gQKl/n-!oPM Rr QP # HLJq!l1I@.pRR, wH)6itzԴ TMwY(YM0 B<`JBuӞ뻏d^6FhRbhP  òj⩹Flpf,̬)O,ZxRclsqA,$Z{YXJ-ځDp 9Y1cPB$S៶p̒1`/e G ju $smɗ !K,ϿbNBA1'SM5trtM,DVUjCM%}ylⵂzJS巏(h hi [{q^miV$[kW!kdW~g?P /;+*Z2ܤJ,r N/IG0-( $YآO W2(AiI/(bZ>~&MP6-ɋ3/9T ! $(R= Ѽ e,:;5G "9ەMT;r$ P'zL/j)%yUƀ5K!E<#ݼt׽2ClJ9p 3,*2P@?^t)LA4Pcz쏎! Y/eɂ蝉Ra oT-;n gAXf{mjL 0D 9P2(9\[gVWv@pPKfZmpS;ʎ폑 Oe>GYPaxQ~:qBzkΜnؙ2,U;O uYhu1{m3`p`Տ=X јk|~$,8q%BveD5 mneJ J Cv(hCv!Vp#0C^h8'Jr hg!lD6dDb}4刨P x"lr5x/hAQcN?B4> E%nG85mdO B\bhFBBc㭇65`)b$DU%YY{h$9}J2||'7Fz2Z%& T@$ x PN=ľu.~zD}Cf@$ک+$#D?U;M' Q3Y\FQEť' 05JeL"d}vЬTIUɆP ;SK,"x`2"E);f^D`?!4KYjHBfU&.FVhl߀XVjC-LŨֵ,kuHM#f:A6<$4:/f ]vfogkբ͝lm ᝂr[^+q\vbfT{_t]flݭ~_w = wICzH\a*XK xa8g:b)V 񼎲X`.:HCT5h9,rvN^KwU);WWoVe/t_3\u'Eb]{f@ŕi1Ơ8{HwLkȷρN1qPWA0I Р&zPfDs6h]ԡI]jS)tWjWeZi]k[׹yk_]lcVlg?і]mk_mo]nsVnw3;~sa^>,א&Wփu]fujL3`gye;`jƳ,+XD5W:֑@Q'h"7\ %UMk]=`)srU%0LGVUm5{(,w"?-M=hvb+vTS D۸k5)*Bmo91qېsC6װ/X*qp9G;QOUv ET/&MNL5o~m?j4_nvQTIqyo 2[T:>2BnxI)L$]}gy*5<p͈Gt Pt^O,.hoBN!Bp#|pKN wMSEh&l+@&msln"`hjJ,lF'" 唉7 .@.JA  -ӎggޤ >'> c &-i 0t,Dv~PVǐ թ> pA' PqQ0.CƑࣦzyԉ ,&0A d +` o 1-"̧1 ?(U/pQȂ1 /` W0 .5@^>JP.\IN+!^x|MEO40i?Q 0:@Đ#=lB烀!s!>Ψh#-h,úiҸ: (!J8ng:Lh)(s(% inoZ(q*H,̶'E*n<dr?Ri0bh`0 % p&G ݤ٪ )OV3nKyDGDsH zL5q'O]~'y5Gz*`Unh3u \8`w~3Z,x¤kD 8qSb?#tB3#6j ~!3gX\/  4 D9Ft[:СSp@s;-#'B_ڈ'S4B=e;93$)Apt 5\G]~M%Zmp/ $$6dVH^ng5j q>0U-ERiEJJIO-p8dnH_y^*EI:&tU'MovD!hv`emm6pn?(fEa*6hVnף,%q!s  nNс; H!NQu%O(W:I 6?lvkj/kA  c98)Yr6 v㲮(L tw7b}Ėy'圀rDΕ9$j&WCbD,niOlՀ60q_$M'*sb/^*T2:`̲QI|S7%e ^.`780CHD2Dpq,+KyR*Q696x- 7`=s Cv9|+=an4Vgcuߌ7gA2U"X"ϐ6Uaq.j7Mՠ+W2 #.Y;6J8AyxrQ="eY P B$l>H5Ws؏)̂ -rwIp9皷7pYxP5`$9!2K$dX/7vsGi`A)vyQH9ASِoV IG_cJ7ұ7MnхXןn6k&R{@$wx%6U'x3׀Axr&A.na4%,Gb4y< ښwRzMrїYye'qDyD 2oYY۴@),%:^ZxzSYĵ1EFx+ ~V!":D`RM:SZ: xJziF2zxtvE۴51cC{z tyے׃zxmOs1T6_o2P^0S鶚BI;*Zg[CP9%'#1qN&']^ `ZX^Pϡ dek4CEB3?9t屔Z_V(P)a௭h0d>!㯂M1xD~,"eS%d|>)9\tU<ٍ6$oWTB!aŤ^@ NYt7|PƢN:׶Q|=!YL|Í5Jۼɘ鄣aQ+]ܾ`c$o|7U/[2+telM)pADؗ3)g"!aWCɈw@ 7t3@hqԇ}lgι0G*)Ͳ{+)a F C߈}O7/`gI fƆU8sNl8!k =W{euR''g\5vlΩK@9 s*[y=q~T>kݏ+aj_=0S$hGqH/3lFuualrF+%&΍@>[Р4J=>"K(JUM*0ٿXM+e7+~)8*$yBtJcfƢH# \1] XtNTr{2ȰC%Au?Mš:)隞tΔWM\/>t +k`nMzc!}223-크ЂۡUuMJp e|9)/Ϩ8MA I?#M*'o ,Q!!$a0 !PF0#"8U5y2/ 6>#۟VđP# ԜXYFŐVXЂS'SŪACDP)!aq0]*fEe]^Du3+s6x9?AOAw"F;!-Zi!񤃤8R#EJD(1 {&99CJD"-3I)Ui!FBQxCUTVMҎU_U\`.lS|񱼂ul˖{jw^<+^r?fKAdبnhVʳ1wV߀ҷȠ$vágLك8}$Cxs: 㾌o>_Nn [mA. `TQ_P.!z!,xbZ \((~7 tI,!A>ͤU"A 9$Ey~$l-IMJ9%UZy%Yj%]z%a9&ey&i&m&q9'uy'y'}' :(z(*(:(J:)H],^qi.dN˩y#Xªp5%4t$U@NORЬt+?^ūFKI;-Z{- Q, 98Ī ':CXڻCGػҼzk pVPû&JYU +<ķ>;t<1?CĮ`<~MZl;K0!3Kl.B4 ltSSWϛ53-dgah4pwh!!;3ނ_HsVrkFwv ?9ww.z&)o:8#GE, G_;;6ό;PG쌀_<*d,;?IVD#yAg@asLuBB$ٻbOnAuE egghQ[ӘDdppV:_^FQ! StҁT(+<-d%2Jb"XܨUo()wD2*,ђ7 ǜ2UUqu#52ư2 ?*"#x΋ؤ'8CmmtF7]2x" +eg"ή9Bk@Vz-Y㼖Pl`P ܱsՄS.0_Dg!ΏC8>ϩ^\0>ͩ-ΓuYjOQ: j]*e0v0#&R\[nGMAno9kA93sb0wz-c}(f, u谖nhW#Il==paXѲnHLZN 1v*K3*a40o;`QvmhI8)$=;;SRpC:sܽwsm3;xeF7u$֗U $-Cq5Z`Z;k;Agjm5er0芨W'7nЉ霣IU,UTUD]gUNW(ެ>UA% &Z!_ҽX_ MڑQQ^ LMH_ZYgЩ1a`-%Ճ QX INe}leU9a ^y͵!I]݅VQ)NI4Eփ)]_աHe!`%am`XRy&c),⎉["MB( F)EyNؕ%䕢@IOO 6nqjŢ\t i"ҠWDJϕ6ncL|Uѽ! "M]CXbPTEţ6j ŽchD#D^٣ F)E *GW@Z!@TXU?Yc.O>*Jm}L.v$DPS-NeNAڻ2⛦@3Н45aFc8C8v!ᡭ!ѩ#&!vMp2>?5QDbf_6!-޻ n)Ξ_jߥ:Yh%ʍqb]o1aS% }UeR&H.=a”kFRA"8nVZ]+VK  W]Qd %$=dZۃ*YRbGi rK=ؼE 5 <#ng(mRHX0r[v)݉hebnZ]iTZF]ǎU݂҅AMe\a]ib`?@DEAf ܨ<%8m "8~IIm^8N\ЅNCj}!j$N)an!Pj!,]"hmqi!ji貲tEfQDYlqkg{j&?V M . d dr#Y($nOBpĄBLIRKĨ)\t,+$kEp[ǚyul(=)IhOSZ$kBfDC9j1LHmb섊Fis(,mӕ;Y(ل"i*͒g*DGYήQ-Bh29%lpd[H 6Fb!$nPˤ 2lv!lGi ] ǤlۦYdFB@ f)+PHnl?^ rA־2!0.vg}lIkUVYƨ. MUJrUbv)fRhZo*{hSdn.;M!2ОmQ%Sv+.j/@&Z0fPg)F(ky0p/vpefJ!).`L)>I#0& Q掴 mh V/L,tObPQUًR[4f*"Lv;4]-p[o}泖qqs91ؐPE1b!bcqe}WbReqTv R:-CӜd# ]%S#m&2{$JS-z Jnā;z,.$$/)*.wto1_-E3f6e$C6?4O/д 5O8C:s+9O #IH3@t~00s0 l0B?4DGepBC-BSDwsDЉqfG4H۞* _]E4JJtHo3K4LǴL4M״M4NN4OO4PP5QQ5R'R/5S7S?5TGTO5UWU_5VSI@%jeշ׹1XYJWk qeʦ H!Kro5uJ].LLx'!ʨwtVd4/GۧRGFe2(ZUxtZ2~i 7g^Gfjt7*o6NtNE6}‰L)+~wd!gIC`FwQ04AP6Jwׇswnpg[2EWs o&F+p {{aN%,~'g?cp[uSmi,edHxw_kn$淞t_[ywtPq_, xv3&xX)6ɏI3*p*ēmk/1Oi>o'YBwsSUA&`:o %IC(]=(%R@-+Qy4HRB5Sް=uS7#db:9zԅN7*Mn&a9@W=.]>w{XK8o&ecSA3oY`n'1ZatS$қKd3$˺"5K=aKQ Bc9隙 [|-.O-ymWmw67\aL"'vԢ$Vq^&r{,fe#72cQZ.>8njudabEHoqA<Pr&>L;68 h׌ ;"n) ,[f(*~eXFjydT_Π. Ev=̍jZ4W_{?k!xnWWUžW?Zw GuRj\27-\6'n{$k.+4\]$ީ@#¢*8("ED:->$4@P$A:Mɤ?G/4"I]^6XP0TǥEc£C_gNO)=`S\^NC^g[rs#[Wj|}T)ЭS~  V:֠4'Y&tK7hMwżceHC GFi=_JHi5kcj:ut+8$"`9q$ Xo͔J@DάҜIl2 'ҙ~tYǐ^pߎPעg5+ũPkmjY]ܮ[MyI/g J=ɯ|y<c#<Zi:;higa S.a[1vM@͏^?"C@i!^G"9jp_u}AꌵI퀳̌2tFsʬe !tO̰P2i ːfŚ4V_ըt jHSwԼ(Lm,O<Ő WYBHO ʾ lv;HF kS2*?N*Pם4 IT|]Xu w m+w]Zv$6HB?aT<9A\%39o,*wKXa=h6_ OaE8|[^P~. NՙQO5YnH% ڿ,N$fm9EJ5#{R.Mbz6)W~WX%2c:Jq siѡeM@юjs oq'?o]&=F4v}xyat_6'er=~exNs8O͉qfgq /ŗϞєMlK:R'd{No c{@UKJ)\@ nȖ,h1RcXwf7>:cRg:];J &Łk@WQ%'o[)K\*X>KLЇ\9o3vO0x1h"7ŀo) r\E,@1[Wb%D!Bs@#xd0#K`ܞvArg eRPb~8@rӉ%($? e,7,8~倔!6:_T Z׼k*KSm1Hn88C+*djU/dpL3p({fgZ4|v$ҹ>#vN_k'/h'M['HNe;&R9I6n Z2.B(Sxc(' Gz4 $5h `jSԦ&sZRU!5UUK #iE8b-~|ZO6yɄ++9Ĺ64ZCDEFM,XT tg@-k]j^'cTt+}WO=MkfȆuUUk]XZM`^7.8n)0j),9E5niүihK sa,՛F7 :́+JnQ{H7 AW A,\Etߞm% q!A\Uje"8܊wxA}> s5$! nXP !d Aep+|=Ѽpis*$K{uۢ8F m w2L'ōv1fc:s|~@⮖ CL&Qԫ݊v\bGK T~FTm)Zf*lȈj#yQHWjgN+w=TZ浠=׻@Mb{ɠw͒*,LHpFX) ks*m~٥%,FgTN,ky7g-܀;K{gNnrVwMw[ZD'01w6canDp*]L 1 >oDrqn͜R`R :cӊ=a-^1;\EOVao($I W@h.k]v/c,n =:[.[Y*>(O ^ךﱉ#=}sOKzHb/QYMJ;J](sj ʼ6M.5H4-Fo'/dK'gk~2_}*Y)033C?D@(Lk:???@$ A{=n8A lA|AAALA~@@? B""%lB1B'T7B*B+B,T ,N{0B C3;×IC5lC‚Y@7\B8C cC>C@ DA-8 DgA\DFlDG}{DJDKDLD><¦Jt1MER,ECHDS\EVlEW|EX,R|XE[E\E]E^E_E` FaFb,FcڹK0393R KARYLC0Qѯ,+2HRL)TcLPBQLl3/2+6TŔ62AD!4ZELQ30ML¼1!3+zLtďMrNYK&:ר8t5)w;N&eeWgJqYsI6i(N8'Y= סp5'b' ̄JYHeWqO2Z]H~ᙂZɨY/s";pYLR(`юbJ663o 飵-(ޛzBEW4cQ,r(;ŮQ*C+]YGH2$Vw $we!.-Z# IQz䂹Mdn  # HCȅ7%>USk[O@1E30SC8(1%k$53XԱJe-I gGneDGb 3e1iJCgV^.$hgJmni[TA5%R%-ff~EQP|;^su9i +HyjPbT5 PDVs8jnAlqK ȵ<%Fh3 ivNz;Y=Y㼤EpbB/<`7aNp pAҖFW wmGpp_q)$T/ʧm5DqSqzU r"/r#?r$Or%_r&or'r(r)r*r+r,r-r.r/r0s1s2/s3?EX5+c̀ ;)s9Gx?s't =z? u:7 pt~hX7uNgnxG!w0qy|C'_||?Cy/|WCo|¯yyҿG0O}Dב7r/Laug/ܧN~7{P\0~Go:~w~G 0's/kT| |??|"yk}~_s7:"Oh#4(IV!GD=)"XeJl蓶*vdl yyUTT v   U¸vyvOTդ%&pd^_w)Cb t'm:T@7oy@ǂbL 1@*|9b?o]fSd-JȐD0vS]KЪfZ$2~f`߁m`}j۷pʝKݻx-/|7Un#CGpRᛗ%{<"pN@UJV&*)+@z>:d@<}&UY/[ԽIDZ+@ӫ_Ͼ)L~wX>Rulց4d7l 4d~zh!p`G$fcQ$+IU)A.#/ εдM<öҺHJۙq8ՙ*%ZKG *JTܬ >Y]ǺNɍG/W  >h}P?j_Xp|OvlvsČ¡ 6Cڜj+s;=!Ђ`(8@*,߳ ܒgNOmPq g 8L(X-+|VT3 RZ7 IP gDiZا<[qæu*To5*"v,pA| p @ y6֝O@nFfΎHCgRn3 qE$c[H-5 ̓'T,gs'afI%Q^gжK)"i"ڵvϝgˮ{lG[`23ӱ[pot?>TGqZӆĴQf fw S(p^-U.M X6sDI@w,6E`_HAg¨rnU#W#դ.vLxMGP 2F~i&Q3Q#b@@e}ڇ/s\Br$:QMD1 h]g.Ӆ,'5zP- oqP¸ clL$=DZiJDzۧa|F0skv,J^Ld?3O?%(U>ԔߙdN:}NRSDWTM@ 9ApeGE{s}v7'7v6V&Nz$ByT2}QGk9~qGr""s408ѥQHn!B9D~tD'MVs{yC<^8ƑjhwmX`qoe8PbxSv1UHa=㰆Bd]wGi$`o'&DpCbꃄSy~993qR"}FkQENxL8'SH]87M Sch'<yvDGO8ޅIm( lt6@HFH Ly$pH%|'0x2'+s,~&V'2]Q%(7C'(C~3'aL8)s] 8+xR؋!!`(9R"< PG\ *15\a5&9y^GLيH&󚢘œc8mgiJ ZM鑩mrhU):)B hSf@5ֱ2ʞi:>)>!A>>X9$/7~3?jQ_9.:Zٟv=)Jus7t#X!eu?*=I)C\5pv҈pTvk6*b5d>T֕G]4Dr61_&sCEH=W4\A`$y8EїpQSItTb1FGdh a :I_FسRk *`WgdyqKdDJ'D~KKJ;D8˴q +*:N+ODt1Y'*׫*U`0 ԔlӴI_th_+t1)&+bWC3E8tPQh L#PJuTKdH iVRAI79lZJMY#cぃ4^ǵZN0iNwpa58lŲ܇CpU@WJE|usmz,n,ƕX3}KGWk (Y Y[v6{O5Y] 5hrײA[Bʐ {éQź`ț`&E+7G[ONT[L%XUK&e$Zm(^6{ۿ<\| <\|s °emA#sG&,$.^+Ѕr}j0~>@U;l24<8,,p7̴hC bNePkU_2fs>, C&p6qPpJpIצlVm|n G' -^nlkG@E P0DnZ Pp5p *oGVnnv٦ p,Ʀ&Ȝ ۭ\ HF^5L hDiSJlU6鱥C˸{EIf \4_0M]ޜpf[<>T% ݬzH%լf|ͳLϡ"ЯdЎPΔТp mа|$ /Q||p0SѪ|*Ҟ@ mzyU8҃ 1T Oa|AҠ{j|i *JԤ{(b eaTM lM[m] WMC}&%c@lYNt]kmhMnmTFw}LS<˩\sxmt]M}ѕُٗ}+̐mեϣݱmӫզ ڑٵĪM!{뻢pT} 5V(1* * XNu1X0Se_<ճ}Ϟ٧] ίڅ}m׈ށ ߜMٯ]Bf-ߟMmL @n~ˁ|` N >n# Nn%N^" .  "/)7N55>b7ݿ vzoʑ_yA2+ ŇYGlnC>E'3D^ntnk.}.A.~pz.|nu.;p茮# bXB1D^'LR z VV C~2|#d:m,ioo?t@qOy4ouws_=OŽo?;ޕ-MަϪߨM ޫO޵߷޹o~)S,>aksǏܺh)Y_v#ĥ39o??}Mέ_Ϣ](T,PO")5"K 8Iv`RnOU}&wz\9' (+-/+*0)8C+5.5ESUIL;dT-Yfsuws6/ ,#J)!Cye9<1Q&+;-k@k_[+#ҕړׇiIdH#@w}i90fԘF>nR$;yH+U|2L$o)L-s,&Π"e$zROwȍ_Nsyɪ8KJV],-ڑYgo{]m-XmQ2EL.eR %y_]W-'Qʕ?2ggB/ Ռ2tϖK7ܓukѩU~dսwoߢ>xqǑ'W^f ^DnCL-@mU(IRO?BS`8O Nsa֋J0 xN@n QIq%+QYlaQi0H"äp$0$"v /9L XE]TBr,Bǂq@H+R`!>R ol7S9;S0.=VФ, %>]P"Sf tP@\'3 qBq2z. ;f@r2k9T;FS]y_ VaULK1Bẖh]]L Oxn[ݢ]Y-s1Vumwy}3{Ŷ}X .NXn!X)1X9AYI.QNYYnaYiqYy矁Z衉.裑NZ饙n駡Zꩩ꫱Z뭹3{Aq)`U \sVnĀ[FH7ξdYQ\}K\{s.Qpquʹ2@8Uq[*X*`ޢBތ2D\ @Ru^uP / pP|{f٫dRZ^*kqD2F@eʅh@Xw&iȧ;){͒%< >Y@*#0Jځ;zP`'9D4'!hxŔʀ =E@3IK6(ճxĨ䙖b";gW %-XGjTAL@KV* : ?!V'l´4xZBkT$s s @`CX|d^P_=he@(0R.)v k{DjUܴ]!ڦID )'OfN[ !Š9\[=4':Ut&\ä|ʙ.REҰsrAe0pŸ7?Y3ZI ʹ.3^'; \dΕBu9WvܮTY*lo/{KmOZ4F!Iֆq|gBHϼF5eSm/):l: Uv9-4a;֯f`9=pX„/ WmӔ(,R^=\qU %ߠLE-Uq "2p='m?8u~ZPRj+\8vRKymbksUU{2?L'UakɉO/}PԳ{ՖB]q@]'S_SssFS+{dhE0د 76oo@pBNv3؉ | |aHtcHLF=Pn|(ث.p-:aJ.o pcaU.b ֬ΰ뿈((1Nh4 l >pހ IMLV&lR{< oJ#~p}kJOmEBD*zCIl^JУ?ɤ{ zOʤ`GQQGwnbi& v$h!Q/+#P /ĺ"!Sd>mOj@r1`,h\VD)y. "sL ($ o!o d %1κq+Qv1b^rIhN3V4<4 ߰ftTP%AD%s /-.6PW0Is,ڇ@osOu:JP=CnUmFpMOSGS4bVqF-q Uγ;UPaE箛`tXtL:=KԮ6Dh@* @5sU"0rLZ2BZ!QPuMQF'*lI[ct%Ѣ*t5WqDT/r b+eUDs/f",ce[ ROsND)C.\XvUhrt:ua1KUcK+p 9qDVhk0k5=r%Ys@|'5?6eЯ6?q1l5.a+L-n#Buί (DV+Ȉ6liO~^rQ?{Qߵ}#[stBYU(bG?#2?,# #rBF0ϯ.xɲ7Zє>n>Bh)"s2yW[N=Awv09e>7IFJ}SnW9|1Aw;>xuy4ף &, 4 ܖK~ٌ9vSVnɸl3D삽k(˪,^6vBw78vH'wg}wj38w׉E$8L'MaF0 X'IeYD:xOօL/oet8fO ㉘S`Z& sFF,'ٌ} @LyYڥ7ԁ=a*MTF/T^Ν8" L8*긊 iNb8}ǺO XT XwN^>jrQ~ʌgV?i^W~%YYDry3\u]/od.0-s4߭f Wʦ- O-ҹYp2סݖo%%,gs'F HtCdq r ;w'v ÍCur .p3v29Oxd%"`4p eD2dJ3,lS.4nZY$eIܹ1`LpYQ]$a~a %9Qy2rmV F1:iqIDxV #'+/37;?CGKOCg.a.PD>8FUdm%!^ vG6í:4%O!xF6{\I `O\$< X/"l]pHQ)%xHAlAҡXGND7wt9BВ ٪'~qbۅJ};r6X lR Qlo~.zԨo^Oxe? Km/߾~,x0†j2"L혖Tk^@gu-S*&0Y*ǏIK'"i$\?ITܻq*zoDw͙p Om\s;ޠjZB̮9U`Am0v;>o۴U$!EҌ㾥EqwQp1ؠBRW{qဆfB e&HGg$]͆-Db5]f[ro48<ɧCu]Ŗ?EX)1 0]VlLu&A\c TQ[l,qPzĩLh}l$yYhY+lXZjg鞤b~"8)'g*<k KŅ;D[zFh]> v@MdiNdi~Qޚڱ'P(=cZUMbHԺBR\ʒg Z.̚©ՕsܱxhWHZ" $P-*Zf^:c,y cl#мi(\Ȯ~=JcS=H<= ep/Z9bIDBLx6Lq9^͆s}h cZQ$ɔ+'g2z u oKh8ZUW\/ 2w6߻%޸4|ߵ>ȸ{ 8Ho |p~\ޜvw{xIM]Fr h"0T ӪGe?I fݓ ?DՇ^~*E-lVح)xKҕBȴ5{QADt3Gײl پ 7;Xw4?"$bz"71&0j\#،z0y%(6 nyCwq.$vf[BG~=~QR!ʷ:P* Y<)BhÙԶ­$}J@&lD&zTR *gYr@c%ǶQRgh4TqQ8M!ҿyZx]hkb3 #U* #h:}.X`Ģy Iq$ !rp!uly4'N Pe+v)M9LC#6LjygYR3<3H4bF :Un `Fl[Vٚ`P'n·%VJ89\A,VSj]+[*!2XzbG$DY&r6ejV[.YFP*b<. 4?h)f Xmd!DI_6 ܌lUT."lWϛ\hme% l 8 NkmiiUB?6\L6Pq gU(f;EbbMab M^40p0=@ IJ쉞,<67uߚnbƓ=E$bC%p)iV2VѮ+aO@ .jWk#_C1d92i+Eyʥxf8\WRy2=#go9 02܌{"8 +f aq0.39Ғ4cJ3Ac,@}E`lӡ^5[j`p7Ck-q5{M{z֗%kFl2RgC;+kv@.o;HvL/:^7m]qoܼ0wm{;7<8 n#< _8C<8+nc<8;<"9Kn<*_9[cShd 00/w]3FwwC=qwAm\_1K=b{ k_N ;^#׵L :Bf; | :p>sXHxT̍K-1s<"=ϩb8=J w)xS|plgzj|=`‚50Sq>);]o\DG9qJCJA-@BEGgˬSk ~EOY)ETMbj_I $8D<9TyzhZ2rcKˠc!(rr݀huWq!yUsNsi\'棍"i0^Kd&؎Nf5v)Ui}!BNȜۤ ̅H(T hIQ;ijٕYUh}=`v]z*IÚa*Nri[,XjzP` M6 @"kJ봞p2* rkR+&zL6뺲kkkkkl l"l*l`f΅ L,?#j,E7R3V,u7Úlv-TLHthLcMыͥ]r͞Bj:%POeLia 9%vaJRmZbmjV[6кXfiLƌm@@ڪ`Jnmmmm6-3t-Жm3f>$f m4-"Amk ӂdO-^.ނIp@ڃ_#Xפ`-lP%tD!<!Z2ړ>؞;T/$!N@o1dgT-m/.j{ X}AJ_@%D*Vm|_X3&P q&Hc"#}-weC95 h d-'e}m +6 ɰcU)ubHj~|K|hBqoފq LI-p.!Q2hpnbe'kѢ_V؟̈0ˤfDe O|R Zr(Li= {e2*'d 4RX ӏd0*?YJ,7pH4.B'{BGApWzrl)am >m[Hn>BINI*%(CL-ywjz #?Z+՜֗{N (C"b$DPIŊF@ deD^ŎR 0Ӑm@ѡBr(L< (rZ£:xP SZHz *T8 4 ĝXj}p| V(KCkUs~ńLP{h'/7?GOW_gow'X# BH` >u LtbdQБa%!DmaJZ i0D:5*ulN0qSΝN, h4S*1&rTU^ŚUV]~VXeb}lشkzm{u@O0^}|;f`… FXbƍ?^ P!MR~lj .4gSA=Xq]̭][lڵmƝ+PvG*S?ڷn͝?]tխ? aUexkdYxw^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1Fg1G>ƪyB$~D2I%, ND ᦉJcK/2kPr@3N9礑̱HR *Gyh BxNEetD;"&9 M HRR< SO#qxP_'"D"'ZoUQP+$a UUE}֢^9VbV6Wlh ZM$M)T?7^y3)u]lC45.O)<9M&b~e*i9WD FM"bRbU4f|eemcdJs ?m]_ߴ tRU0@S @BPPMb[dTi $8G.  !N+ TV@4`x9o,Q6bb XX䞋2hs9mB JťL+w%&8Gx;}:VC5aQEohLgZ wKU3r;ZG qq;0Lpм]~_os_g@~! UB菃z`B9bWj9¥Z_G7"#p6T0\^PrU !V3NdꌃZSb(wՐjc jr4`Dh*5]bZm; ]b%- s]Sӄ@DN-fHp4G>;")70*mv7TUR_ @(E9Pj ;>fY`e9˗PLm6R: E*,Ť0>.2] =lv3c Dƌ 7X#ҜTۄf@ o 37b"T8Ah Z 2_7I؇F[*G%j -" v4EgHE(dP0t-3wK$; D,3H^l1)- m1$IY:pԪW /MPd嚮umN$B#! ''OjG[Uw⚌E{~{SxS""?qԘ)$ EMvֳ5H73"BͿŮua*ݫ)\fYEˡk1j\ jVlr%DuX5dQW;c׍E1CQt ;w}Vt^\[Xθ25؎oq/q~\$8'XKʙ^sTze &AbQYî&$J4/JGS?]Y70Ut\ CO -< :IUN@_ t=hB:\ hF7яt%=iJWҗ3_8wӟ~̦9 jRf5;OjV+ȟ9Snk+ 4Rj^A]/'l7ٵl4`/3$^L4I6'bvE*0dFw{iwIu=ozwo~ב@TxlYf݁kkd*.J4a =r#K)oi^g¶N0W^=qOgjp#f)渋s.mG:S쫁[Sz.(M Yi!~gG{վvzF.AR>!GKwyzbƢkMopq${1;s\ Jx44 ,٨r}~1JGyDȄԏ5>ȈTEȌȍz ڸȎ$ɒ4ɓDI:sdɗɘI\ə3ɜɝ[ !!, @pH,Ȥrl:ШtJZجvzxL.zn_b.g8M'((uEc( ])l**E (*)'~[''WJ{yN)[Y*UL ڙǯ[VGhHXOK D rTJK:%80^ 4M_3&\ɲKC^gD$p-r4H1 ;gH6UBSӧPn)5KIh%(T"] `CQiLڜ8~k-An[ϭn5b.V"zuvbk[g(v^BЎjxÇvJ8[*N:Ůh%$7\"' ^+E])%x$2VVmUK*1CyVT&5WPq#{^Zn`M!)qS_lw}h^R*gJYHG qJ$Fx݊,( AKHa ~BK[(] ƛcin! ~EAR^p\cLtPZYFZPcX=}9-[BCԄEvGg@jYk.&B0gWS|Ybvyda$ mj*xQ9Vz'"Ge+ZцG'̔wAQ,AZQ0h|Th>˭DRE-bZ+ziŦi^G4+ꜫd lܔהy"hvHs0"&lQ 7U.+-̬5.)m\#O;)tnyTL,1ӌTAq+ɺ+ 'Ҭƒ+3m&]%ߊ^eZN+Q!2FO(*[Y\jiv]AUCĔ[m;.;̐و'HKJ z JҚBh7y4_2v~aAhR9I9ov.1;Qd|ί1O rqѝO/ThۡKTbY8D8'0is|Y0!B:fCIk`L<t=L?P1v! i&?qC.C=cy[d3mGJJ!DrŬƛ_(+d|Ehz49I~chf0e&6 PKkrwiLqIЂb"I$3* 9ǐ> AckN6:"9> z"/p!1H=E)+*.0},a0V* ^G>Z6-Pcj.T0 IkJO+Tۼfɠ#uj-`%uAJMh(SCP O8RC OVU{5 tCslӲU0/ P7*S>f%XD-:%QV;}C6ÀZ::Id 8ve=&%noE;PQ u)8Quq[;W ڔ pE9${r}9'rvo5M܃uh$X#FEaf9 q` 0WH81;@XRHNC"ȷeL*tl.{0ש1 fDa5p 1gxγ>}t,hm.F;ѐ'MJ[Ҙδ7N{ӠGEԨWVհg-Tָ~w^vsMb Nf+Ўj[6n'Zqܬi@v ݂t}-Xz厴oM6}@0ow_{p(6Hx}_7H|nA>k:+錻iR9.k hZW犏4U>p_Bإ6v]Ԅ:)r~ho4 N{][}H[oӇ4_?ϧrG{/p7iGi[hX2'AS|jgx+Wzwx'}v}w~7r(|rspg}8HyAh-:(JshshGN{6h~+{_Wcfs~Sgsw~.nr)ѷ~y|jzfrMׅJi}+.v}xs:r~&(i(h Wo7{ f.PJ#j׊jh{؈x7qq(vw}/rw|h(i(< hlhx( XjG[bL(sW(i:ocAGkEixƜyx-ui~iy~z|Oy#W8өid:fl䶓6,Z|X8|v6iHozX~)*~yWp(Nk'oSi{'zȊ f-\جhW~Vړk:Ҫm׫ZrzpjuJi򉣤fZ`p,Ђ kIt٭**o`Ifm`pceu;'٧㪰c`px:YyK$YkHvh qF$;4mk.k&,۳U@B>[FCJ;G۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻ&07xXm ' b|CI dV૽˺.DV" j +d`w"00<0[KeI%|ESt Pd0 ,lqE  +A I c0hPkpH k¦ W0>lS\PL5$lȿ|$<]|϶pCL ,M;|F`,,"(']:?%-F&L'EBnOx%Sp@ M`LU 2|`,C`@;-[Ԗ Z!%.--Hp|Gm[Yl m]ި CPX0Bűs-B-LY -i!nvk6yS7u86/nm6kLPIaL]/OF9r.\}{JWTNH>\-؃Ա |bfnS-iuޙ#YS^COEnD6AP+d=kpmLMFܞ(>k~>غQpСAd 0TΖ4d}r,)AC3;XoÏ-•.M&Nۿ9տ.~=]~K`Z9aTtGm[O:M8[>BPJ9\^ W~@ P=׾ k K~N4fCJLaMrnnǹ>2tX*1U~SdTN 0;~DC樭I@ܛn(MמۢI?s$+_N/{OdE3LUC8?KaJ;BS@ Qɧ^ڪi_e?VkޔmY>_oyoՋdmS4UL*%QEU>SVoĘ}ba4/@a=I%Ho. mkNR`'&@ DxBPj4@Sd PjS0 HLQD2bL/N~a\6ivq^yIPUP RT "+* 1I*T]U T"hf_0R}5$Z. ^.= Ļ}#O4!iDE(?DZdJO \B2"- &QUu`FX2' `ՃZܮpnʈ9@M!z"hGyuK.ˈ:q ϮЦUm[oƕA][ԭ:7L޽b"߾ UA6.`ǹּsgϟAm21f9pH&Gǖ=vm۷qֽNJ;vv_Ǒ'WysϓhYp.%g׾{w|ysoXP|{Ǘ?~}z/~ P ,LP[!P ) 1P 9A QI,QLQYlaQiqQ9C$ R!>X׼|+7ivwzenFNwj> 5co^h5Z(??gvNN ]74|B Ւ!X:) p30 \A F\Qt%njq!-'B<\".qM,bHE H qF-:q_#hE36Xb.r1px#*f<dt67{"κύ!Xg94 l\ F8i~G~E /?\=y 8YNk^;;vJgYU-C p WP||$(Ǡf/ 0W1 b־+Br{'Ƃ~_:N\/\e_ɞ|ۜA+OҠbB P}Ahl0/D`!P/ *4#!ٚo! }P( | *  |0A- ̨  /+04-N0f 0)  0 P ozА6NcNӼ 1`&b& ) |My۶a 10eq휰eM q+'(V= [(hhq15Ͱq0P2' w ` .Ϻ:b0"!4 Ao QPbںT!qp%`{hT $}."p0늑`++HƤ  ŀ0QN#Ur+j.("R*{ M%{&x¢a-ض ҸA+O n*u뜰ڒߚ $lAo HW.2-˲a0e(.qrhr]l: Q =&~/'+Iˎ'P M3P&26I,ݲ2's"6$$0pTp :~*#oմ y3)8D 910133 d3<1Ѐs"s -&s '8r12:K p*me R=>)3%r,U"'&LsC?]-#t 3̒D3/$C;;=2h3>rE@i,<n$_366-Y4.F?bC9t#EH+zQ>xb=3LJt4sDn8"L24N"m `t+ 08`MG%1O4KN!5ވ( TPPs)A#?3a+Tb0RQנQAh8u*ND?>4V !LMa;PeT:jTU):>UDy*uAPXs)ʔ 8ts)OhtEuH}a^є/NH`)]5 Ʋ'VKR+PB.T1a:5LqPGy&qAH5tFtp"URvrco0MHk607utR*tg _Is[h R U+L l&d+ TgT"vi5 ]p35bi0-)V:4u46˜6X,qLq) T3pvotiRu^# 7Z5G964LoUWu7@vj;7>]:Yױ^3 PBLfO'*`uWwwq7gknK&4wwwq*wTypv 6pjzuȪv3 WxViS|tJ^3`?zm i1w\mG0~cu:BL6m!~p jr~-v#~CoyO_ SSp|V q¬_dg@5NU{si^sa+|w *Q!ax-VvXH8YiTdLtq v{5 À ђ~}xeR2Z7{(A@o8x}_! obX%wdaʺ8+rpy+2%)v'6XJC?R_;kTU{7s\q ؈W2Q8YޭˌJ 6SjXDv `*;4hkRqxwQ&26v"`rO9"L 87)Gt`(N-'yLPI977^QOG& &9 g6=y,wjY:HxWhf% s;#|Z>ltm!_>U0|8 ByZfԲ/'e9nXВE;Wڔ_9z"(?b'-@^LmGA7"c0Oޮ岍=]s/%'PR y1 '-CW-@zZ.u|-01C2&.1AipfBu'f;Ǣ q;x{3Kqm;p[ٯ#mGy -M7Xܮk#r{~" (O9-1Zh\""l]Q˧k[!ܴc[i[|1Tm q]So۴*r6a):%p04Sj5/h1LڜY.N5nup(0Ym(3^{Bga)Y<'u87[x:DٿT>^?}4UAXz9w~Ʀ/*}y p޹Ӡ4`BuޅQAQ}~^?^f.~֠N кB^J}A(6-.ؗ}D~B߲6{bc#)gC ,1=C7|TqM]a?eimq?uy}?????ɿ?ٿ??@#2\2'4*5b4r/8,3:^7<.c$°KYFD@@`Z\!$e%f&g'š!EFck\cRšߩBhVm혬Ӄ-1r2s3tiרUt\!Ēv/p؂SF:}=~>1o`!"rc 1Ȧa6q˝!m X jt&۞J n_s2&X8g'v JxЩmvzr>7>oK1Ի&a ªj;;IVOڋvCW+q+ȗ,㢶 9}Mg?õv[f.ko HNׅyk_>&hOy tS#oa qV@ RL &>%LY{! c(CN4-t!њ*QgRKPl*$Q>Aڛ4 @NѰ&1zTɊSD=n Ө5 hӁg@6Nq&x֡/lMCj2JAڸPQ Wgы ElOƇ91dm36l#tJ= 2Ø/G,P+sZl^6@̋Q $-m\:trdr|\"I,n):X4j>+S^)ЁvHCNZ ˕ t0hr dsdYR =H Jv_ѩ99g8XZН܊T!oB$(@g<+ݔs&׳;rҳ"X~֒*Uj@.ǩъU$]FL?A|#@g§EPGgfb p5DhXdC2' Yf- ղlwb4X]򶷫`@v>=.3Ǡ|l}.t+?(ֽuA-_v.x+񒷼=/zӫ}/|+ҷ/~/,>0d)42:4{FR7x!,b`K ˣf5µ#)5ab< WbTF0%1Ȍ rdm8R=~~7P9؁,BLY6#\Vrq|ۗMff 6^|9n$Nsʻ8H#ä%*Z[޼%/L8SQ&7`S̄ 3rHpxd:ի!)bUϦ~RI-tc}^.ت9?ziLZ@Su0,MQj$ _йf{#!sѓ~\úHrAJP5Ok4:I'E+M-ל*K T*| ;v8M1N\%rc>AVn't\4$)#,բsRϓӣB/ˊU=%p@&u<#!?3=/bBWuK ߐZ$) .36cwMͫ\(6:D[d60NΙFoȐHI]@Dm 4޼l&R#Bs%3^ЇУ<˾|F(9k@:͚?*@{V+,zڄfuCB_z;e/~mAC/Z؅2U}lA4n`Bp jERJ9O8݄wКG< Mɕf劜l9=͈`ޑT{jEe pW^ma)h@Н\ /̈́:`)a ִtgLFɟLEYP :G-\N1H#iń Т@X[XPm!rvvT &2! B=ƨ" ByԒn8/ҝv4 XO+*"$$"#vOebY@2bc1, (}]+\QRXbq|!U33>#?6[_ 6# b"&" /Pp!bLI0U֑!Q$F9HRd$޼d)"R-ʒ pF\\ 4 $d vSBb0$]dD>YUN;."]8\65@IRPP% 65#5w`O#E!UUɭ|(|e.aq4Ĩ`~r(cVLU$0, #M\^ jGe+R~YdYб@"ޥ!g$ 0% s6gss:[Mc%WH&4j*֓xQg;EVSDKH6M$Ɠ(Ł0SHܠuk 9r>Z8 S}φ#g|B{"9MR4""B3(]"5h%/H Ʀ&](grvZN(N(;2n@,~K!ȱF顀b6Be/0LMnCFv`"r;a$2(Wq Ӛ&`vK"^nb\d|WZݼT[|RuZ靮Tiwm߭Ŀ@D9.|685܉\<çZ)'^z۬҇hȍIj]̜4:Ub TQiyBAst+CE겶 %֫1Eҫh+Tk,\T`j&,F@UV^,fn,v Ȏ,ɖɞ,ʦʮ,˶˾,lz Ԭ,,,-m~,Ҿ.-6>-,-V^-fm&-O~-؆؎v֞-ڦڮvƭ-݊Բ- M~ .x@.m ޭr L p^.m Pmb q B[nk.n.˾x@ x..:BnJ.f.br drެ۪Fo@28 KB/@ir@ ., . . .>@ 4oo@- l ԀpvmNo2'v /< Soo0ʾ/0 , 4.rB 0 km L. ?noo|0+&|pl/zA0/ _1 " l p q0[m_0L[BVo @ʶ t1r l2΀1$l ,HpC/ F/ q@ M |0*7_ '+2 .*{2) 'q28/1+2+Q3D3Ȳ .@-#1@U5;H3o3)g)rT30,C+r-g8|؀s֮z4g1 ЀB?_4A,C!EAnBl?D#2ðN - "*0L3p LtMsʴO,Oͪ1OƀP4PS.P$ckrز @2SKo;;@X''6S#p+'O'A[?[7'u'\Ko]#AZ59GY?paY6'[o[k51>nCȚ0tAisi ijڀhAinvn'. oB 4垀>5.7K[r3oKOwrlOvs/7tU->@qwsr5,r;6?v/׵?qr3(ϳڵ{X7#_;/~[pa8\sLZb#0o9{|o2Z~2snEl>vӞ6B NtDȪlq4"96 l+ರlCyᎬDo񒧴s eX,ȝ D7f7^tK5L9qGLsw4gwyͮTyl yy%wn6_+J`w'pk W?w_xbӱhv0W::84x~u7z)~:46g#wrv[k6g kA[v v3&yZ9jztm@o  |~q@@ȆH;*vvN%B S@v#_o>ﳸ?AGln9{ 7}Gy\u<ڈ4fWlVv_L1:4:4DELF80QRSTUVWX/ZڃYٔYb^b],gd]0Z\-]-`,+_p+o`[Yamef,gɣZUUPCN"-"n!#7Fdb6x`r$I,A4d") D+%8lTtP.}T2 =4THzuFhNS&DEz[qΥj`]`[`'N'#mv.r.̕Lnܿ)/X+ō6x/B [ApA.'HɥOg$[qJ.D:wY$1[4 O2̧_?C: G68`p@T)d:Bj,E<YaEJ,J@ CkE[tE8qjBR‽T,ԁGȰ݂JlH3!FI&- iHRHU["[nN@i9<敖IT*Γt&i'&HY J+ `RNPpu}vĿ]UTM,?dw{^Mg C}i꫷FR^5ޭ5\'4kRpZ}t)S`n֏z2$HNJ5[  SSЀ%!s! QPaby(D%::lS!i]`ĀSU<4`B8.(t8%R|Hzk]{޶ +H(ؔMC6 (__ `K t%iH7{dR ,TU% hPEb ryI;d$LH4F0s{>H Xd,4IerCTn) :)=L(T$OC (+дqr_ 1n#Nf[b JIW#`Pn3)+ M&PzҮIH/8a*aɤ2н"(yňx O/O¨5(IPՑ-,ʩЉ6jv,Dމ MCUZ*UAC#YPV 置Pl`HX$( B4 vOQ*H2SMjSZЁӫ :8w\A!w۳ܪ%$koǚ;9⓰ens\F{-k{]fWVVYV{Qeo{^WWn}{_Zwo_u&p |`( fpGxFp` gX0apKEa+fq]EX3q8ibXǥq}c -5&r'YIrd(?SrvId,g9Qre0Yc&s|f4Ykfsf8Yss|gme_˶L_О\|/k>%nr'\rmb[^w ~o$:܊튍K8Hp\·b 63Z㯙`bj/5ì'פm˰ltw%:-t31ntO7GǩnÂ?qB{L!cDWۅѽi+6|>u"}S;)4b#QWρ/u2<*>>5Ծe,=#Hg=gl)jKz}$|<ٔ˃e)/Z%}h|3LP1E2 7#i%ѿ&1ń{I߉bRMS sSS0f!8!(s[!؋,=#6]H'@;ҿj4 fYA,8xJ?<:;>&0yA+5ۓoTfB烋{B|*CSx9@C=۬up1< ,I 9Ԃ#8e;)n($ID jjY& {B0KC)$(DCtIE}3Č{BW%%Dz,%54QBFE6EU CZO$DWC8U$F7,yǘA59DDzEttá1{)lxĿ{EDFDs9Y{G\4G{A`,b C,ȃm}ǻpAF}4S||IY웈(sULGt/ \H-T}yBF6\Z8kዩ[t[Ds`\#Ģ,JJ_b:Eėq8쓚X2>Gi JqIBÛb\)BO\OOu1;F蜵tE{GэܛZ]$K㲨YRQkIpIT=A\(Q [s :p‘?# Q4TK W F-w|J !H%I5 OeTh1U3:!U M8խVraL%SnMj8ԗ,WJD\VƂ[[[Ŷ j-NͬS[h[eE[mEQ43\ʥY\\!3{\]ҝ/535]]m:]3vt]ڭ]۽]]]]] ^^*;^M^]m^筳^{^^6^^/^_-? _M_(3_m_U_]KBS".1r__]`%.[0*2&-2&Ʈ0 u`.` f`` a. /CaoRfᮚB9K" a1$.b ]帮'推 #%*bbb2F[*q*c` `&%Ȣ"E8~-<`=~&ɁcH*=.qdD=F?`>GVd(cI`*cR34db覇bX"F;(Xn#h*"Zڈ@aVn*J R5mT`"e&F r.j2rf:)r `iG.{&9 >!2tw~h>^fgҜ gfkh$"UN&cq #z.ib*¡- ~]`zhN>az:vI=b &o<.:q iVZ)Ή@ag=jNGؘ敮/efVI[-Vli= ډxdiAR(>~m&<k/ne/Nm hxifʮn2kkAmn#m0:&@VB^^c hFn{^d*@ *CNNc5ޘ& onn^lR>{)"^`k( lignobAh.Npfsm 91l!D jܶ"fٮΓnc_rACSwqVn!7k蠡irls(@ina#lFVc.`6$W`&s?1p(7Q-,")ifo  GwD_V.:f1_oM+t&t$Hw*:sXﳑ]b2`Al\?v[N^q2G3-z@!vf*oꑘsjumY2#[ IrIB(Z`҃v(HŁa !dlIRJŭf*T؛ SpHTvcplbU0EgvA@SuwHJ"y7RVd3d$w7R]=U )'0VOUT`=Y ߝh衈&sH-"t8}B"2!! RBօWIMܙXX$F1!^Sw^('W % ѧ*D:f쵹_uN,y5TD,sص'.+VvN)9q-rl60ŤiF00G)C}ց ITI5Ipn;+!_&3n+dv" %NctmH' 9IOCp'FZb5>pAY ClD׬5ElMo FnGza&&SgO\N1M\b@&j[3%SNF騧Y05nXҨ^pk_O$v8~^G-7uhNͲߗk͇}a52+7ʠ/ ˁjv:Sƒv6SjsIHe6570`'7 )3,'-0.MZ ]Uʆ@ e\w,`l6aCBָ?;M  s#TFW6,̍k lK| `C*]1}Cc HB "[Pv\]g0UW]')JWc^ބ>ÑN UVm V2[' J7X3c4fn]Œzf:DC8<*lX6 I&P~,":D4۹ PkܹA5hAՒRV}V= wK&.u.󅙳':9 B޷(͎z ! |ޡSV_js3KVBt2'8S5Ҍ4ta 48YP1eqʵ&H[Ip u%%%`WB'gՊo& 4%D7. `:%1DžпhՂlH k_ki$@Q)p RPYM,fKeO'Q/O"W-P.V!kT 33ifQHvj[f6= nc~e< (L$i[h++ ;9ETtV^`#ZgFUC}gM pKH8qL(+I14*abJX.\t3*nbX_}99bNkh;^:G+{,MٙS'PRb)u*YpgL֛x"}2M^`(4rlREq"`BR(a㐫A0 c8<_WdI[~RkX'BLx &dhN<c>/VbR\'~xv5ˎ/ mwNI*%M\~Ub\3j`o_״Bՙ1S e1+!:/FXCJg,b"2a}ߒyRK/Zb` ؁xM #H#x%h ) -Ȃ'/82H16x9<=8!?(bvǴP6+luw>/ xQRUyw3,wCGVTuDWʶSGL-v{s\ԅ3DDx؁F(CE*x8X؈؂sP g'҉Uw=t4whyYWrs8v[-ȊƨȨvuSUYeogV8tA\|eU=u4#U[xKWȎQKkXx&C.'qNq s8g:K(Ljhu ǐ 9 _ȋ)9IyRҌ+9-&)%('3)2!,97y9;?y84i8hl dHW̴}cZ=h~OY~3P,gY-HxPY'Fqw-_tg-UYviVZ t&L)ؓ5KWҘ1 蔖ɘ92y: )H ) Sr9% i`  ys#Uɛ雴 9ٛYɜ隶 )4yUB Q5H`@ӕ 5P07Bs1#Ֆp_džJyxtywc"{I3pVi\{5LTg ٜYyb #^w[Zo[l7ehU &VQiRDcg ca5rRĺ7FMF @縹\`µ$x;h`⻈VGۼA{Bε7p;[{蛾껾۾;[{ۿR_ `sXt,:;vYc +Ƌu3 FeJ&,lHZKi-CR ,H'y:\k 0] ,4lUQ`{;ĵV^]`jp$PŸEU rFrAnvsJnAq:go֩h\2arsAd#+%&+Ǻ(')% Ɛjb6W>M`ujZ9aU [jLJrª<˸6$`exf|Iv 4'Z YB{Lb͜Yru=6ͷkx ʍ`Jj#`G27K C:_2G.ʤR@L|L|d2P>*9\itf.IΩG)ga͗@s_LH_ڶ\Ė;5c$H=ӨV*U v HO(?7;QBX̀vsk8lCyR4՜"UP!}LBYa{>/#PI]~ۗ)kA_~ i^m۷VlWTNx҃:-zw{k鯨KTX}J p}ڍYpfݨ 3ٙ=G,qZGL--ܸFW܊!H<ꮸB-xJ0ݏ.籤N [L]3l5۬WPU֖B h,L ݦ[ R,ثWۮQDXGMLĽP3VB4SuFwd8nUTy( G$ñmr},_eVz+WBֳJ+_[est^s{v]Y]u.ߢ\IP g7y'dG1+mz.eXRTbePiA)2[EX' kSqR-MTtvi"\85[uePj@꥞ƻ뾾 >~~w>^~؞ھ>^Nlm~SpV0ʾZkܷp۲`ڗL?Ѧ&I;﵎>Π_ ?CFs@Ƅvs tQq^qwG91zǔW.p<q'g$h1bB-*p';sCnX-rom[N9W}'vyAU8m82y}fI,ݝLuI+\Q{Ǭ:Ա;S|VI_r04[.8C_7O+=/ε?+ɽ_¿`{{D8̴6O{z͌%[Q":ıJ̮.$qƷc`\B@0ȑt"0aXp 8Ve8HKy>w(uR  & .#;)58E2-?KOEIWK"_[lpu7d'!Ce/e:KKE5/ŵۿ߭Y5cݓ204 C mIP002` ,JňM,fC\aC,(3Br/@qd&Θ9ƛ*p P 8C9|d3#B5GOX|fZ,jɖ6˽蚲+/ܳe^&5\}ǏO<!8eΎ5YthI&pfѩ9~Dרi-y6kշ9,wăV;6pJ*Ħ#bh"[qRF#MNT^4*'hO $NE $TM9OA UQI-SQMU&^>ft!MI`3SVӂuR&fϨ􄶀?#ύdRB:tA".V["x]wWy{m|!7' ߈ޏx >%`^X}|7#^b>"E6I7S>yf=֘escoVfJ\fðˤ$DZ@ r(0gݓ`*ZN=ƫ1}\rP1g[6;VmgVǷWdɅyOqK\Qx[>.Iw #0n|/B>xg." sYe5ˣש,Xv>,s}iMZ;pMVjUKuo<^yw$Gꅣ!gFhw %\ &okia:^Ұ#L y#,">rhD&")[Vҝ(IR`(q}IAI`Ť*[rc&!-bU[ƃ$xc߸x; iO]D$@" H&>$bf!j򉷠$'#DG"hDPJU'tI^ʂĒ -[IKԥ/qKf,\\f0[ⲙ|&2LiZšPOˣABtkůo@8.s[F$>Ԭ1B,yӔEMbTTfE ҏ$5GQm&K_ r\MqSFI ʹ'9(5*M@JHQh  8*z&`V3kU*OUxzzT pZ O%'zJ fdtiO'i(ᮈ66[wc!YNe1.LXgXFL=u8#J[Pg ڬ=ЃʕgkAeksa>1X8}]mf\.usk$d+{hg Zt%|Ott jRt# o\˦'*e;[p5ʑн+Rot!a OOHejN5x8UÄNxI| aϘ5qc#Jd!E6OU¬Mve)Oʔ-_e-o],'-e6ќf5mvg9ϙug=}hA6hE/эv!iIOҕ.fiMoӝAjQԥQjUҭvakY[Ӧqk]zսFoɑ&Ep|wP8V":ܹ}զpVwQ|6H <i{[5M>Q(Y=%(EIMg'S 2"jjSgdii h ^r7~hnw9 @7| ]U GDPQ0݅] 㓌Ž4&*y*K)jUCtZz=I@v̝;46D`s` /W*Jo#(3p]h+&a/מz nvO|p6mo|PO`~}&.(" .LXLp^ԏT"V*Z:`ml. 0-P0#,Jk?,,АVT.  Bk Cb !\P &` 1P3 e JP@k b p c4 b  jXoKBQ% M(q  6ɼ "."0 #צ *TQ}P^Q%AJ0*K+ZabJNUQd"Qb#@b>1f=X1R1   . ߱xzE`` OjH2$G$5-Tr$IN$E: m%3f즂(Pq&T”p).帚Tڪy2I.EpB&g2$F-h4+ rLra" +-~nʴ*.BZkF;%2r,1.ck*!Sʋ0c,NZfr6]-#]X^@ R6mt7 #N$s&g's2'Yr3'k :߶;3vjS\, /@=$0A*|# * 0.?+ H  Y@dɾRhe? ?ڠ$)A{jpZ@E螯EBS)E=#ȝJ TNsE_AU.ѷ^4B%@*XB 8N`ȭ S +|KKF |/2)bG @qM$NwI3M%hJTF1q`6=@ӭu"86RuRZ89vSR# 7q9i)#e`; T:yWy<9WERW:yXyXs*o.@*bl(Ai4 !+c]3;/?O\l+s$.E K_ıNPI鬌C qBY joTZ\Ma5^TY^0cR#-&d9V).rH e3L-vpڒv )cu/;6d_86_z5qPias7xV4 5j^VVf2#ru: 66WK2mj;o3o3mij6oK2ık4Δ 7QbgI (KQH| G+7FssT*r`(Wilw.8N^Uru5w2<?wף],M>2.bє.P,qz{Wcdt|mpy|lA5%i, ݨЍ~knQGW9U3Ѿր^s mc"F:DVn;MW`@8omw5 ;SAo<_8Ye?a, .Z 7>gWħr2w.[5,фPΈMoT,=J2OwDOrQ}uk(4$;2rD{ GP| \,1N<v8N ID_:'}aKJxHyEv{x ;p[HS7+T5c.\Uۖ8]i?wP"XRk-|P8T+8`3'鶄 &-B;m;مm&v*zm&[dϰ0L/xAS(L+jtKyV=Z āFwZx/YW]1oERkƫ/!^HNfZr҆;!Z[{Xo[85r5t6pWQW;V;cSgU89oG2oxrWJA.zc|5rx ܷO~կ:(x)\8%ʪjNJ;~* PZJk<]ޅ%z]YVH j>~^YD%Sn; f{Ĵ=e:&ro[[˸^;_A}PL+6}n]&a<#]Q!Q=~_ {ּ_iPxުެ\$>ӆ᯺A)()SNCX.@ f AE/oٝ >'J`ū ;&jr=,+9M3!'NWL@**fU I ?#R|C¬nu+| `!h<"@a0/BK3Pd4L QbX 3p*ʑX|dMUiH E0 QLRra0)*4&q1U}RIXaZ y=i&Y$+(C+{|D[_[7Wc4SL@O7۰P+wkG7Cاۇ-ѸhBHdŊdPq#ǎ?RȡF00fxRFSX)FI28D92K3D()S"& 5@ڤTVU#dBV$$htu*YX 1$Ncv;B#f% {@IL1%zdWhRv䪒u+z-"# S̹gYF*},SX2ث*tv Z&Hf-S[eu*Zh A0$vk 6e6h+>mzޅ5ٗ^@ЀA3`uF QXK6F+dF!8Q$5\(LaqsqZ Y@VMP$t.!e<@$ ʅ/nAUr™6EyEp5X]QU|UTeFM|Ȝxvb)ZwɛTVǝvg@ 2p@`wh\RhlW'the0`"VTp jq* mzLiazfydxьgPCA{걠74 y|Y ؚ\M fn A:ĨHDI Z/G0􄒆baHVēMĀ10(,3ܛY  Gĉ1Ѧj&끲|Dqr`t|35lZ@,eŸ54LBtӦ%]5R'!тvyΞkk[vP`\CQ>w5쫷G+o-%݋3. @_xf"?>W裓^駣ݲݺԷ_Od~޻%";ƸOr\|qTAE+f%c޽߃>6 _sXo\t8\߿0 hOy[ )NLͮ` ^PU J!@h0/C [ؑ2a0:!{C0B5b8#"1?\"'B1#"B#&1Z/1bthFaqj\#71r#h;1z#?2$! iC"2\$#GB2$%+iKb2$';O2%)KiS2\%+2%-ki[2~.W2&1ic"kI|ّ&ɜ&5ikb3\&%d!nj3'9is2fԉw3'=gB'?4}t 01_By} 4(E+jюH+Xd@4,D/jғ4*EZ0!' MFS>T+)O{ӟn/XHYSX o9E*PԧB5zD(ҁ@(ɗR=RR5b+YUę[]W1Ӳ5rkSJUpW׿6kR!&լo,cDzt+J>JHL,g;ώR'dъ_V{]*h[)f~-o{[9ֶ;ac"0-s.ETZb7YQ{7gnd&[P7}nI;`7/}a7/80 l#8 ^0C80+lU10;1"v]K8*^1Q1x=%&ekl8<1{RB2l)8#('C9R! %cYvq܈גKq ˬ9W[ռf3w1ZҀ",Q!^!h]{b΄$|͎5;ϖ7gT[| N+0@(JVDF [ŀ8agyK:@(T$Yj3>Ѐ\oM8yp:Ffwao#07Ft}4Wq5]j7B8(=q~,h`A:̮ ølWnEa:0~;x$#k^pK?>X&PVhYo#`}GL3Doo,Iu?g?gBQM&MYۓDhR T RtFe =4@_ J0_Lm_π`r0 FM=D)Pڠ@ M߃șmy Ԡ a`_Eũ4l|` 8Xy|9ٰ ZC a~ xaZöL-AmD xDB$^"GX"0Ȟ!Z靿! 6@\t ȔuYDEn[_,@9 DLU\u,V2/K4BOlr!5T Eۤ07aFӘE;1@9=:X.ANtP\?; `hh]95˕m~ GK$ Kú8KL&upݨxTUEʼ-c*:|NޕE[Y ]YBAuy[da$TMHD=Yw8$AigF&lV&"x`qE"U'3XgI)̦ZInɨl&#&cb@ʎ}("3HKѡq ax̤z\ǻ$4XYŇOP~[|7^şP$ D/,/d"Mh(<^avU⨬P |gD<^bI 2Vh,^)'_^0ijIb]؝|!Mޕ iL7(Ab. F ,N'@w.i H)"gZrj's>)XeΌj҆^t*v$H$#C2&9`}h42 1"9K:ЎIb>"l>ĈfKUVŔrT^̈U"iƍy/6MZ&*X4)O k+(#qmőr"f>w+`~e0l>\HjlWyJpDy̯*C]$#$^ʳ9'_>Hwr t2Jr9;'%?HA4fJC6̀hY@ d`KNq#["ZjJ0-\r='&1)3njGÚ|4:wG Ö]Z ,_Y4ȥuTuzxXTKLk1s5C"5VG5? ݲ sOuY[t Mٵ][lK5 V,S6IVlnκ"BD2`P H;8$l75Pv@c=LnnỦT,| to*ѡ$cP'p 7vL+ 1H16tos+HVw>p ws54xWG+/ZFŀ_6a_s53ac3l̩2vA;Hs2 *Otp;fnvoi0bYg,c?+{k;l!BciV;GErgJ#4in7,:7hx:>ah'6gԭ{ϲz2t܃.GcC }dN~37}FGYmM^[qbl5Ez/hG{`ԼJj,6$gvCJAc)B#g??<&vR8 d悐`qJ[w,em\  #Et4"PyXy^$vBO-Kfߵn/kgCD_ÛNSh{G=m +o5A7ƒ k w@P?UB1pbiPLUz4ÄLЄy N|A~ž#e=&Ɖr1FSjLH+ΡŸ ի2[EO:ܥ f{,$oIa/CJ`x*,K:3RĊpSz(s*K3 zdmu% `: ccubxJmRP `إ mN[c< .zZ 3-U~|uקip{ΣqOX,\h^B X}6ۗEAH>q-]VS&2ęSN1iZN5cy3fP2l FF6W|3u!&T8r!8"uI.dAƒ/3i] |Z(M嬮3WQ'M](%1VFxAa^:x Rj}k%+#SWBW0(:Ǝډ9pGRl856OfNf3YQ?V:(A)HA<"P!.@B~LjPB)!pB *Ɇ} $Az~~!zǘ`)(r*JIt*d*HJ+TK@/$K1ԒKV!f$1k,t4MȾ]HL=d>O71P@]q@M}OHAsF4IG%uA<0S T1US-5V^m Tj"1cHaya*<r5Zi6[mWUZYcnV[sv\ue]w߅7^#BPV{7_}UWW:`'cau;FN$ jn1!Ec?9dGf_OF9eIa_Yq"*:=YؙFs8hF:iXizԖcciiTk:D);fmߞ6j婭;o"nx'xG>ygy矇>z駧z>{{?|'|G?}g}߇?~ɠf?`c v5` @6Ё`%' 0xVOt vЃaE8Uj3 FBЅ/a e;V >Z uCЇ?d` vGDbD& HAေ)'TJ D q1;1b8F2ьgDS6QJPONeHhcG>JPJ|Dd#`cR ̠GJVҒĤ~Hф XHQd*UJVrw8P8XbM,Tҗf0ٓ.h', %]Ĕ= 09MjVTc\rs\ FgDg:չI5!8 )q:E%;O~s1x̚䄖.O6ԡ(5sI {iHE:RE2A_r \8RoY N8&CՌv=lZ#0czLbȄòɻ׼f=m M/al#l[&vVm 6-v76,o @ 0Ƿ=b/\FxL/<6.{ x?.q';v^rZ.Sd@iqWڻpCm{zԗR]gy!~cN=nxϽvO/;Anq~8Mw]vǞx{;8!oo| ȋ^y;Qs4rOf8g<%נGz,˥ڸsAɱ:އ}!z]O~ٻ~/<_S~~Mܴ2@\54@ @h@ @L , @@ ?['|:W:#YcB$@3A4TT$@ BC5|C6\9<:A;D@<47C>AB@@@D$3=\CC4AG2Auup.D4$$ ۮ۳>J>00ܸ b0BL>>1ھJ^:XS&,4 0/(x(Я0E߫"ñTp#rrDG]tt,G?`Gru|G)yTG{t0|G|,yGw} ȹzGG|s,H|GLHHdGHLGd~[t\HfG[:cjhB8I0Lɏ|HHLGl8ʊJLJdJttʋ ɌJJȯ,IlJDGVL5Ecŷ=;tEFY6w_v_-``;  !V,  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OFPq `#r)<+@!!5 _RD@8EBOLHH@vx9xdBk4IȽ-1#![JEn!mD!TY=ȅ5CMdf oC͔S#)6,2-^DcVɎ, d&guh k rj¦DN#ҜMCM ("%09_w^,X7LG5]ƗvnJ[> T~'?a5_6їEهH̀DcD'UAKUlŧYA~)&SFTT|Z-y(ύMxS&Αh_+G·%nu$jbDb gF2.C1SW\2dD)tz@TaI'P>iْCsTn8kl&euݙ$)MׄIXZ4I*`m)@)+Ef9&3r) w K*H46crDP'BA4#_ E1Z^YQLDeg&U,"l]mr+s3Yn8<u^I:˦INAo)&ׅ vIt~KV WR8kT$~EE8O. N0c# OBem~Ht=weޕ~H̸9#!^ϼ;~+-?o>W~3!\! ,  $h쨾i´Ұ]n1Q¡JPKO%a a\OBQJ.jRaN4Q|rl@d O~p|ua$fhz~jPws(# 'x/H)WZy8mS>X:c!! ,;H  dihA*4 n* wkD !8PS2i)X4Wf~{> X&$Y.xzf:od7"8 $]03/y$.9#-;l-#.v.}ap$j"t~"# b-$"Hlpe[#dJL*0-ߺz4VkQoXd"b*0)X0lZf?e,C,.RvCG*3a&h[D`. N"AlS S0Fq*MԪFF9* ZH! ,u:  dil;i,@kt`MDqYK˜G*F [K`.+N UBW5YYv[:lo+9lR }mZN4l {tms332Ŀþ2ǷR|N\Aླྀ(*HZ!! ,,  di@lllt~r>EѕT.WM3}MUt4ٚJ D(UTT*"%qWTnt"=T# zO|b#j"* #K"+:ur x#j G$ ``$ž$yd*slc" %P{` &>&wʵ[)`F_@+=,"A8%1m` DsBXlNfܣ! ,+  di@,kl4}r;k ]#K&Q,>C$k ڻJܫp)eqyHXM=0n$gz*rt_(*I*x)b(*%c^Y`y++ ~'BL( B'0"S&/ '% }#oKӰ Q#-"9o˓,qM\PLxC'Z(‡ !,  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,  dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB' '(A>>v>W!! , K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!, e dh,h+ðүn1'PNfVv}1ĄHy Tbnَ1oJsZs8x4(+59{BL!!, f dh,i+ôҰn1(yRΔ**RDz d3i턚z`UktwvBx859/FX!!,"  dh,h+ðүn1'Pqz0 .( AS *BzPEdA|u@c0Y*9"/zv$ (o@2\s<"lwx '8q8*Q zJDNFa|ZBH!! ,1+  di@p,4-fx?6ʈ/R.EMy dy4B5|KL&$0U e-fuS+"*$t#iwHw~*2vxqc |?P;}Dn $ * "Ķm^ŷ_b";w\.D.QРY ;UN LxÆPq(1๊u`X#! ,N9  dilۦp,nxN۵üoX DroSep>Q)̚- 1d2 8-&Ճ!+qsb#jXA%<#z5h;W-|,"r|y",+j" z#,$($k"M~+ $Ȓ]#a#5؅%䰁-g潜[% aKf EaaImE`` *8H-58osAD@ @Bwa_vX\h?d^,hgAi>P,3&mLx4 z8u׮[U {%! ,y  $h쨾i´Ұ]n1Q1, D#0}%\K@EHJ@u@-F]J8MHf$'|O!!,:  di(lۦp,nxN۵Ǽoh ȑq%,D2)v@. VS~@JUV $+t\N+~_c_D#^e'"yK%U}"b*KF(R"dSϟҖC $UC +#?, ,#\A)m"`oH3SBAs$RqW #&O!,+  diA$rh]=Ota$ѰU41RʥS*bZ &LFHC;~RW c + t # *+Q})#)Yv)1_Y" ^%b%qu[] c>V$)#R+ n"* K5I$|~ޓUC`$`b00c„${qEg.b!,  dh,h+ðүn1'P"8I" %#mQ QN48Eѡ2L!! ,  $h쨾i´Ұ]nQ&Q b<`ޜErzh 6%2V֕"`Lu)0u4AJUz<?~"8#'5. h"/gsx$( t>S>X:c!! ,  dh,h+ðүn1'P$ P.(`x=C-hN09]#)E w@ih{@8U͚kFL!!%, @pH,Ȥrl:PkJZجvzxL.8n|N~ujhM[pv˺ӉM݃4-T6/[/W H*Tap @АEĉMYx}AkHɓ(-\3JۈQf$l̲Q@ JPH"-NРUM䨥H`ÊK6!7WZȊ&WpQKfkM,^˷_nf:5n]Z8l[SgF.`q)?`qU MebHכ]HxeH76|7sP".d~L/s̶,W 2WË)0# #~nwH_ 9{\ЈX)'`M7wbr H= \:OF!{U_/v w0ґ'X ai$VY:1g` >&DR9Vե'',TB4p:^#R%iT*jff[i\/cnTh.گH"`Dmt@8.ncccWܤQ}ʮ9\*@E79&d\z3Wۃ:|r:ʪ)Y"}Xu~5Uq; Jf/0{akwv;/(t/"dc" [ⶴ]m7iօunk[DHL5I~ `T ,0`YvR ǃ`P2 Ckkfajw K_sH*2Z)Ȣ5:0.$UnH3Ë1yR[1-p<;1 N}I\BG@ޱ?M'E7I*>a: 6Yx!)6:U!>ʠUh^^"DlXMt_2іf[ef:3~D8ӋK0 :)hxғĺHG@?*$irr+%{ 3JЂӂdw9:^ }(HAUءD  HGIRX %LgJSfdS[g,꙱@NA>2HMRkCphTJ-eXVLdW|O/V8p=0W98^*|\k,Dbd!Ea⋿66eJɲmdGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7DA(16NL0gL8αw@L"9'H "`G8B| X  p@:MfHA.̶X L,Hp3C F!x@g 4|@-,f&,`h>C͐r@LZkBP Ҍ2Ba$ь΀*Z0`MPTG֡u=:gZ 6ZqL W] 0ӱxuQ (Ɔ -۝p:8rv1PW={h4h!mM,:=d%c1u]Uh_oPZ.Q`YgSP"Rge-I*ȦsVjw؇J}j`HYB J+w=W2X.J}sڪ dZn[(5JxZIzxJyM s::jz—8|JXkCC` Iٔ]>6鷣op[eI-MI]F~^r)('j)@L[w؂TqJK{ڱYxn6 \X+8b7(Kߗ0Kytr8gˠ+Ver봅+ л{tZj Ċqɼ[^%P+~ߚ+^{y -㻾0Ā[{ۿ<\| pxf<+ Ysq{<ˆ|'$£e{/,4^6~8:<>@B>D^6֡PΟ亠FPR>T^V~XZ\^`b>7b渀dnpr>4v~xz|~>^~舞芾莞M^~阞难pޗ ٦~NZ>^~뺾>^~Ȟʾ>^~؞ھ>^~>Xv*]Ӕ;~ n?W  G&p^Ch|oi] 2c&u̐g~ `χN*R% aIs 7*@hM`0po9ߨ%?Q/`ZFl`z: K{>?nz|0tVcV؛,jfS_˯\ ^lnoW Pm xYC[KPbęJao X h_D   t/Qm#Plϵ\sgv`'uV*Qx{B(m A7td߁V9}Ǔ%DguOQڨ?j7H?fǯǟaRey)F0 '5(4P i5X(V(>ԸƐ"#4,.3@!%TSsx#C~)Mah"ip<3=@]Pm Ο ^4EQ%6(*3C!Wr ٶ)\$΄ loMAUoV6Y+I$|+w 83TΪ=vJˬ٥z[[ N{傿?EAնcM5w57NA[4 (o#Ԓ{'wmP ʮPA" k18PYd0A!dA càto<(r\Ol[ 2F Ss?(t35=䄀:1AkaK32 sCI1>o L?r:z:lUL'rR%)dD˔AMg$ba|"CPo3 mom"QtLڌTQDB\v* Lk)HtZf_qwC'|KTb ؠ6ބc MikDYYc-hd́lBb2 PUMfOcj.4@⑟DHyКD9=p &_369F1Oh9eouE6IR5-)_+g\f7SCg,?SӒ*k ?x ;BI.ybV@kLMU*LX1kRS|ٻnWEIPN12W99 }5657 h0꙯Ml Ĭ1.Q%FZE61G>umWٹB`-*QnCɐNJYyj5gLU9ڴF韾0Y4`4^%0Nθ0% ^SDG5PyΫΗ-&(]z+2ȻfbM V*.JЛ8f *6eXh8!eC~fbM,5H6ל/])hTEF,X6h-/-$2s% ɽ~G?A1&:΂Jm&[7^3mXR_L}|󝯚7&*cyːo4?59oO@Yjr!=c|k 93AB1tPޗ;b۱#qmB=%ai(%Վ~McPЃ!i`y*s]zY1F?g7e P7$^q6ugyr7-3IpE&Pehp#iy/M{·w׊|CL[E,}a+cm4 gϠԩ [ap63X b.'ڕK/:KNܶЙ %.Dz$'uHu;&yA{|m,Qd<@WimzIFV]|=%]qE\$,  hNͮlsh w@(~wƟŋ <)wCbf2#&L_?E+%ߚ R]5RҽD!0}~m(W89.ߗ[w=A}#_O=2MS;%}Px6Oڄd˪Ibˬ\o S.,e \%.A/G MOzOAdO&`g'8X8/ny0\ jLzFL0=FZjoƣlpl~Bnpm P F1RF<^mtcT+H壣EH9ΣP~gPdRmb@)\lVM/ Q _ # f]B:R1{][$fA6vp v% /F[o(vQP(綎C[/ "Ka3H↘aqF0$` CHJB 2mz'ĭ&0DDg2m!pc < &`v-E@<پin(C5(Jd2)&R*.K#/RzO (vhI潀ΜF9lԞ+o*).RĒO+/+,ҶJմ`)r/,r[*>/G.01R*2+(-2;0q3=%b/?[8@^QkK4Ge5a363eӀh6q37R5Rt88{6[s994[=*:s;rH;3s<ɓ1]/=S='<=?S1 H>*8h>C?m>\0?-@@l>A!4B%tB)B-B14C5tT:tCA:?t&F4DMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4HtHHH4ItIII4JtJJJ4KtKKK4LtLɴLL4MtMٴMM4NtNNN4OtOOO5PuP P P5QuQQQ!5R%uR)R-R15S5uS9S=SA5TEuTITMTQ5UUuUYU]Ua5VeuViVmVq5WuuWyW}W5XuXXX5YuYYY5ZuZZZ5[u[[u[z6[J`#*]Aj-27d\I_̭(8g0r?j/[ km_%I&HRLRb%ј[t&UneSMYӭjYbK ^ 2څؚV^ZgL9Բ310B]mzqKx-yʈc."oҺ':G:ΡP6M/%YXŭ:sS?(KgψCz߯/o6,گo5 rR/ML S0;6r /X&(Ajrw[Qص%cu-bh}Y  Y7ز` 10k !d9` #һx#g{?SXb})5q(8Z g7&tnri bl%\&3xQrI7"ۛ"jW-;Ɖ&R"co?l^[r.vKr+lI_"eT_ ,\_&|ٴBŜV|54E7{B=حu}pdݮw3455{`U4=ZEj\,!U|!)a<)RY8t - y҉ꡪ^UD`ၽMdP$2tjiw"Am!Ab𦕩 Ng(U R5Z N@WϬ_;A߂5 l\=lUc} +Nz5֮_/9fSGk$L& eTzDy UXƚΰW2 hYޘ߂r1T<0ԅ!V6qKC RpnS=s=v;毶ǀ8 (Mr3NEBEv tG8ASj{xwq*Tp  s֎4><_wڞɠ?|G=i~VUS-O}'|yy竝`ѷ H*eV j n>[I#z߷>P;}Bv seoy]>1AKw]} p ^U nVU ,96zEn@V-^55XMؐi VԞq}5Ae[ =E 4޺!@^N, WU! R [ V a \̽YwP!k)ݚ}!W ֭E!NE!ܨO,ōɀ=V*y(W๝| )^2 (^)V ^%[Uὢ͘Yu)%(ܑ !Y 򗕜C54^A67詀UɝZ7"_=L+@2ޠ0<#T4 5"A6#+QU_y DZչ\D@yA UP H Lh&kf$jddPqA@DB0DfBLd@*rWزYeUVb, [tZIQjbVf'wNeRWrWbP]Wʣ!…`9sћZĥ!f2#{tee<D`~ej| X}z}!BB}T]xl$xfQhx(ibUE䌮hfI U_d$zMgU X^ 9 .*RiVbg6V)xݙ h姡zbJɕf!F<5 g9(6h)HtIf%3B& )8^cB%!IPBՍf^ Ri*ՈEjJB RXU'ّR`0zVY vR}Ygyj'J0)^^YcYcXRf)h)f*kh⥺.z55-+#B ѵUrlǦfUyy@vI_jY,rlnd)Ih,*q*isb (B+xbreu"+kQ.kIضÂ#t`8BB.(2&ؾ+]jꃖz#n ث[2,mA2,ՙ4(@% ߎBdUC^_ƂUʨjn~,RߑjMJ4qV%V*z'ZbgJ`R+ў)tfkWz-Y)efVcF ^Nom-归BJD慾6-:o.V$m2k)&ڑ鞮l: .p='"  $* bjpxbo黂#v#$t[&bpr%K/[=V+7f_k*eJ f:diF.$*"5b 1lq120* N{1B?sng #t:UeR.isB2"[jmvgű\ea~e@ɱM=}[+0%1+2%;~hv[({002en1*l輩)k*7l,[YNs0-fq IjˮT 3UXŲsfCl̵s>f?{ꮦcbݘ"tޗ':-!%8FGtvQVt#3+~4v\*9 Z^_'-' 3;1Oޒ·Ve6No1@hF:Ӥnj5B%OR 5^G`.Qt ` 4JsNKSꫤfB*1s b3,Vߞ9 _e+cg{fBYad7e73tf/)L=cXgqX]׮6(\_Wq]@ˡKW )o&:tg]T_ag׳5/Wi=Ccb+RL|}+kLw}+&"}Ąnhgւ[X^_]Bg@v HVYZux8וEsr|x_S`krW-{90#9Sۏ73]yK%y[9Ɠ{֍i^M\Ww^ٗ9_yy׸ycڛyѹ:g؟V;CzKSz[czksz{zzSt>~GM-sM(zoIzz_5)Ԭ,߄),<K$K<-'uK,;LD;j85{&S#1j;-̥ۂ^Z͵{LT;_j(mc/? +ǻk|,;¯{{O5̻G$p?Â)[{KÄ+ۻ LJǻ|B~A*{4aܷ ~ܾ5V+|%iQ^՟KƑ=fmԧ@'. '}`N౗Q'(\ׇ+=a4a7\1R[71'Ϸ6Ttl .Cs(] تG%YTa&a9FS~M4KKs:AB1>>\Bmgq>YS>m= 5W_!c=)U1BUITNzfvR'eU-J9y.ŶX{߲<jRR3"3:SR;$DJ*«JCS9B;\ZsDaLTLB ̣+$Seb#;\ :B$nrڥ'/7?wtl>gowR,X`,D-&P"o+'ĞHBI"VEę&TYDe#V&KPaIBDg.piSPBYsNH4i4Or LDS@ -FRSXe͞EVZ ZVF Τf!+6 H0&x]JqhF5QBGRԤ'EiI?RVǥdiLe:SԦ7iNuSԧ?jP:TըGEjR*T4թOjT:UVժWjVUvի_kXúTլgXպVխok\VծJk^Wկpk`;XհElbV6ֱ%b%;YVְlfZ(z<@/ >0ZÆlh?W mnjȋ  *RpYZ l' 6nvqۉֺSmw\,7,o_+ŮW-T;_¨wKUM- hö@]^p97F]+tlaNEpEW.ةFqJF ZK<0@WqI+U0W\cBIΪ bx&vA_ jx!8҅ hN?ɉ6(Oک,2=փ\r_8bpTm 7 X;&o릶w~WTmHg}k*ߦmlp7Fd|k~wCVC찆n*;j6}jWRhpܦN~,y6UlpR\6ɫ|\7`s eAЃe=rKۼ#eBVTO՞]pckڹ0s]\yi~[Moæn;Wlzߑ:{Vwtg`%{oםji2[},48 4 ă$"ô.21ê-t +A@f8#+B!TAKC4S?!<*t5M;As,A$Dp#8^S7Z6>sA+>24D4<?êXS#NĮZ6L$=%CþS7D[>Qt?P3B[0*dB4c/aK:CSO8M4*=kX|qlO3mE Ƨ *dy0ʲH3SD3U BHr=jEX?[ID?C{*u A>L7*zȏDӫ="I(쪔P*ə(ɛɪ9+FɟʡG3µʥdJj"ʧ:P몦ʫ ʭ,SI˱4˳+˫"˶t˖A˸Kz˺Kp˴˽˿$4DTdtDŽȔʴ$4DTdtׄؔ٤ڴ$4DTdt$4DTdtr8mB o]qȧF9`UO] O9% e %! Ȁ0v OI'hړL٤( w}QvH"QO ݟ Q1M'%Q3} x] `'pHR :u'+EOX9,冕B]%5Q 4U$Q 9Va;RjSݟIv$8[, Vlhn`t5iA^54\8mR]+( _ H-RXZ݂ݽ-4ӥ&^4i#x 8H!Y"7-YE_͆ZՅm],&Y\\E#e5 Xӝ]!_VV M== ^XF=͆Ac 1ҮmZu=ՀFn  _ _ &[v+Bt"Qϒ- F,X2vM=}XТ6.a6Yed>(d1yy / _Xߠ^"QDQ&dCa^]b,p\ai>JFfe\NWa弩?h8앎R*q],6 M,Es؅݃p}1N[n`of-.g%i^V'Qox^E瀡wB05 h-Rsv PV5\6jVhKh<,b/] ܐhe^j&'^ >`ZcKҗze+#| IqGVJHRdGgQl=Jb-e&i-&iLgjnj<5`ld&k81R[nC!e&@$]_I,_mk,hL 0>n dF殮ld'ւ̞;a5\m!mJ "#'-a|J!u;pJwm܆f:Yl+l@ӿF\FQ Q_ m} W0.6e X|fpbkϵEnApanl," re`*#wJ}#8Ufp@hȮ -C5RqݶB.RU]G`EinĥQF!r\&(V %&#'O&x>PBGf k!Sq/.ZIv9=G ;-]+Z*_Z諾?]@q-`IA.|Ga eG`^_ @带Wokv熎Bv2(r^T-w׭Wh[|.y?cwQw}xzs`Ձgw (GytlhogOקucgyyy zWzv0s{0ugh}.Urm`VZse}=Ig-VmwǾWzjדWW(syp֮O{}nm{"^#Z=O u hY}Pnz{|UN_zdh2Z8/(h}8lZ de}^RtRY1[XʤBT,ri8gMqGw w<2ʕ,[3̙3єi&:w(Ao$ZPB2mT)T>Z:kT\qn HMqmisn,HR~RʙM2ǁP-A؆n]($ 8/8]Dn(6,,GnrWю5شʮ-UݸsxGW5ט;v YcߨWykݝuסk.}Կ[}ySG=tdᷯ_sfsȈҝŌ\TE<H7 ]-j=Id@YdjFL=(فhdJQaB~6Z8!!"vf@n4G!#B~ $6g~Uw%Yzetc_jZ&mz%qzs^{r''i'Y*衑򷨟B^J)UJb4xY3:g[z(^0p Cj&C`4+8zNo1XeD h$䵞FdY0]r g*J)V.nnir:Z[΁pp !qW0?Lh1\,1ˬ lq##Gs1+3>Zd0iQkZS M6vi믦˗@}2]/f̨=m'8rjfa݊n?uYnu&`FPrFC޲521}7[2O^2͡^t祣9-{3>1'뛻{|(A Bp=\MM_.Yژ w$`7j9{ jx[?id p,*D(IW-oFA =bL'K؞=&9i.*86* MMnkE5.zw߶C|p\A@-pD,$*5K<@@@ Zc(</jֈ0ms׆,mɂ@1N0+6B5֪⣵lXA C.l# HJ4` $h'R$ɷϊZ c [ҌL6ЌL26-P+/| \% %Ցr.Aq^RV!n,5Ok/,9ωtsTcs*hx!~x0q_gsȸPm(Ds:Ld\&!hBGhs"=!Cm,IOҔtetD4wMҥtiFQG@Wm &T>(*9?1UL31#E*/#?e 弓MdVk @ Ș=o|X 62c$ᄔrO _1hӐzoP3T s~/OyYT $uWA#ϗA*DDWxls:-ϛeX4!xXCƼ3UAQGݑVղQc  -{a{_ Ov7RjIW%"r#^=5&.0}~[fUf dO5{uh6I~^Swǁ^cG=IJs! }Y cUʒVw,A+uWHE]Զ|B3`3B}-.~A2au~RhGKOhWr"Dw6TgoEmGXyt-PW!rZdQe$fW,"e=2HFn*Ws( єIy'n4J}4TIq%ltMU 0["߄/dyqPK$L4@UٸZ?Wd^6 H1UBc}bc(( 5{ױvFewHLtsōݸypiF$h$PS͐SۧUJ>٠Tw$GSІLp\ V!9!F5JrOGDЅI5[uuWgń!az;93Y6ɔMY_Q)SDPIWY9@}]_;cIeigikɖmo q)sIuiwy{ɗ} )I[!iF V7 P&7c`刡 _e06<( =\ r Fg6Pf) ) ( im9I^ ˩`yjJjj~i`Dv)el`aV!3Vkpkp)kWF+9.9@i)h*qa6 bwpB`Ltp{@l)lz-yiɜ*_m,Q\+բVDn7{,!sye~%4NVc MSБAT8\jQzQWmYZ[ʥS Ed^*ii5vbTP ySJc,Gq^eq :phN4mvLs"1N4"r$>zJzpXUTV"8'WZ/% &&t/7B%dj4}amFzMZ:GҺ8}ڤڬJ:tʬlAjzjv:Z^ :gᒯlڭhjvİ4ZyI  R4 +!xZ5 P |(@|w)Qn{Tuu}*w0.gSO"#0qe+bDfi% $+b!; \ۮ[RjӘXڶdoP^;v˱x qp з CK{[~k@K븘K[K{{K[۹{ wwLA4kwPDuRՃ RP-+{ZxgxPK=_3'I -ydQKۻ+p;k뾟+;ҿ[{۾ {~ JZDyY{.H0w,Ľ˼|՘PWۓ 'M7SuV۴CU;Rm|Z%A(x#2; n܆()t}لEQ$ɈRj^h.%DLA6w+đT80y<l܋C{<ȁ,cHȍȎnj|zǀulȒ<`ɐɇ\ɓǡ<Ȟ|ɇlʀǤ<ʚ̌ʬ;,˝,ȳ\8ǯ<ə ˿p˺lG=9ET:;+x@# T vh9M9\C 6Mj>hB f*JϨ0˳Lϰ ̿<̧ˎ|yϪ<,}ɭ˟l3{ Ʌ̿q|*y+-h{2t(m,:0}>*9g"Y b Sdc+%XLC9Hq CXװo )ŷ @;?Y3]#Y=y#{tvyMe k؊R9҃}ؓs&&|=䗏cLH4[el0P.`.2Hf BfrFd{̊AX҅܀ 3p;١ݥ-mTuN]WED]kmm4QuMn.n*2(q8]F`؅]v=uXu,,~ۢqfaBdPd[5* ^ήF,>NPR>TV~QZ=d^?y l!E`*܍K0uJ8[@ۻUU|uӛJ$SMd5H96r΃G;I~'D΂xLdiNկї!zmФPfMW6f-o |Oy9y_e~x^S"cWڝU ]pՃ뽝UZμ E sh࢓Quae8G @L:WI 8ye_@[ \Y}~/#WXc$)R$*/1/3O5o79_].=?A/COEoGIKhK0Wh^Q\5Ug5dLlc0TaP8(œ8[m$po͖jO1WNC*rP7oL-c*n(ǩi, ~$K c0c!r%69X=d~򥜘x3cԮcnQy65F~(0PIeE^ #TPm_)کe"Vchtyg.nBSN=K=dc;"!|j o]w&%6pAKSs@) 8_ w72*$^T2=.C׹[l]X? s"Ee,DT"%7 JFvh]&ǗhE Pe.B NaU4⼈Vg!'GۅP Ozt>!q~B@tt& ]].Yz$#H;xŃ HWA g:y|&dA.m,Q7TRG6"U2H+V@YwլQ1/S+x1sZ`V? `BK6l˅wZ;߲sw^u;OyFLqtI }(MQҁ{G mq e Í./ij1)dT5bO*8e2$™i9FLA-kQ:d4AüQkPlrP Q9% 2&֏ PB3 `ۜp o^a~'ʮv|BN` \p,av+lD0u6`d< :&@М4Q" aǤ`BX}!Bn`>c@h˺B)c6zH,,lh* p]9AG +OU-A.a"5ePJb. ֐%el|Ϙ@Nw' NY1f zn՜/dhAI%P ^,@GeB#͐#Mr'%P#) TRMMm. d'gJm{qh1&g6֑ڑް.R%rLVorA FT'!җNZx/FNwRu$k^l)S;PN- L6*nOQz@G`Q'1/Ғ( ,1ú~;LZm495GS*46;;abR72e*+)C>-_XvFLm؊ჼ4O/>V$$5fQ)e+۾LS!UTTO1kRɄUKc{@G>Mk,KIb qm0uHu`VLYMUCMRؓR.Q.B5pEC8G-^Y@^'Z/598'1_e޵8 sP2WJ63sabODnb$6 #߫$-h"hXs ",ci f M⌍mhH-P1q;Vhm+i[)g6 h!"avja hek$&JkmU%ejl[el6?ےj(.i`/] /@q*r!g.r(/2Or$#oaUht23G%  .0ud4OP6pנo@*5ge'Nk%mLT`\nCw fs`9JfvyyV ̆ZehMMQ]&:F3ĕfQVEnV%~nLFږVyC+NAS?^FzWCڰ7/ xe]8@BM`)q"X Y*~(pjXnx7atpz:ru>wTedO"TMN ZnC=tZ{UKeA4HʌQQ5IJ7x8YC95UYu y+4b*X>*0~[ ~YP{Y )TW_]5`!jƌ-w1XkI(W ^ 1U /YrX 8PyD^*OHiygnǨT֝fP)x"~awLZ5!!Q]6y77ߵ6 4byǾy9^5 ?&P΢#)=آ&\``Qc!'4*RօhJJ. D M3^rўTXO!JD !bb^#%f&g '$M&dǥ",-.o/p0mR1YX[]tGc,7_5yl8:R;s5z~u:$X(uJS'R)UZp^p+i$`ȕ"Ϧ!d1@pA>}*9F΂?:si `AС{Eju'(MZBG@I 9쓧&]h\ D@ _"-b'%ZU,T0".,a-H \FR!m md{@-< xncw~)F+64Kj'`8vnyoR%y-oEGBD |`#|`(A d84#6r'(XZHv12,= 4&Z<:Р%͠2@hh\SD.gZ3`# bzwxY2oI!i Ҁ.;o+2y ,vZ֨Id.qUTVS~pb 1V%2(m x*تU43p4kT4lƖR y=:N\Jg8,Ԣh6D }hcO `id2f^0{><12%EnmV\p2ɛ߃ ([+ l櫔`~<#XLvNֶ!!$^貈IY"]1@bA !F]iI,!6jn}(=᤻[0 ix|+:J>"33}֓% A3j(fRH-OX-{-r,f5)[EPJr]傿Cܵ4w nٝ P6-Tw ݯqBѓ,EUyϒ5$ ̧EmdXl+Gn8=0 7=i*yΆ-h59<΄\/.ĆјY)gkX?tZ]{ui~Dl Fk Mn JZxXH,f{Urwǥ|y7}2 Hz&0naD+؅wOgR3\ #LIi,?3uw' _#i'vF/{)ܖc As=pCc_:Oѝt!_FHhr/-͝IWuQ%& J}@~}Q}m ݰgӾ$%m1IӅ^Éɞ `M` 䡛޵Ꮂm@U2ٹm ^f-ņs4J)p) ͞m`UN "f mma@^aT8E| b &L!(\&L@qB1GAqT ԡTJC x~,d -]+_!V`щ޼YYA ԛ[釓ѻU~DhHAmsp~7yqXaϦbK AqM6J/b5a6ՄcS4_ac#!Cp!\FmBB &EnZ%Z"4" ]iG Wv-]weHm"MZ(WE*$ޔOg*'- c|!cH$؉h AҠ^m.^XϚJA]!RUWVeA\_ _˵2%mUHYarXύ%@a^h9B!:a ;i%iYVXn%KV]9泄!U:¡u=U@׃d߈G#ŀѕ@ED%ZGdLNe6XttXurN/唭ŗ.\Qqxb6XWjaOx5 xql#\jJ^NY<d(@|Ygm0L6N޹}.J'. hb&eڊ m[*N5h.5(.M=DE`,]܆Nj~9)ecxh܊"s`hneh5ZhN(Dse?pP@P˂!VI%pF9NR&U^}9'Z 6F!p ؐDnuaĤfjorGԈoUtj X*$UL]"vnZ < .I@ gLb*6#pʑ*[*tl3t%5("_ ,%.Z2G*d )*-LbzY־XkXYOeO݈4 E %hT/TZJr nh[k-$ 6!$XTVzW9ò)9@qZo81ER 6T"gI@f%_nYf\@N$ Aln ǟܡn"ADqqʨBư |oFPAq@sȌdPs WNBԌN.tQfՂ*Llu|ݢ^R`3 M>ΪgM"ofCU2$.ip=p9 FAmp p ^o/Dho(pBV(is*p$+~I Z(BOZ1w w<,4@ ݜ^#1DZ+P1/>~E pbgR7"*"HAp$W%_2&o2'w'k(H.d2*oSMV>^*sտQ+2-ײ-'.2(2J2/r%؁1'Z2MA6(޲121_36g6C/w7s&200)o3::3;;18dz<8=;>3??̳@t=IB/4C7C?4DO4E4B_4FgFo4GwG4HH4II4JJ4KK4LǴL4M״M4NN4OO4PP5QQ5R'R/5S7S?5TGTO5UW5M+XVo5WwW5XuXN3VXZ5[[5\j' kǵ^5__5`\W96b'b/6c7c`T~/c_6fgfo6g7ud7d ew6ii6j/o< evI`]~j6ooviM KN]}p7s?7tGXQB}}6r %nKy7zzJxnm{5Jz~779/@16Zr۷a/87?8k/8+7PNa|)8w8v_rϵa`cq#xesx8ǸV{׉gpςox^ϸ9yWbV7omkcO9WOdx[8*j89x{7w9׹u*fח԰'/h9'/zNe  r3o:O9kk8w9rZ)w: xījIu:纮g:;;'/;7?;GO;W_;go;s5D;;;;ǻ;׻;绾;;<<'/<^rA ţzm Pd< ǧ"Pyc Xï<˷˷ x̫ <̼2o<΃|z ϻTv|_O|Ϳw;>Bڇ>ַ>x|>ҫ>~?}fḍ@ Xᫀ3+9N(='@w# @t.&Q'ڐdIaUE]Tїey1%A2[i%/i822$q)nfO@]vzQ=)M:pT%QCZ)4WURkp>x;v9q /n⤋Ɵ5\xp !N3 p G:XY!z2L5-P^&,+hXQO3kdNS \8RǁQ;yrEG?zt Lotz[.Ɖ=ϻWn^;١]=P9=>1EB"b0k/F1AӇ..wPMDA,$ <;`<<#G䔤#Gξ<%CnK~+9+L.nKl@tPB 5PDCd$'"(.0!"072C@;~XXCrmU*qp(M7]\)ێj͙-&7mQUraekC=Yh$s,Vt`2tb'Zu/xTE3]z/&W~GfҷIO'|\}O(*+/_3+O&M>~_Bw@B`Z1wCBs.A\HQ~q4vAT!\1!h9 m"@=dD o6\8?2S"PE,^1SE.vcHF0jDc0BpH2Q{׈G9Qwa|th,|!VHx1ĕb#[F ڢ -R$*[YGWie-hKX%/SH]җduLd&S<>t evfQ!X33#`0ڡO3'h/4L°.D!U4O<[9*yP&T ehCPJY˺)1UENy9YlR ; B>!j>b .Ty zVUkek[ݺtP\)ꮸr}k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fW ,4@7񖗧 y^vy ޕ l@B(Y PobE8b@D`FXAB odC- Ï@j3Z]D\]"PbS6ŅEXXq z c$'92fבol yPN1!e_aY-VrAy`%&#4Gh@f6f"p,+4ۗ kAB.p D¬/>կ!0kU~"Q К "\j :ee 6Uk D5 p 1l-\ֶu]o6^|W Wϻ^ml䕻w5ijme;G`ݽG{ {{ͦ#PW/Ow/$MA!|C`h#d&0_R`?'^"~yNk}^@ <-Sy Fonz6>lw]% 9fā_wdx#4Zx!<{D3xhx=k7ڏw7y@0y/7vΩ{OH,ТznkhnӁaо~@,\iG߆D:e?49♺#@k !y 9 j 3 sm08G # ջ9僲@y Ȁīp; 6J@!,0CQB ļd )UB<,-\+dB'ܯ74@ OB!$Bļ6C0; C#h#78‹ d.>RG4?ɀӳpK:L\@K@;(Z+Vd2ZE;?;:P4)(P@kC4#D/7.;Aۑd,B+s\ >Dc4"[ XC<>tyhcpT3>;xd<컼,Mu7 (кO=/BAxA[0>lg+P[LTG丁+_KLvP QOÃ4ApO@2 Q pʉFE2f?Y[M]4:#KElʴYNLRRL;܄T̳dͯ\C><>L:OOd͍<ʔH Fȫ <" Gt;\FV]Í;BṖۛWCXWV7uj?lM<}XB?,Z X_!*F8mS!rfc]؜HC4MQqEװSf%4Sژ ^UYM HA?M\M#T,5X}Wl[پXZ9W#tHW]̳}5܆\xPVճ]U7]GFtDxr'acHF$7[A(5,eb }H\GpLBwuHUd "ޫta^8/'KFNaTy3$b"Qf:bR>O&.?0>a>[tcϾՍG{5_FD Tc x#mMg| hmFKp^lP[R E`dknt^vH8 f`6{XWgNpglBΰ;wg&_+ ?6dng0\SfJ+%=ֶU֖N״ eͥSH(VB4AcXb4I(VT=}>c=[eW_F}jEGcrV3KGWudGͽ\k‹jfݸf9`P`F~>iEޑtiEQ^kN%CP4M[` W!&׬9|V6M8od1:F],X{ݻn.^1ʼf A0i%56=3hƝxn+s_S% |sinæmc,#%^n?xboFЕ]Y;0ﰦV Onu:Q&4(pp䶇K6:>%9>gCppAiռD W3O>a7p/|w[+Y:_P)qp/)^9@rک0L''[d[ `q5rs#saM +w3I4i_p^wn7,.Gmss2srs@selsC4?C970cv_m-?ǩJtLID O;;&QuNOϕF?òQ*A%T?Yt[u\u]u^u_u`vavb/KbOve_:evhvi_+gvkvlcvnvo?jvqwrp/wtOwu?s_wwwx?vwzw{yw}www~wvx/xhxOxv_xx[oxxWlxxx1xy y?y.OyoyZyy-yy٪yyG-yzϲ0=?zmOzo_zzzzTxvzz{ L/DA{_QCO'{Jz{ϩ[{{5g !7, pH,Ȥrl:ШtJZجvmxL.zn|N~kfsLNcƩ-/./-44о_H66 XcF.>DȰCl A< Ѡ;xiȱǏh@D-"˗0). 5AɳOTb3P4PҼҧOEjʵWa"m =LճhӪ BUʝK]G<1mR,fE_XDL,:1q:+u묯^-l|nŅȇ@|mZ҈bkotkY8g*mF|5ɕ_<:Yr"{ b=(UsMZwXhN.;ݼ˟O]"9_7VA׀]7Y#^r)1fX2''~ȍ9̆$ՌfH^D"_\h8n4P {%V3AӂM`vYc1`A6@$yL \:]{a3&9p2PLeB:1)%KE7HZ>[~idIJ!qf馜N2g[c\LYgڐaMZTPL^ɪ*j7&,̢[ذ͍d>S-]3VPeeYf,k[%1*h&謚?ͪ4Q .U^Co,򻍿N'6-F1^_1Zy122/9AL7u(ZY\*ٹ9&5^g QU*Ne8-tծԟߧX,󞁃Ct cݑhFuw<}MM w  F: A?BT@wf ΁B簭 npM4I_om/<q(^yFj_/: +_zZw qn|Li(Oj{$&M>p= ۭȅ'b㘀(giÀaX gHQD Rr|M-{5L8P<ȵ6f#vX̢.zV &+^qhL6щ+Na5x6cIB.P/۬hF:Y$$'IJN̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ JWғP@Ӛ0ͩN Sڔ; N{8PJҞj nL*I!R*HgԤP`(UmaMkFgS:@pL#P 0@@\ 0M3B4 i ؅a4@c'k1@6 fJ(v M->)Y48m^UK[zF5Rkuf`6e_w rj:ЍtKZͮvz xKMzW_Hͯ~LT2"R v'L [ΰ7{Ú,|. &NW0YݠxƏ{w܇"X`q HN&;^#04p]ˀ*A ,`YY)G`P\U UP1l-+ \[l@7`2j$ hsK,[eU=hB"ѕ>=~̭*zՃl/P/Y̪!p(GvѬ֭|nPȶ˲m. vpàm̖t Ŋܫ.^Mr7 @7motє6[^m0u4q;8c@L;UQy=nO%vYG^S@9k:Zړί"W@›vx/ȶ8wyE3YLE';ё^YExYqJjkOOCgwiq^tڳN|LoO|*_S#.-.=n=Xg2C\mzNCv+Fnw|ȿZ&ʟ>/czſoG?~7O~ ;Wqcr@nck7y}mWj7c`̗c5zcPSqVo~wZwwW0dfdfp W|t5Wppfxlw"(qIxHN~Q7hTYxX^`(ׅEfWy/'phXnyՆk{kh{HnxpzhVjXn膄Xw(mp HЧu8{BzyoXqTVwoqF$HKxqz0v}7x}F2xj?}7Ә}7_=(VPle@i' SX8S(x6dŏxՎ"w(lyh( YH Y ɑh9)I%9' ()Ћ'|'o{.hu6}LHDŽAy`Vh. DmhY y)XŦ$Z |}in}H{gu]ʤ8+هhhwx7NJX&(yod ɨRפK*S:U0猟&U*\n\aW{=Ee0yg݉Gl%Z *egSJ"Hz9稅ЯSiRex kvЊaZ)e*ev Y0},۲.0PpTZI&mymvZIe֗zytwmgp>eD[_ڟ }wj%wxEw`?~֮xSUzfKtk>iYP[5bVSj6nh FHHEwBgmˣW';[xePU;ʵ[`кCȻ\ 7 quʻˌ[{kbΫ}Лe@uD[{9?HNֽۜD;[;yJx?gK<\| <#Ep .žf%\  e5#_ @E)2<(`0fpa vDs𺳼 F|H׻32|2XAiGx0Wt;k빿@b.]L) 3*&8A09\WņJ|xz\x*7|3IpCDž`{ȎȐc1ȧmkFoWeeHjcfiuf[V w<[VZnXs6V`iZǯYl6k6C,k6f˜j&a],ZV7'wN۴neܫxCfT+zG*UEo병<\a<®zw$1wZ7gw,w/gvlykAujuuZFWGt@gʓ{Sc7q ]z`f_ch{.00ti kƪvyAh؋W+Kj+ C=MꤢJ{˰s\]0M)=KWZ}xe=zwY8qk ˹@<Kii}s--ӄ]؆}؆0~LrF99ceY-cI$MNZ{썒Lt:sхA܄ wɧ;yۜ,MJTd`V+x}n`K{]҃ʰ܀؝-ӳԚFg*_YCMi㽪g3PpbZuF 鹞ƀJzUݍZRp<}X%>K߄pWv̍qgZf׭z Z0*[^}uSZk'6IKhM*˴%>=n}ݟvm3iBKS3Y6}܏ސ}8km8c 'xsKey]=lp̈́}݆~4-(Ь J;.r&:g8󊱹=joD1^dP`ҙq- ~[-gu'Tw{]>YĊMp<,|?':=qO>妠WxpZn٧~ȮM(t+~չP܏[Uhrj{+\IPln7PrvkDp>eîܷ_q{ iݵM82Yek'ʚޣ< :<@B?DHJo*N/=R?T_VXZ\^`b?U]hve fvx 7:<ao@xT{- yϿ{1 >EL-_l9`4彠u`O`c:&BhEߵ VpU?k|Koel#uUj\j~eVu0v9j?hmPjʻfLB`?0lP4VٌL& YD fKh ;uq^y %$'&n.1353 ")%90$G?>MR)4#Z#2Z.l%6$*vI%,l$<'%Rۖv'×jSW "Ҏg'Z/w*;XacmǐC&^JaƋm-H#EDR$)@)mV2̂4H,;&ERDHamI)I9]ZVNV0Y+dh:ܓDf h] C @4|bEK2nnYʡòm> Y8`Y|ȳ"Ǒ0Mޅs솨VIF=ed}΍WWI7(Ay>axJ X4? }տRz|%_>9{&@Ye //$Qb;rdr䴱"sK #376 ƚy+D<2b8&k QF,"Ez*F*UC# A\6 "P; 3<5#S6N!7ssχD?=$tP(MEMF! "e4JSE/TRl{",{g??}g}@U?~?go} (?/>{1r&hӓ sQ蒗1aI ΄6;]6z@XpPa0-H1tZBW E~ gF/Cj$`' 7B탣8;v0XGQ})=~qzDc 7=p|x"ϟ'O|H5IL '%TrL2qu褐7զ/:<n˥!=49.*FSMɻ윘T()- BCUXL ,ڠ:ǫYmUu\+FJ~G48][镯z5R_W֯%`["vi,6%e/bm,&Yֱ=]7 Zӆ-ip ZXŲMaC7[ ][SLM+apy܀p]f1d$pa`LU@+FJ|yZqt9dǴM/K2""jA yT7pue1i1:yj1u;F4Ba]e9$9I33} dNwwUDszn QuTw! mmoVpl<<z?tl!T|n=Hr(o}%7^#$% wK!}Oq7xUJ%7Qrf6sϜ5qsNc\=9}tEЍխuHӡuOUձuo]ve7ўvmwwϝuw}x.0x/w!yO򕷼 7oAzя7Yzկa{Ϟ|O{|z|/B}շS|o?<~7џm+ p?<}ϟ,xYxo2 8pKB`+xKݮ - ׬Lc 8MV EӁ/#O<Z_<O7Z!TC̡lvlaHc1'2 z&j +Ӽ40rPAo AT|~h/wp/h>h j i>Rl? ? (oB( T`? Q2!pa`qjE_4F7/lEafF]=oGoT[%tH9r5R30fJRa(o>Fvu3JkMwJSL8z@T1̒ L&JAkL׋7LTmLHFL;t!Z @N/ \TLCJUR{'A>sD%@{0!Cuu}Vߏ! u=W!%4ZD&]N@Hgo\G[8O\\Tm&@D, N+mI^ '&-b-d<M-a08 a?C+ZMQUxa=:3Jx,!]4޴"'*bCa(t8#B%("ƋC٨0csf!iJ v(g dswx/j0B=-4lfKvK2 tJ1oR-ͶkMu'E=M(j)`j5R(S6hJxS*xg0B>Sr)  Y?tos?w@u52V! uu9| u D!t; q[]l\)O ytwpUFG5b+ڔ\),3,\d:amW/}1r6ڞ B_ x BQLD /g!\@|)x~B_~+qIZ' KظºUhJ-ܗKִJ6VDF~i,HfUpI,WwuU etHTZ!@q׋(i5@ @_@KH2y|W)Mr~XW(P]s\7Fc8j@"e]5o(YOg&)@ZNj|Ҋw6з de(DI[Y2XIt 4M Y29s_nX֥\1EaP5tH SPD wp^jYyXۇݱDZ cor8//݇/_!ύ<ox*Kय़QGG5΍W<-^[85,oGmfѴ䡑́5u!- XPULOL`@O| d0P UAvd>.0P@VpA" >xWQvE!\%!{SG>a8`9) :(4 ;JQ4P`=?PN٢>GX_kyE8asyZquKl8RRiKrVb7yV@!Y}dq'& )h~5PA)=J !eY1RO? ccHdRvjih h6g6`l` A  B.6m#N[Y kV{-$cx D $W+pPC 5\Guݿ, Cβx8J4Iq֥ \1 Rl "SrJL#(Yx74cܓqyiQL1~k}˚ V4 *ËE_(5.ݧ֚]&7G7|.vCrkw~Po-=Ad1hڄCP:v 4<p]°W&~}gf.ֵS';w,ҕr]s37Wtbyc|^3A;j&D,:P 1Q5hWOqy_䆡 omm9ڦ@Hd_8MiOY 5G3|ςJ6'$P+1!2O. 0@ddJ'qˡB$J f좀F-K>R¤#r8E  ] 64Fv3]l0.wymN@ZMլƴ +G,xȑZ+ #F NR/yϓW2%-ki[@QP(Kx-hAJ/d_ILGLy43M2[b3D@0hƒ|ԊIN_紦0iN|s+\'073ac)f gjGF5=bISjrx+&# zǓdw`1Q}u )IK4*UiJ3.%IWjSt:)O{ӟ5ܝjԣ"5J5jFIU EEjM̪QjPŸer2V_ fg]+[ַUK+]j׻aW+_5L{@Hİ#lB6^+kb z+g;OvJkӞvDqaюiak6#,o{ۤnֳ,h"7].ss6ҝn^:b7.w7Q.yf7}x7yk_w/80 l#8 ^0C80+l c80;8"1Kl8*^1[821kl8:GY9B2l##x$C9R2l+}W*]1RRb3l3Zk49r3lgmFF?:Ђ4\="̄^4GC%u^],yy+X28dX:Ң5KmSbo E=0_5km[:VޥgќN/9bGlbZѺ^6giK&6oXإƽf0xV6w; ,tF<>7D2OxNC|}8;q*ON.d3*_9[.㐫R+з~<:9' zڭ8{n#=8~er`c=Zρʔ`V:nܦ|QnkV}2;8< o#>_<C><+oc><;σ>|Koӣ>o}[zƫ=ko=%>>#?.C?x>Ř!>2tS{28o)/!ݛ H~ P$ >mL slPR=_ݕx4Ro6-T3@lH0x]8 0ըIe@.'\A5w` :1an kUSka aQBq]m`  @RE% h v 7tA3qZLLT$M3eIEb(V ^!NQ & UJ) ͥx,DaLb F, >Q "-!!(v<%4@xPܢs)#=aaCMa%W [U#< ,*':#U4(R S*S`ɩ &/D 8a XQ:&67z LCNC^6]B6Z&DVb]ER8@#%Y$?b1 }a*#+܋M,OZPP(%da !0Q@6dS(%0CUSFQG LWOJ4 BX@SF Xe%P08%T. MDY%eRJ8ND\@8@Z \hC4\db]^.G We:&PdA3f&lf`k)`̬Vre f$^r!shibg4$^ne&tklfjJLƳ$| ģ!x@ܧg|@LgAA'}Q ((c'h(h Nb\zu,O dڇr@&Chy?fD@@*dA6hE aP 6yh#ѨP, p>-…Lb0Pha.+undGLM iT qLUMLiHQʬPrLiL}X ¨4:&8tb֐gZiJDi21ѐȠʈBN';cQQ!SQ eF'QR D jM# '9Ǽ CE- 0$Fn0nTH5 ~,H6a4L`-[ ^HCFrV)ED&PoU~mNpu]`NtQ#l"il` !*$!,Bc(옠Ď*.M'MvbWtBE%/+P]F1q)aSx~P`V<"H5RBGv"o(oHzos$:rCAH]XDVǾo4pRH Iq(OpLB!)P!9DQi@r/$B'@ %B jؑ F4* 06FZ A#5$P~`+:χY*<"rBi!i1:@[ a00qZ/A;4 &dlXE$nXR^E($@',EEHOZOC6|*r4cLtA/Kc#c ELp@#2洵x M>'K C342.iƻ<'IcʝI夊Y=PN0OA1AAB6x` ߞ6?3d#pa! 00*(us̥Z ̝0W2uQB$쪄E"ht1lWW)HVk$&n1SiPRrdVt$/MB*rǮ4whW(4gb#X*!BNX}<* ]~(Qz2bu_u5cG^ӤbdKx|TvcdfO3 Ji)nl//rBFPN7ywZk:mH)`/ ~6H{y$+cSIPXE@6EEzFLuK!̷X%`q2odN0b[JTq+xݖ0g 0 = 6g3jzkP+4x0z +eq?"뺄E:۲T8[{hǦ=Ofu71,8 wC렷UH}/hyG/2R`H}nMr;mCNGdy^uyl169F:oX)3 _ʯ}6{Mþ1 /FBC%8H3$?|H,-=3|843OK=7Am 1T×c;K}s礌wt %,{4 luC 8>ؿP$Pt%4 x cPN2=:, L,:L#n [~asss3ۯ s8eb+;M  | ͱCc(wq1ƀbȡiu"X`#bGA r!$ w Ȟ:4&)M5[Rj &dM9g%b!)l38W^9E(+1H#R,N4*9.M ::MqMC>SأSb*l@KyCE1;F#&]I᳎1aU#~Ԓ'tPuM;U&moYX@#c&`RME(\pnRo]YޱdX#2$] 2#q@tHƸ0]d#1 3_BsMkr?_Zj:sz|Bxլ)4YxSW+L $( l)QUKw.( ln%0Q:b;oA&N ,,C|ع] %nɄcs#&}(*G`mk{i|qn] ~WuDv 4da:[W瓧1!`#2Q9DDC@Ɗp@eGE‰2׸؅o}o;$ !G%Qr|45d&`.ȕ𩂌ɛ6AɃ2)d&5$%(IKa#&;JV֥e,e9KZҖl?K^җeV[6a%d2iޤτȵCh]X@ς) lg89Nr"Dg:չNxTs'$y2əӞ4fhOSC4OԠEhB N6ԡm'49Q6QhF/tԣbHE: a@4z)~ԥYiLe:S7iN}ΊԧIM:TըGEjRרS6թO:U(ժWjVUn_+NJUJgEkZպV5o:ZVծwk^Wկl`;XְElbX6ֱld%;YVֲlf5YvֳmhE;ZҖִEmjUZֵֶmle;[ֶ DOַnp;\wgڧ׹υnt;]VWȤ( &7Ӻox;^򖗵؍nkQ׽o|;_NTZ_׿p{wWMp`7}A2Ig땉x\"7NaM`'F%h,[⦉)qucG7ɍb&eh+ Y +Eڽdc*WWriyPFSt[06qռf߁o>,oҔ%c< K )nx=h~83AlHI7&t%JLҷE2h; Ξn KԧFW@sZȺm =$ͩuuCsu[ 7Zgqylf7ٽMJ=d2YϢ3omnwە L'm׆to_]7P+v'M584IoAoM'JpWo3CsW7lKs?zЅ>tGGzҕt7Ozԥ>uwWzֵ-V_8>v=`k[վvo{>ww{w|?xG|x7|%?y+. ]5K D4 Tէ@?D""?~_0_)8Q.F!"?C)?CTܪ{?{%Y3#[Sa=?tk>Ah=;= d̓:<Dz&`=D ̖Y˿l@`'# t<B.;&0/L)-T A?pC0C'ACLMNO#QdI@D>DB'@BlBE>)p?%tD;0H[lTtS4^PTedftglET|iDEYFFjmTnqllDA(;qdGtGoqGjGoLvwG~DButE?@Y4HFDHdž\Hb"!HѾ>HCE;JhAU5+ =]l XTkI,I,H@cFytHm$ʈD|}TJxȥJ|JzDJrʇJǢ\Gʯˁ,tyLˮ\EdK$ʶJ}TťK|KKKǵ˻T?K˹lʺGD>M|GƠM,`=DR29P]O}O)R-5*eR0 +RP3-m} eS:uS;S<}QC>R~%=AB; "!M=R >s@=t;SETUD8M?LFtRxTL(J#?pU|T3?OL+\TXuu Uu֡hVPj'Vi=lVPpnkqqqrst5Wq}WlWuvWnVtW|~VwWV{ Xv |=XVV-؉TV,E7[Eh%\};h\R=_ME};^E&mU!KSU~U؉כ}XXV}WY ZVVV]ZVmYuunepz׭WZZZ5WAEBT[c[dN\LθEA{̶uJm̶[[ ż5OȬۇDmY[.0ZEDPLtU`]Ye5Ɠ:DV'p\7@[e)]D\][U\=\-]Fݽ] ^?=U^ NFmLm^^N>^KE_\ +=wbѝmw\?ԓ ]EUlCI4ʜĝ^[޿` `dUߵ` ᾅ ^\MYdvt%an aaa ">$a"#Vbf"~bb&)b*N%bvb.Fbcՙ_5dDU]P\VD QJN]DQ#EVc>_4Ze)0bCCNdD+fdEndHbJdK~dMLdN^Og5>Tf=uRm]7tYYN#A9}=EM[9Y.V[;B FCA[T^ONHK=Q=no>?dtGَLVƄQ?Nvf< DeCBK|>sg&V6e6hKq|5g;@Dh]M?sYff+?#ToBH"邚["ˀ&6FVj1¥v꧆ꨖꩦꪶj&t&6FVfv뷆븖빦뺶&6FVfv6? ʮl lʏI* &@m{ʀ 8A.iQ)W>.%;!q!mjMfo &HmXp>`9x>Xpw G opb1p,8qGVm7_FmNp po)ނM ()/x ({H  'a i- 2 7(r m+w/ǛDtht"Pty6w,W)>gr`~Ix*x >tAg-':'-O4'u ( 1@r5bOggJwvm?A(#vj'lGmOv\#{rv*77>ri0 (&Q ڮijDȔAg(`)dE9^xXRyIIAIx g۞ 4x'IqN5wƫBVNo#v7'_jq7rzqԖwHIjA(wx}{9pGmWN([ǡ Hȁ|a%(R G   7Ɵ (ٟ|H)my? | }ڟޜ1x8tޗW|?~ ~|TNKySIV)צ}pʉFiSIj{ )ąrx!Q: Q8U$1:v@]4`ttk1t72E4DFpITqYpipAбpw(){Z 1 pۻy§(nؿ?|X0?OE[rT-H J3DcK5A$UZ!:$a0"m!.uL:\7cxmDl$E c$#K$YC9u1vvQ2?lxIrBH*$h,`ve6\'09JcRdcL78g$^kv 酨CĕGġM "Z2Gjjt|BM->!GZT:`aJF\cݚ+9bQ,,REYU.Ҭml ]RZ4F(%gѢK69P !wrTFJ5IhuWf7*,8)P9:, H{>gKy(|c.snl^MtFM)_2=!\]"RRWbkZ_)RW@vd{Q% |M-"x5T0C]vʾ\,0)Å5 9*9 @@ySKE@ޣU@A)M~yG^;j~.b'ZǑ:>h[c*[pEqjԠ$'뫧t~:ShH\`,hlmZr#(ovʑs](3IL/sQ0Wa'B+/;TO=w͹7^ d:CĀg8gq9U•q+p"u _Vsqd,ψ4qll8qtiKʌ"67oCE"Z|1; A+8 5$>qDŽ4%qH], ͱplYas 9#m}qU0v}Pb3bʉH0G9ۓ3 @JlZzc_(1*sl;Qrg^TK$A~r_\& dr8Um.O /,sn3xFI HCJը0_,&nI, |waRԢ);sQG5,Q**n7!~G7L@1yV&l[ ׸?Fp-yV `T ]B\XNy`%EX:X.jתnkr ̇CP,ԅCwEnv'R[h໰Tp Zlr*&`Zݍ6OC\J%o sUW n|4hQ@Z>ﺬnJp|}1+d5ˀJ[1`ZTIEӒ,8Ynٚ$M  $* sKtLʱ$RUyLqFe/SŢrh`YIHL(wIN{k Ҏ V:'cHehW6L51>{봆2g(sHuhogP>zqxHh摈s7!0(H8p]7[cG1<؉5V |7wx )"ntR'kҐ|@#ͷV'p\3:[EЉЉHhglfeg&kVElkBgEf $2nO&\xfޣf1jj6eley}@354lLƑɑ f/ 0#E_f) &/12Y.C%ْ֓!SʓdvԈBٔ$|`|_@9VS[WɇWjT_t֖`.OE03jYe(1uxWYfهaE& C`0 tB09 Qّ.3hF1 OiHə<鑳lKY_ )} )51dùɔٜѐD 0)Y ՝hy$ɝYɞ0c4L#e&AdX|@V,BMğ័CD$(4bprT khc^|PVѳK>+'z,J4ʒi) s&;3=@jiiwMz N@BRʤaSjYڤXʥO_oQʥT*VY_jbe_YڦrJtzVZ\:z|RjZVZgڧz!JPMZ՟'EC gB#pMSz"6tC*jZM:LJNjڨZ ڥJPzzJjѪzڬʭf犮pz*D $7cspGljB51Zhn'*n23A$Vtur'CS8k~8f( b:4 n4׆hCTbfՏxf_Mo=xs>C'CCxBKL`L{>I{L[PkV U]KY PJ{R N;~"i[ck˵` k˶v;]Oyrж]gZkoKELe>#SPzWՈsL$>|4erq_Fp; [~INJڍ\]v)7]tr9gGV=]kr^N*l`!9%* anQ$(ANhraiUvjx`_ʈfYjX`k,r<^ D{ >-l*n.W(Uc/Rk@>[n 2o &N7$|y*3C.WW^^NmW`Bol=Rڸi| %nF4q8_B "K 1aIN\$+1fqĶ_Geq,S龍 oLT:LSGVjǽVx11n-]琕9vOl-?&DWC/E? 4cmG~aG'@MЍyr2%rXZ]^(lJc'3hԙЋh~42[Z$ OU_"CU;.e:v?n h荙㗩 1 S+ꉅnis% Fع)p?47Dz@ b8DMDa\$UyTbټ`X+Z h1Qqqⱍ&ʲ-amjH3oϲ! 152-1C2x Mp. p5U4I/4Xh[!-7PWb`m3,l̆ 䯹9 ZY aaVEV^.R:.O`cl;^~L5 =G5p%RbO '/7 ({n#v8JlKʧ<D=J@%aQ,ڌ02X$PBt)0DHX80bJ1 hc6B'!>ca D$(  L1!y#UꌩK(BLp N֣<5e1 2yFNSR#:Ry!JGQN$ZI(A%!VDd<7i6nd]JF]$& h, q2^vN^ܶuDz E|6Ir5:$z=|RA+u&n-2M̮QqaydCyx 91w fy$63FI+f*7|U@`/TŎςX7JB)Rb)h\ϲ5וwV';;D= K>ޟX5ȥ%^{k4ᅞ7~4>biyŨUnn|3[$e8*vH͌6>DyFtbZS6$-@|uYʠx̓+D0{x¨66o@QŢ_INXB+v.TKEX^!xF4T'&ЂND>O#&ի"8Df%Yh4"',)3 .Iqq`SYF}g%qvVVj$ΰxpV*Yb*՗\u$>aoPe9CuE-UcZێYLicg@P"iUD; etxJ΋o1TYVi.&)BS=wy՞,٬Ur%߆[I @10׎-(|'c 6b mm/ qSăQ-Mx"q5% Lf;l\.pKA-YbK^g =E*"GxM6P\4]xULU%29-lc5#bDzc "ό$+"㴑–]lI>\,/xl gxiSG Bd։Tĝj~;?E[xa xQ ,!C!3a܈PX@#%y~WӀ=F^HMU.'v6;w$LdW4/#pm`Ķma4<$H $,όPvj͌}C[@, "Bڵi2aI{m87 E,ƏJ-4yNt&+0D ҡ|]вP3ZiV_џj&sBqzW9n3{]om  aO>|u lOA5NK{ߏ1Hjsm;mD']4FYrEIhUD+{/-89M$38CqMuhs?ѧ={׸>0Of`;9|y_Z ޣxhjȣ<(xȒ9č^VE2JxQ&`> զ#~MfHw4Tnc &2M"O1^J3FkV/CHy(-o*2 V+=\"hKȣZaoG8hF"%ֳph*5$EPvbGAeBk$$%q$k bG4Lp*R@eVhd7U3J28&7kpIZ$\k;,S(T(0̂RDdr$FL*[nz7hl0FFs:fn=k]`!{DX loqpf!#s:AP /W{lxXf4Wt1blBgˀ rHazGzuJ}·4`t`4/q**Ze5>um/8!"/aDH̀xt8tN2oXWW7ҀX}nY OaKNHl6 p_!8*t!;C 7[~#,YKDmzTY9QixQ9}Ws끳`Xmuk=–}qC-u~g}6𠞂pFpfyc&̌A@-y> ߰\; R9G 7OP%y9AvzFר!٠\p+!ф}BEnfϗLC.hw 3[ĭ)فnXwAiN@1 ZL u磽;5-AčGکt– HSyxrLwԴh("ltMbUʎX8|yj_L_8f' bL&J|s-ttlOJiW9 !rxw_ryQn9`Dˤ R4SF$HAt81K"_+W֍} >f}U7bLEeq$cñpǛ\ZùnbR設ZjhN|zɛg3.Θh˥ZГɞQ(/\&,OX:^"ܮKoͯH.a6^<ۺdɛ\]sUP 2~ZHN4s7 /of3}BB\@Zj™^~7pTXW)  pbUh O:@]a?d @}[#}ϝ<̘1)h2ۦ=ޓ19e;([`Q 7&޹#[7o31w2yZ_Rg~Dm5e%$ʉն\>-D >Z[A&R-+$+}^מ^^_ _r9RY6^-B3m?aZU5S2]SN>V qWo痢"6ݮכ9_uc r7. __ǟ_ן_o8Uv9q q LNO  dyDqd6Bp8^/0 TDnv,66IK*MDZWEYYddYC&h(i)j*k+l,m-n.oi#0'WeQٜUp@a3TscQFuCbcjv5B"s1сc8@qQh8FF]Μ)yp!Ĉ'Rh"ƌ7rHC7J0hy: Bۢ0s`hJ=dܹN&b T>  >P(/?5b#rҭk.޼z/.l0Ċ3n1Ȓ'Sl2kObN6y:D V#HśRܞԷ7 &Pj! aMrf.*Da Tap\.o<׳o=/tN'jZnD4rt nIh 7U-0F1"ۉdBY([8) E8^}5x#9#=#݇kSUxNu5 2a@4%AJ~qň_uVĆL%GfwqbI"$p%bI&W :(z(*(B]ydNeP!eT^iPx} h9b"2 0yԤ:TRebAI9z,*,:,"Ylª\ʦj7(l賺fB#[=k=Wk4QXFzQK?m%kMdԻ,cޒ;$P$DZs=N'`2t@K<ѽ&biO;QF(Z3n%!E$"݈Cgp JV-r^"1GXp`B3x'^r# fL[l,wfyB ;&iqh ;(٨Ih#$b|"#عMr$(C9$Aٻ4V8`~E+ʧAj7ZYHZ&Ea<&2y;BTwjLd&6mr!,ƒZ J9]1M0s+|'<)yғEE)>X'z=(B}^ TW *Ѝr(H/b&=)JSҕ.})Lc*әҴ6)Nsӝ>)P*ԡF=*Rԥ2N}*T*թRV*Vկ<]-d1K KV2*\W̹ҵ4"HtVKdPK3 o@hk\26hdUF ϰԭ&Xh3`hw4TzMA*Ua؅M5x~1c| ¶IFKdRWR7 H1 _C-Fl!G LRIa$W p)bā LnvE{蜄\2_ixr.lo1 ԭOd:Y14)" y˭|33_MowdAˌ),$؏ ;`ᵖ4FikќhӾ5-0Et ̬C$ÆDz]SfX^&G]quR//ThHu8Q祈N 0qm假}6]'FS:8ԕ5=)8r;ƛuQrfgݾs466*B<yo]k؎U|\+\BغMk֑vk #nXͻy^oj[ ^ƛǘv։cL<; L4p]]-.?ZCS5 U.t7uP|ݘ"$F$N"%V%^"&f&n"'v&Ʌ'(:^)"**"++&W]U,"6-"..,]"0c產01cR2T//΂-jD3z],5 J4^L6~46Jt<8NU5^9rKpD:BL6Z;1#=BK,֣>>T>#@-#r @$B&BU6C>BFDN$EVE^$FfFn$GvG~$HH$II$JJ$KK$LM@ J ԤMrDΝlyĤQTNMj*$%M.*lUiRIWzTRvɖ@e@%MNASR^Ta WduWeB%(YYކZelTbܬB\Z\JA_^Ie`vCMYRjgJa.&4 ,MA*%fΦkE䋌lU%=)?PtqXO^)=Iu(fćf MJ`hhi pf.ZEd=&r]TW 이 Uzĕh ,m"&*ZYԙeCBd"&ɍkm`HZ頂hgAX"[j&$jle Kjx9 k.Νݞt% 闡کV+Dj(ejT*֪bFᮂٴX0 RNx)1ΠJZ^kbnM2*eN"of+ѹ^ɜ~µl%+h@ĪՅkH7羖,.`hLfZʞ~BA`&k(`כkffj + kG XQv(zfblR(@},M` ,*\\픠ݰΎЎYVm^mf6lBLJ PaQ\t(mm zmbf(nެ~#:<>ܟ5e^!9]+Yx_+|QC_哓fAb+ڪR*졂h/ώ "LC ^L ƚdo:h ob+anTHZ.ZprB#@ W|_ s*}/ > yB-FiJ#g`F.h.a" 0Qm^[oq,*gԂo*tl!@1'{|q<X1G,wQѱ6Jk!TR+~$O2%W%_2&g&Cv'2(l2))2**2++2",2U#$2*23~E#-s q2h#)rN]G,X(#N-+2 KE&B31 $7!`7w]8/'2 3:b?PSɳ@3>o>;b?T^:sV=c.t:*h3AwD3sR\.0HBI9Ct3#D47#Ft,S3)"ccH4h)s(3TGSϦP:TV5X7uROU;W8!:G5(#[#!35^^/B_5`(6aa6fb/( c?6dGdg5cWe_6fgfo6gwg6h[N[nhvGɦd@kiİk6jmSLnvgv&l2o,E@@t18roŀm{AvduC1Xʅ$ `WCr#Vwvxw'{ FwzN4AH(͸tC<7K'Á' 7&%FY0ꍉ]#4Xܤ ڠ5  ;)Ivx["Xu*wvUQ@퇓>,L9儏V0DǍ iv=jdyqiWp'&|yi'ћ#L`#H`t7`s\ BLJMvMy gDw(4MŞs--cSH,6R,I.\\AnZAl::^ lOCN{XaS;k{[oC{G;w;+G;K{;;+qA'-Z#yF}zvUj:+ظܮƧ+:0Ꝟ! b^;߻_{˳|̯|߼̓||"=l#=\9I} IːS}\7`s'{wI133QpϦiAN0(xyz8'Kٔ-ۯA]v&#ۜқ:+LNr o>k6Thj=כ~OX~>ӯѫ>ۧ>ڗ}+?Ӡ>~37=ʾ OB[~K?ԏ}xC'6x?A&0$#$f@"KY HM{"FCHY^%l Uh~%[-<6'4-*2,?K ̂N!$K,N.PD5 9X*:Z\[ޡ\_:_b^db\:iehMiZpjor z|~~6J+¾ >43%.4B=ZP Ɂ!X2"M~$@7́IE&t^J!>R9`Cd aǎC>}fYu6WSI F,!$hX LI3nR1!?@gJ2_3]21Q4:g0[PԳ7׼|oS '^qɕ/gye ۗG4;ҋ٣*, n,Tl_7|~"Jly()ڪ/L0 {DNjCp`pC;CCqDK4DSTqE`e皤"1\/5^ВN: #=K&h`H*h+DB)LJRDƯdElqN:NO6hĂIQ˪+(Q!S!4w87/F n4 7SPb5XdUvYf%1V ,pa\0 { iţT*5QZ"%oHPs3Ivυ@z@) +",_zieuL\@4a*j6v+$:r.h  p2 }DqHhfˇt%>IfUhH@L nhISK}@fUO$kYzF|'rTiTUj[V!mb ) P e_ nR+npauV6&7lg=$4 ԣ-d+ 8BuUcWy}z\)"TP_KKǗ?T (^o[NpOb"qҏ'f8>U Uo}!xj6?ӂ.u'05GMF^B/&4kt!W*ZrȈ6¥F9ξ3qFZB&_f3!;"ڧ\L(#J Re$Q& +]@Jq\@@ο,AڣvP;|:ӃySGeU{Y"1E@+|Wa /}hϝ{@AOmxg3HВO$Vm}k\L(n.hFm]3Y`'X+&d9\M,q݋<(ulG,`fk/ړAwIB(uM^}%U {eʷ9ghԫfo2]m -g1"L|)Ё1*^4~-Yofy]_@u ;h}_;"UpW)6z|L5'pA>;u͆VgX3,_"~]c7ήy.y؊u*5fm%`O'v%F<:_)>Oi%kd+ODgO:]Ŭ^_;֨vFYKRPF?xwYKjdcr6?AIÌcſS_}guh }[i J7xu=o pՈ.EF={qn:A. Z Ğ5=cB?[Ci~⁓>A1j< 6e+=,Ūn+7t7*9 ,#qB lAZ1B)d8Jٹ+ Z!$BL ۚq8W%d.0B)ۉKC/ xZaS)!ZDG&< !DeiD2Ep-PJDJ@GEZq93[E^E2>)5 5_SL.0/֤T(}OLTMESUSQNPOlU/}U&D[]\8+]%L V\`>a%[5V`%V)UdU3\Ea`}V^Vff7o i%VkEjq]\VhVe8 [eWy_V\eWj]tgׅsu_X)Vo}U}]XUcBMP/įSJ:פ>5PITS,FHSϖUMix׀y5WrYM֞Y7U|mV_Mu٢YZuqEZlW~w0-צeZmoeZگe֝o{ [s Z=VM[u؆MأYPӖVMJr":UP)@TU4YUQ% Y TKmY[ O+L}PEYX]'Y Ir̍\rU? \D-^I,^䭄JD^Ql%^}^-+݊ }^^5_eU_]_____ѭYELSʓu*? X,Y5]`WHPG&փ Dna^`an^ !-bI_FbUbb=RXeLY-P].T1U20>2M/^Q M/vXbBuS[\`>P=Eݤ\Y@1W݉Sm%I!"L@cˍNUZNfU;N5PYN9:>e..e eVQc*ecTe-UVtJeavc:eMeYvednae2>xS+]LF]KJe\]fiNihfX@x6OAycTLE޼F5g}Hn\VjVYi~jj6驦ꪾjjNi}^tV>aVmo3no>оoo*lg!,  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OLX0[B1 xćzMW Cg)C'$fH!A4 <@5 $!v^|hFD:CR}=#FI[td)L{ɡ&S~=sH0 eQcP&&/{m*Gkh 8sdP6K|KHMK ٔZZe */"ܞpJ.Q2{I^ ԶukFQɑpS:TLRlDqZa;<8f39Umi]Woy`kE!^#?qULsz2{j1T~Pfu!&`/NA$J"5Jhse[L:!z<}AIME} hF2hCf=RGIHWD7)kɞh oeZ5i[ |=5񚑁zZ{䙜$^0jDQ&< ^ɴgIZXe=*PNw`Et?2+vJ Ϊd["PM d#FOFAڶgl.gy}oCL @btu$Nt1YIT)ax@VUIv=윊5f w a)ϵEܐNb9"#rtb7Pz";"] Wot!/w?䧯oA! ,  $h쨾i´Ұ]/<@ ƋATb8$Srdkuvװc*KlD©'n,?TSy_μBãP#FEˀQzË&:Y{NNFves+a;Ig& q`F(Vhfv ($h(,"[(4h8<@)DiH&L6PF)TVi2\v`)dihXJp)tix|駓k*蠄j碌6裐F*餔V衘f馜駢*ꨤjꩨjj[&j뭸뮓zj BR&2 X^;f-cH`.7V6&+<+ˮ.\ xЂ/x \"\6]ĈAw4Nб4f'C?nFfU4wop\@/{<4|:?/]BSE.I̱L[-& p\ B짛R]h,v 13̃W L^e n5cA7v}4$zeS:~T@a0<e0ȇ 7r|]Ҡ}"&^wOr(]P57βw=DAˋTd++D*F>&rk 9ʁ?:^6X7ЀbzޗY׃6'7DZs9dC P*1!);j:@?:%Mxw6 $9X,zatc.VD9 ~41]; $/6 yHDi* Ab K^:ߌ`I{8@%Ki#}M!!9K _H,.i`?Cf6yHj ˩ 6$!Iq,d҆iӑVK^F,MHkd"s J9 8n&;eIO}2lf}2B".,+9Hrgp UMSG)" 6kf i CɢL}dCYOΈ]n,kftn>λ.[^淎p7z)C%:&+X j>a--% =-U]Z\,,[ꄺ)}Α+($ }2do:S@KDOw,(TR>%`{4D+sm!J@Ѳ;Vvar3VkP5yJԏ]ԬgWډRX9<2Lo99}ml 0 $ΝWeEg9kߑ~hx;ڳl. Ä*,-Iܪ* x#F3/^\/.,[-yx%4ROGrx\0FkCF$?0n^! B5̬9̖9Zy;-9=ⲗ8T %s*҅~)kO~|y9];Ɏ?Յ_Cն8»O>Ҳ=ia߆hs\z<ړ˟އV`VxG47;pXM큪wӍ]Xi)okՒR!f`6/Ky{R~ctb4>);w.`>tcp K D2Q^QA1L1sxNGݕ.E2W'#x<"D\Fz3}mu%{6r[PoEkf[փ{']Mk>z5׃$DhW;W`$g|zA/5$CT#xZ3U}Z1{$^e-HfdzvhMJh{HB3ӆ8{`n:pus7wV&,~^,^b%7%1fqGcVŊr'%8B F="h8H:F(C:"F0]6!tMpIp 0pdG"(pxt1)u[ (}vjȃ8xIi&$Iy#@X3DJv5XY-`7>YiXt&p@ERe4VX;yhykwZ#" {ӑ&;2 mz{;K(hg?ňƂ-Dfq-YoBCُ:mI|XO#?e(ajr` 0pYwq)1\r5 gUp0r\bhst'qd 7(F+Q q=T5{XC*Hcyi>D8zw88@#>ZPԚbS ك+5i1KU$钥wBvG$&äL$w'/[앑C/8bU#Z[l4X5RHXiDg?W#*)Y6uw$K]wL:M<[6gaibky٠|  ,zItIJ0'kdw5MVPi q7 q #Z͇9)Se&oߕx[#ng,hYHF:nwzF;6%ũ=SJnǴmBYщkKg]P3u-`z[>Gpg#p?[(#h:I9rvhd:J@&:UgJy{e9~B)Dr&F`dU6j^26cU aC<%檷*s}");bF>9 5:#S#y;QN0$э!]qpt)ΐ7zIpax9Ǩ:Mb(iDe4 0ʹVZVYQDUAgJ 8Ao ')6#J;?J=B8;%3eP邲>zCƳ7rq%ƫdmɪ{y$D:&Vruȝ.ڙ32c`0GfjTX誎Wv+{d:L浚XZ##.˅˛긄<7>CX40Y$EɱFy'o4CK5Kj[B(Y;8kɻ#+.ꆛ;:7B9"Z*˯{#zaN(V[7%yClՊfr*/]Ki4eu(v%dP uAF ML ?{Zףo9IҸux[#ʩ^;_WCɻױ!hCJ)« '^kV{ʸOsKh|ik$X$isc5'`8 >m{˱I5:YE_Y˷0}DsWXŃwi,|{ ̄+ÑY˩I^G ZUl?loz'vueZLcȜZ;s"ZJ}ʹKg9KKIIHSo|,*C$B@O ]̾6ѩdmf}cBOkǺ*TkIu[F =qce7wM'--h)5{s{]0 L,3*wDDe``;E)aiCă.YzOc؅]„ݔ]i``9ħ^vڭ˱֔'v)}%&l{؏՟뚔?٥}MeDAs2<_ ɀaڳ_ CS}C34]&P+&+b(acrac(6b[CtuI|g#Kv22Sw݌ԣd..-͞E$sPO3\ ObᡃfhЇ-/>e=ّ,>ghV3\l|h擦:k'X#B![E ~2 Y5%C'LIۀh̋5TNv 3Y>B]Y[#iԮcfa0bV=sR%.XU~U90/Vk?VWl`Wd&}- QY9;h;*IE\u~}$yE 뽾O,qr(p~ %iz&Z=em :1l'Yi+ֳ'ީT:* R}NF<~'G zۚ*)M_-.0}?4&%Fu%o)) +$^<H5L&7 :_I_XVߎr/JLs^Sb+M_ep8:@r>r?vERJwO+f5_o ?_s<"?_|!H? N겟O"Ƞ 6_O0?um*J ? _aAA괐!X}u/?Aفh L& It>QZ^Y~a\6ivqI,r`0,VV8 j*-/13579;=?ACEGIKMab(RjbT&O}knrevgaWuzIj"쨣yZ8`AY mxq9"%+EI>zuw۽{w?|yѧW}{Ǘ?~}׿ P@(LPl!P ) 1P 9A QI,QLQYlaQiqQy R!,#LR%l'R)+R-/ S1,3LS5l7SN p0D OSTPCS2s3HtK1TM94 P4<@BT HPQTpZM\X1TB=uTO-cMH]-W WU!V]P^;CoM|T?-\PdjmwW^smABj-%1ieAuEuu;Ewމ)<U8BU`YՐW YBfQP7A50TqYg$_yAR࠹= PQH`&fAnPhDx9(:ݠ 8Х#XPvЁ U]\|[o Pf-=Tv}:_nVg]h>S!rV!@E|n\qiMWtx|_Shm_A^qW=! @?Z9lhP5QiAk?Jt "wAM#_< FODgߕЃ, aF80. kC2Ou aCD)"r>,bpOl^8?IUʜg. 5TRf1~;! T/:i|XGBhV~ZωZ0TL'|Rs#fI{6Q(K S4]gLiҜԛ5m;ӹRӦB I)ӓsৡjO|2 7?P}B ֳ=2Trfl($TрѠr昿 >u] M5TЪ&Ƕ~nxb[ UzW h]^?%╳rgA*ЎN $-h[uϦN3][ֺ6eml5[ֵ-oU[¶-q w%-sO w.i :wtKZ*o>BRg(˦k)p#k_iM,V$Ͷݮu ]6]j>6k0]gpeaw-pXV1vc]),yWD2mDA#t$+Ⱥ& i'yђ<(kwft"mJAxt3DG:ЗfBjVy|~o{g->ܬߔVmU&j{v{\ONj5G}Wu>%m{o}Qwj8np/ w {'<-o?W|Bњk!U&gח53cL2vcM!dٔmF"Ȓ)'q#=fKgzEtKD_=@@ A@Q DG?'Q1đ E1 _y "s.,`'&R&r">Q#@H4 @$9> '~qvqA$#`%"u&'' #/e4$#(2(@#/##eR#i.'\r*R+ (*$-#S$/o@#rk.`z(!R%@&f %U%+#2A % rLd10خ@0fs6 @ps5IR16mS k3Bq5C@!_63 c&:W3~: 5W 3<2J2AO"1<ó**s=7# C  +ճ*-BBt4,CB$>s.U42=4F]BpS55 5 :u57e3=H}S;HPh %e[sJ_5;U~TA7we3+ R14 *01`POD?@^4(@-Uq+œPA=%B5Q>QOPP53Q52RP(=JP1@SQsR^5V@V)!S-~uO-$yգRU?!$xQQUU9 Ec<4X?G\CM+] [g<˵h)k6Pw<62CF@j}uQqkj˶)EQSv^ii{59 AzBZ\ecm +gѕAi(mV.fϖ[uʫHDA67e3VN!Vaq66s DYAP@4uA`3)71dtudGvv;emVlrnrwA+B Wk5 Tzq32R!nWp_*Ǘon=pzf뼖}$qA6\{YUQngEufUQzAx͗jND mwi ;~~C+f07Qv cuEWIItU`o:G'$986IovJuw6c[wTagayRhy}Wuq#PBnlKs %Հqul7pEטRjg{3c.(DH6G8]3x4AfGwS8KasJwKoBT:YVa[8V):+6$lglIՔwcs_8FSE#TDǸDQɖhX}Pz؞!|SB@X<-vADIT`F{u2ݘl+mxpX6ϙTRt7f?-?F\lC@Cv8qd`y Q80zitШuwqacdEI@Z$3zYpXR61ZiY/Z !z؝YBf'XD xA  `,7˅2zlPј0#!i)AGU%{GÕQגye4D77aؗsUYӧ:8v9kZa ;ی7O9I{p9[/ﺍdiA:z%%yF<1;%: N۵ٛ;Cx=¡QGgX5398E6w`ք{wB`\5T8vڙe\tw|,yAY=1xW#?图<}\ wA)kWGwS ?n x$ͫ;|+CDԑ<ɻ״CuE^DƨYWAbԗ]Qvb5q3}~\C,}C`kkG?#xjњׂ1h%A:5fճ9yKYiFZ'8 }pf]~/\½ As+ڧ1/*'=yCܞϜQ=}APTsYSM1D %tꑹG}E@z#>[SV:$k}<4,lsݞ5Yi=dw]g*irWUвU3t1j2A3X^[$EᲥܒ#@ߓѲQ4(郶杘;sZ1CXY~3 >f  e:Uaeueوcs?:E:qw5َ% |UoԜճ_ʳ<{yWÓSaZ>O^!}D :O|i?<[{Bl4<>xXaTô!ayC&B =Ar=ΤiL^CJI[TŲudfz9fB pg-eH<5 A-Q9HA(5< rrZ|e8jveB-=| `HeN^$0M)9_@a`VT\-3}.enEVR"{a/ivwأI(< +dI(qp!ÆB(q"Ŋ/b̨ $FGsfRHW2, %=l5ȳТ}0\I͞}lf"NFAbέ>[Y'W *w.ݺvͫoik# F|v/K54vx*f˞F ҦONzjbD,ufL=ůeٕCʰ*ҙ:W8s[\}:֯cdwl!p{ӾKG5Bǘ31}ٿ?:!w7GT V^p WdJUv!#XuaP Nȴb,U$ci6g:=CYG"K2٤OBRRYWb[r٥_cYgk٦osYw♧{٧Z>v B eUzivPtX:NZ+ʵ\raJ⚫1Q"VZCjNU" 勲R[mLpqbPPQAAh!#wlkK6d7 ʼ6*L8 d[pZk eXp,{ھY \z y*k/,fA4?@ܹ13(aA-z9B<64ms |з4,ڬqj~N"mMxv-ށ 78 ;7ތ/4yOx?_NgNYf~x銻5uO3aw ЇALrf !щEZ DoAˢS8E vц_]^BE#OЎsj%Bc`y؄A)d S"Yu(ֳQL HD.JA|bMW~j*{FqdF-sxK# )[DXD1W .A3K,iM^d|6nF&I.sR$Yqsx'8 Nq³g7N{vs=MjSD6۹ρ:mJݡQN,a 8?r I?O :i':$t E@RD4&MwB gPm՛jRЩ&4UЮ*Ud4ZO64U*S u-{q#mF i~+^7-txEjR L_q"~4- k5 1}*Ӣ6DrLү"'>W2lUe\}P/7IR4U-uU)P]7Hvݴʻ ;]׻|Hu^R/}^%} B`{7/`0~ Jؿ0ya:ؼff8)Dg>¨ſW%5aoŃCòYhޛ K+ ː^ B,aFF_X 08f_R #|^y].ir{g>{x 3fBk7t}-\`F'z(uL+.3ʹ%33mMM4.EK[bVZä(Q8O}﫵[G&RbFF4: ge#,َ^l'?Su-4emYܱ&uW k0 nVfQ TuxLqv1mDx[mM7=_ZuėXvrk%LZOCUHL ㆔|$yL ֚kЈl܈,{y̫M Q=J?|w>3|gp_YGSKTjh_מv}pIލnwzOs^|_x+|o˟=׼)v6CAk3}P˶R_t,~Q@b.lWif=h wBB<_Osg~x=|O??ӯ.52im ) 8E. tJGJGHv)@@P,'_X6@8ܜ;~!flW|B` `fL'M_LlqPLbНBN!i f!aae) C!O% jHaLMZ%b! << Bp5|_2cbb&j"^E\@S!Ft(TE'rHU(V$`x ]tR+nb--b..b//c0 0c11"c2ɳ3&C3n4EP#@,fMX5iFxcM29c::88#;H<<=c>>c??d@ @dAA"dB*B2]$@$DҘ\^0/<']/t|4S H$GNaE^`PR6T[K2 >DY:JL[ʴ Qn](%}XXF^\*4U>iiE D/e avBhVCC,1j ^&]BfH[HiޣfQB8g>FX~Q͋qo`edŰ]4`b  &2\itfE CL`)p lkr's48U%HNr1FpwL(r}~τ\H{(|z ̕z^c`jđBLTf﹜x>fF`CKrEavBЮݞ1FoDuF BZhI d`B[DŽZ@pDÜ68ʠKl!#dKh@fB@0Jy:@K 4p.CO(Ġa MCj%,Mb h^eƁH$qȠOd^aRijDA'pi)Zii KMt t(A\)8i<E|.HdF ]č&6*IJk,ؠDT7.>I!*$Ri, =r +  4, Ǭ,$`}g߇X)QPQ+%#aZ"(iyPeҐD+EBF\ f:črXF,BDӾw!VU.j)b+2LCH-t(lBi,i8T`8d`<94k(R ?ϑ1p nJl4--妆Ϋg`ߎCPsH, 7klJlIFgI2W&F|@8.F.팋NO.fN.T_E4,6Cê "kZnh*A Wu Fd:GjI\b,`vf DBI1ϱǀ !Re _,fN$&EfͥTXG#_5EMUaMxFlk^f ǜ-)bQhv6 CJ@0ÍV*E֡&koXBŶM%>VPئ )^/qV®.fT2]u. V_&˂ɝ]w,0[p $^]`A̒p-@1B\/~|VU|dnG)*2͸7hqD,0qV-ds(1$JL`\`:S:{G~2nd'K* sFe~gmo_*,Ԧ`yCrHm5YraG Ws=Rjr2̊#F^.菢FN0^tH/t rCL C4'^Z<$MrځcNPE:rJ߬H_XfS_2GmC//EY *#T&,OSh-/~%ZhrZ ht豱kٜ1ȫ' 'exo[e$C5(44s)w,X0/5kQi.5HŤwi3D^{r q jWwNDFhw;isDGDߒaS[;wSJ&h+.j 7rBbmxl(vxSxn'xoŸjhwgh5)jVgT3;aKu)E^rǁHv_=3[_FA u)XswϨKa}#_>gjo(?t9S d򒻭޵܂9H^J!B{x~p8(448:6wy}.fw^z!i! C8"<3>x@SZvWoO-:dkWhi=>M_slDO"wwD#;~V-y [ Jzg."߉v- Ev$ԮO's?Ap?>MT].t5<.,kG;agLd)*‚kIN4g1ܓ3yP8spCqvOo<0 簑GE1T|My7H^Kw$Ӊ֨73tp |&#Vu8i`5k+t!쨺%:jheyq@/ԷB #)L6_}}^j&G}pR׫pA\kmCsj2[dB;?G墷A]3D#@w}C0/[C~z.d2 pXQQ" DB,UbϨ8j5 ͪEѼ;8[Xpj\@P \DjLh" s*;:[RS`,{mղ{ER_?++x-:\F]XVY4IC #IJղ Q4t 4(Gj->gaɩ]IU]U2 Ѐ.9 epUu)^ ܫVޜm K1B Ț7b3dmDu"E&R}ء :Ȍ.B3~bm۽ 5IWv-PaV߷&" ѳm$`n.MW]l@0G+G%p0ho(ϸF$ e庚A! :Rp1ʦp㞗Jqti`* FMq 8gL΢Qz~r܋1'I @L+= e#oNś{P*.33chC7;NO(BS102E(MGS@k7 W@j:j"¿.t4()(7Sl PhK~H?S7,9_1Ų[oeFXH\tiE]7^y"M,E+tK_~jLqQMX*x8P:rǂI+ܭHbW$!??[7}ގoY^rg،Y&gjφ.iy Muzގ<Հi;٪&llf;_hn;nš.y{lnR*Ow[P&8e <=]X)m/|3Ks#c?-vseҿ߶WD?*vivᇿEuG>5xp4ydZ6柧&qLtI~]5ָʷ0c>}g}߇?~/?`8@ЀD`@6Ё`%8A VЂ`5AvЃaE8BЄ'Da UBЅ/a e8Cp@<197m~H"dKe"6E*VB@2C5M0C/^[ԣ2QF+!kcA4/,A([8,p4(1dq$ط<<$31VmD9JQ@#iFܭҕ$oQLd-= +t$,9̶]%HVO&B{^ `̥Ә*tsIC)1=fExtr@GMnēO^;d0>0Mb$:5فTWbP*AMgN{oM|cǘ g I,tK^`YN &)e^ULJS\(T 8QҐNzu:9Ul :ԵbEQ:yX7)6'V;s 3¤,CLY(5_$!FzhfZT90sƻh DDTX)f҃c[Y!u&@ @-MP莘ngqn]w'|j>ܲD0:}_+.$'*Sy~xVkcO9LjZ i?? pas62:Нj̒KI=u[ ;=,5?%5< DЛ9.y@A>PAiCa0Ï9&$ 6S5D1r[;٣1Ԍ=P0R +s,y ^#g᫔Т $CcTDCDӾXtV仄Xh&i„ODƃ EQ / ~FK9I4 FE`k3 wt 9yy2#}_H3` #Ɠ|0ѻ$ o0ACF 0S\D: 258/8;(8Q> y@/ w~"P9{t½8?*TEsl+l R魡&хhʤWFx' T|7i7=K<}*ė $d\Ë v8C̈́Qݣ?j{HpÌ2 2C Eք@<;5qν HCƢB䄏A9M㊺).28'IYr LJQa+s#!J$ȓYƥ*rHK81?7^MMT } n ôYPJUr˛Y]ɕfIܪPiђѻ@P@f :$R5I+a'>8_ ȳtɢq"%оҜ*-d|y`ˌR L!A @Tډ*TE; *iAK|T Լ9A:TLeVu)U݉J1UUW^qRtЁ٩kdE<ghijklmnopq%r5sEtUuevuwxyדL")b;oq(=!4 F0z%؂]7"L,* h˼U؊%Cj5"L`˝rؒ5YS*! 3ңȊt9ٛYغ4|L)aV-"ٜ5ڣ*''AC})o;1)y&boJ?tJq)E)m**)=[v1?=]+Zۿ=lĿL :O?Hh H;+RA+Oe9qM0 =9+L 5S@ +[cS0(Iݿ Q=TA4h9XZV0]^-Kd>DBrpT=$#2`LLQN-ƾ]#\jЀY|%`_jTJ \1 H:EDP)N O#"{`j_MY-a2h UA 48+$=Ji_մ[> MAKL^3OI[hټޓ=iG鳮V[w+":ʢBM㘖FNn>N'*j!l=_VljZ3ac)㭌ai|ΆlfEf+$}:K!Xy`a^ڞVQSm lf\W7mvnuMٻ.EUfgoYƉ 0ofެnVZUbe8)4_'3EGWgw  [):QӇAYa${ ¥e_z!?] QIeκnr X"r%mACI.WHE5K+7s,o /G*N޾?:V& чR @,l6sh t§lA:WH6&PzbtH8[.Q'8j%3N2\uêbi5'En|,m+TWR'A2魂UF7#9v5.^ ﺈ]ؽ]tA.-+1Jr,/Qbw= !4JwsBd4S  Jr6_22å3 -zxbR cC$F:!&ހZÜه ,b $X( D@tL# 5S|*em+e1L$A1ȁQHu4ŶYP@gT AfA1e +;K[k{ ,a Q>Ű>ݮ;~&2H T9|1ĉ+Z1ƍ;G, @x<5&Qj@NKOFXupτ g ><꼩Ƨ+J%(l'=z 6رd˚=6mD/]-p7q*ncM._]w=8Ō;~ 9ɔ+[9͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?<̛;=ԫ[=ܻ{>˛?>ۻ?ۿ?`H`` .`>aNHa^ana~b"Hb&b*b.c2Hc6ވc:c>dBIdFdJ.dN> eRNIeV^eZne^~ fbIfffjfn grIgvމgzg~ hJn% %|uhvKG ElR~e>xu-*K(/6iQH b٨#j"jj; MWD B&+`kQ691,*p.p, C& >N|즮RdȪb帨6"n,@ 8 C?tLQ](*|l| Bf(RALT4C(0V(NerXQ q31%8Tx+XJt峅 X@X/K6l &D“ f:gCo nP[LQD & ΈGbXn(^ԩ"X$K(є3IM +VqisŪ7 7(PŗAѨ#F}ɋ$ K^FJ;LS̲X=L)QqOԡ57E=dE٧ˏ/}pxb fp8:LBJOGva͂cᡊw$$`RTYN3¸Tok\ [8[tʰZbtlߺ(Rڃ+2!H])R>ߍ̴?Ynl']QDև0S/-RIE}+emK[9KvguĬҒ .x^kx-Z"f^4$-L\r m.*_ .Zpk긘 Mc y92J"`D2,ABW;(IJNKO)kLz9\b\'H۲ό4yln 8yt?AAFȃ|KLxO>H vf'D 1@}X~DfDTuA܇eDÀX`1O}Dd wE@5JPӕAUZ1# st~\w]G@{T N؄Q888xBHJȉ(XZLGGWwIx8_8x؋dXJȊH\ʘvH RQ^@=GsRյXmVh@gYxTwGtP\w7Ico,u@{Ç~H%MB9ק-rHxXX9ٌxɑh{"Y6E˘x8p5591<=:i>i@B .69ٔh8H09f_Ndx{' %0ЅtUUi 2EM8|DDxAz"xJry j Y~H59YZAvRj}d2YP4t;ٙAEG\Yyy?ٚCI'GYUayg yii'' i 霸9͙9WٝɝiۉzY _ԀIuaVS;CAGEFc'DIDrz}y H ?xcme8$ * )z3u 6 |qXG1yh%PM.T@ٛ4ϙ3:L|PI@$c0\w)nyPsA ?Pp˧^ep [ڥVv2HVaAp q \W(姅9ʹjS~ kCt\9UId;wW: 5#Jdsezi*(~!ehyԎ5ɪzrA﷪qJo0Vd] \#-֢eVߧV: VQεfIǫ~ Zg* vZ `+zMmy[0 PUPdf~9>4y\ KhwRQ x`+ۇ: %JYͷxjyZywm%XZGs83Tm} M6{Іg7@y;T۲jtJ9'Ѥ$sO ]mwM bFw_+ jGV>a *VVo vh'$b@^dnk^qraOa6 ]ƍx+W\HǑXie:[AfvKk狾髾˾ +] "0)XK{2^M tb^&= r  q(mABL<|Q!@A)''I*oE3NI|,ww3 q p69&%6;kBc밬\ zT-=̇ d%&bTbD`Ux3u cC^9RE&~i"3]B-ǩP2"o0S;pkG`aEo95Rn}2 +b䏼F;ZoAWYn&6Rɑڡe%ԙj9?vJwLؕ>R\-Okݔ%^KWn M_Y@M-`⋦HO 16M뒥g^ŵdKp~^&#~˺㺼;c$Un4b!.{A-Jofܡ o ox{ &1ߛֽo'+-/1/3O5o79,kE(:;:/H2 bV*RoH/Tc^NM?#/ #`E0~[^^ slmKto]?T^Puz[0O<*E[rmD0/Eo w|a`+,#o.Sg+a5e1]g,ԝ:uO3ThQkg.?E7oE֏HNo骯Q__W@p0 a P2.M!TBn|Dd[zȾs^EE8dohPKoqKPϤ (3@43TԩTJTt33v`w67X IywڑZ[7<{@{;{Vݙ}~(ݽ\=#C С4e=\"QL,rN)%GbyBrHAӒa˗&PbiŅ FW@O3?LJ 4cHP4)֢Zڄ)ѮS}iPZ5j-Hqݢu.\uw/Z~0n]Wp`x9,-cnc{΍%Y_ª߂f]4d5=sn{y2ӕ5&{¶_A-0"HBR'~5f|cw,t@A=ƦR:<ܓ>@B|n2ýuzd(0R;NM0#EҼFՃČP{RSv05V]}X }Zi\]m]Zy V`^ldCYb%vfVŬ}v`q\o WlqV[j=]qw>Dw3D~߳$c~ 6'WDL-Rɒ&I)ņN}7ݏ]]%9ސEYdv[^9דu-`S6d_^\K Zi&wȊiq* }.ȫZmڜZGp|͍qhEmtaH<ϛmҘpDJ"ji^ ~2zs}ƾDz<6}+ѭ\u[oe<''==wzw̋F9O%R[`2.Iy; Q+xǧ}~ԟ.,U@ T8)XA >̠6~ ! (p2P'Svm!›G=ɲBITD'>PEH YCF9_ +DCQ5Zd_ú!1QTZU^YVU~aXZViUZV $\?0<xPୁ` * :jc^լ*vNJ@ +(fUjYZ@N%l][[Vm[c%<0Ēz`SZ+g 薱֭s(xBC%G0f{6>6 m<*Pa- z h.J2lANI0o Aʸ8ngO@ppGh + οJwNz@̳`̌<0` %@ p$"1 ?- j0 +ApǘD$2l˄,o l1 @ o   ! `qBl4lUGl1]MلpuQ&`4z&`".@Q ҝ7iY!!ޜY(2#9V#?R-IoD"HހA&cҵ@F"&n $e('Q񸞐'аLQ(*&M&R+U2*,R,ǒ,,-R-ג--.R.../R///0UJ  3025*&G|/Lѱ2"0K12G4o3G3s]wn!P453S)~ ed1 uFs[ԣC sxAa*D{ CSW+4}y|K4[UcOP HwWZcu-=;8]c W3IoP'@-EVZi6"sXY< 71Nbg3%mZ` oUai?%" 9'Y]}pOvdγl'Q>!+=\YSfS"3 7RbBhK:3QX<>yTt0xfx}pBhEVRRXO+F`On̬ ZN4wF|9?J-%_#f@+ֱ,YGKƾ=g!m\xHwAy_d 6unB3uX-`}  X9hɜbZ_"4u# .8vDwgu3BuZgYG&~a$K:!r0mO^'1)qs^b˩b,IzrZ3Veԋڨn3z,_#%vGtFWQik[k{D0d%uqDSYXTC]T|kt<{wI?EXs?\u 1 |?)F__w֥;a`Ɉou/Ye{|N振Mb̿ i # /?Xy/֫+AP)tu5q; Q9X9<\q4~-{_QYU/4y`kXz׶ٗ^Wg }9Ry^לe،KϘWيq*~iy8.1vw{NZ1ِ-w:+35@sܾoU44wǚҭج@I;\YYC)U ZD1bt\z53ߧMߝqA;6D9` FKVڒ_|[>-~072}Y_V,t]%1L?[8?x[ϖW6͗!ڽe9$>{L=UOS.˸&:s/5yy_uW8sV5z@Qo{yܩ|E<9~ 1HT}T}>?X߁-Z\k|<׆7}PSaQs~8Q7 Sw~^?OΎr Ǽ4.i+_=f}3w@_Ӂnbewtsߌ0>u2'`awCI;}n= 6Ts]1xD H!'yZ̀f+Gh&L^+HTh <)H6^B?GH`a!dZ!Gfja`+l,m-SXĔoф_s@Xp4su.ہQ_y8Sr3{C|57"ٛ},W XID/@>@ukpu d*Bq D_ eL/b+F F"B-A'HcD) Z @P8Rj*֬k5y̓cAAYjqQB++.Y=ga:7t؎ಌ{d"}ֶZe„{fI +/[7K#EEJX,ޮLځ.8D @H%cDDZ*P=y>-:׳Y7m_{wKk0)V<g=y1fY<)dK܃6`4_K]$DЖ[h>XR|3`tt{$h"z"T:UKG-P9+F)!mt(d#Is ]4M;m41ZPuc+:_T=Vmv+>unQ;Q X*\a{COc3i ȡ=wkGhGV0{_SGJG [W;̻T.#Ny{+<[WfqEЄ9h 1JU7M~ŬlYXx鮰R/(LW~2A%/rXα0ч\^@WligiqL ؊-t ':F-}%gZHrtG42Lgsv@DLLV"¯fآњƢAd0rUxk]W78 UeG<*/i †*f#G±$&3Mr6UR(%JTfjB^iQrT(m Y%0)aX<L#&)M#ּ&6mrӓȜ&8W!(d4éL&v|'<)yh'>}5/iO~l#=Ѕ2}(D#*щR(F3эr(HC*ґ&=)JSҕ.})Lc*әҴ6)Nsӝ>)P*ԡF=*RBtWj$ թ2UIP)@#3PGpVBb\P5+Z0ս# S`ndSe_?ZVbaIab- 1jŘ U<0QGH^kEt=k Y44!؉Za#C_T2zӛJrXX?uVµm1^rWW[5n%[z[yi .T0".s*%o\/?]$KaD5̆/op[ a`Y/DSD )&UCZШGX++=#1 _LUQ&jR#cS0,O8' ma\۩."D]" hiNK_!g-`ОK+(Јn& 312a x%. s`Ռ #PR1 9_`o.cq]Ű#EJAPE(cD{j|Df,b%;8WH l6X?ͦkH@5KY`ޒ&4#IV$)w ongg&f.WAqH:" Hw8Js8uxǡمRHZpm5nusf^mG"#]N/e{ L[d^QM[g4=!/m 2UlŃY1qΛo#L*yFK@!XXnp`\JB"0ѫB#XhWq=H"W*q(`pUbXtM#{j #=%W 纪I@rRgnTJC?VM" <z@N1 ]"|)  $Syk H^mKME]4]Pn`DQZUAb LP,1~H-ZF V PGIAxܲqpiF"p]N>wl D ibhV Q<,H@ UQЄ|' ! ݕ"*A"7ŐEA%6E`&iY bieD䄉9C_) 6,RՍ"Uד 6HBp$h^Cldv QMm%\cE˳H]ɡdܡXҙi9A&lGI$##t '(SbX:sCބ-FpIa\ 84?UO`O: aX]XMr$ݚ]}%WHHH7E+EFY-ܕ1iF:fФ1BÀ${L`#cPۙLΥB%>‰BRZCfFh]DdPF8m~*%}h*pfUXCKkJэ Pd\әvi.l2hevg1TU8Vjd5]W: [LpvDjNu@Q!_Νa%NygT 8a2b2hhe}) JdY3 ]Fh^$m4EfKdkϱ lX+U jVh\hܨʀˎhig*TI@tȆ'uGXp*%qLn*w+j١q$|$E`z A*#杻6yjyeܗBPf.c6orhuijj : X}P跆+b~R" ) Ĉ߶BAHhZ!%p^'o<++C(.’>| -"H#Ȗ9GLP-*I`c_IivX,H5 HLcq.Kv˺"ʫ`0;ˮJxN ( A(+T˵K+ڇ4X^f'}  e˩튿-c9 # VLLzd@m8KF) =݌jd`?R͠mN7iL$% ZM) X眡,e RJoװpb뮏rol3# !+QzGs׀.|N-%7y5Iwf2(ns{Io‚wnxPjdӽ~`Řʳ$4}ꆱpqO 'yDٌ5Yu98dӇ|5ۇBe@8Xas898,|Yٴ'Cl({ᝊ,l5I;%eӉZڞY<#Ǣ5MŮv°qMœ[9o%r||z>𚯡wZ=U\:l$DL0{N[X1!񚍇ld9\Zb+p*g{/|:ܻ;NCAk1l[}{\LôY 1@)O}N ER<7v-U {! [Ħ: =&M9&Q!K,*(?]C9\Le J"ؾUUg[qrstuOxxe6Yτ*i\׋`Azd]RRѡ@,;y!P+ZeI%$d\i3J}kp䐛JzI4RM*Ifc2f6]L2͒dX:w UT%щMr`霦 JFO[i";5ŏ%Lq>4rQ{.fcȑȝ [VFuRH2 ~Ɓt?ɖ>Ɋ[KwMo*Q\ wkO$X5IƯ_ NĚ09QnW*G&86J'hOV-8=&(`g䆘)(PQboJc@zG CJ@T+ހ(X2Ĉx3׊mlYkު$B,fK Jz\ZlKvTؔRE%Da>[.F;n&<64*ArSP1 3@QcԠV(3[L^X pS; ۲yTHdUvYfYh#cEYjvihcS`ZpŐʅtՅÇ )n2ʟ-?8C-č\45BG3>&#].zVnd$95ei^3Im 1tJh&2!TA -S6pceiǧZR*šN= &Dal\VX@գB𥂵Ru5؁kJ?nd5+,;!mZ\8vCş"4eUCp*\*N`7̈a1 6@]IXn$#CB]Jcg,>Rq9=AJ,ɂQ@FiSEyI+άk_櫷ڐP D]$'YKfry[[xXޔ}d"u.#Yp_ Dxļ5$U< CkC<Ƀ&t }hD'ZыfthHGZғt-}iLgZӛt=iPZԣ&uM}jTZիfu]jXZֳum}k\Z׻u}k`[&v}ldK8fvlhG[Ӧv}mlg[vmp[&w}nt[ݹl& C;%+NJ]qߜ0+GDpAYyP}[lxn_ډ:F иBa!DŽ<ݳmBL["w99:/-\Bc衼%F|$nqg;yBL,,䎡Xs>A4ԛ%pVV|dކ'r1*>p?)ayGlt stS1xܐ*3,8$px3ꮆ<`*@OLBnOCrm%ѷrh1јg!Sl`}ne)ΐÓ)2 *4n](嫿$Y?)@s wp([@a$;i4@f ӊ)>xyzjP(0J3h !de3CAO1!u$t \(%4y #3 =B*DH,@|Sy);Ѿ *<7"%X=n:4,5\@6>B-aA1,A؛҉)LK a!&L!AҚ:Q*Мb! $۱E\ô18$X{GzaR,tUqny6mKpKu=bjuA dPSоRنP&Nl:᱉ MpuIŊPY= E|X8I,]v؁x ŌڴNiGamǕS-XCۆL؀VxPF[LGݭX}  [VUМ>]Vݜi%eǫWٙQEgVE729YߣҵRM։Ac{hUrӭ[vcXP^]E͑e5\"[ >  Z!B] VPP^fх+= 4NwG؉gLQz!}T8Gnt=@qrhXKͥ&Q(B.]ܺPj:":b\z p zR%0[]a=9*#B9\H\4*#;gMo {5_QJi8⧣;yJ&buT0»I=^^rr+>N|)㔝^cޠ;UI\(s2MM#؂ ,i!3&n bIH8mbIuZn0ਬکDzz?Ձ)l2(w)q<9ZxT(*WFx'Ļ٣Q6J9l7MC01(ƹLcYEb%8> k-UzV$yᷫB?yVIDyV׃WEaنndiUւ΃A*Z;Cia$_%HL⇞vҹ=甎!RNu.c2`]x.=v0(P/kn=@qhQ:@ jڅivǨ&Nen i (G̒壆0X9t0;1jk1ȲL| ј"+f0r*.i.'d>s3f2ϮJv4ߓ>m*m[s3.3>.XjmAl.n6`)8nfWz.^mnnZFH|oNof5v ~>+`Hooooopp/p?pOp_poppp p p p p p*c-6m>B{78o2z.3B'Hca8eAn c+cG4+2;:t(99*rṈN!n=&o~k ub3F{0%;ל;ڪû&ȍ> k(k;]GsFX~5bs4W756_Ҏ_Zm9:NBO <=tPt ꋤeƮfKJ\7r^ G[Lo+IO7Z6EJS.m:OXZ Cs\!KD rI˅C36cG7I 71T.`@ lcm>`BwQe<Ąw=x {!_~~4p`TFEo#Ԓ"tNEi%/^ذïq8斃%|ʠ'C e!I2.\e0!##XsM;Hf06Hb)DijuāՉDJJj5RynMZHa(qכ+3ua! P(fqwZRyDa`T<$%DOM`YRI(`͢2WJbݡ1K4UF(A셑_P~Ƞ_^ʗgR&5960jc@vc 9H4݌H,v2_di: IY.b跩M>4ۓat٨lw ai)cw[2WhXa:xppa nBыqǔim&W(C\6Kg$!;:4TigpTWmXc Ί xIݧ"FVᑙ? fҳ%莫M *y04KLJ[: 򥯧L[mBN/`ʭ u;IoAV IQ=XtiZ+SյHҊ`Nf;ЎMj[ζn{MrNvMzη~NP;[ϸ'Y{ ȃ(OSS0̻$8Ϲ[@7σN:җ;]JԧNS-VϺַu``hOͮ:g;N\vϻp<.&<'}⎏'OmSϼ+-{V a)ϵEܐNb9"#rtb7Pz";"] Wot!/w?䧯oA!,:  dilp,ks7; wMD h6)G]q])hdVWL#crtF@asLc=T!q""-!! ,;,  di@h,oθiyO5_%H$EG XD GNncl^`uLni]T oDT tzw[~@q*Tq*Xuq/ )l+q(¥<6Eyj!!,X:  dilp,nxN۶üoX ֈH%$seMU՗nsݯ.,Ƒ˲3]nv5.S;)W{~s#|}' %]1Uv3 tqn]!!,,  di@lmfx/6ƈ.R.' ʓhqy Hir("^ 1j; 8iS B*a +xL _%l#*HSU[*Dx9y$@"5%*)w[5kn& +uv#P(pƼ?"ɽ; Ȳ:qsڳ-E  Hfe_QAСAFpbEnB!,  dh,h+ðүn1'PFDc<. 1C T0pH3b MN::>PtkT4z@( x'"*c?<$8g )P8{(# 3uFLNJg0EB>L!! ,  $h쨾i´Ұ]n1Q¡JPKO%a a\OBQJ.jRaN4Q|rl@d O~p|ua$fhz~jPws(# 'x/H)WZy8mj~^Xa"H$ ea%z{)̽ q[::Ɖ",:@  p+I( 1/Qc1!,  dh,h+ðүn1R&O b<&M3"ۭBt2x T&' f)9RR>x>W!! ,  $h쨾i´Ұ]n1Q1,(\K5" t)Cr\Dem{Q=T ?_j^)9m(p@2'zN}$[_SVn~>K!!, b d hf;pq<5|=D ţhT23Nc]mL_s}VعEbN<<%}} REn6:G~L!!, b d hf;q=u|9=L QD-OgSJUњM^WF l8 \;xt7M \[ZCVCS!!, @pH,Ȥrl:ШtJZجvzxL.zn|N~K [))(U'()G*(] Vhh'F'*(VU)*[*'UdTɶ HVJ:o)N4tPt7D0 僢7 ="\ɲ˗084)nZ*{E#-E2lm͘PJJUO~dL =݆!PcN9p[֪pʝKQ؞KznMaS+ׯHrI/AIl(C:& QZ]ͺXN6`z[x-nB-M;?RH~Dj u)aO 5ExW}awʋ^c^V>zן~7?{2H!rW[y$DD{E pGF8c&XqH(`"t%WHMuόVge$C)a, ezI8{X]P3Z^YfN9Ls or?d:igF~" g ^fv2eYhrwVV #8obsҨddC6+͑D3*@uz岝׬yJʩ2&-NHӮkzNnDvca, ⻖ŋ/.̻XK /e˻W/7lO\¶H ƓEp2'cGر&K,,1S*l17<3X5ds)Zj-WRTMdcЇ/MM^6@, \ J A Zp A8 P80" [hB{bCҫVeǣG;xa 累|"Eڌؿ9Xf\!aFC*tiX1#FAvҶlq\ي$-sU,&N2ry&iIGZɫxȾ*#xbZA1$CpE9A@Da^:] dW45M4r](tMne2<Ĥ)MK،8S(<@Mzjy'; }6hi9Pʠ'0 M mf< /Ò%bP_Tл&e2REhť2 Ԧ4eP҉MkZO@Bӝ3\g?Ae:&O*ѤJժZjVzUzt]Wjխu,O5+VZVk Z Uuv+]Tw= 1S'"XZ=IVGE)rz&bt:|+`_zVgkZ?;ZІVkjW VӲv}hO٪-mk?D*@GI^9|M)D a TՍgV6(ujg 1Q-5L3K^P8ԡFV+`^g. ˄r7T%Dΰ@,;G6IԌd,a –,! @"f/xM1ЌZYPL*[Xβ.{`L2hN6pL:xֆ>πMBЈNF;ѐ'MJ[Ҙδ7N{Ӡ5 QԨNWVհgMUָεw^Mb G$@Xl 6m){  $y@S >76ҽn.;|`xw;.H7 <^{SXq\ zgp.\L6Py'Β|= h~t PnF<0p֍p{ >f :v86>] a_na~{Eu"h$X@]9ש.nGa@|*ygP@ f@҅h`I.pY a {GMH@#&:ǞzaW=VK@ߓ"4 ~{ gG~ W{7zf{]`}zP$QzD|0Uy7G|'sR{wm~ {u5TUgu8m!PxB`6hu!ywC2HAERw2hyvfӄ|28x0SmB(#y؄Z!b{F0|b}|kt l~X@olΧXgrq!PW(n DX{`hX{b({}-7ቊD0t芑؆HaxȂV;HxWwxWMYuփ!9huPAhCЌQP|Wv"sR8٨B0x^!BM8HB| sQ( P0@hn|!q|&h؈]Prim`E ǐɐDpC@ͧX {Gf~> XaX!ؑU8I;yh"א6ɊFyEzǏH:,nVH(ܸX&nY$o;Im nFwX+I{CpOfg6Zș,^r>'z ilٖ0ł9ԉ,i9sr0Y kI{SYB7jpל) yTtbnoJ Z `tt9 wsPY,mpכyrgԈBCPhg7GixiH)4:O\ӜB q/GYr`JUfzZg}u ;'r/ٖ!ǥ \ZNG؇I ]J@ogzbjZ:MW,onM٨ h.IדI!ZaDuRDGOhȘ]sC腼ᆃz n ZȚV^,pA_ڥzJrrwIo(j(kʮW\wIxɓ;Y8vLu{k ,LpȒ "<”J<M)GpBg[ ͋ȻC: SM(`ܽe<ܤJJIEt,pLª}[u\q,yiwpW)‰܈|Ih{|à{̜N@h\\h眲dX ]˺+}juRBɻB@ V+aF yjKWۼ.-H׻Ks꧵8?< 9l[<ȠX)ZGkѷ Mn{̩V(KW‡HKU`ǑL y,:<Ǚlh U 0^;A+F˴-=]0x ˼3:=xөm= x:p:=ۛb{p 0ʁzʯgVG7 `zV )݁ _M 3+)ސ{"'ݒG߃mѽޔm܆}}2 HޅzUˢ(-PSآ;ԎE2X]\1XwYDKͷP BY)^h>l|hMՉ݂݅+{ȽX,Ɇm֖+b8h |[O^R]. FlXlXZ #NSfʵA]K鈃:H'nHgwFmɒ8Ӷl,u^Cݖ m~ ]q N-( bɆW.rm}iSjh뷨K)\c2 j>vim[ #Z6 @ ^# d X)A׸>ȅ0 Z'r ,ԙe i cɿx^0>Ҝ)GxH +P- Y\i9, U?J }d_]<IOa>Kp*Yq {/ɳD8ugm?wloz0L; Ъq`~eEOTi?h/nh@Od/wZ>~0z ii/f?_ȟʿ?__i?h?_X4It>Q`4Y~a\6ivq^f26^oG+ ,!#%')+-/41?/=3AUWY[]_acegi37Jk**0sP t'՞ oS*&.4.'(%(v% )|/֧ ջWw4!! &<ljHqY@ AB,s0-%.d1B~- p#tH.R]Tx!8G&U"a>HP1%EeF0i@S(׫E$;$@}PZH `ԢN캅+X5R2n۔reLD ԰ogtsC i[/ڪY:Rֺo˦G7‰ˆ]|i朅/G[{Un;5A?ikB= K"_C3yO "/gDw(((h"060+(r0rk= )(X1 oMAT"d+;CCDsI xlJ+.KRTT3L Ûq9syzΙ h>g)0àVCx>h,viZ騥ZjZ>vڿl+{3̛=vk>v"U"Z)0W§3w[ͿuBH)>a17 v1W;%'n௸H !q_6^ H𞿞^_yWŭ|執 /{gp}yϚ8ie .p L4 2wBD*ݺ|"A RЂbJj^B`8(wRVXށ #[(n$*Mt@A] uȅ],"8,:5I8]o] $@V:D,wHcEA!C&2@#I5H60D$-<2&3NZғe(K9SvT('JHÕ$"!J%$V]v򗌔%#mKcrC]4iNs*5,LJ&5inVRbMu) 6+e);XZS\AVZӢ"*A)RJԦj?QB5A Ɋ4XF-FNsvk9`xG[E9B<,NRcKLeQVa Y^Q@,c5Yn6F}hE UҢmaUZNaii1ʶ`\KJd0tCJ2'@W mI.=QHָ_]`=At$]Ws#keYcַnk~S}oi 18[+0>1|a{e40rbcΰ>lxn_la84qb1{8EƱ+dSGn2<B!H]/ r+QC9^JfCa )c&Fr[+CknIyɄ5dBNr'-hGWӝ4iCES{v5$Ԓ `1` I27ZS d&zּWԐ[KDu%* 21/m}0u5LkDΗfm='ȯEDw@lϯpc%[&co Rϱdi-d=wpu[خɛmsm7]ow!yO1yoAzя7Qzկwa{Ϟq{|7|/w}OշͫC ]"QA8ϟm7`Tf|O0਍zn+! ̫mSܭ\:\"K-S&F؞@Kl@ Jdo/Ү f0, :fN!),-j1 KzA/NpB& 6 L( cT, J$j -P0*" iPd0 N pwHI@u\ Ejaw2`?K= CVvB'!b ˈx-\p ? D~1 j *1A/1υ*q% dh:Šr q An Dq#0K #Rr.D \""zFDB( !4'R"(.b4 #q'Q %ۤ@8x&"ơw"sŹBb)[brni:!.)G` dH(\2$Ot˂ nbM!^r&^"!rr,'(8&s`( :h@,t.R=2S$gG n7Ȁ6y6 h301b~-3-t3(Gq2=0 7`195Y3 E6H0e܈*3.dE렂 N*.+&A +lBO . `sh7$]^]5F`T.%\hץeM2UQrS(3(b2.|Si`e7Ak5TI6xTP55[sN.UKJooET!3SEt'P1DS(-ʤlh N苤F CԼ"1QC* :˂eK$^q,5t ь*7J)>0OWr@+$fG' JAs# 3 vwk_p.![1ܢWzdBixh8Mr^+: p1@ >͍gįZ6pHX6=!6REV}g|#j5GVfP$MX|$#Uu1N|A&ԑwLtH~hJ0u3؋Dt]7Y)HILT元sUYTj%0v{ɠJ2.>\T"_m_X^皅u\7+`=R`9y 9D5ՕOnGtZWryI/)zlq D׋ 1锅mx 99HD[1’FuJUktvK iIZ/Hy_<2GKb+8AĭO y$w㸥v]Q:M7 w A̤yyB0 0RWX獝;ϥe•?aG3§xE֟NJ؝ Gޘqq*J 8Cxo#sms1uAzUK]W{" EdÀG2h,[ k[ Qc@ @cU$G%}5P3Wtdj 䰰kFW{ Μ1r[X] n7&[vױ;8'Wq5;W#89vlL"a=z@*%awv:eY_ %"] kt[v9sA]TGGx'5qx‡n͋~lVAϪ'W:a9Ʊۃ!:<ݡܯR[ؑڲ1Z[i`bm ׯƒ$䞴芪)M0DB5Y]56W|t%AvTd=b](]cԔWzw Y]C~Xv.^یdH׾!J/CwXh@ͻT (痽4{ft=ƨٍ:o<3} "%T,M{K`DXyq=12S5j>1`U}x4Zg=Z 4 X'B{Te]=u|>uIRY_UQ&?7Nq?5[}80y ʴ8xey\IytVQŽ),"I8195a!2-Xb>f A$Gpz"I*39%&=$xmI{5 =zsMlA*jbyK7hiL(6  $ noGArlQD*)wi!W/5Y1 g 1 Hw4~fɉ<`3(O 9@N+zZ95DĪfϢMXf4x͂s֥7Ɓݻ~Nh`N} mx-8*Kƾ?^aÈC7ʍTt-ut@|n5)Z L5ὑ-}:֯cϮ};|M40#3g[t7K2S^vi?bfMwcڂäv n9<޺]T >P.6G@IqHbC40AO_ZxCpJ9Qmf P4LPOJX$p]ST 4iwqGBzd;=pfp:9nz?` \x{*<N R04'0st@[4yc^ ͇` {?]u6tJc'BщoFi$ADY ΎƁc8WXBĀatbE)p'<)™S å@NBG.q*W߂h I} W?^nr3G1 X"9!a5@] , *Q!TSki[m xp0 2dI# (D`Խq^ 2tg ?Q,/Ε3(܏@egj c 0H(iC.}9EM`1p8I !#5tnWMr(;bR9T*fVt@)p\I8SSpӟ5eB7ȲBp@t$@O,DƼd3-' oQˋb(DCYXJda b1D ހI{H`WحahgL&MYy K%%2ZZU`3ZBJIlu䉶5ȾEvpu01N dX2?jk)&v?^m2^>^>RsMϥ$*ȞF5|@)>f~:-Fl򿞣eeSX6ް{!!0B.Wf8Ef٦&G. $I" $ld883rd&S|L[ԁ48-x଱Txb紿ݙ*9m\ 2 Q2", 7ʒ2C#:џ U#RM\Ib{Ɗc7y[yґ,,"wf)bYLPCAȘ&u6c 4D=4"ax&YcI9Hvŝo[O$I< 0. !ƪX!BT陁ynK{y#Dҕ]} SGJԀ,Ldր 0ono*QoG |Mxfwɜ?gE)ecm#4/ki4;J_zPi mt˞T,UFfsy3? $8yV9.zrNum3ڶ@ɫ+];; % -xm^s)9S$DH8߼ cm;! }/myV˽Ky/ Yr:ϐjamaaKy ӐxyC$a5K KCQ$A7A>Uzyi핁u׈yhI ɥxH8`e-܍O][ U1'iaTtd՝\@D-$e2%#y\hb ^AHO0u-<9AըyF<ĀeR}-$2!'a H5K ɐrl/iSHR%` ʝIX@<Ο0 " ٯA" `YҝxFiR7_ JV{U^4 LJdNk4gFP΂eg]Xa`f!jXh$gh]6RO^r1FŰHokf:n2FkRfqqrsE}|E: tru\6t"vrgwV/ڀO'ZNE!H+!Advz|g}ڧI IJ~G=Bdv)Lh} ũ^8 /JR(0Ýjrhz臂h舒h艢h芲hhhhhi i"i*2i:Bi8G5oX@=g:fi).)M.U@>Q6乆BĞm#yaB~ZS[{!nb!ۻbˢ/amڊd$jA:^e.:+Q:T*Up0B^>o׹h/ pU+RК#Q/;ԪDft8$\\]:jAg> {p{mIԝAQZ߶.f쩅o+9|OTصK>2>S~12 L"omКR!qg'X*j8dVd(H2 KT@t.$ZV#2r X)>)l;DMSyؖj+2[ֲ*5Kt.x"'M-DR ޲>/>N*/=#C26.HZEEHۚҺ14N))Y-sz3>S\ztHv(Yt]jm}/387)Wh,ZC*ŤFC]:^x{0÷#dbTnuNj h[o#])HӍW Wcl+1'W5JշAĐk\Ck*> )@9ܴO¡Q2?tGG6 "=GV [En1CEvI8Zo244\r 6 {ݬ'pZ!NJ{7 _Y!?y#|ɻL#9[p߹iNRGATG[_}=W2܎lѳ]V4V% x0mv r2vG>$z$=|?B ,20.@1Q0$zLC"(>A4, @p "1Q!ICbQ[.7Ce`(q{.Db!ш7QOB*0"@s| %-5=E5XMmu}5Z0ms\8;Хj%ު=8N83.Zrp>,dl>ƘP}ܔv  90 tX&>C;Y&X7oMcƥrE|D]@E ˲PEETRM>-``ob9Y@ՑT Z5#jW: +ڲm li\nśW^}X`…n8]ƍ?Ydʕ-_lfΝ=ZhҥMFZj֭][lڵmΜ[n޽}\pōG\r͝?]t/UǞ]vݽ^x͟G^zݿ_|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdEn gFo1GwG2H!$H#D2I%dI'2JOts1JK/%09K6ǶfL5dͷXqL2M:3HS=4PAݤ"lEL QB4RIQGf9'SOSQG%P*5uMSQKd5VYQAuVˤ'T[wW_eY O\D6Ye.MX)Zk Q*6SW%OXcHiE7]Q=-[#ܭ3te\u7_My8`5ug8ael\sobw>:sc?9dG&dOF9eWfe_9fgfo9gwg:h&hF:ifi:J0jJ0j,$4*`3x ŖmmԺjj/jO2`$#\@ mM*nG6H9QFVBD0 ej B.qٛZs. ʫ[̷}~MHwNx @HHzK=߫>CՐ|' JB >IʮǿerVG ikT;LTp@%C"J`FnwA 'A'XAGϘpN`-ֈKo14@-x$ń8D".J@qxc FB5QQ#g N#uX.#uh L 5iIHH k8 tAя@ExM,B8wEs n[DĐNw"lD'I>6 X#9-;#d8Lbmg@d2\J`PK0r jV2 z V.(`Y:ئ6kހ:TwsUن:D]1$ĉugcU4=(kEV9% 9]D٫ (@K"0cHJ]P8Ƅ mSWfcr;mdu.Lm2j&".]Եؗ MXGG&\@8ÁLҹ ›KIXEx㸻e{ 8YqX;ve-7,bH/{z F&on|)SЭ=tͼ(Foq^;6ѥ>vPq=w_o&f/-" _!3 {>wW]u{w|?xG|x7|%?yW|5yw}DuҗG}Uzַ}E/MAu{|0ۍ|J\j~OM~}w\o?~O hxs~1|@_ǿI$4DTdt $4DTdt |难"t |L+2&T$+%$* 8`̠B@{R+$CD[29 p4dj. z6ЀKC9B9B0 "74FA[!O3B+*{ @| R7\C67?cFY ]xƐhntƨjux"6v 6Zǃ4Dą ,-8<PBw<1=O>,hD`'$j<.70*RSʥ*O$ʥ]% C!i(4%K GRD{4`F[ 2tȺ2`r¨lGp`oU|D_Ph $!J?T', ^X?s2:r'M{#zJL ˤxBP-)2&:o'rG{ʮ̴yhMь 4M>JMDlMׄMՌ?M$MӼMM <ߜDB$3ʯKK>bKmNℭCk섇9e wH|Y9_϶N,,,HN$$=DP\PUPE y|Pd+%H/Q"y+/jdcQ=QkHQb[QݵQ}Q\iQ3$rWkq+(u#sK#1d2dI*1-8 B zDl.=Ǿ7 \լR)!۲K) %R%E#5F6G QKQ!%G-cJT S%Pe!%UHUT-L]MU3U[UOUPMFaUZe3V_EVMgtsYCt4)5e;-;,e04ZqM n,e2j4klSSzW2[Pu}LOKxV,UeI`ԇ=XZ]VX\mV`GMXH؉XUYmȔUٔ5uY0+xYEUٜ٘ٔYsY_YYY-ڜMZ ڜmYZ=ZmZ]ZYگZ٧ZKŁ|I$Q'z2'dKp=/*Wz* 4X9MG#|7CLH[Ry?u[ӂ[B߂1ڮګ-[Z}٢Uڰ ]]]m]u]]M]ӝ٭-[u٬]]}Y$H؊kHTe'w-B(O2%H105 -M,\WI^nO[\__S.+G``'TӺ3syPb ~4hlNVL=5a Bh(BaVôְ,M '4z^%xF *QNnd) Sŧ\_\~J  nXgTT+rC7H ڠ23AFLBMtCG+;7,4JRRC[Dxgf9dQ}il2jHVnRk *Up)gex`uV^miq %J3,Ȅ(LJ.!%:H"g3хSG%[xlmuhHN/rvZ졣lH,) ІHī;y ꪡ<5#^dvslšJ.dN> eRNIe6IFF%m fbIfff8zgen grIgvމgzg~ hJhh.h> iNJi^ini~ jJjjj kJkފk Y D1tg|k> , Hy!6EيDA߆}Tn u TWn;нKo[Ћnp /̰2HAh Lv[ *q&r*l!p,fx=\X!A36QH tByE7@7q@HbO#`̉ l ZF-vbs!3/G%,vߍwz||Lfl&6^]/ZncG0wK8xvzꭳzү^Hn{xNƒ|p7|!C;OB`7ks %-r֚orx|>Yٞ[Faj/j# uOc %`˓`qor;j, ?0+ /:Qal0z# _f <#c BB1>lS@>v.j_tfqo^+ipk$c2F}6%qG"!PB"+AB.ѐQ$D@Z4&=\"l"%"H9JT xaJUO+iʰR*%-6_rZ%~ \ s\.geĚ-Q_>3Tf7LnVi4˹Ko^|f0IL^әT4ùN{ sbz5ЌZH0qcgQwDn,!tF Bq7 ΐSSSשզ"`hd]8EUja3 6Q7|NkB)7'~CFǵZ(֑mc }4~}ƒh7"x8ү{r*;X/gj'K -bnsm["-+ WнDu[].}v"7w+]jwEz^w.w[_׽ mZCkp Kn%Pۿ&Pr,v`-7[bWEoE0o;c5onlb 85.c>% I+Rɓd+0Lr"& 3m5a-Z: ED!*f|kj#b>kTq Z{p'm:0M,|y|D/яr+}Loӕnۨi|HxYt1Mق+_0ꇳaƮ5<˹Whb 9OH6а_l~躯 ~Ȭҋo.yt/Hh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h$:2"#?B凄I!N(\SX7K[-_1 Pc2kȆmaj8ruhwpt|}#$!8{r8=HYE"=QxH ;8HX :(Nh#x|z8{~X aȅ({xzH҄!`DЍx!E H.ߘ!`@H;%I!^ `Q@' St a;!Dʏb)+gKh lj2h#}{Kj -{]~bҷfKۥ(kȗ:@F x 8:zW 101@˸ hRF݈] ,+{4/ H˽'h T [m ;;)Ki (+y۪+rA LIћ>Jv  !,#L%l')+-/ 1,3L5l79;=? @(#F} AO2 !qJ*WAP a0>q aӐP XaZ,Gb,s|́gRaʨe8L~LDžlbBxHLj FpGb8"P\ɜE< LXw`l1IZƙ˹"g ǣAAfq_qՙ| l ь<7 zбlv gsv~tήA i0L1 Id,_z4Pmyq̤CAкPDqLzP-sp q}#m/-C1}4 :WRl:}漕gmWF= _L ]kT HmքG91 S<%#mqlJk݀<o؉]Vu끽;~%0#0[Z}U{Bb :"FSVN ԃ|{ܝ/RxTX̕,.m嫐j$<05Ln`qJ*$@<7mƞͿͨrG WHr˩1Da梎LKqM 炨 L~$N^e(,r &MP>!>1aꀽ2@rh{un=&ɱpͰV +=7i.~͝  |0N l2Enq3nG MCy s`ɻ P +J@ޤʬ1K͜4_!شl}O=ց?^_!ɲ,` 9nތ|`_Ux(Hވy9ےD,{5 O 81oo%] 01Anܖ}pp_냮aD [. H!-{|_rk]!3@vp em@ E㑨H@f qNr%.KD;V?GAw o0MQm3SsRbI€(,!5aITc(u@"b!l 7h5KKyi"bڒ+; 7xTc5¼< 4y+ȁj=Pf {Jx)RpEJwqVCc](Qr = S: +-f? eO+naGqtp-`x \VN*Psd0"eUd)p%A뙶HdYX\튉#hCpY~fZeငY~f"Mwt,&9Do-^p&uRot睒ì*2ЁY+X9# >^2(&47,&Cg<e^Tӏ)#63͹]4$2] 78 dSBdraf/uYLs}+J6B/$j=p,I'ʮ)]љ)&tZĦj EƏBfTP5%•?^<r5#`D`6HMZDp) 3!B8v@b|J5Fpʔ:lPUrg&D7|-3L^LL^<تv5Yj' ┣/zFW *“k؀1},6„.8J*# (@Ly ҀR5* r0,3iR DsZP&& PJ 'D(ř쑁udZd{;I-mQ 6j4G 8xѢt9{5JE`e2q~zCUP-@]L`W%&A~^POΙϺ,i;b[4kzJQ*q,:BZ)~\8O ԃzs.-IU5"·l0e?H}r5̖=1b^ `+J-z2qT\æ0V-T{ ѕK"3VԓUź@TPc CJՎt!ZVhρ'Zh4u?x}Ib8NO׍Ff bF^hd1A^Kt{AY{ `]}a^vcG-mug!=Ǹ֝ha]_׻ݿ{X{ϸH)?e :ņ㑀xI_zӟWY>7qma_qy |R0~ooݷW|?꓾t1Oe/u_~w^>owl__$IG/#P'+/3P7;?CPGKOSPW[_cPgkosPw{Pe Nż!(L$aPK+@ 3`a8 , o20 E diF`0*PLF! NeN.ZQ/3Ahlq*@, **J!C)(Ďh»16+p])&fnqq" "r6rg(,Qŏe$6Z/c9acP b*Lt#g.!-ǀ "I^R҆P2%#.`@h%~rrτ" n@1f& ê!".`/!O aw. <" H$ rh./RxLR #cV 12s42;DsH3ɰ ׀"uR,L0ђ&.Gf + H,)8m0CD̦츸ʎ:=;i$t:S =!::=X)n],3h\4"LTVQ Bͮl?QfNH` bAP4a6[f<SJ>]~I$t%qMɘ)mSyCMX 㜂1G|I|G}IBkZTN}`>J7C?W(|h!^cGշ/,L3K(e3z5u4k(ool@[^5^J%n?(XGC*CQфba*5^D,mt2NO)6*7f2rHa0*X2}/Foh,AhyXqvd[52 CͮjUhmJK5yo=$5Y(=cH( ZBd9ϡ®' vB| x&֋w~r(@29q+I8[,-l˶J"Zr'ԌAeGwśIk5I,B  vN ]r:LѬ{2UO5:j٣-$ͦ+oסxVk2bˠ+ m@ Qh)o7(VʛZxLc*c%&|ܙexxR{B~|$ټ|HIE? {Af:֊I%< D`@أ;h^* JwF2:Fh;5mi:O @/γȘTc 9HcZh6:=IŶLWj{5)ZKD{48#AIډ`fN5 kKDZ}XLXP6H,TC" Y7,Eܾ,z3m2iDOQlyW /-$oL3ǂ=(tvteFؠf# ΙZeZ$l<-Fj cѳjʾ$>ͶĿ)G1ҤaChlP}&"St?>*}te!MUz޾yBq)ȗ3o-t3S_"R}vWoK'*tj[ f_ߑl@0"oJT 6C& ewTņ=f9j 1r!!SAG4-` 2&&%BN5P0iwL֢*|P"h@a wI"BJMQf#'1ՒHj]_GctWnZ)v`aceIjNJu~P-b&>Ԣl) E $\E.)d7X+KB*+3j>𦓟J"z-n֭ۧģ_'=\ bUr-7jFxA=g2Ճ%_Ec(Ma;M>Yn~ )FZUy憨!IlI{Z<5C!,EVIݧ cVDhʐ l2| >.]/WLH֪ ǺB)'`$ACKu2֘zAJcKȘj { B҃  lTpuu"#pMGzIHzFG}bXHm^<#9$s3L١RP 仿R,xV{A߃b 94_&Ny BWmVM$=r}gdfR%Ȃ̱1${;:2b t>gM>L_ ByH 2ULx,]%)&HqJڏ܀2 L%YCO!| (tu*˪좘dCnfR {So~Ns FB$},$"If+c/!n}ED%! $֡PiK /\bU &@ KbRgJ aVb7];W9D*.1JxprIu"*u=?*|3sI {<'n;}+hֻ=01cܼK=Xf3E, 5kb*@V*g)wdUf~b[ؿX/,tHť|LczdZݹ LdgbE1oʙ;ξHKfZ\PLMjndqW`rjٔk!P7jcE4LUJ)v\xrۉڿtKեd!c#й]zaѧVT;:L'+]>"j(`ّw0JJDژ~ 9P,\Lznm{헨fXg:df4m6bIїjVY=T΂Ϟ~1}$7N|iP%.ښ̡xX|[CyIPQ`Ɂ6ߏ -] X;@A@&qvJ͓_`'27:ۂjYBi96- 9LpN<_ YҢROM{O_fngn5ׄ8ggjxMTS_ڙ#3W W|͠ںRJ4{G\Ok3ZǮH4˧T?_qv92($;عϰCQc#ГG"@0TL ?;wH ްS |_/9AY`c<zDOAX8A͏8@A@F^kAVPpeVIКo` qQA `ViՔ -leh9́L .`m~CMQyE\d%}Uڹ9݂(7Nbaj M6Qa"B b,p\`aQս %bMtb,H[wK#e5݋)"]>!,"Q *p/XO~z /aBS@c 1b5=L׍A"&8xI c% !:[3>Z_6䟬܂a73cS dI)d>fHKհX  Hd#Oudl!Łf #.Tڮ\"LƤLebjAed%Ԥ2RTZO٤ YQe?fB;D,$NeS&ePBT:RpY%ZZ%[[%\ƥ\%]֥]%^^%__%``&aa&b&b.&c6c>&dFdN&eVe^&fffn&gvg~&hh&ii&jj&kk&ll&m֦m&nn&oo&pp'qq'r&r.'s6s>'tFtN'uVu^'vfvn'wvw~'xx'yy'zz'{{'|Ƨ|'}*L^D}6'<t4gonAࣶ0L AWާ.(F+g<ٵW6XC)͢.6(('ep;ءh[)X vlMFJ݀D(r{9fZ(ب8͜hfisg@fB@٭SB6%^BHIi 򉣖閦)ٝe>i檴-%ɜ ʭKV ` RնHSt1GՈF$JKc K!Ui垞eB L|)j?$ʣ'Zh* ":+f&`붾%AG;W[+`"bBV9$hO0ݖ+)&pkej@ʹ榐U؇[FYQo;)ڌbP-$](iʪ(nmVٙ@lQ)wŜ=۲E &{Jr-Zr|mieDjHV[ǾMKƫA4%>-^$VGj-z-Y ĈmB%[jƦϖ]]ib"T6--i#fbZIj.( %=erߵ%^kN.)EnHenB a9bcTX:º%eej/]M6RI: C-ӻ, YXa)\.ro̒m2.o&Vס60P;]X\)mvW&##^% +'͎Rpjm. 0 ^َ _:.EW7F B0 l HhF$ nzqZ0)he]! ;emXPM<(dosQJ}Rqp@qhJr?`(%Ke%&vn'rZ9R++:#Ҳ.$&!R[ZL 2Z)nmK f0%Ļ41[a k27w 3pW3]TcQn%shey{<3=OX qE@=@4qE2o?[,j{C?4DGD1s UDo4GwG4Ł 4I4# A4KK4LǴL4M״M4NN4OO4PP5QQ5R'R/5S7S?5TGvQI\ߙs.BU4CX;ld;}XkCu.IuZEI75% h0uY&ۡɆf(`oL4a1t]djQΑ2Iekpisl ;iWl ?2lojvmmg]j5=0hs# ?nvx6y'xy7oDw7o6dI=4~7jv9hh(}IBz(y;ɀx7|'x|@ x'*grpxQhVbq'vry d8$(ʸ8x'̌~x8{&g(RKq{7Xyx4y[@A zGnWy7"9ȸc9T<99H5L-kd_7F;9"03ZGGĴv^Sy7Kä?z:t:tU3:,Z46G#A;{2Gk]`TYv}bygCf>'/>ws?>GO>W_>go>w>臾>闾>ꧾ~Š9 A0оF~>cSbm7?|D؍X?WB?s/B_]s荿?gg[Bu!$GdRd6OhT:RWlVT_pX<>Z>lg>H<=E!?#=@BCļ=>BF""Lκ"=ITT;J$:%9C b墉  梆 o"mrk"vnqes cr.*AdDcC%NXE0AP͜:&!b APWRȒV"/!xz .\GY~[y摗@`s+ 1S"4T0,i^Cu5ъP-R"M!eՈCI!@ Dl@i*`"`,O!y`# /]t1IhS 6`VxАhc4 ֕L 쳉Tx"-ECV\s&C@YCdg ى74[C&h0\ w^L QLw3%P T,4ᰮ fcB Δ#'˅0W@M g[EI(m 2XDPRg=VHp uUeGdeYV,$#sF+l*Z36^ $(?:~HApؐ>$~94iPxGl> $RfZSZ|#)Ԩ<=I&UKe*bp bJRj|Ơ#ȧ-BG2N"r@ XPpRCU.ʣ_4"|*3 p< $ .Z>31eh4$9ంY 6 ,@wt/@V5a´K % RL@f-@;~6Umo}[ l_ju' ǒ+$ fFfw&C^cݐ4W+*r<9 Q-|Uhċ9+eh ~_B%P fp``Uy3۠d''kބ93u@n[|e先;# d:/L> `q&m~J =hYc&*R gn|a5!|479 gqρjS6\H­6ѿ%e-}iLyi0./kr- 5GLSAfu]݀W!Zzsx;Nb\#'yM~r\+gy]r\3ym~s\;y}s]C'zэ~t']KgzӝtG]Szխ~ug][z׽u]c'{~v]kg{v]s{NXj}vBTKh^'| /t{0cyЀ)9i)3&A&'|#`! )(;A%\B&lBCuaAЗ(~@"} ܞa'/SqasB4ԒwJ1 r2'1i-$ MCC6<+a3$<LN?:̉ #CR0?+DN,D E*$G4HH cOE[E\47R+;D8qE^EbxLķxZChFj1>b|RV}?2hsFLk'gtvǷ)y=^t-A<ɀ(y3G(PA,y,X0LHy,٪@ )24Hm`-=’'зB,I5Q2l[FxPH=N)hK, G E )|35Q@L  "RT1MMN} @4LwB<%F d2CFbp8HInZ>E ')ÀZys`]5fmlR<HCI<>ۇF{TiMQ-USm܎q\R>TjrK dUCHytMm4]?C(t<UqʲVsY\P#8SLTw4|QU0:pAᶇD؎Y E) @}@ AFb/Us u`ɮy萚ZeuŽÀ ZyɥRuuA«e1J]d1Jנ}%â9UyA}AmBEnWT?Zz$ \=3K(= H3XHQRTpI %vB'0ׁӗ)!ʑ9D=JڬvZki_ߵ95'BpdemyQ2UXUٍ\Gu$3P}$nY,,t>^/0Z&3ǀKO5h~k~*[ʇvf$_j# ⏖9OVgLQX(Ljci?kZwZGrުQVŝX'ŝN3Rm '&^.1l[ =~c4ўTvꘋx`0!mz +FP"EL-"BϞ¡ z(()~76+`^eZߧ~g*uC~} v L$UR :=_iXXu 1&]5-ۚlGIM H8ndj$ /+nҭ8unl:3!Hf6ȫejXnlDҖ3f9p/Pݜٻn~Мnnk|pfl9"r*e*+0PXڦE/oheFcL{gh!ζH`?W;BXdg +O8b溸W-p^ &,i2m2 Yqfʠ]7uGnH9^IwhjflWLtQ8bȬ"OOքA[vhq4ގQk+;ר%RZ>r#J ,P <XP s% bT >:.EZ

@~ѕ-ksNz0 ɩ H+@(\4P PtKDZW{SrMt3a|"3A$ +{'fO"x~$ D%$Ȁ#j!!,W, w dib,kl4}:*. YSƘA'%J Т^\6\Isjp m7[u\ \ \\PP \q}^\!!,u  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!! ,  dh,h+ðүn1'Pr0N Z9=^%7E!rxDD!Ix7 MOzk~@r"L|bsajyl#fDMK!! ,  dh,h+ðүn1'Pta7ũ~>K!!,  dh,h+ðү*HC ` ,JJ:<81#xDa!r(M,EiZ$hr{W#'BzS"'UgMVU:.ryY8ļƹ/0!! ,  $h쨾h°ү]n1O1 8Fᡉ8~DAJTZEHj1RiBZ4p`%=MGcl~N'm'D %O@'o#jyBG!!,  $h쨾i´Ұ]n%Q$x $sRDB%H=XqR3SW肯Lwt.RQzU{' @$' ay(g$lqd=>:<A>>R!! ,  dh,h+ðүn1'P$pDChd"*\ޥvrʐX5p$lLe8T) .Zc_)9% (r@6'Os~%\yS}{'\/H!! , c d hf;q=u|9=L QD-OgSJUњM^WF l8 \[wҌE~Q \[ZC?S!!, \I+8km`ya8v%xZV-~16-ն /#}[cƌMeHrOk {ՖxL.#b_{<1ׅRZ;5!,+  di@,kl@w-_|B"PILL"*Vt鞾`&{q,l.~?BU$ D}_pdkYU%*/eo%~$* u# 0n^#$N1tn J"6*S1XDM1N  Z6b-2_+UB/h@ @` ("pT!,1+  di@,kl4}r 5A#'p)Hh`ԘU3a#-C͂( uf'a|c# ! ! ,N+  diA$+pγx= RL1,iE Ҍ=iw  _.|^ ˌ`m`*u^a_ZcYacd*A]b[`U")"* tW$2s"* O76 Ó0qe5E: Ƽ׈O!! ,j  dh,h+ðү*{P !Hh<&C`6K0$7.r)G˗kxAѩq}l|[~#'^L rz/=4{'G:\jy4b5!! ,y:  dilp,nxN۶üoX Jq\@M@!! ,  $h쨾h°ү]n1O1 8 qD?"A˸GJmQ*iqyTPw88vMG ( uw4#4g$D^_N K/r )N 3KIF>/=Z@!! ,:  dilp,nxN۶üoX t H2r sAE۪ I`.HM0،I !T aNt6&Q.FQ+"- ,Ew\ p+Y_M#f+]+ zf%s\οgU#(;tخxp.>b),Ƣˆ>D0Ez-*(H&1}-f!ptP/",`IX֥5!$&P f?xss5BH4Ӧ)r!,,  dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.zn|N~ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKw˷߿ LÈ91: rD0+̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8N xd p=o 2AX_+g?=`ndA| q@hC8y EPA`.8. xz"2i ;I ɘAn/4\&b]H0P:dE,MldI0TIN@<p;/@-ΔLXd*>'be+CI`N2hކh)P|291Uċ3o@n5 X/dA*krƠ`0KXv`'g0DKK}:^XZI`c$X`$Pu%XцPL'4B,&r \ 7Ht) 1ȀM' hA\Rd Kr"1SQoCd/5wе֫\گKj.y(MФG#*ͼNW꭮^EX)V!C̡X }9+`oH4R8xL }0R|VNpk$w'qUP ^Iv,iInݍOMUz]_nAاG3v5r#H2nJ>uE:+<w=ԑd9Peu5X|Rν]6e6y@451| kov 63MocwwsRz. T=/- ,{Wd {.z&ziڋQumOўIlAwn JӉ[F E㩊j]+ֻOo* Rk @2i&gF 7yvwjJ]/cua]"7R0@U^&] hOV+LZYv5}u@H5mwO0HGM&\7_׃ǀSRKRX|[U}`@}U?9EU&_IgvNuv߅<}zU~@wgl(pf6.Uy'8.kӇ(\{TXfy`87g`V\TM#oӇŇ{NyU9e[Gt W? 6s~j}t֔8P9 k[@U~q)PiD٩5I9 ,{cAߩHJLڤNPR:TZVzXZ\ڥ^`ER*> 7s&}7߲bēfzD^]@?ouzxꟈ N@৪x> =H|z:3;.GvM=r*=9Ҧ?e=bvirnH5R3`SBC>c%fAut#))puF@ZiYO%=iwb*H)wDTH#窙y'bxC9͇DDO@VEfEHq$FRJC<;spMrbG7> Ey|~ԯwU{tcZtzh+pjU3\o{93A>Z.ieK?J^峈BTa0.:ճò!JZxNmed;:PeEڲ\NˌT:H蝡Xwz RAPEQ.ЅeQv-bHIDž|R}{[}3IDhVWA Kwc zG%>Ҁ-*bB zĂ%ӻS*wH%֫}xݵ?xжGIC<;ڵD2ض)O|fm pU=7.Ղ(9푾-~ ~ ~)˚ٚ,g޼bwy)tq ұxޏzӊNL㵧 !XhY'8\*(PZܟA#N%tkV(P@XT ϨVE> v1`=I;kNOG 瑝h=;nMN9v PyƔQO)JAF]n'Uٕk.}V,5ꤛk7QLJ~Rni:ł(n)#@ ׇ X^y4T pɧ4 f83w((Reg~gꜤ8IX@ i& -:lP "?$_&(*,.0k4O'Z2_ 49? ;?YȖP> HDCT7_pE^: s;5pC=<*LEU=ۓ!S==zrZ>hAGEDM\0m?2 n:coe}|{ޮ{ֆ˽Y}@#Vl~ =ˎ fʮ)6NCDyily2AP:*wZA"D @)`UTVh0W#4-ID=5b󵸰"Q, =@ARVZ^bfjnrvz~ʊƔ(0eڠ$4A.8"8&Vn" >/cƊ27~ि"oZ"0lL(̚pkyp [dwK3ݴO_QhЉR7-KG&g#o<jqmlmwǚsT*=Sd0Vn(sZp ٬FGP#3\PXF9,7裓^ ]޺!!㞻޻)w_Ƿh+CS_cs߽߃_磟߾_J߿p32{V hzf,X & P Y@|0x-P*3n\fR`W4V!! kX#rM)%SH,~9"1JtEV( "%,1Zܢ)Bޔ -q1jDbڒhR"3tp .h"Hm@0="V(I)F (O x9~L:Sltf#٘`Tw32?`K&Q&&@#T eRY#@LC 8ۉĬ0O2VM,Z(83V~ La00ExS7 *TJ" }3~)B31)Zp C) q')Y)x s#$6ӟ"ϔ L*QYaA, ,-+^J+E]7qfD[stb*ٹll"nG/j#SU) qdrJkQt뺚Jf5K5C$ VIMaW4H,%h 1$,iKkQNQZCQOAQջⲤC%Vu".qCFmΩ s:_b"ܚ D6r -.y4zU(MesRWB U5NUa,h#Xc0I֤7}zRE\ /z2Xzr?j asgȯl'WɥQ32JId1| F"Ύ[051lnWI*XWYRRX+=+ kl;OsS礌sHg :x^4 iђLKc:Ӛ4;O:Ԣ5KmS:ժ^5[W:ֲ5km[:׺޵(]^[z$4 %Q k dCP AV.Hh  67K|Df2n{agz(MVsݞN'?߽;;f 1!$e !!p<|AĚuW\v **.Cp 9)<{+!yF5xA5d-&0rno0r̦hc I w#$-պȑbP: ,Yg|$8;92?Ym@y|dUY.o5#IOl3;螵.Cc~t}2Hi/Bcj+M( @9Mg@9o؋㽢#ש7>9$tz×= >8?M[%Y\Q ^Tt5:Ma=Q1փ-˅n!JB=a &jY>UeV{]%v~ = hMnE' k CïE ݨqw%X_)"#"!"N 7BH 3їJBQ`Dc Wc2,c36&,QD@Sa I"PBT˭˜KP(0$˹1G*K<bAc &ib!<yeŒ rU "H %d**G4$ea;lq jH Z)ZMGkYD7hPX48`C6Ze_Ι,e` `faa"fb*b2fc:cBfdJdRfeZebffjfrfgzgfhh&gRci&]'fk(k&I 1lf>fnfo 'pq*%r:g5sJ'EtZUujgevzEXP~gyVA TyX  KNg{'aAǍ}0Ć.gј*(Y҂:(i >Sbhjrhz臂h舒h艢h芲h"ԑ'(a dK菆TD)zivᥓJiENtaZOM<%YB]iV`il* W*Ύt:J(*<|R :|H7R hj* zj4觊D訚t.ꪲjjjj\j>l+DXs벞\2&AFR`Vkq΂f빎뺮&뼦 ګ( xk"ͤJk}, kbk(kэ+zt$(Œk]hzȊ$lɚɢlʪʲl˺llڬp,,%+ (M[ܬ_2z\S~;!&)ce-(@$BM-ՖbҲ@Ʀ-N؊ Wf"ۖBڽGԁҕiY5 V%1%Ei\U}{InYp;>hёVvFcsD̞aNF-Pjs0/WYJ).ՠe0oTnt\nI֘ |A`U&kMAݦJa[G;o2BFػĩ/#2o#-}:c0"gCH.,U*10Z[k;r$d/)_r}HGR"{`T-R3# B0$,qpޚBGȻqD/ o랯'"  .L%nE"wMFיJ8b]#"\@w=NW׵&^+ktUo xK ]̷(L+)g^qj%D`5s*aaW4/n+J-23sX#^2kΝ76:u&\₳ H.ť(%|N7`vA/NlA${xt;`b((V4aRnFwtHHtIItJJktU?W74N*uPP5@RWPSIZ(V*uV_DWJuYY5ZciO5W\k~u4%ߵb H_v` `vaa#vb+b3vc;cCvdKdSve[ecvfkfsvg{gSh ivP6iuڝljfkxt6mfoDp3?7p5o+r3ws;=w1EL7uvWww{wwxxwyywz[ݱw{{w||w}}w~~w8ux#x+3x;KSx[cxkxkx{x8xw:p7P5dx@$ $rxU7Oے{77h炶yAxEa7]UzD[9 Aw Nؐ9#KS99}㛌x!dp|?:OÑW޶7R{Gz| {炜φ8|CxtDA#L37y˷z}{9~z~O_*c;Hn2;nly]Lxc;}2?Y<{bolKX >d!a.6iēD@z ǮR{#$ Xh>\Xp|A  +ZδC/o.v [1sMADm'S$`Jq*ᓚ5:@4| "6<ˢg }kI]3}uQRDmt|LeKRϜ>8KχGFȹoC>|w{E"_~Hb+qg ]Wҳ+ã7_݄ln1;;=H@9fyy6b*ӦİcorBT |e @II@Ij \ʈXbn7U!d1IJwB&W)9IYiy *:JZjzJȺTh2#8RKwZgB02SW+r #{hRET8vmkpvLOP `(A bpXbWIQ1ĉ+Z1ƍ;W$ MZ$HJ :}RA@>;PGSִ|J_.x<1`' a/ށt&4i3g >8Ō;F5G5گ .H9*,_hY">G)FpjH(420IlR]E87"6e&>Y5mmdwޭۻ?'SV@ %Bg~퇜` xWntaWHx5WVAj! xaѣi7O`qe0,4gxeRNIeVVM}LH4 euy S@ ̓TY((ŝQҐO 8^xAyZH] @hSA` dOg]+W kJ+RY4|*傉d=Q뢅9u g 7!jz5myZX-nymq6*$t&[Ami WC6m!z…廭 pLp(zB7)(M_S ؃˥鰎( K$?beu?\ XF_2@lg-g22Y\s.Jي,]J5gWRpZouU$Ig2,\0gQE4P&6^egvr|0gâ60AY-,Se8R1߇Sx蹒n0vlWm8Z>!ͭ'{$@ErCYE[z^/|??؏p-ȮF>gţ1)NHZՊ }0pdz #cÍLޟy{=*iP<7(T9 jp&&Y-~D^WR ;ڠv9>߅2:xA!tb񣥩F$$CK шATB).^-H' )STX ?@ Gq|D ($@VAq‘@.ȊDnY $A" h'AbRs'}SBĚ_ Xʒ1-o [Rp { LrP̤ӖL3 W F8ljst jR~h(r^ OWus=!M`3S'O9{-A{*t ^ шJT/&aH, jWhKIɨHg =cH ,D;Z E`3#@Gջ[l@#И Fp`.s/P0rV2G\0-G5k`{2ED 2-9d܎[ wF9(^2K?|.mtȿ= q`Q?Д 6Q3ZHx 8蕁CqFQ.)]WVfoG5gXţbI0$;|ŵ|gdDy@s  Zb9z~9%`j^`v&fdO}9eV2y$)a3ud@ߥf:!!S\ #HXP&S|DŧX\$B?,*bc BQC,!9&d;ɘ$mx$\9IQ9\1.hjH)$b>1/CdٸAM k)xH`||f1hm?H-ii4N%`vjVқvaqLP!#p1`\UQ5$N #jN;B@-g[;F =F+@ bC1 KE>ljF`Hb0C=oKEpQ=l3* s'F>]=}HX'xyIa;!1桟"YS<ym=X@LU $H7!VP`.(Dx4ec!@LJkqHB2jRc+x'ʹғ5ե"\Z2ٔZA{I/5`UOXӀA +Eǭ^hc#V7l# ZGR1 8dz'.ɜ[kpTfh)tu\;ۋn ^#sDc;# Q{5V3L+lHt $I/?!#@5+;-oު-ÅrkiePEoP˦lQMM8)HIhDmxY~!9/|;r ghV"aKH,`YO) c! 5Y~F5r (OBJ{VKJQ:o:2K-5@8u88 C|U"r\=*/'` #9Д 2X}jG9Lep@%VE[ r3D9M64.֓_'Y"<}3lg\6WB*S{G, nKMPO7ӓm)9{olu|K a9w阯,ŧn6lM݅P8&݊!g[ {k-iMϠ;~rS i2Ӆ;LV m-en㏇[Ӯ򮓀 %+-lG>oJp7gO]R~jK>B+ nV lIIQ`@+ξq%tzb|= hss''zc;|nGbt}%Ht~NLmZU$%~B|4zKw( D,Ld rG"+"F8U S.bs' "#Kl78WulkFXtm1۷$b!(:.%'GYP&H=:BP0)Zze&&nq. VXK~^7$gSCW`H)S@a:RMjB`C4g9qFrLh6T6,!S:!CkYe0,:G{Zm<$7E~Sov$j M`AnSV n}&%`.ThGo+1r/ya)ᆌ/;H˜ՁORqHw}In.D)px gveǐC琕tz_P\ c7 IBɧ}VzXjdh#yG~ 1/9F"yC&i<Q1hc ٔN Q6 )Si &|c(Lnhٖn) 6RF͂zWs |D~_([ޒxo1v٘7Y_I;zey)s0}6+~阨ڠ"xfG0v*9\MI9yșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ::T jQTae '6 #PiY!ڢ.@loI A0: %E[B[vArUS"cLNsp'J`RaHUPqΑtaRQGӤ;zjH$2bIק c @YrV{g8Eh$ J swCwfZCp{Jt'%:(ڪ=״zz-êūd:^F$W꫰ڬ *UOBj*`r4}4Lo414'* e=vEa).S^1XoXi;Z1c1Y*:2S0RoÙ:HBZg@Zʬ,;hRJ20%બ=h:<+QDHFJ #K"'jVT[[]K a_ 9c[ZOdglhK/m;O1HbqU1j^dDp<#JT*PPD!b6gtg0kxomp[m 3oȇ6Ģ|Uopt˷^˺JSkWuw{; [{Qۼ͛["$B˽˽.[PK{"+ kkE+K<˽˿ `wELMJ`v=_eaq+` zj V[׋͛6 BF|بwЭʇfH0ʈZqOѣ+2.!WI ,\|߬ 8m|=<=;LӽL a|,ЌET;-a]ͼ˻K h]fW\+ۺkM'uv7oiׯ;+.}$e[$SW}hlD8D9 푙qim3,J%Mؿ׃=ݭ- gZ'}j+ش{-M;Ytװ ]m ޯ:pN4]džz=2ٛt ҝ-ݺǍɭ {>Ᏽ5~376"nơ'^,,N-N6/n#*>:1A9=B>Fl Uu?oTMw&sgԘo޳>Z7j4oG=wdR^WW2.~芾N閞~G7~✎^YN~l|$$0m,oyd.$HFtk >4ׄB~}&숵n$̓~۹/Zʪ$Z> PSBCkXHD''n#O G1Nq€9#񴖎j)횈ϩhgp-(# ו@ǔ#A9)c|GuIO/19-)yOA`b?d_fhjlnp0LqO v {_}?_?_ `roN^ a,Gm*|OACo Y`)咺ɷo ? d EO +ӯ nϯ|c8ʔҹ=РrsخQ"߿c:) 0I 0M H4Xa~a\6C^E7,|c0     (.(GH4.628]Oq%jrސ@Dv,m`gØ I/ӱڛ13 اM $~ XPWDp03死׏ o #35! RTWC8h`dR8 vI рÊȱj:5q,Z-B5F_s MV}.Lc>K۴]xƑC(Ċ$%SK̽dLBҗL/J buq H΀sV}jCxj9I ^R^{_XP;xa&CX]0Xih]Z &=Y9LU>  qf}+B}MZ!jQ,ۄG=xͼ$CPhP `ιP= ̺60(K.!p0.ĭ6$7<7 ;nctː-:;/"DL ^.$O~'r9@sQErjmުQ,{D2僓\8a@1k,HaQˈ)30u$Ra #U ֢F =MP!R. ;&S/W6eEg_ QhG=W#\&/ 4U47?E5.ر'% s3VzO`^c#Hv-P6ub""ӁMM<C Psa} ݤmQV\$1=1"|=,ﲵW%{Sw9fFLe$0t{Bq-S 2E4%JKflFLqCoĕF#hƉ8&_([ #9IHdh؈|ČlLa; ե4lf2%25)\}ES` . CʘO]N_"4Pe^lCѠٴCJ&8.d҈M&E㨦5J/^H.Bc9մY`FAfJ0%bҠ&!OR4C )si"5 ] k$g93,nmDxNjehETojij5Dֹ/k\u"o=[Z5$tj`5wn-KAAD^Pꏻ`,ȡ{߬gZm`JYlM)[)i ?֡l$^O%׵+V2a4 keЊlol, r) +Zn[27P1Mt 2;8!?FrV+!LF[>I#eN8m%kvq5wH,2WVGSKHbuեQ08]@reY;a X L3v$/5Eg 8P].|;厃c`HjȽZ[GVGL90ɛ<}tZe2=5set) G0-qZfNeI{9%x ^ y ١朸ꋎn;aU+z*> ^ SE v&gWX샡k jBj6t5&v')N2ZtiUyiCm~ܟ:b2-4Bgd.HO~;6.J!po ^OW۩LLe&4|-p_z֫0oCTJ۶ڴwWjKƢmR<9#.*e8XmcvV"m8![˕=%cY[(u44z O~su{iNI僁X]-eq`.?]z<51̭ FwqڥN)rt /ӨK]֌׷;\ޥ5_ijEe7a,^jx$Q ̼l"Oeu}tm[J֗u{T8\fқz}A5FVɁd|Ne.*06'~TV L̈]ʤ@>d:.F)B0ofApbEy"p .(`/zd.(n&8BX'`*ncf~x-A IXn09t O3N% }߂PJ?@/ 6B<5'ϋ0Av*P X^if~S(,@dɁ0NJ!P tlj^&0P1Leʼ:+j 6ĢO%o0aB $Roe$˩iN%( G,m0@wNZfwnQhopԐOńO( 0HDA e+)QM /*ѮJ!f!1L c##L q.P!(8!B?px##-$qr"iˁ2>&)%_mrTM0#Xygsq_~-Q~FR,F8.2_WdN-p N*+2Pͧ:22:| 3q 7(2"}A^ r$d 4"#u&q 2fL2p(KZ7.gL}T |-Io-MN1訿+ !R x8{ӳƦ n=>WB?a!QttoeAA%t A*?q9d !*±!+[BTA51$T4@4G%EGyG}4-.GSs ~/HeHe8{SDytnIG!]ʧ& 54KAKK9e .I_TLLIYFmԔtE'PxxD MTM'4P U "^b7L'uN nN4arI|V&34RI5RTQub RN VuZU5BSgUSFUpS4.7p5WXX5YuY)/Y5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^5_u___6`v` ` `Ukm3A bIbѲ< H-bc+Q6dEvZqlX/DnGec*uT8E2j_ezF6gu6YmLϽ"TT IA 6iug6j gJ;a&M5b,3>KkEilKe_n12KkN_6mvo!?. X_*9xB<{7@\sEă5@#M~3Hbkwp )l#JrCW4'dGFc ND@X(i$ uF4DHwU<O3rs-8.rR$yNO,typE7yätFzC;`z-pmc}_6y.yG&,QS cs kBhwf SU*rQ(wOg4O#8|΁7UۀRN\X &LZ U>Q7x$Ri2eiqN < |$C8"1Іs$Q$$exj#$L.$dse ~!g&,098iK^n$L8qB!&t-9V<0 p׌ƎI9,ytv(afꆸ]A׋'Xkm(''2 b.^p⤾g4 2)g8cӇngpBn(ل8f㎎Ḱ)y| nNRp3y* {}>JI块/Ǘ^8OHt:-7ωxoYрOk )-GEeV"(@1*qYV9P$Wtu@QMxIv)ov=v/o Tup̆k!fG%jQr5m|C3{ų]=k=>δn ħtqZ#L:(*e5_;[?3%yI-41V62dv,6 ȖB92@ɡ"Nʟ89ߙ[w€D!# Nr1SB3>(py ,y8E .+̺{e}Y-%NA]$-9 a 6&mVtr`d%:uŅ) #',Xd4#F+#BS2)f;84;]W׎/HM*4l{s߷ ~2K D]"~IܭQ4t/b̨q#ǎ? )r1H3 %KY*)pÙmdnY`'=yVdY%ѢF"Mt)ӦNO)[TSEVC t+ qնn+w.ݺvBJ`la-Z$Mx1ƎC, }FSy<ҦONzuFL]z6ڶoέ{7޾.|.ď#O|9ΟC.}:֯cϮ};޿/~<ϣO~=Ï/>} b ^#O/$/V 2JCQ7܂BV"-=4aK2٤v%:K)j-fC`yc_&k8 HSX@Z?N $j`*"{A& DZh)0APe\( FA񩗟l6LD2:p*i:!1"ǕB9e.*ګbŚdif EUqaECKg9ŖC'}JŊrK$y,.S7:९TZob"p 2#hL7Nm:Q 8":Tڛ^KW%oA]V.X(N")JJ%DBm?d&ʊx&Am m-9mJfweI-MQ XֲQCɤV-G2,;QǞ$;#.Y"s@A֡6kz9:l"AXY;~=Fp88 ;HuVd`!aCҗ ڝYyl[H餒_r{㟿>6 XG旄C|]~q0 s(.u 1&YwM{V3R"d?0V4iSԶpym1,@3t FڞmY+b1WlB%`ef02Ij\#ŸE y[R :}QTѐ>>1H;,XP p1teG< adYORFK&')JUM ecd ҖZ㌴,iƋb.}l0wh$`kZA&7Cd8Bs  TkJ%Dr<-]s<)y3 a:i%IJX6jROoh}kɕ ,qzl`WLE UCO$P2Ԓ EK_j&R|oPL48+nD$Tt0EjUFAlFOK}p'KUkqI%*HH> Av16CKF]5ύZT7&{XS7#$x)jCVʡ8VX N,rHǁ,b]QҶ,o{{iC!}Re|Ɠㅀ $-=b7*:yĴvk^qsDkׁxp -+e$j#IXd2Ze3 ``c8C-\gô؆c*(ŊIbݼX21kl7(81{9B2l##9J^2'C9e~\*-\,h2mn #u-f39k2?|3;_B3 3qǀ0Jfq* ~::Ԣ 'iA֭Lyg`PzԲS~t ?@XJgPL}݂1 34*b6*L}6-[Nꗣ.llwNx '`u4nFE\U }Mz4\vk"З$&7Wsn [[m.VWхH "r;g<}әK*XO-+%)q`̐XC/'mYNkVI9 ܋S}{ڰUOP;^򇟙{W˯dG"t-S 'ΧYh *dO^1QJ܃|aEWSAL[՟հ-Кi_N m^0S 9ˍ ^@`Y[۹[CەL` &`͎X<ygz"h,'gq Aa(@}gP,@}bg"'}hJ%hq''g gTgThרhB*h:u꧃pJ'r'"hC4Jt89,: )PI'd p aJ~Oif^gg9i&qJE}A̔j~cռ!c-,YE`ߞ>fAR*p'(*0Q¨~`3 )I R }*( %ܣtE #DQO`HL5ꍆ+@74N:\p>ɠ*j漒:L4>^]4"!-#@ S~+ckF(+"68paT)*,>])@Li6]‚Ħ.}.~zN*@ l|+ћ Q[Q~BDT(*&)Fެ'βIЦNA5/he_Qjmc.ll^'2um nZ'E-*`O}ّW<៏  XNNnA(Rh7:,h*bCmnB&JP+} av3,/馥jʫb"nJ6Cؠ,x:^./X`^=/^qk$z'|֯>/מ)v,vhƬkK@4/"eh,b.TT+5"FxAP@}"$.4 |n0X{@ kkF/24z̡Y2:aq NgzjFL/P [B"!"24q-p@И-0VtY!kՉ%;ʁa%m?2r/!{z!oŞigVfDi/XV`.FY5j!n^u[%Bi(/۵hii__E sGC))ϰJ"`aLvN8ۤ$W`ޕJcaHH$p*6Y"D( BJ׈TҵߠI :6`r\3aۧR[(t. єZ1 aHjW1\hlp׃H\]^~^%ʒuV+$$@SuP8VJʦ%hbOc N;dӉ[I%VYXҡK# xiy+}_؝TB&)qT@Lͷlkf}Ƶ8(9BSȜ>XLn`x Mȍ(o)A]C+!cN'Q94&۹#/Bz;:Gz'3+?_w/q"-W zE">,ժx ̸N{yzՉ,!tӚrlh[:KO{o?{εKzk;;;cz{;* I_(xK_pW;#ܻCQw;|ݦ]|V%,x'xG>ygy矇>zv<UzL |lt,XE秿jnt)F 7@2&(p6>m'T&π`e@q 6FA sDa UHO" L!2)!p (`2l pdX;1D$b^դ$b: v D졚X qDhl21'Dx:P@?@L0#9hDd"dY4 Hc>SY+:d8@**pJx+NTJ%?)IdѪU"ت.IVuQ@$#Ů20vJR&@fxY󊮌@Fe& 38ro"0 IXb7y,mb{ԣtMkVn8a+W%;Y)-_ j "U l `PiOR,3=G?sn{Wd`5 R| Ӛ]t h'Pŗ*q*bJnvkwBOrkV2C(w+S5/4]U1c~3Yp(G] ev_6S4Srs'ISmÑ֝$y} CKE [ Og@R,d {A2q ؁ >G6]PؽKXpbC\=5lk],A'w!f^,7>]GXJu: w3%3iiUZ65s\K5 by=vf_#Y.|h95qU"ԧ aq2] VYy߉Ὢծ/ӧ`f8,bd7M:ìTUǧY=:)R~vw$ZȉeVRZIfM4$";IKP($`85$$g&\I/o7ÑX?rI h'3eV@h];QtҙwUN.V%_ ]U}re8D0J_M^t`gy3(_yֵ*υ&!"Ngtd ނ}f`ލO'A"aiZ7Mmvބȸu->y{w6uLl<ߡ}$B#7L $U;bveg|uo:5,Ds}ޏ˴7P|o$?}r,}w?G6?~Gտ~?| ˊT0X@ br=6Wس"@Ÿ[ < 4 *@HtΫ@T<Lr㳕i%,!17(zA@ ZbA8q BAaDb`)$ Cx,`*$',6JrC +,B0D,DJ:;;434BLDX8t!,Id3 %@iGAiMD:AI\D6L:EL%C W(KFDҹAE ^@`ԬMEa^FS<WHG9 qGTAw\GxHoAuFD,It kdI<ɗ|I:vILI\EIbtj DI,JgLt\b:JCUʡ GǦT5a|Jwʐʘư\Ix Y',H\B,OE9ZHY$ǒKBHtHtH: KzDJ_$˞L<˛̜̝ʄJJJ\ CДL˪nׄ@ٜCˢ̆| MMڼMDD D$DN4ۤN۔MNlO,OK9OrT)+l9HSyMBO=UqQBQ-US%cUeUTeURMUPUSYQW-Y U`UPYU\EcuUSO=VUMX]Vh_UZfiՓS(MTt7#SHE:hVsWT1US WB}HsSBLS|1 ŖsjgւlVdEXlTm=Մ}؅UT-=-=X%VmՆ%؁UkV-YUeVuVU ̙LO4MDԜЫYr٨ٟK,KdY̞Op А˻TB]ˑדP>Slݐ@UW\T=v2݋c]J׷=S)]צ9H,FWW9.;VC=]E>"SNA&eZza(^TUTBYFje[R]_F a&bFdUfvghijklmnopq&r6s* u^g8" xUB{@}g0 d4|&;@~@Y8ShhhĸhhegKgiiwh6vi:hi难}9if!`gi(j>j^Pj~j>jv^ugipViEhA<~@2q鑆[Xh@jNj9l&뒘j>k6j3lƏöPF눖:.Hn >~inu>lm.9mmlgh^~m8n뮃жnЫ7a'w½0mvo0jbyn^m..npn.~'xp~vn'l&pokN)PfqĸMT :jʮq:S&nqo9hlgxlolg.r:p%߱F0o2[dg9pTqg$g~fnVmAorsH6-'?n +5ۯ"s3t4Ƙ`;n-:q7#oG AZH^pg+q}t<*aE/Nv~=? >kp;uwulwgm8qVwun>j6w_Gt'G[Wt&u_Jࠥb10hGx s_2w#s9\w{O7&~SnxS'9jDGnmXuz)W*7u P3!{hUps6zžx%lbrx7gph9l/Gw7NӰA6`Aug{gmϏWyxlvqW_m7SXn@hп|F L:8ӏɑ oguyG͗{͞ql7tQ{lzgVPh/'O{  L#( ]$=) JZ4 6~86We5~hp 5AwpiQiyᰨ5*:JZjz +;K[k{;갰ŷ L6(Wl<\zN^n~ ߴr>ϝ <0… :lψ[Dl#bK2#Wȑ$K<2ʕ,*䚗;v)Nf˝<{ 4С,J'{ ;DZ5֭\z 6رd˚=6ڵlۺ} 7ܹtڽ7޽| 8 >8Ō;~ 9ɔ+[9͜;{LJÃѣBF` jk,$ ٴkΐ!v* TYdZ2LI;@RH@ԣ?> TΪ(SۯoN&dp-A~ H` Ş{X@+P+@2DIxnaT"gDA(bHT 'ƃ/.8_`aF$/ !!{=Ēc+ @B" dbI( `\nV2qFXWb}Kvb|ٞ&Zf ~qp{}ZY"#[Lr&xN+ ~f1@0s> 4Ont"i1 `4)3uZk̑%lJ*DX $)z vMz:cå[p:I^6&2)2`qMyA4`7MArt8rL9{@6#ˎ{{|O||/|?}OO}_}o}~O~柏~ꯏ9 ^ji]0# \M<r, v0@_$0q+@S\kҒ=+<%iBp,Jhv s(M9䄃 ZC PAM7\)c)GH"q"0oMI-e! ?QsaJ@spzϐt2MT,ۈ3:NJLPhq6"O}ܜԶ/H^$9Z8s%jߘZ+(V!1[0>1F \kX] -# xSh4f05$`IR?%4 %+j^IάBJo7 ")lXp?풬:/21Ŀ;rl\>1P\#ZdEN_$".iDNÌܕY\R$ lT)JkNyӌ)&Ј\&"QvkQDdQ (aiBVR# Q9Fd*xRRDWڐ_iNA5ʲ_Q=+LCV`x.b WIu={e I8 45hVb Dpx#,>v`[ܮ| hd5)b4;O(}jp ɉ2rX) +eFvg`o;0l"Nl}בJ\ʸFurI˗*'^]@Np |sq%EbӦ W<ǂ]^#`Q'%? b&!!F>9L0DJ]d`jC5 iBJFzE06<.+ˉͥ1!(ԲK`T7S5kW@e:ˠU,̦Gidd/{RlZf )OaO~e(¢Zd /ȱS+08 un.ƒU L2|B ʼذ0Rv)yV[k4׹Dx,nX1"$Pt"mF̓htW3vm۴@^I \1|jl +0M Z#붰^^DLl 庿Qp3\Az@qU=Ͽx 9]U{aC .,t#.k&p4gT a'ĜFN\>|njF%2\JK  sd1$o뷛m1HGY]xJ(.2=+ƂWlY5S!2b uvBP_B]v\c {QG]q )N0pp99Kz&_hp{H!"̽Ju'a) c;G|w;݌LcKOtt7=4CN.Y \p}뎢/XL4x8&yGn5a_tGrhHF_y@|զtSvy1w pt] k2bVlZuk/{I`#vre04h>&jwz4#  $('46"HfetWR6W?$#l7'%~Q~Gw-uEuCߢcχP}8NM@=pWn(]f/O3'-C(@3,$d|t%5s&be,b  rz{,&/Qm ^"cdOLc0Md,0Dz7JЊv 2_x.G5b{0R0h|Rp3eĄ`zvqXw$0 W g3x Riv.S=CvX0q XYFxj69F6v&bft7alWVQ`$EwPCp1E Wȅ؅/ǒ~(w-õ"NkXȒOC9وgNpwiE-釩8dX Q 5`DxxWKj4p@ ^{GZ[(bj.7D(M5vV"S$2aťt'`-צ_c\uzИ0 _8`3QwO%9 2W5i׈'c˨8 h{U*]YZYj'ib9'H Y[(X`P[zfr{#z)W(r,KM1OixW3OCd YaqSʈhaC8\i$ȗ\ez_xxsH+ty1\`ti.#SK(MWrrȡGa)YuR[H0{ArIr*> Cr:uG63cc9> j%kWgws7_*(5R\6lc9"te._@ K jȔfف6M6C9 SfR2Dz'D"!EDjc`7KD{g6ڧ:c7O#p8g$ fV|ZD|8F! |! i})f) V5ʉZ DS`N<ɚڀ!(w$3 #Ea`9aqio_q@om_ol7ȴLdƴ]4rT߱K]TYa&F ~bgɉM4Q:,È:`*0-339 'q$PB1Lx$h_H oQa:~A6t^6qAկyRerMU:S;i%@B8;+V?J0f5eH@m+Y75qrEo aX:A[[ 6x0= D 4@;CAL :K @;6+`l [1 EՋ@MP"拽k뾺0(X[[ iQb; \ſểK6AQ!N1Ê 9%a,#L%l')+-/ 1,3L5l79;⧗isd#?#$aQ4@0Q TmAE Y|D\Zki¼K[0ZB.q]GH kDa0}D7(6Z)j֔C8=Fhwx6Kح@Gɝ( %&9p_#W"`\cѫʅIfITOWJgJsj(hTKZO<KT3|Ϊg<[0MHc3v\\ l ٠$zOzLHLPOC$vڇ| >Q"RQٸQQSR)RY5'e4]%%}Qk.R`O?VGxTvf#NU.EUu?;)b#sV>5#;{*VNV?Vv-" aWNN,zzua}LDXrb"ENzX^z0X9 & E -;l2Z Ye@ƣYek9[J62[Ŗ%΃t8; `ʕ؟c\DM S#}LZF `^sZ^;jݪwM8 _'TSj*Ef} mF*zxIp [Ý +1bk-hݬi5<2V}RV|8๞W"AfNk'O ^ ޼WTeNCYvu1x' rji ZHʓ'gQ'wbge:t'fnq0V,zƚnXkʗZ (d EW{BoKr ,Z᠜2X*t!pb5 ;54 'N<}Xy;9u Su[5S )`<2fMBoX\vBl''`"rwNx,N-uXGL{x7xڽaJW)Z禮OSx М,8!V/ʫk[kβ^/=mF10 fO}c$]w} !Y)aײ2cwؓfQ[1)7_ "u3 $>A[)v>vWɁ s`ڃt`1[yU.k/#+ FW> ٬@F)#X$76Y>L7IvQwAmҤ%-nreI1+V.]_7s>e/U2 : - { `"=.Z x;)`Qën4,p/=^6mK< Mg3" .$?+H/G aJ7/RM=U2,&=/5 ;#'$Ŏ\4] ^Zs @֜ HS.IDԶ+ 3E2Tp%I{?~AtK!qfd0I4BY\) Ic{֏$MBtƄHjQf.(Q` DAAC W?@aV - ʲVd*Vա fA TjխijTVq\ڒ4^iŠPk] [XUbsvAFf9Y~BuhZZӞv@-L@JZԾli[[ny[p[\Ur\>ѕt[]^v]~x[^Uz^P_|~̆ W橊Y> 5p HGR/W`p(`j5'z_"{YWedk7h"/{ɣAp;MuS*|UUu]Go!xmHwT~-_b(0ĖǕ ؙ'0.pi!9`2̜M@hP~onB(Hh#FLiJඥfJhTaxA ЂH2J!e5nmq4r[b 9b}LĐ&TE^&+t''u'k ~(c*O6x$84L v9cn"+VQ+M\"nǾFV/6b0 2=QN͖ݦh(; ,|C K/-C!Th*% k2nRZa0 @c!ߒXc3q/ưj6l!܆+o $Oc2kSgo(oӘȲ["V/p 3J* 34`Gr;&CRѶS҆b*+kXeӐSs2"2%YRIxs1rr393,DVba B5KsI(CHDm080@wă^L)-h8o #EƢSk |TxG6#=-E6G=u+At6-O9CK X('t0o4,~T B=!FBԺAO!F UvAQ+Q&R{53Ա|FH1 D8)*4$$xr023$sSQRx%ڑ4 '@6);r (Koa,WuYUCU))ulO.yU %wOTgugX >M%FHmFAC3 <OuӪ2zt &ͦq15TZIU$Λ]iKI%2^v^Rc֒|7H@`qAD@9>ZӱjeiiU-|ca:v;W^]\-OōcVzy@WCw\l|Efjmshu7(SnX9fgP jpG\JINwb[d XXsVw& sG:WdGtt" u6`uu{G)/0C8t54!ՁwLHp() ^՚bI?hc{iw+Yi~N)ғ'@UWo305[5՚>y|5+Q(h&ضB)[l0eS9usf@TIn9TAsHn=J \f-<3nOi,5]h/!S,pL  icl5=Éٛ)-nvn4G:ޔ0vvB%/J4d/DXnJwvz~0z%f_„ڧzz(1թ9êzsڬZךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳/(Jw7L&ZF:äö0f;,'S$uǒ^zlg:LZr`i9RԢWUi(5C60mNlӈ@/4Lt9֖[)i(ج",2pn=u&+EAG$EP-M;͚Jy+[0mQ<)bJ{M ʿ[āzsXa0M \$۸?05KbcCYr: MXzD<4kݦ\gUt04搉R5B ,33]cM*$*|jn5qfNnLz{ -]M%1q~.`.E鰮V0a$P!c[WAznҎخB2r]~}g:}zd?mDn7>vNNUGrn(int]d|..KV߹#sgbRu[0F!(h½5фN ٗfF7w 5ɜT/PiigړXkbv96a#3E 91~p[:d[5·Tc]|Yq#+RWi5*~O6gRI7?apH!K 0 Pc<ݯ0   p W ! 3\Cn~8RXI r1nRI! /1 /饡 ΄UP 8 )(mFߕ%:1ُs-n+ޛN1DM)#v!;Nt>nq%FcQ8RqxR+5r^j = Ї5Jz[OCBڜAP`!cb"T$@C둅`ai钖U^j+hb_Qe-t4u5vvg(w7wPFY[x7;-3qjba~6mK"$!KH`R(QnٺBdI߫X].XQYrlYdGuPTsEU9 ,qpIlDM%=+X9%q,utH$QAŴ/q)zU-[yQ ϰ ./`-+ e-8 ,"/ٜ,SaȖ$Hf9^*p`47_~* l0LAhL0dM)GEeKE2dҕyLÑ~kռn"[-X<+5 $R4E$:n<2_}D.YQqص\sG v^ N .`VU):3v%x")bYaGPՁfd%cqqg-bYK#3fe :/C ]fOL#f\C4hrqa[rd@ 'W&z*uEIiD Dխ@iǪ:,Hkq`WKJ+Q4"dЙn\yDZĶ&QlcA~*az5tꏔS2ysW]}g6x<-peRpM<'Nk޻)Wh'*wU0Dl.5|3;I :ۅ錳w υ;JdVVXKlb e`4(LuQDEjvHVP*HZ{$ޢX.1 Ͱ-`]8~xe2+'o L}:S3Ty1j)A?{mJWվ\4FSgnuHtꇕ+˼mͶ&AWogg5[jѓ>c 'H|>>E9~,y"8 $:AvAg/x&]vD ư%0i E7!xުDT1,!FYGUd-𐾰,)SV2!w[%<1f>3Ӭ)"ݚʶ9ӹv3e~3IK,Gφ>4E3ю~4#-ISҖ43MsӞ4C-QԦ>5SUծ~5c-YӺֶ5s]׾5-lа~!'v{h#lt+cb=縝a,6<ٴ5cc kǫٛyF_PnTJ?~s](OƉ;ɗR=ToQqY)V*}>7AmmxJuii-zŬz8\3v9,SC1ޞ64S[a@<T9 9FeJpDWk;N@GA? xuvG񐝺h(^ اQ;%N@n;W,tJ8EҸ#Xw-P CY=StAgA!p5aP$sa}m __|h4:Vq 54(Vߤg90|? e>V00҄]^Mt-1,AD9`:E-_q8ͱ΁G0u`0yA"]Dnb#q| ޞPB-]lx&U@ x, ~@V! j9IL`lE?!J2K]΄\Fa5=h g5 ^ KUe$YPe$""Ė΂\UČ=x^=Tࠜ *y$a(-..bx.,Z1 ɟ\"A `Paοmiby8ccK]t#HBD@ndK,gLsDP6C,#=뀓Q^*^ p:8K_Č `]5dE+4֝ӣ$4R LV! X QdXtx^8@A Cù@Γd9 v/.BP~.:ae|Q@/.PAQ# t"5?GP!u!W $b+h#TNZf)N,`M9Q&D]^EL!--APVe cSR([qb b(Fe ˾5;\T''2j*]@('E\i7ҠPNQ[ $v~ RpOq(K(GIheZ=ād~3QѡVr(6I W *nHFBZ(0*,bR*hV%m('ˋ\)gvȍ*~%JxShE)diUch}jM@diK@ aTTLњŅig$ߍfWink ]%Q]%qV%FRVUآfm(rrؗJX%f(w*hIcdtEMMܑf1⻴"\,Vf8K4*BӵL"lfdZC!܂@z,-.m#(%"nm+kL8_(kn[VC\M"2l!bDT&AM=lέjazardmBLL(,re,FL(fчg}~`)+l*rԮh0'UrM2_ל塈!9AkѮ۬BխΔ`h4}.s+$DÖ GcnnyP8p v%f.6T %P2\ȮˡDg[_b4/xA,b^) B~@fy9KB(QDr/TQjR*40jA.~l:GEOmʆ %QF!cB s>ݾwI$Q/> @;(T n$5 5$Ӷ/qAJI3Q|UxJm=qˁ82;%+(9 ;Kd(džzqPA.i$a.B1pF(L0l;0لgjp[@(]T_jҮzFsUxAι4kMlWnѠ0:!nb\EG~5@do'4BsÑ7%psäFjZ;21'))3oPk_p9R슠m+LkgKzRhi/W[l't*{P,%*#RX1lFW꽝" 3C[YEM[PŔm$H0_*.A.*tHXq(`[HsNvAv@6j:?KG6eecbu_h6ii6jj6kk6lǶl6m׶m6nn6oo6pp7qq7r'r/7s7s?7tGtO7uWu_7vgvokۦ/CHwyϙm7w{kS"e_hN}es/{0m16wx?8̀DOمgo8̈́d}exu8J"T.Ԃ778!H۸xx#JX\a1ҢhmBO؇CAߦ\Sq0ϮP >-v#F$ Zyc&ؖ ^AR`' >BF뢌mGfjfx/ ,ťG3,+R~z+Zu:2/?i9M΅"W4hG)@;KD够hGǷ*wpg eTqv{`!`;褯:Rf{{;RN꺒E;z羯S:d006G"dK2'I4<vrDQl]Ei$z "_I;+X TGCİlr{m6¦5FOk.*gQtp:ko\|(wVa/w|^@ABíEFŒɑ1I%1IK5ɑ*NϐТ(MӹI[[D4"Ia"TUVV_; 529 C824)-m o&,$r"q0t|S .dC%NXѢ : WSjK3u$+HrFzQfM%QPI*( F+paV\6K@lξ4t{"gał͉ΚE޺Lۅ2$`(p(Kl~XXḾEcȑ%O\Dz:dLҰXv*F|TViO>]7dΣB`2ØYuH!cKn!l`Q흼 r]aZe6bϔ鬭:.xVF-Qo"6hLCKmDj6_C{vAmvq KgNRpqf=ЪNaU#حY &7~WCڠK&z/dx껾 @ʘɚ0sB#bȱ]1*6z踀? , B_멗 * AZ -.xHHA*H!8p)"a)ڛ&AeBj2:#+[ l8*B(A\7ӿ{8-C aоȳ˳jX8 rҋp/:`N0\7x-蝨ú񑣣 8WrjA8.YW'"QC0`0J@-7{@YT7уTLҲG*#/Vntl< 3_{ř:G9[|>L+FoX2m&(P)#t!o>$IQ(2+r݋D2#;&ƅ$"1+H"+&9+1NIYтF{\298BʃK?/Ƈ+ّFr!p8?7Hz<I~!òIʹmJJԢػ3KK.1+z<4+3Æx=˸Uʺ7 EeǨH:pJ))8x1"쉶1{Eq>E70'$++;d\0·80;l蚃V /l䉀ͬ'[J )<`eŒM\+MsBt2 LH.ܴ0@'(kE\0ό/o;PHǛo6Mn\KPUPOB y HTl Q5dڇCɞH}dc-SB-g#NRGD=R@8E:AJS4M})P5IJɚn:ULݔ;!(<&<юԤ'N76C5`2HIDR9P9̢<Ń,u߲;4J1C6ʐbTU:(RZ/U^Sdu'if,݊ 5}{Fm"J b1tҒTW 1K0ؓ=,}[ Z$}{}{vꃆ]Er*h+%XD/+0X2Y탾L6 BUFWtBS*H5hʨr24EY{BD3M,a;0,1S9#* ȝ Z 3=8 &)K6B S`z8 m~[A5ߵX, ]`wU~c ,6јlS!`^I(hBsm7buaMcx(LOa?vތy^,W4ENkvKbD>KJ~T.gJ6µS"S_DӾC3( 0X&l'^d?~J;W:! 8WƓaJlsiS;*Hb+Y\T I$F8{{)h,YC kh f!;gK+蒷x~4::m?]hne(zIJm]\X?ZzQd徆j'BC8<,l809+B͎Rۍb>(SfRQT9fUlS7Y@˶(rUrB+_r& Os5G6:=]s8sQZGs;Pss>s-ҤNr?tB/tC?tDOtE_tFotGtHtItJtKtLtMtNML@A5u&65ݲ!BNr(H#mZjhɈFh;!9)ssu\g "Xv:xU8~8i{Fhϳj7pl/9m)y8/S`KvPu'vgd` {`pwnoj#x@ZnQ w'Q/xh&b_eyy#'(Oxxd8+nZ@h|spz3@AD9Bx)Bh*DFG @lEt oDC7=ijj @) EFGhjHǗ2@J 4iݸ94aQq}930z]w*/dca hRz4O[<RGvL>c\Dž-Q#EmGE5S|E8؉Z T J @)B!x@~ F"GKs ܰ8:yH1FjM.ޤ^XcqSSccPFab\ KȴLǥ\ʛҭ勌nړɚԌ \K )[|#c9#M>ZRA,*9ᓆ0cʜI͛8sɳϟ3Kʧ'5k"cK%K@!I6U[jdrM2%q:6ĥ8l@F,=N2hIGwqqq%.* |;`נl⅗3̥cB")Hiƒ/O(kP<0 AIYq^:_r :sY*J^Ͼ˟yTU#|FqUX[T]tcEwe_~} S!TԥFL䝗Vp-dQ"=@sׅl-r' 1Й#kU[ȁVXfb\CQ]S("GBV\W&xQER&- 4zI ǁg/p 132=-\&ź\F]Ij޲$\wd3sG(VRLN@mũtHm&WltS[ezX dzPɣ5`|b9Z꥚LXj!Wp-{ĜR'pViX?ZV#I;G( s?4 bYN4+2V0DL8EkF)eRb 98 T^ږ%)3AzqhLgkqu;鈷+nYt"k)RрB[3 :Q3b 'IJZsC {4n ǛU2qAf%'% uL\phx* A10_6r#Q9a]2%p~qG6~\|&gSTܠ.4>3Q @T1<|6ic @JМ,`;12J1K(!ɜ-m^ eȌh؍L6`M.&Oגjf!nj؄fWJݔSLQUm_9b5ߴ"~3)\-OsDo+u(Gxͫ^0j C:ExhP$C(vi7[$ C1ѹ15ai2@@YO0I(j$,u̵myώHòt ](VB5 Lxn̥E9ȁ]:6;v|n޴VsBs!U]J [«YRYFIs]Me:a(JڭF&m$l53." yimdlH*lzZ7E&EOrՀ"{f0kke3ytf1-sI e&_Yo+ BIbπ46@B BZՎ/zC#哋!vH7n=4X2#炤#h^C8`H 20 e @aϨhf)Wߘ1hu^7&+Ɍn\G59mĵz#sE}4@>F2Q6MC\F^dJTcjMl7ȉ EI~L0|'D x㓜9Y1sτЇ^aq;GqNtX:SԐZ{,-@|xb {J#F5+%M$09w񐏼4 #BGl3߈' OF G=o17~򰏽gϊ2җO,bKy׵Ix;Gs[Ͼ{OO?nϿ>8XW }؀8xaX %*$@+>qX&x(H3FX;x028wD-h4<؃>H{8$DXFx dxH؄NUGW3~!R ct  !JeZ^(aDir#+ko8Y%"$Pe"9c(wC7x2);3j7+C)/h&OYJX4ej?8I 31c2ƔLqHt"F'3,葜gQyGDwDcy*0l hpscJx6șaT=;g<cZ:u7;)Li9ٛ&9 ByIz$*cI3y6AYICsx33RW 79bԉnʦ;y86be TUxhhC|2CFb;Jryi+i 9c<"zZ"psx<&r1A\ کZ X@1NtP=L1zȪvף;1Z4Z3 ƚؚy*ǭb/Y1ת蚮{g9{ |9窮1+N3{{+z:P !', @pH,Ȥrl:ШtJZجvz0`4zn|N~wg2' }KmQ l ǩχ mn]Џ^`滽kl(8R` B :aF3Y/ 4%D$$5r '1)%B p ϕ2^Z%ϐ7) ׯ`Ê['[ճ|(ONHn[*٢}6n E2 n# ۾uXw 0~%5A:]ͺװc˞MVo8[݃y6]ᾋ\~@q+dF/=w˻Ǝp'-hR{vW~guD\ R3%) ؃2Cp(>PftM>AUY=vVE-6D *H na8Z D8Jaa]@}"&Z~i~gF֦uoI_ᑷ8M *yjpuir6XneY7] ܩ jzVJ*~: Ui Nbld4A]vsY>k܎Ӎ* MK%O&fa SBd#;ҵ4Vp5jSĬjG-gŵ"묲{1aSXu,*ƹl2)<]ǒ,9\e@MA? ZD-BJ tAPtOCVX$Jo 5Y4V4Px=6Fm4T 6aǽgKSY]|/8|DUŝmJ{D$ ׸[ ?97+I)MӄK~tc~@5Z۾;p ;Ot__i7?\;YJ"hs k3)?# k-b15V9'TELT"(kaCB6͡6 GH'P`HE 1ф4ʎXC(Y`$Сd@IsaU! O(b+/z=5 1Q( H25]׈4Bk,&G5lX;Qz#(@ %{#!92KncGEJ<%G:l$?)Hur<(QYTQ4d)#&s" r|-'3by!sP LR'+v2Wq|)QBKNfr|"JXRxD'&F}l(FA/OӎEC߈B2m:}ӎ2ZьYTZ3tZ!5iII S֔IWӑˊ6$D5ja%m1RShH324(x*/C$:Me,'3]iO̮tz,c=__Sr,\WԯTp!:4aKx~E\{8(NGLb".l(5uIW!81X[\^`"V{2d8Tbwnl/WgӬ9@3-lb0s>g;pVf!nEIv''D$҅)hzl,PNCp Ȁ.eHT/Dpua8 a݋ŝr9jU՛VQ4i2lE`@2MA#5pj[ζYn{hbXOa``yug̍]Y=*w"n{ԹLϳoO >C y+̳< G  2ՊNʪ\Sq%L^ 7*NYgЇN0iv׵貊 Pz,Mz4dx Q:ghOpNxϻO«fۈO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{O?~ *׀Eq-A(3 ~!U*}U(Hjͦoh>PhfmPrƀju[Re FVo]w €NB;:Wd0;P+k 0HEcKNF6' `V@rR 0aB2PVM0X4BxpLh:@he'Rp!Ns@0-TMĕLu@/a+1_lq7sdy>mѨ)&ajٰ ZIA+ csol[usW q1Ru\V@\`&ǕA.?b $cbH:2EyId=Dt ,QQiL,DKWؘ))0vb@0䆇0V+(oHo- n5LAj /ש 6:v."ILYQUD^g t1ZYcY`"/ Lb[И{M[%/)\1qUGdoGpIVpӤEl'TAR.^ MsH9N4&'Ťs҅qq^7iѕH`"W$0i)2{Pš*0 ݤ@zc#@f C)_ReKXKgj 7 pBz VjH;'S INEk*TED (٫(Ⱥꋚ!bG1jU:9Me0Y6(gKFBRlDs9L1fnD41m:θ@yȏmTu ?KQ4L"9QJ*^ u8@ȆU@Z]И0G+] .ӕ&X`&sDzo eC@ fȋ&0~:3۴K>BwZږ:]rTΘlgDYD'X%JLR1~5FHkQ;Tw_ l@vV/} oWձyP F,:%IQyo&Cu8;: 40Wp:7b:Ja@[bd+VY$ɦ[ZJrcQUӋ9VfU#qv ŁY?:[{V98G̊~k?+y;)Q+Lcz+J/sʚl *@2K=yAԪD˿:+>@J+\faPLkZV$G2AK8zk LV.,\+ja$9,$;Ln;$'͘h\2U|*Mjoi1# %,;([b]̯5U\ .zZ64ֵ2~@ퟕAe}IaqMLsxMX .LTiv;YUʊGH齷MM^lA/`*lֹ2=^t0M+o~w['*:9ߛ#n طCY%'@qdʝ@_UU[ |-<%)1, 3v-L@:;:F:im@k#;Lv+*ע«Vj>8ǝj0۸Eؼlsrp.Nj HN=B4&kjiMLEupGs^:Q9[nA31,T,AK ֳͧt; qD1oT;;@f$ wU럁J )0KC.qH (V.)UƦXR?Hb:pWGo!X.yqQn͏hI"zֈo|+Nb&l/kFE@rC@o.ToE_;~ ۼi=)*QoZ3NNnο(H@K'f)t:1YKL78W30tHQHXF4h'\.eP+QBDZ1$ !#! 2*2$ D @IT5.  2l*'v-:[+.ؖ60[9=$0%Ȓo ЁBף" 0 ΝiA&XJ˒A5ڹqP`Yp#_-*b|lkVtYphhQG&M ,QsAԀSV}VAԡX;XMUuRS V6W9UJS680cXo< eU K,kڣ&;YD NEd֯a6om۷qֽwo߿#QvqbO;7ϡG-QŞK='Hs!s$W}{uLǗ? 0[Odn+P-:>ٌ<X"`^ފg`@I,MLQ"halsBbhLCfQ)51*;r^,e#Rʩ+R-i  S1BVL2lM<ڋ)׃S6TYC7 TA -CMTEmG!Q$TM9OA UQI-SQMUUYmWaUYi[qU]y_ Va-cMVemgVikVmo Wq-\Oݣ@7b|&^@5q^Jͷ^:sy_ g_~ '.Xn 6J>Q#Zc&Xd=Yn XBs2'qi@jŜ-K "2-hZꩩNf#(ΧҵXcBtV/z~YȮεM~x,/7ga>Odi'Qn)'n2| .H<5ct2fq2oagYP}]4@HLq8 61 tob 8_4? P4ziMjwyv{2  +.@r _2es`F~vMpwĠMT`vY39@))_v2$09ogɈ A?.$?EHxh+xxVP1hiTu()ad6NFa%P2B7GsKLj`@y&6[AX 첇⣀-J>,ѕ8…pgh"or<4@ {Yd`጖NaF yD0NBFcz  k !-'a;Go7v㢗ᙋ.e~ywW8sKr6zͼԽ(ŀ;JHǵiӞvVOl72u)Zp쐈4ޛA.=!y(wd)r8Zp|żĽ[9D/ a7^IsX!XokLqF"ZqksF@clJ1قи:ɬ `Qnv;k/VyWhhM/z,H"|Bibe7;aTjOĠq:ҪY;"fy 6Pk{&0"*< s4ˀ6z{;oDAz\gaE 'e<[=4%. t8)l`ϻ$;F}HX ;<듴/ {"Q??=w]c~㩠Fg pݜ+rmq-^]Kf:2C`m7<Li|A‹0ڰè-:{Hv3.(5;;-En<â cG=>*+BX#>]ƍN>tAADv3B =.%K&A=CA4DE+&|^NDB?YEAMpDetFiFmFq4GutGyG}G4HtHHH4ItIII4JtJJJ4KtKKK4LtL`f#t-D)E-_tNN#A4O&!C/NN Pi-,fD3Bn1t R4QC=wl%R rR1uUYI5I7k(U{^e4ݥ~ꝥd (n<Ǟ  AZ"ܱ]  >COZ&B^B3\&o*Z{>5W/PqZ0vua/: ̠@]iOR-R7yUh&4 lCų-&}k^`S~â٦5v#;^ji~F9BFJNRVZ^bfjnrvz~.4^<6E jl6<"Y@J6=@Ai89;ODVA%??5;:c6 (p "Lp!ÆB(qC64h E6Jxlƒ&bEE@Bpel7.ꥻDH 5)f*֫`sBJW1u+׮^ +v,ٲfϢM+Ƞ-"m/]$†#Nx1ƎC,y2ʖ/;Ry3Ξ?-z4ҦbNz5֮_Î-{6ڶom4޾.|8Nn8ΟC.}:XϮ};޿/~<ϣO~=Ï/>ϯ?X" 2ؠBRXbr!ʁ#X'+x/hٌ7☣أ?CYGⶣK2dEHBSRYWbNr٥_*cYgk٦osYw♧{٧k "*%ڨFRZYOrکӘZaڪv:ȩXJ["2۬BR[brۭ߂[碛ۮ[⛯] &lB +f0h@TEPLÿbV0 FW",!2aTmcM✳|HK#r %@ђ{L2Җr)Qg@WdS$551Bs!4%}E r"o QIv/@(5ǃ^X݅o@q q<rsA$yO7&`tY]%E%{,o|3Tp)=KCYm Hm (Fl/"@+ L=N_1Htv(>9<* cVM;sI1 (6)[ϣ>=ko>={?>o#?_>C?ҟ>oc?>?Z*`mU؄HJvMH_: n}PQ@PMH@PAHxM- MO`#(LGX:t`N\`ȃPR^ ^Z#L A FF>O i`u D™Y Et=٤yHDAaMPC-E, ͐Ҙ9V"ȡU>NQ0)I""Y.ؗY"XE@@aUR4A+>a,@*J7-LA Qa0&aD$8t S-T2fBt$ۈ `M0JAD1A-Se#3|1jp=dWr1`$xe&edD.a\XQ%,$b9nb#[`"A0lZ@8S(L#PeQQ QeR*4%Q2eSFTRSV%\eVb%UNQvWjeX%XnX"eYeV.eZW#L%bpbťf]D=M$&L6}H9 _( 2-d ŌߜK܂gBa&Wd:B[j&kekkB%k&m2m&nnfo&mr2'6p"%qrbX)Nr&N-qt30uR'vFg vBgsbwFt'x:vJpYf fpdM2CT BN՜ Bh%`Y`E4:*TMfg &(IV5g(5fKPfÌCg7(a.""\ʘs4'%2rhuzu'zp(wƨzBvrh/hihyh("i*) &A(:)&Z z.)"b阥iZ#Y&N81].bU45 (OY" "iU"i$DJ&F›iVf紂:lhTLCrA>yr)v静i>髲֨陒2*rjA"kPk0+jgO /u"k&]l+2mFm"+RZm"v-~զ? eɩ91RČMluHqE'j2h[_CQ ׃Rbڄ[`qa(Słj8)mEؘ㲬[TzĶm".?ꞐMd,$|AHBF2Mf^h@Qn.^fn$xnnѠCc$L'VTh"RL)C")mfin,˚//dɊWօz8H$#'5e x]0\o!4@m;bamd2fpgіDXٙ} .c0#@ Ol+A^z+ C!ɮCEoPTZ[(ZE"%p"lgn&(bp6/sDDQjA~mp)\B!GtЄhv-]|M9[60i%k6p#&?]EsjEr.Ź1cLv2`|(3V2)T3afk31/|63|3A:G79 Q;sop91s??t@ @tAA#tB+B3tC;CCtDKyۈL "0G^=m2Ԩ 'H)SHIW3ɠntN۞.ndش!N#5V4%M{MuR[V. dJ 6|`Rb` XK]c1q^WN7/`=mF4v23*ٟћt=D5lj'}Or6YD~cq#<lFw/o-=N?d|IwB>fNRޯB*]L8 #CjfՂ>s.S̜YoSxWqgW'rmGZ*89 M\]u""&u:n!O0c94D9hۥPE&O&w9э;[C|ZQ(L}Re~bعnHΣuODؓBS(!4> }.TO1 ;:ZqoE7p0$fB:1l`hb2]cJ x9C9z1%z?fn?)잓&c\PRW'X#𺸳oxȸ,nӲct#m݊_no"izܢ(ln>O;|Rh8m7+X<"/|(mKAsզ"RsOu@nfd޼/B<#TluK\-Z0Xfe2wwwQycy}Md9Ҳ|Sy+ͬ׃<X0 TlwVM}#K c;5b/jvbX}шmC/o"객 Wq.zAU-oL KKi>r/l?_w>H;$3s= 3WJ'YnԚ H)H?jWXQ9-c{502Š&p<> !rT4#GB!AM+ C6prk"6 IՔr>)?A3ckbPpKR8Xː:jZ0z8hj|"UDMU]emu}&.6>%8XF=Ph`}^ZHthT^]f-`w>ݶNWGP@ DPZ0D-^ĘQF=~a"(9dI-]SL5m$&PY(TPEET%^6JUTU^Śu4]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYf<ZhҥMFZj֭=+~hidѶ=b\p@ד\r%R@:ԥ^Zٽ/tX2ʷ9~Ǜk&=`9]-Xaث+? ;mCX\1DG$;0(C^cr<1sGbE!$Ҏ[h#X`J)+\#J UY6&aRDeG |M! $߳ҾO?4PA%PCGҨCeD9[:tBL򛴀J"O2/8{2]CQU)eMꣳQ[o5W]wA`tSI :cD6Te]%eU`j=OP%Vr\T]%]hdmW[1Baq)PM|LmΑ |P+iK1`2UճԕIm& SsWXV_g[Si.6fٽj_^Ygzܝzߤg^zZ?y۝砿Ӧ}جrvzufîWh~fZLoLyO<{;ӈWA@MXj.`B[|ɡ `s 6]]긡V}|[weuW&]53x13J(4LOyϼ7Gz꧿_䗷W'>{O?/~_?KX1E<4úz:&1Qas${ r[*08g\b5#(2rGx+8p7l o+z(qFl"((/gRg)1bH>N1J_JT2Qu!TnMh۔1ZaL :V`foH(IsX8IJVr, Ovg,A?$$xp7xċdDx5~ EoySIk䏑xUr/ye>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuw_{>vgG{վvo{>wL #'9OwGG|4"pH~"|5t8@D*?UzŸ|Abzמ+jQiBX׫D ivW}}}=o]x`'!hݸ>!h_CSGPO~1">Xk<0?諷5p[?Z=L Ƀ@A~ @X2_@ | TA談<Ƌ$AH#$?[B(!A:9#,$Ah@+'ԓ3@ ܺBKr_xA{@TA '>A135|1|Bpp?\C$$<(LD8\:[ :` LPō4CxȐB;DAW,C"lUD D1px&8TE!<@\A!xp` dl&Hj !P|7lS+q$GWۅlDBv_dYlFgl@klSt{\d#F5XC\\?4DITV\W$}rȎDW;"yA髒ރGblxFfFe@eLBjTBiC:̒6I̿YLyTA tHhɜ hVp,45«ȭ{#CDCII[,Hz\a]4K-Mq Kѡ4U;KK2%S$k$$1d>]Me,AkS7)K4QI\pTHMTS\Bv8=Bm dIQ@sBKTEX%X8:@KX4-Յ^5`dUYUPU#eD DuLôXRc '|DF\VϺIpS,dW{Pe~U)BY&m`=w' NUVHRx{׋XE`VU( $λse;UÜ}ٖٞU јuO wT FNT}t^%"nF,5e&>,WLbE!@al0bYbu.d3J(V = .BEF=_m@>cPc.P :P8n-!&N^>Kd>xLA5UBN.&)O pW!aS7`P0Ճ b[0<6bvpefACh]O>dUbabG>Tq!XFtY6J6O^Z_.e(zNm 0f&h/tAf.pԊe,U7KscN )fQP ɋb+vcm~LmeaHeP鱫J=`,lބ& Rf0`(bmiiꪆIW+`NyLdn,;nv 䧆jc`F5 i&6FVfvȖɦʶ&f^ hd\pv <8 8`J@ W˥dx^ݵkM6@nsHn\x>k+} PmUe, ˃~ԍvh!fiIHjUM@eN3oϩ娌 K̲Ӫf8hm sg]_HDTƚƀV%7&ffd"wcNm^-]7e rW p~tG =_ s- %u _%FOᚆm1޶buYiAv_bP 6r8-bu~5 x`_SjegOHvaWB_=&f7`.wgt~'`t\j lt>;($wĄ^msUwgOKNxV^;B9@B>X|yeC ݽ>^F<`Bhhc=m^mꏯi}&Ftj`xm<^^(`%ld40NxwV{VOBaֵur  T$DI̦ JxqNe->*R85ESQ h0H{%tlfHe񤨡v@!tW %u`y *:JZJ:DzJ!b4" 싫A\2«[Zx .>&v `GgI9Opx"!݂7JԀ?rN0[|  Hah$<}4:MbRO<9t̓Mi)"%L?uQЩ8)3&Ǡf|.l╉ UsRkBQ\(JEnӃ)b18SQWMbr@@_ 1cȒW7/aլ[~ ;ٴkn-ș&= |3/TQ:A9 ΗL6);0[#PVeJ XߛݡSYP5DUt}PpUN("yMu%Xi %%qcBI\OG]*J1QJъMZ*D6d2PO*AeeZneaXx{^^cǦ=Ea ]pbt⑒>=^ JsBR|E{dKCPREL{CVBSaaķQ]ux'ΊUm9#m@>q!Rg2{6jlKp]PsۜPbzzK,(%j/ 7Cw~S4"a(rWI>?N ĚyY*;rqd2{l!FAi0cujR+%Z sQΡu.b.pdm݄=[#~/is=uto"  R$ho@دl+ JEU[l7D\v2yĒAU(zJHu0 S^IU>Y':TD %Z \CV(D #bm@|0訢x!@hJƑȖcW7*Íoh…&P#E[ 6\W3O" 7la-US@)E5i"3D 6u4*»nqB Q,WIpf8ae"e|d)6V9 p:I0TE쥶ZDͲU*8Ԁx} @TֹHNk!\E`Oi3*n>]cl,`,{WVmڶ)- _-xʭ@^:PpMo<Fvʮ8򳿦 U_BmeU@l2Eʑ$ָ`mH+5ז3=3vFa j٨ݩ)/>=Έe%gM5k 7Č}\Lj9B> VO Wįt!DRBn$ xNݗê)VI$0C6i|]7#6TUO(ufsRZ,]7AD9=1@\ecDDdz{gffHZ/< qs oLw歾xvHۜmx~VGPe#u7"bU[&>[6^R- o|M+ 6%B9|4o|7_}>@O@x0^џ^tC9ϯk}\ 9}ͳ pU{l}tI/JWמw/+~Bjk͗Ք)k~?Ћ~/Oԫ~o_~o~ /+oKԯk/Ϗo(Hh Ȁ (HhH{ȁ!z %h')x$-/1z݄%AÀ2;ȃ=hV K!"P_EU_아E(@.e 0QqSFey>(cHegf@%k6Fx7f4gTnp 1cMy#f~K P ز ̀nvF8 Lΐ e tQ/# oaid^ }(ƧnUhcnO#R/07֠MxT(xw=8hLj׊uUPMհM k،AgNh$('P%/MBU &ԍ hԨFp0 7IoRnt_ `6!GEvH?o2i&Ugm6sTѰnQ67ĸ`inEf79^ctȐ٨Kh-iMH.O QE)/?FIH&9R6#8 C24!ikyp=p6(g` E1",X`?lIi#PuW5`[) ?˜wwG_pE症 wC1gҚ5Y%Y5f y}7#p=&t&xil3o©ɝ70GqYyg#Qq.rpٝ{^f]eEgTgtu, Y n]xGv :x\Uʇ * z`yxx !*#J%j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKMO Q*SJUjWYZ`*q5%hI Py*Z q%\'FZjRl׳&"Z#7 ^gZr] ;v: JxUjZ9lTe9"+@ 5i[WsOGVrjSؒ[Vr uаЯqjw /bb*K#TҬ\V9S&!qpR2 0b\_dB9kFyT0SP!; :&cg:+L~S @*vEc! O!EACD) {妍R<~BQyF{^"J; 1 @?G))uóJHL3o `q@oCܪM~yɎAUDJRk 3b&2͋Q%l5k[6QCs&Lf#b]bpRF+-Q x]ނeV zccc9RƐF 54Fk @m~՜Bc,VYO@gKvygqz*6rud7ģۿ -MmǍɭ moMm׍٭ -Mm -M a`瀓"?){)8t"UD՝×*% I*.AO 7@UD5ƥ5xKPW,jO:.;&mL,C4  bN!Pn JE=Es{[ [* \{݌N`n,ݜ ^ `gnha`) r|'a£6K0Z1.:`vnӗW3S."|猒ZrpSB0HLÌqp!&b+iq}RA ̼XnjL?%aEDTb"F5m;1GnrH3bYσ;w~Pd 4,M&;`f!B/74`3I^ ogdZ㰟=6$1"'B#OG&4[Da`IHN@1[]cĕH<\sSc|&2cj*] 1'0عa 0 |W:gaϢLdH#I4yIif/ 8`gN8 qngFH4 3tgRK6ujTSVzkV[vlXcɖպ AjײeiFsD{o^{p` 6WPi ƀ)W|sf͛9w4GG1?n'hիYvvlٳigwܙ1JmÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <s ^ib i)B 5L -`L{f gUT{i``"LGH$@`Ly@ [2I9ш B)R'ȢFO'6d\,9fz:%Q';7'5)B: e4( 4Fg0u eLr 9<Urrq4՘H @D6!&@HgFFu[q5ZG 0GY!Wض&• Pt# XrU#__m W:Ej|sXuP0|gH0b+̅u3)∔I6 x@@8ZЛ]g_?(Z.熝ƩG]":\>UaE"@g@0z^i}Uvn_[ץ>wx2-27}] |u`ť*ƀo}K[EYtz<'2X{5Wuf` OXe]_ąe J9dRQo[MU$zjR^q'Tllo~{]_oCx_ga-/xzCHL*[ >1y 8 hr; lh836qv_PMN\YG@& ]2忣Lnn ,I~DyQb /wkb UB\p@Ɍ J4J#ќlSbBOauqxqBW3k,Țb&k*UhGOzrW'IN_s21%`^".U.8ұH/3L;HLqάI#-`z`ѕt[]fn#z7dwiUzRVE0K|.B xe~MHRKr˗;Ɏ`Dd U K+Iރ9,9|U2ܕ?̉}`0,U5oVIЬR+b- @Y2w66;DXFB|j}Q\’dUǭ{. MWVX|8VsА(~3g@-j8+ H=D0cԐ= Lϭ*^Ϣ۝"'~+VKg%EqZ/3.}l03ŻeCHP$i3nݾ)RDc!b;almER[iqqfXճU:p׽.Fۜ;u C~4oVb1#;gHĈ'޹6薡ߩԹ*H@[1<nҝPZP 94`2}\XL9 8O=Zw:*bMEAbLg>~\E:O^pǵ^4px7\ьv4c+s TMyrx R!zsPâ(fʞ|Fw5mdc ==Zl{U}Grص#ťZ{,}Crޅg|癒algb̈́}lw PjAPm:uFpOЭ*@"ap lYO6 T" d^.HCu4^e tP MIFF僒 ro. } L&؄J #0` =0pق*Laplˢ `otpLxnDD7Uni '\`LĐ KPݲ 'l yn K}F( g1iQ׌fHBάh%npik1ׂ1H ެ~jl "T$B"a&ھHQ8e'EAqMTH0ᛊJ { !GhQ#u0"oqz#f0,LR#  qN*P^ 1O ( +, P:  s"6h̄ S(+#P⢞|a-]R'FiM42q'bˁeޢ(bj (* K 0b2w桌F1#1P1aq*b,r-d2dqp7Qsŝ>a 0sz"5%y%Yn_0ʢ_H"A(W05Sg~,ٺs</:M)B`lA` &r?) -4+@-S`p T 4'w30@ (RJAm@:[*`o2%2?(N)oFUphR, 3H4El}#%*Sz'9mU5X,dNw~RRnӊK5XA3XbXUZ&Rs50D51ZUa WղmT+%p]QuR=^_^[pP3B_5`bS`+ F^aCKGcT2`*cG@VdG-3+* Ib%e#cFZ4,0c!dGgg)^V"e}h/:iPu!QM eJBLuvn2M>mfӬL(Tz""Zww9aw SN}5 gٴMWBJcqbú!}7ݒn(@*n~K!Ӡnx~UbSi|?y7twTR/ B 7oq}/4ME;8)VKтyEMGjQx)g緅#f~cFu7y D13 33؎؄5V/ ݾfRxH;ȃgeufK( Q=˃0{F;^Rm"{:fWY3ȃȆoXmX%"y 9 i3ٕIg9񑏿CUϝq6{S a)T2zA)I/k:^ۆ Jȍ X/[1[YC(J` rB4T,y;Y]fcLg5b*ʦ]x -k .<'a>&\xgLybŮ+@\,4>t dYY>fJFȢW[=LڥcZg@RڦosZw{ڧZڨZکZZ:6"3Z 2` ׫`tRh!q +[k,C,ù[={1Jq㿡5;* [ UBE *g SU n g'фBAJǛu<)zP/σe \ȱAK+g|/&G# R F|)AGő'CC .;`FڃwG@{)J'J@I8R<L) PѼ|/&hA{SN)s{z)>mP%RrU|'zƇU{Eb>-T| 4 Dywc;7!xlټuD:j=1MB)|Ċ o'0=4ݓ y0;ٕvF/M΢WS,]T=њ7؁}XЃЃfzKVу"56f[S1ɽOX|;ܮŏo^"ș}XgC~4>]sb}Ir b 5 sFd}|MϦ\j%4z4u(NuނV*u8bVg.$b TS<6>{6?f> I?bm҂!7j"CmR`TsTHa.!Bş-XY˭rrNZF#f8|L&@(R+6r/8,Sht4CJo1q0_jVĘR@%f!@BTڒTсaI-n©TQnlg(++`׃Qd&pPT5sBxotҶ_5甝To|A+GO*p R+ϫt1 @0c.TƑD/Ŏ8.R *=FFi&Μ:w'РB h(#J2 Ƀxh[;R\ŊkRꦀ [֨*Kh Ce7dVဌXN1V#3٥eDT锤O@;t\"hcj;,UG%~ ~^FH@-aG@t_[)d-Ѐ"h[z}YzrXHnbrEk;1IVL _Aǁm ۈрI;[b؛ gԻ!sàp!yrS@,H3Bhz;=hc ɱJHLS]Ę8%O;o2@T#_na`*,MddrQ"h(Bo>& $Yщ&.&vx$(C)JQpe:I"hʎkCP%,3HДHc r@&DZ۞7H1$3.hkB9b'N$ԈlL qc@Ma@j67bi@儝/ӧCHzB`GH b;O*.U(9RQrhw1:l H_X%Z] MP9gˬF hG;zIqAvc3@v ,I gxͨt~%w8,jSz׀ [9~\'87@y pb$"7V]:gyţGTzڬ6eݖA{*9Ѓ.F?:ғ3N:ԣ.SV:ֳs^:.f?;Ӯn;.ӽv;~;//z@@/KՙHw}1Q yG2Sճ@buGj x r1zoB{΋n}{3>U^x<ݗ!G\gG05Orz%OD;/gev}P2!cIu6>`G_J 9"_%v-`  쑀`ŠH|}: B  JA @ @B .z-@ ~ p @ AQ0LUh@tf%J'\8 bN}P!FԂIP"p!v>"4h%@'O-(҈(j m\'D4ab!~A܀O4M1x\Sq"&J-a V&& n#7Z B`(2^4:`>a;c F;N$9j;ڣ/h!9wmU(i̥Thd+0Z{dFnHI*\$ $IT´E ~"=ZN|%$vc)7##9:^@ƞ, a<#B#VP?$W~Ua ^iU.%Zne9B8B^8$[ƞ`ʞV\Y\b;5Id@ff4 nx[YP&iNG&2$&_fnB<.eNz9˓O{k gB;ҁLզDb}bFbɡ:TD-]9Ifr 1z @T@(8^<;<%_F^%e~ޠc8*x hhDͥXhh&Va}^H RD=eLX^ Ɋ%g0^.M,Q*: nbPzf۸Ѝ1 ꬁ6')FT".&aBha"hZf9ƥFЩ["x(2dMjYi(~ a%4EL;1$])jϒv1_l`+)joq#jQp<('#ĭlmܺ)zAz%oBI?2.ݾ-nh*gQPh*8MrB"nd !f:.گ d>R*ly C/x M.3%~#4om~֒X9+0+# c sA~2Yyc$:j\s)zmMqsb B>.p֎cuN P39fqC 0䡖#b*'+X- sBh;Y+_J2 i(1r.l7}')jOj8Xz5q7U3TFQT!0갖.Im l16:Q->^/(-2_8bz[ + rrV3o1}T**+;R(mʞ@ک^[&sזAut5Z u!{kDUCV<, hV_S(` @XEtQDQ%m\4HhQ5ձ]3v)^}cXU-L`UDi_M_Q)o+pU4TrI3-n"8pR +qom:cN,9z8 s-vsw+BF7WYNdOJɕj{CL5PڙYb mZ[Ȓj| LmXvMgRIp7qw78+X-];+٭`L!@˭r{eb+Xow'{e8.ʸYJ#b}AH"U%y.NdjpN)ZCCy7IV.LXa՘!BvqIrf*nRP1K&5APfMOD~2zr^# :AcG9|^ќm j[=xY MHl:w:z:/?M09S.;;7sTC /Grq_ڳc:;~;9S|m;;Z |pTmJ}sŻ"h^Ժ㺳;r?W?fJ<-[wk_S<<|-BHʧ߾|kx<<\<:=='/=7?=GO=W_=go=w=؇؏=ٟٗ=ڧگ=۷ۿ==|7o>g=燾>ٗ>د>SϾs>>G~'?gG?7?_?W 'Ǯa?CoA?ӏɘ {'=ߚN{PPA{Կ?׿տտp{z{z{z{z{@f{z׿?{z׿?{z{ۿ]{ۿ]׿?{ۿ]3K?Կ?{z׿?{z{ۿ]׿?{ۿ]O!],  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OLX0[B1 xćzMW Cg)C'$fH!A4 <@5 $!v^|hFD:CR}=#FI[td)L{ɡ&S~=sH0 eQcP&&/{m*Gkh 8sdP6K|KHMK ٔZZe */"ܞpJ.Q2{I^ ԶukFQɑpS:TLRlDqZa;<8f39Umi]WoywF!^#?qULsz2{j1T~Pfu!&`/NA$J"5Jhse[L:!z<}AIME} hF2hCf=RGIHcg3)' ؓq n JQZ@N_Y%:a^) L9_'FeBp՜L}*Ot6c@ be{VZI#B${Z-ƪd["PguFO7#6D`;۞R.'l&:Ttv*fy,MW\$]G:i&:Ac?4I]fISUU];g qs0NFo&AMu|a+6+FfՕN>g4`IJ')գ%{6({5Rȼ@P$nE y9O-(ϲAk=~ 擀0\9Ao":"E_.FH^`}Sҕ,?.0N#}o-! ,  dh,i+ôҰn1(yRɅZ\.'8JS`N%' )q,\"ohCq"u@{z ' @#tC~<$a)_8s)r.xjnIJdNBF>:H!! ,  dh,h+ðү*[1/V ᱸt)"T*ANthr)CsdX1^:Ͻ=#}|~msylfwJp 'Cfj8 vW{8!! ,,,  dib,kl4}r. YSƘ**A E42xE0@XIp`=)g}umG7eHpDU/e8T&$ăg=ʑLH!! ,J  $h쨾i´Ұ]nQ&Q b<`ޜErzh 6@ ^ 1LvS;] _~y4gH"JU|}uzX>X!! ,X+  di@,klt;w/-_ڈ.c YSfMUDa T|H+Z o*DJ̠Lt&cs@Nj oi9\@t3ňm-b#AhdM ̽P`ld#յ)bm#GqI YH! ,u+  di@,kl4}r;k>%(C$AkRjw%M[.p)eJZk6CL~"_a)r}^Z[Um|"*{PO-p@"vB'/ (_W'c& ̅#ǜVl!!,  $h쨾i´Ұ]/L#HhD(`6ĉbGL.ITM7*xi2y$a dWbq`]v8"&0=/N:5re^_^!! ,  dh,h+ðү*[1/V ᱸt)"T*ANthr)CsdX1^:Ͻ=#}|~msylfwJp 8fj8 vW{8!! ,  $h쨾i´Ұ]/<@ ƋATb8$Srdku̙kFL!!, ` $h쨾h°ү]n1O1 8N2NW_KvE Kc|# F.FuCy}|~6624*!!,  $h쨾i´Ұ]n1Q1,14k 屛TK#wN$$ '|@~p#iLN8+JL!!d, pH$Ȥrl:ШtJZجvzxL.zn|Nú~xxdwEBahZz ͵nGXEk B aO B"HC`{m!|htdZ S\ɲ/P0W6ٌ5+g| 섒OˣH*]haC, 4QFQ#aOU(B1Kٳ`"6@y@IN{p xMJ( |57 #5@cRa[] b,w[Im{رhI' .4 Q ^w̨a@D`w/@H0]$;*N 495>0Ad6q `ЊO|B! >2vebRʮC@7MduEMwt:!_DtXLq9^Ă"VJh@E!mB'4JHә9@'r`U" LDnEbpaXEAQdrY$Q .fX}]z,UkK4g$aDg$S@ol"!$=HdrU(ꨤȏ zajSK'#yWAP[dtYwr~+f밹e@xkd .m>j@6 .#5"q!=UT.j6G>fѮSs->n;8]N˄ƶ,{;q'˰0G!<C[SB:c{ U:+ѪRXMVyD pb%6wht[["S8s1)$}E6h^&յPftL;nqF3!6 0' YO12P,` @r@ TQ@PȥX*[35bj.@d%,\eK 0S8ҡne?D *M#ߤ-cUmir2pNETMHGJRAщ^]'ZPSV)#ɂNu2-(9bJ.4J<ԑ ""j`TҮzujTI )tSѹ†^Z!KPO P$Ea*K`J)E!.rԲU YD+w[4W/u 2/JҚv 笩98lߠN9Ԛ-t[1斷Z PE2dpq[ЍtP:6}MsqY=42xKshhk1t+!F>)&6 uG2`yV^Ch0HH K5f-<(RkQ+TnTJ=9zf]{=)K[ȷDn.IBV25i"JGިacJ.@@";5LOuP!ƞBGA\aʍ)IH rx4r4Z_zաQeIvt|&Ϥz=lgd|wñN=]Y5ru}=C{^dL޼Õ u̢ -H); W&Tzʕ,.%1Hhfp^V|}8b6#@~S]sa~rT.5Nq|"H(s?>Vd2Υ.CeD&K4C'QӁ}J!c%6%<4!_i&t7Wh]%WVHuZ 8D1yftT(T(~0O00)7IYg#7JąW%R4dczޓw(\dj-7򀾕wHM6-X5`rR7$z:T3HhX&0慧P6c8q84irb9GfX|:ㅅkT#=8uzCq<0EI(csR5TN?~ @w-\y^Yd-#CF$tE[d)-#M.x+_S)BjYY~<wb8~ؓz (1mwSU2=41sC'rO&S_9`FٲgGsTf ?;)H5mh]?42=x hy1iP`+zsIe+Ty71xOPU&ؕ9pf66㴐RC}HҚcG>rSzgO/8v2!P)7(iIs$Wdjt)<-g6I]4K߹Uu`iZS,ɧ:~w)6B Z7h&~q˄3{8F.EWX^WTbb&_A#Ǘ3RʚRຒ H1m6{WjHbӭPL°qW6h&+[ǧNT,u\ɵδ#tY\kj3o:E EYJZ588{R[*_ W5\RSP\M{u3E p;RjĨiTZo~ LWk$ooaGq۸"*[;5F; 븠;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\| <\|]+!쿛O[kFd&,s񽌠dK+'y9n )<:\q` 7#2\4\1nbdQA(d1fg/8GlI,I]<I̎~֛``\ fb0uAWS/HnCVYDwiGdlspA;?fpqɅ5\tTj1Nn31ɧ.7ok[r\+q˒ȪF5kዱŊM锯Q 'V3Sqì;A,fHVT! Rw5*R5z͂K[*^$NQ|-Kyqi-Wv̉y)s $p%{wv GA5Txn'2m09{hѼ'Sl{,7: bi^ )w(gP,<]8e22EM7]=AG]=PT,&aӽ)v$FR8cml@ U\xkdzz|XyzS):_n|}@7 ۛ#|5yӶF-^&{5R)8 ;=ZxTPa_ӊ}H<ی?/˓UDka6MCmr;Y:vigrT.X$::@Sa΍X21JI=bLҪݩ~X#!VkiPIJ2;T|y/=}{ ^klܔ4fIZ/O %i%#B'tRy7TcW8>G$7ikLxQPނLB۫ c*i)J!#I.[{,)FSRμ5Ba+;݀BIfӲE]К-YIP+:sWw軔ӛ{;L>n:TCJ:_ P~ʙ HI, ^t>xr 0*:~W k8:A 1rƮ~"*,^$6*9Ku,Y&*[yG7eDG'TMǩY9,㬺qɒ~ŋ˄/̔jjNlj_xX|OXUEnѱ3,Txw˴|HZ/{NR`q6UwWP,Uj5م=| C/}pvOҝQwҥ0~_\}LkHa_D?_@_iO_&5 N_XN)Ve7Nzi˯D}o P$Vo?aӕd X4It>QZ^Y~alD4RA !ZQ!..,(..*$/ 4A '":1Ti-Z/^b`h4mztߊ2=Vi#>K NT,ʾ*8Y\rL%ҀaqeR勍$r F8bE1fԸc @F"` F2sG0\R`KH{f~*Q hHt(mB(S>d0rHOH̢Z$B]* ]3W*rJIH';E%PvmaÇ'Vqcǭa4PE0G=b pћ } 9עlNj JM+* ̥ۙg*Hgq)ux\Qt#KwwH063\)q >z(g`Л:V/p ‛S@VK 9A Q0{PyK͠n[Èi0Ad0B+$k"3@)jDEh'T =\dǣN$k$=*OT2 ܑ< Բ-I2$Ttv|A.ynRrL(!R:ʊ*4QI)K1(EUL?%ЖTB=8 SM$hZؔ:JkuG R4|5!v{5Q0*YgyVZ >eœj{4*$y­5 %LmwፗB4}tH ћb#mu-<]h~euan_$շg8 X5}ZœAMS>`F+W4Iz~y(Ne uGyNZ饙n @`b:$BU#:);%扯#HR8xc{}Nbb]}he-RoZh'MjUо61r('`A]IG~3(f`4 6W礂hvNMTln]X+&xMvN[zJNԡZaY.: _׾>O 3H|&$-A7?{+Ee쇹hisjJ@. ܂<[(5kn g$ BpY &z@_f7ŔWk!QTr? ,3,o(p 0 2qù,^(t:]֢rfd撠X*E-A^<qLH!ܑgO㾢A<ߘ;MNYzdľ qu t rM |L#Ά*QSQJURRZJUnp#' $(g~RSe(_O @W Ϥێ(&wL/4fnJ!H%^`׽zʀ\؂잒:)"lH \FWΖdEؖJ% 7IMWM>*%G,|;jADGd%nY@Oin6von B̓$+tM׬/4Lt[H2Ao|h0`x',a4#A✢Fp[`Ϙ5`n=d!/ᎂ(NغJMv򓡬J>]re-o˖HؠaUze6ۅWaThsܜf)9 tV|<#F{vhAЅ6hEЋv!iIOҕ1iMoӝAjQԥ6QjUw1 YEWqG݇DF 81FT26DDnB #0^/gJC-p\1nN9 [q$8enТDl1BI<^tHַNۓ}l j8n0& iWp0,+ Ӹi^ w\ޅͫkvmv; +U˹ À\0fPwϣO@S8DbA =%@yG6]9e>۰? T{Da2щjXD#IT$W'%&pN.#`TBS0qD#Z`CeyMUn6ڈ.Bkqc5Oc8] cyb􋂇Q64C3_#J(HwwN [e!#IR=)HڈgPkeȋ$<0jɜCaڮLB."qrb1&ച  / piC&B_@0]gwfBK|F i0#8ClnB 4/ 8 Zc5$_JE~뢯:e,$lȱ@pf΄lQq'6ɩr#%E ąNI/bV Np F0^F;.W .pFJG"nRLW^?2Dx''P\ IJ'oIi[҉ "`%cQ{# pFmJl@*LZ'`rffBý 0)ݴM]K&Ƹxb  I#h/+H 3 d0"5fa(+*$4FB*MR q-btN3+I!uS.c7 oP'2/󁴦8&>886I -$91s @&sʊRU"'bi5FK,).'ю0Sos s1ܦH‚Rrlpr9546ayh]G#vlwڈ{2;mM -'eGvLvpFa{ڧG٧}֭,= zut]rgQ!Ng $8ΉĩtdbL$JR6Qe5OL[qdI$4lkNrc/I =.TU%SdTvʪVʦHm >j[aMH㠒ҤLprK_>jݪU$Uhpu:3R2ś_FPa3_ɧJU+ ;$7l4EVKCZjjd᫾KX:gX+Ϡ_XqQoEe:'+= TWh-br@a>u~6A1"& WSST%8e~WkW[octWw`Cecv8.lpl}#vX8]~q:vW| ~$NSP+D]h5cCdmR ZGK>RF$< j@@!aU 4w ֧w'0|=%^{+NZ솉B}aOlBL8?O?'B lݬqmՒ/ô 2L1 R7- ro$&1&"l:bLYs>}Z-,u^%%`vjaY|-j*E ȁM왣uXA, ʸٛy91׹}tˀL,1 (⟽ADDM!:YD :F$t*.z9=A:EzIMQ:UzY]a:ezimq:uzy}:z:z:z:z:zɺ:zٺ:z麮:z;{ ;{!;%{)-1;5{9=A;E{IMQ;U{Y]a;@zYq[x> jK9[{{{??z;{.|o;@{[۸Ay[=;{<| <|!<%|)-1<5|9=A~ >ƹׇ UeA@uʁ<9؅/>Ü\x[|͡imq>u~y}>~艾>~陾>~ꩾ>~빾~KY}Ş‹;ًm׫}`ÍP~[׼_|?!?%)-1?59=A?EIMQ?UY]a#c?ɞk?%> s_ms^{ᕟG??ɿ?ٿ??^o-;'>+>40|B)jb-1l>5~9n=T% :"&*.26:>BFJNRVZ^: * }`@uG)y #'+/37;?CGKOSW[_cgkosw{ (p "Lp!ÆB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢM+#ͫOf9+x0aQBF/ŽC^TnUy3g9вy4jez5Zz6ڶoέ{7޾.|8Ə#O|9ΟC.}:֯cϮ};޿/~<ϣO~=Ï/>ϯ?X"[n%ؠh&ۃRcHX,rauX⃓RfoآqWX〪6 l4CYG"K2٤OBSRYWb[r٥_cYgk٦osYw♧{٧ "e3nJ](h=ZOzMXiO(rcE6';kN#⚫ګ["2۬BR[brۭ߂[碛.6ꮼ, iPAb"r3|2ڰģCc\ɏfܱ#\'+ܲ/3\7㜳;ܳ?C]G#K34:rD}6a <oq‚hof{1-\w㝷{ݷ^#3޸CS^cs޹矃⡣K;51knl!~MbȎ·_jCK+#3߼CS_cs߽߃_磟߾_8:~.a[T_gטvӅj q́vژ+h b0 ;0"! Kh0*\! [02! kh0:!(N5!Q(ΉC]X$ȊM[l"/1b#h31j\#71r#h;1z#?2 WA'u&.>#I(͒b5AГ,DiSɋwT%*rV2%-ki[2%/{_3Œ.0XQi)gn `@`tD?`9yW&HJ9(i;9L @>) d`lX?3픂Y)$TCЀ|j (G'0@vB=ΐF֌,@< =~2s@.`\N@nsh"`Qj-(JifrR8@IezկPki g0 ؂V}1XJ@-"Tս8`fj@1#^[M&BK+t @L 2Ԙmpk;W ۢv aO[[6 g-\`e;(VO8mYk)W6  c@ l',8 \>py$+8‡NAU1W`@6@Ōcy1 yc|Y]zvlޢxrhr[Lab)lew2Nc}i: 3OW++X @K?Z ^ir(tkJC׿թP6iGi>b9MG8VUhK:ђ-j\!6vBN9KMprTJ6^ik٨5;2:R_0aNv%}ֽu[ԯ [x8'~ԅF8:FÝ;Ty}rqi$5ОHiАMP mšMփtpP:ʹŚ|YNu}QA]n/QC7eL7}P 1u&YItP`n A$`~5'TPZD VP}?(GqLcMd>(8#$ZVL i\Y#POCK*&dͥM}"8 W|^2lTY X>4&| vP8fFj衈&V)xA^E%h^A-DnVcZ&t G)cl |ihjBBNkhOaѬZehT h" B`({T"d,O:D^fh LX)Z#)]VRR"N-kr Ϭv>u:6n҄Y T$-Ցe~e[ujB1p&r%1 jn KLDmщ*Rlq~ǿZ&vRSP䲉UFYۑ9_M}0̶r0XpBvy EI*ln i}O ujpQmw+e#44[ی=f( ̂TffMNp 5rCXY:Bhӌ?-Jp%?+J%꣥۱n4}ق7P߶*(!a.5N/#.d6{VJХQcWģMNP`SX v2kBwJ`rhL؇Xf x{V"|ǞAhF0 @vy|o&:4n"VAԅ2G?$_s֡]3{[D$X_39L`_h=.̣U' p,@z ߏ*`2q##ɖQuQͥ,(Od΁ט1M|Y(aP B8FtI%TMYJ%[J.HԓFI-ys"CDaX#vށ2Aj)J$=;FSr:ѼW/ $D'&(Fم5ΝF[?)JҒj;HWҖ2R8ͩN%S@NJԢU=MRԦ:PTJժZU Qծz.Jֲh]XUvնYJ׺ڵ r]׾2!i%!%|ȰH4̶RAl`5-+?Z6*%;YcU֤NjY1ys\Zc {-\A˿F*[,̾t% !Cq@emȨDТ |(Fl@eʍm_M`'krE 0DouRh>@s@ V+'y0;^h"Q (Pd\L}9*`4#xkek7񓝐k(i[kPJ/ Y64* n|e#ʙFsnMYhǺmF hJ1Kʀ HYx"hiX,]LX 4#ɖ1,c 4ުӆ3fLU@h)[hB,9P*p",Kw|LLY3)˼"\y P#'@4u_o:D6ӐEM. ȍ!6Ngp!@.9[Эlg0<&9)Kaмl f.~Nx4H.FV;is(W7 U=*I!(CQsf+ONSNO<c\rB45@{p!M}0tĚ]+A$ˋi++$@Cp;hEI] I )͑@. ēJ׬WOM_\QE@zׅ.֗)_o3thnkcF>}ȫٽ`t/AV/2(w92OSr׼Z4q clfi#k@M>_hԂ+4l$0q]p4&q7hS,"7 5$C1lJwPpv4d3P/;0c~  H@XCls~z&h/7kjXA`}H0{ :c @ASWbSvJd&z#bU,`&S&?]@:tt!4D+ZaȃcG ekcx{g'l{zepdy< =,U53"`?^db=}ՠ=+(q8Kt \䆡jw)~-0=8h7{l|X$6{?rwxhX]|4w#,R\D%`ɒA*7egG2L|x13/@s9ي8[T:.a/09 AYv)~YH[BF P;wye3Tx_dj_kVDECDE8C64X~':D F @=u03/F1.&Ayy-6p2DYb$h}4Wa=i1IxD:1gbM4+@IXLC^oEeOHqgb(Ii(xGi) b%p-` s9]{&niHNyfFY 9$y !sf6{(X܄yvILU$``0ft!;~()Ă/+u)a :aIXr+0KX;Ct; rc WO!C: z!w Z,OBZN(P=P1GtzIe1WBv96ʣ.T-PMVh J9~@5JBJWY[Br^HcZ8/;{ЎܘGbtZFSvUs|ڧ~{:ZJ!, k\ 'dihlp,tmx|pH,.ƤrlvΨtJZ\z&`zndF HQe5 dt3>r/gaN*N$}/%4<$T[&6&% QA=kG] E6x_KY%R#(En7)%P*\ )[ŷ11Wb!IR$ч)GB$ˆF])@&R&I8s raO_sBB7ɴi?CO\BGUPq0>oNÊu%Tz"늯cv{\1S~6)"j 㢈J$銲kRLo0LӨS^ͺװWk{rEr(S?  QZ3ȓF@l뉣$,`|sHD0/wޏULȖo"dIHB?(`?8 sE!!!5/(QQ ډp;(X Q@3^ @cBiH&L6PF)TViX2UZ\vw})Wfhlp)tix|矀*蠄j衈&袌%hcy PZfJ#]*馤& }>z"کWr&ОOkiȔ:R*J] YAvڷi+϶$RkmfoBRv.Kn‹hT D0A<q p+hd/Wg$#6vH 245Aϒ @#L`H |p173O], T_ zq+:0G2-0ihפH1'oW [-Mi4 ^~$j~N /\o~gFOw3܇:-j":JG׿9Fa X (Lw m|A=ye P@e!9`.o a'y  Bz mnT#R`.lH"h-Tш. D8C *gk[/ lVx5ni_-XU⁽=+O MnL @쒦czu@+D\pZ,A^{6< 5҂O$ʧKD&@f\^Er!3Y52VܽW S]..؋ IW)yB%$;I*guNI܊ 'qRR^Ǯ tm.̨F]h+'(?*9D6RQ |YII B؀<.lOލt -C SBFn3&K,4+-tK@-┋{[^WHS1lm*Okֲ<2f 35`3'I!V~z9yD"EWgMUXBpg\4! ؟K hz2  xPkώ 4YQ^(Q,עiIզS8U{;NL<1?CZOn̊L CcH@)pYV|nY9DkmtjV Ef\XnHn>Xj4P_Kcz &j<(oN |~wYr_^vM#t-I< -%ð p&vS?Tɓ@5aBw:t p 8 U{<يX@Z<<#V1$,jU8s tau@DF//ˉkOB0|ĐȢ`'9S,UBslypr1k  >?}6AExL~Xx!I_wݩ$zbfh>[ ݍ_D?%,(Bnc#w5G}.-(wТɟ} //¡ڹt;x_@'LQTkO]ul{Rlq/D?1hG7>'T~'+g("R !r"a ,HG&4Fi&wW$6,؂*еR&xr~Cr.x'gփ@8jnB5X2xA'?-G8=O'P*8v2W$mD{\H`na/Qhj؆ntK8tXvx|؇~z+Xx؈8Xx'x؉68xh؊-8o8Xp؋h8 xȈ،`Ҙ 8x=ظ(؍xX@؎(88x'؏&9iYy ِ%rYȐؑ 9$zX(!, Ld@ dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.zn|N' ~.u1{ṾӃ/6 \&@81U@ 8F Pp'A&epVpxADL$2$@4E&!pAGU\ O%e(3D@ꑶaOT-dcT1P{wE/8#`|!ukSK0FYGbQ LbD{5Gtmތx [mppd/TQ/(0A%d>]ādxT]Au$GuqחUEН]p@~00$A\ U{A ^4߅#4g>% fByũQoFDCpDq<0 5_ uT ى`Cȏ&Tlx" S)CEPW0)PpC96Q HM( xBfQdngs$QQmeYxifL:B?eZ%A[ZDhe^)~iP ُotVEjOe[Sh\Y[_'[#p$zkRIV.u*GyfA( vН$ b8֛*q0gg:!Vc)(5Yؖ1{Bg2)W92!Vq\|i?:#3W)b58Li֮qЪ͊0b, *[[ (k7c9ë1#UI%pG:g[(P*]qE +ړg^>6ֻ7WCO{`0N.*DΩpN kCLx웠k0Nb|afi<dWNH or?_`Q+J9@OLtGiEy(J #-p#eA{J s8潌pA FP,ەpr[۰ S zOvX XZ1V\ȴ#okb@Bd H@XZ%.1Bpw0VC`.d 5EI@(`RSd+u.DD}J# .dِܞXtn%țcV'B^q6F|(ɤ9,8|4U1IDÎf]u#,_n&Ny- Ar[-btتc,Ϯ_߂+3^(p F71kO b ` v>tBz]誆C+(dJNd*%~Aee cC `%#Cc%n:g a`DexX_+Aa'HFM,Cr{)DqlPc8)HH;iI\=S"v4O'>:JMqlLy:@*iFTcv<(4e 7[l.j;v^Ω>{gl0RS|#5 xeEb)eJ;IsG4LX7OI[5H^̧'fH zWdbౠ!"؀GVHA- AFR [ GB220iϮCCrg6ͩNTnP.HE*Qӥ: (TJժZXͪVႭz` XJֲfMZֶijJ׺ r]׾!`KX浰Mb$:d'{/*lqX6ݢX2"d֒}ujXѶOu6H`EZa,p[qO妕]_SY_tݻsӵ,H]690Փ~c0 `2_ȡe]rD/~Ћed`lE+PA>S Zc ,;s[ d̘OfU8n0 P<#%*z`p)4֍aŘo&]1 s )~\@8OɧCG #øo*p6 nc]~<4S0YXmW rghuDޙs*H)^|v# E~=+&21uM@kyhL~atZL:/ágl#\_BBI N9@OaR͹ֱ]nAtQlaH{Ow ui]$]xσklVvIۿwKqGVᝊ5Nu:bw .juvt|K sWmuWL`fnH[3`j>nb?nTj[!WyXBI|0sǂY%,`Y Ms.߳߈g-71,XpG S#ΈO$6ScBr`${tiHP~ Fx) yY W7v1,0):5Qb-z^@f/O-6@$Z&iFLڤtERze7VzXZڥ^`zU!!,   di@,p,tmx|pH,K-ul:ШtJZդ6zxL.öIznp(: X~ϷΙ}`  &+*"*·͹ֺϠ5c * "A NG A ]`… `H<ꁜ #)x[)_-€ 4<)O$T lS?I؇Pg[%M53ĢO#\oŠD>NE`,* Hh}DTF qGx`W6i]4f4 tʖ +3H\3((-GI\V :E%m![&ۘEݥ, WTւU۩qFN Y >I #.ɚ0GArC#QV=>#4_/A'`C%Ӄ 6ٱfҍBᇨp[Hpן5B_eF 桉8Z) Hwk& ]P+@ uXFB"sYrY͡!`V嚋8 le@B=ފI:iQZs:标  FfzVd_FDΦvl,J`r驨EjGj+( &1+l`''V +K+9 GjjũA@8r8:é>9 l ٥;"+z 'X{-W5 hD `jAr, )lj@ı;ОG6Uq2lB"E<[:4V#/[7kjYxIp0(snPh4; 4@FN^x?) CfF0Jf?d՞u'Aa h̄0H/ ٌp%JWV@:K T>i\#;" fYL'0 Ȓ=We 0 !oPDN f5qGm! *T7҅.Tk8պ0I/Qbԙ&R֍]UN-ё;U3XUTA=XJrt}5ռ"iNC{^#O7 f[j.cQו8m{$/J́}DI1"\rvH[k^e>؛O9&Tt!픠ꇍMYPAz9$\=G:m j*-Iڔv Sa p ͊]X:D3E& bE0F V t-TdJKF2:UAE x[!"XhN3@I5Gbz8Lg, qwkyπfAϽ%}z3|,(Be2{ZB2Ek4nDӁBB"4:5 de%X@  ().ԡO$v' &p%`9D@A,e % T/=gc` GӽY0Aη%WlY#jp+p]nBj(("zE(!(0U` +.}T_mAXYƖ( OŘK1`Tcj l_V:q IuhNk[z,F(P@1jKƁ@u-H .T?q3ކੀ%< hV@ۺf2tp63bfubJhN;vtXy 1ª&Ix M`3Xb De?HfЈ1PƲ ?#"Õ :)V>mso %Uё2'EPAPdep2Rs$0$rT$u,QMQx:A4'ɋZ&P@ B,NQEJZ؇ik2Y,'0ymi0 YP6zǍH)Q=ƣtF3Iv h49_'ӞfhM3GARj4rNyj`RovFjAN!5 P#g5кij1Ql ⫞̳["9 iuusR;~]U+tuZ0״NQ&1IHY8tقT0r 2'xZXV`[X,NңZ$\ ԯ,z {[!rpI`TPIW4RYNɜ) 2 :Nj@r)a8PnL! GL_v'v%Nq- U0sfT`q=ҭꏡcxHNr:鉓=UXβ\ ur_L2hNs"|5pE!,F  di@,p,tmx|pH,Il:ШtJZJuzx&zn`N~{Cq,| * *Lɀ ʱ ٢9'ڳ"' #*"0PA"3S (L8X ҳW y6a ,zAl^ 0€@?+v@PD%H@EG8$~fȴ*I`f{0zO3 trER( Ζ+C؃(‚v ' X7. MSD,$ G:Ew0˞]hcs0o:\8>TKJ9.[T RvK%,w|T w'oEf>$k!ǝA ѐX94Fħ-:襷~+Φ/]eO&S8p?M=2qp-(2xHݓ߀wnރq⌧MC7.?>ugq!!,c  $hlp,tmx|pH̩rl:ШtJu"լvz`.zM|N/+A#6 RvD{ P~ }_xI8@ (0/'5'PBPu' 87 '. .6ɷ?OtAȶ75²,ݤ 6 P=Nq?;p#&X-[%C5t Ab'0  E X$Ih Ō&'LX1Qļ@:5:Af dH%T`ҥ4pBzs %>@бHdv!AJ,ly@#GL`c '!(^)ڏUE$8N:clySG,,%5nW Hz~Ӣ I1lIyw')yBHR\^>YPn ʸ>+╍%n9WSB@>P ;cۤH]KBkqm%[k 3֞df{/;G\1H=ȋ@}н4X$]&(,$'@U#Tne jٞx_ XcsHʍ皘et>ʺN a=ŃRL Ezdo#.rk^J'8&b@rqژM[k^)RjjqL,.lQ58ޕz2 e:S ^4Y%9V]iM|Mdi~>|vE psaA 1 hIdV~.3XDܟ?ρ-EaFBXe# o +=5W:ifu+"?hOT'XЃdCJ,gms $ԀAQcIDI\Wi@% 'w&2r7ԣyOxQZsն#,;R0Ez#(0X)0dYJnh]gGIKF7v%b_J`yQ#|7$VXPzh? T9|" ù'y/ؔ<0(=4(%*HwG! ͯ~P2w ~Kch"$LᇬG! {X-> 2`gb /Aʘ83o(DL"/$!,n  d9hfp,tmx|pHrl:ШtJ"լvz.z|N~|5n,Kp 5 }Q l6s(t(0.( 5 ɟP̻1( Ckǀt+\Rp-:W=2z ^+")Im ,/, R D _nQ^`L1@|(_rXfpQ&"a!PyUaX؂5Lp^1y8RLAS"S߃ܴeY]v@ dGWA](UmրQΠR?HB6ЉńR[gp@)D1(O<>gN -uDq.Iq mf@a@^Z)jYh2Y8&QF)\ c ",@3^h:ۭ~J MH)&{ * kTF31nlf-5(lJqVl ,ۧ}h"Q k';!Kl1["l#ۙ1qPRʱ{P̑s( m7+i{5O=ז0n7OՆ5k{5PSc :`gG|ÜtKv1o9<@J&:}{{]uv 909Ì6 \y0 O9 U@xUJ֣_su9f)Ty$. +{] !-lR,Ab7 G݉bV)KV戭n}z!"7;@1IЉK%@ يȃ4%R=IC&GgqZ[%'CM8 Xf< x̯xؿjF ހxG-`K5): .csyMpr6ɴAMB|Sz6 W ئ&AP`DV~x6=7B3ԱG2IӂDQ9VDzjAB,%nJ$jo8rxI nzEmh Z9t.5]zɗ4(Gu'?Йڪy=_:Ik2iҨyh>]0Җ u9z')s#EF+$(J@\iڕpEue "luk3|Dm|MrM:w$_#Z[֣5uCB!%wK^XQ+QX.J}zL;r0;8|ă'L [y!,  $hlp,tmx|pSQĤrl:Шt;جvzJL.&V |N~4m+8o 6 R kPO6 u(c8 H/ /' 6'QMO0'B9)"70 .PJ̸"Ӊ(*9/~h0,<.!4ig\n6bW _9,QHcw'q,\d!ƒ[A'Z:+j"XXGֆ}W%ϵiP'FE2<" : k%>PF%*C@s'#?; DZksĒh1~as?k ;9 XWuB$Q@A_o Gjϼ< Qlş ea$#+J2@h@1&-Ajr9@"<l8k|a@yK ^X2wvLf$P9Ps[J!SANq? G%0DidBo Mp٫T`n%#B9btI gh rNf @!B" K;B6xP-tYP +zbâvNt-P}X@} Lf?Tm@6C%(d87 KI@T*&>pX'Ip$,URl<Y?U>Jl5ğUx:8e `:WrMb⡰5'bKZldWz xXYXPMjWXNlg[-׶ͭnw! ,  di@,p,tmx|*Ȥrl:(hZجv˕RݰxL.ynؖP~ p4;r#j$*0<"" & *, .#ԦױG͸"9+7).*y&,hGQ 

@Ox TOJ1gf)R7l3AL^[#˺Cwn3aVzq Zݵy* MQ0Mvix|#>3V حo3H :N mTL>7gs~|Fo,0$y;2A0 y1L9w_b6cE'n+v϶?2L\<;&M,^Zڎv#Xjy=8vtȷwwp uoQ)Lp~[;U d^q*b@$!k<4,!"CN= NLUXĉ CH0Pva3n&v:GLZ]$dч 1;,@Z2 9iF-N0^ 62 }g[آ)+3`,(];:JsעZ+o p7 ȃQ޾{:| [z=RPQ3@E)ld%€@-U"p ) P/%*yDVDFIY]&l_-_g@Y*U;ˀa@ab ax>.bEY/e"xn wU :CAScUc`]]D {zG@(DwA~4gxIX `YH3@(.ঁY%u& 8@c=Z ` s'&_]A`^`"݂ W~6`l1`×U))*QNLB2S6G6(pA\L݃d&4睒ՠI-bb>-Ua ^8^P@jҷYГ^ `$ 0mm^fsQiX'lB ASjCtXXz,ؚ`?GfS"zk6)-Y/~v(Vlkf %-4xN 'LESKC* #ֵ펐 E9'˵9@ƾ$j2w31OF/ ' l87/$\G&0AE\p#1!.>-s ѳWOŋS^P`- nNE|H".0"A"AoHچ:h*25S& Rz(kcrJb+W"*aSd[w3F yz<9=$ v#0 \ i2ضpss57~KQVɔ@zbW0WP:NaA, fQ@<89A?xcآ|:~jyRò}z ]k9vBO(0>ڢ.|z2RZC\QtgO*D8zW^0lj9 ykU(Z񨢭,rA(3Y6im/ś`,+*Kna_qw2\2P^mߖPpB:H(A`@& zaHoAI4hƃH(aFq@ htfqH2iHN |!$"Rcb %(CYG` +Y`L K+'e/#2+rє0.L>hb͌f2-ԁcJؼ3Onz  6qLg4C!,f  diAp,tmx|k Ȥrl:sJZl.Jzx|zͶ 5EfVy$8#o"tG)S0)yFJEAT F )Ho < IfǣA'r) 4* w9 $ $ x";B gAZN.8`EHc5 ]O*4(,`j.;p߾tP*FH 2(V٧sX#pH|fi鐦#*LQD!FEpP"(rcJ@?HBhL$t`[hm8c78pļFfNo2DX@4`K)IGؤT NqV(]IW# BL4a{qB)^A(0\ 蟓ASڔTFUfI3C(3`z&xf X%NΖHy9c Q!eliԇv V%P|5xgwxxCl*,p,*YBhf <) tbxKVŒ- Ւhnk{ڊ(o^Cf}4̿g- {. l躛oHoIWߕh]r [`Vo2\:/PvA(QPJ/Y#j@@ R+i'𓑉0RQX7(೼З}qL˙ @:3Brp1$* g/,c2t疛*'!{5>J.o|òLXv!b8,4e}cj@Ra2^x"7GV(ˏo0c>d ʍ%zk 3R`ԏhMip޳J/H0t‚ɦ] }qGc pͬ$46crS _)mfsP9 vBK`'{-Z7CA[6&g3ЃDj&Fm'l XX2m4fkY$g@AT@A%T{jBBE&{[-'"*kV)4} %YJtNs77 } nxdb r3x+, (E~;L,ޡHfػkM& 7l hni- -JP, Cʼ&$cP!CypVO")1B>%a*|/rv X8  bds80"ޘ`AN(k@P1*lE~S=Gz^ͻxeVFtPkD : ,A H(' PvJc.UP}e$n'Bwu!zG(-̀b_י vUy(^i\&DG ^q$MԌh !d@ i$aJ%u<Ӹ!qB$ 573^I/L\0eT\,G.bS|LTbٸ_S87 &]syJBk~C$V# fh$:(DDq*jp uv1țfj(c0@zf~ ,B^A빵*Kb:I1Tf@Yflzl^[v =m<nkPlxK١P'u3@Hն4.N $(A@ vد̢ rM />'@k' ٞi~lIGx5 ncpVtGjXThE&(*3< &jemB E* 0*4),Q(? ~\ eUĈgaޓLXѥPEß~ i3>Â0)J63"8&?`sH_ФNHQ%]8 L1+9h iQ ]%C%r(EZrhW{yW(ʫ۵vr]vH1jeU'a2"ɇ:q'_bzJpXUڨlzr{I1b Ʒk“4] c^a LbkPJʱ}C0,38 ߷~,[|crg:}"s{+g2p/c@r* d: ,_?]ojYo $K';q۾I%nZ-,[a;*#t?ap\*6-&KpvP^87JNX%I@X@^*:/ .% ȅsbPJ ~V_CC09g=a3 V !\,E2е Mz p!JttF3 r  ;u2!*e$t g 8̡hC,@ b&B!,-  $hlp,tmx|ϪoH,ȤRl.ШtJe6լvޮXxL.'gq)LL&$C-|^NnR (uH' F9|~S>E 'P T;D8$16- q# zГk'#l- ,' -$$Yc@؎#@`1I@aV lѯ5߲} m0`$"\,M+JP/>OĠK 0G *r*% )8$= 0  T;°G@.]4EE qG4@kOK7P]Lo+j2.١x^AMzSMaRCg[VLP1UP{mID:X!" }knv,UCӆk1lg # 1DYAS<w D0ئY^=`$hG^b9gu>ԥuD :7h" TjU_0BS$Z-(# 1 :i Aa4@~5ǣ 0]t"lsBԉd1CܨedbFh@wpJDk~t?PZ|nNe^ _T 9T@u klǥvyC#wlnhu>xᮓ6J@ǎcg5Qafݦtbߢ&^ `Q&wvy'Ƌ>u`GʇQjcjْY h/bZg Eꕟ0"(tqY!~o9m6&Qj.OCs (hNLȀck^&*qJ-JJ`hViߐY?sA|sbtY`M W=r@B@Wny ,s t6O>gy9wp1q$h6W$Jq§<8#@D^hT9مQσ:&Rܼ2f, O[>LyE_$y 4hw1V~lOU_ +?0õ1 xefR phʀDsJB'ra)6B8T Qp -47!*#*;a1 !qM\D5g"H!,;  di@lp,tmx|@oH,Ȥl.ШtJe6լv펮@xL.zn|NҁHwx+& *u Oz *' 9f'd% $ _ dk* b+M "T4xQA) C ?1 .R/1 #D$V E\""!*d7k2(F#*q@$&)11s a*aV($Y *+"TYez WQ`K -;6ZbV8bpHĵzw tmlf-bkm-*p(bʼDH$THn!ciŞ\RĕA1ܬu5o2*͞vR.w^+"|n\(̳UFbeEI }5WGެ^EP #uXLd d@ $ڱ`~ET@0bW8EHs!hH W8 TqWyOZ $x&]"I)w9睨ՙ|ޥ'}ӟ`jB^q$!,X  dhlp,tmx꣼pH,l:PZXTzPDVN M1DtrV'wF:vxzL }OF 9cH|HE[@NCD% q"( h s%ʽ,0$ق ~%Ęm,& xе8dv#2<FX⟊ OZ2O/ 5L) e8xY[P)_o}G] £?x7lj(VV ,Ѐe`$dI S!XfY=h%.#׌$Ot?`c(Ay iyU @ʓ Nvb%Q))v@fF ':J,@[X*u(Y(njmt $H\~c1$Yb@z:v*)쟔AۂiW)^ kgK ),lnU5j^F>h. ~E:bku:lsCi-ҠM.⋏֤@+!#wu 4r $F*j\0ǞYhXOWC;8Z4nQl@]R Dt*U #m88S'AfN=8o-˴;4g(Apⅿd0? ]`Kky Han|N[`+߾z> /7ql:dJZKJzxL.znYƥ]nk,'&u8 ?~$' F 2#7| a . t9WE8mU_@F/ѳ  (Ï4 'z$l  -q"ܩ` _+= 8p y(( '"C"LC EH1r*r*i[CZL@a߯?dX0bFa3|Jg`d 0WP_M`:" P}9j NhZ7tLt;mVq '2p B-z] 1PW6xʞ-[Sڸ%5F\*L,EpnFCUFß!]]Y6F-s[5@[O?Av[҉_O60^p읡cMOaUmcD@x7wJ1FddeABS 2iaLq. -b#bb#. آfhq < 80= LG85Z 5.2WR@tUd@Vhr$xD 7֓s?*FRy'c`ꩨJY6Ro/J8V]E"V-R F+D1*I0(ەI\ J)`|Q)j@Z~A&԰pV)qۚnڃiZiy~vVd0Z#d([Jَ[ 4Qg BjZ9 N\H `tPtQNMOc 54t=h[i6k/t!,u  di@,p,tm8kp8Ȥry3ШlMl9Vx|]䴚b{g`),~> * #-  ' * ;mo*N%F,"+"+ $+ыU+#"`FX.hIwCC҉S! [ K<_C7v,AȵOET#H8!(b˖-@h& SmlDOeTr\X`Qh*d}M׷vr|C EhDIU)ܿ"VpD;#Lj"XL*2,pAze=AryP#Chl3x,pH,Ȥrl:t:m*J "Q!eb~L#z>y~GR WSef]#\@j" Tu}|R@lY$d  pRS6aі[bR(V"a' R6Mki)' H .˯0 jQAV]H䯑J%Xɒ~\P͛8|dAb #F1ӧI|H$NZh2) Zs5R*Էx.-UFMˡ dl堰0 B亄KcJ H r )mlb#U]BY^O ʝ{}-vFxZ)3`Qbtr{=܉7#y畏4w}D|]GC D 5c퐞M h*T@jlHU Sl(",N54XWbXSbY&R Ta6&`s ]@B%D 1`.q ,]hlp)ti!!,  $hlp,tmx^|pHŤrl=tJ %G)&q)ёy#S/H ,g 0 ! 0@d@ hI%Ռ^ʕ-DPxmHJ'2hb0j! Qj'28PЈmŸ_klp,*aD%L! b2s  '/N$.`Xa}s%dx+#1pL&׆C͛o$@sTQC1eU 9  ӅK$|(*m_'4Af(^`B9vOT+&W_p\99چɹ}'نU ZAUx=p%!>&P'ƗB"|Бp}+֠b/x@CѶB>< >~;Ө# m ":gZU H4pc JxdL 8*pJC&L(B Y +̆5KTHq'G *]Cٵ*d >8 W5+B D_ms7oěo:07GP@B|@cw&V-%F O$l䩀<$ 4zQ /֑@ t߇ GoRYhXdg؏@- N;u(Qw#y"iPZX T5[cLْAxbX[CR@"4"曻QpM`6̞|)VU,{:HedIs}֥a X]z禜*4S8gpiՠg>\T>&5d)Oܥai}(akpf>40ǁ\eӎp`cz&$꛴;K見 +[G`eWxa%/bi{Y {!OV6Vl1.P8n6^a؃%~y=.~2}(* Cʃ2E@R^,ЛTq< ,.*Z]])ZXYsL\D-v#Ot6}#aQUcN;p,H%ͣ*{t8;2-23d9( P;r&6e礗NK1鬷 CN -{' '<ǫG/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMWy4=F;ѐnMBM#MJ[ҘδzN{ӠSC:vu輩uhu^-k4Tѧv5OqF׽ftVkMb!!,J dihlp,tmx|pH,Ȥrl:ШtJZجvzpk@.zn|N~m.g'% %  < x$q< Вв;r* $V1g"}H0_ )ԛH"y,>BoLJ}6#@˗0`G&1U TOa#bHڎLXjU3SD͕+/;f2($(O8qGa&mwkW(LX0 I4-:%W! dJ%̹b ivsBKIE% yMۧUECwT]fǹ^μWPtQ 1|dӫD%YbW$k$hހ^47Zd]y!qf=[ᇇ`2BA0(b^Og\ӂ%@IZt@FÏP#,x?=p?"l$aF`HQ#SR&%yRt)^ʢK&4O:bhn)fu&灉•9,PVZ fy*jj꩙ꪬ֩j ⫲j+sު뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` )1hMZVIm\J׺o]׾f+K`: ZU+e3zMlEC0D! M^.kt˘=!kAW< c2BZҖH5x㎈Px| \0` HC@n^XnUuĉDXo[lC͡4~F$m>"޷&z=REq&Pf␻9A PܬlWX.g Y8]m`@D"7@C! ,)  $h쨾i´Ұ]n1Q1,a`d¹epp@I0T . &|ZwO%}u@| %O$iy'9'[.c# s8 (l0tf~c$ tn,]2æ)HƟv>|F>O!!,   dihlp,tmx|pH,ȤrD\hd8I(X)B`~imS&6Z; s ''sUi0s" srtvx& sH s;u' %:+(.$G;:ȅ˳εyOwOT&Yq'_O0R-„Tx3/I3\xLCT"ا(gi:7#Bc!{&u[ o5`6dVj)CN# ACy*h# .%:U!l-EU0^:IPע(`XyVDq#V1̂(-%ng+,tgl_06t/PA!yQgZfKRSm[!rfdK$g@wtIAa&x|y6_}i$pUcIF^6~5,] d`R=4ho.(0Xq$t)'pZ+vWT` v5YX7[ &aXSay=%Ils(>I# 6r1JsZ7|D) X`N`p3&!SR<ʝ1hH)Ǣh6.`$E N'I\N}Qke |LF:l!+yC;{IVkIB|U\^g"gM8(մ8)H3U;R,z־7 0-\IJ<<$}c ,Ȅẑ7n@Bl0,4;Y3!!, @pH,Ȥrl:ШtJZجvzxL.znc>dS1{~C ^drE }XZ d Yt]WXI G RSD͟ UVcYRThltADP]W Cf0a,ɈkO,-6(mF>#e~!LhX#mw?1CdI%\@X>r4.k0T>MOJSNT'2Qq=&&;~G=[m% =| "W͌[ Gr_QK8#IJVH<``e7L%"D1:(|ʹNSCI.!N kV;7&183T')$-cƺ+BHAD8[0x%$2 GL\W;d`#L{KE <`3F0iX۫۴m!nÎ|F'4?"Ek5%ӘJ'$`-oSc=3:ɱ) H&!>rh6!xqcb%֩N7< ]"v!+ȹ6ƬR@CsOH:BLb %"L%!<'\SE"Ʌ r%TPG=[`K'_>O$}om[ULkPsJs.SdnLH~VВ e|WGos"&Jъo !3qCT,P j mI<t':H~jў `VYw͢k$,BF>Rq$+ Re0rʧ* d&G,C )4~T3CQNN&?*jMTSH.F+ӡuw=Y_gII0QjiJEjt-eM!FZXNiCa)&F{rɻC&ǚL<7a95WQ;?0m)wQ I%džֵ,J#ba-r~bЬO, 5WV'o kxL = C?r*TbW hin X%Nԭa7ʎ̭yO1'f٦Y$@'͞Ӯ O<T$WL/r$;}¤%47 yKNlT kD!G,:lHX7cQl4dҝ!HV=J4s$|I5^Mqqi?UIS]Ռq&ֽU{yĠw2t`I3%@uUQ18# c$YZXVT$ƨH]^ZÙרtE&2f: E{@E7ud Ӝ[u7+/}:73ƍQGjMOO/'Jo( B2vXH+EZ79trS™ Fij'bFeL"zJXm;CAvIn`N~4j#Şww -qMMˡLmx>gmTmI'Y\yk&*mWyq=T5RI)dHF6Ysy0{IhI@UQɖ=AmD1H5MRGtNgh8٠:Iu,n9oV KMu %b{!#gU&&}! 'MSK!]X`O4瀝fI<(^pReY`5WA2pT Z[DoT+ꡡ 9! tŖ4pUh^JbRi6É(3锉J8Q!CJ@ hG5 })r8'cgXФy~aeP y CssJv{D^Ч)!^V 4t~mZ(} :Ly:GtD(;3I9iZuip/:%$,v5~κJz*剃׺يVL:B媲IYX(DPRU/z 3Zᘏ nJq$K4'Z e66e " EG 6GLtbڬa.^ɥ|,{8:<۳>?[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xo[\é}r"SA W( uzkp*E5Յfv걨Җ˩z5:5iO:{ițsPZa,!X[RkkS\#xvcy[!X{K8ΚhnK{L)|%"/)("+s(2.#xQb2gvb(rR&'2?+,)G9&2 h]JvOq+B+Jc#&i r hq#Rda%['<.D.$- übGPQnb-+,gr-{XYbpbSG;G-F2.SjݛD鏠zƒij ^5חv3n{EjeƓ 373Zٛd'[dckǐLk)/yY\ʦ )?QI.s:_iCS+J68"dCE[kKS02;ߙ d<TƎ &<6~I̳_>t@LyL:Q'Է` tDI TYCTÁ̐5P'E}<=HC8lmW,F:YK4W/oqxNUG@8fk8j*8`oD KI}0$仆sҝ KP zPl0!WtBf"(ItwzUOCW傧)P"huFxKVZN(:ORѤT'PN;6:Z'e=B3EVd'WQq[#3wUָ"[OӞ<"=|NCKA<$T+]epWHr4qQE-\Vٮ,rByb'CFəݟܢ52BZXm -|Fy=vycrMܶ溼zrhKڮ͸y̛zsiIAda` x\ٲyO&iźـ/ b{OW6kVHP^ `XJuy%'wH]\'l4 )Q Nmp88HXnpN ŁВ툵POq4KWlH.匎y u+35<1>X^:^ L~K$dpIxN:  8U|di^pQHZN_E=K'GY Qk_B_qՅ2a{Vb2f}R@hj:tѪe.$'_ܛ0#E; P5` dVOb;4NޠYCG$8Ysq͖ϊي>oxMI~w p[.[!y?5;\rgb72t d׾]ә?|yѧ ye,APUp AM,LPlA!;:f $ @6A QI,{ , )pViϷPQyљܔ2!!r #}LRIDr'R)+R-/ S1,3LS5l7S9;S=? TA -CMTE%4 4*`FQ+r FA UQSi-t;t"U}HH[=@;lB5r!`1cMvO^j $ii76a0Fo 7Mf5ƥNX?M i\ʍWyOkEo '4LLI9zBz$0o_n\^- f€<y t QF*{3`{?}dG.lLԗ_p%X)f`!{;@.M#QNb1[ |G2:ìD @ d+G"4L}  tHe X"e`0N4!)(zh;S60A/`6gd$C"ĦVCq 7wr _Y.B&l^RCт0#W,"ыۢpMCTr jw ad09iN(xzk4c4(5 Xp/Oq-rBݎI=2aEٯ= e }.\v~,_0bԍ  v ?Q-uBhJZE0*3hj~W b[B p"V9X)γ%d#:FjƁ5GI?mJne(GR70h=8`T=1xap$7Ur1A$ɏ ~e-gA샬\7[6 g`$ R3felSgə>pЃ.TfF'z6gpFX.bt-҂F1KGgӝAjQԥ6QjUխvakYϚֵqk]Cԟk E v>EeZ07C`lqJءti#c͸Tcx;&$*bǰ3M8Qٕg|/$Bx, 3cP p7 0 !nݘ-gl;blIJ*_h"^g~0I uh2G'p b5۫F3UgxuꞘ[%ıR\tDy.TTX? p2nuWϚN>܍mY~dz$'EgYȦ;+_brz{`:ɇȘ9x&1xX܏7J zD?K=AWvzJt cni҃G etVa\{=Z%` }٩/?e$|axn~=VDx^w$O.,ozď׆v!ހMp勤XD)jfiJ0ovwZn#a#T:iK_)(ڀCfא@Dǯ;@ MK:ůo)鰮 *-CH I簋P&b,P &oڰEx44Jmjlii15*1z/0(P 11ptGs>>>3?s?KJ83@Dl ,')3B@@x0(T@DD) rpP2$4E@7H(4:B+EF= oRq-TH@NbTb@Dj@cjBEFyY~0rI&@"@!E@!M MT40G7J?cL4PaTMBuE @BJw @SR 5K$S.c 0FcR^62L&:BI Y.- |.)O&!e:0J)PB-@mFWbR!RCNˡ8ʚ#! B1r FVw8{YuNwP+5XC@Y!]Y>HsL&stx_a%`$.D}sً8Nu^M3Tܕ]CdK R!c^ PŢ|E2pjʆ69Yv ܕ JCdMTdx:H\V{TP 6oЋbJ\iB&hh i@QmL FxISCK@H{T}-]f kg /0c*hmmcYTQPmTGII. @f$Ö)Y@)xc-W91wQ5BdwdN) tt  7.XgWgi4`Z0rkrr?i?i4i33/|e*vusŴ 1H GeĀ÷3wxbwJwQVtwk9QkuV,1CAGc wӨCnXm?P-Qn5QJix Gwzp[L tb-qcfV)Lkg81s[v|ue|8s8r{,cA8g,sA,hQa"4Ql38 \X=m`o4e-|ie7ZZPzzd"Ģ# Y6Ga3mJxj #M/u bC9'&: W4g[BJu'.N%;f#w/E5FgtJvG2/@fO.8Cy75 acS;&v8Lh8Z8&=|0ʣ#CO-deu*&o/ O~j$GVf89uhuI=4٧]ګٯB}۹۽۩ܝ]ۧܣ]]ݙݯߝ\K+) dZ7a{KJ~$ 5[(@,i R  z=]GPC~]>c~i7nkNys~ N蓠>6e+蓞k*u !!Aʕ> S2RbHiP(#h]wqߡ4mHT,Gd %!d-^2#7~w^@~?_YPꗞdsuo {?u_yv9Sm}^裟?ah?$5|fҨZ5*<|߾H,,0|e f *26&6D">=PZ5v}.]rzzbBֹA-: +&7C8AC<7;C3CW+k7s{+~`[owÇˏO_۟!`B$J:yFB Ls$ fd  0H㱢#&;R.6 2rȅ7 @ J<@%X JRei)| <! D .?S%Ca!vles6.cεO\wwپEFew5̷}aC,y2ʖ/cάy3TΞ?7<9j$X>1Y﬈4R379rFI(b^:jkQ#=Nw=M~y4bΑ{۷v+G}Z PHÏ/>ϯ?YiMoL`AršM7RW6zq"PZg"uAșq^SJNxY$Xۂ(] DG"K2٤OB%TB=&"H3ĕUIĘBH$lfB&f‰pa*"+ifsn%@tBVfDJ4 QmR\~9rک"ye\bW(m b5UYS:!', p`Dh 鴀>SB+2Bf*tvBRIjs گ\pecֱKF[zbeɡ aҡd WGñ101F$R9JE`ܳ?C-/Z'>T^R!cj9DqA iFF:TQԲvKpBARhT̋?RcݸCwJ5q1ClזdrֲJ9>'wꛡH޻_ ~iq3߼C/f d6s߽߃~pe߾^ßz֟߿0  h"0 \ B0 +h b0 ;0"! Kh0*\! [0+׳-s*t<&1* hDp`Ca&:B"#bs=[f>)~V#˨u bYG0.jW_Tfh;1acx|v hC"22 (!S* 7 (NI* nЀ0R*F4VTD,/pw\ dD@y,eY0Ldk $'=I @# @K2 zs|dYtvHnvKJ-F5deHt8=LP<*&;(@+8@=e(Gx6u*i-e̅

97Kʷ֥mU"!%\kk[w |HFL8ޚd<~ stwS552:=T{,({M!JD m^*5b vKPq(00iIWv 4 UoA|41VYIƋf0Dc*ixYmA+bM>npվ72M!]L3 ڙ-ZxnUN 5rL ^/hEQvE1B9D[ΒLl*WZ qD` dsT\"dC]%-Ic>ttV7+R+:,~[T'vDp܀g'8Ҟ6Ԝ 4DCԧMxcPqcT3.>苿d7ٺEMxC\%c3U~l<4GMw0SRVȜS8@'ԆzLvnOiT@J!W!yv +c e%t]C7lmK/k_fVL:n_dOu ř_ɸsudҞL//uK7ϿJie Tm\1Kӽo!Y-V r&UP 356wmcW&g@ynYEޮɟ?b~kPο=4x<[I_: [R`Z 5+ z^ < ڜ4NL-o ` j ` ``a a"a*2a:BaJRaH5|?ha(d ]}Uaa^ |ՎaX!}MY!Ѵ=F Gʡ!:aYeHj}ՐQ'ʕe#*bxb\"Dbgd̢IS*bʕ ֟|@"aVQH2e1+|Qc|T}1NF..)F7R"tG29!7>F(82*#0(~!=j"xcnm(-Q!b#==;&$@I$%RdEEZFBFVdHqdyCHTC2"HV$KBKjdIIL~M$M&NƤJ$J"Pd$?%fQ?*A2ҀbSQ%٣Vf@!56";J)/ƁZ@ $)BKe=%QMeRe_$aa#_Τb$cc$bb&eeLJcVfc~g$deh$i%j^`c^r&kFiehfjަ`e"U7(~(rF(z2(肦h((节*hh樐h5&i|!hi*^\*vC#v>%%`:#eo}N"WrxiehhV^B*)jN(*B*hBB:)06f(jhNr覞h.*J꬞ꅲj3.dd㘊Yk7bEeW%VtF4RgrJ krp +Υ9 siJ)">fWƤN)zk7Udc@![)ae֞+_:8lĢ IlAE6P,^,fz,EĎq,ƞȪlvǶǾ,Blʂ̢,,,llƬJ βJlJ-i>@Y\'aࡘze m 5*,@ikZ䵎mb/InlƎ"m*m2m,mm, &->n6nNŪF.^..n.ξy(InJn0}g~ln"}mnn6>-Jʕ"/2c#,/TVm[R뾖FFk6'АqN.qjKz+}(f/NGޮgoooW0+pB2$r)ek-Jop~0!,j~pEU)­PP/0&&60Fg0g+qW1gVe `{݌qqñq? !:&EoJ/[kt~ - 7QR#ogw+%cr&k&sr'{'rkl(r/lDBF2gfb֘$1ժ,җжҥ!7g WFΕb/ ٲr 4;%a3ף^jf$+2/7g/:^v35Z3ưv>:Q%=?h=:IsVb@/o e8Ӱ:D$%FE?jtt/Ŗ4E sJtK"tL˴LMOMNtOOuP PuQQ#uR+R3uS;SCuTKTSuU[@Vg+~xWU5z@Z|[+Y5[\__`^ׇ`\bab?b3dIkZhx6{(|Vs6x6i|jg56-6[vEohig5[ 7xl`rg6mcfuj{Œ.^h@6ewX+hdf;vy7RZqzfSuZc{7 T z{On7v@q6pZw}wQ7ySe||wxk8bN{Xm@s8w8ggu|xԷfzxK{r;Z'Dy7#wP}#yǸZGZg R)K983y#DvB7}xW;PIhwx@7^Ǹp^8Pn'8LF{vIgLI(~y9q[94jz8z{S7;::9St7;d8K;|s8{{s9;sCk;88p99x#7eI IBٴ+|.h f@7鸉zb:Q߹I4{E 8;߻;Oy{|ei#QaUD%뷩<#{ z}duWwuק<ˋ<o; 5[Kܬ::F3|ط @ak|=n㺁C|;><;W>H$V|,;{>}4r|w#At;?={>rGƷ8|=+:췾ϼ'tdug#{-ГD=w{C~<̣"E? Bz'>plW%y Vc !Ͼ02 !r[8XZLФHHhȘʐؼLU4\&.6>FNV^fnvv. n\z۶b|=f AZV*Ƈ^=`BB Y@=QD-^ĘQF=牶CcԏIZTKB2ή~G•(^NΛFOP s+/0miP:0A+ .xAS ~VXe͞EVU<Ƨ[$[]h"%s`L?Ydʕ-8U,8zE1rZj֭][/S;(i{pōG\r1 yI%|+vݽ^<.:7co^ݿ{>^|ǟ_~0@$@D0AdA0B 'B /0C 7C?1DG$DOD1EWdE_1Fg`$x =|2GD2I%ˀ!)[ jE3L1ǜmM Mxiʁ< 9ȒL=ϴ35}@*o QEm;4hOK/4SE5P8@ /ԴUW_u .RQhY #\/ ]MQtTeQ5ZiM9Y=)S$>veQU(8Zuew08Vx+L6@[Py+S5 QpPh/ʴv89m!>-V7-*#^22J%F9e;GO]J NB]^NV:hlY QY+%,fQ`6P_> k,c(UNsz6离n¾kc1ʕw~B\0yiofqNj[2ig/0Y]HM {tOg+:rنqiv1&xu,9PbA=;kp]yރ>{{!}a;jo LyDA&b +K[ `19JB%)cAv' ЂĠ*Le !jΖ}bsnQ0/a gAl2auCЇ?b8D"шGDbD&6щOb8E*VъWbE.vы_c8F2ьgDcC94^&:Q*4DdCHTpGH"sZTC-"a_ۛ!XGfFM2%IAQvC7x䛿CbJ" Eڪ+1/x1kڞu=Uf6C[o9/$NqR }O%ߎj`<BWQYXuEq_r?FW/K[WU(rYx7[e Ͳ3gЂz4!H|{Yp 4sh,󻅈,;?Aʑ d5<<C<9ϒ…?Z[:@de>8T"AЂK+9# @*0T@}(T=."AF _)!;p&YP屆B{@3Cd lGE1#P1Cɿ{[Q3t\KILHaM+$bb#IK7PgPȁvN94\N$#15'?{C0$%>ra{2"uIAL!=ҖIRY*ZrLGMp5+*D»;pR)&Eñl8? 2-4r#B] t˘PZ9ݻ?lԣNP,)) ѦaS?)O 1ϫY)y,Ld2>Q{fUsTFkQu*uB&NJ]Q`B;eUE7f8\ H!(XUR),{"A3i|Ә 5H4I?3ROAۼBEheO$E18x*P8pQّ5OudvI(׬:өϟy?ƶ93z= T'OBVgLˁF$OZZ˼\_KZ*5kr+Yr\ ,&2{)hmϦ±ږկA ߸ I i4NxXܿ U{0Z+.@'YUMą[<8ׅZhϲzF#I!2/݁ьbcs]%ۍ܍3^taץÑ(gJӽ0]EX5( Qs DYTȍJ318HSWF`s;#? ,?BAR&;NFKZ`$d[#P[ݔ^֐äUXL{[eDL%BD &\p HG #amY4_NfcH\ֆUJv*7J%yf{k K]<1U(ԅ2h焞(4Igg\PK(+&eIat)Z)hV%3~L0^(Q_/rg *D{.fH71~:hrhN+@4ݿEݡUd\xj,^oA,P, . *"˚ } kxi ӥd*Ui7J x$)B.ޞD#|Z--i~܆\.Z J[G32|,βYϹM}/{?7m$۸jgP NUp005I\PjcoXv 0:0DY#r^ SCѱoO *}Pud=fe[[[+GGD5θM`͖Yqypv뒙X"e9 iU%)G-4+=# Q[DTpm|[YH\;HZKxVS`;`%c SDʷ:hEjcj4ln@'Moc:us+t[Pt~&wM z[<9|}J< 8x͂'y!R#K?Wγ8e HxL+&.?eY*v_6,9K[ڹKsSK sOw@$ 3 r:!9|-{UsYHn4ݛqlsG{ݫ~@%h](OSRʈ_?u-BLC{%[<,&@'uwfZMb&/__Kr=k94d(}z2/\#ZA2sD'B8b7Fc-5,<aeC_tqaRj+d,\OjȐÂ!|CW>M!T+ D6$F$G,  GCL$AQ@4"RkdGi|[H(8HXhx X(@`渙iJ空:dwGj H`@YW@ y\\ q8 pa Z=kfWmF] Xz >% * B$:5SDObxyR13+;dI)CƋ,aBLk-2Ljnz#| 5ԩT)$@@O=境Al۶]kY) څa\I&u$2c/kX2$vM6%{_ :{|/\U UrAKZV+Ҁ^zo }=bDFxǮw @&gAD RWEOρL`w \hNF6*D\H[fb) L2 2 Qad%%mVoLaΘt"JY(_Ns9Hہ"QM"O:(?!SdAjZF]22kp}HsI`=A-)6|wz_QS{gw;BR`,? –I@A[%(*%Zdq(!N9"${y2T*gX2eϴ [GRupXŒLKDX#:3ի6zlnt8٫A]Flٳsd2"e,/ 9Gxdž89Y_yLi$WŽ{5_5X1 R;}y&*8RBAKCMՀ>/*ϬXEO}] 4%+dIC+w;!@SzXk.Ѫ$@nc*O/(s''At@ a6aA w#) "Ut t =\? / m_kX!2BJ\Sq x8t/iq\T?@% Txj++~ %0iiqBsYA0PYnX-='"Yitx)$h+4~MO 8lth!A… t$gn%J,?Z`9#tTIv(71ҐӐIdg<:q-F)Aj2Gt!mDN?MEW.OG!xͨS %wFSEg#nSx6xIYRAF@` ٰ\XyS.S~6#qG#x5gt3+3N ,g1Hf?(՗)QbniG6y>X"F0P%rq!`%reXaWp3r:Ӓ3&4فO ʡ9j.M7GzM1:BIkJ6ٍ[ȚY7k*W#HxpDz;''SZuvzoo%``SDɊj GZ38s #a ]2KAm1?JI59di"yN{`cGgpP,*6/ʛ&7!43y Ec`f ۯ|# K,`3#c%-,0맲pJ<$?϶1mAf,'*TdQAFA>R|cJc3J!+"c2UkV4" T2Ft1-'.x3۔aeB)kDJeP W+QP#_H⛽r>&cAx(Ay;$M?ٸ<=7=UhtH=exiO<&HGʃĽ#?'!]|n=iTk0rh,̣ؖ(ܛ=ͪJxv\Ƀ;e8تHYxS<^n*w6\( }G!pOjEK!}P@%Q2}&ǻQE۫"bh\0Txj RR'%D0j7 i S€8xuUDn ;h ,Y^Jո ùp|P s`uXWV@fXEmcig׈X7m~ddU{!MqeJEס-ڣMڥmڧکګڭگ ۱-۳M۵m۷۹ۻ۽ۿ -MmǍɭ -Mm׍٭iZKd[QSTV1EԔes%؊ޑnvU!XhlfM\Uޙ }w֠Mܝ ӷhvj(}h = ~$%]oԛ% Uibh¦ =<>y>测 huUd)F plYCSέCRrRY6cʻr&aJعI醂 Kj[}NJ.MS~o;Nc%,,ipqw_r0N~r+פAuȆ>v!L啍,u gfWY -K /?pIuY\w^/Is~V<`nrݼPC|0z~,i~Gx=v^(ⷻY%@n"uz'py{wwNz-Y }'{8zu1x Gp:,eywjӀ;T;5y$@}L_01* |z^hKWppWM{)=|9+ꜞYT }͘ }*6^_J^훷txW g˵%̓IV8XG=CçO)j%;]o~PX;~{î6Qa /`:rP !i>7bߏX ιȊ?GRxBo(q<:RX+h8Xp|fb,g}l}~FpѨMß}aA9@Ea) .gH㰲T\1K&$M\C/s.Zbb9)u}0b!!*iKqQpls.c M-p@qaI Ar7,T7HШ8l 7 -[ؐXj!Oɴh @L<_([y)s}eF ́5½(YASZ@Dxelp V-c73iִy;y D=%kɥKB9iT<]4+՚T2GbSA2k௎k*$paF%eC(Pt:vת(eA"_  #/sX5èFCvj'챏_#km۫!dIS.#[l{^Ӛn4`|=ztx3T-;vc]SE3{^)џ[ZԷﳣ6KK&@J6Ȇ*§sh& Պ8  /|Bc3e-ʣ@E:vDRg{t ǃ}~@GTN!B 5:NI!@RbN7\6( rzN벍$EoPkc$m˰d00h9ԋpG:%OT";C`bf;Swj4Qa|X=&F|hPa_cT^ҏWd+k (f$g;5v}M䝗^ymuJq~!H+1 ^B\ykX^#euLx4stTW h=/f8 Y\96ɂČ%yYJן@MكNJ/b(mQ9k/rb?!fQS: + scg{, xR4(wB9N'=7 UǧٯO>0AAɩ"ȫC0pvyVAAe &[í87Vㄏj6MCD'#u $;'ˀ?.QdاPSC(kT6#MX&>/EɡЈ>.B#si I(m}ʂ+t|FFzQ$>DS.CGOI" vJAr$b<,FuO.G8H4oX9GC'e )X2nHP2UU#3 6MC2i hU"Ȅ:5VR,i#kzyB+8fax[N#FBC\YeȔC]:9,b8-^/E=xsEٜOY#,гi<)yUƪqIdXcA)Gc5 PlΛK0AH*~ M2 "O:"eX$%jn1 bŨA\|gX=AӀ([B{X2զLR4kr@<0g4o sLe;yg?9 ۠K->VhG?ґteWC?9iOԡauP*YjWֱuWL7v>Yi&2Lx.ySGC5pbknɳ7w-tEcD3x0Yʿv}&gwf 6 D'O-3{yQ{>}=JU{˞5'$ Lo"׻] wzƼL4} }|DCbC`npN߁eF9hGܖ=_/bL Ng%dp.VoL ,{e.* A30pni(g2$p8Y0yɦz-p&GhP8)U"00p&T$i[l>hf Ip hih0ID AD(3eDBF!F@GQPM oZdf\z@#&o*g(E郬c3T,&28+.n+pfƒCx|P>qyDGLFЏw Cn1 /q<QQ5q׍ ' Pb;DfcdrJ6,ާ*")$R_.) NA!5}"@^` [F!1`P:2G" %_ T |(ׁ oX\ KH bd(LdGL$ (@R 12qQ2>/E..> raeTkUįx$ii ,\a3G%DRULDNZ"J8P@3nv 'aX:d_sK}J#2e 01n/DK5AQn,rn3TM:k crSb<<1 8/lp9(H)6|lOHzbӌnCF 8`PK&Y"s1hxE]K/u0.rOVcFjdS7*T77Mbow;UkV$$A. S/ 4$H>-z7~/#C]ŷr$l% 't(#4)>tTTFtC& 5f9"M&ΪoְO}r,E&;s&XT(#Qh,D%sAU/GDU2"NJ=1kR.Rq30sKEHu!DVFC5 QZOZe63HZNg6ԚbsRff"!AUs v3}fQ5jFltw|4央9Yf"c"uo\00TW>bwac5XmX9u])n.bU >N@U BE9"=NrKgeѵ\V/J~HgxFBb-fn`[_+T:7/zXo5휁6fK`mw0=VnA`3mm;Jv'pJN' hvHq&W.slAVnʵPS)7DE%uh)mKӡw.uS`DmwGJrb =on/xxnl Gw }"H$eqs`>%?rggwKDh?G|jQ[$9%o}v^ЋuSZ 9sv lH*7l,}u0Ix cL'3Σ\.a,ҕ:S&ু拼5-€vf6lvXnsXRS7aBOr dT[i5ƸEL,i Ę2pxfV4#20V;8Xm@ b~gC\83Cq ܴO )g7O-wIH-O)3ɂF1d-@VT_}zMʠ*H'iV)Z,3 %KP5Ɛ01N/G>@yJڹ -uc#fӘYE`;8t7$8M3l3hK/,HYot\eg]NɅZOz:w?KtG5K4XZl@B55 Z(VlU=W tME|W*ŦIn%uZTaA{w:`.0LGPvms_)wo# X̢"{U& jS:}NH[Cfc:l`,`B?a;_4@W*Ϻ ؞uߙc-#]쳹w۶~[zTZ :x;'L;2*Fr9ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+\ʳVIinܤ.hS-O|2/mB9Z<DFQo]@n\FsU{kqȏ]GޒIG5"i4L@b9oaYQVW\>'C8I=Jۑ/Sڝ]RI@&]c΃G}ꆱL_5 =NAZH]g"0=`ݞU<>7/>ʥ4뼶]9V%I:0m;ZeSjg!@tg& {+}wR`(*\9(tgRaNd)Հ@ 뿪~K;5Q=$#>3Xi^a3=X27<@bh?Vs@#^IK{[)H8'!޵ %bt|}"'V%>w^_~l_^=5^ɓY %^b⸵8c-Ѽ E!zt$錠=/PiiɈƹO[wg/l} yq(B0B.G29$ ^h8$(s;o<[ΖtuF`ky(՞K"%,,K};ڎ|Qq@j6#ɇQ%M~<},LOva&`~S蓒ȉIgτ>CugM`#Q mL)P{k |uTL& ֛̽ ư#ZtnBE %2+! A+eL&Ne^"1R*zȨ5n|#h)gAb"hn Α3c"5C2|$$#)IUb,9$?:d)ő;( :P|e7CmI" Y]j,)alc9W\/)iRּ&6mr&8)q<':өu|'<)yҳ'>}'@*Ё=(BЅRP2Kõ2(F_dul!,&=)JSLhF$mB6)Ns j؟5NF=*Rqeçj5E*Vj@+0 ;i`WIVMf["J F*^}RvH+CZ5.T֕n},dי `CfzQmr fٛ֫E_uM}-lcMzEbT/t bɶ=/i{Iu*}KOįȽ.vFְ"U 8]af4w7ؐm˵\ilB{,S*}U6Dy,03|G k)-zᄄ7W.~1 À4u`߶.jrX!( hB+ k:˳lId#hgl-sD1DBW; Hv=]=w-!u!=d'`wb;>3[vZT|xa-Q!LUծ~5c-YӺֶ5s]׾5-a>6e3~6-iS־6ms;"GMK`k;K^ BFN[g`> B=ԆG + 5!7M^x.Cwۚ~t 9/oF& ?Md垩H7,_ J(Ԗ6hZY.̹s%)+>ɑ̡~^}Yt.KZp@P*%nI[âؐQs*J=4.  fKz l ׭J ޠl3` QAزB\p_Mhv̨ mןk_i(O(Ͽpj-[Z`~8389ϑyɣ.Qζ]ESg˲K2iGJ3؝TqkuH5@N(ˑeGVA[M|Uh4XH#¹@dmDݗ υVQQ^[e+fJUt9,@B)ZyZ1A+Z}`lWW-ք^XYǁF!Wx1Wt,wES]]A-KqUWUX _|!$D}U#J`"2a"$e "8Uh R]hXbb}F _%a0B.~ǹ "S10"ԙ 7K`ݴWLPXNȩhdž4c҄3c=5셝>&BU…T^RIicHB92B.AB,/cIgE>R;~/ޡH"7.w#5LN™]%]סԘN5%!ideAie `[Qhel f8(^!9$ bܹ)LVeV "!6$AUPLRY&aeSVk# 8ePeA&eѥPVWjaADz#=f`"P% HNQbX8A@&Е\mU0 EFPeXr&Cob7ThA8(g= q~f_R$6XF~T^5CIiUBo(?teH((X6P6$uP^_(˦p'~{b'uuv x&pgw PKPnvYD^؛ E苆(#ب8}qAB1In%rOM`ߥ=הF yZEePc|@ff5(5dq(b߹QXRԃV}_ڃp/4Ci5ҞPuXs"ޙ{NL#&7 i ) Oyyhp'vm9T&S^fסj^qZ$֠~%` iH\fd=Jj5IPgɏK +QTx)$+ibJ./:pHNXÎ%Pke&plՅ%pv^,rAĝCvt t78bv(k6\3_$f+jRƢa^yƆXme-^!m(쉘,qgQlmh1,nHצ-jpBI( )bf#($oQXʆdX*skVd^փex6+:~0iDbZ6)㶝k=l΄gSI?NMVl&m5b.L-Inn )R 3bVϒJ2TnFE~A enY:+f;NƙҦoxwnefá~B-l0XM*Ef/vۖ*9!$+"xv1~ /qRH+mi, wU~&#ǫ *c/bj'. _*6GɹʂIVl&usp^0 >p 3/侰>nϰb8LvpN0!2V^dnql0`g)CY(OHiiCyY.]F0b Ob$Rcf/cl!@ R$A/ 2r1&m?~lдphor0#'!UU<7_Gfu_>3@&z2IMԲtYNM0#4L43JA+B pK26O@ޒ%M>_by.ҀBe5EDZS`eF`V3V W7ёl(JRț^ϘH9WGnސE}tFWDf:ݙt!#ln8\=Zah3Joom,I6*'Omh˪),J4֖e+6-2!%K-6~8cY)Xgs6Q޹ f-bv8NG2̑c4FyΨ"G&!U]g^k`Zԙ CjTVCkgzs\&N`Z.2d5"u@pQyBR`z!/F/ޗB!U5/ʧIho`y,._,5wʝDK7@ LOXhO"I}SطwdVq5vXmYQl0їrC fjgysſmy1K`9wCF繟y6mm:/cs/$131:GO:W_:go:w::::!JXS]9عwպaNN0X=VPѳ2:E~v$+0;rx93Ov$GEQ81tOsW04RQ\LVhڷg+"80-c+3(3/v{ڽ_/{¦{yp1؎yW<[Ǻ,ZD->ۼh :Am| 8S#@ĨʇIf<λD˥.)bGY%KTk^ % !*Ƣ"~D@f5 u%V1P IĢY}^Hr*2`L͉+_;C XHFS9n`$& 'Un_yiN_xй4@0 8=x! D﯊Z '> B;hҏb#Υ 7"<:TbB%8zn]d6 :af#]SPrzﶵ w(ԣplA!0$)drxdT:VWlVv_pX<>0'4y<( KI󃸹A$ȼF?@ɺA@"`*pz[`Z0ؼ,:YaO|4:rP;d6ix[댫8hO'#IwDJ:+$UGa5)ةoCަ *g,/}l$E8 8-{)?xA#pB +ܪ 3P1 4*>L3Ċ,3H*CB(1/+ X E([Q\H]jK3.Sj%sH&* (=+R-L(8ӫx.)uMpr @ĩ>Q0zG@8'o200wpSN;SPbCRŲfȒB*ij^Rq9[XS CZ?ȗ /!d!YЌ_{Bn& 쌐\s?<Go 44?)NԧJ ])$ư:/ہ1"mմR ݵ=tU4n㵴x&JIdRBfs(UĄe1XoDUhh&yjW%i1QdU|;&5+kp'~@_%Ν(!׈Q5(k[^Est)fa~N f (Eo;y-γo'U/c}vkOc~^VQZQxiNzla^x`>iMGB!x{wqzbmb2}=b"jk"\=\Id}Dq=.[DiߨE@Vp>wE lX$( 1qPy>ȟa!8V'amC QYtwz8w ꉬBH50H0WZ' {FE\=)tTiRFD&)PX8P]֑EՖA$#3?d@L<2G}QaKpGǕNmtX5Tr %XIe!JQe-2#jRQDEiR%F,0桘\Q PF#'eZk5yUMެ8a?C"N;j!**$qBOiY(Wʉ`~T~t5 ɘyƧ `}ک.ܐuGbiKT#(C u TѼQzCn0,(T/#*h(4IS2S.\'X:9H!I;ߖqH`ӯ$~Z]f!#\< %C,*N=v `*QfVl,38bՀ,`8!T#n\`\,zShGjqE]m0Zе=- 0`&L9* _nގӭ0HKԕYH„f`]/ y@TrwwodI)$]y%^O^*\8IZ!v)_LBR'8D0a;q5ګ9z|K5vmFCЮvdUH5\amV|5" F$v1[Pt6FKIſͩ7΀s|mhc@"t"l}# D7=-^ ۦ]hTcTZ r6]n1REd"@KS5*W&v(s+NGPr,bH _4c]@S1sIRA^yl7g9Q+rW%#;~7m PxM,4&Gǀф`Ӥ Y^:vU\#s@ k!̐Dh*3Mf˙ &9;s+Y.нCdC"MN1 2_s~^u3 T':spr} <]I~v= ˷`rӧ 5W }aRb*e)~#@`1OwG^RvO`*ڪ *S xnx?|~vm..ؑѢ}m_h}]uyϯ= M|u{dM{~}+gx\dҪOu _gJղ^c_ @@,@<@L@\@l@|@@ @ @ @ @ @@@ AA,AhAA B!B#z%IC^=( 3ީF9\8,>D-d*;]"D:<YcGCJDK"2;321*b503.rk J.H(/`{ÇVsHfKE_yM<@H" B0 DH֊ˣ\ě;ъ0 $q:ViUẋiʅj;`lGw|G0 7xa WdoN )hЦ%Q#,42 fT W9H0Z&061-Ψ`GxHlG 0Hz.FfJ&HI-xI+JV eQf ||H,JwƟ18@\\EXQ4gDeWEW[-<ɮí4J|K/,4"*@&'"Z"`;)+D-5l6d)6*2 J5ŭKʬLJܝIXK)I!L-x^ʞI),3LԌMݜB̥[R")`KL|.-:4.JN^4C&*# *Ȅ̶MN%ĥQGElF5\^*.ɾhJ0Y<*OO&O4Bȱϼ);ODES/ȵ@ b2N$-$0ɥjM,O(ăT )٪͑jJN+"----Z߲2 ]MxQ݌AH#Z%Q'}R$4LW**@P\P%A I R̴ar) =L1.R7}E!;H+辽dS_ŧH5e ` YKalH8mTGA9|Е9KmMR{TR-ʪSXĹkպ U5UZJܼ4&s# U[Vb}¡U2UaS)d e-ViV#ŬփԾPVj WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX_D yˀh8@}XX*#L 6s4XMYeU0[4'1wWUYMY 80'BsYؠ%ف z*ӋZ11;2|B=Tò[ D3CcjD7đ]:?|]- Dt%5ø-:2ł ]ۗpX mKa0/& {\}7x PϭM>x]!ɕ ӣ].#q ']ÎݙGR$<65eIf$d*I-L$sEσLZ<[>/1>"pI_BUނD՛ɝOTeL %ĩvَ!qYJLΎfJd> sdGetSNӚ49f ^LDU^YK)`2ʱlLI~^Gqn1(旚ifΰh_֭398bsD^y9,Kg^uL5p\*V0s/hN@a R4?,e՝ N?ӴPHj@ܻ W@^i܉՝Ly;]3vL|t&ʸ2vW:x4S`&3:j퉞ajnn f3+H, ;6RH=ͬ`Hc,hk32+:T=0m&˛N#TK (J~쀑hD쭽A"nlS$-$gx6m^(֥O_{UMOZmy5W+IXOƼPU4&W[xFf6vjoѻfκ;Z7mᐐYS/@bUUdM&=ȵ. ~drĖffWtlNpb.IlVlƩ*6HNnp+?b=]QL]3QJGMd*55%] HsUk--?OgSdqAr$301R-?S Bt.H/e0j+/u!RK24u0='>02EE854u='t2K)JsEj6Jɴnn^vg3uSl9PYSWK?Od #CE6 JbYgpx"x$ᄻks=@6(jOb^i{ y "fﰓwH`aTw9{y\:ë+y^/m ;Ćy l/}ӷ?}_}H}}׏}گ}9>}ݟ4}o.=~}?~7~_W~~w~Η~~'~o~?/OWoO6Hr_Q !],  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OLX0[B1 xćzMW Cg)C'$fH!A4 <@!;d7p{NK1FecKen!pIè0ez /j&^ #=P]FJ8eڭAkb2gX}"9zV;W ĸ$d,ZuϔMʕ\Ơ.-jj ƍ%809o7Wo}X7LKŔIgJ& \@hL/P_yTD\G^IZh8^:a_mSED]zlVx1_1TPgw1&@eE6ηu^1ƕoSxl N6)YtX$H짐f$a&9g)h]T"_f)tz@JRHy'#ʡB=$Щ(=*1.Fن9}mVؑ揗ZلzM0%dbn}R3Zwl8UE}ub\C(ע8`^m;v +4/@[AQ/4OO.(qE=h 瓀pY!H{]T/%;"4y#|:4;"_-jwg=( /|o1\!,:  dilp,nxN۶üoX ֈHe2ՒL-V4PE]{Mbry2 FԸ\, _4+vv JiA# + hjoA[- z,"" Q;,"X$xt+#%fbK%|"`&źc##p_eE"+ \$¦EcG" YD0mƌ â 9%,nJ*AJ@ \F`4'$LA Bn>X.DQa6"ByZpa#RwJQk$QT=DFˮf|%L!,;  dh,h+ðү*HC ` ,JJ:<81#xDa!r(M,EiZ$hr{W#'BzS"'UgMVU:.ryY8ļƹ/0!! ,J  $h쨾i´Ұ]n1Q1, D#0}%\K@EHJ@u@-F]J8MHf$'|O!! ,X  dh,h+ðүn1'Pr0N Z9=^%7Ep|r59QHx 4HzO|m@t"L~bh*0!!,g I0FV5׀萙>6>9?S}($5AONdVWhVCaPH! ,u ^ $h쨾i´Ұ]n1Q1,gS]Nv}b /hjĶWx%qsD5|Bl>:O!! ,  dh,h+ðүn1'P$b0LjDV.x0R|Z;=OgB}^tMuld\*/"~<8HNL<tFJUDH!!, K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,,  di@lllt~r>EѕT.WM3}MUt4ٚJ D(UTT*"%qWTnt"=T# zO|b#j"* #K"+:ur x#j G$ ``$ž$yd*slc" %P{` &>&wʵ[)`F_@+=,"A8%1m` DsBX3&O~dr! ,  dh,h+ðүn%O$v $<.XK5 +Ř'9C>N.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!! ,+  diA$+pγ:]O [P@KŽM %jjԘ>v>W!!, K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!, e dh,h+ðүn1'PNfVv}1ĄHy Tbnَ1oJsZs8x4(+59{BL!!,  dh,i+ôҰn1(yRɅZ\.'8JS`N%' )q,\"ohCq"u@{z ' @#tC~<$a'_8s)r.xjnIJdFB>L>H!! ,"  dh,h+ðүn1'PEHS8iD!I ` `r4ChhG  F0g{akm"ds8" w./9q'  c~j*?p(n(;|x(>LN@BJFD!!', @pH,Ȥr HHdzZDv5v0+ܚz]L<ͮ P􀁂F'DGKB EkTBWxzƛMEy LH*\­%o@Apq܂@$ɅiYK@*_ʜI͛88Q8vj;~B˙@L&IsJMtիXju9Jl&hO!2H]90f.jɵ==Djϗ 8jP1*En)ɛYBI5@}1;̹_ruVC5` ^`"- :t/(N ,$6Nv(Hpz-⑷ ĎlՂ 6vܓ.1a.CcG# Pd`NDg56XQ(9>]"W<U-0[.e :@/0n%7#\"P MHj]!L]BpG K$Ss&@ h$*-цԕ:voKݤ`)[Pp9}"-gG%+iE]guL]5F4vG-p|l98 Dl砇Εqepg,:41-$#ּ x=gHԕbZpp0IXDL((t W$F:Ҳ:42Z|6O6~G7/g=M@7].:s7"-۰޹ cÚ֪ LhZ4B,gٝ(Ѐasv8ja^XI%$KЅc_pAPNSH%}wp[U*=aVp@g?$y@hI # s L":elw%_D7+ej+S$9X? # 4/|CE),v1v I4!rmy,=,OU'R$ L3Ԡԕ<0L1}Y8$4G_hTd6xd᐀dNu`v)ؘH2vvdvE~5{ւh ɸ؎(&Mk؏^W~Mx-ULP y!XyHtJu%2Y&yv<  !X]zӆ4^١ah $o:).y=C5 є1mIivJX v6˥g(Yfypt'AfsZ 5qexS.T'c'S-_tDogWc5V -h9)r+BSvRjs!wHv. 3}-v ^ .[WFJ"c"c>_VĕNfٜU4fd<6gO>3H#&gNYi?F5td%o#9CVtraLFsgٟ \.}I_.V^'))y?Hwm:si9Cb w@dc Jw7U/EJ9~Ӈwl~Ƚ(@#Ĉb@|윂[W9 i \"Ǧɰ˲HUya|P Y5 r|b jNIx`H`y ڼSlA!lUވ et1sL?,\|8L1P&DspM]$f 8 'l?+ȥu!#}>V=2=xcR/BYŻTYe00R )v0/&7) ԸB4Eb+ Kf}ּzD!8WM:A93!V:ܐr8{YɅO hؐFuVE>3Zcu;Ͳle $U^ٴ]ڠ*6Ӗ]4%VG>3Kp+D/tV%IPH;gB/1pȈjHAOmUE˾6,a:]͸޽[_-eT][ d3:RFE ;X s RcM3Gֹ c $/dѝKSJ$'yD> KaJ0kh[v&B>cRF[-ˣtNЍ *w)WBLxMd^h3fptTciS6f1axxbRh3d`藈'VgvG.4D7dVl;h4ȓ`V首4cFC{h{G~ Ѧ`jǔ^)yr;<4S=[^!xsjyN!tL2rn3 ;'Ye{oΩ, ݨ+NyI۾ G}'7jY'$_&(*,.02?4_68:<>@B?D_FHJLNPR?T_VXZ\`_ad__hjufnﴵ5:Wt_E|zOo~g.ˀ?/\ˊ??w_߆.!?j7| nH9?!?_ȟʿ?_؟ڿ?_Y&&PO e'}%TɂY8XӋF?:hQG&UiSJ$V[ʼEWpႄ4ȒUAhmcݾM{e d%ID!ۥl'gA=tiӧQ 5%D:ͪUU" ,L3|$Bp2OSp(ڸI&3`m6@MdѧW}{3a+٦`s*X4ޢ0P#K:. DP+`N v00+ @)PvD@dK̳#Й R!,#LRk6%BntˆJJ&eʃ&Kn,LB'&ApfD;"d 3' 4Μ TA -CMTрp?$(Є gp9$PvĒbSyI5ށ p)/7h,yKH t*r!Y}i)Nq49AS-c"BᨨMЋ|24AP2Ч%*gEwHNTYGARrp(jn~F10RΔ5DIlitSE5jOST.55L:6NUUUn]WVe5YњVmu[WΕu]W}_;05aN.uc!YN@e1$UgAΎ5iQZծDha[زmq[o5q\.us]Nյu]nw^EUxi^Wm>_Η^~_8u5`/u !ܶ/bZ2T~\ucS([o:Vȟ>c+7zF蒚(uUQmzUs!NdyD(c03mf5gd}o_~g/ϛ_wϟ񯿀/? DD䡊fsRLF{/qrnGLd.c<@ W|̡U:NeMb~΁/^0I0P  p P I 5;0e 5& PB) S P C 5 P P  @(׊~O7dMp߇xx"Ur 0I^%U"hy(dGU-y~OVr|W12t"\:8DqٰQ 110P1ı8 p11qױ3D P PO |dC:~ns:'Nܭn1~ ,UN/:ҧDipF8DRd`#H"ENmAyRW*Rధ \&G( 2 ReR82)rc 28*3)+,r+Qز-2.!H. -2//r./q 9r//0R1112R2. 302234R4173/[ W\&XS1<2H2*VF6&8@x3g1|s&Az&w (s`piCf m J0S3<<#.S532s2ճ223933s<353=?@S@@?Ǔ%]B.{sin>]r"v3zNMC#]${pC eb) =,R;X86660n 3捯u; gQn͸-.6a ָu@A@W9 8` ݼVdPNulDfc[ nj{9k! -sGBd | ymb\5Bp(ErZGGC3PWAu%ch8ڬ'{s`N['8z=JXGn4F]B9۰Mf'\5zdB۲s 9EUq,*ސEL; !)lҔ[sBo$ 2<'wPVRb.\=洣;(_G"ܜB~\;Yaܝm\:hιEQSn`lyDxZ-JFZ#)$Dǃ|é+(7pY5X_Xn5Y!eޕq=lzҜR9 _Gz]uWC0Ѕu\-@[OjX$+ ~MDϕճ c>Aێ[[:⅏u`;(;$ f{Am=7uw*C:]vh1M[$w[H;״cր2FhP؃}DLdM"J9ݯx ijzeݠe9~| `tYo@u7 4eaA@ǵx1Rp[ (K!k oz J+`Gq9¥H>>u~v~Λ>!aվ>~>~? ?CS 1WR8K v} Lߞf~%|&%XB?jd~aB#pH/&p  k}«on?X[K6Tg~͟Xnh+,&yܿާB!!P*!% I|BIAd2 jbMZ~9n= "&q16:>BFJNRVZ^bfjnrvz~VzMub})fA9AVQBFb!N1BGKOSW[_cgkgb!u3!7M#ǻwwkBp1XCsF1J%lT>hj#el",vEkP,bTP.EY6kوTZWq_}"^kdVW_乌bUҥ >otX V5=ciޒxސX<*ثtmëWD;WɟsREwoZ^~#۷H G}Jg' G .ؠI8D.!"!a~ X߉8ah9vo -2,7P R!j:%9'92eLǤXcexuџOvl?Px>|LB e#M/ CR$(=I{Rt  1b_a Ntӡy1:A0~S wXAqQX+b1bk/1b#E3nj\#ۘ/ʃT;) !jdHK7%#?JR:d4S(A jЃ"4X(C*sN^X tBG(8)2|mlj[\x'OF42)Mkjӛfˡ:)OuAA%f j%J1ԩ8*Ujիb5޼Vկ5b+Y:5j]+[ӷ5r+]ֻ5zݫ)׿6Yj"6`B6,e+kb6,g;ς6-iKkӢ6]-k[6-mkk6-o{7.qk"7].sB7ҝ.ukb7.w7/yk7 P#|)*X,8@ \`PX/*380 c8=:|`j "npBQ q AMQaR1B_e` 8D4@U߅A V] "_uXaޓͩ[`U^edÑ!5BYa!` aaD y\عP __%P>ުY_٭:$V']]M@5rb'z R5Y(ԥ!eYBb+Jq͚ !"bف_ c@B':3B6nܠ"*b" /`%`3 G[1J"V`#5n;B :¥@*,4hb4AVT9_9Yu#iK0!ԥEfc#ڗqXD#k0Ì.R`/=mAJz@eC%De@1dl"&Q)$B؋9StU&"}c%|qI8zue=:6EX ']2]2Ae` &O)b#!#µ5_c&ԙ)6I)b£cZUQ M?%vf_lfm4a0z $fSfh%fq-e&fmBgtJ8}4$I%Zm'y'Q\tgy'@QxnAz[H%.6y}ZݟFC}^FΧ6g~"UEڀ^BoJR8hbhjrhz臂h舒h艢h芲hhhhh0h&S48@qi:bkMOjB 2X &哂iv,ئi&4.O* j'fkvB%a2i_ di:t)b)r ?mfꨒ*!TX*:ǩDs*&}j?zQf#Bgk뱢)vۧ "#$kn)9p@it뷂kXdɥQDB]k)~aVj6¢r rbl @ص~VkҦjr,xDJ~l3B&̩]vl>J*]FɮԩJ@~ Z)#eQl:-le3)`W,s**AlٚWԖlVڦ_$M%к->m-J,Rl&rV?`Rn].,n`ϺmkhLn–.̢mƖ'p0R p Tp p (e= ppq q#q+3q;CqKSq[cqksq{qqop$@ґ@}*70@J@AfԱ(uqh$f 6 rrX [LabXr{/)qrkJќ\R+ E)&@@je.bo%ܲE@t/Xu$&K&k0ެal/xn*ln+-L$A0ђ,%8s$. `NB;i22399g+%d@)-5d3&>i7>dqXZ%E[2?4%$:ZƳ%4=7:rݪG*QW?펚&@p/'pj##7\C_9VY3kZ4>rXG?5Q۫t#4o\SUP 5t1F\)A+G;&IJjf~ycs/j76n#(e[u(j 4:jF`d:`##12@NQs* >N-@l'*֪^q6kJت*_$-U.fBz3yqsmvgڪ&#pok$}B.D4FS6 ZJj`%EMbQEq]2HO6*.44XuBFt\ZIx^/ZC.|w©i!mF &-?60]Bt2_oT(m4n[ڵ*lRr}u_8ckg.O~3n>{6]cC\=!-8""WFA-bJ<u1P F+k2n4w_Zg9rz6X\\nHzŲz!/&/:+9x1]j.X6Pʅ9#e"*1b~oZ NMS$@kyR AX4K9[cj :/DX!s.joũg \uf% x#g\ៃGG隻[Vij'k'!L߯ڝvA4p{bkxክV/>l]@Jp=_N1p2k2|vvĪ5s|c8xR+G0Z*oCQ1<[S8=%9o9@37Tq- ^YnsZ޵0.W>zΩpsIcZw$K;Hwh=fyhɹ {C[_{}' #H5xu-)y3oA3j79ZK=͏m=}n^+&P$!|*C" u.Eу:Sl|Fkvsz gFy3@ |(s +̌ ;E,LJ̸CKdltPݪ080mk S:xЛ@ hp(Fcv&_U_go_'3c.{~X@D#J`ɠEjf(ڬzMpiKa2~"Q8 0`9rK8bo ET)ɘ`"F@Z h8%ɒUĚUV]v- lHx2+)r`PfM,7)MObI#sXeSc-M̉sWWJ &ˢa)L'/T+zx>Sm! U!I vfSyܧ:=zǟ_?i4(l+*A Hp0Cy&4Ϋ:D#4Ii c, H@l ´Tt~H LA )O xL&߼Wgۓ<_2 Gqy,(} )9.1 {).-{73Җ*Tt9%|q nY1+FGl. b)B][t9=A9:2#?J3D@_> @K+Z=!8@%aHt5,8c:z@$8I u84H#x*h@ G ɱɿ{$+,t.ȸ\" ;QP xB_B#+=Z6 (=[[>->C*+=$) IJc@?I+9߂;h;=H¹D0r-JtWŧs;⳥@{Z9`aȾBC0 f\1CAbiAct3nFF$+l&sD G@s:/9yz{|}~Ȁȁ$Ȃ4ȃDȄTȅdȆtȇȈȉȊȋȌȍȎȏɐɑ$ɒ4ɓDɔTɕdɖtɗɘəɚɛHGu 81?"/CSmR2VBH4B-(6:k|̀ ɴgcɈʄ 1iJDK3}<LK7Iǒx ـt!-\0$[ĴJ=Sǿ L652H&l#ɬJ )Ex=Py R Mɏ RJ͙ͥCj~J ˻,` ؇r N-H*F L:(x0N+N4/ݤHLO,N 0*JP I}"a S,5zLp*O3 4xhˆd!  *B)+bK ك3*,0IZCxI$AjNxaLP p HN0+-766QO l",ڀ #) R)*M6؟ (́SwhOUPP% R QEUQ0q b,†x T'[ 8Pin+a!~1AL5yQӆd'Ik} Ŝؠ  %s":Ї ݑ(;,'$!dwz3x`rMz3JJjeHmVvo XvR; Ъe XYZN1yXP {!x T0"?:y#Ӏ jXA}@ZFaڦEKt4'lT8I PڦY ^q*E@%߸S?埈 ڊtS( ,sd]TE!֥kWenSNb 0.Z{˼eۿqmS%\؍Z+\Qxz\޶غ(Tr\a`uV1TѿxVeQ}]8\﵏FVY#&7-uf׻[5˯q\`V82X W>]Xi**uuQ^ŏJ,0"Sƶ$"L"1)=-QU+? PQJ{[{0Z`$u8bZd"phX4R:GYFH~~ PsYbZ8 QiٻZVٿ|&[L%HD;~ˏBG4bcʒ]3мPZLB&"+g(,19vqnmBE d:6||U"W.ü'X$],<_`a&b6cFdVeffvghigJklmnopq&r6sFtVufvvwxyz{8J ]c 0e rЇ煦7:'H~E< xpy̴y=fRS\-RT9(t޷}b_$Sh|̞}(`AX7X+\_瞶j^ hlpi/Uw٪9k&9N5fܮҸ0ϲ]L [Oh6` ^Ν*=ThCf0;6a8>p}p ŖP:Z- cU0`ە`S)S(]nS+5'4҃#Ken- .Mx*m@Um\'`Ԧv)Rp8T5bd2WЄ@_8迺Kkim~dA-S9Vgq)`30陂Uyfةdo*W}EQrm%w0ڨoʒvVWxrLA L,痷)k;s!ka!#`''j֪JjWWvYĊXĈ4p!8*] EԆjeWwf'Mf٣Qdo:8j#oJa$NɥH^NiBRF#nu"v$dGXbMXEwbF= Y8u )96 rKRyٽВqt+uxPe>xxp$rhG0񂮇 M,7=e./jeޮWW(tu_ofI=_*@2o'|di"PC.wǧvԅɧ|N|('7GWgwׇؗ٧ڷGݎ]Ii!JB~#x>{W%^Lͺ>iN~b~FI7ߖ&TpߠmOWIiLN3~\hyTS 8 ĢL*̦ &/C jܮ s@ KRȷHXhx)9IYwQFqq!@ ʱg!:q:k wE ,ya X(:`NChYP@Ȼ1L~ey[0 >B#|\]ȪsEҭО>%bD7,ŔaP0(MEgbbI&=q @''!cf.bUsq4P~Is$iHu$XdpSMe7\: e~ jrf--ڷ @j F4,V֎nxh抁cȇbhl!Ǝmڊ)V(^E{DP.mT3+k.l;dHNH- `np [TkNi8T1? [gS)ZLh% 3(MQf([1-> 4=iŢan6^M%T.{lV.+o͵=-] ?ޚ[: ]7GtLSAߍwދ3B qlS-vv!{n޶ߎ&N 5XHY{ 㽞?5A3 =p$#WNVĕ:_sLx<֋Eq$s\?)xG?61R#XL3>$Pg諠 clQ@HrmU"M `^!$+!j|($>`P ^AҢAA\`/ ]4i -dQj"+DZp'gOt+H}OҴ(uEPE1RXu)|WzAjrOuf, Mĭk)hJQ%R)sp):! aIO)ޫ#;GdNx!ZѦoM/79Vk_xֿU 4~ICcM !¶ t+>0=.oJ 䶒I ,\(⢲0/˯~Ko޻18E{U[)o5E> 0T/\ٖu0 3\@ӺH\{6 p (QN# 9u]u&scG%_BWwQ{\[-ꥪxQ-S'e: WeBf_W/ f`tlikB8 cSʼX5̦@>PK~tuvU`8d>)MC+g&@[HY?z@4XA*);+{(ZX᎗т-3Ӂ&$ i4`;K'U\{3"fbwg[ Ѐ%dQ6gn+{ xBl(ck|b]K GUiIv!# Juv[rM⬁Mt܍湺bo!o$)"鼳Ѿ]0<_ZB<Xc(uUinumxl0[c崅i~(BYrܪ3JYA3.|ny?ɪ Nv,CO _9ZKESu_+sۉ _ {=xI~(6߉[nF6pXn;Oyysf9ɟ L>8˴f?=화8g#{xH&weXr&Wci (s@m^|tʇn!sV4F>XhdS. q{(fpN~lSqhB*( !e5cWch2W`PW0c6OХcdnGBpc hz7hqhi-I1*:6)A B[B[٘JNy|,4xS)2[`ɚh:̲yyD LIʼn4z$BYٜI)$&hEdžR_'B;7 H)~|PFJ>by"2{ G0 ՘CJPʡo:*' 4|+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKMO Q*SJUjWY[ʥ]_ a*cJejgbp0 *sJpf~.=zZ**Kt0~I zM 9 љ =9UT* fG* Ç)I 2aQESXf&U6 ֈU@zp*GV~%0 鱪mʬB C `V53{ԁ_F`9P_U04>,حʯhi_Ruh>zoկJ ֳ{|`rkȔʕڰ Q3XVIVǡ#f!CK5[Q0-Y٪<ñ2C6I;#;,eų({T6K!$aC]"YhRqAk#UD_+s;a;qx6T YoF)[kGc%:r2PF }D+%Ky"2A:+8EKй kF0YgG$*_0ehZ|@vHcKHH}0^ *쁼2{{3I๣;+Сǩ˿t$ ,Ll H  ,Ll !,#L%l')+-/ 1,3LqEvjxI«I=L Lj[:$ ėN+`Ő#8ö3 "T%R LFtJ@xJKP `.{S X[ VZqKwP[k/܋k)ӓ06KJ < KPkZ+"LԽO44a0.\( Y:㬗Mקa@f \:l1ȳl$DΩwƌӷQ͸҇`@Z8E** |9SyAu֨[ԛa>qpk` >UUyc7p h]VPq0c HES.  f@b+Ƅ"c2෰SP*T M*d\y-mF?=(Ӹt]ؚw,%T]Y=ڭ=T`Mr[-{8:UB>T-_ݻwESz,"{ƀЖ8\̧㈶6vҒpZg,.Im=w1qM(KU~Qq'Z? yӺWLozYGM%2}䃻ṫZV$y}ZÎjq`8W dp<nP#=FQN,oҖcjyv$|Q_"` N6zAS_N^ kMYX;5萛&~^~ɑ㎐|91#r,-h -e˙o^_^zMo. JRkN Òx RAX[Zb;=pgg7:Q**¶T,f 2&~MpnZEv:-. R "`7]I@Ļ@N [V];f(oH0-eC;R#(B'/{],_D~&ZeoCn)r37tx/oOifJG[j$&jRA߳D"[xˬX/^Ig^SfDkz ӈۙ] V25)O 깼="__#sp #ɟO ,i+^̤,xkjp@HEcA8.MgS8(O 8T&7 \pQVg񂞼%o!</a*BbmA0+!+J /)IA̓2Iqht)RV#r12-,N)lWhs붃L;[Y֮c=]}O> y~~8qKG` G1AC NTxcF; ;%_"i"u2#E0XZʐ+O嫄OT5a9oKO`d+N+8v ++`<1lCIEn&ϭdρm5a#mbw]SdE1\\5G,Yd7T e$if͛9w|Bhѣ!wG,a#ڴ@m^ֻ6iB]@o67G57I%#*dHЍ췕iR>@U) ȗ'ԳC}I抺uC,>@}4T.d /d9"Ad[H O&2 -܏.tZ !HG¹3\-Y:DG,˂C<@C>l̹lĒ $\Ij8fJ C6.ͳ$ے.(9s6 HM$4qC%2r.rGɎ'5;d 6fL8jA}TO3P se"FD3T5zQo21S#PO!N8V q$ShP?sJPd6u\ [e{ {ܱJuOqܞ4K袍>]/3-/5$6=vNeUdߍsdNY7'giv=BIlIc[ׁ#Yn:XԆߒo,4UYsmH󽓝ՉqlNzզPkU'pk3w=(J @|^?ps,ςgU ,P/Yǰ8(C0s`<-|4 >=nN ]o(M+zv 4 3QaVnQQ*&`}LӠ Ja. Aj6"9N֙=ud"(,R2§DBp,W$JVR:R/]} pV4`(n`Iʠ&<;T`0l1[S5U| "^ H$7גd,fȲr Ҹ$=,!06"<^4>,!F53 _%;ObsXlrRdIQ)*Hr1T:ŴA*cnp <2\Bэq9CPXy+K0[~ѕt[]^ٵNY~x[^wQY|[_=)_j \` V`?)\a _9a!I\b)VYb1i\c9ycA\d#IVd'?Q\)$в?|5ot*͒wt.0 ֨ _83P1yr<?Y^WuX`s//,IMPE^n":$fZ(/Qއ)LHM*%$W0ޜwݦ{wKX_Kz4"/g[tj7a;B?p0 '\ܿ[Cs?0Jnry ?Jr`C?|KHc UwĘUs!%.ϫ0 f8CP§dګ_0I ncuD BmKd ANLv2TO N˔/j^=Bvdzpm~/0F  6A/42%%r4H>o?&IS0cMc1@git2@6uE_|7K)oL ˖31 Mk0Gw=s =R<S=0KqIE)qJ\(>Gh|QtĬ~4pl IN;c39u)64ldRyvfuOiTRaR\i43Գ 49+H9Eu~@ VauzS@UǓJTHrK4VaI(Dp$*0o;'pD!;pTC5/ R/ T2m+2o^gC&=4,]K:NtaSXHLR9 SWLvS7h9:5WK{4UMjܲ3WwcWaIutU[Jh,=ִ$%.# BYTfm\"eY T YMCݕ$P^GgrW 8M!&fj5Vx`=#\ >.I{tm,õo=3G @Wc9w-RKU %r![YZarD$WE4FS#hq"!3(v46BJ.6`5R)s_v V q #0VTx WNU+6y &=Ȓ+w=8}ot{B*ms p 5ʠOMf>t^r&Y!5Χ" 2$G'&Jf;CRsB_F=2⁳);P&X` -"LPCkc#z34d;{{сGWPJˎs]So6؇?$Mmۆj)'N=4O,`N*|#6JLs B 9$jhLi/[骲*3id0')JƠ!şFk EՀw4ZpoDH' DK?#d8EJæ=Mˠlw} 436w;k3N>[e9kUR_`%'hHo5oXAMۙŰo|Ÿc5˺۸ZT7ɂۼϛ @ysxI'x[9 0EDىaR9:ð]7w'TIЩo\G?ա6J[OwR]ۿo܉<[ ٻlqȅxh76I2^aMA9az5_7%)_iQO`IV<͞)JG\D6a݃ GoO^ PAݴ:徧(01\bj (y)/Y{Dg@FЀ8"0aX`"PDsJa385bT YQ1/Ѕ^`ׁ[[ PғQcڐ(i)j*k+l,m-n.o/p0q1rCQgX@#›3evW4a8ߑw|\hw#䖛.i휂.l[-/&(K+e .@dxpDqa!$9AĀbd"%Q'o<35|3έ *DH =%:饛~:ꩫ:뭻:>;~;;; ?<<+<HW>=4=o)OW=;j>+σM)>[ K?寀_Ҿ/ 444V`>beG&@A2X?;Q Di a _H9 0 ̒F 4$>$=,D { B\츀fb1)ג(l $15BQ죞P\m`ȶxmJaE?]:Td*r+<_ W)-+zM >"~81ƒ1@>`Hhx^W $p[x(pR(&MI3}C#.Ia>Cq²P@ [ 6EPr%R0!!\}n Mvbu겚I~YH{ NNL !{I9nH$͉RK $5yʎ"\LRҔDgq)Kɑ.'cE_V*T#aMEe RR5EKO`[Ҕ`*azSpj˻) ߘlf30K+`d#_>u(;FSN9z˹_--+fV$5?j8Im]fƔy-Ga%+"G-QV*WtB,D v%rKd >Y:k{2摷r Cfi% mӫ J*{M=&%_Zoط]265ֺ+ pC+|T*pyRŠ'Ly*c B9j3ZzRvĿ5wu7 = >T8䄔L 'S(oq<7NX6JO9ouӬfR%CPaM'TQ@πK1W,5()i5"XbQ*ճX[ `Ks׷&hLT!7Kgc9pSE0y;؟%:@|Cra[\BڶCƶd#n盲3q?/.rRS&7Kc~+2gsstGawo.tIs%:ғ3N:ԣ.SV:ֳs^:.f?;Ӯn;.ӽv;>t^[~;/sz3<#/y&~<3s|m>/M}>"e ??)'~k?ۿ=?>  &6> F V^`M ( ],x-$΍ )h ء ޑ /  z ԕ.!"X @r Z,*$"I*1 F!_a]82C @|Ν!ơ 2!2BJy'I\W<I9v 3g 'e_d Mul=8`,~bXVm'f"p$}-&1X#/ڨٍ8"hqąW4`IdJ;xpSB Eܑ'3Y%DPK̘a8袛2Z`!=pg(gSv#{"JOFJH2*NA)[r:rz)zbzJBjrjJҪ+"@:Z+lzEM8)TIPI0Y _]VO]vVU.-(9/ .KlVj+/7h:lG[)ĽZ\!+(wR<+&+#ݍB3M0K眘6ҋ2їr;)G-TWm+ֲlڎߓt}^ޙ=;w NIA(q {|s߀]GA8dx0Kx`@d>[8卋~8^yJ鈃痻:~쥳>EQ-62ν襥hϳ }w`GN~7 u!{z?8~_x}3`@NPtrP!4(TZӟA> 3'x 2b:(̥|ZD1-fp`J> ы/$mk2Y J Y2 vNZThDiЋ02F,^XFn EX<#cGBɐM!#Fhm'V92=ommC^$ʗa9HiO[0=Vav\!4 `.==Z1>%$Pĥpf:Z4IjZ̦6nz 8Ir8|$`'A!7i^Bz-ʠ'DwœMBІ:(\$:QZo*1(HQ ւGb6:d5i4#!z"`md;O(2"}z\jKԨRԦ:#^SDB=eb+Z3g&V5^<@[Zyp\mAUwNK0lzx҆l,T{So$AbY9Z,%J3t.=Sh`әRg[:jlgۅͭnw3ض pK\؊MrܨЍtKZͮvz xKMz|Kͯ~-H@`  xLD$xhp'L !pE"< 0(NvxÝHC84^w9VD{L"Y ?Ð#;WIm<0 FlD B2\ !Y0sѬ-AdAEfY&7 f"| p{8BH2a:W2>@j^4GMj UrSe"`8«_meNHsUM98ИX}tbo)V5(vjIZLDxuMq(V<@.Vv@-!7k+#p-~zv@lw7;V4 'W{61 i @]AAKڅwsnkY!oqxi'A)h>Acw|߅u=t#lrw-L+1iC޺0v%9w/ӏs~5=(7b=p%}"|̎v,$қeht4"S׻w:V.oP'-#9~|#ďԭ, _Zp2D'`@@ӛzN$^і;ko`;*mg~VGjwyGtf}T j~iJ0Wb@~؇~p7L&}jF׀f{7{*.98 Wn.V8~ǂ5׀'}G:؄'bO}IpXWrBP~ `Cbkp'{]w.}F8}h1(sfɧlw XpȆ'Hb^STfto\xgpQ׉CCl78GFk 7puH}fħt^ZyLcr؋XAQHׂkj0Xk>aI7in?NJ|(mx{胗(da9gaop@Ue`wyohx(tbx{wh9yf9}yVPr0~bbܧ!a&G2aQgpx|Ǒj]FmX9|AYlF$Wbj7h~W bY9b9X$pjY&6kG%IWvWl#gHBIm|ؔIm2 Pifgv`IT@әGPV9I{ș@'89) ;p9h.h YT sƧZH yYR~y9PinȝJ𙐭 Y &T3~W Yz ڠ:ZzڡZ\aЕz@ڢ.:bܗ) m}a@9RX09V$᧣B:TJ EGUXb-}ƥUzhDfց4zLPi~Jr0*Wz:+ TИKJUzH ~0[Imy:$ƤSŎHZ `r &n-igW& $Uy kiBH1AF[p, ʋzG b"i*mwv [zW:iz~*!ʘHj;r+[-Js~p`p'v,۱P( @bPX%{#k(۲B/joI 9K;r{G:X{E+sje4۱*$;TA[Wn{yCӳKKڈIiˠk D:+jУw >J_и}bЪ;ڳ(QȺ%S`O 8z=0f <}b ;0G*z8(؛ڻ۽;[{蛾껾۾;[{} i׫ `  k::KE mKf 02vkg!|Z|(eh٢ڦuim@b3S[ 4ڣ~ʳ1ڥHb4jR k}7Ĺx8'yuȭQ7yVpک:ų᷼:l m`\ކ_ HRPȱl)#JƲfPÚUn̒KHְh; ik'!9̨{Tl.9̩r, bz̡[q {%;Ł ,ȹڳ+S+ϲqvij |Z]Jg!-!]|`2iJrz(g)i% '} PЪP=LVt5bڴ B}Шs S},- fLΊgMH@mK ~:֍*KCc0 t*h cg~nGig p|/L}L &VÓZ{$v*M0m=e_ږwk[MװmϻAOM#JkPm{\K, + y{-W9m<&ݱ15uMfɌn59sEЖҗtYa|]jlif̕J}ijF́ .g7VnЮ |}˘cqLЍ>vkյͫ)W&wZ@ެ*S:&Ӱ͝1 ̅mom-9  (Opߒ"I~-{ngugF}٦qh]ZY}k۸̅ε(n[Q`nS0躤\'kzBPu@3|ˇHʼuFɑCpsD gQg~f Pw8]̣́}+iNtT3n8ww8kp6Mk;= >܄}Jȏ54] [vH=I=:]̷\kkCf ۰(;l i`>%vN0^ܻy^TEJ61|p{wK(tNp9iml(WhY}xB  IqP>a^tqeT 852Kv5:^+r' 2ؔ"Ş-:(0$'6)<_ac;K!"Y^z lֈepPI9op+ @3ΛCswumۗqֽwXE*IBQɄ,mK2lͱ:>G@UH!=zu'4^o*|k\|a,WLØcgTB-BX-RcV5FDe;gqQyO@0h)dRho% ~Ԡ|$ 0J ԍ:'a@ :؋r0LbX˖ DBl&65 2!Bd2T/NhEJO+b֔%D@Ey,cx kĕ_ VظPi#Qg4$$1:h(C 0o/ۇ4XĜL?AS"(%SQ +?&"SO{ $8* Ar\]4._NaIbj9EKkbo1ov_!uᢠ yՁ `Vf.rFdU9VNX饙 ¥@Y4]RZ=6c1F )l+;"([Bt#KhjJx{31,``L"U!L$ JM j.`} n884 Q\?+IyN 8[*#CN! `xMǖGwVy'-@e7?X}%to@w nVHR9D%s|Ƴg1vf+2ኺ ]i"R!(yYF;YHΐA(@,(ЃEx/Y8[7,xe1W4։gA[4E{gxz "2=2 1ALd3|Q }|25@~=Z{Fΐ I@0q" AP&!I{QYgx1IP@rrd 4v)YRr*ؽa&Åʋ0:2$@Dp)jErV|3A]Q"p Gd<D Gѐ||I@Wǣ!e2P"Eq uh1wPGl(Dף5+9SG$B[)\Np9L؈Z*STI)Huѓ4E5QT.MuQkHUSM UV&d*@FjYjӧmu[Wu:x]cc!50Wޓ5aX.^cU0W ,dngAڄ-iZժVaݧCMZm=։o\5q\Uus]Nյu]nw^񎗼5yћ^u{_Η} ʡ7t\QL`E<ˣyؔZ3pO}я:RYXuAE;L(w d/v#~;!B RzM7!tI5%$R6A.kdhcXDم…"Y]40E LWvZwƣ z;͒,MI~c͔xMfw0̞7iޢY`@ zm2{2akuçPsr2t51ut'h/8x6L2u ۚâ2 l9 t?1+Mߖ:.d䘹:7sNȎAĄVOet, eƉVo8[/OOc*ZFDwB-,@JFDYQ@j~`O(BŭpD\*/`툠%y7hŜ^xePI9 9>&ÁJ^4+OBgэaAٰ-y8* iD@ \mPߚR.rb" U'@ߋ Hٔ?>G3F.ljW(?؋@epXB%Ã<,IćҲj8ӊFȜ)ξfQ:zC팥:!:^fФP W\.O%+\,^!S*zl.#P^l7jŮLd b*^lC#(]D xxTp)pr*@ԖLآ]:vDNEj4YPp(.ؐHs"cAgF; IO7<`D(V*Og?KDIq_1,FH1FlAEQ4H`AT*A#"{4KM%ks[a%"DQ<8R~$_E&] k -}(9؏Lg2$Ӑ!Zlɐ 4rv g\hvDhG gTc< .R0 ^2 Hq5Ir ffZ*ed  AOL#@jS*T,Z u!!e+rpڦ˨on~&(ؤM^h"18$!!p'+-H8e>x N2V,:r,&ic GT5bF0c1A'ed&K . z)׊R֤i-$DM-3!3S-/ 8s"$ o8vL"OlIMr T@P:q!,0/&a?dhm" )u"-[ #=M Fv*nT4;zWl42*K4'T`cU*kxDer6.Ԃ(j,: ff8 3G0A0G\s>\)T( G]tҋE%/%rc%T=TRR*r'LR֮7Z0/J6j6c1N 4ve`Dfs *|TtF/I4BoFAb&L6B$&,$r9'sK{BH t]& q)B;gNhpm4Ys!ȏ2AŀU sMH A_?L#Bj p@A-R2XgG"ofzDHf58OM OFVD玍 .Q_=Y% aWa."?*퉺N<=v{qY+PZ=$ /D?aG|Xd/\ikeV4vv'MQ\봲T%](N_gRX;x3IVRaK1`kVYnHOM`) pLuTo`7`rb f;]oZ[/AAeLf7- T mqUhP)^Sfw6Ot}rDUU4jat);x4h0<1FlierxE\֖TaSuzP6h;1e ^.?.lv=")F:t7H#f`.@9SNyZZ_8+ qCfLuac%WeRE XFV%iQ,]w``Q|#$xkf_@sfI֦m0pvwqI1'\() )Dj yHrܕ4K<3_TakyX&[#~jZB4,;;!hAs:ZDŽj8'+% =A{6ꪲQ^+ F۬NT;imΨpu xr;a·{?""Yb+{{iۼ;{ٻ{黾;{<| <|\,[,y L?L,>8RʱI;A#52@bOl ?ADq<0,Nr I{&g#NChz8q313+lVL07Ҟ܉ ˻ Ksܾn1!Шl9GT !7!M 4 y X@9W$ r'хX)Bܰd1,Ԓ71Ko!@ `x hQ3oEuM#ӹjMOoqpՙmg=؞FOj9}-m˗p!F7.bZ!SH};Ӡ$M#%̮=ɠޙ:yvָT[<ڗFp0n>N(,nhAf(1@?nrNshA.e4 R&2BV` ʮ9ƎP; 7tw|^MZ~?qg逽%@X1ⱽ9;/a>u GpmS\᥆Ij2`rp붞{_e cB! ~G5oƛTHvu֒y.%G/<%Yhf p#ݙ+L۹mP2 )uJyP↰@T\:Ti/*gw!^P>a,jտ0]_ 8(1B$6C h*QZ1lv1xbp@ 㐨P&0X*i㰔.=xmvmꅆL"A)l*򁔑(<ɞ dFYߗV */cl.xy2!I3lIi t,fjCdτS"GVLIvFiU|$wq'tlp -_ԭݬ8$uŕtWlY-Ə#OΝ FOq>|"p&Ar#7M/10Nh+Xl$1!#3:7&{IfdXHml4FB@diF [m@"SY9̢$pasd,ɓu\+BdؓATYX^ z+&SԌ0PeNBaNnJ(GAc[=3pH3hznjОRpDΆx~ ł@tuM ׄ2gBXź&5yCCx/ 85CXbj̎[ALnGR۞ͪ*_kx}mur:=h+.PeFX@C]rQ kl75Í:*"3#53\Z N1L*D 3>#DK0hwyGw$|WSJ6nvk /zJ- +(3n0fcI0Sݲ1Ǽ`a#+cLY:a%3:e4}Lh˚ E*-b|bVḤ x. #ɣ,fe2(s26 "N#ndca0(lcoTJqOM]MOO اcwvR4;|V?M3Ae9i5((i(U,C;Ҟ6B!czV]%1;^SRt;gvJ"7M~:{ۙĶMn"#.cmǻ _8C<8+nc<8;<"9Kn<*_9[<29ͣn.ݼArНynwK8R:իnc=Z:ױ b==j_;=r;n=z;>< o#>_z3V^ܴmDDRFD1%фVL[.uMd`Ѽ ܊ }O8U&%ё ] [b^:XhT4D_tUC`J,I^7X>a@`#h3 !TZFߣެ!I^ܚei2J)a(Ha6j%R)!_Z,̞P\(6C)PFx8ސY]"X Q TbLOf a͓T;dBd$lA@8[iX#HfWH<ܙ< $0DH^B@=WU/!H5 ' AH1Uf./j=Bɦ5'WB*>'C`:ئAvp> nQ bУճ/WtTZ:G L%dsHarKg2VZVD[\QilLNUPfZ_a(IQD#QH HhS LvahMqAcxɃ ;b &N(`sԕQZU~`Αd^ؑad)c!ΩyȘ:Z$)=M(*p(qDT|4 EpSf-ʈ(ML#. IQ Ԃ&.BIe)2uDiWlF&!]IA%kM(L2)" ;)A>J=UT6eƸK"hWѪy>Jmz)W~g:0˦B|  ˩i6='oe;ָ |pXD2[&X멲 &82 +<+Q煩 ̵BT*c2ǨYZLlӺDǴ (^܄ PIY(l˖ m#d6$\zRtp&jUM:*]|"S*h8\N䴌RLк!P X~U4؎S|R%eIꫬrtB8< YNtB>Z%ŮO69T@J]1%zZma2:Pm.71Ж=P,~Du 6隐BW II*2YҾR.C# ,*+ ʘ2/Yp+#0\Zcb pzF&Hc 6Y%*dsyYk1#(.@66 ݐ h*!a)RppsFJUaO1iD*ΒmDhqlq7vYo ۰)ӃqdqoY]1BkPciZ ]f22nS`LF($ƥ+{Ե10o&vJe.ϥ0C#zLgnS1wp.rE|PEt3eVrH$c(`oP^9_`ͫa`Q9. h:jNJvp8^0 ̚B"n}ti8֚LyQ4Pbyai Gt&MSE>6s3חܺpeLQLFόi,NeZ_Jm*`QZX\HNN[K a '2aӂYg/Z[5aǍ@)f(5bG},H!s#CUV/]a'C|1%#ӖdumڶvZe̙ajD*p o]50]51Xߐ*xN+ɠ]ȹVf C7 [Bfhčܕt[MscPWÀkD!؛OpF"DH@Kxxjgg]3W %a Vx ݎG%ݐ"3y;9HKyS13Yksy{yyyyyyyywzI՞Ah \޽.|"PT8Hvox@^uzm}:M'hF5WGmj+ǧdeپxcpE7ʲatzL-%Cf7tU,%"Jv7a ^_7`o L:ĸ`\[1q=`T I)X- zr<3D-Xdp1=_8vdMV~YZ"_VG}?Ε@ZpqadG T@>/(x?\ap$dX$؄l8;)CS+Zq\`$Q#`{ha,Cbx&K!\41]&,s1./Hr|F'E\d@%=%R ӺCR`BX;$c3hsjkJK\8@p$" %)J-u x}"5-j&.6>FNVXzhd@|jzxh87 0bbWR2 &x\xTK'&o*@ Ң{o$],=B@!FhԩLq LhQ1]G2H!CȩD#8mr+pYRذ3-9D&bRr0۞0 I"+9 7<ɲ)/Ј'B>L#× I(%8@Ь  I(ͺ>5&5'ֻcRvke Xl[s6G!E6Yee4R 6ғJ%iEU@4,D@ny): ޡ֏3_BG"b0[=M_sj2 SV[mt/l0J# ]K?ɫM ^;C#UYSbnA6hX€/j`xJhmev'.^wlFS<ã*SC^Ŀ .TE6Tx%5ӬV-tǣUP [/oqQ%{^o _fy,@#l«rB}s?|϶P|!(RMp>{ﭗPOw  ̣8'Z8AeX(X:ĕn9n mH\ vԴ4 e;ðC ?OAյ2aȃbGzLC&e'ByS @!XB8%՜8KZRk H(9 '\')md K)!d.YMhHN)F'`r @o ˳Ypfc,=ZJOfxV^( I3Zę"@3oL+< ,V$Zңi) ;e6ĥ@;- #c@Ay/W9E M:i,d |vة)qH 9$ē ]TD a65<¼=(vrJ{e8d``R6ֱ.Ȅ. )TsfК'EH6Әt  uhkj03kxA o%W 7Hb @˞6P@nN~Y595ѧ Tk)BQs|* !Y?nЋ m Pz+x+sL|P ݛ 3rt  0Exw*zlUbecLf؎LEڞ"b5`2X[p?M}]DM0HbuR@n@Vi%&.ڬ.OASatGGzҕt7Ozԥ>uWWzֵuw_{>vgG{վvo{>ww{w|?xG|x7|%?yWFF$Gy? .Uz7=1(^JPz4}g[{y"Sn/)Γcχ>ϙ廤!~],}w\ݣ+Pտ~`FD0Vy]_"(s 0(I<>$J+ʫSZR?$+73 1b6)M˄V02ۚl,ܻ9-%s9E  Xe36Z t 8bK*bboT/b1<F@[9bP4:}# < n#=&tcd\5Pfbc,dFCFAxOCw1R>T~ `bUeTJZ[\]^_`a&b6cFdVeffvghij[48og=a_~8pfv<sr2Ut)4s|g_Hb5425U}F6~hJ 9S芶豫5(_Ҁ (($`a€>؞藆ic5H<^c EP{N5tjGU Yv!6Ho jcT޴Rj紲F>@uʄA)tRkjxn[Cʱْ$VIj@5,ڡޘnQ k0WVf׈sl.URefak 5qj^VneA\A;)*4ZQGv.1ZkLV 8)R-ݲmߏB.U \a64uUr1=d& ̄ig˙5ڶY46y3 mƸ=hn '7GWgw !'"7#G$w;ü# )~ l^[sDB}0%g*0Gbʆ sdrv r*{أ'[Fl%=b0P1ٻ[ #At8.B)IL=p)P-g ugtvƂq]YIfksWwd\ud/4rw].rZt.*9^ t)p2oQnw"Zo MHtɓMtQvCxܳ4wnB$}bAB7rSPn]s0YQ' td½-}4ѷkwAQwSb+S}4|f_un&.w!{'~ +BhaTTPlXCv-H…6U}vGXV TwUaQfD`Є'w6tƸv@7vtJJ$9W5{gzz0X FtlŬ$p]n~z% yn01xѫD0aX$x1?2 L3 "=P2[},-3d!$Gm\*V  XnI<"S+B= ) P|74d^<5̤@f"*Ӑ|p-Vaa pA ̔mp*AHdLÂ9w\rHF (r 3-]gTr"m15EN <ċ;2DUZ6+pn"oN5i6w7^%xFo97˳+duNFzqI~f\p9`0)B\zLp߂Hv8zY5W~|V 藈#"K}ٷ9~a3ᇁU]^~ qI&'M<( 'bEv)'gf]9̤Gu:[^aW)Zgل1E P+I!~`X\n'%"]hWh'!epW";qX0꺫HL@+86EɧkDj4Z"ߚ36ԏz5_Ko0c>Q@|/V ebb !8*@;U軳i 7W@o"F)riBAݺ,3 [\E.˔+)eDb\ 6%*ɢW3L51?۶/r\%f]H#w Od5Njw -FT,2sÁ0{4nƭ1C!Vy>Bjܿe l=qjq>K*k1ӴM{N6$u;(V kg6ygo7x4p2v!ol284TX Z;:]S::ƞ!;Q@ o 2|ʸPp(V("FJa-Cep@ӵ5eJ5>t8E2ˆ@k:vtp,p~8UC5PTeaBa?V9DD*RfR,EC@8Td$Gh ?X*d) xS$7L8%%$LANsӛ+21,-np#bF9 Ea iv_q1⧌"JsLLN41aD8qdX}՘H<(sT-iF4G?BsMEAW%+dB8e\KŕE~ئ̤ʊh+zнrTC)*l$>YؐC,c5D$ +(j(KC`QVˍZ(Ȧ@5g "$}`6U嫇3gz+ f'Z?^ꬠE2h䅦t,C#X@dL-4/FD#5 b=ċ5xH\'E$nqS3K!ϊpL r6eX`4* `Sd-?%xzԎ2`ʖ$bE 2: vU}sU,Yza%4Ni;θ| xә+ A~+4^ܓcfHibw :3'5:EN(.gvwE+Ub`J>#t:F8X5kԙ \ZIG+;\x۞=azٳހCyqW{hM ~/+zoK~򔯼/k~?Ћ~/Oွo_~ko{~ /+oKԯk/Ϗo_(H`va']V7W:qA2t81oGHu#Zmt`-?"$hh8q؆o0H"ƈW Ј N_ ((hF""͑c (H *(hVol \!nGNt Mc.c K55`X0!nDKx؎xF!茰 o(""A"8FHOd2wx4]a!%s2tPp0W蒆p&`!Pi!`=ٓ!xXAy$5HY@Yx!@(UYQiZyꂔ7yo8J`5SoU <&CaUlgEvlr]q7`ChΖ!4fPG LncPkni:tt+etihR@ w]= 2979 =WlC_`BpGyU@ȓxPVx P dib)EII1E @pKpbi+%!@&&6Q)5EeQ`Y A?1 "fqq@)f4l1邀ehs5Sp2lIlPIVl Ü)\B>(*?ʛXA!FꢃY IKzBؚȣHR`[_/#xD>$AS-sh`0 < V,U٩w :K*է`Tz$lY3 DܠQNMV*%`jYpUmnpRY:Y^mZʤ!)FjT8[ؤSH$$.4 fҮ3JrEWg&+rS$vKcje$JLN=gz֪]EgBʱY xgOiPؓ< Ho@GE>9 y ɭ٬c([e4K kf2#ڒI_xjjcTNG%!2#S2"VK%wfx/Xe BPes7hCo -(i7;c9ƐzT&fC$/˱K\*U:i)+Yۛ`\٦`Z,e)=WښL,hM%tasg+':V.鰫,iHvmÅ2똙v_  6@ Rf]4r[7*0EL=Iw jPz'נ儔tB{ mH,9iՂCj)=4; ǕFX΁\#I{Jz%e3lmPZ5UFqxP!W ;Xܫ 9 3~{[4j.y&UکC:\-[{I 7b dl݊`|YlrBOsJD/{̖ Q/Y7y,%\/+ i؛p>z %tN5P|fiNākHYPmj+ˮpXEkm욢|$U|HopXu]&/hT&,05X\dj!{K{%"6su;CgxwxEHeQ.dָrcUVt_ZVhuDd&]_b{eCpe-F`%_L=bc&K9AN*d0d[%do-RF 4E[ei `aCa-޾ʕXo'pf@]ӏR#QtBs2Etw)hRf"SHMbvZ{3 /n} Јuko^ FtV;dhWbnb7"یwwxظĨ ~%^|Wu5@%v\vPvо%m ‹8H ]9x^mkxFp펪D-Ư+ pOjǸJ) /{08 o'2n$n1A/&'ozr{IK 1Q(wWY[]_a/cOeogikmoq/sOuowy{'}/Oq9h׋/oٺO\񛫈U@hHgݛx؉؁_0׫Ȳ?קXxU)艱Oj8q^[?ɭYq͕MNQ9I$ߥa_OX8:8@ D4<P$J.Da9:he=z>OtVIJ)ī , *`1Rr3Ss4Tt5Uu6VvVд nNiL+DˈwW)2:oxzL*Y-ͺ`d?_`@ 4xPT u^{iݫܻy˚y㳮Б]"eraLqT3#yV3iҎhPC5ziRKY)pjS\<,XY Q Q.1+beUΐ$BS͂(ki ikM'ud@t15|qbŋ7vXT& m%>ebl+N.jNg"$46o]{Wo~dÉ7~yr8|@'&DE}$"zq\HZyV;cI> <=9nRq $4:J M *tn%j:|er2Y)#:KC P-($snIkO#.m02Ӎ \œ#pvM0ͽ+,?w 5S@H%J--ZN9y&N&|\@'꜎ԴC7p`>k:Ua+A""U U>Ea /=d]YYZk>GZt,ADD"⃽E1ka͍x块z-wt K![ȓ؂TDPnGᠲ\Gl;7.D ]_{5ޘ=U-2WDû%H?IY䒏uޙR'p3g3>ˆiIZjkBΧmRC+(u9  ^%-5ߜ=EM?U_]emuߝ}ħV.2 $XE*0>~~)?~. W2T, _4 }p]Y|' H"$)XANO @0 $4AIHЂ)T ѽ0| @! yClmfҔHFgHQ AD!Z=ӷ&& F&%  2 $8Ъh'LH@kW \yC % 4 0d1 Ґ{c(@C 1~ IOD > r$v>Kɻ"PK1ܣ }1ג(-5Щ5y&r_75[/_Uy%J/}T@v6s~$49 D@Psd,"S(v З5QV?7Ser3$-)UmW;x;֘Z#E- \ؓ m* |G`>PNFZ"D6A AG?o*Tn@&t)+ VCG 굜bg@.ʰPF"UN ʳM lcfe`.IqKDV4PGKиG@+iP['.*L#40z.sUh<WƞWo aSˉۮ,VBdIk4Rk M"6 Kp -&*\{J7yM+ { Ku : " )Ē8?>˅1zil6N!SyBU`6;Dp;HhavaV7PueEՄo[/hrIlJ ͻ}*q{9Q;5awL9t"y^w\-ͰVe.+`юcO:D64AP|^ueD,Ѽ6jkPEfHeIxm6A2MH?YOp3fd'iO5%SB o3[{Fv5lȄ_|3֭of!ot!Jl3U}bDo uo]YiYf y k=IQ)f(a+Ϙ0JuZYOq1ςأH♢R]0 y\:b{JxPOc[v&k]H tKMmQy'ST*M@)ix-67!>XF`TQTmHT:m"⦛%c' C2r M'ߩhoKKK)̼(J.JLq}` ;KO! F͒f > VcǤTe$)n%J¦ZK5v*pG0r,14P(ʐ ;jAcM%t`"@fuhP'0bu@W JխQWj*rUUOᨌ؏ZsOұ: l, S1+&|,b7Sa%50Q اVv+`ra5*}ra/ pH6 Pa6P[R|"s7pb$f娿Dۂ2gCH|ŽdWeүUamkoQr=l*ϯ3J6i" M(['lktjoJc+nADz(u]RJ_#tSq:.Wxso`3!a6R"/cMmiwl ҶdQ5pMp q$|+*lwLn+,#*NCxv|wb3SeL ӥMrO5kspdOd,3 ORS$}~ww3dӠ)K)cWz)!W4eOIx+$MۨN7QSԡ M=0qT WPig/}xi6."tSm4ݶg$ @oxKWm9(a+X*!'.PC$̴3k NZ:L<'wQ=o O;w Okb2  ,HhA2 Q.6YiTXk]a *v̄9#=#A 9$Ey$I*٣$4x[|<=jsRf7!.V2KTb6lbfK/H0IH`Ap咁 :(jh$袋b(bșbi觝:*ꨉ"ibꦭjꩬZ*jj0&*k{뫦,&;"5i xڜCєtV9.Fin˥2Kg1-Vy{ܙJ2R䩇B}FiԢ >;jNàfW\i{' )ʕFlqșLr̞bkͤv,ʍ,,h>*J5ʹSL-U JTg5Nu!R;}ՠ`"c-m˙i)gM%}m?vܶ$cd;ȗnw@˭>&"xA7⸙,-%Wab:$d~z谿6d;)Kts&~{'뮵gZdFo/bl߷w~y@9{I~aN 䆹}7-P(=5owĈX 2O{,B]#R,|8`hȰ46a(C>cC"1. (E!P"8E,6qp0/# c=qQ])~jpKq@墍tkDZ^$IJVҒ&PBT%MYJUjq%)[CѲ%.iA q >;Q 4zn 2KN 6:fe! ) 2ilnD"H@ukfb^ipmn5 Y\=(BЅ2MaED0fNE;Mb]>zH~h&jR0 ?/Н>)P*ԡқqC8HTǩ'pJ݈gx˅HܤN&soʍھ,'"#RW%*`+=lC邞QO WyH|̶ѱ;gX@E,jSղ}-lc+Ҷ-ns򶷾-p+=.r2}.t+Rֽ.vr.x+񒷼=/zӫ}/|+ҷ/~/,>0s0\,.W ֖j8Z0yV_$e" ,-Fq'f-gd5oVf`[NIM~vkM* (9> {3iIe>\rU0sK+ k R /aJmVU%9e<"43uȅRؑ05c]DHN1}OJ˵GqW8S7B`# i*h##VȮ0%RL=W>u>W6Ff;ֺ@h ,jT7cv~0jҩoGc(^譕 7; M*L.-5'bnGV*cZ1jq }Z!'趏!?l7}ڴ6L*D"\:oz-h|sAߜPK3zM}E*|3 W&X. C⭏`/ [ h=cU8ѥhݔ_MeWG?0?W7z_?_ fo,@^|j觻XٞH5]!Z-MFɭ} Y.p^@@`Eߡ`ٛL㥛^[}>8ZxOj5`C] KJiFmHaّA^}H8LHZIuBpԼΨ[},!yلY7XNuE`%]ȵ݇LGTbz( ð|dbLYقAS'Ƣ"nm䚭`ȃ5"!"i-Z]:ιԈtH]u^]F7ɸ^*]59; T_eb 1C%O2]4'd=Z:Uu7ԆQ9VLƸL>VE^Ѣ d^|U7NyXYM5D1Et#MuR= ( DD2F.A‡?zچNYPQ #bT8Y1>NRZR~dMe@bUFL佔tKZ47^c5cd >HjAZ1R#>ɥ%MYB=Tc|,a@č)yV)$m2+b*E&Ju{,\^q%ueʉ5̆t"= _zI"De|0& "Jrw6& U{BexEd袍FI>f`_zg( hqB*}[l˿â!W-{KǢ1Q)OT|d(r' .gdi0좺/nFvh|,HfLAEy]z%(N?]d |̱(^*#~Om|dj{e\fMɈtHV2*fO`H(iVj Lδgh~$R&]pZi$pb^6$×BV4ll5bۨ=lW>S<a>[.Nܸh~dT"2Ɠ8Tb'1i_C.br ̀r˙(EuATNbݸRL"hfI.`dσI)d$ڳ!]Ϊ4>IPcz$BO(݈Vln ܔmF'Fs"NJ,‡IHܢDz *L: zj^zl"jY*Qn;N< . -h*fzV@FP+F-UЯ0$o4aʍPaC;_|D?}/$Zn-{nnc3)$f0Ǣ '.ZB +T_md j40F1AS)/Fj 3k@pN.f%՞V| %OlXFM nͬT $jz0>:1~kf$\Se)~1}1\apNp`n^۱$6Bpܱb*19pdv1MqC#/šh.:1͖,h7Hr0gr?p$k,#[&0h));9NM(ˏev*q- ڲ!}RLs .^ϮBɳB+pK#gBIAD6i2O-噚f#*0,^j@r0UHh'B;dZt.^)9Y \eDSjQBXo!j2t7NJ=l"72+A'pnZW!Hz L5(:men3Xv_#[J%gV6}5Zb-qz"pt0O_Mg2%Ytf4mYDl^o:~jWO &3Ee'$^/-sȨ窪oBnh]SvcvxZߴkfk7-j+ji'aW@7QDE\ D,9@3vN:s-^+z$4a"CJ'Chds46uϞ6;`zU;Wm7ҵ?tj5|lpt(wJu.:Dksi 0LO+#`'*ܢS'*ve"/GVsrMTQXļ3_ۋ cUX>>t=~~bY}PPs49,=H|xY?G2sy2\? ګ`ef8eÿ2@i{ρ30$GB 0A"+HS:VWlVf!wQ:XfOJƚn5fD@>C=EFGH/HL %J&VLjG]mXBvP[&;{rsĤPnHq`]5O!4˜c m/c/i^MN|ƎG834#ކ"|6m\3/ @FF:с@) ߒf`׮M&`wyt YRW}c>G/HNų ^xs1hI go\ )>eXgriGqYDQ r!)%L]c``{7 !R (:zzf6-pC$pJwC!k@'9Ls J_ *QzaWLΌ_9kDT847y;pFqCOZyjc̄၉r,H>.S7%MNYٳfAa,iDGɜ񏖼7[ zOg$2I2݄#f|SLVNS$R#E,$%I203JXZz 3X]0Q4!.V=SzW;,9p1O?W#ttD@j3:'( (9Ta;6X^&0j'YHiVAu1cgY{4Ǫ%(Cfa*P(1/ u@I&N[!+bj"44 ,N,8vQ1@fpiGw>C$hs|ŧMe լv\4b0{an$Nvs,KTKD/@;KȌ FKrV~h,Te8y{+I۪ s4a OqieBcX&>qǧx 2JJ/+~gJϙ1}=Zx -j$f gC5%59{:0ɵgPrS7W<çRTpf 袢HT,~ AŅI2iQ:ݻU#3 #.߱ 3kF:wg7log6=nB&9ZNd@`a 5"@ɍsɥJ_3ҵ<ݜyѦz0@ɺ1?C>xہup#d^#c26|1۷ pja% ~;==T?٥Oi`8> ~_}c0KecfI-#C-]@ox'k'sur;љd @ڙ}rDq!kAp:@c>0Q$@òU@cqBzBz4X78 cZ@fzo,21)KPB̩Y8-[yA, ī6?%6엩Y1%BCTCl+ >\Bmk7< |8?C-@:A]{[؉ T%*E &k8,j'`܂q4HU_ܻ:?XF6<҂?i̛llh|F%,F*FDr-fr˻F]|Ǵh76x_fGGGfG(GL3d h{i ńԢ,B+HȽX)0 IV4dMjA xN ciLOHJlݪ1;˲L-Y麥Y?4iԂsA!-DtPY,ɉPt0a[ YE_ő=ODFr8!bQ:"YP2A%$ <4H}ͪ%Qlz!rE ҼL.ro)\ͤ:΃:#LgYf>6jӇK뭫#uL+ vqS:RWz"59RJ_?47lR);IQF(ɏT!jju"}KnmNu7T_nz7Ɋb'>7#U@ 6^4+P!z󢆑U3ݢ2%.SzTZI|xXy%v;:E.=׾\.&/;0;ذJqXuX=1Z+W;c%T3l@1ttPm=Gl4U|k(X sj#Z棲h@Eոw%"dŠu=+E!C `? F`I3E\ay?%8 D\,`!hź!aH_ɴ/n&$&!"a6vĴ%8VRbػԉcujcFc?NAFhcDNdؕz]EdJ \TL JdO FaePdTN}0TJW~ewTeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhf9 kVDqK/giۋ˴(|Rρ]ФҖgLgD^ԅ=wfVXK%%QL+$.Xd9' -jb4]]& 4GIى>íhZg/bB键l)WnqT Zx↹>= IÉ) W=܎ΙwsΟα F iF}bUhyJ1g0DOD:eNī¼jwѺ<α&fPN⧙6^^lKj-%lo~-NzO!=P-@ظR\d7mن?|40ܥ0mҹP[+(vd)lFB>nuᡫ$ <$SVM.4ƴDvJ%QyX̨U=jv iȑGѰq1"('1=\pU oL0- _%$Omm“Y$$kSfI,DE' s:X8s<@<[6>t ]P"s)}CD#Q9˹u%*U\9cp67 0"ZҐ:ֻ۰{E%:@7"ӣїH-J&\q4@wC7gjTuE}'s4B[1 _(kD)޶E.U-d_+@KOdGp~uTkch4%ʊX=h[sՕj}sggxq L{Ԛ3T$݅âv;f*&Abu4E/,cyNwrgr C**w}5z)}. RMWU*L0wIumwcd*]I/{x"ߏ.ay{/ڒWտ{~i4<#{BO-zD4-ٲ_Xh@2`Uu Z[$ڼx+a6hwvCXԤY ZAv//!$3h},+u ֞GZcK&=wg.xR^)&##)PX?{-|v7J\ `HTEqi0 $A6Rf@j˰xTڡ50 7F+6#/a]NgEgtC^DMEz{bDb KGrBi Hm CUȇfpajvs|yH`qo͡C_D`g ؆^H#$ސy}a(2?' 0r! ̆ࢇ7Xuq`l˗0cʜI͛8sQߺ 6\ZԤ`4|BiF ^V90m]%qESܺTD ôCcaPX\[BڳT1ג7>ɕV[j5y z`uH8fK_U N8ΣXX0۴F54ܷMՖ30#^|kvg^+!?|`?~c@Yi 6P}]utT F|mOA|yEt{bqYR-0U(ȏ%JP8k?J+E&fq`)di晏 GTBYSQfl.]W%oKS'Yx'!Q+Q1x$.`%:.x^!)_^ؚl4[s+U aXF*oTJϭQˮq&F+Vc5yjHjmjnN0 7+Mtҋ*怛&rnY*FXBx5= hF yi )wnي/d^VTovL*0mEDW6x_D*7*F!*e䈶0)c'%K/ܒ% 'qO*qITÓ @)K / ' !| !+IrӇ*T KT4!:Q1mSA 6,AAqNÉvk` c1 "[68*BO51);ԠYiHt'[I%B ".6bxCuk( i_S4稲e!sƸVJTͿ>eE_wt6 GBe gB,!-Vs8JX`sRyXX^_VYDTf*lhޠs<WeG3'gMDD<<N~/6 6ҟЀFC1ZAt}8͘t+ֺؕB`–AC}Kx.l\y4r ㇶ%FMRѧH4f?pG&}1F2uhh(26Udոu֌Oa:mz&)LT79mlc~Gu@Ūe)ZHjMm׎'FIu\# ~tdP*Wy?oPkղex¥DqR58c$^$aF|{(,W˯~*~`E\m(HFiUl+d{D6[.w(-ptsH,{-̪[!'=upE;'ΖyLp|D 8ɚ*) 杘6㺼 #Ͻa_e\ tc|9P^g:K؞Ͼ/$ODS_oklO OϿ8Xx ؀QC463f&3uRc@tx`C w|G ܆TuFO$z6x$4Xh~']h& c +x,xt?hHONЃp1tTdR\؅„o!|@xRs4m`^؆n FRK1ECGm@WqrRIMK'4/GfPLD hKbWahb%$bJpO>s҄!sҗ_endux҈1XG.Ro7,AW=Rht6u`I1%@g8t49S2%'B ' QOAG,M(B*UvŘ@s;6yxy2F Y[sh,q" VVԐÐ`[c18kw"-,bPG33KRg'y7K?s)"$ycWE'rsv u + fO(MnVlRyXR!Hٖ {dTnaxZMI<!x#DvR 𓘝+~I5 * ^Kz8G@$1F$-V i|uNBs%: WfEr$S7, *1B\<lS@"&w1(aŘ2_R祗u/C(w敾2h)H\`׉ݒ/&y,SGuf2)؂RPE†xNOy:);'akbQWN ~g~,(6Y7)F:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[C;Bٱ ";$[&{(*,۲.02;4[6=o7˕Zʳ@U>uA[5FʅJ[qxl~:xCƴM [[ rfD™8][>E9XytNRjh;8bö/hj+z+ r&tĊc{8}o8i۷י`"Ӹ9KgQLÖ$K|'cSu&7m8{/G{OaLKy# C{+Hȋh@JR۹H2yf(H_+*;4hZeuvorhէҟȦqht2~2Ҷu!|^v-|Ȑ)W<Ǜ^|eYoґ5I %5,l2\ Ȗ|;')Qn)Su_mpşۋW9b [mʘ Ź(D[ Lepδ|͋{9r ˊ_,&,XejqЏJv, gde!СP,*g͕@z)wѫg)fT~1Pӎ'M^j|,7}xcf6 FvigTWȁ9^g9H) ۔hu/mֳq!/~j k/vg4 ˹79utY tMDjA$G@EnsҕMKo\25Ȩ }~؈}MB@6`boXhr9Z7UZ $ܟʽ$Ƞ8_Rxc/{(PD@.z7b0K>r>׈^}p 2q^]^:u"? ,8!!, @pH,Ȥrl:ШtJZجvzxL.zn|N~D%&&%_ H G cY HmU&WhZљGӺRPņ%FHB Bj!{E玠WDpFbYHcC$#rA  KGrXArD<&O!7M IѣHi)%>FD(/dŒ '% *TXV2g\`,F ѕPP^ 6ۿl]aÈ+^ fi^;;UZI+3 ,h)k3} |Wu];X]gD({MmB@N yaЎv$Rגa5j ED/݈%yE@riH\A;#8b;5iBDWEe!f9&OI_Vi9!&|I~\h5Idf~rjCg-j3 PZ֟Z2@PkRU3BΓVY#&)무jǒPL c:1UT4%vdH^NJA3$ vbaR,nNKvbJ8z4Cy"*!ΛX߶DdݼfQHV!'tYD.͒f0[;jjcȚʈ2*CY@l8s1DeE$2DG@o1S&tDH '_QtuYGhhRK44^,|ՙ.=C0}QNuF[_|eOO:&$>~SS4wM/Q)n%TU'$:QUm28۽i5ȁ+M{զڶ߶ֻg[VH</0}[/W9)Bm5sgӕ_NŖ\:d#K9ȇ7 V~4@;8|M{]& %.K@!g-!W h :!CW)vh`K J@q39hv <+AatˢhneÉ2ΌN Ŭ/-Ky,7mn:uwg,p#Qs55a6DF!ʜ;›'dA4R%r%M 'Ye246A3LIv95M6BB)Bxpx.!6 ,O%I,8>u| p )A|58 LOYJ?r~xP80j#?\YKoZpx UB(oe,zѕKoL IO˚mu`Zqe%dNY"ÔHoH$F k ǖ I\ I쮧 O }5ƯaJG+b{t`& )J*@Sg.H- cV\«&uK^bI* p .{9IRQXPM& V+L6SF:)L$F5lX<pYz0>;cgxfW:Jѹ履=V3 A'=־"L).9 b>N€өR'̑Вr:w9QA\u* эw-5>YDttJ3Z5[QQ .A[n|t8@bK+;i (+*| %uWߢy6`c7#*$K`sRq:T*g.T!)|اs?,&Yf\^?z~ݩp;PW[؄=k"څgjXqbV={V @C9S T &_v4 Kh+~يwk8KXȭjG+ kz 9ZkvƴZ+\ͣgfN="<\]  \jUU)GeK<}'|U0;|*+r{t-xP <뿼9ȩ LGq:u%Alm_b#| (Zc+bֽajho̦92EcfdǠI0Fdi`=c&RV [aCBLltȻ*(Mxʢ!lʫ8EŶL{8Ǽ-;^Qi7(ihvQgm { +ԲBm Z0uuk˜_wD$6@ncgdH`^|ZĖ{zM ʨyt+wL䶾HK|r^]-dnmo{eNy/Wܚ -ZbQ~(yw[Fp"~uU\%[,YRJ=su9Q$_\4-r;mvr°hArS]ד}T̏tAB7y~JtvD~VWHwu(U_G؞HZbvv٤ ڬE1xwj}F۱ 3ۼ4y-$}-­jpŽ=]}؝ڽ=]}=]}|>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>D^F~HJLNgqS$$7V R>}Oa~䬁Aa256<},t^zd~--&d]0,hRHש%]yl1NN_e0B jN\cu^ꗗ |[ink>8kih`m~{r1Ck 豎i!f빾GiaC]4.\}o ȒG+6-nnFH垰~'u_irF^/oo Oc_HN"w@d H>ڋncqtM'C=d1|`!G/Fd%/DY TO&doebjg\OiJNٙv"L_Hwox/vrf? vo ~Ok oy(^jr!c˹0*0\rER?ԡ.lXi)ڜO/ǯ&_ğs/{O?_X_B-/U(ʹ2?VX4đI6%"WjZ'Ar+o7{&r}    30581&+ "WW#/` *Bqؚۀ{ux|wĜȯѷԛr8`A&T0#!(e P@!˜Sj=20CЊŐeK/aƔ9fM7qԹgO?$` 7E=!QIdO`QFhgqG kR9W$#kA2qTr%2D(]I+KrL-aqF.a %%`*LMJ C. ‡U 2-{DӪCTTMBe1g̱HU(74N\QF -rT@=rPR14UDE]OcuVNoIY74]mWau=F4_m<`Ue% [őMRBӐ!\(?ÍKO~[4iaZc7Zh |WY{_Sf5dx}8˃tFg%xM!㏑Yd M&9U8YF9fMTXn9goY]yg瑏>袙nZh~y騥6:铭:p3*d< {\l ;w3F+׻|j[魑zopp.|pG=|;\ζmc|v_5ygdV{my\9yÒMwӡuOUձuo][,}:٥G]mwwϝuw}邇x/wI1k7zя/QSa{Ϟqc:콩|ŧ|/w}Oշ}o~7џ~wϟ0p 0p!0%p)-105p9=A0EpIMQ0UpYhAhPf tzx0YO“FCp P1 O 0 p 0 Ly~$ y`&$ kr`B)z(@.z|Gpqvw҄ s}Xb 0al %vG%Pz\ΫI#cD^ BEV&b%A~&-G1c1,"Q Q'e"`yG1udt1!L Ggw\&1Q "^V!ZQ!o qlEB"B%,8'%RzZ1ȱ$/B%Ո"Nȷ @}4 Pr.+Ft %|Wv2<"/ +P1Mzr&@*R(QR&Gnf''2)!R'32rr+D'o2-  )'`ȾD *E..&q,0f'7#)3MS#B'nlR )2nF ,Y %1Y2R%& -S"+D$ }%W5_"[2/;s1%4Ӆx4s+]w,$ -R6ItҜ8;.y-;gA>%)S* Uf537(s;{s>9>kB1,r:$&ZD((nL#H$6D2G& u$DT*$;:?!A}a)$5@*%rxtYg%4HG!ZnwvD+ZS}xyU5v9y%ŸrYh=;O5j';WYCY 89|N pU$Yc]Y%&j9P}V^+lӹ6(ǒ.(8:am7nnVxRPrX%,GB4xFYhMmQh'+m94zy-O:|1y)-P h+y~YN֩yԓX9e+Ɯ HaA *bF!yymNZ*˵%AXz&jZeM: D\[94ZcY1{ozYckV HxW۶(IBKP/a,Z/)D ~~dEpMA״ڃU봿L;Pw{W Z s[-`8cfݱݴ)vsTϚaYc9'[|2y=;M[x[l0KrA+tYl%`zR9;r]xqUgl ;BX*(|@0pQb,(%BH%H,UT#HK ݱ9Q() Ee<bX*-8,@PYUH$4rzV؉<}>N.uv- -4 2$"ftf0fQpt,FPYcï3Tѓ+=OZ@t-+Ie*S+ t{%#cB}l 6 8zcAX) B=UPz*sS&y=\GDRUgEqkN2g6]BpjCQJd뺞&sjA-J/!ـLV8hh$59'z5֮_.@d]+!swo[8ȱ%9 #8a7ց2\RI tW R vЁ g` ʱĞ@qzWMWlD—K|)/qFD[v1j rwAlKq`m ҈xG9yvNI`EP: _ wL_|9w)65_9b6q79ݔG>sY^4`;x>ѥ^ jMՉ(:yHh&*W\%IP)>wj Xj(M؜i< *l&Ji멳B4V{܂vJ3亙@nߢp[ڙ-U0 MLI+P{CqkJ,0cqثl\'<)2/,0w1 ؜͗ܳ?C]G#K3ݴOCSS]Wc[sݵ_c]gkݶos]w㝷{ݷ^#3޸CS^cs޹矃裓^駣ꫳ޺^㞻޻_#3߼CS_cs߽߃_磟߾_㟿߿0  h"0 \ B0 +h b0c,j"{ε' 0@*ӦP&;q%sa^0# ƒtX"zN HC3)<%,uh5Uh$upNaTzr:b`@p8WƸvĕS%7*tOظ2t\؎c$lFb2;,ۗEaUupWzdi.Yʑ(|i $ M.J*0xe0(KAD`\J`Џ4`FT?\9nˬW* rn"I|,1Lfٸ9ʃ-EKYl4sq(pd4c$C_{["o\<䟯e.y:}S5b.,s:|J D>rႨ@"hdzo@aU/~כѩC 9Ԉ'jß?мq!.{zڃp'aA a0@ _Nt HL_ip˽H=~45p\ dT̬Xkia ` Bʪ p 2aZ{݋6a =yMiaZ؀L] Vaaaab b!!"b"*ԔeB E_81X"6U& "YECؚ$ѷ}֜H+ɛDMᙃW+)bU0, -F"J"1"b<&>2_ . 4Fb)V#c# #z9c9"Ml#Ԅ8ZS24M;1>b6m V-+)B@@1?F}6}C 7FF *=@j:RPz/\?pe$#252]e@=:MDRY~eKZxV̄DY^_ImԿ⡱咤6e_=|}M"3K_`"fA̖RY(Zt!EG-#Ф`,Xa&v2lrU^YHl[\]6bU>RB$S @_6H¤܁o^IN$CA ]v4ɬmC/^c=%O5ExȀ̎f`TsZ?Ƥ-mfrYfaUq~[Iaj)Mjz\FsDuAa"AF# 1;Wkm׬q'uߗM<: 2.ׇܞc2RDbFp^א΄j~@[L)} RfA45¡QV%,*ABH\g=CդRTRjlMYHXi"QHzdZZ F#ʘDA6X5Qn/j-c:[Q f$64AV_qIgfh0+)n)nfX2vYzF=%a"H,>)]+҉. =ig-B``Z\NR϶fZKElV4A!豉 |S*R%f ؒfE٢mؖ$:QY R_(PC! e @jęjj6\ᚕFLmr+R~~k!nhZn}nRfӑi =V˩-Z[FFő"Ge iV&i/<l.ʄZ)CȞ]2H]8)C.'aG(*r魒n`P*#V?DŢѯBU,J)ݮPBuI=c-bJlĨN*bo݇fk ð] p:$pʝ0 z^Jep}ΝTo@ј _JCA5*%)Hq Ȟ*tLp( 4L4T18+JG-$^  .0^cVsBL`aqpq է̱G)%n 1$+-̖|_c2sxy^%/ŹaGDMYVhcp!?SPd‚5 ._-f2?rj Yىhw܇f&s<6vk,`Jr^@~^a{e9npmrZ.T 6qQ!Ԍo \?o3@GJzlJ%1&֠) 4Lqlʈ^9H uXpؤHuRΛ2SٜRK 4= YTkēE VJPYuZZu[ u\\u]]u^^u__6\ vaa#vb+b3vc;cCvdKdS6avfkfsvg{v`vehviiSe_gvkkö` jvmmevoow\vnwqqn\87x@pKtv AQIiEVACNGF}sH9g&7v+OncoV6y 哗xȸuc;8h*snoټhN"u:3N`(h@45"sHћF^(it EeqJ)Ez&QB:*I+ܾ6 u DT zDtaH 9"ć+6 Y!b<50"\8\[lڴ|X[wl[oU ^Ćl±^@}嘃WFҷⴔOdWKB^ąk 7sҳn<6ʱo%&5tjJ' X4tA&†."BIDh+TQBʨ)5XY஻.ȸde=,@ RI Bd=0R2gQI.hAPc7=O?d%8^,#DP4@T0VɎp<ܰ&]*C!AZŞO3UNOPIȯh3X $<(/PbYH, aꊬu/2Bȵ]wm7^ >m,rH MQS/ >/XM 0<(c? $ @1 {a$fާD5W92fkF.눔+MzvF9^N!hY6\2`v'Zݞj m"jǧ;ŭ.d;E:3 ބ3l4FD`r1/!;$N6P1TW;Bl!n6ms~a׻CIG?p\Sd$>r2Y/dܣF5ZەJ @P68XeаJE5I6<OPѳU/d Z--nōwcֆ61y:-яj,@"d$iX@wZ@Ɠ_V@ϰjSgcA" )Q A #Ea09bĐ+pF\E8(Oo8lD&H"IŴp¦ixYM-ഢ 4R\S=EǜH'.\?ͤo h"n. CZE$1`o8A -HKJ;aIQSp,27iN9OJU[݌P,c7߁o- D17$YQqT+ Q}*[Ťnlrh]zҗvEm<[#P@N} a2$Ky:OY_ 8+}O_م$KdIH9QzG"q N|`LuKw4Eoz;|5?->d ĥ@ƪ4i`dtt : 4@ $ADDA \tAP,; B#D$T%tt'Bڴ"*B@`,-/+$2.D4T540t7? 49c;Cc=>À@A$B?DDTD:4FtG4\IJHLM@KOEQ$R4 TTU,StW[ X#0Y%\5V$E=XDdT`z9-E +T,hANgt\pqfBo,^ƒCo nł\0p${|4-Dv,"FiBHxL?zA}tȇXP-&GA)_BǤE @6}0OON<9% @Q]@A=BBS`ΣQԎGWed5qSuT2]RTh P b53D`40UX] %BI,D,a_ݰ=cEte!)'+T3^#fP3P 5r5|eWW~=`#Yfy J]+s嵑KA`sa `a%$#4a"_#'J@z/ f  2bb;?(VcrLVD:!>0c'Tbl_X?63bDNJ .FndSdcD% kK@F>> 8dJHdd>H3c'a~EAAB/:d#ػ%xػ.&q+Aߺ#^A/J(>o>^%;u6c 4&z6Ev``Av Ƨe .^8( ~bb| Wc!^/pA΂<^_&eK;K+%0X˶wcuNai-n ֖?dŽ{3'7.ߦ#X#65#Ra>n9>sj oed7nk3P R,fomn^g5.k@DDn@$n>P&qvmV )rf\~'@ignmmM ;pp>ᴹVnsq~?X)'Z 's4,ƴNb/.~N^n~;i[d̞n Qv( ؞`#Kx/ĉ+Z1yT1x :BIXP7Rkڼ3Ν<@P)Y@(;"i Ft(=DW2/Z:5`hI#'r!nF NkALH T``ah'T0I 7!Y<(KPp\F G7/Ef>AMor' ]Jċ?\VD5M4<*XN]XPh֭p׮k@Ԋtz4W%Ky#Dp^A3W( M]EPR }N,4F` $EьcFpHar*b.m9%cӥ0cGD`u!C/5v!cX8sU0!^x4%Ҕu$ $a}44}X>aXD`aH舉DY]PqP4QPYH#%7$izAg*)M\gvfj D!ѳk-p%5vbDXyBtFQXz$<㜭GAe(,a4P' Z|k@lAye#zu1AvS҄歞QRZ@ NLq_<:I@{De$m kzVO1jX4x*(uw87ԄQ bX#E jq\)Y)B;Zmy'hǟZb$fQ ЂXbS:!2\Z =р `~Pr^`|U\e Bb,eٻBs7KLWeBW!t+w$Z*DMTJ`'mD sThJ&]NKSIE*A@c/Its$/kqr<#MώZn$;ҢRud̩+0a-PNd3-0 NB3x' ӘtxBA!}!dFY`Ý^QمevqN1,E+ МLVӹJ&,O!CMqJ D3U xGMLDH!Q`ÖĢah5~lo:e7KS_:Њv*6dqj:3n̎seUb'?UUiѡVUdEkB!.d8zMN-y"ys GdDTu$!εX]TƯ &d)Gd~]";247WNT45BSx.*C;0YqSXl\v ("OVu\ q1 K$9Xi,kyD>1N ڲό49 ]=|yut,6AF @ zС䱡819 A  HKzҔ/LkzӜ? PzԤ.OTzլn_ Xzִo\z׼ l:H}.ina6 hB$Nbik{vYlw{.7mDkDn- 6ppпFhVx&\jn4@0S/ x&&5Æ M|Nf bK{a4fD wOsR@TpIw+}hqPDӵݳIM_6pbc>E^rOe@`]p 7HT( X5UT*SxrqtZY@Q')x,.Ԡ08158x4%ȃ=@(Z 6?C\P5_ fEeHLSwЄdx?~Em]w4w6 u|6L@GI`V4Luxbᓇ֤D7% RVOphK8HFȈ+X(>舗h5wf "?wwxbv5wPX"8؊?x X X[0z 8Ix>S|t'aRLVaH:`xn|D:v6EtJTUbxR`&1EQ( ( X" )]VȑiaeXΘ"2Ғsً1/8 "/=)"/.B ?&(ً@)KIiOY87y[>X] UbT?VH?U|bv; (?QH[Ǖr!(> Bp?~D1LgWI[9N'Uyy D)I*JٚL)@ u ћ InEӜҜҹйyٜyByF޹ PsCCGMY. ؂D!aPڅ5xyD|Y\kDfZ4^CNПa 5 zǡ TP?MA^Ԟ婛穢չى)4Z->ʢ96ɞ?*)J*)ĞT)r H 0RDEfU3^S::1cb١Y:Z@3QjӀW*3L۴iYx{qIl^EuJri|I֗{}ڡbIbV&ل`7!wjE XxՆ 5?Se'fZg#Rn€ҷ(OlL؏i@) Z/YL\J8cdpu9P H穀Voa 3$y pelYp'Zb"?p Nu!Vw1!*-ʱz j7 we|ubV`)wj*|XfI v[#+겱>;8kLov[\ХHe"\ipC(w)!}a/t]TyH;v%H}rb$(z;4ﳡҶoYgKe˫ە||ZPdJvC_h0+(dRKK +eEg>í0ZW׋KYCዽ*ZV(⫾˾ +Kk˿ ,Ll m궳!pѷxFxƓcHL<,6U=e I˄ ow `9|6d-bm<Ø @̇'hQs>2|۠5cP9;\/<Ŀ*`4,J!Z\_@fڐcLl^apqg jl=pFBswu,ɀ%`k \o<77l,i#Ԡ8_ p??qqo=')Wvpp*v̉+<>hUr{A7,"A q&@ʋ H|Č{C$dӜLt>rpLD'fQhp˛Ϝ@m|!#͚qPw25= lL47]o\@wrv7WW'^?+}Xry \v:+Xբ:R\pMVZwq`t Ê9 shCHUTMM~;ie-m%)jP0cunMG-Im7{k'sXy*uy_ښw W&qnz뇏W'2?&(=:.wb}37<Ⱥ,۱k }eڍ],zRč y]UPm'r\p@UI ڸMmܟR= זڽzMMm߾<$ڣ]#[/@|8n R~LI4RZDc0VݪR wiZSgq^(Mn\׬K^|WS@Q[89]3ͥQgbqNoNjawOnb-qɚ uk?GΦZ`lN`nS(VX_Ϯq s֮DW RK"K+X9;aU?ܐ @;9GTW֭|^ލUWj@P] qaGL`s^N_d8W)"*N2n2Ψ-T>WZBnOuTDžtJ~vkWtutv95ĠqِhQMW`֑0^s@͟bぉZuHp/Bִ}|ՊG?/[HŹlC jy)i`9U ^:<:cgY\.MkNGFL@Ϋ=LS@0 1b8tI!b0N#ΊQ a1V΃d;-)xh,"!0aI` 2Rr3Ss4T4DESa*`..o֨I/*Mv5땮Q6/tXq V-̡A tĄUN{ w{{XW2c<*&Mh̞ TieP̷]y*u*>adњ'nDR@r`I="IJ[(7$5 &OpjTSVzuGTYhgQi_/u Vii&ԉҦy _#"u3PЍZf 9l0gu;n-%܄87|d ) .aZ6'8&Ylf҆ԛ!ƓfZS$GAh5%| 6i7}z7$YIv]=@ẍ́_):.˦9⥂H9pHLAl!L2',d>@H!P0B,g 9@ *-ˌ(h)!5t+1QNdV[%`\+544A 6/[UU{nJ(s-IL7P[Q 4McARXm  0Zub-\,T{n؂0vddrYNHP%ԦJTԍ)YM)4@xL=u[Um[y39&ECu]&,cd$@׃9ͅqPЦ~/1USA(eV뙆3\pX"TL ᯉ{k஻986ů!V:s܄/z벩V96lvDjt| ow;<3^cNSckۺmJ.斏@xkf7 ! .<W5{|WqqWw/ܴ&=NgEQJcIp_:h? 8j7z`Q N f BN=Qf\%1x$ȿ^jQP|I!H-6a(p F7iG}J3}4?ZP UBP>D)ZQ^F9Q~!HIZR)UJYR1LiZS9NySAPZTIURT>QTZU^YVU~aXZViUZVq\ZWy^W` [XUbX>d)[Y^f9Y~hI[ZӞUjYZ׾li[[ny[p[\Ur\>ѕt[]^ծnuiVC(@&*SwIa16+.QBbN^P 5 ʢ( ¿j0V&j DzaBpgܽ+Xq-l5j@pE<1D`gZ\G4X"R? طQ |"o O#J~u]Mk"ڄj~/ ݧ;7S:oncOxigӺN+rOب]~K[ۆ q5۱-^|5GŇn<قɭ_r3 t+>v 0rbV  f}\zB>D$uzv.{/ xڢv[tB O{3%9_0xм7L|]=v18g=bl]!}E&ǰ#='# lIq+`xRdž# #(LGp+"m/sGȠ",9/'}&Rlڮ̲ܒ rHrĬ&O)s2R&ˎʒJҒ2Œ12,-3k+0#C"un;q)ːdž%q2;3.)(Iq2$'!(4cr0OFN0nfs }ʰ%r8q/2nsD9/9 b<32sv:QS'R<7 SG4y*[^ 6?S;-6ưe#%5BON 2P:Nl~ N'-#A/18D1E6 jG.otH45tCwAo"5G=2=èz3+# MJs}94Tf&TvAO`7NjɶYr;aM*-y=7SOV#R*21{}o7! !QJՂs <vd-wp+*#]H=a1O2lz7wa-s4_w>vgH8 e0;®7%/-+{NHP=c!C@8P7c8I^+%sɷ%C-FI6.yq r#l؎ͯw?XJӠgŏ*tUQKM^SsX49VL+QYxuոCL22ᑓEAw?lH9uUQc R.Ke7~Y.wײxy~/}HEkϣ59uMV׉E3 Ѯ*/'ZPRt#-AFf5fx[Oz/p]mV5z8:v} !ODfа7vʈ1b*ŤTϦ 3ɾ?x;wq-&Q꾓Cfp} n)w= ڒҷlcvn.P:%p!$ {'[2ٚ~/;mAXzO9MmZm~[ X.bӍH.MB";mlͮqI{1(Bܻ0;{{i[䕻)x;|E򮌸6у+Bՙy.|C) CܜBuë<ī[ws gyk~G@/8[u\^&zo Oxa4Qv~@}*K^~痾(~^菀'GI'C*裇~^n^/z¾^^^vy]V"R( N׷ fз_/'* Rb! ܋$+`3!&՛RN|S2@]^}"%:\|kH@'cϥ%w^ꥀ~kwϞ՟ſ___q`cQ@2Bb'Cqu^ (V}nbL=Gvwst}}o[ !bDQFBbE֡BA!"eQ#bjEff%mb"Ī/+$b0cDlYat0AEуfB-FQosqdbDu:`S2ZӏI2 )@!XE"f8J!E$IP.|PfҬ93L:eЩO<$(H?%)KN}JhURb]j5hW8n4Wajm[ebݸU>ӗ[uU{Iw)@&ujW1=xBLY7Qи0.x; Lo|hwjDP[ܓYi\ŅKm^Wlsρo7jrن']_o=ӯo>Rp+U(ivHC5%^b}!7dg3 g&")!`iDfD-l@ba"",Ey$I*$M:$QJ9%UK!en}`b8d{ ."&mxgx%7Yz:uSΈB"spkX* bmx)ny!HKVj)z):*Y*cK:xk֪k"k@ l*ꫳ"[lTVmb굲N-jl6[,Bkkxy`\zx&"f:K6x9&00NCm[G^Ȉ!JՌ*&& BlUûa麺.ZnƼ,̨K6"@,6]jΥlӤ MIZ{u,I/ 46L}vhmpۡqAJr롷m7a1yi1"2/lV4&s" ][z9R|j)_$@ӡ;Cq=?<l?/=m;S=3cOo=.%_ _eȼyz21mI ` hg&'bt"}~8vt۹/"H ^p|sa 73̰l7T_H>? N|")JQ,j\FU,#ӘE1l\F7" ^:1vL: (O K͇u*K0 q9H dtDth A2\A(ɘLaIr#.s.q/)=Roc1ic1t2?ּ&6IPx)d 1AAX@ TNtS h!U) ej"y޴8!?ur-BsJR@`n(X`* PBnGb 6Sҕ.})Lc*SMqd3- q'usBaX|΂=b RSEPOdi"JAJd/P;M%Bf*ֱf=+ZӪVTNK MS?g&@R`p8*A.Ez}P!WHRTQRdR]EB4 ]UMo`r=-jSղ-k'Qi!$f$4ͭ-i%k2Υs+]ӽ.vrn=/zӫW2a{+ҷo{7Āⷿ/,>03~0#, S03 g0C,&>1S.f Ӹ61s:0, F>2N~2, Vr-s^,1X>3\/n~\9ӹj3]~,A3 B,s@,IXt*xKLt5 LE(REըֳ4Zm]5~@]kX#χ4x66=p H4-F?Z/kUzbLk|(bf$u7RZvUI-WRȒؤ*Hq78e|@71 LdK<-hA0ט5A -r;{l"=Tb &7[9μ] u\\g$N㎌6PaV]8 x=}doUR; V.XXhi?46zP9|݃Y9jIEOk];Mū6q nbP.z 46>k<.(E@+ý4Jh{<_AiOQ@xP)HtzC=l諯{=ٳǵ;j̈ؤ>#ˋ|{@c-I:Tu5elxΜ۬†E^xB=T CjoA?cpQҖ;'jFp*t5!Ն]+"A U%зB2pkWOD] z8녜jmū4ʪ-ZNc.[c!Ă lʩmlaez,6 ljAbb>EK > y 7X &9 0ڣcԢfUUj%dj#FjT#kLkN/,m-S!gq-e>#-XdzLo+]цF$ɭjڮ^^0 ^-ljl fAWVnjFQYU:nl.%ivj}@Lm(vek^n% .cê,B#[,z,aZ2ZaF &^`i)Nzaho:YXi>--!-XiR9D\ے 0*`IHHUHp-` n t[Kv,"tQbw ;djc 0%V痨Raj㼋ߨklmJ8P+p@ 'm G] g70w+q-{@ݥ؟ qYcƱAȆi 1,"o5^i&cXin2lc8rffvrިSg :p ݛxo^kD-G/R.(0C l /3h3 n$@42 /.b #N,X 5Nj4i hrX6;2nÊߥaaRCױY4%COBeܲlV4tG۬ ,_گ]2gB &lʀ'Mf);&t3 ]3N_,p8(z|dV0ӝS16fq03V;5$D:>8R.!d h]aLQjY3bGE?eusN2 WunܳU:_+Ǯ;l jP[_#dv\PǬ ̶y_DO/E+[ii2@a6llɢ4r,k۶jIG4^a0K&FtGwe:gb#* f7NrPr3d5z1n6UoTBO`\cOBohZFiNF9RZP=~_V#7} A("οqG/HQFjvQt h P'=Ft(w )8 L_@7>?=<[GyGV6TAAP[Fݛ9xjmh@!@[>A}.Ee<ӅDҥ3ɯ*,q=i>>9= ~r{8tX:i ys:A %a"d1.‡UјPxf;#ʦ]wx??AC=<=HA6XE Q#3F9 ǐ=Qv5[[p\eT`SC~^ݼ:[2QOa0 UAĩF_;ضGɭßܻt7zec]xrܫ3pˢM9̸ySn銍_cyu\j8H W *p% X@(: p@R@,b%P_,3S Fx 14F:pԑ.:C9 &@ ,"AH @p`2*%)(br`Bl_N+@b1?KJ4WYmIoSVFkăhU08`AnQAԏl;5J?蒩uwNd!:c9od9!u[n],%PojH+(CsDW],Px3__X<`uanDž!^%$8 H?tdK3R 9YRU)C\^Bb=ua{~ƚj|fnkVNۜvz1z}Iɫ?6j᰺k6lV f{n6\X;o/٥} 617f\Wwr3|s9sC}tCtO?[~.q:aBv{wt7O}yGYÅz%]- ``8{|Wlw}Mo~~Im#` HO t@FP xA / +AP#$!3xBnda ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF:ЃcxG˧x BӟFMjBUU\8:ԳnUjVZzusk]X28:Roj\=zW&V=#ʙ֫U)\&WfVURU}aeKwbemk]iKYIIsvA |NCV%nqaV5-:qߊCƥnuYtYbUϻny{^&#Zp{W/}oWo_X&p |`'X fp`GXp-|dPp=aX#&qM|bX+fq]bX3qm|cX;q}c YC&r|dKFǺr%*S%/%( jS 2d4Yk&|'sV*s28k& +Xh9Ђ34}fÞfLgZ>O~ۣQ(xU1{Gh{Kͅ7~난{W[k3+=[?4T,8tcۿks4ۺ=AAS> c>!̣!>#|"A$\뫽$lBCBsA$;B'T>\/>1 2$4,t0BkC{+35<渻303|:05`(˺+6,f<^S(+ k8K|D ,ODK5SAG87t7÷7;=C9ľ;^_Ի`b>:TC;9F&sF2\:tCiltkD:q3qGؿr9}HǑ3td>xsGyzGyDwduG|~psǀdGrǃǂTȆȇLǁLDŽȈ$>Da@D3`(`F?BF5I $PQM$?P5F-EDG}JUPBQnFXBN=[[۽ۺ[ێ%ܿ5\MEՇ5\ƍ\\ɵ\̽%̒"8M3bzOA&˘CW!Alu+BcR J]a]Mcd٨l$S.]O_@hnh~8~hhfhh汋hh^i.iְn^inIiiiiÁ hiji.j>jh^jnuQ!vjj&jjijjjkhk>.k^kgnkkw~kkfkWkkNhl.l;0l^k~l4ǎlʮ"ll1llm>1^`|W?kQm)m>mٮm.!hݾޟ޾m !,  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OFPq `#r)<+@!!5 _RD@8EBOLHH@vx9xdBCz8n&!Ĥt1FCH1)1 SB㚉C2z Ojb $?)GRmXFZ"S>Y5ɖ31/b"$(ֈR҆M9FbKmõM ("%09g X+d,X7LO qPJcim :ÝN(ETD\DIUUW_Iw{@}Nyfr:E䰔`EavaPtP6^/QQ(' y|^79gD޴^(͎n5LBLnC6dLfJb(فD7)sQnfcW=$( f[hħ!qck} ۀBCaLZIR'˝JMfԘM&ƶ+A@3> ,]ojyӢ|XqHvmHtޞ ;A#NְNb F#i;m3!zdMƌcomF&*kNB][E rhkĘ**l`\-pKqUQN8PN_hiC*v"B :% XLFG^sZK̞.2G{[`\ds.gw}=-槯~!,+  di@h,oθiyO/_, SʘM' ƨ%a qXL!E1kbYj1zqs?L+"*$^|l{$_U"*#/A%#wt* "~0 D$* Q$H"rȭ, b%@5u;ex&ڋH"Ua3X:kƹ J4l)Ra6V jTB! ,-  $h쨾i´Ұ]nQ&Q b<`ޜErzh 6%2V֕"`Lu)0u4AJUz<?~"8#'5. h"/gsx$( t>S>X:c!!,;  dh,h+ðү*HC ` ,JJ:<81#xDa!r(M,EiZ$hr{W#BzS'MOYg"UVU:.ry8YŻ*0!! ,J  $h쨾i´Ұ]n1Q1, D#0}%\K@EHJ@u@-F]J8MHf$'|O!! ,X  dh,h+ðүn1'Pr0N Z9=^%7Ep|r59QHx 4HzO|m@t"L~bh*0!!,g I0FV5׀萙>6>9?S}($5AONdVWhVCaPH!,u ^ $h쨾i´Ұ]n1Q1,gS]Nv}b /hjĶWx%qsD5|Bl>:O!! ,  dh,h+ðүn1'P$b0LjDV.x0R|Z;=OgB}^tMuld\*/"~<8HNL<tFJUDH!! ,+  di@,kl4}r 5A# T|TMU^rQDM@x12Y 8p)oBt0Hy$*Dy $ *>y{#9* :;i t3y$E*#)Y R79M1~+e l%nO6'8*dXxWVU!! ,  $h쨾i´Ұ]n1Q1,˄uVKiQ0c)=a"p"'#{P.msj dt_h~sq?uq+g";/9#^`k4L 3K(tlʡ:OMBG!! ,  dh,h+ðүn%O$v $<.XK5 +Ř'9C>N.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!! ,  $h쨾h°ү]n1O1 8FtiZbPPzz Sp6h(VNv*{y@ <w:N_Gm%x8m  f@h44#/UoN]XIKF>><(!!,  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,  dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB' '(A>>v>W!! , K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,,  di@lllt0w/< ƈ.R.'(IQPݞQo ,w :-Z` 3A`>RYʬʢP ~ge?P#dLHeb^[WRJ`!!,",  di@lllt~r>;hk |Ģ-Ms}MUz0 ɥp5%r o U_ +wO ]%j#*KNXY*Bw~8x$H3%*)v"3iS& +tu#'oƼl"$=ן r˔p-K  DVh!,l!CfO(Ŋ3B!,?  dh,h+ðүn1'PFDc<. 1C T0pH3b MN::>PtkT4z@( x'"*c?<$8g )P8{(# 3uFLNJg0EB>L!! ,N  $h쨾h°ү]n1Oa@L0 FGD0#!Ũ\P e5)0yt>q%'k |'tz~Py~a'# 'w8X[x8nqglmi;m6:bIF@!!,\  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,j  dh,h+ðү*HC ` ,JJ:<81#xDa!r(M,EiZ$hr{W#'BzS"'Ug$n:.ryUoQƻ)/!! ,y  $h쨾i´Ұ]n1Q1, D#0}%\K@EHJ@u@-F]J8MHf$'|O!! ,  dh,h+ðүn%O$v $<.XK5 +Ř'9C>N.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!! ,,  dib,kl@w-ވdr eWQ)HAQ:\fMoq"suwL"zt|@4,yr{vPpdw>* $= *#HB+ mB;,}J%U824a3W!! ,  $h쨾h°ү]n1Oa@L0 FGD0#!Ũ\P e5)0yt>q%'k |'tz~Py~a'# 'w8X[x8nqglmi;m6:bIF@!!,  $h쨾i´Ұ]⯍Io%c axL*-c.T2حVDQjR,@e$Q|:N;YU'%qgOj~v4)'$J'#|c( ohf}"aaz7:B:c<žOɱCZ!!,  dh,h+ðүn1'P"8I" %#mQ QN48Eѡ2L!! ,  $h쨾i´Ұ]nQ&Q b<`ޜErzh 6%2V֕"`Lu)0u4AJUz<?~"8#'5. h"/gsx$( t>S>X:c!!7, @pH,Ȥrl:ШtJZجvzxL.zn|N~D)**((*)` H G yxEKTaVJWYhZԙGԲBּShIv'* E*BBI*'BK*\Ɨy<#E#rbaY@ LfQP d @c1DRehhCN?{0H(;|)qn5wjʵ\ʔHvP!UcC53Kj4PaIQu&#&CqB*[P D>_JӨτ5Qˍ]8ސֆ yeT*PoW`z1ۖ9ب7Sp!ݩËO~"R/ @w#rj\ %5 P.ԟ X EDvsIPPyEQ!3#4DWDE6`JG6F*"]D98QG ҌD ERG@?&9)AP@D2LZvyItw\ix*t!YvB%dd5 oS7* x(>iKQz] a>_ I JCTOClJi ꍪEG@Ohbk*bHd)tjwhx}+Pt֧d;(DFtaPMLJMC%WV|a ,/!{J'D/A%$pC]*b0X)誙K{ @G,nG,TYg)uM.xc!n/~mowIA *GLtEja3!P,&k X+wς͒0IЂ t2癪$V ȣZB@Nf BEc~ZʅfzH"|jܠD␳\;"LGԃ5 K xx,9hE,/h _ػykB S~Z1 "m|#h;'eE2"9`V@7 2qR1--s>1"b(V+H$yo)jpawv0:I"]תHЍQ":H4d6HUԬdK,GyS#Àki󛟢& v)BViYn|@JPܭJD |qPd'L@ 8hFct*JnN835X<66@eFF𗙨IV()ҔTP3I!tnSϜ;7(F&B?eM=\*#D*˥\)).E:-D 2)`q20&+E 8IJR'-^ j*EuW*UFc=٣*QpZ`@3z5 tI( 쏈Eae15v=h3@PPaK%S\gIJ JfX,*/>5~eh !0ͯ~Z{f +k\h5:CB_ro%!=fErh0F7F?k? !=n&}L+π /Pzʒ)Hb|M&9W"q@{k6=(+rWT| G9u[yTYRg3b(61jt*%棾"p lHE5Dԋ{!|K*iG_$rgyXpS߿!N? $q3-6e%>B|hq1j 7wNt D3\ue<c5z?|ظ.'2&&|4 j`"~UPV`0"+'qgy?/{Y 9(`ԛh珠8XGо^>SOUuV3׼uϾRO=)|oOϻEٗPHP!퇿u8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈dwW8Xx؊8XxeIxn֋w؃x-Gy8MCboz%bDe29@u9fSGsW@nIOi] MiyC ')*#闲Y3) IɖN9ЩYɝ"٘Q9,*wƲn 9yb#ɔYʗ jj<) zLyi,'.%@, )$,ȟmU-6| JJ9ʞ$! 5;nAz DGz깤jRPڛU*BZ  5``_*febZ j*hڦaʦp*5o:XӦu:`1v*spZ xIcXڦ d[bʧj~ʧ:ꨙ ZJʨ,e}IF&].+oN`JfJyʪƊȺZǪʪjzЭ`Zتۚ**5ʮj㗔PAi^*\(Z!h'[{h;@sɫ 35+d\Oud}R*Ey.;/K8{-.+745;D<;>{*FK*O /RI{CKZkVLKRjT Ih_ \f[`+n[peK^{R<۶u` A+VKu| )y 2 sR褓Gc'{]분;j; {˺p.i[1;c;v۷Ļ M :[k &QM*EV IWZ:Z;뻡ˠˣ˞Y[F:Ks`%Y I:E{پZzK*Ll替{X[SI 'l5 ,?-4\$lEl*HڿG<7Ak\fL#lkw"CgtT{dȈ/Gȇȏ ɮ ɄLɥ`ɒ ɞɉ\ɠlȍȥʗ<ʤxʛʎ|ʨʅ,˵,ʱ ˳LˌLŚW4Č10D9;l˿ʾɹ؜լɺlJҜʼ׼\LαΜ<\,+˲ HT׀R5RHr+7G"#QX|sfdBƍac"nlvhcB*i49j,ԹyBJLNPR=T]V}XZ\^`b=d]f}hjl]UlmH@'X${rh mATZ~}hKp}Eؒ-؄MQlfC8m#Tھ KklQK-mm8km(`grXY7=ḓJ.e50| ح_ Pr׉m5a(VmmS =`JLEڋpٽHpqT.eqJP5/U/BQh-]U\grMOVV ON$n*~ZqUJۡts> 8/2BUxݿPx9KL:>V_-;=7| M~[P9]CK6mWUzt1NpK5/߉#nF;vn;2{VVق>e^DDv..U~c%NwG8d^e Id ܭ~FreC8d~R^knȾc,7NkUrڱ.u[`Exxu^`^ uuM n_ / rO_ o/O &+/",/#)'*/A= //F86A_Ԁ`Eo[:P/^aL8k@BOZR\?gwGc_di?`O$Or_|#QIO?q?_{0'@?_ȟʿo ؟ڿ?_l?WX4It>QZ^Ym~aqa\6iv>׿w !#%')+-/13579;=?ACEGIKLSUWY[]_acegikmoqsuwy{}8`A&TaC!F8bE1fԸcGA9dI'QTeK/aƔ9fM7qԹgO?:hQG&UiSOF:jUWfպkW_;lYgѦUm[oƕ;"TFջo_32)ErB3G7CI6 M:, I %OKz'PܳsC˥ Mհn}X5@.y\@La㺀1BE_@m 51\ -4T⇁20{jt)a@PgpR)ahC=.;vjHܴe8eхC̀ FQO,`tJ({ kJeF~( `9tM ˻W##H~@ !>G$!1r~֛\LRMW=TIdeHՐC$72Ğ-Bܙ( u|5)1G:˃T,fQP$q)D]^,@}8QnЉFRrE֡ ~~ լQ@%ynY @Hvd}AsLDUz Z:AԠn#O/ .nIM9#LO_:^:] Ӏot,5Y>jj5qv|F>5ZTZ5 kiZ25D>DҨH~د735y%,Љj)5<ׁASV5RTtI}v t^$4̤Tk \qe+{E.e8.$a=e0(4##ھ6]2@*Vٻ.,\: n؁ϭ )zs:0VmZT T稀U7hBbT$es<< |ij%MZV0Ui)8fXɽ)]zinuڧ ̓ڸ* |g:a΂~cGzh[Y}>TT:$ՔAG]3Ҧ\c8L^;d'Ed-gZ%t`yQ>発 AVN /cNZ{HBu$P.C:2*[r U n_q-dN{YC2obx{4=՛gE{;JcNUtAz_}+oFbV)u\nxþ]YNHqzQ1s#RcyЬ(@IiP#C]P K OkOzonpĶp $. .øBY ŀ  2Ь0(ŘRT)I/T('6G:8q^(3VԠ5ZҚI˅r:Ŕ熋 q" lyp1C2˰vnQp1+GI čDoNܰ DƟz-jߏC+)5dgd.aM$ele$ I3y D@#e12V+)k6e3TN> >S29oI0xLZo¢ 1.-MI;İ Cy"Euw%tBtD'AEVkzlE/z2ntrR&4{)HcQKNHDTv@g&|+QE P:n\VŔzHDvGHtB$E5dY[}V?X/:t;p}Z@sL渊| s^aQRKoB:v'^Ų0]DR=E=+R ~TN#t+L0˕ b08GP=a>MĹ0JkSd۠6dbtI'fS(%Wv'-ef;=c.Veho)' Ai{hkhkVkce 5lIr6 .L/nV!0vvMmmav_!6 wp߀okYq@FpP&7r!c5wsDh-7pBW FLWJR V7uvuWAvv sOvs}w7xw%x@xayyy7zwzzz7{w{{{7|w|ɷ||7}w}ٷ}}7~w~~~7w8x 8x!8%x)-185x9=A8ExIMQ8UxY]a8eximq8uA$we]1vCCaaynD f`:!@aLs`gv twCxE_O'n'qlG8P iÜ͏ @`fVh7=; y VUyWx+c#\J_)`3[je `&4]KmX(gt&:gS%U֊nPƘ)f4e^X&Y䤹TyFW~f%D'vWrZ4 H@;N}yk>L$H5YԝMK|`ӇsLF9'JZ?Zoɜ8)jF(RrxD>cT@ϺSiKω*ɕ3׎Z}t-)&Ɖk'Jɼޑ3q5 o+ϞT1sqҫJ;,Ĭڀ&+]Q`ꬥRpQ)~ (_uyr'GVd ܕhʏ"{Hi#JS+;%Oy#~u!-ҰF+9t֚KԌA>,I[3Nq@KOdf"\4\?m:{LMʀϳow~GtCCAڸ`aR.jx`INzS^+ɆԺh\iq{?[=c(*%V̲K1n /0 _'8O@L9R1f5nOԹclR 3Jz7=\3"kL1\= }r b,i\}OK\P-aK`-,'9u$o7l<sI|O %y :y" *z!WoTO;+)*XL}_hr%]JU1ա/˷1}'5:T. ~6?=#> L^HLk?3,te׌j=UQ;K3I76|cWc=;K5;ҿ|֜V4OS9IQ_^w5*Kp-N!ǝ) } d~ZU156z5qRÇm UW~FN[mrU+b Q ×i-jUd6_WO选N6xMA@ҘpcAqI~ q~%!'?us94?EIMQ?UY]a?eiy7*`W\|w7.Fk+X4̌?} \\>?Xp? ~?˽_(VlgLBy*h<"ʥ1P3 b->_ 5~9n=x- .).29U5N.&Rjnrvz~9U SMC 8Ups;! J^ J2ł\E*ⷈ Hl-?[qEk߿/U1_E*\#|ц="78D+&Q.|8BZa]r܈VmJgƘx`H'k&db hƢd.bM^)Z8 wjrYGpxITq'Vx権f kX2ݍy#a{ںiBюY)UNVZygaV92kGJTa&[hறn,ݲZ뤧o6.3*vp R!e}S\cV1W|+ŤlGǶj,eڛ3\sQfhW)j=䩸KGDiNdLB  Г;`0BzJ?"4:,\Pp]Uy" B3jk:S^3ߐ m9vLlbB {LnͶ-Ҥ{nvq癙lΦߥ7;ںpV O.ZF]t6ys_N^9 tgΤCLuMC'Q*^JH^vN[5V0)M? 6i/EO05u9)eR۸h~>|0 )Mk:Ӂ4+sVo&*Zs@ (!A*U 2h !GH  Pq9g+?zIAճc+.*vUXWUdfZ">1\½( NC?*Nvg"v+kV) Uk#ܩ,Lhk;- `xas ^$TƂ$KMҵAm.tOk\Ѵ-8@qL] 5]0LURWW##h$4w[,LX9玸MѨft{:׳n׀:ku0>` *o˫@|  }0obcp;Z=fiBoI>o ?< 0>OxO>ǼOpW0;G q=ln47P/e}EXJUޱi1"`i} ݭ}^  M[ uQ8 'X޳eЙ߸ t"!̱` Rқ Z\ a *YU ,Y =@ hY  t@ ^!a p^֡".a"J 8("%"!A&n! !!"U*&&Z"!*^bavA0|  cс c2 |35=#1r2r4] 1bc5Z4 ؀z A! JM[-=#ŀ?>>Z] ?[ $AARl!ݣMAdC" ~!`*U齒rJ|_OJ|_"A+d $J%¤INN"KbRdR:PZ^JNONJZKeSNLd0* :]@2]<@92]]` 17ea[2\_ F]=>r]BZqI&Հr XfG>eR g_iN&g~&m~L F`P.eHIjeKS6b(l,"uX6%"*(P6gg)%tv%"T"&gpbaotNbqq"^g/!@c©ۙ#ܽ]z3cc :"`]1bFh3"Qc_n1<^ȅPňeA͕&Eh€gcc)>Fj*Drgʨd(@Fި-B&別Vb2Фt)AaMZTO_^^m@$lsPd(Od)iUgXeixTin%NrAY[]. Zr[2 7Хj߹#7& Z*%6a^*&d$8! X^E GBf9k@k&%)hFkD&խR]hR㽨NiZiO%RPS*]'櫦>'a&,R>eJyor22Ajin,.Ai`[Ϊ^(,>6֪~(,a, eΒ^he+Na^mcnmD~me+ٞh kj+Vھ+VU@b%vpo M~):l6jAln..moB:&`Ȫb K.qN'@ae]a.@ہn.kbnQz[;ʥ@۲jhRkZEbdjme"$ƛy/df/zjGڭ}MV鑢2nnn!..i2i.?,Nk/jn*Ten^pp*ʮ]l / ޥ* Ý }+՝FkZ/j>eV&ua ~h΀rq`֯oY%) W'.bnb) .+*3+p)+?.K,2(on"81S`Erab  fq(2.n2)r-!+&*s2qyP 6X@/P&7$"32IdS+fV+@mho dfgBy񼁱ί1WpeFDbNʽng7q +q0@#p@c,Sr:/%&܀2n4v , mHhBo.3.wV!1\@^f:1dVsR1#d{3asʯ3s r)aD#DO4> n.N0WWS B=c+O!t2$O V[#.aE4JF[.췝2r 0 !0ʎt7!kWPX`lMck9W/d>J Rikv-k6>5 7+M%VumTjEhr0ȺK?knaZ2u#/I]36>,_jm*F#awϲ4B ,c2k 6..m4~k7crMTwvʕkk4_F8܎7Oa^/@&vno JbxtLa1ª}^Iru7p+"*^k VNrٍywjՙMγ%&Y+ q[uU`w{{Z,fǪ(^;Ʋ Lh:^߅r0 #F%KOci5i*5fR_ kٞo3s8 _z/ߩ Ld.sL9X0JRrV69#)C\q5u5wv?XyKS,,XeG7yЊ֥7vb;2{]022B^b~ƒ6c3ljgV$ëifS:3@'W@vr%(.aivp;ˣ;|;RPFʇ{Tv奧u/ɋ=w^Ϟ#b% ^ntB}0ѭ49 Kx2_IQOK╭A1Bj?3RD~J& i@1*.86H@',>OձU~g$^r˖[K} \3}a*;z{B8ʙR _^ĝ~t> ']ch~\R?Y+s0?Q?urŭR?CbxD&YFSjzdKr|Fkvsz~{~s$,4FNV^u~vb'/7?W_gowGP@v DA >QbD-^L8QF=~H%ӅDRJ$eK38l ]!'9AMf+ʁ͡Oh>U6*^Ū*[`d3._bx-wSQljɩ e\u~̚n.kpwfѾ¶q~YuWO\|bQw~Ba(jМP[lUWgyhս}ppōϱ-wjy6=Ct-=h)yݨ[ǂ9q]y$J~)A:o (Ä;.Adb[ 3O0($l? 1(v 0 Ѻ&JоPP&&`'`^k0H!˲: b4=FLI'+M`9S:, 2|0t(;Ģp3!PCe)/RXݤ's2=-sNMTGW34 M8NDQD Dw׈ѽpXIyU$luJ'U'u*}Zf=ĸ _e]y: ^y,G V:]uZn 7iEe/0ԛpôma Fq;WݶG2_]cylؓd!lj{̔bsFNalGfQ,b+劗mbm67fڬMJxCsƬu3 c=Pval=A)ֶÐx o>B ~Z Wxm˗\~yn.UɢY OG=u6L| ӖKoD/yDбHV8YV}hE7oU>z`\oUߞ]qݳ//m?1Hq7눽;{mmuW?MK>Sv vZU bD9KK,pQ v^`w<O}i - | lШSh)!^@T_%|~4H l`4( zVS+@:}T*X[QBtE k@P,кP ^z%`EkP#eF3d]Xq]* hX@mѾhE,`k-:Ch,mq;]" " \j ׻,a UbmjgTFw-!l^&֮um$@ߦڷDe.$Ђ7.({jW.p@?p`̷Q C4u uAgA]/fxQK*wD]XÖ (+Qշ%\~@)pQ'o b,wgfitzu ,T+_5IJ g m;Gȏ3D%te5 V„-䷎z[&;z' z\ͷhCԸT ?a9̗$g6ЎlW#i/ _qPAZ&{ sa=QC ;w=#;q ;ОFák7VAG"w'[p{^t"rSk^2l팁CWx qK'|. >`sVv=>\v.MǎY,{$eTs¶խv4x$c0}a?8!yeCHr<{8v^o/h9/Csu%q_U};YOK=ņ_Dgp=ֹEhY@=*H>t:c@z8:B8K5ԹRܛSӿ@!#g;X"@ON6 @"NOvЀO P Ȁ$ ]PLP9P@#A"X$ mPd`,MPP  U$X%(vx$M O&uQ- QP,u N/Q8(R ( UpPRdS@(< SN2 -)4QS%B4 uRT" #80 P7ȀO4= pV1%#=S,=Q%] U^U P5Vb8UfM#P^=R]-S[72V5 hZ V"U jn]q-8J Ѭ̋6WEQ2PtT#P$,T2"]-3$W8ec hw} (UMQEHQeUWV}P %՘O5=Y n%܀XO ZW0ZDP" ڦX{U5M!`N NH2 Z%C]$(S#[X4Ϯ6ΚmS#0YY=[!XmVnMMcEYmU 8RZM\uY|m8#-Wv]P Yԣeِ7\!8E\P]!\`VMSZE } `7χ-LX#Zmρ%Ҹ[^dYؕ=u ZPPVTUЛgO>](Q"\l3%^M'UmU!YhV`vީ^#޺US޶}}T^[3!`\Ҏu}5zUQM xbUaFu`\ `@#f7b,_:4n᪴aPtΫUa^7^2[%@a!_J<9#x"ÕRb5ޣ5ՀW6٥\2N]e!Y6\F%Je^d!Xdg\ c:&V`=ZwVS*QOY|QV\w>`e`b$e#aY&XYfd8_f^D^pa?`es6Xt}Hn hh9(^ 6WX](v1;hS;&aUܡ c h.YchQ3X|EiVT#ߗ`fӊ=g6b[^xƃUZh]WT^ V^]NN^Z>wvÞlbVJnNukC.d!0ieH>=5bP| zRlt}e+6_=Pæ^M)NhRNc^^ecnJN;k^ra~^@_m6X_PfYnf'.n2+nBU|uj8oV>% f؅\.`]F`ꅮlVcgzj`ai$gU(̀SfuR hy?gχBg\=/u \.L*̦JԪjܮ NvRd%H^`7Xw4xqHp7'q4)p1Ipzg`[t аx -=M]m}m !!DL !{Gya>1Zkt@ 5B  ]5ᕦ^ +h9.I"iᄊ R'/_FD%N-o+ܹDNEh5ԩTZ֭\m1) 9بUa^Y,@B[О rne΂M3"I] {U ~޲2VTtoR<YU>{3LZxC -kv;z 8࿇|ܷ˙;GJ[yv±{/^9w߷'JLf u Ǥ|vY3HfSr%GFLhN|J֟5qKg!i0A/H|Ih֊Vx0x47#v6u;B'c?(F I$H,KI¤OP4%H _jd!$+%hyeyqVYJ!xh@= 'TbkHAD)FZhMni[M k=AZg}Zkz̈>!'hv`^mf bIŲ" tnϖIc -ԎΙ,+zm2㢨f@/Fvf[i-nonA*L/ÀpRѢ@gcMX`G|\@:"+ WZ2%(o2jrQ"$äa7.Z)r+{u À J;Y5_dE,8+9x7c޹+>Cz z_q@A@q[UO8buʣjj_ί%}O3/!riNE1FSVҷa S-P?n;qv'-v|{ "(+GM0o9@BM ⭃y wp^Nޭ>bz(z~@\3(RHJ|Q#l8Ro(;tô/Xsp g4l8qtE4C'r%(B%q5*tD'r"XR}a]A?B'V+g5K#)|Eul+_ XrsLm:G."3r!$L(Tأ6DЦEt#Jb`crP΢xe.l̀vi^Lj1;Z> P_4 p=|3$x/gP=s4_;>sRtɪNHGtP碪?YR(IѴi]DFFH'uCsLmS UB.u)2EpKCUKƼ)rDʹ*,Q=Lb2z0 SW8soA}/9ȍQ-a* &G|Z(` 5:Kw *4 Eh=6 CyO ֘VB$tw0L8iN` dUGv̚Zqms ]Z$ыfNavLk:[-:u  ӥ)4SwRaT+g> `qA/ {Q> x$.qoqpeX x4ox< yD.$+yLn (KyT,ky\ 0ydnroL`PVWiu3K 3g>B)3OD9䥵 #a&/<:4}hF+ Χ m$z֋v%d Q dc(Ai: Y֭\vrlb:(vmjh; 5fk_{_8=[{6mj:b,m;ַoAg`c`8,fߓa8 o߱xMZ|@Ҁ!8q0:1f 0 Qێ󭃛|aeaB,\Ld︎oBU5V =nI΅S_3T׹}r踘;1=UBD'D:<>!$Ik| )WBs#W$: %C fXLk>(zI׼uOϏIl[L6G@KVxU,RZ8_D#%k7hӞ~dտ}އG._~UT׀%hfGTw.8RaU!'`?sD5 gcXdP d(p}E1D#1DT9[S C RC^up5MY%M\IBIb)~riuGA\gh VWnA!wɔՂf)9w z_]ɓ2旹7?)~BlfBB!,*@G[zt 4v7)Vi]b8y"ߣ^YY5=t"0gDIvɔ)~P $ sY84;@ӆ)OGI>=.hU)) Q%O4#㡑S:Q)IbZ"ȡE0&-}Up=LaJuGq8yUÂL,J'L }O z˦1F#< ES"nLdKI`UW=)`h٤=S䔦gX`>jq;C[,ڒMg6~sfwکqZIDd*K:?upZT]z_ꚶ!G#Cj lzXDaKɠ:i؊KCƟMLzXCZҪm%jjxȺSԭm *a7J/JYh{.a I,s)2:* J9M;UUD򖬹yO1Z"v:`KuGVeb*1G >-ҟ#j}.D>ڋUE^M{_QYP$)H+EHnTOS`C3Gm>dG MK 3:()gkDFИBQ|WJp^TX[DkaD9h0JSgtQ5 2͚ڦ[ʥ) %CqF}VK{UGѻu$2^{[4M٨ C˲B[Zd{K[<˹cv)o( 65Q[T uE /;&y7k#Eâ+s1q 5,èjWg%@q+Q%EKTP!* \T񀕧‡XM R++Jq>Ag#[p<gNO,fuPS eũO%g\59+mQ|:AR3Gn_m5Ƀ0%z](+ʗL~ +Ҟʽ L})ho;z{Tnly -Uȁ7El:;H[~' p: YSs)ͥP㧕^5͝;@ϹlW1ӪuEZʷX := ́{g[}pQUEs]ִ@qa4\g[Ƽ#^M^_?Օ 7v@q =S^W_K<}p7f؄-߅ӕ 4"Z^uF7K۱%ɂ kFn`1aBύѭd-m`حbݷa@MЅbF?d -Mm .Nn .Nn!.#N%n')+-/1.3N5n79;=?A.CNEnGIKMOQ.SNUnWY[]_a.cNengikmoq.sNunwy{}.N|r'(NjP~o*6^G-m҆) hy ygbPqֺ. n6kTNGVת LQe^gmw_Yi0SǨ&[PU m)\N_n %.*]n n ΘnOF.*ѶE O^O,` ېS`cp -ZO%2`H>34?O谞 \G?KIOWVN 2o >k`OM0aN^~Ql`4_YOVnK c_,r&;hcO^TyQ! pm_?bEv?M@IP4jO{l~fwopko?;oG>ڏ섟bOpku阾@T*P*.)EQ(qX<<*tJTPKDleĄ\UVi@\Y/G5hCTmjIM"*b <L Aϱ8Q@\ c# ;Rd  CcFu^D@It2TMh JkjKoB~ )K>٪L Пw>+ >hܓ>JN1A:Qr!k BpRPʸRYFNDRҭ"%h[2DpQSclf0PC>f$ 5tj2ˌ":P۔Ҡ#"ݕlD?XM?͔Jf2^z:.o1J ]>6 Tҽmٍ5Ü%Og^^w++AA2ʌe=r('E}^-lYL~=nR u/TQ}!'koHo{e-|%znCl,THXBR^Kge@v*͐B΂M4<8)fXO*3-9*dYCE)nZ<߭`vE΀y"X>a#zY* Sli171&*j$ "$~_=S F2@b$L S)OJW)|&6jdiδ!uy5a.q|6!}H  IA+f@5$-`<,xf-5a{1NmYckғ$2Nt} LO=f1'IN yh Q:!/ipڎyq} rȓ'#iGaC%1sH5la{jl$lCckLsV:Pq9г)z9W, 9f)sIHQOzIp*)ЁUajCVEZX^痊Ǝ3b>[ȓͰW>~0>@BF//.K]I:ҢXdjTZNA;ԶU\,XOJ3B}D`fqG.D-r+]$R%:q‡țEǔXr(qaW,a߈@|y8 )<9 F݊mVxB`Mh#r8(lD|(]:*(> OIo"tbw>ƷX 6OF Κ l=ѵA˰u\DlZ)dв(F^@98XIѬLE?_S:|Ze|uڝ, Ӻ4R/':kOj8 v0>Dg~XBlYAJG !<>܁vPF;=8No&l2j]Oj/;%o{F)8D'qO 0ېK{| 'Nggs¸}(I[&d|S>$+ 2=+@- #3>>;ós?*m3*@- 4=+P1gwS @1 *4 ?, !;i:Gs;28u7m9T,*t5T#/3KSJ'JJSKK4LCtHLaLwSIKN32MOŒ4esOO)O2FTKuJ;KPTKH QSRQRGQ-OA4<7saJ TSHU QQ&g5UK5hu F/`B/ReR4'3ʁ1*@+GY@ E4D[S2sS;J3uD7U>OE^(M] U6U*PMO I96QTa5a1/c/63cQ1;6cd16tdOMNF?VeSVeKVedOeOf[bfiteyVgse4df bfGvgGiAiAfj{vhE[Q2Rt<={ n׵lU[l!m "ɒk\)Ya\\Wn5֙vUѲV6@VWW(`pWFGYjk6s;6j;vj=wiqg;c?7c9 tOig6hKi[Wj_WsettCvw1u3vuwVwOh3S3Prv%^p?{\XuT71nR/l]XoWi"wU]T{ Wk[4q{#T 27y ؀X=?sz|"\`bry!Lcupӗ}Q}3[,Ml@]Di~Uv+U bwX!`w8灉pX8V3@&X؊8x׸،؍؈Xx Lx.s}W4i gay_o|~F;gT׃9͵V/ T5,#`l ՐYugrr1ɖYEI1q՘99 `X8XYُ99yYٸ`bbGsub9u2`:va >Y%qugx{uWKق39Mz 4* tո[9s}gZ ӖG9E6ڡ/Nک'b%u ڪ%#63ڟɚ#!լ v'u5uÚ:׺Z:^{/yVר Ւ+G3[RTJUs|gW}uY3YxYחia\QY\ Lp_گ;񺸹Ӛt}۸ۮ^7@8i[m ,ۻ{Kռ]e?;廻電˻_%{ \ mtH 0byM۱ɧ5}ջxC]2'o¿ՇׄoZiC/E{Z_{ZW3{qgCU闤Ͽ!\ɓȗɣ\ |[<[˱ʩ|̽U)3=EQ$[uaBҋ=; =T$r#@ּն=Qs}_\qz]w4|q< EC,t@sK{K=o׷PŽV6+Y5[vro7=ƕѕ?=r#A@ 3sՃ`1ݙ(c=z- H*'16ڧG%ՠM/WW4Q)+uY9}w!۵ڨy|ƽ&]G>5y[ۘu a[S[>!I軐[= =,c韾)q)귞^Ǟ^מ^^]i _#_+/3__?C_g`KdS_W[?[ic_gOo!\_w{;_ib?<yY@9@_8` Aɡ!7KfПt 9Py #2\+ 3$PV)6r/?3C^7<./V=Y  [aҌ"lj̢̣$e%fFhEDQF*BXF,b/an((B*T0t԰DBuu6v8Ch85rk8mm<}V:WH aqAA $#C}Bã1bp#KjPDTf$XnL{ rRpnFr ob@^=\&QeW8D;O-}g$lmp,lȆ!Cf\|4 $Eĉ!bA 2֬ʋÄ张WOk*,izTj=8 pg$sl^ 7D|gQ Ac8uW/rdI PHyr'Zϥ(rxlQfqM2Yj{'!"w AF 6`%f]ݍ肄"IgqE\D.N\[\ ܑ(镑H*$/ZL0ZK_ZARr/.1^K ߒ qǥYZifORF9AQv L2ڧ[,?-Y),ZhX桠rHV3Y9FFj%D6jD`AR!hG(\!JďK|ɪT k^@FZ~FP.^+*Icna`A! c8|a{@.L P0B wyQ䠋1ZFp"5p3Ϗ< E}$Bܳ ȌKS~RpX@YD6@C˄XjP D ڡLJ Bڞ)Sڵ}Y-8&V+[ PN7I/׷^%de~B\^nr\ZX4⭒3ʤfJ|z־rz|I!c0gۥȾSͱ+g<ct0 + 0+v]cؠ~A(~K 8MgSә$&GDM04EH0`1.MH9a`0*o^K]ֺoI DŽ&Xj`¨ Fe¤(b4VB bd8"V&(Ea Si1b񴠋EFÞ&#X,D2V=̢x%)R9%>>DN98]HYY#,҈R%f;L@A L4&9+%DCPq;$ k/g|I%,ezwGAk).dZCUz?倀,GyLR?`08-c 14l>`rb"B}ch ϙ{  9}jC$9jBp!g\I @BmȨFCډ_THBtԵ%!+{-7I(nTKx5, jr#"njOѴEcdޝC!B]%O5TV`yKrUqM.W(yNr5d@*P! l&SLxmMs"7P&;R>S,yŪqX*ֲlwXjel%̜  2!b3l`} w X>aps?\QU zE)i,zSۈ!a@i5h#;nP+%eKR6.Uh'8'Fg%WYz.ƭ`hHT0D5WM+L ÆM:stz] dj+@Q\SŁQuVT7\CUqeHr׻Sp/Caȅbl 3G#Ոe 0!# ڙjY=b;4Z}ğ|8p@v`t|pxҕEӬ FoqOe4ěiw<!?5hm5꤁Ȉ$h-%N(TсYg[8qvdrzǃGmi Z7(ЬF?5<"ph$a+uXVj.ה u{$Q U'9V ^6B?vV]pHڅG@1GZݭ7NeM3Eai.ِc|_!X]`멑"@Yf X qN 2lSiAqb"6"x Z)Z'%bs,/"+7",~m-F]G@6) R`Y ԍr4&:fAa!95Ff59>(-<8J`emҮ_hU#r\<~Qd#\yc }E>n\ja9 ʝ ,=΂9Kc!d4! _# ")stq$x$aZB3I- J%/ RWH"\c4j[ia5Y j6r`ldqV}ݘ+}EXc7cz& F=,zIcL!e D![6Ea*1i]DX&3n E$A$MR$gȥ%qNNP *2AeyifE)S"I5SFJeFgN4iΙI1Ԝ YߔG,=ށqXU9 !U(V%a~fW&YYϭŹB6ba%kZ^Z(~Q~ڰEEhi£eF ǃiΔkza<'R$hh i.[d`{m/V㍩3c+WȉQ@ ǣvgDRy$$i9XYA@2A͍\4m:^*-/A!] ֘բd-%J,봡hp`9h*ʧ AYdnl*)R˦ N.@^4unD@<%/(@!Wk(Z&P.Gª2CUuB7yt[fJ+h:(*+e+cfôʫ)䫎 +z@o~@?;aO!Ⅳœ?l= m ).DѾ"L&> Ͷ0T*%FFS @ ]F@ adfΎjASqS@ADlE)Z-2@]TSB~ug>P Ho{ee&9"&sE'sUlycr㠧r4(*2+Y){2U貪jrRj82C+s_S0m?<4Gd0-5T"c.`:S.:-Y/rn<` >@4A!>'/>7?>GO>W@ s x ~4h~} @XÐqP{uZ> <GA ~~G~{ 48)>3Y?c?i>A h??4$ 4@uiQG$ROh4`V(4VS%gtZfox\>w|^51AD7(K̡MKM0&G*U/[\]^_`abT1@Hd#h[O)vw`x_|bv*E5H'C&\QW[%#]oP$-"sYV<]R6t5&y 9Z\B%AkH Yb8] {֘]3e[mdpMa|K[^0wysݕ'pI3mu[#O7ʡZ{GpԋZz_"`C4OOH&숽7j Ux j3߬v r}~Cx6^=CD ZSDD`6Ⅳ/H@c4Py$YZ cd È~v03ihzF",1_ ]8?< wp]9x"P>axC!:BD<4*R\bh.RZb H0beNP[D)@{x=-h@Q\*A@~.Fk^!H P! B?uG> TTc$>ы, CULV5iҕ #0wi\猸.gEcIR-gEѢfyge7fWMkz3KIFPJRd^%Ox"rgzKkfRL Y>KE*=%< %}n2qB7eR-K1J1\gndZSj:ikȹ6-)OiԓI)ɭ"+t阔Li(w kPF}D*!g !#y &iQ0^ j%e=BE`ybѺ3{2LrJ*:[t&ղjV7KF t)Vmmikŭ_z%q[\ m"*%t[Y(J%( @{pJ5 @)%/i}a 5F>t{dyDPs>RJמfغ׽p=] 8K+.BXQHy>ʦ)Ex5 [ JOHAy!dZ: J́CAz擄-ٯ-ɲh2 y&e 1֬ 'q }hD'ZWs56u&I50,S2|`DOucQա^CI(h _dXkέy Z-O/Z&v}FaKKu7i̞u8+ @me(P.[^Am yYd"(Ț3y I!|i'x ~xq (\\VWI:|Rwsc<_n0k+gy]? a~s\;y3q_C'zэ~t [2/tG]Sznsg][z׽u]c'{~v]kg{v]s{~w]{{w^'| x'^g|tR|]n^BpӋȀPB`} Xc> "'}P$?X@{! \Vīo 'v\?I#</>'h??}K, =@= L@8ʳ"@I@0 3A#@S/<X, ;=Ph,A+@ L=T `=c; C Q z/B5۾19C74 k2C6/4X$H6 :4 Bs5X C 83LCX?0C4dDL@XPDERGV9 CQ|EE̛.܌VTCRCCAĞJ5DxD@d,IEO| BD?EbF3EQ\Cޣ-tF<ڃ @kG00BGy@MA#Gw$G$G5Aw +$BTܙL=xHwtGB!BT(H[,9%t_N23I(EmKR7t H IFDS4 ݳ@B+NF܆ ,N2 ZJjIEt/нKJ;λ< `NΦN>D, 8|NHʨ<K95k>lO,4Κ< 䄀D6EdD]N#K4G|t|OP2P p F(۔F0IILTOLN;50ȅKд\KPBST>KPKT3SIӣܙ4 @^PO=?=QN@ XJEU,$UBJE*-UEAKCG#?7 <-l IUTma]?EUEVUV4 R)2ES\K9=#G'%3`W, =Rd}y,uSsEr-U AEUh SLZJdI+÷U%cOOO$h@ ZԘ}YeETZTXXNM͸pYXا?ՑTXAk;y;G 8%M8XE(~"]S\S30ӓMԻSh̽ T[\y|̴M'S [$--ўScAVuVU ݓW_ZU˨Խ ]TYB]TeٕݲZFU=ZUũY?݅}\K]$׭ZۅNm^EސUWeUN4ޫ]]MN+]\Lk[t͵-X~Ay+uR=2hM5_,}HULN)H \^Z#Q ?cGhM Lv<X\;6;Nm?c>^/vV'5 fgU`PTNeT>#])pNIɝ^(8 H^e^ 8K=2U>fe=dFfb".@^J$S DԦ5 .Q[ffb(>Q-؆]PbVT^>㽓jAf`RF.WG_V=7wL\c}hNhhL4Z̀> &e,6 Rk%a]}؛Ub(bda1ZhڅheI=e\KY*Fe~^_ag+@ BW{cF.xj)tHSN`7e&X0k5jN^N].hՌpW>amʝUU]eXOk=~xրdvƫ.v]Ҧ^U5Qm]\֕ΖDLiD~\; ҃$g)=X RwL lE.LS.Q mC9XoIVm VqD}j&g5Sm?n]1oX9B_ĉlEGUsl]rKEG/$Ct>sm,ƞ~^=W!v>Mk(ELI$KYl^t>/ qO@@z-`?;Mۄ{kd'MhHDhgW\|DL>Ɍ>soٗ$鐶ٓ46eozWaLIUE/w=2^w\#6ჯގD_x l5΅7I~x1B?xSp#A ڳ`p48WPx t^؅$#Qb(!7, @pH,Ȥrl:PkJZجvzxL.Xzn|N~Lhbmlow`\Eݎ˗uꃭ4-f6/`/>xF_+LUyQσx#JHb(3jTaOjhh`>,4԰H%wO4匾PZfLB9e0F'~^;^F >裐FQAI7*iUgKJW}k)}z!NyYU&jDG=&#jn*F )YJ},dٲ"Մqf"j$rZ+'R *Zn|wa"h$RnN&let0$8eBASxVEu oy9k-א"r\ƺR&&:pd%{[lgscat4@;^U+ۗubbM KReX!"JGtm7DBeI-r6IH"ҥ1!uNEldַrMy2_&bj/]!ew([B%{jٕ>zzs&_<ٍj33h6wov\]&TY^<ߥJ!IԿs $WLtÝtu 샕.]BZKHHpY`EcqezSI&8Zj+&iM"ᴠ .prORf@Pkz"B8aGoBwF#XVS5bH>N®eNx#cU*2%qH&* L#4eEfg+FN W #"7h2F:E4*"%ub+qΊ|$d1ȸ5 DgAģ}Znzs6i'1naAÕ1gT7Iz%̧>)<@JЈ 熲|,D'Ji$F.5y͢y HsђdB9@U0!NJӚB/C]*ӞGPJxHMR@Ԧ:;RJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr\&)%Et0$T7ץFvz xKMz|K_ܞ (/p/4FX8A*d !A0#R@FLc@ qxa $ 0q Pq)*1u3, (a;C6Q#A(oY`|dN|8YP|@Hu T@31LhНp #F4, ?uPtLju'_" ( Pg"8 DN3S^~.JP5 ܄Evu__z yж@2`bA#wtljW{Gh}A8"@PѾ}o"$nE]MMP8-wp,?@ 7$Nj[\5ҜkD)&C(=OI$0i#-$v i%uw>!5@e# Qû] ˗&4}ghءAcCXmlqGD{%rEfsfձv {IN` of;W ydA#Eu"F2s0!N. rַ܇`C9T\BX졝c3z P@0Bă<#e}vP~cGVx5fH0HB@tJ@s hva@'m&zGxHk5k<DhFut6f{_ 0b+x7|&r48~ E }0|iLp5h$]*7HwGeUWx6}Db$?g{pB }x^ah ؀0t@LpfGB 4At{~tV/n`RWGPeV(PfuҗvIKhuH|Yvq_{]8FHxkXt(_x9gy@׆(&EB@zj!x'%(~CE@`tP|Ԉjb ]"gӧHb'҇{H uZF ׈{x2hȊ8wjȍgXhsDAf-wq`KJz(~z`twb\g?Hb fz7}vwGJFG ?}y<@pǃ^ yx$j y]QylًNG'PLPt&iD FlpNDe7tQb~%}d؄\ȓn @qG9YxɔwO^HVx'pI Fnjhjf9=a-8'e}涔ov8fɓ e8W(FYK0yP ֑ Q aAG tj؀ 舎}&H)||UXEe6u5؎M Xx*xosI4us'vljj^8]r Rٕx]h\ H!rfeu)O'Oe9x]ᖛOH9y7F#ecBɘE))wʠ[%fjc^Ǥ饳G^VʫX*ɬإZbAͺ^ʋa,G(]']-guFV1*z-ǖ-;B@6 zr}tY|8]ƙY*hH  j2ٮ;_tZ\ oYֲ٨p o`1 h9f9趡ЩP pYQжL6f*w  ɷ[XJ%yј+XsPy0 ǹ{ۺ;[{ۻK$;}bzkK̋C H׮[O@۽Yz{%wpoq0zknZvq&rJpԆpwP6y8b{|pqJ{o+,n:mupw .v~{ @k$g`6Cؾ{2I)꘴%ƂeFט:q xwqJlricf؜VLqL\bG̴(r\XHy Zܯ> )E7 |tqH| |_~yywv}&oʳWKjI` p}R>klm\ZmE {n [OũiLlj[׵iǤIV Hj h8|җFUqK<й3^)]P]n-l =S5K U4<{݄[&c-KRn|O k?^ⴭB5 N.KC}/~蓽莾]6Nh>g/b*VNhtv$ީnh뷎nN^žʞ꺞칎̞޷N_B.`ʛi;u6b~w@{}w.No.N%O1oO @FIN.=8?qȹ ɲRiE7vr?_>]̬.8/J Kҽk_me r \ooXmTmK;/|}rZuYn]anzYnk-z~?>>_ FwƖ /i`:/ 7ie}_vv qZjk8:ŧͷeE @$ai TJ BKǵH$02l>Pl& !#%')+-/13579;=?ACEG1"NҔ0bLc1|.l XjOUm-$eOTyĉ(c'f eI8`A&TaBbA$ Z(5M3d΄@K1Py!n6jWP@Gϰ<'SٓBb6p&̑R'UћHƒS`V\gѦUm[oƕʔI6 A (ºD#arj$YbfּsgϟA-іƞ֬*jׯaǖ=vڥm/ >W>xqǑj:yBzuױgמhCMe|yDvǗ?~}׿K P ,LPl!P ) 1P 9A QI,QLQ)L@E ށ*iBx1J(xѿ^d? 4`?"5о aQJBNPl 2q ZL|>Y5MJ8s>,$МO&RRP,o:)k 0pHݤ59mhNQ1 TP3I%.?D; W#j/(dUVdSNt 3%8e-uTg5VcMTheSj io V5KZ-Op'qm?mkZ)S Nny~l` X3fEͬctG70%?q8Mq'xXC` % f`_ ci6p]WDO*iK^N 4[y# H0cn~k0g`Π"᷈*}8Fn YPz$E=8ƏQN4^r@q,.^A0Je[z1<@؋%׈<1 uUIяWcTBDB 2!CFqU |d C81l2Hս6o4\ W&,flBp8&ҍy M%|@le]HgL.Hl|(H2Bjnyc_tH 3r1=SN:4ʤ[V16긍 (hVJPlJ1N%(*pDl\t(<%O'!Eݩ[~b`yZJQ+ijk28LQ'P(KV+Kj4EpF_aq^%+hX7G@M`qL>O!K5KIHIJ1l`bă̈́MOgV3$}*- *[wuUiW ( mb~1&B4jON 8fc"3j%2A]=+Kֳbt؎[:V.}oQ%õP#;FW ~oɒLҫIK7W5 Qr!><"klݠ^)Qnp<)Qh`.XB#bap`LUl5\Ԙt*R!ΉɭJ:;! \}D>_y|]+SVҷ <:fN\V%\~_v/SP36Bƀ4h/2|W29oɶ DA2qg44S"^eX^,ddH4v 又h:(\}y՝d0%A:;ۭg$dzٿ`w,mRnT}GPRA-nrfӚuc]h{'MfG|֢Fsjtfl 5=^o5!冇^e%.ZoKw &$L.aXj۩@ts ui@nH( 8f{]ljRejvqxTH#~D́]waO;i}=瞰̝0^еxq2vTwܤ>>.>ok~ LNzblی% svA(%^?x~C YG-*t7ưG`A}~`mþ~,|WWʯ}&pCjAJO,P \(-vV h)d^RYP@[@ y A'1 1P `5vc$g|L_iEK 0q)q8o.gbHQ@1(GFQd QEUw؆a$9},qp$QK-O imL"QAB0CfeVЎ ψ(vE [$nO(@" 'Z<2(M HL2w"J(\r)d2hR u(r2q*y$a(BTF2%+.#)wQ*2R rϧ%?CRP$ГXk#afkxR0Ǝ'CQ|Gs@NclQ X2#o:0&~*3+2930}%a)ȎbI8R af\b/!16U$w2sok0v7jFs{s $Q^sXw.'M;ZRRp ڒX200SR1! #!?oA"2ҍ@.#B-tABI@GDbC%CA9֢CCg/PgTCET@!GkCSFsH=a9t.m4pEHTI"JAcIUJ4KK!34EKJmL\t/LMC$N`NN4OtOO4PuP P P5QuQQQ!5R%uR)R-R15S5uS9S=SA5TEuTITMTQ5UUuUYU]Ua5VeuViVmVq5WuuWyW}W5XuXXX5YuYYY5ZuZZZ5[u[[[5\u\ɵ\\5]u]ٵ]]5^u^^^U;T /_ v_ ? `+a`aaGAG9b%#ab16c5V5(1vcbAvdIdMdQ6eUveYe]ea6fe:$LOPp6g 5g#s6fghifVYMTcNg9jkV` kJ>TV=AVhOi%amˣmeNVT6$v;>wa lQ`q;wtnNrq]n/sKTe^2>@74GV J0w>7QRw "qtqtv7wuBwwCsrUTfPLxv uU la7zxz@xyA{ !v{{=x+|;yr.EAo}wJ['}k 7zEYi~W qE'fu1 aSex}1x'vu"'jCMwjoQ[JT QPFP~1Q7@Y؈Ex}~!]7ףs8^8ɋx ȸ0XB郕@ox ~#X *8!ؐ߱X 췉Rn_=^xY؍e1U}1vV3z#pL3 ;S剩 vu$$wvlx9$ɗŌӕGx}({G'19x-67)Y1S%c;Yw @y y9y9|KPZZY1!Z s-: SŖ:{RAyi{8jU8k@ә} jwI:j~:yzd]1}:jjeEVE_:YڬWثvW8wvPڤ]7U~8IQx_x{ZZZ:٬1S:Z![O8KCY(z~[ٸ+$෷:SK/dyT"_`ZMU隻mYLtEwWә vvE  ϛvۖoD۬x#yO@r; wjA^0xyx"DgN|G| y Jx[m|M?[x[Z <}|Qt/vPP"Ky ;e|i|;9=_lac^tݼ5O=}U]p6䩝{޽ܽOʅ8'UcK0{}ϝ՝i9tygS+=z|ŏ]U ayx}G:n^~>;?vp% ~9|!Ar'e^ӗ})z^o|~ulY ߛCg\0ŞC= ?zIRK:ŧjMמ&eIb&IfJ*N6iU,x=.V*mv>%]!}R":Zb: ^!B=*"b^IK_UIHB󊵻 Y"I*HooȻ-ؚ!Ohc^É0kut[ E̍_B| \ S3 B AS (=K[(Ϻr$ V%R Tyi]5Ӣw\vk7jCۉxܸdK"p89NSoq[8C7v\>Η~/{< 8NYsv {SK跠KD@R"oߙʜlPb dˢ_=i/dG]Mw,۫ҟ睂Hʰ4{)) XFbzD6hO 8q.]h|o +ȕLPAUB@Z@Iv%lC;M4F684p}jj!G$OJ<\p& `Q;[,g31yXظ!@{GE55q>+$*y ș@b!5a563~$BA$&z,24*HRR[dJ;jd,h[2as_Sj fZfGc"3gB3b Ҍ)kqԟ5o@ '9i_2~\gyNw3&)f(A'Ђ"4 ](CЇB4(E+jыb4(G;я4")IKjғ4*])K[җ42)Mkjӛ4:)O{ӟ5B*Qjԣ"5J]*SʡH@tj2+ $(@կ5+@@e HZAֵe%c>&Pֻ2@z+_7JV&ie?.0W 6ea@W@h@_+k.,Nb:mi*P$`]-k[;OulaFu-o{[`Ze@HD.q ـ \Vx@UX.t{uݽnK\ *w=]jcTMVl|W%%y}DYWc l-(1sY fƪ258А5s+CGv%4d#NnhBҕ>41EYӛ.QߵӦFpUj`ЬvEiZSֳ.5mhPӞ>[DsČl p>m' 8ÒmlW%Xvˇ l{,ͭl^VC{l+smq&j =VjI `Вx3 yxBdmz;׬&uʓkI-7-MۼQs|ԲqGGh^5觷::ˇ4y*ؕVN;.uj.sLi{cw{n'=];W.ВW OBB[v '_qxՇ:^n-&lr7|Z]Цt/̶KQPJUVeST%R$V.eTreJzJ2TeSJcY\#a=~lcmb*Vf`ќ+#(%G#]z3"2d4Ju!Y&y G#%#G[i^Hơ=SLn%PMeRJfZfR@YlvjRelVWZemnpdZr%p%oΤs&rpJgrj%t%߆ؕgݥgx{Χ'͵gQR!F^+^.^^g>(<\-->2cYdCa&<"F8$d~?B~'yh({(}'}hg}ݎ~](hi>)ʥ'v](hrތƟ>+VBf9c-dRCQ$@^ aa)dp4ahaVucfjfJD⋢)J)Zi} |>ڔz~*j܅jjnvjJhK*0jk(ɰ+ .+k6Fk>Nk^*Jk*k*nk2k:+"++^2f%#I=?V+8 iHǼZ^lcj*H:J#hfg^$V$ɢ,l+ʲ,vkbڬ֬ll,ВI\Q8+)<-a*6[e@.d՞RmIZXJv%ҚܯU,@>,ꭆ"*Z)mӚa>B!jR\^7#e\bjI\bCQ+.>&DF"f;JúqؤhFA-h.Մr\<9@1i}E/ْMV҃X1XBFfhNErn8[Fnj*킬B1!0Q%nB(0.m 0z(@x p p ǥh p2q q#q+3q;CFSq[cqksq{qOqqqqGq۱qq1 r! q"+rq#;#Cr$1r%[% "k&s${'r(Sq cr)2&sr*e\+,2(,2 X1)1/0"s2's373RG&ٓe,ͯACkpfiH)2ISXsv[ϙ^Gw#fV U]M Nv4t;va[1 rQ4ud[)\L6ĤAZL~Y[eڹ53VCŅ3&\_g]s[68m,}m߁dnh#Lw(u`3w >acb5?u?dsw!4$,!~62k_0{hZSr[nn7{}Krkq ؀t7u+8S[7@?vwwBh&]÷杷]~vUWwm]_XJ{e|჊X]c&[z؋؉x{2xs /tt6xxَ3߆ku&QXn^V,6[qŘ$9t7c8Wc7Gמ{sA/?T,xkWky]׌؊g| <7r 87 |_ |@G+ ;S:z2:; 3bWq38/w7 /sRq p@;;{1 3k(Ygjt~&'ᜇ"9Mfߪ>6Y1_ipG[W^ůÚ:{x݂==@oÚUq̇6CsRħww=Z[PoӺ3>:._7w= ~'ߋ ~,{@#~u/6v7Qd;@@~W3 h 1e &`^qpwCf>p(|ʛUK+oe<%؏y۷]iܼ9[tY ~d]ë!?%۲6TӃe\ţ |W0@@ShY2"zf)BbNKpX1PsCɻhh`C (:P,c@:*K[{+"ȃ2 sZʽ5ht"=K}S -P]:}N$DrGOnf)/wn;Ƶ׏ƺvh|[肞mgaMR%D0hIr̀ bęSN0hL6{fQ'C&Ҡ? %pR,cnȁTd)e,.4b6H/V 7[\0] ]]peWPfe_쵥 aX6Ka5g-[۞v2:oFp- &bE%ꑪ&Y@}-[X/Vl˯ַ-8=Lo̼.;M<*{/* NqQs*P@hlf.r!i#=41 B1~F'FRE$q IRlr&(a)bRJ-cj0 + d= x d+ ٨"-S)3,,>,3Ķ(<^>N GqBP,5Pxo9|tT; 7J{;_2Ujy#S@< _h$QPsV玵UZSr;I[QZ@Å;= U"MkYE1uXr< әDt!GBűaatf#nHa}yb7X!"? IA9DFeo}JrnJ3i"'YJjєK1pioNw].Ȉikkw: &ۺ( i%kTTM {lxs,v",mv GwZR5Q-NHDN^S^okO(x\V#>6vB5u(Z  ٵx9ykة3u% M{kv|g` " WHƆN_=?bGJ.nJ3 Rd Mg3Pzl K1A .kX3 v5CҽԤzt!ȨlT+n!zh0 (采o`^ kMÀcJZ"m K&dxj\T:@uo32΍Nϓ:#舮'u\DXqT5!}|ַ1|K:XbcѱYr~ .CD#MҘ L*  K45g@01Mꄧ;h,:efC rP064^DjB;Q]`X"yE<H0$0"MCRKbv:HDfcv{|3n`]ɽ؉oPZ/aHY'qB0`3[Y+ԏ0P auHU-dԜM@{ɴ̒ [M$x6|-ja4B"" l[p)-体*3V-;n!I4ƥ+4px>[Ȏ?EcU-ܙ ]>O` CNt +p%yƣ"ATHހ^^lqӽQr6_0:ں2Cr|zb;"ć~q@B(\Bx|@Bm?^;  k2Rkʊ]SGDxA|8RL">PSDz1)SޒC3NLEU ;k5A4=h63Ӄk9FK@iQ UQ^9V\ܤ", i`]Ð@%S1y<SJazA6T"ú3\$4T) j2e2(qȟC0PjBDS:DiLD !ڻ.Fz@x `FC XݣWF׸*IO7;3E| D[h*c0B{#_4.e!U[,El-Q,ྪDI| @lI L >ч=?53NCUEeFQ:HHdLNOPQ&R6SFTVUfVvWXYZ[\%^_`a&b6cFdVeffvghijklmnopq&r6sFt@vFD͆h;gP@v>j. S-gt!*h]8TUfz`Vx|V,Fch[0~8E &ig}^|8ihiNvE >&iك蝞60F^Uihvj!Ffh&P>\g^g΅h8~kvNhykȾiU.ll͘kkv־Ҧ~xk!@m+hؖU~vkBv[9y@I6nւh-|"@&knnツ2VoF&nmo'o!vfl6GҾ(hi/ i nc*i2q o~mGHq~wo(jþk֎ppqVm 7r&$h}q&&lx$r)*' gr'r$r,r)/s)?./_s2s Os(s+s%os3&s5!NlBo |9-pG`ljnGVo'nntQq(u+HuVu^p'(kGtqji^tܮq{>.>07kelf/-vgr7isis:vhkpovrssWlnsn_l,_rxvymrw3nnw~w4w}'kuxgsuwxl'A)jVj.u'hmk`wIpւQqPoqqy{u~ նj.ivVh8Ystzox'z9{5zoOv_zGs{'{۾{F{n7Fm||@g'ǿ{?_|||FFotN{|2|ŏ}__OzvxG x+hLyt8~,-y_u~!zupרk=炨o'?vi'?ͯ{ H p**S²xL>hFLgv~\lEH39ܞfŎ(8HXhx)9IYiy)xX鉒bdYJjJ˪2 y0`b0Y20x0\BP}<8lRRZ(kX (M0Ly ~[ϤXr/*n u :|1ĉ+Z1ƍ;nCPE(^C͙|*y$rʦլ縠h "ZB!eD5a\IB"5H>Q3z/Up )(Iۺ} 7\L'ڽ[ ޽ ] loĈ N|dƂ3Vd̎^7͠G nRZiΕMBnmI+.mŦ:9 SJ'Sk okLrё bzM 񼎎XӖwPG2R[&/J _ͫiZ7`~o1~^XځL)8KL< !p"#K%*v"_S0҈.KB(c@xDdKXیO8zTXU+p%hU[ '6\OtѶqG͙w?M%IU]'|Bx$Gr7RR6%hz!~nm{{d {<`|}OO%vقasUGĨ4ڨâRѼ: $ 7W\8@#v(l;R2:I!n8M{ѿ5j,䣎/r1.+DX2’CPul>[pz4 opMTfX$M%E;T5c"B,9ωts =|s܈)O=s-AЄ*4 x2υJtE/ьRG? Ґt$-IOҔt,mK_ Әt4MoӜt&@_٪>@aR@_fm[U#a2PBT_F-pW5k_7L` B+P8°~(V`l ʼnVmm[,{@@:{Ϟ6mKZvk\ֆť^QV=&+=ָ%`$@^E^aһ|a2 +}^ƾ/]{[J+ \^8@ri#^B]uˀ$J̋ X{@Y,$'@Y^[4+_$/?>8LSw pDml?Z|YB|% 0xgOɿ3 =3"^<Fq< 1޺9^xSK^/8shߴoEp(>q}W6xH'YivKAXmg)&v uRlwa}4m~GsH@lP1W`Yqul_w0w_Tg`#) PZ}51.yqLe[pݠ aXdZV\z?xÁFڵ(Mi5&@hxrnSD~^FsXoɤrj}`jPyus @(FpD[tfrpsAUVP k kjm+xePm&WJv|v_&pX77K}Ԉn{nkx wWy؍#6cG~{\Go7qDYpFf@]8 i&f?ؚ#iʉƚ\S `Ӌ09#8vN9ʃ9˝f`mv檌INAW>]"ɞwW'˰ȩڟ jk˗{ :x|Xmz_ =z۩1. |ܧ{ر8q8iqa[i)Ǖ>DL:uG5سGj=?"غƓEa-8Jle%P^'OVvP9~-1:J/Ghկg j^5A[/i{Im蹹K\i9pHqطu{~DMo1^"fwwkUF ^軾m\lOZ_MϪN)ZǮg( `9j rjtu٨: x̴z)^LjW,'DbLpFqK~7W ^seXif PH Ő%Ȗ9pxB~ V ;"[_f Lʈ g[۔ƺFFL? wn;PIImd̄ s~\nͻ rmY[lc*pa̡۬o* ١)Gb ͕ͩ$ l)oZL#$=軗xvQYUfSN03N5n79;=?A.CNEnGIKMOQ.SNUnWY.bZ_\EbK4DX`mG p =ryE`]-x燎爵+E a.铎/h6vc4zvGXIc3vg>&is@fwƕQWFBy&{hgkcv~V&~O7f|NN픀9ͫ>Ɖ{/jEWcV:Mh>}ݽxISD>#T@ɾ*,UD@G ܈o#0Ί=~'C'k™.榙^֓fX@M 4.(3vr)iџ8#tiMOuFZWKcɖ5{mZkٶun\!Ardo^D8t؀$f)0apݼxR4 _ cdK0W'qw)#78]z#iϵ}wnݻyxpÉ7~ynD,yPd-m@:u_Dv#8<ٮwx^:Xko|NCD. <A3`,d= &pA0 'B0A,4QD@O,C3x1eQF9EFWE!]$FZ dr 0!o|,,.L"r 19˅t"t̆ct ʲ<;2@]?LqJ71GKtOEqU8Ie2MuU cuR#]g5yVY rXL}4XOG$F("vm%['΀5x"]H =JwW_7\r=-kKhҖNQHMCh̄@a挏.67={A6I r8HW`>qYy ZhBFNZڟ) 觳ikl5j.{fzm;mx,ล>KOc4,4y&re /*"a<\%%ƺmCw'x?_^}wo*?Q ^DSb_1p; \طTqKX 1 s^9a)t`9yci6+"pR;r~!HIZR2 ź=b:Z\BdjA,BmP3A7)IZTIURT>QTZU^YVU~aXZViUZVq\ZWy^W` [XUbX>d)[Y^f9Y~hI[<mgn0q UD}i%[? OgVtibKj$,&.px:ō p}@,-RC@缭&?W\֌8X΢deYcR8s4gSf'[Z k6R.FY D|]u}okFQ(c &NA -xtWHgYB*8.->(Ȯb) :a%Fª֎ǒa(v f&? es$ TwV8a@hO6|(JpY2z,3@'y[rY(MYҘ@3rp# n>$].3ޘLb)F {0A~2-/V0d_qKYH)1spp]Jo_T!yٸ7`{6v.j0YoQp+jz.|i_}zj}ݙ?ǝSpP2x'КOD(o| M>ywu x|!6Z ^ \Bm8F(٣&R~ :{סYZ_Zz[#W}/B^%"D;rgo%KZzO fm,-vMZMٖm,$0."x4(>ɮO$(6OɢlȂ <ҮJ(O.@\H3.!ȒT01(%d#>C1Xo .@cQ&",@IP|4#aj v,B5!TcЌ)MʨK.v0QP(#b+l &17ҴB 'Qƌ20)F0 ?˂+e0noK2f%/s|vПh3-T&*5\3-ϐ>$&rIQ#wm(*qQ$Tf/Or77[3 QB32m86,5lS, F.ɬ3883+?aP+3rg8*7m; 2R&%j#)@ %NNŊl3ҁn3.s@;op;1Z163/ 9-3?Pɴ򚐓0m ,i@O%G7(NӓNE" **1p< r #bMIT! s%جQcAOlNs@s&Q,o%D >WhQ3 2q&OVKo^qXg$MS#H -"S70B R#شN|OBZm$J,56 5MoOTBA b'@ktS^9ΨUL).dD5d c;M:]lb!VeOPGgd_1'2QrVB4-0qt0?gY2dWS]_;LUhUi#e΀38O݂VdwUf]ue:mWQYYUs4_Cbz6Ko6`nom!65^e6p76d"1]B s=[M6QB&niJb`*q+vp9ק JBw֬nY[)Kn׏:IsԤj%WwcZ]ct( &Qrx(xCbsvͰqVsZU/y4|?voӒ~ccpm3@#aG N2AtJsՂ!f: УH,{m)lm'Li Gc ]-mkU2ԟfsO,M-R8b8!CҔ^ frg1X3pl\7Ӷϊ ʸ(p? W_ӷaMR<7К620a8y-:z@xX'!w(qk,T q,' `Fq{q)b^5HDVԋA<29$rK_ǵ*} 1{ ؾh 9DŽi-8:߱O6- szXi D3plM<iL> 3@/KPGvrfx֗#YRZ缬HwsryDpt1YqEO"wKމ%\KPT,2-֐&r׷$)ȋ@IՌ7Iwkã ' &r(@B.da݈bo*pVix< @2 %CNz qΥ+H)Fel=Px,JzHS S;KiTQ/@GAv~y,$S}k6c"waA 8x+sb qlԘNQ4V/!Ozg,dзz >l./N![Fڬ;!YLଵKzdY ۬Abx=f}P堏5|[IiI{y=(98i6,L>T0AT螰 |r!8{I5^k"?/ 3@C8AW @ ˢ}eJ8J1K@3?@*8)v'[tp6&T6y-_Erdc"`.X| %6,tnSğ\xѿʑ4`  +8Ʌ" h"l\p9FCGFJ 9I8G `QCTVׁECНPB& de ES_U)a!_*3t4u5v6w7x8y:Q*\=. 0 W o_s9XH [n 0 $#'tQ%#&u"@䀲-kLW3ښ(\`1Q F}3JD%i!`/#J1_?Y]Otrҭk.޼z;lEd̀PLP! 1L r-r! :3kaKҤ"OϨ*Nm")/C4ɇ k#Z`#eyoe'1N25 Xf޺ <&Bmq2qz9DŽia$^pхA~i!z!!8"! `xB~ehK#PZ@gbB(6]O:HڃK*7xI5H yF\W(SdԀX#SeSXM-exR@g'^rbTu"X,6TV*ǗaHYEx%**KSbjjfvo̸cB$@dXԑQ>3湚?(-K5DNUS )y-yo*[j ;vN"lvYrFU ˙#qMik.{ Ǻ1{1!C󫔪I.$ձBE&xY0)/,X׀N8M;]Y& 5%fV}=tg8')A=7lh^1p^\Mmd Jf%&F]cAg ߂<9[~9HTX[25D95鵊Z;YAKM{-&%rx TW5ku)e Ukx43Z{N }:5;Y.zqF߷Yf~?bM{sγa+fȫKU|4޵9&] )~A=&ZA5p Vݎ@ؠg|Giz3%7p2̮&g*'h ȿ1f<]ӡLt ޤQ[2$x "ΙfA;RIhmkL3ҭ?j$[xvj<243]WW?R/OD#.s]RkOc?Groݲj,%7t ٶQ߼nJ' lBӄpE-L(^SAP&jֱA.ҝR9-*<{i:a69&,S'Pڏ(F3a~WK$u5M 6 n? 4j%e#!=s;1\wֻ{̚ OOTڒ}QJ`Σ#4I2tw*82O7+^Wd2UX@l4@azptg[X@ckYF[5e,4 * 4n@hJ!m/?p&ZE"a3݌ B% ,r=LmNZ8B`=Hk3+ m1.LƵ@sŠ㚖\ڮ4LZs 8R>YXRݣ}h*e?2z ?Ec͆}*Zz<I%:NoOo1w}v+vyRL Ӫ2X2O"8p@فMu?p ۈD! ads^6p&[s|k2TFX,!L3HzpI>-,ϕTľnXl}׾' 6m<(l O֮Xz!EXh|!liFlmVڥƪSMModB44Rb{71ss;#qjk8#K>9ʅنoCoœ@:ԣ.SV:ֳs^:.f?;Ӯn;.ӽv;~;/ ׸vF&qlސJB2Md9$9V`49ҝ8QE ՠN-eHU^tKKbݢh;$Y$-d79ҡq\p]'HQI!LڃYI`-̴Y>&dUa"eV "\ړ YЀ=9wm$k[.Q TSYt[ &Rl`f@XFoY`V΋8">GeIPպA`M&S‚4$VT\y,Mk"f1Ip'{Q\Bta 1MP$HA)teXvU%v]Vr!|x2B1m悡@ąh朄L)UQ*Ҙp. c !`tkXD%TzaXeߐR\ڇ>pi~!l Fz:xzeN4X9i!Sb)`aŁ``*Y R'6^5<9%hqEߔH!`c^U74ML7l3 7$ݤ;~**8X@1 ڢ*ĉD  Y7j,jժ\"ʅ˜+6 6,ܟZn+v]v+++++ƫ+֫+櫾++ D%!(Zu0H+FHRze}cndUJȎ_Xj-* fƆCJT쐬,^~E*z~c,&\Ac=C*-֎l)\eBrl(],01U_ziF,b~Ad$@AFF# I-).f-g`9&~amy 7dWhuÂqnYK@nnrxRXQ.t0\dkHHuӆfanmI^BFo.({Ca`^py~.WG^$Mә,,nBFYKboeL1xxz44x%40\yvzΩ6RA CU&,3Ѻpِ|"0dΣS^ZȱSa}l,d1x d=dq:I| %\20#B5DE-6w AV6q+;n#IeZ1R QױF[ 6.O(4t}k8_e.MP&i$qZZ.j:;֖rXznĕ YI'H-֞4qbNޞP=J; uNUSt,vÖ.510U`D }’xL g!wnZRK_)vԋ\te3?кXL9[c`zMFeo uf`V_"HBf:K4xI;BbmvªC Xŏ K{g;G{z&lٚFѡj^7g<9x8/@9gƒ WC'#KUJoO"%f5"k!)O@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg<`zP*9@ phF,!D cSB­:z±6^p̦6cȭMH;"HC4] p!n+! [Ŷ@|oji̩\./( &no=|hC, ܁ {ve;te M` a+b2 ~ Jb@(dJi/S@E_А|{_S8+QzTLfBʼa{#tS81fM2:LOJ\a Wn E`>Ep ـ"V {`_tx24 .[bMǾ5$H< -NpanXesc %B.:"]Hx,EP&pS$1Pf!3h8C B#= 0jr^K8a\AJN҂t%2za0p NN!0 Ctg0FChI.q9a`0ATMpS8Y/d'9שw3팧<9{g?O3ŧ=jЃ޳)*rM4SD)oHMf: ؉6@Hen Dd6*Blp|[TCzx\@D;;U adYӣ2 E(AzϦFթ mP?9X*UUJUgXծn)[0ҭjktE*Gw}+W(tk`3X54,; U+a;WVru+ڨ9\$Ԯ/ Z|2G@-4%5< iZ@0ֳ5XLjZA P`}J!aS:0X~$bW*P |^"YRV]ۋw}}ZQJ6 ׀L+a Xpej bw>1b8[@cW>B~]h@,e2}[ E:*ݨA10yn1ٹ-t 5Y @NL\ (cUr1dalSk΢ sKm1#LhB':Ў~fZәJL6iӛ6ʨAMSka!iSծfDjYָ.fZԻNMY;F Z+{bnO֖c}Od6*i:ȥ, WJhgNf㰥T'Bq)hޖ 2d6373 7eF|M%CWmK;6q}e&ENjh7)v˫r5Gcg;0WUmS=NMs(N3zJ3wwP-M\Ef"Ëj$ԩ>mGsGaV!wB]^R Cɏ2 ([)QWT#$9zK2Q 5\0MWD/\7Sȋc0wrINpwXAj 'R4>?]w< \gT{߬0.IiM)Gmʞ?0]~#  8p# $!bJTKZ=@R@  ,֑ 8d;+i-LtӠ <7y(ڭ D@"1 +$KCq-4Sb'˸B#C#*;k7.7 j C-ӱ!Ȟ8CyIXJJ 8@&J@4M;}XPBX%>ȄIL_bJb=4LL84iA!>ʌ᝾H*ZʜI$GxTod:{L۬^DiFXɱ JAM>*깜3 ڼ N?L!͂يaA)( %@1;ULԕ}56z$i򣪫!!r5 9)"@"E ӜB>jҸz%mR@27$%L"*# S # mU8`o(PF #ӛS+.D0M\ۿ|ÜPPT3!V\&xE[(GTUOj@Hzh_DaݦZiHk}$ێ$W nid ȝ@jg Jlh ` @cfY6xA[Ȉrh霆`@>4ܟHSN ?n> Kj~MzbbaO,WF[T~@j :ԣ>p䝅kPhlnPؠY`V雌.P*Uf_@!uN)D\Pvh@Ѓ3L=F_ڽaՖ8Q+bhԮX/ȖVNQQW 3!jU\0bpK`N^/BBN8ň^dEo dEo>o)lcNoId|o@ m`]l_dq3e<\=_\*W% O"rmuL_U)gr)=xr' ϗu6/8_ssLNh:=O?@K8x\8ox8(xV<yσ\c7P :vy uu oxv'GyvoxpXzN 'zG'/GvzzkGg{wS{O{{{x/v/ \wzXxp(Ni]P=@yv;P{#`{/{ه}ۿ}ַ{ww_|wgևz7~~_O7G~} |izLhJ 8D@dRTJiB0& ljP"]».#R(5HDHH 8hȘv((UxyiZXx@zZh8zIh+9 y+9lZPܼ-L}ݬM ^"Mnnm= o~N/n^nj6CH{b:#.46 ( L/z^`ȑ"Cg C=FrR g)Utg51g-Mx%IM]Z~(,JgUnyON Ĺy)ۺ{r\[9Gv5u٭K>:լ[~ ;ٴg+]Tt,Ln?9CDObQOӨTNWTۃBq^;˛?>ۻ?H5G&q!Aav:EGuH_~b"(&(x0(h5 c/c@XGΘK$*d%*iQX%W:%Cac7f9w(@煫2/-Bg~j(]P FfSTV& zqg"y&~9&er)zi) ehRɪz魧jjk8I,VrL+K,.(K"-,K2-1"Tmܚ˛nu58s' J!R ZiZPN&L6Ӷ~,"ŻL-zfd -_kqɻ\"3)2(|.\˲17o.W4L4LU/G/z`GX{MՔTVl7%a`8=.#ۜ|-t߁t%M 3?Nъ ɂ3.3x&yoy:Nz馋~zꪯz뮿{5wj1Tnop-\KpZh#zL--(aP*vIJ_}o}}Nb柏~":i0INW|GdHը6_kƋ`@7yf9СN Wo?a", Mhm%J*Y <,s$A@0p` B1P/\h*qLlb y(JqL`BK !1CPm[!׎QW1("3Zwl8UE}ub\C(ע8`^m;v +4/@[AQ/4OO.(qE=h 瓀pY!H{]T/%;"4y#|:4;"_-jwg=( /|o1\! ,  dh,i+ôҰn1(yRɅZ\.'8JS`N%' )q,\"ohCq"u@{z ' @#tC~<$a)_8s)r.xjnIJdNBF>:H!!,,  di@lllt~r>;߯Ta\$tQ=94SF'JE&g M4UI{0S(Uw* +*{dk= *]|}Ty=+:b{%|z$MB>"  nJB {]ۆa'ʌ8`yu!,; J0FjuG萙 6._I؏c.QMNAU앓n%74.# ! ,J  $h쨾i´Ұ]nQ&Q b<`ޜErzh 6%2V֕"`Lu)0u4AJUz<?~"8#'5. h"/gsx$( t>S>X:c!!,X  dh,h+ðүn1'P$ P.(`x=C-hN09]#)E w@ih{@8U͚kFL!!,g+  diA$+pγx= HVLz2%* 0D(FZVSDZ/b,\ !bva){TP)$g&WrY|]K6_E}* 0S+=+ .'1|*[<&)%$t% cf%)`.杁+'qO  j撥P 6|$!, b d hf;pq<5|=D ţhT23Nc]mL_s}VعEbN<<%}} REn6:G~L!!,+  di@,kl4}r*2%&$Ua\piz.RT*r$L ,APalJ%UT!>\*~sS}tQ)>V#3{r*ab%Y$[w 6 =u#x"1egvf0D/ʋǼɏҴ& xg (QyDz0>' H$! ,  $h쨾i´Ұ]/<@ ƋATb8$A [2MSJŞ8(Z-z̃YfUta$'{d$(Ox%* (:q|r<1:x!!,  dh,h+ðүn1'P$ P.(`x=C-hN09]#)E w@ih{@@̙kFL!!, ` $h쨾h°ү]n1O1 8N2NW_KvE Kc|# F.FuCy}|~6624*!!,  $h쨾i´Ұ]n1Q1,14k 屛TK#wN$$ '|@~p#iLN8+JL!!d, pH$Ȥrl:ШtJZجvzxL.zn|Nú~xxdwEBahZ z oGXEl B`O B H^ȇEg]Y` !p OߗLCɓ(Sn!*`BQEbB@AQTIѣH)dx%_4+H<tK[B44vA@IN{pA xGJWW |5w ۨ<W!|a5@f5jx$bLr^{I0w.].vTh˽Ug'W-PewH"#hLdayG }C_81 R\ ( }¥t !~xhЄ:O9R0؊>SB1UMcEAcL5I8e@!8Ґ5АE9Y'aZ>&fNUNc\}}c PxqSɠCPAH7%my=>9PLv駋pQ!:5m۟بTG8 ]m$H`eX+ R'q D-VklIN1(Hy+N*+oJ'\BexupzĪVuWd{(j>{]"6ND K4T^U_~Ŕ$MX`~l;i(nZք=s?DEi1BPswdkʧq,*1{8AZ6@LXz9D%o'lE`WCK&#eURəZ~E-!^O#jѦ:uX^@3|єRehJ )hV 諤a4Ld/6@Z>I(,I%' :`jL Xޱ07,C)e+F֐gHAΉC\=EfaͭnwW,u n, My:7cm*]9 $ͮvˈJu]w/ٺ̚8puz.L =;'L [ΰ7{ GLHjꀳ 3rbM#`\ 41?EY,n-"ߔH.Z8bV VwU .p 9 F6K8 D&7fX3uu\Bf`ہ0y'Ilœ11,n_חD-mk€R^ ^2= )À:.KMr8'Ab̈́;G6N4 ׀ѳ~T&ϜkB,nb(f 7oyIe2]EϓIDRBr,'#ApWt5ꜷgE)H|SDmkI^1.^?b Z7̉@xP4 ypL3#Nd+ sA2.A y$M{6-W~:bzB/Y%mrUE5-;pj=;?6FBUsHMH_xPZa4*q\gw1vsCUBFy~7*c$ S_S, T,*% +*KCP4^XIҒ{x,Yw<؃0\>?Rxs)[j&',"耖w}EckXmlkSU؄RI5\uD6gc7k22b|~}7']Aj ;2Xu+(|j~S,GFGLU-+y ~SE2ax)HE*h95eq`!=kxsSoE%p0D5+7%XU SkROX>/;iЈ;gTG* 571Ȉ?q&sr3B"ZQ<%,u=M}GU??{J3q\1s'=8oT"E]~E$1G1<+֑:<=*<+0iMЏEGpH'Gb'w:w;ȎDY׸7B Z'T,ppxw47p\pHAoMiGi,-8)EoWW*T3RctB~i3E٘_Zwژ*b@Qpqf0γ.ai1wu/iyFƱ+$6yC2U]yY^S0Pu'DŽN7va!X鑎`ЙHg6VQfPZK]#'SrsIs2I2TyS҆y{,r<cPj t _Hᙋ)2ys%G$HY+J-Q{'YOEN'#ǤUOHOʆf[NrCBd/٣ߗHyK'Ţ9$JiRʱO×2,YZHEZ0t-U p %Vi2iZY(a*K`O Z6L'z)ƨI'9<\ب(q\{!qTS)%K63uYC1Fx$KתwCb*V:VTSM^ǀTtyK~`WlRZ ]0F* ɠ4!XBW݆9 Ӑ!y%H 5l7˪#=J J 햍] :RV j!/ec&/FYe1GJ}LzXfH4M2ڤ헱 y[Ʋб#+ಲY &;> /Bc0,$3eJK~ʩC6Z)#PS[\kQ4K ;9;b]4:Q1mPcZl}KR%F~`b{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾껾۾;[{ۿ<\c\B[lQctg: ˘Tc(dgkp|9 ctxRew~0Yю!p09|7CWXďz;;]j8+QqnKK<| zu߅KTdEؐsh )iT'4iqhnq#1!ǹ?nՆ/ldIny>&hmviX2H<$ bB!Mgܼ('XSГ #Xm" ^swڝ& "i˦Të=iqszC&':"?'ʾ&B+LNwS%5 8\u5t\%D$%,zWp`C!g֕\tCzySv uy͡PjUy>=W]jgt\S|Lλk~~k{HQ\}!ZVWL㡲{N{xIR68~-݄I(vS_E'ҹvS|kdea6[iQGXgMj֯B<Θ|5 h(-1&)@P@\m.d;S4 6e=5u#6P6(q hwmNМ#dF%%(v]舟(dYؽ+RъG'_mz=7[#vǭ]z䪧@9gyY;u,ͼs aubDml ܬB 2 }CwSCGI|ԓ-8W >=ÔX2ݕ)~j[d͔sW;݂4QJyCkf2~If-PJ`ߴXqwN>0IKEoAQbG=>HO~Z^AI(p \'"vz!% JX9&i5BnxmR!^+QaLL:^Mā|tj&~:Գz:vf@8L+$oM+"Lfse+ja1$A%mҖ.)Ql+*qXDͬZy^NP^Ls'L5).Y>y:8:MF#̱U.,ue!LKyŭߏ<{;3;8O\6Y:;T+[`_^c49ObNT? \f늠U^KHb@wPj` UI!r{\~??nb<<.ƏŦ(3cfc"oF—`/ 2]ecɞGa#o`]lsyeZ ge<$Q%f6} #CVAŶPo/lßmFkȉlvt 8I !LQ"|/dE0eX4ʈDxnف;&k .*&52" *" 7#, ˜fikm5"ȲF 0D$v'R4"QyLb\ob7aRXݔD0 6X0փt$F1+z'(#$œ,P"?Hb.D!Ō p_6y L*8s'AH*دH^R ǒ(?HvI2Eoƕ;n]wˎ )[4*M+9X] :bjM-gEJ OY :uR$B'fkK`K\_ }_4sM-t ~ Sbh&oAɅacwHƐϺEx 64!P )»*x&㉳ ςʭnBCQVCdчBHD4r^JﶵG^ 8 #Co:D0 ,MD0E ⮤&r >4l r[9(4hP h3,QfCMTEmt<_ ;ܔG YR4jF4r+MtIz }M9TH8ԪP25%MvPZ$#Asr+ Hjj-)k٢2B-sMWuEw@Ш(ˡH"<, yE-n]q1Qq,tww%EH 0a( mF%!0(+ xe/>tyHP1ToDRVTlt͋4)Q4MZ 0DE{Q )Fz?ؚt1 mV&;0\%22s_ТU YIpSC$91\4ˆaӜ4ӕc;;fUk}K?P*>Y2&^1*c@ΠACi% JZҔ=ԤXLLx, 5v1ԮH)]$gʷ_PA٨*(p&(C+SæjЪA95U"[W£4B ""!P.dn51uqCPBa̸tjB2rٴIJ6XGGbcW esmq["ƪn3ODlgPcHds9H$E9K6 UJ߅^Ed"vsƆ肀orU|*SbSW[ E!&L@G_WBB%0i]a8/|Žl3kaABHlC&%6tgWY̷Lw^77  (B\]P EP Î?8S6.Ph҈ 9#ߠ@pj;,`OD#Y;5;{8#ҭ(FWNJDp66$ 6 `l~!ndzoGD1aHfmj!gF. o#'U h$fO|"&: bx&p4J4+F kmOO06}AR j "kBj`nV+mvƏ09x+9Ȯ"( 3,7!H6(:8D7cR%p 2,P0³fKU|xȯP|8NAŞ)u8 1PV Zh6FNڂ00d,(3 <'7)NP2}Q*DOk° 6F>H.y@8ti,faGlI8eHDI"1 "qbHVH[ZhvI.0I[@nƢpKr,mpPQkcH%R.r4NoD1jq Er`(T!L(px! vi(O,o/%_$'Fdo#j$[q$K/!chjZ FZg_F2&S&{c~R%fd8j('%P&FcU:PH31m-⑬(0&  aJ1^/0Upw6aF7f r:ӉhK۬1#x1R5Be=#{j2r!pND\NfPѲҗ''"*Gb:fE8h2Q3,-BLLJF'N\as:MG֏LϮvn'w"4lijexs1JsjRl Fτ2}}x)ouTG2@G Ts`@oK|/7T)OxAC6TLێ4Nۧ7g?e6JG"IS96w.DOP+T̟RtPH2Gv G8kDO>tEI/Q@4@q5sOASsz|s2YB!g4,RaJ XUdSui,t3<[Rgԓ`W ЭTuC^l-3h{dNttr~GvZc,8C1[)sf ^EVKu2nVĺ$.4%Q!5mS*T5D6P]>^[eVx'22a@Qod S=d]'Lŀ^g*8` 4svj"Ȣ/2Ļ5=^Uzaі&W4CS5avnEprne#u4ð!dR$\Tgq}*^j-oP(J" Mlgg:A4p%N֑! oM3/_Fds;́rgMv@<$;bX2'ak@&Nf-}:NCj G $YD,*A~ddU~W$`>/W}Z#Q5$qM4"?xҴ&T 8T@sD rC\h Ewy=yAl%l7K ab)1CŎ7 ]mjB?qбyurTHn-L+Q"ܲ+`Q L84\Y]x@d 2a+͎oohuK1T "T֑z plU g bAD1;iXFDZN-o+3o쐓1qĔutBށ~ >~!>%~)-1>5~9=A>E{5=E=ۓ]ߛ5==e;sϋ\͗>~ꩾ>~빾>~ɾ>~پ>~>M{\q\_~q^s՜ͱǽ]_ǃ~W}|}`5;ş/_g}_?JO_O}3?y@p '4*R+6r/8,3:^7<.;>cJQϠ!b"c#d$e奣Pf(i)j*k+AT߫-n.o/ppG0r2s3t4u5v6w7x8y9z:{;|<}=~>?,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w'РB-j(ҤJ2m)ԨRRj*֬Zr+ذbǒ-k,ڴI-ܸr:j.޼zI''{.,JH]l1Ȋj ˒7s,GZv=.m̱О|>5l,|܍m6ܺw7‡/n8ʗ3o9ҧSn:ڷs;Ǔ/o<׳o=ӯo>? 8 x * VlJxFe=6!jј'!!Xф)JH"Ɖ_x#jc#Ey$I*$M:$QJ9%UZy%Yj%]z%a9&ey&i&m&q9'uy'y'}' :(z$| BUᅎJz&ؤD"-N0ᘦ".zM3 _J*8͆i++ ;,{,*,:,J;-Z{-j-z-;.{.骻..:bJBb Bf*p%j#ObCi1Ǒ<2%|2)2-21<35|393=3A =4E}4I+4M;4QK-Z=5b#sj(1Ârv)ȣ'}|7}7 >8~8+8;8K>9[~9k9{9衋>:~:EUZ>m:}@cJi#0Ⱥ/1kG;;>髿>>???vm'Ljİ/t'Mu, r C(&!z1J+b!Hˌ@D#SxE#ŪG[L␾(1f<#Ө5n|#(9ұv#=~# )AR #*r?ת $'VuMm$}IPc^$#ÈUU+YҲ%.s]򲗾%0)aJ&`7 $283% M". hm>H@2dR :':3u*H >!|S Ȁ7~'B)S@hB+A*Ԁ э O`@>퀁vt )DI xF{h0(:0?4 '>9 hF9QtiF! 4*D:H|hMojV(,q`JP*TԢ N9*V( p_jSM>yV)V fV8 P-^H0թ+`ɐ|Գ5}kC'DZ)[Jfg' $SHf3̃Ju4$ xmMZ ]-cQZ]bP@`]uwkk2|-i WB?*}fմ(k WvRm[AXͪ{#]`)Gm\>!kO;wF*Rf ɍpE:ծo_\(T>-4Ŝ۠R 2N קō{5 86pz'0غu*d1 ȈCsߙwq,+XOh-KVUM@+1C}6k󭓻dȁB" 0GA&ui2t kmLP+9}]WXо1mj':mH lHWmr-db/ j5o} ~r6imYc;=obx ,vŻn`mMa# u9@ 87C9mp%Y-.ù 8:=&>A?.#!, U` dihlp,tmx|pH,Ȥrl:ШtJZ3M`0!HHd2 ud5 u 4hHpxiu0u=)Zu5cYG 5.li"1 &$3p6>`jM옐T180j`) r 8*2}^ 0ieBNVE:r8'JKn-~W"ދbJQNp Pa@IP%bR] CA)[J A@K8BCv0W? 6?w:ceX&U V+N3DpWc_mVY kO9yQKHJ+#(b%@uɽ5]?]c-b--2c" .~:.e 88m@]o {g_)A^)l0fP6`)PԘ 6T(n4qRN$'Mhݏe&ːidtZJy"h V&hF QEָd_0\ֹRL !%B"zk('DeDuikj%j؈Bpjbe]jfXbk#IPQMFm巾@؊퍀5].I' USLm,i⎛U" (:}f'o|OMi!'0h",r\ &PtJ  q dmzH)Q ߤ ?oq2dU+ EVg+@=/661:<E HJ"Vr<8?/Ң0?NT*0P@ ~P6(WAQWx@uNnQ|šo|B╞-QkIz'`[j5V7k\[69laIc)ri LIq! $ 2*FLbA fhP# gZ̦KUQ 8&NL:9v*r~ә@JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲ6`,ZV!Jm\*Bxk\z{+`Khլm_ adZH,f7Y6f,h*ъf;j]Kڪlm6ZE\ڵ_moZ2u.t+YR'.vWj `+򲕼MaB!, Ld@ dihlp,tmx|pH,Ȥrl:ШtJZجvxxL.zn|N~Pv.naiLr^kId#,:LA2HL*S ִSq$$ ҁ!J,*m̔)IM\%٣0Ri?95> :˄\c;>\IVx (kN ҬPd 3kיܮ H\Q4 Ũou*slPZ8|ͨC&kbȫFKҢ@mezֺeX-lgKʶͭ5B! , lN@ dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.ϭL @O {N7:$@a%muI xMJk8 kr4 pkk zHF%p Lq<+ k04kHE(lL<+l)57 v;5D_2H/9 C&$QpT9qQ6I͛8sGC kphkP8Pc( B &{و E!l&r%؍KPuujsH-QE֭]o"c$( " [  kbBm,2R(⪫y-&Ok+BZkq, ˌv4'ڦ\nXu[5+;râxl¸Zs='zQŸ)-"y5)쌐β1"\qVcLFYr$`fOlqʮIs7?]Uc6XE6zD/m4T+mQØ7ԉ@i޶Q͔Wn3u*|bs x9uo;4μ1>nЯO: 'Nc8J-buKQϸp DBox^G;|XK 𢽽&vr2Hu{Wd`nfjBڭOJ ˁ-+4 ,F Pbu<1 Ӏj}OI@Y?]RG穬UXdBdeX,%q&FD_̄H|7 Lia]Yc3-('D:]<%l5^'+jk~JvT;IL)FGplxMK/, C:A5%RPhaL%DVF#,57J:,0Ru7+ӕApQ7Z+::QUmss ͨMl軉ćX*դ 7)ۗtGIiŔ[VȢJ?v&z=Z$@߮on|a"C2~ 7?ܑNO~LzWrj}+1Gh"~6TK4A&-bWq/ g&oV0jZ`,ox*&$>$R+Gh ;O-N6ghBzwR&"P <9Rp4{pUh Ă 2hX`zt JӾ};PP 0: jjV\cx4J5uJ /Z@dD8@;U >4砳[B6vK:+ ,=n t(MB[s^Â{AoμeY0&y"_ꝯ*NwH~։]gM |y@ c"S0r_ZОz$`pg^ag_w'B;>@݌ő`T \v7fUDAy8HL}OQyc!yQN~$(A'&cSGnI XzϚdi؍?,r{}IٜH4XoQf"D@A9byݤG`o@( p(JU:|m## bcj ,^ʖ50QhH8`XR `X ,zH9Z+mL LӞHzRKh0݇*HѦY DVU%eP"S j UqjB@P<NqQVU)<# m RBib`aMjѓʗLP*-k;v8G,_lXI14 L3=ieI|:B('sB@Bs+vq@%Tss5̌zg8|XM[è2ߚ湀m{sqWbvjo[9|st.~ź{@2p~z$oPu/Bg2R *,Pp+A[jTŊRVț]:#c @Kd&誔,t*= .|wEOK=QGs m4T/.'gF&vr_PU`f BX!j:kL*O'.Nq`hu]|1p3[6RY3u>' oЈ F;:#ޣ'MJ{`іδ7N{Z̘GMRԎVSdaMZiu-q^JPMb&f;zMD,68|DAǝa[ /oEMMb6m[G-Kv8qy3tV8k:no?k=Z3o \`YjxI8 i|^jۓGFf+nLAc匌5az 4(F0 >дI`768k'5Ƨ$Z֥]C[+-Mѻu9Zq @<Ğ {rH6#::=4~:AYO\>ӵ7tݒdl@cTݹKQ][˶}?G?] wq5/%Taw&ivnD5|jt엀G"hYTmއGzOTCz}6~ze0AJ$hB1tVz Bo!sG6dlFQ~HiR=,vl%5>(uzmO/SV\%TJaitTQ"XACfR'EUl|0Ho"u[;Fzg(Ѧ;{ftSg:b`WTJ'wWء.UOE uU~?"}8fwϘm8VK)ָxl1$ҍXP(gE؎ 88jXhI!!,  dhlp,tmx|pH,ȤrIS9Q̨tJZجvzwL.zn*|N~5p*n[])Z *xc) R, fKLIhI , /' ]P7 '<2',N*]' w0347`eA>Ip"»6N$ KqQfvԜ,+ URoV &`p93 ֤?vI TgNu(  ) pNtPaA (֕Vf "6Y%~xEYf5ˠ߻BԴoٿဂb-V/o8+e|u`#1#@:gEsPy  (Ο/ A/L@ :K "w^ WGѝg S, :<sg} IUb&*`屹vnۥ@F6uO&E_&ںY7QtH%ה(YhrkyJpʼn YM@! $9V kH3z @R玉v?Ǡ՝[Ip( 4 ~M /}&Q("iԗx/DjZƮ8BCH#5щln G[A'iFvy0bb Vњ)[K Sxm.|(l YѫZ>"Os#cXM X1jt~* O'rXZ&@-%^ )0퀨sN'5#yx`ɸ'"{A<8?A tieT|u4VY,vA 3 ԁ]D.$V@5<`3̦K/= &G)6WM98*^'J tehAF WFt+nѵS}DZ'PS6"n`$̶k&PW,I EH@qw*:J& }# ӈ %@<7Lob`]D&v":Qn삽h) $ \"Φszh-P}cA5չ 'PY^`GUAEƔV5hVY4Q4:\S8a02Shw0)L '`Mb+Mlәu!,"ljTVwNAS,J-3V `yakU!VnXjRld%IzW!SOSLmTJfL&{VmhuGe)&fă4T2 r%(֞9IG .Zgг侀(@ͪIUm;(G.rȕk&m;pGZRQ\TWv 8V6l?^mF6/sXc**m3(pbA@$PHZiL@2GS1 pc')/rY+;PZ %MAeQ,"iO\/iK2VՁ% 4aA%u`[rZ\\bí{.(: 3vgZaSW;#mt_/:Nm?έH`[G+*O.Jaxi"]u9`%陓8T"Z{cS@0@TvyJ-Y+c[Aå}5gҥkFN;OR;>oEj,]d]WxݯQp\=-9Zo/np*.{I5}No ZFN)0 ];!qd2l^3ϗ'(/0nYaK0O/fnGxggtX`i1c ؀ H$ h'Wes؁= 0K&V',؂.x /X6x8:!p@B8DX4p`JL؄N!! ,(  dhlp,tmx|pH,ȤRjШtJZجv`xL.z|N|o>*Z ).I|+B R', fJRHI ,/'f^OA .'=3,e (JQI g' :*44`똠/K!xΏ5~C.k.25G̹pH4H!;RN3y q$xSj"q d(TT =&LJ"M~Biӈի#K©c .!>B!-ЩK% :"YIQ*s-c)Ĉ$2߸r; ˜NH0bY#Lh{3 ݡ,DMA/ U#GƁ"4h*"„_c} ^g%G`/\IϾaFn!b"7f"$p\Wo%0: WOs#PTr`9C ҉>`@cl1g #PEH+ f- m[ >E ' )B<a`bX.xc @s(!Em6$^s5cƪmXD/ܕ`i͝$kn^6WG HJ h#s='? L(i(#pSIY%l3xZ Uz^@~ޅM "}3LV3й Ϩ5y7M$`iopcbOgW-ﰒNA_ *KU4c{CT@ S`$C R`20nzJ3<1Oᎀ\B~C/6aig1YQPŀ;ͩAjxAm&|NuD$7hS*F-aj>Pn76e#V"xp调,W<%z@jF+T,BPp ,؛aLEp8<܍&ǨBDqwA8C%FR gC6IXǍS":qN$ eJ/mCՐ#bd)S6:bd&E/fq"LuO-djiB\u >d\탪n`,l+4PiaX.BUjjsG1a u9dW(d/T~YM9*YVԱYX:@q4, P|EI ~7Se0Tm^h \/b ZLP!Q5kL]}T(ES2 Y5[q1(]s⮏]nd[.+UʠQȳ<**M3]Y`iQ1d*IϘv4JQ pvaPfzϧ9G+sRB%'[('Qlؠ̩™":,0{4 Cgvm;8z6}dA ;0z02\]q ,l3wB)%9cB]%ߠ'y%}VoCw$îv1Ӿb F 8/J;fޝ 8 @}l̮9u6 UVfg0\jR%nP8 n3I[.oz) ];9XZq gm"%JwH$WK!X},ϮJ(ڟ8΀o妫y_q|S $ YRT:; ؖѳGԞ5eoiib{AkW,Ut狣u SF{(EkjעĦI\8ޝ uyuӅƹ0Yx= Ȕ>` Y z{l% >Q_n @tnvvTPB`-2c6@m7b@mg+ xZg*| cU+fxn ^-^/(FGHP- td|fkr1Gw0FeY"ȄYP8O8ZvVy(ȅ5d(XXZx`}8†pKxVy x(s{x}XyXHXX H(#XxvSdaƉ83! ,7{  di@lp,tmx|pH,$d)ШtJZجvkzxL.t|N~ClL -/jB- v /*=,x ̚)  * / *9+*03\<K6~r lTŅ|e$삎 ‹ dODР"V<@ Ve&H0AK \XbR A[D#ThT=T0fTt-{Dk\ZBY+a 2QXň-&ӖcL-@7Z>l3n䱘0 ȭjQE s6I˃5>A*`"q|(w 'T21 `y('r $~qAƏ3;FOAMɤsdW: =Ք$Paq3B}'bY7 0#`T P/#E0hPnYVbg,zrB^ %_~&kAzHJm\B6pDx73 ƘE ~-j`efjD pIyHJ\) Fh%8Pcʂ$ (ɩQ]|^JAnZ#i&#  dPW2*RZb荠b๴$u,r5fk҆TyZkkBB}F(?Up]h廝 Kd.j2-kVPp 5FiB HC _@I =5bcLhxɢqeh@`thGxH&B8@\`/p.BaX H22`46rF8x,#$>4DIB.!!,T  dhlp,tmx|pH,PD)ШtJZجv%5ݰxL.e |N~q5m*)[ )/k&N- g H gJ -/ '%]E E'. >' 'Đ G hA PƄ  ,+B ޼\:98Bj$p@zYrߣ~ l:,6гS*3ʂpQJ"Mj 8`2LeJvMgZ*4@CG_XT OsD-Dͩg壗 MA1 5.fVB6^=hN[EӀUGQ!aZS@XO?&\ g.Ќ6!(Рp 4xͩ?}Dׯ*1 wAxȀD0d$ZGeIlT=Ԍ5t$."Zxq ,ʆ@q":Uk QaoĩX =0q;AxӋ Dz50W!  `s*.UMX(!CQ{h fczYZ uw#Kp!polַ..~P܋$'ŏ1TM8+zE07| ʓNKK0A.-(06TTybթ)% rj%D4Qg$&RGnj$ٶJ~!bw?Q_krF \O%ĥFus [1# ih&WH:i3;d! ?o3`0 7lt4GRW e':u w:O=LHxMD>3PYQr\)GT(>m(T *cKGӒrM}v9?6cBD}kT詻ũEViMxT<(jWH-k2.fa~d>UaE{#,Wh>Y֩B~Zb|}N2ĺ4՗%!`&F ~iPx0 |{4S `/%j=NlR oXUkz/ pQ򀃊Dge,Ωmi9_̚a#A)@U(n#7")x.wq! YFH[vD VݲY0C1g zƵ}*) .ƴ%0E9,4؉-+$"-GPÕʜH#[OK@z>0{Ƿgi`KXsnD;v2k &"}l~- SvNKjEC_ȏ#\3jPo vcUUDV^ᬚ8لkp2|cUF@t=6 Cg\ne#r!a[} !&ArU(g['˒ud|xZSFY"i[$K^) 2܃DdeBŰt Dk`D/*s$jj} w&:0[T9 Eؚ`? +2$߅nqӮ%8&QP< ʬS1{O|D~I;Џu|XLϾWO!!,V  diAp,tmx|pH,ȤjШtJZجv]:ݰxL.贚u|N}I9I,Z ,.dy-] . S' fKKIg % .~j hO8?.)=1)(f *^KI)  &:+ ' . )"KS Ό(w#"U`b FHa*PECt8ug<]Řg@ gAp1i(~ "P" ⊧H"Xj4bk%`؄"*cLґ߈4]|U',؄J|i4Y'~䗕,g}fn7!Ex%FHF7 PIBfkTӚ6Ṃe4 evɒ9c@6 NY6*M`OÈɮPiEYt0*@-FG%&լJ7ZeiP =,2e䍾T4c%_-h{mlT |9HR`&b'ĭCYo2<آ/! l+*8(վWl""-;.&|iZk[V  9eB6eP)JU.G+a&u/Oj ]}7]ևܘVpulZsMƊ=79]sHc7|10Cm\7H}p*/wS tU$Sx~mɥ).rCk d7oJܭg,N; ˩.$<:R]j,a[7v2p"u"@>5"Σ-REf@/'/~p^ ){PwC&Dr hEL8Dj % # @K$h)_# #FBcY秆q,9aN#vM5G2s)iۓݖA) ~)#XFxQZ|}M҂`;ԧ 0_ڶ)Wd) m($ `FB.@?@)Sy7;J#{ *G&'M3$(i9u򂺱ID9XRʩj2.5!/WJfjAOU#}рš! _5(f[ut,7HD#J*Qa;y3hJȨN!z:?0]O ht1R@6:|3 &S=%aduT!<`=P "SQ/m[:ׂmT[c32XqHZrlZbPwޫb6h)"Pk%&{1`kĜ<^B8` ;Բ4q/jR~u*-S&Teuo ~qȉ/@yIeTNzօRMP6hl0+Κ6κ3$ZID1:`>lj;oIW TPYsL?94ϡ*oLܰ&جӽ1X̧sS+apt,gR8zif7# Ղ`.-03ޢ!V粳AG(`@Ӯ\:GX mM#/`JFwG4ǺdbRx 8b^kY>Ryf:]JɝC@ܓ;u-sf !Xdt=QdQ_Yȇ?2&v|530j}%ҹ3dr3rlVK 96g8Gu56Gբ!Şq3bS'M" W 0\ZfhbmRPH+ HGI\h{ʾ\vim [um.M/ѭ๳  Y;پC>phXv~Veޒ,yTD! -/ '0`(. >2'$fIAQ  Y`g`G((```<8H KB,R Bw-e;WB2b&9-(,ܗPP_tTb 02gv;NԄT/`" :$E[R0DlT3IG# 5ƭ:  |QXZ-+p>!p[$RXXP",R#GCDTpam:-Y,u8*pAYG~ "ȣ=?n [qs4@\]І=0c@%s Q !u}}5)4G%.hnU,Q(VG-ԡ`A=#DȐ]D7*ԂhKtSMgq$B70~m^cdg  9BnxV9+賆Kd(AjHDk_q&Jd _&SOF܉Jx'"sY˩QNwLHn*t`x&m?d%S{!^ yO홂I#Y,ŏ¨ԇ@_ƀh ܡ!%lcB( w0jlWl16+ʼn)%WӘ-ԪԂڮ>nU j=mw"f4Ֆ?' TY56-RBZrNmO*m@Nc^luY3m .,6`16 K;.d݇sw^5% '&q 'Kg\dṳhH D'O1e3 _琁|!'ϰwKU(4> U9Ϡ9 & qASY9vC@tmyc%VoNSSG Dف(Q+ZE! } ,_2K@PDetօaZ VKJT0<6~fAD6B0KHYH+.>oav6.3QRT֓F&`"Fa);k"@pa:#%t]8r;P{P%G@6htЪ>w̜,hKٕ"l0^ri!z~jQ$uas1"c,>*N)61A%j= X9J,{nX 4Q(ǧ(%=S2y3› @?hnn24ZNϥt'闂rt?0pS1FNh`|*YYmHS# ɑvvN,QjThGIPVRc>$+Ac^z7JKiQV`[q:1^M"9ClpDMjVDmQzm(sZčC ip2^o*:Vh;\pT*@[.nƴq;iMk8?H{DQ :ؘAKPEj ʪs `Z@"P_QST1 Kjo[Z%SK׾iDaq!Ҍ]܋P``ʡ.-S̩"9t[ޙMy)Fq\񠏫vKS)Iq.*tmƅ*-p? o'ZSx_Q2+Z%)hLcAr)1&5r~eQ3EUL+֕ӽ~ru,ޞ@P_TTV%2?WT(7>>KvygќxÃTWYlz%2ҮyJ6^v]dEV#,|/ihyָ7S; (&IkzP8-qv<H=q"<5Z)1z.w<0)lpSaHp7VA:;8FKnԧN[z]q{`GhOwkpNu!,]  $hlp,tmx|pH,HjJ:ШtJZجdnxL.Rn|N~z4j*h:'/)Z *r'`+< . S, fOsh - /% Iې.'=ӯ2Jf MNK p'4 `3D0ڂ ^$"`k@X׮1 ,A G$H 43]2b(P hu,uU'1/Fdj\tBiPeA WbI OwDmXs _t(#X_Nhk.փ",,5w2&ޘzN&A /BEKtC6|T"䇮`܀]\|WXYf$lPo2fR j $uD[8@!x& $YA::b\4AIi\5b liHQAr!NGXUhAΖ5я5,:Yq1:ꥃyրO];wi츙(ol@9/b%鰲 R@Pңhs-ijl$ P$Y -PrC+6KE&QkzA dj`V’0:Ww[# w&Cƴz[Sf<(6zC_ŌW]"褐T$d ',X +*ȃ7h .>eA9<#r8_x# [^̒^DZ@jR2 F=sѴ&7CEJr#d@&MXK#-)xO3 W(I> 1@ a˜JTdTL1h=nٸQʜE,QNqIcQG m/FM-r4HqHi=%HnwMG"s*g~GtK\)_S~i1{><_ټL RՒZaF 5KG]}-:KB+,JPZ ;)NjS&AYۢcZ4 ޑN:HrE4(D FW < IOn}{# h!)nSr$y>, M3lÈ(V癑XťBCFxjw/ )-T /͢ER<ԬFV=1TTU)9QSh$f#\#czdn? d3%`2@Gux.NR*Jb% x-D:15r͏`6 {,zd)4ꨈ: 9Y!08f[ CX%"swG/3e6mJË&J>KH5{X;}MVr XVt Wh韭E!wIo.5,.;<N߁M" 0~ s |9b#DgEG@uIwַu<ۆUn#Ⱥpzl9xϻ=}O~;Z!,]  $hlp,tmx|pH,ȒjJ:ШtJZجnxL..n|S/k*Z ){.~_v+. - R', fIRGf)G -/ 'xS&(Ý- >ʹ1','eIQg-8 )% '0vͿ!^ ZHXTScA(zk'."2DwHF<8@au9tC* âF`:d P 3 yɤk4:B` 6hT'KX(ԡ4CihcpR"+[H%^dKS$ ܖ!Co7.-PX@ P\ $ytрE:1&Eax" qO KtEu#TXrS{aۄK}-0b"=C6wWsh'SsMYA*L^H|fiAi١UB."B]do5Y# Ǥd9Q'ő?L0eaYrm@)DFSFM7Ɛt<0VEQW爠F_0bn]t*0z`)"5K25XJ%i:tJi)%a"!&fW'24pj_YgE J>'(0$ԉd% ͳ=)žA lvE;-v+CJh! ,Là{ kHDWv)(yVo4fvۂ[kps,pHFZ-+\Y$L (֚UI .3.y~Ӂ/cJ|":(66?*wp+3f4GwY&|u١]Qujw25-/.Nhεncs2\y_18 =*Ьg#OQFqTFJ ? y6 .zjګ- |O`VKږO4˜{{I&w9Z>r/C,[1լ6>!9UĥIIk @w x(t @jـ a!6T냴&`=@m~jX5H_>9Nh%˒9!Ojz@^ P* e;i7j#¶P1@bllP"]n+KX1@fLUF u<Ezuqbg@mw X=-$l(&1##j.u)6 +*@xẴҍ Yt E!>,i =1A%/$Tr.Ak 5֮.~-M:8$ߊMGOq"uSJKP&#B*ڳ gsxiͣ"ZrN iNS DS1<$z!% 4Xj4 ko9Y8$+Tc$E2a )VHj2}('Ky<POI:p|s2KMI01@f$9HqP)4e.I)Q. >$9jKM i%[ 'EEL?* )V*r&:ί=@j4f1ٜH!u ߡQ",2%U*5HrVU;qg"c.gJ6y=.b].dE +U)e|:4 Z#{<P"пc}d^ xN=`D#0G#LF=CkNڊ#q<E658JxXR/į uLʀC?2e/3ipL%*M}Ua^:@dP`A k,+pI,A3檖e!d+$lIei@r Dְu(b# u%2UmخN-/65Y=/AqW.xQ9XM"=h>3jI\3$֢zxQ[-dF}uLpFV̎}-̦*Z"F4u\KG *r : ,9𮩨?MtiV~jDî"6֣?[L{ؘz{%/2;26h#8\܉m?@vL=c[M[tp\xYrAmCm[sN7(9=l%pwԇ> }^};;·zۡ4x2}(|mS1w$T<Bx|<#Oɫ}~rȋTh"I -{l ' |>*)- ",k +wҥ * n,*k* f(> M4paT*zX5R  h&X0V 4@A 04(-hPGRZb FYbzʞ=av-f;j;bn5x1tńb8(\r1bKȸԞ MqtO [Xa!iqb-?BSyz?}h]imgCxImCBg%倗lM0;*ha 4䚌X3Jo46"0W'0_d",$A$N3P{.s{5`j(jn~'xhu-9(jaG%j:&@>ꡣtv]`^!&9|#l1B+@[ߗhF+ sδt}>@n0kJ2&yzX^l+*X 4 !P(Ӛ;-@a} K u Kb)j,dBi?`ZiPyp~tץh$T`m&9 /dS l(\p"PBE$toAcH:)auux r}G$>]" 5A=| -z?< 'bzM$Bs-˜ĸee!ccVlY!&m6r$Ux Ԗ\U h[W`@NYBHihSIӣ)7\9XY0GRzʏ`эm,XgX(P`*F,Kjd⤘phSVyv›*dJQ *>!TF  Msƥ4B=|".RZ` ;o_A`jlv(#P ꃡ/J.z7fB#} 'X3[ݸfX_ cSSEZ?Y);TY3?xފrgK}c-ݾn+̀€*LeD5+-˽Ck Fg.lb(GLM-`H 3rFsAbd)<Rp-jl2ցUjPz{2H*ƹ;1 7ސؐA#. _l< BZ~?$np3KU ~)B dBVXB.O[ R#BVƒCu~"C<=͋GH"06@yd3|i5- 2PeY X<Ǿ7n17j` TS%ezռ. HO`^CZ庫5A,$ɟ$y@I^M٧u7xHNl;5/jjdz3/V |7@yC\JT1hD)3v`FZxP=MFƄ Ё_6H0LaڂJN{l;)5RT̞E*!v q]]գ }vt-f}Z,AN46T\ AըlyM=x$2,G7,Y&]~ R}ɔqF@j! .K!*\U3۪5(=q`GMΘBO&ifMx,,ip 8Z!-f(KI 4cB:DM`'dkXRq&Md\y* z]ĨtfvHHiJ2a{]S>&[sygAYm|[ i<8@=B)o ݪW$\ޑ8hn՘|@@CY#o :$B:va)5π",X. АP_zJhѓI1=@̒Fo8WV:6gMZ Ep^Hwbvu! , @pH,rd"ШtJZجvzېxL&l/|Nò~nn{{Gmzn,bKdJĆncN  ϵڝdhm7JL]M <*\h̒|"b鷤M[p^CdWce$BQ?81 KC2<  6)zAP[0a" "G^P,*.]X% =zX|![+#DPr1)ÐTLJ7sc8 /x9Tp'ASY U2۠0#OMր1)L py5mb@ĺ%hoL$mfuAAuKSjf)o[H1Wk᫝ Qޫ"؄R.Cjf C( nܡI9  p@8&ysza9O7> | XظXpu7pk-7~$H).xgNk MAps6隀~>"lŽ{괯{_!,  $hlp,tmx|pH,THql:ШtJZ_uzx"zp{Ni9 * }#uj'zY]OQ N> - "-ι,Ƞ"\ JNH Q֘xp:* ' / '28S %U2 YN@ k(L.Vp0ᄖUf62sOKֶi!xF\wpp3st'@o 8vm<\P֞C3IU8 $ov>̷Bp7Gۈ s4h#ZF1p#2-m`0$8̎#!x5HIWw8eMTLM%j5 rqbp&4w ŤB+^0i62&#u#Hpth=gp ?=RtO>i(~h!؞w ʨ|h!mp e\(,ΤL9zꡏ1pݢt!%+/ǐJ VViB+5K >z@Je5@-GiMXZl=h>xS2!nxi*9Φb20,G @35")_8W tkZ֓qY& PTȘ,r%v1]hbfDlZ! `u:b*$9*Uh a0U<6}6퉵mòM .\햐p^Zun\ UHyUR5.H]Y%f7> ]K1X1wcbGWBA!` ]QHp1anPr]@ۇ|Ueݕ[$WtG/hcL0}CؗQy@-D0$7U<-V/,tÍ8zޠF_OKx")ֳ"y&uI3pC/v'c%Pȉ;f5Ywz*2oQb[' ""9`S:NJn z$#`5i ɛ$ R7Ŧ3 N bZm֬-ٳfQN+ϿH2S\C0 ^UkclIA8ޅ{6|#mȬsSIu 7Nj="c4C@T[)6T$ 4`2<7~2GvN,oyE6a.z'-4kʎ:p/7`q0j7EޔnQ'$,_Cp.]=6X@~42lFѼy M.A2Kɠ 7ȣsr>RVX|4@5u[eWAI3XBPO#U3jPwC*sA NˢcndI Wk" > Z6KЂg <]қ= iBlZ"DvwmvuG e=p%1,6m'AxX8Sq*vI9,0)L=)`)1iis1pW4Hz v1s-p A"EˤdR7sz,L?W/q!McBC+ s) /^{G $@2KZtl$@xL)PB-@[pS_$h(؈LI&VUWoHg)K0tlaZϩ*U)#R qdeT=W(;A7: +6Q>JcM`HObDS.}LW3'8RJc*C|ިThSOH CBY?;)4@ٔa@@ h NJ"E(}\,̠4#@so:pGiAMst%AׇI|3OD~1 xX58/\0J] hHͰCGLI8o$- Ncx7I4r "YDN B!,  di@,p,tmx|pHrl:ШtJ!լvz`((zn|N~n5c-a:,zkS- DQMN nl*; &#CG Q*N& I: -/ *5*A t"B I'nh@ 0+Źh5!&Œ, G I;c ,PXA4_L(c>frc5`ˁ|CA &4Y4*0P5BF6KD\vsEbcǬh]Pd`ELKC=x@Zb;wGA|,}(#(0Fdu* bmh#"YgF'9JN蚕=g .}Ӊ#Rs玮x[6|jm8w^UcP`45ʱgh~*ZX-df9zq @y h<]!{kr1)JPHء#&xPdp'-`B U|"3wS>T }z0TnEp;6` k] >4JB_y>цX8AB5 C^L?qS5 Lp5(qf|$ N&r{Atq.0:d'<xmALzK/U$∑3o!R3Uwetrx``%*! U:%8ᅷ5 ,)FʬkiAh.@#ƭ-pɪ \DWO#@K󄑋 R2 sZB8m"1;( L&f T;5eEHHe$s ""7SfЊ]m>()@_lc6fNiJڸlQ4(JEoU}؀Ѳv q<4saD)'84|u Ė{u'$/z'~IC$ @ڻ H0(_ɯ:69pvIrt@`=N=- ( [1ˊxLCU(Z'JYt6ZmLǗM&Σ,!RpJPo{K ~[L`cND'L [!! ,-  dilp,tmx|pHrl:ШtDZجvz7+L.tY|Tqk {`4 L+ mKM jq- M 'u- )+}0 Q+y% JU+'x:. + )B)K+/KN%İ:H("@yC9sI+MI&4xCmX"zU@,BȂIJ A,!рp0lD=Q0 #PO=N5RĄ H45"A.P\(ViMI N[T<@i2H0 fۃ1Hy,@:rFlUt5 (e&Kя[nB#@ϝ\*g)֍8p0L bˆbBٗa~DPn4FG}pȕqOxSob;%<,;"Mp 'qۭ~1,F^"ԁ5o]<4[ }T LKMtÆ6J|~pӌT @BgS 8ΒUUp^tS H@EA  }XS2GFu(e֥͉h,vwRcdHx.Qֳԅ_C(.6R9( } DSIX\| \<0"աe &R2.; dTE C%%NʘbDF(HÆ~8WѬipEapnxӟ!RPh4pY)--ں!Mkn. 9QN2[~p|(L | EZp7Q0]\Ź`5l-*N qJ.Ĺο5 HA@F\+ M3R^]}I6wRUf6'jC {94 y7~P+ '7ӵ@" ~8]DT[9j].>nt$ 'װ"мhk8X*Z8/ݫYdhP \]D +7PCRAM4E@yzڔøi RPUR\` Rt@5ibB E!{2@àMjgQ61[MlY̦0- ہh >8SL?G9)nYz8)w @ ÉMY>6 df Tҳ=bX Bo`:#.9f+u?',pxzГF[b2L#0UXeT@MЉ#T^Lۂ ef5޲)ۭ]>jȇ5gs Jțдьy2gD ؚ'}눈`DHfi*,pNciĀlF њgV-@I[L$%sKVS"I212hU==xj u(뢏+Lb =H8cl!פ fU 0ʵ"owYP1fg.'ՇLK<`vGic KĭnҶAau =q=ܡ׷mt{"F ͮv\!,X  dhlp,tmx|NED Ȥrl:P`ZجvMxL.zn|NU )/]L ,}+8be> -f'M O*'9 F' :D, /ȷI' B d" FMʃИ9S0F d$ bȣW:";iba b9`J/ @ `nT@$\ϖ50#pˑ0>SAм "-xL@k21X#&\A"j`uZp&M!bf{q-BSj)b #蘨.4.9Y$*μy)ù{/61!a6w׸`tR!h  KJr pi0zXD)D*5hPzⷳ{c p`]XGJDK|Y@t1j6rB\QС@1qLL5v`zVc#j (" Aa xs@LG[8q"]M@N L{} ~:(V`2( AI )v*>yB#P4 `e&$i9GB$aE|T rhM¸IfJA9W.烔r^ِJH/vq0%u7U|*roP8C":< <УD<00Cq$#X_hlA'0L%}+\ 3kX™.Zy p`Fˊ# r*Xa#_EM7.ls!`zjjiOq㪹*1gt42cT2n*Y_n.t,5vNaݖ [’pyZ)[\d˭_TH=j-BwL\ H96&h637{_w硴@%f{`S#)kWpAB(qz-4Ά觯4tMM p" 6?p }cFt4?`N4oxr \@lj(UcMp gsF5}l8H?M _%Brr:D!MTBE7юzOh0@JҒHQҖ!,gv  dilۦp,tmx| Ed Ȥrl:bJZجV(% xL.zn|N]ViI.(+Kvay/5(~r f+K N_F5+ %o ) +A+ O+6"uų0:Ǩt0Ԉ5YrsgJ+%A&L5"BGzR '.4g` >ihAF1S2sqPA>^Pc='R %Tc$ `ez;1hpnnwG5) n 8^ ڤ W3IvːZ2uI@8)}L{3vX0# ~j rL}-fIn't}Gc9'Tzyɱ AJLWL& 2),_xt8DVV@s<^eȃXb Kl~`{"s赀BxxG[3ZG ofo8$A pwX)"T,Fn#~"@ Vj0Vp駗it vNꫯ*jv!,<  $hlp,tmx|Ǫ`G,Ȥrd ͨtJZOuzlPY eT2!Ნj4 k- j/'wrL S' xy'd'-m:*~, / IF#.(n-*:ODDi%-{',A9, 0o;?$ז%hă {qxqQO 4a΁ |4BD2;O?eXK]\$ZQN"aK}PhFOT(UM &d`O肚ChS`(HZB4(d=A($!N!p,G d1 uj\ SMo9]2Mee}v wnh  6@POM~.CBi1x_ְ)i + =5 `+ة%m~ӈqA*z[M!bNDcb( f!Tb͗fd pƂ1L3  ieHWyόP40gYR}%ccqfUpHӒ2Á?_ <[ dJ'}5x׆Xic bH9 M=әͺ3UhYa9jVPތ髣&}2w &WJʊcv +`:.*H/@`Y S:.9!j<[(:pǶm\ԴAO,.&B`[aDJqkf|Źs 4ß6*1p̘ۛ>ՁuE&͈DjxLl(]"LvGn(ibrpZ_w,xJj$U}d) 80"3 +*]]sj;ucʠ~/LƩꈀG\$}G%)Q"BZjj cSq2^Uouܰnx|ݥ dz4۲zxw۫Kء@21#o=ys=3 B.^d М(+>?jH~M@h"وRwikYO rCEJr!isA͊21<]0pW50D Dn0Erf4$ca"hGh06JNP`P opB⠏6 ;&e#$S7IZҒ@# HYh2  % PӁ +0֑:gLx Y t/1H1q_*)0MdRDI8!H2RG& Tb"PӀ)R=0qDIddt"nh T;LT0S֋FudxvD?#v ap琪$ 搌]+(W&ž=Xx5$& N#y!W@ONs;# >MY>sO<D_J5[ Ą OEz^(B`6 هUtBvbSFGX7yBB"@0mQ r)0JidР5~ET|1V܈:dzhYt ^жic&X6m@T 1%fE@"E^"C!'JRpfhn^8ޠ6ia4Pw*g.*x jZ&M \Thia_j T2#`AT0c$Y"{*ª'Tf7e=<_ ˘Rԥ贈G& [ &tk!{ś68'mB܈sYhnTλ5e @/ 衃k:s3\u 8[lq B|XcVuO o䙦,6[Գ#JK 2Jvk~hwC;N<(9'k9[K&wY Mi9Z.F4u ' 4P HԥrԨJkr\B8 斅}ی:-(e~x.vڎ5n&IM`mgmPJɀ6K ^%vA.:o5h[ h@j@)=z""hF-QhB2jD8851 5̠{AIB$:F:̠#'IJ!! , @pH,r<:ghJZجvzఘ,/`nmϱ}HueEykOe7VJTKjDtLT7JTLVIĨpS,IEżVlC IǡSL㰐ח I6Aݭx$FY@#J 0P-a=Si.Uw& MLp@ڻR`ϒ\* !"^:S"SfN:/g'dt1S+BJ"@h {@7U%~k|wHcV7S&4Nmw]&8p t\6(خ\\ӝ{RJs-fZ/EZ_ETF d[F  ȑo-۩~Mַ"6s!KiMt8ۍ6n&bi`H>ZB0 u饍㠷)ŀJ0]PpA*f<$,ߎixKBD摿OY,;'}{@(_sh1_OrKQ `wAsm㓤⫳%^Rz+>klsiCEOEu[yv-қ벹N(J)Ğ "& )_i$j`/6qq&gKD.Jv5%dDL;k?F1$)YpHx,gP`| r 8[mC6>@-[|'$1C13e0Cae?!: 2e||.,(Ld77XzN}*G3at4hh٢(ZDZO2I%v0=r4 J.4`YDgu"ŒD림Z:;R<-;}nQ#}r~Wq.f6¨SAokGB ` #!,  dhlp,tmxHpH,ȤS:ШtlNجIIFUUrr vn&^p8xsXsR.$'n[ Zpyr'"+4* { / 'WFw 2$$'5L. 0hJF 1ȱ,w(0jGEr 3%gDoүq;0Тޟl\|.\hw^$8RD "hP! H$1K4,8Q\( nzPXp 9y[d`3U%Et1B tj2AUY2LC@NG~jcdž9J-z+v/  PT5?It0353#=RDR*阮P+Іբ2J݌m V=N2u ^EF1N#&J {ߍW":ˏ*z>x-A H .ea_x)a S3zpQpEMhah'tPRpb^B`W3ޅ(Xt@3`SaD"9BTL4XWi^d %HAtAJXބg!3^IrX TVwN+y ?iqTAh"G†`d׌OI NX184VpQ dCNGiBe >@^B:$->i,$ Y؏ XY> .oNWR %C#PICxU:BB gzJsnB;%`,@P13Wxb/yn欀VhʂsNu;T&:)J0ukZ \(d42*gdLG,q>7ȼ"d!0=\YBɖ-AZ|uwݺMV |k R#ttx %%wp$y/`rUy"X9]V/مXG#eV>p駓=533+W+K9<,8~ao ~F?HRIП?Z_! ,  $hlp,tmxꧼpH,ßl:ЧZwc&ʉ-j$,BK' z0$Y^'%j@* ,m'0c}YGq, t@& S=0yUE 'Tn,/HC%x --'EA$ ".11 h݅ {؃ FLA!918OՂ=qc  _^DWm '{1|20'xJh-&@aƄCp[( (&@@ُi h28w[!/PC3VZ E-6kDF&1Bp'3+"c$_dtR# ?ê .k '#PZ2 :tƱ&ˤ4))p%^r;)/T1ޔX mɱ;Kqqw)@EH^VgY (Gծ@ AK; XUM@/4>C]3j.Pkh-Bđ'h)-k,0-r'Ow'v2ciIT%@Be(Юhn?[~1L6 a (Tȓ+_ E>> 0m%`@-b!܆-dP=ȋ-m `7Yws 6|h0 l#'7%XtF@VPI-N SL*"aywY&<H&r  @|Xf9_>hHAѦ!muAJfUpI+,|┅qZ"^Xz! \D*dgP6 i:D}T*EVBj?Ef)@gᖔ 0&=d"PNBLxVk? +YϷ L(N";RiG$1Vc pβ  %u'X cbzi3pڳ뭛֨}f9i.do"lB4l3"C ~Pow3&f! V- '27-%F(K" Mp0@4lR+Yu=*u{-+}i²9[fe.A:=9걀{gjU+b r|l•oS] 0 8tdEPqƧxhk ,xk<\z08q1,=JbrCsEpR࢔.O鋠4XP(0ܗs/s;-&<WB&UYZ)>8-̡BfՐ)HD^T W&:qZG IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHO;PԧN[꒜۶u#s8Ns}d?;׮J!eY} KcOW(V${N $gϽWuσV@@E2*Ё!k I:W˓y~.DZE%?lj[ߓ!|o *%y`J{K}N ;d3_Z7?78g&2#&}9b9waEDd@~xԃ( Q6=~Ӈ,؂.i2)1pa"g2yQ$3GH\/؄N@4@!4G$xRw _L|x_pPphXU؁f;hpxeh c*wjxz" 8W%X&S&24DP,') {{K4V>`8*nbw( #5tuxx9 +.#~sgA|@:W/B@YcQ"R)@X*,vӍV; `@u+3s;q"y%á3ވ(=7(%f28Ҏ9tV:w-([wSY}׸,(2@5WPp$v4YՓR^@ɐ5O__!!, Y@pH,Ȥrl:ШtJZجvzxLvn|N~$fjh|n_iEʫ~7i7bcCBDjCDhbkCa^u[GP \ȰÇ#Fl|CԐa"Q.2k"͛8sI˘bF!_ X0!/+uDA`0(uxq!X~ ‚řkwG(|v'6aRF9 <8zAc֟ 0]w 6|F}]?%$ b@-P@ V\|C8"GFx"ȇtcghQzj%PA~K@(Tv'aF؅&%!-Pp '9nE ଷHaG@Ev!'|{BzעjfoծgxbF{?sɔ @@W#*=7(i7dc~:ˆ`}j{e&I$,q0feɄC IBYyCX tE0r-QD$)#ߗ2#TW|LJg,X&¦ذVu$ipH2F"AИ DlC)Ch\\p4Ya4 Y4jB-Y(X@JZkeJA/HT4%GIeRKd~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽw{OO>+a;Џ|\SϾ{O^ںOCBˍq",F?oߚF|&8|&J!,`@pH,Ȥrl:ШtJZجvzxLznp4y>~~\t_sbRuspeP˼ǦҠaه!dYJ X+ OLȰ!#Jqŋv\ݸ Ǐn\azIJHivK,̽IIL`5s,r4{JPE|F>O!!d7, @pH,Ȥrl:ШtJZجvzxL.zn|N~ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳ@ JѣH*]ʴӧPJJ(@r"*†ٳgͤteWn'̪ū7K aQ A.68pa p(< ]@ؼfb:0H0LdĂ1 1hdsμ&dkqWgA =G> wc;H  {wT Eqgrqsxv| vtVb„*fX݃e(!R`%Xa7ኊ!_l!Jcu L^YxAZpE5fXEmB40AoxY$eBveHV_)rD ^g8x*'Q:dZ'n)1hք`՝UZFXD\BبPz fG&!ނUL E0[BD[6Y $dxIVKNJD``c0,F4庘;uiׇbpXElڿ>:oVĊbJċzؕQቑ:bfY:fC ,eX8 <=d thJg`!x,mcX{Ro% >ցOn^m"p"(+0 y <  [B$YHQwN[jjd@El 4@F2byS3y4SA 's<{ &h\@禸9BOݐ-BІ5)?˂Y94>OB8%q Ʃ@z|/# zWVaflZ0 P5JfLh(2/dq1h47 mN~4Mt0Fܛ;79q$T%*SH04NWdNkr兘gNsE|wy;>BsVb]@zї;PԧN[XϺַ{` 4hO;%ojFvIbYy߻w=7lnLwI)0ɉ7$B9^ X`):Me4q[^@4gV 55LO7ZMɾwS$$SS|̫/N@-w2l&tR]ś'3V99DPlcя_̞'zg(sn[0~2h2]v:-@ڲ] n{zH; eAw~" ?7Z6s:&8,_Jdj35]f.(Lb3JSnE7Ñh&@751=M67OF(8!'xms5.[JdBcՃ78R79%ТX6t ClmXUY5=VRY:DXWs3i#TP$fA74hdX ,Gw8]^(St{"5JbZXxɸ؋( 3x}ao#F-ͤRe.X ]pA8;%~VUbuwMp@JzFQSZT! TH87ĦdZ?HiѸٌɑH58##y(%9$^Ԓ2O-4-7ى7i-=0AI&ǔ ?G hEpqeAP1HGN N?KbQڤK WHʥH*N E*[SJAcZYnڥpJWJam*tP `Hd`hl%id븗WUO\U]xfoK{:;ՠÔ3Tj=&vd2USʦgjeZ^ZjfqzsZ@ڦ*pĬzo Qڬ=:Z*rJ] # 5TT(ǤX؈YV53ʈƩR]䪖 ZdvpI:@JKiHIR\CLrs#T𱪪Uzy8KAv IJ۩A˅T}*Hjet}KGV eTB8::DE ;OĠ7mnI]EwBJC{±+6*7FGOohX=U P ʙ 6|RƪbW4TdB\kA^akA!T)Jd`AzaQ°=)˯;[}]؞GhZ55 3 ]6Z\벜P-j;۶kGȗB8sni SP4%fWOG{izԧIc)Øƿtnkk[ "zI֍0*\oUppG/lsP5d:8m&8o~~K\ ߨ6;rxxف(BVp̔<@{>P%"m }h?{g]^>i|*뛃.WO.ҥ5e(|z 쇰J{XH~^_jiwdƇk= DyFO$r9 'cߺrXhjP(LEL5O9 h-kO>^61j d (uN, ?Q&elSmg[[︳,4YO /fA UHmT%~n4O^?0&eDVi5F94&,SpYc)DCao5o4RFE7O=:>lvfDk/NOύz4/xOӴnɽHXHkcO4/T ?䟠;*ERYTTsHXu @0%t>'aaVedx8fH /c\-.ql$뙒$0 GIKMOQSUWY[]_aceeVy<*2 1r"E 3 ]{.!*$gLLQqtu qesI` ѮM˦1o>nA1i ŌG޽&:Y@~T1vyv_RtL:=b5呕~3̮TmUm[oӕ Z28-Od Xpʻy7$A_MtbܑU^"&!i0-}SŋmgAn8zcUe{!m_B5Y=Fn+[fHu]1_ϫѬشLr˞+G+\ P 4W4&垚J!^.*'ĭ_8+h#"ϻH/͆Ƞ T 80 XG g8 HJ& QB#C;%%3Ո+%xذd I A#ߛ|/$sGv$d\Pή? K?YK%ÜG!TI <_DN5S\(GL7CGc-jBd< X8*yi4TNRܫ$`5bVQU/3`J- JWTihNo Z,BWmZԔq35KvY^`}P=kW- 1{Ex7 8nsSŕ]b_{ZJ9AN@a R 9=R,D#3oՠCebS5ړ×c.yy{Z4[j JԐ29$7#)m}.a:+Z~9hUeȹW;Y4s[2D6jeneT †BVmG35S0YS^y 6К93V;+;  zM1ejSgZl>]Y/)O_u`) oMtD 7xh~?ICN~ DPwB @d Y'ƚȉ寃ԪR-X tp&&M0)|PG/o_5 W~MDi9/ 9\CC󍑌e4~ 77,ZX:g1N2!׭.P1LENȀ&1pq(lIq |4 e9v;IP>σ[T*B b`XRKn#ƌي4h&`GWrxT r@ pB:Y'&Vig.)3.Sp0yF} g$T@ (*Є(kѕӺ52>T0(ASFt4 WCْrԣꨢz6KJ::!XhS*.V)Oe3v۩IO.MOMUn`4Tf]WZƭR+SZ֨Umu[WgVUu[V{_)RajGuc!Yl*.;YngAZю5iQ{Ԯuka[Ζmq[o\5q\.us]Nյu]nw^񎗼5yћ^u{_Η}_`6`/ v!a O1a oAb%6Qb-vacϘ5l3{c=d!E6򑑜d%/Dαd)OUy|e-o]f1e6ќf5mf/&Jߒ`(@>kgQ'iiIL:\, סbS(+RU{V_4~J-_N5h Rc`3?&jh֞jegd#S#gŝgg6ONQnS`[o껩KikنEx(wޡ8">᱘v'\wi=[[A!VxH̥֝WHYJF. <7i7od&@\+Fj;|fS6aT7 u {ujR9 vGg{,h&4z.dCZ׷Ev)ؗy;~~gBSn`'sQv}5w, ͭȻM9=ɦ~}Sc BU6=uWIOO]w>O@?{wvǩG_3#d;il@(72.LM(Nگnr~")斉T2@Hi 8pG0}\/*non^٦ /- g*00eTdVڏ P}T MC ^ 0 ;Ldt-mO*@P Q0#&mȏbo2Ms0d"q XQ:.V(10}֏\TQ ]m c /v+6 -* NQoObΊQ=O:PQ(1i09ңQ2INǰrZdޯ. !']@ r1Cr #"u$&$V%}m1&?2mJ OJ#FL.=Pߐ&'{LtR!Q+K(+-2M R#.Q&Ef%_&r!R%Rx\L@օ 1e3'M4`L iR^mds6K00.M -SR ׮Rt ja.!08q- Rf:̲00A1"s8!0G;seQ0Ds2q;@`s%R&2;R/(pp@S%o:e0@Q;I7> Sx9U7T3 k<3Ry>>oDS.Ӎ?A5,ΓEat(ٳ q7qزS^;kd^4/ A/C@?ǒ>IMF R*9m^59q tQ^ P92R^PKGEMJGs 4P.qP 9EMPT.<}3J.BHOaM Pt>NL pS/ORM3 -K3#3H^35S)̑;sJMCA QRQ_R@ M E(J %9-ӨIӓRJ W- AW M3rFep1'cn5'uWǵ9ٺNM5Gfm_ =9M`H uX(;UZIa۵= sQ$%%?(0Q'3OTeEW?[WuGWY5t^;eoLMaՈ3ZragU #Pf1r\M c/vB NMeLɵM%Ԣ-,' 514eyVVmQuAmM5U5n/.J6NX6oB6=bL=] )Sra܎TXvcN!Sєn' t?W4jI4RfR(t R*7nY'\M ZJR8o AVLGC^@6zOO8jɒ8D5H:Wbw:6u{1zQZn f{u2T1s|wCYyia/tWhw[mXFCW3DtOWaA8:g~ *]pu^uruA7Wz!?sAMAppaR4^1E31mԄ1 JozxYsa^E Wo|_ؔ1}R #E#7tV\쀫W].+;x7Ev 0= U~GaF-dz}X؀s,RO^;~4x,G>3N yYSWC9K1-JE33.>MOs9 r0k\[Qw(3Hv2=[31p5}7Gx9!&D09Ѵ l5) j3sq*UI-L&VS-)YMfLt%Qϑdk1Tz!٢s6ﬢܕ 3OeOϝ)!ZL݈sx#xoT &9?V;m1:?٣faR070ZYU^ ѧH4h$oZTnpff[P`30kY}%Kic 1~`/ԃY4pOMIW;:E;A'k{ub{t[Շ~r#_z{!7״Svp[3[7^7M[k8an؜R/ @ o qP{;4[D&MO%5v[ eg!j3f "svM#͹ms7XR5<҇,nm7 7wF3\q{ \B0t{U'|L wS\[: C ZD-ɻ-#aKW|wMWY3Ĝ-\ :\м.|Y=#jp?*oߜG1kٜLz hÊ??Lty+SU-`}Պtj+}։9H;v==!m}%d}.aڵ]۽}?=]aܹ}ٽ=}=}i$YZal$-O8gZj5^H&.Grdo!bUIiF\t)W~9b_]摫yj8AॆF&.@W"//*1}kž b굾 V>/`7"jTfޞ() Þhh9h_1m-ߞn𷞓5&BU tIt(V616MaWP9难QÊbeHąp}}HYb>"Ȉ'W-U_0y__A__ aP@0YBGeVXhI%6ߥv[ e3:Xx6=,E@`\XR ME$JaDMD<4$`IpV`86r^fMU8% }^mvr斖"U6r I-1j(,ޞE1D0N3%xS|SǦ֍ݩ"98T&qa+n rb8MCsFRJXJ”a4"4hbQГ Љ6q薟JC2t̩A )GɕV.c(+,~~ݧU$mKEP@5ۃ;KC+},}\p`p;oO,,LKB`=D_\ٟ>~U}H,57][qNF:ZN.vSR!߮'xyώ?kW~7 ;H "h  H@6V Ra2x!"ph"(&,:1p΍颣iHX0hYoA[o8E:lc346 ! qQyWi,\# 3Cl&8{v KʓFf K`dXܗ}5d::bCo!*?qXi.SS]Wǚ[s Auڈ_es]^ʃm66smu Y|s}6] ۃ~7Z 6؆+vh ޔGeWlo.6ŻݧD2KE1qѮ|뱿 $mU쫥oU2[%;lz:S fpz۴| Ǘ޹ޟkmzߙM7܅}9~o/p7n >y%ݘg5-T8i8"1KlVl+3: ["2īP(G=s<WODrqfU I.]N;eNrhrG 539j^36൳y(gq"w; Ry7#:ъ^4GCTo+mKc:Ӛ4;=0غ5KmS:ժ>W:ֲ5kX0ƶ5{_;6mc#;^6gC;Ҟ6mkc;۷ro;7ms;^7m;7m{;7\8 n#7C|8+.c<8]<"gKn򓯺*_9[텏<29kn_A=,oAy΂o<eC=^?7J _sQ8ѳ͚p"Xws#ɷ\ɛWo΋s/Z{&zя{M+umuh*r1 QH8S? .1/ͫ&` .sdgeQj׶w<vw||ޒA b`di-h*|>>Rز b'kӦ.g0g _yqݭ_蚴`e4_:@ Q I_۰ME2yq~!B XAI IQW(P Ue`! z=I~ ,_u~^e}ɌɌU ن:ŌV ߿`ae !(ٝ%Xeb f#[ @r&jb`n v1)*h+C$!M\2.'pb"B%b/"*h@/^C%3-"gH%xM0W\o.b5/]12E6 zBC/R9 3zQB4<z1^66b# B7.LB#1dڑcY;>94Rca>5*%!-.FCf`l$K>6`8>Mj?"pEc-cdHP*F䂀Hڈ%| xy!V@`xeZ%%Wr-^]W[eeYzj" Hq[ pc2cBf@e:cΛd>fc>]:xt,* ajBQ|tAuD,&𖻐BiuT&ojJGl 'nVҽSS1cXt틌 tjBg# mg jXsrgEHbw̨g6@u&!bKRK~{Vje u](fmr[ i'r`feehυenhѡh&N6& e&6] [Jg\f;xBjLkܤi G*Ř⩙¢|r*$]  @j{. X$F͗/H¥kö`gG *8w^BmXM2H*_8jɷXJB)XIm_Uh_~Z%yhW%ƫk% X_+(^ +[yZ~!ۍ+1n(兠: T΀:hcrlc^&NfӅ&E'h5KbGKe4 ņącRpX!2,trNїY.lmO^B <eU-vRy'մU4G$퀵m&ƫFmࢠo^9֩EGf3Blnm&n}CۺRhe]Z_ Y*^]'Y.ϝ.r 颮ϝ%l֮ l$Y,)b,I Bf 4q߼))i]6i~g+ݡ̲̆2j J rp˙/ίԪ:qZo-ER)Io1%mL?`?~Fв~クr'L0j$0ʎ6SkH 0p~k*ae%1[3,MY(Zή T*,e1O \al6)q7ᛒzbڛ:]q2ʰYP2"ì mF J˴0͊b*5drD*~va=_d& ضَJ _p&2iJ௛d0} +s&c/ .3&j"i$#r H26V4-3'3rSs)p h>۾1v (@tnJ1ϝA%Be(Ab񒞀:r@՛"1)d (Gc6)" Q#ۡK2r_t,ptV51Mrj0PoAΤRk1.Dz0Ucn:%ۋUWef],Ԙ//QX2_)]~k([WMpsee]Yfs1C{vesAqFF{\Gے )g ))nh~5q/o}NT'Ej%5/3Et߲R5U tsLw=fV WYu7zw yRaA؂j@'Hd7,0^XN|_3]#~)`C<t5'Mx7ݪ .^ـ ,q&e+hvøjhoqﺸgbj;tk/ J0)\sCtõtnӱp{4K,@ G 7MwSAYW3*6иT}Ӄ-W1s>e>f==eF@]fh6?esg9?dE;vԭt6r@Hc/2"G8e#X@ !bUMV^ J.C tMi|o0AڋH pXx0XPȐ$ĂZ\$L8K\l|ҫܫ`<s(3U,< S䭕ʄ[lk((ӞlDkxb׳ 6YT..ᑐ (e"BH 4pv LS_=EN,/}ڲ'_.x3i&P'"J3ra%LlN.^]zX^h[ְ-^EWZm`A#յh:תZ7׾ʽ^4+UΝiB hҥMC5>DF԰(Z #B^f[ 4P`tIyns(+Y$ɺ5o2 =՞xJza?9q}:ƥ/:O\%)#= כ 90 +㏸ԻSBPAbr4oGoD;8J>ޑK1=Xtn{js0Č-3t1353kM3=35SN, 3ͺڰPoJ{ 5EEtzB6B[GTKe" ) F[K ?39rf \ 9q$!Wd fV:V)G]%c1f)odU [Q'Q*A f2E\tgĂ}g P sJR[rǘ֙?Jsx[Q]|q)7_y Oe]Y-2>*cm+@9C)201dA1hx,4֊3-Vi>m芰*}QNkQK7HJՊTS"&oV{X fG<v*n3e7G;EB4Ssև,7=vQO=g{-=G=7{*^;ZcMXKgGH}ߧ=ձB_~A`8N+tR^@6ЁiZSB@,\7`5񝆂L-^$$:ZɀU¿Eca e8C֐auCb7Ј{`HCK:\(VъWb;C.vы_8F25+@ը:эotc`?*Qb9;я8HB?,c"ۘ&d$%9IJVҒ3d&5I rei.9JRDe*KIV e,?JZҖe.kJ^re09LbӘDf2Lf6әτf49MjVӚf6Mnvӛg89NrӜDg:չNvӝg<9OzӞg>O~ӟh@:Pj/ _AP6ԡhD%=pƬNvԣiHE:R{eAnԥ/iLe:Sc< .("ԧ?jP:TBNӢ6թOjTУ1A SUvի_2noo, l:Wծw۔lJ'm.W[KX6ֱ,:V>j\^+# lJ*BִEmjU(|e=ik)*􍗲&(NN>'7Wzփ=SNs/H}GЇT=;7;C[Oz?xXh :s\_KvT̗KY0w<4F>r~BV| ȯHܻ sj7'}З&aNp{ዬܽ0r#\R`/{?Kߎ;ຓ˹K,=)S# ?3p@ :p+ >/8:@@ΰT9Lp@HA{@s{?AϠ8LdAuKA$!@"BDªS%<%D":Bl¨{B %B7)B#“=1A)B *,CkC,D+TA;é3:d@=;{{>˸ɳ8g9DJI s ESE;?;^lAC5|CF(,[)$dfÓ[!LC(<ƯkFhmF&Cp|F/|qDtt,G6u04GxFzt?vF{:|tG~G/}$|ǂtƒTFvTFsE 1;k;s#D/9Njs?A}q )1SI;EGȣ|0;EDJB<ţ͛cnDž|JdmȄJBJªJ3olJȲ$C4Bcvc˶E|㈹vKTKK˿D#3̹˿LDLnjl̾ ̹|ü̷LL\̷L M@CJ|8߃T@،HIϐI-@4E APxO`ݬƇI͜:NDZƇLʂK$?4M$L=$LLl=OTLʄOOOĽDPLC|En6 %6{: ɐ4NQD{7M|D컜[Q7ţ;8zQu:ŌdE 8Σ?7u'ۼL?BZBѝQ/H03QL:DL \S9QK̂, m)݉s۹<5JDA0E;[T]WRuA^-V[VKUZ[%؁րMXԂ}؃U]uUTmXTXXTXTC كEǨ4KJJJʘʙMHmY}ٜY6uY2 n` ` ` ` . a&6a `^>Z*Щ]Px%H<}Y,N^U&IӢPSU %T}Zorb}./@|Ҝ^cvf6V89v7fv(Jǖɦʶ&6FVfv׆ؖ٦ڶm>J5# ^vhn#ʀJT5 ׹nv.!^VoZ;nvy5=`]oC1ʼnZ{oy^9pNp)o  pX+jpk]pp\ߎ!pkn/qn)q/q nq6xr-rm,%0?Wr& / 0X p sXc;Z=7r tB792&p ;ss50;@HI`xR>?oNL'/[/8s=`+!tboF0 ,vn)!o`tWs@/:澕6|΀w߸.z_5?v|wy|wwxx*Áxx/Qs TiNɉsw&)!Y#ɘ縉8sik'cgx?&aiXYzyoezuwZӱw6rs7-wqX8{,w/猳0wƆw_w-_{|xQ!$gO}W7p}X.x}TM uX^@x Woi~@x#Vȉ8^wz뷐٧VA"7їq! @H`*8Hqܮ N 1J?թPu0E@7Q(rrA7x@I DJJ1jTZ2Ua4V0AQt!]TE`ѵp V̩e+NunT^=6]$p`U_uOlۗdD!JNZ5,¹"P?QA{H!7ƥl6 ^轉%;'Q""4D}Z5֭\vE6,X^Ī`ފkFt;8(\6#=. ).Yg[V!#%&GV!* 6k1ŕH@5 T+V)X)b[{YoMAFjMe%0U|pw@P@BuzoӤ\T7ӺkJ/tӷ2#x%Y\jm`0vhW +]( mvUr$-7ɳ̳"\5K^gҧ̬ɓ y;P Œp ^U`TzHKy£wFȼQ#DS:ɲ̕|)|Q;TRs=Jex.Nt~l8@VXvp[֠ 6s[d8LW5@0H7m"Ŧ|MvBqٙCt11((O`u uiP\xZ%Ce*4nظ NΈ!<5=Hj^[T0Q}PVF`ú,DBPQ2Mn㢿8otDhi"gNALz@'=:0=;C>~VI.dTyXzLqە*E҇ O@GWPH`h<ngkj"0=ҊhJsZ9nCyo'RVa8T%7GEaԈT"C D^HC1: L5xӀXqm h7VUc4X%h'Xn"*|,$1(3(ML*r988h=)4 zGt:DWAXڐ>H;3+mY8_0ez6t 4TA6XTX"pEEtQH8 'eP=(FZ~bgnTcmb;X*%Y2qH^{=fWX;XjC 6EK6c衈w4zckv(q)x4h-"H7SƊ8'ӌXHLjшX<%4x2ʸ)hꘋHzKY Aj 04JPi|ȏU8b*$E@+Sx tDw0TWP-$j)T<5숍hx4k'<)i1>iDk@9X9yLPiNٓRI\FYV C‎刕AiFp'ը҈Vp%!̃}y{i鋄 Y 9 ii(4Jd@)K%q;vy'DCE^cR-ՙH"!D"ш&Y;9 7\0 ϩө 79h 9Y≝Q 0IyY q9Jʠ ZYj J١ڟ Z"zʠ09"] hQc%@%b#D")?s x=Ԭz`9z>=PDS]KHs4VP۱#; k):j[-]:imo v˰g+a+z;e{K^+{k|k붎k=˘霘t9ߩk+4۝θٺEÃEW[cx?;DE8ANlD6CKZtl%hڛ٫e){kỽ ;ˉ; K8ֿ˽, <aP޶iȓc\KQSb:%,N{KC:LRֽK|Yı,>R:[VZG)֊`;6^+Z<& W"8# G=:g2SCٵ'WypkrKqoyx+=׼ZփM؅m؇؉؋؍؏ ّ-ٓMٕmٟٗٙٛٝ ڡ-ڣMڥmڧکګڭگ ۱-۳M۵m۷_d?qIk طjv 6XU΁#ܺXF1}׶wr8jCl  xtpr'Ւ*>k MdiZm d4 o-I}`KӤ4<Ʉeh]MS*rn%}08T7>} 4.F7l~[n/~4HcK@M^S~/2= l >\҉.m7uyj@@K C'RScTP`ȫ^5aЯ|n UG^k>6~{ll+A9>Gž+F ^&"STՁ&4PGCv>$2/JmN~2I})РjКp!dXST?Qf2TrnP-s_$uYKJRT% \&E具r/Y#u-oji)!/P!ՎĀj%CmW=h[;)${N=|B,Kg cB2 4|" lBEl'HN1T <=| j> /,?4rCr#Qt(9= /ļw9-I4ԭ(lC޾!T ~lt#O6 +P&BEZSI0n"MK1BkDmĂ01iodGٌ\!TJt?4xb+N\A,ŰYBbcrے.\ G2V cξuS]w1)MT8 '+ZؐZm7`jhGd)o^Ŋ׵<m`~qLH;~GƽjRfEr.s9dxf("RVn5,}kt5+5w[))ث+찭VM*v]X}hS`FC9GŤ!w=P`(BŕTq .jV 'mwsu)s."j5Uiqkorr<0!.zLʝt~QV !PG5Meh0RvG-v)u!{LƆe\{#Wa m{RʾZT lVE)<A ! 0BBYR˦Ukx#T#N2u幀 r0.!WX4bnv `" }XqBJB Aax*bh 5@LƶV"'  KƧ;1e4RP^5h?G>iV:ȉ|Bm³#GuT&ZsB#i41IZVb)JlC$ BVtL\$5WPHF,`$&*ج%I9py/pP+%"-s2Oh*NָCs gy*f լHMvsվ( t3{sO#g:HK^d3dvpm C'^v&A&YVl29Q2`Ɋ(N1(<3@qBҝh*? O"=dKtcTWr qMt_ZKwNZZ}Ѡ`B &,4w21\Mj*xFf N*TqLjlOI 1 ;*`5K7toތAVkn<]BteTYI=*DH9^p-m)tIEZl9s ,Fxy0AIv>A-\QoX+vea"l*#iz" s=|ٺXK`5XNxWDvϑ`A^x˯o[ym+μ.YvƍapD/3WnJOƊWC:‚?xdY'eX1iawo%c7;k>.^ȗF~>؍{@!>gF)ư8c+34 O;v@P oy4pYIkey3q5[[^4`'C0ٽsk%!Ӛfz2 #w\QHQBAh'ȵ;F;+N}j1{:lq+xif3+us&7(ɛ0ݾ>RL%vu9nlSDS,q̱tȞK355y]n9t h!bő5BɥAz=T%;Bl@/^+ǜu|]԰DBu/:zBJ:& =g%V8R|f:t/=Kr([jHC&%03,r.خX8wX*[*c=E:;3.Rh>ϸQ}sWGCp/& l WpdNuW 7$>q~]dFt&#!6A.p<C J+8W&-0oUFքoЯZ"fnd`4P0+ۏOK!#iNZlnYˮPд   S  F P̌ ůF fpaQG2  ЫPjGFP. @+!R[t)iќ`1 5 n>n7! yQWyϒq^,.ت1 !6QuED1Q R  !R!!!"#R"'"+"/#3R#7#;#?$CR$G$K$O%SR%W%[%_&cR&g&k/#aLtD,U'U%@[e'm2)$#`T q8.(\V1&,2!jNhʸhIΤ'Ҥ.,/ rm %D0eƊ/00'2Q0GBp;Z&15SV$RR2+4Oa 5%GʑvAOJTl*3"ʯHXps H7r|: S3ՆP*ؾe4mbrv9aoXS@*7_Ӏ,A驺`$J?=q8WE@5@=S`~NJTe\37oB?'BPdS?QSEW1D犠^0b}Ў28iEf DGaFpL@Sf.xhY#mbBK7D|EH%X$j ! dO6D-IE4KnETO9CH G5 hg\\qJ! +#X3+X-X/gL/aQ /U1LU=I8:Qt\6J*>  <5A$UtQJU(H';^tLfUI1xU'zuO]B|G?8vD2P^0D-Ƅ9BERUb\ oD!fХfJb :2:jv ^-oL*opYA% d`j,gMlWKmFa@vg7B ZЖ@Ҷ0%7l^bTIگq?mAeNk&Hu9xI}u eX^vo .(nmz04'}'Sp\ rGFF W֋tXn.L\oTd b+yif6~}pO|hr ׁs H̶І9B{qNTWϕxdhu(Z(Zj[ ´tSTUU/>HNEI u71BdXLc_H)px?_8& X*An! "VxsW4h E'`/+~릇r* 0)W0u~J 9-Vy8w>Npn_ XV.8Ga)X|OE}n8buY YWxql;pIsa$/w[ c>lLy;!,MpLDD8>d/(lw ysꚳv ʙM'XUJD;# TD3օkUG5_ya`cY̓O' ȍMtK٦y8k,1ah7vפ;#'[ZE6gEg cC f`ckMi ì˺&>I`i'lM"*5MҶl NAΪpvzD2Ԡ՜AxO-[FU,ي42ҪPbY F!n팋>瀯,_HrӞ q|e ܢ''m͚reYPsONIzzc;JY6dٲM912j80M|Q[7pd5W;lN!+\&5,z:FzK[{5'8uׅ65PFXwwһZOՙz YVDl0lTv(60ha +#TʓȷƋ|2Ev0$4-Bx7cAPr]Ob/7 l>%kDTZ;oqo f=19*Ns~lnha5{򆆣ET[`8ŊwlCԲ&,Vx3S]`1NHSJ _O~yEI̎ p5:k#UF'5X?T'U,"ՙ!OԉǾZLWb7xځEJCM bz RhFa;B`(ơa,%4 ^()6k<7<.;>?` a!bb"ךPU@E҄E$[Sdj[fgUTX*RX(m@Q233(rݖ7x8y9z:{{W%T3RBju00VK_0T JzrD\vDN"OHEZ 8A9ƺY|'РB-j(Ҥgx#B̦dj`>{* [NAƄB!e Wy}6BܕHZ:jӡk7]`#*m1Ȓ'Sl9 S RUi+|\2Qָ<[$ƵW%޵OA(nxGpReی0:/s;lc4b:oUGic!{[TajXa^G{F HIZŔR^!!8"%rhEX'AC.mZbEZBQAѣ(}QgԜzkUV4Cr› Պh^YJ0&6⣉i&mf8y)E]V= JR@c}] \a7(YQdThbag]ڔQQn&(*(`[b@|f1+JRAqfVUQoa :aƁJf-hNX`}zK{fAH{/ //t揽*64 AzYUfp1ܲJW1: p܋äJ;'m<35|NBr/;`\MءmBղ aUݍ۞Ak,@ܵx-Acʦʌ3u}7CMtduH߀,`IN g,:~5yk9{^~P1x(G.V筻:_6\@m0^؄X;<+NCꥺehHgHk=?! @]_{>????(< 2| #( R 3 r C(&\BBh*tQ|Ǖ8dw>6m/pihH<()R_jFH"Ҳ\U+WӨ5h9O F$Z wIH΂FV#)ArǍl: EBRTDlU@w!GQF0t HiXc4BD:0[/^ Whg`4ѧ$4Óe_%Gw 3GS[ 1acC&膱iQRY;E!?Q O&>VQ&'"GB (PWJFE&{Ns@@]ć.ژF/JQ{b()ә>0SfzMl 3QZ削\Bհ&ꛕ(Lٌfr4*XN3hiQL!c ǔ h0:QJ(͜D6% +b+V6S)H`,<4Z.p5ZeۙR+9f0C$c+Y Y0.ԺWC}ȔZ]om.v׶mhip%^#oE#;y=C) \u U/KtA9+#,٧۴. e u CUq†#z,>1fXGh WW': ե($!|pjٿAq5yP]RrC b;%< O>e!VF,99`gy !R~i^[,h;ڄ脸gzaGCĝ%'Ӱݥո$[*"WC&;5\YzMIQ΍b'ts=f m y\nJlH1lxֺfڜpD Ŋ "b(| 7Bi&i[4#9@[R8=h{Yگk=o3#*YpC?Pz}ӸK֍ѸWoM&?9S򕳼.9c.Ӽ69s>9Ѓ.F?:ғ3N:ԣ.SV:ֳs^:.f?;Ӯn;.ӽv;~;/?<3<#/S<3s{={>Ӓ??wߐ|I 7#طV,|, I Ti]H)]̟ߐQ\}% ^R^b`~Y Ad݁&E  x-A)  ҝ,Sҙ K'R͂+QN/ |y/UᏔ>޿Q_] ]!Y8M7m[AGdJh1 0m"+fj+"+h_<"bʁBC Em#BJc$L1Jl#n\QY+c m8"-f\I2;N+HN]‹UA| OeBP} h񌔩=9Nd#=F"l -R iHU\ b#hFȴQ׊Ec:bdv =Y*@ ,@՘|g鑋0DA:DAa0T$ Ȍ OO^dF-!Q!_*%bTn>q-LZW`żI3Ee=NH< >a;bH_H}bDK`VLaBxy DUc:&d :n$#FVdeEI䠙bjd5XĔ`}|E+5ަ&f#g[Zf<2!#;ezqFeĘǠ%=$I֋=T1`"LvXƀd'g>'$B*d6&GgiU|x bPg!pǕYōƓUQ3́߃BIzR({V(|dR_Pf}DٔKPKaKC:i6V ܰ/͡ -sA>(A0 .|R nN| hg'M iꛃ`G8镯M%hÌ=Vnh)A&'{Bq٠ -FN-V^-fn-v~-؆؎-ٖٞ-ڦڮ-۶۾-ƭ-݆-ގCRUmd%.fb%Cr&(.e4R8ZB62k8@'iR+R6,łul!ulau99:Tr 村OjG&:3LhPb0939~.Fl!%RVL&rcc(.>Vܓ&VS%+qM)7ײ0>>2@3*r+ӲAsAA+B2Mj1?CFNV^fND5)Y8PuChr= . bg#6*Fz[gB'&PA)^ ]^*2ĘQFT+gw4D FaKLL6OX͔43h'/qpARRHMe9@k*i|M4$5@ϮwPH,r֒JLi ;o^$BK-R%h;j XD>*_+5T }pdN\r͛2*&:2ֺ|]˔>]˟^CxگwWٞ>rl;J>ރޮ#AP;kϤ,4;Ljyp:PB ; Zj@sG21Q ح* ) g| $+IL=)_z2T̀*+p41$`Ӯ,I)*7㴉>ܳB\#sLKIEDJ - ]ᠤ3T6D䌨0N5ɯ*@O<"LMJnMTlRHeeY! 1s :xna=U1kKP>KrBX&t}\wI[$*}Uz{7OtJ jU 3ac!-&Z35~ K8vU^Ŏ܇$~@F:@X.+8\X!fWgfiy*\/;84fR҃VdfZI@af lRgW)n"߈0,Hlfk0엇ڧYYVb /F4XC5̑iOG=uP'L Hѡ`;a*q]$\&d*Lxww_`-PΊQ, 1-F!RЍo-ȅ41)Iu,>8Ą#a5Q(/%55FW G Tj{$P'Pe(H26oY$!xEDr4$7H|3P w@U|eV&Of)8MjVYs2E%h@ w?^6!.{\WjCy"5˥sldytb4G>K 1y6NiOz9e)G{Nk{vww#ݝw{?x)9|q$^|እw~`w}E?zҗG}Uzַ}e?{}u{~?|G~|7ϗ_ޣ=6*oOc9G+78߈s8Xo`C_)b˅Sg4?/` -@h9j7$T> @Qp@n&+hA#xA\A"p?XqAm? !Ax/K% j&ԇ L0M-D.t$ۤ"@43<=/{$?rȊ{7CC;26>)A%D8l5DD?6|BGC:3DhILJD}M#JJTBQMDRSkHNķTlET4EWRtP\FdC\tQXY$E/ .l?h1:,1rFK[:AjDT1ccd,x*ǙG%x-F+lC`EUE]7^C[E|GyG`GwEZlCC4VȀGDz4@xH}HYEtLHȅÐHG#D75weKٗK9Y˭ڮˑLّ٘ȖذM[Eٯ5Y?[KUٵڎۏD۱5ۛ%[ȸu\Vt(0%HGDZ$BXZY$7=]͋yY1=ە܂,ܼ \]-[=ܹ]M\ ^]]ƽGt^y^؍^^^^ ^5=@-_e\= B5t4Z5ϙ-ϝ=]u_?Oe-}ݡs `=C+VkVinS \J}VTa-֨5 =O$AN$Oq%f`# aMKx$τ m09  `jxvv)gyS@:Ȁ=.w&h>@hzBw`~&˫N._!,LXfh+aC)hVj3.)A當d4gj@nf#(jj8Mz(\jzjj6fz6#꫖淞꠶jn&>` 3` + ޸(d[7И alklv NVm2(W3nxڦ>>y܆m(N΂m&k#`ymZHC˪ac!(5Z5B#+t~o&vA6l"2mjkm8#p p$`p,pphngy_.>pC#q#ig,>Raڒ T5a:8 XPK3> 5#ʪ4wq0T+ (1 j 9s 7yy.DGC&qA6?hAW#xm86N% iaġj!Z-u*V7zS`?ĄS0t'pNv%m6n~sg^pys'jwwvsJggvq+vnnPnϊOyq7 OwچsWG'NyX-\*u{7Þ)h'1, _׮v2Wڎ2 nxwy_{qowyjeJ#V5$u|vo3/{&nfWI@wJ?+Hk@گ} BnGOxu|'}oho3MP(d|q&P ;*x{!˷xg )r~g)SFf_tVN/=_}  L*JEJ,=m79zd4D]D Gfʁ_%rX @wQP@׈YAWV(`рiFdpYk{ ,t4Oܹ$A Bp}t# `QY`HVjլ[Iun{`sMD'~Nik'l"U0 +@ʍș&b 䥁(7p5ٴk۾;ݼ{as yw iXSx9&Fe)M[.!=SVV0_)!tLV$$p k,b@kG4AP dGl@(H%_e$$A_xiH"AҪ /p? / $tRBqv WLܱ-\KrW¡)+CrLr/Q2͎Es> tIN vJ˷|eE.cV_roNR vbM6 LO=O>yʼne>]vmj7D xNkYy ݱN6ܻڦx>wJ ,x,yzOy1Iqvn 4߮@mV3N{O||/|?}OO}_}o}KO~柏~?ϾߏO| p>*p5c/x;Ġ?RL;2:(p, %Ⱦp4^p2F(*KьbT49@ɑz ,#%qMJ&Ry0ԼWbU7LԢD-j ѤrW"Lȸ\]*Dwt+-ݳ,D$إ7Ja ܉@/5b=Y`׼PJRF\@Ic˚SIGPm dS.VFm M㲉ua8Wc B#Y:D3Wd^{yxiIK"v;Y@Vf&JrjJw#j&Z!5:v0 tMiM+[i}?V5 [;Ji c <f\iX9jx%Q2Ƅ[Q>uJ]+n?Dd*){1VKM y,}Yj,3-fNvI>U|\5[(W̊SSFln8V:äWP\'9r S4xnj< Q n{.L HpS=Kp!Vqd-6O|FC|崹{"_ļv 9o> !,+  di@h,oθiyO/_, SʘM' ƨ%a qXL!E1kbYj1zqs?L+"*$^|l{$_U"*#/A%#wt* "~0 D$* Q$H"rȭ, b%@5u;ex&ڋH"Ua3X:kƹ J4l)Ra6V ɒHB! ,-  $h쨾i´Ұ]nQ&Q b<`ޜErzh 6%2V֕"`Lu)0u4AJUz<?~"8#'5. h"/gsx$( t>S>X:c!! ,;:  di(lۦp,nxN۵Ǽoh @_{ޢg] ҭ89[aSSD$jX5q#6 $#-o$,L"X+]kx+#,Z"n#q Vk$" # Ľ^;X keOk"Y%g+#FYWZ"A7ʖ?}&`YG1), 76JaE{'_8`HkȂMԠbj(FsM)SKq*B+!!,g+ m diA$+pγx= kE KX3eN)krol&a~w_\XUQKGC?;66HS!! ,  dh,h+ðүn1'P$b0LjDV.x0R|Z;=OgB}^tMuld\*/"~<8LNJ@tFHDD!!, K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,,  di@lllt~r>EѕT.WM3}MUt4ٚJ D(UTT*"%qWTnt"=T# zO|b#j"* #K"+:ur x#j G$ ``$ž$yd*slc" %P{` &>&wʵ[)`F_@+=,"A8%1m` DsBX3&O~dr!,+  di@,kl4}r;k ]#K&Q,>C$k ڻJܫp)eqyHXM=0n$gz*rt_(*I*x)b(*%c^Y`y++ ~'BL( B'0"S&/ '% }#oKӰ Q#-"9o˓,q9d wm&.(!rp OaD!,:  dilp,4@,7R|3 .V)5-ŁX=f@v Z)FH zbLnm|R;{ n%&eZ[3a,Q(g7'A{"7$@$ +XT(}_M"j%HQ* C$7-%m+ j K Xk }2p c(c"E[B! ,,  di@h,oθiyO5_/ SʘM' ƨB1Y.F{JaT:* )0"g#kLoH "p#yHLD * dB|vFy$mF,LJ ,zô+rBQHVSD:@ϾP!!7, @pH,ȤrRh yBM'J6xH(4Zny> ~{''ey)*(H[*GYZj M mzКFG ^_D s֫Ƅ# C ;vM*T Iɓ(SLAA8'pȥjD`xJѣH}%)y EE#iAi.P 4a$Ѥ`B PTCV„G4ș n2B) Yp჏j4# a[.9߿qY_igm&J,$Mul/@8#qسkν;2J!*%6AۈMm쵨_ _Ed!@DqQ L2A3!J,K3<{x1Q("*x,E̘)Di`U5G aոD5<$daR_] \U !TYY`" 8΋C3P ΄!A;xsȁh\AQ`mEYG *g *=ډWBJNiyke& .b!dGt2pdfhV xlX"FtU:FUxB !*CZ@=NEzdZo֪aRQ8Z 2,0ծ--12ͶC)eԖfCK3yJ2w:zA* FKXch#à^[[zO"Lc]S@ Tʢ:cC41wˈ)ƪo C hQQ൯Q5Ti dl%^%Bf=.]`֡聗r\@_1aUKR*&FWckzQ!sQvTnWgjK;_n2Kp 䙐򣐹Z-E 7)Ь#d&\Lj|[;k7%!5Ybj[:拎Rz;PZ WՕ&K󲇀h-p{m_bn%0eL(sRuMBO~y=M61А'"w~d(IN{Ӡ^FMG#ӿ!CVհgMZָεw^MbNf;ЎMj[ζmhK lަAX. vfqaR"w G>~G7YWVxs8 Dë;)8=ss1G_9 ~9Hdͷ ud1I|4g+c+À6 !_c`b#q^E`73_09tS7hyYvDWǻx2}o~Gvf|b"=o.0ŧa hIU2nqnHQbzHۻ?қs^QNl~VQNsTLK f |d}ErnR{!|mZ1nۡ+K؏zG;ZAAsD?EGxaZDFEFeoa0)<"1#sXG(jрz g5 ZqN'`r" 7*4u*_W`wpo&kD82GIhGȄBOJR?h@XXXZ؅^H_W(`XOms7BcFSNwn7XFVp%=wKJEv'J]p_Ar1 9F~׆L/edȉ8f؄ȅxxThy'0x}ċD}g&"&Bˈ(w.xhxG#"wNu)HC; %"A8Ae@!4nE5uF7Xx Bx}lXX7UXpfx}<Ըyx)#6ሒ'54ً+Yb-19;I6= ;CXAy"HϸL (8(3i:ɕS^ `cٔgwZ ZT +`4uw8X_"z qԀֈSAKjNp^sO= 9ɍx=؇"6bUSlh>))ٚ8f7 Iy9p9 !Ή|!yQڙʟEQJ)UFjHNSWz=(P c)7UNBFc BAYS$*^8ZTvX*DeI2~RyBk]fnScJuBFcsKpxJЩ{t=i5yu"YʪwxIm6騗:o$'X{4Ϸ:ͪ3oR D6DKA/C^30cԧ=UXx^G^N%'è,*FI!ɗKD{IP XD.Xw~X倪w4u fzj+8Febwk( Ӏ;(%]Lkְڢ%Gouy|y煦v_FWPcw]nx^+9p'kOR EJ:pb'_IPc}O2!ҦCuwqiIZmWI Y`]qu*ؒ~RRX(1)F˯A#`]ȷ|ncWfqtY -5Iֻ`;Z,zKb۽ދtg:P 蛾ĒtD֧j d%;1evT fDAP <\| "<$[4d`n ;8;+8 &Ts=7,/I;\‰WJa {`4%)Frb0&PP|Fy!ł@IŰr$ĊP>bx PƦ)%;g%P~,EcA~E$(RhLXo熈$ȃly~lIA}ɉ_L$Ȑʀ\Ɍl\U\\Cya{%Ɣ\ ˁ$2:ltqgq؜ tp!r[Qc2,<+Wt,7Ϡ圫sqWA& T!@bw[br,=/ ~1ҡs\D%5D')w;uԜj|7,\qMgDO =Ғ10җ|Ӟ1L[;xtǹerv1b@ Xd"j!5h"@MiO|csج7nW)^f_阭uwx:|vmpcyoN'֎-~o7!U`x%>ƾ*/k)eP7ԹبR\gJ{WrƝu ZR b(2߇(R)Z`(䭭 fz@НZ7~✨]Xܮ+U(ݵunϭ{S| :G#@=z ~-EeJy:dߪZ Z(Rj7}()i[GIEZK!d&٪yD̮qMC )+Xys^wl#3O]Sc"EjU4c~8lޮ;~mʵ%A^:HXd~fE{Ć箽'_>Aed}ͼC?G{,82>PuIlCwA+Sm ֒pSD\}=-;˧|8Ӟ_=1Hd.3z:XͼW; G쭢=wA߹9(ܸ߫a;P?"L<֤:~ٮ{׮嘛6 XD֧낐j$-a$;~K\n4gJf" "/a:q z/?stoT+.m'Z#ov32MsO[j<_**FSVTi@0R 1d,aX@+I4p0NP+Bi5‰$P)JL[*2 ##OTTN$#Ș$ ږ48Nʸfh0#YE(:UkW  |%)-0?yR1TGch5s`ˆTUjB0ܻx80$E-WS@BTߐ 3z_> *,$-kɓ]r`,3= i5`|bέwQyĺFf幄k:\f:Ǐ!GӰ T  ЈCC o 3*H,QLQ5f:<<|I4$FíyNAFJ.K-̂8`,?{&>1H[*k `<%{B((PF6HO#,nVJnDML+Os>kv)SJ{ SӼ8B#jqU]yUR@k1(h pT/TOyJ$%()$LvfwyֻT5()!%=$109 $z#@@j0ȪJHXKh@e΂Jj 6A{SѝhZ iK xh)dQ8( %8;X(X6aS8XmhvbZkvmxE.7f>Qeo>ӺdGqWk`[.`\(+)pf B>a+rUIC~3rZv:N|/4dԚzouh?r :L͜ߓ+5osV]7zt_kM&9DŽxAvZu7ꛓf_~)i: +X@.230J wѡG@l6Ѡ 02lSȝ lW;Fp)t2Cs DHGhNF\ ![]D[K #ãuO,7FOْPFXC9o'bD(re# 푸B#R3ꐇa~ @Mn6)9,!Xrr+b%J8 R8Fr8U8^V4,2q/]FIDŽFy.1e9lJ^tQ7%H2sy'љNu38%;OʸSb=Y哟?jI h)9  uC!Q^:O^TGAR#5J )eKaSΔ5MqS=OTE5QT.MuSUNUUUn]WVe5YњVmu[WΕu]W}_X5aX.uc!YNe1YngAZю5iQZծuka[Ζmq[o\5q\.us]Nյu]nw^񎗼5yʈr{_Η-|_`6`/ 9'{bj& B~T J`pAM{¯L4ɸD,F$hau1P o#C̏k\ @LElPvEvhF2r/XMivNZD)fyNc4-+ŕ6\7Wi##gX>zF} ir(Ȏ!Ci0#vei~N.S87q+_ Oui4}VOk6WO'al w^QaI, ԶQ,ki /}`aYiBˬ?Gܐ4pŰ4h!NqGhѐFAq4]PtK>rK:m{wi w]>spGvɱte~™~ȗy/aG.vhs{ݗv"/A߾7w7[ğy@loXGtO @w+&oR*AĬ6nʮT :nל Lixii Owξ-?0 o&Pn$}%myf׏ pjmf֜ޯFl oڜϰd '!/ ѐlpNɭ oK.oe wPjmq  0/3q{VP" E '1߬P MPx "`p.BJP6Qm :OJEDErQҐߩ׌vMuI;Oˈ*٢N]QGp/ (׼0̌ұ >oF>X@=,QD 9 h!P 2 "AqPjmb!)!LE-D 7qQdNpD1Ød*Rw31qxR+r#s0WR+q ȖrrP ,R 0Ƭ%H-co#2ޒ ?pR#'R-m+!%x2!*o NC20mp6op// +ű"23o0;rE(),׺RӷѠ*dEH#ߏMl+.$  :AnNr- L4+0kĂݚ <EX (̸s$?Ȓp"$is}8C:%r(pSҪ6mrBT5t&ClBI-CKT84S<3;2$. ^t&3lQl3H 2 3a@r;wt5QsC}A$14,1 (;+DpRԼKB=3&NTV/s43_JlP45w<3L]A5tP3J3˳aOtG]0pLaH5#!PSOUP 1O3970.!4VrW4<,NY*Tm/7@R-Y B)u[@9C27S'[Y(pZ_r&[4\uFr u-5^gDQ3!Q^S0Rs!ݵR;oNvC7u+Bc]sUY+TZSOeX7QbY`TRM״_5i3kP,K1iqI]6/G-Q5+%_q/ a6na;mf1aE2 -W ;"Д-m 2<v\M4KC[iɖ93oWwqWCGSp˖̪uW smt5Vov91zy1(K_41s̴13Wutlm2~axrXK5,rw7CVD ,{0qz}m-ntspT߷U)O4%{7ZH6 ow5X2OvM@c1.zkr 7|Vx78 raa:''X{tpRѕNݒ}4Yt~7"8\)68' RTCW8*PX)]OQIxLiݗw#rs*u"@JXqs7T u1zX +x`K-!}?y6 7DPV67?#CXR@YmXyⲍsv}L_PYk \ xyynR}-sm nY(--ǦocLXR&!幝3/y5?7U-nKS Xt׹EmWYu%*K2T3y$WoV36]6!SOT&ԥ)/מOKv/a85Wѩ:yd{ R}J٩o:iX5Io5z=RF׍fИҪkz_[/2ڟ_ /hXw0鴤E k1(Yapng )u+[ֽo$Uqt pq]2BAwYnp/E/?@m(][xOuz謚ؙR)x'YȢaK1p(.B)yWZyIl{Ө[a땛e(̀T~WI  ԀpyIE/{;%:,1 )%'$@#⭙*)\YS]1A |zE\|ƶ/*~7ȥ,ɕ2|#*1{ȥ#ʽܡ|I \<͇%<|霾<|=} =]@F*DF,:=ӕ]_V.%.I>4=Փʅ(Cs(Jɩb0Hy8f\= Cvי]~=2*2]XٱlHC"#@& @- .ţDޭ@1FC&%"'B/ޯ}^,EZΝ =Ȓid\%X^<^+'[}-I ,iZ}-ߵݙ d} j"]o`׫c}DFx v8Qg I^'rXfBz,]^M')ޅsH߽x{  y^Env" =Rnɞ 'gY @0^~ya%_A+?CGKgJg dΥg}q\Ò6c!La(=Jr'*`u \f?.؉88`&]Ƈk J"/Af~P 0dy|#.rg!`D"g|BòJ:+7n078m<T} %-59=nEnYa2-^N*ʊ2* ^&:ˢ.JZG>3f~sWG?eCuJ@t[oۯru4o 0pjG41[S,w 3*,)r52;2Lr+3l0)zGK\ :.y{,9,AE]n|e3ڎwD`̴LA1b7y7z`sJiR΢gC K8#/-W2ܹƐ[䒇1ʩ+zɢKzk:V9;\5|W4'm)3}YS[J*Em4NYNvOgO T3t4(Z+aI 5Rsx夾)cqU;S񸇌 j/{[!Uކy) Bpp` KHUx†3 eÄ,^uC"z@ U!py7,^leTu'ĽW]qĕIVD-\kmٚjPb)K;GW@x hpl(+SHGO.|$Hɰ,/L%H@%2wS2/Q%+WWT,gyZR&)aKW0K`撘T2^&qf3T^Ԥe6)dvS&FczU>]ׇ@tIۥ!wpTԆ^K}*`*1QHiI~L>7OT5;mz G9Ґ>Ti3Lh4&=i8uL4,MN5Bꨎ% (kO+,e>BTr(ȀU:)~8 UjT p@+Eq.4 :UYmg:ąQuVLLhQ/ƫ jb6,g;ҫ.:矸$ ")Ř8*vtg\(0бZR)5J-cPeNCU\aI׵7ָ.ukb7ݮ*[:]Azª[v(8*>RkZh$ pYTw:f`*PMTq,5ZDdtm))J4b'w;8"1Uqފb{Zr bBPei9B2l##ٺAm'C9R2 V2/9b:39j^3xOˬR޵9HrC!wxě^kx-p nV `ls\!W[ro5 PrV f*E)Eo^nRqTOGK #83[IR[uc> ށw~ K`A b@lg/vU] . W~!w )ܚDL|+Y-Tov* >|WrۡP^?748.AdkFš]` ݀Aܬ1I 2YD`⁘AZ`u]ÏJ ZIx0Aq u@O]T)2OSq`Vt1Iz! uJlOaᾬa Խ[a]&[NO^ہGWY!]<8}U̜D,W8"#>"$jP&# $bE$"$\# N8" )2YuI ʺq6I \Ѵ;, ~l^;ql6j*ժ`8qN-mf-(ܪ=5_^@5߂Ѵm嫙+XRZN^ myPk.n'%VTXO 诵ފ e p@  h:o ަ&L7~l~f`>nا!fՍR&zibU@֘itр,Ж!fFb2 6bNEQMXѥQ`U|ϲmOpa d&BpA|cw S&I~-o,gN~.=2q%:q^1F5q>1. Dqꠍш ߰a1(v(!oeAe#4.!# Â~")ߵO& *-h]̽ "&N q2$r=)˖)>f#Crz W߰VM2+kr%Ϭ=/.!bY64{2֚ j(s 23mAPQ^(߷F]> ʳOsK1v1{+@T:(jhYf1h=,ۈr4~} ܱ&Ȟ-ha6ì i`f *=3SdXEpNKg-{<zQfհxtc9lA3?2X;AK`U&s3&Sd hNPo9Tp{5ƪ,ut:ͳ@_cWc/%e.D}n?f3nD lh4FeQZrIGeH6.숚ktvpp#WJW2?3u.2]ͨ4\7vX`0UhfVGb7nfݡ`pG{-D\J8D@u0,m cˣ!uLSf/ԏ87ebM4S?@OZ^G6}n$jOx?s6i߸w.i Ht+ ChBy'l'[ 44m籖߱@ 6I4Rp9t X!ttKPӓKUYUV^ߛ'DFj 09V;m m;z*Nx4s(]W?(1x(G:G7-x(ϥb BV%/6:4Un>R|?g1gZCniOi/&z8env6ĦtpLr^)/ yg2s6D(py oA5UKȨ˰O|/p hQx,+[&6rpлM?Kc|b;ik ;?{@s=tese?{W):TrGk!ؙh4[,1b{?i07o{>{&GJċP:b%/D93ݓӹc3 qqxKz9,!? D5PwP ɗ&OazłR=Tqђ61鋾\Ǘpt`@;jdA@PVK=gZO3SdUgƙƝכ4es{2/@ !D"-EMR)^ JB lKi<_0rN# [8 XP(x˫sD(Z#$< #Dp3ptR+R\X*DJX p}LŚӫZYTot&.=,#A!,LqGt.”F|Gν#)ѹPϑ Jl,-/L/ L"SMlMj17:;A` + 0u<-4Cpl7.KͲEMIg2 Q't%0 Y$e5It(fU ^uTY.xXe"SXt dn}%.7Ըn%TѵZG~tZ}ueLj0hVrE@&X/) Y'W\yh]k&GUI%7]H3J덦Ge/?o"X8| `rF]NvgeJg0ᅩ,Ds觊fJ= i /,_)K4JCmv[}-|[4 -oJVҕe,YHJZ֒Le.O)K^җf0{iKb3e2Lf6әτf49MjVӚf6Mnvӛg89NrӜDg:չNvӝg<9OzӞg>O~ӟh@:PԠEhBP~OoabC%:QVԢhF5=ȭ5FE:RԤ'EiJH 6*MT:SԦ7iNR6>ԣzN:TըGEyF"*IjT:UVuKMbSTvի_kXM(4 2SΨ7lAY95\XWկ~Uz)F5RA`)pld%;Y.`yS0q`W#^EeUZֵֶD [&))H+y:5np;\RӶjfvn2-oiۼ׺nv(FWmmek邷@vջ^7w Jѷ3V[]׿pRWXΗEr86p%.k•EwL0}$UO\ǎ-qpWusg{g9.. 6^s~+ȥ~VTw[ryǜ/]sɾ95uWp8/.RGy,uwf~v~y%}v7y!|{*o[&JϺg}YY;lKi8x{' {w+@&D~u  Jd<} 7:oxOAdn䛾%3GKupݓ7=CT=; 8ƒG> A+A[J@s98luF:;GA8@L TQ&tB((9B'B+B.8(tw  B1-B4;C,LC0{2;9:6B5B=B4t:ٙ;}+$;}#?LӷS>B;ũ+EX ܑ9丟 9Ė@a@A3k B9\IB@ ]$D`yIm,t5H*HKz|ȲG̽f(:>fIL=üLǼL3lLͤ|DML,w4|DFՄ?,M,Mδ͇L<ĕdlIJ3>lH#ĎQ||L\NJtK{8۱OΎKfI֜MߌMTEd|LNμ M\=L L Q  L LL$Q|Q\QdD%QvL=;7t7PI8O@t#:NOPEp O#AO7ESTt8 UO6P, LJܿ=ӳHK#Ε;9ĈD<2ILJOA4*-SG 84]S$8+@S`"T=CY}C[[[_^VDbUP@V[VbE֮\`EVg-V՛Ve}VhVlVmmlhbVaVsVt]NY} ELRSsaňTL=?HMϛQBu{@RB\RMSA[ůdڿܤZCK~DZ\ҍ=ڭmڮZhlGu]tH]>T]ܕ]m]^]-]=]\rI5ƶ ԌuWELISiGUtcJO-J[P[ QBm 7-Ta=uH~ HF VHֿ t`| J#.FaIf؄vaaaFb"&6!n\="^{}ʅIWӣY! [TdP'hh@ ԩK9UMܑ$S'_cWJ3uF齝$6a$6bBd&FdA.bC>bFV%VGDdIJvd!LcZ]BCDXfEpSeE'M}UB+̹o\;c}4eyF锎=z'~kSlCSp@N#`@1_vh3#υcĺgK#cq #D 0hKu8@Q X>zIv&uRbaD_]{yV׆\uMgv?RPuN׆c(tSi @tX/hQ(_a@q*`&tctorrnNw ;7(s{Cs!7rHoC'pyx'xH7t5W wr"A8y(_0;pH&k"@9{k6'ipPizј$zf0(AuQ J{_/hh _vWxGW8y$F|BOow4o͇ywG|8yOoօu/w Wiu+jG"TRaxVУ /mzW㇀ ~'}] u ` @$dH" F8BKdyH^Ŋ*ZiFz"i4QqdW!tgDT0 *:JZjz 2{$ ( ; + G;y@B;R8Ō@92YDɟ.z͓ ΢,u5|V7 Ӧڗ}( JR^9}uUmv:H Ѧay쨃P N87oQO|S^'hD7'}A ZK %R4 # T"X2Hc6 ȣ "Re6qIi֛@@#79l\\V"\%mF&pr /W W⧥AJ%}}w'†gQ'lGӄRsUbҒd&RKgꡔV)D0rrꧡy)Y &VZN0&1_HP+S+V!~ n[=H9Rq1k&L /fN>,fosITݲyg)Vk LhzǞh b,& )K^`(M,rEosfӄpjW[]xd{$2d}rY@#ok+ wrM7̒nQ oooK#^ yyN9q, 0>?y$N{"$IvPu<4am( |;Ƌ’2]6Uj] LORYrמobLGW"s ohb|YO5[Sހڒ#26*\z^JpܣL Il͐$&׈Mk e ۀ"2'!b@X K7u/SFw`nV:j#'U9:v/:"QJE g5bGeœea"aNQ h"F r,u &$[0BGMKHސI9s3o!0NJ^[mO_4*~X6}U'Rܬ[~ظɬ;x-N@sĎ4o1SԲdP6fM^,(Olۉ^&KCs'bNPr L$XqUC9` m/tI) *7 3Es$3b#!NDdа1^.K( K5NR=f( EBDIT)I"BPt> :hu+1 K]R rO޼; aP`H=ϙ\[ ׸22dl"!9 \CA0NF3 !i&F#lb  aWh P@6eY3 XĴpD-N%tND$ړ@GP8ZtT"3+"bmri]f` 4[[/grmxA6qjp͡7dmm  hkb 4 b;R8|a(M(AqMB>%Qa!iiMP=cZXjIӸ .}&?ט3WPgǚVaQSކTC^jH j&`яikyپ v"˻_dCθ:!ڮ"@pmĩ(#|- IЙf_C7]Bmp.A*)=soW* [Pxij6J.qQwxP2>k)߶8;Bt }(a5r \ӟtJ)MtE=ͺg{}d/;ApEIF 482@[wƒy +nT15i`)Sxs/떌~o'2aۦOΟ臏+oKԯk/Ϗo(Hh Ʀ(\Qr@ta 4!8}A GOZNuC5"/1tz75X=?t:Xs&~Bh -IKHONp| F4P|\ P(SH*YBZP vcOxM@Z46nC "N)Q6vz^.WhhZ؇L=<yf*҉f FUE1?4R;fV>*l^p^7Ae;q,dhvcTM_G+{GGXh?hZ`8XXxkӍ۸|؎88QS֘S؏8^utµ9a,§dlY`!ckXd`pye?S( 9ZUiА0TfTp`(QSI)ȌɏM8UAD峖_VY4\ sy0m)^D{PfbYuY4qc)^i)^ Yif)ș%i)Dyy٘2sB _fR V`IqL9BmNd28mLG *wƛu{Pٝ阕Xr9] iq뙋iw ` @ J ʠJJ : JРʡ"zZ: j!'ڡ@.j$2 ڢ >,ڣZ0j Jju"*D O{UXgkkeF-G FHLCjUtqT 9*I Gj2 **v xڧ:(:oJ u tz|@Z:zQ-o3 f{mbe-¥t+MDUuq6*}(pX-դbEM9ʬ[58^ cʌ Lo#HܘYGCu\ts(E:f'3٬D @]jZO [ۯ @+۱k;:"۰- 2/K+{[s`U׊yKkl@?։RYTw~xԪFEǃep ;/Ds ou{z۷%w?[|+$y0+F ; E+#K˸+kiUy ٟٙ˞I뻳 0դr\6Uʜ"5;lAu?E;KĚy+*; [iپrv˾񻟵Ck+홿 ˻;9 LY HLm)0hdj!k?>zMϹ$VR ', j<A,l[R|I;X]^Yư'caAeFZ5m8FFMu  t=7sqx~p:Gpɪ}]N72Jvҥ7%l ^_H zdI>7c*VHǍ,ff Z.4B7Ät,.zKVg:$H?># 2;>\#/EL|g ĺR z>U[H*^U_aJi bPz)>AtYg_)fZuw̧R=<«H!9SN.P =ݴ -* NAJKL=3tÝ\ʙnގ}qgZtC#mCnfxд5>"]"&~#q򗲈v7M@х_&`:B_d ZVC>P;Quxִ$68fcg(bRR(0ᡫ3e0gY|/,s s. ^?cD_ mpV=b/x!zvdARn0I'Evo}a[l=GT''GSٙ* * D#nhc87Mj'W OA=VLpڃ e?1SN|. *Q(fUI̬EDD2aZ y1H1:1Uȫx@ DQ2\!F3ϣnð+ 3a3mϷEFB\N+ Ap,@BQI)"i@ #kbB#t(*!"T4Uk+-5O( 25(vxRȩp.W!a. 9PՑi6Q%G iJJL&P|oZ8'͚~LVKݵ#i \&@q"jN$JsИMϱ2'6ӌ;"@*lXQN})E'`KZ&mEY :ˆ-3* @Tͩf](d chؓ@ja a{GVf t8$9*4F`*re M'IݷŤ͵3ީ+f选K5x~Vq ӻmFD YCE436s\`ۀ:74|4 ِmǤɴ3fr16$@., f/7qэ4KhOzEp z WR0r1I$pdpH K*<"AFH*GTD!Km$QAnQTqkT8HL47#RT8`),TDD vdN*WD)O/t1D r&%PO/(J`"CFrh,53<1ZKA)3H/Xd[19 8m \pKz3 Fd_%2ܱ2]-m"lY$[mfSIt TX4VmWżLF%HRfWa^{zFKn:~8֊guNK0WPAz՝!օl+ކ.@uqV&oM_L$jٰ^80YJ^ Ŕy9ZY g|{Ï0Amc FD-&:6eVfo Zy彆ѰS9'Ff2@6W>K@I'+-VLGCsk2?>4L&) ki^@IԬP`,ٿclnD3 c2CuYNߑ4K wA$3d\V~N2xm]yj ⥏6R>Dg7(Ʈw2:ERޞM؊&yb 1 blH*M!)^20[*&%ŘW r 2v?k#Usӱ'2G5AY~vO[pJs>yJ#cVn-wmxkrmLVLy[w'\6`W{XLsxqE;A#[f#8 ߏm$_$ΰzK|}uGWF`K-ع]Ajߌk_yR;DR9m7x;wu"}mF?/k<cx-[Nj\P?"S}39U:T)йQەDlw]^?Z07Al>Fnl~Hϱf Ҏn%|/!(-o^ _DQ<4͚*N:X[0+Dpiz.Yf Ť~VT@vUo"J04Pv0/휰 Ph, ͒+f] -$ wc ij0FJ_l{Гblio#+1X  -ay0+2q8=q;QbPPQ,:,IY0 .p{yQd ˾qǐ_풎fNqc^cqTO!Q@}1="q a0/a R  ! Yc!!"#R"'"+"/#3R#7#;#?$CR$G$K$O%SR%W%[%_&cR&g&k&o'sR'w'{'(R((()v@Rv:0 dehGvp*+r+R,ǒ%GY\/`8pͯ݊B .y,/MR̀Ҳxl.q6)Ӂ/+2+/D6рNk]d"H4/3TR5[5!230QW S4]*L4k\2_8SBD @+K" Өp%mZ q:P6_p9?9N. sots26' ЎS@V>>)`%zoIa=ts;A7޳9?SƦ=O:]TS:T??J>E5%BR8THâppk%OglCB:DpGU!11L´,mUTHjPYGkWZ ,`v2$^(x #6 0],1VL38d䰃pUe2t !Qn5۪ր iH*R] bcS6}.CƅMfcgص%Df7ceV.e-/v*lyT9lö{E boc d3F* FleL{  \3JL}hEx"F*Ui胔OVHq]@_U_Baoo&qw"ksĖu[=y2T7b-i:F @)yd+>t|^3*f0c7PNLFpNF u|g3ڼW?$YE9׸tu7P\WVoKgM ioB~UtIN\TwpGxꔬV}pO% m~,VfӼzyKo+,o`X.vi mP3D v3~,TXh-8.E2xL+WCWːfs5iXb?I1ȑwqbYjtFKv "w7yH>-8ҘCôp3\FrAY ڸ GHa~srj94:j]8Co .lPlt5o}v9-5aLjtbXFj3oOY =kl*wq Oh,Yu9 $x{)fnnYKبIPڗ 8ŢQ2s wX%{,^a+yX-|a 2S)z"ڕ6hLMZv7Ŗo Ҍ5)O:92'8l2lV*eɶ,,oKhW6s7P{c|Ӭ?ۼlL 4jv-nݚXTZO^9w['\Nf܌i/l=pcaOy|z4<_[3!KbdхxO u !Z\$pF=PǠޥb9+p]g$ci#m}3`q>tAɋxLe؋]P"$7MסR턝׍]۷ۭ-qO{r½]םaqk]^ ^#^'+/3^7;?R+z4(ϰ{"A_(-/x(#iQR^``/~^Z^8{[&`-3FA1S3sBAh<B3E7YC DitDD!EE}Zh/.OouC6u>*|CBn.:~*+8?@4=4q"@1| CqR 3 r C(&!(!6&+F`dO6(70`WD"Ȼ M RA|qVē--n옍>D4%3*#f)A>=C)(Ƹm0Ic Ts$$&3r,`ZJ2Pad%7UrS0p $?d#$GZ \3,paau}OB!Gp!Ն_`zOT>l%:IDO)[ɒ&8a'S3@K{Ld-쟫♗j* U'D#Cyp?)N1SrrD(F0rO?@4 @J] ӣfxVINe!v`!K6rQ( ڐ)COt`~DVy*HRԽ5RTE[ԴؽN5`bl.g_C+ZE ":‚LJV4DX R|-lU hۣRX72l5$\$sg4 l I&e(8^m}/|ثaȼneX˗ձMY, Ox?QKXj%_7*ً? sX|RvDwAG.6a BiQ1.|\)z0 5ev(z>nߺXvDU+ܓMAcr.8pkSXf>3Ԯ#XɬSKؚYbzs3!QDf oH[^RgI:1&(,4S!#WZ ih:nh aZ&w>Ua20Iu{]ڂZB aG6JfkC@(})6/h>at{b{{?{-3pw)6 fn ]C@4kMˆQdmکFi+KqtCД.9^'c^Юss[|k0?:ғ3N:ԣ.SV:ֳs^:.f?;Ӯn;.ӽv;~;/?<3<#/S<3s3>/Sֿ>/&(Y}'aeO7%J\gO~mDPۂ08=qLğ xXM_) Mh ؑ`_)nv),_#L`f) kPj I v_y0`)! n~~x E] h2Aq_"$T!4 T1D2%YL -]@'P,AE5G / ]3LU7Yfa@1xbaFaơ(dqʹe ImnGf2f4fL>#jaLkRe+z mHoXXm4%H|WXaD|29A$*_ ZBʔ bRdz'Ixo>UQYʈY1B5''e~'@zY#_nlz[}ʋ r'l |&9!MwerUB9'd( n( *$`DWdWʦJ(#=lyDK$~ٍKDi Q۫鍏NV Ao#&~&1d (>K>dv˙L}nؤN&yr E cfr9n"e !d f.U0э{Q® rpFPM }րXWJ嵲*!6`L*i& i*m qX$+M[εlH0ĊLc2,[Nnl~F8u'Ǟ,ʦʮ,˶˾,Ƭ,֬,,,--&.-6>-FN-V^-fn-v~-؆؎-ٖٞ-ڦڮ-۶۾-ƭ-֭---J.BL_&.PIFB.Jn%Tr,&pnʝ S*sF%PG9Znp0Aa ޡ(3@TH@ FMrN\f[fZ!-faDܬܯ X,,.%U/[L ci6gr@AV0$\ci(U>acmRjP #-Ÿ"#M:e6} i >Ώ Rd/Q:~MRAKQ98Hqtpߚi AL0 DDJHqBBeV Vp'\* WdЄ Anv1Y^pLx14XpU/\x; dك++,rr^2/-/ 3,301'122?3473G422r'|ȥQ!P jJw&kdDR4 傒89Ps;T aƏyV5OsB[B3tCW.?t5_3DGtEO4E_tFD[F{B432CXI?At3Jtt4Lc\w-δK˴4zuMOM NQK uQbSL[r xqJqk=r|rSzzǃ=|Z]:HMI6gsKEFw楤P#MNuS<:!6,2v*>$`4e4SeOK7xR6hCq@ ufaoQR{vSOgl?6kkWncj6gfwkma/& \LJx4Q"/l!f" DAqnw.Qֵ{ţ#<75&6Tn7zbvk 5#ÂC+ dw׶j[k#[lzx{y8Cxx^8w븆󸆧W3T883y$y;xN+ M,u aAG,J̌wQ5zpJxLaJss5GpmbO_ϙZxM9?#z79_K+K:':˸_zs/:SgzzO{3_={7fyzUJ :wˇ zxgZgnAK:(#{3|˷6&l&{q׃ʗ ƌcpxhdׅv;^L99Ssj-.ƙGzIھ>3%F=٤EZ\4bx] q:9^Lq7ULNkO 2&ޣ-&?pXO+s7,/؇I1:[9B o5'E>q;]][3~w|\m}?-WCx,ЭkĦ̡…r?q|<&GdRd6OhT:VWlVv_pX<>Zf€='t|\q@ABCDEFG#!9@JL?LOPQRSԪT3VS[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$X K A%|6X!0ʸG Y҄B`}c6C*Ir0Xd@fY YԨ6&sC `L8uBU+_ň=Zl&J,@$[D 0&O]wCaJERRAܧsm {!k;9a*N\ڴTVG\pX?;I "Pd!cq9vwPiSHjpƭN[w"An_/Lr]*c-RӢ`ڞˍ\0;N?@%B; (q>J|<, _o&J/UC1YѪT@8H< \—2 !Uď*EM 5pBIZ8/P݋W] 7B~*ߴ:-+'Ip @@)jb-}b^xE!,2S3\iTH۠<cnJ\w}In`NF%mRG*rNS {hSb|L"HZZTj9Kjtz SQSHQM yDXO(y[].q $PhdRe%WpoU6LZ@;؄4#א)}p Pqt+a5v9Wkj(Qx 2ЙL-skH_zT(ySJA9NH9M.A=JsB2sGFzDKP~aVQ/| @[OqDW֕ b +1Dd0U*,ƅ 9iلǶmm,sٜ~[Q#dOF](v.C.g5kKSȚU }Blx%lO# _vF%HW76L0߮͂ )UJڴ{M`; 3˟Aw|J@iΜ&REoZT$.|Y\u f,GMoD@`|k9`vTtrpEƔx'Ư~ǦaF˘Z$X \-ZINl0^J)˹F!Vmݙl>,fMao?c܃ABqiC_tV!TSoCw㌃D3@[dL[@pH&yVsK,ML7zr}4h~j'g)JKOvsmyR*%/( FINM$}9}l$g]UQQvS5|t{@o"ܾe7s'M4lg{]+Y*WE,vY#k,:D(/6V#VɥQz+〣"LY& F>D :ye>8zx+P˛kѩHY*D95r?GbtTڰU>y?[}0mS o53.,A_έOUg(V#B'8Η~zԒ^Ͻf?|'_1#˧~1 bھVd}d͈_GJ^' _ @@,@<@L@\@l@|@@ @ @ @ @ @@xb, A5+@SlAS 1 ɳ8X |A",iH_A%<l(A'B ;4B,BkH Q2&ԂC b+8m2W„BB8eBx0|BB٩6#C3CB,De.(Ÿ :$  G :CF-Ц0-I\K+C*@EU\?J$CEZLT!Jԋ$WD`< &\]T|);J5&pF^l[DBZ< +mԶaFFoTEq\Dq\s$t,YGw|pFtFuGvyŀtA+mG~ǁǀ4H+G}tȃ*,C`N`(H,H@LuPXS МXCĕՌYUI: na~˄aaaa_\,kPL̦a &´QR TXX` 8IXUO| UXRDb>a4NcWJHŀU7]BNMUkI\㚨V쏼H8vM9VcDNc)P@FTT`Cbd ^=FQeaP&A8UdU^eA̻bXeO(YeVe_>eafdb>fd?WNffnf[fgfifjfkflfmfnfofpgqgr.gs>gtNgu^gvngw y@phpkw. HD @36h ˧% <nhj ".2Y{қh>p5.*P+(ؙ'*i^&v+&|.j^&jj@yjj8yg$j ^kj#ky^h>jXxNhkkԣVhVyi1{c!!C ~ζg@"; Il]fľk@l@(lnjH˾n&`$n+kl콞NV~on~&ꋨ7- 5UV%Z aw;rb<&i9hSۚf$[+ln6jy>G^oPhJk^–q>f%o#Wh"W>$4)g2nHFIaiU8@6 﫴!!)0mȾ gf*V)fF qqyMtnqBK'1kOhon#n$prkL7B Fzaײ+ҏѰ)璢3C7?I@OU0@^Y_H'u&xtU_&o#wî)`wفlMwvNh&q$wwu/ )Q9i'N k+,Ou3mѻPlo;>e0n8jKtorOw\SoZ7x*0y nFwwZw?u~#zN#" _ [2 "fegv:8/oxjޒguTP_/DQ/)Xr?uGPzntu'\:{_ P7rURO:)w,+EWzon‡0Yw?*@liYt|?|~OǠ \{}$((x𐩘2c#@(BM&d:h#\@I(D0ҰxL.zn|N~&%~$!Q$#a!bWFVFPm"g!"FPE!Eat \YcBQ\Ek WBDi BRt[fbRXCh S`PI H B'QyEd%ץRF@D[Q$vTC WB֬\ aHiǘ0$0N -k³G)4 5A"nNɆyz/biR hS#Mȶ۷pʝKnX(U/X6$o(ʁoF$lϛ/)F aRീtX40F7$Тp Ш" h`WU^-"s}".JA$KH5BxuڅA> ޙhl)9b)8:qZ h8'y6-ħ9ҧZFnBdTxc)Ɨ%[f*az"Jv>өHZx9kk&;SEџ$( $R&#|x؜é֟XLQj> `lFkAԾnd An&݉Mx )k+fk\\Rraq$l(^,-٬ 4Qp:Ԭ;A(n"m_~HXg\!n?af[awM^N߱5B|n`wJ;xHAq{d$ppogwOn@TE>zCzn~;}ۡz"Ԝ3/37g"8oLP{gw/o觯/o HL:'H ZoID"w GHBQ>Q=YJPa gHeP]M,wTmH"d:|Z$ JnC<H5%q.Qa b;#U rɌP5@[@ƐOptЈ51ǵ9W@$$(A2d{D=rp>aFpI\p d*/`Ҕ*/<@]R9K0`w+scpLihH@)n;(: v) 1LzUC4IJX2P4Hdf'ZB0kl.~dme.8hIB) bĆSDL@T9렁TwjLhYU"Ӡv(qҲb`.d^TGAs&\r,z(@nd\h<2du}RK6,Aj!(t G%H팓R6a9 0U, + *Q3K]6ڀaE5Paf2 fXT ,4!2Hd!@n@k_;S9|,8YN,UYRocLEF٢ f<^q @Sb5q&T! R4Ofmk5cì 4rŗQjPeW`QZlu$uDFm>V==cB8N, -w]DHQQq} ]I׌MDqt|S0ڣ/7 3;s :37*k{=T ;\J;yKQE茁iQ\*zJTl~XueDm" /.L dsh_JFwY~^ē"<䁺S(6*Dj0@= \ 7y;0sEߓӄFE2Wf1p`Q(c h 5/dr*(Hߢڵąarw " j^h/4U/H*JE3`fQG&ˀui7ep3Ppr!/v5xue1HUdQv %Zh6R`yVypwywsU!zQWAXng:u~$y/֏$*Ru2Sچ[}*HS2F9?xdG*X5.բ ג--A^W .`i-Bc_bl CY fStEE9*C1{IsD8#Z%u '54Tq)u0/h w@g39C4n 31.QQ&w35hoKbKsٛzkVBhSt6esx<q朞;Y։W#VhxQUI YuyXɝ79Is9ҹvyy$<#Ӂ`Hv&"u S@b"Z`#C4Iiŝ=6\HM䒰5IDhGP:I%x[ `jIɔ~evn^w&wΩ&H&J iF F{yh*Z* Mhe香8 6H@! !aADXNz*Hcz0 (kH *("87QH#Ux I#TQP%%ipY cGh ]ۊfrK'n~N9ڹ;Q隋.;qqNn[nE2z(î*.>CEQLlI{ҩriqvC)j‰emQ7&+qTk΢!hPZ7ak?KBrx~o͋('~\-9 < obC[xxPċ"5WQ1;eFsN,~/;: צ'cHq͖i.v ^w.0l}?<¨β\-eGN'.#` %(ԧp9%D,B+ W|փD` *Blq rR*F\TA'O N'>;AVD&6-{"el2J¢",,yZc2Mg-!avZӐq 1~bXǢiR_؇8DdixaB؝҈8JZ'P& y`&\gPV`ƸQ&{N0["AFnBB[+b oQx Ίy$R N_5eP)IʻM&kJ@" iᑑE$vJIdDӞ4D G 3 +Mk63$yY59<|jGw$n.Җjd ԀEx# 1Kubsk}dSJRh֌0JcET/U(U:EN5֌^ |;M#<Psr.asLV%ly͊iQb *M:\,4"x|w$U="l[U1}D(4PJm; '4uKgKldR@3]CIVtRCF*J +!n]8׹5,A”n-.0 ԫVK 2M V 8H۴z1| e>CᤒVXs^=;EU~Fx,0 #! J-K#71uu1/w#UnC)#8=2pOb&3YE$w~lBoXH"Ebo($NY8#-&B?n"3B:偂8!#'AfS1e!hMDQkVU7-Qu6=UKha~hqw~`iX`?m>>PnRO`)pj!FYA1oapЌp8Qo.>\C"ݴ9h$RHFLC.%&tAQ`poBu YsAE|yka+XUUV\+I ɐ;;!e  iWCGFHxy%vy Wf0H,PPy0+6=I<3YF  B+\R Q RacPNJAvW6|GImGZfynȈke[fPD}c!8fh{GDYPSL9#mi3~agB )r7qqyPp$~'EILFٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9hy {@Py` az:%  Z ʠ U v":$') OW.:RaX9CaW6j~Xs1AH2]iAē?qa;VaQF0l u#d)Y((}NTȕ}†fZ./#j(]&ԍۢ :uڦjcuRꌓn}:XM29 ʩZժ:e{꫹ l" ju$lsJꬤis5zL#SD/U1S1jn:}$ 3.?(%WG09-ܪAB..)C5ˇQ+1$'3IBވsȱ!ګ:(K#z.+ j%1J +{,[ 7Z83k'O`(Fv% P봈ʴe(M\ (TM`˳JpIkl5scnK(Ku2CwzuEnyjt8}'=Zw<([:֦N=DtփmZTi[W|۴ok%N7C;$۫LۺkU {&q;ŋe۷>𺌪֋ЀszrK! 櫯@RӾ۾K ۾+k.{+l p[ ׻,\ <,<[KOWU*\UJ0m3V41fzY`Y+n2@t4 (|&Ml [Ql`\&)LlPƻ.N>@~<+1g-ǴNL~HT.L6SSnW\nMX^d.EUf~Q`r.onw>nHaBSZgiCE?'|7vx=f7ܱ,.w+e^Pz>~ꢞ-#>.>Zknx~Iħ7\|rWP"u{.Ӟ:m6v:}Ar .oNM~G~'ˀx^iۧp `8Wmژ;< b9ܙ, ^)i8: lN4_y?&;%1 0}#! X^Ȏb•sh.^?}AISdےtk?Y4{pnxz|~?_ Lu@.?_?`Pt12Oh u0\ $o pt c4#} ُP7Zy&O ^ dUKX4 2"Q dUmrNk2p7k>H^Pf /ş> Miih !Jc" `B¼Q{m"BG[Wz+.hD>/CXɔu:{ώ\\ B~ì)f;P1ь8*.7Ea<@<02pOʪrC xΏ&4'ԙfi hK6PڔI$RM ?`0M"Y;ȳ˄̬*Yӈ!-hDHq#1 U )"W`GLU<"1KqUñ4Y?Z ƂH + .Ts5m= ( 3U\fec*tWˉ@FaB+9L-l" ֏>TWf1!x 8]]OaXZ|@5@U=}U)]p1x;4WX *xo:QdCsbH$& $J|)Ggi}L8fy&hWH!r,0C+9 r70SDbgsfY}[P«kS_;Ɔ|{c\QjW"tMf؛1r-CdخEEyf C=0Q 78I\z}Egw#[g7NA48h֓&PA-9 hB9^0K<=ƀW Hk\#\LfAR`ͱh ]B^YUE !]Ԥ,e"XQD]jU?l W|AjGFXZav CgBj TxEN`>;!d1{5ccڴ)*FA&b+aKYyk^*B\0h$a:Yҗ709ص\aac b.#>u/ZG\g){]I)FyB~cOp:u6Fc,|E7Dh)C$AgUMzzȊ'K_קSn" Ľg':t5/zITudԱI+6lrgMa K^ulbik4-oi!XȢU*IF(g !a;5n\ y_-zfrEA$3 f.C Y #EoYFΪr$5Rv 1{Eqr\s;ͦ16_kXhJ Y40D,,G;(TGT+F4VQz\~= @Vٛ}5ˑkoR2R(tnHohB~|պ:1 1W<"wKtaRB@)q͎ W^|[ 9VʉFf]2x"MxȾF&i%6+VA'5=e=MYf}͉1e.js6Oh`̎Igq/ T~ |gAetf!H Fҧd#f /! #CqW==]ӐWϼ2[RۃX{z5^R~4*)S| @Nt#׵[4p, gn.@ N:) mZ}({aG*`o 'sVeXO / DOL.VhNOʎćjI D^:8%b( ߮j։b &0 %gW%"ЏZKt0cl<ޯobư A=O~>)7K(Y⁌k0j@ N p&b (,Pߢ,n&-'48@{2G 4q=1힩3|qe~C+W"C $Fbnp IfQ5Ji_)L E4*Qd>> V0ArҺ0R?|2nj3 sc f*]"*F"%!Y%2 2L,C1gw'q(/#h!k. ?Vbʄs/'Cdt8C. Ua!V1B%Cw!&!:DN6D+,DKt\\UTa.*@HBDCwQ(sF Ho`>D)CTQsJJq/n(J?Jt/4K ~Kr4.'وsLCNtL51O"j LOOIPt q Ut|ށ+7hD(pfղ SwS=5TиRT'"7sgTMu.PQ!O.gJ[F;x$R;S!:U$@sX 95AObYm,oJjZլ0CqUKhhVZ5\u\ɵ\\ѵQ 5]]5^u^^^5_u___6`v` ` `6avaaa!6b%vb)b-b16c5vc9c=cA6dEvdId#e; *u5ZVT@iDLe;fdyg 6/鹊/zB;݆tc|j\n8 5""jLG+GMN5\ ofI#ԬB"I KTy4Dr fNtu}Jw)Gc8|w~$S;ַA#?~Pd ϖT/76 ]D XΫ|+r;O"Yo l:W Є/0v*J-ɭA/W[H||IM8x%K)뭾 =ץh5\NZ\8L>nkn)QGje4OpTjFĀPn0X%Y(i)JXVl9H%.rxgxBO u4* ʻl2؄qxh&|dHmi)e`$sE܊'NA;A#G0%]A3' :vig9W~`_]~=cKjik̽Cg'XDڐ!2<{%LLue| T/bqRIz'ZOБW$G"콙5y?ci6 ?"/VD1.~ !b PA:D#|@SdEBJ](<.\y=e] apQ~Z*1 Na;ZYFN(%.6RW[_cgkor{.XekӷR{oчs½{8KAF)ثU>XoEHF16o̩s'Ϟ> *t(;3j )SjJ)}R%ȪVݐVm*v,ٲfϢMv-ۍ+T.So%0B@S+NPx1ƎC,y2M0[.;.6ϯ?X" 2ؠB%aS5!=gAVsӑ'Nqr="!eL#؊;أZ)" V34>BiSDH$ wѢe tP6y2k_mz3H$1g5A%flC؛pMpEnBS(s]DUh[GZR^ : "e\vr$ ^ JN#N$ ZF*JK._D(ԓrۭNrX/|PGhFGh.25}"F+.I$%.D"{,U5*bjQuzqq4ʚ0a4)n40J`P$`H gD+64\E<}Z :A"cA \d tQH62$c]OҊBҴKM΂.Kv UTz/9O7<ԃw6}<_5f ½@~^S0!|lA&K}u ~;>:g&aB+~x h0\NhiQ3PyƑA{OHC<ݘD෴pr[$jD=os֛(+bq|ůfFdƩLR:uH+M #O} ?ҏQR!@j) n4%-e1Xdpx;0qUQ&ǍK'W0<5NL͍\(쒇H|$iL6]G !:gҤU^7Ķfb'YI=G D&0!q85fO8{L8"\ٴ7pi;82>EXIx:1{)@2l##9J^2'C9R2l+c9r .3b115 r(2۬]1xqtaFZ&ǦaDUȭLS&:]S::~D Sۙm<X:׺FK^Ul(Y3-t0 L"*0VRpS*7g3ɦv턫gFPCTwÛ0.ZaHRsSKo˗lfb r~- KB:ns+pWvA{Y)Clhv:Á_kXek[\24r{ _ $r|MvBnoVHsV=Ws+yp/'w+xŮpv|}Anw]_\= myQ`a7վ90I )D!#[=`&6N_p &ymn`%y8 xzpYzXTysPpfЇt!yOStsVF$SA;{:=ua%462IZ|KVKgW)Bm}Ry7_8B \&پZ,a[95_|A6 ^^^ (@`Վ <`ў2B`6_?D>I>hD5-==P=| > !: MGPuaaO_מ4ՙAh\1VEh8)Ma!ɱ ?⋁HqP\ 7a<P<,d-r;%./0I5bё^1: ..h_5s,XV 4.~p>Q֌#i:r2c.d65DMD dh d7DRdEZEbdFjFrdGzGdHI~b89d@DLdMMZФP#$G$APeQQ"eR*R2eS:SBeTJTReUZUbeVjVreWzWeXXeYYeZZe[[e\\e]]e^^e__f` `faa"fb*b2fc:cBfdJdRfeZebffjfrfgzgfhhfiifjje k@ k¦l9XWtٺfpmmBWPglhs6 ubm~eg&, fq]7:zԌ!qub}҂v>w>wsx'q€!;g8dU ~J5fy kzqCwAmlZD(- h':,(݄wb'zh\(4 (mڦ~V,轨D\L6XʫJt۬`Z" pX<#zDhb(wl(s qx:k&"'iI9Z"t==WEE@)`i&)" i.C)+IA/xAV|L^ 'bD/Fx ϔ\^YC8֣f>¤ kjjqk*CD1W_~R4[%aC)]a؍aVg.'wr:ǵ_U"KlY2LCQ(fN+MM00&pTb,p(ڢ'/3_q",LSc$8pS%'J1g|!o-#ke=5UC&\m) 83f!i)c-50;vBɒqlqp WeAj0_Jlq_sPzC.;;.E-/23)b,G,2Sc8s_)Ƃ Vs7o3o0I7s::s;;s<>s??t@ @tAA#tB+B3tC;CCtDKDStE[EctFkFstG{GtHHtIItJJtKKtLLtMMtNNtOOsnPCt*Q3}2e:u&Hj\TSfUFVk5Scu®~un4 [),ͅǐJ@H!z=V^읛9\JJ)5^ 2J= aTi8NiHШ5t@V¹5_eXoٿala05I5q:ą0m`Ymu 8P%8i8V")!ݺr#0m_O\*$]0Myы6E,! ,uvwL{*i5Igh UaPcu}O3'7 +y hN.{5Oe9@Cϊ WΝ-ϑoFJÎN,ݭ 6ac kbRO׃SOrְD99߹y::'5\9]-ͶxIMy#[& I댍_!'X) *:1 H`-P3{ {zKyC+{#?{OS!m8_ui^23;ծ{{hӼk7C߻;v{<ly)a>۠ N#^ Pft'wDž*ĺpr qM碣3@^5 ;P|}=}/7弽{3}O};cևӻ׉֧I_=;C=#=G=ϻ=ѳ=k7)4̈́ϴl6^ fx]|8Maˏu_-/A01T"u -c{އܧ{=է~þ؇;˻ӽ?/RY8 B QM{ k__S"j?SGG?;;?77?hTjK?@`1D&dR<:Tn"@B 8p*I%P.](cs3 ;CPL <4lLlcr H4*l +DcrxMC.+&v 5%Xp˺Ɔ†6v6BRb/grwwooO꧄=y¥+`;mQD-^X F=~RdFY¥6,A"S}|:U\<"P-:ꤹ'VQoi2(-+Qڱ$O0yXa+EҬJAAd3#śW^}X`… FQCfإ /nmbXu]|> UrgH9"}:JKcLD?rn O^dMQ֘ /uQ%]tխ_Ǟ]v)w+ȐuYAk.eoOSM+tیb"*/ 9JJ"pςR浩|NdEA"\%3L.EWdE_1Fc,֨Dz pl ( ?nɰDʌ<8INPB)*,eeK ʤ(<&s=+ `S4[#H6TPQG4RI'R+6bLTM Cq> 6 ٢JO%P Oi{3XLQL06$< TCR'HY8K4ZiZkŶ 39=#AT}ٷHьT4@u@B @&T $ވ]|=2`x/4q]k [G&dOFY0*U9wydqzJ-QVn0ggVZBRfi:j/UȘk;Z`Ufm߆;r);_1"Do`ܚ'ppgqxubBi@Ho%P^R%h5>{7Z7xJGzY@J;Lj"`*EKA|I h-n^CDςJ ({ωnc@Mp$-<:& =RA І%!6I#. AxP[FD6k xQW1 8a`mXi sܐŤ}bƸYt.=rC#R⬁F5O$`]@kT <֑ E/$,F3JslH.r[Cs#ԋ`H$8=jH&0aʕ4YNn9d>,6y(Nћ3bBx dTv) WN5aTTIuB'H*wS_z٭"2PR9%Z@U >'P!JH !ULBM{D0B,N,ȈuR$ЩP#SBZ J5d(pQG#TQ,ɌJNˍ t4ӏ8~ZZkZSCʟJsxhRaU]e*jΈc &QVh qz46x3A$c!(HЉZ=)}jxb-)-~l1@!$0 7 -s<*DjOOŮmK66]LT[#ȅ.zpf04e#$u mN~r A? cZ 7HSU4Uz kTyTȉ%f3\SgbVT`S+6})qNOLƒRIkI_:䮨-N)kdOǣ)B'Kr֕Q vaEzU0&H.QpʽD9GD~ƺx([\TGΙ4$-iF1ij0lGYDh>_(l.<բR=b:fmJ$>5Puiج#"cyqn)gE6\pB/Kl& |hlf] Ձh@>|ϡpJ绎L6nO?r^@_f}D"\ɳ [-ܼE< 0?keQsS֏FS_}:|i1'ӻCQsy'(b?1  R0~ {*pb@6 j+)8#0= @#B<eAS>||T 4B0{5'U ,1B+lt6X4\Ѡ"rCP;i< A" #Y$û?+ Gh481wCC :AĎ@Kq k)p7lC8 AC;Iľ%i ;BI," "=TCU@TCE"jCDT6{|CHTG @EPJ0XTUeՊ8|.Y YS?xKY ҈ E/(VZ5 RV'QiS\-G kuVVօVjlTsWi-WjVrVtwet}RpŰ{Wwױ\Wi%}UWyU~  OU/. "R<6 jX^ V]!NXslVrTM0s%a{dS4WKU^*FQ[e8][_efc&EcVdV ]f0efjf\fcvc`elonfreseteu.lfwfj~拠F6M3 >\ \=G ^h^d~V>~hkp }!q{gdgf{fgf|>ii>^fgi~i^nii~gi~g5Mn]jqmꛪ5^m]^jם[ej^Ȫn]Uj`kh8C^6e{VY,qcVƈR~\KوWHkvkB~j]j.kmlݬ׽E^۵jO&Fݮ>ȮW ml϶ΖjۆmmflچlkuճVkfݴnyS #~hma]I0\~nˍa&.ovn>ծoЎ~opZ)GWgwpي ؋\hHZEe Xሖ8ؽ @q?`&B  !'r/r?r Or#_&wƱ3-3m +]*߂^\NF+ѶlXPJ4?e9 ߖÎ?WQaqoR>[5@*>CWqMvCg]HOPAofnT-qUV^t ]Z}ss&%l uI:tPaYu6QdLO%dhOvejZlmoߝnq'rGtWugvwwxyz{|}~S ?x8+aI@lJi%E#'Gx0i) 7߸GC)6y(Zf/N`ycyh. ׫b;z󘡗z5,zlQ`}3#z '@g7WS@i`/@{x_{hw{ww0֪GxG/h2=Ba#X(G,D~&#Բz9$\"F#> 2ڣC}aZKx1W.?=ʴS 'P{~'.' ('Gs_x XD =aE$9\#xF'F6Zٍ_~(@WX vֶVgG!H9PUQ):JZjz +;K[k{`i41B4U"|$" uP5\T<͜t-arm$6 Hm]`tl2E_H?H} a8C0P4 $U,c*C2$8t0*T@ 4 TI #̀j yXS"G\,y2),vH0!yY5֭\z 6د%~FݺkU /@bb !w!7J\R} &(0p<<з2 Y`([KJRQ@ Ri`ph.QZIiD]{)FN]ԫ[=uٳ> }n&+{<@Q{hRN3N]x}I <(&Uf-jtkPoX!Ah¢!Mat*wL"p\>\wBIdFd2^P 7,\!4 j6]y-~_\0D;E`!`/%P H[X*hٝЈ8&Xs08U(!渣)$v\GL:h@AU(+. P9F)fP j4BdJk޺N: %-}&g0!Q ,WB'4l_rOU1fYk $͛b'Y(I0DT[ʣ\XhRq\{)ڻ(NLq_qk-izVlɨ2,s @첰m^β-\KJM[4*hUA l֤FLFs ' u82\pKLhj'ю{A@Cn pAp:RT B|  Q7pHQs,mK9(PӄuէM˖+&i [_z3` F#zҔ#vE+ jJ@g3r}QPd|Ih\XYu*&VHZ ָ}!uF?&.0` J_r'{uĉ1`7Fk@UE=4ƫڑ~EvBDu6Xq<[- \V8z-[YQ_z_2nAM؛i0 q-' Zr=)Q ߥÏ#吊uht7]|1Utx3Pxm kαC8b y$Da$qYwTc0^i?TY@:h8T~lּPH]{`6T%@)2#@ֳ)oIMRq#8(!9 II|2czRk쟸,~O{ N̼P7EfI4r ɡ8qC|:3a ,nb[G76VV2zof t)OGoWb:J@ΔMR*wE1'w 1:CS94}D&0>UֳxCdb yw% FwtA$W'AS#,5q 8.Bk $uLq#=#v(U5Z( Fl(P`!D;Jg<*1ȈͅwbQbSDIBX*s2 |b,-rH_G ('DEd.t&H>Px-pf78REϰf}ㅍ&Vb}g¸EU^pQmEqXcfr*.H:lq]Ɉ0>?XLqP77GO=(t2s+3'tt.-Y9B!EW-V,|h="=Qgh/B ((K ;1ivhP 0W鈓1 NO5G)]>22g 043c3G3j3Y4M 6;5P&(10KĐoRy .o\7K? h`4\ @uMpijz:@9阯s # 83?(Peq 9WCaJEsD99P:xoqP*Ijtɖg@ 䕳IIgWn'I=XB7Tjr2>Jhs >wI->I3Wp0⋪{I`)0 96AUsAx :ɳV?cAQJX! $ԝ7dtB=8soRt maC"H3O+8?#FWH}"h:z5KTbӛ \EoM`g#ErBJԣ6.VV*ͩebtdG7s4I1IHfP-tHdT4ڞco:QI5("4M5v :J$KI;KNj B.*zKY<ԔƜ]z0 USÄ JW&f )rq0`8H^IT"OF@O tUYz$_.J O'3vfhunDtz29 SGvcvPQʒ<^1UȝCjLSKB5>gTuL` ÙԤ 6iĈR`QF oHgz_R"VmEM#@RT_EW6)eHMk`X9"E դƴHY aYKZPie+oƟYK$fXs Hw Kز[{ە{Y``;Z{_ht[ ui յyLtxC@Frk Ÿ˸ ;3]M }N`] OV&Va p+Kk׋٫˽ +Kk狾髾˾ +KoVWQgL[iZL) +L$   [+&a  0Ž![qrqʤmL+Vn©Vϸ d)xo!7J o K,)qqw{q0o J g4,+ƤtnmW+p|Q0Ih  L }IU )쒮nPqig%ĚHLVQʤLLQxʨcʭl|ǯǶLʳ0ulUt <\ˠ ^BLʼ z1˧n*'6 pz{L*0*EμW2ȥqG{z|}*|$*rO1o1|=au-Υ ͩ̽L7RaѼLˮM$u&(M*mWm̹=.mU,-Ӳü6<8D0ӓF=%ќi?Q@VSM\=͚Տ"/P֜07Xkq#J=R*A*C|tPd@y-E 4 W׍FFQhx6oeXl| ~@oM֤/n}Jڣڮhկ=۱-׬P ۂ0׵۸Q}˾=K Kܙ" aAv}WM؝} ѽ-~mm-]}*Y 1丘;:Mh$[? ԯ@N  M0 :~<>7>>2]MNJ4D^Qn;OBR0ؘϧ(Αpcj*"@g\:3ѿ%&xU`Ni6E붳 mvE ṹk^V.)<}/Z^n{Knn.~.읐.8nĞ.Nn^߾T.NԎ>>^^:\_˵ VXӗbol\FD~[C_E6d~p>2îﴞnN@nfN6o(o->O@F/N9LRHOoC]]}˯?ݶnD`N )نݟ ?E!xЍռ?@CM (. t,B-JЎ6c_/|o-jЮpK-̑mr``SS!tUSHU4UU5Ww7XwSy7yXY:ZۖI)Ib6 |](=H`}X@A~se D@^.)w]!)>Y@87oԖ wfNvY)z(͡& M)ΧKakV[vlXcɖ5{mZO"$Bs@xI(<7onYQ=k~a ( anq`|$IDR^}igԝdmK gtn0k˙7wztөW~{v۹wJ"$WvQo/tX( x*ػb4 "((n - 5ܐ=đM#q67*@ Z,DP1]6-#++5 E `T(0PM`Jx\2<4\ʹL9^bi78CyK=kl.zH36}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z_x_~Ӄn ;asfF(lٽJD>R0dw5U2+)̔J |1x_?yr¯%r@o- ̴xC{² $"LJ]3C$wh`Vl8]{j"/+x{s5~dB}2u=HM+$. $oӂ#=áZؽrSӎ4 /j *S8bݱ!ձjb|2lCql a H5"@ L@` d efIe 0.wQ? ʨm&jSPŸ<F < JQ&Q#_ )5 =' Ù`$eM2q'qk,,$#VR,fof\DLhR(𿣁<.%ϕdrSgWǂbBd GUx@6͑# 5' paة+9B@vsT|U1@M.J`oP5~fD JBW׍'p_ ̚ϩi}OD2?5ϓ"8dԊdC\,{؏ J@[ `#5,,ΐZdtnɿ0d| Kr?΃+\b4\3cF@uJ3q"4Fl~+پ{:)q\!$ޥ2 (/%n:L߻!%tCZ _At~ЀI =/%fzK2N02@C?5Wv3gp{eTY>C%sV6nuWE(CiVK= : ߝqŧӇ3"isSZFz wț#:rin~U0/%-`)Sk9g#j7iwgGO:%s>IjK$#>kOݰu>G '=.cꞅstOj_ʟ;Ag&\X!U7`smwL 6 j;#b0Qf&C:Wڮ1B0&o(0niqs;1h2~?nE0Ro$}SP1F@o; :FJ ;@*t >6BlPQSjNd7= 8G1~)86~Q@gB*,[:4K T@dHCIJJr o>@(Ɓ2+Ni)LI7FMoraPK$ L:$F4Rq0aLzjt BF5ٲH/d = JbN;ҲRvt5I [uWUbl~MwXVI̮9-m&*{^,ݘ04!t~յ5 XlRs L?B%5pU9HOb=qTetQUQlDs&:%vu>4/FgTsY[6F6A]COY5QޖULV9e "5Q4B3DqZg-9EuX6 -`cJ5&j#G03Cmo$JU;5N6Į.Ij1oGƖFhgCe`F&pi0$A@6 VIF1"!2[c8N NC4La37X9"64c66 *GQKH*kIXS1pPtd@:-ր:Q8qDe/}*Y*aJwB簀 -a_CL|d1LkzЕ \j# D\i0Y7XCPNÇsլژBV Hw,%2؅"ŽH7`|D"s6:tÒ@xPJzxMsd<cUGܺDmtV9ySw EFX . &ܬ旿o +8Uq7B exu4xYJMGfMӕbT2ٜ hKABqYh\mHL7:ZfB@:]9X.MDQ^k1&|F'eTVڤ;U4ˢdTXty&P9S,J}g/2[sYqzS⏧.f[zVTHZҋ [̺rAxQsz9oog-ZR4ýPf Ȫe_-gV:0weBLo{&ZaZRnŔ ZPtXN;z\S49^ryU;^{gDž$"( W9AjX>u[[;;[Ǜۼ[כ۽[盾۾[ۿ\ <]h.EeR;0r^z hFI$`© uCOӂ0%a:9~7D.u;fў$XS]VCBkO] S`ooY\-:_ ǽGA9[[m9ӼU|S:aB:U~/7@YFlj ΅˂>X}UFGS$=WjzbnTT+uucKKW=SJ# jlA֝ -c*j"v!ɥnJv1XPTj؎({})j]Jhbi~œ~Ii=}餚Ň2<ĭ]a^T].&_ 73>DѕLHw  d5I5$cܬ'D(F Kgnt5]O'+66;~Ek{~^-2TW"515 %8`wGJ"~ 0 5$iE~JUC#5{ g0O*ݯJMř)9K>/`pԐ/{79Pta{Y>=GvBB`wkxݘ $MAu+GGI$ 'tp>gKo~VQW@t soFVLuvB(Ga8 ND$HPĘQesxj*H]*^D\SSPBcېe⁁#XE)@h_.o/p0q1r2sƨSW5+*ee$[Xbl4*6!:])6~:{`s;'|YI4E´ FH2 ?%_ Ѹ%!SsS8Pi8I N-e'-;MD"JO.QyHRsF("ƒ-k,ڴjײmP5Э{-Tyhx m.2 j# w)餒;0˗ M^3ĥv7fJ\T|Zuk2d!VMlFNȻ$rN#*~uHyQ/O}QpLq _i85 x *1vxIB~YXF]g0nyB ^A&a8d&{h&\T5E#a.hFGҒ,Z VN(fz !xObXfUQ^uI؈ ' :(T&plĄWYXх $#v1b)yR̔!gcRAFˆttJ>dɫJ:kGQ`$O,Izl >7"q9zN4nrW gZ(/kzhlhd"wJo;ٲGrdAor&h=po~L)S~VDŽmɹ\ɶߌ;`Kmuv,EWjEGj)OZU0I충@-4Vu6m.,%P:n-r97HKSS*9U@gXͤg-'ƒҒ;O}Fo(.Y(i澘˞#k:~8[f7K?= _ ]!,9].OBv {es'86UM'~0)MתHT"!5iMM&g.rR+ǩ)e׶!QՒFN~֢XAcNoV>!! 8"eb, |2Ņ)!|ϧ(@ C&Zt_0EvDR=bi,Kp483(q^ `4[Lȧ,p[MLjaˎ&S0>F̅D ,㿥uNvNi ARLDN5uW$R9VnȔ̧"> !_M]Ƴetl%nNPR-|)Lc*)rCc0kB*F'V( *RiA:e:H*B jXAcX8v*~HN} T^r =,*b1v|<XEGъPF*.yN`?}2@< eLC+ђVX#ѲS`mk_ mdsŞ1,!F>2%3N~2,)SV2-s^2,1f>3Ӭ5n~3,9ӹv% &zn-p,<τ>4#im-@+PV43]ZxhvA4SjSwsRQՄ:s]ELi][׼>6I dj@Gx>{q'g0)p<{:7t!nE[TXY{K@sNj\u>|T:S#}Yµug4?WC&*=3C]&cAV0/xDڍ aeLaó]iFXLX!BmFኧe)aATT 6Fl>aU_>\ 4ǜ@_ % J]L!q=dYA!ᆥuR4RdN$m! kqΠʼnJ!XbK &uae!)~FUXMyNX EL""[ Mu$xMIFͰ0[` 2ΡѠ4NxB * p< jg-b2FB:XYcy\Ma15!ec :c 5#?2Sc krPh); K7ta b$0 "QA.A4YF5K$ԑ~HBA?$LP%@E#`RFp5@*DP b,IVő!¥Id0P$IIuNT nEoxQ %ueIHdLNZz%$HmeL^LL9\ؔE]HH1bTHe\&IԹVD.9NF5T tgiU@\a &Х$KAhU0d9/0e=f0jڕÍ%NKװP@gȦmU &wvxWZbx^^x  ܀v%c' Y~s #3,qgy}nw'f#f!ЄʀJ(&(х5b%*Nh_@v򣎡vRh処((ƨ(֨(樎(())&fIsH{'2 f]Tiqr蒖))Gg*ʧ%HFKJc0Y:)4)EM`7JMNʩj1cT~a Dj,ө͞⤦<iY1өIahbAyza e$Dܻ)5P.%p"ȹ˿)mj(+\ϸ1^kY^S**\Xb輝uȳϼ9v[4%|\!."GDq!}zDk@H[s0+ ^+Dȫrl%X~ۮިxab7ZI>H j7¡~dZk&bb:L]h04t;(IѶEFaA%|N)R8FezG Fj aeLYLE 1H0أvAyr22nM-T#Q0eP瑝KLI]ܹ֥yFxI-WRc@[QmALo(K0fP,Lz ?&Zp%Z1\ktjDm$]ȟ4-$`~xE M mv^npJv#q*PQI:0 eKME0.L0<݂PFh$]5Up )0EC~nkX_zZP uZmhüMɈ!`P0Zc# ccKPoc1Bh~St+.LQ@-{+LBNM,;FTK5 z4G%qR ~ƮР%`lN!N 2=66a҇JT3ʇSX̰. nHMsc~!6,,m(agݚ6zHμ3"=s&E+5_H"0_zsL8+=1Ѯ2O3.T!^˥L??BҊ=~nXbH#t!eҡTU," 0N 7XyA\(tG.#"I4zrHrzPsTˢc?NG *~\SOUSQ$@PuD9#`vM6K#gh)5+5 U[5*OUYa8/,1&+ 'k0wq cco c12>#ƌCK^7pCc?w¦?N ĶFȮ u- i9LIT CQ1ǙKopѣ;xdeq.96>7ktC 2h*Kx67F-gx6 o<&(.PLg}GwkGH1' +#uo15$MS-y[=V/ XJRX1}XQ_cORѾt9r$Q5BdkxWBSXR9A\ҼbU*8Pw`0z6f0%pm5ƲZ+{ L`APIyCE\-4쬖 4T\5fmX*ffu߄bF:Jb>trky“be$qYPcm={&qv3sbt5vԩG{ujVQ!8rnf>w\fV_ZTq8D,W|;H/N[iJ&OckO;XbgIX8mif;dI{N@+QTUXAo(iETFVnӏggZ3W*e04E=USsژl-ӓ'{zp }AOkC3'r("HϽo y(ѯE=>=1}[>7$E!^ƾ~׾>>>??'/?7?鰢E}YS:XgrCoXųf@;=?עZ_Y姲{Zᅨ?CbqبTKfFSjC@TEC B:Xsz~{~ $,4'|r~V_Ov,2¨*[x˜QF=~R7%10XdtZV2@>!2d gPI'Q Tj9LL)8@烡En!S7`2m7PߌDVZmݾkM n5Rg˽`XF XK!P48f)QB0t5)^!d~A)Z& j~T  ,>`N\G\rE9fMdg-1%BE4}]`–!m}C05F=ͨHҩi2Kθn(i͢Τ2M ᘣB /0C 9z0Êz)0ƻD˽(;=ߚ8! .ƻ34P !D2#D2 pd`,'՘pC-K/S:K褲ɾPL5B/, 1+)% %{/o2 ]H*<ڰi1%Bs܉|1J)(25TQG%U6cs3sLƗDYR"NX0lS#%¼D QrTSFH%ed+m}%Ŕ4[o7\q;b\b%9P7im1Ғ^7K ME _yU\e]an1f|T  D*@M7dG&df́U%6ZU%vX Q>ٹƨBC?5EuB/bz6j'u4]M;l&Ȥ6hdPcxM֤Z" 5;ࡱ6;7}<+` ȵ3?7QF`${ݨ@l40 X.S 2ʐ}b OW~%΄ƄY@_ 5LNabr9v O@uЃ!"ŹٕI# Yp"DMoq^K%.&R  L^-<ɐg@:PvEhBP6ԡhD%:QVԢhF5QvԣiHE:RԤ'EiJURԥ/iL_4ji=@O Pe ըGL>G8b0IM=ҡhMx*RU&bjTY'ڬA|GRJІ]k\Nh̓YЬ<csH&:WְQ+V; Ex6zVֲiWVৈ*;ff+pAiZFokƿg,x-lQ g1hFئcltB6:r:"t ROS )|($!`I9l' w.los6Ƽh óAoYSf|c[:FPDc)w1)Ixpk^~LlsI{`/\jXlQ(:ѓa2Bz('12U:':kRQNZ]w\e !_(*v"SOr8!3/UiLh:DCA@B&ZLuSI#h ah$>կ&U5.;& Y6#IpBޯujf3o3=meI+( 5\ Qv~(Jc2 t5ЇK\+ڗrj!6*0pK_8UX܌ہZrkj mE>rв:҄TNɅr'v\.cG$;~a2GGzHRq>Q*-Fyin\cj:_nޯP}8-BF[v3sjU)d>w8 _EX jPoogDö=,;xnN{p3Hw2wZS^%򖄗׳5[:oSWx] >ĘޒQ{1< 5)_R}I{w-_7箓.9!~8,\q>U`DD$+WL 9s 82 L$4DTdt !$"4#D$T%d&t'()*+,-./01$243D4T5d6t789:;<=>?@A$B4CDDTEdFtGHIJKLMNOPQ$R4SDTTU|0W4W@Ȁ8# X)+@,Q"bdFVl(WEYdf49ZEA4C67sFB(GhF#FvW:x|utLǪGgd(h̺*GXkF[ eH+" 0ع)pȆ2Gl4Z;zĆ0WG I$(h6(Xd~졓乍+DCHA8 2@IvpE{Y X|| h,GtɁ8F"JTI6GIwdHJ+HHJ@Ep H"GP!do`˖l̿˄r+JALǔƲ qP41 ϺƤ#whup3kN"*x(p.ES#RMS:<֌ <"sx4犆\$,LL&4לL<(ΤLtḐLO^{7{I=bى3 #'.[5]32!l/Гt u5,PЏ,LX~O|O\,xO+hOK df<5ʿq0q iR螦7( 0+.?(H Cùy%RɘR3R;RF3` ڳj/h:Nj",xĪTM I4ȶ| MҞF;p"#01ű!&S{Ud59p[l2#f-V._UL%0hϰ,Jǯ4IbTQUoQ\OTcܠ~4ˋ鱹uS 2hӷ,3X>4G}V ώDSTLIvQw}WnW*J< I*2X'R1=1HKϽܐ=Wt̶TOVvYٵĥݾ5ˌƓǬv VeE t6g%\T"z+)ܭ#2h^-97ESk5(6/7u^ٔU&[ ĵFIQ |;7y(jdچ0_:([? > ڙ%`8+s49_LItY.Yţ`ZL"|=Wd`Ņ JB_Ը-ݖ7J֛΅Y9edAű;FZi5;aTueF_%Wae 4]j Q;p^56I 1,ҡ2cb͸,^ 2l`FCZ%:+OMϯ]ծ=>iGG[ d(p=!cHk|D*Is9< )=`; P~Eeꋀi;$ gn;y<_|I|^UQi\JeLJ~,abѯLFaM׸JV bNA:5#> j\g?zS< ;&"E/&j/vj)_UU˓tK掤L4iwB<ג&P`W)jMDre֢[:9#8Xad_+eXPf9 } A- NEeQ RERV>PW4zݴ>i[}k˘z`^@[l 8=sW3l:`ttDtK_{\To(unΉs茭٤MB9oMq0:լDr`NVSWN'ar}vNMZ]vX/bssxdShN HQ'RSQyQ3PNF\녛n'̝/nPyNpqP+Qr~xRJ=wtA,eR?(]cF=R6,.ks^l fTo \wc5@9y HݖGKT9UM SӲ4w >'%U )8]el$`ژ{Xk(eleM_=U~c{n5j+tR^ظs46ww &cMC2 ` MVZ30|G4U|}폆FM547oIϛ)cE@hup4X+Kcz]%/ՙܢ& ]U88;ݯhbqW} ^_b`(oK7)}a -}lM{?{Owc }e濶 >T&L"\ݶcImV'kH}g/P06d9( N7/{OcydQF$3:NgWG,筃!:xlтw YޯtN~GmmF“dJWM~vvw^eԛtifF<}V/hhfm6%$vCnhtl_MGv ~ӮtjdЍФgt}G>Vg!]!krioήU⧽~ߪl@l *j {V{mlj%l/ CŇ^5ptOA !Qr+~n&~y n>ptwBoqg o G'~q/w~Hz(Lp7`oV& 8gptw'qNpzʑO'qN%Gdot8`ocƃ]'6fDGvbo !!, @pH,Ȥrl:ШtJZجvz[xL>pdk5:-.BF{ED JDEE aFBh֮D^DF J׍|$q!5sa⽏ CIɓ(!qcB#T*om i%e[ѣH*]ʴ@U73[Umf Y-rBL╜ӳhӪ]˶^Zk^XPIW>hت,|VR5˷+@ Qr-+[y4͠pv\ڴ%ԝ[횖ɫk6 4mq_np%:uٔ9ڜy(/@Cj+9MR:ki'!e>f` %U7݂'EtA!s&bHZ(#hawtuv(c;v hA$J4HZtJ#tQ2H䔓U!5Y#^fe.a*ecx&i^RGdYWs qFzEU^79huN=UQ%y%>ITrejczen g~ꩠJ&Z뮹&pRP*F.+,8KA*,^.K-"m;nJ[n.V[/jnK. lnű|&dՠ|4sADm~\˫0%'{2):,373;#=Hr<üTW=Hve]ŞX|rX5f yp-tmqB ā~U\X{$aO,PA-pg`[Gg@u. 衧w:뫳Kz鱳N칗z;^O/W=+߼#?{;Q5qP5dLCyS_?{1'"z]G 0}3)A+ 7=!`%aB.pH>QͥT4D7Vq**[ɇe"]&g "hD,a_'g/lƆC1+c/n鐢d.qTWEB u㒒H> #)H=6RRd&oEYd!Xr~xrK%(e)R1=#2b WJ..AYh:RRe!yHTN26t*Y9K4g(Nrf:1y;gIO`֓วzІ:|(DPN EIPztH9QnԤ}BkS3Bs . zQOhDO όT%PT5lj@:R*tP}UTnT* ֩"ԨVkYڷrpbVjbGC\]rTL]od0SBqqA[AT`#\'KZ ]`0+&#"}#0v)lgK:aI_LbdQװ.h+l:Ѝ.3Օvz xKMz|Kͯ~LN;'L [ΰ7{ GLb'(Wb^< *P Z%*HBw&;pldA Y*H. C*2 l*a^N| HSc8/YG8AQ@g"9r3`g1=E>3"z^rN;9΀[Ԁ38J]j&Gq[I$7֪CcdT,4&QiY֊~ql@#;QXS[^vU`Oq7Bh-v`>l! y>t@*դln !F]Pc~'n ?#T@rKq7 r3,+{NsKAϮm}z|yM; h]k/{Cur"khO{-.o9Ck7} eoyݿw}džy.vz@Nh|B١}ȗ];5{޽lݝ@rgGOБgO{2BCPzK? 5}?goa6gtX8`gQ}/G襁~ 0㎻>Ͽvnm"8Wkm|6pEWjv|Fx]85n*qj(~8tR&i˶YyG,؂ͅU~5f~|q4:Fl=ȃA=8<>LxA~IHKR8qgKYFZhPRXHeȄZOh`XY؅JXHȆT؄GxnXrxa8\~x8T8cXrUy8(]ȇzxP胘nHg(؈phȅ(@}Hhs[mHo(cXf؄fhˆhv(؆؈wиd7Xx蘎긎؎8Xxx7 TGv9Yy ِ9Y k "9$YHQ*,ْ.) 294Y1i8:y;ٓ>$ +@YFyHJLٔN;SyUSy88Z)Е[b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹ[jĝ@  DxYPP WO@7@XYE_Ipy~iiIGZ<\8Y0X`MP[J;[J;q hz Z*KۮSKgf3գŸi-1tZŸJ&i 1>auU KZN I'0"ԐKeDʺF˩{ P 5{ݡZ+˼˯Xջk; ? q:'J[i ;J9Bp%j6kٽVZGd;[@Q@6i:6,YY jaR&(,X#|r*6?!%<sJD!q`7û{P6F|ž jGW75HQS $ B[=73#gZL~"{7 Rwi\$[1uqYÀ ΐ89 Ӟa?M|ţd{_sFbk Bɬ5_NѷZGqeYLGό-en iU4~{|2Pe T;uͮۺ?̢ͼJԱiPk["S[?WJ 3{ڰy**El\LzЁ_>'7aĒeѭ˲l]9 ɂL$?7IKтa7 {R=":7;k|,6\ e S`Rk>4-1N4rΠ@=LUlv[pv v}eSKh=pMѐc7wW'3|oڮk!!Xg4mF \ͦ{Mֈ`yա \6f\#ٜL/[>]/ܘR 8+Ulp6Z\7 <,NUՂciZ5n3? bPU͹jZ#ZXZ؏t4!Nۊ7SvWt2"2ڊ3 !4&8.8C *DX\'Z d x}00ú̌=?9/rq(N 0,iEJA?%Կ uķҩ+9i*Ӧ4QJX9.cJPAO1ce=Fw'QTeK/aWrOCଦ{r-jFaTa]/l]s̔ ;,oiT&O5f)sFm_qZn`@3|dz ~j{U]z?NԿL pJqϾq&(Бgʀ`>:J P e+@AȨ@*,)@Nx)>1B 5+b RmF0ŵ;B,rSJ"@:xe'A2{YlIR\`6;2Im|mGl_B &1wCɈ M I$62$H(-[AG K+Tyϐ/%991/j8zjpW2Qt ǩcM M$mLƇ.,JiqɵuVLWum7%p[Y>ұ^D5Fm %݉>nzq!a|զ<7f+/mE^cT>B8A2TG aςC4Q-Ác~2F` VyI5caݒ{C֭2I1ѹ>v:sj19!R+/\vyo*XӮ)s\bTҁZsa'xȭ>l lYB ׁ  oiqY"p;S vkϣn`}eVoݙ7S%Prlh~/q.zC^E͕{;s?LǝQrkA8~Ԥr= A xUŸ>Rt{ꞦMi QBJ)Ec \0k UPRާMQՈ'7Bx7u.OPSZ1XrHD'+bCE|"<}2BqXb G-ʈLwHAW!(t:G66ll'-yIQr4)QĤL]+aKY</Ж/iU$19Zu`d!u9dNմ~wFfS @4řNu"*wΓ=O}?PT $AP. uC!QNE1QnGAR%5IQR-uKaSΔ5MqS=OTE5QT.MuSUNUUUn]WVe5YњVmu[WΕu]W}_X5aX.uc!YNe1 WfgAZю5iQZծukٱmq۴Vo\5q\.u.ϵR)-fg.7z $ /s]*h< ʰd{o X\f] +KHX!]ql*㭑X ]ҺQ@X%VC⠶% A;H/oLlKiq# ̟,6f*g̒!+j9vrK-5f .eKe=esѮE]C@|YMಙoUeIYܻ=! ;8lL t%|Z`}E'# p@85DjH+~J4] L#y~3 cl%iP#:P#X gƢ5Dr/ Sq R#_L[Kdc<>=KJ@Mlx K"kuk9@s) Lwd7y!~sR6RqUq* 4tËqe'_P<=RixB1(Ks~9qDoU.'xŕE86zE 6=9K&G+!HOL}ᒓms/]cmЙ@HE|âxaCZsܒ%&/$RSSr{0BJ[Ş7_s%Lnf@ď%l ~/ VE HqI{pgRD%w " TT"N"$=Ix' VC,l80< ~v0/"a$K>" i:d^^1\0*!2mn(`R#gr, u{ayMx>_>F?Q:3@t@ @ @4AtAAA!%Nl،B9qFN "T&+&HANR@p]c1S,!*0/EOp%VYG3ft]p=6G+FtJ h4@H t?4,J+H1qMH ૢ4!Mϖ+$)mZDutĬ%wNR '5+8SP?-%.`PY4E FUrp@BU 64W74.TKWgώgU NTG T-˂r$V=i:u2`45Km[ERˠOj:#M2+SfהۜMrM|$uO'7X. p&8m* (`LB _YPv_K]D5] qvn".劣*O$87m^הh`5(SRn%&^6LM fwA F$! i\_5eErK-lt@V\PNifPk`Ybja8tnBvv9MDR*5뤏&6 'ybo).wctOèrU"rݶN),I.NĂ4ra)ec^@Npgv)QD".6U׮J/ ɮ{ t54XT ]O?b9%QjFj):$,o\pBzmu%@l8XlQV@=/G6rN(E^y#2kN7 X⴯ǔs)|b'8+:T%Wj}T"V@pP7.S$qIb1Y1@x"h{Toph/?ZsN= iyt~EAܰ(ibvY/C؊s鮒wn C%pA׋ nl|vw}sXNx4VU@"!y󴫽!=$Cj@ ńXFy4eYjuMSt 4KE;W($OdN&߷K#D~SM(LtYZk)vm)Kn7#$[dRr%Q9zygd:nKoh*%&%޻:8|m&@fd?+ұC+mSO:ma̛۵Yjt-i1ݲRɴ2{ŃonqW`Fś \3Ab(m H[M|8oSj}Lb84l2_j61mh4эοK(:еQHڜIRP@,}O^Rf(R4 Y#AD<%;e -% g"[d$1܂,1hJ(, C0#(>dL~-XC $x)csa$ZI̡UʼnK.#ǩt!E3O8PZj-۶n+Wng";lM3Qr )$&(PP*l]K4|1'a^,p𠅝 @ 4S ]4$=b?8(mOqO$R`XZM hdz%pvI!.Z~-^Ql}Мr}RdDWaƱGQfiv?}EUb&1!7tJ2_za'+ qpLHZdLYv<9N7K2ٍ:Uv_ܐFF-P52Dїbfi 4$X݄y<Ȕ(bޜq.i 2e{4.1&6]6A"dNm͓W OTh"Yj[ 8=ǟP-jMhPe(f! +oh:](Ƣy^Hj?2Z%R\v}˗ n&7KHeJkx*uOvAszuJڱ'r+b R P %I 0z GMW&LG~r^*XUrj[%y_oP0zMzǨ>2[x1:?\#>.2i✌Qui|wUIk0cq$m%h{e/g0yI%Y޻Gm4/[Yws}Ef<+vν/˟vw~waycV+{er&KVe"0 <6ְ^bL _䘠B ngB#TB0)!8@mts0mdM5 9&20٥$]!%zkq9..ÑR$ጆªe'@rؿD#wMCTrd$m hǐiQc!a'EkBG&QY'š5fЊy{WDfKMA<6*2#D5+MQ^P';'rR$^FuqԨKN~ !⣚ ,Bh}x$L^u|&7ɖLl"aDfأԖMN4&Ҝ:@7vqc sNvpc8:CІ^B(y- ҩK]v$NmG=[m}"'$X2қ7eZpPm]3'dFȹF .m PğDpR*U?x C V-@9,)D  3+Y/1$R@PXVUtymVڱ$'G &rGx؂mD p)w5Gtj֝@b2R瘴akFb7*%ZҲ"mrkG5¬p;c} 8+9o+/ۀj5/+ ϓQ*ka{[e'wWV{+|A`^9$~k+|O= D3\m81`ȲaWRhQk㘼荅0 n'\:>KEb195KGe'_/I|7tI*kbS,VYCa voM%ǹ~Phlcybk֓tmo;7JҴQ6D ^tG{;wĊ~ n#<#T+8+nWM 2;>Ή{<"9Kn<*_9[<29kn<:9]=B:ыn#=J_:ӛtjR:իnc=Z:׻=b:nCj_;?=c;n]h;1><#>_*<+o\<;H>*<[o,^<{1: 5lA h=]oh}>z~>w{SWU`_>S2 B!f@ \  t@ U@  Z ҟ!` _Ƞ 1`)`&8P`ZJaр X @ zح ` ׅ _ą A&:  Q]!R~$z]"^Y"խ!f)6`  @"b,^U!5",@̀$Rb/f&&_')1( ! Z$eR#3b5>@9n#c:d#3Jc992A68ңt#| 4q#@J#?7j?:~@d#@A#@^ >"<"?$c| "JK+ |Lڤn M $K OL) -fl!u` pX~eX` eXeՑX]Z%եZe@\f}eY^Y0:1=8*2"`!d#L 3^f3`&c.dJ$yxfeb62f_3Ncf&0amfJffffflg~bdѡJ]MdU t@_!~ vBϵtR'.6bբ uϽ@Mwb'{'#gAqeɥԅa geah]*(1.6(\:!fb !㨙2"4 c"d7zkN!nZcn+R&3*Cڦ8%4'ѥ)jL \#B%zgyVv$"¤OJ,NVlê+ߢ #jXLjT~^`@>̚ lϚjŸ f~[rrkkfi&.g4 x̫Ԗ~*Az-'\~jmr-JiTZgv Jn$ ]Eyީ}`yF*znnZ瞺Bg#ҧ:j &`Wn j]F(/b]j_/Ϊve*.m>-Ԗf+֣;2MR@#n.A2mmV-Th&/Ed+(Әodf|R Ranl+^0PZeb#2zJg"b `#ja-]\:oՅaj`6/ ^%0.o~l΀0j*+F"`&Rr.6ļoLGf22:_gRigFMkqBq/FJ0=^"nr0$@!'.%'b},*_κ**$&/2m;S1Y1+ qO$v(*1cse1so~1q)] 43V&F3o!^l ".n?S0Z@AA$[0AA?'p$vgy@C;t'k.D..tFN)A0 Jح.(-lW@r偲/KEss1W1>X;)@:/i=3835q61fs7?7{u8?8oc*T_UU/AZ[3S]u^o@u^2m `c24y0A.JZ"J/// P .31ißC1RR{]X.$]9Vsz[\su1l&Yv7Z5GFVY=)Ámv3;'_BBЙ7ynRn%iz2( ,9U6δr~B/;qL+ԥrvcݮ¶1#xeVf|1nmvmSpws}x w_Pq{u+7!suu1du+5[bn 4`۷u?'Q$>4Gtu%R0~nODT3`` xg3()tu0/h7k_IK/ D2?2k:C&ߤsf&O:kb|q2v H$y([P\zDkw(v (mgv(D~)ӑBd%:l^aEk9[Lv",*yv~@Qv{> GoŚ7q@ t,ù"@t{󻄊心x'm &mQCxXl ZhR:*grRmGfwóu/7o&|/ar<ߺ$33˃|yg̍ 3g @z7򳗬|>,gz**veճ÷[Kp{ 7P/)+hp*W_Sg{g_{乫 3bðV2]X r#8,|ӠNI3ƿŤ;9EBSɲW:2CbxD&VR^N(If˦39e%[ 29Lkv3z#{~[YD,4dL,{ %-5=EMU]emu}}5(".6>FNV =ؼ֞qOFOW_gow]߷OP`nDB >QDØQF| ~ڷ%YDRJ-]YL5iz4'=TPE]cSRpU8U^ŚUVTM~ TeVZm. WͱgޅV^}X`… FXbƍ?Ydʕ-_ƜY^ lZhҥM` ]ϵm*RZ %JZzխ_?Bv*.3 !R`MXYpNս"pw3.hi o"6so堯0C 7k>CeI-%bP0-^4pDwz#J=k1/|H'ҢL 4m& *Ȓ !ݰV !`5 @5/Ք5"h@& 8KpQ Ȕ K*7w@3}CAS>WPt4n[ٗLv| _^XTFv]nO=>фF5M lBpmSCt2* 0ȃWRlk7m+||%ioХia?a#Et* 8 g!Db73/<㙝 paמ&-֊{!>`EM;QJQ8GP-w 8n Pe=y+E@&S8@ 8< 43^, qk\hJ51!d sB&GGZR0SN3A\d {ͪYl!YmXAů'p-MR;t̤nϩ1QD7xNsv s_h>IR|(AnԠHg,@PRѕd"%8JBfiHEJ"~s'EiJO=ԥ/iLe:SԦ7iNuSԧ?jP:TըGEjRT6թOjT:UVժWjVʾjnի(AcK/rM@p$T!d#y3I8$':w!N`~կw66X>[jb&zCʂkf!ؽhD`4<+ |  d[t!3jֶ񨖵8X@[.*Ve;v¥㢏[wk ]C~7b^X(SdgU(KCÑ1%Ac1W4Eo{CRHY( \pJZ4!QjڨJd8VqYc5,K>c9i>ú4(`¶1&2 1DRd1`{-k{A{39S BJ>R{zkqu#xj25~%;y\7vA$*i%A:C?yp(ED-5,JĽIMNOPQ$R4SDTTUdVtWŠYX[lZEm^]Ma`4F@ ddcdsPgԛ8hjhƌ,ʰFjpqmno<OGrtN tLN(pwG*1ƠGG|<}4H Gjǁ<PD*p*I<:*<4D)dHNΞ OΜL4 TdtOF>PRД0Gm#DEPyP[')Lun h BPza2 yP9EQu($RBL =9 #^Ir:J !ɏR$*$%E ۹9&R&ʾ,e'͟bQ-8 (i !ԩ]?C%юqp H%碏'()*V+N,vЎ" =bڀj\P'ĵKcHAGFpa;X>af]: T<S6;OK8HVn3ZXDk|C/V3b6)3:M۰n)[[0mI7ʝ/-B>1gHAKg=4TVfeaMlq荱%2Va& T\S6^r83G5B%6c3^T(9gP2iWY'[ge F,SSXf-jjc6a;We0~^f90MaWq/CVgC+끀gsq4Xisa/@4Y cq 2SƆtƔ g^MdV:&]:~MF 8d4`cO 4MfVV>T]_*^g75R٥/%Ccֹ8SCb[8&AyXA*(lhBvܶcf箒ᦛVVmvpQȥ6pm4;} k-m. !k+> rczv..>+&Fevh*,V5`V  ;Vrj%pi7r]`JUkw76f>|syΰsi|#3qc;hVNVPp9폆 V6ONs`Bjs$dM8Ȳ;]\b:P]3T3q@Aw֭fBiqTh8X&a_Gdr5ra܎8g:s' [a^áuT_UWB lYSWu8r re/S8v8xtJ'vVFJ }/7(e=q"?y7tg4Mu+xW>/R6RkyFOCz:^ cCp;|뀱sz9>Ծ2cs/TM_yM+y״xEckyrFY{#_7'viGC;ڎvc737z5FzjNB[޶- Ow4UiN^n~VHRHtҞ>Q?$)rO >"EJa/MH+@S ׶yb%R[FlW(V]E [\Ֆ@+f82ߐ^ДYlȖNA&M+9]5֭\z 61tc8KE,FԠ]ro,;g^i- Np۲z;~ 9ɔ+[W9k,IK>:լ[~-@ Nr`]ؼ{ <ċXmoH=ԫ[6U8g˛?>ۻ?ۿ?`H`` .`>aNHa^ana~b"Hb&b*'c2H8iA5dBvu#"UۑC.dNS$^V^eRDiEyebYJ<1C4pKf?j٦ТSF@0i6G#h)$LphmBp*4PTvv3%: 4*/'Fj Nw`l%)Z4RRJ- tz+1`榸gmNIQ;.S-%SSLΌRrjN RDJR - /ȓRtS6k\&\#OhB`@WrhZ0crS`p,X" @=KCQKzWlTKӄ4p45LG'.Co©'+M7Vc-DNrr㎛hhǁ:5C(]PE. v+S^s~*k=3>+tll9s{B #-8qob/kyGO>?裵OQ?ׯo?p,:afOhIT9խ Pẃ^@P\%7½l2Hx6 ?pNыJPXEs8>q};8E,JqPt_E0vы\XF3хł3Ѯz8ˣȱ9 ÏRC  D \") Hc!-9I1]X#Q I_o-bx>DKỔ Rrٳ6ŗrbSKI¥n |8;UOwƋpe4yFz7%ښ,כblVr H7̈́`E,_y8O&E[=him*#*P-ce°%g&P{[a wܒ>O_̴ P ?u=bm|7/yO0~T!ꏏ m:bG?i>I7cu׼/>A(Hh Ȁ % "~w".b'G@L7P3;OGi4 5%6d 5SR3ܸtp\DG(An;ҸP3ɖyI7\}()39;>",C "X,%8wy.p&i|N%l`3\l8e]p7Tz2c #MJ*$l0kpsW`CMXl!lH Bɤ 0P&Q#slډ;i:3qaSqwkSWi5(SY<ٟ._IUQCAStϔGg^*7<#(_kIkƔwa xɢ#iz3ZDj.7F9ɤF/VzuWi':TCsR* XEvVvt$jd@9YЉ2LV)yt\DLN/DFHyٵss@4$wHڥyZ֧*9v:Kss 74ʙpWŨJ-1jpl:YgM .*'Gu<g]kKb8 ΰzt"U^EVd%M ̊iV=|Z2լ5AjSaS^=6ú1I jEʓ/:f49zK _1Bj/a" 7kz ^~@*XD*Kj:Ip%ԡ[8k/J+FIe5k3[l0_.1(#wucʫVd5 BFe~fHf<ٱ)PīJr[l~.Kf@zxqgVڵ9#d+,K9n+J-ۢKzCmlgJpi8g륁fhX'N-AvgʤoV'pC^zkY~6%u{xA:=ߋSZd7[6AC#~Jnh0&_KC;n8ssk;+d w>iK|V۳6N1\{`a;0o61Y ·ؓlT{P3";Cr:v9!oA,e}SY7+BTq]A#rY1[tjYo DžHup>R\۹)H@#I,Ɔ!3NJ #ط(os:(j7w33Qx7L[ V'WiU7BQ`DW?8ÙYxNwul}Ku<ˮ̯xj_M\˚{:mm`<̫wi0ߌDklʧ#P*f:ziWwlo][mjJ^;5 > )ZS,dύmv=OY̖ wy=G>PL0hL7Ǽ{H;{!zCb{<}=8xZ*EMAC}U= yc-fKk7h psrv:J{+~׃M؅m؇؉؋؍؏ ّ-ٓMٕmٟٗٙٛٝ"w*8b6}ک] (al\ڲ* n8Pڷ ]WmEmcܽmF6} -%|!mmHXǿm")Ը,yXpy7H)߹+=0r-+ 2,z,e<*Y9AHZAlHɩdG sImL>ے0Qⰻs P͌+ b/ -4Ϭ㸼ꠅz岜X13ku][#PK^E~Е1eo oqn1s^ayp|wtm>63oy燴\뷍Y iҚ~yhc3Rl)3)a4>lo.L΍$Jw8Xv׫hhywri\Ic9Οl.`͆ 揾|e~~О&. />ێu~=< ~3 ?N/ reJN ^g  נgͩ;(llɔ@{˽ݜ_@cvT:l==+P W'Z]8^Z/\?X _?7/joֺ)r;13s?isr?n{OM|O@1S_OzyOO}PY?`dcuKQN\m̗X5?b ?C=ĻSlJ۳ڍ?Ow@@ @J1Li¼[-Vmu}0Pp"0Q-P1h rmBnp PԐR-UB3qs0m8!5Ձ--4"MB2@cMXmr-s0]}>^~?_2jt!@5P0,Z}I xE ALs0X_"X,h4SM95ֆ5 sjTSf`k մv UX;.XTzEvm[µ -ܲp{-ߺv}K߬;3D{e 88/=ЫbP.O+>¶0D@PCYn2M:)qDUԅś\|Q1QE3O`{|Gm HT#:-ț4H!4-I$/JtTrPL:O5p pZsdH <"2 Dc`96`*'#/[H9W33͗$:h1*5TO5GUtfRX_RZaUI_WVKbQ5V"q-]\fSQXMIggEWe}mu\6[?lJ-A@)%JOPN6#z&TA9v0sW*4E`=/4'Hj]hJmI]*~Yۘmyp^gS.^h~駡jnNZkfB{l6l.N;ݮ;k^m;^KWĎX_i@2.Px}/w'yw~o^?*֖9$4`?eJ~_9؊p\Lrr|@:Y4 CNd_8QzQ&hkvlX_y<9yCAF NGTr Tl4័ k0bD.%kt5Ibtȧ@c!yG?X)&ҮJ\W iM)+h9 eM#!Ab4ّ FS^h7ݫ ӨLsL,wF$ yK_0q>O1O`fawfZwyMb~8YNs[":NwO%)`)P UBP,ҡD)ZQ^F9Q~!HIZR)UJYR.LiZS9NySAL7IURT>Qu*LZUVuYVURXZViUZEUq+QwVbe^W`gּyb~ ,<@X^V,d_PS2 8XӞ6CQjMղ6m-ls` G5$ n;Gzգ }*if+Y@ x4mfA5 P^RJtJoMt96i7Aj*f1*6R8 $=:al_9gMih` y)L#$&r3I`OF2x4})ȯq(&cE9򌏜$ְ9ˡ> PFnʵI{4͍QmlkK @pw#h9n/e6rW 5 ?Ȼ"3||MH7f.OWW|u>$#c&o׸u^ᆽux3 :\Sʧ,waL{ȯ +Y > /S;ԟi Y/y6zp@`Hǎ8V*p p Ջ Dc 6ܒl)eF#@8TD2p.bJ!,~) 8BV. i45: .IE`h,UP̔N> 쨎v( Xp -xD5$iH@ kd 1"-J$kNh&QZ@'k,R n'+R (pJ0G+.Eui7rC Ms.$ .M$ n&'*2ı ^cʬMaFqJD[$:QQQ-D1~OcP) EB aL"CauQ F~1 B!߱!eH.}ԮHIRɜH'{*(qɨN*p#k5ro"!uld('k&++  tJ//(&.e/)0oP_H11s<Ln}9.  I *5UQ5PN`~Sު5VNXn7TH_Mfu9C1Eɦ! rstN#3T.h~,hPw=sc3 `!b=p)6&$s*׉7h:m)3R0?y"VcA(D< hШ4K+X6e7|9S+8Bco5< ւec,%}1vyXOo!U]i uPYh‚|#Y}Յzty@ טK qDhƶِ quus[GyWvʰ \3Ig M%{n1N/ZDKOcvCw:~5/QQ[DSX=0Vc2VeuZl]aiEq{Bqg\A;F-UTCYTMysT9\d՘UhqvBDzhpLTH6|r̥yqTۦ4ۯߙO=@^ ٤5aX0k &&oj&\6MNeE d*6_{M(PRȤ*OD&r $DDZ!^ 3r <@GoI]5"/37tI*L]"}]›v})|(#?P4`]W]!Ep:Y阾]4wL(q؟igAO߄Ouٟd#g.>˳V8]@==}[Ol^[IUFћeUmETcءcRq|w,ר~x]=%M8oP,up}'Wsɍ }r~ C2;ŗnS&H+i&_:^r0 Kf#U^Q\yM zYAMwwh_qTKeigQ{b |K훗{I#rƒ3l,Re$*IJ ɗLքD8.;ś'DŁZaCXق!܅!B"&^ۡ܂#[ a&!CXƦe/h'c$YkDA0FsYAqsdWm:{96e\!E)fnDV^CW@pƉJ ޾Q~kW_6xZN _k' @( (ҤJORABi\AxرOJcԴePlne$ R#FŠ3V # #NH\x$1 s1eXl4Ԁ4X܂֯UӮMk,ՏgWr ep_:&W9tƗ8lMO;36o慦_u wn*0EQf-%@,J S68_Gwb5v!pe6a9 v8Ä)bl 18ފiD̍5E2ӎA 9$Ey$gWM:$QJ d]zPeErg&-%3i4'y'}6% :(P &*%e':'}d{ q)muR):*z*䡋ꢍY*)p+)7$=Ŷ',*,:, +b(+cj-z--嚋֪n.;/{/.>Z/ <0E +:0K<1[|1k1{1!<2%|2)2-21<35|393=3A =4E}4I+4M;4QKq T8:5Yk5]{5دrdW]a6m6qcٺ00fc)7}7 5z&Z8;8;\xݘk9{ڔ剓:ꩫ:뭏ؖ~g'A{=66c}u ?<|hTp9+Uň!=k}ܣ [~:oE5^w/}򳟃;@*Ё=(BЅ2}(D#*щR(F3эr(HC*ґ&=)JSҕJ bJ15 T4͉ DZ*01EE@T'PK*թR 9iPSsrUK=NUӮ49[UAV:@[Osִ>=J#Uw*`+ؐt5May֨<+zտf)[3Tz e׾T:}-hXp5Y f[ŚlfZ~60iX6-W@0}-v]M OQ" .QYBbk!evjsݱu9M /(`^w(HhbP 0T .K2$..P\bWņ[/x=MNKB&rDd /,eN4=m,bkB~ËVõ0`k1؜$VCgLg906/W!-` ?gʡ,}gKӧմj.zԏt_Amjl˨kꮪzԝ6cM[zuy=j`szֵ֤{]U[&A0t[Zx}r9 |"b^κϯ^[z׺y;3=G?߽Yuďy78'`XKէ ؇}'??՟|?y2Y_6DyYc9y] ٝ0 88`gۍA՛#޹VChY兕ځYY%(y h=_t۝Fm_`ٟ _ !ޠ6!>a:NWE^LzuɔƁV{M1 !p[O}VV >[#~ u}-N=n!'v'&%WaanB mtasl`` "9əYFqG]:,TN$"c*u}"5Դ]56n&:7bc4|c6V8N[8c7cx#:z:c9cBdعI̠ z۴bmb*Vuq#RMcj"`"0FěƛfLdD1&)c :V^93W C7"$G"%7*66AdBJR dTU&%U>%SnSb#T&eV6VeWcYXzeZN[XQbe=bee^_^^^R`$**aDGdMV`"z#Ș/W|f!$ideNeDRW}9Kf5l,a5,&1'9%_tfc feufgcv!&axɱb>sgtgx_w'ar秩'~^|~'}'=m Fg.ۊYfnjXuۂn!("w&j!nL!/&h #nfõ݉hN nn2iM'c~ڕ~R'Zgbhyew*isZiyFDUzǕfin闂RizFCii.)rii)ii"zj ecY $IݑI&"lLΦKZzh#;K\}uXC0z^)iviުk kK")*kB+V'>]*eduGlQR9'~^r&.R%t֢B*^qؤʛRQ*Fu(\qXxXlظ[ޭ۾ ݑdw$Rh5XsŸmE:IN׷"~Y+ʒ,bӱh}^_mu,F/b":,""ł ^d`Yժ-'im˱,jUf♖Zl1G^VAIV*-KI`KY[*ijfjyhfv, jUpfn[xa**b Vpr.nK?0f/../6>|\|/^/fBn~////oI/,A/o/W0T'07K?O0TW0go0J0 ω0  0 F 0011'170?O1F1_1g1wn/g11W&±cqG J2!2"!'2#7E-#G$7$G#`2Kir*Lr'V'( (1')2!,  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OFPq `#r)<+@!!5 _RD@8EBOLHH@vx9xdBk4IȽ-1#![JEn!mD!TY=ȅ5CMdf oC͔S#)6,2-^DcVɎ, d&guh k rj¦DN#ҜMCM ("%09_w^,X7LG5]ƗvnJ[> T~'?a5_6їEهH̀DcD'UAKUlŧYA~)&FSFTT|Z-y(O/8FqMΑh_+G·%nu&,bDb gF2.C1SW\2dD)tz@TT]v6c O"fnFҩ(;qX8G!nRVW(ٝIbzM(qhd9ȣD䧂xVCY|x PE)NhmkBpHxg}j|@>i&yQX)aLD4K]bj]ۨZ ;"aefVuDP'BA!E1Z e&WhYUYFǑa&t+N̈g5M;cg^HpG$\oa|DpɓQH+ʚk8Y`QFJYw~8@f]R`ؼN8~EEL9O> N(:dOt OBemnHt=w% ;̸9'!Ğ^;;/~΄o|rP! ,  $h쨾i´Ұ]n1Q¡JPKO%a a\OBQJ.jRaN4Q|rl@d O~p|ua$fhz~jPws(# 'x/H)WZy8m|'$! ,;,  di@h,oθiyO5_LH$!TT y{RUfKTchbDMkAyf5 ghy*r$++wT"*#+X"Ly#0" m$ )V \"`h0dW$y}Ie*IV͵*¸$zDƽɭӊ@#z <#5xܡtjŲ,W3SAp"BQʨqG{6>! ,X  dh,h+ðүn1'Pr0N Z9=^%7E!rxDD!Ix7 MOzk~@r"L|bsajyl#f6>9?S}($5AONdVWhVCaPH! ,u ^ $h쨾i´Ұ]n1Q1,gS]Nv}b /hjĶWx%qsD5|Bl>:O!! ,  dh,h+ðүn1'P$b0LjDV.x0R|Z;=OgB}^tMuld\*/"~<8HNL<tFJUDH!! , K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!,  dh,h+ðүn1'Pta7ũN.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!! ,  $h쨾h°ү]n1O1 8FtiZbPPzz Sp6h(VNv*{y@ <w:N_Gm%x8m  f@h44#/UoN]XIKF>><(!!,  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q/gv$ (o@2\s:O!!,  dh,h+ðүn1R&O b<&M3"9=[e+ QL8 O?HI~8Vz"|x.j{PR}#'4y i"/huB' '(A>>v>W!!, K0FV5׀萙B10]OBEԐT&IMN;W5m_ ;ͤ!, e dh,h+ðүn1'PNfVv}1ĄHy Tbnَ1oJsZs8x4(+59{BL!!, f dh,i+ôҰn1(yRΔ**RDz d3i턚z`UktwvBx859/FX!!,"  dh,h+ðүn1'Pqz0 .( AS *BzPEdA|u@c0Y*9"/zv$ (o@2\s<"lwx '8q8*Q zJDNFa|ZBH!!,1  $h쨾i´Ұ]n1Q1, dy4kM0*LN4QLYN90&)z<] $'lbs}#9"5{WO|\IF@'MaBsG!!,?+  di@,΃x/-_(p o14._M*шh ǥR(M  iqFx` u* + ?Q$X#~)U/*to"] _xaf_; M* i?s$o*#ĨZ ɲX$dƻ ,, mI@r+򱂺҈F, XBǿ,|<Qa* ̨U!,\+  di@,kl4}r>[nkH$ذūem @_ f]l60Z\B.* 9ň@#cdrhz"U*c i%{+Z}0|$*)Yu%n$uR3ma"vV$ +tI'x#ɜeۯȓ}ԵK4_- (dސ6Al qLxq#?:! ,y  $h쨾i´Ұ]n1Q1, D#0}%\K@EHJ@u@-F]J8MHf$'|O!! ,  dh,h+ðүn%O$v $<.XK5 +Ř'9C>N.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!!, g dh,i+ôҰn1(yRΔ**RDz )E@;ajW7Xx{zBmvT859=FX!!,  dh,h+ðүn1'Pdr %%rR"#p@,wa-N@{v}xV$)#R+ n"* K5I$|~ޓUC`$`b00c„${O/6q!,,  di@lllt~r7ވ.#!q5ByBUiTU0*IDA\.\bt!S^"yf+N iDQ ma$Z\%^_'*%bP#n>$ +L[Hd]c"Ͳϸh%# v3%3,%Xp:JJ CgB4&q"}`q#+!!,  dh,h+ðүn1'P$ P.(`x=C-hM.YBNt4'|@@'J\IUJiΤ}:۷p쪐MEu›&gTGH3hUx"h8˘3kNE?4 TD-m4h;&":&Yϛsͻo- ,S&] `#A=ekpέͽ[{d&LJ,w%{Bq|JMϿcQV_{OV2 g=T'8mu HpF8O'AvFgM'8㎴T#bڂ06b#~Ƅ"s'7G/Wogw/o觯죏I/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBLfV>02 @$8̤&7Nz (GIRL*WV61@\XV@⧀$`h`(l`<@X\r ќ*I,*8 B2p9猧3sS X'&r!\1`t@dSVWXg;ІHMXhAJ=9-,xhGKf`B,ϙI4]L:T&E@21 Jϩyt)j:D h7z Ut @B >]ԣծE%X1Fh*<* 蕏U0SY˫eM0~Jby'PzSvbV-,S˳B@f&p, fAMC@mi**{"=[p 58Jm`{"$8 SWurB܌&0Kl}+TzS@u [ٖgvH{͎^"f@w^r7ŽB05\) @tCc_\U Ε Xmp*ԝ/Kn7r(L]҆~9qJ3ՀaJp%S]@M,f"YM\a(ˤZ&x;7]p,k3-YTu]I*X.u^\Ty8XӦԶ&ӹZxwߩV=@e7zo=<ٔ}k9nc9Md\2VՊ.h!zwi#k,:`;OdG%΅97|}|{lc_GZy*|i}k\2fHWwGu7we{3 { n)gi1}~{ҧ$Wr_Ձ(otjn-jd{Ti@VwPFxE-7$hg0El&oCxy4[s6Oa\^gpW%mEP`|`b4Be EO_W?l6TiUiok5pg؅TvorZuTsCreWVF%*}GSPRtv~lxR,uLhhjB5W"m0ԆJPtwubgUKxR䋪X֧yU^TօEQTĨq[xjfTՖ{8m՘k*xm6G[{z7~oZsP`Sei(bR;O>'a(XqRq(5 6Gorx*[R咱Ȓ("HVy@V=X7t *- [4bz؃0ōLN:MIT=jňuQ [Ph9b~V)+VfYT程B!8bJyLa(_hkwƊwcrY3Uq38jg%TZЗ0ؘN5b*%kZ{)'(99m&BVeV,]9siBrXHyI،UK/fiCgvN}jl_q+,UVUl/yg`yVmȞQꉛJX׎OٝIVVx(ɟzleK؜oוA YoP j%s(סT*(Ji^5r,z!T>ʛN jpUoFxI`J6 YxVYJN@kC4mtNK8ȹ~Khn%E INtZ#JUU.՞b d wRuт _boJ +奤fT}MhZmx%&HP Z)􈰶Kj[CZ[*vփG*mmo*i$D(j;xqټ^X6'=Q|;ֿ멯bwku oumxfH~WbۓYYʵ{Y#wuu)óٜXI}̹YwH0lzI-LTC@[kka:PX<*KO Si2Z_Rqċ+Iz)\4QYPYVP 'KvNe4YXXKY2Ou,~`Oܭ M3l{pvv~rfe^LzΔZu 5lNcP{8\*ɴq.t{4x'\YΊxٶf9 *oK4P˫7~n͎TuK0\ɟlJНPܼi[2wК',wY)|zNedbxLuݼ-cI2.fWU|>qKkVSjb;̥{\:27'bX0XZ(bIrKbKtlH=-bj~u~-F{.-c) M Z&(=F}>H ixuHK:躁LM^j0n雡ޟ(ꮾ>^~뺾>^~Ȟʾ>^~؞ھ>^~>^~?_ Ov%?A_ "e;aX6<a ,oM;QMbsw 2Q*J<9lPmQ0x\Ь]I@]4󠤨P |뤻WjrŠbO,R`c`ԬS s_쫺hJn̂p}rOhnU?chcg\6ivq^y0$Ď0" "0**+020+2 25!*:I:1D" ?*'J;RUe#&#"$ 1.(!?Yō<׍r).{3dž PA&TaC!F8PYxդ*j# $F[8 /2!`xG\B,t$GP P&ʖ 2WRwԹ%J!N"ؓx6y f W(ƕ;n]wջMKoT<9"7iiֱUH'nj紑YN٬$1ԬI}oqǑ'Wy ud9 A]pcbߧ/ch$ :n.ME3- ”(Mbc-)yuٞ Bv> qX XyW5.ۄe\;#2S0'pٕWT}|;fIb=WXWjd"y]thïPF(+X`3 h& UO(ՂF%b XDly|i4КqаfX¿4;L_Dljr FT!eP'ЁKvnm ǶP_O(;, oqåG3h6pwv.ȹ.KfLW$t@}c|$)h"kAlH+AB08ľ:"ZpT!<b<h!|!bE)rjf86 B(@ HO0j w)ȶCye4Ѩ3Q5B2,wh е˽ ;Y8;1p@=x\Ü(FINrpL*YBRH㔇4)QJU!uJ›DJYΒ%sZʛ//Laڑq41K8Otqt3M_1Sf5Mmn7N\S49љNut;OyΓ=O}?P  D2 h](1 5GAJ" @`o UfQUA3+qҐ9jz&ᧁF7]8SN̚ZP/64*!sN}(JUV5)mbccʇSFE}@ ȵ&hK@X+wBB8c0 2u C-"X^+X@BHMT뭭VQG[Kvl+EQjkl":Z:fP٥*:e&Zm@PZvML^v+h1ZG$g-Q+0<#FIV,'mQ'ϐ) ~X :4x`A%R Fy)\0vHk}ݹ ɾ`WQ /4*6JY~F4wrc\ \bwm<5% s C?[ ."m9ZM5-afTZS&gYFႌZn'!5$զ`oCuMsU,U[yZ?vG+{@W6,YTo ftZ̐| @{&|[Zop`Nz.jT9i"c&̭އ -%.SrroPCuJWn=$59 es\~rbx:'>_ƊUM%xÓ C,oP#*%="T[A6!GF#n! 0QcmKe_@n3 t?yUÇjN%auDZŚ!s-ɸ"=nsc0;đrʑ{BIwU|9 '{L|>u5.+CI8Gmr9I@.bGJKQ:K\r6~7V;KD!y{ sTNe8eD15,F%P"0OGo cUl˨4v1k\o0nN5N*أel 3c]~pIV|oשּׁ|*Ӹp n瀜oؐPSV{R^0|Pä XFî ,lP48+b@jY edn XGP`.!øK ccdqm4 g,P=mX0aq| *0V Ol$VGb@Jr0h n(|1XN b\ D_!qmx`cEQFcq}&{k,l6z`&w0j|rge,R7G!)Ҵv CsQ8 YMci,T,tByt~7!_RЍ$"zu4"*Č/Lݾ`!spǫx *@+˲z 2hOȘ&6L+;LD+~B’hL-r2u~ M*6!~( ƒz(Z,Ct0-5  H&!3I &.w5 Fҁ:e`'9:-=Ђ4 PidCP Ӵ^4)3;{&*SEҥ2rV<'=l+Eȓ@)hΓS;?wvGz? @A^.v aia A!tv ,|4B14CI6Qȇ44DB>D珒L49RVtZ`E EEFq4GutGq8l4xD~THH4ItIII4JtJJ}**/4L $R˱/dM$-V%Z{rRK, |n6,Pj&ׁK=_- Pcۄ#%4b-/8\u w}R0RN4k!K),`1D4=P{ጮ8&N)V]P"ܺk#~XKtvL E8_r b. 6x!Xka{p r <5SNvPX?hVDOM@.OiZ.pW5R,DQ":2z#6LS5NcX SSNa=l 9Lj\[ѠV"<0noH?('҈DWq_vWwAz$OEOk${utax#%W}0o 7B:]JhU1 O3P& )\ |uE/ 2 U :ukᚪ_uO.waQ3D? kʘsb([!Қ.q[VrBW#Q{V~[ķ[ClŒU`%aT:4  EJ28eKqکw52\-F VK f#AZy-ڗk/`"XyS5DW$oq-lE^~cOĺKaD@T=,4m;;vɀLk ښr#Nc7AZw ZqN)\Ou)6|`޺k;oAie[dƉ#ʏeLԧY8,!PNYm,Ckzd8ɆVm(]ï{c23N0q;6VR+<|Q/6 C]uDۏO*ih'T7Y|/x`_c]o3c.[ԜbA|Az}ȕ‚}>"[]5E,2A4ïC+"3՝4ўӜ*8|¯AYT읈9W!ȮZ`;'&=Z~y3O; (ԓ%.'Tݜ"w+!Wv3}Qt{s>Ss\aIU ]b *t(o+"Mt)ӕ-B*u*ժ>bͪuk^ +,fϢM(׶n3v.ݺv7>]w/߾3,x@ .u[$Fcޗd`/|cd#&B:`jp(Pd#zA#/vl~C #\6ОS5B˨`޿W8 n% ZtH{HiGw}"Ss5Ġthg2PCs|sx wy^ &W}W#Hn8 ! >IYNIr[ߥWe#Fz BWJD2vd 64РcяrTKNP.7 Sn}wPx*ry"+:řt(R 6٦aѝ |YMV䠧Nhh[AJy)H% )"vD )kw) +؞*JN1y 8Kl&;ll\m,pB[1>᭯"`/ [+Nk/l[ޱQiHR HƊ}G6|0w,woǑ̠0s)|\}+CPd_҅FLRǴf fN?=] itLVO Rc ֙qKMtevjE@0),D|?QˢR Ŭٚ⁏(>ݻC7|;yNdI0?+-(^Ǣ\X '%b@Q #G&F'X>&? 6i*=xK㐥,U\VrUIRq̕FTv+ A$0b`MuWy$A"uܠ 0H2ql <ܛu_> gFk<䭄9ΥXӚz lMFRMjO8TSL4iJ~ ,x 9%d&}ص7ΠwkbY( @$81p -9Wag3[-mv}¬(nk.D,h/9 hՉ.3*ݑKA|{xC{b ϸCAݟm|}Cb<ouk:9k>s 6y%BBzvД;nN$t^A5%ҕ>1Mkg[ ǡ-;l,sbv:6~`Im?ހ aqw}muNvDIxK+~-A&8Gl-%X @KB/ITu{m6ޛ Q-^Ռ\˚yW 4nֽ'0:}7V|߻x;.~k@s4/^Ś}\GI`kji\ I^"U uO]RU[rDfpmui-x99=S}Y1> U_u:] ^1ɛ `]kF# @GHQ`̏yC@TVEhCi\l X Ά o5g J r' v!dKL]1Š 6Q *MAQ.~AecX}N~ȮPRcF@܈\DBɘ R\O9ԏCD^ ZIZbυp $ dDd>l~UQN\|HO杯ڻM4b0%0`ۢ,#ff[x|&%Z=^Fc]E!Ob$Gq@刍^q^0g d"Ə ?&$2cyE"P%}yb$!Z`Ef~R\M#,&*b1*4g)&hh*Ǩ?Hucuj$w $rgDR dM$NE'OgѦ^ ʧDŵ1adRicbiȢRjƠz6JjrjꨒjꩢjꪲjjjA\k:Å1j5 +MH@jlI4(0&BҴ 뷂k0861BT0ABܳZ B4Dkk)+kj-:P`뻾K8JĪI:C,FAT@Az,>Pʲl$|%flǪ+ Þʦl ȖK\ `{@I@m2@".HX&D,4LF@L":-l/\Al-4^:,^:@z`-!a!'`A-,-,߲nZc`#- n4-Š-hbP5l⊁v'p2nb@:HNobBCjVoL|n/Pzf-B֒lo$@@:/j0\/\ojB|l:J&BR"Azp•Ю.EO爵چ.NAʫ ;0 sү2>x |nFʮ `L@fnd@.,[p0q1oJ0qnm_q $ k| ?V0pqCľi@@-kR/y4n˖ _Fldq'.r$۲Nrmr0߲qnSFd1#A r W*?sF,p%-ks2w -r K/ /7"2, O.A&j?(FT}3µ$(.1'/_qA_qL [d-~XA@;3jtLWtt1EAIWjjW508?A23F*p!a@ @nJQpsY AKQ+u`X"8OjC|"jRuҶ7u*p, vi6A\oxdQk_$rj6+5=nvoZo pĶ4wr+r3ws;sCwtKtSwu[ucwvkvsww{wwxxwyywzzw{R4{o_wm>,Hq73>#6MkfD7vk~m7\;3-v@/2:e5,cuki34XB/3AB2rS"s+"8;Ŏ28!80304/26'^9Kw@Oix!D.<9/9)g9 @0_rc.-"M &p*mqmg09p*8&\ '6!'KAڢ-'n܊ws_9C(qV ^`:>E6y(?Eo3C&c^3f9.*R934XusgnA::!1BF/o"48/ASA!<>/ױast0NB\o{6/|4̯'k[Stt0p 3Fo4 x$!e{z3[jr0p@IƞF[}{w5W k=Gw3BɿnCϫ<@peG6}=91,2\4sbH˲r9@/c4X=`Lto9+7iCâ~BgS̯gF)3S>x*A3{~q>^΢,KB%?xCC :x+5;|w T>Ëxw}.4#o+\!#$!A&)CE2<(rʃx.fjdSbQ9{,4bm͚R\Ϝ'\pv5ohfqc6quq/2%OC9żt7՜Lε\noSXAg]P:ᨥ^=[`pxcOvi޲wa[D]WtMmR`7Eahg}?ec}3N`~ `X k%85q`fiЃBpb" UBЅ/a e8CІ7auCЇ?dH>-@Db𽘁8 C&L.}E*~f4d\D# S3@!>Hc IDwF3я$͠DѐtԔFdґL!GV_[ؔXғԣO2EcJVE䈆Z9eы ^Fl-Ef娡9f2v;$eY 9MTf6VŗEg&@64n:@4Nv3L;9O+сg>pӟԠEhBP6ԡhD%:QVԢhF5QvԣiH)gԤ-IUєԥ $^:S 7]MqSꔧ?gLMU4jR4E*թd&}TҧUŪ)UVrLVDjZIUY>iH2Yծ&bkp]A n]f&ew[׿uQK}ؾ1 lf#^avc5;ZҖִEmjUZֵֶmle;[ֶmnu[ַ.Uy\ϭ(iqKe%WOn-r;>nvR=APH(׼;ɫ{^#uZo{I!ho~e|x 1;P uP'\ZJ(%,fR'FwN|M8<qS|H0U)+q"Zy1j|cwSsNkd&{}ut=hBЇFthF7яt%=iJWҗt5iNwӟuE=jRԧFuUjVկue=kZַuuk^9w(vSp; 'P/E̽*hcM8v{ۑHiPxNXQ((riV('ۖ 'ײUImޝ ʎ/;J<:& }`@5(|4!Y /K=щ1+P{-yӉ|{?>wDkΈ& 0<pR0do\wf"rb I9 LSQqenbG{<  C_40L 0Ãq콚"0e!`?,ٸM_^(c5h=f_ ڸO#쐛G /qjXg# hU@ѡR^D9p_e"N:+`8.&.RA牎{=6(; )<`x\%Į{18c3ܩ' ;{18/ <{: ;s;2cs;8É 9a+?)ӻ +s@Cȅȑ? <-$ 0B hp7԰%T;@u*,h:18{AX>ҸH9:(k 4#Ē3T۸K|p+FP%2Kth$? ~RYbҰvCp_|EC'(p0)(C~@4FOHO@+D'sA>cADdG=B"BhnX#^d9.E;,A01DC(|;@94k~`wDz5J$;`S6Į&l|GrDcKDIo,nLP@K MG@r4BǁĂڛH_]{ -_$HTVʯܹS?ʎ|;R pdd\dK Qę˂GP8֠JH% ')=R7T@,4yS VHʨKG#24M,|>/o{լKw?JkͥDLɿLB+$ΐ ̍C7M~1|ȬH<0H@lHЋL7Ylyx E7@< ;T@Hh4]M5Ҫ8@iTO6 , PpA}8;Q|4Tů#tMJ@=2/:擾+VVJ$zK=!LsH?(0P@\h1,SS;lBj& SoJaXU0VsK8k!OAӒ4 -jXӈ0iQs Ʋ,)=dJ451  SЌW'aLXSQoRρEX#-EX]X3ULq;>UO̓}SL6b3 CɊuƞP,eă"XJȜBPŔ5ʚH0խ$ZR ,]Z96c\MDe|0{Nҥx\jp N\]zXt m۵ܽ]5 -RʭuϹC_٥ _?[S\a-ߕ:C%mߝz_m-E?&T'<>9ޥ%,="B<`%k EP=Q|&̻SWj~<{;ػÅ9`=%'ԀP7⳽%[j=`TL+ \H.NPBۺLE(ՍuSƼ8\DNYm8/>&i o@= @L-z$H&h;\CB{c,;x9Lh 0Cp-9%@S>@n q4'k3`b+v^DQ|7qP73::djqE-NJ E7<>@H Rm܆ong`|Pߡ4 &aLxaL@gs\[ pwCY'h rCJtH}yLʶ6i8V钎ԕ&)niv!陎Ni韞ifi&6ֶc4١MfbT5Jׄ^DNHEnLC hPC^*ugh@OtJPnHd@ {Nܣ`NPڀk[CoVP%Nnom>&Fnݦmo _m w 'q q@q_pOp qmG҆q`H!p p#G6c=kKچG%F0`mpM./&/W+r)ڀؠr,U5>Nr$p g"WrJ&OE7HtK7ItιN#P#XQt40N'T׹`u[WWuuWXguTu[RvZauc^uVTug_vh'vfW옿 &dfcE'sRN0d<M2Gf٪5 wysxds/S%dGb^vhoTvSvvvixWvexQxSxxP/yQ?y_Sxxy\W+mwU MxGfo/_7Nxz2_{7|ST71s;'pqG\5 (n)8PIJ0ExDϲz륗CF˱No\FoJ@{;=m;P{DkϷ@&/oUI Z^ Q-JCOR!b[Qp|^f'T(|,oh8ߘ:ªm}-Jk۾;Z|K'?<̛;=ԫ[=ܻ{>˛?>ۻ?ۿ?`H`7UqZHFJ >`h?mpU%Rf9,c' fXEѓL?y&d ">vNe8r PbVZXY+i4ra=:@9:E" hM%CJYDqWgR(hO$dlf4(-%(pEV6%}~ *7B*pym>aБdH.X&ש 4)pcLA6p ˀcσN2{AcS@)2Rk,6 [bj(2=PhN#9G rF.A. KVƛmM6GjfqxY\-g<Ayt)R,aShBP8rhw& ,lWj#%R&Eٯշt8(' =VAv"*vj 7 ,\ueNθ׈,FLdӦac@8n57o=A˶GͳV3%I||,S@Ahvtl =Yׁs_%.hs^8 u { 6 2pG?Fb 𾀈 ZZ4=ԉp`P& BLiX#qDQLF70IX]B- >xF:R̴`,|^D2Q4YLf IdNQ vE3~!nhM$RaqsHDr_M:!w\j ,cUGS[ǡ) qVt$3YnW>8@mH Hqt2YG2J$/yX7R1) B, <&37Y LqB%5,Q7 j\(DQ_,46$r[C?zsHY4ՓTg/yLKBT+LfV#}Vڙsb IqŁ'3Kotg4>J44JQQ "Js|ʁnN)$j'zNf2B3R: N;7'c_ִ tR h!O#f 9-vb}Go"ƻ`'q P*4('%Eͺ+ vhLJ2np΢GkSL%4ƹ}Y),9)NȐܲzyG% pW\X &pnw |jmzgTb[}DV`\Ę`y$%c}WW{ e(,E4Ȅs rOr#vP!cb#@'X+T$[ݱ7&؈H =z`^7v|r5y'9[Xox6:6BS^3E֤T` }z},S\wh 7` ch)xfyy%q3jsIᖆÖurٗT@2>QcseX谘v x6I>=#@n&{$K˵R =HRS@sC>MT4>D8UwAeWijL p*/L/-dn@_Vby@cA%/IU ՝_ɝ7ɗyI阍ɘd 6Yz ɞٞxKyZ389 j :6ZzIyyzT"z!*?@`&]l?u4Mw> PȊEh{kǤ7$Dy\^"dwFcQ rDv^' :fmc@5 Ga-jk ڢI ڢK z*J z/ڧlJy: Nèo D B pj*کJ::JzzPJ AYդDͩk1}f S҄Vֈzs@\uwpfߦ^F&_0heI7OV`:@ *JZBj@:3Zʫ K밣O R7TDJpUHR Rgd<.~J5_/*FU¥?ZUB!Փ溲[{s%td^bK~9wf77Ia&Pخfhb:SυXµY %e븍KPB;{kZJ+{۸ۺ˺;gN K仵{k+͋+ _PTs0#֕Ze_7{oi'%?Kݫg̐bxk Zig^UtT;{ \Ի{˼K kܹdA| [)[ | &( äK#¨kْĈ꧃tv*EĄJk+xQj|Wz,6W;3k[$cv\_{Zk`G+k U!d]IUط}7ZlM|Ył%jȌȅ@ő좔|aȕXĉ]9ġɤğ\ʣĨ|ʦ|Ȯ,Xɯ̢|˭ɘkd_|UfDI~ I_hдKmbt+`3bvǀ 8;T,\˱ ːlβ,ɸ<|5ȼ,,π˫w "-F# fM } ="]$!m m+*2i6IE\eQm;MeLfvZl9ju6q( V,'SKZI\P.)i0 km}nr=emst=y|]2]o-6=؄=Ӏ}Ћ[FW؇lJ}+|c|q 6sp]wrg#uQ[TI *7[4G', 9plS}yyL״}W~S*`\&CGƠ"'xxk z}7)yLճ]Ǵe>9 ~6h* :}d ~Q}b[lB.s}!ݽ~1Cձfs/A}ugDMwI:-[7aRGmOrLqfsEdp,';??;3AnG,HM+aN.SNUnWY[]Ha.cNengikmoqD1unwy{}}rn臎艮.t.>n虮>@.n驮bNNQ,@n . xNхMl^4:l֎خ K Bz!|V{+5kn ./.60- @cnu.^ވUVƗY{=E %U*hgOExAyږi J h]@=4B/nx51S?G8XmPպi巋ԷQn`o mp} ܊9@o.fNݐp O/UC ==c>-k<4<#vkq|15 ?x=U?@4^e~KM ?f{총?J]ϭg lcÿ-\{D]1W^?@? `l,N.dn],# J3:Vmysd}0P # a 2@ m"2"1bBbAR@mԔM64U4mTW"8B"Ղu W[940LAc B=4f-z$t o^_bSa]vtѠ5טY`Y2 B+SQ !I$t5ݾI< EZG0 T3Bғ6c%ړ"Gx lC$v݂zB _#EC{P?]87PLxP-NCaSQC]8(X&Xe5&JȺJrEXe5Mt00 W*8`YJ\Ҕc_cUY` >6&c/ NrIjmcWy8Z bdd,o#>Äs߁ Ro'{u5މE jvŅsG~c䙱c_ew 1 |6Cgs3wb0z`v` ]֜v9hn1Ս2ْM5"<7 l1%z 3M%4|*T9IE9 @ KUӔ5PaN/wN`5exy6ou s]$aFC3&&֚#,Zof#LXu)D_~_HI 0>9!JL2da a|0rL"QX4@E O fpaWG>PPh!L=C@w htmRBG̋(=Bi79mԢt.`}Cɷ(<Z' N$\@8utI\$ a5"%V q E1CRtj%\W~rAuڄx2^3/2rln홡a.T_ds5v^>vmS4_ۓC 2ˈ @GЉO]l3F^{V^J#V堎Z}vzXLC֘4ue[io(UnS`9†(u؋jw Zu#$` NZcUej‐S9*Xy:^jP: (Z-M(_vwD,y8`/|g݅cz~@ 4s ,'Y'sW۰#wb'YЎzKu%%V&̏I>OY"i6G"9szT&0O-P; Uaq{hl}rg;]m*OF@>Q{K:V/ v8y;+0U^*Tyx}} S ukC\r;th办s؍O `B\ԝ-{M\4P\<]H7 Y{'bsꃻk9MZRSGߗҥӼkR,(ϲppm @04 Ď` TlPoR`G̃@)vgyHwN܆lJobg Χ㪌`FxϾ ީ(R n)0tdL4(N-iƋ)\ȰдBm *OX0dԈ ~ ϰ A  uO@!gϾ@a20ل ]쮪B, LJT6J:)~jw:Er݀xJϔ (L^ .jGmhj/e̬mp_p kA摆&!ibb ϬAQ "i DJQ!!.id$+ -[(:8# ˱4R1j '0XNBZoD )Ag)Dhk,ɲ^,Qqgwx.Q#jm̥:@$%NPX\-$M`;Ocm--hÖJwx`J'b5ZJ vi EKjHSI,$n%+ h tP=jN1MNP&RjsbQg>A(1Q=6I;pQDrq KŐ<)QsPiaL5bOp R i(P N00Z̎Xה품M|͎m4,92JێL2^_/9nbu&t][ ȂZ|d<>B1UQ)Cis WQQ:$b+v` >vH$er V<1*h\/]@Upd-ҐD`[DdWZQ :n@K'j \V%]R4{,+hoY@p(@E'CQ#1&g1d1Qn@[LK O܄|Isg|,]JUdT~.ӍTsϯ?@`kD?w"Ch/sMHttO2QPt# vnwAvowvs7jxc`wWLwSpmWzΧfQ{ {@|w(W tg"w4LtWre~@}WmxW!!; X؁8Ϊ+؂/x uMw5Kx8^ٵ]M/U@]7皮ڮ:x.5Hݞ:y4z۱K\שּ#5g5OC[GKw6r.ͳYMk۶o 6zzPsouS;g;[:1M7[c~[;EOܦHۣ۽ߛwcU@ip\ϙ;?ۿ#\'ܘ.I-r;)C\G:r7;렲rIos.u[U:.[Ǐɓ‡ܾ1:ݺ:9Z˳\˙Jg<} JYk|<ќ\\] ]A:e#]'+/3]7;?C]GKOS]W[_c]gkos]׳8PQu|} UR |uIJe9ս (+?w]۷۷TOU ]= pLޣ}+((ػ^S=]O4ޤ&]](JCM`݀=v>X^ Y~ko> U),>e`RR~zMC>=OOO`ychq]9'~u7,};xZW" >_S3a'z] [>_c^ъ?`e bM4 O_TLYcpX[L*o#L#"1ܣ~~QKcaltՀ OE޲?j[? Lq1\2)zjh2gTz`x!2;.;>?` J["#Tc$c&ffeʁb'd)kke-h-!T r22"s(IVJUse1!ӂ^ R Q¼Q|;z cdxC;G7`Iqѝo8G#G,ňք20:+XKC/ ._n fLF<E盚.& Z)$6FYUNVqIѯl0Dbe [Ofmm W[w{!G[ྫྷ,F&`PpV+cNOG)">#x^炦M(h\D׬HTx4>kT#džSh:N4 iRYkt*PXÒ_;vqh)PR}xٗҁ ~hZsT]X߃Ja~x'N"6hE_&BԨ}`qJlYuK1$V9ݑPjpiX1Okcl\VIۏ ɱ)hQW)M$q{T x%xc) "|'(c.>~4R}N(J,ꋔꈟa) ji" %++TGbD`aFI7"Qff;V)PC e SA#.- Ba7i$髍4 F(, +0 ;0K<1.qvD&"˫+yڷ!$A/ۭ/+FRQm.Q-*L; kݬou1OZ<5U[}h5r[{}r|ucck6=h}e-wvͷ~bwux{}'g'V 2,ȚKf]rԃü@ ml2Ƅ,ﰷAJBޙuC8KS#νkwc >Ջ~ݷz=|?WY'>,{ڒLC%\F6+;@nؔ a5d kdkc Ķ8lƪ򶷾-p+\XjmR V ]&CJIiمc_r9[wC˅p`2M&(p!$oZd/,h0n\p ]dExξ ^0zI>|JxU*3˂v)HRY0"{HVTJ][_u#ZnT!F>2H0W5 `vhR(SYF[e5tegL*n~3,9#exF=~3-AW;0IE3ю~4#-@(X'MsӞ4C]މԦ>5SUծ~5c-YӺֶ5s]׾5-a>6e3~6-iS־6ms6 n*9p#9()PI0Bo}@PCտ@~0xv48vpa]E!;\ x@K8y$<6y<VW`4}ICԐNNוο:-3#]_bJC֟.#7 > Ql@v|ۻv A"p@}!*CDPn4l<@_p_+q[~-g o \".[ `n \߹ 4&7g`8ĭf6$W2f">_@񷰀 9g z۟L_`5џ--_PߝK]޿1AZ_] q`^aWڡu[\ !4@i0!(U^㍞5t!hP^)I& @ܙJ0b 2\a`^*0\bT4Ii %I0A4b$R$^!K5"s($i"*b VY6 fb#nlt`,r(.! bb_[mC.V!ۑfclH65VL!97A5bƾyFX9Fݾ !i^9[>#8#Ρɠ: !4`_DFD1Pch$?`F_#f_9dD#b@"I.C`GVd,NF I@EY$@NfQd( eQ6D\AObBZ%WRV,6Iv#~FFTdDd//^TnPB FM@d%L&UdS~$jEcI!0<Vcrg@:6Da F $K:& $Gjdha::yq&ljAcd]K`\2]2J%+"gt&F}:d'2"tJ\YDYw]b'|`]xhY-Pp` xdl!rg{u~NEq$e_"0%K#"J.A4P}&*&[*&IP!<&^phf@ja#hhfqafzlm.nNf&erFG%bE}"=1\&fsZKV(0`6R]  nҝUqnhrDBr ŧiNvii<]Y# `t*QC>䤒(X{BzhmAR@z!!dj:fr:&[pFšF+*ig뱒f/gr%ڇ2fj>0\),jB2")$).'ijy&i2v\'kūj j2j,D0@꧲}jkk"/b*R`1qi],^ikƤC@#޴~ff-Юc'jk^@"xo#f>j+JgAj0ƮpΫVjmZڦmM'߲(ir+2.l:bX)x&b䎪O)zy*Ɋ*Lv.>b**s.l]@B+6׎zhyEoA2AZ#5onTr+Pfh%n9%k0/Ⱥ n%R*Ʈ85^X$P~chʨ6*-*~bgr/hц/:)BnX ޾NpְKgjj 0\c)pio 5l"[n2v #׬3A-hkޯ%gj0z긎g2rrܒ qe/]2 [ֺc1i5ak %0_k/S3zJ);{)N,!7ӫĆRAڪ+K<0,W飺lJh3&G(-*/@gsF!,l + #t,].$5/ey=1Z_sb(Yrfn4nt?! kj}?sImev݁#(@ھ1 dƭ0j`-&7΁NJp_hDe@ 7`?6T@nG x۶;jX]Jm۶bz797 7qju6) *xϜsvH7pjU^uao0kҨc7iqNvnLo9ޣ?Zro4¦x W!=&b` o7 8u2⢣jx8,)"b*Xf9.Kpmߕx9y8ed.N95Yyӡoss.Cm13jA@t2θ+*ZIJ$J/`URqyƆ ; [/+wz߆\-V+LyRe.zz 28UˆGdxߨKH٫zW^:{]"+à^cŦ:@P@UۭbFh\` v} <*#dMV:9`pd@<Ĥ{kÿS+'>ꧾ>뷾>Ǿ>:|ᄄ>>C?Z'?7#?O?WW?gSo?K???׿g?߿+*???????????????????????????????3>?X<;K;%n}<`???3; ~|#!7, @pH,Ȥrl:ШtJZجvzxL.zn|N3yyT IaG hG~ d{fG I y X^H WKyGcy g dyy B *`|J4䉖m<.JHŋH~kK ,\Atd6Lx!o;eDv1bAU9(bl8viB"~4[' !V8+NBam%ۋl}8cu 2 &}W_u!7%ړP2#N9>9M GM@4e%}Ε7=iOlFt&i H{ؖ!%): @e#am&W19uzjS.)lO~:A.DdpdQkp}%iSAfU Ϛҕg=ˋ~WkU"~BO9E"`P@=!ܞ ׹IYf* eU}u(7Opག, O @0y~t3!Na*C 5G&N8\g"9'k4N\W)3O,K {~U!YDSku83{qm}FiWzČNVL^HK*'.DFX L p-[0zf6L9\ty_w>q]ߐ3&MIAm>'0"l'^;9pxfTOg=<_G:qi9bL"hQ :2z>(Wt1sRaVE=M^̠"gk꒷*JPZhD#3/dNf8h_ GA HsoAWؐԡJ'Gr@yh1JÚav@ERv'\w$ J!G@=\.G`Alr_C0e}Bĵw܋8GĖ#\AG*Z7faHc@YeAO@FB y;؂Y7䱶$MZt0]u ܺĒ8zQFI&=ԛ-MvDmׄpO [<<eO$T@iBSˈU BQEd4B%AT1lөlRESjۭ&$;>n4P=t '9ޖ:LLW/ OA7 *]|+v* u_Mp7Oڼ zWbHtC G?\#,?97?X?pv>C  iTc1%WVZnV3969MH-rܮJ[jՖվvC)JO&05 ZC'"{KTV7޾] vyA=n)⪈ ur\=_/ I1j!bA0MoBLLe&q%Qy[Q-Ww^̪N*1s iRPx%jvp.waj`+7Gh[`f5w` Z l` Z@zA;?T_%8h vP,H!'VxX|N6Z UdXftS!Kx0nr8Axݗ|؇~8Xx؈%.Px؉8X3؊8Xx8؋h8Xʸ،ΘXxؘ؍8Xg蘎긎8Xx ,莪221 xArA}1׀(І\@ وH* + y ɐ@Ɍ5`Y)F*P*$) p'GOb `YTp89j 4oi,8yȊ=Y1A0ي~ٓٔ}R$'Oɕ*@`I9U`ɖr 4Pzؓ 82X{Z$ZyX9yx9ytI4ٖs:yț)깊i6RseIhli܉zީ9;9扞Έ:i6OQ)'P()'"6ꢇc0JZ,z?j::*0J pG*CJ3!$@J% 1*-zY'`E^W Yz $zS+ڢWy0*]7Y8DDɬZ:rfʭ&ʙoTQ"FJÙZuڕj JjIiT *g:EPY4YD8Jkۮ y ȧ*(i-79-y#[(K}*j/ٖ,ʪH HY3PI<ٴ YyPk J˴M Z등M+G'ɜHjhJ3jS@@ZZI0Y0jIPF7U~kH;EpYZ_گCPZix-. ەf 7 Jʱ}[/ ț5xI.@;K[J)h7Mw4a*iȴp IKWې'+T*3JZkJhm{d4U,7FN#۹( HBʹ` x[9'P£Q` k0UBJ":%U)ĸ˱+ȩ.!j&ŝd gʱ`lƬeaiz۪[{xNT{y؊2b[̐KٓкȔl,Ŋ쫊L̙x+|{ .±,,Oi$,EС JP\0{RJj™,zZ,̳ΥH ƚȏ!5ٲ|ʻ4 Ϫ)CDm!A%IȮѷؗZ+Ѭړ\\ yѩhɩ8YʦlkN$*}uу y<>X lQdҨFA,J͋OІŢ:W79Q* ?˲̏3ۋ[L3 .txɝ6<*ҫXIjJ&ݠ;IK&ђܐmو͐XT )mLEV< ڌ]k\?'K= ExFС"۶ۯc ڇKjGY|igMiݏk `j͉|)ݬ}) wi|ֺd+][jѪش}J;( ҽC!ܤ1a` Hϙ&F`@  c=ܽ|l?$iS6`ͬNPs[6PV^`̽+<$ILmL`⺍G.CKP#n Ųn ꠰N~>m߼] QR죘ޗցͮŝǖXn^ElpO`Z ξ2pٔ~H):FޑHynbPJ-1 1Mz֮oV]h1]|˰H^ZΉxΚѮ۾6۱r]~*.U)KM@@ɐVNŚ,ڬHѤ-}Ľ})%1%%:/ծn<?_( <;=F?,vK Sp>Nϛ&l -(_i΄6k~w^;}L_,=M_Nԯk1F1 ;CPhuVyYiqOM翯Yh0:p(Qu U5DUUiwx!UAWp"ݔc~2TКN\&)?@@(5)=@>6ACA/?EY.=[^Zh:[(:/mXXh<)OIUm]ak[lv7e/Y6uSWoA^'Q?ZZiB5#f9dd9bacabjȑ 5b+'  O܉3bPk T77'QTeK/aƔ9M73q܆E?fÄMzuRoZ~2P* ]1-]K|%h0P4죪T J)"(ˢC =6kl KMZ-EHsPK+39#PG%S5QE12'a4&atV[Y!]6yUd(UikVm}IQ Wq-IdUKf7ތ`nX ܃NXEiއ!nM)~1X9cYInxڊQޔYaYiqYgrngfWYl.hb)i=Vi+ZjEvCy譹֩[.'N;gnm͎[f[a\ /O\o!\)1\9I/QO T]?RڟwW_ 4vn}**`^p]p{n/pnT% 2`.)xzϿfw> }#Ā>C{_` 2-a]ǭߩ@\HρlaaCf'3|C0( NG@Dp>u@pxQ1@ p 0X/DgSDRGELQo?R@ B|8*tLH@_QI Ha1 &)p Pd%@%iEK@  hR%IMkf?OJ)8 ْZj uh1siNy2!UK@*v-<r  Wz(:T"1k3ix [*}}NݸCwDa2ɊrUR f{:TU<9[>}rg8238qsP = dSKة(ӜtAK1qb3u"?J"RFGX[F .T'we;Zn1q^1NJ5nB{?2b(h$ 8s&IZR f)Rv5Kvq%E{r4R ؁~p1m( =Io)G]%UTBcZ``y > l .b=ngY~ϩ g+`ᄚPl8& @?UH&AI^47A rC$.> h*.@,!PxM '@Вd%g:/wΫ6`0S5T~YӜjU;]k9JO{\,kojץ:-hˌHESyvvD V=k[kz+wㄎjL7[ZW{ FgϛfLQ+ˡD[&v5~=={/ w8\+O?3-qoAr%7Qr-wasϜ5qs=ρtq绋lD &'c:P޶ǻZOG>f*yΓ_kEZ_kRؒC}ݻNp~Zlo q[S׳-;~w9T=PCgh S^&dѻꭕzm NeaHn͟oQ $[w#9gdĞ4jb$: U%g mBhr%l$:xohM|H؞k d TFɪzpB^I \0bm:pzho0&>og .)Ly L- O|)>H YJ MN K 9v+ ~kڰ~Np 0%͆!I*$p: q gf Qb$r-j!rȤPGՍ003Qd0u1'긤9`&qNGONLp"p}Q2q1%*>H ޑ1-Ok-oN Zq!+iҲ+ϱ"c|)9rۉZlU˔<Y d/!ɱ bko&m$-r'Ϡ?K j#[ȩ(#؂I O)L, j2!y,@2f:r$uzѪln\O3K'+ U!q(-w'= (q(-2g&/ƠrĖl Rm$2& ! R%MB1!371D-{L#2#703Q0q6Ӹj&ْSngʢ # ;A 's ױ,u<@, |-+.(4.84κ<Δh $ks .* 1xIF- # '&<=t?(Ӛ2813>s"1 OQ43:S4ShP n;1uC&=)Ru Jn 4.Ǐ,\Pݼ(f2 ݠ+or9ҸH2 MgVh-[̒ZQN4QnQQ!5R%uR)R-R15S$D74SA5TEuTTMTOoT5^PU]UV5VyUiV@VqJluWQ5W}x5XGWhXj@v$XXYuqe" eZՑuqeV[5p5\#Y5Y5^gH2]!#B[U^\ab9^`_'`Q`ga!~>/i]6b6Z#vc!b)&cmcIvOQ)Q\CfkNm[b$WӇ3xKX)xbmKww]؉?Kψoӓ}ki%˸T*(x/M $i6K 9)Ύ3Tيg?y) zS;M“i-K-QuMY;@y/Օ#Syimq9uyy}YH.yѕ~՘y @/9-ȋ9;1GeٛpRx͹iatQ9yGƞ-i,V)HQ{{נv!=m'D4&@W'옪})Y3'(:cW;bŀ #`O)j aɏ3;?Ca")b*'3bdJU$rXѷ ry%bO}4/X:D,7 P,Ľؠ>d?]=OB`5:@Bb=@jYPsA>/' 0BhP*OpE ]کO 0O9Z" D<">"%>BjBc ;^?c`|%hG[$Y;/tP] Rm})Z%{(Ԕ@d~b`? ^4%4'"&<=8-* !:a*ú6ɝ [/pxk ߾4)N:t. ? (頨oKI=?|fe ?`>N}ӂ  >AȠLIAТ]X;+ ǤH*plf1ռ{ ;IΫ )|ۭ[A"Λx#iM8"')fIj>H^QAԐ SR0r Mi!}1!A,-VQG &I)t'R+lQ6o̩s'Ϟ> *thW Kjȵ-U]tltpR[0d1֐: %U ȍ [#oOŋЍ[aB+DZˈ Iy(Ξ?-z4ҦG֭:@ZVTS=Y368׮t%\^x6%_$~\XxD!6 gj$d {Xō#|N/CwX(EcX,Дrsm[rZ U\L/7 \qG,MzbywM7V|EdQ^9G>SRYWbZUS(|x^21[jށ\GIVZ"uUI35C1Ex)LK(IюWYdbHd$}Zh%%6ILreY8q9zbT!V5'PujV`%n "{>VqXs)YfV0d~{^'v!𲚯ۯ> 35 2%70%Id"l &5jl"CDe$@dQ͡Th@XW~aamF+=S̗Xm(D6@-[w㝷+&[R|UCuy@7E2zi7kbP+y@; dG[GI,gmGDvC~)gO$y:ʄK` <`[H V9` DU/9BcE ȰQrAd''Q2e5\Xֲe.J3d&(!ײЕ/ vƂxs>7 ni7GJ1q/}G7keܦX"CbҌHiH=z@*RY^.s"ZկFa=*ָnw]]׿-dٛȟd5>Ȇv= Jq6cmk{[.]3/&kn*~mq[1a> t(+ݖ{ps(sDEK u|v"N%_LVڡwe'8o {[9w.t}Gҫ]e>'tGUD3N6u{ك.vwf;# weB7 //_Ygjb^T n%H ZҔ_Ȩ'ע"/@Gb\>tkN~w1?;^???}rW? T}?OeO O?؟ofd@͟_%__)ux&Ϡ@^HA^R4^$  f<  z^ ~!!ǭ J6`J ^! n!b`~Y!b^ !!U!!%aZ[Sb ƽ* nJژ\A ]L@)!!Bd^da,bA?$DåA-2m-Mb!BpI܆Qҙb _0[9)6IE3.39#\s-?#V;" #55H0! vL)zG]8:އ-i\)7^7ʼn+`Z:HV_L0=@BxA EB9IZMAt*)q\C^(ӭªjiЩ⩱BVЮ t *t;œ?m?6A?)@DM-d|!U&TATzF]S͓TaFQڇ̈kɦU]-̪ XJ+ӺvS+=k}îFTrkGHE򫉐kKuH=MS,*V+f)h}__\OBcC[[MG0mD ͔.,l#l,c=)Hf!b ц `mޔ\.Pʐ'=}@buKkmk C@.?OpUup=g%j!gE} .C,-j25nh=n.p%.䊖Tt`uW ii.Crwyo%~n߂&!= G&B㣡Z0GE jU XQ\D@e.nZ9Ť@c[ sٯo!F &|pUqhTӆ)R!=RbY}`* +.vb*"L*Ӯpm1P{0~H[R" bJJ 'Ұڰ D^JI9i˄^1g+e$V-~4CP%>i e!2wyrG*:oKgrq2 N#;M8>bWBj ڭJ%EKϊm ADt),\ {#2Y"Ojr  3 V9s4#dbm[q Rmۅ8esұ0(1oJfnu CK5lH d" G3H89' \;N0n1Z1*V 6t2OF4!- ^}@tMHP[tIXAC2BB"J:tJDa5vb~d4% "ˋ{G lG5zKiW:|l5*3X5=Gu2Nuaږ%|H5T'&}|<.F"X#_+qhfͭb#B̩nlZcf(,h;4g!i6tmj6OpFB}@>Z5%Ev4,wA;N\Тn[)Yxu5w)7'8}v"f4pD>Jwy1Ku/wwh L:\к$y}$LMzeMl6yHGC|bsYcMC1Z.= j( ӸŌk~~\&/@ x2ZS"OMl8Jyws3KS, ,ޚ;W- TǝH!Ice%eg>haC-`+<]֭Ќ_>+%v?L&a*`޸Q&l`3Q*mnԥ^Ŵ{-LCӷd1XZ;{&YX)VnKRzKwpϏhu`ѭ2d>p=tsB6z5ciތn,)j:;tG熂;7B:ɹasG3A<@U@<=]1/{KHwW0o>yZ|Oz v֪5ʏ{$pK*wB 9ۃ/ \җDXW胚 S׋*r ߧ#MZ}}}~ ~#~+3~;b΋-B?c.ˣ|"{*ag &&*lw;bػBjCQ4*< 5W1K0SO̦+S>J]$l<+B>yUݫrkQacj< 0P$M#aZFLN$Pa% @"݂/mC|RbrKT\dlt| %-5=EM\j pUbMh=\݊ pcʝu5m:Ά5&f h(C.p7Z6WP@#)-p~%$!iMTXpC4ZO8 ?,ᅎ)3N %WL8I`:),DHSR7! y^Q5NKU~$& aE -@ Pa[iĤsLرtSb Նph+h,`}ZuH6%ASJ|Yl+e1rz46ЄEqƭ{.t'sQRܢeb =wWܭoO<ׇ$/~0$+o~m){N@f (3@J{08A2,Cd,-pY7S;s3P>IROҍRK+RM)M-=SK;R(-ӽR=5UU=-XEm5URYE[cUyu5\Eݕa?-Zu`UvVeݴG#CliQbtS5J!/! 64m\L]ĸQ,ok)Z@J%w`.ydZژ 0zsuYbTcd9T֌4َIQK=Wf=YWyYe1uԟRy5(ifiG. 61[4fM= y3V4 +r:_KqIz+l: ĦIM ^#|ĉW/W Цr%.)PZAQ(fP~ȡ(>όĢh.1zQ}e*U &*Cϫh^z6@aDR6u`skbܨ7w @=3F R4)%t]ڽՈ.4fEhDʪ4hm+GPDCgekKYR,hKwְE8lbĢEc ;Xɾ,eYrͬcC{Yִ%g+ͪvgS;BjF"MM;eDoHE[x8 mݚp&7xME 90uQZNC^5\D#9-|_+m{w-;#Jֵ-`-_%qW=/qwyA['GyUr/ye>s7yus?zЅ>-GGzҕt7Ozԥ>uWF uw_{>v]DG{o{~w{>O?xXx|}xW?zy7^}Ϭ Uz˷gA5u2@u66`ֽ>𱝁BZ`s`6W-򋙋_a5߿HԳQ<Ђ]#}Z n/_4ہ}o@∾[ h7u;$;kҴL 3 2 $+ 9`;d:0=hD:(ړ%f6 @``@d"/&멦!z22Q`S7HQAY6hCPY`ACGAĦAABL:!t3`H\ӡ/rь1@m KD{>Uoy CJcEOxC7D$ A {˜Z\R`Cŵ9`L@d;ĥSD!?"Gm̻!C'Q4E tdlS˄8d8v[,;1zw,uI;, eDF3fļiTjLmƊ,;olU qlrt5`Y3>; 8d@sLI.$ IwE%a#JIk1>#Iɞ $8I>PIm9 @0 ?JtIzTzT/0LWT[[K:˦&k‚40I@(r)T.8˵d&J/@8 |5LK+IB)8!HL HPF \?gMN3=XN|Xȣ N$NԣNK?DD:dĦqDۃDI#=P­ܺϮO:\8,GPԸ33f0Jn2(C4zBx9.EP' b&hZ#63be/ZP#fPJ3 Z.M418G+7 =;eQV# *GH <8 45(1Q LE]*5Q8 |R_ot?M߄;0=$?|=K:?ML?MAA=MA,?hCTCCϣSkl"tOI3P3UHSx(UUTsW(!\DuP$Z"=8-X EҲ82H(p Dp p2p,E+DEX,c% dQe՘!(H -cWٸCpd-!Lb0fMK%y%qIcVׁ%nK`e`" Y~J)uQa:pXX# qVVցDB}?-+?=}gLH5ANMZ|g LD\ԯΰE=g|L5MbYR <#d\rG&V-0׃`X^3^ W#G.5t I~Cޫ^%MH+R;V 9&:SIeUX"1>c+bceҴqQ{!*dp_턀dW+U-/V>AZ~Zfꔺ`;?-[eFuT\T;fI[+f?SFtaky[O[{p3B!W-bUaۺW\tVb^zs3Y+,z*+vEVdM7dM~UsU\> 1^ @UQ-w`3)&EeIȪm`_ʄ&hig-c HX)WVeF+DE(J0Ni8UjiEd$Hӫί׻ӻ{&kAdk~kd&ĥ{jkn Fkk`lfOogXUU+PsWul=w=nCd^(Υ5D4 ۾ejqEf^#dVBvm:+S1౓rV)nx0hHBQS(]6-d]쪧m(&>;K}mWӝkKeg>?:Zefv6N ~ oa[ifH:6U[U\@U[ #Egju-.>SS&`LLhd{Ku.E0WrIN0q#yYGCn~m.y` &-bL1hV{#Jvi!)e&+o!36~3RȢ@G~'I$+H-'5~]n[Ae~紁MtN?:_kNLlS`fM[Æ3O$7D^u[P5Xm翅gڻwgm׳sYSPۊMEckwqV$7{VV wmn?@&ǥ(ډr2>n]Evۦ6}3_6vsj֥iG^ty{ƈgo?gF7[`etvZPoyaĘoRGunW=on,l{1glɉ,V7vb0V\T~i|y5fc~6Dz8z7'w_\5NYR\OMwB'ڥ;Ugㅿ*X/6jWh6B`GOַo e~4aPGyo7/l [-z\UcbWgQg?s^kDO60 υjub7Mq=|rb꿙P7N6M$ @( ,cDhJӅ`RsIp%i CGX&u5 Qw'u WppPg8Dx64GIW5%Jh TqeH5d!xKT{(:䢼"!}--lM BsLA2.==-Bnslk@… m1d 9Ȑ1ƍ;z"F2bPqdŋ"IxQ,iD A?dhKBh€ХBxtGJ^q  b EOH}S~|2|gq`azws'8t|X%~D9RKw~˷~CMh7=|Fy  sA{Dw"DDB~EHB)P~>,g+G&2d} 0e(zl`X*{KUpꇀT}y}HD|~9Ȉ舸ԃQz7)|S|"Hy~C~A}p0 ؆HwwȅȐ8{(؋{8Bx~0W(z٘~ȍȍgG嘉|ȍx{yh8Hh}C| wU|wwDyhN)GXq}%oc %yx%owcXܷ+)R0ȉPCY =(|H葟8㨏HَIIxY_ɕb9dَ`]hٍfɖTٖcD)Wt9W{ YyqYjɘi8z\Y,ڲ| }9A)~vD(*ys3id0zG7)gk$W5Cyi81؜z/zRT}}Y9Y ؝ɝ|򩍐I(viBKHx8ywؠ `* zzZڡ # %ڟ'ڢ@ap)( Yћu`Dna `O T~79N|l鄘AyΗW2m&ʢ t:/vXڧr *DKxzʡm ڦhxWBSu׏~TWwt6ICI T}& nwoxB,ixn(. *~=y}WDڥvg}I) wxʪR٪ɢHêa|Y=ڞ藡zDJ;q D29}8d0x6ƺ~ʬǥ{3;ZŸ i G{  )%˱$ #%˲%+{4۱65+7۲9۳;+!;?[{˳F/N=j˪TupЯL*yxդDPZQUfۮ kJ_;DN/۴JL+A:;][۸;"ۺ wyYڻv7kŋ4a KaJ`K,ӚXK~0siKe+Exʈy{_*Pe+}"y黺˼K犟ɻy9l{똮]" &x%L13܏: Ø[V˷ܫR0oKCzN|/VFXKo;eVڥW{{p G`{k˺S]䩼z< l;?<9>lȅ!tD̴buNCtbю@ꝔsN>|S^0\N0)"띢 HCd p.0[^G^N# +""upG."# n6=)ў:Lp_{z: 0L-~cA,PT@!g)y2. Upc5 裨P~3C0 7{C 6P/+-+647L62_6 ,ONvI)URyxZ~~>$P5|/_NOݾz#p =zB .)@Da$:tu}u1n6@ ")aq jh4:Ё/"qr:Z.ZNȋ*W+kiʯ`,q)1㢑m)qQ р@+UU5 B1WⓁs7 q6x6"X1R3YT8]}<`Zq~A7w1I[`YJ`(jx1 xk4BCFz!߯ !QygN;yhPCL hԬI=BZ*RȴyrPԚ,W ]$)C!CU,C0.b,k[)Bc$@+G"zc#]} lF,e0޻4컯O1;W1my-W}Lٗ%%HLݮcTF5/ @5)wFɘ&U#B9@8x6.وd ^^K>xz)fesNԄ׀D~S~ T}ꨥx Z mVX Ű]g0g嶰XA֖?Z:l1offbFpgJ7$gQpf1DN/-Q2鴹DD¹`] 8mr6G:ZBM:\㸞-߽\r f71+eadt2:i < ):;(j0xMſU~`Yt0 ߵ -,vkऒ lx5x]]䖤$ rB R3:NQ/IWT'$ Ab\,S{y!`:&eEŞԻAlȤ6)kR#83DQ-,W=%({948U?G?M!:m - ~w".k 5z](x- F'] sԸrg'<42s4afi0!3:L6`Ky'T ߙ_9>jڦAaHH0P'aKG:Z&Pk)HwTP *.H. Zp"sۅPR/|sPb f09j;O-$Lb= ŹE3k.vtNẢSx|P3 IcFꆖ.{ORoM'5=G@E%{wtTYVA9R@fpyC#/zbVZE C^AoWܲnҭF5(&8sI7!e 9rSOX]TCh0d(AYTCXSNI;߉eUۓ";28lp3s?m{J{P5xɻ, h&+k"^GVdpnm+N4a`^ N/]wA bfN llGр.l96U(+5-H9 % (꒡4z@I}Q~$݀d3df?u>BbUS2%n\dJ 4GeMٮ>pA~h7@]NM<( ]hC"nr+2Ha x,g ⯂% 6WN;K7X >K0tYqNR֩ɘ _xńh F)ITdO1$LnU=lUg1ZrLr8C.LR ;މД,4 @fF7JKA7 h:1:tͮRfN2v0ix(s<(빵ڹ-zl֐L{X?2O09Me" ȕ43=MY݋U|(wo(qyqZzq:W%k|@/eӡJFA>[Yb1H +QSjcf#})>$L.`2 @#6#h!'-c>eL:nپ ݄"{"; Z*PjڒntJR"7ƍ䜦 Q "wcsp㈎(''(')C#r*)q*)(2+r+2,+,2-+$ے(rsv-Rwԁ%<B!&f"ID/%0`Q%l 0AB2i%MP 1A!|G"++031b62S4.R*7i(28a887g./R/c::.+s/{>3;>Ó?S"t s??{A3@=BTB8nJ?J%C\aD%$DQD)8CC]rZ:|lO+ :lV fE9B3AsIq=4TC4IJ4B&y6JTK!J.ǴB#KQMMNa1M `N4NOTOMTPQ!P P OUPUPO!O%O)QQRTQ9O1O-5T=5RANENPUT+U4V^빲 TQʡViG3b+J^*{LEU( xt'uTguPc5S[UUTSU[GZW8:u\[4Z[a5]u])@N5\^5O[5_U_ US^\#`R _Ua']͘hEsubG|v&b3bge/bgZHRf"qSTq+֘^k uNBbwgycc#xWwA:r]nϐ_ɤEav#K2kljo⋄dy%hwl6xu2Wu!WpQq4t]vwmOWr_ppK|ŗtY}nݗoٗmr}Ht|W~wpWq~}WW)~ߖ7L'`L󂁧IӴ 4aG;4LTM94vVn)w,)#4gtCe%x"HN!3'버Xt=B4>S?W_،5X8?؍]8x@㸏YX؎8ԏUUᣂ⒁dsa}Y3FjBZgXu)Y yhLxy,ۘX{9ey-4t#NPy傚IYК ԛǙ9y NҹYٞ陝ٟy9Y﹟ڠmjqhk^mts7<'R*چ @3"ZWwn~qv( :aZg:kڦowui:z}:YyڨuVlGZk9)Xm~>O!`>jQ4'R:89Ɉ ʾlJ̪3BV,il#Ϯ̤>oJi6۱Q^F6#Z%Opksg"zM$2LX֦6rC[#n&sƳggU(-_@f0횱K-[0GG]BnX'fv7-SO[{r,]O0p;'F/1g ľǛۿ\ \#\'+/3\7;?C\GKOS\W[_c\hj\*F8jr\U?h\x\6s/s/ipɍK>\w_TKˋɗ{vyIe ,̡i*Emb8Vj$Q@'49䤆}%ҵ}@ȼ)ϝK$l7vwuu,2{j@H=''9zNͮ&熃c>hqjst]:*YmZR&IeӁH><f[}_z}Sx} kf#@4Ich%DUe, c'%hjj(Iq`Օ7"Hlƚ<߃}*}.ًV@|*q޽OR )+վۃηߋ.I\{)F#dwV|.+r"Pv/AY_~(D~|`94>H-9~!$ 7.LB!1{c'a))X$zĎ~ >bȈ$+NB!މ˱~U^+HfgNqJ^ޱhh _qQ)~!w^h4yM`WOeWӫ%?m17^GݢաEC3zǎh"gw+1 ?!QRq*LCd \2'4*R֫ը Ƌs2JxPVR^31F#}@VQēXRZAV@'`a[CZ!+҄Q֫m,V#í`WRh )`o\o)2mYR"9C9\!;&4sRD}8Qk[&EN T/<TXGҼlUM |\Е ]*WTA)l"sVN,y(3i@#l |&^ W}4TtrzU T|ڀ ?#i.2JM+"$9s\,:{H\TwvX^^KcWy_b<)0bĪcbcK]X6#*c..-e4{IߥL ϒ* W-V>=!3F[.8˂HpƷsּf+╯NLFс$Zx'&L?7`KsL]Kd~pJG2TCOp{g Êl 9`S1 ()MH~%vEMjі3(|wh3`tyF61*hib俶Xs , ZH l?6\l^wP94 5գuAAyZRvrlQժ5:fiƄ'xhmPkמu&@0ZENs愊z[@_r0 8Nĥ䮺7~X 7'WB A2C[$}TۖT]w: z:p(f_ϖ7XLu\<1R.݀vuyabX]nP0?j-ݸ-o8q8[L7"4ֆަN?@u|\_v竾$iP;ӽԦHBQEC2T^>cG{!"s`5ܿ[z ټ[qg*w'.#Bs7(V%D`'=~%ڒC(L*E u5VR#8_vY[zM Vh<>ݍU`m] & g}_MO1D^n^BF+!|E̥1>dEF(o^(OT AOjELzKLVY=`֩UT(-6"d@Ψa f̏ QhܨeENvnQͨۋ`'vnVƉ^\Yȏl("<~ʤ{Āםiſi69_^K`"S!v0؆:|]*Xh&Yf(nf(3)B j` ީՑiרaRiE3*ci=^a^čjdHT5#3vM.`⤳AZ r]d<+ HE^[pΒ)ʽHkhLN |8ŅL0W(Pqnk<8DTT4\nLY[5Y]U˅ŐB@Y ݡ`̆=]2~,]D,u#JȬLFAF7.ԵLMEϥ^\% ͆+v[VsJ0HxpY|vf#$f,::hl\iD쉋 ܦfX2QEKp(@ pv]\-`+`2nr߶]OjHABkͧ,8p~F<YĚ\~ginLR!h*PUf˓‹:tH;$jS~Xv c8z§bc҄@2K~k9 KK؋nZY.0"*X,h!oQ Wu8])9b]8 p % nRKR^o&+8N#i4SG8+O+hy) %؏01:/iSTh3BL hhk* & ~>BH`0/^NUGoOK Gq\a‱)k<%c:5,۶@D;AȊ,q6እ_-$p LzҘj0B2nq(LT65MzL"S&gr')s ׏}Srvʲ6 !*W:q13 ӰE;r7|cry`"M]Vr(c+^]B_Wj1EGݸ)>ﴁ} oLø.M9H w.)Xp+SD/2'(VY8I-܋c:WX{IIK~]-{׷vZ^81,"iLm -B{&K{troٶQhKwtk$n)2&vm_b5mvkn5Юߟyv!-A. GĴ-ߡ,~Űq k2L׹:hURo׈_|6gv|mh r}g#H(( Y`%y`Շs hiC,uy1@,SI٪3/! ":x[H'Nb"zf"#bCâ'ߏ*AKku$R"úbg՝" (v?lo VuND|zHa*Вcw;"yW}d29&>EJf&fa.踾hӂ:v:ɤWp>7ohneh`YJO4d&,i)uũj@n;₟>j+D*t@8$%@@.O /QlVv_pX<>Zfox\>wsV!&="'FʦAMI)J%D!QRLYݡ\0 p~J4"6~~+V%0 ,2ӟ "Ȉ PpiXV 8`>z !HXa mx^B]OJN}oPDGD..mfp\{(P[bs6C;x GnbC?/Qkd#P\ [{PЁkYcG@R{c*[gyң͒AFRdh,#V v"7"d%MyJT2xTe+]JXRe-myK\Re/}K`S$f1yLd&Sdf3LhFSӤf5yMlfn3{@7)3oj`tIG9R aNxSO 39X [9aD3 ob\)O&TiHDU>q*JPsCrQ4(D6 ݊< Q"iMm R(',EC(.MzTB$@ 0IA//X@ L+a_@v/M Gwj`XU+ͬa]w.Y IEՈI%lacJb^r#"@*9G! R.4iHEJPL3lk/S(ո%iBկȖ @OQ\&ื\Ƣrn) 9@[cVmS3dXBUb[W%OZVXiX6\mZgkOƴpIKZHi4]pоVn61m)((TKL"L!ZX;!6T9ñ[&*g5K[XL!wbA%,Fk$QqL<%I}cǽzjY2ɤ_V2]SgzA˃6"!yfD'o5VGX,N҅v1 ^ h1N t!n"*ZֳƗMw Se馼 75 ᒆR',amZz$wvyRerFmL[7<1hH6 co;1%t}o|IT9V|(-^/N} C;n, d &<#'y)< \`(X}6CP#'`t5 'LikY]f9F HuK8N7ws@ rǟ5 Mu~ΐe1|UӄIa*kb.g4p-}ylyv2̰PZ_, Y `ՅZzZq.V =Db6$jxt>|}xx(:-u U<Dӧ~}g_~}_'~_g~__ @@,@<@L@\@l@|@@ @ @ @ @ @@@ AA,A3LC6,5lC8d#i0Ó7C?@LɋLK>CF ް<8xDd3R6>ElDND IO3 p3MDUPV,S:IUn:ʠECŬZ!:YST*5 +"|[EpĆӬr$/ӈH  to G};uCP."9c*B~GR,.F -iE.i0i} hx Uy C>A`8,93)…xs0hIILr+Q(XI14IH)Sz\GInI&/DasɤHsS.cѐ昆Jbƚ=8A$Ě1VE8F8˹\3XITK5t ;k8IJ|zD0dLӌD*.0:.h-8wS4%)o2HK`)5XI 1ֻLٜ \bÖX04, z!N8ɚE!0,*[1bA0:Nl,OUٺpٺAPL_pLSc!OHܛ9l3N1)P]ι#=8i.23b0SG8 s P(HR|}לK9Jqt#E0#XQRg σsD&uQR9E狾В{\'"˂ŜSATkJSJD@TGݩ0DLp(HFGjXo($13TM-UhIUUU+ǚ!ؠ#  X@&,`J DƲ1pM|L#ՈFFba4z 1*Am݆.ЉE8)xJF $e&2%䨄K/V@}) LFNPgN@*V h ( g.`xRExpTgl k^]Ch@LlF3u)ɴsdd/e0$>Jo@$P ,CbUd0 HuaCEx4dih%R!x(Ib+71"'@o,YQF?tGF'#<|jSD% U=UT`pgBj7VxWGHaPBU %J!2EJA5FQbCÁvu5QhZ 0Cbp%-I b]٪\y 6ҶvpQةC"U|@ZB`3c&ÙTbHi7bsn̸KP2 3 6lB cUi7 ȳ)>Pζ"袎ن4'Ja,IM(OAʽhӀAՂ5] [X)73ʘrV UU[w*qrDFdtWw^zuvFj!@P/xѯ9`=.u3 {) 8 5ظM5j<͍scbGȷ#`is߷”w\VqiߴiJЦRޅdTMME[`'ܷ /ܜݲ80FUU9 >#޸k FýUd Ҕ:\#L^3K\[n}z {X7든vR\1".9_ʿn#FddD wB0R.4fGg2&bj7vv^E@M`VGx3Wlʦ_xz~I ~ZSSpѶ~1DK' PB0F@;8D{k`fir4BJ Li{%`{elFaS1pf1&@hU.p3e'f8^6eC'vvS.gbmǂ˶\]0pP]T9HaWf7 iAyJ Z؅bdxAMXwZQmC 狟Crh'nZfv~YˇTdgHfX) Vw{w(!_$`(hF&XrA5V*4OA59U]"׌2CmwEQ5CWSUzfpEʼnX5T0AFtT``6—eVp& H&oad9y3XƒDItKYF?xS5,32E V)_3drDPX&lfvmrY0o9vyxz|ٗ~'I$h yēS瘻'@9dmڟ۰ Wght{wViV[˶+WیK4 _[ry;r{UëU;HK_˼ҫxk\ V n;s[髷˻+˶TPIprj%\'rp5zqO_['zy lQ C KH2۽k++-/| n;17,?L =ALz[āHL|H^M Ll.THR|ŇdZ Y\_ʼndc|Ůda|iLoLOq s wym S ƃLƁlR y283]gh~\<ǹez, 7ut'Z7ɢtrֿᱨ[ˏ\|kkn|bdž,nL̀Ìȅ LL|L,Ѭ͐c̓ll7'!yl[gL>yk4lS`Ϋ0]7tXtκ鍋6ZjG>ίIlΥxIp}L7~jS/dwҾ7 7"|PqVXk8MGJ~S3Mk(OʥT† u$n)՟LU  ,q]tQ yJ 0a\L \%#X#=Ϝz &t}Iᅰ'1ņCH ХlͯqR ؓu=ӴLAث|± |Ф :εկLGP,*z:ܭMKbHW 0ݑM`MQPfV]jI))͢~TyR:$vz*N_w84MM cjRx׊н}L}r&BWHn@6^S;:9)]kdB\Iީހ.aL I t>^~舞n>04৐NTѓQWjަq|`WpCX'ȌW] `~&zCpϤ&~\OUhp^Y N^`nĎM޹0ٮȞ^WN0[0޾ex>A]%`ZՠfivɈIQ;wZITcM_g.Q΄\]OIpUQ^nn:)'݉i&sbOLN8/4$w 97NDePy؉/O%m0pD7cؠT19ph HO.{]-LE1yOآu?w/>dN<N}FfZXLi HA@\.\ߴTj! p\J\ZgV_Vbǟ@IJNjeQTK13"#p^YJ2P+#@I*|W\!OQ$!#%')+-/13579;=?ACEGOTTN(' dԜVZau}h\4 *+,jy.H]Ms!{ɗlq]c˳uʒ'CI:Y}cf0V FF m 7fM7qԹgO?#BdjTL,H< eciT%; B45ri"Rqbj-޶3{(\K"b4-SfmWk+0{ }mڦS9_A=tiӧQ/j.>b9;l $<]umM žmS}YD`zu~z$D>etT\ ~mܺ{2c5(B ;sŎv3l(+-F`a`@ QI,CYsgC.ht]\_ #!Zοid:Pv2 PJ{ SbH~sEقRb:2*'id G, 4uDQI)K1DQ5#%+ jı<:#P,LR 8#v O))SOM@H?m.MZʹ2GTT܆V,X9+& ,rmBXl:eR #,X lSKp/5@kOqmLJs6Uܥ8,`fń∾%^36'V8sɎb\UYGq,2 +K[.[lƤ6,RԆi91NisbU+ |,L oˍf 5;bPN+U$#-σ1e)oVDE('߆q]ʆdF];ӱ>=_]=wqogBR=G]*gL0l!aV.L<ɑ@^‚1sF\#?6nh~B5_0yk\E|1A b!D)PADl|fB v$HhP#Q٠D 4%NJU@O`rX7TI0TlE#Xox!(!P8a%A v1.4$U]+}&mn"DCD1#CdsNJNʦ.Nͼq7XMgȩv"` i{ԵEtXDž&zS7Gn>O\n1>ta D }Y~h ^W?~+%_Oʛ䈷yyg^ٛ|!=Z9C1=ơy?F|tf_'>H^6~_ݟ^?}[~"W\4D_@OI[D'Nƴo0>PY3cӐHoPsM~76,Ҁ /D<Ȉ*/O rOD\MA=MWPdpXGnF|}XpmB/# Ȗ0  p  . 0 0 Ӑ  ېߐ 0,WԂNIFʏibm nVj q1"g=ا0Tb#Q(oG|pȬia0 9P u`mi q10gQP q1m҃&$ gOkS0>B@"e:ql*º,>μCIԊc`,GKp(12#E|$pycZIhQFCP"8R&ߢ yrХYN"; a݀R# ,tZrr*X) !+4 +r+r*r,*2-,,--2B*ےؒ*/u%./ S0r-R R-.3+.2+#1# e&Å\d $vE_Ҕ _&[/~-+'/G' nWpp=>ϒ=?-[Q@a@}O /cAgpw7PB/B#tA!(afH2(c$3a!M5E@g&e-fBhu#St7ol YQ#r&Rs5@TI3C1tCJI(zK:A4MKuJTJ4MNtLMOLP4PZtBq\!IF4t>' U}fh4655GJ}42 \iHCUܒcKDOOL4@O4W'4WWV4VmUXSX_0YuYY5ZHZ[ZZuUZU\[\]A]K]\\ǵ[^^^5_]ߵYu^}H'K@2BR5G1^a-~\d)-2S957IK Rj(eK*d`_`ϵfmf Vgg{gw6g}[hõ]hV_vhu`6`i)틎̈HX>kjR4f?999>Z@_<>X@IÊKeYWVwMݸ¯ ^weq&ZLn栊dfgBXV 7SP!8=ac :[ ؓA,YX:*y4ٔk b i:׹F~"/*?l@ۇ)ݒ=[m581:?=#}V#=i=ԅ}ӽ9a[yؽogzk8``cOYُ٩QxE5 w9~s[^RJ@\iBLwzUR0Μ SةFumؗ"]&W${m*A{ rIzoBd;୆^"%ۤɇ f)g&h%ؽpԸ`щA*[W՛9ڇmټћةX9؋>My4!}L>P"!dz$d@Td&w15?8N80[5 tJֵ] PHl'ja܃쬦`rSf^ `d*@ N C- OdMjx=\ @@P J$p6dl X92굫@z |y؁ }"-6qZBZ֕6ꁂЭ(l Jɪ s #'+/3ps ?CKg#GOwckgEQ`it2Я/>&ʿ} .'24UkPhpc:}/)ȅX K:LK "5YN0//לaJ7̹E۩eQMVXƦ+KnV*V,[Q(Ql6PDK0 V8z,~ocu&F])2[pG輚4Mٶ͋.}M; L*XEo<"-(՜׹y#Geݎ5/[1bĸM܌АP|tc33dX6V,B{@GԄ.,a^p$f^qA,):SYk&/@hkaUFX+_~C^}`(9dT@-j[o^AMM)V^ٖ9Nօњɹ\YHh:fusalq `z9oH*1]:"n:&A+@BbD[W 3q| `3X#)8+}a(OEU0j|f* ?\[d`,CڑSzIemm}'_krgC cEAt8!_IifآHǙ.jhAx9&2ƈeDl(@E'eXg=L ['; -V?E[^rGLJAmw]F:k`}*n~@>(暟bX9 BxZF+!z"P^W^ŷc ' 4F#2?{Q6{9)%k P^5|n~ha3ߍ\z=f僅CӨ{'|iI͊RI)e 8|PŒ(Kb=u`ZHPgsW&3LP)\AL}&'_2e_t,pbt[I>''R.+=+AVULs:犷X.,xF,dwHꨭ%ȎH azvT4 GZFHGچrdZ l C٘LXF3MxP&ZbqoKkײ9 Mm2v{8l\\/ XKo٩JK2Uw\*{C\!b$oP TI ##Y!rrFN-`͜r#e}f,.#벅P a5VdJ68 0q!e[Zf,Rv#UkVgl6ն.M&`/| 'NU;^9t/>׸.l0RatCh6OCicQ"wmTUҷϤ+#dzmf \O:oR2{WLI:"+MlSUa G+[,iI|g=a7&p$"@CRJ[ZL:=#f3!?qb&)&.'|R+VnJctx5WoY*;w7ID S58tK*j,fr&O/Tx<[6 $β%|LZ!DZB; X@$1d k(`. Hڭ7 xK:Z_o`E6nu쫙)/vߟ`-gȀ_Qڭ$-e-*?nꈯ{@9mz\%x=aվ2V޲/+v"W2x¶ N7=  d.WD3%@ {ǓЎ)=Q a]|4H S 0iT a$]5ɕUAE`0b--ELzX^[\7VD8) `.!b7^,@\ 5bUbu!V:#a-BI, (C@GIIm=֒O2@ kM]5[ x PLV> j$A ѷ}5&C+`eTu *TTRJ *JaƕJT2%žENNA$\ G.5Q/uKSq~90]bW(@iQ#^f%V嶄Y 0Z<'2guZĘS'u2Cvy-@vRwgzzg{X&|g}ڧlz}%^-{费a?P&,d\brɁ:"RhZbherhzn'RT%C(X "Y*hh~hhh hM*)Ix..iJbijihz闾 阺*Öi隲iV '⩐ijej(i2j:BjRj֧*jjrjz꧂jꨒjꩢjꪲjjjjjk k"k*2k:BkJRkZbkjˉ{m뷂k븒k6Hæv+kkk"grN- l llks|:BlJRR%N[2CVlzǂlȊ,^,.|pȪʲl˺ZfT`72Ā8% m``V#RmZb-4ӎdbU-2lֲmۺ­},Vm! d,kn \3kCآ )nZmJRnZ.>nb>Dn-ͬ=\GvӾn0z-粋 C&Cnn*2o]r nB mroz"+4b.Z}i"/of}o0VY欻}+otSp[0ͭ%2&-OFp %4hkl 4@7H pr/9g Ooq1OU3q;CqKSq[cqksq{qqqqqqqqr r!!#r"+"3r#;#Cr$K$Sr%[%c! p2 $>' @?q 0r 'nԲcf.r/[2) @0 |/@01r.0@5ϲ5CJ43y:s*C|sw1/s:"/1w33*;)9043=R Ts@_sf 44;s0174<1sE[E=33L>D0e&tft@kAD>'s0;{?kǹ+{`.JLdEIWR[?7Abt7A9k]vy)77c5kbz878G|+ ;2_<'ԟ>>>>=~ 7L2o2'z,4,NwK4?&=߄+kk9wcZk6e u˻f;s%QR+#t?_3TCxơ u:Sjzf[ncr|FkvszT+OR r[l2BBRқ[01Y4,Y$*)ԬJ5)4:hm5B휒$;ƒ$Kz$C*D>4Tj\='/B0O?wP7j//b_̗/G߽H@1v :xƅ *{fX+)%Tj}I'.UzQ5EkG.ꬦXf5g疈~|`܋t'rQC %] ŠLjQ Erff>`gD6g&]gˡKwƬԜ] Z4ْsM;྇~[.!8 K*[ AODYc܄igONn!zecL :Xʊ? *NkᢷɎ.9spm /cB ;p&.\$C&E|FE>|D\lBFXF"{G }0F GDqEe;6U%qF)K9*E!l F®fN3[Zs jO1cN 2<1la']ψP >+%C뫅0H L5/=:ތNp/ME.s靁NwÁ:jjxS8R_f b@l)*d*4CZ8'.?NF'oLU&ա?QDl:www>xƶ1<}X&p..fRc7shxbaxiH/ L}|AxCh`8@ЀDԘ3(0 T#J)GXDݩ {T,kBQ.S5μOd_` ^ҡшGDbD&6sʆea@Ԧ(bzT"8Œ aټ 4m8G:юwch1@jc 9HBҐDd",JdTd$%9IJVҒĤ L`jd(E9JRDAJVҕe,e9KZҖe.uK^җf09LbӘDf2Lf6әτf49MjVӚf6Mnvӛg89NrӜDg:թHPS@=:ӟB0ЁȀ>PU@hPQBkX@DygiHw[ ph ubڻ tT 4H:ݝtx@eE_S; JMSw'U08W*Ԍ**ZJ֬ \F@P|`m"+WLy]iW#x*v^ "LAbRYQp,h_#+̕ h@qX\,VK"ׂB6 BcʀL@ (T  *tK]h`q!z^0$u[O&8r^Umz pAq/(w\U~7­n[.SpvB}\}[`F.a+d`3iQ[8T60s@ݪحGߜZ`0aS*d{ZtEp0ɶ%h5k5 ӛ\,`c;`pr Rщ.݀SC _@ 6{ @TF`9i= t=YbX@~, X/T}vx+PWz`0J7#ԬBi`$5iE>yOf@Qg՝Zv2. :#X” Тq˵O^@hU3ٴ!XE}<ǂ _mq ``(yRg`²@VזaJo"[ nu `rٵ.Sfc)C9nr Up;}WhNteў8@>߭7P5mtar` 9 w}лmk>H= ń{ W'f:?E.T+;Lh$+?j0H6:˾P s/()ܼB 6,<(=`="A ۂ"\~,;R.3>/ B& C B*X=*Խ$3bC+0{c2ѳ*wӳ)-+2,۷tB!{B0C9DD9DHs5ZGs :V;4;{UdDWCAԾӀ6v6$cޢS전C-x89> X&tl7Ղoo,=9˸{ID3=<>!`IGz$9ǖ-ܾ2I#ȼj˝{T\ÆdHV\ȇǔdCA?\E8LU¬Ǵ4XKZ6< tD˃5[SCyYVM Jaҳ$317峂,zz^ lD/0-(Ν 3q+)B~.{ʢ¬GAQȖTMfK<􂌂{,||LCAILЏ< k6;ѴDŽДOmd6ϝ@Itt@D+DLClEHQt9v\ϫSM9=<$mEeL ›I#Sp82@\QTLJ,GG9ASC5l{Ŕ<5$RH% 4תN*=+%B4_ O0F 6K-VdBd]Fm5J|KO];eT;1Ld, 4+`BO/hK)یϣ*o}W $ClI[DăVeUNZWH\64'L7dN)m#<ƒ Sn',>ٳ jEӕ3-__Me47eT[%DRePÓ|1?˫MUxuDGtU9Ţ6Tcp. XC4ܾC>]WLs^|` #=oMISQ+6b3,.[$b5R4.LCXlڽy41.a)*e2=<Av[4S]d=fT/.SUT̔ u01&Gۛ)v,Ȼl+ۀ(+aT6 "L csI f"=f򱺭P"]~IQ#}'>T$%c?>]ԸfzJ{g2ΓgE5NIBe(ar9y4`8qhj9N"mFiō.h>C/ D-@F->4 E#> @=9]+{ Zaj $;ck'jkkׅ21kͧ]Lf"ĎVgelVʶl5ڝtP3JK&$fVfv׆ؖ٦ڶ&6FVfvn/ފͣ:$ &oVZ7(":o7@Fnh> 3I7xo֝n&gWn1;!SF/{p1eC0"m2#m-;IdS.kp  [ {MQF1pu_#Gr3>?mcJ{%bnrvreEcX-㻍-ݛUsL,f;)6CX U$& 5:487^4;s>Os@?'tCAWIFGGGHw6EtJs>74I'tt6>t@XtDX B?=?t}ͺ/uUku?¾w5w>w=wXoT}x'Gx7xwwxtxTtCu`k*2/Moxyrog"8>o(4xg/xWTX_.׾L5e?[:UrSwAC8\YUe[Js=m;[1*xﮧ"x?'XH_y{yA?MOŸt7y_|Ir|rO| 'C}Ο|ww}s֏ڏ}w}/}_}_Ϸ}G}}wW'ܗ~ĵz|Nb%ڣ-^&H5dǖ:|z? Ģ0 Fe s42Ej 2%1j0eπ`;yާW7Gז0Xg؆&iFighYY湶8٨ +;K[k{뺠$tA\$ADDDp<\L|<]5{]APU@ ޜ^`TTz] :0… :|1ĉ+Z1\΀$dDBLTIH$ H g\L%kwe>"a~A Hz 6ر3=lUZpqӺ+Zjo`~w†"{c ׸-̆+YnBR^L亞%[:б5zXݼy!s2djZFtL 6} QE#^V 7C^ZrGB[Koi֨%&_%֟5 d"_\]֠fBb.H!]rxa~iY% &3R9q/zČS5ڸR鸞 8<.C)_/.ɣh^7v'*D Q`}2Ϣ,=  0_׾~o4 opOWϢ ɯOW614p_Oc?Lz5?h= E?:}x$Ưq jOnRUn"G 'GdZ1Wdx. @$DNbiPu'/w)k}%_6qvFDwv@|1\^'({/b0@8} `h7 KN{:Qԧǀ' sa C88|O,Wd)7fvBQpZD t[ts0=Fa~AQh8FH]Deu7Qv7 pw:Wh*@W`-@tF(e6Ih &weB9r a#c kƘXO:SxWHatv8؁v6zOdXe8qUWҘ0ft]3vJȏIJRƌ$OH  lGas7\TGhy#1nhaա1YxD C q}&h8o/5(zZXxbqGAGUp|BfZ7DKdz9kǒ[YD ȓըv,{;0ؓА  DBa>/y buT0?j`HsW:npci98`) .J@vLJi#$q$8 3ZXI ^e稚I^BtY}ՊU$ {)z!C̀hVhx؃ axr( [Sx:bh Ӊh\4IF'sztGX( fyiOekZH>,ueA ҠQw5i)8lIG`)Xʤux9#EP2[?fE%8kd{埳Dx>z# j7A{&QFJ;Pfhң@ HD;rTIE}BMe a'g`(*~䩛g+vWxD@š\r᩟Z*pBHr I.Z\T ]ًxYdvڧ󉪈]q{E[X&9kxj*y2雡Ji` 0zڅԚa g^xN/٢ʑ*YɎкOKsҫчؘGye o!yH7xޑ,jj eiHc-4L( ?n ڠ+ t%X;͚8(LZ+Fz a:wZ>+_ VҤUT)o! ~瞉7I(+YX~b9:LaAC0{۪Yo9V?a [q_SI0|)#jt\.|?T9K\zVˋ0r/& T@U{Pbf)R*+t@Ț;f;;2Wz'J>*{ Wʦc`:JaP+ƨfeKl9euːG%mGI;.M td%ifI(:D]ϸ#Vy0ĕ~(;æE4:Z9xN'V؎d(nhK˴ے)Z&L{=b{ch88LWԛhE,T xKp fBs>3zk kSdl @ +*6y|L0`A/tk,k+in)$ iJ[6*:}Zʅ8AO hl%U!?3aB,V#ˮh\a p`%ܝ̦Yasf I A!H[G/IdlzE͔e/rHg.+9S%YW1%|$eѶjwk+G:k=M$ l];38m"L\`!QQ-R>A"H3'_X$VF:zt)SpKgqԥXfgӥ{T'A Li+YE/ؙ[ {eFa현| VQq-=EЅ5~Tb+L>o1h#LX~GJE%iz9+ZG]ڄՀ*7iM{=#EA#a=`(P1kOc%ULimL CRViArL &="GL1]ɵ3tML@ ~ROZSle =ʥ1΅kK2 @ WKSN8t@P+VJlPlnfF^wSɬS|G܅F&u9 J ye\Fi:#MqdQ R NMZpIc8lDj4Gj@kAPjkppjO%lLp'>E'Ts/V)*lD)M'@DדfkV9FkKXPF6Be|"_(F>\b;%YWά~?w5 rM٭B8)ї0~m(?B;@ %b)I1NJ` `*~ĐR  X<ʊ}0Pp1Qqab m*" `JB33)cⴂM.ɂ2"Ri 1)- `6yN+ Bh7.Y;A}: 8x *aZ'o:7FU,{m1vYB J_(o dwp<+>!훲 :%yAEw;%c2!) iRK6ujTSbGS䫚,>˫3( rMbR> aGKb_&-wH*eKIl/m͕+j mFl,?C- 1㽦yf]RM]SĈ0. nܿ; XOuuɗ7}z_%P\pLvjmC94&\h6餕^:TX`rPZkYAf `%zOew[lCO?}( ʢAۜ!94Qj >|;8l2N1&׽#mYGȿ;曯Q6ZɧVN=eu:|ӺN6 m~T(\SgD50/>Y-pc8/z7Oi__xB%H=Luy 4=> =ꕂ8h^BIm}Ӕ/m9j | aMO@aZX-4krUEW\ `$Bƚ.^!#;MGA7qc4XeL\w$%]핽>P xAS]u.%Rn!6KR"q-jV͐1tلl/! !5Ś,j `I6 4I:Zhs.A52SNbB!%6 ģjx@? " Qq@6kKz'iƈyRj7߱QJ(ަ: qcj?RW|"Y6@ jPLGOɦOIԝ%>j @`BGM~a5 $F RtN e! 2>(FG*sR[^"CHRb5ijWȮ DTW5 hWӱ$q X{m"Qh{3k ,Na9~HQaR;PVB3C8.fDjތDD4ƪ&R@R@GQA`oX0 괖Ą'+?R57VK{i}_a7I\ل ډWrO(6;W@lj\=s !o3.rkb(ݮ)2aF)bN3"qDlm^y[ ]n] $)xءqVͪG})]iK_z=}߼`BxIziSթV _pR g[gր]|aIz!i9)_yo XK|` DPk=K~Rb[Q!x u,j*[6Y|,Ŋ$?UP 4$ԧҘ FPz$('`͇U?<Bf |h 6OwʚFЪ.B5}jX \Z&je 1J<qON@2KORP~6P) 0/ܢOA F -~J" \DhP \Z#Q‡k(qJ&ZPe00[,"b`4c ֢ek:p QiKF PaŠPfT ]FA* SH,!@&`cspE$l6H@ <  Q1@4H>hfp!2tQבĺc*e -5P^%~1A`pHIUXȶLLƇ "ʀQ#72t׈y0$;Eh9 Kw&!ixaJ(8)#%IFaFP ?%ia/^ɳQ&Ȕj @+Bc*Uh(wE). 栁e*2dm4 ; PnL*eʟju1i*F%tG%n,ْE'R"5[v(?bHp ? )m3f< G8LD9 x<.US.]:Si./Ư`Jm;]mHԺ Fs4`='a|{-0)S$n ?e?q:TA_ AˑAJPP*"'t AqAOEkA !RE!" 1EkF-mE%n.,.d>KnH4rTF6iG`A IJ̽B4쬜 "Jt)LLϔMהMMNTNNNOTOOOPUPP PQˬ(Me ߺL&"6C#E)aBUS7LzY'R (H `T9U_*@:HTI &/VXn?(wQ4 WrXZFsv}(ZZ˵Z *3XSJZz ]p;. ';}2DEPUl"_h_/@<Rٵ]cm;9r~J}怯s7 m@"s[ AwLRs31/j.cs6Ag ,rb)[gD3x~aN!t%%*'z3`@lAeie9iSg6)bu=m#5+? M@rOhhB@RgQ2sVxf$v[ Gl>6p/hv=+Ewi97QwaZ8"BE+v7) u+ +rD[{{ yuPUzWJ&wu.p ~|b-&Qpy7sFvHBsA>~_0RkP 2jx!{`v@ Zz4[XJ)h frmxJIFs5;J$E]Xϋ+FnSRmQqI%rX6~m)Y?WbB,؍-/] B^t?Ή/!T #¡4 m, Ȝ։[(&J\?fD/ ɨZyeg ߘyNf:Y4mAl6ms4n 6qfŴS.:H&U3kc %ba.bSS9I8_T)N} ˇٝ5C쒑Dc \R&!tZ ڠZڡ#Z'+ڢ/3Z7;ڣ?CZGKڤOSZW[ڥ_cZgkڦosZw{ڧZڨZکZڪZګZǚڬZךڭZ皮ڮZzJJ L~똹[皰ڰp";4Wa@qk|[ ۲ M`%}S5D)T Ao/9{8.I D``:\k ^{&z`.s{-,;o{jϻ۹; [:& ۯk8k (W!,4 oĮP^{9/`*\:_NM[J . =!b;Ax`"eۢW[9[*r73d;}pZe\i\ ȿ  VXVl-oR%X z XI$ʲh"]25<Mḇ_`$Ex!K ŔFcćnk 10,HҾ?}ͽܴ|˻W;0;BXGu#qȬnMqmѽ<% v]{)2xD As ЇqWyřg²'\S\ו{][^0ƻܽO/rCG՟[,qb? 8 x * : J8!Zx!j!z!!8"%x")"-"18#5x#9#=#A 9$EyOH*$M:$QJ9%UZy%Yj%]z%a9&ey&i&m&q9'uy'y'}' :(z(*`('+dbb*)B* tY#)jM.&:%멉J+UBИ$d>Th%r@jdNQhZ@ϸ38 V [BKA 6rpԹVnFNO+ WO]K{@&[^Sl5W,'"3d )l;ym3NE[9j<0S$n [AA!?t(ES v:LcvS DuHBA$ ن8%omSZ]uO.(cVsx_W}- 3 :@ݯ `[)A!(D!&aD "*Mt)RV4(\]b/O,cA2ۓ[_$SCxA>.)$ j!|Hw Z} Xԡa`[$5w+"Fa n`\Y K fb-шYƲ̥.mVjQ4&1g c 1nt& B3c )ME`14MT3n Ili&4yws,:7/(Ѐ^\1 . kЁRz$;pT2BY:1H%/tP-5$K1Q^{ ɷœ,ݱEͅ|ءKGqӝ<@H|ӜSUD;yU;tQ9Tx۪jզNdRNjuue'[ZֵΕpu ׼ha)XsbSuYI MQ<4l;F4P}Da?Pɷkm)]k^T+-:ðR"Ϫ?+J alʿZ7VRZ.U3;26s,XZͰoU,wXbU@*Ʒj,a20P <`$(vp3xf,`zzf4z7&uӟ6{PLYTg)jiEX1l:C6IN|8LCTCN( "НQT mĄP\(hBiHipJhXCDK = -VѠrYxgx~avvM_D.GFJ]Ρs d^k !  "!!!&"."#6#>"$F$N"%VbxEvqlb4%D)~%v…ފFB+`_+d)6DḀ/"(FdAa"+-+. F,3V0b5B6# XJh4RR=c3Dc`c)T#El#:c7R]2&c?R#E<=J:ޣ`;bQ8(4iXx (!PE"WFdN 甂G$Q$ʨ LkREdB݋HL^CD;H$*DJK?$#ldtdLKM]9RJ>'dL6$UP˱(K4ڷP%D~Ld  ]=Y=UJ_v)_%IWafV^1BE- )m&fqMYVmcaԜjI"h"Hn"Tj$PPܑ&g\ёfA.ҸYдC 2Й^jВ*9&紞‰ =(T@F # ٠>$Rd"6]c eU.NVi&<&^uq)(VL:;%:`jBRnNۚ)jtQ 1.ݴ(kӭBQ jbGTĪUk4}pAAy\N')~L̕$` 8, (kŋ+FYSҔTŦ+( ^g>KƔI!lQvk 䍖qmli־ -*a#'avf) gڦrY%ߑŦ>T֩g,ko).|֙eߓ*,ج6NmHzNܢn",۞j_+ꓝVPJlUmEj).]r.:>-9nm5H$>Cmپ]Y\Zk]9dmd.Jۓ_Z #a!S*Ŏ_]ꖂ«ί$UfBZ%f"po]WD+|[n! #aC-(Q$l + ojϭf%*Fn 7ғۆ,n+ 3kp"%=J8j{~pTХCVppC볢-LQ[ C " K' w]6$ שqsm0]crqiH.Bi'#1O')ϝ2$+ӫQq\neYo '֝ i@K{jpI#2G213qEmO s\DCM2J/tڝ`=<1_9wr8(@CQ9g@is 3X=?^GxY恴=*.G+nD> r2bmte;Cz-Z27}O6VQ& .'&tu2OST_4U lT; i^4t3X&oZ ^eцK\S\TO讖L`wT b;vv(g\ՠ\T*P'xaZ%qma6rNz!`g{Ej+1k_ 6+Rg5]w6a*HaM"BL'DZPjERI{w^MHuGT`ws]xrtt s|{Dw+7~wr*Fǀ#Fa!0b(8 AƅGep~x8K8888Ǹ8׸8xl&2b2*y.p+tk'y.ص1dJqqo,ù?yC2Lo(8z@::o(>?>L _W?8Zcgk?r?o???#c?sA/g>AI8. QY(KDID:hx^Ro[BXٱ 6d@\>S`Ky;@9<@? 0k®,0mĚ[.m3ξGKZئ]c*`@ZuZudo͝!MݔGtycOxhl{q~M5k-$pԯ[0 /*+2>>TEDBP$qE`ĥDhD_EqEe s!E,r$M<Dw|r(*)S2zֻ'*KbR96N$R+(JDH1;? 'S/F'ytq+ŴI6RIO#mOJ!?uTQCTHUINQ]TYUFgWaVZu]ܴUcoM6X^}KbYQMDD3}k,$1NrVJRZxݕ8@KeevY&߁X"vZ$eS8V FbiwLdNv9xCydI6dSVyeKnecyܙif82&\JSZ8|#N:S]-@KҎ=:*g{lvV{mQm{,g5UӢ-;2xWx4*diN=Pzz j-Мtc: HoSW}u[wu}}vg yn+wo,C7Q CAɔ畺'A.+z~v{ kBDă'O_9&sNZͪ٣R$giMQ#` x@&P d<"?Ak#gAton# 6P#$a MxBpzRa ]BP3a BP;a}C A$bxD$&Q1D(FQSbxE,fQ[bE0Qc$cxF4`cF5QscF<ю{c1$d! yHDNxLd#HHF2'|$-yILf2 A';P$e)My"z \B)J6Re-Ox䲕-}K`S{ ,c)Ld&S˴ 1 b0SӤ&MnU9_1{q}/*&*& + +v:$m, #>ˑ%v*# ,ۦZ ^RZ0}'pRq"c%!! ,-  $h쨾i´Ұ]n1Q1,(\K5" t)Cr\Dem{Q=T ?_j^)9m(p@2'zN}$[_SVn~>K!!,;  dh,h+ðүn1'Pqz0 .( AS *BzPEdA|u@c0Y*9"''zv$ (o@2\s<"lkwx '8q8*Q zJDMZFa|BH!!,J+ nI 9ԍ[hZ8v-±9{ux9 f~㐨 (&N֌4v_h9VPcK|>OoA w v;Y73H!,f _ dh,h+ðүn1'PNfVFk+vaޕ8%efqF|N;p ^>:2L!!,u  $h쨾i´Ұ]n1Q1,qz0 (AS(_ BzZEdA|u@c{3@yaY{q('gv$ (o@2\s:O!! ,  dh,h+ðүn1'Pr0N Z9=^%7E!rxDD!Ix7 MOzk~@r"L|bsajyl#fDMK!!,  dh,h+ðүn1'Pta7ũ,n%#HqvUx_Ƽ'λ"|Μdgϓa 9o9," p@Hc C0qp(G'(bdq#G%!! ,  $h쨾h°ү]n1O1 8Fᡉ8~DAJTZEHj1RiBZ4p`%=MGcl~N'm'D|%O@'o#jyBG!! ,  $h쨾i´Ұ]n%Q$x $sRDB%H=XqR3SW肯Lwt.RQzU{' @$' ay(g$lqd=>:<A>>R!! ,  dh,h+ðүn1'P$pDChd"*\ޥvrʐX5p$lLe8T) .Zc_)9% (r@6'Os~%\yS}{'\/H!!,- u dic,0kl4}r@7c i t̘RNirqׯ+.)[Egv=/oz ZZZ^ ao}U^lS!!,  dh,i+ôҰN"Jv8IB-r a#ij[ݝd(+s$&5H2WGF7p ' z \41)=LNUE]BW:ZQ< hZ>^zP!! ,"  dh,h+ðүn%O$v $<.XK5 +Ř'9C>N.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!!,1+  di@,kl4}r 5A#'p)Hh`ԘU3a#Z\ȧ6 l X+qVNԉeE\/b1s,$! ,N  $h쨾h°ү]nQ&O b<&M3fkK Le­+ExZ]Q)y8{v}u?4#'5. g/frw$( <>:s609>W!!,[ `Ik8ʩY'ؑɡj; И-~>^  8$M c Ƣ $HE`mv_H4!d8wPx!$KV2B! ,j  dh,h+ðү*{P !Hh<&C`6K0$7.r)G˗kxAѩq}l|[~#'^L rz/=4{'G:\jy4b5!!,y+  di@:h,mθiyO-_$Ih6VR*"JTUF"qQmKݛR9*fnW8ܣИ#2vx?i"-X1wrD"eoqhz_$z0$Vy`#'@;2 *< &+ )@ -s-/'t3Ys (zv ! ,  $h쨾i´Ұ]n1QILQc8]( *pHOZ9aJc~44(XP@|Dy  @z:b6p% iDp Mk4<#l) h8{YIN@H`ZBFG!! ,+  di@:h,mθiyO-_lH-eMUM ԪQa 'kļEe!!,+  di@,kl4}rJ$S]K %fS7иL"pIG½KfdHʲ2{Qzt+}+{* md^"T)]* x^y^X%X^#=D˺#¹+|" * i>,9f,`R‚cHʒ@e" V̨1J! ,  $h쨾i´Ұ]n1Q1,B0Ns \$*E11q~wX|^s4']{7'@MF>:2{ k@: X@C.Λ<l[@?5ji3wL ҷ/G|t$  nU $ ^82`(׉`(pa gp,!xDX9A|-8!0`?0t|2A:<5"a 0G8W>UK/p? z׽ \c$3HP{lxx0(;KAN)JU<#wE4d pWdn'I] G#"\,+G[>%0D]&Q+۸IІEKƌҞ{09Mo x'yMg2M`,E`j@4ә08!-F^P5_Bⳤpi!s+$(TA9SLg`Nf! H+=(E頀ޮ@S.AH‘*4[郝S>isc`\\k޲c]*8BBԜF'%IW̝ЫǴ(;jY:ֱڧ[I=1-MO`=1@apEeYf"k NHĬ.lI nEiVC.>hʮ{An +Qn pj*x32>NWӦv0Oۓv ngɗEmn,nwTvx*Mͷ={N/|a1\km 4?0fA1b^r#=94 >9^ژ\4 Q`)X5S9omG!@y )z Rwg//捷> 4ߥl AGў >ݎ&o0 S[ 0<#y{(Hrj~*r}I0r#8}DhVl HJi"!%:ptz#u&x+z`>el /'Aߧ bYJ 8 o~č}V|;p|1ED$qOUkM4}9V}>5Jt[v.r$NwU%2E,DoHrせ%j&FH|g'G`Lgz_y]z`ZW;V,O3>FmGH7NCxEOe8EqSxz0[8^e_ H40AH:mƁ:v*LK[t]\d?5\_IcnDžFVuv>d8%'Q@X~z.iJzOzd~| F}cD\GoH]F}7&ЊL~e~7tZs:UI$bwW-B:DZEJNFJ@V:MZyO0tRJ\ӥ` 3eaʥ얥hjlڦnpr:tZvzxz|ڧ~29s8u*996J*`@_@` y-@ zj ʩ*Pc<)ȃh}߹?CkWvӈ٣IDAN}X>w tde?e?J`DxT?oXJ#*wv^?F[*A7g~u vjʌ),{$B)Y 9|NiEey>E{0Y{k{ZiG[~ኢe·FcG{QdL"kSJa30H+t ɷ\t) StEzgx%=^՝vW\Pr7bn7UK!yRXYUQ c(R.R^DS7`_pbtT{ T$Ủ1ZpUFa$*UhZ ظJֺ׃ ILgX;afDuYJ.ZDV}06 ې;T都ݛQ?$Փf: Zkh1i >H-K]UweKeNVU*E+@_[)Yt dq%D(Z͹Y( hZ e5P|ňUِHG2UT=|0XK ÿX eiĠkmVLdOƗSVeSYe{ofbd5lhYscwDjz}[B(qmN:IB$d,p}L vJVj,.mY$R(Gvج wJd Cw86zL+?ŋ5Ω<Ѹgi n7ۨ1<\WN6D߬v ~^uşׇᩉ^Q.SNڵ-1OLq1~Ntv+I=O3I}A-]%V+ؾ}tI9ӽ=.86XòL@T])Ї_LY);u Kl/)nejI>넉d~Q~m ֞w}ʯPg{Wҍ~Iz$[9uCٷfA$x>Y;&ZiVU =iQي Ba0PZf IXY[w ǿt.V yj/w X$) nZ3Q0=7C]ьݻ^/q2L1xh6+h \;_1fAMOqs:CK x{7# |kH\c.V/zxJa\{\kC0˽ lQ߳^cȀ>=JgA'0<3߼CH L{csHӽ_E߾Ï+w_㟿߿0  h"0 \ B0 +h b0 ;P"^Kh cN [.e9LXZDSY@70"%[tPU~ GRk(7#b1ZL g K׺̤3ƪ7iGՀ]|9VP?2WQ8&RGD+&D4`X04I+F$0%"WWV1Ubtgr!Ƨl&1#ŶrX+DZatjP*#7-Le&\G#*d&/~40pR \'%mx6(L)1vgo9PNHgt#5a c'G;?%VH-s+T9 F``hHٕSA z4Je;PBo6e+i4kD7r Ltj]kyʹxu3gDcВ´ fY;gAa+cU. C& aLdMdZɰSLQtP$|bdб]mJ6i뒺! t*[K@Z*PH5 ma{.B7C+F9V? .s6ʦ] -:,mܘ%]@/koD@x [ +b*Һas++C]PfRs5ps3&kB̍ Q0e0kl6ʒ,[A t'V1 *#*, HB6Q2eN9:N 9dul=DV zy54v4.">Q7ir6g4t6Z?T4EW/)(S\ź~Ϝ {Tʅ5;>$r_S]1Bw8uRR:׸Su_8}6mc#;^6gC;Ҟ6mkc;6o;7mskQF?D7WCh"!RJgW04ł]ESg6S^ #ϐ: ) ?+h<@Q|"Eo*x"x.~q)"JHՋwb$Ans|XyQ2In0cxaKR59ӝs'Dy@Wқu=]tX؆zFh;!$Jdf69 O=4){`5?_{5M&忿)j;:ovM4tfTHhuU#C/;[g;8]q>|ap/z3#?oR9IKB!X騺|wC<&, `v@PL?3 \~Eŀ@(\W,WuYy uΈ-) a] pzEvŇ TBz;]ޕȊ^=\YٗsP!_ R VJlCɟYeu FLU!^!_9Wq̰!XlNUa͜d$ E!"aAL}eWeI"Nqf!!W' ~TJpa$0XYٖȈA%UYUay"(0ΖC<<+T!Uu_ 2.66:Az` c:1 b2I4clX$TU"J7V*bܡܝ0B+)";2#<ޠRXpJ߆e F 䘝/F$7iKBB2L ;f!!R$*V֬lɏY Բ (Y*G="aJ-yD@%7%:X&MH)jH<>!T6EUYɞi֟EŰUea"_,Zn(ācbK٭߭u^ UE@Of_5 \"c@2Wk遰 Y?U]ofpgqq"gr*r2gs:sBgtJtRguZubgvjvrgwzwgxxtNfyg=N{~h#|']a}gȤ ~qeah>۝):h)A>>6bDrGIvhZ+剪b]ʨcKehSL͍h}%")GG&铮ـ(RRRb)c]"fiY阒i院i隲iii) *$*MY~jFP䦡*Qݢ:j!JZ5jTzjd꧊jtꨚꩪꪺj*4*Ԫh 4 뱺˯e"kIꪰR+Erbj֢ⶂ+fXM0k뺲kkkkk[$h$j!eJIOS#Ph+\Nh#O=DB"ȷfnF쟆EƤfʦll, ,ldU/põ0RXMi'-xP-o>ׄM@vyh ml"&饨  F<ӼMٖ=2ìOEb+̢X Pm)el~3B%FҖ"J-Ϛ pYr+XTh4%ڭWE!CI.[ˊtXE5.7m(ց h8%x] 3 AOri5S237s88s99s::s|s;s<<2='3!3>:?'s@ 4'tAqp0B=2t5;? _06O[ efFv.{ 솴AoIXJmKtsL2_!M3NmG@ԒPQ@c-We' UVZ%Y$%CwcP['QZM$]t/ YSZGLyo{׾DMS,pGC^#CDFN`oz;}Ё+:6?YYu<rFR/ΙlyԜ _CN˕̉]AzGwMtfL kdop_~0 p  \ydDR~rG`h09P*[d>};2T5bI)zЌZXe2`QEmCة ȦHO-~PC;&|A{v+# RL&4T)H 2_]'|8?@&Z ׆S$2?("Elg( + xGpAk+'B YCыPߐ?21N=MpDJPh߿?0y1ڣSrɳϟ@ JQI"M F`c'FjM]v]/$)f@zF1WlVx 0SXnlMU60lQg&wIv}= zSč:ӨS^ͺIӲSV@=S.@; a i#{xkNDNeSdmaw v8Gq%TT sgEa` t&pw!:8F(VuQ<0M2cDVUGf@E+qzy s!y!c0PyqC,AA4_!ؔA& IM42MS'qYU$cp)t։ڍVl\1"z'xצFqآx]8ţ1WfkV]md:(lI"i@ )iV66h+ƙpM,xp]앇($)a&xWPcQx) xp))9ĩ֤(`D+"AQ%GUؔV &Xh pPgwKk8Ќq͖h%V ) "TrY(`|X  50AJZa'6T$]Pko4-nعfV@YN)GOpj.'&0}st*uuuAj+\T΂;2WntL:*΀J"]'O,ɓ_e*d,u$YF*MJJ+^ *eCB+f+or0i7b_*}AtJo=E*\xĞ|6H՟Ǯ{r pHP\C q  &Qn\p RH7xS>/3  @wV#XL7ҠHL r-lcCa;Ѣأ&q X@14CE%i6NAn67B{v䃗+& dDBLx$F:I,S$'yo % FLz" AyIL*W1`*ddt,v2zqK>#+Ib5|$,) "%,vjZ96n"F% 8ǩXJq~#I ;5Fx>U @JPtS6|PBІD'JO5*юz d, ƤШJW!,   di@,p,tmx|pH,Zȕql:ШtJNIvz؄Ezn-|NN mzJ?*_5d {$i%RAz;" peû OWQk:#y(-/jܘ Ǐ d I䍑&SMK|k_u0w)dLÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻoJ Mqin#l=μH }뼺yL<anL_ĖMkE ˟(F:߯E(;YJ&`7앂 Db%J<Utv0^_ (?\4I4R`E|y㏞ܘLHb"D$cPFȒ'X2WJfuXu c.We~`=yh)a9dЩvX*Urf j,#6裐F*餎}`Ip :jꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlᐉ*q q 2'|D~r%a41ڴ)B(l)ϟ$'MrXO Ud5X7Wz{j^߁(&.ѳvK,0ɞhh5im"]B!5o*p^w ۜXt$pAh7Sي5EwF @< w]:kޅ؝4\H|T菒B&cbS>1Bh̻ XW_@rS~+pRTpW/Q|E@ <]KB&` @"P@ }b /@%$0@@P vR! q $ xj³rlz "BoSȋ1O$N$)uJ؈LbAS-V@C!D og5/J01C "~'cNxGh wxRmlS@&Q$x8JVJ9 )C {aHfT"\87!-#$ F.lI<9&: P=JS:y&ۑ)@LM YtNr<\O AsbRr`'[Pl!5#lh2x-T)h60 wP<'̡Mw#';&oS ͙ t.'РO:ОA#;4%HY?>hÃ9m lSXGI^'l)R*pGp6d#.PQ.fԤ( MpS3mkdnqB[&H{.YԈo[<pu\n)GYC\# fSC4xl'G UR~B2USq w YzXufm[U':٦p7G'Hrl[?v X]-'yߍzp܃F>ܰ};SĔ#0.~zI9mo5- m֪02#ECp&M^pt5 ~Z㷩`ϲ7-9g|kps%Zxw|kH y(W]&c5=WA|%u:GcӟT@8oAVC>AqDGGvuhxuwany2jPlvY27s$akvs~NgT[p/sDeB ucOuv4UxU hUHZc7mQcIjMBA&[x pwX8eE+#Qls0{hXBy)Іoiz8{JBRQRx8 }Ud _O؈`zPSMx"]HLIㆉ8[p8Xx0f|Xok (xhc^8SP11 Ըc[ X ȍ B&C@D.4<8|C@3Z%2Cx>5?x2A>C2!DzVo3AAxC$d,>up]>C[>D tAVV@pKQ(D k$󷄯g62vSs7)DP.HPGx2mFZO H3prc0G\gISNo=I']5=1VF| esYI4Ae#*F>4Q6P5"8ٴ#` bٕ4DHp(-gzg49ئ_Kj2i(9tcB4Uu5Yc 6{~P*&$ 1ڢm'pJuzkʦ"*zjvʧ"ZXGeHZꔘ)rƨJZZZ:\HʩG:cj**U`I2CpB~?r_̦l5Z^5)dɬ6Rz 7OfZ:qUC\JdI@uFWqlꪫ ZJ:^YoӪj ~zz}TR䰗4*:K H;I!#[c)ʪ'J'N68pv_To>ΚGV4+Ʀ9ָ5F)&V X=ZAZʛGccL"vz1 3kt[ps2*nKtӸ#!B{ :=R39O3S:y[ '乐K+[[kCG]C|9W~vGK[JtB״XPvn}ּmUlĄfjvߪfc^ɮx`)v뻳 뿹[+k ,̻lLkܸ+,|Vʚ!6Uml¦Ů?F_*؛5 bc_Y*kG9b`Sd[_F iN✾i(AFU%@=VL\<hDt\LJcUda1Xt]&nrtO ]wNpAi:L)SCKp\uǙ:ս̤wlZHJqh_ eKCY,'A !C,ܾz<G3'hyJjb:tcgb8FyT==G9ͻ׳r|q(M˶G.9?+aW|Yk9q %y^g;ȄUުۋˤQZ,U0EѶ ,˂<3+GY:b&Us"T6ʔ ))ـ?|L˖5D=g-AMiTL/sK$l$%?$w3ZDY๊<(j؍U2zܹithg&AQ rlnb0^,+Il 9Z؆-Կ0z؍m`gIٵr`!vYq֏aڤڪ.ڮڰ۲=۴]۶}۸-ӆCk 3wmšCZǍ/z  M {[B 7 `]%ڎp[8e ;.cx Q#<*_D*=Y Y4ߠVsWyy]¡Xp jmWXPe@ NrJP 68. a@JFm]y/đ?19L2TOz8 _cPTT?T&9|D@4)a0&`e~S *i\YN{-4f7C2f.Acδ)U >R>fsjd^ Nj>L䚀@tҖ TZpgKd??$4̨ǔHї6mP~z>kLN9n^GO?ov3><ꪎ ^yCfdyYI'iߤnՊDt+#&fNDbN턍=VE΂HmPޥ$N UGCnr֗4hRr}om8\I%_G6MtDk?$7 .9eZ{V;fK2t]RKpeC_l&du:>cvq~V3ZPzWǟfSo&6V˾FY?t!ALh9ϣ0ll$n5%-pLƛڶ22}^?u8͋}ӗ_`减F_O u&,6ڜ_ ps^¬CZC֭*Z|ގ BMR8`Ҫ^$X4Ӳt()A8BDj*CN,qqNK u +N$2ܾ0Є! 㴊,"#A2WY[]_acegikmoqsuwy{}uOTTNd?&-LS#$IgÏ4OT؍- +@2>|+x8Q"۶ng>,Ga2 ^^Fӆ!Y+ 礧[f]):hQG&UiXŎr}!Ir2`IL^"egJ|r! cߍ(`u'Y\zrSA(S `FX\6M5w5&\س'JtFqC13%7J@DE:/p#m(ǹ:4ٚjcE% d.I=26LB%JQ|ΉhJUk*aKYΒ K'kK0}0t/Las($1MKt30E3xIMmncs)oa9 hg/ޙNyΓ=O}LsɊA(.ZP. uC!QNE1QnGAR%5IQR-u),")a`W-2 =O4MvrWXIym"PU*GHe\u 0ee2U[0ujMg*YOf]zíЪPJѽ数-k wv# &Aq.p$= ͤ': #"K Lg$E(1YDf/춛\p\0'+gՔلF=of@g˶P`հ5/Im7j/5̏5v09*xdԇ}3;-Ij+~sGN ;j}DSab2p:<]*!އugv*]Elo[K^-[f>ʸ޹cL5{mQҥ<qͅ9ND+Z/7P}߶y|OE&f -)r Lhnz %@O'3`#-&,r,K%Y8r,G2,߲ }.2"_2#WR0ѭ.ɭ/;2.%0= #2M2/S1lMnl?83 Xpwa3IcB&7)i;x>b*ân*I Y<V 13,&21#S9+S:s0S.S9-- 9Y<<s====s>߳>>3>><?@S@@_4@@4A=TBsA'4AB5B!^lK %@7=O'Z7#@+Z@ HF2Gg&0ASjEk4e+1tCB`C94J@?A/JSABA4C?JtLͳL4MÔBՔ2Mߔ=Ф8wnj&5I0G|DzF-BF RFNPn!qDhv,69u ?mk^nV4.>7QEii.NmV jO#L K |GU)R43SR6)TW R3,2V0Wu\iboH&;tpcG2(v]pQ8 zhU!۷.+tk&Φj1~ kY,p:ڱuȾ ld4:DKXpw*(kD謹U+ѵ8L`ZD.˦Кi0,+''įzZ0%`.;zZ/^貋U;۱?ۦn5lX@>Y}6y>lwi@Ö}۷;l0{i@]@{m9yy9a@nk{6o۾y#gPTø]ry50Ge[DPPSXLgKhNL|(~7 4@bE5V|uJd|= '̄yܜu`p|+<'y(l+$UUJ٧]Vy;qwϻwZ@ ͛\1{WŶ}-c3{;ykCyWnwӕS\K‹W& [#RFJ[vL[ ,@ pJ8ͫt}!+{z7 j9X{}XF"l Do, ;vⱔb  ܃=R*l̦1?H-4d3z8)Mg*Q/aB='+:y}1nZXCʬ =v{w7Ν;}lx狛Γ˻w~{lŻW%))ҹ[gy^9@N}3+3[F^=S)qX#\m[".`<'ɤDFbc\BogJi-8Pb_Ka44_Ct4KuFI&n4'A9qPrf@˾D Vx _b ety#51BPâQp]ZC(~F!+ xEn'Pr .26:>,, \h.("Rf"rh^qQie 9MY=@)29Cgw g_0WJSy[c<:>7q]xN.ulQm ޠV㿅 c:( p ̮cV" `_|W<yf4 2uID89c1!Ŗ'u*h&7n^4S4a!EsE`kfˑ)P܄p' /&rı#'3^Ἒ0awҦI#Lpz$4j6mH$âOW} fAiT7k^!p6AkiH^ 5= =뱊V/+ Yw/yӞ)I`4>mEWfq(Q~wR(GFqZ OI.YK|r؟zvܘqOEE5$TaP#9G5v&r( EQpaRu=Ba 5^}'!ƗyЗ:W֘j ^Q Sf h_kԦ&b۩*[%0p &Z q%/XB԰'Ts~GSSüX&M>|!{,]0-,/S݌;A^ GQ;Kw0Lr@fYVXRUUCqX{ UɫQdA ;H@ir`,B}L RmՉEzͧ^~j(}Y&i^g, BґAƙF\Қ"Jgl؂*pr@ p rvqɯp~(2.=HՒ?>Yx)q[&{|Fه3 HeۣD/;lFNzxBCw6W1=ow8y'H~\Se殳٥fOhΎg{tAKTlŘGyܠ5a`S5H1\DAv 'TBPyó2<ec h#mi넮v-Vz#NwC װ>owS48N,0גY.ۢE09% cƖ(3*^:|HIDĢﱌw,HJT2ƴH却;c72F9>#ԹC!)*23iOұlݧ9T.NQx %tT3<&K`(l. TDenc0!.1A6ATDqnoU!+Ddqob"yKpc,AJl+ܥF9T$'B.$ ZK~ȒK=T! QzCf\嗤/\7HG].<!x" 2p#-R~ xl̲F)EKKR1`(u*FIN8|84M/i@5ͯM8e5r2GΙR'e!XA&YRt8W)!ɄB#K>Ĭv9-oe[vfalNp=BC:$H Yv#<|ǤBcBeԇDwwNj+TȄiՒ@MH&Kj5cx7 *d OB]^Wnoe0 qk4%+̐' N1}ҤPSbX#K:1=6,eWPCԬܰm6"Y4i Fܒ@ &%#fzgg@@HE({1G,`2 4w# /$nv@;^r^2sH5$=3:>;t*fi.cKIJV;8 -pjy{l6=@#tJ|WU̵~CWNf\Ԝt 0le[@CeNmLnz}f[?aő!B ^$^xp0N,|.QB QGܮ[ g82yŠ2q&ź l'b+By<,>K40v.]+ݚl}pG Zj%vZzbQ{;WʷvVʼ\КQk'tAY1׿ɍ]ߔS<:XN{JjJ]:` or})4 16 nb'6jxp[+'|7vAKE󚧭C'99ɚ8eu"&,Zk^`rYi) =\?JzMip:BjJjyJBc! @m֡BV6ꤒjꩢ*pNey_!| Fjꮦ##zoL"j**2kD"#|$p2.#تz뷂k N+?I"(h(hkkғ͹궲+&l (Z+gU"klJR,uvkNѦb"VȒlɚln\!.NhM(\,#ĺj,2,0il*,%*R",&4Ѭj2rm~k;Vmͭ@!*ezmڪڲjmmmmn n"n*2n:nfJRnZbnjrnznnnnnnnn2f @@*z  ( @ dR@ $3obUj o&Fo./ (o - o"/Z0>po;n +o χwoMgo o coc 0/A.0":A0p0Lǰߝ zf p7 1fpq7P/;z k0p(/ qS/w;dҰ1;1qq ff0t0b0o #?2?o7//#/gBGXM/L 2>(1++r-++o.*2%S2>$0A22?1Ì"5cs6'd" /4 3& ;H5"0{-/ H<0*s =ݳW?7P(| 4;BBB4A# 3kEE/%k4?tG:k4E7H3pIHS4I4AKI4MwMw4NkN4K0O4P/PLtM5'uNwD[TKq##//&83U142/C)?q0rqt޲?\>^+u=K#K gGoV8/b+8'25{1YWG,F7uOgG w64thKQMoP#h/lk6m+mtjvk5kwMv86k wo47q'7@s/r4r6qW7s_O#5tt4u߶u7v+5pKxXq93p XcbCu&X3=5x[s>5~6 q ;:#1's~DX_*Fq*xvgwsNXixOwWw5x847y8s6qO7L sGo91[2t0%G?0O9GySy_y#?kc9OO9?99s3399#9#ygyOqzLWC[&7 cx7]23$.,x0xE$xu@g4wW: z(B[67op{yyz0y:gp#0;C{[:?{[!S;k{o%;FV:.6277 o#ϯ;HKԁ_@L/g:^".\/2(tVD8o:ׯ:3g|E0q4Eɣ|Ⱥw ©˓|OwIYL/˥r?7|s38@۵ςFax_G{pb{_}Rbw8c|GT=B٣z;@ڗ=9Su˽}/}˽׽=˽=~~#7>?+>3SSӺ :OTsu|A5=| GcuD6@vo=}O}+:o~~䧾}Kw?o??ý=??c~W?TCbq)J<$DsJ^M0ۭvU w״!n_S$~n1j/b:0|vh2b-YX䡑{ :g/!ăd\bD,"T#C[VJ|Y"|TbWMmhXf )+Hh 2CMrOY%;KgS,mcղi1Qxu|s0w\Y'=lyڎ!mƍvۻy;m{2Nxe̝7\齣__=tōr9znI's>DD/, Waq._-H .Di@ k0BdG2 >.dJcȺ]<ejw;1?!$H#D2I%dI#OH+PH!JjjO8`;qu')NJ $RF\8\3j rWCM+s2W]wW_6Xa%XcE6YV&C%p9?h wpsEpq'r/x'xG>ygy矇>z駧z>{{?|'|G?}g}߇?~秿~?`! \4N(0VЂ@4AX-`"*Y`Ʉ pꓟ^І7@C> 0_aF8D$13C*V1k=G,[sbyPdX2F+э xjX"Qa@XFBmH6HDP#=7L*ئބgZR'kO{ܞlAOq4/"ܙcmKZFz(zЁ^9۟p!H eM02Se֠YtxHkMf16 `=N"GJ3[.SYb6AT+7CT~?sH(8+@#sG|",#c|35䢇g{hSRZ=5vԡ>U)V]o뢿{.jv]?cg{3g7::%θ3X;c"(-P[<"3Av[{Z;ؠu\G"39">#HS9E#ZA3[H\ȋȦ#9r l SX yz.CșI4>rAh2b#tZ]lS ɋG$FDK2;9DgDH)ԀixF.,,f z{|k?4|:h &6S%K;KCs|},KC#J< ťED(D*QYCc]K㺿GjOsDNA4*焭̮"2݄#D̴7MCs-D898%-u»eSPLv?(DQDSʈͳcED:=\BIQ=c ,E"̸\03XG`+[d;lZ%R L*MTMG^+e-RfL59:&\DS7+=.:֏qO(CHI 9쾭#U4VCdTm8IfVedL;ޅeY[^da_CTdHQ &^cvdVeffvghijklmnopq&r6sFtVufvvw'zgR^gQC}Σ&h<'9h,z&n^&5chu臱芦h %AяFN'*pr—p2bv9z*̙*ǃi <51iWc ](zZߗ+avJ3B4bD(V&!_ՅeWe[<-cΪsU4^f$އTk&_Ŷ=\U@kV.1.ɮˎElˎ0ѾnmFn&qץ׵ehUap iPhpw&@xɈi X5dT;t KK{,U\\\;-l=U%=m N5 ݌L]k=N\]-yw߿H8 7a5'@Á-FD ;4HɄ;D-c͆͜% OYJUQ+ 0<RMNQAUJZ4hT$ Kf 땣qĴeJL`6}wVP5>‚gt<;92H3eU7rqyN($#S:3ΔK[hܲ[V c k'\N[c؝@CQL/>Y_CvIyz7+ƍ{ǣҟ(]Wznq!כr2LFqEq)[zф >'bF`r@.h28#.Z!cFx#9h@)D(dFM:y$Q"d|OR)%Wjw襍[bcmIc+]WR~dw31QgXf`'عր9TYoiTNf&kz*ja9$*+zIk:+򚪯Fg.l> mNKmֶHz8OIZ@.E+)uق+.6.'= d,n##l")'7$[0vD-ǣ-. s2Ls6ߌs:s>,-$ţ;Z]%C 5=WJ }nArSoZ6h'*W trMwvߍwzw}3Kp 1uPpWw< YvgxwאѸuk/eZ]T1Tu*BZ޴|O||r8>zLSq {=x2W|~Oߏ p,*p lJp/ jp?p$, Op,l _p4 op< qD,$*qLl(dv 0q޴Mb#EE/!S9yt/~|SQъK-6Q`0 88'} Z>N @dQ"Y3ӼH>$4@ ]4K7}V,n<+&֐,X<> pJkS1R6OC ̌0pFaӤAzYmFl\Qv6ĕt ,Ln>N㙢xj[욝<*IÝb!(Æ3QL8O5vYlcɵLul3N6=x[ƹJmkr{ [AcV)2@UiwF;LЧ2C-'Oup~Q+x fp8Z®9K+ v=u=1;WUqG'/+r0Ne=aV9<re 4.jWF=En] :¹ L8I~E!z[^Nd+dXlmkUyv[-+BiܠP,&[Jtn-%qN>e(?MS&4%2Gӕ-[3*<pZȰ 'Qf1JkJ+}\jNKj f8 9 h7\N8 /K aU/̛3+R >a@5RDN9(IxzMSÈ{.#>i1)uG ,6?AkHkyRifF.Z&Nvx0.5Ut:Yn!@xY"߄,@;IbSv5;<.ab0F}Nqc;.r*c .W-'z&XouKx#oBWQ{:SH&unb/ 7.Nv8LZlY7!,U{`߁[!c1Y$KSqפ \uƗbzun\X[ˈ^ta2-Th@l+h6*'xBV'.X&ykΣYnvf,Zn>vB} Vp3>7^v+V9)cl7f+{tت3>yYN ]،`E6\Gw(xm#6dSk:wgfVYEalQ}G,Oz(n_5' Dw>)$gf)ag5n.S08uMGW3fDORn9W8/y8"j)8qw F#'n5)9w{ZiǁLW/'O8|؂u"}EH$;rnSk%s,Be:rMbpfHXz`jZC} Ee}ী,6b{`A:81dDBdlx hhUo}A zP˥Vo(|vg.Fj~~ kWu\dwNNU?upg{X8|BQ(hVBW/U^Ks8t#t"SBVNuh#/~C7ݲ`Z|^֐W! GgFMlh/ejAtgWGbc{7!icpxm"gȁFny+Tl)i%ݱ "y.LXc(8, 7ҔqoɠNq 6ٸ nf(a҆NQ~j -A ),ȗ(gцPf҈l yTm Iw܂zG U8'ANHS)v9NjrS)X39hy(IZ8A~_HyU#>ncRpw'O H2sN74Eo4')PY2IP 9y51m5YgU6)`wx}g߈(DY084f{ U#٘r],G5p 9 OuhjR X/cA6RYNsH@)R󂎆kWZO蓰Ad( kHyLqIUjُ.yE֋\y0>_h^7qX/JbLO-wnzb}u"jtq66Gj;cIv=/z0pca-hj/y>Ja'w؟8ɥlwTJY u'ηzr Uq(CF.iǙNvR𵒏A I9;xiǪʤm ʍ:&8ȣl]V}%0Jɮ種Eʘj1$h ) ((\$`ЉVފ"*{Iٹk=Z0V[WavX?BsעwJdкF#>^zO6SXJq;ǐ$9 ٴ=C'VDK0rQgs u]= fpma`)h &'r'4*􈩣&u-/5YP7kX s%K0v,}kV#VzrNK}ri("(TG^"Cd`%3TEI=juB] UkK] gt'Q[ҫL0=Xֻ3_ vu k"#1+v2e@9|Qs8 ^{^TZwkkž T˻12;bsg2JUl. KCv}M:TRFv%)'ǩd@;TZ#E9qJa< ”^0Www#w2LnI|RÄ`xUv%dd|g[d̼֪PUʬ{m*+vk0a{FtlO;eol)pl` ,az4ȅ^8hȸƐM0<vULV,zzVrS]cg{L|sx`PfnʾBP4F(cu:˴#MoջXJll8e3rp~8rl:jĦ+rcm 7oEʩ\yIp"]8DQtʥ}9oL|| fte<`6x 9BJcG/.}r0,Ae8lXPlJ҉ J-X0?sHԒSt͂tܼ۟ejv01v|f=5C>E4-˚ؐ xl]~->bClH(B}ܼ}B֊,3E00;w#ڽ>#t0$oʲU}*TܠjRV}h_q}T ܣ}<&Ԧ*2Tޯ ۯlCm5=-vy& t?;ߓ=MK(g]tJͪNn"Jr!.#N%n')+-/1.3N5n79;=?@`t=[ g@.3HU4޸vDO\@nLKK(77II>dzDf~kD*֚;ӄa 3sq ? uxND|~l.<8ٗ7j7hRH۝D=C{nG=Y+ oMD@=vp]vU`Q05Eb8ɧ6\Sf]\Ubhm}v %TTKU jݏy5P%\ T]vesqc&>8SQe<f\M6e>d8~^4e{[57v$N囃wcMFuJ>g(V23gt#zic| $D^6\jܷ$yћ^p6! h2m:A)5)D?Fjg? sr1Dz&oInqIb'.tpMW7et:d ;b4[ %56̷RV"(;yݧlvƝ{6 1g{ǿl&)I;h/"yb^ki zŷ3z,{uN:szzg1fGSzaaZ5@hE%+IpI#VP^Rh tn=MKO -@..  ˰a1/q⯳.ΫMBRimR1,37Ww8Xx9Yyyى,(qh#ihP)2jm rz:L=L== =RB*]&rrP A0dԑF$_D@Ba2RWZz#.^G> ڧ˕x,_;1SRbG?Q*BzkV[vlXiZ)HpM@^ņ.*@n2,:ҍCw2oTsIb$S*h5J0AIO0,V)gH(<ܕ~uk3Ob" mƮInbV04 rrPzٷw~|VWwICF? Ȑ@{ʧ1ϬJ 2B蠳.r Wza*7D4"D+(LYJ{d[رB {وR?|!FlJ Fs,.0bp'Chc:7,H̊I TBB E)A!9= [AQE ,H34EUګ#iqAC=C"EOp` ͸LeHT"m[GC= Й4Q,C]Ⱥ P!t,!t"nxNeSS!P@G>dͰG!AQeЎVT+wZr.ܷPh֍{4ґ+L -""bD25)1AiGVM)(W+]4茩FDNCB~YE"3$NwSgȬ 'OZiuIM:p @ *$Owa@@BI|jrC{מB7"\eD4tSϬ(PJw$F#DeFmP3!tElX!+У/I!"q&JP'j| O~a-z^ À(πTk+ qYYJUsleC\o0c_kaY*t-$ʊf9`쳝M,4Qf2VVli[e7ímP_x yWm%@mt.o\>ѕӚ<rJx[Lbֽnr/|#~_ \` V`?)\a _9a!I\b)VYb P͌EfP %"aAU4z Fs%\.UJ!|ܫ`Z/he3c923*~j/⼀fg?7cB&ItN$.}c.U&;QHO,b5~ pMv<1UuWcVM=)GI9^cOxVpWÔԽpXhzV]mkI4Y tfzv#URca?bon|]=G|cvftH BOC>Qe+hJ*6W_11bjd( ]=}:9$'Xc< n"JMb<Ώv $fTOCЯHj%X2P704ohf/uljЮVP)TWBO_^Ӛ9PDjHmX/ oZ 0B5HNqNF$0F$i1!n"P2/ hۘ EzD bR&5TP Qj< L*Vnn˜b)TD) mN+w`{2AT郴]W'>qoQMɓ8΂6)|>I#v%#VNQ(ʨ؈KyB~p),.W# Q%I^ igSrC׍h"͚qdi͙ޏ脺 /zn3R#{ 0i;Av@ĦME2$-nQu 2 T<Lt N&Or q7)rg|aaRⰨJrA`-*,ҝ0rDX-.L-a}rx*0 A*.cN0'2Kb*1ܫ2G4CJ5SS5W5[5_6cS6g6k6o7sS7w7{78S886 Q5Kfl_qH<3:Ќ;3X2rihA* =l?01A@TB'4+`2<#qЮA$BGDF4Td00aAՠ\7\f46i 1?s:jmuG3FH]#IUҠDD45G8(w a)OpMu:4SV)>O+̣m!F#sd冤$yăVt'iUC Emzj Ր<)(5'#:J>O_,UI`sLBHh%D< HE0dM=j*^b@CF<0V.U=:'.BEoG~®sXUHU4  j@[u# E"0*I:"Y1=DBP*X/e+:l#(4&2$c3Uc_UL TF؆~GOﶫAYv~aa(x rcwي/ds^hUTdc)h "eofUDwVk^ Bxl C0hU0ha}fA54mkN<75lj@p7j'p2 i)PR) s4}􍋾6d\BwB7jGPM)ZV%*)(v.fQD-;Wx9o(? ԰|C 3tM7ywh˅Qz,S'~uQ4(ƒ~{!÷wE@lS%sxђ!Dmvb"') ] LkD Hq~V';p7f0E:3Mĥ"QE)|'o1Oxz|ԃ˒3`v S]gX؋Xǘ،Xט؍X瘎؎X؏Y ِYّ#Y'+ْ/3Y7;ٓ?CYGKٔOSYW[ٕ_cYgkٖosYw{ٗY٘YٙYJJL.-5xTٖƨٛ+cb9S.#DzĆ6ṭJYmgՕh7"aC>9Š#YZ: oN٬]k+PEvYY]9 9xK:#a.o'<+@ku$Q:LٚZUzƘt4^GեFԞz:N#].B-n\ج:%H e8zO\ozA3YYPZ*VNT*PyaK Vө[.c[M`ǚJy,{<0JPPX1S0͘dG-.zcAPTQ,*D Ua;e;M0>/: |Y[{w=:ܱvovpSgћۨٻIھ9@n \k1"*X6\ۮG4 %\)-\`;z9IAfskC;ֵ6wr0$Vj?eqܑu t;:@K`n<:&erjovdAŜ|y<%;5%`]W'7Z^SiŗUZ [< }ٻ;u[{ҥ".IgqxOʵ,aX}z})mηڽAy]Qq{ un qQςƷ习s۶;< |u>aw< uePѥtsoAA!ۋw~m2Vw~gkŊ&撱/N%WqzQN0aE1JOќһ/ȧ>wu܉)I6 22-Qq0 C ^%!q~Kڞ$i].'XVra*㠢О`Yj**GjiW*k̚ez*v O ); ,.S 欟`VB{-r+;}-ʆ{QْۭCϊ 4@ ^*)s`0ՙٷ؋d*^% jhipq)5l$:: E\`{𗂖qf2鷲ci*~K5tC隻ɾtABM-C; nKO]ɋnRou@HյP_F+6Hd]uj wAѭ5=w7'xtrm6uw,?ѿo_! :?Oc H?} (> O`xPq՜A RH`*tXxX2,:D 3B$4 lsBDQXIC!9L2ԥ`:!Q"P'#Zc~DaI@86Pth 1{`+0zA'td 9BDy YMr0G~g1O:U :7:O%mƥ%T:rO,EcVOXSޅj\mr&8)rttS4.L(/c (9Ɋ/)fLi}HyZT xŗIKfOPAf(F3эrTcĉ`&PM@@&|$:$=AU%eti#L3+m.WP;)N ^HP bGխr^7p0 +GE4##V3pR)KAE0!D"ecd]- BkƋ F,0ˣk5x]X_T4wOm2@3VaC+lc+Ҷˡ Y\VĆ/CDy OD5ѽm,qiwܔM2!(ny2әtvRMfϵ-zӫ& ɄL.z$P3}l\Qm^UF#-"12ĸjR@=$p_H.g)u/S ]W "Թly`;*/^lCcL *`+exPS,)S`mWieoi^2,`%vZ4n~3'毞:j="Q І>4E3ю~4#-ISҖ43MsӞ4C-QԦ>5SUծ~5c-YӺֶ5saLkvffMS-Jf`e5[P&7*TǴdp6)y<՞~`yO7sFnsv8}_08>jy 8rdnO/qkEНӂ%W8?}qqfws^j'ϻ}5Yqtro8fW1D̨7.x N\cd/}hB[GM+\]AnLxoף-P }:7*v;bVX<{#FD{OI_}Uyѷ_#GvO5 -@{݌1hG.Ѕ`M~qyŽ4|X%߫0~_(죔(w~b4e&wnȃ7r=Za[*\_inH^KY ( "p+`a`@lahbFY8 b X 2UZ[qiG( E  Q]@tJjf``xh`_HEE|- fZ]T)HIe|J`tT OɂL vL E!a)!jH#8J0yUHۉb%,Ybw "% 'b"GeĔU\72" a>Ǐ袛d[F#UX-1%~&\#uM6S ԙ$Y@^e5XX`"#~_ʜ<Ҏ8BY:ja>zcقT93R `w㠔":#f = p4vdUYfAO 9kAE 4cَlI(d*qY*NS8N\bLR; *%It K RK2%uBdBbE*WCK De-SŜm%0QGƥ\b9tW8 UU\_Z`N%`߶ R*%d/8&@H`8NMIfgH SaM=qc%dqeΦ\ѥ7`QhzxRMpP֎^VNJvRސɐiqgEOilR&G[> sHšqJ ![agisyRejIDihRg=(w(_oVm6fC1}`:Hrc 1Lc?Egk.ZL0\M •%h$Z(ZA'::ҎSJiVN9b#?(iAL„jvmzCxJ1\:)-'CA~2̈MV=zٙ~G R'N".2>'Q6um5ƥ"լW୞#ۉlN9B~ҡQNñbjnYΩGJT<֥ZwS EkIK`ka ^L]5icrŕEJjL8ZIjP&AFZV*XgdJ\$bȿ| R,6I\\ g@Ŧt*,jt8,ҎZv'1bIbaѬ4Qx-v{,yNVWA8j,gjibnfo -d‡R6̭eBJ.j#P&E642WL>)K(.Y.HKm@.1nk/ŦB!ƅu^'P^ A(xqQXj%$/#tn.&O.؈/C'V> Nbo0GV/-ُ5|ؽ` Y0X5^MiM/T0Gu ǑWC%&p\ ۳ðU  _O0ZmZg7_Hq7UeGq1Svq1S?111  2!!2"'"/2#7#?2$G$O2%W%_2&g&kE%F S(3'w&*kl(T]9IJd7r*20Y+-hвzr_o135Wй2QcG&:$˺706+@Z:͵2{;S2pj(*A=4+8?3ų>A4H31l\ÍlAAB3HrslE=ϖr ?ks64\*0/KJ[Ct?nM7\2Mw4oL;Y+t/044R+uJ0K'^tUNUtV_.l5u6uRo>W_uX5YĥuUUY5[uY5\\W5][a`u\_5z2642ZͽX:@B{4R94PfCa@U&2DoC)ejG3=Yf,]`#3b63۵^ aowN6r[.ao4pϛbCw]p[wqcqk7uO's3wrsx/ܞuvn;wyzx3{w{w}Y7yw뵐=6\-ӈdjM߳E6l#.#3TH_=h6O[9iKgvt7MϷtwz-5.ӷx|\xxt8Vy#F?yAF':KƁ ,gAsyUyc9o9yy#oB_yy۹9K9C#::663l+rE/8 B[;NL/Qxā/5sxg6N8y+Cy?zz z{:ߺFz: y@;{[߹/T.kJsz3,%xkm݊{c|{c3wm;.1u^3|u3ğϒ8K4up < ˟<|<* |||}' =#}|CK}}|s}[{o|5:³+lʽx4.[=>gūŻvlOQ`./#1_=7~ؗ}ֻ,<;3}s|<߼3+}C/>~>Ӹ{Ss_ o7|g |[#l+?1?>8 u?ߧuH_::t-ú ;ۏߓ?BwW?mwyI8$ KbTE9d:ƒZbSn`F t}+⺤?7H92E*JN4M=ơG;ORUIQ>W5VY(\]^]2`a]\+dfi+ncbm_kkh&\ZZ@~ICbʑ>1pVAJ!ŠD G!y$Yȓ)UdK0eΤYM9u_0hS'-yª3nzI8[/qP<MbI =vJv[qƜ[]`Y_&\aĉ/fq8* JLL'#הV,:̚iIhf2Te9 .uj}lJ|OqHJ((sѥO^uٵowwNUUarEO)Uֿ^Y}P= 4@TpAtA#|>DT00=7r6QBsqG{G Rj m%'0I²0H*rK.K0s#L4TsM6tM8\*N:NLO@tPB 5P;DtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUYHpKji%K)<$ׁm  v`Yx}ӃW `}}-3̂ HЁ~` &w` }+FLX^;B0yZ@7*[@f.7 ޥ8NfDcr鎞Uߕ"6`Ety>쁗wQlVzmwdZ:c=[ g^olnmų:F.@Q܃]@6ɟ],\DxVЋzX/|ٟ]ztͻm܈%6$Z^xn_. hfe7{^^?7ꯧ_-}* =@}Zg6mڑ9+εO/޾@L#}2 \0li_ Fl [& C}3 vX8(VDQVE+˅8p H`^9+˅c7Hy"Xhm!r`I,  `_N$%P$ \{D@#%LzoO1%F QDsT@Xy$.`U梓|%>T&JRbAF y)+)Jf2W+%Ep+)4EZTg땡?BYa A;2.rA>ywŜʫ`/TQx':ͩ {U^r)H3&h )π ղF/2ﶯm {<53IXkR 9Zyvd.f e*uLՊ@5iUL76E`}TdkpfMqSWei'vLbe4Zsz/LlF:J- :]f)x\PU<{֝,0-FP:ֺsY/UUcu ]p;וlv=ṙqj{"Yj^LVE[jvК/5%ѱ$W[XM%|>u|q^q֋>̠Mk3ԫ.vWBbv@y){b_2D `0;t]Y\Ze51iyUa#@C@IV/"ȼ0v%n+ʴVLP;]#)_65&G)3L3-G#LGG?3~yqK^uʃ Mt!hU%2+]z΁Eqt, MYf5By'3ӭ7ORyq4[N_cfٴu6u3]-~o1 Y$T[̮=P@Ͻ|qzm5ͽ0-0ض`3z|N鵠T\Ԛʀqf@ 7b%i# mD#Gr`Z$'O W6n7$G6FchL;x1wvF [>ƶyvp,Sxsvͯ7 09uDgBŬ`P 7/s7 spӽʋM=EG+hlTX4cl|U聐>I2l}ΐm~سgQ @An6Y񋏌~86׆Sgޫ@6v#ɟt*&u |߁@{߹ 3-llCzDQ(B@k:7cL˾*q$;ipk0;Aӿć8C|?\⮱%L<8dC 8-޹a>s i/2 4A`͙2BTY<8c As7 Z꘳ xEÿ]D; K:3Xl B;2C᣿gp w˿` CCCU$@7C\/; *YҫBZ5`{A@; pL,Jr#|-ȭ].w:A|1S.9^8p|>ÿR; s,RJME ";!*X\*Y(IHS N :MT/0<K31tɘdȕf$BhT8<D}L$Z#ǞGIL:^{]<> ΓDЎ>MU'?=ĘP< Z嗕<  *+Ƙl8Z {UD2P7iۼQ,?D1-b\>_K!7HыDKK&#&< < J$C$ hen|H,+J0% `é-I60ESoI2L ё[)W7]CL3I،FQ5]FbS>}ŻjSšRZmDRJHiU]\JPz8RwDR VMh0SYi0M)r(aӬT`')W.q V mUz| d+# ~Z,k?MX3VV-AÅXE9XE؁W(=L:/=|];mu`XaNaZaaYaaaHYa !7, @pH,Ȥrl:ШpجvzxL.zn|N犀Ao~]y{**zSz'͉C fvmH<M`B/dxHŋR"# xIɓ6ꈲ=,hI͛8դ:FܓѣHJOiK4``ũիXkBH`Êˍ ɪ]˶m-VKCpλ˷߿hVLҜ{+^̸;縲v!iVT̠C%LS^}Z˞Mv. ͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)Di'?UBH\0(BIfPyXf\v`)dihlwB (ɒ'0'ub,4V+ Ȅ&:hrz*( 1)+tRjJq#dPdbgAjq*^̊'tĥ< *wR* j˶jFkil B;c*T:0a QcAVxDB@"2r,c񩾜:4Deȇ5F!}&A9`v#-쪄ᤗ4m{r`dE*瞧T.#jT HeJJdCȑ6 1 A}jBc+ \w;u,#p5["̄BQPwnbSɓ#ٰɬwJ'EnZ ըދ`$j<)q3ۺH s+: T#+8Jϴ.6Y=֢V bU{_BU S`tlLB.峏]$MQuZ PhGHfJtp aݍ{fM'h)`uһ H^".±B|64ӽe1cNXݢr3L&ź['yoC<#")j xiA0!U!%FّQQ*I,̣P`0߹@wkp˴QqU2&>;g9Lv(@S55VQ_T2P$Ŀhn# Z ϴvO3KgUi{_^ӷf|a2IE]xh%lb3zFySmfEPwPv+CgݶJF9+ĎWlrMֶʇa"vEPgmV)[=TdV4͢m,Įy=8@62P|%{"ۿlspsOxi|ןd8='m8Xx ؀8XxrazuT`*ǁ$X"D%؂%u.X'6؃y]zHXcX6XW?X f (g<ГIyƉt=]pFuLu e>rV?RD-vo&yމ܉EٝsX螔%ۙcٞ߹=iY]P TP=ɴI%69ԠkXeU%juJTurqT5yU%OZ^'81z>DYhjL9\*(q9በKzS iVPJɤaw㥽JDi),lqZ1u:YxZnB{w Yaʨڧ9k P%~C@%c%EhsEelb]GgUa5^pFL`QbRի UzULN:꧈ ˪ڦʬ[ZvziڞzfJz//EZ j/ZBz\[[ + + *D˰r]5d*ED#Eq*((ߥE Ng oO0ĚŚ <~W B0; b+_Kgik! `˶hKj+l[nkmk[{}cz bF8Ey7g_\(GPi!EGA*-JTSqHz T/C9N%Q`D0kUZV;0`W>pɴzL l'e+&v8YQCejAQk6280pue%O4%6*@鴪=uF陳D<Xhb Zp8)H )w&T#gpċvHR‚&>'V @qDHEgc,lÄ,Lp91qO{jR$lz\&O>۴8vUg*g&jr:Lf''Q<]Quf\ ܵJlcl&T <` <)-ܙrD{0ȼ"Zõ]BKQvm(Nң*ҽ+ql\:l}շG}Iͅ{Ƈ|U7Y)b{ּ`ѓl \}vE, 8} =]ы "=$]X™lRTl,*xX B$AehotE gSI,ɼ\Y &0T] E]  WC= YVH P,ahxRPRMrmL c Չ ]A~aboQ/+|wdSmWTM4|{ @ NyM-ء-+%T֣Po=ԚAv4z8EhbD`ۻmWx(ܯtyamSF@Ѕ[ȈzHYs9 66:itM5 ۊHK8|=#[PxF)pݟGI݄Oleyc{J{5:qۯ`䊙JЉ󉻈onbOGq(ka]ב'Ș(0T`n XV] 49^VɠHN=I* APЍP$gH][ژ?nNaC4hmke3z}Xg+*X>Gs$G~oB^LQ^h8j>fCDCD7_%r>67T~V "WM<.,LU9" ۦz$mݾgJk]DŽ":ǿP.6LƎ$JUݭ(@kl. ^̯EAsLEv $}F;ey~)ktfڮHz`Ԙh]@_1lѫE=] j8,ݾKˊ\'Yp8*jw^8W?6ePQN:4*iG'IEPfT)'1_/_C6)z"z=_?JK]Z~DFUh{,ce /:KX0]۳gF|rҤ$1r<-lV񶟙^j Ĩ,*479;=?ACEGIKMOQSUWY[]_acegiWOTTNR0Ԗ0"x}+$ V25ϲ,SKLLJV}n5zMJ [׍Ӂ2Xnv`'86qs@%A=Ւ9fM7qԹgOnb4j g;D1Xi#pӗ*ݛ<.AJ?nAeVPAwJd6e /Hd6ָ;l<*$u rV'ov⹥pVukׯaǖ).Rk+.* @ l0ţ5Hzcʙ 'EFq"jRtM/}&||ox[G;2搻ܸ+п=$JS‚$ ,{Bg QI,Ql%N@X 9( l:yx%Ҩq>40R".'7\F)R.&"9-,C*< E{Y;d$mD\H1SO䫽ƶN/BcL/)<Eb3H-L2je Ӳ0"/]y_ 6\-V4$ [>! NYi(QYt a N#v69sέ iSWQ^:nT=\e~li}P55Or$h˙}V]Ch@i!x,NaQNYYn&c˓ d >-+򁐗'B8FےB#+;d.Ьj,OLFBM^{]ZiBz hL&z!l;ᥛfUKnÕ;xnC (8nԣq9AgL:#4PèɔR,,Zl^P0*EOqcU U*VU}a*@Rqf=nSlXJWխgNտN!(+_ +X>l[m'r$U@I DZ7"` 3Bp$r贏 )rȴ,'I{Ӧ*KT(>{NCM#еgX3,B㓔#A .!hVje];X6\bޙ[*]0VMzEos\uX ÁWq &-%^ݰ wx&1GOR*5]q@UL}|i|c:cEXc@Wcw!jnNJ(D Wbףi e&}XؚT8zLn=J˜$L,1| HOKF\hҋ3Oӆ4M-jtu@Va}:ֱ[j]k:ײYak`þ]lcؕu=ld;6kCٹv_/۵mqKnvL; xfތod^d*D |X,!}yІ;~+|cq"W*c) \펀 Ob{(w˵mr'N}f5nX2>int}B'clw'8խtt3}pT#%nFLRc~.*46KgvP!0 6{%\x,sSBrd)ǰe}+m1?Dp}Me"~@ZyU.裂/3(;k 4$)gޏp|H siob>WϾ򗟎g˿?WcL?Z/.Op$p 0p*xI8 ,H ,'Z/,hopVE$@/߄61ύ >O''P ʄ   o K / P - P P 078`<-J-Rel#q$.Q(1 P g=C/I""oXp:!K$D腟%[dpD#1D%΀A@\:C8wѠq17q!U3Dz1k:q1ɱͱȮq1QQQž9H34 d⌑2$_ S)jyQ&Fb^IOP!M11Z2^al&kz(t2 'Rb )) *r+v*r*2++r ++,,r+R,-,Ӳ*-.R-.r.-ߒ//EA?Hx @:#L! pĥ bb|#L0A2"#oAs l<$E!MBnR/20R.k3*6es6u7q3/}+)/w8.798276FQtDRG1q@aPd"%MLS" N'dIa=864s;Q/͈O4 4B-tNc`0c6;"FcF!CæBlsUnE htV=S1PBtHiFfRIgo4REHpZ ‹ɖ2&?©34%Zn*L!=C"R tN@oHtO9LxDjg$gyPbHNPO)R-UR5uS9P#SEuTIU\pJ5UUuU(@&Ua6^#OTh5EnUrUv-h'VuXXXCWSCY/YۇYYuZuH]Z5[u[[[5\u\ɵ\\6f`]ٵ]]5^u^^u^5_&е__6`]^ `6ava6b%vb)b56c5vc a=cObEvdId`96eUcAe]@`fALfqd[fgeٕd`heVh]#,YiW!j*U{2 U@E&~kS eWHk]jbgm6gV\_<n=ugy~cUhVpc@dc?E\1EqJP sUԶ?Fm=6i)%/]R?|47% PJoHtImAXgvwfwUrWfo7p]] b yYv`,Mr"Af 5]a\N"B[F|aAj}o4Dؗbk&wlWxwAxV X[ig5whz!Xcao`#("3NHĶNP? RQsRxwfA7g_26NhA*x(ߠh@wsր57[v] 7Xaa%<\>dzueMw|@;G3u+Է legዑȎ{؈bՉx^8Y @Tx2hL#҉>D|GQU <BU juו̖kMꟶləzٞ@9+FU' ԗAoJ yj'e,j" $Ve$$ ʔ.9%􉟊|C靳yiyؙcyY࡙iކ0F_١l\=> `?l@hko]>>`icgvz[q:SougU]9apyٵ8VWu hͺ]ZzUԸ'ْQ3rS$q]Xzݘulh]Ef~wxlۅ.fxz]C駰w'T®7{2QwP @!BH;@jq;/a&k~9`dl4GCO_`fsgk[;i_x;\nىi][[_[kZ yY 7Ӻp]ahZ|ha܁9Nu ;.DtˑĜQhk2JkP2ɻV.^-RQ\$?@^i^|N\xG$TKM4ޖţw~6R 'B埩dřK3!,>yV֭csxe˷\.KRڠk%ΓAG5_Х~A!*!Ht!(dA' ubIdӺgQ2i`lֲ2茌דZj0`)P8>B:&$DZR,*pvr tz֨v€r~rľʜQ`8#g ec2?,2+(N8h@4+ ' MP=k/.C(:hCK@TkUk@6b'ၼw#rkcw`㹍eD0^95P&mCELRL# ɒl QфX̓(\T/"Ky6ICH: @P!͉̾loltٵ˦B:wGB4 k6P?}Gz2^Ye3&kt󢋇ҦxH2Df8MFP=y [CNrƏIE'PΟ?劖 TqrR08Pŝ(\ՃmZӒUibPC,T:#X0ENeqXquPX_YPDp1!w@8UEU 5P8DB:(I܈FwYX'JFTIDRVJ)(T.s \?iÕV"dhca;5}%A_.顖\Dkltg6Ggt Jl[z斨.':1\"grʏr07t**Z(1R*'ّ m7 1kC҇A,,`r^ž ;C4l:Tu-A ϶6I*D4R"2(8 "o8jZz+oTUr 3]xi#c2:]CTUV`py)-N8qSaޛ"|NO+ .OAVn8k -`ԨA]`!(6p5-tx`koa d5ڕ\&ђfb7/ki-+n*+'ޫzy%^Cvfj'rÀ%%Id4_AHrN#nK5?9T1|q? 4P<;:0^<~zX*a.0 }NwfD}~$L(:Z2#K#GoFVQKFھgiXiڞ0tjXBf5 P%䠅Ji*R'f~F8yޜb15pqXs*`|Nr *^8?J.k8 w_t!_jʂ|Gcʉ 0G$ G㘯_ qc"+ڑ/91HE$Rlǝ$cAnRi$U=rHJFG5>h#vu @j ! IjKm4$Pl`Mp.CEPB,"=8E_(q''w50iHu'~&RV_nj0,,8Jr=93lW鴤ni{Rc2/B };KU%rIHZfR( _: #F^(c)6FHJNWSHVe'&$@= CI3%|4zjGIMHpͬ`m5^Alff٧mKԖ%[=n$c/Fo/?f6pth4|`L'jӺg پ Gg2\ b-t""9P'o1*Sm`zH^|57`>ȀH>X_`q`"^I* j ~*U`x v1XD 6M@_: 0hilt`?s=ep*@BjR|."a"ýXa`ab *!"b"*b"G ^au$Rb b^^&\e')b**.+b,+ "%-JǩB+b)ІL9l"c2*22c/3Bc4J:!.Z5]>a3r^y7#8&՞bpgc:~9c;;4<#"6$*c??d@ @A"dBRcC6dABdDJDRdEZ*dFjd4ޣCz$.^dHHdI?ndJ"vGKdLLdMMdNNdOOeP PeQQ"eR*R2eS:SBeTJTReUZUbeVjVreWzWeXXeYYeZZe[[\e]]e^^e=@=6eaa"fb*b2GJ-& ecZebffjfr&X>$>vfiifjjRgvah:ilfmmf]f¦fngp pgqwZ>ł㼚h x_f6ubgvjvng<A` Jwzg{b $NB!g?J,H'Auܧ|~ǪaGeg"hb%-΀s\d"*rhzΤl̀`sy\/Ħh^a уho th( ijg~&')ZQ&BԀy&6*ijꬒw~'*skj r}>tB*tfxY"JR뚎&ޟ`*V뷂k\򪸚빢k뺲kkkkkl v"l*2l:BlJRlZbljrlzǂlȊȒlɚɢlʪʲl˺l̊ @  lRl (jC6huiRmZ h n .ɚr-ޞvH -߲ܪX m@­ l:)z- n2R~nJ߆n,9mVnan-Ev↭Δ2K@|bojH.rhG>://D/&.@NL⊯ȯ/حno d ٦-"( /lV0lЦ.%-&!-o G #mpp  'pǓ0;p.ݚ q:mpТ@Sq"#.bЮN/鎯U/#_谱o (@gU ~toْnm-c$qx2$ \K~p!WcrRQ%&s>%'-2)S)!2(Dz'[2,r*-2.2+2-q s2'r-.3(/&1g~65U-n"OpS78~g{.r 0p_ s<  // mf6ܯ_4r%$rq~r4;sH?s)4t',/2Ǵ1Hr3JrM72O MtHCtN5)ntH+5u/7?52Gu#WGOu0UmVVtN5L5Su.L5WoYq`1KKJ:*Am15w?D=A #Ss;;b3A/>A5.bLgo v^hpM1`PuZW3k4Z5PvPrR5T6UrmZokpZWkp;ss5 0s;7"?uCucwv7wswwwkw7zK0FjwyCw{zlx|yCu30/w÷~7~+u|7w3cs}Ww7\PvG&8|_u\o;k6 0`aO"646NԸ?g^7f#wtRnsss|ugKpcwkyv9kx xWyyOx3/99v9WK9}y/.oxk0|g,?ćӋ 1u;_EkqT68 -q->pþ6+w,7Ck;f3v>:q}=d:_Jl?=1}}856_p){6a "&Rr8Ft Y!r l8{VmKw^KλwS kCTdtKs|zStLs -hu}=:uBT!x*E6ue5v]01Y6)y(ɦn=V-79(.Ȏ7WxUl9~iU'-K٭`Y(cEz2G" Q∩FH+;T2")/=}OCYԨҥM}ԩQXڔ*T[vͪ5XgV rkEw@y@pjc3 =sBUWx .7.X k6V|.,=u{# |,XU{)p^ ^̓+o>9խ_Ǟ]vݽ UP _llOXHQwu;w$;FqpY& 'в6CWʱ0zc2&8v. 0>jLS5@aCIǵ1G6,";@@ă2J)J+2K-K/Ӻ3mCr#$\M "O3;O4k;keO;aO>!LU" H-8hH!9R*=0?5TQG%TSOE5UU3'9EkxIVtBkҿh%NAN:?,f54ЪMJ[\OQ Z_0sQTtbUy祷^{7_}%F,a`0 9fז1lE"Xz殾_a7dG&dOF9ey@0fgfo9gwf 3ជ&hF:i&Y'Thj:k2f;l&lF;mfm߆;n离n;oo86گ^@^wz [ ^m{ +}SN}?{O>yρLX| W5 r'AR SrGJ/ = p(Z!CC/gx(#N?(]("`Ýh8TXD3Zc@]8( Qy(ek! $w<"<<ҏhd"j$`@I7n3w9A^@[,-%>D$l@o0EYD*SwH(34$LI6ct _)=“Ps4XGX$e̥ )I950Iwh e ǁ5( ƅΡhAC`D`ѡXDsԠA!p`QYPNqr:v j>sN^rԎ: S1S}X}jJWdZŪ`%NwiE'OʀӤ՟hS]M(B];:WtLa*VMgZPhf15PD)<(i􅤛hhbчuCIPܭ-%$UA=0\,"4w=B/BM[ bA[+L@0? `‡T9k/ë` ּ5/2~U_]` LW<,+ah{Gy! ;8{=zͻ` jŊZ J_+WLVV@fl'z! (k#z!@QpG6@4%A_"Z=jly&ܾt8XgG6Z( =oyف1 "F϶HsCcFQطY Ҿ"6-B摶¢n-t3Qk#BAP9?6ywJƠwjb,1b@>&YF;kZN`5SWc0^-VX_ڸ0cga]1lҗu Ĭ%5} _C~ܵЌr8,pو 3+w@wxFmHO8)^ŋ 7ۨtɆa[Fgai ];E" N+$+a%nGN |+9/JWO,}N;~՛xLH34X%|:{ @勉B X``9[˸ i3)ʝHSs<ڼ<ϻ@a43D\7ý,9hݳ@>y9;w˾[A+[0#\o…4@*5#* ѿ6 Ĵ*??cC%-\:J+cBJx:t 8bfdHZ $.|§ [7sFn< HN{C (rFg̏9Gg ǵŹK?x2Gƚp+!c,;iudGaAT\+CD u;cH nE728pʝۺE+MNE|<Ø8n8ӨKp"XEZ@kaH= P;r4dۮ>iFbJ0@R9mJ:?yKkH#Jd!Kf6DpJcL]< 4$s?K4LqH)Q4;(ĚľCs(0H<u0)"3S8L$<3I@vA9BCíǃiluk\5|X+΋c98 4xq*LW#M NI="lJcML.KED6$¯ц\Kz94cN#KKUKN)&CSP!!}3@\x8 )Óx8)L@2"(bӑ"j( 4RB:ʴjTuҦ!CR4QU&tC@.=l zz({"qw :JeUQYU[}9VbYHYUGQL%U1ܧ*[Û:Gͫc]Z"M;J8$] )0@."I}L PrSCL"]$)T$~Dڭ͝/R².SBԃq/UO [*waRYDG[*.5N,zDrçˍe6]t#];ҩ2K K?ExZÀ؍a#"< <8 .ZAeAZ|W܀BKNVHCc*%\;aA!hlYt.[jjw9X2pX\Au%Λ.><=>?@A&B6CFD`EfFvGHIJKLMNOP4#Q6S6L1!UFTa5TZ^\W `|e(f~A^F_Navg__cj_]hm{%}2~2ŵֽ|T*F*~&\$k*&R2?@L2&K@eXzftFM8d"I%U#V pGȺ}BڍXG& ^?IUC`AZKcY:潖ǩ,UYڿ̩hq2*Z>Я7Dtj֩wjNޤ갾J곶ZkEfjkv+jVCk6L 09$g"@1+&KffRl~ ?Ю!\WF@ V"J;C͆_| 72H/۱gCjcl5]9inzn&l16kn6l$n5ofRfvoo;oofn#l$o p޾foF*'7B>gcp)I >pwppx<FkhUG)jXh ׺C4q HJ6d\7 m-,//qr rn1/r^s6s?s.i5@sN=s> @BAGt>?E?/EwttDtG'([JtܶI/tNGFw?t B7E_uCSNOWKOVY/uQt_dMc7a9e_gL/]tuq7wrwX\DwwF?wJwA w?uGxIHu/xU?xvv'tG!{>bBeM3هxRXhVՄԞB[/^}ik e ׹"m6ٸ? Nl1j;@d[6kͫTj&5ggEz6jt"r5/Տh kݖ <8p‹5.EVNq熩W]:q͹c|Ǔݼ#w<>0n`W_0 rZ߁ N;aJI!勆#41@|W_|2WތG#x8܍?9\CAdF蝐O6餔=2yXZne^~ fbIff9f! XcXGpZ@A7&eGy IqA !>b-@ F @e[}v"azeJZ!|٦|2*K.' lKll.l> W[LkGumZGnbmWh;A-⎋cڸZanLpp /p+iAw)PaC 21A;d`.xA.bH.hx3spROMuV_uZo \z]8 |- ٖc`wm wپ6zw~ xNxx/x?yONy_yoyz袏Nz馟zꪯz뮿{N{ߎ{{|O||/|?}OO}_}o}~⏯x:@?K`w0Ɵj#fmu]@d ۚ%YCf) $_8%!O-@yXeu¬AРȖ A ꗷnij`(,+ )> Ank!vʫ )JVgU5Zei"QC0GtF,NB0YsZoNY1?bay@䀔>bcY$^)~V@:cpqC"I:tyjH!aL2jжF#h1^Jfȇ mdDjØ(^+ZPh|@.S.-%&K(e1Igf 0ּ/ |ґjÖdvqa+(rs'=Lsh`jX. {&@$M \`@  J_-*p $QuY/BTl# U,U,'jrZJ R4s aS3.F DYJ. w# S`P<ԪZf &z4|5Q+Ir1TŭqmbٚEu㺊zmM,zhQ\2pQe&wKߘK֜ մʉ*HqY4fqo]R@`js +KYBYR7֝z!紮H~6gqEZptjwwV6ƍܪ `i IvS7knztvN *F& r6 JRF+ or^&qcf&Y ri5ikl@v+`tk~K6v17袅*ǦCMn[zE"G醴H1[kafy2wGIq^z'H'VLr+*ۭrT蹰QE-0b4K95XyoC[kEL*NBK%jF bnqM<;r9dAxQ!<6k7@s-P;yJ}1wPx/-L3wk rHzŵ[\1!۸gݪ)b>{tV!h;Fh Ta`dv@37lmvZrpS&К. a8̑^,akj$3|ŒH[m{pl4;0If:Š 0}?+>Fù*G/BSģdQ\#,~U(4ʌ 3ptՒcgve >v1gG'_MoWD3R܂YVr, $֒|CG:|8,#4gP4ZQ< j!x/PkۜJ&'b;ƻrz0dw6~ %Br"4 ,#m0%&2ш:lH %3]h}371&r Fn#Tl`Y#iU_)Y[F\ӥQ%V%U9>FYwWfXv][su1[hujuUUUWdlnY嬩NevN?FJ%{^Wn[~OBuCe4#;_ Μe>V jV0կ{V~8w@Ќ~Bec0N.&q)ؽ}vvCieZ6u0FɊ7=JN|v¥ݎh'w:NcNR~n~Ev)'MQ>(- ZUE`2&Tg&P7jpol'm\hS5S{IFu&[>d6t )Vۏ~E䧮;&KGk;UZ4>MY ֬g"g"~e@U | W;.xܨ`xѤbB h?%x"M!Ih2.`Zo֗,M&p :B0fŹ#dH,Eo3Ḟ {|Y .`b|͎XgEM9ICq(Gzˈ8,Y ]G 9i&[k"=51 ]fhȀh<FSuq!.bCِ- (V4pȫ ѝ^GʞF~ ƗAQ%Y->lGFCE_b%PLÔf!NwSaVAO(m&'Ţ、s 7t'" UOrE-#Xq"0FY!Ј)UJY$-DL;JHtGB'2PZTVGURuhT"YdTLM 'R~aXZQpUJ­9k5\ZW{M_яs=`ehR [RǯyUbX>d)[Y^f9Y~hI[ZӞUjYZ׾li[[ny[p <-BUӲ%RϪ^ IU,1rR`UUztTJ=Pw^܈3~ƢPhU sV1_L}4׊!pGp&؛:E-^.vL,ql"y2rZt,-# 'h:NhI`d2Mnu^ M!# qƮr,.X fTɗf*'ty%ӵn<)L.rpئiOv0jCEG2GzUy4Huo%0u--&`ݟT:pnQHrYO_۳-]*OYOyPw9a`+9;-ZLt#cɇ·~·::^ hŔ WJ&#ncz)wD! 101=pqrjq $&aBkN1vf i WAPr~PR"'2>"w%!-)cj#)$KRF m %MR&grLV/dj)r&R(w()R)))*R***+R+++,R,ǒ,!+,Jlx qH'R,/wr% %q^?DT>/R1J/Ƚ// Q!0=A%3D3?IL+Κ* @$S3AS6g9J"64q!r6S8;˔ I @nFSU,-C8,@'f0RDr2KcF!r}|S;ͩ̂: 2Lxr83).~QN捂DKƅ T @L@ۇPBSC| b#l VXm Ec<.X0]T' %LsV652\.`zhfFk4(댲f49IsC 9@2`4DQ4K4&DxGJ_(fUT{P83=yUzJ"t@Pm:\nbPl#*.YP$ m0ETi6&PNO/$"Ow"".45 (ĎIe7QfsSL!vB(u GytSwuR+TIIK=qB}mb8YYJ l2(;yU[!qDYN;*KGOmz*â1V>|NrQuFx/{*ud2_a>OXŵs|d'Q:5\4n^0٨_3 XzGd;cIP}Sr(,Z6`SD{5gNBƣ&! rq#v&zime v/EiGrkqn bY1Gs&H ( ?Jx'B [;a[HBxk5Ǡer;MBp2v,ƋBedB @#hb@m9?bOC3rot/2_ 1ڤED/eG;t ;2aZyîk2Q3q{mNpτ @f\|{W~~~WX ؀X؁#X'+؂/3X7;؃?CXGK؄OSXW[؅_cXgk؆osXw{؇X؈X؉X؊X؋Xǘ،XטJJIX8]UԜK-KsX8&P%)43zO؎YZy"J丐Ii73Za5.F"O/YXBYO$DِC1)혟:a_imYZ~9Aꚷy ZT9vfIᙡy 29 k|ِxy+cxSW=J,^\`MLxr9 J?9َyCK]BЮ1S+4p QIZM:Y9fQzC!oYL49fhN$#$XTzX ZmU#z.ZE-کG@!@Ya Y谿U)&ݐc\?WE͔ZTIlXY}y=٣Y0ekPQ 8mM9wHa5ic[{_{ ; y8yJ>ŷ6\"T5?Aa59A0BUPgvNUS9 Yy;Vyo%aόFW-;_M 9؟{y}<^_^q>)2YX9u)<PIz 5ܹ3Kīk;<[:\\$ֽDB#Eڈdp٤D> S&IF^d8Vaw'w"pѩ &Xy[Xfz4&M^>xMYQbq@c Ze~JAZI*I*.*:d:+jNF릖D$NjM+VKKl.+:!mmV nCf,a'(%o ě]&C7|VRF(K@"ͿC"|&6R,)Cޛ¹։}Kfg5s9,j;@d.A>BKN euX{uF\E}s*]dmiuA4bh]m6 5Z"+qHZF8 8(Jr3 m#'Dx7 M1/ۯT7@~(} @ 23#Ⱦ8u= ! #TY9'1,%,sc>R6`ÎAR7Aufǰڑ ;=5W _x+(A σɘ9f ϧ̠G }X-iKkӢE8V;A)AZҡ9;WYAXjv0\n^vG(:R0M-w7 'ՑMD )eD0lZQ 96;vV=Y=2k#cʫşka֨#TQS8"1z«810s<( 2g+cX2Ω:X|ӳJ^2}rL+c9ZrUlZ+s -}Ey`>9`uKANZ@v][?gq8 ^sՑ (,X 9˺w`8N5"L%gG|nHчC̽u[o颿$a-.mV` #D=r 9Q"jE  ko߼= cJ6Zah)90nU4GӁ4ċє`PXE\qN`pdb 2Te< FPCRQ]Gy!XTAJ*] !_c1/"· 6HtLᥐH9ؠPU'*xtb$|Xt, wal%" ~P"\LaIBDŽ e `>)#N3iҚ a>NavU Lt #9l6Lc1|##f5RdcScbD4#: 7a<U:d1BM7| <z5 yuԾ![Eҋ'J)D5XQ}p$UN9Ðot-=mCMbH#1hd.)ݐƂF6ܟP:}GNmQ5NdQtVFY*ͭ$5N!WG NkGY6bF`!^d <.-%#6&T0ce=&]*]7b+ӁT~,&YJE&elZ6 U tRAiQf W ՒH iinj@ q,YLmLii D[S:'t~?fgq^Sv`4YBv>vb~6l&&U)SnL(-S/%`(%Y8u,("nWY 5@g67PZ(Iӆ(֌nRI~ÞS2f)#9_Ri )H=%|j8`TjJCƄSL%V7~hǘiqzoX(Uc>m)kt)PJ֛EB'FUjC fj)3cV])8TT>)gHi-N4)HZ$`q6ETB|ejbC^TTj8}§ͪ˽`&v란,<&KȜC+ak}?UWMUXU {Bd{~/y#0%h!g]'Z-SnNdctփ}*8P[EN*{0C ,ZcqB+AR\N6w8--,:GE^!֮,y%َ\ߴ֫:߿n] W%*gU~_ &-ke),8lpDnkMn]9Ml]n-pemrO˚-ںnxږrX᩾o+bRP^^Fd"UZd— ׆9@9ͭƁ0WzCcn9(JXW|Uoލ)jCe邤vDq"kjzDeXm料v[ٸ-0/Qywh)@)pqIH:GS%Vc0Np;P_& W [z0 #pZIi7#߶*5=qKeDEq]1g-s1D}gqqqqqqr r!!#r"+rqZ%D7D2<9T8"k&\"56(C(6ѼȮr+r z/xF)r90*4*r,s1D ôq40)6s3H33rT\$(67#@8w;ó7:l=ksi\s @,;38I 4? 4A7'<;6P6"s/G<_CVِImyt0s,?)hs?4JH4H,OQ-K!uR 54BJ5RSuS۳V_Qg5R35V?5WOXuWϲ@uUZXuġ~QoY5^5Wì\gC?SD42CZ5+6BA40k\a2d+m`t6HdдfG\0D584DN]/jM6/)6lK'vX{un^upm5qr6sqW2twZ 'Ouwo/v;7vswTUOuvu/ywSrMvG|5/mEc4Fg`O6hOJJgvtt˴Kw}g{6*܀[CK+a[}ׇGwx7Vlyz7kuxur68{ӷj3;3t(34yy+39@;9/Q9@Wy_9g_y 9@Cy<9Kywy9#@_y++3y:繙읻y?6:xv^fA[HF3*(e8qu[4dz0ت Hì+::纗z/:Ϲ:;;9'S{x: :_{/;s;; 3:+sGڴ5G;YwB:/xbrDw̶CD;O|_OU2I;Kl+]'xcCA64ˋwGzţYλW+gW+} Gy3}<4=_}C}H}m=+}}{sҋ=Gڟ=ۧ=ܛշܗ}sc76*O7)@4Ӽdt*gz+Kss';WCgcGݻ=ǽЯ=鿽?=ڃΗϟ>ү>ܷ~~#@;܃ݳ>~׋뾊?>~O}y\??G?M߸_?ϸ8n[?x?oS:;K8g:wC34"d%Y*&8 NT*^R1Հ턢NB{΍߹u=G,LKC,;#`4˜#Tl,}K\uk}sԼ}Żu UEu +}%V5]Mn=NZSCC0WXSj*''+SP6Bw/2e5v0A18T1@XխP%@X}]R"`#)fv!]t"u"`Gwbw87xv|P܊J~|`p4RR Qc6KS2e-eTL%p_q_G25KV%Ypc2hɜ j55b}EsOy~11M{~k']s}3 04bP+ѿ1,ʃ0IS?γ@Yp@:.Ӌ=&9$km#{P$37:Ad).Ai{Գ %[ <,RB=$ C?;0} 9MP {ŒUKS4\#A# [ @h9d7Cab \€A855(#;bBD0#^+G6B߫J|n7Ӹ+;,E3TdJ?\ W?(q@7{5iqC.$YL9: l҂9vooPVq<$րm)DL;\PYCXW?:؍؎-1%`*خd)&ϥ+ ݺ JX/:MXrmK&++٢%}2X45uvw풝ٞ*Y5ڰ͕fڨ#d۶u[9NYۺۻۻ-ۿ\ ܋EUeuDžȕɥʵ%5EUeUiؕm%5^%UEiayJ籝K|ѽaSL[D:9z^d.[@6Ru3%ȣE:-#$kD=EغD,]$Vį:Ӱ(:zAωYA\=#(PLZD)f((Y/+Or(OP &vbh6b2,5>taRa|bPE:HS"\-HFb"H'<.1)V'!A:^dAfdc@.lCMCcxė_=Ɛ;P =lݶD`6m{acC,M$p$pcSte. h;O&O$AP:A]I~ڣ=]>81b&g'|6%`bCK$`SuąLf+)ޛnn:f grV- 9Tn5l\{pA.Dn=ov=fi^dA|B3RODLމiP= ~)VH.3IzDgF=G9WhUayHKd(jǪTϠgFbuwߤf.[[3N[*;Khg],˪ϋK,j"|VLjɦl۹$I 81֌u7й6`7:NDmiX ږݵ6+ 1ϧ^a<ޣh S3iB5Mf0E9Gaǭn0g`޵ﮨOm-VSkn5qv=aXюp`Uz~gqowgeV}mY p]p %q&/ !,  @pH,Ȥrl:ШtJZvzxL.Ghyng:r_|\L $m]!"Yy qlsckGo#$C"FD BE C ИE"Rٍ"Dꌚ$ C"I J'OLX0[B1 xćzMW Cg)C'$fH!A4 <@5 $!v^|hFD:CR}=#FI[td)L{ɡ&S~=sH0 eQcP&&/{m*Gkh 8sdP6K|KHMK ٔZZe */"ܞpJ.Q2{I^ ԶukFQɑpS:TLRlDqZa;<8f39Umi]WoywF!^#?qULsz2{j1T~Pfu!&`/NA$J"5Jhse[L:!z<}AIME} hF2hCf=RGIHcg3)' ؓq n JQZ@N_Y%:a^) L9_'FeBp՜L}*Ot6c@ be{VZI#B${Z-ƪd["PguFO7#6D`;۞R.'l&:Ttv*fy,MW\$]G:i&:Ac?4I]fISUU];g qs0NFo&AMu|a+6+FfՕN>g4`IJ')գ%{6({5Rȼ@P$nE y9O-(ϲAk=~ 擀0\9Ao":"E_.FH^`}Sҕ,?.0N#}o-!,+  di@,kl4}r 5A#'p)HRQcP]$B)Y.^G@*i# +"^#X**#X*%*#$~q`t,vQDa+ 8X %%7-ʜ6uX% $jH "wk-" p "0'%f(% (1ښ.b4Gdcƀv )G! ,-  $h쨾i´Ұ]oy0Ǝ#)N!T:%T(K]T*jLKQTP4ХP.H2fu5}ve|i"kl~09 'bk8 \4ZwZ<EZ{K!! ,;  dh,h+ðүn%O$v $<.XK5 +Ř'9C>N.П09ry.Rtz@oU#' <$'D m8%h"_>{>:M!!d7, @pH,Ȥrl:ШtJZجvzxL.zn|N~ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳ@ JѣH*]ʴӧPJJիXHk $'P|5rBY*F: gȝtdݛ' WK Q AYg#%xr dX0BMT0Ӗ!]сf",H7>`Aٴ*iˎ1ztU^62U\{;ލUȂ \@Fiʙ7~ ׯe^iZΡqj\t'FWa *`Xv2&և!>abzKDb!0"XĆPL|LT\h!Q{E`$_rD40ePyz&rMyޔp9wVۙywB@i!6L(^"6ixW@"1W0vJMPD][DqVXfI I- .q AJVľI@ɀ 6)lv`qNDXŷ1#J(.d-bI*}[z}V]enѳGٗ@R|i0I^MKuELJ? qcoFX+% },0eM)F)J 'nL+*"B.JΖoDl206`ʞVwD0-ˎk)E Z1(B}{qeF^յA6G'k^e!-dwuGm u6rp0q;y%61?w(/1:n7'Hr#AǺ~*:\)`hJ6hCv<%LyeQHY_ǻ$ xJ^'TՕ""K?H\RDS0XKU'9Jts0* =߅6<5@G:n1p"tx @$"߸VK - ZҜꧪUlLp$H ˝ 9GLzvm/5lW K57<,0Kp1<SynBB] FWU9Oe~fY͊%"  5T_%.U3t[UO OZftLBMvHx(ltJuN 0<3y9tƦǺb+aڛ"P/ukts"'P!b h2)4>W} GFpLi ȐUK꿮AafpEK0;NIM(8@!6Qu5@33:2_ڋRpB&tu}[0;/i&AXEQQAO? 2`ӯ:^wS-:ѸYaiW$2sZm5  B\r]$UB:]?NgkY#ʅ!%?fE:S- k ưҰ)o0!Ru>J5-s*<:nw J8N1lΧpL!v3N31U -QR n;O[|(j8=/r{fk0Y;i_MY Hʈ$d"IWX+(noD exA7MϞQă2rp .-FgϊpMf (tE?Oҕ(4]\x=uDT} W_ַ{`NhOpcax/pgy>ggBh_>'ҨyN`\m | Ԧ .A2*#%BKkbRVGVSF@x=~,T_')RSR)SS1Rz>8E6B>@uK?߼+Agңq7 CAQ>FxDxQIKOɔȕSI RKWiٕhYdib0֔o &yjmz5=/|vC5f^q/HYMXGh8TQ\x9%C'bx( #Orf|՘Z.uhqIjYs)LRYy )0ǹii5Iɛ];#ci[ٕiɜѹaIInɝ9nÞM9ٕPp>i8V#X>LLݵ`xQИRФQuM C ;thWz@ IGZT 7zQV W_U\Z_^:f phjejs:q:[u*lj;pڧz*tʧ yRPxTlL5njXC*Yp_ƣQQJS(zpriMcExi3VSjʥorYڨ\z* W*Z:Jzj`6Z(x4kN0*z_/e-hJUezϒyt FY|CIB/vwZg Iتɇhq`Y/zh |Q@ĄhYʢHHqn?[)2+R^%BhVˍ%1:T~ dRh&daV^XMVFtԵ'xjۢzٚ6h>Scoc j'( (evnHV=b+RVTf[Nhl9);Az;e+Rsk_q#qAK+5!2<;E‹@kjK,΋Glzؔ&iJm({ jWƙ1{xK+KFdbx1"%CT in nAUj6 3$VMFI03.SёBITr74upwVoetp=E\?ܱpeq@LpqČ:|ŔPP@Xřbg \ F`ƕ¯PːPr }|bc2|~ǀȂ<Ȅ\Ȇ|ȈȊȌȎȐx7l"bKYc(<ro@Y7 %*' u\K4B )Vl%&˼\c |a LsW@\PZ ST%Uyh[ͻ^kܼ\ |f l͓2{V@lo%승 L02qlTh UP˿M, 5,Q1>BWy$~dž-$|G}&=R}A'R'38Y#o7{k2z|[&#z1n(3&W(x*/-V*~4M,rrL }+սu~>?-GP-pu| ;7Q79G gW78ch-Զd PkPgNKXJB{ٶ ݐ3ڃ-";h-me4F`g5]Ԃ>]LEz534\҃ C4"%6d ę&5.xG35L}mh̅) +c\^PǚE5|rt6ynėv& ->836eW>WGJsɼ 9з^M^mɫ H/Zؙ =^nGU0>V>)eU4ALGI>jyXۼˎ hJL-T0< Oԑ" C?{J<ёx" e{h?絮?-M $Eju_56T#7\P%QydtOo0NdJ/)iORoR[\$ _$9_a?73 ůНM ·{QT Ş,;]vORlfﰎ/_A־%?U_F֤o;XƔMqL+0oJB.Ԕ^֞/x$XvLm<B{[{_د?@0x"hB)F)QH4N&dx٨6Uv6`Fs` !#%')+-/+OTTN$ގ*F¾HL@WcKPf&nm^pUZ,X0zCKL}?h̸EͳkuSy'_1L1M/{pe# 50A{tD# gaReK/aƔ9fMN8b`:փ hT Q>KN -zt#(LJ &2f֣:!n\gbϢt*5#,0WJC ș(D %j԰WKV`W x$2` &E  iPTA7^ 0afכIʦm[ - +h;+ѵp;„of׾{woeSy* 1&Oܼut$ˬ ? E)+8$C졏$ {=.= :Zp! #F/"}cB( k'R)t հ?|Q ĪLKB2)s/@ABp0X*L0Ŀ:k&Ђ614 ;L֤=ߔM,*e҂SNK5Ί]:*4wSܐh FZ `]lt~2Remgծ!=y-=hir+Wm@j!1e*sZmx|+V׶ _Vn!݈)x,/9AE.Y?YnaiNegYygm1 :dNZ饙n&2jE~꫱Z뭹[챝N[n[[\ /O\o!\)@'rKI`%"I/=f?]F,ȫ%1{=Qy3q]w1e _AL֒@x `CwoEc}NOFW"Eoo)D zQ`Ѐ[.` ;<z/6S*Ay:/@9E&0ae P ApU!$,x)R4"D HpM .jC4 Am]Ќ^$|L C2U)X"kď!'DH1yQ+0Dd%<( )GJ'=FATJKt V(, TK[v .O9JҖܥ9Jb2\&(igfjBx(nȢZ#fkعO'g$ҙ _<Å>#t񜧻ͰThASI"IIN)( % pM;QcӔٞB2(iS]3 <NHbM3$*pˣ4jS5ӥRSeU UӪ|eW*MB:hEͩ0`V5ke0 1UN=[ۺrFzE^[W%`bX"6X+[ |Z29H2zS*,@eE.P$ADbaOHe*#0B+8N"P:gUC Q$gH=>ZaQ&LuU,3K>ٽukJՔ=vɻʪz zӋ"} ZvK8p'5`pk` ~pla@8%a+&Kb&0[Wx>nR e :/(dzňsj\AŞOL!9K0Rxxr9Feâ@ư_bKxp3}lcDYwnGЎ5鼣DxOjmRXRO;0ԠUSE'jM~3ڭ-녫fuȣE.acv']um6yfѮCnJަZ'h(mq%FaMN.RVZ J}38; 'i'8%~q?\18nq# "?5Kd߅!#oo^󼔼PirBy̓q| v8Vml} Afݿ1evݬ}wR#`q{*&@8d}@~62y;~􆿜YzOq'铿nc#t<OKpgW>ty;^w/ʗO%V㻵G>L mZ:1كZ/'uo7I!%&7'0ѷ6;;QCQFCKEqW[MQQU3qa11oAkyQ !jB @| $0F#.Ip Ȳ0+Фm -s1qw{r 1u2 O 2 q")!pG22P/xcپ @Z-*/d66$-82c ێ!$ Pb:]P#-6Q#+ǰ,v Ǟ4B0iuDH@ܲL/l?OƎ˶FI$̼+1nR-C=~6&VH6y .`4"TOJEOM:RFjcfS=]:ES*AsW8o%aO9`e1!a^)^|9 xC\8;sol!ó<<6E:ѳ==f>>t!s?1?t@ @ @TtAAA! \`B)B-B14C5tC9C=CA4DEtD'ZU_<*NTO+OONPePuPrܮ#j~B EڊN%ۢN˞YbU%% Rax<[pFFSnԕM-MAXW]5_3ޔh_+T:_;VOeb aԏrY۲YY-3Qvs:?)O ʵbJM%Z6#F2Y miuU+ojW wC["WLq%`/r#Wgi;zgsrH*?kYQ]3JZ#=>ЗDH 7T|pS',Rȷ|ȀAhTL"t2U` 85#X4"0x}aJ.)Ň6li{ (xZQ~Ej2SH'X}yeɰ(~DTEx/H^h8I†/ WPLh\D8f8oq؀ׁwWC=>G?h@h^eq8N8Cm VX7W8g?`yԐ/Vzvi{iSz6P9aQ8`AOGYEc UySԔG9Eu2eM7 NB җ>JVn- -prydDIdd{-bn,(,+&hkzeb91@/C-+F7=Es圍6lE^ĞyY^+^9xGMyU)TWT)T5CzBY`S:r['HBU]dzW9i+Tz/;Vs6O5IWPk EIa.B"D{ F yRvOZUL˭aJzk!V ڌkY aSPJ Bʡ`PzTzN~(Iհ=iI <{>z,,۰9%IYaHlQs] J%E;O v8*,6)BDh;-m:ܐ2H2t {S۷Up3{4-MYuq'{B z:s,3Yys~VgTaѽE:ƷEW@QZ+`'?ulރ<{^X7 ^Smը_]~1 yrS}9!I?kVM;3%qD+;aQ Dw寃ӠK՜ɈKo ٘kS <#č zo9՞!@J\BCU~Kz=5S`WznYX+aPѵ\l2IUZ^bJlrr pn~nz~rԄ|v~nprp $X2%# <)D-8LG[B8)c+dB5!EY|?QTo_jWcnX]Ȼ7ߒ$a{ d9 9`  RATb! B#T##BziS 2̸SbRg3cHt$ˠ0] @/ô33)# -Nq4ȴ&#[0ccB,E9f*`c9 3-IŒǐ)@TP|C]X,FR-m_K(SA=cmW5|m&l71MLiZQMf7)L ~x&IvUzU+OA9/}Dxe[BP-utਤ^ͧA%D >19R,h;T'!;]%8V~U-a\&.q .0kԒ}&d{@e -"l¹X|X6g%VٝzBaYVaZZ[ UᖈXG`i l r/p2 $7(147fZ$vr1Iz*XXn%߳=M^#?:#& 4.\-;D~"3gE <'4Df!DC-tv^d%S]0 H;A8B$rCaN>zCݑ^GqJ5ԹTP/,Ad3m)'ur!bt ЋBCJ(ы[DZ&$1lɨZ٭Ipʰ*& 7+*/FRCi.̜$ >%wX8 cJq4mkyHdk[BV,|!\ք Tsa.90K0~郷G_/{LXH pȌ_ŶlѷzēP9U 9=Ά=4ӊu}R3EK43!b$!+\ Yb!i%6:m"+6 ֹyB\, p>¸q`fX&7aSE4M];rGXKC+A]SK;H1Bdc"23hQX:0Q|Dp bpaEwXa|y#q-/eX_΅Dt"GjH=hjQ0bb~?M 8 # e7J GsfzI7I@3|4CmV&.h3̈́d o d`;̋eԊ'z;=Ϫ9c??d1c 9FdB*B2dC:C@r_A BBEbdFjFrd6JQdXdGdIIdJ^.((B5v.B/wHdOOeP$ޣm_ : J8 SBeTJTc{Jwd/d>F+9Uڊ.N#UeZZe/ӮӽQ΀9j9Y`[_f` &Sn'eYJH YfdJdRfe/*9fA:nefiieWת^W"k^ʍ^V$dmfnfCJodlf]chmfr*r2'8йMkdm4qhNcesrgwzw&#)tڥg@aҦH"'xg{{ xSa']gVnpf~gv-''Āq\zId/g,gRhZ腪Q] 9j(ž)4e#艢({:]vpΣ oJc#hfBbh"* &i:BiJRiZbijriz闂i阒i院i难#"iiiij j"j*2j:BjJRjZbjjr * h!=|j @ !jT _!vj%*{+ * +kڪŴj" j[(븎Cjk+>+~k[+ kHk >+f+˔lᶚbfF+bl."kBľF%l,!*,&૲ù.@z,+W+ Cm힚+,lF]Ӳ ~ƪ!̪9,@ @Clz-Ѣmڪ!ޫ3,l D쵺,@i斒b/W/f,Cnv6"+< ,//p"*@0Bok0c+w +B0 W0 o{6.>+p0+ JA G/q6,f*GURnQk+~1A垱jS+pΪL ֱ1m(/ r #20"/ p o$'r#p%/#O#0''2 S& (#**+;o*rB*0,o%r)r!rr'.ײ1,r 3FA. V_3#@.ʲ, :,:@;{/;,~oFl /+y~mr@C,AS+)2ﬦ+22D1r3O3O/[4G'GW27+FkE0I;0IF,[0+MjM4*4M;COt4PL5KP5.uѽ*OWuOGpO+PuStNtWXUOMP4TSuMgZqWquT5X5]u^]4F@[´0qD 1a09l%P-ȳ%Գmd>gdz9/l?A*>gi~/T04{O2nI,j8ޯ 3dx 9[C^yß z#@,#"58/7zW_:C:w: O: :yJC/ rbm;qެőUD1{VgQ&^n82 x>ĉWB78챬m;,jg{m{;z/ۻ:| |:;׻;KpJgD4Ho4JrGs*}Cr4ü@8y| ԫa=چy3}{/nCA[BЇ?}W>&14Fo*yQK=3>;~'0KOJ=/W)WgGKcg'Ep<{?Cah,K&:zfKkMnWb|T^ЩuVt{Z;8d;sJ+ó3 x $Z01Yt+4A, U(,;D  5LPX5D;;SSy+M 3#\CCV;VQvs.V 'G2?GJWgoCw7߶P@DN8A i+āHqPƌpZC(5O9i߂5WU,bES&UL JN= O^M_,9V 6^ Y"Y`l SP^}X`… FX഍Վqڋ*' 6(9_>K+ff{LGf[(,עʨb&+Z߳V|rg/]tխ_Ǟ]?̻5^-;!'㭝]W$)5Ӥw$5.y38Mt13&=M23@ +C1|aW!?z < ^B7:/}A?M_+b={Xsh^2o+r?|}%\ͅ^5I ↀCv-;݈C647rlH&U,HC)a6=b2 b:1BHhƘ^{D ~ =(uI+1B> ;jc̐B(y#a(5R㘌CHMt1P)ؐqXG"lh>ИI Az(hno3`l1laF`!kXIjckW.I H\3Lw]m^N<5$J$}̉0I h D+@#1t M$  bT> }hbB ̯-؃n(C!I`TL7 $TDDKT>#|R#T9F{F%W<R*pldPTvҨ'$1BQ͍Y /sn8{Ȟ Fg™(XCdkrCQKr`w]nO{Oh[?6oL@slP,J,C9OI0NfZᘛ/1fFI(Kyۤה0`ce( mu X`pO& $3yᘽ2s'4|c`he4Tj;˟6s_m]e-DfO3*[msX6H ѷ+G/g L?ؽZ^vMsM 7k;ģ }claQwLnZ䇧sPp1Fw;?:tϲwGmuKa^7qYx$ٚXm%"1Ųu% Z-6灇5!Ġ׏q֏lo4˯!M[\'\ B?$; C@ۻ!hL`VR Ӈ˿[ %F|5S+7kz++.M;6)*[37ܴ8Rk47hԸR: :ۦϢ,/glI_ FX34HIl;$JO ŁG*$>3 CDO3HF*ɆXdd4IJʊĞ|ĭƢd @{4ǣ0$9/72JC\?PI&;>a {:wL#+{8^I96TFdFmL,!{"(,M0p0 R޴A2?#&!D9M{yQ6G[H,Md208Yt%t/ KT$Aڜyyi8J eݭ|{QbI+ ] `~ϙUZh9A9  e!a`i`9! !D  N#Fs7+R3{xP{&g'+8Mfa I^0}VjU+$$:,_ʈFV3NA;RIcd1cU;=68AF8FVd2H^BVdGѰ:dM&=LNƨD$RKSdgLQUV%T`2+F (k* +(-Z_>ҪX4?dB6JRWKET)i6Zf *SWVTfvLWf+YdB|$|Gh{>}{6h,+Vnd~dH$c~>heWhBL?vaE:X>iVNi2.i<~ޣfV#RBi^i-F#V*F6i_fHHjEqGt`MjF jOY&. ً?<[=#Y5߉Rg8'$ IJ~^jci&6l}j>vh^nJlFlΞj9j&nFm (Jmz&Նmj~Vmumۖm&nڞޞm⦀HmNnn~nnnnmnm.nNmnnFmnmi; fՐ 4wk}l4 @ѳEok5@j-H`.mFm.opܖp:*'mFpڦpӶp Fn_q p?wmmg'q q9 D~kFNʋs&r*ϸ'^jMXL_{6u.ħtr#8 8tkuIT?(ׅ$'&ܴZRR c.Kp ptd6R^s_MgMMgQtZQ/uMPguU'+SuZߗ~uOQUuWu`7uaubNucuu^GaZgvSGVcuk`gGXvFBTo4;Kb-.K܊'NDZ[FHe?vXuvnY_OvhחG?utxu~bcwoxjgexUL?y\ovgS.llnz~zXzN~>^vz7lL}WluWGO DG|wStD#{3zz?l_|o|C~ggOflGlc/jOjw/l7|gz퐆|W}ɇ}X|6|N)#`JOd7h,/7C1yb`)fkse;zh#;+I"Da;ݼ{ 狤tj" ~ܕW\ .`>aNؐ,=IYum˅x!XЉu+T"6ވc:c>dBIdFdJ.dN> eRNIeV^eZne^~ fbIfffjfn grIgvމgzg~ hJhh.h> iNJi^ini~ > <@*%H a*`93/.4jYR0F@;&.բMvtxl_ze:Ehe5 pv5Gl?_`0G[k٭k@JL BB;P}y +QhsJ O,]V,!{ć0A  1?mR_[~kbELuɬD~Lt\8$Z*e@&Aƾ`=yrlR|?\amV-mC50RgP ӛ X" Tv7#t36~նtm]0 d* ִ4u@єIci zn}b3;܇4CP̵LԷ';??3L8z(̻!f(c6(m6\\2AQbRS+& ԶHu1"JG}s4% ؟րDH]T >V `I\!#<[]:{  x*FzRE3Ȉ Ec hh0ƅ:!8Nh P= P.а!h2Gig@)DDaΨ0+da28XGy"VI}xLk@f1 b um<Uz 4 Zd!Ûu\6N \( 9cTFhOcɽjF|ᶧU-s KĞ)OW3JQb\+G} > R3%5џU?P f՞!P ƙ[7@ PtORՄ>]6=&Υ`l~L\=&@x~*2uе d/rn|-rVfPWiv,3(G! Vxb>y. Y:#*G&`EfCL`XfːEk)+Ŧg@@!N*.{ D5:d{I"۪jupXq@p^Jbc6x(ݩ!M'% =xqev#+sʨ%AZVL˭~mӜy\dE]ƢeP- X9>l[ \F}I*ۘh(suV4*h\2FߕuGxcgΛ",^cM0 b΅NIwOzYL,p5UZUxem-{,c)4lu'{cuZ|٘^^`z`G"04md [<ʟ~흮s57e::;B m;BRޕ胫}i5Z*%ȿύ,9Ιs H%o%m],T'OM|y\l&~^7[p/<J'$QC='tnhJ;6^qZnz*7H{mG,^0mSKWyxx.'fk BeTxǃy54uwD6ӗG29T@e}-U7f(5Z̗r`h{zt+c +nv_}$ c}ZgJ,uR~h6QW4naV!e3VNeO[H1H9(dak6%@P ^7k y3h+..qhWfAP4zWmnq N Y g2QvpyQ'(m&N&v'(&nQ@Zxfw&sTdE8|scFKM>Wv~7QA7x5˧gzэV8Ȗ!3SXf}dtHu@c#_@o0i}dcϰU9oo|Dw7h"Gh (Y5e߅s~ zK淑Ĩ(9u@ ՖngWTB'ńw3ɔzGGQ i(H8Pt#{\'ug"GVoQUIg5S^iH|0Q@eK` 1Ef7Z@Yty8?u2v g{}VtdkN!>qhwkt_̈S A~ĘCDֈB<6^[+{lǠ~T}Aػ95N$D0ا"K F+/+}} p!.9 زkR`PFGdZ-@8uۚڗUM۾݈iβmyۗMJڛ$FDm|WNvKpƅ\zeW@Xk&d1k6iSC)YXZE⡠mAB$ܽ1*H=s%J걣7IZ޲^020~ek~yJيjS05UC1hP4deQ%& azGr[Râ5am־4:Lw@^/.1(Vi)cN6~ydjklv~;HgQ FyLb^襛V?(HҊ*kz/Iy ^-vV灊Ic象j>/ Kam݃5f*{.[Βբ^&邠=UȘ3an"-N sjxε{ `@3U/mO}潮[qDʶF$At Tvޅߡo<4F`} tnNw5>k{,{M(>Ew W3VO5kgt4^NENu*E}Ø#?&@ G%ߐ^{e y :O#%Ҽ-N`}/!w6XIVc? iEMW∈! 7z.bRXTKU+cf-4+goQv߶Z+3B oȸ??/R,r7TG6Hb t{@HEc"Ә8'ƉPbZp: !v ݎF J`/ pM ,1ajђ+ + `OAqj4@s MWQr9Yy:Zz;[{8֕(B A؍Bh$uT,b %&81,BH0]XdB2ʕt[p#-@R! T[t<#ǎ:WF,PSDs\&TXor/IT4kwSFWФqa}p1el#ݗ~[RJԫ/L3HtY5W܅h΀gbm bsWG.-Jh->>`+/1]aP1";)U*jbr&p$Nt+ h7Y?I (X) 򍙣ú=9VJZޛ Koe/8Xph<¹8Z0VYa20:U B{J?/yߟ{k[߸O/~H@>w ,O9""}!4QCA)T YB1 iXC9yCAXD#ITD'>QXE+^YE/~aXF&iLcU늨{r9όy_(*pEՋ⥶ eRHG "*>\fG~%р 8 R2aRXDYK[rw%] y9xkTfY") t vAD5r:%ɛkK.D`;܆.!wIP[9yHF^w#I J P:9|*'BBbkd)q'jY>7iM`S'ڍD2nIKH(7u`.!AKKl`hwN.s :[_hQ-wqH)0̅ LTE݋L2Vqu **7n1xL/|1iԌr!itpRd ٜG/Ȓa^#J&ӊ ݴt-n) nUM# hG?d`dUa]7'&fO1RF% [w G'N3C W*cnU$m' ZI + jg?[sZ|e/YiAc1? Pdn°41.ywK٣animۈ Sda3.3Cjd?aZ6xWY/2zyf'7EMv!>تwAr1yR-IR\i!GTYMdZj:LRg.]Z+WLIm`>s}7Su@c.uHVUkmvz5W,F`q#Eˍ w_^ؘEs"a~aP]tPs{RU4Z 6j&9!76n򙟿IPΐпl 'j{!NJ";2?^7סa10~b~ߌA.ПL_Ї }P!R.we30ԬNJkw,AFFPSP V_cPgkosPw{P P A.0 0)Nq pmbP,`* ePPpw , xJ, uM+#QC2 J3Qo#jstBP$I?JC&:Mi&ljB u*F%v dI))>LC$@tXBPg9 8kD8%.,`UƀSXqW&$TV*PGfX*Zb<% i&nɮhC4>ǐ-bVV/Oug`T0g~ʯ&U^g̐ouY[\U\Ǖ\\]U]ו]]^U^^^_U___`V`` `aVaaab#Vb'b+b/c3Vc7c;c?dCVdGdKdOeSVeWe[e_fcVfgfkfogsVgwg{ghVhhhiViiijVjjjkVkJJ`QlŖ{.ߨ (UPmn#ll6 6lòJ~5Q)S]4n>v Fniq5*(87*_3&p7n6rM k-frWwor64;;4*AwksMwMtQ duk?ql?l{Kvm p2twk V vgl}BW}15nQf/ ؉Xƞމ#ɂe~i sx 3=]d-k74wc7J$W9pw(WQ]2iǢ<%~_TkXT[JIVWwWW~w})7 P5!ٔ#SK @0E"L! en2ӍEdX <M> wS؉8lw/j̗8Pesx7x;U2rF94ʎ=@ 9r9XsWs!w9bY.SE#@'9>w.KjE6ؐ+xwo7vVJ@H˰ƢD3NvZ=3D01#ćQ>fyE|Y|+m7kw~Hw3~ΫW"x3M_AX{kKHe9I@VyvHnY* a *硦 U% oy(@QW ʜ^^"^]^^\܂d)]eF%&#e\f,$^bh0hi_"l"22.a)^opR[;{|:<=~~?R*,ȫ ]La%^ r{HQ"ŊN@G1ftdȓ Kdx0#J&aLI̖ c2qEr5XV.;LI2&Z+ ZjO׎JҶaǮ,닮١,W\ϴE[IPNjܪS%Ξ:L%柛 ּ|SРOjYj=&!Бa䀚flӮo;gkGM;86BzqK*o\o-ЁP $i1 x"~r4@.ZR  a1CE QSL6`KAr"*q݋4jtpݏ-x<#0CXt=(QJ9eQy%-PS.Z)Y%&gBPbjyc9f` f]٥tf5nIhioj'LxJ)+p{ ڇGCXZP3n_6vYJ(U!(j**x{@(kP!Ib|!{N ߣz:i~vX..fKW~(˯q" ri/"0 ;0K<1[|1s 4RATj }^Ț0FRC.>q\#zl :;-5#iɽ\ 7:1Yk5]{5a=6e}6bkp_Wz-Պ;̴D C9@7.س)b ! R6qKrZ$6饛~:ꩫ:뭻FM7RnWD ]"HU,|P_ njGeH=`ÝU(&mҚ 6CFݰ>??{eAGHN<,TY@$'SC^W1}wH,Ukh ' ZɬgJ\0}!eC#0=[Y>a$ %2N|"K;Y]B7J$ea6;*!B ռ/v@mLȆCLHBԇ4DQ<$"E2,#+ @$=uR 82n dG1LLʔ]&y>MI#e8-j1s)&8=ּ&6mbM 6 NEI)pT;}ϳ3t0(6ʬp'@*ЁP!A iЌ#U }(D#*щR4u@Z<(HC*ґ4hIr*.})Lc:?82%D ̛>)P*ԡF=*Rԥ2N}*T*թRV*Vխr^*X*ֱf=+ZӪֵn}+\*׹5;pJ/EW Չ غ2[ "+Y։2؅FoldA,%ݱ(q}-l5ي}Xd$ڊ,r慸uml [D diY:L5nz[E޶.rwLaWu,^ Y2EuZއiڭm+3wYVi{75M58/r_2frN`~RVϖ"s2xګ) MN)`XMBQF1>J?\RkS0<+1 ˱`VcNlīPB,a *&WE`H dȫwqA4>d;g r9"p=}#E;z]Ù#NSCH:ݻ_H=fK!b, M=3!; kSiыA^H`Dؙ&N9l2XM3/'rGs{AY;d CzC PiqsKGR (-Hp Tk oyN#w,w8Y&*vs >7Ɓ|ߑSŁ!p %‰1q'j%koB\긯A^ %wp dCH.OFz!#SddDDrJC IИT2$)[DK"R4g}SL6V>vePP$zh~]Q`x )CRe` ZcY]X N#e$BL_#^a%Fvc_^e]Za`#H&֩x-mj*UWS^@ %RJ(P FjJ2bHBAa p|9\*A`VaRJ_Ħlrv&U22 g7Jub_Ѡz߃_<>`& A 5P P%a&!q*!|=&DŤdb)@FΚJP1P6ֈ<:sWs(%:b6(>;hR(!TٖXi)ܯ̠7c]:eX>a¤ ǪlL[ɺ2ˢd~l‘9p7,m,L,]T5!Z1-#9-FԆ reU&RN-vl!mXm]מ-: يZ`-֭---..&..6>.FN.V^el6pUĀj.斮Ϝ59Sl5.Ʈ 0VL"ddV* >/ 2f5/x)E zJ6sUF//,|#aoL55Ro>w>臾>哾>~꯾0}f4/)(jˎf=k8 C^C3O۷!7??GK?W[cj򵠿m(~2/yoE+ glpÃ؟},X @RY2BsX<*RVPABgtZfox\>w|^@ABCDE:&28G0IǒK'̧JM$8IP*R293OY$U$abcdefghi^ԣGWL#moqT(UGtj)^%8`[4Pc7A .dC%?m3 PC2ɉ)UdK1e28M9uO k%ZQI.etO+QNZUY@WaŎ%[Yiծe[qΥ[]y_&\aĉ/fcȑ%O\e̙5os$D@(Ԩ#0>-O,P` kѐ5Jf1|&^<ɓ !Wx x. v툲nz3 W}>эϧ H_bチ礡`=3.(C0`#` Û;ĜpnA( -ը D lIDCHD,p1eLFBb@@R!#R`H<ܥ2=x3`ҒH2AP1L.N%dN9ea4DS5C 6E[.>EГBK.<38#.h3Ot<4 R.1d3\d:*WHW"ؔ`UdsD`-[W}u5"k<\\e'ݾw[0Vs ؍\W|`-3|^Y vր %1e9>)xK> H }99DTI e(`ٍAWSG &i^^N$Wޅ=4GRf=$uoe݃E20> OߵiuYȖ;^{~ŵnA^ꮲԵ{ ;.DʏC6QqOd֯ke=jF?g$u2E'r>z0?=AMNiDxԃs_.kC@gϔkVP[Óh_B h6!DThvōgnȓvG8XhA tİЙGmcvKaOV:0$mxKzVZJLgIn=%>L5+!Wq:f(&u&1᏾%C%LVQcR}[pJ% \sYm($$e_ .N: P9cr:l@`vXqwZ(iUԌdZOa ڵ&1@,ExO(hA(23yAS$ǘ!wBhP80Tyz|BѲ63-)BkS%@*`zJ5ЌkV6LQq,]Lk(IX1G?$.&N4T\|L6Oȁ04i!O!C< %hB< fhl$9>l(Zrħ4εx]BDy+֒'Rvg䨞Fc H \DjWkӬb4@lf#/@\iO+""j⬞T뷆gkЎeH!DTF ꂼۋJiZwTsT'W7rϩD h cAur &]N75U!jpf(_,^0G~8@a[W5IM(Gzl=DG͒%]! ;ݳ w?trΕL^B@c"O6)B4PZX(?Zd>lz(Mu;0U/ŠZxRZfvYYLS58q?#g<]\i ]6 >'kBC랰aҭa.1'\{5āwy 0`ǁƵP5d]~pl ] Ǿ'P&'[mXl9(̲yݹ+!Ƨ)]GYǢ]s<_ #juӌi$`:KE岞r4*ڍ+,B-<.Op*>=h:S+R;ϕ2engΠuznLgVXDЉ~<I>V *3 rhM_&H;v'CeUmiGFJrFrãLϫ˵5|x-TVzIN?]I. {+p0=]սH4>%.*/h ;= 0r D36J=Z,#h9K/23⣳A{=5<P79.v@aUy"z0" p*[(\-B.YT\)%&d RP4%'{3LÑ3{Rx,옸$++I 28[TkDy1BP!)K@VC1۲'@T[,33܋3M ׋7仰ZTŕ3xj)?#S)I%Y $5[1ښht RYF۵(+D=@68%itQkG+G.s,~Pd@Q4LĢIE;K! KY>q,A0$H1AE陡u[!5/R#<< kZ%NiDKC$#1/3C̖4BS{T9Hd&f̴$CHdB[Hd#&JY?tȒKJ7(\& 4\L^DfL0 ,4̔L)u$6LML0Mt$L;ME`>AH7&ܳJiJqdΰXfk_9dMA8p4D݄NDN ϻ7MK0{Xt0CN5͆O ж/z#Je=h8Я44O ȺgеPP011-;1 t]Q]Qi(ѮM˜QQ@8/QQQR"-R#=R$MR%]R&mR'}R(R)R*R+R,R-R.R/R0 S1S2-S3=S4@K4mS7}]~S:S;=;S>:S? TAԉSB=TDe21@A5iMEB28 ?K}$ U723TIK<Ԭ3TL5,JT\UE8AXE"yը{LF97C_} ;903[( ,C09,d @tKV]VpYPF9h))v; BV"QM7h‚*7/yUIn5iT W]X9 #@([s>܁#w }>$#䣣Dr7FJYC# ;FYU}G 74X=Ѥ,7c:Y(XWWg%>29ڕͬ =K՚Z]`@-TD3]Our,ƺ(`Z}s(˺!RW\M8:4rYٛ:a]VM[䉰(=3cd-ɩܫM4ju-]m50j=:cMeǭ3m+-@c{atZ،u=5] YH]2 7ң|]s\7mxKXyKUV7[Нӿm_p5DVW]=7 @58[}<__^mpMLr]jJZ=dȭ9hBVS [>ٮSh?a^ $_m$g,AZF,eEHN%)bd̳A |UtV_3Y\bbEB0^d6>`lc72Wbb<6[v FvaHHkYI F2[+UDcL<aTNR.WrQTLneWEEκNGY~e^e:HO^$kCc_^ffEm-eXBbouhnflnfEfY6m^ gUkfs>gtNgu^gvngw~gxgygzg{g|g}g~gg]GVThgq{Hhnn5浈hffhf1W<<>if)0 ~+UL :X0L}P-UI)E)V]SLJUQAMXyLXBuvkUAqcCkYA9޺} m5Ի_85b"YqRo"Gkq s)]-X7ʾG"XIl,;C=,.#8J!2$!kl U9ae+OlV%iI$Y޻B.nGv3Yiqz3Boͼ n͂%n9V^83hEf_!dݨ8騩)uZ8ȹY+&b&f&h+[=`e^Y"[V,J6b'DAiAw{A&.`(x%t18s"KBL|kGdÆz5t 0)6@Tn9^iw7zǵ y2j1ZyGO{jE>H4f/:7^a~C&_ؕaXܽnlϛpo򎭺I_J V>ddvQ-#gcyζ`!}rOD|o {rr(N(J\&gT}`h>7j6~fT~>f]~fwiяp~Ѽ~?O_o}gGg4TGT7oT7.Y ;syrupy-project-syrupy-7096efd/assets/usage_demo.svg000066400000000000000000031422711513542711300226770ustar00rootroot00000000000000syrupy_examplesyrupy_examplepsyrupy_examplepysyrupy_examplepytsyrupy_examplepythsyrupy_examplepythosyrupy_examplepythonsyrupy_examplepython-syrupy_examplepython-msyrupy_examplepython-mpsyrupy_examplepython-mpipsyrupy_examplepython-mpipinstallsyrupy_examplepython-mpipinstall-Usyrupy_examplepython-mpipinstall-Upytestsyrupy_examplepython-mpipinstall-UpytestsyrupyRequirementalreadyup-to-date:pytestin/Users/Emmanuel/.pyenv/versions/3.9.0/lib/python3.9/site-packages(6.1.2)Requirementalreadyup-to-date:syrupyin/Users/Emmanuel/.pyenv/versions/3.9.0/lib/python3.9/site-packages(0.8.4)Requirementalreadysatisfied,skippingupgrade:pluggy<1.0,>=0.12in/Users/Emmanuel/.local/lib/python3.9/site-packages(frompytest)(0.13.1)Requirementalreadysatisfied,skippingupgrade:iniconfigin/Users/Emmanuel/.local/lib/python3.9/site-packages(frompytest)(1.1.1)Requirementalreadysatisfied,skippingupgrade:tomlin/Users/Emmanuel/.local/lib/python3.9/site-packages(frompytest)(0.10.1)Requirementalreadysatisfied,skippingupgrade:py>=1.8.2in/Users/Emmanuel/.local/lib/python3.9/site-packages(frompytest)(1.9.0)Requirementalreadysatisfied,skippingupgrade:packagingin/Users/Emmanuel/.local/lib/python3.9/site-packages(frompytest)(20.4)Requirementalreadysatisfied,skippingupgrade:attrs>=17.4.0in/Users/Emmanuel/.local/lib/python3.9/site-packages(frompytest)(20.2.0)Requirementalreadysatisfied,skippingupgrade:colored<2.0.0,>=1.3.92in/Users/Emmanuel/.pyenv/versions/3.9.0/lib/python3.9/site-packages(fromsyrupy)(1.4.2)Requirementalreadysatisfied,skippingupgrade:sixin/Users/Emmanuel/.local/lib/python3.9/site-packages(frompackaging->pytest)(1.15.0)Requirementalreadysatisfied,skippingupgrade:pyparsing>=2.0.2in/Users/Emmanuel/.local/lib/python3.9/site-packages(frompackaging->pytest)(2.4.7)WARNING:Youareusingpipversion20.2.3;however,version20.2.4isavailable.Youshouldconsiderupgradingviathe'/Users/Emmanuel/.pyenv/versions/3.9.0/bin/python-mpipinstall--upgradepip'command.syrupy_examplevsyrupy_examplevisyrupy_examplevimsyrupy_examplevimtsyrupy_examplevimtesyrupy_examplevimtessyrupy_examplevimtestsyrupy_examplevimtest_syrupy_examplevimtest_fsyrupy_examplevimtest_fisyrupy_examplevimtest_filsyrupy_examplevimtest_filesyrupy_examplevimtest_file.syrupy_examplevimtest_file.psyrupy_examplevimtest_file.py"test_file.py"[NewFile]~--INSERT--ddedefdeftdeftedeftesdeftestdeftest_deftest_case(snapshot):aasassasseasserassertassert'assert'syrupyassert'syrupyisassert'syrupyisamazing!'assert'syrupyisamazing!'==assert'syrupyisamazing!'==snapshotdeftest_other(snapshot):assert'thisassert'thisisassert'thisisamazing'assert'thisisamazing'==assert'thisisamazing'==snapshotassertdict(key='value',assertdict(key='value',hmm=[1,2])==assertdict(key='value',hmm=[1,2])==snapshot::w:wq"test_file.py"syrupy_examplepython-mpysyrupy_examplepython-mpytsyrupy_examplepython-mpytesyrupy_examplepython-mpytessyrupy_examplepython-mpytestsyrupy_examplepython-mpytest-syrupy_examplepython-mpytest-vsyrupy_examplepython-mpytest-vv=============================testsessionstarts==============================platformdarwin--Python3.9.0,pytest-6.1.2,py-1.9.0,pluggy-0.13.1--/Users/Emmanuel/.pyenv/versions/3.9.0/bin/pythoncachedir:.pytest_cacherootdir:/Users/Emmanuel/syrupy_exampleplugins:syrupy-0.8.4collecting...collected2itemstest_file.py::test_casetest_file.py::test_caseFAILED[50%]test_file.py::test_othertest_file.py::test_otherFAILED[100%]===================================FAILURES===================================__________________________________test_case___________________________________snapshot=SnapshotAssertion(name='snapshot',num_executions=1)deftest_case(snapshot):>assert'syrupyisamazing!'==snapshotEAssertionError:assert[+ received]==[- snapshot]ESnapshot'test_case'doesnotexist!E+ 'syrupy is amazing!'test_file.py:2:AssertionError__________________________________test_other__________________________________deftest_other(snapshot):>assert'thisisamazing'==snapshotESnapshot'test_other'doesnotexist!E+ 'this is amazing'test_file.py:5:AssertionError---------------------------snapshotreportsummary----------------------------2snapshotsfailed.===========================shorttestsummaryinfo============================FAILEDtest_file.py::test_case-AssertionError:assert[+ received]==[- snapshot]FAILEDtest_file.py::test_other-AssertionError:assert[+ received]==[- snapshot]==============================2failedin0.06s===============================syrupy_examplesyrupy_examplepsyrupy_examplepysyrupy_examplepytsyrupy_examplepythsyrupy_examplepythosyrupy_examplepythonsyrupy_examplepython-syrupy_examplepython-msyrupy_examplepython-mpsyrupy_examplepython-mpysyrupy_examplepython-mpytsyrupy_examplepython-mpytesyrupy_examplepython-mpytessyrupy_examplepython-mpytestsyrupy_examplepython-mpytest-syrupy_examplepython-mpytest--syrupy_examplepython-mpytest--ssyrupy_examplepython-mpytest--snsyrupy_examplepython-mpytest--snasyrupy_examplepython-mpytest--snapsyrupy_examplepython-mpytest--snapssyrupy_examplepython-mpytest--snapshsyrupy_examplepython-mpytest--snapshosyrupy_examplepython-mpytest--snapshotsyrupy_examplepython-mpytest--snapshot-syrupy_examplepython-mpytest--snapshot-usyrupy_examplepython-mpytest--snapshot-upsyrupy_examplepython-mpytest--snapshot-updsyrupy_examplepython-mpytest--snapshot-updasyrupy_examplepython-mpytest--snapshot-updatsyrupy_examplepython-mpytest--snapshot-updateplatformdarwin--Python3.9.0,pytest-6.1.2,py-1.9.0,pluggy-0.13.1test_file.pytest_file.py.test_file.py..test_file.py..[100%]3snapshotsgenerated.==============================2passedin0.03s===============================syrupy_examplelsyrupy_examplelssyrupy_examplels-syrupy_examplels-ltotal64drwxr-xr-x3Emmanuelstaff96Oct3101:05__pycache__drwxr-xr-x3Emmanuelstaff96Oct3101:05__snapshots__-rw-r--r--1Emmanuelstaff28577Oct3101:05demo.cast-rw-r--r--1Emmanuelstaff190Oct3101:05test_file.pydrwxr-xr-x6Emmanuelstaff192Oct3101:05venvsyrupy_examplels-l__snapshots__total8-rw-r--r--1Emmanuelstaff209Oct3101:05test_file.ambrsyrupy_examplelesyrupy_examplelessyrupy_examplelesssyrupy_exampleless_syrupy_exampleless__syrupy_exampleless__ssyrupy_exampleless__snsyrupy_exampleless__snasyrupy_exampleless__snapsyrupy_exampleless__snapssyrupy_exampleless__snapshsyrupy_exampleless__snapshosyrupy_exampleless__snapshotsyrupy_exampleless__snapshotssyrupy_exampleless__snapshots_syrupy_exampleless__snapshots__syrupy_exampleless__snapshots__/syrupy_exampleless__snapshots__/tsyrupy_exampleless__snapshots__/tesyrupy_exampleless__snapshots__/tessyrupy_exampleless__snapshots__/testsyrupy_exampleless__snapshots__/test_syrupy_exampleless__snapshots__/test_fsyrupy_exampleless__snapshots__/test_fisyrupy_exampleless__snapshots__/test_filsyrupy_exampleless__snapshots__/test_filesyrupy_exampleless__snapshots__/test_file.syrupy_exampleless__snapshots__/test_file.asyrupy_exampleless__snapshots__/test_file.amsyrupy_exampleless__snapshots__/test_file.ambsyrupy_exampleless__snapshots__/test_file.ambr#name:test_case'syrupyisamazing!'---#name:test_other'thisisamazing'#name:test_other.1<class'dict'>{'hmm':<class'list'>[1,2,],'key':'value',}__snapshots__/test_file.ambr (END):"test_file.py"7L,190Cassert'thisisamazing!'==snapshottest_file.py::test_casePASSED[50%]>assert'thisisamazing!'==snapshotE- 'this is amazing'E+ 'this is amazing!'1snapshotfailed.1snapshotpassed.1snapshotunused.Re-runpytestwith--snapshot-updatetodeleteunusedsnapshots.=========================1failed,1passedin0.06s==========================2snapshotspassed.1snapshotupdated.==============================2passedin0.02s==============================="test_file.py"7L,191Cassertdict(key='value',hmm=[2])==snapshotsnapshot=SnapshotAssertion(name='snapshot',num_executions=2)assert'thisisamazing!'==snapshot>assertdict(key='value',hmm=[2])==snapshotE<class'dict'>{E'hmm':<class'list'>[E- 1,E2,E...E}test_file.py:6:AssertionError1snapshotfailed.2snapshotspassed.'thisisamazing!'syrupy_exampleexitsyrupy_examplepython-mpisyrupy_examplepython-mpipisyrupy_examplepython-mpipinsyrupy_examplepython-mpipinssyrupy_examplepython-mpipinstsyrupy_examplepython-mpipinstasyrupy_examplepython-mpipinstalsyrupy_examplepython-mpipinstall-syrupy_examplepython-mpipinstall-Upsyrupy_examplepython-mpipinstall-Upysyrupy_examplepython-mpipinstall-Upytsyrupy_examplepython-mpipinstall-Upytesyrupy_examplepython-mpipinstall-Upytessyrupy_examplepython-mpipinstall-Upytestssyrupy_examplepython-mpipinstall-Upytestsysyrupy_examplepython-mpipinstall-Upytestsyrsyrupy_examplepython-mpipinstall-Upytestsyrusyrupy_examplepython-mpipinstall-Upytestsyrupdeftest_cdeftest_cadeftest_casdeftest_casedeftest_case(deftest_case(sdeftest_case(sndeftest_case(snadeftest_case(snapdeftest_case(snapsdeftest_case(snapshdeftest_case(snapshodeftest_case(snapshotdeftest_case(snapshot)assert'sassert'syassert'syrassert'syruassert'syrupassert'syrupyiassert'syrupyisaassert'syrupyisamassert'syrupyisamaassert'syrupyisamazassert'syrupyisamaziassert'syrupyisamazinassert'syrupyisamazingassert'syrupyisamazing!assert'syrupyisamazing!'=assert'syrupyisamazing!'==sassert'syrupyisamazing!'==snassert'syrupyisamazing!'==snaassert'syrupyisamazing!'==snapassert'syrupyisamazing!'==snapsassert'syrupyisamazing!'==snapshassert'syrupyisamazing!'==snapshodeftest_odeftest_otdeftest_othdeftest_othedeftest_otherdeftest_other(deftest_other(sdeftest_other(sndeftest_other(snadeftest_other(snapdeftest_other(snapsdeftest_other(snapshdeftest_other(snapshodeftest_other(snapshotdeftest_other(snapshot)assert'tassert'thassert'thiassert'thisiassert'thisisaassert'thisisamassert'thisisamaassert'thisisamazassert'thisisamaziassert'thisisamazinassert'thisisamazingassert'thisisamazing'=assert'thisisamazing'==sassert'thisisamazing'==snassert'thisisamazing'==snaassert'thisisamazing'==snapassert'thisisamazing'==snapsassert'thisisamazing'==snapshassert'thisisamazing'==snapshoassertdassertdiassertdicassertdictassertdict(assertdict(kassertdict(keassertdict(keyassertdict(key=assertdict(key='assertdict(key='vassertdict(key='vaassertdict(key='valassertdict(key='valuassertdict(key='valueassertdict(key='value'assertdict(key='value',hassertdict(key='value',hmassertdict(key='value',hmmassertdict(key='value',hmm=assertdict(key='value',hmm=[assertdict(key='value',hmm=[1assertdict(key='value',hmm=[1,assertdict(key='value',hmm=[1,2assertdict(key='value',hmm=[1,2]assertdict(key='value',hmm=[1,2])assertdict(key='value',hmm=[1,2])assertdict(key='value',hmm=[1,2])=assertdict(key='value',hmm=[1,2])==sassertdict(key='value',hmm=[1,2])==snassertdict(key='value',hmm=[1,2])==snaassertdict(key='value',hmm=[1,2])==snapassertdict(key='value',hmm=[1,2])==snapsassertdict(key='value',hmm=[1,2])==snapshassertdict(key='value',hmm=[1,2])==snapsho"test_file.py"[New]7L,190Cwrittensyrupy_examplels-l_syrupy_examplels-l__syrupy_examplels-l__ssyrupy_examplels-l__snsyrupy_examplels-l__snasyrupy_examplels-l__snapsyrupy_examplels-l__snapssyrupy_examplels-l__snapshsyrupy_examplels-l__snapshosyrupy_examplels-l__snapshotsyrupy_examplels-l__snapshotssyrupy_examplels-l__snapshots_"test_file.py"7L,191Cwrittenassertdict(key='value',hmm=[1,2])==snapshotassertdict(key='value',hmm=[1,2])==snapshotassertdict(key='value',hmm=[12])==snapshot"test_file.py"7L,189Cwrittensyrupy_exampleesyrupy_exampleexsyrupy_exampleexisyrupy-project-syrupy-7096efd/benchmarks/000077500000000000000000000000001513542711300206475ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/benchmarks/__init__.py000066400000000000000000000000001513542711300227460ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/benchmarks/test_1000x.py000066400000000000000000000017741513542711300230410ustar00rootroot00000000000000# type: ignore import shutil from pathlib import Path def test_1000x_reads(testdir, benchmark): test_contents = """ import pytest @pytest.mark.parametrize("x", range(1000)) def test_performance(x, snapshot): assert x == snapshot """ testdir.makepyfile(test=test_contents) # This test benchmarks reads not writes, so we'll pre-write the snapshots. testdir.runpytest("test.py", "--snapshot-update") # Run benchmark benchmark(lambda: testdir.runpytest("test.py")) def test_1000x_writes(testdir, benchmark): test_contents = """ import pytest @pytest.mark.parametrize("x", range(1000)) def test_performance(x, snapshot): assert x == snapshot """ def fn(): test_path = testdir.makepyfile(test=test_contents) testdir.runpytest("test.py", "--snapshot-update") shutil.rmtree(Path(test_path).parent / "__snapshots__", ignore_errors=True) # Run benchmark benchmark(fn) syrupy-project-syrupy-7096efd/benchmarks/test_standard.py000066400000000000000000000112561513542711300240650ustar00rootroot00000000000000# type: ignore def test_standard(testdir, benchmark): test_contents = """ import base64 from collections import namedtuple import pytest from syrupy.extensions.image import ( PNGImageSnapshotExtension, SVGImageSnapshotExtension, ) example_cycle_list = [1, 2, 3] example_cycle_list.append(example_cycle_list) example_cycle_dict = {"a": 1, "b": 2, "c": 3} example_cycle_dict.update(d=example_cycle_dict) example_png = base64.b64decode( b"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAG1BMVEXMzMy" b"Wlpaqqqq3t7exsbGcnJy+vr6jo6PFxcUFpPI/AAAACXBIWXMAAA7EAAAOxA" b"GVKw4bAAAAQUlEQVQ4jWNgGAWjgP6ASdncAEaiAhaGiACmFhCJLsMaIiDAE" b"QEi0WXYEiMCOCJAJIY9KuYGTC0gknpuHwXDGwAA5fsIZw0iYWYAAAAASUVO" b"RK5CYII=" ) example_svg = ( '' '' '' '' '' '' '' '50 x 50' ) ExampleTuple = namedtuple("ExampleTuple", ["a", "b", "c", "d"]) class ExampleClass: a = 1 b = "2" c = example_cycle_list d = example_cycle_dict _protected_variable = None __private_variable = None def __init__(self, x=None): self.x = x self._y = 1 self.__z = 2 def public_method(self, a, b=1, *, c, d=None): pass def _protected_method(self): pass def __private_method(self): pass test_cases = [ False, True, 3.5, 7, 2 / 6, 22 / 7, "", r"Raw string", r"Escaped \\n", r"Backslash \\u U", "🥞🐍🍯", "singleline:", "- singleline", "line 1\\nline 2\\nline 3", "line 2\\nline 2\\n line 3", "line 1\\r\\nline 2\\r\\nline 3", "string with 'quotes'", b"Byte string", ("this", "is", ("a", "tuple")), ExampleTuple(a="this", b="is", c="a", d={"named", "tuple"}), {"this", "is", "a", "set"}, {"contains", "frozen", frozenset({"1", "2"})}, {"contains", "tuple", (1, 2)}, {"contains", "namedtuple", ExampleTuple(a=1, b=2, c=3, d=4)}, {"b": True, "c": "Some text.", "d": ["1", 2], "a": {"e": False}}, {"b": True, "c": "Some ttext.", "d": ["1", 2], "a": {"e": False}}, { 1: True, "a": "Some ttext.", frozenset({"1", "2"}): ["1", 2], ExampleTuple(a=1, b=2, c=3, d=4): {"e": False}, }, [1, 2, "string", {"key": "value"}], example_cycle_list, example_cycle_dict, ExampleClass(ExampleClass()), ] class TestClass: def test_method(self, snapshot): assert example_svg == snapshot( extension_class=SVGImageSnapshotExtension ) assert example_svg == snapshot assert example_png == snapshot( extension_class=PNGImageSnapshotExtension ) @pytest.mark.parametrize( "actual", test_cases, ids=lambda x: "", ) def test_parametrized_method(self, snapshot, actual): assert actual == snapshot snapshot.assert_match(actual) assert snapshot == actual @pytest.mark.parametrize( "actual", test_cases, ids=lambda x: "", ) class TestNestedParametrizedClass: def test_nested_method(self, snapshot, actual): assert snapshot == actual @pytest.mark.parametrize("x", range(1000)) def test_performance(x, snapshot): assert x == snapshot """ testdir.makepyfile(test=test_contents) # Run benchmark benchmark(lambda: testdir.runpytest("test.py", "--snapshot-update")) syrupy-project-syrupy-7096efd/codecov.yml000066400000000000000000000002551513542711300207010ustar00rootroot00000000000000codecov: require_ci_to_pass: true notify: wait_for_ci: true coverage: status: project: default: threshold: 1% comment: layout: "reach, diff" syrupy-project-syrupy-7096efd/conftest.py000066400000000000000000000002071513542711300207300ustar00rootroot00000000000000import pytest from syrupy.utils import env_context pytest_plugins = "pytester" @pytest.fixture def osenv(): return env_context syrupy-project-syrupy-7096efd/mypy.ini000066400000000000000000000000071513542711300202260ustar00rootroot00000000000000[mypy] syrupy-project-syrupy-7096efd/poetry.lock000066400000000000000000004422151513542711300207360ustar00rootroot00000000000000# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "attrs" version = "25.4.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373"}, {file = "attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11"}, ] [[package]] name = "backports-tarfile" version = "1.2.0" description = "Backport of CPython tarfile module" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\"" files = [ {file = "backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"}, {file = "backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["jaraco.test", "pytest (!=8.0.*)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)"] [[package]] name = "certifi" version = "2026.1.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, ] [[package]] name = "cffi" version = "2.0.0" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\" and platform_python_implementation != \"PyPy\"" files = [ {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"}, {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"}, {file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"}, {file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"}, {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"}, {file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"}, {file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"}, {file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"}, {file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"}, {file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"}, {file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"}, {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"}, {file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"}, {file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"}, {file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"}, {file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"}, {file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"}, {file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"}, {file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"}, {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"}, {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"}, {file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"}, {file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"}, {file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"}, {file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"}, {file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"}, {file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"}, {file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"}, {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"}, {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"}, {file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"}, {file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"}, {file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"}, {file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"}, {file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"}, {file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"}, {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"}, {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"}, {file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"}, {file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"}, {file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"}, {file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"}, {file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"}, {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"}, {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"}, {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"}, {file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"}, {file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"}, {file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"}, {file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"}, {file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"}, {file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"}, {file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"}, {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"}, {file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"}, {file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"}, {file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"}, ] [package.dependencies] pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} [[package]] name = "charset-normalizer" version = "3.4.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"}, {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"}, {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"}, {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"}, {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"}, {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"}, {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"}, {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"}, {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"}, {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"}, {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"}, {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"}, {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"}, {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"}, {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"}, {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"}, {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"}, {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"}, {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"}, {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"}, {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"}, {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"}, {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"}, {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"}, {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"}, {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"}, {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"}, {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"}, {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"}, {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"}, {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"}, {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"}, {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"}, {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"}, {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"}, {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"}, {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"}, {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"}, {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"}, {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"}, {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"}, {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"}, {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"}, {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"}, {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"}, {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, ] [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["main", "test"] markers = "sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] name = "configparser" version = "7.2.0" description = "Updated configparser from stdlib for earlier Pythons." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "configparser-7.2.0-py3-none-any.whl", hash = "sha256:fee5e1f3db4156dcd0ed95bc4edfa3580475537711f67a819c966b389d09ce62"}, {file = "configparser-7.2.0.tar.gz", hash = "sha256:b629cc8ae916e3afbd36d1b3d093f34193d851e11998920fdcfc4552218b7b70"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] test = ["pytest (>=6,!=8.1.*)", "types-backports"] type = ["pytest-mypy"] [[package]] name = "coverage" version = "7.13.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.10" groups = ["test"] files = [ {file = "coverage-7.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e1fa280b3ad78eea5be86f94f461c04943d942697e0dac889fa18fff8f5f9147"}, {file = "coverage-7.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c3d8c679607220979434f494b139dfb00131ebf70bb406553d69c1ff01a5c33d"}, {file = "coverage-7.13.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:339dc63b3eba969067b00f41f15ad161bf2946613156fb131266d8debc8e44d0"}, {file = "coverage-7.13.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:db622b999ffe49cb891f2fff3b340cdc2f9797d01a0a202a0973ba2562501d90"}, {file = "coverage-7.13.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1443ba9acbb593fa7c1c29e011d7c9761545fe35e7652e85ce7f51a16f7e08d"}, {file = "coverage-7.13.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c832ec92c4499ac463186af72f9ed4d8daec15499b16f0a879b0d1c8e5cf4a3b"}, {file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:562ec27dfa3f311e0db1ba243ec6e5f6ab96b1edfcfc6cf86f28038bc4961ce6"}, {file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4de84e71173d4dada2897e5a0e1b7877e5eefbfe0d6a44edee6ce31d9b8ec09e"}, {file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:a5a68357f686f8c4d527a2dc04f52e669c2fc1cbde38f6f7eb6a0e58cbd17cae"}, {file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:77cc258aeb29a3417062758975521eae60af6f79e930d6993555eeac6a8eac29"}, {file = "coverage-7.13.1-cp310-cp310-win32.whl", hash = "sha256:bb4f8c3c9a9f34423dba193f241f617b08ffc63e27f67159f60ae6baf2dcfe0f"}, {file = "coverage-7.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:c8e2706ceb622bc63bac98ebb10ef5da80ed70fbd8a7999a5076de3afaef0fb1"}, {file = "coverage-7.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a55d509a1dc5a5b708b5dad3b5334e07a16ad4c2185e27b40e4dba796ab7f88"}, {file = "coverage-7.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d010d080c4888371033baab27e47c9df7d6fb28d0b7b7adf85a4a49be9298b3"}, {file = "coverage-7.13.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d938b4a840fb1523b9dfbbb454f652967f18e197569c32266d4d13f37244c3d9"}, {file = "coverage-7.13.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bf100a3288f9bb7f919b87eb84f87101e197535b9bd0e2c2b5b3179633324fee"}, {file = "coverage-7.13.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef6688db9bf91ba111ae734ba6ef1a063304a881749726e0d3575f5c10a9facf"}, {file = "coverage-7.13.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0b609fc9cdbd1f02e51f67f51e5aee60a841ef58a68d00d5ee2c0faf357481a3"}, {file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c43257717611ff5e9a1d79dce8e47566235ebda63328718d9b65dd640bc832ef"}, {file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e09fbecc007f7b6afdfb3b07ce5bd9f8494b6856dd4f577d26c66c391b829851"}, {file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:a03a4f3a19a189919c7055098790285cc5c5b0b3976f8d227aea39dbf9f8bfdb"}, {file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3820778ea1387c2b6a818caec01c63adc5b3750211af6447e8dcfb9b6f08dbba"}, {file = "coverage-7.13.1-cp311-cp311-win32.whl", hash = "sha256:ff10896fa55167371960c5908150b434b71c876dfab97b69478f22c8b445ea19"}, {file = "coverage-7.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:a998cc0aeeea4c6d5622a3754da5a493055d2d95186bad877b0a34ea6e6dbe0a"}, {file = "coverage-7.13.1-cp311-cp311-win_arm64.whl", hash = "sha256:fea07c1a39a22614acb762e3fbbb4011f65eedafcb2948feeef641ac78b4ee5c"}, {file = "coverage-7.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6f34591000f06e62085b1865c9bc5f7858df748834662a51edadfd2c3bfe0dd3"}, {file = "coverage-7.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b67e47c5595b9224599016e333f5ec25392597a89d5744658f837d204e16c63e"}, {file = "coverage-7.13.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3e7b8bd70c48ffb28461ebe092c2345536fb18bbbf19d287c8913699735f505c"}, {file = "coverage-7.13.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c223d078112e90dc0e5c4e35b98b9584164bea9fbbd221c0b21c5241f6d51b62"}, {file = "coverage-7.13.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:794f7c05af0763b1bbd1b9e6eff0e52ad068be3b12cd96c87de037b01390c968"}, {file = "coverage-7.13.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0642eae483cc8c2902e4af7298bf886d605e80f26382124cddc3967c2a3df09e"}, {file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9f5e772ed5fef25b3de9f2008fe67b92d46831bd2bc5bdc5dd6bfd06b83b316f"}, {file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:45980ea19277dc0a579e432aef6a504fe098ef3a9032ead15e446eb0f1191aee"}, {file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:e4f18eca6028ffa62adbd185a8f1e1dd242f2e68164dba5c2b74a5204850b4cf"}, {file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f8dca5590fec7a89ed6826fce625595279e586ead52e9e958d3237821fbc750c"}, {file = "coverage-7.13.1-cp312-cp312-win32.whl", hash = "sha256:ff86d4e85188bba72cfb876df3e11fa243439882c55957184af44a35bd5880b7"}, {file = "coverage-7.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:16cc1da46c04fb0fb128b4dc430b78fa2aba8a6c0c9f8eb391fd5103409a6ac6"}, {file = "coverage-7.13.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d9bc218650022a768f3775dd7fdac1886437325d8d295d923ebcfef4892ad5c"}, {file = "coverage-7.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cb237bfd0ef4d5eb6a19e29f9e528ac67ac3be932ea6b44fb6cc09b9f3ecff78"}, {file = "coverage-7.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1dcb645d7e34dcbcc96cd7c132b1fc55c39263ca62eb961c064eb3928997363b"}, {file = "coverage-7.13.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3d42df8201e00384736f0df9be2ced39324c3907607d17d50d50116c989d84cd"}, {file = "coverage-7.13.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa3edde1aa8807de1d05934982416cb3ec46d1d4d91e280bcce7cca01c507992"}, {file = "coverage-7.13.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9edd0e01a343766add6817bc448408858ba6b489039eaaa2018474e4001651a4"}, {file = "coverage-7.13.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:985b7836931d033570b94c94713c6dba5f9d3ff26045f72c3e5dbc5fe3361e5a"}, {file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ffed1e4980889765c84a5d1a566159e363b71d6b6fbaf0bebc9d3c30bc016766"}, {file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8842af7f175078456b8b17f1b73a0d16a65dcbdc653ecefeb00a56b3c8c298c4"}, {file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:ccd7a6fca48ca9c131d9b0a2972a581e28b13416fc313fb98b6d24a03ce9a398"}, {file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0403f647055de2609be776965108447deb8e384fe4a553c119e3ff6bfbab4784"}, {file = "coverage-7.13.1-cp313-cp313-win32.whl", hash = "sha256:549d195116a1ba1e1ae2f5ca143f9777800f6636eab917d4f02b5310d6d73461"}, {file = "coverage-7.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:5899d28b5276f536fcf840b18b61a9fce23cc3aec1d114c44c07fe94ebeaa500"}, {file = "coverage-7.13.1-cp313-cp313-win_arm64.whl", hash = "sha256:868a2fae76dfb06e87291bcbd4dcbcc778a8500510b618d50496e520bd94d9b9"}, {file = "coverage-7.13.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:67170979de0dacac3f3097d02b0ad188d8edcea44ccc44aaa0550af49150c7dc"}, {file = "coverage-7.13.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f80e2bb21bfab56ed7405c2d79d34b5dc0bc96c2c1d2a067b643a09fb756c43a"}, {file = "coverage-7.13.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f83351e0f7dcdb14d7326c3d8d8c4e915fa685cbfdc6281f9470d97a04e9dfe4"}, {file = "coverage-7.13.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb3f6562e89bad0110afbe64e485aac2462efdce6232cdec7862a095dc3412f6"}, {file = "coverage-7.13.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77545b5dcda13b70f872c3b5974ac64c21d05e65b1590b441c8560115dc3a0d1"}, {file = "coverage-7.13.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a4d240d260a1aed814790bbe1f10a5ff31ce6c21bc78f0da4a1e8268d6c80dbd"}, {file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d2287ac9360dec3837bfdad969963a5d073a09a85d898bd86bea82aa8876ef3c"}, {file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:0d2c11f3ea4db66b5cbded23b20185c35066892c67d80ec4be4bab257b9ad1e0"}, {file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:3fc6a169517ca0d7ca6846c3c5392ef2b9e38896f61d615cb75b9e7134d4ee1e"}, {file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d10a2ed46386e850bb3de503a54f9fe8192e5917fcbb143bfef653a9355e9a53"}, {file = "coverage-7.13.1-cp313-cp313t-win32.whl", hash = "sha256:75a6f4aa904301dab8022397a22c0039edc1f51e90b83dbd4464b8a38dc87842"}, {file = "coverage-7.13.1-cp313-cp313t-win_amd64.whl", hash = "sha256:309ef5706e95e62578cda256b97f5e097916a2c26247c287bbe74794e7150df2"}, {file = "coverage-7.13.1-cp313-cp313t-win_arm64.whl", hash = "sha256:92f980729e79b5d16d221038dbf2e8f9a9136afa072f9d5d6ed4cb984b126a09"}, {file = "coverage-7.13.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:97ab3647280d458a1f9adb85244e81587505a43c0c7cff851f5116cd2814b894"}, {file = "coverage-7.13.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8f572d989142e0908e6acf57ad1b9b86989ff057c006d13b76c146ec6a20216a"}, {file = "coverage-7.13.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d72140ccf8a147e94274024ff6fd8fb7811354cf7ef88b1f0a988ebaa5bc774f"}, {file = "coverage-7.13.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d3c9f051b028810f5a87c88e5d6e9af3c0ff32ef62763bf15d29f740453ca909"}, {file = "coverage-7.13.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f398ba4df52d30b1763f62eed9de5620dcde96e6f491f4c62686736b155aa6e4"}, {file = "coverage-7.13.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:132718176cc723026d201e347f800cd1a9e4b62ccd3f82476950834dad501c75"}, {file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9e549d642426e3579b3f4b92d0431543b012dcb6e825c91619d4e93b7363c3f9"}, {file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:90480b2134999301eea795b3a9dbf606c6fbab1b489150c501da84a959442465"}, {file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e825dbb7f84dfa24663dd75835e7257f8882629fc11f03ecf77d84a75134b864"}, {file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:623dcc6d7a7ba450bbdbeedbaa0c42b329bdae16491af2282f12a7e809be7eb9"}, {file = "coverage-7.13.1-cp314-cp314-win32.whl", hash = "sha256:6e73ebb44dca5f708dc871fe0b90cf4cff1a13f9956f747cc87b535a840386f5"}, {file = "coverage-7.13.1-cp314-cp314-win_amd64.whl", hash = "sha256:be753b225d159feb397bd0bf91ae86f689bad0da09d3b301478cd39b878ab31a"}, {file = "coverage-7.13.1-cp314-cp314-win_arm64.whl", hash = "sha256:228b90f613b25ba0019361e4ab81520b343b622fc657daf7e501c4ed6a2366c0"}, {file = "coverage-7.13.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:60cfb538fe9ef86e5b2ab0ca8fc8d62524777f6c611dcaf76dc16fbe9b8e698a"}, {file = "coverage-7.13.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:57dfc8048c72ba48a8c45e188d811e5efd7e49b387effc8fb17e97936dde5bf6"}, {file = "coverage-7.13.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3f2f725aa3e909b3c5fdb8192490bdd8e1495e85906af74fe6e34a2a77ba0673"}, {file = "coverage-7.13.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9ee68b21909686eeb21dfcba2c3b81fee70dcf38b140dcd5aa70680995fa3aa5"}, {file = "coverage-7.13.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:724b1b270cb13ea2e6503476e34541a0b1f62280bc997eab443f87790202033d"}, {file = "coverage-7.13.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:916abf1ac5cf7eb16bc540a5bf75c71c43a676f5c52fcb9fe75a2bd75fb944e8"}, {file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:776483fd35b58d8afe3acbd9988d5de592ab6da2d2a865edfdbc9fdb43e7c486"}, {file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:b6f3b96617e9852703f5b633ea01315ca45c77e879584f283c44127f0f1ec564"}, {file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:bd63e7b74661fed317212fab774e2a648bc4bb09b35f25474f8e3325d2945cd7"}, {file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:933082f161bbb3e9f90d00990dc956120f608cdbcaeea15c4d897f56ef4fe416"}, {file = "coverage-7.13.1-cp314-cp314t-win32.whl", hash = "sha256:18be793c4c87de2965e1c0f060f03d9e5aff66cfeae8e1dbe6e5b88056ec153f"}, {file = "coverage-7.13.1-cp314-cp314t-win_amd64.whl", hash = "sha256:0e42e0ec0cd3e0d851cb3c91f770c9301f48647cb2877cb78f74bdaa07639a79"}, {file = "coverage-7.13.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eaecf47ef10c72ece9a2a92118257da87e460e113b83cc0d2905cbbe931792b4"}, {file = "coverage-7.13.1-py3-none-any.whl", hash = "sha256:2016745cb3ba554469d02819d78958b571792bb68e31302610e898f80dd3a573"}, {file = "coverage-7.13.1.tar.gz", hash = "sha256:b7593fe7eb5feaa3fbb461ac79aac9f9fc0387a5ca8080b0c6fe2ca27b091afd"}, ] [package.dependencies] tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} [package.extras] toml = ["tomli ; python_full_version <= \"3.11.0a6\""] [[package]] name = "cryptography" version = "46.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = "!=3.9.0,!=3.9.1,>=3.8" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" files = [ {file = "cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e"}, {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926"}, {file = "cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71"}, {file = "cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac"}, {file = "cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018"}, {file = "cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb"}, {file = "cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c"}, {file = "cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665"}, {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3"}, {file = "cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20"}, {file = "cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de"}, {file = "cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914"}, {file = "cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db"}, {file = "cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21"}, {file = "cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04"}, {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506"}, {file = "cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963"}, {file = "cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4"}, {file = "cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df"}, {file = "cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f"}, {file = "cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372"}, {file = "cryptography-46.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a23582810fedb8c0bc47524558fb6c56aac3fc252cb306072fd2815da2a47c32"}, {file = "cryptography-46.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e7aec276d68421f9574040c26e2a7c3771060bc0cff408bae1dcb19d3ab1e63c"}, {file = "cryptography-46.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea"}, {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b"}, {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb"}, {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717"}, {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9"}, {file = "cryptography-46.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c"}, {file = "cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1"}, ] [package.dependencies] cffi = {version = ">=2.0.0", markers = "python_full_version >= \"3.9.0\" and platform_python_implementation != \"PyPy\""} typing-extensions = {version = ">=4.13.2", markers = "python_full_version < \"3.11.0\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-inline-tabs", "sphinx-rtd-theme (>=3.0.0)"] docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"] nox = ["nox[uv] (>=2024.4.15)"] pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.14)", "ruff (>=0.11.11)"] sdist = ["build (>=1.0.0)"] ssh = ["bcrypt (>=3.1.5)"] test = ["certifi (>=2024)", "cryptography-vectors (==46.0.3)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] test-randomorder = ["pytest-randomly"] [[package]] name = "debugpy" version = "1.8.19" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ {file = "debugpy-1.8.19-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:fce6da15d73be5935b4438435c53adb512326a3e11e4f90793ea87cd9f018254"}, {file = "debugpy-1.8.19-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:e24b1652a1df1ab04d81e7ead446a91c226de704ff5dde6bd0a0dbaab07aa3f2"}, {file = "debugpy-1.8.19-cp310-cp310-win32.whl", hash = "sha256:327cb28c3ad9e17bc925efc7f7018195fd4787c2fe4b7af1eec11f1d19bdec62"}, {file = "debugpy-1.8.19-cp310-cp310-win_amd64.whl", hash = "sha256:b7dd275cf2c99e53adb9654f5ae015f70415bbe2bacbe24cfee30d54b6aa03c5"}, {file = "debugpy-1.8.19-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:c5dcfa21de1f735a4f7ced4556339a109aa0f618d366ede9da0a3600f2516d8b"}, {file = "debugpy-1.8.19-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:806d6800246244004625d5222d7765874ab2d22f3ba5f615416cf1342d61c488"}, {file = "debugpy-1.8.19-cp311-cp311-win32.whl", hash = "sha256:783a519e6dfb1f3cd773a9bda592f4887a65040cb0c7bd38dde410f4e53c40d4"}, {file = "debugpy-1.8.19-cp311-cp311-win_amd64.whl", hash = "sha256:14035cbdbb1fe4b642babcdcb5935c2da3b1067ac211c5c5a8fdc0bb31adbcaa"}, {file = "debugpy-1.8.19-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:bccb1540a49cde77edc7ce7d9d075c1dbeb2414751bc0048c7a11e1b597a4c2e"}, {file = "debugpy-1.8.19-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:e9c68d9a382ec754dc05ed1d1b4ed5bd824b9f7c1a8cd1083adb84b3c93501de"}, {file = "debugpy-1.8.19-cp312-cp312-win32.whl", hash = "sha256:6599cab8a783d1496ae9984c52cb13b7c4a3bd06a8e6c33446832a5d97ce0bee"}, {file = "debugpy-1.8.19-cp312-cp312-win_amd64.whl", hash = "sha256:66e3d2fd8f2035a8f111eb127fa508469dfa40928a89b460b41fd988684dc83d"}, {file = "debugpy-1.8.19-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:91e35db2672a0abaf325f4868fcac9c1674a0d9ad9bb8a8c849c03a5ebba3e6d"}, {file = "debugpy-1.8.19-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:85016a73ab84dea1c1f1dcd88ec692993bcbe4532d1b49ecb5f3c688ae50c606"}, {file = "debugpy-1.8.19-cp313-cp313-win32.whl", hash = "sha256:b605f17e89ba0ecee994391194285fada89cee111cfcd29d6f2ee11cbdc40976"}, {file = "debugpy-1.8.19-cp313-cp313-win_amd64.whl", hash = "sha256:c30639998a9f9cd9699b4b621942c0179a6527f083c72351f95c6ab1728d5b73"}, {file = "debugpy-1.8.19-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:1e8c4d1bd230067bf1bbcdbd6032e5a57068638eb28b9153d008ecde288152af"}, {file = "debugpy-1.8.19-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d40c016c1f538dbf1762936e3aeb43a89b965069d9f60f9e39d35d9d25e6b809"}, {file = "debugpy-1.8.19-cp314-cp314-win32.whl", hash = "sha256:0601708223fe1cd0e27c6cce67a899d92c7d68e73690211e6788a4b0e1903f5b"}, {file = "debugpy-1.8.19-cp314-cp314-win_amd64.whl", hash = "sha256:8e19a725f5d486f20e53a1dde2ab8bb2c9607c40c00a42ab646def962b41125f"}, {file = "debugpy-1.8.19-cp38-cp38-macosx_15_0_x86_64.whl", hash = "sha256:d9b6f633fd2865af2afba2beb0c1819b6ecd4aed1c8f90f5d1bbca3272306b10"}, {file = "debugpy-1.8.19-cp38-cp38-manylinux_2_34_x86_64.whl", hash = "sha256:a21bfdea088f713df05fa246ba0520f6ba44dd7eaec224742f51987a6979a648"}, {file = "debugpy-1.8.19-cp38-cp38-win32.whl", hash = "sha256:b1cb98e5325da3059ca24445fca48314bfddfdf65ce1b59ff07055e723f06bd2"}, {file = "debugpy-1.8.19-cp38-cp38-win_amd64.whl", hash = "sha256:c9b9bf440141a36836bdbe4320a2b126bb38aafa85e1aed05d7bfbb0e2a278bf"}, {file = "debugpy-1.8.19-cp39-cp39-macosx_15_0_x86_64.whl", hash = "sha256:c047177ab2d286451f242b855b650d313198c4a987140d4b35218b2855a64a4a"}, {file = "debugpy-1.8.19-cp39-cp39-manylinux_2_34_x86_64.whl", hash = "sha256:4468de0c30012d367944f0eab4ecb8371736e8ef9522a465f61214f344c11183"}, {file = "debugpy-1.8.19-cp39-cp39-win32.whl", hash = "sha256:7b62c0f015120ede25e5124a5f9d8a424e1208e3d96a36c89958f046ee21fff6"}, {file = "debugpy-1.8.19-cp39-cp39-win_amd64.whl", hash = "sha256:76f566baaf7f3e06adbe67ffedccd2ee911d1e486f55931939ce3f0fe1090774"}, {file = "debugpy-1.8.19-py2.py3-none-any.whl", hash = "sha256:360ffd231a780abbc414ba0f005dad409e71c78637efe8f2bd75837132a41d38"}, {file = "debugpy-1.8.19.tar.gz", hash = "sha256:eea7e5987445ab0b5ed258093722d5ecb8bb72217c5c9b1e21f64efe23ddebdb"}, ] [[package]] name = "docutils" version = "0.22.4" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de"}, {file = "docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968"}, ] [[package]] name = "exceptiongroup" version = "1.3.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main", "test"] markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"}, {file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"}, ] [package.dependencies] typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} [package.extras] test = ["pytest (>=6)"] [[package]] name = "execnet" version = "2.1.2" description = "execnet: rapid multi-Python deployment" optional = false python-versions = ">=3.8" groups = ["test"] files = [ {file = "execnet-2.1.2-py3-none-any.whl", hash = "sha256:67fba928dd5a544b783f6056f449e5e3931a5c378b128bc18501f7ea79e296ec"}, {file = "execnet-2.1.2.tar.gz", hash = "sha256:63d83bfdd9a23e35b9c6a3261412324f964c2ec8dcd8d3c6916ee9373e0befcd"}, ] [package.extras] testing = ["hatch", "pre-commit", "pytest", "tox"] [[package]] name = "id" version = "1.5.0" description = "A tool for generating OIDC identities" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ {file = "id-1.5.0-py3-none-any.whl", hash = "sha256:f1434e1cef91f2cbb8a4ec64663d5a23b9ed43ef44c4c957d02583d61714c658"}, {file = "id-1.5.0.tar.gz", hash = "sha256:292cb8a49eacbbdbce97244f47a97b4c62540169c976552e497fd57df0734c1d"}, ] [package.dependencies] requests = "*" [package.extras] dev = ["build", "bump (>=1.3.2)", "id[lint,test]"] lint = ["bandit", "interrogate", "mypy", "ruff (<0.8.2)", "types-requests"] test = ["coverage[toml]", "pretend", "pytest", "pytest-cov"] [[package]] name = "idna" version = "3.11" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, ] [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] name = "importlib-metadata" version = "8.7.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\"" files = [ {file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}, {file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}, ] [package.dependencies] zipp = ">=3.20" [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=3.4)"] perf = ["ipython"] test = ["flufl.flake8", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "iniconfig" version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.10" groups = ["main", "test"] files = [ {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] [[package]] name = "invoke" version = "2.2.1" description = "Pythonic task execution" optional = false python-versions = ">=3.6" groups = ["test"] files = [ {file = "invoke-2.2.1-py3-none-any.whl", hash = "sha256:2413bc441b376e5cd3f55bb5d364f973ad8bdd7bf87e53c79de3c11bf3feecc8"}, {file = "invoke-2.2.1.tar.gz", hash = "sha256:515bf49b4a48932b79b024590348da22f39c4942dff991ad1fb8b8baea1be707"}, ] [[package]] name = "jaraco-classes" version = "3.4.0" description = "Utility functions for Python class constructs" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790"}, {file = "jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd"}, ] [package.dependencies] more-itertools = "*" [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [[package]] name = "jaraco-context" version = "6.1.0" description = "Useful decorators and context managers" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "jaraco_context-6.1.0-py3-none-any.whl", hash = "sha256:a43b5ed85815223d0d3cfdb6d7ca0d2bc8946f28f30b6f3216bda070f68badda"}, {file = "jaraco_context-6.1.0.tar.gz", hash = "sha256:129a341b0a85a7db7879e22acd66902fda67882db771754574338898b2d5d86f"}, ] [package.dependencies] "backports.tarfile" = {version = "*", markers = "python_version < \"3.12\""} [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=3.4)"] test = ["jaraco.test (>=5.6.0)", "portend", "pytest (>=6,!=8.1.*)"] type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "jaraco-functools" version = "4.4.0" description = "Functools like those found in stdlib" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "jaraco_functools-4.4.0-py3-none-any.whl", hash = "sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176"}, {file = "jaraco_functools-4.4.0.tar.gz", hash = "sha256:da21933b0417b89515562656547a77b4931f98176eb173644c0d35032a33d6bb"}, ] [package.dependencies] more_itertools = "*" [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=3.4)"] test = ["jaraco.classes", "pytest (>=6,!=8.1.*)"] type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "jeepney" version = "0.9.0" description = "Low-level, pure Python DBus protocol wrapper." optional = false python-versions = ">=3.7" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" files = [ {file = "jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683"}, {file = "jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732"}, ] [package.extras] test = ["async-timeout ; python_version < \"3.11\"", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] trio = ["trio"] [[package]] name = "keyring" version = "25.7.0" description = "Store and access your passwords safely." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f"}, {file = "keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b"}, ] [package.dependencies] importlib_metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} "jaraco.classes" = "*" "jaraco.context" = "*" "jaraco.functools" = "*" jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] completion = ["shtab (>=1.1.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=3.4)"] test = ["pyfakefs", "pytest (>=6,!=8.1.*)"] type = ["pygobject-stubs", "pytest-mypy (>=1.0.1)", "shtab", "types-pywin32"] [[package]] name = "librt" version = "0.7.8" description = "Mypyc runtime library" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_python_implementation != \"PyPy\"" files = [ {file = "librt-0.7.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b45306a1fc5f53c9330fbee134d8b3227fe5da2ab09813b892790400aa49352d"}, {file = "librt-0.7.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:864c4b7083eeee250ed55135d2127b260d7eb4b5e953a9e5df09c852e327961b"}, {file = "librt-0.7.8-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6938cc2de153bc927ed8d71c7d2f2ae01b4e96359126c602721340eb7ce1a92d"}, {file = "librt-0.7.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:66daa6ac5de4288a5bbfbe55b4caa7bf0cd26b3269c7a476ffe8ce45f837f87d"}, {file = "librt-0.7.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4864045f49dc9c974dadb942ac56a74cd0479a2aafa51ce272c490a82322ea3c"}, {file = "librt-0.7.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a36515b1328dc5b3ffce79fe204985ca8572525452eacabee2166f44bb387b2c"}, {file = "librt-0.7.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b7e7f140c5169798f90b80d6e607ed2ba5059784968a004107c88ad61fb3641d"}, {file = "librt-0.7.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ff71447cb778a4f772ddc4ce360e6ba9c95527ed84a52096bd1bbf9fee2ec7c0"}, {file = "librt-0.7.8-cp310-cp310-win32.whl", hash = "sha256:047164e5f68b7a8ebdf9fae91a3c2161d3192418aadd61ddd3a86a56cbe3dc85"}, {file = "librt-0.7.8-cp310-cp310-win_amd64.whl", hash = "sha256:d6f254d096d84156a46a84861183c183d30734e52383602443292644d895047c"}, {file = "librt-0.7.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ff3e9c11aa260c31493d4b3197d1e28dd07768594a4f92bec4506849d736248f"}, {file = "librt-0.7.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddb52499d0b3ed4aa88746aaf6f36a08314677d5c346234c3987ddc506404eac"}, {file = "librt-0.7.8-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e9c0afebbe6ce177ae8edba0c7c4d626f2a0fc12c33bb993d163817c41a7a05c"}, {file = "librt-0.7.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:631599598e2c76ded400c0a8722dec09217c89ff64dc54b060f598ed68e7d2a8"}, {file = "librt-0.7.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c1ba843ae20db09b9d5c80475376168feb2640ce91cd9906414f23cc267a1ff"}, {file = "librt-0.7.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b5b007bb22ea4b255d3ee39dfd06d12534de2fcc3438567d9f48cdaf67ae1ae3"}, {file = "librt-0.7.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dbd79caaf77a3f590cbe32dc2447f718772d6eea59656a7dcb9311161b10fa75"}, {file = "librt-0.7.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:87808a8d1e0bd62a01cafc41f0fd6818b5a5d0ca0d8a55326a81643cdda8f873"}, {file = "librt-0.7.8-cp311-cp311-win32.whl", hash = "sha256:31724b93baa91512bd0a376e7cf0b59d8b631ee17923b1218a65456fa9bda2e7"}, {file = "librt-0.7.8-cp311-cp311-win_amd64.whl", hash = "sha256:978e8b5f13e52cf23a9e80f3286d7546baa70bc4ef35b51d97a709d0b28e537c"}, {file = "librt-0.7.8-cp311-cp311-win_arm64.whl", hash = "sha256:20e3946863d872f7cabf7f77c6c9d370b8b3d74333d3a32471c50d3a86c0a232"}, {file = "librt-0.7.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9b6943885b2d49c48d0cff23b16be830ba46b0152d98f62de49e735c6e655a63"}, {file = "librt-0.7.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46ef1f4b9b6cc364b11eea0ecc0897314447a66029ee1e55859acb3dd8757c93"}, {file = "librt-0.7.8-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:907ad09cfab21e3c86e8f1f87858f7049d1097f77196959c033612f532b4e592"}, {file = "librt-0.7.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2991b6c3775383752b3ca0204842743256f3ad3deeb1d0adc227d56b78a9a850"}, {file = "librt-0.7.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03679b9856932b8c8f674e87aa3c55ea11c9274301f76ae8dc4d281bda55cf62"}, {file = "librt-0.7.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3968762fec1b2ad34ce57458b6de25dbb4142713e9ca6279a0d352fa4e9f452b"}, {file = "librt-0.7.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bb7a7807523a31f03061288cc4ffc065d684c39db7644c676b47d89553c0d714"}, {file = "librt-0.7.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad64a14b1e56e702e19b24aae108f18ad1bf7777f3af5fcd39f87d0c5a814449"}, {file = "librt-0.7.8-cp312-cp312-win32.whl", hash = "sha256:0241a6ed65e6666236ea78203a73d800dbed896cf12ae25d026d75dc1fcd1dac"}, {file = "librt-0.7.8-cp312-cp312-win_amd64.whl", hash = "sha256:6db5faf064b5bab9675c32a873436b31e01d66ca6984c6f7f92621656033a708"}, {file = "librt-0.7.8-cp312-cp312-win_arm64.whl", hash = "sha256:57175aa93f804d2c08d2edb7213e09276bd49097611aefc37e3fa38d1fb99ad0"}, {file = "librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4c3995abbbb60b3c129490fa985dfe6cac11d88fc3c36eeb4fb1449efbbb04fc"}, {file = "librt-0.7.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:44e0c2cbc9bebd074cf2cdbe472ca185e824be4e74b1c63a8e934cea674bebf2"}, {file = "librt-0.7.8-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4d2f1e492cae964b3463a03dc77a7fe8742f7855d7258c7643f0ee32b6651dd3"}, {file = "librt-0.7.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:451e7ffcef8f785831fdb791bd69211f47e95dc4c6ddff68e589058806f044c6"}, {file = "librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3469e1af9f1380e093ae06bedcbdd11e407ac0b303a56bbe9afb1d6824d4982d"}, {file = "librt-0.7.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f11b300027ce19a34f6d24ebb0a25fd0e24a9d53353225a5c1e6cadbf2916b2e"}, {file = "librt-0.7.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4adc73614f0d3c97874f02f2c7fd2a27854e7e24ad532ea6b965459c5b757eca"}, {file = "librt-0.7.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:60c299e555f87e4c01b2eca085dfccda1dde87f5a604bb45c2906b8305819a93"}, {file = "librt-0.7.8-cp313-cp313-win32.whl", hash = "sha256:b09c52ed43a461994716082ee7d87618096851319bf695d57ec123f2ab708951"}, {file = "librt-0.7.8-cp313-cp313-win_amd64.whl", hash = "sha256:f8f4a901a3fa28969d6e4519deceab56c55a09d691ea7b12ca830e2fa3461e34"}, {file = "librt-0.7.8-cp313-cp313-win_arm64.whl", hash = "sha256:43d4e71b50763fcdcf64725ac680d8cfa1706c928b844794a7aa0fa9ac8e5f09"}, {file = "librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:be927c3c94c74b05128089a955fba86501c3b544d1d300282cc1b4bd370cb418"}, {file = "librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7b0803e9008c62a7ef79058233db7ff6f37a9933b8f2573c05b07ddafa226611"}, {file = "librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:79feb4d00b2a4e0e05c9c56df707934f41fcb5fe53fd9efb7549068d0495b758"}, {file = "librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9122094e3f24aa759c38f46bd8863433820654927370250f460ae75488b66ea"}, {file = "librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e03bea66af33c95ce3addf87a9bf1fcad8d33e757bc479957ddbc0e4f7207ac"}, {file = "librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f1ade7f31675db00b514b98f9ab9a7698c7282dad4be7492589109471852d398"}, {file = "librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a14229ac62adcf1b90a15992f1ab9c69ae8b99ffb23cb64a90878a6e8a2f5b81"}, {file = "librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5bcaaf624fd24e6a0cb14beac37677f90793a96864c67c064a91458611446e83"}, {file = "librt-0.7.8-cp314-cp314-win32.whl", hash = "sha256:7aa7d5457b6c542ecaed79cec4ad98534373c9757383973e638ccced0f11f46d"}, {file = "librt-0.7.8-cp314-cp314-win_amd64.whl", hash = "sha256:3d1322800771bee4a91f3b4bd4e49abc7d35e65166821086e5afd1e6c0d9be44"}, {file = "librt-0.7.8-cp314-cp314-win_arm64.whl", hash = "sha256:5363427bc6a8c3b1719f8f3845ea53553d301382928a86e8fab7984426949bce"}, {file = "librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ca916919793a77e4a98d4a1701e345d337ce53be4a16620f063191f7322ac80f"}, {file = "librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:54feb7b4f2f6706bb82325e836a01be805770443e2400f706e824e91f6441dde"}, {file = "librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:39a4c76fee41007070f872b648cc2f711f9abf9a13d0c7162478043377b52c8e"}, {file = "librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac9c8a458245c7de80bc1b9765b177055efff5803f08e548dd4bb9ab9a8d789b"}, {file = "librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b67aa7eff150f075fda09d11f6bfb26edffd300f6ab1666759547581e8f666"}, {file = "librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:535929b6eff670c593c34ff435d5440c3096f20fa72d63444608a5aef64dd581"}, {file = "librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:63937bd0f4d1cb56653dc7ae900d6c52c41f0015e25aaf9902481ee79943b33a"}, {file = "librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cf243da9e42d914036fd362ac3fa77d80a41cadcd11ad789b1b5eec4daaf67ca"}, {file = "librt-0.7.8-cp314-cp314t-win32.whl", hash = "sha256:171ca3a0a06c643bd0a2f62a8944e1902c94aa8e5da4db1ea9a8daf872685365"}, {file = "librt-0.7.8-cp314-cp314t-win_amd64.whl", hash = "sha256:445b7304145e24c60288a2f172b5ce2ca35c0f81605f5299f3fa567e189d2e32"}, {file = "librt-0.7.8-cp314-cp314t-win_arm64.whl", hash = "sha256:8766ece9de08527deabcd7cb1b4f1a967a385d26e33e536d6d8913db6ef74f06"}, {file = "librt-0.7.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c7e8f88f79308d86d8f39c491773cbb533d6cb7fa6476f35d711076ee04fceb6"}, {file = "librt-0.7.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:389bd25a0db916e1d6bcb014f11aa9676cedaa485e9ec3752dfe19f196fd377b"}, {file = "librt-0.7.8-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:73fd300f501a052f2ba52ede721232212f3b06503fa12665408ecfc9d8fd149c"}, {file = "librt-0.7.8-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d772edc6a5f7835635c7562f6688e031f0b97e31d538412a852c49c9a6c92d5"}, {file = "librt-0.7.8-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde8a130bd0f239e45503ab39fab239ace094d63ee1d6b67c25a63d741c0f71"}, {file = "librt-0.7.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fdec6e2368ae4f796fc72fad7fd4bd1753715187e6d870932b0904609e7c878e"}, {file = "librt-0.7.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:00105e7d541a8f2ee5be52caacea98a005e0478cfe78c8080fbb7b5d2b340c63"}, {file = "librt-0.7.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c6f8947d3dfd7f91066c5b4385812c18be26c9d5a99ca56667547f2c39149d94"}, {file = "librt-0.7.8-cp39-cp39-win32.whl", hash = "sha256:41d7bb1e07916aeb12ae4a44e3025db3691c4149ab788d0315781b4d29b86afb"}, {file = "librt-0.7.8-cp39-cp39-win_amd64.whl", hash = "sha256:e90a8e237753c83b8e484d478d9a996dc5e39fd5bd4c6ce32563bc8123f132be"}, {file = "librt-0.7.8.tar.gz", hash = "sha256:1a4ede613941d9c3470b0368be851df6bb78ab218635512d0370b27a277a0862"}, ] [[package]] name = "markdown-it-py" version = "4.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ {file = "markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"}, {file = "markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3"}, ] [package.dependencies] mdurl = ">=0.1,<1.0" [package.extras] benchmarking = ["psutil", "pytest", "pytest-benchmark"] compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "markdown-it-pyrs", "mistletoe (>=1.0,<2.0)", "mistune (>=3.0,<4.0)", "panflute (>=2.3,<3.0)"] linkify = ["linkify-it-py (>=1,<3)"] plugins = ["mdit-py-plugins (>=0.5.0)"] profiling = ["gprof2dot"] rtd = ["ipykernel", "jupyter_sphinx", "mdit-py-plugins (>=0.5.0)", "myst-parser", "pyyaml", "sphinx", "sphinx-book-theme (>=1.0,<2.0)", "sphinx-copybutton", "sphinx-design"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions", "requests"] [[package]] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" groups = ["dev"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] [[package]] name = "more-itertools" version = "10.8.0" description = "More routines for operating on iterables, beyond itertools" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b"}, {file = "more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd"}, ] [[package]] name = "mypy" version = "1.19.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, ] [package.dependencies] librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} mypy_extensions = ">=1.0.0" pathspec = ">=0.9.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing_extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] [[package]] name = "mypy-extensions" version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] name = "nh3" version = "0.3.2" description = "Python binding to Ammonia HTML sanitizer Rust crate" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ {file = "nh3-0.3.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d18957a90806d943d141cc5e4a0fefa1d77cf0d7a156878bf9a66eed52c9cc7d"}, {file = "nh3-0.3.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45c953e57028c31d473d6b648552d9cab1efe20a42ad139d78e11d8f42a36130"}, {file = "nh3-0.3.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c9850041b77a9147d6bbd6dbbf13eeec7009eb60b44e83f07fcb2910075bf9b"}, {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:403c11563e50b915d0efdb622866d1d9e4506bce590ef7da57789bf71dd148b5"}, {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:0dca4365db62b2d71ff1620ee4f800c4729849906c5dd504ee1a7b2389558e31"}, {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0fe7ee035dd7b2290715baf29cb27167dddd2ff70ea7d052c958dbd80d323c99"}, {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a40202fd58e49129764f025bbaae77028e420f1d5b3c8e6f6fd3a6490d513868"}, {file = "nh3-0.3.2-cp314-cp314t-win32.whl", hash = "sha256:1f9ba555a797dbdcd844b89523f29cdc90973d8bd2e836ea6b962cf567cadd93"}, {file = "nh3-0.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:dce4248edc427c9b79261f3e6e2b3ecbdd9b88c267012168b4a7b3fc6fd41d13"}, {file = "nh3-0.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:019ecbd007536b67fdf76fab411b648fb64e2257ca3262ec80c3425c24028c80"}, {file = "nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7064ccf5ace75825bd7bf57859daaaf16ed28660c1c6b306b649a9eda4b54b1e"}, {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8745454cdd28bbbc90861b80a0111a195b0e3961b9fa2e672be89eb199fa5d8"}, {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72d67c25a84579f4a432c065e8b4274e53b7cf1df8f792cf846abfe2c3090866"}, {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:13398e676a14d6233f372c75f52d5ae74f98210172991f7a3142a736bd92b131"}, {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03d617e5c8aa7331bd2659c654e021caf9bba704b109e7b2b28b039a00949fe5"}, {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f55c4d2d5a207e74eefe4d828067bbb01300e06e2a7436142f915c5928de07"}, {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bb18403f02b655a1bbe4e3a4696c2ae1d6ae8f5991f7cacb684b1ae27e6c9f7"}, {file = "nh3-0.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d66f41672eb4060cf87c037f760bdbc6847852ca9ef8e9c5a5da18f090abf87"}, {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f97f8b25cb2681d25e2338148159447e4d689aafdccfcf19e61ff7db3905768a"}, {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:2ab70e8c6c7d2ce953d2a58102eefa90c2d0a5ed7aa40c7e29a487bc5e613131"}, {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:1710f3901cd6440ca92494ba2eb6dc260f829fa8d9196b659fa10de825610ce0"}, {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91e9b001101fb4500a2aafe3e7c92928d85242d38bf5ac0aba0b7480da0a4cd6"}, {file = "nh3-0.3.2-cp38-abi3-win32.whl", hash = "sha256:169db03df90da63286e0560ea0efa9b6f3b59844a9735514a1d47e6bb2c8c61b"}, {file = "nh3-0.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:562da3dca7a17f9077593214a9781a94b8d76de4f158f8c895e62f09573945fe"}, {file = "nh3-0.3.2-cp38-abi3-win_arm64.whl", hash = "sha256:cf5964d54edd405e68583114a7cba929468bcd7db5e676ae38ee954de1cfc104"}, {file = "nh3-0.3.2.tar.gz", hash = "sha256:f394759a06df8b685a4ebfb1874fb67a9cbfd58c64fc5ed587a663c0e63ec376"}, ] [[package]] name = "packaging" version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev", "test"] files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] name = "pathspec" version = "1.0.3" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "pathspec-1.0.3-py3-none-any.whl", hash = "sha256:e80767021c1cc524aa3fb14bedda9c34406591343cc42797b386ce7b9354fb6c"}, {file = "pathspec-1.0.3.tar.gz", hash = "sha256:bac5cf97ae2c2876e2d25ebb15078eb04d76e4b98921ee31c6f85ade8b59444d"}, ] [package.extras] hyperscan = ["hyperscan (>=0.7)"] optional = ["typing-extensions (>=4)"] re2 = ["google-re2 (>=1.1)"] tests = ["pytest (>=9)", "typing-extensions (>=4.15)"] [[package]] name = "pluggy" version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.9" groups = ["main", "test"] files = [ {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "py-cpuinfo" version = "9.0.0" description = "Get CPU info with pure Python" optional = false python-versions = "*" groups = ["test"] files = [ {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, ] [[package]] name = "py-githooks" version = "1.1.1" description = "Create git hooks with ease using a simple configuration file in a git project" optional = false python-versions = "*" groups = ["dev"] files = [ {file = "py-githooks-1.1.1.tar.gz", hash = "sha256:7be404d01ab489a883440300884b8ea89ad98bf7f159b6598136ea67e39ff704"}, {file = "py_githooks-1.1.1-py3-none-any.whl", hash = "sha256:23adc01f3042fab2e38da2ca97e14ba066b7f2d89b8e53ec5358c71850dd7a18"}, ] [package.dependencies] configparser = "*" [[package]] name = "pycparser" version = "2.23" description = "C parser in Python" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\" and platform_python_implementation != \"PyPy\" and implementation_name != \"PyPy\"" files = [ {file = "pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934"}, {file = "pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2"}, ] [[package]] name = "pydantic" version = "2.12.5" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}, {file = "pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}, ] [package.dependencies] annotated-types = ">=0.6.0" pydantic-core = "2.41.5" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" [package.extras] email = ["email-validator (>=2.0.0)"] timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" version = "2.41.5" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146"}, {file = "pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2"}, {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97"}, {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9"}, {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52"}, {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941"}, {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a"}, {file = "pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c"}, {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2"}, {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556"}, {file = "pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49"}, {file = "pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba"}, {file = "pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9"}, {file = "pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6"}, {file = "pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b"}, {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a"}, {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8"}, {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e"}, {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1"}, {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b"}, {file = "pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b"}, {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284"}, {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594"}, {file = "pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e"}, {file = "pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b"}, {file = "pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe"}, {file = "pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f"}, {file = "pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7"}, {file = "pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0"}, {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69"}, {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75"}, {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05"}, {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc"}, {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c"}, {file = "pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5"}, {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c"}, {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294"}, {file = "pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1"}, {file = "pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d"}, {file = "pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815"}, {file = "pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3"}, {file = "pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9"}, {file = "pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34"}, {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0"}, {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33"}, {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e"}, {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2"}, {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586"}, {file = "pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d"}, {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740"}, {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e"}, {file = "pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858"}, {file = "pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36"}, {file = "pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11"}, {file = "pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd"}, {file = "pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a"}, {file = "pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14"}, {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1"}, {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66"}, {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869"}, {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2"}, {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375"}, {file = "pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553"}, {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90"}, {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07"}, {file = "pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb"}, {file = "pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23"}, {file = "pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf"}, {file = "pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0"}, {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a"}, {file = "pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3"}, {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c"}, {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612"}, {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d"}, {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9"}, {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660"}, {file = "pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9"}, {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3"}, {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf"}, {file = "pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470"}, {file = "pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa"}, {file = "pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c"}, {file = "pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008"}, {file = "pydantic_core-2.41.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8bfeaf8735be79f225f3fefab7f941c712aaca36f1128c9d7e2352ee1aa87bdf"}, {file = "pydantic_core-2.41.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:346285d28e4c8017da95144c7f3acd42740d637ff41946af5ce6e5e420502dd5"}, {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a75dafbf87d6276ddc5b2bf6fae5254e3d0876b626eb24969a574fff9149ee5d"}, {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b93a4d08587e2b7e7882de461e82b6ed76d9026ce91ca7915e740ecc7855f60"}, {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8465ab91a4bd96d36dde3263f06caa6a8a6019e4113f24dc753d79a8b3a3f82"}, {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:299e0a22e7ae2b85c1a57f104538b2656e8ab1873511fd718a1c1c6f149b77b5"}, {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:707625ef0983fcfb461acfaf14de2067c5942c6bb0f3b4c99158bed6fedd3cf3"}, {file = "pydantic_core-2.41.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425"}, {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0384e2e1021894b1ff5a786dbf94771e2986ebe2869533874d7e43bc79c6f504"}, {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:f0cd744688278965817fd0839c4a4116add48d23890d468bc436f78beb28abf5"}, {file = "pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:753e230374206729bf0a807954bcc6c150d3743928a73faffee51ac6557a03c3"}, {file = "pydantic_core-2.41.5-cp39-cp39-win32.whl", hash = "sha256:873e0d5b4fb9b89ef7c2d2a963ea7d02879d9da0da8d9d4933dee8ee86a8b460"}, {file = "pydantic_core-2.41.5-cp39-cp39-win_amd64.whl", hash = "sha256:e4f4a984405e91527a0d62649ee21138f8e3d0ef103be488c1dc11a80d7f184b"}, {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034"}, {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c"}, {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2"}, {file = "pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad"}, {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd"}, {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc"}, {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56"}, {file = "pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963"}, {file = "pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f"}, {file = "pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51"}, {file = "pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e"}, ] [package.dependencies] typing-extensions = ">=4.14.1" [[package]] name = "pygments" version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" groups = ["main", "dev", "test"] files = [ {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pytest" version = "9.0.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.10" groups = ["main", "test"] files = [ {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"}, {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"}, ] [package.dependencies] colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} iniconfig = ">=1.0.1" packaging = ">=22" pluggy = ">=1.5,<2" pygments = ">=2.7.2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-benchmark" version = "5.2.3" description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." optional = false python-versions = ">=3.9" groups = ["test"] files = [ {file = "pytest_benchmark-5.2.3-py3-none-any.whl", hash = "sha256:bc839726ad20e99aaa0d11a127445457b4219bdb9e80a1afc4b51da7f96b0803"}, {file = "pytest_benchmark-5.2.3.tar.gz", hash = "sha256:deb7317998a23c650fd4ff76e1230066a76cb45dcece0aca5607143c619e7779"}, ] [package.dependencies] py-cpuinfo = "*" pytest = ">=8.1" [package.extras] aspect = ["aspectlib"] elasticsearch = ["elasticsearch"] histogram = ["pygal", "pygaljs", "setuptools"] [[package]] name = "pytest-xdist" version = "3.8.0" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false python-versions = ">=3.9" groups = ["test"] files = [ {file = "pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88"}, {file = "pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1"}, ] [package.dependencies] execnet = ">=2.1" pytest = ">=7.0.0" [package.extras] psutil = ["psutil (>=3.0)"] setproctitle = ["setproctitle"] testing = ["filelock"] [[package]] name = "pywin32-ctypes" version = "0.2.3" description = "A (partial) reimplementation of pywin32 using ctypes/cffi" optional = false python-versions = ">=3.6" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"win32\"" files = [ {file = "pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755"}, {file = "pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8"}, ] [[package]] name = "readme-renderer" version = "44.0" description = "readme_renderer is a library for rendering readme descriptions for Warehouse" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151"}, {file = "readme_renderer-44.0.tar.gz", hash = "sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1"}, ] [package.dependencies] docutils = ">=0.21.2" nh3 = ">=0.2.14" Pygments = ">=2.5.1" [package.extras] md = ["cmarkgfm (>=0.8.0)"] [[package]] name = "requests" version = "2.32.5" description = "Python HTTP for Humans." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, ] [package.dependencies] certifi = ">=2017.4.17" charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["dev"] files = [ {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, ] [package.dependencies] requests = ">=2.0.1,<3.0.0" [[package]] name = "rfc3986" version = "2.0.0" description = "Validating URI References per RFC 3986" optional = false python-versions = ">=3.7" groups = ["dev"] files = [ {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"}, {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"}, ] [package.extras] idna2008 = ["idna"] [[package]] name = "rich" version = "14.2.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" groups = ["dev"] files = [ {file = "rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd"}, {file = "rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4"}, ] [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "ruff" version = "0.14.13" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ {file = "ruff-0.14.13-py3-none-linux_armv6l.whl", hash = "sha256:76f62c62cd37c276cb03a275b198c7c15bd1d60c989f944db08a8c1c2dbec18b"}, {file = "ruff-0.14.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:914a8023ece0528d5cc33f5a684f5f38199bbb566a04815c2c211d8f40b5d0ed"}, {file = "ruff-0.14.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d24899478c35ebfa730597a4a775d430ad0d5631b8647a3ab368c29b7e7bd063"}, {file = "ruff-0.14.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9aaf3870f14d925bbaf18b8a2347ee0ae7d95a2e490e4d4aea6813ed15ebc80e"}, {file = "ruff-0.14.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac5b7f63dd3b27cc811850f5ffd8fff845b00ad70e60b043aabf8d6ecc304e09"}, {file = "ruff-0.14.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2b1097750d90ba82ce4ba676e85230a0ed694178ca5e61aa9b459970b3eb9"}, {file = "ruff-0.14.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7d0bf87705acbbcb8d4c24b2d77fbb73d40210a95c3903b443cd9e30824a5032"}, {file = "ruff-0.14.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3eb5da8e2c9e9f13431032fdcbe7681de9ceda5835efee3269417c13f1fed5c"}, {file = "ruff-0.14.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642442b42957093811cd8d2140dfadd19c7417030a7a68cf8d51fcdd5f217427"}, {file = "ruff-0.14.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4acdf009f32b46f6e8864af19cbf6841eaaed8638e65c8dac845aea0d703c841"}, {file = "ruff-0.14.13-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:591a7f68860ea4e003917d19b5c4f5ac39ff558f162dc753a2c5de897fd5502c"}, {file = "ruff-0.14.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:774c77e841cc6e046fc3e91623ce0903d1cd07e3a36b1a9fe79b81dab3de506b"}, {file = "ruff-0.14.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:61f4e40077a1248436772bb6512db5fc4457fe4c49e7a94ea7c5088655dd21ae"}, {file = "ruff-0.14.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6d02f1428357fae9e98ac7aa94b7e966fd24151088510d32cf6f902d6c09235e"}, {file = "ruff-0.14.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e399341472ce15237be0c0ae5fbceca4b04cd9bebab1a2b2c979e015455d8f0c"}, {file = "ruff-0.14.13-py3-none-win32.whl", hash = "sha256:ef720f529aec113968b45dfdb838ac8934e519711da53a0456038a0efecbd680"}, {file = "ruff-0.14.13-py3-none-win_amd64.whl", hash = "sha256:6070bd026e409734b9257e03e3ef18c6e1a216f0435c6751d7a8ec69cb59abef"}, {file = "ruff-0.14.13-py3-none-win_arm64.whl", hash = "sha256:7ab819e14f1ad9fe39f246cfcc435880ef7a9390d81a2b6ac7e01039083dd247"}, {file = "ruff-0.14.13.tar.gz", hash = "sha256:83cd6c0763190784b99650a20fec7633c59f6ebe41c5cc9d45ee42749563ad47"}, ] [[package]] name = "secretstorage" version = "3.5.0" description = "Python bindings to FreeDesktop.org Secret Service API" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" files = [ {file = "secretstorage-3.5.0-py3-none-any.whl", hash = "sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137"}, {file = "secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be"}, ] [package.dependencies] cryptography = ">=2.0" jeepney = ">=0.6" [[package]] name = "semver" version = "3.0.4" description = "Python helper for Semantic Versioning (https://semver.org)" optional = false python-versions = ">=3.7" groups = ["dev"] files = [ {file = "semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746"}, {file = "semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602"}, ] [[package]] name = "setuptools" version = "80.9.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922"}, {file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "setuptools-scm" version = "9.2.2" description = "the blessed package to manage your versions by scm tags" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ {file = "setuptools_scm-9.2.2-py3-none-any.whl", hash = "sha256:30e8f84d2ab1ba7cb0e653429b179395d0c33775d54807fc5f1dd6671801aef7"}, {file = "setuptools_scm-9.2.2.tar.gz", hash = "sha256:1c674ab4665686a0887d7e24c03ab25f24201c213e82ea689d2f3e169ef7ef57"}, ] [package.dependencies] packaging = ">=20" setuptools = "*" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] rich = ["rich"] [[package]] name = "tomli" version = "2.4.0" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["main", "dev", "test"] files = [ {file = "tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867"}, {file = "tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9"}, {file = "tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95"}, {file = "tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76"}, {file = "tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d"}, {file = "tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576"}, {file = "tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a"}, {file = "tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa"}, {file = "tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614"}, {file = "tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1"}, {file = "tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8"}, {file = "tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a"}, {file = "tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1"}, {file = "tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b"}, {file = "tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51"}, {file = "tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729"}, {file = "tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da"}, {file = "tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3"}, {file = "tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0"}, {file = "tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e"}, {file = "tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4"}, {file = "tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e"}, {file = "tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c"}, {file = "tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f"}, {file = "tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86"}, {file = "tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87"}, {file = "tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132"}, {file = "tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6"}, {file = "tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc"}, {file = "tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66"}, {file = "tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d"}, {file = "tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702"}, {file = "tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8"}, {file = "tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776"}, {file = "tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475"}, {file = "tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2"}, {file = "tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9"}, {file = "tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0"}, {file = "tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df"}, {file = "tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d"}, {file = "tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f"}, {file = "tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b"}, {file = "tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087"}, {file = "tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd"}, {file = "tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4"}, {file = "tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a"}, {file = "tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c"}, ] markers = {main = "python_version == \"3.10\"", dev = "python_version == \"3.10\"", test = "python_full_version <= \"3.11.0a6\""} [[package]] name = "twine" version = "6.2.0" description = "Collection of utilities for publishing packages on PyPI" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "twine-6.2.0-py3-none-any.whl", hash = "sha256:418ebf08ccda9a8caaebe414433b0ba5e25eb5e4a927667122fbe8f829f985d8"}, {file = "twine-6.2.0.tar.gz", hash = "sha256:e5ed0d2fd70c9959770dce51c8f39c8945c574e18173a7b81802dab51b4b75cf"}, ] [package.dependencies] id = "*" keyring = {version = ">=21.2.0", markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\""} packaging = ">=24.0" readme-renderer = ">=35.0" requests = ">=2.20" requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" rfc3986 = ">=1.4.0" rich = ">=12.0.0" urllib3 = ">=1.26.0" [package.extras] keyring = ["keyring (>=21.2.0)"] [[package]] name = "typing-extensions" version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["main", "dev", "test"] files = [ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] markers = {main = "python_version == \"3.10\"", test = "python_version == \"3.10\""} [[package]] name = "typing-inspection" version = "0.4.2" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, ] [package.dependencies] typing-extensions = ">=4.12.0" [[package]] name = "urllib3" version = "2.6.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, ] [package.extras] brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "zipp" version = "3.23.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\"" files = [ {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.10" content-hash = "8afb6bdd2fba5f323b1d4c9171c8521223fea7ffa46cc2607299f264a8b6ddbb" syrupy-project-syrupy-7096efd/poetry.toml000066400000000000000000000000401513542711300207430ustar00rootroot00000000000000[virtualenvs] in-project = true syrupy-project-syrupy-7096efd/pyproject.toml000066400000000000000000000036561513542711300214600ustar00rootroot00000000000000[project] name = 'syrupy' license = 'MIT' dynamic = [ "version", "classifiers" ] description = 'Pytest Snapshot Test Utility' readme = 'README.md' requires-python = ">=3.10" authors = [{name = 'Noah Ulster'}] dependencies = [ "pytest (>= 8.0.0)" ] [project.urls] repository = 'https://github.com/syrupy-project/syrupy' [tool.poetry] version = "5.1.0" packages = [{ include = 'syrupy', from = 'src' }] classifiers = [ 'Development Status :: 5 - Production/Stable', 'Framework :: Pytest', 'Intended Audience :: Developers', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', 'Topic :: Software Development :: Libraries', 'Topic :: Software Development :: Testing', 'Topic :: Utilities', ] include = ['src/syrupy/**/*'] [tool.poetry.plugins.pytest11] syrupy = 'syrupy' [tool.poetry.group.test.dependencies] invoke = "^2.2.0" coverage = { version = "^7.6.12", extras = ['toml'] } pytest-benchmark = "^5.1.0" pytest-xdist = "^3.6.1" [tool.poetry.group.dev.dependencies] mypy = "^1.15.0" py-githooks = '^1.1.1' twine = '^6.1.0' semver = '^3.0.4' setuptools-scm = '^9.0.0' debugpy = '^1.8.12' ruff = '>=0.9.6' pydantic = "^2.12.5" attrs = "^25.0.0" [tool.pytest.ini_options] addopts = '-p syrupy -p pytester -p no:legacypath --doctest-modules' testpaths = ['tests'] xfail_strict = true [tool.coverage.run] source = ['./src'] [tool.coverage.report] exclude_lines = ['pragma: no-cover', 'if TYPE_CHECKING:', '@abstractmethod'] [tool.ruff] line-length = 88 unsafe-fixes = true [tool.ruff.lint] extend-select = [ "A", # flake8-builtins "B", # flake8-bugbear "C4", # flake8-comprehensions "I", # isort "UP", # pyupgrade ] [build-system] requires = ['poetry-core>=2.2.1'] build-backend = 'poetry.core.masonry.api' syrupy-project-syrupy-7096efd/script/000077500000000000000000000000001513542711300200365ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/script/bootstrap000077500000000000000000000021611513542711300220010ustar00rootroot00000000000000# Based on conventions from https://github.com/github/scripts-to-rule-them-all # script/bootstrap: Resolve all dependencies that the application requires to # run. # If not in CI, we have to install the correct python versions if [[ -z $CI ]]; then # pyenv update pyenv install --skip-existing || return fi POETRY_HOME=`pwd`/.poetry POETRY_BIN="$POETRY_HOME/bin/poetry" if [[ ! -z $CI ]]; then POETRY_BIN=poetry fi if [[ -z $CI ]]; then # FIXME: There must be a better way to install this per project rather than globally? curl -sSL https://install.python-poetry.org | POETRY_HOME="$POETRY_HOME" POETRY_VERSION=$(head -1 .poetry-version) python3 - $POETRY_BIN env use $(head -1 .python-version) fi if [[ -z $SKIP_DEPS ]]; then $POETRY_BIN install --with=dev --with=test --no-interaction fi if [[ -z $CI ]]; then . ./.venv/bin/activate if [[ ! "$PATH" =~ "$POETRY_HOME" ]]; then export PATH="$POETRY_HOME/bin:$PATH" fi fi if [[ -z $CI ]]; then python -m python_githooks if ! complete -p invoke &>/dev/null; then source <(inv --print-completion-script bash) fi fi syrupy-project-syrupy-7096efd/script/demo000077500000000000000000000101351513542711300207100ustar00rootroot00000000000000#!/usr/bin/env osascript -- Dependencies -- python -- pip -- venv -- asciinema -- svg-term-cli tell application "Terminal" activate delay 1 my clearScreen(1) -- Ensure folder is ready and reset my execInput({"rm ", 27, "r ~/syrupy_example"}, 1) my execInput({"mkdir ", 27, "p ~/syrupy_example"}, 1) my execInput({"cd ~/syrupy_example"}, 1) -- Activate venv my execPythonCmd({"venv venv"}, 4) my execInput({"source venv/bin/activate"}, 1) my clearScreen(1) -- Start recording my execInput({"asciinema rec demo", 47, "cast"}, 3) my clearScreen(1) -- Install pytest and syrupy my execPipInstall("pytest syrupy", 2) -- Write initial snapshot test file my createTestFile() my execPytestVerbose() my execPytestSnapshotUpdate() -- Show generated snapshots my execListFiles(".") my execListFiles("__snapshots__") my readTestFileSnapshot() -- Modify test file my updateTestFile1() my execPytestVerbose() my execPytestSnapshotUpdate() -- Modify test file my updateTestFile2() my execPytestVerbose() my execPytestSnapshotUpdate() -- Show updated snapshots my readTestFileSnapshot() my clearScreen(1) -- Stop recording my execInput({"exit"}, 1) my sendInput({"cat demo", 47, "cast | svg", 27, "term "}, 1) my execInput({27, 27, "window ", 27, 27, "out usage_demo", 47, "svg"}, 0) end tell on clearScreen(wait) tell application "System Events" tell application process "Terminal" keystroke "k" using command down end tell end tell delay wait end clearScreen on inputDelay(n) delay random number from 0.003 to 0.1 end inputDelay on sendInput(input, n) set inputs to {} repeat n times set inputs to inputs & input end repeat tell application "System Events" tell application process "Terminal" set frontmost to true repeat with input in inputs if class of input is integer then key code input my inputDelay(n) else repeat with char in input keystroke char my inputDelay(n) end repeat end if end repeat end tell end tell end sendInput on execInput(cmds, wait) sendInput(cmds, 1) tell application "System Events" tell application process "Terminal" keystroke return end tell end tell delay wait end execInput on execListFiles(folder) my execInput({"ls ", 27, "l ", folder}, 2) end execListFiles on execPythonCmd(cmd, wait) execInput({"python ", 27, "m "} & cmd, wait) end execPythonCmd on execPipInstall(packages, wait) my execPythonCmd({"pip install ", 27, "U ", packages}, wait) end execPipInstall on execPytestVerbose() my execPythonCmd({"pytest ", 27, "vv"}, 2) end execPytestSnapshotUpdate on execPytestSnapshotUpdate() my execPythonCmd({"pytest ", 27, 27, "snapshot", 27, "update"}, 2) end execPytestSnapshotUpdate on createTestFile() my execInput({"vim test_file", 47, "py"}, 1) my execInput({"i","def test_case(snapshot):"}, 1) my execInput({" assert 'syrupy is amazing!' == snapshot"}, 1) my execInput({""}, 1) my execInput({"def test_other(snapshot):"}, 1) my execInput({" assert 'this is amazing' == snapshot"}, 1) my execInput({" assert dict(key='value', hmm=[1,2]) == snapshot"}, 1) my execInput({53}, 1) my execInput({":wq"}, 1) end createFile on readTestFileSnapshot() my execInput({"less __snapshots__/test_file", 47, "ambr"}, 3) my execInput({":q"}, 1) end readTestFileSnapshot on updateTestFile1() my execInput({"vim test_file", 47, "py"}, 1) my sendInput({125}, 4) my sendInput({124}, 27) my sendInput({"i", "!", 53}, 1) my execInput({":wq"}, 1) end updateTestFile1 on updateTestFile2() my execInput({"vim test_file", 47, "py"}, 1) my sendInput({125}, 5) my sendInput({124}, 36) my sendInput({"i", 51, 51, 53}, 1) my execInput({":wq"}, 1) end updateTestFile1 syrupy-project-syrupy-7096efd/src/000077500000000000000000000000001513542711300173215ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/000077500000000000000000000000001513542711300206745ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/__init__.py000066400000000000000000000206461513542711300230150ustar00rootroot00000000000000import argparse import contextlib import sys from collections.abc import Iterator from functools import lru_cache from gettext import gettext from typing import ( Any, Optional, ) import pytest from syrupy.extensions.base import SnapshotCollectionStorage from .assertion import DiffMode, SnapshotAssertion from .constants import DISABLE_COLOR_ENV_VAR from .exceptions import FailedToLoadModuleMember from .extensions import DEFAULT_EXTENSION from .location import PyTestLocation from .patches.pycharm_diff import patch_pycharm_diff from .session import SnapshotSession from .terminal import ( received_style, reset, snapshot_style, ) from .utils import ( env_context, import_module_member, is_xdist_worker, ) # Global to have access to the session in `pytest_runtest_logfinish` hook _syrupy: Optional["SnapshotSession"] = None @lru_cache(maxsize=1) def __import_extension(value: str | None) -> Any: if not value: return DEFAULT_EXTENSION try: return import_module_member(value) except FailedToLoadModuleMember as e: raise argparse.ArgumentTypeError(e) from e def pytest_addoption(parser: "pytest.Parser") -> None: """ Exposes snapshot plugin configuration to pytest. https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_addoption """ group = parser.getgroup("syrupy") group.addoption( "--snapshot-update", action="store_true", default=False, dest="update_snapshots", help="Update snapshots", ) group.addoption( "--snapshot-warn-unused", action="store_true", default=False, dest="warn_unused_snapshots", help="Do not fail on unused snapshots", ) group.addoption( "--snapshot-details", action="store_true", default=False, dest="include_snapshot_details", help="Include details of unused snapshots in the final report", ) # We lazy evaluate the default extension since pytest-xdist requires # all pytest options to be serializable. group.addoption( "--snapshot-default-extension", default=None, dest="default_extension", help="Specify the default snapshot extension", ) group.addoption( "--snapshot-no-colors", action="store_true", default=not sys.stdout.isatty(), dest="no_colors", help="Disable test results output highlighting", ) group.addoption( "--snapshot-patch-pycharm-diff", action="store_true", default=False, dest="patch_pycharm_diff", help="Patch PyCharm diff", ) group.addoption( "--snapshot-diff-mode", default=DiffMode.DETAILED, choices=list(DiffMode), type=DiffMode, dest="diff_mode", help="Controls how diffs are represented on snapshot assertion failure", ) group.addoption( "--snapshot-ignore-file-extensions", dest="ignore_file_extensions", help="Comma separated list of file extensions to ignore when discovering snapshots", type=lambda v: v.split(","), ) group.addoption( "--snapshot-dirname", dest="snapshot_dirname", default="__snapshots__", help="Directory name to use to store snapshots", ) def __terminal_color( config: "pytest.Config", ) -> "contextlib.AbstractContextManager[None]": if config.option.no_colors: env = { DISABLE_COLOR_ENV_VAR: "true", } return env_context(**env) else: # No-op to avoid unnecessary env updates return contextlib.nullcontext() @pytest.hookimpl(tryfirst=True) def pytest_assertrepr_compare( config: "pytest.Config", op: str, left: Any, right: Any ) -> list[str] | None: """ Return explanation for comparisons in failing assert expressions. https://docs.pytest.org/en/latest/reference.html#pytest.hookspec.pytest_assertrepr_compare """ if not isinstance(left, SnapshotAssertion) and not isinstance( right, SnapshotAssertion ): # Shortcut to minimise overhead in the case of other unrelated assertions return None with __terminal_color(config): received_name = received_style("[+ received]") def snapshot_name(name: str) -> str: return snapshot_style(f"[- {name}]") if isinstance(left, SnapshotAssertion): assert_msg = reset(f"{snapshot_name(left.name)} {op} {received_name}") return [assert_msg] + left.get_assert_diff( diff_mode=config.option.diff_mode ) elif isinstance(right, SnapshotAssertion): assert_msg = reset(f"{received_name} {op} {snapshot_name(right.name)}") return [assert_msg] + right.get_assert_diff( diff_mode=config.option.diff_mode ) return None def pytest_sessionstart(session: Any) -> None: """ Initialize snapshot session before tests are collected and ran. https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_sessionstart """ # Override the snapshot dirname in the base SnapshotCollectionStorage class with the pytest config. SnapshotCollectionStorage.snapshot_dirname = session.config.option.snapshot_dirname session.config._syrupy = SnapshotSession( pytest_session=session, ignore_file_extensions=session.config.option.ignore_file_extensions, ) global _syrupy _syrupy = session.config._syrupy session.config._syrupy.start() def pytest_collection_modifyitems( session: Any, config: Any, items: list["pytest.Item"] ) -> None: """ After tests are collected and before any modification is performed. https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_collection_modifyitems """ config._syrupy.collect_items(items) def pytest_collection_finish(session: Any) -> None: """ After collection has been performed and modified. https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_collection_finish """ session.config._syrupy.select_items(session.items) def pytest_runtest_logreport(report: pytest.TestReport) -> None: """ After each of the setup, call and teardown runtest phases of an item. https://docs.pytest.org/en/8.0.x/reference/reference.html#pytest.hookspec.pytest_runtest_logreport """ global _syrupy # The outcome will be passed in the teardown phase even if skipped if _syrupy and report.when != "teardown": _syrupy.ran_item(report.nodeid, report.outcome) @pytest.hookimpl(tryfirst=True) def pytest_sessionfinish(session: "pytest.Session", exitstatus: int) -> None: """ Finish session run and set exit status. https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_sessionfinish """ session.exitstatus |= exitstatus | session.config._syrupy.finish() # type: ignore[attr-defined] # noqa: E501 def pytest_terminal_summary( terminalreporter: Any, exitstatus: int, config: Any ) -> None: """ Add syrupy report to pytest. https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_terminal_summary """ if is_xdist_worker(): # There is no need for pytest-xdist worker processes to generate a # summary and doing so has been seen to cause CPU spin and delays to # test run shutdown. return with __terminal_color(config): is_printing_report = False for line in terminalreporter.config._syrupy.report.lines: has_report_line = bool(line.strip()) if has_report_line and not is_printing_report: terminalreporter.write_sep("-", gettext("snapshot report summary")) is_printing_report = True if is_printing_report: terminalreporter.write_line(line) @pytest.fixture def snapshot(request: "pytest.FixtureRequest") -> "SnapshotAssertion": return SnapshotAssertion( update_snapshots=request.config.option.update_snapshots, extension_class=__import_extension(request.config.option.default_extension), test_location=PyTestLocation(request.node), session=request.session.config._syrupy, # type: ignore ) @pytest.fixture(scope="session", autouse=True) def _syrupy_apply_ide_patches(request: "pytest.FixtureRequest") -> Iterator[None]: if request.config.option.patch_pycharm_diff: with patch_pycharm_diff(): yield else: yield syrupy-project-syrupy-7096efd/src/syrupy/assertion.py000066400000000000000000000312571513542711300232650ustar00rootroot00000000000000import traceback from collections import namedtuple from collections.abc import Callable from dataclasses import ( dataclass, field, ) from enum import Enum from gettext import gettext from typing import ( TYPE_CHECKING, Any, Optional, ) from .exceptions import ( SnapshotDoesNotExist, TaintedSnapshotError, ) from .extensions.amber.serializer import Repr if TYPE_CHECKING: from .extensions.base import AbstractSyrupyExtension from .location import PyTestLocation from .session import SnapshotSession from .types import ( PropertyFilter, PropertyMatcher, SerializableData, SerializedData, SnapshotIndex, ) class DiffMode(Enum): DETAILED = "detailed" DISABLED = "disabled" def __str__(self) -> str: return self.value @dataclass class AssertionResult: snapshot_location: str snapshot_name: str asserted_data: Optional["SerializedData"] recalled_data: Optional["SerializedData"] created: bool updated: bool success: bool exception: Exception | None test_location: "PyTestLocation" @property def final_data(self) -> Optional["SerializedData"]: if self.created or self.updated: return self.asserted_data return self.recalled_data @dataclass(eq=False, order=False, repr=False) class SnapshotAssertion: session: "SnapshotSession" extension_class: type["AbstractSyrupyExtension"] test_location: "PyTestLocation" update_snapshots: bool include: Optional["PropertyFilter"] = None exclude: Optional["PropertyFilter"] = None matcher: Optional["PropertyMatcher"] = None _exclude: Optional["PropertyFilter"] = field( init=False, default=None, ) _include: Optional["PropertyFilter"] = field( init=False, default=None, ) _custom_index: str | None = field( init=False, default=None, ) _extension: Optional["AbstractSyrupyExtension"] = field( init=False, default=None, ) _executions: int = field( init=False, default=0, ) _execution_results: dict[int, "AssertionResult"] = field( init=False, default_factory=dict, ) _execution_name_index: dict["SnapshotIndex", int] = field( init=False, default_factory=dict ) _matcher: Optional["PropertyMatcher"] = field( init=False, default=None, ) _post_assert_actions: list[Callable[..., None]] = field( init=False, default_factory=list, ) def __post_init__(self) -> None: self.session.register_request(self) self._include = self.include self._exclude = self.exclude self._matcher = self.matcher def __init_extension( self, extension_class: type["AbstractSyrupyExtension"] ) -> "AbstractSyrupyExtension": return extension_class() @property def extension(self) -> "AbstractSyrupyExtension": if not self._extension: self._extension = self.__init_extension(self.extension_class) return self._extension @property def num_executions(self) -> int: return int(self._executions) @property def executions(self) -> dict[int, "AssertionResult"]: return self._execution_results @property def index(self) -> "SnapshotIndex": if self._custom_index: return self._custom_index return self.num_executions @property def name(self) -> str: return self._custom_index or "snapshot" @property def __repr(self) -> "SerializableData": SnapshotAssertionRepr = namedtuple( # type: ignore "SnapshotAssertion", ["name", "num_executions"] ) execution_index = ( self._custom_index and self._execution_name_index.get(self._custom_index) ) or self.num_executions - 1 assertion_result = self.executions.get(execution_index) return ( Repr(str(assertion_result.final_data)) if execution_index in self.executions and assertion_result and assertion_result.final_data is not None else SnapshotAssertionRepr( name=self.name, num_executions=self.num_executions, ) ) @property def __matcher(self) -> "PropertyMatcher": """ Get matcher that replaces `SnapshotAssertion` with one that can be serialized """ def _matcher(**kwargs: Any) -> Optional["SerializableData"]: maybe_assertion = kwargs.get("data") if isinstance(maybe_assertion, SnapshotAssertion): return maybe_assertion.__repr if self._matcher: return self._matcher(**kwargs) return maybe_assertion return _matcher def with_defaults( self, *, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, extension_class: type["AbstractSyrupyExtension"] | None = None, ) -> "SnapshotAssertion": """ Create new snapshot assertion fixture with provided values. This preserves provided values between assertions. """ return self.__class__( matcher=matcher or self.matcher, include=include or self.include, exclude=exclude or self.exclude, update_snapshots=self.update_snapshots, test_location=self.test_location, extension_class=extension_class or self.extension_class, session=self.session, ) def use_extension( self, extension_class: type["AbstractSyrupyExtension"] | None = None ) -> "SnapshotAssertion": """ Create new snapshot assertion fixture with the same options but using specified extension class. This does not preserve assertion index or state. """ return self.with_defaults(extension_class=extension_class) def assert_match(self, data: "SerializableData") -> None: assert self == data def _serialize(self, data: "SerializableData") -> "SerializedData": return self.extension.serialize( data, exclude=self._exclude, include=self._include, matcher=self.__matcher ) def get_assert_diff( self, *, diff_mode: "DiffMode" = DiffMode.DETAILED ) -> list[str]: assertion_result = self._execution_results[self.num_executions - 1] if assertion_result.exception: if isinstance(assertion_result.exception, (TaintedSnapshotError,)): lines = [ gettext( "This snapshot needs to be regenerated. " "This is typically due to a major Syrupy update." ) ] else: lines = [ line for lines in traceback.format_exception( assertion_result.exception.__class__, assertion_result.exception, assertion_result.exception.__traceback__, ) for line in lines.splitlines() ] # Rotate to place exception with message at first line return lines[-1:] + lines[:-1] snapshot_data = assertion_result.recalled_data serialized_data = ( assertion_result.asserted_data if assertion_result.asserted_data is not None else "" ) diff: list[str] = [] if snapshot_data is None: diff.append( gettext("Snapshot '{}' does not exist!").format( assertion_result.snapshot_name ) ) if not assertion_result.success: snapshot_data = snapshot_data if snapshot_data is not None else "" if diff_mode == DiffMode.DETAILED: diff.extend(self.extension.diff_lines(serialized_data, snapshot_data)) return diff def __with_prop(self, prop_name: str, prop_value: Any) -> None: _value = getattr(self, prop_name, None) setattr(self, prop_name, prop_value) self._post_assert_actions.append(lambda: setattr(self, prop_name, _value)) def __call__( self, *, diff: Optional["SnapshotIndex"] = None, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, extension_class: type["AbstractSyrupyExtension"] | None = None, matcher: Optional["PropertyMatcher"] = None, name: Optional["SnapshotIndex"] = None, ) -> "SnapshotAssertion": """ Modifies assertion instance options """ if exclude: self.__with_prop("_exclude", exclude) if include: self.__with_prop("_include", include) if extension_class: self.__with_prop("_extension", self.__init_extension(extension_class)) if matcher: self.__with_prop("_matcher", matcher) if name: self.__with_prop("_custom_index", name) if diff is not None: self.__with_prop("_snapshot_diff", diff) return self def __repr__(self) -> str: return str(self.__repr) def __eq__(self, other: "SerializableData") -> bool: return self._assert(other) def _assert(self, data: "SerializableData") -> bool: snapshot_location = self.extension.get_location( test_location=self.test_location, index=self.index ) snapshot_name = self.extension.get_snapshot_name( test_location=self.test_location, index=self.index ) snapshot_data: SerializedData | None = None serialized_data: SerializedData | None = None matches = False assertion_success = False assertion_exception = None try: snapshot_data, tainted = self._recall_data(index=self.index) serialized_data = self._serialize(data) snapshot_diff = getattr(self, "_snapshot_diff", None) if snapshot_diff is not None: snapshot_data_diff, _ = self._recall_data(index=snapshot_diff) if snapshot_data_diff is None: raise SnapshotDoesNotExist() serialized_data = self.extension.diff_snapshots( serialized_data=serialized_data, snapshot_data=snapshot_data_diff, ) matches = ( not tainted and snapshot_data is not None and self.extension.matches( serialized_data=serialized_data, snapshot_data=snapshot_data ) ) assertion_success = matches if not matches: if self.update_snapshots: self.session.queue_snapshot_write( extension=self.extension, test_location=self.test_location, data=serialized_data, index=self.index, ) assertion_success = True elif tainted: raise TaintedSnapshotError return assertion_success except Exception as e: assertion_exception = e return False finally: snapshot_created = snapshot_data is None and assertion_success snapshot_updated = matches is False and assertion_success self._execution_name_index[self.index] = self._executions self._execution_results[self._executions] = AssertionResult( asserted_data=serialized_data, created=snapshot_created, exception=assertion_exception, recalled_data=snapshot_data, snapshot_location=snapshot_location, snapshot_name=snapshot_name, success=assertion_success, test_location=self.test_location, updated=snapshot_updated, ) self._executions += 1 self._post_assert() def _post_assert(self) -> None: """ Restores assertion instance options """ while self._post_assert_actions: self._post_assert_actions.pop()() def _recall_data( self, index: "SnapshotIndex" ) -> tuple[Optional["SerializableData"], bool]: try: return ( self.session.recall_snapshot(self.extension, self.test_location, index), False, ) except SnapshotDoesNotExist: return None, False except TaintedSnapshotError as e: return e.snapshot_data, True syrupy-project-syrupy-7096efd/src/syrupy/constants.py000066400000000000000000000007271513542711300232700ustar00rootroot00000000000000SNAPSHOT_EMPTY_COLLECTION_KEY = "empty snapshot collection" SNAPSHOT_UNKNOWN_COLLECTION_KEY = "unknown snapshot collection" EXIT_STATUS_FAIL_UNUSED = 1 SYMBOL_ELLIPSIS = "..." # U+2026 SYMBOL_NEW_LINE = "␤" # U+2424 SYMBOL_CARRIAGE = "␍" # U+240D DIFF_LINE_COUNT_LIMIT = 100 DIFF_LINE_WIDTH_LIMIT = 1000 DISABLE_COLOR_ENV_VAR = "ANSI_COLORS_DISABLED" DISABLE_COLOR_ENV_VARS = {DISABLE_COLOR_ENV_VAR, "NO_COLOR"} PYTEST_NODE_SEP = "::" TEXT_ENCODING = "utf-8" syrupy-project-syrupy-7096efd/src/syrupy/data.py000066400000000000000000000102041513542711300221540ustar00rootroot00000000000000from collections.abc import Iterator from dataclasses import ( dataclass, field, ) from typing import ( TYPE_CHECKING, Optional, ) from .constants import ( SNAPSHOT_EMPTY_COLLECTION_KEY, SNAPSHOT_UNKNOWN_COLLECTION_KEY, ) if TYPE_CHECKING: from .types import SerializedData @dataclass(frozen=True) class Snapshot: name: str data: Optional["SerializedData"] = None # A tainted snapshot needs to be regenerated tainted: bool | None = field(default=None) @dataclass(frozen=True) class SnapshotEmpty(Snapshot): name: str = SNAPSHOT_EMPTY_COLLECTION_KEY @dataclass(frozen=True) class SnapshotUnknown(Snapshot): name: str = SNAPSHOT_UNKNOWN_COLLECTION_KEY @dataclass class SnapshotCollection: """A collection of snapshots at a save location""" location: str _snapshots: dict[str, "Snapshot"] = field(default_factory=dict) # A tainted collection needs to be regenerated tainted: bool | None = field(default=None) @property def has_snapshots(self) -> bool: return bool(self._snapshots) def get(self, snapshot_name: str) -> Optional["Snapshot"]: return self._snapshots.get(snapshot_name) def add(self, snapshot: "Snapshot") -> None: self._snapshots[snapshot.name] = snapshot if snapshot.name != SNAPSHOT_EMPTY_COLLECTION_KEY: self.remove(SNAPSHOT_EMPTY_COLLECTION_KEY) def merge(self, snapshot_collection: "SnapshotCollection") -> None: for snapshot in snapshot_collection: self.add(snapshot) def remove(self, snapshot_name: str) -> None: self._snapshots.pop(snapshot_name, None) def __len__(self) -> int: return len(self._snapshots) def __iter__(self) -> Iterator["Snapshot"]: return iter(self._snapshots.values()) @dataclass class SnapshotEmptyCollection(SnapshotCollection): """This is a saved collection that is known to be empty and thus can be removed""" _snapshots: dict[str, "Snapshot"] = field( default_factory=lambda: {SnapshotEmpty().name: SnapshotEmpty()} ) @property def has_snapshots(self) -> bool: return False @dataclass class SnapshotUnknownCollection(SnapshotCollection): """This is a saved collection that is unclaimed by any extension currently in use""" _snapshots: dict[str, "Snapshot"] = field( default_factory=lambda: {SnapshotUnknown().name: SnapshotUnknown()} ) @dataclass class SnapshotCollections: _snapshot_collections: dict[str, "SnapshotCollection"] = field(default_factory=dict) def get(self, location: str) -> Optional["SnapshotCollection"]: return self._snapshot_collections.get(location) def add(self, snapshot_collection: "SnapshotCollection") -> None: self._snapshot_collections[snapshot_collection.location] = snapshot_collection def update(self, snapshot_collection: "SnapshotCollection") -> None: snapshot_collection_to_update = self.get(snapshot_collection.location) if snapshot_collection_to_update is None: snapshot_collection_to_update = SnapshotCollection( location=snapshot_collection.location ) self.add(snapshot_collection_to_update) snapshot_collection_to_update.merge(snapshot_collection) def merge(self, snapshot_collections: "SnapshotCollections") -> None: for snapshot_collection in snapshot_collections: self.update(snapshot_collection) def __iter__(self) -> Iterator["SnapshotCollection"]: return iter(self._snapshot_collections.values()) def __contains__(self, key: str) -> bool: return key in self._snapshot_collections @dataclass class DiffedLine: a: str | None = None b: str | None = None c: list[str] = field(default_factory=list) diff_a: str = "" diff_b: str = "" @property def has_snapshot(self) -> bool: return self.a is not None @property def has_received(self) -> bool: return self.b is not None @property def is_complete(self) -> bool: return self.has_snapshot and self.has_received @property def is_context(self) -> bool: return bool(self.c) syrupy-project-syrupy-7096efd/src/syrupy/exceptions.py000066400000000000000000000010231513542711300234230ustar00rootroot00000000000000from typing import Optional from syrupy.types import SerializedData class SnapshotDoesNotExist(Exception): """Snapshot does not exist""" class FailedToLoadModuleMember(Exception): """Failed to load specific member in a module""" class TaintedSnapshotError(Exception): """The snapshot needs to be regenerated.""" snapshot_data: Optional["SerializedData"] def __init__(self, snapshot_data: Optional["SerializedData"] = None) -> None: super().__init__() self.snapshot_data = snapshot_data syrupy-project-syrupy-7096efd/src/syrupy/extensions/000077500000000000000000000000001513542711300230735ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/extensions/__init__.py000066400000000000000000000001261513542711300252030ustar00rootroot00000000000000from .amber import AmberSnapshotExtension DEFAULT_EXTENSION = AmberSnapshotExtension syrupy-project-syrupy-7096efd/src/syrupy/extensions/amber/000077500000000000000000000000001513542711300241615ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/extensions/amber/__init__.py000066400000000000000000000052321513542711300262740ustar00rootroot00000000000000from functools import lru_cache from pathlib import Path from typing import ( TYPE_CHECKING, Any, Optional, ) from syrupy.data import SnapshotCollection from syrupy.exceptions import TaintedSnapshotError from syrupy.extensions.base import AbstractSyrupyExtension from .serializer import ( # noqa: F401 AmberDataSerializer, AmberDataSerializerPlugin, AmberDataSerializerSorted, # re-exported ) if TYPE_CHECKING: from syrupy.types import SerializableData class AmberSnapshotExtension(AbstractSyrupyExtension): """ An amber snapshot file stores data in the following format: """ file_extension = "ambr" serializer_class: type["AmberDataSerializer"] = AmberDataSerializer def serialize(self, data: "SerializableData", **kwargs: Any) -> str: """ Returns the serialized form of 'data' to be compared with the snapshot data written to disk. """ return self.serializer_class.serialize(data, **kwargs) def delete_snapshots( self, snapshot_location: str, snapshot_names: set[str] ) -> None: snapshot_collection_to_update = AmberDataSerializer.read_file(snapshot_location) for snapshot_name in snapshot_names: snapshot_collection_to_update.remove(snapshot_name) if snapshot_collection_to_update.has_snapshots: self.serializer_class.write_file(snapshot_collection_to_update) else: Path(snapshot_location).unlink() def read_snapshot_collection(self, snapshot_location: str) -> "SnapshotCollection": return self.serializer_class.read_file(snapshot_location) @classmethod @lru_cache def __cacheable_read_snapshot( cls, snapshot_location: str, cache_key: str ) -> "SnapshotCollection": return cls.serializer_class.read_file(snapshot_location) def read_snapshot_data_from_location( self, snapshot_location: str, snapshot_name: str, session_id: str ) -> Optional["SerializableData"]: snapshots = self.__cacheable_read_snapshot( snapshot_location=snapshot_location, cache_key=session_id ) snapshot = snapshots.get(snapshot_name) tainted = bool(snapshots.tainted or (snapshot and snapshot.tainted)) data = snapshot.data if snapshot else None if tainted: raise TaintedSnapshotError(snapshot_data=data) return data @classmethod def write_snapshot_collection( cls, *, snapshot_collection: "SnapshotCollection" ) -> None: cls.serializer_class.write_file(snapshot_collection, merge=True) __all__ = ["AmberSnapshotExtension", "AmberDataSerializer", "AmberDataSerializerPlugin"] syrupy-project-syrupy-7096efd/src/syrupy/extensions/amber/attrs_plugin.py000066400000000000000000000017401513542711300272500ustar00rootroot00000000000000"""Attrs plugin for Syrupy Amber serializer.""" from typing import Any import attr from syrupy.extensions.amber.serializer import ( AmberDataSerializer, AmberDataSerializerPlugin, attr_getter, ) from syrupy.types import SerializableData class AttrsPlugin(AmberDataSerializerPlugin): """A Syrupy extension that serializes attrs class instances using Amber format.""" @classmethod def is_data_serializable(cls, data: "SerializableData") -> bool: """Check if the data is an attrs class instance.""" return attr.has(type(data)) @classmethod def serialize(cls, data: "SerializableData", **kwargs: Any) -> str: """Serialize an attrs class instance into Amber format.""" keys = sorted([a.name for a in attr.fields(type(data))]) return AmberDataSerializer.serialize_custom_iterable( data=data, resolve_entries=(keys, attr_getter, None), separator="=", **kwargs, ) syrupy-project-syrupy-7096efd/src/syrupy/extensions/amber/dataclasses_plugin.py000066400000000000000000000021641513542711300304030ustar00rootroot00000000000000"""Dataclass plugin for Syrupy Amber serializer.""" import dataclasses from typing import Any from syrupy.extensions.amber.serializer import ( AmberDataSerializer, AmberDataSerializerPlugin, attr_getter, ) from syrupy.types import SerializableData class DataclassPlugin(AmberDataSerializerPlugin): """A Syrupy extension that serializes dataclass instances using Amber format.""" @classmethod def is_data_serializable(cls, data: "SerializableData") -> bool: """Check if the data is a dataclass instance. Note: Excludes dataclass types themselves, which also yield True for is_dataclass. """ return dataclasses.is_dataclass(data) and not isinstance(data, type) @classmethod def serialize(cls, data: "SerializableData", **kwargs: Any) -> str: """Serialize a dataclass instance into Amber format.""" keys = sorted([f.name for f in dataclasses.fields(data)]) return AmberDataSerializer.serialize_custom_iterable( data=data, resolve_entries=(keys, attr_getter, None), separator="=", **kwargs, ) syrupy-project-syrupy-7096efd/src/syrupy/extensions/amber/pydantic_plugin.py000066400000000000000000000020661513542711300277300ustar00rootroot00000000000000"""Pydantic plugin for Syrupy Amber serializer.""" from typing import Any from pydantic import BaseModel from syrupy.extensions.amber.serializer import ( AmberDataSerializer, AmberDataSerializerPlugin, attr_getter, ) from syrupy.types import SerializableData class PydanticPlugin(AmberDataSerializerPlugin): """A Syrupy extension that serializes Pydantic models using Amber format.""" @classmethod def is_data_serializable(cls, data: "SerializableData") -> bool: """Check if the data is a Pydantic BaseModel instance.""" return isinstance(data, BaseModel) @classmethod def serialize(cls, data: BaseModel, **kwargs: Any) -> str: """Serialize a Pydantic BaseModel instance into Amber format. Uses the model's defined fields to ensure consistent ordering. """ keys = [name for name, _ in data] return AmberDataSerializer.serialize_custom_iterable( data=data, resolve_entries=(keys, attr_getter, None), separator="=", **kwargs, ) syrupy-project-syrupy-7096efd/src/syrupy/extensions/amber/serializer.py000066400000000000000000000435411513542711300267130ustar00rootroot00000000000000import collections import inspect from abc import ABC, abstractmethod from collections import OrderedDict from collections.abc import Callable, Generator, Iterable from types import ( FunctionType, GeneratorType, MappingProxyType, ) from typing import ( TYPE_CHECKING, Any, NamedTuple, Optional, ) from syrupy.constants import ( SYMBOL_ELLIPSIS, TEXT_ENCODING, ) from syrupy.data import ( Snapshot, SnapshotCollection, ) if TYPE_CHECKING: from syrupy.types import ( PropertyFilter, PropertyMatcher, PropertyName, PropertyPath, SerializableData, ) PropertyValueFilter = Callable[["PropertyName"], bool] PropertyValueGetter = Callable[ ["SerializableData", "PropertyName"], "SerializableData" ] IterableEntries = tuple[ Iterable["PropertyName"], "PropertyValueGetter", "PropertyValueFilter | None", ] class Repr: def __init__(self, _repr: str): self._repr = _repr def __repr__(self) -> str: return self._repr def attr_getter(o: "SerializableData", p: "PropertyName") -> "SerializableData": return getattr(o, str(p)) def item_getter(o: "SerializableData", p: "PropertyName") -> "SerializableData": return o[p] class MalformedAmberFile(Exception): """ The Amber file is malformed. It should be deleted and regenerated. """ class MissingVersionError(Exception): """ Missing Amber version marker. """ def removesuffix(string: str, suffix: str) -> str: """ Can be replaced with str.removesuffix once Py3.8 support is dropped. """ if string.endswith(suffix): return string[: -len(suffix)] return string class AmberDataSerializerPlugin(ABC): """ A Syrupy plugin for extending Amber serialization. """ @classmethod @abstractmethod def is_data_serializable(cls, data: "SerializableData") -> bool: """ Determine if this plugin can serialize the given data. """ pass @classmethod @abstractmethod def serialize(cls, data: "SerializableData", **kwargs: Any) -> str: """ Return the serialization method for the given data. """ pass class AmberDataSerializer: """ If extending the serializer, change the VERSION property to some unique value for your iteration of the serializer so as to force invalidation of existing snapshots. """ VERSION = "1" serializer_plugins: Iterable[type["AmberDataSerializerPlugin"]] | None = None _indent: str = " " _max_depth: int = 99 _marker_prefix = "# " class Marker: Version = "serializer version" Name = "name" Divider = "---" @classmethod def snapshot_sort_key(cls, snapshot: "Snapshot") -> Any: return snapshot.name @classmethod def write_file( cls, snapshot_collection: "SnapshotCollection", merge: bool = False ) -> None: """ Writes the snapshot data into the snapshot file that can be read later. """ filepath = snapshot_collection.location if merge: base_snapshot = cls.read_file(filepath) base_snapshot.merge(snapshot_collection) snapshot_collection = base_snapshot with open(filepath, "w", encoding=TEXT_ENCODING, newline=None) as f: f.write(f"{cls._marker_prefix}{cls.Marker.Version}: {cls.VERSION}\n") for snapshot in sorted( snapshot_collection, key=cls.snapshot_sort_key, # noqa: E501 ): snapshot_data = str(snapshot.data) if snapshot_data is not None: f.write(f"{cls._marker_prefix}{cls.Marker.Name}: {snapshot.name}\n") for data_line in snapshot_data.splitlines(keepends=True): f.write(cls.with_indent(data_line, 1)) if data_line.endswith("\n"): # splitlines does not split on a terminal/trailing newline, so we must # account for that manually f.write(cls.with_indent("", 1)) f.write(f"\n{cls._marker_prefix}{cls.Marker.Divider}\n") @classmethod def __read_file_with_markers( cls, filepath: str ) -> Generator["Snapshot", None, None]: marker_offset = len(cls._marker_prefix) indent_len = len(cls._indent) test_name = None snapshot_data = "" tainted = False missing_version = True try: with open(filepath, encoding=TEXT_ENCODING, newline=None) as f: for line_no, line in enumerate(f): if line.startswith(cls._marker_prefix): marker_key, *marker_rest = line[marker_offset:].split( ":", maxsplit=1 ) marker_key = marker_key.rstrip(" \r\n") marker_value = marker_rest[0].strip() if marker_rest else None if marker_key == cls.Marker.Version: if line_no: raise MalformedAmberFile( "Version must be specified at the top of the file." ) if not marker_value or marker_value != cls.VERSION: tainted = True continue missing_version = False if marker_key == cls.Marker.Name: if not marker_value: raise MalformedAmberFile("Missing snapshot name.") test_name = marker_value.strip(" \r\n") continue if marker_key == cls.Marker.Divider: if test_name and snapshot_data: yield Snapshot( name=test_name, data=removesuffix(snapshot_data, "\r\n") if snapshot_data.endswith("\r\n") else removesuffix(snapshot_data, "\n"), tainted=tainted, ) test_name = None snapshot_data = "" elif test_name is not None and line.startswith(cls._indent): snapshot_data += line[indent_len:] except FileNotFoundError: pass else: if missing_version: raise MissingVersionError @classmethod def read_file(cls, filepath: str) -> "SnapshotCollection": """ Read the raw snapshot data (str) from the snapshot file into a dict of snapshot name to raw data. This does not attempt any deserialization of the snapshot data. """ snapshot_collection = SnapshotCollection(location=filepath) try: for snapshot in cls.__read_file_with_markers(filepath): if snapshot.tainted: snapshot_collection.tainted = True snapshot_collection.add(snapshot) except MissingVersionError: snapshot_collection.tainted = True return snapshot_collection @classmethod def serialize( cls, data: "SerializableData", *, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, ) -> str: """ After serializing, new line control characters are normalised. This is needed for interoperablity of snapshot matching between systems that do not use the same new line control characters. Example snapshots generated on windows os should not break when running the tests on a unix based system and vice versa. """ serialized = cls._serialize( data, exclude=exclude, include=include, matcher=matcher ) return serialized.replace("\r\n", "\n").replace("\r", "\n") @classmethod def _serialize( cls, data: "SerializableData", *, depth: int = 0, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, path: "PropertyPath" = (), visited: set[Any] | None = None, ) -> str: visited = set() if visited is None else visited data_id = id(data) if depth > cls._max_depth or data_id in visited: data = Repr(SYMBOL_ELLIPSIS) elif matcher: data = matcher(data=data, path=path) serialize_kwargs = { "data": data, "depth": depth, "exclude": exclude, "include": include, "matcher": matcher, "path": path, "visited": {*visited, data_id}, } serialize_method = cls._assign_serialize_method(data) return serialize_method(**serialize_kwargs) @classmethod def _assign_serialize_method(cls, data: "SerializableData") -> Callable[..., str]: if cls.serializer_plugins: for plugin in cls.serializer_plugins: if plugin.is_data_serializable(data): return plugin.serialize if isinstance(data, str): return cls.serialize_string elif isinstance(data, (int, float)): return cls.serialize_number elif isinstance(data, (set, frozenset)): return cls.serialize_set elif isinstance(data, (dict, MappingProxyType)): return cls.serialize_dict elif cls.__is_namedtuple(data): return cls.serialize_namedtuple elif isinstance(data, (list, tuple, GeneratorType)): return cls.serialize_iterable elif isinstance(data, FunctionType): return cls.serialize_function return cls.serialize_unknown @classmethod def serialize_number( cls, data: int | float, *, depth: int = 0, **kwargs: Any ) -> str: return cls.__serialize_plain(data=data, depth=depth) @classmethod def serialize_string(cls, data: str, *, depth: int = 0, **kwargs: Any) -> str: if all(c not in data for c in "\r\n"): return cls.__serialize_plain(data=data, depth=depth) return cls.__serialize_lines( data=data, lines=( cls.with_indent(line, depth + 1 if depth else depth) for line in str(data).splitlines(keepends=True) ), depth=depth, open_tag="'''", close_tag="'''", include_type=False, ends="", ) @classmethod def serialize_iterable( cls, data: Iterable["SerializableData"], **kwargs: Any ) -> str: open_paren, close_paren = (None, None) if isinstance(data, list): open_paren, close_paren = ("[", "]") values = list(data) return cls.serialize_custom_iterable( data=data, resolve_entries=(range(len(values)), item_getter, None), open_paren=open_paren, close_paren=close_paren, **kwargs, ) @classmethod def serialize_set(cls, data: set["SerializableData"], **kwargs: Any) -> str: return cls.serialize_custom_iterable( data=data, resolve_entries=(cls.sort(data), lambda _, p: p, None), open_paren="{", close_paren="}", **kwargs, ) @classmethod def serialize_namedtuple(cls, data: NamedTuple, **kwargs: Any) -> str: return cls.serialize_custom_iterable( data=data, resolve_entries=(cls.sort(data._fields), attr_getter, None), separator="=", **kwargs, ) @classmethod def serialize_dict( cls, data: dict["PropertyName", "SerializableData"], **kwargs: Any ) -> str: keys = ( data.keys() if isinstance(data, (OrderedDict,)) else cls.sort(data.keys()) ) return cls.serialize_custom_iterable( data=data, resolve_entries=(keys, item_getter, None), open_paren="{", close_paren="}", separator=": ", serialize_key=True, **kwargs, ) @classmethod def serialize_function( cls, data: FunctionType, *, depth: int = 0, **kwargs: Any ) -> str: return cls.__serialize_plain( data=f"{data.__qualname__}{str(inspect.signature(data))}", depth=depth ) @classmethod def serialize_unknown(cls, data: Any, *, depth: int = 0, **kwargs: Any) -> str: if data.__class__.__repr__ != object.__repr__: return cls.__serialize_plain(data=data, depth=depth) return cls.serialize_custom_iterable( data=data, resolve_entries=( cls.sort(cls.object_attrs(data)), attr_getter, lambda v: not callable(v), ), depth=depth, separator="=", **kwargs, ) @classmethod def object_attrs(cls, data: Any) -> "Iterable[str]": return (name for name in dir(data) if not name.startswith("_")) @classmethod def object_as_named_tuple(cls, data: Any) -> "tuple[Any, ...]": attr_names = list(cls.object_attrs(data)) return collections.namedtuple(data.__class__.__name__, attr_names)( **{prop: getattr(data, prop) for prop in attr_names} ) @classmethod def with_indent(cls, string: str, depth: int) -> str: return f"{cls._indent * depth}{string}" @classmethod def sort(cls, iterable: Iterable[Any]) -> Iterable[Any]: try: return sorted(iterable) except TypeError: return sorted(iterable, key=cls._serialize) @classmethod def object_type(cls, data: "SerializableData") -> str: return f"{data.__class__.__name__}" @classmethod def __is_namedtuple(cls, obj: Any) -> bool: return isinstance(obj, tuple) and all( isinstance(n, (str,)) for n in getattr(obj, "_fields", [None]) ) @classmethod def __serialize_plain( cls, *, data: "SerializableData", depth: int = 0, ) -> str: return cls.with_indent(repr(data), depth) @classmethod def serialize_custom_iterable( cls, *, data: "SerializableData", resolve_entries: "IterableEntries", open_paren: str | None = None, close_paren: str | None = None, depth: int = 0, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, path: "PropertyPath" = (), separator: str | None = None, serialize_key: bool = False, **kwargs: Any, ) -> str: """ Utility to serialize a custom iterable. """ kwargs["depth"] = depth + 1 keys, get_value, include_value = resolve_entries key_values = ( (key, get_value(data, key)) for key in keys if (not exclude or not exclude(prop=key, path=path)) and (not include or include(prop=key, path=path)) ) entries = ( entry for entry in key_values if not include_value or include_value(entry[1]) ) def key_str(key: "PropertyName") -> str: if separator is None: return "" return ( cls._serialize(data=key, **kwargs) if serialize_key else cls.with_indent(str(key), depth=depth + 1) ) + separator def value_str(key: "PropertyName", value: "SerializableData") -> str: serialized = cls._serialize( data=value, exclude=exclude, include=include, path=(*path, (key, type(value))), **kwargs, ) return serialized if separator is None else serialized.lstrip(cls._indent) return cls.__serialize_lines( data=data, lines=(f"{key_str(key)}{value_str(key, value)}," for key, value in entries), depth=depth, open_tag=f"({open_paren or ''}", close_tag=f"{close_paren or ''})", ) @classmethod def __serialize_lines( cls, *, data: "SerializableData", lines: Iterable[str], open_tag: str, close_tag: str, depth: int = 0, include_type: bool = True, ends: str = "\n", ) -> str: lines = ends.join(lines) lines_end = "\n" if lines else "" maybe_obj_type = f"{cls.object_type(data)}" if include_type else "" formatted_open_tag = cls.with_indent(f"{maybe_obj_type}{open_tag}", depth) formatted_close_tag = cls.with_indent(close_tag, depth) return f"{formatted_open_tag}\n{lines}{lines_end}{formatted_close_tag}" class AmberDataSerializerSorted(AmberDataSerializer): """ This is an experimental serializer with known performance issues. """ VERSION = f"{AmberDataSerializer.VERSION}-sorted" @classmethod def __maybe_int(cls, part: str) -> tuple[int, str | int]: try: # cast to int only if the string is the exact representation of the int # for example, '012' != str(int('012')) i = int(part) if str(i) == part: return (1, i) return (0, part) except ValueError: # the nested tuple is to prevent comparing a str to an int return (0, part) @classmethod def snapshot_sort_key(cls, snapshot: "Snapshot") -> Any: return [cls.__maybe_int(part) for part in snapshot.name.split(".")] syrupy-project-syrupy-7096efd/src/syrupy/extensions/base.py000066400000000000000000000346061513542711300243700ustar00rootroot00000000000000import warnings from abc import ( ABC, abstractmethod, ) from collections.abc import Callable, Iterator from gettext import gettext from itertools import zip_longest from pathlib import Path from typing import ( TYPE_CHECKING, Optional, ) from syrupy.constants import ( DISABLE_COLOR_ENV_VAR, SYMBOL_CARRIAGE, SYMBOL_ELLIPSIS, SYMBOL_NEW_LINE, ) from syrupy.data import ( DiffedLine, Snapshot, SnapshotCollection, SnapshotCollections, SnapshotEmptyCollection, ) from syrupy.exceptions import SnapshotDoesNotExist from syrupy.terminal import ( context_style, received_diff_style, received_style, reset, snapshot_diff_style, snapshot_style, ) from syrupy.utils import ( env_context, obj_attrs, qdiff, walk_snapshot_dir, ) if TYPE_CHECKING: from syrupy.location import PyTestLocation from syrupy.types import ( PropertyFilter, PropertyMatcher, SerializableData, SerializedData, SnapshotIndex, ) class SnapshotSerializer(ABC): @abstractmethod def serialize( self, data: "SerializableData", *, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, ) -> "SerializedData": """ Serializes a python object / data structure into a string to be used for comparison with snapshot data from disk. """ raise NotImplementedError class SnapshotCollectionStorage(ABC): snapshot_dirname: str | Path = "__snapshots__" file_extension = "" @classmethod def get_snapshot_name( cls, *, test_location: "PyTestLocation", index: "SnapshotIndex" = 0 ) -> str: """Get the snapshot name for the assertion index in a test location""" index_suffix = "" if isinstance(index, (str,)): index_suffix = f"[{index}]" elif index: index_suffix = f".{index}" return f"{test_location.snapshot_name}{index_suffix}" @classmethod def get_location( cls, *, test_location: "PyTestLocation", index: "SnapshotIndex" ) -> str: """Returns full filepath where snapshot data is stored.""" basename = cls.get_file_basename(test_location=test_location, index=index) fileext = f".{cls.file_extension}" if cls.file_extension else "" return str( Path(cls.dirname(test_location=test_location)).joinpath( f"{basename}{fileext}" ) ) def is_snapshot_location(self, *, location: str) -> bool: """Checks if supplied location is valid for this snapshot extension""" return location.endswith(self.file_extension) def discover_snapshots( self, *, test_location: "PyTestLocation", ignore_extensions: list[str] | None = None, ) -> "SnapshotCollections": """ Returns all snapshot collections in test site """ discovered = SnapshotCollections() for filepath in walk_snapshot_dir( self.dirname(test_location=test_location), ignore_extensions=ignore_extensions, ): if self.is_snapshot_location(location=filepath): snapshot_collection = self.read_snapshot_collection( snapshot_location=filepath ) if not snapshot_collection.has_snapshots: snapshot_collection = SnapshotEmptyCollection(location=filepath) else: snapshot_collection = SnapshotCollection(location=filepath) discovered.add(snapshot_collection) return discovered def read_snapshot( self, *, test_location: "PyTestLocation", index: "SnapshotIndex", session_id: str, ) -> "SerializedData": """ This method is _final_, do not override. You can override `read_snapshot_data_from_location` in a subclass to change behaviour. """ snapshot_location = self.get_location(test_location=test_location, index=index) snapshot_name = self.get_snapshot_name(test_location=test_location, index=index) snapshot_data = self.read_snapshot_data_from_location( snapshot_location=snapshot_location, snapshot_name=snapshot_name, session_id=session_id, ) if snapshot_data is None: raise SnapshotDoesNotExist() return snapshot_data @classmethod def write_snapshot( cls, *, snapshot_location: str, snapshots: list[tuple["SerializedData", "PyTestLocation", "SnapshotIndex"]], ) -> None: """ This method is _final_, do not override. You can override `write_snapshot_collection` in a subclass to change behaviour. """ if not snapshots: return # First we group by location since it'll let us batch by file on disk. # Not as useful for single file snapshots, but useful for the standard # Amber extension. snapshot_collection = SnapshotCollection(location=snapshot_location) for data, test_location, index in snapshots: snapshot_name = cls.get_snapshot_name( test_location=test_location, index=index ) snapshot = Snapshot(name=snapshot_name, data=data) snapshot_collection.add(snapshot) if not test_location.matches_snapshot_location(snapshot_location): warning_msg = gettext( "{line_end}Can not relate snapshot location '{}' " "to the test location.{line_end}" "Consider adding '{}' to the generated location." ).format( snapshot_location, test_location.basename, line_end="\n", ) warnings.warn(warning_msg, stacklevel=1) if not test_location.matches_snapshot_name(snapshot.name): warning_msg = gettext( "{line_end}Can not relate snapshot name '{}' " "to the test location.{line_end}" "Consider adding '{}' to the generated name." ).format( snapshot.name, test_location.testname, line_end="\n", ) warnings.warn(warning_msg, stacklevel=1) # Ensures the folder path for the snapshot file exists. Path(snapshot_location).parent.mkdir(parents=True, exist_ok=True) cls.write_snapshot_collection(snapshot_collection=snapshot_collection) @abstractmethod def delete_snapshots( self, *, snapshot_location: str, snapshot_names: set[str] ) -> None: """ Remove snapshots from a snapshot file. If the snapshot file will be empty remove the entire file. """ raise NotImplementedError @abstractmethod def read_snapshot_collection( self, *, snapshot_location: str ) -> "SnapshotCollection": """ Read the snapshot location and construct a snapshot collection object """ raise NotImplementedError @abstractmethod def read_snapshot_data_from_location( self, *, snapshot_location: str, snapshot_name: str, session_id: str ) -> Optional["SerializedData"]: """ Get only the snapshot data from location for assertion """ raise NotImplementedError @classmethod @abstractmethod def write_snapshot_collection( cls, *, snapshot_collection: "SnapshotCollection" ) -> None: """ Adds the snapshot data to the snapshots in collection location """ raise NotImplementedError @classmethod def dirname(cls, *, test_location: "PyTestLocation") -> str: test_dir = Path(test_location.filepath).parent return str(test_dir.joinpath(cls.snapshot_dirname)) @classmethod def get_file_basename( cls, *, test_location: "PyTestLocation", index: "SnapshotIndex" ) -> str: """Returns file basename without extension. Used to create full filepath.""" return test_location.basename def _count_leading_whitespace(s: str) -> int: return len(s) - len(s.lstrip()) class SnapshotReporter: _context_line_count = 1 def diff_snapshots( self, serialized_data: "SerializedData", snapshot_data: "SerializedData" ) -> "SerializedData": env = {DISABLE_COLOR_ENV_VAR: "true"} attrs = {"_context_line_count": 0} with env_context(**env), obj_attrs(self, attrs): return "\n".join(self.diff_lines(serialized_data, snapshot_data)) def diff_lines( self, serialized_data: "SerializedData", snapshot_data: "SerializedData" ) -> Iterator[str]: for line in self.__diff_lines(str(snapshot_data), str(serialized_data)): yield reset(line) @property def _ends(self) -> dict[str, str]: return {"\n": self._marker_new_line, "\r": self._marker_carriage} @property def _context_line_max(self) -> int: return self._context_line_count * 2 @property def _marker_context_max(self) -> str: return SYMBOL_ELLIPSIS @property def _marker_new_line(self) -> str: return SYMBOL_NEW_LINE @property def _marker_carriage(self) -> str: return SYMBOL_CARRIAGE def __diff_lines(self, a: str, b: str) -> Iterator[str]: for line in self.__diffed_lines(a, b): show_ends = ( self.__strip_ends(line.a[1:] if line.a is not None else "") == self.__strip_ends(line.b[1:] if line.b is not None else "") if line.is_complete else False ) if line.has_snapshot and line.a is not None: yield self.__format_line( line.a, line.diff_a, snapshot_style, snapshot_diff_style, show_ends ) if line.has_received and line.b is not None: yield self.__format_line( line.b, line.diff_b, received_style, received_diff_style, show_ends ) yield from map(context_style, self.__limit_context(line.c)) def __diffed_lines(self, a: str, b: str) -> Iterator["DiffedLine"]: staged_diffed_line: DiffedLine | None = None for line in qdiff(a.splitlines(keepends=True), b.splitlines(keepends=True)): is_context_line = line[0] == " " is_snapshot_line = line[0] == "-" is_received_line = line[0] == "+" is_diff_line = line[0] == "?" if is_context_line or is_diff_line: line = self.__strip_ends(line) if staged_diffed_line: if is_diff_line: if staged_diffed_line.has_received: staged_diffed_line.diff_b = line elif staged_diffed_line.has_snapshot: staged_diffed_line.diff_a = line # else: should never happen because then it would have # encounted a diff line without any previously staged line else: should_unstage = ( staged_diffed_line.is_complete or (staged_diffed_line.has_snapshot and is_snapshot_line) or (staged_diffed_line.has_received and is_received_line) or (staged_diffed_line.is_context and not is_context_line) ) if should_unstage: yield staged_diffed_line staged_diffed_line = None elif is_snapshot_line: staged_diffed_line.a = line elif is_received_line: staged_diffed_line.b = line elif is_context_line: staged_diffed_line.c.append(line) if not staged_diffed_line: if is_snapshot_line: staged_diffed_line = DiffedLine(a=line) elif is_received_line: staged_diffed_line = DiffedLine(b=line) elif is_context_line: staged_diffed_line = DiffedLine(c=[line]) # else: should never happen because then it would have # encounted a diff line without any previously staged line if staged_diffed_line: yield staged_diffed_line def __format_line( self, line: str, diff_markers: str, line_style: Callable[[str], str], diff_style: Callable[[str], str], show_ends: bool, ) -> str: if show_ends: for old, new in self._ends.items(): line = line.replace(old, new) else: line = self.__strip_ends(line) return "".join( diff_style(char) if str(marker) in "-+^" else line_style(char) for marker, char in zip_longest(diff_markers.rstrip(), line) if char is not None ) def __limit_context(self, lines: list[str]) -> Iterator[str]: yield from lines[: self._context_line_count] num_lines = len(lines) if num_lines: if num_lines > self._context_line_max: if self._context_line_count: num_space = ( _count_leading_whitespace(lines[self._context_line_count - 1]) + _count_leading_whitespace(lines[-self._context_line_count]) ) // 2 else: num_space = _count_leading_whitespace(lines[num_lines // 2]) yield " " * num_space + self._marker_context_max if self._context_line_count and num_lines > 1: yield from lines[-self._context_line_count :] # noqa: E203 def __strip_ends(self, line: str) -> str: return line.rstrip("".join(self._ends.keys())) class SnapshotComparator: def matches( self, *, serialized_data: "SerializableData", snapshot_data: "SerializableData", ) -> bool: """ Compares serialized data and snapshot data and returns whether they match. """ return bool(serialized_data == snapshot_data) class AbstractSyrupyExtension( SnapshotSerializer, SnapshotCollectionStorage, SnapshotReporter, SnapshotComparator ): pass syrupy-project-syrupy-7096efd/src/syrupy/extensions/image.py000066400000000000000000000010071513542711300245250ustar00rootroot00000000000000from typing import ( TYPE_CHECKING, Any, ) from syrupy.constants import TEXT_ENCODING from .single_file import SingleFileSnapshotExtension if TYPE_CHECKING: from syrupy.types import SerializableData class PNGImageSnapshotExtension(SingleFileSnapshotExtension): file_extension = "png" class SVGImageSnapshotExtension(SingleFileSnapshotExtension): file_extension = "svg" def serialize(self, data: "SerializableData", **kwargs: Any) -> bytes: return str(data).encode(TEXT_ENCODING) syrupy-project-syrupy-7096efd/src/syrupy/extensions/json/000077500000000000000000000000001513542711300240445ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/extensions/json/__init__.py000066400000000000000000000120341513542711300261550ustar00rootroot00000000000000# noqa: A005 import datetime import inspect import json from collections import OrderedDict from collections.abc import Iterable from types import ( FunctionType, GeneratorType, ) from typing import ( TYPE_CHECKING, Any, Optional, ) from syrupy.constants import SYMBOL_ELLIPSIS from syrupy.extensions.amber.serializer import Repr from syrupy.extensions.single_file import ( SingleFileSnapshotExtension, WriteMode, ) if TYPE_CHECKING: from syrupy.types import ( PropertyFilter, PropertyMatcher, PropertyPath, SerializableData, SerializedData, ) class JSONSnapshotExtension(SingleFileSnapshotExtension): _max_depth: int = 99 _write_mode = WriteMode.TEXT file_extension = "json" @classmethod def sort(cls, iterable: Iterable[Any]) -> Iterable[Any]: try: return sorted(iterable) except TypeError: return sorted(iterable, key=str) @classmethod def __is_namedtuple(cls, obj: Any) -> bool: return isinstance(obj, tuple) and all( isinstance(n, (str,)) for n in getattr(obj, "_fields", [None]) ) @classmethod def _filter( cls, data: "SerializableData", *, depth: int = 0, path: "PropertyPath", exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, visited: set[Any] | None = None, ) -> "SerializableData": data_id = id(data) visited = set() if visited is None else visited if depth > cls._max_depth or data_id in visited: data = Repr(SYMBOL_ELLIPSIS) elif matcher: data = matcher(data=data, path=path) if isinstance(data, (int, float, str)) or data is None: return data filtered_dct: dict[Any, Any] if isinstance(data, (dict,)): filtered_dct = OrderedDict() keys = ( cls.sort(data.keys()) if not isinstance(data, (OrderedDict,)) else data.keys() ) for key in keys: value = data[key] if exclude and exclude(prop=key, path=path): continue if include and not include(prop=key, path=path): continue if not isinstance(key, (str,)): continue filtered_dct[key] = cls._filter( data=value, depth=depth + 1, path=(*path, (key, type(value))), exclude=exclude, include=include, matcher=matcher, visited={*visited, data_id}, ) return filtered_dct if cls.__is_namedtuple(data): filtered_dct = OrderedDict() for key in cls.sort(data._fields): value = getattr(data, key) filtered_dct[key] = cls._filter( data=value, depth=depth + 1, path=(*path, (key, type(value))), exclude=exclude, include=include, matcher=matcher, visited={*visited, data_id}, ) return filtered_dct if isinstance(data, (set, frozenset, list, tuple, GeneratorType)): filtered_lst: list[Any] = [] iterable = ( cls.sort(data) if isinstance(data, (set, frozenset)) else list(data) ) for key, value in enumerate(iterable): filtered_lst.append( cls._filter( data=value, depth=depth + 1, path=(*path, (key, type(value))), exclude=exclude, include=include, matcher=matcher, visited={*visited, data_id}, ) ) return filtered_lst if isinstance(data, (datetime.datetime,)): return data.strftime("%Y-%m-%dT%H:%M:%S.%f%z") if isinstance(data, FunctionType): return ( f"<{FunctionType.__name__} " f"{data.__qualname__}{str(inspect.signature(data))}>" ) if data.__class__.__repr__ != object.__repr__: return repr(data) return f"" def serialize( self, data: "SerializableData", *, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, ) -> "SerializedData": data = self._filter( data=data, depth=0, path=(), exclude=exclude, include=include, matcher=matcher, ) return json.dumps(data, indent=2, ensure_ascii=False, sort_keys=False) + "\n" syrupy-project-syrupy-7096efd/src/syrupy/extensions/single_file.py000066400000000000000000000144511513542711300257320ustar00rootroot00000000000000from enum import Enum from gettext import gettext from pathlib import Path from typing import ( TYPE_CHECKING, Optional, ) from unicodedata import category from syrupy.constants import TEXT_ENCODING from syrupy.data import ( Snapshot, SnapshotCollection, ) from syrupy.exceptions import TaintedSnapshotError from syrupy.extensions.amber.serializer import AmberDataSerializer from syrupy.location import PyTestLocation from syrupy.types import PropertyFilter, PropertyMatcher, SerializableData from .base import AbstractSyrupyExtension if TYPE_CHECKING: from syrupy.types import ( PropertyFilter, PropertyMatcher, SerializableData, SerializedData, SnapshotIndex, ) class WriteMode(Enum): BINARY = "b" TEXT = "t" def __str__(self) -> str: return self.value class SingleFileSnapshotExtension(AbstractSyrupyExtension): _text_encoding = TEXT_ENCODING _write_mode = WriteMode.BINARY file_extension = "raw" def serialize( self, data: "SerializableData", *, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, ) -> "SerializedData": supported_dataclass = self.get_supported_dataclass() if supported_dataclass is bytes: try: memoryview(data) except TypeError: raise TypeError( gettext( "Can't serialize '{}' to '{}'. You must convert the data first." ).format(type(data).__name__, supported_dataclass.__name__) ) from None return supported_dataclass(data) @classmethod def get_snapshot_name( cls, *, test_location: "PyTestLocation", index: "SnapshotIndex" = 0 ) -> str: return cls.__clean_filename( AbstractSyrupyExtension.get_snapshot_name( test_location=test_location, index=index ) ) def delete_snapshots( self, *, snapshot_location: str, snapshot_names: set[str] ) -> None: Path(snapshot_location).unlink() @classmethod def get_file_basename( cls, *, test_location: "PyTestLocation", index: "SnapshotIndex" ) -> str: return cls.get_snapshot_name(test_location=test_location, index=index) @classmethod def dirname(cls, *, test_location: "PyTestLocation") -> str: original_dirname = AbstractSyrupyExtension.dirname(test_location=test_location) return str(Path(original_dirname).joinpath(test_location.basename)) def read_snapshot_collection( self, *, snapshot_location: str ) -> "SnapshotCollection": file_ext_len = len(self.file_extension) + 1 if self.file_extension else 0 filename_wo_ext = snapshot_location[:-file_ext_len] basename = Path(filename_wo_ext).parts[-1] snapshot_collection = SnapshotCollection(location=snapshot_location) snapshot_collection.add(Snapshot(name=basename)) return snapshot_collection def read_snapshot_data_from_location( self, *, snapshot_location: str, snapshot_name: str, session_id: str ) -> Optional["SerializableData"]: try: with open( snapshot_location, f"r{self._write_mode}", encoding=self.get_write_encoding(), ) as f: return f.read() except FileNotFoundError: return None @classmethod def get_supported_dataclass(cls) -> type[str] | type[bytes]: if cls._write_mode == WriteMode.TEXT: return str return bytes @classmethod def get_write_encoding(cls) -> str | None: if cls._write_mode == WriteMode.TEXT: return TEXT_ENCODING return None @classmethod def write_snapshot_collection( cls, *, snapshot_collection: "SnapshotCollection" ) -> None: filepath, data = ( snapshot_collection.location, next(iter(snapshot_collection)).data, ) if not isinstance(data, cls.get_supported_dataclass()): error_text = gettext( "Can't write non supported data. Expected '{}', got '{}'" ) raise TypeError( error_text.format( cls.get_supported_dataclass().__name__, type(data).__name__ ) ) with open( filepath, f"w{cls._write_mode}", encoding=cls.get_write_encoding() ) as f: f.write(data) @classmethod def __clean_filename(cls, filename: str) -> str: max_filename_length = 255 - len(cls.file_extension or "") exclude_chars = '\\/?*:|"<>' exclude_categ = ("C",) cleaned_filename = "".join( c for c in filename if c not in exclude_chars and not any(categ in category(c) for categ in exclude_categ) ) return cleaned_filename[:max_filename_length] class SingleFileAmberSnapshotExtension(SingleFileSnapshotExtension): file_extension = "ambr" _write_mode = WriteMode.TEXT def serialize( self, data: "SerializableData", *, exclude: Optional["PropertyFilter"] = None, include: Optional["PropertyFilter"] = None, matcher: Optional["PropertyMatcher"] = None, ) -> "SerializedData": return AmberDataSerializer.serialize( data, exclude=exclude, include=include, matcher=matcher ) def read_snapshot_data_from_location( self, *, snapshot_location: str, snapshot_name: str, session_id: str ) -> Optional["SerializableData"]: snapshot_collection = AmberDataSerializer.read_file(snapshot_location) if not snapshot_collection or not snapshot_collection.has_snapshots: return None snapshot = next(iter(snapshot_collection), None) if not snapshot: return None if snapshot_collection.tainted or snapshot.tainted: raise TaintedSnapshotError(snapshot_data=snapshot.data) return snapshot.data @classmethod def write_snapshot_collection( cls, *, snapshot_collection: "SnapshotCollection" ) -> None: AmberDataSerializer.write_file(snapshot_collection, merge=False) syrupy-project-syrupy-7096efd/src/syrupy/filters.py000066400000000000000000000042601513542711300227200ustar00rootroot00000000000000from typing import ( TYPE_CHECKING, ) if TYPE_CHECKING: from syrupy.types import ( PropertyFilter, PropertyName, PropertyPath, ) def paths(*path_parts: str) -> "PropertyFilter": """ Factory to create a filter using list of path strings. This filter does not work well when combined with "include" and nested paths, since "include" oeprates per key as an object is traversed for serialization. For nested paths, we must include all parents. To accomplish this, we provide an alternative "paths_include" filter which does this automatically. """ if not path_parts: raise TypeError("At least 1 path argument is required.") parts: set[str] = set(path_parts) def path_filter(*, prop: "PropertyName", path: "PropertyPath") -> bool: path_str = ".".join(str(p) for p, _ in (*path, (prop, None))) return path_str in parts return path_filter def paths_include(*path_parts: tuple[str, ...] | list[str]) -> "PropertyFilter": """ Factory to create a filter using list of path tuples. """ if not path_parts: raise TypeError("At least 1 path argument is required.") # "include" operates per key as an object is traversed for serialization. # This means, if matching a nested path, we must also include all parents. parts: set[tuple[str, ...]] = set() for path_part in path_parts: if isinstance(path_part, (list, tuple)): for idx in range(len(path_part)): parts.add(tuple(path_part[: idx + 1])) else: raise TypeError("Unexpected argument. Expected list/tuple.") def path_filter(*, prop: "PropertyName", path: "PropertyPath") -> bool: path_tuple = tuple(str(p) for p, _ in (*path, (prop, None))) return path_tuple in parts return path_filter def props(*prop_names: str) -> "PropertyFilter": """ Factory to create filter using list of props """ if not prop_names: raise TypeError("At least 1 prop name is required.") def prop_filter(*, prop: "PropertyName", path: "PropertyPath") -> bool: return any(str(prop) == p for p in prop_names) return prop_filter syrupy-project-syrupy-7096efd/src/syrupy/location.py000066400000000000000000000130741513542711300230630ustar00rootroot00000000000000from collections.abc import Iterator from dataclasses import ( dataclass, field, ) from pathlib import Path import pytest from syrupy.constants import PYTEST_NODE_SEP @dataclass(frozen=True) class PyTestLocation: item: "pytest.Item" nodename: str | None = field(init=False) testname: str = field(init=False) methodname: str = field(init=False) modulename: str = field(init=False) filepath: str = field(init=False) def __post_init__(self) -> None: # NB. we're in a frozen dataclass, but need to transform the values that the caller # supplied... we do so by (ab)using object.__setattr__ to forcibly set the attributes. (See # rejected PEP-0712 for an example of a better way to handle this.) # # This is safe because this all happens during initialization: `self` hasn't been hashed # (or, e.g., stored in a dict), so the mutation won't be noticed. if self.is_doctest: return self.__attrs_post_init_doc__() self.__attrs_post_init_def__() def __attrs_post_init_def__(self) -> None: node_path: Path = getattr(self.item, "path") # noqa: B009 # See __post_init__ for discussion of object.__setattr__ object.__setattr__(self, "filepath", str(node_path.absolute())) obj = getattr(self.item, "obj") # noqa: B009 object.__setattr__(self, "modulename", obj.__module__) object.__setattr__(self, "methodname", obj.__name__) object.__setattr__(self, "nodename", getattr(self.item, "name", None)) object.__setattr__(self, "testname", self.nodename or self.methodname) def __attrs_post_init_doc__(self) -> None: doctest = getattr(self.item, "dtest") # noqa: B009 # See __post_init__ for discussion of object.__setattr__ object.__setattr__(self, "filepath", doctest.filename) test_relfile, test_node = self.nodeid.split(PYTEST_NODE_SEP) test_relpath = Path(test_relfile) object.__setattr__( self, "modulename", ".".join([*test_relpath.parent.parts, test_relpath.stem]), ) object.__setattr__(self, "methodname", None) object.__setattr__( self, "nodename", test_node.replace(f"{self.modulename}.", "") ) object.__setattr__(self, "testname", self.nodename or self.methodname) @property def is_item_parametrized(self) -> bool: return self.nodeid.endswith("]") @property def classname(self) -> str | None: if self.is_doctest: return None return ".".join(self.nodeid.split(PYTEST_NODE_SEP)[1:-1]) or None @property def nodeid(self) -> str: """ Pytest node names contain file path and module members delimited by `::` Examples: - tests/grouping/test_file.py::TestClass::TestSubClass::test_method - tests/grouping/test_file.py::DocTestClass.doc_test_method - tests/grouping/test_file.py::doctestfile.txt :raises: `AttributeError` if node has no node id :return: test node id """ return str(getattr(self.item, "nodeid")) # noqa: B009 @property def basename(self) -> str: return Path(self.filepath).stem @property def snapshot_name(self) -> str: if self.classname is not None: return f"{self.classname}.{self.testname}" return str(self.testname) @property def snapshot_name_parametrized(self) -> str: if self.classname is not None: return f"{self.classname}.{self.nodename}" return str(self.nodename) @property def is_doctest(self) -> bool: return self.__is_doctest(self.item) def __is_doctest(self, node: "pytest.Item") -> bool: return hasattr(node, "dtest") def __valid_id(self, name: str) -> str: """ Take characters from the name while the result would be a valid python identified. Example: "test_2[A]" returns "test_2" while "1_a" would return "" """ valid_id = "" for char in name: new_valid_id = f"{valid_id}{char}" if not new_valid_id.isidentifier(): break valid_id = new_valid_id return valid_id def __valid_ids(self, name: str) -> Iterator[str]: """ Break a name path into valid name parts stopping at the first non valid name. Example "TestClass.test_method_[1]" would yield ("TestClass", "test_method_") """ for n in name.split("."): valid_id = self.__valid_id(n) if valid_id: yield valid_id if valid_id != n: break def __parse(self, name: str) -> str: return ".".join(self.__valid_ids(name)) def matches_snapshot_name(self, snapshot_name: str) -> bool: return self.__parse(self.snapshot_name) == self.__parse(snapshot_name) def matches_snapshot_location(self, snapshot_location: str) -> bool: loc = Path(snapshot_location) if self.is_item_parametrized: return self.basename == loc.stem or ( self.basename == loc.parent.name and ( loc.stem == self.snapshot_name_parametrized or loc.stem.startswith(f"{self.snapshot_name_parametrized}.") or loc.stem.startswith(f"{self.snapshot_name_parametrized}[") ) ) # "test_file" should match "test_file.ext" or "test_file/whatever.ext", but not # "test_file_suffix.ext" return self.basename == loc.stem or self.basename == loc.parent.name syrupy-project-syrupy-7096efd/src/syrupy/matchers.py000066400000000000000000000074161513542711300230640ustar00rootroot00000000000000import re from collections.abc import Callable from gettext import gettext from typing import ( TYPE_CHECKING, Any, Optional, ) from syrupy.extensions.amber.serializer import ( AmberDataSerializer, Repr, ) if TYPE_CHECKING: from syrupy.types import ( PropertyMatcher, PropertyPath, PropertyValueType, SerializableData, ) try: MatchResult = re.Match[str] | None except TypeError: globals()["MatchResult"] = re.Match | None Replacer = Callable[[SerializableData, MatchResult], SerializableData] class PathTypeError(TypeError): pass class StrictPathTypeError(PathTypeError): pass def path_type( mapping: dict[str, tuple["PropertyValueType", ...]] | None = None, *, types: tuple["PropertyValueType", ...] = (), strict: bool = True, regex: bool = False, replacer: "Replacer" = lambda data, _: Repr(AmberDataSerializer.object_type(data)), ) -> "PropertyMatcher": """ Factory to create a matcher using path and type mapping. Usecase: Replacing all values of certain types at specified paths. with their class name instead. Allows for deterministic snapshots on non-deterministic class e.g. datetime, random etc. """ if not mapping and not types: raise PathTypeError(gettext("Both mapping and types argument cannot be empty")) def path_type_matcher( *, data: "SerializableData", path: "PropertyPath" ) -> Optional["SerializableData"]: path_str = ".".join(str(p) for p, _ in path) if mapping: for pattern in mapping: matches = _path_match(path_str, pattern, regex) if matches: for type_to_match in mapping[pattern]: if isinstance(data, type_to_match): return replacer(data, matches) if strict: raise StrictPathTypeError( gettext( "{} at '{}' of type {} does not " "match any of the expected types: {}" ).format(data, path_str, data.__class__, mapping[pattern]) ) for type_to_match in types: if isinstance(data, type_to_match): return replacer(data, None) return data return path_type_matcher def path_value( mapping: dict[str, str], *, types: tuple["PropertyValueType", ...], replacer: "Replacer", **kwargs: Any, ) -> "PropertyMatcher": """ Matches the path regex against the string repr of values for the types specified """ kwargs["mapping"] = dict.fromkeys(mapping, types) kwargs["replacer"] = lambda data, path_matches: ( replacer( data, _path_match( str(data), mapping[path_matches.re.pattern], kwargs.get("regex", False) ), ) if path_matches.re.pattern in mapping else data ) return path_type(**kwargs) def _path_match(path: str, pattern: str, is_regex: bool) -> "MatchResult": """Match path against regular string or regex pattern""" if not is_regex: pattern = re.escape(pattern) return re.fullmatch(pattern, path) def compose_matchers(*matchers: "PropertyMatcher") -> "PropertyMatcher": """ Composes 1 or more matchers into a single matcher. """ def _matcher( *, data: "SerializableData", path: "PropertyPath" ) -> Optional["SerializableData"]: for matcher in matchers: try: data = matcher(data=data, path=path) except StrictPathTypeError: # ignore strict mode when composing matchers pass return data return _matcher syrupy-project-syrupy-7096efd/src/syrupy/patches/000077500000000000000000000000001513542711300223235ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/patches/__init__.py000066400000000000000000000000001513542711300244220ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/patches/pycharm_diff.py000066400000000000000000000044331513542711300253340ustar00rootroot00000000000000import warnings from collections.abc import Iterator from contextlib import contextmanager from functools import wraps from inspect import signature from typing import ( Any, ) from syrupy.assertion import SnapshotAssertion @contextmanager def patch_pycharm_diff() -> Iterator[None]: """ Applies PyCharm diff patch to add Syrupy snapshot support. See: https://github.com/syrupy-project/syrupy/issues/675 """ try: from teamcity.diff_tools import EqualsAssertionError # type: ignore except ImportError: warnings.warn( "Failed to patch PyCharm's diff tools. Skipping patch.", stacklevel=2, ) yield return old_init = EqualsAssertionError.__init__ old_init_signature = signature(old_init) @wraps(old_init) def new_init(self: "EqualsAssertionError", *args: Any, **kwargs: Any) -> None: # Extract the __init__ arguments as originally passed in order to # process them later parameters = old_init_signature.bind(self, *args, **kwargs) parameters.apply_defaults() expected = parameters.arguments["expected"] actual = parameters.arguments["actual"] real_exception = parameters.arguments["real_exception"] if isinstance(expected, SnapshotAssertion): snapshot = expected elif isinstance(actual, SnapshotAssertion): snapshot = actual else: snapshot = None old_init(self, *args, **kwargs) # No snapshot was involved in the assertion. Let the old logic do its # thing. if snapshot is None: return # Although a snapshot was involved in the assertion, it seems the error # was a result of a non-assertion exception (Ex. `assert 1/0`). # Therefore, We will not do anything here either. if real_exception is not None: return assertion_result = snapshot.executions[snapshot.num_executions - 1] if assertion_result.exception is not None: return self.expected = str(assertion_result.recalled_data) self.actual = str(assertion_result.asserted_data) try: EqualsAssertionError.__init__ = new_init yield finally: EqualsAssertionError.__init__ = old_init syrupy-project-syrupy-7096efd/src/syrupy/py.typed000066400000000000000000000000001513542711300223610ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/src/syrupy/report.py000066400000000000000000000534211513542711300225660ustar00rootroot00000000000000import importlib from collections import defaultdict from collections.abc import Callable, Generator, Iterator from dataclasses import ( dataclass, field, ) from functools import cached_property from gettext import ( gettext, ngettext, ) from pathlib import Path from typing import ( TYPE_CHECKING, Any, ) from _pytest.skipping import xfailed_key from .constants import PYTEST_NODE_SEP from .data import ( Snapshot, SnapshotCollection, SnapshotCollections, SnapshotUnknownCollection, ) from .location import PyTestLocation from .terminal import ( bold, error_style, green, success_style, warning_style, ) if TYPE_CHECKING: import argparse import pytest from .assertion import SnapshotAssertion from .session import ItemStatus @dataclass class SnapshotReport: """ This class is responsible for determining the test summary and post execution results. It will provide the lines of the report to be printed as well as the information used for removal of unused or orphaned snapshots and collections. """ # Initial arguments to the report base_dir: Path collected_items: set["pytest.Item"] selected_items: dict[str, "ItemStatus"] options: "argparse.Namespace" assertions: list["SnapshotAssertion"] # All of these are derived from the initial arguments and via walking the filesystem discovered: "SnapshotCollections" = field(default_factory=SnapshotCollections) created: "SnapshotCollections" = field(default_factory=SnapshotCollections) failed: "SnapshotCollections" = field(default_factory=SnapshotCollections) matched: "SnapshotCollections" = field(default_factory=SnapshotCollections) updated: "SnapshotCollections" = field(default_factory=SnapshotCollections) used: "SnapshotCollections" = field(default_factory=SnapshotCollections) _provided_test_paths: dict[str, list[str]] = field(default_factory=dict) _keyword_expressions: set["Expression"] = field(default_factory=set) _num_xfails: int = field(default=0) @property def update_snapshots(self) -> bool: return bool(self.options.update_snapshots) @property def warn_unused_snapshots(self) -> bool: return bool(self.options.warn_unused_snapshots) @property def include_snapshot_details(self) -> bool: return bool(self.options.include_snapshot_details) @cached_property def _collected_items_by_nodeid(self) -> dict[str, "pytest.Item"]: return {item.nodeid: item for item in self.collected_items} def _has_xfail(self, item: "pytest.Item") -> bool: # xfailed_key is 'private'. I'm open to a better way to do this: if xfailed_key in item.stash: result = item.stash[xfailed_key] if result: return result.run return False def __post_init__(self) -> None: self.__parse_invocation_args() # We only need to discover snapshots once per test file, not once per assertion. locations_discovered: defaultdict[str, set[Any]] = defaultdict(set) for assertion in self.assertions: test_location = assertion.test_location.filepath extension_class = assertion.extension.__class__ if extension_class not in locations_discovered[test_location]: locations_discovered[test_location].add(extension_class) self.discovered.merge( assertion.extension.discover_snapshots( test_location=assertion.test_location, ignore_extensions=assertion.session.ignore_file_extensions, ) ) for result in assertion.executions.values(): snapshot_collection = SnapshotCollection( location=result.snapshot_location ) snapshot_collection.add( Snapshot(name=result.snapshot_name, data=result.final_data) ) self.used.update(snapshot_collection) if result.created: self.created.update(snapshot_collection) elif result.updated: self.updated.update(snapshot_collection) elif result.success: self.matched.update(snapshot_collection) else: has_xfail = self._has_xfail(item=result.test_location.item) if has_xfail: self._num_xfails += 1 self.failed.update(snapshot_collection) def __parse_invocation_args(self) -> None: """ Parse the invocation arguments to extract some information for test selection This compiles and saves values from `-k`, `--pyargs` and test dir path https://docs.pytest.org/en/stable/reference.html#command-line-flags https://docs.pytest.org/en/stable/reference.html#config Summary -k: is evaluated and used to match against snapshot names when present -m: is ignored for now as markers are not matched to snapshot names --pyargs: arguments are imported to get their file locations [args]: a path provided e.g. tests/test_file.py::TestClass::test_method would result in `"tests/test_file.py"` being stored as the location in a dictionary with `["TestClass", "test_method"]` being the test node path """ if self.options.keyword: self._keyword_expressions.add(Expression.compose(self.options.keyword)) for file_or_dir in self.options.file_or_dir: parts = file_or_dir.split(PYTEST_NODE_SEP) package_or_filepath = parts[0].strip() filepath = Path(package_or_filepath) if self.options.pyargs: try: mod = importlib.import_module(package_or_filepath) if mod.__file__ is not None: filepath = Path(mod.__file__) except Exception: pass filepath_abs = str( filepath if filepath.is_absolute() else filepath.absolute() ) self._provided_test_paths[filepath_abs] = parts[1:] @property def num_created(self) -> int: return self._count_snapshots(self.created) @cached_property def num_failed(self) -> int: return self._count_snapshots(self.failed) @property def num_matched(self) -> int: return self._count_snapshots(self.matched) @property def num_updated(self) -> int: return self._count_snapshots(self.updated) @property def num_unused(self) -> int: return self._count_snapshots(self.unused) @property def selected_all_collected_items(self) -> bool: return self._collected_items_by_nodeid.keys() == self.selected_items.keys() @property def skipped_items(self) -> Iterator["pytest.Item"]: return ( self._collected_items_by_nodeid[nodeid] for nodeid in self.selected_items if self.selected_items[nodeid].value == "skipped" ) @property def ran_items(self) -> Iterator["pytest.Item"]: return ( self._collected_items_by_nodeid[nodeid] for nodeid in self.selected_items if self.selected_items[nodeid] ) @property def unused(self) -> "SnapshotCollections": """ Iterate over each snapshot that was discovered but never used and compute if the snapshot was unused because the test attached to it was never run, or if the snapshot is obsolete and therefore is a candidate for removal. Summary, if a snapshot was supposed to be run based on the invocation args and it was not, then it should be marked as unused otherwise ignored. """ unused_collections = SnapshotCollections() for unused_snapshot_collection in self._diff_snapshot_collections( self.discovered, self.used ): snapshot_location = unused_snapshot_collection.location if self._provided_test_paths and not self._ran_items_match_location( snapshot_location ): # Paths/Packages were provided to pytest and the snapshot location does # not match any of ran tests therefore ignore this unused snapshot file continue provided_nodes = self._get_matching_path_nodes(snapshot_location) if self.selected_all_collected_items and not any(provided_nodes): # All collected tests were run and files were not filtered by ::node # therefore the snapshot collection file at this location can be deleted unused_snapshots = { snapshot for snapshot in unused_snapshot_collection if not self._skipped_items_match_name( snapshot_location=snapshot_location, snapshot_name=snapshot.name ) } mark_for_removal = snapshot_location not in self.used else: unused_snapshots = { snapshot for snapshot in unused_snapshot_collection if self._selected_items_match_name( snapshot_location=snapshot_location, snapshot_name=snapshot.name ) and self._provided_nodes_match_name( snapshot_location=snapshot_location, snapshot_name=snapshot.name, provided_nodes=provided_nodes, ) and not self._skipped_items_match_name( snapshot_location=snapshot_location, snapshot_name=snapshot.name ) } mark_for_removal = False if unused_snapshots: marked_unused_snapshot_collection = SnapshotCollection( location=snapshot_location ) for snapshot in unused_snapshots: marked_unused_snapshot_collection.add(snapshot) unused_collections.add(marked_unused_snapshot_collection) elif mark_for_removal: unused_collections.add( SnapshotUnknownCollection(location=snapshot_location) ) return unused_collections @property def lines(self) -> Iterator[str]: """ These are the lines printed at the end of a test run. Example: ``` 2 snapshots passed. 5 snapshots generated. 1 unused snapshot deleted. Re-run pytest with --snapshot-update to delete unused snapshots. ``` """ summary_lines: list[str] = [] if self.num_failed and self._num_xfails < self.num_failed: summary_lines.append( ngettext( "{} snapshot failed.", "{} snapshots failed.", self.num_failed - self._num_xfails, ).format(error_style(self.num_failed - self._num_xfails)), ) if self._num_xfails: summary_lines.append( ngettext( "{} snapshot xfailed.", "{} snapshots xfailed.", self._num_xfails, ).format(warning_style(self._num_xfails)), ) if self.num_matched: summary_lines.append( ngettext( "{} snapshot passed.", "{} snapshots passed.", self.num_matched, ).format(success_style(self.num_matched)) ) if self.num_created: summary_lines.append( ngettext( "{} snapshot generated.", "{} snapshots generated.", self.num_created, ).format(green(self.num_created)) ) if self.num_updated: summary_lines.append( ngettext( "{} snapshot updated.", "{} snapshots updated.", self.num_updated, ).format(green(self.num_updated)) ) if self.num_unused: if self.update_snapshots: text_singular = "{} unused snapshot deleted." text_plural = "{} unused snapshots deleted." else: text_singular = "{} snapshot unused." text_plural = "{} snapshots unused." if self.update_snapshots or self.warn_unused_snapshots: text_count = warning_style(self.num_unused) else: text_count = error_style(self.num_unused) summary_lines.append( ngettext(text_singular, text_plural, self.num_unused).format(text_count) ) yield " ".join(summary_lines) if self.num_unused: yield "" if self.update_snapshots or self.include_snapshot_details: base_message = "Deleted" if self.update_snapshots else "Unused" for snapshots, path_to_file in self.__iterate_snapshot_collection( self.unused ): unused_snapshots = ", ".join(map(bold, sorted(snapshots))) yield ( warning_style(gettext(base_message)) + f" {unused_snapshots} ({path_to_file})" ) if not self.update_snapshots: message = gettext( "Re-run pytest with --snapshot-update to delete unused snapshots." ) if self.warn_unused_snapshots: yield warning_style(message) else: yield error_style(message) if self.num_created and self.update_snapshots and self.include_snapshot_details: yield "" for snapshots, path_to_file in self.__iterate_snapshot_collection( self.created ): created_snapshots = ", ".join(map(bold, sorted(snapshots))) yield ( warning_style(gettext("Generated")) + f" {created_snapshots} ({path_to_file})" ) if self.num_updated and self.update_snapshots and self.include_snapshot_details: yield "" for snapshots, path_to_file in self.__iterate_snapshot_collection( self.updated ): updated_snapshots = ", ".join(map(bold, sorted(snapshots))) yield ( warning_style(gettext("Updated")) + f" {updated_snapshots} ({path_to_file})" ) def __iterate_snapshot_collection( self, collection: "SnapshotCollections" ) -> Generator[tuple[Generator[str, None, None], str], Any, None]: for snapshot_collection in collection: filepath = snapshot_collection.location snapshots = (snapshot.name for snapshot in snapshot_collection) try: path_to_file = str(Path(filepath).relative_to(self.base_dir)) except ValueError: # this is just used for display, so better to fallback to # something vaguely reasonable (the full path) than give up path_to_file = filepath yield (snapshots, path_to_file) def _diff_snapshot_collections( self, snapshot_collections1: "SnapshotCollections", snapshot_collections2: "SnapshotCollections", ) -> "SnapshotCollections": """ Find the difference between two collections of snapshot collections. While preserving the location site to all collections in the first collections. That is a collection with collection sites {A{1,2}, B{3,4}, C{5,6}} with snapshot collections when diffed with another collection with snapshots {A{1,2}, B{3,4}, D{7,8}} will result in a collection with the contents {A{}, B{}, C{5,6}}. """ diffed_snapshot_collections = SnapshotCollections() for snapshot_collection1 in snapshot_collections1: snapshot_collection2 = snapshot_collections2.get( snapshot_collection1.location ) or SnapshotCollection(location=snapshot_collection1.location) diffed_snapshot_collection = SnapshotCollection( location=snapshot_collection1.location ) for snapshot in snapshot_collection1: if not snapshot_collection2.get(snapshot.name): diffed_snapshot_collection.add(snapshot) diffed_snapshot_collections.add(diffed_snapshot_collection) return diffed_snapshot_collections def _count_snapshots(self, snapshot_collections: "SnapshotCollections") -> int: """ Count all the snapshots at all the locations in the snapshot collections """ return sum( len(snapshot_collection) for snapshot_collection in snapshot_collections ) def _is_matching_path(self, snapshot_location: str, provided_path: str) -> bool: """ Check if a snapshot location matches the path provided by checking that the provided path folder is in a parent position relative to the snapshot location """ path = Path(provided_path) return str(path if path.is_dir() else path.parent) in snapshot_location def _get_matching_path_nodes(self, snapshot_location: str) -> list[list[str]]: """ For the snapshot location provided, get the nodes of the test paths provided to pytest on invocation. If there were no paths provided then this list should be empty. If there are paths without nodes provided then this is a list of empties """ return [ self._provided_test_paths[path] for path in self._provided_test_paths if self._is_matching_path(snapshot_location, path) ] def _provided_nodes_match_name( self, snapshot_location: str, snapshot_name: str, provided_nodes: list[list[str]], ) -> bool: """ Check that a snapshot name matches the node paths provided. If no nodes are filtered, provided_nodes is empty, which means all nodes should be matched. """ if not provided_nodes: return True for node_path in provided_nodes: if snapshot_name in ".".join(node_path): return True return False def _provided_keywords_match_name(self, snapshot_name: str) -> bool: """ Check that a snapshot name would have been included by the keyword expression parsed from the invocation arguments """ names = snapshot_name.split(".") return any( expr.evaluate(lambda subname: any(subname in name for name in names)) for expr in self._keyword_expressions ) def _ran_items_match_name(self, snapshot_location: str, snapshot_name: str) -> bool: """ Check that a snapshot name would match a test node using the Pytest location """ for item in self.ran_items: location = PyTestLocation(item) if location.matches_snapshot_location( snapshot_location ) and location.matches_snapshot_name(snapshot_name): return True return False def _skipped_items_match_name( self, snapshot_location: str, snapshot_name: str ) -> bool: """ Check that a snapshot name should be treated as skipped by the current session This being true means that it will not be deleted even if the it is unused """ for item in self.skipped_items: location = PyTestLocation(item) if location.matches_snapshot_location( snapshot_location ) and location.matches_snapshot_name(snapshot_name): return True return False def _selected_items_match_name( self, snapshot_location: str, snapshot_name: str ) -> bool: """ Check that a snapshot name should be treated as selected by the current session This being true means that if the snapshot was not used then it will be deleted """ if self._keyword_expressions: return self._provided_keywords_match_name(snapshot_name) return self._ran_items_match_name( snapshot_location=snapshot_location, snapshot_name=snapshot_name ) def _ran_items_match_location(self, snapshot_location: str) -> bool: """ Check if any test run in the current session should match the snapshot location This being true means that if no snapshot in the collection was used then it should be discarded as obsolete """ return any( PyTestLocation(item).matches_snapshot_location(snapshot_location) for item in self.ran_items ) @dataclass(frozen=True) class Expression: """ Dumbed down version of _pytest.mark.expression.Expression not available in < 6.0 https://github.com/pytest-dev/pytest/blob/6.0.x/src/_pytest/mark/expression.py Added for pared down support on older pytest version and because the expression module is not public. This only supports inclusion based on simple string matching. """ code: frozenset[str] = field(default_factory=frozenset) def evaluate(self, matcher: Callable[[str], bool]) -> bool: return any(map(matcher, self.code)) @staticmethod def compose(value: str) -> "Expression": delim = " " replace_str = {" or ", " and ", " not ", "(", ")"} for r in replace_str: value = value.replace(f" {r} ", delim) return Expression(code=frozenset(value.split(delim))) syrupy-project-syrupy-7096efd/src/syrupy/session.py000066400000000000000000000216061513542711300227360ustar00rootroot00000000000000from collections import defaultdict from collections.abc import Iterable from dataclasses import ( dataclass, field, ) from enum import Enum from pathlib import Path from typing import ( TYPE_CHECKING, Any, Literal, Optional, ) import pytest from .constants import EXIT_STATUS_FAIL_UNUSED from .data import SnapshotCollections from .location import PyTestLocation from .report import SnapshotReport from .types import ( SerializedData, SnapshotIndex, ) from .utils import ( is_xdist_controller, is_xdist_worker, ) if TYPE_CHECKING: from .assertion import SnapshotAssertion from .extensions.base import AbstractSyrupyExtension class ItemStatus(Enum): NOT_RUN = False PASSED = "passed" FAILED = "failed" SKIPPED = "skipped" _QueuedWriteExtensionKey = tuple[type["AbstractSyrupyExtension"], str] _QueuedWriteTestLocationKey = tuple["PyTestLocation", "SnapshotIndex"] @dataclass class SnapshotSession: pytest_session: "pytest.Session" # List of file extensions to ignore during discovery/processing ignore_file_extensions: list[str] | None = None # Snapshot report generated on finish report: Optional["SnapshotReport"] = None # All the collected test items _collected_items: set["pytest.Item"] = field(default_factory=set) # All the selected test items. Will be set to False until the test item is run. _selected_items: dict[str, ItemStatus] = field(default_factory=dict) _assertions: list["SnapshotAssertion"] = field(default_factory=list) _extensions: dict[str, "AbstractSyrupyExtension"] = field(default_factory=dict) _locations_discovered: defaultdict[str, set[Any]] = field( default_factory=lambda: defaultdict(set) ) # For performance, we buffer snapshot writes in memory before flushing them to disk. In # particular, we want to be able to write to a file on disk only once, rather than having to # repeatedly rewrite it. # # That batching leads to using two layers of dicts here: the outer layer represents the # extension/file-location pair that will be written, and the inner layer represents the # snapshots within that, "indexed" to allow efficient recall. _queued_snapshot_writes: defaultdict[ _QueuedWriteExtensionKey, dict[_QueuedWriteTestLocationKey, "SerializedData"], ] = field(default_factory=lambda: defaultdict(dict)) def _snapshot_write_queue_keys( self, extension: "AbstractSyrupyExtension", test_location: "PyTestLocation", index: "SnapshotIndex", ) -> tuple[_QueuedWriteExtensionKey, _QueuedWriteTestLocationKey]: snapshot_location = extension.get_location( test_location=test_location, index=index ) return (extension.__class__, snapshot_location), (test_location, index) def queue_snapshot_write( self, extension: "AbstractSyrupyExtension", test_location: "PyTestLocation", data: "SerializedData", index: "SnapshotIndex", ) -> None: ext_key, loc_key = self._snapshot_write_queue_keys( extension, test_location, index ) self._queued_snapshot_writes[ext_key][loc_key] = data def flush_snapshot_write_queue(self) -> None: for ( extension_class, snapshot_location, ), queued_write in self._queued_snapshot_writes.items(): if queued_write: extension_class.write_snapshot( snapshot_location=snapshot_location, snapshots=[ (data, loc, index) for (loc, index), data in queued_write.items() ], ) self._queued_snapshot_writes.clear() def recall_snapshot( self, extension: "AbstractSyrupyExtension", test_location: "PyTestLocation", index: "SnapshotIndex", ) -> Optional["SerializedData"]: """Find the current value of the snapshot, for this session, either a pending write or the actual snapshot.""" ext_key, loc_key = self._snapshot_write_queue_keys( extension, test_location, index ) data = self._queued_snapshot_writes[ext_key].get(loc_key) if data is not None: return data # No matching write queued, so just read the snapshot directly: return extension.read_snapshot( test_location=test_location, index=index, session_id=str(id(self)) ) @property def update_snapshots(self) -> bool: return bool(self.pytest_session.config.option.update_snapshots) @property def warn_unused_snapshots(self) -> bool: return bool(self.pytest_session.config.option.warn_unused_snapshots) def collect_items(self, items: list["pytest.Item"]) -> None: self._collected_items.update(self.filter_valid_items(items)) def select_items(self, items: list["pytest.Item"]) -> None: for item in self.filter_valid_items(items): self._selected_items[getattr(item, "nodeid")] = ( # noqa: B009 ItemStatus.NOT_RUN ) def start(self) -> None: self.report = None self._collected_items = set() self._selected_items = {} self._assertions = [] self._extensions = {} self._locations_discovered = defaultdict(set) def ran_item( self, nodeid: str, outcome: Literal["passed", "skipped", "failed"] ) -> None: if nodeid in self._selected_items: try: self._selected_items[nodeid] = ItemStatus(outcome) except ValueError: pass # if we don't understand the outcome, leave the item as "not run" def finish(self) -> int: exitstatus = 0 self.flush_snapshot_write_queue() self.report = SnapshotReport( base_dir=self.pytest_session.config.rootpath, collected_items=self._collected_items, selected_items=self._selected_items, assertions=self._assertions, options=self.pytest_session.config.option, ) if is_xdist_worker(): # TODO: If we're in a pytest-xdist worker, we need to combine the reports # of all the workers so that the controller can handle unused # snapshot removal. return exitstatus elif is_xdist_controller(): # TODO: If we're in a pytest-xdist controller, merge all the reports. # Until this is implemented, running syrupy with pytest-xdist is only # partially functional. return exitstatus if self.report.num_unused: if self.update_snapshots: self.remove_unused_snapshots( unused_snapshot_collections=self.report.unused, used_snapshot_collections=self.report.used, ) elif not self.warn_unused_snapshots: exitstatus |= EXIT_STATUS_FAIL_UNUSED return exitstatus def register_request(self, assertion: "SnapshotAssertion") -> None: self._assertions.append(assertion) test_location = assertion.test_location.filepath extension_class = assertion.extension.__class__ if extension_class not in self._locations_discovered[test_location]: self._locations_discovered[test_location].add(extension_class) discovered_extensions = { discovered.location: assertion.extension for discovered in assertion.extension.discover_snapshots( test_location=assertion.test_location, ignore_extensions=self.ignore_file_extensions, ) if discovered.has_snapshots } self._extensions.update(discovered_extensions) def remove_unused_snapshots( self, unused_snapshot_collections: "SnapshotCollections", used_snapshot_collections: "SnapshotCollections", ) -> None: """ Remove all unused snapshots using the registed extension for the collection file If there is not registered extension and the location is unused delete the file """ for unused_snapshot_collection in unused_snapshot_collections: snapshot_location = unused_snapshot_collection.location extension = self._extensions.get(snapshot_location) if extension: extension.delete_snapshots( snapshot_location=snapshot_location, snapshot_names={ snapshot.name for snapshot in unused_snapshot_collection }, ) elif snapshot_location not in used_snapshot_collections: Path(snapshot_location).unlink() @staticmethod def filter_valid_items(items: list["pytest.Item"]) -> Iterable["pytest.Item"]: return (item for item in items if isinstance(item, pytest.Function)) syrupy-project-syrupy-7096efd/src/syrupy/terminal.py000066400000000000000000000045361513542711300230710ustar00rootroot00000000000000from dataclasses import dataclass from .constants import DISABLE_COLOR_ENV_VARS from .utils import get_env_value def _is_color_disabled() -> bool: return any(map(get_env_value, DISABLE_COLOR_ENV_VARS)) @dataclass class TerminalCodes: ESC: str = "\x1b[" END: str = "m" FOREGROUND_256: str = f"{ESC}38;5;" BACKGROUND_256: str = f"{ESC}48;5;" STYLES = { "bold": "1", "dim": "2", "italic": "3", "underline": "4", "reset": "0", } COLORS = { "black": "0", "red": "1", "green": "2", "yellow": "3", } def _attr(style: str) -> str: if _is_color_disabled(): return "" return f"{TerminalCodes.ESC}{TerminalCodes.STYLES[style]}{TerminalCodes.END}" def _fg(color: int | str) -> str: if _is_color_disabled(): return "" color_code = TerminalCodes.COLORS[color] if isinstance(color, (str,)) else color return f"{TerminalCodes.FOREGROUND_256}{str(color_code)}{TerminalCodes.END}" def _bg(color: int) -> str: if _is_color_disabled(): return "" return f"{TerminalCodes.BACKGROUND_256}{str(color)}{TerminalCodes.END}" def _stylize(text: str | int, formatting: str) -> str: if _is_color_disabled(): return str(text) return f"{formatting}{text}{_attr('reset')}" def reset(text: str | int) -> str: return _stylize(text, _attr("reset")) def red(text: str | int) -> str: return _stylize(text, _fg("red")) def yellow(text: str | int) -> str: return _stylize(text, _fg("yellow")) def green(text: str | int) -> str: return _stylize(text, _fg("green")) def bold(text: str | int) -> str: return _stylize(text, _attr("bold")) def error_style(text: str | int) -> str: return bold(red(text)) def warning_style(text: str | int) -> str: return bold(yellow(text)) def success_style(text: str | int) -> str: return bold(green(text)) def snapshot_style(text: str | int) -> str: return _stylize(text, _bg(225) + _fg(90)) def snapshot_diff_style(text: str | int) -> str: return _stylize(text, _bg(90) + _fg(225)) def received_style(text: str | int) -> str: return _stylize(text, _bg(195) + _fg(23)) def received_diff_style(text: str | int) -> str: return _stylize(text, _bg(23) + _fg(195)) def context_style(text: str | int) -> str: return _stylize(text, _attr("dim")) syrupy-project-syrupy-7096efd/src/syrupy/types.py000066400000000000000000000016521513542711300224160ustar00rootroot00000000000000# noqa: A005 from collections.abc import Callable, Hashable from typing import ( Any, ) SnapshotIndex = int | str SerializableData = Any SerializedData = str | bytes PropertyName = Hashable PropertyValueType = type[SerializableData] PropertyPathEntry = tuple[PropertyName, PropertyValueType] PropertyPath = tuple[PropertyPathEntry, ...] try: from mypy_extensions import NamedArg PropertyMatcher = Callable[ [ NamedArg(SerializableData, "data"), # noqa: F821 NamedArg(PropertyPath, "path"), # noqa: F821 ], SerializableData | None, ] PropertyFilter = Callable[ [ NamedArg(PropertyName, "prop"), # noqa: F821 NamedArg(PropertyPath, "path"), # noqa: F821 ], bool, ] except ImportError: globals()["PropertyMatcher"] = Callable[..., SerializableData | None] globals()["PropertyFilter"] = Callable[..., bool] syrupy-project-syrupy-7096efd/src/syrupy/utils.py000066400000000000000000000124351513542711300224130ustar00rootroot00000000000000import json import os from collections.abc import Iterator, Sequence from contextlib import contextmanager from difflib import ndiff from gettext import gettext from importlib import import_module from pathlib import Path from typing import ( Any, ) from .constants import ( DIFF_LINE_COUNT_LIMIT, DIFF_LINE_WIDTH_LIMIT, SYMBOL_ELLIPSIS, ) from .exceptions import FailedToLoadModuleMember def is_xdist_worker() -> bool: worker_name = os.getenv("PYTEST_XDIST_WORKER") return bool(worker_name and worker_name != "master") def is_xdist_controller() -> bool: worker_count = os.getenv("PYTEST_XDIST_WORKER_COUNT") return bool(worker_count and int(worker_count) > 0 and not is_xdist_worker()) def walk_snapshot_dir( root: str | Path, *, ignore_extensions: list[str] | None = None ) -> Iterator[str]: ignore_exts: set[str] = set(ignore_extensions or []) for filepath in Path(root).rglob("*"): if not filepath.name.startswith(".") and filepath.is_file(): if filepath.suffixes and filepath.suffixes[-1][1:] in ignore_exts: continue yield str(filepath) def import_module_member(path: str) -> Any: sep = "." [*module_parts, module_member_name] = path.split(sep) module_name = sep.join(module_parts) if not module_name: raise FailedToLoadModuleMember( gettext("Cannot load member '{}' without module path").format( module_member_name, ) ) try: module = import_module(module_name) except ModuleNotFoundError as e: raise FailedToLoadModuleMember( gettext("Module '{}' does not exist.").format(module_name) ) from e try: return getattr(module, module_member_name) except AttributeError as e: raise FailedToLoadModuleMember( gettext("Member '{}' not found in module '{}'.").format( module_member_name, module_name, ) ) from e def get_env_value(env_var_name: str) -> object: try: return json.loads(os.environ[env_var_name]) except (KeyError, TypeError, json.decoder.JSONDecodeError): return os.environ.get(env_var_name) @contextmanager def env_context(**kwargs: str) -> Iterator[None]: prev_env = {**os.environ} try: yield os.environ.update(kwargs) finally: os.environ.clear() os.environ.update(prev_env) def set_attrs(obj: Any, attrs: dict[str, Any]) -> Any: for k in attrs: setattr(obj, k, attrs[k]) @contextmanager def obj_attrs(obj: Any, attrs: dict[str, Any]) -> Iterator[None]: prev_attrs = {k: getattr(obj, k, None) for k in attrs} try: yield set_attrs(obj, attrs) finally: set_attrs(obj, prev_attrs) def qdiff( lines_a: "Sequence[str]", lines_b: "Sequence[str]", *, line_diff_limit: int = DIFF_LINE_COUNT_LIMIT, line_size_limit: int = DIFF_LINE_WIDTH_LIMIT, ) -> "Iterator[str]": """ Wrapper around difflib ndiff to bail early https://github.com/python/cpython/issues/65452 """ first_diff_line_idx = 0 first_diff_char_idx = 0 for i in range(max(len(lines_a), len(lines_b))): line_a = "".join(lines_a[i : i + 1]) # noqa E203 line_b = "".join(lines_b[i : i + 1]) # noqa E203 if line_a != line_b: first_diff_line_idx = i for j in range(max(len(line_a), len(line_b))): char_a = line_a[j : j + 1] # noqa E203 char_b = line_b[j : j + 1] # noqa E203 if char_a != char_b: first_diff_char_idx = j break break def adjust_lines(lines: "Sequence[str]") -> "Sequence[str]": line_idx_from = max(first_diff_line_idx - line_diff_limit, 0) line_idx_to = first_diff_line_idx + line_diff_limit symbol_hidden_line = SYMBOL_ELLIPSIS + SYMBOL_ELLIPSIS return ( # include an indicator in the diff if this was not the first line ([symbol_hidden_line] if line_idx_from > 0 else []) # show included lines with the ends truncated off + [ adj_line for n, line in enumerate(lines[line_idx_from:line_idx_to]) # adjust the first line shown to be from the first different spotted for line_start, line_end in [ ( ( max(first_diff_char_idx - line_size_limit, 0) if n == line_idx_from else 0 ), ( first_diff_char_idx + line_size_limit if n == line_idx_from else line_size_limit ), ), ] for adj_line in [ (SYMBOL_ELLIPSIS if line_start > 0 else "") + line[line_start:line_end] + (SYMBOL_ELLIPSIS if line_end < len(line) else "") ] ] # include an indicator in the diff if this was not the last line + ([symbol_hidden_line] if line_idx_to < len(lines) else []) ) return ndiff(adjust_lines(lines_a), adjust_lines(lines_b)) syrupy-project-syrupy-7096efd/tasks/000077500000000000000000000000001513542711300176575ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tasks/__init__.py000066400000000000000000000005121513542711300217660ustar00rootroot00000000000000from invoke import Collection from . import ( benchmark, build, lint, test, ) ns = Collection() # Top level tasks ns.add_task(benchmark.benchmark) ns.add_task(build.dist, name="build") ns.add_task(build.install) ns.add_task(build.release) ns.add_task(test.test) # Module collection tasks ns.add_collection(lint) syrupy-project-syrupy-7096efd/tasks/benchmark.py000066400000000000000000000003101513542711300221550ustar00rootroot00000000000000from invoke import task @task() def benchmark(ctx, report=False): """ Run and generate benchmarks for current code """ ctx.run("pytest benchmarks --benchmark-json=benchmarks.json") syrupy-project-syrupy-7096efd/tasks/build.py000066400000000000000000000037721513542711300213410ustar00rootroot00000000000000import os from datetime import datetime from invoke import task from .utils import ctx_run @task def install(ctx, upgrade=False): """ Install dependencies and update lock file. """ if upgrade: ctx_run(ctx, "poetry update") else: ctx_run(ctx, "poetry lock") ctx_run(ctx, "poetry install") @task def clean(ctx): """ Remove build files e.g. package, distributable, compiled etc. """ ctx_run(ctx, "rm -rf *.egg-info dist build __pycache__ .pytest_cache artifacts/*") def version_scheme(v): if v.exact: return v.format_with("{tag}") return datetime.now().strftime("%Y.%m.%d.%H%M%S%f") @task(pre=[clean]) def dist(ctx): """ Generate version from scm and build package distributable """ from setuptools_scm import get_version version = get_version(version_scheme=version_scheme, local_scheme=lambda _: "") ctx_run(ctx, f"poetry version {version}") ctx_run(ctx, "poetry build") @task def publish(ctx, dry_run=True): """ Upload built package to pypi """ repo_url = "--repository-url https://test.pypi.org/legacy/" if dry_run else "" ctx_run(ctx, f"twine upload --skip-existing {repo_url} dist/*") @task(pre=[dist]) def release(ctx, dry_run=True, version=None): """ Build and publish package to pypi index based on scm version """ from semver.version import Version if not dry_run and not os.environ.get("CI"): print("This is a CI only command") exit(1) if dry_run and not version: version = ctx_run(ctx, "poetry version --short").stdout.strip() if not version: print("Missing version.") exit(1) try: Version.parse(version) should_publish_to_pypi = not dry_run except ValueError: should_publish_to_pypi = False # publish to test to verify builds if dry_run: publish(ctx, dry_run=True) # publish to pypi if test succeeds if should_publish_to_pypi: publish(ctx, dry_run=False) syrupy-project-syrupy-7096efd/tasks/install.py000066400000000000000000000003011513542711300216710ustar00rootroot00000000000000from invoke import task from .utils import ctx_run @task(default=True) def dev(ctx): """ Install the current development version of syrupy """ ctx_run(ctx, "poetry install") syrupy-project-syrupy-7096efd/tasks/lint.py000066400000000000000000000020011513542711300211700ustar00rootroot00000000000000from invoke import ( exceptions, task, ) from .utils import ctx_run lint_commands = { "mypy": lambda _: "python -m mypy --strict src benchmarks", "ruff": lambda fix: f"python -m ruff check {'--fix' if fix else ''} .", "ruff-format": lambda fix: f"python -m ruff format {'' if fix else '--diff'} .", } def run_lint(ctx, section, fix): print(f"\033[1m[{section}]\033[0m") ctx_run(ctx, lint_commands[section](fix)) @task(default=True) def all(ctx, fix=False): # noqa: A001 """ Check and fix syntax using various linters """ last_error = None for section in lint_commands: try: run_lint(ctx, section, fix) print() except exceptions.Failure as ex: last_error = ex if last_error: raise last_error def add_individual_task(name: str): @task(name=name) def lint(ctx, fix=False): run_lint(ctx, name, fix) globals()[name] = lint for section in lint_commands: add_individual_task(section) syrupy-project-syrupy-7096efd/tasks/test.py000066400000000000000000000023131513542711300212070ustar00rootroot00000000000000from invoke import task from .utils import ctx_run @task( help={ "coverage": "Build and report on test coverage", "test-pattern": "Pattern used to select test files to run", "update-snapshots": "Create, update or delete snapshot files", "verbose": "Verbose output e.g. non captured logs etc.", } ) def test( ctx, coverage=False, test_pattern=None, update_snapshots=False, verbose=False, debug=False, ): """ Run entire test suite """ flags = { "-s -vv": verbose, f"-k {test_pattern}": test_pattern, "--snapshot-update": update_snapshots, } coverage_module = "coverage run -m " if coverage else "" test_flags = " ".join(flag for flag, enabled in flags.items() if enabled) if debug and coverage: raise Exception("The debug and coverage options are mutually exclusive.") if debug: ctx_run( ctx, f"python -m debugpy --listen 5678 --wait-for-client -m pytest {test_flags} ./tests", ) else: ctx_run(ctx, f"python -m {coverage_module}pytest {test_flags} ./tests") if coverage: ctx_run(ctx, "coverage lcov -o coverage/coverage.lcov") syrupy-project-syrupy-7096efd/tasks/utils.py000066400000000000000000000001721513542711300213710ustar00rootroot00000000000000import os def ctx_run(ctx, *args, **kwargs): kwargs["pty"] = os.name == "posix" return ctx.run(*args, **kwargs) syrupy-project-syrupy-7096efd/tests/000077500000000000000000000000001513542711300176745ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/__init__.py000066400000000000000000000000001513542711300217730ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/conftest.py000066400000000000000000000015251513542711300220760ustar00rootroot00000000000000import pytest # Constants for testing with extra plugin arguments _NO_ARGS = [] _XDIST_ZERO = ["--numprocesses", "0"] _XDIST_TWO = ["--numprocesses", "2"] @pytest.fixture( params=[_NO_ARGS, _XDIST_ZERO, _XDIST_TWO], ids=["no_plugin", "xdist_zero", "xdist_two"], ) def plugin_args(request: pytest.FixtureRequest) -> list[str]: """Fixture to test with various plugins""" return request.param @pytest.fixture( params=[ _NO_ARGS, _XDIST_ZERO, pytest.param( _XDIST_TWO, marks=pytest.mark.xfail(reason="Not currently compatible with xdist"), ), ], ids=["no_plugin", "xdist_zero", "xdist_two"], ) def plugin_args_fails_xdist(request: pytest.FixtureRequest) -> list[str]: """Fixture to test with various plugins, but expected to fail xdist""" return request.param syrupy-project-syrupy-7096efd/tests/examples/000077500000000000000000000000001513542711300215125ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__init__.py000066400000000000000000000000001513542711300236110ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snaps_example__/000077500000000000000000000000001513542711300251455ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snaps_example__/test_custom_snapshot_directory.ambr000066400000000000000000000001111513542711300343550ustar00rootroot00000000000000# serializer version: 1 # name: test_case_1 'Syrupy is amazing!' # --- syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/000077500000000000000000000000001513542711300243305ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_defaults.ambr000066400000000000000000000006321513542711300314340ustar00rootroot00000000000000# serializer version: 1 # name: test_asserting_multiple_times dict({ 'excluded': 'value', 'my-field': str, }) # --- # name: test_asserting_multiple_times.1 dict({ 'excluded': 'value', 'my-field': int, }) # --- # name: test_asserting_multiple_times_chained dict({ 'my-field': str, }) # --- # name: test_asserting_multiple_times_chained.1 dict({ 'my-field': int, }) # --- syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_defaults/000077500000000000000000000000001513542711300305705ustar00rootroot00000000000000test_asserting_multiple_times_chained_json.1.json000066400000000000000000000000301513542711300424120ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_defaults{ "my-field": "int" } test_asserting_multiple_times_chained_json.json000066400000000000000000000000301513542711300422530ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_defaults{ "my-field": "str" } syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_image_extension/000077500000000000000000000000001513542711300321375ustar00rootroot00000000000000test_jpeg_image.jpg000066400000000000000000000011661513542711300357140ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_image_extensionJFIFHHCC" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?eQ@syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_image_name_suffix/000077500000000000000000000000001513542711300324275ustar00rootroot00000000000000test_png_image_with_custom_name_suffix[blueish].png000066400000000000000000000001321513542711300447140ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_image_name_suffixPNG  IHDR& )!IDAT51AF-uLL3Τ:8>ݠIENDB`test_png_image_with_custom_name_suffix[reddish].png000066400000000000000000000001321513542711300447030ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_image_name_suffixPNG  IHDR& )!IDAT51AF-uLܠs :79֥++IENDB`syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_object_repr.ambr000066400000000000000000000006601513542711300321240ustar00rootroot00000000000000# serializer version: 1 # name: test_snapshot_object_as_named_tuple_class MyCustomReprClass( prop2='a', prop3=set({ 1, 2, 3, }), ) # --- # name: test_snapshot_custom_class MyCustomClass( prop1=1, prop2='a', prop3=set({ 1, 2, 3, }), ) # --- # name: test_snapshot_custom_repr_class MyCustomReprClass( prop1=1, prop2='a', prop3={1, 2, 3}, ) # --- syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_snapshot_name.ambr000066400000000000000000000001601513542711300324600ustar00rootroot00000000000000# serializer version: 1 # name: test_canadian_name🇨🇦 'Name should be test_canadian_name🇨🇦.' # --- syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/test_custom_snapshot_name_suffix.ambr000066400000000000000000000003301513542711300340430ustar00rootroot00000000000000# serializer version: 1 # name: test_snapshot_custom_snapshot_name_suffix[test_is_amazing] 'Syrupy is amazing!' # --- # name: test_snapshot_custom_snapshot_name_suffix[test_is_awesome] 'Syrupy is awesome!' # --- syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/v1/000077500000000000000000000000001513542711300246565ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/v1/test_case_v1.json000066400000000000000000000000241513542711300301250ustar00rootroot00000000000000"From v1 of an API" syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/v2/000077500000000000000000000000001513542711300246575ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/examples/__snapshots__/v2/test_case_v2.json000066400000000000000000000000241513542711300301270ustar00rootroot00000000000000"From v2 of an API" syrupy-project-syrupy-7096efd/tests/examples/test_custom_defaults.py000066400000000000000000000027751513542711300263370ustar00rootroot00000000000000"""Example: Custom snapshot defaults Here we modify snapshot defaults globally, instead of per assert. This gives the ability to modify the snapshot functionality to your hearts content and then simply re-use them, without having to pass those defaults to every assert. Especially useful if there's a lot of tests that need to modify the default behaviour. """ import pytest from syrupy.extensions.json import JSONSnapshotExtension from syrupy.filters import paths from syrupy.matchers import path_type @pytest.fixture def snapshot_matcher(snapshot): return snapshot.with_defaults(matcher=path_type(mapping={"my-field": (str, int)})) @pytest.fixture def snapshot_exclude(snapshot_matcher): return snapshot_matcher.with_defaults(exclude=paths("excluded")) @pytest.fixture def snapshot_json(snapshot_exclude): return snapshot_exclude.with_defaults(extension_class=JSONSnapshotExtension) def test_asserting_multiple_times(snapshot_matcher): assert {"my-field": "my-string", "excluded": "value"} == snapshot_matcher assert {"my-field": 12345, "excluded": "value"} == snapshot_matcher def test_asserting_multiple_times_chained(snapshot_exclude): assert {"my-field": "my-string", "excluded": "value"} == snapshot_exclude assert {"my-field": 12345, "excluded": "value"} == snapshot_exclude def test_asserting_multiple_times_chained_json(snapshot_json): assert {"my-field": "my-string", "excluded": "value"} == snapshot_json assert {"my-field": 12345, "excluded": "value"} == snapshot_json syrupy-project-syrupy-7096efd/tests/examples/test_custom_image_extension.py000066400000000000000000000030611513542711300276730ustar00rootroot00000000000000""" Example: Custom Image Extension The Single File Snapshot Extension writes each snapshot to its own file. For images, this produces a cleaner diff on websites like GitHub. """ import base64 import pytest from syrupy.extensions.single_file import SingleFileSnapshotExtension class JPEGImageExtension(SingleFileSnapshotExtension): file_extension = "jpg" @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(JPEGImageExtension) def test_jpeg_image(snapshot): reddish_square = base64.b64decode( b"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////" b"////////////////////////////////////////////////////////////" b"2wBDAf//////////////////////////////////////////////////////" b"////////////////////////////////wAARCAAEAAQDASIAAhEBAxEB/8QA" b"HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF" b"BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK" b"FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1" b"dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG" b"x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB" b"AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC" b"AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom" b"JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE" b"hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU" b"1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwBlFFFAz//Z" ) assert reddish_square == snapshot syrupy-project-syrupy-7096efd/tests/examples/test_custom_image_name_suffix.py000066400000000000000000000013431513542711300301640ustar00rootroot00000000000000import base64 import pytest from syrupy.extensions.image import PNGImageSnapshotExtension @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(PNGImageSnapshotExtension) def test_png_image_with_custom_name_suffix(snapshot): reddish_square = base64.b64decode( b"iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAIUlEQVQIHTXB" b"MQEAAAABQUYtvpD+dUzu3KBzg84NOjfoBjmmAd3WpSsrAAAAAElFTkSuQmCC" ) blueish_square = base64.b64decode( b"iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAIUlEQVQIHTXB" b"MQEAAAABQUYtvpD+dUzuTKozqc6kOpPqBjg+Ad2g/BLMAAAAAElFTkSuQmCC" ) assert blueish_square == snapshot(name="blueish") assert reddish_square == snapshot(name="reddish") syrupy-project-syrupy-7096efd/tests/examples/test_custom_object_repr.py000066400000000000000000000020631513542711300270140ustar00rootroot00000000000000from syrupy.extensions.amber.serializer import AmberDataSerializer from syrupy.filters import props from syrupy.matchers import path_type class MyCustomClass: prop1 = 1 prop2 = "a" prop3 = {1, 2, 3} def test_snapshot_custom_class(snapshot): assert MyCustomClass() == snapshot class MyCustomReprClass(MyCustomClass): def __repr__(self): state = "\n".join( f" {a}={repr(getattr(self, a))}," for a in sorted(dir(self)) if not a.startswith("_") ) return f"{self.__class__.__name__}(\n{state}\n)" def test_snapshot_custom_repr_class(snapshot): assert MyCustomReprClass() == snapshot def test_snapshot_object_as_named_tuple_class(snapshot): """ Show helper `object_as_named_tuple` to revert representation to amber standard """ assert MyCustomReprClass() == snapshot( exclude=props("prop1"), matcher=path_type( types=(MyCustomReprClass,), replacer=lambda data, _: AmberDataSerializer.object_as_named_tuple(data), ), ) syrupy-project-syrupy-7096efd/tests/examples/test_custom_snapshot_directory.py000066400000000000000000000013621513542711300304420ustar00rootroot00000000000000""" Example: Custom Snapshot Directory Here we extend the Amber extension to change the directory in which snapshots are stored. We explicitly name our new fixture "snapshot" to override the default snapshot fixture. If this is placed in your project's root conftest.py file, it is equivalent to globally overriding the default snapshot directory. """ import pytest from syrupy.extensions.amber import AmberSnapshotExtension DIFFERENT_DIRECTORY = "__snaps_example__" class DifferentDirectoryExtension(AmberSnapshotExtension): snapshot_dirname = DIFFERENT_DIRECTORY @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(DifferentDirectoryExtension) def test_case_1(snapshot): assert "Syrupy is amazing!" == snapshot syrupy-project-syrupy-7096efd/tests/examples/test_custom_snapshot_directory_2.py000066400000000000000000000026611513542711300306660ustar00rootroot00000000000000""" Example: Custom Snapshot Directory Here we extend the Amber extension to change the directory in which snapshots are stored. We explicitly name our new fixture "snapshot" to override the default snapshot fixture. If this is placed in your project's root conftest.py file, it is equivalent to globally overriding the default snapshot directory. """ from pathlib import Path import pytest from syrupy.extensions.json import JSONSnapshotExtension from syrupy.location import PyTestLocation def create_versioned_fixture(version: int): class VersionedJSONExtension(JSONSnapshotExtension): snapshot_dirname = Path("__snapshots__") / Path(f"v{version}") @classmethod def dirname(cls, *, test_location: "PyTestLocation") -> str: return str( Path(test_location.filepath).parent.joinpath( "__snapshots__", f"v{version}" ) ) return VersionedJSONExtension VersionedJSONExtension1 = create_versioned_fixture(version=1) VersionedJSONExtension2 = create_versioned_fixture(version=2) @pytest.fixture def snapshot_v1(snapshot): return snapshot.use_extension(VersionedJSONExtension1) @pytest.fixture def snapshot_v2(snapshot): return snapshot.use_extension(VersionedJSONExtension2) def test_case_v1(snapshot_v1): assert "From v1 of an API" == snapshot_v1 def test_case_v2(snapshot_v2): assert "From v2 of an API" == snapshot_v2 syrupy-project-syrupy-7096efd/tests/examples/test_custom_snapshot_name.py000066400000000000000000000013621513542711300273560ustar00rootroot00000000000000""" Example: Custom Snapshot Name """ import pytest from syrupy.extensions.amber import AmberSnapshotExtension from syrupy.location import PyTestLocation from syrupy.types import SnapshotIndex class CanadianNameExtension(AmberSnapshotExtension): @classmethod def get_snapshot_name( cls, *, test_location: "PyTestLocation", index: "SnapshotIndex" ) -> str: original_name = AmberSnapshotExtension.get_snapshot_name( test_location=test_location, index=index ) return f"{original_name}🇨🇦" @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(CanadianNameExtension) def test_canadian_name(snapshot): assert "Name should be test_canadian_name🇨🇦." == snapshot syrupy-project-syrupy-7096efd/tests/examples/test_custom_snapshot_name_suffix.py000066400000000000000000000003011513542711300307320ustar00rootroot00000000000000def test_snapshot_custom_snapshot_name_suffix(snapshot): assert "Syrupy is amazing!" == snapshot(name="test_is_amazing") assert "Syrupy is awesome!" == snapshot(name="test_is_awesome") syrupy-project-syrupy-7096efd/tests/integration/000077500000000000000000000000001513542711300222175ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/integration/test_custom_comparator.py000066400000000000000000000053531513542711300273770ustar00rootroot00000000000000import pytest @pytest.fixture def testcases_initial(testdir): testdir.makeconftest( """ import pytest import math from syrupy.extensions.amber import AmberSnapshotExtension class CustomSnapshotExtension(AmberSnapshotExtension): def matches(self, *, serialized_data, snapshot_data): try: a = float(serialized_data) b = float(snapshot_data) return math.isclose(a, b, rel_tol=1e-5) except: return False @pytest.fixture def snapshot_custom(snapshot): return snapshot.use_extension(CustomSnapshotExtension) """ ) return { "passed": ( """ def test_passed_custom(snapshot_custom): assert snapshot_custom == 3.0 """ ), "failed": ( """ def test_passed_custom(snapshot_custom): # this comment is required or the test breaks assert snapshot_custom == 4.0 """ ), } @pytest.fixture def generate_snapshots(testdir, testcases_initial): testdir.makepyfile(test_file=testcases_initial["passed"]) result = testdir.runpytest("-v", "--snapshot-update") return result, testdir, testcases_initial @pytest.mark.xfail(strict=False) def test_generated_snapshots(generate_snapshots): result = generate_snapshots[0] result.stdout.re_match_lines((r"1 snapshot generated\.",)) assert "snapshots unused" not in result.stdout.str() assert result.ret == 0 @pytest.mark.xfail(strict=False) def test_approximate_match(generate_snapshots, plugin_args_fails_xdist): testdir = generate_snapshots[1] testdir.makepyfile( test_file=""" def test_passed_custom(snapshot_custom): assert snapshot_custom == 3.2 """ ) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"test_file.py::test_passed_custom PASSED",)) assert result.ret == 0 @pytest.mark.xfail(strict=False) def test_failed_snapshots(generate_snapshots): testdir = generate_snapshots[1] testdir.makepyfile(test_file=generate_snapshots[2]["failed"]) result = testdir.runpytest("-v") result.stdout.re_match_lines((r"1 snapshot failed\.",)) assert result.ret == 1 @pytest.mark.xfail(strict=False) def test_updated_snapshots(generate_snapshots, plugin_args_fails_xdist): _, testdir, initial = generate_snapshots testdir.makepyfile(test_file=initial["failed"]) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"1 snapshot updated\.",)) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_invalid_bytes_single_file.py000066400000000000000000000010021513542711300310150ustar00rootroot00000000000000def test_raises_informative_type_error_when_serializing_non_bytes(testdir): testdir.makepyfile( test_file=""" from syrupy.extensions.single_file import SingleFileSnapshotExtension def test_case(snapshot): assert {"x": 0} == snapshot(extension_class=SingleFileSnapshotExtension) """ ) result = testdir.runpytest("-v") assert result.ret == 1 result.stdout.re_match_lines( (r".*TypeError: Can't serialize.*You must convert the data.*",) ) syrupy-project-syrupy-7096efd/tests/integration/test_pycharm_patch.py000066400000000000000000000157311513542711300264610ustar00rootroot00000000000000from pathlib import Path import pytest # EqualsAssertionError comes from: # https://github.com/JetBrains/intellij-community/blob/cd9bfbd98a7dca730fbc469156ce1ed30364afba/python/helpers/pycharm/teamcity/diff_tools.py#L53 @pytest.fixture def mock_teamcity_diff_tools(testdir: "pytest.Testdir"): teamcity_pkg = testdir.mkpydir("teamcity") diff_tools_file = teamcity_pkg / Path("diff_tools.py") diff_tools_file.write_text( """ class EqualsAssertionError: def __init__(self, expected, actual, msg=None, preformated=False, real_exception=None): # noqa: E501 self.real_exception = real_exception self.expected = expected self.actual = actual self.msg = str(msg) """, "utf-8", ) @pytest.mark.filterwarnings("default") def test_logs_a_warning_if_unable_to_apply_patch(testdir, plugin_args): testdir.makepyfile( test_file=""" def test_case(snapshot): assert snapshot == [1, 2] """ ) testdir.runpytest("-v", "--snapshot-update", *plugin_args) testdir.makepyfile( test_file=""" def test_case(snapshot): assert snapshot == [1, 2, 3] """ ) result = testdir.runpytest("-v", "--snapshot-patch-pycharm-diff", *plugin_args) result.assert_outcomes(failed=1, passed=0, warnings=1) @pytest.mark.filterwarnings("default") def test_patches_pycharm_diff_tools_when_flag_set( testdir, mock_teamcity_diff_tools, plugin_args ): # Generate initial snapshot testdir.makepyfile( test_file=""" def test_case(snapshot): assert snapshot == [1, 2] """ ) testdir.runpytest("-v", "--snapshot-update", *plugin_args) # Generate diff and mimic EqualsAssertionError being thrown testdir.makepyfile( test_file=""" def test_case(snapshot): try: assert snapshot == [1, 2, 3] except: from teamcity.diff_tools import EqualsAssertionError err = EqualsAssertionError(expected=snapshot, actual=[1,2,3]) print("Expected:", repr(err.expected)) print("Actual:", repr(err.actual)) raise """ ) result = testdir.runpytest("-v", "--snapshot-patch-pycharm-diff", *plugin_args) # No warnings because patch should have been successful result.assert_outcomes(failed=1, passed=0, warnings=0) result.stdout.re_match_lines( ( r"Expected: 'list([\n 1,\n 2,\n])'", # Actual is the amber-style list representation r"Actual: 'list([\n 1,\n 2,\n 3,\n])'", ) ) @pytest.mark.filterwarnings("default") def test_patches_pycharm_diff_tools_when_flag_set_and_snapshot_on_right( testdir, mock_teamcity_diff_tools, plugin_args ): # Generate initial snapshot testdir.makepyfile( test_file=""" def test_case(snapshot): assert [1, 2] == snapshot """ ) testdir.runpytest("-v", "--snapshot-update", *plugin_args) # Generate diff and mimic EqualsAssertionError being thrown testdir.makepyfile( test_file=""" def test_case(snapshot): try: assert [1, 2, 3] == snapshot except: from teamcity.diff_tools import EqualsAssertionError err = EqualsAssertionError(expected=[1,2,3], actual=snapshot) print("Expected:", repr(err.expected)) print("Actual:", repr(err.actual)) raise """ ) result = testdir.runpytest("-v", "--snapshot-patch-pycharm-diff", *plugin_args) # No warnings because patch should have been successful result.assert_outcomes(failed=1, passed=0, warnings=0) result.stdout.re_match_lines( ( r"Expected: 'list([\n 1,\n 2,\n])'", # Actual is the amber-style list representation r"Actual: 'list([\n 1,\n 2,\n 3,\n])'", ) ) @pytest.mark.filterwarnings("default") def test_it_does_not_patch_pycharm_diff_tools_by_default( testdir, mock_teamcity_diff_tools, plugin_args ): # Generate initial snapshot testdir.makepyfile( test_file=""" def test_case(snapshot): assert snapshot == [1, 2] """ ) testdir.runpytest("-v", "--snapshot-update", *plugin_args) # Generate diff and mimic EqualsAssertionError being thrown testdir.makepyfile( test_file=""" def test_case(snapshot): try: assert snapshot == [1, 2, 3] except: from teamcity.diff_tools import EqualsAssertionError err = EqualsAssertionError(expected=snapshot, actual=[1,2,3]) print("Expected:", repr(str(err.expected))) print("Actual:", repr(str(err.actual))) raise """ ) result = testdir.runpytest("-v", *plugin_args) # No warnings because patch should have been successful result.assert_outcomes(failed=1, passed=0, warnings=0) result.stdout.re_match_lines( ( r"Expected: 'list([\n 1,\n 2,\n])'", # Actual is the original list's repr. No newlines or amber-style list prefix r"Actual: '[1, 2, 3]'", ) ) @pytest.mark.filterwarnings("default") def test_it_has_no_impact_on_non_syrupy_assertions( testdir, mock_teamcity_diff_tools, plugin_args ): # Generate diff and mimic EqualsAssertionError being thrown testdir.makepyfile( test_file=""" def test_case(): try: assert [1, 3] == [1, 2, 3] except: from teamcity.diff_tools import EqualsAssertionError err = EqualsAssertionError(expected=[1,3], actual=[1,2,3]) print("Expected:", repr(str(err.expected))) print("Actual:", repr(str(err.actual))) raise """ ) result = testdir.runpytest("-v", *plugin_args) # No warnings because patch should have been successful result.assert_outcomes(failed=1, passed=0, warnings=0) result.stdout.re_match_lines( ( r"Expected: '[1, 3]'", r"Actual: '[1, 2, 3]'", ) ) @pytest.mark.filterwarnings("default") def test_has_no_impact_on_real_exceptions_that_are_not_assertion_errors( testdir, mock_teamcity_diff_tools, plugin_args ): # Generate diff and mimic EqualsAssertionError being thrown testdir.makepyfile( test_file=""" def test_case(): try: assert [1, 3] == (1/0) except Exception as err: from teamcity.diff_tools import EqualsAssertionError err = EqualsAssertionError( expected=[1,3], actual=[1,2,3], real_exception=err ) print("Expected:", repr(str(err.expected))) print("Actual:", repr(str(err.actual))) raise """ ) result = testdir.runpytest("-v", *plugin_args) # No warnings because patch should have been successful result.assert_outcomes(failed=1, passed=0, warnings=0) result.stdout.re_match_lines( ( r"Expected: '[1, 3]'", r"Actual: '[1, 2, 3]'", ) ) syrupy-project-syrupy-7096efd/tests/integration/test_pytest_extension.py000066400000000000000000000044421513542711300272600ustar00rootroot00000000000000def test_ignores_non_function_nodes(testdir, plugin_args): conftest = """ import pytest class CustomItem(pytest.Item): def __init__(self, name, **kwargs): super().__init__(name, **kwargs) self._nodeid += "::CUSTOM" def runtest(self): pass def pytest_collect_file(file_path, parent): return CustomItem.from_parent( name=file_path.name, path=file_path, parent=parent ) """ testcase = """ def test_example(snapshot): assert snapshot == 1 """ testdir.makeconftest(conftest) testdir.makepyfile(test_file=testcase) result = testdir.runpytest("test_file.py", "-v", "--snapshot-update", *plugin_args) result.stdout.re_match_lines((r".*test_file.py::CUSTOM.*",)) assert result.ret == 0 def test_handles_pyargs_non_module_when_both_given(testdir, plugin_args): testdir.makeconftest("") testcase = """ def test_example(snapshot): assert snapshot == 1 """ testdir.makepyfile(test_file=testcase) result = testdir.runpytest( "-v", "test_file.py", "--pyargs", "test_file", "--snapshot-update", *plugin_args, ) assert result.ret == 0 def test_does_not_print_empty_snapshot_report(testdir, plugin_args_fails_xdist): testdir.makeconftest("") testcase_no_snapshots = """ def test_example(snapshot): assert 1 """ testcase_yes_snapshots = """ def test_example(snapshot): assert snapshot == 1 """ testdir.makepyfile( test_file_no=testcase_no_snapshots, test_file_yes=testcase_yes_snapshots ) result = testdir.runpytest( "-v", "test_file_no.py", "--snapshot-update", *plugin_args_fails_xdist ) result.stdout.re_match_lines((r".*test_file_no.py.*",)) assert "snapshot report" not in result.stdout.str() assert "test_file_yes" not in result.stdout.str() assert result.ret == 0 result = testdir.runpytest( "-v", "test_file_yes.py", "--snapshot-update", *plugin_args_fails_xdist ) result.stdout.re_match_lines((r".*test_file_yes.py.*", r".*snapshot report.*")) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_single_file_multiple_extensions.py000066400000000000000000000044711513542711300323100ustar00rootroot00000000000000from pathlib import Path def test_multiple_file_extensions(testdir, plugin_args_fails_xdist): file_extension = "ext2.ext1" testcase = f""" import pytest from syrupy.extensions.single_file import SingleFileSnapshotExtension class DotInFileExtension(SingleFileSnapshotExtension): file_extension = "{file_extension}" @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(DotInFileExtension) def test_dot_in_filename(snapshot): assert b"expected_data" == snapshot """ test_file: Path = testdir.makepyfile(test_file=testcase) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"1 snapshot generated\.",)) assert "snapshots unused" not in result.stdout.str() assert result.ret == 0 snapshot_file = ( Path(test_file).parent / "__snapshots__" / "test_file" / f"test_dot_in_filename.{file_extension}" ) assert snapshot_file.exists() result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"1 snapshot passed\.",)) assert "snapshots unused" not in result.stdout.str() assert result.ret == 0 def test_class_style(testdir, plugin_args_fails_xdist): """ Regression test for https://github.com/syrupy-project/syrupy/issues/717 """ testcase = """ import pytest from syrupy.extensions.json import JSONSnapshotExtension @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(JSONSnapshotExtension) class TestFoo: def test_foo(self, snapshot): assert { 'key': 'value' } == snapshot """ test_file: Path = testdir.makepyfile(test_file=testcase) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"1 snapshot generated\.",)) assert "deleted" not in result.stdout.str() assert result.ret == 0 snapshot_file = ( Path(test_file).parent / "__snapshots__" / "test_file" / "TestFoo.test_foo.json" ) assert snapshot_file.exists() result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"1 snapshot passed\.",)) assert "snapshots unused" not in result.stdout.str() assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_diff.py000066400000000000000000000032511513542711300264600ustar00rootroot00000000000000import pytest _TEST = """ def test_foo(snapshot): assert {**base} == snapshot(name="a") assert {**base, **extra} == snapshot(name="b", diff="a") """ def _make_file(testdir, base, extra): testdir.makepyfile( test_file="\n\n".join([f"base = {base!r}", f"extra = {extra!r}", _TEST]) ) def _run_test(testdir, base, extra, expected_update_lines): _make_file(testdir, base=base, extra=extra) # Run with --snapshot-update, to generate/update snapshots: result = testdir.runpytest( "-v", "--snapshot-update", ) result.stdout.re_match_lines((expected_update_lines,)) assert result.ret == 0 # Run without --snapshot-update, to validate the snapshots are actually up-to-date result = testdir.runpytest("-v") result.stdout.re_match_lines((r"2 snapshots passed\.",)) assert result.ret == 0 def test_diff_lifecycle(testdir) -> pytest.Testdir: # first: create both snapshots completely from scratch _run_test( testdir, base={"A": 1}, extra={"X": 10}, expected_update_lines=r"2 snapshots generated\.", ) # second: edit the base data, to change the data for both snapshots (only changes the serialized output for the base snapshot `a`). _run_test( testdir, base={"A": 1, "B": 2}, extra={"X": 10}, expected_update_lines=r"1 snapshot passed. 1 snapshot updated\.", ) # third: edit just the extra data (only changes the serialized output for the diff snapshot `b`) _run_test( testdir, base={"A": 1, "B": 2}, extra={"X": 10, "Y": 20}, expected_update_lines=r"1 snapshot passed. 1 snapshot updated\.", ) syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_defaults.py000066400000000000000000000010571513542711300307510ustar00rootroot00000000000000import pytest @pytest.fixture def testcases(): return { "inject": ( """ def test_injection(snapshot): assert snapshot is not None """ ), } @pytest.fixture def run_testcases(testdir, testcases): pyfile_content = "\n\n".join(testcases.values()) testdir.makepyfile(test_file=pyfile_content) return testdir.runpytest("-v") def test_injected_fixture(run_testcases): run_testcases.stdout.fnmatch_lines(["*::test_injection PASSED*"]) assert run_testcases.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_diff_mode.py000066400000000000000000000024341513542711300310560ustar00rootroot00000000000000import pytest @pytest.fixture def testfile(testdir) -> pytest.Testdir: testdir.makepyfile( test_file=( """ def test_case(snapshot): assert snapshot == "some-value" """ ), ) return testdir def test_diff_mode_disabled_does_not_print_diff( testfile, ): # Generate initial snapshot result = testfile.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines((r"1 snapshot generated\.",)) assert result.ret == 0 # Modify snapshot to generate diff testfile.makepyfile( test_file=( """ def test_case(snapshot): assert snapshot == "some-other-value" """ ), ) # With diff we expect to see "some-other-value" result = testfile.runpytest("-v", "--snapshot-diff-mode=detailed") result.stdout.re_match_lines( ( r".*- 'some-value'", r".*\+ 'some-other-value'", ) ) assert result.ret == 1 # Without diff we do not expect to see "some-other-value" result = testfile.runpytest("-v", "--snapshot-diff-mode=disabled") result.stdout.no_re_match_line(r".*- 'some-value'") result.stdout.no_re_match_line(r".*\+ 'some-other-value'") assert result.ret == 1 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_dirname.py000066400000000000000000000052331513542711300305610ustar00rootroot00000000000000from pathlib import Path import pytest @pytest.fixture def testcases(): return { "base": ( """ def test_a(snapshot): assert snapshot(name="xyz") == "case 1" assert snapshot(name="zyx") == "case 2" """ ), "modified": ( """ def test_a(snapshot): assert snapshot(name="xyz") == "case 1" assert snapshot(name="zyx") == "case ??" """ ), } @pytest.fixture def run_testcases(pytester, testcases) -> tuple[pytest.Pytester, dict[str, str]]: pytester.makepyfile(test_1=testcases["base"]) result = pytester.runpytest( "-v", "--snapshot-dirname=snaps", "--snapshot-update", ) result.stdout.re_match_lines((r"2 snapshots generated\.",)) return pytester, testcases def test_run_all(run_testcases, plugin_args_fails_xdist): pytester, _ = run_testcases result = pytester.runpytest( "-v", "--snapshot-dirname=snaps", *plugin_args_fails_xdist ) result.stdout.re_match_lines(("2 snapshots passed",)) assert result.ret == 0 # Assert there's a snaps folder but no __snapshots__ folder expected_dir = pytester.path / Path("snaps") unexpected_dir = pytester.path / Path("__snapshots__") assert expected_dir.exists() assert not unexpected_dir.exists() def test_failure(run_testcases, plugin_args_fails_xdist): pytester, testcases = run_testcases pytester.makepyfile(test_1=testcases["modified"]) result = pytester.runpytest( "-vv", "--snapshot-dirname=snaps", *plugin_args_fails_xdist ) result.stdout.re_match_lines(("1 snapshot failed. 1 snapshot passed.",)) assert result.ret == 1 # Assert there's a snaps folder but no __snapshots__ folder expected_dir = pytester.path / Path("snaps") unexpected_dir = pytester.path / Path("__snapshots__") assert expected_dir.exists() assert not unexpected_dir.exists() def test_update(run_testcases, plugin_args_fails_xdist): pytester, testcases = run_testcases pytester.makepyfile(test_1=testcases["modified"]) result = pytester.runpytest( "-v", "--snapshot-dirname=snaps", "--snapshot-update", *plugin_args_fails_xdist ) assert "Can not relate snapshot name" not in str(result.stdout) result.stdout.re_match_lines(("1 snapshot passed. 1 snapshot updated.",)) assert result.ret == 0 # Assert there's a snaps folder but no __snapshots__ folder expected_dir = pytester.path / Path("snaps") unexpected_dir = pytester.path / Path("__snapshots__") assert expected_dir.exists() assert not unexpected_dir.exists() syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_extension.py000066400000000000000000000022741513542711300311600ustar00rootroot00000000000000from pathlib import Path import pytest @pytest.fixture def testfile(testdir): testdir.makepyfile( test_file=( """ def test_default(snapshot): assert b"default extension serializer" == snapshot """ ), ) return testdir def test_snapshot_default_extension_option_success(testfile): result = testfile.runpytest( "-v", "--snapshot-update", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", ) result.stdout.re_match_lines((r"1 snapshot generated\.",)) assert Path( testfile.tmpdir, "__snapshots__", "test_file", "test_default.raw" ).exists() assert not result.ret def test_snapshot_default_extension_option_failure(testfile): result = testfile.runpytest( "-v", "--snapshot-update", "--snapshot-default-extension", "syrupy.extensions.amber.DoesNotExistExtension", ) result.stdout.re_match_lines((r".*: Member 'DoesNotExistExtension' not found.*",)) assert not Path( testfile.tmpdir, "__snapshots__", "test_file", "test_default.raw" ).exists() assert result.ret syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_extension_pythonpath.py000066400000000000000000000046551513542711300334430ustar00rootroot00000000000000import textwrap from pathlib import Path import pytest import syrupy SUBDIR = "subdir_not_on_default_path" @pytest.fixture(autouse=True) def cache_clear(): syrupy.__import_extension.cache_clear() @pytest.fixture def testfile(pytester): subdir = pytester.mkpydir(SUBDIR) Path( subdir, "extension_file.py", ).write_text( data=textwrap.dedent( """ from syrupy.extensions.single_file import SingleFileSnapshotExtension class MySingleFileExtension(SingleFileSnapshotExtension): pass """ ), encoding="utf-8", ) pytester.makepyfile( test_file=( """ def test_default(snapshot): assert b"default extension serializer" == snapshot """ ) ) return pytester def test_snapshot_default_extension_option_success(testfile): testfile.makeini( f""" [pytest] pythonpath = {Path(testfile.path, SUBDIR).as_posix()} """ ) result = testfile.runpytest( "-v", "--snapshot-update", "--snapshot-default-extension", "extension_file.MySingleFileExtension", ) result.stdout.re_match_lines((r"1 snapshot generated\.",)) assert Path( testfile.path, "__snapshots__", "test_file", "test_default.raw" ).exists() assert not result.ret def test_snapshot_default_extension_option_module_not_found(testfile): result = testfile.runpytest( "-v", "--snapshot-update", "--snapshot-default-extension", "extension_file.MySingleFileExtension", ) result.stdout.re_match_lines((r".*: Module 'extension_file' does not exist.*",)) assert not Path( testfile.path, "__snapshots__", "test_file", "test_default.raw" ).exists() assert result.ret def test_snapshot_default_extension_option_failure(testfile): testfile.makeini( f""" [pytest] pythonpath = {Path(testfile.path, SUBDIR).as_posix()} """ ) result = testfile.runpytest( "-v", "--snapshot-update", "--snapshot-default-extension", "extension_file.DoesNotExistExtension", ) result.stdout.re_match_lines((r".*: Member 'DoesNotExistExtension' not found.*",)) assert not Path( testfile.path, "__snapshots__", "test_file", "test_default.raw" ).exists() assert result.ret syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_ignore_file_extensions.py000066400000000000000000000015701513542711300337030ustar00rootroot00000000000000from pathlib import Path def test_ignore_file_extensions(testdir): # Generate initial snapshot file testdir.makepyfile( test_file=( """ def test_case(snapshot): assert snapshot == "some-value" """ ), ) result = testdir.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines((r"1 snapshot generated\.",)) assert result.ret == 0 # Duplicate the snapshot file with "dvc" file extension snapshot_file = Path(testdir.tmpdir, "__snapshots__", "test_file.ambr") dvc_file = snapshot_file.with_suffix(".ambr.dvc") dvc_file.write_text(snapshot_file.read_text()) # Run with ignored file extension result = testdir.runpytest( "-v", "--snapshot-details", "--snapshot-ignore-file-extensions=dvc" ) result.stdout.no_re_match_line(r".*1 snapshot unused.*") syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_include_details.py000066400000000000000000000127361513542711300323000ustar00rootroot00000000000000import pytest @pytest.fixture def testcases(): return { "used": ( """ def test_used(snapshot): assert snapshot == 'used' """ ), "unused": ( """ def test_unused(snapshot): assert snapshot == 'unused' """ ), } @pytest.fixture def extra_testcases(): return { "extra_a": ( """ def test_extra_a(snapshot): assert snapshot == 'extra_a' """ ), "extra_b": ( """ def test_extra_b(snapshot): assert snapshot == 'extra_b' """ ), } @pytest.fixture def run_testfiles_with_update(testdir): def run_testfiles_with_update_impl(**testfiles): testdir.makepyfile( **{ filename: "\n\n".join(cases.values()) for (filename, cases) in testfiles.items() } ) result = testdir.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines((r"[0-9]+ snapshots generated\.",)) return testdir return run_testfiles_with_update_impl @pytest.mark.parametrize( ( "options", "expected_status_code", ), ( (("-v", "--snapshot-details"), 1), (("-v", "--snapshot-details", "--snapshot-warn-unused"), 0), ), ) def test_unused_snapshots_details( options, expected_status_code, run_testfiles_with_update, testcases, plugin_args_fails_xdist, ): testdir = run_testfiles_with_update(test_file=testcases) testdir.makepyfile(test_file=testcases["used"]) result = testdir.runpytest(*options, *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r"1 snapshot passed\. 1 snapshot unused\.", r"Unused test_unused \(__snapshots__[\\/]test_file.ambr\)", r"Re-run pytest with --snapshot-update to delete unused snapshots\.", ) ) assert result.ret == expected_status_code def test_unused_snapshots_details_multiple_tests( run_testfiles_with_update, testcases, extra_testcases, plugin_args_fails_xdist ): testdir = run_testfiles_with_update( test_file=testcases, test_second_file=extra_testcases ) testdir.makepyfile( test_file="\n\n".join(testcases.values()), test_second_file="", ) result = testdir.runpytest("-v", "--snapshot-details", *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r"2 snapshots passed\. 2 snapshots unused\.", r"Unused test_extra_a, test_extra_b " r"\(__snapshots__[\\/]test_second_file.ambr\)", r"Re-run pytest with --snapshot-update to delete unused snapshots\.", ) ) assert result.ret == 1 def test_unused_snapshots_details_multiple_locations( run_testfiles_with_update, testcases, extra_testcases, plugin_args_fails_xdist ): testdir = run_testfiles_with_update( test_file=testcases, test_second_file=extra_testcases ) testdir.makepyfile( test_file=testcases["used"], test_second_file=extra_testcases["extra_a"], ) result = testdir.runpytest("-v", "--snapshot-details", *plugin_args_fails_xdist) result.stdout.re_match_lines_random( ( r"2 snapshots passed\. 2 snapshots unused\.", r"Unused test_extra_b \(__snapshots__[\\/]test_second_file.ambr\)", r"Unused test_unused \(__snapshots__[\\/]test_file.ambr\)", r"Re-run pytest with --snapshot-update to delete unused snapshots\.", ) ) assert result.ret == 1 def test_unused_snapshots_details_no_details_on_deletion( run_testfiles_with_update, testcases, plugin_args_fails_xdist ): testdir = run_testfiles_with_update(test_file=testcases) testdir.makepyfile(test_file=testcases["used"]) result = testdir.runpytest( "-v", "--snapshot-details", "--snapshot-update", *plugin_args_fails_xdist ) result.stdout.re_match_lines( ( r"1 snapshot passed\. 1 unused snapshot deleted\.", r"Deleted test_unused \(__snapshots__[\\/]test_file.ambr\)", ) ) assert result.ret == 0 def test_created_and_updates_details(testdir, plugin_args_fails_xdist): # Generate initial snapshots. testdir.makepyfile( test_generated=""" def test_generated_1(snapshot): assert snapshot == "1" def test_generated_2(snapshot): assert snapshot == "2" """ ) result = testdir.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines((r"2 snapshots generated\.",)) # Update one of the snapshots and generate a new one testdir.makepyfile( test_generated=""" def test_generated_1(snapshot): assert snapshot == "1" def test_generated_2(snapshot): assert snapshot == "2-update" def test_generated_3(snapshot): assert snapshot == "3" """ ) result = testdir.runpytest( "-v", "--snapshot-details", "--snapshot-update", *plugin_args_fails_xdist ) result.stdout.re_match_lines( ( r"1 snapshot passed\. 1 snapshot generated\. 1 snapshot updated\.", r"Generated test_generated_3 \(__snapshots__[\\/]test_generated.ambr\)", r"Updated test_generated_2 \(__snapshots__[\\/]test_generated.ambr\)", ) ) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_name.py000066400000000000000000000033171513542711300300630ustar00rootroot00000000000000import pytest @pytest.fixture def testcases(): return { "base": ( """ def test_a(snapshot): assert snapshot(name="xyz") == "case 1" assert snapshot(name="zyx") == "case 2" """ ), "modified": ( """ def test_a(snapshot): assert snapshot(name="xyz") == "case 1" assert snapshot(name="zyx") == "case ??" """ ), } @pytest.fixture def run_testcases(testdir, testcases): testdir.makepyfile(test_1=testcases["base"]) result = testdir.runpytest( "-v", "--snapshot-update", ) result.stdout.re_match_lines((r"2 snapshots generated\.",)) return testdir, testcases def test_run_all(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines(("2 snapshots passed",)) assert result.ret == 0 def test_failure(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases testdir.makepyfile(test_1=testcases["modified"]) result = testdir.runpytest("-vv", *plugin_args_fails_xdist) result.stdout.re_match_lines(("1 snapshot failed. 1 snapshot passed.",)) assert result.ret == 1 def test_update(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases testdir.makepyfile(test_1=testcases["modified"]) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) assert "Can not relate snapshot name" not in str(result.stdout) result.stdout.re_match_lines(("1 snapshot passed. 1 snapshot updated.",)) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_update.py000066400000000000000000000374001513542711300304250ustar00rootroot00000000000000import sys from pathlib import Path import pytest @pytest.fixture def testcases_initial(): return { "test_used": ( """ import pytest @pytest.mark.parametrize("actual", [1, 2, 3]) def test_used(snapshot, actual): assert snapshot == actual def test_used1(snapshot): assert snapshot == 'unused' assert 'unused' == snapshot """ ), "test_updated_1": ( """ def test_updated_1(snapshot): assert snapshot == ['this', 'will', 'be', 'updated'] """ ), "test_updated_2": ( """ def test_updated_2(snapshot): assert ['this', 'will', 'be', 'updated'] == snapshot """ ), "test_updated_3": ( """ def test_updated_3(snapshot): assert snapshot == ['this', 'will', 'be', 'updated'] """ ), "test_updated_4": ( """ def test_updated_4(snapshot): assert snapshot == "single line change" """ ), "test_updated_5": ( """ def test_updated_5(snapshot): assert snapshot == ''' multiple line changes with some lines staying the same intermittent changes that have to be ignore by the differ output because when there are a lot of changes you only want to see changes you do not want to see this line or this line this line should not show up because new lines are normalised\\r\\n \x1b[38;5;1mthis line should show up because it changes color\x1b[0m ''' """ ), } @pytest.fixture def testcases_updated(testcases_initial): updates = { "test_updated_1": ( """ def test_updated_1(snapshot): assert snapshot == ['this', 'will', 'not', 'match'] """ ), "test_updated_2": ( """ def test_updated_2(snapshot): assert ['this', 'will', 'fail'] == snapshot """ ), "test_updated_3": ( """ def test_updated_3(snapshot): assert snapshot == ['this', 'will', 'be', 'too', 'much'] """ ), "test_updated_4": ( """ def test_updated_4(snapshot): assert snapshot == "sing line changeling" """ ), "test_updated_5": ( """ def test_updated_5(snapshot): assert snapshot == ''' multiple line changes with some lines not staying the same intermittent changes so unchanged lines have to be ignored by the differ cause when there are a lot of changes you only want to see what changed you do not want to see this line or this line this line should not show up because new lines are normalised\\n \x1b[38;5;3mthis line should show up because it changes color\x1b[0m and this line does not exist in the first one ''' """ ), } return {**testcases_initial, **updates} @pytest.fixture def run_testcases(testdir, testcases_initial): sys.path.append(str(testdir.tmpdir)) testdir.makepyfile(**testcases_initial) result = testdir.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines((r"10 snapshots generated.",)) assert "Can not relate snapshot name" not in result.stdout.str() return result, testdir, testcases_initial def test_update_failure_shows_snapshot_diff( run_testcases, testcases_updated, plugin_args_fails_xdist ): testdir = run_testcases[1] testdir.makepyfile(**testcases_updated) result = testdir.runpytest("-vv", *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r".*assert snapshot == \['this', 'will', 'not', 'match'\]", r".*AssertionError: assert \[- snapshot\] == \[\+ received\]", r".* list\(\[", r".* ...", r".* 'will',", r".* - 'be',", r".* - 'updated',", r".* \+ 'not',", r".* \+ 'match',", r".* \]", r".*assert \['this', 'will', 'fail'\] == snapshot", r".*AssertionError: assert \[\+ received\] == \[- snapshot\]", r".* list\(\[", r".* ...", r".* 'will',", r".* - 'be',", r".* \+ 'fail',", r".* - 'updated',", r".* \]", r".*assert snapshot == \['this', 'will', 'be', 'too', 'much'\]", r".*AssertionError: assert \[- snapshot\] == \[\+ received\]", r".* list\(\[", r".* ...", r".* 'be',", r".* - 'updated',", r".* \+ 'too',", r".* \+ 'much',", r".* \]", r".*assert snapshot == \"sing line changeling\"", r".*AssertionError: assert \[- snapshot\] == \[\+ received\]", r".* - 'single line change'", r".* \+ 'sing line changeling'", r".*AssertionError: assert \[- snapshot\] == \[\+ received\]", r".* '", r".* ...", r".* multiple line changes", r".* - with some lines staying the same", r".* \+ with some lines not staying the same", r".* - intermittent changes that have to be ignore by the differ out", r".* \+ intermittent changes so unchanged lines have to be ignored b", r".* - because when there are a lot of changes you only want to see ", r".* \+ cause when there are a lot of changes you only want to see w", r".* you do not want to see this line", r".* ...", r".* ", r".* - \[38;5;1mthis line should show up because it changes color", r".* \+ \[38;5;3mthis line should show up because it changes color", r".* \+ and this line does not exist in the first one", r".* ", r".* '", ) ) assert result.ret == 1 def test_update_success_shows_snapshot_report( run_testcases, testcases_updated, plugin_args_fails_xdist ): testdir = run_testcases[1] testdir.makepyfile(**testcases_updated) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"5 snapshots passed\. 5 snapshots updated\.",)) assert result.ret == 0 def test_update_targets_only_selected_parametrized_tests_for_update_dash_m( run_testcases, plugin_args_fails_xdist ): updated_tests = { "test_used": ( """ import pytest @pytest.mark.parametrize("actual", [1, "2"]) def test_used(snapshot, actual): assert snapshot == actual """ ), } testdir = run_testcases[1] testdir.makepyfile(**updated_tests) result = testdir.runpytest( "-v", "--snapshot-update", *plugin_args_fails_xdist, "-m", "parametrize" ) result.stdout.re_match_lines( ( r"1 snapshot passed\. 1 snapshot updated\. 1 unused snapshot deleted\.", r"Deleted test_used\[3\] \(__snapshots__[\\/]test_used.ambr\)", ) ) snapshot_path = [testdir.tmpdir, "__snapshots__"] assert Path(*snapshot_path, "test_used.ambr").exists() assert Path(*snapshot_path, "test_updated_1.ambr").exists() def test_update_targets_only_selected_parametrized_tests_for_update_dash_k( run_testcases, plugin_args_fails_xdist ): updated_tests = { "test_used": ( """ import pytest @pytest.mark.parametrize("actual", [1, "2", 3]) def test_used(snapshot, actual): assert snapshot == actual """ ), } testdir = run_testcases[1] testdir.makepyfile(**updated_tests) result = testdir.runpytest( "-v", "--snapshot-update", *plugin_args_fails_xdist, "-k", "test_used[2]" ) result.stdout.re_match_lines((r"1 snapshot updated\.",)) assert "Deleted" not in result.stdout.str() snapshot_path = [testdir.tmpdir, "__snapshots__"] assert Path(*snapshot_path, "test_used.ambr").exists() assert Path(*snapshot_path, "test_updated_1.ambr").exists() def test_update_targets_only_selected_parametrized_tests_for_removal_dash_k( run_testcases, plugin_args_fails_xdist ): updated_tests = { "test_used": ( """ import pytest @pytest.mark.parametrize("actual", [1, 2]) def test_used(snapshot, actual): assert snapshot == actual """ ), } testdir = run_testcases[1] testdir.makepyfile(**updated_tests) result = testdir.runpytest( "-v", "--snapshot-update", *plugin_args_fails_xdist, "-k", "test_used[" ) result.stdout.re_match_lines( ( r"2 snapshots passed\. 1 unused snapshot deleted\.", r"Deleted test_used\[3\] \(__snapshots__[\\/]test_used\.ambr\)", ) ) snapshot_path = [testdir.tmpdir, "__snapshots__"] assert Path(*snapshot_path, "test_used.ambr").exists() assert Path(*snapshot_path, "test_updated_1.ambr").exists() def test_update_targets_only_selected_class_tests_dash_k( testdir, plugin_args_fails_xdist ): test_content = """ import pytest class TestClass: def test_case_1(self, snapshot): assert snapshot == 1 def test_case_2(self, snapshot): assert snapshot == 2 """ testdir.makepyfile(test_content=test_content) testdir.runpytest("-v", "--snapshot-update") assert Path(testdir.tmpdir, "__snapshots__", "test_content.ambr").exists() result = testdir.runpytest( "test_content.py", "-v", *plugin_args_fails_xdist, "-k", "test_case_2" ) result.stdout.re_match_lines((r"1 snapshot passed\.",)) assert "snapshot unused" not in result.stdout.str() def test_update_targets_only_selected_module_tests_dash_k( testdir, plugin_args_fails_xdist ): test_content = """ import pytest def test_case_1(snapshot): assert snapshot == 1 def test_case_2(snapshot): assert snapshot == 2 """ testdir.makepyfile(test_content=test_content) testdir.runpytest("-v", "--snapshot-update") assert Path(testdir.tmpdir, "__snapshots__", "test_content.ambr").exists() result = testdir.runpytest( "test_content.py", "-v", *plugin_args_fails_xdist, "-k", "test_case_2" ) result.stdout.re_match_lines((r"1 snapshot passed\.",)) assert "snapshot unused" not in result.stdout.str() def test_update_targets_only_selected_module_tests_nodes( run_testcases, plugin_args_fails_xdist ): testdir = run_testcases[1] snapfile_empty = Path("__snapshots__", "empty_snapfile.ambr") testdir.makefile(".ambr", **{str(snapfile_empty): ""}) testfile = Path(testdir.tmpdir, "test_used.py") result = testdir.runpytest( "-v", f"{testfile}::test_used", "--snapshot-update", *plugin_args_fails_xdist ) result.stdout.re_match_lines((r"3 snapshots passed\.",)) assert "unused" not in result.stdout.str() assert "updated" not in result.stdout.str() assert "deleted" not in result.stdout.str() assert result.ret == 0 assert snapfile_empty.exists() def test_update_targets_only_selected_module_tests_nodes_pyargs( run_testcases, plugin_args_fails_xdist ): testdir = run_testcases[1] snapfile_empty = Path("__snapshots__", "empty_snapfile.ambr") testdir.makefile(".ambr", **{str(snapfile_empty): ""}) result = testdir.runpytest( "-v", "--snapshot-update", *plugin_args_fails_xdist, "--pyargs", "test_used::test_used", ) result.stdout.re_match_lines((r"3 snapshots passed\.",)) assert "unused" not in result.stdout.str() assert "updated" not in result.stdout.str() assert "deleted" not in result.stdout.str() assert result.ret == 0 assert snapfile_empty.exists() def test_update_targets_only_selected_module_tests_file_for_update( run_testcases, plugin_args_fails_xdist ): testdir = run_testcases[1] snapfile_empty = Path("__snapshots__", "empty_snapfile.ambr") testdir.makefile(".ambr", **{str(snapfile_empty): ""}) testdir.makepyfile( test_used=( """ import pytest @pytest.mark.parametrize("actual", [1, 2, 3]) def test_used(snapshot, actual): assert snapshot == actual """ ) ) result = testdir.runpytest( "-v", "test_used.py", "--snapshot-update", *plugin_args_fails_xdist ) result.stdout.re_match_lines( ( r"3 snapshots passed\. 2 unused snapshots deleted\.", r"Deleted test_used1, test_used1\.1 \(__snapshots__[\\/]test_used\.ambr\)", ) ) assert result.ret == 0 assert snapfile_empty.exists() assert Path("__snapshots__", "test_used.ambr").exists() def test_update_targets_only_selected_module_tests_file_for_removal( run_testcases, plugin_args_fails_xdist ): testdir = run_testcases[1] testdir.makepyfile( test_used=( """ def test_used(snapshot): assert True """ ), ) snapfile_empty = Path("__snapshots__", "empty_snapfile.ambr") testdir.makefile(".ambr", **{str(snapfile_empty): ""}) result = testdir.runpytest( "-v", "test_used.py", "--snapshot-update", *plugin_args_fails_xdist ) result.stdout.re_match_lines( ( r"5 unused snapshots deleted\.", r"Deleted test_used1, test_used1\.1, test_used\[1\], test_used\[2\]" r", test_used\[3\] \(__snapshots__[\\/]test_used\.ambr\)", ) ) assert result.ret == 0 assert snapfile_empty.exists() assert not Path("__snapshots__", "test_used.ambr").exists() def test_update_removes_empty_snapshot_collection_only( run_testcases, plugin_args_fails_xdist ): testdir = run_testcases[1] snapfile_empty = Path("__snapshots__", "empty_snapfile.ambr") testdir.makefile(".ambr", **{str(snapfile_empty): ""}) assert snapfile_empty.exists() result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r"10 snapshots passed\. 1 unused snapshot deleted\.", r"Deleted empty snapshot collection " r"\(__snapshots__[\\/]empty_snapfile\.ambr\)", ) ) assert result.ret == 0 assert not snapfile_empty.exists() assert Path("__snapshots__", "test_used.ambr").exists() def test_update_removes_hanging_snapshot_collection_file( run_testcases, plugin_args_fails_xdist ): testdir = run_testcases[1] snapfile_used = Path("__snapshots__", "test_used.ambr") snapfile_hanging = Path("__snapshots__", "hanging_snapfile.abc") testdir.makefile(".abc", **{str(snapfile_hanging): ""}) assert snapfile_hanging.exists() result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r"10 snapshots passed\. 1 unused snapshot deleted\.", r"Deleted unknown snapshot collection " r"\(__snapshots__[\\/]hanging_snapfile\.abc\)", ) ) assert f"{snapfile_used}" not in result.stdout.str() assert result.ret == 0 assert snapfile_used.exists() assert not snapfile_hanging.exists() syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_option_warn_unused.py000066400000000000000000000040441513542711300314730ustar00rootroot00000000000000import pytest @pytest.fixture def testcases(): return { "used": ( """ def test_used(snapshot): assert snapshot == 'used' """ ), "unused": ( """ def test_unused(snapshot): assert snapshot == 'unused' """ ), } @pytest.fixture def run_testcases(testdir, testcases): pyfile_content = "\n\n".join(testcases.values()) testdir.makepyfile(test_file=pyfile_content) result = testdir.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines((r"2 snapshots generated\.",)) return testdir, testcases def test_unused_snapshots_failure(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases testdir.makepyfile(test_file=testcases["used"]) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r"1 snapshot passed\. 1 snapshot unused\.", r"Re-run pytest with --snapshot-update to delete unused snapshots\.", ) ) assert result.ret == 1 def test_unused_snapshots_warning(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases testdir.makepyfile(test_file=testcases["used"]) result = testdir.runpytest("-v", "--snapshot-warn-unused", *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r"1 snapshot passed\. 1 snapshot unused\.", r"Re-run pytest with --snapshot-update to delete unused snapshots\.", ) ) assert result.ret == 0 def test_unused_snapshots_deletion(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases testdir.makepyfile(test_file=testcases["used"]) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines( ( r"1 snapshot passed\. 1 unused snapshot deleted\.", r"Deleted test_unused \(__snapshots__[\\/]test_file\.ambr\)", ) ) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_outside_directory.py000066400000000000000000000050651513542711300313150ustar00rootroot00000000000000import pytest @pytest.fixture(params=["__snapshots__", "snapshots"]) def testcases(testdir, tmp_path, request): dirname = tmp_path.joinpath(request.param) testdir.makeconftest( f""" import pytest from syrupy.extensions.amber import AmberSnapshotExtension class CustomSnapshotExtension(AmberSnapshotExtension): @classmethod def dirname(cls, *, test_location): return {str(dirname)!r} @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(CustomSnapshotExtension) """ ) return { "zero": ( """ def test_do_it(snapshot): pass """ ), "one": ( """ def test_do_it(snapshot): assert snapshot == 'passed1' """ ), "two": ( """ def test_do_it(snapshot): assert snapshot == 'passed1' assert snapshot == 'passed2' """ ), } @pytest.fixture def generate_snapshots(testdir, testcases): testdir.makepyfile(test_file=testcases["two"]) result = testdir.runpytest("-v", "--snapshot-update") return result, testdir, testcases def test_generated_snapshots(generate_snapshots): result = generate_snapshots[0] result.stdout.re_match_lines((r"2 snapshots generated\.",)) assert "snapshots unused" not in result.stdout.str() assert result.ret == 0 def test_unmatched_snapshots(generate_snapshots, plugin_args_fails_xdist): _, testdir, testcases = generate_snapshots testdir.makepyfile(test_file=testcases["one"]) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"1 snapshot passed. 1 snapshot unused\.",)) assert result.ret == 1 def test_updated_snapshots_partial_delete(generate_snapshots, plugin_args_fails_xdist): _, testdir, testcases = generate_snapshots testdir.makepyfile(test_file=testcases["one"]) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines(r"1 snapshot passed. 1 unused snapshot deleted\.") assert result.ret == 0 def test_updated_snapshots_full_delete(generate_snapshots, plugin_args_fails_xdist): _, testdir, testcases = generate_snapshots testdir.makepyfile(test_file=testcases["zero"]) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines(r"2 unused snapshots deleted\.") assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_similar_names_default.py000066400000000000000000000053231513542711300321010ustar00rootroot00000000000000import pytest @pytest.fixture def testcases(): return { "a": ( """ def test_a(snapshot): assert snapshot == 'a' """ ), "b": ( """ def test_b(snapshot): assert snapshot == 'b' """ ), "a_suffix": ( """ def test_a_suffix(snapshot): assert snapshot == 'a_suffix' """ ), } @pytest.fixture def run_testcases(testdir, testcases): pyfile_content = "\n\n".join(testcases.values()) testdir.makepyfile( test_1=pyfile_content, test_2=pyfile_content, test_1_with_suffix=pyfile_content ) result = testdir.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines((r"9 snapshots generated\.",)) return testdir, testcases def test_run_all(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines(("9 snapshots passed",)) assert result.ret == 0 def test_run_single_file(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest("-v", "test_1.py", *plugin_args_fails_xdist) result.stdout.re_match_lines(("3 snapshots passed",)) assert result.ret == 0 def test_run_single_test_case_in_file(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest("-v", "test_2.py::test_a", *plugin_args_fails_xdist) result.stdout.re_match_lines(("1 snapshot passed",)) assert result.ret == 0 def test_run_all_but_one(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-details", "test_1.py", "test_2.py::test_a", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("4 snapshots passed",)) assert result.ret == 0 def test_run_both_files_by_node(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-details", "test_1.py::test_a", "test_2.py::test_a", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("2 snapshots passed",)) assert result.ret == 0 def test_run_both_files_by_node_2(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-details", "test_1.py::test_b", "test_2.py::test_a", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("2 snapshots passed",)) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_similar_names_file_extension.py000066400000000000000000000070701513542711300334710ustar00rootroot00000000000000import pytest @pytest.fixture def testcases(): return { "a": ( """ def test_a(snapshot): assert snapshot == b"a" """ ), "b": ( """ def test_b(snapshot): assert snapshot == b"b" """ ), "a_suffix": ( """ def test_a_suffix(snapshot): assert snapshot == b"a_suffix" """ ), } @pytest.fixture def run_testcases(testdir, testcases): pyfile_content = "\n\n".join(testcases.values()) testdir.makepyfile( test_1=pyfile_content, test_2=pyfile_content, test_1_suffix=pyfile_content ) result = testdir.runpytest( "-v", "--snapshot-update", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", ) result.stdout.re_match_lines((r"9 snapshots generated\.",)) return testdir, testcases def test_run_all(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("9 snapshots passed",)) assert result.ret == 0 def test_run_single_file(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", "test_1.py", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("3 snapshots passed",)) assert result.ret == 0 def test_run_single_test_case_in_file(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", "test_2.py::test_a", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("1 snapshot passed",)) assert result.ret == 0 def test_run_all_but_one(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-details", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", "test_1.py", "test_2.py::test_a", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("4 snapshots passed",)) assert result.ret == 0 def test_run_both_files_by_node(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-details", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", "test_1.py::test_a", "test_2.py::test_a", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("2 snapshots passed",)) assert result.ret == 0 def test_run_both_files_by_node_2(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases result = testdir.runpytest( "-v", "--snapshot-details", "--snapshot-default-extension", "syrupy.extensions.single_file.SingleFileSnapshotExtension", "test_1.py::test_b", "test_2.py::test_a", *plugin_args_fails_xdist, ) result.stdout.re_match_lines(("2 snapshots passed",)) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_skipped.py000066400000000000000000000044341513542711300272130ustar00rootroot00000000000000import pytest @pytest.fixture def testcases(): return { "used": ( """ def test_used(snapshot): assert snapshot == 'used' """ ), "raise-skipped": ( """ import pytest def test_skipped(snapshot): pytest.skip("Skipping...") assert snapshot == 'unused' """ ), "mark-skipped": ( """ import pytest @pytest.mark.skip def test_skipped(snapshot): assert snapshot == 'unused' """ ), "not-skipped": ( """ def test_skipped(snapshot): assert snapshot == 'unused' """ ), } @pytest.fixture def run_testcases(testdir, testcases): pyfile_content = "\n\n".join([testcases["used"], testcases["not-skipped"]]) testdir.makepyfile(test_file=pyfile_content) result = testdir.runpytest("-v", "--snapshot-update") result.stdout.re_match_lines(r"2 snapshots generated\.") return testdir, testcases def test_mark_skipped_snapshots(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases pyfile_content = "\n\n".join([testcases["used"], testcases["mark-skipped"]]) testdir.makepyfile(test_file=pyfile_content) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines(r"1 snapshot passed\.$") assert result.ret == 0 def test_raise_skipped_snapshots(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases pyfile_content = "\n\n".join([testcases["used"], testcases["raise-skipped"]]) testdir.makepyfile(test_file=pyfile_content) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines(r"1 snapshot passed\.$") assert result.ret == 0 def test_skipped_snapshots_update(run_testcases, plugin_args_fails_xdist): testdir, testcases = run_testcases pyfile_content = "\n\n".join([testcases["used"], testcases["raise-skipped"]]) testdir.makepyfile(test_file=pyfile_content) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines(r"1 snapshot passed\.$") assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_snapshot_use_extension.py000066400000000000000000000112021513542711300304330ustar00rootroot00000000000000import pytest @pytest.fixture def testcases_initial(testdir): testdir.makeconftest( """ import pytest from syrupy.extensions.amber import AmberSnapshotExtension from syrupy.extensions.image import ( PNGImageSnapshotExtension, SVGImageSnapshotExtension, ) from syrupy.extensions.single_file import SingleFileSnapshotExtension class CustomSnapshotExtension(AmberSnapshotExtension): file_extension = "" def serialize(self, data, **kwargs): return str(data) @classmethod def get_snapshot_name(cls, *, test_location, index): testname = test_location.testname[::-1] return f"{testname}.{index}" @classmethod def get_file_basename(cls, *, test_location, index): return test_location.basename[::-1] @pytest.fixture def snapshot_custom(snapshot): return snapshot.use_extension(CustomSnapshotExtension) @pytest.fixture def snapshot_single(snapshot): return snapshot.use_extension(SingleFileSnapshotExtension) @pytest.fixture def snapshot_png(snapshot): return snapshot.use_extension(PNGImageSnapshotExtension) @pytest.fixture def snapshot_svg(snapshot): return snapshot.use_extension(SVGImageSnapshotExtension) """ ) return { "passed": ( """ def test_passed_custom(snapshot_custom): assert snapshot_custom == 'passed1' assert snapshot_custom == 'passed2' def test_passed_single(snapshot_single): assert snapshot_single == b'passed1' assert snapshot_single == b'passed2' """ ), "failed": ( """ def test_failed_single(snapshot_single): assert snapshot_single == 'failed' def test_failed_image(snapshot_png): assert "not a byte string" == snapshot_png """ ), } @pytest.fixture def testcases_updated(testcases_initial): updated_testcases = { "passed": ( """ def test_passed_single(snapshot_single): assert snapshot_single == b'passed' """ ) } return {**testcases_initial, **updated_testcases} @pytest.fixture def generate_snapshots(testdir, testcases_initial): testdir.makepyfile(test_file=testcases_initial["passed"]) result = testdir.runpytest("-v", "--snapshot-update") return result, testdir, testcases_initial # xdist behavior different on Windows - needs to be reviewed def test_unsaved_snapshots(testdir, testcases_initial): testdir.makepyfile(test_file=testcases_initial["passed"]) result = testdir.runpytest("-v") result.stdout.re_match_lines( (r".*Snapshot 'test_passed_single' does not exist!", r".*\+ b'passed1'") ) assert result.ret == 1 def test_failed_snapshots(testdir, testcases_initial, plugin_args_fails_xdist): testdir.makepyfile(test_file=testcases_initial["failed"]) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"2 snapshots failed\.",)) assert result.ret == 1 def test_generated_snapshots(generate_snapshots): result = generate_snapshots[0] result.stdout.re_match_lines((r"4 snapshots generated\.",)) assert "snapshots unused" not in result.stdout.str() assert result.ret == 0 def test_unmatched_snapshots( generate_snapshots, testcases_updated, plugin_args_fails_xdist ): testdir = generate_snapshots[1] testdir.makepyfile(test_file=testcases_updated["passed"]) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines((r"1 snapshot failed\. 2 snapshots unused\.",)) assert result.ret == 1 def test_updated_snapshots( generate_snapshots, testcases_updated, plugin_args_fails_xdist ): testdir = generate_snapshots[1] testdir.makepyfile(test_file=testcases_updated["passed"]) result = testdir.runpytest("-v", "--snapshot-update", *plugin_args_fails_xdist) result.stdout.re_match_lines( (r"1 snapshot updated\. 2 unused snapshots deleted\.",) ) assert result.ret == 0 def test_warns_on_snapshot_name(generate_snapshots): result = generate_snapshots[0] result.stdout.re_match_lines( ( r".*Warning:\s+", r"\s+Can not relate snapshot location", r"\s+Can not relate snapshot name", r"4 snapshots generated\.", ) ) assert result.ret == 0 syrupy-project-syrupy-7096efd/tests/integration/test_xfail.py000066400000000000000000000031341513542711300247340ustar00rootroot00000000000000def test_no_failure_printed_if_all_failures_xfailed(testdir, plugin_args): testdir.makepyfile( test_file=( """ import pytest @pytest.mark.xfail(reason="Failure expected.") def test_a(snapshot): assert snapshot == 'does-not-exist' """ ) ) result = testdir.runpytest("-v", *plugin_args) result.stdout.no_re_match_line(r".*snapshot failed*") assert result.ret == 0 def test_failures_printed_if_only_some_failures_xfailed( testdir, plugin_args_fails_xdist ): testdir.makepyfile( test_file=( """ import pytest @pytest.mark.xfail(reason="Failure expected.") def test_a(snapshot): assert snapshot == 'does-not-exist' def test_b(snapshot): assert snapshot == 'other' """ ) ) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines((r".*1 snapshot failed*",)) result.stdout.re_match_lines((r".*1 snapshot xfailed*",)) assert result.ret == 1 def test_failure_printed_if_xfail_does_not_run(testdir, plugin_args_fails_xdist): testdir.makepyfile( test_file=( """ import pytest @pytest.mark.xfail(False, reason="Failure expected.") def test_a(snapshot): assert snapshot == 'does-not-exist' """ ) ) result = testdir.runpytest("-v", *plugin_args_fails_xdist) result.stdout.re_match_lines((r".*1 snapshot failed*",)) result.stdout.no_re_match_line(r".*1 snapshot xfailed*") assert result.ret == 1 syrupy-project-syrupy-7096efd/tests/syrupy/000077500000000000000000000000001513542711300212475ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/__init__.py000066400000000000000000000000001513542711300233460ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/__snapshots__/000077500000000000000000000000001513542711300240655ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/__snapshots__/test_diff_mode.ambr000066400000000000000000000002001513542711300276730ustar00rootroot00000000000000# serializer version: 1 # name: test_can_be_stringified 'detailed' # --- # name: test_can_be_stringified.1 'disabled' # --- syrupy-project-syrupy-7096efd/tests/syrupy/__snapshots__/test_doctest.ambr000066400000000000000000000013471513542711300274410ustar00rootroot00000000000000# serializer version: 1 # name: DocTestClass DocTestClass( obj_attr='test class attr', ) # --- # name: DocTestClass.1 DocTestClass( obj_attr='test class attr', ) # --- # name: DocTestClass.NestedDocTestClass NestedDocTestClass( nested_obj_attr='nested doc test class attr', ) # --- # name: DocTestClass.NestedDocTestClass.doctest_method 'nested doc test method return value' # --- # name: DocTestClass.doctest_method 'doc test method return value' # --- # name: doctest_fn 'doc test fn return value' # --- # name: test_doctest.txt 'There must be a break after every snapshot assertion' # --- # name: test_doctest.txt.1 'constant value' # --- # name: test_doctest.txt.2 set({ 1, 2, 3, }) # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/000077500000000000000000000000001513542711300234465ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__init__.py000066400000000000000000000000001513542711300255450ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/000077500000000000000000000000001513542711300262645ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_amber_single_file/000077500000000000000000000000001513542711300327515ustar00rootroot00000000000000test_amber_single_file.1.ambr000066400000000000000000000001331513542711300403560ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_amber_single_file# serializer version: 1 # name: test_amber_single_file.1 dict({ 'a': 'b', }) # --- test_amber_single_file.2.ambr000066400000000000000000000002051513542711300403570ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_amber_single_file# serializer version: 1 # name: test_amber_single_file.2 ''' Multi line string ''' # --- test_amber_single_file.ambr000066400000000000000000000001011513542711300402120ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_amber_single_file# serializer version: 1 # name: test_amber_single_file 1 # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_base.ambr000066400000000000000000000547311513542711300311120ustar00rootroot00000000000000# serializer version: 1 # name: TestSnapshotReporter.test_diff_large[SnapshotReporterNoContext] ''' ... - 101aaaaaaaaaaaaaaaaaaaab + 101aaaaaaaaaaaaaaaaaaaa - 102aaaaaaaaaaaaaaaaaaaab + 102aaaaaaaaaaaaaaaaaaaa - 103aaaaaaaaaaaaaaaaaaaab + 103aaaaaaaaaaaaaaaaaaaa - 104aaaaaaaaaaaaaaaaaaaab + 104aaaaaaaaaaaaaaaaaaaa - 105aaaaaaaaaaaaaaaaaaaab + 105aaaaaaaaaaaaaaaaaaaa - 106aaaaaaaaaaaaaaaaaaaab + 106aaaaaaaaaaaaaaaaaaaa - 107aaaaaaaaaaaaaaaaaaaab + 107aaaaaaaaaaaaaaaaaaaa - 108aaaaaaaaaaaaaaaaaaaab + 108aaaaaaaaaaaaaaaaaaaa - 109aaaaaaaaaaaaaaaaaaaab + 109aaaaaaaaaaaaaaaaaaaa - 110aaaaaaaaaaaaaaaaaaaab + 110aaaaaaaaaaaaaaaaaaaa - 111aaaaaaaaaaaaaaaaaaaab + 111aaaaaaaaaaaaaaaaaaaa - 112aaaaaaaaaaaaaaaaaaaab + 112aaaaaaaaaaaaaaaaaaaa - 113aaaaaaaaaaaaaaaaaaaab + 113aaaaaaaaaaaaaaaaaaaa - 114aaaaaaaaaaaaaaaaaaaab + 114aaaaaaaaaaaaaaaaaaaa - 115aaaaaaaaaaaaaaaaaaaab + 115aaaaaaaaaaaaaaaaaaaa - 116aaaaaaaaaaaaaaaaaaaab + 116aaaaaaaaaaaaaaaaaaaa - 117aaaaaaaaaaaaaaaaaaaab + 117aaaaaaaaaaaaaaaaaaaa - 118aaaaaaaaaaaaaaaaaaaab + 118aaaaaaaaaaaaaaaaaaaa - 119aaaaaaaaaaaaaaaaaaaab + 119aaaaaaaaaaaaaaaaaaaa - 120aaaaaaaaaaaaaaaaaaaab + 120aaaaaaaaaaaaaaaaaaaa - 121aaaaaaaaaaaaaaaaaaaab + 121aaaaaaaaaaaaaaaaaaaa - 122aaaaaaaaaaaaaaaaaaaab + 122aaaaaaaaaaaaaaaaaaaa - 123aaaaaaaaaaaaaaaaaaaab + 123aaaaaaaaaaaaaaaaaaaa - 124aaaaaaaaaaaaaaaaaaaab + 124aaaaaaaaaaaaaaaaaaaa - 125aaaaaaaaaaaaaaaaaaaab + 125aaaaaaaaaaaaaaaaaaaa - 126aaaaaaaaaaaaaaaaaaaab + 126aaaaaaaaaaaaaaaaaaaa - 127aaaaaaaaaaaaaaaaaaaab + 127aaaaaaaaaaaaaaaaaaaa - 128aaaaaaaaaaaaaaaaaaaab + 128aaaaaaaaaaaaaaaaaaaa - 129aaaaaaaaaaaaaaaaaaaab + 129aaaaaaaaaaaaaaaaaaaa - 130aaaaaaaaaaaaaaaaaaaab + 130aaaaaaaaaaaaaaaaaaaa - 131aaaaaaaaaaaaaaaaaaaab + 131aaaaaaaaaaaaaaaaaaaa - 132aaaaaaaaaaaaaaaaaaaab + 132aaaaaaaaaaaaaaaaaaaa - 133aaaaaaaaaaaaaaaaaaaab + 133aaaaaaaaaaaaaaaaaaaa - 134aaaaaaaaaaaaaaaaaaaab + 134aaaaaaaaaaaaaaaaaaaa - 135aaaaaaaaaaaaaaaaaaaab + 135aaaaaaaaaaaaaaaaaaaa - 136aaaaaaaaaaaaaaaaaaaab + 136aaaaaaaaaaaaaaaaaaaa - 137aaaaaaaaaaaaaaaaaaaab + 137aaaaaaaaaaaaaaaaaaaa - 138aaaaaaaaaaaaaaaaaaaab + 138aaaaaaaaaaaaaaaaaaaa - 139aaaaaaaaaaaaaaaaaaaab + 139aaaaaaaaaaaaaaaaaaaa - 140aaaaaaaaaaaaaaaaaaaab + 140aaaaaaaaaaaaaaaaaaaa - 141aaaaaaaaaaaaaaaaaaaab + 141aaaaaaaaaaaaaaaaaaaa - 142aaaaaaaaaaaaaaaaaaaab + 142aaaaaaaaaaaaaaaaaaaa - 143aaaaaaaaaaaaaaaaaaaab + 143aaaaaaaaaaaaaaaaaaaa - 144aaaaaaaaaaaaaaaaaaaab + 144aaaaaaaaaaaaaaaaaaaa - 145aaaaaaaaaaaaaaaaaaaab + 145aaaaaaaaaaaaaaaaaaaa - 146aaaaaaaaaaaaaaaaaaaab + 146aaaaaaaaaaaaaaaaaaaa - 147aaaaaaaaaaaaaaaaaaaab + 147aaaaaaaaaaaaaaaaaaaa - 148aaaaaaaaaaaaaaaaaaaab + 148aaaaaaaaaaaaaaaaaaaa - 149aaaaaaaaaaaaaaaaaaaab + 149aaaaaaaaaaaaaaaaaaaa - 150aaaaaaaaaaaaaaaaaaaab + 150aaaaaaaaaaaaaaaaaaaa - 151aaaaaaaaaaaaaaaaaaaab + 151aaaaaaaaaaaaaaaaaaaa - 152aaaaaaaaaaaaaaaaaaaab + 152aaaaaaaaaaaaaaaaaaaa - 153aaaaaaaaaaaaaaaaaaaab + 153aaaaaaaaaaaaaaaaaaaa - 154aaaaaaaaaaaaaaaaaaaab + 154aaaaaaaaaaaaaaaaaaaa - 155aaaaaaaaaaaaaaaaaaaab + 155aaaaaaaaaaaaaaaaaaaa - 156aaaaaaaaaaaaaaaaaaaab + 156aaaaaaaaaaaaaaaaaaaa - 157aaaaaaaaaaaaaaaaaaaab + 157aaaaaaaaaaaaaaaaaaaa - 158aaaaaaaaaaaaaaaaaaaab + 158aaaaaaaaaaaaaaaaaaaa - 159aaaaaaaaaaaaaaaaaaaab + 159aaaaaaaaaaaaaaaaaaaa - 160aaaaaaaaaaaaaaaaaaaab + 160aaaaaaaaaaaaaaaaaaaa - 161aaaaaaaaaaaaaaaaaaaab + 161aaaaaaaaaaaaaaaaaaaa - 162aaaaaaaaaaaaaaaaaaaab + 162aaaaaaaaaaaaaaaaaaaa - 163aaaaaaaaaaaaaaaaaaaab + 163aaaaaaaaaaaaaaaaaaaa - 164aaaaaaaaaaaaaaaaaaaab + 164aaaaaaaaaaaaaaaaaaaa - 165aaaaaaaaaaaaaaaaaaaab + 165aaaaaaaaaaaaaaaaaaaa - 166aaaaaaaaaaaaaaaaaaaab + 166aaaaaaaaaaaaaaaaaaaa - 167aaaaaaaaaaaaaaaaaaaab + 167aaaaaaaaaaaaaaaaaaaa - 168aaaaaaaaaaaaaaaaaaaab + 168aaaaaaaaaaaaaaaaaaaa - 169aaaaaaaaaaaaaaaaaaaab + 169aaaaaaaaaaaaaaaaaaaa - 170aaaaaaaaaaaaaaaaaaaab + 170aaaaaaaaaaaaaaaaaaaa - 171aaaaaaaaaaaaaaaaaaaab + 171aaaaaaaaaaaaaaaaaaaa - 172aaaaaaaaaaaaaaaaaaaab + 172aaaaaaaaaaaaaaaaaaaa - 173aaaaaaaaaaaaaaaaaaaab + 173aaaaaaaaaaaaaaaaaaaa - 174aaaaaaaaaaaaaaaaaaaab + 174aaaaaaaaaaaaaaaaaaaa - 175aaaaaaaaaaaaaaaaaaaab + 175aaaaaaaaaaaaaaaaaaaa - 176aaaaaaaaaaaaaaaaaaaab + 176aaaaaaaaaaaaaaaaaaaa - 177aaaaaaaaaaaaaaaaaaaab + 177aaaaaaaaaaaaaaaaaaaa - 178aaaaaaaaaaaaaaaaaaaab + 178aaaaaaaaaaaaaaaaaaaa - 179aaaaaaaaaaaaaaaaaaaab + 179aaaaaaaaaaaaaaaaaaaa - 180aaaaaaaaaaaaaaaaaaaab + 180aaaaaaaaaaaaaaaaaaaa - 181aaaaaaaaaaaaaaaaaaaab + 181aaaaaaaaaaaaaaaaaaaa - 182aaaaaaaaaaaaaaaaaaaab + 182aaaaaaaaaaaaaaaaaaaa - 183aaaaaaaaaaaaaaaaaaaab + 183aaaaaaaaaaaaaaaaaaaa - 184aaaaaaaaaaaaaaaaaaaab + 184aaaaaaaaaaaaaaaaaaaa - 185aaaaaaaaaaaaaaaaaaaab + 185aaaaaaaaaaaaaaaaaaaa - 186aaaaaaaaaaaaaaaaaaaab + 186aaaaaaaaaaaaaaaaaaaa - 187aaaaaaaaaaaaaaaaaaaab + 187aaaaaaaaaaaaaaaaaaaa - 188aaaaaaaaaaaaaaaaaaaab + 188aaaaaaaaaaaaaaaaaaaa - 189aaaaaaaaaaaaaaaaaaaab + 189aaaaaaaaaaaaaaaaaaaa - 190aaaaaaaaaaaaaaaaaaaab + 190aaaaaaaaaaaaaaaaaaaa - 191aaaaaaaaaaaaaaaaaaaab + 191aaaaaaaaaaaaaaaaaaaa - 192aaaaaaaaaaaaaaaaaaaab + 192aaaaaaaaaaaaaaaaaaaa - 193aaaaaaaaaaaaaaaaaaaab + 193aaaaaaaaaaaaaaaaaaaa - 194aaaaaaaaaaaaaaaaaaaab + 194aaaaaaaaaaaaaaaaaaaa - 195aaaaaaaaaaaaaaaaaaaab + 195aaaaaaaaaaaaaaaaaaaa - 196aaaaaaaaaaaaaaaaaaaab + 196aaaaaaaaaaaaaaaaaaaa - 197aaaaaaaaaaaaaaaaaaaab + 197aaaaaaaaaaaaaaaaaaaa - 198aaaaaaaaaaaaaaaaaaaab + 198aaaaaaaaaaaaaaaaaaaa - 199aaaaaaaaaaaaaaaaaaaab + 199aaaaaaaaaaaaaaaaaaaa - 200aaaaaaaaaaaaaaaaaaaab + 200aaaaaaaaaaaaaaaaaaaa ... ''' # --- # name: TestSnapshotReporter.test_diff_large[SnapshotReporter] ''' ...... ... 100aaaaaaaaaaaaaaaaaaaa - 101aaaaaaaaaaaaaaaaaaaab + 101aaaaaaaaaaaaaaaaaaaa - 102aaaaaaaaaaaaaaaaaaaab + 102aaaaaaaaaaaaaaaaaaaa - 103aaaaaaaaaaaaaaaaaaaab + 103aaaaaaaaaaaaaaaaaaaa - 104aaaaaaaaaaaaaaaaaaaab + 104aaaaaaaaaaaaaaaaaaaa - 105aaaaaaaaaaaaaaaaaaaab + 105aaaaaaaaaaaaaaaaaaaa - 106aaaaaaaaaaaaaaaaaaaab + 106aaaaaaaaaaaaaaaaaaaa - 107aaaaaaaaaaaaaaaaaaaab + 107aaaaaaaaaaaaaaaaaaaa - 108aaaaaaaaaaaaaaaaaaaab + 108aaaaaaaaaaaaaaaaaaaa - 109aaaaaaaaaaaaaaaaaaaab + 109aaaaaaaaaaaaaaaaaaaa - 110aaaaaaaaaaaaaaaaaaaab + 110aaaaaaaaaaaaaaaaaaaa - 111aaaaaaaaaaaaaaaaaaaab + 111aaaaaaaaaaaaaaaaaaaa - 112aaaaaaaaaaaaaaaaaaaab + 112aaaaaaaaaaaaaaaaaaaa - 113aaaaaaaaaaaaaaaaaaaab + 113aaaaaaaaaaaaaaaaaaaa - 114aaaaaaaaaaaaaaaaaaaab + 114aaaaaaaaaaaaaaaaaaaa - 115aaaaaaaaaaaaaaaaaaaab + 115aaaaaaaaaaaaaaaaaaaa - 116aaaaaaaaaaaaaaaaaaaab + 116aaaaaaaaaaaaaaaaaaaa - 117aaaaaaaaaaaaaaaaaaaab + 117aaaaaaaaaaaaaaaaaaaa - 118aaaaaaaaaaaaaaaaaaaab + 118aaaaaaaaaaaaaaaaaaaa - 119aaaaaaaaaaaaaaaaaaaab + 119aaaaaaaaaaaaaaaaaaaa - 120aaaaaaaaaaaaaaaaaaaab + 120aaaaaaaaaaaaaaaaaaaa - 121aaaaaaaaaaaaaaaaaaaab + 121aaaaaaaaaaaaaaaaaaaa - 122aaaaaaaaaaaaaaaaaaaab + 122aaaaaaaaaaaaaaaaaaaa - 123aaaaaaaaaaaaaaaaaaaab + 123aaaaaaaaaaaaaaaaaaaa - 124aaaaaaaaaaaaaaaaaaaab + 124aaaaaaaaaaaaaaaaaaaa - 125aaaaaaaaaaaaaaaaaaaab + 125aaaaaaaaaaaaaaaaaaaa - 126aaaaaaaaaaaaaaaaaaaab + 126aaaaaaaaaaaaaaaaaaaa - 127aaaaaaaaaaaaaaaaaaaab + 127aaaaaaaaaaaaaaaaaaaa - 128aaaaaaaaaaaaaaaaaaaab + 128aaaaaaaaaaaaaaaaaaaa - 129aaaaaaaaaaaaaaaaaaaab + 129aaaaaaaaaaaaaaaaaaaa - 130aaaaaaaaaaaaaaaaaaaab + 130aaaaaaaaaaaaaaaaaaaa - 131aaaaaaaaaaaaaaaaaaaab + 131aaaaaaaaaaaaaaaaaaaa - 132aaaaaaaaaaaaaaaaaaaab + 132aaaaaaaaaaaaaaaaaaaa - 133aaaaaaaaaaaaaaaaaaaab + 133aaaaaaaaaaaaaaaaaaaa - 134aaaaaaaaaaaaaaaaaaaab + 134aaaaaaaaaaaaaaaaaaaa - 135aaaaaaaaaaaaaaaaaaaab + 135aaaaaaaaaaaaaaaaaaaa - 136aaaaaaaaaaaaaaaaaaaab + 136aaaaaaaaaaaaaaaaaaaa - 137aaaaaaaaaaaaaaaaaaaab + 137aaaaaaaaaaaaaaaaaaaa - 138aaaaaaaaaaaaaaaaaaaab + 138aaaaaaaaaaaaaaaaaaaa - 139aaaaaaaaaaaaaaaaaaaab + 139aaaaaaaaaaaaaaaaaaaa - 140aaaaaaaaaaaaaaaaaaaab + 140aaaaaaaaaaaaaaaaaaaa - 141aaaaaaaaaaaaaaaaaaaab + 141aaaaaaaaaaaaaaaaaaaa - 142aaaaaaaaaaaaaaaaaaaab + 142aaaaaaaaaaaaaaaaaaaa - 143aaaaaaaaaaaaaaaaaaaab + 143aaaaaaaaaaaaaaaaaaaa - 144aaaaaaaaaaaaaaaaaaaab + 144aaaaaaaaaaaaaaaaaaaa - 145aaaaaaaaaaaaaaaaaaaab + 145aaaaaaaaaaaaaaaaaaaa - 146aaaaaaaaaaaaaaaaaaaab + 146aaaaaaaaaaaaaaaaaaaa - 147aaaaaaaaaaaaaaaaaaaab + 147aaaaaaaaaaaaaaaaaaaa - 148aaaaaaaaaaaaaaaaaaaab + 148aaaaaaaaaaaaaaaaaaaa - 149aaaaaaaaaaaaaaaaaaaab + 149aaaaaaaaaaaaaaaaaaaa - 150aaaaaaaaaaaaaaaaaaaab + 150aaaaaaaaaaaaaaaaaaaa - 151aaaaaaaaaaaaaaaaaaaab + 151aaaaaaaaaaaaaaaaaaaa - 152aaaaaaaaaaaaaaaaaaaab + 152aaaaaaaaaaaaaaaaaaaa - 153aaaaaaaaaaaaaaaaaaaab + 153aaaaaaaaaaaaaaaaaaaa - 154aaaaaaaaaaaaaaaaaaaab + 154aaaaaaaaaaaaaaaaaaaa - 155aaaaaaaaaaaaaaaaaaaab + 155aaaaaaaaaaaaaaaaaaaa - 156aaaaaaaaaaaaaaaaaaaab + 156aaaaaaaaaaaaaaaaaaaa - 157aaaaaaaaaaaaaaaaaaaab + 157aaaaaaaaaaaaaaaaaaaa - 158aaaaaaaaaaaaaaaaaaaab + 158aaaaaaaaaaaaaaaaaaaa - 159aaaaaaaaaaaaaaaaaaaab + 159aaaaaaaaaaaaaaaaaaaa - 160aaaaaaaaaaaaaaaaaaaab + 160aaaaaaaaaaaaaaaaaaaa - 161aaaaaaaaaaaaaaaaaaaab + 161aaaaaaaaaaaaaaaaaaaa - 162aaaaaaaaaaaaaaaaaaaab + 162aaaaaaaaaaaaaaaaaaaa - 163aaaaaaaaaaaaaaaaaaaab + 163aaaaaaaaaaaaaaaaaaaa - 164aaaaaaaaaaaaaaaaaaaab + 164aaaaaaaaaaaaaaaaaaaa - 165aaaaaaaaaaaaaaaaaaaab + 165aaaaaaaaaaaaaaaaaaaa - 166aaaaaaaaaaaaaaaaaaaab + 166aaaaaaaaaaaaaaaaaaaa - 167aaaaaaaaaaaaaaaaaaaab + 167aaaaaaaaaaaaaaaaaaaa - 168aaaaaaaaaaaaaaaaaaaab + 168aaaaaaaaaaaaaaaaaaaa - 169aaaaaaaaaaaaaaaaaaaab + 169aaaaaaaaaaaaaaaaaaaa - 170aaaaaaaaaaaaaaaaaaaab + 170aaaaaaaaaaaaaaaaaaaa - 171aaaaaaaaaaaaaaaaaaaab + 171aaaaaaaaaaaaaaaaaaaa - 172aaaaaaaaaaaaaaaaaaaab + 172aaaaaaaaaaaaaaaaaaaa - 173aaaaaaaaaaaaaaaaaaaab + 173aaaaaaaaaaaaaaaaaaaa - 174aaaaaaaaaaaaaaaaaaaab + 174aaaaaaaaaaaaaaaaaaaa - 175aaaaaaaaaaaaaaaaaaaab + 175aaaaaaaaaaaaaaaaaaaa - 176aaaaaaaaaaaaaaaaaaaab + 176aaaaaaaaaaaaaaaaaaaa - 177aaaaaaaaaaaaaaaaaaaab + 177aaaaaaaaaaaaaaaaaaaa - 178aaaaaaaaaaaaaaaaaaaab + 178aaaaaaaaaaaaaaaaaaaa - 179aaaaaaaaaaaaaaaaaaaab + 179aaaaaaaaaaaaaaaaaaaa - 180aaaaaaaaaaaaaaaaaaaab + 180aaaaaaaaaaaaaaaaaaaa - 181aaaaaaaaaaaaaaaaaaaab + 181aaaaaaaaaaaaaaaaaaaa - 182aaaaaaaaaaaaaaaaaaaab + 182aaaaaaaaaaaaaaaaaaaa - 183aaaaaaaaaaaaaaaaaaaab + 183aaaaaaaaaaaaaaaaaaaa - 184aaaaaaaaaaaaaaaaaaaab + 184aaaaaaaaaaaaaaaaaaaa - 185aaaaaaaaaaaaaaaaaaaab + 185aaaaaaaaaaaaaaaaaaaa - 186aaaaaaaaaaaaaaaaaaaab + 186aaaaaaaaaaaaaaaaaaaa - 187aaaaaaaaaaaaaaaaaaaab + 187aaaaaaaaaaaaaaaaaaaa - 188aaaaaaaaaaaaaaaaaaaab + 188aaaaaaaaaaaaaaaaaaaa - 189aaaaaaaaaaaaaaaaaaaab + 189aaaaaaaaaaaaaaaaaaaa - 190aaaaaaaaaaaaaaaaaaaab + 190aaaaaaaaaaaaaaaaaaaa - 191aaaaaaaaaaaaaaaaaaaab + 191aaaaaaaaaaaaaaaaaaaa - 192aaaaaaaaaaaaaaaaaaaab + 192aaaaaaaaaaaaaaaaaaaa - 193aaaaaaaaaaaaaaaaaaaab + 193aaaaaaaaaaaaaaaaaaaa - 194aaaaaaaaaaaaaaaaaaaab + 194aaaaaaaaaaaaaaaaaaaa - 195aaaaaaaaaaaaaaaaaaaab + 195aaaaaaaaaaaaaaaaaaaa - 196aaaaaaaaaaaaaaaaaaaab + 196aaaaaaaaaaaaaaaaaaaa - 197aaaaaaaaaaaaaaaaaaaab + 197aaaaaaaaaaaaaaaaaaaa - 198aaaaaaaaaaaaaaaaaaaab + 198aaaaaaaaaaaaaaaaaaaa - 199aaaaaaaaaaaaaaaaaaaab + 199aaaaaaaaaaaaaaaaaaaa - 200aaaaaaaaaaaaaaaaaaaab + 200aaaaaaaaaaaaaaaaaaaa ...... ''' # --- # name: TestSnapshotReporter.test_diff_large_lines[SnapshotReporterNoContext] ''' - ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb... + ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... ... ''' # --- # name: TestSnapshotReporter.test_diff_large_lines[SnapshotReporter] ''' - ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb... + ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... ... 19aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... ''' # --- # name: TestSnapshotReporter.test_diff_lines[-0-SnapshotReporterNoContext] ''' ... - line 2 + line 02 ... - line 04 + line 4 ... ''' # --- # name: TestSnapshotReporter.test_diff_lines[-0-SnapshotReporter] ''' line 0 line 1 - line 2 + line 02 line 3 - line 04 + line 4 line 5 ... line 7 ''' # --- # name: TestSnapshotReporter.test_diff_lines[-1-SnapshotReporterNoContext] ''' ... - line 3 + line 3 ... ''' # --- # name: TestSnapshotReporter.test_diff_lines[-1-SnapshotReporter] ''' line 0 ... line 2 - line 3 + line 3 line 4 ... line 7 ''' # --- # name: TestSnapshotReporter.test_diff_lines[-2-SnapshotReporterNoContext] ''' - line 0␍ + line 0␤ ... - line 2␍␤ + line 2␤ - line 3␤ + line 3␍␤ ... ''' # --- # name: TestSnapshotReporter.test_diff_lines[-2-SnapshotReporter] ''' - line 0␍ + line 0␤ line 1 - line 2␍␤ + line 2␤ - line 3␤ + line 3␍␤ line 4 ... line 7 ''' # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_file/000077500000000000000000000000001513542711300316035ustar00rootroot00000000000000TestClass.test_class_method_name.raw000066400000000000000000000000271513542711300406460ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_filethis is in a test classTestClass.test_class_method_parametrized[x].raw000066400000000000000000000000011513542711300430650ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_filexTestClass.test_class_method_parametrized[y].raw000066400000000000000000000000011513542711300430660ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_fileyTestClass.test_class_method_parametrized[z].raw000066400000000000000000000000011513542711300430670ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_fileztest_____underscore.raw000066400000000000000000000000061513542711300362370ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_fileorangetest_special_characters[.123~!@#$%^&()[]{}].raw000066400000000000000000000000251513542711300416260ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_file.123~!@#$%^&*()/[]{}|test_special_characters[].raw000066400000000000000000000000001513542711300373730ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_filetest_special_characters[_].raw000066400000000000000000000000011513542711300375330ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_file_test_special_characters[a].raw000066400000000000000000000000021513542711300375360ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_filea?test_special_characters[space space].raw000066400000000000000000000000131513542711300414670ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_filespace spacetest_underscore.raw000066400000000000000000000000051513542711300354420ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_fileappletest_unicode[greek u1ff4].raw000066400000000000000000000000111513542711300371300ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/__snapshots__/test_single_filegreek ῴsyrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/000077500000000000000000000000001513542711300245345ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__init__.py000066400000000000000000000000001513542711300266330ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__snapshots__/000077500000000000000000000000001513542711300273525ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__snapshots__/test_amber_filters.ambr000066400000000000000000000020171513542711300340720ustar00rootroot00000000000000# serializer version: 1 # name: test_filters_error_prop[path_filter] WithNested( include_me='prop value', nested=CustomClass( include_me='prop value', ), ) # --- # name: test_filters_error_prop[prop_filter] WithNested( include_me='prop value', nested=CustomClass( include_me='prop value', ), ) # --- # name: test_filters_expected_paths dict({ 'list': list([ 2, ]), 'nested': dict({ 'other': 'value', }), }) # --- # name: test_filters_expected_props dict({ 'list': list([ 2, ]), 'nested': dict({ 'other': 'value', }), }) # --- # name: test_includes_nested_path dict({ 'include-me': False, 'layer1': dict({ 'layer2': list([ True, ]), }), }) # --- # name: test_only_includes_expected_props dict({ 'date': 'utc', 0: 'some value', }) # --- # name: test_only_includes_expected_props.1 dict({ 'date': 'utc', 'nested': dict({ 'id': 4, }), 0: 'some value', }) # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__snapshots__/test_amber_matchers.ambr000066400000000000000000000035031513542711300342310ustar00rootroot00000000000000# serializer version: 1 # name: test_matches_expected_type dict({ 'date_created': datetime, 'nested': dict({ 'id': int, }), 'nested_id': 5, 'some_uuid': UUID, }) # --- # name: test_matches_non_deterministic_snapshots dict({ 'a': UUID(...), 'b': dict({ 'b_1': 'This is deterministic', 'b_2': datetime.datetime(...), }), 'c': list([ 'Your wish is my command', 'Do not replace this one', ]), }) # --- # name: test_matches_non_deterministic_snapshots.1 dict({ 'a': UUID('06335e84-2872-4914-8c5d-3ed07d2a2f16'), 'b': dict({ 'b_1': 'This is deterministic', 'b_2': datetime.datetime(2020, 5, 31, 0, 0), }), 'c': list([ 'Replace this one', 'Do not replace this one', ]), }) # --- # name: test_matches_regex_in_regex_mode dict({ 'any_number': int, 'any_number_adjacent': str, 'data': dict({ 'list': list([ dict({ 'date_created': datetime, 'k': '1', }), dict({ 'date_created': datetime, 'k': '2', }), ]), }), 'specific_number': 5, }) # --- # name: test_multiple_matchers dict({ 'datetime': 'MATCHER_2', 'float': 'MATCHER_1', 'number': 'MATCHER_1', }) # --- # name: test_raises_unexpected_type dict({ 'date_created': datetime, 'date_updated': datetime.date(2020, 6, 1), 'nested': dict({ 'id': int, }), 'some_uuid': UUID, }) # --- # name: test_regex_matcher_str_value dict({ 'data': dict({ 'any_number': 3, 'any_string': 'hello', 'list': list([ dict({ 'id': UUID, 'k': '1', }), dict({ 'id': UUID, 'k': '2', }), ]), }), 'dir': '/test_regex_matcher_str_value0', }) # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__snapshots__/test_amber_newlines.ambr000066400000000000000000000004371513542711300342520ustar00rootroot00000000000000# serializer version: 1 # name: test_multiline_repr Line1 Line2 Line3 # --- # name: test_trailing_2_newlines_in_repr ReprWithNewline # --- # name: test_trailing_newline_in_repr ReprWithNewline # --- # name: test_trailing_no_newline_in_repr ReprWithNewline # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__snapshots__/test_amber_serializer.ambr000066400000000000000000000171221513542711300345760ustar00rootroot00000000000000# serializer version: 1 # name: TestClass.TestNestedClass.test_nested_class_method[x] 'parameterized nested class method x' # --- # name: TestClass.TestNestedClass.test_nested_class_method[y] 'parameterized nested class method y' # --- # name: TestClass.TestNestedClass.test_nested_class_method[z] 'parameterized nested class method z' # --- # name: TestClass.test_class_method_name 'this is in a test class' # --- # name: TestClass.test_class_method_parametrized[a] 'a' # --- # name: TestClass.test_class_method_parametrized[b] 'b' # --- # name: TestClass.test_class_method_parametrized[c] 'c' # --- # name: TestSubClass.TestNestedClass.test_nested_class_method[x] 'parameterized nested class method x' # --- # name: TestSubClass.TestNestedClass.test_nested_class_method[y] 'parameterized nested class method y' # --- # name: TestSubClass.TestNestedClass.test_nested_class_method[z] 'parameterized nested class method z' # --- # name: TestSubClass.test_class_method_name 'this is in a test class' # --- # name: TestSubClass.test_class_method_parametrized[a] 'a' # --- # name: TestSubClass.test_class_method_parametrized[b] 'b' # --- # name: TestSubClass.test_class_method_parametrized[c] 'c' # --- # name: test_bool[False] False # --- # name: test_bool[True] True # --- # name: test_custom_object_repr CustomClass( a=1, b='2', c=list([ 1, 2, 3, ..., ]), d=dict({ 'a': 1, 'b': 2, 'c': 3, 'd': ..., }), x=CustomClass( a=1, b='2', c=list([ 1, 2, 3, ..., ]), d=dict({ 'a': 1, 'b': 2, 'c': 3, 'd': ..., }), x=None, ), ) # --- # name: test_cycle[cyclic0] list([ 1, 2, 3, ..., ]) # --- # name: test_cycle[cyclic1] dict({ 'a': 1, 'b': 2, 'c': 3, 'd': ..., }) # --- # name: test_deeply_nested_multiline_string_in_dict dict({ 'value_a': dict({ 'value_b': ''' line 1 line 2 line 3 ''', }), }) # --- # name: test_dict[actual0] dict({ 'a': dict({ 'e': False, }), 'b': True, 'c': 'Some text.', 'd': list([ '1', 2, ]), }) # --- # name: test_dict[actual1] dict({ 'a': dict({ 'e': False, }), 'b': True, 'c': 'Some ttext.', 'd': list([ '1', 2, ]), }) # --- # name: test_dict[actual2] dict({ ''' multi line key ''': 'Some morre text.', 'a': 'Some ttext.', 1: True, ExampleTuple( a=1, b=2, c=3, d=4, ): dict({ 'e': False, }), frozenset({ '1', '2', }): list([ '1', 2, ]), }) # --- # name: test_dict[actual3] dict({ }) # --- # name: test_dict[actual4] dict({ 'key': list([ ''' line1 line2 ''', ]), }) # --- # name: test_dict[actual5] dict({ 'key': list([ 1, ''' line1 line2 ''', 2, ''' line3 line4 ''', ]), }) # --- # name: test_dict[actual6] dict({ 'key': list([ 1, list([ ''' line1 line2 ''', ]), 2, ]), }) # --- # name: test_doubly_parametrized[bar-foo] 'foo' # --- # name: test_doubly_parametrized[bar-foo].1 'bar' # --- # name: test_empty_snapshot None # --- # name: test_empty_snapshot.1 '' # --- # name: test_function_in_file "function_to_test(var1, var2='test_val', var3: str = 'test_val2', *, kwvar1, kwvar2='some_val') -> str" # --- # name: test_function_local "test_function_local..local_function_to_test(var1, var2='test_val', var3: str = 'test_val2', *, kwvar1, kwvar2='some_val') -> int" # --- # name: test_list[actual0] list([ ]) # --- # name: test_list[actual1] list([ 'this', 'is', 'a', 'list', ]) # --- # name: test_list[actual2] list([ 'contains', 'empty', list([ ]), ]) # --- # name: test_list[actual3] list([ 1, 2, 'string', dict({ 'key': 'value', }), ]) # --- # name: test_many_sorted 0 # --- # name: test_many_sorted.1 1 # --- # name: test_many_sorted.10 10 # --- # name: test_many_sorted.11 11 # --- # name: test_many_sorted.12 12 # --- # name: test_many_sorted.13 13 # --- # name: test_many_sorted.14 14 # --- # name: test_many_sorted.15 15 # --- # name: test_many_sorted.16 16 # --- # name: test_many_sorted.17 17 # --- # name: test_many_sorted.18 18 # --- # name: test_many_sorted.19 19 # --- # name: test_many_sorted.2 2 # --- # name: test_many_sorted.20 20 # --- # name: test_many_sorted.21 21 # --- # name: test_many_sorted.22 22 # --- # name: test_many_sorted.23 23 # --- # name: test_many_sorted.24 24 # --- # name: test_many_sorted.3 3 # --- # name: test_many_sorted.4 4 # --- # name: test_many_sorted.5 5 # --- # name: test_many_sorted.6 6 # --- # name: test_many_sorted.7 7 # --- # name: test_many_sorted.8 8 # --- # name: test_many_sorted.9 9 # --- # name: test_multiline_string_in_dict dict({ 'value': ''' line 1 line 2 ''', }) # --- # name: test_multiple_snapshots 'First.' # --- # name: test_multiple_snapshots.1 'Second.' # --- # name: test_multiple_snapshots.2 'Third.' # --- # name: test_newline_control_characters ''' line 1 line 2 ''' # --- # name: test_newline_control_characters.1 ''' line 1 line 2 ''' # --- # name: test_newline_control_characters.2 ''' line 1 line 2 ''' # --- # name: test_newline_control_characters.3 ''' line 1 line 2 ''' # --- # name: test_newline_control_characters.4 ''' line 1 line 2 ''' # --- # name: test_newline_control_characters.5 ''' line 1 line 2 ''' # --- # name: test_numbers 3.5 # --- # name: test_numbers.1 7 # --- # name: test_numbers.2 0.3333333333333333 # --- # name: test_ordered_dict OrderedDict({ 'b': 0, 'a': 1, }) # --- # name: test_parameter_with_dot[value.with.dot] 'value.with.dot' # --- # name: test_reflection.1 SnapshotAssertion( name='reflectionA', num_executions=0, ) # --- # name: test_reflection[reflectionA] SnapshotAssertion( name='reflectionA', num_executions=0, ) # --- # name: test_set[actual0] set({ 'a', 'is', 'set', 'this', }) # --- # name: test_set[actual1] set({ 'contains', 'frozen', frozenset({ '1', '2', }), }) # --- # name: test_set[actual2] set({ 'contains', 'tuple', tuple( 1, 2, ), }) # --- # name: test_set[actual3] set({ 'contains', 'namedtuple', ExampleTuple( a=1, b=2, c=3, d=4, ), }) # --- # name: test_set[actual4] set({ }) # --- # name: test_snapshot_markers ''' # # # --- # name: ''' # --- # name: test_string[0] '' # --- # name: test_string[10] b'Byte string' # --- # name: test_string[1] 'Raw string' # --- # name: test_string[2] 'Escaped \\n' # --- # name: test_string[3] 'Backslash \\u U' # --- # name: test_string[4] '🥞🐍🍯' # --- # name: test_string[5] 'singleline:' # --- # name: test_string[6] '- singleline' # --- # name: test_string[7] ''' multi-line line 2 line 3 ''' # --- # name: test_string[8] ''' multi-line line 2 line 3 ''' # --- # name: test_string[9] "string with 'quotes'" # --- # name: test_tuple tuple( 'this', 'is', tuple( 'a', 'tuple', ), ) # --- # name: test_tuple.1 ExampleTuple( a='this', b='is', c='a', d=set({ 'named', 'tuple', }), ) # --- # name: test_tuple.2 tuple( ) # --- test_amber_serializer_plugins.ambr000066400000000000000000000020231513542711300362520ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__snapshots__# serializer version: 1 # name: test_attrs_plugin AttrsPoint( x=1, y=2, ) # --- # name: test_complex_pydantic_model ComplexModel( values=list([ Inner(val=1), Inner(val=2), ]), start=PydanticPoint(x=0, y=0), end=PydanticPoint(x=10, y=10), mapping=dict({ 'first': Inner(val=100), 'second': Inner(val=200), }), ) # --- # name: test_dataclasses_plugin DataclassPoint( x=1, y=2, ) # --- # name: test_mixed_plugins dict({ 'attrs': AttrsPoint( x=1, y=2, ), 'dataclass': DataclassPoint( x=3, y=4, ), 'list_mixed': list([ AttrsPoint( x=10, y=20, ), DataclassPoint( x=30, y=40, ), ]), 'pydantic': PydanticPoint( x=5, y=6, ), }) # --- # name: test_nested_structures Outer( middle=Middle(inner=Inner(val=42), other='nested'), tags=list([ 'c', ]), ) # --- # name: test_pydantic_plugin PydanticPoint( x=1, y=2, ) # --- test_amber_snapshot_diff.ambr000066400000000000000000000037041513542711300351760ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/__snapshots__# serializer version: 1 # name: test_snapshot_diff dict({ 'field_0': True, 'field_1': 'no_value', 'nested': dict({ 'field_0': 1, }), }) # --- # name: test_snapshot_diff.1 ... - 'field_1': 'no_value', + 'field_1': 'yes_value', ... # --- # name: test_snapshot_diff.2 ... - 'field_1': 'no_value', + 'field_1': 'yes_value', ... - 'field_0': 1, + 'field_0': 2, ... # --- # name: test_snapshot_diff_id.1 ... - 'field_1': 'no_value', + 'field_1': 'yes_value', ... - True, ... - None, + False, ... - 'no', + 'yes', - False, + 0, ... # --- # name: test_snapshot_diff_id[case3] ... - 'nested_0': dict({ + 'nested_0': mappingproxy({ - 'field_0': True, + 'field_0': 2, ... - 'nested_1': dict({ + 'nested_1': mappingproxy({ - 'field_0': True, + 'field_0': 2, ... # --- # name: test_snapshot_diff_id[large snapshot] dict({ 'field_0': True, 'field_1': 'no_value', 'field_2': 0, 'field_3': None, 'field_4': 1, 'field_5': False, 'field_6': tuple( True, 'hey', 2, None, ), 'field_7': set({ 'no', False, None, }), 'nested_0': dict({ 'field_0': True, 'field_1': 'no_value', 'field_2': 0, 'field_3': None, 'field_4': 1, 'field_5': False, 'field_6': tuple( True, 'hey', 2, None, ), 'field_7': set({ 'no', False, None, }), }), 'nested_1': dict({ 'field_0': True, 'field_1': 'no_value', 'field_2': 0, 'field_3': None, 'field_4': 1, 'field_5': False, 'field_6': tuple( True, 'hey', 2, None, ), 'field_7': set({ 'no', False, None, }), }), }) # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/test_amber_filters.py000066400000000000000000000040571513542711300307710ustar00rootroot00000000000000import datetime import pytest from syrupy.filters import ( paths, paths_include, props, ) def test_filters_path_noop(): with pytest.raises(TypeError, match="At least 1 path argument is required."): paths() def test_filters_expected_paths(snapshot): actual = { 0: "some value", "date": datetime.datetime.now(), "nested": {"id": 4, "other": "value"}, "list": [1, 2], } assert actual == snapshot(exclude=paths("0", "date", "nested.id", "list.0")) def test_filters_prop_noop(): with pytest.raises(TypeError, match="At least 1 prop name is required."): props() def test_filters_expected_props(snapshot): actual = { 0: "some value", "date": datetime.datetime.now(), "nested": {"id": 4, "other": "value"}, "list": [1, 2], } assert actual == snapshot(exclude=props("0", "date", "id")) def test_only_includes_expected_props(snapshot): actual = { 0: "some value", "date": "utc", "nested": {"id": 4, "other": "value"}, "list": [1, 2], } # Note that "id" won't get included because "nested" (its parent) is not included. assert actual == snapshot(include=props("0", "date", "id")) assert actual == snapshot(include=paths("0", "date", "nested", "nested.id")) def test_includes_nested_path(snapshot): actual = { "ignore-me": True, "include-me": False, "layer1": {"layer2": [0, True]}, } assert actual == snapshot( include=paths_include(["include-me"], ["layer1", "layer2", "1"]) ) @pytest.mark.parametrize( "predicate", [paths("exclude_me", "nested.exclude_me"), props("exclude_me")] ) def test_filters_error_prop(snapshot, predicate): class CustomClass: @property def include_me(self): return "prop value" @property def exclude_me(self): raise Exception("Why you no exclude me?") class WithNested(CustomClass): nested = CustomClass() assert WithNested() == snapshot(exclude=predicate) syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/test_amber_matchers.py000066400000000000000000000103131513542711300311170ustar00rootroot00000000000000import datetime import uuid import pytest from syrupy.extensions.amber.serializer import ( AmberDataSerializer, Repr, ) from syrupy.matchers import ( PathTypeError, compose_matchers, path_type, path_value, ) def test_matcher_path_type_noop(snapshot): with pytest.raises(PathTypeError, match="argument cannot be empty"): path_type() def test_matches_expected_type(snapshot): my_matcher = path_type( {"date_created": (datetime.datetime,), "nested.id": (int,)}, types=(uuid.UUID,) ) actual = { "date_created": datetime.datetime.now(), "nested": {"id": 4}, "nested_id": 5, "some_uuid": uuid.uuid4(), } assert actual == snapshot(matcher=my_matcher) def test_raises_unexpected_type(snapshot): kwargs = { "mapping": { "date_created": (datetime.datetime,), "date_updated": (datetime.datetime,), "nested.id": (str,), }, "types": (uuid.UUID, int), } actual = { "date_created": datetime.datetime.now(), "date_updated": datetime.date(2020, 6, 1), "nested": {"id": 4}, "some_uuid": uuid.uuid4(), } assert actual == snapshot(matcher=path_type(**kwargs, strict=False)) with pytest.raises(AssertionError, match="does not match any of the expected"): assert actual == snapshot(matcher=path_type(**kwargs)) def test_matches_non_deterministic_snapshots(snapshot): def matcher(data, path): if isinstance(data, uuid.UUID): return Repr("UUID(...)") if isinstance(data, datetime.datetime): return Repr("datetime.datetime(...)") if tuple(p for p, _ in path[-2:]) == ("c", 0): return "Your wish is my command" return data assert { "a": uuid.uuid4(), "b": {"b_1": "This is deterministic", "b_2": datetime.datetime.now()}, "c": ["Replace this one", "Do not replace this one"], } == snapshot(matcher=matcher) assert { "a": uuid.UUID("06335e84-2872-4914-8c5d-3ed07d2a2f16"), "b": { "b_1": "This is deterministic", "b_2": datetime.datetime(year=2020, month=5, day=31), }, "c": ["Replace this one", "Do not replace this one"], } == snapshot def test_matches_regex_in_regex_mode(snapshot): my_matcher = path_type( { r"data\.list\..*\.date_created": (datetime.datetime,), r"any_number": (int,), "any_number.adjacent": (str,), }, regex=True, ) actual = { "data": { "list": [ {"k": "1", "date_created": datetime.datetime.now()}, {"k": "2", "date_created": datetime.datetime.now()}, ], }, "any_number": 3, "any_number_adjacent": "hi", "specific_number": 5, } assert actual == snapshot(matcher=my_matcher) def test_regex_matcher_str_value(request, snapshot, tmp_path): def replacer(data, match): # check that the match is for the expected file path if match and request.node.name in match[0]: return match[0].replace(match[1], "/") return Repr(AmberDataSerializer.object_type(data)) my_matcher = path_value( { r"data\.list\..*\.id": "[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", "dir": rf"(.*){request.node.name}.*", }, types=(str, uuid.UUID), replacer=replacer, regex=True, ) actual = { "data": { "any_number": 3, "any_string": "hello", "list": [ {"k": "1", "id": uuid.uuid4()}, {"k": "2", "id": uuid.uuid4()}, ], }, "dir": str(tmp_path), } assert actual == snapshot(matcher=my_matcher) def test_multiple_matchers(snapshot): data = {"number": 1, "datetime": datetime.datetime.now(), "float": 1.3} assert data == snapshot( matcher=compose_matchers( path_type(types=(list,), replacer=lambda *_: "DO_NOT_MATCH"), path_type(types=(int, float), replacer=lambda *_: "MATCHER_1"), path_type(types=(datetime.datetime,), replacer=lambda *_: "MATCHER_2"), ), ) syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/test_amber_newlines.py000066400000000000000000000014501513542711300311370ustar00rootroot00000000000000class ReprWithNewline: def __init__(self, newlines: int = 1) -> None: self.newlines = newlines def __repr__(self) -> str: newlines = "\n" * self.newlines return f"ReprWithNewline{newlines}" def test_trailing_no_newline_in_repr(snapshot): assert ReprWithNewline(0) == snapshot def test_trailing_newline_in_repr(snapshot): assert ReprWithNewline(1) == snapshot def test_trailing_2_newlines_in_repr(snapshot): assert ReprWithNewline(2) == snapshot class MultilineRepr: def __repr__(self) -> str: return "\n".join( [ "Line1", "Line2\n", # extra newline "Line3 ", # with an extra space ] ) def test_multiline_repr(snapshot): assert MultilineRepr() == snapshot syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/test_amber_serializer.py000066400000000000000000000142641513542711300314730ustar00rootroot00000000000000from collections import ( OrderedDict, namedtuple, ) import pytest from syrupy.extensions.amber.serializer import AmberDataSerializer def test_non_snapshots(snapshot): with pytest.raises(AssertionError): assert "Lorem ipsum." == "Muspi merol." def test_reflection(snapshot): """assert [expected|snapshot] == [actual|received]""" assert snapshot(name="reflectionA") == snapshot assert snapshot == snapshot assert snapshot == snapshot(name="reflectionA") def test_empty_snapshot(snapshot): assert snapshot == None # noqa: E711 assert snapshot == "" def test_snapshot_markers(snapshot): """ Test snapshot markers do not break serialization when in snapshot data """ marker_strings = ( AmberDataSerializer._marker_prefix, f"{AmberDataSerializer._indent}{AmberDataSerializer._marker_prefix}", f"{AmberDataSerializer._marker_prefix}{AmberDataSerializer.Marker.Divider}", f"{AmberDataSerializer._marker_prefix}{AmberDataSerializer.Marker.Name}:", ) assert snapshot == "\n".join(marker_strings) def test_newline_control_characters(snapshot): assert snapshot == "line 1\nline 2" assert snapshot == "line 1\r\nline 2" assert snapshot == "line 1\r\nline 2\r\n" assert snapshot == "line 1\rline 2\r" assert snapshot == "line 1\rline 2\n" assert snapshot == "line 1\rline 2" def test_multiline_string_in_dict(snapshot): lines = "\n".join(["line 1", "line 2"]) assert {"value": lines} == snapshot def test_deeply_nested_multiline_string_in_dict(snapshot): lines = "\n".join(["line 1", "line 2", "line 3"]) d = {"value_a": {"value_b": lines}} assert d == snapshot @pytest.mark.parametrize("actual", [False, True]) def test_bool(actual, snapshot): assert actual == snapshot @pytest.mark.parametrize( "actual", [ "", r"Raw string", r"Escaped \n", r"Backslash \u U", "🥞🐍🍯", "singleline:", "- singleline", "multi-line\nline 2\nline 3", "multi-line\nline 2\n line 3", "string with 'quotes'", b"Byte string", ], ids=lambda x: "", ) def test_string(snapshot, actual): assert snapshot == actual def test_multiple_snapshots(snapshot): assert "First." == snapshot snapshot.assert_match("Second.") assert snapshot == "Third." ExampleTuple = namedtuple("ExampleTuple", ["a", "b", "c", "d"]) def test_tuple(snapshot): assert snapshot == ("this", "is", ("a", "tuple")) assert snapshot == ExampleTuple(a="this", b="is", c="a", d={"named", "tuple"}) assert snapshot == () @pytest.mark.parametrize( "actual", [ {"this", "is", "a", "set"}, {"contains", "frozen", frozenset({"1", "2"})}, {"contains", "tuple", (1, 2)}, {"contains", "namedtuple", ExampleTuple(a=1, b=2, c=3, d=4)}, set(), ], ) def test_set(snapshot, actual): assert snapshot == actual @pytest.mark.parametrize( "actual", [ {"b": True, "c": "Some text.", "d": ["1", 2], "a": {"e": False}}, {"b": True, "c": "Some ttext.", "d": ["1", 2], "a": {"e": False}}, { 1: True, "a": "Some ttext.", "multi\nline\nkey": "Some morre text.", frozenset({"1", "2"}): ["1", 2], ExampleTuple(a=1, b=2, c=3, d=4): {"e": False}, }, {}, {"key": ["line1\nline2"]}, {"key": [1, "line1\nline2", 2, "line3\nline4"]}, {"key": [1, ["line1\nline2"], 2]}, ], ) def test_dict(snapshot, actual): assert actual == snapshot def test_numbers(snapshot): assert snapshot == 3.5 assert snapshot == 7 assert snapshot == 2 / 6 @pytest.mark.parametrize( "actual", [ [], ["this", "is", "a", "list"], ["contains", "empty", []], [1, 2, "string", {"key": "value"}], ], ) def test_list(snapshot, actual): assert actual == snapshot list_cycle = [1, 2, 3] list_cycle.append(list_cycle) dict_cycle = {"a": 1, "b": 2, "c": 3} dict_cycle.update(d=dict_cycle) @pytest.mark.parametrize("cyclic", [list_cycle, dict_cycle]) def test_cycle(cyclic, snapshot): assert cyclic == snapshot class CustomClass: a = 1 b = "2" c = list_cycle d = dict_cycle _protected_variable = None __private_variable = None def __init__(self, x=None): self.x = x self._y = 1 self.__z = 2 def public_method(self, a, b=1, *, c, d=None): pass def _protected_method(self): pass def __private_method(self): pass def test_custom_object_repr(snapshot): assert CustomClass(CustomClass()) == snapshot class TestClass: def test_class_method_name(self, snapshot): assert snapshot == "this is in a test class" @pytest.mark.parametrize("actual", ["a", "b", "c"]) def test_class_method_parametrized(self, snapshot, actual): assert snapshot == actual @pytest.mark.parametrize("actual", ["x", "y", "z"]) class TestNestedClass: def test_nested_class_method(self, snapshot, actual): assert snapshot == f"parameterized nested class method {actual}" class TestSubClass(TestClass): pass @pytest.mark.parametrize("parameter_with_dot", ("value.with.dot",)) def test_parameter_with_dot(parameter_with_dot, snapshot): assert parameter_with_dot == snapshot @pytest.mark.parametrize("parameter_1", ("foo",)) @pytest.mark.parametrize("parameter_2", ("bar",)) def test_doubly_parametrized(parameter_1, parameter_2, snapshot): assert parameter_1 == snapshot assert parameter_2 == snapshot def test_ordered_dict(snapshot): d = OrderedDict() d["b"] = 0 d["a"] = 1 assert snapshot == d def test_many_sorted(snapshot): for i in range(25): assert i == snapshot def function_to_test( var1, var2="test_val", var3: str = "test_val2", *, kwvar1, kwvar2="some_val" ) -> str: return "2" def test_function_in_file(snapshot): assert snapshot == function_to_test def test_function_local(snapshot): def local_function_to_test( var1, var2="test_val", var3: str = "test_val2", *, kwvar1, kwvar2="some_val" ) -> int: return 1 assert snapshot == local_function_to_test syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/test_amber_serializer_plugins.py000066400000000000000000000105231513542711300332260ustar00rootroot00000000000000""" "Tests for the Amber serializer plugins for attrs, dataclasses, and Pydantic models.""" from dataclasses import dataclass import attr import pytest from pydantic import BaseModel from syrupy.extensions.amber import AmberSnapshotExtension from syrupy.extensions.amber.attrs_plugin import AttrsPlugin from syrupy.extensions.amber.dataclasses_plugin import DataclassPlugin from syrupy.extensions.amber.pydantic_plugin import PydanticPlugin from syrupy.extensions.amber.serializer import AmberDataSerializer # region Data Classes @attr.s class AttrsPoint: x = attr.ib() y = attr.ib() @dataclass class DataclassPoint: x: int y: int class PydanticPoint(BaseModel): x: int y: int class Inner(BaseModel): val: int class ComplexModel(BaseModel): """Complex Pydantic model for testing nested structures. Note: make sure field names are not sorted alphabetically to test ordering. """ values: list[Inner] start: PydanticPoint end: PydanticPoint mapping: dict[str, Inner] @dataclass class Middle: inner: Inner other: str @attr.s class Outer: middle = attr.ib() tags = attr.ib(factory=list) # endregion # region Serializers class AttrsSerializer(AmberDataSerializer): serializer_plugins = [AttrsPlugin] class DataclassSerializer(AmberDataSerializer): serializer_plugins = [DataclassPlugin] class PydanticSerializer(AmberDataSerializer): serializer_plugins = [PydanticPlugin] class MixedSerializer(AmberDataSerializer): serializer_plugins = [AttrsPlugin, DataclassPlugin, PydanticPlugin] # endregion # region Extensions class AmberAttrsExtension(AmberSnapshotExtension): serializer_class = AttrsSerializer class AmberDataclassExtension(AmberSnapshotExtension): serializer_class = DataclassSerializer class AmberPydanticExtension(AmberSnapshotExtension): serializer_class = PydanticSerializer class AmberMixedExtension(AmberSnapshotExtension): serializer_class = MixedSerializer # endregion # region Fixtures @pytest.fixture def snapshot_attrs(snapshot) -> AmberSnapshotExtension: return snapshot.use_extension(AmberAttrsExtension) @pytest.fixture def snapshot_dataclass(snapshot) -> AmberSnapshotExtension: return snapshot.use_extension(AmberDataclassExtension) @pytest.fixture def snapshot_pydantic(snapshot) -> AmberSnapshotExtension: return snapshot.use_extension(AmberPydanticExtension) @pytest.fixture def snapshot_mixed(snapshot) -> AmberSnapshotExtension: return snapshot.use_extension(AmberMixedExtension) # endregion # region Tests def test_attrs_plugin(snapshot_attrs): """Test serialization of an attrs class using the AmberAttrsExtension.""" point = AttrsPoint(x=1, y=2) assert point == snapshot_attrs def test_dataclasses_plugin(snapshot_dataclass): """Test serialization of a dataclass using the AmberDataclassExtension.""" point = DataclassPoint(x=1, y=2) assert point == snapshot_dataclass def test_pydantic_plugin(snapshot_pydantic): """Test serialization of a Pydantic model using the AmberPydanticExtension.""" point = PydanticPoint(x=1, y=2) assert point == snapshot_pydantic def test_mixed_plugins(snapshot_mixed): """Test serialization of mixed data types using the AmberMixedExtension.""" complex_data = { "attrs": AttrsPoint(x=1, y=2), "dataclass": DataclassPoint(x=3, y=4), "pydantic": PydanticPoint(x=5, y=6), "list_mixed": [ AttrsPoint(x=10, y=20), DataclassPoint(x=30, y=40), ], } assert complex_data == snapshot_mixed def test_nested_structures(snapshot_mixed): """Test serialization of nested structures using the AmberMixedExtension.""" data = Outer(middle=Middle(inner=Inner(val=42), other="nested"), tags=["c"]) assert data == snapshot_mixed def test_complex_pydantic_model(snapshot_pydantic): """Test serialization of a complex Pydantic model using the AmberPydanticExtension. Ensures nested models, lists, and dicts are handled correctly. Ensures field ordering is preserved as defined in the model. """ data = ComplexModel( end=PydanticPoint(x=10, y=10), mapping={"first": Inner(val=100), "second": Inner(val=200)}, start=PydanticPoint(x=0, y=0), values=[Inner(val=1), Inner(val=2)], ) assert data == snapshot_pydantic # endregion syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber/test_amber_snapshot_diff.py000066400000000000000000000031331513542711300321420ustar00rootroot00000000000000from types import MappingProxyType import pytest def test_snapshot_diff(snapshot): my_dict = { "field_0": True, "field_1": "no_value", "nested": { "field_0": 1, }, } assert my_dict == snapshot my_dict["field_1"] = "yes_value" assert my_dict == snapshot(diff=0) my_dict["nested"]["field_0"] = 2 assert my_dict == snapshot(diff=0) def test_snapshot_diff_id(snapshot): my_dict = { "field_0": True, "field_1": "no_value", "field_2": 0, "field_3": None, "field_4": 1, "field_5": False, "field_6": (True, "hey", 2, None), "field_7": {False, "no", None}, } dict_large_snapshot = { **my_dict, "nested_0": dict(my_dict), "nested_1": dict(my_dict), } assert dict_large_snapshot == snapshot(name="large snapshot") dict_diff_large_snapshot = { **dict_large_snapshot, "field_1": "yes_value", "field_6": ("hey", 2, False), "field_7": {"yes", 0, None}, } assert dict_diff_large_snapshot == snapshot(diff="large snapshot") dict_case_3 = { **dict_large_snapshot, "nested_0": MappingProxyType({**my_dict, "field_0": 2}), "nested_1": MappingProxyType({**my_dict, "field_0": 2}), } assert dict_case_3 == snapshot(name="case3", diff="large snapshot") @pytest.mark.xfail(reason="Asserting snapshot does not exist") def test_snapshot_no_diff_raises_exception(snapshot): my_dict = { "field_0": "value_0", } assert my_dict == snapshot(diff="does not exist index") syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber_sorted/000077500000000000000000000000001513542711300261145ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber_sorted/__snapshots__/000077500000000000000000000000001513542711300307325ustar00rootroot00000000000000test_amber_sort.ambr000066400000000000000000000017301513542711300347130ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber_sorted/__snapshots__# serializer version: 1-sorted # name: test_many_sorted 0 # --- # name: test_many_sorted.1 1 # --- # name: test_many_sorted.2 2 # --- # name: test_many_sorted.3 3 # --- # name: test_many_sorted.4 4 # --- # name: test_many_sorted.5 5 # --- # name: test_many_sorted.6 6 # --- # name: test_many_sorted.7 7 # --- # name: test_many_sorted.8 8 # --- # name: test_many_sorted.9 9 # --- # name: test_many_sorted.10 10 # --- # name: test_many_sorted.11 11 # --- # name: test_many_sorted.12 12 # --- # name: test_many_sorted.13 13 # --- # name: test_many_sorted.14 14 # --- # name: test_many_sorted.15 15 # --- # name: test_many_sorted.16 16 # --- # name: test_many_sorted.17 17 # --- # name: test_many_sorted.18 18 # --- # name: test_many_sorted.19 19 # --- # name: test_many_sorted.20 20 # --- # name: test_many_sorted.21 21 # --- # name: test_many_sorted.22 22 # --- # name: test_many_sorted.23 23 # --- # name: test_many_sorted.24 24 # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/amber_sorted/test_amber_sort.py000066400000000000000000000006421513542711300316640ustar00rootroot00000000000000import pytest from syrupy.extensions.amber import ( AmberDataSerializerSorted, AmberSnapshotExtension, ) class AmberSortedSnapshotExtension(AmberSnapshotExtension): serializer_class = AmberDataSerializerSorted @pytest.fixture def snapshot(snapshot): return snapshot.use_extension(AmberSortedSnapshotExtension) def test_many_sorted(snapshot): for i in range(25): assert i == snapshot syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/000077500000000000000000000000001513542711300245305ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__init__.py000066400000000000000000000000001513542711300266270ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/000077500000000000000000000000001513542711300273465ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_png.ambr000066400000000000000000000011641513542711300332000ustar00rootroot00000000000000# serializer version: 1 # name: test_multiple_snapshot_extensions.1 b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x002\x00\x00\x002\x04\x03\x00\x00\x00\xec\x11\x95\x82\x00\x00\x00\x1bPLTE\xcc\xcc\xcc\x96\x96\x96\xaa\xaa\xaa\xb7\xb7\xb7\xb1\xb1\xb1\x9c\x9c\x9c\xbe\xbe\xbe\xa3\xa3\xa3\xc5\xc5\xc5\x05\xa4\xf2?\x00\x00\x00\tpHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\x95+\x0e\x1b\x00\x00\x00AIDAT8\x8dc`\x18\x05\xa3\x80\xfe\x80I\xd9\xdc\x00F\xa2\x02\x16\x86\x88\x00\xa6\x16\x10\x89.\xc3\x1a" \xc0\x11\x01"\xd1e\xd8\x12#\x028"@$\x86=*\xe6\x06L- \x92zn\x1f\x05\xc3\x1b\x00\x00\xe5\xfb\x08g\r"af\x00\x00\x00\x00IEND\xaeB`\x82' # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_png/000077500000000000000000000000001513542711300323335ustar00rootroot00000000000000test_image.png000066400000000000000000000002661513542711300351070ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_pngPNG  IHDR22PLTE̖? pHYs+AIDAT8c`IF." "e#8"@$=*L- zng "afIENDB`test_multiple_snapshot_extensions.2.png000066400000000000000000000002661513542711300422160ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_pngPNG  IHDR22PLTE̖? pHYs+AIDAT8c`IF." "e#8"@$=*L- zng "afIENDB`test_multiple_snapshot_extensions.png000066400000000000000000000002661513542711300420560ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_pngPNG  IHDR22PLTE̖? pHYs+AIDAT8c`IF." "e#8"@$=*L- zng "afIENDB`syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_svg.ambr000066400000000000000000000010311513542711300332040ustar00rootroot00000000000000# serializer version: 1 # name: test_multiple_snapshot_extensions.1 '50 x 50' # --- syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_svg/000077500000000000000000000000001513542711300323465ustar00rootroot00000000000000test_image.svg000066400000000000000000000007121513542711300351310ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_svg50 x 50test_multiple_snapshot_extensions.2.svg000066400000000000000000000007121513542711300422400ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_svg50 x 50test_multiple_snapshot_extensions.svg000066400000000000000000000007121513542711300421000ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/__snapshots__/test_image_svg50 x 50syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/test_image_png.py000066400000000000000000000020011513542711300300600ustar00rootroot00000000000000import base64 import pytest from syrupy.extensions.image import PNGImageSnapshotExtension actual_png = base64.b64decode( b"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAG1BMVEXMzMy" b"Wlpaqqqq3t7exsbGcnJy+vr6jo6PFxcUFpPI/AAAACXBIWXMAAA7EAAAOxA" b"GVKw4bAAAAQUlEQVQ4jWNgGAWjgP6ASdncAEaiAhaGiACmFhCJLsMaIiDAE" b"QEi0WXYEiMCOCJAJIY9KuYGTC0gknpuHwXDGwAA5fsIZw0iYWYAAAAASUVO" b"RK5CYII=" ) @pytest.fixture def snapshot_png(snapshot): return snapshot.use_extension(PNGImageSnapshotExtension) def test_image(snapshot_png): assert actual_png == snapshot_png def test_multiple_snapshot_extensions(snapshot): """ Example of switching extension classes on the fly. These should be indexed in order of assertion. """ assert actual_png == snapshot(extension_class=PNGImageSnapshotExtension) assert actual_png == snapshot() # uses initial extension class assert snapshot._extension is not None assert actual_png == snapshot(extension_class=PNGImageSnapshotExtension) syrupy-project-syrupy-7096efd/tests/syrupy/extensions/image/test_image_svg.py000066400000000000000000000023171513542711300301050ustar00rootroot00000000000000import pytest from syrupy.extensions.image import SVGImageSnapshotExtension actual_svg = ( '' '' '' '' '' '' '' '50 x 50' ) @pytest.fixture def snapshot_svg(snapshot): return snapshot.use_extension(SVGImageSnapshotExtension) def test_image(snapshot_svg): assert actual_svg == snapshot_svg def test_multiple_snapshot_extensions(snapshot): """ Example of switching extension classes on the fly. These should be indexed in order of assertion. """ assert actual_svg == snapshot(extension_class=SVGImageSnapshotExtension) assert actual_svg == snapshot() # uses initial extension class assert snapshot._extension is not None assert actual_svg == snapshot(extension_class=SVGImageSnapshotExtension) syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/000077500000000000000000000000001513542711300244175ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/000077500000000000000000000000001513542711300272355ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters/000077500000000000000000000000001513542711300327755ustar00rootroot00000000000000test_exclude_in_json_with_empty_values.json000066400000000000000000000000731513542711300436500ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{ "empty_dict": {}, "empty_list": [], "none": null } test_exclude_nested.json000066400000000000000000000001311513542711300376360ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{ "a": "b", "foo": {}, "x": { "y": { "zz": "I'm still there" } } } test_exclude_simple.1.json000066400000000000000000000001121513542711300400030ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{ "I'm": "still alive", "nested": { "foo": "is still alive" } } test_exclude_simple.json000066400000000000000000000000531513542711300376500ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{ "I'm": "still alive", "nested": {} } test_include_simple.1.json000066400000000000000000000001021513542711300377740ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{ "foo": "__SHOULD_BE_REMOVED_FROM_JSON__", "id": 123456789 } test_include_simple.json000066400000000000000000000001021513542711300376350ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{ "foo": "__SHOULD_BE_REMOVED_FROM_JSON__", "id": 123456789 } test_serializer[content0].json000066400000000000000000000000031513542711300407550ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{} test_serializer[content1].json000066400000000000000000000000211513542711300407560ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters[ "an array" ] test_serializer[content2].json000066400000000000000000000002221513542711300407620ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_filters{ "array": [ 1, 2, 3 ], "datetime": "2021-01-31T23:59:00.000000", "float": 4.2, "int": -1, "null": null, "str": "foo" } syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_matchers/000077500000000000000000000000001513542711300331335ustar00rootroot00000000000000test_matcher.json000066400000000000000000000001461513542711300364320ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_matchers{ "date": "datetime", "foo": { "another_date": "datetime", "x": "y" }, "int": "int" } syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer/000077500000000000000000000000001513542711300334765ustar00rootroot00000000000000TestClass.TestNestedClass.test_nested_class_method[x].json000066400000000000000000000000461513542711300470130ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"parameterized nested class method x" TestClass.TestNestedClass.test_nested_class_method[y].json000066400000000000000000000000461513542711300470140ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"parameterized nested class method y" TestClass.TestNestedClass.test_nested_class_method[z].json000066400000000000000000000000461513542711300470150ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"parameterized nested class method z" TestClass.test_class_method_name.json000066400000000000000000000000321513542711300427150ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"this is in a test class" TestClass.test_class_method_parametrized[a].json000066400000000000000000000000041513542711300451140ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"a" TestClass.test_class_method_parametrized[b].json000066400000000000000000000000041513542711300451150ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"b" TestClass.test_class_method_parametrized[c].json000066400000000000000000000000041513542711300451160ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"c" TestSubClass.TestNestedClass.test_nested_class_method[x].json000066400000000000000000000000461513542711300474650ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"parameterized nested class method x" TestSubClass.TestNestedClass.test_nested_class_method[y].json000066400000000000000000000000461513542711300474660ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"parameterized nested class method y" TestSubClass.TestNestedClass.test_nested_class_method[z].json000066400000000000000000000000461513542711300474670ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"parameterized nested class method z" TestSubClass.test_class_method_name.json000066400000000000000000000000321513542711300433670ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"this is in a test class" TestSubClass.test_class_method_parametrized[a].json000066400000000000000000000000041513542711300455660ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"a" TestSubClass.test_class_method_parametrized[b].json000066400000000000000000000000041513542711300455670ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"b" TestSubClass.test_class_method_parametrized[c].json000066400000000000000000000000041513542711300455700ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"c" test_bool[False].json000066400000000000000000000000061513542711300375430ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializerfalse test_bool[True].json000066400000000000000000000000051513542711300374270ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializertrue test_custom_object_repr.json000066400000000000000000000000301513542711300412320ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"" test_cycle[cyclic0].json000066400000000000000000000000331513542711300402030ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ 1, 2, 3, "..." ] test_cycle[cyclic1].json000066400000000000000000000000571513542711300402120ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "a": 1, "b": 2, "c": 3, "d": "..." } test_deeply_nested_multiline_string_in_dict.json000066400000000000000000000000771513542711300453420ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "value_a": { "value_b": "line 1\nline 2\nline 3" } } test_dict[actual0].json000066400000000000000000000001371513542711300400370ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "a": { "e": false }, "b": true, "c": "Some text.", "d": [ "1", 2 ] } test_dict[actual1].json000066400000000000000000000001401513542711300400320ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "a": { "e": false }, "b": true, "c": "Some ttext.", "d": [ "1", 2 ] } test_dict[actual2].json000066400000000000000000000001221513542711300400330ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "a": "Some ttext.", "key": null, "multi\nline\nkey": "Some morre text." } test_dict[actual3].json000066400000000000000000000000031513542711300400320ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{} test_dict[actual4].json000066400000000000000000000000461513542711300400420ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "key": [ "line1\nline2" ] } test_dict[actual5].json000066400000000000000000000001101513542711300400330ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "key": [ 1, "line1\nline2", 2, "line3\nline4" ] } test_dict[actual6].json000066400000000000000000000001021513542711300400350ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "key": [ 1, [ "line1\nline2" ], 2 ] } test_doubly_parametrized[bar-foo].1.json000066400000000000000000000000061513542711300433070ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"bar" test_doubly_parametrized[bar-foo].json000066400000000000000000000000061513542711300431500ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"foo" test_empty_snapshot.1.json000066400000000000000000000000031513542711300405560ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"" test_empty_snapshot.json000066400000000000000000000000051513542711300404210ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializernull test_function_in_file.json000066400000000000000000000001631513542711300406630ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer" str>" test_function_local.json000066400000000000000000000002261513542711300403500ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer".local_function_to_test(var1, var2='test_val', var3: str = 'test_val2', *, kwvar1, kwvar2='some_val') -> int>" test_list[actual0].json000066400000000000000000000000031513542711300400570ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[] test_list[actual1].json000066400000000000000000000000461513542711300400670ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ "this", "is", "a", "list" ] test_list[actual2].json000066400000000000000000000000421513542711300400640ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ "contains", "empty", [] ] test_list[actual3].json000066400000000000000000000000651513542711300400720ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ 1, 2, "string", { "key": "value" } ] test_multiline_string_in_dict.json000066400000000000000000000000401513542711300424240ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "value": "line 1\nline 2" } test_multiple_snapshots.1.json000066400000000000000000000000121513542711300414360ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"Second." test_multiple_snapshots.2.json000066400000000000000000000000111513542711300414360ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"Third." test_multiple_snapshots.json000066400000000000000000000000111513542711300412760ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"First." test_newline_control_characters.1.json000066400000000000000000000000231513542711300431030ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"line 1\r\nline 2" test_newline_control_characters.2.json000066400000000000000000000000271513542711300431100ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"line 1\r\nline 2\r\n" test_newline_control_characters.3.json000066400000000000000000000000231513542711300431050ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"line 1\rline 2\r" test_newline_control_characters.4.json000066400000000000000000000000231513542711300431060ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"line 1\rline 2\n" test_newline_control_characters.5.json000066400000000000000000000000211513542711300431050ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"line 1\rline 2" test_newline_control_characters.json000066400000000000000000000000211513542711300427420ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"line 1\nline 2" test_numbers.1.json000066400000000000000000000000021513542711300371530ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer7 test_numbers.2.json000066400000000000000000000000231513542711300371570ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer0.3333333333333333 test_numbers.json000066400000000000000000000000041513542711300370160ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer3.5 test_ordered_dict.json000066400000000000000000000000711513542711300377760ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "b": 0, "a": { "b": true, "a": false } } test_parameter_with_dot[value.with.dot].json000066400000000000000000000000211513542711300443070ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"value.with.dot" test_reflection.json000066400000000000000000000000601513542711300374770ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "name": "snapshot", "num_executions": 0 } test_set[actual0].json000066400000000000000000000000451513542711300377050ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ "a", "is", "set", "this" ] test_set[actual1].json000066400000000000000000000000671513542711300377120ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ "contains", "frozen", [ "1", "2" ] ] test_set[actual2].json000066400000000000000000000000621513542711300377060ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ [ 1, 2 ], "contains", "tuple" ] test_set[actual3].json000066400000000000000000000001311513542711300377040ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ { "a": 1, "b": 2, "c": 3, "d": 4 }, "contains", "namedtuple" ] test_set[actual4].json000066400000000000000000000000031513542711300377030ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[] test_snapshot_markers.json000066400000000000000000000000331513542711300407300ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"# \n # \n# ---\n# name:" test_string[0].json000066400000000000000000000000031513542711300372200ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"" test_string[10].json000066400000000000000000000000211513542711300373010ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"b'Byte string'" test_string[1].json000066400000000000000000000000151513542711300372240ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"Raw string" test_string[2].json000066400000000000000000000000161513542711300372260ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"Escaped \\n" test_string[3].json000066400000000000000000000000221513542711300372240ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"Backslash \\u U" test_string[4].json000066400000000000000000000000171513542711300372310ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"🥞🐍🍯" test_string[5].json000066400000000000000000000000161513542711300372310ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"singleline:" test_string[6].json000066400000000000000000000000171513542711300372330ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"- singleline" test_string[7].json000066400000000000000000000000351513542711300372340ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"multi-line\nline 2\nline 3" test_string[8].json000066400000000000000000000000371513542711300372370ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"multi-line\nline 2\n line 3" test_string[9].json000066400000000000000000000000271513542711300372370ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer"string with 'quotes'" test_tuple.1.json000066400000000000000000000001221513542711300366340ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer{ "a": "this", "b": "is", "c": "a", "d": [ "named", "tuple" ] } test_tuple.2.json000066400000000000000000000000031513542711300366330ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[] test_tuple.json000066400000000000000000000000631513542711300365010ustar00rootroot00000000000000syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/__snapshots__/test_json_serializer[ "this", "is", [ "a", "tuple" ] ] syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/test_json_filters.py000066400000000000000000000037131513542711300305350ustar00rootroot00000000000000import datetime import pytest from syrupy.extensions.json import JSONSnapshotExtension from syrupy.filters import ( paths, props, ) @pytest.fixture def snapshot_json(snapshot): return snapshot.use_extension(JSONSnapshotExtension) @pytest.mark.parametrize( "content", [ {}, ["an array"], { "str": "foo", "int": -1, "float": 4.2, "array": [1, 2, 3], "null": None, "datetime": datetime.datetime(2021, 1, 31, 23, 59), }, ], ) def test_serializer(snapshot_json, content): assert snapshot_json == content def test_exclude_simple(snapshot_json): content = { "id": 123456789, "foo": "__SHOULD_BE_REMOVED_FROM_JSON__", "I'm": "still alive", "nested": { "foo": "is still alive", }, } assert snapshot_json(exclude=props("id", "foo")) == content assert snapshot_json(exclude=paths("id", "foo")) == content def test_include_simple(snapshot_json): content = { "id": 123456789, "foo": "__SHOULD_BE_REMOVED_FROM_JSON__", "I'm": "still alive", "nested": { "foo": "is still alive", }, } assert snapshot_json(include=props("id", "foo")) == content assert snapshot_json(include=paths("id", "foo")) == content def test_exclude_nested(snapshot_json): content = { "a": "b", "foo": { "bar": "__SHOULD_BE_REMOVED_FROM_JSON__", }, "x": { "y": { "z": "__SHOULD_BE_REMOVED_FROM_JSON__", "zz": "I'm still there", } }, } assert snapshot_json(exclude=paths("foo.bar", "x.y.z")) == content def test_exclude_in_json_with_empty_values(snapshot_json): content = { "foo": "bar", "none": None, "empty_dict": {}, "empty_list": [], } assert snapshot_json(exclude=props("foo")) == content syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/test_json_matchers.py000066400000000000000000000013171513542711300306710ustar00rootroot00000000000000import datetime import random import pytest from syrupy.extensions.json import JSONSnapshotExtension from syrupy.matchers import path_type @pytest.fixture def snapshot_json(snapshot): return snapshot.use_extension(JSONSnapshotExtension) def test_matcher(snapshot_json): content = { "int": random.randint(1, 100), "date": datetime.datetime.utcnow(), "foo": { "x": "y", "another_date": datetime.datetime.utcnow(), }, } matcher = path_type( { "int": (int,), "date": (datetime.date,), "foo.another_date": (dict, datetime.datetime), } ) assert snapshot_json(matcher=matcher) == content syrupy-project-syrupy-7096efd/tests/syrupy/extensions/json/test_json_serializer.py000066400000000000000000000147131513542711300312400ustar00rootroot00000000000000from collections import ( OrderedDict, namedtuple, ) import pytest from syrupy.extensions.amber.serializer import AmberDataSerializer from syrupy.extensions.json import JSONSnapshotExtension @pytest.fixture def snapshot_json(snapshot): return snapshot.use_extension(JSONSnapshotExtension) def test_non_snapshots(snapshot_json): with pytest.raises(AssertionError): assert "Lorem ipsum." == "Muspi merol." def test_reflection(snapshot_json): assert snapshot_json == snapshot_json def test_empty_snapshot(snapshot_json): assert snapshot_json == None # noqa: E711 assert snapshot_json == "" def test_snapshot_markers(snapshot_json): """ Test snapshot markers do not break serialization when in snapshot data """ marker_strings = ( AmberDataSerializer._marker_prefix, f"{AmberDataSerializer._indent}{AmberDataSerializer._marker_prefix}", f"{AmberDataSerializer._marker_prefix}{AmberDataSerializer.Marker.Divider}", f"{AmberDataSerializer._marker_prefix}{AmberDataSerializer.Marker.Name}:", ) assert snapshot_json == "\n".join(marker_strings) def test_newline_control_characters(snapshot_json): assert snapshot_json == "line 1\nline 2" assert snapshot_json == "line 1\r\nline 2" assert snapshot_json == "line 1\r\nline 2\r\n" assert snapshot_json == "line 1\rline 2\r" assert snapshot_json == "line 1\rline 2\n" assert snapshot_json == "line 1\rline 2" def test_multiline_string_in_dict(snapshot_json): lines = "\n".join(["line 1", "line 2"]) assert {"value": lines} == snapshot_json def test_deeply_nested_multiline_string_in_dict(snapshot_json): lines = "\n".join(["line 1", "line 2", "line 3"]) d = {"value_a": {"value_b": lines}} assert d == snapshot_json @pytest.mark.parametrize("actual", [False, True]) def test_bool(actual, snapshot_json): assert actual == snapshot_json @pytest.mark.parametrize( "actual", [ "", r"Raw string", r"Escaped \n", r"Backslash \u U", "🥞🐍🍯", "singleline:", "- singleline", "multi-line\nline 2\nline 3", "multi-line\nline 2\n line 3", "string with 'quotes'", b"Byte string", ], ids=lambda x: "", ) def test_string(snapshot_json, actual): assert snapshot_json == actual def test_multiple_snapshots(snapshot_json): assert "First." == snapshot_json snapshot_json.assert_match("Second.") assert snapshot_json == "Third." ExampleTuple = namedtuple("ExampleTuple", ["a", "b", "c", "d"]) def test_tuple(snapshot_json): assert snapshot_json == ("this", "is", ("a", "tuple")) assert snapshot_json == ExampleTuple(a="this", b="is", c="a", d={"named", "tuple"}) assert snapshot_json == () @pytest.mark.parametrize( "actual", [ {"this", "is", "a", "set"}, {"contains", "frozen", frozenset({"1", "2"})}, {"contains", "tuple", (1, 2)}, {"contains", "namedtuple", ExampleTuple(a=1, b=2, c=3, d=4)}, set(), ], ) def test_set(snapshot_json, actual): assert snapshot_json == actual @pytest.mark.parametrize( "actual", [ {"b": True, "c": "Some text.", "d": ["1", 2], "a": {"e": False}}, {"b": True, "c": "Some ttext.", "d": ["1", 2], "a": {"e": False}}, { 1: True, "a": "Some ttext.", "multi\nline\nkey": "Some morre text.", frozenset({"1", "2"}): ["1", 2], ExampleTuple(a=1, b=2, c=3, d=4): {"e": False}, "key": None, }, {}, {"key": ["line1\nline2"]}, {"key": [1, "line1\nline2", 2, "line3\nline4"]}, {"key": [1, ["line1\nline2"], 2]}, ], ) def test_dict(snapshot_json, actual): assert actual == snapshot_json def test_numbers(snapshot_json): assert snapshot_json == 3.5 assert snapshot_json == 7 assert snapshot_json == 2 / 6 @pytest.mark.parametrize( "actual", [ [], ["this", "is", "a", "list"], ["contains", "empty", []], [1, 2, "string", {"key": "value"}], ], ) def test_list(snapshot_json, actual): assert actual == snapshot_json list_cycle = [1, 2, 3] list_cycle.append(list_cycle) dict_cycle = {"a": 1, "b": 2, "c": 3} dict_cycle.update(d=dict_cycle) @pytest.mark.parametrize("cyclic", [list_cycle, dict_cycle]) def test_cycle(cyclic, snapshot_json): assert cyclic == snapshot_json class CustomClass: a = 1 b = "2" c = list_cycle d = dict_cycle _protected_variable = None __private_variable = None def __init__(self, x=None): self.x = x self._y = 1 self.__z = 2 def public_method(self, a, b=1, *, c, d=None): pass def _protected_method(self): pass def __private_method(self): pass def test_custom_object_repr(snapshot_json): assert CustomClass(CustomClass()) == snapshot_json class TestClass: def test_class_method_name(self, snapshot_json): assert snapshot_json == "this is in a test class" @pytest.mark.parametrize("actual", ["a", "b", "c"]) def test_class_method_parametrized(self, snapshot_json, actual): assert snapshot_json == actual @pytest.mark.parametrize("actual", ["x", "y", "z"]) class TestNestedClass: def test_nested_class_method(self, snapshot_json, actual): assert snapshot_json == f"parameterized nested class method {actual}" class TestSubClass(TestClass): pass @pytest.mark.parametrize("parameter_with_dot", ("value.with.dot",)) def test_parameter_with_dot(parameter_with_dot, snapshot_json): assert parameter_with_dot == snapshot_json @pytest.mark.parametrize("parameter_1", ("foo",)) @pytest.mark.parametrize("parameter_2", ("bar",)) def test_doubly_parametrized(parameter_1, parameter_2, snapshot_json): assert parameter_1 == snapshot_json assert parameter_2 == snapshot_json def test_ordered_dict(snapshot_json): d = OrderedDict() d["b"] = 0 d["a"] = OrderedDict(b=True, a=False) assert snapshot_json == d def function_to_test( var1, var2="test_val", var3: str = "test_val2", *, kwvar1, kwvar2="some_val" ) -> str: return "2" def test_function_in_file(snapshot_json): assert snapshot_json == function_to_test def test_function_local(snapshot_json): def local_function_to_test( var1, var2="test_val", var3: str = "test_val2", *, kwvar1, kwvar2="some_val" ) -> int: return 1 assert snapshot_json == local_function_to_test syrupy-project-syrupy-7096efd/tests/syrupy/extensions/test_amber_single_file.py000066400000000000000000000006631513542711300305120ustar00rootroot00000000000000import pytest from syrupy.extensions.single_file import SingleFileAmberSnapshotExtension @pytest.fixture def snapshot_single(snapshot): return snapshot.use_extension(SingleFileAmberSnapshotExtension) def test_amber_single_file(snapshot_single): assert snapshot_single == 1 assert snapshot_single == {"a": "b"} assert ( snapshot_single == """ Multi line string """ ) syrupy-project-syrupy-7096efd/tests/syrupy/extensions/test_base.py000066400000000000000000000041131513542711300257700ustar00rootroot00000000000000import pytest from syrupy.constants import DIFF_LINE_COUNT_LIMIT from syrupy.extensions.base import SnapshotReporter class SnapshotReporterNoContext(SnapshotReporter): @property def _context_line_count(self) -> int: return 0 @pytest.mark.parametrize("Reporter", [SnapshotReporter, SnapshotReporterNoContext]) class TestSnapshotReporter: @pytest.mark.parametrize( "a, b", [ ( "line 0\nline 1\nline 02\nline 3\nline 4\r\nline 5\nline 6\nline 7", "line 0\nline 1\nline 2\r\nline 3\nline 04\nline 5\nline 6\nline 7", ), ( "line 0\nline 1\nline 2\nline 3\t\nline 4\nline 5\nline 6\nline 7", "line 0\nline 1\nline 2\nline 3 \nline 4\nline 5\nline 6\nline 7", ), ( "line 0\nline 1\nline 2\nline 3\r\nline 4\nline 5\nline 6\nline 7", "line 0\rline 1\nline 2\r\nline 3\nline 4\nline 5\nline 6\nline 7", ), ], ids=lambda _: "", ) def test_diff_lines(self, a, b, Reporter, snapshot, osenv): with osenv(NO_COLOR="true"): assert "\n".join(Reporter().diff_lines(a, b)) == snapshot def test_diff_large(self, Reporter, snapshot, osenv): n_count = 3000 + DIFF_LINE_COUNT_LIMIT * 2 obj_a = [str(x) + ("a" * 20) for x in range(n_count)] obj_b = [ line_a + ("b" if n > DIFF_LINE_COUNT_LIMIT else "") for n, line_a in enumerate(obj_a) ] str_a = "\n".join(obj_a) str_b = "\n".join(obj_b) with osenv(NO_COLOR="true"): assert "\n".join(Reporter().diff_lines(str_a, str_b)) == snapshot def test_diff_large_lines(self, Reporter, snapshot, osenv): n_count = 1000000 obj_a = [str(x) + ("a" * n_count) for x in range(20)] obj_b = [line_a[: n_count // 2] + "b" * n_count for line_a in obj_a] str_a = "\n".join(obj_a) str_b = "\n".join(obj_b) with osenv(NO_COLOR="true"): assert "\n".join(Reporter().diff_lines(str_a, str_b)) == snapshot syrupy-project-syrupy-7096efd/tests/syrupy/extensions/test_single_file.py000066400000000000000000000037071513542711300273460ustar00rootroot00000000000000from pathlib import Path from typing import TYPE_CHECKING import pytest from syrupy.data import ( Snapshot, SnapshotCollection, ) from syrupy.extensions.single_file import ( SingleFileSnapshotExtension, WriteMode, ) if TYPE_CHECKING: from syrupy.assertion import SnapshotAssertion @pytest.fixture def snapshot_single(snapshot): return snapshot.use_extension(SingleFileSnapshotExtension) class SingleFileUTF8SnapshotExtension(SingleFileSnapshotExtension): _write_mode = WriteMode.TEXT @pytest.fixture def snapshot_utf8(snapshot): return snapshot.use_extension(SingleFileUTF8SnapshotExtension) def test_does_not_write_non_binary(testdir, snapshot_single: "SnapshotAssertion"): snapshot_collection = SnapshotCollection( location=str(Path(testdir.tmpdir).joinpath("snapshot_collection.raw")), ) snapshot_collection.add(Snapshot(name="snapshot_name", data="non binary data")) with pytest.raises(TypeError, match="Expected 'bytes', got 'str'"): snapshot_single.extension.write_snapshot_collection( snapshot_collection=snapshot_collection ) assert not Path(snapshot_collection.location).exists() class TestClass: def test_class_method_name(self, snapshot_single): assert snapshot_single == b"this is in a test class" @pytest.mark.parametrize("content", [b"x", b"y", b"z"]) def test_class_method_parametrized(self, snapshot_single, content): assert snapshot_single == content def test_underscore(snapshot_single): assert snapshot_single == b"apple" def test_____underscore(snapshot_single): assert snapshot_single == b"orange" @pytest.mark.parametrize( "content", [b"", b"_", b"a?", b"space space", b".123~!@#$%^&*()/[]{}|"] ) def test_special_characters(snapshot_single, content): assert snapshot_single == content @pytest.mark.parametrize("content", ["greek ῴ"]) def test_unicode(snapshot_utf8, content): assert snapshot_utf8 == content syrupy-project-syrupy-7096efd/tests/syrupy/test_diff_mode.py000066400000000000000000000002531513542711300245740ustar00rootroot00000000000000from syrupy.assertion import DiffMode def test_can_be_stringified(snapshot): assert snapshot == str(DiffMode.DETAILED) assert snapshot == str(DiffMode.DISABLED) syrupy-project-syrupy-7096efd/tests/syrupy/test_doctest.py000066400000000000000000000021711513542711300243260ustar00rootroot00000000000000def doctest_fn(): """a doctest in a function docstring >>> doctest_fn() == getfixture('snapshot') True """ return "doc test fn return value" class DocTestClass: """ >>> DocTestClass() == getfixture('snapshot') True a doctest in a class docstring >>> DocTestClass() == getfixture('snapshot') True """ obj_attr = "test class attr" def doctest_method(self): """a doctest in a method docstring >>> DocTestClass().doctest_method() == getfixture('snapshot') True """ return "doc test method return value" class NestedDocTestClass: """a doctest in a nested class docstring >>> DocTestClass.NestedDocTestClass() == getfixture('snapshot') True """ nested_obj_attr = "nested doc test class attr" def doctest_method(self): """a doctest in a nested method docstring >>> nested_obj = DocTestClass.NestedDocTestClass() >>> nested_obj.doctest_method() == getfixture('snapshot') True """ return "nested doc test method return value" syrupy-project-syrupy-7096efd/tests/syrupy/test_doctest.txt000066400000000000000000000003601513542711300245130ustar00rootroot00000000000000>>> "There must be a break after every snapshot assertion" == getfixture('snapshot') True doctest x doctest y >>> y = "constant value" >>> y == getfixture('snapshot') True doctest z >>> z = {1, 2, 3} >>> z == getfixture('snapshot') True syrupy-project-syrupy-7096efd/tests/syrupy/test_location.py000066400000000000000000000107411513542711300244730ustar00rootroot00000000000000from pathlib import Path from unittest.mock import MagicMock import pytest from syrupy.constants import PYTEST_NODE_SEP from syrupy.location import PyTestLocation def mock_pytest_item(node_id: str, method_name: str) -> "pytest.Item": mock_node = MagicMock(spec=pytest.Item) mock_node.nodeid = node_id [filepath, *_, nodename] = node_id.split(PYTEST_NODE_SEP) mock_node.name = nodename mock_node.path = Path(filepath) mock_node.obj = MagicMock() mock_node.obj.__module__ = Path(filepath).stem mock_node.obj.__name__ = method_name return mock_node @pytest.mark.parametrize( "node_id, method_name, expected_filename, expected_classname, expected_snapshotname", ( ( "/tests/module/test_file.py::TestClass::method_name", "method_name", "test_file", "TestClass", "TestClass.method_name", ), ( "/tests/module/test_file.py::TestClass::method_name[1]", "method_name", "test_file", "TestClass", "TestClass.method_name[1]", ), ( "/tests/module/nest/test_file.py::TestClass::TestSubClass::method_name", "method_name", "test_file", "TestClass.TestSubClass", "TestClass.TestSubClass.method_name", ), ), ) def test_location_properties( node_id, method_name, expected_filename, expected_classname, expected_snapshotname, ): location = PyTestLocation(mock_pytest_item(node_id, method_name)) assert location.classname == expected_classname assert location.basename == expected_filename assert location.snapshot_name == expected_snapshotname @pytest.mark.parametrize( "node_id, method_name," "expected_location_matches, expected_location_misses," "expected_snapshot_matches, expected_snapshot_misses", ( ( "/tests/module/test_file.py::TestClass::method_name", "method_name", ("test_file.snap", "__snapshots__/test_file", "test_file/1.snap"), ( "test.snap", "__others__/test/file.snap", "test_file_extra.snap", "__snapshots__/test_file_extra", "test_file_extra/1.snap", "test_file/extra/1.snap", "__snapshots__/test_file/extra/even/more/1.snap", ), ( "TestClass.method_name", "TestClass.method_name[1]", "TestClass.method_name.1", ), ("method_name", "TestClass.method_names"), ), ( "/tests/module/test_file.py::TestClass::method_name[1]", "method_name", ( "test_file.snap", "__snapshots__/test_file", "test_file/TestClass.method_name[1].snap", "test_file/TestClass.method_name[1].1.snap", "test_file/TestClass.method_name[1][1].snap", ), ( "test.snap", "__others__/test/file.snap", "test_file_extra.snap", "__snapshots__/test_file_extra", "test_file_extra/1.snap", "test_file/extra/1.snap", "__snapshots__/test_file/extra/even/more/1.snap", "test_file/TestClass.method_name[1]xyz.snap", "test_file/TestClass.method_name[2].snap", ), ( "TestClass.method_name", "TestClass.method_name[1]", "TestClass.method_name.1", "TestClass.method_name[1][1]", "TestClass.method_name[1].1", ), ("method_name", "TestClass.method_names"), ), ), ) def test_location_matching( node_id, method_name, expected_location_matches, expected_location_misses, expected_snapshot_matches, expected_snapshot_misses, ): location = PyTestLocation(mock_pytest_item(node_id, method_name)) for location_match in expected_location_matches: assert location.matches_snapshot_location(location_match) for location_miss in expected_location_misses: assert not location.matches_snapshot_location(location_miss) for snapshot_match in expected_snapshot_matches: assert location.matches_snapshot_name(snapshot_match) for snapshot_miss in expected_snapshot_misses: assert not location.matches_snapshot_name(snapshot_miss) syrupy-project-syrupy-7096efd/tests/syrupy/test_utils.py000066400000000000000000000054061513542711300240250ustar00rootroot00000000000000from pathlib import Path import pytest from syrupy.exceptions import FailedToLoadModuleMember from syrupy.utils import ( import_module_member, walk_snapshot_dir, ) def makefiles(testdir, filetree, root=""): for filename, contents in filetree.items(): filepath = Path(root).joinpath(filename) if isinstance(contents, dict): testdir.mkdir(filepath) makefiles(testdir, contents, str(filepath)) else: name, ext = str(filepath.with_name(filepath.stem)), filepath.suffix testdir.makefile(ext, **{name: contents}) @pytest.fixture def testfiles(testdir): filetree = { "file1.txt": "file1", "file2.txt": "file2", "__snapshot__": { "wrong_snapfile1.ambr": "", "wrong_snapfolder": {"wrong_snapfile2.svg": ""}, }, "__snapshots__": { "snapfile1.ambr": "", "snapfolder": {"snapfile2.svg": ""}, }, } makefiles(testdir, filetree) return filetree, testdir def test_walk_dir_skips_non_snapshot_path(testfiles): _, testdir = testfiles snap_folder = Path("__snapshots__") assert { str(Path(p).relative_to(Path.cwd())) for p in walk_snapshot_dir(Path(testdir.tmpdir).joinpath(snap_folder)) } == { str(snap_folder.joinpath("snapfile1.ambr")), str(snap_folder.joinpath("snapfolder", "snapfile2.svg")), } def test_walk_dir_ignores_ignored_extensions(testdir): filetree = { "file1.txt": "file1", "file2.txt": "file2", "__snapshots__": { "snapfile1.ambr": "", "snapfile1.ambr.dvc": "", "snapfolder": {"snapfile2.svg": ""}, }, } makefiles(testdir, filetree) discovered_files = { str(Path(p).relative_to(Path.cwd())) for p in walk_snapshot_dir( Path(testdir.tmpdir).joinpath("__snapshots__"), ignore_extensions=["dvc"] ) } assert discovered_files == { str(Path("__snapshots__").joinpath("snapfile1.ambr")), str(Path("__snapshots__").joinpath("snapfolder", "snapfile2.svg")), } assert ( str(Path("__snapshots__").joinpath("snapfile1.ambr.dvc")) not in discovered_files ) def dummy_member(): return 123 def test_import_module_member_imports_member(): imported_member = import_module_member(f"{__name__}.dummy_member") assert imported_member() == 123 @pytest.mark.parametrize( "path", [ "dummy_member", f"{__name__}badpath.dummy_member", f"{__name__}.dummy_memberbadmember", ], ) def test_import_module_member_with_bad_path_raises_exception(path): with pytest.raises(FailedToLoadModuleMember): import_module_member(path)