pax_global_header00006660000000000000000000000064147451202310014511gustar00rootroot0000000000000052 comment=a67798d3bb377cef74dcd63744481f30680aea42 milc-1.9.1/000077500000000000000000000000001474512023100124455ustar00rootroot00000000000000milc-1.9.1/.editorconfig000066400000000000000000000006311474512023100151220ustar00rootroot00000000000000# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs # editorconfig.org root = true [*] indent_style = space indent_size = 4 # We recommend you to keep these unchanged charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.md] trim_trailing_whitespace = false indent_size = 4 [*.py] charset = utf-8 max_line_length = 255 milc-1.9.1/.gitchangelog.rc000066400000000000000000000234111474512023100155050ustar00rootroot00000000000000# -*- coding: utf-8; mode: python -*- ## ## Format ## ## ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...] ## ## Description ## ## ACTION is one of 'chg', 'fix', 'new' ## ## Is WHAT the change is about. ## ## 'chg' is for refactor, small improvement, cosmetic changes... ## 'fix' is for bug fixes ## 'new' is for new features, big improvement ## ## AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc' ## ## Is WHO is concerned by the change. ## ## 'dev' is for developpers (API changes, refactors...) ## 'usr' is for final users (UI changes) ## 'pkg' is for packagers (packaging changes) ## 'test' is for testers (test only related changes) ## 'doc' is for doc guys (doc only changes) ## ## COMMIT_MSG is ... well ... the commit message itself. ## ## TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic' ## ## They are preceded with a '!' or a '@' (prefer the former, as the ## latter is wrongly interpreted in github.) Commonly used tags are: ## ## 'refactor' is obviously for refactoring code only ## 'minor' is for a very meaningless change (a typo, adding a comment) ## 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...) ## 'wip' is for partial functionality but complete subfunctionality. ## ## Example: ## ## new: usr: support of bazaar implemented ## chg: re-indentend some lines !cosmetic ## new: dev: updated code to be compatible with last version of killer lib. ## fix: pkg: updated year of licence coverage. ## new: test: added a bunch of test around user usability of feature X. ## fix: typo in spelling my name in comment. !minor ## ## Please note that multi-line commit message are supported, and only the ## first line will be considered as the "summary" of the commit message. So ## tags, and other rules only applies to the summary. The body of the commit ## message will be displayed in the changelog without reformatting. ## ## ``ignore_regexps`` is a line of regexps ## ## Any commit having its full commit message matching any regexp listed here ## will be ignored and won't be reported in the changelog. ## ignore_regexps = [ r'@minor', r'!minor', r'@cosmetic', r'!cosmetic', r'@refactor', r'!refactor', r'@wip', r'!wip', r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[p|P]kg:', r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[d|D]ev:', r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$', r'^$', ## ignore commits with empty messages ] ## ``section_regexps`` is a list of 2-tuples associating a string label and a ## list of regexp ## ## Commit messages will be classified in sections thanks to this. Section ## titles are the label, and a commit is classified under this section if any ## of the regexps associated is matching. ## ## Please note that ``section_regexps`` will only classify commits and won't ## make any changes to the contents. So you'll probably want to go check ## ``subject_process`` (or ``body_process``) to do some changes to the subject, ## whenever you are tweaking this variable. ## section_regexps = [ ('New', [ r'^[nN]ew\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$', ]), ('Changes', [ r'^[cC]hg\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$', ]), ('Fix', [ r'^[fF]ix\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$', ]), ('Other', None ## Match all lines ), ] ## ``body_process`` is a callable ## ## This callable will be given the original body and result will ## be used in the changelog. ## ## Available constructs are: ## ## - any python callable that take one txt argument and return txt argument. ## ## - ReSub(pattern, replacement): will apply regexp substitution. ## ## - Indent(chars=" "): will indent the text with the prefix ## Please remember that template engines gets also to modify the text and ## will usually indent themselves the text if needed. ## ## - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns ## ## - noop: do nothing ## ## - ucfirst: ensure the first letter is uppercase. ## (usually used in the ``subject_process`` pipeline) ## ## - final_dot: ensure text finishes with a dot ## (usually used in the ``subject_process`` pipeline) ## ## - strip: remove any spaces before or after the content of the string ## ## - SetIfEmpty(msg="No commit message."): will set the text to ## whatever given ``msg`` if the current text is empty. ## ## Additionally, you can `pipe` the provided filters, for instance: #body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars=" ") #body_process = Wrap(regexp=r'\n(?=\w+\s*:)') #body_process = noop body_process = ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') | strip ## ``subject_process`` is a callable ## ## This callable will be given the original subject and result will ## be used in the changelog. ## ## Available constructs are those listed in ``body_process`` doc. subject_process = (strip | ReSub(r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$', r'\4') | SetIfEmpty("No commit message.") | ucfirst | final_dot) ## ``tag_filter_regexp`` is a regexp ## ## Tags that will be used for the changelog must match this regexp. ## tag_filter_regexp = r'^[0-9]+\.[0-9]+(\.[0-9]+)?$' ## ``unreleased_version_label`` is a string or a callable that outputs a string ## ## This label will be used as the changelog Title of the last set of changes ## between last valid tag and HEAD if any. unreleased_version_label = "(unreleased)" ## ``output_engine`` is a callable ## ## This will change the output format of the generated changelog file ## ## Available choices are: ## ## - rest_py ## ## Legacy pure python engine, outputs ReSTructured text. ## This is the default. ## ## - mustache() ## ## Template name could be any of the available templates in ## ``templates/mustache/*.tpl``. ## Requires python package ``pystache``. ## Examples: ## - mustache("markdown") ## - mustache("restructuredtext") ## ## - makotemplate() ## ## Template name could be any of the available templates in ## ``templates/mako/*.tpl``. ## Requires python package ``mako``. ## Examples: ## - makotemplate("restructuredtext") ## output_engine = rest_py #output_engine = mustache("restructuredtext") #output_engine = mustache("markdown") #output_engine = makotemplate("restructuredtext") ## ``include_merge`` is a boolean ## ## This option tells git-log whether to include merge commits in the log. ## The default is to include them. include_merge = False ## ``log_encoding`` is a string identifier ## ## This option tells gitchangelog what encoding is outputed by ``git log``. ## The default is to be clever about it: it checks ``git config`` for ## ``i18n.logOutputEncoding``, and if not found will default to git's own ## default: ``utf-8``. #log_encoding = 'utf-8' ## ``publish`` is a callable ## ## Sets what ``gitchangelog`` should do with the output generated by ## the output engine. ``publish`` is a callable taking one argument ## that is an interator on lines from the output engine. ## ## Some helper callable are provided: ## ## Available choices are: ## ## - stdout ## ## Outputs directly to standard output ## (This is the default) ## ## - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start()) ## ## Creates a callable that will parse given file for the given ## regex pattern and will insert the output in the file. ## ``idx`` is a callable that receive the matching object and ## must return a integer index point where to insert the ## the output in the file. Default is to return the position of ## the start of the matched string. ## ## - FileRegexSubst(file, pattern, replace, flags) ## ## Apply a replace inplace in the given file. Your regex pattern must ## take care of everything and might be more complex. Check the README ## for a complete copy-pastable example. ## # publish = FileInsertIntoFirstRegexMatch( # "CHANGELOG.rst", # r'/(?P[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/', # idx=lambda m: m.start(1) # ) #publish = stdout ## ``revs`` is a list of callable or a list of string ## ## callable will be called to resolve as strings and allow dynamical ## computation of these. The result will be used as revisions for ## gitchangelog (as if directly stated on the command line). This allows ## to filter exaclty which commits will be read by gitchangelog. ## ## To get a full documentation on the format of these strings, please ## refer to the ``git rev-list`` arguments. There are many examples. ## ## Using callables is especially useful, for instance, if you ## are using gitchangelog to generate incrementally your changelog. ## ## Some helpers are provided, you can use them:: ## ## - FileFirstRegexMatch(file, pattern): will return a callable that will ## return the first string match for the given pattern in the given file. ## If you use named sub-patterns in your regex pattern, it'll output only ## the string matching the regex pattern named "rev". ## ## - Caret(rev): will return the rev prefixed by a "^", which is a ## way to remove the given revision and all its ancestor. ## ## Please note that if you provide a rev-list on the command line, it'll ## replace this value (which will then be ignored). ## ## If empty, then ``gitchangelog`` will act as it had to generate a full ## changelog. ## ## The default is to use all commits to make the changelog. #revs = ["^1.0.3", ] #revs = [ # Caret( # FileFirstRegexMatch( # "CHANGELOG.rst", # r"(?P[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")), # "HEAD" #] #revs = [] milc-1.9.1/.github/000077500000000000000000000000001474512023100140055ustar00rootroot00000000000000milc-1.9.1/.github/workflows/000077500000000000000000000000001474512023100160425ustar00rootroot00000000000000milc-1.9.1/.github/workflows/ci.yml000066400000000000000000000022621474512023100171620ustar00rootroot00000000000000name: MILC CI on: push: branches: - master paths: - '**.py' - ci_tests - example - hello - milc-color - passwd_complexity - passwd_confirm - questions - setup.cfg - sparkline - spinner - spinner_qmk pull_request: branches: - master paths: - '**.py' - ci_tests - example - hello - milc-color - passwd_complexity - passwd_confirm - questions - setup.cfg - sparkline - spinner - spinner_qmk jobs: ci_tests: runs-on: ubuntu-22.04 strategy: matrix: os: [ubuntu-22.04, windows-latest] python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install -r requirements-dev.txt - name: Run CI tests run: ./ci_tests milc-1.9.1/.github/workflows/codeql-analysis.yml000066400000000000000000000054721474512023100216650ustar00rootroot00000000000000# For most projects, this workflow file will not need changing; you simply need # to commit it to your repository. # # You may wish to alter this file to override the set of languages analyzed, # or to provide custom queries or build logic. # # ******** NOTE ******** # We have attempted to detect the languages in your repository. Please check # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # name: "CodeQL" on: push: branches: [ master ] paths: - '**.py' - ci_tests - example - hello - milc-color - passwd_complexity - passwd_confirm - questions - setup.cfg - sparkline - spinner - spinner_qmk pull_request: # The branches below must be a subset of the branches above branches: [ master ] paths: - '**.py' - ci_tests - example - hello - milc-color - passwd_complexity - passwd_confirm - questions - setup.cfg - sparkline - spinner - spinner_qmk jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: [ 'python' ] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] # Learn more: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - name: Checkout repository uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild uses: github/codeql-action/autobuild@v3 # ℹ️ Command-line programs to run using the OS shell. # πŸ“š https://git.io/JvXDl # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines # and modify them (or add more) to build your code if your project # uses a compiled language #- run: | # make bootstrap # make release - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 milc-1.9.1/.github/workflows/devel_docs.yml000066400000000000000000000020021474512023100206660ustar00rootroot00000000000000# This workflow will upload a Python Package using Twine when a release is created # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries name: Update Develop Docs on: push: branches: [ master ] paths: - 'docs/**' - 'mkdocs.yml' workflow_dispatch: jobs: devel_docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configure git run: | git config --local user.email "skullydazed@gmail.com" git config --local user.name "Zach White" - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.7' cache: 'pip' - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel pip install -r requirements-release.txt - name: Update docs run: | ./release_docs devel milc-1.9.1/.github/workflows/python-publish.yml000066400000000000000000000034361474512023100215600ustar00rootroot00000000000000# This workflow will upload a Python Package using Twine when a release is created # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries name: Upload Python Package on: workflow_dispatch: inputs: version_part: description: 'Which part of the version to increment (patch, minor, major)' required: true default: 'patch' jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.10' cache: 'pip' - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel pip install -r requirements-release.txt - name: Configure git run: | git config --local user.email "skullydazed@gmail.com" git config --local user.name "Zach White" - name: Generate documentation run: | ./generate_docs --commit - name: Bump version run: | bumpversion ${{ github.event.inputs.version_part }} - name: Generate changelog run: | gitchangelog > CHANGELOG.rst git add CHANGELOG.rst git commit -m'minor: changelog update' - name: Push changes uses: ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: master tags: true - name: Update docs run: | ./release_docs latest - name: Build and publish env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | python setup.py sdist bdist_wheel twine upload dist/* milc-1.9.1/.github/workflows/stale.yml000066400000000000000000000010471474512023100176770ustar00rootroot00000000000000name: Mark stale issues and pull requests on: schedule: - cron: "0 0 * * *" jobs: stale: runs-on: ubuntu-latest steps: - uses: actions/stale@v8 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 180 days-before-close: 60 stale-issue-message: 'This issue has been idle for 6 months and will be closed in 2 months if the stale lable is not removed.' stale-pr-message: 'This PR has been idle for 6 months and will be closed in 2 months if the stale lable is not removed.' milc-1.9.1/.gitignore000066400000000000000000000001311474512023100144300ustar00rootroot00000000000000.DS_Store __pycache__ *.swp *.pyc build dist milc.egg-info .idea venv site .venv .vscode milc-1.9.1/.yapfignore000066400000000000000000000000121474512023100146020ustar00rootroot00000000000000.git docs milc-1.9.1/CHANGELOG.rst000066400000000000000000000412631474512023100144740ustar00rootroot00000000000000Changelog ========= 1.9.0 (2024-09-24) ------------------ - New release: 1.8.0 β†’ 1.9.0. [Zach White] - [ci] Updated API documentation. [Zach White] - Document change to platformdirs. [Zach White] - Replace deprecated appdirs with platformdirs fork (#72) [Alexandre Detiste] - Add some properties clients are using to MILCInterface. [Zach White] - Fix typing. [Zach White] - Preserve name, author, version, and logger in case cli.milc_options() is called multiple times. [Zach White] - Use an interface so we don't have to replace the milc.cli object. [Zach White] - Minor: changelog update. [Zach White] 1.8.0 (2024-02-04) ------------------ - New release: 1.7.0 β†’ 1.8.0. [Zach White] - [ci] Updated API documentation. [Zach White] - Update the breaking changes log. [Zach White] - Improve how custom loggers work. [Zach White] - Minor updates for setup.py and setup.cfg. [Zach White] - Bump codeql to v3. [Zach White] - Minor: changelog update. [Zach White] 1.7.0 (2024-01-29) ------------------ - New release: 1.6.10 β†’ 1.7.0. [Zach White] - [ci] Updated API documentation. [Zach White] - Remove unneeded type ignore. [Zach White] - Fix typing for 3.7. [Zach White] - Fixup requirements. [Zach White] - Turn max_complexity down to 12. [Zach White] - Small doc updates. [Zach White] - Fix python version. [Zach White] - Update ci and expand the python versions. [Zach White] - Increase ci coverage. [Zach White] - Add type hints to milc (now we'll never have a bug again!) [Zach White] - Make it possible to instantiate MILC directly. [Zach White] - Minor: changelog update. [Zach White] 1.6.10 (2024-01-27) ------------------- - New release: 1.6.9 β†’ 1.6.10. [Zach White] - Switch to api token auth. [Zach White] - Minor: changelog update. [Zach White] 1.6.9 (2024-01-27) ------------------ - New release: 1.6.8 β†’ 1.6.9. [Zach White] - [ci] Updated API documentation. [Zach White] - Document custom loggers. [Zach White] - Add the ability to pass custom loggers. [Zach White] - Publish docs before the python package. [Zach White] - Minor: changelog update. [Zach White] 1.6.8 (2023-06-13) ------------------ - New release: 1.6.7 β†’ 1.6.8. [Zach White] - Minor: changelog update. [Zach White] 1.6.7 (2023-06-13) ------------------ - New release: 1.6.6 β†’ 1.6.7. [Zach White] - [ci] Updated API documentation. [Zach White] - Upgrade all workflow versions. [Zach White] - Upgrade workflows. [Zach White] - Remove the trivial change. [Zach White] - Fix the python version specification. [Zach White] - Trivial change to kick off ci. [Zach White] - Update to codeql 2. [Zach White] - Remove python 3.6, add 3.10. [Zach White] - Fix test. [Zach White] - Fix during-initialization logging. [Zach White] - Fix whitespace. [Zach White] - Handle '--config-file=CONFIG_FILE' syntax (#66) [Ken Bingham, Zach White] * handle --config-file=CONFIG_FILE syntax * Update milc/milc.py - Minor: changelog update. [Zach White] 1.6.6 (2022-03-27) ------------------ - New release: 1.6.5 β†’ 1.6.6. [Zach White] - [ci] Updated API documentation. [Zach White] - Support --foo=bar options. Fixes #65. [Zach White] - Fix the metadata documentation. [Zach White] - Minor: changelog update. [Zach White] 1.6.5 (2021-09-19) ------------------ - New release: 1.6.4 β†’ 1.6.5. [Zach White] - Fix a bug in cli.config_source. [Zach White] Before this change arguments that weren't passed were incorrectly marked as `argument` instead of None. - Minor: changelog update. [Zach White] 1.6.4 (2021-09-19) ------------------ - New release: 1.6.3 β†’ 1.6.4. [Zach White] - Change cli.echo to display ansi in passed vars too. [Zach White] - Minor: changelog update. [Zach White] 1.6.3 (2021-09-04) ------------------ - New release: 1.6.2 β†’ 1.6.3. [Zach White] - [ci] Updated API documentation. [Zach White] - More robust detection for passed arguments (#44) [Zach White] - Minor: changelog update. [Zach White] 1.6.2 (2021-08-23) ------------------ - New release: 1.6.1 β†’ 1.6.2. [Zach White] - Add the ability to highlight values below a threshold (#43) [Zach White] * add support for high and low thresholds * update sparklines documentation * update the sparkline api docs - Minor: changelog update. [Zach White] 1.6.1 (2021-08-23) ------------------ - New release: 1.6.0 β†’ 1.6.1. [Zach White] - [ci] Updated API documentation. [Zach White] - Change highlight_color to threshold_color before anyone starts using it. [Zach White] - Fix test. [Zach White] - Change highlight_color to threshold_color before anyone starts using it. [Zach White] - Fix the fetch depth for python-publish. [Zach White] - Minor: changelog update. [Zach White] 1.6.0 (2021-08-23) ------------------ - New release: 1.5.0 β†’ 1.6.0. [Zach White] - [ci] Updated API documentation. [Zach White] - Fix indent. [Zach White] - Remove vestiges of docsify. [Zach White] - Update old link. [Zach White] - Add breaking changes for 1.6.0. [Zach White] - Go back to working fetch-depth. [Zach White] - Fix the name for ref and fetch-depth. [Zach White] - Change the git strategy. [Zach White] - Put fetch_depth under width. [Zach White] - Fetch_depth: 0 so that we have gh-pages. [Zach White] - Adjust paths for triggering workflows. [Zach White] - Configure git. [Zach White] - Switch our documentation to mkdocs material (#42) [Zach White] * initial version of docs using mkdocs material * tweak the visual look * CSS tweaks * remove _summar * font tweak * update README to reflect mkdocs * workflows to update documentation * add site to .gitignore - Support for displaying sparklines (#41) [Zach White] * Add support for displaying sparklines * regenerate api docs * tweak the script docstring * improve corner case handling * improve and document whitespace * Add the ability to color sparklines to indicate positive and negative numbers * add the ability to highlight values over a particular threshold * add unit tests for sparkline * fix a bug found by the unit tests * generate docs * clarify int vs number * add sparklines to the TOC - Regenerate changelog. [Zach White] - Minor: changelog update. [Zach White] 1.5.0 (2021-08-10) ------------------ New ~~~ - Add release changelog. [Zach White] - Add a cli.config_dir. [Zach White] - Add deprecation to arguments and commands (#39) [Fyrebright] - Perform CodeQL analysis on all PRs. [Zach White] Fix ~~~ - Fix `choice()` default handling (#40) [Ryan] Other ~~~~~ - New release: 1.4.2 β†’ 1.5.0. [Zach White] - [ci] Updated API documentation. [Zach White] - Add 1.5.0 to breaking changes. [Zach White] - Minor: update docs. [Zach White] 1.4.2 (2021-05-27) ------------------ - New release: 1.4.1 β†’ 1.4.2. [Zach White] - [ci] Updated API documentation. [Zach White] - Make the config subcommand more resiliant. [Zach White] - Make questions more robust. [Zach White] - Fix how we use stdin on python 3.6. [Zach White] - Remove the milc.questions unit tests. [Zach White] It would be better if these were in place, but they don't work in github actions (reproducable locally with `ci-tests | cat`) and we have coverage of the same code in the test_script_question.py integration test. - Fix one last test for windows. [Zach White] - Improve our log_file check. [Zach White] - Use a tempfile for testing --log-file. [Zach White] Turns out that /dev/stdout doesn't work on windows. Use a tempfile instead so that our CI tests work on all platforms. - Improve ci tests for windows. [Zach White] - Ci: show result.stdout/stderr when an assertion fails. [Zach White] - Move the comparisons to its own file. [Zach White] 1.4.1 (2021-05-24) ------------------ - New release: 1.4.0 β†’ 1.4.1. [Zach White] - Setup: add missing dependencies (#36) [francisco souza, francisco souza] * setup: add missing dependencies Alternatively, we could make setup.py read from requirements.txt for dependencies. IMO, a better option is to always keep setup.py up-to-date with library dependencies and add `-e .` to requirements-dev.txt. * Add -e . to requirements.txt - Fix the author logic to match 1.3.0 (#37) [Zach White] - Ensure ci_tests actually fail. [Zach White] 1.4.0 (2021-05-23) ------------------ - New release: 1.3.0 β†’ 1.4.0. [Zach White] - Improve the docs in preparation for 1.4.0. [Zach White] - Update docs. [Zach White] - Work around a bug with input on windows (#34) [Zach White] - Add support for securely collecting passwords. (#32) [Zach White] * Only ask questions if we are an interactive process * add tests for the question script * add a breaking changes entry * typo * first pass at implementing #1 * Second pass * make flake8 happy * get the tests working correctly - Basic spinner support (#33) [Erovia Co-authored-by: Erovia , Zach White] * basic spinner support * update readme * add a spinner for QMK * Apply suggestions from code review - Only ask questions if we are an interactive process (#30) [Zach White] * Only ask questions if we are an interactive process * add tests for the question script * tweak color * add a breaking changes entry * typo * make ci happy - Allow config values to be set by attribute (#31) [Zach White] - Eliminate the need to use environment variables for metadata (#29) [Zach White] * Eliminate the need to use environment variables for metadata * properly handle dashes in subcommands * correctly handle subcommands and arguments with dashes * fix automatic app name detection * add a warning about importing set_metadata and cli * update docs * yapf * fix the description for config --all - Improve the config command (#28) [Zach White] * The config command now filters out configuration that has not been set * tweak * remove print * typo * sort the config before printing it - Script to show the available ANSI colors. [Zach White] 1.3.0 (2021-03-28) ------------------ - New release: 1.2.1 β†’ 1.3.0. [Zach White] - [ci] Updated API documentation. [Zach White] - Add argcomplete to the summary. [Zach White] - Flesh out the argcomplete support. [Zach White] - Support for setting the version number. [Zach White] fixes #14 - Overhaul how ansi/unicode are supported. [Zach White] fixes #26 - Misc cleanups. [Zach White] 1.2.1 (2021-03-28) ------------------ - New release: 1.2.0 β†’ 1.2.1. [Zach White] - Update python-publish.yml. [Zach White] - Create python-publish.yml. [Zach White] - Improve generate_docs. [Zach White] We now automatically update the _summary.md and commit changes if requested. 1.2.0 (2021-03-24) ------------------ - New release: 1.1.0 β†’ 1.2.0. [Zach White] - Document the new version 1.2.0. [Zach White] - Adjust ci_tests. [Zach White] - Bump supported python versions. [Zach White] - Change the order of tests. [Zach White] - Resolve config file paths. [Zach White] - Add more integration tests. [Zach White] - Fix handling of store_boolean (#25) [Joel Challis] 1.1.0 (2021-01-23) ------------------ - New release: 1.0.13 β†’ 1.1.0. [Zach White] 1.0.13 (2021-01-23) ------------------- - New release: 1.0.12 β†’ 1.0.13. [Zach White] - Add breaking changes. [Zach White] - Add the ability to bump major and minor versions too. [Zach White] - Improve default value handling (#24) [Zach White] * improve default value handling * small optimization 1.0.12 (2021-01-02) ------------------- - New release: 1.0.11 β†’ 1.0.12. [Zach White] - Generated API documentation. [Zach White] - Add version parameter to constructor. [Zed Chance] 1.0.11 (2021-01-02) ------------------- - New release: 1.0.10 β†’ 1.0.11. [Zach White] - Don't pass both universal_newlines and text. [Zach White] 1.0.10 (2020-10-25) ------------------- - New release: 1.0.9 β†’ 1.0.10. [skullY] - Generated API documentation. [skullY] - Fix cli.print_help() and cli.print_usage() [skullY] 1.0.9 (2020-10-22) ------------------ - New release: 1.0.8 β†’ 1.0.9. [skullY] - Generated API documentation. [skullY] - Don't install tests together with package. [s-ol] - Questions.yesno: always add a y/n prompt (#19) [Zach White] - Typo fix. [skullY] - Improve cli.run docs. [skullY] - Document and improve cli.run. [skullY] 1.0.8 (2020-10-07) ------------------ - New release: 1.0.7 β†’ 1.0.8. [skullY] - Update API docs. [skullY] - Add pydoc-markdown to requirements-release.txt. [skullY] - Make yapf happy. [skullY] - Temporarily import format_ansi for qmk. [skullY] - Improve log file handling. Add tests. (#17) [Zach White] - Generated API documentation. [skullY] - Improve ANSI support and --no-color (#16) [Zach White] * support --no-color for cli.echo and support emojis when --no-color is used * tweak when levelname gets stripped of ansi - Add --log-file-level option to set file loggging level from CLI. [CΓ©dric TissiΓ¨res] - Set logging level for file accordingly to console level. [CΓ©dric TissiΓ¨res] 1.0.7 (2020-04-29) ------------------ - New release: 1.0.6 β†’ 1.0.7. [skullY] - Enable space in config values. fixes #10. [skullY] 1.0.6 (2020-04-29) ------------------ - New release: 1.0.5 β†’ 1.0.6. [skullY] - Generated API documentation. [skullY] - Add the ability to selectively save config options. [skullY] 1.0.5 (2020-04-29) ------------------ - New release: 1.0.4 β†’ 1.0.5. [skullY] - Fix the get_argument_name call. fixes #7. [skullY] 1.0.4 (2020-04-15) ------------------ - New release: 1.0.3 β†’ 1.0.4. [skullY] - Make arg_only subcommand specific. [skullY] - Fix setting config values for store_true and store_false. [skullY] 1.0.3 (2020-03-30) ------------------ - New release: 1.0.2 β†’ 1.0.3. [skullY] - Generated API documentation. [skullY] - Fix configuration handling. [Erovia] - Cleanup a couple QMK references. [skullY] - Add tests for milc.questions. [skullY] - Add tests for milc.configuration. [skullY] - Add a test for milc.ansi. [skullY] - Add tests for milc/__init__.py. [skullY] - Install dev requirements from requirements-dev.txt. [skullY] - Write some tests for attrdict. [skullY] 1.0.2 (2020-03-24) ------------------ - New release: 1.0.1 β†’ 1.0.2. [skullY] - Fix typos and selling mistakes. [skullY] - Add EMOJI_LOGLEVELS to the main milc module. [skullY] 1.0.1 (2020-03-24) ------------------ - New release: 1.0.0 β†’ 1.0.1. [skullY] - Do not check docs if no changes. [skullY] - More release fixing. [skullY] - Fix doc generation. [skullY] - Fixup the release script. [skullY] - Enhance the ci test. [skullY] - Add missing quotes. [skullY] - Fix the release script. [skullY] - Temporarily put requirements.txt back. [skullY] 1.0.0 (2020-03-24) ------------------ - Release infrastructure. [skullY] - Add some documentation to the scripts. [skullY] - Add a contributing section. [skullY] - Enhance the workflows. [skullY] - Add windows and caching to CI. [skullY] - Add missing addirs. [skullY] - Setup CI. [skullydazed] - Add a script to run ci tests. [skullY] - Yapf. [skullY] - Add generated api docs. [skullY] - Clean up the sidebar. [skullY] - Yapfify. [skullY] - Add flake8 and yapf configs. [skullY] - Remove the link. [skullY] - Make the question.md formatting nicer. [skullY] - Remove qmk references. [skullY] - Fix the chart. [skullY] - Add some missing docs. [skullY] - Polish some rough edges. [skullY] - Print->cli.echo. [skullY] - Remove unused getting_started.md. [skullY] - Fix up the examples in the tutorial. [skullY] - Update the example in the tutorial. [skullY] - Add note about cli.config.general. [skullY] - Add backtics around None. [skullY] - Add configuration to the sidebar. [skullY] - Document configuration, make cli.args an attrdict. [skullY] - Create CNAME. [skullydazed] - Delete CNAME. [skullydazed] - Create CNAME. [skullydazed] - Disable jekyll. [skullY] - Flesh out the MILC documentation. [skullY] - Allow programs to override app_name and app_author. [skullY] - Rearrange the docs and add docsify. [skullY] - Break milc up into pieces. [skullY] - Sync with qmk_firmware and fix a couple bugs. [skullY] - Cleanup. [skullY] - Update screenshots. [skullY] - Refactor the API to require descriptions. [skullY] - Cleanup a bit and add some documentation. [skullY] - Add cli.print() [skullY] - Cleanup for first github push. [skullY] - Add a flake8 config and fixup flake8 errors. [skullY] - Add a .gitignore. [skullY] - Add support for store_boolean arguments. [skullY] - Add support for reading and writing config files. [skullY] - Add spinner support. [skullY] - Fix a typo. [skullY] - Make the printed log level output colored icons instead of text. [skullY] - Add ANSI support to CLIM. [skullY] - Minor tweak. [skullY] - Add an RLock for thread safety. [skullY] - Add support for both printed and file logs. [skullY] - Flesh out the module's docstring. [skullY] - Strip whitespace. [skullY] - Add a documentation stub. [skullY] - Add argument decorator, flesh out docs. [skullY] - Small cleanup. [skullY] - Barebones skeleton for the qmk cli. [skullY] milc-1.9.1/COMPARISONS.md000066400000000000000000000132661474512023100145740ustar00rootroot00000000000000# Comparison with other solutions Below is a list of the existing tools I have looked at and why I feel they don't fill the same need as MILC. Note: This list was compiled in 2018. In 2020 I edited the list to remove dead projects but I not go searching for new projects. The time for justifying MILC's existence has passed. | Name | Argument Parsing | Config File | Logging | Subcommands | Subcommand Config | |------|------------------|-------------|---------|-------------|-------------------| | MILC | βœ” | βœ” | βœ” | βœ” | βœ” | | [Argparse](#Argparse) | βœ” | βœ– | βœ– | βœ” | βœ– | | ConfigParser | βœ– | βœ” | βœ– | βœ” | βœ– | | logging | βœ– | βœ– | βœ” | βœ– | βœ– | | [Cement](#Cement) | βœ” | βœ” | βœ” | βœ” | βœ” | | [Cliar](#Cliar) | βœ” | βœ– | βœ– | βœ” | βœ– | | [Click](#Click) | βœ” | βœ– | βœ– | βœ” | βœ– | | [Clize](#Clize) | βœ” | βœ– | βœ– | βœ” | βœ– | | [Cogs](#Cogs) | βœ” | βœ– | βœ– | βœ” | βœ– | | [Defopt](#Defopt) | βœ” | βœ– | βœ– | βœ” | βœ– | | [Docopt](#Docopt) | βœ” | βœ– | βœ– | βœ” | βœ– | | [Fire](#Fire) | βœ” | βœ– | βœ– | βœ” | βœ– | | [Plac](#Plac) | βœ” | βœ– | βœ– | βœ” | βœ– | ### Argparse The built-in argparse module is amazing- MILC uses it under the hood. Using it directly as an end-user is complicated and error-prone however. The common patterns mean you end up putting the definition of CLI arguments in a different place from the code that uses those arguments. ### Cement Cement is a very heavy MVC framework for building CLI tools. It includes all the functionality MILC provides and then some. If you're looking for an MVC framework for your tool this is the one to pick. If you are looking for an MVC framework MILC probably isn't what you want. Use Cement instead. ### Cliar This is an interesting library. The author makes some good points about magic and DSL's. But it requires you to write a class for your CLI. Classes are good, but not every tool should be a class. Cliar does not support a configuration file or logging. ### Click You'd have to be a fool or incredibly sure of yourself to compete against one of Armin Ronacher's projects. :) Click is great, and I borrowed the decorator concept from Flask before I saw Click had done the same thing. It terms of how you use it there are a lot of similarities between Click and MILC. Where Click and MILC part ways is in the underlying implementation. MILC uses the recommended and built-in Python modules whenever possible. Under the hood MILC is just argparse, logging, ConfigParser, and other standard modules abstracted just enough to make the right thing easy. Click on the other hand uses optparser, which has been deprecated in favor of argparser, and handles a lot of functionality itself rather than dispatching to included Python modules. MILC does not insist upon a UTF-8 environment for Python 3 the way Click does. I understand Click's stance here but I'm hoping that the ecosystem has developed enough by now to make it no longer necessary. Time will tell if my opinion changes or not. Whether you should use Click or MILC depends on the tradeoff you want to make. Would you rather use the Python modules everyone's already familiar with or dive into a world of custom code that attempts to make everything cleaner overall? Do you want one cohesive system or do you want to pull together disparate plugins and modules to build the functionality you need? Click does not support a configuration file or logging out of the box, but there are [plugins](https://github.com/click-contrib) you can get to add this and other functionality to Click. ### Clize Clize has a nice approach with lots of mature and advanced functionality. Clize uses function annotation to work, which may or may not fit with how you work. It also has a lot of arbitrary restrictions due to annotations, for example alt functions don't work with argument aliases. Clize does not support a configuration file or logging. ### Cogs Cogs seems interesting, but has its own dedicated CLI tool named `cogs`. You don't create scripts directly but instead create Python functions that `cogs` will call. This is not a paradigm that I want to use. Cogs does not include config file support. ### defopt Defopt is a great tool for turning functions into CLIs. Had I found this earlier I may not have written MILC at all. But I have written MILC, and there's some things I'm still not sure about. For example, I don't see a way to have script handle both subcommand and non-subcommand operation. Defopt does not support a configuration file or logging. ### docopt Docopt has a large following, and some interesting ideas. But if you are someone who does not like the idea of using comments to define behavior you will not enjoy working with docopt. Docopt has poor error handling. You have to do your own argument validation, and even when Docopt knows the passed arguments are invalid it does not return a useful error message to the user. Docopt does not support config files. ### Fire Fire is an interesting idea- turn any class into a CLI. Unfortunately this is useful more as a tool for introspection than building a good CLI. Fire does not support a configuration file or logging. ### Plac I like his idea about scaling down, and it's part of what drove me. But I don't want to go without functionality to scale down. MILC's idea of scaling down is working well for small programs. Plac does not support a configuration file or logging. milc-1.9.1/LICENSE000066400000000000000000000023431474512023100134540ustar00rootroot00000000000000Copyright (C) 2018 Clueboard 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 X CONSORTIUM 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. Except as contained in this notice, the name Clueboard shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Clueboard. milc-1.9.1/README.md000066400000000000000000000155371474512023100137370ustar00rootroot00000000000000# MILC - An Opinionated Batteries-Included Python 3 CLI Framework MILC is a framework for writing CLI applications in Python 3.7+. It gives you all the features users expect from a modern CLI tool out of the box: * CLI Argument Parsing, with or without subcommands * Automatic tab-completion support through [argcomplete](https://github.com/kislyuk/argcomplete) * Configuration file which can be overridden by CLI options * ANSI color support- even on Windows- with [colorama](https://github.com/tartley/colorama) * Logging to stderr and/or a file, with ANSI colors * Easy method for printing to stdout with ANSI colors * Labeling log output with colored emoji to easily distinguish message types * Thread safety * More than 60 built-in [spinners](https://github.com/manrajgrover/py-spinners) with the ability to add your own # Installation MILC is available on pypi, you can use pip to install it: python3 -m pip install milc # ChangeLog and Breaking Changes MILC follows [Semantic Versioning](https://semver.org/). You can view the [full changelog](https://github.com/clueboard/milc/blob/master/CHANGELOG.rst), or you can see a list of why we made major or minor releases on the [Breaking Changes](https://milc.clueboard.co/#/breaking_changes) page. # Documentation Full documentation is on the web: ## Reporting Bugs and Requesting Features Please let us know about any bugs and/or feature requests you have: ## Short Example ```python from milc import cli @cli.argument('-c', '--comma', arg_only=True, action='store_boolean', default=True, help='comma in output') @cli.argument('-n', '--name', default='World', help='Name to greet') @cli.entrypoint('My useful CLI tool.') def main(cli): comma = ',' if cli.args.comma else '' cli.log.info('Hello%s %s!', comma, cli.config.general.name) if __name__ == '__main__': cli.run() ``` ### Output ``` $ ./hello β„Ή Hello, World! $ ./hello --no-unicode INFO Hello, World! $ ./hello --no-comma β„Ή Hello World! $ ./hello -h usage: hello [-h] [-V] [-v] [--datetime-fmt GENERAL_DATETIME_FMT] [--log-fmt GENERAL_LOG_FMT] [--log-file-fmt GENERAL_LOG_FILE_FMT] [--log-file GENERAL_LOG_FILE] [--color] [--no-color] [--config-file GENERAL_CONFIG_FILE] [--save-config] [-n GENERAL_NAME] [-c] [--no-comma] Greet a user. optional arguments: -h, --help show this help message and exit -V, --version Display the version and exit -v, --verbose Make the logging more verbose --datetime-fmt GENERAL_DATETIME_FMT Format string for datetimes --log-fmt GENERAL_LOG_FMT Format string for printed log output --log-file-fmt GENERAL_LOG_FILE_FMT Format string for log file. --log-file GENERAL_LOG_FILE File to write log messages to --color Enable color in output --no-color Disable color in output --config-file GENERAL_CONFIG_FILE The config file to read and/or write --save-config Save the running configuration to the config file -n GENERAL_NAME, --name GENERAL_NAME Name to greet -c, --comma Enable comma in output --no-comma Disable comma in output ``` # Why MILC? Because life is too short to integrate this stuff yourself, and writing good CLIs with comprehensive functionality is harder than it needs to be. Most of the other CLI frameworks are missing a piece of the puzzle. Maybe they have argument parsing but no config file story. Maybe they have a good story around arguments and config but don't handle logging at all. You know that you're doing the same integration work that almost everyone else is doing in their own app. Why do we duplicate so much effort? MILC is my answer to that. It implements a common set of CLI tools that pretty much every project I have ever worked on either needed or would have benefited from. Included in MILC are answers to problems you didn't know you have: * Config file saving and parsing * Automatically overriding config options with CLI arguments * Automatic verbose (-v) support * Automatic log support * Built-in flags for formatting log messages and log date formats * Support for boolean arguments (define --foo and get --no-foo for free) * Battle tested and used by hundreds of users every single day You may not use all of these features yourself, but you will have users who are very glad these options are available when they need them. # Contributing Contributions are welcome! You don't need to open an issue first, if you've developed a new feature or fixed a bug in MILC simply open a PR and we'll review it. Please follow this checklist before submitting a PR: * [ ] Format your code: `yapf -i -r .` * [ ] Generate docs: `./generate_docs` * [ ] Add any new doc files to the `nav` section of `mkdocs.yml` * [ ] Run tests: `./ci_tests` # FAQ ## What does MILC stand for? MILC was originally the CLI Context Manager, or CLI Manager, but CLICM was too close to [click](https://click.palletsprojects.com/) and CLIM was already taken on PyPi. Reversing CLIM gave me a name I liked and had opportunities for puns, so I went with it. ## Why decorators instead of parsing function signatures? Because I believe in writing good CLI tools. Before writing MILC I saw variations of the same story over and over. "I started with {Click,Docopt,Whatever} but after a while I ended up just going back to argparse." In pretty much every case as the complexity of their program grew they needed to do things argparse made easy and their framework made hard. MILC attempts to solve this by embracing the complexity of argparse. It handles the drudgery of setting up argparse for you, but gives you an elegant means to control that complexity when you need to. When your CLI framework relies on parsing function signatures you are necessarily limited in what you can do. Function annotations make this a little better but they are not a full solution to the problem. If you care about writing good CLI tools (and I hope you do) you will want more control over the behavior of your program than Click or Docopt give you. ## Why Not Some Other CLI Framework Instead? Whenever you release a new framework the first question you'll be asked is why you didn't just use one of the existing options instead. As I surveyed the other tools I found that most of them only solve part of the problem, not the whole problem. Those that solve the whole problem are very hard to use or get started with, or are otherwise very heavyweight. I wanted a comprehensive framework that was easy to get started with. MILC starts simple, but as your program grows you'll find the functionality you need is already available in most cases. If you'd like to see how MILC compares to other tools see [COMPARISONS.md](COMPARISONS.md). milc-1.9.1/ci_tests000077500000000000000000000031261474512023100142120ustar00rootroot00000000000000#!/usr/bin/env python3 """Run everything that needs to pass for CI to be green. This is executed by GitHub actions against Python 3.7 - 3.12 on both Windows and Ubuntu. PYTHON_ARGCOMPLETE_OK """ import os from pathlib import Path from shutil import rmtree from subprocess import CalledProcessError, DEVNULL, run from milc import cli cli.milc_options(name='ci_tests', author='MILC', version='1.9.1') @cli.entrypoint('Run CI Tests...') def main(cli): build_ok = True if Path('build').exists(): rmtree('build') cli.log.info('Running nose2 tests...') cmd = ['nose2'] result = run(cmd, stdin=DEVNULL) if result.returncode != 0: build_ok = False cli.log.info('Running flake8...') cmd = ['flake8'] result = run(cmd, stdin=DEVNULL) if result.returncode != 0: build_ok = False cli.log.info('Running yapf...') cmd = ['yapf', '-q', '-r', '--exclude', 'venv/**', '--exclude', '.venv/**', '.'] result = run(cmd, stdin=DEVNULL) if result.returncode != 0: build_ok = False cli.log.error('Improperly formatted code. Please run this: yapf -i -r .') cli.log.info('Running mypy...') cmd = ['mypy', '--strict', '--disable-error-code', 'unused-ignore', 'milc'] result = run(cmd, stdin=DEVNULL) if result.returncode != 0: build_ok = False if build_ok: cli.log.info('{fg_green}All tests passed!') return True cli.log.error('Tests are not passing! Please fix them before opening a PR.') return False if __name__ == '__main__': if cli(): exit(0) else: exit(1) milc-1.9.1/config_source000077500000000000000000000005571474512023100152270ustar00rootroot00000000000000#!/usr/bin/env python3 """Make sure we get the right config source. PYTHON_ARGCOMPLETE_OK """ from milc import cli @cli.argument('-n', '--name', help='Name to greet', default='World') @cli.entrypoint('Greet a user.') def main(cli): cli.echo('Hello, %s, from %s!', cli.config.general.name, cli.config_source.general.name) if __name__ == '__main__': cli() milc-1.9.1/custom_logger000077500000000000000000000010011474512023100152340ustar00rootroot00000000000000#!/usr/bin/env python3 """Hello World implementation using MILC. PYTHON_ARGCOMPLETE_OK """ import logging from milc import cli # Setup external logger logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger('custom_logger') cli.milc_options(logger=logging.getLogger('custom_logger')) # Import milc from milc import cli @cli.entrypoint('Test a non-MILC logger.') def main(cli): cli.log.info('Hello Info World!') cli.log.debug('Hello Debug World!') if __name__ == '__main__': cli() milc-1.9.1/docs/000077500000000000000000000000001474512023100133755ustar00rootroot00000000000000milc-1.9.1/docs/.nojekyll000066400000000000000000000000001474512023100152130ustar00rootroot00000000000000milc-1.9.1/docs/ANSI.md000066400000000000000000000040641474512023100144550ustar00rootroot00000000000000# Working With ANSI In Your Script MILC supports colorizing your output with ANSI colors. You can colorize the text both for log output and when `cli.echo()`ing directly. ## Colorizing Log Output If you are using the built-in log facility it couldn't be easier- just add curly-braced delimited color names to your log strings. They will automatically output color or not as appropriate. ### Colored Log Example ```python cli.log.error('{bg_red}{fg_white}Could not open file %s!', filename) ``` ## Colorizing Printed Output You can use `cli.echo()` to print strings to stdout in the same way as `cli.log`. Just add the ANSI token below to your string to colorize your output. ### Colored Print Example ```python text = '{bg_blue}{fg_white}|___|\\___|{style_reset_all} ' \ '{bg_red}{fg_white}SHARK ATTACK!' cli.echo(text) ``` ## Available Colors Colors prefixed with 'fg' will affect the foreground (text) color. Colors prefixed with 'bg' will affect the background color. The included `milc-color` command will show you what the colors look like in your terminal. | Color | Background | Extended Background | Foreground | Extended Foreground| |-------|------------|---------------------|------------|--------------------| | Black | {bg_black} | {bg_lightblack_ex} | {fg_black} | {fg_lightblack_ex} | | Blue | {bg_blue} | {bg_lightblue_ex} | {fg_blue} | {fg_lightblue_ex} | | Cyan | {bg_cyan} | {bg_lightcyan_ex} | {fg_cyan} | {fg_lightcyan_ex} | | Green | {bg_green} | {bg_lightgreen_ex} | {fg_green} | {fg_lightgreen_ex} | | Magenta | {bg_magenta} | {bg_lightmagenta_ex} | {fg_magenta} | {fg_lightmagenta_ex} | | Red | {bg_red} | {bg_lightred_ex} | {fg_red} | {fg_lightred_ex} | | White | {bg_white} | {bg_lightwhite_ex} | {fg_white} | {fg_lightwhite_ex} | | Yellow | {bg_yellow} | {bg_lightyellow_ex} | {fg_yellow} | {fg_lightyellow_ex} | There are also control sequences that can be used to change the behavior of ANSI output: | Control Sequences | |-------------------| | {style_bright} | | {style_dim} | | {style_normal} | | {style_reset_all} | | {bg_reset} | | {fg_reset} | milc-1.9.1/docs/README.md000066400000000000000000000062571474512023100146660ustar00rootroot00000000000000# MILC - An Opinionated Batteries-Included Python 3 CLI Framework MILC is a framework for writing CLI applications in Python 3.6+. It gives you all the features users expect from a modern CLI tool out of the box: * CLI Argument Parsing, with or without subcommands * Automatic tab-completion support through [argcomplete](https://github.com/kislyuk/argcomplete) * Configuration file which can be overridden by CLI options * ANSI color support- even on Windows- with [colorama](https://github.com/tartley/colorama) * Logging to stderr and/or a file, with ANSI colors * Easy method for printing to stdout with ANSI colors * Labelling log output with colored emoji to easily distinguish message types * Thread safety * More than 60 built-in [spinners](https://github.com/manrajgrover/py-spinners) with the ability to add your own ## Getting Started Read [the tutorial](tutorial.md) to learn how to use MILC. ## Reporting Bugs and Requesting Features Please let us know about any bugs and/or feature requests you have: ## Short Example ```python from milc import cli @cli.argument('-c', '--comma', action='store_boolean', arg_only=True, default=True, help='comma in output') @cli.argument('-n', '--name', default='World', help='Name to greet') @cli.entrypoint('My useful CLI tool.') def main(cli): comma = ',' if cli.args.comma else '' cli.log.info('Hello%s %s!', comma, cli.config.general.name) if __name__ == '__main__': cli.run() ``` ### Output ``` $ ./hello β„Ή Hello, World! $ ./hello --no-unicode INFO Hello, World! $ ./hello --no-comma β„Ή Hello World! $ ./hello -h usage: hello [-h] [-V] [-v] [--datetime-fmt GENERAL_DATETIME_FMT] [--log-fmt GENERAL_LOG_FMT] [--log-file-fmt GENERAL_LOG_FILE_FMT] [--log-file GENERAL_LOG_FILE] [--color] [--no-color] [--config-file GENERAL_CONFIG_FILE] [--save-config] [-n GENERAL_NAME] [-c] [--no-comma] Greet a user. optional arguments: -h, --help show this help message and exit -V, --version Display the version and exit -v, --verbose Make the logging more verbose --datetime-fmt GENERAL_DATETIME_FMT Format string for datetimes --log-fmt GENERAL_LOG_FMT Format string for printed log output --log-file-fmt GENERAL_LOG_FILE_FMT Format string for log file. --log-file GENERAL_LOG_FILE File to write log messages to --color Enable color in output --no-color Disable color in output --unicode Enable unicode loglevels --no-unicode Disable unicode loglevels --interactive Force interactive mode even when stdout is not a tty. --config-file GENERAL_CONFIG_FILE The config file to read and/or write -n GENERAL_NAME, --name GENERAL_NAME Name to greet -c, --comma Enable comma in output --no-comma Disable comma in output ``` # Breaking Changes MILC follows [Semantic Versioning](https://semver.org/). You can see a list of why we made major or minor releases on the [Breaking Changes](breaking_changes.md) page. milc-1.9.1/docs/api__in_argv.md000066400000000000000000000000451474512023100163330ustar00rootroot00000000000000 # \_in\_argv milc-1.9.1/docs/api__sparkline.md000066400000000000000000000066011474512023100167020ustar00rootroot00000000000000 # \_sparkline Display sparklines from a sequence of numbers. #### is\_number ```python def is_number(i: Any) -> bool ``` Returns true if i is a number. Used to filter non-numbers from a list. #### sparkline ```python def sparkline(number_list: List[Optional[int]], *, min_value: Optional[int] = None, max_value: Optional[int] = None, highlight_low: float = -inf, highlight_high: float = inf, highlight_low_color: str = '', highlight_high_color: str = '', negative_color: str = '{fg_red}', positive_color: str = '', highlight_low_reset: str = '{fg_reset}', highlight_high_reset: str = '{fg_reset}', negative_reset: str = '{fg_reset}', positive_reset: str = '{fg_reset}') -> str ``` Display a sparkline from a sequence of numbers. If you wish to exclude extreme values, or you want to limit the set of characters used, you can adjust `min_value` and `max_value` to your own values. Values between your actual min/max will exclude datapoints, while values outside your actual min/max will compress your data into fewer sparks. If you want to highlight data that is too low or too high you can use 'highlight_low' and `highlight_high` to set this. You will also need to set your colors, see below for more details. By default this function will display negative numbers in red and positive numbers in the system default color. You can use `negative_color`, `negative_reset`, `positive_color`, and `positive_reset` to change this behavior. If you wish to color your sparkline according to other rules it is recommended to generate it without color and then add color yourself. ### Arguments min_value The lowest value in your sparkline. If not provided it will be determined automatically. max_value The highest value in your sparkline. If not provided it will be determined automatically. highlight_low When a number is less than this value it will be highlighted with `highlight_low_color`. highlight_high When a number is greater than this value it will be highlighted with `highlight_high_color`. highlight_low_color A MILC or ANSI color code to apply to integers greater than highlight_low. highlight_high_color A MILC or ANSI color code to apply to integers greater than highlight_high. negative_color A MILC or ANSI color code to apply to integers less than 0. positive_color A MILC or ANSI color code to apply to integers greater than 0. highlight_low_reset A MILC or ANSI color code to reset the color code applied in `highlight_low_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. highlight_high_reset A MILC or ANSI color code to reset the color code applied in `highlight_high_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. negative_reset A MILC or ANSI color code to reset the color code applied in `negative_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. positive_reset A MILC or ANSI color code to reset the color code applied in `positive_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. milc-1.9.1/docs/api_ansi.md000066400000000000000000000005761474512023100155120ustar00rootroot00000000000000 # ansi ANSI color support for MILC. #### format\_ansi ```python def format_ansi(text: str) -> str ``` Return a copy of text with certain strings replaced with ansi. ## MILCFormatter Objects ```python class MILCFormatter(logging.Formatter) ``` Formats log records per the MILC configuration. milc-1.9.1/docs/api_attrdict.md000066400000000000000000000013551474512023100163720ustar00rootroot00000000000000 # attrdict ## AttrDict Objects ```python class AttrDict(object) ``` A dictionary that can also be accessed by attribute. #### \_\_getitem\_\_ ```python def __getitem__(key: Any) -> Any ``` Returns an item. ## SparseAttrDict Objects ```python class SparseAttrDict(AttrDict) ``` A dictionary that can also be accessed by attribute. This class never raises IndexError, instead it will return None if a key does not yet exist. #### \_\_getitem\_\_ ```python def __getitem__(key: Any) -> Any ``` Returns an item, creating it if it doesn't already exist milc-1.9.1/docs/api_configuration.md000066400000000000000000000052521474512023100174230ustar00rootroot00000000000000 # configuration ## Configuration Objects ```python class Configuration(AttrDict) ``` Represents the running configuration. This class never raises IndexError, instead it will return None if a section or option does not yet exist. #### \_\_getitem\_\_ ```python def __getitem__(key: Hashable) -> Any ``` Returns a config section, creating it if it doesn't exist yet. ## ConfigurationSection Objects ```python class ConfigurationSection(Configuration) ``` #### \_\_getitem\_\_ ```python def __getitem__(key: Hashable) -> Any ``` Returns a config value, pulling from the `user` section as a fallback. This is called when the attribute is accessed either via the get method or through [ ] index. #### \_\_getattr\_\_ ```python def __getattr__(key: str) -> Any ``` Returns the config value from the `user` section. This is called when the attribute is accessed via dot notation but does not exist. #### \_\_setattr\_\_ ```python def __setattr__(key: str, value: Any) -> None ``` Sets dictionary value when an attribute is set. ## SubparserWrapper Objects ```python class SubparserWrapper(object) ``` Wrap subparsers so we can track what options the user passed. #### completer ```python def completer(completer: Any) -> None ``` Add an arpcomplete completer to this subcommand. #### add\_argument ```python def add_argument(*args: Any, **kwargs: Any) -> None ``` Add an argument for this subcommand. This also stores the default for the argument in `self.cli.default_arguments`. #### get\_argument\_strings ```python def get_argument_strings(arg_parser: Any, *args: Any, **kwargs: Any) -> List[str] ``` Takes argparse arguments and returns a list of argument strings or positional names. #### get\_argument\_name ```python def get_argument_name(arg_parser: Any, *args: Any, **kwargs: Any) -> Any ``` Takes argparse arguments and returns the dest name. #### handle\_store\_boolean ```python def handle_store_boolean(self: Any, *args: Any, **kwargs: Any) -> Any ``` Does the add_argument for action='store_boolean'. milc-1.9.1/docs/api_emoji.md000066400000000000000000000007701474512023100156570ustar00rootroot00000000000000 # emoji Emoji used by MILC when outputting logs | Log Level | Emoji | |-----------|-------| | `CRITICAL` | `{bg_red}{fg_white}Β¬_Β¬` | | `ERROR` | `{fg_red}β˜’` | | `WARNING` | `{fg_yellow}⚠` | | `INFO` | `{fg_blue}β„Ή` | | `DEBUG` | `{fg_cyan}☐` | | `NOTSET` | `{style_reset_all}Β―\_(o_o)_/Β―` | If you'd like to use your own icon for a level instead you can simply redefine it: ```python from milc.emoji import EMOJI_LOGLEVELS EMOJI_LOGLEVELS['INFO'] = {fg_green}β„Ή' ``` milc-1.9.1/docs/api_milc.md000066400000000000000000000230771474512023100155050ustar00rootroot00000000000000 # milc ## MILC Objects ```python class MILC(object) ``` MILC - An Opinionated Batteries Included Framework #### \_\_init\_\_ ```python def __init__(name: Optional[str] = None, author: Optional[str] = None, version: Optional[str] = None, logger: Optional[logging.Logger] = None) -> None ``` Initialize the MILC object. #### argv\_name ```python def argv_name() -> str ``` Returns the name of our program by examining argv. #### echo ```python def echo(text: str, *args: Any, **kwargs: Any) -> None ``` Print colorized text to stdout. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to all strings. If *args or **kwargs are passed they will be used to %-format the strings. #### run ```python def run(command: Sequence[str], capture_output: bool = True, combined_output: bool = False, text: bool = True, **kwargs: Any) -> Any ``` Run a command using `subprocess.run`, but using some different defaults. Unlike subprocess.run you must supply a sequence of arguments. You can use `shlex.split()` to build this from a string. The **kwargs arguments get passed directly to `subprocess.run`. **Arguments**: command A sequence where the first item is the command to run, and any remaining items are arguments to pass. capture_output Set to False to have output written to the terminal instead of being available in the returned `subprocess.CompletedProcess` instance. combined_output When true STDERR will be written to STDOUT. Equivalent to the shell construct `2>&1`. text Set to False to disable encoding and get `bytes()` from `.stdout` and `.stderr`. #### initialize\_argparse ```python def initialize_argparse() -> None ``` Prepare to process arguments from sys.argv. #### print\_help ```python def print_help(*args: Any, **kwargs: Any) -> None ``` Print a help message for the main program or subcommand, depending on context. #### print\_usage ```python def print_usage(*args: Any, **kwargs: Any) -> None ``` Print brief description of how the main program or subcommand is invoked, depending on context. #### log\_deprecated\_warning ```python def log_deprecated_warning(item_type: str, name: str, reason: str) -> None ``` Logs a warning with a custom message if a argument or command is deprecated. #### add\_argument ```python def add_argument(*args: Any, **kwargs: Any) -> None ``` Wrapper to add arguments and track whether they were passed on the command line. #### initialize\_logging ```python def initialize_logging(logger: Optional[logging.Logger]) -> None ``` Prepare the defaults for the logging infrastructure. #### initialize\_arguments ```python def initialize_arguments() -> None ``` Setup and add default arguments. #### acquire\_lock ```python def acquire_lock(blocking: bool = True) -> bool ``` Acquire the MILC lock for exclusive access to properties. #### release\_lock ```python def release_lock() -> None ``` Release the MILC lock. #### find\_config\_file ```python @lru_cache(maxsize=None) def find_config_file() -> Path ``` Locate the config file. #### argument ```python def argument(*args: Any, **kwargs: Any) -> Callable[..., Any] ``` Decorator to call self.add_argument or self..add_argument. #### parse\_args ```python def parse_args() -> None ``` Parse the CLI args. #### read\_config\_file ```python def read_config_file() -> Tuple[Configuration, Configuration] ``` Read in the configuration file and return Configuration objects for it and the config_source. #### initialize\_config ```python def initialize_config() -> None ``` Read in the configuration file and store it in self.config. #### merge\_args\_into\_config ```python def merge_args_into_config() -> None ``` Merge CLI arguments into self.config to create the runtime configuration. #### write\_config\_option ```python def write_config_option(section: str, option: Any) -> None ``` Save a single config option to the config file. #### save\_config ```python def save_config() -> None ``` Save the current configuration to the config file. #### \_\_call\_\_ ```python def __call__() -> Any ``` Execute the entrypoint function. #### entrypoint ```python def entrypoint(description: str, deprecated: Optional[str] = None) -> Callable[..., Any] ``` Decorator that marks the entrypoint used when a subcommand is not supplied. **Arguments**: description A one-line description to display in --help deprecated Deprecation message. When set the subcommand will marked as deprecated and this message will be displayed in the help output. #### add\_subcommand ```python def add_subcommand(handler: Callable[..., Any], description: str, hidden: bool = False, deprecated: Optional[str] = None, **kwargs: Any) -> Callable[..., Any] ``` Register a subcommand. **Arguments**: handler The function to exececute for this subcommand. description A one-line description to display in --help hidden When True don't display this command in --help deprecated Deprecation message. When set the subcommand will be marked as deprecated and this message will be displayed in help output. #### subcommand ```python def subcommand(description: str, hidden: bool = False, **kwargs: Any) -> Callable[..., Any] ``` Decorator to register a subcommand. **Arguments**: description A one-line description to display in --help hidden When True don't display this command in --help #### setup\_logging ```python def setup_logging() -> None ``` Called by __enter__() to setup the logging configuration. #### is\_spinner ```python def is_spinner(name: str) -> bool ``` Returns true if name is a valid spinner. #### add\_spinner ```python def add_spinner(name: str, spinner: Dict[str, Union[int, Sequence[str]]]) -> None ``` Adds a new spinner to the list of spinners. A spinner is a dictionary with two keys: interval An integer that sets how long (in ms) to wait between frames. frames A list of frames for this spinner #### spinner ```python def spinner(text: str, *args: Any, spinner: Optional[str] = None, animation: str = 'ellipsed', placement: str = 'left', color: str = 'blue', interval: int = -1, stream: Any = sys.stdout, enabled: bool = True, **kwargs: Any) -> Halo ``` Create a spinner object for showing activity to the user. This uses halo behind the scenes, most of the arguments map to Halo objects 1:1. There are 3 basic ways to use this: * Instantiating a spinner and then using `.start()` and `.stop()` on your object. * Using a context manager (`with cli.spinner(...):`) * Decorate a function (`@cli.spinner(...)`) #### Instantiating a spinner ```python spinner = cli.spinner(text='Loading', spinner='dots') spinner.start() # Do something here spinner.stop() ``` #### Using a context manager ```python with cli.spinner(text='Loading', spinner='dots'): # Do something here ``` #### Decorate a function ```python @cli.spinner(text='Loading', spinner='dots') def long_running_function(): # Do something here ``` ### Arguments text The text to display next to the spinner. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to the end of the string. If *args or **kwargs are passed they will be used to %-format the text. spinner The name of the spinner to use. Available names are here: animation The animation to apply to the text if it doesn't fit the terminal. One of `ellipsed`, `bounce`, `marquee`. placement Which side of the text to display the spinner on. One of `left`, `right`. color Color of the spinner. One of `blue`, `grey`, `red`, `green`, `yellow`, `magenta`, `cyan`, `white` interval How long in ms to wait between frames. Defaults to the spinner interval (recommended.) stream Stream to write the output. Defaults to sys.stdout. enabled Enable or disable the spinner. Defaults to `True`. milc-1.9.1/docs/api_milc_interface.md000066400000000000000000000155211474512023100175200ustar00rootroot00000000000000 # milc\_interface Public interface for MILC. This is where the public interface for `cli` is kept. This allows us to reinstantiate MILC without having to recreate the cli object, as well as allowing us to have a well defined public API. ## MILCInterface Objects ```python class MILCInterface() ``` #### echo ```python def echo(text: str, *args: Any, **kwargs: Any) -> None ``` Print colorized text to stdout. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to all strings. If *args or **kwargs are passed they will be used to %-format the strings. #### run ```python def run(command: Sequence[str], capture_output: bool = True, combined_output: bool = False, text: bool = True, **kwargs: Any) -> Any ``` Run a command using `subprocess.run`, but using some different defaults. Unlike subprocess.run you must supply a sequence of arguments. You can use `shlex.split()` to build this from a string. The **kwargs arguments get passed directly to `subprocess.run`. **Arguments**: command A sequence where the first item is the command to run, and any remaining items are arguments to pass. capture_output Set to False to have output written to the terminal instead of being available in the returned `subprocess.CompletedProcess` instance. combined_output When true STDERR will be written to STDOUT. Equivalent to the shell construct `2>&1`. text Set to False to disable encoding and get `bytes()` from `.stdout` and `.stderr`. #### print\_help ```python def print_help(*args: Any, **kwargs: Any) -> None ``` Print a help message for the main program or subcommand, depending on context. #### print\_usage ```python def print_usage(*args: Any, **kwargs: Any) -> None ``` Print brief description of how the main program or subcommand is invoked, depending on context. #### add\_argument ```python def add_argument(*args: Any, **kwargs: Any) -> None ``` Wrapper to add arguments and track whether they were passed on the command line. #### acquire\_lock ```python def acquire_lock(blocking: bool = True) -> bool ``` Acquire the MILC lock for exclusive access to properties. #### release\_lock ```python def release_lock() -> None ``` Release the MILC lock. #### argument ```python def argument(*args: Any, **kwargs: Any) -> Callable[..., Any] ``` Decorator to add an argument to a MILC command or subcommand. #### save\_config ```python def save_config() -> None ``` Save the current configuration to the config file. #### \_\_call\_\_ ```python def __call__() -> Any ``` Execute the entrypoint function. #### entrypoint ```python def entrypoint(description: str, deprecated: Optional[str] = None) -> Callable[..., Any] ``` Decorator that marks the entrypoint used when a subcommand is not supplied. **Arguments**: description A one-line description to display in --help deprecated Deprecation message. When set the subcommand will marked as deprecated and this message will be displayed in the help output. #### subcommand ```python def subcommand(description: str, hidden: bool = False, **kwargs: Any) -> Callable[..., Any] ``` Decorator to register a subcommand. **Arguments**: description A one-line description to display in --help hidden When True don't display this command in --help #### add\_spinner ```python def add_spinner(name: str, spinner: Dict[str, Union[int, Sequence[str]]]) -> None ``` Adds a new spinner to the list of spinners. A spinner is a dictionary with two keys: interval An integer that sets how long (in ms) to wait between frames. frames A list of frames for this spinner #### spinner ```python def spinner(text: str, *args: Any, spinner: Optional[str] = None, animation: str = 'ellipsed', placement: str = 'left', color: str = 'blue', interval: int = -1, stream: Any = sys.stdout, enabled: bool = True, **kwargs: Any) -> Halo ``` Create a spinner object for showing activity to the user. This uses halo behind the scenes, most of the arguments map to Halo objects 1:1. There are 3 basic ways to use this: * Instantiating a spinner and then using `.start()` and `.stop()` on your object. * Using a context manager (`with cli.spinner(...):`) * Decorate a function (`@cli.spinner(...)`) #### Instantiating a spinner ```python spinner = cli.spinner(text='Loading', spinner='dots') spinner.start() # Do something here spinner.stop() ``` #### Using a context manager ```python with cli.spinner(text='Loading', spinner='dots'): # Do something here ``` #### Decorate a function ```python @cli.spinner(text='Loading', spinner='dots') def long_running_function(): # Do something here ``` ### Arguments text The text to display next to the spinner. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to the end of the string. If *args or **kwargs are passed they will be used to %-format the text. spinner The name of the spinner to use. Available names are here: animation The animation to apply to the text if it doesn't fit the terminal. One of `ellipsed`, `bounce`, `marquee`. placement Which side of the text to display the spinner on. One of `left`, `right`. color Color of the spinner. One of `blue`, `grey`, `red`, `green`, `yellow`, `magenta`, `cyan`, `white` interval How long in ms to wait between frames. Defaults to the spinner interval (recommended.) stream Stream to write the output. Defaults to sys.stdout. enabled Enable or disable the spinner. Defaults to `True`. milc-1.9.1/docs/api_questions.md000066400000000000000000000112111474512023100165760ustar00rootroot00000000000000 # questions Sometimes you need to ask the user a question. MILC provides basic functions for collecting and validating user input. You can find these in the `milc.questions` module. #### yesno ```python def yesno(prompt: str, *args: Any, default: Optional[bool] = None, **kwargs: Any) -> bool ``` Displays `prompt` to the user and gets a yes or no response. Returns `True` for a yes and `False` for a no. | Argument | Description | |----------|-------------| | prompt | The prompt to present to the user. Can include ANSI and format strings like `cli.echo()`. | | default | Whether to default to a Yes or No when the user presses enter.

None- force the user to enter Y or N
True- Default to yes
False- Default to no | If you add `--yes` and `--no` arguments to your program the user can answer questions by passing command line flags. ```python @cli.argument('-y', '--yes', action='store_true', arg_only=True, help='Answer yes to all questions.') @cli.argument('-n', '--no', action='store_true', arg_only=True, help='Answer no to all questions.') ``` #### password ```python def password(prompt: str = 'Enter password:', *args: Any, confirm: bool = False, confirm_prompt: str = 'Confirm password:', confirm_limit: int = 3, validate: Optional[Callable[[str], bool]] = None, **kwargs: Any) -> Optional[str] ``` Securely receive a password from the user. Returns the password or None. When running in non-interactive mode this will always return None. Otherwise it will return the confirmed password the user provides. | Argument | Description | |----------|-------------| | prompt | The prompt to present to the user. Can include ANSI and format strings like milc's `cli.echo()`. | | confirm | Prompt the user to type the password again and make sure they match. | | confirm_prompt | The prompt to present to the user. Can include ANSI and format strings like milc's `cli.echo()`. | | confirm_limit | Number of attempts to confirm before giving up. Default: 3 | | validate | This is an optional function that can be used to validate the password, EG to check complexity. It should return True or False and have the following signature:

`def function_name(answer):` | #### question ```python def question(prompt: str, *args: Any, default: Optional[str] = None, confirm: bool = False, answer_type: Callable[[str], str] = str, validate: Optional[Callable[..., bool]] = None, **kwargs: Any) -> Union[str, Any] ``` Allow the user to type in a free-form string to answer. | Argument | Description | |----------|-------------| | prompt | The prompt to present to the user. Can include ANSI and format strings like milc's `cli.echo()`. | | default | The value to return when the user doesn't enter any value. Use None to prompt until they enter a value. | | confirm | Present the user with a confirmation dialog before accepting their answer. | | answer_type | Specify a type function for the answer. Will re-prompt the user if the function raises any errors. Common choices here include int, float, and decimal.Decimal. | | validate | This is an optional function that can be used to validate the answer. It should return True or False and have the following signature:

`def function_name(answer, *args, **kwargs):` | #### choice ```python def choice(heading: str, options: Sequence[str], *args: Any, default: Optional[int] = None, confirm: bool = False, prompt: str = 'Please enter your choice: ', **kwargs: Any) -> Optional[str] ``` Present the user with a list of options and let them select one. Users can enter either the number or the text of their choice. This will return the value of the item they choose, not the numerical index. | Argument | Description | |----------|-------------| | heading | The text to place above the list of options. | | options | A sequence of items to choose from. | | default | The index of the item to return when the user doesn't enter any value. Use None to prompt until they enter a value. | | confirm | When True present the user with a confirmation dialog before accepting their answer. | | prompt | The prompt to present to the user. Can include color and format strings like milc's `cli.echo()`. | Users can enter either the number or the text of their choice. !!! warning This will return the value of the item they choose, not the numerical index. milc-1.9.1/docs/api_subcommand_config.md000066400000000000000000000037731474512023100202370ustar00rootroot00000000000000 # subcommand.config Read and write configuration settings #### print\_config ```python def print_config(section: str, key: str) -> None ``` Print a single config setting to stdout. #### show\_config ```python def show_config() -> None ``` Print the current configuration to stdout. #### parse\_config\_token ```python def parse_config_token(config_token: str) -> Tuple[str, str, Any] ``` Split a user-supplied configuration-token into its components. #### set\_config ```python def set_config(section: str, option: str, value: str) -> None ``` Set a config key in the running config. #### config ```python @milc.cli.argument('-a', '--all', action='store_true', help='Show all configuration options.') @milc.cli.argument('-ro', '--read-only', arg_only=True, action='store_true', help='Operate in read-only mode.') @milc.cli.argument('configs', nargs='*', arg_only=True, help='Configuration options to read or write.') @milc.cli.subcommand("Read and write configuration settings.") def config(cli: MILC) -> bool ``` Read and write config settings. This script iterates over the config_tokens supplied as argument. Each config_token has the following form: section[.key][=value] If only a section (EG 'compile') is supplied all keys for that section will be displayed. If section.key is supplied the value for that single key will be displayed. If section.key=value is supplied the value for that single key will be set. If section.key=None is supplied the key will be deleted. No validation is done to ensure that the supplied section.key is actually used by a subcommand. milc-1.9.1/docs/argcomplete.md000066400000000000000000000030601474512023100162200ustar00rootroot00000000000000# Argument (Tab) Completion Support MILC supports argument completion out of the box using [argcomplete](). Getting argument completion to actually work can be a little fiddly, this page attempts to help you with that. ## Prerequisites Before argument completion will work your program must be registered with your shell. The most compatible way to do so is this: eval "$(register-python-argcomplete my-program)" If you have a new enough shell (EG bash 4.2 or later, zsh, fish) you can instead rely on [`activate-global-python-argcomplete`](https://github.com/kislyuk/argcomplete#activating-global-completion), but in my experience that mechanism is fragile and easily broken. ## Using Tab Completion After running the command above you should be able to type the name of your program, type a partial flag name, and tab complete the rest. For many simple programs this is all you need. ## Adding Custom Completions In some cases you need to give argcomplete a custom list of completions. For example, if you want to complete hostnames out of a configuration file. You can specify this by setting `completer` in your argument decorator. You can use either [callable or readline-style completers](https://kislyuk.github.io/argcomplete/#specifying-completers) when you specify that. For example, to use an `EnvironCompleter` for an argument: def EnvironCompleter(**kwargs): return os.environ @cli.argument('-e', '--env', completer=EnvironCompleter, help='Environment Variable') @cli.entrypoint('My cool program') def my_program(cli): pass milc-1.9.1/docs/argument_parsing.md000066400000000000000000000043471474512023100172740ustar00rootroot00000000000000# Argument Parsing MILC exposes the full power of [argparse](https://docs.python.org/3/library/argparse.html) to you. It also extends argparse to make certain commonly used patterns easier to use. # Reading Arguments In most cases you will want to use [`cli.config`](configuration.md) to read your argument. For example: cli.config.general.verbose In some cases (such as [`arg_only`](#arg_only)) you will need to access the arguments directly using `cli.args`. You can access these using either attribute or dictionary notation: Attribute: cli.args.verbose Dictionary: cli.args['verbose'] # Defining arguments ## Argument Decorators Argument decorators (`@argument()`) are used to define command line flags that the user has passed. For the most part the arguments passed to this decorator are passed to [`ArgumentParser.add_argument()`](https://docs.python.org/3/library/argparse.html#the-add-argument-method) directly. As such you can use all of those method arguments with MILC's `@argument()` decorator. ### arg_only Sometimes you want an argument to be a CLI flag only, and to not have a corresponding configuration option. With `arg_only=True` in your `@argument()` decorator this is possible. You will have to look in `cli.args` to find the value of that flag, it will not be populated to `cli.config`. ### completers You can specify [argcomplete completers](https://kislyuk.github.io/argcomplete/#specifying-completers) for your arguments by passing `completers`. For more detail see the [argcomplete](argcomplete.md) page. ### deprecated You can use the `deprecated` argument to mark a flag as deprecated. To use this you should set it to a string that will be displayed in --help. For example: @argument('--old', action='store_true', deprecated='Use --new instead', help='The old action for my command.') This will result in the following help output: --old The old action for my command. [Deprecated]: Use --new instead ### action: store_boolean In addition to the normal set of `action=` arguments that you can pass to `@argument()`, you can also pass a new action called `store_boolean`. This action behaves like `store_true` except that it adds a corresponding `--no-` flag that the user can pass as well. milc-1.9.1/docs/breaking_changes.md000066400000000000000000000053121474512023100171720ustar00rootroot00000000000000# Breaking Changes This is a list of breaking changes that have been made to MILC. If your script stops working after a minor or major version upgrade this document will tell you how to fix it. # Version 1.9.0 * Appdirs [has been deprecated](https://github.com/ActiveState/appdirs/issues/79#issuecomment-877645712) and replaced with [platformdirs](https://github.com/tox-dev/platformdirs). # Version 1.8.0 * MILC no longer does a logging.basicConfig before configuring logging. Modules which log during import time may emit extraneous messages with non-MILC formatting. # Version 1.7.0 * MILC is now fully type hinted * You can pass in custom loggers using [set_metadata](metadata.md) # Version 1.6.0 * Added support for [Sparklines](sparklines.md) * Moved documentation to [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) * Latest release documentation can always be found here: * Latest in development documentation can always be found here: * Legacy docsify documentation for MILC 1.5.0 can be found here: # Version 1.5.0 * Added `cli.config_dir` to find the location of the config directory. * [Arguments](argument_parsing.md#deprecated), [commands](api_milc.md#entrypoint), and [subcommands](api_milc.md#add_subcommand) can now be marked as deprecated. # Version 1.4.0 * The `config` subcommand now filters out configuration that has not been explicitly set. The new `--all` flag will allow you to see all possible configuration options and their default values. * Setting program metadata through environment variables has been deprecated. In its place is the new `set_metadata()` function. See [Metadata](metadata.md) for more detail. * MILC now tracks whether a script is running interactively or not with `cli.interactive`. You can pass `--interactive` to force a script into interactive mode even when stdout is not a TTY. `milc.questions` will always return the default answer when running non-interactively, unless `--yes` or `--no` are passed. # Version 1.3.0 * You can now set the program version number with `os.environ['MILC_APP_VERSION'] = '1.2.3'` * New global arguments: --unicode and --no-unicode * ANSIFormatter, ANSIStrippingFormatter, ANSIEmojiLoglevelFormatter, and ANSIStrippingEmojiLoglevelFormatter have been removed in favor of `format_ansi()` being color aware. The new `MILCFormatter` is being used in its place. # Version 1.2.0 * The config file is now resolved to the actual file which should avoid overwriting symlinks. # Version 1.1.0 * Configuration: 0 and 1 are now considered integers, not boolean # Version 1.0.0 Initial Version milc-1.9.1/docs/configuration.md000066400000000000000000000053741474512023100165770ustar00rootroot00000000000000# Configuration MILC supports a config file out of the box. The format and structure of this file is exposed through `cli.config` and tied to command line arguments. If your program uses subcommands you can add a `config` subcommand with a single import. # Structure MILC uses [ConfigParser](https://docs.python.org/3/library/configparser.html) to store configuration values. We've mapped the section names to subcommands, and values passed as CLI arguments will be automatically populated to keys named after the argument. Configuration options for the main `cli.entrypoint()` are set in `cli.config.general`. If you do not have any subcommands you will find all of your config options here. # Reading Config Values You can read config values using either attribute or dictionary notation. If a key does not exist in the configuration you will get `None` as the value. Attribute: cli.config.general.verbose Dictionary: cli.config['general']['verbose'] # Setting Config Values You can create new values by simply assigning to them. This only with dictionary notation. cli.config['general']['verbose'] = True # Writing Configuration Files Use `cli.save_config()` to save the user's configuration file. It will be written to the location specified by `cli.config_file`. # Configuration File Location MILC uses [platformdirs](https://github.com/tox-dev/platformdirs) to determine the configuration file location. You can set your application's name and author by using `milc.set_metadata`: ```python from milc import set_metadata set_metadata('Florzelbop', '1.0.0', 'Jane Doe') ``` This will (usually) result in the following config file locations: * Linux: `~/.local/share/Florzelbop` * macOS: `~/Library/Application Support/Florzelbop` * Windows: `C:\Documents and Settings\\Application Data\Local Settings\Florzelbop Jane Doe\hello` # Where Did A Value Come From? Sometimes you need to know how a configuration value was set. You can use `cli.config_source` to find out. >>> cli.config_source.general.verbose 'argument' The possible values returned are: * `'argument'` * The value was passed as an argument * `'config_file'` * The value was read from the config file * `'default'` * This is the default value # Automatic Type Inference Under the hood all configuration options are stored as plain text. MILC converts your config values into appropriate data types when it can figure out how. * Booleans * `yes`, `true`, and `on` evaluate to True. * `no`, `false`, and `off` evaluate to False. * None * Values set to None are considered deleted, and will be removed from the config file * Integers * Numbers without a decimal are converted to `int()` * Decimal Numbers * Numbers with a decimal are converted to `decimal.Decimal()` milc-1.9.1/docs/images/000077500000000000000000000000001474512023100146425ustar00rootroot00000000000000milc-1.9.1/docs/images/tutorial_example1.png000066400000000000000000001331121474512023100210100ustar00rootroot00000000000000‰PNG  IHDR2¨; Ϋ• ³iCCPICC ProfileH‰•–TSΩ†Ο½ι!‘%T)‘7ι-€τΊt•PB 1P, "ŽΰX:TΗΘ`C ƒ‚½NA@ ’’ςnΰfή[ο½υφ]ϋžoνμ³Ο>'χ¬υ@ϊΙγ₯Α€s³ψ!ήn΄¨θξ E ΄€ “•Ιs φˆΝ·χ$ο‹jύϋοΥdΨ ™, `„γΩ™¬t„O#~ƒΕγg€ΚGβZ9Y<E˜ΚGDΈ]ΔIsά+βψ9Ξζ„…Έ#ό<‰Ιδ'@­EΛf%!uH4„ΝΈlaΡΊN¬d&α/NOΟq'Βϊρ©“τ·šρβšLf’˜ηφ2kxN&/Ήζ<Žmιi‚ω5΄'%σ}BQ^tn©~bζΖΝ3‡=›?ΛΙŸπyfeΊΗΜ3›ια'ž›θ?Ο‰/†ΈN#lžω!βϊ ™ž‘σΜδ/¬%H w―›ΐΧΜM‹œηlNDΰ0ΐ8€c_Β@4XX €>ΘλΐFPJΐN°T‚ƒΰ¨ΗΑIΠ:Α%pά·Α=πΑ0x &ΐG0 A"CH R‡t #Θ’CN'δ…@ΡP”q!΄Ϊ•@₯P%tj€~†ΞB— λP?τ„Ζ wΠ“`*¬ λΒ¦0v…ύΰ0x9œ―‚sαBx;\ΧΐΗΰVψ|Ύ αΧπ$  $Pς( ”1ŠŽrG‘bP‰(>jͺUŽͺA5£:P=¨;(!jυESΠ4΄1ΪνƒG³Π«ΠΠΫΠ•θzt+Ί}=ˆž@ǐ1*#Œ=†‰Β$ar0E˜rL-ζ ζ ζfσ‹ΕΚcυ°ΆXl46»» »Ϋ‚½ˆνΗa'q8œΞηˆ Β1qYΈ"ά>ά1άάnχ /WΗ[ΰ½π1x.Ύ_ŽoğΗΰGπΣi‚ΑžD`ΦvŽ:·Γ„i’ QθH #¦7+ˆΝΔ+Δ§ΔχšvK%8ω'$I J|&Ι’ Iξ€X’€΄TGΊHzDzO&“uΙ.δry;Ή|™όœόI’"i"ɐdKζIVIΆJHΎ‘"HιHΉJ­Κ•*—:%uKj\š ­+ν.Ν”ή ]%}Vϊτ€ EΖ\&H&]f›L£Μu™QYœ¬¬§,[ΆPφˆμeΩ! Š’Eq§°(›(G)W(ΓT,UΚ ¦PK¨Η©}Τ 9Y9+ΉΉΥrUrηδ„ς(y]y†|šόω“ςχεΏ(¨*Έ*$(lUhVP˜R\€θ’˜ X¬Ψ’xOρ‹MΙS)Ui—R›3e΄²‘ςRεεΚW”ΗQ9,b-*^trΡcXΕP%De­Κ•^•IU5UoUžκ>ΥΛͺγjςj.j)jejηΥΖΤ)κNκυ2υ κ―hr4WZ­‚ΦM›ΠPΡπΡhΦθӘΦΤΣ Χ,ΠlΡ|¦EΤ’k%j•iuiMh«kh―Σn~¬CΠ‘λ$λμΥιΡ™ΥӍΤέ’Ϋ¦;ͺ§¨ΗΠΛΥk{ͺOΦwΦ_₯_£Χk@7H5ΨopΫ6΄6L6¬2ΌeΩqŒφυ/Ζ,Ά[Μ]\³ψ1ΙΨΥ8ΫΈΙxΠDήΔί€ΐ€Ν䍩ΆiŒι.ΣΣοfΦfifG͞˜Λšϋš˜w˜Ώ³0΄`YTYά΅$[zYζYΆ[Ύ΅2²J°:`υКb`½ΕΊΛϊ›­ ί¦ΩfΜVΫ6ΞΆΪφJ¦o£_³ΓΨΉΩεΩuΪ}Ά·±Ο²?i§ƒ±CͺC£Γθ½% KŽ.rΤtd:v:ќβœ9 5œ™Ξ5Ξ/\΄\Ψ.΅.#)Η\ίΈ™ΉρέΞΈMΉΫ»―wΏθςπφ(φθσ”υ χ¬τ|ξ₯ι•δΥδ5αmν½Φϋ’ΖΗΟg—Ο†*ƒΕh`LψΪϊχνφ#ω…ϊUϊ½π7τηϋwΐΎ»žκrΫ‚@#hwΠ³`½ΰUΑΏ,Ε. ^Z΅τeˆyΘΊžPJθΚΠΖЏana;ž„λ‡ Β»"€"b#"¦"="K#…Q¦Qλ£nF+Gs’Ϋcp11΅1“Λ<—νY6k[{ΉήςΥΛ――P^‘ΆβάJ©•Μ•§β0q‘qq_™AΜζd<#Ύ:~‚εΞΪΛzΝva—±ΗJFKG““v'%;'—'sά9•œ·)>)S¦RƒRλRg"ΣZριqιgΉ²άTnw†ZΖκŒ~ž―ˆ'\eΏjΟͺ ΎΏ6Κ\žΩžEE„O―@_°Y0˜ν”]•ύ)'"ηΤj™ΥάΥ½k Χl]3’λ•ϋΣZτZΦΪuλ6\οΊώπhCό†<­ΌΒΌα|οόϊΔ©-0+(-ψ°)rSG‘ja~αΠfοΝME’Eό’[Άόύη‡Ύ­–[χmύ^Μ.ΎQbVR^ςukۍΝ¬ψqf{βφΎ6;μΔξδξΌΏΛyW}©LinιΠξ€έ­e΄²β²{VξΉ^nU~p/q―`―°ΒΏ’}ŸφΎϋΎV&Wή«r«j©V©ήZ=΅Ÿ½ΰ€ΛζƒͺK~9Δ9τπ°χαΦݚς#Ψ#ΩG^8Ϊσύ§†ZεΪ’Ϊouά:a}H}wƒmCC£JγŽ&ΈIΠ4v,φΨνγΗΫ››·Θ·”œ''^ύχσύ“~'»NΡO5ŸΦ9]}†r¦Έj]Σ:Ρ–ά&lnο?λ{Ά«Γ‘γΜ/&ΏΤujtV“;·γ<ρ|αω™ Ή&/ς.Ž_JΊ4Τ΅²λΙε¨Λw»—vχ]ρ»rνͺΧΥΛ==9^λΌnύμ ϊΆ›67[{­{Οόjύλ™>›ΎΦ[Ά·ΪoΫέξθ_~ΐyΰ;Wο2ξήΌx―~ψύ‡b²Ž>J{τφqφγι'ωO1O‹ŸI?+ςΌζ7ƒίZ„6Βsƒƒ½/B_<b ½ώ=σχ―Γ…/Ι/ΛGΤGF-F;ΗΌΖnΏZφjψ5ουτxΡ2TΏΡsϊO—?{'’&†ίςίΞΌΫφ^ι}έ«]“Α“Ο?¦œž*ώ€τ©ώ3ύsΟ—Θ/#Σ9_q_+Ύ|λψξχύιLϊΜ ΙgΞJβpb"οκ #š‚rβ²9½ημuΦΪk}ΐ?ιŸ'ŽG€#ΐΰp8ŽG€#pΥ pέUΓ)g”#ΐΰp8ŽG€#ΐΰHpA†ŽG€#ΐΰp8ŽGΰͺC ξͺγx g•βιϋ“pατkΨδͺ₯ιTΤηξmX€οΕ›%Ep·…΄Ν’‡½/ε`Ε qqψΊq? Jά!Gs˜ƒέnΎ}ϋel©j !^6&€caŒ—αp8ŽG€#0<ΣL±ΐnOZΫίՀƐIωέΆ»`NΑδ[Hy&W±δ‘pΕνΈtζMl/«Ύ‡ΖύJ",²"Yλ……A‚oΑό$4 >ζ,΄(ŽΖ`ΧbΕ=f3Ξ&ď±Ρ“pVAN²žΦdsžΰT§0}<Υ1ΰόq8ŽG€#pΥ!0MΆν~₯™‘UtAoΗIόΦQδY}ΒUίΰwŠ\“³›h΅aIj2|ςε$ 2Τ~Β’ΰΖVW3nψΘ,ϊ°Τ€ΕXβgΛvΰ‘Ί E…σπχ“ .T ¨n²oC 1 ”Ώ½χϊDΥ:ΉυŒsOnγxνŽG€#ΐΰLW~AΖβ@εo6ΓΚζž4ωμι<‹―½Zά’œƒy œGφ⛬ hPφΰΰ€ςhRφ»._κυ^ιŸ”ϊ•6`]fzΰpΘ^jD5͝λŸH›dÎΚ_"Λjπ“3X—βqϊGξSΈΫ™ WP§ω³λŽsύrθ¨_Ο‡(« UOkΥ“H|Όϊx›Δ«ζp8ŽG`Ϊ#0DqμΨ‹§ρΥιύX·΅Κ@ή‹•x2m6ZΎŒ’ Ε 3;εOΜŒΠ’ύ‘Οη…χR>=υl” ecΗή Θ˜Ÿ`«δC_χ'x£tΚ$…Όd·_YϊζvαpΝ§Hq&n3κ‘ρωΰΉΤ‰#ΏέWΝ,μώ΅(Δψz[Pρσ ,±ΘFω[?Gͺ!OΪΠP¦X{1σv”VΒb«h2εσt£ώ•lΩ΅ε‘όω'°0‰&ΫT―F3ˆξΦΏ |έ 1Sƒƒά&¦Ρ ’tΦU¨­ύPŸ†d„_+ΖΦ>lω;QΌ†΄> ϊΫΑQT!ς'ύZ;πςSιˆgλXt7AOtzZOαlœiΙFΚεEӁ—PPΰšΡάΖhz© ₯8\ΔKΦ‘B“p!†f6·-οaXLΑ$Νηυ χΒη8ώϊΑε+°εη‹BŒ―M}ƒΤ΄dτ΅Γ‰Ύ[ρ`ΪM1Τ:ElNdZ1ύα·C¬μγΧVχ/„›Π_y[‹Ž²εΨόΰν„ωgΨ΅¦@Cφ<μόΙΓXpϋΝΠλtβ=Dx]θό;φ—n‚’νcέ―O₯ΝΕ₯sνΈ2Ϋ «IožžVόŸ—Χ ½ί’‚OQΡγ™9ŽG€#ΐΰDΐu‘EΜΙσ`ΠpΫ­¦ K¦[o^oĜ„η8XΌ©f&ĐPΧGSi-t#R³‘iŸ"Yςqπh1²RD!ΖCy½4ΝΥ›Rλ:‚mA™©\’ · 0°λ9H–„’&ˆΎi “Α&Γiμƒ~_ Ά>* 1Ž’(ί»ε₯χγΜϋΝ‚ΥΤ­χΨŒΠ\ߜ†%$Δ z<ΒuΞ„¬‚bδ[ΩμExkORIˆΡPAaΒ―…‰4ΕGέp(²‚ŽTα0+³Y› άΔ€ !ι„cvŽαžpγΠu"ρ sa$LTΦ4'!¨fvhN†Ι ‡žhθ|L0Ρΐh]"1—Ž΅H}μiδ°ΜRŠΏq.•1Βd2 FΣ-ψώΠͺεμͺ·ΩΞ½xΥω8MœEάϊziLΔι`LJAΞcψιΨ  =%_η;(Ψτ><΄ίΥ΄Ϋ79°,ύΡIΡΖmΚ„0έο=…]‘Ϊ΅γ·± }κS–o~90¦rvΰ…œT:―G§'ό‚°έώ–’‰‘Q―Cœ·ξ!4ZZΗ•œ†Ν»"O“Ρφ±™ξW6žΜ)i‚#ήo4φVΊίήΙφ±%΅8ΔF—βp8ŽG€# !‚ŒI ωΌς΄½h’Ψ _v₯g ++ Λ2αάuGΧ£]‘ΩYμ@Νέ}}νΨηLG&Λ›ΎΗ:ϊ(—+ v*rΣ.Y\ K7„³«v!=#ιT¦ϊ½“hjϋ=:_ΈΪτΖ‘ι˜/Ίλ±ωρ,€¦€ uIriβΘ?š™3„|¦‘(Ζ²ΜLdl¬F·P‘>xœ?[ΑθΙۉꍔw~JγZ3žΨeTγΠXŠΥιιB;6hΨρ΄Χ ƒΪΕώΣ Γ‚!ͺ©ΧΓξ ˆZ&Πm&>w0±€>όwFfζ/ΠΞdΝ, 4 ₯λ¨>β%έ‰V1{ψ52%•?–BlΜI2{:O’˜‰GΕ1Q~€ ­Ÿι'τM―hR§IHAžγϋB?ω/NƎ­XE­ΕιCΥC΄1ь_ΧΊpΊ‡ *Φ—–Θ́ϋΩ,aύ–§ύ0Φn h*»š›ΡτvΡ=‘‘™EχP&7ξC§ΠgIxX“Qφqΰ~υ‘₯Ζ%ήo?έ‡F—FφΏn*Š εhpˆ©^ˆ#ΐΰp8Ž€J†˜–©,'dλΊ,Lλi&ά•ŸƒΣ5Β°Α]J‚…"ΡW܌df²xΞ}‚k!Šl$\ \FΗg_a©™LΖζΜC]Lρ„μΒO{ΝNlρ{φjDΩVfž”Κ’ŒΌν8Dfc–Βr,7SήωέΤ_Ό?{ζ1$λΆ1ΪσvΎ0³’/θ'Οώ+y©bόΙΪ&;ά,ςΫώφnΘVim5ΫρZζ½(H#ΝΤ‚ϋh‚κΪ«Ρ(?ϊ»ΏBwοlA²λΏ@«ξ‡Iž0dμWD°σ#Φ ύΈΒ–TaσΣ%I ’½Ρ%ϋc‹Α Ω€nT¬-ςkΨ™ͺνA}[u¨O,yœ΄)(Ψ, ?·όΰ9μžσήάηB]+5q©πί‘΄1§Qj_υψmΔ&2;TY“q ^=±Dl š;rK‚ΥVS‚ δ@ΟBN ‹ΜΈqΖ.3€―ϋ|$ψkošGωwS΄}ΜΦϊl]·Uΰ7οΪ£•fθnK4¦uA܌p5#Πγ—9ŽG€#ΐΰŒQ 2m§Ρ½> &ΛΧ;ιYxϊzqαάΈ΅q²}JP3>υ)+Q Ξ[ƒΩ&‰i s6ιzΞΌnΊυ-'d΄n₯‡r^|»Ώb‘l―bDκΠ0σVœΨ,M"%jlγλ—TΉΐΧk9S"βΛ/Μf¨ω3* £ΡΟA2egσmΥ8Θδ£ά6VmΑšp^(8QσtΉ}vgΪ&˜5 ₯Λƒkhζ±?NΠΝˆzΪO’ˆ7Bj(Ε£Ξo°ϋ™c™οi™Ι ‘L—³,d–o™Έ˜2€IZ™"jcšU Β`χ±ŒίΆ*¬ωO+Ž;—‹Ϊ&_7φ=βt‚Ub§55Ο―…Ω Έ jΩAΌ>Δ”0Κ>φ~}>ˆfCC3icΦ€ «‘ΠςFExΑ)–ρ›½ΫU>/yΌ#/u˝΄ψΏy *dYΖ’…‚ΌιΕ‘—ΕvΕ}±cΥ“Δ£$Έυο©νcMΌh")΄Ωξ΅£š8Ώ!₯|m#φq,8(‰σ}ŽG€#ΐΰp8cˆΐu‘΄Ύρ\NιSΰ_N—μlύIh²“]?­ €6T•ό „%ά Ÿ%^j¬E³°’^ ϋΖέΑήΜ(‡=―ΞΒμU{΄φƒΥ£½£ξίΎ%zλJ?R‹CoΥcύ“*JC3u‘λ’Π€Ιΰ@«xχ' Ω{?k LzΥβ ¬h†(>α¬ΌΨO΄."©HMMΑ=μ«ώ˜¦.Ώ₯Ώ+2α3-_ tsS†τ!»Ππχ6Αϋ΄Ι(Ψ]DŒΉdήQ+y/ξEu©Ω¬9]‚ζlp`μN‚YIο7h ȏA΄F>ˆ‡α& ZΑdM;ΔΩC€Bώζ’6¦―Θ‹‘—Ε½¨Η―ξŸg νπvAΖ²Νh–“Ρβ_οΙgbšΠ–\//Ο’+φΒέxyΖƒ€MJΗ?μv¬ϋΑ|ͺοΒΉ 5LrUϋ8jdͺ|Λΰp8ŽG`μ?Ζϋ)7|άoŽ•Βœ€ΰΕϊC8{~I\2ܴʞžCžΑΜΘ}ςtvwαβ•™Έυ63Δυυψΐo¦ΣFλκQο€Ι1 ΕΗλ±αμd΅Ή7“I *Σy.‚~b‡ςχθπš‚FύΈ©KΙΝνΟΆ‘„Q―.ΎΥ›„dζV˜t@=έέδͺΩ€o",χ7Όσϋ@,υ8*iψΈpNpv­Gΰvh~­xθΪΩcχ ށi-Ϊ,ύ!f“38¨%ό_:¬ϊu-μδf:Ž:ϋϋK†πΡΠψτ=n%7Ο)Τ‡Gρ™^ΐk/8Δψ3u%p―ΊO0k3₯ε’@ωΪΞ]ΔΜΩsa&wΜ¬·—ΚvJ¦Ϋη#ΩLt–δΰ’Ωψ²ζξKΈJξώςNΨ‰ΆtyŒ6ωψ‘d‚Χϊφ+C—gωk‰fό’6¨v#Μlœ#ŠνΨ.P)xαΉσ&η†4ΌTιDΦ:j) ­½c ­Yξ<Šƒ9mθO„•Φ ]#ΛYkΞηΠ$ΞG’psϊπαkϋΒVΉ£Α!,y~’#ΐΰp8Žΐ˜!0D#ƒ:ςΜu¬C¨€ΕWIfBL_'Ϊ»ΕςƒŠ%ΒύέηΠGf3,Έc’ΩJ ΚIˆ‘) 0ydΧ―‚ΧǐǯΜβθθ%#3Ž„# G΄™γcλšd{©mύ—s4š ’Θ:1{‹¨…Ρ%―„ϋEςyVWŠάG—In…—aυš5Θ\Ά k₯’W˜ρ'Έρi°_ٜFΩΆ6χl­>)Ί[ΦaM‘„o7»žAiC |T8ΘΕηςΓMθπ£8+F#­12bn‚dΊ&η έJΦ]ΚΣύdζΖ’/Δδ+ΠQ»δ/Cρl©>£‘Ő‘…φ‡Ε•1R ”°|4ΈπBω{θ!†ΤWˆ8κo~Β@Ε¦Υ(?"hf4zαf…Ÿ‡ά ϊψυίUΰ½Σ­θιeγJζΟo_7ŽpaΒE±‚ΌΚ]Φ‰]-惻Gœ`ΩεiΑ>e‡†«EεψΝήφ–ΠΪ&μ~)’ΨF‡δzϋηΥ§…–κ­9؝Οτ2m(ϊU5:ΘCε’¬)‚γSάoςXΊ‰’˜(€¬O3Ρ…Nψ%Άψ=qΘω€νH}¬‡ͺό#ΐΰp8Žΐ˜#π=’ψΟpT-φ<0oΌ»αQο‡Ιl±Ω±π–D̚₯…·ϋsΈλ³ό0ωmδjv‘‰ς^Όˆ/šΡΠ˜ΰ†Ιρ”½h/\Z„ΎŽΣ8ψ»JZƒ³MR˜ΊlΘΙ[ΑHŽ„˜*χπXD‹C˜Κ¦Ρ)ΒΝAΈi½ΈHΪΊfΓφ²Ν‰£{rΠYγ€`‘ΗΘDZ©ΪWΧ ‚L+Υ».ŠzΗrόΚν±η80έ?ιώ©=E•Gπ8ΕΕιk©FΦ†“pP_h©/>ΐ†a;BζFέv=]'φaέφΘξΊΓη§8ŽG€#ΐΰLyΈ 3廈3Θΰp8ŽG€#ΐΰ„"p]θ ~Μΰp8ŽG€#ΐΰp¦:\™κ=Δωγp8ŽG€#ΐΰp† ΐ™!D"»¨Δn§?„zτDx ǎrΒ²Ϋ,ΞΚ΅–,pξDue)–‘Ϋns8Q^] 7ϋw»#ŒΏθθŽ\σΠΧvΏ ΕƒŸαp8ŽG`ό―eΆBΤξΙϊzP½n5Κq,όq`ϊšΰΜ*Έ*έΰήm» II:Μρ-€σ‡@ή›†5˜“ο°τY„P•Σ°…‘š”ˆ‹¬H¦x/–DΚ§ΈOBKΩ Λ±'75θ΄Y3άψSO7ˆ`#υ›½¨’β=Y)NθΥ{ŸGΟΚΰp8Žΐ 0ώ‚LόΠΙ Ρ±ςΩB””Ιgh+±0c&nPœ½švΕΘτΎΑο&Ά§$―2–Χ,”ΒPς!ςH²!G’γνnΑΫο~„Λ3fΰςί#TE7φ!‘ΊίβϋΟ"AζΘph£• CΦ–‡ςηŸΐΒ$IB>Šo9ˆξΦΏ |έŒ*φ{v>ʟώ!ζ'Αβfϊ|^x/υαΣS@Αφ*?#Ž{ρΕαψκτ~¬Ϋ8Ÿχb%žL›–ƒ/£¨"x©mCεΑ·`eG…(μΕζύΘέ«jι •FΡΆqλ7‘ώΛΰp8ŽG@ΧEΚεόRΊ<€‘υ-£K>tΆv ΪQ+š½oν)@* *1(Lπ΄0Y—’ψ¨ŽE#_rΰ`ρz€š™C“ΠΎ>šϊk‘3‘šυMεɜ<½·έj œ€=Σ­·@―7bNΒPC81Yb<}½$:ZC2/>§=ˆ²{ρͺσqš8‹νλλ%>βt0&₯ η±G™UβhN†Ι ‡ή`€ΞΗ&Γ­K!Ζγ8AκcOƒΉ"ˆ&/cΔnKS“aΤλην#Μ<Πhu0%§aσƒΘ³°\b2'3l °.ΙΒb=‘Ώ5:² Š‘―ΘkqμΔΝ+E!Ζη!Ί€h¦šύ†ˆ2Ω(·Qτ1υ%λcsJš Δxˆ †–ΞhEλ-*ύ Xςqπh1²RD!FΜ«ή”By`›rπ Υ}LyγoœKύg„Ιdώ¦[πύψ‘ΝΦ'Μ†ς¨Ÿ9вθo2ΗF:—TH-]DΡΆρλ· ΦωG€#ΐΰp8VΡθ~Νόί}ۈωξSόΟΐ_G$9}1>υ:Nυ²\’VfΈόΟ­’”Ό¨ή˜e™ΛπSš,\—€3žΨ›(c/Z$FΓׁ]ιΘΚΚΒ²Œt8wΐ‘ΓυhgΧ€$Ϋό+ΝβΨ%ωΌœ/xλCΛa2³Ε²Ÿ–£ƒΝŠ‘GΦΟΆ²Y ±1'E8φtžD1γγQ‘ς#Mhύ\Υ8 ˆ_ςΡΧ‚Ν„Υα@ίΫq™™Ώ@;γC3 ™@M^ΚήΥ܌–¦χ°Λ™ŽŒΜ,Β,ιχ‘S ™„‡ Hil˜¨˜ϊ-«Ρ-€hΔƒώΌόμΙϋEmMoŠ32‰nφμψΝO,}Μ4+-5¬ί¨~ΊOκ7ώuS‘Ÿg±I€8ςυ΅ca!δM߈clTκ±’`§?/’θcV¨‘tΣΣιί‰V±λΒ‘©Ψ΄ZΘ—‘!ησ fk222„σn( π]υm›~ϊ ˆm~ΐΰp8ŽG@Γ 2ΧΛfhg­Ευ7Ψpέυ)ˆ»!KΑH™βf|Š’ύMBA+C{΄„&$Ω±ΰfρ«|ϋΫ»Q&™Χ΄ΥlΗk§E­ΠœχAρq?€όπ‡]—Qˆ2ά„»ςsό4ά₯Ψ^RΙIΤπD•WzNαW%’Χ²Ά*όζVαͺ.iΎ_Ϋcl±θΑ έ¨X[d&W΅½λΆTH£ΗΑΣΥWQόκόˆΩFυ㊴€AΉ€\mήΆšl(؊Σ78PXδ„ΣY„Β{gΰλ>±ŽxΣ<‰ίΐΖΫωΎ`Ζ&œi,ΓΙ³μ\vη`[»‚A>|₯ΐAEΡ^Qθ Šz/–>φυ|ˆ .Ήί*π›w;„zu·₯ŠύF‹ŒdqLzΞ}‚k!ŠŠŠPTx/:>ϋJΘ«™3y·κϋxhσ$‘t腐3jσΙΕ†ΝMΫΖ’ί€―‘‘{…o9ŽG€#ΐ qΓΎ•ο%ξΑυΧ‹λπΟαrͺ?7ƒμeͺ*pϊ‰=H#S˜•»σPχ·Π)V"βιΛ7ΰΑ™l"H͟‘Ά"Φ]θη ™N·.©Ϊk«8ξυi0i XΎήIΟ‚™]8wξ_mEM΄Cjυ|}.ˆ§††ΐC.g™Ή—ψP=2mΔΝH\ξcκΦoμΫwZΊ5)r^ v>—KB Qςφ’ι/βLΗ—Έ άυγ<’)5ΠΜ ΣfΉ›†cΐοΙ.Ί;£!BΟp4†=―Ύ$BΫ Τ]r &h‡&σΘΠδό ]u+IOϊ>3‹‘m΄fHΤΓEίo Ÿ@Σ"ΰ»OΊ'½₯œŽG€#ΐΰp¦#L9GΈ#€•YΓ΄2&¬X1'˜J[+Ύ¦ϊFσξ₯™Sc£ϊ-sH£Γ™§Δμz Ρ-d]ˆy۞ΕS+SΙ ΥΝΈ—Β©»έ’Z¦΅γ`5!.•γE)Kδ#δW?+θŒεήyβ—|MœlT…σ’1ξΆE‚ΩR]P ΕA8H¨ψ ΗΛ±yόg†ί‰˜Χ’…‚<δΕ‘—Εv³;V=ID%‘lxς#\ρ†¬±#ε¦IeRΩΗr-šxΡlL>ΆΩξξ·ώΡ Ή†ψκT*8Θe”[Υ}¬,$νΛwάυaζΤ°t£l›ΘC ύVW†ϊη‰#ΐΰp8ŽΐX!p]dB΅Α?ύΖQ‘K¨»Ϊˆ]‡N Y5δ668u‘λ’ψέ7uM>KΙσΰΈ?IΘΪϋY£°$ΈœŠ#;­σ ΅1Τ†ͺ’?α‚P7θ‚Θ71hŽ.1%ΐCΞΨ#xΥ$έ‡ύ~l(όαB‘*ί…sώu o#£9JΪdμ. °B{Μ]οŽ"™ΏqΔ!¨Φ³z‡λš{αn<ΘVΎΗšίΕgΒr%2~ΊΝOΕ^τΜ–)όΧTοDΡΗ2MmR:vΘ°So―ϋΑ|α’ΏίkΡ,x,ΠΒΎq·½“\ޞWgaΆ|υ}μ/"νt1ΪBκο’vΖdn4mEΏ9v”ΣG7άΥ»Aί xβp8ŽG€#0jδ΅a ΕioυŸΏnΖϊώ~L2-ρŸy‡Τ‘’ +ΤV± 'ΧΌŠ%‚{2‘Œ8WnΓΎύΒΎy)4†TΈκkΙ“ΧE̝Ÿ ƒ@¨οό^^?rυΚφτδζ˜‘ϋδ3θμξΒΕ+3qλmf躝ψ@Έ£αγxs¬ΠκSπbύ!œ=?ˆ€δ$rΦ)ι°|s=ά}Ν­σΙ΅0#μΓ‡―ο ͺ+{Υ}‚ι—)-Ǐ<„Άs1sφ\˜Ι3:c{)[x>~8˜a&Ή­½Si±άysΪΠŸθ“3Bι—ρϋ·[‘ΚΦ%―ΔΡΪ…8{Q K²)μX‰@hΘ₯hϊ8P˜<Λ9λaΝ‘~KTτΫkrΏ΅aKU=κYδš9 ΕΗλ±αμdωΉ7“‰" *Cύζ*“T5ͺϋ˜8 Εφ•₯?Δla΅R|VύΊvr;GξϋK¨ώ€f’ρρΖe’ «Ύm±χ›9ω˜…&X‰Ώ6Ζ$OŽG€#ΐΰpbG`XΜLΣۘ1#`ζσ=폠K|.ϊš$ΣVπΚe²t:jCΩώ“ΑˆάΛWΫά[°΅ϊ€θnYg„5EbΌέ8μz₯1ξο>‡>/©_΄z$™­΄ž„š(ϊ(`γ‘]Ώς―YG^Ž‰ή«X”d&Δτu’½[\Θΰ–YΊIίΡ)ŠΗ§£57)’Γά[$s5.ύ07ΊεGZ͌Fo’φYE!†Κ·4fxjqθ'S;–|!fpE ΛM^ΦGEΏͺF‡ΰ‘L‹$kŠ Δψ8ψd—hD{ΰŠ—Uε9v<0(βΰGt9\ώ^;» ­Ρ +bhN·δ mp@ BΥ?Qυ±ŸͺOμ7jŸ(|zpšυ›ϋyΝΛ,>€Ž^j£FGB-Π€1Α„[?€θ7FVmcVF,†ŒΑ/(³ΨF,Œ‘Μ/η&„’Ε£Π₯~υ7Eή‰†nmc’cι·Ι“sβΡ/ZWʜς-G€#ΐΰp8˜ψ•d1Υ­’ 9y !|‘Sεaq‚ Š,‹ΕfΗΒ[1k–ήξΟα^2²ΨsπΐΌYπ^솻FEύi ‘Υzρωn4δ’0άQϋΤ>Κ{‘4DΝΔGψμγƒC††=eΟq`Γλ"αU3<^Γξ‚-y MδLΰ">pΧ Σώα ^MUΑγV=…ί©FΦ†“pP_¨ι7[Ά M ‹‹θϊ’ α{MδNmί–‰Ό’ΊmγΤoΩV^G€#ΐΰp8W7S\ΉΊΑεάOmdAΖΣ^ƒΜ\ΧΤf–sΗΰp8ŽG€#„ΐ°¦eAΉψG`"0#NX5κu9Σή$ŽG€#ΐΰp8S.ΘLω.⠎ν_ ――gΫΕ΅PγU§Λΰp8ŽG€#0φpΣ²±Η”Sδp8ŽG€#ΐΰpΖ‘g€9yŽG€#ΐΰp8ŽG`μ1ΕΨWΙ)rF@v*ŸΆ!NπθLΓχr3J Jb %9N ζxβ½PΑΈ8\ψȍ"‹ω3F‰·mŒ€ &3ϋ-Έ₯όˆ#ΐΰp¦"γώšŠž žΈ 3A@_΅ΥXς°χ₯r-HΒώλΖύ((qOJ“μwΫ`5'Υm :R]TЧοOΒ…Σ―a“ ΔzΟ=ΤQtΐjIΒBϊ;Af,Ϋ¦1'o[΄ˆςOfΏΈμ9v”γ±;oDΣλ₯(qR 亚φ,pξή†Eϊ^ΌYR„°\S²!6‡ω«α_wG5ϘΙhŒbΐ:30€ ηšQS7ΖΜd Ιλδ ΐxΏc‡―yϊ_α‚ΜτογΡ΅0ρΜO’`• *sZGΌKSΕΤ‹c5οΰόεσPέ',“wΫξ‚9I“O@ς» ˜—€δ€ΒΟPοωδ΅ΝY]œdΌG°lνφvμΨ[οBŠθ>VŽ5[¨M”–Ά…4FΥαtn[8ΜΙw ‰Ζ΅Ο«ˆ/R΅δ‘pΕνΈtζMl/‹υ.Κaτt±`‘ΙoΛ’HτΪ†œJgl…εΨ“›Δ’Y£ξTHq=fŠΒΓξΪπbe1–[ƒΗΙ³[:Q»σΈκD νE•p=n–ŠΰΎΎτ2jχδB δλAυΊΥ(Sτ“½h/ΡHϊšΰΜ*‹D¦Šΰ?πΜ b‚Hw4Ηο Ά‡XςQϋκz‘'O+Š3Χ Ιg+άK}E|yZΰΜά πTG,ΆBΌEX‚ΚϊΠΫьCΏ+@Εp·RD~νDΫ…Τ@Œς κΚOλd+U‰ο‰1§ΫRνΔ†2έ‰_6s ρ°‘Ζƒ,۝8βʁД˜Ζƒ²΅*φmTί©ΎpΩil83χα'ͺωύ=ε/X΅γώ ΧΆkδ_#sttΜΝlpc«Λ…b§ ΗΊ½™1ŸΐΗœ§ ϋ]₯(-‹]340θ‹ͺ=5p•Ίpκ\_,«/3ΚΆ΅Ά_κ&έ…ΌΠZνvΜ#!†₯Ξ–fq‡~―–ΆωŽbg:·- ςΈ­œh΅aIj2—.WMΜηb’+άͺ>Œρ§ƒ˜Ϋ0|Aς$ 1ήξΤTW£ϊΐ”ο}{ψ"*Δ„YDΊ41~k—_ˆρφυ »§ f. χ,ΦzG$Ε.Ζίι±BŒXωlaHι›ιŒ™Έ!δJΜ‡Μ©Y(>Zœ0Dμ«…vMw “)~†Δ—FΪ†‘υ)ΒB«($Ύe40˜S±Ύψ8φn ΓεWΓ―‚l„ݍζ’JΊRΆ™ωσ§Kh³cΥQˆa¬Œεxˆ΅i›γΓo³ {ŊΓU\n οή«ΞzΪΠP#~Z»sύ3E΄Ÿ‰^<ρcΕΘΰ@T”δw_T…’Ι<ΚΆΥόρ#<“e¦—ΕܝgAUUΰΣhΆ}‘8απuβƒ*ωY€Ή©ήΆ§ΡοMηΆ)шn4+Kοw]Ύ"œπ^ιΎ0Κ£θι6`]fϊ(kΈβbx*/ή/έS=ŒAŠ³Θ•ζ•!Υ ΞΰZμΒΊνς!;^¬~‰a$FOϋa \‹ΕLΌž/τΥ[œ°‹— ©+Qh) ΚΘ…Ύ•w€mDΊ!y;ΓQB* ‹ΞΝEΘI3Ϊd8H8¨)© ΚmΏο6Ε±‹2σΙΈBqnœvιv±πΰ°3%4²σΆaΓS+‘€Σ eε&lk¨Ξ+9ˆΜo ²ύΨ·ζ~Ν{Ηa,sϊ…]S¦‘π–nCι:ό΄Φ‚π<ΒT¨ή.£ ¬$-Ξ„…Μ°Ϋ`ΗCwSŸΙ‰€ΝxΙ¨Ϋzq€xΆ³α4„ΫΎžR‰Μoμ}Αͺχχ’ΧΚξAΖ±c/žJOΔW§χcέVΡ섁‘χb%žL›–ƒ/£¨BρtΞΞGωΣ?$σ##΄τ\τωΌπ^κΓ§§ώ€‚νς°ηaηOΖ‚Ϋo†^§σz=ΈΠωwμ/έ„PSn›cž_ ’τlβΜΤ²αγ ܝζύ%Ψ4 ΛƎ½1? τœςχu‚7θER¦`•]aΙ–ΏΕkY ϊΫΑQ47<ΚΩύΛα&τγγWžΓV…±wΆ³›Όπ~†]k DΈJΜ,„ΥΛO₯ΣΔ~Ύ<έYOλ)œ³ -™)ϋ½h:π Jι¦δ Ύ|*m..kΗ•ΩVXM’ΎΪΣӊσςΊ°˜ Uύ¨ΐA Μ4σv”VΒb«hBησt£ώ•lcΘΟh«j|­½9H£‰Š5m9 dξO_"ή³M§.£­n"Λ[rh¬?“νΕVόjν¦`SZΟUYϊ5—πΖΟS†‰dp‚λ²9ΆΡsς‘ΐs²ύ#œ“½±’ςY ΓΉl*¦Ÿ :λ*ΤΦώ@ §‘gΛΗ―ckΠ½‘➏.{NocΟi/=Χ(Εα"ώX² ω;ΪgŸ@*ψ3ͺώuμ gκβΩτώ£/ο‚jB‹τηkQϋ‘ /Σ›χ#—Μ8£β7ΜΤ1μΐ#‹Εη@_Λ…ΓJ7`kn˜—¦@X”nB'Καλ4Z™²‚²π—ƒΞͺ§λΧ2Ά5ΐ΅ ΈC2“5Ν·Q€ lf¬π ετy€€%Γxη}4~f„”λC±e@]U ύ·αΰρΝH"M’ύ'€±jPb£Ž_%φ²ζUΆP^ nΗΘψ*Λͺ‘+ηš7Έf6χθσΔAoΈ;P’°σι±βννΟ`”ζk‘eFζ7΄„Ίc<ߊB^ˆ¬§(ž_Vx(b= Β|wΈ.”Ά9y zn»U!5S&Σ­·@―7bN‚R1μΐΑβυH53!Ζ'$₯ͺŽhjΦ#τΊ$»ύ,M₯‡‰^‡8oευ@£₯υ ΙiΨΌλ θΓ±?Y;±ks–τr¦Υ7HjΩ4,§‡‘Α`B’I°Δσ“]ιΑ£ΕΘJ…8τн)Ή#Ψ¦dBͺ!>a.ŒΔ£Ρh€iN‚Ώή˜wΤςΠX†Ύ‚Π†ε›_FΎάfšœ½“Jηυθτ„ίŽW-f‰΄ψέDeυt>φΧΐh]"1—Ž΅H}μiΏϊέL}Ιϊ؜’&1"f$­„Ω[(΄Εˆ„Zb$?^Εt4Ά–3θρ_4:² Šύ3^έF|Πά-P7yP ;Έσfφr§―fΓMV„ΛSφ§ν‹ζΧz’ξΑ‡|‰μΪ{VΊ§υ7―b²;e3JΖΔη$}εe_.h½=ϊ` ηiͺΩoδγ―Aν³³0›04Π³δ&α##‘ŽΩ9φάHΈQ‘ U{ΟGK—jΏq.=׌0™LΒΏΡt Ύ―¨šqν³jωeΔ£Hϊ„Ω„‘QΐIψ–Feυ7‰8 ·„ρ=Ώ1`¦Še›s&½8ύf©ͺ"B¦8lzžΨv2U ώΊνCgk§π΅2*Θ«’+ΣQ~Ώο‡dLΙ`=€­0Β Ζϋξz½¬ΈΞ‚Μ0σ™ςψoέ8ϊ‰ΐ τw,&‘*Ζ•ί¨π π46{|άΘ&υ:€fζ οΑEΒzΫO>«%eό~|ϋ݁£ HΓ>ΏZ,ίμΒ³lάΚύίθω ί ~v"n,©β‘λ2XΊ wεηΰt³€»tˆϊΆ­¦Θ„Υ’ν@a‘7ΞΐεoπuŸ βMσXI²ϋZ»μ.χαΓW6ψ'$U[~‡‡“ηΊ$'ϊΊ–Aή™XςœϋΦBΩhqΥΐet|φ–šυΠΜ™',x’ΛΠΆΏϋ+tχΞΎτ_ˆβI αߍš‡Fl"SΆC•0—ΰΥKDR$„μ ϋceR™TΘΣΥ"ΔS±_fβθόˆ=άϋq…}¬"άd5·\‡―ηClέΣΓώ7οfΒ΅Lλ"SmZœQΝ6jԍ2=;Χή‰λ™RjΈD#ώ\}J₯u?,›·σ}ΏΩHkvςμΏ ^Ώ0vΛR‡γFύωhΫVW³[²`Υιa{ˆ&uxΰ‹ψ ϋ *؍:UR”msןΑΚυiΠYΣχΆέ»„η†>€ΌΫ'Ή‘Ρ΄ν›εκΗοΚη€dŠJM­ οP†>'ι|΄Ο†Zˆςƒ N1ήσ# E8ŠtK³ ͺž}ΡπMΏ)ž%Œ—‘xUΝ/Λ(₯X0“Λ†nγfЧΌΠ,ΟΙμωΰΞ΅HuθμXbΊIZΏήKΒΧ.?Ι8z―\θUjIΘpΖ§(Ϊί„deΐΦΚ€ž©ώavTe%“–oΖ‰εΑ4:ŽUc“ή€έ&Ξ >?qBΘΜ4ΤiKI³ww:i¨«&$ξX0—βQψ~g~£ΐ7Ο£;GsΉφ œlwΠ;•¬`ˆX_λ1Έf€V,…OγΘ/sjΡKC˜¦Bb¦²ηΏTŽίψ ί ~vϋ3¦*Ϋ*N£›&&ΛΧ;ιYxϊzΙύΈ΅AΟw;­y~-Μ9aRΌ^2ρŠŸ!}¬πβλ.eΖ:œιά‚dIp$&H_–Hχ’²)ΚόΎfLL!?°i·±j ֌Υ\'Ϊͺ°ζ?­8ξ\.ΆΥ׍}Ο„qύ¨3ΉΩq’‡ŒΛ}μeC†¨ΒDΌ-]€XεL­χλσΪkhh†‡ 2$)oν LΓΔ‚Γp΄bKΤΐ3ξy?›jž}QπMΏ)?ŠψωiG Ώ#шρzeIΤ&ΐκ7ވY:2 —ijτC>γxΪήΔ£δΦ7l²₯ϋOΗΝ ιzUN?±‡Φι‘Vfwκώ6Όx‘Ÿͺ΄γλCΝDudζNμRςβ³ΏΦε²δ?@λPΨ)Z«{¦K0}ϋ΄ε,@‚ ΩtαjσdYΦ’1œΘ«ψ­QΨo~£ΒWδnLgΜ\οJ‚Lͺ@·εO΄6(Δ9„²ΒργΧƒ7žY6emςΎdB‡Ρς+SΰΫΙC`ˆ #ΏΥ±Dς^μόχUXpλΝd?­0ζ”εpVΔ̌΅‚b v>—KB Qυφ’ι/βLΗ—Lq‚»~œ‡4ϊ’ͺ™)NΒIC"©Γ?“ϊX’β§1—i‚ξ?ǝθx°Ο›Π.kβ1Εf Zf!­ϊλg_b}šbQΘυΐa(Z‘:›@Nυ{Ρ᠞ξΘ9ήvγΐwΦ!c ¨δυ?₯‘=θ”σLπΩ)uKΫκN΄"7u ΄¦ωΘΆd#YlΠ‡ή~ρOvC£o[ή?³Ι4Ζ-φ@i?– & $Σ” 3MΫϊ£ΏύwKζεqΠ)—-RgΔc–¨“wΟ‡ς§ξΩ72ΏΡτE(Q«γ7 ‚*²6žόŠ’£7μ4Ί•ξ"wκ]+ΓΜ’„―‘«`²•‡šΆž΄2i9p|ωυπΕTΣZ_λJΩ8vά‰₯/iωΖ8άΏσ’ΥΘ_ντΘq½κ_*2@k5V8ˆ=χπόŒγ•{oΎH-ωΆw~£ΐw\šΞΤP‡πžm&Ι¬μƒ^2w[ί8ςO–‰#Ύ ’ε7l#ψΙ‰D`ˆ ΣΪq:τγΑ‹ηβg Ÿ8†ςΦθΖ– ςCΑ‚ΌmΟβ©•©δβfάK‹qέΜ3M’ σjrχ£‚ϋ;™ΠŽUO’φ€τ‚ΦbvΠ:|;ΠC+(υλtτ•γ«SeΓš *Dμδ8ρμͺyΤΖ8|Ϋω.ŠF₯>²w`; FΙηυ‘Σ=–;iρσš€ΙOT˜70^εΜ\Œ§Νv‡ψEŽάΚY%εAιkRΘΨςΔ‚ƒ’ψXμ7Φ@xǍ­©F#†Ά΅UύωK`Φތ5΄ψ•Φΐ½­xwͺ-„‘m GMΈL‹ΰ,ŒΓmΒPξΖ;©%€Q€ž(Ζd›ϊΌώ‰€7ΔdԎ”[˜6V‘Fρ,¨„»ίΩ…ΡήσΓΡU°.οΚ/*ϊ1E|φEΓoTύ‘₯ˆ#ςd˜…+.œkμΖ%ڑώ΄f„&υuςϋ›Nφ'½‡-­ϊBcieΦ0­Œ +VΜQ].RΖΈςΊFlYλFν x©1㉝yp λKspίmβψ6#€ψ8sΘ£œIw?@kSέΑσY…†$RύΡ^ ―Ωxp‘ΘΏ‡ΌFŠOͺω–‘IΟ_‡­“lV©vjπ;ιέv•0p](Ÿίx§t‰)―δUΛΖΘ.½ΦΖRͺJώ„ ΒCAƒτ€SdiVΰΛυв½p7d+υ•©±-=μ„χΫn?Ž?ƒ5$+(o³°2[ ϋΖέA^{^Mr²ΩnPJ΄.BjJ*RSSpΟh£ΤGΝ}9ϊy– 0x;Ž cΩf4 Khρ―w>TDƒYPλΤh“±Γί}v¬ϋΑ|‘°οΒ9Ώη4%΅3BEέά”!XΗΪJϊ|¬pγ£³ΜlŽΎB.I>t7Ÿž4ϋπ1m}Qύ[/{Π‘“»Tr–q’¬ί―‘D.Ά?ž:dόt›ΏΡφ’Ÿ`~πχ‰θžΏ~J΄#<z(―Gύμ“ DWY‡°ί%δ ΏkΘEυ'bεW} γ—3jΜ"±R…·šΘ|’i)­+Μ˜ΥΐΘτ4c•±λΠi˜Ζq¬h3:ψΓIa²@νψ±ΰe⠐ Β<‘oΌ°kV―Ζjα }ε#±rƒω?Hό(4$™1Ω|'Y˜Ψ² ±·φi―)θΗΜο˜p7vDΖňOœ΅ƒ€ό‘Λί↏;ΰΝ±’‹ΣΌXgΟ")9I˜(ψ3I;φτδζ˜‘ϋδ3θμξΒΕ+3qλmˆOΥpO^€G/ΦήΗ±„ΦΗ,wΕΑœ6τ“ŽΟš$ΨΊ„mCΩNbqΑ œΧΡ#θρ;aΡ9Ό[ͺκQο$Α€ς―Η†³_uZ<ζήL¦n,¨LηaΈΚBΎȞcˆšμƒ=„p‡mΣF-6”Φn„™αγmΗvlκ)xαήΪσ8ΉξLΓK•Nd­s‘o4˜EΑnPV=²œυ°ζ|Mβ|rγΚ#' ―ν Κ%44ώ}[ΙΝs a}αρ‘ΧΌφ‚ƒb;DƒƒLq[ΑΝτ(ʏ’¨bψŒ‚J„’cΨΆwO|NΆΙ’φΩ“­>ςTκi[ώταY,Y™,ιΓίήy=¨Μδ*βεΡ_Γ~™™FόώνV€ύ¨K^‰£΅ qφ’–d1RPωŸ% ·Σ» YxΈŽΦ£Gp™4ΏV,ΕρŠνž™.qO σ+KˆΩ$Β j₯Ψ,:¬ϊu-μW†-2Ε{3¨‘#ΔΖοHTC―y©†fˆαXfQΠ­(xΦoF2Εt[Ίή…#vΰ›Αx˜X<8FG;T+―KΞΑργ«Cj!³pO œ%Ÿ†€Ϊ*vαδšWιέ(¦ψ–)œŒH7+ΜΪΡ)T•ύ?^BZϊ[σl!ΙήV‘ΎΟΠΠ¨ΘΘv«>@g~­ŸΡγiž΄nώ€΅;ν8~ξ?Αv¨mš>ΤΠό"ͺΐ¦dšΔή€μκ]GρY~hY=)΅)ΗV©κμ‡bδW&¦b;|Γ‘·“CY”ψ|dM" ¨Zil°Γ¦κ­δΩ0° >X+B‘ςεx‘ξ?”яċ|ίFΚΓ:6”_%*wΖύ=€’ι”mˆFuΫρšδκ˜ΕΣHfBL_'Ϊ»ΕΡƒŠeΰύέηΠG¦Q,pZ’ΩJ Ι³½•@IDATΚIˆ‘§ (xdΧ―ό6«Μ(±θWΥθ eΜ}V’5Eb| Ί>Α΅–m[UΆξ;αƒ+ΡfBŒ§³M‚KεψkΆ#³ψ:˜+ 4•”L‰g&ΔψΨzœ&2m‹”Ζbr£’‡μmΟa‰ΰY©‡_Κυ{dc.e^}ZPιλ­9؝Ο>©Η¬@Τ’ωBΜ}Εp—Θύ¦O3υ‡(Δxpϊΐ/±%ΘKƒ’\ƒ /”ΏG‚%Ρ#wzZ₯₯ 7ΚYTβ gΥVχ}ΨσσŸ—3™+4f()Η;–Mθψ±³’Η½όΌ|,ϊ~θ'oρϊ˜ύŽAΫd^ˎIξ€ιŒ§ υ!2½œyΌΪΪVWςΎ’mŸΰPUψ{ύjl›ά/‘ΆΜ=qω{νB­ΡLΟ=bθ™Χ-z”n"/?tΏSΜ/£‘β€Π"λΉ 4S“S,χΌΊC%‘κ3Y ƒC‹QΖβΚΙ\‰ρυ³/~εΆͺ܊±MΒ?s£ζWS fr^U[7r3‹)L¨™Ρ›Μ0KBŒπώψmX­<›ΈSel–(™ν±ͺ―\–Η;’“ϋOΜΥh§ΌΚr°L“ΥΑN —‚~‚iΣ%ςΆω‡“έBΓΒLάw«(1υ΄4†Ρ<»ΡΤ)ΞcζΠ<₯~ε¬2\Ϋ„\Qώτ_LήY) ½'!†…χt4‘Ίψ§Θέ.›ςΩ±(J~ƒ8‘ζ.‘ο― <Z|…μ#§όŒ¦2‰ΗςZ'ž•οƒˆζ\£Κϊ#ν‹w£ύΦ`†_Ye©/&μ= ˆizν{Τ†k›…ό΄?0oΌ»αfφ#΄ΨμXxK"fΝΒΫύ9άuΓ―·η80ε»Hωj†Ο'σd‘ΰ[³.C©Ν‚ς#― ~γ[8iΑίΠ²6šŒ-41ΪΡυE3}‘ ?±‘iΗv\]cqξjγw,ΪŽ†ΕžMοz?4ύΎΨύ)jκBUαJρsŽ@4Œχ{(^¦[^Y›6€]m τB*+ ΙΗN°(αm*Ÿ} 54YKEqβ@yρ tΎ_ƒ·)6M#-Ν+*}I ~Υ‹SΓσk€E‹*ΩPT6Ά»γΑƒ*Μbh†f&Σ₯4’C†±Gmr”ζ#d5?rς΅£8#wB,Fffζΰ}1 ;uτMV#3z£ Πp :yR-dFQ―f-ζ€ηNή‹­‘ χGQΝ΅Z΄£ύ τΝMDW{Η΅ o7G€#ΐΰpFF€<$ώ’ψ”ΊEήίφp!fdDcΟΑϋ"vμ¦qΙ©©‘™Ζ€σ¦q8ŽG€#ΐΰp8£GΰΊΡ“ΰ8ŽG€#ΐΰp8ŽΐΔ"05MΛ&^ΫΥ„@v*ŸΆ!NpIΓχr3J J&έΙΓΥ!η•#ΐP‡@Žs7χ$qΈπ‘E.Eόudx.ŽG€#ΐ'Έ 3Nΐr²γƒ€ύn¬f₯ϋeΫ}’%{_ΚΑ,Ωa|\Ύn܏‚9&ΐπ0Š*l'ςW-ΒΏ0Δ;›mš’2Αυ»u[ΐ…sΝάμ(ϊ}tEmpδί =#2pU‘'πΣ±ί¬χά³ΑXD2 i'2bNώΛΰp8d&e^ΗΨ!@΄ΔΤ‹c5οΰόεσ³Έ2ρΜO Žš>g‘eμΪ5Ž”l…εΨ“›TƒY3Ί ™%§…+nΗ₯3obϋ˜9ΰ°αΕΚb,·‹¦ΟnιDνΞΰͺƒΩ‹*)²΄Π.¨Q‡Όρe–^Fνž\QΘυυ zέj”‰Ε…\rtjτ5Α™%ΊKUEWπςgΗήzRBγ’ϊ<θh>Žίl?&)Z}ν«, 9%O+Š3Χ Ιg+άK}•BΧ)Zzfδ¨ζBCTώDKΧ’³ ₯Ο„ΏWͺcύSμΫβ@ΕWΟκϊM%«b6›GφδˆBTΈ‚„Ÿ3s~rδErΛΟό[Ro€>–y³Sy—T^θγίS^—δΒ?Αΐ9Oλd+NΌλζ%`Α#9 Π[π F ο Βχ8ŽG`Bΰkd&f^ɘ#ΰιΒ~W)JΛ&H#BήRΆΊ\(vΊp¬Ϋ+4ηκ˜Τؐ#Qˆρv· ¦ΊΥ |οΫ£κ’D« KRӐΉtρ¨θ ΫQώΦ.ΏγνλAwO―\£KΒ=‹ƒ΅prΓμΕίΏœ‘1bε³…!₯o83fͺσFR:μ‘FsjŠV#'LϋκΪCέmx0L¦ψ_i†N,§’’KBΐoœ²γAww™]gΖϊ]n8‚γ~ ’α@ςΝ?Σ]܈₯? κX΅$ EέΗRhrͺΎ±¦RNλ‹ΐ ΏΔΰp8“…ΐΨΎ-'«ΌήkšθΕOh«ΫΠP#~Ώsύ3€IUT εpΈΚβ„IŸο—n€«aΈ\ѝοΊ|E(ΰ½]Αarη•!Υ ΞN[μΒΊν²€jΗ‹ΥΟ!1Μ‡pOϋadζ–ΐb±Sm£~’/ϊΚπu†Τ•(΄”ieδBίΚ;6"ݐΌ‡‹α(©,v87!'"€k“αΨ–ƒš’`$ϋ}·)Jk±(3Ÿ¬”¦^L¬’υ™’ΠƒΞΥ(₯1cΙΫ‰½K‘՘ρΔ‹Έ·ŠύKΏ)@P±λΕ‘β ΨΞ κζ6΄Αާ’gRθd δLηΊ›Eͺ— „o)DaAVΊ¬΄ΡρΗΣκ8ŒeŽΐ8bΧB“,_†žηΗŽG€#0ΉpAfrρη΅OWly(ώ ,L2=ŠΝ Ί[‚ςu[†š9vΰωυ"IΟ„#z;>ΒΗ Έ;9ΝϋK°EmΨv–Ž•xjρlͺZƒ šΠ"ύωZΤ>G™θ+φΕζύΘέR ΥύςSι$Ί›ΐXθi=…³q€%3#(/šΌ„‚R6“ΜCeι˜ΛD­°r:λ*ΤΦώ@¨YCe?~­[£ζׁG‹ΟΎ– !†‘mΐΦάα€/QΊ 7ρ ϊ1Z™²‚² ³αΤΣυ[΅5ΐ΅ ΈC293Ν·†ΞƒΝΜϊΧƒ–Ση‘’– γχΡ”»bŠEwΰ>‹Ψ·έΗ^„֐Άͺ-xϋa1iΡ}$0ΈI`ˆ΅ίB ‰xθƒη[Q°#_H%½θσΔAoΈ;P’°σ© ή^$ŒΠIΪ–Y9VEQWΦ¬*―Ed‰_δp8)ƒd¦LWpF¦ φ"Όεz$ΒPςΑ넆»š¬KΙμΘ Γ2ϊ’-5ΦβΨ‰]›—BœkΡ„Œ,X ζ4,7‹MΑλE€b#nτ ³a IΙPm@“A0· £IHh$’γ“AœΈϊ<ΜdN £u‰`ε‘cρϊΨΣΘ!A¦fVf 0QŸί€GGυ° Ί !αΖτd63ζHZ£ΣoŠk‚#ύΔι`³Ψ@ό)>>]] 4Ι–“­ηq³5 ‘΄2rna‰n€°TD©Οι‡47Ζΐΰ@I[a:QΝϋξϊ‰―&“€iAf6‰j$#N™d—ϋΒ‡³-§ƒΨ:qζ δ$“€¦7 ™΄ΕΪoATG:Π`V’6P”#«ŸϊΈΡί|άψ–.΅"53y7-Ζ|σ‡gpλΚεΠ‰ςΚHρλŽG€#p"ΐ™«°Σ8ΛSηΟV‰BŒ·Υ±VX€lΙΩAλ²HγA¦9;IΩΒD ~φδύΒ€ΛΧΫ‚|tƒΰ)o§K%I&Ζ¦VlZMίϊY²£’΄V5[3‡š–ΙΞϊZ°9kqΧc₯Y/™Ϋd:P}Τ…dν,€‰dMC)V§‹‚†άο‘χΒΒza|ŒŒR1Ϋ½σ€υ,τυύυttζ,μy5kHΑάΛΏˆ΄O§^GηάΝXbP§•‰H—™‘)’vV’`σdK\ˆG~ς€1yλΑZ€‡οJy:ΊΆ ¬κ]4οΚΜκhAωTId)(ΞϋimΜη~IAδN+ΧΕΪoΡ5U‹ε›]XRH4ι“…Θ8œ―έ$Θ$eό~,ˆα8ΪpλW†δ‡ŽG€#0­ΰ‚Μ΄κΞkΌ1φ|μ\{'Œ€ψsυe(ύfΉϊΌΪ˜T—μXp³ΈΜΌύνέ~/Jm5ΫρZζ½(H3bΞΙ4ΗΆw n‘|ψπQˆa„ͺΆό-&BI6ŠΆ…π ΉOW‹‹Η~EœΖv~Δ&βύΈΒ Δ‡hl%ηώ:8Ϋ^|ΒL± χšεωΏ­wE‚0­&uη v¬ήl†E^Βz/1-R Ε―zε x>nΖ§(Ϊί„©’Ve8(2tO%]V0iωfœ™ew«Ζ¦ Χ^€έ&މΟOœκϋ ΉiKM0ݝͺ¦`$QG¨'αζΪxΜ±ίΔΪoJ’*φ™γ‡^κfωeΕLΟ©μcβ΅½'Ϋ€12 bL_λ1Έf€V!ρΔΰp8Σωέ0›Θ›v­ `·gbiΪȚŒ€/DGυyKCƒΘx&"ž&Zl-Δ™ς¬\,ΡόΩ— 2ύΡ4'~†ί€μλ.%Υ:œιά‚δdqςΛDΣΆθψ•κ=5]ξc‚35»ώΠεAŠUΚ3N›ώΛ’¨₯M€•4?’΄r#f‘Y›~ˆw1OΫ›xTr“;„5[ΊTά 2Jͺͺΐι'φ„΄2»σPχ·αΕ»ˆtύT₯_zh–­ΣΣZ ‘ί½ψμ―uAΉ,ω I ϊπι™.aΡϊ§-gd ΏP›ƒ‡JPω©rπΝω―‰2uτ]A_‰Ή1φ[tνρΰgΘαΥ74±Α"¦d^θzSdR…-’΅P!δΌ|Λΰp8Σ.ΘLŸΎΌζ[πΆΎ³R Ειz »‘ ύκσF 6τ-”ž)LZI³Af:ΑIΎέ€IτλΑΉ•GΡ΄MY.ΪύΏ’°΅ž„­‰L'?…‡b§θH¬Σ1ω‰₯F²]$ΑmC½k₯°ΞAω ^Θ# _Β~ΔQ(«<Τ„΄υ€•IˁγK6)&©¦ ΄ΎώΦ•6!vά‰₯I:,ίX‡;°jυ²$¨GŽλΥΧΜ:€pπ&―š†§‰:M2Ÿ¨‹‘΅) ͺ5Œ1Ψ&wΗάoQΆ%ž¬χΒ±D†- ©8„χl3‘ˆbpς)ž8ŽG`z# Ο¬¦w+yλ k Μ)U΅Ά-ŠΌΑ%A$dA·«­_{θ»΅NyχLͺ‘MrΕtΛ6Ϋ’4p…Βχ ;z-f‹kο…³l]Λš₯¨ΪT2ͺƒxΏΚbα0PYԟ­±—θ@Gwe€ΎN1©οNΒȟ;ζΖ Κ¬aZV¬˜3eΑΈ²Π׈-kέ¨=A/™‹βy΄Š­}ΙΑ}·ι…"Α&RΜΔZπ―AέH^ΐ”ΗkϊHtδΎΠβŽ{(hͺBΉ(…I”hό 2ψυ[¨Y£ΘDΈί:l-Φ†…ΛΕΟq8ŽΐτAΰΊιΣήŽΐΔ p¦ε+‘"έάd©² ]—ΔΩbκš|Iδ”ΗύIΒAοgβšˆΖZ΄χΫn^ǎŸΑ*˜)Ιe§ΰV ¬‘KLρσ;—Ux«©W(nZJkς¨‘D(ib§(و]‡DO\ΜsΫΨ§ όα€(’š–ώω€Π°8Θ­ΆΠ—}xγ…ΥX³z5V kπθ+‰,¬x,T{@μΙΚ©1εsDΊU΄Φ„$qJI> rE ¦l'V¦ˆYOΛ iMΟDυ›Μίr8ŽG ‘ Ζƒ]-ψ$­Θ$πΫΠψτ‘Η.½!ΕǏβ?<>2g»€Χ^p ‚|ΒξΫ!μΜ₯²!ϊZ΄~~sη“»]aξά‡w~/ϊcφ2e8‰ΕK 1¦Αuτz<Εΐ/cΦ²ρΈΙ>n‡7'™ΒΙ€ίυθισ€-Βn~­8¦Έ7―ΰΑϊΝHΦι°t½ Gνΐ7ƒρ0%™―r87db―KΞΑργ«Cp"מ8K> +΅UμΒΙ5―’³@±P!"]ςμi9KUΩργ%€•‘Ώ5ΟbFœUδ£ο34”sbεU 3?ΦΟθq‹JOZ7ZilΗΟύ'Ψ΅MΣ‡ς~s`St]―GVq­ωIBΑρ·ππΩKΈ9Ω,­WκΖʘ¦IL±τ›\v€­,j’5θ°IΫ‘ς°νγa sΑο°m˜λό4G€#ΐΰL\#39ΈσZG‹€ξϋ°ηη!?/{΄”’/ίΰΒ εο‘ΠAšš½λυ:šΠί„%Jmξ-ΨZ}}μXg„5EbΌέ8μzΖd]n«*ΒΦ}ΗΠΛ”8d’ 1žΞ4u₯Y–Q'1Ά‰¨% %ΦOfB,ωBLΔ)Ί˜Β—Cέv”n"oRt]«ƒΡh„ΌΟMΜη€κ7nδfγX‡¨™Ρ›Μ0KBŒΟӍ#ΏH”Ρbβ°Έ8ώv’ώϋ(”§˜\–ΫŽIxά2`F3TεU©ˆ‚žL›Θ3k9mƒiΣ r­ό‡“έBΓΒLάw«(1υ΄HZ8EYP4‘¦NQϋ1‡Εg‘Τ―œ1ϋΫ€ΰ!¨Όϊƒ¨θRίώί»ŽˆcRC1cd!ΖӁjηT-›‰­ίΤp.ŽΈΥŒίiΨoNχ δ(!ϊ(ΎR†£D ίηp8ID@ΦΜO" ΌjŽ€zNΌƒcI±b.΅‘]}ρ Ξوšͺ&αΚ‹W σύΌ]QCk,(*}I ¬Ψ‹S΅Χ–Γ:¨Bέ·]{ΝV?6mE¨ύ_?"OnΓhΛό”H“γωΏX]ΡΟ}ΘN#ά#_E™aϋmΒψU03F»ΧF]³!ψχ ·εΧγsŒ εd8Žΐ˜ ΐ™1‘™0ͺ°…ώ§MJ΄`!™₯&ΣbκυΞ fuŸ<„² 3ž ΛόΰZE >z­V\;4ΪG½>d€*FΌ~΅ρ«hP]EΙΥφ*˜δ»ŽGΰF€›–]Ýϛ>ΘΖΆ΅H΅$  gΠΊˆΟœ>Ό[Λ"›’Mξ9“€φμduΚ·=¨βe`’yΎΪψh|x}ŽG€#+\‰9^Ž#ΐΰp8ŽG€#ΐ˜4›΄šyΕŽG€#ΐΰp8ŽG Fψ™γΕ& μ"T>mCœΰ:•†οεf””Hϊ&‰'^-G€#ΐΰLrœ»αΈΗ 9iˆΓ…ά(r)β4MN9#Žΐhΰ‚Μhδε'ϋέ6XΝJχΛ Πƒ,yΨϋRΉR–‚OΔΕαλΖύ((qO@ε£―Βζp"Υ"ό #EΌ³ϋ¦°/v œ»·a‘Ύo–Ακl` β Ύm£Ηq΄,φ<`CTpα\3w-=Z@c.O₯σο…ž•Έ€ŠͺΘ“\ήo1=)­χά³9ψ) ‰Θ}<)ŒςJ9Q#ΐ™QCΘ L(ώ€½8VσΞ_>?1^…oΑό$SPLΔ9 -ΪτX+³–cOnjPq³fΈ{",²"Yλω`ρ#ƒΣΓ!ΊΆ7eΈ#KN W܎KgήΔφ1sΈ`Γ‹•ΕXn »Ÿέ‰Ϊ/ΐU'm/ͺ„λq18f8ώ<ν5Θ,½ŒΪ=Ή’ολAυΊΥAήνμE{‰F ΠΧg–θzYέ\UiΗήzRBγ?ϊ<θh>ŽίlΏYςQϋκίήΫGUeϋβΏ{;CcΗ–Ϋ1Α&'rΣV‹ƒt(ˆ’V^4A 3α)ΪoŒ†ΙoώF‹›'­χκ₯t:οήJq1s© Ε‰sΠ""fRƒ…Ι8H2š’ƒDσQΠ<iιLΊξ[η«»OžΣι|ΑήιsΞή{ν΅{Ÿ}φΪkν΅Λžά=¨-Ψ’ΞR΅‹ϊ!ρε`cœ.‘CQQKΧT² /­Aͺž‹ςgmΨ]cCSˆ·teνΚU”';ŽΎ^"Qα’~φ‚ <>±Ϊ­»ΕŽ‚Kh58Δ’Λχ3Ύ?„c0Κ3Euۍ}•\Μs @ύχκΏξVΒΖ!bΓχί_SZ‡θŽ>JΉεξُ‚ |’ί;Ι³εό,x¬f’V½cQLN˜Ε2Σ&ΘLλζaΜEDΐ=€}ކΙ3)λpb³£ ·| T3ςΪςq΄ β‡‚γμΖ‘ίŒk³fαΪ_…ΙOX|ωγIΌϋιŸV8ΔQ·°–?L7[°<' ήψ*A‚Œ;ί£‰›A˜9{†/cΘ£AZͺ]ξ_šˆ‚Œœ“wΙ·Β'ghR±ζ₯*4V6$‡υY³•y6 ΘρR£CfN!j‘·΄‡KCΦΆ­Εϊ5£Ί»πP U)h„C?£΄z₯kJkό‹Z*κ±eέΐ3Ζ“HΒό¦nCS©₯ΏEΨΆk#Vά“/Py1<ψή!‘J΄ˆQJΘ—NiέL„λy6^ͺ“ξ6:D’ Yz>Β…$r³8/Ξμ • άL² {žΒ\NDΠ +Έ:σZ:τ?ψr5”χ/oΦb³κΆ°α±₯ΒδlΈ{€Γ‘νΐζH’₯ έ„›œρ ΙώΒhed n”ΣυYγΈ:ΰxΈ[493ήc Η]–Α’IΑξΣ‘›…Τ{—Ρ΄΄)aζcAΖykΓ2“ΠΆƒΗίδ…ސ«ΉG„γ’e4©v€:ήvSÚξο„Ιw˜9ΈΤFΗρU2“Š–Η—9ζ…ςώ“”,’Ίy0μN‚ήp/lV .eξ‘ζρ ]†Χ*ŽQ ξ.‡PFΖ »a0nh˜ sC7/«ά” `­Ζ{Ž'A" /<$htZΝωdšγ„αaΏωŠΙVν›ςΕ½7τa ™ΉX™)pžNf/ρ}Κν0Πd€d(ίΎύmή$IC‚Œ&%EF6ωΦΉ0RzΈ wŒWεEϋ&μ*G7Η₯ΰ¦ΚiτzθΩ(u…‘Άά‚ΏΪ ΄nιδΒh&^·‡ŠΡ"ΥΌœ7rΣ½ŽΪ$ηρ£„™Φ9)ΈL½ ˜Χgφ’# ζΉG)·Ζˆ%i’Fμτ»‚ύΎ’ϊ&ι`1Y@ή%|!99ΎΥzoυχ\Δ·jϊƒΊς£ΥM“p±ύ ’ “±β'x‚_bθΓ±ŽK(_£4–š!ΐΈy`‚ΜΝΫφ7^Ν­¨_/Ύ7₯jΤγΏhoDΓ·+•§χΖD‘eΕ‚yΒVμή#;|ήx\­[ρfΑTζ¦"mhΎb)Ζbήu’Ύ!1‘ζš_αΡc΅4Ι$«’nAόFƒ# ί₯ΪτΎŒ€YAφό\pρFΝU¨ΆΠfάΡkθ;O«°$Θhζ“QΥWM»ΕQ7χ@7ΏρΧz]˜ΖφΜMΔGpS,Ζ‚q ]‹!pu\zοorΚl!«ηΊ€ωΏ₯ κΧ#…ŸV“ΊΖ}ۊ_”›a‘—°‘«œΙ’ˆΧKC$Pxž4λͺχΑΙΚA+ƒFœςg ½RH—Λ˜±rNΝ²ϋŽ·ΰE™k/rοΪωσ“'ως>θDnΎΖΕy° yςr„Φ6Β^E&‹K™w‡p―MFš ψ6ήv“Q}#8~ E™˜”3aΌψ•ΌcSG ύAm)±λFνΠΫ„S½6†₯ςbΜpΟq8;fvX±ΐ`0! ŸŠ³D ιŒ€ΥZ€όάؚŒŒ―~K“+εi‚&ΟΡ1HG2MFΈύgOJ3W!GΧω―d4ϊ4Α|%y–π웁@ͺm8Ϋ_ƒ,QΰbΤΤMΏε&π:=ΕηYKŸ½•Ωahk`$mΘ„Χ-Iπftm˜ 8S³[θΊάΘ6‡α+F‰b‘6fͺ« ­άŠ9dΦ&Lι™Fβ]Μνz«EW²!μXς|’f‘ΨΥά„ΣO½NZΚμ(CΫ'‘EΡ¨t}TΕ ο0.‘ žžφ+π}Ϊƒσ–ΫŠ™*D/ γάΩ~ϊΉξ ·~υέxŒκά) ‚K™χί^ό†ψ ΣJοu »H̍³έΤUƍwž'‡TήTUύA“ΡκΖ½B˜E¦“ŽχΟ‘ “Γ?θώ-yί rf!₯eΏ †C L ‡ {6#θ8βΔώΏ™ι°Α(α{ΐ`G/:F”§B-4Š6Οζ'v΄ϊβτJzέΔ‰fH|(9ι‰šΊIy¦Η―έ‡ BH»htΠ$·s’Ϊ"€?“ YN‚δd†ΞSη঳St$²κ8ω‰ ζ9H‚Ϋ‚vΗ~/@ΘΌ(| ’ύ„²=Ο ·œ΄2Ή%°}ΕMΚ#Εtž·_Α††N"Dζ€κ‘Ÿ‘ΓΚκ`sϊχx?(I‚z”8φ‚Ό.rVΩHxΌ€DLΝ%Ι|‚.†φo€˜ˆ‡0ΔΨΈ5…ΈΫMe͒ÝՀ’ΖΈ’«θjΛQT7NύΩt°ΜF:ϊpλ*΄5Œ†C€! if₯4=KΗ˜ΎΠYόΌK‡.iεGΗDA$hΣ3ŸΚΥƒoά΄Ά«Σcώϊ"wrA!ά™Ζ}΅)Œ^§cΰψ Ρf_‹Ϋe{οΙ<&² ͺn²œͺo€AdΎ¨!*#£δŒœ…‘Η°―?jD“|!_Nw’κ–μ3ΰ‘ρ.\ϋFL!’sW)JGξ+ I}[ΐ€~δobϋGΘ«βqgieΦqZ#V­JS‘3r€Y’ΠΧ‰šυN:I^r.ŠλΛh·χ₯ΛξσδfDœs‹4Ϊπ―AΖβE/`εLΤ&ξXt;€ΆΠβξϋΖ(Ώ ³(›“((Π»Ι―/LR»›5 LŒσo,ΖI^ivεukΓζΚh„Y:†CΰfDΰοoΖJ³:3ΖƒΐΩξ―ωμΊΉΩ( !4€«ΒL"g]m΅—Bldπ7Cη;…}‡ΠΝK4<π“Ύ΄ΆmΟΑΜ›ςHy'σw€sVΜ‡™Ή[(Qq Ίu r8ha}aGNΦ²jΨ«BΡ -e žˆ‡Oθ³}m?Νxο ©£(σiŸS…ΏG΄+jβ§ξΟΩ‰νOσ·œWΊΔ‡&ΌuJΏωO ‚&Ή ηϋι0ήy₯λŠ‹QΜ_‡Υo|,°`0γρΰvbORN%”Ο˜t›i?­2PΘxθi~SdΗρΠΔΛέ'Ε==“Υn<ͺώΔlݘ8¨*Ž%f0ΣiρuZ3ɘc„ ΰ•¦Ϋ!1ώ £σS “W+½!΅'Žα§n/™M]Β›―ΨθάvοϋVΞ₯²!ŽφCθωό ζήC.iωΘ0~χkΑŸgΪψΦ),­\Mj.ǎβ²[ƒTαΰ—„Υ#ζKNσχ4ό·“36¦ϝΡaν‚•\Gs›Μ? sžM,jšΫΡNžΪtT·ΪνΨxαKZνNΖάyσψΥzτ†£q|+±1λŠι…§$‹Ž“Ι¦6iΗεa7ΈMΨ]oΦΖu¦OSεx¨}²t:δ—;ptuΎK†1#•σ5@²^RΘΔ^—U‚'ŠƒΈ'·ΩξnΨλΞ…€\MΫqjέ^ς`ζΟ,0D₯Kžέ’mginό žXNZϊ·ξ₯*ΜJ2 | ŸG‡_ρ(ήόϊ+riŒχΣΙνOnη#΅fκ'π/~6ιŠκ¦F+υ—Ψ‡ΆΚ2ϊoΠuμ=Brϋ­Σf ςΔ{xτΒUΜΛΚ$}ρV#§iB<ν&ευ+ #±΄žΦκ]p<™MnΤΉ³¨„\Z±op·gZ6£2ψ@&8Hό§?H4‚•ΤMzo£ΦŸχίΰ²bέϋœΡΕJΘ⠁‹ΣΘΜΨ¦»ΙΧέkE*ʊ&ˆ^Ωω:Hγ@3\½^G“ήΫp«Θ‰ΛYƒΝ-§0ΜέλRaΞ…Ο ;žχΔΗE»š«±yχq ρΚ =/ΔΈϋ»q¦ΟΝ%wΞΰ ˆθ •τTšž¦’§)£A˜\SR+c4‰'#榈fq$bΰςΤVP»}΄aœlAηt˜³θΜ29ςz†pζŒί΄'¬šλhu!3!.xƒLΔΖθΌp!Dΐ€m+v>ƒ!Εku„K* ΄α=,"₯θ?N”ΤβxŸ ™Ρ3‘) 1^χ Ž6ύ2δTŽήΝVύΏάCϊ/šνqi_“κΒέ‘`Όο”ί\fq±\ .ψιI΄Ή‡|”μœ6E‘kε·N ςi °μϋ‚ΔtΉ[Τ0Κr;q¦_Π~€Q»sa$pV)«Η‡,³ͺUt©miϋQα}ΣΠ™1’γξC‹}še]2ΎvSΒΌΠσ<‰ΉON˜ςKBŒD[ΈΧ p‹‹*$Bτ«΄?d‰z©€n{Υό,B•TΖ^ήν`xVLE6ϊ6T`ΡA&Ία“³§ †ΐ FΰοˆχžΑό3Φo2¬φ8h΅άϊP›g ;τ§™ͺ+ JΚ g’ΣμŒ}0Y,˜s…&….vέ˟ΫΡ³ίN£­“OUέΤ•k‘‰ΕB£ž+W0πe­ΰΛfŒκˆΝΰΤ&kœO½hΡ•Αshm VeΜΰΚΝ(Φ-°•-!‘|p+y7Y»Ν¨Φ΅;O’$ΐ₯·ο0VΨκfT³ †€2˜ £ '–jΊ `-£σ_ϋϊΉJ«Π[Γωš.GηΓdΓΞΪUθΏGšZΙ>ί„κ†Χπδς Κ7„–gV£ρζœσGǍΕޘXͺqθίHžά"hΛ|΅&-Žϋ3όkqeTs8_ς‰Ί˜iόͺΑaΧ­¨b ΦήGΖ²cTaRj}σΙAΤ 'ςͺA€₯e0f’©κ `•±Θ :šQCo˜nΒB2½ΙΙ’ ΗεvY΅OdBŒ vsΓ#œ ½Vλ3oŒZ_ν­γήC•Ύ’Θ™Ζ―’:Iifpέښꦩ–^—ύ2‰B€id…$£Γˆ "liXS:Hβ,Ϊ,0κΎ„Σ‡waσ87ΒΗΕΛΔ˜RL°e)PΎ»ŒΆ/“ΝόLγW >7rέΤΰΐ2Σ&ΘLηΦaΌ1 †C€!ΐ`0a`^ΛΒΒΒ2 †C€!ΐ`0ΣΆGf:·γ-’jμω±Iά&Nnη΅.4TΦ‰‡Ψ…&gO †ΐtC ΔΎΆϋ βfτ$\ϊΨ‰jGkβΨdγdβ°  ΔΪ- v©  ο;ͺΈΉ±3AζΖjΟΎ6ΦΕ˜3έ/ƒŽη›„`*ΓΧJΘ•2/A‘ •„o:χ‘²Ξ9 …Ώ‹ΝŽŠ΅‹π)❛8½vβd‚}Η,αέΊj8ƒ=¦M3LΦ)ΏΩΫΝ|ύΘΜτž“…\tΜΤ4Μ”“j˜T“všŒ;¬έΤ4Ϊ4I{“τi‚φ”°Α™)7ΎCυ†pΌυwΈxνβδx§IΏχdeη¦-4Ε]ΙΜh©Ϊ‰ΧKsdEfj"Mœ±`‘YZΘwΖ’±ΐ`$k5ήs< a(xα!α@£ΣΒhΞ'S"' ϋΝmLΆzlί”/ξ½ρ`x0dζbe¦ΐQ:™ιΔτ)·Γ`Hεd(‘6 ΏΝΐ›PiHΡ€€ΘΘ&ί:FJο·αŽρͺΌhŸΗ]εΘΰζδάT9^½1₯Ž£0Τ‚SP¨ –L€‰¦Σο6(Ϛ€ƒΕdykπ…d:Ή|` Γ·ZΟ΅UΟEΜ3g šVΖG€»ˆF7Df ΤηŒ@œGctlTFR•^Tσ|‰Ϋ?@ϊή,FM(("QM-^2Κ Ύ±JmαΕ…ξΣ2β'Ο~IΪΠτdQŒ+ήv“Qu£Αœt+,VΘ΄΅#ΤƝ!m‹VœρͺϊCœeLσlEφ]¨-‘½[| …‹!7fέ¦GjF6JΜ/Θ¨'UUY-έt#ξ$³TΨ₯•"ίόΐ©Ξ‰ά…ΤƒopA&3λNθυ:˜—ςP{άn@§£ο–…•΅θ M;€_ΗϊŽ °XRLρAΑ.‰AΐώάZAˆρτ£ε§λΡH ¦’m΄— z-™ΫΤ“ SΓ™Ϋ˜πάΣ+_Cέψ·Υω½eυNTζ‹’Lœ,5½H>―{hεί¬s£usADΣ2Ξδ&— €τΏGF?φZ/Δx‡{Ρ\WŠ&^YbA½σ5δgκ±ͺ²ž™Ι lΙ|q? ­–~%₯A—YˆΧχ ιΐ<ΌΉΧι iͺ>zύs7aΉA™V&*έ )M;‡Ό'ύ’%}!ϋΡΣΘ”θω@Ez$οnž!w§΄Υ§ k‡Κ‘kΠβΎ‚2Ϊ(γΧ’I\OΩο'ϊqφΖ|.ΝrDn|›Ν…}EρΆ›HMα+79°2(΅Ο€/θωDάͺιQώ”Σ4UαQˆqχŸBύϊjŸΊlΫN¬Όε+‹ΚΗI_Eͺιϊϊ1Gލγ-;PΣΘ™zZPυj) ΛŠΚΙ‰$ν$©δqfk¨l Kn/…‘φ >τ8ιƒE»dΥψ*†υ₯H±tA0A&v;ƒ°VΠ‡σ^|o,J¨ΗΡވ†oW*O«j5Ίσ„­γ½GvπB Ǎ«u+ή,X‚ΚάT€-Νm,ΕXΜ»zςβΓ7!†KΫ\σ+0―1+hά_|†Qsͺ-΄“zτϊΞΝ 2š΄ω ©9ΤLΝ“Sfσ4αΉ„.iώOάυλ‘ΒO«I]γ>‹mΕ/ΚΝ°ΘKΨΠUWό›Dψ^ Τ’‚eΦ9Tο;ƒ“•9‚V8%Λt£.—+cε&œ šeχoΑ‹2Χ^6δή%ΰφωΙ“|at "7ίγβ<šZ5Ožƒ‹ ͺFΎεUd²θ”ywχΪd€™€oγm7ΥΨ7‚γjG1©†ΪψβWς6ŽMe)Tτ‡q”2Ύ¬jΖ•γ€υρ₯’“ŠA41ΓΝ[+ήuγ€ͺڎnok= 1’Ϊ³›ΜΰTρ1‰'°έ$n=ύο B χ “ΖΎ “ίGŸ›ψͺα—ΎY¬οH­ΐ~Υ" χjσ±τ i‡€ΥZ€όάؚŒŒ―~K“Aεi‚ƒθOG2/€Έqφ€4Σrt§ΥHd4ϊ4Αά&y–π웁@ͺm8Ϋ_ƒ,QΰbΤΤMΏε&π:=EԜuQφH²4i0’\β₯ΉΉ&ŠYΪ˜}yoΕ2έ¦”E£χ}v%nΧ»X½!‚)š%OJF‚ ΩΣ57ατS―“„΄2;ΚΠφIdΡ.*]UρΒ;ŒΛCθτ© v)xpώΟ€IHcͺxΌ\0Œsgψ θηΊ/€άδwγ1ͺs§Ό[ §Ωίo/~C‘©’χ:†]@Όν¦ZnΌσ<9 ς¦*¨κSΔ€š±Dν8™’ά½§ΌΥ…«¨Šq2\φˆΟΖCwg/#3ΩnRuΌ#dRόšι‘r|ΣU|Ήoλ;ΖμW-LQ‹K?mθ8βΔώΏ™ιpΔ(α{ΐ`G/:F”§B-4Š6?Οζ'’dtC& ς ½nβΔ8$^ž:πNMέσMύ΅έ‡ "MA̐ht¨œ”wž:7BΦΫΠέ"μt 0ΟAή΄;Φ@GΠ‡¬Α'—Čο–#ځ=Ο ·œ΄2Ή%°}ΕMΚ#Εtž·_Α†n…—ΜλΤ#?C‡•/ΤΑζτο™*~Π,€G‰c/Θλr@Π!g•ΨγΜ§A ™OΠΕΠή”1F‚'£Ηέn*«™ξμ#•4Ζ•\EW9γΘ¬f,Q;NΞΎEΤΞ‰C\D6Ռ“‰„‰]βϊτt ΩnΎ:KŸ(ίƒ  ψͺα—+…υ ¬Ω­bbu[Ε„XB†ΐ”#ΠΩ ~ž¨ˆ—Š΄r‚£cβW:h“6ŸΚΥƒohQ+U§Ηό%΄ΉΌΣošpgšψ•½ΑκzTάc Εν²½χ€Ύ§I,¨ͺ›,§κiP ™/jˆŠΓΘ(ιhΏ(ΖπυGhJΤBgη ςtu΄g„&υm“ϊ‘Ώ‰xFe[QdgieΦqZ#V­JS”'V’€Y’3…NΤ¬wβΠI:π’sQ\_F{¦8»,»KΟ“‘›HqΞ"hΓΏ‹½€”&lT x ΛXt;€ΆΠβξϋΚ6D/Κζ$ ΤΧyy}’ΪMπ&°Ώ±pHXA“DHΥX’nœΈ(¬ΞθξZ„"ͺNΔΧ^Υ8)Η%κΈ3ΊςR¦αέΆ›βΪͺΑWΏλ;Š[% BΰοƒξΩ-C€!³έ_σ)ts³ω΅<ω 3Ÿœuδ2W e°=Αί οφ9tB7/ΡhπΐOvψΪΆ=3oz$εΜί=„0Β-₯G Qq Ίu r8ha}aGNΦ²jΨ«Έ©ŽΪЌχΐz‡‚1ŸφDUψ&ιQΤ¨₯.}'Ά<ΝGp^ήšπΦ)Aœ5ζ? Rh˜lδ‚›oχaΌσJ1Φ£˜Ώ«ίψX`Α`Ζγ$Λ±')§dΟΗ{“n3Nυ ¦(=Νοwβ‹,²cxΘγεξ“βžžΙj7υ•ŽΩΊ1qP_捚£γ―.Ϊ.OΞGͺάQ%«&ηVw[΅€cT1NΚ¨QΗ)ƒθ²[%LΎ¬ο(ΑŸ₯ ‡€΄ψ.Ž=cL_Όt{ςYμθόΓOšΙ³l6jOΓOέ^2›Ί„7_±ΡΉ+.μήχ!¬œKeCν‡ΠσωΜ½‡\θς3¦aόξΧ‚?1Ξ§ρ­SXZΉšΤ\8ŽΕe·©ΒΑ/ «XΜ—œ6ζοiψn'flL+ž;£ΓΪ8+ΉŽζ6Εζ<›X8Τ4·£<΅ι¨n΅'Ϊ±ρΒ—΄:ŸŒΉσζρΪτ†Γ·±Vyu›*ίΐC훐EξAσΛ8ΊΊߎ%ؑJbmRΘΔ^—U‚'Šƒ !7ΤξnΨλΞ…€\MΫqjέ^ς`ζΟ,0D₯[Έ1κφŸζΖίΰ‰ε€•‘λ^ͺ’ΓΝΓηΡαWδ …7€ώŠ\Ϊ?£Ηύ? Ι ­vϊ‚ΦLψžΐΏψpT7Ν0Z Ψ‡ Κ2ϊoΠuμ=Br£­Σf ςΔ{xτΒUΜΛΚχ+ β­FΏ+‡xΪΝΟLτ+I‰₯E΄Vο‚γΙlrKΝν$δŠ}ƒ»=Σ²•Α)ΐAβNmπ9w“$ϊw²ΗΙΆ:8Χ.C9ν4ζ–βΔΡGΰϊβ fί>™t¦ χΞomΰϊšqRJ¬qGωψ+υ™H±ϊΔΙ ΧnRΕbώΖίn1I³Ύ"– <L#φtΊ# »֊2T”Ε³ͺ?ΞΚu8πΚΞ?ΠAr‹ΔωίΧκoΓ­"Y—³›[NŽ„!ΫͺT˜³E!Ζ3ˆΓŽη}rΡζjlή}CΌς‚ΞZ !Ζέߍ3}|n.ΙΈƒp^ W@„0'ι©4N%ΟX4Ωΰ…Jͺ£seŒF#ρdΔά”0Ζγ1pyj+¨έ>ΪΰNΆQΘΘ2ÜEg΄‰”Χ3„3g\ŠυΨ‰‚Zο43zc&2E!ΖKΈmϊeX“ώόš­ϊ©n.+šΑq₯^ΏΈ»†Ν}§όζ«ΒF+:IDATj4{ ŒεsΑOO’Ν=δ£dδ΄)Š\+ΏujOcXX€eί$¦Λέ’ΖN–Ϋ‰3ύ‚φ#pδΒHΰlJV/ŽYfU7ͺθΆmΕ?m?*τ_ # 1ξ>΄ΨΧ‘YΦΔρ΅›ζ…ήνΑHΜ}g‚X/ 1mα^CΞ€'ργ«€?˜Šl4vU`ΡA&€ώβs5γ$ηϊ}ηΡn^3£Ρiό3 B ytλxηՌ“20bŒ;ͺιŽ\γΝ`9η±ϊύΪn£Χ9C`Ξ7‡όL+Ɍ/pδS―¬ρ’ί°ΎΏ£Η>Š=eL?¬φ8J²λCmž-μΔ5 Ρ]ZPRΆP8ƒ‘„˜fgD‹qž?“Ε‚9Whλ2ΡD`/ΞHΟ~;mWΉ#~Šj­X Mά΅π\Ή‚/»Hγ ›αFΛ5Ξd-ΒƒσΉγ#=Έ2x­mΑͺŒ¨ΩYdΒ°ΐVΆ„„`š)ιλ7y»Ω'Qΰ`ΡΫw+lu kι1Nψg£ρOΛ½›θj <|6°ͺκΖΙΐœΡ―Oχζh·θ¨ϊc―Œ6λ;~8ΨUT˜ 9ν°–Ρω/‹ύgΕ\₯Uσ­αό%M;ΦΓ2d²agν*τΏίŠ#M­΄Ÿΐ„κ†Χπδς J>„–gV£11sώ°Ε³‡78–jϊχ’'·(9βΈ?ΓΏWF5‡›p΄fΏqRT±kο#cΞ1"@J’o>9ˆ:αΔΨ8)e»ΡΖΙ κMΥ-k·©B~ζ—;α}gζCw ˜ 7t,#C X·ΰΉ g 4xj7ΦUKϋiP#qσ!@ύλυ/Ι\0*ή^Τ(ZνζLγ7* ,’!ΐ`0&&ΘL4Œ>C *EΨ°9¦tώPΗY΄ΉaΤ} §οΒζ86ΒG-ŠEή„˜`-Κ q~ˆο.£-ΔΛ@Ψ”ψp¦ρ;P0 †C€!&ΘΔ„ˆ%`0 †C€!ΐ`0¦ΜkΩtkΖC€!ΐ`0 †C€!˜GLΔ€ΐ0&’jμω±Iά&Yn—μ΅.4TΦ‰‡ξM&#¬,†C`"(±ο€ν~ƒΈ!> —>v’Ϊp~Ξx gcΙxdω£ ΐϊopXΤM‹ΐDΌLΉi»ΣΜ¬Έu±ζΜ@χΛ γ§o0YKπ 9ΜΕ₯/Ί˜{ΰ„7•ΰφWOηŒ_B—“σό.PΊŠ%ΠsQ£—ΠԜΐ qΈβπμfο;ζϋοGf¦ί Fͺ‰k·™6–$ Kέ”$,6;*Φ.Β?p΅OβΓ Δ&ΨwlΑ"ύή­«†sœή"Y•w·›}<“£qσήMΔ{Α™›·?Ν̚ϋΒρΦίαβ΅‹Sλe)"ŠΌΊ§+Νr1λ₯š~ͺŽ6α+i­ήC' †#εξmEAΓ5z½TΨΌ—Ρ²‘Xζ’Y:­Γg`/άη*’[κ "­ΨΥξ@vπΉ|tx]_Χ όͺrkx|M8΄—;•ž‚»΅BYͺvαυlŠο†½ ϊ)χ΅ΑΆe'*Φδˆ§Θ‹Ή7ύ3zŽώ Ά6ϋΘ™JΆ α₯5HυΟ‰Qώ¬ »klhβ€K•j|a±γθλ%‚`δ+)ΰ‚0±lΰ]Ηj‹ξ;6ΚN“WΦwJ‹}9AόͺiγX8π}ο“Bu~ο€6œŸ‚•ΐL¨wμo±λ©&ŌKΤTŠ₯ DΐR΅“Ζ œΐGΘΤDˆΣ±`‘Ytξ ω^‘keΩTί°ώ+A¦l°o‘j<ί,©9’~»­t†έ«t†χ±€ΉΖ 4אV­τΝsˆίΌΈζρ^°=2Rγ²ί™…€{ϋ hhtNCΎi0xo»Oˆρ _Ζΰε!ώ„x.χ/•k”bV ωVd]“Š5/UeΧ#fΝVζ*(wΨ[™9…¨=Φ‚’0 ¬Εϊ5aΊ»πP˜DΙ³DΎ4‰_/©h8ˆM’CBΧΰΰeΈωΓ©΅0™οτsLƒο/μ’#€γOTΡe’|»6.εDΰ 4ω™‰ppš<'X&΄οD(2δqœόNdwΆ6ΑΡΰΐG_ ‡°›ΠΣz,IhMo2bTόPb<ƒέhmiAΛώύΨΉλHdψΑΑ‹DˆΜ¬r0'x<›ˆ±:rob¦γ·p8ΔϊvΟ&Ο©BHEώόvΫΪεώ…»qΜ5&β½Hό #V§`ρ D @“γδDΠ™e ΥΘ1ƒAΟΡ퀐„-+^mωΓ|%έ½‡QPZ“Ι$ηΘEΛ‚΄šxœ‘!g ͺL2­Œ”ι;ιBόJ7(mίαZΨκΪ“φMΥ(Ι5Ϊ,ΨΆ” ΅U–ΪΊμ€{-TΥΟ$yS΄ O/'ή(ΈϋŽ£ΖVγ3'³ΡΎŠUΖ!oΥεβΰ{ϋνΕhθ κ•ΥcWe>΄šL<υͺ Ξ·i΅ί—Pƒ/c£΅±•ƒMΦt.ί‚nGΓΗ‰·§€WUŠ -^ψαξύB —Ώ›K#}M醛μΖ^+ΣXΩ;©ΈΆ¨„ΟrΗΥΗ‹ΐέ’Ι™ρž`Σ·2X2Ή#έθ>}ΩΉYH½w uM“r*Όύε „C?£ ΄Ϊ|₯kJkό¦§–ŠzlY·€Φ$„)\ΰ7u³Σ Ί[lΫπrωCΘΠsγŸC}γ/— Xœ•Œ}u¨ ΰ#(λ΄ΎUƒ―ςŠΔ;ž©ԌΥΚιΞ”o‘Ώ-”β τΫνΑ°; zΓ½°YΊ”UΈ‡>₯ž‘ΛπRΕρΒ_Ίp₯ίΰœγ½g‚Μxdωg4Eφ]¨-‘}| ω³nΣ#5#%?¦^±d"M\<ύnƒrl’t°˜,ΐ–δδd tψVφΉgΟEΜ3gDΥψ)ΠU4Ί!2SΰΛΔ97FΗFe$-UyΰE5Ο—8°ύ€οΝ’ ƒ E$ͺ‘fbbƒ ξ„“Λgί—MvBΚ΅JmαΕ…ξΣ²θ“gΏ$͈4R# ’ Ύ4š“n……ϋ@ α΅[gΎ2Boβν;‘”’ϊRω6zξ+R/Ωήaε&Vqβ3Σ zν6ήΎfh\βψ ₯­μ‰š>©ŒβΜJe­^%1ή>l_៬[mΥ(0]Co@uΊΊΠqΏυf8₯ΧΠBBΘΏsBH}܊fΞfͺ³φύkHSzίͺΗ9Υ€HΕ„u+ξβ―/tΔησΝ^kγ…οp/šλJΡΔΣΆ ήως3υXUYO‚LM' /UŒ©φηΦ BŒ§-?]ΟkŠ8Ν/μ…ΠkΙ쳞°©DI“Ι™ržΩ*HΚ’ Ο·—ΒHϋ"šDΫ±¦I¨αΩ΅bi•Ν:7Z7D4-γL?σψ5')=Βμ‘1αΉ§ΰ'sή‘nόΫκ<–eυNTζ‹’ŒBˆ¦c25ψ*ε?ήρ,κψΐΎ…Aπ«ϋf)v'αbϋ$A&cΕOπΏ#ΆΗ:.‘|M βmΤv šk„§S&ΘďΛ9έ°V0r/Ύ7…1κρ_΄7’‘•¬>_*nXDS€ΓεnήZ‰x¦δΙ)³…Β=δ Ψ7ρ¨ΒϊυH‘Υ~Π}ۊƒΜ?hΓϊΠUWό›D«₯—†W†HΑ2λͺχΑΙΚA+ƒFœ’ε ΊQH—Λ•±rNΝΘϋŽ·ΰEή΅—DΧ†ά»gŸŸ<Ι?ό kΉωFηΑB¨I‹ΎRމϊMšu‹BΌŠL–6eήΒ½6iΫTγKT8gCΤt`ͺ‘v»ψ•Όέd…GΈ‰»οD ιq’ψD?ζs}2&­‰J f,ωv₯ͺqgΰšδΌΰ6άWQ‚ΣMœ :i3 r“0zζj­ΓFڞf*²‘ͺ:·ΞΕ΅oGρΝ°— ’σΉœ< Ξφ³XSž 9΄€ Œ_VξγέυΉρΗƒβˆFژ΄O‹ ξ/>Γ¨Ή ΥΞω5τ§UXd4iσjpP5¦’fužΐCο‘>s7WλVΌY°•Ή©H[@fŸ€“ \‚πτΏ/1σ4φ]ψŸόž3DpsνSΐ‘Σ[б˜ΗΡ‹ί„.osΝ―πθ±ZςtLiŠοUΆ›Δ­Z|₯|α~γΟŽͺΗj…tΉΊΜ€o‘rΤ|»ι›ΩΫ„S½6zΏRωypΟqZL™Ϊ >¨ΐ7<ψŸJίήψ)°œ i‚€ΥZ€όάΨ«c_ύ–dRt‚Παξ=ε3aoUF‰ŸBm Μdn$Μ1nΕ2™πΝ—5ϊΟΫυ.Voˆ`ŠfΙσ±•4‹lš›pϊ©ΧI BZ™ehϋ$βηQιϊ¨Šήa\¦ΉNO6°ό‡Ωƒσ¦•Ο€`ͺxΌ\@φόgψΝκηΊ/$Θ@7£:wJ\@Ύ‰ΈU/,H||{ρΊ$Sοu²–žr‚’:|Ή}BοΜ>I˜ `Ο;π²sΏ&! ΡD\&Ος™”}3X@ΞφΧ K c¦ςZm»IΌ&ίxΗ³¨γϋJMεϋUϊΝRϋνžEfξŽχΟ‘ “Γ—Υύ[Ϊ“δlΑΗ]Dm·ΐ„pΝ™ •‘œ:Ž8±of:|2Jψ0Ψ!oΜΎE\©,D!>ͺσΤ9Έιμ²ή†NRt:P˜G¦Φ-hw¬ανKC¦ΰIQΉ(Œ#ځ=Ο ·œ΄2Ή%°}ΕMΚ#Εtž·_Α†NŸB&&κ‘Ÿ‘ΓΚκ`sϊΝ_Š4‹ιQβΨδšY‡œU6ni93‰x| OD΄hwΨC”@2‰ΠΒ΄/$ΕD §DbΎ±Θζ%Όˆ©_"“œ€3'8nβξ;bU”ώ$Š_₯ε…€SΡ'CςN5cILjΊq‡Σ•¬{Αƒϊo-|νkΡρ‹™Ω+aίs³W¬VL¨Y) 1TiΟΞόιCœνϋŠSœΰΎ'ΚhOϋ=fŽmxμ Θ"!ΐd]4Œ`ε}ΒΎήΏ Σϋ½θ>ό_ψγy Βu‘ƒδ‹N•uS<¦’ŽΩόΛIZj2•iZf`–’δ&ώ.„Η‰/r<%¨ιΏ²rˆoάγ™βραfJ-§ eίξ€―!}?Ρt°ΜF:ϊpϋ¬Σ6ވAq»E€wD»mά<°Œ Δ ΠΩ ~ΪΐEαλ€»kωο‘ν σEMΦ9ˆ«”€¦&΄g„&υm“ϊ‘ΏρΖeQσ+Œμl"­Μ:N+cΔͺUi sEO–4KΪ¬Ϊ‰šυN:I^r.ŠλΛΘV3K)Α2q£½ά<‰Ϋ€›Fώ5ΘXό`ˆ9HΒ*Ν³ί†ΎΑW`¦½FΛ#4:#›²uHm‘Εέχ/$χΠ~AfQΆ(^GQ9jπ|΅DΗVQμ$υ„ρX)ΞjςF ͺΖ—ͺq‡‡©Σ‰šΨ`BΩ–—π,w.’f–Πf}'·YίT„…ό+I.³_[Ν»ψ– ήΆφiΊb€‡τΫtΰ°εb‰qμUIΈ‹WβwŽ€Ρmd”všpcΤΎώ¨MQ€„KU8ŠΗTWΎ!εJ*99˜Ώ„fG~ƒΤ;ΣΈz7/ W“φWšΡzWP‡1-nχ+Α( ™ΘΡ‚Ο΄ *ΫmBψŸ€ρLΝX­΄ž3γ[(―Mt”~»Θ‰¬hse΄"(ωέώύ•ΛŠeL9u‘a:+₯rG•ŒΞ}θΆjaP²Θ¨7Νxο -qR0ζӞ ΞΎL ©œž&Q‘Ϋžζ‰qžxšπΦ)aaΜ&šWΩΘν(o2Œw^)ΖΊβbσΧaυ ,Μx¦`ΰͺ ύ欫 q@ e°=Αί οŒπnJiύ;@’F¦ω'„Y7?jπΐOvψψ΅m{f~LL4/7½ΙΟ&v¬¦εiϋ-”χ’Θ8Δύν–0mο€ˆiΛ cŒ!―τΙ «μa[œk—‘œL1ŒΉ₯8qτΈΎΈ‚Ω·ΟE&)ƒώΓΨΪ ?R α¦Κ7πPϋ&d‘{ΠόrŽξΓ·cΙ0rgFp΄I!{]V Nœ("O¦#ξnΨλΞ…€\MΫqjέ^ς`ζΟ0ίαF₯[Έ1ds±Ÿ‰ΏΑΛI+CΦ½TEX™>†Ο£ΓΏ€*diώύΉ΄FϋΉΣ€iEΠ΄fԞ8ρ=ΰ.¨nša΄’‡’ΨΥΙ2’G¦μψ=<™c€!›pk_~%Ο5"•Ξwπa“Rpμ=Br%«£}•'ήΓ£b^V&­Fsao5/έΎδ>tυV*]ψ΅Vο‚γΙlr˝“!δŠνΝݞiٌJρΰŽxϊŽΌ΄ΘwΑ――4m¬ΆOϊΜω KπE"Ζ,YσJPZ’‰§ŸGΰ\Ÿοί• =ί@ύψ@rA“ηž‘'ιύ&Osφc8PβΒΩšΉ3W"~ϋα,_“%¦πβ“ί½”ΪE睴£ή=]j.½›νΨxαKL&cξ<2uγ•‘±ΟΡΗJ¬β1Υ…έϋ>„•sglȁ£κϊωΜ½‡\Ήσ8 γwΏ|1―κ6ζ‡μiψn'flL+ž;£ΓΪ8+Ήƒζ|*žΣψΦ),­\ aζ8v—έ€ ΥDειFλΏQ+Οxu|`ίBaRZς―Iή‘ζE(ύv›p]€υ»F…w‘Θχ‚id‚:»!θ’ eρ­J΅δ\uξ<ΪΝkf4z#ΜΩfAˆ!έgΘΌ#ΰDiA-Žχ š½1™’Γΰv΄ι—aΝΨψ3hfλ₯ΒΉΡJ4αXΉ~-pw ϋNω-·hdŒεsΑOO’Ν=δ£dδ΄)Š\+ΏujOcXX€eί&P—»Γ­”:q¦_Π~€qη³P ©dυβψΰ“Δύ§‘r5ίnœ‰ŒF—ŠLN8!†σ«αό—~Ίm[ρOۏ‚_€¦ΝΥY’γξC‹}GΌψ λΙŒΔ΄Ÿ¦S’#1'άkΘΑ€τ„ϋ―οRˆt=όΖΫΖJϊ$η©«’¬‹ξ˜`ӝ%‘p~>2ψ†=ΤZ=22ΝΘ6“C]—Άœz€\¨ώy ϊΘC§=Ι0gσBŒwΈ½ƒΒ»ζ½>*%φύΆΥ½^αΒ=q†ƒΝaΖ1ςVP»}œ»=τΚ³θ|*bΌά~œΈΗ>ZΏV8¦ΊhAbsΛ)π>άθ6g‹BŒg‡Οϋ°εͺ1z{Σ9ίςϊŽŽ ZαG>ˆga =Ÿ'όgN Si©&•Ό.β7‚pAGηʍ΄0B¦»sSS7Ws56ο>.Œ%ΤvœγξοΖ™>ΎBΖ€Ώ3©Ζ‹o@u#\Ζ7žEΨ·PΐYV,RόνΞτ½3QMΗ1טˆχβο•ŽΠΩc†ΐ΄Cΐjo£$+€―>ΤζΩΒ ‰\ZPb[ˆ9ZΠ*iW[ΰA” ²GHb²αΑωδΡ‹¬― žCk[°*#BFφX!ΨΚ$V»qι–P:šΡD©ΩΗj³BŽ•μfο;vηIβΒ8MΫ [ο~Ό7–(γΜD§¨.Ό3sζPοόNs"k‰ σΉtW(]kδt‘ςG{n!q‘‘£}_v‘Ά5Œΰ@Δ8₯c*₯£w˜7¨›)ο¦Ε‚9WhAΗe’•½ό™[=ϋνδ,Εί67zΨμ"nφρ,,7έγ‰x/bj^o:”Y…§5'‡γ—όgΕ\uɐ‹ŸωN΄:/dΈ:ΪΰςΫβgοFΝi©Ζ‘!yr‹²jΚם΄8΄Ίό―Ε•Aζpp6+i7₯ι¦ΠϋΞΈ1›>uŒΖΙ_Ϊ#γ>2ϊαέιKυΝ'‰}‘&n,‰V+œ‹ό”»”t]ΚΡκ κχ~:γ½κ$‡$ ΩPY”1•)z‡UŸθδ&vΦBϋ­8Bgt’[“κ†ΧΔƒƒ‡πΡ!yΌΡϋ―Zx#Žgj έ¨ιΩΈwΛ2LάΠ±Œ †ΐΈ°nΑ1rI-™tD₯ηνEνŠhί’–2ύ#fΣΏ‡7τޝ ±*œUμΰ©έXW=ώ==7h¬FŠ`γΊb¨‚2A&vΟ`L"&X‹²B6†eΰ»Λh ρ26ε ώavƒ70«ή΄D [Φ#ΗDζ€tbπ,Ϊθ7κΎ„Σ‡was<ަeSS‡ΧγŞ 2ρ"Ης1 †C€!ΐ`0S†ΐίOYΙ¬`†C€!ΐ`0 †C€!'l³œΐ±lS‡€©¨›ž)„y^ Ω+{ΠωΖΏΠΉ³]uκjΙJžlLeυψg-Hς΄«ψΠωŸhheύj²Ϋ•Η`0 ₯0AF)R,έ4A  ΅ά!RΠ!έθΏ+ͺnΐιdθK§ίΔ‹Ž€C₯δρώšΚ°λ΅r*œ[€€$|ΣΉ•uώS|€Υ€υeΊy.lΫvβρ{oΕ™·P'zŠγΪm#΅Ϋ`’ΫM¬ι)ιtŽYBυž΄ΧβZW1šεV/,)C€!ΐ`0±`‚LlŒXŠi„€΅z₯(Δ αψώ}hληθ 8a±ε>:|R£w!q@A&ύNά“a”y¬I[h Œš΄α)άΠO3³ξF΅‘Χδ@Ήvγž₯%ΊέT ΩΡP ϋ_³0ή<υx>0žŠ‡·’Ι!w«ͺ‚$KΚ`0 †ΐ"ΐ™ —‘ž@†zπΛ†f/–Ž η‘xΗ’žK«ž±'6;ΊpΛ·@Aυ?#Ÿ‹X†š΄κ9™ρ9€6 l"ιYDL'₯Φ.t΄q{±ψΡ°άΐ9Z½eRJf…0 †C€! ΆΩ_=f,Η4@ΐύυ!BŒŒ­1:Α=‘&Έ­­δώ·―Δ’­&mB™œΔ’’—πv‹ΎpΗ“‘εa0 †C``™I›•@’fE'6ϋΡ°η –šs0―{νoΤakˆS€"lΫ΅+ξΙ€Ž?ιΜ‹αΑΟπNΓF4N–E‘₯ ;_~ 3 p―ьa°ηOΨΉ‘f\‡?ZlΫπrωCΘΠsΗMz1Τχ1ώrΙ€ΕYΙθΪW'w †i-Ά-ΔΓ#~z?ΖIαŽ”šS{»{Ό3‡ΟP/ήΩ^І6!EvΨT€dΟyόr]eρ ;ό ζ9c8½ϋgΨμ”τuq΄±82Žα;±`φΓ`0 †ΐtC€id¦[‹0~’"pΛ?̎/Eκ2s±œ„˜1·›¦π€FgDae-*·΅˜*pΰX- ³!Ζ=Π4Π³Qκ8Š-E΅ ό΅Vγ½Χ+‘Cw q:ζᜠha4η£φ˜Ά8‹6Ωκ±}S‘(@x0<<a²27 ƒQζ jxP‘VΰaΐƒΧM<†¬\δd†ϊA“šΕ 1ξα!j B…'kΒn3τ"Ι ‡Α˜ƒ’jι‘gͺXάŒTθIp»tNbΖΩΖΙsR"pΚ3 †C€!0Υ0Afͺ[€•―“΅ ki†ώϊ΅ω<8³Ώ`Ε -δ·Ξ›·₯ŒφZ2HYαξΕn{ ρpή 8ήG3nθ±ͺ²^J:aΏφηΦ‚Χ=xϊΡςΒ βχaQΖ„ηž~€wLΰκ†#οa>ŒΗϋΒΦC ΚΣςp΅+ ˆ‡Ψ}ͺ?,ώ‡^tvP[¬ΖΓΟμD'ΝP[>·EHβjΖοΟ ρΧ汁rι3…‹ψηξήχΡ zMŽ·G9y’ΒΌάTXKž³Ώ †C€!ΐ`L=L™ϊ6`Δ@ zΟQœC ί|ώδ9˜3/zšŸkηέ…Ή΄JξΝ‡ΒπŽH‚‹)yΕς%MO BΠzφTfϋbόš49λ₯ Ϋ+“ŽdnξMΣς³'ε…t ΘM₯‰t²(EδšrωƒBς,ΡM΄ί Ζ΅αl ²DNˆQΓƒŠ΄>Ζ@gK„p<ψ£έίȝ8tt| χ“fθΌ»U:κπΗΑUXIžγςΦWm°=e%½ …‘±OςΊ=Ž66ΩξGVšΤC†ΡίWΎτ3Κ †C€!ΐ˜r˜ 3εMΐˆ…@σζhζY°γΠvšί“‰ΨΪΗ§ΈςŽ€βžΝ™2ύώHΦJΑξfα:δςEΈ’βfc6ΏομήF‚ΙHmœ‚££έ‡ΠŠ’X j‚#μ$θD%˜ΔEˆP)EπΏΑ­ ‹τέΌύ^V–ηϊ0Jp XŒ|\οϋοBTlωrœ¨mγβU+` !Σ{ω46Ώ8q²l—μ’!ΐ`0 uH³%uΉXj†ΐ” Π‰wxΉk²ΔIς8˜ε7“λ0†―?jDS›rZ£c’p‘ΐUpΤ΄|CŠ£Tσ—X€NόΞ΄d‘ΡλŒΜόό™ŠͺP΅φp/οΨπghάά€±ρΡβvΩ^u2 £C'eA jϊ ρ@~’ΩwςΊ_Šΐ -iήƒiΙ|As¦I’θΩt=Oηΐ¬Ν@YΛΛ0pΥςφγ]G@CŽ£%1¬ο&Hˆ± α`=–’iδXRܟ½Υ«p=QiŠ`— †C€!ΐΈ`{dn€FΌ™ͺπ݈r!"*.‡ΠΕ{ΠΒϊΒίώ )΅¬φ*i†τTψ=Ϋύ5‘››’OžˆžvW½EΞΊ ψ}p•Αφ@Ojθ|gˆ†!}q–ηζ"—ώ/·ζρ¦g²r©nέΌτ£Α?Ωα£kΫφMόe)ιF *vώηy:¬xf‹―PkυpO,ε‹€ MΖ2Όκσo`AΥςΡήK_ψφΩιΫπΫϋωKcVωy#«²£p ‘Βίq΄±Dfμo‰rΏœ Γm:h΄Zh5hgGΣ'Δx=C8sΖ%£ν»ιpΰ• ဴ)-[’ƒVnυ%Έˆ‘Φε¬Αζ–S‚»e]*ΜΩ’γΔaΗσh³GgΙ?ήα+ΐs©7HS!DΉš«±yχq q ­žbάύέ8Γ»–φeη/Τπ &mGΓμόC/_†65“°%!†p΄Pc£~mΗθuQ"£σfά^2³³E!†s£ύΏQγ;ά2€w™ΤρZzvω8Γ`₯ΆΉώd₯C<€ρ’$]γU[…Ζ{9±k Β  ν‰J+ΡgΏ †C€!ΐΈ1ψ;ͺΖίUa΅Έ) —Ί‡φ–‹«πB{[νt€eΈY¬rD,E6,$/Xž+W0πe::#1ΚIͺLiAIΩBπ;DHˆiv†j‚‚δπΰ½Χ‘Λ>γΖΡΪl”Tδΐd±`Ξ2Qs™°σθ^δΠ•žύvl‘’”ςΐV‘ΦR„²…΄ίs8[ƒφσˆLώ˜,°ε.„VλΑη8Ρ±)lpžΨ„L’9z[k©D"V[«χΐA$BΛ3«Ρ±|JvΕ`0 †ΐδ#ΐ™Ιǜ•8NLExnέƒψώνs<{ ~σl ·b?Ξr¦ev:/ε½ΧŸδΡtχFAi]x6M6μ¬]…ώχ[q€©•φ٘Pέπž\žAιgψkz* Κ7‘ΠΜItύ؞·^Ύ?&<*QŸšlΫπΪΣK0›œ9|σΥ§ψΓΑέhncRLTΠX$C€!ΐ`0¦&ΘL!ψ¬h†€jŠΆf ™2„VϋjDTDY·ΰ„cxžŒΌ”ΑS»±:tο<Υτ½³·CI–ίkAΆcύfΩ6ιΛ<γŒ!ΐ`0 „!ΐ™„AΙ1¦EΨ°9¦tΜΡi1‹'χ¬υ@ϊΙγ₯Α€s³ψ!ήn΄¨θξ E ΄€ “•Ιs φˆΝ·χ$ο‹jύϋοΥdΨ ™, `„γΩ™¬t„O#~ƒΕγg€ΚGβZ9Y<E˜ΚGDΈ]ΔIsά+βψ9Ξζ„…Έ#ό<‰Ιδ'@­EΛf%!uH4„ΝΈlaΡΊN¬d&α/NOΟq'Βϊρ©“τ·šρβšLf’˜ηφ2kxN&/Ήζ<Žmιi‚ω5΄'%σ}BQ^tn©~bζΖΝ3‡=›?ΛΙŸπyfeΊΗΜ3›ια'ž›θ?Ο‰/†ΈN#lžω!βϊ ™ž‘σΜδ/¬%H w―›ΐΧΜM‹œηlNDΰ0ΐ8€c_Β@4XX €>ΘλΐFPJΐN°T‚ƒΰ¨ΗΑIΠ:Α%pά·Α=πΑ0x &ΐG0 A"CH R‡t #Θ’CN'δ…@ΡP”q!΄Ϊ•@₯P%tj€~†ΞB— λP?τ„Ζ wΠ“`*¬ λΒ¦0v…ύΰ0x9œ―‚sαBx;\ΧΐΗΰVψ|Ύ αΧπ$  $Pς( ”1ŠŽrG‘bP‰(>jͺUŽͺA5£:P=¨;(!jυESΠ4΄1ΪνƒG³Π«ΠΠΫΠ•θzt+Ί}=ˆž@ǐ1*#Œ=†‰Β$ar0E˜rL-ζ ζ ζfσ‹ΕΚcυ°ΆXl46»» »Ϋ‚½ˆνΗa'q8œΞηˆ Β1qYΈ"ά>ά1άάnχ /WΗ[ΰ½π1x.Ύ_ŽoğΗΰGπΣi‚ΑžD`ΦvŽ:·Γ„i’ QθH #¦7+ˆΝΔ+Δ§ΔχšvK%8ω'$I J|&Ι’ Iξ€X’€΄TGΊHzDzO&“uΙ.δry;Ή|™όœόI’"i"ɐdKζIVIΆJHΎ‘"HιHΉJ­Κ•*—:%uKj\š ­+ν.Ν”ή ]%}Vϊτ€ EΖ\&H&]f›L£Μu™QYœ¬¬§,[ΆPφˆμeΩ! Š’Eq§°(›(G)W(ΓT,UΚ ¦PK¨Η©}Τ 9Y9+ΉΉΥrUrηδ„ς(y]y†|šόω“ςχεΏ(¨*Έ*$(lUhVP˜R\€θ’˜ X¬Ψ’xOρ‹MΙS)Ui—R›3e΄²‘ςRεεΚW”ΗQ9,b-*^trΡcXΕP%De­Κ•^•IU5UoUžκ>ΥΛͺγjςj.j)jejηΥΖΤ)κNκυ2υ κ―hr4WZ­‚ΦM›ΠPΡπΡhΦθӘΦΤΣ Χ,ΠlΡ|¦EΤ’k%j•iuiMh«kh―Σn~¬CΠ‘λ$λμΥιΡ™ΥӍΤέ’Ϋ¦;ͺ§¨ΗΠΛΥk{ͺOΦwΦ_₯_£Χk@7H5ΨopΫ6΄6L6¬2ΌeΩqŒφυ/Ζ,Ά[Μ]\³ψ1ΙΨΥ8ΫΈΙxΠDήΔί€ΐ€Ν䍩ΆiŒι.ΣΣοfΦfifG͞˜Λšϋš˜w˜Ώ³0΄`YTYά΅$[zYζYΆ[Ύ΅2²J°:`υКb`½ΕΊΛϊ›­ ί¦ΩfΜVΫ6ΞΆΪφJ¦o£_³ΓΨΉΩεΩuΪ}Ά·±Ο²?i§ƒ±CͺC£Γθ½% KŽ.rΤtd:v:ќβœ9 5œ™Ξ5Ξ/\΄\Ψ.΅.#)Η\ίΈ™ΉρέΞΈMΉΫ»―wΏθςπφ(φθσ”υ χ¬τ|ξ₯ι•δΥδ5αmν½Φϋ’ΖΗΟg—Ο†*ƒΕh`LψΪϊχνφ#ω…ϊUϊ½π7τηϋwΐΎ»žκrΫ‚@#hwΠ³`½ΰUΑΏ,Ε. ^Z΅τeˆyΘΊžPJθΚΠΖЏana;ž„λ‡ Β»"€"b#"¦"="K#…Q¦Qλ£nF+Gs’Ϋcp11΅1“Λ<—νY6k[{ΉήςΥΛ――P^‘ΆβάJ©•Μ•§β0q‘qq_™AΜζd<#Ύ:~‚εΞΪΛzΝva—±ΗJFKG““v'%;'—'sά9•œ·)>)S¦RƒRλRg"ΣZριqιgΉ²άTnw†ZΖκŒ~ž―ˆ'\eΏjΟͺ ΎΏ6Κ\žΩžEE„O―@_°Y0˜ν”]•ύ)'"ηΤj™ΥάΥ½k Χl]3’λ•ϋΣZτZΦΪuλ6\οΊώπhCό†<­ΌΒΌα|οόϊΔ©-0+(-ψ°)rSG‘ja~αΠfοΝME’Eό’[Άόύη‡Ύ­–[χmύ^Μ.ΎQbVR^ςukۍΝ¬ψqf{βφΎ6;μΔξδξΌΏΛyW}©LinιΠξ€έ­e΄²β²{VξΉ^nU~p/q―`―°ΒΏ’}ŸφΎϋΎV&Wή«r«j©V©ήZ=΅Ÿ½ΰ€ΛζƒͺK~9Δ9τπ°χαΦݚς#Ψ#ΩG^8Ϊσύ§†ZεΪ’Ϊouά:a}H}wƒmCC£JγŽ&ΈIΠ4v,φΨνγΗΫ››·Θ·”œ''^ύχσύ“~'»NΡO5ŸΦ9]}†r¦Έj]Σ:Ρ–ά&lnο?λ{Ά«Γ‘γΜ/&ΏΤujtV“;·γ<ρ|αω™ Ή&/ς.Ž_JΊ4Τ΅²λΙε¨Λw»—vχ]ρ»rνͺΧΥΛ==9^λΌnύμ ϊΆ›67[{­{Οόjύλ™>›ΎΦ[Ά·ΪoΫέξθ_~ΐyΰ;Wο2ξήΌx―~ψύ‡b²Ž>J{τφqφγι'ωO1O‹ŸI?+ςΌζ7ƒίZ„6Βsƒƒ½/B_<b ½ώ=σχ―Γ…/Ι/ΛGΤGF-F;ΗΌΖnΏZφjψ5ουτxΡ2TΏΡsϊO—?{'’&†ίςίΞΌΫφ^ι}έ«]“Α“Ο?¦œž*ώ€τ©ώ3ύsΟ—Θ/#Σ9_q_+Ύ|λψξχύιLϊΜ ΙgΞJβpb"οκ #š‚rβ²9½Ύ˜`L€ 0&ΐ˜`Χ1}ΧqηrӘ`L€ 0&ΐ˜`q7‚{~zO Ξ|‹*kn€¦‡ik:λ–γNSώTaGu£_ΦτlZ]ˆaθ‘OΔΕαΛϊWPVQν—±?»…XW]„―ή|K·ΦχΗ_ΫΗα+³gSOΫτδ ί>Λ˜`L€ 0«Šΐu&ϊa³%K€»ZλPο'`Ύ•uRSŒ°Έ'Pž++ϊ νXπΐX\<ς'¬XΏη ήΙ§iρ.€ t~̐< γR,0hj8bBΊf/ ›ιVLLMΕΙα Q0ΦŽm΅(L3ΑΩPƒΌΚώΌΪ- DχΒ fΟ¦žΆιΙΫK{ψ4`L€ 0&ΐ&Χ‰θΛΒςuOβώμTΔkθv4ΐ EvΌλξqKgέ=δΊ2›ΙΦ,LΞLƒϋ–3WXτQϋ%,n₯RWe•G1δ<gwL±Δ#šό² Šp½γ₯Nž9φcπɁχ°Η_±T7Ω–#ŸŸ€ςχw^¨R―l91ξγH³gSOΫτ䍀Qœ‡ 0&ΐ˜`W k_τ₯aΛoΓ*~§Συφ–“ψQi)HL Gν&œΟŸ‡:-πžnνήΩn½tY*ΧuΉλŠ”ο-΄₯y9ήέ€­FΤΥΘξΏ;ζ>θ‹NΚΒΚ-ΏDΎ5Ρc.Ρ:sθ…βΗπ-G*}:Ν“-¦ŽΉΣ`€άνοcύV·gL‹Ύ‚ΖcΥΗ}hRԟM=mΣ“·mγK˜`L€ 0&p…ˆΎ’•›πXN2Ξ|₯ΛΆzͺU²j ~œ}+Žνxφš_γσ±α§S ρθv»ΰΊΨ‰Ο>όΚVx―— `ε¦yΘ—£/θFgΫ§x­jΦkLJyi|Ν–ͺ ©§»k>CΞ£yΈέl‚Αν†σb j_XŽΚšaXχœ,ψάΗ°ριyπ +ΐ†7žFfb[…Ίυš±bƒΗ’jΛNάm•ΓέΞ6μ}±+ΌΛΥΝ*Α†_όRH˜PΉCΪώ† ₯K ΅MΒ΅/©T­3±kΧ}RySΏ\Že~υȚΏε³Θζ6 «q'Šμεϊ)οιE+ρμc9HγξŒCa";ν βd\:²ΣΜ”Λ…ΓΫW£¬Κ[kasΉ°ι’k(Εα^―(ΕF &ιDήDθκς’ο"έ’(……Ί]Ntœ;ύ―ώ•ΥrYσηΛ‚Ο݁ÇΞ#3;  οβƒΞΡΈ7{hJΒ%YδY%Ι‡Cx! ˆΰώΝZ€κ_~CΡ…_|Λ4ƒ$ °ψή±Δό8ΦΞ*“ο![ Φόθ»?v$LF£ό ―s-Ÿΰ•ͺEPpAoΡσϊXv.žjΒε[­°ZδϋΝΩή€?>[ψΌιΒ]φ4™#}6#ι Ω˜lκω~ˆIΨ(`L€ 0&ΐ"#p“ΆΤ΄1H4%βφΡŸS–Ρ£`2™1bψΝρ"μ(Ÿ‹ΜT!ψHΐuv’μˆ‡1ьΜόιg™&₯Οǎ}εΘϐŸ“ςΊH˜,(¬ΕrŸΜt]²£Μ‰HηΛ ‘¦>R^d?Ω „CΆpuΓ²ι²ΰ+²―Δ†M›°‘κωΛQ)rqτD›¦"€‹R³1™_Σ)7-Θ/+ΗόtM6›o<_†L|ΚΥ#‰£xXΘUΎ―E𬠽ˆ8 Ž[E›1T(3)₯}qLp~sΰΈΆ„αI0S3]k1ά§d±“œšK’ &²at g€Ω:Y|N§‹φγ‘ωΘOQ(2+)αζ$ΊΖ ‹Ε"½Μ–QΈ-°h5{ğŽMxΙ1‡D†Μ­³ƒξ‰8#Μ)(|δAΫwHόPr·όe‹ώ'm·~+ajΞτ+βε³/Κƒ$:>ΔZ/_€χoύz: κS ¦-~Φ{OΔS…™tά„Ο>πόi`³=ˆ)ζk6ηκ€gΘ C<;MΛΖβ΅;P’ά“zϋ8•žWq?₯fdK‚O~ήθή7[ιy{τ?HίR€ϊf=²g3Ζuˆ¨κΊΎ"²Θ™˜`L€ 0&3’Ο3ΆΖ―HυΈφ°ΝώRΔw3Φζδ"??SssΰX»΅»χ’I“ΩQ^„9ξΞ&lvδ OδΝYˆw›;)— ”­Ρδ¦MŠz”†šIGxw[%rrs‘CΧl{η7~…G¦“Ξ~ν·Ύ™ŽUΥ{±xN>23299Ετ#[8 ƒIωΌoΒσUŽ©yyΘ]Έ mRAfάϋˆW:~6Rΰ‘«ΫζRή©ψ ‰SQ[Δ§βkΌ²/bυUx('GjΗβν RuœM5Θ₯v‰W1, pyzkr«[φΦ ρ»˜κΉ»YH(r(5οF^ή3hΊΟ0ΌΝC]U)•GuΙq AΞ|LŸd)Β·τXX˜!evΆ@ΉΈ'¦ΛχΔ†ΪΓh8qΖcθ|‡Φjž’’Ϋ€~ςœΌYvXθυЍ™’‘ E_:qδί =Nήͺl3 ¦H£μβ)ΥΌΞΟϊ­K1Λλ }uœμΡΌΤ)ά9Βk%DlŽ΅:‘a }Y΄Ξ 7–L9› ΧUόκͺ0έqλžxwRmΌΫ5SΨξ4ρΚGή†₯·fy(gdΘ^ΎΓ;·HΒΩ‡I_ξίΖ­˜υk+φ;¦Ι^Lw6?α7‘(ΔFc1©βŒ )ΑδΞ«³]_žφ±ZWwΞ© |εs&‚Ύpˆΐ¬6K―ΟζΤA[ŸΰΫϊΎ‚Ϋΰ£L€ 0&ΐ˜8’o@;ϊa»Π…5ΟΔψΡ#i ‘Fχ—š1 Ž-;08wΆί 5Ϋύ{ό•\<ώ—ƒp uΎϊJ‘@.’HάbqΒ•\Ύ€™ ³γ’&DT1'>Z­9'6ΣM,™£_Ζsr.υb­L/Ώς’Όϋ ΣΉ$L: "χAΔΓΊ­XD/Phεήηηΐέp§nˆ ³S{Y[η °4jώ’r(oηalτχςω”§οώ΅Iς>M†Œλ6ŠΏ Τ”Ž5O“ΰ£}Mhσ·χq€ω Ί/w=ZB-‚„&ΛΧFήΗώOZ(―Z§H>υqˆΔ’'ϊxy„ΪˆaB©Χύύ ^ȟL€ 0&ΐ˜Έ2~b54Ÿ¬©σ绬A‚¬‚kY_₯σTΏN:J–/Αc32ivΞ‘˜T”Žj1{aW7Τ‘I$H œύp=6sάZξυˆΆς§[/B:ϊξι:δΜΰ.οnιH„o ψ’œf£ c&ьυ²=qυ¨ŠνΎ,y=#αΰΙ¬Ωπγ¬9γΩL/t`ΙL σλ‰ΓW-oΓ^‘ςφdρΩHθUΥϊdχδώΊοα€½ξE膨sλiY!oΏS ŒΈ›δΏN^yUaοs`4&c²/ϊ€ϊ„>…ͺkpw’ΕΑω高>―*xvςςΝΚ”FoβΨkƒ‹ΜΎάΏ+±bŽμv»hζWš­ušƒ&v9: Uέ—^€ ’6w‘vυt¬Π[9σΗT_ED©y€}lHΓ”UYY&{έ qž`fυœψ ΫΗ}α 5ν~Τ!lΫόκ6o_Ύόμσ.`L€ 0&ΐ’ΐMώ…w^–“3ΰ™χƒf΄‰ρrώΙFγh,Ÿ75bkΕ[8' )3`ˆi˜|ͺ~ŽJœβa[Έ.`,‘­ΔΗ‚―™ˆΆh¬š('~€ŠVΏπ†$ΒLΦΨ_» ;ίΨ‹Ή“-Y ΜΤŠΦ‹R#9kΎ—:,Ί'EΚήqΌή+"ε -h,Y}8kΟkΆ“­wδ4™ΘΜΜΐDα-Šjjυ8ζΊZΓ>r쬔Α˜”Π‡βDέ',œˆOCΩΊ>ΖΔ2+νή{₯dΥ&l«RΖο΅vKٞξa°9θq₯λ<½ZΫΗVο; Hj$‘/…ΖLδγ΅0ρŠ—ο^TozOΛ[Ίοί"T?/΅ΓΥ\‹ά©‹qXώJ»<·€eε4Μλ…ϋΊ:œ”ΞΨ¬Γ½bΦ£(€ψ”¬τ`·‘τΎq’UχΉS>c.Υ’Βφ±nͺΥ(~φ£aΫζWΕπyu~?ψΩζ]&ΐ˜`L€ 4­³L*»ξγfΈ ­΄Œ\Vνέ‰“§{B ϋ jΛ)€2SQόγ'Π֊ —cτν©0IŠΌη •k€ρY{±ΧA?„ΝΩ(ίΏσN~N‘“ HIa‘bΡΎ–έ¨\―quCMυsχ@ΥcίΗmȜBSγl9*h‚Œ‡ΚoΖΆΕίCšXŠ€|‹νmm΄ΌC"Ξ‡™ό$8πFl~ε}ΨO!1•{wΡΜ“4. δ<’Τ‰?·wR’Θ9xK«ϋΈ‰8§Iœ+χνE»4U?pτεςΐ±lκ̍tΉ»' αy4Ζ–ͺ‡q+Ι½žžxβ/κeΔΜηvΑFKSΔQgγ•Š€zΤ՝s¬΄4Dυα>ό‡ΣMaΊηπςSEςϊ~{*P=σΫRh©%»˜Δχύh+a° oΎ8œΤSŒžϋ—ΌŒ»Κ·Π$CY΄B²RφΤvZd-ِΥ[Θ/₯–’€iθ˜ƒΙ4žošcv6’+!Vγ½dBΎc/¬…'`H‡ιαtγύ—7-"|λαΤ|φ½αΫζ[΅πyυ}?ψZζ=&ΐ˜`L€ <OφΠ •ο6K5λΧ₯ ΑΧΩ‚¦6yς“Ντ]m§ΠI‘kb‘ρ”T+MB‚~½‹ΕΞkΧώΚw<Ν|™WΎΝ.RsF’΄`4Ω‚Ο-Ζ3Vcή]—€Prω +`\œ§z©μέ3¦Ν@υ*šϋsOЧOU–"˜Š‡fΝBήΤ©˜­,fή}™Κ¦δV§³”ΝxBΪ΄mk¬^ŠeΫΘK4Ν°f(‚ΟΥ†έ•O ͺNΉ˜>tqP/#ΞvF‡ΔΦ±3›iL€IΓ•πQ5Ÿ§a©=άE‘¦"ΉύΒ.½ν‘½–žkh½ΐd*ΟlkτΡ$*Κ ±Ύ’X·ΟLkΜ­G]%žΪπΪI쑍Φm€ΕΔMCq³Η0°qΡCΨP{LςψLβf•ŸΫIKxϋψΥίmΔ;Πή!ξ+΅~nΈ:ΫπξφJΜ,k 1α&yε–σa&N”π•’+Η°YΫ‘ΑJ‰πώ-Xώ$&ΣX<ρΗΐξΥŐ%.νrOo;(΅Τd-ΔΊωΒίΧϋ―Ά‘Yš©3)Φ IπΉ5Ο›z―κξcOάpΊH%Ϋ²ΰsβΰφ_b©g–%OFy£·>ސƒŸΥ^wυ<›θkzk›Ά–½δΥσύ 5ΛΫL€ 0&ΐ˜ΈΎF…ώ_°‚Σm…ψΘap]hCuΖ$sz– F%cΨ°xΈΪN zFɟUP„ Κ{αZ??ŠΊz―’=μ!›}*•±SΝ±γw[hΜ`Ÿγƒ”•…Β’ UIπm­ΝB/‡ …]G‡ˆ[q‹wαy=²—³Ψχ|!Zj΄pxψ{'j€ΘΫΉλ₯Ή’θk rKu”ΝϋWm­°cΔσsžŸšώ3°o©ΕZw°σΨ6δΟ;€"κ‹xκ‹οU£.dG¨΅‰μ3"+Ω›λΚΧ!ςοo­y‹ 0&ΐ˜`K €θΨjτ―4Ϋ‚*,/ž,―³¦˜r»έΊHNΘΈsς9Λ³Φ^Jβ«cBΐF’―²m5ε(ͺ -ͺ£ZvΫΚlˆο:‰uΕφ0‘Q-uΐŒ©’ΟΩTƒΌb5hvΐŠη‚˜`L€ 0&ΐ"cϊ’ΊE\•Ίυvδ―/ΐςͺΩΘ²ŽΖΠx ―£uί Ό”qΈΉ—ˆΙˆ ⌱!ΠΥ†Ζ–œm“ΎM!~VE(0½Χ4HYΒD{½Ά“ΫΕ˜`L€ 0&Π;λΒΣΧ{39Έ±­ά‚Ή9Ιhύ`3JW„_βγΖ"Γ­eL€ 0&ΐ˜ΐG€EߍΧηάb&ΐ˜`L€ 0&ΐn 7έ@mε¦2&ΐ˜`L€ 0&ΐn8,ϊnΈ.η3&ΐ˜`L€ 0&p#Έ‰\†bE7e…ˆ8Š,ύ¨XM/€'―΅7κ~4˜=“Œ§ώΨμΠ.tw£Bεv3&ΐ˜`L€ 0kŸ€―§oβ-@έ(z₯Ή~ϋωmςΉ·θ³/i$ιΛoΠ\‚ίŸτΊΆοψzpKzς·00G'&*Ό’΄EF’'Δ₯ΊGƒΩΨAΤ7Τ'ι!ζ|Tοέ$91&ΐ˜`L€ 0&pMπ} b^—^R_}ƒϋΙ£χkς -£ΧΕΫηΊ.< 'o/Սνi΅ώ„qdˆ’¦©ϋ&y3&οΡ`Φ£΄η_½Τ0>‚ϋ€|š 0&ΐ˜`L€ 0!ΰ+ϊΊbY()‰Χ/‘ £ΧU,…*OOήP6ΰψ! tŠrHYγΓx‘VŠiΊF˜Ε”gL€ 0&ΐ˜`LΐŸ@_ύv;F`Γ0=dJ <Σ ¬=CO“-–›iΌΰR…&’†uSA•s˜λΕΎIΘ‰!‰„‰Š~^r+@ΥAσWΐ‘"ΌCA|^TLIzκ+Ζκ=KmsSY―ΧοSaf₯$τ6}Ibš>υ¦ΩÁR²eRΌvΗ‰—=xz1r~&ΐ˜`L€ 0&p΅πυτik;’NK5όP£T–Έμwh―WΆ…πΙ₯νύAΞEεUŸ΄΄φίC§MΗIŒ Ρ7T^Ϊ“QάώˆaZλt.–ι rtΒH€IΉi;yα„θc!Eύ:•:τ«Ύd›4dΏ“‡Ω‚T›€%a§=nΒI'ΠNƒπnrbL€ 0&ΐ˜`LΰZ ZτυVϋ.ULΡg=)ΎΪή.МW‡©λΒiNl†ΛΫDjK8ΏŒ$ώ&‘ΛO,‘ &1α‰HΑBσ)uΊ’b/’H{&¨b•―ου(VLŠ"ήdοy;i,‘Yρ2žͺR_λ+_ω{8f+j©(τ4Ea¦ς¬ΥΩΟώΧσ>`L€ 0&ΐ˜`N —_ωaκsˆ\FgΔy;e#3“°zάί•€dϋDQ%IRlfΰ΅Ϊ#aσ’1σ€Hί£1†žDΛά£θΩ!¨žΏ‹ΖωMR^SĘΏώ$x§5κ3!π¨ΜΣb2%V=c}¬―j'ΟpΜ‘J–˜QΏύˆΒ9Υτs©!ΊKΝ‚g’€—hRŸ-Τίiž£ΌΑ˜`L€ 0&ΐ˜ΐULΐΧΣ§+|Θ˜`L€ 0&ΐ˜ΐUDΐΧΣ§ Ω UI­γLΜ’Y!Ζσ‘ˆ { Q0V|έ$ΈώŠ?cϋiفHι ±'‘‘¦’£·Ό;ΪiEh‰FοP_7 ±_Ÿ >¦P+p’1)‰κΥΆμPΪ|@xόD"6ΪIfτΦWΫ'€‘#J½1{Ž\΄ϋ”zŠVΡ_ͺΧT+Š΅^VΕ2}FZνυΌΝ˜`L€ 0&ΐ˜ΐ€ ΅%TIR>…&‘Ή‹$>'e(&8ΠDžΎb%\Τ%Δ—δ> RΚσzyΕ)jzE‹ΎρˆA,φνP€υν›υˆšHξΨ ι.κ³—"Ί„31&ΐ˜`L€ 0&pmˆžθ»VΪ=‘ΤήZ¨"'wU)­}Η‰ 0&ΐ˜`L€ 0&pπ οΌNιΣ¬j“Ι»΅‰ŸήaL€ 0&ΐ˜`LΰΊ#pγyϊ».δ1&ΐ˜`L€ 0&ΐBPέ^‘sπ&ΐ˜`L€ 0&ΐ˜Έf °θ»f»Ž+Ξ˜`L€ 0&ΐ˜θΐfλψθΟY¨!IENDB`‚milc-1.9.1/docs/images/tutorial_example3.png000066400000000000000000004313561474512023100210250ustar00rootroot00000000000000‰PNG  IHDR}Ν›7x ³iCCPICC ProfileH‰•–TSΩ†Ο½ι!‘%T)‘7ι-€τΊt•PB 1P, "ŽΰX:TΗΘ`C ƒ‚½NA@ ’’ςnΰfή[ο½υφ]ϋžoνμ³Ο>'χ¬υ@ϊΙγ₯Α€s³ψ!ήn΄¨θξ E ΄€ “•Ιs φˆΝ·χ$ο‹jύϋοΥdΨ ™, `„γΩ™¬t„O#~ƒΕγg€ΚGβZ9Y<E˜ΚGDΈ]ΔIsά+βψ9Ξζ„…Έ#ό<‰Ιδ'@­EΛf%!uH4„ΝΈlaΡΊN¬d&α/NOΟq'Βϊρ©“τ·šρβšLf’˜ηφ2kxN&/Ήζ<Žmιi‚ω5΄'%σ}BQ^tn©~bζΖΝ3‡=›?ΛΙŸπyfeΊΗΜ3›ια'ž›θ?Ο‰/†ΈN#lžω!βϊ ™ž‘σΜδ/¬%H w―›ΐΧΜM‹œηlNDΰ0ΐ8€c_Β@4XX €>ΘλΐFPJΐN°T‚ƒΰ¨ΗΑIΠ:Α%pά·Α=πΑ0x &ΐG0 A"CH R‡t #Θ’CN'δ…@ΡP”q!΄Ϊ•@₯P%tj€~†ΞB— λP?τ„Ζ wΠ“`*¬ λΒ¦0v…ύΰ0x9œ―‚sαBx;\ΧΐΗΰVψ|Ύ αΧπ$  $Pς( ”1ŠŽrG‘bP‰(>jͺUŽͺA5£:P=¨;(!jυESΠ4΄1ΪνƒG³Π«ΠΠΫΠ•θzt+Ί}=ˆž@ǐ1*#Œ=†‰Β$ar0E˜rL-ζ ζ ζfσ‹ΕΚcυ°ΆXl46»» »Ϋ‚½ˆνΗa'q8œΞηˆ Β1qYΈ"ά>ά1άάnχ /WΗ[ΰ½π1x.Ύ_ŽoğΗΰGπΣi‚ΑžD`ΦvŽ:·Γ„i’ QθH #¦7+ˆΝΔ+Δ§ΔχšvK%8ω'$I J|&Ι’ Iξ€X’€΄TGΊHzDzO&“uΙ.δry;Ή|™όœόI’"i"ɐdKζIVIΆJHΎ‘"HιHΉJ­Κ•*—:%uKj\š ­+ν.Ν”ή ]%}Vϊτ€ EΖ\&H&]f›L£Μu™QYœ¬¬§,[ΆPφˆμeΩ! Š’Eq§°(›(G)W(ΓT,UΚ ¦PK¨Η©}Τ 9Y9+ΉΉΥrUrηδ„ς(y]y†|šόω“ςχεΏ(¨*Έ*$(lUhVP˜R\€θ’˜ X¬Ψ’xOρ‹MΙS)Ui—R›3e΄²‘ςRεεΚW”ΗQ9,b-*^trΡcXΕP%De­Κ•^•IU5UoUžκ>ΥΛͺγjςj.j)jejηΥΖΤ)κNκυ2υ κ―hr4WZ­‚ΦM›ΠPΡπΡhΦθӘΦΤΣ Χ,ΠlΡ|¦EΤ’k%j•iuiMh«kh―Σn~¬CΠ‘λ$λμΥιΡ™ΥӍΤέ’Ϋ¦;ͺ§¨ΗΠΛΥk{ͺOΦwΦ_₯_£Χk@7H5ΨopΫ6΄6L6¬2ΌeΩqŒφυ/Ζ,Ά[Μ]\³ψ1ΙΨΥ8ΫΈΙxΠDήΔί€ΐ€Ν䍩ΆiŒι.ΣΣοfΦfifG͞˜Λšϋš˜w˜Ώ³0΄`YTYά΅$[zYζYΆ[Ύ΅2²J°:`υКb`½ΕΊΛϊ›­ ί¦ΩfΜVΫ6ΞΆΪφJ¦o£_³ΓΨΉΩεΩuΪ}Ά·±Ο²?i§ƒ±CͺC£Γθ½% KŽ.rΤtd:v:ќβœ9 5œ™Ξ5Ξ/\΄\Ψ.΅.#)Η\ίΈ™ΉρέΞΈMΉΫ»―wΏθςπφ(φθσ”υ χ¬τ|ξ₯ι•δΥδ5αmν½Φϋ’ΖΗΟg—Ο†*ƒΕh`LψΪϊχνφ#ω…ϊUϊ½π7τηϋwΐΎ»žκrΫ‚@#hwΠ³`½ΰUΑΏ,Ε. ^Z΅τeˆyΘΊžPJθΚΠΖЏana;ž„λ‡ Β»"€"b#"¦"="K#…Q¦Qλ£nF+Gs’Ϋcp11΅1“Λ<—νY6k[{ΉήςΥΛ――P^‘ΆβάJ©•Μ•§β0q‘qq_™AΜζd<#Ύ:~‚εΞΪΛzΝva—±ΗJFKG““v'%;'—'sά9•œ·)>)S¦RƒRλRg"ΣZριqιgΉ²άTnw†ZΖκŒ~ž―ˆ'\eΏjΟͺ ΎΏ6Κ\žΩžEE„O―@_°Y0˜ν”]•ύ)'"ηΤj™ΥάΥ½k Χl]3’λ•ϋΣZτZΦΪuλ6\οΊώπhCό†<­ΌΒΌα|οόϊΔ©-0+(-ψ°)rSG‘ja~αΠfοΝME’Eό’[Άόύη‡Ύ­–[χmύ^Μ.ΎQbVR^ςukۍΝ¬ψqf{βφΎ6;μΔξδξΌΏΛyW}©LinιΠξ€έ­e΄²β²{VξΉ^nU~p/q―`―°ΒΏ’}ŸφΎϋΎV&Wή«r«j©V©ήZ=΅Ÿ½ΰ€ΛζƒͺK~9Δ9τπ°χαΦݚς#Ψ#ΩG^8Ϊσύ§†ZεΪ’Ϊouά:a}H}wƒmCC£JγŽ&ΈIΠ4v,φΨνγΗΫ››·Θ·”œ''^ύχσύ“~'»NΡO5ŸΦ9]}†r¦Έj]Σ:Ρ–ά&lnο?λ{Ά«Γ‘γΜ/&ΏΤujtV“;·γ<ρ|αω™ Ή&/ς.Ž_JΊ4Τ΅²λΙε¨Λw»—vχ]ρ»rνͺΧΥΛ==9^λΌnύμ ϊΆ›67[{­{Οόjύλ™>›ΎΦ[Ά·ΪoΫέξθ_~ΐyΰ;Wο2ξήΌx―~ψύ‡b²Ž>J{τφqφγι'ωO1O‹ŸI?+ςΌζ7ƒίZ„6Βsƒƒ½/B_<b ½ώ=σχ―Γ…/Ι/ΛGΤGF-F;ΗΌΖnΏZφjψ5ουτxΡ2TΏΡsϊO—?{'’&†ίςίΞΌΫφ^ι}έ«]“Α“Ο?¦œž*ώ€τ©ώ3ύsΟ—Θ/#Σ9_q_+Ύ|λψξχύιLϊΜ ΙgΞJβpb"οκ #š‚rβ²9½{―½φoοsΞ^g­½Φ?ψoϊγ‰#ΐΰp8ŽG€#ΐΰpn@~pφ‰w‰#ΐΰp8ŽG€#ΐΰp$ΈΠΗ§G€#ΐΰp8ŽG€#ΐΈˆ»ϋ΅ΌJόό\8υ:68λCߜf8vnΑ|C?ή(E]G ζBμy₯30$^ˆ‹ΓwΝϋQ\QTp4§ΨYgΗχοώe5Ν£!ΔλFƒΐΈŒq4Œ…―ΓογπΈπ\ŽG€#ΐΰp8Γ!pƒ }fΨlΙB_{\h`XοEjŠ&ο<*3±BŸΉ %ΛξΔε3ockUγpγ3ωΙΈ{Ύiρ˜tA˜!ω6ΜM1A§ΰdΦ<³β,‡f ¦¦β\bB ˆž„£φ p·Χ#g­sτ';…ργb0™ξγv‹“βp8ŽG€#0fά BŸ[vΎˆG2S―€ͺΏλ$~o/υ‰wΧ†ΌΒUοΠ?₯&ζ0ΩbΕβŒ4xω› ϊ¨,^„EΕU‡ΝΞVόθ"Sϊ?mŠG,ρ³ζΩρΘCw ƒ˜±₯%sπ_'?Fc°Δ>^ΓdΫ‚\ψ(ϋπΝρjubΫγ1Žuη&Σ}λΎqzŽG€#ΐΰpƁλ_θ3Ϋ±ο?7ΒΒΦι΄Pολ>‡ο<ρΈ--ΖΤΕpΩƒ‹ΉλαR’7tMy6!Η=W νzNHϋώF]X›“ε? 9ꀫ^Tέ³ξ9€„ΎΨ$+ΆνϋwδZŒ>rFK6ž’?¬y 9p š―ؘ8Φ-…žZπφ}‚ͺš`΅η˜6=ΔΗjŒΗΈK“ΰ>γrςŽG€#ΐΰpb‚@ˆΠgίΆΟf%γΫSϋ±vs―‘Β—χα™Μ™h;ψ[”V+VγyEΨύσΗΙ0 ρdθυzΰΉ<€³ŸΎβ­ώϊ"‘¬EΫQΎŠ΄a^;Α^Z-ς'ύoΆoΓoŸΝBΫw§ŸΡιkηβΜΘLK’R΄xΕ•~Ν-Œ¦‡κPŠΓ%ό©b-ͺ0 ’ψ™n)|f“Q0 υzάθΏπ%ŽΏωΏα¬°‰Ÿ·-§/"#3 νΗpbΰv<”9=ŠVcPΕκ@ŽEωpϊί‡XΊ*ζ―΅uώLΗ >{υElVl’ΜsμΖΖ‡ξ$ΜΏΐŽUΕβ²bϋOΕέwή ƒ^/ήC„Χ…ξΒώΚ ΰ‚Φ1ΆΣύϊlζl\ώͺWgZ`1‰σΝέ׎ϋΫ΅‘χ›&ψTΰ ‰^”…ΥήΗQ’ηΥ8ŽG€#ΐΰά(ό Έ#©is`4qΗν¦€K¦ΫoƒΑ„Y‰?RδΫq°|2R™ΐGάΐ‰ρΠ“‘»œ–ΘŠd.ΒΑ£εΘM>7•υH`0₯cσΆ¦zΙ&ά–d„‘]/.@š$π‘δEτS‘9/ LpΘdŠ’6l~Lψμ₯Ϋ°{Ομ|g>j,o_hS0BrQj&“ΐ7δv Χuzr‹ΛQdV³•β]ΕΘ OG₯†α(&D•­ƒ]Qt¦ ‡‰˜Ιϊd4b:“Μ„€ΞYΓ=qZθΎΆ„ΔΩH"L“¨iVb@Λμ$95 &£’‘χ2!N‡$ΛbAΰs»=tŒ'~ŽVXJ ΣfS$˜L&α/Ιtn mZ.ϊ7Ο±―9ž"!CΔm ŸζDœI)ι(xbΉŽνA~(y»ίGρ†ΰ¦γž–ύΨΊΑއ³›-_ι†’Q§Ψ¬εS;›«pϊ[Иš°tγoύsͺ`6dPΎƒgOψ>ΨlΛ‘MfΎI=β<tΉ‘‹§}§i™ΨΈγ ₯9©uŒSι~eσ)5=SψΔϋζ~’…ξ·w@ίA’KjqˆŽΊ¦ZͺξcMyaŽG€#ΐΰp87&!BŸoΏLPε|eΆ­tRX†· ;²– 77/Ι‚cΗ9ά„NEaGΉ)$ηx:±Χ‘…V6λyλ R,+ή(M‡dυ(l5rέ8VλDΦ’%Θ’:΅žDKΗχxβ±ΉΒΥ–·ώ7™ošρr]6>•‹Œτtd,ΞΕZd3…’nκ‘œ?¦ω*ΗΓ99Xς|-z…†’πΠ~αΠρΛ• =έ¨}~ •}?#α”q‹ψT<½έ/φ©Ζ‘ΉωYYB?6hΨqwΦc υ‹ύe†Ε!*O?ΧΓ]΅uLψέH|ξb")”Ί#'ηίΠΙδ>έ,ΜσwΚ΅Τρ’ε@»X<όž>’ΚΜ%xΎ ](μξ>‰r6'ηΔξ#-hς‘‹ύ’Y«.1…φ[„qς]œˆk)–[DmΨ©C΅!Z>-σΧΉvNυ±IeΒΊΚJš™¨{!WΨoκξ<ŒΥe~ xOk+ΪZ>ΔΊ'–δδ=”ƒ¬ηχ’[³<*ΟIcμΏ_½h«wŠχΫΟφ’‹Ρ₯™ύ/J£BY Q5 ©Θχ±&rΌ0G€#ΐΰp8σN-ύμΉ"ˆ@Te:ξ-*ΐ©κza±μͺ«$!L‘H;°$™Νξ―>Η5K J­$ˆ]»‚/ΎEv*™mΚƒBΊξ_ Ε…:λ·£Μηα²U›™‰`φ“ιιΔ!2έ4—μΖTjΓΣ‡#Ψ…¦Kχΰ—Ο=4ƒ`Gκ'FGžξό¦Ž€™9yξ_Θ[#γOΦbΪpχ­"Ώοξ„lΪQΏ―ηά‡βLxή}?-ζλ„ώͺΖAΑ…₯Ϊ`ο·θνŸ)HΑƒΘ£Κ0ΙέΣ†Œνͺ(.wŸf£0ˆ«l #AΦQ ]’DF:]²=±̘θEυκRŸ6‹εΤl-ۚC.<½ψ)F₯£x£((ήφγ±sΦiΌ½Χ‰ΖVkόRΙΏ.—΄|§°/ΨΖUσόmΖ2Α=΄―¦€ΕxνΔb±#$”o[SΠ©Žϊ ¬'G²frhSRšŠiSαΚΕkψnΐKItH0Ν‘ςώ»Iλ³½‰λεπ$ΥψΟh―δŠTθοΘ4ρ܌p’‡θΙ—mEΨΎϊό0D€'ΥWMU¨”φ—²ͺ#ίΗrό—#ΐΰp8Žΐ͍ΐ¨„ΎŽκSθ]— “Ξˆ₯λτχάύΈπΥΤύf3|λ³δDΑ9ƒΪΎΕβ?yD™˜&ΚΏΎ•ΰΜα–¦ίCpΖIϋμϊ¨dώ’;…ςλmk #ΧΤΫqb£΄ΰ–¨±ο €Ϊ’ςόZΉP2λK7Μd¨υ V‘Π§3ΜBg²‰jdς›kΚ°*œ4L'NΤh^`ꦡbB¬ m=n€[‚ Ηώ+‘ι±Ϊ·Ν’$ΠkW £’|…A8+ψΝΌ°’Μό†βπ}χ(­ρφ 8HΠΈ–q€uuΔtmHt‡αΉηΌ(!λΝt0AόΤpΎ₯ λ+σΡtβ)θυΙX}Dή/ZQyh;uYܟΏ‰ΗΦW‘ΟHΛ·*CΨ½‰Ά·ͺΓ ™ΡΜίΌmΨϊ”¨φzΘσ+yk]κ Η.­«P-Λ}ζ<ΜdsŽΌςΆ*ξ‹m+Ÿ!%!ZζUρ«vŒu ’™²\Υj½KΤΊλβ|ΖΜς5φqŒ£ΑAI|ΈγζzTϊo±αJρ|ŽG€#ΐΰp8(ψAp½‹ξ«B–>9>ΏδyΠΖφΛ'νC’½|ώԁšŠχpAΨR¦Γ 3ΔKΝ hΌ₯ΔΓφόΞ@―žTΒVX GIžŸŒͺ#Ϊ«ΖΪ‰Ώ Λ‰ΡΊίΏ#aΛ ?€Cο4aέb“*J‘…zΠsYθ2Vωq ]‡φR„βύ_4ϋ΅8(š"ŠZ8+―+Ž“-σΙ9M22±i‹bšz|ŠΉΑžΘ„Ο΄}+ΠΟNCvΑυ_‚NΔ§‘xgI1Ζa[©ΎΌ΅•δ±ξτ\4²CΧfΐζ ¬¦η":’`œ'A+^0qδγg­hγ2IΛΧ†WεΝ›ώΛβ‘ζωkGέ―s…~xΊŽ`ΙΓΡ"l%Η.ΏΫ ’eΕ4Γ―…ϋ‘Ό”ΨJvβ!ζυ()>% Ϋ|°Ϋ°φΗsͺή _μΉ”›Š8ƚq©ς_ŽG€#ΐΰp8‰D@Vςψxp}ΦO…ΒΘ₯γε¦C8w~)θ<άΤ–U@2S±ζ™ηΠέΫƒKW§βφ;R!ϊNιΖΗ>SΉΪŸΥ„&-„“2Q~Ό λΟ}M–“ ˜}+™…² }έ‡ατ9k!vH‘&λ9Βk šqτ³^dd“kό_nA9ΘΘ/Ÿ†Ϊ?A E@ΊΕΎή^ ο`ΔΕΞO|8θΐήύŸΐΆ1:cœM δyςfΟM)( ΰύ?ϊcε©ΗΑ߈λ³NΒ9MΐΩy΄ }‚«~ υυςΠ½l²ηFͺξЁy9δΨWω8f’Έ74Oψ3ΎτXω»Ψ(4E φίχW„παjώ;ž²PhˆtΓ£ψ•ΫK&yπϊ&»ί―±u+οLKM™kHψ~_]ΒΤ™³‘J!Ψo­$―%”LwΞEZ*ΡY\€M$_³ωeY³ Nα*™ςύεύ°B‰t9F?Ex\2ƒmχΥΠν€ΎV΄Μ_26<T6OΘΙΠ²o¨o:@!@Θq1―μs w-υ”„¨φώ§°˜φσ-uΕΑ‚ &$ΓB{c— Θu4ΑRπ%tΙs‘"ܜ^|ςϊή°MDc-8„%Ο39ŽG€#ΐΰp&MΙCε±.Ώ. |έθμŸ )ά? φ~…2]cΖSR-δ,„>Z½³`ηGvό&p?yΎΜ)?€~2τΤιI€€ΡD› |^ΆŸ©EΆy“PΌ"˜„Κƒ!ϋκΔ2ue’vOŸΆu/“οΟΖJ¬yμa)ΑΓΘ_΅ 9?ŒΥR0σkW™‘)ρ'Έ³i°e“6eί:κΚ°Ήφ€’AŸKΊ$πyzqΨω*]ώϊšp«Ξ»· _ΐβΨ%%ўΘ$ΜN”ΜGεrΑΏ’…₯2{LMYς™]ϊϋ#j-}u(^`2΅—”Δbτ‘ι‹―Θβφ%QŒΉ°|ΈœΨ΄ϋCτ‘°Gj4ŠΫHΑΔ Σ1ΝG¨ήέGڍŸΞ`"ά,’ΐηuShΏω‡j|xͺ}ύl^ΙόyαθΕ±N¬R„5PWyHZ`q¨Εςa0c Iπ¬+έmΨ«Πp­¨œΏy[^ΔbΪ‹Η> ~e D—N)\Η―kO =5X °³ˆιϋ:Pϊ›Zt‘§N&φ¦XΟ«ΈίδΉͺyŒ‰’˜Όp{υH%Ϊ’ΐηΖ©Ž2Ÿ—%Ήœτ;«Δ!ˆjLO΅άΗ1m˜γp8ŽG€#p"πOΔχ‡γέl+ΐƒsfΐs©uυŠΝFa ›­6Μ»-3fΔΓΣϋ%κQ˜ςVrO?ΟDe/]BΟΧ­p5ϋ…0Ε#fΩJχΐ)νθ:…ƒΨG{£Ά Σ–…σ ͺ’ΐWS7<ZqΣΨ ”EΈΩ ·x.‘Έ•ζΔ°£luΰθtΧ;(pxδΉ3€HΫΩπΪ:Aθk§vΧjh7–σWΐŽ9μώΉDχOύθ1(έwOQάΑΆZδ? ;E<Ε—ΧΑ5μ@Θά¨ϋ Τ΅ΜKq8ŽG€#ΐΰhA`X‘O ‘‰.k+©Δ–5‹Ε8k3^―—LIwL>WωbνM4―Όύ0ΨHθs ·ΎvηπBu˜šΡgε•’ΆΨ†ψΑsΨΉ¦4‚igτMLdMYθswΦ#gl4;‘ρΆ9ŽG€#ΐΰp& =}ΕΘhΪuU•"·*[*WΓjΉΣ)¨5(ξ›Nπb‡i#XLަm^7 φ’£»ίφ²ˆ‹γ”˜)0ύέ¨iŠΒDΨ‚z£v’χ‹#ΐΰp8ŽG@7„¦OUOy!ŽΐM„€}Ϋ>¬ΛJFΟ‰½X»5rˆ›ήUŽG€#ΐΰp87%\θ»)‡wš#ΐΰp8ŽG€#ΐΈYψΑΝQήOŽG€#ΐΰp8ŽG€#p3"pCμι»ξ¦ν39`Ωχs+βΘI؞Ν+­¨,@,ύ΅‡mc'μ ‚ƒ ΔΕαΒι:”:}A†«¦>ŸχM=VJήΘγ¦^”#ΐΰp&1MPΏx³Χ\θ»ΎΖkόΉ5bΟ+²B²HΊΓwΝϋQ\11ϋΔl ¬°€¦ΰ ΔΪ ΘQw’WZ‰Ÿ?‚ §^ΗΒ›eαB€ QΧEϊ)˜G±ϊbΩ7uψKρΎω±Πz4‘γŽWϋΆέxβžihy³uγρ9$±Μ3Γ±s ζϊρvE)κbr$–Σ²Ϊ(Z9Μ.HˆΤΊ& ŸθΗ±ϊχqώΚyDδaυ^€¦θaςͺή>¨«ζ$βξε xπύ#Ά½Qί΅M(HΣΓΣ}―ήΔ£ {šœHΧ½ΗvcUυ‰υ· Ξ¨:½‘ϋ€Τ΄»BσΪkŽφsˆHΥ\PŠ’ewβς™·±΅*Ϊ»,”Cνt“qχ| (Ξ€9™θMr‘ΟZ²»ΦdtŠ…k–Цς v­βžΒΫ‡Ϊ΅ω¨RŒ“/žξ@ ΉΕBˆUt…p3ώgV^7ΊZγΕ[ΓΏ±XαnGyΞڐrΦ’=4Vι€» Žœυ± έc-Α;„…1Yτw΅βΠŠ)ŽpΐID~mΨ}Δ‰ zοŒ”ά퐳Άκπ=sΊm΅¬―Ρ}™ψe+šΟΣ|Ώ?Qˆ¦#’IθJTσa$‚Sΰ#xXθhn8rφβ§ͺωύ#•Υ6Œ£1u›ŸrΒ!ΐχτ…C…ηωpΥa³Σ‰r‡Ηz=B~Μ…kκά=Ψο¬DeUτΗkC^Mύi―†³‰OΏPΟg4%GΩ·φΞ B«ρ)χ’0Έ}› sHΰc©»­U< ―—ΎωΦpp#χ- ςΌν7‰d‹‹32‘“½(\3QηEEWΈU½ˆρg–¨ϋ0|E+Š~" |žή6ΤΧΦ’φΐμήσξπUT\‰ ³ˆtIˆxg‡Oΰσ τ‘·― f> ZSD$Ε.&LƒτX!IXρBIPιϋς”©ψQΠ•¨Ouz€fδ’όh- Β±ε?( ‘μšώ<¦PΒ‰/τ†Žζ,Β"^QI|Λθ`LΝΐΊςγΨ³% #T^ Ώ ²§DΈ6šK*ιJΕ¦RΨ,1%!ϋqŸν+1•c9’νšΔζΨπλΗlάήCΡβΐλέΔπIwSΰuv²zρ“ν=λžLΚΧΩΒA/ι„X5?tM%y ©’–Β£μ[ύŸNγΉάTϊ²9 Ν¨©ρrΟ³Νgήn|\#zυ37ΩϋζηTϋэά7%Ϊf³²fΰqΟ•«B†ηκ`ΰ…Qži§λΒڜ¬QΆ:~ΥΕ™|TΉNWlΪՎYδv +K‘aW»νGv(ΒΊΨπrν‹H#]»;#gMΜfs ρzΎ6EnΔKƌ(1WhϋδJίΛoDΊAe»—Γ^Aͺ2³ Ž₯(Θ4ρi°“ U_QPΪvŠσxΜΟ)"kόjEήν"bαΖaG*hδnΑϊgW E―CϊŠ Ψβͺς•DζΧ…βά,φ„ΉΟ’£λ0ΆϋΗ…]S¦‘πΥJΧUΉ?k0#<€ˆš·ΙBVRεΐL[!:`Γ# hΜδD@f>ΘdΤύzp€|=Ά²ι0…;ΎžU‰ΜoτcΑšσχ’ό#Œ@ˆΠgίΆΟR|―oOνΗΪΝ’ι«Tψς><“9m‹jΕ›,―»ώ8™&ΕDχz=π\ΐΩOί@ρV}Ψ ±ύ§βξ;o…A―ΛzάΈΠύ_Ψ_ΉΑ[O¬φmxiέCH10!ΓK¦§ρΩ#€% uΚ¬yΨΆg=–ΜM=S…ς½Ÿγ-zιV)XeWX²mGωͺ»‰¬ƒ‡`/Ε‹@dφQχο?Αt β³W_ΔfΕζ”<Ηnl|θNΐσv¬*ΝPTbf&¬~ϋl ACτEs:d}νŸβ\œ™iΜtΗƒ–― Έ’žv”μ4–ΟfΞΖε―:qu¦“hψΰξkΗύνΪ°˜ Uύ§UtΖ±ΠΤ;QΉοYD3V―»M―V`kΐG~FΫTσhο/@&-κ,™K…Πχ@†ψΒυœkAτ:Ρ2}}sΝυ粩ΏY½!Π‹φŸξ«|ΙΊΛxλΧvΏ9QτΝMϊšVϋzN>βNvžΖW’ΤΘ»Κg $ g³ekΌψ\Π[V’‘αΗ==[>{½›ξ χ|tΩsz {N{θΉF)—π§Š΅¨V|«ΠϊμAΏbAΥ³Έ˜Ο.šIο?θ*―xd½Τ€†‰i<.΅ξΗ2₯ΦΔo˜©c؎ε‹Δηΐ@Ϋ…ΐΗj»°yM˜—¦@X”ƒ…Šπmm_UqUψΛΉκιϊ΄Χ.87wI¦κ¦Ή–Š΄b5•&+άh;uι™iHΊη~9ͺŸA΅b}*φ h¬© Ώ<Ύ)€‘΄ύ”4‘.%6κψUb/kτeΛε΅ΐ~ŒŒ―²ΊrωΠ²-³΅Η€;γ=°Ϋ€ŠΔe˜KOΌΖ$i½\gd~ƒk¨;χΒύ½(ΙŊκκω•1`•CqΫQ懁Iΐ‚ΉHM›£Αˆ;nW|‘B¦ΫoƒΑ„Y‰Jγ ;–―CF*ψΌ ±#zΊ™3r—Σ«ΥŸlΆεΘΞ ―A8Ο•uCOϋ©2±qΗABΒ—ΜφνΨ±1WZΘΠM80D¦™XJn£Ρ„d“bΩΑC;_ jŸ%˜‘ˆ™„‘‘ž%Σ…nŒ„^8gyμΉ‘8M‘cW{Οk₯K­&L›MΟ΅$˜L&α/ΙtnQ4Ν8ΣϊμƒZ~q ɐ8“0JpΎ;R]ΓtΗ$Β-1Q|Οhβ7 ΜT±lMΕ,IN½]©ͺŠP(N«™ž'VŸΜΕ΅&^t·w ΟQQΫ§‚Ό*Ί2₯^h’…>-ΊυΫΦ’,+ΟΧ8Έγ#ΪNIoFN˜υ€LyμλpτsξZD¨?)Ώšπυσ›#7>kf9(|hΎΰΰσOΞΠ:’R=,78fόκ0#Ω+ΝY6oε?kΐk$ ~eΎω/Gΰ:@ Dθσ}±b^ΞWfΫJ—!…ex»°#k rssρπ’,8vΐ‘ΓMθTξimE[Λ‡ΨαΘΒ’œ\*›ƒ¬ηχ’›έωΊ<ϊ„ό4γ—Ο< <Όύmpf=LeΖξc] jώCGΉ)lΝ3Π‰½D;‡ρυ<Žu±}W,+ήξ/…>4Wβa’κpο²'Π™±jΙΒyί§οΖΠ§ͺ’‰Iu¨|NΆ |I='—`οΙξ°\ͺ~–ΎωYYΘZ²΄ ΄˜£Ž%tΞώ²θ9_¬0ŸP}Οk€ΛffdYŒ—,ΪΕGZθž>Ο>Υό†EqψΜκ ω―K–ΘΌΊQΏYΖ, ­—„+-όFΩπϊ―Xο›#νΏ#ΝΗEώHGϊΤ\μzmvνς9iΏw…])I‘VσΣ7ρ© ۈھΨΠ©ΔΟ O>$eZmΨ²ϋ%Ÿc“φŸgdέ%TpwΥθψ‰Η½9!»œGb/¦ΧOΆΡW_–δ/βΖ’_uγ&1σŸ8œoϊμdΚ’_ΰΙ{Ωϋ.u]`—Β¦±γ7K7:±‹ζ,›·ςί‹σW;Ώa;Α39“αξ;Uμφ\a‚KΣqoQNU3›mzYΧU†˜PtΤW`=™ά›σμ()MΕ΄)Χpεβ5|7ΰ%‘M‡ΣV“l/σ± ‰=½ψδΥυΎΕ[MΩπθΡrςΰF—δD_m——B–ά_}Žk–”Ziγμ΅+θϊβ[d§ ›5GpfQ#Χ‘ίΑήoΡΫ?SψΚ4xAΓ[OAΓw¨™‡fl sCϋŠaJZŒΧN,I‘ΐΆφK(“jΜ€Jξž6!^νͺ ΅ ϋ4{β*ϋJΈΙ¦&rήΎO°^U@/Ζό Ξ©΄η=CΠ6ΚΥόjΖA QelEΨΎϊό);‡K4γΏjͺB₯΄O‘σtδ3}icOžϋΑϋ%bηr`8nΤηkν[cΞ•εΒ’7ΐϊ-ʚρΰƒfρcJοT³u²$}«k:ƒλ2‘·dϊοm›χ Ο 7ώ|Hy·Op'΅τνβRυσχkεsR2§V—ξΑCΑΟIΚΧϊ,a¨)ΥXV`Šςž‘n`+ΒY€[šPυμΣΒ―–qS’qτ^ΉΠ―ΤΎ‘ξ”³(έί‚Εd½Βφφž©ΎaTe5S–nΔ‰₯4ΊŽΥbƒζvdή! Ύ₯`i© 5•.Ί_|τύjZŸ2ZϊΦ σχ’όœΒε‘ž“¬«ZŸ%jΰ™χΌM5Ο> όj7ε$?#¨αw$Q^Ό"‰₯ρ‰°ψލΣ0CO[3dš:CΘ'/wΗΫxŒB„MΦ,_vάmjͺqκι]΄―˜΄}; Ρψ·αEαˆt}T₯οϊhΥ§­&Δ.%Ύψkc@)sΡƒ΄oŽe‘o3=‚ωιΩΆs }dW‰εΤ牲n'ƒT‘Wρ»¬p<ΦόjΒWδ.¦O™8?:KB_†@·ν=ΪΛδψGΩΰΨρλΖ[Οε£²Cٚ|,™AΡ©V~e ό—#p= "τΙK uΜ“πςΌΫu%ξΎύVΪο‘Ζ©ιKαΨwS—¬–œE˜±ύΕ5$πUO?Zώς Ξt}ΓrΈχΙBdzέTQ`!ΕT‰Μό™L8$*>Sp…„ίιhγΑ6gΆίΒC—€9,φ]ΐξb ˜υκ―_|ƒu™Š}AΧύ§Αhλύ%ΥiΓA=έ‘KΊή­ΓXBζ@@ΝR|:Wg@–ο³_`ξ€:‹¦o'Ϊ±&c1βMs‘gΞCš8j§ί \$MtG΅χ­yi4ΗΝΆe@ε – fC$ΪoR…qΣ7Χ †ω;Έ@Ϊ½r›5 fθG‹θŸ%κζΖΔέσΑό©{φΜo³–±fBΓΉ:~5TQ΄ωδYΈ)6žή@ΎΉΣμDn–“>lA“sEψ’ :rlBΊ°οP 2Χ‘Ά/³φoΎΎšjΊ@ϋ››°Ά’mΨ΅bϋΑνΘ¦x”KŸ―€½ΞξsL• ό…Σ€ηkΎ½μ"΄·l™Ψ«žŸ1Όrߝ·ˆΤI(•oΫ1ηWΎcu¦ή¬>„­S‘L¦‡τ–ƒ°ν!Ώ d<β B+Ώa;Α39“‘―½λ`!mIΠΖθ„©Β§³Π^4Χ‘l½ό5£pΛ xvEyeΊχ‘£…:ζ‘’œσ„\ζΎς˜ΰ2W&΄mε3t¨€}MZΜΔcf€ξ¦|@Ό&μ[ΣΧ³o?­>θi@%b§ΐVΞ‘>ΖαϋξPZ!σTPΝi4<δmΓΦ§κ^—Ϊ°ΤAŽ]ZWωΝξ4aΘh‚J)F—ˆ§Υz—ψ₯—BΘ/$%εkCWΚ Ή!”‰%ρX7ΧCXΔ‚Φd£Eί:jώŒ’ΕHΏ«Θ±ω7ϊΫρΑdsrEίͺώφLZœšζΓQ‡;„©ά‹χ“K ₯ˆζd‡ϊ²ΎE“'ΘlΫ†τۘ–_‘Fρ,¨„»ίΩ…ΡήσΓΡU°.Κ/*ϊf1E|φiαWΣΈEd)βňό†«©³pΥ…Όζ^\¦ϊDK{άHjTΌ!½‡­­ϊBs5iϋV1mŸ Λ–ΝR]/RΑΈ)ςΗΜf”­CΓ‰uH₯βιν…¨φΓΰώ;ΔωhΚ7Dρg‘gURΗLWιλφβ4αΣJoλ© ΫΟΣήΡ—ϊΏυ³M ΦdKސNn›$QXŽ/„η†K~ΆΕΧi[ιO17π[ŽΆη―H₯ήΚ뚟}Rε‘θ*ΫŽ{d£8 φ„\TŸ-Ώκ[»’š1‹ΔJ ήi!³J¦lΪ]δ7mCΣΕ*5cΗ‘S1/Pw¬h3:Υxγ€°X ~<)x[6Ϋ)Μ“°Nΐ[›ς±*?ωΒί*<φκi±q£Oψ>šHό(4oRNL~ώ!Y.YσJ°§a“δ“ΐƒ?ΧW τ£ζ7&άŎHμζLμxβ”8Pδ¨Ύ+ΟΊΰ)°[τtΌάtηΞ!%-EXTω IΆ¬¬)HŚgžCwo.]ŠΫο  ΠΒ€‚?Λ›«ιeΫήΣ~Ύ₯Ž£8XЁA³[R{³ ²¨zγ$/†.)Ξ£GΠη¦b𣐲e5MhrEeˏ7aύΉ―ΙB4³o%sS΄―ϋ0œUA_˜djDMŽqDXΓiΕ TΛƒ• Ο#•αγιΔ²oΪ)ήtομzŠά}gβ•}δu¦-˜i`7 ¨ΉŽ&X Ύ„.y.Ή~gŒ‘Χχ”’O\ΝΗΐS ‘NXΕ―ά^2₯Ό€Χ7Ω)v–dŠ£ψBSŒ’ώ(ͺ*¦Ο(¨D¨ΓΎ}pβKΪK!j•Ωώ—Ώ5E‹ŸΎuΰ½OΞaρŠ4 H/ώφώ›@ef/ώb ΗmdfšρΗwΫ‘Aχ£>mŽ6ΜΓΉKρ0§‰±&κGω,q}ΦIο‚4α]ΰ<Ϊ„>!ΜΠϊzΉ'5Ί{~dΊΔ=9]ΩWω8f’Έ74/ΕΎΣcεο`£Έ}́Θί)^λΫι$:~G’|=δ₯\ ŠsU˜i []ό*jڈ4Š™›½Ξ‰#uαβPL,ή.£jν‘O+ΐργωA­ΠΦ wgΓ ‹Υ;prΥkτξχWS|χ2#Ν ³ΧέO 5UΒ“‹IΫGV½PBί),"_ΐΥ¬(Θk>FwQ&νχ3`αγτ΅“΄ΉΎo‘wΪqόΪ—Α¨oΊΤΣϊΒ©e‹™²7)ϋΨ–Ώγ(–“EQ< b,₯Ξ#»±Yj:ο‘(ω•‰©ψ ΎαΘΫΘY”“,•Ό^²R’„ωxin°Σ–ΪΝδαΧο,%PΫD‘ΚΗr>QχΚθGβEΎo#•aΜ――•cώRΙ/vs"’ιCγVΌ.…G`ρʘΐ7ЍΞ^ΡΩŐΒΕΗ`οW σDΔ7%ΥBΞBHΰ£7 n}dΗo|6φ̈Ίτ7΅θ"OΜdŠ%]ψΌ Ί^ΑΕ€85₯ΨΌχ„ωD› |ξξ6΄a‚ͺ~+rΚ ‹Ήd’ §)ilœxfŸ—νl!σH) A•<δmy‹ƒ8όΚŸgRζ†ώΧ΅§³ƒ₯;‹ΨgHυ˜ ^΅³ή ΣX1άΓ%rΩνΥ#•ΖCψά8uΰίQΰGQΟεΔ¦έ’NτΘ핁φpΖSP΄ir•8ΘΕGυ«ΏΆ’BζEMζΪUš3””sΛf¬~όXθyΆ¨°σo V₯ˆΧcφ ϊ&σ\uL AA9ξ4}Λ1―ΊΧ[ί+>Rτνsͺ ―_}“Η%/ i°ϋΓN‘H|R*=χHΰ£g^―πœeϊ²;&υΟ’€φθ]°ϋp y»£ϋbͺ&%Q:r 1;‘V΅rŠζžWC—bΤ%S{II,FŸΡχΡ‘Ε€eqϋ’Θdρ‘ωΩ Ώr_UώбγΒ?s5σ+·©3Ή¬ͺί:¬Ι)§ΠF’ΖΟ`JEͺ$π οοκί‡΅φ`‹όΐ?jŒ­¨%ΣYΦτΥ+ςΌcgτwIΏΙ(­x•WY –i²6X¦p)ΰΏ@Ϊt‰ΌNΏq²W(cœ—ƒϋo₯ΛΎΆζ0 uhιΧ1³hΐ roB) ^Ά°Z:zO ŸΧƒΎΤ– kΆΚζ΄6ΜΧΘo'Ϊ%ψύPF:Q‹―P|DΊ’xΔh*“x#ο­b|D4©ε|PΆιXΌ=Œΰ3b4όΚ¦‘ΖbάήC‘€ΰΧnzώ‰ψοp(˜)Ξƒsfΐs©uυΓ¬₯Šf« σnKƌρπτ~‰ΊΖα?‹Ω μ˜ΓΚ]’rυΓ—“y2S Ψ—θήaΖξ#― qyΪ8h3wh]+-\η™νKθωΊ•Ύτ…_Κ΄Ηβw,xЊΩHύ*έwOY h«Eξϊ“°ΫηΡ‹Ιƒ/?ƒ+F¬_6G-œ€}π§.”gΩΓ.Pόebsδ¨;Rlϋ’—β .±WψΞG{ΐϋ6ZΓΧΏ‘ΗMθ±5…σL€Θ½„λΔ°9α‘ ϋGγσw8:αςΗκžΧV,ς7~cΡηp4̢鳦ΓHΉ— ΞΨ—PΊsΎϋۈ3YcΌošΰR]ψF7ŠΑX£ς«g γc¬ξyΥ­±ΰυΖ―Ζξ©.ήαjTύWMτF*h-EΓό y4 ―½υw•™Ί~ŽΛ/yγ―ď΄ pΕXΏ‡΄ΐΘΛήΌ «ι›PHl[pœάFˆυžά‹Uܜ§θpΤ6 ΑΗ=υxx νδ‰#ΐΰp8Ph=r”Φ#΄seδδνDω’5γby2237` >7ΰ ς.'ΓjϊΖ“‰Ά\Ÿβ½“w ΓL&£u َ_s_ΐ©Γ{°9Ψ)KHež1]_c`v2z:»F*Κ―s8ŽGΰζE€<[ω§κx|ίΗΎ±œ)|,Ζ]Nϋ&@`rjϊnΰy9ŽG€#ΐΰp8Žΐx πƒρh„·Αΰp8ŽG€#ΐΰp8ƒΐδ4οœ,x«Χy₯Ψχs+β·4}―΄’²ΈbΒψ\Πq9m8vΒΎΠ(9oŠΓ…Σu(u*β»i#ΗKs8ŽG`ΒΰBί„AΟŽΫ+,©Κ  °ΌγΜ…ΨσJfΘyββπ]σ~WΘ1—Ɓ‡Q4a΅;P΄r>ώ™Ρ ήΩβuΓ$]Ό αb,³0Χpα«VξB~γ>ΊͺV؋ΉvΥ5‘…qά, "5ΥοR,σŒΘ8Œs^›#ΐΰp8cƒϊΖWNu¬ `bκΗ±ϊχqώΚωρΩ8Ÿ|ζ¦PπkEΏfΝ3+Ξ&ο‘΅d7v­Ι`0U7ΊΕ«Ή %ΛξΔε3ock̜+YρςΎr,΅Šρ/”u£aϋ&8Ε ’Ά}p>%Wθ”tβ&―΄9•WΠ°kψAΐΫ‡Ϊ΅ω¨« ₯l₯{ˆF:0ΠGθb]]ΑΫ­ {šœHΧ΅ξu£«υ8ώPΌ5όœ4‘α΅u"Oξv”η¬ )g-ΩCcE|ΉΫΰΘY3ΧοZιš Ά ς…HRLψuΟΪ±·ΜŽκπκΖ-­Θ§VŽμ*Ξp% ?GΞ^ότΘΛΚ‡1Icό<±Μ›κ;₯ϊΒ‘Κ:₯°?αϊσά퐳ΆRΘψ ˜“ˆ»—€B›Β;1Τ΄Ÿ?βp8Žΐ$C€οι›dΒΩQ‰€»ϋ•¨¬'My Ϋμt’άαΔ±^ΐδυ±΄’θ'’ΐηιmC}m-jΐξ=οͺ:|±d‹‹32‘“½(|ΝΉ6μ~g‡Oΰσ τ‘·―,2–NŸ‚…‹΄QL˜ŸL¦KŠJ‚κKί»¦LUη•/¨vΨS©Ή(?Z‹‚0lωϊ΅ϊ;πP˜B S$Ύto:Ρdi’KΣ:dΟήή>a OΕΊu°0γq  αDF§’gg1%!ϋq? φ•‹ύ£ζ1žβkΈΉΎΞJ'>ύjΐ—Η8ŽG€#p="Ϋ•ΕυˆηωϊD€Ε γΚy\υ’ͺθžuΟ&UQ›Ζ•Γα‹ΦΕ|TΉNΧp₯΄εχ\Ή*Tπ\ΤVq˜…•₯Θ0Š ψφ#;°v«,ΜΫπrν‹H£`qwFΚ ˜Νζ@ͺ4N€)R†R6f¬@‰Ή*@Ϋ'Wϊ^>~# *ΫuΈφŠFΐlƒcc) 2M@|μ[ P_hh»EνxΜΟ)"KΑΙs΄t]Ž$0υα€#•4gΜ…Ϋ±§8ρΊT<ύ²u›Ερ‰fά ¨8τΰHωzle s:`Γ³ )‹r`&ΣK–Θ9ΡDψžt¦ΕΉYΎΉAsΔ―΄λ0Άϋη»œdY<8ŸŸs8ŽGΰzA€ }ΧΛHq>―/¬…ΨύӘ—b$›0/tΊ!τΆ»Χ–…šτΩ·α₯u!ΕΐI/ϊ»Nγ³ F,HK@λώ ”ΥΘ6kκ!°oΫ‡gΝ€¦u0 *―xd½Τ€†‰iG.΅ξǚ²˜©νί>›Eτ ŸΖB_ϋ§8gFf3³τ εΐ+(d«ξBμ«|³™8OΆn”τ–•hhψ±p¬£ΊŸ½^ŽΝšω΅cω"q‘>Πv@!π1².l^3œ€*J‚αιCm_UqU@nψυt}Φ~.87wIfŸ¦Ή– …°¦²ρu£νΤy€g¦!ιžϋI<©Ž™ gPƒQžΪqΏYΫήc― #ΤQS†wmBAš¦ωχ“pUGΒU΄γ¦…5/άί‹BXYL"δΑ€;γ=°Ϋ€ŠΔe˜K]πτ“†˜½¬ dύPΉ6$~5φΚkZ8δe9ŽG€#p= ΐ…Ύλa”8ΧΆRΌγ| $ξQςΒγ"Εx˜,ΩdϊWγΓ€)‘zdΆoǎΩ^AZΌ’™15KSΕΙ¦ΐύmR΅ ‰3a€/Ι›Ύ}ˆ†ιFΑδQGBŸ.1Q ‘LNqLFq‘οu3³Υx$Y fˆn:ΧίOό$τΥΟHΔΜ$#ŒDΤλ3«ΣS;L˜dI$N‹BjMΕ,Iyκmq/•@p€βτ°š­ ο:Ύ”€ž $rς’»ύ3~ωΜΒΥΫί†xl½ΰ°p{г%©/ΚToΘ'K6μ#ν“EοFύζœPσNΩ1Ξ@6ζΗςΊ&¬HΥΓC&o9vj:‘? σhΡ]οͺD~–(”YΙ™Κ.r¦"8Mœ›DΙ(U³ή7GΪGZ‹κιθSs±λ΅ά ‚Ι₯oΛ"i5?}έ³7b±QΆ/"]fΚ©Hρ3’»Ckς<,ι3>G!νj'ΙΊK¨εξώ;;ͺ±²2IXΎ7§h$g!“%‘΅(#Ρ^Ύ/}R•ȝyUψ‘š²?ΰΡ£ε$l)Ιjθ[Ώ‘ΰ[pχ΄ ±mWΕ%χi&΄ β*SX’Α£\:Pλβύξ(!qͺXΡs­²¬d-ΑΑν«‘(ˆ €tŸΑΆό ¦δ-³2ΣNϊSρz‘_ΔόΈ)gQΊΏ'Š3Dmͺp_%τH%]V1eιFœ’HΊŽΥbC€‹K;2οηΔ—'Nν}άΪ‹ΜlL ²`EΝ$Œ3©°‰”JΌυρ(>³ΜΐΕhΗM’§φ‡9υι§a–_V̌ψό7Κ1&^;«q²ΣNšΘ$Aδh?†:ΧΠIž8ŽG€#ΐ δχ(ƒ#pέ#`³ε ;sd YΚ7οΡ"[}ΩΚ !*2PΙH E)Ϋ»uζ„,Αˆ5ZΏψ ‘Og˜%šΗ%Lρ™u~Χ£€Ϊˆ3έeH£ύSr7mόJ-Δ‰ ― 0!Š™{ώˆώ\hλq#έ"•£ŸΑ+’XŸ iEΙnfi©!ΔΛ¦»γm<&ΉΦa͚εˊ›B†5Υ8υτ.‘Άog!6Ό(‘ͺtΰ@I$zνΖέƒ/ώΪPΚ\τ RjgΟτIΞΆHθƒα.,§>7N•€ϊ“εδβωοˆ27φ^Ε@}ˆrά΄υǍ·ž#g2Τ^hb“ELSΘΔΧωΡYϊ2„ŒΆχhοf3Ή,εp8Žΐ͈ϊnΖQΏAϋμz·ώa‘ ή^W'\ƒκΛF z‰œ`Lψ€1#SΉΐ$ίn’ΐr=°΄ςLKί”υ΄•Σu$˜Žgj>ynŠΤͺ!“@IDATM§'XΟdM–šΘΝr’uκ49Wϋ²”Ί‘Œ$¨ ΗΨ}‡ZΉŽ΄}™°Γ˜a’jΊ@ϋ››°Ά²™Y±ύΰvd§θ±τω Ψλόϋ6σ”₯f œ―…sΠ#c™]y—η0<W6ΙΗ’Žφ%š©Υ0ΦΠ Ψ7ЍΗMc_Θ‚6dΨ†ΏκCψΠ:ΙθΒ!'mχδ‰#ΐΰp8yΚρΰ\4ΧCX«κI‡†²― IB[³‘TG;Ύs“>DoΐœϋhΥΩΜ1έ6‹­L)]»J‘€…iTΎ€Λ―τ―ωέE™΄ίΟ€…ΖSΜ=ήBsλ8~νg“ލoΊΤ“Xg$&Ꝩ λ|ν8rΛsib ŠΏƒGΟ]Ζ­i©ώΚ^ΌQΕ4˜bŠfάδΊ#ύΚb9Yd›δΉ© €ΰ1–ΰ0|ŽK‡ΉΞ³9ŽG€#0ΩΰšΎΙ>BœΏπθo­¨E…yᯏeΛ‰M»?$4z$ι z~¦cšΤfG]6מΔ;Χ'Α’. |ž^v>η xΝ.wΤ”bσήcθgΚA xΞ>wwZΊ„Ϊ¬Θ¨“;NΤ>$S=–ΌAfšCwΠ…―‡Ζ­Ψ}Έ…Ό*υx=’’’`$g&³%Φΰ†F<―ڜrλ5~S*R%ΟλξΕ‘κί‡΅g$…˜ƒ,ξ οeίΰ5 +/¦«WδΎ°s΄χŸτ›Œj^yUͺ’ 'Σ¦+²"’ί@Ϊ”Aαή8Ω+”0ΞΛΑύ·‹e_›€έUΤEklι΅j³Xό;JƒJιΒΧ'υ՟h’Kcϋμ8"ΞIΕδ“>wj«Pγ·ψ$’75œ‹3ΟƒΑ{_εΉΡt˜1†τέΘ+Έ¨ Ο‘9ΟNϘ"ΜΏ%Θά:|qžΛΰp8I‹ΐ?g=iΉγŒq‚°9jα$ “?u‘<ΛV 𗙨#+ 牱ΓIΰ«©‹ΌίΘl΅bΖ%:ΜΨ}δ5!ζ[ϋ9 ‰V­3Qύ]»f[œCž-Il»Τ{υΑ*²ΡΡη΅Υ"`…½π>΄Rά5σχ7Gέ ({)~ε{…Zy9ŽG€#ΐΰLdλ˜IΓg„# Χ‰χq,ε‚?ίεtFͺ0‘ךQ_3‚ΐbΆcwω2tTw«λi―”₯•―HAΎϋρiΓΝ%π±ακp5ί„άδnάZІωςh:ŒΦΗ=iݟγίς‹#š€ϊЇ4£n€ω«¨3츍Ώ fbtψYΣa€ά;‚ο&z[~χ7>1c-'Γΰp8γŒϊΖpήά(pΥ Œώn˜”lΖ<2νΛH#Gλέκ=yU¦t—ωΙ͊@B ρρβ^Η‘0ˆŸ6κύl#51βυλ_E‡«+&©‚I~Θΰp8pσN ρ"±C [*W#Ü,#ŸBϋΈΉ/ΰΤα=Ψ\Ωtμxβ”'7fΨςΤ sίχ‘1ΔƒΜxχξzγwΌρανq8ŽG`μΰBίΨcΜ[ΰp8ŽG€#ΐΰp8†ΐ&¬eή0G€#ΐΰp8ŽG€#ΐΰŒ9|OߘCΜˆ)y₯Ψχs+βwλ4}―΄’²ΈB Σ–81ŽG€#ΐΈ(pμ„}‘Qrΐ‡ §λPκTΔΑΌϋΔYζp8£E€ }£EΧWl ¬°€*C6€Β`C2bΟ+~A ξ‡οšχ£Έ’n}V»E+ηγŸ)β-‚6„]™αΨΉσ ύx»’uΑŽd&!κϋ6zGKΑl+ΐƒ–Y˜Ba.|ΥΚΓQŒΠ¨λS8Š’ϋ``υ―]@uMd€[Τ@OHEΛΒ…HMυΦLΑ<β#ςO£ΌQŽG€#0Žp‘oΑζMΕ_πκ~«篜οzΙ·anŠ) >χ¬yζthμIXKvcךŒ€†RuΓ-‚’qχ| β= ί2,–y`šd8hλ[`W†;3”’dٝΈ|ζml™3+^ήWŽ₯–ΐO/”u£aϋ&8E m₯ϋΰ|J ΤŽ?wg=r*― aΧρc‡·΅kσΌΌΪJχt` Ž\1\ƒ*ΊkœΤ€ {šœHŽEξu£«υ8ώPΌ5όύf.BΓkλDžάν(ΟYRΞZ²‡ζ!ρεnƒ#g}”a$BQΡJΧ\°•/¬@’_&ΐΊgνΨ[fGuH„uγΚU„«GvˆgΈb„Ÿ#g­€ΟHγΦVλΐϊ*1Œ„F’+Μ3a>„c0BžͺΎνΕOΌLaiΨΠό}žζ―Œ»°qJΨσχTΦ)…°‰Π.]r·@ΞΪJ‘ΠuδαyN"ξ^^ Iφή‘DΜ―r8›.τέƒ|CvΡέƒύΞΚρ3λtΥa³³?Ίδ”ώd›β―“…„E?>Ooήύΰ4L™‚+%.ΓΞ !ό›a—I“ ‡(ϊΆΓ™Ι+g€ΑϋΟίΔHθ³aχ;΄Θ5ŠR†g ύf%‘Σ§`α’4@ϊ9ζ,a|2™. +^(AUq•’°τXŸ2U‡OEΝauz€fδ’ό(y }xMˆΞΔ– _γΏP—‚+ S$Ύt±}νh’KBΕ:VH—½½nΜ2%Ρ8€bݎ: ,±Γ―»ρΈ nΠ…0t%τtŠ?Kώjγ{$υm*y)S²/ ‘Oœ,φ•‹ύΒ°ζωλ£ΉΎZx7”€ηΐ’.θsΗ·ŸΌ5ŽG€#0 ˆνΫwv³tƒ"@ Η„qνZ\υ’6ζžuΟ$τ]/)NX_yπQεz8#Θzb\X›“‘k“ m}‹Π-Ε₯ž+W…3ΟΥAEnτ‡…•₯>―ύΘ¬έ*‹6Ό\ϋ"’ΓHΧξΞΓΘYS³ΩΨpΝA¦(Γ²3V Δ\ ν“+}/HΏι•ν:\{… 1ΫΰΨXŠ‚LŸϋ–ΤWJtΆϋοPԎΗόœ"²¦«VδMŽΓu9’PΡ‡Ž|Tύ`.܎=ΕوΧ₯βι—IθΫ,ŽO4γ¦­—)_­ β€aξπ)Ψ]•kρ³3:hά΅M(HΣΓΣuΫΩά E|°&^Π2΄‘ŽΤ7žUKY”3}Fθ -σ# hŽΙ‰&ωχ€ο,ΞΝςέαqΑcΧ‚“ό!8ŸŸs8›Έ›±ΣΌΟ1GΐZˆέ/=y)F²-ςB§Boϋ_°{mY¨Ω›}^ZχR Lτ’Ώλ4>»`Δ‚΄΄ξ―@Ylϋ€žkϋΆ}xvΡLjZ£ ŠGΦK hx‘hΠWφK­ϋ±¦ΜδήZ΄[Vέ x†„Fβp ͺXΖάM=bΙ›E¨OϊιМŒΙΪ?ΕΉ832Ә™₯-^Aq%[ub_εӘΝΔ©xQ3 ·¬DCÏώtTχ³ΧΛ±YσXΨ±|‘Έh; ψY6―N %Αp Y‘€Œa΄}'κιϊ,β:\pnξ’Μ>Ms- zμ°ΦTn΄:τΜ4$έs?-α«cfΒΤ`”§vάoΗΆχΨλ‚ΐΗuΤ”αέGEΚ4~@κH‰vά΄°ζ…ϋ{QP #―ψΙsΰڐ(κΛ¦Š‘κψ*x ~>ŒH* €šΎy0ΰŽƒΑxμ6 "qζπxϊϋΰ5&IΟ ‘¨Œ; Ε!TΨ `…Ÿp8Ž€€ϊψDΰΔ[)ήq>χ(yα!AJ§‡Ι’Mζqu0>μ7!3Ϋ·cΗΖli― -‚cj&–¦ŠL%“ιY4ɐ8FZ8‘ΌιΫ‡h˜nΜu$τιΘ&L› •χ§ιΈe΄ͺTΪηupΟ:€0y€’›:§3`0₯cσŒεΉ`Š$­Imί’ΙαΙ(.ς½n5$ΛbΑ ΡMηz“Œ'~Žϊκg$b&™[ 0―ΟτLOŠΜ³¬ΔiQbMΕ,IΣzκmqΏ‘ͺώΖιa5[Ažƒ|)!!==.ŸˆΝ­ξφσΈΥ’‚HΪ>v‰nΘΪY©'„$sΠ’ϋZIkI±Φσ5ξψΙ―₯Ρ‡3rςH¬b|ˆΗςΔ&…ηΪNP>qζk’Y@θJG΄γ@u€f$Ϋ`%G9³iŒ›CΖb$ZQ^Χ4΄΄‘¦on|Φό-²³-ΘΘ)@ατωΒ³ͺυ“3Έ}ΕRθEWK£Ό,G€#ΐΰD@€ }ΐα—8Ρ ΰψεJQΰσt£φW«'ζ‚m΄—(—΄MdBΆ„Ύ2fBfΖ/Ÿy@XθxϋΫπ­φJn―CqΆ$υEΓթސOz–lΨG‹ήϊΝ9Úw23²,A&‘Λ#όž>¦ΊεvAΰσt’¦b ͺ₯–Ϋλ^Avͺˊ·“ΠW¦Ž˜’”κΎΙNΪ°1w=–Χ5aEͺh—cw‘φ¨“ΦΜΒh?¨Ϊ€OΝΕΧrCŠ &—οΚΩ€±ύτMtΟވΕFuΪΎˆtƒ$πψδΙ‡l­Ισ°ό§Οψœi΄¨|$λ.!wχίikb5Vφ―C& ΛχζΖ>Ώ6YζzΒ~ΙZW”#h/ί—AR•F/ })K~'…Ο1]8κΊ€u+΄΅ΖKs8ŽΐΘp‘odŒx‰λ[Ά―Ύ?Šΐ0Νψ―šͺPyq©ϊ²^ΎT—lΈϋVΡΝFη»;}^ι:κ·βυœϋPœ™„YwK&dΦ|,\zρΙ«’ΐΗΥ”ύ-'DIVCί‚ψ‡’ί‘ΦςΎŠΚς-‘ύG,ΉΏϊΧ,%(΅’£…kWΠυ}έ'‘O7kR΅Œ[}sχ΄ NlWΕ%χi&΄ β*SXΖ’KI©u‘σ’ύMHœ*Vυ\@«,+YKppϋj$ "©έg°-C )$yΛμΏΜ΄“ώGΌ^θ—Μb~ά”³(έί‚Ε’ΆU8ι―z€’.«˜²t#NI$]Ηj±!ΐΕ₯™wˆγόε‰B{·φ"3ΫΣ‚,XQ3~Ξ–B{;LŽ z Έ–xλ-βy|f™‹ΡŽ[Υ‘OD§>€€•Š23βσίŽρΘTFQBΓ|ΠΪΚΘ}£qθ¬ΖΙN;iY“‘o ύκ\S@;Byβp8# ΏkbL–“γŒ?6[²3G֐₯|σ-DΥ—­ 4"χ, ΄pcϋ›ΞœWωbΦ/ΎHθΣf‰&d S|fίυ(©6βLw$‘‰]Ρ7mό*ۍαqr’ΟΓ€!}ŠΣΓΠΦΝ‚‰΄lcή·8Ρ«ί•&D1sΟџ m=n€[ΒπΓ¬Α+’Ÿ υU”μ¦a™–Š’ει !^6έoγ1Ιύ|;Φ,_VάQkͺqκι]€]#mίΞB4ώmx±="]Uιΐ;€Ύ~2ƒ5Πώ*aN{πΕ_ν5ΝE"E‘pφLΰ\δlΫ9{[‚ϊ.,§>7ήΑ­LŠσ‹ηΏ#>ΘΌΩ{τI ΚqΣΦ7ήzŽœΙP{•4ΝMLFκ»Δ4…Μ—%‘/CΘh{ΌΠ9*’Λς_ŽG€#ΐ\θ~Όφ$BΐυnόΓB―#€½NΈΥ—@-τ9Š˜*,‚I«βόQΎέ€EyΘυPrrŽ–ΎΙu&Η―m‡ώ܏q‘ΐp‘@Π#Ίΐζ‡= 7ΎΓζBs/.Σ%=ύ»7‡ F…4ψiό‡©«!»Ήš΄}«˜ΆΟ„eΛfi¨9|ΡΈ)²€άŒ²Υuh8AΑΧYXƒν…΄'•νΥ+ΐύw¦|ΜqΡ,rζ’CΚ‚%o˜ŠvΖΚAΗHt]ςXΔγ…σh#§_θ›ŸΞ€/Jto ίbΖiά‚M‹E&FωH8Œ’ΌΪκκϋֈΝΕ‘j[δε8ŽG ?ˆt‘_γpB8Σφ­©ŸŽΌΛ=θΉ,Ί2V‘9Βώ@ŠpE³ΈΟ©Ήm‚τ§ΓΏΨι+kίφKXs:Ήξxώφ°B 09 ε!"Τ·Φ^†Cλ„§ Βυ₯Ә4‘oΐ ζ`£υυς¨b&VΏŠ‡š6"M―Gφ:'Ž<Φ…‹C 0₯$1?2$Η…Aϊ΄?žΔ=…Ϊp·ΑQq6¬°ΨQ½'W½Fž<ύΥ‚…«ˆtΙΓi€νw5UΒ“‹IΫGV½P‚)q‘/ΰς+΄ΕΖk>FwQ&νχ3`αγdτIΪ\_Š·Π|8Ž_ϋ2ΨυM7€zš/ΞHLΤ :QAΧωΪqδR¨}| ŠΏƒGΟ]Ζ­i©€‡e©oT1 ¦˜’7ΉξHΏ²ΰ6’6έVΊΞ§)τ ‹υ)֊—ζ;m©έŒβΰ€—*pωΝ|iͺι›|ίFμ? žΏΑmtξsΚ:RA~#ΐΰάpMίM0Θ7dυ·ΐVTˆ’ΒΌροžΛ‰M»?$4Y$  z¦cšΔIG]6מΔ;Χ'Α’. |ž^v>η Ν.wΤ”bσήcθ”bAΰsw·‘₯K¨ΝŠŒ:‰ρΥXΓ$ŠQ—œDKω$ςΈh2Š‚ΥSά>“ΙD<™0;Q2MU’Ηœςθ"g dο‡ŠƒfI£˜rdφηυτ£₯Εo^§$«ε8RίΙT%o™ζδtΓ`Έ»· ίCΧγυ„KŒ?{οέd•ηΏg!˜ΩΤCO΅2͜ΐ¬’z€ QΆc‹3eΝw¬–a©Ϋβa{Φi”Γ.ε|{tύξιa±³œ)‡‘ZgθΟΊˆN9ƒ…ι*C;#ΗT-φW«€ύBi$ζΜχσχ-f–ALΚ:Q^\‡c½’ΗOoΜEΟΰσΊpΈω—gϊŠϋ)“}ΰ“2ž¨}Cg…¬―^‘Λ"œΡK„}'CFι‰WyWˆ!„€Ωΰsχ’ΥΎ-AM2Ύz‹Ey©εy0<ξΌ^Ι<’ >YΆtrJž*² ϊŒ΅=(’D=Œ₯lςχ6κΠνWŠΰ—ί ―Š©ΤFΏ •X|SΘ0ωπΡω*`L`Fψ•ς―3’€\ΘiAΐjo…ƒΌ0Π‹Ί"[Ψ‡ζ@œkudAYΕ"im2ψZœανΊ™,ΜΉDΠ.v~Iάνμ~;-¦―λ# ϋZYθ!l‘Q Ο₯KθΌ‹ώ šf¦}”(Β,g*°Τΰ࿈V4ΰ…υ—…Όƒξπ―kͺ’IυGOΦΑTΣW ‡)\ΆΚ­X} X₯“³τβ_C}σΤy¦¦ϊ8.`L ”€<΄>τ:Ÿ3Τ$ΠΡ‚Zϊ?mBΆ ‹hψ[A-&±ΑT¬“―±ΑD„O¦=τtθ΅Zγ¨εΥ^?α9_QεΗrsͺιK™δ8SΈlνΝυ):ϊC†ΛŸL€ 0Ι'ΐžΎΙgΞ92Rlm\‡SΆΈaχ,šά4β>S‡vcΛ9QdΒ‡L`Š0ΑZš›1χΝ΄YAf²‹9ΥτUΓg:—M ŽΛ˜˜Ψθ›υΘ₯`L€ 0&ΐ˜`L€ „%ΐ«w†ΕΒ™`L€ 0&ΐ˜`ΣƒΟι›υ8sJQZƒ½?± M˜ /ΜΠΏ…Ζͺzί†Κ3—” 0©K ΜΎΆ; Ύ…Fpώ'jн 'Z4ξ''J0lz·°Xψb ’ήvbЁ£06ϊΈ L)ΦΫ-0η*·lm= ΑTέΟ—Ρφ ’΅Iφf.vξCU½s2Ÿx›•«γoQ€»πωTΨ‡Lμ;·b±~oΤΧΐΊrhŠq0YΛp9 ³hιύσηΊx „‰7•8%Π•K RœGsKtf¦Χ›ωŽ;›؜0‹\tfj*ζšυ“j”T7Eϊ75•–"qgHΫIΪ¬FŠ`£/Ε+ˆΥ !ΰίΰyΗΪ~‹/|19«΄eߌ9Ζ =¬³™B”KΝSKυ.ΌP^€\&Cf6.6#Oλ­-#μχR†ƒΟν­Γ s°Ιtm6< G»€Έ΅f/H›ƒD:sχ΄‘Έρ ΎP.½<π^@λϊ5A«¦Zkv“Œ|`θ4μ%1Ι-wP&Vμ>β@~θΡ^7z»ŽγWUΫΒ·_S%Ύ΄AΙ}uΕλΗΔ³Tο¦z%½άέ°oLΨΦjεšΚΆ’ριUΘ Ψ0Ψπ„ {jmh³ alυ"^³Ψqψ…2Ιΰ ‰ψΩ‰Ÿ°`xυΦέjΗΖ&ii5Ζ“+Ά3±=H Ύν€ˆηg`αe0“₯썺MyΈREΏv­ϊΙθZΕ7Eϊ·ψ«πš₯œ)mηš挧6ϊ¦Rm±ξ~μs4Nή°Ξ'Ά8ΊpέΧ@qΝ?a9m4žπ΅@ιxdAε$ƒΟ3Ѝ·ήώWfΝΒ•?IΆa3·Hσ"μchJp°bΧ›Ο‘ΐ Yž‘ τh•i€F—ƒ;ξ$O°Οθ [ΎΠ‹ιΧΓo“i2±κιj4U5)bωΊΙY³c[UR‘2β‘F‡ά‚Τ₯•*ο+γγ±Ή'ΰΑΦ݊{Λ¨H!Ž τY>½4‰νΖUΙ΅Ϊρ ϋ*ŸΑεΖΐ€YΖLͺ‡\lΨαΔΠ2ΎπΧ[DΈ!7Ζhȝ±§³—Tq$‹ι¨³­Yμ»ͺσ‹aΞύ£1₯Si²ϋIΥ Ζ˜ %ϊ€λ-ΖϊJ₯h3­ν€{Φ%ε$φi!εŠΗ M[τ ›>©…s‘£Mς}ΓO2ϊ¦JHz=x§q#Ql=©<X_\₯hמCEcίΰ;{xΦo“Ν +žkύ²ΓX«ξžC(.―‡Ιd .›‹κ”ƒοφΫΧ ‘Ϊ—©’»«–C«ΙΕ£Ο‘Ρ·EͺŸxκM])=8\·ΫΔAΥμς;¬;Χγρƒ&Έ¨ήν­GP–§ƒ§χξ³ mƒΫ‘žmu @M{DΛv»Κlb>ιύdμͺ©‹yνϋ₯Ύ\oJ©~<ΓΪNͺWλwM °ΡwMρsζΣ–€₯»žy‹r 4vΛ fg€]λkΗΣ³mΗ3ξEŽ^0$½μύž7ΰφΌttν«Gm˘1rγb³mί‹'ξΌ‘²Φΐ Ί±΄(zζ ώŒ’^€—Ίφ‘Ό6°Ι½₯²[Χ.<£’μ4\ΒΧ―3WOίσ ϋ4.~ZKΠάθ>υς σωύ»h hsΒ†pF*Ίλ6άe’ΌTΗ^ >!½«₯oέ/TΖΕwΑDΎ>β­75yαώFͺίhΥ,·‘QΙΤ—=φΡΔEμν!v™S/¦©¬[+ξ‡ΙHήwRίλqcπό§8ώκΒαTτg*ϊIUΤΘ₯9_{ΕάΡ~jϋEγΦL=4Τo»/χαπ/·Βα{α§J‡)Yψ½ΨP4ύέοcΠ°w°y±ήά8ςb=Ά…ώ©α«’·•ΐ8:PA€>°8*ˆ‰€΅o:™{Όπ!₯Ρia4/§α|Nξ y3Ω°cσrί\A††Cn!VδJ9eΣPΉx‚>γF ™‚½ι“ θo0ˆΓ5dτi22‚Δ¦_?FŠ7উΊRi^ځݐ#Ψ/άT8^½1εŽΓ0Τ•@p|© –\dω<—§ήhŒ=iš“΄?€§§£ΏΏΓοκͺομ˜gΞA4oŸ_€pMξϋRι'†ΟζΐΘθHHKuD³Φσ9μxΩ/ε‘αnBq)™΅jyINπ‰U />λ>$όΔ™ΟΙ‹FΖ¬ή€<ΊγŠ·ή‚€Žw’Αœl+,V¦:ξSγɊσΎͺφg)ž¬ΤΎue4ΧT τ’gЍY7θ‘™“²‡}*ϊIUEV+7ۈ›ihΈŽzμς*ŸήbΗ©Ξ‹ΒEΤ‚§ΉΡ—›w3τzΜKKDΤ·Πιθwˈ’ͺ:τ½»ΝςwH-_•ΗmG,ŽΚβ ΐF_Π8 ˆFΐώδjΙΰστ‘υŸΧ‘‰^l›ΚΆΣά§θ΅4䭁ŒΎZaΘ› O>v·τFu°ηΑβ܊'ͺ–ϋ¬ΎhEΉΧόύH‹χ­ΨK%³ΞΆ-Ε‡w ΓފDJŽπsϊ’δzΛ^g >οPZκΛΡ,:α,hp>εΉz¬¬j £―64YΤsΛ’ωΎωwτžζWΖtΉ%xα%ιF™Frω–|…< οΏŠΎΉ›±Τ›·/ͺά‹V;‡VΖ‘1„–μExΰǏ‘@r’αμ»ΑήΙ}OTΘέχgššΨŒΥƒPhΠβΆβ šΨπΞΚZ_³ΟaΑLΝεϋT~"τiγ_HDšo½ω€Εψ‘ŊΝ¬‰νVr=§jΪC2ςΏζ2MΥΨδ3ψά}'Ρ°Ζ?²‘bϋ.¬ΈξKΏŠ±χ“ώ$1¨–λoΗ‚x7Ž΅ξDm“0άΪ‚κηΚap]ˆ)ί©IφzΣPœή<ͺιν’₯―ν(‡‘ζ9ίϋ3πΝ PΝ7V0άvb%Ερ˜@άΨθ‹'L9ΦJzΘψ>Ύ3E3jρηŽ4‘ρλ±ΗUυ–ΧŠ…σ€eAzήΪ)|‚6ΆmxΉx ͺ 3‘΅Π7δΝ²·‹Kzρή‹’Α'Δm©ύξ?ZG+h gΎ ¦l!ϊFΓ!‹W~ͺ―Lλ?&/ί2š/%χΉ0bF…VΙΉ‚ήOΎ>MΦ|5fLzΖlQ&<ηΡ%ΫJτpr a2D„ά€ξ3ΨΎζ©ΰ‘΄Zζΰe”Φχ7ψžTzίΘq7λcΤμ;U’·M8”*δ$FΉBͺœ›q"Δ"ι=֊§‚–Έ΄‘πV‰Ϋ§'Nˆ™½Ϋ5€ΒεFo/’ΗΠ–Ι[Ό(€¨‘OEΧkΠνŒy7IηΪtd™€―γ­· ©γŸH‹ϊP=ϊ’j¨ŽΏψ2ΈŽΗ—2*ΪΓr™XR5}‰Κ~ϊНΎˆΠ¬0ψ…[ΆU)Ύλ*ϊIU₯˜άžΆ2ψdwz'šΆ(†’ͺ# ‘“Xo²ΆžΎw$ƒOΈΠI}ίg'Ξ{… +|ΥθKΏYάvδZΰO&<ςocςr`ΙL`’X­ΕX^8Ύ‡,ηΛίΠƒsμqCŒ¨θΕΙFΊh¬Ήqζ„l•H)Ί>‘·άdτiτY·τYώaϋ•RΫq¦―y>£IΈ£¦lκτUζ›ΐγμ ŸGŽFψε―‚&ΞΟ³,΅c•oΓρ έ'|s'«ήΤzάΪ—ƒϊ<§kŠŽ?Ήh) ΄dΥΞκ b Kρo―‘}Χ*ϊΙ )@Τ~‡όΚ1χΏ!rω4ΙγΛm'ώ‡ LŒ€όRbR85˜l^Ω4™μŒit]ηŸ1τˆ™V£ΟGέρ£ψg·—†.žΗΛΟΪh_;φμ{VaCGβμ§—0w-»/>]α·Ώ–ΦΥ†Γ5½rwV-…&³Ž£‡qΑ­A¦΄±^Β 6ξ—œ]ΩΫψCάHζήθ¨Φ·―Ÿ«γ ¬΄έ„°ΰɟΓμ8‡Ϊ–#8B+–κ¨luǏ`γgŸ“Χ'sηΝ½Vθ;‡Ρ„Ψ‹Ϋ\υ"ξ=²y΄€ψς ~°_¦Γ˜“I&&mΪ#H—W†γΗΧ„dB[WΈ»a―8¬±θjށ“k_’•<ΙB«¨rK6FΨτίxx)yϋθίΪ§«i£n³€ΗΠ'ΤΖyŠG-ο’―²ζϋιqΗιΑ™ή’ϋƒΦL|γ_ό„*›fmΔί·θ^ΠݘNbλxι8Jhλ 6UΗίΔύŸ]ΖΌΌ\ίόΚΌX¦'žz‹IO±΄RΜρΌΣ֚έp<’O[™{gJζžΦΧ6„ΣΣ­[PΊd d=ΥΆ"§²€DNv?Ω^ηκ»°ζ. Λqόπΰ:w ³oœ‹\Ϊ³OψΞokښ~2ΚxύNμύ―O˜20^ϋ‘5™vυ&lάΟψλm\ΡάvΖEΔ˜ΐD °§o’9ύ΅! » ΦΚ TVΔγ-š Κ<»λwd ‘'‹–φ7κoΐυ>±.g-Ά΄žmΉGγ3aΞχ|žrόΤΏ‰΅pΫΥRƒ-{ŽaPtŠΡ^VdπΉϋΊqΊWL-D™pφƒ2ˆζd ;“LLZ!’ΜDΓ‰’κhί>£ΡH:17#Μd—q8€V,-ۏ^ZΌ„Ζ'"'Ο sνGΓ½žAœ>튠Πx—(/Γ±^Ιγ§7ζ"Χgπyi3αΓΝΏ ;¬LܟžμŸ”πάοŠ*δzυŠr6 εϋN†Œ“žς_y²lα’x+θO°lΊEΫ1Όrr@ŒcXTŒ»n‘¬Λ έ>OpPj'NχI^΅,β(„aε“gPΉ=‚«:Q%·}ώaΗa©ύjhO>Ωΰsχ’ΥΎ-AU_½Ε’ΌΤΊ=wž¬τ D6ψdΩΉ†ς‘―ΔΟ7–φ`*΅QίU‰Ε7… γdŸ˜£kΠO ΫΕμ:ά-zό4z#υfΙࣕM»ίy5ύdŒqϊΥr‡―ˆCΡ……•Ζk?Σ΅ήF ƒρ…u—‚χ •‡*{>Υ|ƒ*/ϊ ·θ|ψ.˜(o‘€ΏNT§g“Eΐjo…£,O‘]/κŠlaς‘Ρ‘e‹€ύΐΙΰkqFœα"κg²X0η=π»LτΠτ’ΈΫΩύvZόCεj'Χ¨΄Ρ²΅ΠCξ"£žK—Πyy²‚¬hI£ή3YKqΟ|a+s. |ŒΆφPYΤδ|3a,°U,‘τΠK[Ÿαυfwž@™b‘aoο!,³Υ'¬6R£Ÿ€ώΟFύŸVψnφ£«½#άR?Tfuύdμ/wfΤ[¬„Ο73· >b‰#ΐF_βX²€Ι `­ ύυnμΕw™Ό1ۚ"^όγk¨oNΰ˝ιΦOΖΙ9ΡΙΈήMtζΘKzΫ™9(Ή€ ΐFίΰqR&0aΦ­8NΫ „7prΦΦΘσ&œ ˜‰¨}₯φ%ٍŠΐΫƒΊeεΧΦk>Υτ ”o2&ΐ˜Hlτ₯N]°&3’@)Ά6C)[ά`|MΖqŸΗ©C»±%ŽENf$B.t&XKσΖ,l6Α7Π>f™°1“xqͺι›D,š 0&ΐ˜@ °Ρ—@˜,Š 0&ΐ˜`L€ 0&jxυΞT«Φ‡ 0&ΐ˜`L€ 0&@γnα•ΐΌX˜8μύ‰iΒΒ WΊΠXUοΫzββY`©A ΜΎΆ; ΎΕNpώ'jŠύ 'ͺ&χ%%Θι£ΰφߚ±’ώ½˜±dc+8}±qβX)Bΐz»ζ\ε–  ­­S7˜¬eΈΗœE›·ΰόΉ.ήR αU%m §ύΥF†Ξ£Λ)¬€.PΌΚ%Π ·FΞ£Ή%ΖCΈμpm¦·σw 77°ΔQΥΔΥΫTλKΠ€f€‹ΝŽΚΥ‹ρ7BιΣ€—O…}y`‚}ηV,Φβϊ8'Έj2·ίΰζ6Σϋ³`3χ,Ωί‹™K6Ά’³Ρ'Ž•*όRβXΫoρΕ•/νjƒΉXπάή:¬0›€OΧφα`Γ³p΄KO֚½p<"mΆN”»§ ōWpπ…rΙΈυ^@λϊ5AΫ8Xkv“Œ|`θ4μ%’ϋ1Ι-wP–Vμ>β@~θΡ΄‘roΧqόͺj[xΎ¦J|iƒ€“ϋ,κŠΧ‰g©ήΚI/w7μΕΎ€mλ.T*@κ› g λ·΅ψqšΚΆ’ριUΘ ΨΨπ„ {jmh,DK΅jΎ°Ψqψ…2Ɉτη€8 &φβυb™Η«‹ξV;66)—돭ν(r0Iϊͺ©γρ8ˆm]l“RqήvRΞΟΐΒΚ`&kέ;ϊ—ρΛ©&Ζ”ιKΤŠγ* XͺwQT Ό„\M€—ΩXΈΨŒ<ΪWΦΥΒDχβφ+c­?‹©ΰίB j<ΏYruDύνΆΑΟΡΑ%=kl’g ω-ͺ•~σΎίΌΈž5$’ώ½Λɟa 𜾰XψbΚpχcŸ£MΞT•:Ξ7wψ >ΟΠ \„°SšF—ƒ;ξ φTŽ[€τ농&«žIβ{w3kvl«4†€{ͺΡ!· uG[Q&‚uΝ=«ξVά&Rϊ,Ÿ^šΔΏ[ͺl| ›eƒ ԁ p{E΅0™ohL?TΏ°ΛŸOά±N—‹ ;œ° 1“ΑWa`”‰pD^Κ@HpΫ Ž~§ΎΙ¬γΞΆf8xάPtέ'z7₯ϋ’‰n&§· ςG’ΑηθF[k+ZχοΗέoE†"v^$βυ·_s‚ϋ³dτΥ‘[ƒt' 'ΐaΌίξΩ΄‚Έ2±ό‡vΫκ₯—œx֘΄οΕxυ:Cο'ώil†‚δbO22$'9ΛX³«h¬AAκ8ΟήA^'Ω0΅βΉΦŸ!;Μ…»ηŠΛλa2™‚³q‘GΌ4Ⳉ`ͺMMAή>9Ρ7ςο3ͺܐΈ½‡κ`«oLVΨ7Χ ¬ΠH6Tl[ΛΠVίΫzΧ­Šs-WΘ»IΪS°t;[JΊQpχC­­Φ?€ΣFσΐVύΊΥl(φύP]ΐ~ϋ4’CΝTΡ€έUΛ‘ΥδβΡηlpΎJ^$ @ _ΐƒΓu±MΐTu.Ώ£ £q=?h‚‹κήzey:xzα>›PίδPP #‹§ν(Tα0±ϊƐα˜(jΪ€X~w0FP’.€p_’¨"ΞT9ib7μΑ;αP:ΣΓιΐϊβ’°w&rq&·ίxϊ³¨ύJMq8ώί¬ρ~»G=ηΞb˜hH½‹Œχά.ύ抷ιs"Ο‚Œ€/εΰΓ6ϊ,ψh†0•Υ`kΕύ0 β&ι^ƒη?ΕρW§<Ά!V86 B‡ŸVΐ’+lχνFχ©/_˜‡ΜοίE? Ν Β€φU$m6ξιAƒΒΰβ:IqΩΔωρξ2ιEΗ^ >αΔΥR‹·ξ—Œ/γβ»`zu@Œψ£†―ξo€:‹Vu2‘QΙΌ”‡*§‰·ν4(‘ϊŽŸ[ψjΪzx Sώji%vύδ‡X“I/θΞλης>~T)†&ΓZ†ߏ…ߝ½N'Ε₯ώι|ߟ°―‘ΪΊ―{2•mΗΏύ”Ύ—Ξβηλž ώš*°·ρQdk.γυ±†k‘ΫwoΔ²9Π‰Ζ‘Cαu2‚FΗ;ζ>ΥR]Ο<ŠE94šQ œύv­― .nΫΎŠζ’Ώϋ} –ΰN6/¨μuΰΘ‹υΨΦθ§…ΈOάy#‰Σΐ Žύ֒虃8ψ3J@^ŒK]ϋP^ώm©lΐΦ΅ ιύτΈ›†KψοϊυΠ[lΫρΜ†{‘£ϊ?/{?ΐ‡η Έ=/]ϋκQ«Π#$iJŸͺα{AβνΟΤτjϊκΨεN•ίΒ@]ΔΚ!Φίn†άiΠΎ›¨ΟX‰τSκΌ―!ΣΧ_r—Žbηš’Ο'}“ΗšsJA₯φέ¨+£ygb ‡žA7fέ GfN>Κz@½ΡgΙE–ονς©7c/qš“˜H’žžŽώώΏΗHxΘθ;ϋζ™s’z£θ(šά1φ₯ςέέ0|φ FFG‚DZͺ‹ š΅žΟq`Η»Θ~)L(.%³–<^Ι V,ΌU2δ.œy'θΑpLΎVΉ.Όψ¬ϋTΠνg>'›τ«†<ΘF_|ιΡsNΆϊaTzž‡©ή:Ηπ RaμIΌmg¬€(W¨o”\’ήRΥ&£Jš’7m8P·9’φΤη QŸ£ΣCgΠ’ δ”’Ρ'¬Φ°Ό WŠιΒ2z½ΖΌBlήqΪυλΠBνΜυω…V―‡AΦΪLθP¬Bb}θ~˜3£κ2ώΩ6’y=v“‚νBΑ=4 ₯ΧσQξ8 C] §ΥZƒ7€4£ΰ…‡Œ.N £y9 +wΒpyα} δζέ,–ΫΌ΄DΌβq»2‚5:#JͺκΠχξ4ϋΎoϊŒa S²!EΓPH ΏΑ ‘אѧΙΘπI•>―Ÿ #Ε„p“ςΛμ»a²5`Ηζε>™τPL£Ž Ή…X!U²JiSαH ߘΛo­πgG_Mz*ό 0Τqˆύ·Ϋ;ΏΒςεf—‘β†Εb»οzο nY΅:εΠΉNTρ•ρηd`£o²‰s~©CΐTM>ƒΟέw λjό[ΫwaΕu_ͺΦΥ²dΎoώyTΎŽ=Ή.·/Ό$=Π(S‰C.ί’―Π[κχ_EίάΝXjˆνΝ^TΉ!OuΪ9΄z7΄d/Β?~Œ&sKωž}7Ψ;ωƒ’ο‰7ά}F»««7 Xo+ΪoΠe­ύ)£?9]΄ Νεϋ4δWέΏˆ‡r€zΎΒΒ›X’‰¨lΘυh§ρΆh2ΗήKœΎceΗvEM›ŒMβԊe­Y)|ή^μX0l¬Ά› GQœώ.tη|‚·½Nωkh!ƒνίƒ-χ?dE‹0n±³ουώ«ΘΫΚ‡—·OŠ k—έ*_x-Ϊ§φ:›hπy‡zΠR_ŽfQΆ Ξη±4αdPͺ“ε ©rVlΖ‰λ₯χX+ž—Έ”εΪPx«΄^ζ§'Nˆίν@αr#Œ·ΑBΤdg‚œ"YŸi³‹Q΄θz Š›1ο&ι\›Ž,ΕςŸͺω’a‘žAͺ:Ή3ΥP½}ρep½eα$ξΆA^€Λ‰7’όq―«h“γΚJV5}ΙΧ+Tυ;ύWδ…inΐm•e8Υ,Μ™!/Ή³1xX&]s΅Υc#M§5•ΪP]“‹λgΰΚΧ#Έ8δ%£Mƒtγ|!₯HΑyδ Vm(„Ξ\zύ"υ_Vn—­uγχ―ωz4ςς-£y₯B˜SL.@IDATpŸϋ#ζjΤX„=O χz»OFŸ&kΎ$C U}*yμηI:τΌ΅Σ?δΤΥΆ //AUa&²Πkςυ)_Χxϊή‘ >AωNκϋ>ϋ;qŽ,",aν§@"Ζ·¬Αν"G/ή{Q2ψ„΄-΅ΏΒύGλhΕΟPIΧψ\e½ΙΪͺε+§ χwc Ί―ŽQP–©τ[;5Ώέτ›Ωӌ“=6ϊ~eŠΟICgΡ‹§Y Ωϋαƒ ΎαπΥΙ ?§LF^œH*«΅Λ ΗλšσεoD£/C'hξž“ώaDUpψŠο±A›3 ω“žΗΗΆδ·-4ϊ1(nΧxp}„α –"ΏZi³hάQK3N=ϊyΧΘΫ·³νŒψ¨‚¨rύR}ή!\ λE§§1ϋβCŒŸό½QWSε=Θm(št¦_\ˆδγξΟ2ϊ  2wΚΖ"]2GGΤV²_q‘i8–χ*Ν]― F΅:ΎΒΌΖΧJ ΔΈ2β=Š·ν¨Λ/qϊͺΛ7[U› $›Τ#5}I'Τυ;ζS γΜ¨1`Ε;ύš†W>žgΰόωνΦj8ŸY‡\ς€‡ ιϊΐPEWσθy¬ ¬¨! ­ZT±φ.©ίΉπΗ€§0;ΓίισW‘*?ŒdMŒτ]VΓAx‘{Ÿšt±Hnœ9άat}B#,ΘθΣθ³hθ5Ύ υΌΓŠ/+]x¨‘’q˜>Λ?¬σbΏ2ƒvœι«EžΟˆVήΉ–ΗjλMΦ5‘|γνΟ’φό[(W•3Φί,΅Ώέ³hͺ‰γΙθ+σκώ ­!²Ž_ :ˆZoʈ||M °ΡwMρsζ‰$Πρ–ϋb¦Π£„οͺΩΧω<@‘m¦(‚Βίκ<ω1ά΄7Ν6NvDu:PRDΓ­¬[qΔ±J?Ζ\I‹ͺ΅"3AhφΎv…ΘΫWXΫ—‚!Δ,8ϋκ³Xί(ψιh˜Χ,ΟΡaΕ¦z؜!hkξ1ϋ2£ΜρRΘv:¬΄ .‹Κ$βςuVδ£ισ„Ν΄’²ί€¦yl&Ѝ||τ₯FΠ3œhŽ«ΰKb°§— MάmΗW”X?₯o¬ω‰§’MŽI;IΤτ%ΓκϊΑ·v“ Έ o™Gσπtβ‹–άό°ο=€ΩΛΦω^B™Ππ³r2ψ¨ΠžAœώΓ{8Σϋ₯ΰΓmW]DσΣf+ϋvΌsfςΘ`2YWΓXq›4Ο¬ηψoΒ΄~/Ίύ~?H+ι…p…+θ [¬SeΩbξSi₯Ωβ—“F?Π0μΰ ?–„ι˜ε[Α ’6FΗδg9‘Τ΄ί |Θ7ξώ,ζώa¦Κ5‡Ψ~»Ώ†τϋ‰ζΧπ;Λld£― ?λ΄μ@Δs½E”ΐ7&@Ώβ“ -gΑ’θlƒh³D‹£ΈΧ…τK»u1­cGΣΡχβ>μΐeJLq4Ǎ  v…4όq€gά² ;›ΙΫ·Vπφ±re–βNό‡i³δ…:Q»Ξ‰ƒ'hσua[ƒ† š[# +Γ]ΎET‚‡ 0dΡb.δά~Ϙ!Y +΄X΄vτ< 3Ν]2Z~@ΏAΞΘΓI;δΊΠβ{w,’-%Fίβ|ŸΑ8ruμ3'壆―΄fYόάύ)'©ν$L_Ώβt Œ\žNAU_βRΥ:¨έ(χ &Tl}OϋNjζa -Δβb1•b‘ψ•€m6žPάDFΌ}υctθ{i%_€ΟζΏ‡­^,Γ^†[Εαψ­CΡ» ΠΜ8‘ΕWο7‘YqK!J:TΕˆΉOuΕErΪe6σ—Π“dg`PψΝYΒΣ&ϊn^Ž&ν―ό@DοCˆ―‰kqcΐΉJqh˜*½KΉ ²ή’’$υgjϊκXΛ95~ ƒKC¬Ώέ‚…SΡ–ͺhDHt>MyίNy YA&$rΡΰ< ΄]ΥΞκ \„%Η·Χ6& Ίυ€ož¦WηŒΛiŽa₯0ΖΣ2_’B'vΌvJ&¬H—ψЌWNJ\Ζε£DΟ 6Zͺ\’5„ΧŸ]ƒ΅kΦ`ψ-|ρIƒ…Ύ $υ„w‘‰ ΫΪώ ‰εγοΆ‰΅VlGγvaF“ZhN‚4,ηήΗΔ9JβεR;VελΕΓ έ'"ΙεΎΖ&«νˆEWυ'ΌΎ  c…διwHσμͺi._ Έh1•ίΰΌh8kp~ŽtkNΐφΕΘZ½χΚΛn„HGδeγ  (eε΄% ΓΧ}³ω€8Ρ5 ΔΡΒΊi§ψΒKΊ!ύ΅VԐΑ(ΌSbοSϋΡYzSP°Ά’L'9TΐvwŽx2ψIg„ο¦7џύdKaXαπ―³n±;ΤΰξΏίιΧΧΆύI˜Ε>1ΡΊLy“ΥŸ%·―¦W))ϋ[άJ"sˆϋ·;8>›δ[Σ (\„Eΐ+—ƒγ₯γ(‘εηu4Ο©κψ›Έ³Λ˜——K^! ΰ•&zΞΆΗΕW6„Ζzδά₯OkΝn8Ι§%δ…}Θ€TZ_} §§[· Κ·1ZΥ…=ϋήƒUΨΑPΗ*λ§—0wm"rΒo-­Α’ΌͺΣqphQ›½?čdj}ϋϊι°ϊ?ΒJ[H‹iύΩ·^Σ+'qgΥRhˆ™γθa\pk)mU§ιΦ~£6δf<ύYΤώ %Βδ Ώ&!Ό#=”ώ ΦίnϊdFύ]£Μ'ϊ¬‘τοE>•°§[ΒΤ$ » ΦΚ TVΔχFZ.΄°ΌχΓέ’ΗO£7œo– >Z‰ͺϋ4 ±Š+8Q^\‡c½’ΗOoΜEΟΰ6>άόΛ°CIΕ=€Θ |RζBΟξŽ%¨rυŠr6  MϋNFΦQ/ͺΌ+ΔB@ž,[Έ(ή ϊ,›nΡv ―œγγ[€‡Ν έαήΐ;qΊOςͺe ϋίQVφκAετ£Δύ§±κA±ή„aj]&rɐ >aœαgŸ|ΫΎ °γ0Dη-œ‘'|ξ^΄Ϊ׊{œΕΛWςSx0<ξ|ιΡS6ψdε€s -#_>γk;J ‘Ž“‘oΌuK›V¬¬¬¨Δβ›’<|.A}I$ξ‘Χ‡ΞaΘC΅‘Υ#'׌|3|ΤtΕΎaΗΟ©ΘΑ…šŸ·’—VκΌr9ζ|Ρΰσυ‘g@ϊy―ŽΘ‘ύŸνυο@tδ Wάα΅–0ύ­’Y\·½Β²³rθ;kΞ£ύ?Ιΰσ σγξϋΘ/cŸκ’—7[ZOB\Λ”ΎΓζ|ŸΑηΐ!ΗOAλΠψΓΘUα›.¬»\ή‘Qιε_ψžΎ½F₯–ο¦<˜“μLz­•I«Σ‹>‘‚Žφν3ι% ŸŸ›! 7u΅Τ`˞cR_Bu'|ξΎnœξK %TόJν7^ΎŠβF8Œ―?‹Ψ?πo‘ΔY+Ηό۝λΞD0gIϋ^Dh‘3ύς·ΐ_g:.Τ!`΅·ΒQ–§PΈuEΆ°F”"R ‡”ΩaŽΦƒKτφ½«]Ή)z Ι#D1YKqΟ|ZΩ’fΡ\ψmν‘.² ωrŒ,°U,’‡΅ρκMˆ·„βΡC#=TΆ8γπbΔ¨Q’’ΝτΆcwž9ΔόAπΰ.³ΥϋΟ'zΌΎ$6ΝL+ݜ9s¨υ| 'υ9‘‚΅Μ†ωBΌK―-rΌHι£]·q½Θ(ΘΎ„ώΟ»Θ‹ΖHŒ& β½XϋTŠGίaqPλTωnZ,˜s‰^~ΉLτςι%qOΣ³ϋν΄V n¦{ϋXνnΜτώ,–w9Ωί‹TeΗύ RGgI%Πqβ·8–s>°ίeWΠfΖρgή‰6gβ 2WG;\η€ψΥ›)-58ψο?’M£ΌΛNήAςZόλšͺ!©pΆΔRo±ΖKΠΫΞ„™₯N£iςα‘CΘΉή Ξϊ₯ΊψΗΔ~‘’Χ—D+Uΰž‹φ6qΕt)IG›3€έδLτ¨“›ŠQ •YΕΪ§RΌ˜ΎΓ*³Ott“ »κV’ο6ΌE{+v’U5Ο‹0ˆχ·Οιή~ΥβΨŸ©4]γsΏ>]k6₯ΚŞΎ”ͺV† Μ0Φ­8JΫXΘΓͺ’–ήΫƒΊeε πκFΝ%υo2³Τ―#Φpϊ οέqκ«ΒL8Ήkk&>qϊAγΕL€ϋυ˜QqΔψ °Ρ?;NΙ˜ΐ„ ˜`-Ν3)<¬Ψo. }Μ 2acNσ‹ΜlšW0/% ”bkγ:˜hHN‹Y41yΔ}§νΖ–x½IΙ2²R׎χλ׎ύΜΙ™Ύ™SΧ\R&ΐ˜`L€ 0&ΐf oΟΐ2s‘™`L€ 0&ΐ˜`3†/δ2cͺzϊΤTZ‰Ν—ΐωΣ§θQμou»ε6Ϊ]£wι’@£/ϋf,Θ1­ά–΅ΘΎΌjβ†—0­―ζζ}9TG^SΐXκMΈ–•θzSA²£±φ?εaώχ‹ρθCΛaΠdβή‡¬hv/ΕB$GeL€ 0&ΐ˜@J`£/%ͺ•PM`π,~ΩΨ‚P'ΜΘ¨΄ί›wτ/ͺEFMΠαΔGϋ(ω',§ΝŒ#ζ‘&nΤL§ηMΉŽ”U$_‹ΘtRPΈΠΡ.όοΑνχߍ₯aqφλ&%gΞ„ 0&ΐ˜`Ι$ΐ Ή$“.ΛNχWηΖ|A™ŽNό„ŒΆ6Ϊ2  _\OΆšΈΧlͺIˆJ/αυΞυ»γIΘi˜`L€ 0&’ΨΣ—’ΥΒJK mVτ(³Ώ‹Ζ½―αN³4$Σλΐ‘λ±mΜ‚/₯ΨΎ{#–-ȁNάuΧ‹‘πzγF4MΦ¨>Kv=σ(ε―Ν(Ξώ»ΦΧNh#r‹m;žΩp/rτΒΦη^ φ~€Οp{^:ΊφΥ/~£Fq-Ά­€Γ:τ|€siαΆ7–ͺS{£{Ό ³ΐ‚‚g°―ο(Gc»t₯vΨ\ŒtΟ'ψεΪͺΌVμ<π3˜ηŒβԞŸa‹SφΗQΗΎžqίψ2ζ&ΐ˜`L€ L]μι›Ίu7#5ΏξofΗTn]n!–’Α7κv“ΉhtF”TΥ‘R9 ΟT‰GλP’/|ξ‘!Z T½1εŽΓΨZSV‹d­Α›/T‘€Œ i:κŠΡΒh^ŽΊ£NΨβ”n²5`ΗζŸ±εΑΠΠ( ΔdEa cΠβ7P£ƒŠΈ’«$Όn0δ’ —K‰4™y’Αη€Ί †<ž|μnqΡο`7Eχ‘€δ>μ:ΦΆjtˆ=R‡Σ¨[VL:,ޓ}au\τ’ϋƒκβAάχψ.τ –ΥEΙ“[₯(Ό}zP<6νZ(mψΗK‹Χέ=ο Ρ·ΣBΌu<"Ψήζ–‘ͺΜEΊΞ™`L€ 0&0•°Ρ7•jk†κZ³χ0Nœ8—U0ΣβžΎShώySTžΎwP% μlΒΙΟδ9ZΎ…9Θ΄,Oς8ΉΟ}„s5jjjPS½½Ÿ|%ΚΦdΝGEΤ\&zӊ…σ$zήΪ‰&Ÿ‘βjΫ†—O]…g-Ό+Θ°‰)GΛܞ) ‘τβ½7ϊ‡@ΆΤώ =’₯”’Fqƒt¨ςSmΩF…>ήΗΟλ}«’χ‹Χϊ7u9 ;^›~ύΔΪΜΌΛ-5(,x*sη+IΰκΈiγ/pͺΟ ήŒ Ž—Δφw€ΥP”™`L€ 0&0u€MUYΣ™JΰλώsθKŸƒ9σr '[F;οV,,$ο‹Λ7„/ ο°lδI7εΥ!ύQ³3 ™[δGΚ_…ͺ|ΐ& Faaζφe#]°SΘ„9s"8“OΎ 3ΙθΘBň\R!}HHŸεΫZΒƒ‹ύΚ{ν8ΣW‹<Ÿ±+έQ£ƒŠΈ~FAϋœ+B8·έƒθιθψ3܏˜‘σ*fΧuΤγχ+±‚VP-ZW ΄7Αφ¨•ό?ΐ>y§Ž Τ±Ιvς²δ2„ΎΎKΈtn  (1&ΐ˜`L` `£o UΦLU΅eΛF΄ˆ…·`ηΑd Ρ0ΝΥNŸG'˜˜[Ά0œπΏπ{1Ί4Μ,\AG°-.§ψ―™τ˜-iBcO‡CΕΘπ3 ½ν|Œ¬(‘Υθ &.ι mž‘ΟΉ*k1Ζ—oˆŸ‘΅tΣςκ›]X±‘€ φϋP†“ψΕ(ήλyη ψ¦ώΈ‚&jλxΝΚe0Aξ½p [Φ<•<»_‘%2&ΐ˜`L Yδ'ΛdΙgΉL :ρΖο?Cαͺ<ŸA1ΡΓ#βB!:Œβ«χ›Πά»¬‘QŸ!ΓφQγΊΞβ"9$3uzΜ_b:ζΚΝYι’B#W! τ θg*­FυκΎΌ£C‘iKSˆ'pΔΗG‹ƒΦ!‘α™΄zPP£ƒšΈώL<ή1ъό›EŸœ?†ς@K]e0-™/yd5iA;ζu6Ώ†³ΐ¬ΝAEλ30Εςφα ‡’"'PΗ²ΙΪχϋ7dπYΠψZξ€αΙ£iipτ*άΨ¨,ͺβ8YqYπ!`L€ 0&0£πœΎUέSΏ°ί ΗnpE-mηAt‰«»haέ΄Σ?_LNc­¨½Zž0&_•>Οt%θζζIˆ·ύ—%XΑΪJΦ’¬€νξQΤΰ'c^ή*=ΈŸ]Β”'ν›ͺEΰ\‡›ΐωƒO‘Ήemχ € i^έˆβ;rξ9ŠΗV”#SΟ9~ŠΖ0s —|χ&žσ=!0ι–«₯[φΓ ΰHΤκEƒΟέ׍ΣβvώδβΤΔνh\]ΏλσΠfζ[2ψˆλΐδέ xΡFϊ¬WΪΟΟνΥ!7?ίgπ [oόoΤϊ7ZWθξ’a­’7‘]ψ#œaX©­c‘=YiCω…Y’Ս+WD—©"Σx‡αkš’€°ΖΊ,;YqeωόΙ˜`L€ Μ4ί’u¦šΛ;… Π2ό_ΪΰσξHεθi³Σfκαžψc/§₯Τ†E΄€η%τή…ŽΞ_μ"UΖ΄ ¬bΔmdπ΅8Ηz%΄˜Ν›/ PάάύΓuΕΨ)ͺO“Ε‚9—h˜¨Λ„]‡_BM©;»ίŽυc,ΚXu«ˆk)EΕ"ZhΕs ο:ΫBζϊ”T~˜,°.‚VλΑ§ο:Ρ±*lpߌ\²ΟzΪκ¨ D1^[kφΒAžΙ@Dλγ’)bώ˜|Δ˜`L€ 0T&ΐF_*Χλ–€©΄O½·ά8ι³Gρ?/?‹mα₯[Ι»·Šφ€D›ύADtpZ·βΈc•oΏΎ`z'χ`mΝΨΉ‚Α±RχΜήzeyiϊ~·λΆ-α’ΊΚ³fL€ 0&ΐ˜ΈΨθ»Π9K&|₯ΨΪΈ¦lΜΡi1‹VŒqŸΗ©C»±%Μβ4ΙΧ'q9T<·ή>^ο0>£-žͺoIœp–Δ˜`L€ 0iH€ΎiX©\$&ΐ˜`L€ 0&ΐ˜€LΰΫς2&ΐ˜`L€ 0&ΐ˜ΐτ#ΐFίτ«S.`L€ 0&ΐ˜`LΐO€>? >`L€ 0&ΐ˜`L€ L?lτMΏ:ε1&ΐ˜`L€ 0&ΐόΨθσ£ΰ&ΐ˜`L€ 0&ΐ˜ΐτ#ΐFίτ«S.`L€ 0&ΐ˜`LΐO€>? >`L€ 0&ΐ˜`L€ L?lτMΏ:ε1&ΐ˜`L€ 0&ΐόΨθσ£ΰ&ΐ˜`L€ 0&ΐ˜ΐτ#ΐFίτ«S.`L€ 0&ΐ˜`LΐO€>? >`L€ 0&ΐ˜`L€ L?lτMΏ:ε1&ΐ˜`L€ 0&ΐόΨθσ£ΰ&ΐ˜`L€ 0&ΐ˜ΐτ#ΐFίτ«S.`L€ 0&ΐ˜`LΐO€>? >`L€ 0&ΐ˜`L€ L?lτMΏ:ε1&ΐ˜`L€ 0&ΐόΨθσ£ΰ&ΐ˜`L€ 0&ΐ˜ΐτ#ΐFίτ«S.`L€ 0&ΐ˜`LΐO€>? >`L€ 0&ΐ˜`L€ L?lτMΏ:ε1&ΐ˜`L€ 0&ΐόΨθσ£ΰ&ΐ˜`L€ 0&ΐ˜ΐτ#ΐFίτ«S.`L€ 0&ΐ˜`LΐO€>? >`L€ 0&ΐ˜`L€ L?iъd²–αsfaηΟu‘­½3ZtΎΗ˜`L€ 0&ΐ˜`)Fΰ[€Ο_ΗκdΑs{λ°ΒœtΛλξΓΑ†gαhw]O…SY ͺW~—ΟΌmMν© λΐ˜`L€ 0&ΐ˜ΈζΒ ο΄bΧ›;όŸgθ. ΒKͺjt9ΈγΞΌkt8²Ν,-(Dρς;ΓέζkL€ 0&ΐ˜`L€ 0I`ΜπΊΖ4"Œ³‡w`ύ6§ŒΟ΅ώ ΩIMNύWŠŠy§¦‚¬`L€ 0&ΐ˜`Lΰήiƒσψfδ’Ν7Τ½%ΗWΙT½bξh?΅}Œ’‡‹qk¦―ξΛ}8όΛ­p΄ΙΓAK±}χF,[hWz14π^o܈¦ŽΠ¬bˆ+η-ψ!΅zτZβΖ… nQ˜†N?|Ή[Zβ˜‹h­@ÏοΗΒοΞƒ^§ƒ–τυzά8ίχ'μk| Ξ8D JΩΆοΖEΩψκΤ>¬ί"κ)ό©xn/+Όέώ 5Ν ₯•Ψυ“bAN¦€ƒΧΟε!|όώ+¨ΪH/ Ё™œ£Μ.¦z“ρ'`L€ 0&ΐ˜`S@ππNK.²DcΜƒSoΔ`π ₯Ν6βζL Ζ|”W•!ΟgπA£Ξ‹ΒEyS%­CIΎd𹇆ΰz!γ0Ά–*ΠΕwNnς6pƒhπ 2tβΉpΝ 7 γϊt…ΰΨ­Φ°Ό ™zΡϊ»ΊΠ}ϊwΨAΊ.+.AII1Š6νAŸ‡RirpCΦhΙ#ή•h˜IQελΚ„Φš•Θ.x{±ƒΚR"0[VϋŽύ8|θz‘cf&§‰±ήδθόΙ˜`L€ 0&ΐ˜ΐΤ$4§/=cΆT ΟytΙ# -Υ8Π°R.4zς Ά―y ςme±{ΪPλ_9³M[|c Ι ΅,O2'έη>ˆΉ5–YΐΘτ~ς–ηpΠ¬ω¨ a-jβ*2ΟŸ§rθj«ΗΖ6ΐTjCuM.Ÿ5‚+_ΰ␗ŒW σ)E8 !‚&pΪE0ˆ…pn«,Γ©ζ6e;œΑ9ΗΙLM"Φ›?™`L€ 0&ΐ˜˜²‚ŒΎα+£RA΄0 Ž,Ρ¦Ήst4€P.’FεDω2ΝΔ™·#l•αO―Ο_…ͺό@*‘& FΡy¦"n2m.k5œΟ¬Cά“aBΊ>#ΜΥΔ^r5ŸΒΐ†B5¬Ψ`§OΓ=4H{&žση[ΰŸ*©†οfQκ-±ΕaiL€ 0&ΐ˜`L€ \AF_ηɏα.Ο'ζγΙ–]§%EΐΊG« £q‰ί„U”&Žλnσ’ϋΠαχƒ  ίƒΓ,\A‡`ψGMΖ7XDΟLhψY9|$3ˆΣxgzΏ“Ένα fj ™Z‚Ψ²ŸElc-X»Ιƒ†\…·Μ£Ή€:θhή_nώ Ψχΐμeλ ―­*Ɍ‡Y,υ»Ζ“ 0&ΐ˜`L€ 0Τ"dτ‘s—I?2-p[± hW˜ΓQΜέSYˆαZ΄E;Š―ήoBs‡ (UMάpjŒŽ„»ͺ‹Δ}ι=8όόƒΨ¦ΠwϋκΗH–Γ-8λ³½ηs.’gϊμ2;¨έ(Χƒ [ŸΖ« hυΣyXb3Αι€Ÿe¬b˜3 _kΐ΄•ΗhZά½ŠcYΩ5Œ$ΎΔ˜`L€ 0&ΐ˜ΐδψvpv-xσ4Ήα(—W’‘οv2_œ‘σ Ί„₯K΄°nΪΌκ$]΅VΤΐ^ν[‹RM\₯:³$ϋU—p*ο«9žπβ}Gφx zVοΔ½Βj4_»₯ύƒτ,Ϋkm@Ί•ζ\Ύ@p‘₯ώ78/£Αuϊ9­x™s”Γ TZ-­"ͺ6N/η8™πm&ΐ˜`L€ 0&ΐ’@ ΨΣG4W½ˆ{lFνM·|ƒ‡μΕΧ£ι0 ϋΔ hΣ‚ητѐNΩόND]¨m9‚#φθ2 Qwό6~φ9†i<θάy4lQΨ΄―οβ"0jβ2μψ°ž²<Ϊ/Ž£GpAάbθ’}ϊjΥξΣGFΤΩΑG°”ζσ­°Ł2†Σ³aΞΖ{N,t|ΨKzšE=Ÿ;ς>ϋb9y9ΫΡΦ’2”—ε’ό±Ÿ’o —ΞΖ-·ζB/οΓ»Νςfq0‹©ήBβS&ΐ˜`L€ 0&ΐ¦OŸ ΏεΕu΄•‚δρΣs‘λ3ψΌξnώ%£ihαqθ&M~Γ0m1΄mCqέ~τ@OŽ 3ΜdμŸW˜7wZX—ΤΔ•Σ΄oΓC§1θ!7ν§—™™Isΰ217cά‰†²Ε§ 5?oE/­Τ)x'sΜω’ΑηκCΟ€΄ρ»χjœΓHIΟ—υŠyitFδ ŸBξ¨bΖδπΐ9 ‰εΡ#'׌|*lG(ΦΟΟηSΛ,Φz5ΖUͺ6π­χγ?η&ΐ˜`L€ 0&ΐR–ΐ·H³ΏFΞd-Ε=σ…MΔ=Έ4π1ΪΪeΟR€±]·Π6‹ŒZx.]Bη]θθT|!"ΤΔ IšSk™ σηΊ~ gۘ₯/γΞΓd-#ΆsHξΙ 2£ΗΘ4Y¬Xts6ζz νΡυΈΦΜΖ€/0&ΐ˜`L€ 0&pΝD5ϊ™Vœ1`L€ 0&ΐ˜`L€ $„@˜α ‘ΛB˜`L€ 0&ΐ˜`L °Ρ—•ΐ*0&ΐ˜`L€ 0&ΐ’E€Ύd‘eΉL€ 0&ΐ˜`L€ 0 ΐF_ T«ΐ˜`L€ 0&ΐ˜H6ϊ’E–ε2&ΐ˜`L€ 0&ΐR€})P ¬`L€ 0&ΐ˜`L YΨθKY–Λ˜`L€ 0&ΐ˜Hlτ₯@%° L€ 0&ΐ˜`L€ 0d`£/YdY.`L€ 0&ΐ˜`L °Ρ—•ΐ*0&ΐ˜`L€ 0&ΐ’E€Ύd‘eΉL€ 0&ΐ˜`L€ 0 ΐF_ T«ΐ˜`L€ 0&ΐ˜H6ϊ’E–ε2&ΐ˜`L€ 0&ΐR€})P ¬`L€ 0&ΐ˜`L YΨθKY–Λ˜`L€ 0&ΐ˜Hlτ₯@%° L€ 0&ΐ˜`L€ 0d`£/YdY.`L€ 0&ΐ˜`L °Ρ—•ΐ*0&ΐ˜`L€ 0&ΐ’E€Ύd‘eΉL€ 0&ΐ˜`L€ 0 ΐF_ T«ΐ˜`L€ 0&ΐ˜H6ϊ’E–ε2&ΐ˜`L€ 0&ΐR€})P ¬`L€ 0&ΐ˜`L YΨθKY–Λ˜`L€ 0&ΐ˜Hlτ₯@%° L€ 0&ΐ˜`L€ 0d`£/YdY.`L€ 0&ΐ˜`L °Ρ—•ΐ*0&ΐ˜`L€ 0&ΐ’E -Y‚'ΧϋΞ­X¬Δυ5pΊ'9a’LΨύ|ζ`T™–†‹ϋPUοLX,ˆ 0&ΐ˜`L€ 0&I7ϊLe5¨^ω]\>σΆ5΅Η s6.6#Oλ)›’§’Ρ—}3δ‘Q”&k‘IqΖ‡“M@};›l 9?&ΐ˜`L€ 0&09&}xgΆΩ‚₯…(^~gμ%τ Q½ψKμ)&7f‡[ΤΩ86ΰσφަ¬Ά“ΛζεW;»FΊrΆL€ 0&ΐ˜`L ™&έΣΧεͺXΟΥαΛՁυΕE1Ζ½VΡ\θh“\ίίπSΐ¨½VŠpΎ>κΫ£cL€ 0&ΐ˜`Σ“@x£ΟR]Ο<ŠE9r°y‘ьbΰμ°k}-”2mΟνΕ…sqω\ήh†Ω¨)Ή/œΕχoλΡΤαƒFsήφ6>ŠΉδ­ƒVŠ£3―ΖΑƒ+FАταΛuΨι§l©lΐΦ΅ 4O. —πίυλΡˆβ‹XυέΎŠζ’Ώϋ} –ΰNs¦8$Σλΐ‘λ±M‘?¬hψρύXψέyΠλtΠΨM―Ǎσ}ΒΎΖ§ΰ §G@£Δ©ΥAζ<ڏCm£θαbܚ©‡†κΠ}Ή‡ΉŸqj±mΗ3ξEŽ^0P½μύž7ΰφΌttν«G­…mϋnƒ¬vθ Ή(\”'*h²5`ΗζŸΑη‘²Β[ˆ…yT'Fd#M ΉyσΕϊΉυ£|Iό4Rέλυ™ΘΚΈN<ΟΞΝ£ϊCOυ©σ †Ί™ζ₯’Αηv ­B‹‚‡~‚216ύ1UβΐΡ:”δKŸΤv4Π Ί;ck©ȍ΅ήT·3Τm@A`π‘ΑIνw”τΤQ»+(y όΚ€gΜE&έΟ$ΞΖ¬ u>`L€ 0&ΐ˜`©J`ŒΡgr5ΘΏGŽ™>΄nZ†ϋŠοΓγτ>$\ΣζβΡ†€Ω72*NΆ£^t·9P\R‚ϋίƒ^αŸ€όέS5ΒΠو5EE(ZΆ ›χŸ/Ή{Ϊ°ŒΞ…EEΛPεw Š·ΡΡΈžSš";ΞΊ₯kαfΙΕ§―ΰuͺ£²cΩ¦V ˆΕΘΔ½Y₯ŒθoWΊO;μEXV\‚’’bmΪƒ>‘lšά―ˆλO”ΰΥ:ЈYΉF7Ž΅:DζEE›Πϊ»“8νΊ@šπδcwKΞΑn8Šξ£²έ‡]ΗzΓj/Χq@MΎξO4"yd1ԍΝΤfυJ•ζι=„ββEΘ- ‹|ˆνu6δ7Π;Τƒ=ΔXl;€η±^‘₯ι±²ͺA!ZΞ}œzSΩΞ¬5+‘#δβνΕjƒ%Bϋ]VϋŽύ8|θzόπ`L€ 0&ΐ˜˜Ί‚U·bα<x©η­hς at΅mΓΛΕKPUHž…w‘Ωΰ ZDΣ{α=lt΄I’\ΝψΕΫΕp¬Κ…ξΦΡ[Θ$œ³Nq;μ‘Ϝs/>}=}ο†v6αδg‡²<‘ά’ΧJΘΘΥVT$S© Υ5ΉΈ~Φ|=‚‹C^2V4H7Ξ§XςψU!EβΓDtθik@­uΤN4mρU¦₯·g c)½xοōπΥZj…ϋΙσ–G†ΨD‚»ΏBNΦ«’‘ΦχΐhWGθƒd‹†;yω–‰ΌΙ4=χFΜΥ¨±ΜF χ“―°<—†€fΝG%i‘rˆ₯ήδΈ±΄³ώ+β« Jrn«,Γ©ζ6±]w8#ΦμπΐWΌQ΄‡Ο-gǟL€ 0&ΐ˜`L e „}ΩHϊέ8s"Ψ ιϊδK€Œ>> Β A—’Hž‹_(ΞΘκθ‚[0ϊθΉ› ;‰>‰O_ο°ΟuθSgŒΧJΈn­†σ™uΘ5„·‚υ“0΄/n†pζm₯©­ΰž>Kτς sμ.φ+ΣlΝ3}΅ΘσcΚ;ͺŽΣΘx£peHpνιιΏ`Hw »ί|3 !;ƒχJAŸΏ UωΎε‡& FΑ+¨h†1Υ›RΖ8ΗζSΨP£Ζ€μτiΈ‡qώά8ΎΎιAR:[j±Vi‰έε&ΐ˜`L€ 0&z‚>“³} js&$ΘQΓωέ€ύ@‚p1wv―ΎrQ"*bBΓΟΚΙΰ£žAœώΓ{8Σϋ₯ΰˆΒmWν«fvh™# ‹σΖDt JŒδκS―ΡΥ“MΔθ±ΖήύzI°^D4,ψΠαχƒ@(ΝYΈB/BR[o!ρΗ=mΑΪM4όγj,ΌeΝ]ΤAGσsσWΐΎχf/[G>mL€ 0&ΐ˜`L`j~ŒvΕEr‚eκτ˜ΏΔBsρ|C©Œ7gω¬ˆ‘«f†)ƒ&]φΫHW-–οIžMšbΐ€2 γύb ²’ί §Ύ‘bƜ›J±H΄W<8όόƒΨ¦pšm_ύE-γ1Ι„ #£>£XEωΒ š€aεω/Žψζύiqc³’†ΚζΧ£δlοyΐœ;¦Ύ₯·~©‘ιk-τH ώΠ²)_½ί„fί0±'viΌzθt’v£lΪ™P±υi<±ͺ€V‡%6ΘμTϊ΄iΈo™O―¦‘½£iψ¦οmΤΤΛi'¦&§fL€ 0&ΐ˜`Ι"πν`ΑύθΏ,ΝΕ*X[‰ΐ²&°έ#Fό€Sœ³₯L§Ν)Βv²ŒV¬ΫβmοωsA[<ˆgIΖ€.;_!_)-τΈ_Ψ@ ΓύcοΕ£o¨”1ηs~§ο¦ωшϝΈWX}$J8Σύ•xW77?μκQ’ߚ€Α‚BΞ:’[΄Ϊ5ΈϋοwϊλΐΆύI˜Γνk·΄―bP}•m‡5w¬’SδS‘K\=G 릝c8Y+j`―.œ>–;±΄3+ΝΧ€Ή|ΰBKύop^ό hp~Nΰ–ο(ΫΌω((ΘΗ‹Lcξσ&ΐ˜`L€ 0&jBά1.μΩχ¬›—Cc(€γΘAœύτζ. ₯όEηΦ~ϋλζ0eΠ£Δ~ζ²O‘Ι^@[‘i‘—χŒ‰Ϋρaw?ŽV=‰κΠqV’(ZόΫ£‡Ε–α5ψ\8}πgΨn&Œc;Q{΄ nκN‘uοL&₯2aΑΌ€Ah΄ήZ7™Δ}FŸ!ΦOλφ™h-9%Ό}‡―ˆΙEθc]šJRΪ•ώ(.™#ΎigΊPφ|zh¦N1ε€™ς% >Ο`/ΊϋεI`Beψ€΅TαΩΪ7Ȑ’Έ΄κΌΖ‰%Ε_΅;1θ0tYr›“΄ E»ΧU_†νϋίΒ€”=ƒdπΉz;Π&-—’έ―—ΌΛ9ˆυ Σ…ΑΐAa6DnΏbσ„ΈS*ΧE#@ΠF3ΒζWDΟݝž Il$[|1޲ΝοV©ώΎ€ ’œ υŸΓ T 0[l4Ρ |dΝz\ύ8Ύηωθγω”.θ€dy— 0&ΐ˜`L€ $o‘B^);ŠŠ3!9Έ‘ΑWί8zΰUفγXg3Πl (ΨtNg&’“έψμF΄ψΏΩΓ‹Ÿπ³Ρυ%IG‘‹η&Γ}ρ346…΅xc«)NχΣ}>65χ9 2&ΐ˜`L€ 0 !Αθ‹._1ϊΔBλωλ«’Gΰ‰AΐκDmΕ τΎΩ„ΧhmΊVZy±¬ϊ9¬Λ1“~hxμ~ΤLέ•\X &ΐ˜`L€ 0&0 „ŒιΣ–ΓYIς2e™ΆΨzΚ€Y‘Iξ”YιεXIλΣnύ'³Α„χ™`L€ 0&ΐ˜ΐ4'0.£―§ϋs .HC_wΟ4Ηp•©ίr ―ŸΌYVriΤ'c–N‡aΧyœ>ΊΫΗ1yΚUF‘³Λ˜`L€ 0&ΐ¦qΉwN‹²’L€ 0&ΐ˜`L€ 0«˜ΐ¨Ω;―bœu&ΐ˜`L€ 0&ΐ˜ΐŒ#ΐFߌ»₯œ!&ΐ˜`L€ 0&ΐ˜€ŸΐΈΖτωΕLμ^aY5~|—ηOΏ„§ͺš&VψK‹[ή¬ΕΨχ\-±1"η0) _·ΎŒ’ΚΖ)Ξ1'΅ˆ[YO ±η͊ς½;p‹a―T–‘q’fɍ]ί(°ωΉ_ΦJΐΉ«ή<mΏ«Fec«Φθ“~jκρ$eŽ“aL`†HH£ο6ϋ­°˜υHυdφ™eτΕ-oi‹°ΔœŠΐ™TηgZgh±εlMq+λqΞΌ΅¨ ₯+nΔ₯3―`ηŞ·4,½Ε†tZΟ”ζQ&Ιθ‹]ί(°ωΉ_ΦJΐ’~ΜτώχXMZ£NbxuυXΝ³d•ζ€˜ΈΚ $€{ηπˆGΊ-ž‘ofάν‰[ήZ±½ͺ εUx«ί=cωΝΈ1ƒ3·²gfi6;r²²‘ΏμŽ1SWή€Η›“ωt—ΎcR  όά‰D‡―Ε@@)« ϊWQΥ_NF†}»3ngΒσΦ…–&ΉΫΰζO©Ι3ghš˜π²_}—―H Έ― EOHsήZ°!?7Ίάx…Π¬o4EψΉ_ΧF`zΌυΥΥcMΟm˜84`L@3Δ6ϊf߈κ‡q‡Mv[τΈϊΡόb%vΦ'ͺŸΏώͺσVˆ]ϋ6!o‰zΙwΣƒΑώρϋκM¨iѐ^@PηΟΰρμΈtW³Α–jΊ.tβbCΜr’ΰέ™L p3jόΉ›LeγqΓ}iŸœϊ-Jv֏ιڲn/Fν3#ΣlB‘Ӎ ΏσΟ¨έ° Η„T{)φΈv¨Ο―-CΨβOcΜͺΕΌ‘Oρ«5%κΓ)ށꇱΤ|Ÿ,Χ½mŽω”΅‘|ψRΆ‡>{TζΝΎy7v¬Y Έε1·IΈˆ?Tn@]ΈG™VΎ£‰}F₯ΎΐτxξX»π‹Ηs‘"Ζ2λ―…ξΣ…ΞS8›dEvΊpt£νΰs(©–J—‹†ΌiΉjΓ:бϋ‘{±τΖ…0θυrr»pΎχ―xΉϊ)„c³SŸΩx7Μ"sT>z>ΐ‡ηΈ-=ν/Wb[P™Τ·±KIπ ϊ:wΐΖάθλ8…γντξ6ICΖzw۝;(o?τη­ϋœK €¬Šϊ#”η †πα‹Oc{ΐΫΒςZl½ϋF*>Ÿb=G”£ͺΗϊ,QŸ9Ι˜ˆ‰ΐ·cŠ5I‘τ–lδΑ7βr‰O1θτ©((©ΐζ0TMUή¬›qθD 2dƒΟ58HŸ0:R3°Ύκ8vΖv#,Χ/‚Ρ`„%#[2ψdΉτΝd²‘άWQjM.ΗΊ8q¨b#²,Βΰ£*“#H†ήhBVΑ}d*ŒήT•uG^}‘Ydπι¨ΆHΖQ2RmΛPq’N!φ"p­Ρ£ωVδŽQF­ίΏ ι& cœƒΏVeμ3sηα:“‘βq­τq-‚κ₯cqNΤ—ysRFΕW•7Š•2gR‰Qjjͺτί”Ίί-ŽBjη;J©'Tι;ž;i–tβj€ξ‘ή# jLΆΙΰsΉάtœŒ¬Œ"…‰¦ΌiΉκΓ:χaYV:L=’άƒT‡\Π%ΣφτllέsΕο7«s7φl-πEn ;#½—g§SΩLEZjΐΈ7MyS€DΥ’―%} TWl9τξ6E|wΛy[)ηΝγ’ΌFbeΡGW*R΅ZkπΑW”&q\Ύυώ]xΆ(‹Ξ0τΙ{>ƒO$©ͺΗψ,‰”%ΎΖ˜˜ mτΙ­΄Έ'?y[Π/ωΠ›pχƒŽ‰ΘϋΛ-Π‘σV^α„™w=ƒέΨ_ž‹ό‚ά“»oυΠΫ¬(ΩS”1’ΥΈ£©J–ϋΨ~τˆo$ρ£§Κb’Λ‘f>GΩ ˜E6==Ψ“›‡Q&σrQΎη ŽmFwX*Κϊ«¨δΡζξEΓ–<ͺσχΰ1jΨ%Ι<Ό›ΜΎcθΌ zάδπ>¬VΨνώ―δμŒD ΈΞž ϊX“NFϊΣZΥΉΉΘΝΛΓΦƒRHWwςθXόΟ₯Ό–„νZž7!¬₯zΙ ωΉεθtɊ„Σ_YžΊΏΡυVϝaΉηƒΨJΈ]u@IDATeζh ΧέsωωŒnρLΣΝG¦·ΈhΙ›–{‘%l_{;:Ϊήΐz¦ηεPΚGξ–ύθ•t5γ^ίϋ͊'½Kξ)θ@Uξ=φΤΎΥφVkΙ[XcœT―/ΰ·D+gykCE^>ε-ϋOφŽ‘…ϊΣZ8Tmx§₯gJ*6VWΓJ͍?) ¦z†tΕΪmυA «ͺΗ1?K‚’β&ΐ˜ΐ„Hšp‰α:6cχΪ›qχύ.H“sΝ5¨φŽKaά½oϊέr¨UξδΩ‘(]΄~'¬ˆ ;©EίΏ-Oή¨΅2OΚ+½|Ξ}Œa[)Κμ³θ­z=Ÿ~…e}Λ,F1e:ψ΅€ž‚ηΒ»Ψ€,‰ΡU‡ύS>ͺVZ Ώ!Kκ±9¦^‡ΌJτ]–Μ0Κν΅ΈusNΧ5IPΆ4V‡w·€Ρλ±KŠz tΏΆ5^—Η¦x)v”d›0ιτAֈ»c2αϊŒ[(t vTξΓJK2ϊίΪƒ5ΫqλM’ιˆ/>ϊP’˟°pcŠž·Ρ#=cα;:…±ΟDΥwš>w\}ΕΖqEjDο-t4„+b€}ΑKΆΖΌiΉZΒv5UbMJm-t’΄Μ‚9³†qωoΓψzΠC|:€€.&₯IϋjάfŽΌϋβ&Ÿ«rύΆΗ½'*hXΊ€lσ¦DSσ«ZίaQΛYPήόξ“ueϋpwhήδFέΥΜ‘O•Υαπ€šrπλχrδ$¨aΧϊʈΙEͺΗJD-Ο%2&ΐβE€L­ψoG>–e[’&dώςυ £Ο3δmχΖτ·"F5ZτmEœς–6ϊ3δ͐±%a²D-Ψ©’[|ίΔ°ΉΏώ"(VKK;\Βθ£ο&MqARψ`&θͺ;ώΩHΥ±|c9ύ \ƒ8ξ ŸίŽ€6†θυ8 )¬ gή .ΜνŸ~ Ρ§3ΜG:I|ηΓ³(Ι1ΑΆ„Ž iόŸόε›šy'ΰΖωβXΘ™œ&‹θy#u4l±πΥ QυΟ$j£νς θ.3ΠΡ0Ψ‚Ž>2l΄+6yΣr/΄„…ƒΖ¦>³£\veεόS σ䃔YR/ŸπxωΊΟΤ‡}¦w½‚y ”u_­Ύ‚’–3_ήFp)ZήδFݍ…CW=Φόή._.σφτc“›b}­FU‘0&ΐ¦Šΐ€}-―5βΰ76Θ―ε1²z Πίβ6)ڍΦG‹Ύ-CρΞΉ`ύΌ?€Qόfα2Z‚Ώ‘Gg&β™Π;Ξα,’ΎxΥ €-nμώο«°τϊ…4ΦM½ΑDγC—£όΐ!ΜΞ[Kύq![΄zl5`Ά4w΅6Œš0S‰,·«w½σ\(Ι†‰Ζα”nΞ'γΣ›–ΡŠ²β»0_»>Gˆν’Π*κM˜ΘψjI[΅ΎΣσΉσŸΤH°‘ "ojσ¦ε^¨ kΕξ§Χ“ΑGΊΠφηwq¦ηKαΐ[*¦φ t³½ΟεQu!rδ«jσ¦F–£Aί@‘ΡΚεMξ“M‚>Δqgbw΅qp,^ΰ5°)Ί,kάvuζˆχ™`Ӟ@΄GσΔd°΅ Υ^—­‰8ZŠ΅°₯«–/QŒ ~Œšν5±―{¬Iίψδmh˜ΪwΕθ₯|uͺu:.†GΌŽ'Q¦gΧ₯(}‰2O»ύ&ΉwQ—oΪΡ7ΟL­ΨΆI1ν¬(ήρ<Ύ2‹f—]ˆΫδ„0 žͺLuuβkκΤ7ι X|»hυ?,Νχ:H _Α!¬λ t]Ψ“i!V™Gž{xγθ98(ύ{ΊC*Ώ/>š˜Vϊ(υGUήΒRΊΤΞ~›hΎαS vš?wR€7@ψ¬!–ΌiΉjΒZ©wZ²Iέ8ώάύΨπ\ί΅κQR\iΕyφFΙΈΞΫω'ηŒά‘iρς -–Ό γ@“ΎcȈxΪ²^₯‹DOmŒ[, waη:Ω•Ζγ¦Yƒiφήεε4±KϋΤE°ϋ’Φγΐ,ΔιY˜ο3&ΐ’ψv΄ΣεzΪmΉΘΙΞF6ύΟqδJ`ΣEχ°zΆA»4sM2[φŽšΡQ\†ςΒ°QΟt|%Χ/Θ/0B²9»|ΣΪ9°αΒeŽZ`ϟΣ6 F PޟΩ4‰Ζςω·.ΤWΎŽσR³½ί1Μυ_R½Χ‡ΎKr»֚ΝπOΣT η]fIΚΐ§­˜-²ϊπΧ³ΒόΣΡμzτα;xϋ)ύ/(Ί‘fίΫgbΟ' ˜%ΞιΣ2t‘LΐŸ>±Έ€΄ Ή΅yOΖ…―WΆšŸ™όάњ7-χBmΨΉ~οŠkzΈ₯{q·ΧUΩw›Hί©₯C‡»ώq――,:w=[¨g¨ΦΌω‰²£Eί(’‚.·ώ ŸJΓƒυΘ{l‡ο’£μ, ±g}ΥμhζΰDγO €Ζ"wΟqδέ³m’^4±Λ/χ‚š ΖΨ’Τc%V\Ÿ%J"όΛ˜PG@i¬R:C QO€oSΎͺ|'¦γN­ΏΤŒζrz!™²Qρv36ύœΌίR°`!ΉΥ‰Eϋz’ͺ& ©Ψ›Ν–֏0ΈΞFӘgPΌψ'—‡\CΟγ₯g!λ‚PPή [ΡgΠΡ)³A΄2Σ€/ퟎΐXηI ΰΘ-Βϊ" Φ?ϊ$zϋϋpρΚl\ƒRΡA/ή »π\4ΕΊ°εwαΨΊ :cͺš σ³‹X°„¦₯—:>ρΗίΤω„Όqϊ¬Ο…o ³•Μΐ&ό΅χƒ™&tγω>ηxΎ–»α.J§εϊ2Pu’€)υφ—*BΦDσ©y‡&—8Pύ#sod$™κΗͺ_ƒ–¦H"΅?ς·Ύ‘Υ Ύ:“Ÿ;Ϊς¦ε^¨KFIηΐ:δΠxΎεε'p¨¨ C)i°‰΅)Gm]¨ωνIάQ’½ͺNΗ-I! ΠΪςyμCMϊŽ-fτ•Vόζ΅NdΡ{JŸΎ'ŽdβμΕdXΣε5yG‡W{F ;ͺlEߝ°=UšςF³ζWDΟρΠιaN§…ΤΣΝ’ΑηγAΪΊ|yΪi©Β³΅oΠuΠͺw•lΈs‚‰\=,Ά ―ΑηΒιƒ?ΓΆp³qŒŠΛ'FCύη0H.Pbs³ΕF“dΑGF‹X|ωψžηƒΖσi)λ]Ϋ°½α€ΌDƒή[†ΧΰsχγhΥ“¨»*λ“ΰ»Ρήό†΄ΧόΑYωvΠxΎSaε“Ϋ‰Ϊ£mς©'WR]4aΑ<―«)‰Σ’7ΠΊ]i$Γdkτ₯ιΰ…FbmC±nŸŸ¨ΘΦΒWK4ι;ž;JcŸ'Δ}Ύ{}¬4δMΛ½PΆ eΟ7 ‡fκӊšιΩ+ >Ο`/Ίϋε‰Λί{]υeΨΎ- HΑ ’Αηκν@›΄l/WςކΌ…ΔŒp¨M_-εL,PϋF·”v²ΙBο62ψθ½Φ/±‘aΓ1N'¦’CᎧi&`aρ βθsλ}³£‚–\ψiΓiΙ΅Φ`+ΒήΝήώ> υΨTΕ³Δ–w˜`q&π-’_qNcΔΫ±χՐ-5–ΊpΌ"?h¬Δ$(χ$μ4½wfj2ά/’οσv΄΄Žaπ©Π€μΐq¬³hi«l: §3ΙΙn|φN#Zb«"e2SXνd.JΓάΉT&ϋ?Cγ±ρZZ ;ŠŠ3!9‰’ΑWί8Ί'[ 9“γΗW΅™όάQ›7-χBKXG‘‹EύΉHυ§)zύ±Ϊν˜{‘άœ»¬¨=ώkdΡΠ·ΞƒεΨΨ"β½½jσ¦₯4hΥW΅l{!Š3S©·ν"ήi”—€Q7Jΐxpˆ’$_fL€ $,™aτΩΛdw Β,T͏²ΎNΒލIRL1ϊΔβΣωλ½+“”6'Γ˜ΐΥI€Ÿ;1άw«΅+Πϋf^£51[i6Ν²κη°.ΗLΒΠπΨύ¨α†Ίΐr&ΐ˜ΐΥG`fŒι3)sΆ ΰψ―*―Ύ»¨1Η³’€RAσΔiΑΑ™`šπsG.9pš™δ֟•^Ž•΄.fΰΦς0|@xŸ 0&ΐ"˜Fί±JΠήΤθιώƒ ΠΧέ£.‡bL€ Œ“?wbΨr ―ŸΌYVr₯Φ'c–N‡aΧyœ>ΊΫΓLβC … 0&ΐ3Γ½σ*ΉYœM&ΐ˜`L€ 0&ΐ˜€VίցΓ3&ΐ˜`L€ 0&ΐ˜ΐτ!ΐFίτΉW¬)`L€ 0&ΐ˜`L@36ϊ4#»š#XQΎχTΓi½š9pή΅˜’²c-ΖΎC‡qθΠ!ωαΓ¨έαΤ~Ζ(,«F#εkoyQj7Tš’2™ΐhœ»j©ž4`‡Σ»6]BκΚχ-!o +Ε˜@ΒHΈ‰\ΚšQ”‡»χ8ξY»3 ϋ𫐑ϊίͺŚmυ!Χω0Ύ°τiM?šWΰ©Βγ‹;Ρ€ΫKii”υ–ΓτιζΑ@O;{ κ".©7Ee'm–˜iΡgŸΎΐόΜΔo±°•‘tōΈtζμcŽΫμ·ΒbΦ#Υ“IΉk Θ!οͺ#0EeRrSΚ’~ΜT¦n+Ά’ΎήߝTθΘ„dσyzρN}λLΎ/ š·lΘΟMPέX­ΈζΎΨ\8ZžΚ °x6=Ύf½+ŸΒŽ–&ιόh]¦ͺμt‘₯I~†άΌρI 5Πl­e’œι»|ERΕ}… GΫF†£…ΰλa LU™ «LBœœ%Iέ}ΣT‡‚>+Α˜ˆ/„3ϊΠϊ't!Ϋ¨ƒ-{9`τέ••*ΡpŸmCc|ΉΔEΊ΅h~ρd.’/vβω΅OΎ™ύ=:Pύ0t—πϋŸ:Qγ³i ±kί&δ-1ƒΎ«iσ`°cόΎzj‚Π%―Œ#}8Ϊτ rΚΗ &t\—ziαϊ¨ς~£p3jόΉΎ™Lr=7ά—ρΙ©ί’dg°Ϋ¬}σnμX³pHϊ&α"ώPΉu>₯Σς{1jŸy™fr€tuΊτwώ΅Ά!ΠϋΟΉλ6ζ.@_Η) oΗ6“δ‚ηqυ£ωΕJμd£>jβν*}eΗκ+qŒκθ‘··Β¬ΣΓρH)ΠRγSXSΩQY&??€Η³ΰΉn\ΉΞ[ͺAJΟu‘ϋFΧ Ÿ6QvΕΨύΘ½XzγBτzΉ^Έ]8ίϋWΌ\ύ•ς^XŽC[σ‘βώΏZSβXιΐήCOΓ6w§χ?νώF«(©ϋλ―0­“ε<ιm«pδΘ€¨:²W?|©ΫCλΖμQ}ΰ0Υ!ٍuμ:€αYUYR—Ÿg>Jq{ž©-“€‰VμΞxfγa6ˆ†rΣξώη’‘}ΩΣΈ£’œ‘«xγΟώΧbΎ\O Λk±υξι}σ)φPύRήͺž%Κ;Pk˜CΞ˜˜ŽΎxJ·βφ~I-#Ή8ω‡“;qσBΉ•Ύ«5ΤΪIΌ\„Σ¨λσKίrΝίڐ™Pή ›ΙΓ΅ΐQ>.­›qθD 2dƒΟ587™F†Τ ¬―:Ž…!©€₯bΙ0Šλ%EHχ|dyAo΄ ;3έΑ‰C‘e‘$w„χτF² ξC¨Ψ”9 JΧRSS₯¦ΤEψnJHΪβΠQFcΎJEŸŽ^Ί#’‘˜ŒTΫ2TœhDΰτ–τE0Œ°ε ‡ Ύ—KΌ¦‘Σ§’ €›­aδσ©%ЈHΊnΊŽ-U—*jΛ€εϊE0RΩ±ddKŸ\/½ΙFυβU”ϊšDίu8ξΓ²¬t˜ z$Ή©^Έ K¦1sιΩΨΊηΘρ@ήΊϋ‘d€zœš…’²ΐά’!΄y-²©!Ε@η?Ρ`π Ιsηα:QF\+}ˆ‹“zιXœyž7gtΕΣ[²©₯FCZŸ%"ι(?Οό€βυ ±ω/dάΠfΈοœΥy'Jπώ‘ιiτ‘΅οφˆœιpλŠJŒkςnŽ/œzΝΧsP^α„YΌ“»±Ώ<ωΈ'w ήκ‘749ΐ(Ω ƒv}ξwβ΄ o5T!7/Ή§α“hλΊ …w”­€Yμyz°'7Bn^.ΚχΔρ£Νθ–Bω΄To ΉτΏ.ωΌΣγ”?±JžδΓέ‹†-yΈ'ςΆ4 _X~0αξƒ?¦ΕYή—ΐΙϊ‚[HGΪ²£₯LϊˎMUr½xl?€ͺE%πGO•ΙΊhόΫΧގŽΆ7°‡κZ^~Υ‹|δnُ^©Κšq―R&»κρ§6ΩΘ΅ύ` [P$χXΑ-Rͺξ7Q­4ή¨Υƒž«E=£:»υ`§WNςθXόΟ₯ΊZ2ͺ{_‹^‡4?KΤθΜΟ3%™Œ~/|‘Tμ¨.“$K½V<ρθ]RUυ ΄‘"/ŸΚzφŸμU‘Qδ ZΚYΥ†gqϊ‚xΰ§bcu5Υ£"4ώ€@7μκ>Š΅!΅©z–Δ\‡"η‹―2&ΐf€IΙ„c3v―½ΧΘށα“$MΞ5Χ ZΈkΖΩm°ι °ϊZαϋί·Κ/©ώ3¨ΣΨ€>Αg΅θϋ·εšςΦΨ|+7fCoΛ–&ͺ‘)Nάj_Λ.ΌΨλZI-¦y4‹©Ψ\η>Ζ°­eφYτfΏŒžOΏΒ2 ΉmΞ_μ—!…τιnڍmΎYZQ³έΪwY2Γ(π΅ΈusNΧ5IqΆ4V»œϊΕωφΖΎ…,](λΫύΪ^Ÿ{jWΣNΌ”;J²M˜ΏτNz±7Mϊιξ}%ΥΗdωΤϊ{ς쏀Ω[οψδΔ'0Ίi΄Ξc— –2ιΉπ.6Uyg­μͺΓΏώ)U+-Πߐ%υV{KΥhEΖ8ΣΥT‰M$ΞZθDi™sf γςί†ρυ ‡_tHI]L1ε§šίΌ‹e­€ήΕοα1zDν‰Ωː+Zi¨ΟΊυ·Uc€’ξ΄žŠ€¨uhœΟ%pΏό<‹οσLK™TξOΤς`_Ϋ€χοΎθwŸ¬+Ϋ‡»OTΠμ̊$ΏšΛY+ž*«Γα%H5εΰΧοεΘ v`Χϊʈ‰Gz–(΅Τ!%2&ΐf2I1ϊŽ|,ΛΆDεhώςuΩ裫SŸ ΐ–e„ω{wPΌnd§ΛSHχΆΎUΞxhΡ·ΪςΦUχ ΊΝ¦«ΛΙ5¬ΎΊΕkξ”'¨Ήπ4*˜iσδs”CΖJ”d„Ι•n>RE‡˜Ηdgώ4φ'oWέiτ“α™ͺ3bωΖrϊΈpώά4>ΏΚ°?Ÿ8U;iH‘>\8σ^°BνŸ~ Ρ§3Μ‡p0 ΄Ω=CήCoώΦjU‰r !0DΒ&υΤjW*–2ιώϊ‹ „ZZΪαFιπχ +*4Ξθ™΅°Γυ¦ζω΅TβύώXNΓδ-₯†ͺ8vP;mΰεI\A!j׳ğεp{ό<‹σσLK™τή ¨ε!e–·C~—ϊοκ1œιέ†toccΰUϋ±”3κ5_σ?lx»|Ή¬“§ϋŸά4ϊ•¦JΔ˜`‘LŠΡΧςZ#~cυS½]Ckο΅tϋ{―λ³rœΊ…ΦB€K‹ƒ βƒΧΖ6f|‘ΗΉ£Eί–!­y;†7ΟlA:AVΗ  zΛo• Ϊξ·_2ˆδl ΫΡΐϋδMΚo.£%ΨΎςζœz #6s‹v‹»ϋ*,½~!Co0Ρ©ε(?p³σΦjŸ(ΗjΐlΙ΅ΎΈGM8¨³0ν³Κ₯qή3Ž>΅nΏρ»²Tb룍₯L†ΦˆpNΗjΉX±ϋιυdπQxχΪώό.Ξτ|):ΦqλCΕΤf‘ƒnvpzΏ{΅L²¨QζrL;‰Ϊ剦Ίί|ώ~u΅ι#œκ:Λ³$š^ό< "€ϊ^Εγ@{™”EΣΑ7 ϊΚ:1nΪΚ™cρ―JΪλR°X¬£ΩΨ48>Ν˜`šD{=h6fΰΦ&Νγ[ΊκίGΟζX’bMi.9"6Π‰?ρ5e-,Eιͺ%ό˜άkΒPcj|A“Ύ]šσVwθ}8³Ι5,υ”—&αΙ+²¬ 0h‡†₯qzκAωκTM”…―ƒΥWuΤڈm›”9P­(ήρ<Ύ2‹f]ˆΫi’™Ζ1fT ΩθΑ[W'Ύ¦N;Ήδ.ΎέN.Ήώ΅hΎΧΎyTapT>š~‚ο!ξΎEnΈpΡΜΊ₯8(cc–%”Ζ2©K‘έ‰•θvϋMrοΈ.)¬α9<βmt·Δ5,eJYpγψsχΛξš^Α»V=J{R‹†’”τΫZwfΑF½φΕ Οΐ(Τ‘εd^ ¬ΗA1b8§«V1q~–πσLλ Q>†2©R²7˜;d½U2I}ΥΪΔ(‘c)g…»°sμΖβqΣlΟ4kνςršΨ₯}MΔaQŸ%ŠNβw"κP <ήgL€ LSίN\½ρΑYαϊ§GVNΊτΙΥί~zΜτ΄Ϋr‘“lϊŸγΘ•ά6o΄`τ_„œ Eλ—yŸ„w4Ÿ¬vλ΄K³š$Γ±eο¨5Εed0Ζ–ECXJcωό[κ+_Ηy‘‘ώŽaRΠ^ŸβΔ‡‘Ύ  tΠ‡ΎK’d­Ω0ƒc1œw™₯ΐŸΆŽyB₯ρqbψΖΫ›k§Ζ–}GžυŽrγύ¦κ1Tv(J e2ٜ‹]Ύbμΐ†,‘φœ?Φπ<γlFΏ cT}Β\/ή5½޽Έ[§.[Ηπϊ»½…Τt³Tڏkο%'z–όY«OΛ¨Kαͺ8Οg‰HžŸg*nB Ab*“*‘e‘>•†uλ‘χΨ_GΩ#X܎⻦jGs9s’ρ§RC»η8ςξي6I/šΨε—{fξM=Κ³D >‘uH‘ΙΏL€ 0iL@i0KΘ,όι½ΟhRΉPΜPχ—ζ ³(Hη!κEςmή}ίqΒνtΡΗβYδ¬LχjζΑ_ώψ»-»°­ΎΝετR4e£βνfl:ϋ9yN¦`ΑBrΙ‹φυE•o²ŠNjJDpOL°hGnΦY°ώΡ'ΡΫί‡‹Wfγϊ,0H‘iαϋΐψhpώκp™{##Ιro½¦Wύς΄$C ϊθεJ΅ϋ_~Ž­Λ 3f‘ͺω:?»ˆKAK.6ˆ?ώ¦.X>š^|εKΥ{NΰΎ‘$$‹E½[χρZlΛ¦‘μh*“J‚4‚ ΌΆ’Ο K[BΣΟ ]hrŠ—φϋBξ΄΄~„Αu6ŒTŸNΰŸ\r™>—žuš“T^Φ!‡Ζσ-/?CE]JIƒM¬7ak܏._OΝ7bsαέ *γ-vΓ]”NKΌd κD3.HΛGν/UHu-‚Ja.Επ, #eμSό<›Ν8ΔX&£§ΨŠίΌΦ‰,ͺ ϊτ•8q$g/&Ú.―σ=ώX!΄”3;ͺlETYw7ώ—s§$΄δΩƒ΄μΟ:Z²!Ο(GΑ†*91 ΟE»‰­CŠTώeL€ L_ άΣG‚5oy§π'ΐ.4ε7F—}cŠhί}Ύ;lK"έ¦c•oδνcο­Ν|™_q=n²ζτ0§ΣBΤΤ£ >wΤgθ²δ* δ‘Qγκόβ‡ϊΟa\iΔΠf‹ 62ψΘx‹:ίσ|pO­{”f2Αdkτ₯ή !I¬ι'Φν3Ρ:K ζ‘5@[Wγ6lo8)/Ρ 7Α–α5ψάύ8Zυ$hΞί6|…ςD›ηΚ°οœΨQ\πFb›Š#HL0_ω’βH+…KŸΗ =mh¨x λw*ξΒήt5”Me—-\=,Ά ―ΑηΒιƒ?ΓΆ±f"j©Β³΅oΰ{δGFkιΡμ΄0ζI^ʞo@ΝΤIf’) >Ο`/ΊϋεΙ†BΛͺάΘ•Ιp'bςιγΞ±¨=Ϊ†©žκ©ώ™hμ­ΙWΧ„TMuHλ³D£Ϊό<‹ΗσL[™ΤRΔς΅otKw9Ωd‘χ |τNι—ΚΏπˆŒi*$@e9+άρ4r€DqτΉυΎeŠΔ²F?m8-­Ωj°aοf* 6 Ο9ύUQ‡|ay‡ 0&pψερΏ¦>νΨϋκ Θ–ε]8^‘4&gϊηfƒ§iδ3i¦@χΕ‹θϋΌ-­!_ ™΄ΪΘ\”†ΉsIngh<`•Ε ΟŎ’βLHN’dπΥ7F°Φύ‘x @M™,;pλl v4 `ΣI8™d€ΊρΩ;h΅€£Θ‰Ε’N\€:Ρ­N‹ΪΫ[₯‹ξ¦ Z>ρΛz<ž%Z‹nΥwΔ”"ΝΪIΣ{βψ―*UGγ€L€ L?³’δq„ώΡ„“Ÿ‡ςŠ‘ρΖώυόzίψ]°[τδ«Δ)2&ΐ˜`L`L3Γθ;V‰ϊΟ`3Ÿ@Oχη\†Ύξž)ΛlΉ³˜·ΟΞΎ žͺ Ο8ešqΒL€ 0&ΐ˜M`fΈwŽΞŸaL€ 0&ΐ˜`L€ 0"Π³wςbL€ 0&ΐ˜`L€ 0ρ`£o|ό86`L€ 0&ΐ˜`L ‘ °Ρ—Π·'>Κ–UγΠ‘CΨ[^ŸX*ΠJΐκΔήΖChά· ή•Ή΄J˜Τπ’5Nu²cί‘ΓR]υωΠαΓ¨έαœT±'fEωήh8P §5v)sϊΰχΠτ½w¬9`Σ“ΐ̘Θez²Ÿ2­o³ί ³YωžL‘iΚτΰ„§jY1gζ4lYšV―ώŽr―*‚AΆ‘Ό ΡV·σΖτ€Yp‹ΕŒd·&Ω)Ω³•‘tōΈtζμ¬ Ώξž¨CͺC©SY‡a‰™Υ 4?sΊXPiXz‹ ι΄Ύ’520λ+`ΰέi@€ίCΣΰ&±ŠL€ Μ(άΣ7£n§ΊΜ x€€ž‘oΤEΰPL€ΜΦ)ζ… Λπχ;WεΘŸ 4k6Ύ ­!`XΔσŒΰο±ΔŸΐ8i6;r²²‘ΏμŽ1₯&DjiΔφͺ*T”Wα­~·€λ΄ͺΣcΘ~ YΜfτ…„¨C3š0gŽ 0&L€{ϊ‚y\]G#gφΥ•gΞmΜFbšοΘ‡•z‰»ΰΐoKυ_‘ω©6ΪόΚΔΆΧwωŠΡ}…,ΡhΫ”Φ‘.΄4Ι]d7o|Hυ―Mν©Ώή‚ ωΉS―k0υ¦΄M}φY&ΐ˜ΐdH8£ΟZ΄ Ώx2Ι;ρόΪ§‚έΔh ˁꇑ¦»„ίΤιw/›,ZγL'ΆΌbΧΎMΘ[b†^κhρ`°cόΎzjB}θΌ|ŒταhΣ'Θ}(7˜ Πy„ †Ό…ΔδΓ©"ΰΖ + γΝp:€Κy+°„ό:έΰ1šΌeΤ«›£»ΉKo\ƒ^/—· η{Š—«ŸB£β!+›w7`Mζ<$%]Β‘'¨σΉNpΩQκΘjM–U‘·­Β‘#?΄Σ‘=υαKΨ^’τμQ}ΰ0ξ°Ιn–W?š_¬ΔΞΠp˜`}#0σ’†zlwξΒ3ο†Ω Iz>ΐ‡ηΈ-=ν/Wb[@ώ4…έΌ;Φ,₯#7!$α"ώPΉu!X»`cξτuœΒ€ρvβk’άXΗβ«E‡1ω\°Rώρx.R@zκ―…ΐp‘σΞ&Y‘.έh;ψJ–ψB)oͺžΥ[vψ=Δο‘€’Ξ»L€ \EΞ½³λσKί\ΝίڐώŽο…Νd„αZΰ„|$L‡{¦9oΦΝ8t’²Αη€O  ©X_u; Cr–ŠEΔΗ(—!έkπ‘•½Ρ‚μΜτ :SΊdπΉH.}λΣ±β8Κιcή·9Κπκ %Θ"ƒOG#ΗZ2RmΛPq’ΑΣF8q¨b#²,Βΰ#γ”τA2₯mBVΑ}τΩ°iΝ[@TޝJ.|Ψ*,/=²ς‹P|χ-ΗψΗοž‘Κ°™”ΝαΈΛ²a2θ‘δ€ςΰ‚.™ΖΑ₯gcλžC(Ά*!ƒχΠς}―bγ²tFœ#WFŸΑ²3wu‡ΊV2t„NzιXœ3Œ˜7'%XQΒ’2ψF\.)λ:}* J*°90oρΠw”&QNh¨ΗVηnμΩZΰ5ψΘȁ‘ςΉ<[ά‹T€₯ϊG]j +4L™³©τr·μG―T½ΝΈχΑΐΦ%ςˆTN~ή،’ Qς¨ΧnΑ¦J„Cq);T7WηζJυeλΑNIWwς¨ώˆΉTžKFu­‹`’Η§‚κE>ςΆ4 _ͺ€&ܐ·Έθ+i¨ώϊzlŏή%ςžTεήCχνΤΎΥ&1-aεθ-Υˆ%qΞ-G§K>nLŸ2ή+:_ν:„ΙΘθSΓΒΠ£m°[ι™w΄GVΦέsωωŒn© ΟG¦·«η+‹Uϋ¬ŽKΩαχχ&qαλ“Ξ;L€ 0Δ"ϊν›±{νΝΈΖϋ ›irΉΥδ~ΨΨ|+7f“{U6Š)°δŒαpβV“πotαύΓ™°b&δ€}Ά<>y£ΘΌt½”ΧΉ1l+E™}Νvq=Ÿ~…erۜΏΨΟ'$γέM»±Ν7σ`+jΆ‡ι½p Ο+Σ]υψΧί/GΥ:τζ%R―ά1―΅t‘¬Cχk{}ξ΄]M;ρRών(Ι6aώ;ilW£4ω^ίeΙ$MΕ­›‹pΊNŒωZ«CάtΗ—·¬ςα€ :Ψ]‡“έN‘››0ω;ίBcΛ,lΡ£«©›ΘV³:QZfΑœYΓΈό·a|=θ‘Ζ RRSŒεδ4T>‹ŸζιGΣΟΦ κX€ΰqΦ‹Icξ†ιx3¬»χMΏ‹_k NžύquΖΫ_9 ϊŽ©œο‚†zl_Ϋ€η¬οΎΈΙΧΈVΏνίqο‰ šmΣ'Π6 š²ιu „‰Κwœ:(ιŒυλκλ€xr:ΘΝi½ˆς:„+b84± V |Γ$4ζ³:ŽeGυ;vœ:Œ™·@ό €ΑϋL€ 0Έ˜£ΟαΘΗ²lKΤL˜Ώ|]2ϊΊκ^Aχ£ΩτaΖς2κ«[PΌζNrΆ’νΒ_θ3ͺ¨qΠ’o+β”·΄yr~)'†Œ•(Ι“%έ|€Š–ζQ<qζO_Κaβ)ΧΧη‚fJoiω.aτωfPLCŠτ‘ηΒ™χ‚iτK€Œ>a>„Σ¨0ξΊκN£ŸŒυTΛ7–ΣŸ@ΈŽž?wΟo‡o8αΈς>/|vς̚ T½ω 7YR’―אPΠΛμΥΕQŠΖgΦΒb ΄όz¦ζω”=*;e^χE|ZŒ¬μx†ΌέU^ύύ=Tή ‘―†zœ2Kκε=l_χ)7EόΓ™ήmHχ6DIW΄„ ₯a?*ίxλD m΄]]{ϊ/ŒωtτΉa£]iΣΐW‰βϋπ¬ŽcΩQύŽ—ςζΛ?Ώ‡Pπ.`L &Εθky­Ώ±A~}Ž‘Ÿk€ώΕπή<³ιdTX+€κ!,—άΘ¨“ανΧƒ •1€λ΄}[†β7α‚ωx€fΓΙΥ,\FK°-ζ A½1ͺΊ+B%†$`5Π4ύβ΅ršΘP):νυυX³Εέ}–^ΏΖAι‘7˜`ΙXŽς‡0;o-υ n±δ-0>οO QΆκγ ϋl€‘kηaqS푚X±ϋιυdπΡyχΪώό.Ξτ|):ͺqλCΕΤ^ ƒnvψςηθΗπ΅©4ω‹ Οϊ9Ž­έ*œŽ€μ(Υ Œ†Α§¦P_-υxT=ΞEΠ‘–°A5Dγ;:ΊI\ι}vΣΒw”5Οκx”­οΨXtP“7$όsΐ‡J3_~ωΨρ`L €@΄Wj@ΠqμΆ6‘:Œwa$‰u‡ή‡3{%τ©· Ό4 7Hέ|ύψc―—_‚΅°₯«–HγŠF?&wƚ؍CMϊvΕ'oCΓΔzš ε«S5¨ νρπg=ζ½δκ² Ψ¬·/–{uI²sZW'Ύ¦Ž “ή€Ε·ΣW}«&.šο΅*‡―ΠRέ[k#ΆmRL;+Šwό―Μ’Yβvš˜§±‘ϊ'!oρn\Γφ’…ZˆLιٍγΟݏAw­z”4’ZFkζξΑsχ;q¬x/ή+ΙF²y9ν.ΖΪm^—ξΙ,;1•ό$ι;<βm| §³¦z<μν±MΖuA±δΒH‹ΡoZΒΗGΚΛ‡ΪϋΖ±O΅ §ψ΄ Cί0ρΗ:η²£κgDΦω=4VΰσL€ 0‰%πν‰7hΆΎΏ ˆq&­_&†OΐΥ}Rί&™΄Ϋr‘“lϊŸγΘ•\ΓKŒSjςΦzν¬ΙplΩ<σ%εΒQ\FΖpαΈς£3ί‰Ÿϋζa±£τLIžηό9οR }θ»$eΙZ³™Fψ)[1œw™₯ƒO[₯1/»,₯±|ώ­ υ•―γΌ$B‡οΌFζ$δΝ―οM ΉώΦϋkΌΓΫ„޽Έ[ΜN4ΦζΉ"―σWjOφK‘ΜΛ6£Z™κs2ΚΞ,ΩΡ§e”ω±Žr~2τ%Ξt|%)’_1κYh¨Η€o‡ΤŠ£Γ]ΈΧ—η'` ½mZŽΒΤ'CΆ‘ΎQ՟—꓉RίΘ‚‚―Ζ»μπ{(ξοΨΰΚGL€ 0©% 4ΆN­aSοΒλοžEΞΚtοUώςΗί… )NQ“oSΎ&|'mGMήΊh-¬f4—@oΚFΕΫΝΨtφsς²LΑ‚…δ:)νλ=Š*ίd-”Gκ|SϊOΤ΅žλ±|k3ψtΧ/‘)ΪElšΐαwϋ½ΐΊ°εwαΨΊ :cͺš σ³‹X°„¦n—ΔSηƒλΘ-Βϊ" Φ?ϊ$zϋϋpρΚl\ƒ’Xτβίb\1δΝ— οLεa±lQΉl<ϊ`νX‡Ο·Όόua(%Ν·&dΈ<(eWΉV_φ4n;r9δ šSRφΥ4™PόΛNΛ‡έp₯Σ1¨:ь R@ϋKAλΣ)zFώΏΎ"ύ–֏0Hγq Ζ zVœΐ?Ή<δ4w/=Kk3υυΈ 5Ώ=‰;Jr £ηNΥ‰γΈΰ’ε Œ‘½|"U-a)8M r ϊ\GζήΘH2=Γ„ =Vύς΄L•…¬(BDή4κYXŒW΅πυ&‘κYο²Γο!ΝοΨKGcL€ $Δνι#:Η*ίτNNqΈΎkLf·ίψ]ί5χωξΡ‹†ϋ&ƎͺΌΡ,™ωΡ3@“θτ0§Ϋ`K7KŸGŒ“j α1tY^+ώEλ2|Εk{\pyτ4ζ.Γkπ‰ιη†mΒΣ»u5nΓφ†“ς zl^ƒΟݏ£UO‚ζΨρmCύη0θ¦n=ZάΪl±ΡDdπΡ‡œXPωψžηƒΗσiΝ›/ή™*#R­Η;cαZΠTχ—.u‘μωτΠLbšC³-C2ψ<ƒ½θξ—'?ρHS *r7=εXό’Œ²zy‰κρ_ϋτωbΌΛΞ±¨=Ϊ†©,λa2™h|ͺ ζy]šI‹α+T'i ΝχΊY*€@ρΦW$R…gkί xΣJςO›L šΞ‘ ’κqW}Άο ’£ΥeaπΉz;Π&-γ¨ΘΥ΄b±4™Δ}FΙ{CˆλxŠuϋL΄ ΒX _-ϊk?φ‘ˆθ q—υίW©2ψhα+ERω¬FœΛΏ‡4Ύc}wœw˜`ӏΐ·Hεš~j‡jlΗήW_@Ά΄ œ Η+ςƒΖ…†žŽΗvšφ>“¦±w_ΌˆΎΟΫ©eίo˜+?V;ΜDr²Ÿ½Σˆ–1ΕΪQTœ ΙA“ ΎϊΖ€AZ! Xνd.JΓάΉ€ogh<`†„‡qΛ[˜΄ψΤδp9±X”…‹Tš"—­ΪM·²3υϊͺ―Ηβ^XνvΜ½H.ά]VΤ5²hΛΞƒεΨΨΪγ½iZΒj½ΟjΓO½ΪψͺΝ—7υe'Ž:π{HKQΰ°L€ 0˜Μ £Ο^†W_X'-"ξκ¦ΕsΧWΖƒ#1&ΐzV'j+V χΝ&ΌFkmΆJœeΥΟa]Ž™Π  α±ϋQ£4i /°‰ CΌςΖr™`L€ Le˜Ξ‰›"1&en΅|St8Y&ΐf4+2Ι•<+½+i½Νΐ­δaΏΑ'.h (h"χA‡‰ΜΛbL€ 0&bξ„Š8ȝ\‘έ-ψυΏύώνί^Β;=“›4§Ζ˜˜QzΎƒ΄ΜωΠΟΎίήοαοƒύ4ΑΣΔ?;œU-aƒcNάQ"θ0qΉaIL€ 0&ΐβB`fΈwΖ eL€ 0&ΐ˜`L€ L ={ητΗΛ9`L€ 0&ΐ˜`L€ L-6ϊ¦–?§Ξ˜`L€ 0&ΐ˜ˆ+™1‘KDΞ]΅xπζ9hϋ]5*[Γ„˜n§¬(ί»·πJe–K،؝εΨΌκό7‘aRΞЈ§ͺšR_«£ί·Ν§­‡qώ\;šŽΝ„2“¨Y)&ΐ˜`L€ 0I&0c>KϊM0›υπXMγBj-*CιŠqιΜ+ΨY3φΪtZΡ.7 Ko±!ΦΣ³¦QjΚ”ιZž€πφZΌ°>+(5‹.“Žc7ϊ΄3 J~Œ;~~ ΛmΑεδ'Ϋzqdχ³¨:&ƒv”@Υ:Ϋ2Wwς«/γΘ λiqΪ<Π°auΠL‡Ž²}$#lCyA Ċuͺδ―!±―Ή z!<`σΈΠΣώ6ώ½d'Β–NλfωυFY'W'*ς7Œ g/έGχŠτru <“€W@ ±νΪKi•υ2*~ τ΄γπΏ— .¬²2’ΎZ+JZ+Ξ/3όž«σ ς7T«δϋή„Λνh(Η¦άŸ“ΎbΎ,*[¨<(m Žr―*-{cyŸο1ΟΪ)½Όι… De£<?Q­οo(¬Ά{.Y>Η˜`L€ Lλή9<β‘Ž|3>i6;r²²‘ΏμŽρ ‰“\)KŒ3K!šΔγΠŽΝ |ξώ454 αΰAΤξ{m\‰ΕΔ,bŠdDΌΊΗgπΉ/ ΒfήŒοέ‘1φ¨‹)sΰ³Ιt&¬όIiHoΛ¬ΩψNΘ•˜uzX² Pq’Ea„8V_6ψΔ5ύ Έ;L ”Y^½tΨD,’τ‘k£FK6VΌ};Β(BαΥθ 6Βξ¬ΧΖsI₯\o°Ω:aπ‰Ν„eψσμ\•#|βD–!/–Ν«f|τUΙ,½9`L€ 0& Šΐ~ε©Jo OPJ}—―H’άW†&H’,F»άlΘϝPβ),IϊˆtγΝκM¨]Z°ig9Ρβκ2dε―έΞγ{°ag£7‚?oxia¬kWχQδ――„Υj ήE=‚Τ›"7ς%cΦJ”Zk‚zϋ”HWvΌΏ冄ν9Zg%u•Y(ίZ†’μT 9N2€š*›‚B;ξΌ!ΰ8·δo¦ΞΦΊ€sqΪ₯κ"³pαhy>*© οΐ¦ΗWΒ¬Χ!cεSΨΡ$Τ ²Ύ-()Θυ±ο"ζε Ν(JΧΓέsχ8ύχE\ ά’ρΥ*·₯z;bEx¨#^Jށ‘%ΜwδΣ2ηMΤIοΐo£{¦lj<εA£ξ׍γ›°SŸ "ά%ιυx€ΘϊΖ~/’ΰ]&ΐ˜`L`’Μ£Οξ܁g6ώfƒθ[ ²ξpNΆ:‚1:бϋ‘{±τΖ…0θυH¦ο}Ϋ…σ½ΕΛΥOΑ7τΟZŒΥcψlM–° ·­Β‘#?δι(™_ͺΐφzΕWKœ.Δ}›·Δ ϊ¦₯ΝƒΑώρ{2zj£'ΉφΝ»±cΝRΐ->&α"ώPΉuI[»π‹Ηs‘">1υΧB`ΈΠy g“¬ΘNΞ†n΄|%Ձ>u*τΩΠ°9wΐγw\‡zt€.―dδ>sGž&!Τγq±ύe¬ίVMϊΖΐLΚNάw‡όα=Ψq0ΐΰ±[°}½rΣB₯Ι–`¨QJ>6J½}5%5α/U/ΧΧ{έΥ‚ͺ§€›ΌnŸ©KlAbΨ-TΰBΗι/‘ΣΝw’ΙQ71.œ!©u¨ΨΞΗκ+q¬Ύ ‡ήή 3υP:‘žΠ–@6κτ d―τθ{ΌP―λo`\5r•π£Γ§,κί + γΝp:€Κy+°„+ξ πMήηEhœθϊ†ΖPwμλο’Eκ5LΓΕR――Β@HΝAN'\ |Ž 0&ΐ˜˜\Σήθ³:wcΟΦeν,}\%؞2–H†κpά‡eYιΐγΔ 'ƒ©~λžCHή°τM ̝‡λLF=x|ξYzβZ²_0oNŠ΄/ύ‘qH‡φm„YΎ Χΰ t ©X_uƊˆŽΝr)JʜH₯Cv-Ύ΄8ŸfI§0τI›Ηε¦ΏΙ0Ωr$·>λυΙΘzπΗ("£OκR«―$QύΓΌλˆ‘‰Œ>bδfΈΦ(Ή<ꈣnή<ι¬&}΅ή ΅κΪ-˜/)ιΖιWͺΥΖ’ iτ°[νt/ύQRRRΠΧΧ0ΜƒήΞ/°ΠfF€ή>ΏΪ‹$wΤ·s`ΏΠΌžΜτΡάΏm/Ν…dΦΊ?Η‘=ο νΧιdŒ[‘_HΆV ύ€HΌqβγΗ±>ΓΓMw*Lly‹«ΎšψN4>lύ ˖ِ•_„βko‘κGϋ»gpύΚεΠΛ]’Α‰ΖM_ζ¦9`'π‘!*Ώ­ΎrƒΎΑΪσ`L€ 0&`¦ΉΡgŏή%}@yΪπ³ϋK€I*6WΒΖσ(Τ}ννθ0Š?ύf;}_šd°ύ‹0ΨΜΈχAκ…/bk5VηΚ†€&πx&π&κ&Τ%εNΙΰσ v£Ύr=κ$Ωvμn|Λ,¬(ΩMFί6ΝrEJLVŁΤ£c£4₯ηΔ§ΙπˆΌ;؁­›p_c3VZd—·|g NTΡ0σ‘IzM€›j}} ¨Ϋ©{j5υ!‰MΡΥ…¦νω£έ;5ι«ν^¨Σ”<1o_μG=S‹:R-xαΧ£"H.—Ύ!‹Τ«yκwθ]°9Fu½}εJ-ώ$“ηL>δ›gOΛΔ}<κ›Ψ€σ₯PΛa˜{“΄γκύΗΊκ°j`#²©αβΦόbP—›_ΰ$ομψJ2ϊ|-ήτγ©―Ύ# _4Ώƒ~2ϊΜyˆ‡€ζ˜œh9+Γ§?}“±|k–‡$+» + Ϊυ Η‡L€ 0&ΐ˜@‚˜£Ο±»ΧތkΌΆIX€ΙΉζTmΉϊ°Ÿ―Ζm&Ρ]γΑ»/ΚŸ]G³$ή}’‚ ΰ”Ίš*±‰ΊΊ¬…N”–Y0gΦ0.m_zΘhΣ!%u1Eώpl –ζ=’^³<S$6ΧΉ1l+E™&.ΎŒžO©uŸŒ>έόΕδh~fG•+I ώ Ÿικλ€πϊt\‘»z?yΒΡD,$cQ‹ΎZξ[S%βί’ι*BͺΧ/2¨g"ΰtL»)σfΛράηΡάršqςΠ'άz…Eβ:ƒ]«Ÿ .4[ζΐ%Ρ›κί’ˆνωεƒY>Ÿ4λ”½ά†χJ²δή>Τΰ€?Κθ=•rEDσς­x/δ«½η­<θσ '²oΛεgο½'₯χN{?²—₯"υΆ\Ψ©4в2[ψ²g}5πx&T–Ίλp²ΫIγM’Ι7Ψω5<͍° ΏΕQ_1aΡaεα/άΥΏψ2°όΖ oψ\πY&ΐ˜`L A(ούΈͺγpδcYΆμV)!σ—―Σ‡¨ϊ°Υ›εν,Α₯Ύ@ΙΗp¦w½Ζ˜οŠ£Ο¬…Ελ¦ι;οέI1Θη#§ΝσΝΨhΘX‰’Œ0‘uσ‘θΗ&Θ„œJ’gΙ»<(Œαξ)ζˆlAGŸ 6o τΥrίͺCŒ>oj‘ΤθYBΜW‡.{Νδy°ωξΝΜ%WXΩT"Ρ:Γ¨Y6]]―ΗK=Τ@IDATΰ~Z μfΟυNšE¦M}N?όυQoίήbϋΛΨ¦pDΉ>©ήΟ .ΠW»ή@γΑθƒ]Œϋτ?…²nώ>›§ρΙ™>iŽO:Ξdτ‘_%ξ£<·*ΖnPΜψCͺœH€[cΌυΥΔ7f‘;pΥ›ŸΡ—%IοxΖ2†Lό˜lότuαχOFuW`jΚΎ¨ς¦U_%2&ΐ˜`‰I`RŒΎ–Χqπ-|a»θoιFːϊ°ΊMκ“mΦϊ9π•Iό)Z±ϋιυdπΡχΪώό.Ξτ|):δpλCΕΘ¦CέμˆϊE…έσ γθΰύš=δϊ,\FΛ$~`η§_bcvΰ8ΐ…€ΓθϊΆjΉα’PyNΎ*…© ΦzςΈhm:=5ψΚNk r«¨«tš«VJc­ϋ?$Ρ^C5z2²Α}ΰp²7Ro_vœ_~=v4ΥrΞί=‹ Υ’ŸŽ\ˆνΖ2Zrω–J8Pζ]ύ}ΕΚ7 ¨κΧ!Λ9θ‘΅ΒIνJθ±ΥŠΗ•Ϋoό,–ŒR₯ΪΖ]_ |γ‘g©›Ίξ0ή°ΟFzpX §‘‘cnqΤ7…Όƒ †WAtΗjΡ7Ό>Λ˜`L€ $I1ϊΠΪιUU¦»Τ‡υ}4ΉCΖΉ9±HτtlΦBdJvMYώάύ”εΚΥ]«₯]©[D95ϊ7d’ _€‘aκg‘±^Τ{ρΥ©š±φEΩKnH0q¨ά,²#n)Ύa‚iΡWΣ} “–ΚSυ 'C³pΡ₯s­ύΈD;zϊwk>@Η  ‘oΌ cΖV}‘΅Žzϋֈ޾T¬X1_uΌH“f)}+Ά­mΔ‘χhρuο.F#͎ 2ρξΌA.Α|#΄ώΰ|šΜEσmί§εƒΏύzή"₯―υZpy-Δέ·Θϊ»ΞΆyŠQ_­ŠLyψcΨ^ά#;*<¦‰‘ο˜κρ&ΐ˜`L@5o«™ˆ[„O…bzδ=ΆΓ§‘£μ,ρωθyOΟυχΏ]£t/Π%Gι^ά­L»ι“°γ]ΈZŸ–!Ν4pEήm=‚φ~ρ΅œ Η–½΄pCπζ(.CyiθY Mn°:κSœβ0Τ7κ’ϊ±κ«>…ψ…ΤΜ,’*υx΅ΊeiK]FcN7ϋ]Ϋ`ύ΅΅bΟαΣ’01ƒιΔouψνΙ ’ΨΤea³•Ζ¬:οφΞ$;ˆί?»kV―Ζjιάβ² Fτ5šx΅ θy›H=Ώ’₯Ω K±οΘ³ή±ΆnΌίT-]ˆYί‰TrdΕγξN€Z,‚ 0&ΐ˜`‘Ί„¦Vόζ΅NdΡμšϊτ•8q$g/&ڞ:ϊ£ŒΞu4›"Ν^W~‡ŠΊ0D~N6³πχ{kω°ξ’tZ/U'šqaΠ1ρAϋKΨ&­ΣΧEΏΝh./€ή”Š·›±ιμη4}J ,\(υͺ χ(ͺj‚[ψ£Λ%h•Υΰ:2χFFh) ɐΥcΥ/ΐAλφ‰ D>zΉ―Œ­~˜+±ιFPΔSJ―dΔ@/ͺb¦Af]Ι‹Έ»y+iΝΖe«pόώόm$©f“˜χ†μψ$Ÿϋ‘"VŸ^„·ί^­zΙ5ΨՁςΚOF—; ΡU·'ΧόšΚž?Z@»ƒt2’\š‘5’wp}ΝπPυφΡΏ5?)₯φ›¬Ηΰ§h^ [ύ;θݜMγύ ψήE4°/`1χd•ί·ρΣΐπ$I§D•o1±­κάe#HΥ{NΰΎ‘$$‹…1½[χρZlχ&]ψΓυU„©ψίpβ4YTΥΊ ZžΔC|δ|%{Λ†8lkΨ±<£R‚{;C$Rψ‰,!}‡ ύHΊΔͺ―/ήaL€ 0&ΐ’ΐτξι#€bIƒΪ7Ί%ΈΙ& lΒΰ£1{ύ4#§ΨF†•QY]({Ύ=ωd˜m’ΑημEwΏK 둦Ή”vύŽνDνΡ6šνŽδ%λa2™`€ 4Μƒ^Ό[ΣNδWD˜6§ΫHZ£άθ<€K[[˜YΤΘ₯5κ(=“‰f\L5Κ†%©§΅πRSSa"—A‘ΗΠπIOˆΫγ”ΌΛ,u‹ΎΎΘκvδ΅γBυFΥ¬―’€fJXUΏXŸ_·zδ?Cͺ―Αηqυγxέ―Όξ‡ΑΒ€5ιΛήKΧΕ΅ΧuV„ΎrYa/ŽΊPσςIΏΛ(-YxU„›_ž"[œ”.ύ –M—h9†ίžμ—Β3σqηυ²uy‘£5Μ hλ•Λϋ|*§bR–ΠAωzˆ“1lC—%·gSG­$’ΑηqγBO*ΓϊŠ;­·hΤ7HeN˜pu7( zΎR΄¨reσH1ψ”€δc”!yJ=ˆθR9Ξς €νWn y{^Γ…ΎŠ+BΨηhΈΔψ`L€ 0&0iΎE)ύΧ€₯Ο„μ…(Ξ€™ έρNcSπX₯tEN,ž›LA?C£XΈn7;-‘™*d_DίηνΤΣΖΰ›ΐτΖ+jΊι;ήόŽίκ(ΔχSω!Sεb'h:ΪE6VL>Ο˜`L€ 0&ΐ›ΐΜ1ϊ›3kΗ¦7{ŽόΛ?Ќ¦α{oύ™£ήAΧΗψηΥ%]RύαyO3Ύš‘q&ΐ˜`W;eΗΥ΁σΟ˜@$))0$“›f€0Κ΅δ9£Ζ¨)—ψw𽘈,‚ 0&ΐ˜ΐΥE€{ϊϋΝΉe1°ΒQ˜Ξ˜ϋϋ5ƒLŒΙr΄0ψ^„Β§˜`L€ 0Ψ苇/1&ΐ˜`L€ 0&ΐ¦;i?{ηtΏ¬?`L€ 0&ΐ˜`L žΨθ‹']–Ν˜`L€ 0&ΐ˜˜b<‘ΛίNž 0&0Ή¬(ί»·πJe{U έYŽΝ«nΑGII8A#žͺjš\l1€ζάU‹ožƒΆίU£²q&,3ύΚN ·£0&ΐf$6ϊfδmεL18°—γψ E0Œ%ήΥ‰ςό ΣzΉkQJW܈Kg^ΑΚccε4ηγ«C–ήbCz²Φ4ΚF‚}φZΌ°>+ˆ·E—IΗ‰oτYo‚Ω¬‡Ηj _λAΌΚƒvΉΣ«μhεΜα™`3™»wΞδ»Λyc“M@7Ω N|zi6;r²²‘ΏμމRbάu–[τΰ•ϊL]0;6ƒlπΉϋ;ΠΤΠ€†ƒQ»ο΅©SICΚΓ#ςΊ–#γ―ς“άiSv4ά(Κ˜Έ pOίUp“9‹L`β ΈqΌbvRG˜Υ(½+Ρ;Ž• »ίwωŠtή}e(μυΙ8_Z°!?w2²1!i$I nΌY½ U-"r„ OPJρ*ΪεN―²3AψY `L`F`£oFάFΞ˜lΈώ.ϋvEr΄£φ™‡‘i6tΊτwώ΅Άa”〡ͺΖ‚‘>mϊΉεγ“:ŠηΊΤ‹γΏΪίΝ~ Ώx<)τΧ‚ρΐ…ΞS8›dEvΊp‘s£νΰs(©φJwcχ#χbι aΠλ‘L„ΗνΒωήΏβεκ§ΰf₯€ κΖH–WυΆU8rδX₯σαKΨ^γΈ¬ΒΝ¨ύρXb6Ι:xάp_Δ'§~‹’υςΝ‹E%NfUMς ²oލk–"bG[.β•P’%ηؘ»}§0`ΌwΨLv—ΗՏζ+±3„έΉ ΟlΌfq3ˆί@ΟψπΌ·₯§ ύεJl /ŽΆ Ώγ:*2:υ"t2rŸ9‚#OΣN‡‹ν/cύ6/7qy‚Λ™ΒLˆV»Ω;ˆΓύΊ?ΐ9Ωb Χ2Yˆ]ϋ6!o‰zΙXφ`°cόž ζΕ`Vʌ†²¦μX©hͺ›ϊ*τΤΤ!%,2&ΐ˜ΐ(lτBΒ'˜ˆN@‡ΉiΨ ΜΏ υ΅ U1ex΅jΘά£Ν7:}2RmΛPq’Ζ{œhτGR±Θd„žb¬/ɐ―Α'>ςυF ²3Σρή7ιH5ΚF™Ηε¦0Ι0Ωr Μ=λI~Φƒ?F}bΔ—Γq–eY$YΧ Ɉ0τHMΟΖΦ=‡Όa-κ…Ύsηα:JΫHιy(=y#MŒΒ‘TΐΌ99•C¨ϋλΔ‘Š0Kι#|Π…Yzε‰t-Έ…dτI&j,:¨`―Ρ—2g± [v-Ύ&K–τE#[N€±Ϋε"[Oχ.%θ}g5κΌχΨκ܍=[—IF‘0Έ£%ΛeδtKΣSGK„2Μ»ŽΨ›D;W6»V” q/tΠΝ›η‡r¦0σ'y/ˆƒΗ…AW2ŒTΖδ²7neΊ‡φQ9“‹,\t3t ©X_uƊTŠ‚C9SSv,Ϊκ&Τκ+αSY‡‚Qσ`L€ ΰ1}0x— 0΅’±|k^¨ͺBUΐ§…>εO¬’?zέ½hΨ’‡{ςοΑcτρIvΩj<ΌΫι +ν7₯4\H:pα­†*δζε!7w ή8‰Ά ΐπˆg°[IήΡ2HhsχE~ώ?£[؁ΊωΘ$cTl}ννθh{{Κs‘—_€‚‚|δnُ^)œχ>θ ΨZΥΉΉRz[vJq]έMΘ£τΕάά<”ψΊJ€Λͺ8ΚVΘίΟήϋGYeyί™ŽiμΠ0:L“ŠF&m΅˜0qθP…V6c@!3agΤ “ί¬HρK¦•β]B½)Ξμϋ¦XΜVjC1DΓl@η53ؑĠŽd”—dΗ”5šŠQ’)iιLzχwžύ/Ξσ4έωηZt?ξ=χάΟ½Ÿσœ{ΟυχbΙ)..Ζ½+ αΪsǏœ@")Τ0“ε·Χm’vP ]θ–°E]Σ§¬C“Ό¦ΥΤoEXωd3ΔΞ1γ…¬xό‘»$/ΰPά…χRΫξEΓ©^₯Eq7n+u]ΉRΡΥ‹ΦJ_βΝuΩIgιjB9œCυΚ"β°ϋΟτE-œ¬1ιͺvŠŸΈϋiΌ γŒ~;§z…_œk+j%}βgͺƎΖί¦j}IkΥΏ‘¨Δω"`L€ ΨΣΗγ€ 0Έψ†1DΖ“ςGD˜ωωίΘ²X²Hœ—‡ž£{Q/O!τ΄ξΒΑ’e¨(0#cɝd6΄D]ΨΣZ‹ͺ@δΜΤSGLήώ.WW$3±ο=aξΪ‹¨H%n†§΅›Ιεg]γΔΦΚlΜMΕε―GρΥ°ŸuH³,¦ΚΌ7:€Εω%݈σ³²hζRιyψώ–RœmlΫάήRQs°‚xt˜ˆYPjπH6ƒ’ωϊή N“ν¨Η™Oώ₯9BŸή(εΆ—ΰ³8ροΌΈ9K³©κ7Έοd5E"4ŽK±uMΞ8Σ€f‡Šΐ΄εΖΚ}Έ' ‡€ŒIςš­ϋ†<ޟ~€QΫVTΪSι%Ιeτ~τ%VeΣ4ιŒΕ(£†5…4.žq»?¨~5ΏMϊΖσ i&2&ΐ˜PžΧ`L@/~D κ<ΙDšψΠοΕωΣαFUηG_dτιŒΘ‘βγE γόŸŽM$XΊžB΄”. .;aΊ§`ˆ΄£«ί‹\*Ι±-Ο<ˆlyš¦rYωN3†LT.&ψΫΣxε°θLX]ξ’OΡΤ»!\ψτΉ¨‡5Ηρ'mLzhlžΐ W1 ΤΥoΐζO>£™ΥiXΈˆ¦ ›φυ;IHΥ8S9v^ 4Ŕ6}γω ©Ρ‚σ0&ΐ'μ點z›ΫΚ@@ςίω02ɚ.OKv4Ÿ‘Άh0˜aΛ• >ߎΈŸ@]δϊ’‘Λβ5a«€‰dΠ”P!ω#¦£A‰*i'5ΣƒΚ_5£—"u !=³lΉ’ΑηξCΟ€€Δ/†ϋ”r>νBΓ‘s™”Κι 0›Ν΄ό…ι*I#ŸbX”eDVΆ͐ΑGF–°Ωωρ=ΏŠΎžO­*˜‰ZΠήl™Τ³Ω‹Ε$8“φΒ³X,d¨Yν½"L$ύ"،ŽIώΑ k ΒΣT‰ϋOaHDl >o_Ξ‰ΫˆbϊcLμRρ#ͺ¬dŒ³¨ΕΈ(liΠπF˜CoΞ†M0ψhι€8φ€±Qe|&qLRdά’κΓθBκκ ΘΚ±‘Y’ΑηΦ΄žσŒošq¦rμhϋm’*τλ74Ύ΅|… 0&p]ψ΅ώΏ―kάx&ΐ’Lΐ޲<ˆ“ΙΰkjΡΊΰθκΥs”:±xΎΎ‹£₯5ΪΌzωj$Xi'ϋΌ›21_Πc€τ86=z¨Ρ5ž-gλ>μΒ¦qΦ}<Υ”™ώqϋ”εYθ½ΕEΌέ"mΝ1‘ζΙ“vΪ’$Ο"Œχ‹θ¬νQ Ύ‰›†λjυ½ΦCΣ€ž«dLΰ:"ΐFίuΤΩάT&ΐ˜@B Xh¨^‹Ύ7[q”φμ θ”•uΟγ‘YTΝš}υ3ΫήH(Ζ˜`L`¦`£o¦φ λΕ˜˜ι;ρ–{έψ΅k€χΐ™ύΨP±ns¦·‡υcL€ 0&pB T_£mγf1&ΐ˜@2 τވ̼ ζά€o +ώλΏπΝπήωέΑγλp2kfΩL€ 0&ΐ˜€μιΣ‹³2&ΐ˜`L€ 0&ΐfŽή9ΫzŒυeL€ 0&ΐ˜`L€ h ΐFŸXœ• 0&ΐ˜`L€ 0&0ΫΔήχv6΄ΖZ†}Ο—R8ψ1IΫ”|Υq5-³A{؝.lYΏί΄%έ/ΌΧ‚mξΦ©»ΥQŠ»mHΕ(.|Ϊ‰Φc3RΟk_);œ[–"β£ΠΨ{ΌpΏ]ϋ#‚[Θ˜`L€ 0XfΏΡ—ynΛ’pCZ™‘g 9›Ή‡φ­ xac~˜‚ΩΊ<:ύV βΔZZ‰­kΏ‡Kη_ΓϊDν‡fΗsͺ±Ϊf«ν©ͺ>΄Υ> χ1)&»£ςάΩΒς„žx{ZQTwm/l„(Ι?ˆζM%a!έ•ϋHF.0|β ;™©’»Ρ-δΔΎnδBk₯cΏ½oα7»•ˆu Ϊ^*—tςv£ΊhΣΈ|φ­ϋ¨―H/o\E›E½"j‰λT«\kιNΤ=΅ζ_ώ˜ϋ«œhgƒ«λ7MŠΫ]8ώB©dpF+Hό\Eϋρ³γΟΡ>m‚’ΤΗOR+Ί9¨Ό[./φρo)―[άΣ-šΈΠkήξΓ(ΪTz‰™`L€ 0&ΐT˜ύΣ;Ϋ[°ΓνF΅ΛS>±Ιώ±Ώ©hϊtg±cˏ%ƒΟ7Π…Φζf4>Œ†}G―J±L›+ς P΄jωUΙ v αυ=ƒΟ7<ˆΑ!ψ)ƒΞ…,Ο fUs”6›LgΖΊ§ΆF”’ίC€ΞΑwβ>Ր_Œκ“Ν("ΔQr·dπ χ ·ΰž(™Re½tςw9ρ\$— ¦q)Ÿƒb?ΐς=-p†)ΰ~ “γD6Fηθ«ΤŒU? u_45χqjŒŠω`L€ 0&ΐ˜ΐDϋ;Q-I½ξA{«δiΊ½ό ΐ’Ojm‰ž">ϋπfέfΈ—VRε+’ί•‘HΚκ*‘o’໏οΑ¦]Κ΄Yžk~™QμkoΟm¬Υj ΧΑCύDž"Α`T’)ΆZλΓΌ}Κ½o”ω;¦άˆΌ½Gͺα¬!ΏžΥΧφJ”X}œ;KΡZξIuάyKHi=–m!gλΜΫ_¬²ΌH6˜qΨU‚:3Φ²Zμ«X½.?ηDΛ©βι·*}8^½»Δaέ쁇<…HΘZ^D[v·ŠΧxυƒ’h |C>ӊβΒΐXρΠq5Ÿ@iŽΎή#ΈΧGΒ=NL€ 0&ΐ˜`Ϊ \FŸΖFΫΛΠπΜΓΘΛ2Ρ΄??tΊ1 t ›ͺΖOιsξΖ3εχ Λ(’~ υΎ‡χ/˜pGN:Υ ͺI™³¦^ηξxlωͺZ“θς£π™6΄=M2Θ;r±σ6V5ΑJuϊ±B€ k σ ¨0Ψύ.>I±’ G˜ιΓΉΓΟ£’Nxκ.ÁΊ‡±P0§τβJ/lλΡΦφw’b:*ϋώΑjμΠ¬―χ/—‡»‡|‚ΨvμΨ8‘₯*Y‚κM’·―Ύ’^Τ5φ‡zΉg―§ξmΐ­ς΄OΛmΆˆ*Κ`ΟϊΧ‹³Ÿ#· ζΫο$³₯1aS8#*ŒσΤ‰;­Rίœ:(|‚ OSŽή'I–₯w’qΥBΖUΌύ¦E5?ΌίHFΨΔΆ˜ΓήM·ΓιjΧβ6j‚oˆ<”&3 Š3PhGˆΡ1ι΅€β±½§ECΞΛ˜`L€ 0& ΈΎŒ>G%^w?2χ(ωασΡE=,ΆU4υ―¦{ΙS"q!£«{Ά―’Χ Γλ0`Κ.ΐκl)C¦%|}›\l/cϊ˜θ—μΝΐ:Dγ<“8εQGFŸ.=]”‘™‹IzΘχ{…i«z˜m+Δiˆ^:7ήω?ω9JΙθkŸŽfL$Τ˜Vg zcF΄%‘>7M<ΦτaΟF†μ<ϋš†΅T)Ψ­vPt@JKKC;$Jς£―ϋs,²e!–·OΙ-~Η’, υŽ@Ά#0:6&Ύ΅’Yλϋ /οy™/ε1nEΡ2kɞž1Ι‘τ…Ÿt SλτωΟΘ3FΖ¬Ρ„Ίγ‰·ίΒ€Nv’ΓόLμdΜ…Ž¬κγŽ@_xρ~Η—X΅Κ†ό’R”Ν[*ŽωΞwΞγζu«al»Ι*βϋL€ 0&ΐ˜`WIΰΊ2ϊ\―— >_šω \ΒZΊ›ΦI“'¦ΗΥ’ΡW%˜}V<ώΘ]βͺ¨ τΐf1΄JYm *VΙV_œΰ·•IH ο“ΝΰE뎒ρΣ;GΗ€†»°½x3ξo9uΩ”·"g;šOΊ‘£Ο@=t·ΆΧ‘€P2ΚμLε ¦"Mƒ›Hbβω΄/[,―Ώ#―ΞΧκ%²‹ρΒKΕ㠈S.KΙ«ωξοΠ·p;V˜ΤyϋbΚ¦r†$ύόLqή‘=3χμ‘@ ξ·Γ½“?,ΌU,ενϋ+Žy±~¨d,Ώ¨ 8Φ"qšiΆd#ΡZΎV•€”2V ­ƒŒ·ί΄΅PΥΫέXQHšV«ά)ψόΔΫ £/kε/πSρ•E/NΆ_@ωΊˆ‚|Κ˜`L€ 0&4Scτ9Ά φΑΫqƒlΗDm iςι‰zΤ}½Z}^y-_Tyγ.:°d‘B€ηθή@4AOλ.,Z†Š32–ΘΣγμ%ΈC θΗ;/JŸ ©κ7Έοd5[!Β΅΄-BίX8”Όύ]θ Ηι‘Ώο=ΑhΑΑaEzH•άα^—ΰΥψŽηH}Π©ΨJφ­xΉφA€‹&Ή½η±»d[ψTHŠ–9tIπNS ιzaH1€λ)©’ςΠ9œΘ—Ό}¨Η™`‘ρG*ε ³VoΗι‹€χT3Ά……Έt’ΰiL||ϊ΄Xί۝(XeεŽBΨΡ$²―Θt^ ™)«‘Ύθ»‘> VΰλxϋMc³„ >CΤΝΚaρη_„φ1ιΪӈ3=NςDšE“oΈϋZΪSA«&91&ΐ˜`L€ Lεy-©Υ9EXU0Ή‡,λ‹?CΆϊΌuFTμFd"J…΅[ηO+ŒT’σ£/2ϊtΖ iz\Zj`ZηWύ‘Rα|_r(Θ„’΄΄M›Ύr )RΔΒΛΓ‚%LχbZΆ£«ί‹\›œ'I_#—e³TŸy%Λn.ζΣԝq\”M―η5<0Qh}{a@Ϋ”TšΨԈ³Ώ@ή5ςφν-Γ±7±)Sn@ͺ|ΰΖ Y$#­ϋέ‡ώr,,—uΛέΘm¨a|xΎ_ HςaΧ'}0ފϋ©ΝαC%¬όL9ωϊσ―HšnμΏ‚a½ˆ³ί΄΅Η‹ί?AΑd¨ΎρI,RJ₯)Ύξ7?$£/_ΌΠυGZ»ΜGΙΛίL€ 0&ΐ˜`Ι!0%F_ϋΡώ›6υŽ‘nΪ{Π>’>o iγoQŒ9β>yΜhͺ\xR0ΘΗΈϋαΉCΟ΄΄-΄œΦ㿐aZN†ιT¦Ž3ΒK{ΣΘ6(ϋ'tΈQ\θ&ΧγNœp―Χe…ϊvDύdCur]%φΐ«ηPPNήΎ‚R8Ώ ˜ ’jΉ@χοžΕ¦:ΑGjGνΛ΅X•eΐκ'kΰl Ϋ,Ή[±š(uΏ±ƒωkdθ*«<'Πiͺ.“},ωψh-]Ί•jbm@xGwΏilKΝ ¦F˜aΑ_γ«xΓ>™θΕ«NZξΙ‰ 0&ΐ˜`L`κ(ΦNrkμh…ψό­ͺ†ΌαGΗd£-"X‡˜ΛӍ―Όδ1±x=uv”nΚžL)^‘­€Εyύ” €Έ*βUaή2Β’¦Ά…•Τt’˜D§²X4*‹²u ΰθΏο‘t,Δω›Μ(;ξƒŽFςφmΌ}¬]›·œΠ‚)©Šάͺ[Πvš6_Ά5¨-£u›ΒZ½Rάy‹Q,>MQξ“AΑ\tΘΊγn9fˆδd™Ln»zάϊƒaGEΈ—5Z.ΎΖ˜`L€ 0&ίNŽΨι‘zΎλK±bΓΒ\¬§B?ϊ/IOΦωΆω¦€28οΚO†>κΦpu΄‘K΄ώtΈλ{y»‡Mœ*¨”ίς&β†Μά€ήρkΩ„ΧΟ ‰Ε-«h]ζ– 5²žeΟSόƒ%;°ηU)"₯Α4ρ©―œ‘ΜyΛͺŸb 9Κ¬NڊCμΛaόώΩl()A‰ψoxρ=I“ ?‰τJ‘zŠΣ3‘zN*·‰ΦΖΡ[ JYχ< 3#₯5.¬Λ•ŒΧΑΣςΔ©κ7E ώfL€ 0&ΐ˜˜Ι¦ΖΣ7EΪ;ώŠaŠ\i4ε’ϊ­“ψ₯ΧOSJ/ΰΰ³N4Rωύ‡ήCΨ†Α”χ‰6t| o£ύ’1Œ­WS˜³VΚ,―XΉξ“Η1θΥΑ,m¬—°Φ$~ϋϋ=π•ζΠv}Ή€χ {!Ψθ΄»ρlΓd ‘G,£Ρ@ΖΟ<Μ•ρxZͺ°£ω †…sƒΆ\Ωΰσ ΰˆϋ‰ΐ†ΧΒmOS%vμ?…!Α9Hž Ÿ·― ηzΕB–«Nήq’χ1RΨMΥ’?bšζ”tΡΛαΨ.49GQιΎή³Ω 3Y˜.Oa¬hσl,ͺΖ©^Ιγg΄d#[6ψόήoόΧq›Ϊ "Ε=…}„‹τod”Ά•—•ΛJ[„s2΄ N₯mBοΚEBδ)²ιŽb…(™θ;\6] ν^93 ζ0εαΞ›%λr°KφνΦxOςͺeϋίQ l‹@'6…θ ζώ‘I.υνΨs\“:Ϊ“O1ψΌ½hvm@SpΖ')_Ώ©i4ς|‰±φUΫ1§€NΠǐgiϋΕ΅j4β•Ε+cšΛeΪμX‘_€’UΛ§M“€λ n%ιΗί¦­…j+Άcˏ%ƒΟ7Π…Φζf4>Œ†}GΥ ΈΆς%Έί’>Ξdϊ£cή₯cρΈφμp»QνrγΤ€O”κ[ΨμSΥo±HΝbιΗχ˜O€=}γ™π&ΐ&%ΰΓρκΝΨE»—XΓ^Έ{fΊγh–υ_Ύ"ζρ]™4o²2$W‡vl**L–κ —›"ΎHπαΝΊΝp·'\ό,˜ψ~Kξ8 ’ ΖyδA{«δ’Ύ½ό ΐ’SΞ΅Qlͺϊ-­™ C,ύψ`γ °Ρ7ž _aL`R~xΏ‘Β<±¦ΪΛΠπΜΓΘΛ2~?tΊ1 t ›ͺ0n·KZ·s ξa,λΗ‘ΦQψΣ"άb6BGεΌ—ϊpό_wβwsΕ―+Dš°ΆΗ0Fzφμ~Ÿ€XQ#LσαάαηQQ'Kw”‘φgχaΙχΑh0@O„ίηΕ…ΎΔ‘Ίm,/Rκy$τδUƒm=ΪΪώN$‘£zή?XMq¬G$¬Ω‚†Ÿˆ¦¨™%ό>ψ. γΓw_AΕ&±Δ£ƒR&3·ό°lίR‹–"bG)ρ‡šMhŒh’sχ”.DΧ»2-Γr›YœVηχΰΔ‹5ΨΑΐξ܍gΚοA–ΠΔo¨χ=ΌΑ„;rΠy¨UωΕΚ'ωtxlω2:˜ Bf= ŸiCΫΣtH{¦^μ<„U27αv‚Η™ΒL­&9Ÿ#} β§=Έ²ΐ›ECήΑnόί_oB}€±:ύ¦Τ­i¬―Αξ}›±ςΆ,D#܏απ{2Δ#Ϋfwξ€ρπΓΰxθyŸJ–»”‰Ι£a<$cόŠP©ƒsχ>?Υ'%Δ$2’ HŸΪR)‡ΊO'^.G–˜™–‡½H5©M€kρύXCFŸh’Ζ£ƒ fΎ΄Ή ‰]θšͺyψn”&eηά$2²­(5φy½d`¨ο,(¨FίΫ%h”ϋΨκ¬Εžν«δ΅V>j`Κ.ΐj 92-‘υ©£%δ2¦/ φfα=A`—qž06„ΎΠA—ž–„q¦0 Vϋ(ϋζ›`’qeΚ-3z „ΞH}lΆa£ϋuΰΙPj\OgΏigΦ-xy_ι§₯mFK.΅ν8LΥΕ¨‘ί±„ΏΓ^=Lτ[“ώΔf˜°»ΖC˜ΎτΒ(QγtΘΞY,ŽΓΝ–0SΒίͺŒτ₯λϋM˘L–a β&ΐ¦ΐ·§]V€ 0YH@ΥΫέxΦΩΈCώ=ν\h‹λρυÞ―ΝOΔ½EχβQzH$»€l΅l<\λ δh6₯΄ςG8σβT³…+W’°πI4Ώqη<ƒΐθ˜TfΈ ΫIή‘^2H(ωz ¨θΡ#؁Ί δ‘1*€ώΞNt{{\…XYTŒββ">Ή}bΎ,άχ9cGJ ΕϊΆξΛz{Z±’κώDE€KCΜ5ω‡£r­dπω{±‡δγή•…pν9ŒγGN Gj˜ΙςΫλ6Q;¨….tKΨ’ιSΦ_I^Σjκ·"¬|²bη˜qΒ V<ώΘ]’p¨ ξΒ{©mχ’αT―’ΈΏ·•ˆΊ\©θκEλ₯/ ρΐζΊ€μ€Œ³€tuAf~t΅ΊQ$τρ£ϋΡ+Œ3ϊόύΆΚpAΣΩoΗ™«Ϊ)|ώαμ§ί‘Ψ6ϊMžκ~ΙF¬­¨•Ϋ:Ξ‘ze‡•Ψ¦/ΌνI>S?BυMμψU―ƒπ'Mϊ«όΫ'Rpiμ·`ωΙΗ€’7Ρ:tη&ΐf6ϊfD7°L`φπ b`pƒςΏ!:ό‹oδ†8°d‘8/=GχΌžΦ]8x–Œ7JKξ$³!zκi­EU½±υ;*ΓB½{ϋ» 8NFH)}ο σηFpE^<€Δ‹π΄Φ`sΕœ½Ρ‰­•.Έ\™sY*Ύ–Κ₯YS Šσk\-ϊ/‹f.™‡οo) ΄Ή½₯»j£ŒG‡Ι˜…κ,›Ξ‘—Ζϋϊή N“ν¨Η™OdK²ηΑ^‚;Μ‚Wԏw^άˆ₯ΩTυΙψ'1Ύ ±uMξ8Σͺ±πlVΆ’π4β_ώ$ΐ†[ς|.uΚϋ-€ϊIΗyωVζHΏcο§`ΤΆ•••¨άΊ ½})Je,F™p6*Σ·+χ%t<„¨εPΓxΣ7‘γWƒQZ ζ€ύ"$ž1R|ΒC-:L(„o0&0₯xzη”βζʘΐ΅Bΐ‹ί?Q‚:yšίψVe"MœζΕωΣ‚AL}Π:1crθςxΓ8§cΑюRRΕ«—‡WŠ0έS0DΪΡΥοEMΌ%}8Ά’ε™‘-OΣ Ή#¦C¦ FήLΠΉ§ρ,Κ `Ρ™°ΊάEž’)rCΈπιy΄όj‡Φ™„h₯‚Ω%'ΊμQŒ<)‡β δOK Lλόͺ?p•Žα|_rdc!τN⏓<Ξ4*μϋκσ°ννπΛ†ή1(―CΒ2ί{±^`³IϋmR !2ΣΕ)΅Βcξ:(³Crˆžu‹θ0WΖΓ.Ν†ρ΄ρ{5c2ŒlBN΄Ι„TΛB˜˜Ψ蛁Β*1Ω@ -ΦoV#ζˆKγθi—¦²…'εΟΞD>*¨ς5ς_Θ€,'2z²’φιdπΡ]ίΞύωœού£—ο΄ŒμNZ6G2£—OΤΥ&lx‡ΪX%7/’ΦοΝΘΞ] ׁ—1gεƒαkγͺV=3Υβ•nš¨ΐΈ~(c―OΡ8Sί‚Θρ€ψœ'’0 ύ6‘*1―ΣΑ#†"[˜ŠΛhήλΨ•ιΩ)0ΘΞ`EδΈʍDkΙΏZt φ+¦r’QεEφΨψ1™|‚Ϊπ`ΣG`²­OŸf\3`3šΐψG‡u=έψŠEf X²x= v£Xά”![t£W Mτ )§ρ0bPN˜¬k'Ϊƒ΄½ΔσˆΫK(yw―„E«TΉ4ώ{μκΝ„v΄ j³ΆΖвOα±uω q–9­hiοοΛ&R‡€2BδN)έrMϋα¨ΌSaSšήFqOIš’q¦Ά-Ί΄πvΫν·Jž2]Š2)V­¨¨ωΣoQDO4ΞFF)Ό Ερ‘hΉ_Ύ[ΖIπ’d_ΔZQroΌρ‰I£cςΛ’h:kIΏštΊ{/6Š|ў4ι­Ylhe’eV3&“­C4½ψ`SO€ΧτM=s‘ \ϊΡIZ7—Ώa δp)Τξ28οΚΫ?τQ‡Έ./i0ζίpίβyplέ‹{”P„Ρ*O•­ ™Ή!zGΛ¨ςšƒΦZΎ`ς ©ζΈ βΡαFγόΰ-ε(Ρ:(rΕο~aΓ 1τΛρ|u΄‘K΄ΪuΈλ{¬œ»‡MœΪP­efΐ8 QYŸUˆέv`Σίέ&ήυ_ψ4°Ζ-$»ΖΓυ[h­“3κγN1‚Ž'χŽ[—θ(«„kλIbǟπ‘Έ|Υ€•ξ Τβ¨όn ·…χβ98ί%­%4,Μ§…nRw'iγWƒΰk―΄/hΨί›έpdΗ€6YΏ…€U3&“­Cˆ:|Θ˜ΐ4P^N£ \5`³‰€β‹ν%ς`‘wΰΒω›ςα>Ρ†ξ/bαm90‰†ροΏm o69ΥΙ/6α=Τu=„΄žo΅λ$^.υ`„ζ€Ϊ„=c€φχ{ΰ+Ν‘νϊrα>yƒ΄Ε‚°O_ηΑκΈφœs–bci66>ςϊϊqρΚά|K6ŒbcϋπvδFy€›jΤ2£€κ~„dQ}ρy€υάm₯‘Bνϋ«ζ=υ<¨ε –W¬€Ξ\@¬ŽcΠ«ƒYƒ°Ά[±'5ΖYXsŒ(v€­τcθ2o£½κ„N¦@7χ‡ε¦/«λIι· *“3ω8α*¦ν' PύΦ lώδ3š±†…‹hͺ²°i_ίΈλ`~{΄ωΩ`ΘY‡“myψδ’ΦK ­Αšγ?jοψ+†©£)—τ9‰_zύ4Eς>λ€='΅Œ‡d_-:Ώυ^ϊ{cή₯η±]h8rC>’₯7ΐl6Σ:<3¦Σ“zidΰS ‹²ŒΘΚΆQ 2ψθ‰NΨμόψž_E_Ο§VΜD•i―Lj‡ΩlΕb /‚2­.Ț‚π4UbΗώS°λ’ΑηνλΒ91œΏ(ζͺ?€ˆφ‘ύ.2γ,Ό-g~xύdΣX“ >/Ξώ_¨’χJ Hšζ~ θ‘fœQΔέ’κΓθ’q‘3AB›Ο“Q"|~a­μ9O@œ°-HΓ=βΉήœMωΘΰ£<r΄ά±ΡθαlΤ΄»ρlΓτ‚Ζ½φ²Σηa\VΛxHΦψΥ’¨Κۜ{aζ_Θί¨Πί[š~ dV1&“C@>`L` |‹κώοi¬Ÿ«fLΰš'`GiYΔIŒdπ5΅¨Z”P*ŽR'ΟΧΓwρc΄΄FZ› ­jBaVΪΙ>ο¦LΜτ =ŽM*x•7¬v;ζ_€)»+ŽΏ„|ZΖΥ}Ψ…Mγ¬ϋ«¬hΒβΣ7Ξ*ΗC6#†»šQΌω œΞ<θυ>|όv Ϊƒ6Ρ„šΟ–φ5NδY„ίΡEτΦ‰vς¬EMφ5(Λ£ΝΖ}ρvKk”½QK%ψ’Άρœρ«^«£w/žOΘθoΤՍŒgL&Z‡w(‹cLΰ* °Ρw•Ή8`LΰΊ%`u’‘z-ϊήlΕΡΖVšΰgEeέσxhE!Bσ£ ~»ΰZb¦<`{{ZQ΄Ρ}-5νΪnΛ5<~yL^ΫC—[Ηβ!{ΉD<Ή `L€ \2­Θ£ι~ω9.¬£=CΣΐ™W― ƒOhsjŠ΄BOY§ʁg0kxός˜œΑγŽUcΣD€ΎiΟΥ2&ΐf=φwρΗ3· ίJΣV z€κtυ^ΐΩ#ϋ°C ξ1λ[¨ͺ½=Ÿaxa&ϊ{zUεηL3„ΐ5<~yLΐ1Ζj0D€§wΞ Ξ`U˜`L€ 0&ΐ˜`‰&ΐΡ;M”ε1&ΐ˜`L€ 0&ΐf6ϊfPg°*L€ 0&ΐ˜`L€ 0D˜ύkϊ¬eΨχ|)…ƒ“Ψ€€ΰ«ŽC¨¨iI4«€Θ³;]Ψ²~)Ύ#H'έ/ΌΧ‚mξΦ(uYαΪ»KCx­¦-‘ρf υm‹ά)Ύ$†ͺΆeΠ&Ώ£Έπi'ZuL±\Dΐη–e hΐθ46Eϋ-YqΏYπ`L€ 0&ΐ&"0ϋΎΜ›p[mŒm.6™ΞŒuOm(/ΏcIƒ#ξΔ}ͺ3 ;ΏΥ'›QEˆ£δnΙΰξnΑ=Q2₯₯Κzιδο(rβΉ€I.βR >/Ε~€!ε{Zΰ S Αύ&;ΖIˆ1#—t+5˜C‡`±©=’Ϋ6‡’oJɌU? ηϊAcXσψ 1΅­βژ`L€ 0™@bŸς¦«ν­’7ζφς'‹~Z΄ˆ§Rik'ή¬Ϋ ·δˆ!¦›Š cܟY΄΅-F³Bnυ_Ύ"žωŒ„\°¬ω&ι!·ϋψlΪ₯L vΰΉζ§‘ΕΊφφ‘Ν—k`΅ZΓ+φΠ$oŠh—ΛwLωλ°ΥZζνS }£Θί1εFδν=R g ωυ¬ΈΆW’΄ΐθsΰάYŠΦšp/±γΞ[BJ뱴h 9’C͌ΓΚς"Ω¨ΔaW κθχ`-«ΕΎŠUΠλ²ρπsN΄μϊ'ž~ΣΦJŽWoΖ.qX7{φφΊMx΄Ν υ»«ωJs πυΑ½Nal#>―MhΪDΗj›…ΛZ^D[­·R›ψα4Ζ”DƒόςwV~Ρ9Hπ„{œ˜`L€ 0ι%2½ΥOCνφ24<σ0ς²Lδ4σC§Γ@χŸΡ°©jό΄7ηnΣ†Ά§I½eΏΨy«šν[j±sΓΐ7&^KΑEό‘fS”ιn"*Φ`χΎΝXy[ ’έγΗπΐψ= ς¬4•r‚ΩΤΆΝJ\ύX!„u˜†yπvΏ‹OR¬(Θ&Gϊpξπσ¨¨žΊΛp ξa,Μ)½Έ Ϋz΄΅ύX±ŽΚΎ°;4χ…χ/—d‡»‡|‚ΨvμΨ8‘.Y‚κdM’·―Ύ’^Τ5φ‡zΉGΆ§ξmΐ­ς΄OΛmΆˆ*Κ`Ο&@π’λμηΘ-ȁωφ;ιΎ1aS8#*ŒσΤ‰;­Rίœ:(|‚ OSŽή'T–₯w’BHΌύ¦E5?ΌίH†J,{E£c’©―Μ0ˆUF½κΗƒz™BN5mσaΨ›£ιv8@MϊZάFέγ"ο«Ι,½jUgγ9°±'QβO&ΐ˜`ΣOΰϊ2ϊ•xέύΘܣ䇏 )m(l±­’ιq-0έKήΉO¬ΞZμΩΎJ^+HAΓ€)»«³₯ ™–π5`r±IΏŒι `’'²7λσLβ΄@}Ίττ0isΒBωƒiΎ›<‹λˆΦy½Ό―Y‚=@ΙKΣ0Zr±Ρ}¦κbŽ$­ImΫ2³s¨MCΎίλ£jτ0ΫVˆΣ½tn >ΙΙΟQJF_λόt,0›`"`ώΐΤ31””.₯ύˆ=’±λΓΩΧ4¬7J1ΐn΅ƒ"RZZϊϋΫ^ alυuŽEΆ,Δςφ±δŽ{vυŽ@Ά9θ‘{4L€}k!D³Φχ^ήσ62_Κ‘ V­!³6Žώ žΘ‡~|u6LςισŸ‘Ν²@Cw<ρφ[˜ΤΙNt˜Ÿι€ žΠ‘5B}ά1/&“η}MγAKjΪζΕϋ_bΥ*ς‹JQ6o©ψ·ͺσσΈyέj$WK₯œ— 0&ΐ˜˜fΧ•Ρηz|½dπωϊΠόΛΕ Φέ΄–¨˜ΌM4…¬–ŒΎ*Αμ³βρGξtόC]ψ§6‹‘UΚj[P±JΆϊβμΈΖm%δg’ΘCc3xΡΊ£hΒιΒ4²BΡ&Qς#ϊš> ϊΈͺ’ΑηξASΝF4ŠN-;j[žΗͺl#ΦVΤ’ΡW₯A’”UuΫFΗ€Γ]Ψ^Όχ·œΐΊliz\‘³Ν'έ°&yτΠέΪ^‡ μ•πSƒ¦ˆΑM4«(`_ΆX^Gž―—'=0dγ…—ŠΗε§\–c’Ηφέί‘oαv¬0©σφΕ”aληS$šChΟΜΓύ?{$L£ϋνpοδ oυτφύΗ<X?TŽ2–Ώ_T z“Η5fͺ/Πl]Ɏ ΅|GXUΚX΄2ή~ΣΦ$=VowcuD‘ΐ΄ΪˆλΙ8Υ2΄Υ«mΚΛ„|~βm Ρ—΅ςψ©ψ:¦'Ϋ/ |ΆΪ87`L€ 0&03LΡηΨ‚ΪoΗ ς³~Τ¦“&Ÿž¨GέΧ«Υη•ΧςE•7ξ’KIa6zŽξ D₯σ΄ξΒΑ’e¨(0#c‰<…Μ^‚;Δ‚~Όσ’dπ βšͺ~ƒϋNV“A"\KΫ"τ…#€†ΐ‘Φό‚‘δε[I도δύτŒΪΆ’NF/£χ#z»OFŸ.c1Θ,@S’ΫζνοBΥγΈ"=ςχ½'-#Έ"8¬ˆ±4ΑŽεκuQΕϋ–>G*껀NΕV²oΕΛ΅"]4AΘ θ=έ%ΫΒ§BR΄Μ‘K‚w2˜RHΧ CΚ³t=%υCT:‡Σω’·υ8,2ώH₯\‘`Φκν8a‘τžjΖΆ°—Nά"υσΗ§O‹υ½έ9€‚UXξ(„M"ϋρŠLηΡυ¦@ϊ’οJηϊ4dX―γν·0©“ŸA}†¨›•?Β4βΟΏογΙ₯\E γAk-“·ϊ‘§gzœδe5‹&ίpχ)΄΄§‚V„rbL€ 0&ΐf!ε™&©ͺ;EXU0Ή‡,λ‹?ƒ¨ϊΌuFTμFd"ά„υMηO+OωR‰ΞΎΘθΣ3€)di©i_υ‡J=†σ}UΘ‘&αŽ–ΆiΣ7΄ήg¦"LsΧ‘"7Šl],δeKzΫR€¨~—‡#J˜ξ)Δ΄lGWΏΉΆ(z%πΘeΩ„Φ§ΓFm•,»Ή˜OSK%S‰ιŒγ’lz=―၉ΒΟΫ ¦€’‰ΪԈ³Ώ@ή5ςφν-Γ±7±ΩSn@ͺ|ΰΖ Y$#­―Η΄ύεXX.λ–»‘%ΪPΓψπ|Ώ\δΓO2ϊ`ΌχS›;ΒaεgΚΙןEͺΠτf {θ•@œύ¦­=^όώ &CυMW44)«mΒAJ©4}Ωύζ‡dτε‹ΊώHλR#)yω› 0&ΐ˜˜ω¦Δθk?Ϊ‚Γ³ΡΖΧ1 ΐ@{ΪGΤη!mό- 1G|&―M' O ω‘|άύπά‘gZΪZnϊύθ:ςoψ!Œλ—T\F;Ικ‹ˆΖ…Œξr2Ί§2uœω^Ϊ›Ξ@ζ½AΩ?‘ÍβB7Y»;qΒ½N\»4Ξ·#ͺ“λ*°^=‡‚rςφ”Βω…`ΐLTΛΊχ,6Υ >Rš’ϋr-Ve°ϊΙ8[‚kRKξV¬f#Jέ/Elη`@ώZ'ΊΚ Φ tšͺΛdK>>Zo–n₯Z£X[c#ήΏΔέoΫ’m/L2*»†ρ ΅Umάꍯβ ϋd’― C…–²rbL€ 0&ΐf'ΕΪIφ­ŸQUΥβѐ7\ΰθ˜l΄E΄syΊρ•—|#/£§—α‘YJ7eO8”F―Π–Δ⁼ΖHaqUhŠ(=`‡%Mm +©ωDι,²c¦˜FF)6&Ν€Θ™_Ύ[ΖpQΈά)j[Z`]xυžEλί 3Op£c—薁ώϋ~@ΗB  ‘ΏΙύ?AY —;ΙΫ·AπφY°vm††’gMIU δT=Ψ‚ΆΣ΄ωΊ°­Am­IΦκ•βΞ[Œ’€π©|Bΰ’ ζ’CΦwΛΡ0CκIV€ŽΙδΆ+}‘Η­?Θ£…œA£oi`}Q’ί¦ψ.fŠϊ-rj±€ΔU~NΖα*Ε«-ΎmΗ°£"Φ΅5r>&ΐ˜`L`Ί |{ΊHdύη»ΎΕζbΝ8ΑύθΏ$=uεoΨBaT”Tη]YβΙΠG:§Ž6t‰ΦŸwύbo ―sχγ°‰Σι”²Sωέ/lp ¦‘°)§γuˆΙΪΦ9 pΠΓρδήqœe•pmOo|-ΣpEήDܐ™θ“ψ΅hΒληΘΝIΙ²ŠΦœn Žz3 {žβ—,ف=―žO…謉OxεŒτͺΒ²κ§ΨBŽ2«“ΆΗι0~l 6”” Dό·Όψž€‚Ι†ŸDznH=Ει™P='•ΫDλΗθ ₯¬{Χ“Š'k\X—+―ƒ]§ε5ˆSΥo’š>&νέI9hͺŽ33&ΐ˜`L@5Εy€ΊΐLΞΨήρW StG£)ΥoΔ/½~šΊxŸuΎvμ?τΒ6 ¦|ΈO΄‘ϋγ‹Xx…±ŸΦ†ροΏ•βj ΣΛκ_9ƒε+ 3ΐ}ς8½:˜₯υ†`Rψtε@ݏ°€Μ½±1½Ό―ŸλΉ ΪnB ςΧ(ϋNΖ‘ͺιNPΔR΅­ϊ­ΨόΙgδEIΓΒE‹D/ϊŽΐ]uoψ'm[Ϋί4‡ΆλΛ₯>9Αa/„«γΪ3±±βEάsb;r ¬*wγψ½ψz, –,³G†μβ”qF!§o½U‘=m΅αν‚«ζΓ¨Ζ’§qΞlx‰"y‹EW1εR„ΣXΛοšκ€Ÿ oύ·α©­HM±Iz „φ C[ͺΌιmτm) υ~FόΰG₯δρΩΜ]o£ρπώgPM:’Άι†ΡJγΕK‰°2'*δΊ_z Ε΄UˆAŸ…Š·^Η}Ÿ\Β’œlςΓ i―Τ L)ΕΣoJΩΙΎΓm2oΊ£rάεΦ+Β^ŸR)½<6„ΣsΝ;PΉα₯ Š~W3‘ίjΪ¦όncΆŸEŽίΘΊψœ 0&ΐ˜˜Y)OΪέxΆα 2ΠΘ“EΦ€Ρh aζΚΜ=-UΨΡ|ΓΒΉΑ [lπωpΔύD`ShαΆ§©;φŸΒθ3ŠŸ·― ηzΕB–«NώjB$Ϊ£.ΣLςfŠΈh1I†e5ΠΎ}‹…t²`aΊ<55TΔ$@K‹ͺ£WO¨3 ‹φA³εОr4νΟοΒΉsΑιu‘b΅ΗjΫMΥ’?bšζ”t09Ά GΞQTEΊ―73LΜ$*UΚΆ`cQ5NυJ?£%Ω²ΑηχΰxγΏ"šι+ξ§HOφΑoͺLx’–§Ξ U_Ή¬΄E8£—‡Ξ§Œ6‘w…B ΚSd Ε[aα²ιmΗπΚ™1)―wή,Y—ƒ]²η:¬t ΞυI^΅ κw!ΆE “°v zˆYβϊΠ$—ϊφμ9.ύήt΄'Ÿbπy{ΡμΪ€¦°!_Ώ©i„4ς|™t]―d)Ÿ"[:Χ!tIž&Š ϊV;BŠΔDλ±HΩ”©rWd‡³l½ΰ };Τό6ΉίσρΒΝgL€ 0&ΐΤΈN>h¬N4T―Eί›­8ΪΨJ뉬¨¬{­Θ’ΒCh~τΤ_Ÿφ‘ xœεš#`―DΫώ1E4ΐ h0y½ΰK*bNI dOΦΑlΣW ‡kΉmZ8p^&ΐ˜`L@5e ‡κΧMΖL+ςhϊ[~“(w…5{ΰΜ«lπ…α“kž@ZŒz}`ŠqΜφκηNš―Ω¦oL 7―εΆE4•O™`L€ 0Δ`Oί„Χ`gέƒΘ·fŠv§β¦Qοœ=²;2ΘΙ„Uς &0c XαX“£Ξ˜ϋfΗΖE™κ†Ν6}΅πΉ–Ϋ¦…ηeL€ 0&ΐΤ`£O-)ΞΗ˜`L€ 0&ΐ˜˜…­θ³°Xe&ΐ˜`L€ 0&ΐ˜@2 °Ρ—LΊ,› 0&ΐ˜`L€ 0&0Ν8Λ4wWΟ˜˜ZVΈφξΔRγ^«©DΛ,ˆBlwΊ°eύR|G•’‚ ο΅`›»uj±ΕͺΝZ†}Ο—6@cR.ρ«ŽC¨¨i‰UjΖάSΟw’±3Λ9̘aE˜`I ΐF_ ²H&pΝ°»pό…R'j ·’MΣ»]ΓDΊ©Όn-­ΔΦ΅ίΓ₯σ―aΧ4mJ™X²Τ†½§ ˜αFŸ}k^ؘΦ{ΩΊ<:ŸAF_ζMΈ-Λ]ˆ–y֐³™{¨ο$cgs˜Ή=Ě1&ΐC€ΎΔpd)L€ BŸzg)‘L›+ςsΰΞΣfτ%]q»E?ώ6γϋȎ-?– >ί@Žώι=\NMΕεlŸYš··`‡»7~ UώXeΡΓ?6σιqπ5vf-‡™5œX&ΐ˜@2°Ρ— ͺ,“ \σ|8^½»ŽΦ0‡†g¦;Ž&ν™ώΛWΔ<Ύ+#“ζMV†δκЎME…ΙR=αrSΔ >ΌY·ξfλλA{«δ2½½ό €ŒΎΩ’΄ρlμΜ^³₯ΏXO&ΐ˜@ΌΨθ‹——cΧ5?ΌίHΉžXΣνehxζaδe™Ώ:έΊŒ†MU {1<Ρz ucαX?Ž΄~ˆΒŸα³:*η½Τ‡γΊΏ›σ(~ύX!„΅S†y΄a<0Ψύ.>I±’ ΗLς|8wψyTΤΙe¨ύΩ}Xς½E0 Π“αχyq‘ο?q¨nZ:d”ΊAn ½4yΥ`[ΆΆΏ3訞χVcG“R \υIΟΦlAΓΟDSΝ’~|—†ρα»― bW“T<”21˜ΉecΔΎ₯;7,!DĎR .β5›ΠΡ$ηξ(/\ˆώw1dZ†ε6³θΐυ{pβΕμŠ``wξΖ3εχ Kθ β7ΤϋήΏ`Β9iθΐοΙΐ―Ÿ±ΎφVr &ΐ˜ΐL ΐFίLθց Μ::ΜΟtΐξ`Α4ߎΕtTβuχC s’>26t=,ΆU¨>ΩΣ½N„…ΉΘ΄ΰ&³ *±±"WJŸπo0e£ /§–‹I2Κό^εΡΓl[ΑάσΉδηδη(%£OXρεp܏UωΩ’,ΏwΓdDXr °}ΟΛΠozM‚ΎσΣ±€κ6Q}~ͺOJ€‰I0dD>7΄₯RuŸNΌ\]Ž,13=Τ{‘j0R›HΧβϋ±†Œ>ΡDGΜ }is;”’ζα»Qš”s“ΘΘΆ’XΜθσzΙΐ6PίYP\QΎ·KΠ(χ±ΥY‹=ΫWΙ³z}Τ6ΐ”]€ΥrdZBλSκόۘΎ€Ψ›…χΓΖyΒΨϊB]zzPHΖ™Β,XI4θ;#ψRΣՎM”¬[πς>ϊ]H?1xiπθŒF-ΉΨθ>Su1jΖ½TgfL€ 0ί9ζC&ΐ˜€Jz¬ήξΖ n7ά!žv ”w=Ύ^2ψ|}h~r%ξ-ΊΓΩd«eγαZg ―x@³)ΕεB≧šέ(\Ή……O’ω38ηFΗ€2Γ]ΨNςŽτ’ABΙΧ{EEˆΑΤe ŒQ!υwv’λάΨγ*ΔΚ’b‘πΙύθσeᾟΘ;κPRX(Φ·ύp·XΦΫӊ•TΏπ―°p%*βt=8*ΧJŸΏ{HNqq1ξ]YמΓ8~δzΔΪθ#Τ0“ε·Χm’vP ]θ–°E]Σ7:¦τ‚ΰ5­¦~+ΒΚ'›1 ^6γ…¬xό‘»$/ΰPά…χRΫξEΓ©^₯Eq7n+u]ΉRΡΥ‹ΦJ_βΝuΩIgι‰?P―οΜΰ+P;v΄ΠrU;EƒΟ?άƒύτϋ,~τ[?Υ+ό…0bmE­qœ— 0&ΐ&!ΐžΎIρm&ΐ’π bˆŒ'又0ςσ/Ύ‘3;°d‘8/=Gχ’^žBθiέ…ƒEΛPQ`FΖ’;Ιlh‰Ί°§΅UΘ™¨ί! '‰˜Όύ]8HJί{Β\°\₯/C ‘αi­ΑfrωYΧ8±΅2sSGqωλQ|5μ§N,‹©@ψ<²(Ξ/ΚκΏ,šΉ$`ΎΏ₯g[Ε6··ΤEΤ¬#&b”<’Mηΰ…(GΎΎ7ƒΣd;κqζ“ΏGiŽΠ§7JΉν%ΈΓ,xEύxηΈXšMUΏΑ}'«):h‘q\Š­krΖYjͺ,’AίΑw|³bχΗψόQ―—o₯8–ΘCι΅mE₯=•^κ\FοG_bU6MλΞXŒ2*άU_dL€ 0­”η5­ε8?`Χ5/~D κ<AΘDšψΠοΕωΣαFUηG_dτιŒΘ‘βγE γόŸŽM$XΊžBˆ”. .;aΊ§`ˆ΄£«ί‹\*Ι±-Ο<ˆlyš¦rYωN3†LT.&ψΫΣxε°θLX]ξ’OΡTΆ!\ψτόΟGX>aL€ 0υΨθSϊs2&B -ΦoV#ζȁΘ‘”?;ω ¨ JWΧ_Θ€,'2z²’φιdπΡ]ίΞύωœούBp&ΰϋ?-#»“Φ†Ν‘ŒΗθεu΅ žτ‘φΦcΙΝ‹`’5…£ΩΉ«α:π2ζ¬|0|mc\Υͺg¦ZΌMΧ―eLβυ)g k}gί„5|"A~tω7όΗωK€9ΠΞίDΰψ:`L@3Ιώ·Y `Lΰϊ  L‘ŒΪZO7Ύ"G‘™–,^f§υjςόNΚ|S†lэ^­»ͺ”˜\EŒu ςD{Ά—xώq{ %ΧξυΠ‘h•*—Ə sE”:ZP΅Y [cEΩΞ§πΨΊ|ŠXΈ˜4Ι΅eΌΏS¬9‘:„4EωΓCΘ5퇣ςL=„9Li c–4΅W»L%¦hœiΡjtL~™­ο4ι;ψFiΈΪ±“ΓΘ(ΕΩ₯ψ@…χΛwλΡ8‰c_RÎΊWk±ά€ΓXJ Όό.lmgUω`L€ „ψvΘ12&ΐD ύ—€υvωΆ@—B²ΛΰΌ+K¬cθ£q]^‚*/f~ΠwpƒΌ MΘδΨΊχ(!Η—"—ƒτXkΘΜ Ρ;ZF•Χ΄žΦς“M5ď7ηo)G‰ΦA‘+~χ ^ˆi$lZ¦|QνWGΊD«]‡»~±7ΐΚΉϋqΨ΄žorUfΐ8‹Pς|Χ—βΓΒ\¬‰ΈG‘…Τ.fίΘ¨;19PΫ:ΕΘ@z8žά;Ž“£¬­‘τ`šGQdυzΪφDύ”xι#ΫΟηL€ 0ΩK@yi7{[ΐš3&0₯Xl/‘ϋ½‡Ξί”χ‰6t| oΛ½¨§4ŒmcΈήδT';ΌΨ„gτ`Ω=τVΠzΎΥ“xΉΤƒš“jφ Œ‘Ϊί4‡ΆλΛ…ϋδ  BšΞƒΥqν9η(,ΕΖll|δ τ τγβ•9Έω–lΕΖφανȍςH7Υ:¨eF3Τύ ΘάΣΛ{ί°ώŸΫΰ ­4R¨}ΥΌ§žυ―œΑςŠΠ™ ˆΥq zu0KλΕ ¬νVμIΝ€qќφŽΏbψ!Œ¦\TΏuΏτϊiκβ|ΦI{"jΡw&π₯ΖΕ9v&γPΥt'\Ε0ΠΨ©~λ6ςΝOΓΒE4ZΨ΄―ο܁`Nω” 0&ΐ4`OŸfd\€ \ί$#“¬9ς΄TaGσi‹ƒΆ\Ωΰσ ΰˆϋ ΤEΧΉ,Nω6XŸHφM ’?bκά”¨‘’vRyPω«fτR€N!€g–-W4ψόΓ}萂”ψΕpŸRξΐη±]h8rŽ"“R9½f³™Φα™±0]εBΓ€ ι`dΰS ‹²ŒΘΚΆQ 2ψΘΘ6;?ΎηWΡΧσ©ΥA3Q Ϊ0“Ϊa6[`±˜„§b2Π^x‹… 5K }£W„‰w€_eΊ^5αiͺĎύ§0$"6ŠŸ·― ηΔ°ϋ’˜«ώvνΧp‘Ιgα5hŒ^!°Ξ€¬l9Y’ΑηΦΰž‹œςLΡy₯‘)U£Έ«Γ*ε&ΐ˜˜ˆΐ·θΖOt“―3&ΐž€₯ey'1’ΑΧΤ’jΟΥW"ΑQκΔβωzψ.~Œ–ΦHk3$c­΄“}ήM™˜/θ1@z›=’ΥD«έŽωiΚNJ†γ/!Ÿ‚ͺvvaΣ8λ>YL8ΣΦ2mϊN?_m­Σ’ΫN[ͺδY„ίηEτΦ‰vςˆrbL€ 0Δ`£/±ί@Z››Ρ|ψ0φXwΏpˏ¨­›hx}Oΐΰσ b`pˆ4t†,ό`yΞΔm‹v'm.6™ΞŒuOmΘ%Ώ³Hƒ#ξΔ}ͺ3 ;ΏΥ'›QEˆ£δnΙΰξnΑ=Q2₯₯Κzιδο(rβΉ€IΓ…q)Ÿƒb?ΐς=-p†)ΰ~ “γ$č‘KΊ•Μ‘‰C°1&ΐ˜`LΰΊ%Ψ§iΑθA{«δ=Ί½ό ΐ’Ÿ-β©4E|θυαΝΊΝpKNŒbΪ±©¨0ΖύιηPVW‰|“τ$ί}|6νR¦Ψ:π\σΣȌb­z{Ž hc ¬VkxΫ<Τ§δ)ν\ωŽ)ΆZλΓΌ}J‘o”ω;¦άˆΌ½Gͺα¬!ΏžΥΧφJ”X}œ;KΡZξuuάyKHi=–m!ΗμΜΫ‹¬²ΌHφ° β°«u4Ύ¬e΅ΨW± z]6~Ξ‰–RΔΣo!TϊpΌz3v ˆΓΊΩpX·ΧmΒ£mVx¨ί]Ν'Pšc€―χξu cƒΫ‘žm΅†fΡ2BΛρ1`L€ 0&ΐΧ€Ρ§±μehxζaδe™Θiζ‡N7†ξ?£aSΥψizΞέx¦όdC‘ήχπώξΘICη‘T5›#7©2ΞέπΨςT΅&э₯Gα3mh{šŠκtΈΨy«šrμ[j±sΓΐ7&^KΑEό‘fS”ιy"*Φ`χΎΝXy[ ’ζΗπΐψ= ς,:•r”lNάΏœŒ%JΓ]‡C >αJ;vlœΘͺ•,Aαaςd½}υυ“g•ύ‘jδÞvΈ··ΚΣ>-·EN?-ƒ=[ ^tύΉ90ί~'MmLΨN S‘Ε‰;­β*> œ:(|B!OSŽή'T–₯wŠ2Ίβν7j²ψαύFκίXέ¬τΥθ˜dκ+ϋXeULz eœM*Œ30&ΐ˜`L`VΈΎŒ>G%^w?2χ(ωα#CJgΠΓb[EΣωZ`Ί—ΌrχY΅Ψ³}•ΌVΠ‡αaΐ”]€ΥΩR†LKψš5ΉΨ€_Ζτ0™Μ‚½X‡hœg§1κΘθΣ₯§‡ΙH›»ΚLσπέ΄ΰY\G΄.νε}εΘμJ^jœΞh„Ρ’‹ξγ0UCp|iJφldȞ˳―Υ©/šb€έjEβ €΄΄4τχ·Ό@B_υuŽEΆ,Δςφ±δ޳/Cύ„#mŒŽ†‰΄o-„hΦϊ>ΓΛ{ήFζK9dΈ[Q΄†ΜZ­ΌΒ$'ψΔ‘τ…Ÿt ~ϊόgδE#cΦhBέρΔΫoaR';Ρa~¦v:tG¨;ΖυΕd²βΌ―i<ΔYcL€ 0&ΐ˜ΐ %p]}ΗΧKŸ―ΝΏ|υ䨳–OΕ0κiΚ[-}U‚ΩgΕγά%eώ‘.όΣ›ΕΠ*e΅-¨X%[}qvhγΆς ɁδQ²ΌhέQ4ατNaΪ[‘hC)ω}MŸ}\ΥNΡΰσχ ©f#E'œ΅-ΟcUΆk+jΙθ« ‘fb.[,―Ώ#―ΞΧκ‹²‹ρΒKΕ㠈S.ΛΙϊξοΠ·p;V˜Τyϋbʍ°hυσ)2Ν!΄gζαώŸ=‚|ΙI†ξ·Γ½“?,ΌUΤΣΫχWσ4bύP9 Lz|Ώ¨ 8τΎkΜT_Μd!ΡZΎ#¬ͺΡ1YidΌύ& Qω₯Ηκνn¬ŽΘ˜Vq=§ZΖC2κg™L€ 0&ΐ˜˜NScτ9Ά φΑΫqƒςΌ­Ε€Ι§'κQχυjυyε΅|ΡčΏζΐ’ERXž£{EƒOΘγiέ…ƒEΛPQ`FΖyΚ›½wˆ!ύxηEΙΰς6Uύχ¬¦šΒ™œ΄΄-BίX8ρ‘ίZσ‡– “—o%­—’χΣ0jۊJ;EΙ½ŒήΎ>]Ζb-fLZϊQ&|Π©ΨJφ­xΉφA€‹&Ή½η±»d[ψTHŠ–9tΙ'••?Sˆο…‘Pο9ξR?Dε‘s8]‘/yϋP3a₯"NTΚJe­ήŽΣIο©fl qιDΑ-·OŸ+{»s«,°άQ;Ρ’w3,‰Χ0}W:Χ§!Γ |oΏ…IόDκ3Dέ¬όΑΡQώExO.ε*rhWQ eL€ 0&ΐ˜ΐŒ$ <ƒ%U9‡£« &χe}ρGzpVŸ·.ˆŠέˆL€‰ΖšηO+V‰T’σ£/2ϊtΖ iΚ[Zj`ZηWύ‘Rα|_rd£IΈ£₯mΪτ ­7Η™ιˆ˜Ζάu¨Θ"[— MΕ ·Ξ’δ Ή4rY6Iυι°ΚΞΕ|š>+™J”YgeΣλy lš`:¨½0PCJ*M όΩ{ΰ¨ͺtίϋ?Σ‘Ζ-§‘ašT0bΪj˜Dγ‘cI4΄2ƒ 8aTΜ;β„ΓoŽΑβ€f†(Ε½„šΤhsήϋ¦Μ9Τ„bˆΖ™zƒθ™”L@eFs4’¦μ ΑTŒ¦ €‡Žι{ήgοέ»{ο€?φξtη‹gQ‘χΗZΟzΦo}μύμυUW‹{zΧ¨·ow ŽώWd38ͺά ΤΐΏΘ"1™­ uΙωpζ?Υγ5νοFΊhCυγ³S=ββ"Ÿ΅ŸΘθƒω<@inU«€π‰υσΝ—I!.쿊~oΎιK•―?E‹ΙP|γεt•‡ρR’γeL€ 0&ΐ˜@’Œ‰ΡΧςV~렍Ί£Έλ€ή–N΄ hχEΪΘ[΄°Εtρ₯ΎΡπ7΅“1ŒˆχΥΎ•gz¦ 7ώΗ~΄ω=ώΪ‡ω2 WΠ’Σ€i=ωΌ΄7‰Μe“ΌB«…yn²Œ·‘Ω½&B?’o'%j©P`„Ά`kmΘ]O½}ΉE(ώJ0`"8ΝrŽWŸΕΊj‘ŸŽ†ΈΪ‰₯ι&,ΫT…β†ΠΟUw;™Qδ~iΨv&δά_LκΙ3B#θ4V—Ι>–ϊψh.έ,;ΕΖΪ€π=#ξ|Σ™–Τp{Kκ”1*ο:ΚΓ¨βαΐL€ 0&ΐ˜˜€dk'Ήͺ΅6B|§Φ‹G‡_΅ΐΑ‘€Ρ6lΡ—§½ΤΗa2cΑbZ8€54oώœΐςƒWqAτ<˜eΔlΥΊ*4D” •Σ•6UHέ'rf‘}ΥEε00HύX΄Ε†πυϋ5¨UwhE•υfk/.‹rM4Ǎ  £ hΰΫΟ¨4έl­₯ήΎΥBoŸ χί?GS˜XžR¦Ι ε΄bΛ£ 8όmΎ.lk°³„ζx ƒ\‹pηMfQŒz˜’°ΠZΜΕ€τΫst©ˆMšX§Έ ΓXr[δΌ0β–Μ¦-%BFί­Y‚υEŽΚΊψmcŒςMZ;SŠ:aΗ␰ˆX`L€ 0&ΐ&7οNnυΥڟjZΌ`š›…εκ[tΦƒžΛ[bΞꍴŒŠμJP|WΊxw¦Uš—Υzν’υgΐ]Ό;θ·xΗ“pˆΓδ°cωΫCfšδTCNGκ•₯νt―ΐΑΧ¦έ#8ΉJΚQQ6’ήΘX†_©Γ›mΤmHΞΆ”ζpn &K;Πσ4Ϊ“˜rλp²“ΎpKΏηqq~¦x²Ό+²$γυBϋ{9ˆc•o’Ίώ‹™»19芎=3&ΐ˜`L`ʐ;¦D[Z?A­FŸ…ΚΗπ3―Ÿ†.žΗΛΟΣΎvμ;π.\Β6 –Έ›£γσK˜»–έί.ϋρ§ίIλj Γαj^9‰;J—ΐ`Ν…ϋX.x °Jλ%ŒULψ΄θΚώκ‡0›Μ½‘!c`_?Vώϊ0\΄έ„°ΰΙ'aφ ŒΕaK]3šiΕR₯­ςD36œύ‚z}R1wή<±Χ έGΰΡίX[ϊ"ξiތL“ KΧ»Ρτ`ΎJ…-έJ&&9cΚ#Θ”Y„'V cJ[WxΫQQυYXcΡS» 'WΏD+y†‚ 7’Κ-άuΊb]ΝπΘκν£«^†i)Iώ3h uK‘Χ½ƒξΉ4ίό|¨ˆz›ΉΔχώgHM:’΄ϊΡHόέ:‡ΠΕhλ~ι iλ “1₯'ήΔ}g/c^fF`~e/^© -ΣOΎu‰q n±z§]ε{α^“E[™{gJ‘Œ²!œΆΥoEιπ $5pΥMyeπ/`L€ 0&ΐ&+)ΥΣ‡7žέσ6hΤ“EΛšΝ&Ν7`F w< [°΅ώ$hΛ=ίh…#+`πωzqΔύTpkαΆ§[χGŸΨ)f >ow;ΪΊΔΠ‚—Q;i?8!‚nζ,€YΙτ° ‘6‹d8‘WνΫg³ΩH'ζΞ MUŠˆΑ΄biAεAt Λ)LH§}Ϋ™΄ SτϋϊΠΦ¨ϋΈk *qΌKκρ3Ϋ20ψόή^4ΥώαLIqBz³ύRLΒ{`(ͺοΥ+ΚΩ€d”82JΫ(ο ώ’'Λ.Š·T©eΣ-ΪŽα•“½’KvξΌQ²./΄z‚U‘ΠΦ-υͺΝ!Ž‚n‹@'ͺt zˆ^βϊO—ά£Ϋρ?v5IεΧ@{ςΙŸ· υ«Q§ΚβψςMK"€νΓ@Μy²'Ωΰ“eKηZ½UΎ?_­ε!1&ΐ˜`L`jψ%γΏ§FRτ€Β‰’’li?p2ψκΒ™"!yv§3/Ρ ΏΗŽ=M/‰ϋΈu¬ Ε?βνͺ Ιο#ηςbdیπ]Ί„ž/NSO–Κˆ[=»k9ξ^ leξΓ₯ήΟΠxtxYά’9 .N—,¦΄ΡΌ–²Ξω¦‹.{fL€ 0&ΐ˜ΐd p}²Ζ^Œ=•χ£ϋ/x«Ά‘ζ?ΩQ^ύΦ,I§ΐ}¨βAΤ$Ζ>  {™rœε8όΏD+šFιιM½ƒήOρΏV•F’št>“Mί€α˜`L€ 0&0yĜV6y’’`MΣμΘ¦αz9™΄ψΕϊ •πή“―±Α§"Β'Ί €¦Βl4‡μF oœ1b.dTΙΈ9ΩτM–Ι˜`L€ 0IJ€{ϊ"fάrl«~9φ4qƒρi4kΠ{Ω‹­q,r1Ύq°Γ΅`L€ 0&ΐ&.6ϊ&nή°fL€ 0&ΐ˜`L€ 0Q˜Z«wŽ `L€ 0&ΐ˜`L€ L-lτM­όδΤ0&ΐ˜`L€ 0&ΐTx!>aL 9μ¨Ψ½ ·šϋπFU9†―|k/ΑήηŠh•!)ϊ”\l=€ͺ†δ¨sMK‘ —‡‰ ¬`L€ L!lτM‘Μδ€0€pV ι…"˜#Eδν@EΑΊ0ΫK€aΡ­d} ΅‘€αF_Ϊ|,L·AΉwύœl{€X’zέ^T޲ϋoΖεSo`ϋ”\΄)F^θŽ+‡ T’ZΨXxŒkωMZͺX0`L ~<Ό3~v’ 0α”VΫπ{β–„~|;όΊpή€­n7*+ά8ήλ}ψ‡Βϊ :‘ΧN,ΙΙEΑ;*wB ‹–EΗ•Γ**ίXΝΖ΅όjΦ’=2&ΐƎχτkމ L!>4Unΐφ£€]Υ!ηΡ‰'%Ίλ ς’€ίƒ–F©ϋοϋλŸlΖ(~“{«ηΚU1ίՁδF4ncε…€Ψψr˜8εaά²‰#ρ-Ώ£R3&ΐ’B€Ύ€`e‘L`ͺπΓϋwΙHσ ͺ©HΊsγNl[½π ‰WSp ¨Z‡ΪV…§Έ—cΗή Θ_˜“Ψ»θGο§x½zjZβHsΘφW?†Ή .0£4xΥδX‰Γ‡ 3 ϊΡΛ•ΨZ§PάY‚=Ο<†μt ΰχΓ`BoΗί°gݐ-¬Ο9ΛΠπΛᆁvΔGη-Έ=3§Ta‹25θb'yφΣ<€ σQM7@{‘γ}œM±#7ΣJ|h;ψJ«•₯B³ε±ηŸ’αΟV©¬ϋύ>ψ.χγ³χ_Aιφ:΅†ZύΊJ°σ'χaΡΝσ`6™$Ή>/ΞwŒΥO£AQΜ…τ1KRΪΤ) OωΥQvΒGΚW™`“ƒοœωΔZ2 Fΐ€™i.8].ΈNU―:c.l+l6›ψg΅ΝΗχRG™ϋF:V‰Β,ΙΰσφχΣk΅f[ΦΊ›°myςgΞΒl«‹7ˆΖ€ Γ$ž Χ,f fΝP(ξ*Η›/”"‡ >C’Qk„Ν±•ΗP¬W…Kΐ 3,ι·!Ο>°ύξΫ‘IΕ2—½€Ω0_Π[H{i‘x_0ψΘ…Ι’άμLΩ§ΆΌΠΛ!yΤXぎΌ°οΔΝ…ƒΟ‡ώώ!X2r±,7“ΈΪfŒ4}.-#“ΚΈf*'&ΏπqΓ«c‰hπy½>:7"ηαB‘,V³bͺ\œ Αΰ£TΦ‡Hž‰κTNαdn+vΏ.ΧXš“ «Ω„_?ΙυΒ`4Α–™‹Ν»‘DQu1KZΪ”ιŒr¬·όκ(;Qbε[L€ 0IA€ΎI‘M¬$˜hŒXΆΩhž[ρχ‹bυkhKυ:δεεΡ_:ΌRF;S―’²ιΤ›βοοΔΎŠ<βήΌM8ήΥO˜qιNύ°Z«±JΠ3?›vˆα½Θ§sα///₯Š.Ċ'W‚ϊχ¨§υ›ςqoΑ½x‚ NA3πΨNfŸη(:.νLΈ…ŒhΡΡΈY§ΒŠΞΝΊIΌμ={*Τ“H#PΕιy―w‹iΘ#υoŸD›η‚xGψOS^θ同Όj¬ν@{^Ψρδγw‰‹ωϋΪαΞ»……χbΟρ.mEς5(υb£Ώ›©ι’ Ί―λ ώ:»Ο0فlΥS~]εχ#]ˆΧί…]T …²žŸ‡Š]Ρt€ τψν9}νmoc՟ό‚B’[€ΌMϋΠ-Ꚏϋ( }Μ’•6E2£κ-Ώ‰ΗΡ΅γ»L€ 0q%2±sδL€ LZΎώ θ£—DΉ†@~ωU°jDΊ―Ζ#λΊ@= ω™&1ˆχά§t”‘ά9 Ό‚3_ci mœ³%δcΨΐ7ΝΡ(ϊσ"„qaΡ,±ZqcΦ­δ‘ΫͺφbE†½Ηwaυ–άv‹hfβΛO> ';±%ΈΪh+jΆ£§₯%/brƒΌP¨αPG^8Wαv«0؏w_ά ₯³Ί-ΏΕ}Η*ieΩQhΌμνi‡@άuU2Γ»?Ζΰκ ύlρc‡Nf=WΔΟ$ΰάΆ±Τ6Šeͺ₯‘zΔ`=~=UΨ@γƒνΛ‹QVžΣqε›A\μχΣRm (N_³$¦”Ρνb–_θ(;ΊcηL€ 0‰G@~_›xš±FL€ L`^ΌώΤ*T{ΖXΕ΄YΤ&9sΦ ”f…‰ŸzUlBG…πΝ—†TΡ@πβΤ{κHNŸω £Ο`ža`₯<ο|t₯K¬0§-€Λi d…Ψ²ο€σ>άΩς"ušΨΛ'Μ±»Ψ£δp§Ί· 3π1AyGΧq }| w₯_θ.3ΣίυτΧ‚φ/²t(8Μ<΅ w}.l –­― ΏŸΓΫί‡σηN‘αω­LΧEλρ Ν!}ζQdX€2& Pό—jž%ιa–Δ΄)TKΰarκqdQL€ 0„`£/‘8YΈv€†ΫooΜ’οGϋ‘ίγ―}€τͺŠx Em‹…n&βΘnΖt‘ΓHX9bOΉIΥ—¦VΖσΞαBi.¬4·¬lc½θξ[μ(/Ή s„sοfg<ΡΝΨ]κv6IςbD^% €JΠ’αΏž θN+³:¬ήδΓΞY‰E7Ξ£Ή₯&˜ΜVdd-CΕώC˜ž(υ'ΛN«_;vώb-|ΞΧ‡ΆΏ½‹S]_ εΈν‘ϊfa€az VΕΕ,i“Σ˜ΐί$ΥγjΘ’˜` % Ώ‘$T( cL`κΠ;7Onl‹fp(`0 γβ†ΉAκ§fΎ αλχkP›ΜΞ­pρ κx:p‘¦mYMf,XL«΄††QΟ°Ό―"4›nX"zή†ηΒzX­σ°bυ,Ψ‡·œƒkEξ{䱇Σϋε' ιΐԚ’ͺ‘8ŒQ^D-Ίςb00шفŽ,)+h˜_Ίά)s΄_O x&f­ Ψ²A6νμ(Ωφsό”Κ„Ι0‹‹iqƒ’?Y‹_;υ"‹6)m»ςάƒβΆ+²¦;V>N‡ςΧαͺfΙN›¬€ήίHεWWΩΡ)ϋgL€ L<ߝx*±FL€ L==Β‚φ’P ­™Sν_‹Ms³†­NH—[γt―0gΚΧ¦έ#ξ»JΚQQΆ|€P=W¦I&‘)-‹fύ„s=θΉ,ΝΫΚY½Qα§Εw₯‹ϊΞ΄Šσ»Β…Ž|ΝƒΟ ¦’V’$#€φUύ_RTZ‘Sp_ž ?ŸOΌ©ω?y‹ΓXδ₯)jy€ŽΌ }ΫEKά€»ώyw0ߊw< GψQŽš‰jφ¨—™‹ζάΡ\Ύσ ŽΚΔy±ψp½yfθ–VΏ3C}γΧ #PΞUΆχ†ΛΧ„ϊ¦™Y2ΣTHΗA¬ς«§μθˆ–½2&ΐ&*ωƒοDՏυbL`‚ϋbυ؁vΨ_ύf“Ή74d„`Η}t+}.Ϊβ …^΄? ³/ZKλ'θ_γ %π³Pyβ~ζυΣΞσxωΩbΪίΟCϋ¨5£Ή’&k.έoΖ†³_Π(ΛT̝GΓί„MϋΊΐ\ΠD?Ό–:α+Κ€νϊ²ΰ>֌ βrφΐι—+{Έy°οΐ»pm^ ƒ%ξζΓθψόζ.€eE8ύψΣοjυGL!ήώΰlph`_G+Ν lΔΗ݊tZΠE˜Οχιπω|Τ±¨)?βΘ -’ΔXεA{^xPσΚIάQΊ*;ξcMΈΰ₯퀂)D5N_ωuεamQΦ>ώΊ{{pικtάxSΜb¦wγΕ†—šύ’qΦΡ·Kh>ί²Šc8TδΑΥvϋMŽpz˜%/m#ΤpAKωΥ^v4DΘ^˜`œχτMπ bυ˜ΐD# υqω0kΎν™•F«QZ­Β}aCΡ {Œ ϋφ sΧζΞ 3­ΕgχΌM/δ- j¦yLFσ ˜!ƒ U2 *’KX:Τ`Bz¦ŽΜtΡΰσ s”ΪΓέδ0z~nǞ#m΄2)ΕO{—Y) šG₯ΤΥΣ°[λOJ[4˜¬pd >_/ŽΈŸBuœs Εy}’>œn~[ow;ΪΔν>$Μz ‘Ό‚σF8άMQͺ1AΉ:˜ τžCΏXΝdψ;hA2ψ¨"ω½½hΪυΌb>M/ΥμΧƒςηλΡE+u =ζιŽ,Ρΰσχw£³WΪnΒ/.9*i¬‹Y’d§η@CωΥSvτDΝ~™`‘ΐwH©žˆŠ±NL€ 0Xœ΄δ|ΆΝί₯Kθωβ4υ ΰ‹αˆϋN•dCdG_]C2'Žˆ|B]˜lyaw:1σ ΓυΨ±§ι%δΠ‚›+°.^‹=ŽάΠΚΜξt!{~fΞ€²ήϋ9Ž·ώC‘λρλ**ΖAζ%’ΩY¦,]³d€MΦ#ρΏ\Ο”%2&0Ρ°Ρ7Ρr„υaL€ 0δ°cOεύθώK#ή’=οZi7Εςκη°f‰0³υO<ˆš±ώnœ”&N*3KK–Δ˜Glτ#|Žš 0&ΐƐ€kNΈWηA*cξ=Ή«Λγ›‹©”3εŽ™Ω”ΛRN`Χ&a:xε΅™tN5`L€ \SΊGZφ˜¦_‡ο3ώοΕίϋ{ρξ«žόεΑk …ζΔ23Ν¨Ψ#`L`"ΰžΎ‰œ;¬`L€ 0&ΐ˜`L`”Ύ;Κπœ 0&ΐ˜`L€ 0&ΐ&06ϊ&pζ°jL€ 0&ΐ˜`L€ 0ΡΰΝΩ#΄—`οsE΄ϋδ#%[ ΄ͺ!RΎΞ˜ΐX^^ w₯£χƒ—ρ΄»1zŒSΉOκ΄ΩQ±{n5χαͺr4πŠ™ΡΛ1ίeL€ 0&0JlτE˜6 ΣmͺUήζdΫ#ωζλLΰš ΰ*ίχGΔ΄zΥΎϊ@IDAT;Q°Φρ~"nάξΌ ιι&Μρg“ΈFίTΗ“:miXt«™Fμi”SΔ賕£μώ›qωΤΨ^3>{6NQΟY`L€ $–}‘xΆ4`«ϋ4((W,₯  ύCίFςΝΧ™#ƒC~1&Mυq*Χγɞ61ύ˜J­jšΓ‰%9™πΓWγfτMΖ¨)ΰh˜`L@6ϊ"Βς ₯QϊόόύυOdτ±cL@"ΰν/ϊΞŽ―ώά ­!Ξμyζ1d§[ΏΓz;ώ†=λΆ`TƒqτΘ₯Ή8ϋ«Γά‘iό yΰ&«Η{ΉMΏΩwΐΰ )ΞGL`"ϊgo.zΪίGŸe1ξpX₯ΊινEσ‹UΨ^§¨—μόΙ}Xtσ<˜M&iQ‘ŸοώͺŸ†² ΛŒ³ΨθM8„ΊLΞΧΧ‰Χw­Eυ¨*ςrμΨ»ω Σav1…ύ½Ÿβυκ ¨iΞγwάF΍;±mυ"Κ¬!d .αUλP«( Β ]eGo–hl«‹wμΕOσπυ°nk]0–’_νΗγΉ³Ρ~θίP^K…BnΟ©¬ΐhύ™+qψπΔc}/όθεJl ”χb ΣάΉΈ|Wg;ΰ°IaΌ:πώmͺœ%K‡`bψ€ 0&ΐSbυΞε{ρRΕzx ½€υυc(ΕkzŠ~ ”™rΌωB)rθ%Qπ7$Ύxas,E屇|κ;+7Ν†ωV ,Ά,¬--Bfΐΰ# &Kr³3υΕΟΎ™ΐX ϊε΄;αt†ώ\.υό…ΙȜ³ΩΗ’B,!ƒoΘλ^‹a0ΩPXZ‰ Ώ.ΧXJΓβ¬fR|ύθοχΒ`4Α–™‹Ν»‘DαWŽΑ`Ν >o|tΡhΙĚΚ&TΈd:νqθX% ³$ƒΟΫίOr 0 υΤέ„mΛuΚSxη6J‚‘:c.l+l6›ψg΅ΝΗχR ‡zΚΞΘΠQθh«32ΐBεχ¦m*Ά…rmŜYΧKΧgΞΒl‘=·XpƒYbΟ…k‚ŒY3B‰Μ πΒ΅Œ¬\Ρΰ“Κ`²:¨œ½‰2g(ΊdιЁ˜`LΰZ!0ω>{6e‰ωεν>‰ΚΌ|>Xˆ{σσ°§© ŸΜˊ'WBμπu£~S>ξ-ΈOΠΛ\Ώΰ؁ΗvΖgφι–K#€YIBΔ^―w#/?yy›PφI΄y.7Ψ1 Kΐ”Qˆ^z/Όϊs»έ¨*YFςά;κΦAΫΑJͺoΘίT^±π[qΟΓ!λ¬ητi΄·½]yΘ/(Daaς6νC·`ΝqŸΒoŠνGά((|χ>±]‚_˜Qψ䢐G•ΕH§wv'φ‘…ΤŽP<ή%΄fά_ΊS‡4…Wn£‚0ZͺΧQ;—GθπJ—ΓΝιΣSv‚Β5θi«eBm΅|=]k5V i’6|σΑρ²° Q> yτL*Ut‡ΒSωmΚ/•³'φΚ―?~Ί<(Zφ›h‚π`L€ \3RΖ$₯Ψωθχq4’'|”€ΙΉζT³L»_ιzψXE‰½¨}΄\5D³n{)Bƒr\X4Ο$ϊμ|k7jΓ‰<ΫρrΑb”ζ—ΫEwŽ ɍNngγNl ς֊š­ΓΖ9…§ΕW™ΐψπΣπιΛ’•Τ#… ¦σ}žΛΎξΏ TsΩZƒ“gŒ’L‘.zJθΘΣX… ΄§}y1ΚΚ30cΪ |3ˆ‹ύ~2Δ H΅- _4”Nι.Όη««wzκπο―/W5₯/„`zUϊuL½|ω’Nτζά§t”‘ά9 Ό‚3_ci Ώž³%$'Τ¦Δ*έη6*<§h9„–²#ϋύ;ΊΆ:Ά| ԟΫ·Β»Ψ o9β©ΕΏΉξ0έ”£Ώό*’Σ£ƒ"2&ΐ˜ΐ'0&FŸΛU€₯Ή1Q¦υG΄B»ίj2ϊf™¦‹r½'Ι\‹ζJ/₯BΟΪ©χΤ/§ΟPo }σ+=ΡČΈ7Ήύ8υg]―¦#bη L`<x=oΰΑu՚’φΊtΎεή U`Wžy±’ͺn '©ζY#y/žSΥΥ––Oΰ₯ν$Lώ!Œ4=GW_H›ι“υιe­@©4x@νΗ06‘sRέ|¨ύ„9γ6* —4•²€Ρ΄Υš#ΡμΡwρK•ί––Σπ Fuλι.Ώ*I|Β˜`L`$11ϊZήjΐΑo οζ‘έu@oK'Z΄ϋ„MΏή ɌυΩΨnΖtΡ+=QG,¬&cˆ%$Œϊ£’K ρgΩ0Pω„'΅6«Υ—«—ϊͺβ̎ΏXK]ςυ‘νoοβTΧWB'n{€„ΎΗ`˜.ΎpΧbγ:†ŒώνÈφj E§Α'¨ΐmT\!ŠYvtΘΦΩVO—!_·Χαεwδ@Χδλ [iΐ˜`“”@"©‘΄6’Zσ¨EΏ@Ο—’gΊιΦθCb<ΈHV“ ΣLω֐Bση,―Α«7›np(` †["~r#γ;Lΰ"`_ŽlqŒΆMΟ=ˆνŠΞο+';ÐSgͺΨ/zλ )Ё£!/Qλρΐ ΈŒ CψϊύΤ*tIˆοˆΫ¨πάδ‡}ο§³­ξθ:8h„Κ°v?Uϊz]ηaaΒy6€Κ}Λ]§σ–ε7Ω:„Σ‹―1&ΐ˜ΐΤ$πέɞ¬–=4`“œ1₯»ΛTΙ–HίQ^ΈΦƒžΛtψœΥZB’Εw₯‹~ϊΞ΄π‘ξTϋΧβEΣά,Ρ°Tϋˆ_ZŸ1k”ΐΜPΗu‘i~p•νΖ=ΒΚ*œ!ύNό*Έφ’ee‹>ύηΟ…Ο΅·Ζiq…#\›v¨η’rT”- IτΛάF…γΣCζ΅δzΒέOΖ5}mυ7ή«’¦΄¬Πσ’h\jcM₯ι4Ι”U…QyΣσ°C~ί²Šc8TδΑ@jZp½a‘(NMXΆΉ ?ό†"έ,Τ*?ή}uŸΒOθ0V=ήR׌ζŠBZ:?—κy36œύ‚F‚§bξΌy°›φQ[β.Ί’σˆΫ( -–³Ώϊ!Μ&sohΘHL…Λ&¬όυaΈhϋa! OTa‹rƘpυxΠΧV·|Τ_‘ƒΆήΛΒ―š_ΓΩ/‡ž™ŽΘŸ!hΊηG&S γ>֌ βΦ#ΐι—+Γ€‹Vš­h†£ˆΚoš’όΎ*ΏΙΧA?φΛ˜`“™ΐ€οιΰΧ>½ŠΆgh{ό fYΙΰ£ΫΫ<Αόρ4lΑΦϊ“ &+ω |Ύ^q?…κHσuZάxvΟΫΈ@ΖmF{4ΡζΡζ0# Y·ά+βP2a)ϋσ ƒκς˜Π ΄―€ϊΤ•ΏfΠαΰUŸ¨Ώκ *ς0ΛΠr+”?_.Z©“Ίμ‘ξΘ >7:{₯E`”2―ϊˆ¨~{ύ&Ϊο,+`π [Cό[Bu^qŒz ZΙ· ς ΊϊHoƒ‰^πiγlzΙ >Ώ0ΧPΡ–¨δj8α6Š Ρ~viV+¬Va>KΠx2φν³Zl˜;Kj―½μh€―π’«­>J+;οC {Kf Ÿ’L†Κ―" ³ηHϊ|T–iŸI+₯ΧB{ϊΙιRψ€CΏT~©ΌK,Όψ@(Ώ΄@YΠ%]‡`L|ΐ˜`Sœΐw(}=uθDQq6f}ΈΤΫƒΣG[T«ϋ…IώJȟp ΎΊ†DMΰI–ܐζ|Δ¦2WQ1Μ4Βwιs44Fϊ £ @ΔηfΓHuώσwΠ’x_Vψ}θ€­#²m‚—ΠσΕi΄P~b·Q‰α8Z)ΪΫj»«w/˜Ie‘—ΚδθŸεϋ›°ΖaF{= 7œD1=³b•ίDλ0Zzž 0&ΐ&)fτMΎ `™`LΰΪ! }ΒξkέΧNΒ9₯L€ 0&0¦ΔπΞq%Θ‘3&ΐ˜ΠH`ZŠ4Z1ZcHφΖ˜`L ~lτΕώC2&ΐ˜ΠE «σ τχχγl§4_PW`φΜ˜`L N<Ό3NpŒ 0&ΐ˜`L€ 0&0pOίdΘ%Φ‘ 0&ΐ˜`L€ 0&'6ϊβΗΑ˜`L€ 0&ΐ˜`“ΐδߜ}2PŽWG{ φ>WD[K IRRp±υJ«β•Θα˜ΐ8°£bχ6άjξΓU刴•^’•[^^ w₯£χƒ—ρ΄»1Ίψ©\ί&uΪΖ§μD/,|— 0&ΐ˜ΐδ"ΐFίDΞ―΄ωX˜nSξw9Ωφ‰¬1λ6• 8Λπζ kaQ₯яΎΣxν·₯¨Ί…Yέκ@&ν§gO#‰ΪφN₯Λȓ۝·!=έ„9ώlΊΓθ›ΚυmR§m|ΚΞΘ”Ψ+φ’r”έ3.ŸzΫk’VžΔF¬6tP¨Γ‡L€ 0&D<Ό3‰pG-Ί₯[έnTVΈqΌΧ'Šσ};j±,€ ΔE uŒŠ€~ρΨKFΦWžΐήmEŠ»aΕ~Œe ’΄ΤTo¦r}›μi‡²¦'τRšΓ‰%9Ή(XzGBεκ6tΠ£/ϋeL€ 0ψ pO_όμΖ €-R—ΘχΧ?Ψ”―άc=GΑ”Ι„ςβHEͺZ€ε%Ϋ°α§+n2 kΕΣΨΦ(^W“Ž[° oδε±Ί24¨!¦©\ί&sΪΖΉμh(9ρxιΉrU ζ»JkœάDΠaœ’ΞΡ2&ΐ9“ήθ+ή±λσζ’§ύ}τYγ‡Uιχφ’ωΕ*l―kUgͺ³{žy Ωι4HΝο‡Α0„ήŽΏaΟΊ-νa¨ΜΆ’ϋ`·Y$|^τ'^ύΈz$K=riŽΟώκΗ0w¨G?Cή#ΈΙj†˜x/w£ι7Ϋΰœj€|Ζμ­;ZW…£u:±ι\?)Zj‚ˆœwbΫκE€Oš—š‚KψCΥ:Τ*ͺCΠσςΨσOѐf+Œ΄s΅ίοƒοr?>{”n― zƒ«;rέ<f“IςKuν|χΗ8Pύ4”UMdœνΔώCoΒ!Τ{rΎΎNΌΎk-ͺGUι—cΗή Θ_˜²yΙωΡίϋ)^―ή€2ˆGγΈ-΄–έΟ=£±M-ή±?ΝKΓΧΐΊ­‘²Zς«ύx/ιλ£VΕ,Τ'wΆ)Ž)LνΫ‰‡Φ²£λ FύLG›š‘Ήzέt£M%Σv£π|²bΞ¬λ₯λ3gaΆΠξZ,ΈΑLžθLβΉpM1kF¨‚dPxαZFVhπIε 0YTΞήD™3 ‚~’₯C(>bL€ 0ΙL`}ςœϊvΆƒ•Έ· ω›κΡ+ŽC³βž‡CouO”‘πu£~S>ω½OΠ ZΏƒΖ <Ά3N³Ο^†MEYb9πvŸDe^> ,Δ½ωyΨΣΤ†ŽΟΏ –‘dι [np¨ž šΗλέΘΛΟG^ή&ΤΏ}mž Aω€ Δ"p²ύkΙ‹ΨγςέR½ŽΚTύU Γ+]7§ΟU~?…Ϋώ.μκO‘T*vDΣ‘ft†D’ητi΄·½]yΘ/($ΏΘΫ΄έ‚5gHΗ}Š: ζGϋ7 Δ½OμA—ΰf>Ή-δEΗQEe1ιέίί‰}€G /՝γ]BkbΖύ₯;uHSxεΆ$CkΩΡσ  Χp §M•u†?‡„ΛΧƒWZ«±J¨ΤΦn>Ψ!^φv6"ŸΞ…Ώ<*ϋ₯ŠnβPx*ΏBω₯rφΔΎ@ω΅ΰΗO—EΛ~­C0>`L€ 0IM eL΄wmΔΞGΏλ€^α£$MΞ5Χ ϊ›eΪύ*†ϊΊ‚Ry¬Vk Nžύ1Š2MWΰ +υ?,š'œoνFM`x™§q;^.XŒ\ϊ»θNΨя}IΧΓwΐ*JξEν£εͺa’uΫKμ£CQžΦF'·³q'ΆWkEΝΦpcο΄κΒώE‘Ύ‰Θ©Vύ{ˆŸ^(π Έmc>¨mψli¨ ŠS9Oc6ΠBœφεΕ(+ΟΐŒiƒΈςΝ .φϋΙ3 ΥΆ€ό uα}<_X½ΣS‡}άk0₯/{ͺbˆqB½|ωbΫBŸKΞ}ŠAGʝӀΑ+θ:σ5–fΠ0ι9 PBbBu?†ΜΐmnKΒsŠVvδ±Ÿ²O-Ώ£kS΅Δ ₯ΞΘrόήΕyΛO-ώύΟp―Θ€ι¦ύεWJΏztPγC&ΐ˜˜„ΖΔθsΉ °47#&žτ―ώˆVhχ[­0ϊόn„@,ςWΟP€iHGΣxqκ=υ αι3ΤGFŸΑ<Β Ζ4ϊ :Μ2M£ρvž$“1šΣƒ'š˜χF#·§ώ¬λ•wDμ| Θ{IοfЈΖSϋzΧηΒf°`Ωϊ ϊϋ9„‘˜ηϝBΓσ[‘¨κ4Ύ³ Ο<Š ‹<¨8Ι}λ1‚ »]‡Υ›|Ψω/+±θΖy4ΙΝ…ΚΘZ†Šύ‡0=Ρΐ;vώb-|άΧ‡ΆΏ½‹S]_ lΈν‘ϊvc€azΈ–&ά΅a*θ>†Œώ₯ιŒΓ₯OΓ΄θ4ψ„θΉ-ѝ ‘r3Ί‘Ξ6ušΈtWόΡΕ9Ό„$|bkΙ>˜`L`βHδc2r*[Q­yΔ G‡ίΘQŽΈγιΐEκ ΄šΜX°˜fΏ·†š?'`υ ^…8“M—Ύ@Ο—’iΊιΦθCmτθ0,ƒC‹2άσ£;,>ešΠ7…[Ž{n•8{ΟΆ©†7+Z°eƒάWnGΙΆŸγ§+rheΜyX\L―¨ΫΎΩbT>4=χ Ά+:©w¬|œ„>ΐ(Δ ‡ΖΤ™ͺ+φΕ €ή:CJX#5j}ƒ1QοζΧοΧΔΨ”^mΜnKΒ#ŠYvΒ‹ͺΞ6΅£λ<ΰ Ρ,ΓΪηTιKct=†… ηِ*χ-KwΞ[F”ίdλN/ΎΖ˜`“‡ΐw'ͺ£Υ΄=—₯±g9«7*V,Aρ]ι’πΎ3­4ΌTΏkωΨCK‘3f’tw™J€°τϊŽryΣκψu8X(Γ47K΅’‘YόrUΚς ΠHΰΫ@oΉsyφ~™βHKώΪXAB<=aΌΈh~Νε 9κͺώˆσb•5ΰzsΐh›κρΈNΡ₯θ*ۍ{„•U"8CϊψUp&'ΚΚ}ϊϟ k€F­o­‡qZ\)ΚΧ¦έ#꣫€eΛ#hύ2·%αψΔ(;α‚ŒϊšΎ6υοU1FSZVθΩR΄ ΅±¦RkšdΚͺΒ¨<„NŒιyΨ¬.¬ϋΑBρ¦²ό&[‡6|Δ˜`“‘€όu2κSgφxΝKa°δΐέ|˜VΥΌ„Ή 3a;ϊρ§ίΥκ”π~΄ +οΔzšhΛ]‹M?„ηά%LŸ=΄…Ί`{΅°ˆDό:΄΄~‚~šƒdΆd‘ςΔ1όΜλ§!eηρς³Ε΄ηYr©sSξ‰Ψσ 5U ˌ «vΓC)0 κ\gΣlŠΉμhΑ“ύΥa6™{CCFXΔχ_Vώϊ0\΄]J ΩhŸ¨ΒΪ“Μ•W„΅EXϋψSθξνΑ₯«ΣqγM0‹β»ρŽΌ±\}k°„ζσ-«8†CE €¦χί“£ωkΒ²ΝΝhψαη0άΈι’`?ή}uίH―t%V}ΫR׌ζŠBZ:?—κc36œύ‚F§bξ<š*lΪGuή\)lα/r["qΡQvΒƒνU}mjΛG]π9hλ½,όͺω5œύrι™ι΄ιHdΧςQ'…ΙΓΈ5γ‚ΈυpϊεJ±N¨CJ³ΝpQωMS”ί—Cε7ω:¨5β3&ΐ˜˜\&}OίΰUŸHάuPE^ž₯\¦ΑΣ°[λOJ[4˜¬pd >_/ŽΈŸBuspδHkŸ^EΫ3΄‹=~³d;$ƒΟο₯εεiXZΐΕ­C‹ΟξyΘΨ£MΙhο'Ϊ”Ϊ|fΔ+wΰŠ8DMΨκb`ΔGY[ώe Α2CEΚ hπω}ΈΠΥ†ϊΚ'°v»<43†φ$K³Za΅ {τY‚/ΐΒή{ΒΎ}V‹ sg‘%In χϊ}TΆiΓκτ ²h¨œ°™ίΫ‹¦]Ο+Hς όωztΡJδιŽ,Ρΰσχw£³WZΜIΩ ^ ‹¦zθυ›hŽ`VΐΰΆxω%ΆCFΓΉυ ΄κoAεAtυQϋC›§gΖΩτ’/|~a‘’Ξ‡ν·%DGGΩΡσ ˆΖ}ψ=]mυQZϊx—(BΨ#6S0ψeRω ΖCaφiCŸXξiOWͺ+šΗ*Χ‰ ?ρΐ/•_*ο />Κ―r…£€λ ΦˆΟ˜`L`rψ©ϋί“KεDhλDQI6ΔcdπΥ5(&Z<Ι.&ΩF.QΕι£-ͺUCβ“₯C²δ†4η#&,v§ ΩσΣ0s¦ΎήΟΡ@υ'’scΰοωkŒμ/ήξDqn6«>|ώNZ"Ψ{Aœ΄uDΆMΠγzΎ8M½„  nK4fA’½ioSν"ά½`&•…^*“£”οoΒ‡ύνυ(άpΕτl‰U~­C’α²x&ΐ˜#Χ¨Ρ7Ft9&ΐ˜`q>aχ‚΅ξ8₯p0&ΐ˜`ΐ€ήΙ™Θ˜`L`*˜–"Ν™ ͜Š©δ41&ΐ˜ΐX`£o,(sL€ 0&ΐtθκόύύύ8Ϋ)ΝΤœ½3&ΐ˜ΰαA|ΐ˜`L€ 0&ΐ˜˜zΈ§oκε)§ˆ 0&ΐ˜`L€ 0&$ΐF_0&ΐ˜`L€ 0&ΐ¦khsvuζ‰ΛZ;ζΠηƒ8ξ4Άͺ=πΩ( Πςψ%‹až φŸΗι†F„'Lώ6’?!ΆΑσ¨­Sξξ=J’œΛN’ΐ^#bΕΨΈςVόƒή”œ°O»Γ•{;*voΓ­ζ>ΌQUŽH[ &[Βτ΅—`οsE΄UN`οDJϋΕΦ(­ΆΏc²Ου8Ω ωlΒ,Ÿ 0& ‡ΐ5hτ9ρ«ύ•Xζ°ͺ8ύ|K7ο|ξ£[ςύp―q¨ό(OΔ%΄«―ΰπ k!Jς_@ύΊU¨QlΡε*ίK2²€ώ6T–’…h’+.ΝνΒήf7²LΚXι˜6™ξ:}Ώ-ݎ°»@Ω7βπKλ%Ό¨,X7Ÿ³l/^XKzyΫQQ°AΤkX,£:-ήΆWδ@₯ϊζEGΣo±n{]PΆ½hͺΎVΕtλZŒ}[ŠQ+XˆΞ2έ|α¬@Σ E’ŒIq@L* ΦiΚ‹φϊ l¨rMvΪʎμ[Σo’τΥ“ΗΪΛ€¦±§(œe{¨ξε¨|d²ι<œΡ—†E·:Iϋ ΪΣΘ‹’mQ HβIBυM›…ι6(ͺ;ζdΫ“¨}$ΡΪ걦zΑΟ€°ωKψ‹ό Ο…―2&pΧΨπNφΌΉ+hπωϊ/ χBό„Υ`JΗ?ή‘©pꌐac°bΕΟΛ†…ΨΤΣ¦γϊawβ>5˜‘SˆΚcυ( #Δ΅κnΙΰξ™nΒ=a<₯N θeό†‘ο₯Υ―a³lπ‘ΪΫ{^Ÿ Ν»c~H¬«^!|’?!`Κΐϊ] (Ž“ΑWωΖ)ΔΝQ/eΘ%Έμ„G?ŠSίdζqt…ωndNlό‘dπωzΫΡX_ϊƒ±gο[‘ƒˆ•o#ϋHβλΫ€­n7*+ά8ή+6 πuΚ\“ΡFΕΚQ~(ΕρŒ³M₯OΆ‰}P€"κaœϊς3 *UΎΙI‰λŸΐKͺΛ‘c‘ZЎ¦]Τλ$+rαWυΏ@Z˜χoηΪ· v»]2}v§/tβ;YΰŽ%gΚμ5ͺή>9ΠίεƒΐoTΉΓόv©DqυλΩ]¨Ψ\Ž’\ΩP™(ήV„Ζ*uλΞ›‘Έ΅`#u"Τ*%ρpω<Ύ„t#ην:Ž-Ε[‚C:‹+vγ~[_0ςςυήΈ 8X± ΥΤ‘f/Ω‰½₯Ka4dΰ±_£αUκΨ †τπ|hͺά€ν6UΦy‚&-ΥλπΔa;<”—υΝ(Κ4ΑΧuχ ωM+Šž•xʎBu ‡‰ΥWC„#Όθ)“#σM€mΧ|ψKυΈ•ΘaC·`]A^Ψ;cu1±ϊzΠ(Uͺο― °Η*Αxβ©ΗQλ?‚lΕ~¨yθ:γg€.\μ™ 0έ&΄Ρg/*ΗΆ’ϋ`·YΔ!A~Ÿ}η?Η‰Wξ†π3Δ"(ΖwHIϋA…Α'„hΑΦ΅‘ήΐ$KP0 b;‹ΨΫWSZΫkΰΫ½ΉΑαžΈŸn ϋ΄->ό΄Ξ αEΚ‹φΎDVn&¬ίΏ“ΎOΦ&|gΈVό?yԟGΞΧ‰ ƒOΈΤ@ŠΛ&6¨οN»YΈŒήγ/‹Ÿpμ©Ϋ‚·ξ“Œ/Ϋ­wΒώj―pYατπυΓϋw)Ο’eΜpH2/εžu˜xˎBυ˜‡‰Τ7fd<θ)λDLΠ˚Ϋg φ<σ²Σ-τΕΑƒa½Þu[TΓ€‹wμΗϊΌΉθi}–ΕΈƒ†‹ Ÿ“όή^4ΏX…νu‘φIπϋΣ;f“8,β˜g#ςž9ŒΓΏ .>€΅[BޝwbΫκET†Dš)Έ„?T­“†<γλ,ށgΦίƒt³Pσόθλϊ·ΰφΜTœ>P…- =†xšL}#FφΖrμΨ»ω ΣaΏΥωΡίϋ)^'ƒY5κ:lΨpγ­Ηzκ…ž6J»\~Θω©‡o"ΫΤxˎ¬·–ίDκ«%Ύp~΄—Ιp‘ω`›ΐ„5ϊ–WμEeΝ;=μϋΌ˜vƒΦτ,=ό€~£Ο™9⋃ΌQ­=WRLpڝ Υ‚.55==-Α#αe«»γKΜs€Gν ’Ιa_*ϋ °O084¨ι,ΛƒhΦϊΎΐ‘]ο ν₯LzΙ΄£`9™΅Τγ•\ηΒ’›$CξΒ©Ώ¨^GΔλ’σ³ν¨nΏwκ κqsf 2!}qπ₯Wπ™i.8]4JTΓε[λΎ αγ-;αdEΌ–@}#Ζγ†2CΦΊ­Ή-q•γMχΉGΞ]“6ΗRNέΛ½ΤϋHWFζ|˜Ν&8–ŠW|^/ M6‘ K+ΡύΞ*ΤΚ™yΦlX,VΑ† C!€ω‹84ά@FŸaΦ¬€Tι'uΖ\ΨΘΘέ€ο) qΰ†½x'vm^ι£MΌ©7<#Λ2$i6₯Œ΄XGΙ7VΌͺϋ47ωΠήυHlYr^JœΑl†Ω–…΅ξ&X* ! ~Πεβ­ΗΡκEP8Ϊ¨hrG΄Qό ΠύŒεg@°tj>ΠU&5KeL€ LΣθ³—aSΐΰσvŸΔΞGΛƒFDɎ=XvύWΊρ9/ΜΏ£―iίhnΚ(Δ /I/vΚPβΛΰTϊZώ«θž»K,ΪΎDF•;μmΖ8“Vq ρ†Ξ΄l<π“Η‘#ΩVθxGέ;ωΓΌ[D½έŸΰ¨§+ϋΦ#ΧbΔm%ΐΡPO‚2‰<–Ρ‹g:’‹^©Gsω>φv38«œ©Ÿ―0‡pΩf7–€Ι?Α‘²ς Ώρ– ’^§―B¨C=eR—ΰρτ¬£-©xr₯dπωΊQ³GQCuφ’4χ΄f# 9ήIFίΙμ“{†…aΔmŸCi5Y ΄πΠk»ΦΒFσ{οy˜ϊΧγ7kŸ&PdΰΒ~κ₯w˜ΌhάZqx§0μ8Oό.%ϋG˜9}v<ωψ]’ΑηοkΗϋΰq)˜’ (]°ϊβδž}υ)SQY,|ώώNΤU­E­ΨΤ9±³α9,Ν0γώdτmΡ%4ήz΅^π3@•ό PαΠyΒϝΐΨ;`: ŒΡηΪH†Ϋχqό>NIδ\s ͺiΞ‡λα;‹‘τ’Vaπ ΑκΆ—"σ%uΦt)Vm ΫJτ’vh磘%š Τ θ=…«žV…€ΕHϊ.ϋT§ΠΧησ}Κ/―Τq7ν3”hΓ{₯9RojpRjΨ‰FΉB¨τe›ρή0λ₯λx=ž—Έ”ε#χ&i½ΜΟί{OΌψΞι^δ.΅Αv{œD-4ΰL“œί”iZ—­»^UJ̚χ=ιܘŠ9Šε?uσ%)ΒB=}”ur!7PΎ}ω•:ίT‘G8‰»μDιr’τ$?ζue2¦,=τ΄ί,KR[B=Υσ€ΧωΦnΡΰ’ΰi܎— £4׊9‹hΘ1υυ)?SψΊ"|‚ηVͺσg,Ξ E„₯›’5‚ˆα.’η*ά..{λΗ»/JŸΆnΛoqί±JZρS!Iίΐœ;9tΔψeΓ~υϊ\:₯^Ύ|š_+8οΉO1θ(CΉSΨϋε ΊΞ|-}†9 @Ÿ²t= βΗλ…ξ6J£\?βxΖ·D΅©q—!σtΈDι«#J΅WeRΟ˜˜ δχα€κκr`inμ―Οι_ύQ4ϊf™$ΝΫy28œj΄ \ ΌŽgΑACώ$Λnfπ­ ma0xUσzήΐƒλ" uζΥJ™Fγ―κjρΑc/Pουφν.Αъό UnPjΰΐߏ d½˜ΜVΊδ|8σŸΤ³ pφw#]΄‘ϊρΩ©q!’ΟΪΟdτΑ|  4·ΚΖ"\2‡υV²ί|y‘iXš*ϊiĜμτςz_ŠˆρΘ⍷μθ‹1qϊκ‹7δ[W™ υ‘žφ‘ΙjK*Φ-/N½§(§ΟΠΘ2ϊ ζ94δX½s‚@QHι^¨pΤX’ HΦy±Gιυ(NuoAfΐhξθα+|tw—6+Ψ&›³V Tε―TΜ0Ά`;Όω8ήz΅^π3 ,p~„Εγβ΅ϋ ˆ†o3& cbτ΅ΌΥ€ƒί:h#τ(ξ:ZΤ£₯Sτ0ύϊ@Pd›)Š π·ZO~/νMG³n`’;’Zέ(ΜsΣ[Ρ64»WΐDcG˜+)Q΅VD&mΑώΧڐ»žzϋr‹Pό•`ΐDpšε―>‹uΥB? o:΄KΣMXΆ© Ε ‘9F«ξv"2£Θύ°νLΘΉΏ˜Τ“†¦EΠh”—―‡΄Mœ'l*Ε‘},ε0Νc›e'a^4‡ z—Νq|Ijj‚φ6‹»μDAξV’τ '[Σ5eR“<žτ΄-IjKha‘ιb‘€F€†«άL†iδ[κΙ?‘cδ(υπ,e<ξψΡ~δχψkF<;¦α ZΤΆyLγǚλ?ψ³Fυp­>’Bα›L€ $ŒΐΨΌ²΄6B΄Y4ͺέσ₯τFcΊιV,§0κ>-B†{kνΕeΊf’·tTa |˜c6<ώσΦZκν[-τφΩpύsτ "ešΌ C+Ά<Ϊ€ΓοΡζλΒΆ;KhŽ‘0Ψ΅wQQ’˜C‹Ή~ϋέ#†¦%,Ρ’ΞGΡΥϋ,΄z¨ΝωC2O"'m‘σˆ[ώ1›Ά”}·f ΖΑ«#ί½)=|₯uΘΒΥ{iŒΚNΒτU¦Oš<©Ό’cϋς2”­\(κ5[kΒ™ξΪβΥ>x’Σ–x:p‘:ν¬&3,¦…›ZCƒ‘ηΟ ¬’Beς‚Ά%Μ—ά@Σ7±an0P}˜­Z††©G!•ΣΕWRχId}Υ’‡τ°Ε¨D_ƒ4–Ah«‡πυϋ5¨MΘ€ŽQ=ΦΣF©©D>γg@ˆΎ kSΗ¨μ$Lί.y½ς 3&pψξDLwΛΗœGŽφ’+έ]¦RQXz}Gy˜ΗUΎΒΤαΝ6ϊdLΞΆ”ζnΖœUθK”kΕΧ>… +σ%ήΥβ•“«§mι#Ψh§Ε&ŠiΙvqhZ?^vV―Z…Uβίj<ψβ‡’ ¦wY•#υδNOΥυ8OΆ7ώM iΚΒ/χV¨€ΈJv z‡0 Gpu8Ω) ‹KΏηqqnŽxyyVd™ΕΓ νοE0“Λ7|ŽUΩ“λΏπϊ*D$8eΙi4OtIn.rιo‰+Oφ(ί›HΏΪΫ’τ\–,δœΥi›Ω• ψtρ€οLk„2)ϋMτo™=’Pw{“sνb3`ΐ]Ό;¨oρŽ'αΫ‚Dλ’E^}‡?Υώ΅xΕ47Kό°§ΊMi;έ+δ…M»Gάw•”£’Lψ¨ΧU=NnZˆŸΙ{Ζ†oSΗͺμθ-Σς¨™(α’τ ˆ#ίbL`‚?ΜN,υŽV‘aεXOσhlΉkq’ι‡πœ»„ι³η"ƒφμCχl―VoJ%΅₯/βžζΝΘ€₯Υ—w£ιΑ.|3” [ΊUΪ_Θ2Β2eαΔ‰UΓΔΣ2λήvTT}ΦXτΤξΒΙΥ/ΡJž‘`Í«¨r 7¨“ ‰κjώ€G–Poύ[ύσ2LKqHzτŸAK¨ƒB UχΊ7ζ|?3ώρ!2–ι«Π¨Ί©Χ6u VΪGΜOŸΛΞύ ²λ&c:JOΌ‰ϋΞ^ΖΌΜ ϊΊ/Έ^ΌRC=˜iqρ•Ϊ#{GδΨ₯_Wω^ΈΧdΡRϊΒ~lR(c Ώ…ΣΆϊ­( lOΩQΗω,ϊcΣ‘ΗzΚδυzl™/L Νm‰ϋΌ —°‚%ξζΓθψόζ.€mOΔ κǟ~W;κ„Εlpi“ύΥa6™{CCΖΐΎ~&¬όυaΈh a©OϋοΥΌrw”.Αš χ±&\π`•6΅ž²€Dκ+Λ~[Z?AνΜ’EmΠ1όΜλ§!œηρς³Ε΄‘‡φlF3΅A&J[ε‰fl8ϋυό§bξΌyβΘαΰΡίO=ŽZ/ψ ΜV~¨ih>›ŒΟΝ‰cL€ L²§O #,Ύ§©]μρ3˜mpd9$ƒV—joσΔ °k *qΌKκρ3Ϋ20ψ„M•›jv(©Έ—Y‘_Š^h₯Ðe^QΞτ ζΐΙΠθIΪ†@yWπ/ΈZl­? ΪξŽΖZ©Ν |Ύ^q?…jΕ²Α«B Φεδa‹αk<{lJ9.‡QύΜ…4+}Ξ±ͺ»τK¨9‚3ΡΎ}6}<‘aγsgIΓM=uεΨΊοΈT‡Œ΄‡)|ήξv΄u‰)Žςi ώΔθ«R₯ōgχΌM†*Ι¦eu…=ζ0CφD«¦TD—°όΑ„tj»™΄* UχϋϊΠΖΟ~DyΖ&£Mεg€\9ω— 0ΙJΰ;€ψOlε(*ΞΖL£—z{pϊ¨rSτψ5·»–γξ΄²%ΝΉΤϋο"‹_6‡8Q\’M/­±ςMπ·˜όΡΛ3½\Χ5θz?ΦΌΉμ8±ϋMaήͺ@ή‹¦ΚlŸψΩ&–Imm ΅9Tvg Ι›,eιΔΜKτΡΗc§./‰{yv¬  –ͺžIθœΛ‹‘m£–δ%τ|qšz γύθ§N<Χc5ΔŸρ3 ρLY"`L ~“ΐθ‹?qrœε8όΏD+šFωΚ/ЧήAο§ψ_«J£I…&“'θ΅ΒŒωζ kč̽GP°ΆjςδΡTΤ^Œ=•χ£ϋ/x«Ά‘ζΪQ^ύΦ,I§Tφ‘ώ‰Q“ϋh*Qγ΄h%p­΄gZyhρΗΜ΄Pb?L€ Œ˜S6ΖI/ŽvΌ €¦Βl4‡—EUΗ8cΔ\Θ¨ώ§κΝk…™55°α}š~ΓίΈη4;²iΨcN&-€΄^½pRοΙΧΨΰ·Œ™"_+νY"³‹™%’&ΛbL ΑΈ§/Α@§Ž8;\Λ3΅sΏ€£#V™:$΄§„™igΕ>GO`9ΆU?Š{fšŒ˜Fr½ηρΑ‘½ΨΗ"'£Χ‡%L-ܞιΟOf¦Ÿ‡`L`¬°Ρ7V€9&ΐ˜`L€ 0&ΐ˜ΐ8˜°«wŽ Ž’ 0&ΐ˜`L€ 0&0ε°Ρ7ε²”Δ˜`L€ 0&ΐ˜ΰ…\B,ψˆ 0X^^Ί+η?xO»(yr‹rW`γΚ[ρB2RRpώΓ†|μ¨Ψ½ ·šϋπFU9Ζi%Ξ„ιk/ΑήηŠh+Œ!))ν[ ΄ͺargθΎxΗ<όύh{΅U £Ι¦οψ•‰Ρ–Œ_ϊ9f&ΐlτq9`L@νζχ‹εΩΫqλͺq»σ6d€›`σgS6ϊnΞ²=xamŽ a†!Ÿ4,ΊΥLΪ£”ΦjΖΑθK¨Ύiσ±0έƒ"υs²νг±;΄•£μώ›qωΤΨΞ‹ήΑgdή‚tͺ³~»5xm"θΡ·’Ύ E™fx;©}rOδd%A7mm Χ‹$ g‘L``£oe«Β¦ib2‡€=ύCίNd:Nlό‘dπωzΫρ֟?Δ•iΣpεγ–Θ’E„~ŒΑλΫ€­ξΣΈώ  ό_±”6\―²‘ζpbIN&όπ}Š'ΧΩΙRe5λλΪ†B2ψ?ώλνW)Ύ†5΄%\/‘ςΐI½& °ΡwMf;'š θ%Π‚Β<ΨνRόΗγAE}3}97ΑΧuχW©ξ©€ ͺN―ε“±›Λ‡ΏTo€;Š­'1jΑΊ‚ΌqΕ•X}=hi”Ί+ΏΏώ)€ŒΎρr=WŠQϋŒ— 2ήΙVS΅κ[±~LDάα]ΤԍC—ωΈηΆΆΆ„λΕΈg+ΐ’J€Ύ€βeαL`jŒ=ΩΙ_Ωεήε=ُψ;ύfTο w8€‘}~o/š_¬ΒφΊαs†–cΗή Θ_˜“hωΡίϋ)^'©&¦€ŠqΔ‰0li[Ι}°Ϋ,βπBΏΟ‹ΎσŸγΔ«·rξ’³{žy ΩιzCτΓ`BoΗί°gέUH-ή±λσζ’§ύ}τYSΪ¬’ά0iόώτŽΩ$Ξ‹πζ #ςž9ŒΓΏ CΪ[οιX»₯.(έΉq'Ά­^ψ†Δk)Έ„?T­Cνp\tΧYΌΟ¬ΏιfΑ€ς£―λC|tή‚Ϋ3Sqϊ@ΆŒ`Œ&βA2υiΨ .4§pυc˜Kœ`z}“c%ώxl „½\‰­JfΛƒ(@Ο².C=8ψς)ΐMV3 TζΌ—»Ρτ›mp d@#W vώδ>,ΊyΜ&ŒT‡„r~Ύϋc¨~Κb.¨κ,ήFe燑²Σω!ΞIVΎž”¨ύκΠAO•ΎΞ 8D“Ύς›‘£€υδ±|S£qζ,CΓ/„Ϊρό£εΫΔQ|υՏcΦΠόfu©4H^‡šΪYžžz‘΅LŽH4_`L`< °Ρ7žτ9n&p 0eδb ₯Σηυ[Ά “ …₯•θ~gjeΎ‡φGz σΗΫίƒΩ ³- kέM°T’JiuιΰΆΌb/*‹²!ȐμσbΪ fXΣ³Pτπ!£ΟUŽ7έk@ζ9?|dthΣs›c)*5ΐro1δ%G22ηΓl6Α±€Pτ-mζY³a±X28ŸΝ|ƒEμy0Ρg˜5K”!—:c.lδ?δnΐχRCgς‘½x'vm^ι!ƒ…X/ː|€Ω”2δP±“₯oμ˜>’QfΞΒl«Κ?q—œ‰ςF*tΒ₯Y3 u”…ζΪΣl˜OΊPμX[(›b1ΐdΙ@nv&Mƒ₯Κ‘ƒƒΛυ–ζH™οχφ£Ÿ>2eΤ–™‹Ν»ΑΈξQȝ\ͺ²γχ’ίk„…όIe_[Βω£ƒž:4}˟.€hβχ½]2Yy½y¬5ίdωΡ~/7XΜTώnCžh σQΗ~χνΘ€πΝΐίeY:tΠΤ–θ­:Κ€¬22&01|wb¨ΑZ0&0u ψΠv°χ S=zΕΉ%Vάσ°+˜δŠΚbΡΰσχwb_E qoή&ο"K†^Ωξ/έτ«λΐ^†MƒΟΫ}•yω(|dηηΡΒ4mθψό« ΈŠ'WJ/½ΎnΤoΚ'}οΕdp ΐ˜ΗvύΚ½œτ63m΅O―B^^ςσ+ΠAv/ΰEγΦ|:Ο―?Έ‘:(W8h©^'^ΟΛ“ύ#̜>;ž|ό.©w±―ξΌ{QXx/φοRɊη$9ϊκΣ$)ε‘΅«(ςˆϋζƒ’BήΞF1€ΌΘG©’KYOyΠ—:ςM£JΕj iγυnQ―<*συoŸD›η‚xG‡žΣ§Ρήφ6vQύΙ/(€ςP€ΌMϋΠν#Q†tά¬oΚ²Σ†Κός›}'»Ε8GσŸvνuhϊ:Λρ€CκΥύΰ΅ϊ½|ΊσXcΎibθ9ŠŽ B)0αW -€ασN§=<7λ&ρΨ{φTh€4΅%zλE²Ϊκ`ͺω€ 0dΰžΎd‘eΉL€ ˆ|έAiu ›΅'ΟώXœ \/’/Ηω47PpήsŸbΠQ†r'-3x]gΎΖ φ6gJθ~h€θ=ζ‡ο€ΤίΥ‹ZB₯μ,¬Ϋ^ͺηΒ’y’oνFMΰ«»§q;^.XŒ\+ζ,Ίvκλ“;'…Θc¦m˜†€Νa£œFτο\…Ϋ­Bo•οΎΈ!Έ6jέ–ίβΎc•΄βg‘:nEŒ?‚ ½ώÊIbyγSτηΙ—†ύΖW† ΡtΪΩΈ[‚+ˆΆ’fk πιδΰi¬ΒZ$ΧΎΌeε˜1mWΎΔΕ~?}P1 ΥΆ€τ‘A„ͺ²S¬΅ε{qΟ(ˎfdbΦ‘Qθ[φ/zω>ΐώγ£G—ΗσM‘Άθ‡|διΓ«7fέ*ζΝΆͺ½X‘aDορ]X½₯·έ"υ½~ωΙGaEιΡAK݌Y/t–Ι°JσE&ΐƍ}γ†ž#fΧ€Ψ½Llθ ΰRΪ,q¨£pfΞZy΄[0€p`˜›π1<μΔ•OΥΙ,ΣtράΫy284Sε!x’†TΡPςβΤ{κHNŸ‘ή@2ϊ ζ9 Aw*£/fΪ‚ς|:-8¬σbRφQœκή‚Μ€­Ό3iŽ“X΄3ˆ―sΫ͘.z₯αV4|Jνδ„"ίRHώΩ“εΨǐψς 9 ρ–ΝΘ©ΠΕμ^ΡΒΑŽΏXKΙυυ‘νoοβTΧWBg9n{€„ΎYΠάΡιZ˜S ³]ΦfΔω†¦_:(εΕͺCqκ»ρη+€αΪύm¨ΡΛG Œ*΅δ›2‘α=οό.”ζΒj±‘lclζ ;ΚKξΒαάϋ†}‡ KŒα5‹uUK™Œ%ƒο3&0Φb5·c­ΗΗ˜ΐ΅F``fΖ 3[†πυϋ5¨ χQ;N&=_JΦ‘ι¦[ι;:‚CΩFˆσtΰ"uHZMf,XL«*΄†ϊζΟ Ό•^…4ΣjDθ€]θλFΔ0˜fΔlΥ:04d6Χ/Y_΅FƒC:άvI,j-θ,\ό‚§‰Pτp°S/‘8ŽΩ‡¦ηΔvEΪ±ςqJlM‰“oΨ\Q²ζK=c²]Ώqι 'ϊR/ίκihdϋλ΅azω(ή‰Ηž·αΉ°Vλ<¬X=‹ΦυνΓΫGΞΑ΅"χ=r‡8Βϋε'z8„…ͺ΅nЁ#Υ|›”9@IDAT =e2¬|‘ 0ρ$πέρŒœγfL€  υ0N‹«»αΪ΄[4Ξ”T\%ε¨(L6ύεc Ž"gΜDιξ2•a‡εEk=θΉ,-­‘³z#BKΜ” ψtΡOί™Φπ/*©‰<ι vP¨†αQΔ¬]΄@ ΈλŸwυ-ήρ$±D*’QV}‡I8Υώ΅xΕ47kD~'³<՘&½›²‚μ‚χΔƒ PτΤ‹™‘Ύρλ½w²έΈG^WN`λŸqF\Θ„ό'ΆΙWα* Žζ{‚±j8ˆCߍ›οτς΅γEy‚ξˆ¨&@Σ`ρΟ ™Άsφsι?‡}UΔ—ΤYhuWΑ}y*ό|>ρ¦ζ4ΦΝXυBO™Τ¬{dL`¬ΘΖ*>އ 0&0Œ€‡φ“kFsE!LΦ\TžhΖ†³_Π(ΛT̝7φΆ£^Šξ#p»<ΪιΡ*4¬ΌλiNž-w-N4ύžs—0}φ\dО}‚άνΥ΄ϊ½|ν;π.\Β–Έ›Σʞ—0wa&,b'I?ώτ»Ϊh1iΊ³Α₯…φW?„Ωdξ Ρ2ϊβKΈ +}.ΪB"… ΊOϋοΥΌrw”.˜Ή5α‚Χ@ΓΔFσΦ>2 ‰ΤW)½₯υτ―qΐό³χ>ΐQ–ηή·έΘβΖ•³Έα,™΅‘ξφ]m’±n‰Β '5Q‘ΎαX4ΏŠε€“Χΰp2§%ΚπΒ”©†Ξ9^Μ9LγpˆbO€:¦/Eڌ-b%Η¦$­Œ‰Ν/‚ζ‡KV6ΝΧσ<ϋ?›dŸ$ςηϋ0Ω}ώ\χ}_χηώΓsνu±dKyΗ?ω2€χ^x²Dφ#La}*Ρς‡.ψ‹²]_Ά°kΖy―Κ>}ν/Tχ6Lq}ηqΘχ6ά‹"₯ƒƒΌŒŸιKe>ίΚΚγ8\ά‰τLΈ”ύ&‡­ψω+g+όMŽU8~$g/αthϋhOφ†.’T‘Σ«οF|GΪ»rœyεΉQΌdγ(γ€ΚMM:ιWOUϋ'%@™Vι‰ρ§ž„]tQζσ½?Ÿ/Ytτ%!e“i)λ«CJπ›H eθιKZFL³œ@p„^ΰ`Œ^RmΚϊ’qΟCCϋ†";OɞdΫQPuέύΖ`‚έα‚ΛaW Ύ€2G©­3aΙάTΆ Ψ{¬CυψΜ6Έ²]šΑ'ϋ“uDΕΫΩ°[œΤΆh0YE.hπωϋp΄ϊ1ΤDΝ)Τ•·(%‡Tg’ζQŒΊ9•=³2e5?«Υ›₯!§Iφν³ΩlκܟE ε­OŽΞϊ lέχ:ϊ•θd³qΕΰσυt MέζB™πΗdκ£LK5žάϋͺͺ’ΌX[Κ~rFσΥΈ*$”Βϊ &Ρ΄{Ά‘ί/ιMΒΫ ‹ΩŠ[EFO}©τχΐEuH³²εΗΐhσ3“ζΠ‰Š§ [Vκ” ΑξΚV Ύ€·]}ΪBJΡνPYΚο«]ͺΊFk–΄51ψ€υ©α•Q―α]α’Ξ’ςΓ‰τ΄!=ϊ–ʏ&ͺΙηλΐΎθF› 'ΊΛ8ΩrKΦH·Τy}κC?Ϊ›_UϚί9«‰Λ|Ύ·£ϊυf²:θθK΄Δδ3‰v‘ΚΎ:¬OH€RBΰ+λ—)‰™‘’ ΐ8ΈeΙω›ώ ΠϋQ»lZ<~ƒ/6y7ŠKr°ΐθΗ…Ύ^΄7΅Θkj’CδJENy$_}CΤ©DβΣΰžΣνΖ‚ 2ό΄Σ)ξσΘ•©YgUβ‘1^z§κcͺΊϊ0fAιQ’εΰ).Α’Jϋω ρC\žέE(Ν±I=Ώ€ί54ŽΠβΒ$q©K‡$β ‹Œ₯―x·Ž1:Nž“   Μ\Κ\ςͺ™«>5' 9J ϋJdζdΐ4 |E₯ߍ/Ό}8ρβΏβΡš£P˜m   DθιKD…χH€H€H€H€H€H`–ψκ,Ι³A$@$@$@$@$@$€ΎPx‹H€H€H€H€H€f 1χޝ-e>&‡€»€ο»£D—–†sο4ΰρjesλψΓ‰Κ=Ϋp£ΉΏΪY"h†_;eϋƒ;![xΟυα½φ&Ω.`†gI‡ϊE5ψΑνvœ;υΒυ_GdsR”ύΓxŠύ―^j¬gz‰%ΟΎ/1‘™Φ6'M_g)ž}ͺXΆ8ΐΘ{α§­QΆ³!1(ή½¬hτ]Vό3+qwω^<³.7Fι,CŽ\'2ϊ2qÍ.8dO4g¦ˆΜ!ƒ Π,Ό(άƒΗŠσ φ^ΤQίωΤUl˜ρΎ³ΈεwŸŸώΆΧ&ή£οfχMΘ²›` ŒT£Ππ4φ  Œz‹ύ/Lی…8sκ™ώΌΕζt2’с}ίp3­mNͺΎ™Χβz»-fιŒηpHΌ3-Πθ›Ε0”pcγΤ >_^ων;Έ8o.ώi”ΝoJΎψλLΘuLŠ@Qε~T»‚²~œ?ο…Ρd†Ωd„Ικœ~¦Λ₯Ήώζ㍾Α!΅r#0ΔڝTΕI$Δώ!•ξ±Uΐ$Σ6‡œ!υl\y–Ω‰έHFφ}ρŒgZۜd}[°΅ΊW~Tό#–ΫŒό1ΎŠL£k}Σ¨0¦»*iΚπ㡚 ¨ΕΦΣςΡ‚G ς§{–¨Ÿ.¬-Τ >oΧ1<Ήn»lΞ’Ψόπmψx@W„ΣRΈχβ%U/₯$2348-σ0ύ•b ·ŒΨΊΪ¦ xζΤ3ύyΣ[ƒΖ–Χ₯ϋΎ0Π™Φ6'WίN΄4jCΉΎΉώ1@Œ>Σ—ΐμΨ²A^8χώΰ;βbΆΒ(†I ΰ‡s/ή{ϋ(Ϋ^‘ο)Εοέ…ΎΎX<&MΦοΓΉž?α`ΝγhΎΑ:‹w৏εΓxα ž^ϋ8bμΏΌΏζAd>Η/w jCo½(Žg7`Ωυv˜Tγ(oί»ψ₯H΅1DΤIφLr±­τ.8mΥ…ϋΟ}€7^όwT‡”V"s—bο"ΗnQ ΐ`Bί™ίcο#[=H­dΗ~¬Ο_„ήŽ·ΡoΉ·Ί¬ZΌΎ>4?·ΫλΓ™‚"ϋύ[―‘θ °X΅τ½ύηαW~=5p‘ύ Φm‰0voά…mknΫPߝ† ψΏ;A]$ΚpΆέ%;πΔϊ;a7+Dύέοΰη,ΈΩ‘Žφƒ;±%Jp ž\Fμo†ΛδΗ«U+°5ΊR%j&΅·`»^$υF3,jτ‰'Σ§ζΜ Uτ/Tak°NVμ?†\fψΊOᏗ솴α-mHC“’ώ!€χP/Ž6Ύ‡όοΰ:«iΎΟ{pμgΫP-!—μxίΟΟΔ'§β‘­‘φZϊ“ύx(οtώ)*괎Jol_’pHΆΠ£ƒo ϋ’Ήήκ©;j]O²N"Ιώ‘ψ’l›zκ™ͺo ώίTγMζcyKφωd’Wetκ0mϊ>Q~·Ν€ΛXSω.#\7ΊQ°:t;ξ;EΖ₯ΒΛΔΎšψφLΊ[‚ΓUλ‘›₯|bhy½2T†šY¬Θ-ΌGL±Θαράƒε2lΛj6!ΝοY F™—γΘΓζέ‡QκΤd;?ϊδ½O^όμίš’ΰΝ`4žϋο‚KŒσΥΐ2dœqψx ³5ƒΟ':ψŌ2Ϋ²±ϊΆE+Q'©³’Κgρ|εp©Ÿδ―_ς—f‚Υžβϋο‰Δα©ΐΛΟ”!W >ƒόη8€]FΨ\ΛQuΌ%Id9…Ωlki!–ŠΑ7δσ)Β`²‘°¬ £²l^x ,ΒbΡ >%σΥυΪ*χ.\3~Υ"ΨDήf³©VΫ΅ψΫτυΒY² »7 >Ώ”Ε,YyX™ηΈmΘ΄Y‡βΛLΰJ©$Š FάΈ¦QΥ$‘^3ͺ½-Xˆk€]+υόjΥΰS²dR―•{i/ ―^‘MRg—ŠΑ7ZB ϋi(ΈVΡ[ιkʊα|Κ2&KςrjΩd9–¨yΈξkΆ˜²²}Mι ¬ΘX(e<ττzd•θ“ντΔ›ΚΎ„ύ/δ‹δλŽZ…’¬“ΙφGΫLΆž!Eo›Ψ_zσ¦Cί±JθΥ!μrχ}l›I—°*˜ͺw9]Z€ςB]ŠΜ]αoτy*ξ†])Ώ@7vη/Caa!V,ΛGεξC8v΄]QeΫΫގŽΆW±»2Λ EΆω›φ‘Η/B;ξΊί£I·ΦΰD·z7έ}T N¬Yvz}ώνWΒΛ—TV•ΐ.ž€€· ϋ$ξE‡όMx½Ϋ+²fά]Ά+*§Ξrl*ΞVψzN’JΙί½ZώφkΓ™>GVωθ}žxΨzp`Σ2¬(X‡ΕΰT4€1 }‘1ωΚPΝΆCU"[€e› O±ό`ŝ!rUχψjδη ―e•8£:=|hάΊL—©χοέP£ -5¨χσσCςH0§Ο‰GΊ]σ.φw :…”Ε μ}½;O¦#&tφ)νBjIn1ž£Gΐž]Ϋ°±Ψ=LαΥή€Ν―–zž/υzσ‘3j^|ςk₯RΟ΅ΊΎ e ]φc·‘”υŠ–2UmΆšΖxύ@΅š‡|ιΌzmηΥ'‘6‘Uo#t_»ŠΏ7vή"αΗ–UbO@”^cΕ›ΒΎ„ύ―Z!BeœLέQ$Y'υτzΫf²υ,Uoͺ’ωΠΩοθΡ7™δU:Dβ«m)λϋΨ6#ŐδYjήε’L<(–²ϊ O9-6%ΉχlΔ΅ίΔڈΏΔIŠ&6ג法ΙΛΚ°₯ή‹ͺY#q^›6γT]£ΊPdKCMμ°L‘θlά‰ ²Π€³¨εYΈjή .~6ˆO½1Ϊ H·-)mˆSCσi¬ZŸ“+₯rWε)ΑMVΕΥαΓ[/©w$²Xζ0Ι=Ήϋα»t•£Β=OήZ.’ϋύO°o?Ξ}x Oo…ˆDO9žX‹,Kb«"έͺΨYχ+t=”'ˆ++<¨―iAιšΫdΐ—ηˆΝ6”εΔjχδΆ9{Κ²#Ι…Ο °‰Q%o MσΥ(|]'Ε\νΘDΊš%NΏRL“o_ΌbτΜPzEγ hσ•B1‡~Ρ ]§μ;}ž6JP<ŸφF§„Σ=[ΰΡΡOx>]΄`λ:©cξ"”znΕΝ.Y±σ.X₯a˜+ργ=qογuš²—Ή½ ϋΥ'ΗlC:ϊ‡‰ιλΕιίΐ™€|Ž™·¨tτΘFσtΜxSΨ—°³xΖ£NκθΖHhœgΨ›ŸΎγ„3f°1Ϋf ϋ>ΆΝ1‹gϊ €°>LΏΜN_¦Δθky₯‡ώκ‚ψΏF>VKZ’—Υ"«ΗšM~μϊ_χα†―-–y+&˜dŽJVφJTξ?ŒωΛΦ &'vύh|ΚߏΆίŸΐιnϊn©ΨEζGkΨ„ΧNo‚C &§ηn f+oόn]oό:Ζxτ γθβ­~ Λ§ll€yOnΥ™·ωWͺ¨ΪσrDxN3ζ«’2gΨ‚ƒ‘"Nπ[Mθш§θΑ0S”£MΦ&Τ+Α*Ÿ}ΕΩ2·μΖ;dmx₯/{K]ζ£bNΊ έ?DΕ:ŽSιFω™>τ3‹ˆ“Ξ›ΔͺGVcΕ›ΒΎ„ύ―VPγͺ;jΠΡκ€ήώAO₯IRv¦ύΏ9^}“Δ‘[l¬ΆŽpςϋ>ΆΝ0άx2ωυaBΈl*'έl'€ak#j’iΤ©C6¨UkΆlωœ(έφC|U¬’Ή·ΘB, βίr!G΅Ωό8φΤ½Ψυ£ψŽϋ’ˆ‚VTFλΏ…’ΌU0ΩnDeySέ|}ψMuTΰAρW)K> α“·kQυ(**νTYžϊ/ڍιΊΥiFŒΊσ >§UφK[r‹Μ­jΐΎ6#ψ&8x ΪμžaZ₯μF¨r‰=w η!qMΔΉ*22|E6Όζ1σΌψV―jτ…ίώ§C{›(ΖΙX’\O0Q}G ¦ϋΰ’ΡqyJΧ~-%dκά?θI3u} ϋ_­RRwΖΡ?ΔԊΈzσ,ξbΔz6Mߌo£αμL₯Ύ:ψ†υ‹?IaίΗΆ;΅Χ#Ά‘Έd‡‚Ξ…Dυ'…υ!N ^ŽBΰ«£<›dž]ΉΜ勝¨ίωkœSgp₯yφhAΔ‹wEΤ”5Oωά©¬Β’θM'Ψ―DdEρΊε²f‘ΜΫ“‘–!υΪΥPŒπlΪ³Z¨ςάSZ!c‘*ͺχ£εO2{P£e{Κc‚+Kο¨ε»½ŸkΣμsΧlΣ)t”’δv»zΡ~kxUθijΏ{Γʁ˜!œ’ͺ0λP-Pn‡=a}Kv< ΧE‘Z]{rάΨu 5•₯q+wzπhα- ο9mρ€ΨήΒ ζiΕ™2³Γu3όLοI ϋ=ͺ|ζΣφŒΙ“lMγΙΊ\?²Œ?θΙX ϋφΏZA€€ξŒ§PΤΡέ6G«gΣμΝ1σ6ϊŽ©ƒŽΖ™ΒΎmSG9LXt΄6ωιŽOΤ¦EΩΓή…•χΎT½+ΗjΑ«Ρ„ ψΡd¦υ3O~1ΦgaέC‘§―.ΝΗΧΛ‚Yuάυΰw‘ β€ΒιKe>ίΚΚγ8\ά‰τLΈ”=νF<:ρλg±t•#(ΐσbœt§μ'׌ζΚB˜¬y¨’ 7œύHFY¦cΡbnͺlΪΧsΥα₏vΩ΄ χέ†υ2ΔΤ–·oϋ6:?Ό€ωΧ,B–lα Δ»½FV¦‘Α¦ϋž€gσr,Ή¨n–Ό~p‹—νT^όζηΑyV£₯7Ζ³1+‹LΤέ_σ\#ζήАQςDhΒ}η<²…DštξΏWϋ‹“Έ΅l) Β¬ϊψ1œχ`ΥŒ‘_>VdJΫr8Κ°tυpώά9 ψӐa·χ¦ΒCŸgb{ ‚mωCόΕΩΆ%[κf3Ξ«[»ν/TcοΘφŠΎβΘW›Έœχ¨3$_-θ–<ΉΤ<ύ€ω%œύΛμ»ϊCVD*Εg:ϊ‡δ5ιDΚϊφΏj1θ;ΙΤΙqυJ=N’mκ¨gSρf²uyμΌ₯ώω±uH67Š\ ϋ>ΆM=1Lv2ίε’#oiύ3ΌΈ`ΆdΛ»πqό“/ ӝΞα…'Kd―ζΦ‡h%x>*οιθϋ^e§pΩPٞεBΆ aRΆΩR6I>Άϋι¨P:QρτtΛJΚ>cvWΆjπΌ=θκΣ4 \«iηkΑ­ δ‘ο]ΌT/CEγY%³ κΊϋe §¬hhwΈΰ’*Εΰ (σΫ„‰c„ke™έ½Η:TŸΑlƒ+Ϋ₯|Ÿl?‰·³a Ά8©mΡ`²Š\ΠΰσχαhυcuhΒΗΰ%e@ͺ0ŠΛoΘ5?„/Β²Ρ'Cͺ3Qσ(FίŸΛ~?™V+¬Ve>Kψ…RΩ3QΩ·Ο*ϋο-Z(ortΦW`λΎΧ‘:R₯μƒΟΧӁ6u›‹pŒ<™VΊΠϊv—Φήd·r«Νެ¬ Απ’νθ^Ω—24yfΆ7wΣvμ=Ϊ†~΅_‘J₯N[džp¨ξ*2ΊΪP ϋ \T‡—+Ϋ― Œ6ΏMςτBpKe?N‡bπEυ}Ρm^OήτΘ*ϋ­%Ϋ?θ‰7•} ϋ_©μ:κŽΪ~’ͺ“γλ]Ζj›zκΩTόΏ©2Iζ#‰ΌιΡ7™$‡Ι$‘ƒžΆ‰φ}l›ΓJ/ι“ω.“hK5žάϋͺόˆ/ο‰ςŽ`–56Œ²©υU!‘Φ‡PόΐWδρ—£‹ΜŒ§N·9ΧfbΑ#ό} ‘)ΚΚ‰Λ‚§ΈKΉ "Χ8²\\°€.έ²DŽM‰ϋz?jG‹όΊ19‡Ε%9X`τγ‚x4Ϋ%‰cΉR‘Sƒ―Ύ!τ>9Z€"§Ϋdψi§S άη‘kΞͺΔ#Ρ–j*fœγ&ΰ–φvm¨½]θ“v4r=›™νmάhF ˜ΊώaΤdÝžbά±dτO£—Y8ΐ ;I]_Βώ7Uu'•ύCςΥw¦ύΏ9ΣτU|ζ»QςυQ“L]¦W“Ι—O]}˜|]g[ŒŠΡΗ?2˜Ϊ:ΰ,ωrού_nΫXό₯,=#i;Ώ¬¨9όε›oΎ)/Yξdd»d`H’°/Ρίw“™~f|G ³©¨l›¬g)¬g³ΖΣ7Ϋ,ρYŸΟ6ΌQ½*<):Ώ}'χaMΕΔη FΗΙs YJ€}‰ώ‚%3ύΜ‚¦‚ΫζTPž³i(kTΝΩά3㗏@χ•ΘΜΙ€iώψŠςcώ7ΎπφαΔ‹ŠG|θςιΕ”I€fφ%ϊΛ‹Μτ3c˜ l›SAyΞ¦AOߜ-zfœH€H€H€H€H`.˜ρ«wΞ…BbI€H€H€H€H€H`Όhτ—Γ‘     ΐ 0ζ3 γRQ]~Ϊ•!Gβά‡νhljW< D$0ΉΨ6'—'c#   98§ΟŸμ―ΒJ—5¦τΎΩυ$ͺ›΄έο<ϋQύ€+F&ϊΒΧՈ‚š‹8ςΜ:¨1Ξγΐ#«Q΅yž§βY‰#πΆ‘²° ʎ€IΕ»Z‘Δ³ΝΥΘ6E§*η²){wϋψ²νHΈ3šs#Ž<Ώ^ΣΙwU “s—?‹gΦ‰^ΎTlPυŠKEί₯»\7‡p£κλ‘}ϋ~"ϋφ)λ ίMΒ7d›{*q¬Ί²₯ί8ω†5ΰΙ΄!ΐΆΙΆ©τ}Œ{2ξKƒ YΉ…¨:~Ε "ρ¬ΎC3ψ”g¦λpg‘τyA½ “δ蝇±τoP >ε°bωw"™)Ήo©fπ)&“―Λ@€mSΞΆyͺ“$  9@`’ήϊg©š δZ4#βΜ±έxd{CPq~rΰGΘόλπ|ψΊŽ’`έN8ΞΨ‡βsWͺcθ%wʝ΅1ήΎΠ³/B'ΑοQ㍓ν>Z…’βΧszPΉΉΕy6ΐθ@ΙΆb4ξlŒ‘φάv]Τ΅7lSΌηέ€8 £RΥΓa,}‡’β΅ίZ'Ρ)^Πoί, B‡$>Ύ‘hψ}ω°m¦ˆ=ΫfŠΐ2Z  ˜Y¦₯ΡW²c?Φη/BoΗΫθ·ά‚[e(¦bͺ|}h~n'ΆΧ‡Ζψι]‚{nΥ oΗ‘(ƒO‰£[Χ)ƒ/š%Ψ©ycΥΫW[V;¦$|ΌC!c΄³Տίϋ΄]?ό΄ξ,£€νCΗ©Ώ ;Ολ7o©nβC8“ΘQD$YΙκλ‡Χ—³ε›(ρ;ލλe\§Ώ<+L!g`D9KžoL°i|‘«]xJ±λ{wα†―/†Ωd‚Qό>œλωΦ<ކ`r–μΐOΏŸtˆymΊf©>ηΟΌ³iNδ9”Λ~΄z e5Ρƒ‰‹°γΩ Xv½=Θ>oί»ψeΝԎԌFεΚΆ9*žI}ΘΆ9©8   ΜΣrxg–γZ˜ΝΈ–b©|C>_p¦ …eUΨηtKŠ΅; ͺqΰΗ©_Υ$DJ3ΑνtΓνŽόy<ρόEG@Ο™UGΝΛύl„σ€β …φc `(θV ¨ίξς|¨f­#ήύϊ•»&' ŠbΔRx‘Cςϊϊπ‡VΕθ6!· ₯wή¨ώπξ‰Σb’Θνf εNίP ιύ­§]x<χ`yύfό^x½>Œ&ΨyΨΌϋ0Jƒυ73Λ›Ε,΅¦€βW5ΐκZͺ|>ŸB׈άϋJ,s0―BaΆfπωΌ^)ΜΆl¬«>†mγ©kl›SPρΨ6§2“   iK m:j6²j’½ ²XΘK»ΧΑ&sηξΌ_|WΥϊ\ ξ[–ηίΰϋ,ω\›² ρΜσ…Γ¨C._ έ6ΰΒΫ/’gΡf,•—genίXήΎQγU†rFΖ™2΄Σ wfξωήC²°‰φπΜοb|;κ_ϟΡΤY‡ϋϊΧ#ΟbΔM₯@S}TŒ©:ΥΗ!y}Σπ—ζί‘oΉ φe€οͺ³»qΌεΦ―Jœ=|Η0ύξκi½ννθ°Ώίώ|+BΥΔ-ΫΏ¬‡έhΗ]†κ•64¨zrx;°ΉpξihΖͺ,όέ2¬Ή€ŽWΓaΜ@ŽxXEΌ²ͺDΒ‹ννBύΞu¨SγvcWΓSXžeΖέe»°³i‹g’Ÿl›l›JU cO²ήPŒH€H€H yScτy6bΧΪoβŠΰϋeBυD“›kQΣ¨xt΄ΓίσZdXYk-Nžύ{;”₯Sτ/‹’Ύp~0shΏ—γπ΅X¨ωeTδiμXύxμPHY-³s՟Τ H“—ήsύΡή7Ή7ο=TlΓ›eΉP½}}Γ!œ$―Ύr3ή\Gχλπx]pŒžϊ¨yΧiΛΚ|πζ›κί΅χ!oΉ Ά›σαF=’₯cc›Ό«δ9θΡW\΄]u8ΩU"εoUM>ο™Χؙ™±˜ψΠΑ7qγΌ«§Ά2eν’³q'6ΘtOgQ Κ+²pΥΌA\όlŸzb΄n[" 5©ϊ½jύπ\ά¦=ο(ΟpIq&K}Wˊ—o™ΪώDώΓw1θ*G…{žŽΡύώ'ͺΡgΘXω‰Aj[ςΫ&Ϋf’>5ωDI   ±L‰Ρηρ`y^ΦXΊΐώρ―cŒΎΐ€/&LΔΣs;©‹‹A‹ΣΈ.ρZhο»WaΙ΅§y˜9ιλόξ}d„α ξόpΪiσεM·§|FΌkβνΫSЦ?ŽlεŽo8ΦΰIΐ‹σύ~˜Μ2M^ΐ•yVοW¬7ΠΉρΨΥα«^ΌwΊW~ϊ^ΗY@Œ>˜Ώ{$Ο­‘wό`Δ“•,½ϊΞ[TΏφž}ΉͺΏ–y“q ιDηFίθ€<ΧSΧ[‘Βvα)GΓk‘%žήDGΊyaμν41ήδΈθU~ΰP\ΙΚ+-θθυ!Ϋ%§Κ‘Ή0άVΜΩ«P–­έŽω4dΐn_1OFΌ`ΫdΫ±rπ   ΐ€˜£―ε•ϊ«K6BεΈθkιŠ˜DνZOΎŸμMg’ωG¦£°΅…ωΥ²%ή64W―’9MΓW^¬N#^i/Ιϋ_jCήzρφε£δγOG”N>^ΰΜ‹Oβ‘ΕO'ΓθοΒr» +7νDIC B돾#τfnFqυσ‘9Xͺ2ξξy‡I¬Φğ$Η!9}{#κˆMΊ—πͺ{>2э—”¬Έ#‡%]nΓBNθ†žΊή2ͺvαΔ­ƒO²βοGΫοOΰtχNJC7}·yV σΧλzc¬ΟSwž…CGoΙ€ΡψXζα"ZtώΈΐΆΙΆ9Jeγ#   I 0‰fΥ(Ϊ΄6B΅YFIω£Φ>|.‰˜δίMς’Υe ό5αZ γΡ©΅NΌ}koŸ wߝ1ž(†…I›z oΕ–΅ 8ς¦lΎnΘΒƒ»JΡ°EHWŒΫSΌ3ςŽ/{ŠSZΑΙώƒ°Θς–φ›ονd»ƒ¨#Ρ(Q'r::‡dυ=§BΆ–Εz8γΖuι,*Gω}Χ«Μ†Όο’vkm,'=±κͺ띩iΞ"δ¨UƏcOέ‹νQΘvάχδFu 'ΜUz°ζ$|80¨.œc’•>?y»uQρ&”Oφ&Ϋ&Ϋf²u…r$@$@$@γ"πΥq…š‘κρr›Έ&δ°-—9†•1hΑΓͺψ&λhΕξ—N©‘Β‹OVάJbγ–G²Γ/Nφ©2–œάφ5νeώ|Gk‚:ΠΦ£-ˆ“αp©aBΛτ+W‰ς¦JιψΠΕΑƒ“Φ7+Έ'a ΈΥϊ:Mο-_ΫpΔώs] λ@Xΰ2ž$ί.:QρτtΛJŠWΞξΚV Ύ€·]}Z]΅­ΑˆΫσ1RcγΖ7nGAΥ!t+cˆ &Ψ₯NΉvΥΰ (σΫbλ ΕΆ©ΐbΫΤQe(J$@$@$4―ˆδ—IKΟ"A§§w,±IŽόΈΠχ›β]d³(³ΜΚ(άΨσ²2SραXUAΜΈQΈGžβ,Y`„ΒhP6Ϊ›ΔΓ-ΫAδΨ”Έ/ χ£vρ2Χΰ‹UŠm3–―H€H€H€H`’ζ¬Ρ7Qp³>Ό»Gώεʊ¦qžžaW†ΊΎ‹^]6κΤaΑ¦Λ ΙηΛΟ<ΕζσuΙ†δλvNΝ¨ $&0WΪfβάσ.   ΐ8Μ©9}γΰ3wƒ€§Γl4jsΗ’`ΌjΨ\Θ±‚L›ηΦΠz•ύ8φ3|Σ¦\¨ΘΘζJΫ™Ÿ   θ$@OŸN`sGά O‘#9cξ‹σhΆ‚Μά!Ŝ’ΐΤ`ۜZήLH€H€f>}3Ώ ™     ‘ΐ΄\½sDmω€H€H€H€H€H€H@}ΊpQ˜H€H€H€H€H€f}3«Ό¨-      θ"@£O. “ΐ%ΰ.Η‘7ίΔ›ΚίGPξŒεΰ©xV{vl/<±fά•³Έ5{χ`GyьΣύr)Lf—‹<Σ%  δΠθKŽ₯H`nHΏ ¦ƒ«~XΊ ~w™7?Ή_γBO§ΛL—KsσP°όΦι€Φ΄Φ…Μ¦uρP9  >V ± ()KξͺaήΎΠγ/B'3τ»χβ%Us%Ι4€YR˜(D$@$@—7gΏlθ™0 ΜdΥΫW[V;r&<₯Ψυ½»pΓΧΓl2ΑhΓΡοΓΉž?α`ΝγhhΥ‚:Kvΰ§ίΟG:†ΣΥ0σgήΖΩ4'ςVς£νΠS(«iŠJ«;žέ€eΧΫa’x“ΤΫχ.~Y³΅-Qbɞ:K±ΏζA,RL[£Y erέ‡#GώN=7ˆNx‘ [λƒJ+wέ₯ΨϋΔƒΘ±[$ω †!τω=φ>²њͺθψp 'Φί »Bτιο~8gΑ͎t΄ά‰-Ρ:„τκΕΡΖχέ\g5Γ ϊψ>οΑ±ŸmCucg0u=Μ’ ₯­‡™%  ˜<ττMKΖDs€@=gz”Χ|ŒζνS@x<χ`yV³ i~/Ό^ FlŽς—-ΓζCgΤ ΎF,“kε/?Κ’\ˆ•ή'Ή—Γίƒ›–a…θύ°œŠ0fαΑ]γ1ϋœxτ‘Ϋň”Όυw :…0[½―w+±&>b†έϊπϊj5ωΒγΐ«'ΡΦy^ §‡Y²:™%Ξο’   Lοœ ΚLƒf΄yο‘β`ή,ΛΥΌ}¨ΕΙωλlά‰ β˜+*AyEš7ˆ‹Ÿ βSo@Œ6mK$Td,¦―·ΚΰIΟ%mφ`Ο;Κ³\”/1ςώ*_Š—o™C[RΖχα»t•£Β=Όˆξχ?Ας,ژ±₯"Z―ȏγˆςηΪƒk:t½²΅ΑŸΫρBΑ-(Λ³"γ†ΫΰDB+Gˆ(φΆ{5nΆͺ&N<·‚N=κ·όξΟ¦Cν9ΚΡΥΈ [j›‚­¨έTL3=²QΊŒΝ,J˜§$@$@$@SN€Fί”#g‚$0³ €Ν“Wόϊ:œzπδΙΠΗU{JΡτΗ ·.:kžr4<±Y–ΔΦJΊya΄4&Ζ›½ŠkΟ,WΚ_ :z}ΘvΙ©rd. ―"jΞ^…²lνvΜ§!6Ε+±'cOό"ιj–|8ύfl"νο ˆΡg0g@X©ΛθKŸ§zω”9ŒŸφFkΩ„Σ=[ΰ»ΡO"η^œώmΘΰ‹άUΟτ0Γtΰ§?/I€H€H€&L€Fί„2˜k4clKmΘ[/ήΎΌb”|όi'vύh|rΫߏΆίŸΐιnϊn©ΨEζkF^\@ό—NλΕpύ γθβ-fΛ<\DK¬-6zTzŸ:͘―8δ”™Γψ u© Œΰ±ΧX’Ÿ‹BcΊΫ’`ήd1 ΩθδyN$@$@$0­ „ήP¦΅’TŽH`ϊh­oίΕΫgΓέwgΔ*θ,BŽj·ωqμ©{±=Κ ΅γΎ‡DV΅šbΓ―1J·40(~0e‰•!|ςv-κ’βMΩDn)γJgπ©L;΄šΜXr‹h £Ρk3‚–Χΰ%h³ι„ρΦ Ί@Ž2–υš'¨ '΅‡wI1τˆτ0Σ#›(Α‘˜%’ε=   )#πΥ)K‰ ‘ Μ2­Ψύ)5OY-2ζXρΏ]‘8ƒ‡§|ξTVaοΡzν}ʜ?#<›φ (.Oi*ΛγοΖ u9O3:M™Ω;ΎbΒτ’χsmήaQ2₯(ΉέJφΏίͺΞOŒ 6Φ…δ­C΅ Έύφ„γ-Ωρ(\@=ΜτΘFηgLfΡΒ<'  ˜j£ό€>Υͺ0= iK@Xqfͺjgέnœ\σ<–ͺKYjΪ«6žgϊϋF¬¬<ŽΓŝHΟ„KΩΣnBG§μS׌ζΚB˜¬y¨z£Ξ~$£,Σ±hρbX”MϋzŽ’:Ό ‰ώΔZώΠ±CΆλΛFυρfœW·šΪ_¨ ξ‘Χ‰}Oΐ³y9 –\T7K^?Έ€EΧΛΆ *$/~σσ:ύ Λ ΐΪ_œΔ­eKaΌU?†σ>ΩΎΒ2Š—/ͺ\1E=ΜτΘF›YD–g$@$@$@SO€žΎ©gΞI`ζϋSΏtρ‹(ύΕP9x28,QnΛφ ΪΣNT<}έ²R§β•³»²Uƒ/ΰνAWŸΆ%C@]–S¦ΕΙPHεΔ Ε€ΞS%‚²JfAΥ!tχΛ@Oƒ v‡ .‡]5ψΚόΑ6]Λ§DΗ¬7mΗή£mθχ‹ξ²― Υj•}ϊ¬X΄02i³a Ά8©mΡ`²Β•4ψό}8ZύjΖ9§°³Ύ[χ½Ž~›Y5ψ|=hS·£*.ͺΓ]•Ε_F›¨‡™ِJI0 ‰ς›H€H€H`κ |E’όrκ“eŠ$@s…€§ΈKαΏπΗi Λ-ΫAδΨ”Έ/ χ£v΄΄NΠΰ!‘o»Q\šƒŠ€|υ “7ΙΠιvcΑ&ΪιΔήcΟ#W4=s¨ŒΧ’ fB3=²#3β   ΛM€Fίε.¦O$@!Ξμ­Ί=―5β•ΊF™θDEΝSx`©2W°Ύ΅SmΧ†tγ7   ΐŒ%@£oΖ'˜u<ΫπFυͺ„σ'ϋNξڊρΜœu”˜!   ”eͺt†‘8  @*t_‰Μœ ˜ζ_―(#οϋΏρ…·'^όW<ϊγC©H‘q’   Μττ́BfI€H€H€H€H€ζ.ή9w˞9'    ˜hτ́BfI€H€H€H€H€ζ.}s·μ™s     9@€Fί(df‘H€H€H€H€H`ξ Ρ7w˞9'    ˜hτ́BfI€H€H€H€H€ζ.}s·μ™s     9@€Fί(df‘H€H€H€H€H`ξ Ρ7w˞9'    ˜hτ́BfI€H€H€H€H€ζ.}s·μ™s     9@€Fί(df‘H€H€H€H€H`ξ Ρ7w˞9'    ˜hτ́BfI€H€H€H€H€ζ.}s·μ™s     9@€Fί(df‘H€H€H€H€H`ξ Ρ7w˞9'    ˜hτ́BfI€H€H€H€H€ζ.}s·μ™s     9@€Fί(df‘H€H€H€H€H`ξ Ρ7w˞9'    ˜hτ́BfI€H€H€H€H€ζ.}s·μ™s     9@ΐ y¬JœO'ŠKVcyώΝψ_³Α8Τ…Ώ|–X2™»E5xϊŸ6ΐσυΏβ•ί½›LΚL’{±½Ό.C7ZΪ2 12      ™D -‘²Ε•{πXqΜ1«ΰ;߁ΊŠ hθŒyΤΕΝξ›`·›ΘωΖ€ΒPhβ²ίPΉœΦ‰GΖH€H€H€H€H€faΓ;‹*χ£2lπωqώόyx}~5c&«ΞΜρεqp(  ύu|0ΤΈ„ΈϋΈπ1     Μxqž>ΦΊΤLy»ŽαΙuΫΡΜ’³h#6?|>˜`ž‡'ƒλ!@ΪzhQ–H€H€H€H€f8£ΠnψqκωˆΑ§d»³©Λ_τQ²γY|??Ÿœ:ˆGΆΦ‡•ώd?Κ»‡ŠŠΊ–π}εΔxϋΏ —έ’ήχχwα—»Χ‘¦)FLχ…³ΈΫJο‚Σf2Q1ΰχ‘άxγΕGuCΘt•ξRμ}βAδ(ι0†ΠwζχΨϋΘ„Tp–μΐOΏŸt ¦«a6ηΟΌ³iNδ9”a’~΄z e’΄Y5SžRμϊή]Έαλ‹a6™`e]Ουό kG΄ͺ%;φc}ώ"τvΌ~Λ-ΈΥeΥςζλCσs;±½>*_JΦJΆα‰υί†]Qτw½ƒΣ 1βχώΰ;ΈήnΥtψαά‹χήώΚΆGΚ2½qͺΦά Ρ0ΠωJ*bλBHŽί$@$@$@$@$@Σ‹@άπΞ+‘Z0βΖ5•pŽ‘k–c ,f “…^’ΫΧ…ΩlEΖB‰/ξ0XͺΑησφ‹ι$F ΕͺŽ‘'¨γ²¨ςY<_ω\ͺΑ€·ί‹‘4¬φlίO$&O^~¦ ΉbπΔ(ς‹Q'y΅Ή–£κxJ‚’™YΨ,f˜-˜ŠŒVΧRΥΰσ©C]Θ½(–'zd•θ=ž{°<Χ«Ω„4Ώ^―£ 6G6ο>Œ(θY…£₯…X*ߐΟ'Z‹6& Λͺ°1JΦY² »7― Ύ€Oβ,gn–II6ξ(ΑαͺυςL1ψ„— “ΕŠάΒ{P'­\¦/\«<·Z-°e,L Α[$@$@$@$@$@Σ‘@œΡΧ„Ξ>mώž5·Ͽь#‡`ΟmΨXμ¦hΎ˜6[/ς8t?r'ϊ,€Ž£Υ((Ό+ή‹n593 έ-”όΉ³›Š³Uy_ΟITε/Cα½…X±,{΅αΜ‡γͺ|τ>¨ώElZ†+πpυ1ˆ}$Ά_ά4ϋCOo6‹ΜΡnŸzιο>Š‚‚F—’³!9Š‘ͺGVΔ{ΫΫΡΡφ*vWζcYA! ΏizΤ8νΈλώˆυα¨x«Dί,Ϋt}*p+ξ Λ:ρθC·k^ΐώ6T-+x—aίΙUοψOΕέ°+7έΨ­π*ΤxUξ>„cG›Ρ€Χ$@$@$@$@$@3–@ZΌζ;Kώ¦?ΒJe£Aρ–‰WJώς–―ΒΪοΎ*σόΆ†ηωΕ‡MκϊόΫxzgpυΞΞzόΫ/W’ϊLφλUS“g#v­ύ&Ϊ] γ­?lEMc'<χί m]Κ>Τ­­ΡTΒΥo/Cd ’7,ΦΌ^]―μAmpddgγvΌPp ΚςΔ3yΓmβέl'ιλνPσκΉ€™΅=ο(CUpI™('#(£—€IVΆ³q'6HφE%(―ΘΒUσqρ³A|κ ΐ.c=ΣmK$ςΨ!±ώžΧΤ‘€ͺb­΅8yφοQμPςτ€ΊWγf«:¨'ž+ 3¨«xw―‚Cνuτ^TΝ\Ήs5nΪXŒSuθ”«–†šΈ”#ϊ>A_5Κ¨Q œ›ΐή‘(yF$@$@$@$@$0†}ŠΑ±uξ"”znΕΝ.Y±σ.XΕΖ0;VβΗ{6βήΗΗ?ŸΛχι‡ͺΚ[K˟αSŒ>Fω…άτx °ƒ9 ͺθ‘iσΤ―‹^Ε g–?ΕΘjAG―Ω.υQδ#YYO9žX‹,Kœ%Œ)έ<|θd`@σ4†‹xCζi£reζη½!)ε» §{Άΐ‘ˆ‘ϋu§Π·>6ƒ+ΧWΚί‘ ·=χαi4<½bK;Zλ·`MΔ‚φœ7H€H€H€H€H€¦'F_PΡΦ&Τ+ΑΛΚg_FqΆ–ο\κM ™ϊ²¦R#…iy₯‡ώκΒ¨RW}-Ϊ ΔωW*Ν3¨$ζ4cΎ*ͺΈͺβSaHΙ‰QΈ^ŒΒdŽΡeΨυ£ubπILώ~΄ύώNwŒΑ‹ΐMί-»ΣΓό9©7’’Ν™SΠωf ͺκ±f“»ώΧ}Έαk‹e^¦ &™ƒ™•½•ϋcώ²΅cΠ‘ΨωM$@$@$@$@$0έ ŒeN„υρ­^Υθ ­ο©<8Σ}p‰W.n†tΝΊ ‡>1¦/ˆΎ„σ–%P]΄ΑŠ­¨‰]”2F>ώ’χ/šgΊξFmxhΌ@θΊσ >‡™ΥdΖ’[d~bk$‘k35©ΑK8/gΑ«PHΉNΣθ²Ξ"δ¨Ά£ǞΊΫ›ΒI`Η}ΙEΠ€άΦyζr*~Sd_«x(­ Ψ²!4”Υ‰m?ΔχWεΒdXŒ[JdkC¬»ΟY\‰ή'CO‡πEΟoQ±36AάΌE$@$@$@$@$0m|5V7vh@Meiάʝe;‚cKάpB=¬κ_-Ϋ3t¨?ƒΩ—¬²’|’VG[d˜bgΓl=pRΫ’ΑdΉ ΑηοΓΡκΗP\ίe@†y*G nΨj$?šΗP‘Ρ#«žO@·¬Τ©,iwe«_ ŠY@]T‰YvƒΈ€, #zDέS‡4–}dy™šG°χΥ.ε1ŒΦ,ΈƒOζ φ©i)#pΓΛΣ` οC­ŒfΨ³\²(|b©dΣχc»Ÿ{>_°(ΥΔψA$@$@$@$@$0­ |E΄ϋ2‘†n·Χ^›‰ Œπ_θCCc”±ΐι)ΖKŒ)ζt£$/F£ό-»,,2Ύ7ŠKr°@β½ ¬φ¦–°W26>‘+9ε¦|υ #η-6άδ]yŠK°Deϋ°]MtB©ΈeΥΥ›δλ~Χ mΕ0R|N)γœPχ‰Β‹     ΐμ"0’Ρ7»²Ιܐ     ΐά$7ΌsnB`I€H€H€H€H€H`Ά Ρ7[K–ω"     !@£Υ€H€H€H€H€H€f1}³Έp™5     ˆΫ§oκ€8‹6bσΓ…p-^({ΙωΡϊάΖ–ϊϋΓMJLip–ξΒωΎi~YΑυσ^œhψwΤ4²^Ν‚’eH€H€H€H€ΖIΰ2}₯¨©ZkXi2m‘«’Šόΰv;ΝzW+«Oα,Ε³OΛV ΑζπiλA”νlž€Ωα‘gύ’{q7―BΫ‹5ΨΩ UJΉmrλ›μrΣA3sa&,& f‹TVαbϋjΤMΪΆ :”‘(     L—ΕθσT¬ |ύxύΠA4ιtEνw³ϋ&dΩM°rΡ$}™Χβz»lZ>#ΗuuͺG6*Ψ\9Νr|v)£€3b¬+ε¦ά˘μrΣ΅₯¦ •r`Ι7 πΰύΛa1XqηύΤU·θˆ…’$@$@$@$@$0{\£/Œ― ~VS?lυΑ‘€*ϊkXtRNZ°΅ΊW~Tό#–ΫŒ1 =²“’ά̊$TFΡEΊ7"Σ)Ιb'Zš”Ώ.ά|ΧνXjQLό+§$e&B$@$@$@$@Σ‘ΐe]ΘΕχΙ‡Γ ΎHCƒ1—Ώc ±M-ψΛ…±βΦ#;qΝfZ £›τrN|ΨλO@†!    YEΰςzϊζsώΧQ³%άκ†d|}h~n'Ά[π₯;žέ€eΧΫaRΗnΰν{Ώ¬Ω€Ϊ©Υη.Εή'DŽέ0†ΠwζχΨϋΘ4žΛQŸΊKvΰ‰υwΒn6Š\ύέοΰη,ΈΩ‘Žφƒ;cΏΡ£ƒYwΙ6ΡαΫΊήΑ‡iΡƒdc³`ΌΖύ‡_†Ka!‡ΏΏ Ώά½5!E•8ΌΉιώχρ³5eqx=ΨsψGp-Β©}?ΒΦ†ΠdΌq”q°vα‹XyE$@$@$@$@sˆΐeρτ]ω7σ“BlΚΚΓR1ψ†|>1wƒΙ†Β²*lŒž†η܈ΓΗ«P˜­|>―WΦ5ΐlΛΖΊκcΨV”TRςTΰεgʐ+FŽA4ς+ Εas-GΥρ”Œ3vgΙ.μή\4Άόπz‡`&+σ°Xl1‹ί@:d5Vi:|’`qδ!7KKα0XͺΑησφKY ‹TC₯' «i3,Ά\W„njϜΧ"Οn…YŒάsο Ύ –qϊ‚…#hΚΫ$@$@$@$@$0ϋ LΉΡητ”βΉΥ‘½tq Β~΄ͺŠ‚,Ϋt}κT?maŽPΐΚͺΨΕ πva_e> ±"^ολfά]Ά+$š²οΚGοƒκΣςχΰΐ¦e’ο <,§’ŒYxpΧxΜ>'}θvuΡ™@ͺσW °pφΎή0ztH^6Z‡6T-+–aίɞ„:DnΠq΄ZΚβ^¬xx/ΊΛOΚ’πΡmšHg=~ΫΦ―ž»ώn ’mψ‡ oTοϋΊ^CMp§…ρ–ρ b{Λ±8―=Ρ©hχωI$@$@$@$@sΐ”}ϋαΝ7ίΔσΥepΙβώžS¨{ΊvTΖώžΧPΨZ‹“gCs΄‚ sˆh™Cσ8ω>|ƒrTTT ’όtΏ‰·!c JGMe’=Έa±¦CΧ+{P4T:·γ…SηΥΘ3nΈ-Ζ°I*EχjάlU†PpβΉ α!υ[ώ]ͺ‹tΘΖθP¦ZWρl’τ96žή\uU Όϋευ‘Ι~=BŽΧڟŸ€ZšΦoααΠMwς ^ςάϊ‹j-Β ”qν†Γ© fΦW?―ΦΏζ•QŠς”H€H€H€H€f?΄©Κβg½’'},ΆΓ,ΆŒqρuΈ!OΌ/Α!|  „Œ<νahuΘ°hζBhζ–ψ‘²W‘,;ό$rbΘ€MA˜²Ή}™HWμ1aNΏ›HϋϋyV1:2ΰ‰‘sͺ„;η·–πγΣήθgM8έ³Ž ±«=Ρ£ƒΩ°C}Ξ£ŽD:Dϋ>] §₯εΟπ=ΰ‚)5»e'ήκ»+eΥό΅ε@S-Jτˆ?PŽώwp0΄SΗΚΨYς-82B5Δ‹žž Έπa_DQž‘    ΐ 0eF_ύΦ ¨WΊ±ηΘn±…d˜ζ}χ AN"ΨIk§ 'όOΌ%#γ—†™‡‹h‰΅Ε₯4ώ{N3ζ«kšΘΨӁψhBŽ3Œ<Ϊυ°ΈFΦ£ƒYΡAΫ<# ¦ s5€Ε0<τ@ύŽ/…˜‡α‹_nΗΚυΉb°―@1NβΫn›ϊ¬λ΅_!θ0 Λ*šθ-γΥw/ƒE ςΐωSΨΊϊρΤΩύQZς”H€H€H€H€¦U2…z΅βWoEή*GΠ ˜@ƒκB!& α“·kQΧ”|\ƒCAC,‰νF•ν<ƒOΕ!i5™±δ7Π1WΝHΧΌm gD?gQ9Κο»J yίEνΦΪ8Oΰ`ΧΔ¬C"Γ3eτ˜CzdΓ‰ψ»c’ΩΧͺ>Ή°Dτ‰Q<ΊΡ‡σ–%šG֐³c^kέK8σP.\F;J<‹’­@~UU(γΙΪσΦ―hπEΟI€H€H€H€ζ)›ΣMυ‹δ θpΓΞ[ ]]έΕΟ¦=αωb!9Oi*ΛCΖBw΅οΣŸ¨'¦EΩΓΒΕJ£Λφ’χsΝ–»f#"kQ–’δv»Uϋ­Γœϋ0'PΖ‘h†ώΚ-B,ψM$@$@$@$0χ\O_²ρšΕ‘‹quΚ>uΝh,„Ιš‡ͺ7š±αμG2Κ2‹/Ο‘Œ»μ9ŠκΪ(ΟQ0–Φ?Γ+σΜΜ–l wδ ΘΠΠsxαΙΤEœuͺτ貝Ψwπ<›—Γ`ΙEuσœωΰ]/Ϋ*¨Γ>½ψΝΟλ†εn@Όα#h‡―Υ“NΤώβ$n-[ ƒδ­ϊψ1œχ`Uέa±’ΚlΑδuΠ#ۊŸΏrΉΚ|<Η*?’ƒ³Œp:΄}㡈\›°rs3Ύύ _»^Ά{P@Θ‚4/ξ‹ˆΟφΗC+ΧΑͺ^ϋpb«ρ—ρβ!Λ4nlκ0-xƒH€H€H€H€f/Λβι α4XnΐΆ’"8ΞΠ-υ{π’_ύ\Œ½’΅ «dTBwΏ„1˜`wΈΰ―‘bπόύhkλŒ‰#|ΡR'χΎ*†”xι FΩΞ£ωj\ˆ:CΆ³a Ά8©mΡ`²Β•4ψό}8ZύjΜ)ΌελNΐ+Ξ¦=κ¬―ΐΦ}―£_q$ΝͺΑηλι@›ΊE8Έz’G=²-5`ο«]jFk–°ƒOΈφy5οζΠ`Δ‹6x)h½Κ~~Ύ€ YΩΩAƒOΩzγΗΨήh=JχNΦͺzεήω?’!+½e¬Τ'l(C†juγβEΥe•(OI€H€H€H€H`ξψŠdυΛ)Ο,ΓδωυAοŽ–zWc₯l¦žθ?yνάE%Θ‘Υ ύ. χ£v΄΄Ž`π%₯NI7ŠKs Ξhƒ―ΎaΈ‡Q‹P³yωδ©›ϋωp¬ͺΫG jΰt»±ΰ‚ νtbο±η‘+SκΞͺΔ#Γ,ΚduP"Φ!λ.BiŽ,΄βΏ€ί54ΖΝ? *ύεt£$/F£ό-#E ή،,±ΟΊ«€Œb¬2φTμG΅x&#G?<|/jGL?"Ι3    ˜.Ρ'$Eρθš;π΅k }ώώλ…'±=‘'h6R—ύθ^~ζuCw_ΧQ¬Ϋ™8—Ξμ­Ί=―5β•ΊF™θDEΝSx`©]δgΈ1#F‘'ӊ‚υ›QθR¬ίμΞ_;Ÿ/1•Qο:KvੇnΑ|ρ ϊρŸρκKϋPίD‹oTh|H$@$@$@$0« \6£oVS+sEΫΔ»·Jφ€λGcε½ΡΑιΩ†7ͺWχ닍΄οδ>¬©>W0Vjϊ^U8ŽbGdEšžWwcν֘%\¦―ςԌH€H€H€H€f}ΣΊ°Š°­f-r™X`2bžΑ€Aί9œ:ϊ,Ά&XœfZg%NΉŸμΗƒ7/B 0€³²₯Βγ;λγ$xI$@$@$@$@$0hτMEΖA$@$@$@$@$@Σ”ΐW§©^T‹H€H€H€H€H€H`Πθ›ˆŒ‚H€H€H€H€H€¦+ΛΊ9ϋd@)ͺ¨Αn·γά©πxuγdD©Εα,Ε³OΛφ CΪuZ>m=ˆ² Ρ#;y2&ΈŒœ(.Ή²uˆχ\ήko’νD.£:#$Νώa0ΌM$@$@$0§Μx£οfχMΘ²›` δHΑM’Ρ—y-·ΛFδQΥ!#'vωπ#=²α@oΧ1<Ήn;Zƒ ;‹6bσΓ·αγišφΣ΄`¨   ΐT˜=Fίό―£fKΈΥ₯ Ι ψϊΠόάNl―½–†paΗ³°μz;LκΨΝΌ}οβ—5PΫ’Iρ·»{Ÿx9v d£: Cθ;σ{μ}d šRœ4£'‰Π: ?N=1ψ”ψ:›κπΈόΕžRμϊή]Έαλ‹Εh‚QΪ[ΐοΓΉž?α`Νγh5Ν’Jή\€tϋψٚ²ΈAΪμ9ό#Έ αΤΎaλxǎ²ˆ)^   Μ-³fυNSV–ŠΑ7δσAπi0ΩPXV…Ξ¨unΔαγU(ΜΦ >ŸΧ ΏΜΪ3Ϋ²±ϊΆEΙ¦κΤS—Ÿ)C|ΡtΘ―,c„Ν΅UΗP’ͺt/ L˜ΐ•°”HŒΈqM%’›V’¨=ž{°<Χ«Ω„4Ώ^―£ΜΏuδaσξΓ( EΠΥ‡4‹[.Š+<1Q97Ežέ ³Ωˆsοά(ϋ‡¬Ό   ˜cfΡ1ίΪUaEA–m:€>uͺŸwήy‰¬¬*]FiΌ]ΨW™‚ΒB¬Θί„Χ»½Rμfά]Ά+εΕ_ωθ}ž¨Ϋƒ›–‰Ύ+π°œŠ0fαΑ]4ϋ<¦#&tφωUΕ¬ΉΕxώf9|{vmΓΖbχ0…{ΫΫΡΡφ*vK[[VPˆΒΒδoΪ‡% ƒw…Ϊfg=~ΫΦ―†wύݚcςαΒΥϋΎΧPς K)™μ’‘D   ΩI`Φ}ώžΧPVΩZ‹“g}Αο„rˆ—o™Γ€žϊ>|ƒrTTT ’όtΏ‰zߐ±₯κYͺ><Έa±¦CΧ+{P|‰νl܎NW͸ᢘ—ήTiΒxI`<v–ό3^νκͺΈΣa΅;·|ΦW>ƒc~‚hΣ―³q'6”mΕ©+KP^Q‰ΚΚ ”ί2Ÿz΅Ε—mKΒ*ΤώόΤkύyάέΘW~₯xλ/ͺΓ²γ9a0j C$@$@$0[€Ν–ŒBFž–£Πͺ}αόe.„fn‰O/{Κ²ΓO"'† ΨΗ`Κζφe"]y‡•ΧΫΣoΖ&ώώΗ@žs"1ώlJόO9žX‹,‹Zι‡)”n^ΉΧ²oυݍ•²`RώΪr ©%z΄m!ϊίΑΑ ξΖΒώ!‚šg$@$@$@sΐ¬1ϊtNθ8ϊŸxKF“Ν‹+οyΈˆ–X[,Nb‚—N3ζΑ°UCPζψρ iN ΅ υΚ_PΝΚg_FqΆ–ο@κdA"'vύh|"ΰοGΫοOΰtχΗΌάτέRω}ΓΓόΨψβΛνXΉ>W~”YbœΔ·έ65φΧ~^%tάTBΝkΜΨ?Œ‰ˆ$@$@$@3Ž@―B3.gρ  Κ¬?ˆ·oŸΌ]‹ΊΰHΠx±DΧƒCAC,‰eίG•ν<ƒOΕ!i•}Ν–ά"αZ#“”ΝHΧ’Ό„ΰΰΉDͺπ LK/ΎΥ«}ύϊβ,BŽUQՏcOέ‹νQνmΗ}Ι}υ׏˜Ό΄Φ½„3εΒe΄£τΐ°(ω@~U8&Δ$^ΜΨώΑš—vαV‹Ciiπ½ϋ"ξέP3‰`   ΐl πΥِ‰€ςΠzνκκ.Fx6νoDμα)­@eyό]MζtΗ'κ‰iQφ°p±±£Λφ’χsm>Sˆ,1SŠ’ΫνjTύο·Nά«――I`RΈ±λ@j*Kγζzπhap~žχΊ”΄DΌxW§Υ*·=ε{p§:OOΉŠ?šπλ=κM›Γ.k„ύνΗΠ/–ŠλΫ?€Γr΅IVE5Κ–γΌ§©@Ε8I€H€H€fΉγι“Yr[κ›Ρ\Y“5U²ςΰ†³Ι(Λt,ZΌXΌ βyθ9ŠκΪα^…–Φ?Γϋ€ fKΆ„;Žςdhθ9Όπd κ"Ξ:΅τG—νΔΎƒ'ΰΩΌK.ͺ›ΰΜ°θzδ‡z9ΌψΝΟγφ:›yuŠΟZVd^—‡£ KWηϝÀ? v[pΟK λ_kσQň:Σ–Κ|Ύ••ΗqΈΈι™p){SŽr4μ;އVƒκ$”Ή―'¦¬=°₯XψˆH€H€H`†˜ρžΎΑK~΅—cŠ"4Μr_DξΛ*™U‡Πέ/adεA»Γ—xƒ/ Μ;jaω”–j<ΉχUœcO~R—=Γd£iσΥΈ*sδl ΩΞ†-Ψzΰ€ΆEƒΙ WvΠΰσχαhυc¨IεœΒˆ–<#qθBλΫ]πϊ΅v`΅Ω‘•4ψ^΄έ+ϋ]†~4ιDΕΣΠ­Τi„έ•­|oΊϊ΄E—βΫ¬ͺPg-:ΥύKδκόΡ0Αφ0ϋϋ‡»@­<9%xυšAH€H€H`φψŠdρΛٟΝα9t• GV τ_Έ€ήΪΡ:‚Α7<θ$έq£Έ4 ”ΨΔΰ«o½,ORτŒ†RHΐνφΰΪk3±`†ϊΠΠ8rύυ—`‰*χΘeΕ• αΝΘΟwWcU”™ΒΜ$ˆšύC(ΌE$@$@$0c ΜY£oΖ–'ΩHΐι†'ӊ‚υ›QθR†€φ`wώΪ©™Ο7y2O$@$@$@$E`Νι‹Κ5OI€¦ΚͺA±#²Ÿ_Ο«/ΰ›V%τ·w6°M]WoΞpλΘC¦™Θ4evgͺ€ Γ©J:pai“Ϊ)hƒZ”Ž5 ΘšŠB#¨¨m"MJ3EeeΝ:SŠšŠ―&+‚¦-ƒBΤe Ρl 4’ifΡ§ΆΆλχόρς唐ΌπRβλ{Ο»χάί½οθί/*C$@$@$ ftϊΤάzԝ¦ξΛ—ΰŸ1 απu\:}›vή–=;§=VƒH€H€H€†'ΐιΓσa*      ¨š€κwοT5}*O$@$@$@$@$@γL€Nί8fφ$@$@$@$@$@$0‘"G‚WL€SΉlηŽ:l/sΒ¦ιDKϋηRU ]ΥxεΧ%pόΰύθόT>λ6₯ XQδ|‹σζγ‡χš  ωπω¦t…oyεhn9RfH$@$@$0nδ2˜[iΉf³a«1žέ|ϋCRάΜpΆˆkŒΗ3@j!PδΑσEΉΠ')\@ο9μv•ΐs»ΌLC=_hΤΣVΤ”H€H€ΤN€Σ;Η±ϋCa)χΠ7‰Bbqaed"™!˜Τ έ―Αwψ‚θννE_ (ι¬3Za͘ΤκO*εbΆ@i bq΄“ͺ©¨   ¨žGϊΖ± ϋ‡Λ;4lκpw2&ˆ€+ lRΩ}ΎfόfΝv΄F5±GωΪGπΕυ RM…ΕkhTΨ’T™H€H€&/)ατٝ;°eέc0λ#‡;‡αοόο1`Ύ%νϋvbσήΨ«©HΆ£nΛ3Θ6„hMέ£ξΉΝhΨN)Θڝۄ'tπ}‚Λi‘%“ƒ_Ϊ{μxmΨ"zˆ+θχα]kPS’ЍύεωH^ΐV”˜κ@Νώ`›ΒΩϊ°5>Ÿ;φ”`Ρ<3tRΡaτuŸΗ;Υ%¨m\Ζ’@*dƒΔΩΧ_δ~oΣnlI—£UΟ>~0zZΡ'ΓΑzΊώ‰}Υ›ΰ‰=–cκλI% ϋ…φ!6ί–φa؎ΒD  ˜ΒT?½Σκ¬Βς‚¨³D__†Μ\,Ν΅ΐ`0!Γ”XO‡ G^-EŽp΄4Β9 C’i΅0Ω£β„NeC§ +λ°\Φ!:K.r2uΚ“Β£Erψ}~D&Ηi ¬ͺh†Ϋσu#Ν ‡Α”ƒ"W,RN³_‰\³zαδφό;ϊBg]ύ'*P%;|‘DPΤRoΚšΚfl+L*ž_H` ξ†θRββΑnXGΘΑαψ)ηX`ΤλμΟE­&ρl”οڏβX©φυΚU&Σ>Π>(ϋΓ$@$@$p§PΉΣgņՏJο‘a9Tζ-AAΑΤ}Π9h{Ί7<i\-Ψ…†‹°$ Φ ‡Hψhβ=6ΟT%άΎΡΛ*uhCΕ’|‘Γ"ԟκT‡DdηW"Ώ`–¬­C§΄,J‚ Ϋdο^ΌΧζ—ΒΆŸ¬HzΑ^[π π½κθh‰»Β ³θ χωPοΞω`IήF|Π©O–VΙως? Œ™@ΌέRG…1§―x χ7 ¦jΦΩoΚυJ{;Ξ΅Η.Ρεˆη"yλΡΙBcΖ?ώ˜‘b_Ώ© !#”Ο&ννÐ… $@$@$0ε ¨Ϋι³?ωΖΘΠC'TŸΉwσα“ίM θΐ³ε‘7ίΡΤF%oγvόωl―$7σG’ΞU ²I:”Ζ§ˆξvνD…:½gπΚΞθξβ₯χχοtH‰:σ<Δεjί8‰@$Φψ#¬EΪ]Θ‹Ό½‰:·ΎU)έ1Κ·Θ"Χ-pω<ϊmepΉ\p•-@η…/%ΝΜΉ(–₯ωŸΖL`§σ·8ξ“Ÿht0š-Θ]Όλά―’Ήα%(]?oγN””nΕΩ»(sΉαv»PΆ`φΙ₯›ζΖυu_ί1Š@³Iϋ!Fϋ0Š~C  ˜‚T]§τiςl31‘ρκeMšπiΧfX’ސœ’τˆ―$ά¨O–Όΐ­ύΒ@ύLX„„)ΘΖuα«u5‘΄ΈzY”“ΈZZώ…ΐ*tαώ‹nΩ‰ΣέOb©I‹Ό•e@S-œΟ8δ­ςύŸ`_μΔ‡Œ]>1¦—΅₯Y± Ÿš™0EV’«`FC [׈Nd/D±γaΜ·‰;ο·Α(: ή²/Φ¬Η²MΡ΅}Ž2xΆ¬D¦AzπnΚ<]?#7ΪΎžΈcδPόΩ€} }Ή»P‚H€H€¦2u;}©μhΥγ.i=’eΈιΎ†ά֩ȊΌδq‹4θΔ’'εΫ~]—OK‡ 8Ž₯λr„3·E8…Ην&IΪχώ‘ψΞ‰‰Ϋ#SF‚ΣbVθΐά§αk΄ΠαK bθΫhmΒήΘ_4χž#(Κ2ΐπΰΕHυn1βmEΥ k„Γ'‚~΄}|Ÿv~ώ―‡~Q,~cΡ@sWr/M­―Bύ›žσaξIε™OE–φaθL"  Έ]bήΞν*ο—ΣuΈ΄ΈG1hˆι™βPτ€Λہ«b€Q§ΗάbZklλ@`ΞΜtY΄€‰k©ΘΖ BqŸˆu kŽ>ž:0 MŸže]0W­Σ€Aι;Άξ~«s`ӚQά°†H΅Β]8TΩ”ΈzΏ΄Œ!|y¦»I !†H`ό8}Erϊ€¨I±"[ΪC)ˆζ——a»’Oξxj΅PDϊ&I‘Qυυ€;FϊBϋ “}°£ϊν*/jί:…‡KBcΜEε‰fτ40JΓaA{QΏο$ε‹‘1δ ςΨAt\Ό†YσΔΡ CώϊFt-’Xm7zΩVΌq΄9‘υx–ε8q0—ia΅˜ΛPκ€Γςcπ<~š{η‰γ"Jˆ iΤ+…€°§ώV/]ωπ‰NΖυŒ‰zΕY„ΗpΜ]ΰP!vU,Ήτ™˜ΕšŽY³g‹ΡA‘wΧaTΦ*†[b·ς“FMΐˆŒϋ2ΕZΩR,|ϊ—θνιΑυ`fšMΡs!ί‡οΚkU…£Ρα_……b=ίRχ μ/ςβzzFό\Κ‘ŠΉ―uη`ρ΄2Ϊ‡ΑzγH€H€HΰN" ξ‘>ΡRή½.l­~i K/9|sh“Ž*HnJ―g3Ά6œ’hΠaˊ:|Αn|Պ5o©ΘΆT?‡Ίγψ΄ΖLΨ"ŸXΗΤέ₯0Τߚύ7’λΕy~°™YYQ‡/ˆΆ7_ΔζψAλ έ½΅πJ£‰"χπ(τŒK‰]Hσ+ήD§?(fΞι`ΆΨ„fΙα GΦT΅yγ’ ΐΨψΠzΖ‡Ύ xΨ4ZMfdfFΎpΪΧ‰3!c?,xαz₯3 …Ω–%9|αΎ.ψΊ₯=iΎΡ³£ιλ7ί5d νCMΚφα:nSΏ’f+ώ   UψŽΠφͺxe­v;¦_S4½VΤ5ΏŽ±€γM7žSzsύvgCZU'Ύ½žΨ‹κ`™§ ΩΡ0[l΄Ό†<I»s–3¬v8s³‘Υqρ#Z†τ˜π|XŽL1`ηk¬PΌXš«ΨXΡ‰l±γgπΪ5\ω¬-­CfŒΤS˜N$@$@S€ϊ>«uO’λύFέέ(ΦδYαͺ~«šEkωΡ°vjΥκσ§Π‘aDώΊrΨ"Ϋ vaWήΚδυ|S―O²Fw"ρκλ΄wbobI€H€H€Pωš>Q› +²ΕTΖ‹ΛΧΉ“ͺΧ}κmυ:|’&ξŠί‘Θ’Ψ‘¦λψ:|I-Μ/S…ΐΈυuΪ‡©EX   oA@ύN_ΛΌ{κ>δXΕT3ΣΔNsύœ=Ό[UΎqIχεKπϘ…pψ:.>„M;“φμόΝΞ[I`r·ΎNϋ0ΉšΪ   LυOοœl,”H€H€H€H€H€ΤA@υ»wͺ3΅$     ‰!@§obΈ³T     Έ-ώδ_vV„ HIENDB`‚milc-1.9.1/docs/images/tutorial_example4.png000066400000000000000000000566671474512023100210360ustar00rootroot00000000000000‰PNG  IHDR}hγ’Έ ³iCCPICC ProfileH‰•–TSΩ†Ο½ι!‘%T)‘7ι-€τΊt•PB 1P, "ŽΰX:TΗΘ`C ƒ‚½NA@ ’’ςnΰfή[ο½υφ]ϋžoνμ³Ο>'χ¬υ@ϊΙγ₯Α€s³ψ!ήn΄¨θξ E ΄€ “•Ιs φˆΝ·χ$ο‹jύϋοΥdΨ ™, `„γΩ™¬t„O#~ƒΕγg€ΚGβZ9Y<E˜ΚGDΈ]ΔIsά+βψ9Ξζ„…Έ#ό<‰Ιδ'@­EΛf%!uH4„ΝΈlaΡΊN¬d&α/NOΟq'Βϊρ©“τ·šρβšLf’˜ηφ2kxN&/Ήζ<Žmιi‚ω5΄'%σ}BQ^tn©~bζΖΝ3‡=›?ΛΙŸπyfeΊΗΜ3›ια'ž›θ?Ο‰/†ΈN#lžω!βϊ ™ž‘σΜδ/¬%H w―›ΐΧΜM‹œηlNDΰ0ΐ8€c_Β@4XX €>ΘλΐFPJΐN°T‚ƒΰ¨ΗΑIΠ:Α%pά·Α=πΑ0x &ΐG0 A"CH R‡t #Θ’CN'δ…@ΡP”q!΄Ϊ•@₯P%tj€~†ΞB— λP?τ„Ζ wΠ“`*¬ λΒ¦0v…ύΰ0x9œ―‚sαBx;\ΧΐΗΰVψ|Ύ αΧπ$  $Pς( ”1ŠŽrG‘bP‰(>jͺUŽͺA5£:P=¨;(!jυESΠ4΄1ΪνƒG³Π«ΠΠΫΠ•θzt+Ί}=ˆž@ǐ1*#Œ=†‰Β$ar0E˜rL-ζ ζ ζfσ‹ΕΚcυ°ΆXl46»» »Ϋ‚½ˆνΗa'q8œΞηˆ Β1qYΈ"ά>ά1άάnχ /WΗ[ΰ½π1x.Ύ_ŽoğΗΰGπΣi‚ΑžD`ΦvŽ:·Γ„i’ QθH #¦7+ˆΝΔ+Δ§ΔχšvK%8ω'$I J|&Ι’ Iξ€X’€΄TGΊHzDzO&“uΙ.δry;Ή|™όœόI’"i"ɐdKζIVIΆJHΎ‘"HιHΉJ­Κ•*—:%uKj\š ­+ν.Ν”ή ]%}Vϊτ€ EΖ\&H&]f›L£Μu™QYœ¬¬§,[ΆPφˆμeΩ! Š’Eq§°(›(G)W(ΓT,UΚ ¦PK¨Η©}Τ 9Y9+ΉΉΥrUrηδ„ς(y]y†|šόω“ςχεΏ(¨*Έ*$(lUhVP˜R\€θ’˜ X¬Ψ’xOρ‹MΙS)Ui—R›3e΄²‘ςRεεΚW”ΗQ9,b-*^trΡcXΕP%De­Κ•^•IU5UoUžκ>ΥΛͺγjςj.j)jejηΥΖΤ)κNκυ2υ κ―hr4WZ­‚ΦM›ΠPΡπΡhΦθӘΦΤΣ Χ,ΠlΡ|¦EΤ’k%j•iuiMh«kh―Σn~¬CΠ‘λ$λμΥιΡ™ΥӍΤέ’Ϋ¦;ͺ§¨ΗΠΛΥk{ͺOΦwΦ_₯_£Χk@7H5ΨopΫ6΄6L6¬2ΌeΩqŒφυ/Ζ,Ά[Μ]\³ψ1ΙΨΥ8ΫΈΙxΠDήΔί€ΐ€Ν䍩ΆiŒι.ΣΣοfΦfifG͞˜Λšϋš˜w˜Ώ³0΄`YTYά΅$[zYζYΆ[Ύ΅2²J°:`υКb`½ΕΊΛϊ›­ ί¦ΩfΜVΫ6ΞΆΪφJ¦o£_³ΓΨΉΩεΩuΪ}Ά·±Ο²?i§ƒ±CͺC£Γθ½% KŽ.rΤtd:v:ќβœ9 5œ™Ξ5Ξ/\΄\Ψ.΅.#)Η\ίΈ™ΉρέΞΈMΉΫ»―wΏθςπφ(φθσ”υ χ¬τ|ξ₯ι•δΥδ5αmν½Φϋ’ΖΗΟg—Ο†*ƒΕh`LψΪϊχνφ#ω…ϊUϊ½π7τηϋwΐΎ»žκrΫ‚@#hwΠ³`½ΰUΑΏ,Ε. ^Z΅τeˆyΘΊžPJθΚΠΖЏana;ž„λ‡ Β»"€"b#"¦"="K#…Q¦Qλ£nF+Gs’Ϋcp11΅1“Λ<—νY6k[{ΉήςΥΛ――P^‘ΆβάJ©•Μ•§β0q‘qq_™AΜζd<#Ύ:~‚εΞΪΛzΝva—±ΗJFKG““v'%;'—'sά9•œ·)>)S¦RƒRλRg"ΣZριqιgΉ²άTnw†ZΖκŒ~ž―ˆ'\eΏjΟͺ ΎΏ6Κ\žΩžEE„O―@_°Y0˜ν”]•ύ)'"ηΤj™ΥάΥ½k Χl]3’λ•ϋΣZτZΦΪuλ6\οΊώπhCό†<­ΌΒΌα|οόϊΔ©-0+(-ψ°)rSG‘ja~αΠfοΝME’Eό’[Άόύη‡Ύ­–[χmύ^Μ.ΎQbVR^ςukۍΝ¬ψqf{βφΎ6;μΔξδξΌΏΛyW}©LinιΠξ€έ­e΄²β²{VξΉ^nU~p/q―`―°ΒΏ’}ŸφΎϋΎV&Wή«r«j©V©ήZ=΅Ÿ½ΰ€ΛζƒͺK~9Δ9τπ°χαΦݚς#Ψ#ΩG^8Ϊσύ§†ZεΪ’Ϊouά:a}H}wƒmCC£JγŽ&ΈIΠ4v,φΨνγΗΫ››·Θ·”œ''^ύχσύ“~'»NΡO5ŸΦ9]}†r¦Έj]Σ:Ρ–ά&lnο?λ{Ά«Γ‘γΜ/&ΏΤujtV“;·γ<ρ|αω™ Ή&/ς.Ž_JΊ4Τ΅²λΙε¨Λw»—vχ]ρ»rνͺΧΥΛ==9^λΌnύμ ϊΆ›67[{­{Οόjύλ™>›ΎΦ[Ά·ΪoΫέξθ_~ΐyΰ;Wο2ξήΌx―~ψύ‡b²Ž>J{τφqφγι'ωO1O‹ŸI?+ςΌζ7ƒίZ„6Βsƒƒ½/B_<b ½ώ=σχ―Γ…/Ι/ΛGΤGF-F;ΗΌΖnΏZφjψ5ουτxΡ2TΏΡsϊO—?{'’&†ίςίΞΌΫφ^ι}έ«]“Α“Ο?¦œž*ώ€τ©ώ3ύsΟ—Θ/#Σ9_q_+Ύ|λψξχύιLϊΜ ΙgΞJβpb"οκ #š‚rβ²9½{­―νxΨV§frtI™&•Ι7lΟ)NϊLωmŸβͺΤΦθξe[tΪΗ΄Κοθ’ό,υ₯_ٌ ]~ιyv% /½F• Ηκ½ ―κΉθŒύdUSωbM7 Ÿ…ςξ Oœ¬³žΪσœΰ:>΅…λg~v…t—υεϋ1ω΄Κ4+NΒΧΪ΄UΟ>Ά¨ΓοΥ&_¨D„ €@ €~W\‘‡ΉH%ΦχtσE}_γvνo͘’εNRΥΊυρτyŠψŠΠvμ”WΙΓGνZ9Ε±Τκζi“»ˆ‘^΅kζΏσoΉM2I_ί<ΚtοΓ?τ’άΠαrK.Ρ ζOsnEUΣ΄,’B›Π‰ͺ[¦ΚcΞΰΫχšV¬Žnφ<‘§>…?Qu| ‹ΤΟNέε'V|žHξL»›A«^ͺžwJ>NdΩ86 €'K &ι«ΈχAέ4y΄>ΪψˆnΎ{u(ŽΉ?~X7N‘­ύL•«ΒΎΟ˜―•ίΊΞtΜS–ωΟΩηkUλ‘ύγΝΗ΅ΰžŽύΝΠ½ΞΣ”s δ±#χ©₯ι}ύΑόgΎ"μφΆζ:£‡«ΏQm»ττΪhςΧ¦ιμΌΉ}>y5jέ―kΩΪ‘Zώ 'ασ5oΥͺΜSΗ%a3΄ς™¨4wœnZX¦ΪΞu0φ±£κ‡ŸΤΔ§Ϋ’ΟΫ€υΏYͺ{:vvΒ-›«•w}]γ LbbΞλv·©iΫZyσŠι™ˆC°LVΣZ–₯ΚSržzκίμσΉM>υΞο–θξ¨8Κζί§%³Lk˜Ο­#υOͺ’r•_ΰίβŠ{υ³›&+ΫΊξΞ3D9ζ8ϋΆ½©ν™ΕšPdukΥ¦G’ΥQ[Η\l³Υμc™:¨?.½Y«Β˜μ½ψΗκΊΊxξ*ΞΟ΅»…ϊZ½jήϋ^yβΏ΅,p=RΩόωNΒηkΦ¦·?Vι„"΅l{Y―·œ₯K' ιΕYϋ`—²*M+±S>½ύψ―bzΊJ Ό~ΛͺζG_ΡΡ;Ώωžξ»HrFΥJ-ΊτcώOέ?kσ*Ÿ«ϋΎq…Ξ;η εx<Ξ{Θxνm|OTί‘—zZΗζύzΣ„Q:΄³AGG”¨$ίy½yχmΣχ³›cίo=βKΐ‘GΗK|γβ™ζ΅~Ϋdeά¦ŸΞΎ#ςǜΐϋk΄ϋώπƒ …Ώε=C™y/έuΛ₯*°ήDζ}ΪΌγm½³7WekΛ#K#―9νΙηCΆ-«XlbΈΌ#††·΅ΣΙ|β#kD™~μ•XŸSζΡΪά ?ά?G‘·ϋŒ*=Άhš²ΝλξWζuΩ±½\ΛϋžJ†ΆiγCα―ΧSWΗV*ξ5―ί‰#ΜΗ[ΉΦ[τα˜|ΧSzκ{fνΦΑ-hΝѿXΫρ@@xΡ ‹Ζ*7'WgŸ•±*¬1ΚΙΙΣΘα§…-―ΠcKnQi‘•π™₯Ε€Yςδζ©tϊ—ΝWδ°Gρ|=φβMη$|^³m«I rςΗiΞ²uZ±±ΩotΎΖδε*ΧZΏ`¦Š ŸυΎ'·PΖΙJ&XίsZΆκ„―’ς^­|πA­¬ώ’6Ώ΄ΕJ―tΦΕεa˜Ό¨p‚&™„―Νλ΅Χ»=ωšΎ`‰ζ‡mV^©gX RσEΚmΆj³“£,ε›–¨%/Φ¨"lSσ%1‡‘Γ5Β*Sn†Ψ_*­ƒxμyk™ε>|pμumΩΓG)Ϙζ™}σG8³53Ί°HωΉ9Κ1Ηπψ¬$Ξ­Ό’IvΒηυΆšω,•^-Ν΄6<²2ϋδ)??ίώΛΛ£ΣcOά<αηUκ·U7˜$Γqki6―‰Lς Ζiζυ_§όK&ω1_γ_΄ΰŽ—δ5Σ»6=’{ξ¨Πe“―:%ΏθWή1MvjΤό¦ξnεKτυ[·Bo$S§ωšΊθg―)“¬|f©Yž£#x=τ£Ayω—u‰ιζ›—γQfk‹yyεΞ2םMΠ’ϋΣάΐk²§u\hή―Φλ©pά;αsήoζΥ–WbήoΟΘό»G’½;z·{Υxΐό^’£ά‚‹5«"ό +•_…JΜ{$Ηόfπ―^όxQ\qŸξ_4=l΅šΊh3½&hͺωAΒͺΟΡωΧΣ©'Ÿ=ΨΦ‰αj'ŸΧΔ`^Kζ΅PZhg>q}άyEvΒηmi6Ÿ©ζݞ[€–¬SUπc―‘I™ζu—›_ͺ™•Α…Ξ‘ŠηΟΦσƒ]Žω<Ϊϋ@Λφ)c+²œα#Œyžωs~8²— q>;σΜ²αΓc?ρ/ €ΔˆIϊBΧ‰Dm\ΎΈΌςJX |;tδ)š>}Ί.›2YUχ?ͺuO―WCΨΖUK*T`~<χ΅4θ‘ͺɚfm;ωv½ΌΓ|«1_΅―\p_ΨΦfτz΄6ηαΥΛk–iς”)šlφYσΒmͺDΧ_u½zΣώΫόβ_¬Χ¬Χ’¦«tά8•Nš9ζKΆΥ θ40pœΰ“Υς΅D—M›¦)·―Q“}’<]z}Η’ͺ[―‘ύ»yk£Φά>Εl{™Ύi’S+Zeκλχu€} ;ΤUλΪΙ“νr,zt›Œ·a­¦˜rY“α‚˜&Ο`Μ]<sZλ¬δw‘‰σιV e~ρίρ΄¦Mϋ‘¬o‚ξ‘ίQ<ΥVίlΞgb™\₯mΞζρ―鳏”ΰ?Ε uϋΜqφΖήΖ Zb½&r^+ΧmΆφ„τq³Σ­Υ=|œζVœnΧSh婘(«Τ—KœΦ°O‰iελΙλwΩΝίΧΖ}Φ‹*_·TW›WζLΥ|wΊ}½©·αiΝk‘Ψ΅e‹ΆnzAχ›χΔ”iΣΝ{hš&ίών:+ΠΑΧdλΈγύκΣ֡˜χΫ7λΈζ•ύΥ;*{₯ά‡^ »Μ{θ5»n]xευa[kΦ”³νω}o>՚ΆY§“ΕΊυΖ/Ϊ―C«Χΐ²Ι—™ΊΈL+_ήwž|>$Ύmx ›΄dΚ4Γ=΄‘1n  M?mΥρUΊμ›+uœ£ι·.v6©_­η75ΫΣ%6ΛΌ;ߜ~=γmxIՁDω”Χ±‰hΥΧڟOS¦?ŸΌZ{wπsr²šWέQ¦@@ [Μn·θbƒ]‡νΘl1DΟ©«ΦΪ_–kkͺMφ0ΏO)r~©φξ|_ΗJͺ²Μ$bΗkΗ??%…¦ΫζΘ±škv‰Χa§aν}Ί34ΒeVάm};™‘‡˜,²΅AOš~\Εf„·©Φ―α­ϋ΄ξΧhύΑσuλmΧ«(ΗξGŒΩ€ρ₯ŽŽ¦efΓφ―šΡ­ψ‚­˜ε:ο 'ή†g—‡Ί‰Υ―½GΏ›φ9-˜`Z<Οϋ‚ωςTc—7a‡°(z¨v€ι#55°³ΰ#{͈*<Ό»ΆΚ’)?κ€Λo[΅pDG­ ‚ U܁ZΜͺ@Κh¦>έ£όϊ‰rΪBš΄jve¨5Λ:κκ{DΤνκ'kυυI7˜Φ¨qZ°ΘIΗόΫχ΄|δΫϊΣCΛτ\ύ§‹₯§{/όφ—­|υptΧΏ~λt‡ι‚ϋδΓ ”Ÿ7IΏ}}’ŽIΚ4"΄ϊ΅K5Οτ·+6Ϊ,¬,ΤΰΗtψγcΪίβ3?’Έ•?Φlίρnκi[Χ&Πޞ€~•~ωΌΉVςκByΞ.΅[βŸ‹ˆ¦›™;tsΌΰκςωΊoφωΠΥ Ρ|Rν\ΏBΥζϊšυ›uυ-LΧθ ŸεΊ0Οz―{υΧ'γ}ŠOΦΙsΩ΅ΊΘήί§Χ~3/”4ΎσΧΊβΕ%ftΫπύzςωΠƒm#bt5§]Uω .‰!,ž}oκ§K6M‚χΛ?LΥ²Jδ)87TΗ+~šΎZz΅iι½Xߜ!έcUΌω‘c²υKœωy­ξρeΞ“€ŽΓJΧgŸOαΗd@t0_₯z¨_΅QMζΛWΎ;WSo©2ί•ΥΕhοΞΝͺωιέ Œaϊ·Η°Ξ”3ξj-pΎγGžΨ΄Dε[-Qίoλ[΄ωωx_M?‘=§ΉΞnŸΩςΪ‰ηΨΫ7˜{½έ³Ϊ:Θsͺt–^_ψΒ8šυδ;hΪ ,λh n4ZΩφ—<―6ΏΠ–šΦ*“τΉsFͺΘlnε& ;ίΓηΊΥwjV"ίc3ΝΓ-VsNŽω³’ΨZmέεΥΈ’ž΄›χ ²χς6l0ιp7Ϊj]Uυ±–ίφ5]`ΊΠfYέvσL·έ©ΦίtM[ygδυSέξS­6-”W³Ό€MO>l'ΞΗλΝλΧ|ωžυσ½R5ΥiΕτ5ι‘Ϋ’²NRnΌkΆ sν\Δi­™μœ¨nl=¬γΦύ»#ŽY[»E^+ι3Ώ |±&™ή8$pΨςςiΊΔŒΌΫέ£`ϟ퀯~՟Τpγ“ˆhͺιΈΊΊVsg}ΑωŒΩχj"ί²έΦYŸ=0ΠΪάͺύ»ΒwyN›οTQΰG+gMO>z°m(†6κ6†Ž½ϋwF΄LΧΦώM^+ι3]½Cu\»TmΊRSΝ@L“g/4+Tρυςΐoλ‘ΰ…~IRΗ₯c @ϊB &ι ~υIμΰζ‹νν­ΊοΫΧθΌ³Ξ0­6yΜu…γ¦ͺκαΗ4hΚμ¨/V7€­ΏšžFNzq3·jγ~Y3Ώή',θΰθα°Ρ0›…uν8—΅€λGqŽΩ „ζ›qΨ᜝‚;‡7KτΤ‘λΣΪ΅o™Δτ“˜žμΗ Σl΄Δ›kWλσg΅8¬ΰωΆmΠΞk\žG—άτm•­ž›€€BΝξΥNWή–MZέΚqΎž½~ΛǎκθΆκΞΦXλώ†υαM˜ΕΊο{sLΒgNj΄yγ5mή±ΗjΧ…_›k~[pΗιšμ”xGΏΣ:kο(h73=sθζ`ͺ}ΆF/‰ωLˆΨo€ΤTΫXτœ^Ϊ|»ŠΜkΌΈόJ©ϊˆ¦^θΌή^ωsDqŒfbήη]lά“Ο‡žlkbpΪθ3ε v:„ϋΓTx|ΡuΎcϊ‰gΆ˜ζJΝo—™ΗtyYΎ½²α₯?ΕyŸκ:ξˆ›)@ψτΑ &t€m;φJ%ζWχ¨aΐ³,(΄]h’FwΞ ΆλkξβοꦫKΝθœgθsf …kτΒ#Ημ<¦£ΞGoΠͺx w‘&>όξ]‡$σkόYΏl`ur”ζ_yaΗ—n{I‚ΤoΣ~Σ˜ηΙΡΨΟ•™Γ9Η³φ32;j·0†Ž˜ˆChγ°‰(η°5‘Ιβ™Uϊξ5¦›_[¦>i|^•Kƒή‘M"&²»Νj#6mmΎWwω8ΦHt;‰yΧnη›³ημ BέΚΊ<`pe …cχ¦šW}­ΦΏ~ƒ<žΡšIά:η2U?yŸ&ζΊ Y¦Όο?Ρω5@¦•oV©}υ¦ΆώaUœ/Ώζt½yύΞΈWχά0ΎΥΧjF~5£΅N­2»l™₯UΑΌ―x†ΖΫΉJ«Φύδ*§Λ] tχ^s£™ $сeαO‰Φ±;Ϋι¦ά·¬μ3N‹˜;3Τ™9ΈΞz{γ~πΞ¦λΦ†'λl“θε«ϋ«*&˜ξŠω¨ja¦ΞΆ‹Ω€Ώ,λν‡Λ±@Β•₯«¦{¦ΉzΔ£'Ÿ=Ω6t’Φ¨Ψε7Ζi‰m6‘•=4lΞtώάΨΈu\·κIm»±T%¦…tœQ1}ϊSΈYΥqD‘˜A@O%½χΗή£φ"Οθq ϋaF,7zœΉŽf‘Ή–―γQ―ΥK¬½φΟΥn–ψ2Rχ”ΆΨ£₯d©όφεvBΠ±ια6·|q›Ύ(is­šuž¬1ϊ² ΄ζWΟΨIXNΙΥzeέSzς™υΊe’σKv‹Ϊd—vr~s/5ΏΓΑ\ATρΕ{ΫζΦu$‰:„Ÿe “²F8‡―›]rœ¦T₯₯γt±ΥZΤ§]‘kfŽDt)‹=Ιζ­Ω =£ΖΕΤ‘΅’φ½z{NeiΑς…°nγpoeΗkeξԚκ*Ν°Š³ΛωΒέvl¨Κ«Μ֞­«Ύ#׎8Vχ3ΩΚβ1‰V–έm4+f ŸŽ#Μ_te •o«~ΣΩ=~ύV¨ζΣνr΄ξX§)—-&ϋςW3°Λ/–Λδ²ΞchG Ν€°–ς…Λu©}­UpΓή?gLΦ½!φrέόoηΪσνέqΝeπ ]Φq‚G=Οζ†ςο6[οΡ<͜sI`œ ׍φ謦l[­~β&ΡώβΏ/½η+ξ½Υ$IΡGκΙηCΆ­{^΄_'MωζβΠIΛ+Ώ‘s£ςΞΠJ+β‚/θΗΑ%eZxέx{&ΆŽŸΣŸ_k΄Χε›ϋ˜ZΕjή².²7F2Υq°H<#€ €ΐ§p2°ΓΤΎ³C­3KΜ°θγτγυOjϋξ6Ύ „mfO–OžiFΘ,ԜoScΣ.<:Hg](gμ”F½κ*WoΟZ―υUζ‹pή-ye½ζmΠτœΜΦ¨3L·Pλ¦}OkYh°sxΣ lηˆίU§ίiRι%fh|3JέR3@Ζ΅KkΝ’―¨ΘΊi[άΧΤdn»ό$ΊLΞ|½zδ5•/ΊDξάR-[”yς Fk†n·ƒjΡ_~Ώ*΄kβ‘]TϋNƒq.²—½Έ^ϋμ‘ϊ₯-Ώ[{-[pδF³»―­Ίη™ΑΎN#LΊΧΦ–Έ–GΧόβ)•›[Sdšoƒ‹Ύ'™9wmέίΤbΚ1χ>\ςΚ‹ϊ―ΟtΙΫ«ί}ΏΒΉΏίsKUsΝμ₯ωζ˜δϋrΥο<¨A#F©ΠάΒΑͺγ{ͺ‹‡ςΟ9WE…ζ8“fκϋζ»»υ΄dΞZ jzγ/q“’ΐκ>zš―λέ`·=ϋ›ΨΛICgιΙλΧ΄2>u» ­Χ‰dθ©ΈΗ>Κ‚ο?jnbɝ Ÿ<\₯ι7›’š/ΨۚoΠ$s=ίΤͺυΨΜzΙΊίZθτŸjŒβX΅^%3?{τΉζVV`f°’ί=χ¨]ΧqOβΎΦ›f»&]]8¦Oοώε‰Oqόz­x|ƒ&.˜$·ωŒZφβ:νσš[Ÿ87‰‹:nO>z²m~μ6•ZΧγ]­Ÿ―ν³T\δάO4*ˆ°YΉ=ΘzΥ\nκψ¬°:~"ΆŽkzQ7NpΙ«ΧΒ>ǜ&S;Εό'Vr&@@ 1˜–>=gF¨ SnέΏΘJψZΥΠδ ~64€Ž4νT‹ιΊfέhΌ °Δ b>σνέΊΩωΊϋω ²ωrΪ’G΅£Ω 2βφ˜Dά0ΪΫJψ|ΦυL›‚}ށ9lw 5ߜu€“λmjξtZχ¬/H5?6c>W­9W]ΈΑeΊvΦ,M»μ2ΝάΜόΨQk€Ÿ=œeΰ<ζ)Ψ₯-Όlυ5wκξ5œ[4xςT2.π΅6ιιe·ΙŒzτΘ!Έ—q^ωτ&5Ϋ~ζ>vyζžTζzΘQΓέGƒΫE?·E/°z:­³Ύ¨n—εqZ-C{šϋŽ6ηΛΛ³ξΡgQ ¬°ξ―hέ·/Οά“,n΅Λτύ•/˜/ΓζxζNς9ζΞ,sS΄Α‘;C­―\·Υnρsηδ·'α3χΫVΗOόz•^ΨΈMϋš­ΧU0>ŸZ[šτς£Λ4+μΆa‡Op΄;UνlΗΜZ1Χ$ΎvοJοV=^‘ρΞ’ΰλwΖβοi’= d‹žώɜΠ(2·ψΑšvIsJfjω|«½―^•?]£f€N+ν-(g'|Ύ°χ[π΅Ϊγ:•Α'―Ο£Bsl'ασjγ£?‘Q–B:έΥq‚QG=!³Ο-})p»sxοϋzruΤgHΟZΏΊRw?τ²μDσ™f%|ήΖ­ΪdίV&ς`=ω|θΙΆΦ­TVΎΠ`Ÿ,Λ lTb%|ζσ±Ι~X½ξCC³θΨΡΐ ΫΌ·μ:6·ͺqκΨΊ%©c«k}τ£~…κνΦD³’³Ao’¨Ž­πν»BŸΡb@p™όρ6,.Ÿ©/ͺΦƒMͺYΫυu2Εeε?f΄†ΝRkΣͺy.,#Šsπ23<ύx3Š\λΑƒΪυαΣ‚ηΛIœύβ-*7Γ™/ \;Υ²c£ϋυΓζšΑ^χ ŒsŠ2͜;^vGU“π­ιά’§qN֏· γ–Υͺƒ¦x‹yMtZΛeUzρ™j\[enήυk§Ο€LkηSΏ½ΕNϊΆ™σήάƒσφελ7Xžς™k½šχΟΪOoPωπ:έP’cnέΈFΣηmP…©‹,SΌZ£ΪN+"MbΟ'Β!±3Ÿψ­ŠΛΚ4τ ιΒ]_¬•λ~«RsIέΆGΝλ$ζǁΔ?̈E –¨l†ζŽ7έΣ[κΥηV8]–ΊΈΜ\γ˜H›Η―,²[’Φ.1ο·Ξ?Ο¬συη:ξ“• €τ3N“ΎT*gωΒj-ž3Ι~<ΈΟη3]MϋIζ^ΣεsVθ^{©T΄‰΅ά$}ΛfͺΙ| ­θζKhŸ™Μ¨ΤšεΚ:²]ΛηTvΡ΅³ΟΞxRLϊΌ k5mN°ΣμI !υNV\‘•KTγKkυ¬Ήη¨Ήϋ§*«’&˜²4kΝ7―Š>J˜O:ŽI ΛGηiΪ-‹4½ΔΈ¨QχOŽ]ω€GΕ @@ΰ$ τ‹Λ%jWTjϊŠZ\=[e%giˆΉ©΅Μ}ίάφΈ”™άMΙ“dΝi:8€ϊΖF}Τd€ΡΩV}»άκ lώϊλc`ΰ&Φ|<]¬ρ¦ΫyiQ•Ήω{UΔNMžLέ„Ο”€jΙjfΨζ_x"²ϋ}Di™A@ώ&Π/’>§RžΣΚ»*υ·Κλ7ε©[­y³Wχ›β$CAv4|¨–Q£΅«aG2„“1ΤΎ©?o8[₯Ε¦«Ί'KΝGΗΌ{΅ριuwψ S©Qšˆ(›vnWσπQςωŽhϋ_€;ΊΉνKΔΞΜ € €@Κ τ‹ξ)_ @@8A'θΈ@@@ Hϊ’ @@8Qύ蚾Ed·XUΛλ‚œfύii₯βέώκDž=™Ž]VQ₯ωΧ\ aVP™™ΪϋvξXζάp]ΕsυΰOfšΫ[˜aSλχΧ=’\?δxπ/ € €§@ΰδ$}e υΜsd ήρπ©yΗ=ωλζΎzK“sj΄Ξ» DEζ>gfŒλžΪiω([ΈRΜ)({‘{Ό™$}£Ηθάs3ι°-FŽ/›c@@NΆΐΙIϊ²++¬d>3mέP!·°T·,yE_˜ψsΝ[HΒΆKͺI+hωt<©‚:™Α”iώWœ„―΅i«ž}ώm8P‡ί »‘xmξ^ΆE§},M«όŽ.ΙΟ’―-}ΕNfνp.@@:89Iί+]²^=]5MKMž0cξbΝ»ιjxάwυZ\»Φ^ήY §vy­nž6ωΤ†gwnύΦͺ—ͺηiYXΧZ½jΧ:Ν ηίr›d’> € € pjNNVΖ`»Οs«—κΉΥυzμ•E*p{Tώ…R튎-ΝυaW]£Ϊvιι΅Πδ―MΣΩy9rϋ|ςjΤΊ_-Φ2+Α(Ÿ«ϋΎq…Ξ;η εx<²ξΛξkυjoγ{z€ϊΥΤ™Cšξ₯5?ϊІΩͺŸΞTά|ŜoMυήφOύjΦ»ΓbΩόϋ΄xΦyR«sZ¦κKoΦ*λ˜aŠ{Φ-“GiΧΦ7՜ϋ9M,Ι³»8ϊΌMZ›₯Ίguδeχκ[.UAŽ•Yέ\ίΦ;{suQQΆΆ<²TwFmvͺΞ'qθ|οNΧXe»iβs/Σ2λ±6Λ仞Sί3“ζ>f·<’9wφβ{=Œχ„˜uZjV € € Π"“ΎΟέ)-ŸΩMιΌ]—K/w³YB«kτβϋ7iΞΈ\ε|f’ΚΝ>‘„ltΎΖδεΚcœ³`œs4“πY‰†'·PΖ™KΙκU^ώe]RZh―χy[Τb’“œς‹&hΡύ)λζΩZ}P’›£άά 5ΉΜœ#2³χ-ώE*2I₯ZληlΚ}š&ίώ[ΝjwΈή€’υΟiΫ>«ƒ©GŸ)·RKσ(.VYY±3mώ0ξl{Ϊ»}³‚γΚΤVίlΞ7ΩόUi›Ιγ¬G°₯™sώ=Φζt^5£6=ΊD—M›¦)·―Q“½8O—Z1؏bέzγVΐζ­Z6ω2οeZωςŽΐϊή?%δΠ‹Γ―ΊγZΫ`Κ” Wk)v]LΦUσͺ{qT)ρxOœY―g'@@RL 3&^ŸΙ–:k2Mf}όˆΣps††΅χιΞΑT¬N+ξξhͺ«_»TσΜ0Ε3*΄°²PƒΣᏏi‹O¦―gvώXsΌZ½Sί¬Iyy:kάφόβ₯κκΒ,5½|ΏfέY£ ?γŒ-ΊϋoοĜίZΰtπŒ»*΄°΅ρ%-¨ΔY·BΆU3‹¬6±ΣœmΚΥEyVvλΣkΏ™σR«οό΅xq‰4t¨O$κΠγ‡νˆAΨζ]N&ο 4λ2@V"€ € ΠOb“Ύθ·\Π#Αt*ΨXsΎm~>˜πΕ¬4Χτ™λυΒάψSvŽΣύπΥwΆkΑ€<εŒ>Χd†Ζ8Ϋ珂™oΦ9#­y―6ΏήΕΉβœ>|‘οH 90°°£0° {`¨[ηώ]α{>§ΝwͺΘNΓ—χ`:A‡ρΔnšhΌ'μΔ–£#€ € ±IίIλsηœξœΡ$›φ°¨̊N›‹uίχζ˜„ΟμΪ¬MoΌ¦Ν;φθΨaιΒ―ΝΥΣͺζ4Π>^ύ«οjί‚ ΚΛΝΧΒωΣ”Lns‹U9χ‹iΝ{?Τλ‘‹ £ΒHdΆ;MΣeυΔ<w81ηοιQ{ο 3λiΜl € €@j t—¦τy©ΜUƒaΊτgΰοφM‘kιΒ6θz²Ψ΄ΨΩ»·jέO=atχ^s£Ω7˜Ω™ΙϊTΏοε坑«g 7cP6λ…§wͺόκR]ρ΅‰φΐ$ήέλH&κΜA¨Θψ£6κvφXΰΦY1ώIΉΞ+°ΊφςΡ‡^ž’§»k tm;»kβνY™ͺŸΌOsέjΛΜ”χύ'z}νalπ,A@@ ΅"r±bο΄›eίμx ε¦lΖB=ψΤχΧ±΅κ―k{1 ΘP§ϊl@X3aωΒεΊ4Π}³#κz½·έόΕάzΐΊχ@ΛN=΄τΟΪmΚ›kF ΅»7ΗΏžΟ ;μ„ͺ#έ2νέ§ξ)m΅ΗŸqλ‹Ύά­ΤΪΉβή[UΏwjbΗξ‘Cb‡ό΄[m Πγ5Ξt¦zτ$ή^™e+wˆ=5+ΛάΒΓ­¬@koTΜ"€ € Α¬ŽΒ*}Ε|M4¬c™5uτ€tf~δ²DηLχL§ΝΝ£kοQ_nΛT–uC½ΐ£aέJέ½68xνcΊ¨U‘Y“lkΎA“Μυ|S«^Τc3λu${΄J œ$.΄]`⅍ΫuΛ§e±y[κΝP*ο5~Gf@λzΎχΓ―η+žoξxF˜t―­-+p:ωΕS*7χνΛ4»ό­Ηχԫ׊Η7hβ‚IrηMΠ²ΧiŸΧmΊœ~ŠV>«l=tpτψ)φΕω!jλώ¦–J”“;NK^yQαυi φκwί―0χ9μI½ ³ΞCg  € €ύJ ²₯οˆΥ g’’;ο‘ώΗ’Θ?kٍ“Μϊ8έυΊ#9rΨάΜΐyΈέ¦υΕΉƒΊφνΨ€5KΎ©9χΤΔ!΄O«μ°b·0KκUωΣ5ΪaFκ΄n^P2ΞNψ|-jhrUρνˆΧΎΟ>N«Ά¬·n?!­{»ύl]Οχfψυ|C‡k΄ν3//_ωωΉζθΞΓcξY—ŸŸo_8jΈs±α±£NιΒΟemμβΨΊσŸ‰xu₯ξ~θe5Ϋ!ηΨ Ÿ·q«6ν07μλυ£g½=sgŠ›‚k—ιϋ+_0I­ΩήΤΉuοΔ¬œ!lŸΌgρφάμˆUβ΅/‡ν-ϋ!€ € pŠ\ζΌώStξ>=mωΜ š₯Φƒ¨fmxφΦ§§ιΣƒ—•iθΑ:ΥΥkεΊίͺΤά~Ϋ£UΊΉΊχρ§šCOγ=f}Z© @@$θ7I_’ΉvNq…V.ΉR/­Υ³«ΦͺNfτΠκŸθ†IfŸf­ωζUZQίωξiΉ³΄¬v  € Π7$}}γ˜ψQΚλ•eW‡+Ϊ·iΓCšUΉ*4ΟD@3^  € €τZΐMeI―χfǞ μ8M£Η”gΠΉ¬ž΅ννϊ€₯I―=ρ_ΊυGφόxι°fιPΛ”@@ΰ D΄τ½QΈQϊ :‡E@ΰT|ΎaΟ©8-ηD@ )"GοLА@@@ ―HϊϊJ’γ € € €I(ΠυύΆ‹¦Θ_dέΜό˜\»ή“ΆlOΒ" € € €@g$}gΛΓΕj¬•π…=ΌRΖ/~(Χ–ύa ™D@@HV8έ;Η©ύμHψZφΙ΅―Ω‰ίs¦όMΦ² € € €@”@LKŸά!0λN’kύreόz}`—qς―JωfyB@@Hz¨€ošόeωNΠο=–πY‹ΆΚυΓyζήr<@@@RE ²{ηθ³δ·ωZ•ρܚT)q"€ € €t"™τ?;°™O:ΠΙ,F@@HΘƒœΐν•«!P†Ρ7¨}ΙυςΛ$‚2Ν€ή-rηG)S@E@@Y 2ι;ζX nξΟgr±Ώlω=YF™ƒ;¦™B@@HjΘξoΥ‚5-z§&wύZξ93εΎηgA /LκR € € €€-™τνڝΣ#ω΄H’OΈWC$s € € €@ς D&}zFw±ϋΏψοςOΧQ‚αžŽi¦@@@RB ςš>²λΎ5rύΚά έγQϋM·4c‡\mζΊΎ3σœeΕμ’%H@@@ ’Zϊ,‚υΚΈu©2v:-~:½°#ασ6™Ά?”ŽN”@@HI—‰ΪŒό’Σƒ“ΞsΡωnj2Σ­rν3CynΩΉž9@R@ΰσ {R JBD@ΰΔtέW³acΗύϊNΜω9* € € €ΐ ˆΣ½σžC#€ € €œT’Ύ“ΚΝΙ@@@“+Ρ½sβu³OξΩ9 €'C ϊ“q΁ €@R Π—”ΥBP € € €@ߐτυ#GA@@’R€€/)«… @@@Ύ ιλGŽ‚ € €$₯I_RV A!€ € €}#@Χ7Ž@@HJˆ[6„"Μ­—LԞαƒ₯φv΅gψ4dWƒŠ_©ΣΐΠFL € € €$»@lK_v±ήύΚTν6 ŸIχ”qάgΚ0@‡FŸ«·Ύz…ΌΙ^"βC@@ Δ΄τ}<α"'±kΫ―σžώ³†ΆšΖΎαθέΛ/ΤΡΜQΪ^zΊΞί΄'t&@@@’W ͺ₯o°š‡eΩΡζ½ϋŠπY3oVρ‡με‡Ο8Λ΄ρ@@@H¨€/[ΗXa·jψξΓρŸΆο =ίξ’Άˆ5Μ € € €$«@d—9PmφΣ–“Ω7΅ρだ€ €  ΑLΞ‰΅­Y§™kψ€ΣΤ’7("ώγƒσǏΛ±†@@@dˆLϊtTٟ8WμνΎ¨LΗCQΦΞό°η<ν$ι Ή0 € €$·@Τθmυφί΅sκΉjΟ>[u_‘{½:2:_^;=όDcΆ|˜ά%":@@@@TKŸ©so.ήπwٝ9³†hoA α3]?‹Ÿ£r„φe@@@ Ι’Zϊœhμ|Sνά¬£ωÝρ\|^ ή{ Ι‹Bx € € €Ρq“>g££Τ΄+z{ζ@@@RH ¦{g ΕN¨ € € €έτuΔj@@@ •"Ίwϊ> •ΛBμ €Δ¨ŽΏ˜₯ €€ƒ-}ιPΛ”@@V€€/m«ž‚#€ € €@:τ₯C-SF@@H[’Ύ΄­z Ž € €ι @—΅L@@@ mHϊΆκ)8 € €€ƒ@Δ-Bφεkg}™φΜ–2ΪΥήή!#T4v“†6b@@@ Ωb[ϊŽΥζΊrν6 ŸIχ”‘Ωnʐ©C{Kτφ[SεMφ € € €@H ¦₯ογ:‰]ζΗ:·τy uKνGΟΧζwΗλhΫHνΨ=R睱7t&@@@’W ͺ₯/[Z²μhGœύΊπY3ƒήSρθCφςΓΝcLϋ@@@TˆJϊ<:ήf…έͺα9G"β4ΨIϊڏζΘή$b-3 € € €Ι(™τ΅T›έŒgώ‰\cb.π%c9ˆ @@@ Ž@0“sVeΠiφπœ§ι°Χιζάηxλ g2σΈΜe~<@@@R@ 2ι3έ:³³œ+φvοΈHΗC0·pψΧp{Ξ3¬‘€/δΒ € € άQ£wΆidα?΄sK‰Ϊ½…zλ\φ‰Žμ;]^;όDcΞψWr—ˆθ@@@BQ-}ζΚ=Ο&]tn½μΞœΗ†hοG„/σ€Š.|VΓ„φe@@@ Ι’Zϊœh yK₯Ÿίͺ£GreΫβς*ΫγŒή™δε!<@@@0ΈIŸ³ΎUƒ²›Β6e@@@ ΥbΊw¦Zˆ@@@ s’ΎΞmXƒ € €€Ό@DχΌWOωQ@@@Zϊ:,˜B@@ϊI_Ώ«R „ € €t$œτUd,Φc™?Υbט޽™B@@HjˆkϊΊŠ΄ΠU¬—G>ΧpΙaW›²@@@ Inι;ζά¦]mI8a € € €t/Πƒ€―ϋƒ± € € €@r ΔνήYζϊ–ξrO3έ9šh}jnί€.wrEN4 € € €έ Δ$}ΕEΊ?σKrR<―ZόYΚΝψœr»= € € €$›@TχΞ\έκžd'|>»ZrόfMoϋΏτPϋΏ’-nβA@@H@ *ι»BΩέ8}zΝ·TΟ°Κχ°8› € € €$—@T70Π­Σ§Cώπ@7is»7|Σ € € €) •τYΓΆX·<Θθƒ·lˆ\Κ € € €@2 Δ$}N°­:u‰ΖΉr"–0ƒ € € όQIίKϊ§έ­Σ£)ί E_ž1[ηF΅ό…V2 € € ΄Q·lψPΏo»Jݟ•'γΛzΡuΎΆϋ©8γτΐ΅~I[C@@ˆ#Υ'ΥΆ/ΦJί?νM³\…*±Ύjς;Wϋ΅ιhœΓ°@@@ ¬N›γt֎ ‹±Ts]£Μό!½κ«κΓΦ0‰ €@J ”˜Rα, €})Υ½3όΠ›΄Ί# _Α4 € € €@ŠΔtοL‘Έ @@@ ’ΎΨ@@HUˆkϊ†Ύ’ͺε n@:8΄cJ§λX €@ ₯―ΏΧ0εC@@΄ ιKλκ§π € € Πίb’Ύ/ΝΞΠϋŸϊρ7¬žŸ<@@@RY &ι»πb— Ξti|i*‹Ψ@@@,˜€οx›γσ„ € € κ1I_¨@δ/4Ο € € €@Κ dvqΦp—~ρŸ.•˜žΦ£υ€_όe»|·³=XŽ € € lΆτΉσœ„ΟΫβW«‰:k˜K³οvλ۟MΆ" € € €@g&}Φ[ŸmΧ¬ωνΊnA»vs1ύfFυμ “ε € € €@² tžτνσλΎΥ~'^Σ΅σΏŸr¦=.})ΩJA< € € €q:MϊΌϋΥΆΛΫ―ϋε΅ζΝ/φsΨ:&@@@’S Σ€/9Γ%*@@@žtšτeeG&B—<Φ"3ή§ύΉš9@@@$θ4ιsŸ™‘».ιˆψΫW9ΈψφϊυjΗb¦@@@’X ΣϋτY1O]θΦ9Sύrq© Η)Ελkƒ»$q‘ @@@ΐˆIϊŽ΅’:Σͺηsl)<Ώγ ›žπιG/C‡ € € *VFjΊRψJdάΓ€«.p)k ΄½Ξ―·Df@T8΄cJ*„IŒ €œ˜–Ύˆ³˜$ο™—C9aΔ*f@@@’_ Σ\’?t"D@@θN€€―;!Φ#€ € €),Ρ½sύπŽA[RΈL„Ž €@„ΐΔ³Μ € V΄τ₯UuSX@@H7’Ύt«qΚ‹ € €i%@—VΥMa@@@ έHϊ­Ζ)/ € €€•I_ZU7…E@@t ιK·§Ό € € V·lP±KΎ[ΜmŽω•±Δ―θ8΄/ΞP{ŽYWcώήN+' ‹ € €€€@dKίnΏ4Lςr©}FTy.1ΛF›e9.Ή>ŒZΗ, € € €@R D&}G€Œ-Nœώ)‘ν|ν—ζ?0-€ϋ’²,… € € %™τ™•?šΦ>λ1Β΄μ;“Κ ΄ς™ΩŒgλ«xB@@H^˜€Oζz½œ€Ϋ―rZχόW pΐ¬ΫšΌ…!2@@@HΨ€Ο¬ΟXhΝ;Χ\ίgζύ₯NςηzVΎH>ζ@@@δˆ›τιesέή1+pΣ­σ{ζο43ι3­|JξΒ € € €@€@ό€Οl“ρ†Σͺηhεϋ›•ς@@@H%N“>Χ"“ΌΠ/©T:bE@@\ Σ€OGLΟ–€Ξ~Σ΅³1Ν₯(> € € ‚'}¦0~S"Χ_ΐ%떐@@@eΖd›%ΉRϋμ ωέΦZp‰1b € € "1IŸΆ ωΖvDοzΕtσμ˜e @@@ …b’>ύΛ$yΉ&Ν3·hp½eZωžL‘* € € €@„@Dη?τUi₯Ή]CΨ&\Ν†Α$ € € bαω]Š…NΈ € € €έ τu'Δz@@@ …HϊRΈς@@θN€€―;!Φ#€ € €),@—Β•Gθ € € €@w$}έ ±@@Haˆ[6t”c‚όwKν%gJnk©OΪσΎ2~ω?εjθ؊)@@@δˆmι:Sν-Vϋω„―₯Ε”ΐd~§Sϋ½Ώ•|rˆθ@@@:b’>ά @³AKƒ2ξ™)χ·Ώ)χœο(c§•όε¨ύ[ίνΨ›)@@@€ˆμήi΅ςγqώp›TdΐR“;,}π‘tVŽ”7V~³…+©‹Ep € € €–@d——Ϋ‘rώU¦‹gΗlhʝg’A3Η΅}!&@@@dˆLϊBQϊδϊσ#r-›8Μ`.aL"€ € €Ι,™τ}r<k›\ο<*Χ–dΨ@@@ΊˆΘeΧ³ΚΨcnΟ ,΅ΟϋAμΎ—Ν‘š ±ΛY‚ € € ”‘-}Ϊ/ΧοTy…°₯LΎΥΏ—kΗ‡&πΑςηηKsλ†=#χŸ6&ea @@@ R ²₯ΟZW·BξŸ>nηk5·ησΘN‰ω3χμ³ΎcΝrmf—HBζ@@@δ°ξΌ`݁Α~ΌQtzpy?MώΌ,sΟΎCrνώ›΄kδzζ@HΟ7μI( @#Υ½3κ$[Φs?Ύ(f@@@Tˆνή™JΡ+ € € €@—$}]ς°@@Hmˆξ―›Ϊ₯!z@β T?o)Λ@H Zϊ’š)$ € €€«I_ΊΦ<εF@@΄ ιK‹j¦ € € $}ιZσ”@@B€€/-ͺ™B"€ € €@Ί τ₯kΝSn@@H ’Ύ΄¨f ‰ € €ι*@—5OΉ@@@ -Hϊ’š)$ € €€«I_ΊΦ<εF@@΄ ιK‹j¦ € € $}ιZσ”@@B ³³RΆ«έ%§«έlqtΞΨόΘ;Σb9 € € œ&}ΎQηθΓ±ωNΤνΩi’ΎΙY’B@@θD ΣΖ» ίρŽ]¬ζ> € € €)'ΠiηΝ*L摏hε i0 € €€Ž@'Iί 5$PŠVυΖζΤ)‘"€ € €„β'}YjΞvΆΈη=:ڞ @@@θ$ιhΪ)ΦΩίK‘β* € € €@€₯T³IDATΈ@όΡ;½§‹%Ω ‡b@@HEˆ€Οσ©XbF@ kκW³@ώ,Ώ{g.1eC@@H€€/*›’"€ € €@ϊ τ₯_Sb@@H#’Ύ4ͺlŠŠ € €ι'@—~uN‰@@@ Hϊ¨²)* € €€ŸI_ϊΥ9%F@@4 ιK£Κ¦¨ € € ~$}ιWη”@@H€€/*›’"€ € €@ϊ τ₯_Sb@@H#’Ύ4ͺlŠŠ € €ι'@—~uN‰@@@ Hϊ¨²)* € €€ŸI_ϊΥ9%F@@4 ιK£Κ¦¨ € € ~$}ιWη”@@H€€/*›’"€ € €@ϊ τ₯_Sb@@H#’Ύ4ͺlŠŠ € €ι'^δŒWŸe@@@ ΕhιKρ $|@@@ +’ΎtX‡ € €€ΈI_ŠW α#€ € €] t$}eUZ7ΰQ½>ΰ—ZΨιsΫ,ΧόN·a € € €@²t$}:ˆΙ£ΑDWžQ¬{ένμd#€ € €$@GWW§]~+0 \c:‰ΠμΣηί­†NΆ`1 € € €@ς„έ²a—>’O%r+Χε‘L87γV3Ÿ)―U-υoR™λ ;ςV~Υ'Oˆ@@@ °€―^»ύ^Ι•£‘³ΜζΓtϋrX;ϊ‡hiΫ¦Π!vϋ7‡¦™@@@H^°€OzΟΏΧDšc:xZWυhx0nΧιͺΠ•˜„Πzφ\Γ3 € € €@ D$}ϋόμP³L7Ξ™£Mς|ŒΤ…` θΥώƒ+xF@@HbŽ\LuώF™žζͺΎQϊΌk”™ςj£οοζy ΞΙΈ\gΊΜ€φj›υΔ@@@ ι"’>ι&₯3Χٚ1ΜL4i}{ZΜTΎYf·όωˆΞ„ € € QIίπϋLΨϋ~|­ώj­6j§Ι3Λ\Χg%}^½jS `„ˆ € € E%}Ϋ΄ΝίrΩΫώΎ™ώP[ύV[Ÿσ8δίœδ@@@ Ι’’>™Ϋ64Bφ™[œ[3Τ™›±΅38Ι3 € € €@’ Δ$}ΠΑ@ΘMz+Φš?§­Ο«ϊv†qIς:%<@@@ $`ΗiΨ ŸάΠ%™ El € € €Ž@LK_ΣΛ~ύΟνwnΡΰq©δό@Βgnαπτωτ Ν|Όv@@@”°ϊl†šξ†Ύψ΄i.™Α:ν{φ=ωrΔ*f@HC;¦€L¬Š €@_ Δtο ?Αϊυ‘|0|1Σ € € €)"Σ½3Eβ&L@@@Hϊ@b@@@ U"Ίwξά–!U Cά €Δ˜Έ#ήR–!€ ΄τ₯G=SJ@@HS’Ύ4­xŠ € €ι!@—υL)@@@ MHϊ΄β)6 € €€‡I_zΤ3₯D@@4 ιKӊ§Ψ € € ·l9[ςέeςAŸ_ΟJνΧΈδaΦϊΜ_‹_ξίωεΪښ @@@$ˆί—λ$yώQ.ωζ†%|nSŠa.΅6IKCX € € €ρ[ϊŽFl£ŒΗΫ•ρœeώo˜$p{δzζ@@@’S ~«λ™Ž„ΟZμϊ½ιΪΆžI@@@δˆί½3,ތ a3L"€ € €€”@·IŸ₯Ty@@@ L ϋ€/lc&@@@RK€€/΅κ‹h@@@ ΔOϊΒΊtϊ{t86F@@H&ψIŸΉeCp„NWΤν’)xbA@@θZ ώ-φω徍6ΎιX‹ € €$Ώ@ό–Ύδ›@@@ ιK‰M@@@T ιK՚#n@@@ ˆkϊό‡Ύšΐ.l‚ € € *΄τ₯JM' € € Π ’Ύ^ ±  € € *έ;ν ‡^₯φ»―3“>§ ™nινΗ”±f}ͺ”‰8@@@±I_^όgζG_dζIϊ"Q˜C@@’_ 6ιkxBξκχ€’Ά;Τ~z–Τv<ωKB„ € € €1qιΫ/Υ½"5˜ΏƒΗbv` € € €@κΔIϊR'x"E@@θZ€€―kΦ"€ € €)-@—ΥGπ € € €@Χ$}]ϋ°@@Hi’Ύ”>‚G@@Ί ιλΪ‡΅ € € €@J tτ΅΅9…γ>})]ɏ € €ι+Πeηz#GfΤyι+DΙ@@@Θμ2φMοK_-‘†“oυ#’Χg6ί«Œ-’kW—{²@@@ ΊlιSΓ―ε~πE'ΩsgI9σ7$ Β&@@@D\f#pΓ7ŠNNςŒ €@Ώψ|Þ~S ‚ €@OΊnιλιΡΨ@@@ ©Hϊ’ͺ:@@θ[’ΎΎυδh € € €@R DŒή9ρΊΩIΑ € Π'ΥτΙa8 €©(@K_*Φ1#€ € € τ%Εf € € €@* $œτyΟ’ήΏ|šφ”Šε$f@@@ -NϊŽŽw₯ΆνΔ € € €@jDφΩΜ:[{†X‹Ϊ5ζ '᳊‘σΦε΅₯Fˆ@@@ C 2ιΛt;έ:εΣ€ˆώœ4|kΗ^L!€ € €€„@dgZσœn΅Ή#γή²!r)s € € €Ι,™τ…"=Hώ‚ λΐˆΣ‚3<#€ € €€ˆ@dΧΊCΉŸX‘g©ρβσCE8>ΆT{³B³L € € €€ˆ@ΤθG5zΛΏ΄{β™:vϊΕΪxε™&  ύ§ηυK‘R& € € €€-Ωg ψΰE[“½²mΘ(ν΅ΎΆΓς‰}η>Ή| γΙk@@H¨–>'μΑ›Χkί‡ιpGς΅Κ³wΤ5~©R<βD@@[ ng“΄Πΰ¦ι­Cι@@@ˆιή™βε!|@@@0’Ύ0 &@@@ώ&Ρ½Σσύ­|”@©@W€–Ύτ­{JŽ € €i @—•L@@@ }Hϊ·ξ)9 € €€@Δ5}Ρε=~`ŠήϊϋhiΠ}ξΒΏŠ+ώ’…˜G@@’[ ±–ΎΆς'w9ˆ@@@ Ž@bIŸΩΡgg!€ € €$·@ΒI_rƒθ@@@⠐τΕSa € € ΠONϊΈ¦―ŸΤ8Ε@@@΄H,ιΛ<Ξ5}iυ² ° € € Π_ΊNϊΪέv93³χs»†ώRγ”@@J Λϋτ όΞaFξv8­P(, € € Π_ΊLϊ4p§Ξ*ΪΩ_ΚJ9@@@΄θ2ισξύ‚x€ŒΓ*ϋ¦<]wM;< Œ € €$»@—iάΡCωjn©ζύcδυ%{Qˆ@@@ Z Λ€/ΓέΨΎU™]n}Xζ@@@’A ΛξΓΞ~J_8;Β$@@@ήΠ~Χ5φA@@RD€€/E*Š0@@@ήτυF}@@@p™8ύ)+a"€ € €τP€–Ύ‚±9 € € J?ρF-‡l‚IENDB`‚milc-1.9.1/docs/installation.md000066400000000000000000000001701474512023100164160ustar00rootroot00000000000000MILC supports Python 3.6 or later. You can install MILC using standard python tooling: python3 -m pip install milc milc-1.9.1/docs/logging.md000066400000000000000000000050041474512023100153440ustar00rootroot00000000000000MILC comes with a robust logging system based on python's `logging` module. All you have to worry about are log messages, let MILC worry about presenting those messages to the user in configurable ways. ## Writing Log Entries A python [Logger Object](https://docs.python.org/3/library/logging.html#logger-objects) is available as `cli.log`. You can use this to write messages at various log levels: * `cli.log.debug()` * `cli.log.info()` * `cli.log.warning()` * `cli.log.error()` * `cli.log.critical()` * `cli.log.exception()` As is standard for the python logging module you can use [`printf`-style format string operations](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting) with these. Example: log.info('Hello, %s!', cli.config.general.name) ANSI color sequences are also available. For more information see the [ANSI Color](ANSI.md) page. ## Verbose Mode All MILC programs have `-v` and `--verbose` flags by default. When this flag is passed `DEBUG` level messages will be printed to the screen. If you want to use this flag in your program you can check `cli.config.general.verbose`. It is True when `-v`/`--verbose` is passed and False otherwise. ## Controlling Log Output Users have several CLI arguments they can pass to control the output of logs. These are automatically added to your program, you do not have to do anything to make them available: * `--datetime-fmt`, default: `%Y-%m-%d %H:%M:%S` * Default date/time format. * `--log-fmt`, default: `%(levelname)s %(message)s` * Format string for printed log output * `--log-file-fmt`, default: `[%(levelname)s] [%(asctime)s] [file:%(pathname)s] [line:%(lineno)d] %(message)s` * Format string for log file. * `--log-file`, default: None * File to write log messages to * `--color` and `--no-color` * Enable or disable ANSI color * `--unicode` and `--no-unicode` * Enable or disable unicode icons # Custom Loggers You may want to bypass MILC's logging and use your own logger instead. To do this use `cli.milc_options(logger=)`. This should be done before you call `cli()` or do anything else. Example: ```python import logging from milc import cli @cli.entrypoint('Hello, World!') def hello(cli): cli.log.info('Hello, World!') if __name__ == '__main__': my_logger = logging.getLogger('my-program') # Configure my_logger the way you want/need here cli.milc_options(logger=my_logger) cli() ``` !!! warning You should only call `cli.milc_options()` one time during your program's execution. milc-1.9.1/docs/metadata.md000066400000000000000000000017661474512023100155110ustar00rootroot00000000000000# MILC Metadata In order to initialize some things, such as the configuration file location and the version number reported by `--version`, MILC needs to know some basic information before the entrypoint is called. You can use `cli.milc_options()` to set this information. Example: ```python from milc import cli cli.milc_options(name='Florzelbop', version='1.0.0', author='Jane Doe') ``` You should only do this once, and you should do it as early in your program's execution as possible. !!! warning If you have spread your program among several files, or you are using `milc.subcommand.config`, you need to use `cli.milc_options()` before you import those modules. ## Custom Loggers You can also use this to pass in custom loggers. ```python from milc import cli from my_program import custom_logger cli.milc_options(logger=custom_logger) ``` ## Deprecated: set_metadata() Earlier versions of MILC used `milc.set_metadata` instead. This is still supported but will throw a Deprecation warning. milc-1.9.1/docs/sparklines.md000066400000000000000000000047041474512023100160770ustar00rootroot00000000000000# Sparklines A sparkline is a tool for displaying numerical information in a very compact format. You can read more about the general concept on [the Wikipedia page](https://en.wikipedia.org/wiki/Sparkline) and read about Unicode sparklines specifically in [an article by Jon Udell](https://blog.jonudell.net/2021/08/05/the-tao-of-unicode-sparklines/). ## Usage Basic usage of a sparkline is simple: ```python from milc import sparkline print(sparkline([5, 9, 2, 3, 6, 9, 3, 5, 6]) ``` This will output the following text: ``` β–†β–ƒβ–„β–‡β–„β–†β–‡ ``` ## Whitespace Any item in your sparkline sequence that is not a number (`int`, `float`, or `decimal.Decimal`) will be rendered as a blank space. It is recommended that you consistently use the same object for this purpose, I prefer `None`. Input: ```python from milc import sparkline print(sparkline([3, 7, None, 2, 1]) ``` Output: ``` β–ƒβ–ˆ ▂▁ ``` ## Color MILC supports coloring your sparkline in two different ways. You can combine these for a total of 4 colors per sparkline. ### Negative and Positive Numbers By default your sparkline will be un-colored for positive numbers and red for negative numbers. You can change the colors for these by passing the following parameters: * `negative_color` * `negative_reset` * `positive_color` * `positive_reset` These accept [MILC color codes](ANSI.md#available-colors). ### Highlight Color If you want to highlight datapoints that higher or lower than a threshold you can do so by passing in `highlight_low`, `highlight_high`, and the associated color codes. These accept [MILC color codes](ANSI.md#available-colors). You will need to set a color for your highlight, one is not set by default. The correct arguments to pass for each are listed below. By default the reset codes are set to `{fg_reset}`. If you are setting other attributes too you will need to adjust this by passing the correct reset code as well. * `highlight_low`: `highlight_low_color` and `highlight_low_reset` * `highlight_high`: `highlight_high_color` and `highlight_high_reset` ## Optimization If you need to optimize the performance of a sparkline, or you want to set the boundaries for your data, you can supply min and max values when creating your sparkline. This will avoid two iterations over the list to find min and max values. ```python from milc import sparkline print(sparkline([5, 9, 2, 3, 6, 9, 3, 5, 6], 2, 9) ``` Any values that fall outside your min and max will be ignored. milc-1.9.1/docs/spinners.md000066400000000000000000000034161474512023100155640ustar00rootroot00000000000000# Spinners Spinners let you tell the user that something is happening while you're processing. There are 3 basic ways to use a spinner: * Instantiating a spinner and then using `.start()` and `.stop()` on your object. * Using a context manager (`with cli.spinner(...):`) * Decorate a function (`@cli.spinner(...)`) For full details see the [`cli.spinner` api reference](api_milc.md#spinner). ### Adding a Spinner If you'd like to create your own spinner animation you can do that. First you should define a dictionary with two keys, `interval` and `frames`: ```python my_spinner = { 'interval': 100, # How many ms to display each frame 'frames': ['-', '\\', '|', '/'] } ``` You can use this in one of two ways- by passing it directly to `cli.spinner()` or by adding it to the list of available spinners using `cli.add_spinner()`. ### Example: Using a custom spinner directly ```python my_spinner = { 'interval': 100, # How many ms to display each frame 'frames': ['-', '\\', '|', '/'] } with cli.spinner(text='Loading', spinner=my_spinner): time.sleep(10) ``` ### Example: Adding a custom spinner ```python my_spinner = { 'interval': 100, # How many ms to display each frame 'frames': ['-', '\\', '|', '/'] } cli.add_spinner('my_twirl', my_spinner) with cli.spinner(text='Loading', spinner='my_twirl'): time.sleep(10) ``` ### Example: Instantiating a Spinner ```python spinner = cli.spinner(text='Loading', spinner='dots') spinner.start() # Do something here spinner.stop() ``` ### Example: Using a Context Manager ```python with cli.spinner(text='Loading', spinner='dots'): # Do something here ``` ### Example: Decorating a Function ```python @cli.spinner(text='Loading', spinner='dots') def long_running_function(): # Do something here ``` milc-1.9.1/docs/stylesheets/000077500000000000000000000000001474512023100157515ustar00rootroot00000000000000milc-1.9.1/docs/stylesheets/milc.css000066400000000000000000000001611474512023100174050ustar00rootroot00000000000000.md-nav__list { padding-left: 0.5rem; } .md-grid { max-width: initial; } .md-footer { display: none; } milc-1.9.1/docs/subcommand_config.md000066400000000000000000000066041474512023100174020ustar00rootroot00000000000000# MILC config subcommand This document explains how the available `config` subcommand works. # Introduction Configuration for MILC applications is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set. You can provide your users with a subcommand for managing this configuration by importing the config subcommand: `import milc.subcommand.config` !!! warn This must be imported after `cli.milc_options()` is used. Read on to see how users can utilize this subcommand. ## Simple Example As an example let's look at the command `my_cli foo --arg1 bar --arg2 bat`. There are two command line arguments that could be read from configuration instead: * `foo.arg1` * `foo.arg2` Let's set these now: ``` $ my_cli config foo.arg1=bar foo.arg2=bat foo.arg1 None -> bar foo.arg2 None -> bat i Wrote configuration to '/Users/example/Library/Application Support/my_cli/my_cli.ini' ``` Now I can run `my_cli foo` without specifying `--arg1` and `--arg2` each time. ## Setting User Defaults Sometimes you want to share a setting between multiple subcommands. For example, multiple commands take the argument `--arg1`. Rather than setting this value for every command you can set a user value which will be used by any command that takes that argument. Example: ``` $ my_cli config user.arg1=baz user.arg1: None -> baz β„Ή Wrote configuration to '/Users/example/Library/Application Support/my_cli/my_cli.ini' ``` # Subcommand reference (`config`) The `config` subcommand is used to interact with the underlying configuration. When run with no argument it shows the current configuration. When arguments are supplied they are assumed to be configuration tokens, which are strings containing no spaces with the following form: [.][=] ## Setting Configuration Values You can set configuration values by putting an equal sign (=) into your config key. The key must always be the full `
.` form. Example: ``` $ my_cli config user.arg1=default user.arg1: None -> default β„Ή Wrote configuration to '/Users/example/Library/Application Support/my_cli/my_cli.ini' ``` ## Reading Configuration Values You can read configuration values for all set options, the entire configuration, a single key, or for an entire section. You can also specify multiple keys to display more than one value. ### All Set Options Example my_cli config ### Entire Configuration Example my_cli config -a ### Whole Section Example my_cli config general ### Single Key Example my_cli config general.verbose ### Multiple Keys Example my_cli config user general.verbose general.log_format ## Deleting Configuration Values You can delete a configuration value by setting it to the special string `None`. Example: ``` $ my_cli config general.log_format None general.log_format: %H:%M:%S -> None β„Ή Wrote configuration to '/Users/example/Library/Application Support/my_cli/my_cli.ini' ``` ## Multiple Operations You can combine multiple read and write operations into a single command. They will be executed and displayed in order: ``` $ my_cli config foo user.arg1=default foo.arg2=None foo.arg3=peep user.arg1: None -> default foo.arg2: bar -> None β„Ή Wrote configuration to '/Users/example/Library/Application Support/my_cli/my_cli.ini' ``` milc-1.9.1/docs/subprocesses.md000066400000000000000000000060001474512023100164330ustar00rootroot00000000000000# Executing commands in a subprocess MILC provides some tools to make running subcommands easier and more convienent to work with. ## Basic Subprocess Execution You can use `cli.run()` to easily and safely run shell commands. The first argument to `cli.run()` should be an argument list, which is a list or tuple containing the command and any arguments you want to pass in. For example, if you wanted to run a git command you might build this argument list: ```python git_cmd = ['git', '-C', '/srv/web/htdocs', 'pull'] ``` This is all you need to do to run that command: ```python p = cli.run(git_cmd) ``` This will return a [subprocess.CompletedProcess](https://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcess) instance. You can examine attributes such as `p.returncode`, `p.stderr`, and `p.stdout` to see the fate of the process. ## Supported Arguments | Argument | Default | Description | |----------|---------|-------------| | `command` | | A sequence of arguments for the command to be run. The first element is the command to be executed. | | `capture_output` | `True` | When `False` output from the subprocess is written directly to STDOUT and STDERR. | | `combined_output` | `False` | When `True` STDERR will be combined with STDOUT. | | `text` | `True` | When `False` STDOUT and STDERR will return binary data. | | `**kwargs` | | Any unrecognized argument will be passed to `subprocess.run()` | ## Differences from subprocess.run MILC's `cli.run()` differs from `subprocess.run()` in some important ways. ### Windows Support When running inside a windows console (Powershell, DOS, Cygwin, Msys2) there are some quirks that MILC attempts to handle but which you need to be aware of: * Commands are always run in a subshell, so that non-executable files and POSIX paths work seemlessly. * Windows leaves stdin in a broken state after executing a subprocess. To avoid this MILC adds `stdin=DEVNULL` to the `subprocess.run()` call. If you need stdin to work in your executed process you can pass `stdin=None`. ### Building argument lists The most important way MILC differs from `subprocess.run()` is that it only accepts commands that have already been split into sequences. A lot of bugs are caused by mistakes in building command strings that are later split into a sequence of arguments in unexpected ways. ### Capture Output By default `cli.run()` captures STDOUT and STDERR. If you'd like that output to be written to the terminal instead you can pass `capture_output=False`. ### Combining STDERR with STDOUT If you'd like to combine STDOUT and STDERR into one stream (similar to the shell construct `2>&1`) you can pass `combined_output=True`. ### Text Encoding By default STDOUT and STDERR will be opened as text. If you'd like these to be bytes instead of text you can pass `text=False`. ### Other Arguments All other arguments are passed directly to [`subprocess.run()`](https://docs.python.org/3/library/subprocess.html#subprocess.run). You can use these to further tweak the behavior of your subprocesses. milc-1.9.1/docs/threading.md000066400000000000000000000015721474512023100156710ustar00rootroot00000000000000# Thread Safety MILC provides a locking mechanism you can interact with for thread safety. It will acquire and release that lock when changing any objects in memory. You can utilize this same mechanism in your own programs as needed. Under the hood it uses an [RLock object](https://docs.python.org/3.8/library/threading.html#rlock-objects) to do the locking. ## Acquire You can use `cli.acquire_lock(blocking=True)` to prevent all write operations from happening. Other threads that want to make any changes will block until they can acquire the lock, so it's important not to hold the lock longer than necessary. When invoked with the blocking argument set to False the call will always return right away. It will return True when the lock has been acquired and False otherwise. ## Release The `cli.release_lock()` function will release the lock so another thread can acquire it. milc-1.9.1/docs/tutorial.md000066400000000000000000000207351474512023100155710ustar00rootroot00000000000000# MILC Tutorial MILC is a framework for writing CLI tools. It's goal is to make getting started easy and to grow with your program as it grows. MILC is Batteries Included- it gives you all the functionality that your users demand out of the box. Argument parsing, configuration files, flexible and configurable log output, ANSI colors, spinners, and other nicities are combined into one easy to use module. ## Minimal Example MILC works by registering functions as either the entrypoint or a subcommand. The entrypoint can be thought of as your `main()`, or the place where program execution begins. A minimal MILC program looks like this: ```python #!/usr/bin/env python3 """Hello World implementation using MILC. PYTHON_ARGCOMPLETE_OK """ from milc import cli @cli.entrypoint('Greet a user.') def main(cli): cli.log.info('Hello, World!') if __name__ == '__main__': cli() ``` ## Quick Program Overview Before we dive into the features our program is using let's take a look at the general structure of a MILC program. We start by importing the `cli` object- this is where most of MILC's functionality is exposed and where a lot of important state tracking happens. Next, we've decorated our main function with `cli.entrypoint()`. This is how we tell MILC what function to execute and set the help text for our program. Inside our `main()` function we print a simple message to the log file, which by default is also printed to the user's screen. Finally, we execute our `cli()` program inside the familiar `if __name__ == '__main__':` guard. ## Logging and Printing MILC provides two mechanisms for outputting text to the user, and which one you use depends a lot on the needs of your program. Both use the same API so switching between them should be simple. For writing to stdout you have `cli.echo()`. This differs from python `print()` in two important ways- It supports tokens for colorizing your text using [ANSI](ANSI.md) and it supports format strings in the same way as [logging](https://docs.python.org/3/library/logging.html). For writing to stderr and/or log files you have `cli.log`. You can use these to output log messages at different levels so the CLI user can easily adjust how much output they get. ANSI color tokens are also supported in log messages on the console, and will be stripped out of log files for easy viewing. You can still use python's built-in `print()` if you wish, but you will not get ANSI or string formatting support. More information: * [ANSI Color](ANSI.md) * [Logging](logging.md) ## Entrypoints MILC does the work of setting up your execution environment then it hands off control to your entrypoint. There are two types of entrypoints in MILC- the root entrypoint and subcommand entrypoints. When you think of subcommands think of programs like git, where the first argument that doesn't start with a dash indicates what mode the program is operating in. MILC entrypoints are python callables that take a single argument- `cli`. When you call `cli()` at the end of your script it will determine the correct entrypoint to call based on the arguments the user passed. ## Configuration and Argument Parsing MILC unifies arguments and configuration files. This unified config can be accessed under `cli.config`. You can access this as attributes or dictionaries. These two lines are equivalent, and will return True when the user passes `-v` or `--verbose`: cli.config.general.verbose cli.config['general']['verbose'] Under the hood MILC uses [ConfigParser](https://docs.python.org/2/library/configparser.html) to read and write configuration files. If you are not familiar with ConfigParser this is a sample config file: ``` [general] verbose=true ``` MILC maps all of the arguments for the root entrypoint into the general section. Subcommand arguments are mapped into their own section. We'll talk about this more when we introduce subcommands, for now you just need to understand that arguments are added to the general section. Building on our program from earlier we can make our program more flexible about who it is greeting by adding a new flag, `--name`, or `-n` for short: ```python #!/usr/bin/env python3 """Hello World implementation using MILC. PYTHON_ARGCOMPLETE_OK """ from milc import cli @cli.argument('-n', '--name', help='Name to greet', default='World') @cli.entrypoint('Greet a user.') def main(cli): cli.log.info('Hello, %s!', cli.config.general.name) if __name__ == '__main__': cli() ``` One important thing to note is that decorators are processed from the bottom to the top. You must place `@cli.entrypoint` directly above the function definition, and then place any `cli.argument()` decorators above that to avoid a stack trace. More information: * [Argument Parsing](argument_parsing.md) * [Configuration](configuration.md) ## Subcommands A lot of programs use a mode of operation where the first argument that doesn't begin with `-` or `--` is a subcommand. Popular version control programs such as `git` and `svn` are the most well known example of this pattern. MILC uses argparser's native subcommand support to implement this for you. To use it you designate functions as subcommand entrypoints using `cli.subcommand`. Let's extend our program from earlier to use subcommands: ```python #!/usr/bin/env python3 """Example MILC program that shows off many features. PYTHON_ARGCOMPLETE_OK """ from milc import cli @cli.argument('-n', '--name', help='Name to greet', default='World') @cli.entrypoint('Greet a user.') def main(cli): cli.log.info('No subcommand specified!') cli.print_usage() @cli.subcommand('Say hello.') def hello(cli): cli.echo('{fg_green}Hello, %s!', cli.config.general.name) @cli.subcommand('Say goodbye.') def goodbye(cli): cli.echo('{fg_blue}Goodbye, %s!', cli.config.general.name) if __name__ == '__main__': cli() ``` ## Configuration and Subcommands Each subcommand gets its own section in the configuration. You can access a subcommand's config with `cli.config.`. Options for the root entrypoint can be found in the `cli.config.general` section of the config. We add flags to our subcommands by decorating them with `@cli.argument`: ```python @cli.argument('--comma', help='comma in output', action='store_boolean', default=True) ``` ## User Controlled Configuration Using the built-in `config` subcommand our user can permanently set certain options so they don't have to type them in each time. We do this by adding a single line to our program, `import milc.subcommand.config`. Let's take a look at our final program: ```python #!/usr/bin/env python3 """Example MILC program that shows off many features. PYTHON_ARGCOMPLETE_OK """ from milc import cli import milc.subcommand.config @cli.argument('-n', '--name', help='Name to greet', default='World') @cli.entrypoint('Greet a user.') def main(cli): cli.log.info('No subcommand specified!') cli.print_usage() @cli.argument('--comma', help='comma in output', action='store_boolean', default=True) @cli.subcommand('Say hello.') def hello(cli): comma = ',' if cli.config.hello.comma else '' cli.echo('{fg_green}Hello%s %s!', comma, cli.config.general.name) @cli.argument('-f', '--flag', help='Write it in a flag', action='store_true') @cli.subcommand('Say goodbye.') def goodbye(cli): if cli.config.goodbye.flag: cli.log.debug('Drawing a flag.') colors = ('{bg_red}', '{bg_lightred_ex}', '{bg_lightyellow_ex}', '{bg_green}', '{bg_blue}', '{bg_magenta}') string = 'Goodbye, %s!' % cli.config.general.name for i, letter in enumerate(string): color = colors[i % len(colors)] cli.echo(color + letter + ' '*39) else: cli.log.warning('Parting is such sweet sorrow.') cli.echo('{fg_blue}Goodbye, %s!', cli.config.general.name) if __name__ == '__main__': cli() ``` ## Example Output Now that we've written our program and we have a better idea what is going on, let's explore how it works. We'll start by demonstrating it with no arguments passed. ![Simple Output](images/tutorial_example1.png) We'll demonstrate entering a subcommand here: ![Hello Output](images/tutorial_example2.png) So far so good. Now let's take a look at the help output: ![Help Output](images/tutorial_example3.png) Finally, let's combine it all together to demonstrate the use of both general and subcommand flags: ![Flag Output](images/tutorial_example4.png) ## Doing More Our program does a lot in only a few lines, but there's a lot more you can do. Explore the rest of the documentation to see everything MILC can do. milc-1.9.1/example000077500000000000000000000050321474512023100140260ustar00rootroot00000000000000#!/usr/bin/env python3 """Example MILC program that shows off many features. PYTHON_ARGCOMPLETE_OK """ import os from milc import cli cli.milc_options(name='example', author='Milc Milcenson', version='1.9.1') # This needs to be imported after we use cli.milc_options() import milc.subcommand.config # noqa def EnvironCompleter(**kwargs): """Example argument completer. """ return os.environ @cli.argument('-n', '--name', help='Name to greet', default='World') @cli.entrypoint('Greet a user.') def main(cli): cli.log.info('No subcommand specified!') cli.print_usage() @cli.argument('-n', '--dashed-name', help='Name to greet', default='World') @cli.subcommand('Subcommand with dash in the name.') def dashed_hello(cli): cli.echo('Hello, dashed-subcommand %s!', cli.config.dashed_hello.dashed_name) @cli.argument('--print-usage', action='store_true', help='Show a usage summary') @cli.argument('--print-help', action='store_true', help='Alias for --help') @cli.argument('--comma', help='comma in output', action='store_boolean', default=True) @cli.argument('--count', help='Number of times to say hello', type=int, default=1) @cli.subcommand('Say hello.') def hello(cli): """Say hello. """ # print_usage and print_help are here to help us test. if cli.config.hello.print_usage: cli.print_usage() return True if cli.config.hello.print_help: cli.print_help() return True comma = ',' if cli.config.hello.comma else '' for i in range(cli.config.hello.count): cli.echo('{fg_green}Hello%s %s!', comma, cli.config.general.name) @cli.argument('-e', '--env', completer=EnvironCompleter, help='Environment Variable') @cli.argument('-f', '--flag', help='Write it in a flag', action='store_true') @cli.subcommand('Say goodbye.') def goodbye(cli): if cli.config.goodbye.flag: cli.log.debug('Drawing a flag.') colors = ('{bg_red}', '{bg_lightred_ex}', '{bg_lightyellow_ex}', '{bg_green}', '{bg_blue}', '{bg_magenta}') string = 'Goodbye, %s!' % cli.config.general.name for i, letter in enumerate(string): color = colors[i % len(colors)] cli.echo(color + letter + ' '*39) else: cli.log.warning('Parting is such sweet sorrow.') cli.echo('{fg_blue}Goodbye, %s!', cli.config.general.name) @cli.subcommand('Show the configured config file and directory.') def config_file(cli): cli.echo(f'cli.config_file={cli.config_file}') cli.echo(f'cli.config_dir={cli.config_dir}') if __name__ == '__main__': cli() milc-1.9.1/generate_docs000077500000000000000000000027361474512023100152050ustar00rootroot00000000000000#!/usr/bin/env python3 """Generate our documentation using pydoc-markdown PYTHON_ARGCOMPLETE_OK """ import os from pathlib import Path from subprocess import CalledProcessError from milc import cli cli.milc_options(name='generate_docs', author='MILC', version='1.9.1') @cli.argument('--commit', arg_only=True, action='store_true', help='Commit changes to git.') @cli.entrypoint('Generate documentation.') def main(cli): doc_path = Path('docs') doc_files = [] for file in Path('milc').glob('**/*.py'): if file.name == '__init__.py': continue # Generate the markdown module_name = str(file)[5:-3] module_name = module_name.replace('/', '.') cmd = ['pydoc-markdown', '-I', 'milc', '-m', module_name] try: result = cli.run(cmd, check=True) except CalledProcessError as e: cli.log.error('Could not process file %s: %s', file.name, e) for line in e.stderr.split('\n'): cli.log.debug(line) continue # Write the markdown to a file filename = f"api_{module_name.replace('.', '_')}.md" doc_files.append((module_name, filename)) doc_file = doc_path / filename doc_file.write_text(result.stdout) if cli.args.commit: cli.run(['git', 'add', 'docs'], capture_output=False) cli.run(['git', 'commit', '-m', '[ci] Updated API documentation'], capture_output=False) if __name__ == '__main__': cli() milc-1.9.1/hello000077500000000000000000000011761474512023100135030ustar00rootroot00000000000000#!/usr/bin/env python3 """Hello World implementation using MILC. PYTHON_ARGCOMPLETE_OK """ from milc import cli @cli.argument('-c', '--comma', arg_only=True, help='comma in output', default=True, action='store_boolean') @cli.argument('-n', '--name', help='Name to greet', default='World') @cli.entrypoint('Greet a user.') def main(cli): comma = ',' if cli.args.comma else '' cli.log.debug('You used -v you lucky person!') cli.log.info('Hello%s %s, from cli.log.info!', comma, cli.config.general.name) cli.echo('{fg_red}Hello%s %s, from cli.echo!', comma, cli.config.general.name) if __name__ == '__main__': cli() milc-1.9.1/milc-color000077500000000000000000000024711474512023100144370ustar00rootroot00000000000000#!/usr/bin/env python3 """Show all the colors available to us. PYTHON_ARGCOMPLETE_OK """ from milc import cli colors = ('black', 'blue', 'cyan', 'green', 'magenta', 'red', 'white', 'yellow') @cli.entrypoint('Show all the colors available to us.') def main(cli): cli.echo('|Normal | FG | ExtFG | BG | ExtBG |') for color in colors: cli.echo(f'|{color:8}|{{fg_{color}}}xxxxxxxx{{fg_reset}}|{{fg_light{color}_ex}}xxxxxxxx{{fg_reset}}|{{bg_{color}}}xxxxxxxx{{bg_reset}}|{{bg_light{color}_ex}}xxxxxxxx{{bg_reset}}|') print() cli.echo('|Bright | FG | ExtFG | BG | ExtBG |') for color in colors: cli.echo(f'|{color:8}|{{style_bright}}{{fg_{color}}}xxxxxxxx{{style_reset_all}}|{{style_bright}}{{fg_light{color}_ex}}xxxxxxxx{{style_reset_all}}|{{style_bright}}{{bg_{color}}}xxxxxxxx{{style_reset_all}}|{{style_bright}}{{bg_light{color}_ex}}xxxxxxxx{{style_reset_all}}|') print() cli.echo('|Dim | FG | ExtFG | BG | ExtBG |') for color in colors: cli.echo(f'|{color:8}|{{style_dim}}{{fg_{color}}}xxxxxxxx{{style_reset_all}}|{{style_dim}}{{fg_light{color}_ex}}xxxxxxxx{{style_reset_all}}|{{style_dim}}{{bg_{color}}}xxxxxxxx{{style_reset_all}}|{{style_dim}}{{bg_light{color}_ex}}xxxxxxxx{{style_reset_all}}|') if __name__ == '__main__': cli() milc-1.9.1/milc/000077500000000000000000000000001474512023100133715ustar00rootroot00000000000000milc-1.9.1/milc/__init__.py000066400000000000000000000034101474512023100155000ustar00rootroot00000000000000#!/usr/bin/env python3 # coding=utf-8 """MILC - A CLI Framework PYTHON_ARGCOMPLETE_OK MILC is an opinionated framework for writing CLI apps. It optimizes for the most common unix tool pattern- small tools that are run from the command line and generally do not feature any user interaction while they run. For more details see the MILC documentation: """ __VERSION__ = '1.9.1' import logging import os import sys import warnings from typing import Any, Optional from .emoji import EMOJI_LOGLEVELS from .milc import MILC from .milc_interface import MILCInterface if 'MILC_IGNORE_DEPRECATED' not in os.environ: for name in ('MILC_APP_NAME', 'MILC_APP_VERSION', 'MILC_APP_AUTHOR'): if name in os.environ: warnings.warn(f'Using environment variable {name} is deprecated and will not be supported in the future, please use cli.milc_options() instead.', stacklevel=2) cli = MILCInterface() def set_metadata( *, name: Optional[str] = None, author: Optional[str] = None, version: Optional[str] = None, logger: Optional[logging.Logger] = None, ) -> MILCInterface: """Set metadata about your program. Deprecated: Use `cli.milc_options()` instead. This allows you to set the application's name, version, and/or author before executing your entrypoint. You can also pass your own logger here if you like. It's best to run this only once, and it must be run before you call `cli()`. """ warnings.warn("milc.set_metadata has been deprecated, please use cli.milc_options() instead.", stacklevel=2) cli.milc_options(name=name, author=author, version=version, logger=logger) return cli # Extra stuff people can import from ._sparkline import sparkline # noqa milc-1.9.1/milc/_in_argv.py000066400000000000000000000013351474512023100155310ustar00rootroot00000000000000import sys from typing import Optional def _in_argv(argument: str) -> bool: """Returns true if the argument is found is sys.argv. Since long options can be passed as either '--option value' or '--option=value' we need to check for both forms. """ for arg in sys.argv: if arg.split('=')[0] == argument: return True return False def _index_argv(argument: str) -> Optional[int]: """Returns the location of the argument in sys.argv, or None. Since long options can be passed as either '--option value' or '--option=value' we need to check for both forms. """ for i, arg in enumerate(sys.argv): if arg.split('=')[0] == argument: return i return None milc-1.9.1/milc/_sparkline.py000066400000000000000000000116351474512023100161000ustar00rootroot00000000000000#!/usr/bin/env python3 """Display sparklines from a sequence of numbers. """ from decimal import Decimal from math import inf from typing import Any, List, Optional from milc import cli spark_chars = 'β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆ' def is_number(i: Any) -> bool: """Returns true if i is a number. Used to filter non-numbers from a list. """ return isinstance(i, (int, float, Decimal)) def sparkline( number_list: List[Optional[int]], *, min_value: Optional[int] = None, max_value: Optional[int] = None, highlight_low: float = -inf, highlight_high: float = inf, highlight_low_color: str = '', highlight_high_color: str = '', negative_color: str = '{fg_red}', positive_color: str = '', highlight_low_reset: str = '{fg_reset}', highlight_high_reset: str = '{fg_reset}', negative_reset: str = '{fg_reset}', positive_reset: str = '{fg_reset}', ) -> str: """Display a sparkline from a sequence of numbers. If you wish to exclude extreme values, or you want to limit the set of characters used, you can adjust `min_value` and `max_value` to your own values. Values between your actual min/max will exclude datapoints, while values outside your actual min/max will compress your data into fewer sparks. If you want to highlight data that is too low or too high you can use 'highlight_low' and `highlight_high` to set this. You will also need to set your colors, see below for more details. By default this function will display negative numbers in red and positive numbers in the system default color. You can use `negative_color`, `negative_reset`, `positive_color`, and `positive_reset` to change this behavior. If you wish to color your sparkline according to other rules it is recommended to generate it without color and then add color yourself. ### Arguments min_value The lowest value in your sparkline. If not provided it will be determined automatically. max_value The highest value in your sparkline. If not provided it will be determined automatically. highlight_low When a number is less than this value it will be highlighted with `highlight_low_color`. highlight_high When a number is greater than this value it will be highlighted with `highlight_high_color`. highlight_low_color A MILC or ANSI color code to apply to integers greater than highlight_low. highlight_high_color A MILC or ANSI color code to apply to integers greater than highlight_high. negative_color A MILC or ANSI color code to apply to integers less than 0. positive_color A MILC or ANSI color code to apply to integers greater than 0. highlight_low_reset A MILC or ANSI color code to reset the color code applied in `highlight_low_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. highlight_high_reset A MILC or ANSI color code to reset the color code applied in `highlight_high_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. negative_reset A MILC or ANSI color code to reset the color code applied in `negative_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. positive_reset A MILC or ANSI color code to reset the color code applied in `positive_color`. This is usually `{fg_reset}`, `{bg_reset}`, or `{style_reset_all}`. """ if min_value is None: min_value = min(filter(is_number, number_list)) # type: ignore[type-var] if max_value is None: max_value = max(filter(is_number, number_list)) # type: ignore[type-var] int_range = max_value - min_value # type: ignore[operator] sparks = [] for i in number_list: # Handle non-numeric and out-of-bounds values if not is_number(i): sparks.append(' ') continue if i < min_value or i > max_value: # type: ignore[operator] cli.log.debug('Skipping out of bounds value %s', i) continue # Determine the bucket for this value spark_int = (i-min_value) / int_range * 8 # type: ignore[operator] if spark_int > 7: spark_int = 7 # Determine the color for this value color = positive_color reset = positive_reset if i < 0: # type: ignore[operator] color = negative_color reset = negative_reset if i < highlight_low: # type: ignore[operator] color = highlight_low_color reset = highlight_low_reset if i > highlight_high: # type: ignore[operator] color = highlight_high_color reset = highlight_high_reset if color == '': reset = '' # Add this spark to the list sparks.append(''.join((color, spark_chars[int(spark_int)], reset))) return ''.join(sparks) milc-1.9.1/milc/ansi.py000066400000000000000000000036451474512023100147050ustar00rootroot00000000000000"""ANSI color support for MILC. """ import sys import re import logging import colorama from typing import Any from .emoji import EMOJI_LOGLEVELS ansi_config = { 'color': True, 'unicode': sys.stdout.encoding.lower().startswith('utf'), } # Regex was gratefully borrowed from kfir on stackoverflow: # https://stackoverflow.com/a/45448194 ansi_regex = r'\x1b(' \ r'(\[\??\d+[hl])|' \ r'([=<>a-kzNM78])|' \ r'([\(\)][a-b0-2])|' \ r'(\[\d{0,2}[ma-dgkjqi])|' \ r'(\[\d+;\d+[hfy]?)|' \ r'(\[;?[hf])|' \ r'(#[3-68])|' \ r'([01356]n)|' \ r'(O[mlnp-z]?)|' \ r'(/Z)|' \ r'(\d+)|' \ r'(\[\?\d;\d0c)|' \ r'(\d;\dR))' ansi_escape = re.compile(ansi_regex, flags=re.IGNORECASE) ansi_styles = ( ('fg', colorama.ansi.AnsiFore()), ('bg', colorama.ansi.AnsiBack()), ('style', colorama.ansi.AnsiStyle()), ) ansi_colors = {} for prefix, obj in ansi_styles: for color in [x for x in obj.__dict__ if not x.startswith('_')]: ansi_colors[prefix + '_' + color.lower()] = getattr(obj, color) def format_ansi(text: str) -> str: """Return a copy of text with certain strings replaced with ansi. """ # Avoid .format() so we don't have to worry about the log content for color in ansi_colors: text = text.replace('{%s}' % color, ansi_colors[color]) text = text + ansi_colors['style_reset_all'] if ansi_config['color']: return text return ansi_escape.sub('', text) class MILCFormatter(logging.Formatter): """Formats log records per the MILC configuration. """ def format(self, record: Any) -> Any: if ansi_config['unicode'] and record.levelname in EMOJI_LOGLEVELS: record.levelname = format_ansi(EMOJI_LOGLEVELS[record.levelname]) msg = super().format(record) return format_ansi(msg) milc-1.9.1/milc/attrdict.py000066400000000000000000000030701474512023100155610ustar00rootroot00000000000000from typing import Any, Dict, List class AttrDict(object): """A dictionary that can also be accessed by attribute. """ def __contains__(self, key: Any) -> bool: return self._data.__contains__(key) def __iter__(self) -> Any: return self._data.__iter__() def __len__(self) -> Any: return self._data.__len__() def __repr__(self) -> Any: return self._data.__repr__() def keys(self) -> Any: return self._data.keys() def items(self) -> Any: return self._data.items() def values(self) -> Any: return self._data.values() def __init__(self, *args: List[Any], **kwargs: Dict[Any, Any]) -> None: self._data: Dict[Any, Any] = {} def __getattr__(self, key: Any) -> Any: return self.__getitem__(key) def __getitem__(self, key: Any) -> Any: """Returns an item. """ return self._data[key] def __setitem__(self, key: Any, value: Any) -> None: self._data[key] = value self.__setattr__(key, value) def __delitem__(self, key: Any) -> None: if key in self._data: del self._data[key] class SparseAttrDict(AttrDict): """A dictionary that can also be accessed by attribute. This class never raises IndexError, instead it will return None if a key does not yet exist. """ def __getitem__(self, key: Any) -> Any: """Returns an item, creating it if it doesn't already exist """ if key not in self._data: self._data[key] = None return self._data[key] milc-1.9.1/milc/configuration.py000066400000000000000000000123601474512023100166140ustar00rootroot00000000000000from typing import Any, Hashable, List from .attrdict import AttrDict class Configuration(AttrDict): """Represents the running configuration. This class never raises IndexError, instead it will return None if a section or option does not yet exist. """ def __getitem__(self, key: Hashable) -> Any: """Returns a config section, creating it if it doesn't exist yet. """ if key not in self._data: self._data[key] = ConfigurationSection(self) return self._data[key] class ConfigurationSection(Configuration): def __init__(self, parent: AttrDict, *args: Any, **kwargs: Any) -> None: super(ConfigurationSection, self).__init__(*args, **kwargs) self._parent = parent def __getitem__(self, key: Hashable) -> Any: """Returns a config value, pulling from the `user` section as a fallback. This is called when the attribute is accessed either via the get method or through [ ] index. """ if key in self._data and self._data.get(key) is not None: return self._data[key] elif key in self._parent.user: return self._parent.user[key] return None def __getattr__(self, key: str) -> Any: """Returns the config value from the `user` section. This is called when the attribute is accessed via dot notation but does not exist. """ if key[0] != '_' and key in self._parent['user']: return self._parent['user'][key] return None def __setattr__(self, key: str, value: Any) -> None: """Sets dictionary value when an attribute is set. """ super().__setattr__(key, value) if key[0] != '_': self._data[key] = value class SubparserWrapper(object): """Wrap subparsers so we can track what options the user passed. """ # We type `cli` as Any instead of MILC to avoid a circular import def __init__(self, cli: Any, submodule: Any, subparser: Any) -> None: self.cli = cli self.submodule = submodule self.subparser = subparser for attr in dir(subparser): if not hasattr(self, attr): setattr(self, attr, getattr(subparser, attr)) def completer(self, completer: Any) -> None: """Add an arpcomplete completer to this subcommand. """ self.subparser.completer = completer def add_argument(self, *args: Any, **kwargs: Any) -> None: """Add an argument for this subcommand. This also stores the default for the argument in `self.cli.default_arguments`. """ if kwargs.get('action') == 'store_boolean': # Store boolean will call us again with the enable/disable flag arguments handle_store_boolean(self, *args, **kwargs) else: completer = None if kwargs.get('completer'): completer = kwargs['completer'] del kwargs['completer'] self.cli.acquire_lock() argument_name = get_argument_name(self.cli._arg_parser, *args, **kwargs) if completer: self.subparser.add_argument(*args, **kwargs).completer = completer else: self.subparser.add_argument(*args, **kwargs) if kwargs.get('action') == 'store_false': self.cli._config_store_false.append(argument_name) if kwargs.get('action') == 'store_true': self.cli._config_store_true.append(argument_name) if self.submodule not in self.cli.default_arguments: self.cli.default_arguments[self.submodule] = {} self.cli.default_arguments[self.submodule][argument_name] = kwargs.get('default') self.cli.release_lock() def get_argument_strings(arg_parser: Any, *args: Any, **kwargs: Any) -> List[str]: """Takes argparse arguments and returns a list of argument strings or positional names. """ try: return arg_parser._get_optional_kwargs(*args, **kwargs)['option_strings'] # type: ignore[no-any-return] except ValueError: return [arg_parser._get_positional_kwargs(*args, **kwargs)['dest']] def get_argument_name(arg_parser: Any, *args: Any, **kwargs: Any) -> Any: """Takes argparse arguments and returns the dest name. """ try: return arg_parser._get_optional_kwargs(*args, **kwargs)['dest'] except ValueError: return arg_parser._get_positional_kwargs(*args, **kwargs)['dest'] # FIXME: We should not be using self in this way def handle_store_boolean(self: Any, *args: Any, **kwargs: Any) -> Any: """Does the add_argument for action='store_boolean'. """ disabled_args = None disabled_kwargs = kwargs.copy() disabled_kwargs['action'] = 'store_false' disabled_kwargs['dest'] = get_argument_name(getattr(self, 'cli', self)._arg_parser, *args, **kwargs) disabled_kwargs['help'] = 'Disable ' + kwargs['help'] kwargs['action'] = 'store_true' kwargs['help'] = 'Enable ' + kwargs['help'] for flag in args: if flag[:2] == '--': disabled_args = ('--no-' + flag[2:],) break self.add_argument(*args, **kwargs) self.add_argument(*disabled_args, **disabled_kwargs) return (args, kwargs, disabled_args, disabled_kwargs) milc-1.9.1/milc/emoji.py000066400000000000000000000014661474512023100150550ustar00rootroot00000000000000"""Emoji used by MILC when outputting logs | Log Level | Emoji | |-----------|-------| | `CRITICAL` | `{bg_red}{fg_white}Β¬_Β¬` | | `ERROR` | `{fg_red}β˜’` | | `WARNING` | `{fg_yellow}⚠` | | `INFO` | `{fg_blue}β„Ή` | | `DEBUG` | `{fg_cyan}☐` | | `NOTSET` | `{style_reset_all}Β―\\_(o_o)_/Β―` | If you'd like to use your own icon for a level instead you can simply redefine it: ```python from milc.emoji import EMOJI_LOGLEVELS EMOJI_LOGLEVELS['INFO'] = {fg_green}β„Ή' ``` """ EMOJI_LOGLEVELS = { 'CRITICAL': '{bg_red}{fg_white}Β¬_Β¬', 'ERROR': '{fg_red}β˜’', 'WARNING': '{fg_yellow}⚠', 'INFO': '{fg_blue}β„Ή', 'DEBUG': '{fg_cyan}☐', 'NOTSET': '{style_reset_all}Β―\\_(o_o)_/Β―', } EMOJI_LOGLEVELS['FATAL'] = EMOJI_LOGLEVELS['CRITICAL'] EMOJI_LOGLEVELS['WARN'] = EMOJI_LOGLEVELS['WARNING'] milc-1.9.1/milc/milc.py000066400000000000000000001032211474512023100146660ustar00rootroot00000000000000# coding=utf-8 import argparse import logging import os import subprocess import shlex import sys from configparser import RawConfigParser from decimal import Decimal from functools import lru_cache from pathlib import Path from platform import platform from tempfile import NamedTemporaryFile from types import TracebackType from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type, Union try: import threading except ImportError: threading = None # type: ignore[assignment] import argcomplete import colorama from halo import Halo # type: ignore from platformdirs import user_config_dir from spinners.spinners import Spinners # type: ignore from .ansi import MILCFormatter, ansi_colors, ansi_config, ansi_escape, format_ansi from .attrdict import AttrDict from .configuration import Configuration, SubparserWrapper, get_argument_name, get_argument_strings, handle_store_boolean from ._in_argv import _in_argv, _index_argv # FIXME: Replace Callable[..., Any] with better definitions class MILC(object): """MILC - An Opinionated Batteries Included Framework """ def __init__(self, name: Optional[str] = None, author: Optional[str] = None, version: Optional[str] = None, logger: Optional[logging.Logger] = None) -> None: """Initialize the MILC object. """ # Set some defaults if not name: name = os.environ.get('MILC_APP_NAME') or self.argv_name() if not version: version = os.environ.get('MILC_APP_VERSION', 'unknown') if not author: author = os.environ.get('MILC_APP_AUTHOR', name.upper()) # Setup a lock for thread safety self._lock = threading.RLock() if threading else None # Define some basic info self.acquire_lock() self.prog_name = name self.version = version self.author = author self._config_store_true: Sequence[str] = [] self._config_store_false: Sequence[str] = [] self._entrypoint: Callable[[Any], Any] = lambda _: None self._spinners: Dict[str, Dict[str, Union[int, Sequence[str]]]] = {} self._subcommand = None self._inside_context_manager = False self.ansi = ansi_colors self.arg_only: Dict[str, List[str]] = {} self.config_file = self.find_config_file() self.default_arguments: Dict[str, Dict[str, Optional[str]]] = {} self.platform = platform() self.interactive = sys.stdin.isatty() self.release_lock() self._deprecated_arguments: Dict[str, str] = {} self._deprecated_commands: Dict[str, str] = {} # Initialize all the things self.initialize_config() self.initialize_argparse() self.initialize_logging(logger) self.initialize_arguments() @property def config_dir(self) -> Path: return self.config_file.parent @property def description(self) -> Optional[str]: return self._arg_parser.description @description.setter def description(self, value: str) -> None: self._arg_parser.description = value @property def subcommand_name(self) -> Optional[str]: if self._subcommand is not None: name: str = self._subcommand.__name__ return name return None def argv_name(self) -> str: """Returns the name of our program by examining argv. """ app_name = sys.argv[0][:-3] if sys.argv[0].endswith('.py') else sys.argv[0] return os.path.split(app_name)[-1] def echo(self, text: str, *args: Any, **kwargs: Any) -> None: """Print colorized text to stdout. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to all strings. If *args or **kwargs are passed they will be used to %-format the strings. """ if args and kwargs: raise ValueError('You can only specify *args or **kwargs, not both!') # FIXME: For V2, when we can break backwards compatibility, format_ansi first and then do the %-formatting if args: text = format_ansi(text % args) elif kwargs: text = format_ansi(text % kwargs) else: text = format_ansi(text) if not self.config.general.color: text = ansi_escape.sub('', text) print(text) def run( self, command: Sequence[str], capture_output: bool = True, combined_output: bool = False, text: bool = True, **kwargs: Any, ) -> Any: # FIXME: In python 3.10 we can use subprocess.CompletedProcess[bytes | str] instead """Run a command using `subprocess.run`, but using some different defaults. Unlike subprocess.run you must supply a sequence of arguments. You can use `shlex.split()` to build this from a string. The **kwargs arguments get passed directly to `subprocess.run`. Args: command A sequence where the first item is the command to run, and any remaining items are arguments to pass. capture_output Set to False to have output written to the terminal instead of being available in the returned `subprocess.CompletedProcess` instance. combined_output When true STDERR will be written to STDOUT. Equivalent to the shell construct `2>&1`. text Set to False to disable encoding and get `bytes()` from `.stdout` and `.stderr`. """ # Sanity Checking if isinstance(command, str): raise TypeError('`command` must be a non-text sequence such as list or tuple.') if not capture_output and combined_output: raise ValueError("Can't use capture_output=False and combined_output=True at the same time.") # On some windows platforms (msys2, possibly others) you have to # execute the command through a subshell. As well, after execution # stdin is broken so things like milc.questions no longer work. # We pass `stdin=subprocess.DEVNULL` by default to prevent that. if 'windows' in self.platform.lower(): safecmd = ' '.join(map(shlex.quote, command)) command = [os.environ['SHELL'], '-c', safecmd] if 'stdin' not in kwargs: kwargs['stdin'] = subprocess.DEVNULL # Argument Processing if capture_output: kwargs['stdout'] = subprocess.PIPE kwargs['stderr'] = subprocess.PIPE if combined_output: kwargs['stderr'] = subprocess.STDOUT if 'stdin' in kwargs and kwargs['stdin'] is None: del kwargs['stdin'] if text: kwargs['universal_newlines'] = True # Run the command self.log.debug('Running command: %s', command) return subprocess.run(command, **kwargs) def initialize_argparse(self) -> None: """Prepare to process arguments from sys.argv. """ kwargs = { 'fromfile_prefix_chars': '@', 'conflict_handler': 'resolve', } self.acquire_lock() self.subcommands: Dict[str, Any] = {} self._subparsers: Optional[Any] = None # FIXME: Find a better type signature self.argwarn = argcomplete.warn # type: ignore[attr-defined] self.args = AttrDict() self.args_passed = AttrDict() self._arg_parser = argparse.ArgumentParser(**kwargs) # type: ignore[arg-type] self.set_defaults = self._arg_parser.set_defaults self.release_lock() def print_help(self, *args: Any, **kwargs: Any) -> None: """Print a help message for the main program or subcommand, depending on context. """ if self._subcommand: self.subcommands[self._subcommand.__name__].print_help(*args, **kwargs) else: self._arg_parser.print_help(*args, **kwargs) def print_usage(self, *args: Any, **kwargs: Any) -> None: """Print brief description of how the main program or subcommand is invoked, depending on context. """ if self._subcommand: self.subcommands[self._subcommand.__name__].print_usage(*args, **kwargs) else: self._arg_parser.print_usage(*args, **kwargs) def log_deprecated_warning(self, item_type: str, name: str, reason: str) -> None: """Logs a warning with a custom message if a argument or command is deprecated. """ self.log.warning("Warning: %s '%s' is deprecated:\n\t%s", item_type, name, reason) def add_argument(self, *args: Any, **kwargs: Any) -> None: """Wrapper to add arguments and track whether they were passed on the command line. """ if 'action' in kwargs and kwargs['action'] == 'store_boolean': handle_store_boolean(self, *args, **kwargs) return arg_name = get_argument_name(self._arg_parser, *args, **kwargs) arg_strings = get_argument_strings(self._arg_parser, *args, **kwargs) # Handle tab completion completer = kwargs.get('completer') if 'completer' in kwargs: del kwargs['completer'] self.acquire_lock() if completer: self._arg_parser.add_argument(*args, **kwargs).completer = completer # type: ignore[attr-defined] else: self._arg_parser.add_argument(*args, **kwargs) # Record the default for this argument if 'general' not in self.default_arguments: self.default_arguments['general'] = {} self.default_arguments['general'][arg_name] = kwargs.get('default') # Determine if it was passed on the command line if 'general' not in self.args_passed: self.args_passed['general'] = {} self.args_passed['general'][arg_name] = False for arg in arg_strings: if _in_argv(arg): self.args_passed['general'][arg_name] = True self.release_lock() def initialize_logging(self, logger: Optional[logging.Logger]) -> None: """Prepare the defaults for the logging infrastructure. """ self.acquire_lock() if logger: self.milc_logger = False self.log = logger else: self.milc_logger = True self.log = logging.getLogger(self.__class__.__name__) self.log_file = None self.log_file_mode = 'a' self.log_file_handler: Optional[logging.FileHandler] = None self.log_print = True self.log_print_to = sys.stderr self.log_print_level = logging.INFO self.log_file_level = logging.INFO self.log_level = logging.INFO self.log.setLevel(logging.DEBUG) logging.root.setLevel(logging.DEBUG) self.release_lock() if self.milc_logger: self.add_argument('-v', '--verbose', action='store_true', help='Make the logging more verbose') self.add_argument('--datetime-fmt', default='%Y-%m-%d %H:%M:%S', help='Format string for datetimes') self.add_argument('--log-fmt', default='%(levelname)s %(message)s', help='Format string for printed log output') self.add_argument('--log-file-fmt', default='[%(levelname)s] [%(asctime)s] [file:%(pathname)s] [line:%(lineno)d] %(message)s', help='Format string for log file.') self.add_argument('--log-file-level', default='info', choices=['debug', 'info', 'warning', 'error', 'critical'], help='Logging level for log file.') self.add_argument('--log-file', help='File to write log messages to') self.add_argument('--color', action='store_boolean', default=ansi_config['color'], help='color in output') self.add_argument('--unicode', action='store_boolean', default=ansi_config['unicode'], help='unicode loglevels') def initialize_arguments(self) -> None: """Setup and add default arguments. """ self.add_argument('-V', '--version', version=self.version, action='version', help='Display the version and exit') self.add_argument('--interactive', action='store_true', help='Force interactive mode even when stdout is not a tty.') self.add_argument('--config-file', help='The location for the configuration file') self.arg_only['config_file'] = ['general'] def add_subparsers(self, title: str = 'Sub-commands', **kwargs: Any) -> None: if self._inside_context_manager: raise RuntimeError('You must run this before the with statement!') self.acquire_lock() self._subparsers = self._arg_parser.add_subparsers(title=title, dest='subparsers', **kwargs) self.release_lock() def acquire_lock(self, blocking: bool = True) -> bool: """Acquire the MILC lock for exclusive access to properties. """ if self._lock: return self._lock.acquire(blocking) return True def release_lock(self) -> None: """Release the MILC lock. """ if self._lock: self._lock.release() @lru_cache(maxsize=None) def find_config_file(self) -> Path: """Locate the config file. """ config_file_index = _index_argv('--config-file') if config_file_index is not None: config_file_param = sys.argv[config_file_index] if '=' in config_file_param: # get the file name from the '=' assignment opt, config_file = config_file_param.split('=') else: # assume the file name is next space-sep arg config_file = sys.argv[config_file_index + 1] return Path(config_file).expanduser().resolve() filedir = user_config_dir(appname=self.prog_name, appauthor=self.author) filename = '%s.ini' % self.prog_name return Path(filedir, filename).resolve() def _handle_deprecated(self, arg_name: str, kwargs: Dict[str, Any]) -> None: """Called by self.argument: Mark an argument as deprecated, if necessary. """ if 'deprecated' in kwargs: self._deprecated_arguments[arg_name] = kwargs['deprecated'] if kwargs['help']: kwargs['help'] += f" [Deprecated]: {kwargs['deprecated']}" else: kwargs['help'] = f"[Deprecated]: {kwargs['deprecated']}" del kwargs['deprecated'] def _handle_arg_parsing(self, config_name: str, arg_name: str, args: Sequence[Any], kwargs: Dict[str, Any]) -> None: """Called by self.argument: Parse this argument into the right datastructures. """ arg_strings = get_argument_strings(self._arg_parser, *args, **kwargs) if kwargs.get('arg_only'): if arg_name not in self.arg_only: self.arg_only[arg_name] = [] self.arg_only[arg_name].append(config_name) del kwargs['arg_only'] else: if arg_name not in self.default_arguments: self.default_arguments[config_name] = {} self.default_arguments[config_name][arg_name] = kwargs.get('default') if self.config[config_name][arg_name] is None: self.config[config_name][arg_name] = kwargs.get('default') if config_name not in self.args_passed: self.args_passed[config_name] = {} self.args_passed[config_name][arg_name] = False for arg in arg_strings: if _in_argv(arg): self.args_passed[config_name][arg_name] = True def argument(self, *args: Any, **kwargs: Any) -> Callable[..., Any]: """Decorator to call self.add_argument or self..add_argument. """ if self._inside_context_manager: raise RuntimeError('You must run this before the with statement!') def argument_function(handler: Callable[..., Any]) -> Callable[..., Any]: config_name = handler.__name__ subcommand_name = config_name.replace("_", "-") arg_name = get_argument_name(self._arg_parser, *args, **kwargs) self._handle_deprecated(arg_name, kwargs) self._handle_arg_parsing(config_name, arg_name, args, kwargs) if handler is self._entrypoint: self.add_argument(*args, **kwargs) elif subcommand_name in self.subcommands: self.subcommands[subcommand_name].add_argument(*args, **kwargs) else: raise RuntimeError('Decorated function is not entrypoint or subcommand!') return handler return argument_function def parse_args(self) -> None: """Parse the CLI args. """ if self.args: self.log.debug('Warning: Arguments have already been parsed, ignoring duplicate attempt!') return argcomplete.autocomplete(self._arg_parser) self.acquire_lock() for key, value in vars(self._arg_parser.parse_args()).items(): self.args[key] = value if 'entrypoint' in self.args: self._subcommand = self.args.entrypoint self.release_lock() def read_config_file(self) -> Tuple[Configuration, Configuration]: """Read in the configuration file and return Configuration objects for it and the config_source. """ config = Configuration() config_source = Configuration() if self.config_file.exists(): raw_config = RawConfigParser() raw_config.read(str(self.config_file)) # Iterate over the config file options and write them into config for section in raw_config.sections(): for option in raw_config.options(section): value = raw_config.get(section, option) # Coerce values into useful datatypes if value.lower() in ['yes', 'true', 'on']: value = True elif value.lower() in ['no', 'false', 'off']: value = False elif value.lower() in ['none']: continue elif value.replace('.', '').isdigit(): if '.' in value: value = Decimal(value) else: value = int(value) config[section][option] = value config_source[section][option] = 'config_file' return config, config_source def initialize_config(self) -> None: """Read in the configuration file and store it in self.config. """ self.acquire_lock() self.config, self.config_source = self.read_config_file() self.release_lock() def merge_args_into_config(self) -> None: """Merge CLI arguments into self.config to create the runtime configuration. """ self.acquire_lock() subcommand_name = self._subcommand.__name__ if self._subcommand else None for argument in self.args: if argument in ('subparsers', 'entrypoint'): continue # Find the argument's section. This is backwards because mypy is sticking its nose where it doesn't belong. if argument not in self.default_arguments['general']: section = subcommand_name else: section = 'general' if argument not in self.arg_only or section not in self.arg_only[argument]: # Determine the arg value and source arg_value = getattr(self.args, argument) # Merge this argument into self.config if self.args_passed[section][argument] or (argument in self._config_store_true and arg_value) or (argument in self._config_store_false and not arg_value): self.config[section][argument] = arg_value self.config_source[section][argument] = 'argument' elif self.config[section][argument] is None: # Capture the default value self.config[section][argument] = arg_value self.release_lock() def _save_config_file(self, config: AttrDict) -> None: """Write config to disk. """ # Generate a sanitized version of our running configuration sane_config = RawConfigParser() for section_name, section in config.items(): sane_config.add_section(section_name) for option_name, value in section.items(): if self.config_source[section_name][option_name] == 'config_file' and value is not None: sane_config.set(section_name, option_name, str(value)) if not self.config_dir.exists(): self.config_dir.mkdir(parents=True, exist_ok=True) # Write the config file atomically. self.acquire_lock() with NamedTemporaryFile(mode='w', dir=str(self.config_dir), delete=False) as tmpfile: sane_config.write(tmpfile) if os.path.getsize(tmpfile.name) > 0: os.replace(tmpfile.name, str(self.config_file)) else: self.log.warning('Config file saving failed, not replacing %s with %s.', str(self.config_file), tmpfile.name) self.release_lock() def write_config_option(self, section: str, option: Any) -> None: """Save a single config option to the config file. """ if not self.config_file: self.log.warning('%s.config_file not set, not saving config!', self.__class__.__name__) return config, config_source = self.read_config_file() if section in config and option in config[section] and config[section][option] is None: del config[section][option] else: config[section][option] = str(self.config[section][option]) self._save_config_file(config) # Housekeeping self.log.info('Wrote configuration to %s', shlex.quote(str(self.config_file))) def save_config(self) -> None: """Save the current configuration to the config file. """ self.log.debug("Saving config file to '%s'", str(self.config_file)) if not self.config_file: self.log.warning('%s.config_file file not set, not saving config!', self.__class__.__name__) return # Write config to disk self._save_config_file(self.config) self.log.info('Wrote configuration to %s', shlex.quote(str(self.config_file))) def check_deprecated(self) -> None: entry_name = self._entrypoint.__name__ if entry_name in self._deprecated_commands: msg = self._deprecated_commands[entry_name] self.log_deprecated_warning('Entrypoint', entry_name, msg) if self._subcommand: name = self._subcommand.__name__.replace("_", "-") if name in self._deprecated_commands: msg = self._deprecated_commands[name] self.log_deprecated_warning('Subcommand', name, msg) # FIXME(skullydazed): This should be simplified deprecated_args_passed = [arg.replace('-', '') for arg in sys.argv if arg.split('=')[0].replace('-', '') in self._deprecated_arguments] for arg in deprecated_args_passed: msg = self._deprecated_arguments[arg] self.log_deprecated_warning('Argument', arg, msg) def __call__(self) -> Any: """Execute the entrypoint function. """ if not self._inside_context_manager: # If they didn't use the context manager use it ourselves with self: return self.__call__() self.check_deprecated() if self._subcommand: return self._subcommand(self) elif self._entrypoint is not None: return self._entrypoint(self) raise RuntimeError('No entrypoint provided!') def entrypoint(self, description: str, deprecated: Optional[str] = None) -> Callable[..., Any]: """Decorator that marks the entrypoint used when a subcommand is not supplied. Args: description A one-line description to display in --help deprecated Deprecation message. When set the subcommand will marked as deprecated and this message will be displayed in the help output. """ if self._inside_context_manager: raise RuntimeError('You must run this before cli()!') self.acquire_lock() self.description = description self.release_lock() def entrypoint_func(handler: Callable[..., Any]) -> Callable[..., Any]: self.acquire_lock() if deprecated: self._deprecated_commands[handler.__name__] = deprecated self.description = f'{self.description} [Deprecated]: {deprecated}' self._entrypoint = handler self.release_lock() return handler return entrypoint_func def add_subcommand( self, handler: Callable[..., Any], description: str, hidden: bool = False, deprecated: Optional[str] = None, **kwargs: Any, ) -> Callable[..., Any]: """Register a subcommand. Args: handler The function to exececute for this subcommand. description A one-line description to display in --help hidden When True don't display this command in --help deprecated Deprecation message. When set the subcommand will be marked as deprecated and this message will be displayed in help output. """ if self._inside_context_manager: raise RuntimeError('You must run this before the with statement!') if self._subparsers is None: self.add_subparsers(metavar="") name = handler.__name__.replace("_", "-") if deprecated: self._deprecated_commands[name] = deprecated description += f' [Deprecated]: {deprecated}' self.acquire_lock() if not hidden and self._subparsers is not None: self._subparsers.metavar = "{%s,%s}" % (self._subparsers.metavar[1:-1], name) if self._subparsers.metavar else "{%s%s}" % (self._subparsers.metavar[1:-1], name) kwargs['help'] = description # Type ignored because we explicitly add a subparser above self.subcommands[name] = SubparserWrapper(self, name, self._subparsers.add_parser(name, **kwargs)) # type: ignore[union-attr] self.subcommands[name].set_defaults(entrypoint=handler) self.release_lock() return handler def subcommand(self, description: str, hidden: bool = False, **kwargs: Any) -> Callable[..., Any]: """Decorator to register a subcommand. Args: description A one-line description to display in --help hidden When True don't display this command in --help """ def subcommand_function(handler: Callable[..., Any]) -> Callable[..., Any]: return self.add_subcommand(handler, description, hidden=hidden, **kwargs) return subcommand_function def setup_logging(self) -> None: """Called by __enter__() to setup the logging configuration. """ if self.milc_logger: if len(logging.root.handlers) != 0: # MILC is the only thing that should have root log handlers logging.root.handlers = [] self.acquire_lock() if self.config.general.verbose: self.log_print_level = logging.DEBUG ansi_config['color'] = self.config.general.color ansi_config['unicode'] = self.config.general.unicode self.log_file = self.config.general.log_file or self.log_file self.log_file_format = MILCFormatter(self.config.general.log_file_fmt, self.config.general.datetime_fmt) self.log_file_level = getattr(logging, self.config.general.log_file_level.upper()) self.log_format = MILCFormatter(self.config.general.log_fmt, self.config.general.datetime_fmt) if self.log_file: self.log_file_handler = logging.FileHandler(self.log_file, self.log_file_mode) self.log_file_handler.setLevel(self.log_file_level) self.log_file_handler.setFormatter(self.log_file_format) logging.root.addHandler(self.log_file_handler) if self.log_print: self.log_print_handler = logging.StreamHandler(self.log_print_to) self.log_print_handler.setLevel(self.log_print_level) self.log_print_handler.setFormatter(self.log_format) logging.root.addHandler(self.log_print_handler) self.release_lock() def __enter__(self) -> Any: if self._inside_context_manager: self.log.debug('Warning: context manager was entered again. This usually means that self.__call__() was called before the with statement. You probably do not want to do that.') return self.acquire_lock() self._inside_context_manager = True self.release_lock() colorama.init() self.parse_args() self.merge_args_into_config() if self.config.general.interactive: self.interactive = True self.setup_logging() return self def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: self.acquire_lock() self._inside_context_manager = False self.release_lock() if exc_type is not None and not isinstance(SystemExit(), exc_type): print(exc_type) logging.exception(exc_val) exit(255) def is_spinner(self, name: str) -> bool: """Returns true if name is a valid spinner. """ return name in Spinners.__members__ or name in self._spinners def add_spinner(self, name: str, spinner: Dict[str, Union[int, Sequence[str]]]) -> None: """Adds a new spinner to the list of spinners. A spinner is a dictionary with two keys: interval An integer that sets how long (in ms) to wait between frames. frames A list of frames for this spinner """ if self.is_spinner(name): raise ValueError(f'Spinner "{name}" already exists!') if not isinstance(spinner, dict): raise ValueError('The spinner must be a dictionary!') if 'interval' not in spinner or 'frames' not in spinner: raise ValueError('The spinner must have `interval` and `frames` keys!') self._spinners[name] = spinner def spinner( self, text: str, *args: Any, spinner: Optional[str] = None, animation: str = 'ellipsed', placement: str = 'left', color: str = 'blue', interval: int = -1, stream: Any = sys.stdout, enabled: bool = True, **kwargs: Any, ) -> Halo: """Create a spinner object for showing activity to the user. This uses halo behind the scenes, most of the arguments map to Halo objects 1:1. There are 3 basic ways to use this: * Instantiating a spinner and then using `.start()` and `.stop()` on your object. * Using a context manager (`with cli.spinner(...):`) * Decorate a function (`@cli.spinner(...)`) #### Instantiating a spinner ```python spinner = cli.spinner(text='Loading', spinner='dots') spinner.start() # Do something here spinner.stop() ``` #### Using a context manager ```python with cli.spinner(text='Loading', spinner='dots'): # Do something here ``` #### Decorate a function ```python @cli.spinner(text='Loading', spinner='dots') def long_running_function(): # Do something here ``` ### Arguments text The text to display next to the spinner. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to the end of the string. If *args or **kwargs are passed they will be used to %-format the text. spinner The name of the spinner to use. Available names are here: animation The animation to apply to the text if it doesn't fit the terminal. One of `ellipsed`, `bounce`, `marquee`. placement Which side of the text to display the spinner on. One of `left`, `right`. color Color of the spinner. One of `blue`, `grey`, `red`, `green`, `yellow`, `magenta`, `cyan`, `white` interval How long in ms to wait between frames. Defaults to the spinner interval (recommended.) stream Stream to write the output. Defaults to sys.stdout. enabled Enable or disable the spinner. Defaults to `True`. """ spinner_name = spinner or 'line' # FIXME: Grab one of the ascii spinners at random instead of line if spinner in self._spinners: spinner_name = '' spinner_obj = self._spinners[spinner] return Halo( text=format_ansi(text % (args or kwargs)), spinner=spinner_name or spinner_obj, animation=None if animation == 'ellipsed' else animation, placement=placement, color=color, interval=interval, ) milc-1.9.1/milc/milc_interface.py000066400000000000000000000241101474512023100167050ustar00rootroot00000000000000"""Public interface for MILC. This is where the public interface for `cli` is kept. This allows us to reinstantiate MILC without having to recreate the cli object, as well as allowing us to have a well defined public API. """ import warnings import sys from logging import Logger from pathlib import Path from types import TracebackType from typing import Any, Callable, Dict, Optional, Sequence, Type, Union from halo import Halo # type: ignore from .attrdict import AttrDict from .configuration import Configuration from .milc import MILC class MILCInterface: def __init__(self) -> None: self._milc: Optional[MILC] = None self._name: Optional[str] = None self._author: Optional[str] = None self._version: Optional[str] = None self._logger: Optional[Logger] = None def milc_options(self, *, name: Optional[str] = None, author: Optional[str] = None, version: Optional[str] = None, logger: Optional[Logger] = None) -> None: if self._milc and self._milc._inside_context_manager: raise RuntimeError('You must run cli.milc_options() before cli() or anything else!') self._name = name or self._name self._author = author or self._author self._version = version or self._version self._logger = logger or self._logger self._milc = MILC(self._name, self._author, self._version, self._logger) @property def milc(self) -> MILC: if not self._milc: self._milc = MILC() return self._milc @property def args(self) -> AttrDict: return self.milc.args @property def config(self) -> Configuration: return self.milc.config @property def config_dir(self) -> Path: return self.milc.config_dir @property def config_source(self) -> Configuration: return self.milc.config_source @property def description(self) -> Optional[str]: return self.milc.description @property def interactive(self) -> bool: return self.milc.interactive @property def log(self) -> Logger: return self.milc.log @property def platform(self) -> str: return self.milc.platform @property def _subcommand(self) -> Any: warnings.warn("cli._subcommand has been deprecated, please use cli.subcommand_name to get the subcommand name instead.", stacklevel=2) return self.milc._subcommand @property def subcommands(self) -> Dict[str, Any]: return self.milc.subcommands @property def subcommand_name(self) -> Optional[str]: return self.milc.subcommand_name def echo(self, text: str, *args: Any, **kwargs: Any) -> None: """Print colorized text to stdout. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to all strings. If *args or **kwargs are passed they will be used to %-format the strings. """ return self.milc.echo(text, *args, **kwargs) def run(self, command: Sequence[str], capture_output: bool = True, combined_output: bool = False, text: bool = True, **kwargs: Any) -> Any: # FIXME: In python 3.10 we can use subprocess.CompletedProcess[bytes | str] instead """Run a command using `subprocess.run`, but using some different defaults. Unlike subprocess.run you must supply a sequence of arguments. You can use `shlex.split()` to build this from a string. The **kwargs arguments get passed directly to `subprocess.run`. Args: command A sequence where the first item is the command to run, and any remaining items are arguments to pass. capture_output Set to False to have output written to the terminal instead of being available in the returned `subprocess.CompletedProcess` instance. combined_output When true STDERR will be written to STDOUT. Equivalent to the shell construct `2>&1`. text Set to False to disable encoding and get `bytes()` from `.stdout` and `.stderr`. """ return self.milc.run(command, capture_output, combined_output, text, **kwargs) def print_help(self, *args: Any, **kwargs: Any) -> None: """Print a help message for the main program or subcommand, depending on context. """ return self.milc.print_help(*args, **kwargs) def print_usage(self, *args: Any, **kwargs: Any) -> None: """Print brief description of how the main program or subcommand is invoked, depending on context. """ return self.milc.print_usage(*args, **kwargs) def add_argument(self, *args: Any, **kwargs: Any) -> None: """Wrapper to add arguments and track whether they were passed on the command line. """ return self.milc.add_argument(*args, **kwargs) def acquire_lock(self, blocking: bool = True) -> bool: """Acquire the MILC lock for exclusive access to properties. """ return self.milc.acquire_lock(blocking) def release_lock(self) -> None: """Release the MILC lock. """ return self.milc.release_lock() def argument(self, *args: Any, **kwargs: Any) -> Callable[..., Any]: """Decorator to add an argument to a MILC command or subcommand. """ return self.milc.argument(*args, **kwargs) def save_config(self) -> None: """Save the current configuration to the config file. """ return self.milc.save_config() def __call__(self) -> Any: """Execute the entrypoint function. """ return self.milc() def entrypoint(self, description: str, deprecated: Optional[str] = None) -> Callable[..., Any]: """Decorator that marks the entrypoint used when a subcommand is not supplied. Args: description A one-line description to display in --help deprecated Deprecation message. When set the subcommand will marked as deprecated and this message will be displayed in the help output. """ return self.milc.entrypoint(description, deprecated) def subcommand(self, description: str, hidden: bool = False, **kwargs: Any) -> Callable[..., Any]: """Decorator to register a subcommand. Args: description A one-line description to display in --help hidden When True don't display this command in --help """ return self.milc.subcommand(description, hidden, **kwargs) def __enter__(self) -> Any: return self.milc.__enter__() def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: return self.milc.__exit__(exc_type, exc_val, exc_tb) def add_spinner(self, name: str, spinner: Dict[str, Union[int, Sequence[str]]]) -> None: """Adds a new spinner to the list of spinners. A spinner is a dictionary with two keys: interval An integer that sets how long (in ms) to wait between frames. frames A list of frames for this spinner """ return self.milc.add_spinner(name, spinner) def spinner( self, text: str, *args: Any, spinner: Optional[str] = None, animation: str = 'ellipsed', placement: str = 'left', color: str = 'blue', interval: int = -1, stream: Any = sys.stdout, enabled: bool = True, **kwargs: Any, ) -> Halo: """Create a spinner object for showing activity to the user. This uses halo behind the scenes, most of the arguments map to Halo objects 1:1. There are 3 basic ways to use this: * Instantiating a spinner and then using `.start()` and `.stop()` on your object. * Using a context manager (`with cli.spinner(...):`) * Decorate a function (`@cli.spinner(...)`) #### Instantiating a spinner ```python spinner = cli.spinner(text='Loading', spinner='dots') spinner.start() # Do something here spinner.stop() ``` #### Using a context manager ```python with cli.spinner(text='Loading', spinner='dots'): # Do something here ``` #### Decorate a function ```python @cli.spinner(text='Loading', spinner='dots') def long_running_function(): # Do something here ``` ### Arguments text The text to display next to the spinner. ANSI color strings (such as {fg_blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to the end of the string. If *args or **kwargs are passed they will be used to %-format the text. spinner The name of the spinner to use. Available names are here: animation The animation to apply to the text if it doesn't fit the terminal. One of `ellipsed`, `bounce`, `marquee`. placement Which side of the text to display the spinner on. One of `left`, `right`. color Color of the spinner. One of `blue`, `grey`, `red`, `green`, `yellow`, `magenta`, `cyan`, `white` interval How long in ms to wait between frames. Defaults to the spinner interval (recommended.) stream Stream to write the output. Defaults to sys.stdout. enabled Enable or disable the spinner. Defaults to `True`. """ return self.milc.spinner(text, *args, spinner=spinner, animation=animation, placement=placement, color=color, interval=interval, stream=stream, enabled=enabled, **kwargs) milc-1.9.1/milc/questions.py000066400000000000000000000216451474512023100160050ustar00rootroot00000000000000"""Sometimes you need to ask the user a question. MILC provides basic functions for collecting and validating user input. You can find these in the `milc.questions` module. """ from getpass import getpass from typing import Any, Callable, Optional, Sequence, Union from milc import cli from .ansi import format_ansi def yesno(prompt: str, *args: Any, default: Optional[bool] = None, **kwargs: Any) -> bool: """Displays `prompt` to the user and gets a yes or no response. Returns `True` for a yes and `False` for a no. | Argument | Description | |----------|-------------| | prompt | The prompt to present to the user. Can include ANSI and format strings like `cli.echo()`. | | default | Whether to default to a Yes or No when the user presses enter.

None- force the user to enter Y or N
True- Default to yes
False- Default to no | If you add `--yes` and `--no` arguments to your program the user can answer questions by passing command line flags. ```python @cli.argument('-y', '--yes', action='store_true', arg_only=True, help='Answer yes to all questions.') @cli.argument('-n', '--no', action='store_true', arg_only=True, help='Answer no to all questions.') ``` """ if args and kwargs: raise ValueError("You can't pass both args and kwargs!") # Check if we should return an answer without asking if 'no' in cli.args and cli.args.no: return False if 'yes' in cli.args and cli.args.yes: return True if not cli.interactive: return False # Format the prompt if args: formatted_prompt = prompt % args else: formatted_prompt = prompt % kwargs if default is None: formatted_prompt = formatted_prompt + ' [y/n] ' elif default: formatted_prompt = formatted_prompt + ' [Y/n] ' else: formatted_prompt = formatted_prompt + ' [y/N] ' # Get input from the user while True: answer = input(format_ansi(formatted_prompt)) if not answer and default is not None: return default elif answer.lower() in ['y', 'yes']: return True elif answer.lower() in ['n', 'no']: return False def password( prompt: str = 'Enter password:', *args: Any, confirm: bool = False, confirm_prompt: str = 'Confirm password:', confirm_limit: int = 3, validate: Optional[Callable[[str], bool]] = None, **kwargs: Any, ) -> Optional[str]: """Securely receive a password from the user. Returns the password or None. When running in non-interactive mode this will always return None. Otherwise it will return the confirmed password the user provides. | Argument | Description | |----------|-------------| | prompt | The prompt to present to the user. Can include ANSI and format strings like milc's `cli.echo()`. | | confirm | Prompt the user to type the password again and make sure they match. | | confirm_prompt | The prompt to present to the user. Can include ANSI and format strings like milc's `cli.echo()`. | | confirm_limit | Number of attempts to confirm before giving up. Default: 3 | | validate | This is an optional function that can be used to validate the password, EG to check complexity. It should return True or False and have the following signature:

`def function_name(answer):` | """ if not cli.interactive: return None if args: formatted_prompt = prompt % args else: formatted_prompt = prompt % kwargs if formatted_prompt[-1] != ' ': formatted_prompt += ' ' if confirm_prompt[-1] != ' ': confirm_prompt += ' ' i = 0 while not confirm_limit or i < confirm_limit: pw = getpass(format_ansi(formatted_prompt)) if pw: if validate is not None and not validate(pw): continue elif confirm: if getpass(format_ansi(confirm_prompt % args)) == pw: return pw else: cli.log.error('Passwords do not match!') else: return pw i += 1 return None def _cast_answer(answer_type: Callable[[str], str], answer: str) -> Any: """Attempt to convert answer to answer_type. """ try: return answer_type(answer) except Exception as e: cli.log.error('Could not convert answer (%s) to type %s: %s', answer, answer_type.__name__, str(e)) return None def question( prompt: str, *args: Any, default: Optional[str] = None, confirm: bool = False, answer_type: Callable[[str], str] = str, validate: Optional[Callable[..., bool]] = None, **kwargs: Any, ) -> Union[str, Any]: """Allow the user to type in a free-form string to answer. | Argument | Description | |----------|-------------| | prompt | The prompt to present to the user. Can include ANSI and format strings like milc's `cli.echo()`. | | default | The value to return when the user doesn't enter any value. Use None to prompt until they enter a value. | | confirm | Present the user with a confirmation dialog before accepting their answer. | | answer_type | Specify a type function for the answer. Will re-prompt the user if the function raises any errors. Common choices here include int, float, and decimal.Decimal. | | validate | This is an optional function that can be used to validate the answer. It should return True or False and have the following signature:

`def function_name(answer, *args, **kwargs):` | """ if not cli.interactive: return default if default is not None: prompt = '%s [%s] ' % (prompt, default) elif prompt and prompt[-1] != ' ': prompt += ' ' while True: answer = input(format_ansi(prompt % (args or kwargs))) if answer: if validate is not None and not validate(answer, *args, **kwargs): continue elif confirm: if yesno('Is the answer "%s" correct?', answer, default=True): return _cast_answer(answer_type, answer) else: return _cast_answer(answer_type, answer) elif default is not None: return default def choice( heading: str, options: Sequence[str], *args: Any, default: Optional[int] = None, confirm: bool = False, prompt: str = 'Please enter your choice: ', **kwargs: Any, ) -> Optional[str]: """Present the user with a list of options and let them select one. Users can enter either the number or the text of their choice. This will return the value of the item they choose, not the numerical index. | Argument | Description | |----------|-------------| | heading | The text to place above the list of options. | | options | A sequence of items to choose from. | | default | The index of the item to return when the user doesn't enter any value. Use None to prompt until they enter a value. | | confirm | When True present the user with a confirmation dialog before accepting their answer. | | prompt | The prompt to present to the user. Can include color and format strings like milc's `cli.echo()`. | Users can enter either the number or the text of their choice. !!! warning This will return the value of the item they choose, not the numerical index. """ if args: formatted_heading = heading % args else: formatted_heading = heading % kwargs if not cli.interactive: if default is None: return None return options[default] if prompt[-1] != ' ': prompt += ' ' if default is not None: prompt = '%s[%s] ' % (prompt, default + 1) while True: answer = _choice_get_answer(options, default, prompt, formatted_heading) if answer: if confirm and not yesno('Is the answer "%s" correct?', answer, default=True): continue return answer def _choice_get_answer( options: Sequence[str], default: Optional[int], prompt: str, formatted_heading: str, ) -> Optional[str]: """Get an answer from the user for choice(). """ # Prompt for an answer. cli.echo(formatted_heading) for i, option in enumerate(options, 1): cli.echo('\t{fg_cyan}%d.{fg_reset} %s', i, option) answer = input(format_ansi(prompt)) # If the user types in one of the options exactly use that if answer in options: return answer # Massage the answer into a valid integer if answer == '' and default is not None: answer_index = default elif answer.isnumeric(): answer_index = int(answer) - 1 else: cli.log.error('Invalid choice: %s', answer) return None # Validate the answer if answer_index >= len(options) or answer_index < 0: cli.log.error('Invalid choice: %s', answer_index + 1) return None # Return the answer they chose. return options[answer_index] milc-1.9.1/milc/subcommand/000077500000000000000000000000001474512023100155215ustar00rootroot00000000000000milc-1.9.1/milc/subcommand/__init__.py000066400000000000000000000000001474512023100176200ustar00rootroot00000000000000milc-1.9.1/milc/subcommand/config.py000066400000000000000000000103341474512023100173410ustar00rootroot00000000000000"""Read and write configuration settings """ from typing import Any, Tuple import milc from milc.milc import MILC def print_config(section: str, key: str) -> None: """Print a single config setting to stdout. """ if milc.cli.config_source[section][key] == 'config_file': milc.cli.echo('%s.%s{fg_blue}={fg_reset}%s', section, key, milc.cli.config[section][key]) else: milc.cli.echo('{fg_cyan}%s.%s=%s', section, key, milc.cli.config[section][key]) def show_config() -> None: """Print the current configuration to stdout. """ for section in sorted(milc.cli.config): for key in sorted(milc.cli.config[section]): if milc.cli.config_source[section][key] == 'config_file' or milc.cli.config.config.all: print_config(section, key) def parse_config_token(config_token: str) -> Tuple[str, str, Any]: """Split a user-supplied configuration-token into its components. """ section = option = value = '' if '=' in config_token and '.' not in config_token: milc.cli.log.error('Invalid configuration token, the key must be of the form
.