From c925ac8d306b962a87a4ce7c9f712a044def39f5 Mon Sep 17 00:00:00 2001 From: Lawrence_Cin Date: Fri, 19 Jul 2024 00:49:05 +0700 Subject: [PATCH 1/7] Initial commit --- .github/workflows/lint.yaml | 35 +++++++ .gitignore | 31 ++++++ .pre-commit-config.yaml | 18 ++++ LICENSE.txt | 7 ++ README.md | 184 ++++++++++++++++++++++++++++++++++++ pyproject.toml | 44 +++++++++ requirements-dev.txt | 6 ++ samples/Pipfile | 15 +++ samples/pyproject.toml | 19 ++++ 9 files changed, 359 insertions(+) create mode 100644 .github/workflows/lint.yaml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 pyproject.toml create mode 100644 requirements-dev.txt create mode 100644 samples/Pipfile create mode 100644 samples/pyproject.toml diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..7f67e80 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,35 @@ +# GitHub Action workflow enforcing our code style. + +name: Lint + +# Trigger the workflow on both push (to the main repository, on the main branch) +# and pull requests (against the main repository, but from any repo, from any branch). +on: + push: + branches: + - main + pull_request: + +# Brand new concurrency setting! This ensures that not more than one run can be triggered for the same commit. +# It is useful for pull requests coming from the main repository since both triggers will match. +concurrency: lint-${{ github.sha }} + +jobs: + lint: + runs-on: ubuntu-latest + + env: + # The Python version your project uses. Feel free to change this if required. + PYTHON_VERSION: "3.12" + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python ${{ env.PYTHON_VERSION }} + uses: actions/setup-python@v5 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Run pre-commit hooks + uses: pre-commit/action@v3.0.1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..233eb87 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# Files generated by the interpreter +__pycache__/ +*.py[cod] + +# Environment specific +.venv +venv +.env +env + +# Unittest reports +.coverage* + +# Logs +*.log + +# PyEnv version selector +.python-version + +# Built objects +*.so +dist/ +build/ + +# IDEs +# PyCharm +.idea/ +# VSCode +.vscode/ +# MacOS +.DS_Store diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..4bccb6f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +# Pre-commit configuration. +# See https://github.com/python-discord/code-jam-template/tree/main#pre-commit-run-linting-before-committing + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: check-toml + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.5.0 + hooks: + - id: ruff + - id: ruff-format diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..5a04926 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright 2021 Python Discord + +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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d50f7b7 --- /dev/null +++ b/README.md @@ -0,0 +1,184 @@ +# Python Discord Code Jam Repository Template + +## A primer + +Hello code jam participants! We've put together this repository template for you to use in [our code jams](https://pythondiscord.com/events/) or even other Python events! + +This document contains the following information: + +1. [What does this template contain?](#what-does-this-template-contain) +2. [How do I use this template?](#how-do-i-use-this-template) +3. [How do I adapt this template to my project?](#how-do-i-adapt-this-template-to-my-project) + +> [!TIP] +> You can also look at [our style guide](https://pythondiscord.com/events/code-jams/code-style-guide/) to get more information about what we consider a maintainable code style. + +## What does this template contain? + +Here is a quick rundown of what each file in this repository contains: + +- [`LICENSE.txt`](LICENSE.txt): [The MIT License](https://opensource.org/licenses/MIT), an OSS approved license which grants rights to everyone to use and modify your project, and limits your liability. We highly recommend you to read the license. +- [`.gitignore`](.gitignore): A list of files and directories that will be ignored by Git. Most of them are auto-generated or contain data that you wouldn't want to share publicly. +- [`requirements-dev.txt`](requirements-dev.txt): Every PyPI package used for the project's development, to ensure a common development environment. More on that [below](#using-the-default-pip-setup). +- [`pyproject.toml`](pyproject.toml): Configuration and metadata for the project, as well as the linting tool Ruff. If you're interested, you can read more about `pyproject.toml` in the [Python Packaging documentation](https://packaging.python.org/en/latest/guides/writing-pyproject-toml/). +- [`.pre-commit-config.yaml`](.pre-commit-config.yaml): The configuration of the [pre-commit](https://pre-commit.com/) tool. +- [`.github/workflows/lint.yaml`](.github/workflows/lint.yaml): A [GitHub Actions](https://github.com/features/actions) workflow, a set of actions run by GitHub on their server after each push, to ensure the style requirements are met. + +Each of these files have comments for you to understand easily, and modify to fit your needs. + +### Ruff: general style rules + +Our first tool is Ruff. It will check your codebase and warn you about any non-conforming lines. +It is run with the command `ruff check` in the project root. + +Here is a sample output: + +```shell +$ ruff check +app.py:1:5: N802 Function name `helloWorld` should be lowercase +app.py:1:5: ANN201 Missing return type annotation for public function `helloWorld` +app.py:2:5: D400 First line should end with a period +app.py:2:5: D403 First word of the first line should be capitalized: `docstring` -> `Docstring` +app.py:3:15: W292 No newline at end of file +Found 5 errors. +``` + +Each line corresponds to an error. The first part is the file path, then the line number, and the column index. +Then comes the error code, a unique identifier of the error, and then a human-readable message. + +If, for any reason, you do not wish to comply with this specific error on a specific line, you can add `# noqa: CODE` at the end of the line. +For example: + +```python +def helloWorld(): # noqa: N802 + ... + +``` + +This will ignore the function naming issue and pass linting. + +> [!WARNING] +> We do not recommend ignoring errors unless you have a good reason to do so. + +### Ruff: formatting + +Ruff also comes with a formatter, which can be run with the command `ruff format`. +It follows the same code style enforced by [Black](https://black.readthedocs.io/en/stable/index.html), so there's no need to pick between them. + +### Pre-commit: run linting before committing + +The second tool doesn't check your code, but rather makes sure that you actually *do* check it. + +It makes use of a feature called [Git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) which allow you to run a piece of code before running `git commit`. +The good thing about it is that it will cancel your commit if the lint doesn't pass. You won't have to wait for GitHub Actions to report issues and have a second fix commit. + +It is *installed* by running `pre-commit install` and can be run manually by calling only `pre-commit`. + +[Lint before you push!](https://soundcloud.com/lemonsaurusrex/lint-before-you-push) + +#### List of hooks + +- `check-toml`: Lints and corrects your TOML files. +- `check-yaml`: Lints and corrects your YAML files. +- `end-of-file-fixer`: Makes sure you always have an empty line at the end of your file. +- `trailing-whitespace`: Removes whitespaces at the end of each line. +- `ruff`: Runs the Ruff linter. +- `ruff-format`: Runs the Ruff formatter. + +## How do I use this template? + +### Creating your team repository + +One person in the team, preferably the leader, will have to create the repository and add other members as collaborators. + +1. In the top right corner of your screen, where **Clone** usually is, you have a **Use this template** button to click. + ![use-this-template-button](https://docs.github.com/assets/images/help/repository/use-this-template-button.png) +2. Give the repository a name and a description. + ![create-repository-name](https://docs.github.com/assets/images/help/repository/create-repository-name.png) +3. Click **Create repository from template**. +4. Click **Settings** in your newly created repository. + ![repo-actions-settings](https://docs.github.com/assets/images/help/repository/repo-actions-settings.png) +5. In the "Access" section of the sidebar, click **Collaborators**. + ![collaborators-settings](https://github.com/python-discord/code-jam-template/assets/63936253/c150110e-d1b5-4e4d-93e0-0a2cf1de352b) +6. Click **Add people**. +7. Insert the names of each of your teammates, and invite them. Once they have accepted the invitation in their email, they will have write access to the repository. + +You are now ready to go! Sit down, relax, and wait for the kickstart! + +> [!IMPORTANT] +> Don't forget to swap "Python Discord" in the [`LICENSE.txt`](LICENSE.txt) file for the name of each of your team members or the name of your team *after* the start of the code jam. + +### Using the default pip setup + +Our default setup includes a bare requirements file to be used with a [virtual environment](https://docs.python.org/3/library/venv.html). +We recommend this if you have never used any other dependency manager, although if you have, feel free to switch to it. More on that [below](#how-do-i-adapt-this-template-to-my-project). + +#### Creating the environment + +Create a virtual environment in the folder `.venv`. + +```shell +python -m venv .venv +``` + +#### Entering the environment + +It will change based on your operating system and shell. + +```shell +# Linux, Bash +$ source .venv/bin/activate +# Linux, Fish +$ source .venv/bin/activate.fish +# Linux, Csh +$ source .venv/bin/activate.csh +# Linux, PowerShell Core +$ .venv/bin/Activate.ps1 +# Windows, cmd.exe +> .venv\Scripts\activate.bat +# Windows, PowerShell +> .venv\Scripts\Activate.ps1 +``` + +#### Installing the dependencies + +Once the environment is created and activated, use this command to install the development dependencies. + +```shell +pip install -r requirements-dev.txt +``` + +#### Exiting the environment + +Interestingly enough, it is the same for every platform. + +```shell +deactivate +``` + +Once the environment is activated, all the commands listed previously should work. + +> [!IMPORTANT] +> We highly recommend that you run `pre-commit install` as soon as possible. + +## How do I adapt this template to my project? + +If you wish to use Pipenv or Poetry, you will have to move the dependencies in [`requirements-dev.txt`](requirements-dev.txt) to the development dependencies of your tool. + +We've included a porting of [`requirements-dev.txt`](requirements-dev.txt) to both [Poetry](samples/pyproject.toml) and [Pipenv](samples/Pipfile) in the [`samples` folder](samples). +If you use the Poetry setup, make sure to change the project name, description, and authors at the top of the file. +Also note that the Poetry [`pyproject.toml`](samples/pyproject.toml) file does not include the Ruff configuration, so if you simply replace the file then the Ruff configuration will be lost. + +When installing new dependencies, don't forget to [pin](https://pip.pypa.io/en/stable/topics/repeatable-installs/#pinning-the-package-versions) them by adding a version tag at the end. +For example, if I wish to install [Click](https://click.palletsprojects.com/en/8.1.x/), a quick look at [PyPI](https://pypi.org/project/click/) tells me that `8.1.7` is the latest version. +I will then add `click~=8.1`, without the last number, to my requirements file or dependency manager. + +> [!IMPORTANT] +> A code jam project is left unmaintained after the end of the event. If the dependencies aren't pinned, the project will break after any major change in an API. + +## Final words + +> [!IMPORTANT] +> Don't forget to replace this README with an actual description of your project! Images are also welcome! + +We hope this template will be helpful. Good luck in the jam! diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..0880be9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,44 @@ +[tool.ruff] +# Increase the line length. This breaks PEP8 but it is way easier to work with. +# The original reason for this limit was a standard vim terminal is only 79 characters, +# but this doesn't really apply anymore. +line-length = 119 +# Target Python 3.12. If you decide to use a different version of Python +# you will need to update this value. +target-version = "py312" +# Automatically fix auto-fixable issues. +fix = true +# The directory containing the source code. If you choose a different project layout +# you will need to update this value. +src = ["src"] + +[tool.ruff.lint] +# Enable all linting rules. +select = ["ALL"] +# Ignore some of the most obnoxious linting errors. +ignore = [ + # Missing docstrings. + "D100", + "D104", + "D105", + "D106", + "D107", + # Docstring whitespace. + "D203", + "D213", + # Docstring punctuation. + "D415", + # Docstring quotes. + "D301", + # Builtins. + "A", + # Print statements. + "T20", + # TODOs. + "TD002", + "TD003", + "FIX", + # Annotations. + "ANN101", + "ANN102", +] diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..d529f2e --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,6 @@ +# This file contains all the development requirements for our linting toolchain. +# Don't forget to pin your dependencies! +# This list will have to be migrated if you wish to use another dependency manager. + +ruff~=0.5.0 +pre-commit~=3.7.1 diff --git a/samples/Pipfile b/samples/Pipfile new file mode 100644 index 0000000..27673c0 --- /dev/null +++ b/samples/Pipfile @@ -0,0 +1,15 @@ +# Sample Pipfile. + +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] + +[dev-packages] +ruff = "~=0.5.0" +pre-commit = "~=3.7.1" + +[requires] +python_version = "3.12" diff --git a/samples/pyproject.toml b/samples/pyproject.toml new file mode 100644 index 0000000..835045d --- /dev/null +++ b/samples/pyproject.toml @@ -0,0 +1,19 @@ +# Sample poetry configuration. + +[tool.poetry] +name = "Name" +version = "0.1.0" +description = "Description" +authors = ["Author 1 "] +license = "MIT" + +[tool.poetry.dependencies] +python = "3.12.*" + +[tool.poetry.dev-dependencies] +ruff = "~0.5.0" +pre-commit = "~3.7.1" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" From 9d021e7cc8712dc0d42a37c8cf4a8b681c9157bb Mon Sep 17 00:00:00 2001 From: Lawrence_Cin Date: Fri, 19 Jul 2024 19:09:54 +0700 Subject: [PATCH 2/7] feat: initial setup (#2) * feat: add initial setup * chore: remove watchdog from poetry --- Makefile | 3 + app/__init__.py | 0 app/bot.py | 39 +++ app/entrypoint.sh | 4 + app/main.py | 14 + app/settings.py | 13 + config/app/.env.example | 2 + docker-compose.yml | 11 + poetry.lock | 656 ++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 19 ++ requirements-dev.txt | 2 + samples/Pipfile | 15 - samples/pyproject.toml | 19 -- setup.cfg | 13 + 14 files changed, 776 insertions(+), 34 deletions(-) create mode 100644 Makefile create mode 100644 app/__init__.py create mode 100644 app/bot.py create mode 100644 app/entrypoint.sh create mode 100644 app/main.py create mode 100644 app/settings.py create mode 100644 config/app/.env.example create mode 100644 docker-compose.yml create mode 100644 poetry.lock delete mode 100644 samples/Pipfile delete mode 100644 samples/pyproject.toml create mode 100644 setup.cfg diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7f7af94 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +.PHONY: tc +tc: + @python -m mypy . diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/bot.py b/app/bot.py new file mode 100644 index 0000000..20b43cb --- /dev/null +++ b/app/bot.py @@ -0,0 +1,39 @@ +import logging + +from discord import Intents, Object +from discord.ext import commands +from discord.interactions import Interaction + +from .settings import BotSettings, settings + +logger = logging.getLogger(__name__) + + +class Bot(commands.Bot): + """Overriden class for the default discord Bot.""" + + def __init__(self, settings: BotSettings) -> None: + self.settings = settings + super().__init__(settings.COMMAND_PREFIX, intents=Intents.default()) + + async def on_ready(self) -> None: + """Overriden method on_ready.""" + logger.warning( + "[bot] syncing commands into server %s", + self.settings.GUILD_ID, + ) + await bot.tree.sync(guild=Object(id=settings.GUILD_ID)) + logger.warning("DONE syncing commands!") + + +bot = Bot(settings) + + +@bot.tree.command( + name="jam", + description="CodeJam Hello World!", + guild=Object(id=settings.GUILD_ID), +) +async def hello_world(interaction: Interaction) -> None: + """Says hello world.""" + await interaction.response.send_message("Hello World!") diff --git a/app/entrypoint.sh b/app/entrypoint.sh new file mode 100644 index 0000000..2a786d9 --- /dev/null +++ b/app/entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/bash + + +watchmedo auto-restart --directory=./app/ --pattern=*.py --recursive --debounce-interval=2 -- python -m app.main diff --git a/app/main.py b/app/main.py new file mode 100644 index 0000000..f8aa206 --- /dev/null +++ b/app/main.py @@ -0,0 +1,14 @@ +import logging + +from .bot import bot +from .settings import settings + + +def main() -> None: + """Run the app.""" + logging.basicConfig(level=logging.INFO) + bot.run(settings.DISCORD_TOKEN) + + +if __name__ == "__main__": + main() diff --git a/app/settings.py b/app/settings.py new file mode 100644 index 0000000..41b7302 --- /dev/null +++ b/app/settings.py @@ -0,0 +1,13 @@ +import os +from typing import Final + + +class BotSettings: + """All settings for the Bot application goes here.""" + + COMMAND_PREFIX: Final[str] = os.getenv("COMMAND_PREFIX", "!@#") + DISCORD_TOKEN: Final[str] = os.environ["DISCORD_TOKEN"] + GUILD_ID: Final[str] = os.environ["GUILD_ID"] + + +settings = BotSettings() diff --git a/config/app/.env.example b/config/app/.env.example new file mode 100644 index 0000000..efceef9 --- /dev/null +++ b/config/app/.env.example @@ -0,0 +1,2 @@ +DISCORD_TOKEN= +GUILD_ID= diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f847de2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +services: + bot: + build: + context: . + dockerfile: ./build/app/Dockerfile + env_file: + - ./config/app/.env + volumes: + - ./app:/app/app + restart: unless-stopped + stop_grace_period: 5s diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..82223f2 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,656 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "aiohttp" +version = "3.9.5" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, + {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, + {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, + {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, + {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, + {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, + {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, + {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, + {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, + {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, +] + +[package.dependencies] +aiosignal = ">=1.1.2" +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + +[[package]] +name = "discord-py" +version = "2.4.0" +description = "A Python wrapper for the Discord API" +optional = false +python-versions = ">=3.8" +files = [ + {file = "discord.py-2.4.0-py3-none-any.whl", hash = "sha256:b8af6711c70f7e62160bfbecb55be699b5cb69d007426759ab8ab06b1bd77d1d"}, + {file = "discord_py-2.4.0.tar.gz", hash = "sha256:d07cb2a223a185873a1d0ee78b9faa9597e45b3f6186df21a95cec1e9bcdc9a5"}, +] + +[package.dependencies] +aiohttp = ">=3.7.4,<4" + +[package.extras] +docs = ["sphinx (==4.4.0)", "sphinx-inline-tabs (==2023.4.21)", "sphinxcontrib-applehelp (==1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (==2.0.1)", "sphinxcontrib-jsmath (==1.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-trio (==1.1.2)", "sphinxcontrib-websupport (==1.2.4)", "typing-extensions (>=4.3,<5)"] +speed = ["Brotli", "aiodns (>=1.1)", "cchardet (==2.1.7)", "orjson (>=3.5.4)"] +test = ["coverage[toml]", "pytest", "pytest-asyncio", "pytest-cov", "pytest-mock", "typing-extensions (>=4.3,<5)", "tzdata"] +voice = ["PyNaCl (>=1.3.0,<1.6)"] + +[[package]] +name = "distlib" +version = "0.3.8" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, +] + +[[package]] +name = "filelock" +version = "3.15.4" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, + {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] +typing = ["typing-extensions (>=4.8)"] + +[[package]] +name = "frozenlist" +version = "1.4.1" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, +] + +[[package]] +name = "identify" +version = "2.6.0" +description = "File identification library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, + {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "multidict" +version = "6.0.5" +description = "multidict implementation" +optional = false +python-versions = ">=3.7" +files = [ + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] + +[[package]] +name = "platformdirs" +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] + +[[package]] +name = "pre-commit" +version = "3.7.1" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, + {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "ruff" +version = "0.5.3" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.5.3-py3-none-linux_armv6l.whl", hash = "sha256:b12424d9db7347fa63c5ed9af010003338c63c629fb9c9c6adb2aa4f5699729b"}, + {file = "ruff-0.5.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8d72c5684bbd4ed304a9a955ee2e67f57b35f6193222ade910cca8a805490e3"}, + {file = "ruff-0.5.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d2fc2cdb85ccac1e816cc9d5d8cedefd93661bd957756d902543af32a6b04a71"}, + {file = "ruff-0.5.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf4bc751240b2fab5d19254571bcacb315c7b0b00bf3c912d52226a82bbec073"}, + {file = "ruff-0.5.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc697ec874fdd7c7ba0a85ec76ab38f8595224868d67f097c5ffc21136e72fcd"}, + {file = "ruff-0.5.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e791d34d3557a3819b3704bc1f087293c821083fa206812842fa363f6018a192"}, + {file = "ruff-0.5.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:76bb5a87fd397520b91a83eae8a2f7985236d42dd9459f09eef58e7f5c1d8316"}, + {file = "ruff-0.5.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8cfc7a26422c78e94f1ec78ec02501bbad2df5834907e75afe474cc6b83a8c1"}, + {file = "ruff-0.5.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96066c4328a49fce2dd40e80f7117987369feec30ab771516cf95f1cc2db923c"}, + {file = "ruff-0.5.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03bfe9ab5bdc0b08470c3b261643ad54ea86edc32b64d1e080892d7953add3ad"}, + {file = "ruff-0.5.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7704582a026fa02cca83efd76671a98ee6eb412c4230209efe5e2a006c06db62"}, + {file = "ruff-0.5.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:08058d077e21b856d32ebf483443390e29dc44d927608dc8f092ff6776519da9"}, + {file = "ruff-0.5.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:77d49484429ed7c7e6e2e75a753f153b7b58f875bdb4158ad85af166a1ec1822"}, + {file = "ruff-0.5.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:642cbff6cbfa38d2566d8db086508d6f472edb136cbfcc4ea65997745368c29e"}, + {file = "ruff-0.5.3-py3-none-win32.whl", hash = "sha256:eafc45dd8bdc37a00b28e68cc038daf3ca8c233d73fea276dcd09defb1352841"}, + {file = "ruff-0.5.3-py3-none-win_amd64.whl", hash = "sha256:cbaec2ddf4f78e5e9ecf5456ea0f496991358a1d883862ed0b9e947e2b6aea93"}, + {file = "ruff-0.5.3-py3-none-win_arm64.whl", hash = "sha256:05fbd2cb404775d6cd7f2ff49504e2d20e13ef95fa203bd1ab22413af70d420b"}, + {file = "ruff-0.5.3.tar.gz", hash = "sha256:2a3eb4f1841771fa5b67a56be9c2d16fd3cc88e378bd86aaeaec2f7e6bcdd0a2"}, +] + +[[package]] +name = "virtualenv" +version = "20.26.3" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, + {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[[package]] +name = "yarl" +version = "1.9.4" +description = "Yet another URL library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +lock-version = "2.0" +python-versions = "3.12.*" +content-hash = "e4c463e872dddc7aeb1c70c42958b941c255029cea02f22ccfb59195259beaae" diff --git a/pyproject.toml b/pyproject.toml index 0880be9..3c1080a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,22 @@ +[tool.poetry] +name = "code-jam-2024" +version = "0.1.0" +description = "Ornate Orbits @ Code Jam 2024" +authors = [] +license = "MIT" + +[tool.poetry.dependencies] +python = "3.12.*" +discord-py = "^2.4.0" + +[tool.poetry.dev-dependencies] +ruff = "~0.5.0" +pre-commit = "~3.7.1" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + [tool.ruff] # Increase the line length. This breaks PEP8 but it is way easier to work with. # The original reason for this limit was a standard vim terminal is only 79 characters, diff --git a/requirements-dev.txt b/requirements-dev.txt index d529f2e..f31c747 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,3 +4,5 @@ ruff~=0.5.0 pre-commit~=3.7.1 + +discord.py~=2.4.0 diff --git a/samples/Pipfile b/samples/Pipfile deleted file mode 100644 index 27673c0..0000000 --- a/samples/Pipfile +++ /dev/null @@ -1,15 +0,0 @@ -# Sample Pipfile. - -[[source]] -url = "https://pypi.org/simple" -verify_ssl = true -name = "pypi" - -[packages] - -[dev-packages] -ruff = "~=0.5.0" -pre-commit = "~=3.7.1" - -[requires] -python_version = "3.12" diff --git a/samples/pyproject.toml b/samples/pyproject.toml deleted file mode 100644 index 835045d..0000000 --- a/samples/pyproject.toml +++ /dev/null @@ -1,19 +0,0 @@ -# Sample poetry configuration. - -[tool.poetry] -name = "Name" -version = "0.1.0" -description = "Description" -authors = ["Author 1 "] -license = "MIT" - -[tool.poetry.dependencies] -python = "3.12.*" - -[tool.poetry.dev-dependencies] -ruff = "~0.5.0" -pre-commit = "~3.7.1" - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..617edba --- /dev/null +++ b/setup.cfg @@ -0,0 +1,13 @@ +[mypy] +ignore_missing_imports = true +plugins = pydantic.mypy + +follow_imports = silent +warn_redundant_casts = True +warn_unused_ignores = True +disallow_any_generics = True +check_untyped_defs = True +no_implicit_reexport = True + +# for strict mypy: (this is the tricky one :-)) +disallow_untyped_defs = True From a7f019d58d2dee88ca6c61b57659363e69a70b7b Mon Sep 17 00:00:00 2001 From: Lawrence_Cin Date: Fri, 19 Jul 2024 20:08:03 +0700 Subject: [PATCH 3/7] fix: add dockerfile (#3) --- build/app/Dockerfile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 build/app/Dockerfile diff --git a/build/app/Dockerfile b/build/app/Dockerfile new file mode 100644 index 0000000..9f40d44 --- /dev/null +++ b/build/app/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.12-slim + +ENV PYTHONUNBUFFERED=1 + +RUN pip install --upgrade pip setuptools + +RUN mkdir app +WORKDIR /app + +COPY ./app/ ./app/ +COPY ./requirements-dev.txt . + +RUN pip install watchdog==4.0.1 +RUN pip install -r requirements-dev.txt + +CMD ["bash", "./app/entrypoint.sh"] From 772b8c3352d8ac69bc1f7bb22f16ed1a6be5db1e Mon Sep 17 00:00:00 2001 From: Bh Date: Wed, 24 Jul 2024 15:56:52 +0530 Subject: [PATCH 4/7] feat: add watch attr to docker-compose.yml --- docker-compose.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index f847de2..fca35c6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,3 +9,7 @@ services: - ./app:/app/app restart: unless-stopped stop_grace_period: 5s + develop: + watch: + - action: rebuild + path: requirements-dev.txt From eb0cbfe38642b474b0ce35bce6648c000da47dfe Mon Sep 17 00:00:00 2001 From: Lawrence_Cin Date: Fri, 26 Jul 2024 01:06:42 +0700 Subject: [PATCH 5/7] feat: add word generator (#5) * Add random word generator using NLTK and WordNet * Updated requirements.txt * refactor: word generator * chore: typing and nltk dependencies * fix: ruff issues * fix: Update is_valid method validation condtions --------- Co-authored-by: Muktadir <79001791+foxpc-ai@users.noreply.github.com> --- app/bot.py | 4 +-- app/word_generator.py | 63 +++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- requirements-dev.txt | 2 ++ 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 app/word_generator.py diff --git a/app/bot.py b/app/bot.py index 20b43cb..22677b3 100644 --- a/app/bot.py +++ b/app/bot.py @@ -1,6 +1,6 @@ import logging -from discord import Intents, Object +from discord import Client, Intents, Object from discord.ext import commands from discord.interactions import Interaction @@ -34,6 +34,6 @@ async def on_ready(self) -> None: description="CodeJam Hello World!", guild=Object(id=settings.GUILD_ID), ) -async def hello_world(interaction: Interaction) -> None: +async def hello_world(interaction: Interaction[Client]) -> None: """Says hello world.""" await interaction.response.send_message("Hello World!") diff --git a/app/word_generator.py b/app/word_generator.py new file mode 100644 index 0000000..e957e09 --- /dev/null +++ b/app/word_generator.py @@ -0,0 +1,63 @@ +import secrets +from dataclasses import dataclass +from typing import Final + +import nltk +from nltk.corpus import wordnet +from nltk.corpus.reader.wordnet import Lemma, Synset + + +@dataclass +class Word: + """The dataclass for a Word.""" + + word: str + definition: str + synonyms: set[str] + usages: list[str] + + +class WordGenerator: + """The class for generating a random word between 5 to 10 chars.""" + + CORPORA_WORDNET: Final[str] = "corpora/wordnet" + WORDNET: Final[str] = "wordnet" + + WORD_LENGTH_MIN: Final[int] = 5 + WORD_LENGTH_MAX: Final[int] = 10 + + def __init__(self) -> None: + self.synsets: list[Synset] = list(wordnet.all_synsets()) + + @classmethod + def download_corpus(cls) -> None: + """Ensure the wordnet corpus is downloaded.""" + try: + nltk.data.find(cls.CORPORA_WORDNET) + except LookupError: + nltk.download(cls.WORDNET) + + def _random_word_in_synset(self) -> tuple[str, Synset]: + synset: Synset = secrets.choice(self.synsets) + lemma: Lemma = secrets.choice(synset.lemmas()) + return lemma.name(), synset + + def is_valid(self, word: str) -> bool: + """Validate the word.""" + return ( + "-" not in word + and "_" not in word + and self.WORD_LENGTH_MIN <= len(word) <= self.WORD_LENGTH_MAX + ) + + def random(self) -> Word: + """Randomizes a word from the synset.""" + word, synset = self._random_word_in_synset() + while not self.is_valid(word): + word, synset = self._random_word_in_synset() + return Word( + word=word, + definition=synset.definition(), + synonyms={lm.name() for lm in synset.lemmas()}, + usages=synset.examples(), + ) diff --git a/pyproject.toml b/pyproject.toml index 3c1080a..47f8698 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ build-backend = "poetry.core.masonry.api" # Increase the line length. This breaks PEP8 but it is way easier to work with. # The original reason for this limit was a standard vim terminal is only 79 characters, # but this doesn't really apply anymore. -line-length = 119 +line-length = 79 # Target Python 3.12. If you decide to use a different version of Python # you will need to update this value. target-version = "py312" diff --git a/requirements-dev.txt b/requirements-dev.txt index f31c747..a6ff242 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,3 +6,5 @@ ruff~=0.5.0 pre-commit~=3.7.1 discord.py~=2.4.0 + +nltk~=3.8.1 From b39947c86a3036d98449f25be2b07ba3d914dfbe Mon Sep 17 00:00:00 2001 From: Lawrence_Cin Date: Sun, 28 Jul 2024 23:57:56 +0700 Subject: [PATCH 6/7] feat: wordle logic (#6) * add 3 slash command add start-wordle for user to start the game add guess for user to guess the word for now not fully function add end-wordle for user to end the game * feat: add db * feat: add wordle logic * feat: add db handling for wordle and guess * feat: add wordle logic, ui and db request * fix: should get the latest wordle game * refactor: wordle game logic * fix: any check using generator * refactor: ui * feat: update tests * resolve merge conflict * fix: KeyError when access guesses property, change order of select * feat: add get_guesses function * feat: update user interaction, bot embed message and DB operation * fix: clear up unuse variable and debugging messages * feat: add game end logic, valid word checking, bot response messages * feat: add data set for 5 letters words * fix: type consistency for some methods * feat: update word gen to random by length * feat: integrate wordle game with wordgen * fix: stabilize current impl * fix: should check for the word len first before validating * fix: wrong package * fix: should lower the word * feat: bootstrap nltk on app load * fix: get word from synset * fix: should upper the generated word * refactor: convert the functions into classes * feat: integrate with the new ui classes * refactor: resolve mypy issues * refactor: use enums * fix: missing self * fix: ruff linting * feat: add crawling scripts * feat: update Dockerfile with trivia.db * feat: add difficulty selection for the game * fix: change the label for select ui * fix: mypy complaints * feat: add trivia question in between guesses * refactor: typing * refactor: guess method * fix: reduce wordle retrievals * feat: add player and repo * feat: add player registration * fix: player registration * fix: game logic * feat: add help command, remove jam command, add hint, change guess embed ui colour * fix: wrong var * fix: wrong pending condition * fix: no hint for wrong answers * fix: wrong condition * fix: wrong condition check for status * fix: wrong check * fix: should end at last * fix: change response message * feat: add win stat * fix: remove prints * fix: ongoing condition * feat: delete res * fix: ruff --------- Co-authored-by: unknown Co-authored-by: Bh --- Makefile | 10 ++ app/bot.py | 194 ++++++++++++++++++++++++- app/container.py | 0 app/core/__init__.py | 0 app/core/ui.py | 297 ++++++++++++++++++++++++++++++++++++++ app/core/wordle.py | 193 +++++++++++++++++++++++++ app/enums.py | 11 ++ app/gather_trivias.py | 117 +++++++++++++++ app/main.py | 15 ++ app/models/__init__.py | 0 app/models/base.py | 45 ++++++ app/models/guess.py | 26 ++++ app/models/player.py | 13 ++ app/models/trivia.py | 34 +++++ app/models/wordle.py | 44 ++++++ app/storage/__init__.py | 0 app/storage/database.py | 47 ++++++ app/storage/guess.py | 63 ++++++++ app/storage/player.py | 41 ++++++ app/storage/trivia.py | 36 +++++ app/storage/wordle.py | 174 ++++++++++++++++++++++ app/word_generator.py | 153 ++++++++++++++++++-- build/app/Dockerfile | 1 + pyproject.toml | 6 + requirements-dev.txt | 3 +- tests/__init__.py | 0 tests/test_wordle_game.py | 18 +++ trivia.db | Bin 0 -> 692224 bytes 28 files changed, 1521 insertions(+), 20 deletions(-) create mode 100644 app/container.py create mode 100644 app/core/__init__.py create mode 100644 app/core/ui.py create mode 100644 app/core/wordle.py create mode 100644 app/enums.py create mode 100644 app/gather_trivias.py create mode 100644 app/models/__init__.py create mode 100644 app/models/base.py create mode 100644 app/models/guess.py create mode 100644 app/models/player.py create mode 100644 app/models/trivia.py create mode 100644 app/models/wordle.py create mode 100644 app/storage/__init__.py create mode 100644 app/storage/database.py create mode 100644 app/storage/guess.py create mode 100644 app/storage/player.py create mode 100644 app/storage/trivia.py create mode 100644 app/storage/wordle.py create mode 100644 tests/__init__.py create mode 100644 tests/test_wordle_game.py create mode 100644 trivia.db diff --git a/Makefile b/Makefile index 7f7af94..273786d 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,13 @@ .PHONY: tc tc: @python -m mypy . + + +.PHONY: test +test: + @python -m pytest . + + +.PHONY: testv +testv: + @python -m pytest -s . diff --git a/app/bot.py b/app/bot.py index 22677b3..2794319 100644 --- a/app/bot.py +++ b/app/bot.py @@ -1,10 +1,19 @@ import logging +from typing import cast +from uuid import UUID -from discord import Client, Intents, Object +from discord import Client, Intents, Object, TextChannel from discord.ext import commands from discord.interactions import Interaction +from .core import ui +from .core.wordle import UnequalInLengthError, WordleGame +from .models.wordle import Wordle, WordleStatus from .settings import BotSettings, settings +from .storage.guess import guess_repo +from .storage.player import player_repo +from .storage.trivia import trivia_repo +from .storage.wordle import wordle_repo logger = logging.getLogger(__name__) @@ -30,10 +39,183 @@ async def on_ready(self) -> None: @bot.tree.command( - name="jam", - description="CodeJam Hello World!", + name="start-wordle", + description="Start the wordle game", guild=Object(id=settings.GUILD_ID), ) -async def hello_world(interaction: Interaction[Client]) -> None: - """Says hello world.""" - await interaction.response.send_message("Hello World!") +async def start_wordle(interaction: Interaction[Client]) -> None: + """Start the wordle game.""" + if await wordle_repo.get_active_wordle_by_user_id(interaction.user.id): + await interaction.response.send_message( + "You already starts the wordle game\n\ + Please complete the current game to start a new game", + ) + return + + player = await player_repo.get(interaction.user.id) + if player is None: + await player_repo.create( + userid=interaction.user.id, + username=interaction.user.name, + display_name=interaction.user.display_name, + ) + await interaction.response.defer() + + view_menu = ui.StartSelectionView() + + await interaction.followup.send("Welcome to wordle", view=view_menu) + + +@bot.tree.command( + name="guess", + description="make a guess on the wordle", + guild=Object(id=settings.GUILD_ID), +) +async def guess(interaction: Interaction[Client], word: str) -> None: + """User guess the wordle.""" + wordle_game = WordleGame() + + if not wordle_game.check_valid_word(word=word.upper()): + await interaction.response.send_message( + f"{word.upper()} is not a valid word.", + ) + return + + wordle: Wordle | None = await wordle_repo.get_ongoing_wordle( + interaction.user.id, + ) + if wordle is None: + message = "Please start the wordle game before making a guess." + await interaction.response.send_message(message) + return + + match wordle.status: + case WordleStatus.ACTIVE.value: + try: + await wordle_game.guess( + user_id=interaction.user.id, + guess=word.upper(), + ) + except UnequalInLengthError: + message = "The length of guess and the word are not the same" + await interaction.response.send_message(content=message) + return + else: + embed = ui.GuessEmbed( + user=interaction.user, + guesses=await wordle_repo.get_guesses( + user_id=interaction.user.id + ), + ) + + await interaction.response.send_message(embed=embed) + case WordleStatus.PENDING.value: + message = ( + "Please complete the trivia question first " + "before continue guessing" + ) + await interaction.response.send_message(message) + return + case _: + return + + if not (await wordle_game.check_guess(interaction.user.id)): + await wordle_game.wrong_guess(id=wordle.id) + wordle = await wordle_repo.get_pending_wordle(interaction.user.id) + + if wordle: + await trivial(interaction=interaction, wordle_id=wordle.id) + return + else: + results = await wordle_repo.get_guesses(interaction.user.id) + await cast(TextChannel, interaction.channel).send( + content=f"Congratulations! {interaction.user.name}" + f"has guess the correct word in {len(results)} guess(es)" + ) + await wordle_game.win(interaction.user.id) + + +@bot.tree.command( + name="end-wordle", + description="end the current wordle game", + guild=Object(id=settings.GUILD_ID), +) +async def end_wordle(interaction: Interaction[Client]) -> None: + """User end the current wordle game.""" + if await wordle_repo.get_active_wordle_by_user_id( + user_id=interaction.user.id, + ) or await wordle_repo.get_pending_wordle(user_id=interaction.user.id): + await interaction.response.send_message("The current game ends") + + await WordleGame().end(interaction.user.id) + + else: + await interaction.response.send_message("You are not in a game yet.") + + +async def trivial(interaction: Interaction[Client], wordle_id: UUID) -> None: + """Show the trivial question.""" + trivia_ques = await trivia_repo.get_random() + + view = ui.TrivialSelectionView( + correct_answer=trivia_ques.correct_answer, + wrong_answers=[ + trivia_ques.incorrect_answer_1, + trivia_ques.incorrect_answer_2, + trivia_ques.incorrect_answer_3, + ], + wordle_id=wordle_id, + ) + + if interaction.response.is_done(): + await interaction.followup.send( + content=trivia_ques.question, view=view + ) + else: + await interaction.response.send_message( + content=trivia_ques.question, view=view + ) + + +@bot.tree.command( + name="player-stats", + description="Show the player stats", + guild=Object(id=settings.GUILD_ID), +) +async def show_player_stats(interaction: Interaction[Client]) -> None: + """Show the player stats.""" + wordles = await wordle_repo.get_by_user_id(interaction.user.id) + wins = [ + wordle + for wordle in wordles + if wordle.status == WordleStatus.COMPLETED.value + ] + num_guesses = await guess_repo.count_by_wordle_ids( + [wordle.id for wordle in wordles] + ) + player = await player_repo.get(interaction.user.id) + player_id = player.id if player else interaction.user.id + player_name = player.display_name if player else "unknown" + await interaction.response.send_message( + embed=ui.PlayerStatEmbed( + player_id, + player_name, + len(wordles), + len(wins), + num_guesses, + ) + ) + + +@bot.tree.command( + name="help", + description="See all the commands.", + guild=Object(id=settings.GUILD_ID), +) +async def help(interaction: Interaction[Client]) -> None: + """Show all the commands.""" + commands = bot.tree.get_commands(guild=Object(id=settings.GUILD_ID)) + + embed = ui.HelpEmbed(commands=commands) + + await interaction.response.send_message(embed=embed) diff --git a/app/container.py b/app/container.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/__init__.py b/app/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/ui.py b/app/core/ui.py new file mode 100644 index 0000000..83b3e3e --- /dev/null +++ b/app/core/ui.py @@ -0,0 +1,297 @@ +from collections.abc import Sequence +from random import shuffle +from typing import Final +from uuid import UUID + +from discord import ( + Client, + Embed, + Interaction, + Member, + SelectOption, + User, +) +from discord.app_commands import Command +from discord.ui import Select, View + +from app.core.wordle import WordleGame +from app.models.guess import Guess +from app.storage.wordle import wordle_repo +from app.word_generator import Difficulty + +EMOJI: Final[list[str]] = [ + ":green_heart:", + ":yellow_heart:", + ":blue_heart:", + ":purple_heart:", + ":heart:", +] + + +class GuessEmbed(Embed): + """Embed that show the guesses of the player.""" + + _2_SPACES: Final[str] = " " + _4_SPACES: Final[str] = " " + + def __init__(self, user: User | Member, guesses: Sequence[Guess]) -> None: + super().__init__(title=f"{user.name}'s Wordle Guess") + self.color = 0xFF0000 if int(guesses[-1].result) != 0 else 0x00FF00 + + for idx, guess in enumerate(guesses): + self.add_field( + name=f"Guess #{idx + 1}", + value=( + f"{self._format_guess_word(guess.content)}\n{self._format_guess_result(guess.result)}" + ), + inline=False, + ) + + def _format_guess_word(self, word: str) -> str: + """Format the guess word to show on the embed.""" + new_word = f"{self._2_SPACES}{self._4_SPACES.join(word)}" + + return ( + new_word.replace("L", " L ") + .replace("J", " J ") + .replace("I", " I ") + ) + + def _format_guess_result(self, word: str) -> str: + """Format the result into emoji to show on the embed.""" + return " ".join(EMOJI[int(val)] for val in word) + + +class PlayerStatEmbed(Embed): + """Embed that show the player stats.""" + + def __init__( # noqa: PLR0913 + self, + player_id: int, + player_name: str, + num_wordle_games: int, + num_wins: int, + num_guesses: int, + ) -> None: + super().__init__(title=f"{player_name}'s stats") + + self.add_field( + name="Player ID", + value=player_id, + inline=False, + ) + + self.add_field( + name="Player name", + value=player_name, + inline=False, + ) + + self.add_field( + name="Wordle Games", + value=num_wordle_games, + inline=False, + ) + + self.add_field( + name="Wins", + value=num_wins, + inline=False, + ) + + self.add_field( + name="Guesses", + value=num_guesses, + inline=False, + ) + + self.add_field( + name="Average guesses per game", + value=num_guesses // num_wordle_games, + inline=False, + ) + + +class HelpEmbed(Embed): + """Embed for the help comment.""" + + def __init__(self, commands: list[Command]) -> None: + super().__init__(title="Command Info") + + for command in commands: + self.add_field( + name=f"/{command.name}", + value=f" :right_arrow: {command.description}", + inline=False, + ) + + +class StartSelectionView(View): + """View that contains all the Select when game start.""" + + def __init__(self, *, timeout: float | None = 180) -> None: + self.length_selected = False + self.difficulty_selected = False + super().__init__(timeout=timeout) + + self.length_select = LengthSelect() + self.difficulty_select = DifficultySelect() + + self.add_item(self.length_select) + self.add_item(self.difficulty_select) + + async def start(self, interaction: Interaction[Client]) -> None: + """Start the Wordle Game.""" + await WordleGame().start( + interaction=interaction, + length_select=self.length_select, + difficulty_select=self.difficulty_select, + ) + + +class LengthSelect(Select[StartSelectionView]): + """Select that choose the length of a word in a Wordle Game.""" + + OPTION_PLACEHOLDER: Final[str] = "Choose Length of Word" + MIN_VALUES: Final[int] = 1 + MAX_VALUES: Final[int] = 1 + + def __init__(self) -> None: + options = [ + SelectOption( + label=f"{val} letters", + value=str(val), + description=f"The Wordle Game will be a {val} letters word.", + ) + for val in range(5, 16) + ] + + super().__init__( + placeholder=self.OPTION_PLACEHOLDER, + min_values=self.MIN_VALUES, + max_values=self.MAX_VALUES, + options=options, + ) + + self.add_option( + label="Random", + value="0", + description="Choose a random letter word for the Wordle Game.", + ) + + async def callback(self, interaction: Interaction[Client]) -> None: + """User made a selection.""" + if self.view is None: + return + + self.view.length_selected = True + + if self.view.length_selected and self.view.difficulty_selected: + await self.view.start(interaction) + else: + await interaction.response.defer() + + +class DifficultySelect(Select[StartSelectionView]): + """Select that choose the length of a word in a Wordle Game.""" + + OPTION_PLACEHOLDER: Final[str] = "Choose Wordle Game Difficulty" + MIN_VALUES: Final[int] = 1 + MAX_VALUES: Final[int] = 1 + + def __init__(self) -> None: + options = [ + SelectOption( + label=val, + value=val, + description=f"{val} Mode of Wordle", + # emoji + ) + for val in Difficulty + ] + + super().__init__( + placeholder=self.OPTION_PLACEHOLDER, + min_values=self.MIN_VALUES, + max_values=self.MAX_VALUES, + options=options, + ) + + async def callback(self, interaction: Interaction[Client]) -> None: + """User made a selection.""" + if self.view is None: + return + + self.view.difficulty_selected = True + + if self.view.length_selected and self.view.difficulty_selected: + await self.view.start(interaction) + else: + await interaction.response.defer() + + +class TrivialSelectionView(View): + """View that contains all the Select in a trivial question.""" + + OPTION_PLACEHOLDER: Final[str] = "Select the correct answer" + MIN_VALUES: Final[int] = 1 + MAX_VALUES: Final[int] = 1 + + CORRECT_VALUE: Final[str] = "0" + + def __init__( + self, + correct_answer: str, + wrong_answers: list[str], + wordle_id: UUID, + *, + timeout: float | None = 180, + ) -> None: + self.wordle_id = wordle_id + super().__init__(timeout=timeout) + + options = [ + SelectOption( + label=ans, + value=str(idx), + ) + for idx, ans in enumerate(wrong_answers, 1) + ] + + options.append(SelectOption(label=correct_answer, value="0")) + + shuffle(options) + + self.select: Select[TrivialSelectionView] = Select( + placeholder=self.OPTION_PLACEHOLDER, + min_values=self.MIN_VALUES, + max_values=self.MAX_VALUES, + options=options, + ) + + self.select.callback = self.check_answer # type: ignore[method-assign] + + self.add_item(self.select) + + async def check_answer(self, interaction: Interaction[Client]) -> None: + """Check if the selection is same as the answer.""" + if self.select.values[0] != self.CORRECT_VALUE: # noqa: PD011 + await interaction.response.send_message("Wrong Answer") + await wordle_repo.change_status( + id=self.wordle_id, is_winning=False + ) + return + + await interaction.response.send_message("Correct Answer") + await wordle_repo.change_status(id=self.wordle_id, is_winning=False) + + wordle_game = WordleGame() + wordle = await wordle_repo.get_ongoing_wordle( + user_id=interaction.user.id + ) + await interaction.followup.send("Incoming hint ...") + + hint = await wordle_game.get_hint( + user_id=interaction.user.id, word=wordle.word + ) + await interaction.followup.send(hint) diff --git a/app/core/wordle.py b/app/core/wordle.py new file mode 100644 index 0000000..ea6dbcf --- /dev/null +++ b/app/core/wordle.py @@ -0,0 +1,193 @@ +import logging +import secrets +from collections.abc import Generator +from typing import Any, Final +from uuid import UUID + +from discord import Client +from discord.interactions import Interaction +from discord.ui import Select, View + +from app.enums import MatchResult +from app.storage.guess import guess_repo +from app.storage.wordle import wordle_repo +from app.word_generator import Difficulty, Word, WordGenerator, get_wordgen + +logger = logging.getLogger(__name__) + + +class UnequalInLengthError(Exception): + """Guess and word are unequal in length.""" + + +class WordleGameNotFoundError(Exception): + """Exception raised when the wordle game not found.""" + + +class WordleGame: + """Represent a Wordle Game.""" + + WORD_LENGTH_MIN: Final[int] = 5 + WORD_LENGTH_MAX: Final[int] = 15 + DEVIATED_THRESHOLD: Final[int] = 4 + + def __init__(self) -> None: + self.wordgen: WordGenerator = get_wordgen() + + def _random_length(self) -> int: + return self.WORD_LENGTH_MIN + secrets.randbelow( + self.WORD_LENGTH_MAX - self.WORD_LENGTH_MIN + 1, + ) + + def _gen_word(self, length: int | None, difficulty: Difficulty) -> str: + """Generate a new word.""" + length = length or self._random_length() + return self.wordgen.random( + length=length, difficulty=difficulty + ).word.upper() + + def _gen_color( + self, + guesschar: str, + wordchar: str, + word: str, + ) -> int: + """Generate color for each char. + + - ❤️ for wrong letter (4) + - 💛 for correct letter, wrong position (1) + - 💚 for correct letter, correct location (0) + - 💙 for deviated letter, correct position (2) + - 💜 for deviated letter, wrong position (3) + """ + if guesschar == wordchar: + return MatchResult.CORRECT_LETTER_CORRECT_POSITION + if guesschar in word: + return MatchResult.CORRECT_LETTER_WRONG_POSITION + guess_ascii: int = ord(guesschar) + word_ascii: int = ord(wordchar) + if abs(guess_ascii - word_ascii) < self.DEVIATED_THRESHOLD: + return MatchResult.DEVIATED_LETTER_CORRECT_POSITION + if any( + abs(guess_ascii - ord(ch)) < self.DEVIATED_THRESHOLD for ch in word + ): + return MatchResult.DEVIATED_LETTER_WRONG_POSITION + return MatchResult.WRONG_LETTER + + def gen_colors_for_guess( + self, + guess: str, + word: str, + ) -> Generator[int, Any, Any]: + """Generate the guess result in integers.""" + for guesschar, wordchar in zip(guess, word, strict=False): + yield self._gen_color(guesschar, wordchar, word) + + async def start( + self, + interaction: Interaction[Client], + length_select: Select[View], + difficulty_select: Select[View], + ) -> str: + """Start the game.""" + word = self._gen_word( + length=int(length_select.values[0]), # noqa:PD011 + difficulty=Difficulty(difficulty_select.values[0]), # noqa:PD011 + ) + message = "You word is chosen." + message += ( + f"The word has {len(word)} letters." + if length_select.values[0] == "0" # noqa:PD011 + else "" + ) + message += "You can start guessing the word now." + + await wordle_repo.create(word, interaction.user.id) + await interaction.response.send_message(content=message) + return word + + async def guess( + self, + user_id: int, + guess: str, + ) -> None: + """Save the guess result into the DB.""" + wordle = await wordle_repo.get_active_wordle_by_user_id( + user_id=user_id, + ) + if wordle is None: + raise ValueError("wordle game not found for user %d" % user_id) + + if len(guess) != len(wordle.word): + raise UnequalInLengthError + + colors = self.gen_colors_for_guess(guess=guess, word=wordle.word) + await guess_repo.create( + content=guess, + result="".join(map(str, colors)), + wordle_id=wordle.id, + ) + + async def end(self, user_id: int) -> None: + """End the current wordle game of a user.""" + wordle = await wordle_repo.get_ongoing_wordle( + user_id=user_id, + ) + if not wordle: + raise WordleGameNotFoundError + await wordle_repo.change_status( + id=wordle.id, + is_winning=False, + is_ending=True, + ) + + async def win(self, user_id: int) -> None: + """Win the current wordle game of a user.""" + wordle = await wordle_repo.get_ongoing_wordle( + user_id=user_id, + ) + if not wordle: + raise WordleGameNotFoundError + await wordle_repo.change_status( + id=wordle.id, + is_winning=True, + is_ending=False, + ) + + async def check_guess(self, user_id: int) -> bool: + """Return True if the guess match the active wordle.""" + guesses = await wordle_repo.get_guesses(user_id=user_id) + latest_guess = guesses[-1].result + + return not any(map(int, latest_guess)) + + def check_valid_word(self, word: str) -> bool: + """Return True if the word is valid.""" + return self.wordgen.is_valid(word.lower()) + + async def wrong_guess(self, id: UUID) -> None: + """The previous guess is wrong.""" + await wordle_repo.change_status(id=id, is_winning=False) + + async def get_hint(self, user_id: int, word: str) -> str: + """Return hint for the user.""" + target_word: Word = self.wordgen.get_word(word=word) + + choice = secrets.randbelow(10) + + if choice < 8: # noqa: PLR2004 + return await self.get_letter_hint(user_id=user_id) + if choice == 8: # noqa: PLR2004 + return f"The definition of the word is {target_word.definition}" + + return f"The synonyms of the word are {"," + .join(target_word.synonyms)}" + + async def get_letter_hint(self, user_id: int) -> str: + """Return the correct letter at specific position.""" + wordle_game = await wordle_repo.get_ongoing_wordle(user_id=user_id) + position = secrets.randbelow(len(wordle_game.word)) + + return ( + f"{wordle_game.word[position]} is at the position {position + 1}" + ) diff --git a/app/enums.py b/app/enums.py new file mode 100644 index 0000000..e559b84 --- /dev/null +++ b/app/enums.py @@ -0,0 +1,11 @@ +from enum import IntEnum + + +class MatchResult(IntEnum): + """Meaningful guess result.""" + + CORRECT_LETTER_CORRECT_POSITION = 0 + CORRECT_LETTER_WRONG_POSITION = 1 + DEVIATED_LETTER_CORRECT_POSITION = 2 + DEVIATED_LETTER_WRONG_POSITION = 3 + WRONG_LETTER = 4 diff --git a/app/gather_trivias.py b/app/gather_trivias.py new file mode 100644 index 0000000..db97751 --- /dev/null +++ b/app/gather_trivias.py @@ -0,0 +1,117 @@ +# ref: https://github.com/blobfysh/opentdb-api/blob/master/index.js +import asyncio +import logging +import os +from typing import Final, TypedDict + +import httpx + +from .models.base import Base +from .models.trivia import Trivia, TriviaDifficulty +from .storage.database import trivia_database +from .storage.trivia import trivia_repo + +OPENTDB_ENDPOINT: Final[str] = ( + "https://opentdb.com/api.php?amount=50&type=multiple&token={token}" +) +HTTP_200_OK: Final[int] = 200 +logger = logging.getLogger("gather_trivia") + + +class OpentdbResult(TypedDict): + """Model for result in opentdb.""" + + type: str + difficulty: str + category: str + question: str + correct_answer: str + incorrect_answers: list[str] + + +class OpentdbResponse(TypedDict): + """Model for opentdb response.""" + + response_code: int + results: list[OpentdbResult] + + +def esc(text: str) -> str: + """De-escape all escaped strings.""" + return ( + text.replace(""", '"') + .replace("'", "'") + .replace("&", "&") + .replace("´", "`") + .replace("é", "é") + .replace("ó", "ó") + .replace("£", "£") + .replace("á", "á") + .replace("Á", "Á") + .replace("ñ", "ñ") + .replace("”", '"') + .replace("ö", "ö") + ) + + +async def main() -> None: + """The main gather function.""" + token: str = os.environ["TOKEN"] + response_code: int = 0 + + while response_code == 0: + try: + async with httpx.AsyncClient() as client: + response = await client.post( + url=OPENTDB_ENDPOINT.format(token=token), + timeout=None, + ) + if response.status_code != HTTP_200_OK: + logger.warning( + "abnormal status_code %d", response.status_code + ) + continue + response_dict: OpentdbResponse = response.json() + response_code = response_dict.get("response_code", 0) + for result in response_dict.get("results", []): + logger.info(result) + await trivia_repo.create( + Trivia( + difficulty=TriviaDifficulty(result["difficulty"]), + category=esc(result["category"]), + question=esc(result["question"]), + correct_answer=esc(result["correct_answer"]), + incorrect_answer_1=esc( + result["incorrect_answers"][0] + ), + incorrect_answer_2=esc( + result["incorrect_answers"][1] + ), + incorrect_answer_3=esc( + result["incorrect_answers"][2] + ), + ) + ) + except Exception as exc: + logger.exception(exc) + continue + finally: + await asyncio.sleep(2) + + +async def init_db() -> None: + """Initialize database.""" + async with trivia_database.engine.begin() as conn: + await conn.run_sync(Base.metadata.create_all) + + +async def get_random() -> None: + """Return a random trivia.""" + logger.info((await trivia_repo.get_random()).as_dict()) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + asyncio.run(init_db()) + asyncio.run(main()) + asyncio.run(get_random()) diff --git a/app/main.py b/app/main.py index f8aa206..66b794f 100644 --- a/app/main.py +++ b/app/main.py @@ -1,12 +1,27 @@ +import asyncio import logging from .bot import bot +from .models.base import Base from .settings import settings +from .storage.database import database +from .word_generator import WordGenerator + + +async def init_db() -> None: + """Seeds the tables.""" + async with database.engine.begin() as conn: + await conn.run_sync(Base.metadata.create_all) def main() -> None: """Run the app.""" logging.basicConfig(level=logging.INFO) + # TODO: move this to bot start hook + WordGenerator.download_corpus() + WordGenerator.boot() + + asyncio.run(init_db()) bot.run(settings.DISCORD_TOKEN) diff --git a/app/models/__init__.py b/app/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/models/base.py b/app/models/base.py new file mode 100644 index 0000000..774eef6 --- /dev/null +++ b/app/models/base.py @@ -0,0 +1,45 @@ +from collections.abc import Callable, Sequence +from typing import Any + +from sqlalchemy import inspect +from sqlalchemy.orm import DeclarativeBase + + +class classproperty: # noqa: N801 + """Decorator that converts a method. + + with a single cls argument into a property + that can be accessed directly from the class. + """ + + def __init__(self, method: Callable[..., Any]) -> None: + self.fget = method + + def __get__(self, instance: Any, cls: type) -> Any: # noqa: ANN401 + return self.fget(cls) + + def getter(self, method: Callable[..., Any]) -> "classproperty": + """Return the method.""" + self.fget = method + return self + + +class Base(DeclarativeBase): + """Base model.""" + + @classproperty + def relationships(cls) -> Sequence[str]: # noqa: N805 + """Return all relationship columns.""" + return cls.__mapper__.relationships.keys() + + @classproperty + def columns(cls) -> Sequence[str]: # noqa: N805 + """Return all columns.""" + return [column.key for column in inspect(cls).mapper.attrs] + + def as_dict(self) -> dict[str, Any]: + """Return dictionary format.""" + return { + col.key: getattr(self, col.key) + for col in inspect(self).mapper.column_attrs + } diff --git a/app/models/guess.py b/app/models/guess.py new file mode 100644 index 0000000..9c37b69 --- /dev/null +++ b/app/models/guess.py @@ -0,0 +1,26 @@ +from datetime import datetime +from uuid import UUID, uuid4 + +from sqlalchemy import ForeignKey +from sqlalchemy.orm import Mapped, mapped_column, relationship + +from .base import Base +from .wordle import Wordle + + +class Guess(Base): + """Guess model.""" + + __tablename__ = "guess" + + id: Mapped[UUID] = mapped_column( + primary_key=True, + index=True, + default=uuid4, + ) + created_at: Mapped[datetime] = mapped_column(default=datetime.utcnow) + content: Mapped[str] + result: Mapped[str] + wordle_id: Mapped[UUID] = mapped_column(ForeignKey("wordle.id")) + + wordle: Mapped[Wordle] = relationship(back_populates="guesses") diff --git a/app/models/player.py b/app/models/player.py new file mode 100644 index 0000000..67c7c6b --- /dev/null +++ b/app/models/player.py @@ -0,0 +1,13 @@ +from sqlalchemy.orm import Mapped, mapped_column + +from .base import Base + + +class Player(Base): + """Player model.""" + + __tablename__ = "player" + + id: Mapped[int] = mapped_column(primary_key=True, unique=True, index=True) + username: Mapped[str] + display_name: Mapped[str] diff --git a/app/models/trivia.py b/app/models/trivia.py new file mode 100644 index 0000000..28ccec6 --- /dev/null +++ b/app/models/trivia.py @@ -0,0 +1,34 @@ +from datetime import datetime +from enum import StrEnum, auto + +from sqlalchemy.orm import Mapped, mapped_column + +from .base import Base + + +class TriviaDifficulty(StrEnum): + """Enum for Trivia difficulties.""" + + EASY = auto() + MEDIUM = auto() + HARD = auto() + + +class Trivia(Base): + """Trivia model.""" + + __tablename__ = "trivia" + + id: Mapped[int] = mapped_column( + autoincrement=True, + primary_key=True, + index=True, + ) + created_at: Mapped[datetime] = mapped_column(default=datetime.utcnow) + difficulty: Mapped[TriviaDifficulty] + category: Mapped[str] + question: Mapped[str] + correct_answer: Mapped[str] + incorrect_answer_1: Mapped[str] + incorrect_answer_2: Mapped[str] + incorrect_answer_3: Mapped[str] diff --git a/app/models/wordle.py b/app/models/wordle.py new file mode 100644 index 0000000..9aaa7cd --- /dev/null +++ b/app/models/wordle.py @@ -0,0 +1,44 @@ +from datetime import datetime +from enum import Enum +from typing import TYPE_CHECKING +from uuid import UUID, uuid4 + +from sqlalchemy import asc, text +from sqlalchemy.orm import Mapped, mapped_column, relationship + +from .base import Base + +if TYPE_CHECKING: + from .guess import Guess + + +class WordleStatus(Enum): + """Status of Wordle.""" + + ACTIVE = 0 + COMPLETED = 1 + PENDING = 2 + ABORTED = 3 + + +class Wordle(Base): + """Wordle model.""" + + __tablename__ = "wordle" + + id: Mapped[UUID] = mapped_column( + primary_key=True, + index=True, + default=uuid4, + ) + created_at: Mapped[datetime] = mapped_column(default=datetime.utcnow) + updated_at: Mapped[datetime] = mapped_column(default=datetime.utcnow) + word: Mapped[str] + user_id: Mapped[int] + status: Mapped[int] + + guesses: Mapped[list["Guess"]] = relationship( + back_populates="wordle", + order_by=asc(text("Guess.created_at")), + lazy="selectin", + ) diff --git a/app/storage/__init__.py b/app/storage/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/storage/database.py b/app/storage/database.py new file mode 100644 index 0000000..339f921 --- /dev/null +++ b/app/storage/database.py @@ -0,0 +1,47 @@ +from collections.abc import AsyncIterator +from contextlib import asynccontextmanager +from functools import cached_property +from typing import Any + +from sqlalchemy.ext.asyncio import ( + AsyncSession, + async_sessionmaker, + create_async_engine, +) + + +class Database: + """Database wrapper.""" + + def __init__(self, url: str, **kw: dict[str, Any]) -> None: + self.engine = create_async_engine( + url, + pool_pre_ping=True, + echo=kw.pop("echo", False), + ) + + @cached_property + def session_maker(self) -> async_sessionmaker[AsyncSession]: + """Cached session maker.""" + return async_sessionmaker( + self.engine, + autoflush=False, + expire_on_commit=False, + ) + + @asynccontextmanager + async def create_session(self) -> AsyncIterator[AsyncSession]: + """Create a session context manager.""" + async with self.session_maker() as async_session: + try: + yield async_session + except Exception: + await async_session.rollback() + raise + finally: + await async_session.close() + + +# TODO: move this to a container +database = Database("sqlite+aiosqlite:///./test.db") +trivia_database = Database("sqlite+aiosqlite:///./trivia.db") diff --git a/app/storage/guess.py b/app/storage/guess.py new file mode 100644 index 0000000..0bc1d64 --- /dev/null +++ b/app/storage/guess.py @@ -0,0 +1,63 @@ +from collections.abc import Sequence +from typing import Any +from uuid import UUID + +from sqlalchemy import Result, select +from sqlalchemy.sql.functions import count + +from app.models.guess import Guess + +from .database import Database, database + + +class GuessRepo: + """Repository for interacting with Guess.""" + + def __init__(self, db: Database) -> None: + self.db: Database = db + + async def create( + self, + content: str, + result: str, + wordle_id: UUID, + ) -> Guess: + """Create a guess.""" + async with self.db.create_session() as session: + guess = Guess(content=content, result=result, wordle_id=wordle_id) + session.add(guess) + await session.commit() + await session.refresh(guess) + return guess + + async def get(self, id: UUID) -> Guess | None: + """Get guess by id.""" + async with self.db.create_session() as session: + stmt = select(Guess).where(Guess.id == id) + result = await session.execute(stmt) + guess: Guess | None = result.scalar() + return guess + + async def get_by_wordle_id(self, wordle_id: UUID) -> Sequence[Guess]: + """Get all guesses by wordle ID.""" + async with self.db.create_session() as session: + stmt = select(Guess).where(Guess.wordle_id == wordle_id) + result: Result[Any] = await session.execute(stmt) + guesses: Sequence[Guess] = result.scalars().all() + return guesses + + async def count_by_wordle_ids(self, wordle_ids: Sequence[UUID]) -> int: + """Count number of guesses by all wordle IDs.""" + async with self.db.create_session() as session: + stmt = ( + select(count()) + .select_from(Guess) + .where(Guess.wordle_id.in_(wordle_ids)) + ) + result: Result[Any] = await session.execute(stmt) + cnt: int = result.scalar() + return cnt + + +# TODO: move this to a container +guess_repo = GuessRepo(database) diff --git a/app/storage/player.py b/app/storage/player.py new file mode 100644 index 0000000..958967f --- /dev/null +++ b/app/storage/player.py @@ -0,0 +1,41 @@ +from sqlalchemy import select + +from app.models.player import Player + +from .database import Database, database + + +class PlayerRepo: + """Repository for players.""" + + def __init__(self, db: Database) -> None: + self.db: Database = db + + async def create( + self, + userid: int, + username: str, + display_name: str, + ) -> Player: + """Create a new player from discord user.""" + async with self.db.create_session() as session: + player = Player( + id=userid, + username=username, + display_name=display_name, + ) + session.add(player) + await session.commit() + await session.refresh(player) + return player + + async def get(self, id: int) -> Player | None: + """Get guess by id.""" + async with self.db.create_session() as session: + stmt = select(Player).where(Player.id == id) + result = await session.execute(stmt) + player: Player | None = result.scalar() + return player + + +player_repo = PlayerRepo(database) diff --git a/app/storage/trivia.py b/app/storage/trivia.py new file mode 100644 index 0000000..d7bd681 --- /dev/null +++ b/app/storage/trivia.py @@ -0,0 +1,36 @@ +from sqlalchemy import func, select + +from app.models.trivia import Trivia + +from .database import Database, trivia_database + + +class TriviaRepo: + """Repository for interacting with Trivia.""" + + def __init__(self, db: Database) -> None: + self.db: Database = db + + async def create( + self, + trivia: Trivia, + ) -> Trivia: + """Create a trivia.""" + async with self.db.create_session() as session: + session.add(trivia) + await session.commit() + await session.refresh(trivia) + return trivia + + async def get_random(self) -> Trivia: + """Get a random trivia question.""" + async with self.db.create_session() as session: + stmt = select(Trivia).order_by(func.random()) + result = await session.execute(stmt) + trivia: Trivia | None = result.scalar() + assert trivia, "no trivia in the database" + return trivia + + +# TODO: move this to a container +trivia_repo = TriviaRepo(trivia_database) diff --git a/app/storage/wordle.py b/app/storage/wordle.py new file mode 100644 index 0000000..2af0312 --- /dev/null +++ b/app/storage/wordle.py @@ -0,0 +1,174 @@ +import logging +from collections.abc import Sequence +from typing import Any, Final +from uuid import UUID + +from sqlalchemy import Result, desc, select, update + +from app.enums import MatchResult +from app.models.guess import Guess +from app.models.wordle import Wordle, WordleStatus + +from .database import Database, database + +logger = logging.getLogger(__name__) + + +class WordleNotFoundError(Exception): + """Wordle not found error.""" + + +class WordleRepo: + """Repository for interacting with Wordle.""" + + TRIVIA_THRESHOLD: Final[int] = 3 + + def __init__(self, db: Database) -> None: + self.db: Database = db + + async def create( + self, + word: str, + user_id: int, + ) -> Wordle: + """Create a wordle.""" + async with self.db.create_session() as session: + wordle = Wordle( + word=word, user_id=user_id, status=WordleStatus.ACTIVE.value + ) + session.add(wordle) + await session.commit() + await session.refresh(wordle) + return wordle + + async def get(self, id: UUID) -> Wordle | None: + """Get wordle by id.""" + async with self.db.create_session() as session: + stmt = select(Wordle).where(Wordle.id == id) + result = await session.execute(stmt) + wordle: Wordle | None = result.scalar() + return wordle + + async def get_by_user_id(self, user_id: int) -> Sequence[Wordle]: + """Get wordle by user id.""" + async with self.db.create_session() as session: + stmt = ( + select(Wordle) + .where(Wordle.user_id == user_id) + .order_by(desc(Wordle.created_at)) + ) + result: Result[Any] = await session.execute(stmt) + wordles: Sequence[Wordle] = result.scalars().all() + return wordles + + async def get_active_wordle_by_user_id( + self, + user_id: int, + ) -> Wordle | None: + """Get the active wordle by user id.""" + async with self.db.create_session() as session: + stmt = select(Wordle).where( + Wordle.user_id == user_id, + Wordle.status == WordleStatus.ACTIVE.value, + ) + + result = await session.execute(stmt) + wordle: Wordle | None = result.scalar() + return wordle + + async def get_pending_wordle(self, user_id: int) -> Wordle | None: + """Get the pending wordle by user id.""" + async with self.db.create_session() as session: + stmt = select(Wordle).where( + Wordle.user_id == user_id, + Wordle.status == WordleStatus.PENDING.value, + ) + result = await session.execute(stmt) + wordle: Wordle | None = result.scalar() + return wordle + + async def get_ongoing_wordle(self, user_id: int) -> Wordle | None: + """Get unfinished wordle game by user id.""" + async with self.db.create_session() as session: + stmt = select(Wordle).where( + Wordle.user_id == user_id, + Wordle.status.in_( + [ + WordleStatus.ACTIVE.value, + WordleStatus.PENDING.value, + ] + ), + ) + result = await session.execute(stmt) + wordle: Wordle | None = result.scalar() + return wordle + + async def _calculate_next_status(self, id: UUID) -> WordleStatus | None: + wordle = await wordle_repo.get(id=id) + if wordle is None: + return None + match wordle.status: + case WordleStatus.ACTIVE.value: + guesses = await wordle_repo.get_guesses(wordle.user_id) + if len(guesses) < self.TRIVIA_THRESHOLD: + return None + recent_results = [ + guess.result for guess in guesses[-self.TRIVIA_THRESHOLD :] + ] + if str( + MatchResult.CORRECT_LETTER_CORRECT_POSITION + ) not in "".join(recent_results): + return WordleStatus.PENDING.value + return None + case WordleStatus.PENDING.value: + return WordleStatus.ACTIVE.value + case WordleStatus.COMPLETED.value: + return None + case _: + raise ValueError + + async def change_status( + self, + id: UUID, + *, + is_winning: bool = False, + is_ending: bool = False, + ) -> None: + """Change the wordle status based on the current guess.""" + if is_winning and not is_ending: + next_status = WordleStatus.COMPLETED.value + elif is_ending and not is_winning: + next_status = WordleStatus.ABORTED.value + else: + next_status = await self._calculate_next_status(id) + if next_status is None: + return + logger.info("next status = %s", next_status) + async with self.db.create_session() as session: + stmt = ( + update(Wordle) + .where(Wordle.id == id) + .values(status=next_status) + ) + await session.execute(stmt) + await session.commit() + + async def win_game(self, id: UUID) -> None: + """Change the status when the play wins.""" + + async def get_guesses(self, user_id: int) -> Sequence[Guess]: + """Get the guesses of the active wordle of a user.""" + async with self.db.create_session() as session: + stmt = select(Wordle).where( + Wordle.user_id == user_id, + Wordle.status == WordleStatus.ACTIVE.value, + ) + result = await session.execute(stmt) + wordle: Wordle | None = result.scalar() + if wordle is None: + raise WordleNotFoundError + return wordle.guesses + + +# TODO: move this to a container +wordle_repo = WordleRepo(database) diff --git a/app/word_generator.py b/app/word_generator.py index e957e09..f708151 100644 --- a/app/word_generator.py +++ b/app/word_generator.py @@ -1,10 +1,21 @@ import secrets from dataclasses import dataclass -from typing import Final +from enum import StrEnum +from functools import lru_cache +from typing import TYPE_CHECKING, Final import nltk -from nltk.corpus import wordnet -from nltk.corpus.reader.wordnet import Lemma, Synset + +if TYPE_CHECKING: + from nltk.corpus.reader.wordnet import Lemma, Synset + + +class Difficulty(StrEnum): + """Enum for game difficulties.""" + + EASY = "Easy" + MEDIUM = "Medium" + HARD = "Hard" @dataclass @@ -24,10 +35,66 @@ class WordGenerator: WORDNET: Final[str] = "wordnet" WORD_LENGTH_MIN: Final[int] = 5 - WORD_LENGTH_MAX: Final[int] = 10 + WORD_LENGTH_MAX: Final[int] = 15 + + WORD_AMOUNT_HARD: Final[int] = 1 + WORD_AMOUNT_EASY: Final[int] = 5 def __init__(self) -> None: - self.synsets: list[Synset] = list(wordnet.all_synsets()) + self.download_corpus() + self.synsets: list[Synset] = [] + self.mp_len_words: dict[int, dict[Difficulty, list[str]]] = { + val: {diff: [] for diff in Difficulty} + for val in range(self.WORD_LENGTH_MIN, self.WORD_LENGTH_MAX + 1) + } + self.mp_len_synsets: dict[int, dict[Difficulty, list[Synset]]] = { + val: {diff: [] for diff in Difficulty} + for val in range(self.WORD_LENGTH_MIN, self.WORD_LENGTH_MAX + 1) + } + self.separate_lengths() + + def separate_lengths(self) -> None: + """Populate the wordnet data for each length.""" + from nltk.corpus import wordnet + + temp_words: dict[int, dict[str, int]] = {} + temp_synsets: dict[int, list[Synset]] = {} + + for synset in wordnet.all_synsets(): + word = synset.name().split(".", 1)[0] + if not self.is_qualified(word): + continue + word_length = len(word) + + temp_words.setdefault(word_length, {}) + if not temp_words.get(word_length, {}).get(word): + self.synsets.append(synset) + temp_words[word_length][word] = 1 + temp_synsets.setdefault(word_length, []) + temp_synsets[word_length].append(synset) + else: + temp_words[word_length][word] += 1 + + for i in range(self.WORD_LENGTH_MIN, self.WORD_LENGTH_MAX + 1): + for (word, val), synset in zip( + temp_words[i].items(), temp_synsets[i], strict=False + ): + if val == self.WORD_AMOUNT_HARD: + self.mp_len_words[i][Difficulty.HARD].append(word) + self.mp_len_synsets[i][Difficulty.HARD].append(synset) + elif self.WORD_AMOUNT_HARD < val < self.WORD_AMOUNT_EASY: + self.mp_len_words[i][Difficulty.MEDIUM].append(word) + self.mp_len_synsets[i][Difficulty.MEDIUM].append(synset) + else: + self.mp_len_words[i][Difficulty.EASY].append(word) + self.mp_len_synsets[i][Difficulty.EASY].append(synset) + + @classmethod + def boot(cls) -> None: + """Try accessing wordnet data to trigger data validation.""" + from nltk.corpus import wordnet + + list(wordnet.all_synsets()) @classmethod def download_corpus(cls) -> None: @@ -37,27 +104,87 @@ def download_corpus(cls) -> None: except LookupError: nltk.download(cls.WORDNET) - def _random_word_in_synset(self) -> tuple[str, Synset]: + def _random_word_in_synset(self) -> tuple[str, "Synset"]: synset: Synset = secrets.choice(self.synsets) lemma: Lemma = secrets.choice(synset.lemmas()) return lemma.name(), synset - def is_valid(self, word: str) -> bool: - """Validate the word.""" + def is_qualified(self, word: str) -> bool: + """Word qualification for adding into bank.""" return ( "-" not in word and "_" not in word and self.WORD_LENGTH_MIN <= len(word) <= self.WORD_LENGTH_MAX ) - def random(self) -> Word: + def is_valid(self, word: str) -> bool: + """Check if the word exists in the bank.""" + if len(word) not in self.mp_len_words: + return False + return ( + word + in self.mp_len_words[len(word)][Difficulty.EASY] + + self.mp_len_words[len(word)][Difficulty.MEDIUM] + + self.mp_len_words[len(word)][Difficulty.HARD] + ) + + def random(self, length: int, difficulty: Difficulty) -> Word: """Randomizes a word from the synset.""" - word, synset = self._random_word_in_synset() - while not self.is_valid(word): - word, synset = self._random_word_in_synset() + dataset: list[Synset] = self.mp_len_synsets.get(length, {}).get( + difficulty, [] + ) + + assert len(dataset) > 0, "the word bank is empty" + + synset = secrets.choice(dataset) + return Word( + word=synset.name().split(".", 1)[0], + definition=synset.definition(), + synonyms={lm.name() for lm in synset.lemmas()}, + usages=synset.examples(), + ) + + def get_word(self, word: str) -> Word: + """Get Word dataclass with the given word.""" + from nltk.corpus import wordnet + + synset: Synset = wordnet.synsets(word)[0] + return Word( - word=word, + word=synset.name().split(".", 1)[0], definition=synset.definition(), synonyms={lm.name() for lm in synset.lemmas()}, usages=synset.examples(), ) + + def __str__(self) -> str: + bank_stat = " | ".join( + [ + f"Len {length}: {len(words[diff])}" + for diff in Difficulty + for length, words in sorted(self.mp_len_words.items()) + ] + ) + return ( + "" + ) + + +@lru_cache +def get_wordgen() -> WordGenerator: + """Ensure only 1 instance of wordgen is used.""" + return WordGenerator() + + +if __name__ == "__main__": + import logging + + logging.basicConfig(level=logging.INFO) + logger = logging.getLogger(__name__) + wordgen = WordGenerator() + logger.info(wordgen) diff --git a/build/app/Dockerfile b/build/app/Dockerfile index 9f40d44..99f6f1c 100644 --- a/build/app/Dockerfile +++ b/build/app/Dockerfile @@ -8,6 +8,7 @@ RUN mkdir app WORKDIR /app COPY ./app/ ./app/ +COPY ./trivia.db ./trivia.db COPY ./requirements-dev.txt . RUN pip install watchdog==4.0.1 diff --git a/pyproject.toml b/pyproject.toml index 47f8698..0c8ff11 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,6 +49,8 @@ ignore = [ "D415", # Docstring quotes. "D301", + # Imperative mood. + "D401", # Builtins. "A", # Print statements. @@ -60,4 +62,8 @@ ignore = [ # Annotations. "ANN101", "ANN102", + # Assert. + "S101", + "COM812", + "TRY401", ] diff --git a/requirements-dev.txt b/requirements-dev.txt index a6ff242..2d33aba 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,5 +6,6 @@ ruff~=0.5.0 pre-commit~=3.7.1 discord.py~=2.4.0 - nltk~=3.8.1 +sqlalchemy~=2.0.28 +aiosqlite~=0.20.0 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_wordle_game.py b/tests/test_wordle_game.py new file mode 100644 index 0000000..8d1750c --- /dev/null +++ b/tests/test_wordle_game.py @@ -0,0 +1,18 @@ +import unittest +from collections.abc import Generator + +from app.core.wordle import WordleGame + + +class TestWordleGame(unittest.TestCase): + """Tests for Wordle Game.""" + + def test_color_for_guess(self) -> None: + """Tests that matching colors are correct.""" + guess = "zehfq" + word = "hello" + + game = WordleGame() + colors = game.gen_colors_for_guess(guess, word) + assert isinstance(colors, Generator) + assert list(colors) == [4, 0, 1, 3, 2] diff --git a/trivia.db b/trivia.db new file mode 100644 index 0000000000000000000000000000000000000000..3f80492a17fb9407eb243441df2a04a09c0bfb8e GIT binary patch literal 692224 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%0AS{k{LF|fj0FfSdhz-IcIy9&_ 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 z zCJRYEz$D7=DwPjMfUtDr2cof)6x-|nK~7%8s?fs<62W0PDF9PI^-kAbLdQTzl8&fd zZzMqnoda*1P2Wl7rhyNDnWE>Gh~cLR<>$7k$bt&Y@4BZ3l`S3qae7#lv$|_*;#3n_ zly=XP1SL@g7z|PEVhpi>lP{+H9h%7{gmzn4*^h+`y1Pt;1=W?8Vc1?yDY_U`WfKVJ z{`i~smK3P%_b;8e(!I|tdr7Ce3%MuwZ4iwh&DK>)3DD)JhYP$NL|8#CbM6<(`v3!g zFP!@ee=}S~&~zz-XCY{{Vuk4>bz1-#5n-xuK9S7iw0Ef}0o!>H>Py?iYz1K?4Y^6V zz)h~P&~?Fuzs)h5S%(CU-&p5HLJ=|##ENt{r!<#_`Ga%;7=lF$P`}uC=%I(g1re#| zLM>j9m53Tb%Pl44kW?ZV0Ggm{jsil<36qq7Zg6XLli4nSK~aQyUeH{AUhIT5BOL8! zkZfjFs#yXQ${j~)IP^^bQsWVgM{Y9) z(OF&xsWYZFY2oeDGNZ!jgH3Rn@cY7 z<~a6AK(4cwKqnxa?K@6SnhlCc&cdpXfF|?By6~GLTdS1z(vlJY^G$>RxtbM9)6_{F z+9T_qne>-iTSLeJ^*}w4cZTKcN~BqEB*AacfRRKYz*SZHDK-w}(Fi~TgzZ_fhx-w0 zAe)V>&)S%SBNBD=>2(wi*?ImRY=6Q6@u;MH=rX|VPhT>0$2pMx9L*$@WNANoPrWt) zHMV!QhBRd6VTOk3ejJop?#0a{t%Ad;79bhIstFud5DJ66B+m=aG-s$l^A)a6^aAZK(pnvpNt&|;kVYK3_?S0WejCV@@ozr ztr8^Kdpf`uMLnDoj&ht#ja|c~Z6W0(>e+cNxy%tBL)chg(j?Q2&sv4Syh>>m?}AOn z3fq`5D&5g9plfodRMb=s8${?omH-6u^2#npDR|@;+wP^bIoDo1*qw}%E!&e4))Ng3 zLS_{zoQoPFNy$hWLW(KU>nTB#i@1*6dv3t6+c1oXPT)z{jY*c>SxyPtMh%5sc8(x_ zrt8es{QUNU3dFkr$Sg>`!%AW-mJ$iYPn9$i+(74ce(Po~F=}sSzsTDQL%aL^nJlHs zkZ}m^Ori?X2mM*SQ#9aO#_ipglAtpLP2zrCy7!EhXU30pp6D!xnrnF|og55b9u~fg zs6*e=4Gc`v#iLF94Aj%XwG~m!Lq)&^5j)4tV#91c5{x1nzl7`pcfnCm$ zp2pO%Z!c%Lg27ihb2&eGPd!6Hc{d*KJY1eC*CX`}5A}!FgBI8Rz8%-iG%JqO^bFNN zSYvm$R+deeYsX49Nyohl;Azw~X^h5tdVr&*=(tDeM`n>rn>|DRlENO&xg~0&7oitg zc0h)UDODOlRd(-dm7VTLg%YsYBlOb9R@wfd-BU!&J8ab|+aUAA9n}E5g7CPNP5>2% zLsH*Q-N@7WnA2$rXUmZ_`WUW^V|xs_?R&8j``66sm&=P~gGyTe`aSFa+3kAS_PSHrV4O|-F_Jf3Y$1C z>D8&(t0Md{(x0m{l;dr7n*V>W??7|1>7~a1+W7f~AF2PH`X}rDe(g_^A0Mv%_UeYJ zKUn#XE1!r=d4IX$A07Nz-unOfe|~S?=s1&pqNOdQP_Q?4DhA8{P*|hf5+kW=><&1V zfMm0zU@yRVNE(9<2E`%e85HxYL>pH}MU*9o4>~`}n#EQTRaasPy97KAr(M-3YtYU^ zVVU)3@&{!RwZ3@hP+NP5d%&#w=ptk2`vUe*mvvGgDda#&clS+!nl7fdQ1?y_Es05S zoeEOfKuhvl=n`rZr_tsjM-j`2b4noLB>LYVxOzSurr-m%y92p?GU{NAS1w-?B5)uv zjRBUP@1I@1qra0YzHkAs zJBB5fr}$FgGbSnWupdI)20TuD2p1qtV#n?MsFE*AjJI!hv_2Ff#@U=$occ?r@vo*a z7%8H3y2NQgV3u?EJu0dpY#|4LklQ@HE{rHZr7RRc5VToNBvrR2exHf06fF>8%EbO; zYy8LWeL**yw&NY`!y#cCCebs{+uyezwzbP}X|CXh$*2HSvIl_zWS8k>Z{N&rVLLLoOU6D`?LdF^Ow13;*&S`!l*E+&}N=6lwvv%~L1 zm03Q|QKX6@F@JN4U{N@x z)@J$^HUo9!B$m6<8VhMZul?z#0ZA-0To7Q$we-5#Ds(DT)-&BXN?la?MlA~EzqmJ5yv*Rpby(mv(DU(DJ2%o8~bz){k zOeN_%v&)a9x7Jo4<4VlHFTb>mcTNcA4EYzN%H%yY)@-56-SPIYkcp<+(>oYej~Ny) zk%56zv8}UAwHsSLPYbm`5gXr|0(C3V0{3Z`DtgC>0Vh{^Z{Zu@(ugZ8#jXUKhMb1| z5DJU*_Bq}OcppNzO+^uTi6D$zmc8}Lu6uj2$!k92N!T}scOBTRyHWr!;VzMP_vsu)Dv`LJE@DzQUATV zCE6aFv?KBHkKbF@Hpl$I*3K{+g)llD;rd)F3};%Yxy%~&JTAnf8M_X9&aIroPC+IF zT@q|_SvHQIwE&V`d{n@6lnT8$E%3}QnUL;blVt(Kj^<9C5ydAvdMh^kWCTw_aD2bhL^;w>%IRweCJYb71`6%{ z_HOd5>uN}0pez``{q&>3M}pM?p9H~cp$=RpQT%AnU6(IK&6x%AayKHYHgS5H>5m~a zmJ&l0W9YBt1`1!O$CtelD}Lqj|37u0>06uH8ZUy+_Ugy$)@r}E=08{ei|UV7{n^T2 zsT_>F}f{%Ob%2^h2 zmCLPLrHkfFBe6Ge8L_B1^~G|YAmhT-Oh-T23u_7{G{16XCaK0b1h3~5f7L%~-#muHvj6JypRVUJMJ_YGrUQCiLZBuQXAw|x;qUIfl zxh`=*deSL6CFi6%iac=9NiL@9YUySKt?AIYREFT8eWkv?y+e-vzIVv~Xud_O*Y7_> z1$u~U!)M0GzYp){RovIc0q8|wM?h|XtP(Q_I*3B>liW6CdY!qB{=nm4J#TY=6LyfV zrb$4^0=>e@KumZ#uNI3)h{r?u(6kmkG`I>9X&>rj+GzDu!VgJs}Yaqg&!vTPb+S8L}KL&D~OKF~C75J{o8?Z@*U(PWbBYfA`Y zHtW|vMA7z#v}(T=B44$71_~)!y2kgPT`Xjc)pB_1U;(U4ZR!p?R!-HYvU?n`y zuIXSGDiFOy*w2|DX6A#Sp~5#JB7YRfv`Yciwn6uW0VNw%xHr} z4+g7i0}>Q`YriLC3M6&hqFb!6S}t;b9%>0IWz!PV-eBOX*06i}7{E1P(U&fV0w5Hy znaXWPuTN5yn~YwzX5W|7Vsh?Es2ShX@^jgvn-DLprWQD$m$Nj`o8Qjd$y@uxEy^Rxiq2%)rd9BRVp}M2^=jb{Nc2tjGX`Xvbokn5gzZu-C>Re zAKuqLI22|}YIl>4lApY$lz=XUSi<4arpB0q^&Q800#B?41vPF*afJ5xMi}fUu?=ZXmb<(Ry;OY zPKuy)i<2}A4;Jo8D{$sCqk{FMue<1}lv@g7)=6*_^oJBhV-|1LX+up9uUv)}4_}O# z>QC|HE@5LyTVxkvo-8UZCgx5K|BrMPb>RFOI1_<1Zi7xxs;A_YStcPeP&GhMDR3GL z1V0XZw2+_r)A@RL+{ca{4|5E(BJ6!Qrm5sC$w3G*r&ppRRsfo9eNr%BNzvT z^>0AH4DZH|V#U{ByK*6=*pQ>Dh{X!6A%geBV*YSG=oWeC#OV;KXLbdFK^xTl3_WLQ zItU9Fdb=Avjsq<;PjTYb!xC3DXk-cTmBJ+sL39!Jc zI6n?hIJ3Ep>A;p4C5^0^x_p%uzB@U5BrJr%+#%E$wl=$g??pzrKom!V*sW#IdD_n) ztW79xLxF5-v%?L9H%)X7l)PsyF0a6z2Go=M?m30-=+1X@dkg{&h+u$XuB83RyjnXN z2&J<#BqYUj`eHppUp)xL%q)%{nKBN!q0BOX1&cRR2BC}I;`;$45;hVdR@tJ4fK)E- zX7-Mx@}huhIkm`>C4L5`VfPi?PlKoK6m&%?4kDvK~vU5VD3xY$ZvkHZz}GNhfneU|#%eUacP?4>-NezwlYa zuvpzJic$k*6X>rsQg7zjll+p}kn*H6soe{$i*3H)OHd^G=C%>`@XbUz!$G?W!dNED=X5Y5N9OQ zOT2-gzKSr+ng+RM6qq1hEm;rZnB)+0oI->ans=*){RN7CGF zi)7Klr#|&57W_$KH29-r*~LJob_J)p3XNQ@;xG}+VdJjBB(p%z)p?QJ5~v>4K#7YQ z&R95Foa+9C{4t%hxIfZ;G+bpu$w?cP&|~hNch|Q@nkuLuIqG`-ol)0;fDF;d^vpe6 z!1*a@m#Zh6nI0RNy*%dV{lJO5Vek^ZA_+QgV$|4)7LVi%Eox?AIB>>9 zWNe$tqZ?8tFdUKfH9tG}l5Ro5Hs5qyN?;8vzJ&Icj&@K5%M@eBu7hi~&fV@;XH$28 ze+z;5=# zStTC`c3DTnn139K{ZNl%aG;k?uFA$0?Zaa3BRCY!EZ9BicpsJ?01@r{n9LEkxd>Cmfk=Q1qR!$aeF4Ux{+1xcuqjE^(EpVX@W*H=2_~z zk>UmdahWDB-FXaD0|W;i zuPka6!HC!n7(e@nsu8#0GTrVibLo5)*Y$LkQ|=-gI_B4j>n!OdFjWKrQfUO+EU8-1 z8n}=_C&RYbiG7Z0FQmialP+20JyS>f(Mv_fuq3havzC=ZVRbp;aTi}w@Zpr%#@EQ? zU+GGm6$}^VJWYF40m>XC$>Iwitc)cy^vbwp9SOBpsJ&#Uuoei#HHW+DO^A z<4emRrBeRM{3mo0+MbWaLfY;~Tmkjn)5b`lp2BqO5?`6IaH>oEFeNU!!63Lg0%lr+ z>0H9P+F}s_wjr=ba!w#?=SLP_2~yhEh@vrR;*iOkkkS(@BZx zh||S{dw`Y(cHrK0qT73yq(CBR$C+ypP-b%@$#ha&`MQhnaxN~}#V4Z160_t^5i4H+ z+4S7XC6X?SX->!OjGxJ?zhO(le=gqL5vpmSGv|LHfr8!8;-u>CQd}A2qa7w~`o;9- z!Ya6ib@&^Z35FZEQPAjJ6NK38U6^n4MK01s>4}W+mHbA|5n!6>YFj|f5H^zWFam^{ zPq@D^m3kJdmT)0!w4U5V?g)|=;6W8Ex7`I%mtN2j$EICaAXeU{-B1p!Jv?}*-l9F> zyu4v>j^G*w=`a>SPw%J~N&L-kIokvIvdba}@C3hok`$gEOE3v`gJ0X=bO{_!)$#-R zkDIu=bo9v4(5S<}09rZR8VF|T{N)W@Hd!=8ToAil`&EnoCX!neG_hQESZ9_}B%9e0 zj!VEy=)Os2=uivk-&SUk7^T`9wp{yCXZJoU*H7#q?5u=)GkV&hX0VuW*9G7u6Kv|; zEG0M!T9OlI{#IFOMuZei0%64?%@RwUQS~R#4UB~h_cT4LCP*s0+)UqCT;#;%mRJ3i zyxJiWTkVLAJr+`ROnR}8-U=2`+T#qA31L%oTsmzsr8G{YIgDGug;7kWfcMnf3W5*f z$eUZMU5WdDOUh!;D`%-Eng_*Tk5TqBvI(>R-1D+K^s;h;{(ln(nm^fetMOkqRyVv@ z{|oiGx_?`DymqDLUiHsaU#|M$%Ac<6jO4s;uK3Z4PaXV$1HXGq8vV*KcnlNuwLKg z)}c)r>dbJv=01_8t>YxRqKnb2s63ey;ZAe$RRTK@KYr4*1<}HJ_Xg4&7y{t6cydvJ z3Yn<~cG!=^U=$Kg)GKt??h8;G_CkL!KATsIzLt*h4w@8{Svky}A{Gh-9lRmC$mLkt zzE+aAEkV9bQZ1CCN8IfwZpYH{ne?-)F2@GqS2*m6a4!3w$gAldoo1?`MJ)%q=;H)* zF=~Wj7!EB{(4<{Oeruy(Wjf&2D6ZFj2Z8t!l)@xTs1BJx#HFt!wmsYz-;HYX4LJsO zUT^Zx=hb76tJ{wlEGKW!3F~ z<>Jf;8)%7dRRoyrkMCk$q|nrA8p8WVP+H>l)z_EPb1TFoGmHAhwIH%C0yDHZwahcy z?$72wqsNK+Hx9+R%f-4LXMo2ElSI32x*Rx{dK3&qHHNf!FxZ^SsgPf$yo_$-1R@Ap z=uUM_;=O8D_WLiVf#+4(dedBas0Po#0fXp=lOlDypACpHQkplEOGGLY+=?9f!aXUIR3x9)rK?W1EOZ9<4?%fiX9#Rl83@LEbe327)yQqZ6PM4K&Ug&y8o15D^V=0LguAtqZ$ z-^moZ*3Q)uVGxW6+Bmz=7OTu(wi}%RT#FFQ`A_Aod0)T(+2M}EEyc4ZyMuWi%|QmN7@=HI$D4uch9u|C@RH(Nczo+Y0@>^|+a>2(bOGKL zA&M2&k_X~u$Q;Qzw;u#1Msgw3O%R}f(#V0Yc~pY%$;Cr0E#ZO?=x3<=VGl>ED~d2# z%M{|yDg>lJ&I!*+A&f@uckzT_y0UK>Yo40u?Hds8K2B3>+z7C;!+uNNy85;Gbh8UT z-YA0}mz*uiNz-0Mdl(HyNR; z*oXM|vtnhAPQ+%r<9+_2yld=t{`k?;q0%v?SnLM?lM&_;BKq9GP#jC$-R>Ua)wF5^ z*!tc9`pXk9GIUuiX5aLlP2b!wkXfwHUWgZRkiG5=eSRuG=p^?STMmb$AUU3~{=wdX zuy!Z+2?Q-;K$gMj*Z@&E&H2HQAlq*3ypNroo;kiN&`(-qHibOK&=q+(#}f}Iy$GlI zZT#}WtbpNNEMs+i)leAw86nG0>#lc_@CM+oWbIBWH&kg(Y*Q#qMll4 zUtN9&@kNJV!FH4c`&*W%r%_z8RE9L(dI~{?)nS{A>AQ^qbt^j;@L>n~sRWG0F&3JG zy;>p0Pa1+i)IKk^EXrQx-avC^FS5T^C=B*dfVHO+Wl_!$2<0MOos-C2IK!X zU}Hc@_I68l;(LL}2#gga6PN6}A5U~uSviCA2qSeNOGB0@5W%7JBU6Y4QnUxvo0T5hEAmcz%K)s&L6$2Ev z0YU=ZKxtKhj$IiID@ISSCuHq6h$iL8RuIT0G@FBT9rr8eAIz&qU`xAS4@SORdTT)_ zOYJqQtx!ORtS;82I_4d$Xz~HYVmawm#HWm1%bqI}WS5puTQ+fqR?}Qqe8*gRCW8eI zRM=Ym4f>Q=BFaM|hGY;12gB4n(PG-3vLP{SF&aE>p|TLYhJj+8w$@!H-sUn#*yyIB z5Tp}SjVV}-QUWMTgex7faX}SK+#)0dJQ0-2vK1K2ZX?8IAd>g+gN?n`LT zdx!gbTrILINhs1Jpt7l8gkVsm3_PKOdPagz+0l3~!mA%+b^ZylsmMyx=x z>~T97)JbRgBSc?wW9!Rn+hDKO>?I^5=sUi|C7b6(|9ZZg*~!RJ8)95$96qc)FxgnZ7Mb$7R*$>AybuF(h`p|A5b-FM6a?ZDcayS$m!~^0YT&P zEpL|oU{oEf$N&;&+qrWRBs(RH zZghlhi#h*FUTpY$^EhzMHJT)gk~#u zi4%$F0fP+B&yq#jX~MJNkLJ~m5Zh*~qrJ5}G^_{fkF(|>GN;6VLx}3cv$}nxx>tnT ziC!HaajM_=kl983_m-42rZnn2yoK!%!) z$wU3ncj|e^1w|(z;94Bnm#`lIhMU{8Z}3R68}^lW9;jNb%d1mh>qA$L9zPxGp!O*R z7R0a!ekv?QkF%l@ryNhEoN7Kgjv8m1Q!Lg^uzJ&cNk=#Z)r}32xoxM4=bIW1K@gUO zk^(J)vBQD#AIZn{Q;abD;mz_k%XBP%kgCFL1o{HTCtL!)P?|nWv6%d^K;~1mVhfe7L`yqkymc2$_>H-l?%QF}a~MVPqY%4H<3j(2kIxh?v5%D_lm!ep{ekXGx#&cb_vUQ6Th zs6S-JqMnOHPQ(bL)>Ws-{<1rP%y#seWXIR39wuV0D8RzxSOg|E7BrDgn2>%X88I8Tt>0#z3oW6F|CL`|s-XR$GIH)$Z9 zS+SVvo&2PPb^G(6$ihFbAGSIRMHD=56U}>W^F<*k6(hBF>xKB6AtVInL$y)dlUh&| zV3g$n3;{pIcz#0SCGO9(;{%2sSIQ0w$c#P4u>92ECgODulM(0eQ6;rtHCCV{u~+Gv zjahI%w5U}6=pvHiaXhM=Q)VyY7tsp4Eq@L|8~!ZW7>GoORNZ80Gil1Oa#V(|f{0k2 zCx9S~$&bth0j?#L7pXw+9YrqtWRVTr26VIud zLwB_JhxjQOZz85J+^$_rXQ6*K3SFW#8zRVpLjH$M$tksOsGnMQiELwoNiCoS-mc18U2bP?N&J%)quW74(q3SoQ&QyMLrCVCuk^|4;MwZ9cgC)=HqwKiqmKq_u8e zj9e*Hp@HZObvzbbDq50YhFZQYJDC?0Wx}vRx#$N$x*%REV4VDLCmVazo+XHe8z5|KbXfZOJ5<< zwfp8o*?Wjw!bZHhN~znt#@Q^{yLlnK+Vept0oDGO2Z}Xmh)f3q6xtr)TyloPw1ql| zBbnxdOn1S|lNXGIC%JL~aVxQK1@jIM1I*DFE?}C%s~nLlnr5b7^z!NrK)m6~NXN){ znfA~GAzm8@E5I(99s+kC%q%leu6i>I>8SZftRty?g35+VVRG_EP&bMu;+8M?C9)D7sL@+%IYn^PY@0-*tLhY7cLR#%Wjea-iLMVlNmkg8~Fppg7Hk{zi?Yh}+69 zRo81^Ap{6FMKW+LEvq96_;5ki;LLI>4p`X{*VG0@O%}SkI6q~C)=7v&tS@m9lCzfD zCUC}K4%A-oOPivxz=(nYXGXnd7cH&1%iweY1tRlST|RPtJTI1hq863$BO#Oxn&-gK zz;HN5(tIkz+p^WfE;w^t^fgh1BGa10l}NIhcpDfy3&N8?CE!}B1jSPUp!V{qDE~t` zV7CP?882n<^`(v57*@eIW2nAO-^JG#PT-J%-b5RqlXX1~#{LFK= z9-s(Vbb%i{R~LJ|smv@r0Vc>$ENx9>S5~N-%FX~?%dTvl--eHCi=@0L_Yq|66ev6t zI*)!RuEVnOB{xWd%wmFPv9!?lbW<-R1qH|;uDfcmGn5w4Q#|aT6yE|q0@Lap;FO53 z^~R7Gl#k;f=S8948sl!Xh2zVp66zZW9LlijiQQ0H>8&R1Wj!%iMB|xs?@}y}^TcJb za5S|{Xrf&7`gG#LRwi{3ayg(INUA_o>zyc@B@LW5g`*90dowU)wU&gMAD%X12o`=|2H=)7H9 zK5`@+%mobrW!53swEbpUbVaF9r?~)9hR;ui%9NEoX2=W?3vu zV>~E)_tYH1k+QB-6Q8I=`@`^ag=(3?ci7laEB;iADxJxZFg14I$hh*0HPjSgP< z-Gr(Ew-!^YC!>>Kk$5LxaEJ&s$i1Dzo-m7S8eiCchRhFrlTmYj(7Q73_kzDx{Ltdx zD|~wKW9={EV|}e|P{KcSwEJkd2**9yr%da~?CT{Lj4<)NZOM4S=bMVrbT zbQF9}{>#SAo?UT$qofqi|x+LB{NHu(dclK7=|K6;a{q>c>()&ogAIh{d`Bd->=SpPD-`y zxsJ{dYg|u5Ot(NDb)TPbAxn(QRA-Sc^{7s}h}U$(B@~<+a5UlG3+GMYi^<90tHLW+ zCtp047o$F5gTblE^VzWb)i;dk5w18(gntPf2yJPl0Z}sAIsE8HqgT{SOTl?ulMQ<8 zY+$4E7&+WVEDsjRss7TxAxoU&^1&FRlAlL=p;W*EzPU}p*?myyPp`%w6;p!k8|RH! z;CAVc`KeZMjBCyUPH_Ek4j|g23lL_ILTKVqjOE4H-Vos`27bj@(ceP|M?%=F_sN%rUxH-usptk-vhh_#UE-J-**~z4HSWq@G`{dL!gS2 zxR$z8u$vUOR(+>Mv=K>rEUg3;Sv@^8*6Ux{iI{M?)*cp5)x3mj4uH+2@!P;)B!DY+ zU8zoC53C#y6d9EMP)n;aNsPf_kD?@aVbhQ7crq!Hi|r4!m79+GxHz1EVJ5}iMGzx2 zb1>xMCF=b^EmC1qv=}JtKOTjt7=ev;FModg& zjp4nHQCY+BzC>z??mkT4`a|78=zhs5s4Jn(dstyS(B4?M2U>E(Mt3_tsO}KQSdu=q zy3mc|i;lWfsG7igk|g5N&BGXHft zji*1~+S*=ja%s-6UiSoduq>=yYX3Xy61qR&Bq|&e$fV1G2fEZvk!msbo%?!Oz=GT( zw5EV`^|4j|bNMf7`xE}P!J{GBe9eS@8~tG+s$J91?LG^j=iT)2Kz(yFkLvcE%qMm85+`!}QMz@lAJ6>LhL_adDS7el&U&s1Wkf63Ci#f%IGOp5SLu z&KYP7$lO z7O}-p0J@%=H28q+_C7(KT`Nf`CfhTslh-5TUufZPZf~X&0ObbyAY(9|esVL1kGB&r zD8F}bqS4_)dN4TXvpmrRwFoIff$FAfcTh)zun(5F%mS*sEE`g@0i;3u;qR%^zlA?wVVr4`(sYT`c4Dh2)K~%U3R*zj*1|#iKLPGs)T6 z3uEJ#FI~AfIs@iRe)K94cyL*%8O=Mhtwdh-R@Pt7i_{-W_(rThq^~pwo!*R4e}*WS z5;Kxb(OGx6F$F24-}K51=pUjx^2Zm1Rb8@bR?uIBX`=z!2x{m-tf$(RY9Ks$G-m{%0r!)E-V6Z6{`*DvPd-2zu&brpO_vl zwm6@dM$qy*z`(5K`NXvH|A!8I!-3}drZMXOs~SFE|L5!8t-DzJtu}IY9z`682jT+KaM*zAsC#W*dgC;d zKiGrH2$!~hF&HTRu2n=^LzvtckwY9=P5#Ulm`t2{VXrT#Ak#mx6R>>Lx3?cIXMW&z zLV=Ib`&CJ#E*L2Y3>GLo?!Tp_+k1Z&DUl@Th>jU_V{b6p?A=QPgU{|9(r)(O*v|tW z0)*=XXYo>$*r?{tsw$piW(CW#)rhduLZA@;jSVO8oJsrj4*HjNtjk3Am(CB0@~zxZ z8;Zx^Ba_G~kK$>yElP%&AG;^16H(gqas8?g2iP@1gXboF zc7K%dDL_c%`HGGrWOdliD05S_#8Pr|0Dc@t{C%JtwT;))!9B`OY(!=FDoT$^2H8&E z_5~9P^a`an6K<2T$(L}5A*USW?PC}Ta*8lLr%>~`osa0EoxX-I9)3)~qV|}D@_|94 zr?LPC#qdcfD&2X|7vo@m>E1X?NmA}C&h89>x->v04s>Q~N8K)3Vk@D^f7X;{7x7^$ zdoNyZ41d>|sWeta@ju3i(f!%&1g z$pU+v1na&i5Oz+&A?f0Wg`0;Uo7(_aXb`fX>!uR7l-Ka5#L`XMQbHDXtPx;MP9{w5 zrvfNT?hQ>MmDtX9R&)-LT%<`O}3f$1z@iv@OXp5)~nmZxR9sZ<(0$`;M(Ce%v}9{dmbAM zCwhC{kL{>22BP)JeXm--fS4bw2PCr}StSOQeQbezDos(XwV4&+EN?!tk<(A)4BiA` z!$h6uikdg?-w7u@XQ6~~4%|i|s4pp;OAKr-^=9UY686#4?lU_EaeDJ|H0JGt1|` zN(iDjcIk04wB1O(na%XNRlA6=OfRzQny}JWDrIDCmRCjOi`ueUG>L1B`GDtAtEPRh zNN(Y+GsYqY*Tk7eW=1YYld%7mwPrVWx+!s2kjl5=yi8+2pwha(L>{k&Y0hGDLX|C^dt+xR^JYCoJovx!LT?P7(i??|CNY_{%$3$gJH#Ew8}&|_@{S7l>#~J zW34T%A@@uZ!a)eEoV_lZPG)W!uUK@$nt?nvY5PF*5V1y%azF}tpld3X!|-87#Kg#6 z%`I6)oqh#TyG{@CHTnRI5q3(isnNg;9lSQTrBKbV z&T_z{at0Cu*FTn4T4ZtD*Hf_0PZLk1$qa#VReNED8K+7D&bsyx;s&Bq1gGNtVX|TO zG1vgO=2*_zt5k8R-Mka?rS)AwO_%ZrT?N<3;U*2?$w8vJ(34Ui%*xz%kWmE8l--f%tqGX{OC;vZ)U{~5+hGwB zV|@c-@!_$d{rD7J)VVe?-Vf!DWmhaW+2{{QtL#v{7>$DN{e}IrS(KxNP?Kf9HhJ|?DQ8i zlFE|Z53^?dlu1R$;U&$(X@df%C?0v#HEvx~vGd7Fv8Cfk-T0Dr^ z&182>L={r2@T=@tCy%5*)o~=Gn>**P7b@hQ52?IUJpu<`3orH%R>=w~F?)-}#W{hI z=cDJxyN5V_PA8irN@BjjPvO|5Co>{!BDJRZk|!FW^gG%Im;sYuiYJpTvI1Uci8LDu|euAi$yEE?MbSAA=%BYgFaf-rub_+ z>d!#~r_U$)2Sa=SO}%Fz9!xz*03#~FVn7dwc1*e&J7Q zZOhQGx|2p!IA~;spO6Nmlg!9dc3xr}Uhq@)3 ziVWOJV^9dbEpdE~_zBu$&bm@|iT`*weq7x|dTHMQG6kLsR*&7deqq*L1*RaZEuKBr z@&-uj^oG5D4jmW0#ytUkvk|>8g)qMX8p+pV&y46`gtw4{r^ zaV~fQmroMmKVS)CiZ8I>YCA@-h7|mCz|MkQk+>Y=R$oqYq($mBe*UTMKDeb<;z%Dj zYBB_Ofa{TT@gLez1CW+M|KOoRZRLDz5*Mw3Jn_F`$L`_)oE`jF7 zT+RcG(mhYPEi1JILXs_7=?F`a^iesLB8LZ2vGFHQQJzh3|EZl$?RwI`cIZfZIYW!4 z)dMAUxKu1zNTdx-bTQ0PDG0lfWo~%Tk|=t$U?~UKG`F^b0~_R}*z<*DMxe;1L!sd) zTZ#pJl|m|Um^ZOIi3iN`;M2}9*cJ(v}Rh zARwNFa!_ktIMC%H9yNm>Z<%42tCKa)MkuGKHB4N>JirTDz`37Ky7p0$)b)2Ialma$ZwPLQo` zVH)S$nTDH1xdAkRaD+k|6yPQ51a7C02#eqmo&Udlp!samt4$wkoNoAr`k$ze)g7wc zuKA^!SoI&O`g4^(Sow*_w?}HdzKXw4@!-M51HXM>`GcJGeSYRQ?TFi?CGpwL_RdfV zV&T^hL&NSK@bgOkm~CQpEU-$!IVjU!-)T+f^|SBHeZuL#{ci2n77D@T+Z_CeRO~HjwDM8 z-)7X3kAbm6(pTvT$+isz_0wyKt7*6`r?PiB)Mp?lUe4YHy}Yyrm-f!M_9^*v%i%EC z3d@2>jfG)BO9ZNdR^ToR@NlpLDI*GlIgsvy6s zREz(S9g&oPp{}PqJEX*6h}N`yR$zq{qo@y~`G9Xz|fp0Mj)vPLK!`f-wy zQLV+LLhpzfW->Xs8y}L$D@1b3GUQdiW_M_8ajDuG>+f4>^->*?tWz8V^sxjs8J1OBY1 zCpk4rFeyGX;Lq+PbsA&->7&P=40R1b6@wAE&)vW(D@h_-5{u2q31!BSBI{>ZDjhh- z7<&;6hS{?B`3KRUYv8e&i(`M=1%kvmJ<|d?WvC(4pP*C-{?%@E2m~oSuowy zBkoCdrIZ9%JHaJHH3l1-ObNOUqyMf*a~cd8e!~0N*?8w5@HFOmmCJT6@JM3 zh--y`!%Kw9Eb~{pzd*#=EhKZBipEWf5L!vD!jxrpc2L!|VEwKv9<9Qv6|N^@c%Gui zH44}#0kO`dE~f5ebID9AZ`_q(>^2^t zErCK9e$~$7(r(?k_Wgt$0iwQAz(q-FOd(Qamu75CXDM+_3qiUo`|O8X#l`^J@Q{)H zm5SS1gS>Ew;nJOLUh+S_^J%Brpe|?$wFvs?$1oJ;QkAMU3)_~J2T{)lml>`nVFhcs zLB3p`H74`6x#Xz4i#WQJFki4DqLbhWX_53D|&5f6@tJy zx$8J!yT9Y!hP8(ib&h*Vdla}%`OUp=acvvLD3Ok02xrUQz~4}QfWHGfyo~DT`7H>1 zinH@OcdXY)V)^LNkXD$IN<9##g~57Dw{5q;L%VYNZg&h;rvZy z;X#kXKb;8MrUfdGU&whi4;h~KPqbJ_aQ&=aH zm_O6m(i$3Viw_RRVpi-@ZZAlDOVh$Ms6rx3YoA(JD@dJyDFL!!+&l{Qx*d`yc%#zu z&aR?NSUzDCk|PdC0O2RbLs&~W0E{g8v}c!}U3S>8Da>&BNzq9Y{W+Yq0SWoGE60y^ zhpJu*Ybil;LOxKv$r8F@lk7xQ4gKKeMBf061F)zh##O^NG&Fn;08uoi3OT+h%4&6x z;d}SiSnwUVL++&H<4J4y3QhmYswZ=VVV`T;C4%$4(9m@GaeJC|b}<{=iP3gn82M>}Wd? z>fOfsspk6-79VsXCr)Q{R;dk&jjgH$Wy4F{BQgTmj8@en>sorKXqOp=lYXq6ilC7j zY^2%TG^ZQ(Yn`i^6%mrcCZG@ipJa$``Trj~@HY-L&%poxmBueMd|&-9)?crCzV;_; z&)0l?^=s9SRQ<`SW0g?0&kLe`TkjzyB1-b{ak1 zXO0&YxE8^=B1Y>OT_uoX4829aeKiX{A|bL)%rPUsiTfQit}mCM`l!DC{&<*=R|05p z1x}b%YshXD3I&uKgfXnz5gDcOR}$Omm16w3L~s|Blb^~i-cBuZUFS18syL^@e~|Mw z7>NE(hIHqP2X~BOCh0$YWCmjOy`UA%Gd>jma4rO-ri&66#pZ7LKdpAUqCwC&@Jvli zawIYGfo%iAMR@2un#2;n1S%csOj*&gMeNaJH78=lVwCIC=b#hUWAN*&2fvL2=4xsT z|EMF~--DhYVlf~1%Jf6SJm<}d!V@%5UhR}0-!YCFaMMRmA1Zf&vi7v|tG| z3A;(f>hwbN7YHAKB2=tE2y^7|a15L&i1I}vh{xJcau=7Ep!dh;QSW*(^|0JW|-ZwE}_=XQ*XCYHEDch377q&#B_Ohdz%WhH zDb7N<1Tw)2@E@#Iy34Il)U?i`Dxm~fm^6ppafhcGCGpFPmx*h-%KPe%=Q(Zh#AIp>w2SFAyLD4FLWNs(7rtfi#zYse z^Ff_N39V>Z1UQ~s!3`x>aXY%crT$?SWL{Kh0Gu-{%sT3kD|%{q=Z2}@YoU;m{=QT6 ze1k67auIvf??fRgdQ)bHskcCR1#uxD)(IL^z$Dg7#Z*rZ)`#_P=}#SQ?+m%kd>Cz} zU0UJ3a0FRYrLXU&6AVJ?7^Gm!mB!sdqL9R#ROd%j06cB<2TG5USyU$|oJ?%NWLDWa z8b*_lByfS-cukMrPCxmO=&c@qsAt$wjqD<7Si=IfRUrgKqJ@OPW|VqxMT)l;xGH2n zxF}fg$67)r%|u4YDlo2Up+@6KC65pTcb`ymMx86Kqsk5ju?j3+yNsiP`YPOINpU zQs0u9*RLh5^OEkV)!#!YncgTi^VZ9kp)eDEcq;=&ENHs&SPXPSxj^8d2Gop00%6aF z-*5Np?;1X2l~gSPSs&nVGX*ieK%kKWj~thUMf;7d91q~~1}0S~p`Xj%)U%P!g}(r9 zPTmlR9GpYaz!P}&l8z~yTZ8o8;96yG`*k~N#L^PG{m}o#-n)Rud8YNc!MzTEK4apl$mN*4kAix#^6bMjg zT3Q+kZ9|u~X$x&A6ap=6N-0fCX;Vtu^vL)7-_QGwMw-`~?RB+$y{_*ItRHD+Bt7qQ zxR3w)e;Y-&|W9 zGqR>gd~+}!B2}{SF6PH(hV$U8>b|*LxTCg>W@rXAa4jrrZh0t%OyQRl1xp`j>B}pD zY0QeEpxX^(ZkRaf&57GQ-{x##0!xMm-xyYd5)RlBnG5UXk_sx})-NxY(!+HPQVa1> zaWZzm`A-GGSaeS{HRq8}VEo9?avjB;;X-#kY%VY_SSU!Mc2=;X+4vgJGNq6w$;r;8EbpMB1^OAe=s%lf{?E+*9UR zcWss=3ypbjo;lrG-Z@N)r2@n=(QgnszVtgn4ZGiB&+L9P#8q1jM($W|mfqmWW5-XG zCx-MO9sON*sf;i=IDui*NwtNJ1|pvau@z>v5kNTcOz}Se3Lt!>gE9Neh9@elX1GXm z%2F^TNLL}(!xIH^r6Yd^^xBqc{sb|?NaUi7%h;M>smP))WrzoE-nl4g-jTeDBa{rItf##4GP?@4Q=h60KvAqZ`jL#vfRtJDnX*16)!W2^rl5*rW+2AtUH@ouRAs`oeYaQoN7?^O4?g`TtKHXvoz6RQ;jD zpRD`7+TW`Ec+G3o|E>B=Rkrf?D*GzB{M+8|dD%lha_Gc8>4Wcp|Nqn%8UP3$y|X2G zlM0S@o^CEDsK5a3!dUsJZ1O(2gRGH@!Kz5MNE{MF2EZQ)d1n)wRF{XUg#7f`^Qq*t zAsqGjsO)y6z?B9QE(-?mR*EuW@R#%RlWXZV{s-Rvrfx}haJrdh&gF&)(^uFj{(vbA zKwxbN188ws3m>(a&QdE+f)r&yb!^uTfrau{#(arc|Mj!o%eE zE@fQh`FZH)CvWh=dT{uTk?nNS;`RRK7+Z=d!#m-O=eu0%$XG4rD{Tome&D}txmkKR zeI?d#r2w_@J+?G{VrFb;!s3g0IQAT67By@eZVi*f#>!z#Is)W5dhcEvTSzBoGA;)* zAI>O|`&>%J@55kwh#O#Li(H=a_Z+Jz`W+gk9&bO{8Y8cn1R;)oM|S8OFi2U`RF`jv zCc;(Ux2SU-nhyM(n$Lz+sLTgNF^5^B^`$%rsUZ$$g#pZvnu9D0F+5vH7D<7kgyu!4 z%n?0wW>|)OBD;{~Z!Xg;AdCHvu0uIOv3ey(OPd$(JTIYmG}U?HWb7$`bR7Rr4rDQv z%Ov5wlqbTUr)&c}zDmAvOQ;hS@fSsW87pz;p5fPu?~to;LmxK*={R?%bV4`R!R4-* zwpgIyPV9-)syWo*CWBD{y>lc=dCfov5spY~gb*Y-8=??8o9bp4k>E#1= zLSmbR6LUwfvG%bW_mml^E?~F4z`E6%9_THN9I5(rO%bFH(z$P}@?Dbv-lR zQd;~k@!G;M%r3V?fG`?EV=kBs4bP{TMN`gZ0;Dug^h+2`nJq5dXn5E(1pexHtQr8B zB}7FQv1#&)R1>e5iqE%p_r~7FPD-Nh(ns6OHpy7*3G!*6x*Z-Q;*Ah41ho%Hg1^Kx zDfo##Dfv-|zQOrk2opBZOWcvwJYAx>fI=$TZy!cmawa!2pT4uKM}7f z?StVL=ZaWckcWB!`N)AHKollu0bV{x_GJ0d=d!C4pZn?6g{91cllmS~`?2VFSPw>RxwYFgkE-N~b`h3|(=o zsnFR4MXAAe&+aV?*n5#nn@V4rI{!!lzHH)1_Pjj3$iRf&;K{@60SAc#C62t^gY?_q z_5Hv7T|ag_sW;BTV`MZq1tM>YI>77)l(c7!20jKQ!~OlNa*d`1Ye0h0gm$){3hZ3Sb6 zv>g6Cfp@E{W||UP@{kcUvRVme;7{^8XsqQdK7c}Q`G=tB&!^FYtEZB~odcs?{i?tQ zhSAlnFZxD%hL^jBJG)1_dM{4)U^U#(4z~vx$Z%tV5FFQzj=>J&Y+>DT()L836(}^j zOJ`55EX7X^*D$^ua>+nYq3nV)-PLZvo&^*Z%?vpc8876ib|DH#*h6BT^@TuZYM$iw zQJ7|RMu1gFGtC<)WV83F%=~;Xct_1;bVg4eZzP6Mu53C85;#GrJ9sPv2 z<6EL?L2Zp~nv|ku=R#u}WeJ2G9Yxk*o~urCB#}>Uh({t(M_D;;g9{2=Y-Z8cIC!i_{C}F=Y}H z{6v1Uun8DGonOpOVm9rJ^ zR5bV}y{|mbBYiCf9t=OE4IbJf&{I6^2zI0_sO5$M>=3&f!w~^bY$7Sal~#o zoJrn=y+ZX@#MbJ_u%Yz2#6%cQO@ojtCUG$tRDp~z!RIkztJF;b{W8eIDBA8PN-2|Z zj>w_AINRZ10Zd6Q45h_rNs3(h0<#V=tMhCu1Te>`?+4NXCM4dL zOa_e_sU4@ir9DkWYEkGhD?A5=8efAnW+nNB?pp$3h(q@^zA9N_)4uM7plZ9?{KDs( z_%C*gxte$J!@~Y$C@u;t*i00j?XEM%9PZKLK9a|X+xdA##UZiHz&Ju94jvs5!A*7j zM1s@XRa)iV;KcDGWo0t9%6)@f5YfaGJe0VoWcZ<=*>&%XJJE&8P|5H_r--ovrgiHr zk4Di$1qp?}m>{l1-NSHJE;bR(^br4KrjBB@I)NL1C;aa@yt0H~aVl_Ch0z#3p2Sg}l3KTXxHHbVmK}Hlk zV_|wL8r3kQF_sB!;yEE9bYuayDm=f*tS}$KuSN{e5!rFml!@Nd3v)2igB7jXX$yK#=Iz8g#Mp! z68_CuN;7Bp1z@W9vnh)PX3hyOY}w_Ye%sRnz(CeW@6x#2+(-3Nr^|4ugf3siCkT<{ zQsK^bN>jLdQ!54~8%4ETV9oq$)&Z6AXm~uLTp~$;fQ(!mbrVSdc{D0rHJ|6KfLkwD zZXaSsfIxERyC2(+&~i)K3mP{JfR-r{uAE@!Y%7h=!zZDITa+eAwyun<6T7O6w`5RN+lR{BmGs zNY&-mwe+KDap5_1F6dB}76QvXjK6WL~i{+z(A+JNEgLz!vhaF3& z?QL43Bd@wM&?pzl$@Pit;RA0}=XlpHM3rV5w5R zi!t=x)TU%9t45R*e(!n!#!mcuB+uO>RQQY!&c6W4z;NmZA zcEy5$=oI3P7CXn9!LHMeLL*9?o>vbV)f}7c-*PcR0_!7J>0^fOLjWw`4Q?QxNH;@` z$P3g3qKOJW1ZG+fKHBcHmcm# zB@ek|@HuiD>c`Bb22mr&TT|oyFWD|w*ST}KTbVqK<}w27>7uD<+ZZemM#^i5@C>_W z9wP}x1>U@>Tq4=?l`Z`(DkiwQ!P9rFNlofyl0`>i^62ChP*+`F7;@6Zfu_mEE$R>D z&+G%=%&}IMxHE~RXL4s3+Q(0^N4||_B9WNONk2oG!-2!4kD_4!OPZpf?r{cO=oz23JFes*wsWr-=!3_ zBG;9*@V^s^<~?CBQhHVLn13NbG3XJ9U~QYAsd?tO{$^>3COgfWHbIW-&Rt zC&sxif_X_%mwBR`xL|P$vml#_?aD&^W?J)-vC1PS*55Ie?Eh~v$;+z_X zh*L~p7l3Z*LMN$-*%-zQok$ZIprR-9!X4{D(>8q)nE5_y#XUkVUCc|A&OZBJid!+CDLMWSHLvXxGrB5G0tXQ{(s|v&mO4%H}wODpRU`i{hium z%{SK6R-dREsr>4S->3KAE8b5Y`j=Gy|HM59;Qs&YA7201Pj=*!wX%CeWt5NHYC@CB^=L4nA3PKeS03| zDsCFe(xEoGNCz4u{Ml_$Uo@Qv9y@kAwg2py5~IimOU4C*OIQhQ*Q_UqTDgNZ8DGv7 z2&Mw6v*aCVDPX9abILV@N+=_dOmap)ia`CfPy#6-ZY}}G%fpYp{bg>A52B6tBf{K+P(aY(s)ucjO*oB? zBbi|&AV$DcWD|tvF6zGug%8#Mt1p$M=S#zYvJR}3@VY@$^uEX#M#V9My3qH-;zP-j zv<|<=i{3E(<=zesZ6C8_K!NJbSgU4WP&5i|(TmA|(u)EZ0AH3hh!RLzY51m5h+!5E zhYT?ZznhxYF?V$6?d=q!69$MW-WpOET-1@npro<&??PGB_$A zw%h7gL9+Qpv`9njl>2*oJ3q2)_v|ff5+fbuR?$$FO*0CY+`1z>B|%)kGgqrNyGO>( zl(;fBwpaJ)N;>OnH&rwW*ddcAc&uER`(Y3!)7Tr?$Vut$b(y>E_te zIw1Eh9*`5i@=jztk$Xa#e27fqI_j}VYgQuM3Ghg)qtZ2d(pk6|?r=|wP7(`DreJOZ z4lee_*y*Ixm(dxS8#ge`vfOKmCzlG~DMpEHfegrJcxri_A{Inq=Yj{f)j|Vr@jCiG zexrH^`#VBNV423({*|<2Jbt?1>N^i@_Xx(YCs2 zG@Y0`b+W8>*WKHm?tut!yhmu$h!93^Hw}fFfXleE5bBo*te3n1g%lmO6Htb&Eu~YK z3REpyNhcN7_z!q(IduVB#S^(|b!fy~tn0>fp%YMU?A7e<>+g#TF2$KK?mWjy4F`y3 z4M_ta6F7B6%Y}y3tg={JSVO`YiLqkk6 zyHU&9{&cSO_)6>pU}F!4m$K~0ns}Cl9dS7Uv=HYk7e)pbkR-}^(yPhq1RZn7_k8Ni znKNn}fTx5h3geEPWXUA1+b_M}qln>&np^Jlg$C^L_xBJ2sty)qeh%Y}t+|66?ZEyFfHyJyCdSl!7oI zqQ{ITPJ67Y{OPS zaMip;d&yEQxPsq=`htJe_Wjz$W6#6fzrWzoJtg)`UnqEXt6a0A$;L9qO0d3GWUH)M8rTtaHs+I&hOoGznCL_XS5&+r(~ctKXj+s5 zB0D4HP3A2)zI`9!8bJMHjrW%k6uCL~V+`D-YZc{ptcG@(bjbWr~;~83^Cz>Cc`Ku836y5aJhh!aWhAPW1T7#if|McA=aR{ zG)@l$4}8ImQnwCP?ed97Pwx+qxCv1z;~I{}fmGeRLc$!h?mWt>2w5cbBP)~Tu?~A& zD4EN$esv3|L_k#&OKR-sS&=#}`r)!DoFAQT6qFn@{x44oF_GDQnDt>(tTL-xFG4k^UYg zBZ}&^V^?By5XV-NfJd0ZeAZ$p2IF4JQ_zH^%|eENm*`FMUW$v1l3k%?o2t*VE?yF} zZi~31sr%C>+K=w%L$PVGP(`z1-%_cBBD80Vo-jI{xC5FRh(K#`>kx)* zx<*OYsSqC-tP?SP%p=acTmi1nP<9>KA?R)C=Y$Dmm8{&pAhjK`c#Iuwj+1G$5<-=K zfx&QdZ=E#(xx?oXZ%XA7fx>ic<%xI(sVXPrC_t9L2nCIPqZ#TP5t>&h`Iw!XBtr@; z9_mwNhDonN@h>W9=n5ZQ727Q7_+GZqm-Oh!C95pA#}wKTAJ#_%N~ z(soT5F||adYjH#-mk^88g{Xg<@`N&^%n;=la=rzpo`;$Cg%*qYG|h0yS=UR8{2W|32wKMsptm~* zDBrUbBDwmG7%rkX+bW9X-Ll+t!n#IRH{y2K;3{U2vQ94>*UW$iHh<^;~={kVR7$xK)-~ z!!IOg#ROHaK}>`zsVda8MMvagib;ZVeTh&yWkT|7Mo82Ws(OkDbc$cdvAu7*U1H+u z^YKz%Q|cIq(CPb5?cD-9k>HQ2W-&qu=C_Pu+8|kvCoZoL(1i&iP3um&d9hGhpiW9= zp*HL2><+58)k%XY$y#U+V&putqI*dcZYsA_sfk+8-BOnWiKn9VZlzL*G2IrNKn#7w zqecE0Iw#gt(v|OG$z#FGo)5h3Hdd&y{rMwDj>ULK%!Njljx{54xx{!t_J1K$8UiH) z$U>+9VmRz)w_A?HDiDQUr8w$b26m_?x#k&Q01LP9Jx4cl&oN;6J*-7J5kSsR)?>k) zp3XktmocGlNew5=km6zIyC|IL2pZkHp&!H{Vr5AFz(tYUT*EY7NcZ(5pFmnZLGj{x zmKeocjvOsWni1d$IF%USLViszrYS`q#tpuqU|7(&eOjmM=!>lR>`Ft5^Vy--!ex zhQl+4N2a1K2WCZ5OL;8lmf{pMf96g&#RUm<i3DFxQHCWyCp>vhxEEbMvqgEmPln`|5R$Y80-(REiQzTLTI9s2!P2m#SR4> zU78992rh^tLV}1QjlHt#2IM-2Arv%ktKkN;?8n;glAajs2W4Yk=RQqZyqqb~ETUa@ zbtxd!4Yk?fh^x?sE5O@jO>&ZFIo-s01XDgwN+*+c|B~4uyq{Z5!P&i>zPkOOL|OBb zcZ+djJ5$%8LtoTCqfrQ2K}q6fg1HYHg(`qOW1fZotv9%|t!@{9!^ch@Z;d}!y@Ord zaTjW@@uO33Hrxp!dXt_gQbw4aXKLSP zSU~|0yvB1RD7SKni>sKz*){T)*U3J?GO>ktftZghowc{<4{A>~mlbazb2*W{sG@kx z3^u+c>QRSbv|1*QP>`}a7w}x|kZJZHDAXDh=%?#NqDTj+jeG`n8gPPbI6?g9zJ@&{ zd{NOR_oYmY;7hixxkY~fS#wkT_31%v#&rsIQ{}>FGFzEh#6PGv-5x|3Mg#qw!nG#^ zs;6nWm;ro5ttCX-D(N!t0jH9anFLS6d-P@ASiH)@FDAw*Ilxb9k=#j9P!x|39PI9a zz&19>SaL#4qgoiCh~`E+a8QIln}=p^R>HKUq}sB@ol$S z8{5ZqCE6#BA8CxS+Sy@Z&W>2`Fh3gRGjg@mHvPC zA6mHQ@88pK@Wz4P;NzeFzu>_3q#owzi!ps6%--d8clBAoyr^tBozZ=A#%o^LW=TI? zZe$^+G|Z5P`gR3*qW(QMX!dFF3UHSQr)i7=s~1uajy*rCzx%WI1mdVN^B`+%2=bfMuJxbQK9jYAPF? z+%~$6=3u(<{`+Dw*Mnzz2RU@%sVmAnJ7oNBLd|AcKe?$@pq@Fqmga)wm(?7{;!Cq6 zGRz;A(6UgJV7)A!-D)7v8$h6SB4w;EC5nH+a04`ro4jS&$lxos$DR1R??iiBOs<28 z0_g7g2o`ECuya>TfJWxG#2bQ2$$hc_I zleAvVw{3+WNJ}w9Ry?eXJ;6iU>VDCbDjaV<9b<)+eWo1CAu%?rji5P?bahJ*z`ev804Sb;Hj23k)yor?9v zdx?^ML0#yh8(kVNB|ZwriCfeG^RvxCnlEJmZ*@(l5&Gk}B(3l+5m(SI5KzHRO>ww4 z*QfDwXUKcth%e7A0z8#(aXw2oFJOe3pnF>_H)xi5|M8Qj;~#_kbQDr3I&UFqg52FT zbiE;+RXiw+3q{bV876|T!n4C>#K08%KD)Z9QZRu|NtLYRq*-Yhqs%_`*+wZ%0?7~+ z=$sXDf;chdItrW>c@l!AZS~)1N{zLhI1v-0=A`tf;^+&~Pto!_fqDie_a(DwlJ;eL zJ3&0+$ILbS{wcO5{BjxtA^dXOA&Q7Z5nQr<9I3#E{W`|FVs_mS?!;Nfdrongu)oQ{ z3mM?Uqk-9lpNj5ZUm_tLUAd(DHj$#teRC!J=7KS#hTjP48h%Ogg8j+|k8i7A2f?Km zXvh}hIy398-rgu&Ta=AX2`revB-qi;|1g}CDgp&UI+0RKV?arZ`NWA~Gh0YCV3MCyNrIGP}bz^esuCU>MlrnT*Qb`N%Ng8z|p#DihZ?SKH3<(8Gvjj_Q!4 zSTZ<$wDCl&ChLJl(q(4%IdQuQDt82mV%98_&#`bgomg|UNyZ&fajJ?Iy8(Uz3glXxDCOg030;kKayJjeWacnBxX+^ZH_ZT zNwyFd+(XS;!VkA6ojpQtEJ7(fK=v|)n~{Bc_=k>s#WHddK1BK zfY9ZVJ(6looK6h2rdo&G$QP}tA-$LyqDVvSGK9f9aiTTGU}mQM{rGvYa`N*l`f2ip zcyEeVM`C9;IT^kgV(oZ18WRWxxoXi)@S;mU?#{)L@>w|EzrIrHMh>P`bf=ZG$s^1i#5)HFLaN$vJnVg>|dbunHm|YFx zN(YkAOfKZbcs`rQ30%mZU*23=A^=AGTdg;+4DO>iCe|8<^O^^Wbo+N>CQj2DOx?+n1}S z$Vti*)S19`$zIG9R?_QWS1?oQ7Nh2A*fQ_2|#%d{lGKv;}2iVV^aSt^1hbYP0qJpJ65{mkMz zSs_Sgfhy457TY9Gbt(Z_z91&nN~$7wdV5YQn0hh!XzH;tDcso$y><^gdok&lJ^D@*!qIgQ@_r7sOA!hkGdU@=w zKTz^c@h2cVnB@VRQcpLXj8}dAgx>qQV$G&KkGOkCDSv~`5|2g#RZk7J1{t)HOLQkw zZCE5gJa;Rkjoj7Z4Z;1}X}8#Svw!-DG7QGWiTBJzi>3zOc`{CE~-is z$mEeP$p<9&@z+qfkl_>(UETI?hyLyCw|{$Kx_H)Uq@~lx%4mB`miPC-%lDCHP4TFn znW2~2ILy~)&s?IXnKMsxT6Z-T`A}*%K(!FXZ3UT}DPk8KVYwc`91nq2(sOg0qK%T~ z7Bt8L`N>NH2@#cm=AS&|MvACJ8}CvEu$0}nlAA|9RBx-P36AjT`^t+6-IH|_{@!0e zQ%t>x5hCg$v6~qZ5Qq8kuR@V5vL@@IBC;xxTYD;Ol2G!h-f(@}I+q*`Ryt27@oM%^ zJB5?!=#NtVVVsyXb*?E_KM}RbjKUnHwj<^SGLn13pAS7k9XG(rhlI0aK60wZ($7M4Zym=?trmxIu_goiQUM z;7qEmldDyw+q=HCD&(l1ig2}FgJ_MYHLL7Ck-j~bc3)ySSvQbW@MJvlgCzmC))Cif zZjTh$l}Dw=U@uTq5tE%PL+2j+f zH=WqhBvaBVW)B9opVFdEzi_IxwOrYqAKxX5T^4u)?^d<*8IJ$k^ ziMZOvqesfkGMhZT;p4sMJo@3Jpbq6E zme(l>V8xfyU<1?uq^UbikTIsRh@~CqqAE64Nkx&RF!5@HT+mUFSmlqm==M@_hS{R{ zQVXy}LZXwnYiheOP9TR|B8V=)YKmPL;TvxlcrYb;HB79ltQ-U>jpR1tw;d9s0W)Vp znKeUb7}7pOA$+u0DzfBR5JeF4o7R8_`T~+U%G=k0a{t(V9BK{x$DV`WWW?;zj_U5nKEh6}T^HatxW z2s-TFOPL!Y(v#f|dSp#iuR^=GOe@>P7ZP>0k5fovTpgOh^%EnUIilTH$F?tE@x@$5XeAu)n$mk;jQR{M^o)Lhg3aan5)T`vHGj|{wz z>4?)QK4S8*()-As=U6c*`OgHzl2e-_ zFqN8jJ^RL!;-aV0!JIp106o8nWxz6y!Gg&_(|+ey_`6bBtLe2gfmcqQUIzFtkoobJ z)EZ1r%Y`+>|Ha&vBsbQ$ZV*w1sOyAL@7N^+lckWri`$n>*W{X74z+^#c+z(ADjhoGQ@>q< zJp;Y5OIRY@*h#x1Vb(`hhC#e;C|Y6(cDSf9ZD0))bq6y$Crl1}hTxwW$tUAE(F9`NNL3S+0X3mgx4;C@OHyn4R1EQ(eQf1 zYYne9ywY%|;iZOK4QmaH4bL`QYnW;nZFsz4prNDTp@u}m0}b~!R5cu^|FHgp`uFSK ztADrto%*-y->QGJ{*C(A>tCyXwf>d*JM}Ns->P4$U#x$&{#yN1{b>E;^#k=C^$*o2 z>K~}Tx4x?Wz~K)Me{lHy!|xq__wYN1-#+}-;WrPzarpJauN{7sn8cmKFCD&hcw*b??-6)IL<3sC}UJ z-rB0#12rGkd{Fa#&3iTP*1S{mcFkL$8{VjSz2>!=S8HCWxl{8}&8?cXn#G!DYp&Hy z)r{6WUNcbBQS(quqUM2`duys{4pe_w{XzBn)$dimTm4S;+tqJXzghi8_3PEIRli#O zO7)%Um#S}7uT?KrKU;mRda8P~`tj<4>W=D%suR@@RNq@&Rehl9!>SLe-miME>fNe$ zs@|@8tLn|FH>zH*dadf!s#mJ+RJ~Mnt7@%kvFh2XYgJQKqg9Vr4ODehJyeybdZ6mw zs;a63l^<4qQ2Bo4dzJ52zEk;jL6@4z`xh8@(*|)dLMZ2 zd+&Mg*1cW#R^6L*Z`8eB_gdYnb+6Rjse7sJR^3|NV%@WK*XpL~M(ZB08>s83d#El^ z_dwmfbyal-YCo*~p!WUR_iEp*eW&*A+P7-otbL>Q_1f2JU#)$m_D=0fwYO^5Y8Pvt zt-V$|RXbYyc4W_s~0s-aho!p*Ih`ap?6!uN`{z&?|@T9D3={twU>v z77smp=-Q#FL!*ZtFGjcy9DH^6>;M0&|65j|^3Xl^_+RCJm5nd>FWC4Q|1&mz+W)kT zxBc5T7W{&ZxBOc+Zuwg_-t=$Uxan`&xZ!WunD_HGuKVjYKJPzo3YjTt{<jKWXDd|Duf({)CO={Y`j6W9i2sOG0vhhE9 z|Ix-j^#0Js|KR-x8~?!j0~`On_wQ}|!27_)f9L%>8~?5MZ*Ba2@Aqx|H{QRo@%Oyn zv+-Yh|JufX<^3xg-}m0P@n3rX(#GHQe%Ho-;r$C6f5-bB8~?fY&u#o|@3(FIXWl=v z@jdT78~>^IPi_1s-aoPNx4hr7@gIBt*v5b4{UaNH)B8;uf5ZC?8{hTbwei=zU$^ns zykE2NAA0}L#$WY*)y7}(e#ORr;Qa#|f7$zG8{hHXvGMPFf8WNx=lwk!f64nL8-LOJ zMH~OF_jhglJKo>1@o#&7+s3!Ow{84e-rutEZ+d^z#=qhH4I6*K`vn_6=Y7t`zwZ5Y z8-L#Wc^lvI-m>wpd4J8uzv}%}8~=*;S8V(_@8@j%S?_0U{L9{7w()1YpRw^x?@b&3 zlJ}Qv{Aur}ZTySgU$pTrcz?mhpYnc6qyOjpKWF0`{u?&_S^v-4_>=xm+V~UxPuTcp z{6AykkNZDvbUHvW+RLpJ_t|4-ZagZ>ZN_yhhA z*!cba_uKfI|C){8=YOA#-|K&`jepAjQ#O9q|E!JQCa*ZW^@e>EaN80{)KjPW`ct7mf{&+v++5UKc+Oz%fe$cc1@qWOw{qervv;Dye zwf*tF&$IpUzSpz;@&1%&`{RAqv;FbD$Fu$MzT30?@xIHm{lSK{{qerjv;FbD!?XSI zzTLC^@&2S|`{Vry&-TarHqZ9Q`&Q5P2MgHt$NLt~_Q(5X&-TarCeQZA`$o_9$NL7) z_Q%`tY=69M&-MrV+4jf#de8R9`#R6|$NO5(_Q(4g&-TarYR~q^d)c%7@dD5G2kYDR z$9vIp`}0-aSK0o&;JskuXS~nY_-XIcHs1Db+gR`lHs11X*|_Cx*?7~tY2&81Y2${s zVPoFQ+qmwn+xWcqyp3z#nvFRxXXC23YU7HxV&k&6Y~zx*WaD$*b2etZtc{D_qKymQ zf{i!48#ZRVjE(c&yp40-oQ<>Itc__eZR4}vvo=2CJ!9jiyieKqwD+`)pY%Ry<0rgN z*!Yz9l#SQD>o#8VuGx6iyK3VV?~09=y~{Svcr!Lmd($>v@-Erx*+MNVnx@~-;?ZJIV+hY)X zq`Nx@=?&GVnZ@UKHVSK&wVKaSkC#uhjuP;+KILQ|T3yO&x8LD)&~j0c4sk_;^Yeq( zNf|)WLKJ95b&*ibLl?U~wYdd;g3Kl$O=VdVJzdEe z@N|Ge3KR6`1bdk-z`0As(i~X3)!eF>h82~hSer__r?zif5b|nl6@Wb?Jx#(*2oqk# zEaz@!6RuxnEiM$+7Yet5s;)D#>%*?GJ?TcY{*avj2a z=Po9NrJ1m_5OZ5Mx}A(#$ZXJU53nK#z;$Jmgil$>v63_iT&KSCs#;^J%mHpP6$cFE zW`W-VK3G?$$4jF3I4_Qrku(WF(6eaK5S+~B53D|aErLeLv zAVKufS_Va9Z9Th#gU4HANV7FdRjtJVQ=){}8odEsDqvT(5&NGi7Gqpc|BQ304-tKV zr4aHIF%Vj|?&1@GXt;q?UsFXpF*gj{N8DnUXeE}((>$IIjcit4Lh$OgdVV&hUaoFx zj7cwQw%yd>#9@B+iszPT%Q7n~5%p|MbhjALM6XQ?lP4)k9%vV$t9M-1#bvMA1mQGw z5OM$-5kX=ZhHpb)3!^G9#H4^KDqAI~MtxUu(vlC#$*5#%mC9uj4{4ZR@;cEJ*OLD$ zFK*PMbwQ;SCKvYA61e%0PJs$Re;TyErSk>(uqwAS6BoJuy6Ax<{#?1%N&zf^2wB(; zxIM3IE;I8dHo+JJfI=6po3MMP?R0y2#?58~=*tq(MHyl8C`=>3X3ae=0zmiV7S%fl zNXG*A=i$T%c&>4lkRo2Pw5<4Wsz@6pIMTz3i`UhK!9F~54Is_)ItIN#ZExG)L|L{& zGwbXg=!`qGVXk90yIi7VBsbA7%d=pbx!;zqr?*GgjN5Q8=a$n8Vw&URiu@(T?mJjU zNLy1#Osdbs!eUn^T3upq6F{VOrkMvQcrnK%nCAicVl=Z1S4AGGL3M?tpo$jHFAr_6 z*#Qq0u3wmYGWN+Ru-(WF|&CDc5F%ur$H%jnu|YS zIGM7)XC;!V<)v%zQgCoPC&}A>`RI|R@&YZ6N5>$wM0anDv1_e4HCNJCm*P>-`^oXo z{WQ7#<@4#;%(C#Wnf0^ze17A>v^rGI0y|g@Hn!EyRBc#OkB$w;Z6(wYeVrli;aOcy zOB$I!0G4`vigZf zLZlN=-n7-TQ9whZ19BW0ZQV=(&#u2ixKj^;-P_ zKtW+DGK38%UBB-c$xoV&)8rUk}SEVIlZn4&g%ZVv>zFcX{0F1}<(w|5D5i)jX0IUL%eDYh497?y0yw8(7!lV3^pC7B{lKK5 zupA(xUJy&+ZE+KU@PPvbZm!idC!G{M{6xXXwpx{Pt{-bYdaRr(S@R*+9JQ_feCJw1 zm<;w>v50|gJnK2U5dp9tVqtqv?J~*Q+yS)>s6ylK#n+vTGk#=U-94q zoyYMEh7%2yDI241e2qG2LtrD$L#Z(&dU8N#+^EU?9PkvuYV|hAR=#BIz#A}Mhl$XU zHrakj9wE-_)Iq>pW;rEGD1ZGE6dVOO(XA`L~#@Cb>?=`j`>WTuHCD#qldL|nNDk$e(o zP<*YbVMNuJ?Fu51f%W6xzoTFuQB9vIeURXf6^Pun;rxk7BVPM>$ z1{HVQu!h4BXNdsN4lMFo3K@SQ>dylOuvKHJG6^pO04sf8H`gzgleeunh_mtM^5mCE6*vy^14%7~+5S6J$-|0;)hNPIvz~-WhgYppa z5vxIO8xY=pCZYpVFLY)J)ersVy9Q2nc5_iq_MZ&ucSM@Y+Z0(#z~#*06>Ept&lTJo9;ne+};2v7W4VV}#Xd zfnBB}&iN{FD~pt{T21Fnwm@2`LLu<;l!(A4B>o(FZBy{S2wEL;F!HrT6-bLDqY6Z4 zb#?_EJ8F;G)EmsjmR4v|)NMy3`1^#PO{*Axj2O)1;FeSh!7Buv5xyuhguRV;b*ten zbKS5Le`^eesU=!)+$Un_!e-XwaF zN$=YlBBV0^Me#(Js0J5M^rta9XMi~IXi+2sZLEg6M|=I%<9+{2lXpk_%JFRWLq~;d4cRa0PQ;sNqY?vQ}{Xir9{9U09&f{he`SRPpkubUUFGDsHEyjf5QFUaBTnK2@Rx?;e~yo2_^89wL!R09>ucEV440O8k$P&+Qgcob@!27h7q<#-$?U`LJRKl1qygY!$}%M@bAQAdI>E} z#)9z11{t&kZXZMh^Fiy5I)@S#s_Z^-vYg>ZhXJmf&an7#k1%DaztkL#!gv zc7+)7T&YO2o;6?f2f+X%=EZlgIyu8+T_G6it7PL-eT}Wlm(x_OV^i&Za*AI?a!HLu z8@q$E_wiq>`sy6$>5Z!#)7_T7Rf8$bavXLvt0PhFjUEF0P3tgg76;EnD4F~LR)P8v z&tWI>q*gDnw?rcG5ZpC`r;-UN8)9c2!LjYH(sHJP-n(TYyE+E@`r{=~$=%vD4%GCT zl}013LSkv$DQdaYfX6vE*56D#zphk-qoSit zuN3h_Dd&4Zlpy3-A$_3`j%~ufuy?!L&PHFPqA!M`FGhl!I}gca@BGB&r=OlIe~NDC zar=5YjmEU-50Q;@G}25MLBQ8$w`^%1Ry8^?HZrEz2&aHxNz%+tgaOHBnz$*VO;BpV zazSH?bKk&$+Wk!Uf)3yAr=lOs6M7~~OnfQ&!MlA9whcLcrGFD4x%+cL?~dqev82b2 z9*eO`yLfc!!tYW6Rbt>H*f4!q2#7~W3$hZIdV&JU==!ap~;%)l`Lc7tma$UN4S?0EzlWkY!uqUVTjOh zoBlyh;SipqUp8mp369_zL0lpR>3M6cI)qY6ucG1-D9RIBh%PB#-`gA9HhR#+?v*d zcH-WJA|kwAuuxny5|*ooTAB?h48+u3&EzzDVJ$GRBKloLwmep=6id^t-10$0N!C~C z>A5_;3FldXj#C*+Cro7L&AknVc8oZ;EjZFP*dDt91B3mPT9$-zN@m3+Cq*q%4#hI; z40EExR-?GGB$!!RoIvZ8o=#jR1_c+qHHA$)bnW`}Q%d&dW>FT?1rZXiWG=w#lOd?c z)h~G!D~%pdB`=J~gNuG9*w|@tD(`x-Kc)hd)rEGg>kA44n&c9NZrgbFMn;rj6o@LO zq{O`v_%~oAppcVrx_HLcvPvPC`s4i;GQOm7AVdmnI09xHFjq&P!axPgRs8LbkWQn; zqm~G5KbI+aLm&Wx0-Vi~7e_L4>B5W<5MmR6aJFIRxUA^jt&{hiEVoAV*a+;t&~Pfs zY?zgzzKh|_SWjG7&oT79TVQjVRPW5V*?~Ri9@?xsN(J;6g|b z<%J(uyF|O}+&Uz4oX(*Pk4w-tII*J+x{bvAs6a3Gc{I0fG_^%>%CDd#Ww@=ot@4)1 zgk?!WbL=IV0rNv+(Hfnbe#r=rcy8E)F2T0Ac{* zHodU(Wm3c4pEwpr1)@m`?h!{(;@n3rrCGtyJuh>udH z#*TGGOP+Q&_=+YE8%-#wYGL23^HUW=OSG26(4Zi6@6cg!19}*qnO|uua)H`e)aNX# z^F&VDNXDBQb7&y!W8?B<5kkQi?Htu{X?~%p=}0+!kT$Dtu%jymic{hmBM&0PQb;u& z&C7+U5arnTY4v|h&!=5oKH7hEFDZa-N4V9&%#OO|0>`R_b)-BoqiOZ9Z*eWON)&r2 z20+sR>g3=UXiAffn9(Azo0UeBr2^wfYZF8QnXOfF|L_{%!QH^a;`~PzfTal3BFMz{ z@JK>2XpVw8ImO?64JIK-zs}A>C^v(3ljE@$iKwerE?oajgUvB*xb$2iU5mpP?RhRP zscb(Ug@;p80L&vMzKn|btdj1V%LL9i94#ZzdMD1_dPL|%Vqj_jc$3`FJk}P(5eoOE z==DBt4dYdaZ+Wa0w(IOIGCeDq^K=9Xs&*cbqDXDVX5%#LPW60`J>x?;W(b)cDnR$h z8Wb9|1gw&BX8KzuaiU1Irfu3o@oweph}93$Z3qe;@^_d*N8A!N$NJDr1{M=goiQQc zk|i8-&3DxR(Jnqo2co(P;O;hqHV0%u?$-8-n0my`I-^3J*t1YfLq z^#%=Xr($RjG%tW-&J?=4&;!;@gzfx#R@4F}0K)T;~&`1H$j-Gz|qOcN&>LUg&*L4wq+5H2*%b z2mgy+Xv>V7l{m;{6cj-X4sXQ6EGh)R)xVxz$;u*<7PO0s(Fzav2CSq@5Sm#B`uaL-@AXYk;+ z@!|i={|g@3F>cuI;N*$ceW-&nKBH6Zq0phw-AfT+c00^WJK~AZG zl1p~#gVQp9!Bca7INdNvoLkqm1Z+dE0k?gO%DBHaXdL%F^ua*C!vjJO<4Zk0Im z+=e@U&d0RKuCrp2F2w*KkX+GBI%|*uaXY~;CTku_-3mXfy5@=nMC`1hTa2vtX1ugD>Q%beM|}cukbS>>sCy9Fz&3s?E&I zCfwMYj!SQPa~>*M>~-bk)^i9AH6(3JrBAk>iiv2jirmFmjAV%#S9&B=kj9%PGQkiL zDS@UUDTk_14kSI7AX-VjhC7X-SDg$jq~O-)oj)!}CryL^&RdKc3pH~i7~D~l(#Ces zbEl5Rcr!gzM|E_&j856%8v!nuSy{~8fZkCu7Ob-VuDKwiq+v&CS;sVHL8!|LBBPpB zK@s%aO06P#k$XCqy88-`Vx1%f{buI)Gjn-kVOj*!%jXv|7cvEG*ERdjlK(GP@APW& zSAz?~pJ*Xfn(Js_l zv)@Sc(-0cG+Oi?k6PGqu)ii@6jRAv8Og|MOWV}EX1Wig%avL;<2W1$(g#(&MB`)DL zgHDv;i};(%42#=bV&ptff*~`0X1Mv6r&FX>)hm@K?UAFWVz|Gx7=7@s#~U~$o?7UI zTB%V4>bJnTT3?~2EVM`I3YQkRzr}B1HV$nz%2UqZmMybc1gwzBByzBTX&$mfRn3Bm z$5zQut05|9uJTy(UCtcMAG$0}RCea>B3_8&Q{4lNlASc;8I~Z)EG#fp=AGA~i(F2u zfu|bcT?h zF3vDR)HJ)4yP01qa8l?S*p-;XE3v2;2~4y)VQ#>J+Qo}$vRQypi5IfN=1znTqfx)< z#_Jd8qt3}(<$Oe41oi4L-jah8ZSdW=LH5*yT0z=}V4+?S%|E~T6q>Qqq*LzHiMCi3 z-Pzqkz2@f+L+MWf9|G1$i(EoXgq%1iG%IsgS(1wl$rU@jKB6B0(F19x+%99%WF}va?iOJC$2Zq@rLM7#0)efwSk}c~QO4igT(iu1{ z#Ta4>DbR&nk|R4ipPpO+UjYZ&Vw%n?z{y8;+I7F0g2_`STVwTNC#=a4bfFXyP^JqF zJ&IRtexc;dydv4?7#45bRnbv1r(PQ2k6xD(A$x0sh2o*RInNRdblyaB!OIQKcs_I6 zqQ!}M>Z5Wii2h|{tE*fSTf9umo0-Dxoike0_AH$gW85H;af6-xeHPI!yL&occ+F^U z+goI|sth7TQ$a-sG*!n5mqbrm5`!eSRXI3jJ(6f`TEt^7-*@U%XF0YQA=QB;9g*tG z4i{o>glI3Wlpg*f>aURI+~>pYnbbTf)RIUqpxrE$O^}0WV2T01*N;iFsG&9)7a}Fp zxmx7F;(9J;$f{GFLUM{ov)x?!6r1`q#iacaMKyR*igz*aGTD;v_#2lpB=@lpwOQ`3 z?t6uwNCXeOfNDe~ywSnMGZT)(5{ ztc@ogCBhl2R_R9E;Q*||B14Tje@$$BJv9|WSgl6f@I{~#)i zFN!Y=?th_Y{|mk03&Fz9$C*)6b9#FC>L=oaaz}SZe`n}FmRNX*Wmz6NIp_q1>Xj*R zCY%Md^v>n!S3i{#16Yq7^SM3$e=S5N9aJZ!3S_cIZ*cHMHZ0aD_$JSZJGan zwdGYz4o&;zgKgy`X5xcRAnpwUghPAm;E30UOV(_hmPK}eDG%u z*7NcIgZ~wFjLft-xIY##(cM8FrLVs~Jh^wT-7YeJhi0`9vE)ti2o+35)zDxKk~w03 zWK|@)&_SSI#9pdmu*T*iZ%#Y){kTZq$CH6D0QtMlNAofB@kiK{ARgojhuw)UMF-Eh$MZAVX) zhstfLM9Sk(uzU0sXBH}H@l+SYx49H~0Hwx%%SDbE!G1jel|amp2GLeeK@B;LtI-D= z)Us$P+{@Fl46sR9bb4`y-vy_4#BIuykKBK(vs@c!$~`@Ou?g}$Q{G)$u9?KIL@Dau zxly1NEWF5MO)jupbFzjc)fBE(bU8UZGCWLwR@$IYZcYorrOf&wO%@GqOv9EPOaVr5PPlo80|e;u5mj{m>LpadHKTeLrJo!G1z3 ziR%=uDS?peEX34g&NHF3-uD}*;bhHj$l_Se1ebRvwWU{s*3%!f@xxr|EaG_uRfcmm#_l+c?hA@&d?6`}mVpTNfaoNS) zt@Fo%YMvl5WxsO4h*K#gW3HpKRB%#&1_?ZiEgUwNr`N7iCyJh;5R z^5_gJ5L(JSH-;+RE|B@f_aI>>(=oz1n}^Cfe{*L-22Ilou?Zd?h?MPsYZwz5?#y!! z6}Jq5$#qF6g0P5HoCl%<51zou3SQR-NSx{!%{XWnsQ-NbEx)**-%rnvIXeAF8RuFWl6b0`fL`4cwUp9 zLmbajkBUo%6yaYyu_XqTs1^!4V>*1zpKfftKUT-~_keyhk1Lj)Vy{ZQI5~r{1W|=_ zKXMMIr1(>3sI<$E<2cR~)~C_E>uF*wqi&OH8;>0?2X$zZIj1fdzi*Q*Cd6WK_Q*eg zljQe>xq(oQhjvmJ7YzlFj9Dw#$SxO>Gf?Bt;EhrPO<0nHfw0Nv>4BSv4IpUSIj_kj zgF~$+V$woPu8;6tPh1$Hl=z5pOzB-0n$K^pk~YNi4KHUgeL>o@XKbSRvgTg>K0 zfD`4I=>}z`X$<7E5-_RfTU%qQpK++c2LeZl&0Uw+6{SFYy94_DuJ&H5Hj%!CG!dCk zw-uOool4TdND`d@5G9eH3!wO?vPda+I;6@l$|12-@k#^&rHt>izB6K?@Ds5@STiL+ z8KFqaVh@1)R1)acg+}z0+@kr;foYm0R6^t?y$J;e0=T1x|EUfZ&DGHtwCq?%)Kvax z=gD#*r@zXFyT9;i_458DW`AKs-a3aPG>EQ6IlHqZH3&aKHk z+m~i^7OE+bsOw5p|DU|HSfF!{8l$Q_WpjNZvjy~&I25Le+M_o02dUGiVyGxIQyLZx z#Jh*YDG4r>~4N!Nd_!fwe#~zLnv`orM_Y{h8*?Dq-%Bv{1Yu-($PLRWN@mz+= zD0{;Yrew_(WsEWr6u0Ok$pa+{rclCGZZl+)GWCpac~;9G8@7}uq={$G zNmwDI@Di86X{M$6)QafS0fbr!5GeJQj zJ45CP1m(KpeB*||Y}PN0LzWw;PKeDnFyJ(a3jB94<_H(iyfbah7IL zZ|*fT!*o-ds={#(72+l8vEJq!4NL*E?jZ1Uc%T9{$f|0sNaC+9fM^1nPS+@a0;~DO z9nqOIHD7=}EXF`$Zk?iKaf?#o&+bMF=6312fFXk7$qQqWUs4h$y>%g*xk=7)74n*w zzi3BXB^W$oz1PQ5Wnx};M~Uh<`0uX4GbY$uZdII%l(j8zs39mLCah~vaAhT>Zxf+5 z9t64BCdiO-@Gxi}CD!JM9;twNE(auGb0aw_F|9XdN!L+Q2PEmt4Ea3;0K{%V6_&zv zgn8{l1U6UY}TpzhO34eT~y)ghl_GbqhEGb$9ErCc!AxNCTOv+L|x{!B2xV=YOq z1`}rOza5>eWDJv7|y~*E6@Nd z27;Hm10wuxMoR0M#7z^n zv}vKKDW*xU{!%YJ#-n-|J%b}OjZn)fJq{fr+`Asd@09tRTrSWHaW0<>LCW0S`MoIR z^VWB*0DD4Ok_xh_BTX^Qw`>Mr_TnmiOUzNXDNfQL8KjI1s?3urUkt@2o8?>?S65F2 zfDK&7byP|Yg+~#vAw{(_&Vc8*zPSA6i18;3YyNO#JKM|WN zATBxB5luOaEogGo^XbAwzkC-ZtIV9u`=$D*d21`Df%0w!N{}F z8|Btyuo|mX*xH%(D3IyrI0FsTkAZi#3O_=!Te)T2!sIltL5vo~Ml#F0zhyXAfT=aL z!r{O~JD0l!1`x~GeVWV$_%7F?^MzwgG5v~d?!W*-gEPi)+||^&gUCvp9nPdEoOQOy zIq8t?f=AH+X{45{NtE^!B`XR`@jGwXH;1F_o)b$fj>hy_YO|jAJ!H(YEyFhd!Pb&7A z@|!qR2zF3l^53swvvNr-)A^)N%G1 z5vmvfa)ZS20$>YkVHtWO&Y`uGy!$c5*^-tHmS;eW{?=KZZJD2<3O`R3i~InB@>uGo zCxVQoN}6oei7f7p8y@Ho%&JeMRe zKXyP0LsKwKa|oIO844f)U#iiCNcph?r^3$5KsO0nFZkz6Mii3rsUZ)ke9?U95nc8WNA3tg7 zmhjMG)SBj+=^DUxNAl?p$-xBZ3!)34!18&8kie6|V?$v%A#H-!bEF~Gi7W$cLoFj) zAQ+*!=<2%v?vl}o5NQNd7h+xWY5Kv^ykjET91)cxR$v{SsVh^R_>m^PomYxSK11MT zi5k?=Ws3Ef1&nzHOHaP9Zy?e0zP>~c|KR(-k8gVXWAyc81^FQ#+M>MU& z{)0mg#zX8CR+bt!2f8i$RGe6O5BC`lU9?}Y6!~h(w;Dce!aOJn1o6F42NW2vU>GIN zT%LERJySiP{E>_D%pd?wo=dy>y#+#U`h8SyASov(D<_7pM>xm?0Y$JnpI$Z+a6NKe zCX2Gxhzk1!q?&LM)<|1ZbMl4KG^cMKf{$x=V1-Wy+P*hva=RnTTCHZZ?Xo|}C{Y`& z7_eYtfDL6hTJ1NhPL3%VR3&o{3+FcgbV6h;*YYFJd|0xp>v77HLo^=qAVC}tgzwHO zYKj^8Jy~GY=oPG^EC4ZD%38?H+*@*2y2Qz`B5VK)nbk{Ka{Y|>AH3@l<}BXxZ72Tg z4jsNbbOwDx6qtvXT2+aE2|}R5ivr0y=w-)rx`@2&D9bFlvQ-#<*?x+{3B-T-8dJZ% zUe*yf#PA8?gcNlI6aM6ZBS%6vsgD{$SB$$ujG8$>)XTyU=1UR9>6nH0fN%mRbHP}G z(q~ADN$$~CBEQ_>PUPha(V$XaPM8T(7cf>=jd{~WRBUXlnaTeMk{5Q8Vqt_rQ_fp| zLXAw0Qn^oSUc!VQ>V))q_W_I1Kq210mBm zt!2~p!z@4;7L_tV`;lvszL|B;z|MsW4;h^`^#GxFwEaj(ikZpvCMujpRWVHMnQJY= zX`560y9|L_Wa~9qt~`KbJAzO=D6Spob}KeY(j8@ms|jZb>qdP-YK6Fi>WQ2w%W1S$ z9;pu>In*9LG1{dJhI`~yhfyKuvQ%72Lm^<{%bAhU6dn>mMiG`6ZeD9z?n|ML9+_Jd zU(L@?Vw&;)OIes=W~K$_%Tv%AH1HTWe(X>PG=oL!8A^mkIOH}2+PvdD(pOnzW&TJ* z64{h}YRU%HQJ!?*4B)mYe+3;8C(&wO##a%hT2pGO`jd~49Gj!7hu9fFKvDEZmT;{= z^g1`6TP2>L{I7lksjvEH)^#8cWse;_8e%1B`Z2JP&df_WpZ**{Jd?)&V`MbAR0-ij z>IdaXF47e{9qk~Oy08eZP9_g=DhcXBVdNI4!(>lt0TY-HoLe2awMe{I;u;)bL32rM zfXfR{mkh=G{Ij^TXzb`hIz z`8w55R_;)^4D5wyKXy^NNSz42dtQPlSWozpZ^H+`@Jrxr8BCP--rpF3uK6}9)t6n~`WrvF@Y+_lJikcL0kYzIq z%AdiZ-w9R_*vc+jt?8;?lCQy z`1@wgqG*(ZyD1Kvvl&<-6`cn9Y4rvCfY@XM9adStOT>gqh@eFlU`<6CCE+fFVPpXA zp|wSdV(ka}_u~&dlXItUVdl|?C&E-oPrtzIpS}2|I<(5}EC--l=cWaxOFDc<#}5Lp zC_GA)+(uWE5;$CBAWs9>C5c4Lwt&+HL&MU4hA?&gNXT=^OCdTI^0z{|nS{QII%dp6 z0y+Xsg}wsd7{!bV0vG%*ct-6(=)l!9Jo?~p=<+3cE7fBmdbrZH!Nt0_0WEQ60WY1) z5TU|YCBnQ+8kWfA+#n;-?N5=_Kp;YGU{6-R5HY}KaIfC+ zrkV9L0Au$S=l`$lX&Y?)CoR9-a00AU4S!PqH}%ideWvd7y!FT*MdsCdfaSm%3IfaF>t!P5GjISI z6K@VlB43LhYZQvH8p>O+%$(K=2p=Y7?lMRqf4Fpy?tRQ3Id(Lpsux#qfGEb$c2l~F zNPQgAO^jo81i?ZH&?dwyT$?Gpy|S~RAQIU;W`qC-PHTcsg*2iX!J|QnXCbaK?Pt47 zD=KvSGR@)m#rhTqGT)`H2_c97vbr!%p1?sG{e7i_QjP5&fzdhC8ytXTv^Pj*mBFV{ zgL8NsnA;md&m*N!+$d~KQlX1zZy!mx4FX{VvM)-p!TCN#I*a2;(wn-H)W$q@N|_td zBkTUnlGr=IDvPIp{L+q6cr7MX=4G-UaLD^x%JrEMxM>Gw_k%M z%)eMN;*TT#NLS~{P{((GV>B3mnJTCU$sq@?6zE}+4R*FMT_LC@L$l>>2DneymNsZa zgJYyAcT8Xc@``Xgo5)O%Cc+yR_){i6Z<4c5jw@hR(5p&^_9n+A7We7;; z;^a5Dd)dPMCT8(j=%a^-=Qdkwlq^M73T>biT8sY8Q9Ry6R}5CnQy`>ksRqnX}O` zv$V0iyg&@0VCJC-!UP>l=A#bLCJ2t(3-L#b7lCGio!Na5#lKbcK zmb+;9#SP-wd>9;11vQ+UPf}92+I2R4K{akmXT|-K&rTbSEo4M~cd1dwWZ(mdcu2P> z)Daz+;)A^*-i({RX-OH1nv&zoQC~91adeQ+FgXR6=}ty?>OSk-$G-^q>}v6h%t^RM zK>w=@oH$vA*uYZx5w$EP;;}$5CU~Vu7yrqUb=gSyU8BQlsW7ay6pmOWH*DTF zP@g#`G71z>sjP|YA3<3Kft0>?kT^bw`baGjiXz(6F-H7q7&jzC%o5`if(9H$NEg|f z*+uog7Pa2}a{bjPQ?Z)ePZAIG`&WZ_4I@+<8}&ItI7`R;{_E4zQ3Su4d<; znsYbgQf7%Ofqf*t7(Q|I3e1{vx9$Esl3OZJA2_*;=FX+EOG?v_dtS;qoA4@?{^=}F zFXvV^MtPj-`r*vd>c%a5_cYA^_@gWM=&(PQtV>7SmwpWmhC|*v&>zl;BF$!-ysZw* zwR++YC;;P9>K*Qe&vod65h`^x_#9_KP7tm_>xVZ#gs_w+H8kWOD|x!}3BT?n@UGAu zflA^Iz`P(5j?|$@lcgj5?sO`PS7sD-3YBC5sAmg{t_VjA_DuZS=FE?RVnkC+`B6nZ=Fw!6ylLt0=j9`MhWYGuwL`@!jO&RgrCX<@Bj^?rA>N$RPx7NH+!qqT4 zMsCGNyNH#{1uk1G_Fjs7B0OJw6**P=Z0(+!z5CL8znPc*-}ayXg{5wtZ>v~r%Y#3 zoz1WlBRU%Ahv8+ZX8xK3K8oqozPmySicf{QRm({6w7=giI<9?v~|S6%M^-*d*heBOi$Eu3SFviBKbWa4-Q!k28WR(frXg6&?Wy zI522owt%&OOf3Cxh#jC3^E69Hk!`q^TTh8~eMzNFd6aZY)nD8~b68XEdzfs67O~zP z3IEug6zCviL4(0w>~ON|v~U)e;NWGUMEO8Q=%WK5q*_X<> zL4ev#mI_9Z(zqDvL8Z$0|Dc~Losh_f@p9nwK&T=eqyXQwk*ur~Mvd#q;m&bcw5OM; zP$Uj$x%X)qXjznx*(tStr*pya_+Xda$59_%wP@Qy95((L2TZ+6A+ z=q{Q|kTNNBW0BxJmb)A>#YfeFiRl&8>vG)~86+r@v)%3~%ZL&+LuM`I=p|OLH&mV# z1OnRcZBG}9{)y6Yty^NFv$HGIhNo9H+{K~3qLr_o35W+xXz9>N2&6Y)8^}jT$a-K< z%cY0iN;1kwD$0U)GOudj)bhMq)s1c3;%tw=E5vCTGq;GG0ayvcf780C`0@KnYHx91 z#vgtBRN}+C)FeLAU>poo7&DA;T$D-^{!1x^tK(B(<*gT%^7X>16|ABK6=#vC3Q!n& zYrIxf1aXHDeSAE2gHl7)6w63848A@!H-Y3R@nqgfW8TD)PzYl{^VszP&}S zrgj6Owr(Pn+*&T^nxdB7=R;mH?F_wW>^`tv1V=diyk+Zm3rrBC;xMC_0%3?krrYl< zsqF@4Mdy(tVL*P?tGB;@D8Q%%8epMdv%Q>I^%8As#Cm z5Ho`9u1E1OS!h!OaGNg(s2CdxzUht8U4r#wJ$n1MzU}i*maMl%+>e~>3?l(ysv^+* zY#xTIIe^q3B3sn`6_r_=6Q#wbhM7d7Cg{4Po6mj$mvM2u16DE;QYvCoO%0cw8>Dy# z>=YSEFz7)+2Boo-E@o8!=l7M4>Kw+Y>pd0QT@0;rNV)x>g*|s%d^tnnPY>oICzn6t zE)C>k>-g9me8TxoZAw=)a$gM_DLSdVtha-l~zRt2t<@|>l{jDt4Ir!@jD zJr=mJbNGo6W0syY(Hb9KHKWw$C#H5V9Ku(+PU>Wq8 za~quX3g5+J8>=`w0EU+>{CSS4z^Im=1*E|x^{LZC0p31V}I=fNkL zeG}l*ST2%yMR*sw9!vHO^u-~5j`t=8hdy3kI;4e3`Xj@s;gHHv=Fp$$9el^iQGI$4 z7dNAw0ho^S*%>59gJW8@;`LH1eME2<6xMegry<71f>ji`Q?GEprZYJ^8=WnJRqX4z z4;PxiB193h9LVvRljWykcYLPuroZO(uK%j~rn)}wY~<@||Dg7Pnvs3qvhV$SzkbhO@^bqR0WUI;1Bv3P*y&JrlsI3a zFO2LW@a#~I=n5(lxxz{Zx{y*u+H1kGc~z#fMyM7niH_v9H;g}GW`qfLtpqd&#Y%5+ zqL{d}>)Gw^pqp-2>8uof%0EdIe0S^ymrs$K-hTj2aLWtis&k;_nx>5(M(Lxi3PejB zmJNU#TT$GqBau8OS(>|LJ*ZcMRAP`o++Q+QkwYuTsi)gz&}qKZaXW^rii679%FI*+ zji|8*X`=Py9S!H;ysEY{IV;ICF#O{^5&$Pe#Q#}xmJ=|eWjXaobc{FWmZsA1XoE@N zkzDDFw*ScGLt$u3X4OX|J`waY50Ej4C3i~8ICB8m`;g{qHcYZaSrd$)5 zIzMxhiLc_w@;w4O#h+|X-8^_Gq@R`kBs2;A;r?OOWt_-T3Z={gEqXBn#QO)>n$+PE z@ft!kE)1d-P{^Cxhi#D@rEsI*-dTWOmM6}#u%uZFe!gV9AT$1>LtPx@} z&b}k(5eVd}OD`E6tlCO?O;>$bLGIw|dTEqLZ@gb&5^wM^ockXvc^IXo{songG`^$4+}h&p9qSH3YcXPyo4i@i_Mj@L$=% zrZ0=~SQEH!i&PX(iBpgqvdV%dxB=AMU>)xxn!k;NUApJ4pA3S~fWT@inlROR= zL*dt*y(v49st=21)+lL!2;(vLq`ty2 zDdX}bJ@057>@l8QO^>T*yZtx?$f!V6+5cEceMs60G4?cmk=TdY4PX#KX| zSW=G@tjoGPB|PE;J?_9*Rka3odY1)_Q%p^Mw5fWja>FqZfLG|uC7t*{)UK&IczEXi z(a9uS0C1G|_I$LI(49X0@S*loyMqckV{ssw?_8*c`AA4qr_04wI#_Z=gmA^v8)pcs zGnsowNTRK09#A$2*NnOXdJe6Z`g9=LKXi}|0HFt>mtaCUzaWUNqk;&$!*XE|cqJH8 zSp%JHeR7t2Hl0}lr8=KWS{XRXc|8M8lO%m+)qh_}T|dC{HXJ>ABwTRB1h=7(LuEVAqpRmRCiEx6yu`}b^GznY@TcLm&9H99zWya`hd?PbO%_at1 zF7NP{M6%bGi$J1#ZG%2cv-0q1VnMl{%e#Utc0z)Ma^05P+!R;B_%YTjMQn+_-fz?| zk8tV>$#?>{AHh(F_XOYcmA{Gi;z|S$`tK^mB%lua2jOT4Jv^`k293zduth;hR-iFa z;uAddJRwFaJetjbts~AR4xA{kEOkcEX?1HW+f!4Q2eeSE5U62dk76I;9AwTCx-)|SrX0FsAVL(~f-Tv723Ybe|{*k%{8 z-OkAjxIE{Ah`lbIk=?)pNV7KZFLO(-Zr6PaU5tAW++B_$PKvhm66gPC_OxAUEwy}G z%RSA8ng2xy03z`V zv?5oQ_TL@Se-tSMP8?rRnr_F6d=@ZxaPX_+M?iqc$j_5c=V-B0XE-fzBEVaAK6jaD z%LW2#9;m-@kHq`~U8hcmDqeiG*w7tCgI&9_wO0M-XE9Dwz>|t#){0y>R4tJy(e~iZ z%BPl!H2G=TYSJBpnNG(f-WB%tT&5f?wlq_RZsHWRiinL1m}2S>&vgx~IOTdUMKx=^j*MseCUyAh z!8>4ZLMPA?4-vdVEmDOc^_9m zFM{I-32k{sXNLvY5fNkMo>D_9rW!n9^ysoem^86kuS&{bV=ofkhLHAggn5&^@TJ9tr< zE=&=)Up@Nh_lt0oo$QClG&uhdFO zzE#3OhL^Bi46IS@wi?S;aPKbOFXbU?PaI}0Ug{ERBAB7+IQj?bq;&<2#!2sMC}1;k zK&~j~;lH<}Mjr?Eb9BQz9}D*=yKEQoo!}TDjBZ z#ib%;E;&ph_-|}dN_*5VYb86gv6Ah|Twcl+b6uqMvr8NPo|5`|&;Y82JXC0qlA;0H zWdsIHU^!_mgF-W^Y%!+Pm{ey^h4PlP=THWxwDX)QTQPCh$VW{9gy!G3%exMh zP!a!{TPzEh9g2jgnDqk78~CSk6p9 zg@u(sfvKQ153_phi6sc{L(M0&OrkvJ;Hs*#G$KrqIB^AY>XiACP;&(j{e%gqb*Tir z1CIu-xQ=AJ8wdg*CJp@>=o=T0(}opW=;Jjd_0c$x{MePtSBAqZrhWnzp*6@`AsWQ9 zW}<`+plAoABMeX}cH?Z%cBi_hyU%uych6L7I~87~P<^E6-BkeBt#q6MHvHBZHaRo9 z^&-Ko7hv}MY_AFbMF=%2(l9?kH6zQW#bZzF8O6q{spP7ps@(3Wvf3EJI8?kNJ$Ma zC^=5kt~k^O=vR;<99-gH!@Bk&f_my|C{!n)tjH=* z1M*yNnn%VD^0jnqc@W2v>!n53fx~E#Q;85Nm(^x&%@GO>!j3l=p-;-FEQ2)s?ab=6 z;xyh56b?B=H2O%gnm?E?B7Sn}iFy{}4LJJ2lC{x@X9#JB9t@-^+{qy>i@T9!m`#eH zsNt3*AEwK|+Y$9ubr+JDD5Y3jqZ`0(L`y_61l#6ph8RlusYMZYUZ5-zp0G84wq#8< zNX{SaIvyH+PEfYh8hu@UcgAefgvuvNL&;{ z2VufVsg6-w049z6P+MyH%r9~Bifolbs*+~2JXvlPE_=dRQ|xgjUm=X-P17_+^^+y_ z=RnC19XNP2G@nF!n4$i6&8J!vJ z8X8f1BZana((;Jf(_8KY-QvJeopjE9gt}vQ@FK{F4fTYRAaA!*$XaD{`~#WU%u0@< z$&m#jS`J5P19pEzS#;)GQuBkFwq{xc3J_NF+TW37h}_Bh>-z~9({Gype_&7Vp0=LW zn=Pg0pKJQVCio5-=Ni7U{uvkmpYd)-zOnYVYZq%)_dUP&ulBsYr`PW&8T|*mx3mxs z3F!^0#1TC5q^f}rrWuu>LnG2#%Xn-gT_puj;b!wsUdwh};hy3i5m=Hfi!p>F zCtCWOPtwi+sgh3#6dYL81a^2zP|n^P8s?#n4Ms=VgDFOm+FU;s-BJ39srN;1}>qtDcv4tNEBf zq#)Ng(9p~|nS=4d>ElOs*RuApI)j5if$u2Zv`LlY7g!bwiJZ^Suq;q(24?0j%Mo&i z5)+92SkV!=VB|t5BO}O=o-67+3YDFo%@cbVCAaQRmyCDgus;(!*%hL4G(%c8TI71G z(m~Tg^HKyur#0z`pwK~@rJMkgRg;;YrvsBqHuJYhC4kj3rNe##!KU8>*#(M4@gpg= zToywBz1s5n7;qz@_A6!U>d8nknSd4uX=ezX>xOJPqjQPTi=Zgep87XR*3E+Y%c0l< zAr&lqD%vykezuxZC*4SxyC{v$N*EiJi#J$O5l5I}IOj!_*{U#GApX*+bbf_%ss*A; z&X^gg-&=X{u~^JKijU1MAykjWdqZE>AG~n;+xrG?mX>AJ9Jz8NtofJD8%;e!Vgp-l zH!&V6Tj?C&5E(Q-I7(n5t(+4~5aw)$jdma5kq%TEe_zT{-`!|ex- zh03e`1R^;cGg~E-cc>L<4a-m4b>(a<6QZVe%i0UtqIMAj;7G^^0I>?Ah76Q+@CrfQ zbb}n7k=;&mhxAxlIh)I^i0Yc-r=}VYZ?IDopIc9hg#VEvVSOXCfC)_LF#LkS&jTBJ zBE68Eb6h&3@-wZNV534JW*;R57?eVB_1L9HEXGSpC9RSwDM5*ZLII~qJi)nd0?kNX z^FluBO=leAz9WgD4xHsr(6S?+NvVJ_4RYiLR|FEX^v9b^S?x>Azi?qR8RC-ik-#-1 z0tsF5kBPRqf(ky;*zCl`vO*;8+GX)oC0uAG6)oRrvSs|Q{F9w~PKXe?DiTl;DJCSD zeV4=m`g~KNjO4w`>kq7?^Q5pc_b#kIpdU}~_}RU?^6d5>5sFoBtooq<5_apE%1=Zf z)vcrbv=0jXU`V`x^@#V+F1oBs5*JMWBvn)3Sg*Yz+wDf1S{$!6SmW6p!5}@+? zmW9mGG>r+fn?!|LYT!N}jUDX_0sgSmlxBtY@Yp7|wuI<49rL`RZ`(oxni7@O+=R*N zq>I*z_d`3oqNa7k*+DaPoMV?dOo!9z(mJ()@5pAZkKxS%wjr0Of($Kz5qw`Fn+{35 z`yGCJNgXz*o2qFi7aO{-$|;!lxci!$_gVpQ23Dbb~^-;NIUR=zts{un?_cu9MfO6sxEerzVRM-gHb6R}d)Q`LPuNUfdk25-bC zC(1BEwLM1QCCxBf05GVSz09HWLdee>ZE~@sJ{uq=51$O-fze+ZgcZpS_^zv?J=&=Q zp}kc5+N3cv77%HFzGOW%uK438J5Ps%ne^9tdL7ua_ z{CB_tqySe6BZ?Q>cc^#(N9*u96N}=!6zrGTQ~qMcvXq=$PL9m; z`%R=xD3&q_@ZizRdKTa?AY=85I$QZpiJa(#ZduODY?3;J&~>M)vooZVo~}Y40i{6s zZx6kd??0N`wfFb$XT{7Fua}*^0t-q~NW?Y~*>~RLErDAa(j%1{EurU4;;fNCX{^ z;ID)Y1RO8Q3aSO_fblxGI>9d!+ZN4iq9f$S=hi3YMmO@fGwvtl|L@tmcTd}R>-V%a zw%ly~jpn+hsm8Bt_>G1K>c6l4{dHeo_mKBxkx$nCIS7DXta*IjckMf|_nUab|5yI= zk8c`1%OOABeljdgGe}1dEbD3%Gr}PT(gU6sJXPhLrL(olm|LX#Nak|oZgMEG7F;q8 z?Qi_=hAO#%kg(pq3L`sP2r@n8D2H!nz_}LiZ1C^l)KhXUJw{9p?uid?)|>8l6rfP3 z62)H+f__!HW1FAO^>x@0^P!lx#qhZWs=nlM!1Il+;+quhCFk|c=wkYIR^Rw7n{`r@ zsm#fPheHrItkMAO#KIx3+l&#Siuh~9O=OUA_Qg{Yy|ESBr-#7xE(snQ_+Wm*%(BXl zs~K`{H!^1+!n(~-AECX*re_nn(A5>f7lHs81UJ?D5Af=^88R2dWT9(vE=BTtu=-5{rl>*>&pby=p8rpLrm^S*yQ#XyVA>gU7<`twFJ51j*6> znJ+l+I^ZoG-4sODoJN$lHV8Z&@XC~GKS`)(W^!{vVH61BuIEgqPpN!u&41r!4S)4O zqHyxqv5@F3pS6!-ps=#Ft!f}nsQzRHN?$fFT=fIm=^Bw3Nk5#Dd9z2iK>xG6aVjlL zMM2+Qp_DWDmeK_%fcY5o*eUoEo7V5+%108%PY;ByP8=e)@N8SSA+#ehz=yC+3b42w zCw(SmUa+#ykYy_x`y1p4fSzR|oE6m-bqcxs@_hC8Gm4#6KcI44g7YG9*?Nb6ep4Mo zNMbD=JoI1)Qh=3L<2_SJ$Qd~=D(W^2KX@MC{xecQ;CxARJ3Q~m0^9+VjHo9Xn?a^a zu@1#A$_~D{a4sOJbaVkUqsac;H$qHHwaIKZh_HBYFm;!VOhH&s&>0>(dU5|3X+d?Ocf7WX-lAYFo z4(Xy=!U%27iirzfrII{SR2ElI{z9^^w?9tV(?@loQ!B?PwF>j5&k62Y6chec z9s3M0%!vZEp{fX&>yd~oaROM<#*G)!bp&cu1R->YKNdlvJ-Jkiq1E5nFEAI3UuJZCF{a* zWR70*q02G=^W=c#=qg039DD(Um!g#(vI-zoFfrwpvnU*r-9Y&Y8-+0?O^EGn6iB~i zIMgXz_T`*^r1W8TQV$>8e|R_D7b=MA;r>v2y=qgKki>%ocR=k%cv=N}1fhsu7lI_W zjx&}8KO~N2q#SQ^R=DzORGrwYbeGT#7&-)66hqgdi@rUzO1cwiw*+-JFx3^BHvs5D z09?O5vjnMxfUBUPz(R5Cmmy-plFcm_{GO6Jc!-!GcKl>$~6X}vkN%WhO3!N7dA)&^S)}%9hJxfc!M-IPc5W474usaH?i3I z;#o)wi+;RxONXM}?>c%1FMA*XO^g9ds`;0%Pw$uRmWQ6u?k;wBj{fG^o5j~&p-u1SNR5;~sk%57PoRTK% z>2b_2b{-Dtf~B(zNlUqKqbd->@#Q*V9YLCk-Xqr`0u@ov=ao}X0|lT8}Qr#sh$a%jRC3j$V3n>MZFi>3ppSp<_OK_nF)^vTZYq`Z0a>eAF7J zQb;cX`i#qB!}G8JSW*o^4#bxZh4rM>r|OGSrTPy`b6qEUSvlw`)@H>o(q=FvPng3p z4bu^nqvXN~0!(ixe9zORo8j65y39Rn#q+D)WkSzyi5 z*9%lduRC$pa{O2r7KSJra!Gl-NOj*bWH2>M~1mSh@1m8%WNfz(nsgj4f{Zt)$+-1vZZv+X@kql${io|Abzkg#b>!C~ zCu+~ue9gW;-Z!!LsXf2Ki$nhNTQ`lpByr``kr4X)M4}rsErePjpn$*>a3Llc&Mdjk zxJ>+@wi7)4VgYJT%p{&fhnQ^y5E?nX2<#!TOQnDw^I!N4ZK1^svKb@-NeJ)KoLD-z{3DXtxQh3ce|RcE)z{N;Vt4 zoJu;Fw}xhx1B4&$fK#ZNXSEN)AJ*}-C{fuL0lSSYB?qs( zz8xv$_9(`NONwOpjV%L&nldTB^UCb8<^Wxnmq$r^uY*Uz4^YuO5zF;OV*RAYj6`I; zfZ6K5XH(22?Wwu0u8{5n`YeOJbkh#STvUCQao|r1_u@p~RP>AcIid(E6TyQ+-ElFN zE%cnEX9nD7oNhv2q*m*F?$2N`DB;g-Fb~vQkN)sGN zKnxh7530OzJD7o)io-*Y)1fLk55Ov?vpGVh9cl=s44gWSukb+SFi+E@JaY>urTXZR zY~f$YOkn;QN$E-Hx3d}YLp(S^$&vrw&47R8R45;eCJkMBJghf%RVR1Ww4mw}#R<_5 zIZRk9ZA&ZWtLx@EPh2;=onld%`;^KOaP&DS=KRqH*h;Gl$@j$*?~AL8A}tmDCpOjA z0|4s-#|L5$?($D;hO~?gM>ROOoXpz_Hc^V!As5to7bTl5;0p=0=b8}f1jESJLpBqe zfb<%$AHXq)jdGh}#dKG(ILSo>J;=4jG<&vv(8r||eAO^f23;e%yRl5n)V9I`9xM_m zV^kRBqa?rlp3R^?$f?6e4(!Il>oX?e6}Ir*X)JQ*(k%MZTep)-3A->xg#?LN_b@L= z;&a5)mObHViY=%c$ykJ#i*R*#WNP;Q@zo_zU2B;sME!dArIFdu@rkL_Jh7@MsI+y` zFu659wRzAxXwDEg<(|U;<{`ir@?cthb0CaR2zOj`lKyILy zU9~1LvPxYdMTT;a1PBm^;Whr{*q~Zn7}q*7GCi|V^g%MN?^yJP;*Tm0=P?s7>>6*$ z=1*Ir$d&9ZnYenV>tE>p3-6p=;^jfsg>S zc8NMmSIMJ1XL=$Bw1k{wi)XsIb*#fY52CfQIJGejRRDHK`Ti@Vrue1 zA=klU11EQ<25ky4dc22d?>j`qz*trR#1zJJhuj6mDk@Z0;(YGBS}UI+|BmGkxv5+= zmXcP+=X22uG$Jf)oF}=|WsqdfcWzm%#@DY0uwL5DBH8lOz-Ccql-=R?wruW~L^|Zx zwRaudP2#2x6pMr4b(*N!b1Y|?%c)i-NZ|m1ud)TY)quY85XNY7Mv7>4jG|xoPbadg zxVpd$##C1|Mq8M^O|<|)MBd$bDkR^f3H9_1-l0$CmWV{$3EPI{pGU+I#c%-LN^f>Y zXg?90<#hB+8aL?#vU1=g#7W9*iKcfYS1i*4&7fcLQ-YUVFL^*g60C1$)Y4AogEem1-w~q>I<7hL} zNyoQ9e87neiFkF`foXKTstYL!{u=8ZbSU+YZK|~h=G4)H$hpNnIQJ4Dj z&d{DlBwG;#--zFlxX_N2a5+wGb$YsB+;z^hDi5YNz!px^`mF$=(P|Jndhe$75;^T3 zZ*M=aJ29YTO@KSF(3OisE=MaIdm_+OG^k7~7%b*}WqJc#!{G8yVaU-Yc+SB{@3Ro2 zt*Rp;yp#s)r@jzw5pe_O%Zuxu+;pu$(#IZ*g{C=&;;~pL8)22D>@9N$(AQ5A1?D@h zRk+W^u|e}VhC`GwNfPcWH55WEPXcwa%Cn?V_)o3?Nu3n0gweVA^P6f&0;T+gV<#UC zP4Nu@hjXo*cYKOq&9@?74jkj0KJqyvh|1YxJ_t)~=ADj$fxLvZ4$z4mQ|V%tR-%hA zig4HX?_5!EpT`h6ak>dwFAJ z`2n-DB&ac^)P#i3N%xfXZJ2s7%IE^@s9ZEsDl@>#=;H+j z06hDW)ejM;RD3XKX0R<41JFEsGrc{z66BuINYrVan97Lo8>uu6MJ5^8Ih5~7<^SKc z=MVO@eQE1!t)JJj-u&%NpJ~cBeoJFr!~5$m)xGF_+IuAOiO73vpRW1NntS&Z_Wm$0 z{(s+p{-c`-cjmg1v98_ONdzv{0DX?>Gwg0{t6I=$3X)c<nqmo1g9;>7MAm zl+6n>N7idzaUbl-UajyUzwH=(<#t_vt#Ci(wq_s)*5o-#RFF(it6-EemV+5P49u?V zYFFkKaTS@uqA4f?Ns{zm2J1lPgg#{S1|w>VJDx4f0@qd&Tih(zIS+QVhgWlPR%A$lf(da2W^?qEu*Tmlb7K-)lYt%1?AICQDbW!;1p)A+-n5xVrFQ<5TKo za8N}OIK*?Az|0Jud<2JIrEkKR`=7HZN*6v*U1&B@E8LeD7zix(9apsK1I@DQj({dG z-p*&%sV-hZ%2T;L57o6cpmIp~h!$cp#(xW|6Iv(9XiOJ<{{GF=n$;mc8Or6PS;dLu z1ptm<=M^#(1CRdD#iBB$(K8q_Xc!D0{v6ghlO&Z#OBbh_)HPH4FSW@WQJl_l+McaS z(uIOvy@@{m@MgE-Y{xe6C3fS2ZC1Q6SgWdJO{j%~xr+5|z_)x(`oY-_^h?uyA_^$q z?W|4&k!6@D2#R2_i>B>D79&p2ke5smpF@f{zPyiYc4>aG4?+wYYJ}5zW2e(l)k{?i zcpc>}ZFhO*Oq5b~<>O&1Gv-^y6xkYqc{wgY|G^X_%%wpgI@KB|EbMfVc?L)Q1k_$X{> z<%PZU9NPXs9KUSaE9gA5?E#|MYEy!Y*OG>>DOGo|FnCSX?HI3iYjjm+vMb{AN6|Rk z0Y7sVRhDnHcPcznMYG&9*>28EO!oGOVn62oP3Zex``3SR^Yh%gcb<-2846o>a)=1` z&o1wyO*8n_z_4gtXj)3tXj$`g7=(Q)a_*on3f@ZFB05d#mepEF)TuS zW1Vx+O^zt)NYy1enlR1W(xW*x^g1>#7h(>Iq3mjBbRy%AZmL}gTH#|9Lhd%$xrc*L ziuPNx(Lgp3@0BBa<;wWDC7n?WkTXhEZBI-SizHBnu7XYrOYItHe2XUQm16L#gk3;$ z2%EzP9Lo~o7y8;PUXyB6jiQkS_()z#FTke0lr6Ueoy{#3a~D7n*<0|N)!U@~nBQ=` z^GK*j83dSKjSS+XsdW8B0VNfgUxKa~6!d09tQZ04$>hMP~I-M+*ERaA#U4z_(R?E49z#)jyq4 zuP1N<(3ctD$bP?Hw|TF^eOJ;z+Tm#Y_~vnUfG3Y0J+K=pujNGNIO^fbxMvFTWh#r51A^lB>^ zHA|SFi8p~4Lbv|=H`U+-TOoP0Jv?Gc&mtWDP$^S&4gzUdL7Y~#>eOsqW?&*yNaHd= z^&#@qb5JCKpaZF`;IZ*l%S>{v*yR~3v?WAEB4+}tZZ1dPq4az@mCw=;Cw--;%8UiS zcheehTT6*CAiOviks zx!c{mD0Mp;VEd``VIOms_`eDfQ)G>9XVE~`dxV(P(E}m%X*w+Ax68dlcSWsIY68tM z=`vDM?h}_D!~Hx>+;LsXG5O>a0U3S9?3^eo)Oa&b z25<#s#oDUrNPE(cfe8z>)CYSL{ddSgZk17RG;Cdh*0~GHX8;tc3i}13iv=Rnx_%qG zsa#;JMRm{xW=w3@Fi`*-^g@A`!R^w^CqJEjGE-Q@FfOKVZboG<9UAUB9_|ng#`=-I z?mUECL>Ws8{c~$bcqIw@Wfssg_!7XWT%Qr7)ku0_IYTi6Fs4PLpoP`e@c(<(_q3gF zeWB$~TjI?tO~2K2z44nGezxIr>OWfdi{9JbaOAbf`)dDL&7akr+xHE7{|pSk>%8Ir z!hh+_2?@YTzGgYdn>a{lnq+^ zG%nFJzv>J+DN~qF`< zkHfeNG@nv;Rric`N5?<;t)KjAFfi-zS`ryRf6Cmuq*9Wz1P-W4Q5r6jr=6hKw}>D> zQS$E1QB9Se-^V(4+N^G>R9z2*5nu)OIYAv4LIDd`W>V=mBbx)cXF9VC?85{MQ1?uH z`1ILf>2Zv1xwuZb&ZMu=GjS2!&TA3-{@t7BG`mz0Cue63w3{7GU)dH2xk*8H z(i0Z1zLUjP!JNTM4@6$R*8+CCb$ngLe!ppaThc9K5AoZWjlKsG5zrB%*US7%E z-k_3RrV|NLYZbnGTs?uZH*Wf2VJy>tq3=Bx%x5cl+Q*RmW+F64sBSU7`{ zlC#RYq{+I_QyT;S9A5Vo6f2e6wbV1?nOJkT>#OR1R?E zq>^`MHdce-n)`0rp3`Gv_zOk8bQw7jb|T7F0e538nwQW|BFz$0i>fcp$YyB`5B; zIl)2|g#31Addw)d;E5KAU%C<hr$l_mVP%zpR#zD z@v?yFKtT|o<{~E-+sjB_2?rsoRJcMw5FgHn7RqWtb6tQhLL-$7016Scmojkw;1XjE zA%}CE0&p94owZtJ2c(cf85pS2)glXz<_~T@s6*ZEABcCwcN#8kV??gC12etNKoc{m z5Ztb%$cpQh5!f=9#xBapqX@wn1~b`P9Z~A*k}7ZGyg-kEAmU1La{d8u>TQ7RTbu9K zF+cQ?0|&zLGi*s8Os)ow4Xpdin3&2CiMA0jQq{yVK-yQZO~TxpoPh}!z7<5YM8Ygq z{^B|Q@#{Aq&~Z)`4j#Na#2?~s(`F+6j(~`2Uo&-~t8akCG6{f$FhURW=<-Y&zB2Mz zB#eh2;bpvbpf7b{__3~m1bO=VozOjS{8&6BEX!mdZcn^}rbrQJFeOlin+%Ukf)6lf z(#6>EiLHN(<>{RVnQ}#Dh%?azCeL?Y=vMF(Sa-n;Cd?)wT9pQ#N>g@=guR%fV>Axa zmT7fyIaky{R8JC;0*AX!p4`nJt{a9MvZD>Ti#hGGn=282b9QwHw#NY_#K;uzKa~*R z=#+sw6LW;qK>r5`h9J9ucPBYUDW9V8DoI|#;szUy(FTBg-S678rX%hC;n?w0JIz0L ziDK~Bn{+5UU%Eop$2D(P-OB4V({niGbWD%Nf%}{aH6YswR zV^-N>RkTJk4h*bd7nq=wF83!$3A*Jc#z1Zr>^!S0SDK@Sjhf2?k`bc=t4o!|`sn1$ zEJZ8PS*z}Vi;~Dgzg@JMI6(j16D3tN1o3}(t?xE%7C5^Y@5pzDV<<+iK2lL;TdkUU zht?NWXdLUW)Fmg%k5sz<#HmekFRGL$$9u{THSXE7H&grip0>B!-fDZZ?TxnA+g@vX zwe6L*m)l-yd$H|>w&&ZPYkRuwskU2fYi)~dPqbZan`#?td#G)&t*7loTeR(-w!7Nu z+xE1+-TGGRo2_rOz7CGy)z(*9Uv7P=^~Kf~TAy!yuJ!5Gr&@2duC*?;Hyt7WZavE_-Dt1VM4V=WK047T*NoM?%*+|zPbOMT0p=C_;QYJRi%4f+?p*3{E< zqAA*RPt#pZ^>7)!-S}4Hn~iTYzTWs+i_*~=DjZZb+YFukv zY)CJ@s$bzg7Qc z{TubK*S}W(YW*wqFW0|R|6=_M_0QKoSO0YVQ}ws%*XkGRpQyiDKUF_g|4{v4eNX*~ z`e^+<^>@|R*YBx&yY4MIF}zXtdfjVvuhzX%_j27!buZSvQ1^V@b9GPGJymzBZmn*y z?uojqbyIa?br01I*7ek#sEgL!Q+HQgecc`+IB$7xdT)5Id#`z~darmddoOt}dM|j- zd(U}Kdrx_{yftspd&0ZwO?hM9L*Ag*6d8>4L{3Dak$WO{Md~AaYTvGX ztM<*>H)>yRezp0P=9imaYJRc#h34m*pKE@)`Kjhx&1=nz%}+F6ZJuf#YksJCu(_xC zM02$Hp60un>zns9z1{Ry)0<6iG`-&RTGOjduQa{f^itD{O)oS(-}GG5(@jq`-D+BE zT5Niv>1xwd(^%6(O@pw5d9CKvnpbLGu6e2E#hMptp09bX z=INTJYHro6)hyOLQFFCss%EU_p{?-O-siWz|Np=Hf65Bf)$H5n{jT@BHvW$HJ2w8d z_uDr9miJpWzTv%L<8OMuY2$BrzhUFAd%teuuX(>_)z`& z{*w1gHh$Xsw2i;${i2P(;QfM)Kkxm#jX&r8oQ*&0{j80zd9T^{DeqG@{*3oCHvY8t z(>DH;_ft0hr1z6H{)G1vHvYKx<2JtPy=vo+c|T_3k9t39%XMjsMyE&o+LG_boR5 zC+|Pm_|4uo+xQ>7|7hbkdEaE?fAIc;jW2pH+W3v$H`@3O-Z$9z_1@Rp_;udb+4!~I z*V_0s-q+ap)!tXz_=5L>jbG(`m5u-2`}a2fJMZ7w_?6yQ+W2q1e{18v@&1jCU*Ua) zjn8|}+xX?)m)rQSy?<@vzw-W-jsMd7mp1+j?_b#X&%J+c|U}N6P+xQ{xLpH8?Yc}S*oQ8W{-8Oc4 zT{hn5-Dl$|@05+7=Y5`yC%uz4p72iC*y(lJc&~S_jmN#?Honh$pN+@7V>Whp9X1~I zj@lUYqBb7!j@bBK@4Yr2_72JUm9EZ(%8(G#wNZrHu9yhfiI2qd}-8w8a=)=M)=ZL z%a_I)eKG1w<6gcr?%|8k`+M*2ZTvg$?`-^x_Zb`ir}sZ?{9EsDZTuVWZ*2T)@2_oq z+k4x_zw-Xd#{c2{4;%lx_up;&OYbjj{0r|dZ2WWY&u#oO@6T*}%X`blKlT39#y|1? z#Ku4N{@BJp^8U!i|K|NS8~@PzLmU6A_g`&%(|gm#Kk)v*#^3jT-^Snbe$U2xynAds z=-K{w@A7PayaS%?kN3Hr?T@$Lv;FZt$Fu$M?)GeduzPKPyf)AF$7}U$f4mmY_Qz}X zY=68a&-TY_^lX2;2G8~ftJ(HP+hX(ZJlh{H;@SRqwVv&dSL50Kc>6rtA8)T``{V8L zY=0tuAF=(3{9VNMC-Rwy?N8)?Mr?l~e;cv=iTq8(_9yb!5!)XucH5uGUqx(xBL5>| z`xE)^5!;{0Uq)U?0wsx$e%`Re3u%HvUHBH*Ea%$gkV@Ymr~G@mC|iYU8g&e#ORLj{LHXuSZ_D z@s}dMWaFnJpSJNABfn_lFGPO9#-ES;yp2B>`8gYZHuAGJz7~1S#!p2)W#i98e#XY1 zj{LNZKNa~Y8-FtLlQ#ZDbS1zbo=x zHohEr*~agTe5Z}y5%~@qKN0zajo%*mb{oGf@@>lhAKdeed)hwU`svo1mID5BcT*An zxU=C)8XD`D>t6AG$%{t*Y3-+K-&6C&`~GZS!`^;g{=fS_ziD&cf-AX$?FU2ihS)V~7LMch`8T2xPhFCP_J3*VBuY)Dld%Al1YP3&FEK@GLcJgas%0 zq!h;6BQDht#KC43p{S?&=$bwfwebTdV~>V@qy)sNVGRX$0XM6F0m^VWnskE)1krV? z_6rJ;1Tlx{X{#0|sXinEWm4rePQDmYSUwm9v$;8{)c_Gqlbod}2p`Mfw&MYK zlbR*UU8s_n1csyR8NUr&;Svi$dd+X!6b&u`#TshG!jDp)V$h-Bt1_2*NPZ$bIc6^; zRKAp@ICm9Fsnzu2r2292k=7RtVp{Y+ck>CQ2aYWr?>x4%*3KQKKKQO|<*SgFX8?X! zA)pJxQ`eIgNy!KS;2RKr(Dhld%1Zw}VBR9n5NV*pTEN?CKe)Hqw<7?3!Epw^fzY#K9~Y2TdSoF41chxJNGyMY zS5`e>AW>ae7&Kr}`Jh((^il}Pr<;9ju&+#b6*7Nt53UwiVfacCat5lspr>b6sG6c$ z;i%CAb^5fPRHseGfSfQWv9yDoL7PaWThxDBQhi`{`|vsy4XU=V*$@DT$# zu!cqkpoF0d&s&}1S@IOZiNwJ@0j_mVSzlpRG=CAQ(tJKjGZ<15w74}sBS+RSoXK1S z7elIX)z56I$15bzld;&Y_91TCYGN8z(Y^%&w1cY*jCR;+0g#v#&X{lXBshXXh&HqOo#3zNZqRr$oSl_B|=m zyUWoS1p)Vo^rDZ(O3~P0@N5EX%47PV;M@-G-_Q0< z6-TmcUStsY;yGh@7PSk^c;~uei5@6ktf#ArJ1AQZ)4gb3dIg5?(rn+vU9eMkbTikX zH(8Hf9!H8vZW=DQpti)&jfhQj18ai`Yr$wqsyk)XvUZow0NVcO<|A61BkA_eBjJl9 zb0;V`s-hp>!eL#9NSl@uX=q%qy8_x{70k$Fv0At6^0w5cu^*>tIAYsF!J8Vkl5`#K zJbgM;Nm3m}1)fve)kw+m1vWLQ3%s>kg^m0TD08{RqMlS^6P_Q-tb(O@1T23A;k}Ce z5uIkMQLyv(kr-A{mn^I`B``^U=htUc>kQ~9elt1I-~nDnQC<1%7+pD)NCzP0oY}xijUR}D!5O%g8L4u!3R=?>`!0M zpa+b0@2oJbmxT`$LK4HOs?a{5grC4z=51tSXS53`|L()Pdz83I$JH<))Ogx{R6C|F zpGnQmUK|;np1geN>B+m9UCA9~s0 ztu9k(hbwujj=OF~#iF47g5YSW3@l=G35K6vfZv8Zb}&JE+tOlecE_ynYZmS&43}sW$q~EY4qY;f4nTJ@vp;B20JWO zdDL@InhkrANF%Pu!l#JanqsIFwg5Z?!8Jpf{!)P}hpvE5VtJXu;-YrF{X?B6J438$ zK2d^=GT~nh!;xptUt6TS*j;!~Yh|DfXR`M`>a{@OG5Z2d(2FPsRQUSsrJ_3w7c(o_ z%!Ul9c{u;5ZOj#}6-Tj5@CB)7$=u#F^4dfG-tfbyX~p`s^+M1c!KheHuWiBjX6R%J zjvjT+C#EUmlH41I=X2M>s;wcbr3jcxV8DosJ$`iarsN_l*PXj)K@day@xDH2Tb6;TJl-yKjk`WE}k$rnRfopY&`X6|FL>%788(Kr_YF20<^B&_KN1&m?g^ z707Ubsue8SWeTz>B4T+b(zGJQ&@)nCt7X8z6jP?*z-X2WnM8pyE-}v@h!2BP>5?DOGEHndOmp}1If*5R~Z6!Ayb?Io=6;r zN3HIIx561KvH({>0H?i?(H{2WLnn6?aJzNx>8B~S3O&o5_JKvTlVoq3RmoBXCH4T8 zGx-~cYw1mxHu6?M#W`8g7FY*@Oa*P{Y(iL{!2;%19|OK7dt^3U#F};m@~Lh@5qVpB zO1=ousX&7_P>i#HIx08~yB|`j5Op-v4dkxp4vZJ!8kUU+ngEjTJFKDn8N8HgwTY~k*)^R(%Mj{B_$1OMWb7^VllaYa~Z22^KWnFG&cxG#wnQC zEjM~$A&m`%l2cU)zCeEMrphJ!w~ispb*zN=DyO$xccA&xK&SE%OsZqWV&4W=K^5k% zyX85xn3ZB5Wxt@NvCGY#A#Dt!T5vqQcoNa64Tvn4?G0{UbtqG~sbZuMrwviCvzyk9 zHtFvlIvs8zV@)Oo!x(n9!b!9I-mx>2WgD_XQ`0$uv=5(@!gKb_kvpM|oT3a$(Rq2=;m9}bi#2?dAInF^X{d{i4_G*jDIUU^&vWGpN#k@Uh=WU zbT0bn#_GlF2HGu41;8pl@+cqkTqf&3yt%Avo$?P1oWu;?Ue4fV9LIQg#~?KFQj>Ld zkXu%XOx>OZ?L*n%;{@7kFalK5cAd^PQQD%Y&N7JsS81zuLc0fv*vV>D*xy(EQ~WG; z#Oi$YLn=ABRrLSSrdrZ+nX*Suc7K1Fn?$JkPHBgZGl$X zHQgfpFS?S2n?U^}+{&mh1D&kJpzW)AfKoqd)vGjZUsNa8n-rO?(hO>Xsw^bOMJ$o! z41^L38^yHvbn$`dJT|?tl1=-2H=mT1ar%Ru2M&jpgbno4_{i={xQ82}KF+IC!6GFj zaM=@(fp4Fm#?s7^q{_(h#&Y?YnGJf37YaDqSs9eaMoyjX42=Ph&Vq*98I)C-73-m= zbsC`nig*qtgLwAE9gEuovGW`F0Wo{FuN=Fj!w#<<^bc(= zy0hH0zdgL#m-eQWFxrkn(QO;AW9zP;MMNyph^ngS`(RJqW_Db}*usB?-*I6B!iwq4 zE&AH6&n+s4R^%=tQ|Qm*_irv}dbn8>V}%O`uHPLpV^zkXoFjO!Gc*y#<;7s-uvvSV za`<>YPvXR~6X(&h^Gs}A46s|%#~g{KaiWZBaXkko1f^N4_)bz0x}HxWCel!fk`P36 z`t6(7b=ndiYd>``#HQ^PNhut`A>MwaLg1!2D@;TXSf+p`I{5_BpVsbhn5;)Tk)YOK z9Rr8T8&rO8^m1nsyBk4RHfsZ}D}ub49Kk{;r}(Zw)Z4naCjAIO@6fw|A)6QqV`1LX z9nQ8bEB8ufht%dQZi;BQh>hR0=toC6MZxD0r-C}esBOO-1N&$t&IZ>Pl8t8TQ}$ZtQU)XC79}cHHCd&yZ3MQj_vv0|K0xo zo&KI*|Lk45-(4H+hr_DEhq~jCTMq=8+;Xwdz0pfXjuEWr4ieQ$Bn`3#1*)&*5dEkk z^Qk$9%dn-E$!0IXlT_hL?S58_u9%-~r;Z#CIfI%Eg?HiJYvmMfW%{M8XhlcBj<7C_ znwSJT&KWmGN3%nlPQN|Cc&e1YIgzXhK8jz z)6_DzO2bf)2_x#Xg-L`D4L*}5uz#~E0!>ta^0`VN`ihkxo5^*au1qR;CA~v<6Poyd8gHF89Hd!kX=Jp^ z`oY$~#O#!+mPg6*7W}4X1D@B0J4IRIJqh|og^(Bp2c;bBQ>Y(8Qw0N1zUxXpn0?qW zfm9^Ri}VTvS4X*eD2Mdb$4DU|I+Z|sr z2dcvj=vq0P*2^m}LAF(3DpNj2%8V@Ca+X$%A`~i+0VZg3i5A8b%F7v~>j%CdflZ6J z4O{E(5yW*T%{WQ?jy-Ecttr1@Xeb`)YWEJ&knJ7Iu*4Lmb8(K;Jy(!>sL-x6oXF*C zX`S_WnFue+72%5BKrKk;CW8kt&M0eJQI#1LfqiE)oRyJV_hUxs461b(v4Y*NjZabY znO^qqezrmKt$pTn=jqT3+Dl`RQ)Pl>is~_dHuKu|b>q{fBmu)tJ~|PJKN=|97~> zS)2>#Cis&VU~=BFT&i-V;9=&SP~fD{g%6^A@`9pv2{^6!k?(PikO?^Ji!5*sgwHwb z!C8z#+?H_;7ouX6Q`}_V$G_(S(P7QcL7G=uXUSFKk@1 zwh`Ljj*Gbk?$7_h+`GrdnXmVK(n?z0$+KS5GR;GCM4C(SNW2V(!^_H>IU|yyD2XCh zLrJSWSnnBfM&vAqGu#=Dq|rIYn|A@{VuNI2H-V8l$f*;fHUcDWQzQY>q{ltEwJDGU z?H@+t04b27PT{mRngXtS{d}L_`woYkA6IJwb}F2+B!@%teSh!o_gucu_xV2dbS;;Z zHA^8AZ_hCuHj!qKL|x6Nw<)QErXX%{Z}*IzXCfFJxYu#CC)YjCBwG2$f$P{+$%#d| zltWiFrb>B-WZ)=v*koguWhBOUj=l5Rnv#>QZWFxlwzOp6nDAo=pdR&Ij-N7D)qEWG zB8M2J`72q3{vooJExA?ZDZ{r7Sg{fO(5}rsO;`I`_3GW-usI{W`qzcn;{0e5lNIrG z0gVUpaCx3FS8fWYVZ^;D6{bX-z@s5T&5t^77RiJM3%jReXA{BXK>v^jpkikxlIVMT z?X1G3YPxFlo$u|-W&G|U6sQ!!DVN2)o21VR>Eqe#Gza~@ReR;{{5ZQvfh z5sH{p5)dfD0aHMNjspl+DbHtDF|btF>gd@8ncX*>)3`a3@Nw3-8ETlv=ethx^FzstO|8Z0>rezHLy1^EOO5PywD_ zoe8Ji+=g{SfGiJ*oE(P}4pH?!Zltu1BT;#zN;2hyvV!?tjZy_|=Ka4MoHqq87}#u{*w1GTxA;f57TwJjYQL};XH#sf1820Q?B50iuKLmg3GdtR9oE2=&KCr>Xep99b`X@U>mdQI&LU=M{g{G{&)x21^}+ z6C0VO%Qr$vE5bOJV#*P+O(3o?fv0Xc(=zaRjpUMSbc^&%NFsw%P=aUCRf!G>9!BL@ zEWcuYR{>ycF`LV-XT^pD@Bd6!n+hIv^|Z_%bmw*y-kyId??IHO!b(G8&O!TOilihH zE5Xv+a8-u$6|qCI-t$a`+6H~gYFLG|ZiFx(T)`8N+fgB(JvWCHLt0+a0Za)ZI$h4c zplr5X$gh-FIXyO4WfSpxs)3|@Kk2s7NIU;pK`V+Z49kwB@{YGc)Z|!C43I&y2P!w< zF}Cc$G**ys4@CCzK2Sb8j3@XZB6C^zTbpiAWME$AQt(NVu#Mc@);eS!4=lpPO-&~w z9gQOwXGeE#b}=eC7PG4?B!@}o3S)nOVX{M9fD|UJ8lA`UK2(iqaD2j7LlBWs(l*%j z$+x<$`a_KP6gm-KUT_Ju(d;I=IW-0vlVCWhL6|Z2>a8+DA0kkgImxb)^CO}syiW@{ zSIR9zzs6Xyk29QJ>d3dL4g%O#sX2U00ousi!s0!D6?YPlD~vUd#knkg+>oNObX1Hz z2xTCj-)6rW^Z5o$LPPO*viF$=j|S7B@7}X=u8WZlecyiU26{m%_qy-T)ivlsdeinx zT>k%;Pqcrn?QdTGcbDfc{TG*h?Bdri{Pcy3=f8dKpMn5<`sT-He(ucK(>G47z46cA zxO6f&@t2Rw$N!LC4?f&|$DO93kz|YT%f!3!#PBr3QpWxKlqRDb`p;&@R0DEy6!k{6 z*h!t6nIoYh=mh(Q4EZqBs=1Gp-Wt=Y0C`-lOZLdHhD8CT&LF1QLvYoLjr;NK1H*^IvF&@H1FOw@RK1chlB*gb z3lHH|CPhjzDZNDgKf(W}gY>R+Re`0`J>AzmG{k9?852`Zr{;)VXqq(lq$!CuJ`#(J zmWJ}9bt+Y6DWZI2mfdV>)9-|_T{VV)1rr8ce?w?jK;!{ki-_AWg1Cy~xW%kLBFGBb zjK(a0e<8B+eUb~}|30l}&!;_o*S-1QIOBKYAr8}^D%$!fHxWoCl-aD7$-FA=Ta%I) zMpb^Ux+UJUvHxK6GPd|7F^P!1=m9o3fA(djMj^N!%J zfAD~9RfS3Gavt4_^~%+0JPWUs6*3S&C}kzH<3duspsCQlRW0+JGhWg;%&VTX>A4QN~0+<<{1dlHdY%#elr40FqLmm2rpinmBL|ci)2$_fGu~rp zw-%32COx;-gnYyCRt;9aJf2`5AJmze5u3YN#k^b?v`bX#;?t0OnUv1|0cDcYKo~u4 znUg*J1KzwJg=?CfJlE264DAj@3t18G1C<*jH^Bi}$JKI_ZUbxP6cRhv@Lb&(7HY!; zP-N%)H%j)vb2&SJ;4hCMVHVvj+|NH|QEy2&NhHW^ZtD?>knmAxT&k~T*Q=km?S?~G z`{t&feC*va?3pPa*44CSZ1W=yq(^L58G;25$}$b_RImxcJ3R7Dvkham0<) zZF*BgwKIrF7p#zzWW;uHVmP?8YXe`qg10-mT4a>nA!4M&co;OK6@M11X>x>0sQ}eg zaH9pKMTUO!;20)ar8B^czm)~DKqgGAJo?VmgW3*CS60Qi4c~hQP4yQ{TLk|5D!UE% z@9pb@X}@&>ULEy&*CzO{N!v4o_#z@Q+hSeGvT!K2-(o?MmjvA5RB)XEW}OJ-qq1kF z!Dz{PFH_fcHqty~>t*5vV?^m0+jlakB)Sxe2du((Fu1D;uVg&~{R7>e8WtvMEP=A4 zOR~ePM@L0ZT(lqCV{>o>3{}M{#%|RLMVEVFeWUIVihQfQzGF|>7Js`|*(Oy@r3(zq zrD#k~-=>)(B+J*y(Q>d?)X$f{jp`tdq?iW?{t*E~BR8-2#QiHDPbMakDqH!3M|quDT(G?VAvi3of9=J`Wf_O27rwpQDaV=4d&bPV zeF@`g(jSO4omID(JU4tyxSU67)L}WGP<{8qM-MWO9z1;XVENI5U~E?tR$;$fDLt;h7q!sBxQ*t){eD|5rJ6ehj6jZ?hq$UBfZb7dQ+`A4Mm4yys}Zan zLqU(fWs*t}l(4ut#|E)#ULo<0`rR6}YIZ0QaWt1&kIgo&ywS>?4+Lh?E5xJ~9Y*NX zN_n1DC?n@fYxNZ4e($`R)PJV+pE%&domau>U7MYn%y#r#_0(3mGT3U~(okr+Bwq=x zuhy!B)zggVW!EONH2}jObbKHsy-HRLmIRPCpjjRZfSI~0gr691a90yl0gg`f5BNb| zR2IJ!?#O0nKw4stM`*s=uB=H_TzLFd(wtzd_l|mqbKsATWj?nRd$heQ3a|-TlcFpx zE&*2}c8FM?PJZymb~PQ9VCOnSTMws(RimB9%Vr9Lo!+~!J!bRucHKNGu& z{nuxI{LMdq=5L*8Kb=Dp?a~`Rc=9f9|3my2jPIJx>tt|haPWF7J_WUMjC^>)Z&BfA z9AR=2cDPyb(T?n0G!QtpBsaln-hoZp8-7~G*1wF+k>;1+(&To?*((yI|A2n{JbL}6 zG0a<_p+0+t<|g}6f|gLJc7ofxKd$}3q++G?s<5Ql`)r)5}DP?0VBp+-jjT&Fd@m;=>^!Zn+( ztkx}6)x4dG^#IVEu(NwpcajXcJMXRCYYEzQCoq7MzV4Z(fY3RA_L<^8n2oeSM1w-Z z$WPhZj@&W~6(-Pe@mUia5Bq~5D$$aM7I0BEP@tO*$9?>QMftcmK*wz>u|FWd;%(QY zjtVWC>%Zz$j{cG-eVFa|x?+H3xlow<~oJ$Y(W{RJO~6kO^#Qh2cB= zPoGH~xv;G-h;S?KFf4&u#7!yzuk@PxZZNPrW$U_rrQb7gLf0BkOnKc+qu!=GsA=Mn zH>L<<^Mg7)9MWtmy;-Pa-N08+qSf;D9WVkNT20uTeK|WXkcMqVC8AUcer(s|X5+}s z_O#5w0&C=2M@Q*1b@@Xh*um`BXxHik($hkgWdl*ksUXO)VyEH8kBn{2ux_~YP-oW7 z=mK8ep)Sv9N0l6kLz?llGve&aCq=tB#vt++!8dj%IHL6IC3}({wma9!yovE+jO3SC zRSV2`_zH)6kDJim3x`zZ)^?Hfss)P6%w{=yDw`mmi~ST2&d2STv5YWd)QSq}DL6F| z7pn8cpm$f}S{XZj(+kJw_H=hg$L)qOC;Qq`vPMIkcKOm;t*G#UK4g&$@Ct&MoP`MI z;qE}h1_9&prLfNu=;@JpQv@dL1Msr3S%^C$cmQ6&W(nu6`ldtLW{Cr=j`={Nri2O9 zO+kn2L33&l%I26L2t;*%rfE2zXplzRa65{-Qh3NAM$iTuNeaw;J`uB%%Lbq$7*U+~ zY&W6fHX*&t)o(lH?i%C}37RrRo#dR@#aQd!ZW1FJ)i@=eJT*lhYHV za2k_JGIXV@JKkF2)}KlcnEA`6<~no-1EF2IEoftayW?-kvsr&XcUi4%D|*vLv&X!w z`MB_O>csI1WpK78m4x)7M3#H31L7u{Vug=K!ah* zca+IflVK=qg`1hl1F&G2h+GuM$;7G7OEAhP1-!k;0w&xbuZgb^BNE*MQ9zX=)^I zP|$E)8$Z3yI9_ky&oBU5&%DH*rYl!TBV>3$wlO%Aywp`inn(>O(?183lAsj}u3878 z5+<-hJ&3Vr6%5WA@k}9C%)S7rU?`LbeH+E^?0!v`+4FQ@pk?Zyc`N)I!_(YlHY#H@ zL&(cGC$DMG@F3_tgz8b*>22%+Qx1xTqK8JpK~!n*3TH2hyMt!0?sfRO+f?ZUgK>i| z+2KctgAOE{sgs>=pe93z!I>hF5Xwkr&U*D0QUO)wbFd&vudDUlYr0(x-SCW=)1R9f zpBSHVx7$eASu5ezge+N1oM;XO5u{`bLHzSf0D!rsG)$3^iiH@(6zGv=@6yXW4aJ+* zddSt`pwg39dpvEn`s>X29QCy%H0_Ac5klu?=DW>Rj{po-NB%FfoPM~HexSz_X0^b4 z`Df@oxNi(CEHplAeA4vVV^{zGD<|51r)}x-zqowm(obIexeLE_q5J&qx!*YV_Sxw- zf9lLXIkR+n=hUyAnttQwPyVfwlm8z2|J!#>b)+Xa34zk<>7dQQ>1^4#P3Vi;f+Z}n zWzVeLhZ;4z`oc18wkmjD)LEE%xIsfD`}RW-m9htfr5GMKi;hP5JG-VXl3w%gt?^+> zc?kA+97@yEeWF77p%~TJq!`c*oif7HsFoCko`jt$*AsevwEMoZm5H10waoFb!>oGZ zqz`O3bOlPJo*$^NDa>Nat6uLo&O#ljoXU1*fk)}XE!{Bwoppw}gU(p`%}DtwwNfB; z1r;nqo|>MHEi*e_Ea(;5b}?5kHu2ureG*<_&9Mab1SBw>W4@h6y1)n%F?4!5=-xF^ zl96BlmA+Ok0?r^g3V}UDfm-YZCnsuabzQ7XTYjb)VU^e?<<+nN80*E6Z9~eI(>_Qk z@c}QG1e~*xVpN6T;W07#NuCnbyme$yW!(XJUXnHIsdjbyqn+{TNhoV7(l*&rXT>ZW zP}t8@Z7L-?$u9S?*O(p-8`9bJ6lFRUHBcv@aiNx8Wv>;)siDa}P$5)f_|P(!5eWGf#gVj3Lyl-&+iwn(NDJls>G-90Pr(m@>?t|H9Q~rv!HM<{^(P#N<8W}5ZDaO4TgLO0-;b7XvZ%IBtp>nxi%(KkU|C~5w z{!VP(Nd-mkbF;4UWb`)ubmTK4WUnnxOfzTH_*E?nA6{!SyHTBx#pX z$+}<)Oo`OOy}9%q67R+P3UFTnKUQN)8%0oidPC-%p^je}9P(Ne8Z4Q->~$`O4R!Bw z`sr-?X>2U26~4%4x3Rtv^soUcYYmsGOoiVQI1W>icX1>bE>B#zZ@ayTT7t>o)1j{n zQvytjp-jNK#WKLQr3aZZM~RXF*)bKo9Ffr$o)Geg!xO<(96serhcw|}oYLF$ajw_( z=^Pt~dL0dId~rYfqN^v@zP9S|8|H9tG<{-KmW(Ih$7DDd8 zwHzYwjnCn%lGrH;X!JyCd^nwu)6=5Eswr|T`1-C*P#p;-`}_PkJ<7)uksPS!Fv{?9 zkn{-92oR(nSOpY>+mcS%E z&D8P2Pniy!Klq%t(2S+Ge7gH}3s5sxdOS_>SU*&1rX~&a@&~9{d?0@xzv$xpd*mcp z0#ah*HosoG$NM(x0F|}iM|V^1h$XLddn9c1S4X9k;w(l8)DnTMVGL*h zvyexQ3xNqj(EiKS!?|icj z8t0Y6%n9nvRXlKk)?mpP@vvc$g?r^z!3+indx@=qAwx}z7PpdK#h5RM0pQYEeo$M` z-h${*_&f5@dp&PC^h;d*|MyO`-){TX<^SpO z=Kt{K?3tfB{okIRVH(=?H|9?M>WSa`LoEOQk^O3l6(&)Veme4gf2*?{i=)XkHsO_J zXtJ_y8=8^TanHY8qsSy67f;Y=2c--~KN$bV=q{iFP9sTOJ+8`tnF0XGi$oB2JcGBx zpJnlN)n(Uo0>`MbxdQC~rn`VRdV)>UB>iz$=P_43nE+aPokuq8Au>?67anF-REgxe z?N+#Wqs=~kXgx6Zv#Ya|m||m~ewZb*WK}?^XG2EE91B)=C2RsUW@zEP_mVAVN^3ch zgxajUr-8H`I==*fmU-e)L-|@r8aONhdgMc}h}#===tlT)2AyZKYvPJZOIP8SdI3^! z?VsoC;!HRfY;(R9(wkN<5&bhvsG}spCT&Q5k;d^{c%O_fdexjH0_B~>Mq@hQ222UH za94KMWlx7bzS41}wMwLWOitoHzEl}4%TcXMk^z1&<(xwB& z;;pPm{n>Fk`ClVANDwnqo>iKx+RoB8hG}8p_(Zv4flhjOVVJd#hGjsIsywe%XR_ES z+RSjE3-Bpw$n5Oq6=tWmP_I7b3eht1huMdY5}us8it3)xCWz>^V!4Ie4X+J59g3s! zvP@;o#rp5pC``Ie`e1lB=a%ez-#|}mn5QKps&HBO@$r+LkRzFy;YU$Fy()4bH5GKi zqR@>+h8+r@Ed?IHfyqd#c7>f4y3g)i@Etpm_g4Piy5v zS3H)Sj3x>nx#loaImmOHArHbn6_)v?ROr#GQt(DJt!gB@9;2g;zlyln4GU72V2J|< zqPw8W20FuwRV+Mhd`I6{%#yq769VCC(7CJ8Ayl7GH@xaU8gbf&jwMYvBT68&4grO{ za2=iS(t1s?zf9C2+C8*3PN)c?R(BREPZ~3wq;>pxb{TaMjH~L>+~!hd=K6JZgXVpR zmet*P%mI?Ly6*tBFl8Fs(Vjhxxtkh6ae&OT%(`GKxIj~<{}Wpo1~jS&_=F~=nI(EY z;G_T~g&K{$2p&{u??n*;q9XuS@b>OEWoVM$>h5{lzkS&aUbR~*p*JF<2z?24iJ~|d z)c{V8J$KihRi=qm&sz}_Jyk3{JcC-5p0=fD&M;C}Qug$*J62tt9iD)4Y?S)Vcw+iB ztsGb)?YPED&Mqx2#;)-M6N869*uz|5g?4H_7FderQ$DpYJ9B?wd13Z;dSQ0<{n>@t z%rcdZrRCX=cYi{Q*R|+PD0GnsA3K@Ch9}~eHeh&H)NV?WQ`)+5kev7w*xkg$)U#d9 z=;%m3_0lQy7kKl8Z$H`NX~2B=H@12+mBSKUO$jNdklC679?{! z702Db4q}q0B>{u+$@#a!l^#Lk6}Nw74vZ8_p4MCvARl4BgxEn;kZ{^^sm8AWj4W3g zUjgSUy=#1J=e6-w_+3g=!Gqmz*iwF{zbilEy+8Pp)4uy_f@eZGXW1|rH(2CDI|U%~ zTx`HhmD9!~0zm(01F(M}1<@TLKQ$s2N@zGh405)NYBhVG;|m1AYRp!KV|VkLbx0bD zK*T3N`pK#99`spfs0@=&gKz;21}AqvO%o0PCyh5huzpe;=vTwDaI^W}UC`yKz*5qaLLdn^8z;qoWRB<58wbmq zeXs?|O=aoAf}%?IDS8DTXtO7R%U7A*P@E&I;F7aBfEEJU=Taun?cBDZ9r%$Yg^4V? z1X3tDI219g?9+p`m`4*lQ+ow}QIUppi>l#w>Fh+~akCzLW%sdGcOz^W1ZkMCBo6%ek)XG}@!L4DNl#>%mY+lq&&3`Znl zq%uou!<1fDv>oE#01j=7%+c`h7rA7A>Hm#$r0x$t+-|K_>>_uSCg+?&7g=H!`Krm25)>OXno-@Nhg!IfzWji2Fo zG}&nc9oneR532A)2J}iQ4yMqv!?WK4BoM8WU^7JT#Rw1y6*(G$*U|WRaAx;2ZNc=` zmF~B_F*p)aRBLk}IjC{eJ#nEKSY$bb-v~6btE+zCE z!dHo(baV#`{s4(3N+jVW>R96&WGTWfvC!es=&K`KqB~WN#gGUKjpoqrV8)?(r-4}T zLX;{?j16(ySfjj6>Ob((LY*XJ*@A1k-`0Ih2JI9vTFEdv8|r17@VFi<4r|Rbb})cRLRLb9 zV|`Fj+6~fFCgQ8ADYp?Xrh%k~=F31W^iX2kg|LVMH)K%DQpv;)HSEihBfa>+uF0eH zEFHTM;)!@fN^G3srT`h2(Wrtqv|>^dwDi%i|4M;Yd>yG;FX%8Pntpf=TM3WDEO)q} zcgovCa4Yb-RDqSY@o-(qC$b6lr(v_ZCpyav`%mnly~cTB>2kv zXm*p>hklTz3|TsKIG)9Fl&}=8sh>izJwY!4PL+X5V&c4mRv+;V0i64K%zc=d4S(mX z_6~@})!mm`{$vftqZd3yLx|_(V93VuABuAi@IO{u!Ltk=n!iRi6t1TUixl*9S!5t| z3dTo=1Wx35S3W*=@cCHN>r)3WL(zG`b3s(<%yAn~Izq1%l{(mvpdqYS1D#UtzoFil zW?^vi$QmK5bxOesOj1yPuEk0hQj;UC(Sf$dAI4}kp+eM8ul%GZZpi&ydqNnWILfDanso}o?F49RkGUKXijaVxHv z|6|F~8vx5ZB1=nuEUB+TDF?cM6-9i(56A6?gZFoB1W6{C>$%$JbsNM}jYoIHO8MFO zI>2{GIfN3?XFphQtvIrCa#^0-?Hi#>5(~#&9Fze+0|B zpK4QOf|0&~0WX3Vr+$Bo7PN1z7aVBD<&pNYS|MWd@X4*G$AkDGiNdf0nlGQ^;k&8t zjkqecSf{nAgn`NnwOOSTjuL6PmZK$0X%Eys@_I&qa+Em595yh8Z7p?XYoKqSl?kGg zKSslukMZieA&D1-Ofwykhcy#av7pI!lPOVCs+7DTk)ef1F`b7*UbZg28CMr$L_wu+ zCkr}50IN==9pb3`^WCzpc_iMI=<-HZ#oy}9fvvrE@|nY{siv6fFG zi-4C>a;v_E97M;o(#^_Fx&d1Ur*>^#NOy4ZN{@%Vs^yB44_Y*Sc$Vk_`;EZQ^`&F% zHJQNM#R#Y6PG5MYppXYKsSXN z-coeE67rWzw?Y2l*rE!vOn|%th*s2dOKo;^c&4Fp)qsMCDR?5>Lx{a~aZs(Kt<}0H zSSsu!XCS-9C##V{h71t(nrul*)8>%WTM?}7YDNb>YhYEI(y0;Z~H2OrYn32Pe?L{qmx09IbW*#ey<-3jjRndV0_`1opPzo%-azY8zd zA3InrAhhc|oAuZ`Mf!!yH}!lPtSQlvjoiuOZ@lP=@bw!atvANV*{Q=gDztYjP(I~X ztr~kgCG47MYs6UKc$g3ynTa;M=9!Vwy`u7y4NmR7tz}HqDC2n$1a4=1d@_pZJsZ9m zI&R+M2)N`+?EP)Wy-vq&)g;&~?m#L{D;SDMh0Qy((ouXW?*v18Kj1>LfvZKeg(y#x}luw0=Yi3Kr@emu)k>L+N#Dl{Zj7?C7MJ_coVxjJwqiJC!phIke{kjA= zg#bORhV(#IGYkXF%u^blAAWFq_}1{k=U>@-OXjLGTiE>c4lTw^5CuFwfR zHq&M|I&YnQhP8B!XH4oV#y+^eu+TW)PbJ;v1lYwG;lb+EhkR2!9_U|r$HH5c4%F_| z&~FdlzsxN1s??(VV~#WFOu|-+lycFaCnJ*8!YT;{s*bgy`G*P zPk6+Qj)GeF&DSwE+LX!b@+>XUwWiVUiK15SHj-D>w|eK+7(Jlo;w{8Zaj4x(5P7T3LFH}fg`{J)>k&L zrA(711+lG#SB%e!%|IWfEuylgK_TQ3iz7pcA)jSQPLDBj&zqe3!tTi57-)g^3KvL- z57H8*Kr@;Li@$@3d3;`Ru#*Q!QB917U|2*GGgr`2H|wgE&GX6%s{^-zq>3^MN*4N> z2?W_~dxs-A@zO(0suT1~KT+`J-bIo05eF)c*djY!L#H ze(EeKhLyFgJYyWjY8j!v5=uH%&f`fF7bkSg1JT*498 z);2`5W83f|74x9B_a=6LG_HQN>!ue#OwbqVhT$IXkix^?d!N5aZgw9y%0RGQ{Jwwy zB<@XB0hYXxzGrJY^}~$8Ls^XAO{$amZ9FiO-qfzDR9?@8{w_65n-?P3;`}iVk3 zjK@K9LlaY@Qzih^gocOK&q+|R#qdMugg5X*t1lQ3!QZ66kFpI6Bzedj99+>m)>URR zst5TCc8r%02c$#C$yzC4RqFwV8u$aEuBvtXAaA~3FXc9BO8?zkmH&5~_-iNH2iu-r z{tK7SUi$XMzkc!Rg+F=zAD#Pu&c)7dz4_PPJb&iX(|`B$o2M4v_)91MDsTPw_%EpM zeN79V3BE!7p|$Cf+)&bh-nREIh=)*Zn4&1_uxsVq_!AZ$O*7g}tT~+1ZIL$HAj)jl zK#SNJ)YFuDPws zyQ*sNwY_V)XIl39hkS)b-7`w1p@D2LI%VsgJXu(v!RoCH8!i32zMoii#xK7ZMQkYZn-Tbzsg|&Hb-a&G2K%rTx-Zk=G zE1^ldbBt1-4{kk3d5`3cA-hSTl7W}Bk^y-$XWsHafMQENG>Za$$W@3x)=8p!VIptU z0&cKE>iHs@3p8-&-s(0RVr+4@*&wl}5gSWyRDp^(sho|!REZ;WACcID$WT!JQP_uKKfC%26e$K@=hdJxg~ZP z=FWPsNB8>OW%qS;_jz*#WGa)d@4?n~38S+Ha9{`BmRyU;uox%y(~I~az7H3lZ|H^S z*jpA!&1h|t4YG`DRb_}sQB5bvE0?054}Ng($F!s4LEl?%b+yW|u}Pp0k4FQoTO)W* zZxd7Ab#9uW=gGs4Ayg&`W4CK7c@7;Ffe!Yg;5+B3FpgqoS?Rc~~$>eIlO&GNK)= zC2R}>kx6m0)vB>;$^0N>rvwTIW69v=o5U|`S_?(ytFHm5=%n}#*R%gFl}DRkaswMmAwE8Q7`uwgZsP^l|CRw}Hh zSjamuarvBUAB|6F7WH`2nnuUeDasdVMt2brgx^Y&cobtv_pRW=Jq^a_d_TxC6xx5u z6L?&Igla*!kUE1DK`HZMAH6W@EmEg&v!HX~Dh%sJlwGk>VfupY;CS z9A+K`o>QO!8%IAxM2b7rpgg}N%n_^hocN47J=G|> zmxwr(ERkl|7E#rV4MywksFr;?E>Y~l;aOR_x3ptEWXh-!lW9n;PweVaF8J|1&DmgQ z4Gs1C>a*-DL>?o?Wb@97IA3A0BcpYcNPvc5nf>5=@`ymMbdhG}Za|ggX0)U>u0dT; zG?Y<9V~C(?#%}yMv(O1&+^!mL-f;0uej5Qqy)&-+O-#e9w5b@$;A~G0fO2nGGi0l1=d}Dw~i2bFqhbC~RyM(6&nv#>hzG$$Oh#BOND)`r?xIN>&c3fHZCi z$qy00tm14>J}t#Z8j^H{tkeNOLi9kiH>CU6O2?KV)zEec5krM=ViekCuU<1p&rBp%ri(t7)f`GJLWL}71aaw)iaeUnm>rp@X)?oaY3d$6n z^u9s1$0OP-kB)=U97XaZG|kx@2+b*w zVbE1Y^Gq_?XKIor&Nf%rR6{rj*!2EqS%7&?n;>Uy%()sz7nTFWvfWZye4~(t0mDJe zXe7%+Wyl<|?9Quv39Ce%bRMhCn;+{#DPMce#M3<+f{_j~{e6B%IKd4$xz!_PplOFd zX$!li33pw`HBq{IDq%ybE9|&NSVbcWPI+#UU!z4u#O9of|3#UTXR-Sv@^(LxvQ}8t z26?!%NT7tDQVVjgxfX%&3+4YmbfR>keX{LOUjCmiCog?|@$X-}a$)ZL>bc)Kcm3?Q z-~5|zUOKaQ`n#uo^VFj^{_M$rd$OB1|AGGn*Z01zWA=V^6qW)t9CbqA0??fGecJ!x+Jwz7Ar0(!RjTUGD7h z)K+vqNCqcgt68Nj*<4Zy>nXZL+HlC0kTGGfF7E;A?G<`zIe-F&+IA|9%3P_;z>564 z4=ARkiSYoy3&rOOID)V5Y5W7%*flsZ&>G@%jbk*6j``{fP3KIOM3oi`^Ef;}w(N+U z%Kt2!ARgr+%1KOn8JVOk`~$2@sP^UFoti5dj|mBI0if`#)Ol`?vMBSN*$AP-97Ez~ z%TgndZeP&8XQLn(u;L{i>mD>>)p`y5yGBb1Y1}oZ(a1>h;Y4*S15JY9>za|Q0FD|P z{loCRoBBI7&`6FxHBPfkFutdm4xODr-#}uZ6?@esQME}PGRN+GJ-C&QpwmdK$zT%s zwFY-V6ee32qG5={Vh-VtwVe<9cA?#~$ZY5GOqWmwMZk}TT*ndR7!yUfx z=a5vT4p%6B0`*XPqMlb9L;;=q)oAO+aM{yZWSasMZ?zXh5z`Z_aoD$Xb$+7xq-P1`GpyPBXxPH!{OJA>uY6Bmzh>g&ZcT39<82$ zF{rF7)@Z!5ntDW>Ny{#b-25Ez2AVet4DizV4M?8Btv!utz)0Ne@9*{kKhwyACVWlU zP0Q@|w?_Eo6*`t;Pcg+(I}T?hIUwbrI+?9n^^y5?2p);SXr`N=-{uIyasm*gtdBIa zA|=U!7fSbti0Ikrcml#3(5Q)9z!ge9HRIT9+HN=5AD}&wq^X_d)ciMU%*(}yY zijk9@pwhGHzybLa!W+;5SvU$)$VszhczKg>d`E4PMEe*zCPZ8Q1HQs-!xRAxg49Cg ztzMm+NZLn)x9lSY8T%N#x2K^DT<(+3ZjU~%qr+3Ab05 z1_p=xMj?(0q0bpK?Ny$2S_l)B9EIJi+Penlf@wU9*2YEhSYL6}wLc|mP5{VNNi{!> z0fs;d^~3{==*EKK9;;K82F zedq}~2jX*}bw`B?SX#{@2qj<|49sS*5F5baLW5OVdZUKlVi%}TttzrZ>@BMTb^{$O zFrI0ZL#W0ja=QwZ&KdHQT=qeB9sjclpik|S-VZu;*BE<5OQF(Rjwj8aK;9LRXgQYU zlBA8R&)>l>mDX>r-;haVS#Ud=3DFS``unf?Nr=;kx+j}WVN*wM+Tk>@r4q%DeC%3! z>HeS)DoFR7JYoh8rSmS0M+SjYZ-qo;a{EBM&$0OEun^88*ttc%SlR?n*sf)GOCH;p zE3DV&=O{r0@9xypAC6z+-&p)H~I6v!rZae*8oLFSZXl18EB`ikqPH=iqkRLQ1?F4oPJ1f zROj;$kTnpSnVq@8VYS+vtRg#$y9ir|6g{bgrSZ}NyIgM^6P{)0X`yH~zE)f63c?%9k8f|D+<5Dx3ih{B{FVmox%a*>AC z8X|olh4Ep&m_uOFrbkOS5^X#9IX1lxFb%%I3RMyMC-2lNq~h~+6ef$e@>M1k1UL3H z`+=%R`s!PL@-a-rvFW1?g?1o>tGeBbGz`zJ(S~8pPYc%`M(4>O5{V@S(_ z(;A&G?A)oXDjZPGWV%97)(YD@Gks29X!*`E!0~lmZ!-9_OMl?>{}1|upI_NC^$O}Hg|+t|wfGm37Ze+DqC)2y*fx&4 zQBpW$6ZEtr3r%?;ze>%F4Xtp^4PhF0a^T9Pt#)s+D}0Zi({B0#JL{LqO%p8Y?~3*_=>#lNN{Fw zWU@5@;W;C!KkXW+{lysWfxwJ(-bzY3-`oLH1;|xnE5rjR+;dDgKzUp$-*&Bg1V1m) z`=}MS1+-M@u&^<&QUr)AdrmJ)5&MO06$P!>Ws5epKJK%>$dl*Dujd1@_v1p+b zdewwVvrtg$!x@d#En?WN5+Uu>uTqk>X%@-NzW#w$TV~fj#{Ki%q@HO`IxgvE^j8dHh=>a8>Z0#`%oCUM6As1c2 z&F++ERJtx~5+O8;*c->*Tg#88e;l;>XmKsptk%{vok;O4*Ui%>xYZ&m=r0vs*~v?h zgBFlU%g(%0R``EY_97fRzd#>jCC`~$FH`#{FfSzN-?P~jJwdwDH=kD5jgHtv7!EH= zw9Y9*vwNNN(^mMJJ>q8tVp?OcXfv;ub0hp8-io;`*Wg2NDI>OCk6p_`bHl)@h9X`;O#6k00aO^1xDqwCV(qAz2_!ce9J4bqN^IGY2Oc`Gz$YA zs=~N)!>K4$Rolcq3##O3MJF2#=qaZ4jZX5BBFyM?@L(?-Q!#xdc?D_cBUz0uBr!$N z#!J6Hx&sP>{dso-Nu4NE-X#T1(kjIgJT~uVp_SoZp+{8FVI} zbPNo6LkT7g#xdff5~6|} zRn1@E&hem3Cnmzg56|kcbOrBSJ;o0wk_@~H4S2YJ)7E;u!3jaz&?-mzr3Vo_II4!4 zl!1ycVZ}Vw=N1sJY@h?^p~u@ph^lu^1qy~H@{#PRQg*Jmnk5oeT~eSG%_kFkn)tx} zIX^JsnHHz5J3h@cSMRbN^)zzDy5tC9)#uLpEiNuST%LC((1wbG!P{HG05N{9!#D)3 z9I=OE04_*5{TU5}mPDHW09GnI+b+C%<&4@w$!a4@HM;DWplo3XyvwyRLf&+dATjxbe1)H(-j6kR z6CkpmpW3qt5AmR!OdoS*;bBC>KthAjgz<%E6`-zFwYb*-1-5e!IZuut@s~gw0(XrV zi!v2GBw{$-S+AO9%8pspizhW6A(<$&ywc9KL*E_5&*I(k!-S7VzC-(D`S7o@pMQ4b zZOZ?D_{6&>+85jY`?jge|M{i=@zT)6pSke&F1&mG<@qb;J~{i>&%X8MpE&b>p83hs z-#_)goO=4k^2uL4d5Rx60R&PqM^&4SCt3@0);DAZVfNNAfF8j+u(aZ)uwpi8@#4^C?t;$tpQ98u@0Ge4{_ zyb&$KYTT3+?yRUkI^7`4fk2JAlD^gVN2h|X?iFP!dV-66-5#wmOoir3j)xYuDTp)m z3vDxJ3useh1r5}vI7CcB#>?KcmM6XI5Mq*Y^$fxwDbpiUKttVA6k@iBvP5~VLnLRK z9p!@0&+Ki=0i?G!?+sOb@!Z7J7-JQ_j3wiF+VzsrK#DVX{BaiJ1{c)8iQe0Ubu)OQ z1Xu$VxCI-h3!+B^t;)WB*yztTSwPPLQ=ycj4mT8TzyfTc$W(JAsUmO#`pMMOa!nl! zTlLuL*F>x5*-(+@I~5q~>?>E~rrPQbG2auxgOX*A%Y+wDtPclo?R~<7qC|QAxHM*B za*Wn4PgdPz(Xld$%?|XbA)<@nG%v1#b$B08$Q0rost9YW4gQUYp87BUAE!;a;2cdS z^Q^t*n)>wAsJ|`$@MR&V3fr6*7wLg_b@2E<&q*Q1Q(YX?qly_ocdGADq-1?{ND(Ho z_CD7aWAz-K4I(9LAk|emQq=V1Dp&W)lz^?}s&|1V4l#GOdSeUNQ2jwCU>Hp9ZI~f? z(LXTQ+I685k(}cEdYS|q#XFVO)ZDj-X~~MO8J%QCq5+*~?`SsxrKk%)_#3x=hb_;C zr3%0?`oYM<0(dhCDx1OEP)puo(Sn}AJWvyPx&KGV7l zs~t);_Sm|XcK7yY0B0hV|p zy#-ED$S%FC^97fp5fUBg7soCH5azV6_u$Y%Lv+pf@K=qE zJ6VdAG!}%EOFm8nKeCt85g7_jUG4GcYic`@Vo!$=&C!K%bqKdzlq_$!af-MtL3AoZ zggdozs*6ycNp zcrik=YqRRst;QJ^A_f23z9=tt-*i!^+|+}z*4OD}uqnAvU99_|;Y04se$Z6_!`GcRtTx!tKe3n9wZ>=Odh6|0Ho9Fa z!ePf$e=QV{Aec+@)j1!{ETJ7KG0qV4MDWM?=$arcEy* z4#9tA*Mbv!A8U<9?satzc+GBdD#+be9$95LNem5y`zgBEMK&B8X^?QqV-*y=>MKZIvI#(RQECJQsBN)XpX!e%KI`f4_gZsCR8Ech zc7h;!-3xI@L~kXKUoQ{nue*a(fQte9N6zPk@!ub1gkC{^ZshbX(4Eb0lHa@Wgzj^= zNlJ>JkY(_%4soCGd0hmjzD!RXxjyATLE!v>DmgsQbro?I zGN9DMrCYO5S!^mqqTZ8?`>hdzlaoGcq(w2m5e1&0Z#xREUpDHb#CDV(Ni@Pb8v?R` zswwH2kO|bb(=j7Ei|ec%w4`3pwA^y^igmLSylzq#yak0o5*x1m|5GR0{!ZJ4%XcpQ z%*9{3_yZT-KVLofznv?c`^wpuO#kaY^CwRKo6`%Ymf!gP8z)bGdg7=4pk@4He=gYA zKkd?zM+1rLtrWR&v=(WKO?-(;3xNo+Z#kBDH?}mJS+O|2hBBGuc|1u1U@~a{UMX8p z04O{|J&cGNJ?tHD6o;5b&%n{3jCab0bl@tfqxh5f9aMJ}%sP)?$iL_dEH`N!)uDd8Hj~fS3 zThfK&tcWIUKg%-<*e-mX$^gU*Boy*S6SD0KHR1)l@RZWN^vnEhYOMPBB$UH9dZYBr zp5=q{`qEUv| zz=5!YWc>@V^pySZ%8Gr+Bv5!CiIAfn?*@c#7m!B#S!E{3VAUacN~Sht`j2dGdb zmq4j0bR{aQT6S$dp5zNs1=>~SM&*lZN#RU8-r;Gyv>Kec>KLs9bLJtXte7SLHr2EeYqO!bfuuATYul7FRB{Kt$;hUFJtw z_WOtyG<=@+7&f9BbnSgdi)NPy{XVC9y3;1b*!8SCXet$n`oWH1bXSp{ zl59yIjSP#hH4lHG^xOc`=w*lUPwjo%F7HLWXQtKJ+vTydYAG@uYDtnpHy^l@S?K$7F~-xO3l>L|qdAkx{OoZiL>j zhXjpi-b(yN-H*cMnoaJ|G3GQ84hXj_YH=kp`i;H1o^;P6Z`7o#LSv={U2asjZ7vHj zB*q%ckjcuva?g-rQXr6t;N;#*-E~jU<@bL4{z+73%~UtA>&9o! zpq)mkW`hpC^&0U5nhXqtL8Gy}DU)H4WX?a1F3K^tDs4Z~Zq(E8}g*6WLuZHdl#C2#EPm8~|wXOXOmc{%P!bOJRK~*8g17}uCnx-%D z9G@554ooxuE5BufF7%zXGQ-${+j}m90!me*=ZBx z2O>iLNr5(M;MZt+udj*viC9N@C3B5xmbQ1wFPmA+*=q~--psBbqAn|vt5l45rNCBN-{q1G5WG*AkY{OESp3fA6y=UOPHUf3|-Xdef4#kX#YF225FaTbGN*wqO?{?!wL$W>Y0d@+=COCn+b8HtL*S^g>IVCr@?fy-C1U)9S_ZdqG zCz}10zxrfDd>Ucyh?vquykOay*63k5n@bttX0>ds%kzX92O2n>xI0u-VskIoFxIg} z{v;URqKdJ~@mKf_GseS%GO^BPkTw|idW&I`G_+H@785vC&g90SUUG@ru2y@{yN2p`}Q$!~AwX+pO>XuN*0>sdBo%GhEp5MeS4 zhDqB-#>boyqA1u}t)j8mVlK^2jU}d%Y_MQ--^4>w!IiEa-`VF10sZ5?QtyGoYZx)| zDZpd2I*}mN<5lxcBf-CQYlf@a!S5q9oqbWnp`mdL>>vR@wD-yt;>)@<9&VE^-V)cA zEQBg1RT^^gr*!%0t6+BjhqbDSAlun_wH3i)hKt1F{T0KgG z=P3FXvf*gTpm$&6E;`bm4fgc4a_n@^abc@pT=Q`8Rm1ctS#-}y7VuCeM%c6oUa-t2 z!!D*~Ut}xKWYDDMMfP1n>H&J#lN!Ze*Y7y`GCsN%yuJT}y2_qH;<`WYLewoBlii5) z4FTnWXl>$2;QnwTq`S<_Rq4?mArbVo%bega(X9QyYrh{3p$rJa2ngpox4JvBJr>fdy! z^y~Rk*QRYp45qFz^G9IURKp_(*{w8GK$?~K)6ZR0F|&-Xi%(1Rf%!(!p*$>NZNDb< zsO0?KvYKPmIis^B^=2AYuw3Cyi?JH!W5%X-vha`dMH)YvGc;)laIL`y`)}zHO$PIc zk$x{C$=JU5Xxy{G=?82~6Ak}*6C8s94|yfpU=79OfmrW-f^Q;o7p5aA&U3MvUqfh< ziXPS&CbucG5nEkT>!Ea~%B4Y90KcY*65BGygDwELCXjQ`QKw?pZd2eK42Ji=qEqqq zi@EoFTr(c&Bxc0;)alBOod={y6mh%uB;trhMNc;&u#Oyod%a(f!bUv>|MC03lKcLz z5PFBr@nWx5)MJt>+@-&M=>GSAg;O)nTf%OZt-R}^SHwXBr6|q?KtH??a{Mp%!+98& zyQkmw0-DVH8~^={i6GW;21mW2rXd3K6b6P1gsH+TaeCYpEF$V@$~v$Hy5aJ+xoJ+B zb$H=ebe6(r-Ec!4%bn8yT*Y?MfeIGrfQN>1SH19qScL8CHtvSeU#|%4~O4! zFJHIs2N(7)X${jKb#{08*KnL5>a|K8#4e7c0fU#I2U9sa{FoVu(l=-jd{Xy#z}Zri z)xtla#+84Jyp!+(c3rTze^Istn>ujSGbcokG%-oJz++qNkuK+n?1{KY+9g*{lUOm! z{7lQtnxJ6dAaNGgYxI+_pPkwxHFesusWovg1bHucz_Bo;*X9Q-NYbJA955gCF@C;6 zt^);e8G4y~u-FsZN*Z{XV80)ATx*vFPNlvot}TMFGdM0;VbPnA$G+0l)%;5a09Ex&uzotUIMwwk&m@N<7Qr27?L>*tFt5}Zf4*7Z zR6Z|n=4Z(PXeMJwRFK*~>o&~5V7#N1451S+I>qFVFWxYrp*V1^ET_wzg(f@ZcBAfR zTd2Vfy{(?%dzBi{3UeJ{zkzSiJXovL?-LKK$f?mx!Ny{k_$()FUU&Rx+rBfufjmg? z&c5bhkP)65?D0s1*)5D>0}qvQJSI?UXi|tX%a61l^mWE`p7ozutND$%SM;1j(!=tV zDK%tckQ+uvKZK;Q9{X@=RAf(75uYxiATuVEuNXu3e~R4I23Q~zapi4~tN~ZbyJ(2< zEcQ`RWjdxsYR=^eOdP!a@bCXs5la`d8=t7CK`TzL*@VT9{fBwyX_~tuje)070 zoSr=OYj6DTZ@hc*FYwks%74L&eG>;se}3xvV86$_NgRaa`VU%qQj@QmGNXjd>66D$ z_riD!BMF0&-bh8mDVOuA>(SyEw2n#XjfFDj^d{!=A$Q&)5uvtWJgD>+o}{Rf`c&UB zv{zqP_!xY3KNJ~hN3O$@p>yjKgo>~AoEC$aj2&i!UX@kb=dNa;n>V+meka_?IPO74q#f!?*$hRG#wfVa6G#jB}eSBeaIRq2vVwl*JU;5^v79 zKYjuYFsgvCD1xDVo1&2nILsWSPcbX*3sK`nSRe5|i`1Nf3SFG1ratSGgDM)i?=0r<)GDzDZh?aldCX0cva&*}wJfWxb(&N;|1a{CwOiR#lhWR>LP1h!~E z9yc9ybY1Ca?XA^COia^W`}z~3Snc3wHw>?mIgW3X({YX381AS$B16cQb?1l?br0da zRX?m1pM8kp!u@^Cub>oA>+bf947Te7q4U$J!(0tp6rE)Q_+?@;^y!Q29J^PqQP$we z(4Y5+d^5I4Xir@XUB7azH+F4-O^XU2VM>}ZAJvWG=3p2ObGq0s?uHK0(CLlegk8N^ zSb@c;j~RAGVTq>n;KO}4*y8gu%)s;7eqe$`+}9a$C~i2s+6HOpQoNHEgtuuxics)% zvcZVjZ1A!(!hq+Bgjh=M`1pQA1(0DAY@in2EhZ2;= z1sauu%R5Aqn5~iIKV)0vHWu@1YshPZ$YeQyz52_^&$_#>dd<8vA0pDi5nmfx+=Gi~ zTCHfuXSsb6IeFDb6ywYr1A)*ZaJNiQTw7oNF#M>mpHTbESJFks&=4dLECo;YZL&oo z_(tD#A5_94W%SLMKTdPy1YKX4H-|upE>3ls3bq0AIz(10COWNH<100W-KeoCwpvgx zuHXn#5LF&xy&EEa%#(mt0?s!3F`Yc z0V5G4XJ)2ne7z)LG zY6v`6?@YOaZO6WnpKjW0Qmg{n;%PW&RQ#gwfq>fKMOiN_S}7Ef=}kXZq(lRHVcpO> zO~u1tRInuK^OxiWw3`BBfS_cemVb+~Ho!ueKCxtU28 z+}BfmC@ei}_QUJ$)q`NK(avE=UNrJcyw|W0K!qOMq4yQNRj&y0HDR2bl5PMq`#dn6 zBj>791YYGG2yUBs)saOJm6E~E{#SJe&|l|SG+WyJq|N8RRFa5G|vD{>yWnXMg(5|Le`iXTE#p!s%Z={gqQc{l>q0qjK`^F$Lhee>5<_t9{d-Ngq?K zn;OO*PmR4su)e_nXwdz|g4@VS2YDsWl5z6Y5a(bvRu?ghNv6$U{pQ_MeXFy>mx50X zQ;DLV{dG@u!CAd97j$G7nY~6H5tiswC1A6%H}#0aw<80!4ld03s%maImW0^sPFe6V zQ0i@&=hTaV0gtrsIM+A9Tv*Euj-0kb!~;1Mi-OeqmZx|US!CC!!~`*tE8<_n_7oeW zz`^Uxc7ZTQwPv{tKb|;hISa3gQW`8U@-|>6c^fDR6?Yz)I!WO5*}fEFI(nXV_4o_~ zmyA~JxOHncMNkJ0g0ZE5>PCcb^!nV0k)x)N`O|?W_j{2=^pt7uVJi?Z3glo{rMrc= z?+@%t7p9{tXa~#n#Bp4MD1H`QhpI4^>PKzGF4YIhH?`5NEGQhS7WoIVShiPuYHE}f zlfH*Urc%tdMmK<1xXMuQGR3$V@-Jp2kdbA|IRc&Fjr|#gctejE$L_J5Toi*3q7>^W zKRr!2E-y-Fy!w75W9U#V$5LOVeJM2-AA2X4U%z>qV99+FpNfZ{OisB^f*;(MpbLUr zC%ZeZc>F1sL2-D}7!^k^!bRld>ViI?eNY*}(oRnGM>~2>b;wXRk8dC7Zbe<;jwPR_ z8w{xyYa5?+ZQ~#Br?qRk7QGGP+UOJvoWybS6Eg`oJvJw2qo`>Cdthuq5iPBec=y)w^XF;#hQ~^5A^D494~~f&_xoD4XN2GnyQvP2pRWL<#=6YZfJY25v=jj*TITBy!(XPa|H zji!a7qCq2_PlC6OdtRd$*kcg3FSu^^JcZVh!?Crrv6|Y`#S3g|Pj8YQ=5VIs2%~T; z0ZX9PGaiA`;c?*6$8C@CwKg&;&1ZDYGET`|i^t@>wOx-WR>BG)X?{6fW# zz^g=c4eNG?_tuKv|Bu{j5Ce1B5+;(49&W4YuLjrlCt3N<^x_Erd>J_XiQ~thdxth7 z7c5YrmuhcCvw#-Mxh92_#{9xDHxXt00l>5yQ;43XAcn>};^7Mi??7f#@1V924)w@% z4|aMQ;h2RmMbzjES(`XpArJzZfjieRZa%_yRXKR)QEjVuGj=VrslHO6V;OGK5Ejo17#c)-p-nsF^7)mdR|N{YAZ{Fb>^8G9ahxf7&&j^aB^xpUDV?eS z|CLZ|Dd^eP#E#D7IPR#hpaFh2$!J=y$v?A1${bq($$GXy zK9?;r(v{>L<`YcEyi}7ZMO0{uBGH4`#%sc6RL=rTP#+QfS z4am98!^&geuKl(ZY-8gK{mMJ}%4+oi+#~Xl=uLY4*6`BsljJjg0Pos(iCRd!}_Y(!pK1iol(&_ZfN_r+ezmg7S_eT}sFs5w8r@Ia^HZ?s? z*YWF8Lsi1~ds?1I>Hlcs1n7B4bke)-aq~GyPj_$zB>yf9Q&&3O-C(mM{Z&1Rd;ef} zvk-ekYEtKL3x>)c^m-ubQo|fGczR~{8_7B>Z+wZi0y?v^EwEbFpto?`EztVoL z{Y2aEw*7Y7Z?^rbwqI}iXKnwu?R#y1yX{xoe!19lGf|h5Eud@05i}Gh9IbwSD&1Vnl$C0acd=M5+!aDIZm5RoTh4Xu^c;% znxu_#X|rx~QQWlMBu=tP>SmKRm*4+A-!~XwKCZUy^Ca!_RA-lGFxT^)@0|C%m;d{J zpE>!|$;ioL?cZ(xPW!jpKW+b3`zP%mw|~_BVf#1RKWKly{k`^b`@8LLw?Ay(ZeMSI zt^MWp#rEs%FSL)h54B%tkG4P4{#1LU{aD*~+rHEG?Y2+bzSZ_g>rm^3)@bW9txvT^ zT937Sx8*x6-){M|UE&EIYQPV={$KW+Y2^C!(8H-FUpVe>beKWKix`Mu_H z^SjM&!;`q(yx#m;^UKYP&DWb>XdZ7KYQE4MZGNWtspd%YvB-BL--&!X@@eE-kxwEY zM?Q*t82M)8gUI`l_af!UyOFme4yZ~CrJmUz1+0ebiL_? zrtzksrVCBcre~U-YKk-+Yy58GcN)Ll_-W&}8b4|LxbdUL4;#PP_(9|Qjqf#<8{chw zyYXS;cH?^EYmF~AE;e3oe4%l?aj5Y^W3=&^#-|!1jmH|k+wh%+Z#R6}@U4bV8a{6L zsNutgZ#H~@N9etVa>Kg~Z#O(_*lt*Fc&*{(hQ)^K4KFl|Hw-mgXoxmE)9_S7q~Tco zcgY|5cKxUI-)j39e94Dx-)#G!?ftg*+RAP3w!Pi10^PV2W@KW+V1>nE)rw|><6Ve2$|OQw?1s$ zZe4GEt@Y*B#n$VsFSL%=e^UQ({YUj5)_)U^)%*4D)tBqvt$(}zVf}Xfdi`tlFV`>D zU$1|me!PCD{z84U{+arx>Lc~X>b_g|9co;DTKBEGPwGCd`>5{2x^LEfQ1^b_dv)cy zckAA+dsw$!w_f*J-OF{0b=T`&IPiWQfA8S&|NrR!Ei=$mcj83k#mI}+&qijgzaF`6 z{Y+%W`fHJE)=x*Kt)GfaSw9(>wEk-3s`aTz%K8@~FIb<9B(48)#TFGap& z{gucS>z|7}XZ=KE!us*ZxbpSry>+{b< zp0WN+rY2cTmJ)*AF%%E$kWz81tX2VhXcoY4i4)%0IWw~ zSdZAZ9`S8GV%U1bsr86O>k)6(Bc`lJ5LjOqsk8n>i>J1`u~om{;$x~|7Du` zzeH327isE0p{f51H1+>2P5pmEQ~&2_>i--~{hy_&|F3E4Kc=bwGc@)86;1u0rm6o$ zn)+X$ssB?n^*>Kj{}E07&(YNXNt*gUK~w+7Y3lzNP5pmKQ~zJk)PG1*|DV&;|52Ly z|BR;okI>ZrEKU6%rm6o!H1*%4ssDpC_5UeN{eMDJ{|9L5e}<<1_tVt>G)?^nH1)ra zrvCTR)c+ou`u~`w{-YA2@1m)HpQiqI($xPBn)=^PQ~w{))c-b``rk@Z|66G4 z-=nGjNt*iqkf#1WpsD`}n)=^NQ~&SN)bG>Omuc!B)71ZaH1)rUrvBfhssD{M^}m6p z{@yfWp|7PS( z>mNlPS-%(Av;JY^q4m3wUF#o29#~(Bl&s$YYpd@oMvB%KA_eQ;h`eF_c4XW7d?asu zE|Rl;E3#$%W@OX)jmU=eufyA|@5@HA)~`p_tzV0*S${ur-}+1>WBqDm)%umliuLy* z_pDDx($>EgdCmH-MZRYJk4Apf`maX5YWYILyrv5FO`mfW}ze!X7h^Bszrv4#K{Vq-Y1Dg60P5ll{eUYZVKvVw)P5m}aeV(R1 zM^nE=Q@=@5zd=*~I!%3+rhc8KevPL7K23dwrhb*Ceubv~9!-6krv5dW`mfQ{|0qrU zS83{hgr@#0H1)62)W1Sg|1wSeU7GqkH1)S>>X&KimuTv5(bT_0Q@==4zd%!elcs*2 zrhbm5{sv9`i!}AKH1*eM>St)`uhG;`)6`GV)KAjXU!|!}(bT^{Q=g=%|1wSe^ECBe zqN%?^Q~w-I{RB<@I8FT+P5mfMeS)Tbgr+`DQ$I{oAET)sqNyLGslQB9KR{D|iKhM{ zP5l>X>icQxFVNKY(bPXnQ-7YO{tGnq=Vbq#_ zKTlKN+0?1{|CwW7I(BOFDGVPI^6QRoBwF@&B)K7kNrebb7Q*Uk2MU{ zXX@TPaq{@ev0vit_Mg}J_-pckBq%3zE(CR%7`Z$~mGf9QD)eZE95szd?IJuNCm7D- zocST~933EMduLSd+}K@!tiV3}a1*~#F;kTt2TTvn9jYqfnEO%r4hOR^mDZBNX>8-; zqp=E4eoZ{(AZ{TXk8sZ z$Y877*M^5Sucn27<>;&-gg&^*sT|-#iU8hVY~Fwo7hr@9wAgDifp;WL%OKnzM z*}!LU%TgQQ9Z!=AeYR0&m{0&<$K>VoPUM`0Ngd&~<#Sn;?!TQicPaSkC=Cbs&^~ES?!W zk@l9!^-_VU+}!kL9>1!Ki+f#NJ;_=Kr7kW(7HAmYw+f^u_?nUxT-`QZtOH^&m40*t zC%PDjL<_{4kWanJmr9{%I4H8Y<@_GuMH1v3kWUk**_dH5?Ff>;vcAlpBpa-(-&3Fk z5rof~J2=H8dQFdw_qHeB-F>bW=cOy5ri0ram6$Q;PUh8!Y$29pS}U;k7fIe@Ra&`E zk&Gze2y#B7?&8J}b=wqfbuwL~_#jc4Od2jRA|rZ4ko{$e-)`^X+4HBvMO>VcxjyDL zpuafc>jsii2@}H;AP2uNXI0_9gra1M-&tj6dp|+HYv9j7(NfY^s2*i0Pv;)xgQu^J z5EmMc&MYr@UwC|1_dey3{~J;xkb3;1W#!`&6?O1tDHYl=vpc$x0N1*?$DRrY{iq-IrxAwa#ZN(PvHphTp!k^oDthVcQqMchgG`#xNqlo%u$g6z6N%DWP^ zMi5WWlXId!JI!sJD5%&wJz zzO%J=9UMv=B5zlVp#r-&P~M7GBV9QA3aVT)48spB=j+K73I(di!|3beUF?*KN)8AA znMMGvr04c>52@ThxcHiIj)Y=)hd1$f!3nf}So*^U6dR7k!!)ESfi~;T;58l07L9d> z5ZqkUx~imtvk2U7A$rFET*A6Q&X&)KWC1wC0d2X3F4bn4i@OS3E3>0V9LjlnFbTas zdm#TiRc5TofwO|w7qH=T|iv)I!w*}wwWel+A5^SsVgpWtTexhj+#wV zJrZbSHoaUbkUQhO`B+s{0kCBz5+S>m`!@_CYa~qj4F`hxGw05JpAAp5^h#-9COfdO z{v7E|C?#O(1v?4AtU~l?3YS=eV8gTbM25?jLq9eYCo5(O@)%HfB3lOkAhu=Zm7ECj zCO0xsP6>n*@bN;rnkhu;gTmo9+nMbWl*=p1+3~4Ly^+T%xeCwLKvz$!R+j4WN5^A{ z@XWMI_Q-uDvk1p{DER=Xr$~OM*#JyVf|e;jFewj;xxMgz^Y*6 zzB7_EmIJI0QlDb=#WY3HPCmY&Lnx8%>{9bg1!UUpKsmdKXJ3~eE^Nb9< z&3iCn>SWMKz6!R11Qqe7uRy>8F^1Ar4n2qFwO1rL;zcc_q<68uJ1py;A;m|A9YFI4 zzTp7utlQMPSlr|GR`MTMI}emojDVwTQ@*q;+=GT^WmH)2oKWs)@K3G^>j7ECQ#0AA z=+g4-sqDfM>M+Qx%}pglpdpD8Hk(%RDlE&uZM>%*&*};iUVG>1j_~aVp^U>mAGrd< zs`)EloRH9mK(J=mQp2kGkZmic!6?zomFmHIU(Sm|1Xvk03a(0BDL|Bcjl>_vpXTiU zpE`Ex)ssKh{wvu3AGiL!);C)IY0IVNN0C2FoaK$ipKSQcL~tL~*Vny$;?ErahsV2) z{gku+{|)_Hdi+2u@$@bL*xC)mQ8zI*HW4JHgXmqPb9WG z)J<}d>fS3;{PS><8V@8&6&`wvkHut*)v|Q{{P|k=k$!oUQhP=fcI0+xKn7vE$tZo0UCUz9@oev%-Y7~27@_S9HCcI^c=8=f zC?$`4d|F~>z4Cap>M?}82V}jx$yp8uOk%_{Op9nZ1`8P!!Y}9bPn5u>H>as{G82SwCQ?-#{ z<}de#YMnyze@ADge{^w+|XD zxooY6+z@g!m}rr-3f%axC|%C#xzaqf$bPx^Fqmo}oAs970 z0wh;R83&wcxgpZ`uVv9U*P?Lyq*ti|x`G1uP>Idn*B*;B7ISo9U}B=S)QGMYVnWBj zc4SjmX>U%(nDWM|)>KoMxtiFga=2i7QH!`FB0YN>B`8_%Bxt2sIYc@k+mOne4su>9y>NO9Gz}JXFi2*T?bS zC)XR);*Ri#CY3E?#AizBUC2iB`d@GI_RhLIz{}*)ZqDW5F~W$oKT?~pkmTKC894@k zc7J-Gf2;zo9fMT)>g){N@c;*@&?rYkh~dUfsd$h2mii8gdP}_O{y>Xb$UK1aU(0=I zcK(udLSEycO+XSUbg#Hl5M3bI&hXqWv5Vlv!%|+w#@^8A#=KKKJs}nX^FBVFAPXtP z{Y%cUaW66>RLd5Kn3b=h3>sBFhs#A~7vnDg^$gTcEtu84Pm%f-8xo62XfL$awY z_dQqdDz7XSzj`-D3KYmo6;>4&#l*RDwTU_!;uyY+aOT>h3q0^oIBUYzwzTAm>Fw@6 zz+CBux)7YEa2fdIv8WA}cR3K`UAk9MW$zET3O6$cK=b7cR3rg!YIGPX$gBil_f~u` z6)K3vM<=k0vAeDvxhZrpW^IQEURV~K?@ zk*$ErxN+xIz}Tz`qY`vZvInJ21zPT*7_-rtRw+B@V!`At+)XVlqOxvBV?(+Uxql$s zeBHU#rNt`cKs8xWAxM7E8n<-jfhDnVPz59lJ!Edpgsf8FrqEK5whQ<46=cX;u_qEe zcOP5f)vioWM|Y^_bev3^VJp5-@hM2FbPO651si7{Ka$Jr;v8`*nVcla)D|2BcriGI zAisl~TL|)b#2!@PyN|8tYR_6nPY9-7ix)1nmL9Orl;fQu-$Xu zs^3*$ib1`aDHW4|q|>QwtU=zINol6i*O5Pvq`dMtqm7ezr>P^}@pS0@iz9n{+O#8w zpXnO&P{<%pxCMdUH}&ErpVm^(;9O|MtP9N`^rc;43((L#H0NL)MJQS_n9=p zlmb&E)~9VTy-IRMn!*^wbF_$wL*c8KB5!VIeQzqg&e7qWd7RcI^>`gUJt0L9?UG`I z7u;#;tFEcdN*%3=DQ`R3IqqRKfs_r8FU)!Qf!k~3T~y^gO}{)jy}10`5=JDfB-s@L zMdtQmvn%6yeHt&DLY9PQUSmaeCNhcc!B8zsxij%_MwF^hDyxvag7zX7MJI49rBB4C z2g>#`+vz4;4313>*8}vUlLR2KYxkz9GJ=?LUnCo38PzK~3w`lsTK0d(vA=ojly~x% zPhM@$w|O9~V=ce2`G>&1{=vrI1Kzu<{wM1{Uza=aCr*6f`1`!||4aXQ&zFtwm0CMJ z9i2zxbz{#B#V#vaH~jrMYnQIi-(K`HE?{GUAA}smVpY^#LalmBV8N$JWtLpIkE2!^ z8PQ;zadL5Sx{}DhgI7i_Twc4nx0=U&1mEw%t(#GI*Surp7OkS5ubl6yNyoPFj}Vj! zvcfA7M`xb|Zd+xi;vdXN19r*tE^RgGBETugF;>#lm5?$viEvHhqF12RPc`v6%FP-> zst8@vQ3KJ90T1qIxC`@13Ky9*{#*s8L2nSJGSfiGN4?3ZJekPZ+)d??9Y|*7Kyv=W zm+y(GzI!7BME046$@Mh8!Mi5bDx9XMCZk9A z$#$>+-~!I|CKpH+Tg}?P`8@UEbF1lF{Ilm>D2sd*-SzyL&hDemEH_}NgoZz}*rF&R z5waE8fL`rN2|4RV>u`SIYAV|2hjV!2Tn2Wb)uL5dl>mXQl;AU*pea>sxRVhb!LkTN zaHq_bHcOAnjXF?6Yty@tCgNk`rXoFgYSCPFrSex|fj}=%++0MoD)Ul`9{-2-H%7H) zVtvQT4O(&o*{;s6@Og?)j0e>zj;3?Xz&)|YowE~Da{)DtQ5tW-M1P=Ya70lF3K$G~ zB2&1{Z7LOSqOB1=#{XCJ&X%nzX^(gQY-h(&|DT%z#u}8ptJ-@6dv#XpmreP>`3?EH zT;J$nI(v+wfgO*|4xR{ef;?Dpydxx>W(;+jpbp6!s=d9gd*U<^QfPDj=0yF#2jZp6 zby`tz@9sc<4F!k|GCsjnh3BDF;tT$0$uTs28TB#Ei4*Kh3+P3unIyfd_ZEUeIg8Vr z){2=R0i~V{aqwF04!(==*UAE8kJY^ z@W~-s`TL#5vTBsF&%08S^IxgeTocrX9T^=Br<+uS(VPwbo(YYq8BEH|KQ2W#u0oOb zEJVN(;+0gpX|yf51#91dXHeuPq~W?SUJ*Uc|8VUy(fDN?vH|1X_xNaZ7`<8%B^Hc# zs(f6#vga%3`Uj6L$w?j0J?6l~EDuRhbob zp3$GGmcpf|@ye4)o;fI})Jwf0uwe6OkE|sE7@W5(SAT~fUf69EiOd%6ryn{VButbb zhEF7pMZ9_`iY(?H;x;zcbu-&5Z%fY^JN67z*_lhs1~@;YcsBjc#^Z0CWU^tg@S43= z?+l*7qk(oNoT8@x*9p*A@6y3IXGQ-u`egWr4;aC!;4hRTWFlpv=$mjz6SKhMPn007 z`yG6VR3Uph%@}t2P?&$rPMp27=fa>>O!Y{dnnY6NpM2u2C0 zLL!T#(v%we6!aZdvUT8%0Sw~MbvrzkNcf{XdVtRF5eZ8NXIK@4g1fh6$HK1ZAIz?k zOGz=#?@&)`ol{HxB`UgC{Y9x>F@2EljSQQFnnd6m_m}tj<2N;*UGGpx{#-~PfcbPrTu!ZM%D$oiHjSN|2p5(yV!+{6;ZdD6u)>}5viFFCk+|Wu3oHt%L+Jp-1Dp%g)CPGa zR*472%Q*V>Ag$Hg?xt>?^&ifwS~P*H0xM9qynBP*dWVmIHpP|8=iSp#ld5EFN1}AT zuji+wUWl3iaL7#IxovjTq`3TC|G8)90^2jX_4UVA zjW!0(;tA31@dV&6Cr!e}hOTu^LcZ+k`ToA^WSd168W8E;+<~1((u*#kLrH4 zZs5eg@ppLhzuo`58)f5~O?emxHI!JU@{WQB82di<&>?J$E#A z?Jj3LK05jtrA3@_i-tfv8ui630atTRkmA6W4`?H1XXV~vSy<*V=w20)q0BqZ(0;Dq1oA@lY8}bPnbrf>3Tq3~j&!aD5Z33#R{XEA5 zbLD@7|0aE%ecpeOh#u9TD6nbY;Z2oAHcJipE1jLsA3asw^;0`K;DfB}))@yA##2oo zfFq@#;xZ04P(-<~KXj#O^xR&n-KfC1@*lV_85oKriSDDG>)2$1g2NYmy|AY^JL)@3 zODJfEY(vSalylS{ap=sH#WPFdPO|%aEPTl&CWfB?F*d0^S=h@{0!bzDTp=me9J>G? z)3)h+*n^<#0e|%xY)$(oy^6Ak*G8{nG$O(E8FLTdn;=>$utoAJ_fZT%xO+j9qm%;F zS1DKmLMh;5IW5E$iequK-<6TxS^goD?ki{e`;MloxI04C@4z=ziRBy^M1g@GR6PQ^ zh~FH%L=k%7Oj0f|tO}@k9DQUemzL6#p3Pwy!5*51(kSPb^bqt*u4AzI(ItJ_d$nw= zunBK)uy1fObid&3nFvpiGRT*C+lBD*-HuU17&7yQN>ef1t16_!Y3w}Nf}igi=eib( z>W`pytHL*ay%o$@LyAseFDP)0`JXAKaLQZ7*<~ye?m={tBZBW!B_X0#T7^WHSbzYc zeGk7wntID+E6h6P%?@6?cr=RU<~}|`;nPq}n23u-ix2KZwd;-D!1_pA@=#hnQ|`jO zyv3gIaAWZh&1C5qbq;I9#Y8}K?x^m%eBgq=u`|ShZJ~tg@P22CoPO2SNeR;{Wkok~ z5k@?6KXQ~@@V->Ga;}5k^ttXDjmBLU$j4#B9)v{b4-OUoo@fclc4h6a%S|FE1lUJY zO4C+=njvGSU^!(AE8^&E{J*?`uqyWTWZB2Do~tfXJ_wZwKKA5%xPR(JT-|} z;ciA}XT9rXEA5){GM$|@EYfcLXw(5X{K=-&tn-B6<4QztEzZCUuZ4jw0AfiIc=TU;dm9?zq=}?nwvt(8$P8 zm{;nkd!_6q^wscI^SuNzE%H$;qs--K0Gi;c^CXaw ze+3j9IR*Y{Gkkbd1eSN;JR zVySPC!4!U%p+9r!F;Cv~cHlg~dqScjs%=muxuUe$OZLi3C62i0FbNXc(@9{^%Naz% zaPS}=Jc!-SnS0e4jt|REYm|dCA%uBuc1J1xVf6|_gsW&vB{y8y{s!|Clu#s247DCl zNLx@(adqm<@gTJd{8A4HWIZLlC*{?hKYi+`@5cRjf?_)1&hjej8y`51qrytw{8`cE zJ=hYdo+)u-HGhO~Q=TGj(>-QT4muuWb9kB_j*n6zrYP6y-sHuLlc~9xg*mUktRkyK z=FguYG#{oYBt~Ew4}%&XMCN^Yy?h65bD)xa^IuGTap{ZK`+RJ8V9r(yY8KCA9)(&- zh7_!kpkC;^MPZ`Ny(IM;(}nBlT{1W_%G{kJHEY?iQEr#5C~9gpB+1FmA*F-HK4W`S zlGB!U1dDPWjKE?|;z?oSVLB5Eq95}b%k7$GsyR?H%t?fH zfzaWO7=|Lpg5uuTkrcQgkicstzzk$dY;pZtnY$dy1$@xnT)9mnNqK7_mB8IdC^Y2O z?~`{Kx5~E|fsv>rbS-7Sf7dFJ8AY?$^Z4UUTky}&$&n!CV>vKSE#DFUy^dIUzmj7( zO-F|)Gf2wb@Hnuh(Kvz<)&GvVzf+e#@e?Ob9{;gpfBfIB@n8Mx-j~ZpwR+cU?eFUjF~?v9A17(<`%f)0 z;pfkIaAIg0iypF`QhMuGadw8n9VyUc%S zPyJPN^0d+bGG1F*467Z3-#F9R8DfWV0i)E$HL~@PWi1U1FRO(#HOxm~zVPy}yio*U z9*2Y=XQ7b1>9}yZ7Phl_%zc?N84hSFPnFQJCexI{;KiJGqAbGIj;^=5yUv7)p>b-Q zPM8?-583P4?QMdURy@X^ITtRp`EwSY#<_(rTL4f_0(|}|>5|4}Tm;Tz5q@TVGqZqB zOA#9HZaMCDd-s(a=R;3m6*X`ve>Kyx%tUZBtr96+Lzh-@2ap5!&+*^#7%Kn-tshe{ zn2)ojk7_z_k)p?dm6v0IJ73%>7%6EACoupeox{kCg@;^Wbpm6`Kf}rT$fQX1=T@-4 zSA4JX)^2%N^P6}xgsj?x2Vk&?(XbGQS=|+~Y78B!8v4jMJPJ56v;bC1d2*%jM=q9f z8v(LT)#MYyUaV~NsEMuT&-EZ+4+XN^Psa!y+EP0rw|qA(LR3e{En&P;4!dGMienLo zMh1-v!T}uUmfpny68<*j%K6w9`R)~Wvf73~eSuG?*h-cDT`CW0x_Z*^4~H+uAs~bX zIIYALZ4aCIfd_>f?&nMjc*Z>@FI-g{(g38BIKZT7JI~3|E_eY_2y!gcjdxC$Rd%$a z`<*k1?!R^Tf=lfkaRRpviL`~K*Dr8`RP_T}<#KXi&RPr55|2`BG z@OnTJfqZA7UeFsKuq7nNDR#-bpibtme*H;$8u_Se#-6Sn=0i`{v)jp66c3@k0L~eG z2tda@IZJfSYh;5;ozCV<58VqlviV)Cdc8+;v#_zrp4>_=Qacu`kgkL=SH0j}DXS!D z=a@%M;JKr|bX!DY;75nTkwDJk*Y*s|bZ5r1jcN>ayK$(WY)~^GcLgE=2}G;+ISMq2_i9dmUQK5=(wp|s;&|D7!Tz{j03_oQNW>EXx%>CJ9qi1Cm|e}>htYq> zO{u((T6TwHBhd?J^h5ng72e}8SwX$V5N3hh;!vgtvf{N6%9M)fP3$B&Kioa^M#>l5 z0y^7yv8HN|TR>u0_{_aBOU4c}G7TaNFXxKOQMp6Oi496HY)S2|Fmk`{@G1V*!6KrB ztBb~y9ln~Jgpj?EpCh{rJ!_6*Q1*OEoHqiW6;tR8*;VhWWz|l_Vt9knjYomNZrpLu zlVK-s)v{;QTCoSuT*7Zlnh9VP;!h?YgXG`aOHpMW<07Yqn7rkRuZSz$BH}s-RF+5I zWgHI6OS&V+{^+S)>*^kyYg=btkvVWhej~Fiv2r0e=p-2UfBu5$sFZZ~6wxC*g`r zv!1w9z*34y14d^994iMP!T-rexF?_|;NsV*xPl_;<;zxPwfmh@XXAaLissnx2t`+P zA{-p^ZozB*0vq9Gb_F*6X9X{Rkhy{lpdX^9@n#mShzJ9`PddQNGyu!xc%sk}&;eM4 z@&&VAaA_!&j;u`G8^mlL%{s@KZ|VXbRAdeaT@7 zUnHz*uXc33nd(b~AKpV0Uoi?P-!!?p#~F5C`GtIg_J~}<=E&lQ)Ay*n2oQ5qd4TRL zBgT*FhJ)Dl2E-XVcqsh^nqMI};O{}UHvZKGHYABkyq@OD9hz>|FjhPPLNEh<)YWX= zI)AYy!`1D31mP3vhWa{pMG|SH_=z^bknHr`agqq&wc}tEw#~b(cj* zWON$lD`j4B!%O)$?~Z z{zBvD8op4!Quq7nE}VGn_)j1Em&abKw!uH^vG@71@n78aI>SvK=vxwF5SxXbjNg+0 z#F^o}(mNK&b4l+MOF*OynWI3eFR1x z`VSiRPLb$5nx70}GLzAR^$tSjvzpn)eYU!?pmY4hkhgBF&a^ zSHuDAtlhLl!*Gd{ljVn$nfG3Hsf5aP5be;4C`CUvfT%G}82sb}Z}B0;*T-rT-6Z8S$KSo^i#>-ZTvfJw!I6D?1 z{ultMTe0uK^;UIPA3)`YE&!&$Ib+Z-qhRJXqtFNve;_{>p|-<`%W{?yx0$>}phtQg zbTbTaD>F%I8)&fn=FU7$5-B?axZNK`Qv;x~id3g$mZJ-+h*%hao-bc>id$!Y_r)iS z9jDS~dfk2T>ns?#JJCPVZ24*j4kNw?<&A#~vFZl|w=hlAJ)cxbSFUdoE}zZy(xN$3 zAt~6v{vjkq;XRZlZR zP41h)S{K|JA0nI>D3LmM4tOzq?asI90+mDZ2CfH|jpH%me(5RG^nw#YGnKrFTIWMC zsnUhmS>UK;2T-Y=U8Mr3xwX7%-U0@gOpBReGfh0gDrBa-ZW0AU9h1Won98OY9oe>3 zS8T2riD|Ya!)J2YiyLSp+v(TSGT+$&+Nv%!MWeQiKX>>GsfHy9MGFK|>D~L7K6Ckd z5<2u)1*`@ZUYJunQ|&IbkoOGv{BkpCaQ_UirjXpx@}woUn40LILbJ} zH-RWsys^%PWjk%IlGaaYEeeX^Zrs2xkVh2bo&*`1EvK0|cd2hxOgCW>1 z27lyPA2zW$5sFX4uhy}jjk!c-bZ_<78d65l!@8Q zd6!pL@w_wZN^1tO=Y&Xd4%C)5G$*~>H^RQm<`n->6>o81pwBi!`Kvrbc!LY!8EH(a#<%BZ{Th`aZj|M85iKH{{zlo# zoA#`Ao~x;b>uzf-7LQvnwK6n2Dg8|kuMukBK(P0ng`^`NO-tVoqNS8ei(xbK;1_@L zPyfli;+^bfjs)r(a3O8~;!m!oz30l~nxC%X#rS+8R6-98lXL3sR0XQ9-CYUFX;T+D zj?$3$Fln6ZE(Qw_N#`=5`C;>*;4x?FuA|#$fL1XLR=+Sf(@5=R%iau}$2cMluu(bl z7So%`t77K0hTZ#!u#IVi0aV-6p+#dFiq=ItI!dlTt&5(q1%y z0tKC^@7Ly9#ds2hXs4}-^>p|KLK(Cyi|NryH zPK};?mzsN#w*A(>*4p3lX7h)Ue?c{pKit&axYzJ{{co@PT_=9^#MJR0KlbyVW%2(T zejN~i7$9(HHN*yM@;hwZCg7KT0)tuwhi9u*5=ZwF?NXZv8)!!a;B00+3wRBSyqEMP zv^h8;Hc3Re3HdE))Ek$g!J|3WpC})}4&KZ>07ZkhJWg!?voOyijva6X4Q8(M)OPp3>Kf%St2l*aC304Op>9wCnWeB~3q0x9e z{GdL-FI{C#YV=r;a6uE&FcLvux|nY|2SU8a6YM+x81uDv1RSjCMEn^jiK)d59DzUiJnv5}9-!MRoj)zZfxY~;B3v<0Yhng?bDF3>i2EYJxk9ackrplFI2Ctv4r zDf!vW{;zs(w^J`AyyM(ydePpR}T&U~=XzsHEePbaYjB)A+ z#DHlX4q8Ank|q% zX$CC9-w{&ZxJ<-pb3+!w25Log>awEbMH#s}K2$@gnRr3CfX1>_gc$HTPQ!^6c3hA( z0+pODz*om{&!A*s1zpDpgH+$cfL>!*{0~26RxD{+dji>Rks(&BKx4pEbBUz85{l+J zEo+*bT?n^ejPSq3b~B;c6J#1G1X27@=-#GY&+IIMphWIQCt|VG zCW&|8&SJ5l)FgHQ5Kjz}TUsNUV8HgF8;xBs@_l8N20AeVJVJFV&$ZJs1I7n5#hrDa zY5prk>`P?n6Y;sPEb2zim8L&yqFX_mSeHGtA=$eRA zp~TH{#Z(8A5O7RNu_2pXsbJhvNemb9y*4|y5KZG4AeNPvD|2PzrBbFunqhi-S;5*% z1k5z*-LD)ooGx#LpCc< zJGEBM7vURZl_ZI<;F`Gu^WaKmUaa7d=VZX4FUVAm?Gc|00Vom=0typkGStr0EMFev z);bvviNYQn=q5zvbaeAJIX5c{lnp~%54ux0EP0F@-%r97y@;MghRg|YDt?L>fz0r#0ij%nWJ6GB8|17Ql| zL}u{jEMi2K%g6#K49p3-%bZhI4n4pfmC;$dk|ANdr?sD4Q2w@&9Lz<&K?N zJ^9JWv+b|9{fV|8Zv71{zua=J`86unFEqW`_)CqO4L{c~Q2#>R`zQY5iJ9Yn@Awb$ zf&W|odA;R5Nu(YxPM%AxM2bQ7F+L8l^C1YPwo*#QgNzVXA84EWJ>;hn+(e1UEp#re z=``NC6fR}+!J)-y1~KCTi?Ne0syL**rLq_!ItH`PPtT@m zmZA-kLOlK;j}#7sK#a8L{7QahWe<_2t*x88ZTvdUWwgo}xyFES>~pKk8CqNi#$#8q zB6gG_OxZ4x+EAC|zZR_goS4Ie>~Iu4E?Rr=4y$#xvND%%~(vyu&S?=#Wc~; zHGTSYND7UvO1K|0rcxHOb8#>~u~UKppXR+Zb4jI~gowGsP*L#j*rE4U#q|TURGNWR6f34hcJbLa~Jar$UQ+eOLtoZTng;zIz?u<7|<=~ zBdlL)q7{KJXkwFJo9^tXjiKpkM#dB(Reh5Ob((G#j>gK>gFFTK_~siemr3 zE^#yi97CB$q+6$zDaEGovSk%s=uBe-_;wH0YJQblCLaPm_bnJvCH78UVQ!Ye;?VbbsIJP{BZ0eE2hg41$(m#RK#U zWIq53@_1M`%(s(N7Q4TedE_%ep^@UG+XH5Ud4+dRaG`6!WJ+?}j^s7D4goWMAHsaMD<1G|FW37f&T7rqSZ@ltwKHErPh@tY{iw7@It$E*VI?$iP(y_P(g`5nw?BK7K2ke!K8CtWum^2@Q<*%PI2Eyr#bPA5QM?55 z_t=>C!{xj-&OqrRkeSeXMRN9pr70dYGWl8k5O^SPrYH79Rwm`ZOK(*#&^Q`z-B*qg!CyT9@I?YXyji)E|Ru;i7(CxjXYfGkGC z+*<)Sp$4_U@KAW{29dp)&Pt2a9pQPPRDK-GH^PWQ;}z!m*0Kcv8oUwM!Vq*tDmLX- zVI@||k!tK4+I_HS08M-r+?M<*^YmV-))4{VQNN$(=!6_TT5!IgF<4Cin)< zUJ~TXn|5BkL?NaSv8rK`T4XMW>hmgqSSyTc#)amUjhUm)S~9hrQT70;7!Wl~<5hz0 z*y$>$z=Z6DMjtgHW3aA&KLXMPrIyz-BzVDrpGTMUMddD1kK5uv1(m5{DnKuhbhMI@ zCnsy32g^t1*;jE;mN?sS$O7dM(krJxp)<|{Ihw?vjgj?Z1s4)t?A+O&TKB##0ihQV zJRVVZeP@GQFRBE@!RO14u_2xB{Gzs#{1A8^=0F5sp&{smonW02LSd|P++zar(IxPB z(G)Z{lzxU19k=WZysFby5LJ0Ub0n=V>6(coaKa(gP>8)Rl(Q0%-QLm@x7o-9zD6CP z2Znp7ha8YMDHz=2CV1@&ujt~M9$fY<&oZjk;NxW#j|Twby-JpnOvSs zEzK<6U0R@DPTgJdo+_)lLg!Mv=j_GWn1p5-@4{Gk7${sGR8?lVb@%Eky%r86yi?l3 zjzpr*5s$rLOhasoUGvy$e-O~j?3(2By2`4P&^h?V*>eLS>N;Z@f>EFnus)&-3s5P; zj4=HM^?13V5G-sFs#P$Ay$UkIi5axz4WS*9w{QUL;p$_fvc-0d&Z@AKc_@WY>x9y0 zD+EY@oD!PLar)iYtxb4M=LXK!3VATGBtC=c2+@vgT_Wgv=K*#{XOMs*SXAzZa5$7u z!IqGy=iCKNv&k#Cu#GnYF(SaJ2pV|GqG3d*{0rIOx#oZ&iZPKbstY*Ed&9CiYqu7FrV1qa}L85oT^*Adc9ga)eq| zq;b!Rjv}lb~k_@>)q8Tp6XnY(Q2&ihiI0MlF#=!dRO@#ZvTaA$zS-+u9`zr<9+=@ z=deF#xC-!_NvyJ#g*>0Z|As}3+=<3|lh+nro|>KJ-|3q(vp4l1H8*=l{f*hVIcNW0 zId=2lXPM7{h;a)w{QUQkU`)Oj+?KT*?qNrG2R2kxO}k)6_rN=Qi_u;D0mF zb^&!%2$z*jfiV#M<}ff6ouVoDBt(yf{MgQC2vyZU9n!?q@m($pOf$`CoZkugiD@$C zs62)@gRm!VX;;i1zZof0=l4ZELX@brkJ6)IHw?cCz^x;ING+O5{CyR31;8bW+eUUB zlr;|gKqYs?N#>&Bu;Jh^y3^#ekI_WX?Lx@SVuGV(gSZMB(E_S&DLRQIChnH2*|jLB z_M&%uzs=;#TDYQ<0B?)0ARHiAwXhI~wx}Ixzmldnbop5Yz0qq(A+l&WizK~;$#12p zsnk6LJ@(LOZogGy7??fN5far!CJc{KjmF{CXjNt0C$OY}3>07z( zNy|Qb99kEUI+fHfD94QRT90p_1LwW|ebw6N z7}!X}`$J_avj@?YG@9Dks|0xivs6f51GY^PVS-n{nQxX;PZ$Z&$#@sZ3*sK@9ghEx z2N0T|huu=_NzY3X6a6GTg`19llki0e4coi1Z}m4`^4j|^4#L!Pgj7Ozo56;rwubC} z)*b4n4?kDpq8R3i&ys6C9h3tk;g0yz`yiUA5`}lcu^@qhYawkV#XL zmqqW{na(vK^u7w)`pO}MR7A&tCvz|zo?gX~95amOm`WJLIngA5D*@pzk*;uGsxF?4 z5_+ST*l*CV#hrDrqZW)~!v=@+nJFO$hLx1PfIraonE2|s7Zy|&=L!_hrF&5*?AA(b zf9(-h&n;g-qc-ZsMX~9m3(KYA209>#CK!BVjqcZ+>h% zKIT~Z{2c`ulVfZ(d1UtV%;Hj29L#6;UDP%~N}=yjq^k(=a`1uy9T3g_vp7v9s6*Z# zyi)l9SHKwsHP8?5tFQ;QO#)5Q8>6sSwFB!pbpM?IwCsyB2RAq%@bj^2%#{B| zi+iD}S}2Sf1Im+=(Zg&jn8zv_9!latff+G{(4A&66lT)!;&{*OpU{3urATkBP3_Zy zfV}9lUB6nv@+~flDW|&VHb@vMyi!vn{d#sMmwx~|WGOm}ix}%Fg{vHB?7gUQ|%=8jRq5$&Pn8wp%tYtAEt8gkLuOT@_ zy?V>QEE4``z6jfaX|c6uq8BL4-j7CzCQu?QMTnuWO9+T3OPQ==V~NB07K4~83banj$d z>_ozQ<>}L>PlbwuVGi5Fiq#>3;I9#d{n=N#?>U^>TT=UhMM#E$_e9Mj|CdZITj40B zSyEM8C!8cKL8Z%DM1>|f zhT3cghHqz0p=&S>O%{g}3lV5ZX$$+76{aN(m;TksX@5~e6D|$WKjz%~DYhw=loi{x z?qYCu%n?gnRcTDpsE{3L@JYCb(+D*|s)!fwmQ{lSr$Kv2kw!BLV?&AYG2`WOPJ;># ztw^Aky{=uvO;nbk(t<>&VLlO=TH2)alP0_Uiw2o<-W(kZmgbQyZz_#DtAYsSfdgA47MK8XY6!4S+yT=G4CE6qoPN5} zA!MbG>)hKH2@5;^c&PJDVvJFKA)VP5P0vvyFHo<7r6dy?C4$Ht$)wq7L?pKzk@h_Fdi6q5eV&(;yT-_#>dsEx!SE{NcH%twT+^_gb(|y7zgJZtx4>AnTJT{T4@e9lHr4kbJV`oA zbT}^kNnB(YeS1-t6gM(7u|(lRUu~VRL^+C&S2WpJ5#ICISYl{xKPpMqv(#}q#3s@B z<9{@l4*%R*C-m>5rl;jRx!&x6>Uv>m~~ zu(zm?fv91xnZTkTssN3QS8urs;}~ov*hDL&Ekc*Sk!IZyxw0Y#un6GtT~7l*z+t#W zOjpIu#m<%3w^|=bue+zVtlHRfHemdM;n9Z!4AG?AFVf10WjSq!%HAd~Bn{BG5J$SD zvfl9;xU_Po^^Oj4H2AF4X2rhkAugV@B$&K^p z`$CT?pvy!TLSlOdqn2&yABflz6`x3Ieo{^oq5*h|d^FwF^lH*)!RDZaz8At10k>AU zsuwvzl@gcR;177>w3h5m-sktbG|0qPyL%=shN(Vd@-2ihgZPS%e_~Yw@O^8disBXU z+g64{b^{^+BQo5(#agY!=wG*8l`_iA6x0#V?0;UPOTF3O^@Qz8B19| zp`eBNAQ*0^?ku~EL_?kJcrek_bZ}vhV+TTePOO=A4E+KOiij%3{8rKhjK`HdjJeES zX}{AZ?xoNg6p~MA?E4fNpa_7<$&|gz6u|WD<|cED+l;%>v2IE9mx);c_`ngo&av*6m(M1tq8_C*C~fGn7`kq2)$5KmLLjRZ zNMdz=*O_z9eNqz4|IH;~PB_^2v;?H!cS#CT3x|cfa|qXGjLiG}&vCOw1TxTBd+ce- zhhrlXz6d&$X2Z9WKqFQnMy^Z>aH1+_vuwdu?d=tgLk>YZMN*6k%R4<=+!DzjA8`(L z_wT{8!TY?yeXEQS_fDPfKNsq59~puY#LCAX(S=>=u#<&F0zKI3@Q+}e1OnUW@TliR zbY__%Cn|u5TqGS{kSpS6xpcDk2A?o<4Xb~Vj0jo$O8{IRWz0D+3G>v-#&xNFI?tp- z?Ch%yMrZ7+Pg)6avO$Atb`^gnu~C;HQL$U^?Frr~y^cYl-f(jn)(!5mUZJibWD+A> zIUdv)4+!=7RWV+o%y6xw;~ugCA^r~$$5q<~p~<1jeX)fGHYRTnUv8te$N>(3Th6em zyuPLqP@}N01hq-xwA?FF zKOP{z0`I*77x0Y3@@Xc|WWS65|C(c`?w$OzC(pEBZTs=oztZwg zTQbeRqxqT0n^gZh)A(x}{s`#*59){Oetq3DCtf-J$??%+zoyy&@c;C&cX?mTJh-~g zb@pGZ^@0o!17eNife8`GRqg|~syL_R+YtkpfIM1O_e6tlr5@1ak7kDoAekbh1tm61 zQRQH;wkGj!6Z1x=R<%Uf*icPKyX4A3sSQc zj}*Q#ShJJ5)kdqJ_QV$i*kSc!0UfSoMNMrea`y;T!z@+0heklqZ_{ho|FX{2flSw# z5F%m?49ZDo+#g-RfsvuTSrn)34oA{Th2&IEZ-^KiEGzjYic_SoWwuHM#FEYytm-vL zQJ|b8V3hW*?2E0Y<8F5B++eM|;DD#>=E#^KERRUmO3*xIg%+OWiz%}(>(pSO#34ys zHM%Z9A%5^+GQYC7Lzr-j>@o~CG&wVuDbNOl89MGqIE%B3tbdSL_+<09UFk2<(3sl= zZtvC7M(G~^M_!!jbL|> zOS6l>SIRiuVl$Msk~bxYIKh2=LAmTaz094h6f3i5f_36vFYY@IoB6Y6Lhv&-(qSrM z9|1#DuPqh`BuN&dprq@A^ak88>@mutZBle|DStnko_n41@^yl;OCTj)M@EBf5Iaq0 z>?>y}O;ID6^|Pat+VXFRKjNd6Cj)nt?Xrq@I0ckcP|cCc@#KpvYVfB(0zox{HqCF} zL~v@M!vvW3>h{OA?N58``jG5IjUq8NGGq48B?Gx z5F6dyQb&Ka& z_OAe#S<5;rw2JYW_>nP5<4V4|ywuB|=#z+j;&yTV5B<^v8tcS}H@=@>it#F~03!_b zX@kav8}<+wz;w2G=BGVpjN~= zb$^GT&Kh_>uXA5zUOKzIj;?bdxlK0Ep~Q&qxjP*E2x0{RY2IO*=qYyff$5tmGDMb`wO%a>qXQXqGd+&%cu1Jp#9D;D`_OJW z*wg{E=BhGl);QTvG63Y?M%(T#Qapm{p1=XS;~Ig;IkYd1#dX3#m5j zy|QlwUb@~nM;Wis`wMP~z`ImV|9sSBK-*x%b7_%c_-0Jtu*ZMMPb=$`-g!vuZTAZ} zYBcq1SRn!IgJds~b0&uhNeemhz+L1()~?&>DCtZzcL;}DbQU+IE@p$v$L+(({Q&(Y zLjaQ$BP!E!P(m~XFoG(!tlf+ImvvSqw>o13wH^-5Hi}1ZL?2PU4t!@Ec}fG~f(dHw z25z*9O&0BS)E`rMLAH96FxFCsnHp&@iEQGFLH{6zjXTgHSi8b5PLly&FpQa?jCLzw z13*(8(CSEe&-e754n5lmy$%OOK97v|&@$I)28IbOkI9CN9uq*^#zm^>UG z^6{{Oc>dv~VINp8s*#M&rbRF7#ZSSij2;v+Rllm7gVA1d`#s_`Lv``X%n~zK%*vhZ zGvw)^!#qkZvX{8_lC>_EaXa#2etu{+z-Q45gJ z5`y?92$vqYB?m|HA%%-8lm}I`XM3wGkPtVgCU_CD7E!O+mJtBi_RADCiEcwauvX$9 zxfW9*Nrt_F({bMRiuZ&2UvxsIm9o8|M>cMGFcL?Ej3(dKq6WL6J!#}1+ORIdrdxA0 zU&Q??yIH(%x)-sL@kElNTKi#DF|D9D?{z4%pvIn^b=zYW7jeJVM~`=&(vBgvB6A7f z&9FrbDj^eh=2jNP)}9V}M{?toMqCIM>m{o&hyW>?G9U>oDPn)H7mA|XKqQq4s6`fo zSrj{6smP*O%jcZ^zkKY}#>u~QvcLVk_TIKX(Dqd8TP;7+{1=*Eiu^>=&o_Ok@sBqA z^M3D$7wKt zXnbnP?!(<|HhOz^|E_k^;9KF~1LlLmH33Y%#=4tz2O6thh)JAWf#U9KH0F|B1-K>U z0~rv<=}f|WbZH?q$wn5%5gNp){?2nD8U(*h@!z;*=6}|mV6!2b7=k#Kd_|{{0$h}7 ziw=bcQxnk(P@A2FtSLr^dz058H9#Yr&y#4jfxm*&FXI=ETcxnxH3vYN%VWcPbNfEE z(bvwM?GJGWX~^X8hk59$1ga~F=F8RS-O|7^+82mYmW@sY%ZHM~5q|>H%GzPaA2EDv zK1>b;AHNVEm4PjIU$GwqHEJF{Q)DaJ(>nFr@KnHgv`qvg&9!G%HfCOhLw(WJv0W>SSEdFD`zA$zTWyXkbZX0>o17x+x=7RywDuZeU53AQKTrW3 z+Y(mAB+OiU#9r>1R*9>K!Qb3NQ@F~(ZBWyv_Lo?m9o^|^oJOJBl^PvGmf^*B0eM|1 zN>T^3W(q~CLNh}uhzXpzBq28;0|r#K-gyX-qg#^V?JQUyuw!P&VcsjRYyXzUlzQtl zNvEM>f(dryvqM+CujJ2?xq^@!zSL_9t^FaCBj=3i0#3)_rU_@E!i_LV-doH*dc>Ky zj(IkfUsZW3v<^KDqyrw$*@F7rQc08`97{B_m|S=B(n4s6iDkEltUD!wu7x zacj^tNKp$iP1 zS1Iz?3KnOzxUb`ynBKgvHQ{d~U8ZC3ur=jE@qA2+nju@3>RuB{ISF7+lRF*8L!k9sf>R!3(*&ps3j(=kiL;8m_RK})5;04r-eWT z;9W3Y(&#J^FY2lv-@nNyI%B)xUW*Bl*^CE-+?7>OiN#a`bUR!j@<>ootWdIQq#6s< zuO!mm`Rv0?p_knzetj&N7*W1lSj=147Znlwpt18kAt5a8qj+7$!tp;(GWb!y zqz?INrf;xUbhe7jM~JKq*dB7;0T!DdR@ZvQgk>!%7Ztk^ED*D({zmpuF0Cx4*&Mbc zq~nwM?HSTZ@F2qih7RgY?5k!FXI6WEe+avhE(vm_@i6~ZmG&^pal@1zs=O|SLt^_F zZ(D+F1Dj!ssh*kXQ1({r0(KHJy@Z_GaAA^sdh_6~YuGRXV^m(M{GnIg+*d`R&cWL~ zVHI>WbX+eZ74rNV$FWwa`~=3N<*!am+5EsX)g#I5$Z?e74VO8{DGGKqrzN>Dm)@bI zY0i6jUsZxS2NPc1*vw?D+#F_CkHLQvxMypApF7X5k_Ui^gFxThq!6w;m*=z&B1N!f zGT)(Wcgi_Mg)k2*hkz#Vh6MYuqjCKMNmi>B!=J>e07}66)O}oHR^?O- z))d7uboQom^Q!n>%%nCp(sGobxvWB10%SymhS+<9;kqhA8XpF@9Wu#>_nvgTDy*!g zV^xg0(35E95&tTt>hKXj%Zp@AnIfVLZ`exr0#c9BMA@u~~FYZs6J@k}Y0GUsO&L<$eiKS>YA0eSeCd z?MS^5TI@j=3yIZm*jlf;4OQ?bS87nls+E92OC{JqJ}O5xG(W%a(>SLq6*lnk zQ}ihf%u*!A0v6_X$*7ssJfz+{cRoxZ(}0GD#==v54-H8PrGaB$DQDKcjA&ev+--() zv_y@3^hV44s-sx-%NN|20-3_HE#PeCQQ*J@Y-06t5?(_`S6GCKky4%_loF}Rd;tE3 z;K7mS*ZsC=vepoDA;CZh3o*cOWrlKGXxXMwAMUYksK=MtSxP^oR51bq@W&RqcgA~q z-^$_KeIs05U|b}|2L6d7D%X<^YD8x+m(HJ3sYrxc1$>zVdQEE}-Q)PCYRqx-5yRmw};CcWhOzA$e(BcKjQ5O6qh2M!#g>}}^6Lhu)& zIAK}3tUxPlJJPRx?ha9{mg<210n(Vk+5xgl1~Z}%&kkj(iy%^o$6{zuG^di(mJ(bH zQG{`VyK57T$!XWhW=ZsbU=uXU%=rp#M$JI{i+*u3J{C#s&XFVm5h0f7r$H}8*faFN7#wHKElhMJJV#`)6*-o-7n~^k@ zCOV8(qp>~CF3Fqakc9;ji9;x-aL%$ELR%oE6jIoQP)=!=(f}<4O52pSG(D2G@aymM zy`OhRBhBkI*Y#_!tAG5mn>-`UNP6Dqa38<-_cltW!@=Q$%sNVx(2$OnbjsE45wl#$ z3Q@}fE3ZacFh57DgH_5t3dK*+(R7)v7nIpxzGw66iHr2z3t84j@{802W$1GXfEQxc zmqhAx@aiH4dIY|WOV|&3)>d+lC2>1j&d$K?Q5LgVmhO5wektFccsxCqo)5z^08Q~B z(tD5=&>pBS(!tY!Di0lfIC9nc=t*YKfr_nmmo5ZZoHVvDyoD7S^s#p~fA%`OcdO!? zTu)~Oa$~WdPO+dO@WXcq`6xbEPDTKz3&4_+N(atQ(&4EW^F>&^3N_(Eh@5hKIa-JE>2pP8=dy*cp zIQ5hChf?hBhn~xdLgE)3{9y_O#8Si2Z8Kt4F z$jP}Lm#?T?DkBL-{K>-n!tfa)OTa-uN_gOoRiyX%eJ_2bj$!MwPw-FVE|c#DvJqF*0aP*Dy^U{oFL2RFr3T#Uky zlM@gsg(O>K)pfpDRst}&Q{!A(1wlY@;SuM?3OU{Yypee6E9_x{OxxkZ(MpmyhpR;| z3v%q(*k$|bF0jg+bXg%*L&=4J0$t=3XHdR9Jg`jihO$NO+e&uZ^AHCl9>5cmSR}Kz zh)jgiW(MM%^K^Piouehx9FHiXN7iOxWJyKP2yAsaYB?R;19M5_BY?3R?kW*xRRkgR zFbdP^4nsG<31hZwS3c+JaG9R<$soMNUsn4<0S4%}NPl}is&MlrWN#bPxwEgAmSFSB z6<&H$7iBOV?R}H(7{*PAlGg<6i-_$Krq}Kd?QnrY^2f*2&K*CF&&5XxcXKx_pqKU;t0$DrGLa_pM$LM=6N9?3F3OQI>Pq8Z1(kM*P_=6{R{5hY5e6y=J`NBE zU>}sE4eGXPI1Md>^DV7ym86!M_yADbFsiplf0vyHL!NLNR~9hJbOT&G6D|+1z1(vH zpeB+z0`?12nFS4xlH*=e+xZ!kxgz-sY1T31R_dnBRHa#_=@6~yi>ij(6~WQ1VBgNiDP^8i}j|hEQUTs9HCpTm-}u3f-cR#}kPMQ{LgX@N#YW|mo1CG$JXrhnDeeqBna zF7AaYCUR5w(?e$XeW6XU#5Bhf(JH}K?61Olq@13kcPor?dAi%et-?kR)3uA|9|~@4 ziPMObW)X&nx$FcK zRQ&#Awm>uvqKI66IYV}_0OJQJi_O#&(uGh|h5|B?9|3*x&n9{wi(LFJN*f~W-vcgs&y_uN62(psB4w~jnZLzEeqnoIFzmi{ixweyTs<&bvt0} zZO^e#A_6?CE!0INK zoWk9SLP}EMBvp3yXt&vYC;5(&H@deA@o*Fuv47z2P| zYF`#N;KZH%CkZP6IY~j(HP`GGMM9u*&{s-ofGBej4*O!~+dHpfy{j*YSm|Kfd@Hff zihHQ_>V+EIgkUMuG|Q=5R5smWNwD>$Gb)!VCRoA%ldLR*v(WO7AT^t$yg$_pYHdU= zx0(c5^bYkP%yPN_ z53`uXm<<*^@K*rXqdjBl)Zt%6%`XB@uKYr%#-SjJ|^5q4ens zWP}6}uyh8_`W|Letr%^pBDt-j1%(snm`-$lVsEvZs$5t160>$@Hq+PeB(Cu1NsFv0 z=z8wznJGXP@K}SKaE>HTc$v6E>P9MdA(dUu@Tp=qzV^gLiAMe6OQcmW^v%Lb5u}qj zBUZYrGE@z9q)M){+#P<+eAtP%ADB zVNvo4@L`IT6+9+-APrj!8>^kuqUcuu72)aUSSof{zfa%XT@xR^k))#}L|RxO>*066 zo2n(#!PB`8dV@x88Vr5IwrLT8zcL?!yITG%myH4yRn5Jp967_r5my zx>GxxjHr*vMO?5M^zw#!PlU_6JL$Nl!T%@yDBqo)}B($Q^!Fx`Kc%nq%UEZ&Ud)7|r&UHK35(QWgMlI)f zEjcGwLBI&nYn=_TE?DI$Gxa#I*bz|v@Ca5eYG9*T<5Ej+a1N$3i>e#N*d<<*!+mfs zx{EJpY3RNq|Np*yH}^F^(R8ix#fG12sH?wN_nWZ)U-o{?yRY`KnxC!duKvV_<$H^T}>qX;ISeTh`G?0TVLESSI>YI>W_T}m%nCU{a@ zC)c@)JMY--H$N$oi754+$*xm%LzXj>sK{J|bs+1*OmI;}?s%MS+R}%~dxT|^BPl+j#|*l*T4mt?4QrugcZFcl(~<1DGrzoXkk}zt=?YuP zWyVx6g#f7zhzL1wv;dM@=8io8F|CLT{uEtqoqjy+zQhN+VwY#eKG<*n<&5hK4nIS1 z_tuwaN0NYnqWZ~d&IA4ZgLlMH?K0DFIzrp5!uPTpd0riw`UF~DXiv!Eu^jG`*>pjq z9Kp<1i`MaUuzaYsE&7x|Hd+imRS3ZInKj~n)6i3~dnb!0MC)i7aAX74m*dOH8@DU{ zdMi5smnF|6KbfY@Fu6Aig$bYh%+-lMaIY{(H+;;+(UTKN&N zpb?c{Al9~Op)4qKRKKQ7@tQ(3!3VdDH3`P@PMX0)o>u|ELM-eaiCw1CFYcwQF^#L# zIesghVdRq+oxgd$h^Y~^9aX{UP#}|Q*OhUiT@7tz2`^||Okr=yINu2V#+I=owN4)T z$nZmv(*!YGY_C-k8|Z18hSCp|twaVrnnzL?;dEbLVk}PXR~2%s(wqUD7wteyzi#c3HH-QdY8M4|$ zLSPa#l0GGEq(AVr*>LEGRqlC8+;v#w=$6FT)F|~ZIY5e>OUj2_PvPK;wu}eq^fN6- zjz&s)?EaqKXcLl!bSk(66H#ai;R0&hIyzZ4ksu--VwQJe##ot1Zp;yXo|;$j`wI1; zBlu<9F2zi)(no>!f{v|wBw^ZC`%m;Ajk+kk@Q(F_Va2lCn08TCRw-p&^cpcAwN{dR zlAjjHPb8Jf+N4`6zhOfyd@s)=!7LC7I0;p^bv-5SI?o|FISEI|8p{`(oJr1RmkZgG zcD91Kt-IYBxZ2SXQGv}FfGi6W{7z>;cW|C6ElgX2zKRDk(<>sP=Nz`nYgNxA+BAT* z5g)q+1WB0X)J2cf7lfW>KiYOHGak1`RHtt%VUS+LQ~5Z`m1tftxTRh}V6*Ot zAB*6P&>SGG9E>8A+refDwyl-Xb2*d8=vN$R11K8u&;@7rk7b1%CrN?ua<94D+4e+{ z3>HyNJK`03uwKX3B5b?H(Vmt_l~=<(%P9GyLcopSLg*PyT7zm?=IP7f0R3>`GUW^^Cfe_u$}1may&`;c13tc))N=E zjK8=@?`Rv-PH#ezXKC_3rB5>HN~U8dp&j$zY-%0-fkDp^-e8NkWBm8gyogZNvWrvr zmx#LgWuD5q8C?w;kDWdiX$?@~FhpOmzkcrIHZF!j>(+L~jM-A?U7=Sp3fY~w>s1Ab z5qT@L++1_#9B4ctKmNCzrY2IzK=_T|Ej$MxhDRG?%Lzu|{X3Xfklpg#wK(xmVz?5F z#9sBl6B)^qx^pcios_1O)qLq=q|HDrj%4RzPHRnbwsXfq^kR`Sr06D&pSp5t^3-|f zD9TSvjN1&k!^QzNNjprT=5o>B#(t}OLs^#b6qM zjof)?3*zm93T={cbop7Om<_!)GBS#mr{D^RfF+^@zBKU>ngua^;v)JUkORbHV^`_UF zUTu1%>E)&un_g&ouIXmedec(VQ%#RIO*c(6J<>GP)YWvnDb{p<)7?#8)4s;{8{cbu zxAC3Ew;SJTe6#V5#@8EPYkalw6&ML#Yy1l|Pc=T?INdnW_(-fnoSzN`LteXRce`n&7B`h9ip*S%NwZrwX|Z`Zw5 z_h#K2b+6aGR`+V%D|Ii|y;%1`-E(y}>(=X*>Yl25yl%Q~qVAEpp}MZR<8`sR`|Iwm z^Xm5b@B8oh@A~ifZ~JfgZ~AZeuluk0ulld}FZ(b0FZj>-H~n>g$$!d!+@JO*{73vD zzso=F$Nc;KyM52!=e_T}=e_H_;l1v?=Dq5@;=Sy>=)K@Q=iT(yy(RA{ z?{RP1oA4g-hP*ECxEJ&8_wM#QZ(r^EweQuwTl-G!+qG}izFGT5?d!F#)xKK$O6|+F zFV?>@7KIn^KQ*MHE-9v zRr6-e8#S-jyjJsS%_}u8*SuKsLd|nEH*3~wmTI1=dAw%2W}@binxUGmn&UOGn)_?+ zuJLO2Rli^TUiG`x?^M5C{Z{px)o)b4Uj172tJSYmzg+!d^$XR{Ro|>$uU@Kts`~Nj z>FSBTlMs*DuvSRsVSXbp1sABlSZE-a7E+fj17ke&97Y zD_?=N;>80m9C+@)%>(NPmJU31;PC^~2PO_Ya$x8{*MZ{)Vh8R&aQ6Z4z`m;YtKO@6 zx9Xj$x2xW&db8?{s@JPtt9rHSm8zGkUaWed>ba_$RqIttRZmqtUNv1cQT5192yFk$ zJFox$SO2%HKyB4scX3Z&v+*bWpS1BO{GYJ#$Ne9-@yGlhv+*8^6c@ z9vi>g|85(<%l|GLztjIt8~>*NH*Ne5|2u4a*?-x_Z}-35#&7e#&Bkx_ztzTX@xR5! zZGYRwEq}|#m;9G(e9?c=#&7n&*~V}3zsbgL^uN)@Px+s+@f-Yau<`5tueb4&{wHmG z!GFQVuk*jo#;^6i*2b^#zsAO|_P^T3Pxzm(@p=Dw8v{SE@j3rF8=v)`wehR`ud?yu z{>N?nnEx>wpYflu@s@wf#)4n4@uq*%#vA?(8?XD?vT@O0wDFpM&BnB!wsFB< zuyNj>w{gy&voYnTY<$Xp%EpiQAF=T({jap~!~TbD{0jdoZ2XY_Ase6cpS1A_{|Or( z_aC?Ms(;nSEB+N5FZ-8mob_jIobhLDyyRc9@iG4~8>jtg8!!47ZM@)LuyM+tvhlos z-o|tOIU67KAGLAPpR{qppRn<)f7Zq`{uvv`{c#(|{4pCx{ZSi7{1F?Ie$vKA{6}m| z_z4@o-2ZYLANC)%@yq-#v+*JSAsZj`AGC4UAGUGGAF^@KAGC46AF#3C@3*nf@3XPj z@3pbV@3FDl@3yha@3Qfp+AGNXFZ@2M?f5gU^AG5K|Z?o}B{V%oguz%Rb5BMLjvDI(2 z@k{(Kv9ZN(vGIQYej5+@hitshzt6^l{y`hR*#BZ1@AdDs@r(Q~vhg1O9vkoW@3yho zZ?>_?Z?dt`Z?v(&Z?Li6ueY(zud~tjeH%UBv$58%wXw#pv9a2(w()>}z{V=S%Er6= zyKLO=@3(QEzfYt0zr6otvdw*`@ zzxV#VjsMR3cQ*c8@88<^XWpOL_;0*_W8=HtyEgu7?_b;aue^U{`2WJj zKk@&>#y|G|*v5DKcWnG4|Br0^L;nwL{OA5ZxAC9(|IEfe@c+QZ-}ist#^3XQ&&Id? zw{85V{y(+xcm3bB@t^qr#Kzz8f5*np`=7V*AN&8<#((7hBOBlH-?H(y{ol6nxBTC- z@i+b7wDC9m->~u5{a?57ANv2$#$WS)&BizVH*Ne?|5t7N75`Uk{G9(e8$auR*2Z7< zf7!-g@_)(3f8hTE8{hEXu<;lDU$pTT{9mx~@B4q>#-I0p-p0S@|2-Rj&i^?Z|E~Xc zZG7E--Nv8wf7ZsI@qfm~pZ0&+#=qnL9UK3)|F>=YTmIj&@u&Qs(&+uE_op`g3(xk4 zKIXPR-XD9mKiJ~7Ki(gCwm;q+n()@_gkLrkN2CN z?T_~xp6!qK>z?h8_YXbWAMe*Z+aJ6L+aK>&J=-7eS3KJv?{l8*kM~*6_Q(5W&-Tar zCC~Q9`v;!w4?c+PkN1n7?T_~hp6!qK_dVMm@8><+AMfvZwm;s_dA2{^-}P*N@L+6z zyr1=Kf4raZY=69;_H2K=zvJ2dcz@fo{qg>mXZz#*l;`&6HSaaspP%%8(#D_ge!|8d z_kP^QAM<|9#?N@4vGGT}AGPt*-luJR)qB;(AMt*~#vk^6*v237e#pij^nTFBAE1I= z=i&Rk@3-;$yzjH|74H=rzt{U-8^6c<9vi>g`)(V*%lj@Hztj6p8~-Mq@br7W!}|^! zU-n+M@!P#`xAEJ&Z?o}Ry>GSgTj0&p=eNCW8@IeI8(;EXvhhXlMH|1_`(_)z$@?Z7 zztQ_f8$acJ%EoW-zQM+?_rBi7PkNuU@dfV%8^6x`Ivc;%`&t{n#`_u@zuNn18$aQF z!p7&l=WPtUz{cmi=WKk|d)DRuC-yb3HhoXyuQuM-uu=c{x?iX};jeNk25WEDY*v4+ zI&t7rRsXr_zPm2(|Ni~=?VE_Q@qwtJsd%ytcU6A1?e0ayD7`zSn!7Q z0JDll?^yVd3b_o4VlW&d1edKwKq*DF6ag<5oZd1HU^N16IZ+8L)MR>wdLyA|VVqr$ zY{)Z$m2fJM+ApKHAzbGQPYp-C{>t}`=V<-!Q;dkayI!K5kZJGj< z$UdeQ3sX}UFHN5v$rIxw0TBzH*fM(HWbl#BV-Zjvo`7bNu!%-MeJbW(ie~c&A#6Yp zI6<~KjS!-8b|Ip&qs<2CtT-sdm1MlTJ2sI#e?FcB{8AtnyPoIsBLqMRptFlf!=JP# zz`^o`+6(}7$#Bkzi>fUW5zcAydc<;5u>Fw$$O5|v4sIDeaO>50XS@=1Ni24N)Krn3 zvy^Wp6;zC=?(m{&vb1jFuQ4HN66hsF)VHT!&5ir|Ln2+5mF|ZQ(KVPGw0FBpUw4OT zYfid|fB|bfOjD>z(5}r4T$qtE?@EO}NCZ|?zGroB!Z30BbY>ZxfNNk_%FnyaApWbm zH*NL0eaf=DfF_{wprAP;P7Kn|s=7wHv_nt<3Bz=Lg9W~-wOtrlp+7q5V6x#Sb<$5i zbLid(>SE29YLKB&P*gxUTx4D}esE40oM)4|%RC%gT3FS#LAbf(l9$ZAn<|W@(@^cF7pROmp;&V=n7myb&VXpbqYEx}FWn5uC56{_NB}eyDg>C4pn(*R zu>xwl1a6gV4B=+Qn0bFL4YZb1LQfuYO#&EL^_i#_g}llo)K#>brWw!g+Y(dn!I>a2 z+M56rvIktts-Y-o(HBuR76qg$&u@@4DqS;*FXxx2+vld2+P_>P$D)!w2zzcx`0C-p z)^s4r^rj}R5{UxW3bY9TtF>jTfVLt;^bMzB^9T(E?Pt}W>7;dkI&vwqyqt;8y8n`I zI~fD!zzmLDg>o|$rKYhI0gkBpyasJoJ{?qT9k*0#{!nW)K%gJ$$R0~`?oPyqa=eHu6?iw~b>hwm z2!^;v!-NIp;C?8sxI$Km$&>dha1#+|xf#?D0|#GieX%;Kjod1@9{5 zpdCjzT{nl3#OtwsfKi~$&?at!S+g&E_l_>q=D|A^_@Mi8#9u zB0mk9w>mWYR+=6~5jbhF`KO`_9a6)U&5HO-_f5r^NDmrRN-VJH5LawMb86@YeZY}? z6nlBoi)>JBzg_ch_$l-S_CsuR{P}yftZ(q?=MVOuP7Fp$66lW{5$J8C?>zkh=a=m8 z32B67iCDP8>PW&F>RhS#u!Dz95%%F;@ho#MQW+J!1Mw2EKUvUuarcyn5-{vAJ~v?% zQ6W;X{evy&h->=*$>b?eSNvfnfJs8n!ub@OOx)WPM~lT+z{JvrShVF*zq8^eXIU&5 zZC0}~+2B=YMqm(Hx5AFVoww5l{k?SNyCd!`RHSB%lsMujZ?>k6Ay!%38M>TwB~bIF zWhCvoZSqcc_DfvUbSBYFOTg~_?tvh-)h^Kye>UEBDAN3ZaHqd}x1(@2MIrEJ$T?e~ z!?|ZAR^$+9j`a$hl}5=q;m*O~Efp45#T^3xpVh{MaxX5)_Md>xAWOPh%Gcfw;#)^F z$7C*k`eXIUb)QR83 zl$7cKZz)PX!JByo$``J4KRNWepY2m3oe!U7ich!Oj}_C=Kwd!>!el1O8SPmPX|!>& z)SCc^MIO@C6wH}40(BJ{Pk>ok@- zqHP_bA{MBxpNUkk$n7d>0B<7r97hCtH%__me;4NvLw0b&u7?I}li{9Qa{m7(_cedA z={K4lYy6gmAE^Jm`qsK{_W#5`OBCm?YVWCes```F?FSaCezdCTuC@K2-uKBU|NsB< z_n!a2me^gfVGn;~YIwEc1ow5rk`9eW-<^E!kWfj=rc~-!0#IHzH^H_Zt2N}Dls*#i zsO)elAG9U;lDNphPaSxMa} z?<>!H>pJ`(nYc%4%N;w;pO1BSb#k-Nlx!b`bQI^}nrPdLSoc%lN++~FEx~Zd>3F5> zp!I=oyf?HR%1g?_$(Q*&;K!JrSWCFnDL`49abhVPm9UzC*~9LH^@!F|MVu-QrJo%K z&D9iUn9xkzUO=#DZ@HM4?BHdwAx(b@OuRvDo~1R=Z0%_KB{S6J3zAQ;{n*8%7aK6LQV;d>(|N3rB> z)Vf* z+SVv3k5Lb{vB@czDM%E~u~h<5!* z=~GjXEW*&khq0uRY&`T>$BrKBjEDvDSVO%~<>;}Zbe`N+wj(YJgzZqZJn;#Wt<)pR zwjkb14~+0_3P)CThULqt3q=?8U*^<~6gFs929@aw#t{y-Qw)Mv zP7k4#JjDge>=I`Y-w?Pw7n2rn@Why+H&VakF=7UV9PC=RY{ z3N{od?JimfBl!v*Df=Wlx9oe06!w&VeT5Qt#8dgVcD>(?8D%|g`#;_iMJ;O6?g|;# zqNFs(5)q>Ce{AwP%J$KXQxc2BucYcqoRT*jY91kujN_aoxJDqE$2Kqk(>tBCCXqa| z!J#d6yKRXVjvhH25u;}%`?=>K*mEy-+E!3KJhZQ{S#dBpKF)<9&JLPiUZuTTM(6~9 zTi8{tCr`w>LLZmA0#Ph3P3}B2F`Oz6U(mVrWx9dMp!G;gTP5p-mJ9BPzaB|bg(;zZ zPvQ8<>EmGPOQ~O($y5~3%z{JLBXX{=eT52MRf?9`oIqt{vnn1|1N5cK>q3B&cu^nR zgKf{YbsVf@jn!N!4R-eaZXp;d1xJaZ%c39>a*Ik{dSa0 z@j?c11yyuPTzE5i;ORtb9@N712S-{u4xWt^{qU7K-pQzQw(DXLy4@^mG#!R!isl`M zk6?(iKH*ISKO8qs4yg6$h=kvfU;b#0&@w4)8f(qyy4CXXIKS(EA;-&q+x$rxSClOQQj)-GdW0BSGTO|ZZi1LLr0HPLgMu# z-QB&tcVNewbQh@1187Ib;b@*!+1U(Nd!bnJr98(anhulXqJDNBdK8s`QADeFs2&lL z5KMPA6mhz+2$8JSXDEY%kXV6$2u($L$E9aDSF5sxHe=K3;$vUAvkgN zG~9)u*qO;QN#}~kMhW3?MO=FkDD6>Nnba;XQwJjSg5rqji)_3l`EfQwG<1bZ%#)D&lQdvyo`%v^MROeG@az{`a8htdz!F`2 zQaXcPG0;tCWP|8~PGwl*5JyB3?n5CFE?*dfz!J!;sd5NP*%e1*zPZ(>>)I03Mh5LP z_kn?dE_03Cj$0YEY|3>p{t=?&)SeepJH?pxcaYjyYePl7r4eC>lZAFuwG)$s#AQ}wG=SMK`6{y*E_ z&4>R_{)3D75gnkGC*mhgR91>`*?YTthl-V*ZY8LWUy`@VhFPIzkuv9oRMLe@=k4St zVESUG2%z8@a$0lHDbMi(SZ=s48>=&g1x2H9Yvu9gTv!Z$lH`ZN05I9ypm}sI=->KE zZPeA^2uw_o>a@3OkUjztso~ofp3>8YKN`Ckb1#a5NH#%HzOs*Uck?NWFBp}RGgWkr z=fn>W&tQ&(IL8wd16B3mrUJGRwp@$&~ zIb%+QQuC0Uvr0%4v$rJ@OYe#RT|5Ia*0lkNS-PIAWp6O>ZAD{wrSc#KlTyLOEis-F z`58UYaWv9JP;pSvc-o_B_Zp(1^uPorvA$!HpibyY&CO;RHQn1)cVWpuwhfsiR0uc+ zIJ#EEKOPDp%AmOKg~##=mY^bdj4SySV^>RN7O170!yh3wyY(SiG4c6G20pFyP+!-u zaTxDi>2eWBy{_F~5;i$X5iN0WCbdMApZLsXA`S&nPrP?H-q#Z>Z#}6s>{(iD}~-pN%k#s!!|j;oNLuzabnT?>cgPrho#r`-KB;e zH6+jk7kzW<39WBSA+oee4@(ruH7qP@M-tP!eUxIo6w~5QI?E6pW3Gz|ETMGl9)fIn z2+}SxvHaT~^le#V)4|~A(W4!eb4XxjZ6qc6wsx z)lWEfm8SAb&H>T=F6HA8jT|9$)n*05^EVgbd@KfcRyCML$ZA!5fCH{)i4HhzU^FNY zO%U18X>@cBj*0+zYHdnef_n4*AT+6XK=r%XdUYp&4=R;1`l^s6 zh{mL}AH=^9%eu*Lb7W@}Mw(9>>yN0uqrb^?a`=vD|khqQK~_iKzQJb77ex%d&zoCvG+`?|Y^%75V; zQLw(Aex^L_tcZhc#|~Gry|CQsc|X{F=TpCPNy|mCi)^VOigl8A1_YPG6@BA*Yj(Kc zsSSWbFzK^*XEK*`2Kms;CP=9(l9j}u$2nqhje}>mE;b;RyUzu+twCocd_{8};>;V* zM&*e&Q=ydOnkKC<1Kmr0lkFw-1$n}{4z`Nwt;rMLm1LweUnnh^wCo7MBj9ejzyyrp ztX|2i&t(b3z=$l(i!kH^so1G?o`Woa#U>+v9|zNZgZuUDBpwMFCwa`g1?S6VHV3B* z)LMi-R)|q6mXU*Wz*?v#pFMUYqIsz;KsOu`ciOa)FND_!JR$7yX=~GtUSt;1VCqDz zGzP?JJn$0FmKXwBqW%=dfX^3G?j^5CvfFogdA9Tkypt&jsl@8xj#wnVZDfF^T1POc5IqAlSjrQfKpc?8q^4T<{59Cm|?v!Tr~QEQa6?+P2Pd zeaRC%Oxz&)`of#hYq98^JV9h|YMLMcwrFh995>ds6bzB{*&sY>NQM;O51~gc55jXu zZWi!Z;AKahrt)VpPiKlv4xp^F-m1ON?{B^LP-Ku7WDu40k%v_YI0<(O?}x>C0jk5{ z46N_4w*TTSF`khDAZKJ*S?l+1J`Ac?s8il18yzAuLB$Trr^QSdusQOMF`0RoEtCsHC-v8(OukPFWKNmRaOfi!nTvg)t(dC?a&|NVhZcB<6#AxAHp9@u0D-r8OcB#zPE118!-ry)Gck zN1^w;bG+GFkV)!TZP~qb=guOT;kh=uSLieK_aG@Wm0DC(JHIMY?DWQYf*yQ9x_cow zvb8BCc{n)H7Db8H$F!ix=?-m@;yu$Mu>^hP=N5WcTB<_{4nY`XF3=Fk5)nlyPNMR~ z99P!YnIlPoHp6RJNK6*P?y~@7B$r2M7M9Ks0R}fi2b9OQa!!-49%|`~NV#f~1bpwP z6w2+_GQ{^R9z3&Ae6cKkacOqO`F=nG$~Z;capB7Bi65kIlFU<&1hsJ^_l??57!%%A zia9oyid%ZcvNtoMS5R~tQXKKj>E6>3`EQ;HBc}LF#UFn_a41Dg*Z``WJ90lP zT$b7`u=-l#ovDdJ4i@i)jVwM5B@Yug@cGrUZ(PXmB)kWXnx3S5qT(CwM}p&9Ms}JE zT82-m1Ct2qTUri9WQ~}sq91=Ps+9;Q zoPe5`K3&pzldZtVkloaN(OFcWHE1><9xb3d=tJ(@1rBxrnm>U0TUqw~w(tQ>ja;Qs z-R_1D^xPRfFhB#Z0kyp7>Um~MjX+!aFGscu*1ZOMU#vseW3h+O6%@9va0u9;Izl94 zA`OF5j`#?I1%gG&k|?bLc08_@NDDdP@$q%OWNTGVc{+Ebvm-(?^5?q-Xkj9e9bt6< zlU#!#Ux9Zmue)=WQX$ZR&O_7T|DyOfEYSK5G7+OgJ+o0ru0cw41AbJSl$CvrrWWSt z8)C0#F_7fVs6S{+cXIfl;Ru_EA`RMM42L}#zL1^WetvW;PeXu4uju>?3SGr+zFWNVozgFv~4+0|ZveD>mjn8(iL6){(v% zB->6LjFcAxG*Ie^W{``HGuvG(#=zKDHnEffqPvNy9L$hn1L5BOqD>0XT-YG`BFe^? zsd0X}0qsWWolcxZG+oZ67Sm_Qa$1?hX?JL0@Rh%(+4@VikhE z*ffDkR1^Ej!7V5aOKoKJp~+Q&hJ^^!S7*rvn9nl`Mm|eqMNLhKR3B}P;zi_|4Ga!| znTWIi_lm{Q>=>kN*vXLfvmMK!Z!Go6H<9`dyCZKYbTeZQ@=%7XLETV@fmSBpxLzP< zr5G(?4)Co+>o|%6wk=>@13^lIYFlF37$a3jk4A8IYT5%d#CEwQ7vGm=ut_*2S|kkI zkdcpww7@PC!~sAzBGE}*%i>R77~26|E4>QvbsZeV3=w1N@Uu~v#5m!gk7amoZ6Wxw zt+1JCb7wrNZd7yY8tjRJ1n%~ybn}=|k|VK6X8I<{|DyLPp`s$6`Aqy;hN8O^1gK_w zKOV;{m+W>zZ;a}=?De(6S$TePs_@rUw-G{!rc)>=H5F0k?`eJzY z$Jq#vkooub4)xtJ>@ewc2~AJBzzflw(nX>$S`8+I*{RwM0-Gva<2lhe1O_qpaiiB( zvK03za&6y{e{QA%R}MBy&T@Ur6oHLKXI(1BLa2G<`^)J0QxTm$PGg8rrf!#qe0L7GBfE-Z{uIgmi zS%}riTIlb`uCqR7`xnKXIa#rFtM*Hr1J23>MhdrtC(YAGVii0Pv6E?bVM9J5f*bu5 zeEF6&DMd8!Pqe`9>Eb9v2(~i85T1fBke$NnFd^)^8wusiQ?+y5k&E%m>+Qu9HZC7w z1%t}<@4W2YdD%C9b3S$5J^2jILr}k^hNdn3%SVnzW$xK&l7l_bMpS4*?DAKb*M*C- zI?7T2NQ&w7qQ#bgAYwV-Pn}UGAuzEsH}JJws%LyP`*da`Idz6Ik(3lgGJohqM1NIe z7R{r{%iPHeB*}=wrb`1_dpb^6E=X)WCBfPne5B(@bj*=v=tJG+<&_0^rFjwQ&U6Raheer(w3mWp zggW%q_FoH0X0Hr9V*xx003fqhFBg+ryQmvyASNN}-TWiI_ zK_&cgWpZ+D4PJY0-<8W7sCxRUPb;4|IXUV4|Ht+S=c|75uD`tNqx=6D27t%Dfd3yPw;Oeg;;WtGr^hP;P=oLQ z^bHq-Bzqklvr&*pbT$wmkKE&)3U8n_ixf95fR#??7ZTIC0wO!bJ;rm)jb;~d>WDGL zN76+1sO4fgP~!lx3k)GhLl88;U??CZbq!cj{CM%h!P#x&LhTQ_JC7ZWNKEk*@W$VU zTeR#lxa56NvWzHI3RHnD2SP-9VW)-2;Sr2Do7tcRgqh$a2;y0`nhmrMaG??8!rNwU zkcqWs&;*f;d3t;mjW&W8m0i0+Y#Fc{UxtwThHaxsZ4GFid??bJ9tKa*A4>3KS??&e zK&NU~5F9bX8MUC4-oxHtld!5}g7A5ufJJauB5WR|Va>IY!duu3YPaijuiMgXM`f??R*Pvk0-ReXHx)aa?;^tM<@(cLEw9d3*C8;8l1^+pHu%A_`D3-a60G+s@S=_u(rhuhsi zeT52FS{j5wvCP_S_#y}%HQ?gNlbFJk%Va0RLTlR815G3H^dxd26|`)7CKYoBkF`cx z8|3&0hAh0hOSSK+kT3VjtyEM8)TA^kqiwZLGgt(9d0ZShI)m{alA-1#%n;F~foMtr ze0xm?@Xh?{S`gp1cA)W~yYK=a=n2TH9={oif+*EC{v+_8Ob()C++$GCkCn?pxPQxMk~vtDY4-=od=vgY(Cr; z!NASsriIerpq1-|`f%^8G1C;G$F|iG&}>WX>1>lHQgb=ndpgV))>1j{`!vMFglMmf z@-W!)u`A&>CMT8LRD(blEhubPNiUtw+;*=A2YdR%^s+OPXp#tUiFCoDIgF;48~{pq zaCdd*xw>p`Ne1Z*037M%-coP1J8^^$qt!?d|WDcbyvYIgYRLZ*9e#inW4NQ8AI2nryb;E zdKnJx)HR(Rmahbq5 zeh{}O_|Wz~d){F9;kMyO8y##a7cgNl=lvBQtC9U z>ju`dwn{PX3~pz74O}E#0lVR>n_FrD+S2yn!>!TbSFXcwk+Qt>x68Fq35>;DTjL6F}f-oh<95?y%CJbV6j2!|JWloN%6AA-Ed3M~TFwMucHtm&cH# z)Ar{Upc?v^4&_YHdE&&0NK=!P;$UyI-z9%Js;`*jcXE}qHAlul6Ijo)B$F{84P08P zOy5D6@rm&j;x%dYk`WJr2%Qqf_ihL@vov?Uv=-1iU!qcPIC6OV@C-K*f4yt#89iKY zaQbL#6cZGOlBT7D(NH9%Or3hbA`os)0v>L__= zr%mlfHcmTm+{$r64U4pARE-yr$hC|Wt7SJrd!1hsI$b+&Ds`rABY>@Psnony2D=;` z#?h6dHil@&fKP8cmM8LpJPrSbzAyjQ;#EXLRm!mOu`RVXMYkWir!~@!9~`D^H?-p_ zbbGlVvN9cLw4{2Rn3usrN7&Q~^;DFIB`&TKN1MuzuS3=W$xCW|JwS3yt{J2tvO4HXRk(jCVv z+D-dHpdnBIIO8Q`le0D|qgq$za6140-F?klO~2c8q45`~0Qg+PzWS4OAM^jcKjNLQ z{oR`X0RzC#9{8gJOI1I8*L!!J-@mx;-7nz(|6lsn$F@JH6Ox=dbTooltiO+Tg9zE^ z4Jx}j#iL^7La`YcFvTR9Wyma!T=u4tP!oAft<<)0vOE?{c61-BOs8rBLtt>D1)-e~ z<^CVg?H~%BhE>D0fx)0a&X9!?3NR*mrh*Qyg(%e-4e9czFdzzJ%ShEVF1e~m^b~14 zm~2SkaN6mHn_1x&DjW{27BzWA_O=;Q~6*1sq8IB27vTm zC-DS9;~VGzdvL!c#}wRqa20C|-#((j1|#x=pcx0p&-ObZ0iS zpmXg}E*Q%D49`s9!q{FCLA>Q~gj&@@P#)IX9}#RWPnz%$#eAUB4AzU7 zW1t+Rc?&R~C=s$6OVSdVj%}jH6xy71M0_aBsPI|rI2x+26U~}aVIuF%<>!}^>r^LZ zM?u&wDMPWj-6rF-HQREqr4kOK2~z|9WMSa&u|6(}E|VQklox;0~>l&P$9;U5!ok#?H=Oq9hD# ze>ye{@8fJ9gvJHqmx}fDbz`knWjsiR;uO~cYxIZLAT(dUBuwm%@j+j`^h z(T>Wx6xP3&ZZyS=X&4h2b3IM%mVq)TBHSq2$t!vd;}E(RxH9%%hLCA?em=jU!b^kU zICGZ-X>79W<>XHAN5w3>9X!5m?M!=vsneYiFQpZpcXGgHVS(-EHx(|AcRgPEwjCmdr%Zja@pYdRA+H6 zBdHw6;JHCGWMd&dhaGF1KwxoY;RYdLVFK(j!dHn*sK%3!MfH1XVr3Sbc zYKfYVBNI9_^q?9Z4o+@cTMeLQCn%IDzmVlzTPeO~ZNGkj9P^!7n#JACADTW_QmqcPi}v)o~ajpmJ_EV4bz@s z3gDujX-5iLgxTD1ZlHFGdbZD&I0mvv>K$>Sa5MB%5Fk~-N(L4rK zWz5LRpy9~@Zpt1Az2%aQqW;*2vd*6eimiu1O>1z!RfsigiIiJ%MN53QjF79mr% z!1oCGExrVIOInBOkW;3i`!Y$28$vA zGv5;&B;m>_YB@IM37({<&%#hWI0oK6H9{F(Avmyox3vA~OzY8>=v*UckY!SEKC)Yi+4E3|^M??= zsBn>TVx4fjte`A0(bF~B-7_(8v1jyR&xHK{`}d9PYx?u1m$a82I+cl zSK{`zC_=m)Fi1IVOtA_+e4=Ye0y~H)&WF(_A!s@-& zN5NlIV^ZQc)EwcUEb9QRZabctsWzhJ6`?fEc>tv8?kuz^?c(z8w2GY}-K!9KVjQDQ zsi~!qr+W;XLRtV%SZ2ub8JSFLaQ1XOg2i8dv9GVYuN*4kPF<*nc1m$vFLv$%Ck$b) zKHj$|=i`|~2H{Kt84s3cDB6^%*cwR@j%A3uPF$tt8LcysChTYO#qhG%QHWv71Vop} zpvUoORh>PRx~b&E8l2~kY>Qb2l`(z<7-Zz)^$g#En&c11?9xt7MrZIEi)7qG&1l0Md$_&T&7*CPP%_bSn%{k=vzOPV>F@ zJZPnn)s9cKiq8f5P!MJtHICLO<+7946OPQs7ivQ#CI<(0q#Xjkq zxaUsu8Lf;uPud4w|PPp z#n1pJ7FRz*+(oFk7{CzGiDRG60EADko}yGr;E>qk)5TZV{awY^gT)ua{lSTCwT(fR z+w5Y>5NOi*<%}-Gq7Twnz0Z`4Q=r%c5J9HfFZV>*CVXwrFW7Z9ICTItM<7`-g z`Rw^@4%{zn_-RPy=gIV?K~?D!LJ zU%q%`5$3>kFW(|vwVX+ik$XB5o7~L$7a;3|Y<4!aoWej_$|RQw$||2F_Sw`_3I>>^ z3`{ZnS7fxo2e;Kd28xB+qw%Aa7NX8U*8nI5C#)+>GOgE*^c;{Ygzd}{V*BzsVQ2uO z1S)UP8e@YTPMWQDo{4-JJ%L3+5+kZ4b^ywqu%jXtH*#f?MH(UZ?6x|_9K82jyd#34 zf>}aDNMKf04`#JRzXey(wa^q5b;M-6AaAEVaRt&0whd@6T0gtEG`?Wyu_<*$o`#_y z3woRTo6C+;;z>AQic7os@$J)^LEDGhTB4QO0PPrtjMk?tg}uwa1b-%>$lVYs08LC= zh256H#ha|q!j#f&m@*h6qL>2wO3?k8ZFOZi7+-8T7}0V_E6_JIG<+MoPt#b-iXCMU zv%P3J3n`8^MGeRgUo+m}gsbnmfIF4k!2dnBQP5w%xgEEsf1>5^(a38!K)>kzz5N`@ z&2`>sy@dRPd$SCnf5y2K!s+`w}Gs z5cK`SQBF+st-_X+#3Bz#G^kPsYp2(w!(?AUJ zOQ|Vd@!wP-AMD#c!RoZMezfCIM1E0w(>2)F7e)$0ZRD&sS9*-fV_P_lLT_?r*99Ke z0V!8Hbn)RTalzDcW)jU(2yHrh$e?puO;cLpK^)$xN|%O7^bb>F71o~Ybq$g@xmuGQ zGt$aQOGSfLM6+V$OiYxB(gtl#uofw9q*&hQ46Ga^HvahN`1I_9xSs`{CBI466S?$2buhk6R>`! zjks+3Ac=eG`bjAhIVnX$iD0wY7DTZc!n6_vBYbZZ*bN?;QCuSf3Pj-2`EBcHayoa< zJ@?)dbqFD5Cm*lSScR0dxTUOb&OHKv*uEyke=(=Qzbis4Nr<69K6hPo*$M74z;HaH zpndz89j?@g!Op?RKddspFnL`%T$DY9Y+nX$7x-xbU&j>Ltr)RCoDn%CXH(Z9GC<-v z+|&g?4l7SDXJeoJR0^0Z=4WZ==%M#q-#oIZBY@cL>7702M9?Gy&?6Wr2(%;i+kwtHdf&vc~<3xDN z6th&ei`rRC*MUH%fWzQ47-2sxu-F6gK8^Cmks5jGNn9ao+ko=ZbRVaU{7PAy=dT`n&5(}*9A3WQG9Q30;VT*YUo36v|Q z%Y_Lh!@J@mp$W!$Gdj!A*RA;2r8Fytbj%W66II;2^Z$qTH4ip@d*g34Ha85{{}T28 zv;J>+|HZpr`;)bOH80Zf{r&@)s{dHkb=QyFb$b8izR&F&3jFO^DU9SZ5s~Df2fMmY z^>qzKGr5;7B!YS;oLpScFr17j1G>k&2G_%@1d~x9nTz7!vx3rMMb1bzCIi2!>8sSQM4HOvcXRqVkjPV=zTjp-Y- z6%;^hM2QFF6otVH>GL=o8?j57Yb)tsaNC%Hl0gP?oxL$0n=Uzqt|IN#9{E@{-ICY= z1w)EoCXW+9p-|kUtX^1i)!#7n3Gh4^#)MS}$rD0VvV?CVHO+=PpI$^L>N^HCr`9k9 zZLa7B*^1?MSa!Mx^4pJT*9SX~9yz+#sc;h?q6b0L^>Jcdh8vS}Vm(3KKR&!62sn-q z_MPJqK&)WNp|8?wv&Q0%X}26yZ;RdM;L)J@(7hEgUiX(#C|#DhD2wsVB1O`GCDket z3rH%AkQfz-#M86uQX;b|AmJ9K_~deWos77)UD_I!>`g=tW^$sA~%~+}Qsx+U`5{6J-3ihD`JnHxtOO;Iiu}-Blfi_HTnQ9n$7;KeO z1j)%Lt1~0$-%OhBk>X+?rXy-=b~=7;>BeV+jm)jp&wj>IhBPukG3B>KxO1@Oi8gGR zJp$0JBYMs?%yQfr#XFi4lZJWnkU-)H5cQm=8noS7@8HcZ5SqY{oHYipS)1FX{32Zd zSo!7jCUjAWV`&X7ta8hXqW~XJ@PTa+>Buo{IatB& z7EZT|HkP*yaB9Cssyb}$7|t5Ukrz(~7VIoJ09pn!$n!}>PES;Q`0j_&+804Y6^l;YCXNS-y+l5YSR1_G5L!e0 zgWFHib*Z3wRZ*2fD=Yy{>pt)#&}vwY{^s_irg-|92&P`Q@*=7WW5--bPG_l(;Gzsd zjKNK-gba^?^UQR&Tz3;9PB6ES@x$r9kUbUaPACtm<{rW5wz|OJE5#2Vt!PXd{_!p< z4&*40D?MDS?R}7w24xABge%%-xp6}mQ|v##y7weI$i0wo%&y0|OoWD0n>iE+ah~OT z2tq^#!2Pg6Y+>C+CY{&6p1F0)s!0GXjNxmp(E~@-`B>shob73Qdm_I%lY+%zgEybq zwl*+rxkHB!?Ttyehv@1V?y=b3lsL0jvWtZanT4h7B8+|#&8vLZvKuBb6_+z2T9e&+ z&we6->z7N9FXG^0avO|u0#i00T-iROyVD&kcXU>iZQ9@O8SaBz)!m&+Dehc56eWj@ z^<+jmZDt4-gHG2d9YwvWmyc?e2z3iwY@9K{{V9Ws9{J+quySFO_p`aot@^10xy?Qy$3tGBbtXrDSfaOWaq zTS!;Vgj&+m;X)Gu8i!6__0HK1MSjR9U_)>?q0b<`r<^`xcd)c=&0hM04|n#)D2|h2BSe&Wx@55`U~4!niEZHMGnARUJw~dLR85`{+4y)qRPE;jWF39#VAt?;uVpz z;LfYQr--UU<%NBsXO!QdNzC$@Q>3E-+aRJgZ!PNLE{vm53874&XvD}^C?ev{fTvjI zZa=$i-C=H1L8d2V!Fw%gv*$YQ7FV}haB)ErBig;%gIaN|HvbN6ZjYEWdII#x-n%sT zpk_clV0T#du}2!2h7FG|!DGw`($5HOi=DP3yE(rQ+vK^lqugDlLZC4_jftEME^S+5 zmn03p}3yTyp1~opH=Z-tnu_zJ%e+hsLObq5m zdl`&xCp7)Xg7HIi3y++BPw!BFPXxdx0%V-D3arrZI*EyboTct_ISmd#27uPwMLUSO zJEM!kw9akg(uolmN5kdvP1j?UDMn(3&M6CUg=IuUZwZ@7K+mULCIj9?G93yKP&);3m++F$(bmju1*!BIpczuVypsc zlLWwd!xx`GEKrSzwmg@eU!wRNoK7A}q4Dj9wb1>+!-r2FspQ3AfS&KBq2yA zA{5Z*21%L_Z%kbd4i*>UF$u+`jQs!m_NDeU_k#Za#)jXi|7?A%?zy^s{)67P)xKXl zUo&6*)z$R}I;x((>p$J~h4~>dPd$HJ(fk5g7tKRRo#@A9m5}Sw1dW!=@1zD z5%&pM(aD>puqdR;Em35*N}abX0Ucx4Xj0)DeFeeT(v2nbJU?Y$hdctphojAM!9Cj| z_=dc6y7{FOXjeJLH~nK2)_@sW*v3@}k1z5t3yk zr%*EXJz^eIsl%C79b5?G8!AY=37(p`}~1KC$HA zCW+`4Yqz%3A1{(4C{aUIi}9)m=BVp)O_GqSMLUM#w{ilDQ2T`csaHt&cED3q&f?;$ z2iyp;-qiZKEEeQ6Xb9YGrza^P$?1DLU(JMnM$YIAv3a0f*SF^-sNz@K?rqs?NV#XE z_jIvBr{omuqAyUGMk)?lpQb_UItx7J1Tvav78MG`jQPau=tVjlG7o|_NxATyYQmqq! zyunv)U%+bfR`9Xylpe45`9mj;RWxaLkJmK_952Es2^D}=5%^^vb~|B9QbL*#1 zG!dmHy+Rd1%nmq@=GmlnbN28G=V7eqcSu_pXhmN*&P?FaED$xL>6P`^)JE=<`$;4W zAc4}KOFYVwAaEYQi`I(~+>ZiZ(fNI@z@uY}@s>s!!`)!nxb_dkCg+8yL^_Kl2ztsW z)OGm$T~L!phH7>a=d;Y&1&62_zZU0dH)104ohO<=(&J?8QX1cB6Y?-@7egJnjh7oI zAFYpnt&minL+~ZrAJL}333sHeCGyOPrDxdkUEyKpiSSji8%D^OQvHNKP>9JC6nIH` zS#qZ26<^zcCZv=M$7925DA4bmI$?V$@Qr%`GIA}2RW7u?3Psn`M1icyPPck1L@N)< z<$8O}ku6tVg{3ZIzd-%w_b& zIqDs3BxY@Uem{8S>tmJzr%6?s-~Vz{V52sT8y0#!SY6m zllY{x!c699TLqpInBYNxR0IeH5PLhYNkD9PN&pOYiLo_W4u`w6XKGDtr0aPpxj+m?Q%eSJnUyJro{ z&LITR0u*vHTqcNo`&d{=T>nVAR5T&xItWJP&hm~_(DrbNFufoxVB z1%MV)28xW$OdD(L({((1l1o?J#7`f&O@6Jf7c$AH`kbR?o|%ky7-b; zlsQ{NpZ?&PmSf$KwrpPyrK!=d+A_zuq(!(v0_NELkbzxBFlMrk7$i=+S&pk>+i)Ba zj$BQIC9)!|g$mB_HS3pR_YV#MLP(e^?5D!tV#@;$hNM92CzWGa$JTLGwM zazW?O(J0ytv(vbWf#aGPac`Ebeo2SZuw6S}0&^4QOz)I_O8)<$eP6S$`Et{z8h^iW zwc!uz|5yEL-LKbux&LYK|5LT!QS+NM4_043@GDjSrs~LDU%mg${m1$E|K5Lswr|-l zE!6UCC&{cz`8A}r@Whs_=0RylD}TR%IM8CSe}k&aU8Q9h;zf5-y;#PqfjW1ySm33s z1$9vrTyqU6?;}~cv&C0bHNSEJC@pSq4!dMgfcGm19X5b!!QcbmvQJZtKRh@%ytm+% zJ!gvD1Jn`Q6e|F|MRR2ALeimu6kx^W&)zIRXO=Z+K4&*c@mA@Zh|aW_^`gHCq%Sv? z-pm62wNFs-@~jgby>0m0k!#pBz_E-lvdct=snhGK71Yhp>R#Wes%sB}(Xn2mD%QI& z44B4X?Iqzsz)&2Devo_-@)L{iiv2dAPQ@49?#0lc8+*E;4HJLR!J{9CVm2b@H$><2 zp|HhzS#H0i`dzon(JZwW%A}gGzJ_h!IAC^l)+M)>NCM5kcm*kwUkk4URG4e?1Pt&i zF3CjL$jOWc;Yw^}Y}-hNdV{k^j<)TM2;0unm!0DoX}y>EFYS+lJrLw3HVvSGw7KIl zEaq1^m0HlEVAku5YdlHp)aZPb$&oR^k#v}4MqAVGy8H^Gt4W!AZ!D>9HY&RGZ%MbEEM!0R7 zXP0L{5>YVOjdU0(c2917X-R$|`o-ZVYPX~a0F~c@C1J%18A(!X5RVlm481v>NnawE zxmlnL?ipEWgX71#k4C5+P7s#(Ky_<}&wIoS|rdLpdq7cFWNgX+MY;OY0t@QvgohTxVGX1~; z+X^~5zO$TN;{Yp*fZ~1|i>;7n_)gfmF8+HJ^=%E;?K*H!R6W8k0|{8bQIx+cJTBZa zGU0OxtS&^Jw8(jDI|Ng&${Vh16jW}$M#hnj=d1z6oUFQgGicr}XwCa)+D=q({<~*{ ziMcC!%|lgRVxc0F2xgAIgaO5>60aej348Sz*Hp&mlJahtGccV{SqEwvUVpBDY?qul z>1K!p6WceXnY)A5?oP2R_VmTO2ID=0v2Ic~ZcZ2<{b8J{(s4X5kk-@c`^N5a#`F@P zlpIKx=a?gT5kpQW`e=cK8@ilDcJ%P0Wct=2tQ zMs01a@d#Pj4UE4B1sW-1%G8iVOSA`E3^T|P4r%h8_-H>vFalo}25hp@auJ|sN5zJI zZs-LUf9WjZRW<5mesa*dZ7q9F2c3snq9JAjgB0ypV7Ow%^$UwMv*yGQqy)9V@y*~z zJ+QJs`0b%2XIO%r4~pk1wOJ&0QNo$q`v5^G?Cgiyr*-DQ#2^LFQzV6Fv_KR|t$UCu zRR<3pjF54x?Ep?*RBEqmWu5y;IRtiXiKKRFx}RwhwSrPzn79Tpg?mvq=^Ed^xMp-t3T4w+KFqi*;*8mfCMMNAMe$S95tmQVD`+f zSgoggs)VwIYlhJ{;77Rb;Wcu(8Vf3i-$D7(6Aix&iA9zH-B9+8nSA=zWfD<2D~TYspw323+tySk z5mes}pP>k|>jtyOZ`fHc*O(PVoK{V34XCFfm_syF(^vVN8ZgOc#@WXklr*uOP^Z&B^qi- z&{V7$)Q!E-R>5{%)e)tv%6=!VhfbX7sjxm}5uGkKlO-oyt&>Lrilhl8pmftg{t6U_ z#d8DCPR!P-wsVw*Bm`yGyCcjS>pf={f$gOr00E@vDyf`Zpzb?u$s)8vkuiNzJ@+Dr ztXy%|;$jxuFCOro~b*q`k5W4{X38)iU5162YmkYY(Y8mZiC17Bru#P8o z+f|E8O%U9EI2N1%lIqJ+A6NYPLysPda0EDvy`zJ}(d|{D;cZUdaY1!iw#p7TXGCMv z0n*;Ehv9rK<&9tnlKpieA>bF67xKV1&*sl6xqMQs`p6`tLQoM7SWst5^g5lB?}Fv-T_qra{*IZL16|<0acED}CAyTW?^Q*~_3&0&THT=x1 zoz3I#JYM>sySOwu?v4;OY$G+iAp`KAXl612ML_F%oySkzIaO9A5uP#?YNY>(MZkkC zK3Mz}f@D;>sD7RTUtpqyBQSk2#BrhsjZ$a>0jlezGYzDA?xZ4sd@4o6QH)H!SK6<& z?pbK>svR@KL7$z8i<*@XQYE{DBz?Nt(Lx3PdgnxyvClo7K zUpWuzUwvo%;gWcIF#l+Z*%<*_V2NROPDI_5D)Wz2zv9(#g_s5Qr12RFUgnlgun23Jt0%5; z-S%nfhy6#p+N&^iZY7DvhoyC8VYqcNO+1rE(wt%TCKrZr1~LK1HpJTo%;%v+fm$*u z1RY_WXA(lo^AE+(^(XORAYRU*oYo7jAsF6FW=xPZB7gi!^)Mo6tXH{iV*A0LtZjp6 zF-lPMLuV86*;M@>ck9Ag44%j|}KJFi^Bzc^bIQ&t6=|}z5ANyvR;WWMx zV=dg;7Vy!Xd$6JE+>j!ubKrFewl0N$!^PpR?4BZ!0jtvuOZv z)B+bVLJ2vGA&5?>^_@qmx-PiMQp+EP3Mw001;A5$G~^Ay9`X||YN3M`AQ~m&>5Zc8 zJ}Z_!+1m=xXK5ruM^iEp*Mt#<+DPGOXr_3zRMR50s1v=-@NMhpHGH+zi$H z(K7UwUtA87i_Y3{z;s#Dgk&wO1|#RjDoe}(b2XPYaW^*vv zC<8PRs~KBr#`Ix&mIU8?-alKiZagRajr$MX;~G+R7Q)-Ad~+v_1E(z~A0q^R5_4L= zzJi&glw=4S&E^m)E9i!efPXDWXqSIMxeUf4vj+LXeMiZ6;FKc46zR1x4hmG|{rw+J24@^5n#Dh>Mg;wX!&{-hN(?YAV!iFz^f%8{Ob#A9?#>XeeqjtJ)gw>C- zXSW$Om%9RB zBk(TXqg+5ad%Xt$j%OA6O}r;tKc_4Vs|e1eq9Z^`APadd z!pl_ovqRH)YFl{B#pTrT)N!=fGS*I4$-4I(@(*?$>Wp-YKp{egsvKv9LPX$6y%D$$ zqRcX{sm(yHFJL>kD5#D(7A3H_K#Yo3pKVJmApPmTDeyEviNgBI>MX|xI{Ui{q2%ei zaa~-GbVMhhz)>d>?{}7Jq`MRTiT#mb9o7(i5b`VSa5pMY23iy16e`rx!4UB(o`PT= z`u1*yaJRUnF~r&5;3%c=<2JAqMapkn1=gL$h$}_N>!Ll={6OAsFIm%{M7HlhRm*P^ zw0)@WA&cPOdyWpufT)sEauXBInfSPxmK^HRC!Bo0?jhPc%mQbJ%QgLyX2LV#I zmN9B^t|(jr#5N^iC?{K0urpCt`zN6uT_1Eiu zy7rH2AK&|}dmCy_?76gieAiF!x^NHY->)n6YGd~KyAK|0t3KR)0~~JhUP0gkPs>DL zh|N>!TPO}GzLb-MZH3Ke2^e;N`Br)!8GVY^lb8)ES5g@Xp=_#v#O*_%V;u}rF|$+> znNQonbfkf-dB8#$b}hYEq|GIS@hsrXaN5g}ZK=Hzl}-5B+y?#)K37*dZgT9o#uFz_ zROg-a_bA16ZAo`*b%h+8bn>YqMa(C)MvWaD$RX33OWK92LuwN1g!`s?%&cN{OCObZzts(_>}-DSmovitsKl5ed&?kMSIc#4{uw3mjE{wscgIE8))^>^#D>sx#(f2teRQ zn6!Z+MTwh23U3{PDbQB#IBLhStcbqJR#YY4@JLWjZmJXFVLEzpB3OCwcQ~m1y%v!W zk_S^IN$PeXGf(}u%&5}<^weVl$mbDALV)&xBDXi%$C$A+b z@hBP}o<4vxie8zw4^u=<2rMT%fEq!9g7efrt9c62pi9!AC*8UKK(!PH?FO~PP`^9F z4(;|ZXfO1Fpn1Ax3jzi#Ae!L|Ks|91w`yXv(S#(DLhiDaihx~3tXrq@vi~KbxVc6D zccLG7kI)&$sTesB;EASEH6XRo-F{jAGb81naL^N3) z+w}qrj8MhdmC9|HM~qa>rGv`V;gWUwN%(DDJ?)W5K_DnYebHqB6~?L46lfyWE}+O_ zMOjOhZ%f<|wIBtgq8QNHaK{tnM(N>eNHC}>7c6ylb=sk=1vwBPe@S_BCu&j!_3(s6 zb^`}sv1I*wl79XeWRa1VhE62IQ8@A)$x?unV4GnKUB^ zbBpy4Ps?rA9IA2{s7YqW^I19(QI^1jpTK?vdow|pWW#^BWDR{z_>Emhj-?`}!@4^J zf7N8%jVqrQPOT^rwCoNy9TGK!%dLCI0$b#{A43{wP(dx8WFRebE2t4HP!B@@#Xx23 z$tj`>SLi7r{8lP zw2G8KN~bpnlYkQ>HgbI(Lpwdo3Tsa?g-fhQc7pxb$n#;prgTWk`JfNwRTLtL=NKW% zYAL9|i7|)D;`yPku&u@((9;}29JlwJm`P3|=w>)@@Ht$ye6o)Qz5Gk?Z;*e({)b9m zDH(i-QnAj1(b>IWIOzk47M2MGr;@-bE2FfRF82*6Snb^Lw=+h)perG>fS7#nN|6fg zmFp0Rq8HAuLsB?r(;drW9Oo9MGxH)1!@|Qc=M(-{l+?zDXyL(VIvy5jXk>UGDuz^n zUnxfmX_t%1T@fn`WR!#4BR@@G$q10SMiVMYH@*^~YcUB)D!7_~Az~>X(wZgw+V<|Y z$U8xx5BjoNU^{0($l8PLf#}BuL!{hQPvrR6hWO3Y6e~YRSaXgNj^ag-Q)HP5 z2O%IPs9h|||Nr3bTH*h{zWMV_ztD6!_I=*9#y{KehYeTjf2TfK_wVX1)c(D_U)=jl z&Ck_*YR})^{dqq8|F!@8Crcs(601`8vC(RQfz3|Y&Co!U;){-m2XPIK28UlKW=DYs z1_Oywy46^X8pmIs5qD1D`O+UgD@q&E(L|-F=R*J<#dKRQvd`TU8)+z+j!t0uqi4D& z5gN#2KES6)*18X!UFRdb((Qk&G_JGQ=6~{VS5-3%^Qh=l4JnB8s6y^FiDrE6ozw=X zhZ}@~oq4HQtI}QS7r95k2{R9za>%KUC(8rkw{G;{bM`y|Q#5V*@Hm|#FglvNbelO( zaGM;87f5NIV0PwC{QNpt;M6j_Ci&ZBkVPnjAna>zj{w7Je=tl&D#_q?C`D#UeUjSM zkwjeFpy>=IQ%JT(Gs*}-^K-2|C&5@;$AENLcNpF%D7wL0Kj4i*&1i?*j zHA$#ys^IS~89&hQ$J^T@h#53-Vyb;nF+hZ1087VKbqnpLG?^1DNKqf&xM8SpFa*oQ zgjA&$@HrC`J4c{+vOxO_|3FC;L2bjAslTo^>okd8L{YRwS~ZQ(TVpT-L+9HW#_%zPZUnc%!wwNYkon)={AI=}@gz0&wr_L_+kMu)Gs99I| zv(>($&Qcj<7RFw6(CHYHyyV_WUy7q>*-3Ej)P>&YQMeW710S252x^7cd|2xppTat% z+$z8NOvy-l4$nbNSDm-h46!OgPd9Ro6?tJz^YV=RZBi`Yqtf#5Ut4nHs({}js{jK*$ z-#eJZ2Ll7Syi;W(37MFoD?4_QrQKZ12@H3NyeWh0hbWfhhx*;HFtG!DRZLXwYJ+tR zoq`=<56g4~QPcC<2qdx2gYqiiK~%pI=v62G!uM%rTcFQ*c7+7NnPpm2E82l}y+qXWi93#V=)403)$X;jNFkd5e9>*hE>-C;D|)CH^E^*RqX0AdD^x3DRk7|V6* zRokzbHN`TLQ*6OfI-APn(?9Wp*>j{f@{8$n>p$^>>&uy}f4-!SH2bMDL&;SWGU)8~ zlW~Z$W4GewZk_O~tsh(Q1OsPR7)930Vb2iPW#B(e5VqP2S`yC%-bs#Ul@^H4;Hu1H zeqfy|&?UqQ&N!#+EJB~K0dQ2S%&{6Bgu((oE?p|gl|DCH8gAlwdOqWKe>~-bI^Pjm zv8pOaPmXq;9F8+SZz z5b{Kx>JurI-{B(8k=&0o8v^D-__v)4WUC8#9{FajX-|SB$ zAxW-w7`5}gG_#1ZdhF(_Fxt^Lc3>Kkxp7Hr+5;XxcbxNeTaMt_eoy9P4C4NYBo5Ai4LXy_65;E)~f)II>F+lo-EeJ~--%BK*SeO=xaw`AJ1Pg4kQ@;57;XClk0O zuB;>oWs^b#2#zrbeiS#2+Mu~5Gfi<9GT`f=b6Q_ukrpx_BQZYB|KIgPyIN1QtTz8t z^Kerx_C2vC?~{%Hx^cGQe>EiP=j;A+-I>~A?Vi2gTJu&-!=4BE@SmRlo|`LuLRtnI z?5F+ubh`Rtj~*YPIJ+;Z)VAVUSEURI>6!nh+#G$lS>O{1O5yo0o(p&#ShbTj%We$3VV_Jr@x?6w48SVwd0^g3=5yVtAH2%UTza< zmHv}avnG2c{G|WYC9(8yLmzpBdl^^!XRMH>{r>#)0tJm|5o1b zUZhx;r2me;8pK4mUM^yOJ*g+W;-?OGR`r`RTTq24_vpzG9R!+O0vdt;rZP|q1eG6C zNdZiTxh1>Ze64-i)+1ic-rzKJQY%e?l+j6_%jwQ`B&qyj0WXOT9!C*v&6i+?X{@Bm zQ9%a$L`j@L*xx{;rkUrYf`0wvgXXfJisE;*spOBmL~~lqKzxaF;D0NR%=}yj8;>GGOzY#X1RhFtsPf*iUxPb*EW6a5y6SuT2G{Gw?peGOTaMCB(JyD3)m~xNhcs zhRGg0$z`DHnIsV0Y@dj~=43i#^{ui^*|XMHT780~`y>W|?TSb*`ez zuc%w7w}56pMT-e|3G|tKNiA#Idd?i&-&S3VskH}u5eB8ItzVWFSJ%~*p?p=b8(tLh|XnnVDAfo(9_vJ?sYG5txNy1Z)> zE?s_u?Gwxv(Q1mXn50gT0Mj7o^j^HKOZvM5Gi~j|(YwMKi_G4aV;P~<>FURw#m@6l zkt8Ucz{D5xRK?DdhbKI5&QK8ixkCApMXrMDD3&w-Sm~k;{uRFyMuli;&dekE%%W9l z5YK*-0Ia!0v7wVa0I`4Sza~(C5#PXSA9Jvq-s(@LQ=n+4LzC7LL*d zEnwopv10>~ZtEaq2E)c5u;W(KXa%pqV9&nJU~5KA{raF?dnNw5b0Ff$kb$6 z){0o8V{Cc-x*;@-SiFN)%wk2QCj~~~G{WIJ;rAK9$}GilV<}V91(i2j0sjo1-8*er{?#-j^vHQ-hkeo=5xcfkqw}f^Ij6N$(VSVQM9q z9s9;!776SQ93P!kmW=RW0#gx0eEb$}j*#Z? zGqVdAL1QY}fRhDGFsKAxg{#{vj&W4^8Mp5 zo<|p-tLuKG?t$95 zy-(MC@1F19{Y$%t_~8H6e|T4-8Np5OJl59}5#br7BTNGFv50$LA+{zl$gE~}DP1J?eX zZl{IA>6qCEI41OIZ0jw+I#dkdx^RWN%J$KIlK*-d)vWnVZL) zhZ8XExj6@R=%vudK*~5$dr|@LM^FbAFwnq&2A3u|Iuye^=TrWk3$~+cQ}A0YgKmEa z*zaI}2n*OEE}5K6UY?l&iUKBeO<$Q_<%fzHeFqSLD+v>ozESRY4PV;7T@tYgop3V) zD7$L^i3g!q^XNU~o6+ZJH67`Qx+30kbti7_oE#=@@ekn;gF zGDsY{HL4!`WNBHF{lv$I9~~ZxeDcIF3=nP$!w6`F)+ryliZFlJ{4tM4%&)I@Brjny zoy*dW(b1m+B~WqvSu$wgh=hEoe4P(Ut`d+jYWCp6m=@**RsSA8S2AvtE6-dTn2d-< zvw4H0XoCWZ9cEUvQHWUBLgy`F)QNT7(u8hbCA!nsWYV z02_IFQPKnQNL3JDmk(dZJgvxq%;H#JJ(kTLc{~8sLf|l4;f`j0oiax`KplYWbJ_Fj zX>ftL^m!s(u+U-cEXry>kx%U39~qjYEjDO%859vWf=i9Y0Nt>&YlB$@c}~nkMISt{ z^wustetKPrA8dK3dS-wj%n%8_1}b)u&I4PD-0vtYXzLIA1BVZEMmRvMB8HfAfXczF zS+*J5bsdaX*0_9Nn5imC4-6P^VxWQ?ZFYL_>iJToDE82_P)P@~=meU?PY?`JM6w*RzHB-r40^VJ96S!q)|m)uRp|f*-fmXh`=x+q-n0RkV^E-;a06B&%xPGMq}PQ=Caf+ z0&iDU)NHzlf0F1EjE$TeY z-sVjQnn9$y;L3CrcgdRC6;vANm-O*gsF~oz`bv=mSMiKhL`*TgynnT%&MHW;OP%cz z&~(iPNKy!N*>SR?rP!7MUs;hJdFvIq|4_hwXclfm=d&ypIvD{u@ zg(><#U_0OY6i4H^`jTs_;-?=Oel#Mb&9e;+Qz;i=Q#%V(Pg0yy1Kl_d0+tRj9;L20 z2Sj)AJVc}fKfMMFycHm9PPU*S48$3bEt%dU$*N!&$s=5F$f?!+%~c|)&LQa?1#sw&efYJH$JIJ~z?>aeo^%5#ke zI@=>6H!KCYj*%#0hVtRo{ZP}E3!;XTB)f!BV{~q&Vav*EAxr6p9CF1tD03$^$P=+h z)O~O)X+NPvAKs_yPspQ_Y{dJaSo^r13c1DF#|cQW@;#SU7YQ#fgI0;NbwqM_y5a`7W8vaLKOEtuXR;KijAV(lV#ZR5 zx&>4sC1+@|cvlYT!s4~`?c4--^z~K$Xi05eNK)-P+<7PhJ;%OLVI4}a9oKU!Nkz=Y z>hovjCU8c?SN1r@gB5hfNsAFUKh1fIpP$;QKstxQhsq6ODLIRRHz!BiXzXYyPpJcxlNg7LoZRmFS|1a)p9d7xC<{u~j|E;kv z#Kyhrjh}6-X~@@qSKZIlP1XKv?E`yfYCgN?OM5=B+u!xY|E&TtDJl?RPr+T=(Tk=ER*Y* z%AZ%cJiB%}9eKef4A$LEB< zaPU9`^jFiS;(0KL&qVlSJ54OjKgKTd+wdhwr**izl~L6Qcwku|xp$YBvK#peX;wWmxdfL*)*sv4rL{lo7Y`napntT7 z=8*C@%bWbMigpc?e6cKT9}WvOcpKl%U-O6(e*JFBBH#{Tj3 z!Uj)c;2?b(p;N{}JFIH*Qh_qBbx`mHY`9F3GMggbo=Qu(tQT{oXLQgHKfb^19->Zg z_G&bR63EIy>W^Mb-ksdbs9VvT zdIzX3i*Q*{dB|CQt2BU>T^B_wheu%k0)3Y;g~=`{!f3%PC0xZKpb!H63kn^_3DpB& zMPaK}pn{>@eB_8YIYS%n&sL6?Z2@+w@BbfQTd}&PmFaF zN?zW8@^*vFi(VS<)(aFuu7ebQKmhbL5R$b|!Cme>4EJRob z&Vj-gE(?h_Ak7SWfMH$GLp(;%j*o~2#3FR(NUb5xYP5w6z2B1wEj*w#JNq2zkTFxx5-%KysMp8Hk8d+*m^TtQDuB6yv)!h%s`RG|iG+GX7*%EnwrYyjbUsEB--xU{^OU z)7<;Te-SbFvNgCfena~d`7>KPuLD{Bw3(BV7J3z{5XYgs{sP9~s4QfXm+5MTDVJS1+z14(Eo$;*>i7-=7m3}9zR0<4pBKL{G@L;G3uVHp4oVk9D;Jb)c)ND(&g^|_ zSL=JN@3y|v`gZGEt#7uz(fWGpYpt)gzS8<~>r1UKv_9YZZ0nuY)z-zwT>at-D&@Yk9ZjotC#--fDTX<&BotTV88242U_lHX=vHi{9g0B&F?h7-TYSbo6T=D zzux>>^Q+CTG{4;ZQu7PV&o@8Ye5ZM}d9nGa=Bv$9%@fU!HIFp+HXm({H$TvPUvoqA zuBP{z-feoP>FuVsn%<1{#*W6~u?J%J#TsI};4*yId&hg*d&_&%d&7I(d(C^*d&PU% zd&zsjd)|B2yW_2Ti{4Y-Rd33h@E-FcN*Sqc&p*fhBq2sZ+NZY)rMCZUT%1);f03h8=h^r)3DmG*zi=t)rP5t ziH64-MjCn>jyA*_9%#6)p`l?{{d@KA*1uE#cKuuRZ`Qw2|9bsv^{>{yQvY)OOZ6|* zKVScB{hj*N`o;RE>aW&M)lbwvRzFhTTYt1ZUjIP-ef16XyXfEWZrwX|Z`Zw5_h#K2 zb+6aGR`+V%D|Ii|y;S!?-Sc(N*4?RFty`>ns_tstRNX|~V|62Sy>&7}P_O;qqYhS5-x%Q>n7iyoceYW;a?P~2}?NhZ^Yo}@_ zY9Ff|sqL*jS{tu@p!UAnhT2_w-`o4{-goxCz4xuAH=15=dadczrdOI?ZhEQdg{J45 zo^86*wA!@T^i0-2GDc_5VNq=~;pLnmv1BAB=s_#{IGVHhv)X0UP(l_SyIq zv9GZ4{@DFC-WR*i#@1M?jV-Yj8=GUzHa5kYY>dTXHhMA7#>QBqjSaB|8|!2BHrB=J zY^;sd+PF8i*T$Myjg5O^du-et+ifEe2aVnzdw*=>A9;Ud;~#o|XyYGve_-S9d%thv z?|Hvxo)$H_iHx(s`sll{)+c2HvY2r%QpU!_e(bZqW6n7zT>@P<1cu>VB;6OFWC6= z-p||kbKcL{_<8U1HvTW~f7$pyz5i+B+uqwY{;c=2HvSLqf7tlnz5j0G&v-v$!_s7w^B=_?GvUjX&-Ew2lAS`_DH1C+|Pm_*33b+4vv5|7hcX@cx61|K9ue zHoob-Y2&~1{+*5g*88_M{-pPlHvSv$-`M!Cy?<@vPk29J-VfOL{oeQ6_z%2) zVB`0B-)G~i-m5nLeedtv_`Tlu+W0-*_t^N|-gn#hUEX)u`1icOXXAHz-)ZA3-YYi# zUGMMO_;fU{iK z_5P}jpY=X#<6rUqijCjyeY=f++55{jzT~}R<6rXrl8rBVFWR{2ZQ5A!N;ZC*_iZ-* zMei@#_^sZz+W3O^f{lN{`wKRHi}x)yezW(@Hhz=$O*Z~{@6X%#=e$2>L zHm-WBHs-y&jX5u8z<4y0Tjae^iP?mcefls9GLCGV1r7rl!%Uhpp1c-}j2 z<2mn~#@J+R(#DC{gpFrnXKXwjJ8k25Y~03Eu~RmV#l~zr89QlXDweYGvDjlaCSyq( zKNkC#jgQ72weh2|kJ|W1>=7Fujy-JSXl&HRk=Tfh!?9r-hhjrECSnO22V;Xa4#Wm* z?2q-^*ca=wu{YLh{RW^3UI&JKTb=cS*Yqv2Ti`#fOcG$)b$3AT1q1YiCzcTifHXe)} zwDCi+582ojYqRlz*aJ2mh#k=Ao%PPzIO*B`VAb3HcxOD@AMdnh`{Rv!wm;q}&-TX~ z^K5^-lb-F5m-1|X@Cj^xyrgIQ<9*Dt{qY|4Y=69udbU5_BcAP#_poRCnKi-Et+aIsZv;D!7vi09r^E?|H zy+#`wyapTVy?Pt#ygD0ey;>XhdV6iG@oH?`~gUgPiC_`8k2YvX&3@7ee}jlW~#Z#Vw7jbCc~l8wLB_**u9 zvGI#G{$}HE+V~rdzhUFMjqlp{>y5u|W*h|*#e(tXuhWq+DglP(4x|r4+yf3sCwG=YZ zZ-Q0D)Lr6}#Yu{Vi&S6fYrkhRpyRCVInfgl$R0XAJWBJ{Az^KH!si8t5@J3zJ(apR zK1sXKjA=ve=-(DNg`7Xb*VO?SMXYI>1Rl|L}* zzK7e>eZamS?ejml84!22lZTB6t1)4^gbhX#ca|e%1lSE78^o$DS4kiW_=pu*6LSi? zDH-g6988{?S0S*IWa8%24i!7IewRi8=hDQqNY#CM^PuA8hpxen5xK8mwP<4Mf~VUF zMJ>Mqt}aaJ7}inB z=_e`li^!|6F2m}?8iAY(3jGuYcO6zNJiD4F=jEEAl8JECHHz#3q#_S(iJu$f5AJk{*4!J%LRDGW0%Bmn)^j+Y&Q!soA@LsMTtSA@^YY53K z&KKFKwMGBTW}BWh=^uhtDk4zHvkuYKIx4xf6{xfXXjuCYX5uwZ{R@z;t8l!iUik(w zOHOWqh$MUy5MY5jBI&|`9Z05f@XnI~SX<;_xt7cGv;2ZnJnRxlH1Y^`>GYL)OxW)t zF;ZB!M1g;NQ*Aq;XxMiMvbE}%E001Mbr^Hsk^d~8=bdq4Jpuvr6>SvYckUNhZUA>- z6qa*e`7%fU1_aL{=OnpCBWmTyz`7SFNz=o$o?e;C-n}cF^=i@o$fmXHY+DDzR^1Aq zp9zaxz<~diw40U)5)E>Q7qbQhVWH31Ivn||s3v}K;(YP~kQsxYhLQPla>%kOi|N}e zE))pXDMo~T1me>-iZrh+z_qEA5y4=1)oyKmP>Gke&qQLRZL+-qzo46}_US_UE*b{#3Vd`2VH+EpK zcQlX(Re+I8z$(es5U_tJ>@LKg1j0&cJ`)F|0b~H2g-yt2p-qNM2kDelahzzyX!{6) zD4&5ooU;1j7$t$+UH{R|4_Gp)*xj9YG;(77WX+;3PX&BnG6&$5zoCkVeuoxA4B7rU zGGCk7r5iU4-3o+p34DbJ#*Ipo+=O7^v_Ep+W`e$(Dz1Q?jj~ogaq4UwZ211)3A) zO>X(dDk6-X=C(dMc76 zTI$ADkgV?2ob+*u+O|4T-X2!&QINpY$@H5962_0 zZ17m(7$CL#v`VRG03bzL8$dnK-jOiHip?|GO|1b!sdZt%hc;uS}I_G zKzcOjqnU^b{VrVxDgbEUWQM%0S_kMiNy@wSul|QOt&wKRKeUfh=&0R{|HAs9M{xo+iSM76s%88pUXej!O+I^82Pxzi-3$3>Up z*KE2znwcZ*ha;_^Ay9O~+sT6kV-CP@$a>dKC{%nZpScEJ(RfI$=V)q0<$Uw$6}<&M zmtq@zMMZhGs4u2TMf+`=&AN(Lmb%;Su}*`7^ho{_=QyQb1EWl}FU2A`Oo%2~F7~;@ zrQ{(7iqGn`4)q{dQ$tGR3&K)7C7HrF))0-t7t?-X(^_oOwWhBdG~Z6LM)H~cgEYks zX$33r&DY`B$gByX-~bFdS1K0(C{oc~=i9H%*!}M=LF+O*!PCRhyK- zMCC>${I+nDXAz{3SI$A4KF@Z;B4-^K!y0SpEDX|-QO17hF8}^b>!Nw$_Q9^h5vQI% zOl#moS%yW`|A&8D;13qXiai7S(8`1G2wWH3_=Smq;a+x-Vy)c5xpk@okZ^!r3v{$v zNV6H4+5FN*-aoS0D3LL+(cRr12?6NuSI^!^kr7rUqp4J0#4B=}9)&L>z%T5NHd%k`oB>gCLxO;W4CE7J$tqG5v6Em4sr z3%slV9DKs9kgL79cxe{tkHi%tw#iuRu3S2K4MfG-T^JE=BDiKS)`3Wz;U7JDa|_Qk zZd!ND#B+_wwz2B^VV!ljfqKo4+o2Rg5{kfWL}V6$AvvlKyh$)%OYvD+|K!Zsqkt4Y z1e;xp<(Ro7Ij`{iFh!%N@FJkV!jJ=}q|bmJ2ma~!nP~E4jTH4a*ai@X)Z(l;iqqhC z=|^M*!r+5R1JeeWxGP491DY5_arpks+~Nux%_*3Z(2z(3n;``>g$;-Q|Mp$2e}N4A z>85Xv{bcMg?0;X|@GA|I_5Y#1t8S_GOSSWRU#s~-%}4P4zkhfCu5bUp;QI3?{10pn z>M*C~Iu9O-G+n4j>8K#&gm2S^ePH|q31hRavkArV z;u7c);Iug!?Bt4UnPD?$FV24Lrm<?g-jK2n=_Klga;|$^pP+CHm(N>P&kw6 zOzv~v34C9L($vpS!pxpqhk<~Co3)gXgn3$SVvmU+6aIuF2ip%;moDlNh6bp~yr-lB zXSxDECn!^Q%%}5ru#n+}VWNR;z0DBg$=sd2q=^Y5Xn=5|JH`nxFx@G6Zz}I9j-{{j zTi_{O#$Ec#IiQGyB1>2Q^DtK!KK1U3hzhKpy&4P>R*XZ2A=9^v}I60Zvu z@&NK=h6@ZVDn5f_#wn8UI(c$Tz+J2?^c`^L+YiN$%;s0Y@1+Yzl4q$)U~|k;NRO)* zjGDj}(*DuS<5D2Wr#m|%D2DBU;P8(seyn^P?FUDLd7w}#YR_Gny=H^7Fr>F#0{YZ$ zYc3TulLB~-TrGE?s{B1_JLNZTswpP%ro*kR5sYA(Ed51Xcc&c^W2?w5SoY8e)zY~N zx6nqBKoj$;!kQ@*E^9?~hc*JWB;PZUeB$aP|2CEz{ z!H{X;fgjZkuljN6fV%5YliA` z#M5H#e0E)8YJnFxinD4`4R{@!)9>E=h!!lh(tV^eGLA!BgaXqD(|y~-b=oe1q{lYS z$A<<3-bSLrvSY-ak5z~9sVQcemj$EPJDmEVK{x8c)5vs6zMRg zrDEPcym{2^?tT!l5ych+>qqf#-UqmA+B!6h!?W(ZJniU2;N_vB%5IreA=62xuneU! zOG`wKeI{xm-(oETM;Ub&EPL8-*;G?VN;n5#=BsXt&OIEVQ`Cr2MYs^xq&rAH9j`c)FXXy_+97zr0>~&liyL=tfc^V&!2Ug8(@sWtXV#e?lM&34twmB81goXgx zGq@`*FoBQZkjLXeICsE|$ib9){KUf-hXP{X@cX`?41R0P9N3rz}Vjjuy{mEL~-jS#`L{*#CO;UkBm6(@b6 z`UlFPNq9=r^cRxl;PgsG1;$p~%IC=%dtJdDgHI8alJEmEs5S^F`bMU8M9UGsT zeK=q(HV3#UIx_+!A)|*CLir!v?9|;q@eBrFq*XPN7#wzOtg51@cJq)+S~*sRsaRN2 z-`=3w!h+qhSDD$l(_>qeoX}wA*6=PiV6mX-j%C~68LN0TgJ>Evw%K#p>#RD>Rj{=9 zfwBDUbJ^QjC}*kUA6s7|3ejP5cB8Aav%17u_j7QVN|7%wXD7*yOkbM4G<$7oJl=m? zrmAF`^^Bm@M(d0n(lLvWr$nUyz?&NqRAy52zO1%WG@uf7YoGUwYZ{>k#lJQfWyX%g{qPK9t!s1>I?Skgj0-Ub2eW6jqn$z%Yf;4#;S%ekP9GQYj>N zf?LD=`MQ0Zafs8!`SMA>btPXN@nNwcPJjQ-s#C>{xy2qByb3Z{$2m8;oK!U}Q7~A1 zn3{8Vtc*BPMRS=I@+u*#i?yqUvuZ!K^l}l!l|PEWo`a={A zImA*I{6KC~oiz9NeEh)vdnhQY_>E$7D92Cb_mKNAKZwi9amwG>fPw-K4xi0JqNjnb>#5?)N_0@N@NlRDZ7Sv$dbEy|(we_cql$ zzvuIN4(-nG`uBXi;y<$V=QQWO&$LBxk`6$yOV1=n?N<)Lm1VrU0Mn_-Q_Pos5-yj( zbtUSd0Ej#!i|Eg*ej5%0P8s(uX+P0t|J&=nc0oY3pAScdE63Y;goBMm&Z3rA-9n=oQSp52EkQglT_Ga zYAj_5X|B(w6~pGPQPD{rdX;E)7JV`)jrh2Kh?IP_4Xo)UhRKOVq@K+c5EtZw++u=j zgz6D>q#vmkqQFUlI-dQlqnt|v`*J-tO3Qa*NTW2 zQgs-=g{2~Wf3ovM|K#R`W}EP@9Xxoby2{CBOa1vhXUqK111u&f1M=`Vbn5Qi*Y7+R z60TM7v{!u zg*@ypvfC{|Yt2Y#0y>qEv2+?1b51Ho`V!JNKaZrE&xCx8(ALZ?@)kM}BYt@~@9)}F z3rY&gYT!+(HlH=gfdL2_orfNTb;@_%7~bu;rndK1G1^u_~|LsL*|uV`WnHo+JNv@1b~SS6-Q+WNqw&{g1Y zLQzXdA02UqXjbwRx(g9yO@vg*q^jo)J~^9Rp{E>s?pg<`XCQ9aDa|jn(baXRnmSPP zQ{UQPiMC1hhvQX_m^05@9NG2PK6QSKrr^YaP_ir+ex}>CKt*#KhC{N(T9Lo9g`7cKG(;wg~W%XR(u(JIl@iu^_Smp=ySX2Lv{FxZH(8 zk?th2Jk%eCvPS>J=3{Q1A4OVLyWX1a$Y6h86!n>N=7OXn+`Yn*uqM#?Eh7MBABhk; zm+6r!Lq5UWu?4Jjvq7C%UQDZZw#D7zMgVh4{^;0fb&^?ARwy|-4jW*hw(6KyxUS}0K^{lQH#ib1`V8-tnRgv$ z34L1PgmA`EhtcTtc9UWo8I8~8H%OnOEO-uZ4Di4f?Dex53UIHeQkE+hzjhY05=CWi zp||NoaR=VA0&iVCKWmmdNwxTe9$3qZ#ph->KW4VBU+*7&X5sN_TX*<)FGfLsv}D^R zIot_lEAX7{f4KG!fn(uT&^g);K5iN@eYsC|J21!8v3fpv>Ox9!@$3S&nGB2KI!6(+ z77~JV;UU%Ji&RY;YLKwt7g|!lwdDza6Bh-Iu3w>cImI-sF^H!Ecnr&iEB}%fGPI8& zR|A8n>qXptnd$LA^F$4}*sFQ0cV?gty%xowSG2Rfsj|<>%69olS!TEBf*|kNe|+;% z9r%Rb-FG5YZ65TqtVTy0Ay|UArs?niU>Fh#o84l`Q2s0&0#c@D()0n(=q|Y3n86_; z-4FVNH<2(SL*2;~P&oymQ?h&X^TmnDSw|?W7^GHca(S61xk0LRo4j~p@=4r0a1MZx zK8oDlpIYytcSz(>Nzg4fsua26pdd3PVahS8nbi$-dzQZtxT7Y3EU}_y0L(AR1r==P z3~|%B=`0q_3}3L*#o`!*YiN|AP1m%u*wZr}k+x*D2VrClGEe2Ksgmn)Xlzc>Wm*}{)79h-BFSFRV{D5{z%(lD z&S%L1EGUIvT*LxXGf*^8>!I%b)s}@0$^f~%s6};>QRl?9rVJv=4r=uDIu5gNdpHha z93gr^7p)Df91HxqcwoEhUwMN&IZc?q0Ao`DjN$^EIq5YSpz3duE`qnQW}qoD3SANT zM&{T*3d37uilk!eD_|Krntme>J1)?Q4$Ft!1~9{ARN_Df>U)Xpn8`7?*X+ylS=r$3 z=`y)D?>reIqVhOIu zy}VJ=>0q%f!YE>3viQgqna+wF@g>wQgo^JTThPwJp-8aNh0{HvQ!X>C$|vGZUAE(Ci7 zVs|3O5gMg}hu9WNXIj!J2sW95oD)LXvIPjXnfBeQAl?^+&%(U44O|G`aBb+)Da_5<*uRcRJ` zw*ExOs<%x$-P3)kuwgkI&W#a(#~3ALg@m^5g$tLar_RLT#+4VN%s_uKJ}Y#?%mytw zVfn$FDx@GqOUM1bP0@1hKjF{pJFu@>uWP3L3A)TG4qJ6^1J!p6=P%!58V@EOEdnw} zv{vFdHu`exZS8;wNlcp%H2Dyhi3LO|r2_(47XY%DMsbnM7ZK-;8PM(XpfiwfK*V(S zyEi{+&f)EzLlM{~%^5n5#QVY!T|kN(6-5cIXL4G+gNC2zWQig=GDx0Z&(jZw(BN&5 z1O4Y*x;_PP-Q^~x5dd;O-0NTgKcN*q=yx9BFhrgOc(4+di3)suH?cr4Z@Dg8Nrkcy zC(?I^)39oU)B*9f%UiMWaat}gPYk^^Deio35{0x8B&Q7P3hkgZdrbK?-JQp(HKCTW zw|`{dPk=lv0~B{?!oUHuGZL()7-8^vh*L==PRqWS&J#Hzt94iXhr}pG#2XDWM>28( zFlZj?H|L_0cv#3k*S7hj4nQ)W{`i%ps3lEMofFFb9oK6M6TtDco}cmALT0I=20%yk z98zB$q^Q;)KEx#lk_Gl6FJvuBu}Dfo;&?-LH6-D#Hvo1E-XTAD{2V^I9r>H-1+@l7 zz+?#I$r96-ao{sxK=;sgOvmOX0vY6F-+B zwg`J9bEYRlW`)%VIPMszhVrx%T~0q~V&~@JRnX zauF4-gkuUX=TYYAff(chv0|Wqys`)#R9+6y70OQX6ohG_T1ACzIs(7id0XUBRt@=q zix!d@V7eF=fAlL%S+-LPQ;#(CytflAI z0=^$Mh{~1a3E;nX(FTYxMc4Vf%1=GDixXsU?Y)7cfk@NM$lS^_`>5%*t6jr8tPv zjNIgm-@mDzllzmmJEO|+H0MPBU}Wxm>$+D;Ri=9~e^cCMWV7hd%feJlpJSVLZ2*%B zMv~Da@OzgWHJ!%ev+D(7fotjY>kgX9MJKQeaa>Na>nw@8e9svO>aXWH>$6(wKEHWv ze6-q))3gWa=~v0vy^UJemNJpvePRGN+6xEg*}POX^_a5VoGD zGn5P?bC>10A(4@3vT?Odc;4)tJn1o{GZ=OOdhnH~w6LGRomvI#&Jma2#aaPW^G|PD zvr8J!_Vl$^C!zIx1JoRvYTF@cssc(O07N&m!bH$Bo;`l*I6)vu_zqdC|(s%80xT0Ie$SNcO;CydxIO%Fi4ZdhQiZ%p&t%97GJa$x~OU0p5-H%EdO z^dPX_hE+*B9;M<|%rbcgp_C^e%aZ9^8HKC|1Uf+hL7BL`&J_=l2!rH7hlN7m-;lqt z`M6}{jK6PqJUJPu-$1611jU>?ro&;3Xvk81TZ4~nKlVZ=8O^bUs{nlqaJ)=UAdoh9 zWJKl^uotH|Wq!Tg{HLKx>%^;sL#coP(r}XgH&TRljBOksm(f|HMCfoXa%QLgyt{fi)4_#@N zgsi$BR5`;6r&{sL8P0hU4rj!@)CNT-xb5@mi8VX~{W>gtYyR!cOPcV(=W0f~lhL=J zcL-+wZRwnCehYE*Tv0W`oED;d((#zaME0?pb#B5=p~^@*v%)b%5-0|@h&WQqBgM{i zdH4l$D*G@GS}&xy%tVA#UL(&HVpJl|G=>$GZ;oiHyUerF4n$lrh6v>FKe=MsXejw3 zGwOE`yulBX#$PfmO39g;e$t++em|*?sJ)_>%xKsftr~;2O~4VPkbu&b*n<$7%I2X& zCW|C2gbC$~d3|{%O(FyaLKX56TwY(9YJw=t=bs3`V;L zfrUY!+gaPLlv@o%g|tx55r!bvr?ODWk&_1U4_0|xfw0`X)n}#=E9W(n!+A{q$ddsQ zmkudmSR_D!I7Njj=MQiqw1?Z`ZsjCf!1JA)UX-)zIs6EbX2_{`;G1TXzy@9_cBldh6$hX4!`SzD$(A_;ofY|%`7qWWBg zsX`itN&<7#kPy7#vSH`zZitv0uNs*!#ht;j;=^fKTGj<11-4?1&k*TE#;J&#@@45x zgM07>oj}wr!~HC>#)TzGbzl;!ZOrx`@E_S+=l)=ewRU%PRcF2Ql*$}NDbNb7v)_}`lm3ziz%XMOemhZouR(sm$^#F|+6F<@ycACAnX$eLk-nWOKN8V~<2H#B#E zKF;cl(H7t>TOyN#&7yJ@hp5OEtu6KuvTqC*BV<~MKQRf|gQr5E+*pgN9Z~#=G1o7R z-&TOA_Tl)Mq65Ywa19Juz&I-2zm>dJ zY`D_j(ApB^LAc`u*?E~ns4rtBvDCzRX);VK3f5h+>1y{-?jFixmzh~8D#ztw?m+vM z-r;F67+@P;$iSe#%u8VQ)AP#2Qc=1h!FllG&^K3KSlkVe;E4gNjwpu+1pj7rwIf@_ z4*G6JVE`pANGzUR#}@1>u8Ae4ZzvFbDoYX3D#veo0stnJxvUjoB7!)lghK(OrZF%%n`>xz zfo(}OP2{Z+LzeyqmH??<(rw_M9)GBJ4iGhJHSKuQ(axq(= zt(Txt*NLDl5*SP~SLFuPhcr|NX2)acG7Xk;{v;}JZgCP~6{K_?_MWcD)B@EGLxa(6MR%rnj710Gz#UvE-vhJSBpx{exS}u!r0C~D zDH_%bAsvJx{!w<-(mOm8xnQG75qe!DO+;LmC~i>@06L{&%6^C7B`zzJ0`>*gYE3{D zf(`M@Xu=E%Yr&R!3FkD@O@Y^tp%X`J-2_O5C*%BdWpWw^s5g(1eW0q{h&fb5We$J#vv?83e+ zyOlQ^*DwcPN`CQVV95DNyRJ#`6l&WQzV1n`-6>m|*Tm`#mx}BZH9dN5m?(!K`$k zE6*~aE{uP{Go*rTKo?GHy(@5dvX32dj`l zZDXGm)Wwfr$@sj&vllV=4L*8`C(NA%KWa}lL0{_}Hru=|$AEvZyDOqYw>E4T)L`^E z3M>rG(jg@tT%HFX@rWikN$e$l248;dAu*M3w#pHn&~K~=uN~KH;ArB)EPxL_$-Xvm5-6!O@7P!H;8XMFWT~_1gq1cOcc*H5z6A4GoSY?$I~SLI`T; zNo+B{LGwR7o9%>UCX{Pt=MYAMfmu5s)U}WixfE(8@a{fR0|6?uR(fk8VKiCwH z-SYmq_u=D*Z*?fH(~Z|*+we-Z)U?|-pLdi2B$CQ!AB zjp08?FT6o3w5*a?6~LQ-nhgyA)DWy8r%F)6WC*{erOn(TkZ}htBW_6#n9Ro5qP$Jj z+Arp^>r0abSS8dWav20u*NZW2{$c-<`$(WwZN6qkdSqxP_==;Z#g-WyTCz|(Ax{Xl zQ)9G>IscFaf0=6E&_EDhLUt+^Sz&H(5B2cjAhKkgzHxwQP-GRTqyD)UJxRxuzjPo9 zU80F{Ax15|U{Q(?8@CN(5X>9-w43h=2{J(Af-U036^<@h-E7e3|r%x$pCdtNj~ zlf-)D{kEqeRu*>F5%1$1PQwKWZu|2^6E1=I;-c^uh{CHAB3DfvU-1I5;1F?&kBTj< zH`&)eOp6&UsR+-8M*ZFw8{DFHwe9bWK9>pZeiV04g?bMbbt-l3RO%Y;lS11r=8Rtt z>YXLgVF}(xA*hUzLjW%g8L2xeFp&%(Xf&Uk!0X5t)Yx;DA34SRF-r91_;Q9oL2k|O zeo-tZ1OVD;#8#cf*U}9RBiq6_V^sivzZ|TaX~_lljMGfgltY0Q5cwVFl_W2b3N4*f z${d|*r7LM)EjO0eb4d#A=m=cMp3D{?*33@v4`gW}JF7aGl{Boi$nUhT&s zSPE^j>`XKcdHWJOTf;z(%C(q>?VLtBqn^19loBnI!<1Edg67(>E3n z<5#Zq$1n6@vzd#}LS>Q!E_-^1_}>w6!|C6hMBmDaf8oU%tz5!CcciPk+ECSBrm!QD zX0IaoALvTCo0XQcpo#GZFR!mGKN3GWv!rSpB=3VLO%UVVEEd8!;d&h%A!~)^Oz|)H zfs6Uua8M8`WMy5mq8Vb2_-JQPrFSK%NIVdXP!3eL?+V=>DF^-Vi+ju;xZU2~RgLbk z=jp{9dVhZaqLsjV4o;e55v?%R+-= zl=VOQqV?z;@E_?u6hUU9DMAz#8csVD#kOFUGdAs-86Oli5iARJsnnN+$$wWQh3p^? z1)mPlPcF|2AapvJ@c_I5){9QmWE53ZA(o9botR6Q|3d1LKu_mxW>dHEh7IB3pM7zc z6Bvz&L{D|Jg!xk%LgC5#FR>2pjMZ1@LWcwcE~>@UIMef>_bE@sI8dBZpBl$@nulj9 z;^zh;Uh8+SJy`xF?)!4vF@OK&GkThXJ~ieM#X@=-g3nd9>gKus#N`vm zPE_ZrG%v`G9BL@S9;*ocOrZ{xypl*B*b4ZRIgR_^G*+7XENnq4iyN_Ths%`4{R#Ji zi)9VD4-=AAgHMc|`a{DJuAt4YZ_w4A?l{90v4lxgQC7n|0~1UMA0=%_cgjeoz)5Pc z!;l6*%g+C+W9*XH)x5ZQH=vW*#zGeVjsOI1e%A9Xxz=B#U&%^%cq5W-< z5^sPa)iAL3e)$Hs_wu;y8Y*9}=4=bO>|IGSBHV)HD*(o2o6oFL6eWWvI5HrXmW=ap zk|O|+1t>|1)cy5z_9i~*fz3}#liG@Uni%-XDX{< z)-8{w(h1(Qh!bXy5f;e`!l`qGD9Oj+o?9cPC)|+=Ozj>x<`zsh#Nn87)eGUrII5O* zS85`BZE7oe>Mv}nFDPKX!zV7aS3`*G!Fvb$OjGYT_U{ko;{nKB$@5vUc8AD5l%GV3 zB2zMX!~!@gDM$>61sNx336CQ;yCd15ic}NwQke_KJ31!Wcp}e}q6Y?d2l&Pkj!TN? ztYq3dIxZ5FbsvR#jGW_2mXFKHy_r4U;Wuomd1zZ3WwC@-qx`M`0;~Oj69*#Q@@LxH z+oSJ7|3G5+ebqYhM#~8#J1$Ii$22h^V^OnL@%mYa5P53nNdm{+8^sC0ov~i_D?;v8 zsy&NYfgt8HN|R8x$nSTA3i|4b1qAg~ii}03V6O>eoiE7$Kd|dx>}u_3IoJH%P3flH zv5$E_=6!YJk2F5s@TvOmrhnW+waa@yzjvnQhiejheq#5RcHidXe@g!I6EAk^CYHI~cD1Xrw^hw? zx$a8GvS&>yEu}o-qKfm92H{;e69*du;w*DP^EAKCzzN6~LFSj&QZN{qS@O=I%#kw3 zyD7$>$Vm0Sn9qG_!-P({7mh?}C9!~qMrlEB@nqm?OQeo*IK_nf+AV; zOqTbDv<~>3Smf*?SSx@}JD#v0%cAb}OegS@qE~aP`9vBlA-k+>87?1a)CwtZlChaH z9b@_YvVc{9EqVhR3AD+n5 zm(*|G_^i%5F>~xlJ8Z%J!S3GS?*8F;-|(Y}kw?DnnNEV;j~d1Dkz<3a7|J!j~O(v)kz{ zR0X|ND-m|77~>p^R$-XW*X1Go2E@bchu#UA(>;wuHJy5CJHars4(E^&?z4ggzh>hz zxS0nV@Gw;Tb_! zo2*sJKYp~cD{=!F>Ko+Jd`$=e3qF`D+euD%Aqr8*xPZ>F_JS){p_32}xQ;JaN0p3o6Der6pE(4X3{z8USW96pNOioCJC3F2BEe`SST zVd=2y3y%~R%V$^DmzNj7U>3^D%l5=V9(=oO59b!w%Y~dhM3iKfciLn4#_q|ra*y!;a!EN!6|-*UYIl%HTt#dF0fQ1E@GDA>@PjfUHdpxdg>;Ed!qcEI_+0Shp zv7P3XLnqq$BK@}n8T_GW^Az9=vi?#y4d?qbiyC1mJ$(Tz1C37QbA!d87ZthL)*iJ+ zDxd@>C+dvMi3&L_I$0JGMJerYX|dPA|68Fj0IkUR?6MXGMH9@SWva{ph0I5$a>oj7 z^Mzb)LtQjl+wzCl8lsj6Ndgq_oUsWad7Dr4MNo4en^rm|=!JYg&q@a$kg`JsG)ygA zz+?iNg#8cM8vo%9bjN5!H7;h!STH0?beBecc86D#tcM04kl`3<$t zXl)-mN?lLn#h@0TKR|UW8YoxM;DClg&@E+yC6}bd;GQ{iW(xNzOBomtUGZtuDO1Xz z+QN8N?b8!{w6tkBZi5UQ;qu$GA z=g#DhvdA_+DvL~biEx~;5+5m$PtPrcB1lm6%J#&qw05TjKngDFjHD`VkedcSes<#_ zyG1=mk4Gqu$)pVQB}Rh0R^=9vTr@3#1#$rSJKPvHLFUmyCbd9lRa%y#O8*g#>XnNd z56S|h))$KY{$k`L=pPsyiLR^PiPAh(>b{umz6LjGQDLSUjyS#?XU&-_-WJAjyZj>C zF^x%b$!l0$B_g<>ii=1{t#_=%u(wS8Zi&^p+5PL7@yrBi$8FS;xd8fA4xdC#M?%$@ySYsGTm_@q zerGoT6c#spr~mXulTPcFKhf3N9tkxMl195vVQDnpa-Az%*@w9AD}-^xM&WkUVbhi! z51VgULMOoFYA1Py4VU|+5Q-cu1(hp~W5XoZl1`>n+jmWwxQnE#V52bIpITTzH5&)& zvUn#JUzEz}m9)$M|Kz@w;pT;=zti-o*iG-}y@AFbZft5;X?U>y8|(gh?YlLlKjUw4sS&ohLKIrcTxw ztvWi`i3gOC^f~^Xb{_c`vv5_HP+Q{fGbvTbrM1t(&CTUA@aa}EV0)@ z?+gqHCd5%z)}{PtKq$P1((uHDOYn1JWKCD_y|~Ds)IoBZI=c9zIwpX~zZh3K9~lWL zdoQJFY9ie-63|i)ES}F?5Jk$rwqfca!~W>;6Q?5LeGZy%e>h5HjMxu}KG_~Sj$-zn zbAJf(ZQ7(=*D6hR&Igdu=EJ4@?5toBf^hi@K~b6cgq)HINt3rTK+JtA`0V9nu>0V# z&>eA})zoJhUp;twa*mC3-LKsk)I93(h1^8=%$$-t79X#nHc)+uy>rBF~FN_%@wAz2aUDM{%d{xogEp5GYIVods-$%}v}d%zSO2}!Cb z`H}6C;)y*90##XDsRiQ|1inWoC@>BL4Jc-jBbJ@@ML(xJI?_pW>4{w3?75+gf<)g` z`gSEv!UU{LIo{yg2rDsSaA}q&xh+O0qXf5W`;i2QE(|c}NOK8WgiA?UBUeW0fJht=1WBgr8PeqF0^oQ;E#S;RxLg=% z5L*zS8Q8^y2NGQ<(s67S`PEJwR_H+b?it+wOyQPg4lWX|pcW`4WXpVlNl_R;rKy42 zercl*KlX6X3(sCoCnN71lV~&$)!D^$(N9TFB;Jw6d=^o+O1oH|c@&9E8NN=v#w>sY zP>Ob9m5eGRR(YNlPT8^=`sN+)v%q>j2%2CQ-w}^nJ_|UTrT||Bvs@V`E^5#li2HkI z&lkC1u(awQ*-%@O!#)1lhwus`&zw>jM?2ZGb~IO~jR}KQHPOHU?o(wgWpk3Gllp2A zhJ27-v?_dOnO#PiLvexP8fPm=0Xo{y2o7QIhIJho@ERhcXOutTGTZ!y{OCJLA6a&`#^ypX-8^5kju9Kk;@3`ler<7C&e^OuAQ!S|<+ zS>fpowH0Y?f0B#2S0+P8jI>rFfGa8(SH+>04r^S(PugeAZE&SWNg5g^`u)#rbnDw& zUl{E>5fKmb?ZcyeA?zL|v$m}V;`L6PuVO&3TZ5F9RW~LGl*}cb@(88XDCD0t4HcJx zn0%xpCJY>y!WA5AJmN`3>sK>nFlPUejni60sZ7_Y?g)I6)}+yik8 z*c;ey)Qwq@+Nwog!g7|mnd}S{YnJAx%Ox@cc=x%rjV>97HouAK96g@_oSl+W5Rl2z zge0>7gbHg9sd1VU-A~JH8*~nv1q59RZr{4`gg>%j%|K?T;5!x-GjWN46-KS|?JmcP zySzuLK*yvlBHkI~Ok6o9#0n%fJ43ox)y8r@TZAk?eB{1MIcu&F#qDDvKoD>)r`bOM zbr!REeK}=MDsxwAhMb~x2}$`+M#D)QI~8SvpRfwBtmY$CvIP*~3X;JGcdzhYTp_WU z@-)c|%)e`@lymsKpc*TxBcqN5qrz6PumV8DTiN7#hxoq~BBT^C01#-+L|XkL?fe(H zD$wH`smiaFo%W=GGS(2TQ1{`%n@v|Vm2B+81}DhSSOHM{=l*0QL%zV?`T6E)%zzpgy#Bc8gk^Qi3^sOq^0gNDnI#U zYx<71d5~DcEs{Cb2js*WQ$v5O>z&L2dnai%_1JxiKIJ4L)4@acq@Hl}aJudSocZG$ zpOXO^DD|D1i15NW9f~T$U~|_DcRQP+pLw=?t2%KHf~DnlG9VUVbyw1}Wl+JjMT`>S zZP;xZ?w-diUZB2idNZ6BsvP1HOz&}T;`(ve~;+DQ1{)nzf${|n(saM(+8h< zVCle*9;n&>%)W2g6?p%@@FxjrCzs(5^gY%W>3Bm&B$2rnHjnfU@HbU?g!@v#b8Qyk zUXjQmy{VfoU=PoEhcenVqJM`tod-I(gOS~S#;{05$q+);%G=MYxCWZW{Pr^`M+kmo zLqZrz_aXHkx!n&SD4O`hwowk52q$mo?WgDEn}M?yEX-L!drB~;-Uce5h>f%zp4m26 zAGsFEbMi0yDq@iMojfKq@CP;~weKgETCep)Ui|?=%Au%=s;UgKD_hk4z`j~tzF?{C zu5`g>HIRG?X_!)Rl0w)Fg&NsA#K1TrKV$)G} zcWUE`+uaUz@n4j|8yF^4GN{Z)1$`I30H4f>aR?PAPpXTC2Y)BS-cW%e1K9>%BS2v` zU^--ftIKIehK8$(Ylnvhs{SJ9UiBB<&i&<$%kmp${Os|lzKuAS^r{^mjdq8lwngVa z1iWWlVga;ncQ&~mT{u$pba@wnancpP!f9e+@IRe%#c&2NBdo?%kvZa5L&-}_qKg<| zIznk=MwMn~ix;R$RAmUI6r@GyKO?o&Km+!PJh1B%_#$^V)QID7`!h$5bVhnf0|^uv zcei-mp6qnhGl<+GGosjd2hUg}NozEqjB%I=S%{n9@T65ScMCI$rI4VyvSCd&+I;V^ zvuDpn&I{PVz4p_=yf_cBf~8$$48kO$yX#y)c0Q3Z@XkaMcW|IV*OX%fyxEGt!RbJ9 zz_Dt>zbY@!K(CbEfeQ{!i=@rmN(br)(BH(!rI|g%bFwO>jZ3G<(T zH+z6qazjzF%~8{Jf^t$O-AvXx5LxMqHbE@1t;iW-5Fs=(K#>IK=I2-lrI~tTCS?e{ z^O#KULXiS`7&pmdvZ*Trwte^dw;%SQ0A!M<0K`Fyjp%B2T}Uc_!eXL|!C*#KvV=2B z!0G@Qh^0{YV#v&O^af1awE zHHvyA;ng=v%j(gQ!9IKliX+Bl+Hmf)w7Pyi5+nT~h>E zCECJzS6D#=s6$h0DQ1dmEhVOnYzkU6GL(J2+$wR{*m^ioJXZu`Nk*K3+7RGxY^!{r zv?}z%yhej*ZQD%(CiVJXzj0nC)b4j4X+0V_tNLlP?fmPVh&S~+mJnV6ToLfd#a<`a z6eOhcfw##LrQxQ`8>cGCy>daUQMy;bwfk^Ygsk&%H2icZy5I5{#9RPhJEuLUmzzVp`Pih|5Fq=u`iRFapd zQ!Jx&bD9#8PRxrnhQcDvi1SBXdNKZ(GJwg~!y=cEb2%0Oin82Bco$Oh_eUks7)Io?q;DX#B z@s(ar!=KFSXlYcZ@<6GPJRu#@^s-8@rQ@~MkMKo&%-kye&XjP1iAuKr0B0mC zo5jl0@jnv{@dAvp}cwby@WP*M1{e#2U}v3V|Nf!2iF@bWDFXu8@U(Y5%ZOOFE9<(MZ~gi>W(As5otXx z*ct`es8@2y){6K8;KM8vqiAPZ_shJ`ZM>-n)H*`7}~*%uiQSsAx>F-a7x9n z-_PW&`M5xk3v84+9U69c+JvmcF>k7Sco{eA6 zGKHv~W<8<9)1P#l1eCRwRU5Gy{`ovxFf-gCLerTA2;NHZh(LjPo?!;fm%z2$D_SL! zX;Ptt1PE#avO50%r}zD+>i@4a6=N@ZA9#;7zR}pwFkb(2^$*v5vGxzt{A|tV4*t-= z6Aw%s`0@S!asM1|{w?yKe|#e&`_Z;Akci-JCI-}TcsQ&94DN<*ChT=0cvk`^zfn*C z*T(t`t{W&z{y$A;IajNX4{?j@Oj$MDk?Zz~{EC~(9tx2uZa)V!kS$g|g`glS!uK}j zb(k~d$c3uI90A&hPP0Y%(Unz9k{&(+E5RZXrb@6t?~vKl5vmlFaL*z$X>HScst={R zjX5pMfmfO$@l74iFxM?=C)h@=0>5e-1s3$ifw22lEV8(BP*s?HS$s?487bY#xbOmK zD8w|%R!(obL6=z=ITKkYfv8<<2bN$fVRV3oad$IXwkk8_>MZ+>8zupgNVh(8l!WCj z0=%6LcziU&H1OFZ@EAZAG6ItP2>iE>YmN*`J36|qPM;Y+GkNAlzd{PxbWNsd7>Kg% zRsdK8$&yM4`)sQF=&8M%nhu8`eBwEQ;c7l{X)0%R zCy(LK?vuPCPhYfnb=SjRhO3MH&#i&QK#${#X^ew9 zBjNWPKHj#MJgAfD8;0Q(893}+Jb{r?IH?A5j>FY4u6Y2liAj)ICV$^SM^y>i>bN^( zxpbOMX+=*H{P;xDRMK=}Op##3guZbU*STznWI#Pga-fuY!;9aAwDk_rjf5A*s$J?-HwPi5afZg(3hV<^-JKtw_bUTg1 z-O9c5-S{pqZd-a=iM_)lvp`HQ%8SfjL26dLaMN^Qd{K>PGHaJG_Gv;fK3j~B;|doc z7h8{tRKB${Lc&njYG}Ap2s5q{0tI}chQxQe5 z6=^5bq{Nq+LyrlOBH2#|2bHNVBPdLX1(~PNB?O5ORu$2w=(lg&aQ5~1;Uh=()&c6E zfaX3aRjfS-+a4z5k!}cD;Wq9mb-eI6fIPxJFH!@nAH8UgD%#mY}*<)vPfCEE`!Kj)zTRK*W zYL3KdaG!N;JX)=iO~mNUvdLDUB9)WqwwarQ838g{!PAuQrta0>4*K5-M_0%S(ijm5vQG3`w2 z+0IC5W=^?(lx|g#d%_OWs(ha|JuD_Jg5a3S4rdnEju5sZaWj}=PFyo>)oGav3qf7w z6q2YQW??P^Ax!!(Ji@)@TT!f4!*MX3a)Fqbn~9%B4!p>H&7{zz2AOocnqI2~Wk9pt zvucbWF$^-|tI6}4hg7#&wX(5@RacW@Zqu2Cl6nHdOVB^)L$h4EM^wnQ8p{_!6F`RG zOHwNM4&uot=W;&dWb zpdHLq|Fi>|Er*#=p=4+WEGExST)oI-!*HEs{pHeKS0>`Ov*|pv#qgO_Hh$s8X zDOzx(S$SPEN&;P;n2evSa$>r~|3AF1w6A5bIp6dzni8=;@BLA4e`8I^7vs457pEN#3$ zQxf5tarxA0+AV(dtF9~wg{bk)@iW)Yn5`XGtLkn|G)w|hZMhR2Iwi%iYZnMoLWJ;% zGwQFDl0eDjbm!N`t??p4rnK`a_@CO4DhI$J?Jf^TYzCZEg06Xi$Fv7H ztll_7U5B71P#Y%`$t;ON0@(kn>fAP%ec zXe>;2rW{?|^&Hz48}E*%vc>9mNtA!rC$TCfyV3s2Lq|JL>`lqoDL~#1xFHozW^g^t zrDq|@NGRtI?BIH0IIu!b7YP6?7^~VUNIG*Ulq~~i6mgbhTlp3?S);=mRHV<&Df$m< z24#z%SCgms^O?0`5`UC@^qtIw626kcY@&=bwnp@N4kVkNOqa5LdgHFF$}PVOs}d0* zaEA~Aa@F#?+^*;h3D#3b#%7DV?6i%kQpIVOEj52ga)V+6gsWsl)873xCi^}m0m1yr zq9)Y1)Y|#LB2#c4w`m@^UuI(UdvHkAZ}1AD`Qe*VrU(Ox>b%@_G@_YF`fg4iod)$~Izi}5%GPRAifjP|1_HihXMp4v$jO+zhob$qiuCjU7 z*)zb8A@YqRZ_LcZr%D+z`g-KviOrWxU|P?xXTUU|;{p+r{+=)a#5AR+2vo*5)b66S z=cTq|?Gc_oC)PIvI^a$$deMjAO@(z?eX>CwGm}G&8SX4nS`P3jP=3Q;4-)T2_OX}O^ES5M#c45TJ`Iq&GLJIk=W#R}duS_bY zVMT7E)RL7yk;=y+h^6(ixaBu>pGxc{HsWSWFFusA{F)YtSqBTRgyY%T)}p~cX^=grB@|1 z1j#PuH(t<`X}@;(XzP8>rmsKj2Dsav+1lp*64{yKU{nYhx#ZPSX=w&qw302YU1gI< zzd&L%3#lOgg8%G>dRKr-CWnuAAxN^pHZg8Ql|GMu2!I3jQVwZX1(wc%dcEXPvJxr`lW zg7bjyMk0*!4fYwy=W%yP{!u~5r{+Kmm{#DL_A$;>bA{yoBGy(D?#mlF&4}*I;ns+5 zusV3!8ig&Pc0-y$o{TFV0*Z!V+O`cMMe!k#e;U%p+*)$HOtu2#Gra~}y@Dm@nDX=f zy^R%j^(IEqOpKf!$Y2Z^VQSa%s+t~xON?q18Z>tYrw#H|Ni|mpO%@%clP3w=x|`3|1x?`3nz;g*mx80;f`MWi=h987FK3ympww(7}5Z}=oc z;mQ{zM#E=eO)u-*+x$9Iy&?hoQOcVgc9W`#kBi%Zaj`^4L}Ec#xTqz9)O{BG{Zcs% zwl<$uCl0$ZYxyLS6D3BKLj z^1cji3n=WmGuwXhXfIcoX@F8yT*dhk=LP>m6%zBx4yi2uN+yq6S<(3jBFRbKfc8fE z4rDYT@9c$nD6)n_SxOx)1z=s7c4q{D{EFRjleB+?7*4!HddUgjg)damyF8DNWM82N z;4652teh#4`O)>TCF59k=0DnmnWSnD*bhBuYqXJyrf_Mcp!wHt*zm5)Q8iJ`_*aPe zx?dJ8?`mP8fS9BR>^_p;1S!2N3=&CH3X*utYR+`~okx#G)Su`uXszU0xbI%BDbA-r z4K|lw4z(Zw1ufk65VycV4Ak)BS@Z@~28+SeqPRnDT3!g(MYzLi@=}@I=U!QfFeJdr z%c*6$%A^psSwuCEbBW^eFI6#yHzqC5|)B?GG36Tw2|#ShKF{ zv3B`g^v~oJtsFpuvgyF6$iF2Dzcg{vu}v>gHBcxl;-&bhjRnnUsF|lyV-c>1jtQBq z-L6Pr5Ok|bITHAYk8lmlPtpMe#7S1!8e6WV%tvj4k&GWm-pYV|7Dz+7yqJ449QqZ5 z@wgA+D=vq!T=`pP9enjQ%)BB+#q<894Qs4%%db0e{KQ@ofNnnxviqXSL_gVOKOMiI z?jsH<1uDzV9jiF*kf~XyEGjB;71#pJ%_lFH^Yqlb4!3DNJ&AF_9mJ2yPjek6k=PcB zqZ|}gRaKe1+QG`y4h=kF_5VlqJ-x5xPV=uf-)wrN>C>_AiG9{vYy8KJeGP^BH|qXr z?Jw7UL(R&;fA+xNKky3&&h7u{{g3kYui-!c8#fXyh1@XDnYugA`#?qEXQV*||+P*K(EwOEC+_m7FE0f`E`DKq2kEG*h~xVI11x zJ-ACOT?(uThiF^A*`j6Nwsh#w9&x(hxTqWoBwYfeyprmWSyT=`aNe*^ilD^Ya%#cU zfFTIi*Eb|_d~9K#|C!BZ{oKF{U3AWiyv>wu^hM|2-5%vSt~dldXv-M7Qu38dtaeMIIpJ>HER0 zUv<59OlKZ_8fp^tgCzf;eK8N6q`%Arw@vnHn<6p8CYK@tLMDlxj8bWbsydxnVLdB= z2KKAwQHaN(@&pE5VSYZ#bt((3Z8E9BJ+RSFn zJ9&hBYjN=`9X#w$YDDpwa>29Vo30h+DSKcy2w$KNEz~tKuMci|Ov}UFbDbylv{`jm zg5+PX@i6vY35-wxJXE=P)nU07#hv`UuU1s4fabghh)%#)} zE;+{x>b|qBi?D*IGF?N&z+xuR7Soa2h#&H#p~~=otSWeX3B*HWQ}n6}@~Q8!+bK01 z!nWtwtg#%kg%Z+9z_ZV9s)q*&?Ut^I)I{X9A4t$P${p=ja~>lXHk4pi>+)0No zrsGpH13_;5zXnM^L+C1~4-tK*;J#FS>!U$+3UiZJcfO*86ZVt-i8N)U zUf-YGwC*1%KXc;np4u~aZ+Zu5jrg^lZ7HYF)lw95@+XvQ(yWQ7PsVuM%4Xv?%>5cT zKeJ2B#liC2ZdgbGM(@5HH+z!L1@+Cvt2iptXRe(&cV-erm-W1VVN)GK2-6Ow5~6aFKc2Q-&cepB0tV-d709Ud7CtLVDFA)0U( zrUIN)+z%D-D2Ihf=fdJ$6tfF#$preqZot-*|8apIrRZ#ZHeHyZd}bj75{nm&L^RX% z7Cz+VG|Z8-zi-ppgdF$x-}ge2(G8K~stb8b;c6wszIKKrT2S{DPrpESWH|`jKwT|3 zs#-2GEI6>zSWGyLMRMQ}F<;o+C-<^_{P59;!f~w@lCfdK$WKB`aUx2PBvzEyX4)_0 zDexdQBS7<93APD-6enNIZoFh3^t1OpYi?uM>?`n~=^f)LOYzUw6{i4Du^`>XYJ}@` zD0(^0ub1=dPxK*$M|?1ds_s|Zg4&-vm55G;j^eWg`K_-yAFc{wQ$TEB+oRPCg}@`2 zBM>%ZaNG(w5&tB|b5$`T)*S3W#_r4Cwn$@Gi!SjpSn!|@B}2WCz{1j3P8 znJtvN%kR3RqP00TB&N2D2!fqN30_`jwc?bL1BErenwhc|=r>8h!QY>T7dZ#mwee;7 zhV9pmABpHzXh%npm&Nau8KvOyQi<*)@o6ljvh!#i<)vP(Uqk{^Ht1=1hPc5fn5LI4 zH$RDIKbQAEz40YykUGf?N3QtZVH8+{Sg~pyO_@U2+!*Mt1TBOFrI(prMfDJ$ck3rR zPo0Z_A!krya;~cu79JG646{mP%5_b`0|!(TcUq;ouB(yq|3~&s>}z?Z`Oh`|Sks}{ zE8b6ehZ+|fzNcY-{ZQR^*8XtKM>SIizwLovec+J;-+$o1{`9_gc>CV});CY;lJ?wc zJ<@(;uXoj_EGCtWkqscV6*$2z0lq~R&jNw}Y}t%IwJ)Td7U@Tyedh-e=!2x0D%sAR zEzDq_3;x${O0a{(drdpN&LV#sQRMro!5D++j*xiWQZa(X3ko|faKWn@X`(B#!bJ@N zhBF=Gz;;$~B4slt*(HiHiJ;;X)EEZ;=%%T1B>cnl;oa@H;E8c%FrY(G^_!tmy!O9K zk`DnRRbDA{N5Z5FhfP;%#C(W+L60!!S{d8ZB6+R2j@q@|e!ho9TU9v}yU__5yF~WH z@w2-TIr9`pM-rp=X*z00sFh&~${iQd&<}Fdy{^Rv6MY>PTvU<%Nk6Z^_rsGwL>h>t zJbfm9g^ht&lWfoO9sG|4+H;Wm;XEeubg?B(f!ZL3RY}J6O=)f%P81_(-|j#Glm>0p z1~+I2n^T7=wcRF)*qE#GM3u7F?4}Q=kRRQ8b@-3EaIzqwdhgcT8cue!8MM;ik z%9Eu6WHSG;O?9S#N!!pj&=WlyDRv(mh|J^Vmx?Kgyiz&=K?4Yeg(3CGFk&$;*pUUs zcv2Lr^PqrIoysBjw2Zj9@*OmLCRgV8ahfz!yl0*NyUNBQG(W13u?sw)BiL;Dnw-Q! z+~g}j!{VBxsWi~=?rf5~!ZaI*Y-LyF8&?(JYWeWxLFi(6ijIoQX98MtXv9$Im|njK zPeYzCp-s?Yeh?YqU@y?9Lkn5jQNEB7{)?I%?_x=*4D$1!Sdt@f4** zsT}8mLQPuN@QOYiRCixz1M(l!k=M)SV#>XYUhdMc*nj2ZuMSHPWQ4}+e?#py8W6D!!hNItnV&q)`V{`sJPaq}}=e$qHSeLdYhd$-(PDuU2R z4}!qJL)KXaoRJxp7pqU|%<{OkeF2E#o8h6@#ohHj-f|&N9$ngsHb+c(YKFXe##HnB z=og1(z;?g5zCn9p=o)Z{Vw(P8`#Vu-IM?ewG06UGO*s-i<-U88@9sK7k#<1gE}Izc z&vyGjex(3=1;11`lZ=; zK!I&iQG1qhk{g90Ri}_!(BPQNu1o^slAg=t)=Z(4(nuMGjNiGbJ{yOVrLMNF-7GhE z5`Dd+!%-z<)jN+NhHK2Doz^BiV&?NY^O~Z5ZF(F929kwM&8t;#Qf9zG(yZ@-a;P+9 zR^?kR!?EK!;d!dcGeaBpO|{uTprWU%=R_n*J4`?}XvbO!4{UAOZm4UE`wa{y&0??^ z^VAiU>AanS;(vYp6l++TPk4o!FyfBGOCR4qk%|dpr9RM5>w{ zV%t~s zE957dQVVR@$Zj%^R#8;^Bp+U+P0fx?IsH?5F!PdtIqd2Cji9{+}6BQ zSV2yYv|<*4fJBqw9;V~7r3D>45jLeRPJdjuuR9;U#eg+BWGy^Ri3OSiG_R0u&sYJUH2`uzgl~?=DQC5!UG>Z@XUc9J8)(H_wH}t1N-**Pi#sQ1s}{i)pa}~|3iak zgolTtqKW8@Nj_NT1=2oDpNpk(bpv7RBF93nR&jv*i@9fRiJOxgqlVOkrim_jmyCN( z`o0SYs$*}+{8PaR#ZWh2em?L?H!4NvGigX3rLuoyGZ0AGPqUf`tFLy|G&=o+!foeB znzQQAYTY__yDA|ZhUo%mvGuv74polHKmx0Tq0cXur>VX{;e*tVDh}io`k&jBPRikd zFZT3x?&k3@={Yh;{E@z{vq$nlf`q<16xkx?FePt>3X{R$Q8L95gQrXR9|>rPnki5j z9B^IYG(|L+%ak(RER$u?A5$zMf>E~41)X9hzxkLBvoCX~rDZoy-wqQs{r*vlEGqFi zn~p0r5C+6|m+4c$$t&5cA9cJBY$LMTg^W52v0Wxv{A}#0UonQe}?0oJL2`z4x z+Vc^6;RUW|{D#f5I=Iv~9eHR^YaMrRG)oKHBi!EtOynGnt2(Ygn_GpyXk0sa5|wdE z^ok}ECJ0PJJ{?>VPW0%-;fsU47yJ4z`gb=?xFkul+{gMN;=W-T{h-GegRW5Lgo%ABYNnec zBA~~}<|t;0>ixE3ol))_XAYa?J^~SY&fU3~`mt-Gp>e<}sxTKnbTv(I$T6X*ZNZk| zvPlq4MI%&{>X{46X)227nk%Z7%AAo<J+kuP3DXtSm&OfuM{vS9WUe~eq2w#(f8|+6@DgsT~vB7PJ-lX`j@haI%gSB($ z3+gDaV`(_6x?S;#0l{o2fpi(>-&FefG;C+w{3#l35f{X$&rC(^haIFo%Ho8?J4sLaACrYCCmU>Y9vgs2KA$) z1x2&Ng~lfm1vKe4QJkdQQzE^s1Ab)u&u?0%j&{HMcvovA(oUYUB4tyFjkH=E7aRmc zIt{-=uj>z7vKbfhp9o4h{0S2 zJ&6UH^!Sf%S~riB|LoyIhaz(lf%<~ky-Xo!mq}-x z#XO-W2GK3GRZcAQVYhktvZ7&;AAvI_O-f($;2{)u1K1VU{P9h7=Qw=Sf8l7`9`Q|E z`p8BMB?ff#H#012;7sRz%rO<$*pIcJmhM2-Fp*%UFsyW~C(T+l{OTA_tClDZ42z9W zz@przgRz1MU!mIC_Z3U4tF!~P{qbsQW-K+0P(J0}O#3N5N+lee2eA;T_Q}W^Dy)Wx z)h8R)=hq!=eJBDu?}P6!Jlq#-(tAAvcTz5%!ay)b$v#?xS9mo!I&%lfIO@ss>)qxB zR$fS^phvFEE|;ey8JQb9j_?IRId-*IhT!gaVQU5cIk=SCfA0z=_ew9ip#~ z+Wa6-yJKTQ>ktx%i?Fa6TH$MzCxVUjO8P|_jS!ufmsA0>taMom5Z93ql7R^YCb*Wl z^UimZmv^H&WTb?$!CfHXTOiAkd!*z#e6X#s+T_%S7y=R2vj26P*3YB0+mfP$4wlS%>{t^5OhO0*&Br@6$*&`}3@sS(QgCi*n)0KPhqcF;0_=c$ zeiE}RqlW3w+wN_udxvtxd&vQ2+3;w3T}|?y`CWZ;4U^)sX^X{zG4Xh$Trop&DLqwM zg&3;GFY?DbKd3ilHb1Y0-=2=nA(D(8M&EUJEpa6{VKH%$RXhqgFLa)$xC{aUNh-tY z=LD`-(U9`*#D0lOh542fgd?Axc|rZKg^r|KmYHg&6~PQ zsb`KH-oww}+6}8&1j4bOOkT7lrkoSk@@n4pUuH?*Eyyq-t_e%zUb;A)T`FCs-aE^_ zMNC6hT+%LNIFfB`QK?dn0qv}Crc`A(E}=bwS|vog{2UOPVM;hvtJGWvT#3BA475@FGc zslw8FvZUIX@k+t>#02)TAjT5>{n378sU^&eg7X8L(rn?{wA}YM6N4~+-Teu!4K{JT zLJHGfay0{^ACE_Jl(CuqiNqKrE#3(0kGHO|!ibbuuUIE{kHZfOr&2rg^10G77%+&zRCb9%%+i!RClPl84V8%= z(mi{(K<;NhEagw6S6(BZ;e00Q3<`vtm@Y(&;A~Y+a|Q)ACp0}r9ujjw|1xRHNgBz# zCNm~c6BKEKaI1rfvqHy7XriF~mpHNc0xBmL)a4IlF%mzi%_&>UFLe%gMI>rDpFX-? zMME^({!`JWkB-HW*DbgSK`k{q60}cYD|P6V-sSTdI_5a_F!983cm~DMs+JBjw!Hhs z%W~AAE?2)iaNfl&uY79L`je#mV-rtK&P3gn5gKFNr-|{-v(VgdDBKk_8y^$`Ie*%U ze}s9NhXiH_hlWihxP`dAP^KM6(#Y4vGq(7%cbJEH|=ygU&Owp#w zch*(B$-bB;b)$D+MbZG&OuEyoc3wDbR0j7V`e3;2B%H)II*lvBhcIa?;Kq)qqMA*% z8RUPc@VaWZHa~W)Clz^7Mg~U*KXIzcsdgKhTKfU;#RrGORb=H!M+>=SepBQ8c$foZ(`3HwTXuSHsH zL+mK{u}!r_X-$2JZ73qyFpQKZEXJUaYL_#(^QIei5}uRw^Hemh=`3x80$S>vwWc$* z?*M9=1e|4QrFbq~EKYH|@-yjs{?$$OJE0RXkxR5~pvfGK&Lj85`%waP5S7#(XG@kZB{K;NBO)A8<5yu0#EaSY+ZA(?V^00nX7H@gb8}0^ksSX3Kar z>E(-RK%-A&S&CVyl zJ4_pQ`@ISQhauN5j z2>wz)T?orzRW8>vEBG`5Tc{8(idlX^%n|n(f(tIIOpgd}rQ%o_j)oHK{;kbROkfbh z)|peC5djGYj`tmzW7)Z$bU!=J6YwmvA85*{oq~>sbhWV}HLJ~b$S+p6AWQPPe7srT z9Uf%xE#Pwe<3-tV855R$>e;Vk zq1(@2kRv%~%1XsEEafk4UXW#LfA;v1`yA{bhApsc6&%kUTY$nD7g_gVr=jDij)Fi+*c*#?2LMkV0e1E>0;XDghQ$hKHjHx$Q3 zR|#A%A1F_$r^iT$!X>HweONj9Wk1&0? zZ1@h*5#1XmK@{C1djpqyOmlOTbhNCdh}0udS1`)t&e6e8DEClUtTdOQ#7)YLk( zVPQrAxQMvi2@@%d1~*9e%eCp1KXdKH4*W;Fi|au5ebS!SX5DjknFL&96Ro*{B5bR=$48PL?Mm4FeHM9&P>HHL>RkWh~*x~xF3 zW1^DCT?C_`(Chpe%-HNKVHKI(b&mN;hR%MtwgrWkU|lA@?BKT;jKaH0O7z1l z73G9$XgM|&oakpc@QWpy(!z9Sy}`Bw`a>>=`X6#JXX57oIl={ZHG2;(mwPpMN$vxM zK43C@@|Bv+c^zrW@0u99_E_ZPNR0H}#{gD&FjiUlbdqr66+qV>yc$k0`EQBr~!@GE9@WPN_R{pfI{ zEkrPOs6U8*qjIDCK(JIHYM=sJB~!P?fm^^$b1u0>nrxvB*K1=_u1Y_Ae1|(MjtXzH z6AHv$ZJ{bXjg%q4h(2|b=^KQAMj$&+S=FleB=#=73RBbipd|eE*5k(_XuVu>5as)q zy}1f8 zqf&utj$gC+oLtYgF99S+gd-d)d7VUczfgC0;X#QFXNR=H9v3L7jw2qH@g0pYHJNtkcy_t-iFw_e0I%&xKPu)SxM)GNxfSS6CfK_N-XyUYh< zI#cEXt%T=`BD}#Q0g~1YEi#L9MT7=W3x{D$$doP^*Nw;g@HkmvSnFz=!oD=n+IB30 zjl~&3{O{kBlp))hz>tMZN6rQhgw<2!f;d~QJH#ffbmVGA#RhJJ(p9f2eNImPgpWT! zjEX--Ii6#LXGDWSArL-ZuIMK>pAq_yDxDbZjNF%c6Ou~!TIS9*eB*TynNN#|w`~l; z&fyf!jX_}IigPucT3qr8S%csOE0yeUZ|bmpL>M_$bSz{>6q^u{B>U`K zw);YsL%z%6?U2F4_~RqUx)2vGp`VL)1&VJvSoSn4_9^BEwVwn-UD5NSe>Bk_B|Ea6 z?NQts#QL(nx6r5(HmW(Gzp2$;fmM=G5fKxq19%o!(s6IN4HuTJ3*uOouF+5n4Fmv; zXIhMNUhxT74HN_*MPUXBE2LU=x?*aM1F)&biW<@!L8vpzo53yY?~kTtR9T!`nk7Zs z)XZd4ms$d!eiT`Og+)N4X~0fkUJ9-}GM7yG?I5z18$) z(;H2%H*Gb&*7R!A%T4#1R+|=^o@=_@G}Uye>G7tKrrxHLP4T9On;vYcZ`v38IQCKO z!`KJ0_havQz1~SL?mg^1=+%4s8b5CQsPV(b4;tTZe6R7{#Zl#)lgpY^-nG*YI(}M-3k~e9-WI!+QNR>PYOZ#2B#u+{Kd!>bK1H{5GjZCGr0uHkmWRKul)#~Vf(dK*qQ#2X%Nc(9?q zVPE~n^&i!LSpPx&`}ObDzgz!y{af{K*1u8zdi_@YYxS?zzg&N>ezktF{<-?w^;7ki z>L0Hksqd{nSs$-|xc+0+F)qY(2QSFDdAJo2I`(Ew4 zwQtwHRr_Y`8?~?3Zq>e4`)cjWwfAaQYZq&utG!)2ReP!S@!FBv-rAG3@!E%LAFQpf z-B29DM)(pSvG>H}-byt=OBfH)5~Hwqmcv zUX8sRyBAxHEykXU-HuJgF2x>?jl_CmCu8y0!?6cr^|5{4$KFTYhu#O?``&xryWZR0 zTi%=A8{X^QmiLrZ7jt~Hm=3iY%Io#HWp$98()aMVB>0R z)y8}*Z(}Z&vvDQ1V&igb*~X>Vl8w*Dp0_a@%i6dYTeNW@wqWC(*c}@)v5bxLv3VQk zVskdm#%66y$I>=F7kkdeFUG!T;}>FIu<_a0vo?NX>>F)-CiaYtPsg6N@u}ETHr|fi zw((Z%mW?-KH*LHTyJ6$?*mWCcVly^Q$EIz3GWMj6Q?V%v>EjaOn< zY`h%1Y~vHLCv2REP1txTcFD$zv5Pidh+VL8JT`9Q`Pg|I$6{kPo{OEcF%?VM_;~Db z8uj&&JN$_-O1=8%JZKHjczbY#fda+c*>(vM~`$*fTc-n~h%|`+6H&W34tm9DCTtBe5ekemeGP8xO}0+xT^{ue0$`?2wJ0ihat)hhh)e z_+aco8(U&6Ha5qaZET7)*%*t(Z1iHDjg7HJ8yjK`HrB`LZLEvc*;pH^wXr5vW8=Zt zK^q^4Jz(R3*Z~{&$M)N}FSbvk_rJXVW#j+!{-=%q!}}jL{&(-c+xVN_Z`%0Zy#Hq7 zfA#*WjURg-+xQ#aZ`khVN z_iHx(d+*=d_^aNp+W7Che`n*bc)w!fzxDpDjlb;uvW*{lAKLhDynkckFL}RYep z?{C`pH@v@L<4<@$VdFdAJ2w8f_v1GHb?>j+__p`9jepJiYc~Fv_hUBxRqwCb_@myB z+V~^hkJ$KEyuV`OU-tg8jc<8x+4#fW58L>cyuW1Q4|zXi<6rdtqK!Z3{h*D1!TSp~ z{($!b`}Y0cegC)0USEA2c7NXV-n8-0dw<@>Kj-~98~?2LXKnm`@B3~1Gv1%E@lShy z+Q#qmzR$)tyf*wEpN-lO>fi24R6E7Kji%( z8~>p92W|Xz@7rzs1KuC7@%MYb-^SOx*KGVY@7rwrectc0@%MVa*T&!D{T>^CxA(hk z{8sN@&A8gU(4s3zlSJ%Huh_=&w0STlR@ z&4WV^{O$ukf8aCw7xw)|^?Lh1^zq8pegXdN*C;^Q3;06~80n?Eu@UHYv7Z3cCEuY0 zNeR9*iBje81($I{^*{v!ay2m}2PkKM!P;Q4U1u9K(=`z_}c<^qq>J z)l%U=gw^^SEDF7S3d$dOJ{447Pou(1y1NWc`;rbi<20#9lpe^NIi8+D`LIOAsVG`g6u5k=2+_8ZLLex z23_e(^1|eJ_wdc>G5vpNa&j!;pWKwVDxF$-5OayV)2PcJ9IaE>o%jn96A0^(7Z>P; zu(s1Qbo^~@gEHR^@rQaK@qfeT42T9W%r0bwmXqxjKd+4PH${lRc20c}l=le{BNo+< zkShU#|4o{diELMA=kOkYQ&$_=gVCtoHUX=1FQQD1UP02`pICS?k&AER_m-7c zVFfE}I+M+jnwl4NU>Q34N^+<#LFva(Kft>wskYGzuCsG@!@bc*_1lQfCjuBas68=l z-Y{jjQ(BCQE05t(7 zs*HlS_LEf+Ns&}j(CoDPc;{n#lX^PhLAq;2UoEAYxJ*nn*ctQu|K3iXE4RFogd*n` zq=KhPl$x_Fs5Q4nIVST<^0%xnNQy%uK|sk?C>KrPB`MZIo@rSo$y88xE+*%iP#av4x)|t$2I#^RkWQR6;~Z>Nn4NNR2^Y}bg1Wo7 zLOndC4G4iyh-&P&fPk5tS;_)}!zQ(AUlQl*bk~$T2^Be#&Xc_A%;r6Zvv+qVdiEB} z>R`A@gF_KGdu7$IEOdd3)>4ejVtz?hJ)l;gQOf@u!GSk+rqD195|u%MPuHb0$e%&r z9)quK=?@X9P)vbW%p1)TpGP^K+yY-guH5wKjU>Yp7bI(FColSZ5v9&`vjq#s&qgr) zbyn!}b=V!7Dl%Y(&^MggyjqaKaD0g)ojx?-8NC4g^fm*dYxJ0_!)Hr`h4RF~kdHsaC zAxm+^^?5OJx-n4ZlQWP{7UP#8G@^x;qdlc+GLd7?q~{h@3WJ^?8Q(M%UiBR%3$xP7 ze^EAdh{NoQN_qv?aoeVnM~8~{B1>HxjX}8ERCu91w(jVj zPE<`)1)FY~Mja$dIm0PvYZ+2vlV>K*q|RKnf5+_Kl>Lhc;2I|aEvl|-cp%b~ zAWu$-(+u^M6!eG&qIDNke{i%gGfc6ctpqyY{4IioG#fH>ehnzym)CzY%L`9ZM$Z5N#eIVykLgiUZZx ze!O$98Z66rXdp4%8)clTmI$=9IUEJ31eG=pxB&^&U5ay7-|jpporGH+GW0HIzv8wn zmKP?zl8Q}M(ydhqR+o*vXzAw_i8rK4g42`-%IU?;7jznZ{xGbR=+mGwbnrgPPTVbV z?QmE3=r#m5DcH44W`liz*~A?w>o!UI7FIv&g?4u+EHUv^XIV~mvWa!Vx1f(w=fs^( z-7M&Y5RZzT=kwj1{4yrly^Mva{IR;ZDzn<1rbGAMiZ0!cesycmX0h8Fw7jvceh#-n z5|l?io923xghd{M@|a>0u`w#)m+w%2K31AVp4?iKw)rR8kF-Zy%06mq&6ZdE70gcP zudtn{IFpKCE(w$M#$`kr=J7iDNh2QVNl6R^MigU>!t`Q%oUIa$542JGzVpun{0*ej zDL2#hK7oGoYO-Pv zOz)P~^y0!?BPinT=J6>xK`TQNW0yv$H(0&&?cx%0%VCg}XaPg}=3M5b%@yr4?JGyy zqxTtvX8X6r-78(zwhebxx7_gBP%uLoV-|&0SDTV_eRHzuoAPr@kV-C5fOVOg`*n7a z+nZ_;3iaS6%F*{yCzv*gkwkA;F0+d)RJD-lE+Vp$67_Z`t4mF%r!LwR%B5H3e5k=Y zq$3nJD6U*IR5{8`4E%=#1PbnJ&Gf_vwJfqzMero|Udu1}j?y za5&EMtg(C!enysA#J1vSFvYTp-iWkMPF|mx>0&S8R?di8w^qC^Zw4_d@j#)%(;xyZ zSkz~iFR3_^iX{mZ#1YpB`wpXPJYgkpjoaI6_ zJcb!wtfXoeR4oZ-(>c_zlh)myrTsBoEVJk|xe=Pqt#waROkeJv&vZ{As-fO@dWq1V z3yprS6E`rnFt(k-6>5~>_z}sa*Q{AX0B)GOEHgCYDBJ=(W&%>^Ov(7fV~grL9_QYs zw6cr-^IL(6=u7RbU6C=vXkr+7hp&!n=tn0+48(lJCsh^Okz#GK!l7~R|D-tN{*e)E>ekaoY&&VNxZ@aP~-lMKY!ZQd^kt%#@5u?QneW;pkU$V*eo zA{cjgcOe+z{9s3IjGqf1q{0Vd;e+%3XSb{~s3f;rBPwV$)dq>2gFR=LJq`SF&A#oD zzMvnvp=H{e0bQ7bwuZU%X+ranK3BxUR()fc3w~G4`|wF~>2p9N;=V$~JO{@cx3I`! zu-={&*$kW=-Ahr_5e`7bji$GnyFKB!s8{4#a}y(E!Pl}P0vQAt z%^(E?g(!YOz73>99b^AaNvw50vDK_?z0Ge=9P8Sv^Q@bUV-~_#71vBNFSz2{@oF)b zC5}@Kk28ItxEnVLm{{-Uq<{@o*R#YHPSl-Up(DT}>C(#b+47GrQ|Sx3{PKi78jNc56MhHp5!)_6}C6$*87j9@i{Q0EXZ zbp&zR53k|c(O?o;FKQ{n^PZT`=GRn7<32FU2OI)RzyLZ6-sr4Cs22s;Ojnrnyo{4} zp(`@z=jo4D7CPde+KS1=OT2KRb6{_ACHG+jxu4-^a}dO~RsQlSfR?R%PRMEiU`^tl zrrAPLNCJ=F#n^^bH55nY!^rhoL7g*#FczZ#BqotF`f9iuo0+sVT`Br6ZFyQTxBL^y z)MI;fFLb;>AHB9i?=oJ|C0DkJg6^tXM_2|)w5jZBj$8xh@l?JWaU$%xn9lJhva>`~ zX}KSC&2W9j(ri4mj7^>cI$ektO4teZIz@tM)?I0CDMc8iB3OD~xZ)?en9SvA-i5&k zf-9b1P^BuY^fiRr3^nC&r~?UwcogEMm$F~kYLtu8p6)vmjjFJr^bH3tN`yzw$w?)U zHBrf-=)7Gpo1Df7ivsQ1am&xDsv@U#(2Ln+|Di3{dh}Viz>!|w$Z&5W5!mNFZc+*a z65Y*$L*?kvxp-cN7?ET5G*?_Mb+W3flNAvP#h+4(Bg6AuhbQ@Qcr58vn%8W>H zPp`4~b@%@BM1%?i=`yd619MY9zHGLKX<^UtlgtTgvhAMmpWd>rp-264=ZWKyf&K{K zdS8Igh=ME()*ZV10lxXhjM-XO;f7;NpAp1w|?3S^@L@p>MSrw;5SP^kiM^-Ch237!Q!s&3C1arm} zTrDU2E}o;HXYyR);<+1?1yYienfJf4Wt}*?{S!C37b5+<5xSBLSkSY3#j@(@da+=J zY@R&^luovadF#rg)A3AciCssHNNjyse6KtqhPwLcZ1GWjmvd3L@Jy`qEJEjcs15|V z656gM^Xp{O1vwQ-JAReVgd(0)jsmVw2Vx)AY}GePNL^w+I$Fj55AVCRujN+rFOmPh z9s7~k=e=)g{DsDA4bRvAYJFebwc76j0Vo~(wFmyq1M3HV^}xdZpW6R*eBi79=Z|ik z(Op04cb)3&-s@ZS_no2nWv}xpciItW0&yTUtuX@?30ewYC{rg&Qk;;WDSY*~zj{+x1nhBMi<`C_ z3U-AfkRAkW+VW(oatqQy&I16Q2YN}*ji<}Gm8~ur-qp2_x3IOi->9>s zFg(K79n}MQM-ZsV4A>vNsWN{3)+3sSJ*CzoNA}{$I*LRhabE#k85gy5metUGcrgzu zIVT6U(jtRZi07{t2_0u4p0Jq|pd=O2T(=+xS%j;!Fe^Ge5sYd|5;Yexg@qC~6K@+|36cc?iU2{IxL6AE zW$fs3l4x|HZ8=HUEow)<-@T=lpAb#jFLp*>C}c)M@PC&nuCiu!|H6EVt4PIt34=sZ zpUggbncSf{<(Mp)W>4ig#0jiHb#S#w-RCmr3CC09GtNmKV}igQf06Gf_+Qux8igj0 zO?2(0r|8xWP=y;68@jYS_8!|M3PzD7WI;&)s8o`FTuKthdZWFqW19(OBr1Ekm{~AQ z!LY9w6qY4&Fd)vEOH5K~VB^tv0SmOXg(nog!5`VO z9-=faKhCyxY%(=D%ohfGo=059xHMZnzv?FDvd6=2dk@jOWxww)8@#v zJR>}(JuEAKXUp@{a`~R1X<7jwHHe<#SbCWxZtlgcV_J5Jms%c*-Ww4e>+iKP|6Oy* z?oDOZyR0hS3E>IH%D(GFo-iou(XqVLaSl5Zs zNE3{&ITTe9s=$UU8!ov8CUV?%#3st+*^{Eoh5jeO&yu;EC}aS%1cz9Z+uX79wGJAe zGVAW(U$6#wgmb~aOr#6jPtD}f9mdpNAgjk~W5AO%`U8^Jat1x6KQ+*L%T~JEGK2wClE+aAPBZ#mVUc;?j*MRh^#0xzI6CfSbLS1SGPO?CczLCYsyNWPs7( zB(VUby}x{!)fb;mXP1_k!hzgSsFUR%*|JuleSTZpk=DHl6^@DI^+J9f0}#N>a7gWv z4RjCCM57z*Mh^xuh4L<0RfnoMctbANf7!y|>W-?r>>4RrVjEv~z(*1O49jzVCU@dCqg5BX(jq@U_oR zkztb?td$Pq3q+@jGz{9ee*2_2&B-OcX;OhK1_`%sq~}PTckmPN)=75!v>%RNx<`g` zQf=X*v*~UfACHh{16c4PyPwnU>A&55vE!&M?jNG!eRyod_I+3!hoP?k#htVBxCbzF zTxN=;IXfSt1C|8r)oxettlgi8G1Onr(v2;{A}bcnAW{5`2g=E1ojcFd9Oq*D(Fdy$ z@nriCi7_z_f8Rz|)bE}cyeFFhn-Gyhp+0ZeBot77RRg57TPK&vqG*Y_rwgJ<*qJNN zsD0QX)K4fU3y8u<1f`f5U-W)#S6w?1nCLloE<|%igHzkD@C-slU_y@;@NP2~Q z`c>&!`nD3!#>L}ylKC54dJ!PD%0kZQws^2~go46TT1|pNut=~boNrm2g4B+;yxS_P zbocS`v*)^wu0b1TKiTaNa~=+6PWy@;csn}Rk$sS#ay?lnsl{yRQE4NylMI|gSKz)l zx2Odyc_?6n(y~>&V~IHZN;#ci%&w)$$o=8jC@#E|>yEziikuvotWDhB;+1RpRDuwT z2D{w*5-A=^_6t)a3JSU1r?qr@@0~l_624GyHk{=R;>eqPEHcNd>5A3AUxG?2y{H3b zKM8RNRlzA)!lmu}RUEv<%tPUHGP_K^RMKqYn8#_s zxxNa4jJauj4h+DzfO>)3iFx+lg(kHBm30IceR(}PHP68bCu9T817Ar~4*V_e^8bH$ ztU1~AcbkSHt&ORMuQ#;Tf2Hmp)n#fg*L-;9S5N=T)3;B(a`LxNo;>l!@rTF$@RI}o zefGJ#J%9eFGz4}OT2Fs~Zyh??!&k9+j75>^wF;LFR2Ofx_m#}!CKb~;tCdjqlI0NwoPO5CS>U-b_y+RUUT>B1g{ZRMF(IkS#+&4(#?UQ3s zPDh?9o}4Avp&+ugg&VOx9JyqX9Ksr#D_^{#yeFvU7MZe&KP-xB^d>aDd_Idc$tsp2 zaaQ$b6kp31^L5nyziN?wp$Ilx>Hju7SpD6EkL<^)UVPRXFQ`c}lwK0kr*;#1YQ3+Y zYim7fd6)sZ&X3cJ?2vUmMv{7cEusU=VO1VO7MMrrJo&ZJbbIW#uF z%q4NM53lW~N(?PS8fqC56z(p2!WsdjV8CnShJYUUvGYGloBEgoKLGMl|7s&1vY^-j zI{ayOd0$pj)HCib^gfve>x6lBqkF99s6?PvHd&NmmuU#7 zG!+Jo&U}>^iGi&H?vCi6YJssmzj)>;JeB~U!_S#XJS*l z?M|&1P$8f%;)!(H1s@CQAZq`ZH-$nFEU2~ppKA*u?_)1KgB{}C_QqRkK>E08_c?9N zgtr3v@lqF->LDfPr!3>Bp81ZA0#<&w*|nk`3PP+ zzx&Q_efRP2efOPT{_Zs5C)RhP`HQxh{C$y~V_K&CnEf zN44jAlC&ZWHQj?_Bjn(;=ME>DZ0q^+RstZC;l;IOLAhi-#z-FlDl)gWF}s$xT;L6` z`m{H&s}`N?pD(l!hJ-ybddZAFfyZ=W(JG zcmY7j8K6;8;%ZLAfk!O~XP@Y@x*MiY5E(5DvneN8JNIyh4JjSLrXpPW7*?3uWxi&W9H%jz*rYDBr;z=-u zBB$yOHDx4=64t&2DdOq~5Kz>*a1MDdoaMjJhsu#U8g3MACoZw;VO_3348vtDs)b+I z21HKSaO9z)mxlWK6jY>(-5S2qt;UByCbww3*IJyz8s=*ss}2?>ci!>`@TwGvem5+)n1IRIeNSS?+TB=DhISH zEY+^!6g3l#qu6}u{QOu$v^A2O+})vKtCAy zWIQ@t_yUh?UZRGx)B^~@Fh^dP9G}F`2AKKi1gpEmp})vIJ`$=6(C#YG;4a`R(0I{j z{%Ad1l}F=tDcy-F7MgW zktq!)HZn347Ho$He{+7`QFL!2aP8Yps`}U+DcX!=3e2tFuLufhQ7tZwXJ!#0bG(|I zvAeSu@dbM|xVASg^n~;r*5GKp&}a193dIl;#b;_l+^5MY!ftUYf@!eF_!^!xtH6Q_ zdiWv*NclNJf0&PAe&de%JJa``x{nPCJ0Do`83R3$&!Jp=j}#0BhuO_o{{OSbUOm>l z()9JFbCJi5zu$PF;n(W_dHsdDWbHq!jn#Yw<+z?x|Iew8lY1xLJN~~PzrmaTHU9JN z?@D$O9IQJrmN?4P8W_Dos%vy8oU14tY%0ZFi1nuFpxF!YE~_J`S$76!l)7AhYXyZ} z7$RrpXG_Gh>@4-Xck0u@E7o?D=LO=&@u@xFa_a8q7!i;oy&8PK#^i3{&hZm+CRIN% z9ZoO0`=UMQ)yuKVI86hCJ$)lR10&J?k!Od-p4E*Gj>HBIiU?PEVT+4aY(}bZ>k-HK z{rfy=mOV!o{xUhS1R!HJI=ID5(1>qHQroV$i>5%ha&5WfUsxo8yqt+7qlRQReL40Q?IJjBa z&Nb5dqDE|oXc5F7u)CxOa^8!?<73Z-j-!7Bv1b>8?Q?nD>FqC) zgEjZ_xJHg3sOEJPOv|F>@Rjy;dR1dd^ZMwGG#f!ofZ$!h4?wISMyInJbMDuJABZT( zQatqP3_)~0TY35Mz^=8hOn8@*ue^La{I1|ohr{z#jxoy&2iKa9`;RwJuC{to#x1ni z=P)X?q#@dUIJr2wG;Fdgy&c`;H9*qn^dMFR4cAzVXtWY%^6M@or*e0A)v9m7#&vw+ zI|c3NPw*!{>5b3@1aPV^>?gfVe0BRw0H_6)WNZ9&2$UhX279xwpVKTf8sF!gt2n*L zF=<0&m@Iwsk60`A($XE*F1c$V$>vL?yW;YiDIkW&L9mX@3eG7+XgLk4s#3HL5=&D# zYeSY=gx#mc)!6Es*SD*Fnq*yjTTuTGd(eZUjp0_4;KJyTMwo)yy<7v+k zRYAYRL6kiT&hEf#)i2$5?Cx>I1J`#?iQlgxXITXQ{4FPTfBAP<;Cb^WxapelDYAcC1fWpo^e^ZoO zOo;c??kzp+gje$$5!`05^09A&Qu%dFf5MwicsZ zF5xrD!vl@&vbczF-1R}D;zS@}bSBO5;>#0_msCOwD3UDZ6)uP(9(>F~+L{2Zc$2$o zJBf1mbLTIIH0;qGp!PBrma5p_^p#8nh%O&VzhCh$A2I0`^k_fOl2opYnu)CQ^owx1 zINhD%4yP;`ZYEwv!aW@^8DN1I!Gv?vtY8$<^7HIuUEb?_`JdeF#q4VqPD#aDG&OT>eHcd+HLAU?_`)pI0Xt> z$0#l0Zt@t?C@yd)$yTM6s_X%I0Bpq;`fnE{b@``v)orr1J<}T2n}W$_#56{BwxG&q zV}AGRvd82^6wWTE#yW;cV z{0O_MgfQkZR-7iE&g(v$Lk(M?jbmODk5yj0rg7SD;%Oc}?j>*8VcBLu;e^uMD4{^2 zjDUB2_qsM!!h5-unD3}nXI4gIoZq1qvg-KubyD=%n8Ev0qq1@K6YLt-Bz@zGUK>Wr$VW6&wA{0fgfKf><-qX8k5ZRJ=gE56h_`}1rnho132WEFaa4?e( zcQ{ZhVxDa>jH|18uJG-U{b4uY5Z;AZwGEf`4h}is1aF`VR;l1UvuoWW6W+zPwkOQk z&_Fm2T{Sr6^_9;z2aQO<7T`*0t4Oj1|K8Ykvualxy@nG;d9iBd2cwtf7h@*uG}^6v z$1)B{Dn3dv0@T$(cj+H+*CBTSp0GZW=e?fRmayZTCmb81wV_hI`-L5cr%uFiROeI{ z25OxR&Tw-fwZ7mUVO8wsRb9md^D&iiqznMR;e94SMN{Bn)43v(nsogCYsZ>THNA@N zetYAuG(O$%O8wuj@2D%({@=A{Yc8HCoc=FQ|M;n2JNZW^{*MzA$N%>6YsdcJ*tJ6t zz{c+DS}r{=f2K7IksL+hYGmjD#i}ZQ%0k94X%DJFIlz&bqhW$V{tbhR4AZ^vyGz-dRtWJ)WybI9gW%gJ{qa+Ka%}iZh+0(Bf(-Q&w(Ff)hcv&%yC$6VftpXm7hDX_Y*B9S68y+3 z!me=c39oBO@0ap1%K;nLega)d!(ZGa!~ui%?+Z^mYgCMUlIV{l!2Ke0S?EKhHNOjb<$J!B7tfv>v8NRChI1EGJRe6pCgd$f3M%I z`f)-68W`IBH?YiK(=u<%w4c8iaujh#qhrG{zjDF%Kh)uU6CntyyimXhuvEMtrdpG3 zaawR{LOd*R9C7S{HK$ONN+0d%(-Jt<6WJTitP9w z%8;YO7I1uScTMvZ%U|s32#wBYLme9o&kkvz@`-#fb#Zm;3Wx=aTk594V{Dan&6B)_ zjocNzq|fY*3wcRzkhQv>r#Y1?bAp(i&MBDXW#(2oQxJ(JX>tsRU_C2ay}8y<--3Ch zXr(WxMpVpLylchf*A4;vmeGB$MA$x zx3`Q}%9M6G`lyMTsEawQ4O1RPAYhYNfZ#G99%BNv<^0Z|@v7f@2IrIok~{E{(y6#5 znFB9Qt3ri3qysO`vLcy5>?@kE-YdK6aLL^!x;wgtLKiyyxm=;_Ap;q9x4t#e+GH6Q z#Zt!Q6cG(F6gVUYZzqJsb#}oM?2G#;7RFa-RP+LGg6y#<;*`u;Hfd7$*b>A6@DzEx zzKZ2!;YxI-l-j0Z;{nSUa|SB5o3fMh<<_Re3+E(0$S(U;GT4RB+3!Ry- zDhu zNuoQEhsz{lP;7(y#V5?I8d%1CNw6usBbh3xsa&@7&@ttRqmuSelNVxLA*Ef6Q);cB zl#~oaJ4~|!s4+N`2{}<0%5cs|tP{R-(>!EXklWBq%kS+?&-%;jTe0c1rc8VD^w^wd2x(pG|(J4+RtZ{IX z@|+A0ALN0(R=_lSr+2^1vusH$UT6ssTvINMR&_&Rr7~4p#CS77yg8p=M{mjvNr#j{ zPjMx^dtF;Ped&B1d(nN#>bE|Ty|2 zWY14ZGBJHOnWD)c6P5;##EM`lp=&J&db_`@x-v12Ln%%w2C zsjkCgd#himszKflT|IZ!EA8YPt`q9X9jk9z?yIudA_0QJ*T={%`uy(*w7Vln_-89 z9E}ul;Y5=K) zqb{62I)-LVOd#gbZJf-O!2Xn>H1vs|L=9+VZ)G4GF{6M?^4p7e#Zl9RO&6U&)r~xmd%k4GTChE7 z|J_PHaK^a;7^mJVq_vV7wRBU99u6xJI(m`oyFSZeS9NFg@U?1^;rbf!c&8MRpV=x$LGl*O+@M4Qx{ zQ&RQ$pkyB3uav`qV_g-u0T#&P3=C2Nc%5Fi{0qg`{>9 zBV(UbQaZ#M#iK+bCMd+QxyyYPmy_rf1XQ~vOc4!gjdo|s41}skFOUU5NIR*AQuKbLY`s4yKy7JlK029rGovFx z`I&F^j(E^`z^hd4Vb)faIlW~nBq@G*kaUfB zCvGIcj0i-I@4lsH+`8J@))ng7P_+zY$tcM#3bz0}fC<;w_ju`g%2u{}b^2<;=e10f zHhmQ@w>fqWxD5!YrKFHfsYVip@=r5}*7#f9Jr~0V0TwV6ZqN1+tGjMw6}P~ST@%9& zn7ELDS=@{GR?MKVbo(jn!et0Bu*6kP*S)k2awuXVWeSCLTA?7awL{T7MdXF+02|nm z7fKNSz46^QW$N0!NN@jhAte+%(!pW$$J}WWq9S3>%ip|YmZ75x?PlSK%%q3R2v|ZK z7!m?l25m2Y2Ls2y{0ma3+|Nbk5cvSs87tV#Hp*37IufmR(s^OYB z5Bx|6Ro=Cj64+Vm=lJLPHi%)JdEgcPd1y4Pi^zQ*%i2t ztN8+g9V=oW8>{Aeaz{4Wp`nPBQCcrf7O(?P<+WXF0@8jH4a!h7bQDs+kRRBFo~Bjt z#*~Vwu~JK%27ES0I0ke*!=BwL5ws>*s%rB=7;&MkttAvR8Ks?eUpT5+9Y)|UlE%Ot z=c(inJ~n|%w?0WTtS28@GFtAVgY@+k1)$) zfR3F=#vF~rOl}4sqDTi7CX;t9@2XozOV118A}e=KSAa92ckHNs( zf)kM0luHB9%PRs=scNk-2;_oCJLhl%A&;yecg^Azk0=U^0#0GIR^wM@XsU7R%1vyn zwZ{RK1n^$5au6JI{{!-crP;~oC95W{yr{y1NgG6o%pfsWfM%nRwCeyhMPQS+| zch#%|nbV$$#pgnq+asi1LTNwYwEAfvO9Arpne|}7$4@HnrSni*U z^4S1*;V=t$rE-=uN#!rZ9c>OXEgegev<2AtAWN&PjjQ1QtPTZMeBjkA%%Er@1tXr7 zu!w>~e!Vo$H!LD0TS4-&(Mir7Ce{T(w4h4vWYhQpJZ1IpXiYqBXblr`;FP30!r;gc zB_vPbfy&N`!|2HD&OhN+ugxSUkw9PxXclzdGfZ2_4j+F;-ZakytQ>y}rU~z=I5(U{ zI**(|pexCSk{?!l1V;rU=YW#(vfJ&FPT>k&gvF3@Uw<3QOx!L%Y zhJV#?xBg+>e^Ym>_RX6AvBo>|&(1WTzH;h!PJQ;|Po4O$PkiBc`PhGP?9L|x01wNO zy1{3!!`vLLP{L=Y=MG)39O&aR;uW0*+-IGo$Xdzr;^FFk`Int%9uivd+9pg9D+Bhb zT#-2XEyybM({5|B+-}dyTcow$(Os#}?i&Ez|5SjJZ}!Yv)2tgkfDi9+GVaNesVwnS zlowFhu{|~4t>9%q*jpS3Qh@a3Oe;9#wYm6oZdFBMiB-ESK!fKyq@{H6qGid}P?ZkJ zB|KOi92?+-_2=-AXlEss4rs{AnCT8=^Z1u417KvuMb-y{ws4ZuM)Jf6@`ZE{lMF1i zxU|^Q-#4PmP=C*iuEYJ<1ABSQYbl@C7~8ytP;GhUno7OCPz7yQGwizV@MHsz%oGTC z@Y)Qw5{n5ALI0h81VkMKv0R?2ir|Y_@I`;{#SlTZY1PE?Jz+%z8rMjyZ`jV?L+4PC z0Zjo1gD?WTOcIIJF&Qx$r{a)qufcvk)zrnWHt4ggx3(7>(`_NF9xTIfwamd21*Pvt~md!{``F;w$p`47|LXwCkV$lKX4H-sXX(d_oedF zTJZ75HEm(Nd^Ca>UC;c?;i08F;p=~anp>G@md9w%bqEK zg%2WUN5&svH!%>}=eAe`EBHq?)7+Qq=^PVyhpmPYVmEQR zr{Wk6Zf7J0Vr-3F+Pu$nbc9rE@)0p~QU@(=u6%^zN&DL@Qq}4Uh|uRL$H-Sg-L-G$ z@ya;f5F9h~71$326GU6$2+ZMnC@1ZEX(XpBU%By4-|=S4YQ#cR*BlEIOxMtm{vZ6I zX2w*aHM|MhJ}A%9AMAAiV3oRZ3vvWuPDVSeURK2;RZrzmH637(KzZhXI%csw`}?cj zF`x=Ny=9KvjZo%+oO{!Nce-r7R@yf%v|c_M6zhJ7e};`IT@?~*vKM^OdsG-m5ouTB z6hi?c_roXHgo8fw7~(haGz1Y*$+-v=SxDZ>JX(WX1J!^4KA)P~D6V_w%WAO#SklIF z5A}j#Bgk%t?c*x*y>xYe5@dyAhK?Aj=6jFU6~HP{wGNbJR<+Tl6E^M?72kI^pd9z> zzrol*e=Ig~OFn-p?Y&%9hZRUB)4lB-N5Lme)i9j$up>HrH&(J5ra(~b9?PmoRD#CB zC>s$GubS4I)+*s;uu}Zp>sR)G{19zeRYfswX%HfUtw-Qe9Pd~hllLWOJE=c>724_! z&-4EMf-()I;u_wYx~jB}c<0($Li#=H_Hcn?;Z+~5+F%;wC7Fd&VkqGCJa){=5%SQ@5%Nj(H$6(KGP2QB3$S;U^V&WEXHX^845>1Sq- zq5@jAoEZ==vFpUvhN5W`1_uub%L?Jq;pXhYc*4TmTzZjT$x&dK;EW|Nze6m#vkcrs z$ziOl{w5@n&URhwJxb-!$k25T&Bs}ci*tc-T?pntbHWo@? z`p=XbTT~j+JS=PdKz{uEGUzi!tfY~D&s2dMNI>sWVYK2JVM~^P*v7d;Sn%?fQ&f9wA_yWLQR<4T|GmD9^zvzvX>vRvoCeMe6o@&x5mKZau zf5;`QvbEz_^>vyT(JDumY5uj1KamB5wJ=yGs<9ppkZKU|Fgoc2TsfzU9%u4QpfPwIcBK2o<@ z`+wFh)nw0nd}jRg-#a~iYU<=yPyCA$uO0vIkN+sY@^Am2*IG73p@i3RwlxGN9UQpQ zhYRz=8q96F0h2? z=29M&36Igd^6_w1w)g+5v=JY zYioC1r9<&ftSEf5Y%1v(jjkpOknF9nvc|PYglt*L>E@ZkchH$uS z{G@O#M^(k)I*=f-rbL=rA!+*}q>7y~bcIVpPAaWh6L(4@(&Te+`4dV#ucPJ8vk;Z) zT8VUOe#<*vma0$7&_wK92sPcGQ)Kt!_$vizPD30fgfb1;+Ny$ z(+a0y^oNY`0Mn7jxPxQ$&>y58fLVIFdEmq|B&)zQE6%3k`NOcKhD$AxbYRXR_mBnJ zR#It^cj=AhttQ1AmrOlpI2M0LKS*M9;YZ#U6^3tczYsdY>t2MLhw-OamSe)IwwVdw z6C88r-6~7$oh%Qqq*~ka9j&dQ&dTseKQNdx69@J5LSP#mi|e#-u-Xt}0n$z?VxY5- zl+IZ)rQ#$#81uzDr7T(91XwYEcd7WGEJ>c0-fK8>NAqKxK`_*5&Epc%5}l*!qFUmX zgWHJBnq*v^*Q_o)b3Yj$cm{Gp^!^rC+O6n1#PYwt6?+D7fU9?+Z0b8_ul02G9?jtE zlaV%a0>X^estbU?1+6XdSwLkKVM5e&0RJgS;<*t%uddCbPLb!~tZ>BTRkzG0%LDtG zCSpeDh(v~0$>Fk1dbLg3y%>1u(TY$T25Blggewn01GpuTWKyy`XNp$X;r9`5-PS&) zTLRz8%Mr%{1jXSkBIs+DDo+Ym(*OtUCT_t9eG|l;#OOL~VZyFK+{+idR9Q`NT6?|o zV_$e~;>cFk7-O;FKvF8)Lkv6`I$|SwAUH+wE~v6qu0rz2z)<0Y;TQ;BG^1m;W|O^^`?<5xZ_3oNmVdo(wvjM1t?;t4K1z zYZ%{*^Y(&QUN1jmN5Jb(0)ikQj>ZPHQ+zlC<7uNYv?l=4)u)HmYt9rZ>3Hi^{xDDy zprxV|^zKpX0g%2dBQdnz(I3LK(Ub2R1rrMOCG7a?q4klwg z$W=&W^Xy~H$I1)`ALbAh^&Vy*RVab^;w4a_F2UBq5_vA{C5pWFx3a4eM#|R(j){Iur)~R zi)nO61xH(3nHlUnyLv*PGa+4~l`w45Nr+5p)OwvFejKxQHZBTj25i!QaDNriX8AbOhFyPiyk#Hkl zMe-}orRT&B>Q|q z6N$;@kI(_>9(3g&(^+xXOPo8`5qh41i}nY6{zGA9c>diMZ-~p`Q!Rjn5dU_33%O7k zYimP_9M`9?T4^AHOC^fMB>!?V?D)HoEb=Jl-o@7^WdeGl6OeXSD7<)eW$TC2N}cu- za$E?GA*_t%7eEZ7c731VWd_k+4Fl7dB z(FDIx9V5}^7bI+#J7t3tnb7txS`d)@1H9|dj8@rzN}}2#Z!JjT5;hF~a_An)z{jBz zkB*S(v(7UYGD98VVCN9NiBo?)5Q=FP5|HDXc-BbrHUA^Z8o-wv^-nu< z3hhSi=)#N_x8Pn_sE7Gf7+KuVVVhD$34cmxv?{IDn*%CT5DN(4g~BD=)^G1y#CYL` zZOtdCN1piR*B(hJCh#!>Ic+5)XdXkj3fHRSeWpAo>(yH7=n4<|2UsG*u7#_uS6@N| zzyWX6%(gQN+=uw}7ES#RpG}vv(hW;Fpuxj8BVw)=6Pp|#4%@u zgwc|u9ZlD$_3`PBix-Z+BN%h~<}j835zAf?Q_r0wuJQ5CZK7QdaB`!$7^#Ve?tDZ0h2*H^PE zXircBuCIM(gD-(ASc6)yS)3B@RC!igvpr9V;Zgdd?r#u(>S*nrS!w2M-%=BglbdH( zy37fFq;ge$>ZGD@BTKxJcCt6O)F9G^QS>g9C3PgRyRHjePZ-EREa(rXasbx=*9mqq z%SIW{b7ywlprW^L;-ISWn{`QYIr)lsBT&y!{06I<(|;n5P;zccg^#o{XIk9i05mn; z0E0}UUyTH&_d;1pM&!*B-4|m=4+qUx49(L|QB-x{m{VCr)hP$GtF)|&*1Q)0CkxkH7pj!mftLE^b&X$w}m?oiYt!?ZTA zk`En7a3`bMh=i+EouOFYByce;>}>wud$BBaB%Z~^*yYPdso*wjvR~oDt~yq5eV!~R z;ntTcKEmEPScU;R`E)B6PZZZ6n@IGB*{AKEe0`45S&`2<6qbk?*nwBcC+b}oUA3y8 zRlz%s$ZdOAngWxq_5V=5d|kV;_jYJJpgW^cUw~{J@u9dOJDw{!^4S%)@v)5i9XcV& zlgXi(D%tSC5&Q)cL+Z(Nw1iM9^^twU{SHhxnvvR1pkQyTFRz>xkPeiObZ+1^Fa=XM z>udC@AO(a+lugeSR+6|axV^lSzW15bHK>6cHC|Wwsvd2tcebZ1MCgvu(5-_}yQslM zCJv0gHJ%6r?bOLo|WPL056{U9k^tpo`jq zl@EG~UkdoSmRX1GI=!BmL)mLNImZx^+ez=~^0@q*q16i)LdwuI2*~?=VTf%d#TsC; zfm2QyGkW&^%3fk+`*nP%nku-Rg(Hw&!1h>8RiUs*^*>=VUV!5YsfjVaLg@Cna>DJq z=C%v%M~fUaxFPs^J}snr-}y)GKBdY<RNF{jt>S7YIf zmSK2d2}uO13FT5)>jd1&s(O@6&MF^m&oaM4r*T18@(v`_`d6K?g$g>~ zzIvB#?M!cQD(1F0-}DD4e4&cyemO4l-*)$jCM7mBa;RmqF>wULINvI|N~%%yX}}C< zS8dT{L-hjeV~39QA&NCL=zYHYMNMejt84FQ3*Y(!^q>tBY2Al7=G+;6Ykb1Froi|c zCEc4)1n_*aGH~2_{BEjRyq%PWci6;xypOl%>tyOO7<6hz!|=HUj4ygO{{u9 zTDHzU@u`lU%SWYA^yE3t9C$c&P@8&xpo$oDDvTpZLd42Lhe9N$<@QZbezC;W-Pu*$ z;Dhkf>)2ccF$(VB8;FN657Y~Om)_(qk`FrZElXLlTR)+BjCm~=y4u4Rrg+y@(syWh z2Mnmio9N+)>!me`z&xwTJZV(~E5*u+LqmdP*hL?LO%i=(IJ@GvDUMvCrWCj9CIKm( zEeeEfnVjNJzDyU!;Sy+7Tm^nidNXA;_#wNs*wGQ9x-NrdfxhC~*yk>3XmcR+%arox3wSTU2#8sxH`j6Y&N>@!dS9l6@Qauou}qgF2i6D zQ^*WO7ol5Fc?wm4SdN>-ueQVM()8k7x43TUEU8f-CnNgeay2fksFP_&`_@b&+8lN?$!R&+WwmVxTfaJ;^|*H^-oT{bMn7BdErF* z_}}8q|DOKmy;7D;6Hd^ZZRbLW7=tRiBDovR@w8)2rxw2GKy-svOyV^W?^c?g40gq0 zgc9y0b_Pc*q;z<$MCu97J$^yjTz>M(Wdw8yJ< z49@uzbjy7|!j>O{T+A2LL0ygRol{3%TPlP*(P{8Kw2u?S7t6^ts_eSk7nT6V_~xKzEUaLdh}-DeuS2rr9*)MLIfKkM^R_h-sVV zu3T)YA4!C<9t!r5XH~o&5Q=fYrE+mWslc_y85bDh%>2mL-bCNUI!DTWWhhkHdk zrOkWpV*ka^6FfE+iw*f~f&+AImJ-X1C1b(0+&I_JyMojlOjq!B-)M2TXyN-*{Y?&k zPD>hNxg!tNGujUOh=Tbd8=0&?_2fp05Gs*MZWOI@j-sNpj(xAM{AEoxh{(nBAp&Pi zHrcAtzAzHvAqzDj*mn-2Qj-4iOOo3~*v8LX9WqqfV#=xYBzopc!eUe8&j{+5QI|+; zOObLWxy`s)hu}7);+>v_{(d@9q|{c=>n(rD!lC>Z&>;wmJrVvRX&vIx`{7Uskj4Pz zUvNw;CATOx$w%)cshp)+F&T%H1i#M|x2{r(gPB#m0MMUc)1GU20n)kDOj@)9iYmx{ zse|{7n$IoS!O*o;{z?Ib;{D1p!D$GBwm^#m7Az;!G`pOXiawLl0n&-l z@rkLiz5!i^pm}gX;9VC^AQNv`Nmopxp_juKx5h`U zUi0OPy+_Mu^_ePG^5Kjih&|;0xjh|CT%U=8NC6A$c=KOelDaLf;cQaw!VHbbi$vPN zYp52ai@~?*d=`A2C_px(gMHPKOiQaP!o{iIO=>*j;590R6l!T z1tj>WtF%TJTEpk8XS{6LHA3>{9*|-r0f{rRtX6GIfh$L0)qyQ3H;H2iJ4il)f~WKYM28IJr=@^w z*~-qM`&E-0-MSvU`8x6AifdMJJy}3XdkeblZ9Tn&clryhW8r(WU)o@y@L$#aI(s5V zTdk{&5uyZ75!M)zjJCk+hW+kPqzEltBv*!lT%NS0J*KLIcd}rc{6QGnkJPXNUx&8^ zU8imVn^0+yf2+JCdkm@<)|*+Ir!O|@Hcy3rhFk0GOXU^ADk`QXMS-zc+S(~M^+@0t zK)^^)e40YvjN8g3`6dlSOsWsw)uOE2(8h%e-A9>-3<04+(239)tUAV!%R^v+X7gAL z=lW@ppv9g`_mDK^VD*7MLV^1j9&zVV+C4trcd&6F83$+?Pza#tse4dMJm21NA=Dra zjE)Wuhk+CO*a^*lI1#TgG&B&5(qhP`uSLXB>z22i7~8gV#e+tQ8Od1NAVFa{eYKzl zLYZ^|JXVFeEJD&FwBFe$t6dPQ@OJ-LSP01+qLe{(*wp0o?b!nh;XwN_w+eCU{W?7s z74f+dSHbUDii|{0wR7=k4eS6Oj&KTD6?%##$sRN1E)VCImJ7aA6oaIeER;%pU*hoy zyHYtN^$rktwPo#9JPpb)*6bS^WARuO`rEfI{$D%RoN4+X^4-Wl`>1ny;Vv<1=li|KQZ4lYexw`9%Ks?;QIV$JYK$!hcvnrZv>F+S(CPl}~66Ih78$ zmcc$$x@*3+@9il}qU@jK@wB9~txyhRcLS!hRcxuz0TAZZB=pD}Ix1VxDT>o`a6(9j0}J~`%7LxKeRIA9gkLW=)m zLc<7^`ur#$P$Sc3DWH34unbLqN!)NCCFnK<14uq>h-Q&M0O!`e5jM}s|X+Bui4D%%+Zlb-3sN;0Prtjsy%E zDN8920f9C5wuP|Kwa;LRJfY0F>I~50V~9F91#NC@05viW{I6A|8Soh>eqe=@*5~Xu zr#*^`ljd}qEMZ;g93(SDR8!jGh3mxp0N3<>rU?%CaXOQIJXU_dP^kdTFHTS044vws zKI&ydVy>_X&}oOV1kK|*sX%re=u!9I+QFpS3$TftzhlV&KNrw>7Zo^AAp3W+v`oCY zY*D5HfDICTJ{y^li&22BVIJbsQM^!ITGa-T94T%go;Z7-8f+l(jr5gi+$xN)Jy9}X zYzndIs2?c8@wq~DhpPp)$8w}KFed_}8Z0=}_zwHyMZ{@2xpJ#V{&2Ef(ox!$38l>H zDbx9*&)ELHr(VHKh|qNqZ7_nM2a})d>G_5{}Un$sVcV@AmaJV<-PWs^5bcofBlB^jB+f#H7Fv*yX?Jgd&w7vt1t z`et;xm`tuzmJb1dR*8(d_y_8xC{o6TSy!%jGbYd#Uy=ir0Wj1ToC1GqHV0a)DS8my4tVNUEHzLvO4mh?YAoXPPq%SmEd`%V6B27ruU-Fi_ z+;A6~w(CW&sjSvQ2t)$h9i+@T`|BcT{7E0hrAyt=iPojeXjM~QB@|U z60rq9uF!EGiLfdfYx^QoboJbE)|KF$O!jqnYna;{)zJlsQYg);m~esgGRV6;-vnXH zWI3mCwR`7#MtYCdi)dV<0J(?Re=Nc%0=7W;e8xUPE;g=Fu;qfe+4Dsd*g`Hk(Anku z22N2!8^G7J#F?o~&S7EpEg8>8jvDBvv)!u*iNjeVpXT}*-(EL{6{x%QL2C07=iASP z;3v8d4zvSW9wH~YLAgK>HaJWqm-XEjK34e?2QAo-7K1yrXp}f@>`h+d{PDjQ?T($* zN#7kJ2c*OkWD&OV0Pgdkym=|WQXPqnrK~`0kXXg-t-WW%M~gy4&{yY>1*~4h)t-U{ zD{5xs7e;UhZb%`+xe{RWn;e&U3V808dX`xAL?iUpLgAj~_H)@T`h(~Y9Cvo-+Di$D z3M%&lctKjjIvcfmHLTuH&k?y=IPv=&SZp(0tnT}cq9wE#S0$w?>;mA-IDa-kR)z3S zT9K+JhP+#y_8IK&YMLrr(jLN-N%6kM#Gy`5bFn)NX5ujqQF9VjkKs>SMXEwX(V$bG zKSfx5*h*@Zx>*%~Ls&`)mynzx_kg>H69~f_ghR^2Okzq=?YPim4tV9dK%1PFv6m>T zaS>1Ym2+XL>)Kz4a|F29lb^I@fjEOO%Z^KeJ5C$KKnuqChMmHxqtjg*QN(~b^Hj3L z$Q6`KwsW1f;q2^$g(cI=L+%{MmrD5vF0T3tYjtrWPn`^r&zf!`=ADek z!jEe*C`@~(@lp!0Dx>G*p5#s}XI6V$+iqiiF*w&P2(#;UC7A0*JP|cM^oC3eCS?k0 zDQ*S1r&*>v3v5s2PLc#J&m=9X1|{1f5}9U#Hmo!gyt8GsJt8Y|x-~S5$Wx&DVBm+S z1UOv5Un~1GCvF99wv+&Z6GK#NSzuNQo;W8l@tc6IEqVY-v6|zU%#P*%TaNwRW6c9i zBaxqP{8qz1ZuortwYs0I{X4ZyHOpsy|4jespE~s)o%#<>&Yk#`6Hgsa@z#Iu{_{S! zXJR*T?_}4xmJri0244);MVLdh?;%vrEH1o%@S0OVPIcWc;|eUBB#FV%@k{e5>(m!b zb>-8g2Qb`lhqkUISJ!N1P=S{AF6}*Kpu?LNJ32y=OB$Z~9)vF41LtnVa8#kSfo(Pa z+C6ovJYRtC&w3t^1gcnxI$v^W)y^xPqmiLNc9>qpEqFQ72PR~LGgaK`5i8E|W@rFsdNJa$7dLLD^S0SU5jpT4FTNMiqaMn{r!Isf z-WfNdTtne5mi&BE30RiHZ?{3g0!O#1?MVSTU2XM225`pryK?19f&`FUEkHmMJLs8u zSlayN*9tqc8QN@9GNbeby#WE9aB!34#8ZXj4RlWYu0>a`SaT}LfowfmRaJP(`%`<3 z?iNU*gs)cGI6Of=vvR=6k(KFNHQO%sn7^Uy5V3okgbzxaOL`s4jm0+c`BRuB`2?F- zEF;iN60L23Am7MrWC)bV1Z5t2lY0$13liSh%l#c8tI#nc8Lx;g72nBsss9C$f3Sn*%l$ZS!#3sN~$f zR^rdH(CJr(00U=<*S{z68yw%+*7IRt4fmmj)P5jQ$q`JW0phm;-{44v%e)H55l@=H zRyRSDU8Zr}DtzRyV*WXLC2J&^Sma}^qFqmi((g^fdHfAv^a}dQi7h934AhEMof7FC zQt8Ncft`8B_v*|*?3_Cr7LScVa6_}j%BMpN1PfPDA*1Y+I145M=YXLYTbcMl&>12N zaE;{D!snrTm06~RbV`){d)!8T8;e@2nH%v=QVq|5(3bS3euI@4)s<1P)q1+wa-_kj2 zMF;hG2cL+sy2dk^-rmb0X%8k09kwSZGx)`2DN6ONvd9l;ZZAgHa8<=-Pf>7*^8|}H z8wX)~EeY|)3Qd(jg^ffV1nUjbfi>hhlssL6*2PA>A)ry1miOa(XJmJWXp!D=IecD6 z*!y99pM$N>Mp7cw>8H8v4?vH>&%92>1rHvZDVSF4&t$EjlVovD#Qqjpj2houitP?w zMsw_FB%HL)OlEl} zIbBG;?%rJ8#^dF^lX?_)y}H?s>5z&v9tHivW8pAO09Rncswh@Gnoc0Ebt+YJ%(~#O zoO(;hFa*boy+(;BeFS-2g*3}pn<7b6FJ!z286bTxIyW1jXG%oC>z0PGpR=YOr9a`F z{M0_d8`(Rd+ap-M*nJ@+SmyS~T0Ei1E7%!YJzDjSW`j-;Gpq>E#m4|TDl-tAUP-(@ z6YV0sEUo~i>K2T3mftOh09Gbb4U#<0`Dv|8|XTVN_#y>wD^- z!{+B$leUmHIX_Y0 z%GWMFG|J!u#x3uVv2wdtaZi#(r=1Ojg+J}gDwKREEPPx2HnCcGX$mPvYRvg+L0RfW z3Qss!3PmrrXU%p9vwFJ2YPPuDfze?nKXB+=IN%vDZvSyr-?IsJ!69HLDwW4{OP9mU z8WACY24U80@}ZvD1cZF+>FN|=z>3&MMN+h?h9w`H%}%UIqyyiM`mJZmZ|N!ZdZ&9Y zg!E#OsTiPbbGT}P`Q5>ma7BU!xw+&UJ^NTEvh?|3hX%}~?U55LLJL{^NOjZ|WZs!*|`enzPx zoIFb}(Vb5*3!$t?ts1A0hWp5g*s_4{G8}b12Uk!Ufa+wKNts0FAuG}#y#d1DH-P2= z_0t%HnJ-97;LbE*NJ=S99vMFx=^tA>$VKX>lc~J7O0kNw@r)6l+Xe~E$a?=^3*sHI z?$BHBqoJYEqz)u_ixAt%(rmF;Zjf=RcyhLLl>cu%_PfWLpKU5d z{?kaJ@#~G38g}Y`uYRiTck4!K|9z=99Bvv~Jr;kkkkfd}5P;(Iucxd_$Z1B)nnnh6^Jj==)6x$>TTQYIC z_-A9m=K|CCHj^b_+whwAq@;sSa~7Gcqxl%!;3y3i%urP#7Tfm3DhgF}H%`0_ezc!? z+-6ZrzlU&(m$X_RK;_oYyYO9rV39w=-{wmG02`cg?d)b0bgg-PdlJaO4g5@dnA55u zjgYesXGQG0fruro;}EEV(T9vv6^#?4mJ`*7Ri(S>fC;WQd5e3W*O+^}y6M@=N7;QE^DumHp9k@zQfGOkSq>uEL72gI zQYlkP@AIvUSfLt<#1=#lLQ&S(dvPi=TslF&L&O7YQuX6;!I|Q;q4USfM}9sX`~t#S zh}i(;WFC>Pz$>AfTif161&8NL7rWb!mdDv$4a7z*19B(L!p0~&+ztLkaNfEDjJTxO z1I(2wsR(UtXBjv(`oR4TG}j&2iZc48;>23|fz&A|u%;vpp*4tppc(V&(rOy^HD#jF zh3NHr`hD-r-j4~|XkBmX4r%7A;qhO;A1?%yTv==Xpz&#D+F=K~-RU%ut$>py3VhJ- zPMp0I#KA)HQ6>xDhh&e7+&A|wXr3;7iHef&O+-hTJ`19&^kA;h28e_RaZ#2-d)s&z zN#yW+lAs=cioHyW44yrkW5?zHCh0)AmGoNnI^B|sg$haP?g#sz4>=g}@RFNGS-!-r z5o!8>17{Jg0s;rlyXF&_DLXn=2hIo6Y z_9Tu2Z4u^VxXGkx=#W3I12*kh3i80r%)A`()~4X|kSXQ3w=c|9bFYyblTj@suVs_K zVZ^`%WE6LjkM^QAj5pv^d?xH%AvZcO{0S0m`xFaHdSS>oxmg%?@`8hsBd_+F7bk!_ z6EpEasOO_z(_Xt)MEh*lP)GrS9u7HuN9RB2O>y5&q{R?cCwt&(!sFxOjN=Vip_cC< z1tR?R+8rtj@+DP;sMEcp%vYE z^~%hZ+gB#}zfPsIXtZh69EMxn9~XkXpo=se%whGx_e|m3kWd7$q-Ha9OX|K!xOb#9 zU)wvc32eI=S`VQK?28RLi47IftsHh*lAQ_h(?OMSDSfRq2Y=kao)DJm zJT_I@)l4Dl%gL+rZwC5YIy;%B%!&uMN;CP5y&tvNxJ_m@)S3;B3{zg=3`^B)?8jJo z41!S$Ix4kiTx-iXCVe$Y{Yz;%y`XilL{2kZ^q${SADGs}TRpwKNAX|H0NwQhlHMVU zali@0y$<50ii&}yd{_uYtP4qsY?_c2w~J*_DccGfKg9ag2%>L@#*Qw}-9KtC4AP6i zy)fY3F}&YCV$9w#;$7Zztz^8q%N-$1L)`>=WKT$F?x(H9{00qRZ?UBI#hf@fA0T7y z<3E*7V-EhQ1h9Cv{Nh!DjV;GCDy>q)RwAuTOui~_>>8c&h*HvC&7L)e>Gc}Uwww)L z@&jk$NRohAuPE@5BGWF}}apK>OB%px*p<^5hD}wuq`&^e9@BkN|k& zB`U+0IW9CmIH1`yx-2;pP(!A+csE(xEWWvC{aeoOoNEo~OUYOiw7S&eL67GSMlUI) zR#L~R>LS6RrzND+4p==;OrimNd9>1xid90D;JLm!uz%MF6cwI zw1)Il*9b<3Xyf|H5yz9CkV@D%>Z>siJv3IAFE@`uA9CFG&kQ)F<6)D;Vdls-=E)yq z)|0n{3az8ay~9595_{_Vg5JYe*M+vDF`UMX?0YEnbARPe1HKq#Izb03ct@NSxE9!s zc{ntnYNo7s2rmpCyIEA8^)?~K7R#TGAkI@ZoPoL@;4>DY_#XTjv7V z)*Ihbub0-gbUglri6j1k?qPV0LO5sj{3E9d|A0-f?w^Q7l9g5sP<;qdjPf99l5GqC zBDA8SODv|b?&=@-G$ej7IMD6Pl?E&p39DAWFxYqC7g+Ec{3#mE^P|CT#s4kG9v*96 zXevj3xAA{y__c=C`k$}+pX=Idzku@publqJr=LOl@4q`ae&Uyp|6j*nBK+v}J}l4E?#Qj*qLnP`7s z{~WN|q@Xmg99J-A!l-b4i4##4jP_$eP2_}TdGu5dJtjv{XzDxKhspO9)}Vhw4!jcF zHC-*$v#a3qKBzzAl`XbO5GkehiB6*4#gD`-+Vkemr{Zwbr{#T21Ps$>V zU-i;F0XJ@)y_rFeXc^q~&bC7737uEen1Z%Mhn(f`%v@N!EuVm3lf4B}NNUnJ6MB); z29+GzDS+Og$VkFV?T7EtRcB@GMv2zw<9uZUS{_ybGu+R+qIe`p!d(%k{`?BA1^oPOD04 zo=RR$_nf6zz1h7XJ&J@k(RKO!QJxxig~u@ZX$vZx!Kmh~1m2C189{drda#_8Lj+{s z=4TT3rWS7Bx_N8v?yauH=y+mjX=du$!rbj!lZ!;2SyZ-nlGN=iC+{VTxg=lXeV{j( zoTr2e<)Do1W95vzFYj4zk|C<4y5NEyPH^jnz${!_@k1+XKeq^rRP8Af;I5c304C6G z63&%mE?|<@5wbjEN+oj8!faMqmCL4f>WAu1WsA*hrurWuf*Jfls>sEXH^qeoR_3&6 z!O%y?+(y$>fTU`9#I9Ty)}M2B(e<~%$+ONTF>i{Z)uV(6-62-g@!<~L;Q`&6FO+WS zL^KS(f?}t(6)S54s9>lk7ogoHrggwAJkZ9FK1;d_sRo79(y9XHY0T0DkLS~Ba;QIH zjvO#9Gp)V5xRq5B^HeqMj3*xwDqKY=0a90C2l%UB8@|Uoey*)O)Hy~)@w^#xja&< zUB9xFM;pn8CEhh#o#$A9FsP_N&pdgbaUnmTqVVKHon(zGv2XOnO&MP7Fg*m4X>Vn(M_VQ4O?UUl z#zGgwzzD5JLh2?Dn55xB-z2?M%8H_In?ocGcNWT=DvVSyf*CDfLX%W5TCv~FTyJux zKE5am7dnAC(FT^RtV#CN0$2CPNSFmVG^?r5?X9dWRecaSR7sYz9iad}BbycT8ZKV! zKbmIO1_Tig;_E}tPB$v=-+(Wd`>xD89sZJpdH(50De>`-? z%1ZtwNGeZK@&CDF&mC+2`KFH|e-If#|L>0*Ua9|s`o_8&wO_A|)%?9P|ME=o^t-1X zpE_~!@ri$Q;xorvc)R}d?(9jS1Q}FS%Xxe& z%WKmrgQ*k^L{2=;BsN7ES#}&AL5W+nt&b#vbt}PI;p^ba%inZ`Mf?I=je0I-kPa3? zJ46kuG$KtxI>dUQXwP4RxevrPp%U>8>+Vi;2N3N&-1D_a8t#7K_5m7q<<2NJ3M6_D zt-XVGV{v^)JAf69;6DeH^)x}I0>ki9a+5RhE=jR@{-;MxcjBwuzydtmoz5t&Qn@`S zVTeJPH$Wp6W=AZ=O<@X{Jv$6?h#DxDq3ehw=% zHDNShpI#Xl4XTi(aV@eA&jfmsTb2igMj{Of73-tGn!>M$-$EJ@8CM>3GC}c3Hfd48 zn|liyVw-pJurys|h(mN-^Uo;X(O}b;2~53vw?KD^L7*3O+`ENTcYxI*{3M^FX~TYbC4`fUn!ZbRqlZ*Cx{sA(W^TFn$4c z&IJ@*FZ5B{(cd@r_{5&Ng&0AxfBL|AR+#{5CSqYDFnj3-%C5)XM1Gs*$DN=`EPUE8 z;SVq@=rLFnHcW+I<**GHG=fSLcgxV=V3_WTo#B3ghra|xlYY&NZ5*gvjDB00ynGcr zfnZA~oO*}i@Gg{Cx|^;+`a(L@a|=l@DQO5ZNf#)J<+mZcs2~I4qskp9D!#opr&&mN zZ=G*D$g8i+0(hvCL42~o8BcQ~*gna|anB}66>Rw6{Dy;5IsI(?sFES@Tw;@cQ2?{1 zLgYd^kkYZ%m%7U-b-5rVCR_};Qi^R?^YMutJXow81-ZZusRqX}G7 z^=Ke(l!sqQ3!-##c0ZxykSg55SvS`my@ynsD`OfVYW-9x6HaE1scH%<&MSo&498Lj z*as-F#Ba`ys00eTr@|wNYidWpRX*@HUhEk-_`>vy2fx2_@Y@%sr>A=cR`+H!&21Zp zRWvKNG~7pwC#TT2Ar-oU7(x(mO)G1rglhk)HDDZ4-BQ@#jH6jD@HX&`KxknuJpt4 z8&S&M&Zz{%JG*y7x7z-C_l2$l;BaLCEUCVOa;$Dq@c~-Ffkys)piNvjg$@>qaL(w* zX5HiJV(qvH8EnG@xjuP$c!l-@!POav>GsWav>kKa7x%0YNSoJBw}=Bo>&m$3T`_Pt zA+#SaV1!iMB6E}|77jjGUb6sg^&mi*uH~gBGGe(W0O2+GIR z+frc*-W~ssRge+E*!cjw!^;y_;K3A(T25)FBQ~pqn(kHj_BgP#rqM<6_0fq(FeviH zM~1@V6RDRez!9v;#=R+xtY^BnI~?B_9Tu=9gK-#esca?}+6GNJb2QsR7iV6Yjhi%g zAX{axAfONPP;;W6&*t$m{jaAbh~<8buxV0eC9%`p9Zu^-GnNAH9~P=>`uuHfZfAf- z`_88GgvNzJtS}9Mvxx!$L&|e5qrUS{-%UNp_w0YCuksI>R}6vP@#dau;j!M@8jh(` z(nT8pH`pq-Qv1SD1S>S4pjwBACF8ST3>Y+I3h`NRo0T=VKpd^`QUS15Cm9D#4N{L! z?~U75ecT@F3eo!0!jhu4KY}Ma3|M9&jz`LD@>q&W^+ksRXTZ%FFa|kHgmu#op+iVJ zhY~L02!${*O1@}y#XnGB@k|uyHRUFQ>>43h#rM)1EU-%{s^hOr&P)*Nh=LI$kF2-x zRm%)!qE}yhvFGOO$_#WmlKcJ9YfB3=d0HMvrv_r)#GZPEkST~D#t;eFS?^=?IMO-b)K9&E~+vE43Ik2ir?ps>43q-RY zO%^-l=KXmu(XF{|s^fc)Yc!-+$EVCs8ile}>8Uc zHuN=IYKS&G-SAXHZNstpAJl)p{(JS`ssDEUx9UHx|ET^O^&i%MQ2&1YZvA`p@7BLv z|FC|uey#r1`WNfx>#x^8Uq4#kSAVHKTK{zYQ}wm=$LP2C{krefeW&i*b>FJ{xbCC6 zZ`6HQ_d(tJb-Q)%)xBHycHP6e&APR^SLa$x@g_gbx+mR)*Y+; zLGAZzzgPR6+Hco>tM=pCk7~bB`(f<|weQ#N*1lK!ZtdH(4{JAT*J@v_eX(}F_ImB} zwWGCtwU=t6wNKYRRa;wotmX$b->>;z&39_PUGuG)k83`v`9{r$H6PTxU$a~D9u**O z*F3D*tXZphwdTc|`I_rB&)1CB^wnIdiPk(_^Hfc3&9O5-IP?88-#hc2Gv7Y*tur5= z`RL3y&U|?0gEQ}+**)_f%j-}6`;!^?lNtDv8F=Ch)SNtVBJ$gj-?r=DjQmZz{#N9- z?E1CH*X;U1+#(`3<}N^~hhh>#s+C-LAhD`8B(KHS$%vz8`tt zu754^*X;VMkzcjzUyb}#yZ)8PU$N_7j{If2?nUtBleCAsKOQvFl%q{6)L|g~(s9>z|MOdAq(BdC#uD6!|5){<+AXv+JLY{8_vHnaH29 z>z|JNX}kVn${P6?fUbPpSSDJMSjk%KO6a3yZ%h%XYBe;uZtM z?3#&W?79|Nv+HVP)vos=_wAaFr0trDr0lv9S+VPKWZACCNYbvaMqah+E0I_1`sK)% z?fRw2m+bnJk)O2d%aNDu`cmX2yWWf3v+IkI7wvjCa@VeRB6sY1J968uOOYkJE=CsZ zx)52g>kE+=>^dKrx9ePF&aSs2x9mC_nYHUoWX7&HBRB1OBXYy8(~)VrUXNV2>$S)= zyIzf4wd+)5%C3`~9ikHqcz#mE=!`i00B?D`XtpRnt5 zk>~9CY~)$Hjzz}oIvN?Z>qun8uEYOdd*>Y;)pf0LFt!16F2unyQDj*o5g7;wG&33% zcwVyx0RmHv1S~r*D{l~k5J(!V(EzgJB-c*w)k!qzz4zV|r}y4_@4Xl2{l0zg9nFZV z*srYj*Rz+sXYLf8Irp4>cKP62kFJrRH>oS@4(k4@0%4E_@n(XvCO>XiwncV1Y zG}+;GnB3rPFuC4aZ}Q&Wy-lw3)|p)Etu?vETVwJn?<$k+Uc1SAdG|88+FNb1&1*B+ z>b06ocnOm&UW>^qy(>*Nd(9@V@UAe~+}}+8)&14vU)*0z{@MN6GR`*tuZ*gxi`DXWK zlW%fwGWkaLMw4%FZ!r0K_j;4BbFVY`TK8I$uW_$2`D*uSldp2GGWkmPN|Uc}uQ2&? z_i~djb1yUbQuk7mFL5t1`C|8ClP_{FGWkOHLX$6WFEIIh_k5GjbI&vRT=!g)&vDN& z`E2)Wlh1O`GWksROq0)W&oEhW6_Yb=#^lr8(@j3jJ z`6TxwlTUO{H2DPg1e1?Hk9LnX`6%}&laF+dH2Dbk2$K(Y z4>$QR_b`(Wbq_W95cd$14|WeWd8@nC7d67i?Xy z!drg8d$5~Y_SI!u!T*1H>19hEzxYdw7vjAwyy!j`zGl%c7ByZlx$vV4_wnYse{NYa zV??4kKfh&DUtJ+Y6!-3d-zW-R%pZyhqKeg+6VX(#J;bB})N`9cuB6H)hSdNL9Tl0Dzj|iWVqG^iw`S__$kj=L>LemP zn={f7Afqs9b)gWLQy7xCciwtbM>AxNw^$I>F2p--ZVw1M|XD**bYIH&JX%)MKFFX z%_s`0$3ZGxsQ<7Vz;+&!{$V_@I!+M_Cc&+mKEna(6N7?VS=|63Ujmfe?H*X?%2QN| zC6a^1>GF+wz*I--aIthsG{EWIhsjYL*XlV^T(xd}ETE&itDCe%Y?>fG z;A_~060Lu!L8jV+cq${^Pw@|wW9pg$!vV=;*p#>fR@FumSo(Y!HGytMV%Nrj-S80< zjlRlY59bOr)AQSA!d{(OD#};Xrqik`D8(nA2!lAWnO9#1E>bIx*=_%u~4Q03I-Cf$$U=L0R4GNu>fGuN^k^D zOQ4SB(!|WLM$>e^hQ{W)3}iHAXfPC?vQjx?E37O2Cz&j8f>IO{Oo5>~A|??EkxtPZ z?kM@YsC;XHf*wi@)GL#u=gPjOo~z^T66_)AdHUJSVr;g(XWDxEn~uSU#nf4=80g8!)+RQI?v6S>G-fWiWY5*Bt@bs$I5Y}# zCRc-x*ylk{s;OpU$B|9xbX{+a>O4Zzk`6Puv0FV_Q)*vhjVri?hu9R*J#?@jvJ_x! z=mj{!5fs$KcWp@XlxEGdmy#PGOxVy@d#UCtv|6m)jjCWFCn29&@E6SdhX#J_q50rQ z8S+}a@p&yf9p+YYuk0o+f3_!$5@(e7%J?FB01-i^cO7^ zz!Xu6O+CrvHB@Afaq8!V6T6EXhmfO!>ns)EKU4F~#-!i4y1k{YMyWdZPI$zk+PJA?B@!-LbnwSG&r0&_?1i{{YmB#Dvm#x{9tV`%e!|tMzH5rTl zpJO<3(!ggx_E~@@k)GM6vrMH?pmE@gaOk3XKs=68M+Z+E&9#DOJExBUkA;{mx^RG7 zKq?-Nli(^1;?Z|CPpSV?BhJR$sg}n0GqsC`QayJeab0KCh|hFDszjQxn67Zh~J;d z)t63JZ+3?57=JL%yTPPZb$+Y*BPcf8p^8}u?pO=CFwYnp^7-JaoCZc`FdlGtNziKfsl6~6 z;+>7=#*XJPrN;}!Fj?>S&8Uee_jXOws+RcQBCjRB$AZ%m+FG2ZJ`nTA>W5n?Ahye@7Y^!ct4<0(K_xUaBo0s( zYA|5XUUO!^92Mbc7Y)IXXc*66P3zJ@Z91-Oqp3=cu5(!VYP5h8AZYX;ti@B9uv2i^ zVJ+^b(=%=y8vwNijU#&Hs>ESBZIlZo`Tv(Kc=m$jH+i3@`(Jt4SC%C&DJ^})(kqtS zy!hvfdoMnI;UgBk!_H9h}K%Q?k2B8ne zwAchvphy*g4uSw}DVCocwkKW@Gil9ZStUjQbXGizIJL&Hd|?03p+Q;;pQh|i1&P}V zg~p$pH*0aBS56AL0d2aNZ~}G zUV(}LLMmj1fD9TP11;Wl9>lEl7{5&)$8k_T!H#vBv6oKEbI`PdNl`r4PYuF zre%{sF$Oq!bkca4IldtZ8Uvg|(@4rF3zK-9BP!m(K!qpe`0;DRod-Cn1T=5$jQBAz zsJGAM8LJK_+0{J{H+TKS>=Unzbg1>S1n?psOkG8|EN;fkx(&0WVnKCX4fF+#Ore&x z0((lk@+gHN&|;USvPo#(h@ALW&D>vOZT1JKV2N=jp_1uKcSY9HEP)H(SuF_&?$l2D z0RjKPo-O0e1CZK)`i0U49iTtWg?e?|2IV+>`%DDNs!V4O`N6rMA(mrYIinj>9<_M_O2Xzkl+q>gXc0Bg>2GRtsm1VB-+XAn@t8W!uoJEEP45XFr55bF-{M2Z})u zpV4O^&n)N_O@T;RjnN*B%Y$ep4vmaWx83O*!f%&GKmXff$MZiJ4S(#v`jxTozY9Oy z-#24zKacq9)->05Y=|tJK00&HLy{4172r}46Q-4F(M-BoBa6my9V(m{sS;RuvKRT8hgT|BXFcDO+SKXqR4hH9nZnTXeA6SX2NO)B3Q7PjM9;aoOH zSM);SWC1lCT%pZO_~=0SG+PP<1j92sGQ2uSfiK?`KJ&eqvpOf5?h9x-7NAbo$V?_^ zs&amCMg0t@RvSA`EVv}U(E@%J3d~}6pgZ=IPs7J)4|CX@(c?XN!k-i23-+GGp6TH{ z=;)@IGn&Mv5)J2LV^4jlzEmE56zY$BD^vp%|^lr?Y36i>T4uPNhK2d@B;F6(sYpfs!H(pX!zk61)cSUpxf zS_krE3#KAs)39o`+8*At4GnF{O`K~BX|#rQ0uYN(z>4@I&D$oXRVc=i939>>u%mnu z9_%t$S2g6MMrawJ-`KLmUTWl%ah1RI=jzao6ma!PbYNg=VoYjSit1J?@hF2mqf`sj z)7Ti3#P<{=FJ-S|T&C72$l#`r<Vn-Bc!MD{yk=H&^UAc!iJ`n7}F*NLY!8{cd?kG#@eaHd*{q7 z6=!rJvl%O~KyiGD^`fnp-Cru?r3Y|Jb82lM|I~CjPNH?t?C>wmtZ%QQCaTV1s)vYN zFo$=pJuUxZX1+A2mNI`Xr2FE6DOd9Z!V(48P8AjBr9CpBRV`84CjvsQ9L&>~rZ7p= z|E#FwhcTD-PV*axgu#kQ;l!0QMQPDoan0)1Iue)a*gN}ry5q{b>o?&x&YDDOL*j^X zLnknam^MW!DY&!7I5kzvkopdu!aos2UhfMUXxhWUQwnnE;!YWMdO(KF8fp^KZfvNh z&x(fFqYkBa;ns6sS%r~qh$a_uNgCU0_p8n@P``vS&{laFTy4?g3?wYL1QP{Zg**LRUW!%yS_6AO64sq+goMGg<3oFo zI~in{8w zDZQ?i4#$XTvFSNTN3w%*PI+qmE)i2S9Oh}iln&BAS!vL?l74Z0M|~fuXj~A+cLi(< z)vZz&)(^v?>6s`Z;j4Uhv8>3O7`fWCkNLVg<02f zV&>_BHa50S$|6VuZ03tG7}dO>l;C5vPkZ=m?Q_1Y_9-uS`a3I^nW=j7maF@>oUa%9 zV9LUQw{$?QT`2vzkK~0BqLHV~pH{gRO3D(}A!&(ph4DP#Z%<{Tx3i2!6I;vCXZGdw zHSDaQ78Yf9@^qdr3*LSe_XKvFEkqcK1p9(N6MYku>>T5m97X%>g?n z$Xk^qcuZQOAMX6ZxOi>2-8uCq$?G!oz)&uCR>XGN&~Z~oa#M`W#*gU9WO{=#?m6sy z`VtZ@ir@kPD2&;e5?MA;oc630-K#MbKMj_9BN7baw%6d>@aa(4*ay{KY+|ptoiN?C zA`ce`p$5nUJ>|qH`E8X;HReq>HRqb*Cmy&%=X|N{SR0f1wW3F|{%58Y`ltR}1c(+2 znVMEFbCHf5o4usTtTohj=IO^cc`Tq~XO5>U)*Libo-bO~4MdJ)1R95=bUK?%!>*d_A-uXmN+sua#6uLgt&sF5jgxfF z%B(SFsv`(^rnR{yR6J{XS<8$jR_4i4z|V~oTZ;vdV4@Npfry#a9a8SfJdRCgp}R=? zdn?ugH0R&1xw$dMIb>+*-mZWVzwT={6WbOy@qoOUT|wk8>XLzviMggvTy^5rDT*ty5oA5`e5M{X$W#;sL&yq z#GH868nj~zoaHe@2>hNDM4|JfxdvIuAZpP`UV2eWOFd;{bn0e$ z(!FU*qMkoHQXx5xk+EW8oTe+fOVOeVtmbfOv4E=0>h~6@p$L`wg9J_Zf4Wou@3#N@S67xWV*n87l(#O%x9i)ONt4|T5n5G+R<%^ZY(9G~Fgk+x zSg3SKHPC>Ul+H0yUSq}6rbg^+x6vgI9R>JQCf)__M+rw61;a`pB(1q0g1M8dA*~rF z4}mq|1+=vAN7Tg=*&=6smgrWYqIR8)P4fUy7(VTfqYl1N%87Nhn|KN;0LNFWAFIO( zqR+}f5vmj3olGYICfdt%BaUH`L1%2#*!Ju z5?*;vOvhm zPMsjo&Y&^Mr)e^KwxZ6N^jpl_2X4bS`>!k0O^tnQa?SD`W+g?N%|Mo%1|`9PLtB>M zJ=Q6yVa98Ld6*Z6Pn;MfyT!;MRKSQs>q~_UkPJJgl)zw-h|I(Y0UY)#hVcaFtt~t} zZ@uw2WO*BdFh5HU_^dQ_SBgu-8O*HGyU0PFDR3?7-!?p{R?Wsb(%R-9t*Dcxj^u1l zN9;L4bSV>C&|ZJ;S@KMy`xnVGTb|J@*@6mZ$G8)Sm4$A87UVU)GSQwkSg?zeV4($W zV+MBOa`QLZ_TnqF5g`-8p-51@3_hC3L>su3sp4+%tins<=x{-hhkvhFL(QCjXnjk( zmVlGEJ3`m~OSON*$ha6cTaS46ar`+8Z5jcWGExId0$7JMOJ}i1NM-4MoEGt?5ayWb2t1jrg|%`pj}-XW{)s|vf~L8U)?jVwxZ@Ag*=fwc1behEEdxENUMfaCYv^BpdPK^!w}pP=A1p#Y%yb+sN1Oxi~jE$ ztr5L+(jXXslGqQ+WpW#3a+1g7|2Hf=wP3~d%OB#s%Uj_NE_))??8&9&B_CUI+2Zz# zA5Q1LEf?Ol=v#}{U2y%v@9@_D|L4Cq1EtCabZkTN>XzoXxN+Y`wJHwwb=;{KSy}@- zZ=5x+vICG1kzSp;(H;~-SqNo*>c%sb_4=#L*EKiC`#^muI?ZKd-PNVHp}`-*zzvDi z6=3CrQSO&SNoMbXotSgvuh{@-h7w9HeGN(t!x~rT7=H6a(cfLUw{&>gzfVh3Qw*4f zADjep84u+QOA>;U4w||&x^-+kur;q^$8MdR7Bi>ymL|Yay#f4W@h#mM8KeRHU&sp6U>LZb8QYsT(N>(pbujE)uV{}pq z-qG9Vw^qWIj;kA*!lDM{2xx|4%k0|X9bT-#Ecn6m`qFx1Wjy0es6 zE0$V7QxnrzN_-+0y(84F>u9t(b_^CUsPvPWe!twa(edp zVXB>SAVTxNg=*j7-?P%L1)THO#N$DkQ@Uo&Gp99&(yqXz27Z&O?E=)MbB|_+ln`P4 zir2jAPbpYsE7!IeDLT~^abtip!D<8MItg64VyzilZtiGa9qaA)W_n<(oRd|n9@o0f z0mpXnbXkXU9R+@POU>33mtb~qHh?EnxJctW@N<)=_R@#}gr3m|LZf3OVC8X)++eqxMPNQBWFf@&dSv6?joX5U2hnqYs*c&S&58ZgoyqDu zF5Q&!ud1|afoJ>`Ev<2xITkofP?>mGad@8uSr+DrBd6OKmaYCu_r-jhH3C`g6>f;R z-BG}7--E+I`WW+YVq^_Wltm0)n()lFcUE|2TDbi&4wmV}!06GVes3kA32wTXJaH_R ztG5#UdzU9~6t$>OX&m;U-Uy&qpV$w>x-v_6$x=Ln*58F=y+wOr&`+*zZ;z=n zBtO#E3z|nII& zcGs1sb(X8bZE^G!$@z@4e-q3;oMo)}90-Q-@|Z<0P>qviI_40STVAGV04o^%ZY$=Kz#)W4D;=_ehmQBpbE`TW$4s~jA@bt9* zZOR1kQ-kjoK; zrwRQo9f&YnlFJZu9;jtOY`A(vw?kgjgogQqT|hn~LQ1qeiCwvdc*csy>?z#-`iXr4 zEO)as(1iCS&I!#%gZ|H6-3$Ucp4V9xrKqFwE7#61z`#E>{DW*JU zn;n|_#?55Bx(`w(bpax(Q`sKb0bSSTog}$N9q||mj{qltzj_04{M0tibT!wc^Hl4q z#(4&xA&wJYUs&6DiiryyH<&DIJ?q(p4U_xym~K^WZ$EYi*s`FT_;3+Jp z6CFg^!b!vmWHjZ`kald9 zwKaGFTk1GS5!5(@f0Q4n=GMQq(x_R_`0JXJt9Qr#jx?mQcN%{R%WnJBPln`USP;yZ zSx=Zt=wTyD4~tXSE*ALNYG^=~`_9qRlzEIxMR z3NYJ*1~;tSF{C*E+H^NB!qf;BVjbBhYw(%#H?8EK*dLW50uUd=s<}P8(2!d9oY8bn z3e74tyCO3@25`jU? Date: Thu, 1 Aug 2024 22:23:25 +0700 Subject: [PATCH 7/7] feat: update README (#8) * feat: update README * fix: update styling * fix: styling * feat: add slide link --- README.md | 221 +++++++++++++----------------------------------------- 1 file changed, 54 insertions(+), 167 deletions(-) diff --git a/README.md b/README.md index d50f7b7..b1d5f72 100644 --- a/README.md +++ b/README.md @@ -1,184 +1,71 @@ -# Python Discord Code Jam Repository Template +# Mordle +Wordle with more fun and more information. +See more in [this slide](https://docs.google.com/presentation/d/1cCAn2Ggavuf-VrAuh-mOnEE_v00eoi68kCEKvENDXug/edit?usp=sharing) to acknowledge all of its functionalities. -## A primer - -Hello code jam participants! We've put together this repository template for you to use in [our code jams](https://pythondiscord.com/events/) or even other Python events! - -This document contains the following information: - -1. [What does this template contain?](#what-does-this-template-contain) -2. [How do I use this template?](#how-do-i-use-this-template) -3. [How do I adapt this template to my project?](#how-do-i-adapt-this-template-to-my-project) - -> [!TIP] -> You can also look at [our style guide](https://pythondiscord.com/events/code-jams/code-style-guide/) to get more information about what we consider a maintainable code style. - -## What does this template contain? - -Here is a quick rundown of what each file in this repository contains: - -- [`LICENSE.txt`](LICENSE.txt): [The MIT License](https://opensource.org/licenses/MIT), an OSS approved license which grants rights to everyone to use and modify your project, and limits your liability. We highly recommend you to read the license. -- [`.gitignore`](.gitignore): A list of files and directories that will be ignored by Git. Most of them are auto-generated or contain data that you wouldn't want to share publicly. -- [`requirements-dev.txt`](requirements-dev.txt): Every PyPI package used for the project's development, to ensure a common development environment. More on that [below](#using-the-default-pip-setup). -- [`pyproject.toml`](pyproject.toml): Configuration and metadata for the project, as well as the linting tool Ruff. If you're interested, you can read more about `pyproject.toml` in the [Python Packaging documentation](https://packaging.python.org/en/latest/guides/writing-pyproject-toml/). -- [`.pre-commit-config.yaml`](.pre-commit-config.yaml): The configuration of the [pre-commit](https://pre-commit.com/) tool. -- [`.github/workflows/lint.yaml`](.github/workflows/lint.yaml): A [GitHub Actions](https://github.com/features/actions) workflow, a set of actions run by GitHub on their server after each push, to ensure the style requirements are met. - -Each of these files have comments for you to understand easily, and modify to fit your needs. - -### Ruff: general style rules - -Our first tool is Ruff. It will check your codebase and warn you about any non-conforming lines. -It is run with the command `ruff check` in the project root. - -Here is a sample output: - -```shell -$ ruff check -app.py:1:5: N802 Function name `helloWorld` should be lowercase -app.py:1:5: ANN201 Missing return type annotation for public function `helloWorld` -app.py:2:5: D400 First line should end with a period -app.py:2:5: D403 First word of the first line should be capitalized: `docstring` -> `Docstring` -app.py:3:15: W292 No newline at end of file -Found 5 errors. +## Installation +Mordle requires only several dependencies to run, be sure to clone it first: ``` - -Each line corresponds to an error. The first part is the file path, then the line number, and the column index. -Then comes the error code, a unique identifier of the error, and then a human-readable message. - -If, for any reason, you do not wish to comply with this specific error on a specific line, you can add `# noqa: CODE` at the end of the line. -For example: - -```python -def helloWorld(): # noqa: N802 - ... - +git clone git@github.com:cin-lawrence/code-jam-2024 ``` +Ensure you have a Bot account and a server to run the Bot. -This will ignore the function naming issue and pass linting. - -> [!WARNING] -> We do not recommend ignoring errors unless you have a good reason to do so. - -### Ruff: formatting - -Ruff also comes with a formatter, which can be run with the command `ruff format`. -It follows the same code style enforced by [Black](https://black.readthedocs.io/en/stable/index.html), so there's no need to pick between them. - -### Pre-commit: run linting before committing - -The second tool doesn't check your code, but rather makes sure that you actually *do* check it. - -It makes use of a feature called [Git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) which allow you to run a piece of code before running `git commit`. -The good thing about it is that it will cancel your commit if the lint doesn't pass. You won't have to wait for GitHub Actions to report issues and have a second fix commit. - -It is *installed* by running `pre-commit install` and can be run manually by calling only `pre-commit`. - -[Lint before you push!](https://soundcloud.com/lemonsaurusrex/lint-before-you-push) - -#### List of hooks - -- `check-toml`: Lints and corrects your TOML files. -- `check-yaml`: Lints and corrects your YAML files. -- `end-of-file-fixer`: Makes sure you always have an empty line at the end of your file. -- `trailing-whitespace`: Removes whitespaces at the end of each line. -- `ruff`: Runs the Ruff linter. -- `ruff-format`: Runs the Ruff formatter. - -## How do I use this template? - -### Creating your team repository - -One person in the team, preferably the leader, will have to create the repository and add other members as collaborators. - -1. In the top right corner of your screen, where **Clone** usually is, you have a **Use this template** button to click. - ![use-this-template-button](https://docs.github.com/assets/images/help/repository/use-this-template-button.png) -2. Give the repository a name and a description. - ![create-repository-name](https://docs.github.com/assets/images/help/repository/create-repository-name.png) -3. Click **Create repository from template**. -4. Click **Settings** in your newly created repository. - ![repo-actions-settings](https://docs.github.com/assets/images/help/repository/repo-actions-settings.png) -5. In the "Access" section of the sidebar, click **Collaborators**. - ![collaborators-settings](https://github.com/python-discord/code-jam-template/assets/63936253/c150110e-d1b5-4e4d-93e0-0a2cf1de352b) -6. Click **Add people**. -7. Insert the names of each of your teammates, and invite them. Once they have accepted the invitation in their email, they will have write access to the repository. - -You are now ready to go! Sit down, relax, and wait for the kickstart! +To create a Bot account, see more [here](https://discordpy.readthedocs.io/en/stable/discord.html#creating-a-bot-account). -> [!IMPORTANT] -> Don't forget to swap "Python Discord" in the [`LICENSE.txt`](LICENSE.txt) file for the name of each of your team members or the name of your team *after* the start of the code jam. +Upon creating a Bot account and a Discord server, retrieve the Bot token and the server ID (see `Server Settings > Widget > Server ID`, then copy it). -### Using the default pip setup +**The application can be installed using either of 2 ways below.** -Our default setup includes a bare requirements file to be used with a [virtual environment](https://docs.python.org/3/library/venv.html). -We recommend this if you have never used any other dependency manager, although if you have, feel free to switch to it. More on that [below](#how-do-i-adapt-this-template-to-my-project). - -#### Creating the environment - -Create a virtual environment in the folder `.venv`. - -```shell -python -m venv .venv +### In the host machine +Change your working directory to the project's root folder. ``` - -#### Entering the environment - -It will change based on your operating system and shell. - -```shell -# Linux, Bash -$ source .venv/bin/activate -# Linux, Fish -$ source .venv/bin/activate.fish -# Linux, Csh -$ source .venv/bin/activate.csh -# Linux, PowerShell Core -$ .venv/bin/Activate.ps1 -# Windows, cmd.exe -> .venv\Scripts\activate.bat -# Windows, PowerShell -> .venv\Scripts\Activate.ps1 +cd code-jam-2024 +``` +Install the dependencies. _It could be nicer if you have a virtual environment._ ``` - -#### Installing the dependencies - -Once the environment is created and activated, use this command to install the development dependencies. - -```shell pip install -r requirements-dev.txt ``` - -#### Exiting the environment - -Interestingly enough, it is the same for every platform. - -```shell -deactivate +Exports your environment variables, including the Bot token and the server ID retrieved. +``` +export DISCORD_TOKEN= +export GUILD_ID= +``` +Run the application from the current working directory. +``` +python -m app.main ``` -Once the environment is activated, all the commands listed previously should work. - -> [!IMPORTANT] -> We highly recommend that you run `pre-commit install` as soon as possible. - -## How do I adapt this template to my project? - -If you wish to use Pipenv or Poetry, you will have to move the dependencies in [`requirements-dev.txt`](requirements-dev.txt) to the development dependencies of your tool. - -We've included a porting of [`requirements-dev.txt`](requirements-dev.txt) to both [Poetry](samples/pyproject.toml) and [Pipenv](samples/Pipfile) in the [`samples` folder](samples). -If you use the Poetry setup, make sure to change the project name, description, and authors at the top of the file. -Also note that the Poetry [`pyproject.toml`](samples/pyproject.toml) file does not include the Ruff configuration, so if you simply replace the file then the Ruff configuration will be lost. - -When installing new dependencies, don't forget to [pin](https://pip.pypa.io/en/stable/topics/repeatable-installs/#pinning-the-package-versions) them by adding a version tag at the end. -For example, if I wish to install [Click](https://click.palletsprojects.com/en/8.1.x/), a quick look at [PyPI](https://pypi.org/project/click/) tells me that `8.1.7` is the latest version. -I will then add `click~=8.1`, without the last number, to my requirements file or dependency manager. +### Using Docker +Docker encapsulates all requirements needed for the application. -> [!IMPORTANT] -> A code jam project is left unmaintained after the end of the event. If the dependencies aren't pinned, the project will break after any major change in an API. +Though more advanced, this is the recommended way to run the app. -## Final words +Follow the [official documentation](https://docs.docker.com/get-docker/) to install Docker. -> [!IMPORTANT] -> Don't forget to replace this README with an actual description of your project! Images are also welcome! +Rename the `.env` in `./config` folder, +``` +mv ./config/app/.env.example ./config/app/.env +``` +and add your environment variables. +``` +DISCORD_TOKEN= +GUILD_ID= +``` +The latest version of Docker already has docker-compose included. To minimize the steps needed, it is recommended to use docker-compose. +``` +docker compose build +docker compose up -d +``` +The steps above are sufficient to spin up the application. To shut down the application: +``` +docker compose down +``` +If you want to use the pre-built image: +``` +docker run --env-file ./config/app/.env mikosurge/mordle:v0.0.1 +``` -We hope this template will be helpful. Good luck in the jam! +## The Ornate Orbits team +- **@Atonement**: repository setup, first bot implementation, code refactoring, trivia crawling, commits, and PRs managing. +- **@Xerif**: main game logic, most of the commands, slideshow creator. +- **@kvothe**: some nltk, crawling, math, and trivia logic. +- **@Bh**: tests writing, bug fixing.