From a605bf0819d9a03b0821a2311363ec42c9aa5181 Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Sun, 28 Jan 2024 02:52:28 +0100 Subject: [PATCH] Revamp the documentation The documentation is now generated by Inko, using the "wobsite" library (https://github.com/yorickpeterse/inko-wobsite). The content has also been reorganized, rewritten, and extended (e.g. cross compilation is now covered). Changelog: other --- .github/workflows/docs.yml | 30 - .github/workflows/push.yml | 32 + .github/workflows/release.yml | 23 +- .gitignore | 14 +- Makefile | 28 +- docs/inko.pkg | 3 + docs/menu.json | 54 ++ docs/mkdocs.yml | 80 -- docs/plugins/pygments-inko-lexer/poetry.lock | 21 - .../pygments_inko_lexer/__init__.py | 78 -- .../pygments-inko-lexer/pyproject.toml | 17 - docs/poetry.lock | 811 ------------------ docs/public/css/icons.css | 36 + docs/public/css/reset.css | 176 ++++ docs/pyproject.toml | 20 - docs/rclone.conf | 5 + docs/scripts/watch.sh | 23 + docs/source/404.md | 8 + docs/source/css/icons.css | 36 + docs/source/css/main.css | 509 +++++++++++ docs/source/css/reset.css | 176 ++++ docs/source/{internals => design}/compiler.md | 84 +- docs/source/{guides => design}/goals.md | 13 +- docs/source/{internals => design}/runtime.md | 6 +- docs/source/{images => }/favicon.ico | Bin docs/source/getting-started/classes.md | 233 +++++ docs/source/getting-started/concurrency.md | 249 ++++-- docs/source/getting-started/control-flow.md | 291 +++++++ docs/source/getting-started/destructors.md | 78 ++ docs/source/getting-started/error-handling.md | 273 ------ .../source/{guides => getting-started}/ffi.md | 155 ++-- docs/source/getting-started/files.md | 103 +++ docs/source/getting-started/generics.md | 151 ++++ .../getting-started/hello-concurrency.md | 93 ++ .../getting-started/hello-error-handling.md | 95 ++ docs/source/getting-started/hello-world.md | 55 +- docs/source/getting-started/io.md | 94 -- .../getting-started/memory-management.md | 500 +++++------ docs/source/getting-started/methods.md | 291 +++++++ docs/source/getting-started/modules.md | 254 ++---- .../getting-started/pattern-matching.md | 245 ++++-- docs/source/getting-started/sockets.md | 141 +++ docs/source/getting-started/traits.md | 148 ++++ docs/source/getting-started/types.md | 440 ---------- docs/source/getting-started/variables.md | 236 +---- docs/source/getting-started/visibility.md | 94 ++ docs/source/getting-started/whats-next.md | 16 + docs/source/guides/conditional-compilation.md | 90 ++ docs/source/guides/conditional_compilation.md | 73 -- docs/source/guides/contributing.md | 50 +- docs/source/guides/cross-compilation.md | 281 ++++++ docs/source/guides/operators.md | 9 +- docs/source/guides/{testing.md => tests.md} | 13 +- docs/source/images/404.gif | Bin 0 -> 706306 bytes docs/source/index.md | 7 +- docs/source/js/main.js | 19 + .../{getting-started => references}/cli.md | 13 +- docs/source/references/core-types.md | 93 ++ docs/source/references/packages.md | 195 +++++ docs/source/references/prelude.md | 50 ++ .../{guides => references}/structure.md | 7 +- .../style-guide.md => references/style.md} | 8 +- docs/source/{guides => references}/syntax.md | 339 ++++---- .../scaling.md => references/tuning.md} | 66 +- .../{getting-started => setup}/editors.md | 30 +- .../installation.md | 149 ++-- docs/source/{getting-started => setup}/ivm.md | 68 +- docs/source/setup/whats-next.md | 8 + docs/source/stylesheets/extra.css | 7 - docs/src/docs/config.inko | 41 + docs/src/docs/filters.inko | 78 ++ docs/src/docs/layouts.inko | 239 ++++++ docs/src/docs/menu.inko | 102 +++ docs/src/docs/post_process.inko | 13 + docs/src/docs/url.inko | 27 + docs/src/main.inko | 48 ++ docs/test/docs/test_url.inko | 36 + docs/vale/docs/weasel.yml | 1 - docs/vale/proselint/Typography.yml | 11 - scripts/docs_versions.py | 43 - 80 files changed, 5479 insertions(+), 3253 deletions(-) delete mode 100644 .github/workflows/docs.yml create mode 100644 docs/inko.pkg create mode 100644 docs/menu.json delete mode 100644 docs/mkdocs.yml delete mode 100644 docs/plugins/pygments-inko-lexer/poetry.lock delete mode 100644 docs/plugins/pygments-inko-lexer/pygments_inko_lexer/__init__.py delete mode 100644 docs/plugins/pygments-inko-lexer/pyproject.toml delete mode 100644 docs/poetry.lock create mode 100644 docs/public/css/icons.css create mode 100644 docs/public/css/reset.css delete mode 100644 docs/pyproject.toml create mode 100644 docs/rclone.conf create mode 100755 docs/scripts/watch.sh create mode 100644 docs/source/404.md create mode 100644 docs/source/css/icons.css create mode 100644 docs/source/css/main.css create mode 100644 docs/source/css/reset.css rename docs/source/{internals => design}/compiler.md (88%) rename docs/source/{guides => design}/goals.md (97%) rename docs/source/{internals => design}/runtime.md (99%) rename docs/source/{images => }/favicon.ico (100%) create mode 100644 docs/source/getting-started/classes.md create mode 100644 docs/source/getting-started/control-flow.md create mode 100644 docs/source/getting-started/destructors.md delete mode 100644 docs/source/getting-started/error-handling.md rename docs/source/{guides => getting-started}/ffi.md (84%) create mode 100644 docs/source/getting-started/files.md create mode 100644 docs/source/getting-started/generics.md create mode 100644 docs/source/getting-started/hello-concurrency.md create mode 100644 docs/source/getting-started/hello-error-handling.md delete mode 100644 docs/source/getting-started/io.md create mode 100644 docs/source/getting-started/methods.md create mode 100644 docs/source/getting-started/sockets.md create mode 100644 docs/source/getting-started/traits.md delete mode 100644 docs/source/getting-started/types.md create mode 100644 docs/source/getting-started/visibility.md create mode 100644 docs/source/getting-started/whats-next.md create mode 100644 docs/source/guides/conditional-compilation.md delete mode 100644 docs/source/guides/conditional_compilation.md create mode 100644 docs/source/guides/cross-compilation.md rename docs/source/guides/{testing.md => tests.md} (93%) create mode 100644 docs/source/images/404.gif create mode 100644 docs/source/js/main.js rename docs/source/{getting-started => references}/cli.md (90%) create mode 100644 docs/source/references/core-types.md create mode 100644 docs/source/references/packages.md create mode 100644 docs/source/references/prelude.md rename docs/source/{guides => references}/structure.md (98%) rename docs/source/{guides/style-guide.md => references/style.md} (99%) rename docs/source/{guides => references}/syntax.md (90%) rename docs/source/{guides/scaling.md => references/tuning.md} (64%) rename docs/source/{getting-started => setup}/editors.md (64%) rename docs/source/{getting-started => setup}/installation.md (71%) rename docs/source/{getting-started => setup}/ivm.md (63%) create mode 100644 docs/source/setup/whats-next.md delete mode 100644 docs/source/stylesheets/extra.css create mode 100644 docs/src/docs/config.inko create mode 100644 docs/src/docs/filters.inko create mode 100644 docs/src/docs/layouts.inko create mode 100644 docs/src/docs/menu.inko create mode 100644 docs/src/docs/post_process.inko create mode 100644 docs/src/docs/url.inko create mode 100644 docs/src/main.inko create mode 100644 docs/test/docs/test_url.inko delete mode 100644 docs/vale/proselint/Typography.yml delete mode 100644 scripts/docs_versions.py diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 5aa158bee..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,30 +0,0 @@ ---- -name: Documentation -on: - push: - branches: - - main - paths: - - 'docs/**/*.*' - workflow_dispatch: - -jobs: - docs: - runs-on: ubuntu-latest - env: - AWS_REGION: eu-west-1 - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - if: | - github.repository == 'inko-lang/inko' && github.ref_name == 'main' - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v3 - with: - path: | - docs/.venv - key: ${{ runner.os }}-docs-main - - run: pip install poetry - - run: poetry config virtualenvs.in-project true - - run: cd docs && poetry install - - run: make docs/publish diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 5640e1e3a..f741e2f4a 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -55,3 +55,35 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + + docs: + runs-on: ubuntu-latest + container: + image: ghcr.io/inko-lang/inko:main + env: + AWS_REGION: eu-west-1 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + needs: + - nightly-container + if: | + github.repository == 'inko-lang/inko' && github.ref_name == 'main' + steps: + - name: Install dependencies + run: sudo microdnf install --quiet --assumeyes rclone awscli2 git tar make + - uses: actions/checkout@v4 + - uses: actions/cache@v3 + with: + path: | + docs/build + ~/.local/share/inko/packages + key: docs-main + - uses: dorny/paths-filter@v3 + id: changes + with: + filters: | + docs: + - 'docs/**' + - name: Deploy the documentation + if: steps.changes.outputs.docs == 'true' + run: make docs/publish diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b2925d4ac..92685321a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -88,30 +88,35 @@ jobs: docs: runs-on: ubuntu-latest + container: + image: ghcr.io/inko-lang/inko:latest needs: - lints - linux - mac - freebsd + - container env: AWS_REGION: eu-west-1 AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} steps: + - name: Install dependencies + run: sudo microdnf install --quiet --assumeyes rclone awscli2 git tar make - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/cache@v3 with: path: | - docs/.venv - key: ${{ runner.os }}-docs-release - - run: pip install poetry - - run: poetry config virtualenvs.in-project true - - run: cd docs && poetry install - - run: make docs/publish DOCS_FOLDER=${{ github.ref_name }} - - run: > + docs/build + ~/.local/share/inko/packages + key: docs-release + - name: Deploy the documentation + run: make docs/publish DOCS_FOLDER=${{ github.ref_name }} + - name: Update the latest tag + run: > if [[ ${{ github.ref_name }} = $(git tag -l --sort=-v:refname | head -n1) ]] - then make docs/publish DOCS_FOLDER=latest + then + make docs/publish DOCS_FOLDER=latest fi - - run: make docs/versions diff --git a/.gitignore b/.gitignore index 23f3b2e63..6d7e576b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,9 @@ .*.rustfmt -*.ibi -/libstd/build -/tmp -/target -/docs/build -*.egg-info/ -__pycache__ -/docs/plugins/pygments-inko-lexer/poetry.lock /build +/docs/build +/docs/dep +/docs/public /std/build +/target +/tmp +__pycache__ diff --git a/Makefile b/Makefile index b74ed7ef2..69509b6e7 100644 --- a/Makefile +++ b/Makefile @@ -140,35 +140,33 @@ clean: rm -rf "${TMP_DIR}" rm -rf build rm -rf std/build + rm -rf docs/public cargo clean docs/install: - cd docs && poetry install --no-root + cd docs && inko pkg sync docs/build: - cd docs && poetry run mkdocs build + rm -rf docs/public + cd docs && inko run -docs/server: - cd docs && poetry run mkdocs serve +docs/watch: + cd docs && bash scripts/watch.sh docs/publish: docs/install docs/build - aws s3 sync docs/build s3://${DOCS_S3_BUCKET}/manual/${DOCS_FOLDER} \ - --acl=public-read --delete --cache-control max-age=86400 --no-progress + cd docs && rclone sync \ + --config rclone.conf \ + --checksum \ + --header-upload 'Cache-Control:max-age=604800' \ + --s3-acl 'public-read' \ + public "production:${DOCS_S3_BUCKET}/manual/${DOCS_FOLDER}" aws cloudfront create-invalidation \ --distribution-id ${DOCS_CLOUDFRONT_ID} --paths "/*" -docs/versions: - git tag | python ./scripts/docs_versions.py > versions.json - aws s3 cp versions.json s3://${DOCS_S3_BUCKET}/manual/versions.json \ - --acl=public-read --cache-control max-age=86400 - aws cloudfront create-invalidation \ - --distribution-id ${DOCS_CLOUDFRONT_ID} --paths "/manual/versions.json" - rm versions.json - runtimes: bash scripts/runtimes.sh ${VERSION} .PHONY: release/source release/manifest release/changelog release/versions .PHONY: release/commit release/publish release/tag .PHONY: build install clean runtimes -.PHONY: docs/install docs/build docs/server docs/publish docs/versions +.PHONY: docs/install docs/build docs/watch docs/publish diff --git a/docs/inko.pkg b/docs/inko.pkg new file mode 100644 index 000000000..ce96cbc2e --- /dev/null +++ b/docs/inko.pkg @@ -0,0 +1,3 @@ +require https://github.com/yorickpeterse/inko-wobsite 0.10.0 d67b267deec594515188b5f38cecd34f2d989c8f +require https://github.com/yorickpeterse/inko-builder 0.11.0 ae7b8cf3476dfc401408c493bd6d795bd0ac3ab2 +require https://github.com/yorickpeterse/inko-markdown 0.13.0 cc6b10c03fbe18f44e7ad0eb9adc23d0b0f043e0 diff --git a/docs/menu.json b/docs/menu.json new file mode 100644 index 000000000..ada4be22e --- /dev/null +++ b/docs/menu.json @@ -0,0 +1,54 @@ +{ + "Home": [ + "index.md" + ], + "Setting up": [ + "setup/installation.md", + "setup/ivm.md", + "setup/editors.md", + "setup/whats-next.md" + ], + "Getting started": [ + "getting-started/hello-world.md", + "getting-started/hello-error-handling.md", + "getting-started/files.md", + "getting-started/sockets.md", + "getting-started/hello-concurrency.md", + "getting-started/memory-management.md", + "getting-started/control-flow.md", + "getting-started/variables.md", + "getting-started/methods.md", + "getting-started/classes.md", + "getting-started/traits.md", + "getting-started/visibility.md", + "getting-started/modules.md", + "getting-started/generics.md", + "getting-started/pattern-matching.md", + "getting-started/destructors.md", + "getting-started/concurrency.md", + "getting-started/ffi.md", + "getting-started/whats-next.md" + ], + "Guides": [ + "guides/tests.md", + "guides/conditional-compilation.md", + "guides/cross-compilation.md", + "guides/operators.md", + "guides/contributing.md" + ], + "References": [ + "references/syntax.md", + "references/style.md", + "references/structure.md", + "references/core-types.md", + "references/prelude.md", + "references/cli.md", + "references/packages.md", + "references/tuning.md" + ], + "Design": [ + "design/compiler.md", + "design/runtime.md", + "design/goals.md" + ] +} diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml deleted file mode 100644 index 3cd43c779..000000000 --- a/docs/mkdocs.yml +++ /dev/null @@ -1,80 +0,0 @@ -site_name: The Inko manual -site_description: The Inko programming language manual -site_author: The Inko programming language developers -site_url: https://docs.inko-lang.org/manual -docs_dir: source -site_dir: build -use_directory_urls: true -repo_url: https://github.com/inko-lang/inko -repo_name: Inko -edit_uri: -/tree/master/docs -theme: - name: material - favicon: images/favicon.ico - logo: images/logo.png - font: false - features: - - navigation.tabs - palette: - primary: white - accent: blue -extra_css: - - stylesheets/extra.css -markdown_extensions: - - pymdownx.highlight - - pymdownx.superfences - - pymdownx.tabbed: - alternate_style: true - - admonition - - footnotes - - def_list - - pymdownx.caret - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format -nav: - - Home: index.md - - Getting started: - - getting-started/installation.md - - getting-started/editors.md - - getting-started/cli.md - - getting-started/ivm.md - - getting-started/hello-world.md - - getting-started/memory-management.md - - getting-started/types.md - - getting-started/variables.md - - getting-started/error-handling.md - - getting-started/pattern-matching.md - - getting-started/concurrency.md - - getting-started/io.md - - getting-started/modules.md - - Reference: - - guides/syntax.md - - guides/style-guide.md - - guides/structure.md - - guides/testing.md - - guides/ffi.md - - guides/conditional_compilation.md - - guides/operators.md - - guides/scaling.md - - guides/contributing.md - - guides/goals.md - - Internals: - - internals/compiler.md - - internals/runtime.md -extra: - social: - - icon: fontawesome/brands/github - link: https://github.com/inko-lang/inko - name: View on GitHub - - icon: fontawesome/brands/discord - link: https://discord.gg/seeURxHxCb - name: Chat on Discord - - icon: fontawesome/brands/reddit - link: https://reddit.com/r/inko - name: Join the /r/inko subreddit - version: - provider: mike - default: latest diff --git a/docs/plugins/pygments-inko-lexer/poetry.lock b/docs/plugins/pygments-inko-lexer/poetry.lock deleted file mode 100644 index db254f57e..000000000 --- a/docs/plugins/pygments-inko-lexer/poetry.lock +++ /dev/null @@ -1,21 +0,0 @@ -[[package]] -name = "pygments" -version = "2.13.0" -description = "Pygments is a syntax highlighting package written in Python." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -plugins = ["importlib-metadata"] - -[metadata] -lock-version = "1.1" -python-versions = "^3.8" -content-hash = "1a044c98abe19a0d5b1faa2be4e12cb8e203bf8cac4d69f2e66087be90a1d7de" - -[metadata.files] -pygments = [ - {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, - {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, -] diff --git a/docs/plugins/pygments-inko-lexer/pygments_inko_lexer/__init__.py b/docs/plugins/pygments-inko-lexer/pygments_inko_lexer/__init__.py deleted file mode 100644 index 1a1d46cf7..000000000 --- a/docs/plugins/pygments-inko-lexer/pygments_inko_lexer/__init__.py +++ /dev/null @@ -1,78 +0,0 @@ -from pygments.lexer import RegexLexer, words, bygroups -from pygments import token - -__version__ = "1.1.1" - -KEYWORDS = ( - "and", - "as", - "async", - "break", - "case", - "class", - "else", - "enum", - "false", - "fn", - "for", - "if", - "impl", - "loop", - "match", - "move", - "mut", - "next", - "or", - "pub", - "recover", - "ref", - "return", - "self", - "static", - "throw", - "trait", - "true", - "try", - "uni", - "while", - "extern", -) - - -class InkoLexer(RegexLexer): - name = "Inko" - aliases = ["inko"] - filenames = ["*.inko"] - - tokens = { - "root": [ - (r"#.*$", token.Comment.Single), - ('"', token.String.Double, "dstring"), - ("'", token.String.Single, "sstring"), - (r"_?[A-Z]\w*", token.Name.Constant), - (r"@_?\w+", token.Name.Variable.Instance), - (r"(?i)-?0x[0-9a-f_]+", token.Number.Integer), - (r"(?i)-?[\d_]+\.\d+(e[+-]?\d+)?", token.Number.Float), - (r"(?i)-?[\d_]+(e[+-]?\d+)?", token.Number.Integer), - (r"(\w+)(::)", bygroups(token.Name.Namespace, token.Text)), - (r"\w+:", token.String.Symbol), - (r"(->|!!)", token.Keyword), - (r"((<|>|\+|-|\/|\*)=?|==)", token.Operator), - ("import", token.Keyword.Namespace), - ("let", token.Keyword.Declaration), - (words(KEYWORDS, suffix=r"\b"), token.Keyword), - (r"!|\?|\}|\{|\[|\]|\.|,|:|\(|\)|=", token.Punctuation), - (r"\w+\b", token.Text), - (r"\s+", token.Whitespace), - ], - "dstring": [ - (r'[^"\\]+', token.String.Double), - (r"\\.", token.String.Escape), - ('"', token.String.Double, "#pop"), - ], - "sstring": [ - (r"[^'\\]+", token.String.Single), - (r"\\.", token.String.Escape), - ("'", token.String.Single, "#pop"), - ], - } diff --git a/docs/plugins/pygments-inko-lexer/pyproject.toml b/docs/plugins/pygments-inko-lexer/pyproject.toml deleted file mode 100644 index 9633d5a95..000000000 --- a/docs/plugins/pygments-inko-lexer/pyproject.toml +++ /dev/null @@ -1,17 +0,0 @@ -[tool.poetry] -name = "pygments-inko-lexer" -version = "1.1.1" -description = "Pygments lexer for Inko" -authors = ["Yorick Peterse "] -license = "MPL-2.0" - -[tool.poetry.dependencies] -python = "^3.8" -pygments = "^2.7" - -[tool.poetry.plugins."pygments.lexers"] -"inko" = "pygments_inko_lexer:InkoLexer" - -[build-system] -requires = ["poetry>=0.12"] -build-backend = "poetry.masonry.api" diff --git a/docs/poetry.lock b/docs/poetry.lock deleted file mode 100644 index 74ead8672..000000000 --- a/docs/poetry.lock +++ /dev/null @@ -1,811 +0,0 @@ -# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. - -[[package]] -name = "babel" -version = "2.13.1" -description = "Internationalization utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, -] - -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} -setuptools = {version = "*", markers = "python_version >= \"3.12\""} - -[package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "certifi" -version = "2023.11.17" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "ghp-import" -version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." -optional = false -python-versions = "*" -files = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, -] - -[package.dependencies] -python-dateutil = ">=2.8.1" - -[package.extras] -dev = ["flake8", "markdown", "twine", "wheel"] - -[[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] - -[[package]] -name = "importlib-metadata" -version = "6.8.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] - -[[package]] -name = "jinja2" -version = "3.1.2" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "markdown" -version = "3.5.1" -description = "Python implementation of John Gruber's Markdown." -optional = false -python-versions = ">=3.8" -files = [ - {file = "Markdown-3.5.1-py3-none-any.whl", hash = "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc"}, - {file = "Markdown-3.5.1.tar.gz", hash = "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] -testing = ["coverage", "pyyaml"] - -[[package]] -name = "markupsafe" -version = "2.1.3" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, -] - -[[package]] -name = "mergedeep" -version = "1.3.4" -description = "A deep merge function for 🐍." -optional = false -python-versions = ">=3.6" -files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, -] - -[[package]] -name = "mkdocs" -version = "1.5.3" -description = "Project documentation with Markdown." -optional = false -python-versions = ">=3.7" -files = [ - {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"}, - {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"}, -] - -[package.dependencies] -click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} -ghp-import = ">=1.0" -importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} -jinja2 = ">=2.11.1" -markdown = ">=3.2.1" -markupsafe = ">=2.0.1" -mergedeep = ">=1.3.4" -packaging = ">=20.5" -pathspec = ">=0.11.1" -platformdirs = ">=2.2.0" -pyyaml = ">=5.1" -pyyaml-env-tag = ">=0.1" -watchdog = ">=2.0" - -[package.extras] -i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] - -[[package]] -name = "mkdocs-material" -version = "9.4.10" -description = "Documentation that simply works" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mkdocs_material-9.4.10-py3-none-any.whl", hash = "sha256:207c4ebc07faebb220437d2c626edb0c9760c82ccfc484500bd3eb30dfce988c"}, - {file = "mkdocs_material-9.4.10.tar.gz", hash = "sha256:421adedaeaa461dcaf55b8d406673934ade3d4f05ed9819e4cc7b4ee1d646a62"}, -] - -[package.dependencies] -babel = ">=2.10,<3.0" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.0,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.5.3,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -regex = ">=2022.4" -requests = ">=2.26,<3.0" - -[package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=9.4,<10.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] - -[[package]] -name = "mkdocs-material-extensions" -version = "1.3" -description = "Extension pack for Python Markdown and MkDocs Material." -optional = false -python-versions = ">=3.8" -files = [ - {file = "mkdocs_material_extensions-1.3-py3-none-any.whl", hash = "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc"}, - {file = "mkdocs_material_extensions-1.3.tar.gz", hash = "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd"}, -] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, -] - -[[package]] -name = "paginate" -version = "0.5.6" -description = "Divides large result sets into pages for easier browsing" -optional = false -python-versions = "*" -files = [ - {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, -] - -[[package]] -name = "pathspec" -version = "0.11.2" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, -] - -[[package]] -name = "platformdirs" -version = "4.0.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -optional = false -python-versions = ">=3.7" -files = [ - {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, - {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, -] - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] - -[[package]] -name = "pygments" -version = "2.17.1" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pygments-2.17.1-py3-none-any.whl", hash = "sha256:1b37f1b1e1bff2af52ecaf28cc601e2ef7077000b227a0675da25aef85784bc4"}, - {file = "pygments-2.17.1.tar.gz", hash = "sha256:e45a0e74bf9c530f564ca81b8952343be986a29f6afe7f5ad95c5f06b7bdf5e8"}, -] - -[package.extras] -plugins = ["importlib-metadata"] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pygments-inko-lexer" -version = "1.1.1" -description = "Pygments lexer for Inko" -optional = false -python-versions = "^3.8" -files = [] -develop = false - -[package.dependencies] -pygments = "^2.7" - -[package.source] -type = "directory" -url = "plugins/pygments-inko-lexer" - -[[package]] -name = "pyinotify" -version = "0.9.6" -description = "Linux filesystem events monitoring" -optional = false -python-versions = "*" -files = [ - {file = "pyinotify-0.9.6.tar.gz", hash = "sha256:9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"}, -] - -[[package]] -name = "pymdown-extensions" -version = "10.4" -description = "Extension pack for Python Markdown." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pymdown_extensions-10.4-py3-none-any.whl", hash = "sha256:cfc28d6a09d19448bcbf8eee3ce098c7d17ff99f7bd3069db4819af181212037"}, - {file = "pymdown_extensions-10.4.tar.gz", hash = "sha256:bc46f11749ecd4d6b71cf62396104b4a200bad3498cb0f5dad1b8502fe461a35"}, -] - -[package.dependencies] -markdown = ">=3.2" -pyyaml = "*" - -[package.extras] -extra = ["pygments (>=2.12)"] - -[[package]] -name = "python-dateutil" -version = "2.8.2" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pytz" -version = "2023.3.post1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.1" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, -] - -[[package]] -name = "pyyaml-env-tag" -version = "0.1" -description = "A custom YAML tag for referencing environment variables in YAML files. " -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, - {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, -] - -[package.dependencies] -pyyaml = "*" - -[[package]] -name = "regex" -version = "2023.10.3" -description = "Alternative regular expression module, to replace re." -optional = false -python-versions = ">=3.7" -files = [ - {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"}, - {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"}, - {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"}, - {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"}, - {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"}, - {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"}, - {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"}, - {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"}, - {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"}, - {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"}, - {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"}, - {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"}, - {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"}, - {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"}, - {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"}, - {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"}, -] - -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.7" -files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "setuptools" -version = "68.2.2" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "urllib3" -version = "2.1.0" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "watchdog" -version = "3.0.0" -description = "Filesystem events monitoring" -optional = false -python-versions = ">=3.7" -files = [ - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, - {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, - {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, - {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, - {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, - {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, - {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, - {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, - {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, -] - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - -[[package]] -name = "zipp" -version = "3.17.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] - -[metadata] -lock-version = "2.0" -python-versions = "^3.8" -content-hash = "2cadbc7f87faf06bd5a1b6e9b9e3147ca1ab08f6d8d9a02b9a35e8698d0e72e9" diff --git a/docs/public/css/icons.css b/docs/public/css/icons.css new file mode 100644 index 000000000..aa1dec045 --- /dev/null +++ b/docs/public/css/icons.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'icons'; + src: url(data:font/woff2;base64,d09GMgABAAAAAAUEAAsAAAAACLQAAAS5AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAdBEIColYiDQLFAABNgIkAyQEIAWCbgcgGzsHID4NcHK76gfI8srYRpikabpkmJAS9kTyyUHXefpFSA4e+v3Rn4sFNZ0drqCb74vrvEnsauu0s8nJDfw/vz/yPl/iSRYSb8SJUpnf+tRjZ4fG5d1TaNBApS2qEQxp1aFt2uWloSc0Fi/gLtFJgfRrkYzSXk/4p4fHrjCJLEiy4oRSDHGehgTy+3/ga2tqqRkmQA9bAo/3D38/00UURtuABzijt/cXVVhpUbhLwAS5AV1EWpXI8R3YqYDnyCqdL14BpYLEFDgAch59Bua6ScQbyQJPp094s24a8L1DG2mKQBgBLkS7VJgKB7JcJAgbRdT/9oUGEhQEpe80ZA1Avb2w8zr12hEcFqwVlJ/YyCEqQMABXjHFBacvqYgFQK4YIQtp2DiYCAVTJzoHONCjheTkhST19UVV3JDhc0oLI4KAhe20Fght3SzdPQdMIrb3cV3fIowoTmPgsFlikYjIvkNi+wyb9iyDXgH3M4rGJ7tBH2YRVuGf6oMxwgp0udqagi9XY7HrZAR3IxZWJO9W7DYV/vXaOcxNDWpc9bS8RbGqACeXXlYsceVFbqixLf573GqevrjmpllwpJcDFvrefib9vtEy3Wf5fXoNxeazYP1dn3pYYK6bk2c5FxfYuyZMclnz+8R2y5sXfLX9f9AaFbxf0GnmCG29sJZjrH2d9lfgZhlMr56HVzI7nk1nYFZ9WmCPX8XETZ51cYnbtyBrvujOvojmB4CprBDVE30I/QWr7VBQA2v7uHkwxA/lGmc54cqfG8689IfblPfDtZzDcNbLdDY2OpG3t72OMNnkgEz3MTcXFkNbqSMiPcZsT0n3/4+ZXZNPCxy2ViWU96jKgVOK4M7AQP/wCxW8VsvpZdoygT6m9uJonNNK5duzLEixzjYgMS97ZleBct0Cp5P8f5WKQOXAigoaVYmNjUEPRKgEoaEaZYLxQpAdLChmHDuFNbzuu7GrdL7zKUVIJ/QDrcAFNShVjHAy3qdrY5TFMFyD4xOd7XxEgEkB2P/7914S2V3CZMTKrANVlza7LqTjFgmSQ+6o9iWiDal0h6Fe0d7+0DAwEIFbbaZjIRVumKfXIqJDkoA9SLoYvDnJVrMqFZMJaNXi9WmSwfl9nnRwChVL9mvJlMgN89SMqPaE6QWzUmVWPktaQkBTd9Us0zWM1TVSfu/u0NDMy31PtOnKuYtVC7d+Nhc61jvSR/88Qfdi7nLeenJ+fw+jyP72j10bWjNSGMrdrhtRogqp/Reh8PcRX8lR4dTdbwByS2b0/twdvOcPjmvq2XSN5Tq7GFtaGLuwfzk2AcYNAGygDgO6atDRQ9OQZX5cAORWL+f+F/rvTNQA8PT6P7S4teAMCmTIGaEThzG6RTPPRYtkpE81EFwPNJNlvk8ATlBNCbvRQ8KT1QrCUwQgKiQUAQoFgRFa41MVDrAIKhwhcDzeFRk6wUC0CwgMRKBAESBcgcFgjsbxWQoCCQQKEga3AoMZY5du25VCNqkUUkDpLd91jA2MoIh0SrAj2WRK2LFgcxmlMb2p3i9BCOlkUk4eyZT08L7+odtHVm8M/AsVAxADtZehRDPpFCyCZjJlpJPWXEc1SiRnl/CnsF65AUgG); + font-weight: normal; + font-style: normal; + font-display: block; +} + +i { + font-family: 'icons' !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-pencil:before { + content: "\f040"; +} +.icon-info-circle:before { + content: "\f05a"; +} +.icon-exclamation-circle:before { + content: "\f06a"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-lightbulb-o:before { + content: "\f0eb"; +} diff --git a/docs/public/css/reset.css b/docs/public/css/reset.css new file mode 100644 index 000000000..836afbc73 --- /dev/null +++ b/docs/public/css/reset.css @@ -0,0 +1,176 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + line-height: 1.15; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace; + font-size: 1em; +} + +a { + background-color: transparent; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace; + font-size: 1em; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +img { + border-style: none; +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + padding: 0; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details { + display: block; +} + +summary { + display: list-item; +} + +template { + display: none; +} + +[hidden] { + display: none; +} diff --git a/docs/pyproject.toml b/docs/pyproject.toml deleted file mode 100644 index e3070a5a6..000000000 --- a/docs/pyproject.toml +++ /dev/null @@ -1,20 +0,0 @@ -[tool.poetry] -name = "docs-lib" -version = "1.0.0" -description = "" -authors = ["Yorick Peterse "] -license = "MPL-2.0" - -[tool.poetry.dependencies] -python = "^3.8" -mkdocs = "^1.4" -mkdocs-material = "^9.1" -pygments-inko-lexer = { path = "./plugins/pygments-inko-lexer/" } - -# pyinotify is used so `mkdocs serve` doesn't need to poll for changes, reducing -# CPU usage. -pyinotify = "^0.9" - -[build-system] -requires = ["poetry>=0.12"] -build-backend = "poetry.masonry.api" diff --git a/docs/rclone.conf b/docs/rclone.conf new file mode 100644 index 000000000..560f4df95 --- /dev/null +++ b/docs/rclone.conf @@ -0,0 +1,5 @@ +[production] +type = s3 +provider = AWS +env_auth = true +region = eu-west-1 diff --git a/docs/scripts/watch.sh b/docs/scripts/watch.sh new file mode 100755 index 000000000..76609bfbd --- /dev/null +++ b/docs/scripts/watch.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# Perform the initial build. +inko run + +python -m http.server -d public & +python_pid=$! + +trap 'kill ${python_pid}; exit' INT + +while inotifywait --recursive \ + --event modify \ + --event create \ + --event delete \ + --event move \ + -qq \ + --exclude '^\.\/(build|public)' \ + . +do + inko run +done + +wait "${python_pid}" diff --git a/docs/source/404.md b/docs/source/404.md new file mode 100644 index 000000000..520651e32 --- /dev/null +++ b/docs/source/404.md @@ -0,0 +1,8 @@ +--- +{ + "title": "Page not found" +} +--- + +The requested page could not be found. If you think this is a bug, please +open an issue on the [issue tracker](https://github.com/inko-lang/inko/issues). diff --git a/docs/source/css/icons.css b/docs/source/css/icons.css new file mode 100644 index 000000000..aa1dec045 --- /dev/null +++ b/docs/source/css/icons.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'icons'; + src: url(data:font/woff2;base64,d09GMgABAAAAAAUEAAsAAAAACLQAAAS5AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAdBEIColYiDQLFAABNgIkAyQEIAWCbgcgGzsHID4NcHK76gfI8srYRpikabpkmJAS9kTyyUHXefpFSA4e+v3Rn4sFNZ0drqCb74vrvEnsauu0s8nJDfw/vz/yPl/iSRYSb8SJUpnf+tRjZ4fG5d1TaNBApS2qEQxp1aFt2uWloSc0Fi/gLtFJgfRrkYzSXk/4p4fHrjCJLEiy4oRSDHGehgTy+3/ga2tqqRkmQA9bAo/3D38/00UURtuABzijt/cXVVhpUbhLwAS5AV1EWpXI8R3YqYDnyCqdL14BpYLEFDgAch59Bua6ScQbyQJPp094s24a8L1DG2mKQBgBLkS7VJgKB7JcJAgbRdT/9oUGEhQEpe80ZA1Avb2w8zr12hEcFqwVlJ/YyCEqQMABXjHFBacvqYgFQK4YIQtp2DiYCAVTJzoHONCjheTkhST19UVV3JDhc0oLI4KAhe20Fght3SzdPQdMIrb3cV3fIowoTmPgsFlikYjIvkNi+wyb9iyDXgH3M4rGJ7tBH2YRVuGf6oMxwgp0udqagi9XY7HrZAR3IxZWJO9W7DYV/vXaOcxNDWpc9bS8RbGqACeXXlYsceVFbqixLf573GqevrjmpllwpJcDFvrefib9vtEy3Wf5fXoNxeazYP1dn3pYYK6bk2c5FxfYuyZMclnz+8R2y5sXfLX9f9AaFbxf0GnmCG29sJZjrH2d9lfgZhlMr56HVzI7nk1nYFZ9WmCPX8XETZ51cYnbtyBrvujOvojmB4CprBDVE30I/QWr7VBQA2v7uHkwxA/lGmc54cqfG8689IfblPfDtZzDcNbLdDY2OpG3t72OMNnkgEz3MTcXFkNbqSMiPcZsT0n3/4+ZXZNPCxy2ViWU96jKgVOK4M7AQP/wCxW8VsvpZdoygT6m9uJonNNK5duzLEixzjYgMS97ZleBct0Cp5P8f5WKQOXAigoaVYmNjUEPRKgEoaEaZYLxQpAdLChmHDuFNbzuu7GrdL7zKUVIJ/QDrcAFNShVjHAy3qdrY5TFMFyD4xOd7XxEgEkB2P/7914S2V3CZMTKrANVlza7LqTjFgmSQ+6o9iWiDal0h6Fe0d7+0DAwEIFbbaZjIRVumKfXIqJDkoA9SLoYvDnJVrMqFZMJaNXi9WmSwfl9nnRwChVL9mvJlMgN89SMqPaE6QWzUmVWPktaQkBTd9Us0zWM1TVSfu/u0NDMy31PtOnKuYtVC7d+Nhc61jvSR/88Qfdi7nLeenJ+fw+jyP72j10bWjNSGMrdrhtRogqp/Reh8PcRX8lR4dTdbwByS2b0/twdvOcPjmvq2XSN5Tq7GFtaGLuwfzk2AcYNAGygDgO6atDRQ9OQZX5cAORWL+f+F/rvTNQA8PT6P7S4teAMCmTIGaEThzG6RTPPRYtkpE81EFwPNJNlvk8ATlBNCbvRQ8KT1QrCUwQgKiQUAQoFgRFa41MVDrAIKhwhcDzeFRk6wUC0CwgMRKBAESBcgcFgjsbxWQoCCQQKEga3AoMZY5du25VCNqkUUkDpLd91jA2MoIh0SrAj2WRK2LFgcxmlMb2p3i9BCOlkUk4eyZT08L7+odtHVm8M/AsVAxADtZehRDPpFCyCZjJlpJPWXEc1SiRnl/CnsF65AUgG); + font-weight: normal; + font-style: normal; + font-display: block; +} + +i { + font-family: 'icons' !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-pencil:before { + content: "\f040"; +} +.icon-info-circle:before { + content: "\f05a"; +} +.icon-exclamation-circle:before { + content: "\f06a"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-lightbulb-o:before { + content: "\f0eb"; +} diff --git a/docs/source/css/main.css b/docs/source/css/main.css new file mode 100644 index 000000000..c676dcd37 --- /dev/null +++ b/docs/source/css/main.css @@ -0,0 +1,509 @@ +:root { + --shadow-size: 5px; + --border-radius: 3px; + --margin: 20px; + --code-font: monospace; + --font-size: 16px; + --font: sans-serif; + --media-wide: 830px; + + --black: #000; + --blue: #0c52bb; + --border: #bbb; + --comment: #666; + --dblue: #95b4e1; + --dgreen: #b2ca96; + --dred: #ca8766; + --dyellow: #e1c05e; + --green: #436023; + --grey: #ddd; + --lblue: #eaf2ff; + --lgreen: #f4fbf4; + --lgrey: #f7f7f7; + --lred: #ffe7d9; + --orange: #a55000; + --purple: #5c21a5; + --quote: #555; + --shadow: #f7f7f7; + --white: #fff; + --yellow: #fff3bb; +} + +html { + font-family: var(--font); + font-size: var(--font-size); + line-height: 1.5; +} + +h1 { + font-size: 2rem; +} + +h2 { + font-size: 1.5rem; +} + +h3 { + font-size: 1.2rem; +} + +h4 { + font-size: 1rem; +} + +h5 { + font-size: .8rem; +} + +h6 { + font-size: .7rem; +} + +h1, h2, h3, h4, h5, h6 { + margin: 0 0 var(--margin) 0; +} + +p { + margin: 0 0 var(--margin) 0; +} + +ul, ol { + margin: 0 0 var(--margin) var(--margin); + padding-left: 0; +} + +ul li { + list-style-type: disc; +} + +ul li ul { + margin-bottom: 0; +} + +ul li li { + list-style-type: circle; +} + +ol li { + list-style-type: decimal; +} + +blockquote { + border: 1px solid var(--border); + border-radius: var(--border-radius); + box-shadow: var(--shadow-size) var(--shadow-size) var(--shadow); + color: var(--quote); + font-style: italic; + margin: 0 0 var(--margin) 0; + padding: 10px; +} + +blockquote > *:last-child { + margin-bottom: 0; +} + +pre { + background: var(--white); + border-radius: var(--border-radius); + border: 1px solid var(--border); + box-shadow: var(--shadow-size) var(--shadow-size) var(--shadow); + font-family: var(--code-font); + font-size: 12px; + line-height: 1.3; + margin: 0 0 var(--margin) 0; + overflow-x: scroll; + padding: 10px; + white-space: pre; +} + +p code, li code, td code, h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background: var(--lgrey); + border-radius: var(--border-radius); + border: 1px solid var(--grey); + box-decoration-break: clone; + font-family: var(--code-font); + font-size: .8rem; + padding: 1px 5px; +} + +p code, li code, td code { + font-size: .8rem; +} + +a { + color: var(--blue); + font-weight: 500; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +table { + border-collapse: separate; + border-radius: var(--border-radius); + border-spacing: 0; + border: 1px solid var(--border); + box-shadow: var(--shadow-size) var(--shadow-size) var(--shadow); + font-size: 0.8rem; + margin-bottom: var(--margin); + width: 100%; +} + +table th, +table td { + border-bottom: 1px solid var(--border); + padding: 5px; + text-align: left; +} + +table th { + background: var(--lgrey); +} + +table tr:last-child td { + border-bottom: 0; +} + +.highlight .k { + font-weight: bold; +} + +.highlight .s, .highlight .s1, .highlight .s2 { + color: var(--green); +} + +.highlight .ss { + color: var(--orange); +} + +.highlight .mf, .highlight .mh, .highlight .mi, .highlight .mo, .highlight .il { + color: var(--blue); +} + +.highlight .c, .highlight .cp, .highlight .cm, .highlight .cs, .highlight .c1 { + color: var(--comment); +} + +.highlight .vi { + color: var(--purple); +} + +.grid { + display: grid; + grid-gap: 0 var(--margin); + margin: 0 auto; + padding: 0 var(--margin); + max-width: 1100px; +} + +.grid > * { + min-width: 0; +} + +.top-bar { + border-bottom: 1px solid var(--grey); +} + +.top-bar .grid { + align-items: center; +} + +.top-bar .logo { + font-size: 1.2rem; + font-weight: bold; + grid-column: 1; +} + +.top-bar .logo img { + margin-right: 5px; + vertical-align: top; +} + +.top-bar nav { + grid-column: 2; + text-align: right; +} + +.top-bar .expand-menus { + display: none; + grid-column: 2; + text-align: right; +} + +.top-bar .expand-menus a { + color: var(--text); + cursor: pointer; + display: inline-block; + margin-right: var(--margin); + padding: var(--margin) 0; + text-decoration: none; +} + +.top-bar .expand-menus a:last-child { + margin-right: 0; +} + +.top-bar nav ul { + margin: var(--margin) 0; +} + +.top-bar nav li { + display: inline-block; + margin: 0 var(--margin) 0 0; +} + +.top-bar nav li:last-child { + margin-right: 0; +} + +.top-bar nav a { + color: var(--black); + font-weight: normal; + text-decoration: none; +} + +.top-bar nav a:hover { + color: var(--blue); +} + +.top-bar nav a.current { + color: var(--blue); +} + +.page { + margin-top: var(--margin); +} + +.page .grid { + justify-content: start; +} + +.page aside, +.page .content { + grid-row: 1; +} + +.page .left.visible { + display: block; +} + +.page .right { + display: none; +} + +.page aside { + align-self: start; + overflow-y: scroll; + padding-right: 10px; + width: 180px; +} + +.page aside h1 { + margin-bottom: 5px; +} + +.page aside a { + color: var(--black); + font-weight: normal; +} + +.page aside a:hover { + color: var(--blue); +} + +.page aside .current { + color: var(--blue); +} + +.page aside h1 { + font-size: 1rem; +} + +.page aside ul { + margin-left: 0; + font-size: 0.9rem; +} + +.page aside li { + list-style: none; + margin-bottom: 5px; +} + +.page aside li ul, .page aside li ol { + margin-top: 5px; +} + +.page aside li ul, .page aside li ol { + margin-left: calc(var(--margin) / 2); +} + +.missing-page { + text-align: center; +} + +.missing-page img { + margin-top: 20px; +} + +.admonition { + border: 1px solid var(--border); + border-radius: var(--border-radius); + box-shadow: var(--shadow-size) var(--shadow-size) var(--shadow); + display: flex; + flex-direction: row; + font-size: 0.9rem; + margin-bottom: var(--margin); + padding: 10px; +} + +.admonition pre { + box-shadow: none; +} + +.admonition.info { + background: var(--lblue); + border-color: var(--dblue); +} + +.admonition.warn { + background: var(--lred); + border-color: var(--dred); +} + +.admonition.note { + background: var(--yellow); + border-color: var(--dyellow); +} + +.admonition.tip { + background: var(--lgreen); + border-color: var(--dgreen); +} + +.admonition.discuss .icon:before { + content: "\f086"; +} + +.admonition.info .icon:before { + content: "\f05a"; +} + +.admonition.warn .icon:before { + content: "\f06a"; +} + +.admonition.tip .icon:before { + content: "\f0eb"; +} + +.admonition.note .icon:before { + content: "\f040"; +} + +.admonition .icon { + font-size: 2rem; + line-height: 1; + margin-right: 10px; +} + +.admonition .text { + align-self: center; +} + +.admonition .text > *:last-child { + margin-bottom: 0; +} + +.footnotes { + border-top: 1px solid var(--border); + color: var(--quote); + font-size: 0.8rem; + padding-top: var(--margin); +} + +@media only screen and (max-width: 800px) { + .page .content { + grid-row: 2; + } + + .top-bar .expand-menus { + display: block; + } + + .top-bar nav { + display: none; + grid-column: 1 / 3; + grid-row: 2; + text-align: left; + } + + .top-bar nav ul { + margin-top: 0; + } + + .top-bar nav.visible { + display: block; + } + + .page .left { + display: none; + } +} + +@media only screen and (max-width: 700px) { + .content table { + display: block; + max-width: fit-content; + overflow-x: scroll; + white-space: nowrap; + } +} + +@media only screen and (min-width: 800px) { + .page aside { + height: 85vh; + margin-top: 0.8rem; + position: sticky; + top: var(--margin); + } +} + +@media only screen and (min-width: 950px) { + .page .right { + display: block; + grid-column: 3; + } +} + +@media only screen and (max-width: 500px) { + .top-bar .logo { + grid-column: 1; + grid-row: 1; + margin-top: calc(var(--margin) / 2); + } + + .top-bar .expand-menus { + grid-column: 1; + grid-row: 2; + text-align: left; + } + + .top-bar .expand-menus a { + padding: calc(var(--margin) / 2) 0; + } + + .top-bar nav { + grid-column: 1; + grid-row: 3; + } + + .top-bar nav li { + width: 100%; + } + + .page { + margin-top: calc(var(--margin) / 2); + } +} diff --git a/docs/source/css/reset.css b/docs/source/css/reset.css new file mode 100644 index 000000000..836afbc73 --- /dev/null +++ b/docs/source/css/reset.css @@ -0,0 +1,176 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + line-height: 1.15; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace; + font-size: 1em; +} + +a { + background-color: transparent; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace; + font-size: 1em; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +img { + border-style: none; +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + padding: 0; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details { + display: block; +} + +summary { + display: list-item; +} + +template { + display: none; +} + +[hidden] { + display: none; +} diff --git a/docs/source/internals/compiler.md b/docs/source/design/compiler.md similarity index 88% rename from docs/source/internals/compiler.md rename to docs/source/design/compiler.md index a8468a91a..d15b6098e 100644 --- a/docs/source/internals/compiler.md +++ b/docs/source/design/compiler.md @@ -1,4 +1,8 @@ -# The compiler +--- +{ + "title": "The compiler" +} +--- Inko's compiler compiles Inko source files into machine code using LLVM. The compiler is written in Rust. Originally we had plans for a self-hosting @@ -113,19 +117,16 @@ after We can represent this code using the following graph: -```mermaid -graph LR - A["A
let a = [10]"]; - B["B
if true"]; - C["C
let b = a"]; - D["D
bar"]; - E["E
after"]; - - A --> B; - B -- "true" --> C; - B -- "false" --> D; - C --> E; - D --> E; +``` + C + true ╭───────────╮ + A B ╭────────> │ let b = a │ ──╮ E +╭──────────────╮ ╭─────────╮ │ ╰───────────╯ │ ╭───────╮ +│ let a = [10] │ ──> │ if true │ ──┤ ├──> │ after │ +╰──────────────╯ ╰─────────╯ │ ╭───────────╮ │ ╰───────╯ + ╰────────> │ bar │ ──╯ + false ╰───────────╯ + D ``` Now say we want to look up the state of the register storing `a`. If we follow @@ -196,17 +197,48 @@ runtime performance over compile times (often resulting in long compile times). The following shapes are used: -| Shape | Dispatch | Purpose -|:--------|:---------|:----------------------------------------------------- -| Owned | Dynamic | The default shape and used for owned values that aren't given a more specific shape. -| Mut | Dynamic | Used for mutable references. -| Ref | Dynamic | Used for immutable references. -| Int | Static | Used for `Int`, removing the need for boxed integers. -| Float | Static | Used for `Float`, removing the need for boxed floats. -| Boolean | Static | Used for the `Bool` type, which is internally represented as an unboxed `Int`. -| Nil | Static | Used for the `Nil` type, which is internally represented as an unboxed `Int` similar to `Bool`. -| String | Static | Used for the `String` type. -| Atomic | Dynamic | Used for other types that use atomic reference counting, such as `Channel` and processes. +|= +| Shape +| Dispatch +| Purpose +|- +| Owned +| Dynamic +| The default shape and used for owned values that aren't given a more specific + shape. +|- +| Mut +| Dynamic +| Used for mutable references. +|- +| Ref +| Dynamic +| Used for immutable references. +|- +| Int +| Static +| Used for `Int`, removing the need for boxed integers. +|- +| Float +| Static +| Used for `Float`, removing the need for boxed floats. +|- +| Boolean +| Static +| Used for the `Bool` type +|- +| Nil +| Static +| Used for the `Nil` type +|- +| String +| Static +| Used for the `String` type. +|- +| Atomic +| Dynamic +| Used for other atomic reference counting types, such as `Channel` and + processes. This approach means that the following two methods compile to the same code, provided the `foo` method is given an owned value: @@ -226,7 +258,7 @@ essentially acts as a placeholder to be replaced with a more specific instruction. After generating the initial MIR and verifying it, the compiler runs the pass -`mir::specialize::Speciailze`. This pass processes one method at a time, +`mir::specialize::Specialize`. This pass processes one method at a time, starting with `Main.main`. The pass specializes types it encounters in registers, and analyzes method calls to determine what other methods need to be processed. This is done for both static and dynamic dispatch, and only takes diff --git a/docs/source/guides/goals.md b/docs/source/design/goals.md similarity index 97% rename from docs/source/guides/goals.md rename to docs/source/design/goals.md index c9bb62ce4..804608bd7 100644 --- a/docs/source/guides/goals.md +++ b/docs/source/design/goals.md @@ -1,11 +1,16 @@ -# Goals and non-goals +--- +{ + "title": "Goals and non-goals" +} +--- Inko has a set of goals it wants to achieve, and certain things we explicitly don't want to implement/provide, which we list below. -!!! note - This is a list of _goals_, and as such some goals have yet to be - implemented. +::: note +This is a list of _goals_, and as such some goals have yet to be +implemented. +::: ## Goals diff --git a/docs/source/internals/runtime.md b/docs/source/design/runtime.md similarity index 99% rename from docs/source/internals/runtime.md rename to docs/source/design/runtime.md index c8fe25489..9d761fac5 100644 --- a/docs/source/internals/runtime.md +++ b/docs/source/design/runtime.md @@ -1,4 +1,8 @@ -# The Inko runtime +--- +{ + "title": "The runtime" +} +--- Inko's native code compiler generates code to LLVM, linked against a small runtime library written in Rust. The runtime library takes care of scheduling diff --git a/docs/source/images/favicon.ico b/docs/source/favicon.ico similarity index 100% rename from docs/source/images/favicon.ico rename to docs/source/favicon.ico diff --git a/docs/source/getting-started/classes.md b/docs/source/getting-started/classes.md new file mode 100644 index 000000000..1ce890c4e --- /dev/null +++ b/docs/source/getting-started/classes.md @@ -0,0 +1,233 @@ +--- +{ + "title": "Classes" +} +--- + +Classes are used for storing state used by methods. One such class we've seen +many times so far is the `Main` class, which defines the main process to run. + +Classes are defined using the `class` keyword like so: + +```inko +class Person { + +} +``` + +Here `Person` is the name of the class. + +## Fields + +Fields are defined using the `let` keyword in a `class` body: + +```inko +class Person { + let @name: String + let @age: Int +} +``` + +Here we've defined two fields: `name` of type `String`, and `age` of type `Int`. +The `@` symbol isn't part of the name, it's just used to disambiguate the syntax +when referring to fields. Using fields uses the same syntax: + +```inko +class Person { + let @name: String + let @age: Int + + fn name -> String { + @name + } +} +``` + +Here the `name` method just returns the value of the `@name` field. + +We don't need to define getter and setter methods for fields though, as Inko +allows you to get and set field values directly: + +```inko +let alice = Person { @name = 'Alice', @age = 42 } + +alice.name # => 'Alice' +alice.name = 'Bob' +alice.name # => 'Bob' +``` + +The type fields are exposed as depends on the kind of method the field is used +in. If a method is immutable, the field type is `ref T`. If the method is +mutable, the type of a field is instead `mut T`, unless it's defined as a +`ref T`: + +```inko +class Person { + let @name: String + let @grades: ref Array[Int] + let @friends: Array[ref Person] + + fn foo { + @name # => String + @grades # => ref Array[Int] + @friends # => ref Array[ref Person] + } + + fn mut foo { + @name # => String + @grades # => ref Array[Int] + @friends # => mut Array[ref Person] + } + + fn move foo { + @name # => String + @grades # => ref Array[Int] + @friends # => Array[ref Person] + } +} +``` + +If a method takes ownership of its receiver, you can move fields +out of `self`, and the fields are exposed using their original types (i.e. +`@name` is exposed as `String` and not `mut String`). + +When moving a field, the remaining fields are dropped individually and the owner +of the moved field is partially dropped. If a type defines a custom destructor, +a `move` method can't move the fields out of its receiver. + +## Swapping field values + +Similar to local variables, `:=` can be used to assign a field a new value and +return its old value, instead of dropping the old value: + +```inko +class Person { + let @name: String + + fn mut replace_name(new_name: String) -> String { + @name := new_name + } +} +``` + +## Initialising classes + +An instance of a class is created as follows: + +```inko +Person { @name = 'Alice', @age = 42 } +``` + +Here we create a `Person` instance with the `name` field set to `'Alice'`, and +the `age` field set to `42`. + +Sometimes creating an instance of a class involves complex logic to assign +values to certain fields. In this case it's best to create a static method to +create the instance for you. For example: + +```inko +class Person { + let @name: String + let @age: Int + + fn static new(name: String, age: Int) -> Person { + Person { @name = name, @age = age } + } +} +``` + +Of course nothing complex is happening here, instead we're just trying to +illustrate what using a static method for this might look like. + +## Enums + +Inko also has "enum classes", created using `class enum`. Enum classes are used +to create sum types, also known as enums: + +```inko +class enum Letter { + case A + case B + case C +} +``` + +Here we've defined a `Letter` enum with three possible cases: `A`, `B`, and `C`. +We can create instances of these cases as follows: + +```inko +Letter.A +Letter.B +Letter.C +``` + +The cases in an enum support arguments, allowing you to store data in them +similar to using regular classes with fields: + +```inko +class enum OptionalString { + case None + case Some(String) +} +``` + +We can then create an instance of the `Some` case as follows: + +```inko +OptionalString.Some('hello') +``` + +Unlike other types of classes, you can't use the syntax `OptionalString { ... }` +to create an instance of an enum class. + +## Processes + +Processes are defined using `class async`, and creating instances of such +classes spawns a new process: + +```inko +class async Cat { + +} +``` + +Just like regular classes, async classes can define fields using the `let` +keyword: + +```inko +class async Cat { + let @name: String +} +``` + +Creating instances of such classes is done the same way as with regular classes: + +```inko +Cat { @name = 'Garfield' } +``` + +Processes can define `async` methods that can be called by other processes: + +```inko +class async Cat { + let @name: String + + fn async give_food { + # ... + } +} +``` + +## Drop order + +When dropping an instance of a class with fields, the fields are dropped in +definition order: + +```inko +class Person { + let @name: String + let @age: Int +} +``` + +When dropping an instance of this class, `@name` is dropped before `@age`. diff --git a/docs/source/getting-started/concurrency.md b/docs/source/getting-started/concurrency.md index 05026dc67..e0246a144 100644 --- a/docs/source/getting-started/concurrency.md +++ b/docs/source/getting-started/concurrency.md @@ -1,105 +1,231 @@ -# Concurrency - -For concurrency Inko uses "lightweight processes", also known as green threads. -Processes are isolated from each other and don't share memory, making race -conditions impossible. Communication between processes is done by sending -messages, which look like regular method calls. Messages are processed in FIFO -order. Values passed with these messages have their ownership transferred to the -receiving process. - -Processes run concurrently, and Inko's scheduler takes care of balancing the -workload across OS threads. +--- +{ + "title": "Concurrency and recovery" +} +--- -A process finishes when it has no more messages to process, and no references to -the process exist. +The [](hello-concurrency) tutorial provides a basic overview of running code +concurrently. Let's take a look at the details of what makes concurrency safe in +Inko. -Processes are cheap to spawn, with a single empty process needing less than 1 -KiB of memory. +::: tip +This guide assumes you've read [](hello-concurrency) and [](memory-management), +as these guides explain the basics of what we'll build upon in this guide. +::: -A process is defined using the syntax `class async`: +To recap, Inko uses lightweight processes for concurrency. These processes don't +share memory, instead values are _moved_ between processes. Processes are +defined using `class async`: ```inko -class async Counter {} +class async Counter { + let @number: Int +} ``` -## The main process - -Each program starts with a single process called "Main". The main process must -be defined explicitly, and must define the async method "main": +Interacting with processes is done using `async` methods. Such methods are +defined like so: ```inko -class async Main { - fn async main { +class async Counter { + let @number: Int + fn async mut increment(amount: Int) { + @number += amount } } ``` -When the main process finishes and no references to it exist, the program stops; -even if other processes are still running. +In the [](hello-concurrency) tutorial we only used value types as the arguments +for `async` methods, which are easy to move between processes as they're copied +upon moving. What if we want to move more complex values around? + +Inko's approach to making this safe is to restrict moving data between processes +to values that are "sendable". A value is sendable if it's either a value type +(`String` or `Int` for example), or a unique value, of which the type signature +syntax is `uni T` (e.g. `uni Array[User]`). + +## Unique values -## Defining fields +::: note +If you're familiar with [Pony](https://www.ponylang.io/), Inko's unique values +are the same as Pony's isolated values, just using a name we feel better +captures their purpose/intent. +::: -A process can define zero or more fields: +A unique value is unique in the sense that only a single reference to it can +exist. The best way to explain this is to use a cardboard box as a metaphor: a +unique value is a box with items in it. Within that box these items are allowed +to refer to each other using borrows, but none of the items are allowed to refer +to values outside of the box or the other way around. This makes it safe to move +the data between processes, as no data race conditions can occur. + +### Creating unique values + +Unique values are created using the `recover` expression, and the return value +of such an expression is turned from a `T` into `uni T`, or from a `uni T` into +a `T`, depending on what the original type is: ```inko -class async Counter { - let @value: Int -} +let a = recover [10, 20] # => uni Array[Int] +let b = recover a # => Array[Int] ``` -While the field types don't have to be sendable, when creating an instance the -assigned value _must_ be sendable. For example: +This is why this process is known as "recovery": when the returned value is +owned we "recover" the ability to move it between processes. If the returned +value is instead a unique value, we recover the ability to perform more +operations on it (i.e. we lift the restrictions that come with a `uni T` value). + +### Capturing variables + +When capturing variables defined outside of the `recover` expression, they are +exposed using the following types: + +|= +| Type on the outside +| Type on the inside +|- +| `T` +| `uni mut T` +|- +| `uni T` +| `uni T` +|- +| `mut T` +| `uni mut T` +|- +| `ref T` +| `uni ref T` + +If a `recover` returns a captured `uni T` variable, the variable is _moved_ such +that the original one is no longer available. + +### Borrowing unique values + +Unique values can be borrowed using `ref` and `mut`, resulting in values of type +`uni ref T` and `uni mut T` respectively. These borrows come with signifiant +restrictions: + +1. They can't be assigned to variables +1. They're not compatible with `ref T` and `mut T`, meaning you can't pass them + as arguments. +1. They can't be used in type signatures + +This effectively means they can only be used as method call receivers, provided +the method is available as discussed below. + +## Unique values and method calls + +Methods can be called on unique values provided the methods meet the following +criteria: + +1. If a method takes any arguments and/or specifies a return type, these types + must be sendable. If any of these types isn't sendable, the method isn't + available. +1. If a method doesn't take any arguments and is immutable, and returns an owned + value, the method is available if and only if these types are sendable + (including any sub values they may store). + +::: note +These restrictions can make working with unique values a bit tricky at times. We +aim to implement more sophisticated compiler analysis over time to make working +with unique values as easy as possible. +::: + +To illustrate this, consider the following expression: ```inko -class async List { - let @values: Array[Int] -} +let a = recover 'testing' + +a.to_upper ``` -To assign the `@values` field when creating an instance of `List`, we'd have to -assign it a unique value: +The variable `a` contains a value of type `uni String`. The expression +`a.to_upper` is valid because `to_upper` doesn't take any arguments, and its +return type (`String`) is a value type, which is a sendable type. + +Because `a` is a unique value, we can also write the following: ```inko -List { @values = recover [10, 20] } +let a = recover 'testing' # => uni String +let b = recover a.to_upper # => uni String ``` -Since a `uni Array[Int]` can be moved into a `Array[Int]`, this is valid. Had we -assigned it a regular array the program would not compile, because `Array[Int]` -isn't sendable. - -## Spawning processes +Here's a more complicated example: -A process is spawned by creating an instance of its class. In the above example, -`List { ... }` spawns the process for us, then gives us an owned value pointing -to the process. When spawning a process it doesn't start running right away, -instead it waits for its first message. +```inko +import std.net.ip.IpAddress +import std.net.socket.TcpServer -## Defining messages +class async Main { + fn async main { + let server = recover TcpServer + .new(IpAddress.v4(127, 0, 0, 1), port: 40_000) + .unwrap -Messages are defined by defining methods with the `async` keyword. The arguments -and return type of an `async` method must be sendable (see [Memory -management](memory-management.md) for more information). + let client = recover server.accept.unwrap + } +} +``` -`async` methods can't specify return types, and thus can't return any values. -Channels can be used when one process needs the result of an `async` method of -another process. +Here `server` is of type `uni TcpServer`. The expression `server.accept` is +valid because `server` is unique and thus we can capture it, and because +`accept` meets rule two: it doesn't mutate its receiver, doesn't take any +arguments, and its return type is sendable. -Here's how you'd define a message that just writes to STDOUT: +Here's an example of something that isn't valid: ```inko -import std.stdio.STDOUT +let a = recover [ByteArray.new] + +a.push(ByteArray.new) +``` + +This isn't valid because `a` is of type `uni Array[ByteArray]`, and `push` takes +an argument of type `ByteArray` which isn't sendable, thus the `push` method +isn't available. + +## Channels + +Aside from passing arguments along with `async` method calls, you can also use +the `Channel` type to send data between processes. `Channel` is a fixed size, +multiple-producer multiple-consumer, first-in-first-out queue. `Channel` is a +value type, so you can share it between processes. + +Channels are useful if one process schedules work to be performed by a group of +other processes, and wants to wait for the results to come in. In this case the +process gives the other processes a reference to a `Channel`, then waits for +these processes to send over the channel. + +## Spawning processes with fields +When spawning a process, the values assigned to its fields must be sendable: + +```inko class async Example { - fn async write(message: String) { - STDOUT.new.print(message) + let @numbers: Array[Int] +} + +class async Main { + fn async main { + Example { @numbers = recover [10, 20] } } } ``` -## Sending messages +## Defining async methods + +When defining an `async` method, the following rules are enforced by the +compiler: + +- The arguments must be sendable +- Return types aren't allowed, instead you can use the `Channel` type to send + data back (if needed) -Sending messages uses the same syntax as regular method calls: +## Calling async methods + +Calling `async` methods is done using the same syntax as for calling regular +methods: ```inko class async Counter { @@ -126,9 +252,6 @@ class async Main { } ``` -Because `async` methods can't return a value, we must pass in a `Channel` to -send the output to and receive from. - ## Dropping processes Processes are value types, making it easy to share references to a process with diff --git a/docs/source/getting-started/control-flow.md b/docs/source/getting-started/control-flow.md new file mode 100644 index 000000000..70f6059a4 --- /dev/null +++ b/docs/source/getting-started/control-flow.md @@ -0,0 +1,291 @@ +--- +{ + "title": "Control flow" +} +--- + +Inko has the following control flow constructs: `if`, `and`, `or`, `while`, +`loop`, `try`, and `throw`. + +## Conditionals + +For conditionals we use `if`: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let num = 42 + + if num == 42 { out.print('yes') } else { out.print('no') } + } +} +``` + +When you run this program, the output is "yes". If you change the value of `num` +to e.g. `50`, the output is instead "no". + +Inko also supports `else if` like so: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let num = 50 + + if num == 42 { + out.print('A') + } else if num == 50 { + out.print('B') + } else { + out.print('C') + } + } +} +``` + +The output of this program is "B". + +To perform boolean AND and OR operations, you can use the `and` and `or` +keywords: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let num = 50 + + if num == 42 or num == 50 { + out.print('A') + } else if num >= 10 and num <= 20 { + out.print('B') + } else { + out.print('C') + } + } +} +``` + +This prints "A" if you run the program as-is, and "B" if you change `num` to +`20`. + +## Loops + +Inko has two types of loops: unconditional loops which use the `loop` keyword, +and conditional loops that use the `while` keyword. + +Here we use a conditional loop to print a number 10 times: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let mut num = 0 + + while num < 10 { + out.print(num.to_string) + num += 1 + } + } +} +``` + +The output of this program is as follows: + +``` +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +``` + +The following program loops indefinitely, printing an ever increasing number +every 500 milliseconds: + +```inko +import std.process.(sleep) +import std.stdio.STDOUT +import std.time.Duration + +class async Main { + fn async main { + let out = STDOUT.new + let mut num = 0 + + loop { + out.print(num.to_string) + num += 1 + sleep(Duration.from_millis(500)) + } + } +} +``` + +You can control the iteration of a loop using the `next` and `break` keywords: +`next` jumps to the start of the next loop iteration, while `break` jumps out of +the inner-most loop: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + + loop { + out.print('hello') + break + } + } +} +``` + +This program prints "hello", then stops the loop. + +## throw + +`throw` takes an expression and wraps it in the `Error` constructor of the +`std.result.Result` enum, then returns it: + +```inko +fn example -> Result[Int, String] { + throw 'oh no!' +} +``` + +This is the equivalent of the following: + +```inko +fn example -> Result[Int, String] { + return Result.Error('oh no!') +} +``` + +The `throw` keyword is only available in methods of which the return type is a +`Result`. + +## try + +`try` takes an expression of which the type is either `std.result.Result` or +`std.option.Option`, and unwraps it. If the value is a `Result.Error` or an +`Option.None`, the value is returned as-is. + +Consider this example of using `try` with an `Option` value: + +```inko +let value = Option.Some(42) + +try value +``` + +This is the equivalent of: + +```inko +let value = Option.Some(42) + +match value { + case Some(v) -> v + case None -> return Option.None +} +``` + +And when using a `Result`: + +```inko +let value = Result.Ok(42) + +try value +``` + +This is the equivalent of: + +```inko +let value = Result.Ok(42) + +match value { + case Ok(v) -> v + case Error(e) -> return Result.Error(e) +} +``` + +## Conditional moves + +If a variable is dropped conditionally, it's not available afterwards: + +```inko +let a = [10] + +if something { + let b = a +} + +# `a` _might_ be moved at this point, so we can't use it anymore. +``` + +The same applies to loops: if a variable is moved in a loop, it can't be used +outside the loop: + +```inko +let a = [10] + +loop { + let b = a +} +``` + +Any variable defined outside of a loop but moved inside the loop _must_ be +assigned a new value before the end of the loop. This means the above code is +incorrect, and we have to fix it like so: + +```inko +let mut a = [10] + +loop { + let b = a + + a = [] +} +``` + +We can do the same for conditions: + +```inko +let mut a = [10] + +if condition { + let b = a + + a = [] +} + +# `a` can be used here, because we guaranteed it always has a value at this +# point +``` + +If a value is moved in one branch of a condition, it remains available in the +other branches: + +```inko +let a = [10] + +# This is fine, because only one branch ever runs. +if foo { + let b = a +} else if bar { + let b = a +} +``` diff --git a/docs/source/getting-started/destructors.md b/docs/source/getting-started/destructors.md new file mode 100644 index 000000000..4d492a9e9 --- /dev/null +++ b/docs/source/getting-started/destructors.md @@ -0,0 +1,78 @@ +--- +{ + "title": "Destructors" +} +--- + +Types can define a method to run when before they are dropped, known as a +"destructor". Destructors are defined by implementing the `Drop` trait from the +`std.drop` module like so: + +```inko +import std.drop.Drop +import std.stdio.STDOUT + +class Person { + let @name: String +} + +impl Drop for Person { + fn mut drop { + STDOUT.new.print("dropping {@name}") + } +} + +class async Main { + fn async main { + Person { @name = 'Alice' } + } +} +``` + +If you run this program, the output is "dropping Alice". + +The `drop` method is always a mutable and private methods. If you try to +implement it using `fn pub drop` or `fn drop`, you'll run into a compile-time +error. + +## Escaping references + +Destructors are mutable methods, which may result in a value that's to be +dropped escaping the `drop` call: + +```inko +import std.drop.Drop +import std.stdio.STDOUT + +class Person { + let @name: String + let @people: mut Array[ref Person] +} + +impl Drop for Person { + fn mut drop { + @people.push(self) + STDOUT.new.print("dropping {@name}") + } +} + +class async Main { + fn async main { + let people = [] + let person = Person { @name = 'Alice', @people = people } + } +} +``` + +In such cases, a runtime panic is produced: + +``` +dropping Alice +Stack trace (the most recent call comes last): + /var/home/yorickpeterse/Downloads/test.inko:19 in main.Main.main + /var/home/yorickpeterse/Downloads/test.inko:4 in main.Person.$dropper +Process 'Main' (0x56074450f210) panicked: can't drop a value of type 'Person' as it still has 1 reference(s) +``` + +In practice you're unlikely to run into cases such as this, but it's worth +keeping in mind. diff --git a/docs/source/getting-started/error-handling.md b/docs/source/getting-started/error-handling.md deleted file mode 100644 index 1c3fc28a6..000000000 --- a/docs/source/getting-started/error-handling.md +++ /dev/null @@ -1,273 +0,0 @@ -# Error handling - -Let's take a look at one of the defining features of Inko: its approach to error -handling, inspired by the article ["The Error -Model"](http://joeduffyblog.com/2016/02/07/the-error-model/). To explain this, -we'll transform our "Hello, World!" program from the ["Hello, -World!"](hello-world.md) guide into a program that writes the message to a file, -reads it back, then writes it to STDOUT. - -## "Hello, World!" using files - -We'll start with the following code: - -```inko -import std.fs.file.ReadWriteFile - -class async Main { - fn async main { - - } -} -``` - -Instead of importing `STDOUT` we import `ReadWriteFile`. This is a type used for -both reading and writing from and to a file. The `std.fs.file` module also -provides a type for just reading files (`ReadOnlyFile`), and a type for just -writing files (`WriteOnlyFile`). In our case we need both, hence the use of -`ReadWriteFile`. - -Next we'll need to create our file: - -```inko -import std.fs.file.ReadWriteFile - -class async Main { - fn async main { - let file = ReadWriteFile.new('hello.txt').expect('failed to create the file') - } -} -``` - -`ReadWriteFile.new('hello.txt')` creates a new instance of the `ReadWriteFile` -type and tells it to try and open the file `hello.txt`, creating it if it -doesn't exist. - -Creating a file may fail, such as when you don't have permissions to do so. As -such, the `new` method returns a `Result[ReadWriteFile, Error]`, where `Error` -is the `std.io.Error` type: - -```inko -fn pub static new(path: IntoPath) -> Result[ReadWriteFile, Error] { - # ... -} -``` - -The `Result` type is a regular algebraic type, similar to `Option`. To use the -underlying value, we have to pattern match against the `Result` value. - -Errors can be handled in a few different ways. The most verbose approach is to -pattern match using `match`: - -```inko -match ReadWriteFile.new('hello.txt') { - case Ok(file) -> ... - case Error(error) -> ... -} -``` - -We can also use the `try` keyword to return a new `Result` containing the error -value, if an error occurred: - -```inko -try ReadWriteFile.new('hello.txt') -``` - -`try` is only available if the surrounding method or closure's return type is a -`Result` or `Option`. `try expr` works as follows: - -- If `expr` is a `Result` and the case is `Error`, return the `Error` case, - otherwise unwrap the `Ok`. -- If `expr` is an `Option` and the case is `None`, return a `None`, otherwise - unwrap the `Some`. - -For example, this: - -```inko -let result: Result[Int, String] = Result.Ok(42) - -try result -``` - -Is the same as this: - -```inko -let result: Result[Int, String] = Result.Ok(42) - -match result { - case Ok(val) -> val - case Error(err) -> return Result.Error(err) -} -``` - -We can also use methods, such as `unwrap` and `expect`, to get the underlying -value and panic if an error is encountered: - -```inko -ReadWriteFile.new('hello.txt').unwrap # Panic with a default error message -ReadWriteFile.new('hello.txt').expect('oh no!') # Panic with the given message -``` - -In general you'll want to avoid using `unwrap` and related methods in libraries, -and only use it in executables if you're certain the error won't occur _or_ -there's no better option than terminating the program in the event of an error. - -For the sake of brevity we'll use `expect` in the rest of this guide. - -Moving on, let's write the message to the file: - -```inko -import std.fs.file.ReadWriteFile - -class async Main { - fn async main { - let file = ReadWriteFile.new('hello.txt').expect('failed to create the file') - - file.write_string('Hello, World!').expect('failed to write to the file') - } -} -``` - -Again the operation can fail, such as when the file is removed after creating -it, and so again we must handle any errors. And again, for the sake of -simplicity, we'll just abort in the event we encounter an error. - -If you now save the above code and run it, you'll end up with a file called -`hello.txt` in the current working directory, containing the text "Hello, -World!". - -Let's combine this with writing the message back to STDOUT. For this we'll need -to import STDOUT again: - -```inko -import std.fs.file.ReadWriteFile -import std.stdio.STDOUT - -class async Main { - fn async main { - let file = ReadWriteFile.new('hello.txt').expect('failed to create the file') - - file.write_string('Hello, World!').expect('failed to write to the file') - } -} -``` - -Now we'll need to read the contents back from the file. First we must rewind it, -as reading continues where the last write (or read) ended; then we must read the -contents into a `ByteArray`: - -```inko -import std.fs.file.ReadWriteFile -import std.stdio.STDOUT - -class async Main { - fn async main { - let file = ReadWriteFile.new('hello.txt').expect('failed to create the file') - - file.write_string('Hello, World!').expect('failed to write to the file') - file.seek(0).expect('failed to rewind the file cursor') - - let bytes = ByteArray.new - - file.read_all(bytes).expect('failed to read the file') - } -} -``` - -Here we rewind to the start using `file.seek(0).expect(...)`, aborting if we -encounter an error. After that we read the entire file into a `ByteArray`. As -the name suggests, `ByteArray` is a type that stores bytes. Since files can -contain virtually anything, reads operate on byte arrays instead of using -strings. - -To write the bytes back to STDOUT, we can use the `write_bytes` method: - -```inko -import std.fs.file.ReadWriteFile -import std.stdio.STDOUT - -class async Main { - fn async main { - let file = ReadWriteFile.new('hello.txt').expect('failed to create the file') - - file.write_string('Hello, World!').expect('failed to write to the file') - file.seek(0).expect('failed to rewind the file cursor') - - let bytes = ByteArray.new - - file.read_all(bytes).expect('failed to read the file') - STDOUT.new.write_bytes(bytes).expect('failed to write to STDOUT') - } -} -``` - -We now have a little program that writes "Hello, World!" to a file, reads it -back, then writes it to STDOUT. But what's missing is removing the file once -we're done. And so for our next trick we'll make `hello.txt` disappear: - -```inko -import std.fs.file.(ReadWriteFile, remove) -import std.stdio.STDOUT - -class async Main { - fn async main { - let file = ReadWriteFile.new('hello.txt').expect('failed to create the file') - - file.write_string('Hello, World!').expect('failed to write to the file') - file.seek(0).expect('failed to rewind the file cursor') - - let bytes = ByteArray.new - - file.read_all(bytes).expect('failed to read the file') - STDOUT.new.write_bytes(bytes).expect('failed to write to STDOUT') - - let _ = file.path.remove_file - } -} -``` - -Removing files is done using the method `std.fs.file.remove`, which we now -import along with the `ReadWriteFile` type. Because failing to remove the file -isn't a big deal, we ignore the `Result` returned by it by assigning it to `_`. - -!!! tip - At the moment, the compiler doesn't enforce using a `Result` when it's - returned. In the future it will be an error to ignore `Result` values. To - future-proof your code, make sure to assign `Result` values that can be - ignored to `_`. - -## Producing errors - -When using the `Result` type for error handling, there are two ways we can -signal an error: - -1. Using a regular `return`: `return Result.Error('oh no!')` -1. Using the `throw` keyword: `throw 'oh no!'` - -Using `throw x` is the same as `return Result.Error(x)`, but saves you a bit of -typing. - -If a method returns an `Option`, the `throw` keyword can't be used as the `None` -case of `Option` doesn't wrap a value. In this case you have to use a regular -`return Option.None`. - -## The cost of error handling - -Error handling involves pattern matching, which does incur a runtime cost, -though the cost may not matter much on modern hardware with good branch -predictors. `Result` types are also heap allocated at the moment, but we hope to -optimise this away in future releases. - -## Errors that abort execution - -Inko has two types of errors: those than can be handled at runtime using `try` -or `match`, and critical errors that abort the program. Such an error is called -a "panic", and is used for errors that shouldn't be handled by the developer. - -An example of a panic is when you divide by zero, or when accessing an out of -bounds index in an array. Both cases are the result of incorrect code, and as -such all we can do is abort. - -As a rule of thumb, panics should only be used when they can be triggered as the -result of incorrect code, or if there's nothing you can do other than to abort -(e.g. when your program requires a file to exist, but the file is missing). diff --git a/docs/source/guides/ffi.md b/docs/source/getting-started/ffi.md similarity index 84% rename from docs/source/guides/ffi.md rename to docs/source/getting-started/ffi.md index 2132fe7b9..ef94a1464 100644 --- a/docs/source/guides/ffi.md +++ b/docs/source/getting-started/ffi.md @@ -1,4 +1,8 @@ -# Foreign Function Interface +--- +{ + "title": "Interacting with C" +} +--- Sometimes you are in need of certain functionality for which no Inko library exists, but a library written in C providing the functionality does. Inko's @@ -21,9 +25,10 @@ may complicate using certain C libraries. In short: you should avoid using C code as much as you can. When you _do_ need to use it, be careful as it's easy to make mistakes. -!!! warning - We'll say it again just to be clear: avoid using C code unless you have - determined there's no other option. +::: warn +We'll say it again just to be clear: avoid using C code unless you have +determined there's no other option. +::: With that out of the way, let's get started. @@ -33,19 +38,54 @@ When interacting with C code, we need to work with types that are specific to C, such as pointers. Inko's FFI offers the following types, along with their C equivalents: -| Inko type | Size (bits) | C type -|:-------------|:------------|:---------- -| `Int8` | 8 | `int8_t` -| `Int16` | 16 | `int16_t` -| `Int32` | 32 | `int32_t` -| `Int64` | 64 | `int64_t` -| `UInt8` | 8 | `uint8_t` -| `UInt16` | 16 | `uint16_t` -| `UInt32` | 32 | `uint32_t` -| `UInt64` | 64 | `uint64_t` -| `Float32` | 32 | `float` -| `Float64` | 64 | `double` -| `Pointer[T]` | 64[^1] | `T*` +|= +| Inko type +| Size (bits) +| C type +|- +| `Int8` +| 8 +| `int8_t` +|- +| `Int16` +| 16 +| `int16_t` +|- +| `Int32` +| 32 +| `int32_t` +|- +| `Int64` +| 64 +| `int64_t` +|- +| `UInt8` +| 8 +| `uint8_t` +|- +| `UInt16` +| 16 +| `uint16_t` +|- +| `UInt32` +| 32 +| `uint32_t` +|- +| `UInt64` +| 64 +| `uint64_t` +|- +| `Float32` +| 32 +| `float` +|- +| `Float64` +| 64 +| `double` +|- +| `Pointer[T]` +| 64[^1] +| `T*` Pointer-pointers don't have a dedicated type (i.e. there's no `Pointer[Pointer[Int8]]`), instead they are represented as just regular pointers @@ -59,9 +99,10 @@ generically typed values/arguments. For example, `Array[Int32]` isn't a valid type. In practise this means you'll need to cast or wrap C types before you can do anything with them, apart from passing them around. -!!! note - C types not being compatible with generics is a limitation due to how - generics are compiled. +::: note +C types not being compatible with generics is a limitation due to how +generics are compiled. This is unlikely to change any time soon, if ever. +::: C types are treated as value types and are allocated on the stack, including structs (which we'll discuss later). @@ -131,14 +172,14 @@ flag applies to all libraries, meaning we either link _all_ of them dynamically _or_ statically. Inko doesn't support dynamically linking some libraries while statically linking others. -!!! note - libc and libm are always dynamically linked (even with the `--static` flag), - _unless_ you are using a platform that defaults to static linking them, such - as Alpine Linux. +::: note +libc and libm are always dynamically linked (even with the `--static` flag), +_unless_ you are using a platform that defaults to static linking them, such +as Alpine Linux. -!!! note - Some platforms merge libc and libm together, such as macOS. In this case - Inko only links against libc. +Some platforms merge libc and libm together, such as macOS. In this case +Inko only links against libc. +::: To illustrate static linking, we'll update our `test.inko` to import zlib instead: @@ -213,17 +254,19 @@ class async Main { When running this program, the output will be `2.0`. -!!! tip - If a C function defines an argument of type `Int`, Inko treats this as - `Int64` and implicitly converts `Int` arguments to `Int64` arguments. This - is only true for `Int` arguments, and return types should be `Int64` and - `Float64` instead of `Int` and `Float` respectively, as `Int` and `Float` - have a different memory representation at the moment. +::: tip +If a C function defines an argument of type `Int`, Inko treats this as +`Int64` and implicitly converts `Int` arguments to `Int64` arguments. This +is only true for `Int` arguments, and return types should be `Int64` and +`Float64` instead of `Int` and `Float` respectively, as `Int` and `Float` +have a different memory representation at the moment. +::: -!!! warning - Don't use types such as `ref T` and `mut T` in signatures. While this is - supported, it's used to interact with Inko's runtime library written in - Rust, and shouldn't be used outside of the standard library. +::: warn +Don't use types such as `ref T` and `mut T` in signatures. While this is +supported, it's used to interact with Inko's runtime library written in +Rust, and shouldn't be used outside of the standard library. +::: Variadic functions are also supported, and are defined as follows: @@ -239,9 +282,10 @@ class async Main { This program prints "Hello Inko" to STDOUT. -!!! warning - When using variadic functions, the compiler doesn't type-check any of the - additional arguments, because it doesn't know what the expected types are. +::: warn +When using variadic functions, the compiler doesn't type-check any of the +additional arguments, because it doesn't know what the expected types are. +::: ## Structures @@ -290,9 +334,10 @@ class async Main { } ``` -!!! warning - Inko doesn't run destructors for any types stored in a C structure, which - may lead to memory leaks if you don't manually run these where necessary. +::: warn +Inko doesn't run destructors for any types stored in a C structure, which +may lead to memory leaks if you don't manually run these where necessary. +::: If a structure is stored in a field, referring to the field doesn't incur a copy, instead you get a pointer to the structure. This makes it easier to work @@ -426,10 +471,11 @@ class async Main { } ``` -!!! tip - Avoid using `ptr.0.field_name` when `ptr` points to a structure, and use - `ptr.field_name` instead. This way you avoid unnecessary copies of the - structure. +::: tip +Avoid using `ptr.0.field_name` when `ptr` points to a structure, and use +`ptr.field_name` instead. This way you avoid unnecessary copies of the +structure. +::: ### Pointer arithmetic @@ -459,9 +505,10 @@ class async Main { } ``` -!!! warning - Manually calculating pointer offsets can lead to bugs, such as reading - invalid memory. You'll want to avoid this whenever possible. +::: warn +Manually calculating pointer offsets can lead to bugs, such as reading +invalid memory. You'll want to avoid this whenever possible. +::: ## Error handling @@ -547,14 +594,12 @@ of the C libraries out there. Most notably, the following isn't supported: - Using C globals, including thread-local globals. Relying on global state is going to cause trouble due to Inko's concurrent nature, so even if we did support this it wouldn't make your life easier. -- Compiling C source code as part of the Inko build process. See [this - section](goals.md/#compiling-c-code-when-installing-a-package) for more - details. +- Compiling C source code as part of the Inko build process. - Compile-time expressions such as `sizeof()` to automatically get type sizes. - Setting `errno` to a custom value. `errno` is implemented differently across libc implementations, and Rust (which we use for getting the value) doesn't support writing to `errno`. [^1]: On 32-bit platforms this type would have a size of 32 bits, but Inko - doesn't support 32-bit platforms, so in practise this value is always 64 - bits. + doesn't support 32-bit platforms, so in practise this value is always 64 + bits. diff --git a/docs/source/getting-started/files.md b/docs/source/getting-started/files.md new file mode 100644 index 000000000..5095af966 --- /dev/null +++ b/docs/source/getting-started/files.md @@ -0,0 +1,103 @@ +--- +{ + "title": "Hello, files!" +} +--- + +Instead of writing a simple message to the terminal, let's write it to a file, +read it back, _then_ write that to the terminal. Isn't that exciting! + +To start, create the file `files.inko` with the following contents: + +```inko +import std.fs.file.ReadWriteFile +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let file = ReadWriteFile.new('hello.txt').unwrap + let bytes = ByteArray.new + + file.write_string('Hello, world!').unwrap + file.seek(0).unwrap + file.read_all(bytes).unwrap + out.write_bytes(bytes).unwrap + } +} +``` + +Now run it using `inko run files.inko`, and the output should be: + +``` +Hello, world! +``` + +There will also be a file called `hello.txt` in your current working directory, +containing the same message. + +## Explanation + +We used `ReadWriteFile` to open a file for both reading and writing, using +`'hello.txt'` as the path to the file. We then write the message to it, reset +the cursor to the start of the file, then read the data back, and write it to +the terminal. + +For the sake of brevity we've ignored error handling by using `unwrap`, +resulting in the program terminating in the event of an error. Of course in a +real program you'll want more fine-grained error handling, but for the sake of +brevity we'll pretend our program won't produce any errors. + +In case you're wondering: there's no need to close the file handles yourself, as +this is done automatically. Neat! + +## Read-only files + +If we just want to read a file, we'd do so as follows: + +```inko +import std.fs.file.ReadOnlyFile +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let file = ReadOnlyFile.new('hello.txt').unwrap + let bytes = ByteArray.new + + file.read_all(bytes).unwrap + out.write_bytes(bytes).unwrap + } +} +``` + +If you run this and `hello.txt` still exists in the current working directory, +the output is the contents of this file. If the file doesn't exist, you'll see +an error such as this: + +``` +Stack trace (the most recent call comes last): + [...]/files.inko:7 in main.Main.main + [...]/std/src/std/result.inko:119 in std.result.Result.unwrap + [...]/std/src/std/process.inko:15 in std.process.panic +Process 'Main' (0x5645bdf31740) panicked: Result.unwrap can't unwrap an Error +``` + +## Write-only files + +If you just want to write to a file, you'd use the `WriteOnlyFile` type: + +```inko +import std.fs.file.WriteOnlyFile + +class async Main { + fn async main { + let file = WriteOnlyFile.new('hello.txt').unwrap + + file.write_string('Hello, world!') + } +} +``` + +If you run this program, no output is produced; instead it writes "Hello, +world!" to the file `hello.txt` in the current working directory. diff --git a/docs/source/getting-started/generics.md b/docs/source/getting-started/generics.md new file mode 100644 index 000000000..d061978a8 --- /dev/null +++ b/docs/source/getting-started/generics.md @@ -0,0 +1,151 @@ +--- +{ + "title": "Generics" +} +--- + +Types and methods can be generic, meaning that instead of supporting a single +fixed type (e.g. `String`), they can operate on many different types. Take the +following class for example: + +```inko +class Box { + let @value: String +} +``` + +This `Box` type can only store `String` values, but what if we want to also +store `Float` or a custom type of sorts? Generic types and methods allow us to +solve this problem, without having to copy-paste large amounts of code. + +## Generic types + +Generic classes are defined as follows: + +```inko +class Box[T] { + let @value: T +} +``` + +By defining the type as `Box[T]` instead of just `Box`, we've made it generic. +In this particular case the type defines a single generic type parameter: `T`, +of which the name is arbitrary (e.g. we could've picked `Kittens`, `VALUE`, or +something else). The type of the `value` field is defined as `T`, instead of +`String` or `Float`. We can now create instances of this type that use different +types for the `value` field: + +```inko +Box { @value = 'test' } +Box { @value = 42 } +Box { @value = 1.123 } +``` + +We can of course define more than just one type parameter: + +```inko +class Pair[A, B] { + let @a: A + let @b: B +} + +Pair { @a = 'test', @b = 42 } +``` + +Traits are made generic in the same way: + +```inko +trait ToBox[T] { + fn to_box -> Box[T] +} +``` + +## Generic methods + +Just like types, methods can be made generic. Take this method for example: + +```inko +fn box(value: String) { + ... +} +``` + +Like the `Box` type we started with, `value` is typed as `String` and thus only +`String` values can be passed as arguments to this method. Turning this method +into a generic method is done similar to making types generic: + +```inko +fn box[T](value: T) { + ... +} +``` + +Now the `box` method accepts values of different types such as `String`, +`Float`, and more. + +We can also define multiple type parameters just as we can with generic types: + +```inko +fn example[A, B](value: A, value: B) { + ... +} +``` + +Return types can also be generic: + +```inko +fn example[T](value: T) -> T { + value +} +``` + +This method takes a value of any type and returns it as-is. + +## Type parameter requirements + +In these examples the type parameters don't specify any sort of requirements a +type must meet before it's considered compatible with the type parameter. As +such, there's not much we can do with values of these types (other than move +them around), as they could be anything. To resolve this, we can define one or +more required traits when defining a type parameter: + +```inko +trait ToString { + fn to_string -> String +} + +class Box[T: ToString] { + let @value: T +} +``` + +Here `T: ToString` means that for a type to be compatible with `T`, it must +implement the `ToString` trait. If you try to assign a value of which the type +doesn't implement `ToString`, you'll get a compile-time error. + +Type parameters can define multiple required traits as follows: + +```inko +trait A {} +trait B {} + +class Box[T: A + B] { + let @value: T +} +``` + +Here `T: A + B` means `T` requires both the traits `A` and `B` to be implemented +before a type is considered compatible with the type parameter. + +The required traits can also be made generic: + +```inko +trait Equal[A] {} + +class Example[B: Equal[B]] { + ... +} +``` + +In this example `B: Equal[B]` means that for a type `Foo` to be compatible with +`B`, it must implement the trait `Equal[Foo]`. diff --git a/docs/source/getting-started/hello-concurrency.md b/docs/source/getting-started/hello-concurrency.md new file mode 100644 index 000000000..ceeb20f16 --- /dev/null +++ b/docs/source/getting-started/hello-concurrency.md @@ -0,0 +1,93 @@ +--- +{ + "title": "Hello, concurrency!" +} +--- + +Let's make printing "Hello, world!" a little more exciting by performing work +concurrently. We'll start with creating the file `hello.inko` with the following +contents: + +```inko +import std.process.(sleep) +import std.stdio.STDOUT +import std.time.Duration + +class async Printer { + fn async print(message: String) { + let _ = STDOUT.new.print(message) + } +} + +class async Main { + fn async main { + Printer {}.print('Hello') + Printer {}.print('world') + sleep(Duration.from_millis(500)) + } +} +``` + +This program prints "Hello" and "world" concurrently to the terminal, then waits +500 milliseconds for this to complete. + +To showcase this, run the program _several times_ as follows: + +```bash +inko run hello.inko +``` + +The output may change slightly between runs: sometimes it will print "Hello" and +"world" on separate lines, other times it may print "Helloworld", "worldHello" +or "world" and "Hello" on separate lines. + +## Explanation + +Inko uses "lightweight processes" for concurrency. Such processes are defined +using the syntax `class async`, such as `class async Printer { ... }` in our +program. + +We can create instances of these processes using the syntax `Printer {}`. For +such a process to do anything, we must send it a message. In our program we do +this using `print(...)`, where "print" is the message, defined using the +`fn async` syntax. The details of how this works, what to keep in mind, etc, are +covered separately. + +The `sleep(...)` line is needed such that the main process (defined using +`class async Main`) doesn't stop before the `Printer` processes print the +messages to the terminal. + +## Stopping right away when output is produced + +Instead of waiting for a fixed 500 milliseconds, we can change the program to +stop right away when the output is produced. We achieve this by changing the +program to the following: + +```inko +import std.stdio.STDOUT + +class async Printer { + fn async print(message: String, channel: Channel[Nil]) { + let _ = STDOUT.new.print(message) + + channel.send(nil) + } +} + +class async Main { + fn async main { + let channel = Channel.new(size: 2) + + Printer {}.print('Hello', channel) + Printer {}.print('world', channel) + channel.receive + channel.receive + } +} +``` + +What we changed here is that we're using the `Channel` type, and instead of +sleeping we wait for two messages to be received using `channel.receive`. The +`Printer` types are changed to send `nil` to the channel when they are finished. +The combination of the two results in the `Main` process waiting for both +`Printer` processes to write their output, then it stops. diff --git a/docs/source/getting-started/hello-error-handling.md b/docs/source/getting-started/hello-error-handling.md new file mode 100644 index 000000000..8d0d10faa --- /dev/null +++ b/docs/source/getting-started/hello-error-handling.md @@ -0,0 +1,95 @@ +--- +{ + "title": "Hello, error handling!" +} +--- + +In the previous tutorial we looked at printing a simple message to the terminal. +In this tutorial we'll expand on that example by adding basic error handling. + +The need for error handling may seem redundant. Surely printing to the terminal +can't fail? Well, it can! To showcase this, we'll start with our `hello.inko` +from the previous tutorial and change it to the following: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + STDOUT.new.print('Hello, world!').unwrap + } +} +``` + +The change made here compared to the previous tutorial is the addition of +`.unwrap` at the end of the `print()` line. We'll look into what this does +later. Now run the program as follows: + +```bash +inko run hello.inko | true +``` + +The output of this program should be something similar to the following: + +``` +Stack trace (the most recent call comes last): + [...]/hello.inko:5 in main.Main.main + [...]/std/src/std/result.inko:119 in std.result.Result.unwrap + [...]/std/src/std/process.inko:15 in std.process.panic +Process 'Main' (0x5637caa83150) panicked: Result.unwrap can't unwrap an Error +``` + +What happened here is that the `print()` failed to write to the standard output +stream. The `unwrap` method call turns such an error into a "panic". A panic is +a type of error that terminates the program. Panics are the result of bugs in +your code, and as such can't be handled at runtime. In a well written program, +such errors shouldn't occur. + +## Handling the error + +Writing to the terminal may fail for different reasons. We're not going to cover +these cases as that's out of the scope of this tutorial. Instead, we'll explore +how to prevent such errors from terminating our program. + +In this case we have two options: + +1. We just ignore the error +1. We somehow log the error in an external system + +The second option relies on external systems (e.g. syslog) and this is way too +much to cover, so we'll go with the first option. + +To ignore the error, change `hello.inko` to the following: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let _ = STDOUT.new.print('Hello, world!') + } +} +``` + +Now re-run the program like so: + +```bash +inko run hello.inko | true +``` + +If all went well, the program should run _without_ printing anything to the +terminal. + +This may seem surprising at first, but is indeed the correct behaviour: the +`print()` call still fails, but instead of calling `unwrap` we assign the result +to the variable `_`. By assigning the result of `print()` to `_`, the compiler +won't emit any warnings because the result isn't used, nor will it emit any +warnings because the variable assigned to isn't used. + +::: note +These warnings aren't implemented yet. Following this pattern from the start +makes your code more future-proof. +::: + +If we run the program using just `inko run hello.inko`, we get the expected +"Hello, world!" output, confirming our program still works. diff --git a/docs/source/getting-started/hello-world.md b/docs/source/getting-started/hello-world.md index c3b76320b..90aa13dd7 100644 --- a/docs/source/getting-started/hello-world.md +++ b/docs/source/getting-started/hello-world.md @@ -1,53 +1,40 @@ -# Hello, World! - -Let's start with the most basic Inko program: a program that writes -"Hello, World" to STDOUT. +--- +{ + "title": "Hello, world!" +} +--- -Create a file called `hello.inko` with the following contents: +For our first program, we'll start off simple by printing "Hello, world!" to the +terminal. Create a file called `hello.inko` with the following contents: ```inko import std.stdio.STDOUT class async Main { fn async main { - STDOUT.new.print('Hello, World!') + STDOUT.new.print('Hello, world!') } } ``` -Now run it as follows: +To run the program, run the following command in your terminal: ```bash inko run hello.inko ``` -If all went well, the output is "Hello, World!". +If all went well, the output is "Hello, world!". -## Breaking it down +## Explanation -Let's break down what the program does. We first encounter the following line: +Let's explore what the program does. We first encounter the following line: ```inko import std.stdio.STDOUT ``` -This imports the `STDOUT` type from the `std.stdio` module, provided by the -standard library. Inko doesn't expose a print method of sorts by default, as not -every program needs to write to STDOUT or STDERR. As such, we have to explicitly -import the necessary type. If we wanted to write to STDERR, we'd instead use the -following import: - -```inko -import std.stdio.STDERR -``` - -We can also import both: - -```inko -import std.stdio.(STDERR, STDOUT) -``` - -After the import we encounter the following: +This imports the `STDOUT` type, used for writing text to the terminal's standard +output stream. After the import we encounter the following: ```inko class async Main { @@ -57,16 +44,16 @@ class async Main { } ``` -Inko uses lightweight processes (more on that later), which are defined using -the syntax `class async NAME { ... }`. The main process is always called "Main", -and is required to define an "async" instance method called "main". +Inko uses lightweight processes (which we'll cover separately), which are +defined using the syntax `class async NAME { ... }`. The main process is always +called "Main", and is required to define an "async" instance method called +"main". The final line writes the message to STDOUT: ```inko -STDOUT.new.print('Hello, World!') +STDOUT.new.print('Hello, world!') ``` -`STDOUT` is a regular class, and to use it we must first create an instance of -it using the `new` static method. The `print` method is then used to write the -given `String` to STDOUT. +`STDOUT.new` creates a new instance of the `STDOUT` type, and `print(...)` +prints the message to the standard output stream. diff --git a/docs/source/getting-started/io.md b/docs/source/getting-started/io.md deleted file mode 100644 index 539c1ecac..000000000 --- a/docs/source/getting-started/io.md +++ /dev/null @@ -1,94 +0,0 @@ -# Asynchronous IO - -IO operations, such as writing to a file or reading from a socket, are -asynchronous in Inko. Unlike other languages, there is no -[async/await](https://en.wikipedia.org/wiki/Async/await) and no [function -colouring](http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/). -Inko achieves this by baking asynchronous IO into the language, much like -languages such as [Erlang](https://www.erlang.org/) and [Go](https://go.dev/). - -In plain English: Inko's runtime ensures an IO operation can't prevent other -processes from running. - -## Sockets - -Sockets are implemented as non-blocking sockets. When performing an operation -that would block, the process is suspended. A background thread called the -"network poller" then keeps an eye on the process, rescheduling it when the -operation is ready. The network poller uses epoll on Linux, and kqueue on macOS -and the various BSDs. - -By default a single network poller thread is used, but the amount is -configurable using the -[`INKO_NETPOLL_THREADS`](../guides/scaling.md/#environment-variables) -environment variable. - -Sockets are provided by the module `std.net.socket`. The following socket -types exist in this module: - -- `Socket`: a low-level IPv4/IPv6 socket. You probably don't want to use this - directly unless necessary. -- `UdpSocket`: a UDP IPv4/IPv6 socket. -- `TcpClient`: an IPv4/IPv6 TCP stream socket acting as a client. -- `TcpServer`: an IPv4/IPv6 TCP stream socket acting as a server. -- `UnixSocket`: a low-level Unix domain socket. -- `UnixDatagram`: a Unix datagram socket. -- `UnixClient`: a Unix stream socket acting as a client. -- `UnixServer`: a Unix stream socket acting as a server. - -## Files and standard input/output - -Other IO operations that don't support non-blocking operations, such as reading -from a file or writing to STDERR, use a different approach to ensure they don't -block the OS thread. - -When such an operation is performed, Inko's runtime keeps track of how long the -operation is running for. If this takes too long, a backup OS thread is woken up -and takes over the work of the OS thread performing the blocking operation. When -the blocked thread wakes up again it reschedules the process, then turns itself -into a backup thread. - -The amount of backup threads used is configured using the -[`INKO_BACKUP_THREADS`](../guides/scaling.md/#environment-variables) environment -variable. - -### Files - -Types for working with files are provided in the module `std.fs.file`. The -following types are provided: - -- `ReadOnlyFile`: opens a file that only allows reads -- `WriteOnlyFile`: opens a file that only allows writes -- `ReadWriteFile`: opens a file that allows both reads and writes - -Instances of these types are created using the static `new` method, for example: - -```inko -import std.fs.file.WriteOnlyFile - -WriteOnlyFile.new('test.txt').expect('failed to open the file') -``` - -`WriteOnlyFile` and `ReadWriteFile` place the file cursor at the start of the -file, overwriting existing content when writing. To instead append to the end of -the file, use the `append` static method: - -```inko -import std.fs.file.WriteOnlyFile - -WriteOnlyFile.append('test.txt').expect('failed to open the file') -``` - -### Standard input/output - -The module `std.stdio` provides types for working with standard input/output -streams. These types are as follows: - -- `STDIN`: a type for reading from the standard input stream. -- `STDOUT`: a type for writing to the standard output stream. -- `STDERR`: a type for writing to the standard error stream. - -## Other IO types - -The module `std.io` provides various traits implemented by other IO types. For -example, the `Read` trait is implemented by IO types that support reads. diff --git a/docs/source/getting-started/memory-management.md b/docs/source/getting-started/memory-management.md index d1633dc0c..1769266e2 100644 --- a/docs/source/getting-started/memory-management.md +++ b/docs/source/getting-started/memory-management.md @@ -1,325 +1,335 @@ -# Memory management +--- +{ + "title": "Memory management" +} +--- -Inko uses automatic memory management, without the use of a garbage collector. -Instead, Inko relies on what is known as "single ownership". If you've used Rust -this should sound familiar, though Inko's implementation is quite different from -the implementation used by Rust. +Inko uses automatic memory management, using "single ownership" instead of a +garbage collector. Inko has four primary types of references: owned references, +immutable borrows, mutable borrows, and unique references. In this tutorial +we'll take a look at the basics of working with these different references. -The idea behind single ownership is as follows: each value has a single owner. -When this owner is done with the value, it discards it (known as a "drop"). -Discarding the value runs its destructor (if it has any) and releases its -memory. Such values are referred to as "owned values". +## Owned references -A value is either owned by the scope it's created in, or another value it's -moved into. Take this code for example: +We'll start with a simple list of cats: ```inko -fn example { - 'hello' +class Cat {} + +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + } } ``` -The value `'hello'` is created in the outer-most scope of the `example` method, -meaning that said scope is the owner of the value. When we exit the scope (in -this case return from the `example` method), the value is dropped. +Save this in a file called `cats.inko` and run it as follows: + +```bash +inko run cats.inko +``` -## Transferring ownership +If all went well, no output is produced. -Values can be _moved_, either into scopes or values. When a value is moved, its -owner is transferred to whatever it's moved into. For example, pushing a value -into an array makes the array the owner of the value: +Let's adjust the program to print the number of cats to the terminal: ```inko -fn example { - let val = 'hello' - let vals = [val] +import std.stdio.STDOUT + +class Cat {} + +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + + STDOUT.new.print("{cats.size} cats") + } } ``` -When a value is moved, the previous owner no longer drops it, instead it's up to -the new owner to do so when necessary. A value that is moved can't be used -anymore, unless the value is a value type in which case a move copies the value. -Consider this example: +If we run this again, the output is "2 cats". + +Now we'll change the program to the following: ```inko -fn foo(values: Array[Int]) { - # ... -} +import std.stdio.STDOUT -fn bar { - let vals = [10, 20] +class Cat {} + +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + let more_cats = cats - foo(vals) + STDOUT.new.print("{cats.size} cats") + } } ``` -The call to `foo` moves `vals`. If we try to use `vals` after the call, a -compile-time error is produced. +If we try to run this program, we're greeted with the following compile-time +error: -## References and borrowing +``` +cats.inko:10:24 error(moved): 'cats' can't be used as it has been moved +``` -Besides owned values, Inko also supports references. A reference allows you to -temporarily use a value without moving it. When the reference is no longer -needed, only the reference is discarded, not the value it points to. Creating a -reference is known as "borrowing", because you borrow the value the reference -points to. +What happened is as follows: `cats` is a variable containing an owned reference +to the array of cats. When this reference is assigned to the `more_cats` +variable, ownership of the reference is _moved_ to the `more_cats` variable. +Once ownership is moved, we can no longer use the old reference (`cats` in this +case). -Inko supports two types of references: immutable (`ref T`) and mutable (`mut T`). -Immutable references, as the name suggests, don't allow you to mutate the value -pointed to, while mutable references do. References can only be created from an -owned value, not from another reference. +When the owned reference is no longer in use, its memory is discarded, which we +refer to as a value that's "dropped". The details of this are discussed +separately. -References are created using the `ref` and `mut` keywords: +## Borrowing -```inko -let a = [10, 20] # An owned value -let b = ref a # An immutable reference -let c = mut a # A mutable reference -``` +If we only had owned references, writing meaningful programs in Inko would be +difficult. Inko has two types of references that don't transfer ownership, known +as "borrows": immutable borrows, and mutable borrows. -Inko automatically creates references for you whenever necessary, so you won't -need to use these keywords often. - -Unlike Rust, Inko allows you to move owned values when references to them exist. -Inko also allows both immutable and mutable references to the same value to -exist at the same time. This makes it trivial to implement self-referential data -structures (such as linked lists), without needing any unsafe code or the use of -raw pointers. For example, here's how you'd define a doubly-linked list: +Immutable borrows are created using the `ref` keyword: ```inko -class Node[T] { - let @next: Option[Node[T]] - let @previous: Option[mut Node[T]] - let @value: T -} +import std.stdio.STDOUT + +class Cat {} + +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + let more_cats = ref cats -class List[T] { - let @head: Option[Node[T]] - let @tail: Option[mut Node[T]] + STDOUT.new.print("{cats.size} cats") + } } ``` -To ensure correctness, Inko maintains a reference count at runtime. This count -tracks the amount of `ref` and `mut` references that exist for an owned value. -If the owned value is dropped but references to it still exist, a panic is -produced and the program is aborted, protecting you against use-after-free -errors. - -The compiler tries to optimise code such that the amount of reference count -changes is kept as low as possible. While there is a runtime cost associated -with maintaining these reference counts, the cost is minimal, and far less than -the cost of running a tracing garbage collector or using regular (atomic) -reference counting everywhere. - -Inko's implementation is inspired by the paper ["Ownership You Can Count -On"](https://www.semanticscholar.org/paper/Ownership-You-Can-Count-On/d0f2d28962d2a50d1914f0af8243d3f382fe077c) -([mirror](https://inko-lang.org/papers/ownership.pdf)). - -## Unique values and recovery - -Besides owned values and references, Inko also has "unique values" (`uni T`). A -unique value is unique in the sense that only a single reference to it can exist -(= the value itself). The best way to explain this is to use a cardboard box as -a metaphor: a unique value is a box with items in it. Within that box these -items are allowed to refer to each other using references, but none of the items -are allowed to refer to values outside of the box and vice versa. - -This restriction means that when we have a unique value we can move it around -knowing no references (outside of the unique value) exist that point to the -unique value. Inko's concurrency support builds upon this, and only allows you -to send values between processes if they are either unique or value types (which -are copied). This allows passing of data between processes, without you having -to worry about race conditions, and without a runtime cost such as having to -deep copy values. - -If you're familiar with [Pony](https://www.ponylang.io/), Inko's unique values -are the same as Pony's "isolated values". This is not a coincidence, as both -Inko and Pony draw inspiration from the same paper ["Uniqueness and Reference -Immutability for Safe Parallelism"](https://www.microsoft.com/en-us/research/publication/uniqueness-and-reference-immutability-for-safe-parallelism/). -Unlike Pony, Inko doesn't have a long list of (complicated) reference -capabilities, making it easier to use Inko while still achieving the same -safety guarantees. - -Unique values are created using the `recover` expression, and the return value -of such an expression is turned from a `T` into `uni T`, or from a `uni T` into -a `T`, depending on what the original type is: +Mutable borrows are created using the `mut` keyword: ```inko -let a = recover [10, 20] # => uni Array[Int] -let b = recover a # => Array[Int] -``` +import std.stdio.STDOUT -Variables defined outside of the `recover` expression are exposed as `uni mut T` -or `uni ref T`, depending on what the original type is. Such values come with -the same restriction as `uni T` values, which are discussed in detail in the section -[Using unique values](#using-unique-values): +class Cat {} -```inko -let nums = [10, 20, 30] +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + let more_cats = mut cats -recover { - nums # => uni mut Array[Int] - [10] + STDOUT.new.print("{cats.size} cats") + } } ``` -Using `recover` we can statically guarantee it's safe to send values between -processes: if the only outside values we can refer to are unique values, then -any owned value returned must originate from inside the `recover` expression. -This in turn means any references created to it are either stored inside the -value (which is fine), or are discarded before the end of the `recover` -expression. That in turn means that after the `recover` expression returns, we -know for a fact no outside references to the unique value exist, nor can the -unique value contain any references to values stored outside of itself. +Running both these programs produces the output "2 cats", without any +compile-time errors. + +### Mutable vs immutable -Values recovered using `recover` are moved, meaning that the old variable -containing the owned value is no longer available: +The difference between immutable and mutable borrows is simple: mutable borrows +allow mutating of the borrowed data, while immutable borrows don't. For example: ```inko -let a = recover [10, 20] -let b = recover a +import std.stdio.STDOUT + +class Cat {} + +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + let cats_ref = ref cats -a # => this is an error, because `a` is moved into `b` + cats_ref.pop + } +} ``` -In general, recovery is only needed when sending values between processes. +If you try to run this program, you'll be greeted with the following +compile-time error: -## Using unique values +``` +cats.inko:10:5 error(invalid-call): the method 'pop' requires a mutable receiver, but 'ref Array[Cat]' isn't mutable +``` -Values of type `uni T`, `uni ref T` and `uni mut T` come with a variety of -restrictions to ensure their uniqueness constraints are maintained. +To fix this, we need to use a mutable borrow: -Values of type `uni ref T` and `uni mut T` can't be assigned to variables, nor -can you pass them to arguments that expect `ref T` or `mut T`. You also can't -use such types in type signatures. This means you can only use them as receivers -for method calls. As such, these kind of references don't violate the uniqueness -constraint of the `uni T` values they point to. +```inko +import std.stdio.STDOUT -All three unique reference types allow you to call methods on values of such -types, provided the call meets the following criteria: +class Cat {} -1. If a method takes any arguments and/or specifies a return type, these types - must be "sendable". If any of these types isn't sendable, the method isn't - available. -2. If a method doesn't take any arguments and is immutable, and returns an owned - value, the method is available if and only if these types are sendable - (including any sub values they may store). +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + let cats_mut = mut cats + + cats_mut.pop + } +} +``` -A "sendable" type is a type that can cross the boundary between a unique value -and the outside world, or a type that can be sent to another process. A type is -sendable if it's unique (`uni T`), a value type, or an owned type that only -contains sendable types (in case of rule two). To put this another way: a -sendable type is a type of which we are certain no outside references to it -exist, and has no references pointing from it to the outside world. +### Automatic borrows -To illustrate this, consider the following expression: +When passing a value to something that expects a borrow, Inko automatically +borrows the value according to the expected borrow: ```inko -let a = recover 'testing' +class Person { + let @name: String +} -a.to_upper -``` +fn example(person: ref Person) {} + +class async Main { + fn async main { + let person = Person { @name = 'Alice' } -The variable `a` contains a value of type `uni String`. The expression -`a.to_upper` is valid because `to_upper` doesn't take any arguments, and its -return type (`String`) is a value type, which is a sendable type. + example(person) + } +} +``` -Because `a` is a unique value, we can also write the following: +Here `example(person)` results in the compiler passing a `ref Person` as the +argument, allowing you to continue using `person` after returning from the +`example` call. The behavior of automatically borrowing values is as follows: + +|= +| Input +| Expected +| Passed +|- +| `T` +| `ref T` +| `ref T` +|- +| `T` +| `mut T` +| `mut T` +|- +| `ref T` +| `ref T` +| `ref T` +|- +| `mut T` +| `mut T` +| `mut T` +|- +| `mut T` +| `ref T` +| `ref T` + +### Moving while borrowing + +Inko allows you to move owned references while borrows to the owned reference +exist. If an owned value is dropped while borrows to it still exist, a runtime +error known as a "panic" is produced, terminating the program: ```inko -let a = recover 'testing' # => uni String -let b = recover a.to_upper # => uni String +import std.stdio.STDOUT + +class Cat {} + +class async Main { + fn async main { + let cats = [Cat {}, Cat {}] + let borrow = ref cats + let more_cats = cats + + STDOUT.new.print("{borrow.size} cats") + STDOUT.new.print("{more_cats.size} cats") + } +} +``` + +If we run this program, the output is as follows: + +``` +2 cats +2 cats +Stack trace (the most recent call comes last): + [...]/cats.inko:12 in main.Main.main + [...]/std/src/std/array.inko:104 in std.array.Array.$dropper +Process 'Main' (0x55fd6eb37170) panicked: can't drop a value of type 'Array' as it still has 1 reference(s) ``` -Here's a more complicated example: +The reason this happens is because `more_cats` is dropped before `borrow` is +dropped, while the borrow still exists (because `borrow` is defined before +`more_cats`), resulting in this error. + +## Unique references + +Inko also has a type of reference known as a "unique reference". Such references +impose heavy restriction on borrowing, which ensures that these borrows don't +exist when the unique reference is moved around. To illustrate this, change the +`cats.inko` program to the following: ```inko -import std.net.ip.IpAddress -import std.net.socket.TcpServer +import std.stdio.STDOUT + +class Cat {} class async Main { fn async main { - let server = recover TcpServer - .new(ip: IpAddress.v4(127, 0, 0, 1), port: 40_000) - .unwrap + let cats = recover [Cat {}, Cat {}] + let borrow = ref cats - let client = recover server.accept.unwrap + STDOUT.new.print("{cats.size} cats") } } ``` -Here `server` is of type `uni TcpServer`. The expression `server.accept` is -valid because `server` is unique and thus we can see it, and because `accept` -meets rule two: it doesn't mutate its receiver, doesn't take any arguments, and -the types it returns only store sendable types. +Now run this using `inko run cats.inko`, and you should be presented with the +following compile-time error: + +``` +cats.inko:8:18 error(invalid-type): values of type 'uni ref Array[Cat]' can't be assigned to variables or fields +``` + +What happened is the following: using the `recover` keyword we turned the array +of cats into a _unique_ array of cats. When using `ref cats`, a special borrow +known as a "unique immutable borrow" (quite the mouthful) is created. The +compiler imposes restrictions on such borrows, such as not allowing them to be +assigned to variables. + +Unique references are used when sending data between processes, as a value being +unique ensures no borrows to the data exist, and thus no race conditions can +occur when using the reference. -Here's an example of something that isn't valid: +## Value types + +OK I lied when I said Inko has four types of primary references, as I left out +one important one: value types. Value types are owned references that are copied +when they are moved, instead of transferring ownership. This allows you to use +both the old and new version. To illustrate, create `values.inko` with these +contents: ```inko -let a = recover [ByteArray.new] +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let a = 42 + let b = a -a.push(ByteArray.new) + out.print(a.to_string) + out.print(b.to_string) + } +} ``` -This isn't valid because `a` is of type `uni Array[ByteArray]`, and `push` takes -an argument of type `ByteArray` which isn't sendable, thus the `push` method -isn't available. - -## Panics and ownership - -A panic is a critical error that aborts the program. When such an error is -produced, Inko doesn't drop any values and instead aborts right away. - -## Benefits compared to garbage collection - -If you're used to languages using (tracing) garbage collection you may wonder: -what's the benefit of all this? - -The first benefit is that memory management using single ownership is -deterministic: every time you run your program, values are dropped in the same -place at the same time (assuming the drops are not influenced by some condition -of course). Not only does this make debugging easier, it also makes scaling your -program easier. This in particular is a problem for languages using a garbage -collector: they work fine for small workloads, but as load increases they tend -to need a lot of tuning, and even then they may not perform well enough. In some -cases one may even need to resort to hacks such as [allocating a 10 GiB byte -array](https://blog.twitch.tv/nl-nl/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/), -because the garbage collector doesn't provide the settings necessary to make it -perform better. - -The second benefit is that because there's a clear point in the code where a -value is dropped, we can support deterministic destructors. This results in -simpler and more robust code. For example, external resources such as database -connections or files can be closed when a value goes out of scope, instead of -this requiring a manual call to a `close` or `dispose` method of sorts. While -some languages with a garbage collector support finalisers, finalisers are not -deterministic and may not run at all, and as such can't be relied upon for -anything important. - -The third benefit is that single ownership can lead to better memory usage, or -at least more consistent memory usage. This isn't a hard guarantee as it depends -on the program's behaviour, but it's easier to achieve. For example, in a -typical garbage collected language the garbage collector doesn't kick in until a -set of conditions are met, such as the amount of memory allocated since the last -garbage collection run. This results in memory usage following a sawtooth -pattern, with memory usage increasing until the GC kicks in, at which point -memory usage _may_ be reduced (this is up to the GC implementation). When using -single ownership, memory is (at least typically) reclaimed as soon as possible, -which can lead to lower memory usage. - -## The cost of single ownership - -Single ownership isn't a silver bullet, and does come with a cost. Specifically, -the cost is that of having to run destructors and releasing values one by one, -instead of all at once. In case of Inko there's also a small cost involved in -maintaining reference counts. Should this cost become significant enough, the -solution is typically straightforward: adjust your code such that values live -longer (or shorter), or allocate values using an arena of sorts, and you're -probably good to go. - -There's also a mental cost that comes with single ownership: as a developer -you're forced to decide who owns what value, when to transfer ownership, when to -use references, etc. In Rust this can be a challenge, as Rust is rather strict -about ownership. Inko tries to reduce this cost by being more forgiving and -shifting some compile-time work to runtime. While this may not be suitable for -all types of programs, we believe it to be good enough for most of them. +Now run it using `inko run values.inko`, and the output is as follows: + +``` +42 +42 +``` + +The reason this program works is because `42` is an instance of the `Int` type, +which is a 64-bits signed integer, and `Int` is a value type. + +Other value types are floats (`Float`), strings (`String`), processes, channels +(`Channel`), nil (`Nil`), booleans (`Bool`), and C structures used as part of +the FFI. diff --git a/docs/source/getting-started/methods.md b/docs/source/getting-started/methods.md new file mode 100644 index 000000000..3e9437ab4 --- /dev/null +++ b/docs/source/getting-started/methods.md @@ -0,0 +1,291 @@ +--- +{ + "title": "Methods and closures" +} +--- + +In previous tutorials we've seen expressions such as `STDOUT.new` and +`out.print(...)`. In such expressions, `new` and `print` are method calls. But +what are methods? Well, they are functions that are bound to some object. In +case of `print`, the method is bound to an instance of `STDOUT`. This means you +first have to create an instance of `STDOUT` before you can call `print`. + +Methods are defined using the `fn` keyword. An example of this which we've seen +so far is the `main` method defined like so: + +```inko +class async Main { + fn async main { + + } +} +``` + +We can also define methods outside of classes like so: + +```inko +fn example { + +} + +class async Main { + fn async main { + example + } +} +``` + +Here we define the method `example`, then call it in the `main` method. The +`example` method known as a "module method" because it's defined at the +top-level scope, which is a module (more on this later). + +## Methods and classes + +Within a class, we can define two types of methods: static methods, and instance +methods. Instance methods are defined as follows: + +```inko +class Person { + fn name { + + } +} +``` + +Meanwhile, static methods are defined using `fn static` as follows: + +```inko +class Person { + fn static new { + + } +} +``` + +The difference is that static methods don't require an instance of the class +they are defined in, while instance methods do. This means that to call `new` in +the above example, you'd write `Person.new`, while calling `name` would require +you to create an instance of the class, then use `person.name` where `person` is +a variable storing the instance of the class. + +When a class is defined using `class async`, you can also define methods using +`fn async`. These methods are the messages you can send to a process. It's a +compile-time error to define an `fn async` method on a regular class. + +## Arguments + +Methods can specify one or more arguments they require: + +```inko +fn person(name: String, age: Int) { + +} +``` + +This method requires two arguments: `name` which is typed as `String`, and `age` +typed as `Int`. Inko is statically typed and requires explicit types when +defining method arguments and return types. + +Methods with arguments are culled using positional arguments, named arguments, +or a mix of both: + +```inko +person('Alice', 42) +person('Alice', age: 42) +person(name: 'Alice', age: 42) +``` + +When mixing both positional and named arguments, the positional arguments must +come first. This means the following is invalid: + +```inko +person(name: 'Alice', 42) +``` + +Named arguments are useful when the purpose/meaning of an argument is unclear. +Take this call for example: + +```inko +person('Alice', 42) +``` + +While we might be able to derive that "Alice" is the name of the person, it's +not clear what 42 refers to here. Using named arguments makes this more clear: + +```inko +person('Alice', age: 42) +``` + +## Return types and values + +If a method doesn't specify a return type, the compiler infers it as `Nil`. In +this case, the value returned is ignored. A custom return type is specified as +follows: + +```inko +fn person(name: String, age: Int) -> String { + +} +``` + +Here `-> String` tells the compiler this method returns a value of type +`String`. + +A value is returned using either the `return` keyword, or by making it the last +expression in a method or scope (known as an "implicit return"): + +```inko +fn person(name: String, age: Int) -> String { + name +} +``` + +Here `name` is the last expression, so it's the return value. This is what it +looks like when using explicit returns: + +```inko +fn person(name: String, age: Int) -> String { + return name +} +``` + +Explicit returns are meant for returning early, for everything else you should +use implicit returns. For example: + +```inko +fn person(name: String, age: Int) -> String { + if name == 'Bob' { + return 'Go away!' + } + + name +} +``` + +When a method has an explicit return type, the value returned must be compatible +with that type. In case of our `person` method this means we must return a +`String`, and returning something else produces a compile-time error: + +```inko +fn person(name: String, age: Int) -> String { + age +} + +class async Main { + fn async main { + + } +} +``` + +If we try to run this program, we're presented with the following compile-time +error: + +``` +test.inko:2:3 error(invalid-type): expected a value of type 'String', found 'Int' +``` + +## Mutability + +Trait and class instance methods are immutable by default, preventing them from +mutating the data stored in their receivers. For example: + +```inko +class Person { + let @name: String + + fn change_name(name: String) { + @name = name + } +} +``` + +This definition of `change_name` is invalid, as field assignments are mutations, +and `change_name` is immutable. To allow mutations, use the `mut` keyword like +so: + +```inko +class Person { + let @name: String + + fn mut change_name(name: String) { + @name = name + } +} +``` + +Module and static methods don't support the `mut` keyword. Closures don't need +it, as the ability to mutate captured variables depends on their reference types +(e.g. captured `ref` values can't be mutated). + +## Taking ownership + +Regular instance methods can take ownership of their receivers by defining them +using `fn move`: + +```inko +class Person { + let @name: String + + fn move into_name -> String { + @name + } +} +``` + +Methods defined using `fn move` are only available to owned and unique +references, not (im)mutable borrows. The `move` keyword isn't available to +`fn async` methods. + +## Closures + +Inko supports +[closures](https://en.wikipedia.org/wiki/Closure_\(computer_programming\)): +anonymous functions that (optionally) capture data, and can be moved around as +values. Closures are defined using the `fn` keyword while leaving out a name: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + + fn { out.print('Hello!') }.call + } +} +``` + +Running this program results in "Hello!" being written to the terminal. Like +regular methods, closures can also define arguments. Unlike regular methods, the +argument types and the return type are inferred: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + + fn (message) { out.print(message) }.call('Hello!') + } +} +``` + +The compiler might not always be able to infer the types though, in which case +explicit type signatures are necessary: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + + fn (message: String) -> Int { + out.print(message) + 42 + }.call('Hello!') + } +} +``` diff --git a/docs/source/getting-started/modules.md b/docs/source/getting-started/modules.md index 0c1ab5a36..0e4a59851 100644 --- a/docs/source/getting-started/modules.md +++ b/docs/source/getting-started/modules.md @@ -1,220 +1,76 @@ -# Modules & packages +--- +{ + "title": "Modules and imports" +} +--- -Inko projects are organised as a collection of "modules". A module is just an -Inko source file you can import into another file using the `import` keyword. -For example: +Inko programs are divided into many modules. A module is an Inko source file +defining methods, classes, traits, constants, and more. -```inko -import std.stdio -``` - -This imports the module `std.stdio` and exposes it using the name `stdio`. You -can also import specific symbols, such as types: +Modules and their symbols can be imported into other modules using the `import` +keyword. For example, in the tutorials covered so far we've seen instances of +this such as: ```inko import std.stdio.STDOUT -``` - -For more information about the syntax of `import` statements, refer to the -[Imports](../guides/syntax.md#imports) syntax documentation. - -## Import paths - -When importing modules, the compiler looks in the following places to find the -module (in this order): - -1. Your project's `src/` directory (see - [Project structure](../guides/structure.md)) -1. The source directories of any dependencies of your project, as specified in - the `inko.pkg` package manifest -1. Additional source directories specified using the `-i` / `--include` option, - including the standard library (which is added by default) - -If a module isn't found, a compile-time error is produced. - -Inko doesn't support importing modules relative to another module. - -## Third-party packages - -Inko has a built-in package manager, available using the `inko pkg` command and -its subcommands (e.g. `inko pkg add`). Packages are just Git repositories hosted -on a platform such as GitLab or GitHub. There's no central package registry. -### Manifest format - -The dependencies for your project are listed in the file `inko.pkg` (called a -"package manifest") in the root directory of your project. The format of this -file is a simple line based format that looks as follows: - -``` -# This is a comment -require gitlab.com/bob/http 1.0.1 ece1027ada626bddd1efc74ba88a87dbdc19522c -require github.com/alice/json 1.0.0 f3f378ad8ea4b617401b40ace743614995904755 +class async Main { + fn async main { + STDOUT.new.print('hello') + } +} ``` -Each line is either a comment (when it starts with a `#`), or a command. The -only command supported for now is `require`, which uses the following syntax: - -``` -require URL VERSION CHECKSUM -``` - -`URL` is the URL of the Git repository of the dependency. You can use any URL -supported by Git, including local file paths. - -`VERSION` is the version of the package in the format `MAJOR.MINOR.PATCH`. - -`CHECKSUM` is the SHA1 checksum of the Git commit the version points to. This -value is used to ensure that package contents aren't changed after the package -is published. - -### Version selection - -Inko's package manager uses [semantic versioning](https://semver.org/) for its -versions, and [minimal version selection](https://research.swtch.com/vgo-mvs) -for version selection. - -Minimal version selection means that you list the _minimum_ version of a package -that you need. If multiple packages depend on different versions of the same -package, Inko picks the most recent requirement from that list. Take these -requirements for example: - -``` -json >= 1.2.3 -json >= 1.5.3 -json >= 1.8.2 -``` - -Here the most recent version that satisfies all requirements is 1.8.2, so Inko -will pick that version of the "json" package. - -Inko supports different major versions of the same package. This makes it -possible for package `foo` to require `json` version 1.8.2 or newer, while -package `bar` requires `json` version 2.0.0 or newer. +Here we import the `STDOUT` class from the module `std.stdio`. We can also +import modules as a whole: -Using minimal version selection offers several benefits: - -- The implementation is much simpler compared to SAT solvers used for other - version selecting techniques. Because of this the implementation is also much - faster. -- You don't need a lock file of sorts that lists all the exact packages and - versions to use. -- You won't end up using a version of a package that you never tested your code - against. - -For more details we suggest reading through the [article by Russ -Cox](https://research.swtch.com/vgo-mvs) (also linked to above). - -### Handling security updates - -If a new version of a package is released, Inko ignores it due to the use of -minimal version selection; instead picking the most recent version from the list -of required versions. At first glance this may seem like a bad idea, as you -won't be able to take advantage of security updates of your dependencies. -There's a simple solution to this problem: add the dependency to your `inko.pkg` -with the appropriate minimum version, and Inko takes care of the rest. - -## Using Inko's package manager - -For a more in-depth overview of the available commands and flags, run `inko pkg ---help`. This also works for the various sub-commands, such as `inko pkg sync ---help`. - -### Adding packages - -Adding a package is done using `inko pkg add`, which takes the package URL and -version to add. For example: - -```bash -inko pkg add github.com/inko-lang/example-package 1.2.3 -``` - -This command only adds the package to your `inko.pkg` file, it doesn't install -it into your project. - -!!! note - If the package already exists in the manifest, `inko pkg add` updates the - existing entry. - -!!! note - Inko doesn't support adding the same dependency multiple times to a project, - even when using different versions. - -### Removing packages - -The inverse of `inko pkg add` is the `inko pkg remove` command, which takes a -package URL and removes it from your `inko.pkg`. For example: - -```bash -inko pkg remove github.com/inko-lang/example-package -``` - -### Installing packages - -!!! warning - The `inko pkg sync` command removes all files in the `./dep` directory - before installing the dependencies, so make sure to not place files not - managed by Inko in this directory. - -Installing dependencies into your project is done using `inko pkg sync`. This -command downloads all the necessary dependencies, selects the appropriate -versions, then installs them in `./dep`. For example: +```inko +import std.stdio +class async Main { + fn async main { + stdio.STDOUT.new.print('hello') + } +} ``` -$ inko pkg sync -Updating package cache - Downloading /home/yorickpeterse/Projects/inko/ipm-test/http 1.0.1 - Downloading /home/yorickpeterse/Projects/inko/ipm-test/json 1.0.0 - Downloading /home/yorickpeterse/Projects/inko/ipm-test/test-package-with-dependency/ 0.5.2 - Downloading /home/yorickpeterse/Projects/inko/ipm-test/test-package 1.1.1 -Removing existing dependencies in ./dep -Installing - /home/yorickpeterse/Projects/inko/ipm-test/json 1.0.0 - /home/yorickpeterse/Projects/inko/ipm-test/http 1.0.1 - /home/yorickpeterse/Projects/inko/ipm-test/test-package 1.1.1 - /home/yorickpeterse/Projects/inko/ipm-test/test-package-with-dependency/ 0.5.2 -``` - -Once installed you can import the dependencies using the `import` statement. -The `dep` directory shouldn't be tracked by Git, so make sure to add it to your -`.gitignore` file like so: +Importing multiple symbols at once is also possible: -``` -/dep +```inko +import std.stdio.(STDERR, STDOUT) + +class async Main { + fn async main { + STDOUT.new.print('hello') + STDERR.new.print('world') + } +} ``` -### Updating packages +When importing different symbols with the same name, you can prevent name +conflicts by using a custom alias: -Updating dependencies to their latest version is done using the `inko pkg -update` command. This command either takes a package URL and only updates that -package, or updates all packages if no URL is specified. - -By default this command only updates versions to the latest version using the -same major version. For example, if you depend on "json" version 1.2.3, and -1.2.5 is released, `inko pkg update` updates the required version to 1.2.5. When -version 2.0.0 is released, `inko pkg update` ignores it because this version -isn't backwards compatible with version 1. To update across major versions, use -the following: - -```bash -inko pkg update --major +```inko +import std.stdio.(STDERR as ERR, STDOUT as OUT) + +class async Main { + fn async main { + OUT.new.print('hello') + ERR.new.print('world') + } +} ``` -## Publishing a package +## Import paths -To publish your package, push it to a Git host and add a Git tag with the -version number, prefixed by `v`. For example, if you are releasing 3.8.5, use -`git tag v3.8.5`. Don't forget to push the tag with `git push --tags`. +When importing modules and symbols, the compiler looks in the following places +to find the module (in this order): -When naming your package repository, you can prefix the name with `inko-` (e.g. -`inko-http`). This way it's clear the repository is an Inko package, and you -don't have to worry about the repository name conflicting with existing -repositories. When importing the main library module, the compiler strips the -`inko-` prefix. Thus, if the package `inko-http` provides `src/http.inko`, you -can import it using `import http`. +1. Your project's `src/` directory (refer to [](../references/structure) for + more details) +1. The source directories of any dependencies of your project, as specified in + the `inko.pkg` package manifest +1. Additional source directories specified using the `-i` / `--include` option, + including the standard library (which is added by default) -!!! note - Package names should be restricted to letters, numbers and underscores, with - an optional `inko-` prefix. If the name includes other characters (e.g. a - hyphen), you won't be able to import it. +If a module or symbol isn't found, a compile-time error is produced. diff --git a/docs/source/getting-started/pattern-matching.md b/docs/source/getting-started/pattern-matching.md index 1c0b01966..ee31e0e3d 100644 --- a/docs/source/getting-started/pattern-matching.md +++ b/docs/source/getting-started/pattern-matching.md @@ -1,30 +1,60 @@ -# Pattern matching +--- +{ + "title": "Pattern matching" +} +--- + +Pattern matching is a way to apply a pattern to a value, and destructure it in a +certain way if the pattern matches. -Inko supports pattern matching against a variety of types. Pattern matching is -performed using the `match` keyword: +To start things off, create a file called `match.inko` with the following +contents: ```inko -match numbers.opt(3) { - case Some(value) -> value * 2 - case None -> 0 +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let val = Option.Some((42, 'hello')) + + match val { + case Some((42, str)) -> out.print(str) + case _ -> out.print('oh no!') + } + } } ``` -Pattern matching is exhaustive: given a value to match against, the compiler -ensures all possible cases are handled. It's a compile-time error to not cover -all cases. +Now run it using `inko run match.inko`, and the output should be as follows: + +``` +hello +``` + +In Inko we use the `match` keyword to perform pattern matching, and the `case` +keyword to specify the different cases to consider. The expression to the right +(e.g. `Some((42, str))`) is the pattern to match against. In this case `str` is +a "binding pattern", which matches against anything and assigns the matched +value to the `str` variable, which we then print to STDOUT. +::: info `match` expressions are compiled to [decision trees](https://en.wikipedia.org/wiki/Decision_tree). Inko's implementation is -based on [this algorithm](https://julesjacobs.com/notes/patternmatching/patternmatching.pdf). -If you're interested in implementing pattern matching yourself, we suggest using -[this project](https://github.com/yorickpeterse/pattern-matching-in-rust) as a -reference. +based on [this +article](https://julesjacobs.com/notes/patternmatching/patternmatching.pdf). If +you're interested in implementing pattern matching yourself, we suggest taking a +look at [this +project](https://github.com/yorickpeterse/pattern-matching-in-rust). +::: + +## Patterns -For a list of available patterns and their syntax, refer to the [pattern -matching syntax section](../guides/syntax.md#pattern-matching). +Patterns can be simple such as `42` or `str`, or more complex such as +`Some((42, str))` or `{ @name = name, @age = 20 or 30 }`. Below is a list of the +various types of supported patterns. -## Literals and constants +### Literals and constants Pattern matching against literals is supported for values of type `Int`, `Bool`, and `String`. We can also use constants to specify the pattern: @@ -54,19 +84,15 @@ match 'world' { } ``` -Pattern matching expressions against these types are compiled to `if`/`else if` -chains. This means performance of such patterns in `O(n)` where `n` is the -number of patterns to test for. - When matching against values of these types, Inko treats the values as having an infinite number of possibilities, thus requiring the use of a wildcard pattern (`_`) to make the match exhaustive. Booleans are an exception to this, as they only have two possible values (`true` and `false`). -## Enum patterns +### Enum patterns If the value matched against is an enum class, we can match against its -variants: +constructors: ```inko match Option.Some(42) { @@ -75,18 +101,14 @@ match Option.Some(42) { } ``` -In this case the compiler knows about all possible variants, and the use of -wildcard patterns isn't needed when all variants are covered explicitly. +In this case the compiler knows about all possible constructors, and the use of +wildcard patterns isn't needed when all constructors are covered explicitly. -When specifying the variant pattern only the name of the variant is needed, the +When specifying the constructor pattern only its name is needed, the name of the type it belongs to isn't needed. This means `case Option.Some(42)` -isn't valid. - -Matching against variants is performed using a jump table generated by the -compiler. This means performance is `O(1)`, regardless of the number of variants -to match against. +is invalid. -## Class patterns +### Class patterns Pattern matching can also be performed against regular classes using class literal patterns: @@ -120,7 +142,7 @@ match person { Class literal patterns are only available for regular classes. -## Tuple patterns +### Tuple patterns Pattern matching against tuples is also supported: @@ -131,7 +153,7 @@ match (10, 'testing') { } ``` -## OR patterns +### OR patterns Multiple patterns can be specified at once using the `or` keyword: @@ -153,9 +175,9 @@ match number { } ``` -## Bindings +### Bindings -Patterns can bind sub values to variables: +Patterns can bind values to variables: ```inko match number { @@ -164,7 +186,7 @@ match number { } ``` -## Nested patterns +### Nested patterns Nested patterns are also supported: @@ -178,18 +200,31 @@ match Option.Some((10, 'testing')) { ## Guards -Each pattern can specify an extra condition to evaluate before considering the -pattern to be matched, known as a "guard": +Guards allow you to set an extra condition for a pattern to be considered a +match: ```inko -match (10, 'testing') { - case (num, 'testing') if num > 10 and num < 20 -> 'yay' - case (_, _) -> 'nay' +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let val = Option.Some((42, 'hello')) + + match val { + case Some((num, _)) if num >= 20 -> out.print('A') + case Some((num, _)) -> out.print('B') + case _ -> out.print('oh no!') + } + } } ``` -Guards are evaluated _after_ the initial pattern matched, and must return a -value of type `Boolean`. +If you run this program, the letter "A" is written to the terminal. + +In this example, `if num >= 20` is the guard that must be met before the code +`out.print('A')` is executed. This is useful if the condition is too complex to +express as a pattern. ## Typing rules @@ -231,7 +266,7 @@ match 42 { When pattern matching against an owned value, the value is moved into the match expression. When matching the value's components, the input value is -destructured into those components. Consider this example: +destructured into those components: ```inko let input = Option.Some((10, 'testing')) @@ -247,8 +282,8 @@ When the `Some((num, string))` pattern matches, the value `10` is moved into no longer available. When `num` or `string` is dropped, so is the value it points to. -If the value matched against is a reference, the match is performed against the -reference. In this case any (sub) values bound are exposed as references: +If the value matched against is a borrow, the match is performed against the +borrow. In this case any (sub) values bound are exposed as borrows as well: ```inko let input = Option.Some((10, 'testing')) @@ -267,8 +302,8 @@ When pattern matching, any bindings introduced as part of a pattern are dropped at the end of the pattern's body (unless they are moved before then). When matching against an owned value and the value is destructured, Inko performs a "partial drop" of the outer value _before_ entering the pattern body. A partial -drop is a regular drop that doesn't invoke the type's destructor, and doesn't -drop any fields: +drop doesn't invoke the type's destructor, and doesn't drop any fields (as those +are moved into bindings or wildcard patterns as part of the match): ```inko match Option.Some(42) { @@ -280,7 +315,7 @@ match Option.Some(42) { } ``` -For references we just drop the reference before entering the pattern body: +For borrows, we just drop the borrow before entering the pattern body: ```inko match values.opt(4) { @@ -288,18 +323,118 @@ match values.opt(4) { # This is valid because the `ref Option[Int]` returned by `values.opt(4)` is # dropped before we enter this body. If we didn't, the line below would # panic, because we'd try to drop the old value of `values.opt(4)` while a - # reference to it still exists. + # borrow to it still exists. values.set(4, Option.Some(0)) } case _ -> nil } ``` -!!! warning - If a pattern contains any bindings (e.g. `Some(a)` in the above case), those - bindings are dropped _at the end_ of the body. This means that if you match - against a value, bind a sub value to a variable, then drop the value - (e.g. by assigning it a new value), you'll run into a drop panic. +::: warn +If a pattern contains any bindings (e.g. `Some(a)` in the above case), those +bindings are dropped _at the end_ of the body. This means that if you match +against a value, bind a sub value to a variable, then drop the value (e.g. by +assigning it a new value), you'll run into a drop panic. +::: + +## Exhaustiveness + +When performing pattern matching, the match must be exhaustive, meaning all +possible cases must be covered: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let val = Option.Some((42, 'hello')) + + match val { + case Some((42, str)) -> out.print(str) + } + } +} +``` + +If you try to run this program, you'll be presented with the following +compile-time error: + +``` +match.inko:8:5 error(invalid-match): not all possible cases are covered, the following patterns are missing: 'None', 'Some((_, _))' +``` + +In the first example we took care of making the match exhaustive using the `_` +pattern, known as a "wildcard pattern", which matches everything. We can make +the match exhaustive in a variety of ways, such as the following: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let val = Option.Some((42, 'hello')) + + match val { + case Some((42, str)) -> out.print(str) + case Some((_, str)) -> out.print(str) + case None -> out.print('none!') + } + } +} +``` + +## Redundant patterns + +Apart from requiring the match to be exhaustive, the compiler also notifies you +of redundant patterns: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let val = Option.Some((42, 'hello')) + + match val { + case Some((42, str)) -> out.print(str) + case Some((42, str)) -> out.print(str) + case _ -> out.print('oh no!') + } + } +} +``` + +If you run this, you'll be presented with the following warning: + +``` +test.inko:10:7 warning(unreachable): this code is unreachable +``` + +The second `case` is unreachable because it's the same as the first `case`. Of +course the compiler is also able to detect more complicated redundant patterns: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + let out = STDOUT.new + let val = Option.Some((42, 'hello')) + + match val { + case Some((a, _)) -> out.print('A') + case Some((42, str)) -> out.print(str) + case _ -> out.print('oh no!') + } + } +} +``` + +Here the patterns aren't quite the same, but the compiler is still able to +detect that the second `case` is redundant. ## Limitations diff --git a/docs/source/getting-started/sockets.md b/docs/source/getting-started/sockets.md new file mode 100644 index 000000000..6ea76aa1d --- /dev/null +++ b/docs/source/getting-started/sockets.md @@ -0,0 +1,141 @@ +--- +{ + "title": "Hello, sockets!" +} +--- + +In the previous tutorial we looked at reading from and writing to files. In this +tutorial we'll instead look at reading from and writing to network sockets. + +To start things off, create a file called `socket.inko` with the following +contents: + +```inko +import std.net.ip.IpAddress +import std.net.socket.UdpSocket +import std.stdio.STDOUT + +class async Main { + fn async main { + let stdout = STDOUT.new + let server = UdpSocket.new(IpAddress.v4(0, 0, 0, 0), port: 0).unwrap + let client = UdpSocket.new(IpAddress.v4(0, 0, 0, 0), port: 0).unwrap + let addr = server.local_address.unwrap + + client.connect(addr.ip.unwrap, addr.port).unwrap + client.write_string('Hello, world!').unwrap + + let bytes = ByteArray.new + + server.read(into: bytes, size: 32).unwrap + stdout.write_bytes(bytes).unwrap + } +} +``` + +Now run it using `inko run socket.inko`, and the output should be: + +``` +Hello, world! +``` + +## Explanation + +Compared to previous tutorials there's quite a bit going on here, so let's take +a look at what this code does. + +First, we import two types not seen before: `IpAddress` and `UdpSocket`. The +first is used to represent IPv4 and IPv6 addresses, the second is used for UDP +sockets. We use UDP sockets in this example as it keeps things as simple as +possible. + +Our sockets are created as follows: + +```inko +let server = UdpSocket.new(IpAddress.v4(0, 0, 0, 0), port: 0).unwrap +let client = UdpSocket.new(IpAddress.v4(0, 0, 0, 0), port: 0).unwrap +``` + +What happens here is that we create two sockets that bind themselves to IP +address 0.0.0.0, using port 0. Using port 0 results in the operating system +assigning the socket a random unused port number. This way we don't need to +worry about using a port that's already in use. + +Next, we encounter the following: + +```inko +let addr = server.local_address.unwrap + +client.connect(addr.ip.unwrap, addr.port).unwrap +client.write_string('Hello, world!').unwrap +``` + +Here we get the address of the server we need to connect the client to, which we +do using `connect()`. We then write the string "Hello, world!" to the client, +sending it to the server. + +We then read the data back from the server: + +```inko +let bytes = ByteArray.new + +server.read(into: bytes, size: 32).unwrap +stdout.write_bytes(bytes).unwrap +``` + +When using sockets you shouldn't use `read_all` as we did in the files tutorial, +because `read_all` won't return until the socket is disconnected. + +Just as in the files tutorial, we use `unwrap` to handle errors for the sake of +brevity. + +## Using TCP sockets + +Let's change the program to use TCP sockets instead. We'll start by changing +`sockets.inko` to the following: + +```inko +import std.net.ip.IpAddress +import std.net.socket.TcpServer +import std.stdio.STDOUT + +class async Main { + fn async main { + let stdout = STDOUT.new + let server = TcpServer.new(IpAddress.v4(0, 0, 0, 0), port: 9999).unwrap + let client = server.accept.unwrap + let bytes = ByteArray.new + + client.read(into: bytes, size: 32).unwrap + stdout.write_bytes(bytes).unwrap + } +} +``` + +This time we're using a fixed port number (9999) as that makes this particular +example a little easier. + +Next, we'll create another file called `client.inko` with the following +contents: + +```inko +import std.net.ip.IpAddress +import std.net.socket.TcpClient + +class async Main { + fn async main { + let client = TcpClient.new(IpAddress.v4(0, 0, 0, 0), port: 9999).unwrap + + client.write_string('Hello, world!').unwrap + } +} +``` + +To run these programs, run `inko run server.inko` _first_ in one terminal +window, then open a separate terminal window and run `inko run client.inko` in +this new window. If all went well, the `server.inko` program writes "Hello, +world!" to the terminal, then terminates. + +What we did here is create a simple TCP server using the aptly named `TcpServer` +type, connected to address 0.0.0.0 and port 9999, then connected a client to it +using the similarly aptly named `TcpClient` type. diff --git a/docs/source/getting-started/traits.md b/docs/source/getting-started/traits.md new file mode 100644 index 000000000..5540e92b0 --- /dev/null +++ b/docs/source/getting-started/traits.md @@ -0,0 +1,148 @@ +--- +{ + "title": "Traits" +} +--- + +Unlike many other languages with classes, Inko doesn't support class +inheritance. Instead, code is shared between classes using "traits". Traits are +essentially blueprints for classes, specifying what methods must be implemented +and/or providing default implementations of methods a class may wish to +override. + +Let's say we want to convert different class instances into strings. We can do +so using traits: + +```inko +import std.stdio.STDOUT + +trait ToString { + fn to_string -> String +} + +class Cat { + let @name: String +} + +impl ToString for Cat { + fn to_string -> String { + @name + } +} + +class async Main { + fn async main { + let garfield = Cat { @name = 'Garfield' } + + STDOUT.new.print(garfield.to_string) + } +} +``` + +Running this program produces the output "Garfield". + +## Default methods + +In this example, the `to_string` method in the `ToString` trait is a required +method. This means that any class that implements `ToString` _must_ provide an +implementation of the `to_string` method. + +Default trait methods are defined as follows: + +```inko +import std.stdio.STDOUT + +trait ToString { + fn to_string -> String { + '...' + } +} + +class Cat { + let @name: String +} + +impl ToString for Cat { + fn to_string -> String { + @name + } +} + +class async Main { + fn async main { + let garfield = Cat { @name = 'Garfield' } + + STDOUT.new.print(garfield.to_string) + } +} +``` + +Here the default implementation of `to_string` is to return the string `'...'`. +Our implementation of `ToString` for `Cat` still overrides it, so the output is +still "Garfield". Because the method is a default method, we can use it as-is as +follows: + +```inko +import std.stdio.STDOUT + +trait ToString { + fn to_string -> String { + '...' + } +} + +class Cat { + let @name: String +} + +impl ToString for Cat { + +} + +class async Main { + fn async main { + let garfield = Cat { @name = 'Garfield' } + + STDOUT.new.print(garfield.to_string) + } +} +``` + +If we now run the program, the output is "...". + +## Required traits + +Traits can specify other traits that must be implemented before the trait itself +can be implemented: + +```inko +trait ToString { + fn to_string -> String +} + +trait ToUpperString: ToString { + fn to_upper_string -> String { + to_string.to_upper + } +} +``` + +Here the `ToUpperString` trait states that for a type to be able to implement +`ToUpperString`, it must also implement `ToString`. + +You can also specify multiple required traits: + +```inko +trait A {} +trait B {} +trait C: A + B {} +``` + +Here the trait `C` requires both `A` and `B` to be implemented. + +## Conflicting trait methods + +It's possible for different traits to define methods with the same name. If a +type tries to implement such traits, a compile-time error is produced. Inko +doesn't support renaming of trait methods as part of the implementation, so +you'll need to find a way to resolve such conflicts yourself. diff --git a/docs/source/getting-started/types.md b/docs/source/getting-started/types.md deleted file mode 100644 index a8d3788ea..000000000 --- a/docs/source/getting-started/types.md +++ /dev/null @@ -1,440 +0,0 @@ -# Types and methods - -Inko provides two kinds of types: classes and traits. In this chapter we'll take -a look at how to define and use such types. - -## Classes - -Classes store state and provide methods, and are created using the `class` -keyword: - -```inko -class Person { - let @name: String - let @age: Int -} -``` - -Instances of classes are created using the class literal syntax: - -```inko -Person { @name = 'Alice', @age = 42 } -``` - -When creating an instance, all fields must be assigned a value, and a field -can't be assigned a value multiple times. - -Classes don't support inheritance, and instead rely on traits to provide -reusable behaviour. - -Classes come in three forms: regular classes, enum classes, and async classes. -Enum classes are algebraic data types created using the `class enum` syntax, and -its variants are specified using the `case` keyword: - -```inko -class enum Error { - case FileDoesntExit - case PermissionDenied -} -``` - -When pattern matching against enum classes, the compiler ensures the match is -exhaustive. - -Async classes are created using the `class async` syntax and are used to define -and spawn processes. This is covered in greater detail in the -[Concurrency](concurrency.md) chapter. - -### Methods - -Methods may be defined when defining the class or when reopening it: - -```inko -class Person { - let @name: String - let @age: Int - - fn name -> String { - @name - } -} - -impl Person { - fn age -> Int { - @age - } -} -``` - -The default return type of a method is `Nil`. When the return type is `Nil`, any -expression implicitly returned in the method is ignored: - -```inko -fn example { - 42 -} - -example # => nil -``` - -If a method is defined as returning `Nil`, you can't explicitly return a value -that isn't `Nil`: - -```inko -fn example { - return 42 # => Compile-time error -} -``` - -For enum classes the compiler generates a static method for each variant, using -the same name as the variant: - -```inko -class enum Error { - case FileDoesntExit - case PermissionDenied -} - -Error.FileDoesntExit # Same as Error.FileDoesntExit() -``` - -### Fields - -Fields are private by default. You can make them public using `let pub`: - -```inko -class Person { - let pub @name: String - let pub @age: Int -} -``` - -Fields are accessed using the same syntax as method calls, making it easier to -replace them with methods, without having to change every line that uses the -fields: - -```inko -let alice = Person { @name = 'Alice', @age = 42 } - -alice.name # => 'Alice' -alice.age # => 42 -``` - -Enum classes can't define custom fields. - -## Traits - -Traits are a sort of contract for classes to adhere to: a trait can specify one -or more required methods as well as default methods. A class implementing a -trait must implement the required methods, and is automatically given a copy of -the default methods; unless the class overrides the implementation. Traits may -also list other traits a class must implement. - -A simple example of a trait is `std.string.ToString`, defined as follows: - -```inko -trait pub ToString { - fn pub to_string -> String -} -``` - -A class implementing this trait _must_ provide a `to_string` implementation -compatible with the one of the trait. Here's what such an implementation might -look like: - -```inko -import std.string.ToString - -class Person { - let @name: String - let @age: Int -} - -impl ToString for Person { - fn pub to_string -> String { - @name - } -} -``` - -A class can only implement a trait once. - -## Visibility - -Types, methods, and fields are private by default. When something is private, -it's only available to modules defined in the same root namespace. For example, -a private class defined in `std.foo` is available to the modules `std`, -`std.bar` and `std.foo.bar` (because their namespaces all start with `std`), but -not to the module `http`. - -You can make something public using the `pub` keyword. For example, a public -method is defined as follows: - -```inko -fn pub foo { - # ... -} -``` - -A private type can't be used in the signature of a public method or field. -Private types _can_ define public methods, which in practise means they're the -same as private methods. This is allowed so private types can implement traits -that expose public methods, without requiring the type to also be public. - -## Core types - -Inko provides various core types, such as `String`, `Int`, and `Array`. - -Some of these types are value types, which means that when they are moved a copy -is created and then moved. This allows you to continue using the original value -after moving it. - -### Array - -`Array` is a contiguous growable array type and can store any value, as long as -all values in the array are of the same type. - -### Bool - -Inko's boolean type is `Bool`. Instances of `Bool` are created using `true` and -`false`. - -`Bool` is a value type. - -### ByteArray - -`ByteArray` is similar to `Array`, except it's optimised for storing bytes. A -`ByteArray` needs less memory compared to an `Array`, but can only store `Int` -values in the range of 0 up to (and including) 255. - -### Channel - -`Channel` is used for sending values between processes, and allows multiple -processes to send and receive values concurrently. - -`Channel` is a value type. - -### Float - -The `Float` class is used for IEEE 754 double-precision floating point numbers. - -`Float` is a value type. - -### Int - -The `Int` class is used for integers. Integers are 64 bits signed integers. - -`Int` is a value type. - -### Map - -`Map` is a hash map and can store key-value pairs of any type, as long as the -keys implement the traits `std.hash.Hash` and `std.cmp.Equal`. - -### Nil - -`Nil` is Inko's unit type, and used to signal the complete lack of a value. The -difference with `Option` is that a value of type `Nil` can only ever be `Nil`, -not something else. `Nil` is used as the default return type of methods, and in -some cases can be used to explicitly ignore the result of an expression (e.g. in -pattern matching bodies). - -`Nil` is a value type. - -### Option - -`Option` is an algebraic data type/enum class used to represent an optional -value. It has two variants: `Some(T)` and `None`, with `None` signalling the -lack of a value. - -### Result - -`Result` is an algebraic data type/enum class used for error handling. It has -two variants: `Ok(T)` and `Error(E)`. The `Ok` variant signals the success of an -operation, while `Error` signals an error occurred. - -### String - -The `String` class is used for strings. Strings are UTF-8 encoded immutable -strings. Internally strings are represented such that they can be efficiently -passed to C code, at the cost of one extra byte of overhead per string. - -`String` uses atomic reference counting when copying. This means that ten copies -of a 1 GiB `String` only require 1 GiB of memory. - -`String` is a value type. - -## Never - -`Never` is a type that indicates something never happens. When used as a return -type, it means the method never returns. An example of this is -`std.process.panic()`: this method panics and thus returns a `Never`. - -You'll likely never need to use this type directly. - -## Generic types - -Types can be made generic, allowing them to operate on a wide range of types. -For example, here's how you'd might define a generic linked list: - -```inko -class Node[T] { - let @next: Option[Node[T]] - let @value: T -} - -class List[T] { - let @head: Option[Node[T]] - let @tail: Option[mut Node[T]] -} -``` - -Classes, traits, methods and variants can all be made generic. - -When defining type parameters, you can specify a set of traits that must be -implemented for a type to be compatible with the type parameter. For example: - -```inko -import std.string.ToString - -class Container[T: ToString] { - # ... -} -``` - -Here only types that implement `ToString` can be assigned to `T`. - -You can use the `mut` requirement to limit the types to those that allow -mutations: - -```inko -class Container[T: mut] { - let @value: T -} - -# This is OK, because `Array[Int]` is mutable. -Container { @value = [10, 20] } - -let nums = [10, 20] - -# This isn't OK, because `ref Array[Int]` doesn't allow mutations. -Container { @value = ref nums } -``` - -If a type parameter doesn't specify the `mut` requirement, you can't create -mutable references to values of the type: - -```inko -class Container[T] { - let @value: T - - fn mut mutate { - # This will produce a compile-time error, because `T` doesn't specify the - # `mut` requirement. - mut @value - } -} -``` - -When using type parameters, values with any ownership (`ref`, `mut`, etc) can be -assigned to the parameter, provided the type implements the necessary -requirements: - -```inko -fn example[T](value: T) {} - -# All of these calls are valid. -example([10]) -example(ref [10]) -example(mut [10]) -example(recover [10]) -``` - -You can restrict the ownership to owned values using the syntax `move T`. The -`move` annotation is only available to type parameters (e.g. `move User` is a -compile-time error): - -```inko -fn example[T](value: move T) {} - -example([10]) # OK -example(ref [10]) # not OK -example(mut [10]) # not OK -example(recover [10]) # OK, as `uni` values can be moved into owned values -``` - -When used in a return type signature, `move T` returns the owned equivalent of -the type assigned to `T`: - -```inko -fn example[T](value: T) -> move T { ... } - -example(ref [10]) # The return type is inferred as `Array[Int]`. -``` - -An example of where `move T` is useful is `String.join`, defined using the -following signature: - -```inko -fn pub static join[T: ToString, I: Iter[T]]( - iter: move I, - with: String -) -> String -``` - -The implementation calls `Iter.reduce` on the `iter` variable. Without the -`move` annotation it would be possible to pass a `ref Iter`, which doesn't allow -the use of moving methods as one can't move out of a reference. Using `move I` -instead of `I` solves this problem by restricting values passed to `iter` to -owned values. - -## Type inference - -Inko supports type inference, removing the need for type annotations in most -cases. For example, the type signature of an `Array` can be inferred based on -its usage: - -```inko -# Here the compiler infers `a` as `Array[Int]`, because of the `push` below. -let a = [] - -a.push(42) -``` - -This works for any type, including generic types such as the `Option` type: - -```inko -# `a` is inferred as `Option[Int]`. -let mut a = Option.None - -a = Option.Some(42) -``` - -If a generic type can't be inferred, the compiler produces an error. In this -case explicit type signatures are necessary: - -```inko -let mut a: Option[Int] = Option.None -``` - -## The prelude - -Inko automatically imports certain symbols into your modules. These symbols are -part of what is called "the prelude". - -The prelude includes the following types and methods: - -| Symbol | Source module -|:--------------------|:------------------------------------------------------ -| `Array` | `std.array` -| `Boolean` | `std.bool` -| `ByteArray` | `std.byte_array` -| `Channel` | `std.channel` -| `Float` | `std.float` -| `Int` | `std.int` -| `Map` | `std.map` -| `Nil` | `std.nil` -| `Option` | `std.option` -| `Result` | `std.result` -| `String` | `std.string` -| `panic` | `std.process` diff --git a/docs/source/getting-started/variables.md b/docs/source/getting-started/variables.md index 31f671db1..6ae90eacf 100644 --- a/docs/source/getting-started/variables.md +++ b/docs/source/getting-started/variables.md @@ -1,242 +1,90 @@ -# Variables and fields - -Variables are defined using the `let` keyword. For an overview of the syntax, -refer to [Defining variables](../guides/syntax.md#defining-variables) in the -syntax guide. - -Inko infers the types of variables based on their values: - -```inko -let a = 10 # `a` is inferred as `Int` -``` - -For more information about type inference, refer to the [Type -inference](types.md#type-inference) section. - -Fields are defined using the `let` keyword in a class definition: - -```inko -class Person { - let @name: String +--- +{ + "title": "Variables" } -``` - -## Assigning variables and fields - -Variables and fields are assigned new values using `=`. For variables this -requires the variable to be mutable: +--- -```inko -let a = 10 -let mut b = 10 +Using the `let` keyword we can define two different types of variables: local +variables and constants. -a = 20 # Not OK, `a` isn't defined as mutable -b = 20 # This is OK -``` +## Local variables -For fields, the surrounding method must be mutable: +Local variables are defined as follows: ```inko -class Person { - let @name: String - - fn foo { - @name = 'Alice' # Not OK as `foo` is not a mutable method - } - - fn mut foo { - @name = 'Alice' # OK - } -} +let number = 42 ``` -When a variable or field is assigned a new value, its old value is dropped. -Assignments always return `nil`. - -Inko also supports swapping of values using `:=`, known as a "swap assignment". -This works the same as regular assignments, except the old value is returned -instead of dropped: +By default, a variable can't be assigned a new value after its definition: ```inko -let mut a = 10 +let number = 42 -a := 20 # This returns `10` +number = 50 # This produces a compile-time error ``` -This also works for fields: +To allow this, use `let mut` like so: ```inko -class Person { - let @name: String +let mut number = 42 - fn mut replace_name(new_name: String) -> String { - @name := new_name - } -} +number = 50 # This is now OK ``` -## Ownership - -When a value is assigned to a variable, the value is moved into that variable. -If the value is owned this means the original variable (if there was any) is no -longer available. If the value is a reference, the variable is given a new -reference, allowing you to continue using the old variable: +The type of a variable is inferred according to the value assigned to it. A +custom type can be specified as follows: ```inko -let a = [10] -let b = a - -a.pop # Invalid, as `a` is moved into `b` +let number: Int = 42 ``` -## Field ownership - -The type fields are exposed as depends on the kind of method the field is used -in. If a method is immutable, the field type is `ref T`. If the method is -mutable, the type of a field is instead `mut T`; unless it's defined as a `ref -T`: - -```inko -class Person { - let @name: String - let @grades: ref Array[Int] - - fn foo { - @name # => ref String - @grades # => ref Array[Int] - } - - fn mut foo { - @name # => mut String - @grades # => ref Array[Int] - } - - fn move foo { - @name # => String - @grades # => ref Array[Int] - } -} -``` - -If a method is marked as moving using the `move` keyword, you can move fields -out of `self`, and the fields are exposed using their original types (i.e. -`@name` is exposed as `String` and not `mut String`). - -When moving a field, the remaining fields are dropped individually and the owner -of the moved field is partially dropped. It's a compile-time error to use the -same field or `self` after a field is moved. You also can't capture any fields -or `self` from the owner the field is moved out of. - -If a type defines a custom destructor, its fields can't be moved out of `self` -in a moving method. +### Swapping values -## Drop semantics - -When exiting a scope, any variables defined in this scope are dropped in -reverse-lexical order. This means that if you define `a` and then `b`, `b` is -dropped before `a`. - -When using `return` or `throw`, all variables defined up to that point are -dropped in the same reverse-lexical order. - -## Conditional moves and loops - -If a variable is dropped conditionally, it's not available afterwards: +Assigning a variable a new value using `=` drops the existing value first, then +assigns the new value to the variable. Using the `:=` we can assign a value and +_return_ the previous value: ```inko -let a = [10] - -if something { - let b = a -} +let mut a = 10 -# `a` _might_ be moved at this point, so we can't use it anymore. +a := 20 # This returns `10` ``` -The same applies to loops: if a variable is moved in a loop, it can't be used -outside the loop: +This is known as a "swap assignment". -```inko -let a = [10] - -loop { - let b = a -} -``` +### Drop order -Any variable defined outside of a loop but moved inside the loop _must_ be -assigned a new value before the end of the loop. This means the above code is -incorrect, and we have to fix it like so: +Local variables are dropped in reverse-lexical order: ```inko -let mut a = [10] - -loop { - let b = a - - a = [] -} +let a = foo +let b = bar ``` -We can do the same for conditions: +Here `b` is dropped first, followed by `a`. -```inko -let mut a = [10] +## Constants -if condition { - let b = a - - a = [] -} - -# `a` can be used here, because we guaranteed it always has a value at this -# point -``` - -If a value is moved in one branch of a condition, it's still available in the -other branches: +Constants are defined similar to local variables, except their names start with +a capital letter: ```inko -let a = [10] - -# This is fine, because only one branch ever runs. -if foo { - let b = a -} else if bar { - let b = a -} +let NUMBER = 42 ``` -This also applies to pattern match expressions. - -To handle dropping of conditionally moved variables, Inko uses hidden variables -called "drop flags". These are created whenever necessary and default to `true`. -When a variable is moved, its corresponding drop flag (if any) is set to `false`. -When it's time to drop the variable, the compiler inserts code that checks the -value of this flag and only drops the variable if the value is still `true`. -This means that this: +Unlike local variables, constants can never be assigned a new value. This means +the following is a compile-time error: ```inko -let a = [10] - -if condition { - let b = a -} +let mut NUMBER = 42 ``` -Is more or less the same as this: +Constants can only be defined outside of methods and classes, i.e. like so: ```inko -let a = [10] -let a_flag = true +let NUMBER = 42 -if condition { - a_flag = false - - let b = a -} - -if a_flag { - drop(a) -} +class Cat {} ``` + +Constants are permanent values and as such are never dropped. diff --git a/docs/source/getting-started/visibility.md b/docs/source/getting-started/visibility.md new file mode 100644 index 000000000..01664107a --- /dev/null +++ b/docs/source/getting-started/visibility.md @@ -0,0 +1,94 @@ +--- +{ + "title": "Visibility" +} +--- + +Types, constants and methods are private by default. When such a symbol is +private, it's only available to modules that are in the same root namespace. +For example, private symbols defined in `std.foo.baz` are available to +`std.bar.baz`, as both are located in the same `std` root namespace. + +## Making types public + +For types and constants, making them public is done as follows: + +|= +| Type +| Private +| Public +|- +| Constants +| `let Example = 10` +| `let pub Example = 10` +|- +| Classes +| `class Example {}` +| `class pub Example {}` +|- +| Traits +| `trait Example {}` +| `trait pub Example {}` + +## Making methods public + +For methods the syntax is as follows: + +|= +| Type +| Private +| Public +|- +| Immutable +| `fn example {}` +| `fn pub example {}` +|- +| Mutable +| `fn mut example {}` +| `fn pub mut example {}` +|- +| Immutable async +| `fn async example {}` +| `fn pub async example {}` +|- +| Mutable async +| `fn async mut example {}` +| `fn pub async mut example {}` + +::: tip +`pub` always comes after the keyword used to define a symbol (e.g. `fn`), +constants or method. The `mut` keyword in turn always comes directly before the +name of the method. +::: + +## Processes + +The fields and regular (non-async) instance methods of a process are private to +the type, meaning only the process itself can access them: + +```inko +class async Cat { + let @name: String + + fn give_food {} +} + +class async Main { + fn async main { + let garfield = Cat { @name = 'Garfield' } + + garfield.name + garfield.give_food + } +} +``` + +If you try to run this program, the following compile-time errors are produced: + +``` +test.inko:11:5 error(invalid-symbol): the field 'name' can only be used by the owning process +test.inko:12:5 error(invalid-call): the method 'give_food' exists but is private +``` + +This rule is enforced to ensure no data race conditions are possible as a result +of different processes trying to access and/or mutate the same data. diff --git a/docs/source/getting-started/whats-next.md b/docs/source/getting-started/whats-next.md new file mode 100644 index 000000000..1f61f97a3 --- /dev/null +++ b/docs/source/getting-started/whats-next.md @@ -0,0 +1,16 @@ +--- +{ + "title": "What's next?" +} +--- + +Now that you have a better understanding what Inko is all about, you should take +a look at more advanced material. + +The "Guides" section contains various practical guides, such as +[how to write unit tests](../guides/tests) or [how to cross compile your +code](../guides/cross-compilation). + +The "References" section contains detailed references of Inko, such as its +[syntax](../references/syntax) or [how to structure a +project](../references/structure). diff --git a/docs/source/guides/conditional-compilation.md b/docs/source/guides/conditional-compilation.md new file mode 100644 index 000000000..330e5dc14 --- /dev/null +++ b/docs/source/guides/conditional-compilation.md @@ -0,0 +1,90 @@ +--- +{ + "title": "Conditional compilation" +} +--- + +While Inko code is portable across platforms and architectures, sometimes you +need to handle differences in the underlying platforms, most commonly when using +the [FFI](../getting-started/ffi). + +Inko supports conditional compilation at the `import` level only. This makes it +easier to understand the code, as platform specific code ends up in dedicated +modules. + +For example, to import the module `foo` only on amd64 Linux platforms, you'd +write the following: + +```inko +import foo if linux and amd64 +``` + +The tags act as an AND, meaning the `import` is only processed if _all_ the +specified tags are available. OR expressions and negations aren't supported, but +OR expressions can be handled by just using separate imports: + +```inko +import foo if linux +import foo if mac +``` + +If a conditionally compiled module includes any errors (e.g. a type error), +those errors won't surface until you compile the code such that the module is +imported based on the available and required build tags. This means that if you +have an `import foo if mac` statement, and the `foo` module contains any errors, +you won't see those errors until you compile your code for/on macOS. + +The compiler won't produce any errors for tags it doesn't recognise, meaning the +following import is never processed: + +```inko +import foo if kittens +``` + +## Available build tags + +::: note +Custom build tags aren't supported, and we're not sure if or when we'll add +support for custom tags. +::: + +The following tags are available: + +|= +| Tag +| Meaning +|- +| `amd64` +| The platform is a 64-bits x86 platform +|- +| `arm64` +| The platform is a 64-bits ARM platform +|- +| `freebsd` +| The target OS is FreeBSD +|- +| `mac` +| The target OS is macOS +|- +| `linux` +| The target OS is Linux +|- +| `bsd` +| The target OS is any BSD +|- +| `unix` +| The target OS is any Unix system +|- +| `gnu` +| The target uses the GNU ABI +|- +| `native` +| The target uses the native ABI + +The bag `bsd` is essentially `(freebsd OR ...)`, while `unix` is essentially +`(freebsd or linux or mac or ...)`. + +For Linux targets using glibc, the ABI is `gnu` instead of `native`. For the +time being the ABI tags aren't useful, but in the future we may support both +musl and GNU builds, at which point they can be useful to handle differences +between the two libc implementations. diff --git a/docs/source/guides/conditional_compilation.md b/docs/source/guides/conditional_compilation.md deleted file mode 100644 index bf02d1e8b..000000000 --- a/docs/source/guides/conditional_compilation.md +++ /dev/null @@ -1,73 +0,0 @@ -# Conditional compilation - -While Inko code is portable across platforms and architectures, sometimes you -need to handle differences in the underlying platforms, most commonly when using -the [FFI](ffi.md). - -Inko supports conditional compilation at the `import` level only. This makes it -easier to understand the code, as platform specific code ends up in dedicated -modules. - -For example, to import the module `foo` only on amd64 Linux platforms, you'd -write the following: - -```inko -import foo if linux and amd64 -``` - -## Compiling conditional imports - -The tags act as an AND, meaning the `import` is only processed if _all_ the -specified tags are available. OR expressions and negations aren't supported, but -OR expressions can be handled by just using separate imports: - -```inko -import foo if linux -import foo if mac -``` - -Build tags are applied when parsing Inko source modules to an AST, and imports -that should be ignored based on the build tags are removed when lowering to -[HIR](../internals/compiler.md/#hir). - -This means that if a conditionally compiled module includes any errors (e.g. a -type error), those errors won't surface until you compile the code such that all -build tags are available. In other words: if you have a `import foo if mac` -statement, and the `foo` module contains any errors, you won't see those errors -until you compile your code for/on macOS. - -The compiler won't produce any errors for tags it doesn't recognise, meaning the -following import is never processed: - -```inko -import foo if kittens -``` - -## Available build tags - -!!! note - Custom build tags aren't supported, nor are we likely to support them any - time soon as this complicates the build process. - -The following tags are available, and are based on the target an Inko program is -compiled for: - -| Tag | Meaning -|:------------|:-------------- -| `amd64` | The platform is a 64-bits x86 platform -| `arm64` | The platform is a 64-bits ARM platform -| `freebsd` | The target OS is FreeBSD -| `mac` | The target OS is macOS -| `linux` | The target OS is Linux -| `bsd` | The target OS is any BSD -| `unix` | The target OS is any Unix system -| `gnu` | The target uses the GNU ABI -| `native` | The target uses the native ABI - -The bag `bsd` is essentially `(freebsd OR ...)`, while `unix` is essentially -`(freebsd or linux or mac or ...)`. - -For Linux targets using glibc, the ABI is `gnu` instead of `native`. For the -time being the ABI tags aren't useful, but in the future we may support both -musl and GNU builds, at which point they can be useful to handle differences -between the two libc implementations. diff --git a/docs/source/guides/contributing.md b/docs/source/guides/contributing.md index e7ed748c0..f5afd18fa 100644 --- a/docs/source/guides/contributing.md +++ b/docs/source/guides/contributing.md @@ -1,6 +1,8 @@ -# Contributing to Inko - -Thank you for contributing to Inko! +--- +{ + "title": "Contributing to Inko" +} +--- Before you continue reading this document, please familiarise yourself with our [Code of Conduct](https://inko-lang.org/code-of-conduct/). All contributors are @@ -17,12 +19,26 @@ specific to Inko's version manager should be reported in the project [inko-lang/ivm](https://github.com/inko-lang/ivm/issues). Here are a few of our projects: -| Project | Description | Issue tracker -|:-------------------|:--------------------------|:---------------------------- -| inko-lang/inko | The main project for Inko | -| inko-lang/ivm | Inko's version manager | -| inko-lang/inko.vim | Vim integration for Inko | -| inko-lang/website | The Inko website | +|= +| Project +| Description +| Issue tracker +|- +| inko-lang/inko +| The main project for Inko +| +|- +| inko-lang/ivm +| Inko's version manager +| +|- +| inko-lang/inko.vim +| Vim integration for Inko +| +|- +| inko-lang/website +| The Inko website +| For an up to date list, take a look at the [inko-lang GitHub group](https://github.com/inko-lang). @@ -55,13 +71,13 @@ how other languages implement the feature (if applicable), and so on. ## Submitting changes -!!! note - Before submitting code changes, please note that we only accept merge - requests for issues labelled as "Accepting contributions". +::: note +Before submitting code changes, please note that we only accept merge requests +for issues labelled as "Accepting contributions". +::: To submit changes to Inko, you'll need a local Git clone of the repository. If -you want to contribute to inko-lang/inko, you need to [build Inko from -source](../getting-started/installation.md#building-from-source). +you want to contribute to inko-lang/inko, you need to build Inko from source. ### Rust code @@ -87,8 +103,8 @@ Clippy can be run using the command `cargo clippy`. Unit tests are run using the ### Inko code For contributing changes to Inko source code, please follow [the Inko style -guide](style-guide.md). We don't have any tools yet to enforce the style guide, -so this is done manually during code review. +guide](../references/style). We don't have any tools yet to enforce the style +guide, so this is done manually during code review. #### Standard library tests @@ -196,7 +212,7 @@ Commit messages follow these rules: 1. The first line is the subject, and must not be longer than 50 characters. 1. The second line is empty. -3. The third and following lines make up the commit body. These lines must not +1. The third and following lines make up the commit body. These lines must not be longer than 72 characters. The second and all following lines can be left out if the subject is explanatory diff --git a/docs/source/guides/cross-compilation.md b/docs/source/guides/cross-compilation.md new file mode 100644 index 000000000..ebb595269 --- /dev/null +++ b/docs/source/guides/cross-compilation.md @@ -0,0 +1,281 @@ +--- +{ + "title": "Cross compilation" +} +--- + +Inko code can be cross compiled to different targets. For example, you can +compile your code for macOS while running on Linux. Inko supports cross +compiling to x86-64 and AArch64 Linux and macOS, and x86-64 FreeBSD. + +Cross compilation involves the following steps: + +1. Decide what toolchain to use: [clang](https://clang.llvm.org/), + [gcc](https://gcc.gnu.org/), [Zig](https://ziglang.org/), or something else. +1. Install the dependencies necessary to compile to the target platform +1. Installing the Inko runtime for the target platform +1. Compiling your code for the target platform + +## Deciding on a toolchain + +Inko makes use of existing technologies (such as the system linker) to compile +your code. When compiling for your current platform, objects are linked using +the `cc` executable and an optional linker can be specified (e.g. +[mold](https://github.com/rui314/mold)). + +When compiling for a different platform, Inko tries to determine what executable +and arguments to use for the target platform. This of course only works if you +have the necessary executables installed, so let's get to it. + +Zig greatly simplifies cross compiling code and so Inko favours using Zig over +using gcc or clang, if Zig is installed that is. For details on how to install +Zig, refer to [the Zig +documentation](https://ziglang.org/learn/getting-started/). + +If Zig isn't available or desired, you can instead use gcc or clang. If both are +installed and you don't explicitly specify which one to use, Inko favours gcc +over clang. + +::: tip +If you're not sure whether to use clang, gcc, Zig or something else, we highly +recommend using Zig as this makes the whole process much easier. +::: + +## Installing system dependencies + +If you've decided to use Zig, no additional dependencies should be necessary, as +Zig bundles everything (e.g. a C standard library) for you. + +If you're using clang or gcc, you need to install a compiler toolchain for the +target platform. This is where things get difficult: some platforms provide a +package providing a toolchain for a different target platform, others don't. + +### Linux to Linux + +When cross compiling from Linux to Linux, you need to install the following +package(s) based on your host distribution: + +|= +| Distribution +| Target +| ABI +| Package +|- +| Arch Linux +| AArch64 +| GNU +| `aarch64-linux-gnu-gcc` +|- +| Arch Linux +| x86-64 +| musl +| `musl` +|- +| Debian +| AArch64 +| GNU +| `gcc-aarch64-linux-gnu` +|- +| Fedora +| AArch64 +| GNU +| `aarch64-linux-gnu-gcc` using [this copr + repository](https://copr.fedorainfracloud.org/coprs/lantw44/aarch64-linux-gnu-toolchain/) +|- +| Ubuntu +| AArch64 +| GNU +| `gcc-aarch64-linux-gnu` +|- +| Ubuntu +| x86-64 +| GNU +| `gcc-x86-64-linux-gnu` +|- +| Void +| AArch64 +| GNU +| `cross-aarch64-linux-gnu` +|- +| Void +| AArch64 +| musl +| `cross-aarch64-linux-musl` +|- +| Void +| x86-64 +| musl +| `cross-x86_64-linux-musl` + +### To and from macOS + +[osxcross](https://github.com/tpoechtrager/osxcross) may prove useful when cross +compiling _to_ macOS, but the setup process is difficult and we don't have any +experience using it ourselves. + +Cross compiling _from_ macOS to Linux or FreeBSD is perhaps even more difficult, +as there don't appear to be any commonly used packages to do so. Instead, it +appears the usual approach is to use a virtual machine running Linux or FreeBSD +and compile the code in the virtual machine. + +Because of these complications, we _highly_ recommend using Zig when compiling +to/from macOS. + +### To and from FreeBSD + +Similar to compiling to macOS, Linux distributions don't provide the necessary +packages to target FreeBSD. FreeBSD in turn doesn't provide packages to compile +to Linux or macOS. + +Zig should be able to cross compile from FreeBSD to Linux or macOS, but it +[doesn't support cross compiling to +FreeBSD](https://github.com/ziglang/zig/issues/2876). + +## Target triples + +When cross compiling, we need to specify a target triple when adding a runtime +and building our code. The following target triples are available: + +|= +| OS +| Architecture +| ABI +| Triple +|- +| Linux +| x86-64 +| GNU +| amd64-linux-gnu +|- +| Linux +| AArch64 +| GNU +| arm64-linux-gnu +|- +| Linux +| x86-64 +| musl +| amd64-linux-musl +|- +| Linux +| AArch64 +| musl +| arm64-linux-musl +|- +| macOS +| x86-64 +| native +| amd64-mac-native +|- +| macOS +| AArch64 +| native +| arm64-mac-native +|- +| FreeBSD +| x86-64 +| native +| amd64-freebsd-native + +## Installing the runtime + +Inko uses a small runtime library written in Rust, used for scheduling +processes, allocating memory, and more. When cross compiling, you'll need to +ensure a runtime for the target is installed. A runtime is installed using the +command `inko runtime add TARGET`, where `TARGET` is one of the target triples +listed in the above table. + +Runtimes are removed using `inko runtime remove TARGET`, and you can list the +available and installed runtimes using `inko runtime list`. For more +information, run `inko runtime --help`. + +As an example, to install the runtime for compiling to x86-64 macOS, run the +following: + +``` +inko runtime add amd64-mac-native +``` + +## Cross-compiling your code + +With the system dependencies and the runtime installed, we can start cross +compiling our code. We'll cross compile the following program located in the +file `test.inko`: + +```inko +import std.stdio.STDOUT + +class async Main { + fn async main { + STDOUT.new.print('hello') + } +} +``` + +To build this for AARch64 Linux, run the following: + +```bash +inko runtime add arm64-linux-gnu # If not done already +inko build --target=arm64-linux-gnu test.inko +``` + +If all went well, the resulting `test` executable is located at +`./build/arm64-linux-gnu/test`. + +If Zig is installed, we can also cross compile to macOS without having to +install anything extra: + +```bash +inko runtime add amd64-mac-native +inko build --target=amd64-mac-native test.inko +``` + +### Using a custom linker + +Inko tries to detect what linker to use based on the compilation target. +Depending on the target you're compiling to, you may need to manually specify +the linker to use. This can be done using the `--linker` and `--linker-arg` +options. For example, if we want to explicitly use `aarch64-linux-gnu-gcc` we +can do so as follows: + +```bash +inko build --target=arm64-linux-gnu --linker=aarch64-linux-gnu-gcc test.inko +``` + +The `--linker-arg` option is used to pass extra options to the linker: + +```bash +inko build --target=arm64-linux-gnu \ + --linker=clang \ + --linker-arg='--sysroot=/usr/aarch64-linux-gnu' \ + --linker-arg='--target=aarch64-linux-gnu' \ + test.inko +``` + +Here we've used clang as the linker, and used the `--linker-arg` options to +specify the toolchain location and the target to compile to. + +In general you shouldn't need to manually specify the linker or extra linker +arguments. + +### Using LLD or musl + +Inko supports linking using LLD or musl instead of the system linker. When +cross compiling with the options `--linker=lld` or `--linker=musl`, the `inko +build` command may override the linker depending on the target the code is +compiled for. For example, when using gcc for cross compilation the linker is +always set to the system linker to reduce the chances of running into any linker +related errors (e.g. some linkers don't support certain AArch64 CPUs). + +## Using C libraries + +Using C libraries can greatly complicate cross compilation, as you'll have to +install the library for each target you wish to compile to. This likely involves +a lot of manual work, such as compiling the libraries from source and placing +them in the right directory. For this reason (along with the lack of safety that +comes with using C libraries) we recommend you avoid using C libraries as much +as possible. + +If you _have_ to use C libraries, it's best to compile your code in a virtual +machine or container of sorts. Inko doesn't provide anything to make this +easier, and likely won't for the foreseeable future, if ever. diff --git a/docs/source/guides/operators.md b/docs/source/guides/operators.md index 6cdbeace2..25be7c99f 100644 --- a/docs/source/guides/operators.md +++ b/docs/source/guides/operators.md @@ -1,7 +1,10 @@ -# Operator overloading +--- +{ + "title": "Operator overloading" +} +--- -Inko supports a variety of operators (see [this -section](../guides/syntax.md#binary-expressions) for the full list), +Inko supports a variety of operators (see [](syntax) for the full list), and these can be implemented for your own types. In fact, operators are just regular methods, though the compiler may choose to optimise some of them whenever possible. diff --git a/docs/source/guides/testing.md b/docs/source/guides/tests.md similarity index 93% rename from docs/source/guides/testing.md rename to docs/source/guides/tests.md index a6bf0caf9..7e1336e99 100644 --- a/docs/source/guides/testing.md +++ b/docs/source/guides/tests.md @@ -1,4 +1,8 @@ -# Unit testing +--- +{ + "title": "Unit testing" +} +--- Inko's standard library provides a module used for writing unit tests: `std.test`. Using this module one writes their unit tests like so: @@ -26,9 +30,10 @@ changed if necessary. For more information about the testing API, take a look at the source code of the `std.test` module. -!!! note - In the future Inko will support generating source code documentation, at - which point looking at the source code is no longer necessary. +::: note +In the future Inko will support generating source code documentation, at +which point looking at the source code is no longer necessary. +::: ## Testing structure diff --git a/docs/source/images/404.gif b/docs/source/images/404.gif new file mode 100644 index 0000000000000000000000000000000000000000..c16d984dde5499e950a865693a33aa19a0aaee99 GIT binary patch literal 706306 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 z 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

T56v8}Z1N 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

?Z05)LgA77P=kUl@PQGW7|R zsTK%Basmm`RVxZaAn7_~;lj#Jv^L7hV5*m^o2zKv%s7eSuwsUmJ#a9T{@DTr&ZbGr z$J8FTa8TcsLnm(l0jo~4(%Z&Wn^&g#3X1JVaG%+;ofe2(n~;b?w?rbuefW@=go=_H zS*jQbZ^llRV1fEXiY*aUoe--kX)5p93y^!otQ8q@E}Sqk^X%DZB2Yp^6%uvOjI^_( zN~3|b=GAG`c;VoI)5>kzJg%#A>(0k%puXN^fgen3SmXn^$K%eWdr0EMiy8Gsdh}>I zrky4yAtYRURSL!}7&k`Qom0!0I=fH4>fH>ZJ<6es%r2|7@+h1sGOY zO!@PVHE0dT&su8LqSk{CERb9&3ne5MbA&`>7a|l<_ltGZsU!*hcDB62Q7GNDpcpEh zs2E;K}%jD7b(vl?wz`S;CLP}(Ell-Dc( z5J31?*_(ppb=Tl35;pi?TgR0-p>h~Dx1mp)`B}NA`uzTa${pVy%Hjjh#0~Ueaw)CRB8z1x1>E*b^2P9Sk*)2YF3uIz^SOB zO2n88qSfWAVG_rQm=v~k3Wgdw_gse{=H=r>BF350uqX*?UU!ATq9+l2ws>bs63B>| zdWCXwqf3XTml})AO_phqi}ZOQzNgw2+ND#T}%X^fxcvHNIN35lD0He z+t^+|MJnH9Nsq)L}mm!V$^Q_1D8!LoI&)P|ZMXz-s znsg;>7sDPt+;E6hV>U4(`GzE3v(8E!QjQ|&a_zA*c9Ox`+m>jNFe)2E?ommltL{Ai zeJZMMI9Fq;-&dkaFVBRlI<(S0uX;4oZiNXj;&9>nc&v}xiqM60#Z`>L(!D+LC6Ew1 zvBV#rlI$ohh*FrH8z1I6LW0gnF5f(<9_*a#%LZX=XzOG9bevWJ-gUpqu5EZEs&x<>xnUI7)pndZI~=B zxkO@lj&_S9XB7QzDY~i|9+R?hJmoR(fXquAz7hg7QwXhc4YVFx(qs$`aZftJ;2rq* z_bp+FL{Fz11&UHS$qN;!Q>LHT9gh(ESbcj&}NGou>w0Sxr}8r_&p%W$23O* zAT>1Al$wEMUVuZO5}9@?#T8Cg&Knry94JNH4dPY@yW-O*h%j9x0$kv8m`Z{*#vTR( z7F?S}c$Rg(Qjk!DCR{}dRR{|%p>aH{{-_@>bYZ()$ca%p#1`nx7`I7{D~O~4;A--N zGbJKWA@X7xBqw>Q2=Q!+63pZZ9fGD#axp_{x*)J1hBY#l(u`?D2uVr^M>oRpghVI- z9W^;ESeUFkhvHUbq64YsNNQY%bfho~2h3syvx$eJr7{WTNvIVJbA`|l5u&BAFN*J) zsJ!M2r#Y;WkT8U{Z~^=Hl!6klu{;B5kX(j^5F1vjMrmV-NOs8+NX0E8ax*3qEm_Gh zMY5m!q~tyUs!wB{!c5CN8161~rh}~$i-vIKIukL?YTkuI*kqVCJ!lJKsjh3~RK+ZD zXGdGUb5J$3)($_!J8N!_fPZi;tE91?6;~^#q{FR@|~Yys%882I-Ty`I0U}atKb>%2s_M z$1N3ti%((EQ@S?Op<7IACj?;_X#Vu4NTq1Bm`YfVdMifML5RF%37Mj6**?wX_-o~PRs$7u3Y@9 zZhu zjgl^vPpzmTp4ACZK(>5|ktHY0$)dxYQzQW(DJ-(vrAnA&te%6L?-a(xn5I^!5F5D7L_>?bRFGp-tWyZq$Q7-s3@nzu2Oq|qC7AFz%UJ>vOt%(OMo39P<|smeHpC+S@mbBx zX*JjPwnGK=UxKsuTZm>4cS%L6QknX&&4@2hT%)Ff0i9S@uFkP-JOxOeyC+^hIwVzw z1(i432`pC^A=$mOrEQ4mvTC}_ot6(5p-t!e5*2Elr0p}e=wch=cE>vg?jcOEp*!C> zS{l?QFf36&_goX!v{tOFzgP-bGB*@&{D|wwY1vhTfD?fL03rDV1qc8{04x9i0058y z;Q#;!{(wY+gD8T9g@%KQi;RtqkBusll8`8tlawovo1Bm_MA5Q`hxcO%=F;#8^%wb!FU4^E~2%sU_3?p?iKt8 zuT#T^6K5pcG!fy&iuKyPv!}7-GZ?(M2+Nj4aDX&-PF=d1vI17z_%9(vNFRT4 zTsNJ~6dWT*Rd|~}4Qi&?gN|XuPK42A*ql=t zCRWl|?v$rbckL9V4s9r&CF6LfJ;Kr=sR^QQf5VER#g_Kpm*8vXjn%*@de3IlYQl!m|6uW)s$gQb)cGX#<|g0FU+8# zft%3Q9*pbEIHNr2nRZ%^IyNFxkM03! zWjW%7#rdVnmk>&r)*?Ez+NzctUI!+Wl^R43mKe&ZYk*|o+2@J|qGZ<~dbXDfip2V< z(OZJlh#Dg>?YJI$H|cULYd*^N=(frAdJ(87)yk7Q$LX3N5juS6oIjvW6&Z0|f>w`L z3bmPCgBJRAoV#MqN~@&uV#uUpy8?*RZ*|@|o;vldgA;2oDjQy4&i)QkW3+7TxQJ}S zD#|dU+%9@7rQe!JF2M!jSD>bwrn~MU?dB@tUjI#~rG}x}Y-+0Lx~eZzITHvW${kL* zEUxAj{E>|IoxI}0JR<5@pAv_Q&y8>mGgnMee~j&WDSgc7*v3w*WUx;2lQu$5V-#hs z4(b*U$v~gUk##z&S}$dG`}a@2_m+yLlQLsBU{HID`*xM6Dw5>WK{gyYqJvRA<2o|D zAOoPymNxCQT*oBWd55CY=uPgJPBx+s=fvWQ5S{gH+fUc6rloo>Mfb`x)4UhFarbvH zbMm_SYNqgB=OC)f9d0J$iWfX#cZ0E0gGn=FE_t?l`e=E0{;6lrtXqV(rK5UVD}n>Z z?=4Et>hQP!nYso}>MeC8nJgvrfZ2_+VY>^Jr?7%I;1NqJ?&8g;2H`W`#miKLgI>Kr zwHr;{jzdxMlSi@_Bu30YTjz+F#AJ{XnA`|!Sc3!(b}+j1vBf>!Yv0&J*18(j2~Q)r zpJ?pIxZO!`XF+4x-Y`SJGR+24K->~l6k)vFJn454WE1lagpuhaE_!cMld=G15*a)~ zNJI+Z_e9etB5ZDaooh)79}yQ8&Sh&a?3n6k2tw|)4s|%}3c0HD8Iz?gSo$#-5SIs_ z@$AEj%PY)+W_B`F^=*MnM3)2Q^}s9vYl;N3qF1o~SS~sFDI*^=Bh2gw#yX90JY`&# z#ki(MX01|va&e=^;>bGKfb14U(#1PyGbM@0PHk4Bj(!HVJXG?pm*+Z||A?5#BSMik zSQ=)R)>R?_5=>=)abEuh#yq7(|lu5`fZRwN41Xcmc^GCqcqIujtPlDNd+5tB{)!syEi z_b+cI%aD!*H3SKFQAsH zRKHNU3oY)naRN;Xi3SHADnSsM|Fe!zi5LF3AMT4&p7PBx-R8}K>~JM$!^sB%(jz-o zEg%|MCrDlzI%~;i1@OBm3~>q-ohq|4C>3TO&!(Gd8uOq>r58lGLe)+f(`E_`WQn|U zm{M_6W}8w@JT%G8O`7Xdz~oO@=PD!_n)9rR*j&Y$g(F9-aF#g52`!8zHqPGEt#vJm zQ<3sZqwTeq)O^>|2xp?e3bc1Z%bQ`3CLH83c4k^FtcJMyJZsv=FqA!JFn3iiswIeo z@5lu$s8veWq4R)hZRso3$F(=!^R2M?S`5!yQ+kZ$AoQzVK>vs~DjEz|vz2aOn{gY<;c+*l66FeIB>egg()dEAND9ueM9Zq%=ttxI`G&st zom)X8jNJ({>a0x5Feh^47W107#0=Xm!>|lP5aQ&-PJJ)hgodmtSxvER@)d9OYUG6e zrJ|)M1Yzby#jqf{x*W7@8cMhIcPnX)IcUDbR}t3h`!V|Y-7Z@bUoSA+D+q! zQdEN+XvR#zx+RZzkL^rGf$NA{$1ZQEXvB80oeXJEqZ;+DH*T(aCjUsVx#;c>b>j3# zRQ6JKg`V>PY5GAZFPemJL7^HiHf{CEvaKbx>4$w0*SWSvUC1KIJNwd~7%f?*P5nq}?r4V#5RbN@R z4jV0dT}WX+(B37?v@ap?XB3j;B7UHQmglR2%XHA2&@G7Rga~rD8QGt@Il$T{kD+cW zUf^M_h~aM{@ILFY@sVg4KTuhDgHmZ{Bew{Ur|-;(opdc!RJ5COCwGCmqccR6o%z?}bFR zb$!nQZP2nxREJvW6BC+1X`_^7e0OMFR$M;j2uHXB#{*dcGf+Dx9^m3gPp4Hy!zCD% zCtlG=F;-wpV;dHvhwL(YQPm+pCJ#6ugcTBVF^7PU&??4v89LE>!wGqUCd=LWd}R9qa+b09WhrPs0Tr|F(!yeimJA1n&wXsQF&@rK8yfq2pB1dz)P>ZbCKTl_iyBLeJ_;Pi4b^_OHOwwYBH#K60 zHXY?=Fp+L7p-woXMg-Xs4VEUH;CC=*h?#;cDkxr5XNlNHkr^W`#NajEs502{3eg~U z7L|Zpf{6UIV3spgJ_Qx?_A9s-f}(L|YB)efLyr%FWawBca#LH0=U!W+G{I3Gck&TH znRu-fkb*>j@L+^y*nH&G3F|Rh6bMJA!;}>)k%x9Klk%|Km~bwl$HS!kZ{I1uosk8=wjFf{&6R$ zH#$Iy%g2m@0+pguiQGqlj|mLS@M=I;2wll>x%7o7)q)9ikG;4RWZ_Q(cOu620xN(B zFJg9^)F-b1dB{VAD$<6YXeNLS#G$} zW(`sTaJ5UOc9%Iboj&!C^HZMKB%JCb4_>qqZvh}c`4VmcC@O*xLHVDJx14O~4ld9= zb7WE<#5y=}8Py4yP03OlxQUPeMxk_1>KJ38d6T{pBRMs2mctyV$&Ca45-wTNlO4rX zNo5EiR+4&DTXZQWYWtR@=IYzwlNqcykLSb{OS&ur} zRh>ax*QA_PgD2>iVMIEd#&IXkW&;p6s1JdpoFkZLQA3&#p+q35voH!o@-^EP3Zt+B zS(<$n(Lx;>GJN-ap?W}O+L}I!j((D&!}gLZf|@9BByie8ayp|j8J~8V9H_E;dfKWc znvBZ^s7KSN2+62TdUywELUwX^!C935c`nRWp*Z0JD&PXvYOVe^v8k%14z>_}n~D~V z=9t%cK5;Q=QA0|P2X`IggL~O23Meq(10=TcJ$4bIwV0oBc~*e zXH3JVfJk;SVoETYY8O$U`%|C>X+}39iAg$fgo+U)wP>l+9@bh25n30U3JR$C8l=FL zmi7q&5rLZ!nTAq29J7I(SQB9FJ-RT7Jl8isT>E6HCrvygZ{Hb=8J0PP{i_Cthlj`(^Mz| zG(@{m`qv0H2R4JNv~;>DO*rMww}wDwtFvWYbHLp^6hixByA8ZLI|6$Uw+3fiPfCRxN;tO=SH*|TV(b|SJxHRkM~ zRy+^tETaTXclcV4u>3_fK|A-HyerC^IK9u*bITk1&!X1CMLMyYld|aqu@sBB@sON| zYRvPiIg^^29oT`ckiQ0O(LsC+*;i#YQeLRr58 z!K3t`d0G~78k=?}6rCj=jU)brIJBSd*iCBeIuh)lM1x^1tf;9dX-n;_Ic5+6x;cD| zY{j6G5IwS2?Y3&GjTlV{+zG%{$YJo*HO7*OyzmPryUk`j&&uM2X8aRs`eZx_HPPFi zuqo4fb%$zmCV%|MYx#B=yvd)mTxQ(4ZA``VpaTnP7{)lqKzVBN-~uR68R2rQl(9LG zy~llQtuK%b+68*YfC+Cq-lHH1mJrSP8`{i(kzZ7^1$^4goZ4mmjF;NlbbV@PSv?>` z&i1jHJi@Ey$e#jtMN&i&Gt1g@30f)rj-*N4fbB4F2_)Syw~2w>V8z@B$s$vM0%v4K zlkMS%3RX36M!oFejs708#A6-O+(lFCoJ%@~u$_EI zv(0&5G~A)W#2|%cA!RoQjt;h|;Nxsv{hU?HODDJNyktb-4N=3+N2DYHNC)u(9NyFy zR?HU`;##f`Q0+zBE!S*oyBNKxl(3!ts@~NsZ5P=I50l!md*e7RrqP+OU(@3=0y63x z!G8PSLVXW!O;0!$d;wTz3hdkT4BTn$8RX{AaN~eYVk_G@9>$^EL&$Wc=^5LdR`kPYR1(c9U!is0g`6mgDbLV*$&(L#~kW$-7P@Epg??wxH7 z&zp-2@y4y}Io|9arF+mhHr?Bct4e*JMPDJW#wtC*C7%ncD?eqQ3s7l}a9G0-EK2lV z%m$+VvG3sm%r^7%>jJC`8$J)bZXWcXy`8a&M$UrtYm|l8OzgFQ+ED-NYl|(FUmt_E z=~!<^zAZ9`KID<}+cvN|jigXxEG%Si<+iBFxLw?nqpKLy>2wkf$I>G~9a^HqmRx1b z0P6St3~{dB?ip+I^!v~d?I_Jz0y5y;El{QTP78*>3J$CvuQdwh#3C+ zg6dKtc-Zo?Le#4Q9NbG3TnsFUqC!mMBH362-6-iO4edyTGo6h+-Q8`7815^%QeHmZ zo9;axZb*KJcqmVl3K^M7NKbFiZ||)r4qm)@?c%vxCn+30caSpKCF^>zdoE-p>Ua`Ss%!f&X>!%=(y19OKh^34Zr>^yrx zQNL~C%5O@&Mo2U9HKPIvzAV>PbHYToRer&IW!87mSkp~+>)@~rlJBS`-gxSK7gsz@ z(uEL40d>>QUWT3L(KLN2G+kl)P12uYm3{Wuho7Y+p+7H_aNuSM{#F7ILk)5UA)9*9 z(-fED7}6m$Dt6+^Ymg9mN)4o`P$G#dxPVV;tN5m(iY=U+6Rr6#YX?~eL z`ZYTcdx^!#S%c|DnB_@mr%gIijmRLVrHa1p$-G*Zur-OXPRuv3u>O4R-nMNx`gBp?Cqa#xz3u!0e-XoZVd z^a-HMf^~~QK?sazJY^)$Im?rq@`y2m<8VM#QsLO%D%JuNPzOjU=*BtzHZbg!Cx>kb zhv8N*G|L>zd|zr>v0R24$)V+P^1##L2BRR&RVyYu6BFo0vbjj5OMikP7fC{s3#Pf_ zT!hG1Y7})qu9>Jdwj)6ZLf}AqJ*5^eoJNZ*Whi|x#VMzmP6%F54Cp`y88R$kbEp%H zTC@O8X!(F7KH$hlPA^RBXxrh=@s3>qh8O4nA|et-IFg<08+<8Z`+_x}QeN>pbpnhN zw-q)o7RWtH8=@(*sKsf7i+%KvqMPm!kN#$;&2fW3jB5($0r3f}m}2Bu(* zrJ*BIz|ybZy+}B;AYL#2_#CW+b2>6CWHLx-3>j7jh|Q>>Bp4})22SIRs)7@oY6z!X zNWzlxz+@+%#Fr`g(0JPuWt_aEN>fH|lbb}=DM13W^cC$_u#95TFe9v5+6QxzAzBi5 zd9u&wr4*_YqstBbyS)#D^vaG0^ z!PXMGkg3BeTz+Ut) z=9=RyhVztt{l>A=G*KGe2+7HYU~4JpNiFDTwODEv6iBI5a8x6(Zp=`Sqdg>b(0L5F znQ9tX-B+qqH7W7(s~VGV)iS6Qz1^aNs6cefF@W1sg{sw98-`-GYP=9GXYMLmkgC*h0UETRXOyl?S`6Z}c-U zThn?_4o4Jpzjh2KjW{OZ)}=8<3oI=sM9L!Gb)?dA6S5E*HbWhz6T)n*1S{pjPhd<* z^NJ}PNifY$hi3j2gsLFFa-mNPX4Ak2en(eGZ7NeYtjeWM?UucvU{@pLYK?$Z4dBL+ zafr}{>B)8A-m#2Ms`+~o9dVc^F2IC_CX-P@?nn?vah@5dGu)~PIkr?R!RiD&2BL00 z?u!o?EB40y(ip}dJ#Lmt8jcVI&Ke!D8k|@Hzu#@gQo!AA*)pS&JUS`~k=pOn^3K)Z z{=~qaF{E`_1K}25_`n*j@CQR&gyN~6u+3-jw2V@S%FS&j5qD6$sCnA=(51;rE}D&? zb%-k0NuBTtXPSv3MKVG3XBk~&jqP9uKls7o7mu;pHE{Cj1`g|3o#oGhSD3@GI#6sJ zUII5So&HBXHNTI#j^EYR$W|B2kYW`pXmCA;XC^z?hx+ifT$n8{oA{kw9`dv**K=r2 z_(9j>jz8P4B!cf5-cN!8->)?i6%khzIXsv`JPH(%5(OWJ(u_tUY4MI{eB&QqgGI)4 zrb}LM+FH~bl+xn6-E@k5E!&MwHNEuv4wLCqUnvSSb*<+OS!aN+_gldtD%+C|(vf>v z@o>F$N?USPWc^2R01flM(QRC|MF?S0dGw<92;~SC{-a&Mh?s4bUNZA z{;5Vu%s@N*!g}&%N2_vx*T5ALeo4!yxFP4sXRJ z#K#U6C|#0cI>;bT-2f**gb*ud13FNB)fY4=p$V4I2sQvyDBuEeQ%z5(J31C#o-lqo zxC7(n2@C{;TY8mvbvs0&k>#MMfH0LwPPG1DU9aJD?~qHF;Yza~Wj*N8D$1 zE`k=E$BOy2bO(tL0!DhJ^jH+|0E}Z;LK8M63qxxZ zs7l~bj35?lXd!%FVtfd7Qn02=lTa$%;Eme&U$~Q6LA63B_cPOSkK|W=<|ql`Xcn8e zjwO-;AHV_Y^+qlbJMkD~9FSgEf?iH~=FJ0Js+282Us3Q3kCRd*?2){6L-7F97Y z3Mn0^*N~|tHx0RQskeF-d0!fnky%GE*a3`IVMtJddrt;pNz^R;^nt$i9VIr6sFX_Q z6FpKl4RCU0gcOZrR z^Z^$@0Tf^X7H|QzDV0?TJL5)G&opF1NP~mIWUn!A|Hfs_)LIC+DaqjtYS|+U876KC zkyKSPFSH%{(rUbDfE(!uUS~GZ*ENAMVKua`RXwVml~MFC?;>Mj2_61x-rH0UVG489)IJKmiwE0UwY88Z$3% z^Z^-g0TK`a4#1%f5CIV&n-?%y0ZK1HCS;Yh8#3Y>gd&QmAdr&-98c(q7C4pJg6p~UUw^!6PVwCN&XTjZFvQgDfcoDQKeVN z3$p@^f-?=y(Q)t)R0divrD>r;wqEAd0_cUHwHccd;Gqrxr*bL*6c7R=;+h;#n-(yq za{8bN3Y&F$0U0or2%4Z&S$VXDbVH$JmgjC*_Fjb*L9Cd6C8AnPx0cQcmtR_1bW?z0 z@u*$q3}1LP9LbC}8epThaLjQ%9wqS3Y#6up$b5)a>}6+aGTwDp%(C=8!D%#Ih6{Up@O=g z<*J~{3P%A-A_;aB71L>>=%NA1dfVT^Hb#OzOn`CQN^k!w3W@`m;Zs$svpeo)-1VDHy$xt4`YD*Oe9WoT9n3;34 zqnR#10!kU1rwORcdZ>UJn>9i`k{dZ2G)FOv3}eOjlpIh!?W0feevlO|J_ ziX2j5mhdWYz5$O0hD!I!sR713{kpIHntxbEo!AsT25Sw_(5Y;DjMX6>T)V3H7GQWQ zxFmB3A-ghqXp5B4w?ZkDXpwI`xt+novz&% zD>sfkJd~9nScHHsl-ZJL_aAq-ErlCYN(o8+=*B>h)U0TlZaWuEPTW9Bsku1Ip|{yy zwZXpudaOYLv=x`I z=9c|OPWly@(V3+ye3#3M9sJg7`1&^7iE5_$JbG)AjFYA2$aq89KWw;m=vl*`!+`}+ z!-N(XP2xfF%eh&6tr0%umo6uEUf;K(94mPGW6zb8Yx%5@qhhLOc7=i%W*itGljDJm zc~ZHRTM`!0#-$!2rWk0~H@)!G=;g7=5TH5O8m-x~{)@9YYtoR|6fQ8gU(!;%Ilw`- zpxj#14P35hYN0Z{%nPsp9{x%Jusf9|daj2`#!Gh_h=tnVnOIM8)l@aCs)Bo+5>y5U@99C&_TWO{}8@fH6vll=Dw^4yqL0)GZ(;9l&50et$Qt2?MX z>$%~ophJDy>Ya+wD zYoHOnJD>yM3v1S>k`4Vy=sBJp*LJ{S-53^8*{wt3;X#zt7Khu#TNzVOtf%Ge033jB zjZH>pR1DITnK3Y%*T zp{-l9bvm=!odUG@K;KLR3qB2zw37(dg}C^r zuV&#_6Puq$4^*Wx8p);-Iv0GlHzV8i8n;HGTsA<12TjkI?n-cH=tThWV zLVuj1e1lLT;ekBk^x*WO0#1F$@5D%DK2NY#M_V@X+L5*!X~V=H@_?o1q+y(%i>BL_Q0jFg4|N#tgdC z3-AE)?X2}u>f4&%3T(8@I=~#@07LD$fC}prFwVICU4?TnjZGCday@Lj4hfzgK{%O@ zna2q66#|KQtGB@wzP!|6$aFrQ-vLi2j1_Wip20FoWws>G&DIjFE48{#qde}mrnl2r z>p%X)7C}W$<{(323`Z_oryl@`f-qS24iP_QJMYe|<*fi#9|1|LUamQn_bmZ+`liVW zx(cwA9DuDC%Cj*`1bnIiSZ_ zD368^k%-WsL>x$@xHQQUN1T~dq$ptss)bPsN+BRXmcXe64>A-o6pMqb3>V%K$@M{j z0R?n9NVtHgSg~V7L}?(=LfeaJL8m=hylKVQHWR0(=HsYeMlTp>aMSYe$qR(%85hX7i8 zsYS#rw#X7!A_qd1%qV+-Vu1yJ!8gh%95}M!Nz$$GjA7GEW6?MMg#j6kjun+iB4#GK zLmLX|khUU=sG-KsK&ufnBW(EGh@)iGD3_0jKGxXHaXt~}TcuYGN90N?5trmlQF_B1 za#iBAQKb=P8SI;CqEv0R*oDcFQW|K$6d|w_LYNBJG&2JxYN|)gD~ixLpDA?`kf(hM zl%hZc7Wg@cfD7Z3_e1PF6b*oB*jq}ZjCZUU?{hi#hAIwMk4 zB4)I8*rKbVwW=bE1tlcotQ4`A8$8OT)T@ZT{<`F~Z~kVJPt(S><&eRRqnxu(E_YQX zMPBu@mOpX3QG`@qw;gv!eGu-rhOlKWV(z+04GLr)9G3oAcJ2#t1hN#80w)>drE!oIHcdg2Wm;*Rt6U2 z9YOgK)Sq{L99RG`F2^*i$iZNVl;OJ5t~X8NXpYkuhmHm!6itp)t6N73NQaM z*~wbvB3G$MA1%v=4P-?l9+l2EAkv6NC}+qKdTc1hVp2<7sHB+)#aOku%<3BVK~M(o zOV`n1EW3oYtHq-PA`n*yPA~{E7NP`6Ocyq?H?~)3%>fe#%l8ssCj{&(Z~anB7r)2} zGL~_S>=W29$mNs^_)TFA1I8R5g_pMp{w0`)v4%Hvq>%~gh(qcKMWiUu zU6?R~Qfrc+s9lS!nqn%plYXN9V9A64PMayd2sE`AvM@v^is}h6wgRm294cG>6d(K) zOat#B0x2Bu0T0#0StQv8s2DgKc)-(it>DCuHWNZoS)`HSI4g8n1v+v7)U6|1C1p^@ zBL}kMIGE8DhQ4&x@~+T!!rEB0pk-L)kSZgGJqJg-LnR3T*0CY|7JJ5YlpCPn1|(SN zN-s;`SFH4x=*%8A*h5o9ge$aEWF|9B;Q%<^FPhR*?P^{7+OJZtwXkpt1tMS(agss- z7BD9RtpTC@=1O-T?8are(N#{otrKt+t0g1o0_ct=x|usoX(mZz8Q8$b-PN(L8aO#i zW(Y;jf-mZhOS_n;7ij+5dd$%r7+*~~ORo$pQqUZ`SQkh3%tpCE32qRB0IRe-PP}Z_ zP7nfMqD#S+*j}7+seuWEcC-_wm-xnKTDi@wYnSDoRK!TVc;Z9DEUg=Z3`P#HIA9s< zRL(Zi>09^CW~+`lmmsxrV}UBU9w?G7kkNWpwEma~Ga!Nuh#U}?X|M)j)$XREY)=-d za+NXu5;wSUN{bXNIWS~lND;_o-pw<2^?k9j?>pb?Sadr8z5$y}(B|@N$Q5qhWt}6N zjj(OQvkvZaXc@rn1S9~b1UQ@c%6HoKAsVP1HY)Xq+SOhbbw6L(tprG{03w9N0U_w} zW7X*mkVyttE&iA>sVAt8ig!@SqXHyA%3D@fQ&-lrmbE^U%*otra;yybk*R4m&*cnz zczRSJ;##gxtm-Pfl8cOPx*T6+zZkg7#^JTwtZfz;JqBzx$|k&X**2@xD0t5E3&vD7 z&_VzL>|W-(9Zuq>=xj!5wG3xUZG6XC~j>T~QvB=8(>?9qSQpTs6$C zD<}djN;4qsoaa4n;m^TbW*_!9+uDwOfKk8$bg`$~ZEmwSqOOUllkEe1zG>Fm{qBN& z@8I8*{#!2*EtTfKjR^bh8uZal2(=?3e!B&R!NW2aq#QOetJj@7D-&_T;JB-NuUxM0 zfg(i;zQ>uXppa!krSWTsIUELEmMniHk)N<>@5eM{J!()K-rAgEBBrhgy zGUG`>f_fBqG}DnQ7+7uC@n5mmfgY%BJa7X%z=5<^0x>{tyr&68QByWG0a)j5R^)CB zpaC3kVuJ>DbU{Xm=2EC5eb`hkxzIHb5jP0aH{6GCTc&9SctFYlGUJDL=kjTQv^^r! zcc3v5vjJNcAzh`>YR`ol_Gev2R$c#hP`pALG-pV0MGY4RWrsC$=CFEC!*bwIB~XI? zfum&Mqhl ziJ$?4mN4KHgh*vXbQ>VNCYCt11r#oHZTM8NKC#*0w*v;$mD_y0E3n|gNZ;U zgLXfsh*V=F6#_DS25E|fkUx`lHVD956J&Q5NLLLX>dKu-J)&_Jn zqa7ZY1F|WbB1n~pXaiFTa#}fSIH^))D%$h9w%lB_Q3&rX;Md%X(Td{?$iQx=7bRxR_f4;q=JPV>3)J& zK^ruGYK4E~aBChT8;U8EA%uks;gXn1K}P9+@U-!q8q9LwZ{V{n2#Nx0T|$CQbc_J*dWZw2_LW*V&|6D zNu6zpqp*;jZUGf=F(-8bKH%w!7TIN<@mdd;o*kx#ZRnC6^i_^Ia%crBqSG2kmSm%{ zj10;dBUO1lLQtkdfHTR5o>D`}k%o?!noE|N-)C)_)jW|E{(BfYn}^t;hzJBdpr=)d zn<1)|^hl2+YN8{EqAPU*eAc2aI9ghloC**wa3)4U*a|ImS<`1k%eQaF6g>ly2ya0Q z0q33HSppLoS-8?=Aj1yMCPt*%q^Dwe?fG81SP}W8YKvJTE^?)?0bR?Lf2LVa01Bod zWT4I{ro9tpHi@PXNI{e{dM$~Q1zKh>#*`d*jvRWeJ;0$IdaXQQl^zPBS&5az_yQYR zsB9JkF>nHi`e5t!J?utB?DnXGv0AP}pOhpz9XC+ARx$?ul@GyMI;+DwGee~xBqCp8O4G=! zc}1Y?d2{=9X0Pcbuh|1D5S3R6qUD;iI=izxtFz)dYgwtYCBOsdY62!80(|D8qIG-> zfK&aboW9_eonT`IiFW*2VEejnrU~avy6~s>*=1K@L)yPndLa?QpVjD6$0FtT7fFA=_O0wPL@eJXv|0 z#Ap$_*|U~=xjSnEJfOLSc&;&Ev`3q?$@H#Gi&Hq2oDR?d`kH9=`T>guZbIl3_4;A2 z@CwjJ1cD$8in1spCLg0ZK{#iyiKGr%p%MNLQE@m1rKTpU4ePe|7k~NC8f2(4ms6Sh zha0+6rZ#y{dl;ZE$)6&7I`Du|na4WMSiW$zyqp;#*H*B~0fILxnUX||*^0U4N(7ht zj`q99fu4193?}Bg z@fIn8WU4t*8CtPD!+W-o@i88&exX7S5xZ*A;Dv8HrPGTtE>d#7x{LYur7zix*62wM zYk6PFWN4@IZ&>$xuM~}167=}@2H3!$i@6y zw4iGO04%^)#{gJIzy%Be8lb=njQ+04)flVQS`(b9M`cvGzzwkgRifF8D&^psFsY}wMa0$K`jG1{NxX3)wcYp#CFRWm&q%@#*8Ygsv-ol zRR|7$^kg(CDkq0>Nqm~Q2D2two0E$XKcJOVJe#_l1L3gCzTCe=tB8dd#{T=iAkYCD z(4tqj%xXM*Y^=a1@WwGP#|759bzF-70uf{aKYg<|rSNWzV0Sl0i{q?H$cuhXhP)NW z$Yr<=^gvdzaT={QpV1p+D`S$NY$F$!ae!+{i8(fY2SVp?y@R_WHmt+yzi%J0?6 zBLm5?Y^odj0#I4YkU7P<{`|{C@XNl;zp{yR=t{I=JjMVVz{uF?F) z1g5E!icP%~J>{|=9FUzsx;JzpKE%tHnnre)hsZgz6`e6Mw86rVTqE;L&#mT9Eut!2 z*jzqIaw4gwAu^KF!i#bBAp}jzo5_pfpefsU!>nx3A#+!1n;9g5n~0c>VVDm;aLX92 zv-PXd8{N@w+`s6`*L=OeV;l|ujLeGaf`*;aSqA|tZ2~U+(hF>z_?l?{cGF7bQ?W1% z?{QnmbW;%E06%>>H`Z{RK#L*7cTy_8=xihGynihG8P7Gz@*G_-{M13_IryBUJiMhA z$DfI*eo)$(ly{i^Yh5`Pu~j+jWWv4GYMYE=MX=?njvH#x_(0cnovrNX137@*v)RkK z%x%&P*q{5?BW(iVK;A?E0vnLbezxAld38>U#v1?vM%&nqovw5yoz?71grHP}QYZ|A z3=QG{imCt;paCBFgrk;`?PtQpRmzxi)S|+|v&z)uFrSMd+xRJeo+ATZh?%>Hy~yFE zdRSN-E3*0g;gnfe);Q3s#48Oe6FLTsxhA&cT8P*>Yd>HSb6vUhyP@mo1M0Zlv&jNE zU;;({xk%1!NR1$nfvKyp};#2^> z+3WqNuRH#WlFu90iW;r&Ij$(6+X|MGI+EtjJDn3bZ)(ncf$Uh zNW%Ri45)uM!(5d&dCsbs|M$a_7s~?J#Dq$y+S&s+F4xpu*E?(7Jm3S`#>;t~0~u=M zOkT`QPSPb!4(T1`7*GLHZtKN4d<}r*piAFcuC5$uL3S-0yTFal%j>s+p`NCjfX4i(2PIJU6tobBv>2A;`_;PUjr zB^-H%ykkb)+abg4_HYr6#Bs4f&-ppGQf-pNt?iisTauA~@1DKORpK2>)fo4Z{^?0d ztaAA-Dl=XQo4cEH9UGxe#agVPw5iKPuIdlZ0utZk6kqWepYgR`>l;u38t?J!)&LdY z0Ym@;M8Nip?d$5w(iz5lH0`6qASl2PM;BmIFmF>H?1T?zV{b0FrY*6XY!Bb=o(!Sq zwo>6H8Sai*8r7vao!i5S&EQ}E%V#E&-Q%wB+fbm0y3>Pd= zkRZW<1_u*LDu7T@11UYge)`8gYc+fn2_4HZZ$FD&>4+9AnB$tq3!-XLrhQJtt zL<$n8331@)Q9}d=Bq7*FS#pAg51eeiqzOF5OtEQ0>DgB&I1ch@zg9hzv8ITa<&mBkY$IbrJydsr@KU%7qGdlR3pIHPP&!MvH1 zF}Mf^aKI_JfCDo^Fe*gC3MXhyHsw5cjvyC`gK3Q8bgChzoqGD|JkRK3>ZvLU(wU0} zfhNMM4dFOzX&;;*QAQjHasdS+IY6YZCHS7gaVZ#EsPnSDEw)eRV({_;+E5Wj`ek0^s4tBRk_foZ=nGLjVHh)sAj_s zHYogz!hR?0D5Td+Xb!~X2x3Bp6Q4ZT#TsIm{_(~fgDOag@>C|WiXOnYDnTcglXB=M zh(0T8J6^;=>Ks@w5|Tt>kh5($FRLz;P7ZCQCxUQ2h*(NH-K9>>DHq+;-Wq=$Bvlh} zwKG}QAj8&xy4j{#y*(odvt<`r%vIf^d$yoz@3iN8%Vjk*YZ#^e0SPV`{CE8F1HR0o zJPh8T;U)}X&c=>U{J6(SPI4du(PR#IqRWJ=R7B`h$xIfb8KrD=6nuz|PPabQu}%T5 zgB|RUq#IiSEETt-+e`$Z6Ls}Y6YMhIQ0~v-u9`7X)eBFb^_u3YxHrWaO6s!3_>Mnpq4q$`?Ex^GK<_E^VMZ*RSqZB#_ z(LaoN=rD>?oB#*dsRAN!GMGb=AS$pq2X@YL5i~)p7V^g(336tsBZ3Bq@VW_jaFIk3 z7O_kyw4qHYd%8m*+a&QEr$yp8O`D-nz_b*k&~SM~$WC^gQ3Eq2?OaW)U7k?kyFp0{ zY*!(MUgl-Xv!shX`f}5f1aZYIUVwceKtT=m_QfzNlVLZ&h8YjHj{TVc1c`$qYH=m-Q>IJDIE@>`Ab;j~hfNW(4sCWQa%$x101H?-1ZM6s1;m&)JTnk) zbOSUiGv^nZ=-{PAw?@{*MP~AuGaI!D|z|R0Ns@>fYrpzN;-&?Dt4G3NP!Mq3Rxli0H!y% z0TE`}pisEOF*(&HhWw|~4{>Y*@et}|GIJ^riPHxK5$EU1F}ew=>_&(r5=n42&kkS! z0v;@h2#BRs;jjc?GX4oJo_KPcULfslb=uNdtMx+Xg#u}7dPX8tsgzJOW0UT3Vk|cK z3U~o*7-`)l3AaKg>}3Kd_i3B&oN*iyIKu+ZFzI5msKpZOAhIs~B4q`k4aDt_vyl0e zfkO*gI2JHfbfk=BGy~xj5p`n**=9Id@G02FR&;+9fgv#fPpZaKkx6RoRs$AXt>Vj) zQ)Ek**jqNVl5`Nu#afuago7Orw!3h`3MYVLikA3^oL8jW6ks#D@KoErJzz8Pbf;~XT(_$twY<{q1z_~Frmk1z`p(Y?h zC%T3R!kz9E{_$=<$Xg9CmLkMD@puV=E#Z*Vi0;uSbknNCn2<8N)}c-_4n_nWtA|ZC=b(TFTnCLto%1y6CtLRZKjO83}yt1 z=uZZI&21xy224QbI1KKmU1}*E|$4 zhq>u-1HzJEn-E2Z6`qwY+iwfP=~T^)11L~+EJ}UqyWc$)Ibzb2cD+6RTp_h&JYBMX z;t~oMMf3A5wQO+<-lS&YE6`Ugy6-EkB073 zBm#bvbSVRSBG3UF_-z}A0k!o(xuF5LCu_c^SmNglcas#@!gtPqG|N?EhrlSJ^hwka zQD^0SXc06gls3Q9CEd4CNc2M}7;7j+Qs*aY9FQ9EM+EJscz!c~Kp=k;r*Zd}e_#eG z_rQO1^nb~=4@59?19*T2NQMWPfC`9)2N-i{cyqULa}qdJ-IjE)2UQ$chaU(#!J>L3 z2z;`3f<(x0fai7bHgDNACdi{u+4V`=;w@y-Xu~5u>!N6pXeZGDght~QNdA@-!3T&3 z;)hy90yZFpg5ZQtCJKZ!7XeLKr2!^0nh6I?4X($K=C$N$47i2{cmTTyk-pe+V)&2^*nq!Mj2oZ<8_1CzS%-I+hqdK^w>2TTj3^OA=QX_)5+lP-83+Oj)q zwLHy(3_9ryY;rCD^+M()l$6vqMM(%%hjrPwnB}*WpO{W35Ce@jaipktR!M)USbsgh zivI|50%?#)GIY05kR^d4ltCH&5Ocpcb8P9B3~&H$sfKm=i^152by;)Gc^kSRl859B zyyYv|mTeP20e)zLDRr3V7kDQHc;FeHirJ3uNJ9rACM~f30xz%v>7f^_L@kg8Qbv{v z(WR8=7MfP)oisCiC#h~Ra0Bz#gcH}Au8EZzr8LQWe1xSVo zc$_r1p>279%DH;LSbDmthQIiWw*gOzgh;M)oi2xS4)A+{*`M>ZpDW3U<%y%@d86~S zjmwpuadks$g&yqro-^qTmpPv|czhvc7Vp)9ov5Gt*`0#vWbF8fFB1YK(0Ecfe+Qb6 zs<@B#x0L{C4=sw3IJbra*oHlqIXkC-x|x6%s(=Yt01hd7Y8sr+kfAU4D-{`>qepWN zm~D92a$xC(r3aWCVUj0le&m;!Qpb{2_iC_~dyM|ViH%7v-%^>SR5dHWp63yR@phm5 zhCP~iAV;Y~;AxGzC#8YuiGis_IuZj@_?i@FaR>^VvB`=AW}AoldCR$r(TOBIw{!MH zj9|!?9_ovwhi#*0ktT|B64|V_;i179sJE!51sOYoI;}8Aa|$q}DYd95=?uX~o>Cf` z;rWsdhmGo59hoY9l;#~RpaP%jsYco?TVp5!cObmRsorJ-Q1f{3n&nWL}9dx0m2!ABh}05#nb zHOE6W`C6}@dap1zlkA0qj;55=*sd-Kn&?`vCkU&kkprq(t9xT*2r99<>W>!NNWU_A z$4R#lDX2o{hN$OqrH6nucL0LQr*JBqE6cKT`m1(}t-xrVd3uJ(iU8y$u8aD!MksuL z_q8=@b(4ytU#mkjgcMF|P>g5@TXPHax&rlzwKY~)*wSQO`<;F_uvm9>emJfL%RVsE z1GGAY5X-g+s&UO!v6Q!47%6kdSpdhYmTO4}JmV{YTY4=jj3FDdZ0+$)8uZpHnAmwR^BhsBS8dyHlTa;v5|XLBk0dDyvdgzJmOd%O*qp#_<3fXbE%AOYdpz`>`!jk>OwTW(-0 zzm#fj>suY43pLr&2so}4n!vL=wu8q$ zM1YzDI)7>#Sq^)Z7yP>#yuo|BvM_wSe~TMAbDez4!3p4^8cTW>$$-wFfY?g}${U== z8K(s>0E#>S44?pH__xCTd94|$01;pTz&E+mSh+@Qxs*z<*?6Ozte!LmCekwUfaF#$URRKEQD|AP%%C zki#p-c}mCKi?<*vfFtU?zv{LCJM9Mtd@f?0E=7z0+0ZY{K9goy$48c zeYg?mD{KDQb&4s=E=kW-I%7WCw58mbG>Ag=$_oAasjOVjMNFP6`I49m#s>VE*0`8L zJI1Ct2rq*WJ)n=brcA}Gk5Y)tV)~C=>CDf}y~aDU9gD)v`llnBrg{3kb&7z@3CM8@ zmv^eHfjZ7@DFFWFyvUG@$b}5E9{RZ58P9%*SnU{mT8G64T(s3F%E@;fnEKB)`3d#f z#I0OosCtA!9Ec5_t`N=8N2o&^@xTuZafh`dAHcBrsBvm6KOFs~u;~LnP+7~|pnt}} z*c-_O0EV!L$0+;Fp(m}%`nP0Ki&*+wXnA(k{+=w+e(5zt9 zPW-<}qt&_{h@=Uy=C`ztx|G6qo?6F=0LlS^^fD)aw(yrQ_XdT={hG-AyUHEXBkikV z_;OG;fq2{8-@J>FJP02g3Ur&<8G7D7J+m$g0oh&Hd|k*ypvZOX<7#PuJTBuzfWt)1 zzy@onsaoGg%f(82xu#7BHP+9&qr|A(jbih^0Bn>-3D)%8zVkbL5nW%mU9J!=d`iv3 zw5xT%y(7zjib1g9Lg3aO-o~+++z%3LdrWgj5`w9hw`VDaatg^Y{?k3ap@$yHGVbCf z{tDFMjoHWh=!LD=$;$wiJkhTE&`-|Q3EkAs5Q7HoqtoTYr2K*{aK)p&=?qQFn#;MO zsp;|!BoIE0ZSLkF0O!IyMhRo*9UbD86}J8KhFw_(M)C+g6Mcck$`{@U=<^65t)R8AlJSJNn#YAwF z`OWI)F6B%;z+EffWKHW0ymc5MEAf|)yMBtj4x7Io1Fbl`1Gu5ZxZy@{=h+gsf) z*MK+9?a}_&=WX$lUYv!Dyg<#p**@utT;vZ~$=ivruKJFoIm?e~b?L4b1y0KT{tPBD zq4Pr|??#I6U;Xn6?%*Va)F>$H65jHmojPf40yluR^w$G$j_~^U>%prIahtOr3M?g# z8xJUe+%2svi}8mXvwRKm9bd>FZ{EsF**xCkK@ReWT*q`v1PGu2oIS>_yT$r$&$8>) z34QZczV3%;zwT~HF>&*t>dIP-f;EbiU3}(CKJMjO>*|J@wK{({fYHKi=V6-M!P^db z7`}Z@!nkP7#0&O{eTEV0$0PsPbN`Ua>*I@j00ck;mQ4T$P|k~7(lFlkBX7KwY=XJR zsG6QwL>u#54d&Ts9#$^+N%7BGCD3B^g6uxp5WUs+{r8JG?nQr|^#%Tqk^8gi_5s3e zl^VyTy$+_a*=r$S0#+mfAb9KVv8;rwyRfLX zz_+m}DTFSuEkw$+%E&Fnvc}8Q%FMOCwc5eG!@IY@+v2a}M6b2yrllDd?CtFw93Lky zLH71QKt1_D_x}I)`04A>ogNqn5GO$=N!2ydHCyKn- z(IX>GunLsysHoy1S&a~BVsv1DO<0l$Sh6{YCZYi;WeU2fK>k81Q{9rLl2xwhHgcqf z@ygYUTee`hz~L%EWEw1H*1jeq;sRMTA}Yp)y@oAZE^)HD{enw3RyuRDO5x4mjxS$z zrQ&@+A;g~#f&Bpf>nD&PL4ycMEDRxn0mO+LL2BI0c{AqBE?*L=By^=B0wx=c{+K{! zB9xA93L-F+XQEApIuU_H=qAuntX3&aT9=ShyXWSb(|c~X)U3RGkzo53?5q~p%PuPh zjSvcBYpHF!T3i?T@^F(c&zsz@`@ic1+wcd($G&`u12S&>_+Ua3B?Kq}1QSRE!A324 zhS`A(Ok^N~osq%r!n@M^;&EO+%zHDzusw zbxLN{DU|7<=hQh;N_nF>?f}*fmLbd+L_S;|hToU;A=V$6W}^854l;BA0R{|`mSBU} z9w_I7psnO>Nfd&zTA!+c(vxVtY4c%FgI;p}ZY7U8I)DNWP-^eJ_*%*%t>x7iom`ua zdQ7R=q573E#jILQkx9}Lj=#$BON%Mx`6`Q)>%rpdI#_B+tg&8#$={eauu$fiE7X94 z3)0p}+HD_Y1mQ(-f<`V)9_1{WOpTB`i));~duS~-$yOmOkD>?^CObWHfTR*cEp^oR z-rGxy_6{d;zq5eDq>w+BdW^xubVa1AN7g0G*Awq5W5pZKcwE5jskd=pArz)hvHXav zY(Zn100IXgpfH0DJJg^7fg33bGiwcwlo>`7D)RWvH0{Z5&mex{iQ_}l@}be`0`+L1 zC=Rs~iVQdabp)`-E_KyeW1Tf|SUvu?bzI|R0A4kwf@O^}28&8a!qF(xs@h)b&eW6v zA2&|iQ2|gCucAGI2nnE<>muNQ*vW2cRI6RSaAyGu5W$1B z03ofMHw#t~0z1|L-q?Ob1Qc|oD`*r03-DQ#^#;jBpf=Pi8VkLIeyb zO~DQhh`b*44Adk3ECRsZ0BGW-lbvj31Ig12hI2T=`353k%dcBtECo)j&Z*L=&UU6iwca@! zE$rpmt^s4Li1aF^bht_D#o|4q3@dQsvD*#<_X8jf@e9t%0);MAt!*9C6wg!w6gaX5 zHIP9FT&Do)mNcY&)$4Y5d{@gY3Xhl&Z0Cj&n`RzLT-99QBV?L12DQ`ROV3VE8>Bmd6J+ z%mFN6X~Q87@j}dJgB6(U21_&+iW^F@lAUapt#YIcWbgq9xGpt3CZoIDwOvU3#BrO} zWf%VAcRC=~rf5KOR5O*f6W64!u(fEftl2AN1lW4Yl;x)EFx%5DciGFJrNu0XAOp4# ztjwhK4uW6k6@(eXgCfMyRCrfI2~XR3pTu(pKCta=2RhL52=|`#{Ou5!@7pMNL2?l- z5QjdrWbj^bi(Q4n571aQd%|}DA6Pn02lEjN3^*j@g-3t;n91UuqbCG$x)0&IXprCy zA>4~1D7V)`1jzWUZ7ttFK7hWk%d9v%$mL%*DcGz6@uc`$Zn!{x*n%F7%><*xW@Y!3$!*0TZyBAMS<$3#MM;N4FRSk%mU4+x{nj zS$lofjuqX%o5p0vI(C;zs4QP zh5gi}s*|bgTq-q;q2?C4kdm-S7%Uj9i&ZQK=iWev+lIQ0JA0llAQrdLL%iWX6D|cM zIDwf60`-Q%0HRcXGzxg2X4+Fy1PbtD*T2sD-m`ZW$5iP`SDnCu^CazNAAT}nYOX^u zFxEznel_Ejca3wLvL6R|mU~^PZv0eV)E;~b1uUe3omRBQi~0DCYPM%nJ})D5FvnQ_wjBe zMs-t{Tv#|u3+R9;zyT9L0TLjA?A3L|-g{Wnel8Q07i2fpqjyP1e5Q*YJDkmgbFE@#? zkY+B#e(h&-at2h{aD+LRJJWVmvEV^bV?h<9g7f8Z51i62CH;Aj^B!yMzm zHdaA$_xMLl$wyDQnViXS67T^n#*l*sVhM=?uUIA^keW@m5DM{?A)pWm83G-k0UbmD zzetf4xrS=Fma;Z+hUJ#N`G(2oK!lKY#YqbbFp|$m1bL~KgE&Yph=!GNif#rDSQC>^ zB0|p7gE<*INaX@DU_1yGRX)g=3VSben7 zq1up~AUcvF+ME%c`u2yS#AkJx7PZdi(?w)u-0 zik1-Sh8KFKzL%kOxQ85?ceXYQbcqXZiU12hr?QZo%*mW4S)$tqohvGxSu+>=(v7qt zLOm)AO2t%RGma_5eu^0l$U_J}xucw7dEj7_O`;wTwogT9nHV&U(|7?Pz>t#RpGY?u zA5f+7AOd6wS6Fx^uW3FD!Kxa-VPEHl{%Wd6Xqu*ET8AV!hjZAb#;JF8S*&p?k|GHU z-BcX?n3wYDf*1s-h*&9D5n(WSZRddvx$u|+gLtq)FhM8{&K9n2cBpL;983XQLpcmW z$xqOBFMcXDAx8+^WC0@ah;ONtuSYa z0@kRrAWu)Fqg1t{Kgq3-StFf973pcIDC<-4N{G8f0#MqeT*_yDRI9Km8T=`*AvT)? zYgoKzcDtFY2~=d-P_bT%cd$VImttG2bEyqt`=*32wssi{ar&_#o2Shhh$O3$(HTyi z#j{Arvf9{Mvv6AJrxs?`9W_gHY*vqN#-ldp4WDICnTHgw1q_i$a_30|T2=sfK!?AD zC192RdXGWsLyR|mGpCM}%A!L!ndY=MUUfq|w=YuB zqtSK&pjix}si0CjZk?L|8t}BN8G51{dbO$nyTPjp`ysEJwqy$>v8%Smy0LS5w)~sF zZ7Y5to4fs(r`@z`e)_xB`7n?E=sYQF9*Y=l+&HP^$ek&)ya=-mzLAelx!1! z$gx8=#|@I&HK&)fqC02?MX(??0R^A{RfwRk8M@>~x~l3y6=-&5i?*{6qRNSaBI>cR zP^V$*zvXeP8i}U^9KcJQyC^AgX!xhyXS|9?#k$bI*9y72Q)ZMHBo=%yL=Yf1%51Im zu8`Q6=K6`$rofuCd4Z{}7C<=vigW{;s)AvLia?bLDV9iQsvxGS7JvWH{ID4G0r#hMj<-Vz_UKuyL8`r}@ zyvRUI#6s+`LR_|k7oyfIqJ*HNLp+iLOvydm&9NYeMVq4cm9j3{b3{6MB|OSbvb@N4 zLg_aRVhk5}8xBMWl)1AMBg6~wA*HfPdV=Al@DnKkosa?Ys*`b*E9?LTfT706wmdA& zKMcg!Tnp3eme+ijj6B3js?9;{(dbdY^qR@gDXp4i&ir-G>MRSBOH{!FxXbXjVH_Y( zGPLj7%GxSar!bE*G?Y2F3KU~{cN`B`ic7Y}pz&}5EVf(>7{0N|zK(FK@nXnBtkE0& z$gq&n%}mh}o&KBwoYlcrz@SRECC$m>RGErvRXF{!q#U^92+u!qxdGB*&MOPx%+ku? zl8u=cBg~%lRLl5eL#KeU6og9-Km;0a0R&s6^YEHT3k~5*#~k1QXNjAqGrL($lFoe9 z;;_5g(5y+Cq;&z(*bI%KO&1+~(M}@L;VjnPM7iEXh~uouw6j?#t%z4_+h0Ygpd~yn zom9rd6?09~=m>=3z|P<3qdGk+G6}*{Aw2<8uCY+Cdd8(tyRWDF2<-)oC0NADISY6F z*_HgZBAd;YY~IYN+IDTx9}1kys;uD*+Y&$sv%QigUEAg?k3P-7>WrT3j2_D?FkoR8 zuprmO{(X+yaLC0Qq&B#Ob%8@$6%2|k7_!=>AD{sTE2brwtl-_89xk#T{^97cyB!VI z6^$P1y-4qk$>Ck!DT>Bc^HV5&NTK+MD7I3iCr+2ruoFN*Gx@(dl3$op;<+_`@MeZcw9U~^X;;>T-^IhL2{XyP` zvS`gDD651j4Hr0`aWe!^WIZ7B{4E`F4`PXdJ$gB^cU=&5r)>61Rz$lij+F4oNMcb0zMP?G6h z?&(}k$$VPv^eXMDF5hKs*6V5Nr@jrX&eCY;Bru1VqE#KHf_id2>$NUVw7xaWgaGp^ zXI-T>n#UaaPBFoL6jPXA_A<_tp6p|N=>#7;lFp}?Jksmk<+YIMc?q{}dFJ$u<8v;- zf2m)<7VfklHL&3EXgu!4f$r)q7G)6)mkU)v{^x(L>2M~(b%q?4DmPFFg{=_mNg1yd zPmR1guc1!y&0gk0Pv(;z=&W7o&~DzlyR6sV;Si7Is9hdqj_M*02UGh;Jo6?4&O+xr`;6d;M~L{PE>=a4ShfE`2u*_yYWy$@!~-E+i_H4A>fEw;Aub8 zvOv=v*{~X^3b=I_`)>Dk?|pq)@qhh-{jUG|dmsGJY38_( z{j`wyqkZFBUyq!az?_BF4jw|IEJ9Vk@UoCp)S#$iFVmMe+<;I*B!fs)Xh>+7sJO`3 z=;#>msJO5|^bkQrL3ClrxmoCGm@#@$YI=&AdSSuJO7Z$?@hXuiL18PAtGi3Is~e$P zNZT7MX?&b}-1wl(Y)lJ1OoXW@4Xc@n-MY=)y2)v=7#?oOdWkLjp2e1!mA{gvL?7agpTXpi zDJewwh%Nao{`f6Y{M$#wg~5Xccaf^*>;(~LhZ;(pNU@^Bhlgg&AhNL|M~xtD%&F%-gVz>KE^1c3`vq#USpP)r{rQrc8bW8&BzDoY&%v-r9^=a7-3mHu?mz^ zO|_agw$n^q`o`3Cm57?sma`^ET$2tiXd109Vs)2RV$BqqcBz(yrFAN9 zHI_roO@x$O9YJ|2UP6i|Sdxffif)reHpUoZ&`2a|kKXMvD!o(M6{w7=4omERYI;em znoeoQoMv)PTU=D0UH5__!gdC*RAc^Pm~O?p?8YpM4qDrlSY5Un8Nbz5r{A?6I|Qx_ zq(Wrnwh`rP(UgY_Y1n%0u_s<&@45S~yRgVB?v9R)dMe3#Ikc+3pYi#suCfjoCa(<7 z1slR?PQ_Ym4LbvIjuM;2uxJ@SO>o735_;Fi9ie$vUr3ki@v~MY>hO&h?Q%Dxk{$hm z%|~i_nBeBMd*07DFw@XNBTrT|UVg95mw-1#coOB(TGi{nD%lk4a5oj)-#7C8NByO}IDY0!Eb^9COQl+e9gO=Qeia&FdZF zywC75{>;2HKaM<=l7pm|e*Q82X|ix*i{F{&8-rYSoaEEGIod!utO(c_4ja{1Al}a` z#R}qyKUE$ZjZ|O)DBfKuLVDwy_nNV&TEwU>kW1d*mRGoQ4Gu}s>lES=XT4Bi?|Kq6 z6=t$EvS*16KjG7otAJ;*uRLToej?r04Ae30`~q`ev7c(n2=wNh$7M}cvyH&NS zH@S)1+I;7niF5}+ak<;@kkTEDKyX~!G1s}&gF$pz3NX&A1!K;mI1o;xj3JDY(!dv! z5+aaKbpcqPa&x}S_2fD*I~Ov2o)R zr{BuS#dU2FgXr9Wr>5t#c%pHY$f&0*UxvWyxG^b|%V%f)X*->8vPq82i5_QHQMWC$ zij*0U({yRDqDzR#fS0>Ob%L> z*?PEDV$RTQ8KvJ(`qCUa{%De_@*S!sg-Ms?^mvs)CZnhnN|zp{NON@z_3X;QPA&u) zv+1i}hZZWx_~@JCvzp!5^gXE})^$1w9lPvR970}{bkl5$3uCKX=eUj|syWl6`h z$>v%-d8k3NqeR}J3{@#n>yBPavsv<}RF|nOVs49D!qv%L(sLzn=Q$0^2)BddgiLXB zddvP%rEHdM46L@E%Q2Tob-MN{P@mWr+5MIGPqUJ6 zMeRqxr6ahVwQ=3B(Y6xo&E)BKFt-()7d0iu!@ZN9PD-)|4@|UIFeEds_r^N{#uP^e z+cauXl+UYF;iT6t>NN(*NgnWl{ragVKbaZFz2y=KYs)oSQp?TKjJ?kGorA6@q1CM@ z{JMn+5t|vbqe+;qIO}CFlZ`(wc1fIJygO^*P(?J}on82)(-&}Kwv|mI@cy#1QvSwu zu5=~z7~vT&y%u=M(s0}~V2M{51s0Nws&QGr*Dx1(gkopoR>r{lIfT-%si|3@CiO+g zVW!$NvP0-+iz%H&K1W&_bsFa)c`dmJ$=3KORZ5(Jqh@HMM=HGxjtVY3b6OBE%QI!* zioEP;3wW;v7Ou2$I&BvNi!Tx4j-;&BTz zh3zwr5OesHvjYs0lDpO=x6g0MP)0m{Z*oSYKE*>Ue0!EL*Etd4@ckAEz#2R<>7xyH z6`=mLs$Vn}f#v!NrM-$Fobw@Vv10Nz3S2#N#2NWTo z4)Rnle&b5mAPFTvd_;hJvmhT16oop_hQFb6D>gd+Ayn$acDJ?{JJuaicW|6UCFD0j zLZUK2W_4TCU!;^IOyW-R_gj5+JwJGH^H*Thb{i9hO-4wBoHQ`0(P8g1YOA3GI}mS! zv`h$yb67Q4o>LMvqI|JsWlW@6Z}b-UB`MF~5WpZ)zR`v|fQuaRL;o~y=w@M#0WNpA z8O0oQ4Q(2#QjOAJf4;AV)x0;uGlTHeTT{!o*gt$aW`#M5UE1L1kg95)?JC67ATI zZ%70(g^Lc!kPOL-I3YVys9888Z^fu1Q4|>}m|<$vN%_Kl;!#eNqApz|jev70iMVyl z23!;vFCMgdP$nO!w@R*{hILjvp+h$-KmSzcx5ebyN zsE{1uA%O8KFaa)2lW?mwaD8Kr{-&1bahF5pDKF(S@y8^;)k+dbGuSv_i^DiFDIaZj zHZGxaX8Dz|`EsD~d)ky-icc}w{b1jr!8qiJWjd~Z^T){&1Xq&6Y9k8hSL znE551xSfahG)|b1jUk)t*oHhIifDtcgVLRasiL82#))u4^O zb#XFtQ-VouWl01-(47kz6b8D9K$kRg{-aUaAq(Cim2mV`oRpZR7?8h-C5PZ9cjjCn zQ8}wbrYFl zgURMn$_9VR_82}WPhuFIA=*l*a1M!pdjiUV*|i$`VrDn7Mh0V^E<>ZavttlOkOY_; z{^$@SAfF?ak&y>pmg#qy6G>KMeTLPa(Iq;;QKj1HEIAZKOtF?EHkOS+0%UdwUKxtB z*^W)4T$zX=V|qbIl1iMyBml;BQ3j{4bd!uT7pp)FWw@n8(1m7rLwq-+u2w^}v~9A7 zhaMLhewucCTADk#ldXa#D{^7}>XxWK3Z%V5n(-KZaDsi7WnYI96X1ufL_}o7k)%gQ zQXl~?rdDgvVFS@2l)JEtzBq+XikIf$exqa_hPIN|cvEA631l`15^{XUCkX8j3)+a2 z`UXIy6`@T8u2*tx%^;(9_C1`5ndmy2S<@ic>OJwft%%8=WA&(Zu`3|gvS+6k{`hUR zP;41B649Zl1Q|XX5gp$;V?Y9fw{ar|Rbe&&96NBL4k?=^R%}A%8^ktf??kK8<2UT>SfOZBqtqA@+BRDHow==5AI>|a z01Q}0H$hdT-O6-*%S7H1xPB`&yq8c(QLiRJW0|^rHS@3KVluOFen49g-r;prBA0TN z9(O5M)X1F6<};2^f!`p3Ldb}fJ9%=mx&xAgdsC5 zF(G`}2E2^QJGX%x#>hQ^G$>X_ug<%4XBELwgn;Ez7~&x$^r{)~s(CHgK;3{NepPxF zhpV4LdW2YYf&TMS>ld(Sx(SRU4eASy(-38lW*>AWQV!-Vl($+BBaVEd7aCI~+NVFb zqD&IvNz7`FIs8OK=c1>=8LDFvY00xSa3!rWBqWl-B3Zrddc8M78H?fqDImht*$rqM z4Kth!x_}KX@Nk+tIDq!KE16-}sW_78Xb3h^t=q)3c(#~h8TiYg_eDHIToHEx!0y?p z8$rMx7mG1VXK>MYa6!5BA;o6lz=qpH6&xpPxiU-(!Na)0koQCjr@c3VBl%l;p@0gl zoKxT+3UAy+==6C*R;z~gjX?va>$_<3B2Tz? zT}dNU{sweKNMRN6Yssa8aso2N?fMfHOk--f6bCsZ=3Eu!TrQVHW9l4;GJp^du_!B0 z0v$?irppPVAcl<)fy3|ug?KZuDsg9;%Vac|y-dR}32lDWFMSco2z<6b>Mc=aaL&^DTzjJg%SxIILrbJ9!&2dT6uy$HQV?|P>MCD@6H@z}b5f`B3xX!!& z8s^N-buAYN(Snqr0=02^;OGjmtgAUC4~F0h{v5t=MQmFXM!3wE9OTr!dctiSgw@8& zUDwbLdM|kzw#Q2sV&T;ymdy82kAF!YYxI#%WL49` z?b5|r&hSZ6YS|MvTi5RDZ-EHU@$74dU3zRB)Ue>#m@orJZEP^rxqpEv?$noDhsXA} z*qqQLyG&r%$Q{JvU@CH+VVy~PN;F>`#X&mOOLw^+tG^KW$So(g>Su07OgEH zCA5Qc(Q1_?Ok(0O5LHq>Z@XKd8 zZpX(_9`t%iA}75DIfKk?;i&Y^8Lk3}dU_rH3g9pdFdV1yFthzi zWX7g`hzPK{RnUFYtD^9Y>@wrgR^uRdOI8iLmE6632&RCQIuMO2Lf*cyomocy0%&d9 zJgVgID_tPPw}wKpkCI6d1kUj#C_(bL(WO@VmlRuEGl5;@Xj|+K9voh3@NcIh-#ix%tk>cJ{=uoP&Uk-Gt=z!AYhsd-$=*;fyuU!#ZA4^fiP+Q+j z%Q2dj_z=IKIH4(6f;{rNCNtq0yCM{lH5kq<-`v~xrS!AvGa=YF64>7i=3IUd=4aR~ zVDG1g#^);xd9Dr6uL7D|gEpv_6m%Yl==jdF{7w?=lON;MNp=<^Dk+Fa;YUnLOp zK_K5vrLVv^cWDR?>8nis$uZxWFTa4*{RpGHOaH!zoEANt9X&TdGq2(z3FmqH?Q3w2R{FtAY}YOC0P= zghGUjvQk6j{QRt_EWN1gETia*GmS%pFKFM$ z$xlzMtO=h$e9LSZayKthBOCh&&hs?G21AGvsWnpQX;6tl1`E-<7zv@k8HMhNEJ?%$ zMw0kg`n&fqkwj0bWVpH{$Rx6mmu>Qi5C%8AS-Gt4U1%!BXa8R;^sQbS?WO zELm1!SAQY97HyigYtEoe%LWacGPP`}=`x3Iom_UH1jW0%V&Ep2{_>F|De@n{frJzK z%6o96Cx#~ztBMG5aY~gzAu218x8upkF7^JF{G4!5M3oRndgi-u;yxFhm^PwxX(vKY zqEJLkm6V?&d`Mr|q(my#QK{w9bv>r_>n>x*lZ~}T)+{t-Hm8mAwga5napbC=<25%t zu6B0u!fQMjy&y<{JsuR?xUk29^95p@DF5+H)e!}=kNg5=?;zF~fQ6X^nq#A_WLjT* z5t7<#`>f(hYmT_$NdNcjpJEL>80c>l8ukiNJAZpV6C-XI6~r3WIU;c zw<D6vEe49D>Ks$WZAD?@+Vo8#+IPMJA@?r(6D|s`>e6TvNRYz1kQ6x zoeZ(|7oK^#mQg5?7(yZ`{waoX;%?_Y6=>10Ows}oQ|01ryfMz3+@-&OGRddaP`B;B z+eE3|H{cX}WOz@fvubw>%OmB()C%ToK(QL~@(YK(7ayE@0sCcSDeYY>+aN!j8bc3@ z23nhsG21ph2KAiOQFS8H*=slFc_AZF@*LdHtYA2aZ|W*aw1`I~9ThRf^@0^KT1nj% z)hPZJDvF_Y1Ekk%fn&PC;*DKQ!lyGF_mgV>daJQ}wOmrgSsLCFO&UXzw`Cq1A98+y zBi?L#$44vd+eEoDO0|w#GLuIVYD>B067nI=u_q!PH@%N4;uzYMYXM8g{V(sJT3T6PQY$TLzfiV-ioa?dC(>MZ)2&MI*vDlRr< zUA>cKLBqH((Lt59#zBJ#DK24kR%uQXLV6PkBve|% zk^b>)rK7=3J=hZpJOxp5RhvZk=!&&|>CdM{yj3l3fr1cl#W+#ygCSBFq54Y)q5N@T_U!%!9wMkEq zgKE+#R$!=cl}}thqXuxyd9y`aBAr-^pXGe^p;y#TbjoPKV<;%|Prn45cKw=l`S>FFe{>@T1 zN`?$PIXx0=L{TSlMOm8S$x3a61Vknqs)T{xtRmS(`{l3NGSjd$E>FN35}B6Zh`fyE zHa%#1M{g^b+bg$_kqV~AE0CKTy(X82pG(0pN`%9upu#tl81emF)0Fq!4=O8d?7ET$ z&!j2sAIq`ld1pl9@gi3lArQ<59z8w5lwik={znRrv7C2-!hcJiC906oJ3tCV9$d`~ zY~2B6v=KrW43$;O1aqF-V$UU9-q{NHNUgsP&(#o;E6-YB7r61PXg~~33s6905rNaN zsE|Y=ezPu{<;fKKz^R`VC1~%`Xn*xQYNaTJ=;R#dE9u0C}r| zqiII&*YW0B2kf< zM-|Cftp-VpFF*l_WAXaj!^zdgM=b%pcPH)Vk-~4 z`oc`>MSuI7>l##CJ8s!<#hrbEGiat}*hu@4na3P!PcWAsGO}}Yb>Rx}?SXQGcZ>;Q z7kiyW2ttZK(2YCnF69Pj}lpk8ohBBWq5 z^R+H|av}AT6x0TJk@tD#C4co&e= z018Hk54n(i@Wy>QNIKnBbS1|Dkr;!7Vj@i8IoonqC+1u`^*u#MNj}3)n)iOkMpWH) zUN_Pe^t5Qo#yK&^XGURNn?*p+@lrC7I$MZ#}yw3l`X5r=Dd4sGa$ z7YK(&f;?d79>eE{y_Rswge!1YYbj`3YEuFv5Hhe3S$T0p_yBBz(E>2|0V&XbM`43E zcmWr{0Xj&DJh(adqkoSVgz+;Jg-|H!vVSYK{&e_eUWtZJmxmQ8U=H+SVv8k2dD32- z)lb#|2?nTdTOlv3hk)szh4wXp!gztHW^hbmb^&)wBU5(YktJrRIJMMEyL62ngG>G9 zD+{GAB)|bJkS8hd0pK_grBH~a;9VrweNV>}<@f;^Z~+ux0q=Nn=5#bo0WL$4Sc#%1 z>oROW)Q_UGBGe^lPH0p}C1aVTkestEkyl++Lw+7J9bN%1tA|-#_=UrOkzxoup}~d3zCvhI5FL{Z&kC10N*gfzPC6^B@D>1!pAi0dQ6dGzn~MwpUB{ zlkAp*O5~G8cY_ol0Tl3#=-7{RVi6zyg(9#xmZpgkUiBeAMLPKaS>Z;1^45g%mNlEW znhVJkOciNNNLus4g}m5>s*{loh*iW`mv{M*$H-8yGC_U$b7a0BZn;G<+ z)I<{>6<;k-bp1ziHrbddKmi{BKJM{4&rpu-=1EKelpJ6I65s%$$%uZ}Sa>%gI|YR? z_Y~kWB0!{{ze$kwCy)r5n~F6w3K?C~Aye=%HgQ2OSz)0_1!|pUoJRI<8JLpH>5&6x zHqBCoh|!nC_it^4fzBCaqJ|QvxlBfq5A2Ci83Pb`!Xn)FbS^-0GDvb3-~cJGNO@>3 z(IB2h_YFJXo{$No4sf5NIePvzmtx^_E`o7{`gjk(rlmzuG}Q2q33{8MbfCaMXF{}7 zs#%t*?~`Z3vKdOD|L|>%rKoMTAgR8jN$TXL1Yd) zCSG#57-v#K6;VQyAvlI$N2bmneE&UJ*RaApQx&u4#14=5MpXsC#kd!%y zj{Qd{Msp8Ds3QFWI+H|gSh}UNGCimRKvCqYMnz}eB$mong*|2+iPxrX>Ob@sZopun z>QHq^#w5m4HX>22YG)5%r!WBbOk#JUY?x{TvUP7rHv{4e@78GT_7Cqy4eti11jrDS zArU%2uke+7l>aP1^S@3oY zzjZ?|^{Aep1Ecy3IH#%XNC8f2wxM|e7GMDvaDC&+6G{35ahn~ZN~)!b12^^oP3i#t z8n6|snU5xeGiPn3$z32DplDPQ@KmxYkTk?VWMP_$U&%W1$fm6rKmKAJXvrxyd$Tf< zvlO|r(K;{A{%98l)(%(|sJio#M%zZsmeUo-+^~epSkPI8K z3+Gfq1Ct%x0I%F2p4=CS9B={l>7)t(z0jMgsp^i(phT=h1a(`gjadVAn;kfr0nWPs z55TtqYrf|j0<_>SMWk|&r=K9}I50|Yiu))@=^} zNIa_kH3{LbYqDy^CLLhO75DYjTc*&wi0*Foft-wPdB(V$I z7$rKUyQ#M-xzm>+paC2ZQYe6q=vYPN2xpF2bfo~vlV-#^h72S}1d&*uPAUO8>;P;l zgW~ycsCe{)Udon zpq@u*wjJ%Ht{}Gui?DZ#lVxkRm)Zg^JgRbw131~dp}EWtpa49~!x8JlM34a*t7qH5RtqdIP(a-yi3`x8Q+X9W2!x<0)3Omv=Kmt!30TO$~8U7H(GmQYp z9I>mMgUu|kk+{r88Ht>EmRSRNVQEP}6S764)Kd!HdRVApR-<|Hx=;q)J-I&l6!gk>kB-% zrdI90y(v&(DZpxJoL$M>VeQh9b>L zU2j?*WNZApDb6~+J$Q-tvI+U1{8XfB%7mW;KsnyrJ3f7H0enARqNMgRa9yuD03XnU zQUel4pf;Cf)>X_HYYsKRVuTCzmQ}&vZf(BG@GY7+=#KRLywYm{JpGRR`qzSu;n^O8 zOA!Ke&fX4?l&cKImfhw8`^15*wq}muMf}n3{nOL{u9 zVC#&*R(mO;h1{Wnl-IkSO~dy|H-2mB+sQZVjt(6H%&WuEs{u+>jvSx?A58?gtnD&L zWSUxZH6QJE4#digjyk>58St>3-Hxy9yqWxH66@1Aef5dX(OfJ#OEWK?1ooHV=tc}5 z?8$w<~^;7d>&9^3y1#U3p&`C4_(+k3YjL2<_cf|oUDII z!~qoW^QNzZ<7tyeYIHTP-qAa;%Dl@;(`d|m?hEe2RqOx^@Q!(#Y!aZ_IlaoO4dH)X z#5U=YfcBG(n*#N__CcnoWY6^f@Q!QG$=#2nZU*-(OV_^ebhAAIiz9 zFjiiHFWs&sLW%#iN-hz?7qo9B4=mp*qy-2>FE2!ehJ-IGii?VcD}#`UjFT&cC@4gi zD=H`?E;24DBq=g7Ekr4z9}W%*t_ltuAuTQ{EibhtB)cW4DYPywv@OJ<92Bgqt_~3t z5+6h%z9AnOAJs$@5v&ms5)K+98U_RdAO0i`7tkCT>>2MD7ZlD8s4_$@g8KNlg~b0V z{N?l4LWQpsmxz=wM1o-pgsF%G%#`Vp#fum*l_+5`#lS+PLWTrsNTiG!C=IDxX(*#a z6)-c(oQWx*ONoyP4HEQXhK)ixi0n`~l!%R^HY9OU5ou7PO8O*GVnhV$OPDGa@w944 z>m-R)n-ZF;wIaq$Cvm7%TccEp5F9SFVs#E!u)B9*J`@##M2nCpYdp;0%-grQ4kW01 z`&L>tYww&z=r%7F2?zrQ2;h)Hg98iD;)%YH!GgBKME-sh^v{s67K&i5xMiqdK&$~F z7K%uO151V+H&HZ{N~T$l_duE~{-vBG;FQ0AyTmP%(Qa5@Ng)<=-aR*FxyQl)?|P`KARmZev!0m0W)eNbUy5k)ARv;z(@_(B3)9B^=s zevjZKRzAgqAdQAKtff|irA=m7GR#nrK{VHB_|`Sm$m0wJ7FZw;2jU1I00JSD;8_If zWN<-@GXD6@Hmq1c%RczvGhb@3!KN1>{wU%kRw-1pTa_H>vP(nJgs>7cEaiw*Mb;sQ z&nL?zmmCqyF$Z0A(pia{N;SdM-9%;;;+~zd{Zy1tMCfo7Phv%a(_yvInPkq{Gti7D*x!w<6VP{Uh< z5eZ8x3M>$T1wKkZ#0RAGMa^SBng*W0o$s~Jb)$v#Mef6HDUD8T12tAhwbLIw{+5W){a2tlh1L({{n0tiGMwXYI9(CY&aNMItE?*Iv` zk1}##L9?f_LPY*zGHUI0WhAx|LNJb$OANRm+cMjycTbdVO$F^n+$HY9%jK54z#9#m zUgCx3NNoNK@JR-%X^6p;A6#>tc&fx_rNUvf5t;63ipZu=A<|WBC;Lo^ri`eHdgxb8 zN}yJ*$EHXmQ%z($SXQE-;V67vBesMk2sjDQFSPK%1rZb-f~-HZP?`kWyb?75*k>;_ z0SIufK-Mw7GriWL1$m5TZ8I~O0~B1KH4*L~mJBR+-91&4dM?tWEm_%yibZom#X(YF z5REM4bM8u@;eOMQeB5OvYhq4w0@fA@uB38#O2}1K5)jx(1O*Fe2rse|F*{wyV}yd4 zeNH!~{r=qUWB(DE>=31&F}J7(5c2{FI@9 zw*@0y|2WsU^kTpLHEeIxL4`pKLO||VA`|Tb;YLJQ2of9+6K7ftoJax^lrYYM2?N!E zVmA?8L}wufx?BxSh{MwDB!_dt&3qOW!}Yw5I-_LD4QDvJ8CqwFOhl9+f@lf-bRt5= z5}URt5Q5u1f)cEHVg{P`fCXgD8r6tE7Q2UlQ6NS$nJEYMh_HaODdt2i^2R(2Gnw^q z{sTrKV#SXlKt>9927Su_hJ8#1t|`5wp8U((Zc4~ILi*x=HS4A4-em|-qQW(joFpbA zr=~S!GCLtO1ilWZNfH_eBR0ewr(X6H71m9aOA=Y`$g-V?y&x-?1L;)m*$4po%%i+p zNlh*Sp>x1Re&Lv1#+qV`D^e|MCW^oUu15f9L;wM>puhqKz&&R^;};*8$2(+!th7 z)#QUK%PS28<6BQjYsdV!CxlQWQ~&#Cx)6EMOYALy3bY48ljIte z3}m5cqNGZo;iY*YR)B-7(soFQNV7N=lC*pZ$X?mmu3$EYG}LTn&&t}*o=~Kd%0%W4 zd65!uKm(?IR)pLKj-IjBW$}S+2E3tM+R}Dvtf0UzTEGFMBK5XT&A=}{l!{}qNJI7- zmOO|6&J@XuMa(NiVh$6b`6<8?dgLEv(|RuVR4JfRQpo@Ts*$<|)PVjRu?Rl>(?LC8J8pY=<(=&AFs5ts!Rv{83oePExU<(CK_> zkq}_mv=K_QX*l3vvWPA|DkuS5{y97 zf~=Ba%Uj_rk8+c#(@9rU<-(`PaCLLOb9GjL(QcEhWG+4TdzQkvsu21Tr9E__=WT)2 zlGL@3jusquJ2fqK&jEfRMhUW*4GDbh9nzS_vx@uN6p64eHU3UGj)gZpv#n7XbW{Ke zlAKDkimSV!#K~K)B;IFRxp&RBc1IXzZ1=L{9{I3jnh4gfjBunP5V?qc1$q+z#>D4P z8CfHCf~mTp5D_vsDc%@mOgb-OlP>+B&*MzsJyA%950mhH;7n+RTv*qa zau5Xx0d=9~MQUQNA^&iJ2BJoU@3qe~Tl=xYk7d|VzzgCl8bztu!Qob%4H?Ve)hwiR zH%^|_hWkW;e)Xca0s6v#A>Skd4@AI`@bx2jVegqFIP;R!{BjoM`Lt&u(4TAeVXAVi zAb!Zh%nhOjh#DC^1uXPHYmiJgoVu+kyPetvklZtK{&&|=aA*wATX+)sb8Iqk_C&nJ zGp^{K7t6s^4WJ_K93TKJvQ3SQ-w@mRsNDoX~I z@y2fC(pDwKfn~qZ!z)~v0*InrO14(?)G&G@ zd6LIVD(N z_l8+EgLqX4*7ggZ$0pV2fS^|rV>WXWn0Xe6jFMN3p=2P@7%}4*OLL+>s*`&wb7z$G zALwRfbwYu6!h+}+6P4I;4Kq_vw}~1c0vrI44HqE_A$?|-2nEpzrR53`pheiDiUhPD zy7h{Qml){eiO(f3qQF(U*l-%=W3B#X0T?G_u$Wu#VH>s9X2Yl_pyFM(k%kAQFbM=~ z2@!}JVO|LsdJO1*bEpz|$c?4YbA8wyn^aJN$cG)sCy>>90~T4-(OFfOL7HVqn3ziM zCVawoOHXMNKPN;e;Ex}00*U64ve0Ouvu@<33#HWx48Q=WD1-{Y84)RwApkY?#|_Cf zb`5tg4Cj#piILDJlDm?9QsV%%Kzma5c;_;Jl9vkk6%Co_UFm{AQt6EE0!eT6Ky^5W zcepRg<}WjM7CdKx9icFZC5=Z(6N+U+>Nbo#gk7%`ORc$&zXm{5S(HMA9pva9dxn); zsUIKI8_fcJ==T9401fMQeEu}_AQ$EU5CAm^a6Qqf0bUYkoA!z%qE$PCk*Jo7>gSgX z7a`}jVTflv+(Q8P;3NgncrmG%HlcF{AwZD%WZq?liqvcs_%53#c}D^_2*p=BS!}@o zIgZmf%TZpM#Cih75~+EP*hYwxB8D!sKN}>Q`PeXdk{y|dAQFb5S7{(i!C6;Xd|K&P z^g^8{;FlApM2g5Lx&Rk7r~uCyokAEjaXAX9lL8!2k<36oJM&!hk|HPqp2zZIWBDxc z@C}5ieF{K8>KPy;cUCWfjE+e_-W3Az8A_A+NF0h~`e_mUi4QQ>fB?FH_fSDV84{vt zQF~LL&!!S|)rW}%{zS(3j;&LSRmpVxXGl|d79eUI6&NbHwq_vOf_MfmCjft}hGSwG z0{3Wku_0;CQiBtq01Oa>m>Pr*KrCJPnk<$Ko+gVw3Z%ODoi`SwT;&dl#$kk+iW`?V zD@32E5r!{0Y=ndzSUMaA@?;7CWI&t0W?!p^`$Be%d?R`k|Y&zx1TKW33W)OqE`sVDp;YJSn{Zvy%de887iztmAjEj#dwxy zR&F1)OU~9QW&glva05xt& z0MS_wb6GM4@vrPNcB8s81j`}<3!d}lBcc%(i07~hPy%4+p_wpw0R&KUD_1JuCCGTO z2!UQyNtxD`8rT@J#Y%H0v25GejgH7z&{&fMb(3<6pydS-(z;ly3AGC5nrKLmeL9Y& zX&gZ7U_LjM@2LwhunR{UmO1he4-x|*aI_{M0!~{3pOu`<*#VyMoX;tv_Zox=ps&5a zg2W&W>@#ovo=A|ln5t(>oUKN9Y8xcVm3`Vn0*Y8ObQ@PsmJkA%U)4#0jR``|=&^xw zK*R9~Wu=)T>tzKaX6$>QzlNWpS(J{8Kv|ZFNJ*2VNi)DHp;A|FdxD8OOQ$koInD`iD8xcoL76b_DTQ@0C0G_C;xyB7T_C4 z>KkQiwximYE!+-Ml`Ju$qz;RtxIsW~3V{9Re*$!d6r~U$he&>_dB57R>~#w0o4#uz zvY?r!iaWocYhEp@K#&WlfV#8as4jl^p5s`(qp7QU7P&DCzy?ecx(PT747*P2x;c`- zTN3^Q3=9G$z!4>-Dhf%p6EFd7nE-rzsh7&f+|rm`>sG`dExoaD&{wv^HB|@O$herW zKaxh(Q^N%@$S5ZfRT>fGh>8C+FA#BakVL;78_Gp&Pz;E~J(<2>7BD{P#1t4fJr|Sn zJCnXt$noqv3_;b5gCTnzKTRW_!=zHwad&}!}AC1A3bRnm(tA{q0eeF-oM zl{`rA32kyEfbvVZRYJYldr?B{E}|*QH%W)7v6%vj7X)(>%tmttYICWX9p0788vX&q zQW?y_yk?9=d|E80qbakDRUM7UUuQuAaD23ItkQJM11s>%&@9c;Y|SMIF&K=y4v@!| z%EwwuqrVFQ)ags(oB|&}EyeX997&eqqpA#dI4tZJ!xAjukUk1fqc&Vf;K-i`<jAp2M zF}%*;iRtRdp9l}Eosp#$4{yO^7l1w_G6AhHqxeintY@WEwl^1hC3u3s{u*e|28ht_ z(w|4d&^$S&ZoSHbg|cs`Wp`E5&3bZk?V#8#*nGWajp(hw2G~6t%pr;$D90TQkpqPw z(~Rxdj}6(9J=v8V&5W%|Cxrqr5N|uZ&3x>;o*mlJu!1R20?Xrmg)lEr=v;&+8t3=O zy$BkGP#USV(>q+tevUiGMB7l_TmRJ-813UG(OVbdgC}A*k{(i zLkZ+Q-mQ{e(nL<=Jx~cfBM3>6GG$a8m<6f#}O|7u1Gc8qIUQU2P=|O22pGc^$c_AsqV4<0^~q zpX;-djuAZ2>FV7BH_!tEFX|Ix1Ek&qKmY^|-|#Qc@Jaqo1Tq~1^Gd0*Zsos=wLuL5 z7;plO%>%n$^1JTq|0FoQu71aU>@eI8q#+~*hYT9PHu((!S`H4<5V-?XKy!OJ*&EN{ z`0wBwI25)L>DAEf<#IiF7Z=0gh`V0kt7UJ9pNVu66;Z{ZboHk>##ap9mBJ_Z4)B}) z?WF|8a3A+b5%Cm%@HapNMk@lio5ve(<*&faK`jC%zw0M3_%VPA zTJj)@A3O+~Xz(x^@sNc$MX%eey z#a_f+^yFKBW{Ab~PLG!fU?bfUB~A1P;y-7M#r_4@vce4M0|l)DFVi`Y11xa-H=y`~FF1;?)Ds7PX{)xQvFy|0 zP7;7Vx@&_(fa{F8+g)v%y;PqF0VaVu9Dq(=y>=DDcRy;X?bWv zB*V#hD6<(!)UsHJQi6zLYKW?el0xVjiyAAdc&K`)qEc&X=n8BaEQ_+c+Z&7vtgM_% z{EIw{STgL&b92L@ZK9oX!voIKGfrMkZiAk#j$V#^6JruD(xHJd0l~nKz<`jifUj>K zg9awDvB(i4p~4s^P9!9fkc7mEAu1C2{y?N+hz}e&Wbk-_!vzZ$N>Y#z!GQz{6g0SW z@NWVJmlH^&sOIcdik&x!IU@q=&`ylMk`+=!3)i$mNU1q$bme z$&nU%pNx>wfyEvBdjrND$$l8Z`JuR;f%X_SIZ5*?xu zM<3-@l5Z%b6r2M_8ut$b#!Z08bNf}plTcCC=L=9o#g#~Yiy%^4e&0Q1o>b?F5=mE| zY{i~e-OZvFG_6SY98>+h=Zcopv{jchwhSm=G<>dN;9h$Exu7aHlwi<2j82% z$VV))*V#F2vIHXgXMKLQE6ls_hO3GS*I*ObI_OxKL%+2V(Qm+!g7b|#mGKY*!U~yi zX^0?XdJnJ0otWZ2pn3p<4>W9Cs;M*52+^t+!KM*yB;R%$kR$z8qyrK6I`IS=?Bt5D z!Ngezbiy)ITb{sBlhl^aW~C)8msl0mwAYHqZ6{rU0?G@ILTHC%_6DQz)lQYX%k!8QcU4L>%)y9PniG%_?a9F3+_k_%nBd42@K@ zUs{6nRbsYxNz-VC0%o*Uf8FP>W~tt_?{~f>HgjZ`y;kbTS5p|<>Ajr}WdhTkLsr>` ztXlVdAM!Wgn#wdd;rJ+!4+Iq`4g=$jJ8lAvss0;72=!Nf8;?HDs`+n5I>0M{C}~%t z`x7j*#=4_WNlv|(#VK4jG-$mJC{n3i(!}$K+;PPdPYcDgwiGU_Rf7=A5ypLvq9wAR z4PO6x&+?cD3>AFsI&Yy9FnD0E8$4!uMEF7V8g)Io(a(F`I{^_Q=dcZkZv*7BhdnA_ zoCf$K{(TkL0LI+MxYIZe9`ZBdjp`R0*>I#)7~z1AEO3(lfo@{G+SLc7gO-|+ju}s) zQwvXl$JTl6YC$WSS8SIw+eP9LTaiJwFyS;zQ0;+Siq12ZaUVOCfCNq%RJ&SuwFdqv z8gptSG-`OYdJ(~1;6TR@vf{&iT_}ih%L>Cx1rK;&W|r||jR-`L#7yb30wclzFGmE$ z1^@(o>Py@Ru*kRfPk4hKEIf64NV;SBk zQn03A^pR>@@)|0>g9)TX#da;IXCT$Xl|yzSDj-~n2z?R@C&8x|lB8tvj)lo`{=`52 z4y@C578*x)so(|S_=YJDamrL?Xq9uj9#a@bnjFwlmbA=F_;RUBCjOF_6=-QN8DN0) zHNcqdL+1N1(?$B(FIGf3ghyy)fe3hRNxkf)Oo+e$4cMe+cnRoE&ayLinX^k&N(<4n z#K_nQ!f1_}1fhjgWXYe5CT2b-e#1h=#D3 z=nHsZgBNTR9D+qP(Un9$)oRz9)oDSJoMc`Pq`bvOqbOr*iV8EiED|2#1%jn$ zde9-*Q}(cjKZKOswuecPZm*<{4c`Vfv&2lfbOJ1`01;eTfd(WP0u4~G;*KfWjS=BR zBX}GLPGDLudQl;I?y;?wD*hEF}9@Ty9d1K#9L&5)oZiGbYK zDF;ke@#=WW!`$1Usaj_m#aF%tyVYUItqjs|g!?dA_v~vwc}f zgbrn|8`Lf{fBTE6Oa+*-F0J!{?fmULACu2EJ%lnJcgqYLQNxG!@GUveXkFE#sF6N| zH|>Yl97F057&qzqQg>Q>hVoqkDjb`lt_2C}m( zRyN*^m7EOV(mEHy7HB+S+jC{>LmfyTQYc7 zQc#JmDm

w&zt`9r3Nyz&&Yo7Vy67TU%Sl$xmKrKuO-+6lys-Tmw9o$3AM=Fogpl zNP!JzfDV?ou)g4kl;xp~W(VZ}Mrmfjn)zGd5hO0#DdoA(fgWxH3;jhzFSpU*C%>l4 ze(6Nm%!phT^{7v}1GRy`%t&YHWe7LZVTli>GpU^97q^C7pGPTdNZ+=i4yH(hhr6|JCSNV<5hP$rl7~r@ zw@LzI0wVPx2FQjp*FvFp2%rU85J+bdXkZj*V2LAiBQOFi00bB4J}|(CFmMAM(-5~b zdmng2PNxC2Wp5Z@ds)FGGGi0K7ZjW}aZ>(r7Ti%s%>j0-@K%Swe4)03K#_I~7gk-B zc2IFGSuuBK(k)}sCEf)tO^6mVrXSm7e$KL6Xmf?^l!Y;96!NzbBf%8Cfs8F=Mj=oG z=wNc_p-L|YfF;F-1vqnkh)H}HhjK`Vc6f&rm^gZg+`;ix`1Aeq{gE&StYqBF|hj!zEiVW9Wsz@eT(JiOe zYs^AP6GU>oAY)iFeuFR(QwSv?6nNQD6ruDVS*Caim5g7Q6}j;NBp?II_KeU78PbS` zYDi0H)`xtkXKbjGqPJLb=mFh`S^nSFQVMopSz$$>)rTw~heLN7diXF811cDRbccwD zwc&xc#CwtWFH~n74sd@JF-VznUks6lL-ZsK^cLW)nE-q1T*!Gl=Wa9P(>_q8a)RB z^-vrmQk7Qujvt6&S6O@WcnF|VTNJ<>yg`-;H)@L&c3{DgJ91;RVRlK;QwgC{fO2#U_|{#2o;PFb-dYyn=7bcNZWkMGnRB|(3XsggvXpOx94k-2yu z(0E_wHbQ`)p7}58FlGl44>lPOqzO`|Nuj67n%d}-Spk$puuBOhOrDZH>2o5QbqH1T zn=NHbbmnNm32E+#TD;eR$;o@~2%}YZA}X;PyAho`N;I((iW5P0Zb=(!f_CrsjL21_ zoCaoxPy)*BdHo_75Q-TRx{ei^lc?E~7utYK;Q@LWj+mucCQ>3u^)C#N6(@pJnl*_~QS zf?l~z9RO%oS)(uh3Ry4;i9|qkv~?mAKmjC?qsBOCLsZD$rKqtf0xM; zpDL#PS%0Jot!J91Ynq_^*QWIar}~9$nPE~5Xs72&p)I7F!W0k*;I4;|07MY4@md@7 zs;P%ysQ0R=v~{R3(@RL#bn|csGb*E*T93Q3oHq)pIVzxE=&<6Ij64by&W8xw*_OmQ zq~FnSa>;`?!X31c0ysd1ul54HV_X+okhNH4WRVm=%9dhb3rmPBupk@t_n28xrlfkU z)f%z;xsv`ZDOk>k9^IN13YrP)a4!QmfY^3YhmdpV3bhRQFPMc7?rOF28W2n|uZDWH znDnlNV}kcOiA-XG09%|ex|N&36us0bnhF6D5URVuvpt(oqFNgifP#1%5+}C^-V;-lhR<(nZbhlwz ze|TH1mN~Z%TN`Fn0$mn)y4rF_`$IRdwEe=gAyONl1pO+OG4ewT7Cn z`S7kxF{tml4~UAdnmV@jhMY2rww!TdpkpG=8MppvtzcTWI!dZ|i?`YvpsJc>S8Bc* zEB<{8DT`8(xZ1Z~M6d!Y&;s&H9&ML{fGadYqor=rPFEVF!PZCyCldY{txOTV`?<5H z8?C2Hw`L@Uk^uxZ5Cm<5psw40GMORnkY?gKrw+rRahSV0m%9$5le>Ga8``G_#;*CG zweNZWT8mWqS{o+9D_LP8ZfmG*Yl2L&8BV9Rwntkiwkw4L5EHPl44aY-YjQzSng2q% z$B4RU#1dj!na~QYtO}&)TM5t=WP>CXuLuh9E5@k!Tvp*}scK$E3aoIXK%Qp462W&( zXgP;)zzbZaEMdnCoRZr+zL<%B=l}#jFu~j!lc$sphk*^@O1mA5Qrf0OO7u56{wKnx zsW`6*l$aG7|8l%9jJ!m^$u>;HGn}t&%e>3UBr{Q?k2oUr=(hI|8WC{B|H;75Sh{37 zs@zKic#N|x)WjXjkPF9LVd4mhiv#1K0xe(+>Kj(AI*TbgY#|qgn%hEW>9da+zTw-) z(`veUti+_6P>cr|fjr2BY_to?4(*W0iyWc08#tE*K9Bs!ku1rU{F>poV8(mA@@lUK zZ~*bD07Os#^2*6HOm$g7uPnSIZd=ed9JaMJY20+mtz5MVK&_yv$8?LcbL+EtoWw13 ztsY&vLGjD96NIcd9@#Q?#!MHxu#n7!rFnV3R2pT*4;S^FidqfoXJOZf^J)NZp{F&e9@!Y$Fr=&Pn?oG?W{Tt(xyn4UPYII zly(oN3oFgi3+cDHW~6+lWlQm@r6{0voE6iG&7ynP5Bt%8t&Asd0}>nrK=2rAN|r%@ z+M~VHL_pf=>|b%V%2Q2;vz<~LD%Db5n=H)2@yfNHj8q8_&2oSshdJuhm!ybAOR%N z8$qJcl8Mm@{Jq#*t)B|s-E4B=?H*h#R_dEA=X4C}odUj;0L}~39jI)-2+Se;16TlnzG9GV9HKJJ_R;`6IdHF z1p)6G8hS3){VdnLatH+-=nUP~#7oeEy0!Z3$;MlCoc_wt0>J>(oxRR_2u&QIv%Iq= z*V%u~<1G}v7a-D;0L*ha*yqs#J3$vurR2!Wm}#6`PCj;=cFp>Y*|l!#SdQ7)ZMs;l z<^J8D*~$?oP!I}^+GBpy;$`NlP1Hot1G3A=Npx8#W^XnMGrod{P!#BflkHr)=k)r* z7Q-ole%6GF4~Gh`EL^Y0d%Wll*7lG-n(D3$K+&<>%lerWmTu$Ryv-1+#5nt@ou1#- z&1tL{loZu#3&P zSeyCAo9DeZ;%TkuzD=mU&B6x&2n7WL0}2cY2}FtqL=XuKM2CzH78jP6ikU>M8_Aw5C!K{i77`1jt5^z=kP00RQ-LGT6( z6Ce^M+^_+ILkJKdKxzb`8>0jeCTNVPsNx|+kr;?f#7JZ$l8O=>5P9*@zC=V|x+HQS z(Z~WT5e+&ph=Br-G*iN)d4T>>rAw9+B^8yfsW@{^#W8I~L|eH`=+tGaTJ6@aT+Dp6 z=rvYR3bV+RsaV^L7_n&~_Mv)JwJz3GOy#NyCADu}zI>;SL#K${hr{nUoQOdWhz)!B z@_FkQM3KON1PSuUVFIB-h7Ko09Eqqjq63VAGSG;jks^^MA(?*kF{VtEJRzkXdJ2*3 z*Ag{N#3@O@0MvvMsSK(-6Y2<}kbY8{bhzuK8k`mrgXEx`VdSJu3cb#A+s3lNE~K~2 zdF^T9mNJSU)0TZu&2^0|-w>uwC$o(6-+)==nMqPu8R*VC@0fss5cE6-*@QyyV_{{T zT()5j2Pp)Ch$BKIBy244B*>^cW(0vlFGA#6MM4F2qmMkHRzQsx`MBI7i#(!gN;Q#$ zlS+dmxd>`85t)es5*$USCRLhqWu1Vj!zF-!v9by_;N*)$gG-vfcv~Nw zwxrdJUfikT{^y?10=P|p0{SH=v(~Mn7@{WJ@E~RP{4gOAlU{g=r5qaM*`}O!S|V(x zi7Loyp-n)9#U!3$5^k-Ym`MSd&^oNK#1fl{Nvtx^(gDXM0$RRpSIZqI z`D&5@J0d7%f`k78QBS}^2#im`23H!84+UZB8E7p!46124Hi7|+qGiHSNT6;^RLP6X z9Mo<^rF06hz=k{#M9ZZHa?H-%8j{H?QE~~qJeQtjE2cO*=)7GL2o=1jKZ}YeOMeS4 zdSIRYmnJaqC39{uDX73SomJsyO;xB{+jZ;9r_K%6OqHF<*&Hw^LcjC4?RGti%q{7p z-3a6Z-Uc0n5Z@$v3bAq-wRmy*hKCeMt1{xIq>>=1e51*@YEqh$FSCtFXyQ2Me2gYT zAr1j)q5ujY1xu$JOqQHg3QGtLP~UH*oHmv;y$L>4b4y$Db0-aw zu29LlN}w)CLkv<-D$P1YJ4En-e*G&50jbA@DD^#mgb!giDBs>5lD@x1A|o2HSVvrQ zvG~abB(t#*<4RJZld&X#noto?I>EW&Y)%tIN)k%WXtQMH>^sYIio9ybAF&`Am8M>6*4Uq9ZcFDy~M5p{bfMZf@CB~fr+xA?Rq!ZUiN}m86pyl zGTuN~!pygj4TvUv52Fo4VAKiNRIwr{<4wrWXsjn*v3{bG*~c6=6h`cXNQY3-K5!Do zGp58Sn7|9qn0KWbP7-X++uDB+smDF`F_6sgQNEb6#h%oK$tsY z1QK|@yV?q|m5ORu1)b5n;h(T`7w!BhUfp0vJQ|ZBAP}q*L)-^u@R`pK?Nfb#i`hoJ zI6ogDZX%LXD2hC0B*~R#RzxXah$o$#b$8glw0O-Z=TOc0Vz#FK^5O7~O1O2s>N^qISiI!U=KMX-hWz+*Nk5FpNz zo}P3nK>mT5BqlKiR^61tB%%_Dt!5(#?M-cK30AOrj7ge9EB%P+OIqrv8-fr35jaW& z0`PCC@M@PgavhJQ{0i)q~MY1$-V{vgeg0u)3e8S1i= zT?ph|J3fyp^{rO39!RuKeBcFbyNqd_nu&f8OtnqbP{M8iTdQ(vG?IYX#ZK9Y+!9na zU`5>gV8Xv*7K@CtGFe??rdF8^Lb)^B=tVyoMon;3x;VkC>Oh-8b6OUILYrWr`tv$g zOygP00kr<0SbyC-WC!~FxlzSX8r2j)m2G4p7?}2c<`XR1#x>7ifV!t zj877DXkjgCBCuwK+f(eyaI1VXPzGqg1J2ceBm?6`o@-~0IxeovHRb_bT);sfpjtF8 z=TW<~M|!!goc7fPAlYjSVz38JZX$wvr*SUfX;8AzDk+uz5uINgmu@=J$=4-5z=Iw% z6_f=w;$`r*p#_s51|cwk2sF^QCW>k$5=mb`5em!povePdk;~@lif1&A3Rfx_fO3&r zq~8sJOVwD4v3q z9ieTqZ_}ersI`{OZLTn3C2fnI{D9bQ+{Xi3(1QgM2?#(*@*NVO-fQN zDTA9-YqtoOA#Y9lj*#B!xj3=(wNjI#z7(VmCNlm}aDnu|2b|pAYFSI*f7IHwNldcZ zL$GUpI)XN$5&$s)+QeWBslp%G?O1=ixHQVF!-@c)lk_40xd*V8&|PsiF3McZeVYiz zxvqY$Q}aT~&8ZkJd=vwOKyH0Vsfb1pc9WK(Kq_Lj)G6d*p+5xAp-spky!L0x{45 z8?k)B6aWEWc+gjO!LdHPK@xVQODpGny5uS*2Y!p!34{QC;a6>PA$OVJRv%M-3g7?| zAOVVSgi1(FU$S`?;B$&59>#-zmiHx6=q8axAGWh}xX@mTPNK;YTty7=%F>EElC*D5h3&hj=s7ea2Ccm#7HSRscn)0h$m2su%%Ec!Vr;A6E!! zlSf#~_)?pfky7Z3^TAE}7i3OjLSJ}f$M|$lr+Q?lHGMJ|&vO)qI9$h`u2t!PZ0tMT0ZAKwa5LV5EbmP(af*Xqe{>oHzgk z;1j0Ekf-2~5IL7yL6K01iyPEZE6JB~(U{4A0%`(`z-Uv3scG(&n8>I?yvUdKqIG#f zR9Ux9*%d+iU`cSunFoh(pQ#9;8IF7S0y9tpGEi{}@DsAKaVU~SuSpupk(Idlh&;hA zTZxds>1~&&ehL0rPJuRx-7swju%8$6mfjGTb4h^H`GkpdmtLZmxR`%1_c+ltZa7ouP*) zumUge0xduS9N++k04%?@cS}-Rp2JoK6hMxXpu4#bekXn{7mzxLgN_rSVwsiMHm1GX4k3B+7OQZ@LehSc9VYccIvA(Fp30Vp_)*qM1Y}q znx{xOPU;3P`QlQ2I-PrYf6J+9jg_5eA`F^V0x6)bFdC^$HmUkHN6b{I=J}Y)l4^W4 z9jWSCx#t6S$O8Gq0;W2YCSYcJ$OEcM0?4WLuZpg=gGjwqHR%PzgTe*3wy3NWV&0GAM%r>&@H3#dqjHEy{Gf2m*{Wx*b| zur4-57S7O}F#0>|GNV@rUfXeFVbWPeB@Xx+9a93NBoGasx*>O1K1iwv9#XX^fUqjy z{$A%ur3@f#D2Rej>3oIPaw@WYZTpC1+MqSprU|-(%vEz^DVDjEx0c9J4=SN(>4_)? zd5+VYhRe5|NB{`1xJ1CR)oQ1Bx}lwyE$m`>y9loRQIV#noj$vTDtZ6fzKz?mrl<(lnyuI> zf4?~w%y|tt8=m1Y9oC7RDjH;pny#g{hlcd7$~cjWbPj!TQmrGIl!NvQV%UgIR=C-w|2;eKBzKOUetO?KRXKY%K zc$v7nL`;s1Q~F~w9pQQ(W$dLaUpOR6xU!9j1Us+ zsZ|>dNyc_=sQ`rN!G4T_?Yj@kYqyDqxEUMB8!I!^tH^jeZEyOl$~D8I=!wF)!-L1T z`?&xP@Bj~Rt(ky?Mm(KXaf?Y@xrJJ&(OC^kHpQVQX+Z|MR(zMS#;dT#6gSMntRM<<7@ffZ384WXzyZS-7av#xwVPzY3#$Y0$A6p&-%G=Y zTuv#AvX*GbLHMgE+|8D_!##`uP@({uEX175ibX7uGkZt!%%{jRCK}0ONGo;ASy(w` zzl$Z3-vYYs<)Whto=M1&J*P~rN4a%0p8iH1TVfc*90Gax#)y$N?a%=hmo~$to>rvSchn!_yY$bk%&HiynVT)qqNvP8hi4S5QB zs=j!#ght(DPe_X`l*9_%m_FwgiUmTQz)i4h!Tc+RpA3tvC;lGF)K z)YU4~cUr_UThG?8gq7QR{@k3o_|zO(7YKb*o!d?4v98AFsLv3ikxhWkxkyx3V^CHO zC1o9A@`|o_0dQQ=@PH^EP(AGM)@dx)F+c<%jnQoF)>Nth!<*84oxC=!%`ZLJ%-!59 zT+XL}*xta{=(~!V0Ll`X)O<48OI=u0xWt(4eo`%%Kt{!%?F_N}qFTMx>Klt-0v_+( zJWs2J-+GD`Fx#|CamIWYxc$~}tr&8>yJ@W;yJpf1{_AbVUAzen$z$1@C*0D@?c5UX z%`;5SnV`6*pxBup#ElKlNhn@;`N>L*6_w4Q^~c1ScZEpnm$nx?M@Pl&X5PI(dh2Sz zzY|&UoUL3vu6P1RbR>JJ^9rf>0H(MAD|?D@O?+z2)@jq^x&77@&D#Oq-xp^H2%u5y z_{YSXwg_3+%ALc2z0DKe+>!jvdZEq;fZ^S+00^Mr8$Q$=?%2{KUfK=f1=yEN?A``w z+Dts&jWy7IWF9jffLN`VoiN%~C{EWh-!}Ab`8MQrYKj!#4tX2`1diLgmNx$V-@{A< zwS5ALpy?V=r3bLXgn-Rk4wcA_(>2_yVm{{n-V4~2Xy%!K=8E>yZ9d%#5a-q{=i6PE z<8D}=4@`xyk79VF0-5`uHpKv!!G`vDvm9a3Tkm7JX4*F!WifV9S!TsonUy~2oJy& zsV9RvL3EUF7tjv3J@X|k+@?4IsyP8KU(x<`+inQ~rhfCz*TF5#jypfdNDt=8jgX>v z^udbAmOT0B%){dL^qt`5M4a1xlGi-k7z z3}A@W>RR^bJ+n#O-hea6piN z;Gn_rL9$vxqWJN_u{nWoFmQV-pgSNC&>H|8tUJt0w0ldCth~&ujHyU~@H|aj{Va`5 zlr3$oxX=wAKK<~m_+T9oL8MM35h3wBD2{2!n0Rk^ScsV4zkffEkSjthsHJ$;qF{=H z1*esG_z*=26htVNXx9$jGYJ|I#T$fAQY1^5BvrbA@&YAC6x?-UfFKkp1PByxLM3n& zp%6qk$a0`S6fRuDbon~k%P6s-1DZv1N;9fdZq}$O+NLe5RIORBVZxfN+&8NM1CsMb z?(DO4(>hX<2QE>j{(o}&0kmuP-$sts;H6MOq+#HM2M0G)NRZIN!W1QzNHOstk%t`l z?wu=_?%ha}NQyLRDYQ$V3Z#ZIbxM;4A|Hr^cpXc`CI<+FGR-v%Y0;%ll}-H(Je*h} z<%D-Fi#$2Fw8a-Nuf}#`Hwl@o+0&~}5lFn54*|qfxiUtKep4hopHOk&_30O`cVGA- z#K{&Xmw?xDnjp6x>E$bQNlBHA6j~(|L_p30G?i9cGNw?#h%7#(63b5tByihpyKRVz zZ$vNyT!;&dhzW_q6{ih1V-d0iCGDbYddhuBSw9msgRc z)_d=|9l5t}daq(qkYGt~i3!04_cb10OMb>O%b^dEIOVZ_iaP38lSHPNNP5 zDzTch(F`GtbV2e7Y@gE?%`>~>Y zryo(GPW}W4K(`?ZhdjL9JSZl&Ai9qbK1`tR%96WG4N+1)T%ygO7Z8zD%~uzk;>`@F z5%FlzGHmJMI+*uCqLEL0N;8^bB$KPpsqlQr89+GF1*PoGPitx_6Ae-2j)}?4c|D|< z{`Sbjwh3{N3k0H%7APqp7P3dq`=Jp#WyrF)W0DZW83z5Mm+93DO7{vH{$KLQI@X2p zU+XEQ8PC(N^-YEZlCf19l@kCW#L^nkC{Y~cH$SZ9k|mK0%lzRY5jhU`MN*oM zY+~}h$v~UkQi4`n948%^5%8cxq2w&5l?;Ozl#;MYY8=SG3ieKDPNO!^i3Carp%M$E zB&Ra8BX{r^v2?6XphO)f>%K_R*U{$zD9L zhMkX!^i-)bT=WW>Ob(nBJx5Cndd%a35pv0;FKs1V6Nr>q3V@c>h#W3`3fLI}^`AsV zDq52{&Wu7XI?6+&Q=fWOO+D1Agp_O_DLRkGakV2-RE}NnqYpf4RU^y`=t5gFrNgwx zFwe*m=XBCEHC}`#GJQrbj6qeQ&Wk$4>PK%O)JuNm!-lHsT4jXF#iA;-up_m`BCGM- zyFqojM6_yDr|Y(wfo@bm?TcmL(b?pD>Q~+*D}PA)MZ=bs9UsV2PkHG4)cx z3ey^B?$sDbk!4bRL5+D{LmJL`hahkc0WoxSx z_A3woA^8La2mnL?EC2ui0FVLU000O6fJB0VC5471f+&QBgN=iXj*f~%laZE`m?)Z? zm6V!|pOTrIgQ1ElsHdcyte%~imYOQ8w27M`L?p0@yQ3;ZsK1J&z(gy@$id3XvcG~W zf~mp4v$m_8lB?FCm$9v**PMvGhlt~mYfr6jF-LZhc;H*P*WqP{jQ4LNy?OJrNE?kCG6AOo2wYk-f#W!<4?inZ3)CHM_T5W3qS6hBOA?Mm?^zG!-M7B94(|}L; z2AU4K4JB1i2&tx9QpHW=8Cz<(Wa48E*(c&h@)5McVg*sx5kWFGwvcPCofsKcg5X8O zUp@}P*C2ikd5L*}MgE2!TQ|;#BX*9x7ZiQI z`FW+#Br`I26=_9zSXyb9Jh)p+NQrb2RhBJhRZq#;_#{fq?RjED1-(cfN-|Qnqg)Eg zhvTC)1xchMe05jkc#Q;xq$S4~15Hq&wzuOkkowdlq_QQ(VV9jrHW_CS^2Fa*FBk|Y zoT=Fa+?S!%hNekXQMJyESTzFEnEB-er7#{s?5INwR|qKmo0rs6a20`a-}^Mt9v@h>kWFu{YXO zD@|cx6c<^a{z>EiNV< zl^Y!l>A2)NT2KhsrK&S^GVbVt4ViW-ZzDDI)pTD(9 zevGVFyn;1VxX;bRp`2ft6m4oBqUN#0T%FTavXqtPHfYWY8zIV}x!khBVKKPVS`!~E zU3He+3NCy65KR!!H7a!2<1o5wF1+;isOfk1+N+nP-2_uAG%8%3Sk?q5I`F`e2-Fs< zUZ;8=mR=4R*1>f1S`vd>c9`X_zv*dN%yp{@>&OrRN33qr&S@Z1kmY>qTF9q(xQOuu ztzAw2m@Dk$3oX0=G`W^58b106Y3?Xwqj&cs)T5IZp8TXYV)|jItF9L7aCwmcV`q%) z=!`uFoD!F0l{=O#kU<7f8}L-3mAz@{DHP0B_R_N;;W6)FPMOu1lH#}CP-r#Aq1N@l zLO1Qr3~UKBRW}^>IR5ZMA-JgAz|@C1qnT@SSE88YqM+yyT-viO-eSCOZI%y#a{BRmYf-lo~*MsVgj^2UX;xWN`Qhk zdhm@K>&miD)|-t@C^yTLNcFPwP%aWn0EIw$znWmf(xkd}iG~0woUlXO4rvrp%+<(I zk>JZEN0+1{&dWRbqlPGtp^Q=?glhB*s;HQFPlWL^ff6&=QA$#!Rw2X&w6vu_6RQ5b zJMkuE7x7aIq0vz6OeSx9TT92@Mp0do@MIb7RrR>yD&v&#qiJE!h&1Yuu1%9IC(`Bs z7v&<3_-uXbqYjnCBc9Pg4V{SnTuyarwVv{?7()$eDeVc^##O0+?588xWztKJ_S~EU%P&r01k=O#{ z+0ESYDg1F;QvfQKk8wyH4Gr&6{lqup;Eg~RrPG=2ltE%4E;2AX(K!H)AomO->$4RE8(4v(9Nu7R?H3vFxO(5cDy@ zk<^+yQck;s8DV;9(m{xTVHY7IJ`7&phY8D0ISbL8>+JO)0^?Zh{>t+(`vO%m{v42H z%ovg)V(>{$5@sD!2FXDQNuvWg#t)VVZ!5zfr3=*-)~ZUP6HTyfqo=1W>5?f3t(Kc! zNl;d%y1_zI9E%h}=DF}pn=7W-jK7RPL&m6xmaML&pcZU8M*;`M4kb`g$LI9;c^Md| znxLh0<0i|d+P>N`p|7$ui#+aYErg+51G9&&y3~}d8*c5ct*Bi)TKtS0 zIvuh%_wdcC;c~ONxPD8~UZev*083NU_g zV`toSt1K=dz1%8~$)|-dsTiE#-kax;hK^M3WozoDHHrTIym%Kmqu_6w!KH8vGR+i@ zSiME4R5O>~?5k{yz=kS?h7`qt6fgRU7Kx@27E>XfF4w!R43tnDyrFEy*}=Q|o~FHf z+`=Y%$gSS{=HxR=&7OY}l%ini2agVl*+3AXKFp};?ikFY;7d3x_r0T*4)6XNe)t~qLO-Enn(htJf$Jj*cy*vLUzJB9tSGz~+ zi)~fO(Rfn@fW22`e&H&mqb|Q)FU$WYoh+=aDtE|uBTI;Bz9xBdS-WaD~5mP zm18s`R}55Ng+omZ#Cy1BJPra-yo6C60b98+2)YmnBv1&p01WK48^2<6fCEnxV)PO(@w0xy7B!5eC}hV| z^2dV`*LuK2JAs5vI-_s2Cl-(P8M_BsK^8clWlR{v8@NOt9Wf5!@Cm^{479L-uK2K!sPxP)wq7M4$uXXn@c&EDm#bfZ{^?lv?5ORp8_kclb*t$YD0qW`RUB zQ|EaxMKA0`V!pOm*|m&er+QNKPSL0gW2b_M!chzJ7^qcOTB0^q7KSRZj}@X5eiDnC z6*H2kRUM%T>M>2TGg5KYCHN$V|8i$2z)<_R1B0*wE;)`$$%)aD8PJb_1vH2IU5xeBCiE% z0y2(JVIr5oV}jHYI%5(hqZ20L{*MeaIZNhHMORmXX=*mvV?r@IDFR1vqmP0xjz&oY zNU4uHkeQc>A^kXD{5J*7WD zMGc&wmZo%i7)J?liBGG7C9oxhMv0W-_JF*SBAAt9G@(z&_b@GFEAs&;l(1njq%5P> zRFwuiSN3y;Gdz50Of2D&nz^1Xc_EiM7)rSrHDCktS)bekj6W0}y!Zkou#4A4lB(2Z zb$CNCB|qaqKju_epOc%N^k?sPY+$E)S@R6P(0by7HWk!Mn%0?`$(hTko?f^|cGnY2 zA{+$+Ado_n))^*f!Y6e8lM9#j7TTv#e_}R*Np5IkYACX3UBW$9kwMELCN!s>O39og zR8i7WL;;BrRY!d7IE&r$SCB^?_48}I<~f^!o8Pl9@>C4R#y^D^Mb9X4s^>%kxqKFq zkCxdK*LOE9bbUitaXp!IDB4;Z!C5(>CMF6yiK!@Qp?y6%YHCD76SH1ekwc!G*g-FM|OX^NAGthy$Ft67xwU@KzB`Cu`B6UUSKBH#8nX^k(xzT}I>=p6NO5 zRH3C(4BVNBs0V0YN~;sg0^7>WQhl`ksW*X-o-#m{B_i=VtMO zhjSJ$CWfWG#-+#xt6(~c5Lz__R0^a32@fJ={MZ_^B!uDP7A*#^@u68pRejxxP?C8V zOg3!}h8S36t*x>n39DOGsW2x}dn0O>XK@o|A&IP(7bj~LF59xdI4dKusewTP%h?D^ z*`Co>To~c9oH9giMrTPAi1)f@1q6?`nqtVtU`sLxxIm8!2w??+H@mYE&5B@u>5h`w z5nT$efkc5t_e>M}MF5cql@};NNEb3X783D}L)M6B8?s-^B5UI|JkzrkxKH457A$KP z5IHU%*8UL#%7T1b5gh6Wt-78@S(KT18}vz^Hnk{Rcdv(q7g9r!ueyj_JCB8+2qaL2 zQ`iWI@Cn#}cH1#GeW^G>I6ffALF5%uUZQPK@=^BjK$HTl7@M{lE3&v^K-DT6fzpWU zGqP0a5Gl*IyJ969#Ip6_vgC3W=tE&MqB*AN9L}N@>Died`U9R>OFXiEz_y@rCWuT^ zUF`6*@L&k95RyFQrFZ5pu!k(U#k$10O0LOO@Y^EUh^*Zb8H2iSSUZJKC%1GZd*XGv z!dhzWK^3-G9cNKa56rS0B2zAlG<>0WMnb`A(Qob&IUhDjHDxiE}{uiy&F1`xI;WAB^4bLp*U2yIscysEXG>+&RT)uLb4af;d;mbDPN zFu-e8zy>^M*_mX%c)$%T9(en*Lz1%C;<7BOKw8|g&r4=Rb3;x?K3oBQ0^u4^w8khH zS@uL9mQ+NlTBYRc!dVClWx5Om)OT<^hYO26!V9IebHwk#RV0kHWi%|20v8_Rm_EnE zKN!Dh%Z4tRz}1LrMWas>0Ul_iqdr(yt;9$Z0Bm34FuJB0RYdH*w9=LReOaMKyg zT%L8>`I9Pu>rIyJ|S%IvAV&<9-hD}Wyb?E4i z(&1%~3}GHr5GBCP#u>JjT%O1QL;5>;V{siWqZjU+&IU2cGhoIUk-;(r$_oOK1WGO| z@N}@VU1wPdw2W*3{S8@qPDI2`TqiY`>mB-fdcO&hZJBWb6iQy2lcSooxpqxnozkOJ ztcz4qE;nch<{#0d&FulL)VONf=g7^vt(06`hw8}$9cw}|P8ER`M1%gk6#TQ|vC1AC z!q4E!p%RkRpp4k?3Vd7&p5O`PqIKr?W%ry%aLWd(yO|24dzK*S*uy{xRaZ%q9hUYg7?yw+({N|R$=S&!-tdQA)R1N>y_m8` zaHvg9u47qFd{>0}+SQXsam^%G_>72p+n5vAL@2F7!*Ap9NIETaeXF05bF!KA*Pk~o zdf`3}Nd&I^bpHI^(7nDp=$oA|44M$xzbzycd3EM1h`;$k9s&J2D@ zPWszZR z2G6EB*vwnpr)*r3qnfbXkw%;4DZb^RINq+n3ND~^3ny&#!|FkTBxo+{&BhBHUhB8s zgZu1IMC_VIr-JA$=(83Vldv9(`KGo#sHII1pnDRChRGhdARFXd^3gisMPcH?QaXd+ z6-2>Z&=9Zwy+r?oT! zP2o}URmXxSufYR8*eu`j${6bI=L*|E^IZP^?vs!--{EjZG_QdXXZWs`?ThL}U)AhL z>s9SjnI}VVtMzly^pt$Grt(SR{JNzbsU2)*gyuhA7!W7)cTe zh(q*=BPyywq_To)>bS~^c&Kuk3OoKgOSJOxl8C!Yl$+bx+l$-ztGkQ4l9=jC%xgun*>s1>V|C}91hMGIB2Vh_#jbJy&cv}NX;C2L1%8ntt{t})&E zG#sUF|Ge%ZCyYc@UT4+$VhRl^ym#`%t!s8m>8@$QlD)8DW8y$u11$=ah?Zim!3|ZE zfIG~gWEV0F0u;FLBRfheQvM_=rE2BLmZMXOW)vw>Wto-?x>mgzr>7mFK>3s8p|FuuuI><8!mNfFkt6?23x6h?^b!s_i-I2E*n|9(_g4%elD2Xr`6}iV_Vnk zFJ{^9>D6n!AGv{y4SJMkSyDrWgI_q7hz@@ZU6ja2270uaDGG|Dh)Se2Xqq6Uq?QqD ziKs?XCfIxe3Qs+KhFeg&2^C9kvlLZ}R_%4C4O`Vcl+RCaH6;x%jOdlzR$e7&Pgls* zl}Hu1b!qC zf(dp88c{7pNXTxk{t)4rB$!mD-%T;OmM11Tap*}X9~zZRm_z9%BB8XPC{lDVg4Irv zUr{raQbpQ=V<9;16`hYW4yPTL$80BLci$-kV_ZnO7^z&THmM$Y!^r5KmBkS@AZ7yw zG?77RUP+ihy&-51eeFoLYnp0y(k7h@vb4&ZrXA9Vf_U)@lJqAO9ZIKdvN)@A`3O^3KMUbKCPogKWguY)7Us}m zW}^9GFN&|w0{Q;I409=QD&h!f?Kh%A<=5g#iAFnTtI1A)0{Y6hL<7T$(W#FRri0Wv z95((WO0^CawrU=xu9B76bpkEH0G@Lmf;On^Zb(G%UD@E~i|j~=Rj%TcaA*f98AZ)( z?vO!07IUm+=}jJJ;@jU&cCznj#uw#NnJs#_vX&``Gev>cO3a0g_tg(`kdVpcu5}^% zfoqDRL5fg<0>D)W5Q_zD*Yb#yKikU~I?P^0)-#nJrosg-YfvNPghi}fa(%z6 zP=zW7lhwo|iZ-F*PHHx^LlF%{BZ<~5@}jR?&?=1On3qUgbQK8dMU$#p4$~euFa94z ziWdUw&I-t8ygWKhmT6>ObD)yCR*_FBE~r#Tc=a&;c<&=J_?|ml(6KS;t&uvc4k~C- zzU2(iaWXsCB}=gyC}yNJIJ4hNHY6xem?V|$dz|Q!ro~rQ={)vQ+jUq3%yS~_8O+*c zJ=)VMbtKek|5{s<(DO`2L_?X^d0;G!(>!MMT$h1IHAqxO7*f__6&_XbzJhRml- zlObo|WGO82jVp`OidN|QnG!?5b7!Ko(SI!~ z!W6<12)u+YY@q6d52~!=uTGRrFWK4SFzaTE5+rl2AT6j{69`ur%@umNDA5W~YFc;9 zKziEqm?Qh9G08;Nrsa$a@XA+7l^ij0poqm;xGOcmtpnFu%vfEYDqYSak zHDKD;3=hPHd!??K)H=L)4Q#BN zQc{d&NsWrE00klVKnYTCT#OVsf*38QB?M|cs(d@uT3QC~cmGSg5>kZvchr*zlfhhjfRYf%*M?FS^F~}-yq)I)~ z3c^><)|YfGkMg3l<54rs$_gH^z8j2@uatlT97w^o!+g7e!th7N`d+ZKWZ1q5yQUb9 z^OK~JP7{SGH2o}BWFNap1*PCrMEF3q+2Qg|d>{mgAc0y!K=Tr)1>E3nA4wX`$&&jV zH0p*gfcZ6LxMF(9g}P;F+iluh+^B*MtlhzN$-?1521iL2M3KpA9D<**MOTl^vBt&$ z3aDj#!42MG7!tB8S-Mut*V>HbQ;uhD)(kJPF)7^hdp(^Yl#9`k#l z6GKJ`ZlMCQ!4mAy+-)C`19rG$g9H|EKnVV9*LIih?F6kjvA;wh`)$+M9G^^FR0c%9 zcZS(|HdpuYTnd)eiB5DHe}Wu7eut}EqZrxEf^uBr|CQVGt+yQ@n|^eo37Lqc;1sIS zhcBSwhJ)DVgjgNIg$F{m=u7kx0MIbM}{JT-W)fP*?%A`_KdP1l7IlWD2d zH6tc_?WQy@&_Dh1g+T*iYO@Wa#SD5;0vf;pDBu|>ux3woX)1y`Y^X4^g)8A9bswMr z2;cx0z;GY1ZTuBs-*gKfqcJYHAJ%hs-{=tCR5)=qP9npDK9o3)L2}-uU5BCwx}}39 zV@>r9_QL2;jB|Dlm@ZNLYf15%y$Wnspig6(In0 zat=axrGt=H(I!8(kOHKZRzy|zr)hJk3a{i*JGK`>Q*q0xE+F**A%XWGTW2j)8+XMhFaQ zl5Ep7O(bN5GPrFFSc4A|iQY#ox>W*)AZ~+5j(H-8$5ub0L^&!ZS^d~&ytHSSRAcF5 zORv~UQ6)6X$u4yiZ|M@9&B>OTVx3b)HPzW3mC`cv=>V2FjmIa9@r09Xg`TXlLgDxk zAHV_K)B-5ra{esyf%93Pe(8aBWr-iLGWXF#chL~yXdqjfILFpKFL0nOlYM3r9)PAY zYLNnZMhO)fIgvx5hailiDMO-ZGDPJ`_ag&y;$G7tGr|dU=rS%;D1fR5mucyuYYA_f zmM$ew5+f!z%5N8nAoOt!bz4SWj@tD zb;<}AdYgt*pdCs%uKHqss!8khn~oTCb2@adq+UW}X*1fWYN=yON05#&sR(H^w2}-1 znIc`6{(4SxUnszUzB6sbN14$$b0Oemr|PX@LrVps6g44^DIlub76PFfk}Z=0AwZv$ zc>%VDef6lNTAGOGWjJCwgUHgXdV{RU3Smi+Y#l3NYO#b^Gp(Z-n=^~8d9$a5)2d5U zKb9p4u3)I@1}DK;8im@TtN5Z)lz$34Vs(&y;E1mZ;mMRsg;;-Lfhja90 zfw^#$$pJ1GpE$4sXIle+u^9=|6}?gumhhh6iK~7|0SKS~6^o`MzyTQ>jUKpd&Kg7) z+JpI7pn2*7-zI~Em~cFaSP1I4I>nmZT%CjLmRLX{MyIKg8SK;-74v8%MKyI=2goKyJ>rNwSG5_yehbCO4)QJE5VcuA`m z0v9l_C9u3^OPFU%2{@nw&?^dOOPDfnu}7%43`YbP0ID%5wj?l~nbE1NiL3thS(CL! zw%KOFD|fxYZ437f5xrXIp z`PiYKG(VNmXzo)Q4}7}aCBe0Tmgs81iGsn&X($G>!J#)qb%`oP1VL8ue>LZL28#_n zSEz@e7QUlJs8FyBhkhyG8ZJP+mLR=5TmvivpBx~K3^$WRFtGLc0o3auEGDJkOPP~N z0WQaIV@qx2>tzl{0@rJq52q!9cDUCY0<>wYlrV#;8G|9FQ~LYKZ`zb5x(F#uttm0B zUN?8bnpp^3Pj?Ki0x6-R0i1m-bboBSB1e`-p+&C?9CZ1viQH+G6#l!$(|-<G4vbsBE34q2ywm{6bG$UO zyDB+2YT7nf~woP!~wnf2WYT zKo(3^I1&iBu1_fx){5%KCA~Ee%+$sK79iIQr_y*m>t2R^tSdD^biTkW@s77`qu?2K zU7r^ao~1n4shj~6;P~5Xw=o%$_Wp_UKA4(JF$%FD_tpw8#%^5!Zi@XGe*h{lo5$h-iRAu5q;Sqm98 zYN#qyf<%ZAA2?WWK#{`-5-BdFC|2$mx^d`Qq{tv4#f}ybGa{-(%0tzuxaBx5&1Ca~MVS2xyl)_RDhFra9QS6d? zM9U0qWUoRbp=6&HdG-1TQhH8WX~l~oito5A!Ww2T~jHNL(Yv;&LdI?TZWs#4?l<`DF<7| z)a02pE#U3~)ln1yO(k$p009Fikb+K37KMnKOA*18pMbU?ReSYSh0LPI)aUSvT4hCv zBo89Oq##F4S_&}vb@G&_f`CkfU80W4%7rMG>I-1ts4zo_B93^Xt&yOUVXIvuIWGo5=bzw0`5MrzylG`&Gx+Y4j_O43aIb_caK<*l+_Xl!jlCV8T>G?f@rlU z;}zZq6IY7}!rvpNWGogVnuqKuT@12Cmnx*2Tq<8F^CE1Jw|-cntB!5GkFWS}j1OU} z^Za9B?Ce#~D7?diE3c$63XZSC8(pDVC1|o&a~DM#6HgqJfEhVTH|%vfgn%2i1R0Ff zCq*++6mM{a3+y)AL(P^G_YbA(_Epd;tEEHY(d=^*~m&4A&yZ9WvBs0BJ@)r)vyQ})Q}RDXorlz{uG8E zG0KsP78XKc%qV!m`qi;^h8vw74Q0$@*&>?r5Sf@y0qD^O_Ogel8?EqLVFS(rv=o6h zDS#ppxPU_}g02jZM*>TcfSN3D0SUw@QeL^11Hfk{F!Cv2hTDk(KAO`%84Qp{Mko=~K!Y0`;A(s$LG z_zzI8#AAT0BAPv-3ZC^?M0#$x$z&{|t(Idb2^<)k*pBSq6vJgrps< zX^CK3^LSGOl`{wSnz7N|c%~jXF;7p7y4&BnE2#@0z}^J#+Zrn%i(~o@`j!%$omiJA zP%R2Jzr&OZG{=n0?Fj{B;2wu5BVwIEXXCbOpp9%~6aHn1C?yUXNb(9Y5^2$E1?5ZT zy6|)?^#Y*j_wVqNo_!D}yxXVubZabT*J` znis82Y}m9K(54w5_{whSIY#xWsxxbx)TAOHxJZTZ0*s<#9OH>RN@-i&+~okfsVT=k zeX5-TcG@HAOJN)PBs~5YpkG)S%OV6GmjV0MFt?Si^2O_W<@>2K%Y~q}$mDw4yopN8 z6U@a12% zstdsS5*>9KS(I!{Rvzj4~c z&`@G(-jt(HI1OAF%k2Rd$QUb7^1z8la7#Yb65yl8OQU=seT;CxcVt?fLQL6s2}b#M zp==gHw0t=LX6Gj3TsaijbA+Iu3#Z(BSDrHnNs?p>eOr;5V3=^8His*J3j!=E85+;1 z^oR;vkjidvwCgCc5Tk+*@2Af`Act=LS)FMJZ-llK1!RY*wZ_8De}p0`=dcmeJRbsY zt~k^LxT0_s@Bp~c%{z%pQVJrnx%+ASVh>R$A|ZkrBjl~@(EZEm+fydZXH|k<%!V5>mim2o7a)F<1U`#YPYcq-=QQ3XBvoeK>kQXJ&jQ7vRu&uJ=)0CUbLz zb-nN+wMTWgvKvI>7n5aH1a?qM$8;NGD&@s)Ky!k}l505l2^ydPr$q!J;Dgks3Ep)M zL`ZeK(h!c|O-iT$4A5x_KvPX$&_Mw} z5fn7x0RES9>@+|b(S~jq480bIFqeUnAaflkXA|Rx$`*is2!W?3Nf&g11cr$Jl@$OH zdkuANkJxl})^#~!4j*`6oj7~zMrV%5IyiGueFQ{Sry8XQeLEN)+_Z|;!cCzN5>_FL zv-lMvV2d@u0KMn{hW?OLinjpk!#2ny7RU$@D9KBe;t-WmL^#nea)(457Zf!S0HbIZn8qlaIkkQRzIPvK>ca}{h9 zVhY?AZoAVnoQOjKIgc2UGOI*NCWV&H5`4{*3nid~9B=|C>4V%v0xh#N=u{&-1rZyW zgdIr$2_TpX01+a&Tnn%^P^Bf!0XJu<;@K%o;hsQ?tf9@xlE zRI!cg)Q#ZKYnbP23n_Ey6?$CpAArJ7PFYv-#R^jiL3Gu526Yzn1W{k{D8QqMY*BmK zm2PLDSetc2{^z!J$Jvzy`HIVFDi(G?JcXB_KmywY368mn5*a5N!Xw<~c|Fwu8h`;4 z00Fp|0O~2298f1lRUL4nm{H{&j>#k!vwnU@nTUXeVbLE~=v3uI9W^02Dur2x@N56Y z3j$IWYjuwI^j71TfCB+hNAe2p;VDzWDaz&`GH{!?$p|+mkUzPIzIh73^Lm#uV9)Yk z%_1}{I*WLtAZPn>{1Y!b@Z~{jGJ=U^{6e&^$Ml5|90vlFdCXU_Kl8)=?P*re;30Q}bi z7C@`;DKB7TWQ|Eq8YeYgYMIl=e&N!X%rO!08EQx+HH<=e6Z3zj8JvlVsDq$%_SAt2 z_+56Ijt$~o4``cXRx#z6Yr8Ojy{Rd{X`n!~sGW$ML35mCWl66WqllHMpLihZ)|PU} zbY>w}F%SYK@Bsnqk`dvmrfPP0xks;sD7+#)+cW{^*`(e3`!#7h$gc=h)j)&YL#;jCG)Fs0dg76PY%fttAqp%O|lVP>IySTTFrDL?0- zbc(K=q;BhWt~JM-ZSiiH(yp;|4>2fG0^xe|Y9a50sYLmLo~Riv#HPBiA4CuXL;$J= z8v;F5ss_7}AmEDau&}6cgi8vsOBlBb0Hp`8vWtMRR<)~PvA5(zPTJ{%oRbOkhb}#6 zH8jzLoR&n9V{N86BNFo!odh6T2BJ2rUN|cV>3FA$^gl~Efk+YyKuf2jfUP1ry5o4X zw)0Sr@@^6%hY|yW^XhGU@fV+Xm2F9`$9bc=d!t?J6)`{ppbDxSFt9igy#63y0voUa zCQvyHb7DKyJk)nu6Tkorpq>nXi@$XM4sfQ6kg@Co9zDp4jTx-HN<{W)pJ8z}nOPH? zR%0uBDwUw1Xpy_FD39nxxh0gFt+}m$*pw5rp*}k@JqIcjbBLc;mC=fa4Pl~a0eX%L zXtS#e{{f?X^uWxyU~NjTfF!BvO09wc3JvkQF#xInE3ks=k|r>`pb7#T00Lj}588vI z&9kIBsD#y<03PX)gISnX7MB?-M!s5?U%Hb0xjE?Tj9#QBdSbW(S7V5?Jd-zoei1G5 zWFZi0JNkjYl`E%mDMUwXa=M#e=BmApR8!Ts#bvrwEs`z^jX1l}nvl=U^ZFNwk}5%Q=wL zX`?YJ$23Z*sR4PPa085d$Rg|z|4IZm@Xqke0`fcpk8A?0RSw!R4)s6+rD|FeKm?qu z!=8*pMuI?0f<@`OpGL+U8n-3j0X_RUCgjvq*CaURp(ZQ-R%0OfL6TcZ`*jK!QjY)@ zR};FwlpD-`Xce4`rzLEo`-FD$QB8b z(qG(2#q83@9CT?G3p4FNb~tBn>8V`t#>2pxXlam&NZ2pP(X(5l%VX52{lO<{pu7Op zERX|LeFMP20|WupJ#f`m?bJ@a3Hi(eE5HLPzytm$Alxw^0_3?(fa#E+B)+iLjLqRi3tb9YI8CY5Hf?i6HpY#v7nHL*3Dt&x)tnv=6nlllX2P7IbFq%x zIy!mbR})HCohp0s%cFC(*^QPTZIwEjsK*yP+PPbFRI8BJoZ6MN+6j&VQT@(>(8y5D z1Dqh-z|8|U&;uOa12^CUx&6+=-3`&;+ZjIG!#&l;?ay&by~}OA3;+QWP!`lY5k<_3 zg||7_ZFpXaCpUqaVJI+)CvasQehof{;_ZoP>_Q3qRtSRFhxHYG2b?>{hf5i*EGpqd1DxNA1pZ9trTQ;Y5JpJir4l zpy3_<=N|sfeC`c4u;&^c+atW<9EqOIjlI+>DZWjD2;e~;;ERmmF(zJt zB{G43RwZ}4DBf>w$K`F6q=1)e+&Ec$x=}8=D*ZoUjJXo%*mbcA1f1o7)!z^m;2>O2 z4Q0i4=;o(=)Pt<906KzTg~PyYOn^6P^Q%Am|?M;fB8Fg}-t8}N4L#83h#mup z{}nU)8uMOLN{^!}A^W6^Ugw6v!aOm$$?m{2QFQ}+_w?oFHY5-X3{4~rg-N$0S=%6w0x*D8tezJ3uH@d=Jo13 zofdtU%d>u`@3GRvJQb>-5E&l{EwFjLoQIodz^ySGt83<*RNAb&^1fisAC%3>ZgoUG z&f$Eu5H1Ka56LDV^K|a>IG^*LU*R{9?b~kXHz4#Qoai7>p65vf3=kCP=>VK;y$~R( z@%Io7rsYzaa~D&E>(*Ao%8ojnl)vz z{D|^ZJDkaJ@>EVje5BbPZH z9oNr2ww1HbM)r87kwp_(M9_)_S%jKutGz~qYc%qNQAj5CLyk_&;WW}^CuY>!GRFCc z;d8xF2I4utO-9^f&uL_&I4`_lgCIR%_k$2Z{E!`X-Hk_PnU`E*iB>FN0vDR)vDXy{ z8^9Oe1f`HwA6Xl`QeIp8!9@!_z4&t12Olh>R|d-{xF9kV5awVu**JiT0vc$5fd)hZ z1RM&sc&g!K!fg z^QpqX1RHSGA1tnDbwa(qkN^x3h92tgp~Jkg;4zF!5WzAIT)MCWidDz~P{2Bip*_Vu z=1vMFXk4m3&t;_QKMPe<5sL)D+K@uC=3-;ZIN}rCt|6jxlW^hiM)PL-)QoJEJ}2v2 z&mVWB6RDg!w~>)5phQ(6LAM}&N- zz&k+&9qT&5-3PmVUbodAq4V898b_PMJ8=I7kh~QnWvc{ ztsFifg&a_gFfxSl$pmRW5Unl07SZRNT~1qOw)q+l%{e`*BXXYB#Ho|6Yet)o6f;Y- zI435X`b{case%eTSldXpM0C0B4^%Ic6xL4hWTv_OnLtF`*^?_m_hYLoXW3?-t@c?E zRNyuXBfyRQD>yIkKo*@6(u7$u44$$)0z*g!Nl3zq zVFyoyjvIE12s!|NK!Crn!4H=4rC0W_Don}Yl$-*$94HY^P267lpa{MV$SHhPykZ3~ zPytb}4SgPf0S&$w#xc^ZEgv|6pzc+_opipi1)u0LxpU6s1jWt`T7lI>jr@vbJ%4AVeSP6=O)bv77}9A0djF zC@+_+*qnwZ6TILna&Zt0rqwl`JKfHx%8%yIER&}4%+7wa&>c0@lavJIPCVHXggU0K zr(DjJc6dXn{iAtQo260!;sYM|fC!Vtn)FVZgOjp=2%B97oQMM2?@2MH;;TT}Ol#8y zx~%FfIU22c=>ZtNt)tC_=zjCox829MRBa zOqIfXcvYe#8f3>%ma=5Ys8;zjt04iZqumHHTKdSZC_Ds;zCkLI^}?o)AJ>6`)zxvY6FuW{L6-_J9_&BNzb)JTOIJN|>~!MzzAOP+GlRIm;a!xEA$Z^e<@10M7Y3jnJP|)DdrW%J+3`wwn^qRmu5YBE=FU9 zx$0u>k*877SW`p6(y_HP7fc9hq!l~yYDRY`HZMFG7@S)$l)W=s;p#e>-g{&+qAV>lmFS^?GKl(lYKMu>g7y%WF1 zeeVNUieK@8LA_$B+n9g?>SQP5ioyXu!PQR4Tgi45%N+#rNA7^k$w5x*fu=hoi);~^ ze`GMN-%VP0sp>(SmG``-5+rc~%H=K(5F~%~ppQsYLg&zihHYM+)cD)q{;C5-^CF2;{ zKn12>0SXM5MFWC_5`A;BW65v;BtM>RvW84D2qKxtH7Z?`Yh~8hln9eh*6XII>pJv$ zRiNfzoF}=QByv2Lb|y(N&yby?bEM8wDqto4^Ax*g{)TiCkM$O3GmGsx_Y?*P_O|-A z4ekc(c~4A_X`gGlrw*$-&^rYPY<=3&Wt?~|v7p5={&gs0>^nlHPz)$u0Tv9Tfef6t1I#GI>bO(E->E-70o?apK z+9T(1NIt76u12u*Ph3LlhYJM};QfiyL>GCLCK}2uXcoVHN)2y#@$& zW8?RdsfJauwvoj>CL+QQDc3m4)#Cmc&(($IOu%}59q!@^N_&t{CzxLj$@4Z2Hn0QC z12oT;9Yl0XyTmov#(E9N0@`+TpcPvUrgRThd!+RWQI~s!wtFzZ6Njcg?Lk|>2Yhuy zR3h*JBEU@@U;!e44VX3o%?EJoq5+nHQG=yU4CFWp=VM8;eNzHtomNjprZOgTE1^Sv zYE>E*H$S%qR=Bbwc~yB(hER;x5hHOi^VCATF>^J88SbzTBJpJ*p?LfPFv1W5FK~09 z_Z-jmU)nKJQ=)*pG!!EMdkfZjv2}C}HgxKvbP(nNwdVn4^K{FQdsDZ2H{gN2Ct`2| z0wgF@B^UxHpn~1Q0iK|IcK(t!n)p-@02UBHaKXY6FY#9kG%fuQF>j}X-A5&t<8VWG zPbw3OOlE}iR}pW;aZ{E;h&L?!P=!`lP^4I9K$CeVk$pK*Nu*MRV<-~zz;*}%ATD47 zZkQ}?_=W%m5bc9KZ~_8cL4jWcj(GTht;b+}NP&MCh#N47eD)8A$blXBfmi2N$BCox9t=QmBQjBLXHk}OieFe8Q-)$6QyC*?IuHaSvB)BgWDpU7 zkq-e77|Aj&rz`3wNt8EFAmfUirg>EM97Bd<9(QcYSSr!Mc74Mj&2VoTl^sFEW(8<~ z*|8mul}kwESzRGE{^$5%9tc{TMFc+8hhOA};7F7n0F|^?h_Ap}RXKHT;{iLhh#~e& ze8@iZ$aR$1J@?o>9e{S+(2trJa5NT!Y8QRGv2q{egKl>j9Kc+Dgk{V4aHy6MPZoZz zW-!v34!YKMRxd<>-Z1s2AsjUZs?y?AxeQzIf#J< z0T_lSYeOHyr5LQGjv&xsNeO#VDJMkWQd44Ei$;S4cXj|r1n*H}hM|T2z&NF{kV#XX z_XkLf34~8bSB}#m76EJZ)JXEFNCR=0|F8oD>Q$(+ewxXj41{V?=1}z&I|J&G1|@yG zW({scFpTmX%J2a<1O!1~13`eAsac_`Nfkh6M870O=|ThzmZ*!0l*>?}2!^8J29-qM zqIv$JMVG2Yqfi0XfNss?1H>sl6VL$i(gD&05MfCK9ngH2LMKJqmSGVee}f>r6#~2R z97}3=_xGd)hkob@Pa@|pUk5O?+L=X&PZf~@V|>`V`;J003XW` zgLR}B8t@k~37X3=tG^I3aAlryN0PmolD$R`wqTiG7p#YJD9H5+9Mb|gz^u!#1O7O0 zm@H!uuh@Q<2@|@gf0l_}(KRH~2T$JFvj4!KQ_G;^dam{+3?FaH?Ks!K3Z-93M8DlDeW{K?DYSw+V2!d#kr+F-Hq)c4|pu#`PX% z`3e`iv0@~a%b==7x{1v<3Wg&A!_rvvG<*n5JOGo__>G0uz&m0)9VR z0~7HA*!7AWa@`hBnZ7xMr!bjBBwN&;g-fq@&;fj#9Fr*$l`~uA;dp|2wP#N`>L|w7>X}reg~o zVsajXTpZ*JHSkI`@TCT^0z@bfM4Pfk%T*1hDnxra&_RZ{$PS7vMT) z%%E(1r&(*fI&8x?46jqdUpvghJ_S?xtd8n9B}mMoFse*ve76U% zw@)=kd26s*w95ye%L*I0F*pHcX}G7Fs`Kl`cB`EX5CLw?45A6gZ;Z{NX}OC67`C`C z3RFrYldL=eYZN3w&PoIujL5}Pa|%&&{>f`Q^Pf5>NgnKQoxxnc;JVJxH_-6A-OS1V zOTau)3|SikG;GR2K#luliwT{|sO-brVMN^s5HiIs$eeaFRbi-wfjkkFTok_QyEeXj z0K^eyJ6!$+Gth7h(AiAQ<+{Q$$;tF* zAkg?6Ci6hD;$(`1m=jbyEuaD^P&}Sfb9|Y1Z^cj^f{=STX1{ZwnoPA-yS&}}55{MF zGK|nVywHD|&|I6!5iJM#BC?84H+6))60B|tsEmHWSz`@)#4pyvv_2(qNIXbUt_ zWdAVL?|cg#(#}s?4`Yg6joh@phB?hhLYcuY2^zeDB!=1B8HV~1)Ik938hdCDz zEElrRqr2`wyeA*eg9205N0ut>0b@aIcyG z#I@xp{@K*rP2-BmFWe|sE42xJ;8&ZaN0zKa$afqv+YemT4c@CkIA+=EP`1qz5fA}? zLoi~U;>1nX#|_YcvEs}P0yhBT&uxtY{x;n_36aX>Q{S|;ZiqCj?j!jNaX4U}&&slwY_<|RJb3r>H)K51Fo;>Nq^ zeL9UZ{^$u!1gX3XS~A!FP}jGY(1`4;O;quJ$2n@I|{N;p7o|4%w$m~5+A;i3)5#j_=#YUcFQy$m+~ zG+F{QRpht;fA9`}7A0K(8}{}74KHU*3NhW@Vo%Jp5}yK{!?4{#J>1)(fI8D;6y0-=@93)paNLhz*#Nr z@z+4jKo~s_wxACP6hwoAf`t@@gccTrM2v%rk&BKO92_S%KtY>9K%Rq}pq!(mrJ+Qg zpFKV|tvM_vARvtxwHQPY6A%y#y$K1uM7<2Z2gU^qL=(%q5V+1nzrqa8z6Z{`gTT(x z)4_zv&$x}jzX{&o+U5t~)XRg^yXFiE5|a1$kCBdz{r*IP0sxL>@Q*t z@=eMI316Y30}VbB7+N9E&>Mb{cLx@a+TwZ_`3VY1xKJ7$QZLW!R4m-;7A zoyb8q%E>%Zr5jB3^0!oF~9)G=vnAH{_&C)1DWw-)RK}`+RtW|7FncF zKP9&sMy=hpkx46VG#e2pprq=HCD|yPPl*`xqd_9>1fr(65@o>!4iUit4^5@wgC|i& zW#yGp64Ar5THVm4315me7JX&amslgl;Id4cx(p&0A!R*d?VaGhn5rAHQdMpi~|%*!l9%Z{*&Rr{v7#XhanOnfdq(fKpSf$xmNK; zGj(K!OLO#&v7mvLgaCuk}7J8t&K_>s)VHaDN4khObDlp zbjq+#xBjiEX9!Qi0SUo+f>q9)@T`ebIZLTJvql>Y%U9#khxOI><)TZ}*tq`l4q}TD z6PaFY5%L$@>PfTKeuDyvZGnb0Gw3hHKPCX8>bc!Wf5I$SOaYlmf@I7vhYtzNd=r;> zuCNL|BdI5insKO$qmb$#j^_sXA+XvS>u{hU^cmnjA_xGUvU4~gpFq(0; zd73X%u?mMl=(ELIpdV9RZujEMP@Rp6~zx#@+;i^ z%!j!Fy6i|K5@5reNI=dY$ydMv!YZ&bEC$+4Xb}`vcZkM1qs720u>LDg2u2=gYgIqg2k%UV2uh?f}dMTJ>o2cFV3LV2h|J$IrW@(T4Bb_^;l2ylQBB|)k2 zHRnP{RM@M6W15B43UD)`;z(pf#f`N<1tO83{MrXOSw?P1=hGD6XthK!o<>7=>kJ2G zU;{O>k%7~RN*vWlN3GPc6(ooO2|^G95p|HeS#DIV*sGKTX2cDwZJ4_OSURm2J z*Sxk>boD1v;uDbG5N4^C{f(8C17?XNX9!iz5~H+~kw^N`QIPr7mq9Y7a26I=R*F=u z4^@N)KG4#dN-3t0jj2sh(Le?5a1UGFw|E8ItZ|$ zEp0YDz;Fwg#O0W{#HMrvt-Q#}(wwZK-c5*I?bplPOtCh(>??P-DAL0M$Hgr^iuY8C zkAP7?0|#76detks_G0A*?rj}><*UsSsNe-JP{9c}YnkU=Mlowy&)V8ULS^6%sJ0^^ z2TN2kT;mogv6C}qac&i4{F#)b zg=^LN?#jN9s0Kdq(7}cylT3Tao^m#DNcxKz=b`vXi4Mu`NB=dWSs4n`C6qG=_jmRjgOv>qUqo&^< zk^~}>Y-;)OpahOxBUWJG1BN>sz7Tiyt51z(8OR_7A>iyF>*JU+6+i$2@b#G8A>cRN z4#41|A(%Tk=Z?FXJ;zI)^2)ld15gjF3DU483BYqhAqrdEM%S|cQh?zaBC+CqE9Ro> z=;W*n$ShmgX|%|yE$%ztxwJPCLjF(!T7GIoFgB972P><7@6X5@DD`|%P=Xk6v!)ev z77JeS-iS+_>nOOgtYtug4osjg^Weog*dp4H`?`2&ev_~R^jfvBh(09cPj^yA{#YH;eFXn0AwZvIV<5mc{k6e+Tz z?23dXq`K%q5PjlJ0U6-yPP^JwQUaag2nBVwdwlT-i|U^`?<%NB3APM)mQUz0g$KFe z5C5oLfDmfRII2Jb6@^GZVEM5NIvC(~Rj{sw{R14g(TAS64+@$97$367=R)#Dsi+vp0q|A|H}= zA244l!A&8sf;i%K)b~1gS@nP-Kdp?P@5dDo*th{9)mMoyj-Xj`}*0Z0I|!hoK} zfKexPK=OL4G=ZPiKKbTRnbr>+vt9KzX|6Pa$d@pjlWvBf0lu<)D&c}Bu!0}ph#%01 zCJ+L66dqs#0$vdl@^fWAn0F=c0UFR3-{*KAmxN4sRsB>JAS54+;7;BLf4yaeY$IB+ zxLdZEZCll6{g7?`128?E7go{sdDS+HgRnNz27qgWDE06#H_?m^6J49eZiVG~A3}#Q z23?;vf;EUis%x~*N7j$0Ue+L4ln^#S(VGs029z8EO=^`^^M=C z0we&6e@FfRp~rJpWrpy_a_eGjCq#vx6p?8eNm@vevjtXO=v2xERvKAty6BPq0ETw9 zkrM`TB`HZCmyF670S*uWj!6WL838RxGW~-ZFlmiTWR3n)c0J(`;+T_?ribnGjf}HP zJlT3-rwALeH+`d;Mr1}vS!yw{O($>(k64fOIF9Ds<2SLaLi_JNnijbs;0N{LK{MsA*w0hXY4 zA^y;a^=JvW$y2*|k3zVWOR*AdrxI?rh#xSOLYN=~z?|Y&q9Qjv&N*A}*M3#FqG_oh zW`&WnNRsu3U_?=dWkr9&NR0Q=XFdvYy4YLPHhDU#p2?`5NZN}z3X;8eP(%QqjVYgx zIhic!lFr2`aHt#uM~yB+UA)9Tji3=-H>UO02=wW1&1FgmN_?$J1eNfJa2kmmfSVdH zl|0p;4H}9HupnvIl~0Ky5Za&$0Fu*FqDLrxNw|c}Ns?$XP-azyb{VM^Ihfc&6o{## z_d;zm8jL+^q!XrW0??h&#*ujGbLdH^%GeK38l{m*rBr%S>o$7>^njM>V*FWk{=7F! z8`uw|Ii>>|MQ4hpMuMOWlVS`Sr;muIc#4lzSykww0DZc3E(oYE*ob+m03(X1%gJ*H zaGbrEsNkBY;TBBE0`9ntk&?`T=ZxEZSyvKHfK$^;7r4c1kYg(*G;iehDpa8+F z@2LPJYk4Eui*Dlp4oa<&XabK|n^M^%*}9wvumB6-01w~*5JLgjIsoDNv*4PHR){Dl z%A7`vu3&hPNJ?#;YO2f`hK*pa9!aFwR#wevuSY>I#<-DcIAKj&j6jM#Y1u}5bVXNQ^NHiuhks~*xT5PKUKaX2l~B4hfEruh#TtFVWbj%r0dZdy^s$)wd| zsLMHAa0-uG*N9Ll0#Rv?1M8R%6EI7;lo2qZK-;&{%Hj z77#F&2)#0n6LT@4@*1)PmcQB$F6oT3hbwE9D?I@Hq&CMreaju+M0j`9oNjsWO`xla1gIF@X^;Vz=%?MG>L5 zMBuAG=?~po!c4b0fIF;5v=Ae!00>}^1qrYj>Nsr&kMNkRmaq_Ox)TwA0RAhk0DQ%t zOTbJ!nDj@q;;F!fs=J++sR00b5$q3tS-Kp_x?by-#b~4ooT$Frt$abUB>SWv9KziD zs?O_r&{YUCnZmPjnaJ@QGEu!9aUvRcx7q8fN3p}nJ8rRRV&T@qpfSFtApuefpG~r| zzrn;#Ouq>Q#ra@lOGyC|pa4hsx%vvUA@|By475vIwEnWIqg8B*;s=1NO9-$0#)IH% zL}8dm`is2eLBGV)==%JIl2pX^x`g;%fi_eJgFsiJC0RYDe+z;%E zwZBXRvHZVate#4Wq>0MQ1q_DTiiEQahD3X+TYH|nC9k;q%ciKz+}g}`ys80Pydi9* z4QRp%d%}|phmDp9F`-xOlMz)H!>qEm7R#&0OETx|hWu8JX{w+^roRc1rz$wP_bem= zcfT;H$y1EAS`5`-tHq#^(4N~553Qa*>&pZ!{?O-nJ$=TmfvJQchtOsn(BWFN$hpjS ze6vtW2+=H=JIp_RynucDymjrzZ`BeqfieFn!+Nzi4FINTNo^Djw!lo< zKMSNF&CDcwvp4$yIcvOe-Kvy1!X&e4wU^f^O-x4i(~0nb)|GFzA=89F&NmF*&yCoT z>?0D0*US4dWt7kNYZ~_~*@BG9JG&E_EuRXI+8A7@ovobg9nt5A)q#V{1#Qqq3SJ%k z4{42}$l0xStN?DEv%3w#y)D;-fV?jLNmA5!pMq$P$RRQ%F)@D#u@@r~AIK7g%{X0G zrHWnPJZ@=3fx*uMg;-kqJKJv!fTtgr9gZ%If9 zJATkO&dWNU-_x_-wr#TxVC1@;h@A+` zh>bM~dv3@RIWZhYh7bbRfCk>%Bn_Vk@TrEXoKc;ms6F2Woa1=zj4?qM;9>Tp1naNAS91bxc65Pw{W0lE`zT|aB;f^tlX^q3>JT1wNW{1Lh!laQQ zEko2h&El-e=54;}ZBE2b``P|7KDwXRw4g2Pd4B7I7|=kDqJ*&4M8M31An1c$=t-{I zh<>)fZQy2lxr|25g%vnd{-1h9!;L`U)!vhbz39(a-E$RzC^$@X$Zm?T5KbKdx{b5& zNwP!S-$JC@ZzH-lHTc*62OZxc=`)q3aRMv_a}aYkhgl47@}j z>2&tF6)zU|H?ZZLuX_@!o5u?)G|M zUz2*>2qNs5NnZ0dZ}a`l-wFTsfFJnGoSZ+ZzV|NloX2_kj@m{m=X;Ly$`RW~q23gH zPxg0zeoF{+4D9_-^}-JEp#K2oE}t8ow$#n(Q2t{-{f5Hv0RUQQ-4#XF{@iI#rr&7s zBUOQe^Ggm0_B|4rIGeLae&l>lvVwp7$9bH;yZldYf9xH)C>!(^&G<&EVUK@~7reB} zk=plidClMSmaiO9|BQ4D8lJ!Ko=@ybF8amW=v$A%lAdnDRGF_IMKi`eYaiX?EI(kW z;g1ZBfIuNg{y|hINJLnOILLU|n21Ou5kVR8aOtq%punks@Ch1;oZH>G@AvZ5yh{Xwgtfi6R|`vYeuGm&!dzr*2|JijoXDLY7aS$7JoGxmzbG#6N%m+xiVewpmqPng!U zJ^c(?nNb7_jutXKR9v{Jg}haziY{xRtrfdwRD=@F51*7 zXz{IA^Pl?KRYYJF0XupD*H?BxQ81P@e9;D>T5|Ps&~R@h^G{xN*+mz0ig0ycSs&V? zojvkw$6#RI8J3ba3Z%5yc;z{UUSuxuf+H$9@=~56?h)0CX{aFu4r!g0CXOOWCOQ5e zEB_5CA5>B<@W6lOR7K8!1QrP4S%-wiAX2`CC?bV&9Wh!DrP84 z=ee|!DD4$G8kC|%1LXrdYLtRy6j48WJHi#IETp!(siQv+M| zu$W|`$k^m@J>zMgi0v^EiHXNaQM^2)8HR%zR=!winwa9ioAIh`OC7&s-teUJ8&lcC zXML+vG9c%>TUn?e#ZlAr)*>tHWls?R`_Yf)w2u>EhgV+$ALj7nC-0!ETn`J64R3hE zD2dC4HO!%)dU!tD`R{cH{GrNTwm-OagND{njeG)_B`htFf$ADio!&7y3Pu89$fykk zmzP0SSO9uN8=B#y2SQdXZgEI!qpa9ih+_<68p>nGUvQ(sc_=J%Sh>m!J@v=A0fm3& z0%8tj=R_qIa#Q;$ho;_kF4w3GcWKMgm2{UbtkexFlc)&(4DD#0U4dnCU6c;xl)=E@ zvEl;IQxjXxXr{HSQH0lH+z6549@lW`9wY*Z3qOK9bv^DiF|%au$kDPODieqH8=?{^ zdBjS7hLF;Ph9FU?rA;odUG3nTynNO(c;QN%T2urW!N^MDxXL((LsKnhdA&l+5-4+o zMm6{YxxqQ2BZb(A_&WK!PZ0=9Q8cD9u;fUngr`alYiL0oT113Cba$)?U_=Rs!D?F5 zq1KQnHn(XvZkFjQc6^|_^de0%rs+Z~T@wkD2G2IO@s>jwMm;&xMM>z4BjD4MumIXX zyKNJpM8)I`|Hn|?&2XtqJx3IqIx|d0F{71)=0X068OVYH1*F=9oG1@8Dv~yhB78d~ zQmCrDb*^+E#)*qO;mO8$VlQRKC?IQCcnAv&&Yz$BX@P<&%!X10s!p{El?aR2tSS|& z9<>TuH7b<3Ni?g}WQFj|c{h`4Wg?77Aw6`Z({|Zrt8@d3(bm+`4&EZJaBN&_Ahr-63mtEczyJ}K*0aJxz?TW5W zTFy!#?o8~QkkH;rOL@MO2q8dQ00dB1^gfD+TKVKBxkQ-V0#=~ju|&guyHws$G=Y~q z*CnBdlukYNY*7901)VEAp&rP+ed5#34Ab!-E?RcNr4>pmjrNugrU|@r1=y@gu(KeCz8+&FMGBehltp4T`{tGB1J4eabcOO2~B;@m!YZXm9~( z%;q9k!Idi*y`Z+8oY@Pd4>o6CQdwbWv_Qk^>~254JJWe01jHl0MTzSffD;2l7d~>& zQQ)iFPHyF|F9sg>imc724tAK9yzE_B13annFUH2LtTm|WRD)(2kbjhFNVD=g5fQAL zz>*r!m?m0_P;t>1QpA>T@!ghgScG%MO9%@Q2mm4Z1O*5HL;x%R0001x0pS1u2mXLW zf`TN4g@PrCL?uLriI0$sh>?_vD3_R-nwyz}o}QP2ouHqkL@Jm>p{k~)DzC4tvZg4e zjJ2$yttz6ay_d1PytALMu!EYUvz)8A$j-#k(!Y|PB#*OtPlt=AdwdbUnpG2u%W|+L}tiRIHO|4QWj^~ zAYx-9M~~Am%G!9*Q$>ZI5Xw_22;oJG5;=afF@xgFjvzyN@`#h9#F&E+s$?1T;YFbi zbt*08LSa*)A?Bfsc#vPdq79oqWjIKNS3xp7$*55(Y$>v{^j$TE&!0f6{{2`IjH|HV zK%oh_=6(1uV$PHiOPUNEb866@f;Q5eh8QGFnLa<2#LIFZ)tDIvmBe{6X3vgGcP8!# z6DZZ7k_!tyD%WP{r3~XWZ80xI)fX;g#{ju)TL?7j}M+tJcFmqkctJ>BySq0e3M5L=F)fBrAC@R z-4tJZ(tyMhXr;A6RABP0R@iMq)g%#l6b87SQh3RbTW&6mtljx6X`2!t4@;rLgqth7n9h-n*#o&>r2^LL7Un=#Jmkp){ z5s;WN$dZ#D`6p#_rbrZKVy1-k(qlsfhvll4$~j_qeIcb_bxxT$7d?Cm6;C>C@h9X~ z3wbD(q0TASN};phxK=ET?lX|2-qK^0xco)4Ady;n=ig;7WjRZFn#KF6UpEnRs=cMI zDq2;bzBlWuU6S-^yZPuW;>b43|ZxCtwjiG2Qg`&LWS?I@Lk9Xd2tS42?D zTv#7hOK8X_yVC3_+-|HExiFI}sa@%2dM<4Ij!E#8?~;iUu1vl+YQ3icX=%;f6q9D?XEVjCxS}iJ>{4&n-M;0j=rl$!XP0zySbyswlnbVpw zSy9VM8r6xT$MvtRp-EMc91HoiTys{%p={UP)$u7hiraR_v4xzXwJ6suR#?s%x{Kbp zcMCYUGYhUe;g^;vJ=W|h9#Vp+S^qeK?Ga7+N&ZJOg1M^le&k)dkjYd-=#WwF5vLZO zzL%z3YaV-1VE3gt?3e$!5T*J+h}uNd3b(!OW+@`e+?4aQkm1b}!w^ISb;q9x!sU4} zo1VEK#Ja*wa+wx%BAFIBs>X5CZiJ145Bgdabwsvh`7xKg>jM_%?mJV&h6SThuCCn= zaV>=9i0*?u5h~J1Z>riX85E`{y{A-cilyO@=%hb_>OjBjCC>m4gd<%)v>85c)cJW|rgGNou`EOxQVa;*|+tK;C! z`lvbW1yhEmyHI(OCdf}1@+S}zrUtXrONvPCju1Vl=$Pp*z{IaGYBEn6GuJ_{ZM29- zlosj^0xb{m;x2s?<83x+3Td^#lXQz)7C&K@27XQ!CpCpV=czKDjuD?Cd6?y>hb4ci zi<*xMkTatxy7ZY(UJ1PyzK}@%l_=4KK1s@nGNneEhyL`E8z(;X?)BReeLUVhD#Pz?gJX)8muv32F64MBe6hQ?5WZ^O|c@?BE6dBQP3AF z!sN1!D%5JIR*SR7PE=r*&13fpS}M~D(lM=t$u)=Ck|QZ>pV*YD{RD`TvfXS!x&6^= zeEVBdRLePgn;;4zsE_^yv&DiDd~jiPE4{K#l3_l4EMfF}su>J~yUxUJl_vU2^O;7W ze2krFGdH>JEon?L$>CS~S=s6iH9~>8uf2k$Mo+-aDZCTuTED1L0yYv|OZnIWy;xY> zL1P}7c<^$GOhySp*JwygNd5++|!g!rjojV*~g(m%j#f| z^xhb%N4|+9C|2x?<<5q*vH0`xng;!$dhjP>x=jjg>N<^@h7wl97zQtp>kVK?8AsB{ zsSsgl80u~|S3fJ#eLFYiCLwgJ?eXPKC<@Kk={UP?CJCJ1SIiPCbxNwvCsy-=;m0k6 z&#>+6e1km*C;s}EiGaa$q*S`Av6Tyx!yO(?iNRMUTN#zE=&7XdsZ%u%le(M@bacU8 zwD=9WG~cBU(Il7Ver^=Wra%nh(5=E1mI^a7q*8iL*AT&!l~b*rhLB%_lE4mvW;MDF zWo9RvwYq?0TSTXdti{*m2sc}Z{UVX0LD=Vj2VH1&VHL++-Bu{IE_bf%h)}4^Cr##$ z8NQOq#UvBFU{6Y+%8VW1Tcq_k#NW`QW4H?l?Lc#OD9K8Tjl%e{mVQDj56>%cgiNv) z!N}s)mX2Xx({Xbx?2WrZahAtDa#_?^Du_HEduJ$b@3JN+wONEx0G4vD(j7l08IaB{ zBkGX?{#{LU42@Qxcl5rMsd)?**ESm-QWW*JD|1s34!Rg=Y-cN53TA~fpvb!YvU!L* zE?k*&McIU)oz)+#^QsLg8OaV<7v=Jjfy};Mh~Dr*X`-sXTdUd6iylZ?0d?nrj~ji! zjYo=#6!r9k$>8Tkfp&XzC@0P$%v-(`xZt(~GmqS1!0x}FN8Ql%o3Ph>c{J^jqlKI* zAojM3k)NP6_KBg55~M;A-B@+d?l`q%POgzJ!9T#%9cv^)((p(m^;T~&4<6Dy`H*l! zBrG1%a4rCS)lxTj1w0iuc{s%~dy@++qixH@Q?<|x$Oa)IXG?HGfT?#lX2*A!QhVzD zWkT@P6IX)}IgvH-w*vCFHaQ{{WqAu`)ceaKT zIJkE!6gi_aQo=VYUl(wKU>pB%WSgZ=eTF}SGbbNd3On$KM6d&laXm&u5m;p_{b5Z= z_a`Od4|1n1S*Uno)kh_Vfl)VcazjPL#ewbwLC=*7ghgq}6+tB!3JZ2+9&{;YBVF!t zOeIzzCgl1MuBW^exK5ru$p ze5Lps{Iw8_a1WqpNuKsAPq7tiGAIzIMKgsm2X=YGkbOB-3yrvaQ&wrV$V5IzY$wz& z5hVyZP>|VZ3OWEzjD2gn^WBPSsVPkU^Hgu0O649^`IzW(~ zFp^JYdp1x5^!8SBrXjOq7*W9%|0FC?g%xn)j#3AG26lBEcZME#6{)aFGFgwSzzPO; zVbhputuT@%sf45PK8AP-ux4~Gr-Q!|k>rCvH?uLWHd|=2LvO@kWmb0h@?G*mXRTl$ z$YhdCNdzM~dF#V|CMN?nU@Kwae1?Hr&jx64N+q!D+tK0Yx65LXRT8Gf3im2~oW80cug^CGMWD>fBjwg`%-5R}L! zX&MI&+Q*iIV3J=#o5@s76_zS=rJ0s-nHlAoGk0V*Hz(m1e#*FltJR*nw3_&JWAn3x z?qUN8SrR039$+bt9sxCKd7S`C3|ggG=V6YYxmKL@j?s{uz;zsGaf|dYX{vM`zEC6M z;)7Mi-U4{={YzIfrsGhic}LpXQp3 z^?P#!EfnD*(jo)A8KgiO5kq=vRV9zD_z4FIl6moLBz1i77*n5gMcAU8PjeiW7NOgh zJP{fUcTo>TDGS$70vRPk_@;-bGHRliXYr?amx(pxX;IPRZC>MN>v@PYnxR)kWDFG3$&9OIEFA%Z4H!tmZTrG zAaf;Pgr8sta)*6~$%6FdYUd$TTd1aN!h^LCKqsmnBIbg8nWpJUdV}VkkA#_EH+&aK zequ=;Ly8)f zpf!*Tgg^upX$mq|i@p$oA9zp8sDdzRp0U)LL#J>kXcz-EpNlje3e!h{HI4lGFnT(p zZ%SXDg_=WFMO@<>cFCK!11~>eTSbFo3}-~sv;r>$H@k6y3m6dUxoH_Ped-i#;wpVR z`7|Lwh@?6Qk}wLcD3cqPU>GD!EtHy4ct3#%V5De2wI_bP`b(iHuo{$5nvt5agtSNH zqOufd+9VXrYA|LI6Jdc8TVy92LYzZkCyggb2$2rgF?inMiHq{7nYIER;vDEST&Q@d z)rS_h;0z^rgxRKs$n%Pu7M6b+qOB8_Nf`b>1lUi*+G7BF8W}dP=~9y;^?D`uw{;4f zWnm`~BQMhO63iMC9MZ7Lay47~l4z10L_sOf2@DuYWm2|aFTh39hF5|)3)RMkID!hA zr;mhHx|S9=TRKdA3Xnv#Q16*3vq~MlM@yEe7rdu-rb(8h$+wN`xT?9Dcgj!7VwY67 zy27y@n|nJ~s~-KO8_tTT9NR1$YgiUqx|+9Oru&@45OuYpveQ<5kXD#N_^z%{p)#{^ z7(%QQaW2piu+uZVCdyA2(i_C^c8>J2B>O`)y1>zURw%f6uls1!H^0(Z!eMHQLx_Y$SwXmim|=Ik3KdIQ zD7k{0nF4IUorW|U6?m+nWiN0IV79lf2ed>&6ntVLt|UT1+7uNLby~}gG6AHga#saJ zQbngZ4LG~6zz7jmWp!)6oAAEM@rBV>U|wWARyJwKg|7359gFFG`@^2-$(Kj-!J6S&D!F{FrE!LlGN4`)OJ_b5CC zMkVDBYY;*qt4BRfMeKDAjZrFC zMQZwA^9dUk?S}+$&2AIK%ZLw#p#L3b$Ol zq9kpQmw}qP6f?d44EURI!7xGMxwB`rs-H^G&@@iS#b~^GWmLUo#jG$_g3S4&s#%Sm zP0L{op)sw*Rz#{bpDR0mLb)JgTm5Cy3#TE?3chR24lQsF5LCDP*rouIKyAOYJ=x(~taogsGZwHT%cm(K?1*h{5(Z&vBIM!ZyLC#Ladt2(3?2MbWsL*_!x2 zffHDgG#OC0wNLsYqYSv@EO6#LaI`@iDj*JU9oKBwhWV_|&QP54OdM3o95=3X#&=5kE}V2O+S4*uOu+tz#@E+Ot35%&@W?f>!_g0;>mY; zSKqqL(ZaLcAsasair(z7-i8I+Yb>)WT)U}I3qOh+sVJrJi#NQz%d#yC?rO_AZDsgc z+z?!=;j&vH(PQ0_(98?nF{mb!ec;OY%oPrL#SD7SLt#KBC>I(t)qh*MOckmffBM{?N)-JC1chhG=+Vv(z~1ve8ZZrNkd#{$xz=3jT-{`D2l2|{^1j~(O|Hj`ykhTF8=4P0T)ebLKK;s+8%2s>UrsC#1OrF z!HHz*My+C;8(xc`bpj%8HGw|%0>dzH4NDBJz1}K64tD*@DIC!;u6g!%oKlKKn%qTn z9R6wb_{6mEAeo?J_zjo?zynzb!!QTKxrWk$DR*Ld7tn5yz>K( z3@oq9eXPir4k;{E_;kf+{i`L&URRGR5>0<-&;FuT=xMBj)RwP^!foJml{uUHFy@RK z-yZg7uP0jX!HasWt-b1Op8_gA=kw?KF+2Nu6`0ELa4($W4c7NO4vTqwi%zPefbb$n zBv?3DNR+rjw6d7^xPr*oIQd9u3CW0g_(IqT*+_{wdO1T%ib5*-DEYFQ_{qsS{uzq+ z3ESyN@D8tOmYtKANPgEnX=`Syxic#rM4Af=q(k)i9I&r$?NY_9{4i|;`hf5X4 zSl$-WdbJ54s#A>yc{;RcVJwHYTm_4C$kHc-y?%Xz_3Xuroz9L)vlQ*5PfI@^QFEnj zTQY|&UI6pO^ywlM14$%GftB1jOYPWkbH}Y-K56+Z^)p-JEH|2%z;-h@Qr#&-ir8)o znd_fKMTkOKwCk2_Op~MRdQ#|7B&LfT6{c)?_u<8oG4IM$)?y&9h`VzB4ddx^Xf?t#PT9JxazWlY2`m}`$*eiU6Ggq#h+=A`ozH?VvACY~{h7VWUFD(ut%Sln4xMHGW zR8$kWL)VS)#ZiefSwxx$`r(h<)wv~Q3!){zG#w(gWNJFC!|wBjRQO&mO!t=AW{z}P zN}Ca}Q!&M*c2sGnB_kRnnI%>qe!T!ggbJbfLLoRPWQCOqy7AVPbp>&?j%LQ4C{|L( zJ(64vI5ZcRB5#Rg&_vhy#tK62`BffC-+))4jDq|Hk}8G`Hq&C;%~D@?)A=>nC4$j+ zl6{ldl97yJf$aBfbP~+h|0=C z98izQP=lfTnCd8_=Z&=JIglZH47IN2!O{upkjo{9q5AVs1_YL>DlX5o_m5SExl zb7eY8HsiJV2!={tv`?BvO~W85)D-nvYl>m`t1s0(LRBgs`UY0B8YdFZwxn2FRz2Lb zIH+9bK8x+i*xf~mla*-19>C(>q%U>r@)a2&?{cRqOa8N1X5B$FrRs8BGA{=3Gyh@} zUUak)kr^l@$zVe?{wCBfQ3p2D35DIoI|`h$uAo~Asf4f-W!*1VR{hQYONNtO*6E<-D2G*e?ilk}K8u6CoZE=tGhPzus5 z5_P?iM8eDrKOIb|)}2w)BYNEUqRg=qn@0rNyzTZU?QDBRBHW0|jY&RCQXXRc@r~X?eKl+bKTp%X6{BeUrJY)QMF>EBPK3&zPegp;owwX!{w)-BgC6~;M^WsDGQIf&QhZvArow~1 zRnTN2v%?@LGEt#!8Dug`(jP$5Gb$*RN_>CYPD_R)JuH#r6Gtgdr(EEO@i~fJWui#Y z%5<=xKrMA%;vbv_LZ_=lux%XkR_`EHf{w|>Vg9gI$&6=-a!^o$0m)e2JfgwyfQxYE zdQJ#ckhc$JqJ!!X-Ia6!w#LbeKcT|jHa@TpGLlCnKmwr*RYAkf7{di52!RT4m>H^2 zVq%P8pV7E+3kVt|kPBg5b_ns5I&lz*GxAM52>3)IM3HvsKwBa>@PSc$k{48*78XBg z$^m|5I$IA7@uQ!@EV&@4^stB|$t2V?=^=CMjbl;_pjSpI7u`G} zm0Uc9Rbn*D0LoH#PF#(-aCye+SSX2{{3gZF2q_{t2YKb1%6C-7OHG)hG8N%jA~e7O zDLG15+pvovB=Jz`ECm_UPyq)V&`mmFszT9WgoVcG5~8tll2~I{zjlh3*kDLvM@XtqtAgYOoa-H*c#Dy}T1bF)B1j4GpUpDJao0wnb=} z3unu8mPD~)YNJSrL`L*wh!y@gzyTqUO_dgcOqZP$qh`bjgYM@76uguKvY8V?tQj4c z93xKqbCR!mMNWMv=$KE@1cf}5f~ff;sU_G}Z$6p3N95)dsO?5*rE?kzy2D1kQ_OXK zi8&9(HKj7`?K9u?xnP1-j7A$0L^oO3c$Kpdcr}Rz3_t-A9D^REiAK*lqP-qTq+1@D z4GJuv01mW(I1NiA2nq2fFgfyvJx!oBShrbuV8&tJ^iT^rraUO(6BQK1Ck2&pRC(q} ziBM~07VohO*-{LY{RE{z=3_qOc1xkXrBg(+yI`Eb#W#=L@P49GBDty*X!~JY%L;*l z4;Uc4jBNo{Wbh*E-u}yRm!t@Be@0HHC>8+@2uBK{7}_~8@*9n<4SIi;x=X~jCO~{I zP%9a*hk6bxpUkgZ_Pf+nBvp4iHL!{>lN4px;93gyU@iN3BM*vdk=0xjg)2Oe68+_% zoWw{i7g?h#x#GAYj!cs5DpHN2m;@Z)@dd&Wf)L{my_FQY$R0+_{#!mNJihTWH$;v9s8eWd47QG@sQO2XSY16VOxm@5=yk>|A@vGIA zAuXyo_)!h!8`7M!Lr2Y4xZQ}eL6W4VxFTf3l|Z94Vd01k%hb>70jx|4p#o=eKmiii zCMr`;H~AY`f0&mzxo-6IJj$XI4}MDOOW8ku`@R&u|yr-R5MAh>=st^LMgc zqitiixQE$giB(X7=!9Ue6mY-=GVlQs=-UO=vRaeWSeQ?AkbTIopEfZa0Sgd;1Nwe# zg$~{bfx(V_0@s_DcC9JO_AtsAjHm9_Mo(I2l|*Hd&1qQa*VZh|G|Hfd-Iq#A2G{m0 zwRA^K9XdOhFPM!1d2C$4g>!TS%FSl1mziZA5^D%uuji*%tTyo9pZLjND)Fva>ZoYA2L~YC?Y7(8yaI+6eN1 z&dXap;WVkOptK{b6A3cE*VcDFEkD6%;WXt)!$B5PB?B%tZmCBE4nTFD^JcY?Bo2W{ zanc&L=U!tc8jBPsnDQTrurLi{a=X(T=`c!aM+&9YF`B_j31Kzrwo?TIJo_LrikEi; zg=PjcTOl_wW|TuKb4y&cU5$58Ok`H|rG7!vTQ+7Amy;bJrY@e+0wK_I3its*M=k!< zf@EvvDv~u_)FJ~ZKmixvV)wUtspoT5r%+Mj5;n0Ooh2~SvL$kNb-MBkVs~}GLQ^%- zSoAeJOk{nxhGj?v59%Ne%4ZGKWj{R;JoXSgbi;@RWI)BXaj8XC;5R<#*KwvYOzBrx zU9~poH;JNPBi;fXbP;NdF*H!5E;q$oFED1CX94$yZa>gy!{9>g20eTc91K(~Eii8s zAPyNo0o#;%b0r4BGr z5<9_)HIM?DX91nIXf-ecq=-_?MH&3yA}%5WoW^NHAORWR00?jaL_h)&fPk8&Z(asw z*;oSVHi1ZmHU|S{(}*F*GDN)>I?o|mX16Q>#Ep70h$)z4>sESnQ;ySjK)6Fnmk3ZZ zI6y}zR?mV&ix&`Xl}m8OU*=I*;Np%IBYrtjA#h_=R+TL$wG%bq0x#tN!N>v9MFcib zAc9aJGhhR1*_Jk-9E^qo^k9*kMsLIT0pxIi2}l91=VDpmV;(3D7?J`P&{wlDL{!9# zQ)K2}JHmIxB?0nAulyHH+)wwH?O zfDu?=%xH&aWL|WFRU8BAwG&zv*L=s20xxx+84?@0 zMwyv|ncx>pM(Hdh2oP}iUZ_DS2wIwMh<7M+W&(tE!v>}kx_uR+RugrDyH#P&5_9jU zLzr-)reqZlr#!@0IFsN4*m*2j5k)P417Znd)%mE?8Dl?oe-~f@6!40Bg^?HV0UYp` z#8ZW1vU4Fhg&DvBs5*sHXrd{w4~Z55nwCnBITjp}c^435Dd-nN1t+wzYrXeQqUA6S z$}G%-e3o#msCIjDc&4XOfpOD2T}6Yq6Kj3r8#5(VAy=mrijBxNB2FV=yM;j^hIFT3 zRVT`!g;14fAu#@QGEf5BgsD+T1PGXVsbr&cc_>%W zb7UBdKgzH`*H;CI6;l`j84#-y>#FiUWKh0;z{esbp?II(7Fpb>`-;06UDU*Lt0n6*54n%h7yUp^;K7ngTIa zI~kAxwUcO8!3<#trJF|q3V;9{kgH54d~e8@Ad8JQDHoI62Ph3>9>IkJ6(rKU}O`TL|~S{x@x1ikC2m{IiP;EtO$}i$ssbf#dg+u zJC8Ub29#|CwXv&1|e1}3F3Z>c8% zR-1sl8>PJay{adLkBI^rP;U{Swf8D?v`UdxmA7OV0zW{*%rRbcxo9>fMRkvwt{_cycvera?I2t?kK)tevmAiJA8-lyDJQ(wR&T@|? zw}+DkZ$8tUkFdZxu)u1W7z4^1J(yC%S#6D1F>t&me^R?d_j&fZP2x!eQTn?woC@!G zoZN{3=&hT%9TK0XR^@vS4k_lo{$(ER`^1gw#89&^^;3FwLrWF(MAmn+4X11dbS}Lln;ta^JFv!M z#z!Bhc$+9aWR-)(#87qolm`_GE?}e9iJcr^0Xzq)WI4j&m6d}~o>5qqzk6?c31iLC z0$ghWIjqBtCJtz$w!QoQ2ndh}_{_U&`^X{1A?^?lP=&6qBUII>L|D~nwM;v*?8LMj z#qw*!k&C7cgvImJaa;V$4E7EpdX=RJemao|J3$K4tCo-uTxvoS>`2C2=}TV0R^zuZ zSw*IZTCluukwE%|mZTmW z6&x*G@An8hQPKqYI$OoD)i-;_F78PyLrloyde8IwuBWxjNY554! z%bcAsSCkMKnz*hk4WV&-V~35wVinV@1)(&_g;d08TkEOLWLC%)OuWcgp>?Hl>w1(M zw?xp*o&1-a*3BPG1o%9Rs#nxH?V~?x0TF)NKkNV+aFWxUM7gmc9x@O^%tQgLzDqm~ zi#=Kdg-=B>7EK1%DI!5~jiMHO!7AE=FdCzYU;`li0=lFL7@A>_#}2e*sH|B_Cv9yc z{wV)6oV zEddt50c^{#KbNZidfQRzy{p$u@API=(IL4LHD<#*{WWV_c9yjR<4wiOt7aTkESjV# z-EkqiMcLji-YKM*z?hK0EwKV4^uYPJRnCUk+K8HslDXmZ4=o+)ZxdA+gL5rbo{z9i z38;WI5(;#(DT_kM7VrQOkOGp-Xp)Qrlst8;TIQ-3;ojTYuIQg2=l8TBTNJ4BffZWTTK#6q2J@3xlX0Gzw4Sapo0~NXtj20w z{?dTu7iM(aDK+Fw+?2POv(m^ra?yPlT(gjCz$fBc2@yxCaR}0_({mcOd5C8(;_nEhz8BouU zoV#;w2|--g=J5DqMe{;WK=riHpY&8vB}zgk&^RyX`R{>{%WDYA3%U#lM1q5ag+wTa ziHe9Rh=_tAgCv9{hbWGhgDNUSoSTK4p_`bFgD9e=f{2`*s;-8QiI}p2sI;-Ep{+zK zyN16+la;cUl^Prz9~VRpL<-L(y@D&$y`PVtyDKgs8Qu~RL>UVy85aJ`3e64*f({fE z85|ZA;0_TH5BCuc#~cRik(d#A@XkRq2@;4%XjVu80tAy%fRae0k*10mC8lU}DU(MO z!%9&cHVK%Zk|tZUAkxBx3qvany%bc#q)kGleg!mCspp_d9aZHN#p+_MR-|&C(&Z`> zuNOEI6@8V;qas^DaS`(5Yu8kh!kS(Rp`k1?3W6M_Ls5;_3Kh~`W#dF`<%e_LGDuiJ z*r6t0b&_V}_5i%r%;GC~b8dY>m!AWC9i5-(x zjK!$bFhM0^gEWMa&?J{EW3t?>dp8l>H-W__N$5kQ4}&62n*RNoNbH{>Kj!SZ2v_RV znox<}YV(m*q28x&B^7nhTTx3D1wRSv67sS{IG}a*>;v4o)rvaJHmF4k5+CRl-~)Uu z&>0a3JQKk)?z{sJ2NzsG!9MpSR3TahZT3t$>!d?ZGxAViP&>}_ca$I+J!0C5s09U{ zQW%VF@d>CCytgc2ZPnB!n=a1P|nc zPhjCBh#&$45P%?u&Cv6JJqqcQ5Q*#v=0Ji9NMM0M{ujs>r-le}Kv8K^V&o*L8###` zCZxgmii^QSNn>+F3i6|FD%ncNOuzsqh>=OMC)-Uu$qHLj$f{@Mb=Pgh6);>3y?4Vrr}s{fjJchyugMW4(5#@9OyOTzLy;% z;xmGLK$;3IVyw|dq;X^>tKABUjVyQV zY|wqq6C$)muB&g7lY#$>A|u>~W53)2fDM8|Rp5bk6$3(M%DFUYyG*xR_ecQXxAv zor!Zw;UH2Jr@)|@a25>VhYEQostW#|r)p&CL<&M6qU0g(UIefg*BZfed0Cq| z;xRY1Q6Ny765R7b;QY>gC2?wU;HM28av~c1H7*Z>P=R%$0$U{P)$!|Kih>Oi+_Z6*_ zA`@_mlLjcTJ0eJu1fqChHZmwfvWN>&$Rh#)1c0wYb&Vi?qeuuMkpXd7pq1VTkPv;i z#9A(K5Z-{|h6r)Kw4lXs7&{gFct(guJPBEbtHhFiLC5v9q!7XD6&nkd( zAvEVAJSxI8pMll}u?Y%8p8imF)>_rg^0-c+-3%BVaRBbhLQe}!k{KHKfYkJ44XPa_ z1tnmboDL;Q1bu*B1X#yIp6A0El3;p7h!BK`xQqZLSiorhhK()(PRU@#Fqj1^CGtaMD+60=%b(a-$enNpcb%XO_gED<7c9obHxZ?~QBG1$^2c*f!b z9biUS5#(Xzg&+kSNR&Y;!eL8xyqhmPpVdm9f3#W*p`aBhT_k#q>nL!lteG;&&F9aVi(;497F zaK6acDHG=xLN=htM3x%>_Nd{mMw$PVnb{*pe6e5*3z`S{5&w2XG2kmRa|vcf~RYqV-Y$mt>w6Sv`U)&jdif@M=IJB_*&-#o{=Gq)e0G zEzl8b$Z{pCWeB3xI!u*)0@pEQMhxHAT4RPK>*PVMfOzPqen_%xk|7B5Cx06-e-*$1 zr{ERs0U)clc@Xe_Vn_r5SXL#V5j@vR%pd_lCm9V`Q5=g{wapg3=gD) z>I54qG7EoJU!w*KU#Bj_$7Hy&BPOv%H>GwcV>vStgJI+oQ6h0Mb%VKvK-z>ztkWJb zH*(?ecdgNGOFajQ60vo3D15~PO=ZU$Oy(=qq$BPaIX$sV9P>p)#$PX$G}ja}$|7K6wsBSWjotSOFry|0 zRyyE^G=n5GI5Q=E;)*5^ktw%+6!`%rKmsgqi-Ir$xVQl(uoOi8feJGhVI*>Mf{*|V zV2sY70Uc96QRD!cLIi5lVuHY2h>;laF*hyNO3sCJ^WY$8kr3}NZ`)WReP{`WGe4W7 zcK{WFgGdQQ#!QFEf@ODhEeMY%gLO6tQ@NI3IJl4brBa=!6puuH)K_Z^60wHM&Ggn)K-~bRnh8{+Sj+qX< z*f}VG4C*i+o`GmW$CL39A@Q(ol-4PmsTkR#HIBgXp>X;T;`@| z^0{uJIS)h-4v>;O1Bd|AmtR&lgd$imASj54aD!lhj=+FMsJ4h6<0}BiZnR8mfQ+3cDx{Y%5JG{_Sf7Y?4v#jCol;9G#-I0K2o7-o0=j%F+Jm{aQItq! z6bB3%dJ|`~UcUf|gkU*pdQ%kong)txiC}8Y(f(O8Q-tmWRlS*1-62!Vsbu72Y`;bX z8A${;AP9vTo#%Ihe8~bg00TZ?qkI{jFEFW;`T{&4b0=U)z<>Y@5P-x80TaLhL^zo# zZ~>TcQ51-oIY~DW<)r1NXli3!Du#!awwMr*06PIw;^zuJr6O9HgKY8(H)v{Pgo0*j z2xw|Dj^z_L5=K(;2p6MfW+qi;`4fn1j9b^2vl7algogRs;)P%0z4oHJfH%XTCY4n0-0J#h7cI)xtNwzd9jfUFqx{Wm!vG#s!bYEpq{?Hr%C5UvoP0K{AX4hou=rJe*q0AbrbNUKl zA+51Ftv#q@$=Dj<2VmSH3%qQYtuwsyV62U#g$ z2sMzbQFas9yB-y~CLh+X=Kr%e0?sy8PR} zQERC4n||qMZI!fL&%gj2ay}{9p2@Lh4xGDqm8)et4+ya@o}qN|AqW%Vu#F)B$m_NK zM~q$@U8IIF!jXbt)1D|qI+ce>hkFiXC^7pxo# zoj1S&5h;HlV3+s{wWdo1Jn+O&%me=Gv^-z~P#dpUT&OWHz>EhUd**)(qL_@Cl2mJc zWqif~kt;buK28UeX)FGd^Wh-jz=m)eRyW50*fyl@`&n|yKe0J1T6$j$Dy9tTtWE|p z4{9Q56gl!ml_!C?$f*jCvoX;stkIE2qsp5A_m*(yaF*+)HUV*T3KFel#P&&XD}N43UW2)UaheIgli*rfbmmk){eo^8_M@9laqruGK6Z09g+wX6NeH=2&@(=%9AX)Tva)p`q1D&%0$>fgV@(7?AOwQ2 z+fQs}{-_MswY4A8aM{5j8yG_ajn5|Li@Rf2x&o0v^-EC``Nl9lkN#&Ej0mP>1-tre!dkXmQY zIc;Ze3P;AGG_QHpP|{|1XQ;Xz*1g@^KLFNN+_(Z9(Qtjs$8F1t7m-j%2pHhp&rJk; zEeLol2r!_LH-Q`_u}aq+W8+o`2tlhORS3*m-q`%H54XPEtiny=zB(u?#A?~DVBho& zp(FE-Xg4|k{LcgaBF;hDUP)@A=zFrEi6I*_=SYrF`Qwoo#LJfnFR%hzD8EhH0~XHy z+dn|z6~5bR0@rCB0};K&%uNV&8Ig6F=fE)H7$69LZqZ#!h7iyIgFpi?FaqmAi-ys_ z(KWp9U?Bp*OTC20{`!BOJjtP)KLrk!%~9E17e+|laAap9h>YL!6%!fipnF_Gk|5-4 zQlV-h%GR{$GaHG14Pi~LeS=K{tI$$62mPBb$-i*Z~`VE z0@7aHxQxpi0O)_d?R7l}A}k0MFbFU(sDvQQAH7PG5D;#)TySh5hV65}Ox}0=+>PVI zg2%Bvfj_N&!@>&Xh@j+?Be8E?pKTj8>~)k2n?MzVD;#p>8#*@3k3jzMAD}JM z{MHdX02PFQ+rvHx$e!$j5U+!P%4eO{C~wAGEYToPb0Uz-gMh>$u6cgWye3ZGUJLGu zP6I@c=!IbJi%w&!*GiH8?gGIM=qZ2@P|+e4xz54kaL4aZ^2lJp&bfiv?S=J_h3eqj zKvrL&ndsWS>4`gBw>k{UO3hd{g7Nlz3b_5m!w%LuK>$D{ zEu{Kted7yi{U%0G&K^bW983NSOKxxkq?;-0n}2K74y0L>EG32ftNxs|!=o(rumF74 zde09>uP6Y;yIuE!;M={u=JJZguNa!APcE6N`w*{s!97vU6LS&N+Da6eDlWZf%GhN8j!{bAAlOveJ!cD|NWRhcIGCpXoK5hcyF8B@ti9xhc zu`vi?kiY;jSOEhOj1lk%oe*KLPzWL%J`nlv;R3@86b31n{-8jRKOz$#V3@#w!3R;o zP{qnM%vVW4vT7wtWe6rOB90^#vN`D{rkyTZP=eVBXs<%SV40dJQzj#lrDXYXNp#pO zsk?rGT3U)}%2+CeiV<)b1S-5F6w{!iR5A1APn(5UKE& zU?Ca-;hhk4kO)E%2t&jO0r>+5K_Mg$(m+VTMvg@2O~3#F!a|ZLS3dQHBE?G8Pz9-q z>4{TKNH_^mlJw|OCQX-oQd)G>b+4y{S|W`dl_bkt#9KppHFdaiR9T+~GbR@74q9sq zsm+1*+czTM)3tqDNU*yNb*JlPK%{}73LYTQATmP!oIw$X4W0;bf@MThHW?8X5J7GAEpSDcQK=bI}cg5=+sgph^fN@Su!K%pj8_A>DODURwIWpcV__UCGut=L}*c z3+l0#myQjLIVOFDK>~w*b0IbeLPVVKSbz>WWS|8WTws9)8Tr%CgAh1K4+fm5bP|vj z{ul~tK-L0WDz62VRERVoGTTp*qDV-JnnL2jZ$OpcqD!N+L`#i4niL%;rs{GkqON90 zRFJ_v#6d$Lppc!Cf1X-j!;eDML_e)B2@G3Hgzb6 ztaSJyanH+(%0h!!P|@~yUN907KR6@A5AG3;43trZtk%d{j$`aV@;~1AvH9iKcp>%G zGc#WN0|vmqRA6)Uk=*A9LlFIdpaY7*mLL$~5QKC9GlEzUxnS23**RctQ-RlTR5P(z z=&n^8>e{`glcGlu;%u1mnj~6C`*(4xF|>b5X1xQF=GSxD9C8aXPWVuKm+b!g8l7}amx%- zTzXarHywn5L`d3aI0C41oy&C)(14LbD8uBe1Yy(R+Vny(Awz=gYbmtJYyjpvL&Vcz zRBVc9)*a;u^$Y(v*^uXh!WslCd#DN{afVh?xp^f+h0uGSCfi`rZP^Jxgtzp=Q zYE&S;)xr`!5rn=nVM`*wuoDQqMRjIjP_;o4qQa5eD0vaWLL4=snvm!!U5O_Sgg_ZU z074LWB{+_aZ&x4lhA*p#j$p#95G_NNn({NOITB=<6>v~UVoC(aA|e5UfDZ%YqXB4b zfFNenfKNN}CvqwV5_c2?1qGorKjmWr5!fC@`!{KiX#~bq*IvcL)MAZJ*9(BLClsA5{+m@+{(&3NrVF$FhLK3K!my`1H6J8 zT=|$}10LLfE#oOjA>=VSma3}$1OthG)EQl)hfbVQ17_jD$>K@fl-h#-)+yo1=QGRmTjatwkSJENmJ zuFNbC$XC8|ENNl4ywW!|Hky_7?|{iXV9N@4GaTthgNPtnJce@~J`K$UiJINk>=+Si zJ^oOEdcmPlm{rCr3SRJjfe2XQmRcf|>Fe>Y0trk7Gk1=FBbx{$=?g z)MrOiTn;3J1a*3C&Lmin5|9YKT|z`4uM!dtG17)du@F;PYTb*}n}!k zZE6D)7cm#P&e1odpgV50w$;K0|1`k4$I6C$fR=@@IFp+(2qg;w2&hK#EOS|ok6&5j z8^A!w314e>=vvpb(DeX^9Zkt5-~h^20OgH+Y?=##vIih`J~+~W4otgEJ$(>4|0Ljk zFhBtbKRTZgA?l?EJm5#XKn7Z~Zgg7}-M0a|BxJBv6{JA;yw^R6s#@G#j2+WfJMIi^ z1PXn_y>A6SIPGPx2_+VyAw?#H-tUh0ybq!Wbqz1y!Lv*B3?58@H2mTIL(V^ZFca8| zuMacrA)k)q0|M|#K!6XB01ChWoi};M=3n^`Q<&E$n1@;zKu)1IT5#4GaW-KycWe&e zdayTp2LfeM5 zNO@<*f5=vB@WCg7M20%G7!3x24mb$s6jLz;0W_#%ZntA=WnrS$V?fqtBW8TI;dNhA z2rSffFE(}cL`n`-J%+#ukRf6QXM@!Bh>i$*p!Q>ZvqXRP0Ve)H0zUYIK)5kW;(gyo z2u7GuekD4CCkRUzAs^8h5ONQim5P@We`zE@@&O+glmKA}fRVL@1L%K*aAsV%d3_R1 zG_~%=c!QH@eb#p;3_&NEXaXJOaGt0nLI`o9m}-8<14w9PAeV}TkXook z2xl}cXXH%R^m&5h50s?<1vreF=Mwyvd2m>amc?fDpaG&4RGa|;oi~vTz>aR$8q*k2 zc33fYC~zLQjo;Xf-l%&dm?AdRhv{}`H5OvDutN-0V*XG;iH``6N*9UP$5wT6iKUi_ z>lI#irDPFT2zbXa{y2n%P=taoOB$zsgHU*d=Tkn_8L1T-cBV8P!H{ZXM(b2A@$ouB z)qng4fH607Zw8Ez5QaKuhRq0!8u?i|1x@8bdH#R^4gi8KDThB6WEgf-0|$vA*mkT0 z35P}^i?m5yhi+R(BI5WP^prM;h#}Hd2r1c)Yd2BYca+Xij}5^ArbbJ4WquXMkLKkZ z0J(QXm{IDLe(sfuV+kR$BQ9t8Sgu0|pD{qzq?}CS4+dZ^VR(kfwu=nlSXYRE{6~zT zp=^9vlKe1+o7aY$(Gl=L4+HpLte1fqR$bf3{yhdlnUi^RDp-g&2??oT8&qd}o}eKe z0$f8m9i~ZpYp0a7P;h*O^3C5)yW~ z5r5<~!{%80=NB5`e>gXW060{IP=>~d2*t*Lk+m6;w;6BN5zR)Ik%a)Qg>RI&J*(!U z<&}bbNFugz61fm0>PDaFxCx6OXdH%Hr|EhfIGG3cn5)?uuStI5=K~Qs2>R$AL`aGm z^>-lEEMW2xXL*)7>qzS9u2Y<9+M#ZWr_uI0z^G=CCv&PN2%RT@ zdzxk&(GR(}osl)DsTZSzpn#F(mS+fn46vh7dUVoAsXcaGk}9q`QlKbUNwtv)M_MR0 z85FA`RVf*JSh|v>N?qMHpcl4hOGI~6xs^u;Uf)+&K7ets=2us?eyymc(wceR38Mh` zrWiS4gUM#bMyCRXr~znz1{k9=ifo9=Y`eH@&FFt`S^&-1fBrY8lr?jg*Qf=mXKwda z?+I$uNSRd1nz&a#1VDKOfRVNEu{KA57`uxW zIRKqEsCYWET&TB{*=Kl?o}Y#wa5t*-dM_wwd?dDen~JG}8=2zTo=YomWhp@jrB-y8Q6jAS-A5WQALZn`H~Yq zk%AWo3x%3!2Z3CsJ+=sxolOlnJYN-_@ft9aeJ2ydk0>kiwH;da7z}jRU5kH zXM`H(B_Jo3zzG^0YOVg)r*SHxXttun8lx#ovIlUoC)=TQE3MONb7V-o)_StXb^rpf zyaQltooB%}2Xlssk^^^CcLKBSL5UnlrJ`!Xh`W8Yftil_qd}LGZ(^?mB$0H$9P-- z#|waP`^OtQdFa_n74u4md|?`>#N&F0f^$@gJD*ER3-&21i$p|8hqUvGhaSkuv6s0s zsfXhV%8p8)cw#3G5e4YI7Y7n-KnS)7k`qUJ&_`UiOj_<4ou z%Y(3s8aa6}$AEr$(H7ji&!)_ED*(G#0LqKeeN4Bj7XhPu&)V!BkLn(ythCbsaNW3j zt$}?0i&6_iT&dTKvy*AKEcw$*Y|oQh2r|976~oULHwgDDI9n;Jr~qz2k-sLP1q*BJ zkkIVGij~E{0QS%t%8`Z8p=eeMZ|avZ+Kd`Kos-ABZVb{MeZtG!#+wJyg#fpm7tJ8c zyT_&g;l|C*q0~8h#N|~HA7Gi1jM$3{xky>V?ksyiJ&lvf$xAt|NIe~R($r8%1W>J& zgaFk@)}^Rst4=N28FvFQum~Mz0wMqc2rSl|2eEHTp0=zB6b!t93Uke<+nguYAS|7T z;I>-`*F^BgAN7b(W$@g|Zw|I@#A7 z&+r)jWbAvnu6Hpi5Dhnw4V*p2v~apqjR@;y+C+fbs2u_#;8_Tqw$f^m(cF1k{g)BE zc^fTY7K^cRjL{Z+#~sSN774a^49FmR00RKvzdHzR4W0~6*KC}u1OSbmCf$-MsoUsQ z*A1yeK(y7Rg66z?jdo+xp{nZ3l8!x~R~pKaN!d%8nwi|HP?^f91{DMw%U6BSuoeUM zO#+VLbSE%DprxiW>d?)Y*KfJOk7ZeJSf>Xr)-Hk99=&;a4B^X*%*k2+dyK-wod5)& z;Tk^SC~V<27vj>rf$q6umFrqH4T9a{)0N!Ai=;3vkpVXxq@7&ju-8gVjI^5Uz6SoH z0Y_B=$8ZDk?WK_51MI!ogOG8HlYZ&|8LAKi`mF)a%dl@a%g}AoM~&( zkU-_S4Z;z=ylL*{%S*xqP|e_}yePfg(2NMiZKxUX*Mn=>97wLNmB`g4*-Q++_nFhv zzAjNL%7l)+HGAklT7whSV;V3STgL<4_qp&r-9y-2;?W< z?VahD4wdw+4dI|4>hJ**((W}-12RAYA~2i>@6aV1&3P>VQ(pivrJ>Qp&?^dAfSR!? ztkTTJd3gM$5{}%MH}+%>vB{g^!v4%E&Ae4U?0(tSWIzW21S z-F^rn&=^?VOb5Y9|%(sHMONP)XIPO9)1e2t#iU3s(Xv@B%h~^h@75 zV+g1xdZK0>^+YiB`A(g+J1%7l@GOg+3a$xvYuER_;0I96U_SSdu!RF);VA94gD~+2 zF9^Rr;nCdd^0>$~T+cPXx!Jtbn+uuN=%Yjwli7Xp`I2t7P!zP2{^E}9^5=bF?-ZQs4GD{5SXuH;T=4=g-~uI}-vT&>SWdiV4G0GXg91bX0Rn>w5JZiQ z5Rj3K3`7Z)mW>PymIsZUf}M_{qo0liqeKS;sRW^-g9ix(g#!fxsEq}xqo<;-j<=`? zjusTS$H&IX#<AV;AY@^}0}&97Oe`#cLIsM7D!7Hv06{?|M+riP6lAMV zp#X>y6-dAU(y<9JV?x@LK#(X*o{sf$^y?R@Q>zXHdv(hGX0V|}iJV$WBv>z-rb6Ai z)oXx*cvzbqvzJWYw0!d#!E;6d-@J1rxDgTeZ7sOBZquT@nDyB{Y+=>i-P*`Pv3%DC zrsMbFLnFgP5PvW+iZKz!4k4Ndaf8GS6fag-Owqzc2oVY(P(pQ}^dKTAQwvzFXf&z` zjbg%{bZJybo;zP1E0qfxfuXoc4-hZ_xbCL8B19B4oUY@$ri00u;8U;<<5pm5oO7nN{=1_~%3ODud=*jq2RiS!W>l(?1& ziK3BMqKUp-n4C{o?F1=uz?@QxC^52Fql$)bY9pne9z}oy5nRWf2QlRQya{il(qy(oFy3cU9qAsRf`l2n3#F(imo0>98 zz@0)ffJe_rpz5luGK^}l@yRNRkV-PC7F_F%@+Gfwu{R`kAFIQ`C?^mxG7%z}Y_bL? zqoTo84zO$x3FO3ppUotE_Ob(%5TL-c2owiQamAfR$|sWMgtRB;hVl!(^ve5Fi|F#( z6f(mN{YoOsRdw}F!_9(Ba?p;l@N~}sS&cfb+9eIh6QjZvF5}qR|1}r;JTAm907R;s@7Hl*xp?uENkdWeduTH2F z9na=6j_xUPRLvr`Qnc7;C@!WF{&6-g57*VUU82m*J2K(0#|*I&V7&b2T+@BT26rGLLZXhY5@#P9C1b0B55h~&IsyK zPAzw}zUp|2E2=`UXWSwHsuS2TvX-w#Or>8A>{kNvl$G5*Pe|3lpx=n+JXG9GV~&Ut z3Vx))=xs1NWx++3it#K_?2HHq5Q-tin$o`_7ECDsjGfbR(LSn3#Zs?$-~(~Noa9V}Y{wt~0wCcLgpFcasbX97z_OR# z=|viELy|gbg{x6eiAp2>4B_4yk;k;Dtr^mT)idmoIUB9!87%Y1C;}1?BAlRQjbI-T zn}YxZ{H#~S6kx0Mp26zog!dX zdl9A#Q2+uk;Aio$;4w7F#=NAhF2?YS#O{)gwB*WzA0$Ex@)p8fAp?3Q#34=c#Quy)6esYHK@g*X9-#AABurXsJOy#2p2=i1&0-imq<137L(3%u+W*@J4ov$EiEXCv| z5zq)j1guXLr&<2RvsBQ67NB4-qG)6zcIE&eZIc+Ha1Jiw7c7(X^F<8h6c`7VoLLMp zU<3tN!A=QKtn3pN0V6;H!ugDfUi4HY1ROoY+MepE(2m~dATFrMtG33YgzzxwSMFHY9l1NQmnWUvGIuOm8kQ_zey9CY88bwiN{uqu1%YC z4emw(Hx|lKPJ4~}Yhp}xfnk|6uJpOb8Ow>9>RMM6M9pq>ADbemVuia_O}t1irDgRa1}%^QZ{X@lb9C!7ocWwt5m&f%4J53n zVS$sqEHRRk8)B8wj=m%;cZ?lHWVL$;WT@9~;lB8twh^Hn zico>shzGzI85Z?zM(rY7EF}|dsOYapxzU!~_LgqDjV<+18eCuvnbtGg*5X1So^oL`2utmQFRCm7BN=K>rs=Ne-;VZCb=t0-nz zzWvC9%KPt<0$oQvHUg(>^%yeS;biVy8HH93UJBbp0dGbOkUGBeF44PPe~uW&k_~f; z{yzL-QM)*(FcgJ6iSPgiw0fgq6}7`kSY);2_G0Rx8KRfh7G?PKd40C9cjgL5K-P7T zb8GamuhV4M>Ud#2#A;Tu#y}V!Lc6lwV5lMc;ZdVPwH{f(F>ZW}udXfIB#pIypIOI? zwRL>Q*sYM@YS^+&8XHB5My%Gs6*#ivZSavtvF93au+~<0!c?uav9h_Nb{pMdzAnU3 z4MPQp+Yt-M_$bJYiwLOum=gy!G;B?`@qA-2$D$QllgzMHCF4C6p6ho6{@Zh3+1^d2 zz@8sw(H!?Y$MI0OICWHN>N-5+NY9Fzq2XS2a6DD!zF^YpLgZT&Ib#Wew}1uyU0^-a z8ybw>%U>w$?0V`PNI$pnN~txiw#V1)FoW68=B{bZQCA&mHVJUPJau$;`^7HB%F|gb zU)=>u!6A2dIE;5Zmg`Y21qN%1!u}36#@y?T==nr7?TBGWbQqNshQTnEwW9O$iAE)- z#QT0F^_IH5LdQkZk@0{Cs6F!vWBo7>PIY!)?Dx3XwSQUes)kMDjZO8slS=p8v)@6a+ zmry?R8^~~e5LbJJ_kO+;e}#5`gr*k4rz;(_bF89s!s2K*S5hwbUK6!ijSza@#(=A^ zgA9jI1LJ*nS8ZEVFm8rj*9B&sW?G*%Gzo+iu?Isu7;@@|3bn^^Q8!E>H*Xvz9v<{e zN2Xh}l3T=ee8wk(*>OS(BW@IggO0F1>oX+Hv3D#6gc&%2ol@7Z1B4OwfTrd!`pw(tI=c3>+7TY}kfx$cF}` zOX^@|3luOlA~d2n3Ol%iE)|8VIB{GBda1TSf=Gp^aD~8TiT=D-bD9WS$hQ~bunibv zJSt~s_NQ{+pm~3$XZe;4OD0G)hH+Q1hPV)l4A>q?<%14niduseT-AWFD1x+zaX0vf zod+@U6o}(Sc)y}&7{!0K1&zx#B%E<|=mC6gwK2)qanI*kL?TBbmw)I-1P0g$2UvZu zm?AW2X4HrZU@L(6A6*e;DK+JgD2#NorjL+Sdt)#3*z>a zMA?DaHid$Ck_Bmdu$G91n198`lF+mkfyQ_M)>dDl{&nT1dC>DP*z{WQK^?o3I|pc$ z6gQ4M5=mL%9C)dK)hCxANqrv0FSpl3rqLQiNmKxQS)exC3r++Sp6&2-vy5c0h zhddecoRJ8foe6bZxrxSbiT31tPRS!?G@jS~D0`L^p{drO!tj(3x0_Sxn@@?J=LugK z=bnh!lZ5A!pIC@YCF+iJc9I?e zPZ>#z2m_SU7kcJ-3=XIbE|Sz}LXtA^^NhWeyQDtIX( zsgoKOlG$|#YN}=i??pb!-Z~|ax^-iUAjB@R*!^8snhC@J&CA3!#RcTMR=QkZ&7ZkzO04H4Vc`9l8w9{yX8#|5i>YGz5YhPt! zSn0N`_o^0DvU=N9Q70Xb31nkhpF={O!IW0ua7WwVh;WJuHfo~~Cw`DRVRU7k3Mx!Z zJ9su$w|)bH3v;(z%Czq~x_?@QdFzgzi=zVxkJc%9I=i*%aCHi69{hP|DF~gMsYt^` zxk`$!6e}I{<)VJGr*9i(LkogM`?59Ws-#Q0tBZ!p>$iuCX~P4pUPn&=xsoW0RvzWO zG%I|PySr0IFuvQY!;53YtFyWjoO1iVNy~}s=e|W7ztxenoqN1bm%6m4y8X+(N_)6x zI*`GuL6wNP+H1EyUlL7rbb`+$ppP4!DL7mm=00mio0Y4nTHB*-8z1c_w5c+*^ZULb zJfc^KmHMhG)SI*;+`sWFweWjm?b)T#drkCopRn6+kM} z6Xc>`L2D~q6jDe?MY?~3UJWcHV~~uCL@G|)$dOyWYU}_e@+a~g$WY|GDFcaag&>KD zx(V7hQ(QYjHfrRgN93N*l)dzkla~$LwQm8x9UWNk1;cYL6}oWhG@&4uF8^iiNJyig z8iFu#9ZR+l$fDW;o<#Tps3DjB@;JsN`VDI?q=$+U**6q#+(KY`{=Ap3oxVY6tu3X7 zbn&8+N)MilDuZFQt*u(9Gza-P0zLix`&togZ!hd# z4Yzh%y^pSO@+3@HklRp)5i5pmbR9fTAe}?IW)QDRsf1c?cBL|JG}561D^o$fp=s{r z&#B)!NVo3BN+H%(Zr$j=oA34(BD(mf;hSz%^WR)?0aX%R_Ib0y3&MnBonU+2mJ&W- z;S(W#g#49~47WW7n^GrrNS0nN5n@a|)*!{rW85MCfyre`Gk{k~ zY(}*<9elX4IS4~d<;I?7tjLFmXK!W{nnq@ZrY9jY5>f+Lf!WAiM0KXO-ikkZh^1Ko z_1E1u@F>Zoo$(16C1ZyiXGmNmBDG+HW|cZ-U*p8%4uOIJC8BqVwYk=r*nUdccsMxcqOED>O>a^q=*+^A@e*&PDpt&cMKC})icsI9j4Y4hs0 zx>$)VI$A;}TyTt7_@sXEK)4cJvOef&QmSQ&t6~prrO<-A!Wxskeu4)UX&TWOXpGEK zf*!QyktY$gKK{Oi7`D`G3(;8vZzhwt<3eg%BA{aY4XF-}SyP6IxQd@|`ME0%mO+Lb zD>uu5XsU^Itys;!E1U<}&pa!qP(?@^f-sDW(D>4`hdLCIw7N)Ko=cJ5DzJP)(mE-~ z7#g|helWA!)4PwU<*jjq^@blgI#fuuHoq0(Y1+X>sx!gliuo;(Oip!8R^|xKsCMl= zG)N0CwBWcPbQV2`(}z&b@K=MH_b_)^No4isR>4$);Iq7}++?LjtpO%eN zPllD{4?gXf6J|;{oGm5Y{2(QJP^-gtT?pX zm}9&YZVe(!!p8jISHGczX>Ai}65FB_CcELJAFC3c%{Y}p)g@1PEmYo8pa+qlNlk)T zi6S8mf}LC?#52b_1P2*Ls8qPZG*@#42urAl^t~c^OIacFX0@2RrLA@P862e?G^JMA zuy#1?7!hwbz?m$GOZ%DQ0Eb8)uenfUh@cIesG*gJQL&$g>Nk!;#yw$mJ^j z_dQjlPmEuLiNiv9zVex`kXI@Ss0=A7evpZ8P|96yC{@Qp+T%iLdQFgWQ;hmttXs&d z65HI8q(FX(QnO;r5r4^|>R@MQJfqGmft0HsQBZM-&=us0R;;A)=}&%QmN*ABqrfbz zL|;U~Ct-oU5Rx#Mt9jkm>|`V?xzcQfOr&AtxVGb1N;tU7-THJkxLM+&YxzW^aYl10 zWBTJZKuqSVbZ8ymq%2R*yj~R#p(4rrENJ8_A5;*x2nzK=W+ruSkAxS1RF?i9zXg&t zuzci)x?|CiRM0FNb!3Z{XB3d)f^$$Q1UBDdQueSES#X6B(hTOoE-oU3=$uAPmm`ui z?sS1YrO8ia6I9YwwW>w^%}qEKt1B&)1e*w{oBpZKJ`QiN_;d|xo|9Q!vN1o)ywg`J zDY-X|^(dWN!C7CSovo}@t&r2ECifJUi?Fm{T+Cc0@Omgjh|-Ix*u+h7lhd0O&|_XY zB%}N&OT*%`Lq7>yJ&pI+$YP8+s*9f?WHy`5MwGJ&)uk^r`#wrmuz^#-Q+lnDE6q4j zwXm(;NEso)r@XbB-kdF9y2l7-y}}lw`~-j}F;hyMahFh~Cp@znUjEmR&vkEH7crBR zuiHR&J`Y6OF9Oi_i6gJZhqNxk25?|a{2^#Csq5APM8uQiH1}kT}D9)BQ92vAxOoWPV+OM9< zygjGQxkmm~fpG6EVBi**&q!vhqvw-guc{CmhBoGghy3JL{wdlmgPGl0LO_IMEP@nR z-pT(CeP|5buylVut{Op|rq6R6`0t+m4djBBn@ zw80+>?Wf}@F1SbuhK&}GD=(XDpV00vGHI$N;;jr>3|oKyCJY=ItE7B&C(Pa_XawVbr&4gFG(&W;P)%rnX*t^;DO5gwtbBI!+-8 zQ0xE^I+)#;cp`Z)^)QhaiBq2J9utfsf?6yzuZhf2ax)?8#y0M-C@fK<61n&m1Xe*B zXI{Lb$7ivN5IPYe@2MgulAyxG$3L?sCn7K#H9Py*uCD=)+eDrak=MZvo==D$?7s4+ zl9@3pb1|p1i9XshQC0#L_E|29QA84XQyB8ia2iXK_HFl#RnPKh1)0w-UcEX~sc((7 zgE*nkbL&E0o7NshW^;#iXjL~jD-Z(35Oba9YrRlhGy_$)A`b z5pIDe*)SC{kV~Ui5?`lNq4FlIhAex3g0L3IUFX9Y^TfPeW13$-A7#-k#Bd8DJJY9SL?}QJh)TKPS5A0y zgp*2JmVi+fGU37`l>%O$7LB12DgMtPBu9}e8O1G$kr9G*Tdjj1OEDZ(RSz^`A&++t zI&pofVn;vKi0P4H>=zg=z(FYm7_NqTd6i>dgdQlggLPyfo)SF9)K%bub$-TT%jF5r zh+PDeT|hW!^ie67GIyRKdU?*Nlr4fBcd|V?P$stV|cZyNx78|GoFxe^mqZL%9 zaiWn)ICgHB6K6y)BfZ0JLKX__frN-~e19`5c~_CswKdoBC{$J#ZPzzTICpwedvSD8 zHJ4CQm}-|1k{DTdNaR%UQ4z;AUfqHgEMz2bqCI5AE<5l8hbRbd`FLrNbgE&Sg|HX&BKx>G^{%?&qPnFP={t#&Zu~v?OjeMmqHpwFP){*M+5XbXNeRY7I zg&Sp35oHE!A0jxNSZMf2f-1s>Or#`1L=NEKDRBuQ7IGWy2atyVhIj}TKWPktV3bBl z2*rR5!Jr5?$Q=Ull%*hCbM^43^L7NkvjoCNtnXdV!w3QVrZ^5Y_QD-dB8bQj^g{WYvOQYoiw@K`h{um;056KPKt@l0g?2cPt@7IgA;m|-muc^V`YG2Fp4uSQpLc83E>oH>Y~=yZe912qO{ zcr$Y=JhC@lhcy#AN$+zR<#jI^Q%|CHX^+I5omp1Ni4{b1p9C>1m85kpI(qv!p5kDF z1W~5pw=GlAX6fS+DS)KCH8nf7IkB*3wb-YK5NCL(3pePCNEdeMaYmLofs08&42np_ zX=E`LqSy&+OUP@qGBot*J``0=3Zfos8h)d8qC8U(=~+Q3sy$A@rfv$OrNR)qVnx4& zr{^(ih|*tK!B92!X1N-qIXN`}iD!Iz7Yyfm=WsPksial<7P_H);OQi1g_*n&sVvf= z$(V!=;(PwZC!c@j5|M*u)?sem=K|ZXkLd-PMYE3r1Rl`yo*EU0^n{!qS0^^bgY3j( zr_in8q*A*of3`W8@`elIa|jR!SmUTw6vZQ(i5I-G5m=#kW44`!WG__to!uazI<%P8 zL_HJvt^24A=yihK0w=cR4u)eQAWJk-Q5l(+K#Rj>0Xe9?0Az#ucDve-|H)syin9}O zYrR#RH&u<)>RHUVD9BkGl6XiLs;r8WqsjSwGh?ZlICHUqE=3_M%BLNfN-*qKs_Vxe zZ$d9^DmigTuKNfcGP-tvIADZ{XGnNf0rsbYl9vgivpXAHJXljcTb(&$sn+6($YZ0) zs{V0M)Gv<7pq}TU-M4Rvfu%=_fM#ia6C|xSBN=XLBBi<*3Xz^o5g8`Crj_)b+y^Uk zq9_*zd&QZ9pk$zYnr{1=Nw2mDryIL=yLyItsr5 zxEUipDX>D?WA#S7oH?!}ElR#{;gpDM2A z$$lwVZs95)9s7M%w7uMW4&B=fU=(DqD`1x}hfPy8Pjk8gxm){It&XM_cCnZ${&*EK zG)c3dbQ{)P6@|OuHJJb`j#h$5wkaXQ8%28Alk+i^HFw@nim49(G;KJxqd7wo}}@jq*YQpBU_rG zPRy{jsIb9U>^-3%ExpWof;{)0)}@rko4TX zgFHUKlrj#a%)2qkD7akEjLBNOf+C5(jo>hutc=|(se3zR%F4n;Tqb+Lb!ghE>y^Oc zxzP)OYNEJJF3-85L#1ZyI%8*Q1={DFZMpdWF=zDqzwjg46Z)*7iCO=BlDL_I@%QlmkJiD;><- z&~c0+F}y2TOVxv)Ok&}TO+&SjHD`Wr_l(Pjtfc(6D*`>PH9n+6I+v@aaN^i5%yLxb zoT7rS0t40pMwG?Lv-7O0=4;jZ);awft)&KQ*WYr=lQCcX zeH{+Osu)Gto`C|E(LhANIGT}OzPC-X)oidpl*3xqG&>6(%rtZ8UupZ@n(!>&Ej0Nn zl*=2D>qJuHtsO^=0!qEC6`M`<@``Dh4HvrN>H=o5ouLD*5>j+1!+jJd3T}DQ7_1E0 zuP_x)$<;mHW*hS}jx2heQZ$qmT|Kh4 zBTs`knZCD~d_?@IpQ>(_&&;JkYp`#;;wuQ$LM4k~ma6kz2;Lh~$@DnE9x$ZSy$bPP zfwu$^y`+sSCB2V{72WN z-n8p3-yI5}dqdy@F3r{sr3As4g0n>Dsu&8iW?>Z7z^+!hqAQoZW+lA>&!A3)4!c2? z38PeIG!lO@Qpf@M==&_F6O-*cPw~KO@w}yU-)>NF9=Vul>6f~Z{FhV@eT7w?jV`X4 zQfA)s_3~qBIMhm>);st3t{I*#ELp|=W)x)im))&JkHvfD2&8a>q!AdPeR>>ZId%&1 zy|C$Tjwz1$$yiZJQnMoO0W~2>zXdDi8@FJ>T*~1R+_7EiG(X@Ad#JOXcx}qHVp;RQ z>Lc*RNI0j-;iCG zGsPgnXf9t%MZ-SQ4dKTgPr=$2|5X~%?kA#eCJpYKOxa!;0tvtVJyvr1>bxD~uNwig zoa0)|FYysmLdjn-8bA65te=2DBsi!tD7a!c_(Js3DCqe3*r-C1NQ7dDXvwIVxwv_l z$vEiZ@=4U`(kW{B;zBg@N+kXZN-GI^*s{`cN;Xh-AsCQH|WMf-Ds>8rIEMqF^mt z1Y4(KSc-Bgz2O2kky^@YLkDdWbX4Uxr9sJ=duNfIL4Wb8>eFY>UO#-Ouo~m%Z=yp~ zjuxIen5d$nQ|iWk>NL(>*OnJ8rft>8R4+uXx`H%RNbbs5D{)O52yB)s#ED`G6DI40 zuB(DlEL~Q@XE>f$xBk7#Ca5Tpl$Mfm`x&jL>Pxr;Q`U&}s%x)bzj_t-Zmey}gqPvkXs$@XZLbSWO-R`o~1x}h5I}|Ndr5qn_{0Lo(VXJYqaP2Pjrp%ek zYj!_c#x>KzV3uPJ9R6n2fpaJ751?%O+{aoxUJ+stC(+O&RVc&}MB8kPsDq0-C{%KY zglp*+96kI{Cy79&7(*Ul68Z+&XB!p9qA%m+1e;2x=t3h&Ai1-XPvc<19*50vut^9r zeP+{Wo*6nxuVSiUGg2{k$`9l^#ft?9TTTxwt z0zQ<4N!d6R{y`WWGaRT;N+ZKTG$LgPb_q;(%54JOBQ!!e(=f&vqMlDmB1#UBKpHZs zAS7ToNC+5Sdg+s_HR+^#O%-vV3i}InmzNVYMxqJ zuBJk&hN&Qrda9n2=l0a7GRhdZNsO!nm?fL`c9K<=bc%$agIXTwQgRxN^}z?>y}6Z* z|L9AnO7LhFf&wJegz6#By1-ya{Zd3xO?j$l?0A-->|QW{=A_J0qe2<3dnG8D!cHYj zCYdw-@y^RrH1a}|Uo!C6<7d()YRK8JNIS!iC}`~$8_>Esr_To(l+fKJ_f%z7Ck(0P zkcaxT5CQ@h>?EH}F5g_rL9R~ul}67h#*2(H$TFVFjj_B;-vAGiW4J)4HZv&U)=bXg zhU7@oG2HqK>N1E6P4rUkoN0D~^DO!kD^qpOOqgV%)ekeR`m4y*cV%q=2PUUr@<(7_ z%$DdE-Dq1*89P7%?S0dvX-#rJ{a-DvAmaBRn=n31 z^r4X=gAGKO&t%NdG<7+XL)%-MtFeA=uINb5wz+Zr0E8c+?T}yq1$>|;Ey!65YJmO{ z-`MDD7-`8W7Uqx}d94K`PyhlX5P}r+YGW?gNeJTBkNA}=HZe*^NlsC{zdc3}%_Bue z4h0MXPKIzQU>v<5g+pt^#~P%;4SqnSJ)zC(eXQZ!KD=~{Mv-na&5#oERJS@EK@B+i z(j9U*U;qbjAZH=SU=4PF1C*eHLC?|EmGTwAuk>R)7a#xv9MCWh3{VCkpa2QtMvv6V zMNupa2t>#;JnylvM1sT?s#f3_Lc%PEsv(Veo~IJ|$mcZb`_%e^$R;0N@-jxO(&p?n zI`#1{K>!mI6bpuosWt6lQNjy5UVs7zD8K<1XjsE=us0dhz;^M_6JpM?JN}%6WIP!o zfC4zcfeUOg1st#d*FcuX5E`P8bD;?$g|UmrWDpoBa0fM4atxI*Z<>W-8r9(Q3hy~) zdQSOI|3X!-(&fjJno(7&khUXv=~I2XF(-Ud7mA6TXcfhB5DGZp00&6G0v7myrY@BN z7obEH5HVpv?UE0!&}J4kNgDzpAOVHOaf^Mc$E|kKO<@R27x1`AIJwaR4z!CRsaq#D z&l5_RjVGI`01PS-$4D8uASEyXoTz*%870vAi=%ke zUng{3d(XPELHCeokxz!qBc7|rQK?pQLdXQsXg{xnR`!j5+B`%wMFA^`rgx70QKu~ zT*e&T^b-^Y2NY;jc}oddM}&2i;~y6~s|9MA0=NDE2d0>T3|=sUiW#CBGr++P4vkCR zI`jh$a3hTQD#scdu)4uW!Ob`oyypT5G^J=;Fi2nl1dw#6M)uozycfQ|Bv#CVIdvgy zXt_Z|`B79RLS`h?>HPX)DD=_tl12+JCK8cKn;T_;eR_}97^A+H7;Cdpbr3cWOBq#; zvz#3!ktQBAp=u353EUb+1Wqy$Gq8cVkz(jW@1Xt$XhUYh6yQcXra%IGrKOy6hG`9I z@KU3(wgV!t;ouFmgS_n`1za40;TujuRed}dR!xpkgNj7X6 z>t9pu%c0vRY?DY@OD>gU#6C#5$b?2)Synpv?kp`J$I*BgfkfAV zxy_g2L;v6hhjzgRKac?mSODG*7>`XD?EoSql)4(6t}PwbMT+N{x6>7=!*nSFv}Hg7 z7r1}|2CzkJMo==|Ez&Q7F%2&r3Wm(+rey{(Q!Qis!H?-0Iri3X=0Yi-mjSTPRIWW_ zD@Em;p{=rA4jVQ5@r<~Tvz#$x-(f#WZvL}C0oEy?%si)<=m@mIHg-S+rnCD}Xlr}h zLpne(%u|Jf|p6O-BAtlLu;?syL7OVs$O5?1_B)$0(t4 z38423?(hmI09 z$ix8|V1f?SVKtBfB`6Gth7v89Oc#JwvLt*t?{`W}6((4SKS~2N_V-CWkw;1r7=)Jy>tb^u z2WO=93h;ZcDdxh(0Tl>bdxZe;=wcDT zZ5cEkv{NmH*KmnsC4w{l7prrR1r&a^#yu5=e&h2Bjx-C`Ad4C|c~@wE0Twi-!*jc6 zIm6a}DzOOVb_ifcj09;l?Gr`AxC|e#gqT1A9DoA%SOQ@ud?naLCMc5>U4`QU=mo?4GNhpZ3#+;*)%fq6sw~l=kOc4XiA*WK$ZY|VU=>l5p8u7N|>Wq8seOo zfJJI0lag42lQ{@kw^w##40^SVjHzL4l>&y=lRGhq3UC2mWQThu0~1(*efUupkO2pp zOcp?sunC(}nNT6c0W@Z5mlk*w2MQ)LO}TkC`?m=dI-F$bgoV*HDAQ?anRxf5A~E5d zY

!a8;fY6m;fV*LgmPu${*-7i|(X;1DojXkjk;4oQP@7S{~PQg6Stp4_H&XhoUF zWKtghZ~iX!a|}w8$do}H=3z!jj~S>-VN^i9MS~)Eh_Pv)2ilGoprBHTfmxSU_6Vbi zP;G#xli`D8n&4!Xz#afWfU?#ja5|jJIg1;ImEDq}I5aA@g*rb)C0HR3fHniTpaWs0 zYKt;5^%N^l1DIBnqgqBHEr?dibXGN(jba*S`%@1jKmpO^016sh7I*>4_eHo=M|}u9 zd6-Ng)uem1P;Hld4E3r9il&bFm`S=Z)gjtSFuzpXAYeMuS6pX_{SkD@I^a7M^Sa=^dko707K?T2ZxsVW^j@;Q~YcS8!G< zbmk4Lo?3Cu(I+)}5UTf6Fjelv^P| zV}y&!v{Pk;B-d=u`)u{gA#vz*UDR91)UZ<5jI1j%g~>uKC;{V<0g~j6vU-9U&@gKU zn)FDC?kP(MKzytE0rVD|39C>MpmiYSpv(Jc6hJ_{NO3ikUyYJ8$m+Ctx*8{YveV^t zj1n&P#gDL+ zH?j)z)2Signi+71MM<>+ih{_L0T=sdkJh$>kO0U;00Te(6reRRCIJ}`0m>_}YYM`9 zH9*dbBPQ&9B&!cQQA6pGAJMuDm=bs|EMua3p+thAIXtqNG)n1nVZX?71ERy_0XnWx z$(clXrZp-eLkK~kr-C(sl9I2LD3}H!9Tr9+A#kx%`2j*ul=yn47T}s71;O=L-5|Lu~NmXUOo|8OB%*jgoemv~7$%DyDy#6DaGOek}zmjO1f+;bq z)K58KR&Oi;5Ae!3ASA}Cpbd+GFcy{c7?la7%p%AE8sN(TV4EVi0JfZU9K5Q)MVm|t zV+e4^=izr^_c$hu35D}LoRtigF~c#7B+D9p>9norM366=gtz#oy~xu%K`=kn8eiBdf^%TC!K z&Ob5E-Ru;dWpYGZ9H-(lfP669>(h=GfB{jiPhyKm{)`MIxM=wbW2^g}m}L;02QE-o z&<_v+a4Z2S;J{MKZD^XYC`bVueTeI+*2ts*VyXZO0FN6RV{P}_aNCD4COanG%+o8f z22nG9{F?&!%%L;ba+(a^G)=mev&-4tDp70fcR2o%M4&8@O)VFdEPwI(ujjjlRyWFcQ>ZOes^In{l_Q$$gn03zd1$ivMD5{ttsR@D#N(yr?{hmU&>iO z_4TsX4Q7BWfN0TwN?R}vHh=DuN{_tRfYDX{`N5%hssT-oOavN0B`}!M)FFUeL%kK? zaJ&EoeL)W(rMoQw4f9(Zu%^N-;Sa#15YD_(ho*yo%W@5w$$d-(l)|Totgv>{rr5bB z&KZ$cWtG5h?E*NLSR!tdkS024-)$~TsN(@6f%|35vrq-rKqC zVj5s$L!)L;B{Z3N0bKn63-AD|jsOH8;lVA}!##q#{nq;_=asooUwneVEzG;jSC1xG z%Vrtyq`m*~cP75h$v()0Y-NP5Ye>epX!#kW!I1HVW?s|Y(Q-}&mhE8n4d?vcmmVz< z8En8=(Fvsik{QDOO5KtN4HIa!5di+z7O?7W^Z*1f*Qp+31c2`YpvL?Tm2vEza6Qsb zX_Ha;stepOXd7KNsmw2C$8>(;(NOFrj*3uIGfMK=etL8KhQmMR;?QnXBRXgwDU9+| zzJ(19a>FY8u_~XEs4lJ4PCG4uFL+808{tNPyU~9mk=MR&f0QWUBQiIDBE;vGDkmQ8~sC%Z+@F z;t~niM@?X9j~P9Ic-bfSiB01odc#YsADHq(J)Ih}f8^9+K2}JV?q@I8?b)|Nq)mcD!5k79`S62?!b~DJX+PhABjfi;O5JijR+tk&TKajF_30nv0h*E<`P%qok#z zqM)Eepr5OXsxpg`oSKfaB(##Vmqd{$DzurDiz>w`!;rI;w!yW-%FVLL(VWU86WG{9 z4%-eB4hkA1$IOo_{=~_S91iRX3J3)8@&g2m@k9s_6d4~OAs+xQNT3iQf`tnd5?Y{O z!2%Hui!vzskbwgSfE+R)Z08PvA_e&3!8=4qQlgX479}cFNLVjSj$X2)){K`bMlD1w z5~Xve0DeG$zbk4tA@QOXQxOSVi;!00h2oO0a?MgID)zJ}G+VQZMtk~F+SXoKX?iu9 zjUBf|-q>-#O6lCxbSOTU?I@1`f)E_)DMBz3fdUHs{sFY0k08T=4li6FQjtgq#uqAn zV2mk)1ql+s`6WWPZV5t&5*^9~mf12#qE(s{OUq`@oSArP3VJhEP?(r54TY)osBfh* zYeB-40vKx|c{Eh4;+Fd>D3kyX?fV;m^fP-74&l96H*XyzARbrIkmYA1olNpZos zWZH0}Id|MpJ%tkDC?mdNq6@IR(n>HT?51H-zcB)yBrSqBlvKt&2Uadvap+?@G7>Q( zZZUaS8g)MQXq{0Ce4`CF=qbXD10k@5T#k*DK*D+6yu;U*Bt3QjKJGja0XGi-c)?{7 zJk-!a3Pq+M5sKB>P@NZC^npbhZR90{b$tMuXfr`q2rxxT$CPv`wb;^0QSqOtTP(VF=EdUNk1u^s=1&a}J=b8*16j_0G znoI6MbUvgJK@P%Gmjf-ZRNSsIEf-!Vp$6$9q?;&G;!Uy%Od=zxWJ=p@qJqlHjn~E4 z=}?P~wM=kEPJ%IWmduLlG~w-QYjezY;A}@pA@56Tk~61j zi3SWfU{TAIw=B7pjFi;WKQ?y>L9|~cfPkPWd|=m~?f_k%e+yYq;6sY6X`s^wnXBhy z;kJ8O)mBSr<;UT5-3fF62g#y{I?0y2rkM1^Dch-h!f?YfQY;JIxWH{xqc{D=k+h_Gkn_&bIbmRK?S!LZnH$LAol9#IV~5DJiy z5Z|tLQAyG`jz}eo3Rk}76RWT;swIWZon}X-2If4U~X=&UB`2sfPd@_#;$=VWA!-{!%L7fsrOJ zNexCe4`H0bgbQSNlT)<@lak0@!?b4!bkZa%BpaNEL^;Gw9FA|N6wb`_W+>uGB?M8t zWh^1mG7xOwq7|rs24wb&BHBVr_rrkagy{|jh_N0YCiAo281}Xr8TpFV*jwk_M zy68Cu7*?2JEEa_h=+c)uP=n=K4AdTCr>5npnwKd^H+w3~ZwR&iBu31H@P5QEOiTtE zx`9ShBj%fSA}=;NvCTYDG*1=L_L2ECXDM$XDy1|Pt<%|BbrL#0xAH5k9Q!9jHAdR5 zw8)hvxN9wIX%P;9zyu!fzz9a5T@PHeN`FV}us8h#(&aQ zE*>FE31RDuoEFpGNu`=msY8+*Vz_bhppWfszygxco%q-KghTRw1-1k+AVCgdz=DRw z*dGAFE~PEabQo;6qc2ziqMCAo@^%N9K!p|pNDWMtVX-NJ{lH)Hq@OR}X%P*?W33gV zA8$3t0Ur>ESu{{_U!QjZ7{CAozFrjTc_@*8;ZtNMNI1kN`c4(RH6@w}}4a5i@kE{*y#5lMrq$rl&VEtjaJzKPV5WhmSb?bV_GK zWfNW#zGbsYC@gJibAqVi{5-V{JVMn-4j?u za055M0t8qI5ETM35CWoS0z0;2sOJNq2YQS!fiW<9FcUz-v>E8tbrZk=yw@Tj&_xyz z7<-a5bo3DDvJjeOAL3F?|4|TT5dqy`7Qb?LWCj5Tc5{cu8%v@aT9s$4u{??=8yU7K zkEAIrfN*eQILEV2(%@8P)qfy|bI9OxKqxn)R6P&VJ)AdUId?-|NPq;$0y$uS6gYqo zbrd&H0tIM*L;wVG=mT`<1DG)Wfd?1^i`H)S29Wkh=ZU_tt^Qv(4_m3VwI zh>7gbGQTE$itr7NVk0(kdC4UfZ&r(@2!@=XHWemMj7JNwm~6@=7D^FfT$o^7RfX)Q zR9skEASaAo*mxA*N92+yK25Rh|V2Y-;aVpKR` z%+^{s0b7%j2+%e?7eYN334hVBTF8c$UU-Y`hbw)Ck=64O)&q={4zi*h=vu8M9={aIAiFj2q)UaCOrjcM34T&@> zS-4JhX_08zG5$&6DPAa&i8*6;)o3O_hK3o9JkSHzS)JC|14Pi5M6j4MMg$;WGaFZ6 zATdk?XIQ6JS0nI-uXKp!7)y*mdZv|#a{`HYgc+K}S%7$h3;Tmb3F$(bD5lP8m9;bqS#o5e#(+5$pe_ctjtOiF;Iaq5Tb<|twa#5 zuLJ_(Syzgh4UAe~#N=cd-8D+G$Lv6!HkavKaOTem`attG36F{-WF+OjnIvM>8fUv!(CBT_yNR(9kYfy6Oun+cCg>;t= z8H;B-e_&{_82bpVm#oA~1jXC2-I)o>yS$p{sPyrLr z0EBB;4FJB{CBEYen0p43DPA3($%+hbx|$b!YQ0lz-9n6oKbs4uI0)I=lV*Ux(J%8nIEu#M?Utw0S-`LUAMgh=fV&W0#Ga@DNu^F8w{sR3#1aOUMp>1dVZ|Id(EaqXDghxyS1&$ zz!7YbylTd5Dhy_ONqniNZ%e!!tig;x$BV$HAp1(x3(YYao_yTL<|{v9oZnbdIteJ3IQ0vs!-?)AbDb^ z7-0dOu%@7WtGlqdyi~7hy1^PTv#Udhl*^@cQ2fMul|;a-{@e?#m!d2A10D^>9Ne)V zi^t9y3?%uTCSa4&NxhgrV}E>Cf~?IviV25X0gBK7GK|wSd&88P3FI4H>nzDU8?68_ zQ3cWv#^SB}D4+tjar<1#J~ByoCZ=`9x;w!$RlNw8BFp~!VXj+R!937!CA+;Ps|(tN zd6`MtQ^qoaOKy3ya6!H2{wJ$Gkw!I z-2gnQT{cStns8}49MtJrq>izGRfl6DU;!OK0nVb-cz4fK`H4{Ng!9M6I0vUvWzeH2 z%gu0vjfcyq7|dRs*4LrXqarZ~Tu4%A6p@EW$mKfz3OLst-3-aB2p@dXf{NT`xYyrl zhJO9mm@oo^P1q}(35bo@H_Zsy_1K(HZ`nF~CETgj3PGEFGxJ-Oc?V2KD=JWJ+hh%^ zrVAS@ht*Zf8UQ@Y6#8JpoNaBrRJpB|5b12K3}TqD7_5^gB*4+foe6ThvCQn;C%p(T znvBi;ofiJr;aPN;_G1=hSJ%x5*`3&nz}Q5PT`T~kJssJ7ovrLFpPJdJnkoV|Gc2b% zeV|;U_xdvLZQ80V->0Y(sX<7hadIJ&Fe&oCpupN=YCTP8NCFMtv(2Re{;=Cd%<;_# z;UYU-w%`~Gx52QIDvIF~UdPa#j1>NW4+#Fv)clv2=3_8zy&?X>B;K+me&Q%@X)Es2 zJ_ghs&;goYjvqkdHuIQG;<+x2YV3__O)Q+}cIB49+PKPc3`!g*mkDI)Li+@6GVX;ByGNlL(QB!wv5h$>+4Ibt; zu%aYc<`}LCYL0sJ_JE7v>k?mdO#av5+yw&OMeK%6vm{Q=;hDI4z6eg|0X_zpKpDw1 z&Z&q9l#WTi8ldC*h##Ax%4vON_F92jlsgamEDfW<-K?#3C+H4lDXnPv`| z(NRwG16)(IU|)Z!83Ed%VpM>nWN8JTU9atMCrk@Jv^94;ZAjzGD(kZxR1v z*(K+hz}Sl&!xbR+G`s8{?_;^{Vb1J@eYI@qfIuWjB3Kwgba5d_vB*e70a++$K}7jTX<@FtD+nXZ%Q6B(1Y>+WQs@B!vataHA<1wmIi1}A zp`o!+A?PszzJakpG);toA=x2PDiUAVLBB2t!7x2R#Na@YY08nL3mi<5NMWi(iV{Q! z5n*_Z&>=~L97a6;b?Aeji9|G>N^QTalBZUvSRv`8=2ImqV;(JurNx?~BaO^i2oht)9E7SODhjpIrA>3NFp+~QR3ab* zQN?xjDzRT;j|uZ?HTqa0W#v*+yB2YR#QgY8%RbT?1a{QC6VXeAub{tx*V)66?Ydeb z5@ff2lr#R41PQwPXP%rHXey{cglMAqcN$GE$>d*bL^$A*Ynegv6Ky4U0t662*boG2 zq@*GUD>wM|)NsYwVq760B)3b8#Rwu6FIknsj3D34#g8@H3F6j{Z28Dmcctt@O_7oa zHVnh6TP7NG5Q8Wg0>NQ!9*QE0h$Q~@)H5d@XQ(qQ7Q-Sl%!&1tF47TE!8Z3Cme`I$ zZikkpITo_r0c(}l9jS8J#h!YB9f^UH36z&s1XBX^h;EEH0-FR8j21$g3YJplNC$3K z$o{Yhr66XO30+hQ2^=-l=C9X8CJB`);cBfwuKhz02ONlCLJvR)lHrE^{Q!zlJlrs1 zaKKIVj46hKK$bX-E;<6ER|!&MA(f(q4!~b=4uSF;_epFHj zG=-XMLdy-~Y8XV){-ryVi0rc9ZdJs|OWX#D)=Te-E8Z)qDIQSwFTm5JwVgEwh?*7y z1t5k^H9i)C4?3o3AOd0X5aymbc@cSljtDFU(5*E)SnEhrmV#5^g*5ijHIoes{;VL! zN;27&T>47W%%okDU_-w;RFEY6wPx*{bOtTkCLfrG-60a}PGyU-sZ-7X%Hf^)ao2*F3A> zJy&uH|`eh4iP1R32YbCQluhi*oX+c>tOGq!9n5;kAoyU2N4?Zs(l2BY-l3_+Cs&!OG&Rg zPf{4$Om#832*x_&;St&pAgjPxiGPY?#NiZoGRCYAiKbwgX5?o-$&qRPe$7gX{x-Lf zEDB;*f*75CuJu2k32!xpOO&~jQ?wl2!bh05^yMKd~yjhPYQ}cEHI7~6a-OVA&GcxP#qJ1&w1v8$(nN0 zoZtjUPfsY91^`usJW{8Qx^tF%5UCpFArEN=R^2R_F3!wRLcR_fzfC43@4 z0uB(Nqj9Aa3q;XEs34*X^3_FAGrF4TGB#l>2ry3oE;X_d70VpODNy=GI6jkHl315< z5LF6uFo~wvIF(~3Pyud!)0`7HUiY?P4ZEl%AJ;*cJ==oFQu08he4B_sLBbSx|#H7vzw*_N{j_9+wz9c6fr3HrwD+=c}6S}3? zlS^aq8x@tXkKb(-juw`-bnHzMr`l}5#%4CE>XQKq$W(i=5jS+a>MfDf6g}a~$RO#H zNNV9&-#+#aR7xVYU@V*w!Fnqui?XL31vD)X+e-PxyCiYRgCBsCxS)?Th-_I zWaCE!J6jJecGG~R#k>ncuaE^%X?!;9B}XmAx)H-XOAkO0Yoj!}&(lt_5iES_Q)re# zY0%p)S!C9_brVm5zgV-n6!nweu@Y>ELMVa)88tY4EPf3L$BBt#Mq=U&Cu|ffun;~N z*I-ez(m2wQf)kuJajwb1bGT=0f8I9!b~;H7oqo5UI7)3b8Yy1_9Do1`C_ri7t&;g@ z>UlgWdcx*ifC30$KB8jYVes2A1xP@NlVEa{uodNm@~q(ei7S9oa3C%voJ%Mu0Tf^T zlF=Dlqoc7zu1)sem(VKX!4}HN=^R~C>{Wq+cjhz4uka3&7A`Xpa29Q!T{Etn5YwgVeRx-5cjSVuMf9Y zpp;P9IZCCn(?<{=IJ@K$9_xn^p(F=}JIm~s(TjJH?x?Z5T%Ft?#?b8sBo##B1AhuO zia+Jfd>tJ#RC1!Q%QwG?m(~72;GWAL=10t%?~cBkG13|-o}g-2=${&TPUnA;ASyn$ zd8XxV34>|dA$6~ZX_)3h^*4E+_aIt@ILZP_ythO?Az{9^RXO2s3imk2X9~;*ai>sm zWfy(f_f^*yWoE`0LIHS*cYe*bC*ns;Ihb-gIA?o;eu;MjS`lK!5emskbBgbT$J>1W^Zj@^ygmH4;TvFqqab4Oo9?!$>Yv0AzSJTE}&v=5M?< zA-wl{=A&_AL^#4XYQ|Rz?jr~UVm~JcaTq6Ni%>qlCUA6hf&JBW@6c>?RB|dsOh{vR zd&O)zXl!(JetSX`ME-C)FG7Uz7k~UGd6~60M51l^2V~_YBw46W15fmf)D+c9tG21NWtL|qj|9XMO1_8(VkH+3X;f!anwdf+BeOUOMMfHEk)$?il^_ByU;~H;1U~S6bkuBjnUZDWRrT~FqSTJE|ke`PD zTc9dYok{eAZ9uRTxPXg^6*kt|*H= zie3Sjh3-i(IVuV1>8O%G0O+}yEQ)#rS&;sqmII}b99N8jSeBpa5~Zpct5yiB+8MZpcwXJrQ&quh#_t~YP$SqM9eE&dUf8JM7Z zIN_Rk2djkhajC{@rm7NU;!ylLGDRz-@QRks$d(yMC$oXDn@|GDva3HBv1@8OzfdAi zfw68^KPS)u`6qcS+iij%0C6h-_{FwxlVZv9m=nl!?iE#{cW*FCl;oL!>sFBFIj-lL zfQ*Wn56GSafB<ySPD>gvqrh2)eE<}=&pfy{<%A&8@~AuzA~Gt zq;N9hxl$UnkD->Txq-1+mPATdL8Gt@Q9mW{rZ;e*W4m}2Td{>=0vuohB!B`hFatPH z11TT^XHie)WxV_dfpHrEaf@He+f+-piuL8Aj6{Kg>b;IJbUX{5SGc2>Ij*K~t~8so z^!CE@MgRn`D-%b5E0x#eK!K(r6grXoDvQakxtH;43ds9bPt%>=VyEuzuTJz+LPCweS?b!2*O(KLau#E${&v009aRfGlgnZ5#l(tjnvXgnNU3 zHM5GGu7aEtjN7<_tjviD$TUoEg{-4HtE1(+qmg=Vy(j<#-~f(HeTDGIksOF! zb}SR+x%*0%1(lmBv6~#I3A@`S#To*470ST0I%O-EPXRostcfVF0u84EEuaD+AOa46 z!O~j_0-(#e?8dTqlc$nhOh}j~>bKMTt-4{je|!pws>qokqjBrZQrEMlpa57B0bEoH z5%A66Y?dl9$;Co~%d$~FJj8Q#s~zbrz0xM1JkS30yt_ONOoI7-??(&0aswz()D5>K zB)|a}(5xUzsZuAm=vIKt%307FljDXRsrQ}Hi-x)=uAa%G)61jK>=LVY(1L8pxya&6Kn?H_s_#Bo<8Q7m`#ssIz<02=V!l?B-%fd12Kas!BcCMfU$9pC^8fB-~^01BW02aulV zY2QzMX=j+)_r}$!P0`zG(1GmL`lu4Q&6G823fMf&FYFi{UEk7-+YBDn1K=^d~|P)JcxVC=AwK{nS_Zqn1xHPM%EDYh* z4B>2D+aux83|Xho_s3)$1J8uiUxVl*1QoXK(jC!Iem1NGIOevMkEOoVh$Q>;RX3mte2iL)V(%wwm z{b6gOV+yyn=T$^eAwHI7MWq>zclm3&OS+b-#jHO2dxsmJ^%y| z--S?PSW*adUDugW>?)ly1%f|nH<2Q4R>y9Za(=a^a1%qL=-iI(?Ok+od#ORe5i4#2 zs{>2|jpzi)NXgw0n+}4tS$O&HS zKhN}~VCK3^1Rb342!Qpa;P4Q?k;tyn1IB8WgBo|RdE98q3G>R-($Y>3cmmj@Bk>S08pPLHBa+nF7ye`vx2P1HNT?_o~Ta0 z^qn5zhX1`Ft;`313XYn?2bt+`E#nVA*QM~txuVk6N3cfhw0x}_3&AoIPgZii#M=T1 z4v@p>3i)!+0GqH86Y*v79M8a{=dZ@FCNRbTbKehO1R^-1CGkpJNH zE~C=l>(C#gjl2H+)ZG23=f)7;$Gu&?QSTDz*?OQ)1fpLE53tQ#U-oiGamfzOGR<2U zpYaB93i1O8B`GCDg@%O^hl-1b6pW6HM2?dbm6C-SL=FxL2n3%61EK{43K|?FDJ_E` zt*#*-u^b#4n+_2Y5|fdJ5ds0gL;=FU!NZEf#md3Fkpj;|&(Z<~)Ye1;(aFRDiqqZQ zhri6>(V+#=1J>xx$L`IA0@4huvN5AcY*5+(XauwWrbhz1&Dl!8dZNF*W= zayZeD!b^`XIkG^6BgaD)AR$~xA%ZPi3MMFUpn=GTS0PTolr_uH$dQUJIv{3D7*C%* zjV)8Q@c!Soqu}C6izY1GFGES88bX)NkUD2rjbbB0kH|d*3idhZcgSC)T<|V7!&&q! zT16ENHGC+y?IJ;f7OBm+%VS4H6h1~0+z4=`N)j|EKJ^l2E1DJ}6SiqFS0YGgO%mu< zENG#g$+kfY%FM25UghG65`~R5YpbUhK6~x;E0G2J%*I~0cX!UWk_N_g*y0dfhscQ( zCrAjdMIybQAJhmBAzNOS9yyvtOEHJXvs&_27=e+4&7XlD8d@4$xt{8M%SRoLDWlZ# zyH%}MC~R5XM3g7rMVQT}mu0#r#DQ^zq@YS9$1V2{3KI=t*Dlu;R>));Zg?0*9(KeX z{&$O&mtl5#X`5n(By2w8?aARr^r9rzE5 z%?Q*aaCbG>;Bksj2@hQ*3^1%>Hl zBW!In9du}I0_Tc_?8FHtiXd>+B2mGURIKlW*5|Fb%6H^xZ*IxxfqPw~P?A-e7SSQi zJ+vvOT#gD@ht5iJ7zJQzxE3<*KeXfbO>bPbB`l zTVw>g;!;$vkKPLVDI>=gf@y_`LPzbA*JYT|kUK2^mXP0O>mofAb7e6>_qe#< ztm&K!t2*i+6;5gE7De(Q?edAh0@?0n@2_t*8W41j_L~#U#1=#smWBju$V7SZiQ*(7 zwRNPb4|nqICrmf(^wV7xGOpC(xEE_PPDKMvjl`7vVtNE!UDecvOsojm20pMrp#d(k zD?td7nlq`=9g;7wIyXaQToLsR7q4J?3hHw_G`m@>Z)g@BE*RNAI52v6_3|$joR?C%U|dz7X0Ln{D9AE62vR+lss$ zyxj&WjO5(4GYFAs1HDf3{a~&IVos~;gPX%j`_a=B0lnuLa4UDp3c11osHYs*a} zx_AgeTI686pulKMA=$oSx~P>6oeMdq zEW_EVj&4+Cvs9ZrYx%!hMv@nXd?r8$bP%=l6Qzaw{wH!C;vil$@>T{ts7mSC3jvYk zf7P_(A|__Gq8=hh9_7V8uBB8C8gZRZHORZpr_cfQ2BG%^NQM&RK6;hst8M$oP2n-n zo)ICLXKhQ8oRm;{zGb2OC>|yurnJ%RQIq` z6lox-n!&;P^|nYHR4qTMRMRAOkZwVg>k2fpe|%K}l8vUoibas)T-K4#y%!i6H4wPQ zHJzB$ZD5<>58BFSwnYjgVF5H-@uKdq?_#C?S!BCi>4tDVlbtN@cB4#XV)kd6jf5wc zG@pxDH?Fiz?<>h$mfV!rG_n<`G!<+h@ak5)hSexT4P0PCmDju7jpvZstJBKt(~4=4 z@9DPavt>qgt5Mt)S^B}^f57%O3D&MOXAG|*G4#fNHO-50WLq73_qM(Ne!w0UF1r;d5ZQ48=Z47|dK0v~tteb+@8a+B6Pgb8=Q~La)JDM=xWjOr>b&l8t$c zqJ}4*Sm!n3{_?Q~K{Py6y$A~p8f*c0HDc3dW7Xw4*mcGYN)DZd=-Iq9#&Va`|T?{#ew59ab%hFhE?f|CVYY1|fBs|t?L!Dq*9x|U z!ls2J<5%ClY76zPfun}u!-#9>n`>w;K!Jq_)*YD7;KGbrHwC4L74t@vFFSI|3VNu- zl`p9dMXED%$DtE7QbU-PLbx-}UVw)gUq-aiPO1P*m<0uzx|wbd5*Z zFpx+_nroU>w9`cjD(4hWn`L#nrglchY@hfEmxpH$}PCbO}gzS+;G6XbmD6a za->y>Kas?oXA5@55OiVHbWvbwnTOC?lp(}jfDoBAjCBVk{`q5)J_WcVd#SjW7ZL9n zG9P{RVL6|EM>6KmW0ggAUV&j2_|Ji!m55PpH4;^lNeq7GT2nirR#i%>wRTi%EIHMo zY?1X;8;qq1brdJQm8N2FOQGl-n>2d(S&^Nk!WB@|*(lOppJ}%iP)2IE&zTG*B&L$6 znkU&xKvD@MeS%3D*k7&IXBe#YnIcRpNQznrWAK;>kcY{!3F&Pi%81;g$m(JgtIp+Q zR7^lUc-)#Fu8;@{q$;baoX3VplfSUt_)g_G9rc1zR?3xWQto;Ghk*xhy*7 zx%ek&OKl_*oEt$1;z1;E>(gzYM#_B?2U>7M# z7h^B@Tku&0spY9Z3K0}m3qBG?65cS*Z?X|zRZuoL%DGE@gwkBIuC+O^(C<1< zn~v4&!7sL`L}HCu)u{;50@ih~1_YGd0O9isvSFzi6VqLwfMqcVdQoXSq#JS!_dX4F zh%0zgnx!_Ft_j@K}e7dpV*N(k3!tHbfT``v<7Gu(bEhkmqCsZEpzSjP+%Z* z73v9VEB{%dFkI0;|KUY-Ok!OD{r=LI7KAMlhXDo>NpU)7d?*zV1Y@xf*_CJ|h<%ML zRT>+Yw8p6~jes)>4BG_Be{AcH7xb7459O6~HA+$AOPL1mR73a4>5wZlnTw`VLFega zV?CnF#Kr@x$$V)c1IwQ#JNGInMp25jix?JP;fqn_2aC=7U71GV9ZeDIQ5=+03N=WU zmFx{%%S$HZg0eCe8I*!9DizE`ai*D}5hp!!({2vsM>YQOHOgw%K#3R4R&Mkwl?s&T z5^|&bbks0j+?jqD297$dWpje0bGBpV*nunMFj zn#y!&Gn4;T<*(HZkdt@aM6PbvikkLkE?Cq>PHC}IjPx{QMt!A5gu0-k6?ILfifH;a z$P$#HD?v0X9zcG1$2e{Xt0jU-EBT94)Ker);w58KYnympwR|D{5vVp4(dbSk z6*rk7E!QMjg{opz#H;MhTz1i;aCML_vC5mes!vCX$f#xY=^3SoS?UDpb2nm0T|HL{ zsV3JhE0qlEtYeS<*ug`lptRDJaK}zm#B~*{m`p7;fnoj7MpZV1E`liA!Q8+%yR15* zdKE&@xrL^^cJrw9mYCkF$_;W_p2i@G}mIGqYmy zyvu0e9T7(vlraNw6rk*d#Ds2UoS*fWv_EE~u~JMd&J49~hFq)1E?E(3u3*5A{FRsf znqVeg8XpOvB81m7pS2R#xLcwaE&>KvT;u}Huy(bYK@6iK@{(gyZY)$KMKc;DDXK|( zvE!a9n;HK5Zx*0{HRHf-&pxtY4B)Qo%!$u7^56`x6k6O4U! zXAz@9Rl(Hp&6F)rmi;D>*m@(PC+M!iCP_8UsjfyqO#;v#>acWp|M z5e3P#qfIBsk+-6g0%3?+bnq6fGO9&x^u0`-Tl9T;e@@!pTq?uFCaPTK2{Cm!1IU+h zM*bM+y2}r8lOaleWBA@gUn8`To@lCD2p*)uxI(O{n?Hh!t8BGYpJ7|AWn*;ObP^$- zl&YwWGd$Z3H}d*mIW!2ZeRH7$U6=?a_rK<2Oj1iXyGboYPew`a=)j#VUR?}RZdmX| zFMhDF{cmC;JiDBT{JD0yq#7D+q7xrpNI?|~R@jq46w-RsQ?yG=(W!WXrXbmm9&!)b z28EmxB9MT~{`t9_w*m1Lr=9dUD=XODn=mV*1}mI!Kz$`jgm-v}r+@-;JR0R@dxmWc z=T$#7S*B5a<|9yzlPKM@6fA>7dU6mSPzi<*0z_bf%~en2Ct4nOSq*Z2+Vd1{{z52x zBRr2bWVz2Rh;5E4}hBtK$%N7b~zcMUQxDTCyvIheWb)3&5}pJcunM zHG|`Eg-H`fq?J)yp>ZC9hHb5+D_3c#_Zw-!Mr@W(YRG zitd#%FXlHyc0Taa5b4oqH9<{uQ7^I-PmmE$b-`|tk$XniV37b^RpKiC>cM4tr6sh( zPMBzkwvc>h_H+(W5cX6MJw;M_GZ8GaB0BRk2St4x=zJLg5_)(VVW=C7AwjICj9=k2 zKawBcoUG`4JM@qqR4G1Pj8$i7ioGEm zyU{{&loD0N5&hE|sDpa>1cvW(3RKB{QJHNZ)lrxUFC`%%dZLvNxf@aOlUVtS%0xDK zwv3$v9pKT6;UIXiFpV0+33bIZz!xR5(~XfxfSll$Mdv`&uxf$zHiaZ|+S8Ckkd=rc z9Msoq8sv`plraz|FF+QGN_iSX*O@J|dgv3HJvpA?;xcdc9jv5^H*tomS%!=0i#UJ- zOK~Nb=Nq|16Bv;rw2>okAq@XgBc7q15`h-(mV{KoFz%5n_Gw&|s9Xw|4^fy4uhtBJ z1uSKR5{=16zd$Y82V`gho~PtcNf&OHIWPQWb|i`lIsVC$MaD*$Wn|tWOqnO197#fi z78Uv!Upf&Lgf;_FaVt`BOwmbEP$3nlI0I(sQZvYH(;*iCia>S0`8OGAAreXmJ2FKp z^HCTPvscD|n-qq8!eF78*mFULoC}GS4#}87qcbox5#I@?1S4cq^Di+HWXJY6*dt76 z6dNWei)z_%`2>oZrH)sZ96ZrK>A0e;!znz$qhvuPI22!fF)hB>RA|VG^)VAenxBFO zG=sJ`8#yItB_*_CYI?b#_dx^+lnRIUPR~H0!C-H>GYZqt2+{Qs`PrddS1F;1UTa1$ z!_q&vg>7h(sLh8^Bgdjggo0n9eiC@7Bm;3(buu?uC;qn974pY9{PcRx2odQa11T9` zNQO7lVUIw1q(bS7Mv8_jQ7}M}7A+}i39726##f|t4HQ}pz(NWokO(MP2mu=oAGe1& zI!orsj=}m?ggFlWF@vS$BLHbQv$Tb^>8#o`b{bWl@BkimIw&L*P9OrBC--i7;SlMO z9=k?zYoW3{@+r&FB$b0Bkgx+kz?Fs2m0dZX688c!aDlE;C4T`$=Hzz|nw-TzNe_`9 z|0)icFtE9p4N_PN-sMq8mq-;ks+6glw%7?!lPoMcCS(UP1bS`e6)-O}N`xR$s_dX0Of&V5KS|ns7S~pB$AQFhMSBp1InT6UH zO?YaI(kGStxFo{*l=k97HF7Vu(YHNY<#;U4hj zcd}!j*ZT{X@Cn#Zj%2Ew$RK57`n8k($zPg-LRLtSTp_lRA$*|Ide;WO!-93jxIS26 zY&-d8B*c@(nrr!mbh#z7ytY=RrXKUMcEbyo~>)3E5wfD0f8aHG{)PqK1;WG+p?Yu7Abiz&iN$2rD^@Jg9sR*SR|8vvA`>7 zb5|m{P)JW^%5MpXZ?Xt?_@f{u3VoAusMKm*kR`HXHWwL0aKf_4ji-lh=fe>AK3rHc zd&)dkOB6WFwKa-IFFUS_v={!u+pv_3$;9Tn|3e_T(++~k%4Y)&8Manm+-~jxVYb7n zv=ghzw|t_s4?(wR%*BTrDpII&XQOI}f%mKp$7hE4Ax@`g_+(&}@WaL&ki8s=+*vci zLy)I3#qj3D*Nn;A7F|B{n_`g)M7Ue6U=6rw3Kkln92N^#lBELlDjvM55Sq#!)`rlK z3{r*+uQrul$aDwYHAzw??jj&&rd%wC&r=z2JG8cEwON8}aE6>iMn}6_cW|AkT|%U? zP|CL{d$%n1DcB*d5VpZnVl@{$4|u#``GyQ1J<>&YFs~vdM2pfoCt)O9VeWj1rz_J% zhbi-X8_b9?r^L&N>i#4J(tY?MH(Hpn_?w0OXw>(M)bF=O5$IakGO{0LYttlYPOP^n z$)q4Q)t9W*mrTk}GKhqS#^HNY&EV4Q%)$1m9ywQBDs6nH9hk5XCW2X5^-OJhwl7%2 z%WuPue@%|TGgLJ#yIOeI2hj`ptk}>bGLuJ|#fdT7^~k=99xQ9gd*QpXq}eRns2FVz zKlnKqCfZ|tjt>^JXdNG&q^g7ADqI>d2_yqN_uAfT3YEcz&Ly*w1h3GsdLIIk!w`n4 zBP??#SAu(W)A|cRLEN2i)LDC;pjAC>t3Y%5mbHn^ONYsQ+c{mcDJ+}So&B4h^S}b( zb7^J_-)zQy{(-8kgJpb?-d$QdWF6P8$|ai%YtN-y%~PX;6XCf1q?Z}U{e9m#EJwSI zF9D5yB{LEL(F?@)6NFvZ`P;tk{7wD=Ds@ZETpist2%h#M(eAuD3-%80pov5m&#Sf# z^(JaByJdEHuSomVFs@U>aCo&)<58v=e@mF*6yY<;W`2!-T*9@e5^)fx#v867qD-KZNL*LDXwVBXSN9BUx`3}#+@vJ!x$oazSj zjanqW%csgc2hz%SyZ7v7e`_*s1MsH|1+QJzU(%XSHW5+z6*z ziuF_et-wwH8F?BW(OrBk{+SmpJ0;6!SNPBZDL@M0F6)CAYxy<}#&GJxNw27_SK(-r zH0i3c?P>+0z6O5md7kU%#_JtqV50ErdQR=#FOV;o)EdO6k3-Oc>*)?b0$n z>WSyy4t=~iuI~ofAiQnO91ZN+_2|Q1@J3!9V0hY$49MEKw$LZTv(#q~`vL@#yq|*E zSZ%UIG0it(l564u`@r(>;Oz-P@|sw0e|hfS5YLhDn@a3=p`<{}Al`4DW)@bk|4sh8 z|C{$IJbBHdVUD58(9~(QENIts;Nbw65Pxk#eT-XMNhL&5IqfBI@g4CsO&3pXOpoO# zfS^O)F$a1Nzrs55AlBxX?8R3OXfGI_BvV8yoFz@1*b8`K9xSbtWv(kvFp_-9s)BNHnNbG&yFuuG7OdeRK=8^7ubpM3v8pgaS-4Z5hy?c zXb}-e!Znu(Kym5m<4zA`K6I?i4Y7#&=bfq;kA!{qWigqF#3z{IjERJ`JAgnWxI$Q1 zD2Pa8xT2^?n3#wH$w-N)a@klix%kNV0tq_!_(}SSI73SG>1oO+s1kbkV*YB1_!t`7 z=_xonYui{$gxM(E=;}i2LZl3tN{jfy=(4MvLejzvt0LVZ3Yv=8otT0sNn|c*4ylfk zE?5Gusg5Wk57yKa?D&EQ`Dk`3UQ&3Wwq3ToI{Q}(Y+%A@8P+6i0&oY*H2&~90Lgwv5WE` zu7!LVazxlp;-RO-es%1WGZaFLGD$Y3$SHAQP_mi^Yv~haB(rd(_=O9 z0?tG=DWg?tieTcA3o`WNQd6oRgG_AVAjp+R!ZE`PZ^mu4m2j^W*GM-hkV6ha%#oFr zIk|-b7m3Tfb(bLc+*L!4-}!Y=cYJ-P-8|c<^oV0XQFhTp!(0;Hip>?K5itNxhNM&c zLDNhv8|fE{Y#UWFr8nsf7?f$Y_>$l-sZlc1gSL%mlP{nCC}YYrUxg#ekivPQ41z>t z)lHy({wdsW1tIsMicXHzA_^k41!GqL^@H6%ci~V2U4K24j*mZ%1sFppk(8u@=yhaR zYM3Z=s!ohRHxqguc{Y=pg*XLHLs~jCDlYg%)6A?lU1StfV)EjGHmWMP0!nl$LY$nb zR0v9SfA$t&EiUjjs4{Fei&8g3X%!X`DXcfvqUu0b!i&@0B^NIF0Hi670Nq>fX72Rp zDW~Z=1tCh)LuHUG(o}!-dLf(}CYBVL8 z83hQgHp&*9-i@{)J0Uo*jc6kz8EUoRZrgsf?auy%s=6}E=Cb;vx`;q$?w~dM(~t}V z$$%*&IZj=4bNhnl>D9|=cj#b_2)&AU0~b_SUVb%8HrF{V{L@Sn8yhRM5lUz*mV?03 zv96y@*2-Ww?Ps@S(Xfok$}PWS_cL=Qav><)%=FcT9ttXMv%(R6tu`p?$K|3&k5e6N zY~fPrb#>i)SEuWIinWhwnWeQbXeU{)+c*Imvd~qhtUId^N2I3SiPetfuXWF@<#xh@ z;7wST*_X|6ssU>K)AcXEBQ~n9VK}1Nkn~Cq71H8D!ZElTG(@F@`s@U{R zg6Im|$3WsdFad>lZws3-W)ZTqjS3chnniDrA)7>SC`_m^-=M~a6+8_BIF~pP`c6ay z5-?<6?Gp|B1R*~T$tzO%tC5aCA%h{#qc8t+9bh;kq%~=zfejoO+LWc3hkZn74tvP& z945go4bM~;dPa2Fo^*h?LD0`?!^aZUc>J;No&^ znMj~s#+3{$2wX@U8aYZJ#Pvxc9wKqyJB~<|r7cpS%b5PGzDNwA|ATBV9*R}jdL|1YrYn>Zwa|}^9ZDdrKIwhWy z7&u1mBtj&*Jcp641T^mc)Kz4eIhMetxS)+mXq(flh#)wi0W}&%8p64yHo8emUr=H= zhQe!c0`)T+y^JJTA*#(HM<{HK^s+u|D!@49N$21KX@6R(4sFzp(b0%2`R_^gE!hmcny_DTH2qX~~ij#trV~V#zgkC58rZ`E3g^5xG zLDb5X!Jk{LL%8yR4}<_09{`1b6R~A0cTze1+bufy#i|uLHf{(}Sr`{0G`3Dqfbucb z1UG`W?w~|tF7Avka>~)z+0><^DhVbyKmZ4%pau2F2R1x0il0DMf@-DNHYjTwX|#7x zbu-GHyl1T6P*k4y9hxTaNyY4Zj=}ph7a~ajiZC-L%mgN|gU`&ln3#Dx3Qe<{RmNuK zsp*PrBl++z)^D8%_hEj!%W;P6f)f)2E+QS#GUyKMwNAt1pyd%=iI3X*j;y&HoJTZ|Q; zKmi0mfPiHh0)caT6^e-%AhU8g;6!fdfNE!lh9V-*UADSUPFno<%^9j5yl4dn)Hu+G z3ly0selc0#t>4UYz;ekf5jT}wi@jg7jveFK`FOF7E3g=sMUWr!8h)~jW2m4YldEET zF(s?T$T02#13-WSGVp;6eAyc$_yEtBb8)gEeNR^Z)0T-2scVHJ-Zue`_*J zm3E3$6~z6Xlc_;Oe82%HxG^(;$?;|D*i6h4n}Sl{fSOYv0}il25Cy&!0o&=1%Wae>~F=?;=AJ_&R&xfnvoqJ>ofd)@BV67*A4Ht3r1RM0a9! zZGyOs*;P!ykO&-L019vc){tc>fCKTk12q78Fvc=g0TCe42)1MpVG;foo7jmC5N_6R z0SaJS<}!Ld#Cj&80VRM?7qT;fA^`{hbhZ^q+Ejm&Ksa2{E0YB%Gm((es3^opRsO_D zxsj39awqq2kQ{Id{sVFAXI?jPfWJ=yhTw zM|P!06-Sh06DsPVb^!xBWYkJ|$R1FlB(+nPzUhfsre(2-13Rz-JwqDOqGATh33Jjj zTlE15@BtLSiDD@M959?yft=RxnkQOvf}mv0VQw`?&zY?i2$0Qh4#l;u8>eR z^HFR zgP+p4f&3&)Od??&G>E#Sjq~b#lD%loMY9s79cU9UtT?b)V+Aze%pL>XV!uL8! z)uy@XFj|8SW#l$k!z<5sZkVJKum)zpl%Nzar|<}&@n{3xil?Z6r!2vzR4JQuQ3ENE z0i8$y%jtu^>4P&msB@~QuQ@0mZ~1pNVSxnR@YdPq%7VE z3JQrL>a&*SiKGR_NfV0*u*$0N#W=Uo4FLrgivd@tOIgYexP@EYL>9VLdhY%)Y}zOZB#^9US4JLpJ$L91H;W6f%1O8&UY7*FXdu0Gz4G0Ty7rO<v zCzVk-wUF3|ubBZ6@SEccoFbZq?{~09#T&x%5u(~Fe)+eXtEz>2aMC)MiTiK1R-Om- zlGP$m`cSzrxl2l?tY+0HyN52+XnPQ5hdfETd)PiBd!{lAU9WPpUDjo)ntC+3a04oH zsM(Y`N4#6LE$2ib_23{yYqUGCy(dDb6hH)+x_FRS0`BUGZYu#65CS`3wDOo>#)|`^ z7`}0f07YDLsVM=6)tsiOfc}khCr(BgPWEF{_@e`-7vQO11^2V|i@#vFxbGkq))G|x zn@;q@hL)R#K&hl68I4mW4{}&Vxe90bX@Pz?hw#~c;dK^(xn<#LyJyEQx~9Mb((R%?I5Vk->{tBNj32C9fXc2{eIzI>^!2a96Rz;;yb+PJlq}kEI z6IP$j`k52Qk5in2-RiV)lfi&Vtw@tv-gsuo z%CDCf7Q>6rK{Tko*{%}sphhbQJ0Qdsu$;eH#1f!*Pk8}vtI%(~oIPl$K_t0#bG}Us zbf2Xf+JIjGwl4bw%^*EjnlREPJEc>KooIZytKhKeX@92R|lh{V@F zn%MU%bpU68ty1IU7{bZViv3uUIRM5er&lSkqSNs$OT(Ahx& zE&%ez%|WIlmZl7M&F(Wqsf`w_(r6Eg1B<+Ouj!f$>b8Pls5Dn|VhO3X{nokbqQH$r zn@GNXRSTo(c* z`O*FbIM{+Id!iIj{BWz1Ya{QSxyLx)0@#PG)VY0uakn=NOZ&7utpheN<{5(?UMgi9 zNYta#!Uuala*aI2sYZLdV^ zt_p3vt7!od5CJew1dp!JteoST+=&Vhgyw>(<}%)3_RaeX31TsDs;A`sRo=e3#*EgO z@3P)Z#GcK}(p65eFnu&s)iL@3Xr@^^9fTQ9>$Fd+L0=LkGJ9)gs^5`k33o_`^WXrm z)(*SP+ittcdyegFiC>L3;*H1wFd71FopUErmaNI*3Q);q>7hkDzEw@thd1aH(Ei*O z0H>^c>Fk>6C;kH@YtH1EGv9;P2mAenGF6FhJ z&EoAjy)1P-*_mUsf~4Tz!p_qPkzHHDJi-`OyGMrYdhd!Yf=lujtD&c zVqm%;tAa%gm+WY+Hi{7|8|AWU*R$?wsJRQbh+fq>E(q;DotA)4D$p(^{+E`LN~y{F zl!;M!>O(}hh2#zKoLcNp zK|Q+*fA$4de}2ODuZ7qYznF91%k$mQs*78t;NJl*2u&OE`5kj=-s|BgN4(}8m)Uh| zEgHK_9kRmI3k(2o4SkM1=?nh=oK1 z92NwR4j&o{4iOv?f|-??f{KWQAt@~?q(m((ibN@^tEwp~D21`HL@KK&xP>Jpg(Rs& zAs>apzeFS@D7(C~$-G3nz0b#})I=_(zo^A7*NWZW+=bUJ%D=S!#pvlov&FfEFE2#! zGle=jiZk%86d^BMASpqDpih((AV8pK5P}a5 z0tgUbAOsOg4k%o})G4b3BAPrA0(*+osI$~q+47fSoh)0bQnhvY%voJ&zd~45v^Vd> zWU}mYG3ffHvCm|xo|8D5 zG&_c^)mdBz5H`ezt83J75lrMs3Km9|)W87++|VleP3HdaAcFG@KYrk-@gYNo3l_3t zLW)Sx0wPP7rsAMMK!5-WLQLvzloD4WLko2(gp|mKQ=@9NXv=?Xs}!ll@=99`u@+b= zzC_m7FuxE}3^CQ5QkXR`nbM79k#R$gV|J|;+e9;k_|RsZ#UoEY7AZH`WDLR9Vl4<& zrrJ4z{q-SamHk2xMi|YMnm01Y0MrK|ac}_%KNqLoS!i1mpoWwDYUTm-&?n}BR7w9Z_L zKoc7>ztotDUcf9EOd%ZDr$}4c7^Y1(h^3-oIR4{!6HY45Z1kFGJ%TFQLr}u_P-G5) z7-Kv* z*p(oLj-o^0V2V_ea3R`AOW~)CeUs>Iy8h@4344*CvBuAkHfwSU1xO1lqqTZ!fvKeG zjz%r+n&U>I8C099H|pA&ODXt5WTcT6QY>Y(tngVa$f}Y-v(6H+zyel1P_CR^79|08 znS4^Mx1A(HuA5*TGFBl*c?&Ili5Qa~{+{xtT?>GJ+Dw_=tQdx< z$T10u6lqCB{JiQpLW3sDDj#f>!Lv#~z|;ldbyw$=NQyZ~eO%j#lmij~hu!alP;yn( zhr9`?C8*lsW1x` z8jYbD!HlD*6~mS2Q1hXC#mGao@({~n){c<5j3OJsm{oWt5;tie1RC*}Oolcoj2-QE zOIv^h7C--dLa#4_H8R2%tLw+~g49 zDbw+Ww?poD4QyHwi48;2o=6@d0!n$)ogBc5wuA;?uX)J#GDx5>#;bn1nAj92_Bdns z!eLef-1@lazV}^de(>{)F?=Ku^w}~&4>=>|{Ffse-AqQZQiTC62gk?>QdGC9nPe~` zk|L3$BnD7ZAVGJm(!~A?BqFhZQWT)bM~Dys0$_>)9zlQs*mD4n_#;^A^QQ19A_AG* zWOXcHlxmerJka9jQb^E>NewDqE2G8t0925=+Gx->R0O9;V1}O$3 za{|RkB~i*FJV^w67NVX4uqSxdnTf9$6f5W=f^!0@Ns+)OC2=Yjc=YK>0(_v9ZlP#J zr76*pA<>m|B@keuXiH;8qj6J&*I|l*nD_mHaD~eo`4IO%@eLEOE*0MyV+u{%luB|! zjSD$AxN!Jue|J&TOOJUv^19_QFB6chB*M%U^c1wX*j^K%0XbYCK-zz6eE0hM*6bZtH;k5V4{z!NpuyM$sbcB2;&+%f1H2Qpatqe!f62;Id)f zU24jG{#?AqF`)5YL&-N5c(YqHlF7eRGPq?XOPLM++Yr4@&K<5iV@loVA_a@~RS*Of zc^oi-eGoG@m;#>87N3z!L&|5}*KM@meKLd}EVPKm%XlO7fs} z; zEQ@iB(Zm_Z5q&d%-*_<7y?nqj-&f^2dvj*0{A98IwgLiu6>vk~6Xd=KXq8n0kYIq% zn@2zb3QmFx6yOo%s;yYRLII;Bul7VK%2=Nzl2atKwyL;Y4;P zUiOtR+sA$8b!9>IcTL72=2v%oC2K`QM>gUT3UOVd6;tvDH`b;=6_YF2 z;{pK#=q9MA0OKNetkG;3BLd>mfU3t7WfB4;@O1q2Ci8Jx5}<*Ww*DkiQ+ojQbzlc$ zs&gGF;d_2`eEEa`p&(?Hg@trM7p$N^N|X%LcY_DAgE}}&Pl*3hPHT%#;`Izl?>>l0h91~guno6{xu9KU;zg}0IO$`I;KxX zaau@H2qH)n02P8L7Ae?qR?p=eU9t&TBR!4mbf3Ns)!XfDOQa81z~G1{MM$k%rAfAF2m|A+QS}pa6ME zHqMAzt%E$sBQ;wWf-Z@Bz>yswm>oF@nSvmZe0E{i!zdn{EVTC?hiR`8uhXo3rv=rBf;av|m4&3Jgdd45$I} z;WNj{fMj@Cio={7IgFpzd7B4;L>FrsfRa2Z2po!9GU}Znm>uxpTvP&l{Dx!bi7vOu zfD;f%Y}1}zNmmLvSFETDdo_4~)lwZ}Ww(ZLd-s&V6qQt|n^7sCuvwe2m|(N`i8gba zLFF=7$WwDw4$R2`!q_?-$)OcM1Qqb16OjI#1vH}M;hYSR01kK+M34X`nI4V-6kD3B^eSbqN6*dVhyAS&vhHcQKuR!BKTrpz^q%@wqqY zBYyswlw!G?Nokb*$cj(sOb}{k0_u-)nU7eiQ~Cpz8Z*?g?^*k_^pINbwr5K~h0)3s4j7!gh?X6*3KGVh#g#naiI_M!HI0B={kCF6 zg(MkBmljXdgsXyuJs2OqdI5&$JUDZvRGN(4YBhLlRbz38sy&^@miXVjTL zxC)O{DQ2tsN>qjoSo?ia$)w6_Yo+(KqDi)}=CrkHD9+ZI!3%NwqPx~tyc&#C`Dm-@ z7b(r_ylVQq7Aw8fTfHOT0WIveq_9LDYl|RRjM2&fbt#-2AZtKD2_fi>UvXo)=OvW@ zxi+e~&e2tz;4PI}m-NevY!<)?`)p`hz;*|kcw@y>2D?}rey6Fr*%!CQz&{BxKAW15 z<>$Y~l#p$gL}VNObJe!CWShq4C|Lm<$HQa-dc4OqMjqthyce4aEX=|zU~;g)1Kazt z6Hvom~VFwHTb7bc)OfPAreJII8511N9<;yljPe5bb9JVA#D!D*L4`cmnpEksf~ ziV7{;=zBTIvn>h4k6Bxpz@Z!ovX*L>5I}VPL!SuIJyIMn)S0`iD5~eTF@n*b3$rjm zg3E(NAXxq^pY^3t`1P4*OrOCEwrU)$lz|%KS2-S>+r&X>e3X+`w0VeA+TNVNxkXn3%hmaP}H;NsPnL^*x zfjpbU#Zx?!aIOMPztg&|A}p{Bjg|o;#Y`HSaVwU5b469V7@8=?RB2K5+R^Yx!D=kh zfk%Y4!9Tm}u7O?FtqO69a@fN(&ZnctJhR6p-~lGU0xWO?KHvk2@Y6&P)S9gbdQ8-( z*M;WF0O@J2tM|DlK+Pv`0wS>5BA}*b)hPHA&zgzdnK0Uv$eBk!1UPMS~S;N%gcm!F~ejit@)m83)qig*hF}EfBnp_nw$PO z+_1D|#Js8Ju-S`U2qsX|dOX>M5Cnx#*_fT#nZ4OLP|YUL0Z+YvS8<|tc@#ib+7QqI zF+c<-Pzb9{1R|gaHI_4a5zmnZDVGK<*618y!4=(d6^E;*=nC9L_qCuZ!gkEi7suA> zz%ivd(JLOM_-bsey1H;n-E3QHR5{qf3)m0}H^uC~3!J6oz1-(rUxqT%HxSt~Ez^4} z*+Ja{Jpcqi@Z|H24(go)ED+P4U8#ZAg{W5ut7onlpx>#@;OMXydhsZ}&@;jS{#-|r zsJXqw^wEU_KFXF#nZ9b`D20z)W^phs-OT+)9w)WI#C_Tj-3Usbi`5IRo3;35yt0gB zA#KoLT$OOk=lwe38iU9|O$02E13j$>M-JZ%+tW9Y-+D|0CIA9Y&48jzzjhgDpJ$ha z009*M0yn?{CQu9w&N%kb7gYUeBq+H=92WH9xrEE=lxpV^haqUInVwiWDE`p*TDr{L zP}qQ~aDBjdfgurm-iuCmy6mgkEpt{pN6|;=T6%qI&FxO>FC-8HJa7Z?Uh0y~>6?Dv z>G0F_oerCQ1Nx2XM9{n&uz<48>Ocq9ojdCn%K|U}0|1{2B9P#`&LF-1-WN34Z>d1+ zv;MjF3ju>$=W&PU9GsAePR1#|(a}!92IEi%Lm=EhKTt~TF}~cweAwW{Wa+oGt!UUH z&*RFBt0V`ZeqLX&EU?@cnzrX`LZQr0y1Tm2Hr{44+Fz_G> zq^`d4vpxZKI|4pH0}ej|5WnjV-u8_1X)&g6AQ(0nDu#Uqq@gRE=3VK^8`v%-yt;Y2 zZH*y~7er9WK0b)iMX#FVzNs5c^HC(BVrqn<)940GUIY5HND0i=jSTUA;3W(Kj@{%= z?&MRi2=N~8sP8c`;P0rO>xIy~g|GqlOR1ns%3*)5WG}riVA=j@uLx`}@r3}u3=$01 zp*nI8sc~-ic+Y_Tz4y$HS0X&H(#>RSJ-~v|;?L$#hDAjzuK1Ox+~`imoF7JZ9ONfo z!A0t1B&W4)yUWK$CO-1$ zfwBjoLWLM2ijjjz%!VQzJujZCi;OH;9lvedC1<8-iL+78E0P zqS?(54Kl&>gb7AB1qJo(J7`WpUl~BCAk+h>i>bVYxNA#Ltg9BZQqa(K*suv=Ay9%K zLiFSkn>V**>=vBkaGlqOlgw_fH^KAebz5f`{_o-a{Xlo~ub(rPy>?h#>{$dLT-Ic^ z5PbP$qY)7(z@-mdh^){952UFy$ZD<0l*3Fe9Wt9ph}2|=NV=i2TW`QMBiwI9K)`@k z4InoZQQok?!YWJ=VMKa8bNf(jDyu!4p+aOfeW-h?RP zrn1r2O>ZD{FbKmq0e9*p4J0s@Cpp644aPk#l+-D?F~vbDAuFkY2F4U433tK}gR((a zD%jRWb7J&?y#!)p=Qev?J6SvQY^zQ;Zi>kd&H@_bWzG!>>eyX+GDx655b`H8Xz<-d zp1v;-vGofo@UWT0C4w8z; zwT6(?2_fgwfdwTyu(D1wa)2|M%L49{u;9rR!q zO{AVf(G(r+Yp?GUA)KJke6GxSk%t28&VI>XG%8?9MA$Z1O12@ciKzA<8<$vO4sN^H z5W@^_Ks_Yg;H^Co4G`g~au^dRg2&A@LwGG0h_LtsUSVR%F~dC0fy?7L3ux^_L-=OS zP~(M;ZyCZK<{(oFTHp?CacdCnkdJ#>m#%)y>t>&$UF`;yC(bm;a=Jr^@9YBNIcMZ6PsH#Pk|r2p&DpMIfNt+#UwL4dAT;;^SL4#y0|z zETtK@Qc4FpP%@Kk2mXHFS()Sn5dshvN`f(CMK)$ukPC{dKlaKBkm356QN+p_yD&=L!^Q!B6y+(C~*u7U}6&9(GD^okVOva zZa`vM*6nK7r!8GjW}_>h(C|Z#zo^L@@NgisAeg(@4U-`XqK0Sm2*+r85rg_6R339d zfk9kn8nyD!LWD4>;tfKQ7ons(bI_xBx-Ey#`$Ug$_#$tlDmaF~o8CZC6jKu6o;T^h z`A~6+Q#?_Y{*o}+EQ?V~TPlN(?5Sp$<`m4>>28dBX#oKT$QQpT^Nof`;6>B(rP^6@ zixec+G?hhBa&hxn-k?A@EkFbc;Iuj#_`ugtNIZs^^Fxz?Cp-rl!+Jt5lZF_<2=1A; zQ8{7|E=pC5xOXGvJoS_d(U{xH_c0$0qM;_!i6!Poj6s9|Uz6dIgdFt6fB253)Ou++ z0(eF=5=Jn}1WaE|N>Z7X(PAT;$ZIf~d|Qs)Lmhv?QqB zcw|f1*$|_y6R8C|%2N#igHd>6ldR3#Cxe2VL4?n#J=*F*PAdo#G{<9uXd)Clu#-w? zhh-T4Ve4y*+sE_R&apTfW9iu8(Vg8VXbS<183j=TVJ=9HbXxA}{*}4&$f#(oG2SXL=3)k7ag}76P^wc3!2l3R?D)lxv%#l=oxX&AHKyN0{ z;V6kPKCXHIR2@^LDolZjCu&$HDx;C)Fpz)==!_j>I^#L`_?b91tvzBcmmwfre~{3)YaJ%>&ByjYEEYC(-vXG|jCAh{@A*MVeeN4V0pj}mEagswqI_2%?7 zNFIa+I6wj&bcjG6N+gIFLgncxg1>?oMT8;jyiZ)2s{kH^-YQ_`8A%SUV;Rf$W?6xG z_FBxFcw(JZnTk6L0=QNjgeEi~fpDf*y%(TLbW+LBcF5sdm zxXcxkkxoGdR5yr>yVWJyXxR7wR+LNxCQU}C>vf8G%9hT_cql`KC~c;wYzRi|2FqN= z7_X74)Gl}V6I>m^D1mK9O^^iw-vd^#xHpMcPEIM!aCS3ZS&3qyRS*ckcK$di+l-wW zq85@ZjMV;-i*K46(L9z8r>8->?9#(f51cm_4XsvuYg9r9dJ{MALSzagsirtLa=_bL zzySm?76<5*;IqHEIB||s$P*#GImHUo{@?G4?XpMe*F|i; z?Z*ca1pYA852Q&W~5iog$^!I132(`AazC_ zH5dUXNB*;1uV99F@kJ|!Z@R>FHz#{ZD1lT`2tZ&6HXsB%7B+-n8q!lkRFzwTkUbzs zamp7@&!c<*wt}yr2^0f<6OaIm*nHiP073W~*LOY`Ky9=BG$RGDh~hVXT5(yAH)>#K zegXG&P3VN{CkUd3WbQ{~RoFA-;8F20I)pJm2lOoj^ik8YdZ(vY{PBwNWiA9k0?!cw zwQz)On1qfuf$BGVxNr)%M~6XRhj&<}izDq>J4m2r^(y_J9^DaFGr)SetfI@pp!lu^!2IGX_bJ3sD^@SqmSa2sdB@ zK>!3na4FVUbS%^i+QfNs0<7A7yDKYa}6Pv6eD+n9cFG zGqZF>%^*22*MpLfcf&A=nh*iFDVtmAhE`ddVM&sp7<&uKj1G8(8NbyQcJz^QKmf`EqLZ>sp5GujYv*o;ZGqNtD*yFmgkNsVFiojeu< zh3XAJz#&AyA$@3>F9JEHa#h_UTm3W~e*QN^n9umalcwj!9{4nLs(kB7|x6hzxL`BpHfcs)VK1cvtCo zVrr+3N0zzjg%mlgC;+VaL99HMF8dHy1G#M>yKQvZtcR(PuOV5x;gUeWvMl?O2{)*Q zP@~-1twg}GHcAK@xG|n2BivC-{?!+3-s1@`f;SuRP%T(;vy^y7NuPX2AWzB=?8p$` z;hHX(01BW}>35xeA^$-upWDdl6Zf#{(4N<3cYNu_O zuThNX3(p5D8@Q9X(+PjWbq0fdP0!W|}xZ zsoD%uyP1&~s_?iFfcJ&oqb?aV}2eDuI zr55OZ&sDLC5v&^K z1Jqkedzh1@(hRaBEIz@)c&7<-Jg@$Vp9{gcNP3j^n!}V>0L>7;1N*}a(5lIpjQ>j@ zN>-Hsti^*gwiNy_vRrhgu}G26u$IF5M@oi@Tf2T$9JabyiVd5fS`4-(Cj#3k#$hbI zFuB2nOF18zLY2cf-nF( z{KK8%N*mBPqPXIcUd*Z~(!qzIR-j z3o)Ni+pmK#08$%-5uMBjuxGP+w|UCIc-vkG+oiMT&651dxWIX6#DB?>$+>F|IHz7E zx{7q`rT!#+#M`{h5?YdGu^M0;#-&8Ygn7nvsMI#g5Pz%BXpF`>o0BaP6ps+3Jj|K% z`+`w|xmP5btn#@863p!@*4_}vq}z^^sJ|%Pl@Pp@lclA&s*HI`UIbjg64^yhEVs@X zvbdVXimcLGEZFg!l>^5CHn7SA?X7}Ps4>~RO1;#O{m)E&#%N5vIeG(`WCBSfsj9i8 z^9$1Vs>1w<%&(DmV?EYct;ds*+RzNT^DBf1fVCp+%~MRG5IV#s`GySpu#TM9#z~d| z#6iN!Gdc~c%ecjUeXA)Q$`>KjM4iT^G>wbxtpOd`k!`bLEC@K766DDvNz_9*0mqSx z{?UBQzR3Kf>YK+6G0}qDzNt;o$(+{iO#}rHgav@#2!H?w%gGUY(xyy)f{nxhd^0;U z7zUmW>;M`QvJmREZ3C{`%l+0X?bBBI*RiJoD_{dC5#7-(%hxT&OHJK}s;J$K8X*kc zzX5XPZNm-G;%IHrO=}2eO`kN*nKej>^GW01huR(Oef3QMo@k1We9ff%-?56@TWQ42 z(5w({*Ar_k&A{Lf!QjCQ%0wL44r?8v*v%GBa3!$e9PZ)LONSj^)Y$F8Xxsyr&D|zW z8qPBkR-F?kyqVyajy&O?l9+feF5j>{wp-jz3F70;kozRG&|gXLJR6EukVX13B6Q0bNRF?&`13-T%Vf zii#SC&^9d+-a>SDh=;>22-|0+l%jjg-T<0?-VKHhkCPb4M+)DeJ?I(D?Dfr#Jl?O( z?98)m;YHk_lrFZrIgpb6?e0~#qNeE#QKqcN7FBM=pML3HE1{8B>JIzuTl@hV65>oP z2(Pa1)QcMZ?(a9SE+RqIk?x8Wlb)xd{;c6naJA~>co_|wE{lj28S2jDSKi$5KH>ff+vs>okjQOQ zQFLmtfCBd3vTJPF9c~(mNz16AL;k)lF%SYFArh?wbC6?2&zE=|9fUFrzIpz_?R)1i zDDmHC@j`e21)$@DF!r!*?Pagp8lBNm8`=Z_h1veUBhTDf39*d)fLzNEaebI*#53=P zAZ)7cb$YT9-gQO(r6UjTyctfu5-dl;J0S5dEW74w90~*N1OM*t<|*(Z!IDqm^iLl$ zQl!w@@qBfD+H61Q@2HMXnz{cPa}@)(7C)L;%ei&(Rx?_BOuzL=XX@ z9>Agg$g}CX&`P2=zth|-?hSG7#`%!!kU8BoGseBrIuHF^4*t|YZL3U3CAkm_qTvyv zVd6;-12?ew5XK{!E&uVaL!WN~A#nd^fdVQ}0wKUY-3JH>2L}m-h6zN8iG_&;L;{Kv zibRr=6A+V=n3If)h?57IqKToQnWl<_qePCU1p||;=H}Oz|6n8tG>{~nQb5ra{f zPG+h^u4N`!pj_6PGyqm60;ohKfC)3vfL8>P36nYW{#?3s6f7)LhihpxXz!R#3XupL z(QHJtSsnGw);O8I&f#L$ZY;8+#B^zpz<~olefs$MoBP28KZXhojxaG|Z^4EP?{$;t zLPm)b95hVeScrjRk)b+~@>rnq%LI}zBw|Sff=VKvKNCTf6VxX`S4XRE>BwfLpFLU0 zK9#8CBmoLsDkUnkS5m3CfG2VqoK~`1)`)Bsg>6zbY+Wan=%&1SxUVhG1`jJX?XKVJ z)M>C#?_OMf{XY2nz`p%@!0@(C*^4sZYgsl^!0Gcxjm z+%RM*(i}F+W#yxf%{hm{G(&E49da)HvJ^Yq1;Zp$X!#aTJ@~{GgL(U)7eWjlh!D@0 zUvdD#1{=&*=6np@K*9}!4LO|(D4ZY<1P6Y^2xF8jxL|E12~fZR5KMr(UoA8 zIJ9P`PL5`!^CVf%9CblkZpqap2OSh!ESM7{o2&v8IFPIc6;u!peRid)-?b%#keC7q z;Pj_Q2UG@bo_q57NNtG(N(2TPB%=P=x)5d}T2H2wmda>)-kTy3Hl6s2C?~o^B2ACj zG!mtaIDn)~wAQ-trx42o&T>J%`symvQ8yi_*wM0UsKlJL%#y@p&>nkpwdLi?iGA6u z1M|c~!I#d)6N0R=b~7E$-H`Bs1_}gCfVhV!sOQlI2mnc+N-OP10)cA4uDg`Ho9-g3 zSvZ;22uIBCD`2De8Y>&}3os;(@=IdU12o7B0ud1La7(w;-Lcm+j)L6XqSQJu#;jh< z%QS>9S1UP9M!62jPX?DkTPFhxCYZoV?rebc*rSiEF_3WOmF9IB54Qx=G(d<6AW$G8 z;p*vU00IQSr=O!G;8>u74*qI&yjH8U;!7NQO^a(`ztT1lvi~dNz{HPDLmWWqaxGn*a9{wv_MOd)fwLK_PTP1IB-lF6ILSfOb*Y?GS3XN0t|#Z zKmrPA*IV$>xh>fPJs)V919oD%5FsFF%yQNQ0;H&=`Dsstu-!>8p^;=^;u50>4ePSD zs1HHxXeD$>O=9yQOEsb_^(09V%`$M&#Ot5i`8eAY0Z z;6x#-^jSxG?3;EMq`T>#62r4!KQfQX?-VunV52Ra}E zKcs*-exU(5QosQW{;-TA>}9VIwj?L9VPV%|;~LlW(QLz$VM%0%$luMoFxKa7DuBfWf>HRfCDzAv{eX_HNflIES?#>OT_|UCiIDH+QzoE-G(O0 zqlF?1If;|pa21v0+a;qy6iwQ~0#;cStG)-MNwgr9PRu71S6LLPC~iCEuwFoQB@PG7 zvJl>KPy!sl0a?L?1at|3J=#Nr1TIqn#59VMjw#0*B4CE1Xl6KRQ8usjByHrN=A=l} zFPA9KM6e+K3Bh1UyGs$^Gwl*ZI@|fFfA+$iyugQ!$mblQX2N`l2qh9rkOJ>zZ+#tO zQsUg9D{}xeSIGQ@1e6K0uD0ud`T!j-B}xP@$zvW7(5M_6=F!qAjgg7?q6Lvh6Vr*} zke5=P*vP?BKb7PslZq)RGT}`WneJbE{aRwp_7lGzZ(x!_mrn=)Kt-JMoH(q}+yokq zw1k63KLqM3dNazRVx_c6%>+{mhtD0#jh&%Fi&~K(451Vwt468gBo2r`_HaN1EnAB? z#SjPIqg_Pn+D@v2J?%KwdHgTJz$oU!?Dnf?W z?1}!R(EC?jJa-Z>n*{VoMK|nl_NnTm9+GkaRMKVxsr1CkDwL|6!WH<59D6N58@C$h&UP_Uh!;^Zdnon1Z@FtJlt04T;fS9f|0OW1=>EY?B zp^qtl8oySi;w!f!&#RRdqO?8V^t+YQ)Sr9)_o?~2 zZ*sNeGpkkCkVlT_MQ>RkDhRa+G!p!IwF*MCstZOwOl12_pnwRoX4 zG1cIBoWxHsD1F7jN{YiBw4!jK*J#@ZWI;v?2=`I6Hws}_eik=^Sm-ryPhS&uk{$;N)jBaDrB zjJ-$>l*oH}CtqafN}AX=UlDZD$SK=~W}RhJqEs=bh>D}ojdUYvNbwY~SZRT1Z6YTM zlNf*NxQ;RbLy{FRhbC;p_-p2ejL=1e1S4%}xQvs40AHwg3t)*CNPO2rUk;;Wsw6$0 zM0}8TO6dkT$&n9>M{}&`X{@M!RCI@-;!YTtcl(x%L;xd^2r-EUkHBbXF@jz#@@x1Q zg6}wpCE1H@M3N)v63gh0P-uynWsos)BbumdL&0!oxHqB*Y9CM?^7Lc}Mie{fd_Bi7 za&uoa0z?Z)WO4HV=a?Jm7$TPfNi70WgD47gC;pF&MSG9IW{wNdncbhP{ zWV#uP;y8Gi7?d4jF{C(P52cu*Kms{L6q4zf+%uW$13i|Ajw4o^k^*9|SvoekT!&_R z=wch%`DZHzn^!@SO{bY7S(lCIj?@_=JUI$g_mdtIP*-6$(U?h=W_+S#kxG?(8JUso zbd-JBPt6H=+lP0#Hwl?}lb)%dAZL5o{&|xi<`P~>l3sZebXj*~xt=d6iM>dh)aId+ zAe#Wmo_7aljFxnx@Ql3~eAFY2^!Zx(m4AhIX*u{K1lFHPC1uPBijJ9mvWRzh=K%B9 ziwUZs7J51(HVPCPa7=oWl!%`GMr|Tzq~s8gF=C|$`k}M{kn5OS8ycdik(|8QiBeRJ z2?liAlbmBnVA@E46S;itCLKEZpVI@2*(Z8H3Xs*WOgepp(6SlWBxn1-4sct_DI*Abxq=aEd^t|uyiAurMbtYxi_S}x+xwS zg`ZigZf>t`MC7Oo7cOzjDRS)TH)JO|Cq^8kRcsMwm2PS2k_D~fGM=+Wl zXaRat37B^}U&ES$KcW`BstcvigSg4nI zr*ukJe<}!)mDrxX8EU?8I9lb9;MRAeDzXCTHQ;!hG}j{v=c-=ufb{x#xA2Gdhph`M zrBRxbg1B@Vn2UDTvkA+utLLx}`=!hXrt>$mLu;FK14kiy44oKh!oY3s+M+2MJ>_^w z{z22I+u|m4GAxX9ehk|IUvj!`r$%?j> ztG63^snQCqM3I7)c(h=e2?KezGs~0o$G7A#u|yF)E6Y=VyP`6pedtuU=$g2xB_qDK za)5`B43}-Z$GS!9y0GiIj3~DiD--l*t)VNrw)wmmtGcO6u@;-Xc$*0oo4Q`3ybP#W z3VBITp%+PB&35_o5@&pWJehO{+uy%wv#6^pU7 z(7ct}ysLn;0RB9**ek%)%Z#4ejQ9H~;2RE$8y@2uF=9#%$#6vJyO=@M62?eL3%PLb z3VPV_xOdlkDC!b-8@FMxJr^4Za5^z$yLwHG8!<9gmxl~=B&@{EXrT6o zaw{mu{zJRJ8a&CBn8`)^wg+m<5uCuhK+C(Ce_R_{dmOtK2*pTOz{)E)+8B{2i;r+; zlZ>maVmgKv%agcS!;XA+!i>u#Ov04B%UL+iQOt}QYl*O{$;1p*s~0P>m9)+h49w=NcMC1h5W~FL+|b1_jg#4sx@*u( z_|Fgn%{X|^XS_(009Trlz~^he8cn=P8@HJ?u`I2EdZ%sLR&_Fcyk5+`YK+8td5kw* zU&|aad+1s)+bi-)4j1^%)Zo$I(^^#gr6PTH>bDBNdZI5#NwO=)(Q})!JJYh8qNG|p z(+us+$@|ETe4D+e&SRZ)1kGqGxXyT&bYhLu_#4jL%bV{YP>_i$0gB8gO%%^je5Fha z_@sCQrU8Kf03rDV1qc8{04x9i0058y;Q#;!{(wY+gM@{Khlq)ai;Rtqj3_9Jk%p3m zmPD9|nva)`oSlLym4lR_r>LYvC8@2Upn|N9DMTqPw6w0eyS%-EGczwQiNeD~FEd2I zt;WX8hR(i*!Gpqs$&As1E{@udF5uwOp)1EP<%}|d-0Iwg>_qA{Eu>D7M;t_u`lP3EDWhd9@$HNHDlag<)4{ zQ5Fiu7#UVYWe=U~O6aRkZm;4ZYL%F95%3n@8_2C@FbBJK4pg|fMG?QnGAtTy$7>%`FPT6(yn{PyL^Fj-vEO-cQ_~l1P z3oGz=TW@&@=o2S6ic()8qZs~2NRfzjk{D^z<)flx`yh1TNZP%mjg{VYaHQ>7)!W#%t7vB>6QAr1mpQ@X)M#GExE@}{XczPReD{Gp>K zfT7^J7lDYtVrVLa@x~%|&`e0ol&;FBUpA!vk{PC{SRx;yW^JaKIiFs0W}_RDrqyHG zz-EnFF{)*ZjKM8Cs-BF%ndG76s2ihRd=^!gu7lva$&H{Ks)!`P?l&x28xcE=PP&~_ z9;Ks(C?>R8c55e$qW<#oRWg}P1o2adz89InqOvs%L@|cd5Jd9A)&jYX6uDe&>F_FK zC;Cn@2#%Qe>xjJAhQg3P5KgP1$yz=9Xv0YFmUOiOfoIvIyr|c#ITbJ5Z85NkE1J^% z9pVDdzuM^UbS=1}7g0flgo-9Qcj7CG44)#*qtha5YEJG|<@40LWvdT}He`nJV$!6? zcbRdoGjg0ItE!$mzws#Wj2_w@yKaXVGsHdgHg% zQ33h-H6RKScva9I?WELJ-vlygG76Km;W#u5`(aE9iw~ zqJ1f?W)g`h{)Yg}Gw-SVUTU_el^4x->;tp$?7Lj7EkL@@U-9b`aYz1KjrT8O$qjkU zZL$`lJhcr+mum#i^wo};VXqUTAd-;;A&CltuY!e2+No?J5%{T3ZtP*pwQ9F9;%G)8 zTfs*C^me~er6ql7Vua(uLO|j*%NX=ofv=EMB<0a+dC1F`U2s){yYy*hryxwuR8b@F z-3)U%8z0rM(!pKe5EaDR+6b{xLenM6N!{t0{anbxrTuJZA}m(bN>(n2kgH&#dCi7` zGl~{SVn)lkO_JUuFUj?2fWi?X+Jf|m9YU{rgrEcl4P*&`QP4F@n{Nh!n!Zb=fDT}LY&$os* zywmKbKR_x3kCua=Rg#5W!O9aG1*x_pBJmT36dm^%xjk}FGM%i+CL(Bp%3^V7Q;xC{ zmRiJ!+p*~%nyMDawqq=>J+yTzY8*(`Db44(s$#peXFdJ&r$3bf7AQ@m3M!bnsIlfY zn^dD}Qh89&kSK8$k(SWF!q7!%N-U<#4w}qYHE}r(oQgmf8*yp5>;zGrBPHY@5mElq zKUpxJsxW3h>0wKl_RfB0vSH#Jb%-u+))g}Kx2M>`NqN?8eUJ@JmM0>=`RI<|K8e@niFD``yA;9c7r1XrgD5PMC z@G7Y+!YBT*Ot5=$OJ6Ui%t+1%wGY{bNE`UeM3|IP@%&BVBQs&pGB)$Ns|T(Km1b zM++wGjJz&On1qnozcOgTN2v9^1LY*h0{0!xwgb8#l{JC5Hn3l;QT$xobojCl3uEFx@3KGb?Q z*Hx{cQNhuB*yJwoZyF=1KJs2qCIhA`bRkFy=SSG~X)Ca7G-Q)Fx*E7qK+R!5BO=qPM}KIJn4 zxYP1kLz?@0+BD2+85?}tL&`39Xld*WkIv<^QdPvMTY*7EH9`mW4z!>_Y~PE@4H_$X zw>^dmHGt|OlUN?cw`I`meA%EVDOpB7GNTk|Dcd6>f}kiQ1e?$C&#=H`xSz{fI7F$H z+=lLRXr;;Jy`2%#RVItD)Qy!&vkVzETO2fGK8XnM>w{1VGPk;O z=k6_HT=uQRENS+mVKOZ8Dmv2;Cmr~`NaG<2j?}YR+L0mtJeH`4NGBi;SDGz?8$~3d z*xQA5f>ZN4 z&zPwUVv=iQ^`jp(v-qvh)ja-E5A)(|m>`^@u&be)Wwn11DgLt1y@hml3N>k2VlUnl znBLxt_LcA90_qS`mzH&H!4o^uJldrsH=`s7v>^2HE)eEKj^H`4H(tEZaM`6~nrBe! zH!<)Rg8JYXTt*PwVkW;Qe;Z!6$n1GBBbpyafsQG-Is?c1aN!1R`mnz=n!6D)KUF4WmCi1S56_G`NO& z_2n&}@?mOHf4#RbUigJBC~C455&0v48Zl#H)d|$cSBOvo6qrbypj9a)ST+}47>F;o z6+ZT0aKTq^jJPC95`W;=B+S=;!xC$ac5z^ae<0XAv=M)iwSsFVRZm4S#@IiU(})zb zWQFpETGa`fhCPBY92&+ec=!nJvLLvJ3I4I;Odtq7a6%PwhkQfxP-e$r9YG*}@h4(e7eJ^B z*%(1ZGK_a4Xp9zF4|po}cWBpCi>R;<@-ln)R)2%&S33wZl(u(_Gc_+jbp+@?$fyWC z@>kk}dt;YOH&|C*_XsBC5kcz3_00u=XT zJC%-@$7*`XRlYF{ki>utl9NG|{!}#dY>0`E(V|kVP?lyXB*U?l^dumFF@9`$5gN#Q z36m%usUWYI9lg<+*fcp7VH$T?F?~r>8@XxkF$0oWEx$2i5P^qf172{pjH=j)hABfk zX=ICcXKtB+!TAnVrZAhi9vfjx8H9Dg2U*I>ze5AB$ zTsH#)sFU&eW7WAQ&lU=0qer+Dkcb3s)JB7*c!8H$D4)oIZTXKuS&>lLR>{d~wm5%D z=V5eZnjTauawlpMA`zMX6fCZk3{;m*ZN^46wlcQq3Yum>dXi_6Hbh`q56`oQxrtl1 znF^1%nj9&D<&%6pML6mMY!KF;IT9-V6d-P4hG)q}uz_uU=L@yDAG498KYCBR@Nb%s zp&JOFMX97t`i*azUV4ch1chhZ@}zb`ZdTfZdPOc}7<5fH7u=vc%t^yg+v|!C@kd^dIog7k+LOv zH*AQFFl#4g)HbPMIXWY3wqcxYXd7|bF8)HGM%xxKc}`7XJP;^PgP=UR!7ev8PY`{fNS)sYJ>Ge&lITuY$7#^h4zGc5IB1XABO8Qax^glr5_`Jrf^CEl zyMFt*6N__Eb)m_&7q}ZfP^+=bo0JE_l$J{*M>4H#VzPXON?4bF0n@vGIW6+4C^J$~ z6gr7ule#d%Cy;Y(vy_h_`n9RRKxxCihvgAi<*w(|h*w0v&WR-L=$S_HE?o<_6eByq z{#&_X8+1?dD$*-4#_@=tmN$Fz{+ zr8gm)9(%VKp*%jeqXHAIJ>oAZKp00{lbGRk*QR8{U?3~4JiNfiiaCvdagLGYml*D;B zD3i0vQ>b0T+ES`IyxM1--2*;j98(*}2^ghARjY1i`vC@kt1seZOWIh|yexnBg*vt) zJ`}xmtPy*=k29B5L{NLW+RM6thZd*~A>}sstcr&8i!ehZl(mLm$owN20nsE-ZKBkyI-7l%I~U?f&gT?^H`ir1k!er#$A8?hWCzcoKr;H` zlXWJsSUtgsbnVEyXQd~&pe5#tvSgz4&s=Ntc3|U>%8aaIkA3**96krPi*b|#u zx|uV=suCYK3TmH5gW^DaudBM-(9+-vzOBVz5hTC7jDCaQ)x`N`x%<+*>MPT{%B}!o zjpQ0G124T2ik2{D$6C?DI+)S?zQ{oW1mFN6P>|2o6Gxd(-P>d zj&;4-+9R)p2pK-DP(V#&khv?Jvpu2`o(1Bpg2RA|G-E&KBAf(S|uRkL_h%{Z~-)~ zWAD=5=Y-@8E1o3~zGrWEC=x`x zgQ*`S>$#Ix4j~{cE~|i3Oq~YOHZ4E`GVTBw-~bLF2pv1aaGchN)P4#WL@A&F>ATT* z+uYO!yhbYFoBhPI5DMcuuG~-%<~nwdzQ{6X)1y=A{J-2M4VWLn5#hMWB!7g}`bYv1{Z!$5Xp)Jvma-4!{Ap`Ys=^$HFe#-6I=1<^ms30LUY_VX?b88otUC)dIdGeH^*A z7Yo;|2;1EVLA1l2=(IM|$jf-;F)zZpn(S-p)FVxH0K;V8yzs3EuPYD&1~6?6I$?c0 z@~IsxzNN_|-BqC%yHaaDE@|$nlZ_1fT%9eG7IWw7y;= zN$Rdi;_Wd4_i%mzM9^O?5CRHt_lI5x1b+(}kjj-K4tnwd2tWb+PRskjihT=SNh;lD z9_);-n~or4#DVCg4bydE#qjAbzLJ^Yp0itCuXw#54qyNdkkpA50`7nV3)(81yphEV z+zsafiB|4JAOROZ0=7T_fuF1PPVj(0l;U9FLUefO;?k1R7~((>(t>!{VtBYRNx8{M zsiJwPLZm|KshJYmsaisbqWapYISKwM3ri$}cxiaq>1z86?CRUvJKQOXY+IU&XpBhG zyR5nbj7UAYOucfwlA>VX@bSU%ks>35gHy99%53e4NGeZ6-F}FIg4#l%;6UUcq1*=t z3UCoQb%;a>XoylsIG9UN3UMI@5>U`0KHbNpH!f#hKLmV~mJK5Rm=*w3-XFZEvqxY+5wx8QjXy|8w$OR(MpvkBq z!w^wSFSb23Dlge6eEBBHVCC-+hY%7FNNU6=MTor>Lr4^N;X#HEEx@{%NFf4;x{)%z zY>7zIM~E%#o%B@l&}B|6fBtobe2^AIA~YX&;-!ewP0+T4F=Yyr8SJ6%UKPD3${E{M zNI9M5q!#lrpN9tivv9#LA{;wz(c^~b1#nwtS|t2)NQ`tQ}(DCK^>U(sV5&n3JfcrW0h4xBC?s#V%k}=Y$%ats2n9owY`)88=SVN)Y)d7^yz0OVd1h1 zY2%VsOtuHsbZCd_vb*kut2x@tYH!9%=PRE~q ze1*dyz4nUB1ui~B(0p?J3-Dbj)IdTDJN!T~2^UBJ5J3p6d=U{5IKaVX%Z9RFNE!VW zStuC=7}9_Ks9e_3e=D`p88rE(Sm!HYqWhR>i17L6gNJ}y@4MB!W^aa&W@~j&J>9fu zy@%=+Z`l{dhN&btkbFp4JGT9T4KsXtNUG@wOmQRPWOdQ7L?Utl1(>F=_6{x?oqasdJa5a7UG zHE{e-Kq(-OLkKdET*KlV1UoDO#8zIp;DQq|zXpEs!e3Df!n66YY4tp@PI=>BuBJHx|wK&rK;Hptd*zj0AbhIizXbFUobQakXwx*bAj zVMjWOXLoL*UpWp(viB?yVl_~}2UfKgim=HA5L2OEGT@IENr_X}Lr>s@Jz*tNItUC{ev4_QImc+g^}1ZB5m8?RjWgiL%l-)x z3WT{5V0nl600mYytogK4J}9HWi>Ap#Q4&iM zAy^M4-6sJorIT_GK@KAR1-?UwvYfbr$FZyx8HFnC6P5TGD~GuW5_Axl0rk@*^!c<| zCSsSjTUSmJg%dqiLv9xB+`WpyDD)8H6N)%THC2VUkos^3(CjA15I}_O{^3<}m->fG zt2L2$`U9^L2muK`@SP&2G=6`jUj(!QStcGy0xyfpA+&@{Gaj|6LIcfIUm;aWtj=7U zJ81AGT2`~BmJ-|eU`2Tr5_NsGJPNr7HD@%}RjH$`htXT$5FxCz8MXv_DFJ*kK!OxZ z;sdn$2eBy7r0t+|KGa>}Au^DahqyGJNu(djI6*8TG^weZMQt%f`&4};WN4}gEwl<+ zTGO&dPWLb`EIz}E+;r79prIS>O7TC?pom_ufGvjh+b<5#S0d(c^6{Tm`GqjgJjALFODl0?AXwaaoRK!cy$gtANyo$0b|NrTCtkJ_4w%JB zrkDZ(m5wK%Jwz!5#p4~T!Vn15C)7wwHC+@4nCtq?FzhQaoMcN;7=#x?lMzu6NdqXs zk&p)Lw~!Esd40Ahb3Y{EB^8uF0uNwB3ve4l=GJOf@<_o%AG4Mwy~u>=wTUv0w~B6P*QM#2t42cg$t?TJdCBvw(rD<*efLnzyS>iVB-ZC z#}2W?iJ-!GCD&FiCxDjGuX!ycOGXLkL_<(r!nbuucIX=ubWE@28>;wz^2*_{lvEE> zLp5nNqdLKXzNNIN)2{Gk`=NmkXfSil;6Mak9D$$J^hJVWaf?oT=OS4guL{7p1_D5Y z02n~lWPhy25D@`bfft{G09}n^!!;eZ{EPn0f;m3fI~dskf%=!bu}h|bW;0q z|K5@Yh+u#K3?Lj=A#-;g!cIy=d+CT!PDvVJ5|iX3`9rs_-uLd3*qz2f3*>}SH%)l; znhj@7j?lawZ$PqT$oqiOZ>d$Iu3sC@FG!?rz=EX#5)cQ#Ba~K?7ET0PEnoqfSb&}5 z;s843I73w=z||cAQxUyK2`ghn#YPB2MJu3WS%sD}c@aXZv=sT~6FL?lZPZ7N=0Tui z2v{X#ufRxiGI;DFbP0iD({LcEmU-j%E>`n>wnJ~kcRiH*rS*Rrn7>6#vp5X1cyf!ziaA*RUy?REFb52AXfEZ_3BZU<*|$t72XDFac$n9CakO(z zHapycjpHR3{}6vsL24DjTn>N$llTDI6OP+6iCYpEbJiV1G+6Z5i4=EdUbtQPCk{b{ zR~Dx)0hDMO_>ULFjO*4A6D5qR&_FJS5;TF4!vlGsMJHl3APf0GVB?UC7Yr0Bk?4nv zfLJM%LSYm}N~zNkhovO)L6RZ4GMLD0w1)`b$bgpRJ~-KgpX5?YB4?b4bP}MJhp;lG zv=p#NIzQum`2aS9QXwg!E(U^Q?nN59s0xgk2ytjMkWp22Xdy@yFEOY)gm^6u<#;yX z4C6s)I}~s6=4e-fGLQbVJ=?P-1RwyZsg?sk2?LNxE)#YY*NOfh0oxTN*Y#U~_K7<* zSPV!26p)6a&iJ9nkK@$lf z3>7dL`3*(F0Zmq!JrM%zla~W902_yP1b_(fc?cK5h4vIlRY--x=S~?AF!6L<`Nw&2 z5o0Hon%koQn_--np?8hv8pEs95G4-iG7|`QGPy~#;zwy>eAz%G2ztcv~d6lqWkE$_coq(Om>56I^ zX*XD=Ud1&?Go$|yFfmF134mAWX*G9B0(sgUO}H`+0H1^gPXPLUkpx^W(^F6gEBq!u zo+Nh!ibO=Tn)Ioc7|{?x$#@av8mrU{oR$yGNn87*sv0(Z>+)GcgQ}omsR+hQA}S2` z){IG0{-(MiepM+<#q+F(U;w_#00{sds8p^cK&)G0YzROB^a-2wd0GE*D<^XZ8sHC4 zcqGyaD*`xK^pj5c=S>ur7y`8!vxtwiYMBrUK}i#@(K#B`;F!JG75dtt(@8-pDxT9h zCp%{#rN%WqSF7TBSrb5fM34Xpz#BaGP#hEjuSNtDKm-iXuqVT#%(hqE;SWG1IR2mk zm2)ZI^;3tiQ%TfQQOGgwv@u7LpOnyXfF+ou!?F=7Kyhmm9{5G!VKy^cHicLo?((uW z@qB&gc!{=?OlybwimC*rvRK)Cy>p_6zyRIR9S|_Jcjg!BsVIll0aB{~5P$#-Kz3{X zX`7U5aV{1~d5W<@Wl!`}Pw>-DS^;vnvPn^rUCzY`*D9qsVGQ`_R9We=HU^Zz2q#&} zowJjrJ<)>P;%(cOxQlY8)oFNaO1O~6P;KN73_!I7ShzecS$4NAT1#wp_B@U`@OvH7kEFw`TLybJokNF+CRRjUKiJ(tn0H(tv;`-&8aJg zR>AZhsHnJo_9@*j2fL+Dx=YAA6gW7&yd-_dnh)@*Dg}Tf0AR}BX80*pte{CMs+Un#Vr&EOO|@ehOv|8JqReRJzFdV}=-2#%iq1xgiO)7j6Eh&ZIw@=z;n zRUdg$hJTY(VE;!4Ml)$OC9{xpIuJ*8C}+rHW{*H}*>MwdR)eZ$h_$iHWX(oQ3L<2n z{vLLL6LH?vaE>EjrrT;xR}3I9r_0Spj1^x*>=-4Wguy+?R!=3k9k> zXf#oGvv)A+ec_<>_+eENma!$9cT$ti%r>h`Hx{hK(+Qb%9USj%RZUzJcRBz!CbwWA z7e%etMbNqQX&7Tm{Up?>mECuuU^tgqldD^4l9C{9^eT-kl+HO)FHAhAz2aECjXUYO zWWdDLgs!_EkA~zoh%5?k;-IQ0J#gGF4FDVjp56~6;h0zDG$c~Gr7l34s%LJiP(|0# zCL0WNydThiMKb0d4H7BY7)Zf_Vu?4&W{I4a2=gi9-vBK{Y2w{^`vK(E3ex}POg0`= zcT1NX!PVyvJB^mLoMr@UpfE5dplhJ0t5fKKV4-XhI_@rVs=AkEA@gsJvqza!O;Wnm zNx6nkxBHD+4Kz>jRr;f*sp`H+3r1d}q)5;ly5>!B)|g#3Q`rE=!>J~%W6OoN^t?q3Y(4R_6R|CdQazO~sp z*-zXQiSes$7_xTRjELXBxY&85zPVBCr?M=Z<6UJc&f*0sf5MPGncb`>3fX4Z(v{kx z#8^METT7koFC!X&ZOZdxcXcUDeo7{P-rsk&~8l7SBk|`naM@>7M(2%b3F)w^hQ{DF2TiOsNB; zlg0IYPG1|c+Z!|0-dQ{Qd6nJ%slkUbDC zpICz=w;*)eK*Tn%A4}8-qzFvdV%X^CP-?-xZz$w2WeORt|NObb`8pN~(mP%&)JNq@*#nKog1(D4hakr7$3YuZ6g}*uK z-^Q!V-TKoLAIrl*Ey!a55M7}ahsNHPxt4wI>BpKZAbB~NAL}i>oBJRA7fu){3g5OU zpncrDUQV}K=}$bNG2$9RqHp`jsy`u*vwT)!(`$ZsgKQe#TA?OGy|iTyL&>LBXpf7O52!imAG2n3s$U>GVI!5B*)BNihQjgF4uU|}&{IMyzzKEpBdo-9)mkOe}O@55B~3ZljJ)56^yHUTtr%^CE6;J8s015wfTo#>+(1 ziw`I-dRkWbFb-xIBWEU{asi=5B&0QK&78qwv?~7%deKkCY(DAtPyU;=y&^M&#wTV} zj8a2NYK@~S!W31-h?2_+IK>$BFLDlPpLe05S<7F zYfhBLszjA$1U~T}k%)P7K2$i#RP{-V=S3k%kz&H9t^BkxKj*GRRN8}gdU}Cja7ezL zPQb5Fj4;JOVf|dPU=VsAM#nCCgAr9Z6vk{AR&`quYR~LqxVJ7E&hcpgwXwLfr1ruiDqPlz8xaMA9A)e=UDb8aAJ&mgQ~b`q*Yy==RT;C>tHgDjZRC`f zGa>>+;*+ttGHI*DXK}*uqWNSy*35UsCD!s1tjU8_&_^H#qQ(&nx*|Hn!$pu5<8P5o zp;_FIkFqPD;3^#zp2&-QJ1S=r^DI&&8Y7-s7=whG92tJ(+JD5HB*eXzAT8;VlRSG* z!0pglP)b~OOuP2|^;PbjcKS`@61Q+vxP(eCDz4*%k#1CR$jhEt2tMFGP!S86RvgLV zMe(Y~BNDRwH{QZj*%O6VkCVT*Mzhb$x1rF!kD2+!P2Y$d8aL4z>;qI*%PB3Ye60!rA<`5+lbVaMd8&rty$l{oGrW{Q^^ZQGmG ze2E`eJ`iff^W;pjB>b{#(n$U~Z1%0>-=n9~r2_oXSH;||O*gyJ=C@(QMrW_9!anJS zsd48X>OF7pfSccOx)y%b%thUZfEznGMJ5R7`+hL-Q}7;ea0buk#$x*U{WlYM{(WC> zyG*AjS}cFVMfVt|f+nR52J5beL6EhBv)#a z#IA(Nx(k6v@)d6L#`|i-3CZ#7Kh!Mk_iXAPzp0uRFuDOcWINyn8)AxT1w2IG9%GCW z?vH=g5h1Ar^B7+Q-FO5%aIS#Zy8-wF>w)@;0Y<_usErsWUjKPDnrAKsCP)Rz(@)^7 zT)&hidLwA5bipk0aBE*rDsZ~_m`P{12=Q z%ry;C{*4$EKNcB{3nY0fSFLo12BS|SS$l!WG~wI0Ppl(&=yw4psaRA@42`{rEfeua zKeddm*nRGP!(Q|7IlC_2cs$a>wB8Dw@G0xODKGfPT8|jL-B5exa0xJ-I0gKvof64S zIom_r(rd!pL2O`Pu8q+PK4Wb`Bi78Of5o+Y+5~mpm>XiO+@G!R0(%^+mbMgX({FhoHvYyP?^IBQ(YK? z$0D%YFCL|!WPMgmP?Y^wB}#;-KaqAs&-os4 zZc?3IDxO0!8iAC?k>k=1-W zo?vKkJ@|E-pLv9Em(-i0I>wKWNJ(~!sNlEef#Flr^|eyD>be@v{5t8}SAtUzg1j;R zQCxtAe7>6ky?g3@oR;W{e{fj;X#Ad4#)NhbNr@ZQC_34BvVV9@V9|~F6DN@u#L2yBkz+hzXH7#$2tL(>&^Od zTjPV{;}M6Lt5=Id%lL_FOFBwj*lC;+>xaeUI)6yCp@S}+M~RQE>QBE5Ow>xR3+gNj#S$FVY;s_fdPvw z?1GU4+%M_8i9%q&?NiIVcsjJ!@*=Cg;N4`4zkn(7(bZw$wGmb5e=q$h@2oOYR-T$6} z49=*(_nG}&90-LzrGQH`0=~dV)F4gEI*Rr9@wbNJ=Rh*R!nUY@-;*qaf*{`jZXE1n zKzPWlEyn1Z_Pf_@N}JDr5@w;N^JlchVdQ3|I0E$xQbrLx-^8<$7i+^h0DP^Ciz+U{J@Noz1Yn-(nP(V&Giq7gO>rL?`JQ zHTqPNk}*{79{a~tyNB77^siBZTEg3fBB;`biUIS5o{gpzixi#*olw zX0eQ#U6&e4*M4?PF2jZ3*+Y)_hM*z=qIfv@mNmdynV3Px%=>~POb5W*z`;5i+&Rm{ z=@k69F!=tRzKpz*M-j*~MNNI*>{lpP_n|2DIqwWJh`mon4u&fV!-Ao_ zjL_{@2n=QWmGNc#Gbvao^(r-yfFN|$F`!vr)Qo^6=(j&L2uc7Ts{HKxJ_^jWg8c8d zsKlkdN~p4spLv~uwHGrM>^4f$WX zpadLQgqQ>=B_Y-Ut7U``Sy4LgXp8nBnAd} z8K0w}!bHqqIDt+iVmrQ&9BT4V$V~Mb0=&r|1wdzG#zs^-{g6k>uI(WtL%#xq1}IL@ zAd`YbjY8>q>)1<1VBILI|2*Q!Igk~uCCG>h(+MBqB<)v00q1a3^nLyo>K*$E(5kYt zQ97O*`qN^gpMQAC^je4rQqLak0f6;I6dcl6ii@@@5|j4g#mDZau0de zI5jZ!3;bk#@ASN)B$;sVBRQgC44}W>3$h(w8WqpC3K8s&fZK$go|AGnGOCV#2gGT{3Yw>cIGbwp|94;r9P?2FQX)jgef2Vpxb0oqZ{^19qBJN;127sm^MeqOLn= z0{{Ut?@G+`QIHG__lL$-)K_4aguNMML1;A!?Wq_QGi2Qr9UR-lmjUorO8Wz!&SnOk|;UJ@+#Gjza+r5&ak>&s`=))4?;Q6PRzUzxzA1z zCImG@#6HjiSytxU-V!ZZL%c1ALxY^y@Ya?q6;`Mxr=gu2c!eE!1-efWkmS5GED`iuufGhII9SyL>Z{5BVzmsF)$%-)K zB+pP0ErgMmpd0-<8mrVot+PvnUgz#)!@E7|e#sTxajScd^9@!Ky0xcH>eM6p>WtrQnRC=#;zA!{dne5c0RT8H0>a0yJE3 zBHgsJ^^~!0t}&X$sj8#B3FX|zy3nL~!I!*DNhMsUQIXZLR{F*}b8gIQdM%&iZ#@nW z7rvTS4S{`8BL?brL<_XYSW{(p)%;yGW$J2iplRZ}eGx1H_Ngc#lLTAvAX%z9TY+tt zl7J6c$tEZObFxjxtXIvSgsL`JANaAHmr`03fPyOc&1$#j~UL~ncB4^oz1hA&E9Kt2X zfI&dpk2T^(bzD3~KxJ%isXA`?XA-u|uBx`kveAO+N8SOiQ;qvmL!;ZG(cR-xq~cjI zy4S!Do$c{v<&vFgR?Z#ht|EY7G28orI9fl4Io)j@5n6xIqE11(^_Jr8Vh8yM!_3Y} zK4 z95_i7v_X860{}BJ;JUU~mUVHXnvH)oUEp{PBh3?2*@&|!PjRI1OXqvGQ zSm`l)k=P|r;~-6q+5bw2kKAS2o|g;+-}b!R$p18FffphHsDIPfgt zcnoIxyT*)P-k0ng;w=M-`JtqAvE1)Y6Rx)(=Ru24SJSgN1~;8@?ZrnOj2C0ji@(h# zuVP$dRY?~%5+0q6woep1$XYaPDOU96Gw$gnvm!rE@zC~pvsx<)&f-{1_WRTjn%lyz zx;yAwzFfzF#B?lJttGJKvpnu`z?YfPl_xC;1;A1$IVvy0dv(PwwsSzX>6~zGjELm# zIAYmIkt;Zy=K~B~<67SD-61`~*_;4S8{|nYrF%c!RQ$j6C z3HAW+*2&W^ZF=+~>Nocorf{nxd5>1xPehMs9=>ph5;_T4#P zAcd3%m*{p!!+=V{xAd^>dH{v5oigj}_GFO1w|}&+&8H)}KD^m|i`v{S*8-8ro${&; zHTF8~v&F9}SisFm@5aAPUZB*u+tQKS*2|i{UwL`7$@;f`vh)`1FI0!T|twG>bxLf3dwYD|4yzAmYJOVi4Iyn5Y`=r72bDJxlHd-|Kkf80}XWtu# z1uIF8Kb1>$^#Qg}){~2X(McUZV<5o!&1&g-?rjWm`hMt}#THDuKY)5{%41FP%lvcf z-X7z(CjhPOa5RC$8D#5Q@aDJLQ>sE+Wp05FN}eD?exeIH@};01snZF{H^)?3&|$fQ z^R?DD6SX>gqwbH9(U{#Z%uj^JP*?COU%PK@SaTCJPz6r;BYxh>Ef}QSt^ei>`x}Z? zBCEz?>Pay5H0~hU^Dl03A$am2v5@b+--z@qi8B9u-ml$f|2~oR=d0dl&;-zNIEEUPBi&hsjkC55#8t43{Mo;{k$4htuhuPIJ1Jgr|6qF|( zI{q;>RA^w2%Gpjcv}P7clX$Ujphd1r|NI#*eg9d;gaX28m31ZG6{SI9^<2@tvyRr^QU02^Qcvt`R?uqQB@Adj<2oY<@3tB*i_w6Ot z=i{H=-anRFxIsVvP<@Ja1iiVII$mbjl>ND%_TQqi)oo|}^?&?bn*Vj)CQROwWI~^O zy^v{kL{Wud@segtwXr4T;!dFwHDMz6x7mAURwXDrik;Tw) z33y;I7jSubD?Ks=GV(@kvP&l9SSS*AZ<2u~m9aqHBo;<#O)V=sWL`!hkcoX*ag=I3 z%&|~KT%?K~l%PgZf-{5Hyz%9lR|nBSqgAbMp0{X-E+4Z51J{bLy1W<$5i2x-e@Y7{ z>#mkyLoSvZ7*X&V1Ihq$1vaOw_%~4J5Rf1Jx2Y5Ay}@X5=I5hQ{XlX8D0DfE4owmY z(koI*Tf61d8>#~ukl0#7SdF|kCaZtzJN>jj@dD;~@)BVldJH}? z+-8)=g{-GA#bSWc?+7ZK*vL}R6jn*;@>=yn&p%m>L$uRB`W#`?4jhHJ?smuG075|{ z>Q3=68Vy`ot|rE?bs`Z%gM{K)q~1g^Ba;Y;C{BS`&&2>;c+Xp51H(_DIMcpxFb53h zm9urI^zW4gQt$YiD>-voyNEm-PHa0}j1jP+pR2do2dxSbDbz`URvg-;asXNMga6$k ztwW1Cn)RIHDMXh9dj0$v9cnrKN`2Q|M>SmD=)KJmrebHC%AN6XG8AC7+y{RQ07Vxn z(WWlt#&dithr|v*D8Hd!n7$1)e3_;a4#Gt=s+W=orrMR|2d{CdM@%+8(fSw9J*k!_ z!E7zHK02?ZO<);4flETMib6V(4YLbStSp1;KY5C$Ve{%${Tx4T`8W~Ad{RtttRIjB zamG-4VD>PV;$`qyT04&7B5H$)YQsGyS%8G4?>@I?j?jFv8XwaDw7V=*d9BL9VPxTH zn_{^h=ViUtUEpUq&6yVc<_NLZ*EDWYXxR5;TI91|9*Y(k%sFR&fhs)3fYZ&S2y`Avgry9s0#Ep1WKeEc%9B z)T~v^V28h=_**A)ZsyJze^Pzc)F&YTF0VE4MV5&!;4?qqk&5*#S@thzp$wEgo_dU2 zsgKhS3Jm>eOX`7p#IDq9ojYTHT(l7G*C6TK%pXyEPX3f19ZKk@;u|tg`>wgEkU#(i zL}(~WFbcuDVY*KTR!L$Wa==UXXIOW}V!Z?UL+GC2In@x0J|I^)X@-89GTCed-+86l zCTY|LMo8tNks)F>$rb5|d_p|-t`u)$3ibV{$g_Q(vX5;}a^<@gX+Ka57yQ)9F;~ro zcJ-+M?V0+tQ`+xlakx-x4Ew8bMp_#MX6a9FA{f1fmUUQ^tL(#Qg%L%>?m*TjO0p=z zdsTsS6$BpdHjorh_|De3%M1q4NJedQBr4OqG}LuU-X5MJ8to6Qc%2-eA5T@{rRFm1 z60RzEk9K!^zl5=)e zCl}NmV=~D&$LS<91LG{fzEl9vRd{{+f?JYvx9U)T}NZxIm$lxr?A>$th*t^72w#Ma>cx7qhiKBnb+N zJQfZXO8;2Q^DG$)*mL?2wWo7S4IDcoEpp;ySQ!Z(zCHe8~ix`s*}RBt~qqO)dd%xmVYs9q#OK9*hXg9 zX(qz(72O`U6f^s|u;xB)uM8Ro`DD`uNj%Sbuzz?F)4ahz@zn-oG`WEpNPpf3_lZ&X9s5Vvnh~hslQ+qE$PaT@5>} z4Mz!U67B1z9^b|ozK`v(ATjz@^~S-t{cPsEHH9zHwq=I?pxfFH>2ka_%Kyr! z(ygsKL*5K)E8J55tU^2tdr@vwxvKy5ezMKt2p!wehjxE|_*BCmhmP$g_p^lSvD=-- z;HUbcCk$P&?$61uOmp`gFno378*0v0-(FQj1MV_y>-B?<1M%8;P*ye_fgRz25rMnd zi1J`J#wT^}J`Y>{cdS|Un4x^8ZSy*G$E>wp7RS#!E{c$9S$}K9?c$vcQ9138GN%sw z4?|JGo<^=6!)6OtL=VifU#-W}pZy6p;S70M6lPh`I7; zQB-_+h;KRVK0$>05s^kaW2~_S{0pi?#Ib}z?M0i7Tbg8wSXdRxH25aCSNTOTSSwIj zAD&8HD3hL{@cofke&euyKe{nvQ>Ouj%>B^r`40`o#BD(LDr1rVGNLV<;=~8Me|G6UUYd}jc@`>IncANxCd)O%Wo=vlmkgUIM-K5zIr6QUh#Ykrw7 z9XZV%CH!|})P+n4TZ#DoJCcPaq1`$TvycdmPMkr%k+_L;x-=qtt9|CHo1zkjrnGIP zvI*gceVXYiF-pi%o}}!AGHXwqzmZ_ebiH|&M5p?KaEwUlNH_eggAaiT#HW~;OD8!2 z2LAtmW+*nc*hF+vM0`SWBxh!NQWkvGhb?MaAvS^kWbtfasaM9sIM%*nzWOXNr-oep*E%}5szm0F4|>@wwk*=(NW zv>!{kK$RDl?VhiZro?2wPtY_wZ7%E#U2~2dYAh1_%yczIc{CG+HE4T7$=0|(RLcFe zqq)Rj0or(K%N~%e<0{=cup;jwBA%or51=GaI^l7$FZ}U*TCt?2X|jvlNN=;srAedj z8*9QVs`OIL{7+==bOA?#_E8o+bCHY0ErrwzNb=VG)i>j_TB`2CmPbEV!m!!5uZca| zn8xVet<`dYr3Q*R-Cx-LzT@*>@QE%rCcT@L?|7`t^R8C|^Ybu$?qixA-0?Qts3#n5 zhqGfauX%_Ooek7|@SP)CltPelEbvNhPnDA_=8u)Va0_`lr)Yf(W7v$LG6r$r z>O&sf+n}Ou)XuuN;}}uTF~-AJeGcX38>OD-$`|;OY2>(xHQqzjE9w=RMZFgXr))1B z6vuw=^J7gFiE&i(P=+{1d#Y(k>?cN|ve>1RXxv5W63ei2GsMVQQy zTZpu-TY!pQS$A8x>LcjxBQ8!Z6ss;p2e(ReelU5Qpb5!cnIay4VP@Sn#qT-B0m%HG zzCuS|QKH-Y01FcbUcjj8qF>cSWHJU_BUeHa<5bu3T!^>feQn7P#zF4DW4i!28GUh> ztJ#{x^E*zk;$dq}bjM|RhzG|wf?&1wglf5#`6t$tIp^KyzSkucW(BrI(Kt>rjhG z(I%?hGZ|f@5|4g~X?)KVf#qAWw~w#%>xO0iMhm~&lqSr5b}8W~j7D6e3Up~ieSQe@ zx5fQRKN{NGc7OIy#M(XS=-zpy40nCM{ITet24fVMVCLz?w_i}hg>K9xbG`iKtD=m@ zAg=b@7q)2~giqtHd__o=ZV+`5W!2ix0^^USHhcbAOPF2Men0v1WALxqbc?A7b70q* z_{&H%$(YPEhnLu71jU$;hHM#LcLfpcb9Wc)E#uXJ7E|&c%FHJ=#gAShV&7X?71Pci z^=%{vzh|E7<(~PThYIgh52jQ9onG+Kj@Xt(yrEyo>0xue9p#|OOsbQ4%_Nwl>}G7U zRgi!KVRBCJOWgj#i23~Rj%Rl7@R}erre^tK&&CoZF(e7t+hG< zcZ^(OA`Pm|zD3W4(@33jl2&Vy=gFoZW6J7_)XbOE@c+g%J~+gTb^#jYHNV$JB+;N~ zk_PFD(G46FVa9%I93LGcc)5fjCQDeXadW$zN_1p-&SR68G3g%jFNrP|C6Q^2kG)RQ z$Sz57JTp{AOVn79v%vhv1?t20g0CX{PE1;Dvp!n=ZiOSebI?B!?vOjrR}qq3!ikaVmHij1yNP&ghpzI5G3i z2_G-n?ZRPWge7wZ=-JBJRt&p?lL;53M~RNjX(3-vXeFuyCztruVZ|GYt`3?Ky?(m%xuF1OsY;nZChe8+p0 zah7FC9G3(U3y#5r2quR7V3O|FOwSjUJ(JjZqF~pw zd`ZyoCg!8Pb>UJ2SWD|W`I;S@&8ppTA!GlI8Ef+TEXw2Z(N%LTUtP>XV$5zsW;6qU z&6j&~{wz!s8pvk3$ZkhVYc?XYgsD5h@EiU>-SfoKpFB%9U_Me`kTuN|ELc{A)ry5ry}=cdq|Afb*_P>{^MX%i#FNVV~)LxEbT^ zG}qq@tA>iW{CYP{pZiOdW!@bTe$U9FjeiF_^yGf3u=B&uv_MzaLE%H8_@l(6;+);D z38x+Q>j&!`G5Ps25OR?-`;qx~6m6!t==D4_f15l5q_mNRLg%Zfv8&d)@!0-Vi8(C>ku^r*xfHQ=kJS{J25iV|c8^wc7A5`@Nju#5E;uEf^gSrM zEOscfNZ+OLwdgNKRec$*2LpMY=hxLQg^#Bbq<;b>*othndJ3q6D;?HIEQ`1FC?)YP zBm5lqzm815(r#<98@@i)7v4?k`^Pu^I=x50???S6l{ula0w%{W&wmTcg^g_f3 z8#zBalbw)Pn!>(y1kiAR#bn7FS$0n(Iw-sE!|&fta)*>(MiA2%E@}ntdg0z(jgP+n zu`|Pdeixk_vbapq?;CKIVW9SmuigWZ;PVQs~Qv#(hz$ zU1EQDSW2T&&xnI|ni8Flf3T6evJy>CU&vh}Ol^qJcK#8FoTcdE)eF6F;%1*aM_+BH zAY6pl3ZB$Uup_m+PX6b&$4UI19%gARVP}V7rBNcM!VK`n=hpTb&(SStiFW+O2 z;UR_F;1AyrLfg`qkyxhophib`vjqx^(D5^zRH=?EV8dhnkNlbL*xK;lr5u9#&t z(muEK(rM6eA``eOGN>8#2;~&u!ihR+|KRr;TaM4BMPg=-QZ*C z7(D(?Xt4A>@9$*64k7ZSXKIS@D=`5FuAuDb^sFopr$A8DY|2~&$O@nDhC}2Y6Zq5{ zLa3WAb@Tetj;AJCx-!CDVL%`T0tsnAl5WzeJdbdPD9%q%!m!AK{pjPX{;^L%8uh?hQ*gdT7-~vjCBaqsDN{oqxgW1d^m*K{Yz%&3%5c>QA^W zEl7dIBRHIgYt@h>)j($Q6Rjlv`+j}6#az2>+A?pr`5+gM|xU)uDuwPgQ`1p-p5)n$e^&gs~AE@@w{ zmCd?T6t9+L*Yo*ZTahn6TjXl{dIU>V<)OJjQ;J0sg|_)kyxKT;akx@ozMOk)Lq+?| zB==kVNfL_{0|CW<*RoHch!Q?psGKaf1TNX+M!W>AD2|~(8ehX zI;0eyBn#Fh+V;%|uQsEU*F`#NTZ9oDC9Jd|s^JX{`bbcSl$|iQj7|!Oezps`4WN(( z4FyzUQ>;Na!VTxZCya!3vUM|+9=~&X=gHFND&IFDGh_Q$*3K)LE1HUvv^Ujd>JCfT z*glm7LQK~?N4-PU6PFYaaw(?704#PloBdo4Fr?$t|YsT~L*gMf|t% zxeFEW7}WU}NL@d88dFgZuAhVTf6;SVDQwPLrzfb+Dh=u9Pl|Gu_hSfjeVuVrfbPtZaSw9fM{Vi{IWWHaZu6_H!Y8F4bS?TgDkhHp!i#_-*<> z7U<&*xTs*&73Rsp57UbSzRS>YIZA%XcoaaE)-!2yQKGs=~T+foLg2t;sIT3OADHE}fM>|nLHl0`(@^6XH97MJ#u6{l_-xfmbT)+2JpIQ5#u-oA{sHqo(WC zKgm~sho-vXHE^ZPiMM-}_R3}RLFBN0szpAW6PMm$J}`BC@8?|LRSeE}JkCV?&J!#e zNQEB!-ZMwx0p#D>IpYIL6J^H*lrC0JdCG)KJpUN#(u2pc&45d`UJd!Lrj6i7!qt0N zo0P?^8m`BQ`zEwyIH-W-WcA)0XK$1+T9Be@NC)bpYo@8YQja4915wKY;C(=fzP?l9 zI;K9L$T`jn9bzx71HN-0SHkQQ9w3zm@KMNa{Qa)(`qrREbzvrjOO4NmfHxk-BKN8; z{u?E+p-ov6VfOD_El7ej342ZOu~to1Xy7B~S^t=C>ehnS^p zJ}@~o=n*3@LvoEo78j+COQi!6fo<)ct$KRT(OYjG)%2$R+ohU44GIQgsbqm+^;@(8 zb=L~>WCLsdmFTAIE^3pc+yv6B+HbQ;KkOS?rNqEwgbAzyM*}f9Z>Nvr)V{V}67nnQ zB4AtJ!gm-SPu*0V3^RbX`3_$II6vne9{y_>yFVl%J)3%d^hpc%B&Z!J3uKiFkF5=( zdHUj!c5-M;`p%Dvv|#97e)a+9hA+(}xqi@d$;q*vjb+&>cS-Q&8fdQ_2jg~RJ3T`r zv!?fVak%G%T6Wirp-#qavxg3Na&}0M25SCy`04Q(?CF`>lLzg0`+yo{)@|}>dd%v4 z7J}CsztXkSLz*L0dru3Zax?}DRHN=#CkcJLxm@$#%P&Q_uahsaLy>@?-tN`ysbe;t zSf;+xTmCIp#=3dsY83AQjDNM5K}>vh(kf`{liAi8--^zEi^!1OQ@*pv`Yofc&}rv@ zyBKM0VZ!PO@I>nw?MH3Bf_@>)ZyBzc6m)~Qmu;it$cE^^`GKxYwE!1?gDmlu_>0li z^)Bu1CEWJ~$n&AmJW&7ht&}or~JBV{q$vT!*YIk|7!j959({);)i1$iHv9SlGNE`PZb z8=@xbL3HZTe{u(1cbfA%s^=uU*PYT_+-+Rvv(!`(zZK7~-J+TPA;aJF$yi>yx7?Wd zLuTD{VtFq=9I6g@v??w}!XO*5L?bGHcy7f;`Bi?l@VtPWg&yIt&B+8b5i;zx)fLYw zP>i8?B4j>#uAYWRLeD8Kp6&_&y27bUZk%_J;V+*@tEiWS41Icg0DbJTwpg)PvE)0v zU^KHO!;CE#8vi0v_@yC!60TRS;wl-Tx%B4WJC)>u4sK55YbF-lD2kHcn|}?1iqWtq z;`DkRll`I(J!le^3mDSi_KBR zXhLRG6S>#!0gfQ=v@S5f>JSt>*R2p%@LqbzCdh`#wvC!xK4`0;B7PKG@5C3k<)NHt z9gyG?iV+lV+fW*H;OW?Q5)tbVhl$H7U~p0sW6}iX7S?^WB0~M%+Jr?0j+$bI(u|mA zBDy(jq8z+Rw%m8ao2*%cbTSL{ZLoQ&wk*hSFq#pzygC(?vQ3p{N+jc(C(C8+x5v&p zJH*LrEp#adX>GXfBk=dXX0QwI@Bs!13aZZAY+!8Hn4~;ILU7>S2E-Y70a@D6E?oqV zJ4rqyS|%8~Tq;h3RZEj;qw?W_28=g_MR6uma=H_#X6Ud;@1j69Qa@Il()Pr4K!M!F zvhuj3(r7uq7u!0<57Qqdu$;`=#7YGGtgw#&2Uj*6K>HrOT1n-hIw2W32Bpl2ojq9e z9I|~oDrVQOipU)zIb5m<@0J~E_-jOgAh1JM|js?Py5s~*&KX9nt z&nNRysR$T!r`o*M7sFmXPOj{U!u23@g2I+q;9@L_^5PUShMHN7u~$HwQ7po@p?^A&-h`O_rA6gdJYzw6s?bTR9VR)z;QbHbpuZIqhU7ySP17ht3*D02s)bP z5tbCtQ`57?qoPumvw#ar83@4z9&kO*5MTiz0o7qxqpB=P0EGLIM+8oT8PIelX+I-h zM!p4{L`+IdbV|^$q%uRVT*Yfe#9c!y0l@wt0&QS{3sulzmi?&>BHFPI%6{^nRfIq~ z4aCjCHg!e`G;ds{B0vO~cZ~de(sHA;93#kR$^yZHGL)f4DCu^MpSkddg~(&nJ|~q# z+;I^&BAq;JDV6?4_D~($Sj5%%XCnO7Nr)>Fi!T47RCaIS-`lG!Nq)~DwOm3AkI>FO3vs5jgHf1PY@%|cs2q7U?LMPZInkcIbux7 z;m0)BvCBR(0z*?FT|(tiEJr}ZkkC|{IykhpwB_S|hg9Up=Fu3IbdwR%-~gXe6vZ)> zfM6x>Bb zAe5l!NiPc8tpL%ii$v2Vj;T$#IY0v?IB93YL<0KYr=~Hzs{jxX)0kF60I|4PJ5Bk3 zxpiq3E~#fv9ar3*c}bSC!kL?Rg zJN8+MTGW5)9VD7=QJDXDPw|dn{X6v8l)1`IGi2mAm1ZRe%LYvlGQ&Df#U1IWmu8^mCL;vl!0?3^J*K(XMykQ$bBGxM=MiT%#VEM0c2{g@ zL;g7(a77qgmdW0;NjK4DU0aT1v11AVBhovObeX4fW=v$`m4}IG3MioDMfg?zCWmmw zc`9d;{{V&5tEpa4MtumEz`{PwO)a>m{ZurUsLhbjbHNQB>~+{shh!O6A-{s>6^R3w z{!8f~qj^>kXWYB5y@!skacLhTzyJyO*(BXc<3i+!1DBqF0vHfV&9)Aq|D$S_;QD1o!2z68^rdnaSaICgLI! zq`!wS(`?Gwc#Q8Hf@}zv0VH1|YuAQyL_|Ua4w!(;VLq>UF@OLTPzeV<%^5Y41hA&| zc^Gj<($$paag=#n+&m*o&}>%G=(uo#$f{x!6Tz2Q*K#U^Ym z06XMIO#sJnZ^41Y!6$B^5G2rg?neX=;Cc)&dl29NCwF_4Fc|gMau6^9b%y{6po2v4 zd-RY398ds$wNGVqe6gSbS2kr(!Wytp3k^1E?#3DjW@X(_g#KgFVY^0xFyw2!CJ)^g zg5Wm}yEK76lu>3!Lt|)YAE$z|XCU~8e~a*Tx5ps#XMc95La~jSz+WF+v6<5gvFj9j74}C~O-Tf@NoBBm#y$goZZ84Ik%n`FDc~ z5Q-nykanX|AR%`RJuwS9S8oP*YDIBsTE-0q(uxx> zNqhEnV>WDM(@<4Gai_x@UdS*7CymOniI)gAhrlntpn^~0a@j)!6W~pC!c}_F0W}B# z?)Qx__ZgAG4?4DYd3YGj1#(0Xa$6ENiB%fsAq~Ai{(u4kRNWws5fTv_^^C$%4b}KQ z0@V#KP-6PfdHzsY{-6{US$18AjoFuC2?Z7==yI-SkKwooF4q7z2!kV%V=Siu7%&0p zxPuym7!05QtR;~lpaBGshihaF$5)T7;TlpHFhTcZi?BpZ1WOoj4f&T^&!S$}_)!YE z4sCKikJXU4B9TyOkyX`NTiI}w_;20C5E2=NXrcix7mhbrcj35Nc2|-U5QoO0a(bZw zEjIxyn1}4ghB#tu#r6SZX*4@&Irqp7iIs#!5ntlq02ly!a0rP$i`~ZeoNhiq$ zGAI^p2)TJS$#Q3D4HHlStw;n7fSztiEvd+wJlT>EAbVzse>UirAz%-MmI71OA64iY zaU+bq_Oq1q`AtT~>R z_xdg+M8(G9s+eT?vAhjVHO20Z@A zAM+_Kloc(Fd5{SSY&fbu5F$)*GNJy+1`xdzh7!q<>EIxliBKCVf*{BhcT|EVkcihn zo{TV}8*m64U;?cr9Rd*oCoq@C_nsf*87v3^ENPD>RY)C4cu8XvL(wV(sA>bEi>n}z z_-7#bS4`SRQ7BfBQwnSy$s3|~Lx&Iwf6)>5IL2U^|*vztcjim6nT; ze~Gw#UaE4Nm85T$E4*=#Z}KJ;LO)8Xsbm3qo+un#nvus*n_GAYA^-v^*_w+$qC~K& zL@)v)z)Oo}2r=*hwHgbh$o>Gis;lPdj$g_Zu+S3@W*R?tMzG+c1#(8dC=I$;MuF&x zwwiwsP=(?3Z`?_tQ?aStg+o*Im^reX)%qY@8LI1`6e@;VAz%W9QH3SiuI|bREHDu~ zz!fn7r*p}YAGwn!c$Vr}t_I>|t%0zMa5%5vDy@=q!`N~$s+4ExOHg%D#^$ZRwy~{4 zXYWuDCtHym8Ic{LrIOh{Bwzw25CgAj0xGLbaT=#4Dx$7>2rR$?hj0UPdjp3sw)VG@ zb*F;nsjTT3d-SQN-2f)es*Q>`m^{i2+H)A`NCb*G0kPVcOe&=j60%c~q}3oXbS5O- z5Ny;cx!zf_m*@{={#&+05VvA`HF2s<8^F3AU;-lmw{3_5CbM40v&LUIqQb4 zI5(l_iWATQG4Q4$zzD|60U|)Si?9vLdkCd;w5J4EvuCR*8o8glKUN32IR>%?5m_Ww z6+%L(OGeJB-6}3&3Q%2nEcN3~YC<*n$e| z853}#V|%;)1+l14tWEgVJ)lt%#Ynx?+aM~8!ryK)q=ml14ZtBkw?dtt3S#6} zu3v+lm83XT|193~oV;i?I3R?VAH*YrjN5zZ;OV)xf~w8IBmhy0H5o zz`73H7^B>P0Sc*NR%do2yosE%8{^BIm-&g!c^fynCw&AKohqRfx(GAO0y!|Z)eyt! zP`kC;%5@vS@w*80+qi|?2uk^l_IRQm00S@p5RS|Zi^_ziktK8@mdg>s-7uAxI~JXn za9-JKoVhTL`NAP=GBLmdH^9ns49IcozO8%+`D@PS+{2GRvvpg#fPBlPO2~>?4W~+q zcBlTTtLg(ZAk1)k2n0M8j(j+-z*aGTg<&AtPU2&$+r=u=-a}iqtsuDvD=k!TYJ*BOuv8} zzp=~+Ax#xydkCdkziGMwyNjkU?YR1(#O}JPBR~T*&aHJ=$ zo}9HF+r6Quj1g+oX7aTpEUsX<#y-utkN{^nLIQEj(qqfYJmA%f0Mgtr!=0@TxBfe} zxZDUQ+5xxB2n$@I_k0L25Z8+U1Muq=Y}E*cv7;%t2$5`DDz>K*?G%yi#cL5YO&!e@ zGdm3jl^FS~U_+&0s8*$1k)Uk?^$XINt=V8b4y3yX0&L4DEx{)c-7P)Z=}?!TX`-%* z&vMNO@+!!cc}!petV{@4O?$}a8p67L%GEg4yd<4dBit)|p`hzf>cDxLM-L~vdFzS4 z<9q{RBNgoo#CD6)jj+?;%?Kw7(_@{cCCa!B(7Nx++T0+{mB}^=7?OL90TauZmo*j? zDd2b%x)H6#3lp-<{KgDoGQN7zvRt=1Km<0x;53^9GrSHC{;Cnq(k)%u{?%aN)j-ya zaGDJ;qHa3^AI=Tx-Om!v(~@ukl0eMTP?)ybiU)lNE$i3i>)84IiJ8n|52HE6ZRVir zAn4o7+#1-+tbr-5pfpU~iy#Ea(&MQN5cV6$-B7B=TiW1l;WS<0tNN~KdYU5Y)~k)) zjUdd&%hTt2*Nboh^~VSo&;dtrs(f7y&g-e>3#tcKI@2|AaW<9HDB>`F>dD=VXl&HW zEm1G<0z7chg3!J;paTc-1Kl9x)!^BlO$2{z2JE}CvbFd$aLJ$tl#I@Xp(um1kF?_?n@ETm^|ECi8Z|qk@KMb>oog1Jb*F29_-x! z(!*X2fo#8j{Kt#1()}L4;0@0-jqqs7=+*G9sygj&P36_F&v8rP<8T7pE&`q|Dxxmt z>tNT|p5(i%P~zITrmPMlzvf{)^`IBgTWjmy3hQ(} z4q)=YB|x(wZ3BLh_WAzRPGRhCYq$C^0;1grjIQ+V3e&B+0n^T^@HztfJLwW{x&v># zSUysxoslDKaQuMvZ=Utt_1jeO82*j&;&2lC@&W?9*+l-p_KOhg`5w|aFAl4`%BdXU zV!hHp53g`5uOP6h3E${QfAkmr)>97n>M-z8pXqfy<{~-IU~a3m5%yDR%FWy@=zfV4 zigloe=1vXRTrBq0@NPsq4AXrGY2OV((Boob-38IvajVL&D*ixU>9CvAi{JsS-wmod z+I-LcunPm#9{7ab2!(IFB5>CoaL@)^(1*YPtOW=}f`f#GhKGbDh=nAIii?FIhL0^N zg_f6)nwy-3kDVlvkSLv+B&DdG78)O_XHB*6Z#Aw+CMvXD&VFfoWW zZC$!FYGd(s8Ij%~7v0^|V1nMfwo`iO{;h#8qz7g7`$&nH?B5NCz04DW+Ws^yp)nBYDx^@!x!Kw2;&rYfl-_B&5&@RJ`!?0XlCc?!jFyE22iI@( zNJ|8@gMi5}J)9m=rkL4Aph|k61E95RUYFrCq3t6NP~kM(4_)IKxjw;*=Fl01PORL!33ou!fnJpX~i-v zr(rB^Qxa%A%1^OE5~u!k-|e``Cn}HDroE?qtsVy-6g#sZLDbxoYc~8lQ(ua7kl8^_PPo{IG;1>I`8XJY%@d zg`?uZONC%fNSE104i%>2bf5vZUSckY#Vwm&+UcpRK340lW=6z#RFMZtRUaVII{n=- zmvlZ5f)8-O1SL2g5%Sg)AslHC|MJUygjFp37{Vnip#|awfjDSLLql}AT!R$gFhLxE zVW69kA;70OaQ-#ya)bbpg$`jf7@8(y=20CXwq_Lo5(0ir$;`)O$BDCv#sdFCL_(4% zClPSq1Wyz}3GSx1AjIN@DSK0#Pc5YuX- zCM-7rr3r#t5sDfDc1Q&IMFogrLxg4wk%B_T4u6O+;;c&H!$L4IfP>%$H$cDwu+*$( zvv^M|pb~^Z_`nB50D>U8xF|+pZv)=Kz+8@lp+mG1FN0|1T~0-WJ$mYmoq!wzYB&gJ zi6deYf?Con#xg*1ZBC8Eiv7$%#6{Q&JI@S}1d{2tP0+1aEa*We2_c_Na`Qd%(IO)9 z#y|){{;)n4ykMC;M>V_fq)e|=V+N%$f#SqdgcCp-3?J6C%yr725 zJC`wE^{zw^0tFC_-B_YIB70FYF+dd2@a`r`Li7th@WCQHxHt$U8Eg@r1J~59C8l}` z0s|G`NnWN=0X8;395|!&L__Q0 znG`@2k%*uuJhXDr-X+vD3+Vs{X12|3cGO6T5oHg~x(Mmf1(o2c3oTt}h<8q{I1RX5 zal(|eS%L`y`t&C}fV#97UXE#m2y7u%C7P%*@~M!GEIp?BlOYPivial0oAlvWs}%G8 zh8hq-434+WL9kUcqCBnh27x`{q%?h-n5DE>=p{I+kZG6$6ZtyzSE5>l9Ew$4X9IbN zuA*X)WP|8si8~_Vic179P#_RMDF{)P7PX}8!QT#{p?8LGI1yujc>j8>ph8G}xe#r zRWr!l1ZK%rh_?OcRc|}pR~51f6YNWr)D2~6PaA}eHn_oyXfh=Hc7q$>tS|n8IHhwe z<)AK$P@qiXaQ8SY=A^AypoK-OCejNnY7rKWM;*WbMC`^}t|`BPEF>)yk>mAE)5du2 zV?}otA~tDYtg~P+5t97m(q4BE6DH>ZA+6f#eiD?0I#ypma7GNgmc-(P<9W$cCUKP6 zhMn^5!oYV_a)=`VXD)^1$gxWk3N=;qEd-3?CukxET1A8~N1w;$3ae&ixXk4pB6KAd zMNhX7O`h`Dg{ofI!f@H%bP#|OZ&sov zSoQ0AEMnN2Fm}B?OW=j*OVNTzGTsIrmDBd%!XZ&f2)iYr7LvngJpP5ihJ)JEq=g!M zxSSljSFCC~rvh5J9u1B6eF%JGCKWLbq}T4OCL;827S#2Dlda9*npgMcsSTyhogK=v z9{eM&jMmgVO;mb^=W?h5F(Hg=Q>A3&O2&hbH4rURsIESbhZ*UDxJi=Ebphkx59KB)hE!J zmaVNG^$r{2>V=?I0vHy7ueY4Yj9t4z+IK5C;SVTTA^GNiNV-G2-L!G1g%2WFch(=A zls6zj3~H0*ZWaBnJMAR{s3zw30-k7aZ1b(v?cPIRYQC**{=D+%Y>28?>)S*aKyX=3 z;5D7ckG*c6<;MbOt6(+QWG61yIbqDwNWj1r_`nn+m~%*g^8Jhcq#&wXWkk%R{;`h% z35o>*PLDC^fM;=&^9?T4C4c8elSg89_H?O$De+cVfnJ#l%DQB4p*F zL)ix;Y*H`XF%>~kg3Psjmq&UOpaJK1Xd!?iCBOqVz+gRaY48_t@&|v^MSso13oHuUmfJmU1Us0ubA!siK1~cHX4*DnlgMFi2eo1H^!T_vaUF z(F?X=goqdeA0Prr=sDxXAO|Q^CWK;4vxF4aDW0NRidS)R5^^h+YavGf2Ox@rAZMKb zc|;HaAc#65VlHLKd9bKNaKlt;Xb7z{FQp)M-}h^ABV#tkf`|421k?zMP=q0Hj3_{V zKX?{{P=C1b5zkmGCQyeZ;1Dw)11>-UBEU{lBTV1(ge4Yrx#nhHqBOuqF~L-Ly)=Q5 zcW#SdfmP>x^d*Y#R)JY~2vuh>tGHOycVD!)foRA_v`~wp*H|qGGX#Vk$2fca14W2I z1jooIJ~)vhv08>$EZ|X%D)0g?&;p?#0vi5Mj_EZH>NsKnH2?xo03K#T?4&|#_GS-A z59~My1;BhWiFPU2BRR>6%2tquu#5Y)ff==e43Uv6asnTKl!!qm~KqIl$xfa-=~kSBSmLY60ql0;Ad5K?9e<7I#MCFQto?FfM( z*M%f$kLp$mT^MTvV1aW+00H?&_X1=-$s_OMJ_xZ{?hpb_^q9gEnSuZgvox6o1_By@ znff&Do{Wg-~dn~mWGvk?G}Y+nPOBY2m-K{)}jIB6((GkG`YuH zNX0M{IBTZ}2{&0Zf607#X$Z5K4*r8l8fn*D*vDBf7-%V%hC4|FFtUh(@R)?4R1R>O z-01+_*`0T_0hxI~FL+hxc~vD40vr&M;>B*RshScPbw?GOL@=9F7iKfGLQDf8+RnnBe#aGDA*0SR!I^m(8LikE9?pAndn2Ox1gaXv3anH*Mb zu!dAC_HghRfde{U;@Dw2S_lw|kEM{Dkg!Lx*pq_bRMXizT}Lkjp-i)5705O&ZQ>){ zX<#e3rXZ>w7jOYKCIKg^{s07!00y7{E;tCvC3_IL4+R904xj)C@NNQ-obx$}Q)i$% zx|XwPr72mcY$+xd(u8~^LjUQcZ8n?*iVAbKpb^-he0hO}prC(=pPZmnTepFP(4{>@ z3t~s1sE~o7LjWjQs6-F|xQeTVTBy0Is|nx$bh8w)7XnXtBgfdD2BrW9V4MOVXDS(m z>qae8M|B0zsI!@?yGpGP@(ti%KKuDnu+?}LNG(wsstu~3qgs>YDw`oUXAp{#Qwpm! z5;o`YD)vLB%IQCXngDWEtGmjpg(`h>=oo@9dx-Ini&&x#ut)t$00e*l5UT(Zs{r6R z0dop93;M6wnv&1{$}mIcX&}pcBAc5=x-hXumNe<4V*#pqsU0cFpzAsa0Y;Fh(=yY! zL}P(mmGC;bIHvIfhfU#%G7FyjDvAnfG!D=|>+lW_>2m$!a?+szg6gmc0G<)RKC#GE zEZ8y&`-R^&USR8=a(OvnJ6@8A3Ip05#>sqYnHY06n^TIP(Bhr)$|D!r2?24p{kEL6 zz@>6ZwBUITRS^ouNUXxxo=HQos`!dL^ooL(CK8|k?n+;jOP{C+t*sfYdr5qVppy64 ziEQhs$ax6y+6kR%r4%R#s7eH@E3>Rxx0|6h^KeXjD~qTA4&XpH#|V*s$^qW0y5I>_ zIQw%uvV`!q)rykUTEP*Vk~ZnN z7pRsjE5sM5qZr(;%}NV(I(-BA!Rdf+A#86x`$JGwBO{kOTXVJa+HVRG!_#!NMC-6` zJN^i^8UX*B4z|jCKm5b)y1mW!sJZrurr57i`m!&Zgc3g_I(6)&|zFU_LZSuPH zW(m|Wno1PLbFy};V=u)eysDZN;z9w(E3poXoVI$a0nn_pIskG^4*|Qp3@n>gQK}3& z%bWnAtK57AY`ScV6{yO=14*-5j2V1(m_pfoU==sTY*B11u@LLVvYDKx{I7CG01B`G z$19$A zJWXp%w1T<-&Fru?Y^}PA$_PNQ4-f$^Y&sEOy>fiZi6HMWZM{!O|J zD$BVX&mR5JT;n7DJgBLh!x|gSyo#*?K(z(E01jZr`bW62%tKVids zK8*@tJr<4nzqSg|j#|^Vy4D*##PNF3uzZ1zdduGo6~3Is)TGIy0m&ms!gaefTnbqU zZHs!X2|gsboiNsfaLS6UF##OcO@Y*NQq2ya)SSS``4u)Xh9YwEs{1yWj&-%7T?p)h zrHLKUi*U+J4aYc**4km(FDAa1EyMJK*_>cpT3TGFptnuI+XeY`#k>gqF}@|kPy=r1Kq}r2+f+Db*%}E&D_E4-6#iH z)ZNvF;A7e$6uzBb8Yr`n(A}jFsDl98r5N6MOb@8N+)O>*so>AfU6Ai=i%%6c?u`}b z5Pq;)uL+)taw4G;%HQEV7OHLDkbvCfn^B^n*?gT24vrPCdr{PM*WF>mve~v(tjL|9 zyrK%=6k685hTg9NK($!i0T$mH!>Tx|3EU|@Sb@!lK;)zQ;zusyJ~_^Y@UTYiDwh4> zgDofYlX5%`rh6?KSR3WFWW`Tz+=0pAD^BA_eh5nL-;l7)Uk?7O?abxfao~MR2v2JW zJPQv6p;gF)2<-C!4p89w1lwy~3fMdVfu809Ov{Ck;Z`BwRy?S$EeHiZ7Lkr}Ar7lo zUJ5pzCtF_G&W$uuJqQoG;j}vHI~~h&EUMjn>TrwbO>W)y{c z+-}8$knE`d?sx|4`ppTj4(YD~)zJ>^)(+C-TiHaQ?nLnH-(3oUg{6Yp?cxsT?T&T% zP46`l<+L8{({A1}OkB1No&_G&f|~D(Q0RTmy0Kjd5dLcjj$ZDGVcG<~2zx~CufFm6 zfboF_@OfU{w+(1rYTvfbK9}CA%;nuQJns!J^5%{J?QG34uL)Q>@TfrU98U=TO!1Lk z;N^bq96#wapY9#r36F&75?&oG-}1WMd4_<{Fpo5QleL)(KuzHtu~o(-$$?dgNy@DyM6`7H=G%zXGh@AIDZgdg@D zKL{k>9gE)yjXx)|KIsd<^B-*ToxnbfjL`i~3%0H9k8kc4zxiyg_=hk0nn3rJ4i(^T z;ssv_lpodd{`pYu`i*bdlu!DyUvJKx`&EC?{GTv|D<1UfFMCMC`eQ|h?uCj$k^!k2pK6k*+{^MK$$3U z=opdtN%XMrFt|`!DjGVvswzqf3LCp<`YLOCi<_&9Te9oh7=TN$$;qkc8Tsmoj5|6= zno4B)OI_VKjaaMuz---U>>b`1BJL>g*^Nk1E{l!L4xbC{Y^{AO5rMBb%rCL7o9@`7 z2*@tPI~WUGqkxI*Wn&hBn?!_*7*Yg}<;v8wcfKr&^JmLrrU&+V`6A~i1c`X(BysGv zOrauZ%xXmx`RpLhi#!`iyy@_h%zpo5UW~w@C%j;cS`J8LDbX}!>5L{5NwQYZZIB`^ zREln-HBQ4I^#ipNtlFl*S`uli$SEw3`sPBT$t_u^y#u!n0vgbh&6#{5O>}hlpx
B#C`6ekoSd4Oh$Wzxq?nGQn4P7okfSQCudJuCm!gCvl(eh4x`K_2y}`VeDVCtI zh$_lNvBKFW=uIpKsbaK^*96%ZIq022c{9RQ z(A6Z) zLAqpSDFi8i(^k9?OLpwod*%?%bo8?(A))>PE7?Ru^yNou6_FYx3X-K!x_`44RY%0{ zD!~~!V!eA6rbj_*8JBaqR%ap0g#_XZd$aRoLHP>xv{nO$LZF(0Ib6-UwL`ESy#cgH zk*{KkpV8eu`^ay~ONPajATgI|Z%4m_7gD*6@Na6>$VGPwSTdpLx1n1^`eG}hX)OqX zMtl$R<*cI%MJ~At)u({2nb|b2{pK{<+R@FXu3NWc#KHNclycWu2gxv4K|>%R>b&FI zam`7kQC%F_#Ta%5X1ASH64?XIOt3lQQh0Qcm?0r6sF0$3j^MN&KaZqWiF>H1xS}Pk z(Nv0bvfXzPbhznb*JHS4$4WQ?BK}7XVLKM`3w^pU3C|!48pslb)>)WkNGEbb+jba% zhEFxIdplMYAJBGQs-MY zWbrJ>ol7%=O`q!rgDterN%2jy{Vx$(h3O$6$XdEe68ar*5M%Lz`HZD1p z4`rU63fD4o{X;~ogh-2sx|g_TN-&!c%4N7=LXv2O*fxc&pyW|0C0!jxGpRYx2~vX% z2Ny>88IyR@JX7g`hZJSepuB1s)J^yT$Uhy5~I8?V?!x{p=Rj&zc;g{AcHvKS8Q zbG};Qo3TCpkfRS+=7Ic($tvo|VlrvJ#@-gx&AZ+@uSsuCH`&uH(M)%vQgwx2H-pjEW~;En)K~7* zkdPnUb)#0HrZiptR7c$De%seuYL|Lt^FZX@sp6|KvQoqC zg8+pqeisW*(2p?ez?3<;&M{EO)Kg zWbG&v44vmJmY0jH&ny6GQw#LbF_5L~Y&S|1SHg2Y)LmjG0Gyi;ac8rVrQ#F$o5j2G z0h@b;s~VxHk8z%7pqGf{ddvFA@=BpJ0cmbiDx6oPs???@kL|H`=?dbdE;TDstj>39(@`@5D5kN|u}GxCMidhVsSIu7 zibr#n`LzDFoU2W5VPS-#-dOk}i&d>)v^Znn#1=a2?8i8e`;y?0CrL5QupBeIB_CIX zDn&L#C?{JJ{~&RY{>=^%@jB!vX`;HFG4gkF3`^fG6Rc5H^D2sxoUq*2xK7eTX&C(C zj=&Vc%4vjZ-Naf0)%Zl~O!EM|O+Op!nk#7s+kETVp#$}AH23L2$`pUd>;Gws8~hEg+3&FYtb(pd`g^lKj9yUUNB zdj7to=*v@JETQ8fI-Le;GNMKbjb3IVM?0EycpV#_XLRzAeU@&ALR|~GDiOpP36Oq6 z4d`2>X_?vJ)UOM5oD-Q!Rdjago4m@;Q?geii6kkTSsB_>F(g4zk|%pe%gzjoYM&OE z%CkN+Vy#-lw`T3nTrz>oS_lc5A=b4Osz^oxf4ZtiH1Qs1=~ZU{$525zaj9ChS2vRe zN~xA|oPW}yV}c>9w{=9SoD`2GP)OGAY<4p@5mi2S`A7Qnl~i$A*;`51T3x*M5qL$W zEEc+%zJhg)z11zno-19hDejz1dg{QU_?RToqPb=y#FaLw*5^)Ebkv;WOlg{2KXW-vVX#Zx;28QK^C4*dyb68Wg&fQH zl(v>txLNd(8ze|H8V=7&6|*&HY`4s5d1TK|nG}?Zr#o(Pb8%Pz-Wn1mmBj=*ay)vq z%qT>`xJMA?*0@HlxR=(QqsVm|By!QY7#yA{M>vUn1aquKePs=^!rC78-Ca$wZEkz| zJ+?iEQyZ5JR1ShLjH@?~0kujY!z9#9``LzgOy3bYLLK-f!mVRYgdJS2jAI1M^TH;b zwLC@GZCWy%gvzIwMp=IacKD^^WFl!vt9ME?Ag2*Xzr1z((6sXmsa5G_CXpoM>X31Q z$_LyOms?miiELmjgdcH4vXTPUb*lfRgP99L2XM~!&CMRCYJ~nRSSuLDL&SWK?cV9g zFp`#%XZF9H9#Y#=M_^tLnDMgnW+k|$IUzK!pry^%fxN|SW5)hfGUZib7}4gw@zS)3 zLKl_E={m?OfiO7NKG*eD&%en_yzic_ba;9hg{^Ff(ag!1$n@zca#x(Y#`YEdvCsxd z!l1iXKlipJ)wc`6*?L^afd#B>na^DI#zF_hClV!;3^kLsx4$_9CL^j3M*XkX{v>Xu z95uQngBOg3Azg(ovG98h=UhGk4>-UI!P739W>>U@3iO~5nwJhF!4hs(J#DvJn1Og? zh76$aP6}oY(Z?(J(13nLX5?o+n&T0_qA#2^HedCA-u|#LttA6t=X2%d7hxl3mGW^? zl6NAZ5Rv6;1g0aHQDqrs3DRZ_7l%8;;R|T-5~-#*1lCo;l_1)8Gg|{ui}4@D(oNG) zBlZ$3Su}*z!gtzNV#FpgaTE<0LuJ9{cm39Wijin;SboGN8t!l~Ct-7l0EB)6Bjtq% zOQ?Vifmc(w6ZiP@Pv$@2t*cpB0cjN^}7&B~$#zwCQ zj{ZiDJT^?3v}^XZ4#5!_J)w9*lrxP$jKnA_nNeRf7AC95C3nMcSM_Sx(@%?W1JtQFbx}eDq-=Hv|v>*jQa53R)hcA*9o)uXCggdAJb^dq> z#epuP!HeiMTU|zH1f+$s&_W@kh}mZ^v_@i_!V1Rn8;7D4Md?sS*>YJ`2>@keim?J2 zgP7>U7wThCZ^(PlMP4q@DkB3Wv_>O{_<-&*4Kg4t$43Mw(Gx&{5U8Opvv!lq*Nb`u zLZl{}4m3R8r4y@Dn9=1`5!q*3v@5WgjIzmJuD444vPiIV9UP;ZacG!Q^$w_LnCQqp zaZ(B+`EI9B3@LyD2kK=;teoTLzNG1YvPX+ZBGakPM8xHvo2 zX`KqnoD?dCO5{K&S00bXA{&aC=A$zps$%7#Zr^7dOPQh^Wlg25GHvuTN}w3>f)s5di!yr)t5Qlshfsrz6m;Nc9Z37VtinRq$~E%2O_ zHZ#R}32h;r29qAMW(?ZNoy!D8O*&yw)C{U3jz&@@WZ5FX+8)i;h-M~2Rxzn~u{2Fo z5dZL^pdo{^^pX`>B>r-Oqm!v&V)-tdFc+2iJCu;Bx|klZ0*};bX@=x!75A1G$}C@Y zE6WB}qV)nENUUyAG%e^?l9MZLw_ksCBdXdq`?p(r!5G;(XS7qJo;qzMC0-=rE`KU3 z@iMN6z(0$p9`LBAgisnflA2VP3Lz`9*Jh`}#aENUtKgL*7>XJFgsTEmtjNP$;aQBk zLy+;AV8v4*l^Pbff>6c!oq2hVe3ccIhGgPMmY%t;x3HF(u$IAak5iH!*4Y**&{M7^ zd6}lQnf9^Jgjb_Tuir6{@~SEy%21YJE;m$KzzSH2M4MqXBYI^;o%o*a1&(7oHhUyt zcVc>7aF{%luj6-Vm`;w2CVnm|oh2~ew+j>`(ssfs;ehYzX{2x@f}M|GMjb(Gm< zjM}!$Dq@+zvH?4~%~n7QNGKrqwzVm?g^&vmfr>&>c7KUeGK;VIu(xyO0yBVvWQ&Ql z4b`{mX;z~Ag^SUA-KA>WlbmJPhz%#P&9*Cr(tl~K9`4-hKoZUxU|BcmQYJm z5y~oXbF|R=6I#n<)!V>8DzTr*zbMOr3g)t;d%NH}G8Ct}w;O4(YhbKEQ;{T!jPYF= zw|#v6rMo<{J$y;HC2}shNxnHdnXrSk$IH0M>$toCC#I8MGaFGPQ$T6Mm8r4}IDw48gIc!B4Fh8v7r_$b!(@4)vd;!-YV{9UK^D22 z6D9%c(0U~9O-docA;ehgQncJG8-3#qZE!5e4=SMCs?@R zI1R<=S!cTqRXiT6{DzT1VI`ZO9)@YwfQ0!dM4M?Ev6{M_nS9F}$-C4yEo#YklP3Pt zbj5t6#YBgKV^JJnyj1YDo$LlAPa3vN46QVAMXc#FC_?n+`*Pv6dRji&x;z+Tay=xac$YTIf2W30)n+f7B?$v{y-K#YrfbleuE1Q z=`~W+F)5{Leq#H*x^g^f3@lgrvf`%<2=>k@qnk~YU3J_7xBOWy?J=N5e4>O5{d}N2 z9jF^YB5)Eb#iYo5$~*UJ4ify91vwCplt)ISBG6FLUwP4Eh!M&xl^mHuko=ikg%KO5 zR-&sX>eybvB(J-ZB4V)>_GE0|)=-}1S$K0FWulcPsTue>2>sk?h?K+dr2eYNm(Teq zBSxx;1J!cJT3gs~bZLvFC^;_kbENoc7x7_W?u!|BWxm=0u(#E648%~!$`Fxe8Id_d z!6{raWYeHkChcP*En~+ni`KemVRa(F(Db^u04syoS~D?BQrod7%GdIssS}N>+WU`Q zhIO|xmUp&phl<7O=&M2oM>?BOsew>_QclGR&4}~O0~p#7O)JB;E8k)rK3AMJElLK* z6}0@;{L{&AmEQbZ+oiw@!+?yevaxpTpu((E|7f8;^Q*|68QU8!t1(-Y@M@#`Ufere z%k`H5jNlWa6x--dh_i6QZQSH$basdxTVZspLV&JAii`JBGt@SN{>cmgb+z2a)w^KZ zg2>JW$gy(E;z<1+{*AV~6XF=2zIlZ|SR2vw z$9=Dy6Zjx9K&{&!nT0E}0>vO7V{#U+>TEZXPoJd>@JK(nK(0}{4}}PIz->qgKHTJ` zPtPhQUAf>5w46SUTHD|*DH)1A!i9K)HxRxx-)yJ}@;)dz8?Oyd&)E+~XCj_;C@W*f zjkGc;Pz*04d@>Z~t&Jz4RXQq=pjT_4otBnre%ohRX*IKi*mlr#5^)u}NM)ji!lS8f zMG6R&UdM3fj1hjc4a&Oy=fB<*HIK}5o4mGA2^gmA%hx+Uo-;K57QYJEx4tG#Y}ZnHHoUGo^!4E1>I{7O z)ySS#0p9Ja@&X^A0bA*_T++++6W`$8<-_f%1*cZ*Z6-05&kzgm4JPJhV;NW52|T^k zj2rT4?rG<~Xvi1D6ZhsI|4i?mM@#JGuA^)TIaDYhZ-100`mQtl9_Wb9XxXz!6!8HL zpaSh9@H#?{rZRw7>+sgz5S(F$jzqMQ-X=wl&srVvwrT0UWbFyM2}~~wG-a_PkE0m& z4jg0Y%!_1i{Y*Y83r#p%_%r2TmCgP-Jeb>;2u}X@IezLzuB-GSHXf}EKi^By@Bs$E z0ky0rI@Bct;VxhQHZfJ@DziUu+S(s!c%U(u+)g5#ukp9^4~ISKZU31U7xs5H_PUo^ z!fB7&8t%ca3*p-9VY%bCQfumFPyt-s!h@xmtI8)bo)`LoShe@aPyz_x03-mChr2dr z>F$srjiyc$kB{CI);_gt^#Y|2rs4u(>RDuk^{QI&-5v|2j-Xv00?J1VV*j}CV4RVm z5G@&?t(x2X4bBHO^KLKS&fmxZJlQ74CxC#0LNrM9Vn~#js6w=o=%}c;;y756Sh&at zY4~y&xk$vA=%S!NL6Xvvvbv(;s=&>jHFJ$P zqgH@*!Ky=HDQwsU5cX#Q4(cPVbGy>8gA+f>e?(UFom2M;?r2GQX3ZkMCy5G$c zxF5oG{c*m|&+$3V_ggI%03>`QWN>2;i_)R)is#~gp8RPo^}AKGfocqB{pJsmp&=1I zqv@x=gr-p)%rsgu{a+K!6-KDV9(bm_nLGZdd}@6Nb=WB@a&I#}J>>rH2g4^!yVSD* z+bK7*>SL-Vx&rA)BUAQl6vfJuHw9A$5LojGGLy*{ki}oJnn+?=*$0?GP;FJE2*DsB z3z$~PK2nYa36~}B84*wp^vLE+&%y_E0!tpl1)jo+`Z6>OZT&~5?L$6rR&R5Q-TkO6 zhZ=66h2xPt_0qIwbW4xrf2|~;QhsEE2(2mh0dS@`Uot@jDT>n2r%FL-F$2C1vyzSs z0jmYt@g3O5H#><~9*@>hHygW9)$!M(wRqg6x6KV?l`nsV&Xk7ysybES>5yS|ensVx znl9oLTi?1=puy4*;Y2+9qFkdNlXux?5Q_)#z5B$6Gi_XM#wkfoKO=7_@PKkUhgFOG zi95u~|5@ROzUsl9P(2=Kb#isT|I6UjHb!wzT{OL(mE=7~MNMQqDRz?9$$s2Jot}3s zSzml8)%4YoERu$~EH{>VG&KR9>#u}6XM09MR3vxxiLgPZ!%#CV=e{7bGj+eG;i?`%0_p`iOIC$MUQXODsd!;#Vqts zUt0yHPY0qN$@`m)Uj_Eo$zbFqv&WA&oQ_6EWr*~~MwbPKzt z!C>)3maCw)Oq^h<2SDq`OkC_ocnT<=KA)ejCO;I#&fsyNwh#Rcsb#8C`-!J2q+=!; zh|p)SzTYz4k|L{Yo-p?q`yf}pRum)hMfTJATnD++m`os88CqdkER`u^Jp{l9w*hq2 z+G%L35s8}=Mx#QBXnIXU-DWL{<+yfvwsJMpjfSd(QCq=AcN`vVTQoKGF!1Rr4+jlN zp01E#s!x}9>}2089=;QqtxddM*^86Wh{ZRql2l8oo|E5M zVXFYbnrx+7p|%>FV2<+Rp-dwwFnuGQ>??0AKm6@OY9z+cnK?+?xoGkLp{(o@8@Ea* z>OuLWbw`l-fn35ae=7YZ+Brf*Wwq4#cv|D3Q-4ye27yFRf?x9Biw%#!w9Y{Gr%?3r z8RnKI15{y|;WmD~nrkPHwLPyalZoCX6iWv>vh9gM0VUQ>{w!8!&D3>NNg)i?N~ZNr zx|DKeMZ+Lt8ZI{32-Gp+zaZo1xv$gMcS^BFG`!!Mf2QZo8qd=5R?JrD2b)`x`sP=v;?KHiDjDdfETlA27BvQmCv^1k%b~pUkLSW> zwxEG+lrs~1sB(v$OfU~3h7A0QQ}D|5=c(u`dX#bxmnbIB!wB0At~b8LtL3$unzJ1U zBow>>5b}`62wLg_VbjC-B83}bRtRy|e|gM{fn4ri$DeqquuA_5v1RVS6qePy%a5+G zPO(6WZy+hqpR8|6pZzvkWrNG-$@Qxg=;)shE&D$<7)DWD7z@^qz+NK3%@i>`Ne)-B zRTddrY7_X97Dg5rM9gOjBuGrgmp75v99nD$r05&Y)ca~fNo)b~4;=O*&_u-Q;tZwI zoj+@3WI)k=&l^}tDz;`l>^c`Dg!Zsn;Vs`W{iN#FV*4K~1#R zU&ye{5(DuSB;QvL4=)?9WvLmZMA%5e|2N)vXVTH|!3qH;!~tP9mWBVY$QmK7}YvyM52Z=EGp7-WUyEe0~l8jnayU_VgE?rpIzEA5J%q8Emv! zz19yDxXN1MDW3)!Dt#rywVp3Bqm;LxH0fx{WnSW&pM*P~fHs2ZJ4Pb30mj5XpCx^^Ik76oMWbO&$%F1I zkmL5?AiqN`{+6l9Qc?jr|6g^y2Ux3#Z5;#AL!RuNq5RT3r*+g}Xgi4~FXh_1Y@!D2 zP+hZ7UU0Dt9{fb&sDV5{1}^j96BS3t>d~PqeN;t+GaPBMNs!HOgfegHf_5^Cd4DZW zFu^EEfWE5q>kr<+m04Y>C2sGf{^!oFxkFE;ST zK!D_R(HifzIA(F9K7<{;y|~Pz03$34W!)Jybl_mKL4bLEy?;_saS-NT77^*fRL9;X zIp|3DkD368E}1}ou0pF8s3p{*N@Gw|C(T^%`4h6{ZcxM;4mcx$ogZ&&`PZ6F?9AXO z8NT4({e=C@ZT-|gDSSxrIPur&Sq9^q=RYJx2C2~g`I_~_`afRcGvT-q*z5SAG2Ny0~S1w(J$YR^N8oz;^mhj#bWx|2SdO%Lhgw9@O%}@oQ{XHn6`oI6A@inG~Ye zVr+8PL*23r`x!>FpGmbhEIb2f8QM`|HNKsBw66`F-(M-<`+Izk=U#~Mv|Ja@=I|`4 z6}X$QEOW#|Ip9fMMNk=1e{5%K$c7*&=suOpbzg@-Y9n8FLWRgdkYSbKvpa^MEO=2F$2}znH}rC;{oydkk|lylx3? zG12C(IS_%#q~<;Y+FZza9dN@@`}>u6?kfYW4WkdMPdO-@`Ktr1xqX+$0y&I=p7JCf zbg_-+xdd(SXiq@g3D6njvF__|W+Oe5b<@NXV|~^Qos! z2g#0VkNk?M_WyX&KjMNM4~|ol0DLRtqWkG&u0*sI@rj<6%6%uI?M{f9 z;e^@!@I&W3nh(B7Ia-S+4s7V+RdV9%eR3&f%b|+c->P}&DtU{EeAJab&IHfXFk}W^ zkhH}6j8){tXR8r%+vys^KuG`|BJ4baqKMZFb_KXn59n0M$qmW*cM^3#P`YXQIOOwl zU8!PfS>rE&n8pMhR1E1G-jcuu-$Rrlf}ZAmhs!O(y4wI!b>Peh&5zpD%QlX2n|j`( zRQh~^B$M51KRD{Y8Q!}W7_wpge}`t%4sna!t|@gd!6JbC{V2KfQnStiVsha4q?2B# z8_EGww#0khTXtC&x@SOwqXCQFuQ@BKav%TF&8pEEY=A(t!k^M5j_?WqXQ{Q-DY@KD ztW`5v&W+Cw73cje{mv@|;Ex1>&bH5@y2mSzjv$Y&08xd&C+Q^_Q@}g4)u>6l_DtD% zd+E6!y-a=@#Z{ddxbQU{kxXOZw+_Q^E3DLAq?EDRKA*{4J~-zrDZAWQY=e;<73E`w zjF^B%sB~=-CE3e@Vx~O3xeCRbZr1J3v|DaWckFDOdw%Kk4!29Z1R}{5NYKyQI*l+d z^;4UQDH{#BIQGc`?0M-&g2Hmyvi+b!v--k<#)fYPfF{D4igVJ}GsFkw?(7_1k0>&p zJmdFhSLl}}wHv?*J-5g+&y&K83r^8HK2|P?%CvmnhjlVc^sV6b7vtsl;7I@o&^FRG zpW(gSOI53aJle}%ECdp#1I3~Z$%f0M2usU0LyC>eFER9&Jn1=FFYsonFMDkcdKy5n z0O8!{7R%D{zSOOCT-D1tP;FMK{@8J#@5(CTVTmLOz17%cxb6p4Ww*^kr&ZG?*Q~21W+0D3ZJK5 z(VKB5#5MM(h8Fdv&e}B1@KWqW%`m>1P97?{70PI6#Rl-Sxf4;uQa`#@Vuz~t5@ecs zIMavf_%*z>uhV!FLjDC&)WxTYnC<>v^~Qd?;$EsG*jQEvW&bw@Hjb2*vmO-BiAYaJ zKDtU{CGS;c=*{~MplAcE%<-yi4Qj|F72TEQRj}ai^_pb^6rgXy2Mx8{JN}*x6^6X(eGgZW>TKiHNPKIB#m05tTL0Ux}#)$snLX~I!cD(`+8%Po(0mN4TFaq#JW9}d* zK+~!3%XG)(3;=}y_%H!r$ewSSon}=mYaVmj(6X+1-u<bxu?OnXEF3 z{Nl7R^hLaL+t9Lwx$N1%Nr9$0!aV>UU|zFwl4;0hN+4`L9`oMwA)HN&-U*wpAWz+% zip^y8-gmzrR(Fe0rueyl)PYY7cw|Q?2rV@I{Ur$dPJV3j?xjk;Hq+w#H0yaIB%=X1 zli}wq5qe$^0U`i-BL$qz9i?XgmHN5aWB_401m6HavIk)OTjfbo&0Ap;Su|AQ-l;$g zWt5Rk$?5AD_;6@qX=iCllD|MbHg%CsteLT5Q>&5f^?{^Ga3XY_v%~%6s^ZdoZP?El z^IBhlUC%~qa*p(u{K@oRcmbfcxm3BN(Q2RudTwB7#Jw0Ggku~{<6C3U!4!GCuzr)8 zz`y#xHt1y|@tnFKMF-ah(Tcl4KZ1&dpenM@4ja~gx{^6FUJ!naJ&U2vYbqs?5!!4! z!*&Z}J}@$7JiK5aMSk=oWMZo|)M|mqH$u+owj{Nu4!1VxbpTc+lgNcrSwPL2EKL&42xcQ;q{*rH2Y*s?I`z_{k@1k{M?N0BivGA`8gAc==iJ69e`W5Ao)p zj#E1J+zc>^8^0 z%2r_Js#_*M9)CKT;EHo^YdhDhU9h!%>9bnoH*z~|8%mDd2p*qP{4xKGe zme2aONR`vYFBhq5yOw+w_APHj`;oOx#N574(;7a9ol|4%CdQp7hZ?CDZdo&G&1?ld zZ6?s>^{<(UEi-g|#&#LOr7OE`IRJu(#BmsRl!t7l+XGOR14u-ch}sVPSWdS8eM{QQ zuHOs^6j+@I1Vu&TGgeZjiHQrlZ{`bkg@3HhJk@W{_Uso(BclJ80Zz}EnLgD)D3yQ2cY z+nrwhv@78vo9-^3+L@5C)L)m6!@uKpEzHioWN*{6Xb(cUQ}#3fuX&@Y?s| z=pxOXhhbpiivX#ppCsjf2%>+omJj@0qF^frvIrq&zxJX4Q!@r2 zo>a3P!M=uumxC`0&2CpUDdJ7)Z6e;bC=3_}2u`;~y&sXi!?k?=U*r$&cZcAuw_}
q&w2whg=)fWs+JRQZFAP0cezFiu`UT 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 z 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 Y*#fIV-7u@IwTP`eDRLb&8UWDxA9?F39RL6T literal 0 HcmV?d00001 diff --git a/docs/source/index.md b/docs/source/index.md index b23f4ffc3..75d0a40e4 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -1,9 +1,8 @@ --- -hide: - - navigation - - toc +{ + "title": "Introduction" +} --- -# Introduction Inko is a programming language for building concurrent software with confidence, and has been under development since 2015. diff --git a/docs/source/js/main.js b/docs/source/js/main.js new file mode 100644 index 000000000..c27a32617 --- /dev/null +++ b/docs/source/js/main.js @@ -0,0 +1,19 @@ +(function() { + "use strict"; + + document.addEventListener('DOMContentLoaded', function() { + document.querySelectorAll('.expand-menus a').forEach(function(button) { + button.addEventListener('click', function(event) { + event.preventDefault(); + + let query = button.dataset.toggle; + let new_text = button.dataset.toggleText; + let old_text = button.innerText; + + button.dataset.toggleText = old_text; + button.innerText = new_text; + document.querySelector(query).classList.toggle('visible'); + }); + }); + }); +})(); diff --git a/docs/source/getting-started/cli.md b/docs/source/references/cli.md similarity index 90% rename from docs/source/getting-started/cli.md rename to docs/source/references/cli.md index 05b8889ba..89aecff84 100644 --- a/docs/source/getting-started/cli.md +++ b/docs/source/references/cli.md @@ -1,4 +1,8 @@ -# Using the compiler +--- +{ + "title": "Using the compiler" +} +--- Inko's compiler is available through the `inko` command. @@ -44,9 +48,10 @@ inko build --opt aggressive hello.inko # Aggressive optimisations For `--opt none` the executable is placed in `./build/none/hello`, and `./build/aggressive/hello` for `--opt aggressive`. -!!! tip - Only use `--opt aggressive` if you have determined a significant increase in - compile times is worth the increase in runtime performance. +::: tip +Only use `--opt aggressive` if you have determined a significant increase in +compile times is worth the increase in runtime performance. +::: You can specify an alternative output path using the `-o` option: diff --git a/docs/source/references/core-types.md b/docs/source/references/core-types.md new file mode 100644 index 000000000..cb280f9d5 --- /dev/null +++ b/docs/source/references/core-types.md @@ -0,0 +1,93 @@ +--- +{ + "title": "Core types" +} +--- + +Inko provides various core types, such as `String`, `Int`, and `Array`. + +Some of these types are value types, which means that when they are moved a copy +is created and then moved. + +## Array + +`Array` is a contiguous growable array type and can store any value, as long as +all values in the array are of the same type. + +## Bool + +Inko's boolean type is `Bool`. Instances of `Bool` are created using `true` and +`false`. + +`Bool` is a value type. + +## ByteArray + +`ByteArray` is similar to `Array`, except it's optimised for storing bytes. A +`ByteArray` needs less memory compared to an `Array`, but can only store `Int` +values in the range of 0 up to (and including) 255. + +## Channel + +`Channel` is used for sending values between processes, and allows multiple +processes to send and receive values concurrently. + +`Channel` is a value type. + +## Float + +The `Float` class is used for IEEE 754 double-precision floating point numbers. + +`Float` is a value type. + +## Int + +The `Int` class is used for integers. Integers are 64 bits signed integers. + +`Int` is a value type. + +## Map + +`Map` is a hash map and can store key-value pairs of any type, as long as the +keys implement the traits `std.hash.Hash` and `std.cmp.Equal`. + +## Nil + +`Nil` is Inko's unit type, and used to signal the complete lack of a value. The +difference with `Option` is that a value of type `Nil` can only ever be `Nil`, +not something else. `Nil` is used as the default return type of methods, and in +some cases can be used to explicitly ignore the result of an expression (e.g. in +pattern matching bodies). + +`Nil` is a value type. + +## Option + +`Option` is an algebraic data type/enum class used to represent an optional +value. It has two variants: `Some(T)` and `None`, with `None` signalling the +lack of a value. + +## Result + +`Result` is an algebraic data type/enum class used for error handling. It has +two variants: `Ok(T)` and `Error(E)`. The `Ok` variant signals the success of an +operation, while `Error` signals an error occurred. + +## String + +The `String` class is used for strings. Strings are UTF-8 encoded immutable +strings. Internally strings are represented such that they can be efficiently +passed to C code, at the cost of one extra byte of overhead per string. + +`String` uses atomic reference counting when copying. This means that ten copies +of a 1 GiB `String` only require 1 GiB of memory. + +`String` is a value type. + +## Never + +`Never` is a type that indicates something never happens. When used as a return +type, it means the method never returns. An example of this is +`std.process.panic()`: this method panics and thus returns a `Never`. + +You'll likely never need to use this type directly. diff --git a/docs/source/references/packages.md b/docs/source/references/packages.md new file mode 100644 index 000000000..c05882b2c --- /dev/null +++ b/docs/source/references/packages.md @@ -0,0 +1,195 @@ +--- +{ + "title": "Package management" +} +--- + +Inko has a built-in package manager, available using the `inko pkg` command and +its subcommands (e.g. `inko pkg add`). Packages are just Git repositories hosted +on a platform such as GitLab or GitHub. There's no central package registry. + +## Manifest format + +The dependencies for your project are listed in the file `inko.pkg` (called a +"package manifest") in the root directory of your project. The format of this +file is a simple line based format that looks as follows: + +``` +# This is a comment +require gitlab.com/bob/http 1.0.1 ece1027ada626bddd1efc74ba88a87dbdc19522c +require github.com/alice/json 1.0.0 f3f378ad8ea4b617401b40ace743614995904755 +``` + +Each line is either a comment (when it starts with a `#`), or a command. The +only command supported for now is `require`, which uses the following syntax: + +``` +require URL VERSION CHECKSUM +``` + +`URL` is the URL of the Git repository of the dependency. You can use any URL +supported by Git, including local file paths. + +`VERSION` is the version of the package in the format `MAJOR.MINOR.PATCH`. + +`CHECKSUM` is the SHA1 checksum of the Git commit the version points to. This +value is used to ensure that package contents aren't changed after the package +is published. + +## Version selection + +Inko's package manager uses [semantic versioning](https://semver.org/) for its +versions, and [minimal version selection](https://research.swtch.com/vgo-mvs) +for version selection. + +Minimal version selection means that you list the _minimum_ version of a package +that you need. If multiple packages depend on different versions of the same +package, Inko picks the most recent requirement from that list. Take these +requirements for example: + +``` +json >= 1.2.3 +json >= 1.5.3 +json >= 1.8.2 +``` + +Here the most recent version that satisfies all requirements is 1.8.2, so Inko +will pick that version of the "json" package. + +Inko supports different major versions of the same package. This makes it +possible for package `foo` to require `json` version 1.8.2 or newer, while +package `bar` requires `json` version 2.0.0 or newer. + +Using minimal version selection offers several benefits: + +- The implementation is much simpler compared to SAT solvers used for other + version selecting techniques. Because of this the implementation is also much + faster. +- You don't need a lock file of sorts that lists all the exact packages and + versions to use. +- You won't end up using a version of a package that you never tested your code + against. + +For more details we suggest reading through the [article by Russ +Cox](https://research.swtch.com/vgo-mvs) (also linked to above). + +## Handling security updates + +If a new version of a package is released, Inko ignores it due to the use of +minimal version selection; instead picking the most recent version from the list +of required versions. At first glance this may seem like a bad idea, as you +won't be able to take advantage of security updates of your dependencies. +There's a simple solution to this problem: add the dependency to your `inko.pkg` +with the appropriate minimum version, and Inko takes care of the rest. + +## Using Inko's package manager + +For a more in-depth overview of the available commands and flags, run `inko pkg +--help`. This also works for the various sub-commands, such as `inko pkg sync +--help`. + +### Adding packages + +Adding a package is done using `inko pkg add`, which takes the package URL and +version to add. For example: + +```bash +inko pkg add github.com/inko-lang/example-package 1.2.3 +``` + +This command only adds the package to your `inko.pkg` file, it doesn't install +it into your project. + +::: note +If the package already exists in the manifest, `inko pkg add` updates the +existing entry. +::: + +::: note +Inko doesn't support adding the same dependency multiple times to a project, +even when using different versions. +::: + +### Removing packages + +The inverse of `inko pkg add` is the `inko pkg remove` command, which takes a +package URL and removes it from your `inko.pkg`. For example: + +```bash +inko pkg remove github.com/inko-lang/example-package +``` + +This command only removes the entry from the package manifest. To remove the +files from your project, run `inko pkg sync` as discussed below. + +### Applying package changes + +::: warn +The `inko pkg sync` command removes all files in the `./dep` directory +before installing the dependencies. Don't make any changes to the files in this +directory, as those changes will be lost. +::: + +Installing and removing dependencies is done using `inko pkg sync`. This +command downloads all the necessary dependencies, selects the appropriate +versions, then installs them in `./dep`. For example: + +``` +$ inko pkg sync +Updating package cache + Downloading /home/yorickpeterse/Projects/inko/ipm-test/http 1.0.1 + Downloading /home/yorickpeterse/Projects/inko/ipm-test/json 1.0.0 + Downloading /home/yorickpeterse/Projects/inko/ipm-test/test-package-with-dependency/ 0.5.2 + Downloading /home/yorickpeterse/Projects/inko/ipm-test/test-package 1.1.1 +Removing existing dependencies in ./dep +Installing + /home/yorickpeterse/Projects/inko/ipm-test/json 1.0.0 + /home/yorickpeterse/Projects/inko/ipm-test/http 1.0.1 + /home/yorickpeterse/Projects/inko/ipm-test/test-package 1.1.1 + /home/yorickpeterse/Projects/inko/ipm-test/test-package-with-dependency/ 0.5.2 +``` + +Once installed you can import the dependencies using the `import` statement. + +The `dep` directory shouldn't be tracked by Git, so make sure to add it to your +`.gitignore` file like so: + +``` +/dep +``` + +### Updating packages + +Updating dependencies to their latest version is done using the `inko pkg +update` command. This command either takes a package URL and only updates that +package, or updates all packages if no URL is specified. + +By default this command only updates versions to the latest version using the +same major version. For example, if you depend on "json" version 1.2.3, and +1.2.5 is released, `inko pkg update` updates the required version to 1.2.5. When +version 2.0.0 is released, `inko pkg update` ignores it because this version +isn't backwards compatible with version 1. To update across major versions, use +the following: + +```bash +inko pkg update --major +``` + +## Publishing a package + +To publish your package, push it to a Git host and add a Git tag with the +version number, prefixed by `v`. For example, if you are releasing 3.8.5, use +`git tag v3.8.5`. Don't forget to push the tag with `git push --tags`. + +When naming your package repository, you can prefix the name with `inko-` (e.g. +`inko-http`). This way it's clear the repository is an Inko package, and you +don't have to worry about the repository name conflicting with existing +repositories. When importing the main library module, the compiler strips the +`inko-` prefix. Thus, if the package `inko-http` provides `src/http.inko`, you +can import it using `import http`. + +::: note +Package names should be restricted to letters, numbers and underscores, with +an optional `inko-` prefix. If the name includes other characters (e.g. a +hyphen), you won't be able to import it. +::: diff --git a/docs/source/references/prelude.md b/docs/source/references/prelude.md new file mode 100644 index 000000000..f575d1b7e --- /dev/null +++ b/docs/source/references/prelude.md @@ -0,0 +1,50 @@ +--- +{ + "title": "The prelude" +} +--- + +Inko automatically imports certain symbols into your modules. These symbols are +part of what is called "the prelude". + +The prelude includes the following types and methods: + +|= +| Symbol +| Source module +|- +| `Array` +| `std.array` +|- +| `Boolean` +| `std.bool` +|- +| `ByteArray` +| `std.byte_array` +|- +| `Channel` +| `std.channel` +|- +| `Float` +| `std.float` +|- +| `Int` +| `std.int` +|- +| `Map` +| `std.map` +|- +| `Nil` +| `std.nil` +|- +| `Option` +| `std.option` +|- +| `Result` +| `std.result` +|- +| `String` +| `std.string` +|- +| `panic` +| `std.process` diff --git a/docs/source/guides/structure.md b/docs/source/references/structure.md similarity index 98% rename from docs/source/guides/structure.md rename to docs/source/references/structure.md index 111a9c962..adabcdd97 100644 --- a/docs/source/guides/structure.md +++ b/docs/source/references/structure.md @@ -1,4 +1,8 @@ -# Project structure +--- +{ + "title": "Project structure" +} +--- Inko projects follow a simple structure: an `src/` directory containing your modules, and a `test/` directory containing your unit tests. Source files use @@ -68,7 +72,6 @@ As a reference, this is what the standard library's structure looks like: │ └── tuple.inko └── test ├── helpers.inko - ├── main.inko └── std ├── fs │ ├── test_dir.inko diff --git a/docs/source/guides/style-guide.md b/docs/source/references/style.md similarity index 99% rename from docs/source/guides/style-guide.md rename to docs/source/references/style.md index aa07df198..9b263defc 100644 --- a/docs/source/guides/style-guide.md +++ b/docs/source/references/style.md @@ -1,4 +1,8 @@ -# Style guide +--- +{ + "title": "Style guide" +} +--- This guide documents the best practises to follow when writing Inko source code, such as what indentation method to use, and when to use keyword arguments. @@ -51,7 +55,7 @@ Types use PascalCase, such as `ByteArray` and `String`: class AddressFormatter {} ``` -Methods, local variables, instance attributes, and arguments all use snake_case +Methods, local variables, instance attributes, and arguments all use snake\_case for naming, such as `to_string` and `write_bytes`: ### Let constants diff --git a/docs/source/guides/syntax.md b/docs/source/references/syntax.md similarity index 90% rename from docs/source/guides/syntax.md rename to docs/source/references/syntax.md index 22854d747..4ec92b94c 100644 --- a/docs/source/guides/syntax.md +++ b/docs/source/references/syntax.md @@ -1,12 +1,12 @@ -# Syntax +--- +{ + "title": "Syntax" +} +--- Inko uses a familiar syntax using curly braces, and is easy to understand by both humans and computers. -If you're new to Inko you don't have to read this entire guide right away, -instead we recommend using it more as a reference as you make your way through -the rest of the documentation. - ## Modules Each Inko source file is a module and may contain the following: @@ -20,24 +20,16 @@ Each Inko source file is a module and may contain the following: - Comments Unlike languages such as Ruby and Python, it's not valid to include expressions -directly in a module. - -## Comments - -Comments start with a `#` and continue until the end of the line: +directly in a module, i.e. this is invalid: ```inko -# This is a comment that spans a single line -``` +import std.stdio.STDOUT -Multiple uninterrupted comment lines are treated as a single comment: +STDOUT.new.print('hello') -```inko -# This is -# a single -# comment. - -# But this is a separate comment due to the empty line above. +class async Main { + fn async main {} +} ``` ## Imports @@ -107,6 +99,91 @@ Constants are made public using `let pub`: let pub A = 10 ``` +## Methods + +Methods are defined using the `fn` keyword. At the top-level of a module only +instance methods can be defined (i.e. static methods aren't valid directly in a +module). Methods are private by default. + +Methods use the following syntax: + +```inko +# A private immutable instance method: +fn method_name {} + +# A public immutable instance method: +fn pub method_name {} + +# A private mutable instance method: +fn mut method_name {} + +# A private moving method: +fn move method_name {} + +# A public mutable instance method: +fn pub mut method_name {} + +# A public mutable async instance method (only available in async classes): +fn pub async mut method_name {} + +# Method names may end with a ?, this is used for predicate methods: +fn valid? {} + +# Method names may also end with a =, this is used for setters: +fn value= {} +``` + +Methods with arguments are defined like so, optional arguments aren't supported: + +```inko +fn method_name(arg1: ArgType, arg2: ArgType) {} +``` + +A return type is specified using `->`: + +```inko +fn method_name -> ReturnType {} +``` + +Type parameters are specified before regular arguments: + +```inko +fn method_name[A, B](arg1, A, arg2: B) {} +``` + +Like classes, you can specify a list of required traits: + +```inko +fn method_name[A: ToFoo + ToBar, B](arg1, A, arg2: B) {} +``` + +The method's body is contained in the curly braces: + +```inko +fn method_name { + [10, 20] +} +``` + +## External functions + +Signatures for C functions are defined using the `fn extern` syntax. These +functions can't define any generic type parameters, can only be defined at the +top-level of a module (i.e. not in a class), can't specify the `mut` +keyword, and can't have a body. For example: + +```inko +import extern "m" + +fn extern ceil(value: Float64) -> Float64 +``` + +Variadic functions are defined using `...` as the last argument: + +```inko +fn extern printf(format: Pointer[UInt8], ...) -> Int32 +``` + ## Classes Classes are defined using the `class` keyword: @@ -124,8 +201,7 @@ class Person { } ``` -Classes default to being private. To make a class public, use `class pub` like -so: +To make a class public, use `class pub` like so: ```inko class pub Person { @@ -134,16 +210,15 @@ class pub Person { } ``` -Inko also supports algebraic data types (also known as enums), which are defined -like so: +### Enums -```inko -class enum Result {} +Enums are defined as follows: +```inko class pub enum Result {} ``` -Enum classes allow defining of variants using the `case` keyword: +Enum classes allow defining of constructors using the `case` keyword: ```inko class enum Result { @@ -154,6 +229,8 @@ class enum Result { Enum classes can't define regular fields. +### Generic classes + Generic classes are defined like so: ```inko @@ -180,6 +257,8 @@ those that allow mutations: class MyBox[T: mut] {} ``` +### Processes + Processes are defined as async classes like so: ```inko @@ -192,6 +271,20 @@ class pub async Counter { } ``` +### C structures + +C structures are defined using `class extern`. When used, the class can't define +any methods or use generic type parameters: + +```inko +class extern Timespec { + let @tv_sec: Int64 + let @tv_nsec: Int64 +} +``` + +### Methods + Classes can define static methods, instance methods, and async methods (in case the class is an async class): @@ -218,100 +311,16 @@ class async Counter { } ``` -C structures are defined using `class extern`. When used, the class can't define -any methods or use generic type parameters: +### Reopening classes -```inko -class extern Timespec { - let @tv_sec: Int64 - let @tv_nsec: Int64 -} -``` - -## Methods - -Methods are defined using the `fn` keyword. At the top-level of a module only -instance methods can be defined (i.e. static methods aren't valid directly in a -module). Methods are private by default. - -Methods use the following syntax: - -```inko -# A private immutable instance method: -fn method_name {} - -# A public immutable instance method: -fn pub method_name {} - -# A private mutable instance method: -fn mut method_name {} - -# A private moving method: -fn move method_name {} - -# A public mutable instance method: -fn pub mut method_name {} - -# A public mutable async instance method (only available in async classes): -fn pub async mut method_name {} - -# Method names may end with a ?, this is used for predicate methods: -fn valid? {} - -# Method names may also end with a =, this is used for setters: -fn value= {} -``` - -Methods with arguments are defined like so, optional arguments aren't supported: - -```inko -fn method_name(arg1: ArgType, arg2: ArgType) {} -``` - -A return type is specified using `->`: - -```inko -fn method_name -> ReturnType {} -``` - -Type parameters are specified before regular arguments: - -```inko -fn method_name[A, B](arg1, A, arg2: B) {} -``` - -Like classes, you can specify a list of required traits: - -```inko -fn method_name[A: ToFoo + ToBar, B](arg1, A, arg2: B) {} -``` - -The method's body is contained in the curly braces: - -```inko -fn method_name { - [10, 20] -} -``` - -## External functions - -Signatures for C functions are defined using the `fn extern` syntax. These -functions can't define any generic type parameters, can only be defined at the -top-level of a module (i.e. not in a class), can't specify the `mut` -keyword, and can't have a body. For example: +A class can be reopened using the `impl` keyword like so: ```inko -import extern "m" - -fn extern ceil(value: Float64) -> Float64 +impl String {} ``` -Variadic functions are defined using `...` as the last argument: - -```inko -fn extern printf(format: Pointer[UInt8], ...) -> Int32 -``` +Within the body, only methods are allowed; fields can only be defined when the +class is defined for the first time. ## Traits @@ -326,6 +335,8 @@ trait ToString {} trait pub ToString {} ``` +### Required traits + Traits can specify a list of other traits that must be implemented before the trait itself can be implemented: @@ -333,6 +344,8 @@ trait itself can be implemented: trait Debug: ToString + ToFoo {} ``` +### Methods + Traits can define both default and required methods: ```inko @@ -368,7 +381,7 @@ those that allow mutations: trait ToArray[T: ToFoo + mut] {} ``` -## Implementing traits +### Implementing traits Traits are implemented using the `impl` keyword: @@ -379,22 +392,25 @@ impl ToString for String {} The syntax is `impl TraitName for ClassName { body }`. Within the body only instance methods are allowed. -## Reopening classes +## Comments -A class can be reopened using the `impl` keyword like so: +Comments start with a `#` and continue until the end of the line: ```inko -impl String {} +# This is a comment that spans a single line ``` -Within the body, only methods are allowed; fields can only be defined when the -class is defined for the first time. +Multiple uninterrupted comment lines are treated as a single comment: -## Expressions +```inko +# This is +# a single +# comment. -Each method's body can contain zero or more expressions. +# But this is a separate comment due to the empty line above. +``` -### Identifiers +## Identifiers Identifiers are referred to by just using their name: @@ -405,16 +421,17 @@ this_is_an_identifier Identifiers can contain the following characters: `a-z`, `A-Z`, `0-9`, `_`, `$`, and may end with a `?`. -!!! warning - While identifiers can contain dollar signs (e.g. `foo$bar`), this is only - supported to allow use of C functions using a `$` in the name, such as - `readdir$INODE64` on macOS. **Do not** use dollar signs in regular Inko - method or variable names. +::: warn +While identifiers can contain dollar signs (e.g. `foo$bar`), this is only +supported to allow use of C functions using a `$` in the name, such as +`readdir$INODE64` on macOS. **Do not** use dollar signs in regular Inko method +or variable names. +::: The `self` keyword is used to refer to the receiver of a method. This keyword is available in all methods, including module and static methods. -### Field references +## Field references Fields are referred to using `@NAME` where `NAME` is the name of the field: @@ -422,7 +439,7 @@ Fields are referred to using `@NAME` where `NAME` is the name of the field: @address ``` -### Constant references +## Constant references Constants are referred to as follows: @@ -444,7 +461,7 @@ fn example { } ``` -### Scopes +## Scopes Scopes are created using curly braces: @@ -456,7 +473,7 @@ Scopes are created using curly braces: } # <- The scope ends here ``` -### Strings +## Strings Inko has two types of strings: single quoted strings and double quoted strings. Double quoted strings allow the use of escape sequences such as `\n` and support @@ -492,7 +509,7 @@ Double quoted strings support Unicode escape sequences using the syntax "foo\u{AC}bar" ``` -### Integers +## Integers The syntax for integers is as follows: @@ -508,7 +525,7 @@ numbers more readable: 123_456_789 ``` -### Floats +## Floats Floats are created using the usual floating point syntax: @@ -519,7 +536,7 @@ Floats are created using the usual floating point syntax: 10E+2 ``` -### Arrays +## Arrays Arrays are created using flat brackets: @@ -529,7 +546,7 @@ Arrays are created using flat brackets: [10, 20] ``` -### Booleans +## Booleans Booleans are created using `true` and `false`. @@ -546,11 +563,11 @@ if volume_is_too_loud.false? { } ``` -### Nil +## Nil The `nil` keyword is used to create an instance of `Nil`. -### Class literals +## Class literals Class literals start with the name of the class followed by curly braces. Within the curly braces, zero or more fields are assigned a value: @@ -563,7 +580,7 @@ class Person { Person { @name = 'Alice' } ``` -### Conditionals +## Conditionals `if` expressions use the `if` keyword: @@ -577,7 +594,7 @@ if foo { } ``` -### Loops +## Loops Infinite loops are created using the `loop` keyword: @@ -599,7 +616,7 @@ while condition { iteration respectively. Breaking a loop with a value (e.g. `break 42`) isn't supported. -### Pattern matching +## Pattern matching Pattern matching is performed using the `match` keyword: @@ -619,8 +636,8 @@ The following patterns are supported: - Constants: `case FOO -> BODY` - Bindings: `case v -> BODY` - Wildcards: `case _ -> BODY` -- Variants: `case Some(v) -> BODY` -- Class literals: `case { @name = name } -> BODY` +- Enum constructors: `case Some(v) -> BODY` +- Classes: `case { @name = name } -> BODY` - Tuples: `case (a, b, c) -> BODY` - OR patterns: `case 10 or 20 -> BODY` @@ -633,11 +650,12 @@ match foo { } ``` -The receiver of the `match` expression cannot be a trait. +The expression matched against using `match` can't be a trait. -### Closures +## Closures -Closures are created using the `fn` keyword: +Closures are created using the `fn` keyword. Unlike methods, the argument types +are optional. ```inko fn {} @@ -646,9 +664,7 @@ fn (a: Int, b: Int) {} fn (a, b) -> ReturnType {} ``` -Unlike methods, the argument types are optional. - -### Tuples and grouping +## Tuples and grouping Expressions are grouped using parentheses: @@ -660,20 +676,21 @@ Tuples are also created using parentheses, but must contain at least a single comma: ```inko +(10) # => Int (10,) # => Tuple1[Int] (10, 20) # => Tuple2[Int, Int] ``` -### References +## Borrows -References are created using `ref` and `mut`: +Borrows are created using `ref` and `mut`: ```inko ref foo mut bar ``` -### Recover expressions +## Recover expressions Recovering is done using the `recover` keyword: @@ -682,7 +699,7 @@ recover foo recover { foo } ``` -### Returning values +## Returning values The last value in a body is its return value. Explicitly returning values is done using `return`: @@ -703,7 +720,7 @@ This is syntax sugar for the following: return Result.Error(42) ``` -### Error handling +## Error handling `try` is available as syntax sugar for a `match`, and supports values of type `Result` and `Option`. @@ -726,7 +743,7 @@ match result { } ``` -### Defining variables +## Defining variables Variables are defined using `let`: @@ -747,7 +764,7 @@ number = 50 Pattern matching in a `let` isn't supported. -### Assigning variables +## Assigning variables Variables are assigned a new value using the syntax `VAR = VAL`. Inko also supports swapping of values using the syntax `VAR := VAL`: @@ -759,7 +776,7 @@ a := 50 # => 42 a # => 50 ``` -### Method calls +## Method calls Methods without arguments can be called without parentheses. If arguments _are_ given, parentheses are required: @@ -789,7 +806,7 @@ If the last argument is a closure, it can be specified after the parentheses: foo(10) fn { bar } # Same as `foo(10, fn { bar })` ``` -### Binary expressions +## Binary expressions Binary operator expressions use the following syntax: @@ -814,7 +831,7 @@ higher precedence than the regular binary operators. This means `1 + 2 and 3 + 4` is parsed as `(1 + 2) and (3 + 4)`. `and` and `or` have the same precedence as each other. -### Indexing +## Indexing Inko doesn't have dedicated indexing syntax such as `array[index]` or `array[index] = value`, instead you'd use the methods `get`, `get_mut`, and @@ -828,7 +845,7 @@ numbers.set(1, 30) numbers.get(1) # => 30 ``` -### Type casts +## Type casts Type casting is done using `as` like so: diff --git a/docs/source/guides/scaling.md b/docs/source/references/tuning.md similarity index 64% rename from docs/source/guides/scaling.md rename to docs/source/references/tuning.md index 99c2b935d..c4c3283a8 100644 --- a/docs/source/guides/scaling.md +++ b/docs/source/references/tuning.md @@ -1,4 +1,8 @@ -# Tuning the runtime +--- +{ + "title": "Tuning the runtime" +} +--- Inko has various configuration settings you can tune, such as the number threads to use for running processes. There also exist system wide settings you can (or @@ -9,16 +13,56 @@ might need to) tune for large programs. Inko's runtime can be configured using various environment variables. These variables must be set at run-time, not at compile-time. -!!! info - "CPU" in the default value column refers to the number of CPU cores. For - example, if you have 16 cores available, then CPU means 16. +::: info +"CPU" in the default value column refers to the number of CPU cores. For +example, if you have 16 cores available, then CPU means 16. +::: -| Variable | Default | Max | Purpose -|:---------------------|:--------|:----------|:-------------------- -| INKO_PROCESS_THREADS | CPU | 2^16^ - 1 | The number of OS threads to use for running processes. -| INKO_BACKUP_THREADS | CPU * 4 | 2^16^ - 1 | The number of OS threads to use for replacing OS threads performing blocking operations. -| INKO_NETPOLL_THREADS | 1 | 128 | The number of OS threads to use for polling sockets for readiness. -| INKO_STACK_SIZE | 1048576 | 2^32^ - 1 | The size (in bytes) of each process' stack. Stacks don't grow, so be careful to not set this too low or too high. +### INKO\_PROCESS\_THREADS + +|= +| Default +| Max +|- +| CPU +| 2^16^ - 1 + +The number of OS threads to use for running processes. + +### INKO\_BACKUP\_THREADS + +|= +| Default +| Max +|- +| CPU * 4 +| 2^16^ - 1 + +The number of OS threads to use for replacing OS threads performing blocking +operations. + +### INKO\_NETPOLL\_THREADS + +|= +| Default +| Max +|- +| 1 +| 128 + +The number of OS threads to use for polling sockets for readiness. + +### INKO\_STACK\_SIZE + +|= +| Default +| Max +|- +| 1048576 +| 2^32^ - 1 + +The size (in bytes) of each process' stack. Stacks don't grow, so be careful to +not set this too low or too high. ## Kernel settings @@ -38,7 +82,7 @@ On Linux this happens when you exceed the limit set in `/proc/sys/vm/max_map_count`, which typically defaults to 65 530. You can increase this setting as follows: -``` +```bash echo 655300 | sudo tee /proc/sys/vm/max_map_count ``` diff --git a/docs/source/getting-started/editors.md b/docs/source/setup/editors.md similarity index 64% rename from docs/source/getting-started/editors.md rename to docs/source/setup/editors.md index e358ef2aa..8c3052ac8 100644 --- a/docs/source/getting-started/editors.md +++ b/docs/source/setup/editors.md @@ -1,22 +1,26 @@ -# Editor setup +--- +{ + "title": "Setting up your editor" +} +--- -## Vim/Neovim +## (Neo)Vim For Vim and Neovim we provide [an official plugin](https://github.com/inko-lang/inko.vim). This plugin adds support for syntax highlighting, file type detection, folding, and indentation. -To use this plugin, add the following to your `.vimrc` or `init.lua` (if you're -using Neovim): - -=== "vim-plug" - ```vim - Plug 'inko-lang/inko.vim' - ``` -=== "packer.nvim" - ```lua - use 'inko-lang/inko.vim' - ``` +### vim-plug + +```vim +Plug 'inko-lang/inko.vim' +``` + +### packer.nvim + +```lua +use 'inko-lang/inko.vim' +``` ## Visual Studio Code diff --git a/docs/source/getting-started/installation.md b/docs/source/setup/installation.md similarity index 71% rename from docs/source/getting-started/installation.md rename to docs/source/setup/installation.md index 2729487aa..1ef0fc974 100644 --- a/docs/source/getting-started/installation.md +++ b/docs/source/setup/installation.md @@ -1,4 +1,8 @@ -# Installation +--- +{ + "title": "Installation" +} +--- Inko's native code compiler is written in [Rust](https://www.rust-lang.org/) and uses [LLVM](https://llvm.org/) as its backend. The generated machine code links @@ -10,31 +14,22 @@ choice. ## Supported platforms Inko supports Linux, macOS, and FreeBSD (13.2 or newer). Inko might also work on -other platforms, but we only provide support for the listed platforms. - -Inko historically also supported Windows, but we dropped support with the -introduction of the native code compiler. Our knowledge of Windows is limited, -and the cost of maintaining Windows support isn't worth it. In the future we may -support Windows again, providing somebody is willing to maintain the necessary -changes. +other platforms, but we only provide support for the listed platforms. Windows +isn't supported. ## Requirements - A 64-bits little-endian platform - Rust 1.70 or newer -- LLVM 15, with support for static linking against LLVM +- LLVM 15 - A C compiler such as [GCC](https://gcc.gnu.org/) or [clang](https://clang.llvm.org/) -- Git, for managing Inko packages - -[lld](https://lld.llvm.org/) is an optional dependency of Inko, and is used -automatically on Linux when available. +- Git, for managing packages using the `inko pkg` command ## Cross-platform The easiest way to install Inko is to use Inko's own version manager: -[ivm](ivm.md). ivm supports all the platforms officially supported by Inko. -Details on how to install ivm are [found here](ivm.md#installing). +[ivm](ivm). ivm supports all the platforms officially supported by Inko. When installing Inko using ivm, you must first install the dependencies listed [here](#dependencies). @@ -54,7 +49,7 @@ ivm install X.Y.Z ``` For more details on how to use ivm and switch versions, refer to the [ivm -guide](ivm.md). +guide](ivm). ## Docker @@ -66,40 +61,32 @@ These images are published on To install a specific version, run the following (replacing `X.Y.Z` with the version you want to install): -=== "Docker" - ```bash - docker pull ghcr.io/inko-lang/inko:X.Y.Z - ``` -=== "Podman" - ```bash - podman pull ghcr.io/inko-lang/inko:X.Y.Z - ``` +```bash +docker pull ghcr.io/inko-lang/inko:X.Y.Z # Using Docker +podman pull ghcr.io/inko-lang/inko:X.Y.Z # Using Podman +``` You can then run Inko as follows: -=== "Docker" - ```bash - docker run inko-lang/inko:X.Y.Z inko --version - ``` -=== "Podman" - ```bash - podman run inko-lang/inko:X.Y.Z inko --version - ``` +```bash +docker run inko-lang/inko:X.Y.Z inko --version # Using Docker +podman run inko-lang/inko:X.Y.Z inko --version # Using Podman +``` We also build a container for every commit on the `main` branch, provided the tests are passing. If you like to live dangerously, you can use these as follows: -=== "Docker" - ```bash - docker pull ghcr.io/inko-lang/inko:main - docker run inko-lang/inko:main inko --version - ``` -=== "Podman" - ```bash - podman pull ghcr.io/inko-lang/inko:main - podman run inko-lang/inko:main inko --version - ``` +```bash +# Using Docker: +docker pull ghcr.io/inko-lang/inko:main +docker run inko-lang/inko:main inko --version + +# Using Podman: +podman pull ghcr.io/inko-lang/inko:main +podman run inko-lang/inko:main inko --version +``` + ## Arch Linux Inko is available in the [AUR](https://aur.archlinux.org/): @@ -136,6 +123,19 @@ Inko is available in [Homebrew](https://brew.sh/): brew install inko ``` +You may need to add the LLVM `bin` directory to your `PATH` as follows: + +```bash +export PATH="$(brew --prefix llvm@15)/bin:$PATH" +``` + +You may also need to set the `LIBRARY_PATH` to the following, though this +doesn't appear to always be needed: + +```bash +export LIBRARY_PATH="$(brew --prefix llvm@15)/lib:$(brew --prefix zstd)/lib" +``` + ## From source When building from Git, first clone the repository: @@ -148,18 +148,31 @@ cd inko Or use a release tarball: ```bash -mkdir 0.11.0 -curl https://releases.inko-lang.org/0.11.0.tar.gz -o 0.11.0.tar.gz -tar -C 0.11.0 -xf 0.11.0.tar.gz -cd 0.11.0 +VER='0.13.2' # Replace this with the latest version of Inko + +mkdir $VER +curl https://releases.inko-lang.org/$VER.tar.gz -o $VER.tar.gz +tar -C $VER -xf $VER.tar.gz +cd $VER ``` You can then compile Inko as follows: -| Mode | Command | Executable | Runtime library -|:--------|:------------------------|:------------------------|:----------------------- -| Debug | `cargo build` | `./target/debug/inko` | `./target/debug/libinko.a` -| Release | `cargo build --release` | `./target/release/inko` | `./target/release/libinko.a` +|= +| Mode +| Command +| Executable +| Runtime library +|- +| Debug +| `cargo build` +| `./target/debug/inko` +| `./target/debug/libinko.a` +|- +| Release +| `cargo build --release` +| `./target/release/inko` +| `./target/release/libinko.a` In both cases the standard library in `std/src` is used. You can customise the standard library and runtime library paths by setting these environment @@ -203,32 +216,9 @@ LIBRARY_PATH="/usr/local/lib" cargo build Without this the linker may fail to find the zstd and libffi libraries, which are needed by LLVM on FreeBSD. -### macOS - -When using Homebrew, you may need to add the LLVM `bin` directory to your `PATH` -as follows: - -```bash -export PATH="$(brew --prefix llvm@15)/bin:$PATH" -``` - -You may also need to set the `LIBRARY_PATH` to the LLVM `lib` directory, though -this doesn't always appear to be necessary: - -```bash -export LIBRARY_PATH="$(brew --prefix llvm@15)/lib" -``` - -If the zstd library can't be found, even though it's installed, you can use the -following instead: - -```bash -export LIBRARY_PATH="$(brew --prefix llvm@15)/lib:$(brew --prefix zstd)/lib" -``` - ## Dependencies -When building from source or using [ivm](ivm.md), you'll first need to install +When building from source or using [ivm](ivm), you'll first need to install the compiler's dependencies. ### Arch Linux @@ -239,11 +229,12 @@ sudo pacman -Sy llvm15 rust git base-devel ### Alpine -!!! warning - Due to [this bug](https://gitlab.com/taricorp/llvm-sys.rs/-/issues/44) in - the llvm-sys crate, compiling the compiler for musl targets (which includes - Alpine) fails with the error "could not find native static library `rt`, - perhaps an -L flag is missing?". +::: warn +Due to [this bug](https://gitlab.com/taricorp/llvm-sys.rs/-/issues/44) in +the llvm-sys crate, compiling the compiler for musl targets (which includes +Alpine) fails with the error "could not find native static library `rt`, +perhaps an -L flag is missing?". +::: ```bash sudo apk add build-base rust cargo llvm15 llvm15-dev llvm15-static git diff --git a/docs/source/getting-started/ivm.md b/docs/source/setup/ivm.md similarity index 63% rename from docs/source/getting-started/ivm.md rename to docs/source/setup/ivm.md index 05a9f5fa0..c8bdf15a8 100644 --- a/docs/source/getting-started/ivm.md +++ b/docs/source/setup/ivm.md @@ -1,29 +1,27 @@ -# The Inko version manager +--- +{ + "title": "Using Inko's version manager" +} +--- -Inko has its own version manager: [ivm](https://github.com/inko-lang/ivm). -Using ivm you can install and manage multiple versions of Inko. ivm is written -in Rust. +[ivm](https://github.com/inko-lang/ivm) is a tool used to install and manage +different versions of Inko, independent from your system's package manager. ivm +is written in Rust. ## Installing ivm itself only requires Rust 1.70 or newer, but to build Inko itself you'll need to also meet the requirements listed in the [installation -guide](installation.md). +guide](installation). ### Arch Linux -ivm can be installed using the AUR using an AUR wrapper of your choice. For -example, using [yay](https://github.com/Jguer/yay): - ```bash yay -S ivm ``` ### Fedora -Inko's [Copr repository](https://copr.fedorainfracloud.org/coprs/yorickpeterse/inko/) -can be used to install ivm as follows: - ```bash sudo dnf install dnf-plugins-core sudo dnf copr enable yorickpeterse/inko @@ -44,13 +42,11 @@ The resulting executable is found in `target/release/ivm`. ### Using crates.io -!!! note - If a package is available for your platform, we recommend installing ivm - through your platform's package manager instead. Once ivm is available on - enough platforms, we may stop publishing it to crates.io. - -ivm is available on [crates.io](https://crates.io/), and you can install it as -follows: +::: note +If a package is available for your platform, we recommend installing ivm +through your platform's package manager instead. Once ivm is available on +enough platforms, we may stop publishing it to crates.io. +::: ```bash cargo install ivm @@ -59,14 +55,10 @@ cargo install ivm This installs the `ivm` executable in `$HOME/.cargo/bin`, where `$HOME` is your home directory. You need to add this to your shell's PATH if not done already: -=== "Bash" - ```bash - export PATH="$HOME/.cargo/bin:$PATH" - ``` -=== "Fish" - ```bash - fish_add_path --path $HOME/.cargo/bin - ``` +```bash +export PATH="$HOME/.cargo/bin:$PATH" # Using Bash +fish_add_path --path $HOME/.cargo/bin # Using Fish +``` For more information, refer to [this rustup documentation page](https://rust-lang.github.io/rustup/installation/index.html). @@ -105,9 +97,10 @@ ivm install 0.10.0 # This will install version 0.10.0 ivm install latest # This will install the latest available version ``` -!!! tip - Make sure to set a default version after installing Inko, otherwise you have - to use `ivm run VERSION inko ...` to use Inko. +::: tip +Make sure to set a default version after installing Inko, otherwise you have +to use `ivm run VERSION inko ...` to use Inko. +::: To remove a version: @@ -161,20 +154,3 @@ The `default` command is used to set a default Inko version to use. When set, ivm will create a symbolic link in its `bin/` directory to the `inko` executable of the default version. By setting a default version you can just use `inko ...` instead of the much more verbose `ivm run VERSION inko ...`. - -## Packaging ivm - -If you are building a package of ivm (e.g. for Debian), you can use the provided -`Makefile` instead of `cargo build`: - -```bash -make -make install -``` - -This process can be customised by setting the following Make variables: - -- `DESTDIR`: the directory to install files into when running `make install`. -- `PREFIX`: the path prefix to use for all files, defaults to `/usr`. When - combined with `DESTDIR`, the value of `DESTDIR` prefixes this value. - diff --git a/docs/source/setup/whats-next.md b/docs/source/setup/whats-next.md new file mode 100644 index 000000000..fa3290295 --- /dev/null +++ b/docs/source/setup/whats-next.md @@ -0,0 +1,8 @@ +--- +{ + "title": "What's next?" +} +--- + +Now that your development environment is set up, it's time to start learning +Inko, starting with the [](../getting-started/hello-world) tutorial. diff --git a/docs/source/stylesheets/extra.css b/docs/source/stylesheets/extra.css deleted file mode 100644 index f0e554806..000000000 --- a/docs/source/stylesheets/extra.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - font-family: sans-serif !important; -} - -pre, code, kbd { - font-family: monospace !important; -} diff --git a/docs/src/docs/config.inko b/docs/src/docs/config.inko new file mode 100644 index 000000000..8376cac2d --- /dev/null +++ b/docs/src/docs/config.inko @@ -0,0 +1,41 @@ +import docs.menu.Menu +import std.clone.Clone +import std.fs.path.Path +import wobsite.Page + +let MENU_FILE = 'menu.json' + +class pub Config { + # The name of the website. + let pub @title: String + + # The base URL of the website. + let pub @base_url: String + + # The navigation menu to display at the top, the side, etc. + let @menu: Menu + + fn pub static new(source: ref Path) -> Result[Config, String] { + let menu = try Menu.parse(source, Path.new(MENU_FILE)) + + Result.Ok({Config { + @title = 'The Inko manual', + @base_url = 'https://docs.inko-lang.org/manual', + @menu = menu, + }}) + } + + fn canonical_url(page: ref Page) -> String { + "{@base_url}/latest{page.url}" + } +} + +impl Clone[Config] for Config { + fn pub clone -> Config { + Config { + @title = @title, + @base_url = @base_url, + @menu = @menu.clone, + } + } +} diff --git a/docs/src/docs/filters.inko b/docs/src/docs/filters.inko new file mode 100644 index 000000000..8cba76782 --- /dev/null +++ b/docs/src/docs/filters.inko @@ -0,0 +1,78 @@ +import builder.html.(Document, Element) +import docs.menu.Menu +import docs.url.(link_from, relative?) +import markdown.html.(Filter, TableOfContents) +import wobsite.Page +import wobsite.url.(relative_to_absolute) + +# A filter that automatically inserts a table of contents. +class AutoTableOfContents { + fn static new -> AutoTableOfContents { + AutoTableOfContents {} + } + + fn add_marker(document: mut Document) { + document.div.attr('class', 'toc') + } +} + +impl Filter for AutoTableOfContents { + fn pub mut run(document: mut Document) { + add_marker(document) + TableOfContents.new.run(document) + } +} + +# A filter that turns relative document links (e.g. `[](ivm)`) into the correct +# URLs, optionally setting the link text if left out. This makes it easier to +# link to different documents. +class RelativeLinks { + let @menu: ref Menu + let @page: ref Page + + fn update(element: mut Element) { + if element.name != 'a' { return } + + let href = match element.attributes.opt('href') { + case Some(v) if relative?(v) -> v + case _ -> return + } + + let rel = link_from(@page, href) + let title = match title(rel) { + case Some(v) -> v + case _ -> return + } + + if element.nodes.empty? { + element.nodes.clear + element.text(title) + } + + element.attributes.set('href', rel) + } + + fn title(relative: String) -> Option[String] { + let mut abs = relative_to_absolute(@page.url, relative, as_file: false) + + if abs.ends_with?('/').false? { abs = abs + '/' } + @menu.titles.opt(abs) + } +} + +impl Filter for RelativeLinks { + fn pub mut run(document: mut Document) { + let nodes = document.nodes.iter_mut.to_array + + loop { + match nodes.pop { + case Some(Element(el)) -> { + update(el) + nodes.append(el.nodes.iter_mut.to_array) + } + case Some(_) -> {} + case _ -> break + } + } + } +} diff --git a/docs/src/docs/layouts.inko b/docs/src/docs/layouts.inko new file mode 100644 index 000000000..747235a2d --- /dev/null +++ b/docs/src/docs/layouts.inko @@ -0,0 +1,239 @@ +import builder.html +import builder.xml +import docs.config.Config +import docs.filters.(AutoTableOfContents, RelativeLinks) +import docs.menu.(Item, Menu) +import docs.post_process +import docs.url.(link_from) +import markdown.html.(Filter, TableOfContents) +import std.string.StringBuffer +import wobsite.(Files, Page) +import wobsite.markdown.(Admonitions, SyntaxHighlight) +import wobsite.time.(human_readable_date, iso_date) + +fn filters(menu: ref Menu, page: ref Page) -> Array[Filter] { + [ + SyntaxHighlight.new as Filter, + Admonitions.new as Filter, + RelativeLinks { @menu = menu, @page = page } as Filter, + AutoTableOfContents {} as Filter, # This filter must come last + ] +} + +fn content(menu: ref Menu, page: ref Page, root: mut html.Element) { + let body = page.to_html(filters(menu, page)) + let toc = post_process.extract_toc(body) + let left = root.article.attr('class', 'content') + + left.header.h1.text(page.title) + left.append(body) + + match toc { + case Some(n) -> { + let right = root.aside.attr('class', 'right') + + right.header.h1.text('Table of contents') + right.nodes.push(n) + } + case _ -> {} + } +} + +fn sidebar_list( + root: mut html.Element, + title: String, + items: ref Array[Item], + page: ref Page, +) { + root.header.h1.text(title) + root.ul.with fn (ul) { + items.iter.each fn (item) { + let a = ul.li.a + + if item.url == page.url { a.attr('class', 'current') } + a.attr('href', link_from(page, item.url)).text(item.title) + } + } +} + +fn sidebar(config: ref Config, root: mut html.Element, page: ref Page) { + let section = config.menu.items.iter.find fn (pair) { + pair.value.iter.any? fn (item) { item.url == page.url } + } + + let pair = match section { case Some(v) -> v, case _ -> return } + let left = root.aside.attr('class', 'left') + + sidebar_list(left, pair.key, pair.value, page) +} + +fn home_sidebar(config: ref Config, root: mut html.Element, page: ref Page) { + let left = root.aside.attr('class', 'left') + + config.menu.items.iter.each fn (pair) { + sidebar_list(left, pair.key, pair.value, page) + } +} + +fn toggle_menu(query: String, open: String, close: String) -> html.Element { + let a = html.Element.new('a') + + a.attr('data-toggle-text', close).attr('data-toggle', query).text(open) + a +} + +fn link(href: String, rel: String) -> html.Element { + let el = html.Element.new('link') + + el.attr('rel', rel).attr('href', href) + el +} + +fn head(config: ref Config, page: ref Page) -> html.Element { + let head = html.Element.new('head') + + head + .meta + .attr( + 'content', + "\ + default-src 'self'; \ + script-src 'self'; \ + object-src 'none'; \ + style-src 'self'; \ + font-src 'self' data:; \ + base-uri 'none'; \ + form-action 'none'; \ + " + ) + .attr('http-equiv', 'Content-Security-Policy') + + head.meta.attr('charset', 'utf-8') + + head + .meta + .attr('name', 'viewport') + .attr('content', 'width=device-width, initial-scale=1.0') + + head + .link + .attr('rel', 'icon') + .attr('href', link_from(page, '/favicon.ico')) + .attr('type', 'image/x-icon') + + head + .script + .attr('src', link_from(page, '/js/main.js')) + .attr('defer', 'defer') + + head.add(link(link_from(page, '/css/reset.css'), rel: 'stylesheet')) + head.add(link(link_from(page, '/css/icons.css'), rel: 'stylesheet')) + head.add(link(link_from(page, '/css/main.css'), rel: 'stylesheet')) + head.add(link(config.canonical_url(page), rel: 'canonical')) + head.title.text(page.title) + head +} + +fn header(config: ref Config, page: ref Page) -> html.Element { + let root = html.Element.new('div') + + root.attr('class', 'top-bar').header.attr('class', 'grid').with fn (h) { + h.div.attr('class', 'logo').with fn (logo) { + logo + .img + .attr('src', link_from(page, '/images/logo.png')) + .attr('height', '24') + .attr('width', '24') + + logo.span.text(config.title) + } + + h.div.attr('class', 'expand-menus').with fn (div) { + div.add(toggle_menu('.top-bar nav', 'Show menu', 'Hide menu')) + div.add(toggle_menu('.page aside.left', 'Show chapters', 'Hide chapters')) + } + + h.nav.ul.with fn (ul) { + config.menu.items.iter.each fn (pair) { + let item = + match pair.value.opt(0) { case Some(v) -> v, case _ -> return } + + let chunks = item.url.split('/').to_array + + chunks.pop + + let dir = String.join(chunks.into_iter, '/') #+ '/' + + ul.li.a.attr('href', link_from(page, item.url)).with fn (a) { + a.text(pair.key) + if page.url.starts_with?(dir) or page.url == item.url { + a.attr('class', 'current') + } + } + } + } + } + + root +} + +fn container( + body: mut html.Element, + html_class: String, + func: fn (mut html.Element), +) { + body.div.attr('class', html_class).div.attr('class', 'grid').with(func) +} + +fn pub home(config: ref Config, page: Page) -> html.Document { + let doc = html.Document.html('en') fn (html) { + html.add(head(config, page)) + html.body.with fn (body) { + body.add(header(config, page)) + container(body, 'page home') fn (div) { + home_sidebar(config, div, page) + content(config.menu, page, div) + } + } + } + + doc +} + +fn pub page(config: ref Config, page: Page) -> html.Document { + let doc = html.Document.html('en') fn (html) { + html.add(head(config, page)) + html.body.with fn (body) { + body.add(header(config, page)) + container(body, 'page') fn (div) { + sidebar(config, div, page) + content(config.menu, page, div) + } + } + } + + doc +} + +fn pub missing(config: ref Config, page: Page) -> html.Document { + html.Document.html('en') fn (html) { + html.add(head(config, page)) + html.body.with fn (body) { + body.add(header(config, page)) + container(body, 'missing-page') fn (div) { + div.article.with fn (article) { + article.header.with fn (h) { + h + .img + .attr('src', link_from(page, '/images/404.gif')) + .attr('height', '255') + + h.h1.text(page.title) + } + + article.append(page.to_html(filters(config.menu, page))) + } + } + } + } +} diff --git a/docs/src/docs/menu.inko b/docs/src/docs/menu.inko new file mode 100644 index 000000000..8d1ba09c7 --- /dev/null +++ b/docs/src/docs/menu.inko @@ -0,0 +1,102 @@ +import markdown.(split_front_matter) +import std.clone.Clone +import std.fs.file.ReadOnlyFile +import std.fs.path.Path +import std.json.Json +import wobsite.(Files, FrontMatter) +import wobsite.url.(file_url) + +fn parse_front_matter(path: ref Path) -> Result[FrontMatter, String] { + let bytes = ByteArray.new + + try ReadOnlyFile + .new(path) + .then fn (f) { f.read_all(bytes) } + .map_error fn (e) { "failed to read {path}: {e}" } + + FrontMatter + .parse(split_front_matter(bytes.into_string).0) + .map_error fn (e) { "failed to parse the front matter of {path}: {e}" } +} + +class Item { + let @title: String + let @url: String +} + +impl Clone[Item] for Item { + fn pub clone -> Item { + Item { @title = @title, @url = @url } + } +} + +class Menu { + let @items: Map[String, Array[Item]] + let @titles: Map[String, String] + + fn static parse( + source: ref Path, + path: ref Path, + ) -> Result[Menu, String] { + let bytes = ByteArray.new + + try ReadOnlyFile + .new(path) + .then fn (f) { f.read_all(bytes) } + .map_error fn (e) { e.to_string } + + let root = match Json.parse(bytes) { + case Ok(Object(map)) -> map + case Ok(_) -> throw 'the top-level value must be an object' + case Error(e) -> throw e.to_string + } + + let titles = Map.new + let items = Map.new + + try root.into_iter.try_each fn (pair) { + let key = pair.key + let val = match pair { + case { @value = Array(v) } -> v + case _ -> throw 'the values of each key must be an array' + } + + let values = [] + + try val.into_iter.try_each fn (val) { + let rel = match val { + case String(v) -> v + case _ -> throw 'each array value must be a string' + } + + let path = source.join(rel) + let front = try parse_front_matter(path) + let url = file_url(source, path) + + titles.set(url, front.title) + values.push(Item { @title = front.title, @url = url }) + Result.Ok(nil) + } + + items.set(key, values) + Result.Ok(nil) + } + + Result.Ok(Menu { @items = items, @titles = titles }) + } +} + +impl Clone[Menu] for Menu { + fn pub clone -> Menu { + Menu { + @items = @items.iter.reduce(Map.new) fn (map, pair) { + map.set(pair.key, pair.value.clone) + map + }, + @titles = @titles.iter.reduce(Map.new) fn (map, pair) { + map.set(pair.key, pair.value) + map + } + } + } +} diff --git a/docs/src/docs/post_process.inko b/docs/src/docs/post_process.inko new file mode 100644 index 000000000..23e4f9248 --- /dev/null +++ b/docs/src/docs/post_process.inko @@ -0,0 +1,13 @@ +import builder.html.(Document, Element, Node) + +fn extract_toc(document: mut Document) -> Option[Node] { + match document.nodes.last { + case Some(Element({ @name = 'ul', @attributes = attr })) -> { + match attr.opt('class') { + case Some('toc') -> document.nodes.pop + case _ -> Option.None + } + } + case _ -> Option.None + } +} diff --git a/docs/src/docs/url.inko b/docs/src/docs/url.inko new file mode 100644 index 000000000..70abb85d6 --- /dev/null +++ b/docs/src/docs/url.inko @@ -0,0 +1,27 @@ +import wobsite.Page +import wobsite.url.(relative_to_absolute) + +fn link_from(page: ref Page, to: String) -> String { + if page.url == '/' { + to.strip_prefix('/') + } else { + let mut steps = page.url.split('/').select fn (v) { v != '' }.count + let to_abs = to.starts_with?('/') + + # The source/current URLs are directories (e.g. /foo/bar is in fact + # /foo/bar/index.html). This ensures that if we are at /foo/bar and link to + # test, the URL is ../test instead of ../../test. + if steps > 1 and to_abs.false? { steps -= 1 } + + let up = String.join(0.until(steps).iter.map fn (_) { '..' }, '/') + let sep = if to_abs { '' } else { '/' } + + "{up}{sep}{to}" + } +} + +fn relative?(url: String) -> Bool { + url.starts_with?('https:').false? + and url.starts_with?('http:').false? + and url.starts_with?('#').false? +} diff --git a/docs/src/main.inko b/docs/src/main.inko new file mode 100644 index 000000000..b61b37fae --- /dev/null +++ b/docs/src/main.inko @@ -0,0 +1,48 @@ +import docs.config.Config +import docs.layouts +import wobsite.Site + +class async Main { + fn async main { + Site.build fn (site) { + # Each page needs this data, so we panic if we can't parse it as we can't + # build the site without it. + let conf = match Config.new(site.files.source) { + case Ok(v) -> v + case Error(e) -> panic("failed to set up the configuration: {e}") + } + + site.copy('*.ico') + site.copy('*.txt') + site.copy('*.jpg') + site.copy('*.png') + site.copy('*.gif') + site.copy('*.css') + site.copy('*.js') + + site.page('/index.md') fn { + recover { + let conf = conf.clone + + fn move (_, page) { Result.Ok(layouts.home(conf, page)) } + } + } + + site.page('/404.md') fn { + recover { + let conf = conf.clone + + fn move (_, page) { Result.Ok(layouts.missing(conf, page)) } + } + } + + site.page('/*/*.md') fn { + recover { + let conf = conf.clone + + fn move (_, page) { Result.Ok(layouts.page(conf, page)) } + } + } + } + } +} diff --git a/docs/test/docs/test_url.inko b/docs/test/docs/test_url.inko new file mode 100644 index 000000000..61d7ef51f --- /dev/null +++ b/docs/test/docs/test_url.inko @@ -0,0 +1,36 @@ +import docs.url.(link_from) +import markdown.Document +import std.fs.path.Path +import std.test.Tests +import std.time.DateTime +import wobsite.(FrontMatter, Page) + +fn page(url: String) -> Page { + Page { + @front_matter = FrontMatter { + @title = 'Foo', + @date = DateTime.utc, + }, + @url = url, + @source_path = Path.new('foo'), + @body = Document { + @children = [], + @references = Map.new, + @footnotes = Map.new + }, + } +} + +fn pub tests(t: mut Tests) { + t.test('url.link_from') fn (t) { + t.equal(link_from(page('/'), '/css/main.css'), 'css/main.css') + t.equal(link_from(page('/'), 'test.md'), 'test.md') + t.equal(link_from(page('/'), 'foo/test.md'), 'foo/test.md') + t.equal(link_from(page('/foo/'), '/css/main.css'), '../css/main.css') + t.equal(link_from(page('/foo'), '/css/main.css'), '../css/main.css') + t.equal(link_from(page('/foo'), 'test.md'), '../test.md') + t.equal(link_from(page('/foo/bar'), 'test.md'), '../test.md') + t.equal(link_from(page('/foo/bar'), '../test.md'), '../../test.md') + t.equal(link_from(page('/setup/ivm'), 'installation'), '../installation') + } +} diff --git a/docs/vale/docs/weasel.yml b/docs/vale/docs/weasel.yml index afdf8d19d..5722c3c69 100644 --- a/docs/vale/docs/weasel.yml +++ b/docs/vale/docs/weasel.yml @@ -47,7 +47,6 @@ tokens: - doubtfully - dumbly - eagerly - - early - easily - elegantly - enormously diff --git a/docs/vale/proselint/Typography.yml b/docs/vale/proselint/Typography.yml deleted file mode 100644 index 60283ebf0..000000000 --- a/docs/vale/proselint/Typography.yml +++ /dev/null @@ -1,11 +0,0 @@ -extends: substitution -message: Consider using the '%s' symbol instead of '%s'. -level: error -nonword: true -swap: - '\.\.\.': … - '\([cC]\)': © - '\(TM\)': ™ - '\(tm\)': ™ - '\([rR]\)': ® - '[0-9]+ ?x ?[0-9]+': × diff --git a/scripts/docs_versions.py b/scripts/docs_versions.py deleted file mode 100644 index 2a5c50944..000000000 --- a/scripts/docs_versions.py +++ /dev/null @@ -1,43 +0,0 @@ -import sys -import json - - -def version_sort(version): - if "." in version: - return version.split(".") - else: - return [version] - - -versions = [] - -for line in sys.stdin: - chunks = line.strip()[1:].split(".") - version = (int(chunks[0]), int(chunks[1]), int(chunks[2])) - - # We only started tracking the documentation per version as of version - # 0.10.0, so we ignore any versions that came before it. - if version[0] >= 0 and version[1] >= 10 and version[2] >= 0: - versions.append(version) - -versions = sorted(versions, reverse=True) -latest = None -entries = [ - {"version": "latest", "title": "latest", "aliases": []}, - {"version": "main", "title": "main", "aliases": []}, -] - -if versions: - latest = versions[0] - -for version in versions: - aliases = [] - - if version == latest: - aliases.append("latest") - - name = f"v{version[0]}.{version[1]}.{version[2]}" - - entries.append({"version": name, "title": name, "aliases": aliases}) - -print(json.dumps(entries))