From 06f77fb6c37fde3ddcc850582ee94e35bb28f17e Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 19:31:56 +0000 Subject: [PATCH] Deployer 7.2.0 --- .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/bug_report.md | 11 - .github/ISSUE_TEMPLATE/config.yml | 8 - .github/ISSUE_TEMPLATE/feature_request.md | 7 - .github/PULL_REQUEST_TEMPLATE.md | 8 - .github/workflows/check.yml | 62 - .github/workflows/docs.yml | 44 - .github/workflows/release.yml | 69 - .github/workflows/sync.yml | 46 - .github/workflows/test.yml | 75 - bin/build | 92 - bin/dep | 97 - bin/docgen | 56 - composer.json | 96 +- composer.lock | 4819 ----------------- dep | Bin 0 -> 781148 bytes deploy.yaml | 21 - docs/KNOWN_BUGS.md | 59 - docs/UPGRADE.md | 255 - docs/api.md | 565 -- docs/avoid-php-fpm-reloading.md | 54 - docs/basics.md | 234 - docs/ci-cd.md | 99 - docs/cli.md | 147 - docs/contrib/README.md | 33 - docs/contrib/bugsnag.md | 41 - docs/contrib/cachetool.md | 138 - docs/contrib/chatwork.md | 205 - docs/contrib/cimonitor.md | 223 - docs/contrib/cloudflare.md | 43 - docs/contrib/cpanel.md | 175 - docs/contrib/crontab.md | 65 - docs/contrib/directadmin.md | 83 - docs/contrib/discord.md | 160 - docs/contrib/grafana.md | 55 - docs/contrib/hangouts.md | 130 - docs/contrib/hipchat.md | 85 - docs/contrib/ispmanager.md | 245 - docs/contrib/mattermost.md | 206 - docs/contrib/ms-teams.md | 183 - docs/contrib/newrelic.md | 84 - docs/contrib/npm.md | 52 - docs/contrib/phinx.md | 118 - docs/contrib/php-fpm.md | 75 - docs/contrib/rabbit.md | 73 - docs/contrib/raygun.md | 45 - docs/contrib/rocketchat.md | 230 - docs/contrib/rollbar.md | 56 - docs/contrib/rsync.md | 233 - docs/contrib/sentry.md | 70 - docs/contrib/slack.md | 219 - docs/contrib/telegram.md | 155 - docs/contrib/webpack_encore.md | 67 - docs/contrib/workplace.md | 145 - docs/contrib/yammer.md | 140 - docs/contrib/yarn.md | 47 - docs/getting-started.md | 164 - docs/hosts.md | 189 - docs/installation.md | 31 - docs/recipe/README.md | 28 - docs/recipe/cakephp.md | 116 - docs/recipe/codeigniter.md | 90 - docs/recipe/common.md | 251 - docs/recipe/composer.md | 32 - docs/recipe/contao.md | 166 - docs/recipe/craftcms.md | 126 - docs/recipe/deploy/check_remote.md | 25 - docs/recipe/deploy/cleanup.md | 35 - docs/recipe/deploy/clear_paths.md | 42 - docs/recipe/deploy/copy_dirs.md | 33 - docs/recipe/deploy/info.md | 24 - docs/recipe/deploy/lock.md | 40 - docs/recipe/deploy/push.md | 26 - docs/recipe/deploy/release.md | 111 - docs/recipe/deploy/rollback.md | 54 - docs/recipe/deploy/setup.md | 24 - docs/recipe/deploy/shared.md | 47 - docs/recipe/deploy/symlink.md | 35 - docs/recipe/deploy/update_code.md | 90 - docs/recipe/deploy/vendors.md | 58 - docs/recipe/deploy/writable.md | 102 - docs/recipe/drupal7.md | 132 - docs/recipe/drupal8.md | 117 - docs/recipe/flow_framework.md | 122 - docs/recipe/fuelphp.md | 80 - docs/recipe/joomla.md | 100 - docs/recipe/laravel.md | 475 -- docs/recipe/magento.md | 118 - docs/recipe/magento2.md | 486 -- docs/recipe/pimcore.md | 89 - docs/recipe/prestashop.md | 127 - docs/recipe/provision.md | 160 - docs/recipe/provision/databases.md | 90 - docs/recipe/provision/nodejs.md | 35 - docs/recipe/provision/php.md | 51 - docs/recipe/provision/website.md | 61 - docs/recipe/shopware.md | 257 - docs/recipe/silverstripe.md | 136 - docs/recipe/statamic.md | 222 - docs/recipe/sulu.md | 87 - docs/recipe/symfony.md | 183 - docs/recipe/typo3.md | 123 - docs/recipe/wordpress.md | 100 - docs/recipe/yii.md | 90 - docs/recipe/zend_framework.md | 65 - docs/selector.md | 178 - docs/sidebar.js | 19 - docs/tasks.md | 135 - docs/yaml.md | 31 - phpcs.xml | 33 - phpstan.neon | 15 - phpunit.xml | 24 - tests/bootstrap.php | 40 - tests/docker/Dockerfile | 102 - tests/docker/README.md | 88 - tests/docker/conf/10-coverage.ini | 2 - tests/docker/conf/healthcheck.conf | 32 - tests/docker/docker-compose.yml | 48 - tests/docker/initial-site/public/index.html | 5 - tests/docker/scripts/install-composer.sh | 18 - .../coverage-start-wrapper.php | 5 - tests/docker/scripts/start-servers.sh | 8 - tests/e2e/AbstractE2ETest.php | 17 - tests/e2e/ConsoleApplicationTester.php | 147 - tests/e2e/FunctionsE2ETest.php | 24 - tests/e2e/LaravelBoilerplateE2ETest.php | 37 - tests/e2e/MiscE2ETest.php | 45 - tests/e2e/SymfonyBoilerplateE2ETest.php | 0 tests/e2e/TimeoutsE2ETest.php | 25 - tests/e2e/bootstrap.php | 14 - tests/e2e/coverage/coverage-report.php | 40 - tests/e2e/coverage/coverage-start.php | 60 - tests/e2e/coverage/start-e2e-test.sh | 12 - tests/e2e/phpunit-e2e.xml | 8 - tests/e2e/recipe/functions.php | 14 - tests/e2e/recipe/hosts.php | 13 - tests/e2e/recipe/laravel-boilerplate.php | 29 - tests/e2e/recipe/misc.php | 12 - tests/e2e/recipe/timeouts.php | 20 - tests/fixtures/project/uploaded.html | 0 tests/fixtures/repository/.env | 1 - tests/fixtures/repository/README.md | 3 - tests/fixtures/repository/composer.json | 6 - tests/fixtures/repository/uploads/poem.txt | 12 - tests/joy/HostDefaultConfigTest.php | 34 - tests/joy/JoyTest.php | 76 - tests/joy/OnFuncTest.php | 49 - tests/legacy/AbstractTest.php | 73 - tests/legacy/CurrentPathTest.php | 35 - tests/legacy/DeployTest.php | 144 - tests/legacy/EnvTest.php | 25 - tests/legacy/NamedArgumentsTest.php | 56 - tests/legacy/OncePerNodeTest.php | 25 - tests/legacy/OnceTest.php | 22 - tests/legacy/ParallelTest.php | 114 - tests/legacy/SelectTest.php | 33 - tests/legacy/UpdateCodeTest.php | 33 - tests/legacy/YamlTest.php | 52 - tests/legacy/recipe/deploy.php | 47 - tests/legacy/recipe/deploy.yaml | 27 - tests/legacy/recipe/env.php | 22 - tests/legacy/recipe/named_arguments.php | 22 - tests/legacy/recipe/once.php | 10 - tests/legacy/recipe/once_per_node.php | 16 - tests/legacy/recipe/parallel.php | 49 - tests/legacy/recipe/select.php | 13 - tests/legacy/recipe/update_code.php | 9 - tests/phpstan-baseline.neon | 52 - tests/src/Collection/CollectionTest.php | 52 - tests/src/Command/BlackjackCommandTest.php | 20 - tests/src/Component/Pimple/PimpleTest.php | 599 -- tests/src/Component/Ssh/IOArgumentsTest.php | 34 - tests/src/Configuration/ConfigurationTest.php | 174 - tests/src/DeployerTest.php | 36 - tests/src/FunctionsTest.php | 185 - tests/src/Host/ConfigurationTest.php | 87 - tests/src/Host/HostTest.php | 86 - tests/src/Host/RangeTest.php | 30 - tests/src/Importer/ImporterTest.php | 82 - tests/src/Selector/SelectorTest.php | 32 - tests/src/Support/HelpersTest.php | 62 - tests/src/Support/ObjectProxyTest.php | 27 - tests/src/Task/ContextTest.php | 36 - tests/src/Task/ScriptManagerTest.php | 98 - tests/src/Task/TaskTest.php | 114 - 185 files changed, 29 insertions(+), 20334 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/check.yml delete mode 100644 .github/workflows/docs.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/sync.yml delete mode 100644 .github/workflows/test.yml delete mode 100755 bin/build delete mode 100755 bin/dep delete mode 100755 bin/docgen delete mode 100644 composer.lock create mode 100755 dep delete mode 100644 deploy.yaml delete mode 100644 docs/KNOWN_BUGS.md delete mode 100644 docs/UPGRADE.md delete mode 100644 docs/api.md delete mode 100644 docs/avoid-php-fpm-reloading.md delete mode 100644 docs/basics.md delete mode 100755 docs/ci-cd.md delete mode 100755 docs/cli.md delete mode 100644 docs/contrib/README.md delete mode 100644 docs/contrib/bugsnag.md delete mode 100644 docs/contrib/cachetool.md delete mode 100644 docs/contrib/chatwork.md delete mode 100644 docs/contrib/cimonitor.md delete mode 100644 docs/contrib/cloudflare.md delete mode 100644 docs/contrib/cpanel.md delete mode 100644 docs/contrib/crontab.md delete mode 100644 docs/contrib/directadmin.md delete mode 100644 docs/contrib/discord.md delete mode 100644 docs/contrib/grafana.md delete mode 100644 docs/contrib/hangouts.md delete mode 100644 docs/contrib/hipchat.md delete mode 100644 docs/contrib/ispmanager.md delete mode 100644 docs/contrib/mattermost.md delete mode 100644 docs/contrib/ms-teams.md delete mode 100644 docs/contrib/newrelic.md delete mode 100644 docs/contrib/npm.md delete mode 100644 docs/contrib/phinx.md delete mode 100644 docs/contrib/php-fpm.md delete mode 100644 docs/contrib/rabbit.md delete mode 100644 docs/contrib/raygun.md delete mode 100644 docs/contrib/rocketchat.md delete mode 100644 docs/contrib/rollbar.md delete mode 100644 docs/contrib/rsync.md delete mode 100644 docs/contrib/sentry.md delete mode 100644 docs/contrib/slack.md delete mode 100644 docs/contrib/telegram.md delete mode 100644 docs/contrib/webpack_encore.md delete mode 100644 docs/contrib/workplace.md delete mode 100644 docs/contrib/yammer.md delete mode 100644 docs/contrib/yarn.md delete mode 100755 docs/getting-started.md delete mode 100644 docs/hosts.md delete mode 100755 docs/installation.md delete mode 100644 docs/recipe/README.md delete mode 100644 docs/recipe/cakephp.md delete mode 100644 docs/recipe/codeigniter.md delete mode 100644 docs/recipe/common.md delete mode 100644 docs/recipe/composer.md delete mode 100644 docs/recipe/contao.md delete mode 100644 docs/recipe/craftcms.md delete mode 100644 docs/recipe/deploy/check_remote.md delete mode 100644 docs/recipe/deploy/cleanup.md delete mode 100644 docs/recipe/deploy/clear_paths.md delete mode 100644 docs/recipe/deploy/copy_dirs.md delete mode 100644 docs/recipe/deploy/info.md delete mode 100644 docs/recipe/deploy/lock.md delete mode 100644 docs/recipe/deploy/push.md delete mode 100644 docs/recipe/deploy/release.md delete mode 100644 docs/recipe/deploy/rollback.md delete mode 100644 docs/recipe/deploy/setup.md delete mode 100644 docs/recipe/deploy/shared.md delete mode 100644 docs/recipe/deploy/symlink.md delete mode 100644 docs/recipe/deploy/update_code.md delete mode 100644 docs/recipe/deploy/vendors.md delete mode 100644 docs/recipe/deploy/writable.md delete mode 100644 docs/recipe/drupal7.md delete mode 100644 docs/recipe/drupal8.md delete mode 100644 docs/recipe/flow_framework.md delete mode 100644 docs/recipe/fuelphp.md delete mode 100644 docs/recipe/joomla.md delete mode 100644 docs/recipe/laravel.md delete mode 100644 docs/recipe/magento.md delete mode 100644 docs/recipe/magento2.md delete mode 100644 docs/recipe/pimcore.md delete mode 100644 docs/recipe/prestashop.md delete mode 100644 docs/recipe/provision.md delete mode 100644 docs/recipe/provision/databases.md delete mode 100644 docs/recipe/provision/nodejs.md delete mode 100644 docs/recipe/provision/php.md delete mode 100644 docs/recipe/provision/website.md delete mode 100644 docs/recipe/shopware.md delete mode 100644 docs/recipe/silverstripe.md delete mode 100644 docs/recipe/statamic.md delete mode 100644 docs/recipe/sulu.md delete mode 100644 docs/recipe/symfony.md delete mode 100644 docs/recipe/typo3.md delete mode 100644 docs/recipe/wordpress.md delete mode 100644 docs/recipe/yii.md delete mode 100644 docs/recipe/zend_framework.md delete mode 100644 docs/selector.md delete mode 100644 docs/sidebar.js delete mode 100644 docs/tasks.md delete mode 100644 docs/yaml.md delete mode 100644 phpcs.xml delete mode 100644 phpstan.neon delete mode 100644 phpunit.xml delete mode 100644 tests/bootstrap.php delete mode 100644 tests/docker/Dockerfile delete mode 100644 tests/docker/README.md delete mode 100644 tests/docker/conf/10-coverage.ini delete mode 100644 tests/docker/conf/healthcheck.conf delete mode 100644 tests/docker/docker-compose.yml delete mode 100644 tests/docker/initial-site/public/index.html delete mode 100644 tests/docker/scripts/install-composer.sh delete mode 100644 tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php delete mode 100644 tests/docker/scripts/start-servers.sh delete mode 100644 tests/e2e/AbstractE2ETest.php delete mode 100644 tests/e2e/ConsoleApplicationTester.php delete mode 100644 tests/e2e/FunctionsE2ETest.php delete mode 100644 tests/e2e/LaravelBoilerplateE2ETest.php delete mode 100644 tests/e2e/MiscE2ETest.php delete mode 100644 tests/e2e/SymfonyBoilerplateE2ETest.php delete mode 100644 tests/e2e/TimeoutsE2ETest.php delete mode 100644 tests/e2e/bootstrap.php delete mode 100644 tests/e2e/coverage/coverage-report.php delete mode 100644 tests/e2e/coverage/coverage-start.php delete mode 100644 tests/e2e/coverage/start-e2e-test.sh delete mode 100644 tests/e2e/phpunit-e2e.xml delete mode 100644 tests/e2e/recipe/functions.php delete mode 100644 tests/e2e/recipe/hosts.php delete mode 100644 tests/e2e/recipe/laravel-boilerplate.php delete mode 100644 tests/e2e/recipe/misc.php delete mode 100644 tests/e2e/recipe/timeouts.php delete mode 100644 tests/fixtures/project/uploaded.html delete mode 100644 tests/fixtures/repository/.env delete mode 100644 tests/fixtures/repository/README.md delete mode 100644 tests/fixtures/repository/composer.json delete mode 100644 tests/fixtures/repository/uploads/poem.txt delete mode 100644 tests/joy/HostDefaultConfigTest.php delete mode 100644 tests/joy/JoyTest.php delete mode 100644 tests/joy/OnFuncTest.php delete mode 100644 tests/legacy/AbstractTest.php delete mode 100644 tests/legacy/CurrentPathTest.php delete mode 100644 tests/legacy/DeployTest.php delete mode 100644 tests/legacy/EnvTest.php delete mode 100644 tests/legacy/NamedArgumentsTest.php delete mode 100644 tests/legacy/OncePerNodeTest.php delete mode 100644 tests/legacy/OnceTest.php delete mode 100644 tests/legacy/ParallelTest.php delete mode 100644 tests/legacy/SelectTest.php delete mode 100644 tests/legacy/UpdateCodeTest.php delete mode 100644 tests/legacy/YamlTest.php delete mode 100644 tests/legacy/recipe/deploy.php delete mode 100644 tests/legacy/recipe/deploy.yaml delete mode 100644 tests/legacy/recipe/env.php delete mode 100644 tests/legacy/recipe/named_arguments.php delete mode 100644 tests/legacy/recipe/once.php delete mode 100644 tests/legacy/recipe/once_per_node.php delete mode 100644 tests/legacy/recipe/parallel.php delete mode 100644 tests/legacy/recipe/select.php delete mode 100644 tests/legacy/recipe/update_code.php delete mode 100644 tests/phpstan-baseline.neon delete mode 100644 tests/src/Collection/CollectionTest.php delete mode 100644 tests/src/Command/BlackjackCommandTest.php delete mode 100644 tests/src/Component/Pimple/PimpleTest.php delete mode 100644 tests/src/Component/Ssh/IOArgumentsTest.php delete mode 100644 tests/src/Configuration/ConfigurationTest.php delete mode 100644 tests/src/DeployerTest.php delete mode 100644 tests/src/FunctionsTest.php delete mode 100644 tests/src/Host/ConfigurationTest.php delete mode 100644 tests/src/Host/HostTest.php delete mode 100644 tests/src/Host/RangeTest.php delete mode 100644 tests/src/Importer/ImporterTest.php delete mode 100644 tests/src/Selector/SelectorTest.php delete mode 100644 tests/src/Support/HelpersTest.php delete mode 100644 tests/src/Support/ObjectProxyTest.php delete mode 100644 tests/src/Task/ContextTest.php delete mode 100644 tests/src/Task/ScriptManagerTest.php delete mode 100644 tests/src/Task/TaskTest.php diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index bc2800951..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: antonmedv diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 534a8a3bd..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve. -title: '' -labels: '' -assignees: '' ---- -- Deployer version: -- Deployment OS: - - Please, provide a minimal reproducible example of deploy.php diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index e4626d2ba..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask question - url: https://github.com/deployphp/deployer/discussions/category_choices - about: Please ask questions in discussions. - - name: 💰 Paid Support - url: https://github.com/deployphp/deployer/discussions/3031 - about: We can offer a paid support for Deployer. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 3e9561cf8..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project. -title: '' -labels: '' -assignees: '' ---- diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 3f7bff1e8..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -- [ ] Bug fix #…? -- [ ] New feature? -- [ ] BC breaks? -- [ ] Tests added? -- [ ] Docs added? - - Please, regenerate docs by running next command: - $ php bin/docgen diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index cfe5abb2e..000000000 --- a/.github/workflows/check.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: check - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - phpstan: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer phpstan - - phpcs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer phpcs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 345157e8a..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: doc - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - docgen: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run docgen - run: php bin/docgen - - - name: Check for uncommitted changes - run: | - status=$(git status --porcelain docs/); - [ -z "$status" ] || { - echo "Please, run bin/docgen and commit next files:"; - echo $status; - exit 1; - } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 7b62b4d6e..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: release - -on: - release: - types: - - created - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Get version - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV - - - name: Build phar - run: php -d phar.readonly=0 bin/build -v"$RELEASE_VERSION" - - - name: Verify version - run: php deployer.phar -V - - - name: Upload phar - run: gh release upload v"$RELEASE_VERSION" deployer.phar - env: - GITHUB_TOKEN: ${{ secrets.MY_TOKEN }} - - - name: Calculate sha1 - run: echo "SHA1=$(sha1sum deployer.phar | awk '{print $1;}')" >> $GITHUB_ENV - - - name: Update manifest - uses: deployphp/action@v1 - with: - private-key: ${{ secrets.PRIVATE_KEY }} - deployer-binary: bin/dep - dep: -f deploy.yaml release -o sha1=${{ env.SHA1 }} -o version=${{ env.RELEASE_VERSION }} - - - name: Add deployer.phar - shell: bash - run: | - set -x - git checkout -b dist - mv deployer.phar dep - chmod +x dep - git add -f dep - - - name: Remove obsolete files & dirs - shell: bash - run: | - set -x - git rm -r .github/ bin/ docs/ tests/ *.lock *.yaml *.xml *.neon - - - name: Update composer.json - shell: bash - run: | - set -x - cat composer.json | jq 'del(.autoload) | del(.scripts) | del(.require) | del(."require-dev") | setpath(["bin"]; "dep")' > composer-new.json - mv composer-new.json composer.json - git add composer.json - - - name: Push release tag - shell: bash - run: | - set -x - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions" - git commit -m "Deployer $RELEASE_VERSION" - git tag "v$RELEASE_VERSION" --force - git push origin "v$RELEASE_VERSION" --force diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml deleted file mode 100644 index f64a220e3..000000000 --- a/.github/workflows/sync.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: sync - -on: - push: - branches: [ master ] - -jobs: - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run docgen - run: php bin/docgen - - - name: Add & Commit - uses: EndBug/add-and-commit@v9 - with: - add: 'docs' - message: '[automatic] Update docs with bin/docgen' - - - name: Deploy docs - run: gh --repo "$REPO" workflow run deploy-docs - env: - GITHUB_TOKEN: ${{ secrets.MY_TOKEN }} - REPO: ${{ secrets.DOCS_REPO }} - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 76813e1a3..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: test - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - unit: - runs-on: ubuntu-latest - strategy: - matrix: - php-versions: [ '7.3', '7.4', '8.0', '8.1', '8.2' ] - steps: - - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-versions }} - extensions: mbstring, intl - coverage: xdebug - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer test - - e2e: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: jpribyl/action-docker-layer-caching@v0.1.1 - continue-on-error: true - - - name: Build the docker-compose stack - run: cd tests/docker && docker-compose build - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run E2E test suite - run: cd tests/docker && docker-compose up --abort-on-container-exit diff --git a/bin/build b/bin/build deleted file mode 100755 index 1f34e3c81..000000000 --- a/bin/build +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -if (ini_get('phar.readonly') === '1') { - throw new \Exception('Writing to phar files is disabled. Change your `php.ini` or append `-d phar.readonly=false` to the shebang, if supported by your `env` executable.'); -} - -define('__ROOT__', realpath(__DIR__ . '/..')); -chdir(__ROOT__); - -$opt = getopt('v:', ['nozip']); - -$version = $opt['v'] ?? null; -if (empty($version)) { - echo "Please, specify version as \"-v7.0.0-beta.42\".\n"; - exit(1); -} -if (!preg_match('/^\d+\.\d+\.\d+(\-\w+(\.\d+)?)?$/', $version)) { - echo "Version must be \"7.0.0-beta.42\". Got \"$version\".\n"; - exit(1); -} - -`composer install --no-dev --prefer-dist --optimize-autoloader`; - -$pharName = "deployer.phar"; -$pharFile = __ROOT__ . '/' . $pharName; -if (file_exists($pharFile)) { - unlink($pharFile); -} - -$ignore = [ - '.anton', - '.git', - 'Tests', - 'tests', - 'deploy.php', -]; - -$phar = new \Phar($pharFile, 0, $pharName); -$phar->setSignatureAlgorithm(\Phar::SHA1); -$phar->startBuffering(); -$iterator = new RecursiveDirectoryIterator(__ROOT__, FilesystemIterator::SKIP_DOTS); -$iterator = new RecursiveCallbackFilterIterator($iterator, function (SplFileInfo $fileInfo) use ($ignore) { - return !in_array($fileInfo->getBasename(), $ignore, true); -}); -$iterator = new RecursiveIteratorIterator($iterator); -$iterator = new CallbackFilterIterator($iterator, function (SplFileInfo $fileInfo) { - return in_array($fileInfo->getExtension(), ['php', 'exe'], true); -}); - -foreach ($iterator as $fileInfo) { - $file = str_replace(__ROOT__, '', $fileInfo->getRealPath()); - echo "Add file: " . $file . "\n"; - $phar->addFile($fileInfo->getRealPath(), $file); - - if (!array_key_exists('nozip', $opt)) { - $phar[$file]->compress(Phar::GZ); - - if (!$phar[$file]->isCompressed()) { - echo "Could not compress File: $file\n"; - } - } -} - -// Add schema.json -echo "Add file: /src/schema.json\n"; -$phar->addFile(realpath(__DIR__ . '/../src/schema.json'), '/src/schema.json'); - -// Add bin/dep file -echo "Add file: /bin/dep\n"; -$depContent = file_get_contents(__ROOT__ . '/bin/dep'); -$depContent = str_replace("#!/usr/bin/env php\n", '', $depContent); -$depContent = str_replace('__FILE__', 'str_replace("phar://", "", Phar::running())', $depContent); -$depContent = preg_replace("/run\('.+?'/", "run('$version'", $depContent); -$phar->addFromString('bin/dep', $depContent); -$phar->setStub(<<stopBuffering(); -unset($phar); - -echo "$pharName was created successfully.\n"; diff --git a/bin/dep b/bin/dep deleted file mode 100755 index 2bfa43b83..000000000 --- a/bin/dep +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -// Detect deploy.php location -$deployFile = null; -foreach ($argv as $i => $arg) { - if (preg_match('/^(-f|--file)$/', $arg, $match) && $i + 1 < count($argv)) { - $deployFile = $argv[$i + 1]; - break; - } - if (preg_match('/^--file=(?.+)$/', $arg, $match)) { - $deployFile = $match['file']; - break; - } - if (preg_match('/^-f=?(?.+)$/', $arg, $match)) { - $deployFile = $match['file']; - break; - } -} -if (!empty($deployFile)) { - $deployFile = realpath($deployFile); -} -$lookUp = function (string $name): ?string { - $dir = getcwd(); - for ($i = 0; $i < 10; $i++) { - $path = "$dir/$name"; - if (is_readable($path)) { - return $path; - } - $dir = dirname($dir); - } - return ''; -}; -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.php'); -} -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.yaml'); -} -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.yml'); -} - -// Detect autoload location -$autoload = [ - __DIR__ . '/../vendor/autoload.php', // The dep located at "deployer.phar/bin" or in development. - __DIR__ . '/../../../autoload.php', // The dep located at "vendor/deployer/deployer/bin". - __DIR__ . '/../autoload.php', // The dep located at "vendor/bin". -]; -$includes = [ - __DIR__ . '/..', - __DIR__ . '/../../../deployer/deployer', - __DIR__ . '/../deployer/deployer', -]; -$includePath = false; -for ($i = 0; $i < count($autoload); $i++) { - if (file_exists($autoload[$i]) && is_dir($includes[$i])) { - require $autoload[$i]; - $includePath = $includes[$i]; - break; - } -} -if (empty($includePath)) { - fwrite(STDERR, "Error: The `autoload.php` file not found in:\n"); - for ($i = 0; $i < count($autoload); $i++) { - $a = file_exists($autoload[$i]) ? 'true' : 'false'; - $b = is_dir($includes[$i]) ? 'true' : 'false'; - fwrite(STDERR, " - file_exists($autoload[$i]) = $a\n"); - fwrite(STDERR, " is_dir($includes[$i]) = $b\n"); - } - exit(1); -} - -// Errors to exception -set_error_handler(function ($severity, $message, $filename, $lineno) { - if (error_reporting() == 0) { - return; - } - if (error_reporting() & $severity) { - throw new ErrorException($message, 0, $severity, $filename, $lineno); - } -}); - -// Enable recipe loading -set_include_path($includePath . PATH_SEPARATOR . get_include_path()); - -// Deployer constants -define('DEPLOYER', true); -define('DEPLOYER_BIN', __FILE__); -define('DEPLOYER_DEPLOY_FILE', $deployFile); - -Deployer\Deployer::run('master', $deployFile); diff --git a/bin/docgen b/bin/docgen deleted file mode 100755 index 645358e04..000000000 --- a/bin/docgen +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Deployer\Documentation\ApiGen; -use Deployer\Documentation\DocGen; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Output\ConsoleOutput; - -require __DIR__ . '/../vendor/autoload.php'; - -chdir(realpath(__DIR__ . '/..')); - -$input = new ArgvInput(); -$output = new ConsoleOutput(); -$app = new Application('DocGen', '1.0.0'); -$app->setDefaultCommand('all'); - -$api = function () use ($output) { - $parser = new ApiGen(); - $parser->parse(file_get_contents(__DIR__ . '/../src/functions.php')); - $md = $parser->markdown(); - file_put_contents(__DIR__ . '/../docs/api.md', $md); - $output->writeln('API Reference documentation updated.'); -}; - -$recipes = function () use ($input, $output) { - $docgen = new DocGen(__DIR__ . '/..'); - $docgen->parse(__DIR__ . '/../recipe'); - $docgen->parse(__DIR__ . '/../contrib'); - - if ($input->getOption('json')) { - echo json_encode($docgen->recipes, JSON_PRETTY_PRINT); - return; - } - - $docgen->gen(__DIR__ . '/../docs'); - $output->writeln('Recipes documentation updated.'); -}; - -$app->register('api')->setCode($api); -$app->register('recipes')->setCode($recipes)->addOption('json'); -$app->register('all')->setCode(function () use ($recipes, $api) { - $api(); - $recipes(); - echo `git status`; -})->addOption('json'); - -$app->run($input, $output); diff --git a/composer.json b/composer.json index 7adf3f22b..5bd9de8e0 100644 --- a/composer.json +++ b/composer.json @@ -1,70 +1,32 @@ { - "name": "deployer/deployer", - "description": "Deployment Tool", - "license": "MIT", - "homepage": "https://deployer.org", - "support": { - "docs": "https://deployer.org/docs", - "source": "https://github.com/deployphp/deployer", - "issues": "https://github.com/deployphp/deployer/issues" - }, - "authors": [ - { - "name": "Anton Medvedev", - "email": "anton@medv.io" - } - ], - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/antonmedv" - } - ], - "autoload": { - "psr-4": { - "Deployer\\": "src/" - }, - "files": [ - "src/Support/helpers.php", - "src/functions.php" - ] - }, - "scripts": { - "test": "pest", - "test:e2e": "pest --config tests/e2e/phpunit-e2e.xml", - "phpcs": "phpcs", - "fix": "phpcbf", - "phpstan": "phpstan analyse -c phpstan.neon", - "phpstan:baseline": "@phpstan --generate-baseline tests/phpstan-baseline.neon" - }, - "bin": [ - "bin/dep" - ], - "require": { - "php": "^8.0|^7.3", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2", - "psr/http-message": "^1", - "react/http": "^1.5", - "symfony/console": "^5.4.9", - "symfony/polyfill-php80": "^1.22", - "symfony/process": "^5", - "symfony/yaml": "^5" - }, - "require-dev": { - "pestphp/pest": "^1.0", - "phpstan/phpstan": "^1.4", - "phpunit/php-code-coverage": "^9.2", - "phpunit/phpunit": "^9.3", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "config": { - "sort-packages": true, - "process-timeout": 0, - "allow-plugins": { - "pestphp/pest-plugin": true, - "dealerdirect/phpcodesniffer-composer-installer": true - } + "name": "deployer/deployer", + "description": "Deployment Tool", + "license": "MIT", + "homepage": "https://deployer.org", + "support": { + "docs": "https://deployer.org/docs", + "source": "https://github.com/deployphp/deployer", + "issues": "https://github.com/deployphp/deployer/issues" + }, + "authors": [ + { + "name": "Anton Medvedev", + "email": "anton@medv.io" } + ], + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/antonmedv" + } + ], + "bin": "dep", + "config": { + "sort-packages": true, + "process-timeout": 0, + "allow-plugins": { + "pestphp/pest-plugin": true, + "dealerdirect/phpcodesniffer-composer-installer": true + } + } } diff --git a/composer.lock b/composer.lock deleted file mode 100644 index db6d70ce2..000000000 --- a/composer.lock +++ /dev/null @@ -1,4819 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "443f126c4b688aa349d3607009d03a20", - "packages": [ - { - "name": "evenement/evenement", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Evenement": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Événement is a very simple event dispatching library for PHP", - "keywords": [ - "event-dispatcher", - "event-emitter" - ], - "support": { - "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/master" - }, - "time": "2017-07-23T21:35:13+00:00" - }, - { - "name": "fig/http-message-util", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "suggest": { - "psr/http-message": "The package containing the PSR-7 interfaces" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" - }, - "time": "2020-11-24T22:02:12+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.11", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" - }, - "time": "2021-07-22T09:24:00+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "react/cache", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/4bf736a2cccec7298bdf745db77585966fc2ca7e", - "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/promise": "^3.0 || ^2.0 || ^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": [ - "cache", - "caching", - "promise", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/cache/issues", - "source": "https://github.com/reactphp/cache/tree/v1.1.1" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-02-02T06:47:52+00:00" - }, - { - "name": "react/dns", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb", - "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7 || ^1.2.1", - "react/promise-timer": "^1.8" - }, - "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^9.3 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Dns\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async DNS resolver for ReactPHP", - "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.9.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-12-20T08:46:54+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:31:24+00:00" - }, - { - "name": "react/http", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/http.git", - "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/http/zipball/59961cc4a5b14481728f07c591546be18fa3a5c7", - "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "fig/http-message-util": "^1.1", - "php": ">=5.3.0", - "psr/http-message": "^1.0", - "react/event-loop": "^1.2", - "react/promise": "^2.3 || ^1.2.1", - "react/promise-stream": "^1.1", - "react/socket": "^1.9", - "react/stream": "^1.2", - "ringcentral/psr7": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.5", - "clue/http-proxy-react": "^1.7", - "clue/reactphp-ssh-proxy": "^1.3", - "clue/socks-react": "^1.3", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Http\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven, streaming HTTP client and server implementation for ReactPHP", - "keywords": [ - "async", - "client", - "event-driven", - "http", - "http client", - "http server", - "https", - "psr-7", - "reactphp", - "server", - "streaming" - ], - "support": { - "issues": "https://github.com/reactphp/http/issues", - "source": "https://github.com/reactphp/http/tree/v1.6.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-02-03T13:17:37+00:00" - }, - { - "name": "react/promise", - "version": "v2.9.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.9.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-02-11T10:27:51+00:00" - }, - { - "name": "react/promise-stream", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-stream.git", - "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-stream/zipball/3ebd94fe0d8edbf44937948af28d02d5437e9949", - "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/promise": "^2.1 || ^1.2", - "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6" - }, - "require-dev": { - "clue/block-react": "^1.0", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", - "react/promise-timer": "^1.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\Stream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "The missing link between Promise-land and Stream-land for ReactPHP", - "homepage": "https://github.com/reactphp/promise-stream", - "keywords": [ - "Buffer", - "async", - "promise", - "reactphp", - "stream", - "unwrap" - ], - "support": { - "issues": "https://github.com/reactphp/promise-stream/issues", - "source": "https://github.com/reactphp/promise-stream/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-10-18T10:47:09+00:00" - }, - { - "name": "react/promise-timer", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-timer.git", - "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/0bbbcc79589e5bfdddba68a287f1cb805581a479", - "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\Timer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", - "homepage": "https://github.com/reactphp/promise-timer", - "keywords": [ - "async", - "event-loop", - "promise", - "reactphp", - "timeout", - "timer" - ], - "support": { - "issues": "https://github.com/reactphp/promise-timer/issues", - "source": "https://github.com/reactphp/promise-timer/tree/v1.8.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-12-06T11:08:48+00:00" - }, - { - "name": "react/socket", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/f474156aaab4f09041144fa8b57c7d70aed32a1c", - "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.8", - "react/event-loop": "^1.2", - "react/promise": "^2.6.0 || ^1.2.1", - "react/promise-timer": "^1.8", - "react/stream": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.5", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/promise-stream": "^1.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Socket\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" - ], - "support": { - "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.11.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-01-14T10:14:32+00:00" - }, - { - "name": "react/stream", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/7a423506ee1903e89f1e08ec5f0ed430ff784ae9", - "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.2" - }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Stream\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", - "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" - ], - "support": { - "issues": "https://github.com/reactphp/stream/issues", - "source": "https://github.com/reactphp/stream/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:37:55+00:00" - }, - { - "name": "ringcentral/psr7", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/ringcentral/psr7.git", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "RingCentral\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "PSR-7 message implementation", - "keywords": [ - "http", - "message", - "stream", - "uri" - ], - "support": { - "source": "https://github.com/ringcentral/psr7/tree/master" - }, - "time": "2018-05-29T20:21:04+00:00" - }, - { - "name": "symfony/console", - "version": "v5.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-12-28T14:15:31+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-07-12T14:48:14+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-05T21:20:04+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-03-04T08:16:47+00:00" - }, - { - "name": "symfony/process", - "version": "v5.4.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "95440409896f90a5f85db07a32b517ecec17fa4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c", - "reference": "95440409896f90a5f85db07a32b517ecec17fa4c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.4.5" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-30T18:16:22+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-04T16:48:04+00:00" - }, - { - "name": "symfony/string", - "version": "v5.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "conflict": { - "symfony/translation-contracts": ">=3.0" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.4.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:53:40+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" - }, - "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T16:32:32+00:00" - } - ], - "packages-dev": [ - { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], - "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" - }, - "time": "2022-02-04T12:51:07+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-03-03T08:28:38+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2022-03-03T13:19:32+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v5.11.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" - }, - "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-01-10T16:22:52+00:00" - }, - { - "name": "pestphp/pest", - "version": "v1.21.2", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "63f009fadf9b37f611fda43928d03336475d5d9f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/63f009fadf9b37f611fda43928d03336475d5d9f", - "reference": "63f009fadf9b37f611fda43928d03336475d5d9f", - "shasum": "" - }, - "require": { - "nunomaduro/collision": "^5.10.0|^6.0", - "pestphp/pest-plugin": "^1.0.0", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^9.5.5" - }, - "require-dev": { - "illuminate/console": "^8.47.0", - "illuminate/support": "^8.47.0", - "laravel/dusk": "^6.15.0", - "pestphp/pest-dev-tools": "dev-master", - "pestphp/pest-plugin-parallel": "^1.0" - }, - "bin": [ - "bin/pest" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "pest": { - "plugins": [ - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Environment" - ] - }, - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], - "psr-4": { - "Pest\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "An elegant PHP Testing Framework.", - "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" - ], - "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v1.21.2" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/lukeraymonddowning", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/octoper", - "type": "github" - }, - { - "url": "https://github.com/olivernybroe", - "type": "github" - }, - { - "url": "https://github.com/owenvoke", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-03-05T19:34:40+00:00" - }, - { - "name": "pestphp/pest-plugin", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/fc8519de148699fe612d9c669be60554cd2db4fa", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "pestphp/pest": "<1.0" - }, - "require-dev": { - "composer/composer": "^1.10.19", - "pestphp/pest": "^1.0", - "pestphp/pest-dev-tools": "dev-master" - }, - "type": "composer-plugin", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "class": "Pest\\Plugin\\Manager" - }, - "autoload": { - "psr-4": { - "Pest\\Plugin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Pest plugin manager", - "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v1.0.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2021-01-03T15:53:42+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.16.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" - }, - "time": "2022-11-29T15:06:56+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d", - "reference": "4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.2" - }, - "time": "2022-03-30T13:33:37+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.4.10", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "898c479c39caa727bedf4311dd294a8f4e250e72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/898c479c39caa727bedf4311dd294a8f4e250e72", - "reference": "898c479c39caa727bedf4311dd294a8f4e250e72", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.10" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2022-03-14T10:25:45+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.15", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-07T09:28:20+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.20", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-04-01T12:37:26+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-02-14T08:28:10+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-15T09:54:48+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "slevomat/coding-standard", - "version": "7.1", - "source": { - "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.4.1", - "squizlabs/php_codesniffer": "^3.6.2" - }, - "require-dev": { - "phing/phing": "2.17.2", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.5.2", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.0", - "phpstan/phpstan-strict-rules": "1.1.0", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.19" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", - "support": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.1" - }, - "funding": [ - { - "url": "https://github.com/kukulich", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", - "type": "tidelift" - } - ], - "time": "2022-03-29T12:44:16+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.0|^7.3", - "ext-json": "*" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/dep b/dep new file mode 100755 index 0000000000000000000000000000000000000000..196be7aa0bc4978bb17c82a8f2cb8cd02b720189 GIT binary patch literal 781148 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≧JU;7Y?gj$5oy&? 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 YRw4X?45{+Yk^B9B7qw*H-Kt4F1so$1H}b= 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%0APBZg5tYqI5A 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⁢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¨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�=k({gTY#Wz71FTsh{3>=g+5uX8|R_<$li z+-sRY=tf(-40hP5$wSebw1^bEF)SJ=r5(2dkk0Q5VQu|#pDw?Dwv1Vf&Y3(SEq)+p ze{6C*xNA2>rlkyByu8)cv|D;^glAZ^2 z@afZ@9rwfgY|MpmTR&F`%3o{=(h?~g$J9Jzypg&YQtNTu0(>gGatejIAf=4InIY$C zA+2kT-ERMye~4G%yPSEN`+(u}5e0vyqgRn_w1BFHd|{ad5UgRvjoXc+cC z6UE2I{i$?L7OS1e-yOCD@xRU8-$Kf`xB#5|5meqz{&DvAd{%|?f&eXOa>d*56G;c% zMYsOrkca01$=@6be%9|xs`Jd(oO z*8AL(sDXQeN+wT`#3A4Lplc1b$5goWIf_68?&hbOe5==^3UZBc2-BA+(1dnq?CjMI zYFaUH%1kwU-<4y?@VW>i2k%#xiZ3MiYQRs-Xy^;o;T90n#bE{Y!?mEK{+ovu682cT zW2Jz@?5U0~6!ZQm))M7Jw}x&C@;kNQ$Vw>w_8t+2HZA~q{^yHcPs3LLYrrTkW%(

H`-RX05h2xi>F8_A?zzX$dIr1pZ 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 z zj9>*U5Lv-}27&^m@wnGZ>6!^JVr$XjZMM#{l%*1$QjsNWaiQc(#!q{_LUipsfACq3 znl9d@cQlEEH+)sBVaImi6g^v-uDKFFp#r=NuJAPaDZRU;y37)E=LM&!5D=G1Xr4w~t<=fJJ*~|LrNK_e zcnz*cO9c5Zr+H3q6V}-CE`>iKxU%=PN8pq5_>M|O1_ARk4o|^p{k@Qzgb6Yw^QCR& zN&>dPUuvbe1v~&uQXjoYZf^VpT<>~nRm;QA0K6B!A7BEO<%~?CHw99amijh>=y#F(uH|1YiO%Z95TO zf+aa;s~gVp1Y+tsV|V^(0iWf!Po6uU%$DBR84_o3j4ua&hiA>qL<~Qrax4i?PPE`_ z4qyYx|AYt#Kw9LMRNelOhK}?X{U=-!BMwuVJl`8_rE2ausk(RPrZ^ry7(NFRYQBtX7<{w3`PM0L<^5Y&I-Ovioj6|0|e4 z2X`{M1<-y*)BFw9dRek@B@dUO*6;Qu;!+2-eOPX`g4tFm_NlAZ-MuO5D`cFA@mL0# z|JVsRQ1JH>8codoAg+E^m00XFX^P$+^tuMW#C{#1GQH|Jb)Nh(iXDYs%z>ZG0GW*I z*n3!rHQ~=|9Z}KNdXLXyXso3BlybiSN-LWyn@VAYdSR5=TA_C~kC2RbcCSvrzRuMZ z(4M6-be%ubfQ4}im{b;?kpAC9e}tt+v+k}Q-LCn0&*(bio|TS){$9X@(hYJ=^d=3k zxphmLAvyX5p{nz4>NSLNCCT7E4rFADUy75_bUNJ`(ukZf#BuC-E(=3|BpipMO3pSV zd0L|yWI0Q(>FScL*aNQ3>EV~9dv>DxKIr%kUXgDEpGV$7l@MB9!CI8_Pl}|rvEUpq z^&Y_Uo~0`o%W8V5h7)|{M>jM{-2QJ9*R5&gf&8&sm*<^%v)|$e>}9qt9VjMD49Vi- z<@vvEK3rT}onPO)ee?19&&%@)KzGH)P|S~(s^G+`+NhVUYLjQ!3h2f8@zUO$ndPHp zrL>hXJt8lrn$63Xs=*_b_|DbBAvs<)1>*;L7MTC4lSL!o_!*B04FWYFD{YFL$V~lA z@u#G#y2=I)&>x!P00UmKd8>nE(oAs+z^$AN1FRu2>YCr)uw*whpdMPn-fT~|AXUs> zwYub{b%+T(L}1BT%ex9Oh{Ca>{ER&2c5e=V!8TS9{Nv?(5HD5GYVIWry1{4A|D&WQ zXJ@suWeJi_&PrE6!3$(%QxUA4jAs_fjsE3umS?%^*%Ys*5k*3_q4wbbNTz~(!L#+1 z%1*A*#_F+WV8u)>KaPW)y2>y1h_&r5aEfg9dQZg7>ODIXds_YLN9Nf_q%}uFwFG`8 z?HngKOjDRa)Sx(V)X$0jHPgRl&i;O*ygu05^**ZyG5v98foaz6eZgxSE}E|l3}@95T5JXPhi)=V`= z--svV!4kIOS&;^ATLct{z1hgQ z{V_p!kM!3BMVy6>Y4^Hh6+CHO(0#?uOyA5s>YF)dxa(3HG8-EI8|1pkb-!wvngYZ# zv}*zwa63fcf;v`rU_R8$ZAzLYFt-Mx{S-S`mZS(v{cKaW;ffD>+9?Uz{2whIvaq!t zwK~0JJnEcT-$0GQBx#C;NslHg;vEKdd8+n8#MXt70bTBh}#j&_tvACOt28CfwQ;2RXA9eW+l@X4f+%-1MB}q3YcdbG6Cq;y;^UcA8vew9M#Lxi`ye}c-;Q4fYAww zM*9IbNI)v4K=zO)S%BC5RSPW@SrcI5!>5+mwlS|N|C>-Gb!aF&YBWuzHaOX;)Dz>r zHqv6Q5@tEXO(8aO_26zZdgn+S(smQjlL^7%j;*)#L~%opYl zt!|5AHYs2NpS1~~OpUF3a4Bg>&NmA)?#na!Y4;)r9lsK zl};9+@0m*1ycz1(&Zlvzt80+1J$X}U0%1$2jYJz5*ed56LB`p8XloRFb})EMeeXBR z)rajWj!G;^3xcBvP?|vA>^s5|j)pYfu!7(^FOh-D#CTQ|Rx}t`#97g9>6+GAw8Xz` za5e7M37^ovj<#gp{SnjSPZb9+O`e=uz;)DilwDbfjx^ss@hu5U#==uq`jZIS9bk?J z^wV!hi>eW(&i2fTm(d^7xHIS`UliX9;3tua&jhweAvsf`bY4XHsutCBxSyr(w%fD2 zY`T@vRtQLMbNP7hTn(dh`yGqE!1$t(5&FgTLfK;8U+w|6G;k=vP4@%^#+oPlP&r0JCc$t$&%}K1LhBoEb`u-yL*nzucO$DTdm$<3l8DVqa2ph zCxCxrn+b@PAUp!&$6y(SkND2{YOhEaH_QE|W5GLnK}iUoB0)lj5(d96)tfh5%XFP6 zc%ANl7cr%7nfN|9QT)j0$`fFRF8I_TAxFdEGGc)(XcTrJ_KA(}?kQO-xer$tm)GM< zsY-b%JX^rp=HOB;7+oZSxUiKz`c zzZlJLL~s?MNR5J0-%Z!EZEqM62@4SX4)`|-# zf4I87+=a0g*aPHre~yS zm{uPaQRG(;%|kobgeDuQ0kOi4+Ms$p;9qGBjz^rYQaO1b1*fRu6X}jy^59^aZJCn? zBphxUQqZs(+)xRwbwG-lhV&24UcWpwI?#?15hns4P_>YZWeu9LpyY;dq7t3&FXf}c zI-AfcIj_Olm`)9)dHVM1_VVKH=Jt>I`0~^F?KwVHBb5R%Bda+ww&R&b?@x2;9$63S z+r&DVnuQlr%Nn(N7_BPitU1oF$5$6O*9ap9^cqD}-yj@<1Pc5m-1(a11uxy+f#>1@y>k+(YKoCq@)c{Q_ORMqop2L0;0 zvx@F#AXqi3+_VX7k>ADX$;mj0Kz{{7AFIBpy0k$agA0gqg98`rD(9duLD=Ll`HutPLbAoU|!xi8p*A{6Ab}oK;qO~5A zQ1uwjXEk_nHj+KIVxaGpA7 z=zeNkH`m;yn1l!p7 zJ|55eMH&EakYlkPd@oT~$#h5WG;#Ze7fQhobf{hFWA>c-`5#3;01uRQSZ4_QAK`zy z^Ak*sys_c^kYj-d$cupUTNVrz2Cik}sG~@L5w7aq#_J=|Tp(gpGnW&l@fOjTzP3xa!)Pob#$&v{3}I4|KZW6Im>4mQi5^(9 zPHFvY$NH>Lw(VGliUx9T%`Dzd)eU?hHS&&fJo}y)S@P#9>)epW1xv`Raw|TVQa;Cx z>R&fzX8ZfW$@)`Z!h$&#&K%Djc;P_MwS!pH1=CB%M}pa7>8!Y<@W_@^Pq(ja%9pIT zo?HI_y;^H?;<_3B&aY4ydTeijwEfTz4v;0p>7kQ_93XoplVm)`mO)*xsbrIIn*8^^ zl58Vf%kx z4;S7jjBdg>@Uj=DQ^>xZe7cai{QEO|#wP(xL{tzAc#bgb3D^}ZC37%Kuwb;I;g)zL zSO~-2I;$8n6oulBEwQlwRNARKeRbk!344DJ!H_BPF#2Z*1UfI`{;T}>S36ksgf;sl zaDdFpVGJdz!-@P6eg${*#B+XM`%ewQ1)w7AawlOCxR{F?9`>Dh6^+0zP#0-$c7h6P z7sq#8W9CvKM8`J@i3m6e0AN*$pvW#_dsByFl5@z`i7;xoIU8j81%zGWdAxu_eP_jR z@>*ztUm!&YT+SLflsdZ(4-3JfDW%kscb!T*@AXOmpgsgACPJa(d4#`l4%i9hx~7ag zl3N~V5Cot!8F=QU_9)D8+Z_f`D&jmVv2Pm zJEFnEYO7a;%#4=2_&te9oq8|^k2>2Wx>j$ZIuH;#vqA4nuM(GGw6(gS8P$*oN5LVH+1ugN?oTHD2iV^aBp`0R zf+#rV4@k5~$L&QM4aVQ@?BBnVb` z5TW>e6XjwHYREW|ciY5Bl(0rtu*KdwR9`?K4z{{BefV}W9zEDxF1OZfI3C&8*46z# zG^2^0ZicrrYhnY#!|VRcvaiPDTdP0%&};B3b|ImB7QP9rM>!rMx>N3wUJ@Xx8iL|t-?^o5+?BCYP0Z<&pG(dm- z+usX(ydSP_NcETNRK)9?D7ZS$P%gPhI*?dHrG)o ziy9@Dw)2POz{<1pVV;ApNC1x#=rg*!lvT`UA!k-L&3j3~xOg$TgGNX?l!=6`>Dhbv zKpL4?(L_I$(Tw9FQlul|jUpTf1fp(LU+YrsIhqZna0CKeG^PEMp0_^5Lmmrq*0g5v zStp5IJ+18lJY9Qety>=Y)g&g?nqt_Y;J{|2b#HlX7%gJsy)1JMYs)%q{D?=qztS3e}lp zGFLJ23({LEE`gl4d%A(ny4{jP;QijK1bMxb;@J}kY!Mp@9G4Sm9)jqvh{G`B&!Nu8 zhiCl1wF(&sziv1&1|4_=g^_6CpiZv4j=RLrsdQ%jt6tsUrHW|d36*m!(dzA&VTaa> z@=`6J)k|)q?qru|%d#)IS!24u`eTXGo~xu-jKIRO0DC}$zsls8?H9)=61v8|sB5`F zUz}i%bCP&(21lh(CTDKwxma(Svxhs&9^Z+&cGUl7W&VA{re@H8>4kEv+*Ag8!$^|5 z)UBV4Bb8wP1c%tdPBOkg;ZPa{E{3k**7;+Xj#w@a6_Exr1DX5SBoak+Rdm!kWVyqt z<*O7$OwVios0HLiRLqI#btt^OSN+c=COx&7d&+?+a85ECc?ehk={u$SRb_sDJ(s9} zUs>A9;_cR1p;JR|m5Jwc$OR(1b2-W}3#`FoiM|5ndxdRgD*L$vCrKYU=={qU^cA{Y zrIsu7o`u>v8J?*i^TjtW4-3zam4-=OqZE>6iMT}HD8q=DdmXrL=8y-~=*P*d)lvpY z{4TA!*Um=II(9f0NTpp=BUIAD1$yUIlY~`~3S`GCC($Lqg}r?ew~AV{se=0HndpF6 zX0VXj)k^;bQ=ATyy%LR7w;E%$-_=!)%Sz051X<8sBK>K`TQ7%?@*9QL?07HH!IXxy zXYs#hopX6t5-;`@J^r9{miCq~l1z!pRU;e520kjC#CRB9`KEc(AKuTM7eeOsaP^<9Et&A=@=j#Mk*Ri8gX^&+Z#G_`LNdZ z$bvv)slF|U@su$^LZEC=AV&Qp${smlu!R?x9*htaDVOxch4RR!;d&;fwt9&esARQ`^Rzpo-1$ks0P?`oq|v z*_8-M$T#_YtTbca5V~*2@^$lJ%bL+DbKgWBeDx_FT&X5sC~<#OiJGc@rTtJ@dvH|> zQm2rt{O1_yr3Yj0ygcM_l^!F&OO?!_`{C8Ro*!I1{za|F_}N{ZMTM$8b)hQV-bvjGg~SQj3r@~<=%QZl zx8IDN1Sim!T~rm4cxIj%Kl6+;_>`?O%jz9j1O#Sb%GaKZQ`R9_LOr;*iRq)VyShA^Oy?7HrBKS1C&{BHNDvFj<7F;s zKptbcf+vuHNOSH}2oxy9J^~UJ1@zp07-Cch1hmo z!x%qih~r^#q0O8&cKGoyqTn{mQV#W*qZi@0?n&k4+0y?Tg*0+!VI1Y0I&K4e8#Suj z%2U!_%qKT@lbd_{`r;aXU!B_zyD)8EFD&+O38IBcc2Z%B$8B&d4j1JiPC)Qc>e>C zEo;YajSK*JBudhySHrEw0_MhnDmcKlFatE~zOG-RC|KZys*J|{FJKK)A}J+3D*Ybb zTHJa<3>PWfGO2jP;*K#{5 z(+!GXc{ppe=NFT!s}|(HfhQbJKw!G0NPqxUSk(yrSSm>rZz!`50MsMiu>-oyBY?*s z>jI>H)bHPouD(td)7f-_AiX$g&RJy(tdEQUCvQkF{Xu;gtxo-HQVpNRd4RN2bps|& z%w$uuUy|WUygeRm?1%f053Zr6=A43gQZK~*P||}(Li%G|ag|1n8MsqHG(zBqQ<-y6 zR+@zU{`~9N*m#YymUE>2DOoJWmp6+= z*Y0(@y&I~#QkdOncXjBKT4{d6wpq|0aKsi)!|kDwU7N<3#mkerQ6aSvx_DXvm`{P@ zhtHGE$SQhad|LieVJDoYTw9wJ(pBG!uPX40^W)(ok0ni*BQg#g3>|wwF~V?6%X6CA zzt#uQ>VP80{;F)gsyJl1t=_5jX0Nkbrk;tu^5u3xYM?PS!VZbS0N!jI8=|z-{d##_ zx0x)V35J$wS*jaH(YR`=>?w0~I?D#eU9o}}g3zmiR}>-z-Xep%Fz!@~Cg8C3Jaen1VeZTDcj zDo{=6bR1GI&C3#f;H99gWVMhau@$OTlCHBw5Oc=`brRtMgvf{hx`ZR;HC3vd?g^4i zbAM$nXucdMP?>&>1W1fNlH#QjxPr+eJB~x7Yvtsj9FOMzkEZ$-4v&XCXHHeis(v`v zJEXkAbCs)(Yfim(O>wQ$TH6`<)OS+75aZ_v-!L@IRKWX(;(qV&jvrF$KJhsBwuc#} z9xc{hW@Oq9n>$e~##103uwX@pe7hdqUR+MkXN$>Sx05NhpP5ico$#HvC)bhfR>?nG z{{!7TYi}DllHdI+n7~=dS;fj8u!nN#ZQV@% z`&JbnO|l=7o!lL8!eAnIlf`Tf1FnoEyUa}8MA=zA{oWZ~As3=)JXXTQ! zo9$|zXIpp{e~lLW7zX3`etg8dB(F6zGX5`IX+nd zMn4@KY-HECv-KK~CQN_YHMG>&-JVGczIzHjNjU;{zD~0BrhL-Oo6TauC4Q5;=8qp@ zzNYE++axP_F$cEoKX;PdMX5;6ip6FHBkYU)Azb7O5$`?kH=eF}q5rwzJGn%xRR1?P zK4QvSJ{OtT2QO#R-duF%T<%5u<)*|L>K|trFl(~AU(t%!0dx-}&qf~|fmtc$Vs@JPQv$Qn5#^CU_Z9%cf@`8Ut*FqGJiy|*%3j(NQ z!6UiN^0gF=RBj}Mw#GNh%B$4GUGQ>KWUj=0i7M^X;+$`?nCM<`^dUxz`bRWY*${pX zm2sWud7}~ityjm7n6v)v)o)kRPvh&G$>sYg==_@#_HVD@!~XOqkfsSa0HmKm{Jg#9 z^OV!-=LoE?);KzP^#+i!5lZ%Lh|;Sb9XW{MM^jua@%i|`j z-zv-x3&1Eq=&HzpzvWirG+;f)#Ck^#-DYjgpOX`S_v(%M>(p|~wNN%C9YTbURgOj`wo#gP?{v?S{@{*(aLkR@JzcKDJ!j<;78OOboyw({mwf}PwunP32<115F@4|? zE>IiS1=t_{&Bv}<;YsL;4)4T_c*W(svP0JRV1=>%OG8aFiy!PS_WkT+B}XsEuuNT z*W;t2pfwvnWoh#Gb{&*@l{fXB?_NUHZHWHBdLm{d?Y?Ojt}R`>@#OfcS4XZy8Hb#w z8J^8pGzDFH;3r((gm&&#DA{jLp47rH7b`cZYF55~=cTmj1C3(@qp_vj z9WBLOJ&rP1(!eV=85Tz%4)iWrVo=qXfGbN#duxu#FnN~e-Ha7-tcY#nY0am&Tr{p! z252?8JX_=0wZoj__m*YG4?M>7uWJ#{Bduua+m`0^Sxih~|*0b#)F9+?F=0@~OEfk^fs zNHUicWHy+n%^{n+86&Gu%OGs4s&`CYAq2#>7h?Y zzxQ{L0VTb8Wu&|&D{Jgl0gPdiBJ|pG2E+`wBTXlkqka`T^iwaNfNp}5P$&g?Ee_L( z2)B|qa4?ytc5taP5d@H9F0xLMOW@!%RL8*>7($~g?l??{q;gcS)&^`1bbBRK;ZX4Z z+K2*>jC9LT?lf%!`a7iA#A09waN@s>E6^lG^HMuTg3gv;!ZXg%`)%-b=CPN?SQa$! zwmZ4IM|+4^n$s?U=_i69OOF5M8K(*6jRB?vA@dcvoNNKM!+~L7;4?(Y5C)inhXK!$ zIrLbz6Dj$++2fiL)+-y3a(*5fr(}{{of? zC}>=Qn2hzA>7nmLF90!8RS!}}+gW$b-LpG(cQdOu$ z#H&&O&v?oD4YEG0mC#r&J?pIQnwkYF)*U(xM`dBvw_4>`nXr+akyTUk~D>pOhNf&Df_)R6;sf+sh&A4acZxz>p|rI(m0{tw0;u|1E=>kD(*$5x(w8Yyu4`} zPn=Qozj||Dh?1v}DEy3S0!r})JQJmM&l@p&PMIQPkr_73Mamc8hA`xt#7J(|>%1tH zH~(7{U)~)5JT$O-HLDqoK8>$`y}X%x_&at^>3{I&xS{()!fh&p-Ov8)Y+0c8)PJH7 zXqG*!iz{@9+#Rt8Qq^L6a!oavjBLS9Kk;IgOHpp?-Mt-ZK&@l22J|2nXLdC{ztG_u z>nBz0McIPeaU8uij&;ReYtB{QJo_`=M#xE(r8P7rja}<>t8Uc|@WDxb2phM?6Qc6w zkWXbSUx|_q7N~^BEssso>IYo`9vp*2P^G8^CndYjH)%pqjacL~*MQ)A4$zXU2h~ON z6#~^JNLyX})=+T5*MSQk5>@c5qU^~kU4>{F#G2zq9z(upHp9VfsResSwqZ<~q=#Z3 zqCT`H6+K!ujUKQnc<63(bDK&7sS>onMcaO6Qg6v(n{*>F*5e+FJF-hf8arzqC=JPE z3>`tlVEOD;$SLS&-vQKUfmP*p`(eB06!!WOd}~(D`@L(GX;E>4iTCptax}7u%X7P( zp*KHDfPiV)00%zTy$ne4f&1RJ)c`w7(}d49iz&|WvE0X4O$sQd83?)%u?K>kvOb`3 zSFfuY8e(oTz%4CP*gGre^1w;w zo3i~{uB`UhFx4jCPFw2i%szNh9$YUQ$e3D6gtmi3O zQMbAuRdX{98>R2`dJ0NlLH@Q}K|WB!#%jAcG-DD&+b>gyuSv>_ez=1Tg8cnkLmE?0 z;(am!dqbM8l?iF>p91qfE{J(paB}JO~k8ajSUs`2AQ%^n*2xD*LKd= zv9oy~|v=+VdPO#KY7w!^u;)}Tj=O^rVKPoQR zz28upQCUXuQnj=xK|Al>{tf1LiYTzZKra5~Z$RYfsaI}c6uRcsJ-=AFstE|KWXal+-a~|A1 z8?Gw){=6L=;X#|4ZATN^iY2wH;?ZM7NE4nMGn`oNonRc$R*>SRa<2ns-iPPE2Ngf| zJoo735Ph4p*(VwWT7KXySgqwMSW}nc-d(R6)WRwW`z<-ubW zCDhHNjph$Ippzls!j$kLBR=qWb`0olDpsOY{`C)iuEORoc3hjaRqQloM>yzIM_Juv zW_wxAjhNBs)7izx@${u~B2iXb#2Q<*h|#hpvomco!pqvAzu5cB_v1%f-em65gH|Wh zP~?`#u-yc1ZG=DsHkF-$R^lLbt-j#8n zCE}^6S*|me>KGzDAZ!&n?|HMz}%bX`Dhju zcCY4#H14Vc^X8zuHi%ut3E||bc#BS&eFE zuJZS6zqt21YLU4$2D`EQFsWS?-B$vxSw4Y8=aO7!|H8SY(kYDE?X(Vw&<&FxDGIzJ zU}b>NJFYaC+YH~q?#JN2AD@YU-S->zK~B4Th*V8zVoxTGVsn7-g~1-(>cZC9rMK+B?~g8CQmaMy{AUWVQG}FNM5;6;f`xAWd5j zbeprGUmnc$PA(kM!Q^G0CY_1xRhG5$k(=82AXgM?{q9*y+f5 z<~ftr9;WpY=JMh$Lvu^z&tIxbk6v@W8P*R^l(C@3r5=$eoBNCc&qC1#x4GCDDn4Z? z>cYEyi08v2Jg{lWhQ-zQmQu@4xYfvDCkPh;PM&B$UCsIGhAAGHA%0gkGf^AOfRO_G z9bR`|eb8_TmtC&LFn`C*EH!E$B<)WY?5DLVYol7$-2%o;Nr9s`cVKIDE@tkp(I-Ew z&j7=UV3f&`pI|-B1K;Qs`YwL@XB%p2`IT=`Rn(wU)}t>y5O@!(qF%7g`AmRkFU=;O zA>}hd`OuyqtyonZ?-!E2kktV--5_Y(MYMz|bdUCGT>Hy+H1wSFhV=6kj6Xzp z{0NWv^i++oE&!p2>W7c^E2;KsD}BTzZ5BibH0?D!Lw7FAs3_$Wk?5Exfd6i>#+8o>1^96 zX=;SFgr4AvTlE34W_fk37K2Z4f^28>()T$HwraP*2eRXaZfCQnX_KqEfBg78F1l`t z;wS{avuM+1m$@!k($yuR#9@sl>6pD03H9A@!;8~~7hdv!Cxx|0eT~u09CPKK^_@uX zjsLR}8);JP;PSdTymw0bZZRbcvI6N~YECJ8pq$&#<`kg)L5F>OnPob;L+@7)>ME>n zb8zW6wkGABRKLrSfup6L(x6@^?z&1MQUxhGM@GNip_-kv6Y+fXyk-qQrYos`5yim+tHUl|G9rV(%+6=9u6zkx2kX(3H1$IBE{_2YI<6P ztN#D(;Gd0D+fLg+5PkPo3{oU)1j&0sLJA@k5<*qOBNEzd#`X$(*WFzcqLzQ}%-Rld zp#eYGdzs6bIcI!+QRP(>jZPvsf%{xJNL7JA-%3~yCIz1(EVpH9^p?)#lgMyL#%v$U z1QueYP{R-7QA>pu&eL!*ca6_bnsV0KFN_W0(z+->nrdrRmU|F-4TX}Z9VOPOv8C|J z=u@Z)6m<5ia1;D)Z?3NIme(9Ap!B)$un`W{%6Y3+wZ}DVl+WpgDsZN@5-HI-ARa}L z79~0=Vpq|_l_@KuQF~fxXA0z#k`PUzsCI|!u3scpjPv2vWJ>O~lmGbL8u=7n3n9I+ z+fVIov`3o~*n^f!iiHo0g4SXA1>+@_qRMI2IuQGTo=f4B1daqL3SV1diWrkkLtMxD zT-2Vt;X9f%wYY^#8+gy!{cy$mc~%NlbnK5JZ-w%}D8#D3d)`IABcO+}!~9uT=oS4( zvq;F1O)9INg+~}LI0D?dg)bpuM+c%qI&9DTzG?D_EHb89xBNzr}T#K-pr zP;+yF);ka#6I)Y5SvyY?;=G{Nuu(f>qrjQ$xE>xSlU>f&s0TT8^=LYU0guSpj6J^& z@mr$~nk`XS6zeUap(!Q04(0r}G0H9Lsxp?QHGbEhfny`4g!1=2fH zhPKxMa*3OIcjFm1!II=`CaF}9d>1!*xfplO8Tvaqp)w|YW$Xn%n+f@=R)k|Gt@l;; zurNuJsApi2RG=F{eppRw;BDRBzrGujpBVn9E=Z@Hm6p)(o44V=PZIiMfNT>dPCgik z1G4J1WEW%dX&>H-ZQifZUwu-|P9rf4zRy$mz@b#Ay+Z|+5FjLk5ar0llkrTf%{Wn# zp;W7VAfAI4!^uDo95xq6j_vQq*<1x1nr6LhU<(k^<)At9 z2M1bdaj9RJQ@F*JN#Mz662lZ>)7Q*4%{?pQ$II{fTOaGVesT_s4~NKu&4AK@V?&Y@ zSb85v%1%&^A<9j6?*oicT>=WO*w6(m1JLkiSY z#_OgL94V=YqoUVqKL#%(S#OfOqmmhw(M2((vc8v0u`f+ZO{djoh=eAy43Iq}9t7Qw zD_fkh)ylj0`7wBo1Wzo46KtFcet+NAuqsL~D=j_(?CKzF9euMnVmE&q&{HXuvxH~L zQRXwJt@*_!@9;WwQ99)Kuqx%2Fkmi%5H{Fi_>$!81bMU`~rPZ zu#r?=@mZJHs=er3vEAw~C|ocEMW`Dr-)N>p-T!G=)#_-*U#K5&GWRKyH_y6^f6W)g zSle#fI1qi;SFnJAN`*Im&!tI`Cffi-TEN}imjVStjbtJ+DUeiBcaeYZkh)Q_EZJ$g zs|TB;=5l6ucp06Z=c_yj7H<}-4K+rX445EqX>!n=hQh+en5?W?pN7jhwBnS#UCigDS5wt^kG9hY5GO&_f^G4)_ zd6wp~NK??ZrKj{iK$e55{+2N5&w(m`-$TL$-zPjz=|&h(2_|?-=Tl*wRnbd`9;apQ@q}t5Mc`aJuA!h`=LgY}D zq1b0;nf}LH4dxb6gbqv8ytR*e`L0A2*6;>IN=RV?Zb0OH8%pTM6;;Xd09D~2>Rx0g zeMvt;KmAtZX?PNNDx`wHF_ze^zbmDr(qVK=9wd*4Gn9gFRMq7S_` zPP^ARBLX+LVKh7;VJ}4-`9uW++-q^q#YGZ%^4lpb=hMUC`;OZ5KDBdFnmsqVo$6iRH<_WXPY$69-%epMmD?&gW> z!1m{)w>^@XbOVTw3o{C@3&pyqZPqqMF|qQnfv|U8HOK}}BQn!%=YZANcxy2Fb~-@a z@n9c3BK(M}!No56Ug9MnWHig{jMzOX1_Y=fOZEX+8z}X>-Oh)w6DPOxhiB9%#xzWyrA=KgTFpuG>&oVi#2YVz1s|O7Ac2puTHbU`wYH&{d#VP5?W-YJ^1#WY~O$7 z*g2i|u1&RvgO}bRnfO#*Y`S@vX}pCRR+uIa|5;`#JbfVlTZ(XHepZr!)?c{Eph=Xm zy~9>`$4+J7cjC5}fd;R=4jcy8sh4`s+=QG3>(pU5Y~h!>Qy!|6Li{VPdPb&vE;mBv zn(OL>atuYPCp6RWOazU|(%Q@Haerx=wtOvY@35s<8mKg%NdafW6)CP#JS;7>@>Dw3 z{5!;>=}7CVac86Jmz8@^5-pUfQ-L?C$JPCOph|ePyG*D{{y*j6RcR^hXwV2fv06nh0sIs}wMkZHT)A zVfFq4;-i81x9)0N#P0CrDR>Hg0-aXhZ{j!*e$QVq4^%i6EcZ--Yqh01qzd-7-IY$a ztI8w}@olgp+i8nd{oikFC&5rC-OU5Uo*B=tZ$4-AXPK8#G&qmo9PV?jA>#!D{4c38 zATuyIgS*W-lVXE=$q%|>A5huqlO%>4y5vm2Cux{SI8!jn+|H%;HXjnXp49p`Qn}-@ zswg0llGo2`28mYcrl_gfrm8;ps*HZ`l#fp-t;2ghk z%FHF_f3MW4TBGb2OlHC`m0|6F!DjKUbQYDd7XB}AgQ#|}v)R>MwMZ!oy3r0#ISK&r z1{7BO5mB6Ytp?whv@$u0-;41k~Zf{pQ z940@OD7Vv+2R}8cqMxmWL1m>om3@pyXWk!iQd579&0ZK-rQFpqy=|;8!BTKxKvt|Hn$$on*P* zwfhV?UYq*NDEdcMkWc}%&}|jkndAZ_E>ztS4a*Hwnv0cF8QHTDFq3}Y%SVG|2c)m_ z+krH8W9;#6RM?R^OXtbT>>WrSDKF@EprR&2h}k(o10T{S}Xg#j`~Z?QuYgps{Zo3`l(KU|=rw~KfPkCLYcP|zf_uC%GGo4(-ZGTrPjh4bGh+UOLk|)|Gq^31Ep45PvbZge$THs4~&wamhN*YUC>apl~6l7 zFe9y&5pol!^^(|;?EuxN|9y|`+$prPn}^o7bN|j~Pkzrgx#x{eJvfE?4O5V?lmh}R_=Bc7l`TDP z;gFaO&i!7=b&=uTFNn;!rZU0Y|ANf&sBo5rHWKcyWd>1gVRwt@D649alBZ;=ES^%_ zFc2pQNAgTqN>-`Ci#>{+P{NfoNv@E8NeaEe?PJkD@}iU|)p3Qsq7a%X=iW~b@UuRf z?-YJsGQOdb=~zU&a&ct;bBP8cgZ8B0k#P*Y<_TLDk_MqY;)MUoNh02jJghHk%$aBR?Fx zuilkE@FjUcwH#Sv(B2r2zhB*cn>{X;ip0BD1F2Eym%v(~f^6ow{($z6lMG19t;a0~+1 zWLazlt1T4DB;K5y7!#QB>2T=wC!=Zwge&03{#0@o2%p-ox%QQFDi=yI!%SMhnmTw_ z)K#Yz%o}do*qaM3Y&Z2Uv>-h1pBzrhuAxDxa^MJZIK|YquG1hKK$rO{hJcG{ z>86$G@kg)e40k|Nuw#*TthvpW$PY|WJ&{xwlEZJE0_VjF zbJD(O?30BCy;o0Ny1j22I8n_c9K*9kdvbUHm z9z59o_5u5roz0SxO_MZc@OKdv70airn#Jt&Za&SkJ9svJA6>@-D2(O1;~sk%T_thG z-sV-Djgz=wPp0(bS;^}R#`*lIDE~4qsJZDfP1!hK+!e|7tYT3%VQDgsvl2Sarg<@s zswB_)Y>~zhJiAHaTdH?-`267b^Z=WpQC734Vz*JrCP`Tp$qpMVc<1nk@VhRh>vW25On#6_u zYn?U(JdLl1*!G@?!mJ9O&!UJBy2Xl0{YA zuIh(zypRyW`5oug%X|s*lrP%1puV+UT3z=jzfQ*Y=<`^Th|d`J$ug^wdEC0@OCotN z#fvw~3eZsfUR4n{IMjL(UoEdyCH}Bw)%(@DN8!_WCF+RsZ;N~!m*rZ0{Iujduw5nE z>lgdQ^-Zf?FN+t^-5TZTf9PX5Z?S94Dz{M)w?=rQ;){5iWJw!*Gb-Juqc^RPnxnG( z$$#CaPU{hh%4^o*RPiLfMiJu9`MI)kb%+1+_w*xFgJ||EAcrYntNFvNkX1!Au1ZdV zUnD?^s__i#*uR7Gll4#I;s#`@i<7vFO=y6qN3z&{#`YHr5W7g$LV*t@tTEJ&k_^N+ z5W`pmztc1xQwb0S$DE>F?)yH*mK z^%4bQ=h01El(fBlBjA#j`wmf3F*_VbRV>|R0bKdPhothqofx#sdNI??!>*uqg7c!{ z(n?zIAX=uC9||SFN3DARj5NF`MI^1&wn>KPWqFp%txNk@tRpYFyaI#(ohak`Y&3#R z2rVtgRTs6I?3ynV)akrC{?Fq#zZ?TX%Qs@R%$GfCmSYehFDgS@PemKXk{d5|Gxqu$ zMI>OwHWN}|N;|?XX~P06u&KBzv!FJ}iQulcukrzbn=+jp0`(N7Qf|MZ6_ zEPjAWOc6%n*S2@PVc%=A-VKp?6XOF5tP9{Wx*Oz^AKRdJONr|GRVs%71V&($!9jSa zMqnJ*apf-A&{;&MPeh`xyeQz}Ni{3-Tfz!gFbCx0D8NAGVp(3XQli^{y^h|;@VgLp z24r*pSd6nO{RfLb0JSd#-%Mb)M!+T~WXPbh8&q!e?S`75?g17CxzL1N-LboTS+K=y zF#zgv(J9%6csWwlHlTcg9QY<4bb2Pjsjo#`EsM;*8&<9Tsdoo-k%JEgg8=mktbTAe z1)6yr*fX$5LKs;V1-4*|4^&9)FEM!>@FPTt7|7Qhj0b4rE!IUE(`P7DfP8{t7ny_H zRtQ5%rd2rh%M6&hV4c7ZlC&JKAMO^&!O6CCi|>DbmL}PI+Cw%A?Djql8aF+P61Mz} z90qLbDE(b6yit!@JH0ol?xv8&gwdvS&+gL{>2#yy5IcsI~9j!yPYv?3eFARhab z9JewJgu|B)NA=s?1jH8Y639ubkTY^t?GuYZq`6nyZc7?eHbdV8Iwo`)fE4TrKtln! z(TqRux*)A#W&vt^Uc{cN&M=7jUnJ!yLbcrNyvII%WM3H%&L3Txa5t4NFSKK$fF-Tk zz@#}lW$j*pB*Lo5nY?NX0~$n|hRn{xt7IUwLZnYq@gG|E!W76Q5g z(!zwqNFj6NK&?HkXi$-I0Q*I6qs3zk%F#T=>?w@C?9WtkNun?Nmhi99%AZtMDd zuuMxr!&yV^sUO;{sZbsEYgN~T`{a>#8jYMH;CF7BzNwqr7eJ>pxSD^~;!?HhZPapm^z%E0F;j zlG@hOSyaA_ifA4~Wo`@Zo_Dskgy8_KZCgKgF8jne>q@(nSZ<4?iqlLkG7#URJiGpx zH$no8BN-5Y9(k9f&Z~gvp#D~B*>O08E?y=@sf_a79wPy+%E^HYuwEwR3?ZCz@-{8< zIsS}9g@H#z-FkYJWD{c++6-@tzmgNyomw7_2*W2irDXGES+T2_feHmQ1xPG8&#_M! z@AgfUCX-0e;>7}#QkF(YTS-6R7F}+I0iET2mfvOrAN-_&NzXz$@8G#$@5Wr#!3s3s z5lYO0D8UIJ4#B&9rSXees?!ojQ;<#?=v+*Fgbj4q?o+>g>T*p{*|fKMWWx|G^H0zL zyw6IhifS9FwNfU&1#1wQmUv%wNoXE{JaZj)>+>|LU7OW<{aWF3FOQI*C#d7PSkADn zdfm5Q42N&to*lk9-aqOGN1-eC#PrK?k#KzL^*KO2+5%?XSjDM<^?GapcdKtWn2xRuHE5S^&$G65_zF%`Q&O_5A|#;U}v`4>G#T` z_4O;eXxJ4_I@S(}4Hsj013WWIVc%yF8mdYyPwyK~(SS>;nIITRNfa<5<5u0eDFbyYS6k_`&DbNN7^|;))Ze?jlfG&nf0e`G!O6*+6PI_H(|N>+ zCe`L@yAUJ%5Rjib`!heE{QYfm%|>^HK=8}3_f)csRmZMOBmm*i)wfFYkV*r+;WTYf zAgP`!GITm_iKz%m#=E9o682`ONTaU$W_XYTZVUAu zq2sul>jVEW=AIy45Ibd2S?1#;GGb4a7!XqP)bJXoer?Xkr5_R3+0Pm`BRom^Vh*Me^Afn{9*FFZZEpbph=^ofA7?$&C7U#r)8e=;dqsbg+& zZ8y!|QxRn@%`RgVsmtYU){O_(1F7SqNkz<~*X*+s?ZjOtXjoBAZ%D8;w%(B4ge4u-?Czr8&e?VtSk?)Aa(+34r}qjv|E?#-EnsB?C=hy^an56Je0N*1a}%D%1` zVpF6R7?DWw18|Qc)Jde-E=|$GQc5NFscOL|bAbL-zE2ixmP{sbrb5lgryiwARKhOS z4{5jG!3*eea)bC0)i>-n!Z+_XozMeWq{Re`Y4{is@<|4uDEV<2dh2o; z9>di}1gNnVn`pYW(?&LVJB!g9gJhH25Mmv<2gHz6pCtvCsqGejh{ww&o_Uq$%|T94 zp@VM9=h2cP3mWI-_yI#xI{i{p3I=Dnp&d9^wu%48QAmENM?}gBZI=dp9(W9DOrAIt zr&%;b!)~NZOlk^Zj`v=iq}&%CmV=B!lU6K^^vASalh2q-a8=}pTP=qXd)jIpa03(1 z5@xycIEq<}z$0j?Fk#aiq)^jmK@Qc>t~!qd zBF8K(T3?s!37+kI`gQqao4%k4%jv!EZN1S>Q)7g#I91m)I`UY;8IXcbc)@s-0tlOA z0$ZWc3r(wWb!6Z}<34mqtvH#WOf^&`$lysgB8Mf2X2yvPmS6od9#^G1`a^z7LwN|1 zQ^uSJFd&z=Nt)8LtC)+|wb?Jw<0o4HAyc1J*sqVGY!(qF6VZ+kEp=lqjB27WX#^qd z!T_ZzvRabkpmYG}g`X^M7%)igJQznA zj(!&1#1us`UsQKodH_-keU2u0jC53?Mx}5e;3>5O{>yXE;4dv(ba?N2)LPQ_1KU`4 zNu@5m7H^Mv$tn}(&yk|i+TMVX`dl0=xGAC?6HsqOba~M8O0nkG$&EI9@a`sgEJy&7 zk5!DnjdWMr!O6qu!Sw5fu64a0bcXX_`9R z_1-Eu?#27;XBkG=gyCrPbl!;*Ti<-+J;`N~2BQoKRNmsagaY4!qN*aehMX7y<6UOS zuS>B5F!rS6n;S^5u;&BYt&`}wWLs&%BY=YIb)Du{QL0;Kx3dJ8QIy_BccoaxX8r5@ zaup#~VKZe-0oydDWgF1L#`Azw8!~D8lrg`x+Vyzrv2klLA4vRx4wUbwsWC5~tm16G zd-M6V$HH4_5r!w$k=w0rOd~c&I@_Xc#>kyt_USyF9#*dbwO=Nrk(g+z5e^VJ($WNs z=IW}5fqb{t{9Umk9HqrMsqUK2DhlD1dY@k<*UNm_te0WjgX+T~O7x_L;*q&J%r!B{ zjbTM6EHI!Q55r>+N9X+S!^>}nz_P>&M2l``0k9nXy3DH>oyo|iEkUC0Xw3qPEZ0;VR-v>WpCk@O&Kiy z0Hh5T^diaRp*C{~HSX2I&*<={ST+Mi*;BS7qB^nZuwdIT1&PZWXETE*vkSo53yPFe zG-S}cMqihM4RaQzsc+vPfrjV2YY}Rj_V!u$WuuJ8p}c2|gbhWEk=e*9(%x1xSFuv`*qmHhu($|QR1Z;Ya5x6fv+{>4rQS2 zk(Tp!B`^gg0AoO$zos^(z|Rs&YPvEn8KjMC*ef)``hWRje8LKQ%_?3GAh!UVO3Q0a z0~DIU9y7(Epwv&4q^ox4`}nSOmj}i=Yf5?g`uR=^tF%C9lvT z$GO7(F5nx-wmyS(@NN&76%2U%9vg`aw!-x<3i%Ov{vY*e zU@KfmKG98DB^m?5KUX?)5Fh}lBA(|!`<=L`Iyju3?dTlyW#33+&=^4^sK{3}GGgkR z9wO$8-2Oi)UpBS+g~ZFC(NPPRwj^Z3HAGZ6Ua)*wG09%1bf#2L8DSPFvPo6C z(aaV+HF%GL8y7j0CNiC~~>t1d@>@ z&<2bL-w8TgKpHKgiR??xx5GLhr!tVhJkxRyxrR4}e+2=Y?l?Y&FJpXQMQ-P9pI5O78fS)z|c^gs+{48@v-#!7* z1TY(oJP1{H)FB-g<_j}(w zWd04|dW}L;;Dlt|W>AK>(h5PY@koQ|xvzONwNo-|6RC|`)VBAMYbVi@ZvcgZ(WMvd zeMx*9z*Dw5IYZmqK%`yQSEf~CL5w)fAGzjYuB@|%K##oy*#k7M6>F8vsu2_aMVRu1 z;q@nAp9jW%9Bk)zU*u((UZbZe;fVu?(pEuGSsW1 z<&DWC>wL@zE4R;=ugo2#M3Q=JxpR}oa0nuFw1`y|Z-=xCPw%pPQ6{Awk1nDd(Av-f zD2=0T30NCTBnA|D6_4>qvzh1X3!=d!4|}#@kI%azv&(D#v=*OFCkDhJQ&|&K@`m~H zZwHwF&`f9gb6i~IWm4Vw)wxZcPJg!+x$2{zn^jV!mVuYC^RLUV%S%S7G^j1u(u9i0 zHR?Gbd!RRUU}^(;JLvRKC#oePq0Tt1ag;F{LF-ggsZYKCRM)6DYvQJI!z8%zEXwli zZVrmd#iI>B{PePt7odn2DJ;wg4{2RRcP!J| ze1#>NmPuwe-khI5x|DfOU~#&L2#W|q#70z*mw;D86!^Qmvc7Ubyr%aZdWkx?o(Ac> zbIM}l4(C%}fp3Lt;kJcAXm6Fd2nKTT_SM_b;qlq%_5Oc3)Fn-_=Hu8Mad1a2_#R*I za*={!(b>KzKwrg$P*Z~bfMX#)#kPHG;tFci)+vbqKiu(=Q{BFVz!v*Uudzk^Y;WVp zws_tg#^=TT=A?@8%i@Ig1RLbKn)yX6ta(K5>)Vj`|B(HqzN#9U#IMig40LmDLL*&E z8PSZ=LHVFjmyoOATT+oJ)XHXD&nEbXP+K`F0*z+7C~d-KBF-znw_v`V!;F1h(h|d8 z^wwTQWsCxnWG^q1loMUpoY{7S=*eFkL7lFC-V57J>f_!dS17h%O@gvI(G>VMe!T`# z#5jT-LL35D^3URQ0oco7TLb5Oral40O(C(uX7uu=6`<66p6|@2-P}B6hHKBPVTTZg zdO$MmUlN!KFR^oZKRj>^>t?A=$BkF7rTCKN*AtW_@_czrsY#k@gX(}DRCD8@XS=o^ zJbr*!>pajh%??PXfLB!#``q;fH+6}9e1<>0#%$@3D`&|RgV+mFx6i$lwBDbR134Bc9Ob% z(qi#i2<8Sx?Np@oGAsIP29-#Lv=omKNo{gy9aa`ff}Zdm2iZV98FacrE$H)^3F%>d zoe@7iN784ilDt{<4c+`H`s9p#`4+7*ApUm4@$Jv$1p=i`VoJ7i=aP$(xcWqf4lK)9 z=UU>%cAkT&bWY{hRb2DRf`45?>nJOe)p@Kb*V#BPkN|d_$XuP^y=|XaexGi+5)^b{ zuhDrTQ?iOg-dT7gqAhuEoygbsD_qF8Fns#1$d`udTM>y%DWGr>z~AcKG}~;o*0-ZfIZV z_Cwe4?)PSu@7-iu;fft$ehC2Siy})MSl|1MX)OS>K7772t9AA?=-1*Xx-zI%j=iZD{M06ftU%WFTUrRrfp_&I5RJZ#^=~4m zIhy=;%&rEr?>Ym%9mRbHikQ}KHV`d`>`84G&v10gN1K42$FQ5^GR8i_<>_pl%M<_? zkN1y4qsPzoHapJQ96&8E^eg*#xUAymR?B3*MDs3t`|7P!(15|tqMIZyf{k*LrRLX+ zmf|)~6|^tmbMCoxyFvDIKXjYhqXxXjPaTJw-}v@IBi7gWtGaW#5o=rH)w#yq4qrds zL8o@JRfv!3Xwp@C(up#o_?f2bKdnPYcxf3R4#GpoP=u%hl|+Z*Z<(u;MsbD-7dcZauo*bOLJ2@UbfAivC^y2Vz z|A(W47h&^zn>)PLzlTSkVR2D<{iTpM@z^5@+$vRDEqT|KdChLid#?=S3P7(Jn}q~e z#jDx7=eEy#Knmr(!{hz4gK&srZEfp!Z22-)1n)U&nY~)&s*uhYfwyky~w?;fAPW~bVZAQ=IS;?qp0oM zUgy5VlY^h$9iAM#0M>7w$^o9hGpffO=PpFmxVEhsH+1&Rcf%oFG%`AVb9?}=QQ}Uc zJASi)yko`6S~(C2r*eI2Mh1~je3iMI6*Lgvst-EC^(q@{F%#2r-#C?=R8irsjIuj< zQ$veBv?a2$b@TBC|J^ipc9@Mp{wq0ezEQ?R*qkzYWXN^|uP^4HfJ?&k9X%wmTy&~O zJYnC{TMB$_H)`W<-ZsljiE2C<)LV2$4$MAz!F~N4{J4LHj1fw_%nP6tU7QHl{F(BA z_SpXM>7kf0v_vPQR(9?6V75SosC-X&kZ3zB`*q3B?3pvZY)^31IUX{Jlq9LhM1z>W zSz094JW$p|f@CU*5bZffh`rL;FfqcNvI&DQ={$NaE<17_zgW%}&(-BC>g8o?s2KOA zseIY|*}VZ3xJ<1HP~mIU3@WV))#-EXX308czQC>7qTJgeN6jW&;3t8H^%7xhRHuC8 zDI0);d8RgzjGpmmTQ>qDxj}_LbY7=+@>ZQz=?%?fg*C8t@Ox+A%Z(xGubNP0349Jn<+3TIy@IAYUcPtNp(ePWbg#I&Zx*VB>U}Uw!5N=!NRO+&Z z6;#)&QmF1ciL!XN6zy0puL1|@YJ=sI;u+WEvtxN?m9QzKmzM+#aZJ;?H`r;)wPNAN zJmR?!un>nkdDB5NaAQyG;jXdJezRf2&2P%HULV?h?vbm5Eu~|Kn9)2dXH}eJUAb0$ zW_0F<7u9}ZoPku!ybZ$S$B#^&6A{l5n)dM`)k9z7$UOnQt8id%<(lw$59v=6)c??> zZ*c;5z0K@dORyt|QJ_Uh}zD{X~W$8W2-Uz)NM z^O$fSiCQF>m@+32Y(QiB)?7r(RR6xri^}cc;`GhQ+30xx?A^)!5&I~9zdYLiarAuu z^uWVc&CG?Kd|nN=QAr8-d4rtt%ruWQN))9l^efh8B|PG{qb233WoQxU_`{d)n${PC zy?g|2k@7>JRxj|P*R$_?=K)4`zaAU-K_)!RPAYwSujnLtR>!W%(Q8!NC3jJyg$=8P zmhTy9gjuxe20d${T@WHvivL!&FRS~S7~?r!Cs&*Q6(S@Z=LrZfc)u#p2x>~oz~wTj zNd6&1171F{b#(_Fk7p5ztI`iBWMbTY`sAQInTKUXCINo>LkY^f(`YgwBNyKNCv)F$ zX|tzqILepTGbEK|J~w)&NS;Z)q;LV6o7FOmEQ>MhKm!WBl{7d39unj4j28LfimN3( z7KNx~3vqc~OK!W)#`y$G?XvmRXcD7NIg$^%3j8Qx2ON`HU=>F$RVA@rUfkSVR?~my zOU}Cn;(ikszP>wHln%&=SEeD`cREy_ov;o#ZRXQyNjHQWfwkg%0IfP@8SQqq2fy$1 zcOJp#)Aka3)dR&Nq+EI6ZF!<*c^?lAE=GrNLw5&Q2UU4@{7f%NoUp2aoS7A9r?`?- z1{Xb@kSSrYz?1S5?la@DWe5weyaX_ZF&f842h^H`caP3y@f8e790cdVE+59);-qh4 zT!ZQZ0V-$K6v#(NyAX-q9AkITcHo_zamZEWBQsCyde5|r<2Ln~_}RSfLY`xyCn!hw z`y>&9PUNXZ46MJ2iUcVYa9xSz2IBLk>&%+JSZO0kQ}eo!7UqQYlu+-j6;>wfAjRI= z;a6QJ#YCN)A*u;9nTawU6^3uGi)b9@MXpDxa(v-#AA3Mg&HEIcp+2{%^rg|nEz z1GgDzr~;#$j*${20r4P;BwL}OBAzPxdZt#nk|-_xlST;~MUgWv=)Gh`h^u?_iur}i zoh^PZq(z-l_Sbwao%K$|Rr8`Tg+87zXEW;M2mR~kQgMxN#U(Na$AVhA*_;&Dk#FWW zR2~av49vM)3M_%2<~cPzbQ*9&(@PALs^~`qbaKtt%p$bbsEs#!2kkGjkF(3$S$ni^ zL4eeB!!4Ou?XaQMPD)Bm%9IJ?3-Rhuj6YP6M(ebMmY-WG927C!f>07;WE_whv^NEs zjvqM%t)4C1 zYi)gU_!r>K^fZ9ZJ_Vu0{Wk@cw2VDya1B~22ueMHc$a8r z!9DyP~-a>)U*KeKWnjYcsuEx9{)X-2W9IOOgWEOC`L=lsRF`oqyJvUfASrjc)tH-dlBl ztll=}-y#A8>ee&A!U713CZ2_A<}P27Kd`6T3ZHy3fw$FWJVw6(byDAN+At7)_g`^n zs7Wf;?zxn92+?U$HBAd|6d~iB6Kjqg*-jbi_}_a;Ah5Rci>-rOvvzrM{E>)GQpO_LQ9 zntKmZKkKI13j;b;y`e?WevD`~0P8jBP_$ZvxCNYnn#3lDVUua}wt0W-X6S`eRm(O3 zLyJFQxpRC6L#`EV*;9MDIyE=eY8VzO%dnZ0T>FDe0xvyENr(qW)Wro1j%??k<~R(s zGvmItXZ^EHKoa<;()6j~=x;RYiplsLsP()q(d8I-(fa^|{>Rsuttf)QWYUo=zpUPx z>qu+k3njymHj0vu?Kc0`=evU+RsP5Hp6%HyrBumo+b|Hl>no-~T1kOxqt`f#10!hz z6h#r|78?OgjVvM*DUeiLBgnsZNG*-sIOxKQt(oDx_h#YAc~w+VG&+jl2yP2uAr}&X zek*1i=p0;uFx!;5RvWVM2e!f?1^f7fr*OrV0u_AM4iy(@;3N;0iEZu-xh~Jz_$zHf zy1bSWxUM!vtO^HAWgrDdWeHg2+LX)*tp-p@WMq33xDNNeUQaK-%`Sbaz|s}W!J1jf zgmp$NYlj)Eg)7KI3aqXTM*_+M<53hTR-z>ly`uS4mz7qi9Q{*POPqf}S)mz6QElG} zyZphi@-*ky>XAv2U6@r}Qbg|<`?3bz6IQ!|v|lVUl#;~da3LHlb)B&cPS}tM*L+M? zB@?o%*(lXFPXYgt8 z%g(iY)o$HJVz4UeRpVHYpny~_saw=U#XS<--*duqrsgj3ZBVP07*UAh0Wf3OW{cM% z4T+w5yhGowk7wPjPFL?Ajer-(AD~GBp^v?n%9$KyBG2h+0K4}eN%QvsH#X_O)0RzZ zZBRR3n!aG2Hqct}MOWhH4&lXy-ab6>Wgh)9ilPS4SnWMM73UfNyTvqcIYKES)*%(Pk7F~yNq zx+gmGzJHJ%*I+}{QT+%B^ zwP|;6A1#`zH#x1)O`8n+I3<)K-6`!|zw(Peq}e_l|3UMn$?$hHyBBMl<}2C5U?u4> zoNv$Cn|<2djt=BG`U#~~QE%Eh6n@XII9KYHP;u#d+jV6fv}mkFklm|_pvVL#vFg~7 z?UbUa|9vMWWC?}tVR<0f{(R2)zVq3+{G6w`Bj9)e4}7jT0;Sj19g#4stkkaJ3K?wQfG-8UZH4DM%xGL)^-q{P6QXjn0A6k8UCu3*hf ziYv%K%R)sI6Rm8;XO1ICMm3VC83i{o%cY>g;6I@yr@qQ|R|#gO`ZrWtqW9 zJQL1VeU%g$BI<>UQdZ0RniM8Q?vHexqE_EhnVXH!Pa6i8PrnD(Nk$mo33ld0oM;U` zS#o+qIiHygr_N6Y@X3oMDu&dAHt=;Y?Ee`1VShZjy@yZWavB>K(_5rs&&1FQ>i2KM zhlxLWxSt_#ZV~0<#);egJzBO#($dk@)Z$=Zn>+m8pR~i;O5oEK1T%jcPWoTN>FD;( zZv@A-8>-rvFAx4*17cm$MvMnT|8O}cRkd&EmHXWljY+}H9@k?_JL2WKK+iUou;Yoa z3!3uy{JhnJ7Cp{~*3o-W>bkd`j0+K!$si1^psI+BN0cI)7NbSSZu(g#U@>?nD;CGN zYT;oy*zOFU=tg_H?VT<(XUh}v@6~Rt(`m#kACoG%27w3fn7uuXk_!`iu8&8v?NV4t zszFEty2x{h7l}Rgl5@FcB7rLHIRx$p9k@NW3oOey9#qc_a1gloV`*V!7j{EEF1LS zr`>4MoAQo`(Qan#gp8_$?sd9b+o=lmdf0{uH4j^y*E!$D+jE|xrch!pcPpm7{mSPQ zZmH3`uEUz5q!DT_Dx?1DuE&;U05c)YTs`Ab(O5VM^}Hg~6rkGz)QP+k?9#qv8aVq)C+` z<2a3lV@I}AhFJgm&dy7l(t?oY4~=`id+zSJ$38wSvLXnM4gxrU$BY|DxnO|bf@ljW z1)DK=c+FEKU(rUN$(;4k+4+Ywf=lwmnS^^~nWUU)I8MFg%v3Rbs`63of2p*GOG_bu zs^V4id1isg1O%r{8cZxxrE_Arl7~vc znn+`Ch{tKY>uY~<8vluLqx6T}#(FoU-Ma21*_h-I*+JRQTXF{#scjI{2e zW6UtA@RfRV`Gm4SwMgpp0C7x_e5*@p!wue>%!kmn+vJ54kf=9z(xJR5p+1j%%Bmf= z_MC)zqY4&%I<2iav`IQ`t~s<>+Ll`np5hg9Y{u*lD%gZ=@q>Z4N6}hEYnU}p2-=bp z?k$Lp2H-A&oNt8r&{d_K%1=+bhQIGl zCwI5En_hr|p$O{Q3w@6`#G4drqb-z4DBkFeSpU=nznaEZS&jx%#^VhJOEV zcm~U$8H7IVmUFkLdn?_T;N%2{jEIA+eru%dJNNzfV`<@BzAwNz_mAK_dtbow{vQF( zxQQ#$Y6?Gv{I=hBo_*YG$4yvDN?|`mssx8mm$Y%EmhGx=Yq?V=LG`=iz2kDBo>^BN z8}C$IP1qGzRK*Ny_+{`9jZjT%0x=N1=U2?3;0L02wXGmZ3vDUrtrnTh&bq;D5|V7U zOYy&VHh$1!b4l{%y_tD${^&|4#AGO72-{KxD3m7P+o6wO3y3AbrmYHVTE^rN4>V?S z$M4GltT9t$;N3(!x*fF=j6B$>d2O<{e7 zQCTwrrwJMRQq&~f%ky&ewpn$p(w4Er2n`0vRft|?b)*~`6-%zLgJ5efi3jCrbL|H7&AR*oFG*|hBY=;qGtP*kGqMW@_It?-M_NAIzPJL|ei zfP47(93;_Mn&jx&~HS)YdKNa>Cb*Ol5r0Tq03WF-9{YTG7zt>W<(|-VdWa=)GtN#Ok!+Y~zz#m!q zeBAkchUQaU{RzYv9|{qnnXrm zBt*8@If9(uVrVoe43Uy+9IUdYF5$}b^b*Srd#B`^ZuN0k)YxxlHtRX zCt0BRM0S4EPF8g4G|!TSSkP+w2NFc5#= zr?>|nHlpyZh!_Hq#26zyE+M76ZH-;KTyGF!`0n0{5GD3y>)r2f$4_nDCdp`!zyQ{@ z2~Zk~Am3IIgD-(=gw>%by*tQEf2s%_G9XUv^y|OerI~c2{DelWU1Rk zv`&?zOcU_#IO!-bA%@5$sbl~C{5O;9MmIuaBLO3L)W$<$Dg@pe=>pgSf<{>H>%!8W zW9mtkIOgP-KTtzh$gM$wdmE6HK?jo}MW(*187o^~9r72}CAp%lDp0oBJ5%Zal5(hw zLh{_03hQbajHPpEDwG_1Hn>Z5cgxv)wVp?*L>aUUu#+Bge`5(te`P5-(9YNppHTL-xw)_hF z1JOfL?4Xn+OGe2G;v4AR^+}fasHi-}uwud3{!P3CwO37V+c*%t`&Y~c31p>ejJ+nY zn{L)Y7YLFdPEWB>P|`>yRwlJ1Ro6)U-*-q^{*vs(XsU}T&X9a>=4pn${FIOLR;zQ` zf>U@Ja}5d45a>5&%79G3j1dO2Ng~CJ=AwUDif80({o9cbH!S2R;6WM`5l01=iJQ67 z<(jidPI?Rf8>!rONs(m`$$X}GIyS&W3>lA5XgXLVQcalQQUs7^$Y}06$EjO)`_Fa% zZqT<|Ih1D13{07Zm}{eWSQw09%FUQ8#6ZhJMMww54soZ|5^RE+NGur*ujM3{0)?TG z&@#i}7tC^07d9piw0+kg3zHYdaFIfcVUex_h3S|gpb8R5sU3w`f%bPo`VofNVKigTX*%Y{*2Q1XTc`lo=eOQuIl5Az}2TH09*}>yx*dckT~MWB>87p0EXbYxmZI&J$>t>-{zF z%EGlq({4!ivqz=H8~NLdHjX;$!V#tBqUKSESGL_;GOywKV-GMQ^9Ep*%Dhr#Q~~ND z^LC4BE#iKi-)>wKexpdxTl_X&H((m|O<_)j3fo6c=F87xDE2_#^F6FX4=UlUk(j&k ze3%&C7W0F}P;UDxVtAWMx5VK3z(I1z4^n~y^&6D11NW=7u~`PS!d#)*RX+zt=K8&h zrlw8zH>|Q^>LRii54xi@wy^%7p@k{NGji$nYL;mLOj15y74+>(_4;jpD8DV@tKI z5UwQWpReomWqadg?Xb}~(LEaw+nU#IInRwq7gwdxXy=9G<%)|jDsEyK&G&vKg!_*E zB(%3RzQE|YtK_$&x-EOviSyR~%~x%6+C~um&ac?zr%t9H zfG~%2LN}34jC8WgB>wN+dl4K0*)(luq7O*i?mqjzcXxiVjFydtciezu_z$l)7nKR1a_f$~sGn&D9s8%j>Ez|MSWMuf? zrkR2Zi#P^9U9K{=hy)NGK+Jr~b5zX3G)stJDR09vrUch+8NE|-zrK6*=C_+S5=vPq zA|l|9@^ykBs51S)*ek>rO7holneagc^cEn z6^)lP8#Ee4{t(++Wu~Cn3nF19ftzITT zdOVl@`!UHeFBm+6af>vATBLcIic3<62ssW-hu0u;j2ZETfiLwY81w|qELYaff71Ps0>*OgUBp_hqgjr{b!F zbJt(HI$BCvnItiVdl%YZI3>Jym{6yFp!{Mb3I@)~;? z7yEq91$LdC5s{&l?u9lFn)+Rh0WK~UG@F%nprq@VTJwC}D^436G)KO!DOPC!M^AFM zbtFBr?3ZKUj$wt*DTX#lZ*h(BwL@o}ZU;VMJLrVGe5qpOwg9WXT+(61HO6y6Nzg%^ zv)T2V4_EJB&t@%CpjPg38iyrP>ER*y)A{-4^x>o}F_0XkcaRWt(T|AiNSfjFO>-uL zsnwYrsOaEO=^TsyaFRzVzw+S zE4D7jvAs3r)*)`4jI?sHJ zpmk85DrD?z`#N=(Omw`Edx z^mkq&7WY3bki3}V=2urBh1{hN*$B#krVtLA?+Ut_`L;|vG{Y=S%%`con(g`NL_q~KY%N}9n&Wsh_ir)g$_>aDT*(^kg;r}Gf@ePjQ>`-5BS z8jpk7%2o3yQQy@TQwi53netw@{|u+1^{N{qOB?_qbe$)iUI;(4pX7#Ra6B!)^{U^9 z_G>>#?RCA{gY`YCD1cw~sCjTu+QOD-?Y4HvZRCJE$DeqEPYdyy`e~+b6m?hZvJCNW z8@}J0isrHW`L+v+{@wwzW3WCs9kOlhApI9%ZnE4UVo-*bW})szgQ)HdnGeI@DP=qstg$fRpodSscZUTF#a@{9^{; zd_3o2^|dj#)3>J_4PIGY_l>^+)f;JZ+s5^~e#P2DhG0xxY18RYq7+G%5_f#4lAOe2 zxg3yKk{IJE4pB^^|K9iZ02YhIA**RpPbQLpefP2Ny0rNj;#;<B>&Y+D?e$CTZ->vXnYx?WQYu0}>=*7SAaVau~{hUT9%CW>%+u+`1X_V!E z^1ogMDUBDv{NsSH=^QEYhaEv5N$`foz8l!y0XmZKBuXyha2eAiIkjUF#o?Xn(1fg* zb`z3@Xtc<)H~5aNBO#+Io$EV0OIP49T^%e3I9tVF{C@z82|4sA{Y;(jmcH$Ja^>#U z0=Xq~&jzXrn_Itb5%?EnGjK=nn;=Qa#k;FFCpXg{&#zA3U7wQ)8Qjr$7AACX(6so2 z2C|;QU~gu}Ke-MB{e*n;_k+s2vy~ldPpKcJn^XP@ z(Qj+K^rTD51xNYBJQ0Eb}#^JHpt}1Pdb<2fJ|xdGL18xT$(2&&8+m!4YTA8$E>}bi;P}+3Ie4N ze!}2@H#ul{p9pA{1@RwbCD=!8ANIAB>5IIv?_EFh32G!E)*f*eBnv(V;W`)!m|ZpS z7g@maH%P;e~eE=qUSSmwfXrC(M%{{sWdQff6u+h{2pf zC1Bo-h6*75lYkTX+xF3trsr`S#vIZb9^?QITlud&+_Sfjbm#+pK|)i|;WetyLQ#j6 z71H{EB!J36?oLRzB;p=9tXED&ERMSr#sSnZ2c}gG8m}d2R0^{BtfZOkBR6>o@G*Fw zV-0mScXx4LwP#Qr6*012!3HW6>x2+dL70*xi=q%pypy-ruUL(g?3hGRBW+=O300IR z2!ch3O=76k!hlicN+Ju;QU;s$1}ZU0-c5o*ijD~cokuFT>MVJ>!88Crtg18cs1~lk zi#F-oV(~*IX0K_QfJ9K8%;_rh94I>S_{ZPi-O{}Sonk#Hw3Y+2BHE`=iZ}%H6~h0# za7{L0hD8smGlohCie5tRp=@=7rAkQ0CejC%x3CbTLXzwqmRKr>?1kk9b1!pnEf&lU z^<3XYuIIRudG2RQ`a=!(92jI~>*c?lkjoz~^B1PHB=TOKoxle!3uZ2)wq8;wwOm|b z2@#k8BLmUlnB0Y~V@O5M66!6+V3zyaC^plG)3iCE_85Sh$Zj47Fj#G{G$YA?w(VBAFhU zotZ@aVT((Mj-!wZ;@g(mk%OgDLT(OihKT(x*semFYkjP7IWLyR+o((fdQ~$2{s@22IapRXXd@_m&`h_D*tM+WEQlZIVj6L4U1oy_vQg-OG;e0>(aBL! zHy&wJ#wR+)vecq2?ut?Aq1)NKw{hJaX6;gIxo*kPO0 z=di8&yx}rSt@df0NI9_!t?V@=?--bMEQ|LsWV_<*Ll99RQHWYJ!SxbcQQwAbBv}5r zBv3tMyJV$ii4x|CJapL1BXNJBH5pKu4+0r$ecq6wGUv+T&XQ^~*-qkC33ZcMrPU_P zr7{ZcEQ~fk?j%f=P&Z*zT5ZDcBGS?dezOdsw$g_%;%#}>-CnF;%VJ%h4b_xnfd4nP z8T4=^uha8!k{j^xXM%+a@Xb8bjQ$_RL;dlAkq5=@SIk!v?2d6nVW;c}7>{jT(5{_96_4!| zwA34tMGh87mDYi^2OOF@t^R`9>uu)GplN`rn~&L{j-Q8q$67BWY;yp>0{j&~o$`BQ;a8TzEOVVyK zonu*p09KB62>yA?o~zHsWN)ZWy&*=aJztSx4fHpp_nB_UGahhl_l<=QM zjY}UZ5KYK_oyL`pP1W!V4%s~Zhol4I#d5^Qk3dv`!IMV(M1)PA@OS~|5IfBdL(_K> zn>7nVPdUo0kwQIyDHeAvTM9)P5BZ9M@2jtbK9AJ4!t74m*Ly{a%XlFabiuGPJcp2b zbnvQ!tL|6YeGLsDB)?LLIwt#j*iyj%m59MZUg&(?&;cx>WmK)ds}fQH=UE(A0GmNd zVXNt*61t`8ns2{DqH$I%8JE)lBn)=qddH46eRm#*EQ#RZx6*29_XTnUySwBimR&Jj z+OgxYcwLZ?c{n>gNb3B8HRGm+u$nCl{i4y(z|74G_)oojgq_n>9ZjYH zw*4_}N6geCHjKpc&@_bH4_iT*A;p_mj#ZrGx8F3o98KB^rgj|`tSbVT#)C4Q%gyJD zs(2pASl8~2i1{!*pE~It%4Q4WWt2eR5k4tt021aiJw+Q%bmv2S!M8}D45^1NW`=p z>Q~?)*E2U(vz~LOtW~sj5oA2(cg0@ae3<_8{j2jERb$FkkRRFIF*n^*Z!a`xAun|l zq@sVVt$D7fY*3}fw6^s)A8^Q8ke<>+w#mchiz@j(E+;9O>p8Chg*B|T$`$niE~)l7 zthZ2YrPdM>nw><#e_28onTIODL&!CR1C}YgNJv6FZcrQyk5}-rtX(~i$$~&}19Apk zSYdWVnXJNfl~;RdyFs(_%%O^oJH%*h<-k=%q_AOe0 zUw|ZccI?{VBA^KS&UTeM8l;i|F-_$i0zV!!9bgI;b_U{(WhFB8?c@=tOeJD>mY&W@ zg@G1?rAZbyreabx#Y(%g%R=IAA(4lOU^ldxaZA(PqVOQ?xUW8f^66jcN+XX63EVxV zdSUD?@seDQM>!@m(X9>Ka!YDtQU}pd*Ihg;-DEc*VUh^8F%jc{irzjvF^%wQrZWuEdLPvRJZv>t;!*rQhS#$Fi@%h4g;L}n8KxF~o)d2`f4H2U zzk9t?zC)o&SC^VAS+>$_mD=}epMOv-J%s;?Le#J1Gw>GuJiNI=F_u3y2T{q|Of22 zl!M3e@{2WuU}2=(wy7qz zo(z%+M&~r95ykdKfmM!@M`a=gbSx8=7&$C4(z3_rA64lB2soTkmauQ<1&znH{f3IB zww94(3}@$cg+i{iok=77j!CD63kM@ba^vn(>+XV)GR(uM>|)fjql7wjZf3HEz%SLw zyBT)1uDF;Z1yZiv4VxK>>BNvybySLa0ODh}7|D5dBt(feRwLjyZt;XjknvmuY9BaL=nVi`2QW=NuQ^gHY=3AlW!NG2CX?f z^0-h=C~7*oUQCx1567PW+P6O1+rQjyPd~jFTF2wtvGws^efWKN+<$PNtLNsn=gsW- zXZ%1kPX;|u!F)w40AxU$zbBro$}GN#6C*-4zis&xO=A4G|H-)f_1G616XjEF-j|Nb zy|SKL@+p9uV4W?Sko@a~f@%xd20#plm3QN3#BWB^eJz!HY zetMtH*y$MmAjgN6(q(^gL}h-Ge0s_@fvImtmg1y<$~21As)nZxTw{>J&q?9nFMeL? zP98@3klGWoSxpx87P~54c`hVorrMdkX_Q*9z@k#2aX8Ts)o6&pv>aOJEuelKf4d~s z3!S1Ol%V#-p2c~4*!mBRQcZ8$FbuuxSMbn78*IrBXxgPHS}emb4CsJedXZ&1CMHvY zM9&L~{P$9F`UMolbg%`IkB^T}>o2j7#;g_w7VxX53>|p{{YRSwLI=_#-0g=h@Lpr? zkKN%?i%b2fJA+%>5HkD>g6s$rth*Z7QV1)vIg6Pp|>@VR|ao@MsH$U!fN~=1h^j2W98CuGcs2K%Ym`HlfsDd2E)QbANUHR z4%8K0G0>p82Zhuv6bs&A0bLW!qvj_&Hg=R=!@q+rBEdIUPu8~-mJ>EDX4>&)H(2sd zmaL3zbZ^!PIB#=)#WQyX{HLzA`AGCKS$=OM^I$+vO!^dDapHtZk!ma9s;`^{JZy-2 zOeAe^hhuOxW5-4xg1!%SReMIMM5k}pb?kgrF*9p9C&l&8mo*0$&-5jAFbDGprB-cg z+b|IR?q6{mDYn}z8DpQ4zOmA>!Po}fwu5^|oP(3DuDQmvWcQVgNU zk&*3zRd( ziA2L_b|u$^6etWm2`zJ+ea5^%H4TDNzvg!1$~35E-%C@Jrg@)QHNBh&jTw@hX;M|m z2fjoNnMx(_G)RJ!Cmt*pEgcjQRkb}5*Eq$4FzIP9__^G+CPyPN0STNO&LOp$m%lYt+%R3A>{P{!&;VGg0VjvGH>P>*+?R zxKo&Rwnh_qiUU56r*LvI;0N31WN6(-`!d2ictNoRf5D|YLluSBv+gCgSDbwe8>oLF zNj{x!yG?PV-JS?{SAuh|&HD@TCzG#>oW3j3+nIRVi9fhgekwY!%wTt`&?c}8V8tIu zXi{Khvj5n$#%G9jb}BJ<3KM>3F_dY_AMJ)6jYc~Qc0k{h!hTM_x-d5=)l+XEDj1^u zat3n|LXc=U0_oq4`Gt zI7A1&LSb63pRmsL9Q*<8T3c@$MHGJbuNVYX>|!TQnl=eZ(=;~{l$I*7;DMlOy*su? zS??~p1=|U&t@v%9d5=<${<&+jv@+r!O3e&2RETyJEWNVlD_OZo$fG|NCH(Xr*hgRP$J z4mC<_tBD*FYtVL1@CEO8bhxv3|74FraV_aUqv%5OkU>1^lJ1CN16>e0fIDD;XOCPR z!-EX2@j|U;X+!LR5s^iwJND4AEo@QvWqG!VPYJV5h{ZBh@m2OgnQ+1fTi}_ZJSbiSVdMvO)Ebt#$U5@RGSpJ%qBLdV0bLT|9u zB4}LjH5qkbL4tM4(wRq*hv|cup6YC|f#->o)!_YnN@E|=L-p4Z0>Vx9p##^xKo+cQ zN%pVLb%5WN=MR+exqS8%-SwArq4D__u|K}6sKqa{_Q%wKKgLFUf!5a6mKIw# zS6hqi)(SU!mz+a}g&;Y@##r_VNT-P869%^eXsz}Vz_ooZLVg22hOD`B zVWS;F38ZWx92>DLh1(_i8RWWYxLfVk@)F?PTnpeB6CAz=HHHO zp0UJFf?I93*4j%eHE+1DVQ1|?m{r3sd_`>LYb zf1dRKm>Te#XpS$4lYFW*;2@%uIOFr8)xh>M$0iCJ2u}`yf-QL8X}kppW>2EFfYXX| z+Yos@zgtEg8b1Ec9RZ*c{c{=(Gu{6riL!Z=q)|RCXHBGwIePq0qm^m&+skL4roT&> zt(VXK%xRzcJ1yYzAO2qnUNzt>SAzEfR-ExVP_zk=y9yNSMO=Li;I9Cs)W1bwio2F( zmZkZkzrYik>uTfdZ2yDA+fw;D+02s9^=GDZ{&HFfo-h1i;mR6rC=~d0?~yiiO#D{% z5}UVdWPg`tI}xXZyYY&a*3~(69oiLSUk%vu+`nTzU9Gf=wP(AUP6@aC?^sD!Dh-%h zvz@$C!rd%cK^@?+VYux1RLMy$9=|&x=b^fXF?zktLVevo4*|mVR zSOM!EF_4Hgglhq6sR9(=5Eh{Pb1ebvhAP-F*oqIpn2ss1WmT|lyj{<({T=Hx-py)w zk>3J5$#1u+p+yl5(Bz1&RPdZQI+&I+)@mu%W0s;tBP~!V9%;VH3CKASvx)FWBhB;> zwPS@yk0*X5&x;NqgwdFOTs!}9{!CMQm~en0jMwzzmJ6-(2UhZlQ)SaT!U0*FM{|SX zEINouq5+(ixaJzgEuoHai!dYP#spS8HWO$m1%y%Jr}wgY`8UNFD7+d-hlsv+QttxU zCx4-)MdI;6U7&f9uy_I(*^=8qI$n&zlG`DD%qRw~q?=$!6xfn3qO0P_7uh5B2*yQO zEE4C1(%50|X9_U#A!TxmF_6+xkv_VV$6}yM;Ogodh6e6wBa>#l-o)odSkni-KAz%dHDB9;MJvjGHUj_1o5XV+I!gpYZLoz`Ve#pFR$NTCry0AoCs+%l+8HRsQ?N^pvsS036s-B2RL%Jc)snDQw z^+l@dG&^+aW-9W7Y-b5aq)aFX39EaUWjvzNlteJ1)`CcgMJ>rr)5Jj0F7*J!hLw9? z&|Jm!x?iX>!w@7&f8jh6)gm%h*j9%$D5`SHtQc0l`Yrjf;&mG(cU8m>#V?< z?QYtjWKtVR8Bv!;dA(Xt?iU(6&2UnV6ga3km5id+pr1;}GMuw7m$oW8Csh(V6X&G0sosL(MEFu+Ya@k(iiR&Ouw*j{8qA}1zY#6jWl88#AKvGVPMgIE^DN?dk z+eLe+4xvNN$9r#v!^<~yQAg3m%Lrb=wBQ;tULw$1Gi5+#UX5f)&SaEF>Up59;@W@R;C&WO@Mx{uJ zRu1t+6bV+LCK4T^*^R7fDNq>tCA2JY_8!X`)hLP@eawt@DgqwX(GSdTzol4PR? zW+h);tGubmqB|JbDma;11ovn_VXaV;l?DbHT|EkSs=-KDB2ZROnGsP3B~)j^8dH$s zKU1LzuSoRDWt`m^RLn?qo#zU3X7JLgEb=ptaO^})OQ!V}=A#j!|01A|h{9ye6fmXO zW*F8+wN|y_Yx04UK=}$D=A+%CG{_&~y45nF{$-U9`7rN;T#GhqucdeKNt-40BDJVU zZB<~gNU4NIHK~bPza2P!olwh zW?V10pbh7oz#9TO1xqQ*qYY9p9S0rld>QKJ<8ZA5&@Il^VSW(! z-{>yB$4X-U3p=$_;lLieEx@iJ^*`udgg&7d;7=BwYLt3$}m~kF`P2{x@a!?*8^Uk|9Mm$ zD!G3jV!w71>%eUzDf1lFBBZp`PyL|2NZZGRD4tSgyL>4Sv;$hYfuIZ-6FT5;o3MO)#A5tQ`wcknM6WiN0yS6V_XSsU| zx-s+={SVbwZF3qo5dO}uSTiIX8G`#6zorhEcqWZKhNjaA8AjX*PBKePTDVF65mN$Y2Th_wRd`v&+=OB_(cs~z+fgcOhn27pE*+ovI&?OhyH3l$>a*> z;=kFHcTkw*qqqfc*jR80x0&HG7F@yU#Lir5x2F?l^K&o%CR6sfNs*=yXZcEr>C6C= z38W(CQlnxy$<&+~k;yjXDQ7sh5PWI(y}Q2Zz3=zvC~KveF#}7cAraarF)j>GU@6QD zSI`5U6)NVaD6tkF*J_f@xke{~N5iXZo@bIvgKtu2DIdP&Y0lM2tybtmVmF1!i!gMf zYiYQe;PEF<+x)~`w+P& z0yKS2P__Tnw3uUT^_G^Hr70Vy{Hr90H)uFU&cG|UeR~UG=;OJZamg3ll0sS1>1@u+ zBfs&>EO>w|5Co(WG70^`>zm&PWIVq0?(Y0i$M%^QV`LeUPsW56vLM<*AT->mZ5yCA z5Ub=A8eAzn^9;zVc5rgTzj8@P0}b?OoM~ZJIK8Ey+x^hH`}L-OJ@|8kZ}txkd#!F6 zd26amHvPl|q9Y5B5x+;4>&VM>yLPtK+7PCnnW=0E5-Y~=T{abQU`N#40e2>4W?;;1 zIv3~3US?@GkC&9*tTE#aX z@PI+Y+U}CF?Pt01tbBWUKINuIiE=xm-AWs-zT&C0mFlG3=mOH`xXq5EX2QqCbQGk? zhpOd7p$)Tr*dEzQVrTG?o}c!H;bZW3?n z&vewP!@STo%WFy_y=k!?JZQV&R4lmcG}|y5{ni`2y?H$vwV?{RHeh^4E<6T}@fPpT zG5O}0WJN#z@(C_3EMXq`+3=VlLZP!>vD0v}Gp?I41)ge78XxI-N}|@P{qCwlEVl>? zztq~+x<6mna=}uOyz*ID^D(5)ON0XJub+gyJ5Xs@^IDL=tdx_*MNyKo+rm>-HQws;zwR5Cdz6S`l-^op%# z)Pf6W`Y3@y4C%0zuA0z=fXrtaO1T69N|yj3rXt^lO7wg80yB_M=ue)W^DIA@a_>@m zuSW;6e6%+T&!5}k07qwM{)#`0({zKgr&j*_nLa&sZ_Pc(bm#7|PjOQy8N6~beto;u zvn1Z#;@R&O`j;T@1!Brm8-3)q+_*0V+bsI(L*lkbNea@&+2xtoZ5Zu7CKx7OzWj%) z%+8h{6crPGyvqz_&Ds1@G?c+e8^X}JZ+(w!3v13@Rt~nMbXVW~@2%vpZ&M+W!~A{DDOpKaSR|>;_I)g2jx={gmS8{OlaeNTuZOO-lfM zxC#y>qg>n3?*E)EvCm8hTGXK45Fs-zCKHa8mA=gnUYP9-L%yS7z=NiWn#Awz8N6W| z?JW`<&ge2A(_5R~mAP5p7l8>|mRf7$&>&QUP`wc!*2$;<8Sj_{GkhJ(irppg@rgKc zqb(HqT;SSB@jOMS;Dv=3RC73_huyl5I$th@#NsJTlEn`PX@QV<&*pg1AGV_D)6gt6 zKGgmN?Oj`s+(veOpI=cD# zk!Rr`rYZS4D``56X-;-V?9OKeud_bPrhB6Nvn*%Ljpj*0hS}^UkH?deglR;Qcu3O% zI!;GfJ`Kw_O9L`XXbAT%V|vBvefj+G>5ErSu_;DnISEU06&56li!zS~^O8p7DlRAR z1V&I~^L$95qli(wv9gkeQ(C|v)QHXwv*|2LXA_61F5G~ZrXnHNpPo?Z{> z49Pruo?eDY93AB2`4md12ivV%IG(3vJf*E`K4UB@X@2%{Ue4yFx^7?b=Xp4rg@c4z zEj&-*pAm3qQB%C0ynIE6NI1XQvMT@5Is_?XV)AvKUB(eD$b?NrLCOqgc$S1WBqSwL zEhX@?a9&P8s@h7Ss&MOXmTa`N&kDEqLv>{ri^pwOe{LaMQkT;-m; zJU)7Q+<*DglUL7=p8CiWrJlbKg@7)j)Po5PBbuMYWkSvR4@Mb?hiHhn#DK zS1#7Y-3?dM1@wA)?rR~>u6)(;k*I4n3-a*GEG@$Xo{qw#aFBPHCG%+t1}-Wm1sR6J z3H9_sMlk6|@vw60_js(!!36`EWc3 z8__srRWCc}_tJ5oF=p>|3hvd}eNlqJ8VW8Iw$kJ@1<3{vY6{?NJ^<$oK09S5p7i@n z3G?}|>{=5lC$GmUa_fVi2k4I1_V`0+-kf9nfEn%HD`+y>+7i_DwEFll9zq-ZI!@z~ zPg}RQt;)YyvAc$eW5v3ih>pT}Qg%e~H#O$IqGbVYhIK@sG8-wbHsj}Vn%rkX!O?pj5 zy3Wa!>dN}sm6tgM+;~a#dYbLfyKWR@TtW=zIoP?fkwLAbxF)_`dn`I#Vn{9KOt_c- zrBioUIm#}Gs&rV-!E;;(ZhaNw*In$XUhVw7&NJu7i1C7VYBTluNEE__B&r$=Ga!KJ zd4IgQagq%Hn!Qu0Y2szGEH&_Qe_s}=7qr-R69LIU@4 z3Q(5z z$%RqG+TyLe{Vd7$8fdFbE+Y>OF8uHqS>7HidUun$Ecv`Uhdsgjy4Bz?gd$)pv)nTT z9OWrf5cs7{gqwP6cuYbyX+*;OrpUYI=^S9V46J!kqKOYvt{OUem7`GOTkkZQ12rsD z$@oMqH9ZGWgzH}<5IhdLCWZh5wq=piH6Ai4swa1MEa=(NYKmJr4t>g9p?Lp<*n19@ zbKo^eG0EmhB<4hRgU+6rf94Q|fSb@INaOFKK-v3#|Es4bU%Wi(_dUj(iLqP=@KBUT zZl#kLCN#`t9Ux{nPr{M{4-YdKUANh3xb@c{pu4QREafv;@7z-bq_Rp422(mVhswSu zkH!M!-F>;tEb-DUn}#1@)!4dD3$(u%GM`oP{AI}0wgG-CWPYK-``tm7C04w@%;yWZ zs+ZR4E=lsSG*@gH3l@zll5Mn}UWZcv)?3zX{H(5-AN#uD{;J;2Yx4ZnlNUsNUK2hS z_UAP@;G1CDt@lIE|L$7& zwkF&)b8qdI$xnsT4Dbp-7~>z{`q@&MEtB~pyJ6M%>4W%O!^l=YuD+U(p)t6n0Ga;5 zC2^e2X`L4Qyz%zPW7pU(j;e;moMTt$4=+3&5}FiL4vE(SM%zO>#AQA#Q1n7<83)Vd zViu;bsNLHokD933*dQ;mY!;w==PU;W)|$*T-*2F-^)PW;tSwK?JJpr5ODU!tZcb@F zrj}#|AYno?&I8?}H!o`?qIqHNuBs)`icZ1jc{ZOFRWNlhkCTW^O>G(F>O-_GB1Wn` zqnEhgr~o>-S5w|?z1*`nFA(5VF{A`MV+PUK87v zAEx3nMoat>u>64iW=3_nFSY~CB%3YQU6BYA_*+%VvF`%cTg;v&zQ;w%7B>s;0ipBJI~gF5z|+|J+LD`2Xp9`{^@GP16J}o@d{LEkbyz3v1e#wF>GZ zN0b4N<)}R+IDcdz$M74GgO3(XOj`5`6S9bU7hyi!;SNw30&YvGkWj~x*TFVz9j%d9 zLkkHF)A_9H3z%3c?O%av3tFxfpkrbjORq*(9qSlt@gh>3tksLbJ+^6sI}s{j#7Jxm zh!I>6aMHTVIVYaEqO_YFCJZq=RY4;wdCr|^;s%NXSP_b_y*;B(*dttK7WTsHo~(yJ zp1DbR{YYHbBsb3r-2K7kx}H=RH-$q{(@CS=Y>i6CEO7SWEZHQSYEcmo?}Uy@Y!rS@ z<4F8s+2;70FZrr52O62DKQS*i&C8F^^=%ZjG;;Zk_d%;g%|r9j8p%hkX;oRd@1Nwy z)(GqoJ**S`-e~#My!^3w`N_Fw$7~wr7qBwet@<{0?TL))vh-!SH%xYf-fxrDRdKJj zUJ)&?@1kAl=X6HF5Szp0D&$P?RpDXFv1rXI$|^IoMjoO^QyfFbB^c=q)1!SO_jYCE zv>v9%yI<0DTuy)q{6xjp7TbmG%B!4CvrBqJhgr^!dvqVDE#=BoxVM7?qRK`Rn8@u5 z-4X|qKHJp_j(8{(Ppvu}&u9bNgZYoAF*D>wdu!xlXTZti3a?y;0Agr&=U(99MW<8a zgVx_dR?41>`2d7dJPgQYAla~Hk-kPg>aBOy*NxpeOPDIYyejd$(Jm%Wz>>Oab5v(u zKpr{fh9OfX*waBjq9y1@pQghs0%exX1;T5yfV*>!ly383q7EkEkX8*?>Z9|8Of2PjlO<5|JJ_RG1go_qiwYuRBA7HL^4)u>x0<0 zUm=;WZgT-zk;_!Mqina|+8iz0&(PaNElTcf*P2Dacg719m9Z3P%e>7GgBkI3)wA2A zX#};@GnL9nW?_VWrJbolrs)cyWemEs!)vNo_j0>NW&-T*gJahumS^zowgZaRejMw- zyRm~$?HwKR&=%E=4NO&HTa+q2l%4s_k|evrp$aAG@?~!!PM%?ly>+80rB`{F;+BeV z6szQ+5yylUWWNA+`1pd*Nm@15{-%EP>A7kiGYY3 z79sB%K~cq`GoT`&DX)VpM(9!I0y6W4RCk_zE$du|l>{%1rFAaMEtcM$3)?$4_+@R4 zENR7c6;Ld!{dwF3~Yq5o;6%PQz!c89lTI5_H0W zlUDs}ezUe^-_k^glLyX{?3rV$?nTC{MNe){LKN70vz(6mK=*Lc?QHzsPWS9;^)>#p zdwO;ioUd;0_de|Ht*`E!ZB&ooe|CR=@4-f=8m``#*h(<_bJ~ZYj!bH!Q+$@(tuL-r zk|bB*u5RZ2v2Zr}Nm}=`UFVUxBmRfgyLc?FE;6Je{4+I`*~R z+54c_+1TsUD|y2DFc`Mt5CRBYVs-z3G(pvtRICywS(fn8&2?-|9U3=jY)Rs1yekfW zZV%MYyO8Z^Xvv{Sd+H}_@%DhJLYg8wMFn*F$qi;MrJfUzw&}DGJNhe)qkJfVWi=ud zB@Prt{>9*-Og|uL?HKxqy)7gz%*n*dmU_L0{?QW78qeUIvr{W~h+zu2gHhH+9r(<*ST3nXaSs%K9;6Y9rvk0b z?Sqw)>|1D&C1>s__rv(Q&pgBZv-G~#*)-+3)J8^&VK`%Zt?_i0WD)IR+ks3#gQ1;T zYNxXBJG|~m9>$ou|0En<6!2uy0h~*(^~S^mxFW`qvrVF;(m#33K#&}e(~e+fM@g(H zaOZ66T$Fco&W`&*?)G_?UEXW@J-I)0)mCdm_u8l-b zl;xblyLC443wvkBFC&r|5m6HKx5x<FLmOJ<0GJEr1-$oTjX^{id zcK68Z*Thv?kZ%=N#5U%-vava5e3aozFNKT0s z^Hs{VgH^{jbg4labFf9uz&c#gykIe}Up4q435}#?c=GtFWJ=tNZG=p0ClU&5>CP7Q zLZF@VW>>VFbX0?J)?1Y2Z46B%Qr~@Scbk6v+{84ADq6e&s0E16ae`_~z4A$e%@S4$ zxFujz3~mO8*)KDBB+!|N+?XZpIy7KqO!s=V0Flv(JzW6nbb_}LlpRD7JJg5h(9S<{ zsT1}h(V|8QSoqClyW?qC&E3hfJVryF6%+~)d*K*=8zSO}5JZsO5>BXgD3P54EWBqj zn^#%}{MA+kBCgH6F;v6)uz)=Wnjib&MG=0Ft>$$-3vxs21{-7enF z2EU-gQoB8+d`ldVxH`J zT|IOF;Q*05-Dx4-23ckS9P7CV9QhFEJY^17_TyX`)oy_)9D>gVapkkqscL;>v z+5Ca*YP)Y2DI&d*QA53^hTkFlg$0zoKZU)qhUsq2&Q{0v>Ql-5kNJ)TPoZven9x;g zwJEgNC}BOa<4s<6O|EkixN`^5lFau7uLSowFNyFqQhi-gJ3*7v-#e%$YpIc!ebnIAzlK9vtlA;EnKr;lc8F$vBeH9kDYI90IPeQ0gH#b%6lO~in4YX@3j zeb`~!9 zOj+YRawS6g>f9w)`};Z?GYI8*RPsh(H0wAj)G||MAKy&9s92y;!UD$XssS4$fNsJO zZancb3Ak%eW<;Fl=YR2qL}3{&f(!Bm0JfwwD5~Yxy}4=C`6DQgBUz*VW z1cV37^0QY^qA*@zroTwtDrZPDd-rzrvOir@JG-4;z3k7#DLA7fag{vc8xh7ye52&H zA?4FqI4qmTAPTh}Kx_J2lkY0%G|rt53g1wfUHp6=N3?mgRk_v!UVG0oW{lZ*eF%)# zGu%OTjc?1c2kL0lGpHZF`GeNO`r(^jJIOU(+W@70gUQc7eDg>A>!118AM>w&;9q~n zzy6hfeZ#;0(m%+fY(C&G278O4ek*8LV#MG639quuz`y0g`IZm$+dt)Bf5*T6ihunh z|N3+O_1FCCZ}`_g@vpykb3>TEQ-d7!cZ?8P+8i=pE7YlM6_4Ol*H%Gc5M;_3yReFg zzo)mx(a0Fpi5IWbtJeFq?Do3;Xf0y%tV-}{ugaY_LmS6m4B4{(1V?4v`34pKZIs%Q z&vhn61q`8v6HNRc{fj|wR{k5sSzA-vI23-*uh25h#3=znANIi^P$$0CS1(0qMUWmJR}(2Ehu>~`#xU1yZH0=LbEbj zssJnWfF<&&RDzBpMSS!?RRAksf#i|!2nh0x#s`fC!!shmh|HqlJ3gCpMwo&pCV5DP ze~@raM6c0^WF6VXqetdi&EXYW;E?*KVj9hWB3tNf&EX@TQg7>hH<6l0D*1E86cH1! zsHcNyy!;kNDgaM^APdUS83*qkebdilczipZVH&1EIcRtxmJ)pud@6{PSInm#R$Mf` zHxPX0f-bPqE@V=n%bU;Fr+2rgj|OH{e_Bk3D{P_uF>0YEO&K&%6I?9;EX`J@NIhbF zgqfu2t{mlxbV0Rwk}7{mfq0|GcJ}kRWg3t z>0{+}-)pSJkpuOfd#@s;N_9deKzeN4~HQhhvYb+Iap%} z92NCaPk>s|!W4=go~=e`_GQIm7Hy-__YCi^bnV?cj>Q5^hSQ9KPLN|<(eL+DecCw=hD)Yq!p|q5(~L55 zMx?qli%z?j?RlzVUr@Rvr)<=qwb$yP)^Mo5f9S7+*1c7dWwUYBXkmUjCE*1pyg|ok z=<$fDGHFp!6$t)-7<9s_e&e*RBdF2=UJwMH)4fxnH#syJt#X*!Z`mD~csz@MB;mw$ zrzCOvIhjyKjl?u~z2e?#K-E_W8;i`h_R5sok`+H7R`4eU$WtlNZ;6s-r10V@mh)0l z6!&X0P7-w;(>W(;VkH|Z@*!E(W@KfzNCRWcJjBZywY7n<;wy#Y{Mw+e-so)5R6{cF zN#a+7aD8NPTImFl(+h`!V1J1cUK`M6^N%gOrYAtDt5~)~--fAG-&s`{0C>{V^!qDz zoh#=~8|`kuc1;c>80(|%3u1oiFEH~+A?o$v#_=A<7UAE1Vu%Bny%|?%Nfa6r!ZyV^ zFF%GYxJjOakA?1hPO0h%q9VcUxbarO+BS%V`n$&Bs0Jj@QL7edd4bylYInB+QZInh zCDd*i6iSFWGZhM7VS-7svKDs}!+e`M^D9xfeZ?twGq;kW_d!raLeQ&KrYX&^_K3Vs zdr{JGC%Sf`DP4di`oLNWNQ}N@pff|IEhx#no5jY~ztcczF~umQQcUwtj(!6}d5=y` z%;;C!T`?TrVE_$y=o5jmse7Y&<`QB?;0WtO3y~bYLcqe3M@VtR;UFcb4-*bU_O+b%xHq09>-U;9Jv@<~W%R8#6n5{2{|LCtm*NK<8=1Jh^3=2ypIElDiluq8@* zAk9q9s*J^$!g0=Zzg~PkyScr(`+M})m#d4r_>i++lfZ>v&2 zX}>Gb7A*QzDs+-j8 zLYyVEUoXgJ@9n~PaDX;p!%dN;uXEv1=ONTowtT?LHC~>+Wv$^BKV7($&aRp0&`Itp z&n;if^`5Iqg*uydo?o1OdH;Vb$lVFL6_=bg=x*^jh z=MzL=+S)=|$gJCI^Sb_g;i5^%v9eE6f=A4EX4Dhh98dKjwhgg5>~_2MYEtZtHQmXL zZ=URu2WzfqWs|eHgl>Wz3XN-j@)=^H_j+Cnbz`TXlf~9Oad$b zTGnLr?_GdbiBhdJE*~Ti+{@Xsi(QP)(kOMD{)q!8@FijjLKY*?f9gvOA_N^F%+^UL z_?q^DM}LW@By8lppbMA&149nCLL(0tN*IN9=UnAFr-4W&h5V(E)?ApyF$5xAOSX(O z_>v%tIj)Uo*jbkjCiK-V?)>)w{mBnEo-F8dDafj(iO(U%`SYE!jh+aRDo) zBl9n=Db64!mx6Sle7+=x4DpyDj}8-}gwi5@sPZZ8CL362>Qz%?8jK?CBU(DjC;+YPGjoOp4)Tl5ckDIg8_Y0B9$_A{>~$=VLXA(lOMMWXV=}G z5x+M;3(R*kHWIH;zHj5)v|+qhWJhH3z)|;DQgQ)JGP6xWsvUXl#aom5p5M+5z-c$ROC;- z#+s(xnLGe(FTN9RJz_?N%x z<72Mz9IDS#lbrgiyEoYVMnAOFHqOTR2gO`@Q`<-u|DR9MP@a{%F*eEU$(12McBo1w zSzvc-3sWv3x3LOY(yC>Z+sxrA*R&+}4lWGoMfCH8<%b3DMQ%><{VU<(Tau2uKv5M9m|dfy8OV01?W3l}srkbN-f*DhGcB&ZD?eZbu2sS1N$` zDOy%@aQbyYVzePhZrO_U$>O8hRKv`0yum z7A@22h$|v&7;BwLOr&$yhG^t>ze791kI0iG5atveT;e2En)PBoChgcmPgOozLkL+Y zF8FN!jM4;5B`@6xU5QL{FzT?@xKADy4V-X}4j8_{rVkn;3;Ss1#5dk=M#vv%qeB*zbpz)syMfthpb=B9Ph!0*?ek_^Bosit}S)Cn~}{V$M@g*I5o znFGa3u-7ux*OIOvgfTECNJ=qRMfe{2CYA7A&kYG9I_3qmcjjj_o$cp=6#+r!@0M!$ua| zqrL;(r8VAz(&^U{GK`41q z9!o)m`lO~y8H0WMMmBY=XS=h7cL?xT+zagKu*4?mHdR3FcafpB5YBLM+@uC z)3BGp8rd6>!rYIPX=3aU1N>elIa4Y(kZa0RN%Cw!iJ92P2`ZxxNn_xOILGHuW{)2|jJRr57*@Vdyix-=~{ZF4@H_!X&4Lw zuQc#ymIF3m^r`zrjP&lv!6E6byhy%U2PRe=8&)ptscEiych@*j&FD(7xU!k^u<124 z*M9`2Sovtd^D!$YF7paB0-0m&Pfuz34uXkp+cb^naCNQc_KWD@U&*wZ!w2|PDJLqztI6c})6vDnWCGH= z$0h+tU3|Zzk09M=0ml?~yde-jgV?8OyroMt650IM&##)3IXfG(3Ij?g0K5QStf+`GVYF{C6ms6Sx z`A2|fV+7^3AJQBa1A=7U>a!RL!(+hT22ONrpFG&-T@HhxZ^U7+Ka$_qaA|<4XPsJK z!|DZOr;t!YC9IKE!Q04syYnU^fqntb+nF^cB^Uv%6nj@9hK&_5-zx)&;vz+CocY(O zMv(w_35DmQE;J#_#1~&_B?Wl1qqWIrh$Gu?_jF`}b*F$Ab0uMBt-Wly_*^#~$N3V| zaM{_Q5Q_z$A>%*@m{Z8p=mU+zfY%VVZ*^1aCF}xs4v_3(UhIxWd?O*?31%otxf8H1 zh+lEAMb5=9*xL}sC|(njxsF9vYg!Wnh}}t zEd!3JfKvq+80+)u5(R)I;XMt&8~X))lbWOHl+2Uc zd5T-XfKwHHz>SK>l)9b-0;;zo5e696%%No%%u_&cv@YMKWfhit#Z)ZT>?(BHeVxZ}7 z$%+z|+-6Zq=AeTVH{2o;&oM{h+dIq5Q+DVu2K+Hs;k_8ER;YBVF!9!ocR&!t*1RZk zhC0g040OQ|Rz>%|j9VfeL7wxdl85^_60Xclb#^_^GJjmV z8xp$}wt3V88kjAzD7L%-)$8MO(+7HeMWQaYTRHTAz43WX;5Yg_69gQ}eYu2xu${H| z2CMj*7u<8wh*jwL!Z1ia6Nhpr05dF>AP3OHt}(9&l%^iwonHaEiSGRPqh_K$;!ct& zh7BGu(C1kk72xC)d=CKXy-Q0>hJLVl=d&h^3_$un3UUNF*8PxtfTxrEJ`>MgGXal; zys#Hvy}Rb=CwQa62Y7|}5q!{Iv{o~5EVC;Nw*6K-gQ<1Znx!dvbj(HUcN?#3cg=zz znqvpZxgF$EL8s zYD+`@t#Q_6kgAtXC6+>k;x^Y&obZ)UxKh6cjVtVU?UxPyfT5mZb_6*JIKv`JGK_lY ztqd2a1R%D=c*lq9nq79S0{}|h@L5&p6%{A3Fk0lSI;SyAkUpMbCQqmT#I>aX z9zL^GdGHX@)msDn;enTpj?S2~>oFdXBbTf5#m!_&ap^iyFU<&o!G6Hc>GaWp>msBO(jssc zEN!qVDl0a@V_9c`y=Qa@c*@WNnO_v?<^9cZ}*9Eb@_v0s0&HFPU@|Xsvn4Ic&hNRfYn~yL?rIgJo&t#w@D^L-7>qwM3fImLOQ%1 zlB=V5K~L!QBLA?&wQIlClO3$$!whPT!;g%9(a?D*HKq&THf`6YZ}b44&IhqBMPk1p+s|`dpA_ z?pn3dP__N!SELy}12teF*q^6|!O$ww?Cy%y!(|yIDVP*r4a1^m9;*Du$i)U8y8FBw zi-Y@!P$C9FRNxkEQuc1X@$wL?EBM(m!g7+}!KyhZ3lH1k&NoOpx`nK#y#Qv`6zX>M z5xZK3MrGKk-nME%?bAqwx7A^B)rQBT7GT2MRB%9`0!NhI%WqVu18mBG>H+u$FFGtn zG2obmYRUl#25uo=F(@1P%jC_bkGX%VnAtO?hfIfi6RwHtLW3|>wY9495Bc0D+vKgg z*i*DM19fi47%aG@`@d1#ijl|dnuB<=GGF-50(O+}`7v-=@~c}|9dGhH72>PZZZtfc ziOpYedYsf>?79DsXARx+YOT8vW*Wm8)|eG%^xG_*TgrGWvf}Z{+4<@5<(Kn+PcBZs z9-SY-ug;becq@!KnLyjgWEhNw!_m1EJsaI5*+_85X&OS~z%7spmGSFFSe)g-ksCln z3cxETRs{HVSI{VdZZi3J_URNiNOuP0kKWMNs}{v6Czd@jzGZ-caxzUy+>-K;X%B$+ zu0rH@pvLk+rjUnh(0u@dL5tYh0@=bnvj;kaU+jZd0%#6&Wxgk+aA7_aKT5%WvwGSa zYC+%&!LkY@S@Vf-nL(7f3;o=;9D}yf3G0ZDes~l@{)^6zuD^+dKW-DXsZx{HocWRG zYW1rR?lDA%qNc`eBSaYdBjXCIa`bj;Ac0Zx)&X8ATx=PbZvBUyzy8TS67n6wT(g>Q zX-}&_c$4B+75$%#DH>yU^smGt4-z>i1L}s|=I=37H%!U%Vw7*wMB?&8OK57gc=byh zN6mY2`7%jUyfeg0UD}l=3=@(fX(OV54A1bnk{>y>vQx_ zlcQUP+?&+SzN-L#Up9e<0q{lqoB>uvf9nO9i{JS9Qa^foLvaNF z!O^|#Wt`spCi0KV`kF4T$U!Ess1{!m8REoOSly;mBG+8VT6d&syL+dYF`H9JbKssEotd*Pp*mPQQHO zjBWjjG(G*whkM%cMM}>m$&;&HUciSjIx8ycDb$643oNz7;x-LA8+}n%F6UUx;*0M> zI|ggJ9Hb5W-e{69S<@O_?Citm(dmcdle1%aTDse>EcNW-$Q}psM6akwCih7;g+z7| z7ZVuBa|D)Kg54C4z1r(RceK#gEy(F2aL(=2*Ds1LRqeb~6|A6fGD~pppq4NKGc;Y% zQeIKu6-H60@ME)qj>0k5z|rT>(9|26gD^Qhz7GQB@v69R7MmW?V>3@pqVZMvX9C38 zwdRF4u@+5TGe9wRD0yITv_^?rSpo0Rrt4#bO1^H?|CR(gPF^CWg6i?lfPjoKI;%}K z^#_Dlw5TJf?1{TQcxWP;&G1efgi36f<6p9nJb&iK$u|h&i|}3u#nX0-jX)gt>+}Fa&O2oZTt_dlihCHFbsw7{S;i0p-#~y50I|QP_#gSt{BkWbw!}a zbSzYs43Tc)6?ykj%FmK?&CRBp1QaQL=a9bm(o{{B4bL(-gCCV4D2+vs-$n%nUjkPM z4_#e)*GWu2s~HX?Ip*iO4>xLR(7|`l=(NEA7iEf!X;m}OzP?=N-}sQ8D_d(p`=$$K zRxv17fHfK&Nn=;~P%AdxokL?$N$kboJk{OZUR~cmT*s#pC0B}Jt_TW49L%(3EMRW9 zk{eM#z6~0sQIUv;S>{xYBqFwoeqQ;y@eUo!KS$nTjMPGO=T(7Wlw~a)%f4P{Y$ENZ z?%wl_Z(Xsy7)5uJ{I5W!7EMBwQo*Jk(2{X8D3xX(3=*&x8;F%-qj;N5VAU^UyN&r{ z)p8|FN4C)jd&`xkXtCg{vaSStU6_JcDcJ1~=L!zujCc)mttz!(r ziP>uga++XXB4KaKE@IG*jMHl{4!Ais{qGz^9dua`$r zDn)tRJQ-gvf*-aI$Zc@)H4$=t$nuy}{KnaW2Ga zVn?2j41EBsVxUoI)L47e(GTC7tG zOvaE2j?&P@GEq8bRw&tqB11;8jliux_xv=T%oY<@%Cod7v#@0bVqvTntI}c&TVYem zkOHGh&5y;wNS31^5w)V9W0e<5qO|lUjmpqPa$@wXSd6+K1SK(;8}0Iz35h3v zPtu}Js9fKpF4vsAaV(ssWA&M`Q&q~iPV`+5yh-k2L!>>9+M!hr4CafM&cg$RtE-PK z7_ri(Wb2Ds2?^trWn{-dyIq(2-DsUNksaI63pm9L)Eds@g2>79oTxj*NupL7yazz5 z&|b?zF}F3rmEgM@F-U_Q8Z|hJ9lBZB%(AUCAVR-eJ3*7OaRl5rSd z*_6mCe$>nicb7-}mP2XR4Bms`{t#Si6KJZzJA)KuFf|-HogC8z^d7auUL5XA-OcrS zv%BBqR)uABB?s9j9KRYSrW_AXh;h=RyNFeroS!g#I}=?~&0Wugl;n#d zd(4qe7~Qb0F)WlC;xEwSy*L5iyc+DYxUpczY0CrEpNT~_qik!Xhh$}AcU(Dwwbfpf zE<=9JOnI%^PCGwtc&;2J3{95zpNQ)*tlkvJDgE=ALIy<8vZI2Z9phtq6)+8f#&%z` z$p+p>_)f|ZH!pWTRN}E%PbTM}#WcyLQ443;mU9vQh1}Yrd5++ke*^(v#p?JS&x+aq zIMwQSYUqU%>_eq!f0VejA$RZB2u2Yn@_A zUw|YCWQn%b$)YAwNrSGxXFp_rY{wT#Bt^gHVAY1Fy2BZ(Imw=dP^A2;}n1@tWlqV=lW1Lf1IG>Vo5wVoyLsVoqg0Y(v z-wM6gKfQQ4K6}Zbgq3U_F?1VIl%$lE>7-&fLANQJ!wh&pNma%e7D|N0PX>cLT3`xJ zG#*{PAd7 z?@>9c7BF`Ym18_j^K=!nG^Nu*DnKrX&HDJ}HAG_nWk{Ml<`$wEW|o)7Bo-kGt#P!OG~c(Lq08gbH?^ohmiYX$nUDqALpdaxE)@n( zw|9ae3f`TcjD85Vb`6EmepD1-^NV?!C84$!58a*;iAx+Y{4&E5uN4Zm08YcxwJqdG zr2y>#Ze#>*4GV_}NAVo#){XWdf^}BWa0|f!YL?j2f+FnVC#g2435#LTuokK}rpE4y z>!y8O(Rm{Bvd?uTv6|yD&1<)%>WWUcmULW}sJ5ub-4e5^%!MyXxOPaz4Js@h?YCa`urFXB3eS{>>U z?9t|R{UQ4EG)Zu7Af)t_7=%PQKu^&#wBz-}2u($SAp5da3iJfVDk`!XE~_eylyM3y zbsM`yI)~~z2A&LoN3Tm)Mp(Jt?0Ux;H&3(y8+ND-09AnKk9X(MOjIeOD}d6&@FLuK zICE?BQn!nsQ+tAU<6p+7AI1TC zw6|xtsI!87=GAIGUh$xq*|5Uu?{P_GBDs#R$A}xLX=$HVU*9{BTkyD z7~SC%bB!9u-C??HzTk6Lb|B1Pxb>QYan%IG6#$=s59q0#OZdA;2fa#b9Z+AFml7Wd ziKhepd5pfmjem~IlqDoq7;y3De~OYY9P_7|hOA_&O|Wr&42@sy6?KS2e^p=JD1__c zYRje|dHim{0NkFu``%O6>6W}AhT8YqgS9!-e+ylwGg?#B^X9TP$6P&{_O!EJ2UWdx z+_fL>O%E3+)Qdon0#uZP1J!G-*FBA+d%D4gyXxvbtwx}6xvlNOZP|8yOGJ)D)uSj; zE25Yez!K+(5&ojhhjRHIY(y))fzsH<%3^lj#PXVnHYEiAK1A(kx+uUvoV*pYcAQ!g zG3B5lbK^J!mEA`Dv%~f6vQ}Z&C&+D%%i3nRMTo^@sc(=~$7OUJ?nr*%+e#7m*aUM) z(9A^88-GC*o%9i;BwzbaD+Z?=vW#1|>&!4kVl=wJz;B_I0v%(#HQqxiYr4?%-Dt?< z6CBAEo^Z`4oJP%iIZYaWgkKvEkY@@48*+VqS?^Q7xQWVZ{F&DV zpO`8VR~*u}8UT5wxEhd!?=4>X%FCVl(J6LXB;7Gy9^&q^Q>(g4GSsHs^9jaRgsi^I z(E|P#$`5gzqh-Y>7>$B$<%6gG6ojWXWhHzGbTxBq=>P>B?GOD?h+lvO-OINW zQ17IQ*F37Qg^9s7ttMcAXZ0c48A^CNX_ms%8ee;=1ShyBqoCePKEjKF z-L*i@ciQ{WS!X}iNozLvx6@nwS>f@=$ibA3@hoD|By;BAT3E>5a~~7sWEmOtBk80O ztgK~K$eooHU4`&o+FGsa(_3R%Q@M7}(iVsm!Q#JgZMYkT?O+2rcD}#q`a1X&aZbW8id-`fyvRzkB({YtdIXbqr<_uX_{sAisU*$X8)jsAKyyC|NTc`^)t2+94`JsYmCMa zZ70gut`suOL`qi5ZO#?rno3SmOI4T>rNAk$qy_&S{5=5tvV4VyNH13!-rs%v_4;l( zz5a7D`*eLXfe{Rs>r|{rIz*_}U$Q5nDI5`(w%W;|KMlJ|#P)Xq#Tc(sOZ`5kmKs+YBtPqtEH|r&^UeV zu6j-N^w2KPKXdw8L1r;{rbrl#MlDdvcRU?9jH`@>+M&|(E6fEP^GT|6$=h*jxZS=N z7m8-j7xiwp3oIPJtGrTnKeo6^%sr*)M2f9~z7_P1m3pp9vFO6wQT9(vDXP5&yt%!& z@Zs%SsCyJ6R5~=-vG9T8w0dIa*Zy*v>0T&wRGd?UQ!=S+aJ){<( z;PMhW(bngnSPBRBx;olDxn(|_viYKaSj+Ruff$K(%)bGedaYr<>~xJ8vReAIF8Od~ z*O9{;zV4KS36#D{$Z8@CCLi!UcNf~Y+PW?ITeoIqg^KqZx$J8hqm*kK&wIKE&u_`L{O|$LjOWg3?GT>}rVEQ*B38UTS$bqU zI$-Tc4-{XLm*dsN{&Ki>HT%ZS7v&REztp(UlKQ-okBKlJvS?_Vc`yesEDLr{7VdaE ziCWWH6Rq9hjz+t;dX+o6>6zI5ucf|Ile72k|5WkOBi;4v0Q#&Y3AHoZCRhN!`1M{G z-90eAv^9GsV1R_<##A(o&(4}Z3l{<4ZyMUE`33>6NvBtZ9aPT^u*ItpySBR>tU9tL z_(#*5mQy`;qkr=rdJMLDoX#i5f@+u91FY>Bz{Bk0=lkXC{_}_F`v%lXOdXmvva+gi z*7A(%u6`ETU9a}=H+iv*ayn$LeM6VZH@F_Hd}F^3{sXmE+iv185Pi>Aj4D=ziqd!J zg{l{cRku{Vs1Ms!7F(YVu;cV#QE_x?t zmp5k?%CR&NF)$<=0_FTXqF{!6@omq|slryEwi0X7xnXKE7_Ue!Vv3tU(zog0%*Tqt z1`*WmB?OL=&+0QPme@^@{u8c-?{01aQHqT4)t!Zg1Nix?;h^(O?5Nr9*geb<&|{jX z9U7a6Mo>2@V~t9r9n`jDu^hImHh35ebz-X2+EXEwMazVyyz683CGSRO4!~E8Ja<;7 zl2_wuL~`H%LSxcNt5KQwe>I&#dX~~C{JwhmidZhCQ1M-tM!-Un#qSiNiIg0Iz$;~u zwAOX1P(8x>c0bR;-h!i)!PYmuWv@mdP1%{mk6CNG2?J&x1LkLgN9$RVZZs-n^G<)8 zQ-gaH0;chr!sZqRjD)-&TMJ}mEDl2(ShqKy7(lIvZ-Osn47Gq!sfhJIfRMzReW(Jv zhdI~;#ll zV=aGYOWv24Y1A4ip57PBdAXivnCr!+{0h~nA{JEEXEu?KP1#k1XcifZqI_P1X(>b- z5G*CCM8dLl4{PmPMQk>pRF$kMVvS5*7SVh2{sFyN*>>AD5PjEIppJb&x{}<}M|o8f zCv}_1IdzggSUxdKLJ|@RU;!|WPwemMhxErf05@>a=El{7NrE$X2D5`cIF4s=r?a=) zLA&VPj43o>5k+u~iPT6;ke*R=aW|g`eg|v8XELRIAU5<~;G>u1hEa~*3Qc*ys6+=7 zyKa6f&hHyGb++(Jj+6cmq37B9Q?FL7~-nuhZdVP8DpT*wOg8 zn8$)suHlX=5z+ArsshPkE#!Wulc;5+!#D=Lt+M+oNMU6T`^>Ma$bY3#Ol5XiMSRBN zM5lj;a+=KH-3BZ#=!9{$&K?}5^LQPG^F$kt^m4{El@qZ2z6m!Q4{wP49Ew|x!oucx zXq}Km&mdfWqlEWfO2Ys7TYyV1*j#XQ5D2bGpie$clv(IcWFBHC%!uJ6vJMX-qEsQK z^em!ZAzVX+%B9Y?4uYT6%=~uIH^7=v$#f`!hiq}rUgP8j{0?Ev17n6v{Tu4lc8a!z zUFafl^N9u;p6#`Zh?L|G9<3P_Iz*ROzJ*S;Fu(1P20{`O(uX-v?}(`v`LgHlm&Eyd zMRiFqA(5g$RgghWgMS8tLg7NeLbF^am#rPWR4`NIp|gPrB@~RnY_724EznWVBr>0( zZR29lwTo_qh^ofWGNE;A^U?7D;R6mCcZB`^*7cZ=`BsI$&X)%}sAAY*dvy9y(l~-p_3++U z?Ou-Mm|wxo9`2$o!0VzV5FphGMW6`wtD^BPI#Wo}zY->C2m}>nnEE4oV->-7RAGa{ z1-77DZD7`xO{Ae&UKa+69Z4cRFjj>~D|Vmm6~nH-5c!dQjfK<=>seOM@1_Ch_wh9@ z1Ux}>r8U-b?(;xeFRo0pgEzR>!~KlX37@idunF>t_e_oGlxT7j0gdm#m5_bFyzlk6 zSb_V{E&(Vnpt9>A(aR-NJ%sPUIcBveQFW+3#;)*963mJ<{>&n}o<@$q$0gAsfE6h; z3<4T!h{-6SY2@cX#J>4pUTly;7O0k$rROc$BNB5CX~AGttK)5ynSjId$g2Z6A^8+( zUUAO&oxfN_d-PY9?;;Mr6pwfk>c1Iaqd|1&K+)BlJ@v58a$GX@Uw4 z?4-E)!MsjMFhk2^AehmMYFd}oke8-JO-#N+Zq5!r93C3;w6tO~E2UWNox0SbO^t>s z?Lt~qd+4-3Id#ZrzrY=7d0*s=rehyxLPwVdgY|Ky#@Ze()VBUjWAjP8o3+1o-)4O> zm;VUArU)B()v@P)tpnMS(95o7^tCtZCw)e6iIwSw_zE2#qjdIPme!5kn*NsycRISA zEw>ufd10kQd)Tz)^soveI1Ba6YXS1nkLYK=t;JfrDoef3E`GVVg<4n}+3yvZ($?;7 zX{@1PGhq_Ysv5(H5k-}02!-Q-0vPU~ttSR{QNT&66A5M95}U4M%xgLFNn@)e;;K7v zPhlly`hnyS88@N677PSCi%wY6aezA%N;)$6Sk0ac2I#!)Rpc&%L5i*>b<8UcQL zM3(KMu7MMh^^?fL9&>+>mX0yYH?eRVi^efWR^w3fohrYRqn>jQqf+^>?zf^8F&q_N zI1f?T7mDwmX>TxHcE8S?w^&YZQKfj4NmkXXMX38lN;4hNvSk}@mE7;l%L?AYqLc#J zsIL^7!)Bqel)mpmxwA{Lk)je=rStivFjCw6)ozi&;MME%Uxu$gj)reeFWwHHpQgi0 z0dR|Wr0G2nH^p@p9O2OuFB*Of(lodo0du|O&bJ^I?N9H4N z#lB05nu;akdIEbvm)AS$`pSE@qkLQzP6OFRm6QJfr)Rc?3-igTqK?~U>SpOyT$6Dr zaFE|#!4^kPCOVIu3~KWt)IRj)qhMp;t?$_RUb`~L>gbJ_sorH~0DpZUnwG_@Es+-$ zFMoj2@3}2gD}F!veRTfk2&Y?jxGIA}GZj}bexOpN-&WR$!X1TnlnJeN@hvY(_@ybA z_waVy)?mw6aQ5F5^iGHf=U*HiI{yOQTI+7xI2Qizr(lC*BsacHi^cwM)Oxv2uk|0V=gT~LZ53(<|hZji{MaoLk87ww~sU?c%!ozdEb9gy9i#Ktn zGko1auhBm@K1C}(AP9bAoTMmPp>#vgG zr)Vm_j?fXEpA7SMr-u$%*!53E1WW$^!a+vtqTdyQcZdYwMOIB5N9o%s9uLzf#ldg> z5~6-wn04y#=EVbRcjoBq42h5!jd+u$&@JGCt15HIP{I$_1z$xCO8GIYz|b-wZ6k4I!1qi z;k-p01u42GFj+(@(<|HYDrHbEbgS@)6S8Ik1L)^E!x?=&oh7qy4i7^Re=rLV1~r`& z>wyB@Ud^dRD8kHv0eeOdC>j~HoMky-(i?tA{0e+>mFHYq>&TTI`ls0QNGt<@$7>nW zd6&kBHg&4Rv$4aU5zS`7FOTIfjJ@{VZqnL73-YnUd@zl&7(%|HZaqkAGJMMUi`mCP zT~1Zj)ES7EfiqXs7DF=)vMpdq`+GR>vH$~u6m(Dx2<@mll?>(;@OliRnEF(maTB;G zc9}r7O}&h{;aN%4KcYPzz{Z|kG(rwzr18zk6^q`IHBRw;KsbM=-#>bDNT2%sFyc=R z<0Kl7-ok5DqJ%wZ^KOX*D%3Utwub$=eO`#wb%W-N|1TiA66E^<+TvS2J?Ch~=e>j- zcMBvw6!?fwDhwwGq6f0=A3{ z%Yq%hqE^hD-N!7|btTSI|#^+rSn`WJjswng=nGzt)>7rBg#>AjD+UdMZ`1M(5 ze{5mvhZ(7V-F=srDE&-TZnd&~q37-_=C90mv&sK=hqU{V2}kY$x$+ksdg7s7c9EU? zr+jS67L=00Rv5}}wYrfZT4ZtNhy|lsf^U!53f&LG?7BFpFbAskEtp!ts$npnC|;Aj z!zesk^{{EhniE+Dx@iLS>bzIA^?Bf9N+_>r)pjnPBPNTIjJ-V1ouqKWn zG=v=ENOyLlNx5Z*5@hSHRk)?XyD?|5HSS9)3cFQoHD9I1`%d3goooZelx~QRNd$E} zB}-Om)oj5jSc2vce3L-+_#fg3g{LzO{@{3(3k<#nVMKi0fe`%i5t==&otYJ5zZ8lU z_;i(Ls0YiJcCegtT;3LE4C?B>IC&6jd$tqwPAAThIV2CLg6kzVSM@Ro)j{6}hbwl9 zK#v4JEK;zlGZ*Ec@q^}T57ng%xbj65WZUpJu~JZ!mmj&$)A}}xT9esmIQYr1X;mZS z>-2-8{x_lOj=}={KttDJ6TzPLtS;F$5|nzuv;oHE!*L+COMFnKlPe^kp(4*3x^tB>xNUajJ5#TEBJZnrl&sM zNe-W3LxXQ?oC{1ak`*CcBUFmH3f{1IE_s@qXgGv*|7U_|mJqh%0{=rTf(q?%!cJhl zAX~D7)D0M&hl?Kc8dh37`ltt>8x9r!(^|7q*)TmMH4?mrI0ZdCaUH0#nor>NENm^ z_T=59lIqNNyXGx;Lq2;>3Q%^E>Xu*0%LfOL8_Frrsvv^`c5pReyivaV`uok@-_CCqx99)3oP0dLxD+M3qNBgGYu9$8!`RnBg*(BrSd%z#+W3>j4hFw^ z9^yV{So(p@gZZq+0?eF6UUZCWSl>(_SKvra7#feqreYDDRj^nk<)bUh)KTTcve6{= zV%;GFMQa^ zC+H9_QoQDgjqAZ?x6o;?h=}jAFd=8?mH89!WBWn{E9+^N*sUqbGf}L8+olnsn}}bD z+d{dO_Q8&az1Ou?5`3ix|H=M;jyZUTVfy5jQ^VJHOeoUDL5COE`*3uXv6&w>n>qVt6%ZRWyl*V zHW8J>7%q#Y5~v^f4!k(lw;jPKBM=>}*+=r8GRE_!(Fi{KvCv>tX?1mX%bCF+c&Eev z{hdbPf`shSX))R!n*BPtyIp*`y_{T}f4uy#nB1ICez}~Wr`nfKx7QbUA1=FARFE#n zEq)@y^+{Ohw9JDoVqaTZl(gWMkfQW}=lQsHVpq;=xrnrH;P9x=p~??wibIb?D|FGY z-y`JmvoozUsAufPC8ZIP#NjV{v$~aC0YSIdkF4v2y+dnr=$j*+oS!psvM=7c=or0) zeDm`jXHrhkK$|>mHTzKWjfQIOHhWa%KEltYn+|#Ew;vnA8vLMt0K=s6SQZ`+dZ^Fa zSS3~8a=9Vlnu~k`U6`>n+net?_1GaVyP9*X&z0$RnJQGfT&7%wvaZskipOL0*H-eF z8N_WW)2K_RZg-E4tHCj{Vybp(jG-r|ZDx5qR<8(Y7w*7`h1W8MQ(!o+uT?ZVsmz7yv#aIVAXToE#tN)#hB{N%W60w|IYw*`*ML)5MrQ|3|&EoUC=4I%ZVCtB}I+;EBJOE>#j*Ek>%rEWjV)JT1zt~rr zriM&zh!N_-tZ?_wov_0N7y(yL=tSS8j=-j5*ZPdZe1;>qd)S+pH}eU#SlM#hHWYo= zSD+cqka8uv&r#%M;&_rYqh#tPd5|?8m;@!H6u<(YT~Ffg>4)^kdI4|&xJa_=>Omrb zyPUh?La$D;bv76r9SqO``h86$N@z+D{AO4v#1o{}1YO>563*^nE&2nm$RQAG`Y;-y z3w%QfL!Y=JETTl9SBY6Um6qo);+x}w{(=i5F3HmrMLfF~bhTCpvlyi`B20o}mTr#XhBril5tT((ulXk9j4%aHO!Aamof8=enkg=(gF!C0k)CB4;5J~VJ4j(=19q0b zyU5?MELZmXOsw(^>^*|zoFtUdePB6EA2Z7UxnP3z{_^7-#g#M4n4jWYts#!@31*WE zf!RNQbMW;g-Ef9pMVu)dsnc(X)C-4+C}V$0nIeMW)I=gmv6Se&+#S+y^ zgYN?bAA?AL4$yayvnGP7m`4xA;*t5y1f*c3Ga$)Xq-`nC-w@A_q4$P{xOf^PECjws zLv9=)(F`q?BO}_P(4V1BtjX~m03hdB;jma(5#@=sd!^{nxRN@W8d(p6=QGR(E_9wt zZO>wo6=`>@oVGdoLlaaIOpd9XlNGSsq$C`T9Boh2I7Uk3q+9R9vpcjdpRn@$ zEY7V(+ud6H|CTdF2MUW{G>q)Sf3>HOXICqkrL;vLp=+pMiB3*Xf>YTM&1W*u>B^z= z43%EL>}PB#F`ifF#>}y(I!&xq3{JIaliAke3^6#u95CngX6WPUP+DZaBfD^~g*_cq z8*p|K9Ia94YIma}!x4h>vJ}v&%u?`TsV#kaY~Av7Tmt+BWVdSspXa~MKYpDD=%?At z3zJc<{m{`ww6I0s5C=;elE7f^mNNBZ?4kS%5mE=KrN1A;t!3$kQOWa>JoNf&5tK2p z0?Rii>ZbFy)27E`Zr0Aa(#?q-A`r|SVk|CGPS>|M&53MhUnLvzuO~NJjYX^3qeXnx z954au)Pl_Z1|!8`qf^jZtVrD_Y8^!nu$uga(CP(AidWJrf34~ohF%_1wzA3p%e32~ zu%;!IWk%x2H>?G=bFk={U`8*k5e?{qs9Z3#@SVeN1mVnNCNb-kD?a7+%JI6P}4c7-Ef|wA=6V69BQ+ok8X`< zMSap6++Z?cd=ea1gIQmQO$U#1>z*KJ?BXaQnX=_=C=9xGybXb$D?OAO@FIo#T`x^D z8v-*>5_1oHG3hkvFnEFNViUg``-ZY5#CVJM9_u=n`m)%t`2?cil3FM951qq5Cc(Ie zX9U1@2cqJ&J74rhS0#2t#u?TP+qOdX!sReNVU}*6!{Lu~+peqKCp4|w*51eq@+R)$9@&Yy zVClu&aUX3@b^BdJ+e!o5E%#R48qKZKI^0*D!a?a}X=}-k6cj@-UpTu3xZO$Wj_K{| zojqYpx7u;ORD*io$WX}a?}^P0;Bk26?G>Rv(i*6pQ!M(q3C?KEC0=zPJWDB-di3-` zE_V&Om5dD$E8^YWsy_(I>&_D}+L77F4i_Ha%X`K%NdfV4?3?mgb8Aa_ENqx)G_FaS zwVm=wa2UrWiQmF@(=|m5ODiq+_J1z?09XELB3gF$7JH{y(>Nx~yXWW%eruLP*URMu zr1{FSco_T()mC9|+cpsWu3vF&6Id=RE2-nwbLu3XmrZ#97XCv8El%^rZCvAe9T3Gk4Hd>9{gd)+83 z+eC-4R5a8o#y@F_GPjL>b;Moa_a>1cR8KEFR7-VR{^zZb6fH1-=X zIKkJOZlkrazPwW}3-iJGmRVHhVQK#3e^P*V!No5}&nUq4&DHhz=5{ik{;OqhG5TeU z&X%=RMIP;xEXyO@qPTN~D-7J1x1T=$dOsZ9 zPOdJejpi13tu2a_a54c^3U_F(nV7p7RPAITq;X@)ZE&1e?Q-pRJ8LFm-LAD46=9+% z4KgJILrHqZQGIPTZKr5L6%JGyuB3WMxLgHg2k8Lef+AEmf1D-` z?r$kl9UdFTHcmy)tg{-~|Ac)Q!c^k@Wl4BWHKaKnVG#vX1#e!n_O~ocbPR^@M)@^5 zlqdau{orqw2akPN0{#m}wONBLp)X}|8N?1*GQ?{^dBWHxtPt(Bjj#J#Yq!p$;AEwk zp zSuQiOcJLK0Adw53lUrQFr! z`Nij(3!zGS$rpsfBVpk9jHkYpaq7UM&lkwS2w0q@Hbp~@^mwdk5eX^7Aj*jD&f_qN zBN}mhidY=bsitLY1OM*g$)<_$@9r{MlE8P)QZEZ}Mah^7JY~S|NnD-dcP9zm*qqq5ZQHhO+jjDcZQGi7^X$93ANF6UbDuul)m2xGU}8Nw3gB4Q5F!sz5JmO7 z;|-NR%Yb$zEb5{#1cYOSK3r5@)NhQ-3>p3rP7l_5AwVAx6cW-gpS zY4I#0>N0-6IeG4&H>4&g(;7%&ELGO@p;z+w3||HkpSTp{yLsnPxlnRMtOS(dMl|{Y z7-|80TH2eszU|#zUz=5aTw{hgXHgF5zfaYbx~{GPv@MNe`P7XENgP4X7lQ8(8r=Wp zgbY6gyg&Q9RD7k_=9_Ly8171F{PWk7z~I9NJBIeUa7%$*5YLO5M>wik={E7Rqtvd| zDe~x=jj>9it!Wy-5wCB^zsyY>h1fF2DscoQveEG zmOttG4W_~dR4nw&<0fiN)(zs$V?G1--P)u+ESg75*ATH9_m0r*cOy%?&F{Fibgd z0bD6Uan31+MA%+EH77^p=azvd(~q`)Z&I4fIcc< z$kI-x*Hnw4aE4NY#hn&NWKj95F?Hhz9p|D6?*&XJ^sCe|t6eN||he{6xe*pTDOYY_9dsZSG}_ zN9dx*KV4it8@(}hfN8oZE2!wXC_49)*U>pfrKld>g-V< z=18N#;u@}vTA}y|hx`tlC||5()G}fDaA?*W|eR%*4MX)l&cDN(d&5%iC-Fu{>c#Q)}$_jMy=q4VpAis|aD&$%C701sxc!vhVFA>?vdM z1mvHV7ubpxT;ItN5k+<|%~Kr?l$tzg(BGqs6T4SX_JAJwA9U8p*9WO0y|G*QLMy|K zDQV~q0E_~1;8VbrcACF|ycPRxaF~(0Z&auJg~H5Exyjj(N&Z&+Ovu_0M?|@%ICm1% zUaCV`JP35ZAl@5dd+H0YRWR<}{hRiju@%$3XaF?qnM0H^(aQJ@C_&w8($4I{?4s=H z8^Vg=mY?NXgqzOey~{Zf)+`MW^>-VRS9aZgVdHVp=~}0F-S7oi1Ly9`i$Pnhx=DokN z!UA^DD^!8^LvCrtMRX9zbJQ7fS=IQ&^&f@1G+A=GY|Hjvsb*69pZJ!s0vQ2z=n?Dg zu^HfN>*9O^Ahs6iHdM?@^s9g}sUx_SDBw~RqQSye zB?8%_A^{ZTL={WegIDVQ00kTc(wKN%TIy6q?gK6%%%$}Q3Ezmy)1~PP_3&@89}gi^ z(|tOvORuUtDHIP@XmuSgCJv4nuSUn~%BGbPZBk72q;X7|p5{Y_IqtXnVY0o9xb;gX zybG2L63Q^g;Cll@GI4xkFkwpz2W)r~S+6=7YspLlQXNQ-R-lz2wi%nTyr4JE}?KS5Ei_nndchZ|pX>?+<7DM!y& zCQ9t4+xhlOZwg&}EdrBV47yc4UtS~bcSbj;wS2#gtTo8W%^9Wds zmgEkfhIOY*=L{sXPn_$wAEBczx@^w+6krN)`AEE0v}jbM2c~%e(*z(L%XBiy!&oJ; zlFcu6Lz(J21C0shy|ta9uX^0p55hEv8qp6i*Nk_6U5bJaUL*7sX=+QNBwIl_ah}|J1h|#Zh4)&bqEJq$am~g8tC0Vfx)xxsX*txvN)cbGOCx^39 zEgA;UUm1_DmWHy_bi!LuH~vBeJ6r}r2*zPUgNjuK@2x0X%LpSBC%aMnj{&}hHu@zi7|`1wq}Y+rAAb#Y_utzVE7LqZLiAp(lv0GuMa&~k)v%NGA@qF;*z*7VmCn-5+r-s;kw z%E1Y^({&5jG@0CM&Xa2W00&aW1foz5>?9#&Vgf3Wb;A^-72!&WTV^DbNy4LDJN7Ny zsIAZUnv{Xh7-oG8MGO@IHezzNdD%OGR&=s;l}?pB1O+NObOT2X4{EC_O`D-trw@ry z-E<9$TGU_TEFXPnyfLo@kI?Q)Kl^FigIPws)jE^Yv}C(F5w$E;fSXwJ1rLEwS2f1p zZ-Tz)Cqro#)PmmSwoj1G@{|7^+13lKN%?x>tMYKIbd!*6!gUT4U90ucVr;d0x;8G1vbcy5NV51CBPJOiqelLd zoHt1^kPRBTFU$b3Ii?J3U+BHDIP;cso|NtSqs=#YL`zcTya*nshILb46sGtk6cWUH zwj@2)&zxU(QVdzDmHnfLT&^LN!1u|WtuvS8Y|lsfFN<8C zC(DXL?S*2n7)jj&W~kLmVv*2vXM3Bn78Q~sNGj-R03T`2h;J?9h_A~$rZ)aV*cpTDN(x3xV%~V`x~#}8z7;A9?QWM_^jM^!rC|pK zJ1c{_$*R^gCz<7WL$5z@PP5fa-feZti=1B1RO>6SaoqHO=M?-J z7=@f-C3%yivSGdeKo7g~-+YJY`tP1be(ved2@h-cBm*rwHZ@lN$Sce;B$#_61KcdOTj9 za`AwS4g>k9b$_=4w6ic}K`j*P6Y67Oak@Vh)VnVBY-yg~8((ywu7x}<13tcAbSJf8 zb#n@sZ~;u-{Rt!-AEi;y?i_9Dd6vN^F{@%-R^Yr7#p^H|zUYMHc4#RunD!!3!!Y$8 zs)Xmb+W)^iWW;fLVa)zVTS?p0)h*d2*|bOppzSa4Zpa0(`=30xjAIwCrhsy{zo3M|B=V_N1osR z$s?)FOeK27&#OT5zvV$?hmA-_p-9oKK&w;Ffji#*?)fv>_j?7ON8h*W=gm@8c=fCd z7D6DcM=w9j@k?>!|H=c8-_?E%#yg(94m15{OAHz}xNtyOi*m#uSf#rX@d;k!|9ciC z4fzq@q1%m@Jj&i=&#JDM^GD?#PY^m@i`Xq4Po;Cmo_U`q{7sAxK<;u?>Prxc<2;)} zqPGjJeDoW3t<{uL>Q~eav7m`>-_UYa=e#S4e$>? zODn&^ax&|S@0Sh(c~V+H|*zsgemFNmQDy)qVwHSYkb>1kW>#Pu|9Wb zfpG?f?M&*UXk5qbLA5E*rOLXH%oF}z)|x)sUx^h}ld(0!DZPRE6Y;&}vh2p=b7fZ; zIs3bt{u7^P@QjY6?+aAgLQ`AnJG}Gd*MWHmoQ7?Ki&~R3cq;E%Wb9V^e@$BqZFef5c|1r742AJTx7;G) z!aA4HweEeMKRnqwT5<|W4S#FO$X=A(2Ai4c`_!^`QKON@g6_oU<8s%QzeydG-LY; z(GD8LwkgSEi8%N&!1aOuqM+R^oQIE!P9kF?tkA(hl4k$D4Ml^+nB`3}0;oL3fZ~!R z9HSHp4*I|49y>z)cEf~~;FAOVkuk+g#Z+XWs0D%=ErA9ua}+Jm$}O+e+VF-X!7_EqF%=0`bKHmCCUw zDsHY~d%!e~xrL$S)5YD{m6jC<{-;$V&yWl#Mc#pnRimA%nbD1d4=Q1(3t+xn{dwuZ z(cY2q0ln^f^{C4|y}K(gUmU)hFlc+rX(CmzePK7NW(O~pRYtgVtR?N6yD9C%qndsv zr7xdx$3uhd?tk)D)0NVrMEf?xHqG{=WVY`DM5@t%t7^)>+sC&TL@3eX#%Xvs6cTJ{8t6Sp-!Z@GDXZBO8@aKvj^RDlH6K`v=hkZbZ#X5IL-5x~+&=UAMAW`jdvX5+(tu#Ud_u`@>_O&+^2ro?FKHe4F%v~7<=z}G7_g=g zH3*&Wc^bAEUzC~pbs~@m+n{{;FE+vmOs;eUxd>D%b_UA@nEHhgx&jb_%6#?ACzQq6 zNohD34+e_!MYyra)I;_9veAecwTA8+8eCJRdl-M^)UhJ0sC|uW7g2bERl`jZ{ec{T z$ovUv&ggBe-Aw_3`sdScm$Hej4ly<~3GQn4&c7JG8L00XeJm1v}$(ppOMzvKO znYXmp3ahg80(Nh_SOZH_Ef#m}u=~wt0D6Bm&4@6Si($!TO=)VAYwO(^>Vr!ob*$x7 z8F4(e%$uS`OTfRO@Ho(pW1iT!TC%J{iX`GKICTyHQk``^h#Uz%0(#QF^Y(l};@iP| zFol(?I*BW6G8u%A0Ej|Ctpq{i-Q|2Rg%nQGCvG&qL|QLIi#xzO%aVBL%dBWya2E0% zYB#_xjxW~bt$#DH$#r)%7p%^vuU~V@f?L@^s9yN!-PAz%E_}IgT)(-p)%sRYD*mwl zls{oA_^^*aZY-Bo>oTa#1U8mN@Ut_nNtePp2i?5r9>3l;(z7R#U(%hMnH$za-7urW zK?UUB3*@JmhKDz+{@A23hRPm@E_5kh2tRv0w}9-*6CR94A+YQID#^?a-)2`y`>?U? zXuc8CR#A0qH`3)9X|Q>aG|#5c!1Oa=l~bMiCb`ust93KGO4zA)=nA%ht)C-YPHbzg zZeFiGDod2pF={;>u0p6}ox0XzJh-u2c_;{P&)LUt zwJr?a+8nj0a@nvjaUAW%@myG4Bq_-tz!~By1m~k@B=GnKxx(3SK;^mrt($MuJ!)vT z-?wao4vk=^RwjuKj;24u7lg-}6K{=v@Wb9k9UUI;wf)(rUHFHx`q1PaPT%^rU45OB z(>sQ-*57|R2kb7)$CyUMnj#PK-N=+0G!v#J@6fCRaO((ZKGozZr38w)6<{N>9i%R# zejOv1Ar*DJ_bO4*f$2UW+ny!E z#Th}v>tChJC9l6+-#=x(sM;bW@Bd{Glu*ehVn$^#T@aj4t4h=AV71D*_3!L-BT>PQ{ipr`c1aaTDy-Dp4n%K}3M5hd!Uy7G^!XpDZOwwvyNy;I>c< zf2Yaap|K(>RhI?7#3Z5{3$x6_OaYA3ok)>yUbv=`O`Qy*^jC#^lk;zx9>ab;JsvYl z2vElGGjVY;_0~v8o9f4p-_G2;(k5dzrOoCCB0 zV;PtcIQl4mP68+ziNoF3Q>jL>B(IPshSeCz@}WhXH8@ogNLi3zdkcA1ckW4K6rz}f z#*;ub*grgh1vQxkaF->8?@NM&l#;0&4l?0n7+G*6{KJsch^D*5`33Tsw5DyL-BzI6 zlf2brQt;Fe6P4RA{A4A6rn7^-pmxJfF3{aPf2rcUOR9_!oSUFqked?oit4!bpw_PFz~CX;iCFJ~VLw2gictjw`1vC=8U$nPHcRq(xykq)Y#W z>X@S~EIX)lrWx!+{rK?;f1uJQU1Ml}b13MF)tS)?7Zyyv-JV~1e|vId2$BGeVib0o z^M+&SKOdG0zF=YlDCKfwWpgW_Vo`p=Ik%_y;+U`nJ@{UK_-7^^TyP~NJraBavmAAF zgPI_dh{BdEn88i`yplyvk&IaETM(SEo|2yWB8iLP+0%XJv8B=jZibIc;aTO~es(S3 zrhGoXhhgX8fV4V$m_K%R%!HZNjMrTyZI!n#^Uz#T>-AW}sE63f@=oxZUJ~(pSnQhUJ2LQLLK#8Y%fL69(&zad$0$)$ZfK z(eVEJS0+e14UThGhrmsh-nL^907H|X0A7z(nnelUWNJ~LPs>3nkUgX8L;T5SkJ1`c z0i{p6Gp1mSm(Y;sb2vJRJA0yp;Vx-HY_$W8KlU3Lr2>n&KclZ4ZM=#8ul^Ul+zHN1 z&L!zf%IC!bZl_yY;zSJ*_2je>VaY8^O*D*UmaE8ySdjlh7}R0p?NnCSxhk&9FVp4h z8XB?bCyoBHm>p)kR7F3>WB0$)N@b^vx0V6K{`+JSr@`T_@)r;p@;qo-uAHLb0nQ@PdNRB`+?lbH`Fv}?5*9de2Nnk2lEJ;GF}Zc2 z=c}rnsZE}z*XX^%xzW{t=6OzmpB?2EgP!Dz<4OW4XsTB}Ym-oDPx3~A_8;*k)bF*d zxhP`^U(#lT5M3SS2s-cHR1quK2uN!U8?s~#BCvf8Fe^i_Dh#XjwLcUkm7iP`YyE+Y ziybf?{|G7AJAJ6y8#PD0fuFF$@SPz#LoBBQ?j8fUuE(+ORbAH!Ku7UYZUa+L2^X`c zkqB?FE6TbaTr6f+U7+^o$16?!wh)4LK$G?SK+M7OLh%wQiF#=u0pf}__iAERk&A4l zd##@&?mU{&T#FgizUxTI&_p|=bE&3F)N{vjnyBi56l_fs%DfGBYpYxT6S^TuE z45i4o;pa}BftqcSMvaQXY3igpMY4A>n|a$;e(_ILKpid~q0>#*gWPQV?S>BG{HC*Z zD;KJ^BlMQVW!jJ+J%A>~Ew^j-O!PgRJ0-z~5hwLgOt`VY6>!io>=g~pG?u5*l-*gt zgv0jkGeZ4c;7H2pGN{KFPF}6XRtdDUA#Ow=g^@^HXodXVnqu?{XN_FdMTK~?B|qX~ zelSLATy3j8bpS=63D%5CC#CFy`l{Yt7~&p7v2tMU~EyPyqa&?2#lHN`4U#MP1UY8V&PWvcjC?xR?1 z2=6?}6moPfh~drai6obp03xn|j^QviGWt*?7$7Mu#3y3?NxD5|_&2dbD7`HIp!gw0 z1?QaA&WG;!nb5jJYU*eCw%D_mu7QjLjLDsjffIRhn?<`y&aJY+Y;|+_XOwc!vk=ME zzgv5G-sq#%CZhQFzOpRQzn08|q z?4Hd)7fmL`P+y7BXXT|b@SU~zmBxjwCfBPkIe~Y{xuRsGNKCrpvdigf_8&c$^R(;;3!TMT z#1w+i&Zntw&*m*o6MwqwGDW7@E`)LC-ddhQT-FzP_Nr9RkK%0yr>GO>E9177rMpEu|`%F1#(AoJ(P5gFyvXsRw|z>S&iVdC@Q7Z^gQ-k*|t> z`qvqjSq7oE&t&Tf0vj(&1CzI({cb8^?6z0(y|wFQT^xHclaQ&t@?;Bo)E=EOH0K-M znLL0E_!akPO;vGS+j=pFZbQqozNvWCW0`kUrE<0?j2d8$)aZQqpXHDkPwXw`%I$U6 z`h}&%-Dt%jMeGKpq!pQi9+-Y1)JkQ(nkT>6KX=1_hDPQ~=5UW&eB&G$OoPhBz?OcQ zl<83M4~#!mf_X?iu-Ex3CSmt50QvrDuqBCFC}fxOLgUk;&}0TKU+EH`Z45O-J|@$P z@o^mb6Eu}tCFM31_^(MgWT&i?MuC(3%|9kDj+Lq3gF$+Vzg|C;a(1XCG%7j0N}b0> z7QgEC9HWA#1$qOY;$L(EhLw^>eBfmqjd2F{SF}o}B;MqpwbRQOD z#uMhhXkm2;%`7?YhU^q?;lq73N|K%M<+VI#%HpY<_u4Bf=u2*oy0tD+HgFeXVy3@i z!bdi%DzoxlvR-$?JXF*qT=PUFf;~_|Ku(A4bNP=m=eZSUx;l`RA5`#BcLEAhXJ@r$ zn{x=#43vNW?we#$6bDi@tp;s0L40T_q5}}aKFau;o>{wH=;{ATOkmbkJ$&nJCM`7h zBIG^e5h^s@W?zr{N8P{APZJww5$l5&rn2kCpRMl3<=&sz6up7D z^$OEPCv{{0*GBQ86}##e;r{j4y{VXE;jTR**5)%I^i#)1bKz$qh$4AjhCw}cq5Ug} zMz69HqQi+`cU7_dYnlptl%^slZN@-5bGS4`!Ubf*m1uu(`}4YS8n}(_tT!FVjU!OX z9LcHg_iwJAFK@30H(n@N0>taBG3+l|q*~{ydo-}53QCF@dF0@9?}t)fuZ}@2%m{J+XP;+-xZ?-DR$#b=FEBhDBA#;f~;LFc`U*IJ*>!0b!|M+h8PHhH`z}Kuv zsR+faQ%+{3xA0sQTo-DA^sjW>Y(lR$tqJ&=E|+X#j;yXZaM1G>x;fr1=AK>2sb1= z4kZ)p@A=YlG_OC&=<@;+38JJm-jfA2P*hZLw=ltYedKXo;|wY006GCtL)I8Mm#xyt zhseqc*un{qa>J6naOyO>Vn;p(Hrd_qi!>7|5b{V~VHUP}0z$VOJ!%@5f|%25t&(&! zDz;A)NeVYt>IOkVcb$9{32iS#W>%eqk0^4ld%j!@YKcWuF-yyT8c@@UPAY%-==7E` z6X8%lSM`u7q!nVI#7&sd^kZ;n1$e?O;&U>&#H@@e)b+RpQzo%Z7wLyLxuhAUEo2!z|EtN)zjGDxUmH-qH*00M#oEG0wJ7%G{%G}21CnB`UK z>N6W(XH=mZqymzECfaA2fg2c55qUW%8tJNlH1o1hwkFgr`-*4N#D&;G zKKSj)kN8@`%(l5fLD#-(jKZThL8Fe7!f^x>v-j*{-r(Qrnt>}ug}^6-GVAUyj8Cf= zRi0M{5H@QX90aZR!=nL>8I^IM6XMz_K8>@ZS7tcJ?Qr^*> z*uqD%6(jP8t0J`esvJ7g zvvpM{l)-lsj8Xj79$LS1VYb^%N9i8+gj{1-We}uRjlhYZwecJVwZ>AS^Ld>i1td#V zcPCPxdqfk06;goo)(ikii@B~ucWgUL1>o4m!>)EzUh(a^u2(4)Hj9mJv@#uL9ZYXS ztLom>2Apu2*Z;8tVs7@toEWJ33A*+{f6P6pjkbF=7;kK)cqJ>;F30yelC$T<4YRp$ z`bmBgcfHDVLqEHUwiM4FUo6PI(QP1dXf$eRb9~x`+bUDgTyteRmPIXdR>^m!jQ*vl z-sYX9Ti^2ZEM#at+e8$R7)N`cev^7yA=wJO58}@dl^W(;4beHO(#?U?+sImcd(N*W zkTWdFxUYi^mH6$XVfh38!Vl?ZZ`LO%PlXwDSL_H`O-4`c1{JQf?`XEX-g|UvUvs9} zq-ixoza8xUB8+dsG=d31qW&t?L(KQm5_!64Yrm@@G3B|cMBWe|_hLXqt*yQODn;+3dEWW9)%DBid@rB0eF@$B zZkf6wxHglvoF%&ULg)8Ma)o*mHArc8ya+G>f>XOn+P7frMgB$w!VAs1GpSCZP6_SO z;iO4113)+8_gDL9B&~#r-48{JW}qAA7_Gkm&ibXlAVg{VgmYvPt{5I2Qbo zFTg`?tE-&nORsHjT2e}-)zvx^0uS)N^it>KZ!wfef`eki!UC$5U&U7e{-`M#{gbR!x;)x^AGdiiE$iSNtDn*Bpc!_5$s4kK|#Su zw3}&Sf+fPN{h@K>NxPe%g_fPy7B0-)J?Rfu~Llg1d}w2pcQa+_yiO6?c3k zuSo1VlaEUfZM}iMA->AsJbP(+5zGn|QJP2whOj+M(PkCRkXXV6*0{F~vuqa=v84ZW zv*7jT32+RZt{$`9pBlEQQeW@v>C#lBzW2MH*N4=NwUdi+^bFq{rWu=S%7@oOTefe1 zbM;OmL}5iYLrG?r(!X>{mKGAE36vhTD!~cLR@jNgQ*ehMxT!^YI03bJzG`4gqt;!d z=u!FT(e~X(C6=Cr*tgkpQF~};G6f3@8M0N%%!Gj@d;KDO*93T|CTtPU1a-zzJNEn_-~CIwQN*w$_=TPOWHdSA-p2%#qfQiw(ay? z4JTOu5{7nb45)Hw487RrhP<@ANRpL%%FnUZ_*YosRk#G^uoPi>{ zni>H_R0af`Rh3FG>!B-qrUghT z#d<=z$~rT&H%Q)O4J&l^7d_Ekc-CpFDCru4^=j|22nI${DoF4`(mBi#-z0oxvPz_S z6HTXAVs0#mv%@$pJ=HM45tFQP64_z4n?w-&)Ir?a-F1EFmzb|ETaRNh*nK-VwCRGt zL_$CE;tbreb=HF|%1jmZQ53eY7|9I`iY}R8J15OX1%JQrV%U^1tS=~xcC+c0wg0|9 z>w$rpGvY=2J1^h*i2bTr4>^I@uxO8gc&a-t);PL*I@U2*NmMrXLYtoH_ot0$GYoB@ z?<6WRSA&tMHR^%PT${5{ptXqGZBoVTz=6FRvI`sD=IfQuWr|1H*LifYyZT6Wr6b^} zk=a~9&w=t-V<;_pl6lm0F<==Z)IT5?fzKkp2E~3yA+-3#&X#9>V`oz?++is!)cIAU zYzuO>b_+YT(@aj#YSRaNO6-fS$v{ljW#_WZCay!kkEGKY?-C?s zCC_*Qg(eY1Voj#?^##FPB83q;K*f*W-p$1AxMETu=P+i0+j$pFRHA}NmKCDySjhs3 z`825i^MD281KD^^wL=d$0De2t>z}wO^}%iHY?K&vq8+y8xM%YmG)cXe>i!=X^XXxc z6alh(v2+F$_@o(PDbf*iohd`&RHf2@R^k~fku@4)%gUFtXAd{mKWrs*QrYtGmKAzA zH1rGV`D=K~<+8V6zvT=FUJz^VsM-$uK|w028HW?T?`)a-Z5oFFDw3y+_^5>KIgGrE>i9 zOI(_1^t@79TKg|oxWcY9{b!~rE%SdYUD#hd-Gtul-JJpnL%83V6%v-ao`E)HK5l`N zoWy)Rou6>yv8cI^IgL+tFRy#GbGL&%3Wb(%e`?*!I8QsuE;N=D2cdHFF#eT_(>5)S z^A#l!QIH+WdX~%7xibx{GCHZ7)K1JRH`gxMaFis`XP8se?-i+OtUZ-(%xjdM{nff1 zLqn4;UFK02Uf*aRZM~J@s3J*rQ*PZ*!jk()XsRYzATqr{TOhqd$DN@CU%#BcnWBY% z&)nt1Z{wly=RvoOJ@-2mj%W@zc?12Ds6&C3H7!XDCboXx8JboMr)uC{{s&{pmhTQ| z>&3-QuPHOx*j=1*C0zigA@|;doedYEtqQ*@YE3qYVzhI6Bo-!ZD=(P!6Ao5d74zo0 zxl(7P4|lYt)uA*Ibx)o!Hr}yCVwS@R3|$h*+qp??8ZDkTBHUmk<`(T&5BA;~rEz z9bi?(7uOJ;prQ^L#|PJh?Pv5k&S?dtpLfy19Fx7)=qs& zon@poO5o1*3!1wSWs?YMw;DuiGcW#jVk0^d3-BCl$gR>TLlPW zdA^L>boQqq+S5tB{rS|{c?ZBM(1X$KHnSq*7$Up9u#nlo7a{C%Jw+FW8=h;ov>hI1 z{ZVvWom?mCkCYOh(DQRvB*}EEQKwni(Y}9SNOGChqo+D4)mvxqCxc(6DjFO3Aq7qv z;cW%9QgJ`)+tE48gwr2%jKqnh@yI49=n`=xxS7}g%ONDuUC`TffIMJIJ$CcD zzTmk(Zn(bkA_fGm0K3c79BU;enMU=w$|e)DkedL;jy%#O>qDB|1Wc_6gB188Mh~;L z?J34g&C|lT6%VZ~RArkN)?$zDhbD8SjHio5QsUK)Er(4Vh04T#f@lP^ii3fLSi#(po6?X6S!sA8qWdD!b^I4v+75WAKhqTmD z8tl-?kgEeBUskG2SUg5fJWbNwO-#AXlyED6hm?th&g=0wOC24zGyQVCYMI?Z?eeg=`2IbHWkwh^8?>T@zk( ze$JZPQJ(;B-7hqHfTIT1h^baTSw4nMXX9SO0&eGkgAJxBo7~gK7o6rhhT@Br?N`D0 zQ#-z*$Z#xepE&k!j*-9#g46Igi`H7QLPVx+_E*%1BTBOZC?}p3-6qsOl{$MF)IYr7 zB9ss3=UJRR0fj7sS4zKj1w7l>q5(2up+roBesP8T2?^}@M^P9Qkkyhr>I_p?S> zQFy1*o~wYJz?qju0pg+jw@H*pseC(Ber*dO%WU#fxi#fF`|4_`~6Tw_x(W(@a>rC|JCzc)7*$SaSP-zTm<_l3N%REhd^r+5y zhfoCDE*eGj04-OPj;zld<0KF>8%a^DHQ~F>L5bu2b&)QlQ(DtztX=(0SU-#wf2WAd z{-X*9sPCWNIv(}>+4XNUt$qT-_+4KTsT$`Cteai2Zp+`lZ)-zMgII|(R~F`Z^chv(Z}x<~{V9`r|CO=C z{jai6n195Feq7K-Dk7((*U3$#n~A~ZwE{K|*WlCTT!ool@<(})C<^N(*D2FvWx zXn9R)obUHdKOhvUIC`7oo+XwYM+gy6fCN|+(e*8c9-?pX=Mw)?GVpA4t8(9Y?hL&N z4gFiuU{r_|LnCC$O1Tjeg^x#%dlwdfH&UeF*D>L?#a6^?f^4ty*a6E2A!zVgh=T|%8JYFL`QM;#j)V7P{lvRkOkv^E1Mq{{IW~x zF=iqOplE^dy6n9wZVogazPJUN@=u)(k_p=GD~G^7<|ws^vuG7yT7Dg(TR%^s zH1ME5+KP{_RbTLmL9gwkteI%$w}~s{khkR#wW%dKV5(wM$ISALGV{JC?ag@Ybhg&c zFxCLDX={v|qiG+xOQ@#Jluar-2B_b%lr`0WVX4X|!2V5nYJz>kaC(DM7 zL=a4LFIuYcyQd8UUDeS<37PjYKrflwOcU6foPAEQ=~2lxut=vJZ^j@`!#IjDp>Sa5 z1)ROM&%j01*eVLmUC$6&n>-q6gu7Rp6O%)$<%gOc8mu;zEB&5TIo!G!402ZFpVbrd zb!aXD@PF$_xC~^}?@eIy`%HQ^@G+0253fhBy?j00yx-Kn9BjTRRcYatgZh5<-LTna zP9Amu+uppr_33nlhWQ_rZ8a@G<@HEjd=mF*e;2yOzbT?_dZze>(M9DnZ}2Z>q&~#5 zlexTQ&I?$U{TS7BMq1~+Mm-GGvOL9w)1pejw})y@(BNtlGN{Kfxr|mJH$l>IZ-Bt^ zVlXxv1$n_1&Fc4=6tWQ2#Vgyy>-1i`;fuBWJQ8)1JJkY=dS2BEUnA@gibv|}n}<4` z=e-?+BtU{f@GDPO1y-pLjRcqW#Lt1qD!=!O3Rq$wlGrtvM8e|;7XpruSbm{`Gd-Sq z5?uz1H&!LX5WR+q?9o6~y$PB+&07o)i(!?T%MD%XWffCfB7+iqGzJ!^-#I8Lsi`o> z=222o!c?bAYnRaAC%E8djhnW&Y~a5pj$hrXF13*5QqS}7y}e*GW@N@SfZa4*Wo8d> ztWj!3IjffObS^CH)kJ~(6G8<iPx z)4hV8MZfMehvBV)=kAPWS~0*{m?~JyB)H=ntEIz4JHhD!hP;oIWi{H_uXIn4vzr4) zulBq+>GGam!(sfhMq4>TtED~N)_eML!NDM6&EfLYKBTOT(Y1dOY~Z|6M445*cabCS z6LPoc&0&t7*%^h7)pHTJG)>MrK5nGsAo3_f5nYzlb5>EFPS4<;E==9u1XWSe@Q5)j zv+_^KCb&|V54mP%WRd9kBw22UVKA*TgDqi#wHbNxR}JS(zGwt4q6KXi;8bS0B3Or` z`3%CTjJdhOGw2v2D~1O^LN`$!->8kS2Q3OTg=ex?arRs=TS@i4K-5A)b^{)OztLm9 ztJ$W>X0UL!EwnLn59a;Ti%52gJX)p8&p*Qo$C&H`uJbz<>DCm0WLADT&q6P3Ojk9` ztqFvL3_E>#*WKRf>i%c0Ma8WVHGRS@wTPn%Jg zqJhoe%&iq5p|y3_%yT@wQ13ASM6l8hDk_(Gcn4TK?pkuy!R!j*A@gNWg4r@w>8R1? zw#hPlvwsZs z^Mv@Ux8Ki-S#zyLR#cn8F*(O)px2K-ax6`zAN$sMI~R%+^dfgy&QaIM+Gl*v zD&m5>h7&l~3DHmguE9l~RIsjBYkC*m@9W)hx%I}Iwk05ws~yxdjDE+%Cw$X=_FD$E zS@sBXYkyD`s~tVb&WN}ty^ds8Wbx>~r_ecCWzKuZ8lX0WpAQI-4qS_q_I*|OG57D? zB+A2B^zWCHPm=fZEx30LbRn52T@`AFg_k@RZN+ccwJp1k^42sSQ;r|QM&MQ(sDBn{ zerGo@!F(d();^IsLN>p{4XpPMVg*j;-MQZIXjw}{B&4}}1S`k@C!hdXb9%s`_rH zZ`%fGn1{w2sm|s@ttvYK3D}C8ixgdrb+4YYEI`dd4)6p!|9w3^@GJy?hQ1&V#^Y_i z17u@4nkrq{Xt4fe7o-(^)V1keT;jxyBkl)Gl3dR?fI?wZ9q$7cmyAMZ&Jk}~Kd+XZ z`<`30QbQ0Uis+DhW5p${qr@jh4@k{(nD#CVg&j^0$)4~~B~v2;y>qrPjO18t(% zn!m+hTDo#jCWaq6M#*SF*bR-yqfs%wcCgy5gNJ1Wha`sifIURldUwa93gE)Ds=N?! z8dj+KN%$RS*L(2`bmBdFM~zS0h}vscjY*f=H{7xHI=i~Hx$dG4iArUd#cO)jyszQ3 zGI=VXtfy2&Hf2hglpE#SY!bXk*fv|bFlMMKAuo6SRv$1di-9m$L}R(T67AHBlau`3 zNK%y-dgaKrC@|N{D!gV&hIFXa9}MbkR3f=0WNJB6nOIig7l#BF$oZ z1Jei&7&SpT(cdZ^51pLhOx;%EKeO1=V}OE@08E&l)cLhLvG?vljX80MxhR1RnW~qF z1P%$%k-pvavsKTP;qREU!1zi#ZM1W$FVEGer@C^t5RlL0LX$`CSTC{j8ousN_x~@l z-YHD8CTJF&wr$R|ZQFR;wrx(^wr$(CZB5&@?cLx0_dd^g&be9lu`(+wt12S`z1w+h z418I|ffraGXhN8)u?S*{!43PsB3D1WQ#IP7{a0V3L=UI~Noeewuy*M5qSRO380Ulv zFTTO(*SK$u?~Lxq4Vt#8ldy_}Waf-8SmF}1{ziCP4Vg*K6k=qf{a0EoW)3M=R~rn@ zg`aF`^%YBsgu4^^*SgJkQ$IpTQ))*dRZetL!PYQp+q4(hKClIY5dO|!pagQ}lwvBo z87FB2TNX@&4qF61oF}vRj=tq&oVZ#UdhE)5wWDEGh<+UB(Adrg3IL>-1Y5p#V zgRT&^HeskpogRFUF$tKaBHFI!EHHJL_A5LeC=;=;@B~ONygOStXpz4b4eZg$Vlb zb=r0QlFz6vUj}KQSjn>UXu9T9_F85T)(&Xacr?UW{79WrA`yT;elNUp*2R0g{B?N& zfw@?(9!7Y7hK`fxYm3vet6g(8_1DT0&QK%ysG!CFS>iLC$!TQjB5yZ}P~Pr<0AAQV zATOA$;6TTozPQyXFm_%P^C>T+LYGx-4fz59?8@IUatkr^=-eyy{ZJxfC&Po)n`R3) z);F*Z74n@|hLtSall7%=JJ{t?^H<^bof`Y;&`g{(;}`5)A<-fK7NS^5_2e1AUAa1}IU2zRk2f>M7h{^)x%6B8w)kkM^P{Cn1lGSRNXnQ5S+xU-Ja|(4u6-l?9iwjc~izr(?5-oUoD9(~^O&yCmIwP}@nBHd(R{(7PL3M#&%b3f7 zJQ=Inu#cH_)PJUWl{dqa((5j~2U4gUCBRzFZv+PrichZ#x}rk}izxFlf;F=fp>W40 z8h&b-)gWI*YY-g8L&uhowlWN znI}1pT}3-hvWoq(ExacYaS&m)smsKMisltuU$bg8=QOP;N`)9Fc&OlhNO3Y=fBc&b zUMjD0Y9f-2Be~yKYC&bFq`LUE_&4drsYU%EXfakHWw&+0M;R{5&hquv-x|_&6fKJM z9N{!Tub!Ize1SS8NpiX`(fZ5&6kCqfhf1iRFSj3dCoUbAW=Mf9l2a^S;;-YM_V;cw zDS=cd>i!9jsqIo`ZP!r|@M~P4_G5QsQiK#kR}N7u7dlsRA%d4FBM10PblxV9=BfK7 zBh%n$&3)8Qup;F#n>~KSu6HVlHY0gZmwH(8{m59zFkel^kYbAcrIpPp9l=?%FR$`- zR(8K!{k@2k>dP*7SGBH2YjeJC6Rp+9nd!r#Rn3$twi= zdOpK5yV+A<60QpHBp7BpoDsTj&3C7E%3DiM&*Ou3X>`y#5;ak3NARgy`~>V0l3~Wh zQe&BNcgTPJBD=ewwM2U6ZfNmj7Z52`P92W)hN!6nokS6u_h{qor(zdO-r6YEC04R; z*#;M*#&c9^m+jUO{k=$yMaOgk9Z)A$WEyeYbLcKU>gBhzki7sbyz<`Dme_3JkaB2L z>jl<~)0gbHQ)ux~oh)WV3%lTy&5(0FcIqt&3JFN1e8~7#tI4+dLnB?`|HcR3zg7n1 zu{YJ%s^F6YIY!@Rq8b7m%%~^hm;;nf)7|mj1>UUlcX94YVfvAo2P+QnFoRoFydZVT ze{MAi(qov1E}zyh@M?s=I_Z_5Nd7V*O=Ab|AKn^ z%jlN*Zxrn~8?oA9ZHxIp$Khyzb(k%h^C{s7XCNK8n1#`h&mf{F!i$+U)}(7|pcQVV zDxYEj)RoVcmd%2sCp+g^GPK{wcpMI$|q`PsL;v}Xq1gcP5>o+hN=W!CDr#gj^ z|3oeYlSSgAa769Bn|i>U9ldmk(u$+8@N#z4?71?|;}JSFx_XUjjo(C!j3%SA79j{1 zeAVgtZKRpnhOn9j)k{IAbEY&0Ku6i_99==6T@rsFZm${bec>I*v zlYv9>uqLqa$e%d87vol|-oDiD21$6bL~FN?8__|K8RY|VFBDlTgORhreK||A#^V@E zaY+&n8ICDmZ!j_WM~aWrA8Uc&N)J?mc)rAScGP`?I*C0^E=Yiy(7h8iLCtQQrQ4o_ z@XeKG*pO0Iq6jpmTX~+ETL<>`*WS4mQ_u3QB68ha5H1-C^MTj1xz&emQh$#nXHlHy zruT<*{=U)e!snTtw6U+vx9lMt&18*q@1=H)ccib>UMN!a?bMlo(ZKk;y9_d(LHXCm zbI#8M0Kx7)qyR5oTgv@yU@dvhvZDw^pvFk~qSdrX1GqyueyzRGs6CU){KsNU1}g-w zhFmP?#SZ8j-WZcYZMef}8|cg67~+_|_TucR&L%$&WiV+{!jxCda>pqa5M@y;`K~Z= z2C{S>H8nk1MT8<{h#&(`%j>I@!9Sl`!lSXfB@4Hlt}U?|k5{-g(^_!*ipQbzuAa8@ z4IiApw(dD})iKc2T3Q}m@2Zx%Pn^$L6A|aCIO2V7MNi8SIxP#IFBYFyaPHTa@-DVI zaov)iyq8&|ysp>ZYZ$&s_T!%{`K{9rOw{ts&o#rFJRL>oSZWxWBWp`^&iAaK#0tz*Mylrm{ay?D`t-HNbSS#2%MR&i??{LgW1f;} z&lu|&W0%VpX)_V@<3}oGIUF72b@MU~z#?R5xZgGvAHhR#$4i@Ds??{jUF6t{!#NyCIm08=1LQB9H)@ut~HdIu;_LMI?Tu}Ld)2pq@4AL*xTz*q^{?-kyld5cC6%mD`YOR z=~i2*Q3=q1qyRRt6KshiBr-`m2>IvJpO&Ed7rxdVFSVMSs@l#DB-3eQG=+o9kXZP5^uBQGLV@G`p6LGY|QBU_5OZ6-s+%FXsFLrL)iiKir z2Gp&gl*nBe1{f7;dU6fzWNVe$rnNcmlKZf!BDQ5c_vR3CNs!c_7eC*yv0o~P@f1M> zMH|xDYM7i=xE}r%R;K_Vg8VEV3gU4`+{$W~tbc=)iY+Xo)5yeN>U0C%2|Kc&a+NnE z(Y2+5NKvI558PQrwtSoYNy6wefu0UWB2pyYlp>+@o{5BEszj2u{UT?{W=9$FXB8qbUodIm>gwGpIq^F95+@* zR=_w`sa&7ky}Z0UKZ1AO7~w_a@U-0RH0I5_4x+Qx=9o<@70lP5;=M1Bu`jseFH{9b ztRyiaa#R?1YaY&&8;g7>ydfyZ_Sy8)BMM)Cg`+{&6U`mK2kHE{JU1$owf+jOgdTjqlz^0U5S#VJd6@+ouHpSeghfOZqrzk zcrg7wUtDDs}RQjL^N937p)_ zhAh^bemh)D1OpvQ@@*Q|yCGNAMKCb{Zygpdc-`4vh0*;q#^F%epMXVZg^*J2!?D3` z=vC$(!CR9%)8}ZnL~FEPDsYV8;FM(@r(Pppy{Gsjk2^%yr27AeEHv8?o2qQku7`6- zu2oOfqH1Cf0(zK(1SA`$RFXmC!%;xLt~-dzTqx{kW%z%I9q>GFyr0G_k1?J;61E#K z=J68!Ho}$uAkmx)(4k8@#8AE76Q>k#D?C`tQL5kj4tQJK7q@rv2(q0vXzdlgACHr3-et)Osw9rnH4D{&j`lg$Cqv&~P7Mv^diV;(K^%RAJ7>p@ zO+wgx1O&rfrY{DM$p6Q+CbdS5|IIu|XI^3fQ%`@^B8xO=L1%n z42yN#+xQ~J4FwlTOT7fRZviuGh%%N?F|EOt1{4kbAD1>gU7EIsXp0?X+N{)w^bDnmF6?WAj^{@)rKrffyq60jSoeYqC9q0KE-;B#u0k`<6T@AVw))Qricf)bb051`>v3 zohU_IrWk&=SLtZHg_{w^d!|8|p{_d7KB!Lr_i`rsQPjxt5t$=|2igT8 zEzRi(p0N=_XpuxinEu!+Dt7i29fxc!Q?^$SsS-k+xsZC~xjfa164|h8V2Q-R_T4-=OlitXnfZ*FT1&hhMfeXW7hORf#Z#&i#SyS@k%yNt4sT z^ftgHyH?K#n|U; z)=%ES3v_C;^EM_VRYfY<81k+e4Y{))(4>L1xi5vMc5dsL0>&DVp4=o#vuNtKIP5bI zOYnK|b<2;Ed(L){-f&T6skkHoF3=J3SJ|hxh3ZJwuU~o){SbuXr9G1yL5%wy^QvyIWmwPb)ATI4w#ool=m;G>6W=6;I)7;oqS? zu2SJvLC3HfYm{GaXY-qE@M%m?vC`EObp1sO>R1D+n@Ur)mEEVpMKblndSiB;)eF4M zjhFquh~_bVLr|GXW$!Oz3}T_b5?I}azhtFFrDT~PTPAc&I7<4_F#gVYqc`9Ds#i(v zcoB2%75(7kZTp>bdx_GKIg%xWGoQz`zs6u8)Rx&$z03QD7IYY!v8z~6rSdh5S;i6j zk-jL-=!^h=UD$5n9l=_DPGXQA(Q`)iVt~ht;{qZxpO8#Rcz62Uw{erTj~ObXQRJVG z3yS*|!4ZkRv#F`GgV%WyMm{wt>P_)qUl|VQ(jZ2yLL(cM2-He1Fqsv9}v zG0_fUY}g=C_rD80&;-`dBW-5EvyHjL0wUK|SzH6+>j3+iZZnGmPsTmc1@(4HjQ!Lg zjhw>skC=5q>S9A^tY{nJaP@K-c!`2)9C~_+$E0lLc~;jpbsj2{%+^E-DQXb&T(Hwp z;)_VAIlwOmSf{A9ji9l1E6OnL)b)^KK=Hckrm!kRrys2~X`_!qE@0l9*Lg=PmJ&z3VAPHFF*+G2HOJk{|^VX=oI-+%R)!c6{(-HIe!Yafm zN#t!8mu;_OEl>L-5_QxpJP|w49%LK6elU$5lCRkbaCFdJ>6tQCrZ zz6|W(hT7Cfn=!*=oAj)IVdOZAaVq%}>~y|(d?FUHGTE!EX&R}@siSJzF$ZKPTb>{V zNc=kJM4Rfkn(K}%AR3D<+vxV;aY8R0nO3Gug3il^GL+%Q@nf)*#t=xhZZHvGsh6|^ zieIBlOM?Z2-X-dbG4J0OX(qR|8RR&TcEn_W^*7x3pa=Y@K58;?S4Q(>;FvVqOd6dg zCRNSf%=Y3bo!78Pcp^x0QUKJa&*nj2Fi<}!rw0SuGCmnC2-%-uaAKsD%C15Dj3P!< z32@;kW6ieXfv*;NP#t~#UNV8$s7tXQIe{Ls43q-3urVA?>vB}wwzN`wl^m!%L>0DC zls45wEg&<-x7&6xu>DyEc)HH$_xxV`-%&R#X3vzDNJXG+sAe=*c*Wq@s2ine)t zIxbnwoNz(jn6KU2-%NpY5;`&zM5|`WYd&*m2`^Y43skQ&P?TNC9VDCOF}n@-U=fdU zOI6*q&U8fb87b1Nnm2fHUJe$PK8!l-fC?rGQLa5qR&ar9L?eYfDLJ(fU}fB9d}L;7 ztF5BAv>x8;ft5!7&Wjn4g57*yJGz71&~5{$U|Ap?g}pBtKmbQ)WH2|R7A^YH6KB2s zq?8j5bcc-tlR{qp&I0rit?pFmj&h=Fy~KQId*qVNEo>j8bneAt;;Mqg$5gShM(=kBPr(I7N)P$^>!_8RflfL1$s>$wAI(-V%YrS| zImc_+UR3bE@S>r;Jhz(*op)Ki=UISwz~K>gbCIWOSRTvoORp=P535d8qkrr(cUOlJ zgKb5|ibN+)__XEaZ8Lrr#j&au32{bXY~v~Z8S{8?)n;Q!nelvjFX?hBI23HXz(V5P zwkZxY^Rpf6h|Bi#>y@)A9@Pj^<4$>gTA!o@CmXnb4Cz`LqvD&1bSgmY_$>lL!O zazTCO)CCk1)u+c0y~l5s4n|DrktC((ya@=yWEaF?%XMmtp6s6sDB(gB?hv_=Dw z3b!m&o#K5|OS@Hh_(a|>Q(T_;pj*j9yoE0%ZTw4D>mr~^s`u3bN_!pu8CqfefgW1}vg~(O| zcFl9qKl-VPZJi`&+21=L&~Xr&Rmt;O_EiDd=tG2lw!}n~X5N2|T%>vpY^5HC zTCXFqS%aSPC_XddhNO%pj@e*yGsMP%@d90PhgL_wEQ9~lp_bckRC%}-8oZcxK4mr%PtmgnKBbm?;U+A9UAV;h7lrzxn$DCjALL?7--B3^Hs2vYH#q8VI{P(kRb{6#u;X zd^or%3o@8=Fx2{m^ulqA0cU|#@IU>C+B6^jt@Shc*W}ellvUx~bm4#py=@4ZF`;>A zh}e7Zr@rVPGu5k>DeCkotOW7DO{xV(PZzf3g)jOl`2sayXzG<-`-Jfs?a{t|;${w;vaB1#XsQCbt-G%W=H-9oTsd=`a5;UM#6htq#90L(>Du0S>A!t zT*8f1&ymZ$J}*#19o;DT&fd7>q%;k!xRi|Y4dwI3PihQ49B3Wo01xEUW+$zRvC0@Q8aqo zqlo?B^KM%;&52sIhPB#Rb@cNC5y-+4A%M%x-pMOm(Ue75YU0@wS5@xOxJqCiq7V7S zdWf()N2T`{aYcceg$f=(sw86%!-2T88D?(YJu;yE{LjTwiAp5~8V21?OX1iF8l6Nbobr^L#q_PQ$gUdx>8c%#qY@7vcp`7IWp1=0@bjz`TxC zkK)_XcUodj8?}XT8b#z2?v+{h2*)}`RuY5(ap?LL)sc37PrCLbymFRMq;#uOs-YpH z?6rY7VKe+?bE;Z|$5kTL?cV#k%GP6ns!4-ft+!zplt$D4?gRcAkk#@RfAaS!tRHO&Nt(Lx#1MHFavJd|k z`A*tD>i4XJBSy!?=mg!DkXJdK_5Uy9BXdJTw1*;6R!o}vWHjR^r^8>aoWn~YWc?1l zZzm3wqZZpPhx@?siKrqoA=fI&!Hq#9KwUKMw#3qFt3Gk?PdZOkC#2)5F^>~_Q{HGj zL%~x)h@TRhj1TKZ1BXd+1f&D4U5qr^ufKlyS1SmXN_5Sk;4qY+Dk$DrQNYwzb=ug8 z$?Duq`Lj^X)5e+NIRA7}MG(y3W1WX6U~^xMrT zQ3`kL)Ss1n^i=($L+fs=2iDOGoJ}N<0ahXSl`Ooi&PFc`_@tei2wm_Ft5Cs)Ja7*CT>*$-OAKKlrOqF(wqiH&xWp~BduH* zXKAeYqdt8kh$n@KnZ4(UiDK=zlO?Z=+fFev|A8C+zu^85QYnR}K-w<-(S>-}ySn=5xt{>?V z&9pg(yff#F7| ze5EGgQdj1E{uE)yrhma&WdGGELUXxqf|!9-1$Bt)r3KCtk0FIp|8J13A{0^Q7^h4! z33tGQ3Xc3iIoL_%5479zfD-2uN+_*CZH4mgxOCflLvJAI|8E5ItnvtX8vQZo3>nSA z8xmqCovHRZGNKfC;3j{{j^lT%5UWWSW3B&jFB-R)KPwY@(18F*pP{rvqo1gi<$E+) zyY<^py>t=P2P)A@A|G^)KX7=!XmVjQ^=(;XY32dA1F=;H)53sWHOE||v+TPqC44|**9UJ4&wYk=?8n$8sXT8A=BajoEUA4j}1tKQocA)XV zV9-q34B^>pdRtBiSqmYWr0}b_tXN=xUfCmv8|Y707Q9@AUUUGX$y2`kp-Z~RcD$du z@%^{mL{|QU5n*9WUlYc5X&L-Pv!zNu zlFmS?H2cl3?}xru~m?6q(7dn-XPJ`vs))mhi7u*BthE9>Fa zk|_O8Ydh=?vH}53V!dFl?LZ`mwm%Bwvr0uEOeGf0Jy~PU3JL0S8t3_S#nNnY#{R$2=@%!)Xf zS%|RuCU$gU=?SV9n4bZQ2C@_FooeIZ%1a=M?vDvqh`w|H_&7!%zE^-S@!}ceHM!eR z<>x)`&QcyF^rxc zbpFdS^+U2??CZ9z6i%uA5bDm1;ZJp;s?0g&Hh-*PyeSCm0=TKNW|gDG=;9Ph!&t62 zu|qGP60Gfo^>c5Ad&AAZPggHwL-`VPMH6m1;f_ z2fb@6zJkr)-zRv2hr|1-E~i0ypqtW|S+vtP{B;OVeN58PJ^!_e!!CS3tzr|xFJvL7 zB>qwm5h-fYTNd>HT173Y!H$FpIR^E&ua|co?qs=N&N#hr-C**#B#h0PrPxPEH1xcd zGGrL8`J^3mocGO#%i{#g*_g+ebB7L94)DQ=+@kiGjh_;R)hKBPKc0n*ESH+Dr(G!} zpLX1E=M}tGey|t{5BVyGj;v3up+QH?LVMq_sOS}Oydf6>NM zb}OQ8W7*)}4Y9ioEpwzvc{1%lc<&-isjS=Vv;J>NGmxQmNnO`vfulL9=6d@hNo>|H zFmyz-u;jKl01aT3A^bzdCzo%Dz^TrP%~H$@!wAoN3e|Fy)8TWc|n|N1Udm^sEJ+(AU_l0g#5k5a*=Bzg@CBECSs;5eGY zZBi^we%ek-ENSA-R`OidP?Q*mE$1_A5|3I;U+(OFw2^yM z`ilWTo{#zc*fv^##IC9ol~OCBLoJkDfLXFVZ)Iai|CwZqJD=PMJh1RN+P#867FA@j*lppMo8J^L2t@cGjxb^CpAMJ|K(@ zx24zY2Ww3)8`0cVf9}CTQ<(i$6cFi^|aiT>j(O1 zemCk2hXp$hw@l|Lp{v74L0$*uRB?&v=ig{bLhe4?Ja1ayhBDR}5eh=(W-Y_!B3wIZ z-@#IX_>4;}9L>l0Gbx9l9s%l}IXRr)%;}8ynwkLRWHaTvZ5YjU)LI0|z}>P1iI23R zGPxBPH4I7U!dwP8iQWU^(9%ah1`WHD+9F{ zSXPY8tl&rN{x%Y#$xt*gC#&D)&4a*$r~N`W0!XmdUKTquu&dZX_iVlPpu5;9yZ3|Q zakfn~@;Ya%Ej%l+rUm5V8u{up`bi|30ug1t;(({B{`$>o`LtuZ?)1$Uh;Grd(a(Rcxx;$W=6taUV~x`yYh_0*rYL$nA@7KeRz z>9F56&@?hxe7g#0%RnF16U5c6tqgcXOm?6xKOw0qhf5+*pwXTO9gz4q-yyF zE-Ti0_NngZ0F!vna-ZxZ34xb~F%`<_WiNi+n{>Iu4oS26(pR1E$z8U?e8-7=4LyF8 zPB30yJdwrgm|~cjoc8^lz8s#Y;H}zBS~KnCbDlf~bFs)O=VSE8$!Cp_go-yCUA#tH ztBO8v9r&N~#BZWZDbNnMnqw6vQ?n&xH$8q|z~6KByUrF~>ZBIJ(kBa~Mylij#4Wnc zg?Jy3UxXFF?JHsjnb64r}|4C#81xNLV;~wc#V#@|4l{NY>sk{bXQ4 z?%6v7qpL5>0T&Klv@>!S3G(~~PP~OthTv9YR&-c!XsxV{_7$cUAmYuxq68lI24`*i z9kDHMAGc?KAy7adrvSJ+A3Ika+&kF3jcdeo!$z|JV|VjNP!M>cQzsqUCjn_Pl@+NA zJ~y9S_E^id#|8kj)FCxN%$7=nyg6EUZINEg!frq^bVU4x1%=rTj1!4sxADG36GIu( zET|{Hd^sRz!asO)_z4^VFj=CLt+F4($sGW_AviWQ}AD37de8ns{43YZWL{ zWSvbKVsgi<8}!D9hNzL|6s$vHWWGNKR$Wc-xm_J_Vqfv0Dl34nI0L-S>Q`6~3a(3B znP$17`{+N*S0HK<*Q(5u4>I!<`nblhvwX>KfPpjjB?bA0%n1a*yfnh+6Ll8`+vA7I zoD0J3#TQ;e%ZXUKw_%bs)H)t8!Q#;iKfx6JKxS?gd z?vp{knmQN8{UZ&H)R&H98p`R&FudH%#yv*!Qd=5@M+r%}vZQNr?dt!6=15snKyf+rg++iUVs?TyZ7s59j4=smI`T zvI~%zc7E+804{|7#V)HXfT=^Yc_qI}BLq(JvN_T+W^c7}22+i&SXC}~wcjsOC@uhA zocV&YxUWBaaHqUNT#-iPuiqjP(5JyDXs16$M!weaX6&Wp8bkxPLPgphlOdFLi4bfk z=#Wu@gEt^tYXQ8Ku{SbJG0z5S=DLo%;2tCw2J8 zDv03~$8dX=!&6qU7PMUsh}yy~ohuJy0ErwTkEsT#`T2ndZz4141mkZORp@f?Pp5W> zFzudSV@X8!AQpT29Uta$5_|OanTl7|N=Dv;6$WiNbx#nJ z(Eu0h(OU6kx`bV7om4q_1ch$=vjPbOd%;=hFkH{1bbna3s5`TR4}@o)fQE9YWZ$v| z8O8;)1RecR;E5Z+zW`9WCarJ!+EBhj>JCaE$x8b4plo6srJUyZjT^1#d+a_=CENCI zrH}=K;)g%8akJN}IcdpPXY9_S!ckTFHjzR=$Y-F*L^zSR@Rwb`tWx!Saq6fmItJgg z4i!fXoOd4l;nqOER*vPM9?p(=e(&bx2-!8<0K}TNa$S{v#Gb?ch zUU3WDrQ$!FN!@vP;6I!WCug|@S_5vm*BZyO-^*F5J|Ig41llzSltZUd8m3cVU26Qt z*fsq-PePd4-YaQ5Zgx*Ix6>~G_KZFj9bVjl#Z!n+8qXNr%Pxpr)bB0u;tc<97P@61 z(MO=ou*&n_eEwo56ozJFTu42A1w7}pe171Za5wLsGvN+zH4OllA~)&&f6_aZAAK$J z4@ZS#_ahC%f<4c>W8QE630dGi=t>))YfMwTe6Iy04qvYk>|D|ULm#Gm_sBCWZokWO z(5R&)lvE2)BS!9|_ju%O%tSvYD%FN@!25L2%S2S*$uAjn z1+YhCMcK>pm0A#vg8CaUc!_w3kE@(C$;8Q*_i@NcZh|O%eGRi}X174gwAP;va^X=z zaAeHw)#U|Qtov_!i3xt%(9IhDrEB+~YRND0T_WQ>;ZxbXVIkjI*=H%^5xYq4X<@uC1#~^PlF4^iYdIco0lvBx7`m&l2ayxrwEfwB+Xlc!Ct~tG>!~YVM==yy7q4HH>Li zZ(Ntn!+6H6dTK2`H-72LoPNQhaAgi-ydM<{QjSDDu3o;h);!mQ(D~Dr<<8DaFg=gt zFz#I27EZ@LJ^I~4cYmzPa!IoM_;Xc#jRC9ZF1}M4!98~;v8x8{mz*H&8r*)IxYqR+ zvS!Fk_2_X|!!w|EUN?V1bg9TEtg#|`Ki8~m(L-$5vAdnY;!@B!{%8Hf>o-g0WIC*$FcbZDS3mlL%nowojOc_nWU*LQ=?GA%G0vuf=8Y zD-ZDe$bH%OD7X$|D(S5VT>&get#-v^DYB z3UICtr6Y0FyV?Cjm6#fuKV;C&PZLwXL=|;uM^iUcNl%2#K;kLYBQy>MwrPCF{hq*p zQSyrGa!3=wTEM;mLvQggjDn0YJ#EbCsG-kQ=%1zB1S|~ z*KwhC)+pNB`X|&P3zHOoRwV{cgh*VmYom%%Hm#S9Y>ZVtJ#9IXjaq-qjmV;1OLDD+ z&wjB)m=&&)wF$BD_xYMegfl^9wg831dF&!;Y)L!_u5q&*{%JRC#1lOekmLz0;N_rF z00+Uc5n_*=tiDn(#~XGXwp4wJAIKcL;*}e0E%X~3mif=W6&!&MFU0pBPJ;R4h1x}5 z1pdc{lXLR10A_QHRJE>qfZg?}n90BTfs;4os)5|$%bP#-lxzfFwFYX!ejM_BI3L9RrFUise4v&c~_e2G?WPCvd5teU>tzWsMjxj54U7w zW_b;`+7Kr{(^5h6XQmN6V%NcjIE`_E#nYNK4-_}&vj5>PFtpgWhn7RwEMbl@ybdK@S@nz%3B%SKqXXv4L0!1lW|8T7k zzp{1h&r`(_Nw!b*a-+?w{$ZeTnqw;(Wlk7Gt;Aj45Dxm}SjQ(8dT@yVjkwHg^2}_$ zBeZn+`?)pvgDeLxn#PX9*@riF$C4~&nguP{56Nz`TNj+Bfx4~# z+SJozQ|`nIDrV2-+i{Fl*l;lsFL2phiUN$KU^aL%j98t*Eo!!%r7rT@ z7oKI2a5=&&dI~svF6&-^^9<+~&pp6tjk> zS0)(z$6y+YbcvL9G*x+J)O5N{8_RuW2~QjTk2rHGeRjSPC;G$65rCloE~djY=J9mc zC_Zd;aknJ@jf)SQol5LY(33_TI0SazWo*JXP`#_~! zJ&0RyX1V|)x=qrIfu;}*r;_#UxL8-6)W9U^iYxJnUS11C z#gDeeSGIu;g?`KL*FOsoSo{)0^2k`rotTB0z+nldE*gED+WunD%}8HCIHDrPL_6z` z^BsgbjlAyoRga&itW*Yi%D><*2J*w;!Bm1F_L^u|o#6ab%j1MDsVtD_Lc*Vwdo)E? z2oY%Zf=YlZiJ-%HDu6w-%|LR?3WU8RG2)k9t=1k)oqj)Q32w3=^tx4(#juT22fcv; zB@BAhqm`3hP$maA6(1dS6gY{wBrwsO>pi#OQdyu(Lw~R6tu5J{b@?KbIPw&Seqv(4 zvNm-oW_YN5!=lS8Y^IcG_$&eLuw@yuihxVs*D@b>jZM?8(;uU7jTN<9?KU@d986&~ zPgRqvCU+dk2u=d^AFsKjL`*JGx;ptZ7HFF3Q?naXn`rvrs(6K#k7|Jm2b_3q2vN|{ zl#thWe7u{vw{I&?3^+c~1^8Ipo9z|Zg4g}Oj5+XR4eQ@~E^Ik`xK{=m4c05T4kN}0 z>2_es9gpq}bJ~CTw6?^4j|?1sEQgdT*R%^zjwfZ%ktRL}&Uj0woJ@JJt(Inz=ZDm)yhB}D+3EBVb!B_Paa{QgsE@2j4#aem6 zYO)3Cv^=d_+V{9#vRwGX2>G_8$&uMJYW?eJE7BXa)^(LU+^*KI`3GoUP`niSWPaoj zyPl~$cYdK5{Ql(+Sl|~j6Nk0wFskanTqAbafCK&DlHn{jM?OGi@%FxcZBu3I3(m)k zfyV4>D1u~Rfpmu$0PY5_gM6OrFgCAadDH4ngVQ1BZQ5|34sEx@Cii;LTT=ttr!*@S z#z>l2%+@42*yIQVkLtFDa%sEP=gp!?ZV*li8p8I=3X_vZEp{SP>x&+=5Rn$ywhyCJ zGKSdCw<{hhEryq_)=5>7E&Xg2iB2)^zHq(*ZIjV!0;Q96+yQF(ZDzn(r=fKQIZFT7 zEdZg);3K1B-X+>?H|3;K;wOs+(I-&!Ld`FWE^7+fgGrD0&TaW*Ekg)ST}Fzh>UDYB zV~wI6Y)(M3$7(mvV0_O(J$#ZuBZ^p4`8+W)l>L?}ME$NExF{gg@Qf^^5m~$_)^X!- z&ZP>MWQYz|`7;IERk5%&o3e0t4YcnWVpFxgoYS8aW+?v3tj@RKg*)UB0!*V~^tS;! z8znZz*GK$0|NG2Zu9#=8;V!d$&*c`xOI}(QSOB(brsl*iz$SkqZU-Ad6ooFIjdpXD zmTAn>ic=es;KRk#9*Dq)NR}rpkP=l^hlICfOj>QV8F131fViQ=-mLngfpt zZC24jeu3^{FXD19AdsdibRmGV(xW_{-h$()_iZVzI~$*)5cQss1~rmWYOG6T&e+Z!7JkeG|mQu16qvay)gC7kP9rzmH}I~<3(cUS56NN zT{yT8e$J`$-wq8UhMz2u_6ae$&Cm`PmrwG&T#IQ6Bax&2#tZYa9KXiV7>)38l7-AW zeKh|U0BAs$zm7s$@)btI^k*KfPn;L`$)J}Z^typby(>M_Ro?juLhvkyS+zZ3d zw-kD1rc94x`oeu^L&iyzSYXRONlwW@|NHIAvg6mZ++031j=a0tefH7rs{6wvNP0bQ zyGORkWxy4g^NJ{N#i zl*9s!S?OHq2y*O41c4R{vXx3+7m!S+QV?HCe`Oav^PQv<$Sj23?<|~Ew`D;EW^aa@m7*e6BRd-7sHf>lV6$$(}3KPv7d_Fj|u3Y~z z>Nh2`{Byl>N|L{|NhZDyoa}im`C?QNEQNDd3GC$$1a|HGoie#{Mi8Oh=H;l%@T(s( zJeU3g=~}k^s$#o%w3I5TXJS^Q#OXIF4`(^2Cr~zK1ej*om=}cyay--7>K3zZWoKa{ z)fY@K>1#$CHtW! zVb&@LRib{x)fg?)d?!p*RRXL)Ll`f8SqSyX&D+zn%ail*$Jb}4zrVgb8DE{BHC3xs z8EWw88L;tt>Z~Jk3ype0&{yydgIIf47c!Y!gXEwz5*|_rz=Rn5T6wRcdPi8OnB8T@ z<^Qw^9y!lx+v?#~7ferYXVlt4I$F7!*)}#}Kv_uun@&BHoU09ccU_%s3rC`z!&2*A zD{W!u_1e=~CLXaU(JR_oq#AfP4pcQ*LTI*{>gWo9h~?2QeV z{K4b``un;hR*SIG;8Cd--<#-i4CRE^J9JsDppn4)O343du~lPCP5-`gjZ$6hv101_ z`N&xFI?a`(+iOL>;RRbn_B67uNeEXb3U;ffpkrG1hV*7|Gw|qe7yi22?zWl3YvASs zd9kxdqcgT-;Z=f=+TkJ_3ZIW$;{8gVk)LZomUIpe^2xIvLgNe?z7YYJ$u`PSl>oW) zoIbu1{seEAao)wvOzHfj95R=2lyztP`M4Qg0h9Y+oU>6!;SIPMM4vqGlbuq)EoIxJ zL9!%-%U&fBr8GG8RFv~*X@d92X2J_N*Ig_rXwlC7$D1 ztalV#X9M#ufLWX(>}G-8bNftM%E^YIT=FH<$VOqP9o?ku%(r7q>2Uwi&A>GX7x*UC zGvA>LlM^a|Tz!P_XRSB!`=^Jx)6LnSXhL_re*wK#U2oeq z6n)pPxJBJcF1#czFkpb|EJc?9Ew&<92JE2?3|givHWDe2R2*YSe)}#ztZ#W4R!lFp zqs_NST6!WfbtYAX0-!K&KQwDZy{zl;#8<$9H5)PcYu3 zTnT9-k}}I67R6q&ZK{Fr4P-2)TwyJq2$>Vj1fM~XQG(Cz8Qs~uUq61h{Csn1O4)^V zN;K?O1gKg6^! zK)!zD_atMR_i|h2lisp*se&aCDak&X*7^1qe3`Wn8T^@2l*4I>ohd1x4z}e57O{#bsv(gg2Lj4@ zVM7yAX4+TlqQ=l)TmV8yNT%oj0CXA255y;SW&f@U(Ww+W1!IcAE~VV38sBoE4MJP7 zjjUXwCDExowt1^nEI7uMv5s8&)W$hc%*7IjUNE(C#STH!MufR6KHzBRF^Ez4J579B z^AgRnrWM2xWjR!O4645qRb)(?v?b7oB16MR;mdI5iO%3{BX44a`r-WG6HKYnzntAJ zT70Y*R(Ev2q7S&mR5YK}(LHXya@SD)@rIg>c-?#%)ho|$Thtl^#|_Y2=%y)Q6)&kS zC9k|c=)FqfL4f@=y1Gw_?#4O1!AV9*oI+G-a*CQ@k$kA`4DdDf6gQ78+3T*|Titfz zv&e-nTG2+mh8bPK*RLTA;l*+}yh6p*#5hi=oG z)mAwvq83c2gl!ad)z`y1;dC}+*e%sVtC?#$%BN#R%sXnnXIZZnbC@oc($YoDJjw8B z9>Ve*thK_YGk5c3ZeG3p(cQg5Tm3&g>Q?`29;Y7p-16`@XO@R&fpm`WID)b>%2Dns zKm5jg)tQmcTeLf0`pZ7c(?e7AAJnrg?0m^bRBRq7j-fTDs5ac8MS8Q)eAt!{XM$5l zWYKyz@Nwwy>~#aPzK`ZjHt&_2xnmkgJEX&xXvz~{d1HEebp~hD)Q#}(0C%<0;yA*3 zbk$x)tiuznraOl1HzM!Gj&t}yT2nI}o_VJ0aKWsr`gGUhbJ%LF10bHWMmODul*V`F z9QR+3pj}pknCBpafN!V5yYXEk=R5gj}TuWxR(G_oA6) z&NEV-R7Y}qlq5VO6;oAxD3Fs)(wW0F0~(I|VysS0Ng>@r0`{j|gIP~5e{2uWI~aHO ztDGcW*7iB-W~FRKaQ>SUa!(#Y`HF`B_?aNUp5r*W%y-w9vU&L--lUZSjpSDeY4MW+ zcRBoerM}cRrIJlf!!Qtq_ddleDz#KaJpdqJ3CrdLPCQNqCAKx5lvaqlk=PES-mJoYrS0dJ1pVe zm+qB1G4PD25o4U+?_M~_%qI;9j|;En#f<(8?97JZrd;r-Rl$+z=);5vG;M} zx^-0apCEA;1p*i}HIkUfq)Jjwjl|dL1$wa#Y1x*Y54xx}q=xf(@6C{>Z_2z3g5FU8 zM=;KXfm9R-w3bX;P$}3P;geDFn&&uUWaf7)!!G%|koQV^kF+WZ;Hq3`k>wVcOrQ`P zrJ-ChReHv(P_hGMfsAZ(f%iV{%g0gt?K*a;d|{h23-`=GB8=5yT3JlsUf7&Y2$WHk z=17GSkDwO>lFiT%s3yppk&+b6gtVp~1eMu2jHMNJapNqPid<0lodC502(heY+XT?a z)qy!HM8Yf@VhC8^49SCKbZTgYOw3V&K`&gXj1f~&2rJOkat&E!bCT>zO_Ag!M1Ouu z;#|O~L9GnW)i6^kqs&YcU9M(>X4pGjNd=c$pjB{%B*^L1nYv|H)88;_M)d+-Fk|-l z;4h0ZF%4e9Ljd%73EX!C4?`hy)WRl;FKc7ZuVpo*zEZm-cMS!Sl;4Gity+r?w9INw z&Op*gbf6(Kv`R*eT%WW=y^Vb46$lTc2N$wfY{Uj61|U|W$ZS0pM1)4fY@+BqT*Cm@ z4<FXmEH4;ejyJsIbO+Jka>F5*m{T9v|W0sX1yObe~3BY1!Y{mYZG6 zE=nYB8Ctj7po(bD);@G4kntS0^*u=%{FdA77xTvPep=_)-|_PzxSMi3NEx?EFOCP~ zPt;S9g$9fCM30Y%iu5FSle>jHV}R1SKz^^D32`1nLcFVt1Q#4T3=L2 zPMfJa8i)cVBqYEAKwqZzZ}kWIV_g6w1>G!9JgFVy!4?6W#o671C5WBPzD}>n) z#WW;Lf-M$tkzhqRtD!U|82YX#xi+|yRx>#32HKQaSdFnl*I1$lraNVz00o16g}Q>Ns$=VfwgFkp(R+e_Wk<}ihbZ5@C-0t6ju zf{uk6!rH;RCphF2J4Df5sV;7pAnEFC@|5JFh>-+vhR6{8(V z1ef8MAB;F3#XyF}^^hlfF6>ZbjH9-oL~+z1V0>qwyXt9Oz|+CVMQwU`pm~PMQgC?Z z{G{>6>81(fAR*wGGr6V15J42ZzdZyk6vE(S#!cbb)=p4EwQh(mHDNf_@h|PaAr{9J8hK zWI$$j=(dgyv%vuN>5yMDvw>5r#`#z=*|l zDpg~`?hivQAGiPaKOhD*%`xCtD%CuGy3q*v;Lq-^wTSNSQ2q$>9J9LRei+N!<;cCa zcfA)_ zt3)+%sOa+^^uR&RQk@Jz8ICC#9+3!VvC;#!E>xc?T`P~Tlo zVX51c=mRxIIoI#L+V#MrXDxO*q%We(HT7ap<50$iB!crYd>+_S_V=FSi^8ENB^rK4 zf+zVdgU$%Yk~}s2Ww56XS`Ua|#w29ce%Ey289r+L>c*ZRlE+u1Ln1rm=iXKw=}dd` zZG@!1e%a`?sHkhanca>5XQ{C9d|AbUWyt_Mesqpkrgvp#S0?q5`8+espEI8}b}uWR z1W3J>9UFiz&zWBx%a@d0dxvSxZ|t??_}KXLoLRO}eGz&7iKxjj-K>lTSVGLWz37rK zZo3nE`#hcd{JujUiH%||%U_eb)fG7bmLK=x7P&o{%rD(C~M)ZfTTt|~`}CX&;4U;dSR{62I|YPz zt-ZirY{za=8VZQ{Pm=5Van7-G@8olpS5Y)Ris*=b<Zbil;`1_CxZGy+DE(%I?^Qw@#*Y5OW^EwEbHy{F#G5tpI)dQ8{ z{)$!R^6j2nQ7o-x7dM5Dr(3519UfB8UykD`s1>Z@7T18L^jg4kQNNm4k*4RyXcGs# zL+XF8aiU8m+{aSmwNIm0vccGg9>RzOWGxk1Wqm|%9q=KH5f5>vs9!ribov_7VJBoT zIN5$bMLW8!8`-4#fNZVPyRuE_wSfPY&Hw5zb!*eTsaxyto^D&8u5PXQgSxf%O_1S? z@6p*Dps4rcYg~eOpDKhc(ASbY?jLxT&~ah7D$tC)1#ISX|JV-)`GeZ;w32^R-LD#r zM`>J1UpI8n4*0IxjS+Fp+dHDR9vw;B1RoK!fgF0nMQHf(UV|7?L!>90Bu#?K$Tgbk zbBk&3ofQbka9-`2sOU$H7 znc-55AWM+Z+LGhSo%{XG&F$NVTdT?$HZe1>Vj3c@jpEbXU<4~}V%j06w9HkAWGHeT zT=aT^rKrg%-^s@tDd;rg!sv0Ym+QvntuWlIAMMIJNg}Am7Jw1~gd3S87+QC?YQWPt zf+b6M#0+YR6PQwL4Qx((ngWM8U!nl*Y?UBgv)sf4)V-V{fl7Y-^S7W#6S&lySj_~9>l=%^_3GWm~BjFwihRdm4I?v7({dPU~PhIrFglXL!1wI=Tk@lkL zedz&xT=@2L24AkZh*5D9$#7FHUbvrGKBb&es)f@F6k@mtPWuE$jw9$7F~bA|6~hQT zfT5o;N@2Cr=jGR-(_6UU+_-=bWO}xSl#4e8Q(bTI83bHwG(l^+8V?TXcP_M686x}K%Rp4A4!GKCYA*4AabBdHtI?vNQwO3&P=ev4oZ2;VT z{H6J zpuSc?AG^-jk3y3xLHwhh@Hvx;jL^k1ip-364s1rH)2+SDP7H;=g)4<;LFplR|HI@3 z@f@rgM*oPwqC6w|C}=ZDnLmWG(ewSQS+EnIF1*@i0S zzD3^TcO?zA49ZJgi%np@C)JmCM@~PJ$zy4vJb$*-BLz(e>kJ{n8PT$HaaK+st5_yw zDK*a0KC&=|GOa+fMSo$5hN9`LWvkegv9{N~D3CdpO97R@&Jl9&jw|xdbwnE)H@fh# zDDo2**2%tmyn$&oR?Ib24*xf z=p9X4Ht=Au?X+CnLBsJ~`>wUjH`%teN&GS)XA<4bEDj}&p%l@9WXIZEVn6~QO6PV8lX`*Q%Iw@eT=M$(WrAGO!N6}(N~`{ z2pPQ;1<`%|X#`?9o|5RCR*3$opqHM~FZoR-Y zO#<{(qOP@Qv&OMx9HpI){l%vvSE4I+4}+iU`_<~u?Qp2~Wb`)LMpO0PLFg_lvQf|Q?TyAL-);zpFzVbniX7G2LoD+ovdz?d86_O6?me4rXz!CyE&h zjZ|x@0UI|~0(W!^2lcV`!=zT+T|PVJzJX--K7@+@H@$xW)f??@+c@%no`MOC#@=<@ zJ?#EUo3^`tzG`Qq&2)%68} zl8DPWEy*1fBu+(Hq|;T&Vse+3a~J`l1YZ>q14OZ;;Njk0P8Uo7Q6`Ze&Ug;1X_}Yf z(ca!lga$vnSufeyoJF5LyyRT4`s*Wm(M4XS<@y7@x#F;t74DSJ5nJLeKfI$^8p{pW z@0{6hixmI8W`bw82n}SQg}}($JZ4Fnv$&y^7-VbSKclO14*Y-3rwn8TfdBLF92l69 z$AT4HM05UZ#`!D*d}%g`_~MDV?61Wt=j5tLS;@(32Hbr-#aEN%q=0YFX6CAgdr?M( z@KVM;mn@HkLE+w)Jpzy15k7$QmKKB-1znSuAX!wbWxgY3ggKK&iGSic?_%kU{!xhg=ps_*xE^~Z{&0UFNH zlQfSCwqSXA1+Rx{@aZwh!48d$3=a=SNdM?ji#l@`HVG2c(G$VS=gp+y$V=11hl;60 zELoI-qBc6v(5>jbRW`)V_+kO%)$@jyIL3+qO|*-NX4z#j28Xm(e`3OOcA50Re3|sX z3jFe6{gm^&oRr{Bg5c5DY}k##Jwt)DcR{lOSE1~L&cN)ztniJ2wJ|^N=5#?8>1VJO zO^#gIH9?VN&2Y5d8b`04&oqRz)4tlAutB*1S3?NFanN}5q1j>7^pt`+r`;GZhpNyzqonx+ttO* z+3EG0T~I-!$$3e@V}ReAunCEIeppKMURg;hMw6g;H0vBvw7}f=T7d3=6sYq$6+mj` zf{&gwo?}Fw63=ULtepQQKs1h1Gz6Mm`9b<7^aT!E0lUcqke$&WSj}iFz_zAs^7Yaq z*wIeC?PGn{=FA<;FJCPn+(&M>m9P6y@M^Vy3~P4^7~rzdw`7ImodjIKgudtvBD_H( zk^$9;fB$2lqE79cXyGIT{R0OCYd36wJklnIrQn&s-H-|t3@ug=SeKam%Hl+4fsmNq zu`KHptAgoB*0O+2(+vjKlbXD)Vhhv~!$vb~n2%Zz?|tN`gt-?rP|q<6*}5|uxiY9$ zdKSv97qcb}A4Yi}usLQ?{B$#y4JYrDJ z36>=z^5B6Th$<5Fn5}2^uuorLBj*K8O7aUif)Z8lB}FsU#Uvt@b|hd1o6IKUpn`aC zOx_J2)6hrm>a08@zUT~Vn$nm-FW%?f9+tRxIUDfVqQ|%yS zQVpqE(@?pN$(IAHxZuNq(nQcVQwPgp#oTR319bEbXbl-wz?oL^LAlGQpqvaSgG| zQn`(63+zh08k%h%MLy7cU3Un<@qQ3xe1=U^+xU#BM^ErG!nf(MmxP$pz-m&0)>5Uu zIhQmswVyjI>kFC+$sv{DP8oJz8_pRyzrnqTukv!}a$`hJPKX|C80XJrE!R`i2jH*%^%#7CwDj6HW6F6(nxyhF&(<~?6_eylt3Qz50*9LJfTI7@uA7D}=w>X* zRl=iBX-q1^9p(zw5eHyo!DE>W@FcMcJrk$@#71U?wzM>s7*o%qpMGhIH$3>XG_b8V zax?oUityG@Q;(TjH1c0}c9kmkU65A`kP3^JzI8iu{9j^ z>SglOFLa#aYa)F2mRzvw=IKPZ{Wj%%TzipbLe2dN6jj0~utnMq%jq<$j&(`9s7@gH z<;7aM(KDVW>1>FJODY%w;V#}JF z5Z{No%U3|$>x+NBeewF@yrJ?@m)@GE3!s@j4vOsDU{IGSP(bJtB=F_N36VMnH4ZE= z##JT85okFG2zwy)`W6beZ(>3cWDuN=}|MMcp}Kk%t=IjKQ7e=eY7N*YKUr z7>3qD-J^KT5;ZjRVRUO7$CXykzRmbhOUK&m$O{bwS*^ce8h}e5=D1234})MdFZzZ% z9}=77+K^qOp;8fzM~HNmxBXVIPi9WYQram~u0FvcXxc+PxmXpjaP zPoYHf>*(2qlFt51`&jP%M>H1;>lPJ#sGBCM=zu@!K1G)+&FeVksQ)DVv>m7wZm+kf zfVb!RDhAJ<7HR&X-j*(C)F#Md;+fTfUvBOuNwaL&0yK8vfO`#1Q5)?#sj;2A;mj2& z0YARXpy;!1M&Q$Ua=pB9-bk!;+&HqqX}72B?656N+c;|_fKROPuEsXTnrZ!AbDNTH z;Fhheb{#PouCu+WpW9She{b>weT4Rl0f;-g!~m`>v25^G649nBXYFN;3uyZ$Z(q_b zZye>QlHPz)Y_AM~t9@-_CmEy3Saz8yc#ymVi-sKjNGGw_&Z$Ci46vgzTl+S9LYzB= zjUJJwm0nmQ{T=*9MGT)E~iKx9)Xrx=pcPLEok; z`kba2HgCD=d80+>{;0rasN9~@4(%&cG^;M58Xbyy6qKsiqO%>*)ofnY7v6OjZKI|j zWlB>djem-!l*M|t%O~3Xbm>sVVS{;F>rYp}o&twH^$v|BlDabV{NjKNSn$-iQ}8aT zZ>8ZSMm78~0K^=n5K_}o2)j4_4Yl3PSY+UFjRg#_RzhzzGtg&MDxbw^KYf)&xyGVG zA{vXL(Zi07s?R$2U`-C$iA3MePC9Mlr_R*1&Cefy+^Rly#C5Y^1(Y7mz*xV()fcQ> z5`A|DcC$FyAkNY$DOEelOj1YA5 z)*|7O9HA~3Fmfr?CP`TqyY~b(S-P#&c*^jX9#$`gA+DQd;A3%L_rX3>Omi*oAyxAm zdk^)0Fqbt?=KhSV)dTO_=C1yO$M%6^{{*)2W9@TQaAQ!h%O*oT;2f8ATvQBoWC5r* z!dlmE4V)cTTipZGjKoq*-%+S8ftj0sFn-ZNuzx+cpq==T~f|nuzx3l7~LYms*jT)~yq3Bqh_#ct!(}pooM5 zH~=VHllr&%1O2fsNKm3k%2MBW5`5}MbVYF4|4x>)hxX>k2O%?yFpXpIMY54>8EGIqfSCD|EA+)fAy-5*!8?$| zl;GN$(WmU({oTm>H1&+DEU=D zf+~Z290`u63FBH_I8LheHa)JH-aML>u|N|lFKQ;wK1~eZ$2-0zF$;!rnXV|;+l}K# z^7T^=Oj1O&qK8et7=J_y1d5%qt)h_c?sA1v+8tQuhp5740F9}E4`hkE3cq2=)|7+F zT-aXTkW@$5&xu%2>^-{w?_Z7$iQ!UFDbQBjEQMI2FT&!UFILy(WAA0k1&k%5TEK*2 zw=NfEsh9L5{&lk~pXxh)Oq8nUK%X_`fhy(V{BQt2zFB}<@5Au({cJuR{o#Ea&ZlE< z1Xs|Gv`z;7{x_^yH_xdjqLqK zTfXt0QFY2KrI_0@9y3n!0Ap)=)_^m&I~nKeV1B3iL?qQrE5LLl#S?IxIEU2iwvoBE z4WUSJcp-(?$ck`NNTywm;%t9n(mpYQl9Ft!3uR7=#W(8fy+$)N&&=FfF>1AJD%X1) zoI6zv2AQv!c*p`xsGmxOnr?7@2zW6eip-1Q@Psp%V)o`12xy4)4zROzOxx1r zz(v`&b-DA<0pu`N9Tbhj!JtXUE~X%{E%62l;hy#OrIM2%Bt8zqO-3E8NXV9M?iHPl z{+fS$xb@~=hWB^3!6IBYEt|NN1Wu#LE}2s*yoad-Vb9O8%oSNvpi<(+>*K`23F&7_fVZI1 z1#w=8R-1=UYP{{6k6J95Ma@CQ zT+)?T(-Q{)`~x+U;dp%ib#Cc5Jra!s!J$yIuVZgM8ct_NT&PNZ+xOjI;7ukElR^O& z`rX5)vx^!5D${%a#*>>S8s;$acT9tbU!fmfa@vo;-Mw0&MVqMplT+IJd*qExg40If zWVuvt@5;m4ZQC0%U;&s}YaUCm%dXvlcO8TFqUQePw1HdF09-eyrBU+vQ6x)d=VtFg zoRib-y|}#=5McYj^sF^qQiV0muMvyG>i!tvYzOvb`;$DaDEIioqWW(~jdV^WbjHok z+`bvg&%Xw`<|S=0i{r(4asCIjS=~|_Hx$12Qz)s6y{W2GR$6Jbve!Vm7htcXqwjp@SMuTUa=vV}`mb8(6}p+hIhA=+^KbM-we;*U7kr%YGX0S0^Q*Z#WWKs9p{3?=#Gjxi~y*N z=jnvNMzKQBZ?za+kPJY%Ag_mvI$PQYqJgW?zF+s)ZTE4m9FomQCk^s#BLGQ!ZgE0mEJy}ABCe()JcGdu{-YVaB@AV1BhAnW&cz&9`oPBo7zGgj{=-1c z1RZ81idgLDQS*+Y(%QG1EOkIYEhQBJ=rwt}aPczLS4`kbnM`f4=WHbZ+ups5b;dstPzT zf@}pGkQup0gCj$a?;GuyBy>Tg8UqAa4t&oU&N+vwQcl}L@5qE?83r9-cjNyV6u}#U z{^+9~;^1WI9fegZo}(Foq@1Qatw^@OB^eTGxq}bUcsMx6l4o75Q?IgOFc_dIPBH?E zCF%@MiA>~B5NopJGlt!74r)UWt?D$n?F?ekwl}<*`(y zlFpp=;$zvuZOZ$$FM>`OFVOX+R;MJxtkjQA!_w1DuJl9{%~gPO^Zi_Zou+(&>ba{6 zcE@ZLH6qi7Fi))=RF+ej-xK8|@UJp)>nv`cVVtPzV-&E#|8(`;5Q=smQF zE;(Kk_S#m;nytd!;UfxUbHmsQX=J;3V1P=!g93mg#B;j|a<=2nQO)si3uE~zj&Q6^vle*PlfsV2S z5=(JhGceJMfy_&C)(c0aM<;wEP9=OQ6QfM^jO(BP7nEmLnHU`2Vor)VO5rdWvP@KU z>qLIy_lXU&s)0O*)h$?3?Qy^uA`RCZhuJmx-*$S>%=D0x!5^Li!Bgn}s5`z5OOHy) zUpY;|eo%lj0%tmTg2qhsebtE6GuMQpH5+)85$gMrvYwHntR0YK(}|uLtp1zB#i}CK zgioory1P*W2ACX%*yhj;YEh!IK`D>icDY-aD65_|=oC)`Pgmd|kR}CrqmS1=fnJ^5 zxJ$>kvt*NIqvATJOo*#ZbgfO|FYNlp)BUld<34f}a(%!*NLHQlVXG#`$z_dwPPU=X zY3_0A%bm$&L;$hpN6&2zyufiPPAGIBTb5zqTx_5_Dld;^Mpwr}D=<>U7?OpMJLx*Ti!yl^ zxq|i+yo`$Dbs_542t!^dzMfnnnj;ZTB`GDh(z-T(st(`YAai~58V*U_8rwi@4nui) z4hL`RFlFe$8iQ!fHqeeGV+_VPtz7idsfDjiG3DT5K4yIiQ_|L42AAQw9o@OGeIEaxGfhApcI_ELe?E%V2 zGTq-F{(Lt4b#(sz^lWtX`^DL4`1D+dl>s-}h&f9qR zsGJ(SmNe51;p@)N+U2BwEg*^(`9g*10^h68rIR>Um+I)MJAlakUc$`j`w69}c%D*_ z3VKg%=KF@{KEoQ|h9&G$W1wXbEhxmqpBQ2mkpz`T!H(K65WVLs=70)C2=3k87HLJL ztyWdlt$Nyvafa9;@kF)*i`xEHf1p3su^k`;%1ZSmi9Pe?&6^kBeyCNQWwUVxWB8`D zgOx53_*o0~UhxT&a@1IfTqutW zW?5!Lg^o#eNj~3`;cTIecQ;wqxRb+$@!Id6!_F7t5VSWzfK~y7PBJ`%;}xT~?aoEx z6}SAAmdNrj;-BA!IhSzj(2|pi<^@qvav@z#B~|YuO})qIpdYb+WWXy@2x|-$ePfLS z5k)OaltBixmaJ=I_M!6>3&L8lYd2@{SvN}_0Z+!rpgk1m7ZG9fmK*L>6nXC20^li$ zy%D9(g(urD$<`26stAJ@I*A#*57z~bM z@mYj413b~;y0)W^E=dx&gP_mk(EFs@-Q93F*^e;tNYNK&!heliJJ9JWIG6$y|D}dJ zFr0hMolBzfY8%>p55SkKsm+G9cHQbBgRiDwl%!j~tXPIN<=K83N~K?zaCaz-+w{G0 z9_8W%@;`n&$I^XjURl~Yc<$a*FB0p}?D4I0Aze{3j%@TMwKdrjKN#YQRrJvZzp}r@ zS8Y?{HW2=vU$Hl(*rpuxb7;8IG}m(F2m`d!nS=2twi4@bWRD~#WLo}vS1*2zo%UNb z!lXoFw>@t zW0epETOuK5QVF&w6pdlaRDwGQN@j(KC_0J_g7eXclQoqHstNLGnsL-7j4OFD8Wpm& zIpd0{-IIQEm!Sw17keVF5zRH=r)$0;DT}Yfs#sI5s*M9Ge`p00?y$6z$N|!bjdi=R^UCLnHZKX=XtTf9BW+@#Zo6hWk5C=i-Er8nPhy0G%N%W zJ1fIUDsAGTlt>9bAsKbDMt_X}mjR^L3H-Pr0*DY~2QwiuA>GEgdFCQhG|~(mQL_sZ zE9?gtSDz^z&=sB(BMxepQwiIIMF}KiLm`WzLI@fk^zxa=7j#sma6F#f-_P&E+xhKm z!0ks8q2O-F?9y)cC}RSR|G&{?|BS6Y#uKNAr<6 zg#$P(Z6(Rod%Zl&XHJFMc`&&wBSIe=eAmEp%~f{iB<~QJZ}GV}8-l*)1;J^@h21h9 zQtS?EA0xo}{1+qOedBdaxja~~Wm4KAb%Lx^{d-?f(O1`?O;d+3T7O<}WedNdcS?(jp;lXQ&wn?Z7csqQX@M8UcrrfoQW(xb;O`rV0aS0Ab z%%s8RcVlrL-t8H0n`_JsQ=D?K^a&?EI6PSONBRp@W)`*0dyN*{PBlWg?CJ6H z5dJc&8pIF-{he?h)IG&9QnC$AcMuV&KSuzk-7I35PaHFCW7nfHhivf`r@$^~JNLN@ zz&r-RYN@v(lM0EiHD z-OeQ)u{zAhC3`}e8N=B3i6f%1i4ht2~3Wq`lRC5v5NaQmLeOH`an{@}B zo%Ydb8%Y_)+M}9WQ$<{^wB&)IL8DX(X}}Z+l^3$NBSKhB zd8pN9sT8Z3!FH&*9`~^4M8Fg#H}6jA4xRP&_1BvSj8XGF^|?zmQ-qFytkOpKpA*G? zCXo~olX{$j@|MQh17LoOmF6Mo!is^oCcpe;e%EF4`|T*8+^;(#c$2MDj1fXSt)o_> zp@r~OoijbG3pr|dI`A8=q(g0g8b|hDAg!&8xOQ{>nPLtCY`?0nts7t*pDKms0Rg9Q z5caobp{vNWtMs`9Jc&^hKP%+(TON8$a_tJ|HtlSf?M=rYk8m`%Qv#mE7ErGWr4Z zP)7?nw%?2xsyF1Liemn-)!Nx_@BH3BJl<{hcRQ!s|2=5;_l~=V+h^5kjtPDw)3FRU zCw;f2NmGHxIUbo8V3vY|u56)SSgo0Xi5_Jf1VvM+uTnSKg}*Z%u*wuU>km7yU29It z?2}TUuG^MU$cjO;MpPsL-C@P*goZdV4F9ESVCe{a0(MU#JNW}X_TizuyKB`5dQYE) zxQ`|>RI4CGG8tx2De1V9{U%#)$Xzh1n{$HR&h-o=qnDed0@yU@zYw-B!?oYyE%kV~ zP>MphJg*f5Ev0@8un-0N9>j1Xk*%#Ql18pp%K=)N?MV@wLL3c8Imy3)huI5po4VOq z2H^#PSXj{i!ZdyifB{O1=@fT_FXWPn@8I0WE1s}?QZ1Dp`^$#x zQ=I#FEfbbcs%7Mfa9J%+aPH%^G%O(*3I^(BLS5)Q#-CpP5tljOu z-#+NMwii>DLx_dkJ`s@E})J#R@&=AKxXhW$bnGZ$T6+@umxPek@ z5jU)La`gtBSgQ|DVm4?g6%U{W${D9wBWqP-JFC&K0DhDvWcpgj zOWRa06XO>W#ZTGji1wKA0LwtfTC+#gL%d<$squ45n6KC(ZB{dFGG*vM2_I_eZ=_A5 z;R&U`qfT1-ESw3js72uh)PS_g#~cYjspZ68TOiEDS+tCVs!U0JXnusS z)BIn<21gtb&PoT*zF#nm(#zPINBh$ek;8^xR2Wt zo-f66KjhS5co|f1q?8lO?)h|t-dk*{d4UivmkoKy+=`Vh+B?{O*KZ%flK%NoXXkjg zy|`L|U3MHo#HLpu79GHGF@#c*oa~>FH(TW2_0@XQ#C$#qg=7RmK1N_iTro*UEV&p` z#m9bLp_?r{t(2yrzE{jm6zDD1HajVcj$yn6C~}Y+lDB2&^M-26v~*suH@<&Q(5@m_Ee%e)*a7)gD2!_ z^VK4knDv?TJpqazo!*dU&nELXi1-UH{_xaET=CAUNZHkJ`uDOG`TO1Eji-_>1PU3k zYR*a1*NC|%jN}m{NnZ<}LQLM3Q8ZBxsAL-^W4hpNg=iTUQ$;(NDpVOKG121MgEStT zE(8l~5SNc&zXaToBDwD*6Cupwq*Bbyle_k~+Jf*3&0UhI>veuf-rrmsHH&@SA*IMRZeRXa9!os3C^~g#!VV-E7r?+T1 z^j=sqIA=wM6O-&NLH*LJ_uLm3WmCsYZ2n+V%zMC>9XGwa zHJ7h9>6%SuPvSrQ zUrdqfz^Be-(uk9TB6d8*VQdCJYXqxscqADMvElRNU=Hj5@{#A12rx`VABDk?O>&DCn@vX16=M3n7KC677_ONNc{`h(Q_GZ%F zxUH5O9Q`N3XjwC)x4Y(cb}mw-kKr8lHhyvy_a<*LE0quM3;L2()AqD!R!s+tOU+}RgJf2^ zS|aU4^V`xt%~soP+ei$3*H^HB5j%lnx7)tO@doXtK#Shc+f!f05@ii4&1mQ1#0c_R z`vd*4QlpVIvh2pYDZ15zEpraZ!$Z=T*`H-rM$z;nf)n_daSbWY5$L;Q%79G4WC$;{ z6d&RY3r6PnD_i1(@RiGRsT?A;c@D8G*NQJQ156~4^B9GuSR$3GV1`REhB8M+wiU-K z=lANxv&%OhE~`*3vB{W$E2bgg+9a z3i4)L7=0E+R(B3Bh2duXrLw$}1VMFH3E&k#cw>tNsx|}!(Z;Z1IZv2DO*MjWP+&_s z)KoPr`3ePSm&hx0!K}$hrT3Dc28hJBe*~48!%U-+gq0UdDVI69@O%=>Vjj9ZRaQuN zr#Ko3?~yc^Eh^KboGAKru?)SYQJgca`z7GDL6PX7l;|b`dR*Pra{@OPTx6)YNo0KM zjZ^ns+66U}dMx6qi$LYYUq?p+B+e+z7zTC4a88Qk`4|FiVNf#aUUM?w{`J^Ju1Po| zQ}|5D(=`-a@WK|G6Q06|YmH{))11!nI?k;otzXyJBD|J)rK?}RX@fVa-+`E#Wys)14?uFfu-7KuP{D*~YH15pR zojv$1wBNa~314x|7dbv%!zuiwSZZMP_(%I2c+@h~wWWnjM!jpm7W~0EJUmpJ7aD{# zEkRhUyOIQv2_F1vr3sB4c|ulq{-@d8aJsC%O1jFbR>zZax4-A^O5ZPS44&$M`yf6*srZVn&Fv+!mZrWzKO%hn z_Q&?Ua6m9i3s2X^4Vqe_q!q0@Ok01t$!^};G6wYL5L5RlG08o7*gTKUqE1&&1K_Mp zUUjs2p9R6T`=-!XC8`8F74*kVs79dM=sT@hdvDt~693F5k|aE31pXFOD3T{ctr_`;%(IJV%{CO4qc3#DX0RVg{+0{9BPr9AM0v3j ze6?1DW-&>5#4-uIvLqK9s(7A-q(~WswJm2in(nvrv&Gws1+vnD)tV}DLnVp1RDv%{ z#bR>9)f&D4D4CZcVjw8i2#!aijBc0&P(H}dXL$zHlxIqwjz*rb1tG*IY;6i~BsECL5oTAmO z*%`Uq6|6>0JOx6c5m3b>n3b@UArL}W@KwTJvf^8o5d{qFnY^Z@TEn?~$d?Sx5On(Q ze=;y^N?u4Nav81j*Q-2V0Vm4SS(I;H`eeU|GRw((!I{d*2L@JuvBafWF%$6idgW6c zkD`=H*~ZUq70Y7j=`s2`BJgOH@d0^TDhL&V?(XoYv(=|7tp&NsMGUXtih#x{k49xe zzych%1P7Fs&9VMlluK|oA{Fe6$k=iqbHhI{d*PYjd9Rq5koik80dugnJc;-y*4yF?F-2LYPA(SLE zmF(FL*GtwC7ot2*7{tvDOH(aj3K7zBnXj*Twq}B>IFIi893UyPNK1w|j=ls(VQDpiK|ociZm9;iDq$H6La|y ztpoJhD&Cj2%R24x;Ry-2yfz;+fa%nOWMDyheD>0%3Jgd2#_ZQ72o3PC5)@WoLZkY$ z26GQtMlvha`0m4EwY7iGVwUiX#T}8BeS=akRf?=Fv(3J?SC4{CIX?cT>1r->YxlMq zxa-Lt3lCWNE!3Ysj7ftwj`ra~f}0b`(&Xf%TGBLEO`7{Y8`C&mU;+%ZIYUxL$U+7y zrc`YVfITA<8*52kW^lYvL}6(*qz&H`Db&+HpvVTbcTCK`Tucl{h+Dz_U2?%WeG;(ot9(`S=TY>l<0vowu2}MXq#vR44DAEOz8#-GdjBqprHR*h*}z3=Uld zqtTj}aMdTRigvU^9fMU8L1|txQk8J+Wn4|bBZ#df=)>R}rq)ReCgW#y-v$J2-nyfO zqK#cJf{5xq$=}&d!9{OY(%H)?-M0asu|)$uUnSFoM)1Ca{0$aS>>M!AEMm~p2b}yq;%K#!kVMh}7Y9k4ISyN2+p%cPm>d#j+9v#;_LeRby`a6sFG>oBJ}v_AKtYiYi> zl$@J7|}$fhCaW+{2*Dllo?A?~_$-ig}VS$X*d(#S5s8 z@^K0`&_#ynKbt7iH-uVtiWSD)!(x{54aWu&%0x|5B?TvATx}evA4V5&Hp5t&v|7DE z^0z9s=*-Q)N>bqQrCT6wa4{&3&x*kfjBH%zQpV7pmg+%#-J z_M38R1C8csZSSXHSB}MSV7F(AA=ll7U=uyXfKri1oT5uKv(b#4CwL*mNE7)DZg$L> zo16>;kP8G|UoKs@*X_G1GAm)A5#%U9tg8R43GM!Ev3=X++Fu@b9eUR4kv1F|$y4>D&-u3hQdiaL# zwTEG?zFiIY;n1jYAkSh7e~fF^Ep)GA9v^RVsnVT}+z4m1=oCCl;YM#;-KG;8F8zrV zPk!(^ZpKcSqraVn8?f!;V!IOP`t+ITZgL7&Uir?p)aKIs09G@n`(`=*45nYqILaB$ zw7Xq7a04$&_$sKK>Ez_>?~AivumAb(uZ!!mcZ&~ai|fmOy7hzbp3u{-)fGJ#0oGVdqj?k935f*aBaeSzZUgm z_`9j`i(&alJrKx#xNgS0&$}OC0sWK0cjaj2+y^kkjSsS`OX*Om4gA}-b%9s)IRAvW zMLQAGKOodI6rD0B@X;Rxb_*0l^A_q4&Jeb)u2|2R=^xbCEyXcHNS%(wj6GS}umJIJR(XIRtm)0EpzSGbe zP6wQYjeS?k!D{ZupZ2NzTp!8LhfD+2z^OR?1IGf1^Daqqst!GyX3Fb1nr?<0s%Hl7 zU&!-Q99KnnF$BOq+(V7si?mfq4uXowH~^bWt1LOM;;~l=fAjyN#{KAjm6G2}!!QuX z-}6^Q7_xza@AU^#MD)dn`Zy@Jc(u_s3AyXAjQ;Ot>sqQ?bu(j$|%;>NKG%R4^%v#t)ZxJv18jC+vSlfzok<91B-Sxv_umb<*&^k6eZl?2uKfh!!}fZ@0Dh)dqI=oII}mnNo@ zU)Z%%9J@C~9^1-{eF~k)`PspjSPY24SXWVB-J1tZwX?h<@3Yc1ceiMf6^HoWt%r#q$S{|LkM|yrELXnq02Vu9 zkDAn;oh@`j9hSMXECG!bE|0yZydiyA03<-6eu>|7Hz2r!O5rp(i`d)fbrT)Zn>_3*>{{qod-6xQZ&7QkHe}uAmZ}p@VNfmZip0!71Yn--Fagq12lkuz};mx&$Oo&d|z-`-=-)sAN-?W!Z8A>(uT&eg~Me6d+= zI-QfF4mv`U6_sc~V}jtl!9pRvKx#$MZ<4cdv?6N^pQ9(dB%gp@vwY#gP%M%-MiJk< z3c6e=gxMU$G$KrbEVkfcjTPnW7;R#L;oFvyXTx_r2*Tkw)S`@HwZaNLV~OTeDnVz7 zB6IXi)e2Ssl;nws2q>Bx1Sg#i!)qb|R2Aeyz!`93%9K3qbP{PThA$D>XfzK4w#6}> zUy5b2CQKCzr!GtS8Y?cq^ybw8Q$#EP&kot0p!)BYfL&xugpZ(DtQYfDL&l)&REI4M z0*>JKD*`_w@Hto>({I{KxfdV?R8jragdufZ6k{oK-p*SG!D9sK=Lr40#R6HTWh*D< zy%AiINJr;D+TQUBs@hg3C$XI46$7?7+;oc-K?eXKdb)wMKxe3oe!n058V0{lZ$?+) zbU3=bxxB6sJbB%aK+AY2{wqRo|LE7La!SyNg}|@9!+O{#iyOFK2S$+>*OI~yL0q^(2+uPCY^lB8`-Gsx*^y}sI;OcTR7!7Om8dP;^%JjIwo5F;Y8lJBC-9=~T zsOv8+_&<(87?@Ok?H-pBqGJ7r#PHc)u-qtOWJvt%I!uksCgNV!gw4rj2{pC!75VME`7}PYDG;ED{ZTH3;w$lwA7H@~Q8=u3WJIC%* zwmaLDWCoiq?8VGf6Pixb8c!ls*0q1Pa&UwB40iM~9D5+&;n}|_r*TAY1?$NPl0@ll zwWV`tR$#}1E)h4|vn(~}q2S{=kOqdJSE|h8Rv~l1+Tbtxh`~%!wNuC5)#NzI@meOt za&gb2Jrn%ClUidiIKOvc^ZtCf*sCd_K6~8hkp^s?JiA0QRKN3mAmLT#1V->U- zw21LiHYShHscmsQG?Lz2uT}X=VRb$T8J@u;STa?y`W#_pMU6FhKF_Vm$Xl^~KPyDn zLA|2#f50lpns3R!h5O+Q{oRK57f+(JgGHn4tvFf|b&Tl3RJtDEHCmMjhG6WZf}j~y zYb>8!p&8N6_~ux?EORc`oi-KMdO%PiIm?JD1p3L8x}GYF`n_xsHMHnMYYybLc{^mA zwRXF4jI=S?({TlhN37j|n&mpvd$ZtTINlMeBk~iK&^7XgSB%H^u2&xq-B7i&KqB-! z(Wz-ilRy6mr@`fTa%id1&xL8x<-C8*xg@S#)u-<;=wU6YdSZ`+YA~!euhK$Hr$=<4 z&$%^A<{(#7aryDCDG$?5pSdy6!g@yCaVFXgHEhlylL=INdW1BainKGqtW49DUM9v3 zx>^bTY@Azn5bt&G*c0Q=ta_I1qED$iEXUV@qY~i_%n>l=!IbBuE1RZ6Uj4~rXL#%$ zr-G++y@`oNTiW+u49r$Cw9U5Vxl=v3-5c^pv$JXur~VYI%d$WaJ^W((vLGFV&3%Ht zq*>A}u|l9#e)4Y|MN$^j!!mOVTH_g6>lPgznvE`8N^17l6sgAJ!CI64o&bJ#&x(z; zk!l@eTHv_Tb1ZA`gHE_?_T5(aBURx*^ERekfY!mM9pGMEdfx^U_Hsdrqp^)fF=u2y z%}uk9P9Af+;#|SFX_F>#+vXis?rB;!+3J-})9l|0&@QrVaiqU2obj6n*!vxRa2QAXd6ErWQumuG1zYq)F@EN@Y2T1J;a_IZh`w z@!w}VhM1JH4{d%h!M^AEoa1}_`c1Jc5bF1VR4V5=NwK7apXgP%T2MhHQ8a~k4LA9! z$V(~_N;oOY-T!NcqjD;k8qzpP2B(AgVtASjhi8KqgET#Vm7EVR&dy%O6#YP;MU7+(Ww0w0SnI8j+HS2$VHz4 zjA<>pD%3jce3*TFdp*0o3ouR`-KH=sm*D=cmGwSqC$voeDwWn`jP-nN7mG!V_qI1p zbN9f!5%uiVx9(_4lBF|bdrPE**7-2GJZzEg`%|ty@y6K4Xzv-?pbh#7wOwm(ok*Jg zo?qb)BlV258CuGR?$zwftm8}CD?9P{*qvR;QiP#=4lxIq0+O8m^;Cj|Tb4JBPqtCN({ z^zi35C+y!(r(H*jr@kXUo&5bDCz`-tPku_;!~VIh4oOp&hv%X!-!gN*{+!&Aw(e<0 z+NACJr#2ZmxcQ&{LlO_JA0Mx(woA*BxqEGFw% zfW9u7htnVqfo93{ySD10-S5*Xe|&sjrrFC^_FwIBF^eCQd31nWt?-50vt%|xgS6Fi zu>~16LPNBD+tvF|jqe02RxL6>dQ}x2$f*_>pu9QdAlwk1{6L&W zXo$Am!8pgb0O36)1jMKX1}Hz*^o39msS)a=ZR(0t-Q(l!E~O7m&az8!3$%4fMp>th z1Sb~ExO2#rvcK$PgkkBl@j2OL)s$|Gi4TP=T8b%Z{r8CmCJq=_|jS(Iem zIWZVwZCq8~(z3`;>9*gqxOI+PWU=P1>ur&(vt&}BjNGJEx<%b73V~HAo=Mx`WCR4I zBbNvjxj<>C@(?SU^hKGYPMv}#3K=KMe@|JVw2o1pz;WW|{T`RE4#E-`C%U|ouW}Y$ zJQsw<+&F`$#XW7IJ(lB-{r>65ZfBIoa=Kxah-!OB8cJG*OZksS_3af{eH3cnaU9Rd z;@sV)w2iuHBrs0&cYdlPbBPffDJ@rGgyk|UTkIQIx@766r~oHd0Fp5ttYDO`8deb? zIZMX%OZtQ<*+_N0gyo`&F?LDoKS;G9^jndwFlDESF*Mxhk}4*%o_h;2#@KwQUaI~zDg4s4wX_sZUBQ+yx}Uq)ymBSEBW zQyv9`cMOJ71O3WKDCr%^ipEj!U+~IcDD{2Xz5t1NsGU~Jb&LcO$Z@6&#*PY#f%)N- zA84A9=f2$R`YvaA9$3N&3`+jibxjd^vQ0v>@E|?Q#K7EoY>@cA*ps>swKq)U^Z1~^ z=b|i6+m{Dt@p9tULS3{Z>sgtP*VbF-6KIG^WKfWbJtIivY+#t!hPV*nZJD|sRwJE? z3X$>RM374cg{WjxX@E)w*{Oc3+fM$qlki`}pAbCM3o{ah`d}pGb)BW<&Tngs@e$pn z?D~30#P4>3EA|AZoxW!08GapC>~z=lb}M|PRbKKH-pHsn?8Fk0sF*~H2P&wQK)dWr zW)1>seeBB;b2M7KUqLRtoN{5OksT?uwq~aqejQgFbbZ4w^5f&Dr>`uG6-a*^9E375 z(E2EHN6PR0uZvW7~2IBp&ulBftD$p>2Zjk_EoXvP>H(I%rs(|Ox`1(^}& zBMg`d`Qd*<`PE1i%C8=}qAa?@P+YLHsUTHG2oT-1hbr^)h!CCT;v1>RUer(cYIm_O zx-li0eeGlj)z-xGV%*Xh03x&OWsRCO({ae&)3oT;O9~oY?y}g*iz&+yEG_ao^WQyb zyBpH&>fC$0thk))82Ig8V&C@ck_mY`M@V_Y%K3eJR_7#A)=0^a^g~#2`1ay!8rh=ENX3a_1|!nG?g@h)%HAa5EzYxw$_y7hcG( zTQY7R&DO}6m;zXP{P42wHT}&Lum;D~IHkp%;CKah7HWVaHTGxO zH@Vu7h1uojsv}~M;!uYewpTeBND`CN<>Br*d-v|$f3A{L94-mD+%OaAcHKkYU;@b< zr?6qCbQ#c+Y93L}ku%%l{RCVH%zpi&oOEYS)rB_MGx-oph)^5brMl`Ol z=CSS_oy?^=8&VsoW*uDnk+=4h#UJ(~S+xAKaz^>K8ZnDLfQe2Qx!pDQ^$P)aE?8bM z9ViUimTDt$wN+TfwrOdS4Ul0#or?gZ8!HD=S(J>CYHs{Ob=Co;R)TtZ?~{<614BZp ze+(})2Zn{(rmotELs}q1QgRee^pV-&LD7zqbRVH+;zBYH4S#i=YS8g5()E)_#tl!klvB3ra6>T zM!P6)Y2DRX%~;9h7HMC$Cv}8JY&s$ zGROlmVF8hcJpR<#ur4|IfB?0jn^F#-TSr!7y+c&y3KC))gkq=m)w>}w*cp_-)BM3$xaR53l zDDr?lfCqs4V7i~tx>LPIiZUAZ$o~S;w}ls&vNy%HO3T(5lMhfZVF3wIW0cP<)ajW6 z{WA9jAL4S^cReM1on^f}{FHG-G6RS7_Mp6HA+!f)J0eysa02o#oZZ@-9ine7{IV|o zp4Q*JH49$12|x+nO)vdI@EqH7ix1c6ikp;;5O}BB5zB~san9iB5X&_ zN0eYw(GnMs5&7V63`HpBgjs-Ip$+4Ma?4mhojA0j+JZA^&TE3a0-_d~X8sDHPObsG z#Ck(Jj9EuGsTaK|0B(gDyHViefXcE{#aCbUb=M%I44hkL%vD$h$aAo>y2^S=S@}Rg z+bIO1J_aX2I*=&^9W%Wu9woz12;!h9O%ge5OlT!m2&(LP3fl1x$B0AxP8 zhBiT_3HOV3{2`RbT^|?Pr+C?ye8j~Ff+@{WK85S_j{}Na1NeARoNzwmImeu9xdQ3} zT1xmkfJTiw@>NXkhB`YlkdI$xVSJSHcbYasu`g6qRAO&i5hwfOEd+4k&$Q@P37Z5y zVXYMf*3~g+cA_C=Xi^DucZ_lm)lRgzMwpO$4iU3z1J0;vr=L_5@@B?{+&s-vc1LOk3X!ixL^ zcK|a?kR9P$2Y7iAj36%D4Lig5*u@g#R|EKX#nb1a%IG1G!|U8Lkca<1YjBA|2l#mr zCu5BEG0I0I((Mf7;eV)#A2@OY5nx7~j49m4sR}vryE#P{EZ=D5niFb%Zv0vKyS?P69h=1qu7R?`7jsyA2G|`%GCa z(ot}93n^4UfmOf3yew8{lhZiyhoy}H__p3eVo*!4F_r$=@ZmJ}+$@VMb=8Ch;Y@ul zO$&!h44eoHHN^DTLc3s-*I}0Hm zh@cgx;F|Xk)7hrCShkeakcpiq-j#ay(bym3%ElAxN{upI>B+`|bu{}xB1qo$Wkj$R ztJHNQPE&{CwfXx}ibTx7iFRNm!294Ic#KfjV0cYll#I~SU=f-{+r?;3un5gM6JIlO zKDwQ%IuNfbM@n-7wJRq7OWZ6NM=E{l>sM9NLr;f-Bs26%2b+GoWre!J@zH0H4~-+r z&8NO&2O?%0-c9@EUZg1rN^DH4tj)==$!O-!Nf%{uI{!#F6A+;*R>VMdV2aTIaG9RA zz@m|e1QVYV-ugqT>~K|m9X?Nfn&&D&-QTxq3pzLpTVf?c_-n-s`+SBgtq48r243Td zC9#u4`I**{9;Vfmx~SXEY5;$y=}zS2e356t1V`!Lr1XV7c-3&D|mY`TNLksV}4u*5i8 zbykjWMrIVKeAa0MpWC_}MO>d(x;BF6I48)YI+nLhm)bvxf%7G3VmygnG2Vc7oJ19* z1AFAHxAM!&PyKe}k$WMYWMpE4M|c>jB@y~26tC@^>&&INnB@$l6Mu@=o?W!yDjih9 zHU#6-uv~5ksDfZtR!UirzbxRrieTvi^P|=E4RnFV+ zU~L^U-4Tmc|5q;?hta3m1fq3SP_(=ik9Kh%8e%b1y+@6vFjUS+X&vq9Q{tF-HE_{s zE{Q8K8M=4%cTl6cF3B-*Y8%p|&M!mwBu8MRZp@j*omG*2^67B5-@qM+A}|>tcrBV9 z&|(7ytA-Sc*BDw{kXi#QPLn_PP{jjX*#JlBpYsn36wu1Prab|pbYl;B-O+vmH*08; zpKz@iN>7gel z4={jeU9|%(Yv9(Yq7s))9-p>mJ~pzuJN6_PaI}Z1nGK;lfzWzrtyMZP7kBMdm01t^ zICU6W^PU#_J;~+Wh?cgX!48J10o%2!i;N805cwfCF`+TqeExjis39j&iEv;ci0~1m zjnzb5J;Wl&ThWNEU2wSzrp6ZvAHWx9&AC_KX zhd2)!p^b6jeJh7^|N4E;fPNS!7E?u94%O49AO4P zES+EnKxhv5cPMyG|FUpRg1VG7F<>!Kr+2@XIoHv`!4kK-CgzYVFpQ*H2P&y(xIobm z?Q5)J6C}k069b0T6bn?&E=5foR+Z0wf;`F*g4O!WE_VIBMat{m;kH{yP|w%cC?y-gNnXCba1697)pP}42e&#gEeLds8Dpl zOv$b(msvc-6w4M)VoPNfKbVK?!Uy&lJLvO?K*aP=%nGZu7wvA`1JEC1lQ}p-|B{j_ ziVS_Xji# z%H`)W+?4m}R{YtL{P(o9PuXsev)Dw7hp9YN1b8!zkuYNZH^|9@9CVc^Z?a6Uo)Du_hKoU^jQ9C9wX(rM`&;ORAOY zI`huWRSPw-Nxx)!Gg6hUbmG-EIjd6;;+bz18jjeZ7SvX4iuK{Xo-ZNA_e|1Ie(mQTcYO5Xk@q zDSqSw-^=0;@s`rK4p*&4Ofta($~RA~Ds>KPAicc`P6kv!=62Wo@=h&40u7H$M0}X~ z*Pqn_O8x84iHHYN-`6k1-()o>i3q9QYbE59=3a!U7Hc$$jp6{CaT>(mKIk3zu(8$1K zA}JFvh3uS6SIygZ%{}g`=Bh0Od2Q!14c$WRQgX}3F|XY;E{AT+{SoP0#?{MTi0Bm~ zcwx{50UE5%E|4}Pqs~dGi-`T&4OA|J9BBqp(P>Gnf^beGoe@wtRu;k*XgLi$ji(lA zE|lS{z0cFQmdam#C6z)#Z8>uIKKeL)U=VgoivnHX$lBeKmIU3JgFlk|sF zb-VF;8xexCgcLNZ+J`8W_e!CmU{q#Lk2c~rq8rzKe_fStX!u7dooN+1x^xgLwvrSSaFy17ijR1(%G+l?IHpGLHpryN<;VMZmTn;fM4nEcl zTXsHK^mQ1caZE~DQ@gfFs-4Jm4sGAgOYxT}0&T3e)oM(}Sc8_5VV2HtK9`D54YAkT zekGS;lwiG6f)v-^bDmjfrihp~XZ}wAHd$Y2nT{pXpDA1(_(UXuF|ZEVDhOCT^4X@8 zqN?k+72LguKlQ6AUyt)Vm9@R0ex~w3P--i+u8&2AdS_NLXXRAV0wIDBVq5UEm5(_}}WN(A?lVFE-l6S2(roUW`X|_-el=vV1 z8ij*!p2Z`H&{6{ysdEXiW1kgv`wv;&w5T+HBP*9=RLus;=nL%|+iu%9_B~(083bdy z>)06}Pid3Zlcs1Eoi<3?4i-sZ&=PHPD@%eXIn8eS?|Tj}5+#woB<}QO4b0S$dG2?T zdhs%yr+a(DXM5xs`8el-OnJlz{F~A&C&`qYC5to>EE~WIT+|JEaw)EUlVl{HGcqlrhy+Rc zkn!0(Co~R8!~+%!;47XcKp^Ky+$U+oC_Gzob}!-HU7Vf2zdlD)Qiyy`b8=4w3AxBK zJ}Gh*l6#)d;TI54Bt;f5AQUo`ZMe4=(*+YLg@;Dy+fk7xQ9{G#s3XbcSww|+m!PDC zFMx*yi*rFJxxBtQIPA-RjwI6ou3XSmeIb#AF>1umzIsGXNDLy}wus(Zw7R|L7UXb9 zGByLT09s;aLP=JNAR0stPH7l+JJ%13X%asuS}}0m>67vJ^~KeAJm?IA@~NcehX<(Y zQ^8L&Ab+1^Uph^0X^`_J&6zY5)$*~dMZ`$e5;so>i|GW+Dj3azIge)&7mtIe2pPC5 zNZ)0%0Rayom*=A^cocl0GbVa1DuU&o1iMh6mjKz#vx1c*FJk2(>?=hB_X(ephom5R z_JDj8;B-_QmB*5cmRb=_>m#WlGOFQusoKX;4oyHsxR6v3Qox#ihuOAkRr)8QV|h04Vo~dbFAY zkbkG-HBC236GSeewhazFy!a(XDH#Ytpww_lO%~+;6*Jp12Etdmebc5 zHo`xRV;QP{LaE-4Qv)`VNrz*kF4-D}5zz+h;xZ4j3oZn#In#CD%d#&m&@?D6rBC>D z%A#q>qB|RzI?Y0r+MH}uLQ<$DB|lYOs*@-t(B?t+7YEqiL0b_(F@(Y#!9F;(m)YshEJMkTk9o{!A4FmLOw!k;P4Kb2C0;`K1oI zZj(=_pWR>BBF!JVnq@mWdp&C@el*zt0%{Clk&ThaSSh+A{~0e>He(%~6UIv#6+qUB zyHbM|(4tUF3V!+B>B0VS^DOPx8Ya$`<}{I-WG2h*kZot0XtVmpN^xsgZDzxt%j^ca zZPu_&gMy5ZIqY&}Uc~m7oSe$ee22oE>72Vp2$Pz<%&VMK@?MnyNdTK*93rI}6w>(FRn!tUFl$9~AyFxM~*>2aiQrpTe&3!)&DY*~`zwtx)` zvcn*CnkW$YYtB$;l*&9p>Drhc<7wS}qgusrzoM)A7-tF7P)%o({;1)bzgbS>YY??l zw!rYCLZN5abguEBZ>_a_8$V9}ej>XbP&eOo+19eVSNl^L+gaTA)dszYCs$2%O^3t368cX zE4-`s=u~~=P1WVL*DkYliS+RaduTDHc7Zd>BZTVQ-gdT4=SOlg>+ebD`8-SR1-ZS5 zp}ptfD4P|y>3se*U@7MDC!~Mb4(_xB42Px5v|I$`lvS{4P7Ck$<>TnbmXD(ymyeCu z^?>fCeAF5D)d54(UjbH`n#wZ`kDd1;xhn{YfbfFv#seFiB4-$z7Ggc;Za^8203 zM`W<50~KGqbblR@IEfGB9Im5T=Zi%F^%6Z_W(aES;R}Xw4H6E1^(xe|Tx<99rmDfU zgsVv z8v1Xl*=xru0}uWY(E#fnjbWh2a<$_@YU??w8lyaQckAjW6JEXYZBys`v%%`v+@vjZ zX9_Rg-FI$}a)ihBXghAv)^=z=ysrYSxcaK6d)Lv{-u3@N`=bi2C+I$chX^8_zFWGN>1v4#DtTFH zPL~YtSAgyy9a}w#zO`hocPwbS(rKLMl27oRGZ((Dn~cYkd`G2jBtC^-&yykw%L`S> zmm&oX^GM%I(U(&6rJSJ1GRQ`i&R#y&d$@3GV6!8LjU*dgo)yM#^c^FN0~+8>9F%GZ z@*ODowCnUuM6s_qi-lrT-;xSf*5Ge=glZoIKfyOfC6ca%(BlQw0^C~ASjOxt__^qI z@YnH_<-xquBftHI*%91-yrfx|$9xPiEY}RQh@D=ayt#Py@%(E1dGzk$_2}dI_>T`C z-kp!$_sC0IJaQ}#jlE$EI<)l<{sa2&<2IF46sTGLjMl&q$6hDNy_&8ai%C_lOHGyz zSG$ybbnlj>YWiePX6}#?D&)9R=H8Y0W6f5TmBCR(cpvO>?o;0OTesmP(r9d`j!P(Y zXf0LKCmsAvhAH|5-sh|Kv3l0FGxj>tswdd%G_DP}&)=PU>#JsLb<1FKGh+t>W$QFriz%n6$-eg{wd2Evs7)B=}n$vC)28jXet^5MwNw+@D0V6h6(#B z1_@>L;990Qa$I9lazPW zg_u?K;tlYuY-9RWd0!SeyazQgt5XA?4gNtWH9LuA;n7n=a`Og4bK%~E#%9Q8H`YQQ=R!#>& zw}XqvpU!5x0BcfJNKO3-VAD5m&7c0adnEh9AB+bDXMLRN4jYNBe1XV_v8WBLbDPiuv(;v zI=)q9&7N<)9kJtHsY*opTB+R=Up339uQguXE_rW$)wd(}>qXJI1jejYIk+yDzAxL# zux?jI+>WHHcFY~TsDcvcuwNo=q*(>2(%VUeV<73YmwL2N?G-9iZ5@=fur8m=*~VcL zplf(<*tHS>W`f@xLf{AAzJaNftYHrO?ftObxHbjFd|}4%G8Y3JI*t~@E2sJROO^fk z?);_wwEo0d?8-o~_u8s6v!;q#d+HwDtkH+tmQ5o%wY6n2H?NGiIxj1P(t7w<$-s4R zU+%Y?-86hqkKwu~hgOueJQbrY)sET{ccAl=-_H#wusimouJwn!_|D%!#J{j@1ga-a zAMrA8I;`W#5B1wwEep8gwhkm6Q*TM({s4Nl%bk#eL)mT-H8>Zei!pS5Nwj2RjcT0A z)1-AwyBThGtkx*zf8n6LDO7(usoJ;qzUbrFm}qY;$h<1wHrjk!uw+-Ud>teyzD}P+ z6yHAA$gM8FwiON`%3En#7n0K9{rVnRaZ<0YYUjcP`+c9I^ZH1B|4}zONwN&#ol{)l zs?^rJIfuLGQ%xl`*wG4YT9hlHm8B+0PVT9!lvy!@E>Xpd#DbodwGm> zH&oF1RqDMnRwH+c~OOU6`9(~S`zUcoHn@r#N0UJE20^r`dmC~#_bJ@NT2 z56FqAF~&FN^vi$-RAcVXAa*~Lnt-5QnsU&NfmSj)$pKMGJLb(XX(og~ylmiyS?vS3 zhW&x-ClMbUHP+!h^7At%ara&#U=W(D$@TwE^n zb&_VY`6oTQfHzZk8K1@RXaqka;L}Zh`O356bF-x$6-sQ;mS_vZ$b{dwh7fXKMEHT^ zOk?3B;HfhepD5sA-i|<9YmKcyfP%qx{t`-@NB0M2-QFXOJ=rzpB?D`R*2|t@IEOz{ zTrQW3$*DSp7jXyd0;Lx#kJAR%f^EvKd8f1l--h<0_|6-c({Z8qVsLj7OO*FOoDJgBY0Tu?Tr}2^kB!;PNrtS4W$Y z`A5~gxneeL-IOT1${2dTo^*GD_o4x7hkx-h94yw&|C4l{G$A(?D8-Zb)gXMu(X%W3 z{889%lnsOpGWBGt3h9ud>|6dp&Hid0i3ku6B*r~lqOYiz=lTU&Dz zITn7;uh7g=w9Ps;3=gvtNJ2=myV;_cRJiOzk~MO-Y>TwJdnC0T*O33d=jhV+HVq79 zsEHql-7TH#r*o0S)BR+gY;BDmY>@}#^_)vGRH=#n2cuEfAMG{LUhA;vL_5410 z$wNsF0wxwTipbN5ny=5?mtny6a4dfQ6N`Y8=kaXDX%v&E?}ron{h4H8Fr4V2IQpNl zAZpIYGz~-I$H`jo*<2AC1tjD?izLVuO=Do7cpME#5;6+UmYl8hycZ{j$1h(UBPp$f zno~tqRFZ&8CHN#&EFdec=I{m-lyNG228;rRx{bEBBD!EQq43Zt{bXw^mHE$$gH**~ zOoNNVkV^R?Mtz@@hrD8oCH#5Igaj#1sW4q#6=U#A#$>KkB6mik8B@OVS}bOxAofQOf8G{pr1*jj z7s1~$`rAt*r?j+Q$3(E-QZB&O3P2#3WRcGXWF4o(r&0Fyo#WuhZqtO5|NS(4_|B4g zHsuiwwPlUMCywb`$Mg3sM2I#Geqhd$3bNqWEI7aX5T&T1eUV5SF1GPC6@spR7jdk1 z?059r4nZGBvjNJi)Ou_c%b(XC2sUK`wR4X&#{p66q(IJ^YMf9t&!5te1NNkQaDF); z0bA~nNgRha882xie40(u@|GpsuZg(dAme_6ko(P2?$^ZJugE#JURk_V-SH+wf9j2bsZ4~_KSMDQh53qXRrdAT#c+hP6crHFQ(qID2Rn@ zp`=ARzih)x#RGTfxjppkbwkYawQ)GvHG22@b;!Cu=fcAXOf1b3F(!cH&!Z8MK7vnyFNQoPCP|S;tirPA8Df zoW9dE@-dqch}l_uJT(f)USH2JQ4&A*tZK4o6!#J`Bcq^d57O#%XQxQ8*C&t$bKCX{ zG)r{PFCFFa60S5;S;)O&j8+^QgLr1df{7XP2BaW^mHOuMP=sXzB{E??pMu|T0TDKw z4T%@>iJ)TbRbc`J6kQMt6Erf;`Su`szJ3jSdzyPIp3I=yQu{(!WmB7Bq$i_!$?jez zN|lB~7MGIckUIBJ9Y7+vf1gwzY782E8;CXNtx>Nfc~TpGv(@~oj?xOzHnbhinSX_0 ziRmDOh3kwjS(E_|>cY%i6-?>sQI~qcVpfTip?#1{5wW_0xA6;OSr*qI=t1eNS=;fO zaqF~t2}G+yF!ZA}dE|#_z>e7REYA$G3UwUa1;kwD04s7Iv@rtbp&6>+{sQ0@0N04z z^P*grweVI1MT^KEJ`lD@)VdRcbFY$hOCk7UxSRrDJ|B$|oFk{4VR*FiLE8c{3(6x^ z!Hy1yCsW-ltZ1aLPq~WXRYu=Y_-Xj~?-*zumuVc2CQz#tv2S{gRh)(a!BD?bVMg+v ztJYcU>|}EHB4`gw-PnM5mLDVt4_cPTUcY4#l;+`D(0}#E@+7Vg8cE&wp~`c*gpSPj z88kicQ{_D$c5x2qP+h5YYqrpzO^dHk&*8}2Cxjd{cnSsa(b>2z28eL9Zh}I^5z{}k z*f4BCufXrAU^U%94~s$_NMKSmihS~F&;8VB>j9~RfLx*jCo>A#2BE2wD- zB=S{sFN>C&=4PS93VTK)tka4z_KV3gOAVIz_TGXja6^+6n+lT#e?mkz^(^8Afrx8Y zpgcX7ZXbn}%udBD#rWjl6)|Az zfajRFSl~o)x?$bbm;?uU*+9}F?^CGH+9WQFOo10SkJ>64}~|}ntNt77f>Bxg>vz0s(zh5hsHUO$JahfFpl&*+r^O|Ju)nX zGWhBJh+z`rVy1`JnoF7rjE{##Q(l~u`wL)d_Dz~LOUNWuPAmv(VYn^^a!qc<;hzb! z27@UO;;i`xI_2awClIcN(rRwe^(CLy(g}CF*Xq*(_IDquKao-PrX>nnJfP>g!2c6j z-mQv1`Kmb8DfKVAHaZn5UuB83*D`l2rM^qSHaz{VJ5Czm-bZXy= zGrMf7+#SPYo{)els`uCYRH}HPn?Su&udgcAcBlf}yYngDM|uO59SC|5hG%qj1Y}?_ zA#FwjyNTzHdT?PQAHcRWdwKAH+6zhGDp%Oybs`<5M2tJoLv1-jo5T@>AyH6e%7s*p zEYXx8IvK_by4J{p2(`kiR9IiK>xB7g*oe5cQ_Q<77q@-oqU-u{2&}BFXFzE-V`9vN zh(*u)3V`|s>%be3k$E)w`1#=g1JSmoh1zOxDT(xRK-bj-G>-4|D*3_uf> zUkv1Go=%1^XjGdqf~=V`Ir`<7$3NGyw@fDhr`~vcbaFNx56JdE2INtn`~a5n4!x#) zT{R#?WqTA#EEUXdqms?MN^&PG1XOgQ-MA~g=~T2zqifvPk=|YrDLXtra`96EAwU5< zoWDC~hA#0`-wL@4s<$0fyWYqthO|mxEn%@*t~BHE1x7s#oPr^^G%hVuZB`R1+!YUu zI~9oOJ0x71@Rdq7O+$mv7?F7mHdJgT3_3BqSXgHlk#UDf+QUIdvv9(VT@SF1OmmVA zX4lM570d6Q7;2s@L~i6}gZ02s#sG*n2@H`)pGr@Fgd-s9hwY4u;+bM;kq#@yI6wq( zpN7Q8tK{ag0i>tXf1kdIxWdH6^i^p4%5AUZN90_0cY!qbv7I@Xi4)wJOFJdE(!iJq zZ#7sy+7ner;hoDX_YVJiG+OG5kcCKHROub*f%ha|@Q{kWX(5wTm82{R=KPqs7Bxu0 z*Lb@-_gr@LYuqa7l!fbo7BWuV=Aj0Quxk_SrdAB*TjPOmq0R--;ibMm5(Py8DzB@a zac#Pdgyfz!DBf(?U<+e)C=9CcbQ$y7HBJ*#4V$}YdfU;|IJiqlwF^d%uLjhH%0Q2M z(mJB)nsIaFz01wt51KaKF>kysTg%N&?Lg^2B2=s1rZIr31%rqgWXIYY|0@yRN7I|r zGZ+k34a{TdHJ=_gSHL9=x(J@_>=h)@#>2oCH*^@d&9qzBdus0AzTE!#|7JTrX19NMrlzgx?aL0&?oQo_W2<+=htc=r z4Har=n_kaoWe_P6W-WtEWTl1Tz0N3-^fqNlNG_qzAGiVZgV;I0;ab00c?Gcx6N28gZ4 zSpWO}m$u%n+Vn&l90lL7ZphD*{>5Yvzrtu8Ky)hDOxcU#Q-TtV2pD52I%pjN;^g>0 z1~GRCc5QQ?>TSoT9;xVkMt@HIU@-{YTcr$R7ePoC7!@57MS>VT$U>a@#^;1(a_H|} zUjp>;9X68nkgUtAWW88pS=g1&M)fMglm#WHA_W7|VX17b056^LMYv=F zPluK<`+^!xn!d9+a(o%aEc~0Q9jVT0P&w39%Aqv36kdjPVk|&5iwqz%ta^I{iu` z*QMme_WQKzlUD#Q;6NISh!G0+j38OY3v!p}lFLpYWvx)AnSj4KzYysk(vxW_5{IC) z5tc{>p~;6LNq9=82+E*EDb54ZT#3Duj#S&n#C8p?`ySPe?8+ySZYv5RC5XmqR+4C) zF43sSZ8?x;C4rc%x6`9O^?q*L?S510?Y>`jY3udK(!|`sojkk7lXbq{WVij}7jgX!B)J@G^QEjY!3V zL<@=~A9Nt6J>L`sPy_M(F#T%m0FJMT#ut6Bm@FcNvuo}UExAW*sQ>KHT{Fo zk4Y>ZgWc24>8}bvN`_|xQYz{cxyO=13IgxEL6#=VHwQNd2^R>!3x=pIz;I^qV?SJF+tEi~i4FzBpJ6zkFdBI|wd* zxJKP4z*$_a+D}ZR}f}|{_6cwv|DPPt3+Sj5%d+Pj6v&^ZA=C%M8UJHB$W*F z&y=_&7G*x}=NuM`zz-*1N~)S&|M#a3ikGPW`tNujzj@<07bwr7AVS`6X@)Z2{fYd3@jp8p z;sj;byVx8rE~7&nr8s%>CPW9E#>mChZ!hnP@V~x!;|3^AtABZ9a<`$M&GE){r=#g+ zJs)l7^T~8P^}N->UCq~%$!vq){O8RD`7h2lf$v^$8yA1s`T0Vgox0#COHPu7d+7;h)5(PA;$OkEFoqs4YIM=K>UJs!4Ecyv4* zC)h<4^45*QEFnhHirdDa85)n*XuiPY*laeF^>nftduudXjYdm6!dhG$1xIqIg11C? zHF7pll%<3jw?Wg%$o24KvRy1ZZ?>I#)2+9djJ+vdtv2h`77lW=V~o|H5ng!9&31<7 ztMPcVMRRvM8@Y4W^%i8uE)X1a*bsmp?$oT+YBI+jUQM?Xa;(kn4N^2026yCaA_KJ;V`FV@@Tc7gF^wcM;1>+yQ!PTjS)ST2_vZ)yq*qvU`B{||C< zDv>Tmv*m0vo6bfEt;znJl8cNSv?ZF1(R923UIIiLqXX<3z?;xt*pa3gQNCVQ0RZ{~Vya(Zqyv+Z`gm~CB}dC%w? zSWeZuaS6!NvpyGUdz-g2xF0L=@w6hB_9;2jU**)Qr0juxrf9GlVPJDT} zFAf*kqGi_03k#l1e}tr8P7TuE6(vX+ve1XzlI!y2e74Uwjv9v&HHHA-N!5UjB^^0RT~@e{AfyIUwRbiO409nwTP4N~1uQ zj~|4S{Q+=tJrJ{(yyPKHNYPVhj+ZSP542Qd*(1eanW()(%0!X-iZe~3dtSi4ygboL zMwyk7CUJv5X`dtQ)ZD;Kp6Zt@i_0Vmq3bVX*L;kkDqZ{F6zQ(Q^6-rn8Ms95zA`kC zAFq4B@gj$)bbd!p8nnZz1IAL)b07I(wSUEZA)@~QK>s6+!bg&e1Cs1DQS1gFcH{5# z`4B~~0HRko4x(d~*>y*$x2V4I6LmS=Uk3Nu8kto^zmw-*Q>vfN!Ey?B(7I2Y$V6Fx zh5Jz4d`{%2Rpm6b)w;2r(o|XThFcPEnJ03>+BG@{%A4>o6DilK8;p7%vOD`Q6GtLs zz2m_|PqwSOEq))7-f6fTqv3_CYlf7jUMZ}ZF#dUisqDPjs0JDs|O-ewG@jhKOW11Wr?uDmv&V*M?ocet+PjR@gf@9*-0xp^Nv2u8Nu5fl-E&wC z9FbZ*aTEmD`xj19+83x~xr^{tT(y=~9aa-3fS*H{>`yht{3cZ(?_W^QW ze<%MJzvwwEnbVE~po$Ip0m%>NG=e~okX)&TnP~(;Af#l94xeM#fhib53;;og9}ROM zga80{q+B%w2q6H#LvE^HM*!p>F+Ir*35_5KB;A`5stADmQ-ZOfz7PTc{2C>%I59*t zf_foUqjHau=h#CT7Mgf)DwlC;6{iq!2AlYWjRFnwz$J_=Tz_+M%uDfV)5=E`U2mPl z%x#$AWQ$zc9n;EHB{;<1jUV7s?XQN`5L36|7Zmv3yJVNsI?Sp3sbq&({TS_h_f!U( zV#c=aP)I7uc2{2!Ys2)nIL&OKEZCUJKdqSj!3m<|33 zGvOa%Uh6LU=M2a!)Tttkc#WE6Od40%BNs&UiZ*ujIPOKPU8+QFZQdl&A2=+=AWvaY zE@*47EKa!Gup39)saD(8^mF(cMqk6zx>bw9Z1T~`hdgBc-uI+<&WtV#G2SV{?a0Dc zd%o}u=6~d>TyEi<~KF4 z+|r4c>3WnRm*uXo{x0@EV6Epyki%oZ2=bNZ(u`7tnShM*!edMj57_l%ZL_LF;bA7A zCzQS#V`z{XB9xAe6AxT6)&-$F9)z}_nE^f|$i>?{c--fiM@nl8pi%;4fR6C_@cVd; zZ3Tj0r1-TUiBTX7olz0x@P4Km)s6(=e)WUkUHbYAsJz!CA*c_6-JH~;X}?Sgxcipr z9iAK{Ozw&}1avdi+GPYp{yspE+jb>hq=!h;YM6mCPYx009r$2jo?I>bOO$5(uTGMt zVSgZE@UhKG7BaHQ0Usk51$(IFDz#4b0g>|tB*{{$WetW%_Rgh&Hku>l@oXhGZI2INn95ZL8Zh}84=Cy>BD)S`S)G7`3Q z!ezQ@qeq-S4)yZ#dGk9-N}3Vhj#~NR5h@`B0C>Q#6S-6`)2pRv1&jA+;BVRsnI?9M zv^vQTNtDNsIv*3QQtM0fvWT**R8;OEQ_{Onj(&2-vD z@}fQlkbOvxp$k=IiQA&p9H(NA;n!77VO1^+2QzU->9 zVKc2ZS2h9f0smi))9ems`^eMp0p+ASM=k`hKp*eV)62-iL--PvHk{5-?5o1}K8o9( zmevrHk;(~|blO5jCr#2PE#9LP*FPvdKxbMyg1FPv23x92kaHQ65e)2|%hUiX`V)1a zr`~f|YVJDB59iufO>MBH8$_!@vf9l6FNG-F1bs>@JJ+6RtAlOvG1hb0YO8~7@fzm2 zY_-+Fw)l_dvej0H+hRk^XS3B(2itl&#`toN-B;Q!ic(yCKdrw?)@f2~eA2wS+1ZV@ zFg8xB%`@EtYO`IEncp*=mQ8K2rRUJYTR+6!xqL|gedeyij5S{9Z}*XEDALdm7j*>9 zUJHhkKuygU%m`K3GMHy+Z4Nr=vfm;fk~ycr7QxIO|Ce*xYY}Yh-C@s1^zuHx&o0W) zFl&oFC;nNjb|65L^ye$=Mjp9;pT(dQ05n%NWIsjOO_Yb;Sqv&6P?LE`pE^E|x0W{0 z(sP)QOa)))oF}1xKZ`{j3u-y>ADGU$Y)bTj)`}T@n(=pQXA=27W49S*vz*HYQ2Bkh zrBcah3ip|L*t*l{bUmD12=%e}=Ob~1q~mCY#D*N0d%`-8T({4Oa1Ni)hfG!Lf;3L> z8Emv=H9qJaq6i_?_IGsUALM4$ZznP3)Ci|TF!FbqC&9@rQBflobX4{Orac>(V%FU- zLoIzHZ}$l<8bm;5tKR|{nmmW)uutCzO#~t)1v}5Fo+Ar zb?W#wSha{0-x@+JHelfPIxS8+8bU0FJ1vRrXc#e#qcFA2WG5WL6?p<)ux}Be@|B-J1W#OiK-B4k#FU;QW`HWJk8u}yIH*o6Ab!4&O`dN?~^Et+=$4(_d}E%l@AWfAZ4&4#=>aIrzCqh@&_YD!asAI z9Qmcey6O1rULc1BJFQp{Ep%}Z0DD&COo;-797VBRCWSx%r%VbhZJMx7G=O-6f?$K( zSF7B$g8{tiI=2FLq5(wqVMJkn0m`(^akR=uBN9O3Q*Zq*_$fhQN~f|~VbwAK4^M79 zj4l&^aP`lp^e{D#sPyq{ve=9T(4M`4dsQaT$L04b_y9?hsfg|e@_qsRoT)a7$EjvT z$r;*i4FyEid(lrZEvGv;T~RHpihBJmyZ%BqHLT|1r%n|HBoyB)AVnmI^U>d6yUbLP zaE@)3#9$EZ*)B`Z!2H0jpO$|A)g!2zTZg%(f1%fj1YmH5Jo>v31*!UxoE}s&7QkXn zaDGEI-*fF~J@3h<6SQvfEKe}qCWU`)xHoB-(^7zd5AbrXLp&H2amC`^?8Ab@|C(Xc z;~6?mXQZOBYWDji`l@evl}lqgMe<%rzEncbG7C~=o?5Zaf>gig&N2iPQ6_{dl=Zx% ztdBw?dr9=K@{w05ppNJjzK!TAXxlALu=hUlbcJyxe;YYsn3i$5&%;;jv57G7Ob|*l z5X!j@EjdM?o)bhVrX39YVF_LUn&4#dTI%&7&W?0{8}nL`S`yu|0yP7*oZHZ+Pn#J4 ziU_STe|OwR|KMlXGtP!2T1&k1J#w@CiW00`u11Axhw52*kohr6GEk3L1J#VwlI~HS zVt%a~@5N56mPUT?=u9fBbFUi=;IRVu7ZQmR<9#WK))F6aXjU@u0KG2DupjQs?h_Qy zjMS1?`y8pBeN|C}C@n!8nlV6#VZDsbKphlP1Xd$-W)x`egc7Igpy(SCG-Wn|`*~I2 zMM_;-VqQj}nGQ=wg?pA6u+o5BPVsma6%VYeninRIPLIX7or^S>qy&YM1SR%u&Xe&$ch-H0o-_?>W&~@M(Bk7 zZ`gZId<*-XPz~xA6vxNwBYuy9Ag#|8_4^eR+7eXSL!!Cd8W zfWMWGUzoCF(I6mny19a=nQ-1hmbGWwT*~8tQ0ts31T@&EeG=uny=fL3VHyNryhm(4 zsKFPZo_SW^kuw^(g+2hXy?*ra{Ab?nz0ZVtsPsD z>OcUd80+X?%~Q$|BO#!2(A6eStzZD|Q}l@Os|`zx1c2`ILu`Yo;{Xut0G5oP8n}|l z>&5`(`ic?2E&w9{)ynT83;Ai`M^N#fs^(><_c%%+#AFFkpVwN}bqUsG=pl!0eFy(p0cEa)**v`VPurX1XfYhMw@Z zY?zs*g0+$VJp{viGz5%n@aF_c{S31Oz^;=dO3JTbCk+v&p_;;zjznRA z5tg9=HtP5xCI;{aqIr#VfB`{ZfQ=`d9Q+VvLv}?|!_18M(qVR9!B>^&coN<}ESIvi zX0URf+LV6fKByhzw+^UHL0>LlXzgjx`2{ zxRL7En)-weIE|6Xg7<1?YB5`T;Fa#xrgRJ1_gcAOZ?MYBceV1CUiBl`O%>rtR8DB< zF*^c=KtQgTl&!Vl`{_jcs3l`wf-4=_mE&q_wukPFhmC2SaF;dpPHFNnLp`s>GBe1u zY|XJ@PudZA!V^!cX=IjmnPb+h-sHPVi~kBX$CEoU4NEg+OUu?sGv3Zb|B9L_v~(>^ z5OCn$KgEu>BM%0eUk(lOurr^3K4N%#rvWE{R#;YFdq*F{wcF|KcqML(;%uShHGQn{8gXYZ!QlzQTt*L^chy$3Eg1^}jEwk6lF%FkrpY z&38B}rRiewyDw$~$1Jr|#o0j%m>FG@Xk*&_VSCycd&_OSnI2y zp>S8tov?XUL?vM6g0^PL>&C26#8Nv#qz%||Jb|+Z3?7ttp2jBQVyF?im>dD`ZYTo` zDJdI$5KavKlL3|{cRB)AHj2}-W$+z1;>1F-ENWeQcdcNvtWm*fv2HA!Z~$#^j@XWj*@}XVTP8 zBi07aKFseToZbw!!PCW}Z1P>j*+73KCq?u%wc(1PW@yt>%I19H8+1J)V-O31(0C_k zeb(~tT3pJKIn5{=9y#*#{U>(VMz9I}{V_8{))6M0OXBW6A{A9LSS!qgIILD#@P}3^ zC1$MalpRY$s+1CA#&`dYA)A|jX@stc#8&Pjp2A(=r~B#`sF5nbX)9P7xk+&74)M_v zu(VNa8lS$kldgt|8Ty2~*@at2m~bA0oR28IOI_bDzCn>iaz~7{f)^Xcd%HByjyEx3 zbr&!${r`;)LDd04*B=PM>kk}BsId4zXtMYK#{#EUG7x-HCD*=AT?7^{5*w)3g(Wox zFDW^$DkmGkR(Oj$TFZmo{j6hzz3aq!M>M0Y3>e?FS{7{XS=_{J82BM@zw@+kZO!Yj z8rt%gU#Yd9(2o7tVeelk=y?}PgF*rvAqb9p4zbBaStW-P=wFyPP1&OxvbuE2myPq? z<`P?UB{;wDwJuem%!A*$rJk_XRw-g@;xXUQ3GN&075_TOO-Ieh)&owl!Dw^WNK?Rw zU2J@eT>Wx*Y6B7#8yBRd`NcO{5lm^NBW2^KI;^K~BoQ0tY2d+X2^o2z0~DQer*C0M zwHq4NK7Sc0x-y-B7Z+5DBj}(uD9SkQn3r( z?usy{j0dAX(MM7O{}1+fVzq6E534|@)&N+z+oVNpy4-?;4@HDih5~r^`*=AmKH#L7 zCU;m6jIkOOA4ZJT$YDW7jHl=o1A6~E7#7ziRqy1vLz%m03pSWaw-@J>NVci0mU0qU ztt2ph`0E??8Rwh8cQ4WmW#nUjc};l*Fri!zfRSonV` z!wJsvB)nj6H_j9M^UoVU^uDhIzyIMPPw~a~Wwa1U|0{le`}a7(TmKt>v0HkdCbNsb zU9bvMN}p<^CaJGE-ni~`G~KM{qwRb?nU1HPw_3QX`Fb*$Z3z7@9ihMW0k8bz1hi76 z7lmn((J&C#P+(kouH19gyJ zPr@)1#ozlW?t=+RjC%*vkgYHhVFb#P7*j_FOZLyTdoYIY?!8-wA=W;0r?r#vqU2!&Wf ztv(y24dlw4%7cEuE^6G7&&VDoad}Wrq~c6!4V$iKCSz09Uy$ZirgBB@_Ga0dEefOR z1Orm%H*K`4<|9jEz&Hj!NmIlo#V|={cH3jLZkjrUM;Lg6`>S%76>qf4lF?|%MHmI| zb1ts2gESJM*SEfU_nYEOqTME5|2mJQed7Nfg8jJKzX^71$fp4nF(=8v_%DLVz#=GJ z#5&pvOOSLTyNd}*CovU%XbF-oCg3kz@RsSMd(>vm`%x%eOtcn@XtgEAN*5(IQ{OtZ z(#81EYQ=p)jFm{8*$qyP{m|%EDOfbNIF0?svvSsmOr8%cBN-&bknxgMKZt z%y@zGikn`q-0wF)QFQ$d=`Lzxy!knyusdmVJ)1y8YI1 zjyXKXU3Ukq;|7D*e66GUaJ_SsdD*qw2HMwe$~0TE;tXx;waWHveiLW4jk|J&uj;kd zpb^!Yl17yCuBfZFQ3I=QzAI|@|JfJ}taorYaO}%BeQdVZY-n8%UMHt@ls&j?_J5)s z;^s8!cY5xB)=$gLq9_arjsjMZjTXytpZ{sBw}(x(&9rgEXcQjc`L4|J6&R0>`%8c6 z&*Av{X1z34#~mg!mU*@)v--dvzSo(IpNt~gtZr^%<*Fo3#lw$v`1zc#`T@W0dUbWZ z&brP?)&arr>Gcf01Ap5tbODQvVSf37FVOvrQ%+BWiiZhA|T9_!90cYRCP@Mwk|e4E|*}~tK-J7s7l2H1XyH^o@B0K zKE9{way^elHGrxr6k+NnY9b_uKlqHLJRAu*g=Z0BRG*AO`dFwCViOR_Vx}4>hvLnZ zin~DrcSYc)NuYRI{Xo!wx@-V!_;W}d30YryNC5dXP2%dkb#<0OW}nx2H6ccy(gBNz z0+xCc!9i|_?~|%b#f{K&Z=W5 zDd4WUL7%EJC>gX^a&|g`;$N{TaOz4;uFoa&6hbK#&ev{2hi9I>%^HlvV0pgJ3&W2iqjcNqFkp->`0*o=bN=txEZrKrI!Jq8fVsp8Gxv5%F(S*K*k;&r=5V z_y}}^Ks=t(QG_D~XVbk87{VypQ8k=TxCHlbD4Tbo6gV-LDn4Z*sTicj0ETW9aIXSf z6M(S@u{M+9KVaclO&Zmhv^6qFa&Q2(EeU^5XGjZ89dcvan`b|$X&=fT~F<8pH<|RfX)v$HvPhbx)nSv_@e%$P)K24}Q10Il0 za02Mn#5x%WL~`DEopP&twQEpsUK1Nh!34JEW26hT~J%E83}$ z28Z-AZHi;q_K)ryG4#feGgwV;FN9c1`O{f%Y{DUJ4Q>!?op3Pfc|tVR12b20H`ERo zi!@|o0sCFyu5?I?<1nM65%;*Z=~%&%8CNA!gA@o6L8~ep6GTz{q6=kDO7}B@Nc#$z zdKB{EKg`w9cJ{UNH&sx}Y6CG0y!$J3OhQTMx#OVQaI5(toeK zErs}CqnVL3GW@}pg6;lxeW%oJqhJF^PYoOe1bK_D4B5eO#)J_Q zZ$;8oE3=02lqJZ`v>re$QWV zm5`cLjBc-`w5uj2RjT^3N_(KFGR{G)87FfbD4O`+XUC90Y6npJ(mb@-_v5?!d}rVF zZI)yZBjrS5m@CPsdQqzk^TD^M9|V^d0bIaS!g820j-dZ%L@G$9FkGO(ISSR&Dn=`$ z5!}yG3BMV}93@;cz52eis~$~mHi|#Bj!F=w1?NE1Y$e$&Q9witoKY0H#u3w0&WU2F z=t9Pk=)DEQWoh?t|6}<0YiL}RL8*i&SdtuKW-^!*3S(F@m1v0$I8O^nQ3J(jLcI(E zLFSleL~m9}=v)hpaW58xv-nQV3bQ+WrI?u@v{*^PRB51wbEXu^C$kg$3qXIFOchcC z+~GP3?N#P5fYG?$6sLmXLqo;t6ce4kW<^i~38@G>XyCd)3Fl;@Q>~mwrHREhADhBP z8wP^`2u*FYBQ~E(WV!^QN%UnIo?8!wAD9=p{*@}2VCn8W>R0a8!5;7#%X3s=$I$)d zrpkY00~$xoNPLPrgf&on79(R*kw1g23rZHa6Ua7#DdGB#I@6h3=S@iS z6{0Q5ku@AQoNoc1Xz`A&BqcL44NI^_`D`JQkP zZU?6v#?FzrJNb_D3Zd#x+nxRfKJzs2(N(ktG^f%2wD_;MQ$sn#V_P_`H~%Ppxrf#( zDC_$4>(PpvG1QVrGaA)>Qwa9A!0=76Y{YYvGYmJ2Ke)=@oLkfdhj@>VDB5%1C`~;F zBB9APF&m$r_3EXo3pQzvYOQgdl#SZiIjwhm=_Z0(-^FcVt~9gV!_Hmh)CBPAlpt>~ z8qDoC^!9PK#5g-*qvB`jzzgVS#>L7Jw|YAh4Hlx-kpuO}UJV*$g3uwG$-s8QXP!0c zCh_raI;NVcTn)1ohP_^|X2x4mAMix)-qCHA`yrhCw${ksnS1D%miYXUJ4 z#qaqPbMT-dO3&5)p=?2rURvm(lrm;#H-T&tl35oi{qCJu_0%40E+H@PO@1?3-bNFl zChaiMICHX^KX@N0udXK7N-d@erto5HhQ>Mq*&`-~&_J~#PaS!li>0{6dIIYbpvupwxA=Rk+JPqsA-=xcCRlh5*wZ$j#jZSXUQj!?9nrQwj< ztRJeU=c<%CK(RrF0W;LLbg=E2Y8WgVxe?$T`lLx7s;QtZl=9e7jws@}3F*~(rqrBN zt~$#itWT=?R3Iz%TY(gIuL~UnKORx>&p@MdxD}w06A&q!WQ4zGG+mxb)P)^wj;8u#mDTd>lBkUDfBHWd3z>2jCI%L zm*VE32vTDxZWO~od8jFLupJm{I1o32NMLUVr%{Y*3{mqa($;u}a#P%Y-jugD53q*C z<+P;dLA?Gq_amIR=!hAefDV5TZHB!aDFZt5y(2ahQrbKX_3Oa6yE<7wby7C#NQgh1xy(v4C=;0JT^pT4T@`|HD7^5`c40@Vw8_x-LaZm*ZoU%gUYYui8&eAlno2ZQ9q zk>WsKDm!gxRcdfPa14D&gE*g7)=}wBy<6FskpJF2+gO1-wp1WacRRB)v!}_YwrZh3 zSqqDiBda9kv}@5#$HO!TlCuELU|A^#rK%BlZG|N;C1e}a*r2AEAs!XUANKx2e zW9%-kRih{zLHJ>ObsPHJ(r8C8TV{)!@|p&(EaS*u=@c3zts&K5 zM7G1>UJr$=nAJPsF`srPwPTQrYojGbA^Idd&mQQ72EO%s8MuIhgET-{83=ERLg_Uy zUw6$4ZGQL_qCV@8uL`^r^uEZLUmxF-_M#)W@)XC_hwl%0c0W)5ZEVZ`(FW(o`ri&< z;k*5Z5&QvVQrl|VKoEV`SImP!a-v9aN?&R_ZE00%$c@C%hqj3IYGe(ScGcZcj0ySo z&dO~a$b#6*%sF$;j27?vriTi3s~jet9ceCk-=km7rt>JuPa-&hbweI%Y7u1bm1D3q z6pv`IL&KS*gsenQVYRgmz7bX}I#`h0KI{&+OgEQ*6Te6fHwg96wxDglceHI7l&PR4 zjmAqIQ(M<5CTmjYTU7G)NVpquSF2CO%|j8WMp4`-hMn?IQE;#s7%SKjHxd!S-VRQq z6sj;t&7+76l^!{XJM666mo0U~aSHL<*~N7nd~0hw!)jgJe_XF_ZysO?v-7YdHi(x0 z=6{3}7lLPW5_I@`Acs(vpI7%~nZ6dIMnWFwyp>FHV6pQXO% zFv}%$q@88zFkv^K1dn{-aOC?wOW`7gH$Ov80K5jn860@U0P4m2W3%RPuwsN ze9y0#hm(@Pkw71NceGWTs*w;NIEj}^QE>JyRuen5H=Iz#fA2bJ;UxUxkC~mBU9Ue4 z?SO_Lo(yL~39Lk=DEHRk zK~vL_!&=Mj^I^Vas=fS2{4N}B3A?fDpzQGM^uA@(ra`9_881F&XI)>jwq}W;qgvjc zG##e8tMY4ceP0BrDHOLg<4}7vI&|z)#JBMBr!LbA{T zov$GK`lzY!aC#~l5oEo2g~NY0k$8y~LGish&M+HG0#dC-JZ0Br4@qgp{*hcY|5Ebi znl2Gz68B(he|>yUp8S^h5U5_z+aI@8adWkb{sLuDT~FIU5PbKq*oR2AA=spkB%wvr zRV^Vv5UCGsWgX{DysCZY-mQrc;=i+JS4|}D)?QMbxr;@OerieGy4 z>qWYZqWmO+6WBE5VM{H7?7eafb_>Nb8tl+;CX~QRbPDCpI`~0Yx9DI+a{IEMZkcW_ z{}I0lhZ}_L(6*p$|Ke!ZFep<)OB#(AAG5WtQ%u&(p>I*i+cV*Qth*_%i`&N{NR3T# zqZszeLro#U)4*86p12W28uoT@8pWu_&}tq<+8WPLZi5+^<$+ZJ;Ki} ztw~}Ga6Ff(7#(s$GE*tMzKu-JVd`t>NIT2aVZv@efn-cVB!SMCAp7blR(Lo)6^#gF z9o)j<;P-R!TXf!{S&;o`0cS9|OB<*g3-K6%%nqd34BZpDYWl3?V4cn(hS9+TTl?qY zBYE_j!>2&?g5H0>uZp{yW%Lf6Q9Vz?Fc97IE4(?CXtNh2hIW7fsp`UjP;|Ag)FN@r z*``!c{yUfSGo>mBZ+G|Jz4y*{_ip793nh973dIy%QEiZJlZ5ai8p6D?+|Tpr<2=vB zNXX1@%4KCYBW6m*f!3)cRK}r~H{wP5SVZ|c*pK`Q2z9OvZO5NLnXwwbI(S!l6R-q# zs3V&I-IXpb3Zo94|s8R!x)rTrP$~TMdm3NYF`0cG9$NG%lE34i)6aSB3e4?OFQ4ja z0N(Kpl~z%Y+cpe-g0Z!VxWY6w~!?pv813GNTq1Z!P7>dm#+R2h9%1MJD|9zC? zB=W&A+CzY|&5!&(ij>4(9-3`4(V|9bM2YZ-jWP$c?Y70` zXQ#!);(x8QSQyQkisJEUSrjmbY@uT0IjhcCBgdL%k%F>2_?%G}IQu$#AFX>UomeR> zDro~|0{q87V_E*<;&3vV$S(V{{@oPaIL)>_oAXoTCIPKzcO;Qsy`n^}Fh#^R=^g)6s(P->bjreCUe zU*-?9cMGQP$oL^ZkUB4muC@B|_4ChP`3DaVkhS_no4w{$I?b-ttSX}^Eb*j5DyP{J zSFKbPg}Rl3gH*mkoM;mZ3|tnuMsi-L6ZCRjo;(04uOyX*(_x*$I!Qv0U}lLL;??e{ z`G6X&aLA43ZGKVwKQEzamGA|iAsr!5zUjR0qZ$)M8)o~mI_DsJ#LIM z*pvJ}NY_hVy0AI?Uh&(3U!CP5pnui8xrR!xkuHzmLFUAq5-V9@O8o~nrHwrhY#?i2 z`p^$Uq#l!(-f5UMu_v@kK4iFna){#)I~Ua11ha-Slrs0`Z{7I1IH^h(T#E*WCoR__C&>>f{*SvF~W184C$YTJ01V4hu zOlth#7r%D7<=yy~E2&>z+sgEOIZum&htIGvc2{3pyHe6`h+5n_cUZ{rLFw9!0->A9f*g zYL77}jj+H_`UBFNEF=6?SwiU@<5Dg@evuNcKor{V_ugG`qhOjcCKrU-28`kozKc!i zpX7#E^2yVq_;JCcqJSmC^W^}83Zb-GCF|W>dzbJ}$|9z`Z$BceCsyQ5rCXjjucS*m zZ!IZjo+)%ltI&S`r#J2tp#j4=b@F5}_7XiV8SgS>z>ip{q>2?%v@xM$b0hf9Z{q;m zc(<|Jin?$`U5^trjmY|m%w`$P-~*500EQ*jDkALdwr`7EEHZ;p=c47XvvaIAR#NdX z7pA+oYpR?al`mmaxo&unUqIdYV@fWTclTfA&Hd+x+iwr=rWT>D*VYw$!QDGyiF~Z| zBy~l^(PdC+*EFYW-K?2xyiQ~tUiTib_1BEzuBvru;|>U;uSnxK=CQ^>|5aba3q41k z7_XghIC-!#P54P!2d(E(vi_%vaNte|B^RF?LufBqqUg zc*56}rlvigscJ3UD&F7i;bQm(8GWS)F;y`_ONSfb8qvZA^c@?lXSTtIk(56%Q+ZRP z*}D7QKo1W-Wmvp?D6l4ygbufF2pq~mq34w$+ zzxTao`Q^2a)lFEaRgC0!RI^-3pPf_snpr8xWO@j@xAzeI*280zQe@g%5DdeV22hGz zslmqY;Ve=z!pDP|jrss>M5PptoL3^sbmY^l*m><);NNUwy`x<4WT_wjqTKP2>0iPn zYH@)356xd?R$o=l6g!yRv3(AZzTGA2yv@2lRi$dDVe?m=51HF&>e7D$rB%Uh+b|5h z=PS5ks2sFOdf6piki&Y}VV50tX$wKInM9i{d7_*kF#PYMZP{^BqdhFh!KTPZ^6`oO zy3Y6c#Hb7@S24m9=BYiQdz?%h{w=gaX${+@eER-VN|=LK#5T*UnRB3EHx;S%a3UeO=!E?AZ=3plQ@Py$PgGqGswvCh{MCt8WOI!V@=c?|=r^ zljVIMu42Ft)1lx;*YkjuF^0RPT@86|KQ+Xg-2TScUsHWvkb!#M_&G1zZdV5D0Zn4- zb$VgF7}F(6u}L-U!|wbCol{M3+b|5h`&SS-R8G*uJ14`2BF%sTSqG%Mt%IRRbgj+$ zm?UQ{g8cVU_R_`c)@%RxwP!mD9r{4>{;$+)m{zZeE!H>7)$QGCR!7~WPS2pm$9NvIy!x;{gS}a;S69To z{q%WtcjO<)_*zMcCQn}TDx!aOt96n`EQOVrHtnAtCf1+(QU;RWCu`TAa)2k>dZ77y zLlOU8zqHPslH(K3qobo?mjiULq{IAn+o(_zn(p8iy&COu+qm(+pJL58rQ8uoefcwz zuTJ7LnI=xgPHyHV@hA`piijzaM}SropF4e;K3Jcm3xK3ZiP9x^oyy}8x!7IoF7^w6 zhCd}ivJ;UR z8JJIg2Rn*A`sMpj5$C(`=5)fDpgHbN#wqw&nz? zNpQ{~j=}|em}HU2px3cG19<)Z8W;zz1)&}ir%+A?JczT2s9l%dYMV3a8W>L$i3Tbh$Tm!XukeYauyDjrwIisA1)AWv}CJqb2Z(9}R z(G-gJ5_IYY)V(#^Yv4HY*)&V(`cRgjcQnGMDe)QxSi}Vh!}S5qgLR;fPBCvp_wsdb zV5Bu(gG=vOXH)oglh(5&=1rWUWVQ~>opgNwg<<{z;Wx`QdL|9c(K)DoJn!_VRtkFGmT?m7KrjQCuzi@Y0H#ztO2jGsN$=HgQPzN zD~1a1k!IRJj-EbeA^?K!@5MkPG6_*9Nu-!eD4LUQrZ0dGJL+q%aPX1xdDA5V91K1u z=2j6WImJiw^8C$(38ORElgX_O=Fb;b*RS4Qj$b|3U|a#I)eUmf*?~oD%tb0^E@sNP zNsB5r+K4*7P5AA%l8YWt5#May-S7M~+F^GWzT>ln_-$iaDs$5AR^mS~^N;ELfC}f(=_K&5=ru5HoLO7qtsh3Bq z8t~#7VNn&5WRsA&h%AB{I7r61Gt}rOW3fo+3MgA5Wg( zr$_>Vn2XksMSgr{-rtju5&rOC4jl#AH#8Mi9ZK8){Ww=2gIT$B)mt@dTk$Sn)|sqD zIeSG>ux>*R{m;Mty*k~)PMzNqDQrGAPcb8gQA>^P|A2ThscGQSUrGl#_dMwwn4Fo2 zQ$~?RgsDbXq6Q}^YE*-VU@3q1@|`ZRGS84iSlBOECHDm+2|0};FQs2(zXH}m^$;|= zQ@Q1%`TXMPtMkk8i>tSn?=LQO#xWyo7a~DZg7e)`^G2oqe8Oiq!J?efaI-W7tIJ>e zUUWScCcJV3|O$nc0zlKr=l&eC3rAb;7 zd9ARK_FXgYZ@R<@O2I6oLJg7WofBnYShJuejbfzsNfwI2)Ceq|DoiX(T0oBQ8W-vY zG3E(6fsdR`BkEa`#i$^=*{0V0z3#`0g!S+M_xF_!65mzUt7^4rsVc0Cg<6-;;;H+8 zkK@6y-pfdC<{$|DetL5YT z7N6lRGQa>l1Cxiy*a0cdB~y4Ng@cP( z{Dm16HVu&L#cUFXMuVK3eWRzisZ74s2ft)oFn_V#d^3_xS#%1W6)=mefU;?TWZh2Z zE?5pf>?~gZCtbm$Ldh~byCYY~HJEFIIv;Mf4YBqO7b&ocU-#$QK92aVku^r3swHY-81V+P~;%ZYM|f!NCD^j}PtsVL$8+ z>~8PGI_TI3gZ^th70v|6{J7hLZm(|-2EDM`w~tW$!=8Q8>;2AL$Ak03#<}{)@z&<=2O_pFk+@lAu1v-bg2hcuMS)9w#f zuVIdx`3P}+i3{ooTAqljLT3-1MEaoix}lRhp`*)`EMArU#O&5%xRXu5xg#lV84`uI zzUA06RRvT#%qpgX^~Nqpww*PVm0BH^^PsU%%cJQHRocK>0v5yW$9b0@;+$v5E0P&m zq1%7mG!n&*sW&k=gZ%f#x-YBhX(C*9oKqTsb#B&1(5_g2rP#O**b$}W;i^2x6bNdW zA7K|P4;*>)>ev$X#@w%-wJ26gdzX0CgFb~L;>-;y2o6DY;uNcbHx8;khF~5r6jScpMT|u`QQx@> zDm?5T5%Sq5A*Y|^BNk|R{GgFzU()9HGN|QPLdQ%>YyMN~&Af5SiJfETAnUI@9Zz#`U0X(@83RudkX4S0re*Wa1TLbP}YQj z^0?H)$26s`2vO5DK6;Z3wZ)QlsWEGydnWByF`2S$K_fj6eQZf4PZ3*YT|g3|+}Qrn zuefh7{Rt?p)T+lyd~5>B3D(?o>C*Bt&?)emeS0JFM)o+j5_zd0n#(MX8cH-bK)o#v z&V)tIgh(T7;^>yqhrWWTo~{X#!?#e%8B%wRP=jmI;i|pCt)p&R<<-wD5q6DjCAB@m zkaOu+;f^)#XhFHN0c>s%z^DqaSGv}y$oUF_bIyPV#5%y*Yd+=_eOWv<4Y`}sFKTNx zUC$@`H!FrQ$}N;tPPXJ&uEZ+qQnH(>yfQL(DXO^8cW%|(uwM&ErJY*9;=-x8j&7o? zH^gcdNjp|Cz*~yZ8vA7cl_d;Ri+~}wh%;PJbtzEti6s&cR1 z46LWd;-28i)+w3>3)`u@S?2X7^<+{(6;EMfcCPZRH`yw3R1;zB{o~>n1J2I26}S3f z0urbvwNkjK<9zeOTPq8mFW*hoH6J!bZ^OJz*=tkbEjd%Z|_q%Y9I-MDHyIrMt9UT-;Y+}SWN81&ahEK8;6{6gN`+6@0JPYmRB zn(82yKL(IZJmZi9fJ$x%#%5ABdrAPD;RjP*z?$KEDt1kU5mJ>-1)+?<;t zC=aPo8rTaoF7|*Qivr=TwFoi>ic9(OlpeSb#kgx#*`dE+XfPUX5V;Y zy^aX{`_r0DXN6#-vA9&UCugj}tp^h8wS$ulYor5AHiq=CW^LUvR>x4= zAHqegoG>b@lS;7bm3LQNztB>`!Fyh`(q|9`y1CCl(j`B_skP1|_BzwCgHtKdXe!An z{VZ4PJJ}aNtP%!$i4J982A{1mhMF-=^Rsl1;frpUyi$=9*vZ~Su zD#I#H0Rs*;fe6=-F4*$2Q-A&{Mv0bAFxwe=K(;uaGwR zE3(`8yMRaVu_M6g5$|wa!jhJ2dhQ1>=vjp|8wMl?v_vwZ)GZ=W$VTP!IEu}lh!1~E zY^Tlimo=NjAFs$Z{pj*_Zr!vgycrA({@qA}saABJrk7W zA4UcIiaJw5nUz;+^i7lW>LxvYT;HOEjT{nZ>M2_V9|lFaH+GVLgi*! z({GitWR8VYNT13p%`;uq+MkC-|3wrCtHiKcXx&Ci4DITS`$@RNrI zui|e&t2m$|FC8v}rEqeML6|K+JY>lrIlJG8(diFkV%=} z4U=4FHhE6y>wwFf9mNBpU>Nm|h{&Q*nIkP2j^JSc^zTI%J%v%oCHw%)LYiZya~u}3 z#B_-+W&R1V9Y%3-z*jUHgEI||;nla_jp3I+u768!ex6dm3C@wO^Mo%9vR zsF(LhB4LReo5)Hm*-SVLB{r#qqEpkIww}U|hld`WyItaqcb9f+9ac#I)E%ycNfsiz zZ))2=D)o|odzd~=3#nMs>Jm?;sU?pPuq5Srx1&0u+CpKeolJUIQpp-suE}*U%W-wq zTQ%28Y0D}6oQy;aayAE)|-a}L8!eMAn`VtGm8^gQ(Hw1RL zQ><81SBl2ziaI6}Wx3@R7G3XgZ+YYTNGLbD_73!dk-0}tV5v4UiU92xwz`2#D9{Ah z$Q-?j2T5KEU6y)dr>&3qe9l9RzF44RYFf#qp>UosMRK03N0z!2on)*v1Cz-{y455{ z25osT1j$s_Y}@X3Oez`Qg+GL9kfY6p(X3J3;0eZ9oP|FN?h)3r_|5?8vV5sGs?;L4 z-5l*V5Dg?@{OF=VOGDEgj_kM%q_g4g+lYQ`TkuIZ;e496I_Kk}ZYW{$!Cu44x!O*X zq|=Fmtyr67atJuFR5K+eC&GZ2FQHn)shj7T@OWIDA*fI32c6y9J{M9Etg@tMN0+c! z$;>}0jm4rVK^DHKb80@vXCPh2D;w(DxoYj)kew&QwoaxcDSdIV^p!tVF;Bv4Q++Nn zt*E^fVknPyzh8B)bEijTx}raBCBkF==hZm^K2=m_W6yF9{cM)m;GQDPRvIo|zrKJU zkE(@7zErXI(h(AXzE@m!PzlLTtl-V4qPO=1(7nJEz0OIv#PS)7yzneEZ%D*S8-(A9 z+Sq8%k!4QX2sf*6UhIjDjie%?{VE{HJC}tv2WH!%@N|L@!K@~F;#)xg&DEW7T!&_PdEONSzb2Nti)iasA8}U={!tYNl zoo#$Kz1aL_M9UgB!TJ z81-HGf}?y()!>``>29$9q-qTK9&ewW@?ds*Xfp~Yv7-Myw`%)hvtpwBm>Tu|iw5pEzH?3K1bK5o&{;pqv zx}H)>ZRuui(zz;5a&3~fnaQ=eBwsp?M}^3hgqi|a0Fu(?Jc>vkx&9vm=SW3*HQx4i;C*a?d^<8%@pP2{M-vi zP$RFBuwHDb&NmBMmg8(T{#bnZar%7ng7MK@IUhWIe9#N z{A6@%5^MJ8(TF@E?`lpE*W;Viq`a6S%W&VfI8F~7Qd_Mhr zPCjgaAc1Y`EqUX7L>e}wE{`liu_^<;um6~Oqe2!!zZRR<(dddU|Z>fm$;&=JWBiypRAz9F%Ofa zHe&x%t*cra5sw;TScEG*s|6QRMwgl^w@ijU1%Z#5o!6M^5(;JeP%ty%x zqx|5!)Ci(d(gQj5D~uffx86`q3Rs~fR;49u=#Gh6c64;&n%v4U9ZgRm-yEyJ3d&Kl zrS*J4s3MeTs;N-nP^qnj{|!zx3uB(cqupWR}9vl)5CRV|%0 zU2kE?=nlhbl@~5enrieJH*H0oHk1!SyrQx^pnBGki)%P6Y~0n@7DJ#)yV?A{_=0rW z#sU?=kigh)xU>SUu=iY;s!w6Rp&HWASVMmg8U+~WXAv~!&$ws$AAfXJ@=eeGT)dvN zwA)ln_Tb7Bi^bF$*>3<7q74uBNCwIW=ET(6iLJG1q#ff6>y2?#uwg==`JZV}*tajq zxw^Ca8W3`oO}h5zjl`PeuqPj1eagW~9%nzB%CK8}3$R818F@iD7aCi($N`F}Z{ZzJ z#M*}q?EkF2@iO*~@yVdVre9XLWICN*%$}VD`u<5YPkm86CD}cWwd_fh2C1hE*7sN-|8_p-c+ebr6c4TXC3z64kn3d?lVW zx?are(@7L_`+q!dN5{@LSdk6k%o=7|HqIfPKG@x}P7NiKGm@5N^_bbSRTD5V#!1MXIZH5QNR@mJp&rOdXXH9J8h1i>p=(~K@ zJYR+$zM7c8ImmC#8P^9D?v&hiwC&^7RfuMv5?Idm?}39f?G)RniVS}b3Bz$!9}kK1 zbt5N4j_84XFC-wv2?w6bL*->Fvcf+2&D+<6*2v|$!R=#KR4Fry8E_SX#*DzympD5w zu`caIv}J2)C3kIx!s%7`)pnS``-qT*N`!VfSGXsNt|Q^>iniq7oFBEdp}1os=zt&9 z>_a|(FsA!% z+3$&z{jRLl2Ktri?vp(&EqR{f2_-`nLvo^0sT1c8%#|Hgl*X$>F8GSAYv&SD3R+<2 zN`TsB^X7^hpoa7?DX^FB8k=H>qZ-2~J=;QhSOHAs!ki7(!%lL?iyt!_4)7MD-I@}o zOw-R2C1F?fEsV*R?L{$rJpI@7>nP`582wyD+V#c5kh@mLFnr;^K@f+%8 zJWSl_hBglEYYWo8nIZ1IL{EjLJR;Y(w4uauPQJJ7zKc7YWZg(SwPB!o98bcU83oc^ z#jfe+RY)GNuZuh=yK7cR?q!KdPp2`MR}gk>!f8%MHzy+M;P?}c2kNk03QS4NKaOXF zZw82L{Mbp^z8cNjtGU@7D$=1JtK;$XpOGp!FEV>LqS?*uzf&XMmbAcp#VbTflddrD z-1-5Gs3HDWLp{N%QV_FqC|8}-Za@R-BzV{L-x_Lny8Iv{``zC2kLSuU+>PDlVu|p- z*#Bu@&DG`xE1 z*n!4p*hu>|%A^oFsiC@y3MZs~JbH+jjy=nOAw~ zn6_xmj-)1@muymv`GxxcffGO08sn*=@$$OeszV>l+PAb;FktmCT4i>n;2a~6{{bYn z2X~(E1Gd~Xdax;3@5#IDs%p7TBUwg(^u53G`P4s7zd!h78$#)iy*2qX;K{VfO@XivXj(0KQi5iprP8ZwVX(u~YFxG#-D#g*WieEGY zy&hdJ&09ZPw(aUZy!NbqxprBhsd&Xh;poH?Vkl#E3)kMm?!v8%tTe7;1!n)0YszDr zo1SPt16VFm7;;FIjblgCm!-^mefAxgd&mQXVzV|o60#dc)WprL`TnAD(5RA1BRM?h zH-Pul_`dlNkZ$S4jPTGm@4A|%7<`HFr-vacaxgDQv9bILxjurrO~=or?is@j=IxvR zsMt_(_%DQPKQ*T3v6vTM5@TL81;?y#kcv6c-799b?@nSAhfdoI`n#g=_#-Kg+#13;-#tEY4qITAv~6q6mM$_nChEFm9;I>^*bRJR zQk*gGJ+ElDTCWRO!zaS_pZD+q_TGL+8R09oPK$^jtvRYw@**m0=xjxosy|%_jqq4Q zt$Zi~#*&Qy&pA*g9H{e*T8~s5CCQ2jogVdakx;US^F663z|5%yLut z9y7hu>7-0x5H77&<{XA{qX_4c)kE;N%BV;>$7E#A1IiV2gMd$_WLAK9PjM>7o}Hi zQ`ly9hb*XtFsdHg#27SLQJoP9mzEJ{{|Ao{6Z zerL=Vn=ImNgEm>t8D&aaOPj8`N`8j;33CQ6@I!@sWNEUt7&|IhU<%|8;Hd}rb7bGa6dVU*n5B~NsV-0r z91-Z3Nd)dIn&oQamUe^6)vmkpt=+Y?o-u<<+cdPq50T(mt8?V2j*@7G+<|u-6M4By z;s9R1h7v_>hTitgo`LqGEfwA$q0p`MGYH1!7vdZHmjthy@@EJd!(V{WY}zTD22&Q@ zZhyvQUmwGMI}JfqAy{SduD2~ac|nydTX|CCAyIT0aBK^yP|D~E4>=lDLc{Pkn&=e| zhzR23k=lnK)$d${x8VgaN<&b1M7T&+3B%Yqmx-2e$gWMd66`h*9%k=lV~2FHSc2gcXTyps?mDV0OGFO>FT zWLZmfu4e!O=8RFJ7{-I$V#Gd(30ooEb%auCFwG_6T9!F#<}^%?LuZ!LCMnCT9YTw8 zQb^P?S={ToAq-te9ULpDb7_@#XEwkWE*>Oy4HB`|Jl*E zNc$%WOJMrL4(yQ1z;)~vY4+%fD|P3)ODVo zEF~qA;}JfNbwYJ2s6A+YTgP;?>|D>T&gT~=AD5r5F3&$*J1{*4=XYngYt<4bW3lQw zxC682uH;5yMru+G@lzwahi4G)B03AbXy>>nnA^VvFD&!BgYVxVd(blM<#w%KCRCY5 zc6n?rgU0@-mQL`zED-|bv|VoN`j6w+Z~H^Ib&wd7m1gL!s%;Ru#;kg_$}4DwM*#|v zR(dvsQ1BebMa8!dNCp}v3@J#{=6YiAT4?49j@Wc-S(hU_fkx=LKY&-$X&Z36QxMmF zt*Z*xq=*bW5$&?2e^wkRH-*{hqy|`(o;{_{6I7R#=cbJ9Q`{uHdUiSvV2T+w6S9?G z1Ezete>T4Biy(O4bm2YlP7g)I;I6JCKv98S2FG-ab4d2C`vbPy-IkWUHR^X-mHeVq zdb)+mTSu$X&-Y`88g+b^=>VqZCNC6r8{R5{n$A6fnw(WE_}bhBy1yy9R&e?^%-#yR zM`d|CpI~*m-fy?a&|v?nzaUs{%TxKq2-&%seV#Aomlx*ZF{-3nOBs#_l2aMeG{uzM zHqDP-n&35~BFuYRM>AG5h`IH0e9%7QDxhXaUq1f>C5%B1gCG<{_nhL#4VX0PzM$QB zk*|CxDFP8(7{lF*b&}c4ygcs*lR?XMi0-Cbu%L_`R9@RgQa9;kZi^(yWEoxS{%(b6y} z{2Ojbhdmg=tK@t|vMppp*WZ6EY=?dsOyw=L~SX;Xc!K^ zeEzz4efjg{^N*L|@Bx@$DspxYJhG*X9 z4Nf5|k^A|Aa82tadw^scNPH~3hrV(}*oPH%877lSx2AB{tw2UqO&s@Fo-h&4o-X5r z2v_ho3w@hoq`vARp6cf8H;hwAn6_7U2jIhe5Qge|-c0Vr{4j5tZ=W=UAIMH1mZ>BM zcVu)?nxWbx(Hp!k@W%7Ae47hz#gh8aX`lp{M}uxJh*IRR&>L3VD{JuYoo`Gfs$90Ct}9gn z;^T3}MB0Ghsg@pSO4n|2!=?<;Tklgh-6_kHxI;s4DF5HNLJ6(!n5GN2SIkh3lKdbW|4=PMIfYs zvr_>RxOPv^vk3DWI4#{Ug8wLd->J4F+n@vGT<)hHW1LQduj&}Ti&9MkXBwyV)VX`1 zN4-PhJWEk9Wq%D=nLjtS;lG#2VIS$!wKKUSTfGBWNoDZU9d|6LcAabEz9`kASjD>7 zV&lG|@tEX!pg9{HnH=3!T0ojE$-@BOu*of5vDMh)8olprWa2F) zX&P{jP4QS1DUvQHpsvjj3+AOkZ^(gAw!v@Ej`wwCq9mOYltW=r_) zJ(6Wxvc06ebIVLXmd@j+qw|vT?tQvUw-|{jPl-?Agr-rlrrG}1R?h3s+38oGrXoyO zJ=#|km+N?uu=VUXiPMBpCUC@f64BWijZ);iBDWDmaibAjEh$JMs)*yS@F2SF7YAdmxb)G9mwHfjxKy6HWVsf8{^9%d;d3 zc)2$YQE~^1EQ#TZ(pt{XasCS|!l#|sPao)4 z1dfZ&j5+<{CaS{yK4ns<#!byGL=SMBpD_Cvfh;vN;q`wQl4qZ=1O73aBXM08?`YV zEhe*t;Q9tJY?4sttEa8{w>EJlV!s&$rT0tMZRB7%)#>x4w9~KXP0}uv$1b4}3uQD* zFWs+P+!kQx>5$#)EbX9?1NFT@sMC?8^IOc*D*4>^Vcf^$3K+6MmDxaGoXN&Be1nxosOTwF{R+2tfJ*yh{_-JBAj2EZ>KEFKw{K@UL zJjE#1%3C1Fvyh?NL$S>m0Za1RT)+Y`-V*;_2BGBh^?npzA~WJDY}NcEn`^p%$n_e* zpk=&=yO!7YN++=Z88$gaVg`8%Ia`D*2OH1bs zD1(QPOlQjBboh@!M9izmtoCWWe1ikNzd%N>??~qgT_HTEojf;54 z)m!Iwz2(vm4~&Nb)soh?L$gblni{><^WB>+GxCMfxZ-b%Kk(}Z^*|$^2Pk{MTi*G{ z)89XTI+YEwx;8Xs@zxMvEX@PDAbBL_vhMtmFgll-OH~^m4_?&i-R#q(M1(SvQF?^} zr_-XmeaMpdLz2Zrc-7iDmgsCjd?Y%*{QT3K@uXkZ$ZNAM-Wa`=QZYEhJa?r5d$LAU zQh%2-Xpo-CgY{J8+<1_X!&=p*$BE9@kVf*}@D5@%w+o}G)1%S9j!xzmr$3(_U7l`i z>?+vKJ8Y|x?6Bm1H!8l1MBp^~z2Yh0y9iFsFRp(3e_+5`EY=%PJTFn2-w>!in{qn3 zSMym$y_ht@uhqb7l|#HX)Y-|nJs6E~wr;;@6^|6x6n zPQx$^z4t4u3N5LC_Rbg_VB*3J?L^TOQg^M^rB#!to3{QtNz-*>+Qe?;=J-AP+0T#9 zRaSX|tx#5sBfMf&lpCzao~Pv@jHhdkmC8#Iztskp>f$5QDk&Q=WDF%i$tig+`BFmC zQAsfN6q8FzT>Ma&B)NlB3vNk31K4_C-i_&3!vstTR-w$WC|JFq3sjWY6bVeJ4rohY zVxYAa)c=J06t-JeeqJ$^wQUrdFmhj^g~Jz&Mu0pk;kKvmb}n{(pZ+Z2_wDl(=pbP- z0n!&F`$3L0&fG|yPR`WTJ?v9iT{a-Ffr}fb1K2*_nFYPJ@6EA_Fcv<9zwy&Ga;*?z zzxPH9ONf22j)5w{eT4qN>-Du>8w_^OI?zSKU5&GrcYCQ<*BEFv6Gg0O*hYfXoTHS- z8eTHA5{x&F1G$8~Ehl<%Iqx%PuW&dng;HI8U1yHtAI@Qa0mJa8N8k_sbz((YQgYxp zr!Wca&g^o30DV(UZ`&{oz2{fF1p{njPP1Lt6+5)sX~TdGI~7H$*mNvJmIP5w8Wj2O zqmm5GhY_6^hkShGd;Id%w|-<*N9DrFo~43W z>Xnsvd@6)POt}iY?YUwyuweN*iq# zV57LbIVntFxI+xO%Trt;o2Hpgk`n7k9P{xbCN*AP&)ILc(;d*$xHxCFZz9FosbqTCh; z3Rrc5AV*suJ&-hL0n4@46F<1p#w&B2_(899oltU~ukF3%=xZdG=!}SfNBk(ZVaTt*xAX6;WqH;z!e?vr?ARpWQCFtOkjTk_B`vbSYXqzC4yEfFMYU{$ou3>gpMh;_ zos}FrN-)V@qExGn>GV-HbV_zaB3m5-ME8?-;u8iqY=|-<_uG{(eyT-k{Iq8tb}{ zG*vnu!qiu6f)hoMI?xVkvR2~j_mr8E^a>x z0DSHN@II}bC7|t9L)VVlagDf3CC#_W@-CUmH_f_Pbu$b{p|X~V?&&B7Zq z>OJ;4zj? zpc(Y1)==hcGCO7xcP-N!il?P9gAt@Lxl4;<#^a;XKdWL&t3x3$eUal1$7@8#BeV?9 zp1*eYak>jNPSJ-V5qOyVr8S`Tx$<{x@S!UsYOF8HCGFU1HXn(RGIA;y$fH@Rv||~q z!fUF5BIv>j=sdc7RPG@jbP<-V)mv8qSDQqAeOh>bQUcGKl02JzSzz(sK@mZi4%y%F z>MhzQhX}zIX!KIp`>;H!im3gd_Vzv$=;y+y^EOx`dL>5j-RJmNQT#789Y$~aZ^~|Y zB%V&w{@7?njsHG99|~rq=rHK+!w$|;!HDD4Li>Zl{y7PsAe)}imtdgoeJgi$0VX>1 zZbq(A5tZ;3{G&7$N0uX&doB5`t?zwj3yF6pio3jZ0LyHMp5Vq_O3@I4Fs!`xMr*{; zZKu4Q9^WesE#~!d>9+K;2~H^rQ(bJ~x|~7uwbQ}6+NkZ|ymCjH*h!3vhdg&$`)gfQ zS9Be5nVWn4R^%f9{@_)!nTBsh8|faE9OfgDl|bLhj}Y2jhA}`$?Z4V6+;VDQv0ofu zF`s`}d^HlkR~Rom%@y@{Zm{VOGxI`m*IW{uPM8PW>M=`5G-@Q0_MkFxOw;B6?;H~n zJD82aGhE&Xt>hM|+=07$DIHe9dl~&sZX{i5dY5ikx(JrDX32K{>hcd|QcX|mKn%R^ zuNZnDsYIJQsq`)nBqSsd;s#GoOX8AMvmaVJL{;g3XOpHP0-tur_INz<=1*vXa@rCH zT@n6LX#JjIsZ>o|<=JDTpd&FF&w{OwsK=6QSt`-I%d^w}nn}8lU18g~N{n~NmpCY- zh@Hzfo6XI`t$M+##^G>k`5&}2$0PpX^AmPgn}}8TnJrcItD`*etP?nI9{y7*QcIeX z>RI}XO(oo^CA9paT)#Rzk@X*x*i!R%EBj%$ zN;|w!ayYckxU*09@R0uz5umWU2EG)5PkQrm>5&Z zkl1~WuUlwpE`gSorZ-TU5Uu4^BrNTU-Bn!U`oDK(SC(X1N&=VaB^&L0oHJ);ok4Y+`0$lcXsuIp~-vzQU8)a4taclrzosguE6k zj1O;|L(HDgWt*jmSc8#ZVu@Easy31WB?5N4m8J2JGZXLk(=r8G*{DGfPz~^;x$!-B z`#>?gbNJ~|9QMe)`|+%_9(38!b(2|?r2H>Xb7B7{Hygx~n{e^e$E>ol)K*-FzIUZK zGX%il(hx~?;N_q(VY6!woea}!-*W&jofXE53K3HOfIo)a0Pq>PyRS$A<}mE$G(-?& zj7V=;nye59)EZ#egfbU-nuG+=+9Enmh4mlXij9G37_kF_*BCFG#`Gi+_#*~q^EqC^ zn>Q$n%BA*|QAvh3=ip7zcS3*8p?te+z8%9Ho!_;KHz4>1s)6%|S4@DA#_7$q-B547DE|pZ2bhqfqACTdtN;CuWOQ&6cHHlTv2CO8uDpivI!g;OZk)&tXJ;opY zgo{ zIk9bU;ZV#-$*i)+_2DchCk@;r>+>*{xKc{D!~8j=I+#~9!W=GCtDic<9Pu3D5a2ud z_*n7A&-86m&~H4GxEn1)EejR$nwEv5GK3R#BN(>3!%1hGttyj~uv*ctP!uEGl)Kt) zZ!!s8XcL#=X+Z5|gv|^R->Xfc+u*B~2+G=Y^9b5R4(S^VkWYibahlz3nTTn*$M^fw zPVcQ=Ly*o9ci#;+<8*Fz&FH{sUMZh5rBQ!t*{uzskx}zALt<1S;97X~{My_do&5YT zl2>ye_s{MZ3-Gv4sF&IUh@R9C*19q(OWwmLI!0z)kqmu$8aAiG9SplR7cC7}QqkI9 zgg#eX<8QjtTD@-KZQv8k{iS?yvJsZ6L*J@$4R=4Isl#&iEdnx|A@BAOErk92*b3lp znI{}nwsgg5OH<=Hdue%6|J0zWHtV&WodWwV3!F1o$zuq8eF49J;{qVBP67Vb>afYX z3tlgeJ)Zsmjgd=h!!Qtp@A?%>53vKaeQye-wD&?E^cWOr6N~7Dw01DY|GkQ1r)go;f&!{zBJyuK=H{R zU3q5ObSWze>k8swhg3)vP>>5?@~`-yvbKNYX~xYN||9-%sST z=Z66WWl%wGgD?=h^NLYa#YRd>&q>=H z+As7}Rmd_+K>=fV;SeGIUK=n<+dWubduDcKpD(tuiBT=FRhsZlw&`x<&PkGG_+SDL zMTgp;n14>XA!P=OUhx%W=iplCu5Fbm9uuZsiWQL$OnD%S14`8}rCzfj)>6E!8eLPs zk#Cq-`0t=8#qU9ZJs92BoqK)LskskQGwMoYBO=`M`(ZO;4!0uy z`A%_xm~S{i2yZ`d++gHR7Z}IIXl_+sO%wKe)FnP~q?id`XY>`Bu%h+pjI!RPtCEMy z#p5fUVzf|xt)z4Xshm@{oSRyc+%g}QU?~)Di@0ZRCYN-6_|cVr?PgIeixRtaC!wZf zIVb=21D#Y&Z`3dlz3;CWa#&|2k_e71f&(DIi3+$;v~`oo#v*H5V`tNL$$w{@kNu=- zRiEOS@tc|VX7cWXt?W$8H99MEgimN|bB}a6n>qBc$j#ashqRQrS4NB1Ae44q*0ori z#TXl6TnI{%4bm-JAxSJ@iIfz|dA@1G2D2h`Zn!D!kp}p|P~e6?0@zwTU?LlDY9kAz zK4q4{ck~Tu2Or18aI3VWd$7`1pfr@G(M1a1e1+61uEDd@8yG8xT6%OoAWfwMSL;Fn z9CecxXtT+a+Dg(*3O@}rjN~lls#N*e%YasxR)gc3bp%EkoyBmz^WSZ?TvjheJJeAhz3(i?#2% zXP}779-y1;ieUGe8~c2x+`$Aqol8IpZKd++@X--^D@iN8ilb9?Tj{j$lek|8Ejeo_^07+KkYK`lseoNr9v;j*79)3#XIB@7T)_6y{fWhZb1~T;8^Kq{@;CZH*<s3W1)0Ms1Ad;y&wGdcJwH1oK?1*-U+{8RgGd!DL5OMLM+IH+#_M9i+^MCVwG10` zHrr9gr$EIzIT0utSNnT1CmWe!GiO74s|V2lkoLHPy1uaE!E|$;@PG!T^I`nKC_>jm>CigBHnVqgNc#vMMF#^s!?6LOmJtqrER;d}S8 zUZTllovfjmi}joMG_z-_{J1}(mLGd@JpLW{=_LNt?nQ|H5GkeoBSrxim(Zb2v;^Tp z2_j8r_o8VcSa9FY?rG4?jbBpW& zF5!P)>+ScOyPx};-PLY$yDP6e@%I~*RNHFXKoEV`S4>2R)?hn%uIrZIgf58eyG(6l&m+3Lgawx=3dm~53Z;WG2Unm$*eEYDSRzOT zX~E?R!KrWusmgH4ElvZ%_oB4G*Q(4ccquVOYq{BiL4jmrTR;%pp>^b2Ri%T1lanyW zvn_={*=B&*G|JGXELjwozFI=5ltU=UFd5Av$L%Xi8ru(PFnMV#k}>37rhyo+5xhk} zpL2s++0rRWXAUcLEIFJ6xY~+1JiV6sK%Dpl%HEiuM^74}Pw8uJuy!N|b{0snbZg)9d5!2tvXrE8`7pP@00!5k4dnPz z`8pFS%wDsGtmB3#KJE?YP)h9`8%;jZ@k3qnz`wcf*w-XZeEa#5hB;v+UvIB(lG)){ zX%~)rM*)d|Rs)gg=2(dydT^T^U$pp>30>Jk!8fKg;-C#;!1G0}?mT z4J(Tm^)yNq8nWw^x@ui-Od$zT6R5bO*~p;s!j)QJJ9Kv1PiS|P+F6&>e`aIQDzQf3 zhZfC^s@hZrBEIic>z60eT#bQFNY7)v9O-pBJ&R^2d%LATJB6PJVJS8!VPve=S{Vnn z2>)v|A-J6mjE^&A#ZD)q34JcOb?vgvdM?x-EJ?Y0zX~32f80IYJ$y@AgmzetLS9^S zjQ@o{KFx6i^Z6XE`UN`_YjE$g_`2P@UQe8wWVDyNGPRnPGFL3#uNTP5JjZ$&wweX= z9sT|StyleT+%y>e{r-xV+eGfhB^eqFDP4iV5L67PI;IJg>Mob~F5VJ5*iMg9^?&EF zo#fKA-IrFWZQ}U-dfx9R-_=Dui61jGYF>gagzBLNJZz(+Fk!1p*y%El zTKn-Yo`|$!x=u4j&m3o_4ki=D{%N>kODS-^Ts}KGSuQD}Acl|%fWjLAuBCZyy^-;n zX}IDv=u8UE0QY3#yp^*}+LUH#c*URw?mc?^@ZtP`;+T#^rX2RWf(bIIexvdC4Wm+u zt@ng*AV-r4uK!su+_jOR2~tQG_?uG-m9_+=;6mq09eL6I`_d6u{U(H;AY$S?Sor4_ z;;59_o9?V`)+Nv4s4!`kF|EhvjfV5M;5c_?_KM|zECcTR!_))WK)Xze4d2GEcczou zs_$RUQx%tTJJP9QIZsDt$cSn!QeKYEkvXhN>vw8jr8)efID)2RG_&~tSHf^r51+DhB#t&9tk}-Y`*lI*nTJCw-yOwaJcS$ER z0ny4uObcfB;hk`1$YUg2T{c^I|5lJ&q}GkdZ=Pm1B4UFq8=t)%AKd1my(_Le4u$Al z&O{ts^B~s_3|qtic6mYUUzRl}7#_JS%?g%eaEDqEFwqh|waJ`{oTP`>q-x6yN~}6Z zfKMzt#ON*=&;nQFi{Tk<8sTay&E|CJR8ozY1(`4I&h5)OH3iE1=bzJ>i@29MU-Q;#jsx0)s+y9s@Ao=4(j#zb~dWNw5*cX!7JVDu1>BYoLxQ|{}V*)q? zvgoThn@#@~)5V8MF1g0+Vr5#U)^)Bua=}OfaVl7v+c%V6I3<&fFf%woMwQX8r|b30NA1O8~GlAt1c8mYsfeHlMdqd0*Eh zHz#rjW_z&jE4iE7l*3~yti#_CWwLB4VHG$%JLr#*Yz%R`r=e7L$_~kgEKbkB#3)|P zbhC!mPV|BvE_%ZG!F59AbiH=Fy-HuumxJ3^{gYy*QKFaWuUxeNSU)gjZRxR?bwGW6 zHiqd)82Q2|jHeAc?Om94w--J8JK!6LwB!e4mAy-mxd<>e>zFNi7W3YgF3OI!0&ZxF zrpCxB$Vb_%3%CUtZc6*lcHIRw1UCz-~`;ByhFzqxs<-$d2LY(+U@B|+lftT28iPizr-OL-euIV=}r zd%IiKWdA(0ns53mr@@h*T3H^zki$a?{=$?p&J8;du~N*YPdH5c_M{O4%RyUL$gA!; z+Z2<1&)Ta8z7b8I#EueWYm_~?FL!CiOz{{9f{m~#@JzG_AQE75JDT-i znAU6y!`8x~w0oN}3o#}_BJB~Dn6kB?N`Oi#K`&#t)o4pCfwL@gwBZvZrQ{B&2I5Q- z0+farF+;2^Gryc`=yirw{y|G=a!Bh2o?b@YuDX;aQ0Ekk94MS|8$s>i7Euo_z@nk6 zd4j2d-A-eM%wSY7o9_4F4CNYL{88V_Et_h!0f`%UzJKLdK?nX1SBJ{Qbu@OuS1NM!lsVQ|kx?#&x2%aBZ z!Kxk@;%R^bIBKo*VmHL;VukiA8bdEJ813g_tr;8@uKK<9sDd#X9{BgK^r~#z@wr%O zW-+ARbM?e!!QuM=PUN+P*u&LH$dXj3kL)$NEJdT za_p^QNW8{&sH&>}&c-e36U2#}vNJogGrqoYwact*F*vCZCg>VkqQA;Aj~|`!SdwMD zEGM_qvV;+cLQ&h29kEdGn$$WM9+hzz#1LLYTsj(y*9+!~!61VHOh|Pt+BhYOP{0hU z^fxCDu|{}$ez+flu_4N)kU7-!iRBiCTi8w~6y*|2HMB{vQ&8WY4P~T5|pM`SW6L%Z>Nin20ew$q`6YE%MTjd+QR6TFoFc97K zD{d%2*+|SiZjdEIJ9J6Mzz}HaRI{Ne_DDJi9R2rFq?}NJ}CF2bm#kz86-e)Aeq zvV9tTcP!(S`+Di6%4bIO3{A^Ws>BD;`t$S@X`kYOZ{(@{=Joa``>R!{=cz= zHeQrzKTp=YqV8n;uab^MEZh10=h0Z}g)pQDki4@Ut7SLeB zBm(XLq?*E&_G7F3{649&~*e0 zqLgLMKKTmdYnDj<*14X*^lV0sd9sSuxuB?{8u_pzAzRTrmLy{`Pv@D0$-qNtSWgB4CXm$OSMWfAVFa&y-vORjEiu-XM#sG^CQj8Ai!^-hDjC1EqfB zlwuB0j5I|tb<0Es;==4IPXd&jxD)a)BJfXuQ;CGgXvk0bxwh zk(DMaGYjX<(Gx zP{Bff6~*QxP-f@h!CLb8IHPGgV=|brK12yQMEl88%$^n;qbg6cAriUm zJ*YHa&cMIemJX6^Ss2kl9x6m;zA8#ib<%etl5`ofr_cIn?msOc{AL2fV#r7-jI_iL zVn&6ZQn?urzGOf9%d<_?Pl~b_j^H7~bkAT_sWnV@8?ie-g(wg_0OwT7=v=G}v5b;Q^8qqZuF+;Y0Gp?5oTK+?w3&r6s?DWGG=matxV-^hFGn8r?I0e99%3*h5VA zE(nC%Kt_6eB>K160si*9Vi(vRS%8{re@kVsah;j_E&TP{^!?;l*Gu8&?Rw9EDK!c7)l4$GO{fTES|pvlG6R= zfhOv%*H0Nyqr@;OxRfSDhYUjUf*>Kk{9@P_6%WS3e4BbSmptY)B%X>MWkao?HY1>3 zh*p`kbyjH|A+UC|5@38c;CUk5bq7+LOvpR(y08@fTXDf4%aCqz z5YlXBujv$F3NjE+!hcgUc~CBR9O?gGaz5QC-YW)*+;I5t&;W6YV>jZ4sg~T{pKWqP zijR-u`ng@~k{~07gjlJmeta2_&7XrS_b?7%<82DZSD;Ir;E9`o0|sy&0NkC4y%=wB zWN!oiPw+-V+=`2RLW;tB*Mo7bHG0QKrK$H0udOJ>Xvxqo`h9X(+sbAO75P~!N3_jm zXEvQLdebadh#9qSdd`vs6vqKq-|;*SVE_^J*u?XgEOUJeY2~bK4t51Agd+$@;Ky&6 zu&bz^;We%<4Z-#kO+q+9rf-t$9fx6d#LbS-FTLud+@c}Ujn)Rt?~dARJ(YsE^#vNN^SqvuI88~D9! z#LaVJrZ-;tJJc=Q+NV)HR64_?9U|?Z=w$z29~aNSy)!0PgBhD&R!pGTrKQ9i<|O}=K^uSpKvE?nx)#u zFv4CKV3cATGkVLCkc+G_T5A*5W=dn%dFRVGsw_iS;PmDBtSD#~+Lxmqr&KR8LPjfa zZu{&rrhE&hO>ZSD$J9-(SfrZ$xKS}Ml~hdEKb)fdSrVG}g5vM2O~LMiI0tjLcxJO= z3KxM)rz`!4!&R!>SD3$4Bg&LxNU{=qODI9hCIHvc9X|CSsX0IUWdz@?7!3;w1MA_M zA#Sj-)OZ6?Zsj9?A9-LjViD59U8v_Jkm8ocxoSa;8}wt8(NaJ^G=bsPddxH!)TKo| zx0#!Z!kuH!)9`t`kG~~dj|ms}Q?T0z;qO=rS!oCIC3zf|J;l=E=x&{<1asvp2^aIf zVYedQxsJLVJv`XQ2^r@cl?%2vKtjB>YYqIvn8eXPOGF+49!!$+S0FmPU?VGwykT?)IKT=AQE;*df)clTA3T4^D4#) z=1K>Qr`rgy#eVUN@B{)pj(g2OFW6KqjPOsEc?z$a}liJHjr*I3s zYqxZ`qDvSfYA z)Rn>pEM7|B$$u z6yQq}t)*2pC)G1XZN(uzalH88@cS86(X*5V(Q2n~#<=1ORXi(K=xWUIa&x2eT;8q&Jw4(U~9#7U?oTOOqD32 z#jxX4+A{V{6kqt%qNo5nEXbvDTV|lOy6V=hdq$hE&!(#=(O2b$NxM4@<#hRVtiGJj zd8)tdX)BMq`=RMB&2D%ImjHHBMEm%2GR`Zcw4 z+->71x#{!}V`@uX>_xb3u}Py>0i^#1)l#ue#4rrq`xV(zq@&#diRBj7ThXcVC2ku? z;}EBu?(Z?}wd#Q2Rx-tY&(C_+dwPz2ECLM35e%w5Mo$+^k42I2V{{1{3esVX)T@pOIRp0;_3=&!jJed@LqglM&d;nu$$+MP z*@ccP7tAEPo8hX@U<|TM6yH)?CF{~g$PL{xQ$JGaOu21|*5K;n4vj{7TeEM(6Y zos~^%+dvS8@BS5YFsuZ&)t&-L;}8;Baw`cvxkhZHQM^Q2sr!*&jQ)FPSKl&(rn*R) z*?IKN&g|&hO?9Xik{75eo*>*~m6u0USBr(hKUOG=OG)-PzJGX(W7q(TlCmgDxuHNt z%XpdwOkpA_)NBPimMUBE{DSR6@*1vR1D1NK^Dcm{_WiO_SaF4HHMQF3T<8N?Jt2yo z(7?Ti!Ubqya07P-E?*Et2FKEZ)d;D`GE^vyU$M|=f>ufF4D@Z{XWZt7HPnH4APp%2 zly1TrL+lKLWCzjF=`>>2b(D$RW!)*AGrfBPZ38~0Qh*WiMf)v2hrcUf_;ZdU$(`x* zq6vJbkQ)RpQ?OJ4o{n~Vq=dGa9^sAW7Byt5EXbWGG`g#@kGkw)NJeI5Vnit+2;t-< zQN;pUd{@d$sDe9Zz-|@#I%-P~ri2%isAiHTN?ZmvEOby$bypPqpgu8JR5^wA=4EGr zYvQ^>w4k_i_=wsY9U3;q(KlTedfngspR<;}oayjhwSG_MQsR5D$1cNNDVfl(j zxZc9j7rd)q&m-@g)3O|gJUwi^r46IGVh%xgMP}H-7k^)`=hU9O+n*7h?DLQ-1;f{H zy`{AToiOTioehniMjLXrDLZyLF`93Jx}r=mU>j;+A0E1?SJ%u_{B8_itjEP~4^r0} z%^5lG$libL8#$)r;-r+usR;Uhom6iWqKz`X+Kpv3&0-woh63ht=v9Aq5-*YtluZ)U zIw`HkTFlgFc5|J{EFKgq$pV{Kw_W^D+~+>S#Er3EF8!9 zY*1A7zjIE4Xc4M}H@|o9^E=<(`Q8^!4M<+K2wU`aoG{!JMZouD0?N^`F6H*&QA(&m zH0?MHqpLY6cuZ+sih!;0NTPxlp+oY@Zp7;qyHU|wDfCRuZUKDO`?U|~RX|alt7&Hq z^{mc>rg_2$3lzvitl_>_ZjWF(n8pN&5VYw!4CvxKQ4q#*?IE+kFEhPU$wrZx4Balk z4N%V&G!p_XxkZp!_-ULe)Eo{c(BrY`jLl1b7yZqg?K9{axJ>0hG;UAx4_B8b!-r{+ z>S?fl)OZdis-4A?F1!Y~X(_k4vnmkPBzAhC2|U|~fl3W-q*G%*eZ z!Pnyg3wXQdJD(RzZrMcFQ)cH08sc+$kj#w{x(uC=O;NeE&1z#URDiWleV<~bK~$Ry zp+F(uF=d>>7M~P@J&2yXCpqD6qNchm4V18UU4*O4Cl$2`lzoAp#te@%2(Y9h`73H> zv=tcM+wraeov)s;5IZ59{?MB?C&_=5hyA(Bt+FLODS|ypC@SJTKK}9A#Cc$I8*ivQKfV9W2w@l_dk}Z8&~{T%1VUd&d7~5Ww{jR zICj#XlS5YsE3-4?9;;I6GyFDnCcKPOlbsRHgVdQh=SWsod9f^elat2n>htE^_f*y% zm3Z^U=v>`3R`9Rw@{3dAUz(xNL}b}CvNBb*bkQY!i&9fnMn|_ZY%Uh`JE%b>r?jzF zYEQ6gX;m0fj%=f~(s$J2owNAIoV4+TgP@fvOY-)SMB_~bbg3xIN4mq-o$3rR@h(}< z_(Iy10%X(py7BBXfg4e&gcy?0*?a=C(})#;G;eguG0=2I>j~jc)CIrk54x$AI1%K%Bc>y7 zsJ0Sn50aGLt>>o95PEwY_fpnzzlC%8>3L`Hi>!@P-XKsI>T4wE*zFb+qNr1ND|6A5 zp1i6gssL^*B}m6~mJp6VeD|rrQeOa$3y<}`;!NNv(M?$H`jLI=gyR2={4)#6cxS&GQ8< znvFI6MdR$EGrnFA#Br4UG#JPS0tB<`I(Nw+VP}B4I~mE0UK79(8>Im}y525F z$4JFdhjSQ5Xu`6p$)#4+e1U)jLGg|>UlvD9e0dUzN-1g8Xsx2NzbH9(b6#Tap`tQJa@jXNpTH%MAbLV>$(+d z=P3`fpkDXg0hJ4i@{HIF@e*F>yO|1z(g<_a{SY zrH(?{7X3ajJrYCrI6Oq!q^aa;nC#7Qt2An}+a$beow$>sN$d|MhP zIgkGWtyXPM+ei@po?kJFkQ~~^TaLb*;AqtYszahQ>Wl6JiL8x1aaP#7?(RBiX#3wg zYscUcFGYn&QQ~=K=9#x$&p)q=dC`+RM^o?^;RuUNtx)gxdIs$vAT(N_HbTkZ3Cv0v zTlx!wZTQv$`e?MJmcY%$Ab|hp+`{O;5v(o1DiG3Go@K9r%!9wf9r`&Bo`)~odc2FxbQ)WcMmKQ7!_$+iIQphc6c|ikC?GHlwN^UPSSW4X zfF3~js6%)hy*WK)0Wh>Nqhwi=Eu-Ocf>21&40IPyB21C-RaCh)HO+?Xy}S=aj=9pS zC=|ZABKZ92@GkzlyYzPSuEqRt4WhH$o!o=; z=J($Jye+@?{l^`-gX=gI;Y@su3c7jSJ$|smHbhVF;(W8+)M^+hm38uJ{8FN^5gqMZ zNXjR2`KWSTyxZUxx5PtqVZxTnWf)T&-lVyW=h0H>3$l&KYtis}kQJKya=Q2CEaU0; z{MVryPip1{zX4Akj-4k|%4or}636HD*~(Pf=5J|SD>!`27F>^+Q+KRG*LO!rf`^N& zt`52EsLZuSOTpplmIJ#PKR|&k_-33%HycTrCZdz1vcNa&9ec?rCogb+42z8p{Q} ze`o7ps8Kf>SI5%|WpigdRCz&=?%EgQ2J;5swlWx+k1)5kFnf&AV$fKHN~dhSB%p@x zF4JFXnJ?fm$nH=TwbY!fCpMx+x0kJy7rpgbwU*U@64_*aokiTQY+gtbIzH|&R)N(@(NPq zl4*>L)q>l^?kY6P*XLJ3$qFXQ{R+rogRYG(Q`vB;t z(bl>IW*(vtK6<}P2nnq@@1v{wUJ9O6%;wKS+<0ej&V+LTUG#vMqTx|^qt!+jhqA?c zBP=?*^$1mOy6jD-IK429g|e8`2DM{KyR02nE37V~*-x0Ku-~^vpG4EZ9sKd_ zQF4QcBTme&kfMAbL*vA_BwH_4+p4zUg^#t7N6a`!V;1z-$K|X{NgZmfwCNDuzj^hh zd%U&yry^e8+cC z=Tl@^H<_V-o_~7_^Ep>i=_Qj}wlgEbBOE$#Kf_WbHrHw!!g2*x*LXKVcfzr#>@M;= zM`C-yp)Mw{BY*}_8k|IlGE-6bS=D7alE$g0Yc%6%_wyZ*RF~Uw28%Y|iOU%)&6fJI zbo=W=t^`NgVn1@h^AWyPVAuxVflph>)a@H5_wE8-O%Pq)11gP)cb_KzUj=xw2t#zS zIgUQOJ;Di&pB~}<$NcoO(*#fMU^mu1wJXF6Kf1HE#tP=YArwWWv^_ec2gwkl<+10E zN2I5x{28d#>It+yg`tM-U{cq+b*ND)mJW;7kK61=dlL*O`{bIKY_zZ=r^Rxw3`VEf&CYbbQ~t}& z^rQ?^rwV>4y55=OmK4<;<~%#a{SWO{U2obj6n*DcT%jUE)l^K{!&abOXu=wa29~7j zs!~-Zaoeb1XR*VCD*pRy2TDfMb!h9J8Xkz_`*H5Q=QwE}C3i`M;wj+?4hdK!nXoxY zTa^kYqK=~RwU{Ra?ZHh(LlH9y^#(jtKwdjMOA?j}5?SLw8gb~rrQT5&qKrzv^?Ewz z-zUF3z-f%5aq&^YxVTNp+VHBS|575dlmh1W$9F6aNgcuY9Ts49K`@9Z7kDx`0txd8 zs6A*lT9rkkP?0LPw4!wynLx%?h6jK){WDI|Kk`?G2MQI6mVJE^E5V%qU}^M1ypuSJ z2=(NY80937zH%)fj0g|wXqd8D%vGca3p~c0aAhGhu4J`&u-+`4ZlwDsXL?&CLL(nY zd;|4Ii%w@b?UnBudv3kRedvtclOh5H`>Q;<0&Qj-PU2}S>hH=5I-UDp`enr|*;UrW zjMfoOgdyu#Q3Z@SXb(e9Xr`xmi3pt`=p4#B%kDa+d)@N}ZeY8XeyS>rsURtq@n-~G z$*GEXN?0cJ{>NtXYS|o>v8uy^VJHrCM%9!tF{*+=U{pQ!Y%{Ro%(p#odf*NMu)jHe z-~)PiSn_MJK%Y=^U;hv|mhA>k&#^7&UI40b63YJ8P-|4JD(LxI17bo?GdHkn{SAQLxgeLarpGJEMc za;lDMt6M6()hWJ>^m3m!@x6)fO?)qkZZUQk3-t!dRl9S3s?a%>GyL9P-cmouI?=EopQJkPF zsPA5fR`urZ*WSLTDT!b_QZg3d1JfM8FmHs=8g}u7{h8p3nOqDoDaWg8{x$QQG1OpN38)V40(f!_+{I@1n*^&7h6Qd5B>&Qa{zbe4OLD2H z;oseZTD`?!agVvZtr-6SU5zmg!Y~X)_nab|i&Vi5NGx4gSrLjtVyT5THg=2D+v5TY zc=LPy{`&*B>`EL^IVSWCa!)hL&N;!y)CmSE#zSb1rx5(w!zR%%P+40L>@4P7fne$w z6>5J5(@cs2mzC*^nkx9bRX@`to`r6hMld}_y;qRmb_qLg^WC>B$WajLANs_SN%W8M zbnQEBjV`S(m5)Jd!!Qhm@BS4!?9hhMuyebuqwQd@mBC=A!EkM*5jeK7<%BZ!-=~Bf zdx;SUJ@e`5Z60GA!J=_G;UaS)!{2;~nD6hFYo+Q67G?=go`Z)sv^`qvVWY=++sVA5 z@SvcQg6EKcTZE=K2PVWzqI1ijy#+@GeMTVPgw$!K;BO&1)S~r-!^FM5><-6|!?>y; zhoWhQL1(Zu9(F2>76#&0ekel@B^eYWiz{JjrM&JiM=jzWqYD>IU;AK6hn^=($)hA_ z&LHwG_=e8vM}fS$s-`a1+g>La{rve~s;3^yNm9VgXtJIQS!{H1{Ha};51Y`95oU7< z4Mlv{++Ih?^Ht7~$7AVEnAYl7{Q<33TXWhv5PtWs*bvXyCS0bk4I#;tv}LAA&$PV7 zG#Fcerdak!GAUE|?`I|1hHx=t&e34(m9&>{ceSg|Z8}RKBH=vX#1)d$P`=1zO2o|v z@7l83b#Oxu?wL#&Jd$WZBC>!^py<08=@w187S!fW$PWi<-p zNg}t@U<^nQ&cG#q&`psNwJieB<@TI1@|4A6!r`WCNN)>(8UkaXq!>NBt7?QQzDE1U zy+t+X1eCvCPy(0YMFrQ@x*FhMTpaI^)O~!pH@6_}jxi$seRz5OZp(^*pE8e5Ss*j6 zOiVeMmXUMXzX}n)xN18n5+CE^;}C4c^MonBFV1&cS9U3<)LSJ?9ie6y6Z(0mQu^pd zHA?^LRLF@&HH*n)!(qNpFcjzvOF^ArDxn&#l042ftnkU)i>LGaNZX zMFgsk5n<6zs@B`*o}rx@@t^T1n{=9DxesS5=Y8SVeQ~GV=L`3?qxwv@b#?3cHd3m3 z8%nL^fN{dpnVkc&wKO6sK`GTFPUX_gV^z6ZyP=F}Z3Xvys(S{kV1O3l>rE1#{J z&1U&v**xyC!*0>q6mZl~5UrEb|$Tw9*BT_r5`oEZ0F#KEaJ_G)l~ zCxk(5WXn;N`3)%AgR^oro_}_f_0G`qs>)05&z5%R$hZG)*j1dJ;d+FAHI7)p)@qUH z!!=a9_kXSEs`pnPly|Eut4V9W`kRw*`?m5!OSkgFIu5Acs5M{f!5fmAQBm zF;|n_yGWABG*d~`>2w}@R_CJGgx+^}`aXb%UVi|Cul=9!x&Q6q0-DXPS?@C;Ne}^v zs06{ocA-zS)P=I#H<%FyJYz7XtQ{rc6iKycUBdl8efU8pgcBAL%d#GOTh*_;qHG$K zzLrebZjkm{*O~3=tQK{4TRO89sb-5HcIv!J&5P3&YpY86EGKHaN%4j(V%sW$dwID5 z;d+)e8jUbs*2Y{lV_AjQtXzwU&PGY`mDiG7&2^rKYwKU_Tt>U#U5!fX{%1BQu9>_(mjKjERY_O$YEpBr`jn2#_V*H?iF*r3tV=P#c9@zswnehyzg`{~Jx zC%8Qd4o(k_f=a8bRBk%*BOdxiTx}<$RF%~|30@)&9|V^sP1Z?Cy3Gb91te~_6pXro z9xi*Q?X$k~V4p`T!>tR=XgTvCm-yF{&n`}&bo-|%R=Zu89z6K-vsdBwPhS1;+W`?! z9j)SNFj`UrsX5;#w_YC()+!W}k3ZqbuV6f{hl7dR@hBEsMjUSPi680!|9S$p5A*|c z6$6!(p7bLfoDMj{F(TLpD)neE`wqg|jp>DZG??dTNd5Ni$B(@z(eQ*5?L-k_H|!2> zv}^XNay}UTH3(^o%Pv>f$?!xMy#y!Py0j2u1u_0+px^Jeh`|aGl!bQUby+w)4fe-r zLE{O_?4Sb9V7pyi6=c{SO)*X<95+zG1hQDbs7lp7nSZjnat_q?c(hzZzXJ9+3~2be z9pFNiv#e6azjPdoR8^@(IMa(zzlE^}*Nfr49Y6L29j>pe`)e1o*8E&XdHrys%hg8B zlBwMgmHt}|#r166HSc!XtD`jm*-7_}>tC0%*Eh0aoh3U**vXyUT-siH9XGd#=*RK0 zlYe1V!PDYP{EgJLbmSJvEpZ}NK z&A)$yzIBMnQzhAQ9JYIPJ94L5?_wPCH)s+Y0Sz65KOkz_J<8*$* z#}nel*1SjS>c2xjyVZZhCMRC+T*#6c(1W(kCJXmX?aG=M^Wb2UBl`>yIGM_<-hA9| zxqb_P4sPGNC~h4MDB;eh!K25)K9;-TT)RJt0AZ1Js&Y0Ydq&a$Q0A9kemOV{nkLxQ z;O~F``@yxs(XHVVx%tpt@92_F*ACw@@Z^zShZk2DSBJNO8J8lppKp<(>zGh@OuC<+ zAMp0z8Vj=@cMxbW_~<&FH2rpU<;((7(o^B zR6-Yjb0eAjYt6&0*4BlW$@tZufP8O=^lJ7jOAV@*avGA&|YEywA$M{e<^t$7`H8r z4)^x~m>&ERzl`4`p-LdQ`wc#+ivBIM*D27?tAICpc z<_(cn>mhUH;_2w%^sjc2k4>?V)XBC1gKvU^CuNzXvB0u};6ZTEj%bZuHn4IkGJxP+3JpsrTN6VG3u*|qA7uRy=2tmTE z<;$}rr-iVgB&=`6Nx(gpac!EHnco`-R1E?ybzm2TQ*Zrp|D>$jKHwNnWF(AenJxz5 znr|nHLW@7Q>(Vn|k01OcQ?zUJ%4jcNe(Pf&8H=}r&29VoRKJzbDOYc>;gH{@8L+Fv z+MAkV2Y!aY$EskuHVJY=-yKl|mP;>!^FM3nxOXoZYv`ndZxdgAY<=}fo*bUg%(a@i zO@lpaS`gF&qS1k`KiFcZ1mq67-2`-(M&j11sSeJ4*Vm)l{^l^C;ip{PxwF)4@Qtq^ z=s)r3!OlozAI@n#5hGNIJAtW0cwP9wvCqMv%h7VFN5Q9_!uGwwHNJTO3DEKQ@uV_! zDS&`wZ-#FG`)-BH%YN5`bz!;t;E-aC>z)U9g7^FG_;H>vHXj{c1^@Z){}Hez(Kfy| z(p#mXTlU8gBLopf?7MzT2oZv9^0ofAJJ`7X=?>_(TaJcOy@jr;>--<0lMNnTZD5Po z)P>ss=ZC@L;O;gy{u($UWJ%iQQQ({TxH4qj#?%R<(8uuU;)gnqbai#OMbCR8%xb!5ncnSQ33LnDAzor&%?DZ5jjWORz=Y9evgmr6*16j) z$_D4lec6^i0;(~2@XIP;znomdza2Tl<>V{bWg)!Njhm%n=d5J<&Xsq%7}HITRh_wi zRavbMcXs&n(_p=^?B}h6gIgcn>EQhJ!PZVUWRm+u`&c=UVDHhzt*3s1;F2?3T%X<@ zvVD!V4-=FR9i2q}dXd=XcQ-rUX!v|yW~bfrsfpI?5gynb({36(-&HW;PJ1^T{8dQ>mPNnEK2@~T+9jIg)XxIL%j&-_Q&Y#FiB4W_I)wIY8AWwv)8-3C?bc!>uZq&(Ls7 z)IorJ<~q=;29-iHBIf?U7Vi(_2Tq(cMx(jW$lG!o2xB;dm^1nJLfq)*cJc! zq-8<}Q+;>%zs>Qkm^0fMHZAY0soY3rS~*23tcOWqLUVA`V6EMzbgn99OW%uUPo94N z35~p0Z`FOnkUT+|vDZ^pWKs#ttu~ zvUG6%;Hd4pIzby`_b1qQ42?QxGBelGbUDd`jyWh^2}5i?91hPh_y(?|nM^nRo$YVR# z%7vb%a^EDWRb^=a*g$*F4LqtA4QAr^16JC|RESU$QioRKIzv^KgnqbER~92wx`{D> zHBs}%EE)uLrtsw37&bX?3LVcPbWa+WR+xE=ZRaAefMtRJ3>91jHbOy0*Wdw4i+uO3P z%B(B+>!i|PdfT!xv%VnLhzpmyvPOK-xViCdPV# zs*=l@UtSX#las%hyuu}ibcNlGGv&X^)cmcc(ZvmDhJ^|lg zP#Utly@SJOE}OZ!lmVe@Dy4$Ry+|?dY$JjdVqAYCWBS`nk6n8!-{%^RfPOH-edqA3 z!OBanC5CM0+NrD=*O)z{#x{sofI#HK>r0J22C)#Dg=|<(dLYNLDKb85=Vr4$f#JkZ z{=;(lXr&6u*~FNn8GO+!gh!l()CueWiSI^%6s3ulgP7r^PP4|h@f9Vcl?_FD+XuZN zfLUy*r%7pVeLpWtP!mfHnyR#lYu6Mi&B9n=S0iZRB(1W>)60L6iWUu4r>k}m{+@S3 zilWREWP4h%m#>@DDlAhpHOo3!@(5k~Z)lMPM9N@S3{j%=VyUo=F|Crf;-Jm>Te(|W zaVhq;+cyH}mOC*batkxlKKJ~Bxsm#giM)TKN>ym9Lj#>ymL>)uwP>u?5dBbJVjDPn zU$CWCv%ZA&R*5BN>-17%swsI%qUDjN6?h%g#SX} zTMQ|W3~F;jOXRoK-!}j)Xi=fY-^D<@*sLiWMWZuaLcg&6P%`Da*@9$8DSQpZJ&dPm z475Oi4_h)QiMU8nu9`YPw+rrrks0@Cg4qkbh%}uQd;w%2lNlf&CU&N*Ejd|=J%s@j zD>!ZDQ-x-7g<&^YiMhB&ZbgoNU<`tzDvav!SY^gD=d5KKdSI()&l*;e$`Ofxy&6`CN>EjK14Lv2^@RqS(a&2(gS11&S>isv?l$>d4iTU6P0KIq) zrtno5I-<>j|e5aVW&K|8#W$~A0nstQYTeU)&G-yH^0FvGe+&v#W}%ifB_0B8|a_)3ZK;B|S( zrCMn>Nu!9Q`)1u-cv@^c1;E)Dqu88lquFpV8*~gFN^jcPX{g3vlIjX%O{{EJw5e)< zUt(3j#;4hA5zgsy@i1G2-b_&F#Uk^~HVg(-EC*(RpBcN>Awk|V@EXB}$wDh?mw|)| zC?}+j!-QpOVg-4~Nuv%9RYc*Up*i#&dl_=^G~h(dVFnG<71Ux1jR1Zx9E{bp0_uPZ z^b$fUprqJ;SaJDus!)+~%0G81Q37arI7w`4(-~O!72vSUSH?+`T#`;xmWvQ@cqUe- z0(;=bP1qI?_N2NiAecpXj77N1CM{_;8h>?Sq*m^DdP1jEqf*fnb3aT}WDzCuqFEK^+xHeTL^)J6$Ah&fixJ`=z?!0IW1i&$8fgBD>MY{E+G!@kOmPh(8M2`7C-NQ?!HAeY z01%cLY%Deij9WDP?giCa=d`c9M6hxtwws@5HI<92BWSsp9cNNH;d!NrKw%p~X6Pc5 zIeH@O3v30XH5Vg}buO?5$|wDguvpiX!QL|qPSBM2rhaYYBuG6LYSIEUK#HIcKpOqM zE-p2s1R+TQ0gy28;DIj9^%q7=s1mX6Aul9s!gT*lnm5 zTmj_NE*MyAks_)(=O?gcQAUbuz(45cEQf}LPDL>DP{VjiMU|^>SC@059cl@fGI&6A zK70fuW~dN|e^_B-U?_NV1QB+M2pA*-e{xjV zbgFxiM)byUnw=p&0+c2gs%jbu$PJ@o>|tBc3MH4>Ms9K|A)efsib&MoGw4~lY1gS^ z!_ybOefS#wy-@18|LL;BJc?M3Rc*dJ59azcW@R~mI8-qTx($LO#54FVnz}? zq9kRf5uMoPD=Ad<1Yl*^&CEp?CPYvy8Z3_zpzW$f?-l1GGl^sqAID7J7=~&H>q@b4xoJf}_}@q)GTj?f ztRay*BCt9yHGRU{_90N5MAlQI=_wKfhhmWc8Z!a$j<65II>x&g*!d5pDVT+l;K)*4 z-IS>ZCRe&(GL)uXY%C+}H=5vLmV%20`vPrE!AJOa07=jzK?{T2c2HKxjZoJLZx6p= zB=s0R*~iedSuj+vZDmdDi%6qOhY;+Mn$ke6X!Sh$GvhHGomN;kVK5PJWSqcRP2tlF zVq+L^z9(OT*Q8h8k~ozy-*|A`S&@!mV$yf-6pd;GU&9>*os8w{%mFNB8a{-1 z21Dg57|y84lwP)h34&>7^8_odn68NcX$&KgX)4QrJj_~;?^S_!F(jIzBcP72U?6Hv z&l?0f1%vU4Y4ikUk%yCEDG@CZ8Ulhk3MV@G#FHP2cXkRm3hNY0aNwqiqQ{vr_<)5a zyaaI0V8uWLj0%>%fZKvcD&Zt03;?fP!$aG;wKM+SNtOnjgVD$dB?zEX$qK?0SdaAq zz)c~hY#tF`L$npP)mI~k#(%70TvTX3uAL*?;GD|IT1z4zh*ZvUOt&)iF&D3GkWS4n zTJY6C7PwkEqOiROb}CcmN-*V&Q0P(@DU=LY%TdcEa-G67LSf`O*GVE76a<%`H_?QH z%-Xjd=s-bt5e{dGQzw8C;A~m2dJvgI!YPt{@3zc03rs2TCrq%?*}{ZQ9KCe(b}$^* zZ_=h6J*2S?JNsz6YRRcdddKNi77Yz!H&r;-)3aq@SN7+{O;t za4z;@+>YMR^=bZajvQK{rZlaSWlInV; zl_u00+LVmhHNn7Ql+Fk=nOI?gNiqiIgBlC>(_|hj2&{rhmYbG6 zetoi!3z;aDZ5h`(E8#;L2$K_Yh~X&8?P69-z(Z|PahdjlO~YE4a#Rkc27Ut&jwuGo z_CQri0FXH=rd91x*~&;fRRnC9G`=wn^WqnOdkm?8(hS!J0D32QWrGftO_F zQFc<2&qTCgho}ZHi38FyQ$?FMWix|$D;g|+Ts5#yDWtV-CQ(z*px=!|Ds$5~eg#Pa zf9w{-(xz`4=K2vz3L6S84rm}&CFyDIo!$Sud8dJ=r;>MGATUHAsH%$CAI6+GvMox| z*WY3Zg9nlV#)!00p^6ZQb(gMz010U}tnk5$uNmG04R<%?YCm5wYzrp>l^N33*7Sq$ zQD}4eC|^Mk;?J7(eYz@i;%pu~`$s-&>#_TPbPK!8Jgc_l;|21N6nM#&h;e}t3{pj;xG21|_TXZXFk zh6(|R$W=2lGkEuOQV=^bY?vT$tG_t=@(kC{?|y~r7t!yU`giy5eu?Xstikp7xazO& zHuabH&hFv*#r^xZsxK9;zyInUOe<)>c+4EZ0og{9_0~fiFKrC_yLgE?1$nhb8y@>y zwnlHXpG+7a0cfUqqX5ZE=ycrB(Q>!NT{nEyo$;H16%)0ov!T4Iga!ajIO;yUyQ4|u zH@lh~^I6MpRLKi+SQx*h2yZ!=;1ZKV*8qb;teRl`=!tt+4B$jUBE=jStIE{I7!v?I z1%77x^liTkSwNvDKH{_NL+3}9gc9fhh{NbK=Bx{kfL#IRyb3FxErnQ!x2d!+x?yxo zgeS=)D&W2L7vNe0fA_X+J9r)G*$9+5;lGA#hdGgZ)3(kL zJEZ+LAj58uGJ}JY>Dp##v09O&{tK?YZaz%`+1oVqy}KRR;#)f+GWz2_y&{i%E)2-U zIi^+_{4iO9P=-0Nxy(a1Mz|ZQj4pVvE?3Dn$J!Xz%TG(mN?}OFplLVlut!(t+tJTw z{V2X5BI<9kBTQ%rqT8rxCAO_q}`uL(L7lcZ=8AIA+7ey4}Fs@CvW6-Dd%)ti_wEm1=8az2zKM1q_^{xIFE4v@2$4O|%A{QLa(q8pb@^Q%&}TveyiTwBgZuhz&xW+7^U$omZscO|CVLZZy2aqZkwoDNvY*cK> zqXGn*yg(9?ctMad-7UIQ&*0`&V9(Jr(s2KiCXum4LaNB^`Ms@q5^Uak&GkqGxZ;+PanwG#qW0^d=FWC z-64JWBR|EQ$Q32aGzf?nCy$)nuOx9Jp9IXKk)VV{%b16*WN~y(l7PA}_Q2>`@qPaE z{^Q-RA5qkj1r)|yN!G3)K0{!OR8pU;nOwmP6GX%*_b4dx=@5AAPA76hDiRk4KhPwI zA1QY}#9kWGNGg?J57;RLfzdD2V+rm2*&*=Q{l0pG=64S+C#WvE&xUOEPSOP!L3&*A z-GQdj(^!9TT)ExxsfDk3+gn3vt zodYX5l_`(NB94Q%%9DUji(1CCTibW&CGon`Q>yver%cQ$Xzj5TO zJz~sW%O*jkV{XmSReFwyuBXm=e&t-)vmS9?fzFgb)L(|5Msd$%$3(Aq3kpa1^XTe|;N{Vr&BLW$9?g$9U zgBzqe!5nMUJ2Q%frYRmd9G@=TG?2fcpv>1wXp@(#6Q>ogGd&ey2*}uHAiw3@eFS*j zY2yM`Oy%M~7#x)U{b#+xR?z&R2;BZQv$t4VaaLg+W(Zn~&eL(%hoJ^gch=^+>Xax6 zdWp2K^R(D)xAtkNv55W0ie3DG?uD{pgX` z&?0&?QSBJuiegECd8p`HSJj5l01t%w_KYXw$K!GCtp*mBT2>|TC>YQ4%WW#-dm2#= zt(tNU9BLJ!c&U%7dV@^4t9>PiTjU@x=6W6#;#l83VU=fFp++*zw{Tnn`1M*%3Z7{4 zE(O2xmJ63{OKXxHh;Zk_pRdSEVP>7BBzSImxTx}m~@TVp$g(Yi_WxY1mj53~z~|-2*uneV<`j6IhQmA8)|$TEiMGKi-)^1^v2wWT zCapBzo-3Ks>Pw#dKBoPm$LZUS=(l;L?mn&tR@GE>xSn(I(&&R?Nj&1Z%Mk;|sHs$r zao*;iLS@Z18r8lZU4u^d+c6QTkeW-&e`ObtOBb5W?Je`B^EZ`P?{3>T4F8^|(1K*P zySUkIz;@c?AW&>3HfmdjB)842d4PM2d$oI#qh!aC?Ii8oB8n-J z`jH|jDrXmIkP;ufh;p!n3McQ2m_ge1r zr_15j(NL*cgb^T(N^(yH@k0e{o=Nb@eJBH*2?Y@>;~wBbJ{+S=ztu`;3?ijS`~%X6 zt$7c5yB>MvO$SOk-g5TzOoTXF>Vf%2y$t}~ftvKT%o8y4t? zeNu(d2I_)xMbYto4gY@mV$9hVS>h?7t-bd=ln|ko7KWD)k z-5uqm@O(k*>oMiw9hE>jDN9dxO4aP$EzL9&qR`ZAj={JEJDYjvLdi2v+64x^Uaziu zqsP%|awF8!QNidAP=uTtNR6pnPR(wRsL6G!ZqZ0mE(upoLh#zN$HiP}bV@mmiAslL z`IrymDe2_7u;mI;A!*{~+>~>=`nibcQe2!AvOU7|4l9bD?-3csfB=zzUU*C}iF*o$ zj=4y!V$$(J$S^62hX%b_6n#6MIw$0gg?@c|d|1#dl0xy6RP|Ve!4^3m5N&RCx^R%5 z9#3nN+M9aHa_QgStlG5cH_e3s1~s0F8#U8{MgmHvsS!w}ncD1G415W8X?De#UIT$8hE$CNxiVgSuFP}_3doZKt%^t3Nb zq~U_tRqZcdk{8d=;TZdDnv5B7PD-(@3F}tHqY3E9yWaXq1)e)-OpSB^+RkYea#O{N zb6nTj2dln)r7>g61+=a$M6d%`d+L}bR3PMl11jwH96T07d#_Utt?ufggXKa78b{_c z;(jDa!XC?Z$T`M;?btjy`7ylta6S6;{jb^A>zgm{KdbC6i$|qU zP8&AW;9#R@^h8xKhCy{vcOXFGcp2b%=piuMI#ZqK;J<(VJ?ral)>Gn}bqyU)3k~B` zuBr>W)*jERuK9Y?DOgq|Sn+6_Q|}fh%HtA^$1WX%eV#2Az#XDmFne=!8bEsFrJ=jw zVPjbg)IwX;EWPiB#<~vmV5$K10%F4hHh(_Y?Mc!$&|w$fiNXYS$!^w2IV@**Iq(A8 z>f4gJUU2)U2k>s4b9>^yx^O0aH9CEj`br@VTBMN=6)R)6d=8i^oE--#Ot!-aL zLP*dJosx8GlD{34tOvmt`Y=LeLPt&o{``zt#QB#+UyO=axq~l!y zuUGQqt>|`17b2Pp@K1gh$f)WcD#2G5-`l^k{3haU?TbB<>jt$+;UF`fROQ#r2zz#= z(`d`C8$VRr{y_&?nH5DI6ydjT?e%H3^r@D6TW36Nd|B%ooZ3s@^Cr?RE83>3G-E{a z)sD)R>xeTUu}QYeEH}@o(m7^(w9_A=XvGsEW z-|p@0@#ZWUCoF^@_ERvWN~1t|YLz)!K*53>vJ%mEi0e!UqW9fxYo*{BDBd zRwUlm*dcz{g-Dqi1G~@Sm<1x4rO{}tn9oBNM*(mNEaLYfo%kveyvdRne0=v1!Bp$@ zuDVu#V3Dc&Cn5d3nKz{mnjI@G*V-ni6oOEO9MbhA+%7ZU8`|_0y6ROMhGh9g~ORufR01`s+=~AgAg2fmGkqRkU{=W84jp5TiJk-C4?A?Q(GJ?ZL z#jCddP15MWSHS8MP-79YQ)axkT;t@c^|Lf4_in)fZaY1f*Y2XLpz}m`FUJpfJx11V{8)pv;Dr z$m2p!bkEFJ@Tf4qP}GYBvJjdEp)wkck{~^~GmZ(jOaXI6f}VpLotaHcSE+nTW(vx} zN9z+mV6AnnF{X?>ZnsB5v_^4z=62wZ@xh8*<76@XQp>-~3r26MyzUVwGY^{1i^lOh zEmtY1lV_xm)+HgnKUtkQdb=qnOVfGEk%#3}3Mxx^E^)F0)I`XAW4*BlF91v5PXhK; zFy1%fj@!L_A-_*z&i2mn@H^#02r($wGum^jXSvq?a${_rt?MMmJM#5ZWmt-Ndgbevpi>isMGz4j!L{?A*fP6U+#zJS*1_KQ|jrTXoH=M zt7x*k0GY9I*B6|uqYfWahDGp0nr!SS(%)G*e1S-t9DOoX6oFXE9ZK`Dvr=^_zO zp~<@F)4p-N;lOe_@2$Su#IwG*t1&u5&#jxD{n2u~UoB^FW%qY6)*TL9``WR78CnB0 zSRl!piIx4ic5k8ww-xxfn93GqcparQqkU9lZiU;qy<5t}1Cl*1Bo8(bwiW)R>)u>i zopZ}+E^O|yZ0edXuB_hqV6kSs#dlD}vta1-U8mC@T##Fx`#b1e*u9?pThH!xT#U`` zde@!b9qatcL8PyL+$p4Xzi)M2_v+fRhZxhJc2U|WT@CNz68mg?*Zi!Mv5k8o1)0Ta zzAxYr0@5t!V6m_DJYM=}SP`LX?!wS%ab2!r(?a=zin>#kSjA(MT4{}$0b1Rp0%{#q9ncG)Ih^E#YUvh|QF#Plim zU?Y_0W_E%XoNRwG)>R4CZihXY)M`mMVikE2AinSSZ#CKxEB7-uTU9U zo0f%;Y;)TXdfQ2}x1DL5PSV{kB*VzI4B8mkl>`afO@I46N0PxdhGer$Vr=WYJUTjh z&JoA|&88WNSeQ`Be5EB1^;j=6riT6YpwZ|(Cw|x_?}SbT`OKmPi`ar3Q+$3qgXbi7Jin5Jj+t4%}gxFglf$Mp;FSN1O7InlFsZa(#l83TgmiXu0?x|crHT3ZeNXKYs)Vx zwi`bh1U@Y{NQPu|H88KN(hW_n$C8C}srZ8VR;xo+rv27}CUe#%bBK-qEVt7p)^5@E z=nAY`aqHo(ZNDAxTyD^~Th0GG_na)rjL8Xv`6h)RikMF z`|#nQs{3IZq6(nZQ!O-rb-`yDMlXtpfZ74JdYhSWe+F1bK#lm7Q)aGJTb!9>F~8jaN~Km~6kFl6-)odc z=E6Lbp|%oJ^FR)6{E}R$Hu-8EfRMkk3_A&R?dGcJt*7)2EB^{9l*kC#lY~H^8Y+xf zaG8o36WSrIObrCac7Vsra@{_18s(5vN}OMufRzKeN#bGzPkR<}iVviR3yc?ScZc6%cqFdY`aoe;+` zN!47MJk3kxjNd{?!L=+04oZTP#{NXsrYFdx!JjPDR)jozW||prC15#4$kLcxo>(jO zxR7aB!f^edzk@bW#Y@c5h=;Je-MX3!Dy4M@c@w&c1q zyL21;?gHU9VwGnK5?ap7I~7`CG0(`!`KR9urzOBPkgX9Uf~w40Uzt|Xs#!jfR zQ@5lua*%}H7NqsE0ic%#fYKyetMPwP=NgXH`z0fIrHJ$4)K2Wy!MucXnb*c z{>SP0$op{i`PAF&aasrki$O(jP^miGOuj$=_y>r0Dh9s3`}X0%-kc56tu<0bQlDcc z6vZ5CR0WJ{=+qt0+R*hKom8rxH3lzN>lSkn*#v`rBw*{6v&XJtC2;u$)Rxx(H#UTp z-_qyT4`0WpXP?&THQICYYy}MWqb(V>AUFrB%7B~2!NyfFyUP?jr&|oVn~?3vHoZHA zRS*g){hImPW048N*7@V16J~$;KPH%@I+azHsfmFx(Kf^*4DFzYYC;3&OrY54aOyXE zm;T7RY+n5^?(WQe4|l6ktY+Pkvm_!Tu>FGcozPX4kLukh=i%sITE8m=GfWfctNubB zP{P?!;Ts6kdc?9P!iBHlyLii z``2XE!|hI>2NVn6J30GwcK+@3{Ih2}6%Xy0`FW)y`cy3-rwi@D6c-*Fgbj|6ND#PN zS^-`-UShmtc=?VO4VS%gn{4FZfSSUVnF2{4R@!K5!i>OKq{Ss`mHt zcno)&Lb@d6B-?eO3c5*CayfYlP-~7GA^sM$cT|6xGa*`R9^TBL37y_DXhNFR4+gM9 zuQ!JblKw6v-*+L|2J^8<_IDxKV($S+wghY!l7mMh*%q*12h3eae%*y+TPjR;!F()| zmygcaok+F>tOiN>_Y31!LiLM$xP4CcU%sqv+R0jCQZEs#C4yQBN0rUX+kP-Qcs1A` z{AkHLxJ>X8+|8PWda%B2=~UAMjQ95nWY#k5sR}=o;s;N4zTvpN0dn23)5eDvFE%*T z+OR(^0rjG0&uMf>_a*$lE*_*x70@!iW%Ep?k%xU}_2t~~xVNR_Z{`4AzrM1XCNz7c zKx}myFir2Z-2e3fmRp*d+;TcJP<|-GgMH@?>fO`)_bMyWE`)sL5scKia@DY~UMp2E zo(#h!6@xUxFsUIN3nH&m8lOnUb_y)v0G!_Jl0X-gR{@;HYVA~B&gcYAm9$3tUd;8D zcB#Q>v2HkTc^|t-`2roIg*R6Exc8=so$LPrb&<tHmzV$ouOEzEg;U)6Naq**c;(+5w+L8uVQMkx@+c24fA09+TKq(JQvq%MuC zd5}g=z$)aVwGt1p?&bMm{kB>6txBnoG#=oq@x17XBw90hoJ~xfE#szXh4!wu>-4}}R;mmi(ei+co$K$vYb=7hQ+&SJ2N*;IX zWXl7>$i!k#&7$1w$QHTPqW1&atuUGfZA3_7lXF2D^G~>bjr#eg%OMJji_U%c_-}u% zRQyMJ52N1f1O^ay`=&-ss9W%;$}1o}I&x7#az&=M9nk4Tb{z2}PnVICWLb8>n4MFP z=aa+GIDNAAXXD6z0gY2#Z`v>veb2A(0}|;(oAqHY6uP2dR-}-yBy6k3gxur;o`P-J z4qY_$zwbH&wcSIsC=c=VIrrn-lhH@DSEPiZVj6s7H81SOHVVx6`r^j(f_KC(F33b! zDaZoKBb0C?Bj(O`2RvVKdFzpP_>!5_#O{G?>#8D!RE_4ly(LVPq~Zk#1B8pM)CXp{ z6a%6vU>G}ccxrjkJfv|(U8*gw0AtLOCuT^=U1N{6g_1mRyT==Dh>^7}01K6Hg`B|i z1UrCH41-fpm25z-vsx*sElyIKSK*cA6}Qd$-de@sroGIX!&ZuB9m<1}0)$;JwJgAx z^>VLHpRFS8uy?L*D374o4(2-{HMC8jkj9V{TvgECZ;#-k>PJ+77>kn^sE;U|0z|hc zpJ~k+(sQ@wVn~jXmo4ir*F8NfV;o~lrgRx44>a9;p=mZx;+q%HqbwUl{4`Q*K)C+= zQ_@$U3d9Z-9Ah&Yzx|f=8sPjeCIWZzGPXY&jc79SM$RqXx>vXaMXjq17u@>&J<4c? zK~SFby^?wtFvWwmd>_-dU;|bv>pT8{gsU`4micCt(RA{O#`%Es&-)3^19wxyRhB1< zlzv{(%+Z%gmUlDm^L%+vCsUdZ$oF>Uekg^-WnboK`XOOT;ig)H22RNS;4La@V$FrBW=r#PAPT^KoES_uUJe#a&RR2>?lb|Qz*2hQ0Pk% z%;j!nT`lb$cPkrX)ZgB{D0Z6AMFQ=|?Cgv#uYK#mpzc(_B66^rSG@Na>kso~mR09a z=sA2Ob_CzhY|-ErE>+5JddW-ct}-~62R^$1+#)nX*MW9^AMCniP-LL98Yv=JYFy|Q zTSp7<9V)49E$*IiU%%YmegAovRyDRmsVRn?iePLy>}g;$u(RAs$3}>52pWaRU@4d? z%SiPYy^`W5^qt#d5CyE_rpO0x6yxei5n;#|awF+<1r&2QWFT=CH`d<{At3QD3^6rp zSR)ttc1m+G8z~7+-naV3MUnCS^ zpkk&)@tgIt`2si$c%;^@m$r$C_GO_sib}UoylxiH&ibRU6tdgBgu+(IHfv6s?e0z2tavPcV7mqs7~B{-lM76gjtXbVn{pRmaE z9t~CCxP6VnvPihYRnC=Mqjh1QSSsOpK-7c30nq7g(OCZy!v-F<2s6-T!?IynYFof!>4C0PQNtbpGg_-#LAUb1 zk*H<;(@2MH>%r-pV-Q+7RIR{KRRV9(`|xGGP5#|73#%BGM`KY-=VH}hVUy^ zrF=wn`-|LFQlK!m@3&n2Rc*LI(ya9}I=7!t=|T!8qb+r%OZok7MUU9 zVYMQbsi*49Fs>AT-1}I7+h9rJEImv1o0@H*&o1|R`_!!XX^`OSLTr47J4qQT%&4p( zKC0}7c1*1Vkvx`R=o6UUhlNcrtEsHyDD2I8Hft$Mq`sN%_-E=2fVVRH0!D)WAFP&R zR+U00`ME6R162{v6p}=vULIvMr({343|T+wQ|CPfw1AwK8snzL3tLIL3^naBPn@

6B)U|@zNZTO_`%YJqU6r#p?NAffofHFrNEG!annG8HpI4?$GDD;it z>k`@bhcGpEBrWzOST@Tp8j&2ipAWNWB@sg{^gDb&#T>#91i0^w;Cip#QuRl%(H=X} zAHs<}G`5}_l>wreTK{`k5sltRvn2J?sdqqP^qp=U%i*o$aV#}gik-L|{WYK>KVFEH`(-rtW6uW$7y&{^hpim zbny?9I=tl%PW>47_`Hvf=o~Lx$o_<~!H{a^nSHOGj*In{UmOwFsvJuF!!u2djAORZ z52H328WmJ+vsd(u`UW2pJGuwE;co1BNe)iXT1#cvL6W*bG<9R1Gni5z#^w6Zpbt&5 zf1Rgkp?`B#S0A@r3|V*Ryn6!;sc>5BuGT=w@^V2m{M5f@T6FXet!)V3rIBdeoXV%k zf2~$qkJ>mCe&<(sB_zU#OZ&J20r?zwhxS!Gv^~ zwwnh?>~s6RbFs%)`6?#~#2J+kDJ@y7pY<*WHF?{;Y_&LDgUV?P_C2bC)T;( z!1b5ES5(gPglfP=u0#f?QK)mWA1S9xke62UUMyLB`w~O0nc!~i({7y#z6-Ryd9$*n zJSqPPRpd{q;GEhW&kOB-@3;n;BA}npd3;rDkA*fG?k{lD8eUwq$OUn*6)6l0j4z3h z_`Z}hF&}yb#Bek~Q6oL0g9ESm8>FK zs>zmR8CihK03_X?_U?_pXITTlSxzNgdwtS2ons@4eOk=IpeF2@tyrwGQx(S5aU{he zV=+k!9-ERR&(ASdpO!_eqtJ2BT0WTdS?O9Mt|ZLU)+?s^(~}gIdLE?pjPrr((J1t2 zUE!24`}-3r|ONHRx1=uMbN?BIWK@chY8gXXpx z7GH(gYM1i{PalqF7S4&U*c3iDJxjudvdlyu0QR8E*Zu!d*6;#xp&>fHA&@pR-#t=0 z(n(v`g?bAZ`gwtKAz(ikJ9X;yN@6*3*w*eq4JmjKM?;jX@ZPfk2>LPkFNO{!?E>#l zw@3_R*q`@8e6usoUPfFu3~YB+N=T|Z89zXlgDh#Z_VVghM=Hom&`vVynC-qZ8#a7p z(cc8^v2I^N+vVCMbYsnXwWxvP%M*P&lfof-IwI>mbWnA%M@=n*aaWdXCy5_3o{Fi@ohsrOluC>2kMYoM zgz4H7FhQQRXf8T9q^8&9=*s(A^o@hTcvx;Fc8Pz^C|8@SXXev*KO)hk%=fWx3__u?R5>dNw}obBKz*9 zO)CQ(dM_c#|L*s{TMtR4m&L z%I+~BlLf(gdG{laTf}!`tD~fGyPE2?kO^d!N}SXRw&c3h=zu+(^ab0b&{q>3P0@QV zi2DDUObU(Zt@jzVCHyEg8GCVz`{?H^@}$819W*e0Fit~5gTCNid;ztRQE%EX5Xay1 zDehq?fwe(4I&Y9V9gMyUz|GDh+|Y^km6)azFpi=l|J- zN)*f~&X6h4hSS(QnYAK){;mDp^8_wQD~t(7q%yfCo?XeMl7fVpO%mh>HAh3UM`E2y zVTo?1<3R^T`BG^x2|@V_QlSkBdy0CST_hM%-b1zZy| zF~Zqjw;d##ZJ5fw&Fy-&ZmkP3V(*^^Hi`mVbRZ&=v)GgoZ_CzB6KiFKCA4J+3K^GG z+Lu+i7(%(K0bHm7GUFPiJCfVnZZWI;PnO1Db&Z`CxrmKB*~qH3I(VBnR!2{m9L)eMl;rk;!m+bzMUyXyT+1iN;US z_;x(JAJ;*qh%!P=P4wl%&F!ehUFK;v584%Bz3Zk|?~o;&-NmzQrDD>y>sUO)=encR zoHogS&?)x?`%#x@WwXs<*C&2!9u}jeTiV}k_HoM`cgS%=G`{>!mWvDUPkjjCMW!O~ zL;s|it;0R=4_)uQb>3)xJ)l`)`{n9BeD(eV)mPth+C~t5*I%)oVG`jINM3Cq_M|lN z)NNCY`%)*&MJ!0Qkd(W_3De-%@ z$pcT0?Oyb>N$VCuGWYIZ2 zb>I}#DuNUszr0>*H`?R*> z5Jw>lFq1KN{&j#Z?ND8(F!B)|GG7Al^MZvSV_;D%39W6`b@Z7upFe%qHUmWhl9(}U^pJVyZoJiU+n}Aks{lLdOf(g$sk`;VCE?&b#m}8 zf%MCunZboh+c}a=}$eNSskhhx*Z$ z_v|d!CYVxkP?wTH7C@L8R{7Gpx8W+aD#TLAwaoa|0U4`Sfz?_D0!yR7Nx|C=xQ$AZ z<-E1(5NsZWBD1L!N+(%-3Ih*l-%0wJE+S7V3PzPt>=x8-l_YIyjC7x=OHes^KDd%E zuxY*5Mal$%t6^UBXDEMT|HRyFLf2r~FPmotQ+1ho5ExFa9G~yyqJM-7JAFI61W|>T z^ySlg=^o)_&vd$+y zdsTjd*uy`?F~u9fXm~r=Kav*wa(R6-sB3kEL#NhW%`6ZDg??x=Gwj{83f6-_ zuU9M#!ZmmX=SVTDd;X6qXmvETCzsaxFj3#89!BKgF~Syyv2P`A#Z>X5Dq9iCQ_6Zx z@Q>Bh8igMrX#R;pVFr2k*D2H=I5bIH8Di0-m~K%cFyovpH{@MA5M^DBL0Q!bi^opS z7UY2gv~79V5N%l=Fi6*-RgtL~rftXHYoNA=2&)cS1&zzKO#-Dg3(uYb&J($Gv)V1q z*t>?M6<{b(;Taf(+ElOxa2sCrh__l#O^uMgJT>I{?*>=zG`RKhEA+O4HkSDUD~duw zym%2w3P25#=ALilBV|{d} zNI1^Mb3MO5?|i(Q{M6_?r{)@_AyfvDQB(ctfrW-@^AHkzFA{tk30@+>_amX=PdCgK zeX{KL^W48ywRJ}2Q*w~+$dkQ*H-yjajrqwA`?7zhv@cLBLa9nza&MlPIPz4USLDN( z^x@@kyp4T#yZr|5iUxS%qH|esrvx38WXnVQuyZiF>#@8~FkRZ*8!oD_&QL```iF$GwUIhUs zE7X!ugjXXINo27OJ|l(6gn|bw8HamR3KfCzhf8PKE{&L&TI?{evbBc! zuIaq)S*rkC8{~-wudglyUjf*tB)V`i@fUTGFYi&ak|=OC@ufc+R&S|TX?=jxhH4%7 zG2$7G26NmTNfcT6N$swG==5re_nc8k3r;H+77Hr4?Nw0I@3ssp&d!jEZC8Pt(WuR; zi!QXiEjQ`mp^IK6uF-mOrcd1e^?IY;d56-{aZn5EEc8ZJXp=F0F>Q^Q99r%`+m7*1 zXbQ!T_Fh%+z4`w!e2J#n#(p?zuS{dKpVPV2{u3Pr^VDz4up4hz3d&;uQf& z)I{UOfO;Y!Ydg@5WxJW(R*2!hySr>F1wz!hw6ins&6|(@jZ7rO7^RG`r8MzK&-7ZN z8eE0fK_J)?m1GgZ9m+IYBTa9!rOX5hJ$+6Xy~>zroW3C`o{8!GDnhBvpTTz9?Eu>F zl2G;ud=5+i7X?ds48=AbY(cRALP@9$C9_cA3UY;U$Dl32h~+xT2%fOu0v?bEi9!Fv zx}#+4c6c^4x!u4tq7*!C>r5Q|xW-;71YBtpu>!BX3ItyP7<2Ni*%q*pepGVDXO@6b z!N_O&r>^@-;)NL(ocRHmDeaY-pjM#&Tu(A$%QClQce+pFy{h~@F># zE{}9;k1}+C?SLHAoQ=@E-Y%pHT2rQFq388SYfUTe^c^(LRl^>GA4R8mallgQss+Nz z3;lpys!q7N9F`>qJ4>+P&A}?hsB;qk*#K&GC zZGvx2j>`(dFc3xe`HER;7m91^15^;)xKLLG8QTj9)+9`#Sj2xf^}UZmu(4QcmaVTiqS!%#akf}oOZb?k z)IA5#f9_|QqKq~gbl|kB%|Tci!iS+`5kfCPEjQ(J)J|xHi?OtX2!ts=wsERov1i;k zv3>Py(%a(uG@XvHRrqPBo4Tt9ol@UR!!Qtj?_Y5YW$VxmU*|RlDky@8zn%&sOK&#V zCLu}dhU|YgNwexUgy}uBxx4S~zI>O_h0G;nNDHE{r;TFN%*;xn9-qbMQN&4!S`vzI zg|ZMUROzKCrQpa-`j8X#A~RwzeMP02;OX^}qBQnoYX|*)1bukUmH6Pm7C`Km*Q8(> z)D0eZRnAcX(@<&55{q{wQ&O2+D7eF#akxRHP!SltJ9nBlZot~J~?jqiQG zmIdI_AkQ=eer+Q9jKG?w=*-c?U)Uu9vO!L3qM&3;%tB<~|5CBqN&!brl@(xT!V?+| z=I}9+C{i|qHcby;8OT)gf>BshoO&H*Gb*@UZ$(Wn^ol*O(ZQG47r@PM_!HVDooRbR zZWh}?XI;l?XQQ2C-EnITWRvd6URmI=6^~ml4gz|l$(cT#gx2G4iCuENC-ftlO7TBw zt$axk`@bT;p=sV$d*)*&%_#po01(v2*Xa=bn4w%Wf8DFvBn*0&S@T4b?JQu6UYphD-(DVj}Ld8BrLFQAo;}&S<%=1ul$9Ld_Qmi{&Sv zEaD<1O20RCgbC`AT*X|#7hF&VpHT=D1TLSl+ zIBETSIBQ(=8$U?nchGn|t+h^clgC$c1kH^T$90^pIX*ooa%aO=F@{ePXr%jFYYJ2@yREva!h0DJ zBn4wHHiz1)jQ)<1tg-~ETrik&o*-c`8s2-Rq|$2dC|ZY`{_ULyegurGO<}WqnrQ8% zB4z|p&O%jKQu-?#`+s&$yQp0tEZt^S$;wtDN9c4wk9$7Rz7AtsViL96+cv6iVCuih zpuD`P>CzmgwaP!cZL=jXWeVpyuU6*w_l3Wq?7H;(RUH%8Kp6K=WhjITTkAaHI34s)zcw${OthKSuA}?6&2n$H-q^#`YH9ciMU5I;yYH zR_ec4{{ZD!OLN;c5We$Qpff&DZe%xCD^~0{nu*#Z)yPgRaVG;)kcpNAIRGR_>G;1F z4*~)oph#H<&6F2g#O~tT{T90mzImI+Iar`5ffR*|QylT{e3K(~`Fb!40s>RSau^}- z9_2~4LG=D6OY@8%!tZA>q+jv{ zYL`YYvG;kEK9p<)=clIuI0f%kI9V_N0YOh-tg4N=hLkd%!ao}Vtrvlufwr5sZ60kyPix>-Q2n06_CCdsicnLzx7~-KL`fUa& zL-gX}-IwXd_kRrrjzTqn;&}NrM^^0_phTR-Ry(C*>X5M;=cnu6|D1bqs;u(h)SBIJ z8au!3gK+w}4WZ0#A3~+s5n*9xAB3~(yPFSQgzA)e5NgeC2#uY+5Y8vx=aY|<>)VMR zr(5@T8R-bw+e#|vi!-d$`cxA+8<9t$E_Px9ER-kOQ&idax{M6tkwEaUzDL zRCQ5#Y;+ke&(gdkx_+EzElOrSSl+C(G2`VH1nhjCLEl=G+T+k76W+LfTtL8 zpcmdAJYUR4no}3UC3xMOFQxwU>!nc`)dcG8pkn1O%XlH5b9#mCxqHHH-xy9-Ou*}4DP{ckg#Q-u_wK{{z@$Hwd5)9;-=SE_;{*m#8Pe%oyf<-$MNuLIJg;_6ap&}j8QE`Aju)thw)1!?irP6qp6a73C(H51Y0Dr`-#lk zt?|O>fHRwXur8;#!D#v9bC0Nr%!Ao7@Ql+{Xz}ivkY+DoHt^WIdKJ_5dY(W!lWwzf z%&D?Mr6*RpDMl}e{;bziVeWaFD-EQMp+DX>7G0M&eT7mV)PG)ZCIovmu(A+KT7s&% z2%jZv)23ilv!{e`r^O}kIPsR2$i1SnE6n!SJi%w+?%nGQOoikLF0B`{SKQ2n>t!ke z0X}b4l#J&vWw9nn^3Rx0r+u&A*OiOH%w270d}x&N`&_DA$i6u=O*-}XLZfGjE`i#R zOItw4;rZxpBPIDOiJkW)Qe_GPJ9PpnxFk;#REjg1ig+^&+H3#mPQLb^X~Wt1E#<7x zmp?~UJ;Dy8V{)w`Yq+tNX1gjh9x}O5EwM7x4vs9;D6bC9j{yQmiS!~&`A_1?+GF5W z!tI<+f!10liEApr@AkcH*l-$DETH?;f0;Ikia|-wmc1ou4CTgRpRBc({almn*A9`g z!*q8^@)cd1k$$(=o`-f#gt@`gMZ}kp+6cN!)IE>ybPr`myg7dWtyXPs+At9Qo?mg3 zs*0c%wy&&oZ0)8=+oTHGeL_Me9KX8Yw1%L`GR!h1R;By4dQp)#=2= zWxFl!nTt(=UND07>x^8M5L{1m>y9+v$#P2rSSKtnxr48PereY+KkVCWA6^b-7b>Lk`ZhDmdbhBhvCaCfxSf*DdZw_Q zanH_sarYZkIfqIiqE%gWE)P;Jk zJ6fopc{h|Apd&!Nq(jGcYlZyXQ!Vc<#Nb&1U7uV-F2g`2NJW-gtW&n+T%$91oIZUw z7*rj7uHeVl-!r?+xN4S0<;?mRRR*(K6h^Vy_e#=yxV$`_mmkJ@Ubhw0{EK88jjfTS zETV;&XV%RKbO6;7?~^D-F&Z80tu8;)^6LEuwOQM4+c*$?_g8R% z>{m42(^vD7E7-r!kl_bmv%VIWXaS^7Z&<2Mf zfHJ3Hp%O002RdgNc}InyA|$V#@aJh_ehwKw0olVIL`_O!5cj_I2t3*pJ_qDBp+r&e zO@v}erT~}Zp-P73cqMi^4+X)ahSjqA$&>{yc=J% ztqwD83pkJ4!rk>HS%B|U+sKQDlttu;E=dGTK2Q?#MV9g~rZJfcKHJ%{nehW%y3OCb zJ3BJ;MG1|bWU;#inS@8%_*U}wll&?~>NYwzNnMYcbNVv<-Sf|@+GyIip-S5Rux!f3 zEW~PPS;3l|m2MD|1vs)rX0>#Y`**XB>@JLjK|}ON-b^4;G;p3`bs_;MS=oZr_@=5`b$E4h;04 zW2UTHld?n7A40ysr+ycmYmaS>7M=}k*}4Obqcy{BUK!6;Z-j#B7Iv4J2GAl)S@z@> z{UJoYu9MO*lTZ}oVF^tpr3x!k)%JT`Te01`gf_6LNf;rVG4MBsj-JqwGEPc85!j%$ zdobz&vBI$h@XlP{%889L`~rveVkV%z;a^;IYm^>ua2<5E@l(t|&@cTfe6lDt8;;|R zMfRp#S)8kTXjNLuBli+7s47HOt?}C)$DX^&TTfZadJkM}e<7gLDQsqj%~^cs)@l|! z^b#haCkRpGs=E!q-lgmTukEAB?t27BEsQmNkd%R3$_ZGS;O`0M(*A(-Awp0i^~9Jx z=}hydaIMzH2n6dbCIAx;uv+Q# zZ=l=bh3Zl_OLu=^>(?e&B#7H8Ex_~Qgz{H^ITxzl<#S1Vm)%tP3=q}4YH{e_ReXK=U+j}9)~e0C^U?CR6ZZ-6k^D-SmK zXMzsb7d|KZM!;UC9b`D$u5V+GPyZv6aIlY(>V#YGIl=F8zZ$WR&zf==8}CbUNX-VE$I<=3+eY_j_4=c6Sd;Why_ea?Pghp|4!`(dc(-}reUURBLyOPtn?;AXJ?t0pg= z8_3=*p{(yNcA;#mn=3E8JCSaQZgqRo4X*PV%nPHuKtd??J){rIrmGqq9Bim4zPg%} zSmji}N8rlF`pD+gcWvXm>x&8@Xr`(OeA~eX&hhw0Zm;hy3>w-5GazrzE^qWGoWZ(z zV)7HJ1Wial8d`EQw*J46(TK^vb%PhTz(7#vaam|&bS zg^@Oj$7XDva@51Gy+NlV*bH^fVubIQXYvWv%{MvAr9feB&Qhi>^9eIZmW6)9=H}=z z#@uizZhne6%lPC_O^X>BRUZcLh;oHW+Zbm|X;lB?5q_!GosEqSY``fKY>FC8ieT-b za1M|w8Kc(QWMj<^SYcAB;1|xhfFGz7Dh9jv_Vpn3uiISik?l^0h}1enR-Hc`pykrp zwE-8DDrA{4!4uSGJA5lm4(3$JY4{j6cieBT_}qGSOIL!@5?>WUa5061X9!UR&ZNx1 z1J5$JD{GkaT9aEDh-rK35d4^8H?yCk@oc^YF=vX+Dv%36uKv1LsGzvZcnnD)Vk;FG zk7FsQ(jqodGf>a@c>3+?nw0CUy(-UenM7;w+yFB|Qz+r_ya+@&qXm-p*FQy5dPTkd zYQqUPW%>i5k_r|X`Qm;00xq52qT=GdvOB0sS zAhtc_dTdQ2?@;fjtNO*F`~8@DYcN{zv1`5JZSAvOvsi>Q!2A}m$PG*+`dxhFbo$me z8$n!2E4%G#X%(Gwen~F=s##Tx(+P3I#FMR;%^AOwXk;h)%1rJO^jw+FAhLcS=K0G;h7J}~UCO7TM^r51XnoXCkL^}kh!E)0UAGS!f zcJEcyRzc~EXv0K|GJ(*GhKMWMA^5)`{l1aGxC+!Rt!n&za!CU@!}^5Z+Do{Yj4-CA zMXkA4)$KW`?GXjlMz0CN=ib_*!R;sZp#6I+^QQ|Lg$nCqzBlNsxCJ55#f+~_V#j=W znw~rV06mU93&JoEhWGr68?{5l*{TH@Q$3+XM=nR4GPtVm!=@ryTmNA zOhE>fYphOL1TiS-5YW^Do&G}0zE8f5(AgU!4|(E7w8V!P&v2rrb#NqRVua#8%F_H~ zZv7^87s@&zZpVrL5!Ga=xB93rJ&rpI0x=MT`}~S6^$Nw>C-^|Hv9UXla5tLZT@rTp z)IGPy)Gs>U(~qUDVwz*`&$8`5KYt(~nQ* zlzXJe4QPYdg)6N73VjR;&Go)zJ4DYJ_4d*rW(iuHNmV(j=#bz^j>Jl$19#$y?R4&o zNs{O!19V)#2fN~PZiCSe22t9<48}D3d&E`yjAIFl!cJWIni73KH`lMp_W{BsLw%xm z<8JQm{sE0r!H&~F487+oe5kZZRi*3|TBx+F1mdy>I8juY#A!w(Gb4{vTA}@SJd>o` z!wTWcj1#}-_dMQw@U4fMst%d*AZ#i*$i-9G-WTt(%wkW$V@2?heCIC2`v=#1XUWR` zsYU+gYZTf)o-6WVoK?(vxy)b*PwY;nrT|#iCjP<>n!#4nRUAl5a0P-&2%%JD1n+Q= z)-imcldlL>*Cd+JOAG+2Kvlof zK>h|ciRxg7{(yW8c~RVy#F!|R>J+>-ktV-(L1w%hg6g6?(Hu!8nibp^x*;>mb9TKl z$-p*EZZtFVP32SRYvZ;zvsO&n5Pe($eQ`~77Xu#YzvdQUj}eu>KApu#xgDvKu?WfI z*8jsvs{VdADY^S`_4J(m1x=4nYXUJ4#qaqPbJRU3J=eBEEfm^=7jFv^l2;Sl%?y)q zQKaA9NI`mhf9A)V)te-th%k7?teWOvd%Fng%hUYXx#CAu@d31f419t1?>q_@6zjLi z>rSFK^dIK{vCO62EW6H8N4tth`KQ4r3@lKJIa1{jmU1~zwUabs#!5Uv2j(OG{s6suhj(53Ee{zxewRM-S{ZT7@^C5@FB*NKHVx@=UuI|^}0HsxJ zZ`v>r{+?fPt&oybq}9GcVe1Qcrmyh z4=hzo8Jaz!VM!E3)CM-oG)AzbdSOne0wppTqHz@AvB8`;4krn!l$gy+Oqp1re7q1z zDmZfeI93ajPo^q|gFhjrHkQp@x3Czml34In1$`m75)2=QJk50ZKja!^Y`ndP8D-jn z%1Z_17}1r2;pj}xv&0~j^Vb2h(rjh~1Eq~np^=k^HZ+qdV;E}hwRdPy``m^aKeR-# z;dg*YNmd1O$!}MSyf}p(JWRUl15+R*;R3vpH|Wn%j|y#+=Yy$6%gPMBKD2VeGW08? zcF`ETg9g?sP=4Lmu267Id4}CrCr=I1XTQB3xVAmqZCsnI9wsKQ!yvGxhu!xKndz^@ zD-&vi+jIRUfwh3=#cT4w*J!U0t;^rie;WhjnpVavP8TdbRc zmnd7}d>d<#oSM#rV8(W<cNcZdvX$>rpyH)yvht+~`cz$F zC?qj6$7`foV|RlfdNFppPSZ)N>;S4)##$kZJDv5;#-({#?$^71r2~t)W0G3qHSWEj zHkR8WlBhGuE11&gS&dZE+$7VOK%1Z`*A)+D#@GqX=d~fD%(N~$Yi(HzI<#Ma+T`kV z?guyLqw(LE zzx(zkVVyC;m}E>hF?u1z61e$luRoifd&hrqv8=QRFwBv4z=h*#r_`JA$$4`A0hL!< zZ`(E$e)q39HQb6yeMz>bC5_WA&CmkvS}c1@41tzti>OQrB;~|N^51tzQL-e<-R2gN z#dH67Zhm)_r#U1n&ZuHU8^vQ2nO)BG{za$i1Q z-~4%dV^ytq#_)_9c%T{*ZXH_|h9&U8O^Ot*LCZqL3=Ji0iZZjoK+p}-ImN?|EYIYQ zsrzfW$)#Yz+~4XH<0*76@w<{S)B3MM2t5C;xG+pzw7G8{W0qUb_ur0kprU_g`kQZ< zEX*;+Pf{EAr*r;AuGjUWq}}c|D=Bu3fUc#`GGq7O3X>PcKR(;2R*26rDGx)#M}J~n zO}-uYdR&8lmTap+#8zk@!)=l0QknalD$Sx)ZdjCX3}%3Ns5M+?9F+~827sU0$%%Vn zTD;#<1)W$tZRVc2;#+DMjHF{ig?$?Q{q{@dGCv|#BHk~R`P(Q@izO!fKI|xp@j8qu zVnaIKSDub5r!Q9I<+Mn_A{~tFqxO4aJdh+!+@$R)rHg{m5MF3a@`VN4kI_I zk`Ef18U5VN+~@jR8=Vdgsu08`G>lUGI|f_TVhy8MZZ_B@#z2*#JNqtHe2u={Ey8op z)kPp-D_UemTdw-legacE7r^DbG&Gs7nIVCfh${LRemy-6$8BMrWGrfG5ZKH*Jc`lG z@kAx;j&DUX%{q)iMh?9`hDGB>>UdrJ(T1rtBXxx1iXrsrMg2lM<8{rVlrPMc2?73_0@E?Y!EFPhYE4L4IH5B;;)}3t_@(V= zJD>-}4a)=>mVhoA_J(2qwbdQRqVEtRzRUxx`(Rv`d3dB3xhGm|WY33;V-AKd3)?zs z1;bV$#B~Z{yph5QgKd=ruQiJmGp_^JX0|jVzKSrJ93@!5)fEIm*zegqp^ml&1)w-z3Tr(UWcuQnR_HJUTj>VJz6u3Q6zb0DisQWN$u_4tQf^e6gTP4=foI-IS0 zr&+e7@ejnX9xzy!xVj?d%VM>{u?cqjsIJGikAo6z=b%IJcPC!uZ%64xpLm(~-la-# zDP`8mkAumv2*a+=jp}NIYt*jmx6h8r+>X^6j;1`s)Wj)}V@n*2SoO7w3O2znSR>jQ zHWGetydX3I-YUcW+fZdU^5w4F$9*bJJ6>`(a7vV%rzJMST*D(g!x~F#Kh6C6WLrL; zfj<0z;K^MI+>g#)f?)@Lbo471g@z@=R?5KI+b}A0$6GE+FV{*I`Lyo}o6fm#C%?hO z`rkF_X1Xif?jA%A`*gM298zlRU8}P?@V8Y`l})>nJwJ~snv(N|d9r|{+tys9(3UVRqb%-W;ZTq%2y zb64^I04@FLA^9cykkEwZMk!h0_Fv$~AyO#OUcNoK`dv_WrY@+yBx?t7&&3q)EV;R2 z>u6(Zm;|%?MqelQ$w|1F*`eBZzj*AV8g6@E2^ztUdOz;uf#Zs8NN?>7a# zpL01M!5RJFUMesfgsjSQNMyNFe7!NiL<%`iP-p}$GN}q?xD*p8b7Zu(<@oCC9zNeL z{(N3osEp@GYs|na(~xo-*s3y^!Yel$l5h=LRw_Yql;Szr%tj-@3e+W|#XBr>xkL4G zD~nPJ6z1iNk_l@4R0)BKGOKh)ZSf<)(nj?{^7iHOl+ssTpsdU(#owhi?r*UEAlK{m zR?D7uMJC1WFwTxQzjDv0DCxlG|FE|~r;i6wpGNR^sui(AYv@&Q^v?+Bnw_1wJMG!c zmMPNV!jQCHo4I?b_?8)jaVg8oqgHiAjvM8^TJ>tRA}SHXL}D|5I8LM>a#V>4y=&)Y z;vpOJ$XVAR+iPqYG@X+sTy^5=h-y14Z33{ux6v?us)hzeEG!Bl`UGq|JSEH2?>ek= zxni~3DiK?E)-Z0vVM?)` zeYegjn{UhL!fOpnl48cH+-R%SuG%Z`5eINJuN_V2YcyftE#gK#fnPp;j3#|!p5_>L z5d@8gfll(8IuW6w*oMK~;>*M1-;1aC>GAPv5W!DZSCFxs*m`|Z=K?~ChYL(Qvic#u z|NO8Zm1~+L$_|O}n1Y3{u?-VY$a0rJOc|6u2^Y;kQExEMoitc6y@9C?_8Q9$!`j_& zyAv0v))=<+pEL@QCw-r=)4AW=(C>LbBnT$$p7*U#6PGL)2(9H|IJVymf>>2qM(qZ6vb4DUD54JO4jPU^vu*sFgV_W0z%K{pJ@jED zd*!!oVSKSD2Wo~`QLoZxBMd%hOca_AL8lt^Qm};UYY6&?1a-M?v?f zWj$~S)sNnbi%iMl+4AhR*3XIX;U3sAa2fRqG@WZSpM|SUKc*V{9IW*}3r!g3deL2_N=!T*Qv|hs(`aKa_MM zUi{$ZmQF=s^p0Ya+Ix6PN!94~RR5zW2d9mGSztDU8#;Pw!^D)Yg;Y4TTqYC&E37L; zPc*dXsK-{C4klp9?@o$jn9AftX@`fiBjr6^$2LY^$pq=Zn>JiOoxMLDyp8?^g;m>b z+CUI}=PO1CDK-MEzH&>_G*u(DO+?zhga|G67*@4+t=%;QHT-+W>kGC^QbcgP>p6So z%$f1@GT9~&pdT@Xjy8(>W@Qcu>e&Z((&>18aC{f8g^>cjVX(shcQ9qy{Z&l&BQED1 z=+hTIO9f_&5T;QCzDy2^Z?*=Q2q5A<3XQ-;C{@f1mtp`(gpAg99QQWv>)p-m_s81| zD&!H;8Z)qG8UmgXTc-vC*mJX`9j-ykRQX5;1vsJ@uhS7MMx8KP{Des)52%(mGESsG zVU`a{`l$6H6#^Aymg?GLU!*qnXJXeM4{<2Pp%#53g_aR6?^BbcrnuY*gDRx+2#y5Q z8XgqS);fPWKp(H)w^vH&YR43`qKZAwUK7Q4%pmlneTWe4YPu%rNKxTun!#%26A`0Q z-#9I_GSanyIf3lc%fuSa^G%qY4#+l-=a2Da98=kxOcCg9>30BG3B-or$Q-A;;z@T5 zJIRCA(Vhpx9ZS4_L^q{2PcHK-M9fhJW#0|TE$5nGcNvm`QS6!t^VxkaF` z)o@NJI=%9F7h*J98H@_Z$_C0ppKz~FqT@?~^dG6ps839;G&nfgjLK8SxWRY%+F>#*@Y<9FJ-KlXvr4J0+L;T)B_A0gMxKfNWPcrixuJ!rEEq zhOH-deo~$pF&40#A5AH=p?6wMkp}-Vd0F;SzHq*i5`~+UqW2PwbmzibKH&>DtL!B= zc1Hb6_u0D`zy`y`Hl;wJZt6q%e! zNw;S~07`ZK=@9%_Z{~wm*HjW}B+@6(?Z2^PYpQ`f!R05Q$V+nl>9|&RGLEC)XMbX) z##%_afON-F+4EPCDUo z%Q{)<+jKG|WI3S0l5~AEm>^RQ^714Nu$K!f=SIxu3iKFs*NFGM@GhJ$9rt&+ps0dg zb{RAY#1gq2Hq~^MC~c}3!W>I)%Q%dLN+hVV%2^bN4dV+mx+NFyE)W1wWLS|Pi-*co zJ!JDa3zEn}AcR@6Kqv|nS@{|o2U+PXTNAtI@P+Cj9AIa(8(;#p^|#Y7-0v+Jh$*yS z%~HYXc}` z+oif>ZN+XeuW1>rHTO--s|F|%u1&tnpDD?%gymrMQi_ct^&1SikgztrDAph)25$Ue zA{_}SC%ubw83$^d#4(m#k#PiTfm`%YgqVjhvP4K_IJm@_;2lFkA6)pD{iDHqrWDG4 zz=Ey8KP|NFPuG)=pcBc>uYa&88ZIecz^B@t&h-Ebvlb||GMkewx-~*+Q`^N|qspgV zxw&kzY}?l7%Q!0ZSh@RM7hB`l|1P2mMHssEBFIRoK($rh-lbKmsJt&EGmFwzB8BE2 zNbZ4O^H4#~ow;0yIJ0q~J=r{P_`P-TtApL60`9V^x1g>$P0h$No(kp)UU4RHP75NR zKa)ojrlziD-70u1;svAG9(P^Utn-9rSc-6JX;;;F>yxADl$r4vj&|zhG^KE?syC*k z*!O-juMPTOXU<#$3AhQYEkZ*HwIb#rs#naH>X?chSC}V9YZVXrtn-K#kS@?w3iSUzscpI0(F_^2Q)78>MkJo9cSHoFSm4>t% zq+OFSuV3tq`V(ckif%OvwX;BZ6ZFD`y{~yPXkKFXsAi4n2u1xd%`C9Iy1`NFD4Rk4 z*$LGe52?GDdo^2&|E-DHE?jRE5QmsvrI>pLCu`!UZorYVB#;n$iBO;+Uu@6 zj1KAAtSQMBjMJ#05ekgEku;9?Q*H~!)6c>86YV!`xld}*FBi?Z;jV0H?@OJU*k%w3 zzOWlZj;`*o(G+8}$yeriP$B29*mGP>b0pBOLBsEte zr2VKt9@A&y3(CzgBOtY4h}wT`y>? zpjwa*@VKoDcZcxQLKSJ%!%GNm{PWQr?~(W8qF;A?`tsX+b}{Ewnznj(`GH$K!q>k_ zb2FQL$5q*JQz!0y<(dD2^IcAb{lS{Cf3^2iWCr#T~2-J{0ntbQEMA941T{~ zA<9ORQZDSZ%es^)sB6YwL2RKH1oE(rom{S9|i?FB6 zXkc%7kUus-@;Pc0B7?2u%$kPOh$$!u{=ne;0b_UT$KVNxyR{vKuv@-p4256JWno{Z z0wPwH1peUp&Sx@5)QT8mFC}X)s?A4{YK@e%y~PN=2L(Ijtbv4aCq_Z~5L6T~l3NYn zOF%8^+xJc_ROUfYYn8NeaGy!RJUuHH)Z!1ajDoGs&bB^oud6qiPfGBcp2_cNb!0#4 z6beQ%3Azk_`l8OZv%3w)pA5@wE|@Vw1rP%vos*TDf!Tdcl@k= zLw=Hx%O;Sn+?$Q|Bqg%u$*Iz`V&52RmKZ0#y84LjQV=-zlk<~nIQyK=KvsY}%kK6v zI@6wC){?TcrPOQl+WZ4`QqgK#F${gbUm?mylTs4)+GSlrmqMT`f$lL7Tw6EMcCYN& za?)({-zPgI>C4Q8Ys<$vI!Bs(4chqymP5ew<%jVOh_u-X7o>Z<>ux+dX<90r5#+JRl~){bOFw*>+D5mqc*lS=lLgE(MfNKsW6W& zuPc*Id0}{MUYmb?QeSHuF${mdPa(=ilTs4)+GSlzmO`K#VSPOas;$eJon>R|E=@f9b16dki zf#ZGY^*(dqwt_3&a32y#OVIRP2PVX0a{E>Q*+Sj zS*^c4u1BcGb)+#AIA8|rMqy9AkcESjR$p9(9QtHPi7d^uW?of{o^nJDexcZfBc*y3 zd<;x1_11YMtk=(m;>fS&dS&0{F^L5o)7jTs+J=QvqnM=`#pfLZija>262J%Rnj;`I zDZCIvrZlMABHZIi+gP>4URv$Y7PG+)9(qPtLToeC-+LD4&t8g8ua-0X$4>RL0$s(@xKv=ogdWCL^B&$g3mdB_u5pwg zG^f%2do?Yjt>C#LtSI8U$ z!aylG`!79Qyw4Z2%j<%xKkJD1TD?}k0DVzSPXaLzz3;D>qZ$M8EFuIkAyGr(mBb9~ zEIZO|n|2DK@xME}B6>3EVdl-pdv7|rjZFkg#$lqfEQyW0$RSd`xjMhDs^JBknRA$W z2_7EF?#R*(M%d+(R`UUeaRnFp;65afhM+FafeG=Dc+&`=x8T^2&jjr2kXjTD{t}`i zRBXqz@8=#Cv-#8WyjxYXBgIf)j~Og?!q!E|!k(qk3TMcnBtuGMX`nO1s`A)Uj;P=r zMHdc~RW`ac;ZC+wF=-{Dvgi+q2i#T~F(bEf?;&>3!X54$x z|Hv8U$32T5l9Mc@5b`#|N^9uYPSd8e>hrgw_uD}k{;^ekRG-xswN>A5+At7)&tGw3 zJOspw_FCGmh*7E1)`zXq9-yjBawJ|IJF=ZnwDG_1>;y`}k4=+iAq6}4-FNrh`EvC! zPjiSd5=>)gtmct@w(A_t^@rXl2!?$KqaKW`oW#j zU{i!;Ap}G!Uu&ME7MP4d@CcOLVwl;BP&~=LTTC98tVNIDb6IM38J%dxB&AjQ;XlJ+q6jXyI zvWD1HtJQ{RbEa8V zi3(k{_(5eoE3RpYJJ_PyDj!ph+N8D~oy%Wirb=u}P%0k(OC<~GVm=m5@4r_va<|QO zKbQ7+`6`Pu#X2m2yVYSt*UDXE=(>Lk7QLLfV@GbNTQtUyMJY6?freF=dI_#?YG7MU zFZq@-tZW7zb0GX4`^*{m^85X$VYk`S@?bRl-B6g1UFO??_G|vAS&7;>fg0WXZZ`kw z5s&nR_|Aoxq)aCGbZU-lJ%;V>u6ZR*{wDX?Qtrm)j-%OIf9`m1U(w!6;^6UECxsjB z)7J=d=QHd~t6>lGj`uY0fK-+$P88IL)N zturnZ5wMh8?#-8jSIz0^-x0~Qc6XPYE$J#3M%QZEi{8TcujFhNC1i~?BhVgGrsUqZ z6YVXI6c^hA9Q!i^7+#SB=pQ(xF$SQ8%(m+#XIo$lCSZiAyBoYt%|DB<%vq#0Mpy{E z4Z-B9v_}hcPqwlJs7!#Dhg21CLBQR_2aRGMB<2q+<=6{PxKut^$|Ib1A&8uHfUY!o zy7gg5;^jNbGaYMpOUmLfrHq6uUoZT|QCQylV0q?PzRVX8B6c#;;esx%uP<)Gx9_e# zPOrn?XVdVP=?z3WY-TA@8Tu#xoFI6{FJ72m*j+zwut0iCu~jiOHouvm8>|R`AnGI3 z6C|P;c?)|{@2po(V>2_`6|`$}$*{odg3l-Wb2~@9468&o`Q{7ABPH9)EYz$suml5x zX;-WtxeKo#l(+cxIz1N5 zlBCPYq?JCvn+rJZ^{|M?L%kb>Hempn4*76JR0v5=!48p@-n;sq;9LRS{<#+Db8j+% zTmueuh#3qI@=9QH5$eJ5=X13nDi>vD4m9Qv{V+s74ouwjNBu+Xc0*^{cI}v+G$%VO zrLS!;8ISvDgu?L6yX!E7QGYxdjV;dTPbdT&(zFZ9Q)M!t@X z>oBf*Td?}9WTweNC^eyA3miVR%m*%q%KgFzIKh5Kjbg}^5t>vl&v6`EnxM3%MbM#K z>*->&DJ!c&bX92u`mLzef~Gv@Ix0pl&x;}K1s$yo6^5uT1}Brt|4c7`3E%(rW*UCH z`7jMHFJ>Pdyv;$kFMvv;W`~#8as>-Iy}5XQg-*f6?rl2)Sj>q;jO(+>YCS@KP@bCF zSWfQPsXGPLN9LYh;Pj~wTtF5#xs>Rau2gFD9D$;@|5)VPekOQEgxdD!yE&?6q4<|z zd6@KS97}SmhjXXg#+yyn zhg|Dr)hjvuo!v92u5E{9o3V*a<#+5imTr-$GIY;2(h&)%%~Z7{9-X!iiB^$RSOa{c zNTge}c0$!fxwM8sJ@eA8*6M&UU}G|f9QZjqN4>~6$5n3?pxeGF{`+(E`ZZc&u!_sr zhBpL$)hGm3hWiZk(|3>_C|FmZ#Ufma)vLEiWyF}p!w$-w%c)d)c@E7dx zU1$|6eORo;>%_+{qeJgU>ZNYinV6aKHX~@8NtRxdgP2(qxlS=P0cO7sqeoxLWWkpFG$GWaHK@4 zAoLX9Hdu{AqS$+M7`31>+<-<#w7&#(+0gbRQ9QIvj@8iy$yf82PZS%CJ8EIyiEzvg zB4^!(NOXQeeZX@RMU6!~#azJtIqjvy_6QsOfKY3IZe}~^K$Q;X>Y#yh{g|3YRbsN1 z-j-#-5je|`BMP*5T~S7UHJ2|z`!>c^{DWPMlaI@=M{188F~?U4!Z5X0Q=P%MM*?Bl ziK?HYmCvckm^x#Ci$x+yw~jI>o>T~tYS~xVV23)++0?|bM7n4vE+Q)mm=!VK|uK)6RG;HPN{sp zI2Ot;5#L}m7}YR;YCM!|zGg&}R(#HwD0$Z0>$s?Ao;fmlYoZb!n{NePmRe}kANt{( zMWhR!&^RWn3nQg#s=5#$14F0e!I-<(TsI}h` zm$IC+oYmHC(rU-c7T(YNk@p4Wt95x_U|#&U7zTXYKh0|%zaxAfnF^*_jyFMCwacrL zFTWXV@^M@hefGtW{nB4r)V}#mYT@68O$*JRZqyc|M_F}u@-OXKS#RUW5q{^d=rtUW z+E@oAOS0r+BiQnc0o!sUIh$lOAUIUZ;x0up?4~{1v4bG*K@ec)d4EBU_xzjr1^W|H z)w~aBJUOuQ5W$DoUsZK=)z{SrkG^u3E}2uq(mkp$?wJPH_}ZoHSgjmNQvFM!7!@+G zxnq+nI=`oLdQXmYeE!7>o@=IaB9SlQhnzbe;Y&&uzGV@^ao3)Cx8y{(=fpA%YBNeq zd*OI1otuumM_h~Q&~|Uq2cdU)aXP%74AIoWv?#RcoIL1^%uRIcjnC_a}3JZZ1~oo z!lBvNx4F5Zal^+nZp7enNQH%O8|Woaz+RYlJ`lJfL;?f&*+r(rPxz^xFv_oiD2i-?4|1i5o>69arU-x{ zqoby7ncq>EB>|~`#bgcSLsz~5R|+=t`Fs?ryEpT}Cb3v3l3K_Up zm8t%Xn*yX=w;A`KxeZMjxq2^?UebeHb6yfl|wLgH8V<*!5Y|O zx2V9HgOCXI;Rsv;7k6 z0I=2utOuBy#xhX%pp0TF#8>Th(okYiRRP1XHH&HpspSy-c6w>3oJ}fZUF{$h)r3x2 zu)PU{d~{kFFu@=p9VAU-Rn2<_P+PFH=rkmx4Pj7wB^Dte?Y6*brC4i&9we)c6h0`y zAS3%dffa2c)-BhA38wC&FWnLhalrFW^+zd6!A;=UKMzuHx1au&vdJY0(0n{vb z*lLCbi&Fr`v=Qot9;!tM@{Z+REu;Lt8iRSg{Z<%{M#0DZb_^A?xQgl@F4Di@)44CVW3cLS; zrBE+~iZniG1huBo%z5)4ZHb;M{r(?6(Z=xal7u_cv_s+c8b42jT5!<#|K65p@JRq| zyYwSI&QJ$`AIYQmMzpAtjM3@FioF*+b7y1Sk@kKVv>6chuw>IobaGbh{1VX6yD zx9@!YjtY6FdSWac(|~jKgj#TXC4oT_Nx^~mmFzC@U@Wiol_kH%V=_FaoWQdwUAcU% zq}-_#j-nY?cYXt|K`8w!??WD#W_3=dzL%iDXR?5zqgLe+(LAN>K zPU0wDoMk-yYG;oubSP>CZ(@($SdQ_nBLDcqU;gyt4}boroa-GwV3I3p4tUxS$SLH= z(m73CyM!$ps1RP9kVp(TAZ}`^CqamqQUNj;;@T&}G3abeT_@>iP8Ygwap*^u6KA=% z&S%06E}%d#yo&1g7oM}4EU9IM*G!gagNt`2Qg!8k^T771?^(q0%sbQ0hbh%}WW9Q_ z@);ldwo(b^ikMZ(W<~CqD5#tgF)~Ys@eIpdkKSo3^h1&B5SFF?rUp6bD_UHcRaReS##W?}G=;7*>4BzC}x!52jUV z2tHKN?J5$#kRQC+4r*Ru-27QAn7mClIGfF>-M1408YG=+R*!mu1hqn6q3Hw?IcOz@vJr+DYDL?#4| zECAfqJw`RqR{|AL>+bf*&C44N+|XW*CR30X^&4iU2IZAQ?PrRdAs)~;FbT3-*4Kz- z)f2{bFEh`x1@b1ScmK<>^+snD-+z#u-J7q^c0TiB6)gbiN)-l);3ziNDojywqaWqn z_AM*BZ7>;-P|0MqSc*bzK?kfZF&(mchh;-RT{eN3*ms#>2nUIRif}cf!~XB znXmk!$4X{{7+B%32Ut%!P6Bg_0SDe1tC$PbR*B1jhG_Yhu7g3Icpo z7Z5qZz{3bme#VaK(RX=o(}po_ucVyuDEB>^G;(iY%zNC?#P48W;)@rikhoMhqLw%+ zQA0X7y65TZC`A2GB>(D4Y-UrN*M$Qk#c38MQ)eNg3b`gV&_qa)-wBZ?xiYhNNG&6W zpB?-oUV15Vu<6l!25T0qMDuw4`nYN!t3@xneqVnVjUReG1pQLdg<*yj8On3GA{Srb z0)agGJKyvuk%PR|<8asTynt`1>*Q3t1C*q2D5*^k#2|To65C0AK38P6)IB=akopV{ zBd-BT1F*};wj(w5H!xAsh!oc(31a;eJUZXPqrTwOi(=DX=+MtR32fiDaThM!f#Gkb z8lI0nXRd_>rVp9kK$H}@`tgg@EyPMOs-Gj&COYjxl1vPjZUtn(dKcClDDHziniR2g zkxEGUo59tkWUgGt<9z~nm6Xv>l7hF-eF=4=u!GO3B*;?HH%SDxFYPWR4(kR({Wrd8 z&HKU?=*+kK#CLH)B_w1MVi`U~u?*QHN$B);E|rEN&#g^F5ldElxWn}-KBeWD5ymmS zy(yjgBFcoMCu0<3dNKQ%%;w|4GAf8pU` zb_TV{z&u|-igfs*Xd3LFHI3AWT(8yeC$N&cILn~ zt?YD@x*pBn7+KYJ|Ai47nj59 z!PPK5^J3>Bi^#6=aBy}tEU@cS-D9s_V=)LGN*T#unnzu;;$9#^A}&2i{{od(ZI9YG z5dNNDF{+S~RM3~N&}9$payq28tAn;u)vb^>8Hja>9oY`M=#Kw>V<(0Xf~rP{IOCaT zo_X;kA8yO6gcOsUDU7sHJTYstFHzsTk0(L!_BBLF3^QS*fKQn2FvT5wVD|Zsf}Y=S zISt@7{oqfjz+?!UD$gO2hHTyjfnWvdl9BKp%UteJJ>JQp zAOaLgrCVaZn4F8hF#Qji2!k)CZ_EDG^3}fBNU^v0r4%TPHPbT3$Au^>Q~%G@wkl}v zH%u1fTWxFz6t|Q7hVesb6KgH&)vrt+Dr0Ty+nMKDRNHSVkvQCAE|T=x&K9p4WlUe& zQkA&2Wl$4hK<%kDEGyB}6R1EaQVlE2F)@ua_%{H$EYe-2jVyc`oVcu>s0~j(*6W1w zU{sZu$oqpq+N@${Qv*6{Iv>J}$8D>Sh=;?L&E%*)uq`^8YBcw#6U7~oD5MDJJnVs~ zCvFr|durc0AR?4WZFJax92(L}8VZma|HzyCZ}_&NSw!WEju1B=YM})Ea&&PJvyWfrYfl~i>ufAm>)CQS``$rYp*d#N%_eBP_673`zJ?blE7K+174#Fn zmg^dmrYC45qN%=McD-Hj1rwT_kt;6@xV;UV0}cb}?(vwgO@BA}<{nL*Dcm#|7a2Jz z)}U5XHgn{p>-*iqjHWa*j_um*&=_uSAq-o-+##{n{(#x@|Cbd;J~kiJWzEVm-#_e7 zDV`$fJFH=wNK;bZb#dILZfN?GXF;zk`yz;ZEW=Z>qu5QK6O~3KZspZpd;<{;M2fdk z_H3+6W-@ZuQFCtX7P%#MUG>R@vcCxPYivx zXcSw!r23|)=H5IyAq|@VCRZwRI0diJR7$`*KO7Fh|D{*$Z`wE*|IT0W3~@_RQF{AI z3mxh@4QXw6V>;>7RxC{nSPgbAc4*NZ|NA|*1_{DBe^>{^Lh(1_rkFX6=( z5K?8>Qz}UaFI2AZgbENmO#*_7LNY*}vrdQkYa(JFH$Ra$;#-nDT=Df94M0y)QQEd2 z=hf}&*MP*zIOJmsx=a&oYQEh{-bV3-3#tE^{n>WC;B2d`ia8@pDm{Wn#M)Wddz2ib zmsx5*rz}q2qG+FUmM)h>s4sDh|Fh1YMBnaGiTd*OOl~7`jQb0TVr2azHQLPb7?bwP z{GTMtbd6`fz%pfM+(H!vR??e7WE{(06?U_AjNf|qaJAxC_jZXj=s#g0`+)>(Hz8m~ zA`-|f35uPiIT8AdSPDK<|KW>-out; zfwBSS^8l@sNg7Dq?Q97>)i(WHa3R9e5{wz@>8Z9m9ou6Vm9<%-7;%Kj;jpYoYw!%s zu2Zu(H!a9oj<_v~{V=rocO9W)#}lUymC6_n@4o$*-rY{V!oT&C>1;mv{(bUS9~{+_ zkjtprRt|YWWSTHgf;Wg=9e) zuAJMu`Q&ysMdp%O>M;}r0Y(s0OPrFDUEzm~tEvzk0PRvk?n>+#)Aehdpo1!!BcNig z+|vXqM~$4=Z&Bp7YqgoBLPI2?8r@*)wriS16vw?%c>j35M}zkQ z;s+~e@k61n7SkkuPsjbEa!c))%2T^_SF}5OJJ|aMXR9L$g_(EO{8i27C=VoRG+eIp zcP7PYP~NkL$f*mbGA-OjFP#g^G&aLS7mFBPoaOtf9&msl7$Fp^Cik5F@rdnF95PrV z(oGskYFf%wSa6i#I!SnPgRSQ;v3Y;2NP>kVfN|*lCc4^@L1UbJCSFW@O{B3h#j|Un zHN&-jq3xgy4Jh-JQKWXW?Iwm}&5?PYW525>N>-xkevk`qDcEeXP-Zc%Uaoy>bst*d zyQ_C+0mi0JtD4(=vbdSMwU3o$pl8+%k8!WP(1~v7cg#hHpe5&sR>5)zEiu01?KKe z+}ia$zcDmk&e4Hlfwzbar(x|9VeenLg1k@4tkt`Lh4OVOWTwpy>p%Sny9%!u<*B`w zWqYK--NCux)DXUBrd|{H{~zGDV(<5wr!)Wzjk-r6b_lBH>4B^l_E?*h1-=psqcN&% zG$fCJ89kc((2xu6oydQ}CUqX+@)CohwdgIaWuxNWI_s+1x`uCLn7YTt+^#)$RdCEt zYVj&p5+a6Km_li0+8wL5JKbERTH~>qntPR|UHr8&GHE;=Ka(vMhK@6SHfGUCHz`CK z7=SZ!4i(G6P#9@@aoBZso&Nx(Slw>hHWa@1Q*c3A$%!4Wz^d3KkPgvMzkX{fYh zv7YHoM%C%F{&BB2Iv`=(Cudv>PJXA!nkIBjP9l7Mv4ZC#CMG>{0Dt6_kVM~6vdGhv z#3I{Bw!G6M;t5GvOu3?j@r979NHf6)Bui-ob8ANLjo#~vm(w>_Q-oTul)_x3$$g|q z!qBmKu4zKf?vsq{uTI*_T(F)k5$MB4vV8u3^NLNNI^(+4!b7M2w-=h8H}`^$%%Y<;x{i zI8xuzH%9FLGr7!H@a_>R7hF@hz^pa`cSC7DFbZ}t4ffFy*kt_g;sge24q|h`*ZtRN!zDu(#vZu?|k)~unafIm7jiih= z-HIAQ=vHFf_p`DE96lvKKiZhcC^z&xM+gNNH@A>XBa_czk-^&IF>->;W-(Ml%RJU$ z8G03F-{{yB8*NzqT#v_ftpGy{`o~UaAD7*5qNqNnDwZrmLt${vRF*~?vxGG)n<45E zSmz`nOSY!m%ys~k&OjJm{%b-8%*KhcUwU56UBKY@f-Q6CVt#N1Qj{bm`$P8*KY{UY z(3op1mht#<`p5f=%jtPjD8Md3w7>>crJ#sDaH9QhxlTXP7@AvXjFNqZUxR|`C8_&k zN2pe0Rsz#lE`Ulx3Zc=>H_#hV!hjDaOX{KvgR(w8?mTB{f@?Hvz_crA&F++xROgbH zoOijf#CDmeEMmv!OE6GEb%!2H3IM3_N{Ur!H*{(P5(ERNNlyJLc$T*S`ECqIIg<&c z7wi+{6fMk!NFllEb)>KmizrncE+bt|efk5(VP2V^pf5zy;Z`Jt9-7v z)!T-4WhKyrDu<`11db;)EYDia^=))1uxv|enriXoQE4|PhFK=Eu)6@e(d!8x4lB{l z_5XjU)M3Bb4@&y_HY1$h)(yyp*)g075}8?rKWb)_|7we z)fi6hCDSzJ;of!Yq_Mp!= zl19;*@~Cq0a{6w1c0GIf_Whe{DAF%AgEhKVM`0u?4lXoZwH8Wwvv3kOMFnsDJ_;L- z)Nq5F1CJW=MKN#5=g-x2t^GMq`s6tYzCJtzWQ^bc2EK_*((-)NUWX7AGgly>3^^%0 z$A`niuGNQqg7KMYbf7t?dt77JZRdff?hPJUzCQdDK#KzQ%p}cVJ%<6oj@&54kUZR_IaRNO zEN?um^;3g|d#-)3TA|%zKhli~x1HakG=)8RDcx%?cT2SNK3q9leZX_bU~k`BTPF8B%7hh83k`J&(sq2=vvKYB!DU@Of6gu&bPz8S4;}4 z^ysJ3FMF%E%GlAJN?10fkzagV&Qc|pE>Er`N=qYYREDFz%nR#(`_iILN!Nd1hPg8d zsCqwo4>~NY!}`CSglQp@l5Jf|wy7eZqc;Y8#Vfl2UoA>*;GPM&iUofHpif>r(_wBX z$K!+)SY0GGs_3D?SEIPZcw~vDE|a#?siVS0nL2EOq{eC1z~^gR!<~4mYtY^b&QV4L z#nt*-;Du>rF>x)j)3%EC$eSZ1gW;g}uA5k14ve;28XCgQiE+F0prOh@+@VWvckEv& ztPZ->Eji$FMYdPUW}_!{JN@YB)?ZV|o)vcGOBtD*zAjgN5+ zE>eg-tvQ6*P{eR@0-rdhLeeZ8498c4$3B5;Ubv6nvDwgs&^35ny!raCXR$vcX(UwJg;0&b{4iE^bQjA&1JFQa7jJ(jMY*@#8$@ zjoIU=YK`JnH&cv9TZ;X2gmOuGq4?)nw3D_@h_Aw4)62t&^Uzke>hZGrrcb(+V^@V? z^Q~uxMq6mPA+IjgTksc!Q^AhYFc7`xE9OwCN!8toE8UhwWf4fgBC+C9D&%!08w)44 zY^U7_`tQuRX=&O5RutPa^IqOOJ2$UvX(30cg~QYbr)2mZT8n=6BAX`3WCW?q;B_5L z4IeRIV~%UM5xl>xXn(EDJb@8C@YXm8B|_0?4bs@wsi!i4sB_RtV(k%BT^Lu1piDgm zt5HyFt#A`@AKowSK7F}kszPa`mEn-HhdXFBH{$06k~G_Hn6 zWAv|B@W1PE!PZXJ$z|~LOT?xx_9yul8wS_l@a0+KohZ&uFQ5vc{Xbwa-N)rvh(?FM zLe39)_ueMI0kv3dQyVuB{_bC)Fid>T7(4lDz?6d1FcWZUL)r{5&iPKZRnF3lq{Dbx z{(E<&dzH^XXzF3GwWr;EwC}ouqj(XMkOq-2si(ALfu87fOx59s)_$YWeMh{YMUJ@^ zoSf6}o`&?E9Qe5YWeMvJ6a5Bx2Y=+FkVG#inI%y~0uiqzn=dr+c}OA_P_8Ipd?w`5 z*G%v>i6iO*?Viz<;ro1cGPoEIP}Gb?6llICD_@b2A+TwpX-HN~FW?DNM2SQO6cmND z13cYEgZoRWVjqa7G>*iY%9|6hTmk?%NunxbK4bGl8YI=#esyQ|!yykI0va3U{MXhU zze#`uMj0;>9f}p-&Ow7j3wiS;@;Tp7d8Jvz^!nzL)-j{@;ds5A3BJZ-#)4C>@hnP2 z)KDUt9xwZO#^Xf4igTRI=TzY@^&G!ZV*j6UP2~(70$zNP@)GmV*a$g?C2MVG9VQxi z?N>#!C0YJi!UH2Wx9d2GVT$NuW)d@;TYXcyE)V zY#CA&NEX}V%HSf|{%RSy7K_mU8P9dESC*WLEO_?w?QBN8vWiwo6n=IwDfjw{>eFIV zm7@^$*s%ZYQKiseElBSCv_YDY)Z2!-v?H|`e!5+99EM~biK!nEVbntXpy1oAc6_%~ zul3!i>olAL%<%xQpV?h|eLoDX!<3h9$*i;2XBeo(cEg=*Zk2(hoVhHoV!Nir)NDIc zhhSNIy|2fguLhIR;Po9#1D+0m4CfZkbifBP(!l6%~qx~qN(a~%0aj~}$;!Zh;ICQ3`FkTEV1`fUv zps~;}dPD;KYzC#JJEhRcD6v{zfiQ*||KHJ#7hpbW`UX1G2z><@rG2UQW>PGF5YiT> zj!|9-7fQBG8%_DDfD`kd1MLsVG$kMoL(MmX#;e>Xg<<`Pm{O5X;M!gcZ#&VZrOTmoOhecEEP%5JleFnhW5Fn zTCTn84YU6RN1rTwwP=#VKB3E4uQ%(mt#j8+Nn@cH%v9^w5SoL0TDj+gIjlj|~u+e%L{y3np!>&2nt6B4~F z1Tx=m26h}r>)}0>l0l31tgLpOi_$L9a{BDpzo*2iq~XLufs&Y$ERL4jWX;Coh{5EK z(64U`WLQxBU_nwaIJuc$8TOIKPhgH=Mlxz~**3QoE_6CVMC%S2 z!rer!7~WpsI>Mr;ED^U(VaN;usuY_-`l1b1Lf%oSIYO<=mAc7Usnc zP@ie0H<%oN>sETh@Y3+eWVawUFhw>8mm*B`F+gWxdhfSvQR*j zqL1kV+(A1#wSl#(?pPet@Y0M4)tKJZDe*Zw!pRN4SB#+-FpEP8DdA~Xb(J#`4U-i^ z^Xw((ZC(h|kxf`*9H)IGY{Me(@os__^DGjH4c<@~lPoC=l=v75SIF$7EoO#d5H#yU z6oI}mak}LO5iDqMcNK@erj<;tk47r*%{Q8;auvvRrBQd;Jx5@(2RyU^YKo(KsV6-@cqH}VTgnj{1VTc1U62klg` zx$_V1YTl+5$w}{xP|PD^)3t>poDnu8xvBEwl_v}HXOeDvfYqmbYU0mT!6Z>|o*E3Vp0v4**?PkzBLe9HJ{$64gbep6@P6uB; z55EmYldpr(_-uI5!n(r4ib)?y;A^Z7H%t{ugX zFZIRFhA+~$$K9zhf$HvnC)}7uQi0`v@{9APEwC>=spq^m&97CpZ$+Uq7Yn#*-3t~v zPAy(tr3&&Pz0B&&I_Y4vOq5Qw*#YURA0mn^6#wcS7J#7?^Olax? z_29z4bevuXyvT>4FjBxB#udg`!DnXIH#x1(xx8|qLm#-63QUTSlvxImENaC!sR1Tp z$asW8BXE&Ol{3So=t7YpBdp@MZStnUXfj((>`@8NkT7Oo%QVE?3R{;3W7u+&(hk?4 zWvL>hi()*doSx$dmZL5hfnzK(S)+O$$vh_kR7t7d!TaFy7+#e{A(eSvqMhuvV-({C zcE{LB3g?#tGG!!_5I9s(%B$12 z(y#dFLR#;ZC+Si*tQZq6F!tQVmqj>Vg}1}IVERZFU&9dseQ5qS(AR4>y5Nq7%ZBOB zR}bz<#*bjuGHh^?F%4$l9$HQt606u=&l5dY3!F-26iPbA!3zd@jv=28VIuZpPsaGa214|o-`>+XXD-O<0j zvwmS4Ux`vHioLTtGryUg7iYgFQ34?bu`kh8TCzYd^fo~?{@{%|oxwYB0}sx*794Ic z++c_sIP>lL)0)<&OiViPj{e|xAwfq7OB2Tsh-53-D$?Nd5MmY}R|t$Rg~tO&;o4qQXWZRRuQyw7XV;fwZID}%5b^VZYRWO%i?-*2k!GKDNTMtv{F}vR>rCMzs0a`$#unAj5BpKzV%ty}VYUPWUm z*-EWn*U7}vRjQ@Jy%)X%j47;JgsJnGQAt)L^vl;#ZJ+8k`auM4yEdRQor-9JEUd}E zG74Cq2Pl?M*3dQ%`%oxp#tn`Rc6SGq8u~9^ty3%|^R%T_Z=@0yRfK^sJaW0Di;3xAld3pG2Un1}<{m zH)H+KiZu_Ez(`vN^+gQ^D^A#f?lynoSZs; zy>Pp&q2QbqOp_Vq7*#Nfcz8A_$&I2>v%K)o!HNGumln@UDTTa2rKoqf&O>@nG?H(_ZK64bgS3S8!b;-l0zgO4>=8Xw%pM8#0!l$PQOT0*YnxV$v*a`@} z+12IsHJrpwz5L_}6jAOtdp75=3bn{|;Ixu}b$;4%>e?y*^Vw-QOpJ=$G(0j&2FGjG z)%2FAiQkx5Ga7AP7+<+dpCYz;Ql#xq?W;nN^+6)uWm_|vFNw3tlzIC;GplM$wvk!W z2j`z!09emaPu9XDHWQS2q?LPrb-%cq_2GRVe(|zIb^e;(I!#|DG?P$IHg1rV-4bM*qr|j&8Z#<*u{q{0p5{ZExE)5dN-TaVQK(Dx7rt zDmU(o#@oE5c2GMjf+R2)>1=bBNr9y77)Ag4j-*t}FG<=7h9w>K+&y>q@TB)2ibVk# zra4m>X`^^*re<59zW6on1i`zv5T!BngpmS1VYbE$*YKX%``=b{f6iq$fVcF6-=zYx zK$w+z4yi1*iq97Yn8+aKDGH6i#Z0OdGhB)`6ge`otvPNS?rQL{KOFb1s~OLcY|Oxh zX~?)G_E;LsV8hLVR=5T&OO+x8%J7^p?}9+E73zYK@e+$%Zc*KTl&cjHpiD~LFxMBI zeRKaQ#ln)i|HAXUr-mYd+Y;CMU3KYgJYnkKyKoq6%{{sT3 zndL?aIm=IgM~>8MfKh2IVo2rpmp=&br#*r%<8Rq2cYjn?5{}kD9%p=B6&t8BC^8LW z%rP~UHTW6;9Yy&_Vjzu()aC@!X-aI2DpM2HHHKDJUBwRLkq%8N6(&iVs4#WG!*&DK z`HpB=t(|OolGsZR8Ep0-Kqu>DJ-NmI;=c>3p{xx4P`_!{La62 zfYEbY8&4e3Vp%q-82ODsSqSQ18ybC2l7D(vH~s18dNLRddsl4;C$wFp>k)VyME`2L zr?%9Un4E<6B0LT_w{@6t!ClbU8G347u83+BYS%ES!nmr~jFq{G?m{Y6`0#2i@Cj4e zq>#UZ7 zP4Z7`jB1WGxdtj@h7suQpU zKO|jjJV;GMmM$Qw$kG;cS8=0A_NeAgk`$$0L^kKj;(>9)r6as%d5QWUjs1WwCmWA0 z4#U~QsO<@B!~2~@KG?EY3QkeZ>j4)h9Y~q6Q5)kGT3AorQ{hhqB0cJ52p8Q3*2VpV zTC+KAw1*dB-%l1wZrCHeVg65OREjpp&jt^kzuWJ9Ehf7+3sjn3eNpWD<6^E)G2O9r zeOPy12)EQyQG-0Wce_6Ja?VK5-l+q0o{^(0n!4XbY*pi_-pbDH!N_X>HNDGZ^3`P8ryE$M)qA_F)@UYie-zWMBOaAO_LN&n>K9{Y*5&NF(yYA zYl`HOlpSGXVA1D&*oOqzzAdoWecQI*lrPycGn6zWhaAZ%R&bxh%jqFIDo z;`lfwdXmPTlb)x`h$P2m>!{J_JV3hBLJxy94A8g4y(TWXMiWfGe?EurhhBKnKo8&# zeHq3moe?x$_&##NXc>E#vlQXLMZV{dAR)*LreQqCsTT%q6!`?h+OeMK@kL1BjQPBwWM}0YNS~1e#8x5#TvVA`FXKg6(3GvH zh@US~O3goVW9RB8_?OuVk+%SL6O?^#{H1~5MOkMn^n>ch);kX#uunMU z&#!UJO_r^6*k=@b*El7p>2YgH$+)THbYW&jzPh*o@7wJ1{M-S9r18Q@^%le6`Z8Py zf*>7_MI7y7wOf+wK5J&=uO3_(# zQDi$Wp_SR1zPu^YF9~?WwXQvS{_OdSS5IDitF_Sa@iEfCq{IpRFouQAW(0-c41-kP zJ9}$hoOXvt){$k~My^# zJ{r}4hk#KH2G)R52e%aPo&w&lRnIhr^>EWrz^!`om}XCf&{rW06$qA5e}txGsStW9 z1gfM3Ui|9{VNVD;RScNckdwdvc}0$7uL4!qC{pbtv}oK&~6+7?p_#su` zAqzjh0^Bng*r@_r3>;R0dkj3U0#nuOO4WKp2EJD?c>&8d7}i~lY+G4++UaENZjov? zp*AP~@O#D9?LmD~HSLiCp>L`X=oacSPv2G{^i>E$1;W7KwWS)tQX%wI2z{CZ>ktMi zgpmSa2&OjclFzWKLa`#D}J| zuJ3>r1DJo(--lo8;}8N?8s4zJCE;u0JK>z%+nI1@i64IdWNZAEJAqA`*o29IETPY& z?MuFUoVzxiM6a>GZX~~b{@s%wwN@)@BW*lztZBE~cMZqsbuaqEk!_NJ?YPq^>2|y2 z?vhK}KSq{avtw;Cy*zf7I5_z+T%gO44zF~)i7{$g_Ti*+qLuw=OO?BZVT~-?!WYhk zi+k9@meC&>-M-^EgQ-)aGPBT~bOy>#Qrg6LXbrH@C(gwb+irgfhVNV0wR-lni!1HS zbT&k_#gm`mXu$w`aDtO7T?0`u0*Kaz2-FHjVhkzSgqayaC*+D(pq*syEk_jsYwh7BC2^44 zkeChZT*cMpjZVky{C$qDeFkcuYCZv5(G47+uSiVVD8*L<&6ntginxbPAvL|x-n3y4 zvJI|8LO63yGKXRtV&H-c$Vw*Li4eqvFkPdpazQcW3ddCh-4@N6mn>6L%q*feb4Q(% z_)?6Mb}rnDaa)lE1kmXldU$j}FW&}b{{5JvgO3O9c&`GDGSdsX?6?sjIkmRRSt6)n zBWjFdD979EQ()Uhmbg{O={{sfS_n$f^5-lPvfHR)crf8KDX}n_c`V8yDg&2C!_l^} zw-zKSMql{=f(W8QWbvc6+v>GQd_p4KV)e0A^!|G3d~Y)O7cs$CwajYIq-ZL7qJP5v zg1}A^;!nrp^-7Vhtnr5U1X-rkTBUM8+m;D5wQ~}rCmRlv&T8$j*r}HJtoxuZ7D;*! z+8#B@fwTfaYRVR*9C%tgIA%Gl3}-nifClUZRC2d6y*0MZ3UbwXk{P2tbXYzjk%7R0 zyPhctzgiBoKAMA4bSksrE}Q#fHkjX}%+{{Vqbuwksl8vWdfB6+jVH6;!?;8N!7aFY zzUy&WD4}=ns8Y~|lsdBaquZwtbQtDD22(W zS7X3B<7%&F1lme3jY*O~Q3)6H2i%M~bKC?klX0<;&htPAh*jo{tc?;cK9u&}Su=l( zY+04aCJivXzOp9RFZCk!WAR$c(d`#qZ|-MO&c+ThRmkCMpCEMmL!oT5V1LCI9oNF z4i31|Ad@0oJ+1UXXLP><%cq*IPfqyCUbO)}cAz{lwUspnYsDyl@RMIr=pyk6VwlvW9_qXOK zEh^VI_Ml9$k%#Lkq^sa2 zJyc!HZ+Tj)q5*>Hi#cx+=<~P1B{UASJ3K~vd&MUwbB_ZaoZQ4-O8h|I<0Px5rB(>L z9ui7Yn^q*43Z~P9{Z?R>WI8x@lX54KosN+|9aiO_m(Cc<&qyd-)c%yFY+X4A1`mmL zvX^8lu9QsxGd(@sJ^h-V$@9Z(ow1NF;vna~DDr4g%!+Ns#q{g`{jA9P&f`Z)!f`t(xc2yQUWVcbVhA)v| zA}#X;hk-&qfw!_li>`&}*moC747%jvo- z!t^$Iy2rb6hel`7hNormbi*H_I6e~B?*&f7Y4b7_1^w0b{=0M$#Osca?}B8-Yad>1 zvNSKOAGPnNWrpuB-dz1JUleci^ln>gaTbW{i{msY_+5Qe`t;{KEi?Sp_Oa#t`yz^? zVtetjD6&YQd%E2$(_{<70G0_)3LH?RF~4}p;|x0ewd4ZnCLf>b^eV~9LjL^<@XnXO z>yPO3#$sJ}hc{(`J>)+-52Gh?alB4p+33gJyQRr8Qj6@PJG&j0WwOAhrZ5C~9&BeD zp0D^Uh+$?)Q1GWZ@#JQPD>+$3%k5K*BQaaVsVMU&!2-zH0;Dg95WE>lfMtk^- zy0-re&_EnQ#S*|nb7wNa!ErqJ6D`4tq-9e0RbMupPTAM&i!Z9~!vkUw{1b?(<@r~a zeVVZPqfl=4!U3ILa_|R=1Jh(-1hRuI!9ww1v1Y#M0wzfQw$Z>j zbzm;r+KmYVlEY~i;(IfB|JrE;6 zKio2Y7ooWKERYY19(A6mc`BCJcx#*y1sun;t;p*LfSHouPTPTmWOdP8l$MI{VmyX* zUK<=4rj$*P`PCAz1PQf6#ftufFzq0IH4%&LPQ&)8=+@1Nv`>a6G%!-voH!z4EjT%X zFe3Y4^q5|v#;$j-(^xlYTdZQ|)mnAwUMxbdmX@Urg7myYj+!l{7C0n&m?>H;^5m67{lMTj; zbhAm55qxZTag9E+*^5{2W-~To9`pk*do`9mC63tW{ta1g!HlVPNv>dOQNf58=zfz% zp(48u$0ifiRJO5ae+tedIhi3Bi#(!HYReG6_=kFwA}S!T1_cBmI*g{?s{vt|6wv~t z76eW=vb4PJJXPIWTr%p}p-i1N=mrtErfQLXJGkwrjA(M0KoG$VNB0?D2o^_D-C+A8 z6@5fEJl>Lf9l)d!Mo6uV_-8>LY?!75YC!fH|AGai)tGLt8-s?9gR7Xsia^HP)2g_~ z*|WW?6r8MM)qr{qsud~aQ6eiXDad64Z*goD1-NJmmu=+u+qe$Yh=z95KZ5nLEn}S1&iqR1R#?{=!RzX+{JVD z5E>(@igjAXA;xJzWfp*C7?vS!Bd@&>(7MZ(qJ0IUOx(+vLq78S|?7ku0za&jST2*B>a-3s0u>f{MX7=1sKV!yBH9 zU<5b;K7>-igpB!lI6|Us(-Qc@8D>-$YzDZGYtYMwUa;33(!}uto z%Etb4d_?>X`g2k~&^rN0!yu&JQcZY`z{&`Q!#y44gH|vzY=nk(4|4OUsc(z8yJ$Mc z*bO}Dt*c;h-5jB@_MFZgtIZPeFy)d{)D2W3&@3XJAmxtJ7@Y-aru0A!;TBrB2NDZ+ z?a?b}1Qy|xQo!g*lf>ED?lY{pLG0+;b zAc|C`3#lrz)6N zNI?9mqwNYJOUazM#z&6q+h`3CqK+W71(4}EAHO&R21TG07n!l1gf}5TJqf9zxEf52 z;$_WlL9MFanQ%p!0dypls{ zR@p5-jZ;Sw-jj?1Kex=-?K*;>Lvsbgz-17{sQN+g?HS+g2h`R`VPN5=jEg8k|13f$ zY>6ga`D$6tZ=$pm1jO%4XDmXB3b05Z7{COu26-NZAy0M^0f}J3rPV{YOr*brNYIp? zlnCR%JtYzdu0tYdBrOnDyWQmB=~Pr@8xXiM4b_Yu7n>unJs1gt_f0NI*Fq*=1c@!1 zk;mTTknQ{fH}hgq7Su~WfJ3K}{n!XhpB@0j)3gCOi=$1X;`Dpl$#mLT<3~xMhTWv0 zgD5^v*qek_0NU5T9ewxyWcDS4=oCEy2aKMr6)UnMJ91>0j%m(Y{&RkLk9b_AX{?Ze z1rxyXB7F33@U%Q$%?HT9$OS@H5Z>cqw3wQ)6fFlRFMbW5lyi z-XMA6;NJ(@2reo#$PosW$#dW=wpAV-5iE$?@wQdfCc5LH6djqsQo^Dnch4YU$6wSO z^p*LD?q%W?dc_CHmSSp`MsgYsodzbBuSPNnaR`ZuA0+;7p)I3GsX<6jd;A!+RoZd~ zn%6aqwHgRD#wij9E(I(I7@)Bd5DG*Vz- ze0+~D)+t-_I8Kq@aj0@$^lcHc4pTT zOiuoqAnAE><9o-iW~V2|?@rFVzCB8r$4u3oK&L_$Q%u-@bSLkK4Zu_CkMVaLCD(Oa z$7=mqSoUbP)VtTn?YSyd6ZKgAi!rbCP--;R9c^2pY!f>&$)n8jLX-=_8PW`l2I`y; z`paa77`567MHcj%1g)+tPZwMWO)t>U!QBXP#25XM^fc7B2-Cq}KtjQMrMf2U-@p0_ z-|oX-oM=byXR6P`!+_0k=s5-7k-&x4Z^tbPV?OId5Wm*2#3v>q+$cx+XDO9a^esGF z+$m+INv7Ca%s#9k{s%{6u0?L{?94}IWsIEW+7nbM47>hFsxM?WHNu!T$TEx=BT`H( zPFJFf=^)}2!{H&y(*zj`Q1b|>CnjuOt+~CwoctZc9U4y9xp&RC9-AI8k5KR~`}=ci z7|TS1w8up2nIsx}o1+OeIzYaRP)vh(hz&>WfRc13b389n)V}gJkdNzZ4^ATiyZIx} zQw;qJQd&vNRJkpPQeL|1vd>0t<(oF(N3D3+y;}5Y~5Em_Y|UNc5K9{0EJM+Uw|F{Q^yG3 zX(YT$xfPSI8np}flG1|pY<>%p=hztcZKzkXqJX+oys)Z+{2HWzX{TL$)Ra?eGp=H? z!(Bthwryp5uTjMW^j%B(RGVb=!rnl>-Ochl#8cTNyKl4JqZ+&i#?cuEEMtXB&!(r9 z118yPEwqvwZ<75$nTk^9^zxD&9^(7`R-B+e&?K~=A;kKaK6auY`+ful6}6NjnS&r~d<9awnpTE2%lT@y z35vzq_s0Jt$}qjS8hh0+4(nW>*&1b!5PY0A3mk;`w#~q_wEEd#Um&j0S<=#mn9bBX zT+HKQla0aoo6!e)TbFXVL*qXE+;H~uisS>=ekt~VrnTe% z-7g68gNzG|hrlRS0?@zgw^AYBbWUF{28n*dzIN@UKe~2kQ@tMStHuIjlRy@Xu?_ef zQNo{&0r#k^gd!zb zqZJzL*BzF~ejn!rJ{D@o20xcS|CleoiyyzM53je|JKWk@MQ(?CX=f(u4y9GmSmNe` zFqw&wWrvz(2nm3#eeawNLvn5CB$-Y-UV431#;Hp<9fM<6S@Eh?+VE>ai4QIQMPA}= zgZBrlT9M4lu@YMTT*grb@*gZ90tG&ze1l5M(+qTyd|aeCCdBb)%)wYj8}%W>0z^SS z>6{$?z`^j}EhkSkNn z{=v3Jrz(0=msykQt@Q2CcrKZ%nHi6vV}gIEP0*tko>LPFs|tv$itwmH6I{ADPH$E9 z9gaXMT^4(hEmJA^pH@e_YYDLfz2)T2PlnlEUi&Fvm2sp4Lb7sLRpHil@Kls3S~psp zO)An~Rnea;F~^L^XX?QY(l5^PfXcwoKWf$zqdAhlE*+&+o#Bzq(Ad;N{nn(w%eH)g zthkq6E)p|NgV3*e@TQtQE5(|Wqk5w#T|e2=h=-+WHg#DoCH<|qU>Q^$7ZWje9$^KI z-xi!U#AXBPo+m5Zf6qB+qr58b+v_+B)3%w_BvP6+kbXQFveQwhZ!2*mXEoBAAOUnz zS^93c-F`O8(Ud|}i_}i#MafNi4Y8@*L7Ir|2Dg+xx&T~4vCA~D9@$+ix(ctWWO1eI zAzoLtppS78rk)pPRT<8HHHtLr?x~C&Ac9yp@G1hn&v2p8S#GL-)?337Jc1Us_Z<(| zS;|V;9-|vN&xwB7j1EUuyUGI~+afMQ+_o4xGe z72pG@L4nPguj1jWEvpJ92oM(JG9k5xL;+Qjbn+KT`IDmpN(inbVWh2P*KT4pCkZFn|Jg{s| zUa$>a^>9VNDaA=J)QA#a@CNZ5O90DxU2-mX;OszHfex0F77+T*ykiZ}6V0fTYNr&oalqo%c7dlllV78iox^8{`R&*N&0;`Z!YhE#{yQuPxS;-MWY=K#1FOw74KV2fE+$v3}FD zguwW&co55p7BvwJHXUqj2(nC84G+2iv=B(sMSBk_e}?uAY_^am8>Q=6Qq6E6AVJ(4ZoT*7Yo7{c$ z``ARZ3K!YGc?v+T7fiQRmBaR?0o9qR;dh9_u+FkpcdRk5=PbI#t06WLN%tg^o=~gc zJxY;IC>C+P$BZ(?$4XrjHOTYQ2e|YXd7`n^oXBI}?(vc^tP#j=`}2?q$Iug$U_XUS zolq+0=iE!E5}p;k>vs+FMcMy0OX0W`5zmNe){se@d*EVoC% zIhE>sagCT4`hch?A*AS9jP~V0Fh83tZsPYR(xN(X`x7Y80D|+b?`E&5Ucqy#XH4?Tx)iQyi<}jb^M91! zM27xs_U-%E$7iqJyq?W$m#H!dk@#yFQM#w~SUAnlNv~q}iYJl4nsh+uan@ycr3fCm zJ4?S01Rnfy>=eYH7NP@8NFxtscxV}7K4Fqk3I`BO_RUR@Gxy>*ls#z+T3%8_KILtx1iMHELa)0wQ^o+cC+yvj4S}WWY6_LmIq^Akp=esN|wy#=OOF$ zAY$rO)dOaUQUQ+~P6JX0Gm1+16pO%Ty$g={ApI(xumQ7;`N zl>0!YuJ_lmj5Qx?GwB%kk=qcCGz7MgAoQ6<%tc*+n~DRq--942rZ??rFGnT=uK9K* zFFP>J22HAeJg&M9Lt?5g2QYA3uzW(>ITLBS;)Iq&B^xlY7Mj<$6Rf3hUUfcbQoww@ zy!>6!{#F#Ndq1bGZoAcr#@tb^-&e}Tw>3?ze&QpwsiOw1J3*VuP^!2}xb?AxnxFQ& zuktHfLR&801K-Rx96XG-ls~tntuPcCiTCF;n>yJZq@Hn?0hU#dgS}Jy7oh#FnHF&tWOnw)pWw# zE3copkdS)0fb>ukR=d{v2~fJSy(Oifw^OB~xbt3y>UM&?cB(F;YQNqZYXwXVivq8;r;}hCv z#{$**5exgCX1uK|-?F))#(bdTl?B#8V8I{zQwr$wVH{oKEgb+vI6VoSdcO_k&}Hf1 z0kxu7fFQzARr2hV$kXE*K~fl2b(nEG2Bf(HlASAj?+LkkMCP(OJc4(w86US- z)B0mr{CFV*R**zOlpH3=6G=0e&|Iky{2w@MxV#aO7^E5m*_=))z(>3zGv*ljk&7Ul z#f-JYD46=BP)}at5{cdbocRGWw=cBZoT^UcTgM1Qb&ddw1}Ln2dgF)+}@>KMrI!#s79+@&kC5^ zb@_W?Pz3tE11uj`{4q6={0?+;2o$@ZO=)Z{FKm^C7?mhtJxgul0oSDJ?oH`R3g|On zf3)k%5g#dARGLp6TeJ$ba|{CDCwI_Ldd>O1T0WWQd78JlZk5V$lsB^`g*kmY<@6V3u#gACD0?)5b-~88qe)Tnz|2vZ!il(REvHwN&p%*V;ws`d2_mcD$ zXz9HCZy3n;U|8@p!F|(#O8A;XWo}*5g9|=I#qO=>P>4#y zt$7gg+#Gt*t*r}BO=kTI!l#yc}kd~^+iu%anT#~ zoKQp$PyY@N6cK$*&AQq!TtZcG&9{`uQd*%oCk0gY@v(hl^HQ@w^11EEPYoEhb8f7x zT@Fo+1jl>ol^{Pn`#+Ud+iu%95PjEIOaLL0QZ?Rvjbpn-n_?H(?o0R0H4Iv&V^eK($GD;GIPWgra_BRWfTkT z={?5Gf}kKd)smp`Bb8j7srveba+(>Tu$5A`?0*Pt+`svR{e$2(5`lV;Ls_`DR_anp zq0CpJ6gh7R=U4-2)Eerd!G8hZHM_fWckJuki74o%ua;)+E)_cwLm@n(kH&<~SniO& zD}wDd69qC-W+v|Ds^StC=8M}aw0yl?x;0od$?ei57(i6il&Wwj*PAZ79uV#NbgC(y zA@r|L|4K!*#`OUVguQ1r(xO1`!^49lO4E24TD9)NYTWD1yfLDTD9MfxcX~suIPauY z)n4oXv9Cv@l8;IbP~ zfqQ_R5WGjHZHng7blMs8Q2|1=(D@kPkdqzdjV#_SpQ(u>Z;VppJel`>*Ad~2=xEak zdT(v}kp7+y*;-#mjZUzjo zp&aK<915A*!YZxGk4r_oIGuQvWg?e$p8D8|2b*I9s}&SDADd)TnyPm=6J=pRydD%)ksSON|IOd9?~sg6vA))8TIzw}*dZyb zYQt_^=^>sN+3{1I<|>!C7u}fAiGh~e$pH{=NzHf#V?1hnr6+hNtjR+Zg-ny-hqglLq#F4bTf3r&PQOM=Z zYLPf24kk1wGfRid>G3*9zbH976Z|&o5nq{{dZ5O-}+b5WV+TOo)et7>HNJ4}uU$l#53( zrna-YO}d??on0V?|883j5}O`6Z|1$uo0&iQ)`Lc6Wxy(OFp9tU=rP{kjPHb)O`uX^ zSU4sJZ>R^WJB&6 zyhWL?!Qj5|UN_6t_I;J5YGW~Bl3_0+XpG*t5I>X8x@(|2plogS${f8E6yq>aT33+S>JElHV}UI zU%{ouBxi}ez3d^W+Xh~X258q}>7JUxU?kciDv<(7+40uyZ{Hmy*`g%dveKexBI$m7 z-|=|lU7x>9qm+a!h^b<}Hi`#kZZ;{?)89tdgTdsS_`!(W2qOh~&%zZ8*@`@;`1~q? z=P{Qr2IL(6k~dNj6EU*L;+O<7-6+0{451<Nad&mq6$(ox8zHm*n%v8X@QOL%iGZ_p7O_)w8y!?Zu zvD`3q|5j=PG%{UzHg%|i|}2C&Xr6O78>-vNO?lk;=?6N3I~ zMHO)vkzrsT3yF#SnJT`bhLzvIsC}C~z#{LU%;)eKmMsg6O)Ie^Lqv>gG_o4GfBZ89 zm`oTlB?40Cdi$O)h+k5=x>_>hk463fs=$@rJy1m1g&nZnNZeK9ri&c@OoU6DMh zwNNT%G9^k75Q$F|gb!NH!+;i@7#uWQjcsAJnn(~mnvjG)!iF8LXq+)OgK7vcR%MQ0 z7%mDWB+24M4GCt26(iH>lz91C)bqkbO0Js=yWN2P*^CMzq#;=vVm4bdL@sP4!u1&6 zi%(c))*P!@M8%R3DdLU&NaR}NDi`+x3X`>jnqS$5a6_;>8L5Ci7k0PJWE?Zgc6>H! z%gGw6XYI5KiIVlvaniw|q@6fdaW;%LwQ_=Y8q3`4e{S!}ivh4r1t!40%*ZlJsGBqY`qr%Kdm(p!8wx0%?+O)`r}}H!e(3An-a@uMXDLv6J;9DEd~td*DzSBWATa zM68Ox5ULS4R=zCC?p3Np*eQ?l8^9ZADYkip{YCe1u6M{OJPC@WRg%3 zo)868N9v_!PyQA~pVTh_bRwI#!yl=Mwv1DF=uS7Z2Ii<_j{;Qg$G8He4{aAnC-U#; z1BdriuN7996KiUNdq-=q7XS@Z_b${QeWtKom*ixoyc>-bFP_#6Gysdig z?Y%?OgL@rI*AU?JOv(5O36GwG+{%y0`WmKg1Di%D>VV1yLNG-Qa~#y7R7~kAkXm&1 zfEv!AZ`?I2yIa3In=2%+vv#hy%_*I0uX>v%W8%H?;NRhF?^vYb#@_qd?2o6!yRvq+ zZt^>2)#~=w$%Nbr65#k*F39YbFtOrF3e36-5;LO-4pwzUafXusUbPuJpuj%p_}=W+ z8g7bU;&Pk5?!?yKUBRbAvjKu6=L!^ZCocwr8LDE7DdohcXv}o%H$3{(b1y&qn^i z4U*9ys^)-Ou?f|-{?`?25Q^wAwPb$z`hu{>N`S4E%EG&gfASVT=KHgEnN}-gvHid7 zpSD(fRvW8cuHWE@-}%p$N`$LjUq?W0o6`#tKLp9`!#aX;+Yejzb{5^%rVrp7uN#cU z{lA8!(P5kprjh#IrNr`B9G>r~HcU-vX5j4+*^f+VuFdrKUyqBznLKrCX#E!9nrM$# zSyu}>Wv%)?_#aJB%SuBr5Z&i1&O+z|X>nUyA819Px^XL%G@14Wa+8qEy|qaH-N_Zj zFq=7(^O#xQrY6CX@jBDEaCU~bd`eVSSCea{=2MK#1owesz$@9FEcICG+TXR(&s@Aw zm`dR(W^hB;cizLqbjt3~Fm$l+&QK@>7xpo?nq3T+NS?G{y`$s6+q^ui-`>|%YVSM= zrWr?FU|kKi>zFK#jvJY{f)cxINQ^Aagfmwv=$1;-0zOjm@kIIKITn^RWW7?biAMWI z5YQ)6umyFjz7*u8ZYL=vd@wa0wp$Z}_;!YeyMzNSDz}&q9FGl`(rZiAO6{q--dmt2lPtuNu_N2S z(Te}xb&`_svEl)5c4ud1_kL0qCFGb%Zjf1LMCM-HzC@dhqHz!mZ-HeIJSe9X{J?yR zId0*e`}c=6y$3?S58#%5@I@PN1;TP8C1kqX8?h=JaFv4;87hk))KZ%@cS5T^loC1R zwgPum-}i5yrjNg-9%?BhQjR;=aSOTd#1vm^~PjKgK`{D&oBrSU!yHK zB|l>+^&ZXatG140kUVSQiK`U`e*>V%w6YFRvKKrkbPOfEXrjZH~jl;8~v>ch|f8Kk2EAT#!(fjd`^^zog@cYFYdLi z>1ZB}FM7j2X!J)~nU}&ATFVGJjC#Z0cj@TuJMxc^sxeVxWH*kwjo$|A@`)+~#5LY0 zPNtrCHQCUfY2W8=)X)0VSasEE6%lg3qao^;c17&rBy#|ibgGxUPB|R`Pw`r;L+gh@ zw=t>(s9TzX(ugg0cyW4-q*_rW$giQRDu(*w*%kWh=~SI5X}D0QM8*6Dk|cof&U488kT@Zf_TbP0M*KbE5FiUHj&+ie>HRbpbH zwj@Zj(_qMdA0<0YVx$!e$RhQ~_xN=E*;Nh{%363V0(mWINn3~E=CZuXve^U*S;Czm zYv4Po4i$EAE#i66@Oi53Z3Ywm;H&jO6~d~mYmnA$ydu|C8Y&2Dz(E);Oy+m%LaLSljmKo7t zaDszh(A9Q}{?9KFURXvOA}u3h<3m!L&b}b0S$zob=xysF0PvO2r~vVh{mX#YY%)nZ zlY3%1U{^q#4bvgIPcAy)A<{ML-+zbTEbY$gP7p%Aj(xc6sO-WCFPb;(aPPE4`^=L( zC|NG0H4JDa6+I5}ID`uj-iz%}qDP;&8+=1Zkn9CV+6gsw$ zb@nzvdK+V}JW}h;J9drqt&!3LDOgmR?nu>8>sZr=^9uWVCsv&u*oS89vj3e{+iu%9 z5PjEI3<6^#rMA<)t{b=6ZrWX-%>qr{9K)cckxf`81&VTN6#n-eQg@k3FG2uE)LhOC z&m8jYyL6jEgki!I`k7Wd)GK{VF}rya%slV<3j8pDTcM?ZFBly#!UMcz=KcMi-lts7 zJ-DJj_$U?VEkc|p34}5|D!$ojU?PHqhbS@xE@G+nOmiv5kS54z?ZENb`hEWQ!`=PE zoe3551Zjy73lnUE z%KPpCJ=a%P_Lquye_#p>fDbZB&_*slUEAMO@dMKcBTY8h%;~Sk`Vj29|>RY?6R;zl&I+|Hquq1h`dtt33`KbbG5e8-J z&BJ5x+c<9uq(KWv2TUEl$#?=xh|xUEZkDs8Y#`4P0-KU0Hk29kF|mE zp3G@K?x{XMuyr(L4Y{^~#*B)XInA5}p2eW;Tr4XBwy?Nknumz4x#;(&&U&_bzEW&U zleQbFYj64#%3Nr_oFm($*RI~^t&-0mNGogA@-J^mX$uxqRyo^amqeVkplH;Y-NJ@g!u$r_y#8rsTzodi1D(4&1O_2j zVNNGJ9rP)R2t{}-4$`L!8~y3RvS@lSND8|@gWz7h`jPSs*F|N`oZNFuEiE=8YEA4| z*COiZX8WWZ)X-w*_NX>k?&6-M{=$YB!(~H-%jLKwCx4-t1LE_zItkmwbio+toQ_c@ zLXm~MLRr3k;h?Eq&(*C-T8A*n%9kOruD(y^EQ%h` zTneOW;jWj00m<#C!++Emw=|sRlh*cURoeQtbh!+3?tU5)8#k+ml&Zh=zsJL3aSXq} z$J9&)GrSf$yvwnxRC-?o20{_zj?~?-77t`uko7oN$(Et&xh4sfFL`+OgWymLHdtI0-p%ZCI=`D{ zsn$9aOf#%>0%LPyuRWuImE}$%HbJ63HYkM*j)ilel-Em4K?`_=!O*&HJhGslEWMSW$1|HVl5xuh4)3af-IVy|&k0Z@msXpw|uPu$Qhd6q`we zI+h{H=@qyB_mPrfJC3b5y%_}(tK>)W6D5-Q_^DVHEQKWF3LVy>QJ^L5|Hz11WnEW{Lk1 znrT_81kg|lXQ(qBjdH#MU2t6d0!1cYLH+X=*UuP6sT*q#kU?T({RIUueytfvkA938 zKGWl4`-#q6ueoC6LB8-yQ~OycvE~NY5!t=y)Jk}k@mU7{=EzC6GKtK1^4tv&GMj=< zlqiVI!<8L-cQUb?!7kZ&+zrB&;;-EpGr-*h)O~z9SeMTYsDSEB${xa&B29rjp7Tui z@ZPU2^8|iI_fJswm~mkUk(UcMC$~;{lD>OFgIQ<+Kpgx&IqeJfW1DpZK*PkZe(uYyFm^2 zrQ3p+IzKN;y^JbZznAnF_1ci9hg^v9B2_UNj9N}kF4%NxWtgE`bffi#cX^JhZ8R}w zmEF^;1+pabxmZLK_RFQ;)|Q54rc2}W3Q3N}FH${Yy2J%H%khbWxY$B?8*RPTB*-Fa zh`xn5M!WZzP?!YG>$Ub&fhkqq%)#K6#j%kO7H1%0Wj_duQeW!oK+vBCVDA)^9(0nc z4rfD&B7kh(oy`q7O6VP1ZFly?_pnvK2C}zZ^@1k!j)_gglwiSwyHi`OO4u4-!)`*z^KGHRWW-Tnk}Gy|_chFr z)A!_5jpkl@DoL;NE^dBzwujKtw9>`MGqxC(k{QsAMJeZd_3A)|dEjaKt5v8jJ<{ps zz&5LKnd_yPn@wBb%$<0>0etN9-^~k^`}@5AOyYx`cU_S4+!{K-@s85usY8qP0MxgY zj;MWzE}TJt*8hEYcQk_7wg5+!AeJWI4nu8y->%9+tI6d8so=HRY) z8DBx_L3?irsYQ>r>;&_1H=bKJn-7Y|&+*|_UuZw`27Ir75NQ0KaFF8;VW<`NvqQ+p z+vq=~Rb5ZpFcf{yued`PZbewZ9b(R>PVGJ%iMDGA>&tuVz3PMBX` z6tq6%>MVjOec-b);Bthl6ao^ZYr|K$113`tJV9v@xXhF(nBz*m2Q84%Ud3@8{Jvga zUftYYd8mvFq&?GT^;XQUOgwMgH`uyVDUv+7rvVP+q%eNxN}_Zg-YS6) z*HV|R`M#D8O-3~T=JUOD-l=)@ydtWWwLoSLpI!7b0($1tX?RoiE-GfglWI5S;jIm? zm_yjl1Km-l7V`da)YCdjQUd!)V`bqK?jKtuT`sA}RC}5DG{Is)R#dh!aj~b;gq;N2 zhOmG3eI;jS{)oU@X8z!12el2{f$P%dam%%%GdY4v@pKTuqR5VpI?DHtK2E!OOQ@XL zn2?uBi2<@fR~iZLu+XlK2XQ7l*!?uOZY}#?850(}Lzf%1w$OFkZW+cIuF%E9yz&g< zabA<2m48A+kTil_(0Ff?T0eXSf0Stb=+OX%9jR!jE5-#|3Ow9vui9L9kQ|ih>zVme zftB`IKi{Q%r+XG7U*)7(g>-Fr|4tT%#%U_8sqg+1?i(a&1gTY3-*MN^I}f%fUQZF zH-L2L1%qw#L`=QAuMs!IzE65c=bxHugB<=E;Q{_wtB`deZ^}IPl{Ic=nxV~2WpFRWI~)0 zpF1J#Ejc#u8N|K~sn^26-%)hXl^Yo2)%SMXHy>Zk{HkS#%4wldXR?d_s(devJ_SB5q^ zbe{@I2Wp29$fZ0N{_KQo^c2`3RuIQFmEH=cct$zEDjONoukY#cwt0DLmQyVUD6>M7 zt>k%m>|+pknpisBaHX1t;-EnuTlMUWiMB`0R^c6TNHfZ@IXUDdPP=HwTIoR~GyXW? zB#6G!@pXv8{r|>%nQ!w0om6da+At9Qo?mgQI`JX~+E@BQC&si%+d8e?r!gVdxe#lK zZP^YKRsHWfCm}HdMz;tNl*ySB zN)AA0$jG)5xGwWPeVop|+|4{xA~GZ!bFgL>V&REB6b@rp3zw2dSg@)v9H~%@L&_ON zkz_eq&B*u;b*46G=CenR+LxnV3L7{+DC^38Mzqy|QPJFgjN8urp{V_u6Wj zE&%Dq<8UBb)IrO?&UijN%_TZNyKZmXu6!%2L01?Vs(T7-TG8})!I~XI+?m61&{^Gz zN8O&4W01RJJB@iyH^M2l^^GzfH=^1ff0X+PlL>Ub%U@Eh>6Y;$@0_Ag?ZgYE3U}=< zUA4RRLfoD0tiYe6-%U_WOG7abyysWU!9!c5#cNwXidGQRi-;GYq{+4~m?j~+uOCSN zyZfFXhFo?slbPB1ZD|TTxo9g5SZZ*xl2akRz8cPqnT#-SLoAZygctIA^0dd?cJtj% z=W)n41|z+A%oWlQHf@Y>xtwa)HUgVGVsMn05Yi^sot2Q&B}yc#*gnvq*F8VoFJIr5 z-B+6sNii!pScVT>uyrfsaR}1rOJHzrt0Oh?G*->Tm}Gav#VYtfCFT>=&*jlk>Fl(N zc4Wp!h;hMR?@SeR6iS})$1>jrdP=+2#9Ab|4#jHaa?%W~lYU2Oiwm`4yQLw1CA~~{ zm}ENrPygf1dfM5X%@0kHPiq1(5XJBL6oV+PvM64y)|S>nq3xv}3lfuAH;_%jX4XH5 z-@TJ<-8STsHGH44_e2Sz{KdHj1`%4j7lS(VY;}F=T24kB+>9chm>ecz}gW z=ZA{V6XWj%jCsS0uYpR0qOlf~59iwKO9JUMSfkKI1mg-{SCWi(IRuN6wS&Q9d++V_ zY5noJPNNEAku^zhlo7N^V7rD;!_iR56%!%)rdG&C8Yg^bDuk02#voaI#$f#!>#y}m zVMunIg)_zo8&jcgs4D=T2%V15DdHl4S7>&O&1sx!`?g!<9fLHAvbG_u1m^b8SH7w^ zXxbu^#npZ_5J`p`w^ut( zQ?w3HAk8JYwShrVYm2Z<5+o(tX!Gw~$`ARW#Hk=a;*vWvyF0x8qH_%y@`4$RtuunV zv0G`h!_Ube2zniec>-UhQxbk+R$+z}Trys)%%n88B0 zoOXl-t4hO>h%&sQoL&$}Hb<)&1;3*%)C$e-(UPO~bW}@8WKX$K3zim0YpU5=*qs1e zI+U4(CMoz606o1eXLuM8zD^78S=Kbj;2kYk~KQ*Y&~>qG<5H zcs0-+b;H;82859A?_4Y~dmZIoNPH;gDH_80MD^Dv%9Lh9Ba^%qIUaK*Nl(dLyp{za zHPy1IXTP}UdL{^c(>+SJX()u+U?o&(X+x3)lA2)MLH~#e#9N**E@`GVjxtQk={RM4 z<_rxkN|L<{|Acj%AdgPQ$>87|`3f1&A>JgAZ9;bpww3V#=i064=-EqYGi@)DXQ z42MIoSWNo;mPxjuuBDPKKi(WoEG3Wo-+i{hx%`7!`NV<((Q|uVN|nz}w_bwwRr9Cm z&P&(t?+<-D?e2QW-Da#C)h`Fe+4z0uAB*nkq+vTJ`SLY$dD4eUiR{QAuQuHGV4K<| zV#hvRvv0c}6VKk=YM2bV(#W=fy$8M-jwhh|a2CDEcoW|q$=|kZUtoLd+N~G9yE1!H zS$)k9wV$Ova&2qjB;X%)Qps+@Fc7`xD@I%h2nDt3sX!M&S|N2gz@djq;Mfyl;n6 zfg2dICVnU>PNcbupi38?j0ImHkTB+9%Nz*V2+L}Z0=Ci@l#vdcsVzq$5|~g=KZ-Of(N&DV30BJN z(0-<09IJ*dcnLD+1?s~DJS8c#W=oPJ5lT|8jR&G!t=d*U8asbDB)t z7J;nYgX8PAfl;(+f0t6v-1=8(UTYqh;|_eEYC>J31T?MW*^(35<*cZ^Aa!Reagroq zc4*k2X{MSSv69vbEHfJnoUr^OYI*UOVeo|Fus!+#&izkHqdjWj;EY71n+`YHc}PE| z^TqgmlEMgXt_RUR`T>KO4N00;g?`iqKW=QKx;f4hMl@_x?%=GghnzByEc5q z9KyiW!S{JFV_5Z$7ZzI3iQ;!Wn?$Ikk{Vv7)VJeC_X@6=VFmck-QL3>r`@*0lnWx8 zW$h$TBn*rf_>dc@z5?7|piDbhI>O$kH6* z8WU)U!YSDS-UX*xrnSXr_K5C=J;uqTZP||3aX1s4*e0-iyR5T|w`u;(cJ3+yJzS{g!^UjWBly4BOI1;D7w__O1pf2z!)Kq8&#+QF>oR84 z`dvOcw0UBfZ(ffXiav#d(LtMren2v3F|I+NH{%q!EdGpHB;IYqUk$L@(V~ZExE)5dQ98 z!5SGV1x}n`-|Wb3nmTJxHx3-H#n2RnES+s)5-E_B9V7F9-;t8vBsx*M7Ys9ENhW#6 z=bn4vDHm^&SwcbxB42_|2Ad@tTNWhb&pwpQmJ_|`i17H#eWfLx9Us28)B#FSsu{ni>k?Y-D zb#L#xTGfO`fMdQQ3ty6uYGC73K}Z%<&2WZFB6%tTz>PvUMVV%;#{3v$;^W|ZNFu%j z@z8yQAXQwTDXH8W4ux?kgZiGy`E3%Qm&k@f?sy0D)8#I$eh#Aj&4H+ZXkHdLMNty;0i|^ zqySuG_5AGY%-!Om6XHxk0h>Fof4Lcc`1RfBOMme3y4U~m+I4rfC|P;ZSqQ2iVotr) zn&NgztECZ=Cj<1PgKBRvOC5Jr-`Q|QAkx)gf8XBayV2E6^&KDJ>)A&MhNqD+yY*Bg zVPzTm8t^Fc6A7WG3HkOQjHXJEt0B9XOub;~vo<$HM0#T$g&nQ_qS<+g8+*8zyHkIG z+|@dP*7o2#*qPD|=GHva=k6i?dL#pG2GsXD#1+MsfahvX#zY?3MxK zH3#l&R&~f3c|+w%RdbuF=ZEjjaK zJbOpad$B2 z4_ahsPj1XPY>&cMTBIHC0?;1;Diy41{m>@9Xy2Y$ul7>f9C=2vZ!9J~ggq!L!9D`8F3Q!u^-VJhn)9a2d@9w&{ z?@N9=aNuHy_L*++9DN~2GrS(IcmGa6A}oWW9DE0i5NHL6O&9BInnNsn>%j)8WZ-5! zwqcm2EC4)+oDe;eKQ2cIr`MNdC#>{I|0dIOQNtn%zb$Id^-_bJ3&!fSGa3-E&( z9=nhDvJnE76_Z^1O1hfO47d(SYy(Vo*dQC&dD`MDSnOmg%R6rvGmBq&o;j%O3ZLad z`y1V@jW@cicIwZnG+G|1#>an=ioa(2s#=m6t{*C~<<_)vSIW#$hM1V1&_CD(oL@_eYJ7uZhkt6f31doh;nH7eD6}n)c>kC4;p9^bs z(QsT#nXuNxy@FWu*BaKdC9LfH1Hg(Et^Fg>uwQa>j*B%n!@aJo29C9Q+IA@|s+OLg zGEFb#XQkY%nwM6R$d(DCu$aI{|abQ+crCEB0dt8*k|8!_dIvW z?WZisAV!`tje)URa67e|49(y}*!R3{3j!X(XK9s$?-(yJ#wFY`x4(O%{k2d-4_frV z7p1`_2=hEmfvaqz#Uio5WDKd`C=G&;bEV&y6-u@tOOcUnDR5QzJwA-0r*Y(<<|0M1 zF$*hZAQmpMS#B|gm9Pn&2m?mtnj-~@@tS=y4#izTxNeq6~@+VdGzkP0ig z%N?dut|ZkY=Qh{_9h}0#rwr?c@5Ab8MF>+T=dPO;zb(<1#oA$Kzni!hCB8Z4_?-R2uNz#T~&fIoBr|D z5>)4ezwlGj-KzMO9K3zMg8l%5ZK3}V9{FG5&e3C|B?CQ%}q_{UC(d5KgCv2Z`(Eye)q4q z2LqA=$4-iE4^HE?=`u7xvIa@|R2K##oouZ#$&r*DqsV{Xk(6XfmfJkEC}CLS@$TdC z` zmli5XGb9-^uwfeF)H?Q<8;oI-nkCJo8nnn>SnMBeEIydYr9LOGd)KP-bF_YIgaA zQEr5yt>n5UFFR*V@#Ry5(t5Y+wKN`>{xW+fxWOmmr*5^Hy*EbAZcuBsz}Y>jHL5%O zFGp>zNK+-`lUKe&7MWUicDY7wu7!{@`&XZFnD)=(?M;=--O-)}k?R%ix2r_(ExEWN zDPdb@wa9RG#bs{%f6J-EHXm|hjr^x&^{`Z8!yYpl_9%R`2JdL^YY(W6kB;1zPV>#0 zDQIC7b7S|FDqS;!&=*dL0J{*%Gw3#rs}t=s?qd6ZGx;NhEA%sW9-Uw*H{DK1p-S%y zm?Y<4O1pOu$(1|kSwE<$pT5QwxD(~LDQVFd>73-3R*zJ#)LJhhkP2x8E&Xl z&F+mtwo3V;$g|y4ICv>WVR|9r?M0p>sA?dmf6!r{p1k_4_zZ?H9s@~l(u)Rs#ZlOu z_s~~fGN>_EHlwy3Qri@oT=9|_MF&ZwRZwSpHqQ_-6D=XE(h~Yu*08RnZ7ZW|GNB0O zrmA^iBanu5r2Um^-nOZ3RjBaylanEQ3S9Z*=Jv_9bTQHE9yOv;L|@PpQRzLtccP+rhva81DE9-Jckg{Y-<2+YcSRxGJ_WkYr zDYS71-?zQbwCcZF@Hst0=rRx8GlVY&4Nq*6Qf5=ewdGs9Z#)XJBZNf zbVN*_Dsz%9N;i-@H=OqI)X!NKBq~jZ?t*R)qmcncxW76S?o3K5ukIN%woBTeFPvy& z7gTDt#urdYx#MBH$oGFezilRS8B^?r2e$k}=nU*ef&*+yC7!k~qtoV>7uX&Nm|Em3 zT3>rGVp%q)XPcVaeT2nsMx)Vg2Oai1 ze}oKw$~iSM&U?F;Uoj>u&&>XL8GF~c#dlX%;42`wa>j*$MC3d!Zjo=*w%Ycezx5Wf z2Ex9ECe=G|SN)pTwto(KtmoeU-C50UBe@a2>nS*fGTl9pY!8CHNNdk}JRZb|JvMA( z7Yo}ES}jUq+#(xfx4goR&pGTN=iG8iULc1A$kXIWQbn@=Dfwq+ksu90Y>}*DRq?B0 zvGnb`WS)=-jp9&JU!{^o=_p+#RPDVDhMmsN8{$U+IpC?_p-l%+y~Dw(SEABsgHIOXZhrJCOy#tdGEo2DF}9mrX>fS;-{FMnxt|4yh> zf4TZkL=?vJ_TVLrX$0aHFOBi5P~GV-(|@^IOa)(6L_HK-iJ0CT^CU~n_c2eYoPt#z zqdCh`Br?sTROeDeRH>Wud18zlj$`_f@kwrp4J4+8J&9oHlzhB6I6b-~d*s^t_g{YT zdIXw3o93UU`G;x#WtzX6=C7vtn`!=Nnm>8Bz;~MQ2th_v!Z@c=Bb(1i7XYHd8HKex zFBlNh-TApg;OR~!00@SRJl8(sX+V6R13qs)gekpZ3mWwI4TOC!^8&I%-qLRZ@*99* z##7%=1|R}5lr+sGCtC&UeEA!>HS9cq`f;cfISm!q+6uAr=8bN_3BFr~lGL}*4(;eR zk!%T4kuJkIptXy>v72rNLQh)5;gZTFi033!dTb5hDJV<%Y#r?)A6`Q~4P!+=+Z}Rp zfY9}xaZ8?LV~8@O*!j^&gG**n>Kk%+>eeLIbiHD{VXfRU6gZymRAYjX0w?4<(wI<4fpaRBZ%i{5g*h7Z4%hYr zbO3nu14I1K-n=9PuoH|@*SEkJTGbfC7>HvS0abl(8@nho?uSx_E6b=y>@Q8)Bk#`R z5FH%A052dohrN8quF1(Nw;Nf&;sJ(k3O_iW;J8!^E*c`O`*7 zRnnGF6gHzSwM+2V zJmnca@aii&f!1kV@UK345<+`{arpYy#^w!xUcYObcf4WsXGz+SvTBAWNcf>Y(k}V>>YD z#R===g`5wOx%phEt!nr^)i3b*70!pY=+8KM-QfRv(5?&iUxRjCjQ=TUw`2EnvRuk1 z8**I7B3A0%M{XS(ZWi{|SiM?k5%7yxdsi3biJ&QH#MJh~X2oE;vV zjD9$~`2Ep^XO1TiE}qnD+G1yiTw&=djAL=HNGf#o3cldVhE)mZ2Sp>6&|Z@ceD$8f zFtjS6bdn_`rReVC72zU<&hVZWH|3Hp7BELlL493wp=z5P#7bbnO+x+&vXCj(-)Ld4 zlJ*`8a9}27s&4l}-chMAjM%kRHnx15r07N&XOS-TsqNaZD@C2Ji9cPlC|>M9${+L( zKQD(32AKZ^4!5XzmSF*y(|1`~_?BL?P5TUYdIZ-!f+$$ywU4`D)8QP{yF-_+bRz)L zIE?N<`vUGo3CxrbnksdR8bc!KY$U8h~og3cW!O|Kg#Fli}a(&<(Q@C8_yw_T- zR?z70-%FO#xFlQ~2rAc5aC%c9vSmbc_X6Fyx9hdaUUMe8t0w*ZScs&*Kh40T^om7y zerdFTU@6moUGnM`wFl>Q|5@NJn3|K%NEHEtlv?Es8~6Fs2*H))x6m6`x4$+CV5<(z zyI95k!DH47Clk24GBIHhmPw_*yS@9{UIl*L6uX`F%;DO?q*-VdVz4r$Ip0m#Mq~qM zOnsn{kYLz}uWx;?@+f|I?71)74y5{dIk_2g9@ec70)AwisX44$ioR*Vx>;2!64w>k zIXMb>L}O!qYwnkCC|2I8lfKxfPJ?dY$c@|zhWgZqDfqQDawW381Q0I4qim7Ia3n41 zk&U|5O>sx9=f?PU&hn(iYk3WHr#kH`{ihxkFwG%0G?e)ZWGv^E zn1!m!rE;68C}M6-fbkjF(RTMpd3WX-1k(Dg`x)64d{Z9 zW|*Zb-{gCZKMn?i?~g9tpIshb{W$t`c5!-e(t?#0Sx0`azx0L~?7?80L zaRboLJnQW3BtPt!x}tKyxCvaYSZocT|AJb7IcdzsK=3PArxxv+=IId(dHDZKCHM`< zQn1OFnXJqQOS=K?k2wS)bgwYB5`9rNn2WqN0j$eJr4-f@8w5KlXKj+M!t7}xRtYwP z;;ZhzTzSyLcAHVD$9UP2)C0^Jkr-@(*`ABDLI-_gyD!}%e6|{#D zJ2@b~!XJ6ZG9s3g%=0)VAxk$|v{(ufBr_66Ax$_XQ8H)QDi9G%1|*GX0DbF-K1jUF z$=SuHn+qg0k75dafgle7C$k6zo92Sf$U`KSFcNXXS)PRy7|rMqa7G6QNwA_k4WRR! zrZL;l3}%q?s(F9L;+TfW-grE6VOA@U`TlJjgx~&vf8EglcE*xI~IbI>C|K`Tnc9?(Xs5eHV_{w$8*u?B)Rl4pUoJfr16 zUOdt;7c2vV;C1n;Q4oeEi)MfunyqW29~c+%tEs=yCnUrr3xjxBN1wp_GhsY9fJf;vqJ zfM1OYx)V_xiOu~7A<~F83|{k15~{JA&1%k)jbS|61)dqcKTT5zriSS>gHDn(7x$;x zVlAI`1DD_DbRI#-+L?#^o}fR?A^PrtbCvGG>-$Nk-F*f`t1f5#?5qDwoFR)~@_fu;>2jhS>a{Be+F z2qaw&8= zVjW%2*O_NH9m{ zX!Ih>YJHElifwoeHMbErN#%v2pFT=UryYR0s{&_dKzBmVnYZ^u=Rhe}fh-I%| zQZ}{G#oYQ!PfOPON{%bddwqi8(PmRzH5lM@)G<&-h` z714@bJcd+H{4SB&3gYO$V1OM-uLCw~MDoJIhrNEAC@Q-Cg|aAuKPHUh;m=5=6<%6} zX+v#X{*zOVP%5?Fjfq5+ma4G4l8Q5e zWZeWbG791W@p;BpvP8zfI192Fk#<77gaObZU&%~`FIgVX0AmG~ro*wUl$o^CzOA0a z6Q!OnJt^WdT7rpsVV+?m#k2v&izp4dLs=NOScZOk(||8wdc7l@<|mdMn)<=KDlVuD zEgDbTR!dWhfn1}RR}%#451=$3Qieo1I_v_p5ghUsf0f4~g1Yh%vOELh=WH7cETd-o zCu|#131`W=VT)<&6a;{(fY%x#%H(YyE(*h9G9cKJ(yB+5AU(rfW|jMJmf5K1u-a*& zR{pu4N)1Gp^-i;tDf;f=$n3$?{_R}3=*lDLEXbMmtMRs;~yJ}>e zwU=Hb#&)?1E$u6GSSe`xsIh{3Os=TE_Q>8ehWA&dQtEij==h2428_*LsSb>p5R=`hI z{i>_mQV>X_z5ZBIa0*r}kwe>}X;kZYw?K5oMS`jxwo7cMhQ=zva|>mi20`hmb{dt1 znkuep0A2s;Qq@E4x%VYre^*TF3Pq`ZXI$&bVozM-T4r})ja!sG*;N-bdm>g>KXpV* z%$21?9Pdm{vv3)$0o}E8JQSO&8x=59nZUR=H6CuZ^TS;BnN^*Ge|W<2yh0@cssfh% zygDaJfi@9L7A-Lj2?Al3JJsSgx{x14bAZ3gBCod;BIV=JsHDrX#b~7=hJWzq$zgg1 zIXuP~@BHHP<<;*O*Z$kdCl{?r{|3EXP|EW72Hjgq;Muy?)w8*VPYtepn*|BS3sWK! zCDdo(=tYet#Yo?^RYdbRTEA`ON!CFe z%}#ZFU7q)}YTWlRuH$uevQS!db&d`jakLAy&q$!JHFq^nT{Mg_AwpwLn~$iPME5$M zi__x!jwE{DAu|S!n=nD3*afHR?4r0d$byy98|ebCoIax!?r3G8(YEeEdcL@uN}z4q zskx7q7BDt1V7Bk7?)m0(w6(ihD>^QYfAxK}{wZ&4S~x!!FVK1vlcxP10$Rf{`u02{ z%ac-i9fAksb$|9aY%Vtzk@@=Ml6w_)k-gW9b~GaIX&LF&u~mpybC6{ZV-|k1 zT^M_iH7vC6pHHrRpA1QFG#plc7Ix2$8z>S8RXf zKGg`seCyH$}Q4acSxGidGt6m z!QnGWLY8GvJderx@52|v7tZ)uFSu3o-3U=;wWnARZHg}imACbCUEG{{QD4qXM=BCXM^s~`@uC`^8<^b)%?28E6p zTXjd})=^7=LD)fH|D0ZEH4=8Gqjf+PAfQ3ea|9In^v&URfW zt}>s45HV#u5*yEXtzkR{vwVAXGr9fUKfic;_r9hYv!zO$6i>0MY)11Lm=myxSPj@F zg!i&3y=mA!9hMF6W(>$yZMw;gx{E(1a__-sZ>!|px!M$`0jIbL7*H}pki|^D?v{rq z4_PE=oOoZXiFaPj7sn4v7&@9Rjx#ztA%7}ap2(}w33-JnGwfzySTKOhp9oAnhA0AU zoA)J#mj2Ti@H+O9SjTDOdwIB5cJ335$ypX`AV{X3ao&dl}AAe3#6ARvvM6j)E!ll(Bew23y3X@pz%KRdr)_c(M$*r;|cI&*ENV@@f?h!{M-7 z-d?&jnY5ShD9d-1tJdnX)`G0=#_Vx(2D|z#(+A0T<)Pkv8jvCzM(}|xm+Qk2qEGSt zFnRfn6}g%=WFK)1bXZz+Ku!;d1dxa~0~7lpfL$;E=Mn;(d0xac{5oHTpW@!*!@mVUov%BldtIxOo?d0Rd)!prYyyzpxgvn_!e3{Kc z!yN1_n{AxHg&%o;)01Zr_$2N8G>*XH`t>vW9K^il}#J;t2-}X`VU^+ z_dMrK)=6BOOZD)eY}}J+zRm}I|J~&B!uLUG1M;_$;nTtY0nJ!jZ`(E$e)q3nGXs({ z$42*;Jw(>S9r%Y$t7jsRbO7=lY!s5B2JG zx=2w>q67=#OC@NeLbXYWynH#h==H{@$d3l-nkmlEI})!*OjhU>*6(kY@IIpas)tVD zKl+giq!t9tvLrzfPd9?j7Ybn(ql89;NrEVwak0dTayCS1LNKhYC|Mi6Uw^*2eSdeW zMa^hJU=1s@#uCL;8+M;55~DR$3)rC&NuG&_fTEa;fM?w6F}x%)#jyATNfW*yBDmpf zM(3F@D#4#j);4b+Ba-S3o2**Cu*p9tnozX~-YS(+l5fs37HQHQ)m@gRT&MsGfj8lj zh&c&yqKIHv9b}?1j1n$0agdT}925F42@}dlNLWnST!M!XNhy)#5TZ-KdP$g)D7e;k zT}Kg-viGrv;2EEunqR>E%?b;f_Y;F?7TaU z(zd}lT5%e?rB~+HBJ5jx!%EIx&G(eWZuj=;-|JmH46u!tXh|QTY;uF_cr?tBM41M_ z=BTeLsr2FqFeZj!s%p zgt|z7^WzS94WympO`!UbNoSo1Iq4jds)A|QUlNrtuRZ$fAup`-9-t%^O7Xmw)sSeR`xz-Gu=G>iRzN=L@Lv5E?tF=_sCy5{7 zBnjb!6rpyoLq#Lxt_Zc&=JK5ayHco#Ug`SYR?-)E{g;+%d1U&@jHqbQSuH!p7neoA z9KJN6FPWTpeP3$8*$gB%J*kGs(uZ#*!5?PpPq^a$O_Stif!Ul)-61tHZ;L*W zzjgRk9}Ek^qe`^P@Ky+bZIMP&-+l$$T+v-ZRvf^(;ktD06lO6N@kqP%mcl)E^t;wV zU~ns!M(+T8pnVUGdPU0B&qe1a9kgShnb!!P2TkX7?*EF--OlBs?vm0$|BUQ^w!I%% z%>uWjSx#b~gE_-=|CKA@IQF}5RxfH5TOZow~6=n5LHMtMhOm}=tK_WlDckU>iW zF%X6C`4#WrpvCQhvOv9+X-yu`m^0d+blqn_JcFNHkqA>I};>*r_jMF>-0; zhBI>LlOY*oX(gVuQeJnIqZaXvq6-tH??Y%BIX(o!QIbFsG-n(I@v4D40qMw>jH|Tw zg;Fhj)USf9*qTR+4Ttun8(#V(~IEVm+iotdbVF3q46~Cwe z!8TqZ8x=TU&M--gs4+Of;2fQ{NAzE7Tb4ZDIfO>fg}7)4uw?xU2CC*DH5v+VfmVjl z?^!4LPJqv_*Xt$+o3_G3Ok>ImH0-AHsuhIr5R-2ORczJa&5pbCN{o!9A&jQ^^~A5Q;!Xj|U2c_BfRm_0*lRdHt!)pFNR%tUbk>78Z& zCeVlFYQ4y3+wEdA&#v~Tzq`4ip-}Q`|H(hu?Q@&Kql>oSqDmnrUovH^cQ?zeF`E@E+!7v>aDq4V19}`_ zXXpH((|k>QZ(yYdUbuj?2u&X&IL=d{&1k#AH2w~;!zVGh) za=!Uk<|QP^B{LXWX9Ra^w=2=!eu%DvAf7WF9Mj* z558yvE=Nc!DS_*9XGE4eU@8GAI4X-ERH{wEoX~0tr9?)tTHv<9JwGiUzWsRcRH=|i zG3H>)EF{7Ywy7K@uoW(+jIdyJWjIo!1g{7a2Z3S*+LBT5GnP{C(5#+ymZ2dbmF-2B zx+t|mUPfujzxQlsc%8_uNMF#bFA zw$o(vPikCv0vaRj5k%9l5p@}Eo@18u-=rV|L&if>b8!+?>VlI zu>Hls`%I_Vr_g!UvUYC=^0NlgMM1`M2=Nc?TY}+;T$_R+Xc2bE27 zq-2SYA7De_?Kbqa4R^9x#h-7Dl-VLfcP|CAVYL6%&UxC+eef66SL<%uHWdD^r#MS~ z$Tl3SO)taLt;3dWXn}1g(i9sI7cngzS%hU$C8?%H5uop|Jz<|@hazQ5j*_`R3bX+N zONZzBog4N2k7Zs4(I_~Clbo4Lsg`hx2`@1S4iDkE(1sNS7mEPk{sc}GGJ}vbtSm`n zB@E2hz{DC>OjN7@F2LkSKL(XRL!!qMIAhC}ppi=yF!-G>F^2i^ckJ7H_wYEq|7ecc zgY5V*!^iAVa{nQbkPS(B3K|W}8U+`%f*F)du@#aXGV);8h>~&zJcUfrZ>0)g8F4~V z@MMW8Nav>I8uwVR^b4MLZ9JU7^9Kdk(1Yx+^mWqP+ooL$Wdd)>I;MRdUJaGfi4+-MREilcMGzca&*jGt|7=5@OXG@U45N|vG#!ngBe+S?#}EJR zq}@m;E1koN;ARWdme5wz(bG;>?M6-DN$qQ+0t~Log36zgV}k-X=OUA@>46>%HwC^P zjE3+_jm8S8EnXUCDjjB_32Sby>89Q44`>Dw9}Pq`C#ej{C&el@_@Mn7YEsXGnsr-3gX zq)EGJDY~#Iy?MyoBi~-Dda-e|?u=X_*G$3)duxUtb6Z zU5y9Z`@zJUvQ0!~HW__Ol2&AzF) zeejXPe(qhvyS**_$)=Qw(OXxYm2aVa;X#j-I}$P^|~&;asNc5Po>N(^!p_;rMl1Do2*mBt7{1$d0(b zi1Vx-JmVd4H{d!3t@DFnt267}oT5$!;TdYPS)}#k??xUQV(1-Oy4UMnciOE!B<)s` zi?`(DP3U^2{nU3F?K9}_)cD@|uN?YEPo+rEBJaWev;Lr<&yZ$I_2BLA0DXw_3fzS!e+KRhut;qCLOKKw1<|@nD!mm{7cT$6vb^Q`YVaMW6&qC;5xq%*?4>Z zxpRc?0^`qK{C9-%_P*8+bHniU!+a+*;2O;T0hLy5Pvb@q{_bBf7oxLsO7NF{g3=QW zMxb&BO&qCeigFu!61zBFcXth!LrDD({fGS}on5~tL02r067Re`GxI#N`SD{GWtRKF zvW||9V9e81yv_wvF;6XP1Yd%L=iw@00>8k&fByqa2)2c%SVa)DjbX(FG{zRtL+%pA zV;tb(0k?(!xHf@laR$HO_86{LprTj;{iR$%Cir6hgcrlZN$g-w!O7qfipKvK-g&-rICm}2mmU)~gGa<=0 z2nlBWdEaYzF$RZ=tt6-3BF6w;VcWzIX? zWNPb_ap!hRF!udG=Y{g=m#&n1Ucc0j{oCj~SJ7xjzN1o9BNCMjXFtK=z_tJVsrmQ< zm`FT?$Ebpk!29>Gdsd3?tvC%d=zyyu4G(%45q8TdaUCw?U}tMt{%^cGHy80Yv*1j6 z`)8sN3b2n4g?$A~lS)N`KS7F5@W+IN9&gb58lcgd)0+}I7?fi&%ZoOuDHB}10rjii zpp0Cyv4lRiX>lt|)yUswXx~#QwozGNpu2xc!e4T;zhMtJ!M}1ODV?=A-p@rcgg!~% zw1P&iSFcm$=(H?|$Rr?#MV!XU=|xIq^2Bus=5eEmq(aj)UjUxVq8ix(Pk)a8jE0n%FN522%tHlgeJ0 zyNw7F4R@F@o=t9U@BGD;@84Z{=NI0@yw*rMNrwl$CZ0c=eD){jpQo4PNnT3i*pQ{& zl2_oEsdQRL*HJYB{EC4#YoBWY6o*2j+?=)t_+2u3LJ<3iDsj3tSwNJOaVT@1s1pNW zP!aM_SBVG`cYz61xk!z3N#%-{`ck?Msi<07Cx$+ z>>2Zq`c^x8-Ye>*R~rw8hEcoof7fajtq9a3m2d2ZeJA)b!A{^hlIb1~I#$=nPRQ!~tt$9~G{u?u`iKYOg5i5WVwP43Gk{jclAASE;w?W)IC}Q50C9 zKsK;wiL#lK#ZhO(p%!1QoC~0R*uEXWhuU;Kw zp)7;l-{Hz$mk8C%Kk$Qko3zIQ4L2D>c~~m<2V`2;EzdI^yKPK{{H;RgQS5+vXEDcp#W~%DU z)^riamb8)c@8ADGa|aCD=b3GzZeJm3RUM1!CqZ!^oFde)@FEs%=CsIaK`z-)PD*)J zDAtqH+IYN5fYt3~sMBo;7QB0J@QdfeqVoA+R@W!`6+0Ijr9k+rM0c9T?07)W*hn z@*HoE3#hsMaRU>{lmH{8r>3c4s$~wF1fvSN#qUv4pY(I-oBkMOZ;q#9hsBZzYVDiT zm_gleOx+M-P1^na{K@c)o5SZ{?O@`}u6CX4$BgAm3lZZun9ZR?--2SMPy)7y?oAbx z_M4KAEH)^ln)fp{t;J(0)@&~yIif=)H`0WN9t9REvoKL)*;p?7CG2y-BaQ(|%Ke%r z(*PVElHrV*baqPf+4x6UeZ?E45W8`PYZ{+81bUba& zseIPh{NKZlBuvM%;G=u)Fx`7cz*R%_(`>}>BVEZ;nBgJ8YPG6+bL1T7E!y|7dlo@O z+~tRjOb)Pu`wkSioxtjy&)IXw{L%xvZW@4(Tdg1Ar>J&8_nvlwx_|DyOb%Ul%ox00 z>ERz9+|P#_(v|Kcrg7JxVy-;*LA&+mqI(7IgA%();{*+GxCD7YQ6z>% zlPi%mMe=r+wsnU7d!N}Cl1s@->|Tu^5;?Oov-8Z`u3rAV&gxM#8O`VO+gOx&xf*@W za>>?>RIIENyW%XV%4H*Y%5HO&u|*_B5`9s5k*iJgQEtj)1|f?nOL<*X8!iILuA011 zVO}z!>FjgHbD;(0t472suS!1g!q8GF4?*k}~8$wVuiOy=xWlJHtVMF}k;-k2RMs{)d+RbyRi$T%(vZH;*m zou&Hu@420B}Y2NH&vcaCT?XGD=Qjshbc z)=!S`5K=A&f55KE7OEHS_RapsuTa~bUl`9GZ?dXN6v%2W&0D$tvVxbFp#5&?=1W%3wEiIUS)!Pni zB?y@QJ3V9Oy{65eC75>4ohbYEV(JOefgF&KCF(b~M4PHT4HrIT|1y(Ec9plRm#P8V zzs%-eFeFmII+3(85Pt+y1}}Z&Nh4%_LzRYt2B;#Iq$v-9ji=rg;ERGQ9ypt9Tyz}2 zoJ>a-$1ezo(dgZh{kv*d7T<6*(n94F6xM0T7NQ~DS&hI_8DCRc>zY95BBH7NCEO&M z%OhrGQkK~Om}_J&(YDtOB0)>7nj+N+giz0I6Khk80%g1q;8^u|0ostQkK#FI;Lk_Xm_lDpKn@(%EIS$jDzxFn)nEcKU~| zR;;e1%&*{6lT5X!@UWKqLi9k49uCq2QF=H`cc@;R+CWX-91hhfOER8Zv#Xd!GxP%e zD4R7yNy*SVfOn}2SS0g5u$op;pJs3FAX3HT9n!on=DnbwGW#uzm$ZF6qaG#%9}GO# zB&JDBHYlZ1VqjxR#HBf1z!`~#AG3-uf*Umga5w{2bwtwAqH2zJL=4>=lc}f z(so!;%+gB8JrucFV{E;4Gt+T+2G=Iz;M~|x(Lm1l4=Ms-Ypplicm-gLFMFU+=GlU> z7)Hl}CWx}v{L%P((Ag>VilcaPFKU=>`&6?R{^l3cwz81oH7!KGW4}3-7}z<9MwCCY zjxnX2+e810(TFnEJ$`$QHifV&)wfSF`}Vq^#V>r8e2hK&$XDt-r& zH(s#eeDQxBV;?=iJ~$OTWhQV#>!3*=oJpx?p4fTxQ8k(EEk1odH-mw9*_685vhgvy z*A_fCZGoM#Rfm?1@aJwNsFtrC27?Qq=Pk{`yKKgb174{wpuimjhCqQ%hvspo5r;wd z;7r{WF*^-d7}{6(K4VDQxaKnBMG=ctE6;9dtN%xl8~;U5FXO)T$Lyz{^hghf;iN8i ziMbhL_Y&ydi>5Q5_^|10hV6I8hjhJkXa`!H+lBrRTs5K`h)WHTH|sp;t*8r+V+ee|cKVzjxH!k*VVBp|QlI-kkT}yQM$C85 z&;9kY(<3<9yg3alDL8s49J(zXKPZxr>kHNQetmCzPrUKNk1K$0LQjbi;Hz=b&=<5D z46YMBIvU(%wPouzkH4!q)zBARV*kg8uri7m#oihW6#Yo#r_6V2&LJ47>3b zAKQJ8%mDWi*OP@FrO#*faw+BPWXfbt zH<0@3In|=}2*J6M$D-JHh8ctC0KslK05TU3NZT9-3VKy?t}oA3CUE$}IUd2obwIUp z45{R|?Ayntq_Osm;~58Z(s43m&69kIW5W7BX|uL#rzHLy-ARhB(pt*142a z7s9@jb-v0J^fzkJ=U+Gw6d(a{l{30~3KNTR9WAX@jMqG$$LW+clp$P$S^43$`> z*#h(m;qu}$XyN}B5{X6ygma-o3DQzPUbcdAo%=dkd`G@li5OdeYg&XfAC$ux;qY~+ zTLRJWL6VAa;(#i_urEm)^c4eO!qN=>{rL+DHI&#g(SZvAQH`MGpjs?w)d9AmSV2P> zqY4YbOO-?N4l81qRzQ`nGqh-=v^YaO$`9qH0TZd!W0)Lm43c~tA=n#jE}#H!@2g9xRs(bg^P=q z(`cE#@bLUdUMf;!6rESl2?KY8`#!@+Y)#r%VKgXH6sS~Xm>WCCSU99XH-AIVq|zvp z{`^Is<8buY7n{1V#p0o4^N5oMRZ9wlo@Hrq8nt=6zSNXa-CcjQR8X|us6m6t@x?mJ>Z6y}dKh|o!nQ3Itz~&v|MmH^S1Tl?Tl+WmT_Ys@Ic!z@7KudZ zQS8mgfqXls+V1L1cP+Yf(zdLBam~LecV&!{oZ+n~yMddrPuVLfv8_DV?|*Gn+iuf9 z5PkPoj3~%XlsMuwr9~7Ts6Z4^$_qu!W<9pIwRg?VI>kar`~!c;moV#FoKnk@w938=Hqf?dDRybvJ5G-N7tuxXhyAhSTxx;1-e}Df0mm|FTcn5)Ko%S1xaTl{L30T@2?sHMS%;>rmi6S27>mkPCt>qJ{*k!Zet~@Htlme0vn5 ziv}!yua#x+RAG_CQ%Vf8QwiEVCoM`2OQA8f1>zrxAdPm`6fo?L;nM(lpL1@Dl_BMf zZG2v;tEy1!6FTV#umJv8Ru)S|2!wX0BvO1>oa$zWmbhqpGHit2=s9_lGzofgAS^Fx zYf(E+(aBdji{ZkjBy_yp7owE{jw{znvRI%Xq^{D0rO-~vF^jItEq}J$J4{eI^%ZRM z#1LInzOkZ+XKlN$NMslUmrBcy7v-iddg0nQl{RDRSc2g4NY+kiUGxb`MqaeqHhnSH zUEGFQ)7=2LMZg~@Yd?8V)UUG{u93z~t{C==;7}Ib9 zJ+V$V53?RV%476$g%85ER%n_3N58WklG!OgaU;I1^?M^lQ8ZDQDF=ngV5#9bESLTd zK)919&+;b+7<@dwbaNX%!f|qUz!UIVk59tyinAS#ggMOH;1;S(=S` zm#4R6^qEPTsBPfXLp+TUkH9Z}{sHZl%dXot5Qg`BiUCrp{kFlwTRI84QvDcdydBN1fifAhL$uz z+fH-1Rz1p<`A~9=69A<_EqRXD1YKkVftv}0Zk}UkUMK1a01+y=E%nG26k5e1qo)XM zsmC}Tg-s_&y3*$_FH$)d@}5+&_OH?9+!r#LAhdY2j?T+agpHzGkcsYYn(Mr+Dz_zd zy=^7$v{)Pkr=DWa-E>9>&0RM#*|@5ty`!+fBys85wMsS8L4hbZDL+# zHkg1rFXJFzda`Shu6kT%P*o!ZFjwzIT~83lTx9h6&WPKQrxBl*nIv|J7+unKlmD9b zVqFcc|4NP)QB`ie3{gg);3_a`ZAB*R>FqBh0D%-8 zxx&)s4wGe;QSsZi#*Ktqo<8BYZKbP}iv#BB1&=A+pTvOSVViS(2*xU3949~R=<}`; z|EBH!7e@JSTN|SrG@Q?V^Y;~9rbD)iT5b;Wk;AuyxRjx@nfV=5&L2Uh4w=31##;x2 z?IeCd>(SoKy4X9oUS&V8Thpxuz4XUA^ue(f!_13)YmRdexW77A-GBrEpqY=;oFNcSJ^ zAKovyvAw(TCYy$EQ0_y66p``c8PCk)$KKt2n+%dlZN0L(x(Wwz)bsm8MuZ|?2BHqz_;DbL1u**O5OH2Lo6oxg8q!%0+HUw52$9V3G31m*q|8e;lCPFu=gU8c=CB0~sl1fzZU4h+=x1Dn;gTQitW8#v$<|bD7E@%crpp z=(J?A)WbSIG=}oylohCCgpb3(k8U;+=HKGvje!V*>GI;H*|?>QBlV}3&v~F%e-x4H zfI_={;y|3pUBc_oJgqg~zn6)mv}~S&tw%|)Y^Az=zYyx+x8vsug$WlzwLY|-F_fFu zwm<_63BPN*5ov2N2@1`sz*y5vR2X`or4;RQ=vPL?kVRTO)dG6MsH=3dY?fWEd{#AC(;5qV z5@uUQPL>0gS5*uyVSW$nS3Y-@dpn&}g)d*!sQln4M-S=Hr6mQ}y80?4lb{8#Y`aTX z6+Y)UF<|isB07T3*)S4*NRRHiR58L{X$4eD1v)|;#j_&_;*so{DX2O^eFZjU=iQ^` z3I4ajOA4XWfxUgOwzhxSe1m^mXt(4cqRjgEn53kj+4M;Y%4{UGvw{_t$=vHYr(H~Q z->KZ^y)T@6y5$LBBm^#)%xjIPZW{yoAYJoNHm68(8~a|7BZhao=+H6!AWe`HWz;EQ zm`-dhJtg-bZ>Y9dSMc^NSn|xYQm8tT4WO#7g30oxR9s_}3O&G8$HpDw_GDQY@8o|7e7t>(N0I}1lfVAV;@|coitnL z?nV3Pto6sC;eEntB$HLQ@Vku41(%U$XFCmh$Ek}wu+v1HEMs~8nfuW&Us{y0m|@7h zy*;F;W$u##&ZC0(0hdU?K8JSsXxhB5PRBL63?&OS&c3ud9mVuchsn}fmNRGK13mkR zD@dQuUtaEI#C$=6$hLM>4ff3qjuOmCpVmQjp*$QmX}6}QTKQ(gedkf$wXFknf^Z<< zW!I15c9C-gN_jyt@`DG;uv-wcnNS9`FcGLgnY)*OllH@D$ z%+2cdgsjrlHCe^c(iLxt-7TIgZsA;+qSI8@4Gq)R+$9uDP58!rpFE?zXzz_>s@yVtX zFYQzK`C{{M+L_PH-)Z;Mv`eK%Kb%BkF~Efu$RXFsLh8+jlxkB6Ij6|b)^9vu91j_! zuRUD#+C#*U46g&ftA3WVqU?RicXm9dD48vKtTf#cElpP1zH*s37?7xsG9l|D-@l}< zQJ}}-FxQT9S{QF#UXl$DKpHQc{@?U*plrz!yY*DeLcdx>@PYM_%t9Yqsgrq!)1=%* z*8L0ZRoiY8F%W(CSBwPGZYtUpub~uikpKxHgy;hTlsLPyyQUj^v1chEio`$ghkOaX zC2`UgsNf0cOX`{9bG+j-3 zHn3dIG?!(&TDck@8`4TP7EN3?NDd!Ek!^b(GnA#(PRg!HBmiu7gTF5 zxWHw4o18sQU11q}TEjvOaLy$;ieO{w{B8k!rUrr;HbP2QO?$7Qv~#pz zZo7n9> _^c$|)(BkbAI|2mStU=1N?J#jV*BB2@ofQSVS~qL2 z)q5;yht_wpC9Vfq`cBM8u(a+0&`5)p&^U0?&h8K|0+AC~MUiOEcz_)VXL7gek2J8; zOv%&!bt2bo&3(SKGk={g`oPtqLR041b3feB!~yIw#LZd0*B_VF{btWKpBuOfZ~WT* zWx`CfDBB6)C(7XN31p-Pdv9Arto(!)Jq84qQdxF%ZcdTwx$jX;^6i_%C_x8<>_bB| z#rcBm!+bEJ-r3@~-{9`?xL1bqX3ycH(T4Hxq(xr2X1i}+FQvujjsG4X*Y;J*;Ar-q@QMva$3jt*-oUa$Hs4A5Cl|G2W zCios|A%$tL@J2G${%()#bnt(#T;-MRi*lJ+*6F|9EIZ@*pES#Nl~mhq)G!cz_g9Qm zq-3kTyl-hyfd?w23ZeFiqK!!=S<}R}JPuWakoX7wkS}5EY?^GgFIY-8b2(=`p5uM} z#_p}yoC|Sw2Jeh6Rn)>7FdG6q!=0+*s za@)x%_bBrtNEGRHQ8=E}NsSmhN?jG9i{AI3!r)ViOWFo6W5D98)22 zzUz)sH!xT3)FQTwITWms4|WXWiJCK=|LX{TxU$9DLlr@$jU>w9)M^O zG1;f-LZxM%Zw}E?%JNcT56wwlgvLdLT+2UD(h$I1K-E@)8VJ%vZ*4tp-B7>+V8>9}rH>OcgXnxM`b8P6;vN@bvk3 zPu23#ED75+)7_&7&2pwUkGEPE42_{eJ?er+YnvM9MV_T$eJ+z z!_4E6>NuT$x!vjZGy2`>%@_Ku$Bo*>mEbYj0=t@iZhn=Z>VDrGR@FT=|EaEfobH3E zTb3lqp8&Y|FNsFr~}OM)&L7 zqoaF$cAmvqFxn6P;4H~FETjS&MTuAfQ&Jc@hkxW;4};*70Ty%ipbMWU&(efZ!!^v; zU}6qTu2xh;kWpnoE{Zb@9l}LS#nL9UCmM4^dCK7_NmIzP2vd~dWwjyPNO+35fVIrA zAcpeI^wt*BN3=-5)10R18Wdm2$I@A*5lF#@aH~1oyG9Q9J)V{@xO(KuhF4LE!4`LR z;6jQ;vdk4Vi4;L_0Q*(+iKSs54&WyNR4KZ)J!+${F^$cbxaKQO1lMJ@TTPcd2=4Fi zEz633%@f6eFmzPOeB^pYBRLHMx-eXYB;r{r*C#q>jB8B>=wCt5Yr#n0dPY%5+Q86j z8UX$y`{4dq1kcYbSBeXBmr)bHyujWbp3M_6!jkwCxlA+_^{t$!T)<=kqliC_M2Td*DNHLl13U@HbeD8(|?NQt+@*T&I=`CNwSR;Mg)9O zU09-luQIbP&XWa%?@-nT!d^*Ll>zBGNH@vp^ zr;YEW)ek!JZ^&-MA-w+e`tIZB%R!UMHL+V=@1IDB4Vli$JorL6Wif=Ugj6@_+mLrr zKNUQDTblnS=S^6J%Mp|4yQ1;X1$oWee^%Ow$axc2(Xat`>T*m8d*Ev_n;`;s<}rx( z2;GbHQu%VZ!B^r9uT9Am4{4iZcC7^&uw*XV@^O!>){muw$y^|`I;aohF&wrjc~Xht zsR(;l(!|9KlwiGaj<9Od)T6Jc(Q7fjMNFt#`x>C?zG$z6BOc`g?>vgOs6Yv<>1b$fZ)!SSvE z(n{C2bF+OgCAvss@7qsbo_B%cwOPXKp!t?)gVf?CV-oL>8PBoM%cTfAm{$?j8Ui_i zv&C|}RGf=bnOW)T@f?@k4a!2~@8DdvW*qg$^0!Sw-fmvs}yma4l{rcSo z=)PwhA~(f{OzYW9$qHYZ;U(YrH*A?=nX9dah_1JuuMlRu)$+vo!)sB+b)Wj(a~4Y= zJ?q!N9zu`U&D^1+!-$P1-Q8PM^uwyC!rhU*)vMS!LA^xWkSn*NW7tiV@>8)iZGJIS zv#5pE#_4>HVP(Dn91h^9*f3;=yd^_xvDcpxNbvy5bU$v}WNxj)yD>Vvp-6Q;tsTn= z2;&K?qT`B+L1Seb*7EfoBe}?I@&XmvxkIEW4b13T3_wvZ9?Y5~mt+7$Hvh<+YHjA@;0|j^otN&mXy^MTbNmU4I#XdQ!HHC+M%Hf9b$0=Rw zfG3>%+UgxB+`-R}zf0`@io_W!m9G>2^-vE+bCWl267Rp#9$YX+TaR(9v&Lz9N<64! zQdZBl2iMnhwv;MA(^H5vBiXinzM8I^q=)7G0j*TqYTPgoeb-kE&P8%quSp*_O-g73 z4J{!g4HU8=tJ>qW8n5I^ayF(7^dI_%{gO&{ych50tpbBbI&)^`%t&wFm3c|x1G2LN z@0HBNw9?!PB?*aOB5|&<5Xn6+%X^Vd;P3B0&}~u!ZW~0}LyG$cthYb~xcxP3iYC#b z^x<0k42|Ja1gpTHTqkyRsf4r}%vWdEU*Poe96AK?#oTxzLav2O5NcI{$yHUPpkz^l zR90j)T;Lq8JPW7{IG8F)Tmo5DK#FCd>KRHq0Gs17jZy150n5!p$N3EbpD?K`rl7?% zx4>=V<}w-*GMP-g$UL*C8EvWQ0BDbshDRPs2pq&ja;HVfUG5(mJnADtDzh}lH&ztF z*5i-XmIB?WLCa{bV=hcq$;2xREQFr~+_Je=bFUzb&z=%&^k?+4KyGjV$;%WV1U<3< zO0HdAu8g5i_Bq^$y3*0Dp*7k{OVE}4tP)-nHKS8up-@wZBpgB%WlGPuJr4G`9KoIm z;1^g8V;YPpxG#7mu*OGW{zKIKwE*34`Np|f9(D)AM9sVl@uf3*;ae%ttk2eRoIKQz z4%_Jdw!}pSjO{x0&r>*t>9z)kA?)vi2Z>KuZ$UNJaRKYf*Z?l-3&SqDU%M%{+<|Ww zJAP3&iJHRkNlVgL;b0xI=*R-L*{r_L>iBHBt)8xU-Z}BR|MoJBMx`>A1-Y}#D2^9Z z$B%Dfr<)^d-Z&Gt+Q!TNnBjM$WDu_96`kbBQ+IiTuhD5KA}4e(fEUU8&>t1*n%&Zs zp8HZ7A@BNN|H?5p65e`tV@KL;nn&BsGT5*@9BUY zwoC8bxn^ZL7GhC?L@hId{QIcHJq(xu!xGK+`1szp?{SKz+nVQR_z`$?r;<=yU}N^s ze>(0s`X07zh_#CIW_yH80$K+BjcM5d771Qa7Uy|^frPBk06`{77nkW^D*dmFCo-n* z`#KUwq0}}5#W^g;5(gCeuwkHP2aS>+9cNL#X7gGh#=y2SjGl5tOYrlKqx5Qws%e{5 zse;GCwn~L|16Kq3B$ARCE|arUTe&OeO<&V>s){o7bsOt?u)%xe;Q;TG%U?IpV|L!n zm_WjP^HtogGSDAOQNT%)!4tC7rcZ*B)dR<0?&yX1w@ZONu_$A)6JV|kLRlcrC}T)I z?{qGU;}S|%ywK^9i2AHr9)?v4*zX~vibq~lpp<)??n#MY2?Z{z7>{Std5>zNpCLFt z0fL=XZ)I5bfiTvVRHqOR#MV(hn1Qlwo3}?#z8jz+oHfo|trX1X_MgoDn?m9C$qsP6 zCepE)J|fC=yTQwg*4F&=YTeTs&tL6VZExE)5dN-TaZ3Y84jij%hha#Xwpp8D0n#K$ zIt)V^#I!_PoF!5qsW?WF{q`N-^x~#jffehQ8G&OR?~TvhJ)~Z|s*5^GccSRY6L=%| zoGltjG!q;|ZT_h!IxNfZ07Oz?9CSe;v)WJ-Nh+$TglSzcem4bG(~Qj-&4Hi+M;l4j zkT9+^B{_(>HFw%KHPOWsZi!@MR?^YLMr(b#fIBWaDR;&&Yc#Ay0~tDYf!4-d1uLct zAds`n>Pn2L1!M)`3kqc5bQB2*vo++jF2x!%&xHmqwA**jOmOOVj)@^cPvG1n?OY); zyM7lF%5RwzyrNuBJ84cd?LB6Fc&BhW`FR3aBPAMP+LC5kVAf1ocxoyBL`k>M`O!o! zXg`jkH19oPc8bcLK+;Ow(p>~$3Q0|r0$SC24N6PK7p6+Lq-^MDxJ86>bDzFimmc@J z(@ZR!bJCRBi*X-{5}6g)2Xn+5yJq|R@cpl2n54Iq=R&44lo6i8Unyc!)dI8bE%|hg z?nqUa)U-{b$bv@EbUHOnyX{g!=x?xn6db@+1Q7R15yQbth;w>NOHo_F*k}yu;B+Qw z#THJGP8?|Ks&wiOZm0L`>G$~e^!d}DoM1MI$Rl<{l6TanGhjYpR~CX%jJtD(~868=P|^7L!ayqs7n^7?R zT_XA9mPg>i5MhOTilSdIuX!WUg9M3UGm$vZaOK)i$i;P1XkDwlG;Kwr36iz*h-0TR z$vi*flvu74O0iiU~SMUwn~V#1KV&lHm?QU zuGj(Xcxa5h$TN2ij^Lx6VvVPg`(-|E(5<5bu(J|K0O#5$++(w8oS>v%ZrG-y&pF{u zS$fmR{$q1UdK%vyIGw%&Np&MRY+0?X5SW%`qS4y)YZ70ZwSY04a^x1y=w?K zw_9pyvi1$(^1|_MkUrLJDWiLPs<`HPN0!u&tEYm{l=hwwt`pl?m7gLjfc-*3>Xd_~ zyAf_1$~8P@Rs&Ndj)zCVwa3Q$9z-{J<8Wq;rnZ&a&UNPv9@;mUN)qxJyMUv}f#(_w z+i$UPM2+Cpo)Zp^=bq7GIM+pGZSvlc;nhO#A)se+wShw zACBN)f7Z&b^C3NOt;&9M-&XR%uBqOw-qb@EM4Qt?to)Vj!7BUO zdA&35;e;ve4c(iHKrgCNUuQ4Ixcz>XC9}R!CO!>*^_UQ6{SWXkd zmNGKueiFa4w?75pAan0QZP%LnN3wBIe2C+>4^K|cem{D9b9Vmz`0Vu3-=^JXdesq<%5M?V>p_KbCy@UMY%)9Hk(aeE31S-aE-okr$y_vOt@A~BcB4#YZu1G zM1p*>%p3+q$*eqJ^imLq4JNyfdn4Sz3=sX){+3jW(EpA3)zmM~H| zA28E*gOxYAK5zNw=2|Pb@-Tb-2fypCgSD5b?)w~R5bD{_KZ`yn{Ra=@G2IO>+4m3E zNBRcUR?TwTHW0q!DYo)~lt!lHHf?ITb*FU?@l2a`;&^&!Iu=AOMZ^@q0$?1CMl*ef zzG0uF3lNkjTTbk8dx#E}0qpMg;oBeRoA0WkVxs{&IDm6$EH6tT=Zw9=KWm{87Us|* zUl`DsiV8tUSgKmXG{dS?%Y?kAkc$#0j9s9us|h{F|>>9MaICf8{JIbm^`L8@df<~7OEJC~_i zI2ymHXU6&cXy`z&*m3gj8;37bx* z?nH-NM1*g(n2p+`IKSwG8MJZaH?D3PkZ1@|VQpn5qmim@Nn44^bCF^~v`4{elq5;i zKXEWDAUgz_x;w^E!_$TJI1{O?$d}HU=N5HqFfnzSqA|A(H~V)Sa!$3A-LZGu zq;t#eIO)TMs2U+tx(On46?+yE!hI>RLzwQ!Fol2q`Wu@16>Y-88PvKQ!e9`@%?1O? zfWrcKs-8`p4H+wJiGfN%9pILra^O`(Md+yysSt8rmlme0RcC*_?#99Qwh7}!3MN#) z#_&1C#YI(8*$rXA^>wChB$&FYl(v}dyP6B97hnob2P$^>>_p^h9n0w?Xr|+`}Q1Oov0*c_4?b{|7jP zg5BV638bo2xe z%QOuJN|sCDGb(17;ao`RM`|8Qz{LPgBf%EJ0KEw49cacscrJKt_G34&+hhXLpu7j$ zDz!y@^sMevh(^==+HnV#o9lSDP4;C`|@#{77UriZJCY3Ta-V>(Z zKRkVFl>9+u%lP+Aq#nIY3-sdk;M-G}-reXL@(%(s)Y!4FIlpyy zs$`0ByC_7Kp^Wd-EOcm7dh`=h3RCRYu`>xi0X=tX>|wg@w9@~h?{;?W5x715Bm~~= z&W8!SGix3%@V}K*O^=%}5WV|XjI@;?C>y%hYFNH_tQg8D70^%7(-dxwwEgQslg_iW)8jA(xPpyh%%H4n{sP zk-(o{zv0e@;PVwwYf2bWbF7lGKJd(=@7)64?m#LKv}SW$&9tTk^ElYCrjjj;!8K$o zr?xV{H6(|wvzn>CKe#Z$xF{g$x<^GtTK0Y7nt-V53{?d)eIF(BeR3shzsYXobZ8Hq z!%|sE<#F$Q6EK7ptwd3w7!y%6ue7Qfhxk-7*x$b!HgJ#QFu+9CNG{BRsx+q2+c>5T z-;7L~RMzp2s~8p3@mNjJnZ1Ad$VJMal@@dQ*ys0$V#azxBmVL8_mQtdFkcpDeY8WuSOb8gR5&Y5Pe>9l;<8(wkKKHNE3ICELeOc*T8!951~k$RCvi!pmT z0%wp>O+@|oaXKS&jt>L>qlH*cGN#io_<-7QrYE=DpAf7Kt>N;v;G>Hw@23o|0v?7P% zR@5%DyR0n;0{Rc_7xqg!yCfx1k{#P{-{Kc*hck0#&zu?ZyEl27dtuvq_6&}NHZ04y z7i6t=R}Q85%*v@bz>6 zyWoC6B!$4p)&$xp>ML*opN=lh-k+SF_fOAGe*JCPz^G7JCuP^y9gShehxQysVZ*zV znn~6IVrBvvA7htDwj6+K6(w=F-PhlcMayWcza?9tQFU{s^_5id_o>vT`|8EZ*W}`2 z8)R{lVMUgejXi=)faQ6{BggIzbt+*+W?(Rzt=Q-DwN!X*%1o|Zl~>Ii^oWbUyD_Qm}Lp#85F2rIg*0-=57#uB5T~yzOn4uZt+6{43a%WdXOSe#zWhhqj)* zj!cTo+k%uZo)rpLkSfaqkZhzI%394AmLbnOPV7j+6%$siC5=-Wm23)ZC<_Ba9C0Bm zPt>B4vn6*CY{vF5n?!wH>}hUXlZLi`)Qjq+9~C#GtBiyH$cM_=`tX9k-QH zGIw9>GHM%i)k6zSO>c*uV5HZaMOgI?)t*NxU7Rj249~ckUcRI8<49p)2k{w;823Bm%vTV;9_3 z9Fr<}1p=?&vUeR}Zl4DJX@*RbY@=$IB0O#8dI~wC0}_{=x{xMhwKE?Hw958nSXz|Z zAS*ik+umY6bV|P0Xls$(4>gIqT3G&)_-c%+2kWfULa+_H_d4@8uC=<&Y|1Y#s?8Lu zYwDI1)kHYi$Ec&g|LAr$z2It<*@uSdaj>y3wl$k45Iot&D><`FW2<&t%6`wC=iW{6 zE84nChUazQh00)mt;bd{uETF^|E)gy!-8jV|8s$A3c(`rp;B!1Z2$ba64*b0?KQS` znh}ovO?PKr_a(7w>`!EjF2eu7)Hs$`MBT!#<$l?2xtpeL_s}KFCDiR&l-2v!o|e^S z1@3df3WMl)vcK>CFKJz7u72$vki2AWg2qS54s1)>YBl?@%pl^xjj^-u9!L>kP#;nr z$0&lb;v1w`E&pe}V2svlF;jTh!uRo_k3{{fv=+iv4F z5Pj!YOmhJx!H$6f-2zVH#bR5a3v7z)r4L0CB(y|ZL?lrWDLY0s|K8zEmgOWZY6P*! zIh@Ox;gQeY*Lh7Q2{}AGgin>ytSCgaB;@Yy&RQmr@w$+k6SE=>e`rO+fi^r9HJ>zW zJ{Q{9=&3nEte=mvT8L%aFfC*SvNm6ekTE2QJCG!hMBY~xCsSZ)%4@BFRgkczVVeZj zLg%1!4ymjvo?2I;TF9n!ZncCf=dFCWiE^#$>148AuTR3}Nh-@26mM3%LG(SZ(0vA) zvl1#+@)JVH-?D`igVv2)iHrj)lmv-U8xwZFh$$g}W#m%n1RpZKU~Qp6C@5sg3bStk zwQPofU*7%tv$eIDl8HaCC(D+jS9hE#wU$lx1|-cH(oz^iB|FfH6)hh@#d&53nsZP! zc4{GTy%Nk9WgV1UDYo3pBKgg>yX2KN9_Z7NDe9R5l8`(dAyL^gHis!tEjCT5MO$1~ z(NV(-&J@37I*${V;%c8J^4ef2t|RI?M@Mi)06)~6r{)RHXFxlK>ByN4$y>AGH&_D2 z)LJZS-62oy3not~b^a=;#bPrKn;x_3ax$1nxf!#%rsO8>jsLfHxkR@}`Co=%LcWPA z<*>n7Q@L!547n^e-~zx`TlB>j@R2|+fc41rG?|8s?0vX%8&k*D9cZTRgJWzsf8=Rv zf;VEBYhcRwR!&!<7@ml2uvkF!Q(EAV-10}Ew2J6|$(_c=1Ne{58@a|yxQ6Sm zZKXxYe}6RkhQR3H3}wlrHM_JI1~tu!E?_GFS-r<9&n5u_XGZd7Mw<#&tXLx_h#ND^ zrx5eAiM2xK5-+UbFeu>G&jE5^GJAGa9yuL=b6D=)J2S^y9)vR2(u1$4R}6ZyQ*8g{ zcMjdwZH;@>hqhRAdl2MjV>&hHcs#?eKhP3|=oX8#EP3!~7p7&X(7f-_8a^Qnh>YAS zhW99Yji~e@a=LY_5Imr6Wn<$&++Yn38+mMc{fAJJJ zdmFY2NyQfOKUF9Ex(Q<8H>P{iv-@Ip1aIGzri0xZvOi32j(YRso<_sT=~koR&~&Rf zKJ`NPf{KM-hUd2MT~QwPaRh^|^)|LW>Z7`j^fm+kr#=V&);aH|GoJbFPSK7^wd^J7 zUuQ3A>#pDNY|fNOZ|inm2$e_1PcNBnj9=Q@Ua85`jO zy+|^-PCIG8ijyFC(W`ySi(YfH*(BN^7Hck&kK5l;Zw=K1KeBaIVzT5#90bAFc@Bo@ z_s$0ong+pqKDRC}u#gI)(4U862s6I+)}}%lUTnkoBw&R>)q<-!qFSNVA+LhqI>e4twO^yq;#!H2jv3oaZK3MJPtzqzqOZ4GR1Z|6gyIAb=D z0pF}C@7g)7KrXH^Gq9l+1ZS9u9B@t5=sjE_^)46GBirC;b0HHMvobqPqFGhp9H*;{_p zAbHRcKU+T4`rn^OFiHd4rMhAn!kcCQoCE>&c(=VgH@xI#d-)x;14ojkDg4~hzf#hX zZ9#pP+d*s@WJw(iaCo0LpIJD(vXqR%eja$Plel7r!V`oD)6320m-b&8p6qh2Qn7T-D+SnX$6mMqxifU^1bY+#pOGG(N!p zhgCf`?&gB^*w*0eE!>?24bR-TyOxV)dp|mly|S~<_K5r4&q0IQFl9Mtf$ee-i%LnG zx6m&JaXakTA;Uc^`S0-9I=UQ=B0i>G5rvxw+T}4gm7@)~T^@t?`8n)gm$YM-w23=> zMU%~A7xWoDd_|XL+c`PvEDC?L1A$YsbkpC)X+Ni;{h@h?3%r2n#d7GAqhO`RxW)F| z@vOZKJhK-v-x94aI#B51alCjSpW|LXZG*z?%oH3pS=`lk|g1HAL&gw=z#ce7Wex+zNrDT^A`HY z4GJ!}UJdu^&fEJmJxhML?Azz4c_MTBaEHnLCOCO?mv?-9UR~bB{_nK+@y70qJ+8kG zr11aI-~AWbK!dl4=QEU>7wUO6>(h+nry0h33H*;+^)KyK%W~T`6y5VHZskn$7+DX? zZpMn`G)))vrqh`wE5{>2BuFBr0EPf7s~XMpANq&=l3qM0LaG$U%_`GqVUxgp9Nc^E z0k2-=X&&@D!O02SaH&X^F`fj$6@j#%@uZO|mCJFzFEbL}_d>Dg3sS1Ium6aG{Xt(n z4>Lx&nzCpz9FAU$&PV6N(f1dVW3;}M(~&=WkD1ZJP1xFgp%Wok=m3QF~IoZ(c#f zK=M3uS-RWsv-R3r-)ua@iasbCW(VMcN=XuoOBcG~v5g2Z|}nFhm$0M7QFhawi-g!s7dD zOg|YQ`-!WdahV;!5EGVRA3O|hb$eIW z0w?~RCSwrX#IO=2ED2Y-gjN|)OR^P^IVOTRO&I5zYd8v)cp4WFEw3p~8R|PV4o}vd z!?|tRnnIvQ{YY*lM4gqyiWXJUu?w)De7pWRAS{QTn%OaLKe1!MHZgSi0Vk*mISDCP z7SrNo5a5(=U*Eq|EMsc*{$~_TMsc^_hc~qj=H)zNGR4O(EK|x6a)$286T+=()|!Vm zV3uKL0aHbRM;2#`*iD?a&G)ua!n_b4XsCP-qmtUb0h4SB-q7f2oj4*VQTDm#Wv7D39k`h%B2QIgZ{#n(1xRt%OQ_ zo9}D+(V;e+(Ar{dt6E(A#v19tv?u4$EQVH-@!v_t^f%BwI#hc_pI(AOyG8F+O)$4lWR!!C$Qc1%rwRJt@N62WP7t`Wfy(3 z1%9F|`IK>EdTV3fS%bTm4zFzpVznwY9_KiNtpf#Uw@NWp&;(W-UZtmI}Ngs$NnSMU-pzgDrR0fR!7(h&f8_VH$YX z%~wH(9VvX27Q6D`n>!)evv;fCcyyRY^@qR#B2~Lz36Xa0#7Bv=dx3o8$1Xprd-Di0 zw%cC`HFiIF9_7Z~SHu629RC2VQ%#SXFc7`_S4?+XL81_}*JP7QZ4W(EJ+#_Ww+apn zV69^#f2@iSQvXB$VSh<&OvuOfxEz2Pzj=Q1JidS5)D21Jgxuc3M=45HSw#(#f{+9< zB{|lfoadgEJEg;%;oz@Q9;&qdqqWF_kHHY%)8D|RiWwoc{E!G-g8-= zLeK*ST}SOc3qC#A@Sths{=PGjBec?juBGJ#NWohW(y+3HZ)0U%Qz4LpEP;ZygEyt+ zqeQQL0j9=Dz$(-`u~a`DiT4Qj3v+9*0L7}>8D)kl6vdK|(HdGBRB;rTy(5>DzFpre zfq6=NFS?;l|EB?tYE6jiata?G4CBnSkDrZc7`oM0^_>)`^EmqIl`+(lUCySHGal$| zh_5?YKxswphY;c!bnX-ZSPAi)>RjV6fgVe_#@P|)ABDy$u^!@{44=0RRrH`?13xBM z6h?U@g3T8G!#`V`@F<>{l48(4!9(8{IEBwlJM{xdS@A{Yl=C)@DrSJo3K9W#kR+v4 z2WmDq@9LY2dhYSlsGhd+naho?rut|-@pNCHj|(IC=Q@}dW@NQ$q;}xiMS7K{ z?!qs}!lf(pae9}A<4vR4v|Y0GeSVNd8;_@OzNX!b$8He%kW9AH-8!H62enpBZ`(!? zz4KR0ogk73OO)G#W2H{fI)@erU?Z&$MN!x*a!D?<+THGlY(da}@63{vDcefbLu9~^ zxbyYiyqV>XKbhJjS(+qo-oTYsrKo~sUTBphV@T7SJyc@F z)hUHhF%~mMiaeHt38Vz6^#V!^%X;pU^%6srLZX8zz;aeZ@4OEQN~@Rj*z!q|0DkW8 z?+HJBb=(gJyLf|B7-TDEGaFRaRZNHmqYu$M%MjTC$FuLxCsX`8n_Wz&)6N5PCCQ&U zK+Y5}=`=XQb5X9L5M_xqDG$3a6xAcCE+Xal7;5eOENLsIAH#w3tU{x~C?*(xJf@V^ z)mUAGoLKpa_dy0CmS3=PUa}zlDTorAx7SX?EL(EVEj1Ritwg~K>MQ=Vh}-a{oh6fU z&hiCGgF048J!d=o*e8_9S_g}{jMVET(G(npEi`WwQ?nHZ!|hTyM_tB1Bu-Kr#_N}U zN|9Rru`-3KSaG?gcnR4)@Hr}#8LHaX4EupX@|;BO`O;|1?3w~T32n(1@t8a<|0i(g zDZlW|FtBF=lw!fV7Vgu1$86<@^YNHs#s6c&e0@2|Oqk;cw9kT-m$moC&9ZE>p=K)N zdAr@U1qb=ov5F_j??UAqe!jU1vDWLGm<@?Ueq(vLUK$~h=6Fu0^qs)DIDu<$wGOg? zIS2m8^WZtomZ)kEtZYc);BfSWT2PxCx{9b-I#T=rS&^JMK1({>(Q`Ox+Bs{z3HgqT zS&lAtrcHc8z?x}0+LM_)^!fNg>tLxZaf+6tOzPi(FJb5d?v{h`awy}ie43Q zUEyS*n%d>aR!m4XmmD3*_lj))Alr+{BRpuka7|}#e!YQ@m+vQM`&RE?x0>!-oxf&v zKKUU6d?s6zBjM>3+46$IdLpYwQ7Z9**Y#5-PcHSBwh;3G`?JoR#(Z2FellNLU3>3Bb!J|fh3T;`Ry+;q=&(ULx! z-D$&AH(Xb=51`#7&1gjx7u@B;K|FP|7<+Q>Ov34;^G43|O!6EXDjamw|S ziwV4!Mjv{fcNWJmm2w7BK#W-`mtD^rjYi%W6R9xp%R_%3eCr@fS%h674NsPS>)S%o zd-Dd)rAYWBFP(WF9Kfg+4;MJLE=F|9MI`6ee|-z?7TRrvzvf(F+-`dSU`^A%P6r-r zOi>vVe~iiAYBYiWnJ0^OYD}iPoel|S)5C;r$8>W@?mI`{4Q_}1@ap2ElOV>YEQ(O; z(8w8zvg*sh|XO|1)x8F{{!3!7@U)c!F}?P zusk(gufnwjYtx2>cTr&4#!wkf^0b6g*m?pcVLZ(hZh&zo&j7P&<8Q!NF^rplV9ZUJ zN$pT9rf8<9tdU3|!2kvV7holT>h7vQM577XKG2D^0Hg#7S0p3_I@P!i!5!!gV~tVO zfGDJdr5bDCmRp8J+jv(AEM*Q0CX9tzauB&rm%zp{H!#Kt7s57+OdRGpk}xBRGnOe+ zPB^VXNpY4$pTTmw{gkRAyP~ZI)o}>F6XY{ zYUj}Ic!JR^XO_Fm_CrM!MI&4P{5Ui`)eBQC7or|a--Jk_4%Z#$ zZHdxbC2KzlO|C@2tFSJ<-{vZXV`#9^fK(U~F#Nl>5LkH2RZ@1CZ=(>d( z>IYap^6ajt9(u(SmD&EFV`iYJjpe68%I%S2WNJ%|&zqu4sxDoZC=O1fh%l&rOnDq* z*+5OR zPQt8X$7!I5NKus8nK$pfncWvJ%Vo*pA!C!tB;}QpTCpa<^m{boRvic zSGqu`EE+obQlWJgQeEW&GA?t_2B?f8MVX^RkP6%qS!r~N)`HGjJgF8DV>4wPaxtQO zmB~eA5Ncf+AoLYAxTdlaOus~odX}vmwsVs2>(ovY_hA7lM1>qTkk&C5+2VMhLf;4pobbd$+3Q?elyl;#h zAH%B_fj1ViF(gzor=;ntmly7Y6Sg}Boz^lJL0T733zB5L@IC%KBen??=$2YQ zF7FYnrbbEP!I?!D1_v605d^d|!QhlN)nTxO_wmPsd zR!$dWSITpmgP?ny?z3F4@1%+ece9C}qLWoB^>#uyfHed97<83Uev86j4*|voj!Gky z%fg%BL_{azhU&@f`TOa+i_7`v*Oynbi}N-#JMTk-(<3iuL*K_V+AV9CO3r693Djbn@Djc$#X;;DP1CY2)QnbqhWz$57dcz#eJ`1iL+g;=fBP3m zX&(}vp%6>X1PTmVap^Qj0xL~RUDTTkCZ=#FEjJsk$ePMEVJb~Xbi$Uj&cPVK0VG75 ztbigfS7g5+pOgK4*kD7|@!o^=UK0Bvo>zh``Fky?@iNUp(tX%RDgmkzLjV>5u69up zoEkYLc!!ZyUS80gRG>)5-LfRS$an>6!k^Y<1!I|ZoMGKlkz8@LCUwDou9=eoXz69i zGtj+Q<{X%49awS6MOkcs`%nRl5|4mv%lh}<{te=0tjf!+VVjVzws1q6k1PegQLt?z-7309;mA+IoOjD*WNCwvK>Q*^ZghdH}Kq(CgO0zGgE zQI|E_$q~QnbW_H4Ddv?;+y z2uO#>2I=l@0i{!r&JAp00~?SI>5!1_4pHfDNkOHgrI8dxLP|jHY!Hv<9MAi{-*>q=SS(S#YW-~iIFQH8PEJAzd4fZILsi%q^PP4YF_!nG}u zLgHyQ&t&PImjIWB?_W_{kZ&tVs~OH>g-!U{qg=aN%u^hxj!z=REY80>AMTITvC&RE zNnAsCWZ54*UO0zrZPISCi`|$#JNrHl>_x z!$cwvz9e~T>5W%@^E6k|QLV3jAvFS_9m3=dQi$2g16~U%BBYk(k@l72CArV0Pd!%A zXxX(w@fdhV%7^b+tvMl`B8n_&8O*VcYeb9Q$HHzgu|Of{++#*)^tc!O#=6uny8|&Y zPUaHC;I&TK9WMt&$}@DoaRcqwl@?#r3-o=))<36CiR_Grt?JnhWZc1i`$)^z0XJ|i zu>l;PQLb~GRc0C0!~gVo$Tn%7Aor}9Hc?UNLXxND;=H%2!4uQ;Hq|7m+WjY8)VGCj zs)xAHf(X=W#7=`cYQgx*cSCKzJRiq*&Nz5lCdT=wfmn31x@U}+?kbv*HBS%aRX_N< z=bx%8bKlUhc>FZ{Wi6%ie0_M0x~zitb(!q4+U`Bo)o#Sbk)3Z=7Poz4YCO7;2U#5E zG;SS6ZW$bA$21TR^^G0{g%X4}AaK(>@g~+quqlz~6ks*~Oweb`eNg9;PbRh3ah%9q zs{MG>U+Q55#m7w~Y5qkc?zM?2{yh zd`{R%Wi4PU$a6EYpKSerYk$Lq|2y#7sEGo#sRW2RG9ia(kjOxF`CSGbs8{UM>MK<* zy>~w0(>h#fLVca{hzEGlQ^x6TZ#YG(2Wsx~ItdPGA0 z7UZDaXX7l4nFUj-r(d~R5%<*#ygFOZrlJq{=TvBkBs}Yg_?Nx94F>f*CQUh3k&8d5 zS@t?ItEDg7p~`If+K)tG2G?Nh9CBRiNTR;o#zoF)YgCs#=JGHai~jC4@=e|VSJTIX z!H%Zr$#>4C7+2A%G*#$(5HKI8ETD7*eIlRwXh0YpH=K6nXPQoaWF-7uHlfR29{J-i z)@EaK1C6o5v{FDs-tZc(kLD)ZClhzOQxkj*y(_(R1U@XVPR3WIx>|%d2-%|ILPhWXQB+%1h3S z#)w%@WQ+x~^05-gB#7DJo{MJkmj`Q+9#h_8bF>TW$})XoFIKLMfKmIHoH*1m zh#|@2sZ^wU_|XeR4=2KtT!qUOFr0{tHeK`;JHKIf4`xGZb#QjRm5Cu2hnTaSW>h0N zHWxf3@-G!i|3n;IFy74K>LnNk(uoKN4r08G0vgT4;<2roCWp9=Atfs{os8QTq=U{} zR2<*+Y!%^rXl1Mu>6w1a;mN(^B4EPjN_;0fH+2%Z=`6Q+gU~>E0sRhd7}5u2x32pQ zv`;c3KFSs1-SUtWL_ch4m+f`*3d12+ds1>lgRx2uVJ{iekg;VmcBH$R?trXbO&{_! zoL-@bibC}3xW3_lQs(K0sl>VOTV4}n9!()zt_xYN6R|vfZx*rTQp{EPY4r{1m2qhf zY2Q67{wkFA<}?f)VsO{Vd|-+Z_~PbKB=t?P)zGg6L$e!;QeO7cj?$D5|B8>%dsYA9m8IAO`F4r*X{Imuu8l;mtE_;a@LsWe%H*=CB(AX zZ1iTDO;sV29bs8dOP1|SAjHYvqIY}SVWZF6BzZWx|3+sI!nb?NkaUYTEqgwQiCmtA zqt|@(OHL*VYI{}K2tTI=ls~w+P|mb3n9v;Suvt<-H)}Z&)e5mJ`}D1h!s&E(P)H`7 zB)i%FgH=-w!l~kNf9kDa)wi4*E(;`X!gSgF2N{VE!;#veaApq%y||1r-|DXi)ZiHC;4ly#?vWV8HQ7+pY(;C4vvh$^8SpsM*8pD3XKizKSLX z&(ywq{oCV6`>X8i$KP6O*P3Yf#IE}`*?LQ|mxYQT72d};+2l1X5_o0urSD~fi{>ZA zbdE&^fuzObeg0efS^gtc1mf1HMQ*AIN0A-YsneO0yGG5v!k!^K$mYzBrXTyKL1v=< zXo80my$>nIKhqY!&wL?4p?5Ms#y*6L3HJWJC4$-3*Tr?hfUL(O=I{Gu{{RoezOK^A z75h%-({JPDIZF&2X-hL#uOf@=I!dWZxyA4k-_8LOYB`y1x^z#W+*MN2J2Occ5lviyZZ-9w z18s_dX=L}z_3dwgs-hnYTX#3wUp+Ww(|mn)1$aoN9q_#q;0-tqcTn%~#-P2qYta{N zen*%2b6Cx0B5x98ox1#qY(!oPiG=U>;M0!N7;@R>iO6Ywlm=xiBkDzwgXwM81NNPP zRt;%_&JQ4dWp(`Zqfwq!S$O*GbcP;z248V2RxO02YZ5Gp6Uq(E6h?s<@pXyw`riysGhOlEtmeF zRNUt03^>!bdoU9!H0RakL&L9LQ(vc~$t-W+W^Zf;-@nh>-Pox8>gmQ2Dx~q<_G~U= z9Zy&5)b)Va=}xhi!t%#N(C?bt27Mbs1(0LR2|SGlD$-hIw&qE_|^WDy(Pu{aalhd3*hdM)M?!J z_a?7`lO;yG)3}kz${UyUVLilb99}j?U#dyQOUBR}>)0carg$1muCrC5*6dDb2ZIXoa<&Jw{*JH z0#l*l)2jz&4ngZ1mc`YI+C?F;;x!qW)f7Rtps;i5n`u+XG{WR1kc6}8KScXl&8G!DDaf!R@ zJ#=&V{NNf`hdMf!8EnN`uf+l!q5G+Yw4%Yxk(qCQE!E`q=l;+dGs}^yo=UfN+++pc zu)Gs!9G+QZPweiI&eXftSNQmTgoNgoK(k6{5B8da8VgC9_Ni z$7$SqBcenfy^|Ii4gOLFp6&Pw!MJA2j7`5!gQ8zON(4fM`08l9S8sQr6pid*eZ6In zUAJVS)wElrHC0bkdo{hZC2RspUNdc|Z@8X$VyIPUKzx$Uo~#k)>SSmjlbc(qtP@tq zsV_qz`JBo-DJ@Iy$^GFjQh`wy&$||C)Wp@;D9Y;iLy=Y!(@Eda^UfTR$Gfs5OQzp= z#jrcgLzEA~9zJn1uFJWxBD$*b^Tt1FE!b|{VaC_W)9wlS1$O;y1S)=;VC zrfhzbukwUYq97#u$Xz_Om)Gt%sBoQtt!v;x3_F8YT4S<+(h?PGN`0tpwMifeV_sW$ zDqnN1!ZVagbD{F9qPD5Qvm1K`r7lAoK-GX>8Q{k~GtBf$tzl|(evvcLMZU8Jze;M#%1l*WP4+Pq`+$6tY?iK`BqoMlyFYiv1A&Y?lKJ|oNGplj%n@a( zg~8T{$JezRB!a;t_TzcP8bBU6C;=I@|z6c`82|;EHceYP8rmz9mt{T zUC6OI4|;~9!RSkt5;`)>9s&9s<k#>F}*8S z=2d66bVR49H#$|=ielFAvX@R&VW-RqQ=(rZRP1J5o>0T>Rkf`$LL|BJt>USjT8BA` zsLr5#K}U6tjAD=jYaLJSJXDlN{z1YP4QjmaTO2P`&LLZzD|12j9HO7Ba3k#U5V1fJ zDEw9{1wuH!r@f1Qgy+oqW!H&x048C}%he8DqmobRHJ1Cv+)Oo049!YFD*5W7fan5N z4z5JYHIuWxPB@5y6#B9U`A9Iq@yp_3J5o#}g?UnncT}1iviFHV;%mA_w%*6tNs+B$ z(;hxs4^LJ)wnOJWlTf{F=gnCN&J9D0BVy=*-WC=S<#%sA*vz6Xs85L+<+RS96%ujd z5q zUeQf9;(>^%7N74;tJ)p00frO>uT+q`_qpZ>kvlsx*`>GH6e|Sw?siedYMaJ3nDzvq z@H{@HgQ=hGdf3KkarYMY^Kf9GFH_B11u;leGKbztSNC=?BZ-ek?5>1(<|e;XERwRg z;WekNKl%B|YV((dJmnKbpTO|9g(!*bUat!MvA^tN%|%5i8#W7`V7QkUf5|i6a80j| zZ79l0loFDU{ZckT=3MI>>YBRLuF->Xv^sYt@f64D8bRL5-g~amr>X`_h;PEa@?rRR z??w)?FS$L_L);zYr9YnLM$|9DZ$aP8Yi(MKP@GLY!y371BG$X1Q} zn0A7*s?j+$mh_6e=%6d}v~hTq{c#Rx^v$3#ZZQ+l9{Pw93HO7S)>}})VG(RS7J)&( z69aPp!t&@a&%)c3s(cD=Jt-XSC5={Dy_<9G;wqX`StM5JG>q3puxxM&MyCjaZjINg zQ{&EtJZM*7s#I)M(R>qblIr&`ECi(=T~&Bg6&cHqEp6rM3^I3mS@dF@(eLx0(_7+`iU;KtXqk?F)W%Y%r%y)fFyEBD@Sz^XXWGvq>^u6{-cG11fD z+2$V%>$MA(5lM^xkXY_?*Y2t?vv_hFHwuYAvVx6AQkuD(AfHc-h;o_X4)MFrR=?hq z@GGcT8TO=mkHT9&J7X>+@MLk_!p4f~{s48^rBQQkn4(4lq4X&ssV92A&Cd{QBe`EN zd8Cdv!6AYeZ<=!N?$r;>Oz(GncL$ZqEh9D<)jKtX=8sMD)gYExPu(tL%`@WS!-LmOnqs z=|>l-b z;wQ?P$W>yN58f+gipAQs(wGz2A3yFDFN|gjnpNVQ>V`L@ws zSogK`m#!VdW}#EmH{WF5L!>9i$jBjw<=!x z8Qb1pXx|e!d%IznhEZd6ps3si{sY;uA% z)4p;2&z+c#O1CE0OY&->t%)Rvwym-R2fJL+3`%@Qp`TpN6eETZp=bihSm>(ktr6L5 zG=uhn7Ty$&Il&ajVu&XbQrATFv`^7R+26$Lk)prA48KjjDrY})R|$P`HgutEG0is~ zw{LgHnyh!A3`MZST;cB2cX!**DuSF2;~e2hn8szb;yNvyDvn+)hLpnl^jx;w9v+UH zmT|be6WNe5Y2VGYQc_ikIPWLE4D)`irE`z;UJbUzJ@|-Jy3;I`FX}76R~Fe-XQddm z^@id^$K?Jlv(moY(q6ZjVa%WS>Rks@T`2T12J zRytOmPq0?4XWmCF+1@vmn-vHTe)^ay#tF$ zSIpNId0X5Y3E~AMu8_{&7bTA9K7*aH$6*X@S#bxn|`r#hx&O82r> zan@t=>7UU_k!^M7NE(b|i@tsIFnhQx-84hyi?hW0A=B%O#YvTfG4Det45qI~c$@md zZtH9A`QI1U^KBhiz&-TqV06~=C0^?|xr)^JTFCc|%-40A^KhnNFd6&q=6bt`c(-d2 zf&QmsOaz2CWpY^|cG3x@S8>VLS9~y^8OxyD$U00EM`ms$qq^mb7{BrSh2{8*AT(QU z>l@h-hmS(G*a@-Qkz*we+5(Ol9EccCFh1Y3cAVnfY4kyv-i}l2u6eidb)~yxxFK}v zuwPNc;azg%vmq5K>TQK5j1t=0RYzZHffH8WdHDq0)q^<6B=E%a@ zH}R33e4VMb6IPP5lu=OV;bEd9va@Nq!@CbO&mCRT3T9ZL!kE3f_uY_ zQkMngi$g^yeAyVc(_vhdXoXjvnDeME-hx-=AKi`Yot7=ezC8=t;_~qw z*+)h4szFFU+MvHZOq~(9>-;fyf>(Z?d;0d)z^+#I-F}0f%oEj@Cf|E>U%r^=HS(=U zf8p6J-rQEJ%DI;--ChyP*5dx%(^qO$yzHfgQ-cx%-IIK4Mj4q!pIPpFZy7@xc`1C}V}UG#_Vu3u5$;v3qf|C*edBf=e1b4cQ>ZV@De zOwa7=P5<@u_zObj+^Z-9%9*6@@6<6kvM*#jmy}R^oJu}$?og=)3}wFl(4LBu)jmLd z6Q$}NZcc3e0B4G~E-jz_A;Vi`bivf3Rf(h^2XV0wgzu{yZ^K_0Uq3>)9!WIGsrK@5 z;JyOF*tTVp0-}J>9>!TNXmI4^MBrLSis9fkxgtrDlz696hEU3Y*{uZg8#KG+V(Dt# zHYxm)!`ws342E^RG5Fj%I@?A9{Wl4lxIp(Tz=4VEDLI`c#gQBQDl^ z0<&4m{M%3bh3G?vpAxTR6e4{>iBt5L1;6DK3nLzC$9!xq+Bmwc+|DmGGAWp`m;!1R zJxYJ$4H`ois62ggS0Dh*BCnRB!l5ZLCj*({{TrVVI-e7X*G8H*iT4N$l>}Pkp+%Gy z>;kxQVvDgTBp)9+KaFBpBFKIrp@T9)%@l0SCV6A8hEgBlnx+t9yFLNsBJgwx{I|ST zhY#x3gw7H;b2N#bSclOc#yrb_%egQr=3FE-)cY-uF+9YxxO?z^Yqtr&wXf@v+hWp=PU`9h28U`U88S7ABI{8@bP?Owsv^;9Wy;aMe zyy6}tEac2zd^2{p)PXjm*-BXU4YYBOmVN_eyFz{YmGbNIIw|n#YZUTGSLUVG>#rcz zy-k8+Au0Rry%{w7R>MKd@&UG�mHd48@-DYnSxR++u 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 ['--bwlimit=4096']]); -}); -``` - -The issue was also described in the [Github Action](https://github.com/deployphp/action/issues/35). diff --git a/docs/UPGRADE.md b/docs/UPGRADE.md deleted file mode 100644 index 964aa50cc..000000000 --- a/docs/UPGRADE.md +++ /dev/null @@ -1,255 +0,0 @@ -# Upgrade a major version - -## Upgrade from 6.x to 7.x - -### Step 1: Update deploy.php - -1. Change config `hostname` to `alias`. -2. Change config `real_hostname` to `hostname`. -3. Change config `user` to `remote_user`. -4. Update `host()` definitions: - 1. Add `set` prefix to all setters: `identityFile` -> `setIdentityFile` or `set('identity_file')` - 2. Update `host(...)->addSshOption('UserKnownHostsFile', '/dev/null')` to `host(...)->setSshArguments(['-o UserKnownHostsFile=/dev/null']);` - 3. Replace _stage_ with labels, i.e. - ```php - host('deployer.org') - ->set('labels', ['stage' => 'prod']); - ``` - When deploying instead of `dep deploy prod` use `dep deploy stage=prod`. - 4. `alias()` is deleted, `host()` itself sets alias and hostname, to override hostname use `setHostname()`. -5. Update `task()` definitions. - 1. Replace `onRoles()` with `select()`: - ```php - task(...) - ->select('stage=prod'); - ``` -6. Third party recipes now live inside main Deployer repo in _contrib_: - ```php - require 'contrib/rsync.php'; - ``` -7. Replace `inventory()` with `import()`. It now can import hosts, configs, tasks: - - ```yaml - import: recipe/common.php - - config: - application: deployer - shared_dirs: - - uploads - - storage/logs/ - - storage/db - shared_files: - - .env - - config/test.yaml - keep_releases: 3 - http_user: false - - hosts: - prod: - local: true - - tasks: - deploy: - - deploy:prepare - - deploy:vendors - - deploy:publish - - deploy:vendors: - - run: "cd {{release_path}} && echo {{bin/composer}} {{composer_options}} 2>&1" - ``` - -8. Rename task `success` to `deploy:success` and `cleanup` to `deploy:cleanup`. -9. Verbosity functions (`isDebug()`, etc) got deleted. Use `output()->isDebug()` instead. -10. `runLocally()` commands are executed relative to the recipe file directory. This behaviour can be overridden via an environment variable: - ``` - DEPLOYER_ROOT=. vendor/bin/dep taskname` - ``` -11. Replace `local()` tasks with combination of `once()` and `runLocally()` func. -12. Replace `locateBinaryPath()` with `which()` func. -13. Configuration property `default_stage` is not supported anymore and has been dropped. -14. Replace `onHosts()` and `onStage()` with [labels & selectors](selector.md). -15. Replace `setPrivate()` with [`hidden()`](tasks.md#hidden). - -### Step 2: Deploy - -Since the release history numbering is not compatible between v6 and v7, you need to specify the `release_name` manually for the first time. Otherwise you start with release 1. - -1. Find out next release name (ssh to the host, `ls` releases dir, find the biggest number). Example: `42`. -2. Deploy with release_name: - ``` - dep deploy -o release_name=43 - ``` - -:::note -In case a rollback is needed, manually change the `current` symlink: - -``` -ln -nfs releases/42 current -``` - -::: - -:::note -In case there are multiple hosts with different release names, you should create a `{{deploy_path}}/.dep/latest_release` file in each host with the current release number of that particular host. -::: - -## Upgrade from 5.x to 6.x - -1. Changed branch option priority - - If you have host definition with `branch(...)` parameter, adding `--branch` option will not override it any more. - If no `branch(...)` parameter persists, branch will be fetched from current local git branch. - - ```php - host('prod') - ->set('branch', 'production') - ``` - - In order to return to old behavior add checking of `--branch` option. - - ```php - host('prod') - ->set('branch', function () { - return input()->getOption('branch') ?: 'production'; - }) - ``` - -2. Add `deploy:info` task to the beginning to `deploy` task. -3. `run` returns string instead of `Deployer\Type\Result` - - Now `run` and `runLocally` returns `string` instead of `Deployer\Type\Result`. - Replace method calls as: - - - `run('command')->toString()` → `run('command')` - - `run('if command; then echo "true"; fi;')->toBool()` → `test('command')` - -4. `env_vars` renamed to `env` - - - `set('env_vars', 'FOO=bar');` → `set('env', ['FOO' => 'bar']);` - - If your are using Symfony recipe, then you need to change `env` setting: - - - `set('env', 'prod');` → `set('symfony_env', 'prod');` - -## Upgrade from 4.x to 5.x - -1. Servers to Hosts - - - `server($hostname)` to `host($hostname)`, and `server($name, $hostname)` to `host($name)->hostname($hostname)` - - `localServer($name)` to `localhost()` - - `cluster($name, $nodes, $port)` to `hosts(...$hodes)` - - `serverList($file)` to `inventory($file)` - - If you need to deploy to same server use [host aliases](https://deployer.org/docs/hosts#host-aliases): - - ```php - host('domain.com/green', 'domain.com/blue') - ->set('deploy_path', '~/{{hostname}}') - ... - ``` - - Or you can define different hosts with same hostname: - - ```php - host('production') - ->hostname('domain.com') - ->set('deploy_path', '~/production') - ... - - host('beta') - ->hostname('domain.com') - ->set('deploy_path', '~/beta') - ... - ``` - -2. Configuration options - - - Rename `{{server.name}}` to `{{hostname}}` - -3. DotArray syntax - - In v5 access to nested arrays in config via dot notation was removed. - If you was using it, consider to move to plain config options. - - Refactor this: - - ```php - set('a', ['b' => 1]); - - // ... - - get('a.b'); - ``` - - To: - - ```php - set('a_b', 1); - - // ... - - get('a_b'); - ``` - -4. Credentials - - Best practice in new v5 is to omit credentials for connection in `deploy.php` and write them in `~/.ssh/config` instead. - - - `identityFile($publicKeyFile,, $privateKeyFile, $passPhrase)` to `identityFile($privateKeyFile)` - - `pemFile($pemFile)` to `identityFile($pemFile)` - - `forwardAgent()` to `forwardAgent(true)` - -5. Tasks constraints - - - `onlyOn` to `onHosts` - - `onlyOnStage` to `onStage` - -## Upgrade from 3.x to 4.x - -1. Namespace for functions - - Add to beginning of _deploy.php_ next line: - - ```php - use function Deployer\{server, task, run, set, get, add, before, after}; - ``` - - If you are using PHP version less than 5.6, you can use this: - - ```php - namespace Deployer; - ``` - -2. `env()` to `set()`/`get()` - - Rename all calls `env($name, $value)` to `set($name, $value)`. - - Rename all rvalue `env($name)` to `get($name)`. - - Rename all `server(...)->env(...)` to `server(...)->set(...)`. - -3. Moved _NonFatalException_ - - Rename `Deployer\Task\NonFatalException` to `Deployer\Exception\NonFatalException`. - -4. Prior release cleanup - - Due to changes in release management, the new cleanup task will ignore any prior releases deployed with 3.x. These will need to be manually removed after migrating to and successfully releasing via 4.x. - -## Upgrade from 2.x to 3.x - -1. ### `->path('...')` - - Replace your server paths configuration: - - ```php - server(...) - ->path(...); - ``` - - to: - - ```php - server(...) - ->env('deploy_path', '...'); - ``` diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index e93a1aee5..000000000 --- a/docs/api.md +++ /dev/null @@ -1,565 +0,0 @@ - - - - -# API Reference - -## host() - -```php -host(string ...$hostname) -``` - -Defines a host or hosts. -```php -host('example.org'); -host('prod.example.org', 'staging.example.org'); -``` - -Inside task can be used to get `Host` instance of an alias. -```php -task('test', function () { - $port = host('example.org')->get('port'); -}); -``` - - - -## localhost() - -```php -localhost(string ...$hostnames) -``` - - - -## currentHost() - -```php -currentHost(): Host -``` - -Returns current host. - - -## select() - -```php -select(string $selector): array -``` - -Returns hosts based on provided selector. - -```php -on(select('stage=prod, role=db'), function (Host $host) { - ... -}); -``` - - - -## selectedHosts() - -```php -selectedHosts(): array -``` - -Returns array of hosts selected by user via CLI. - - - -## import() - -```php -import(string $file): void -``` - -Import other php or yaml recipes. - -```php -import('recipe/common.php'); -``` - -```php -import(__DIR__ . '/config/hosts.yaml'); -``` - - - -## desc() - -```php -desc(?string $title = null): ?string -``` - -Set task description. - - -## task() - -```php -task(string $name, $body = null): Task -``` - -Define a new task and save to tasks list. - -Alternatively get a defined task. - - - -| Argument | Type | Comment | -|---|---|---| -| `$name` | `string` | Name of current task. | -| `$body` | `callable():void` or `array` or `null` | Callable task, array of other tasks names or nothing to get a defined tasks | - -## before() - -```php -before(string $task, $do) -``` - -Call that task before specified task runs. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task before $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## after() - -```php -after(string $task, $do) -``` - -Call that task after specified task runs. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task after $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## fail() - -```php -fail(string $task, $do) -``` - -Setup which task run on failure of $task. -When called multiple times for a task, previous fail() definitions will be overridden. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task which need to fail so $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## option() - -```php -option(string $name, $shortcut = null, ?int $mode = null, string $description = '', $default = null): void -``` - -Add users options. - - - -| Argument | Type | Comment | -|---|---|---| -| `$name` | `string` | The option name | -| `$shortcut` | `string` or `array` or `null` | The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts | -| `$mode` | `int` or `null` | The option mode: One of the VALUE_* constants | -| `$description` | `string` | A description text | -| `$default` | `string` or `string[]` or `int` or `bool` or `null` | The default value (must be null for self::VALUE_NONE) | - -## cd() - -```php -cd(string $path): void -``` - -Change the current working directory. - - -## within() - -```php -within(string $path, callable $callback) -``` - -Execute a callback within a specific directory and revert back to the initial working directory. - - - -## run() - -```php -run(string $command, ?array $options = [], ?int $timeout = null, ?int $idle_timeout = null, ?string $secret = null, ?array $env = null, ?bool $real_time_output = false, ?bool $no_throw = false): string -``` - -Executes given command on remote host. - -Examples: - -```php -run('echo hello world'); -run('cd {{deploy_path}} && git status'); -run('password %secret%', secret: getenv('CI_SECRET')); -run('curl medv.io', timeout: 5); -``` - -```php -$path = run('readlink {{deploy_path}}/current'); -run("echo $path"); -``` - - - - -| Argument | Type | Comment | -|---|---|---| -| `$command` | `string` | Command to run on remote host. | -| `$options` | `array` or `null` | Array of options will override passed named arguments. | -| `$timeout` | `int` or `null` | Sets the process timeout (max. runtime). The timeout in seconds (default: 300 sec; see {{default_timeout}}, `null` to disable). | -| `$idle_timeout` | `int` or `null` | Sets the process idle timeout (max. time since last output) in seconds. | -| `$secret` | `string` or `null` | Placeholder `%secret%` can be used in command. Placeholder will be replaced with this value and will not appear in any logs. | -| `$env` | `array` or `null` | Array of environment variables: `run('echo $KEY', env: ['key' => 'value']);` | -| `$real_time_output` | `bool` or `null` | Print command output in real-time. | -| `$no_throw` | `bool` or `null` | Don't throw an exception of non-zero exit code. | - -## runLocally() - -```php -runLocally(string $command, ?array $options = [], ?int $timeout = null, ?int $idle_timeout = null, ?string $secret = null, ?array $env = null, ?string $shell = null): string -``` - -Execute commands on a local machine. - -Examples: - -```php -$user = runLocally('git config user.name'); -runLocally("echo $user"); -``` - - - - -| Argument | Type | Comment | -|---|---|---| -| `$command` | `string` | Command to run on localhost. | -| `$options` | `array` or `null` | Array of options will override passed named arguments. | -| `$timeout` | `int` or `null` | Sets the process timeout (max. runtime). The timeout in seconds (default: 300 sec, `null` to disable). | -| `$idle_timeout` | `int` or `null` | Sets the process idle timeout (max. time since last output) in seconds. | -| `$secret` | `string` or `null` | Placeholder `%secret%` can be used in command. Placeholder will be replaced with this value and will not appear in any logs. | -| `$env` | `array` or `null` | Array of environment variables: `runLocally('echo $KEY', env: ['key' => 'value']);` | -| `$shell` | `string` or `null` | Shell to run in. Default is `bash -s`. | - -## test() - -```php -test(string $command): bool -``` - -Run test command. -Example: - -```php -if (test('[ -d {{release_path}} ]')) { -... -} -``` - - - -## testLocally() - -```php -testLocally(string $command): bool -``` - -Run test command locally. -Example: - - testLocally('[ -d {{local_release_path}} ]') - - - -## on() - -```php -on($hosts, callable $callback): void -``` - -Iterate other hosts, allowing to call run a func in callback. - -```php -on(select('stage=prod, role=db'), function ($host) { - ... -}); -``` - -```php -on(host('example.org'), function ($host) { - ... -}); -``` - -```php -on(Deployer::get()->hosts, function ($host) { - ... -}); -``` - - - -## invoke() - -```php -invoke(string $taskName): void -``` - -Runs a task. -```php -invoke('deploy:symlink'); -``` - - - -## upload() - -```php -upload($source, string $destination, array $config = []): void -``` - -Upload files or directories to host. - -> To upload the _contents_ of a directory, include a trailing slash (eg `upload('build/', '{{release_path}}/public');`). -> Without the trailing slash, the build directory itself will be uploaded (resulting in `{{release_path}}/public/build`). - - The `$config` array supports the following keys: - -- `flags` for overriding the default `-azP` passed to the `rsync` command -- `options` with additional flags passed directly to the `rsync` command -- `timeout` for `Process::fromShellCommandline()` (`null` by default) -- `progress_bar` to display upload/download progress -- `display_stats` to display rsync set of statistics - -Note: due to the way php escapes command line arguments, list-notation for the rsync `--exclude={'file','anotherfile'}` option will not work. -A workaround is to add a separate `--exclude=file` argument for each exclude to `options` (also, _do not_ wrap the filename/filter in quotes). -An alternative might be to write the excludes to a temporary file (one per line) and use `--exclude-from=temporary_file` argument instead. - - - - -## download() - -```php -download(string $source, string $destination, array $config = []): void -``` - -Download file or directory from host - - - - -## info() - -```php -info(string $message): void -``` - -Writes an info message. - - -## warning() - -```php -warning(string $message): void -``` - -Writes an warning message. - - -## writeln() - -```php -writeln(string $message, int $options = 0): void -``` - -Writes a message to the output and adds a newline at the end. - - -## parse() - -```php -parse(string $value): string -``` - -Parse set values. - - -## set() - -```php -set(string $name, $value): void -``` - -Setup configuration option. - - -## add() - -```php -add(string $name, array $array): void -``` - -Merge new config params to existing config array. - - - -## get() - -```php -get(string $name, $default = null) -``` - -Get configuration value. - - - - -## has() - -```php -has(string $name): bool -``` - -Check if there is such configuration option. - - -## ask() - -```php -ask(string $message, ?string $default = null, ?array $autocomplete = null): ?string -``` - - - -## askChoice() - -```php -askChoice(string $message, array $availableChoices, $default = null, bool $multiselect = false) -``` - - - -## askConfirmation() - -```php -askConfirmation(string $message, bool $default = false): bool -``` - - - -## askHiddenResponse() - -```php -askHiddenResponse(string $message): string -``` - - - -## input() - -```php -input(): InputInterface -``` - - - -## output() - -```php -output(): OutputInterface -``` - - - -## commandExist() - -```php -commandExist(string $command): bool -``` - -Check if command exists - - - -## commandSupportsOption() - -```php -commandSupportsOption(string $command, string $option): bool -``` - - - -## which() - -```php -which(string $name): string -``` - - - -## remoteEnv() - -```php -remoteEnv(): array -``` - -Returns remote environments variables as an array. -```php -$remotePath = remoteEnv()['PATH']; -run('echo $PATH', env: ['PATH' => "/home/user/bin:$remotePath"]); -``` - - -## error() - -```php -error(string $message): Exception -``` - -Creates a new exception. - - -## timestamp() - -```php -timestamp(): string -``` - -Returns current timestamp in UTC timezone in ISO8601 format. - - -## fetch() - -```php -fetch(string $url, string $method = 'get', array $headers = [], ?string $body = null, ?array &$info = null, bool $nothrow = false): string -``` - -Example usage: -```php -$result = fetch('{{domain}}', info: $info); -var_dump($info['http_code'], $result); -``` - - diff --git a/docs/avoid-php-fpm-reloading.md b/docs/avoid-php-fpm-reloading.md deleted file mode 100644 index bb34d85e4..000000000 --- a/docs/avoid-php-fpm-reloading.md +++ /dev/null @@ -1,54 +0,0 @@ -# Avoid PHP-FPM Reloading - -Deployer symlinks _current_ to latest release dir. - -``` -current -> releases/3/ -releases/ - 1/ - 2/ - 3/ -``` - -## The problem - -PHP Opcodes get cached. And if `SCRIPT_FILENAME` contains _current_ symlink, on -new deploy nothing updates. Usually, a solution is simple to reload **php-fpm** -after deploy, but such reload can lead to **dropped** or **failed** requests. -The correct fix is to configure your server set `SCRIPT_FILENAME` to a resolved path. -You can check your server configuration by printing `SCRIPT_FILENAME`. - -```php -echo $_SERVER['SCRIPT_FILENAME']; -``` - -If it prints something like `/home/deployer/example.com/current/index.php` with -_current_ in the path, your server configured incorrectly. - -## Fix for Nginx - -Nginx has special variable `$realpath_root`, use it to set up `SCRIPT_FILENAME`: - -```diff -location ~ \.php$ { - include fastcgi_params; - fastcgi_pass unix:/var/run/php/php-fpm.sock; -- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; -+ fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; -} -``` - -## Fix for Caddy - -:::tip -If you're already using servers provisioned by Deployer, you don't need to fix -anything, as everything is already configured properly. -::: - -Use `resolve_root_symlink`: - -``` -php_fastcgi * unix//run/php/php-fpm.sock { - resolve_root_symlink -} -``` diff --git a/docs/basics.md b/docs/basics.md deleted file mode 100644 index 3e5ed892a..000000000 --- a/docs/basics.md +++ /dev/null @@ -1,234 +0,0 @@ -# Basics - -Deployer has two main concepts: [**hosts**](hosts.md) and [**tasks**](tasks.md). - -A **recipe** is a file containing definitions for **hosts** and **tasks**. - -Deployer CLI requires two arguments to run: a **task** to run and a **selector**. - -``` -$ dep deploy deployer.org - --- ------ ------------ - | | | - | | `--- Selector - | `------------- Task - `------------------ CLI -``` - -Deployer uses the [selector](selector.md) to choose hosts. Next takes the given -task, performs some preparation (described later), and executes the task on all -selected hosts. - -If selector not specified Deployer will ask you to choose host from list. -If your recipe contains only one host, Deployer will automatically choose it. -To select all hosts specify a special selector: `all`. - -The `dep` CLI looks for `deploy.php` or `deploy.yaml` file in current directory. - -Or recipe can be specified explicitly via `-f` or `--file` option. - -``` -$ dep --file=deploy.php deploy deployer.org -``` - -Let's write a recipe. - -```php -// We are going to use functions declared primarily in Deployer namespace, -// to simplify recipe we will use Deployer namespace too. Alternativly, -// you can import individual functions via "use function". -namespace Deployer; - -host('deployer.org'); - -task('my_task', function () { - run('whoami'); -}); -``` - -Let's try to run our task on deployer.org. - -``` -$ dep my_task -task my_task -$ -``` - -But where is our `whoami` command output? By default, Deployer runs with normal verbosity -level and shows only names of executed tasks. Let's increase verbosity to verbose, and -rerun our task. - -Add `-v` option to increase verbosity. Read more about [CLI usage](cli.md). - -``` -$ dep my_task -v -task my_task -[deployer.org] run whoami -[deployer.org] deployer -$ -``` - -Now let's add second host: - -```php -host('deployer.org'); -host('medv.io'); -``` - -How does Deployer know how to connect to a host? It uses same `~/.ssh/config` file as -the `ssh` command. Alternatively, you can specify [connection options](hosts.md) in recipe. - -Let's run `my_task` task on both hosts: - -``` -$ dep my_task -v all -task my_task -[deployer.org] run whoami -[medv.io] run whoami -[medv.io] anton -[deployer.org] deployer -``` - -Deployer runs a task in parallel on each host. This is why the output is mixed. -We can limit it to run only on one host at a time. - -``` -$ dep my_task -v all --limit 1 -task my_task -[deployer.org] run whoami -[deployer.org] deployer -[medv.io] run whoami -[medv.io] deployer -``` - -Limit level also possible to [specified per task](tasks.md#limit). - -Each host has a configuration: a list of key-value pairs. Let's define our first -configuration option for both our hosts: - -```php -host('deployer.org') - ->set('my_config', 'foo'); -host('medv.io') - ->set('my_config', 'bar'); -``` - -In the task we can get current executing host with [currentHost](api.md#currenthost) function: - -```php -task('my_task', function () { - $myConfig = currentHost()->get('my_config'); - writeln("my_config: " . $myConfig); -}); -``` - -Or with [get](api.md#get) function: - -```diff -task('my_task', function () { -- $myConfig = currentHost()->get('my_config'); -+ $myConfig = get('my_config'); - writeln("my_config: " . $myConfig); -}); -``` - -Or via [parse](api.md#parse) function which replaces brackets `{{ ... }}` and value -with of config option. - -All functions (writeln, run, runLocally, cd, upload, etc) call **parse** function -internally. So you don't need to call **parse** function by your self. - -```diff -task('my_task', function () { -- $myConfig = get('my_config'); -- writeln("my_config: " . $myConfig); -+ writeln("my_config: {{my_config}}"); -}); -``` - -Let's try to run our task: - -``` -$ dep my_task all -task my_task -[deployer.org] my_config: foo -[medv.io] my_config: bar -``` - -Awesome! Each host configuration inherits global configuration. Let's refactor -our recipe to define one global config option: - -```php -set('my_config', 'global'); - -host('deployer.org'); -host('medv.io'); -``` - -The config option `my_config` will be equal to `global` on both hosts. - -Also, config option value can be specified as a callback, such callback -executed on first access and returned result saved in host configuration. - -```php -set('whoami', function () { - return run('whoami'); -}); - -task('my_task', function () { - writeln('Who am I? {{whoami}}'); -}); -``` - -Let's try to run it: - -``` -$ dep my_task all -task my_task -[deployer.org] Who am I? deployer -[medv.io] Who am I? anton -``` - -We can use this to create dynamic configuration which uses current host information. - -Only the first call will trigger the callback execution. All subsequent checks use saved value. - -Here is an example: - -```php -set('current_date', function () { - return run('date'); -}); - -task('my_task', function () { - writeln('What time is it? {{current_date}}'); - run('sleep 5'); - writeln('What time is it? {{current_date}}'); -}); -``` - -If we run my_task we will see that `date` is called only once on -`{{current_date}}` access. - -``` -$ dep my_task deployer.org -v -task my_task -[deployer.org] run date -[deployer.org] Wed 03 Nov 2021 01:16:53 PM UTC -[deployer.org] What time is it? Wed 03 Nov 2021 01:16:53 PM UTC -[deployer.org] run sleep 5 -[deployer.org] What time is it? Wed 03 Nov 2021 01:16:53 PM UTC -``` - -We can override a config option via CLI option `-o` like this: - -``` -$ dep my_task deployer.org -v -o current_date="I don't know" -task my_task -[deployer.org] What time is it? I don't know -[deployer.org] run sleep 5 -[deployer.org] What time is it? I don't know -``` - -Since the `current_date` config option is overridden there is no need to call the callback. -So there is no 'run date'. diff --git a/docs/ci-cd.md b/docs/ci-cd.md deleted file mode 100755 index 4a22568f9..000000000 --- a/docs/ci-cd.md +++ /dev/null @@ -1,99 +0,0 @@ -# CI/CD - -## GitHub Actions - -Use official [GitHub Action for Deployer](https://github.com/deployphp/action). - -Create `.github/workflows/deploy.yml` file with following content: - -```yaml -name: deploy - -on: - push: - branches: [master] - -concurrency: production_environment - -jobs: - deploy: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: "8.1" - - - name: Install dependencies - run: composer install - - - name: Deploy - uses: deployphp/action@v1 - with: - private-key: ${{ secrets.PRIVATE_KEY }} - dep: deploy -``` - -:::warning -The `concurrency: production_environment` is important as it prevents concurrent -deploys. -::: - -## GitLab CI/CD - -Set the following variables in GitLab project: - -- `SSH_KNOWN_HOSTS`: Content of `~/.ssh/known_hosts` file. - The public SSH keys for a host may be obtained using the utility `ssh-keyscan`. - For example: `ssh-keyscan deployer.org`. -- `SSH_PRIVATE_KEY`: Private key for connecting to remote hosts. - To generate private key: `ssh-keygen -t ed25519 -C 'gitlab@deployer.org'`. - -Create .gitlab-ci.yml file with following content: - -```yml -stages: - - deploy - -deploy: - stage: deploy - image: - name: deployphp/deployer:7 - entrypoint: [""] - before_script: - - mkdir -p ~/.ssh - - eval $(ssh-agent -s) - - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts - - chmod 644 ~/.ssh/known_hosts - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - script: - - dep deploy -vvv - resource_group: production - only: - - master -``` - -### Deployment concurrency - -Only one deployment job runs at a time with the [`resource_group` keyword](https://docs.gitlab.com/ee/ci/yaml/index.html#resource_group) in .gitlab-ci.yml. - -In addition, you can ensure that older deployment jobs are cancelled automatically when a newer deployment runs by enabling the [skip outdated deployment jobs](https://docs.gitlab.com/ee/ci/pipelines/settings.html#skip-outdated-deployment-jobs) feature. - -### Deploy secrets - -Is not recommended committing secrets in the repository, you could use a GitLab variable to store them. - -Many frameworks use dotenv to store secrets, let's create a GitLab file variable named `DOTENV`, so it can be deployed along with the code. - -Set up a deployer task to copy secrets to the server: - -```php -task('deploy:secrets', function () { - upload(getenv('DOTENV'), '{{deploy_path}}/shared/.env'); -}); -``` - -Run the task immediately after updating the code. diff --git a/docs/cli.md b/docs/cli.md deleted file mode 100755 index 0ad1ca71e..000000000 --- a/docs/cli.md +++ /dev/null @@ -1,147 +0,0 @@ -# CLI Usage - -We recommend adding next alias to your .bashrc file: - -```bash -alias dep='vendor/bin/dep' -``` - -As well as installing completion script for Deployer, completion supports: - -- tasks, -- options, -- host names, -- and configs. - -For example for macOS run next commands: - -```bash -brew install bash-completion -dep completion bash > /usr/local/etc/bash_completion.d/deployer -``` - -## Overriding configuration options - -For example, if your _deploy.php_ file contains this configuration: - -```php -set('ssh_multiplexing', false); -``` - -And you want to enable [ssh multiplexing](https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing) without modifying the recipe, you can pass the `-o` option to the `dep` command: - -``` -dep deploy -o ssh_multiplexing=true -``` - -To override multiple config options, you can pass multiple `-o` args: - -``` -dep deploy -o ssh_multiplexing=true -o branch=master -``` - -## Running arbitrary commands - -Run any command on one or more hosts: - -``` -dep run 'uptime -p' -``` - -## Tree command - -Deployer has group tasks and before/after hooks, so see task tree use **dep tree** command: - -``` -$ dep tree deploy -The task-tree for deploy: -└── deploy - ├── deploy:prepare - │ ├── deploy:info - │ ├── deploy:setup - │ ├── deploy:lock - │ ├── deploy:release - │ ├── deploy:update_code - │ ├── build // after deploy:update_code - │ ├── deploy:shared - │ └── deploy:writable - ├── deploy:vendors - ├── artisan:storage:link - ├── artisan:config:cache - ├── artisan:route:cache - ├── artisan:view:cache - ├── artisan:migrate - └── deploy:publish - ├── deploy:symlink - ├── deploy:unlock - ├── deploy:cleanup - └── deploy:success -``` - -## Execution plan - -Before executing tasks, Deployer needs to flatten task tree and to decide in which order it will be executing tasks -on which hosts. Use `--plan` option to output table with tasks/hosts: - -``` -$ dep deploy --plan all -┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐ -│ prod01 │ prod02 │ prod03 │ prod04 │ -├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤ -│ deploy:info │ deploy:info │ deploy:info │ deploy:info │ -│ deploy:setup │ deploy:setup │ deploy:setup │ deploy:setup │ -│ deploy:lock │ deploy:lock │ deploy:lock │ deploy:lock │ -│ deploy:release │ deploy:release │ deploy:release │ deploy:release │ -│ deploy:update_code │ deploy:update_code │ deploy:update_code │ deploy:update_code │ -│ build │ build │ build │ build │ -│ deploy:shared │ deploy:shared │ deploy:shared │ deploy:shared │ -│ deploy:writable │ deploy:writable │ deploy:writable │ deploy:writable │ -│ deploy:vendors │ deploy:vendors │ deploy:vendors │ deploy:vendors │ -│ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │ -│ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │ -│ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │ -│ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │ -│ artisan:migrate │ artisan:migrate │ artisan:migrate │ artisan:migrate │ -│ deploy:symlink │ - │ - │ - │ -│ - │ deploy:symlink │ - │ - │ -│ - │ - │ deploy:symlink │ - │ -│ - │ - │ - │ deploy:symlink │ -│ deploy:unlock │ deploy:unlock │ deploy:unlock │ deploy:unlock │ -│ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │ -│ deploy:success │ deploy:success │ deploy:success │ deploy:success │ -└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘ -``` - -The **deploy.php**: - -```php -host('prod[01:04]'); -task('deploy:symlink')->limit(1); -``` - -## The `runLocally` working dir - -By default `runLocally()` commands are executed relative to the recipe file directory. -This can be overridden globally by setting an environment variable: - -``` -DEPLOYER_ROOT=. dep taskname` -``` - -Alternatively the root directory can be overridden per command via the cwd configuration. - -```php -runLocally('ls', ['cwd' => '/root/directory']); -``` - -## Play blackjack - -> Yeah, well. I'm gonna go build my own theme park... with blackjack and hookers! -> -> In fact, forget the park! -> -> — Bender - -``` -dep blackjack -``` diff --git a/docs/contrib/README.md b/docs/contrib/README.md deleted file mode 100644 index 221fbfe1e..000000000 --- a/docs/contrib/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# All Contrib Recipes - -* [Bugsnag Recipe](/docs/contrib/bugsnag.md) -* [Cachetool Recipe](/docs/contrib/cachetool.md) -* [Chatwork Recipe](/docs/contrib/chatwork.md) -* [Cimonitor Recipe](/docs/contrib/cimonitor.md) -* [Cloudflare Recipe](/docs/contrib/cloudflare.md) -* [Cpanel Recipe](/docs/contrib/cpanel.md) -* [Crontab Recipe](/docs/contrib/crontab.md) -* [Directadmin Recipe](/docs/contrib/directadmin.md) -* [Discord Recipe](/docs/contrib/discord.md) -* [Grafana Recipe](/docs/contrib/grafana.md) -* [Hangouts Recipe](/docs/contrib/hangouts.md) -* [Hipchat Recipe](/docs/contrib/hipchat.md) -* [Ispmanager Recipe](/docs/contrib/ispmanager.md) -* [Mattermost Recipe](/docs/contrib/mattermost.md) -* [Ms-teams Recipe](/docs/contrib/ms-teams.md) -* [Newrelic Recipe](/docs/contrib/newrelic.md) -* [Npm Recipe](/docs/contrib/npm.md) -* [Phinx Recipe](/docs/contrib/phinx.md) -* [Php-fpm Recipe](/docs/contrib/php-fpm.md) -* [Rabbit Recipe](/docs/contrib/rabbit.md) -* [Raygun Recipe](/docs/contrib/raygun.md) -* [Rocketchat Recipe](/docs/contrib/rocketchat.md) -* [Rollbar Recipe](/docs/contrib/rollbar.md) -* [Rsync Recipe](/docs/contrib/rsync.md) -* [Sentry Recipe](/docs/contrib/sentry.md) -* [Slack Recipe](/docs/contrib/slack.md) -* [Telegram Recipe](/docs/contrib/telegram.md) -* [Webpack_encore Recipe](/docs/contrib/webpack_encore.md) -* [Workplace Recipe](/docs/contrib/workplace.md) -* [Yammer Recipe](/docs/contrib/yammer.md) -* [Yarn Recipe](/docs/contrib/yarn.md) \ No newline at end of file diff --git a/docs/contrib/bugsnag.md b/docs/contrib/bugsnag.md deleted file mode 100644 index 491874026..000000000 --- a/docs/contrib/bugsnag.md +++ /dev/null @@ -1,41 +0,0 @@ - - - - -# Bugsnag Recipe - -```php -require 'contrib/bugsnag.php'; -``` - -[Source](/contrib/bugsnag.php) - - - - -## Configuration - -- *bugsnag_api_key* – the API Key associated with the project. Informs Bugsnag which project has been deployed. This is the only required field. -- *bugsnag_provider* – the name of your source control provider. Required when repository is supplied and only for on-premise services. -- *bugsnag_app_version* – the app version of the code you are currently deploying. Only set this if you tag your releases with semantic version numbers and deploy infrequently. (Optional.) - -## Usage - -Since you should only notify Bugsnag of a successful deployment, the `bugsnag:notify` task should be executed right at the end. - -```php -after('deploy', 'bugsnag:notify'); -``` - - - -## Tasks - -### bugsnag:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/bugsnag.php#L23) - -Notifies Bugsnag of deployment. - - - - diff --git a/docs/contrib/cachetool.md b/docs/contrib/cachetool.md deleted file mode 100644 index c257ea739..000000000 --- a/docs/contrib/cachetool.md +++ /dev/null @@ -1,138 +0,0 @@ - - - - -# Cachetool Recipe - -```php -require 'contrib/cachetool.php'; -``` - -[Source](/contrib/cachetool.php) - - - - -## Configuration - -- **cachetool** *(optional)*: accepts a *string* with the unix socket or ip address to php-fpm. If `cachetool` is not given, then the application will look for a `cachetool.yml` file and read the configuration from there. - - ```php - set('cachetool', '/var/run/php-fpm.sock'); - // or - set('cachetool', '127.0.0.1:9000'); - ``` - -You can also specify different cachetool settings for each host: -```php -host('staging') - ->set('cachetool', '127.0.0.1:9000'); - -host('production') - ->set('cachetool', '/var/run/php-fpm.sock'); -``` - -By default, if no `cachetool` parameter is provided, this recipe will fallback to the global setting. - -If your deployment user does not have permission to access the php-fpm.sock, you can alternatively use -the web adapter that creates a temporary php file and makes a web request to it with a configuration like -```php -set('cachetool_args', '--web --web-path=./public --web-url=https://{{hostname}}'); -``` - -## Usage - -Since APCu and OPcache deal with compiling and caching files, they should be executed right after the symlink is created for the new release: - -```php -after('deploy:symlink', 'cachetool:clear:opcache'); -or -after('deploy:symlink', 'cachetool:clear:apcu'); -``` - -## Read more - -Read more information about cachetool on the website: -http://gordalina.github.io/cachetool/ - - -## Configuration -### cachetool -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L48) - - - - - -### cachetool_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L56) - -URL to download cachetool from if it is not available - -CacheTool 9.x works with PHP >=8.1 -CacheTool 8.x works with PHP >=8.0 -CacheTool 7.x works with PHP >=7.3 - -```php title="Default value" -'https://github.com/gordalina/cachetool/releases/download/9.0.0/cachetool.phar' -``` - - -### cachetool_args -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L57) - - - - - -### bin/cachetool -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L58) - - - -```php title="Default value" -if (!test('[ -f {{release_or_current_path}}/cachetool.phar ]')) { -run("cd {{release_or_current_path}} && curl -sLO {{cachetool_url}}"); -} -return '{{release_or_current_path}}/cachetool.phar'; -``` - - -### cachetool_options -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L64) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### cachetool:clear:opcache -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L81) - -Clears OPcode cache. - -Clear opcache cache - - -### cachetool:clear:apcu -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L89) - -Clears APCu system cache. - -Clear APCU cache - - -### cachetool:clear:stat -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L97) - -Clears file status and realpath caches. - -Clear file status cache, including the realpath cache - - diff --git a/docs/contrib/chatwork.md b/docs/contrib/chatwork.md deleted file mode 100644 index 0c9213e07..000000000 --- a/docs/contrib/chatwork.md +++ /dev/null @@ -1,205 +0,0 @@ - - - - -# Chatwork Recipe - -```php -require 'contrib/chatwork.php'; -``` - -[Source](/contrib/chatwork.php) - - - -# Chatwork Recipe - -## Installing - 1. Create chatwork account by any manual in the internet - 2. Take chatwork token (Like: b29a700e2d15bef3f26ae6a5c142d1ea) and set `chatwork_token` parameter - 3. Take chatwork room id from url after clicked on the room, and set `chatwork_room_id` parameter - 4. If you want, you can edit `chatwork_notify_text`, `chatwork_success_text` or `chatwork_failure_text` - 5. Require chatwork recipe in your `deploy.php` file - -```php -# https://deployer.org/recipes.html - -require 'recipe/chatwork.php'; -``` - -Add hook on deploy: - -```php -before('deploy', 'chatwork:notify'); -``` - -## Configuration - -- `chatwork_token` – chatwork bot token, **required** -- `chatwork_room_id` — chatwork room to push messages to **required** -- `chatwork_notify_text` – notification message template - ``` - [info] - [title](*) Deployment Status: Deploying[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info] - ``` -- `chatwork_success_text` – success template, default: - ``` - [info] - [title](*) Deployment Status: Successfully[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info]" - ``` -- `chatwork_failure_text` – failure template, default: - ``` - [info] - [title](*) Deployment Status: Failed[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info]" - ``` - -## Tasks - -- `chatwork:notify` – send message to chatwork -- `chatwork:notify:success` – send success message to chatwork -- `chatwork:notify:failure` – send failure message to chatwork - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'chatwork:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('success', 'chatwork:notify:success'); -``` -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'chatwork:notify:failure'); -``` - - -## Configuration -### chatwork_token -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L91) - -Chatwork settings -:::info Required -Throws exception if not set. -::: - - - - -### chatwork_room_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L94) - - -:::info Required -Throws exception if not set. -::: - - - - -### chatwork_api -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L97) - - - -```php title="Default value" -return 'https://api.chatwork.com/v2/rooms/' . get('chatwork_room_id') . '/messages'; -``` - - -### chatwork_notify_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L102) - -The Messages - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Deploying[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - -### chatwork_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L103) - - - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Successfully[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - -### chatwork_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L104) - - - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Failed[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - - -## Tasks - -### chatwork_send_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L107) - - - -Helpers - - -### chatwork:test -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L116) - -Tests messages. - -Tasks - - -### chatwork:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L127) - -Notifies Chatwork. - - - - -### chatwork:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L142) - -Notifies Chatwork about deploy finish. - - - - -### chatwork:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L158) - -Notifies Chatwork about deploy failure. - - - - diff --git a/docs/contrib/cimonitor.md b/docs/contrib/cimonitor.md deleted file mode 100644 index 6b981b116..000000000 --- a/docs/contrib/cimonitor.md +++ /dev/null @@ -1,223 +0,0 @@ - - - - -# Cimonitor Recipe - -```php -require 'contrib/cimonitor.php'; -``` - -[Source](/contrib/cimonitor.php) - - - -Monitor your deployments on [CIMonitor](https://github.com/CIMonitor/CIMonitor). - -![CIMonitorGif](https://www.steefmin.xyz/deployer-example.gif) - - -Add tasks on deploy: - -```php -before('deploy', 'cimonitor:notify'); -after('deploy:success', 'cimonitor:notify:success'); -after('deploy:failed', 'cimonitor:notify:failure'); -``` - -## Configuration - -- `cimonitor_webhook` – CIMonitor server webhook url, **required** - ``` - set('cimonitor_webhook', 'https://cimonitor.enrise.com/webhook/deployer'); - ``` -- `cimonitor_title` – the title of application, default the username\reponame combination from `{{repository}}` - ``` - set('cimonitor_title', ''); - ``` -- `cimonitor_user` – User object with name and email, default gets information from `git config` - ``` - set('cimonitor_user', function () { - return [ - 'name' => 'John Doe', - 'email' => 'john@enrise.com', - ]; - }); - ``` - -Various cimonitor statusses are set, in case you want to change these yourselves. See the [CIMonitor documentation](https://cimonitor.readthedocs.io/en/latest/) for the usages of different states. - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'cimonitor:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'cimonitor:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'cimonitor:notify:failure'); -``` - - -## Configuration -### cimonitor_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L63) - -Title of project based on git repo - -```php title="Default value" -$repo = get('repository'); -$pattern = '/\w+\/\w+/'; -return preg_match($pattern, $repo, $titles) ? $titles[0] : $repo; -``` - - -### cimonitor_user -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L68) - - - -```php title="Default value" -return [ -'name' => runLocally('git config --get user.name'), -'email' => runLocally('git config --get user.email'), -]; -``` - - -### cimonitor_status_info -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L76) - -CI monitor status states and job states - -```php title="Default value" -'info' -``` - - -### cimonitor_status_warning -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L77) - - - -```php title="Default value" -'warning' -``` - - -### cimonitor_status_error -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L78) - - - -```php title="Default value" -'error' -``` - - -### cimonitor_status_success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L79) - - - -```php title="Default value" -'success' -``` - - -### cimonitor_job_state_info -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L80) - - - -```php title="Default value" -get('cimonitor_status_info') -``` - - -### cimonitor_job_state_pending -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L81) - - - -```php title="Default value" -'pending' -``` - - -### cimonitor_job_state_running -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L82) - - - -```php title="Default value" -'running' -``` - - -### cimonitor_job_state_warning -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L83) - - - -```php title="Default value" -get('cimonitor_status_warning') -``` - - -### cimonitor_job_state_error -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L84) - - - -```php title="Default value" -get('cimonitor_status_error') -``` - - -### cimonitor_job_state_success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L85) - - - -```php title="Default value" -get('cimonitor_status_success') -``` - - - -## Tasks - -### cimonitor:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L88) - -Notifies CIMonitor. - - - - -### cimonitor:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L114) - -Notifies CIMonitor about deploy finish. - - - - -### cimonitor:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L142) - -Notifies CIMonitor about deploy failure. - - - - diff --git a/docs/contrib/cloudflare.md b/docs/contrib/cloudflare.md deleted file mode 100644 index 47226c85d..000000000 --- a/docs/contrib/cloudflare.md +++ /dev/null @@ -1,43 +0,0 @@ - - - - -# Cloudflare Recipe - -```php -require 'contrib/cloudflare.php'; -``` - -[Source](/contrib/cloudflare.php) - - - - -### Configuration - -- `cloudflare` – array with configuration for cloudflare - - `service_key` – Cloudflare Service Key. If this is not provided, use api_key and email. - - `api_key` – Cloudflare API key generated on the "My Account" page. - - `email` – Cloudflare Email address associated with your account. - - `api_token` – Cloudflare API Token generated on the "My Account" page. - - `domain` – The domain you want to clear (optional if zone_id is provided). - - `zone_id` – Cloudflare Zone ID (optional). - -### Usage - -Since the website should be built and some load is likely about to be applied to your server, this should be one of, -if not the, last tasks before cleanup - - - - -## Tasks - -### deploy:cloudflare -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cloudflare.php#L23) - -Clears Cloudflare Cache. - - - - diff --git a/docs/contrib/cpanel.md b/docs/contrib/cpanel.md deleted file mode 100644 index e75e507f3..000000000 --- a/docs/contrib/cpanel.md +++ /dev/null @@ -1,175 +0,0 @@ - - - - -# Cpanel Recipe - -```php -require 'contrib/cpanel.php'; -``` - -[Source](/contrib/cpanel.php) - - - -### Description -This is a recipe that uses the [cPanel 2 API](https://documentation.cPanel.net/display/DD/Guide+to+cPanel+API+2). - -Unfortunately the [UAPI](https://documentation.cPanel.net/display/DD/Guide+to+UAPI) that is recommended does not have support for creating addon domains. -The main idea behind is for staging purposes but I guess you can use it for other interesting concepts. - -The idea is, every branch possibly has its own staging domain/subdomain (staging-neat-feature.project.com) and database db_neat-feature_project so it can be tested. -This recipe can make the domain/subdomain and database creation part of the deployment process so you don't have to manually create them through an interface. - - -### Configuration -The example uses a .env file and Dotenv for configuration, but you can set the parameters as you wish -``` -set('cpanel', [ - 'host' => getenv('CPANEL_HOST'), - 'port' => getenv('CPANEL_PORT'), - 'username' => getenv('CPANEL_USERNAME'), - 'auth_type' => getenv('CPANEL_AUTH_TYPE'), - 'token' => getenv('CPANEL_TOKEN'), - 'user' => getenv('CPANEL_USER'), - 'db_user' => getenv('CPANEL_DB_USER'), - 'db_user_privileges' => getenv('CPANEL_DB_PRIVILEGES'), - 'timeout' => 500, - - 'allowInStage' => ['staging', 'beta', 'alpha'], - - 'create_domain_format' => '%s-%s-%s', - 'create_domain_values' => ['staging', 'master', get('application')], - 'subdomain_prefix' => substr(md5(get('application')), 0,4) . '-', - 'subdomain_suffix' => getenv('SUDOMAIN_SUFFIX'), - - - 'create_db_format' => '%s_%s-%s-%s', - 'create_db_values' => ['apps', 'staging','master', get('application')], - -]); -``` - -- `cpanel` – array with configuration for cPanel - - `username` – WHM account - - `user` – cPanel account that you want in charge of the domain - - `token` – WHM API token - - `create_domain_format` – Format for name creation of domain - - `create_domain_values` – The actual value reference for naming - - `subdomain_prefix` – cPanel has a weird way of dealing with addons and subdomains, you cannot create 2 addons with the same subdomain, so you need to change it in some way, example uses first 4 chars of md5(app_name) - - `subdomain_suffix` – cPanel has a weird way of dealing with addons and subdomains, so the suffix needs to be your main domain for that account for deletion purposes - - `addondir` – addon dir is different from the deploy path because cPanel "injects" /home/user/ into the path, so tilde cannot be used - - `allowInStage` – Define the stages that cPanel recipe actions are allowed in - - -#### .env file example -``` -CPANEL_HOST=xxx.xxx.xxx.xxx -CPANEL_PORT=2087 -CPANEL_USERNAME=root -CPANEL_TOKEN=xxxx -CPANEL_USER=xxx -CPANEL_AUTH_TYPE=hash -CPANEL_DB_USER=db_user -CPANEL_DB_PRIVILEGES="ALL PRIVILEGES" -SUDOMAIN_SUFFIX=.mymaindomain.com - -``` - -### Tasks - -- `cpanel:createaddondomain` Creates an addon domain -- `cpanel:deleteaddondomain` Removes an addon domain -- `cpanel:createdb` Creates a new database - -### Usage - -A complete example with configs, staging and deployment - -``` -load(); // this is used just so an .env file can be used for credentials - -require 'cpanel.php'; - - -Project name -set('application', 'myproject.com'); -Project repository -set('repository', 'git@github.com:myorg/myproject.com'); - - - - - -set('cpanel', [ - 'host' => getenv('CPANEL_HOST'), - 'port' => getenv('CPANEL_PORT'), - 'username' => getenv('CPANEL_USERNAME'), - 'auth_type' => getenv('CPANEL_AUTH_TYPE'), - 'token' => getenv('CPANEL_TOKEN'), - 'user' => getenv('CPANEL_USER'), - 'db_user' => getenv('CPANEL_DB_USER'), - 'db_user_privileges' => getenv('CPANEL_DB_PRIVILEGES'), - 'timeout' => 500, - 'allowInStage' => ['staging', 'beta', 'alpha'], - - 'create_domain_format' => '%s-%s-%s', - 'create_domain_values' => ['staging', 'master', get('application')], - 'subdomain_prefix' => substr(md5(get('application')), 0,4) . '-', - 'subdomain_suffix' => getenv('SUDOMAIN_SUFFIX'), - - - 'create_db_format' => '%s_%s-%s-%s', - 'create_db_values' => ['apps', 'staging','master', get('application')], - -]); - -host('myproject.com') - ->stage('staging') - ->set('cpanel_createdb', vsprintf(get('cpanel')['create_db_format'], get('cpanel')['create_db_values'])) - ->set('branch', 'dev-branch') - ->set('deploy_path', '~/staging/' . vsprintf(get('cpanel')['create_domain_format'], get('cpanel')['create_domain_values'])) - ->set('addondir', 'staging/' . vsprintf(get('cpanel')['create_domain_format'], get('cpanel')['create_domain_values'])); -Tasks -task('build', function () { - run('cd {{release_path}} && build'); -}); - -after('deploy:prepare', 'cpanel:createaddondomain'); -after('deploy:prepare', 'cpanel:createdb'); -``` - - - -## Tasks - -### cpanel:createdb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L195) - -Creates database though CPanel API. - - - - -### cpanel:createaddondomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L223) - -Creates addon domain though CPanel API. - - - - -### cpanel:deleteaddondomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L246) - -Deletes addon domain though CPanel API. - - - - diff --git a/docs/contrib/crontab.md b/docs/contrib/crontab.md deleted file mode 100644 index 2706aed94..000000000 --- a/docs/contrib/crontab.md +++ /dev/null @@ -1,65 +0,0 @@ - - - - -# Crontab Recipe - -```php -require 'contrib/crontab.php'; -``` - -[Source](/contrib/crontab.php) - - - -Recipe for adding crontab jobs. - -It checks for duplicates by the command part of the job. Changing the schedule will update the crontab. So when you change the command part you have to manually remove the old one. Use `crontab -e` on the server to remove it. - -## Configuration - -- *crontab:jobs* - An array of strings with crontab lines. - -## Usage - -```php -require 'contrib/crontab.php'; - -after('deploy:success', 'crontab:sync'); - -add('crontab:jobs', [ - '* * * * * cd {{current_path}} && {{bin/php}} artisan schedule:run >> /dev/null 2>&1', -]); -``` - - -## Configuration -### bin/crontab -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L26) - -Get path to bin - -```php title="Default value" -return which('crontab'); -``` - - - -## Tasks - -### crontab:load -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L31) - -Loads crontab. - - - - -### crontab:sync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L56) - -Sync crontab jobs. - - - - diff --git a/docs/contrib/directadmin.md b/docs/contrib/directadmin.md deleted file mode 100644 index 1da4c6ed1..000000000 --- a/docs/contrib/directadmin.md +++ /dev/null @@ -1,83 +0,0 @@ - - - - -# Directadmin Recipe - -```php -require 'contrib/directadmin.php'; -``` - -[Source](/contrib/directadmin.php) - - - -### Configuration -- `directadmin` – array with configuration for DirectAdmin - - `host` – DirectAdmin host - - `port` – DirectAdmin port (default: 2222, not required) - - `scheme` – DirectAdmin scheme (default: http, not required) - - `username` – DirectAdmin username - - `password` – DirectAdmin password (it is recommended to use login keys!) - - `db_user` – Database username (required when using directadmin:createdb or directadmin:deletedb) - - `db_name` – Database namse (required when using directadmin:createdb) - - `db_password` – Database password (required when using directadmin:createdb) - - `domain_name` – Domain to create, delete or edit (required when using directadmin:createdomain, directadmin:deletedomain, directadmin:symlink-private-html or directadmin:php-version) - - `domain_ssl` – Enable SSL, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_cgi` – Enable CGI, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_php` – Enable PHP, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_php_version` – Domain PHP Version, default: 1 (required when using directadmin:php-version) - - - - -## Tasks - -### directadmin:createdb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L74) - -Creates a database on DirectAdmin. - - - - -### directadmin:deletedb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L94) - -Deletes a database on DirectAdmin. - - - - -### directadmin:createdomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L109) - -Creates a domain on DirectAdmin. - - - - -### directadmin:deletedomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L127) - -Deletes a domain on DirectAdmin. - - - - -### directadmin:symlink-private-html -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L143) - -Symlink your private_html to public_html. - - - - -### directadmin:php-version -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L159) - -Changes the PHP version from a domain. - - - - diff --git a/docs/contrib/discord.md b/docs/contrib/discord.md deleted file mode 100644 index 510e0bd96..000000000 --- a/docs/contrib/discord.md +++ /dev/null @@ -1,160 +0,0 @@ - - - - -# Discord Recipe - -```php -require 'contrib/discord.php'; -``` - -[Source](/contrib/discord.php) - - - -## Installing - -Add hook on deploy: - -```php -before('deploy', 'discord:notify'); -``` - -## Configuration - -- `discord_channel` – Discord channel ID, **required** -- `discord_token` – Discord channel token, **required** - -- `discord_notify_text` – notification message template, markdown supported, default: - ```markdown - :​information_source: **{{user}}** is deploying branch `{{branch}}` to _{{target}}_ - ``` -- `discord_success_text` – success template, default: - ```markdown - :​white_check_mark: Branch `{{branch}}` deployed to _{{target}}_ successfully - ``` -- `discord_failure_text` – failure template, default: - ```markdown - :​no_entry_sign: Branch `{{branch}}` has failed to deploy to _{{target}}_ - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'discord:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'discord:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'discord:notify:failure'); -``` - - -## Configuration -### discord_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L53) - - - -```php title="Default value" -return 'https://discordapp.com/api/webhooks/{{discord_channel}}/{{discord_token}}/slack'; -``` - - -### discord_notify_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L58) - -Deploy messages - -```php title="Default value" -return [ -'text' => parse(':​information_source: **{{user}}** is deploying branch `{{branch}}` to _{{target}}_'), -]; -``` - - -### discord_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L63) - - - -```php title="Default value" -return [ -'text' => parse(':​white_check_mark: Branch `{{branch}}` deployed to _{{target}}_ successfully'), -]; -``` - - -### discord_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L68) - - - -```php title="Default value" -return [ -'text' => parse(':​no_entry_sign: Branch `{{branch}}` has failed to deploy to _{{target}}_'), -]; -``` - - -### discord_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L75) - -The message - -```php title="Default value" -'discord_notify_text' -``` - - - -## Tasks - -### discord_send_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L78) - - - -Helpers - - -### discord:test -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L86) - -Tests messages. - -Tasks - - -### discord:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L97) - -Notifies Discord. - - - - -### discord:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L105) - -Notifies Discord about deploy finish. - - - - -### discord:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L113) - -Notifies Discord about deploy failure. - - - - diff --git a/docs/contrib/grafana.md b/docs/contrib/grafana.md deleted file mode 100644 index 2f650e4aa..000000000 --- a/docs/contrib/grafana.md +++ /dev/null @@ -1,55 +0,0 @@ - - - - -# Grafana Recipe - -```php -require 'contrib/grafana.php'; -``` - -[Source](/contrib/grafana.php) - - - - -## Configuration options - -- **url** *(required)*: the URL to the creates annotation api endpoint. -- **token** *(required)*: authentication token. Can be created at Grafana Console. -- **time** *(optional)* – set deploy time of annotation. specify epoch milliseconds. (Defaults is set to the current time in epoch milliseconds.) -- **tags** *(optional)* – set tag of annotation. -- **text** *(optional)* – set text of annotation. (Defaults is set to "Deployed " + git log -n 1 --format="%h") - -```php -deploy.php - -set('grafana', [ - 'token' => 'eyJrIj...', - 'url' => 'http://grafana/api/annotations', - 'tags' => ['deploy', 'production'], -]); - -``` - -## Usage - -If you want to create annotation about successful end of deployment. - -```php -after('deploy:success', 'grafana:annotation'); -``` - - - - -## Tasks - -### grafana:annotation -[Source](https://github.com/deployphp/deployer/blob/master/contrib/grafana.php#L38) - -Creates Grafana annotation of deployment. - - - - diff --git a/docs/contrib/hangouts.md b/docs/contrib/hangouts.md deleted file mode 100644 index 52e8e2954..000000000 --- a/docs/contrib/hangouts.md +++ /dev/null @@ -1,130 +0,0 @@ - - - - -# Hangouts Recipe - -```php -require 'contrib/hangouts.php'; -``` - -[Source](/contrib/hangouts.php) - - - - -Add hook on deploy: - -```php -before('deploy', 'chat:notify'); -``` - -## Configuration - -- `chat_webhook` – chat incoming webhook url, **required** -- `chat_title` – the title of your notification card, default `{{application}}` -- `chat_subtitle` – the subtitle of your card, default `{{hostname}}` -- `chat_favicon` – an image for the header of your card, default `http://{{hostname}}/favicon.png` -- `chat_line1` – first line of the text in your card, default: `{{branch}}` -- `chat_line2` – second line of the text in your card, default: `{{stage}}` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'chat:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'chat:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'chat:notify:failure'); -``` - - - -## Configuration -### chat_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L45) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### chat_subtitle -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L49) - - - -```php title="Default value" -get('hostname') -``` - - -### favicon -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L52) - -If 'favicon' is set Google Hangouts Chat will decorate your card with an image. - -```php title="Default value" -'http://{{hostname}}/favicon.png' -``` - - -### chat_line1 -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L55) - -Deploy messages - -```php title="Default value" -'{{branch}}' -``` - - -### chat_line2 -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L56) - - - -```php title="Default value" -'{{stage}}' -``` - - - -## Tasks - -### chat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L59) - -Notifies Google Hangouts Chat. - - - - -### chat:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L101) - -Notifies Google Hangouts Chat about deploy finish. - - - - -### chat:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L143) - -Notifies Google Hangouts Chat about deploy failure. - - - - diff --git a/docs/contrib/hipchat.md b/docs/contrib/hipchat.md deleted file mode 100644 index a35bdf340..000000000 --- a/docs/contrib/hipchat.md +++ /dev/null @@ -1,85 +0,0 @@ - - - - -# Hipchat Recipe - -```php -require 'contrib/hipchat.php'; -``` - -[Source](/contrib/hipchat.php) - - - -## Configuration - -- `hipchat_token` – Hipchat V1 auth token -- `hipchat_room_id` – Room ID or name -- `hipchat_message` – Deploy message, default is `_{{user}}_ deploying `{{branch}}` to *{{target}}*` -- `hipchat_from` – Default to target -- `hipchat_color` – Message color, default is **green** -- `hipchat_url` – The URL to the message endpoint, default is https://api.hipchat.com/v1/rooms/message - -## Usage - -Since you should only notify Hipchat room of a successful deployment, the `hipchat:notify` task should be executed right at the end. - -```php -after('deploy', 'hipchat:notify'); -``` - - - -## Configuration -### hipchat_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L25) - - - -```php title="Default value" -'green' -``` - - -### hipchat_from -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L26) - - - -```php title="Default value" -'{{target}}' -``` - - -### hipchat_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L27) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### hipchat_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L28) - - - -```php title="Default value" -'https://api.hipchat.com/v1/rooms/message' -``` - - - -## Tasks - -### hipchat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L31) - -Notifies Hipchat channel of deployment. - - - - diff --git a/docs/contrib/ispmanager.md b/docs/contrib/ispmanager.md deleted file mode 100644 index fcfd98fb9..000000000 --- a/docs/contrib/ispmanager.md +++ /dev/null @@ -1,245 +0,0 @@ - - - - -# Ispmanager Recipe - -```php -require 'contrib/ispmanager.php'; -``` - -[Source](/contrib/ispmanager.php) - - - -This recipe for work with ISPManager Lite panel by API. - - -## Configuration -### ispmanager_owner -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L10) - - - -```php title="Default value" -'www-root' -``` - - -### ispmanager_doc_root -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L11) - - - -```php title="Default value" -'/var/www/' . get('ispmanager_owner') . '/data/' -``` - - -### ispmanager -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L14) - -ISPManager default configuration - -```php title="Default value" -[ - 'api' => [ - 'dsn' => 'https://root:password@localhost:1500/ispmgr', - 'secure' => true, - ], - 'createDomain' => NULL, - 'updateDomain' => NULL, - 'deleteDomain' => NULL, - 'createDatabase' => NULL, - 'deleteDatabase' => NULL, - 'phpSelect' => NULL, - 'createAlias' => NULL, - 'deleteAlias' => NULL, -] -``` - - -### vhost -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L30) - -Vhost default configuration - -```php title="Default value" -[ - 'name' => '{{domain}}', - 'php_enable' => 'on', - 'aliases' => 'www.{{domain}}', - 'home' => 'www/{{domain}}', - 'owner' => get('ispmanager_owner'), - 'email' => 'webmaster@{{domain}}', - 'charset' => 'off', - 'dirindex' => 'index.php uploaded.html', - 'ssi' => 'on', - 'php' => 'on', - 'php_mode' => 'php_mode_mod', - 'basedir' => 'on', - 'php_apache_version' => 'native', - 'cgi' => 'off', - 'log_access' => 'on', - 'log_error' => 'on', -] -``` - - -### ispmanager_session -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L50) - -Storage - - - -### ispmanager_databases -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L51) - - - -```php title="Default value" -[ - 'servers' => [], - 'hosts' => [], - 'dblist' => [], -] -``` - - -### ispmanager_domains -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L57) - - - - - -### ispmanager_phplist -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L58) - - - - - -### ispmanager_aliaslist -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L59) - - - - - - -## Tasks - -### ispmanager:init -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L62) - -Installs ispmanager. - - - - -### ispmanager:db-server-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L85) - -Takes database servers list. - - - - -### ispmanager:db-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L122) - -Takes databases list. - - - - -### ispmanager:domain-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L144) - -Takes domain list. - - - - -### ispmanager:db-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L160) - -Creates new database. - - - - -### ispmanager:db-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L230) - -Deletes database. - - - - -### ispmanager:domain-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L281) - -Creates new domain. - - - - -### ispmanager:get-php-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L327) - -Gets allowed PHP modes and versions. - - - - -### ispmanager:print-php-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L373) - -Prints allowed PHP modes and versions. - - - - -### ispmanager:domain-php-select -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L411) - -Switches PHP version for domain. - - - - -### ispmanager:domain-alias-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L480) - -Creates new domain alias. - - - - -### ispmanager:domain-alias-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L549) - -Deletes domain alias. - - - - -### ispmanager:domain-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L617) - -Deletes domain. - - - - -### ispmanager:process -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L664) - -Auto task processing. - - - - diff --git a/docs/contrib/mattermost.md b/docs/contrib/mattermost.md deleted file mode 100644 index 5b5516bac..000000000 --- a/docs/contrib/mattermost.md +++ /dev/null @@ -1,206 +0,0 @@ - - - - -# Mattermost Recipe - -```php -require 'contrib/mattermost.php'; -``` - -[Source](/contrib/mattermost.php) - - - -## Installing - -Create a Mattermost incoming webhook, through the administration panel. - -Add hook on deploy: - -``` -before('deploy', 'mattermost:notify'); -``` - -## Configuration - - - `mattermost_webhook` - incoming mattermost webook **required** - ``` - set('mattermost_webook', 'https://{your-mattermost-site}/hooks/xxx-generatedkey-xxx'); - ``` - - - `mattermost_channel` - overrides the channel the message posts in - ``` - set('mattermost_channel', 'town-square'); - ``` - - - `mattermost_username` - overrides the username the message posts as - ``` - set('mattermost_username', 'deployer'); - ``` - - - `mattermost_icon_url` - overrides the profile picture the message posts with - ``` - set('mattermost_icon_url', 'https://domain.com/your-icon.png'); - ``` - - - `mattermost_text` - notification message - ``` - set('mattermost_text', '_{{user}}_ deploying `{{branch}}` to **{{target}}**'); - ``` - - - `mattermost_success_text` – success template, default: - ``` - set('mattermost_success_text', 'Deploy to **{{target}}** successful {{mattermost_success_emoji}}'); - ``` - - - `mattermost_failure_text` – failure template, default: - ``` - set('mattermost_failure_text', 'Deploy to **{{target}}** failed {{mattermost_failure_emoji}}'); - ``` - - - `mattermost_success_emoji` – emoji added at the end of success text - - `mattermost_failure_emoji` – emoji added at the end of failure text - - For detailed information about Mattermost hooks see: https://developers.mattermost.com/integrate/incoming-webhooks/ - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'mattermost:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'mattermost:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'mattermost:notify:failure'); -``` - - - -## Configuration -### mattermost_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L80) - - - -```php title="Default value" -null -``` - - -### mattermost_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L81) - - - -```php title="Default value" -null -``` - - -### mattermost_username -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L82) - - - -```php title="Default value" -'deployer' -``` - - -### mattermost_icon_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L83) - - - -```php title="Default value" -null -``` - - -### mattermost_success_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L85) - - - -```php title="Default value" -':​white_check_mark:' -``` - - -### mattermost_failure_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L86) - - - -```php title="Default value" -':​x:' -``` - - -### mattermost_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L88) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to **{{target}}**' -``` - - -### mattermost_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L89) - - - -```php title="Default value" -'Deploy to **{{target}}** successful {{mattermost_success_emoji}}' -``` - - -### mattermost_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L90) - - - -```php title="Default value" -'Deploy to **{{target}}** failed {{mattermost_failure_emoji}}' -``` - - - -## Tasks - -### mattermost:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L93) - -Notifies mattermost. - - - - -### mattermost:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L114) - -Notifies mattermost about deploy finish. - - - - -### mattermost:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L135) - -Notifies mattermost about deploy failure. - - - - diff --git a/docs/contrib/ms-teams.md b/docs/contrib/ms-teams.md deleted file mode 100644 index e4332b478..000000000 --- a/docs/contrib/ms-teams.md +++ /dev/null @@ -1,183 +0,0 @@ - - - - -# Ms-teams Recipe - -```php -require 'contrib/ms-teams.php'; -``` - -[Source](/contrib/ms-teams.php) - - - -## Installing - -Require ms-teams recipe in your `deploy.php` file: - -Setup: -1. Open MS Teams -2. Navigate to Teams section -3. Select existing or create new team -4. Select existing or create new channel -5. Hover over channel to get tree dots, click, in menu select "Connectors" -6. Search for and configure "Incoming Webhook" -7. Confirm/create and copy your Webhook URL -8. Setup deploy.php - Add in header: -```php -require 'contrib/ms-teams.php'; -set('teams_webhook', 'https://outlook.office.com/webhook/...'); -``` -Add in content: -```php -before('deploy', 'teams:notify'); -after('deploy:success', 'teams:notify:success'); -after('deploy:failed', 'teams:notify:failure'); -``` -9.) Sip your coffee - -## Configuration - -- `teams_webhook` – teams incoming webhook url, **required** - ``` - set('teams_webhook', 'https://outlook.office.com/webhook/...'); - ``` -- `teams_title` – the title of application, default `{{application}}` -- `teams_text` – notification message template, markdown supported - ``` - set('teams_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `teams_success_text` – success template, default: - ``` - set('teams_success_text', 'Deploy to *{{target}}* successful'); - ``` -- `teams_failure_text` – failure template, default: - ``` - set('teams_failure_text', 'Deploy to *{{target}}* failed'); - ``` - -- `teams_color` – color's attachment -- `teams_success_color` – success color's attachment -- `teams_failure_color` – failure color's attachment - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'teams:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'teams:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'teams:notify:failure'); -``` - - -## Configuration -### teams_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L78) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### teams_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L83) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### teams_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L84) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### teams_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L85) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### teams_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L88) - -Color of attachment - -```php title="Default value" -'#4d91f7' -``` - - -### teams_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L89) - - - -```php title="Default value" -'#00c100' -``` - - -### teams_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L90) - - - -```php title="Default value" -'#ff0909' -``` - - - -## Tasks - -### teams:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L93) - -Notifies Teams. - - - - -### teams:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L107) - -Notifies Teams about deploy finish. - - - - -### teams:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L121) - -Notifies Teams about deploy failure. - - - - diff --git a/docs/contrib/newrelic.md b/docs/contrib/newrelic.md deleted file mode 100644 index ccb9b48ef..000000000 --- a/docs/contrib/newrelic.md +++ /dev/null @@ -1,84 +0,0 @@ - - - - -# Newrelic Recipe - -```php -require 'contrib/newrelic.php'; -``` - -[Source](/contrib/newrelic.php) - - - -## Configuration - -- `newrelic_app_id` – newrelic's app id -- `newrelic_api_key` – newrelic's api key -- `newrelic_description` – message to send -- `newrelic_endpoint` – newrelic's REST API endpoint - -## Usage - -Since you should only notify New Relic of a successful deployment, the `newrelic:notify` task should be executed right at the end. - -```php -after('deploy', 'newrelic:notify'); -``` - - - -## Configuration -### newrelic_app_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L23) - - -:::info Required -Throws exception if not set. -::: - - - - -### newrelic_description -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L27) - - - -```php title="Default value" -return runLocally('git log -n 1 --format="%an: %s" | tr \'"\' "\'"'); -``` - - -### newrelic_revision -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L31) - - - -```php title="Default value" -return runLocally('git log -n 1 --format="%h"'); -``` - - -### newrelic_endpoint -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L35) - - - -```php title="Default value" -'api.newrelic.com' -``` - - - -## Tasks - -### newrelic:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L38) - -Notifies New Relic of deployment. - - - - diff --git a/docs/contrib/npm.md b/docs/contrib/npm.md deleted file mode 100644 index b8e4046ac..000000000 --- a/docs/contrib/npm.md +++ /dev/null @@ -1,52 +0,0 @@ - - - - -# Npm Recipe - -```php -require 'contrib/npm.php'; -``` - -[Source](/contrib/npm.php) - - - -## Configuration - -- `bin/npm` *(optional)*: set npm binary, automatically detected otherwise. - -## Usage - -```php -after('deploy:update_code', 'npm:install'); -``` - - - -## Configuration -### bin/npm -[Source](https://github.com/deployphp/deployer/blob/master/contrib/npm.php#L16) - - - -```php title="Default value" -return which('npm'); -``` - - - -## Tasks - -### npm:install -[Source](https://github.com/deployphp/deployer/blob/master/contrib/npm.php#L26) - -Installs npm packages. - -Uses `npm ci` command. This command is similar to npm install, -except it's meant to be used in automated environments such as -test platforms, continuous integration, and deployment -- or -any situation where you want to make sure you're doing a clean -install of your dependencies. - - diff --git a/docs/contrib/phinx.md b/docs/contrib/phinx.md deleted file mode 100644 index 8a1020da0..000000000 --- a/docs/contrib/phinx.md +++ /dev/null @@ -1,118 +0,0 @@ - - - - -# Phinx Recipe - -```php -require 'contrib/phinx.php'; -``` - -[Source](/contrib/phinx.php) - - - - -## Configuration options - -All options are in the config parameter `phinx` specified as an array (instead of the `phinx_path` variable). -All parameters are *optional*, but you can specify them with a dictionary (to change all parameters) -or by deployer dot notation (to change one option). - -### Phinx params - -- `phinx.environment` -- `phinx.date` -- `phinx.configuration` N.B. current directory is the project directory -- `phinx.target` -- `phinx.seed` -- `phinx.parser` -- `phinx.remove-all` (pass empty string as value) - -### Phinx path params - -- `phinx_path` Specify phinx path (by default phinx is searched for in $PATH, ./vendor/bin and ~/.composer/vendor/bin) - -### Example of usage - -```php -$phinx_env_vars = [ - 'environment' => 'development', - 'configuration' => './migration/.phinx.yml', - 'target' => '20120103083322', - 'remove-all' => '', -]; - -set('phinx_path', '/usr/local/phinx/bin/phinx'); -set('phinx', $phinx_env_vars); - -after('cleanup', 'phinx:migrate'); - -or set it for a specific server -host('dev') - ->user('user') - ->set('deploy_path', '/var/www') - ->set('phinx', $phinx_env_vars) - ->set('phinx_path', ''); -``` - -## Suggested Usage - -You can run all tasks before or after any -tasks (but you need to specify external configs for phinx). -If you use internal configs (which are in your project) you need -to run it after the `deploy:update_code` task is completed. - -## Read more - -For further reading see [phinx.org](https://phinx.org). Complete descriptions of all possible options can be found on the [commands page](http://docs.phinx.org/en/latest/commands.html). - - - -## Configuration -### bin/phinx -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L80) - -Path to Phinx -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### phinx:migrate -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L148) - -Migrats database with phinx. - - - - -### phinx:rollback -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L169) - -Rollbacks database migrations with phinx. - - - - -### phinx:seed -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L190) - -Seeds database with phinx. - - - - -### phinx:breakpoint -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L210) - -Sets a migrations breakpoint with phinx. - - - - diff --git a/docs/contrib/php-fpm.md b/docs/contrib/php-fpm.md deleted file mode 100644 index f5ca98a20..000000000 --- a/docs/contrib/php-fpm.md +++ /dev/null @@ -1,75 +0,0 @@ - - - - -# Php-fpm Recipe - -```php -require 'contrib/php-fpm.php'; -``` - -[Source](/contrib/php-fpm.php) - - - - -:::caution -Do **not** reload php-fpm. Some user requests could fail or not complete in the -process of reloading. - -Instead, configure your server [properly](https://ï.at/avoid-php-fpm-reloading). If you're using Deployer's provision -recipe, it's already configured the right way and no php-fpm reload is needed. -::: - -## Configuration - -- `php_fpm_version` – The PHP-fpm version. For example: `8.0`. -- `php_fpm_service` – The full name of the PHP-fpm service. Defaults to `php{{php_fpm_version}}-fpm`. -- `php_fpm_command` – The command to run to reload PHP-fpm. Defaults to `sudo systemctl reload {{php_fpm_service}}`. - -## Usage - -Start by explicitely providing the current version of PHP-version using the `php_fpm_version`. -Alternatively, you may use any of the options above to configure how PHP-fpm should reload. - -Then, add the `php-fpm:reload` task at the end of your deployments by using the `after` method like so. - -```php -set('php_fpm_version', '8.0'); -after('deploy', 'php-fpm:reload'); -``` - - - -## Configuration -### php_fpm_version -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L34) - -Automatically detects by using [bin/php](/docs/recipe/common.md#bin/php). - -```php title="Default value" -return run('{{bin/php}} -r "printf(\'%d.%d\', PHP_MAJOR_VERSION, PHP_MINOR_VERSION);"'); -``` - - -### php_fpm_service -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L38) - - - -```php title="Default value" -'php{{php_fpm_version}}-fpm' -``` - - - -## Tasks - -### php-fpm:reload -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L41) - -Reloads the php-fpm service. - - - - diff --git a/docs/contrib/rabbit.md b/docs/contrib/rabbit.md deleted file mode 100644 index 2a3302318..000000000 --- a/docs/contrib/rabbit.md +++ /dev/null @@ -1,73 +0,0 @@ - - - - -# Rabbit Recipe - -```php -require 'contrib/rabbit.php'; -``` - -[Source](/contrib/rabbit.php) - - - -### Installing - -```php -deploy.php - -require 'recipe/rabbit.php'; -``` - -### Configuration options - -- **rabbit** *(required)*: accepts an *array* with the connection information to [rabbitmq](http://www.rabbitmq.com) server token and team name. - - -You can provide also other configuration options: - - - *host* - default is localhost - - *port* - default is 5672 - - *username* - default is *guest* - - *password* - default is *guest* - - *channel* - no default value, need to be specified via config - - *message* - default is **Deployment to '{$host}' on *{$prod}* was successful\n($releasePath)** - - *vhost* - default is - - -```php -deploy.php - -set('rabbit', [ - 'host' => 'localhost', - 'port' => '5672', - 'username' => 'guest', - 'password' => 'guest', - 'channel' => 'notify-channel', - 'vhost' => '/my-app' -]); -``` - -### Suggested Usage - -Since you should only notify RabbitMQ channel of a successful deployment, the `deploy:rabbit` task should be executed right at the end. - -```php -deploy.php - -before('deploy:end', 'deploy:rabbit'); -``` - - - -## Tasks - -### deploy:rabbit -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rabbit.php#L58) - -Notifies RabbitMQ channel about deployment. - - - - diff --git a/docs/contrib/raygun.md b/docs/contrib/raygun.md deleted file mode 100644 index b37217e48..000000000 --- a/docs/contrib/raygun.md +++ /dev/null @@ -1,45 +0,0 @@ - - - - -# Raygun Recipe - -```php -require 'contrib/raygun.php'; -``` - -[Source](/contrib/raygun.php) - - - - -## Configuration - -- `raygun_api_key` – the API key of your Raygun application -- `raygun_version` – the version of your application that this deployment is releasing -- `raygun_owner_name` – the name of the person creating this deployment -- `raygun_email` – the email of the person creating this deployment -- `raygun_comment` – the deployment notes -- `raygun_scm_identifier` – the commit that this deployment was built off -- `raygun_scm_type` - the source control system you use - -## Usage - -To notify Raygun of a successful deployment, you can use the 'raygun:notify' task after a deployment. - -```php -after('deploy', 'raygun:notify'); -``` - - - -## Tasks - -### raygun:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/raygun.php#L27) - -Notifies Raygun of deployment. - - - - diff --git a/docs/contrib/rocketchat.md b/docs/contrib/rocketchat.md deleted file mode 100644 index e56773851..000000000 --- a/docs/contrib/rocketchat.md +++ /dev/null @@ -1,230 +0,0 @@ - - - - -# Rocketchat Recipe - -```php -require 'contrib/rocketchat.php'; -``` - -[Source](/contrib/rocketchat.php) - - - -## Installing - -Create a RocketChat incoming webhook, through the administration panel. - -Add hook on deploy: - -``` -before('deploy', 'rocketchat:notify'); -``` - -## Configuration - - - `rocketchat_webhook` - incoming rocketchat webook **required** - ``` - set('rocketchat_webhook', 'https://rocketchat.yourcompany.com/hooks/XXXXX'); - ``` - - - `rocketchat_title` - the title of the application, defaults to `{{application}}` - - `rocketchat_text` - notification message - ``` - set('rocketchat_text', '_{{user}}_ deploying {{branch}} to {{target}}'); - ``` - - - `rocketchat_success_text` – success template, default: - ``` - set('rocketchat_success_text', 'Deploy to *{{target}}* successful'); - ``` - - `rocketchat_failure_text` – failure template, default: - ``` - set('rocketchat_failure_text', 'Deploy to *{{target}}* failed'); - ``` - - - `rocketchat_color` – color's attachment - - `rocketchat_success_color` – success color's attachment - - `rocketchat_failure_color` – failure color's attachment - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'rocketchat:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'rocketchat:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'rocketchat:notify:failure'); -``` - - - -## Configuration -### rockchat_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L64) - - - -```php title="Default value" -return get('application', 'Project'); -``` - - -### rocketchat_icon_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L68) - - - -```php title="Default value" -':robot:' -``` - - -### rocketchat_icon_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L69) - - - -```php title="Default value" -null -``` - - -### rocketchat_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L71) - - - -```php title="Default value" -null -``` - - -### rocketchat_room_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L72) - - - -```php title="Default value" -null -``` - - -### rocketchat_username -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L73) - - - -```php title="Default value" -null -``` - - -### rocketchat_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L74) - - - -```php title="Default value" -null -``` - - -### rocketchat_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L76) - - - -```php title="Default value" -'#000000' -``` - - -### rocketchat_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L77) - - - -```php title="Default value" -'#00c100' -``` - - -### rocketchat_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L78) - - - -```php title="Default value" -'#ff0909' -``` - - -### rocketchat_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L80) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### rocketchat_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L81) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### rocketchat_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L82) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - - -## Tasks - -### rocketchat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L85) - -Notifies RocketChat. - - - - -### rocketchat:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L115) - -Notifies RocketChat about deploy finish. - - - - -### rocketchat:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L145) - -Notifies RocketChat about deploy failure. - - - - diff --git a/docs/contrib/rollbar.md b/docs/contrib/rollbar.md deleted file mode 100644 index ec32b1c13..000000000 --- a/docs/contrib/rollbar.md +++ /dev/null @@ -1,56 +0,0 @@ - - - - -# Rollbar Recipe - -```php -require 'contrib/rollbar.php'; -``` - -[Source](/contrib/rollbar.php) - - - - -## Configuration - -- `rollbar_token` – access token to rollbar api -- `rollbar_comment` – comment about deploy, default to - ```php - set('rollbar_comment', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `rollbar_username` – rollbar user name - -## Usage - -Since you should only notify Rollbar channel of a successful deployment, the `rollbar:notify` task should be executed right at the end. - -```php -after('deploy', 'rollbar:notify'); -``` - - - -## Configuration -### rollbar_comment -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rollbar.php#L26) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - - -## Tasks - -### rollbar:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rollbar.php#L29) - -Notifies Rollbar of deployment. - - - - diff --git a/docs/contrib/rsync.md b/docs/contrib/rsync.md deleted file mode 100644 index 310910704..000000000 --- a/docs/contrib/rsync.md +++ /dev/null @@ -1,233 +0,0 @@ - - - - -# Rsync Recipe - -```php -require 'contrib/rsync.php'; -``` - -[Source](/contrib/rsync.php) - - - -:::warning -This must not be confused with `/src/Utility/Rsync.php`, deployer's built-in rsync. Their configuration options are also very different, read carefully below. -::: - -## Configuration options - -- **rsync**: Accepts an array with following rsync options (all are optional and defaults are ok): - - *exclude*: accepts an *array* with patterns to be excluded from sending to server - - *exclude-file*: accepts a *string* containing absolute path to file, which contains exclude patterns - - *include*: accepts an *array* with patterns to be included in sending to server - - *include-file*: accepts a *string* containing absolute path to file, which contains include patterns - - *filter*: accepts an *array* of rsync filter rules - - *filter-file*: accepts a *string* containing merge-file filename. - - *filter-perdir*: accepts a *string* containing merge-file filename to be scanned and merger per each directory in rsync list on files to send - - *flags*: accepts a *string* of flags to set when calling rsync command. Please **avoid** flags that accept params, and use *options* instead. - - *options*: accepts an *array* of options to set when calling rsync command. **DO NOT** prefix options with `--` as it's automatically added. - - *timeout*: accepts an *int* defining timeout for rsync command to run locally. - -### Sample Configuration: - -Following is default configuration. By default rsync ignores only git dir and `deploy.php` file. - -```php -deploy.php - -set('rsync',[ - 'exclude' => [ - '.git', - 'deploy.php', - ], - 'exclude-file' => false, - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir'=> false, - 'flags' => 'rz', // Recursive, with compress - 'options' => ['delete'], - 'timeout' => 60, -]); -``` - -If You have multiple excludes, You can put them in file and reference that instead. If You use `deploy:rsync_warmup` You could set additional options that could speed-up and/or affect way things are working. For example: - -```php -deploy.php - -set('rsync',[ - 'exclude' => ['excludes_file'], - 'exclude-file' => '/tmp/localdeploys/excludes_file', //Use absolute path to avoid possible rsync problems - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir' => false, - 'flags' => 'rzcE', // Recursive, with compress, check based on checksum rather than time/size, preserve Executable flag - 'options' => ['delete', 'delete-after', 'force'], //Delete after successful transfer, delete even if deleted dir is not empty - 'timeout' => 3600, //for those huge repos or crappy connection -]); -``` - - -### Parameter - -- **rsync_src**: per-host rsync source. This can be server, stage or whatever-dependent. By default it's set to current directory -- **rsync_dest**: per-host rsync destination. This can be server, stage or whatever-dependent. by default it's equivalent to release deploy destination. - -### Sample configurations: - -This is default configuration: - -```php -set('rsync_src', __DIR__); -set('rsync_dest','{{release_path}}'); -``` - -If You use local deploy recipe You can set src to local release: - -```php -host('hostname') - ->hostname('10.10.10.10') - ->port(22) - ->set('deploy_path','/your/remote/path/app') - ->set('rsync_src', '/your/local/path/app') - ->set('rsync_dest','{{release_path}}'); -``` - -## Usage - -- `rsync` task - - Set `rsync_src` to locally cloned repository and rsync to `rsync_dest`. Then set this task instead of `deploy:update_code` in Your `deploy` task if Your hosting provider does not allow git. - -- `rsync:warmup` task - - If Your deploy task looks like: - - ```php - task('deploy', [ - 'deploy:prepare', - 'deploy:release', - 'rsync', - 'deploy:vendors', - 'deploy:symlink', - ])->desc('Deploy your project'); - ``` - - And Your `rsync_dest` is set to `{{release_path}}` then You could add this task to run before `rsync` task or after `deploy:release`, whatever is more convenient. - - - -## Configuration -### rsync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L119) - - - -```php title="Default value" -[ - 'exclude' => [ - '.git', - 'deploy.php', - ], - 'exclude-file' => false, - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir' => false, - 'flags' => 'rz', - 'options' => ['delete'], - 'timeout' => 300, -] -``` - - -### rsync_src -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L135) - - - -```php title="Default value" -__DIR__ -``` - - -### rsync_dest -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L136) - - - -```php title="Default value" -'{{release_path}}' -``` - - -### rsync_excludes -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L138) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_includes -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L153) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_filter -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L168) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_options -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L186) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### rsync:warmup -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L198) - -Warmups remote Rsync target. - - - - -### rsync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L213) - -Rsync local->remote. - - - - diff --git a/docs/contrib/sentry.md b/docs/contrib/sentry.md deleted file mode 100644 index e4e4493d4..000000000 --- a/docs/contrib/sentry.md +++ /dev/null @@ -1,70 +0,0 @@ - - - - -# Sentry Recipe - -```php -require 'contrib/sentry.php'; -``` - -[Source](/contrib/sentry.php) - - - - -### Configuration options - -- **organization** *(required)*: the slug of the organization the release belongs to. -- **projects** *(required)*: array of slugs of the projects to create a release for. -- **token** *(required)*: authentication token. Can be created at [https://sentry.io/settings/account/api/auth-tokens/] -- **version** *(required)* – a version identifier for this release. -Can be a version number, a commit hash etc. (Defaults is set to git log -n 1 --format="%h".) -- **version_prefix** *(optional)* - a string prefixed to version. -Releases are global per organization so indipentent projects needs to prefix version number with unique string to avoid conflicts -- **environment** *(optional)* - the environment you’re deploying to. By default framework's environment is used. -For example for symfony, *symfony_env* configuration is read otherwise defaults to 'prod'. -- **ref** *(optional)* – an optional commit reference. This is useful if a tagged version has been provided. -- **refs** *(optional)* - array to indicate the start and end commits for each repository included in a release. -Head commits must include parameters *repository* and *commit*) (the HEAD sha). -They can optionally include *previousCommit* (the sha of the HEAD of the previous release), -which should be specified if this is the first time you’ve sent commit data. -- **commits** *(optional)* - array commits data to be associated with the release. -Commits must include parameters *id* (the sha of the commit), and can optionally include *repository*, -*message*, *author_name*, *author_email* and *timestamp*. By default will send all new commits, -unless it's a first release, then only first 200 will be sent. -- **url** *(optional)* – a URL that points to the release. This can be the path to an online interface to the sourcecode for instance. -- **date_released** *(optional)* – date that indicates when the release went live. If not provided the current time is assumed. -- **sentry_server** *(optional)* – sentry server (if you host it yourself). defaults to hosted sentry service. -- **date_deploy_started** *(optional)* - date that indicates when the deploy started. Defaults to current time. -- **date_deploy_finished** *(optional)* - date that indicates when the deploy ended. If not provided, the current time is used. -- **deploy_name** *(optional)* - name of the deploy -- **git_version_command** *(optional)* - the command that retrieves the git version information (Defaults is set to git log -n 1 --format="%h", other options are git describe --tags --abbrev=0) - -```php -deploy.php - -set('sentry', [ - 'organization' => 'exampleorg', - 'projects' => [ - 'exampleproj' - ], - 'token' => 'd47828...', - 'version' => '0.0.1', - -]); -``` - -### Suggested Usage - -Since you should only notify Sentry of a successful deployment, the deploy:sentry task should be executed right at the end. - -```php -deploy.php - -after('deploy', 'deploy:sentry'); -``` - - - - diff --git a/docs/contrib/slack.md b/docs/contrib/slack.md deleted file mode 100644 index 77cbb34f1..000000000 --- a/docs/contrib/slack.md +++ /dev/null @@ -1,219 +0,0 @@ - - - - -# Slack Recipe - -```php -require 'contrib/slack.php'; -``` - -[Source](/contrib/slack.php) - - - -## Installing - -Add to Slack - - -Add hook on deploy: - -```php -before('deploy', 'slack:notify'); -``` - -## Configuration - -- `slack_webhook` – slack incoming webhook url, **required** - ``` - set('slack_webhook', 'https://hooks.slack.com/...'); - ``` -- `slack_channel` - channel to send notification to. The default is the channel configured in the webhook -- `slack_title` – the title of application, default `{{application}}` -- `slack_text` – notification message template, markdown supported - ``` - set('slack_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `slack_success_text` – success template, default: - ``` - set('slack_success_text', 'Deploy to *{{target}}* successful'); - ``` -- `slack_failure_text` – failure template, default: - ``` - set('slack_failure_text', 'Deploy to *{{target}}* failed'); - ``` - -- `slack_color` – color's attachment -- `slack_success_color` – success color's attachment -- `slack_failure_color` – failure color's attachment -- `slack_fields` - set attachments fields for pretty output in Slack, default: - ``` - set('slack_fields', []); - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'slack:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'slack:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'slack:notify:failure'); -``` - - - -## Configuration -### slack_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L69) - -Channel to publish to, when false the default channel the webhook will be used - -```php title="Default value" -false -``` - - -### slack_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L72) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### slack_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L77) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{target}}` to *{{hostname}}*' -``` - - -### slack_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L78) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### slack_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L79) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### slack_rollback_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L80) - - - -```php title="Default value" -'_{{user}}_ rolled back changes on *{{target}}*' -``` - - -### slack_fields -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L81) - - - - - -### slack_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L84) - -Color of attachment - -```php title="Default value" -'#4d91f7' -``` - - -### slack_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L85) - - - -```php title="Default value" -'#00c100' -``` - - -### slack_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L86) - - - -```php title="Default value" -'#ff0909' -``` - - -### slack_rollback_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L87) - - - -```php title="Default value" -'#eba211' -``` - - - -## Tasks - -### slack:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L99) - -Notifies Slack. - - - - -### slack:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L118) - -Notifies Slack about deploy finish. - - - - -### slack:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L138) - -Notifies Slack about deploy failure. - - - - -### slack:notify:rollback -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L157) - -Notifies Slack about rollback. - - - - diff --git a/docs/contrib/telegram.md b/docs/contrib/telegram.md deleted file mode 100644 index 45ac897fe..000000000 --- a/docs/contrib/telegram.md +++ /dev/null @@ -1,155 +0,0 @@ - - - - -# Telegram Recipe - -```php -require 'contrib/telegram.php'; -``` - -[Source](/contrib/telegram.php) - - - -## Installing - 1. Create telegram bot with [BotFather](https://t.me/BotFather) and grab the token provided - 2. Send `/start` to your bot and open https://api.telegram.org/bot{$TELEGRAM_TOKEN_HERE}/getUpdates - 3. Take chat_id from response - - -Add hook on deploy: - -```php -before('deploy', 'telegram:notify'); -``` - -## Configuration - -- `telegram_token` – telegram bot token, **required** -- `telegram_chat_id` — chat ID to push messages to -- `telegram_proxy` - proxy connection string in [CURLOPT_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html) form like: - ``` - http://proxy:80 - socks5://user:password@host:3128 - ``` -- `telegram_title` – the title of application, default `{{application}}` -- `telegram_text` – notification message template - ``` - _{{user}}_ deploying `{{branch}}` to *{{target}}* - ``` -- `telegram_success_text` – success template, default: - ``` - Deploy to *{{target}}* successful - - ``` -- `telegram_failure_text` – failure template, default: - ``` - Deploy to *{{target}}* failed - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'telegram:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'telegram:notify:success'); -``` -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'telegram:notify:failure'); - - - - -## Configuration -### telegram_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L63) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### telegram_token -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L68) - -Telegram settings -:::info Required -Throws exception if not set. -::: - - - - -### telegram_chat_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L71) - - -:::info Required -Throws exception if not set. -::: - - - - -### telegram_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L74) - - - -```php title="Default value" -return 'https://api.telegram.org/bot' . get('telegram_token') . '/sendmessage'; -``` - - -### telegram_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L79) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### telegram_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L80) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### telegram_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L81) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - - -## Tasks - -### telegram:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L85) - -Notifies Telegram. - - - - diff --git a/docs/contrib/webpack_encore.md b/docs/contrib/webpack_encore.md deleted file mode 100644 index 929908709..000000000 --- a/docs/contrib/webpack_encore.md +++ /dev/null @@ -1,67 +0,0 @@ - - - - -# Webpack Encore Recipe - -```php -require 'contrib/webpack_encore.php'; -``` - -[Source](/contrib/webpack_encore.php) - -* Requires - * [npm](/docs/contrib/npm.md) - * [yarn](/docs/contrib/yarn.md) - - - -## Configuration - -- **webpack_encore/package_manager** *(optional)*: set yarn or npm. We try to find if yarn or npm is available and used. - -## Usage - -```php -For Yarn -after('deploy:update_code', 'yarn:install'); -For npm -after('deploy:update_code', 'npm:install'); - -after('deploy:update_code', 'webpack_encore:build'); -``` - - -## Configuration -### webpack_encore/package_manager -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L24) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### webpack_encore/env -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L32) - - - -```php title="Default value" -'production' -``` - - - -## Tasks - -### webpack_encore:build -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L35) - -Runs webpack encore build. - - - - diff --git a/docs/contrib/workplace.md b/docs/contrib/workplace.md deleted file mode 100644 index 1664d15ea..000000000 --- a/docs/contrib/workplace.md +++ /dev/null @@ -1,145 +0,0 @@ - - - - -# Workplace Recipe - -```php -require 'contrib/workplace.php'; -``` - -[Source](/contrib/workplace.php) - - - -This recipes works with Custom Integrations and Publishing Bots. - - -Add hook on deploy: - -``` -before('deploy', 'workplace:notify'); -``` - -## Configuration - - - `workplace_webhook` - incoming workplace webhook **required** - ``` - // With custom integration - set('workplace_webhook', 'https://graph.facebook.com//feed?access_token='); - - // With publishing bot - set('workplace_webhook', 'https://graph.facebook.com/v3.0/group/feed?access_token='); - - // Use markdown on message - set('workplace_webhook', 'https://graph.facebook.com//feed?access_token=&formatting=MARKDOWN'); - ``` - - - `workplace_text` - notification message - ``` - set('workplace_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` - - - `workplace_success_text` – success template, default: - ``` - set('workplace_success_text', 'Deploy to *{{target}}* successful'); - ``` - - `workplace_failure_text` – failure template, default: - ``` - set('workplace_failure_text', 'Deploy to *{{target}}* failed'); - ``` - - `workplace_edit_post` – whether to create a new post for deploy result, or edit the first one created, default creates a new post: - ``` - set('workplace_edit_post', false); - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'workplace:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'workplace:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'workplace:notify:failure'); -``` - - - -## Configuration -### workplace_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L70) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### workplace_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L71) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### workplace_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L72) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### workplace_edit_post -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L75) - -By default, create a new post for every message - -```php title="Default value" -false -``` - - - -## Tasks - -### workplace:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L78) - -Notifies Workplace. - - - - -### workplace:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L102) - -Notifies Workplace about deploy finish. - - - - -### workplace:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L113) - -Notifies Workplace about deploy failure. - - - - diff --git a/docs/contrib/yammer.md b/docs/contrib/yammer.md deleted file mode 100644 index 4fe6eab96..000000000 --- a/docs/contrib/yammer.md +++ /dev/null @@ -1,140 +0,0 @@ - - - - -# Yammer Recipe - -```php -require 'contrib/yammer.php'; -``` - -[Source](/contrib/yammer.php) - - - - -Add hook on deploy: - -```php -before('deploy', 'yammer:notify'); -``` - -## Configuration - -- `yammer_url` – The URL to the message endpoint, default is https://www.yammer.com/api/v1/messages.json -- `yammer_token` *(required)* – Yammer auth token -- `yammer_group_id` *(required)* - Group ID -- `yammer_title` – the title of application, default `{{application}}` -- `yammer_body` – notification message template, default: - ``` - {{user}} deploying {{branch}} to {{target}} - ``` -- `yammer_success_body` – success template, default: - ``` - Deploy to {{target}} successful - ``` -- `yammer_failure_body` – failure template, default: - ``` - Deploy to {{target}} failed - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'yammer:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'yammer:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'yammer:notify:failure'); -``` - - - -## Configuration -### yammer_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L54) - - - -```php title="Default value" -'https://www.yammer.com/api/v1/messages.json' -``` - - -### yammer_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L57) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### yammer_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L62) - -Deploy message - -```php title="Default value" -'{{user}} deploying {{branch}} to {{target}}' -``` - - -### yammer_success_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L63) - - - -```php title="Default value" -'Deploy to {{target}} successful' -``` - - -### yammer_failure_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L64) - - - -```php title="Default value" -'Deploy to {{target}} failed' -``` - - - -## Tasks - -### yammer:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L67) - -Notifies Yammer. - - - - -### yammer:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L86) - -Notifies Yammer about deploy finish. - - - - -### yammer:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L105) - -Notifies Yammer about deploy failure. - - - - diff --git a/docs/contrib/yarn.md b/docs/contrib/yarn.md deleted file mode 100644 index 8007fbe1b..000000000 --- a/docs/contrib/yarn.md +++ /dev/null @@ -1,47 +0,0 @@ - - - - -# Yarn Recipe - -```php -require 'contrib/yarn.php'; -``` - -[Source](/contrib/yarn.php) - - - -## Configuration - -- **bin/yarn** *(optional)*: set Yarn binary, automatically detected otherwise. - -## Usage - -```php -after('deploy:update_code', 'yarn:install'); -``` - - -## Configuration -### bin/yarn -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yarn.php#L15) - - - -```php title="Default value" -return which('yarn'); -``` - - - -## Tasks - -### yarn:install -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yarn.php#L21) - -Installs Yarn packages. - -In there is a {{previous_release}}, node_modules will be copied from it before installing deps with yarn. - - diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100755 index b8976b7e9..000000000 --- a/docs/getting-started.md +++ /dev/null @@ -1,164 +0,0 @@ -# Getting Started - -In this tutorial we will cover: - -- Setting up a new host with provision recipe. -- Configuring a deployment and perfoming our first deploy. - -First, [install the Deployer](installation.md): - -Now lets cd into the project and run the following command: - -```sh -dep init -``` - -Deployer will ask you a few question and after finishing you will have a -**deploy.php** or **deploy.yaml** file. This is our deployment recipe. -It contains hosts, tasks and requires other recipes. All framework recipes -that come with Deployer are based on the [common](recipe/common.md) recipe. - -## Provision - -:::note -If you already have a configured webserver you may skip to -[deployment](#deploy). -::: - -Let's create a new VPS on Linode, DigitalOcean, Vultr, AWS, GCP, etc. - -Make sure the image is **Ubuntu 20.04 LTS** as this version is supported via -Deployer [provision](recipe/provision.md) recipe. - -:::tip -Configure Reverse DNS or RDNS on your server. This will allow you to ssh into -server using the domain name instead of the IP address. -::: - -Our **deploy.php** recipe contains a host definition with few important params: - -- `remote_user` user's name for ssh connection, -- `deploy_path` host's path where we are going to deploy. - -Let's set `remote_user` to be `deployer`. Right now our new server probably only has the `root` user. The provision recipe will -create and configure a `deployer` user for us. - -```php -host('example.org') - ->set('remote_user', 'deployer') - ->set('deploy_path', '~/example'); -``` - -To connect to the remote host we need to specify an identity key or private key. -We can add our identity key directly into the host definition, but it's better to put it -in the **~/.ssh/config** file: - -``` -Host * - IdentityFile ~/.ssh/id_rsa -``` - -Now let's provision our server. As our host doesn't have user `deployer`, -we are going to override `remote_user` for provision via `-o remote_user=root`. - -```sh -dep provision -o remote_user=root -``` - -:::tip -If your server doesn't have a `root` user but your remote user can use `sudo` to -become root, then use: - -```sh -dep provision -o become=root -``` - -::: - -Deployer will ask you a few questions during provisioning: php version, -database type, etc. Next Deployer will configure our server and create -the `deployer` user. Provision takes around **5 minutes** and will install -everything we need to run a website. A new website will be configured -at [deploy_path](recipe/common.md#deploy_path). - -After we have configured the webserver, let's deploy the project. - -## Deploy - -To deploy the project: - -```sh -dep deploy -``` - -If deploy failed, Deployer will print an error message and which command was unsuccessful. -Most likely we need to configure the correct database credentials in _.env_ file or similar. - -Ssh to the host, for example, for editing _.env_ file: - -```sh -dep ssh -``` - -After everything is configured properly we can resume our deployment from the -place it stopped. However, this is not required; we can just start a new deploy: - -``` -dep deploy --start-from deploy:migrate -``` - -After our first successful deployment, we can find the following directory structure on our server: - -``` -~/example // The deploy_path. - |- current -> releases/1 // Symlink to the current release. - |- releases // Dir for all releases. - |- 1 // Actual files location. - |- ... - |- .env -> shared/.env // Symlink to shared .env file. - |- shared // Dirs for shared files between releases. - |- ... - |- .env // Example: shared .env file. - |- .dep // Deployer configuration files. -``` - -Configure you webserver to serve the `current` directory. For example, for nginx: - -``` -root /home/deployer/example/current/public; -index index.php; -location / { - try_files $uri $uri/ /index.php?$query_string; -} -``` - -If you're using provision recipe, Deployer will automatically configure the Caddy -webserver to serve from the [public_path](/docs/recipe/provision/website.md#public_path). - -Now let's add a build step on our host: - -```php -task('build', function () { - cd('{{release_path}}'); - run('npm install'); - run('npm run prod'); -}); - -after('deploy:update_code', 'build'); -``` - -Deployer has a useful task for examining what is currently deployed. - -``` -$ dep releases -task releases -+---------------------+--------- deployer.org -------+--------+-----------+ -| Date (UTC) | Release | Author | Target | Commit | -+---------------------+-------------+----------------+--------+-----------+ -| 2021-11-05 14:00:22 | 1 (current) | Anton Medvedev | HEAD | 943ded2be | -+---------------------+-------------+----------------+--------+-----------+ -``` - -:::tip -During development, the [dep push](recipe/deploy/push.md) task maybe useful. -::: diff --git a/docs/hosts.md b/docs/hosts.md deleted file mode 100644 index c314913f0..000000000 --- a/docs/hosts.md +++ /dev/null @@ -1,189 +0,0 @@ -# Hosts - -To define a new host use the [host()](api.md#host) function. Deployer keeps a list of -all defined hosts in the `Deployer::get()->hosts` collection. - -```php -host('example.org'); -``` - -Each host contains it's own configuration key-value pairs. The [host()](api.md#host) -call defines two important configs: **alias** and **hostname**. - -- **hostname** - used when connecting to remote host. -- **alias** - used as a key in `Deployer::get()->hosts` collection. - -```php -task('test', function () { - writeln('The {{alias}} is {{hostname}}'); -}); -``` - -``` -$ dep test -[example.org] The example.org is example.org -``` - -We can override hostname via `set()` method: - -```php -host('example.org') - ->set('hostname', 'example.cloud.google.com'); -``` - -The hostname will be used for the ssh connection, but the host will be referred -by its alias when running Deployer. - -``` -$ dep test -[example.org] The example.org is example.cloud.google.com -``` - -Another important ssh connection parameter is `remote_user`. - -```php -host('example.org') - ->set('hostname', 'example.cloud.google.com') - ->set('remote_user', 'deployer'); -``` - -Now Deployer will connect using something like -`ssh deployer@example.cloud.google.com` to establishing connection. - -Also, Deployer's `Host` class has special setter methods (for better IDE -autocompletion). - -```php -host('example.org') - ->setHostname('example.cloud.google.com') - ->setRemoteUser('deployer'); -``` - -## Host config - -### `alias` - -The identifier used to identify a host. -You can use actual hostname or something like `prod` or `staging`. - -### `hostname` - -Deployer uses this config for actual ssh connection. - -### `remote_user` - -Deployer uses this config for actual ssh connection. If not specified, -Deployer will be using `RemoteUser` from **~/.ssh/config** file, or current -OS username. - -### `port` - -Port of remote ssh server to connect to. Default is `22`. - -### `config_file` - -Default is `~/.ssh/config`. - -:::info Config file -It is a good practice to keep connection parameters out of `deploy.php` file, as -they can change depending on where the deploy is executed from. Only specify -`hostname` and `remote_user` and other keep in `~/.ssh/config`: - -``` -Host * - IdentityFile ~/.ssh/id_rsa -``` - -::: - -### `identity_file` - -For example, `~/.ssh/id_rsa`. - -### `forward_agent` - -SSH forwarding is a way to securely tunnel network connections from your local computer to a remote server, and from the remote server to another destination. There are several types of SSH forwarding, including local, remote, and dynamic forwarding. SSH agent forwarding is a specific type of local forwarding that allows you to use your local SSH keys to authenticate on remote servers. This can be useful if you want to use your local SSH keys to connect to a remote server, but don't want to copy your keys to the remote server. - -Default is `true`. - -### `ssh_multiplexing` - -SSH multiplexing is a technique that allows a single Secure Shell (SSH) connection to be used for multiple interactive sessions or for multiple tunneled connections. This can be useful in a number of situations, such as when you want to open multiple terminal sessions to a remote server over a single SSH connection, or when you want to establish multiple secure connections to a remote server but don't want to open multiple SSH connections. - -Default is `true`. - -### `shell` - -Default is `bash -ls`. - -### `deploy_path` - -For example, `~/myapp`. - -### `labels` - -Key-value pairs for host selector. - -### `ssh_arguments` - -For example, `['-o UserKnownHostsFile=/dev/null']` - -### `ssh_control_path` - -Default is `~/.ssh/%C`. - -If **CI** env is present, default value is `/dev/shm/%C`. - -## Multiple hosts - -You can pass multiple hosts to the host function: - -```php -host('example.org', 'deployer.org', ...) - ->setRemoteUser('anton'); -``` - -## Host ranges - -If you have a lot of hosts following similar patterns, you can describe them -like this rather than listing each hostname: - -```php -host('www[01:50].example.org'); -``` - -For numeric patterns, leading zeros can be included or removed, as desired. -Ranges are inclusive. - -You can also define alphabetic ranges: - -```php -host('db[a:f].example.org'); -``` - -## Localhost - -The [localhost()](api.md#localhost) function defines a special local host. -Deployer will not connect to this host, but will execute commands locally instead. - -```php -localhost(); // Alias and hostname will be "localhost". -localhost('ci'); // Alias is "ci", hostname is "localhost". -``` - -## YAML Inventory - -You can use the [import()](api.md#import) function to keep host definitions in a -separate file. For example, _inventory.yaml_. - -```php title="deploy.php" -import('inventory.yaml'); -``` - -```yaml title="inventory.yaml" -hosts: - example.org: - remote_user: deployer - deployer.org: - remote_user: deployer -``` diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100755 index e53880ebc..000000000 --- a/docs/installation.md +++ /dev/null @@ -1,31 +0,0 @@ -# Installation - -To install Deployer, run next command in your project dir: - -``` -composer require --dev deployer/deployer -``` - -To initialize deployer in your project run: - -``` -vendor/bin/dep init -``` - -:::tip Bash integration -Add next alias to your _.bashrc_ file: - -```bash -alias dep='vendor/bin/dep' -``` - -Deployer comes with autocomplete support for task names, options, and hosts. - -Run the next command to add bash completion support: - -``` -dep completion bash > /etc/bash_completion.d/deployer -``` - -Make sure what your _.bashrc_ file includes generated file in some way. -::: diff --git a/docs/recipe/README.md b/docs/recipe/README.md deleted file mode 100644 index 05a922165..000000000 --- a/docs/recipe/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# All Recipes - -* [Cakephp Recipe](/docs/recipe/cakephp.md) -* [Codeigniter Recipe](/docs/recipe/codeigniter.md) -* [Common Recipe](/docs/recipe/common.md) -* [Composer Recipe](/docs/recipe/composer.md) -* [Contao Recipe](/docs/recipe/contao.md) -* [Craftcms Recipe](/docs/recipe/craftcms.md) -* [Drupal 7 Recipe](/docs/recipe/drupal7.md) -* [Drupal 8 Recipe](/docs/recipe/drupal8.md) -* [Flow Framework Recipe](/docs/recipe/flow_framework.md) -* [Fuelphp Recipe](/docs/recipe/fuelphp.md) -* [Joomla Recipe](/docs/recipe/joomla.md) -* [Laravel Recipe](/docs/recipe/laravel.md) -* [Magento 2 Recipe](/docs/recipe/magento2.md) -* [Magento Recipe](/docs/recipe/magento.md) -* [Pimcore Recipe](/docs/recipe/pimcore.md) -* [Prestashop Recipe](/docs/recipe/prestashop.md) -* [Provision Recipe](/docs/recipe/provision.md) -* [Shopware Recipe](/docs/recipe/shopware.md) -* [Silverstripe Recipe](/docs/recipe/silverstripe.md) -* [Statamic Recipe](/docs/recipe/statamic.md) -* [Sulu Recipe](/docs/recipe/sulu.md) -* [Symfony Recipe](/docs/recipe/symfony.md) -* [TYPO3 Recipe](/docs/recipe/typo3.md) -* [WordPress Recipe](/docs/recipe/wordpress.md) -* [Yii2 Recipe](/docs/recipe/yii.md) -* [Zend Framework Recipe](/docs/recipe/zend_framework.md) \ No newline at end of file diff --git a/docs/recipe/cakephp.md b/docs/recipe/cakephp.md deleted file mode 100644 index ba1374cee..000000000 --- a/docs/recipe/cakephp.md +++ /dev/null @@ -1,116 +0,0 @@ - - - - -# How to Deploy a Cakephp Project - -```php -require 'recipe/cakephp.php'; -``` - -[Source](/recipe/cakephp.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Cakephp application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Cakephp** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:init](/docs/recipe/cakephp.md#deployinit) – -* [deploy:run_migrations](/docs/recipe/cakephp.md#deployrun_migrations) – -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The cakephp recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L13) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -CakePHP 4 Project Template shared dirs - -```php title="Default value" -[ - 'logs', - 'tmp', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L19) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -CakePHP 4 Project Template shared files - -```php title="Default value" -[ - 'config/.env', - 'config/app.php', -] -``` - - - -## Tasks - -### deploy:init -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L27) - - - -Create plugins' symlinks - - -### deploy:run_migrations -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L34) - - - -Run migrations - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L42) - - - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:init](/docs/recipe/cakephp.md#deployinit) -* [deploy:run_migrations](/docs/recipe/cakephp.md#deployrun_migrations) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/codeigniter.md b/docs/recipe/codeigniter.md deleted file mode 100644 index f450bafb2..000000000 --- a/docs/recipe/codeigniter.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# How to Deploy a Codeigniter Project - -```php -require 'recipe/codeigniter.php'; -``` - -[Source](/recipe/codeigniter.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Codeigniter application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Codeigniter** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The codeigniter recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -CodeIgniter shared dirs - -```php title="Default value" -['application/cache', 'application/logs'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L12) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -CodeIgniter writable dirs - -```php title="Default value" -['application/cache', 'application/logs'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L18) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/common.md b/docs/recipe/common.md deleted file mode 100644 index 97d83526b..000000000 --- a/docs/recipe/common.md +++ /dev/null @@ -1,251 +0,0 @@ - - - - -# Common Recipe - -```php -require 'recipe/common.php'; -``` - -[Source](/recipe/common.php) - -* Requires - * [provision](/docs/recipe/provision.md) - * [check_remote](/docs/recipe/deploy/check_remote.md) - * [cleanup](/docs/recipe/deploy/cleanup.md) - * [clear_paths](/docs/recipe/deploy/clear_paths.md) - * [copy_dirs](/docs/recipe/deploy/copy_dirs.md) - * [info](/docs/recipe/deploy/info.md) - * [lock](/docs/recipe/deploy/lock.md) - * [push](/docs/recipe/deploy/push.md) - * [release](/docs/recipe/deploy/release.md) - * [rollback](/docs/recipe/deploy/rollback.md) - * [setup](/docs/recipe/deploy/setup.md) - * [shared](/docs/recipe/deploy/shared.md) - * [symlink](/docs/recipe/deploy/symlink.md) - * [update_code](/docs/recipe/deploy/update_code.md) - * [vendors](/docs/recipe/deploy/vendors.md) - * [writable](/docs/recipe/deploy/writable.md) - -## Configuration -### user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L29) - -Name of current user who is running deploy. -If not set will try automatically get git user name, -otherwise output of `whoami` command. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### keep_releases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L46) - -Number of releases to preserve in releases folder. - -```php title="Default value" -10 -``` - - -### repository -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L49) - -Repository to deploy. - - - -### default_timeout -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L54) - -Default timeout for `run()` and `runLocally()` functions. - -Set to `null` to disable timeout. - -```php title="Default value" -300 -``` - - -### env -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L70) - -Remote environment variables. -```php -set('env', [ - 'KEY' => 'something', -]); -``` - -It is possible to override it per `run()` call. - -```php -run('echo $KEY', env: ['KEY' => 'over']); -``` - - - -### dotenv -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L79) - -Path to `.env` file which will be used as environment variables for each command per `run()`. - -```php -set('dotenv', '{{current_path}}/.env'); -``` - -```php title="Default value" -false -``` - - -### deploy_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L89) - -The deploy path. - -For example can be set for a bunch of host once as: -```php -set('deploy_path', '~/{{alias}}'); -``` -:::info Required -Throws exception if not set. -::: - - - - -### current_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L99) - -Return current release path. Default to [deploy_path](/docs/recipe/common.md#deploy_path)/`current`. -```php -set('current_path', '/var/public_html'); -``` - -```php title="Default value" -'{{deploy_path}}/current' -``` - - -### bin/php -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L102) - -Path to the `php` bin. - -```php title="Default value" -if (currentHost()->hasOwn('php_version')) { -return '/usr/bin/php{{php_version}}'; -} -return which('php'); -``` - - -### bin/git -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L110) - -Path to the `git` bin. - -```php title="Default value" -return which('git'); -``` - - -### use_relative_symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L116) - -Should [bin/symlink](/docs/recipe/common.md#bin/symlink) use `--relative` option or not. Will detect -automatically. - -```php title="Default value" -return commandSupportsOption('ln', '--relative'); -``` - - -### bin/symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L121) - -Path to the `ln` bin. With predefined options `-nfs`. - -```php title="Default value" -return get('use_relative_symlink') ? 'ln -nfs --relative' : 'ln -nfs'; -``` - - -### sudo_askpass -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L128) - -Path to a file which will store temp script with sudo password. -Defaults to `.dep/sudo_pass`. This script is only temporary and will be deleted after -sudo command executed. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### deploy:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L137) - -Prepares a new release. - - - - -This task is group task which contains next tasks: -* [deploy:info](/docs/recipe/deploy/info.md#deployinfo) -* [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) -* [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) -* [deploy:release](/docs/recipe/deploy/release.md#deployrelease) -* [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) -* [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) -* [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) - - -### deploy:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L148) - -Publishes the release. - - - - -This task is group task which contains next tasks: -* [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) -* [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) -* [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) -* [deploy:success](/docs/recipe/common.md#deploysuccess) - - -### deploy:success -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L158) - - - -Prints success message - - -### deploy:failed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L167) - - - -Hook on deploy failure. - - -### logs:app -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L177) - -Shows application logs. - -Follows latest application logs. - - diff --git a/docs/recipe/composer.md b/docs/recipe/composer.md deleted file mode 100644 index a6ffbc8ef..000000000 --- a/docs/recipe/composer.md +++ /dev/null @@ -1,32 +0,0 @@ - - - - -# Composer Recipe - -```php -require 'recipe/composer.php'; -``` - -[Source](/recipe/composer.php) - -* Requires - * [common](/docs/recipe/common.md) - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/composer.php#L9) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/contao.md b/docs/recipe/contao.md deleted file mode 100644 index a4ca70782..000000000 --- a/docs/recipe/contao.md +++ /dev/null @@ -1,166 +0,0 @@ - - - - -# How to Deploy a Contao Project - -```php -require 'recipe/contao.php'; -``` - -[Source](/recipe/contao.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Contao application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Contao** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [contao:maintenance:enable](/docs/recipe/contao.md#contaomaintenanceenable) – Enable maintenance mode -* [contao:migrate](/docs/recipe/contao.md#contaomigrate) – Run Contao migrations -* [contao:maintenance:disable](/docs/recipe/contao.md#contaomaintenancedisable) – Disable maintenance mode -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The contao recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - -## Configuration -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L11) - -Overrides [public_path](/docs/recipe/provision/website.md#public_path) from `recipe/provision/website.php`. - -The public path is the path to be set as DocumentRoot and is defined in the `composer.json` of the project -but defaults to `public` from Contao 5.0 on. -This path is relative from the [current_path](/docs/recipe/common.md#current_path), see [`recipe/provision/website.php`](/docs/recipe/provision/website.php#public_path). - -```php title="Default value" -$composerConfig = json_decode(file_get_contents('./composer.json'), true, 512, JSON_THROW_ON_ERROR); - -return $composerConfig['extra']['public-dir'] ?? 'public'; -``` - - -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L29) - -Overrides [bin/console](/docs/recipe/symfony.md#bin/console) from `recipe/symfony.php`. - - - -```php title="Default value" -return '{{bin/php}} {{release_or_current_path}}/vendor/bin/contao-console'; -``` - - -### contao_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L33) - - - -```php title="Default value" -return run('{{bin/console}} contao:version'); -``` - - - -## Tasks - -### contao:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L47) - -Run Contao migrations. - -This task updates the database. A database backup is saved automatically as a default. - -To automatically drop the obsolete database structures, you can override the task as follows: - -```php -task('contao:migrate', function () { - run('{{bin/php}} {{bin/console}} contao:migrate --with-deletes {{console_options}}'); -}); -``` - - -### contao:manager:download -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L53) - -Download the Contao Manager. - -Downloads the `contao-manager.phar.php` into the public path. - - -### contao:install:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L59) - -Lock the Contao Install Tool. - -Locks the Contao install tool which is useful if you don't use it. - - -### contao:manager:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L65) - -Lock the Contao Manager. - -Locks the Contao Manager which is useful if you only need the API of the Manager rather than the UI. - - -### contao:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L71) - -Enable maintenance mode. - - - - -### contao:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L86) - -Disable maintenance mode. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L98) - -Deploy the project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [contao:maintenance:enable](/docs/recipe/contao.md#contaomaintenanceenable) -* [contao:migrate](/docs/recipe/contao.md#contaomigrate) -* [contao:maintenance:disable](/docs/recipe/contao.md#contaomaintenancedisable) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/craftcms.md b/docs/recipe/craftcms.md deleted file mode 100644 index 8551440d8..000000000 --- a/docs/recipe/craftcms.md +++ /dev/null @@ -1,126 +0,0 @@ - - - - -# How to Deploy a Craftcms Project - -```php -require 'recipe/craftcms.php'; -``` - -[Source](/recipe/craftcms.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Craftcms application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Craftcms** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors - - -The craftcms recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L9) - - - -```php title="Default value" -'storage/logs/*.log' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L11) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'storage', - 'web/assets', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L16) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'config/project', - 'storage', - 'web/assets', - 'web/cpresources', -] -``` - - -### writable_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L23) - -Overrides [writable_mode](/docs/recipe/deploy/writable.md#writable_mode) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -'chmod' -``` - - -### writable_recursive -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L24) - -Overrides [writable_recursive](/docs/recipe/deploy/writable.md#writable_recursive) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -true -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L65) - -deploy. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) - - diff --git a/docs/recipe/deploy/check_remote.md b/docs/recipe/deploy/check_remote.md deleted file mode 100644 index d5f37d49c..000000000 --- a/docs/recipe/deploy/check_remote.md +++ /dev/null @@ -1,25 +0,0 @@ - - - - -# Check Remote Recipe - -```php -require 'recipe/deploy/check_remote.php'; -``` - -[Source](/recipe/deploy/check_remote.php) - - - -## Tasks - -### deploy:check_remote -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/check_remote.php#L10) - -Checks remote head. - -Cancel deployment if there would be no change to the codebase. -This avoids unnecessary releases if the latest commit has already been deployed. - - diff --git a/docs/recipe/deploy/cleanup.md b/docs/recipe/deploy/cleanup.md deleted file mode 100644 index 6971f749d..000000000 --- a/docs/recipe/deploy/cleanup.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Cleanup Recipe - -```php -require 'recipe/deploy/cleanup.php'; -``` - -[Source](/recipe/deploy/cleanup.php) - - -## Configuration -### cleanup_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/cleanup.php#L5) - -Use sudo in deploy:cleanup task for rm command. - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:cleanup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/cleanup.php#L8) - -Cleanup old releases. - - - - diff --git a/docs/recipe/deploy/clear_paths.md b/docs/recipe/deploy/clear_paths.md deleted file mode 100644 index 9d3e5841f..000000000 --- a/docs/recipe/deploy/clear_paths.md +++ /dev/null @@ -1,42 +0,0 @@ - - - - -# Clear Paths Recipe - -```php -require 'recipe/deploy/clear_paths.php'; -``` - -[Source](/recipe/deploy/clear_paths.php) - - -## Configuration -### clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L5) - -List of paths to remove from [release_path](/docs/recipe/deploy/release.md#release_path). - - - -### clear_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L8) - -Use sudo for deploy:clear_path task? - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L11) - -Cleanup files and/or directories. - - - - diff --git a/docs/recipe/deploy/copy_dirs.md b/docs/recipe/deploy/copy_dirs.md deleted file mode 100644 index ab3f9cccf..000000000 --- a/docs/recipe/deploy/copy_dirs.md +++ /dev/null @@ -1,33 +0,0 @@ - - - - -# Copy Dirs Recipe - -```php -require 'recipe/deploy/copy_dirs.php'; -``` - -[Source](/recipe/deploy/copy_dirs.php) - - -## Configuration -### copy_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/copy_dirs.php#L6) - -List of dirs to copy between releases. -For example you can copy `node_modules` to speedup npm install. - - - - -## Tasks - -### deploy:copy_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/copy_dirs.php#L9) - -Copies directories. - - - - diff --git a/docs/recipe/deploy/info.md b/docs/recipe/deploy/info.md deleted file mode 100644 index 91b61d2d1..000000000 --- a/docs/recipe/deploy/info.md +++ /dev/null @@ -1,24 +0,0 @@ - - - - -# Info Recipe - -```php -require 'recipe/deploy/info.php'; -``` - -[Source](/recipe/deploy/info.php) - - - -## Tasks - -### deploy:info -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/info.php#L5) - -Displays info about deployment. - - - - diff --git a/docs/recipe/deploy/lock.md b/docs/recipe/deploy/lock.md deleted file mode 100644 index ad0aa7185..000000000 --- a/docs/recipe/deploy/lock.md +++ /dev/null @@ -1,40 +0,0 @@ - - - - -# Lock Recipe - -```php -require 'recipe/deploy/lock.php'; -``` - -[Source](/recipe/deploy/lock.php) - - - -## Tasks - -### deploy:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L7) - -Locks deploy. - - - - -### deploy:unlock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L20) - -Unlocks deploy. - - - - -### deploy:is_locked -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L25) - -Checks if deploy is locked. - - - - diff --git a/docs/recipe/deploy/push.md b/docs/recipe/deploy/push.md deleted file mode 100644 index 061efdbac..000000000 --- a/docs/recipe/deploy/push.md +++ /dev/null @@ -1,26 +0,0 @@ - - - - -# Push Recipe - -```php -require 'recipe/deploy/push.php'; -``` - -[Source](/recipe/deploy/push.php) - - - -## Tasks - -### push -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/push.php#L8) - -Pushes local changes to remote host. - -Creates patch of local changes and pushes them on host. -And applies to current_path. Push can be done many times. -The task purpose to be used only for development. - - diff --git a/docs/recipe/deploy/release.md b/docs/recipe/deploy/release.md deleted file mode 100644 index a0d633265..000000000 --- a/docs/recipe/deploy/release.md +++ /dev/null @@ -1,111 +0,0 @@ - - - - -# Release Recipe - -```php -require 'recipe/deploy/release.php'; -``` - -[Source](/recipe/deploy/release.php) - - -## Configuration -### release_name -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L8) - -The name of the release. - -```php title="Default value" -return within('{{deploy_path}}', function () { -$latest = run('cat .dep/latest_release || echo 0'); -return strval(intval($latest) + 1); -}); -``` - - -### releases_log -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L16) - -Holds releases log from `.dep/releases_log` file. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### releases_list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L31) - -Return list of release names on host. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### release_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L58) - -Return release path. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### release_revision -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L69) - -Current release revision. Usually a git hash. - -```php title="Default value" -return run('cat {{release_path}}/REVISION'); -``` - - -### release_or_current_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L75) - -Return the release path during a deployment -but fallback to the current path otherwise. - -```php title="Default value" -$releaseExists = test('[ -h {{deploy_path}}/release ]'); -return $releaseExists ? get('release_path') : get('current_path'); -``` - - - -## Tasks - -### deploy:release -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L82) - -Prepares release. - -Clean up unfinished releases and prepare next release - - -### releases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L157) - -Shows releases list. - -Example output: -``` -+---------------------+------example.org ------------+--------+-----------+ -| Date (UTC) | Release | Author | Target | Commit | -+---------------------+-------------+----------------+--------+-----------+ -| 2021-11-06 20:51:45 | 1 | Anton Medvedev | HEAD | 34d24192e | -| 2021-11-06 21:00:50 | 2 (bad) | Anton Medvedev | HEAD | 392948a40 | -| 2021-11-06 23:19:20 | 3 | Anton Medvedev | HEAD | a4057a36c | -| 2021-11-06 23:24:30 | 4 (current) | Anton Medvedev | HEAD | s3wa45ca6 | -+---------------------+-------------+----------------+--------+-----------+ -``` - - diff --git a/docs/recipe/deploy/rollback.md b/docs/recipe/deploy/rollback.md deleted file mode 100644 index f954ddbd9..000000000 --- a/docs/recipe/deploy/rollback.md +++ /dev/null @@ -1,54 +0,0 @@ - - - - -# Rollback Recipe - -```php -require 'recipe/deploy/rollback.php'; -``` - -[Source](/recipe/deploy/rollback.php) - - -## Configuration -### rollback_candidate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L19) - -Rollback candidate automatically will be automatically chosen by -looking at output of `ls` command and content of `.dep/releases_log`. - -If rollback candidate marked as **BAD_RELEASE**, it will be skipped. - -:::tip -You can override rollback candidate via: -``` -dep rollback -o rollback_candidate=123 -``` -::: -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L62) - -Rollbacks to the previous release. - -Uses [rollback_candidate](/docs/recipe/deploy/rollback.md#rollback_candidate) for symlinking. Current release will be marked as -bad by creating file **BAD_RELEASE** with timestamp and [user](/docs/recipe/common.md#user). - -:::warning -You can always manually symlink [current_path](/docs/recipe/common.md#current_path) to proper release. -``` -dep run '{{bin/symlink}} releases/123 {{current_path}}' -``` -::: - - diff --git a/docs/recipe/deploy/setup.md b/docs/recipe/deploy/setup.md deleted file mode 100644 index e1c98c791..000000000 --- a/docs/recipe/deploy/setup.md +++ /dev/null @@ -1,24 +0,0 @@ - - - - -# Setup Recipe - -```php -require 'recipe/deploy/setup.php'; -``` - -[Source](/recipe/deploy/setup.php) - - - -## Tasks - -### deploy:setup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/setup.php#L5) - -Prepares host for deploy. - - - - diff --git a/docs/recipe/deploy/shared.md b/docs/recipe/deploy/shared.md deleted file mode 100644 index 8052a5aba..000000000 --- a/docs/recipe/deploy/shared.md +++ /dev/null @@ -1,47 +0,0 @@ - - - - -# Shared Recipe - -```php -require 'recipe/deploy/shared.php'; -``` - -[Source](/recipe/deploy/shared.php) - - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L12) - -List of dirs what will be shared between releases. -Each release will have symlink to those dirs stored in [deploy_path](/docs/recipe/common.md#deploy_path)/shared dir. -```php -set('shared_dirs', ['storage']); -``` - - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L19) - -List of files what will be shared between releases. -Each release will have symlink to those files stored in [deploy_path](/docs/recipe/common.md#deploy_path)/shared dir. -```php -set('shared_files', ['.env']); -``` - - - - -## Tasks - -### deploy:shared -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L22) - -Creates symlinks for shared files and dirs. - - - - diff --git a/docs/recipe/deploy/symlink.md b/docs/recipe/deploy/symlink.md deleted file mode 100644 index 33c5edd48..000000000 --- a/docs/recipe/deploy/symlink.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Symlink Recipe - -```php -require 'recipe/deploy/symlink.php'; -``` - -[Source](/recipe/deploy/symlink.php) - - -## Configuration -### use_atomic_symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/symlink.php#L5) - -Use mv -T if available. Will check automatically. - -```php title="Default value" -return commandSupportsOption('mv', '--no-target-directory'); -``` - - - -## Tasks - -### deploy:symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/symlink.php#L10) - -Creates symlink to release. - - - - diff --git a/docs/recipe/deploy/update_code.md b/docs/recipe/deploy/update_code.md deleted file mode 100644 index 6efcaefe6..000000000 --- a/docs/recipe/deploy/update_code.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# Update Code Recipe - -```php -require 'recipe/deploy/update_code.php'; -``` - -[Source](/recipe/deploy/update_code.php) - - -## Configuration -### branch -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L11) - -Determines which branch to deploy. Can be overridden with CLI option `--branch`. -If not specified, will get current git HEAD branch as default branch to deploy. - -```php title="Default value" -'HEAD' -``` - - -### target -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L18) - -The deploy target: a branch, a tag or a revision. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### update_code_strategy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L47) - -Sets deploy:update_code strategy. -Can be one of: -- archive -- clone (if you need the origin repository `.git` dir in your [release_path](/docs/recipe/deploy/release.md#release_path)) - -```php title="Default value" -'archive' -``` - - -### git_ssh_command -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L53) - -Sets environment variable _GIT_SSH_COMMAND_ for `git clone` command. -If `StrictHostKeyChecking` flag is set to `accept-new` then ssh will -automatically add new host keys to the user known hosts files, but -will not permit connections to hosts with changed host keys. - -```php title="Default value" -'ssh -o StrictHostKeyChecking=accept-new' -``` - - -### sub_directory -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L65) - -Specifies a sub directory within the repository to deploy. -Works only when [`update_code_strategy`](#update_code_strategy) is set to `archive` (default). - -Example: - - set value to `src` if you want to deploy the folder that lives at `/src/api`. - - set value to `src/api` if you want to deploy the folder that lives at `/src/api`. - -Note: do not use a leading `/`! - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:update_code -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L71) - -Updates code. - -Update code at [release_path](/docs/recipe/deploy/release.md#release_path) on host. - - diff --git a/docs/recipe/deploy/vendors.md b/docs/recipe/deploy/vendors.md deleted file mode 100644 index 68b386e73..000000000 --- a/docs/recipe/deploy/vendors.md +++ /dev/null @@ -1,58 +0,0 @@ - - - - -# Vendors Recipe - -```php -require 'recipe/deploy/vendors.php'; -``` - -[Source](/recipe/deploy/vendors.php) - - -## Configuration -### composer_action -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L4) - - - -```php title="Default value" -'install' -``` - - -### composer_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L6) - - - -```php title="Default value" -'--verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader' -``` - - -### bin/composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L11) - -Returns Composer binary path in found. Otherwise try to install latest -composer version to `.dep/composer.phar`. To use specific composer version -download desired phar and place it at `.dep/composer.phar`. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### deploy:vendors -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L27) - -Installs vendors. - - - - diff --git a/docs/recipe/deploy/writable.md b/docs/recipe/deploy/writable.md deleted file mode 100644 index bcf5898c3..000000000 --- a/docs/recipe/deploy/writable.md +++ /dev/null @@ -1,102 +0,0 @@ - - - - -# Writable Recipe - -```php -require 'recipe/deploy/writable.php'; -``` - -[Source](/recipe/deploy/writable.php) - - -## Configuration -### http_user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L8) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### http_group -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L25) - -Used to make a writable directory by a server. -Used in `chgrp` mode of [writable_mode](/docs/recipe/deploy/writable.md#writable_mode) only. -Attempts automatically to detect http user in process list. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L40) - -List of writable dirs. - - - -### writable_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L49) - -One of: -- chown -- chgrp -- chmod -- acl -- sticky -- skip - -```php title="Default value" -'acl' -``` - - -### writable_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L52) - -Using sudo in writable commands? - -```php title="Default value" -false -``` - - -### writable_recursive -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L55) - -Use recursive mode (-R)? - -```php title="Default value" -false -``` - - -### writable_chmod_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L58) - -The chmod mode. - -```php title="Default value" -'0755' -``` - - - -## Tasks - -### deploy:writable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L61) - -Makes writable dirs. - - - - diff --git a/docs/recipe/drupal7.md b/docs/recipe/drupal7.md deleted file mode 100644 index dea6e45ba..000000000 --- a/docs/recipe/drupal7.md +++ /dev/null @@ -1,132 +0,0 @@ - - - - -# How to Deploy a Drupal 7 Project - -```php -require 'recipe/drupal7.php'; -``` - -[Source](/recipe/drupal7.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Drupal 7 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Drupal 7** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The drupal7 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### drupal_site -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L14) - -Set Drupal 7 site. Change if you use different site - -```php title="Default value" -'default' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L17) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Drupal 7 shared dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L22) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Drupal 7 shared files - -```php title="Default value" -[ - 'sites/{{drupal_site}}/settings.php', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L27) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Drupal 7 writable dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L8) - - - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### drupal:settings -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L33) - - - -Create and upload Drupal 7 settings.php using values from secrets - - -### drupal:upload_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L75) - - - -Upload Drupal 7 files folder - - diff --git a/docs/recipe/drupal8.md b/docs/recipe/drupal8.md deleted file mode 100644 index 40d343d1e..000000000 --- a/docs/recipe/drupal8.md +++ /dev/null @@ -1,117 +0,0 @@ - - - - -# How to Deploy a Drupal 8 Project - -```php -require 'recipe/drupal8.php'; -``` - -[Source](/recipe/drupal8.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Drupal 8 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Drupal 8** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The drupal8 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### drupal_site -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L14) - -Set drupal site. Change if you use different site - -```php title="Default value" -'default' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L18) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Drupal 8 shared dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L23) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Drupal 8 shared files - -```php title="Default value" -[ - 'sites/{{drupal_site}}/settings.php', - 'sites/{{drupal_site}}/services.yml', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L29) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Drupal 8 Writable dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L8) - - - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/flow_framework.md b/docs/recipe/flow_framework.md deleted file mode 100644 index ae62f3b50..000000000 --- a/docs/recipe/flow_framework.md +++ /dev/null @@ -1,122 +0,0 @@ - - - - -# How to Deploy a Flow Framework Project - -```php -require 'recipe/flow_framework.php'; -``` - -[Source](/recipe/flow_framework.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Flow Framework application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Flow Framework** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:run_migrations](/docs/recipe/flow_framework.md#deployrun_migrations) – Applies database migrations -* [deploy:publish_resources](/docs/recipe/flow_framework.md#deploypublish_resources) – Publishes resources -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The flow_framework recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### flow_context -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L9) - -Flow-Framework application-context - -```php title="Default value" -'Production' -``` - - -### flow_command -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L12) - -Flow-Framework cli-command - -```php title="Default value" -'flow' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L15) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Flow-Framework shared directories - -```php title="Default value" -[ - 'Data/Persistent', - 'Data/Logs', - 'Configuration/{{flow_context}}' -] -``` - - - -## Tasks - -### deploy:run_migrations -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L25) - -Applies database migrations. - -Apply database migrations - - -### deploy:publish_resources -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L33) - -Publishes resources. - -Publish resources - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L41) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:run_migrations](/docs/recipe/flow_framework.md#deployrun_migrations) -* [deploy:publish_resources](/docs/recipe/flow_framework.md#deploypublish_resources) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/fuelphp.md b/docs/recipe/fuelphp.md deleted file mode 100644 index ac9339a07..000000000 --- a/docs/recipe/fuelphp.md +++ /dev/null @@ -1,80 +0,0 @@ - - - - -# How to Deploy a Fuelphp Project - -```php -require 'recipe/fuelphp.php'; -``` - -[Source](/recipe/fuelphp.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Fuelphp application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Fuelphp** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The fuelphp recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/fuelphp.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -FuelPHP 1.x shared dirs - -```php title="Default value" -[ - 'fuel/app/cache', 'fuel/app/logs', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/fuelphp.php#L17) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/joomla.md b/docs/recipe/joomla.md deleted file mode 100644 index bcb7bc664..000000000 --- a/docs/recipe/joomla.md +++ /dev/null @@ -1,100 +0,0 @@ - - - - -# How to Deploy a Joomla Project - -```php -require 'recipe/joomla.php'; -``` - -[Source](/recipe/joomla.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Joomla application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Joomla** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The joomla recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['configuration.php'] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['images'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -['images'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L13) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/laravel.md b/docs/recipe/laravel.md deleted file mode 100644 index d24ffdf84..000000000 --- a/docs/recipe/laravel.md +++ /dev/null @@ -1,475 +0,0 @@ - - - - -# How to Deploy a Laravel Project - -```php -require 'recipe/laravel.php'; -``` - -[Source](/recipe/laravel.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Laravel application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Laravel** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) – Creates the symbolic links configured for the application -* [artisan:config:cache](/docs/recipe/laravel.md#artisanconfigcache) – Creates a cache file for faster configuration loading -* [artisan:route:cache](/docs/recipe/laravel.md#artisanroutecache) – Creates a route cache file for faster route registration -* [artisan:view:cache](/docs/recipe/laravel.md#artisanviewcache) – Compiles all of the application\'s Blade templates -* [artisan:event:cache](/docs/recipe/laravel.md#artisaneventcache) – Discovers and cache the application\'s events and listeners -* [artisan:migrate](/docs/recipe/laravel.md#artisanmigrate) – Runs the database migrations -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The laravel recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L8) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['storage'] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L9) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['.env'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'bootstrap/cache', - 'storage', - 'storage/app', - 'storage/app/public', - 'storage/framework', - 'storage/framework/cache', - 'storage/framework/cache/data', - 'storage/framework/sessions', - 'storage/framework/views', - 'storage/logs', -] -``` - - -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L22) - - - -```php title="Default value" -'storage/logs/*.log' -``` - - -### laravel_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L23) - - - -```php title="Default value" -$result = run('{{bin/php}} {{release_or_current_path}}/artisan --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.5; -``` - - - -## Tasks - -### artisan:down -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L90) - -Puts the application into maintenance / demo mode. - - - - -### artisan:up -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L93) - -Brings the application out of maintenance mode. - - - - -### artisan:​key:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L100) - -Sets the application key. - - - - -### artisan:passport:keys -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L103) - -Creates the encryption keys for API authentication. - - - - -### artisan:db:seed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L110) - -Seeds the database with records. - - - - -### artisan:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L113) - -Runs the database migrations. - - - - -### artisan:migrate:fresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L116) - -Drops all tables and re-run all migrations. - - - - -### artisan:migrate:rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L119) - -Rollbacks the last database migration. - - - - -### artisan:migrate:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L122) - -Shows the status of each migration. - - - - -### artisan:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L129) - -Flushes the application cache. - - - - -### artisan:config:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L132) - -Creates a cache file for faster configuration loading. - - - - -### artisan:config:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L135) - -Removes the configuration cache file. - - - - -### artisan:event:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L138) - -Discovers and cache the application\'s events and listeners. - - - - -### artisan:event:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L141) - -Clears all cached events and listeners. - - - - -### artisan:event:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L144) - -Lists the application\'s events and listeners. - - - - -### artisan:optimize -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L147) - -Cache the framework bootstrap files. - - - - -### artisan:optimize:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L150) - -Removes the cached bootstrap files. - - - - -### artisan:route:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L153) - -Creates a route cache file for faster route registration. - - - - -### artisan:route:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L156) - -Removes the route cache file. - - - - -### artisan:route:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L159) - -Lists all registered routes. - - - - -### artisan:storage:link -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L162) - -Creates the symbolic links configured for the application. - - - - -### artisan:view:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L165) - -Compiles all of the application\'s Blade templates. - - - - -### artisan:view:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L168) - -Clears all compiled view files. - - - - -### artisan:queue:failed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L175) - -Lists all of the failed queue jobs. - - - - -### artisan:queue:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L178) - -Flushes all of the failed queue jobs. - - - - -### artisan:queue:restart -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L181) - -Restarts queue worker daemons after their current job. - - - - -### artisan:horizon -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L184) - -Starts a master supervisor in the foreground. - - - - -### artisan:horizon:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L187) - -Deletes all of the jobs from the specified queue. - - - - -### artisan:horizon:continue -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L190) - -Instructs the master supervisor to continue processing jobs. - - - - -### artisan:horizon:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L193) - -Lists all of the deployed machines. - - - - -### artisan:horizon:pause -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L196) - -Pauses the master supervisor. - - - - -### artisan:horizon:purge -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L199) - -Terminates any rogue Horizon processes. - - - - -### artisan:horizon:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L202) - -Gets the current status of Horizon. - - - - -### artisan:horizon:terminate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L205) - -Terminates the master supervisor so it can be restarted. - - - - -### artisan:horizon:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L208) - -Publish all of the Horizon resources. - - - - -### artisan:​telescope:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L215) - -Clears all entries from Telescope. - - - - -### artisan:​telescope:prune -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L218) - -Prunes stale entries from the Telescope database. - - - - -### artisan:octane -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L225) - -Starts the octane server. - - - - -### artisan:octane:reload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L228) - -Reloads the octane server. - - - - -### artisan:octane:stop -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L231) - -Stops the octane server. - - - - -### artisan:octane:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L234) - -Check the status of the octane server. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L240) - -Deploys your project. - -Main deploy task. - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) -* [artisan:config:cache](/docs/recipe/laravel.md#artisanconfigcache) -* [artisan:route:cache](/docs/recipe/laravel.md#artisanroutecache) -* [artisan:view:cache](/docs/recipe/laravel.md#artisanviewcache) -* [artisan:event:cache](/docs/recipe/laravel.md#artisaneventcache) -* [artisan:migrate](/docs/recipe/laravel.md#artisanmigrate) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/magento.md b/docs/recipe/magento.md deleted file mode 100644 index b512c5863..000000000 --- a/docs/recipe/magento.md +++ /dev/null @@ -1,118 +0,0 @@ - - - - -# How to Deploy a Magento Project - -```php -require 'recipe/magento.php'; -``` - -[Source](/recipe/magento.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Magento application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Magento** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:cache:clear](/docs/recipe/magento.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The magento recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L13) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Magento shared dirs - -```php title="Default value" -['var', 'media'] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L16) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Magento shared files - -```php title="Default value" -['app/etc/local.xml'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L19) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Magento writable dirs - -```php title="Default value" -['var', 'media'] -``` - - - -## Tasks - -### deploy:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L25) - -Clears cache. - -Clear cache - - -### deploy:clear_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L32) - - - -Remove files that can be used to compromise Magento - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L46) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:cache:clear](/docs/recipe/magento.md#deploycacheclear) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/magento2.md b/docs/recipe/magento2.md deleted file mode 100644 index 829a27e75..000000000 --- a/docs/recipe/magento2.md +++ /dev/null @@ -1,486 +0,0 @@ - - - - -# How to Deploy a Magento 2 Project - -```php -require 'recipe/magento2.php'; -``` - -[Source](/recipe/magento2.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Magento 2 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Magento 2** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) – Cleanup files and/or directories -* [deploy:magento](/docs/recipe/magento2.md#deploymagento) – Magento2 deployment operations - * [magento:build](/docs/recipe/magento2.md#magentobuild) – Magento2 build operations - * [magento:compile](/docs/recipe/magento2.md#magentocompile) – Compiles magento di - * [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) – Deploys assets - * [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) – Config Import - * [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) – Upgrades magento database - * [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) – Flushes Magento Cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The magento2 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### static_content_locales -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L23) - -By default setup:static-content:deploy uses `en_US`. -To change that, simply put `set('static_content_locales', 'en_US de_DE');` -in you deployer script. - -```php title="Default value" -'en_US' -``` - - -### magento_themes -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L29) - -You can also set the themes to run against. By default it'll deploy -all themes - `add('magento_themes', ['Magento/luma', 'Magento/backend']);` - -```php title="Default value" -[ - -] -``` - - -### static_content_jobs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L37) - -Also set the number of conccurent jobs to run. The default is 1 -Update using: `set('static_content_jobs', '1');` - -```php title="Default value" -'1' -``` - - -### content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L39) - - - -```php title="Default value" -return time(); -``` - - -### magento_dir -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L44) - -Magento directory relative to repository root. Use "." (default) if it is not located in a subdirectory - -```php title="Default value" -'.' -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L47) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/app/etc/env.php', - '{{magento_dir}}/var/.maintenance.ip', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L51) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/var/composer_home', - '{{magento_dir}}/var/log', - '{{magento_dir}}/var/export', - '{{magento_dir}}/var/report', - '{{magento_dir}}/var/import', - '{{magento_dir}}/var/import_history', - '{{magento_dir}}/var/session', - '{{magento_dir}}/var/importexport', - '{{magento_dir}}/var/backups', - '{{magento_dir}}/var/tmp', - '{{magento_dir}}/pub/sitemap', - '{{magento_dir}}/pub/media', - '{{magento_dir}}/pub/static/_cache' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L66) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/var', - '{{magento_dir}}/pub/static', - '{{magento_dir}}/pub/media', - '{{magento_dir}}/generated', - '{{magento_dir}}/var/page_cache' -] -``` - - -### clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L73) - -Overrides [clear_paths](/docs/recipe/deploy/clear_paths.md#clear_paths) from `recipe/deploy/clear_paths.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/generated/*', - '{{magento_dir}}/pub/static/_cache/*', - '{{magento_dir}}/var/generation/*', - '{{magento_dir}}/var/cache/*', - '{{magento_dir}}/var/page_cache/*', - '{{magento_dir}}/var/view_preprocessed/*' -] -``` - - -### bin/magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L82) - - - -```php title="Default value" -'{{release_or_current_path}}/{{magento_dir}}/bin/magento' -``` - - -### magento_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L84) - - - -```php title="Default value" -// detect version -$versionOutput = run('{{bin/php}} {{bin/magento}} --version'); -preg_match('/(\d+\.?)+(-p\d+)?$/', $versionOutput, $matches); -return $matches[0] ?? '2.0'; -``` - - -### maintenance_mode_status_active -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L91) - - - -```php title="Default value" -// detect maintenance mode active -$maintenanceModeStatusOutput = run("{{bin/php}} {{bin/magento}} maintenance:status"); -return strpos($maintenanceModeStatusOutput, MAINTENANCE_MODE_ACTIVE_OUTPUT_MSG) !== false; -``` - - -### enable_zerodowntime -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L98) - -Deploy without setting maintenance mode if possible - -```php title="Default value" -true -``` - - -### artifact_file -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L236) - -artifact deployment section -settings section - -```php title="Default value" -'artifact.tar.gz' -``` - - -### artifact_dir -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L237) - - - -```php title="Default value" -'artifacts' -``` - - -### artifact_excludes_file -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L238) - - - -```php title="Default value" -'artifacts/excludes' -``` - - -### build_from_repo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L240) - -If set to true, the artifact is built from a clean copy of the project repository instead of the current working directory - -```php title="Default value" -false -``` - - -### repository -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L242) - -Overrides [repository](/docs/recipe/common.md#repository) from `recipe/common.php`. - -Set this value if "build_from_repo" is set to true. The target to deploy must also be set with "--branch", "--tag" or "--revision" - -```php title="Default value" -null -``` - - -### artifact_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L244) - - - -```php title="Default value" -if (!testLocally('[ -d {{artifact_dir}} ]')) { -runLocally('mkdir -p {{artifact_dir}}'); -} -return get('artifact_dir') . '/' . get('artifact_file'); -``` - - -### bin/tar -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L251) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### additional_shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L325) - -Array of shared files that will be added to the default shared_files without overriding - - - -### additional_shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L327) - -Array of shared directories that will be added to the default shared_dirs without overriding - - - - -## Tasks - -### magento:compile -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L102) - -Compiles magento di. - -Tasks - - -### magento:deploy:assets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L108) - -Deploys assets. - - - - -### magento:sync:content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L121) - -Syncs content version. - - - - -### magento:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L131) - -Enables maintenance mode. - - - - -### magento:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L137) - -Disables maintenance mode. - - - - -### magento:config:import -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L143) - -Config Import. - - - - -### magento:upgrade:db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L178) - -Upgrades magento database. - - - - -### magento:cache:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L205) - -Flushes Magento Cache. - - - - -### deploy:magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L210) - -Magento2 deployment operations. - - - - -This task is group task which contains next tasks: -* [magento:build](/docs/recipe/magento2.md#magentobuild) -* [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) -* [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) -* [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) - - -### magento:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L218) - -Magento2 build operations. - - - - -This task is group task which contains next tasks: -* [magento:compile](/docs/recipe/magento2.md#magentocompile) -* [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L224) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) -* [deploy:magento](/docs/recipe/magento2.md#deploymagento) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### artifact:package -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L261) - -Packages all relevant files in an artifact. - -tasks section - - -### artifact:upload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L271) - -Uploads artifact in release folder for extraction. - - - - -### artifact:extract -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L276) - -Extracts artifact in release path. - - - - -### build:remove-generated -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L282) - -Clears generated files prior to building. - - - - -### build:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L287) - -Prepare local artifact build. - - - - -### deploy:additional-shared -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L331) - -Adds additional files and dirs to the list of shared files and dirs. - - - - diff --git a/docs/recipe/pimcore.md b/docs/recipe/pimcore.md deleted file mode 100644 index 5a067f0ea..000000000 --- a/docs/recipe/pimcore.md +++ /dev/null @@ -1,89 +0,0 @@ - - - - -# How to Deploy a Pimcore Project - -```php -require 'recipe/pimcore.php'; -``` - -[Source](/recipe/pimcore.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Pimcore application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Pimcore** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The pimcore recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - - -## Tasks - -### pimcore:rebuild-classes -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L15) - -Rebuilds Pimcore Classes. - - - - -### pimcore:custom-layouts-rebuild -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L20) - -Creates Custom Layouts. - - - - -### pimcore:cache_clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L25) - -Removes cache. - - - - -### pimcore:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L29) - - - - - - -This task is group task which contains next tasks: -* [pimcore:rebuild-classes](/docs/recipe/pimcore.md#pimcorerebuild-classes) -* [pimcore:custom-layouts-rebuild](/docs/recipe/pimcore.md#pimcorecustom-layouts-rebuild) - - diff --git a/docs/recipe/prestashop.md b/docs/recipe/prestashop.md deleted file mode 100644 index 8faa1c12e..000000000 --- a/docs/recipe/prestashop.md +++ /dev/null @@ -1,127 +0,0 @@ - - - - -# How to Deploy a Prestashop Project - -```php -require 'recipe/prestashop.php'; -``` - -[Source](/recipe/prestashop.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Prestashop application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Prestashop** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The prestashop recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'config/settings.inc.php', - '.htaccess', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L12) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'img', - 'log', - 'download', - 'upload', - 'translations', - 'mails', - 'themes/default-bootstrap/lang', - 'themes/default-bootstrap/mails', - 'themes/default-bootstrap/pdf/lang', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L23) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'img', - 'log', - 'cache', - 'download', - 'upload', - 'translations', - 'mails', - 'themes/default-bootstrap/lang', - 'themes/default-bootstrap/mails', - 'themes/default-bootstrap/pdf/lang', - 'themes/default-bootstrap/cache', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L38) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/provision.md b/docs/recipe/provision.md deleted file mode 100644 index 613f109bc..000000000 --- a/docs/recipe/provision.md +++ /dev/null @@ -1,160 +0,0 @@ - - - - -# Provision Recipe - -```php -require 'recipe/provision.php'; -``` - -[Source](/recipe/provision.php) - -* Requires - * [databases](/docs/recipe/provision/databases.md) - * [nodejs](/docs/recipe/provision/nodejs.md) - * [php](/docs/recipe/provision/php.md) - * [website](/docs/recipe/provision/website.md) - -## Configuration -### lsb_release -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L15) - -Name of lsb_release like: focal, bionic, etc. -As only Ubuntu 20.04 LTS is supported for provision should be the `focal`. - -```php title="Default value" -return run("lsb_release -s -c"); -``` - - -### sudo_password -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L216) - - - -```php title="Default value" -return askHiddenResponse(' Password for sudo: '); -``` - - -### ssh_copy_id -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L222) - -Specify which key to copy to server. -Set to `false` to disable copy of key. - -```php title="Default value" -'~/.ssh/id_rsa.pub' -``` - - - -## Tasks - -### provision -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L20) - -Provision the server. - - - - -This task is group task which contains next tasks: -* [provision:check](/docs/recipe/provision.md#provisioncheck) -* [provision:configure](/docs/recipe/provision.md#provisionconfigure) -* [provision:update](/docs/recipe/provision.md#provisionupdate) -* [provision:upgrade](/docs/recipe/provision.md#provisionupgrade) -* [provision:install](/docs/recipe/provision.md#provisioninstall) -* [provision:ssh](/docs/recipe/provision.md#provisionssh) -* [provision:firewall](/docs/recipe/provision.md#provisionfirewall) -* [provision:deployer](/docs/recipe/provision.md#provisiondeployer) -* [provision:server](/docs/recipe/provision.md#provisionserver) -* [provision:php](/docs/recipe/provision/php.md#provisionphp) -* [provision:databases](/docs/recipe/provision/databases.md#provisiondatabases) -* [provision:composer](/docs/recipe/provision/php.md#provisioncomposer) -* [provision:npm](/docs/recipe/provision/nodejs.md#provisionnpm) -* [provision:website](/docs/recipe/provision/website.md#provisionwebsite) -* [provision:verify](/docs/recipe/provision.md#provisionverify) - - -### provision:check -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L39) - -Checks pre-required state. - - - - -### provision:configure -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L59) - -Collects required params. - - - - -### provision:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L82) - -Adds repositories and update. - - - - -### provision:upgrade -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L104) - -Upgrades all packages. - - - - -### provision:install -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L111) - -Installs packages. - - - - -### provision:server -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L145) - -Configures a server. - - - - -### provision:ssh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L206) - -Configures the ssh. - - - - -### provision:deployer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L225) - -Setups a deployer user. - - - - -### provision:firewall -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L272) - -Setups a firewall. - - - - -### provision:verify -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L280) - -Verifies what provision was successful. - - - - diff --git a/docs/recipe/provision/databases.md b/docs/recipe/provision/databases.md deleted file mode 100644 index 082338fe6..000000000 --- a/docs/recipe/provision/databases.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# Databases Recipe - -```php -require 'recipe/provision/databases.php'; -``` - -[Source](/recipe/provision/databases.php) - - -## Configuration -### db_type -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L4) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### db_name -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L14) - - - -```php title="Default value" -return ask(' DB name: '); -``` - - -### db_user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L18) - - - -```php title="Default value" -return ask(' DB user: ', 'deployer'); -``` - - -### db_password -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L22) - - - -```php title="Default value" -return askHiddenResponse(' DB password: '); -``` - - - -## Tasks - -### provision:databases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L27) - -Provision databases. - - - - -### provision:mysql -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L37) - -Provision MySQL. - - - - -### provision:mariadb -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L48) - -Provision MariaDB. - - - - -### provision:postgresql -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L59) - -Provision PostgreSQL. - - - - diff --git a/docs/recipe/provision/nodejs.md b/docs/recipe/provision/nodejs.md deleted file mode 100644 index 9bc63b7d7..000000000 --- a/docs/recipe/provision/nodejs.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Nodejs Recipe - -```php -require 'recipe/provision/nodejs.php'; -``` - -[Source](/recipe/provision/nodejs.php) - - -## Configuration -### nodejs_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/nodejs.php#L5) - -Node.js version from https://github.com/nodesource/distributions. - -```php title="Default value" -'node_16.x' -``` - - - -## Tasks - -### provision:npm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/nodejs.php#L8) - -Installs npm packages. - - - - diff --git a/docs/recipe/provision/php.md b/docs/recipe/provision/php.md deleted file mode 100644 index 0ccbdb9da..000000000 --- a/docs/recipe/provision/php.md +++ /dev/null @@ -1,51 +0,0 @@ - - - - -# Php Recipe - -```php -require 'recipe/provision/php.php'; -``` - -[Source](/recipe/provision/php.php) - - -## Configuration -### php_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L4) - - - -```php title="Default value" -return ask(' What PHP version to install? ', '8.1', ['5.6', '7.4', '8.0', '8.1']); -``` - - - -## Tasks - -### provision:php -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L9) - -Installs PHP packages. - - - - -### logs:php-fpm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L60) - -Shows php-fpm logs. - - - - -### provision:composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L65) - -Installs Composer. - - - - diff --git a/docs/recipe/provision/website.md b/docs/recipe/provision/website.md deleted file mode 100644 index ee8202b16..000000000 --- a/docs/recipe/provision/website.md +++ /dev/null @@ -1,61 +0,0 @@ - - - - -# Website Recipe - -```php -require 'recipe/provision/website.php'; -``` - -[Source](/recipe/provision/website.php) - - -## Configuration -### domain -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L4) - - - -```php title="Default value" -return ask(' Domain: '); -``` - - -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L8) - - - -```php title="Default value" -return ask(' Public path: ', 'public'); -``` - - - -## Tasks - -### provision:website -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L13) - -Provision website. - - - - -### logs:caddy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L82) - -Shows caddy logs. - - - - -### logs:caddy:syslog -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L87) - -Shows caddy syslog. - - - - diff --git a/docs/recipe/shopware.md b/docs/recipe/shopware.md deleted file mode 100644 index a71fd443b..000000000 --- a/docs/recipe/shopware.md +++ /dev/null @@ -1,257 +0,0 @@ - - - - -# How to Deploy a Shopware Project - -```php -require 'recipe/shopware.php'; -``` - -[Source](/recipe/shopware.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Shopware application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Shopware** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [sw:deploy](/docs/recipe/shopware.md#swdeploy) – - * [sw:database:migrate](/docs/recipe/shopware.md#swdatabasemigrate) – - * [sw:plugin:refresh](/docs/recipe/shopware.md#swpluginrefresh) – - * [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) – - * [sw:plugin:update:all](/docs/recipe/shopware.md#swpluginupdateall) – - * [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) – -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) – Cleanup files and/or directories -* [sw:cache:warmup](/docs/recipe/shopware.md#swcachewarmup) – -* [sw:writable:jwt](/docs/recipe/shopware.md#swwritablejwt) – -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The shopware recipe is based on the [common](/docs/recipe/common.md) recipe. - - -## Usage - -Add {{repository}} to your _deploy.php_ file: - -```php -set('repository', 'git@github.com:shopware/production.git'); -``` - -:::note -Please remember that the installation must be modified so that it can be -[build without database](https://developer.shopware.com/docs/guides/hosting/installation-updates/deployments/build-w-o-db#compiling-the-storefront-without-database). -::: - - -## Configuration -### default_timeout -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L23) - -Overrides [default_timeout](/docs/recipe/common.md#default_timeout) from `recipe/common.php`. - - - - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L26) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -These files are shared among all releases. - -```php title="Default value" -[ - '.env', - 'install.lock', - 'public/.htaccess', - 'public/.user.ini', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L34) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -These directories are shared among all releases. - -```php title="Default value" -[ - 'config/jwt', - 'files', - 'var/log', - 'public/media', - 'public/thumbnail', - 'public/sitemap', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L45) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -These directories are made writable (the definition of "writable" requires attention). -Please note that the files in `config/jwt/*` receive special attention in the `sw:writable:jwt` task. - -```php title="Default value" -[ - 'config/jwt', - 'custom/plugins', - 'files', - 'public/bundles', - 'public/css', - 'public/fonts', - 'public/js', - 'public/media', - 'public/sitemap', - 'public/theme', - 'public/thumbnail', - 'var', -] -``` - - - -## Tasks - -### sw:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L61) - - - -This task remotely executes the `cache:clear` console command on the target server. - - -### sw:cache:warmup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L67) - - - -This task remotely executes the cache warmup console commands on the target server, so that the first user, who -visits the website, doesn't have to wait for the cache to be built up. - - -### sw:database:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L73) - - - -This task remotely executes the `database:migrate` console command on the target server. - - -### sw:plugin:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L77) - - - - - - -### sw:plugin:update:all -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L113) - - - - - - -### sw:writable:jwt -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L123) - - - - - - -### sw:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L130) - - - -Grouped SW deploy tasks. - - -This task is group task which contains next tasks: -* [sw:database:migrate](/docs/recipe/shopware.md#swdatabasemigrate) -* [sw:plugin:refresh](/docs/recipe/shopware.md#swpluginrefresh) -* [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) -* [sw:plugin:update:all](/docs/recipe/shopware.md#swpluginupdateall) -* [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L139) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [sw:deploy](/docs/recipe/shopware.md#swdeploy) -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) -* [sw:cache:warmup](/docs/recipe/shopware.md#swcachewarmup) -* [sw:writable:jwt](/docs/recipe/shopware.md#swwritablejwt) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### sw-build-without-db:get-remote-config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L149) - - - - - - -### sw-build-without-db:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L162) - - - - - - -### sw-build-without-db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L166) - - - - - - -This task is group task which contains next tasks: -* [sw-build-without-db:get-remote-config](/docs/recipe/shopware.md#sw-build-without-dbget-remote-config) -* [sw-build-without-db:build](/docs/recipe/shopware.md#sw-build-without-dbbuild) - - diff --git a/docs/recipe/silverstripe.md b/docs/recipe/silverstripe.md deleted file mode 100644 index 659859935..000000000 --- a/docs/recipe/silverstripe.md +++ /dev/null @@ -1,136 +0,0 @@ - - - - -# How to Deploy a Silverstripe Project - -```php -require 'recipe/silverstripe.php'; -``` - -[Source](/recipe/silverstripe.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Silverstripe application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Silverstripe** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [silverstripe:buildflush](/docs/recipe/silverstripe.md#silverstripebuildflush) – Runs /dev/build?flush=all -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The silverstripe recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_assets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L12) - - - -```php title="Default value" -if (test('[ -d {{release_or_current_path}}/public ]') || test('[ -d {{deploy_path}}/shared/public ]')) { -return 'public/assets'; -} -return 'assets'; -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L21) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Silverstripe shared dirs - -```php title="Default value" -[ - '{{shared_assets}}' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L26) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Silverstripe writable dirs - -```php title="Default value" -[ - '{{shared_assets}}' -] -``` - - -### silverstripe_cli_script -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L31) - -Silverstripe cli script -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### silverstripe:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L47) - -Runs /dev/build. - -Helper tasks - - -### silverstripe:buildflush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L52) - -Runs /dev/build?flush=all. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L60) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [silverstripe:buildflush](/docs/recipe/silverstripe.md#silverstripebuildflush) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/statamic.md b/docs/recipe/statamic.md deleted file mode 100644 index 9f0d7507b..000000000 --- a/docs/recipe/statamic.md +++ /dev/null @@ -1,222 +0,0 @@ - - - - -# How to Deploy a Statamic Project - -```php -require 'recipe/statamic.php'; -``` - -[Source](/recipe/statamic.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Statamic application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Statamic** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) – Creates the symbolic links configured for the application -* [artisan:cache:clear](/docs/recipe/laravel.md#artisancacheclear) – Flushes the application cache -* [statamic:stache:clear](/docs/recipe/statamic.md#statamicstacheclear) – Clears the "Stache" cache -* [statamic:stache:warm](/docs/recipe/statamic.md#statamicstachewarm) – Builds the "Stache" cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The statamic recipe is based on the [laravel](/docs/recipe/laravel.md) recipe. - -## Configuration -### statamic_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L15) - - - -```php title="Default value" -$result = run('{{bin/php}} {{release_or_current_path}}/please --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 'unknown'; -``` - - - -## Tasks - -### statamic:addons:discover -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L26) - -Rebuilds the cached addon package manifest. - - - - -### statamic:assets:generate-presets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L33) - -Generates asset preset manipulations. - - - - -### statamic:assets:meta -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L36) - -Generates asset metadata files. - - - - -### statamic:git:commit -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L43) - -Git add and commit tracked content. - - - - -### statamic:glide:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L50) - -Clears the Glide image cache. - - - - -### statamic:responsive:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L57) - -Generates responsive images. - - - - -### statamic:responsive:regenerate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L60) - -Regenerate responsive images. - - - - -### statamic:search:insert -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L67) - -Inserts an item into its search indexes. - - - - -### statamic:search:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L70) - -Update a search index. - - - - -### statamic:stache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L77) - -Clears the "Stache" cache. - - - - -### statamic:stache:doctor -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L80) - -Diagnose any problems with the Stache. - - - - -### statamic:stache:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L83) - -Clears and rebuild the "Stache" cache. - - - - -### statamic:stache:warm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L86) - -Builds the "Stache" cache. - - - - -### statamic:static:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L93) - -Clears the static page cache. - - - - -### statamic:static:warm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L96) - -Warms the static cache by visiting all URLs. - - - - -### statamic:support:details -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L103) - -Outputs details helpful for support requests. - - - - -### statamic:updates:run -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L110) - -Runs update scripts from specific version. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L118) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) -* [artisan:cache:clear](/docs/recipe/laravel.md#artisancacheclear) -* [statamic:stache:clear](/docs/recipe/statamic.md#statamicstacheclear) -* [statamic:stache:warm](/docs/recipe/statamic.md#statamicstachewarm) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/sulu.md b/docs/recipe/sulu.md deleted file mode 100644 index cfcc503f7..000000000 --- a/docs/recipe/sulu.md +++ /dev/null @@ -1,87 +0,0 @@ - - - - -# How to Deploy a Sulu Project - -```php -require 'recipe/sulu.php'; -``` - -[Source](/recipe/sulu.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Sulu application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Sulu** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The sulu recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - -## Configuration -### bin/websiteconsole -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L12) - - - -```php title="Default value" -return parse('{{bin/php}} {{release_or_current_path}}/bin/websiteconsole --no-interaction'); -``` - - - -## Tasks - -### phpcr:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L17) - -Migrates PHPCR. - - - - -### deploy:website:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L22) - -Clears cache. - - - - -### deploy:website:cache:warmup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L27) - -Warmups cache. - - - - diff --git a/docs/recipe/symfony.md b/docs/recipe/symfony.md deleted file mode 100644 index 5bafaffd4..000000000 --- a/docs/recipe/symfony.md +++ /dev/null @@ -1,183 +0,0 @@ - - - - -# How to Deploy a Symfony Application - -```php -require 'recipe/symfony.php'; -``` - -[Source](/recipe/symfony.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Symfony application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Symfony** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The symfony recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### symfony_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L8) - - - -```php title="Default value" -$result = run('{{bin/console}} --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.0; -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L14) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'var/log', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L18) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '.env.local' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L22) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'var', - 'var/cache', - 'var/log', - 'var/sessions', -] -``` - - -### migrations_config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L29) - - - - - -### doctrine_schema_validate_config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L31) - - - - - -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L33) - - - -```php title="Default value" -'{{bin/php}} {{release_or_current_path}}/bin/console' -``` - - -### console_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L35) - - - -```php title="Default value" -return '--no-interaction'; -``` - - - -## Tasks - -### database:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L40) - -Migrates database. - - - - -### doctrine:schema:validate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L50) - -Validate the Doctrine mapping files. - - - - -### deploy:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L55) - -Clears cache. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L64) - -Deploys project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/typo3.md b/docs/recipe/typo3.md deleted file mode 100644 index ad84e4a4e..000000000 --- a/docs/recipe/typo3.md +++ /dev/null @@ -1,123 +0,0 @@ - - - - -# How to Deploy a TYPO3 Project - -```php -require 'recipe/typo3.php'; -``` - -[Source](/recipe/typo3.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your TYPO3 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **TYPO3** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The typo3 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### typo3_webroot -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L11) - -DocumentRoot / WebRoot for the TYPO3 installation - -```php title="Default value" -'Web' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L26) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Shared directories - -```php title="Default value" -[ - '{{typo3_webroot}}/fileadmin', - '{{typo3_webroot}}/typo3temp', - '{{typo3_webroot}}/uploads' -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L35) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Shared files - -```php title="Default value" -[ - '{{typo3_webroot}}/.htaccess' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L42) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Writeable directories - -```php title="Default value" -[ - '{{typo3_webroot}}/fileadmin', - '{{typo3_webroot}}/typo3temp', - '{{typo3_webroot}}/typo3conf', - '{{typo3_webroot}}/uploads' -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L17) - -Deploys your project. - -Main TYPO3 task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/wordpress.md b/docs/recipe/wordpress.md deleted file mode 100644 index 67c40ff9a..000000000 --- a/docs/recipe/wordpress.md +++ /dev/null @@ -1,100 +0,0 @@ - - - - -# How to Deploy a WordPress Project - -```php -require 'recipe/wordpress.php'; -``` - -[Source](/recipe/wordpress.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your WordPress application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **WordPress** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The wordpress recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['wp-config.php'] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['wp-content/uploads'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -['wp-content/uploads'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L13) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/yii.md b/docs/recipe/yii.md deleted file mode 100644 index af7df22f5..000000000 --- a/docs/recipe/yii.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# How to Deploy a Yii2 Project - -```php -require 'recipe/yii.php'; -``` - -[Source](/recipe/yii.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Yii2 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Yii2** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The yii recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Yii shared dirs - -```php title="Default value" -['runtime'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L12) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Yii writable dirs - -```php title="Default value" -['runtime'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L18) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/zend_framework.md b/docs/recipe/zend_framework.md deleted file mode 100644 index b9f34b88a..000000000 --- a/docs/recipe/zend_framework.md +++ /dev/null @@ -1,65 +0,0 @@ - - - - -# How to Deploy a Zend Framework Project - -```php -require 'recipe/zend_framework.php'; -``` - -[Source](/recipe/zend_framework.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Zend Framework application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Zend Framework** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The zend_framework recipe is based on the [common](/docs/recipe/common.md) recipe. - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/zend_framework.php#L12) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/selector.md b/docs/selector.md deleted file mode 100644 index 6d9f8f165..000000000 --- a/docs/selector.md +++ /dev/null @@ -1,178 +0,0 @@ -# Selector - -Deployer uses the selector to choose hosts. Each host can have a set of labels. -Labels are key-value pairs. - -For example, `stage: production` or `role: web`. - -You can use labels to select hosts. For example, `dep deploy stage=production` -will deploy to all hosts with `stage: production` label. - -Let's define two labels **type** and **env** of our hosts: - -```php -host('web.example.com') - ->setLabels([ - 'type' => 'web', - 'env' => 'prod', - ]); - -host('db.example.com') - ->setLabels([ - 'type' => 'db', - 'env' => 'prod', - ]); -``` - -Now let's define a task to check labels: - -```php -task('info', function () { - writeln('type:' . get('labels')['type'] . ' env:' . get('labels')['env']); -}); -``` - -Now we can run this task on with a selector: - -```bash -$ dep info env=prod -task info -[web.example.com] type:web env:prod -[db.example.com] type:db env:prod -``` - -As you can see, Deployer will run this task on all hosts with `env: prod` label. -And if we define only `type` label, Deployer will run this task on specified host. - -```bash -dep info type=web -task info -[web.example.com] type:web env:prod -``` - -## Selector syntax - -Label syntax is represented by [disjunctive normal form](https://en.wikipedia.org/wiki/Disjunctive_normal_form) -(**OR of ANDs**). - -For example, `type=web,env=prod` is a selector of: `type=web` **OR** `env=prod`. - -```bash -$ dep info 'type=web,env=prod' -task info -[web.example.com] type:web env:prod -[db.example.com] type:db env:prod -``` - -As you can see both hosts are selected (as both of them has `env: prod` label). - -We can use `&` to define **AND**. For example, `type=web & env=prod` is a selector -for hosts with `type: web` **AND** `env: prod` labels. - -```bash -$ dep info 'type=web & env=prod' -task info -[web.example.com] type:web env:prod -``` - -We can also use `!=` to negate a label. For example, `type!=web` is a selector for -all hosts what has not `type: web` label. - -```bash -$ dep info 'type!=web' -task info -[db.example.com] type:db env:prod -``` - -:::note -Deployer CLI can take a few selectors as arguments. For example, -`dep info type=web env=prod` is a same as `dep info 'type=web,env=prod'`. - -You can install bash autocompletion for Deployer CLI, which will help you to -write selectors. See [installation](installation.md) for more. -::: - -Deployer also has a few special selectors: - -- `all` - select all hosts -- `alias=...` - select host by alias - -If a selector does not contain `=` sign, Deployer will assume that it is an alias. - -For example `dep info web.example.com` is a same as `dep info alias=web.example.com`. - -```bash -$ dep info web.example.com -task info -[web.example.com] type:web env:prod -``` - -```bash -$ dep info 'web.example.com' 'db.example.com' -$ # Same as: -$ dep info 'alias=web.example.com,alias=db.example.com' -```` - -## Using select() function - -You can use [select()](api.md#select) function to select hosts by selector from PHP code. - -```php -task('info', function () { - $hosts = select('type=web,env=prod'); - foreach ($hosts as $host) { - writeln('type:' . $host->get('labels')['type'] . ' env:' . $host->get('labels')['env']); - } -}); -``` - -Or you can use [on()](api.md#on) function to run a task on selected hosts. - -```php -task('info', function () { - on(select('all'), function () { - writeln('type:' . get('labels')['type'] . ' env:' . get('labels')['env']); - }); -}); -``` - -## Task selectors - -To restrict a task to run only on selected hosts, you can use [select()](tasks.md#select) method. - -```php -task('info', function () { - // ... -})->select('type=web,env=prod'); -``` - -## Labels in YAML - -You can also define labels in YAML recipe. For example: - -```yaml -hosts: - web.example.com: - remote_user: deployer - env: - environment: production - labels: - env: prod -``` - -But make sure to distinguish between `env` and `labels.env` keys. -`env` is a configuration key, and `labels.env` is a label. - -```php -task('info', function () { - writeln('env:' . get('env')['environment'] . ' labels.env:' . get('labels')['env']); -}); -``` - -Will print: - -```bash -$ dep info env=prod -task info -[web.example.com] env:production labels.env:prod -``` diff --git a/docs/sidebar.js b/docs/sidebar.js deleted file mode 100644 index c465bc5ab..000000000 --- a/docs/sidebar.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = [ - "installation", - "getting-started", - "basics", - { - type: "category", - label: "Main Concepts", - items: ["hosts", "tasks", "selector"], - }, - "ci-cd", - "yaml", - "cli", - "api", - { - type: "category", - label: "Other", - items: ["avoid-php-fpm-reloading", "UPGRADE", "KNOWN_BUGS"], - }, -]; diff --git a/docs/tasks.md b/docs/tasks.md deleted file mode 100644 index 406ccd586..000000000 --- a/docs/tasks.md +++ /dev/null @@ -1,135 +0,0 @@ -# Tasks - -Define a tasks by using the [task](api.md#task) function. Also, you can give a description -for a task with the [desc](api.md#desc) function called before _task_: - -```php -desc('My task'); -task('my_task', function () { - .... -}); -``` - -To get the task or override task config call the _task_ function without second argument: - -```php -task('my_task')->disable(); -``` - -## Task config - -### desc() - -Sets task's description. - -```php -task('deploy', function () { - // ... -})->desc('Task description'); -``` - -Same as using [desc()](api.md#desc) func helper: - -```php -desc('Task description'); -task('deploy', function () { - // ... -}); -``` - -### once() - -Sets the task to run only on one of selected hosts. - -### oncePerNode() - -Sets the task to run only on **one node** of selected hosts. - -Node determined by [hostname](hosts.md#hostname). For example a few different -hosts can be deploying to one physical machine (uniq hostname). - -```php -host('foo')->setHostname('example.com'); -host('bar')->setHostname('example.com'); -host('pro')->setHostname('another.com'); - -task('apt:update', function () { - // This task will be executed twice, only on "foo" and "pro" hosts. - run('apt-get update'); -})->oncePerNode(); -``` - -### hidden() - -Hides task from CLI usage page. - -### addBefore() - -Adds before hook to the task. - -### addAfter() - -Adds after hook to the task. - -### limit() - -Limits number of hosts the task will be executed in parallel. - -Default is unlimited (runs the task on all host in parallel). - -### select() - -Sets task's host selector. - -### addSelector() - -Adds task's selector. - -### verbose() - -Makes task always verbose. As if `-v` option persists. - -### disable() - -Disables the task. Task will not be executed. - -### enable() - -Enables the task. - -## Task grouping - -You can combine tasks in groups: - -```php -task('deploy', [ - 'deploy:prepare', - 'deploy:update_code', - 'deploy:vendors', - 'deploy:symlink', - 'cleanup' -]); -``` - -## Task hooks - -You can define tasks to be run before or after specific tasks. - -```php -task('deploy:done', function () { - writeln('Deploy done!'); -}); - -after('deploy', 'deploy:done'); -``` - -After the `deploy` task executed, `deploy:done` will be triggered. - -:::note -You can see which hooks is enabled via **dep tree** command. - -``` -dep tree deploy -``` - -::: diff --git a/docs/yaml.md b/docs/yaml.md deleted file mode 100644 index 71906117e..000000000 --- a/docs/yaml.md +++ /dev/null @@ -1,31 +0,0 @@ -# YAML - -Deployer supports recipes written in YAML. For validating structure, Deployer uses -JSON Schema declared in [schema.json](https://github.com/deployphp/deployer/blob/master/src/schema.json). - -Here is an example of YAML recipe: - -```yaml -import: - - recipe/laravel.php - -config: - repository: "git@github.com:example/example.com.git" - remote_user: deployer - -hosts: - example.com: - deploy_path: "~/example" - -tasks: - build: - - cd: "{{release_path}}" - - run: "npm run build" - -after: - deploy:failed: deploy:unlock -``` - -YAML recipes can include recipes written in PHP. For example, some tasks maybe written in PHP and imported in YAML. - -Also, other way around is possible: import YAML recipe from PHP. Use [import()](api.md#import) function for that. diff --git a/phpcs.xml b/phpcs.xml deleted file mode 100644 index df21cf250..000000000 --- a/phpcs.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - src - - - - - - diff --git a/phpstan.neon b/phpstan.neon deleted file mode 100644 index 99d3c05a4..000000000 --- a/phpstan.neon +++ /dev/null @@ -1,15 +0,0 @@ -includes: - - tests/phpstan-baseline.neon - -parameters: - level: 5 - paths: - - src - - recipe - - contrib - - ignoreErrors: - - "#^Constant DEPLOYER_VERSION not found\\.$#" - - "#^Constant DEPLOYER_BIN not found\\.$#" - - "#CpanelPhp#" - - "#AMQPMessage#" diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index 9d98c66bf..000000000 --- a/phpunit.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - src/ - recipe/ - - - vendor/ - bin/ - - - - - tests/src/ - - - tests/legacy/ - - - tests/joy/ - - - diff --git a/tests/bootstrap.php b/tests/bootstrap.php deleted file mode 100644 index 6835938bd..000000000 --- a/tests/bootstrap.php +++ /dev/null @@ -1,40 +0,0 @@ -&1`; -`cd $repository && git add .`; -`cd $repository && git config user.name 'Anton Medvedev'`; -`cd $repository && git config user.email 'anton.medv@example.com'`; -`cd $repository && git commit -m 'first commit'`; diff --git a/tests/docker/Dockerfile b/tests/docker/Dockerfile deleted file mode 100644 index edd5914c2..000000000 --- a/tests/docker/Dockerfile +++ /dev/null @@ -1,102 +0,0 @@ -FROM php:7.3-cli-alpine AS composer -RUN apk add wget -COPY ./scripts/install-composer.sh /tmp/install-composer.sh -RUN sh /tmp/install-composer.sh - - - - - -FROM php:7.3-cli-alpine AS deployer -RUN apk add \ - git \ - openssh-client \ - rsync - -RUN ssh-keygen \ - -q \ - -b 2048 \ - -t rsa \ - -f ~/.ssh/id_rsa - -RUN git config --global user.email "e2e@deployer.test" \ - && git config --global user.name "E2E Deployer" - -ARG XDEBUG_VERSION=2.9.8 -RUN set -eux; \ - apk add --no-cache --virtual .build-deps $PHPIZE_DEPS; \ - pecl install xdebug-$XDEBUG_VERSION; \ - docker-php-ext-enable xdebug; \ - apk del .build-deps - -COPY scripts/php-code-coverage/coverage-start-wrapper.php /usr/local/etc/php/php-code-coverage/ -COPY conf/10-coverage.ini /usr/local/etc/php/conf.d/ - -COPY --from=composer /tmp/composer /bin/composer -VOLUME [ "/project" ] -WORKDIR /project - - - - - -FROM php:7.3-apache AS server -RUN apt-get update && apt-get install -y \ - acl \ - git \ - openssh-server \ - sudo \ - && rm -rf /var/lib/apt/lists/* - -# SSH login fix. Otherwise user is kicked off after login -RUN mkdir /run/sshd \ - && sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd - -# Configure Apache to expose healthcheck & configure site to use /var/www/html/current ad document root -COPY conf/healthcheck.conf /etc/apache2/sites-available/healthcheck.conf -COPY ./initial-site /var/www/html/initial-site - -ENV APACHE_DOCUMENT_ROOT /var/www/html/current/public -RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/000-default.conf \ - && sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf \ - && ln -s /var/www/html/initial-site /var/www/html/current \ - && chown -R www-data:www-data /var/www/html \ - && echo "Listen 81" >> /etc/apache2/ports.conf \ - && a2enmod rewrite \ - && a2ensite healthcheck - -RUN useradd \ - --create-home \ - deployer \ - && echo 'deployer:deployer' | chpasswd \ - && echo 'deployer ALL=(ALL) ALL' >> /etc/sudoers \ - && mkdir ~deployer/.ssh \ - && touch ~deployer/.ssh/authorized_keys \ - && chown -R deployer:deployer ~deployer/.ssh \ - && chmod 700 ~deployer/.ssh \ - && chmod 600 ~deployer/.ssh/authorized_keys \ - && usermod -a -G www-data deployer - -RUN useradd \ - --create-home \ - git \ - && mkdir ~git/.ssh \ - && touch ~git/.ssh/authorized_keys \ - && chown -R git:git ~git/.ssh \ - && chmod 700 ~git/.ssh \ - && chmod 700 ~git/.ssh/authorized_keys \ - && mkdir ~git/repository \ - && git init --bare ~git/repository \ - && chown -R git:git ~git/repository - -COPY scripts/start-servers.sh /usr/local/bin/start-servers -COPY --from=composer /tmp/composer /usr/local/bin/composer -COPY --from=deployer /root/.ssh/id_rsa.pub /tmp/root_rsa.pub - -RUN chmod a+x /usr/local/bin/start-servers \ - && cat /tmp/root_rsa.pub >> ~deployer/.ssh/authorized_keys \ - && cat /tmp/root_rsa.pub >> ~git/.ssh/authorized_keys \ - && rm -rf /tmp/root_rsa.pub - -EXPOSE 22 80 81 -CMD [ "start-servers" ] diff --git a/tests/docker/README.md b/tests/docker/README.md deleted file mode 100644 index eb7ef2342..000000000 --- a/tests/docker/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Deployer E2E testing environment - -This directory contains an end-to-end testing environment for Deployer. - -All commands mentioned in this readme, should be executed in the `docker` directory. - -## Requirements - -* Docker -* docker-compose - -## Running tests - -The E2E are started when running the `docker-compose up` command. -This will start the `server` container that has the Apache, OpenSSH & PHP 7.3 enabled. - -Once the `server` is up and running, the `deployer` container will be started and alongside it -the tests will be ran. - -## Adding new E2E tests - -The E2E test should be a part of the `e2e` test suite. -Each `e2e` test class should inherit from `AbstractE2ETest` class. - -Note: E2E tests will only run in an environment where env variable `E2E_ENV` has been set and has a truthy value. - -## Manually accessing the `deployer` container. - -The container can be accessed by running: - -``` -docker-compose run deployer sh -``` - -This command will spawn a `sh` shell inside the `deployer` container. - -## About containers - -### `deployer` container - -The `deployer` container contains: - -* git -* PHP 7.3 with XDebug enabled -* rsync -* SSH client - -It is possible to access the `server` container via ssh by running: - -``` -ssh deployer@server -``` - -`root`'s public key has been added to authorized keys for `deployer` user. - -#### Enabling XDebug - -To enable XDebug create a `docker-compose.override.yml` file with following content: - -```dockerfile -services: - deployer: - environment: - # See https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host - # See https://github.com/docker/for-linux/issues/264 - # The `remote_host` below may optionally be replaced with `remote_connect_back=1` - XDEBUG_CONFIG: >- - remote_enable=1 - remote_host=${XDEBUG_HOST:-host.docker.internal} - remote_autostart=1 - remote_port=9000 - idekey=PHPSTORM - # This should correspond to the server declared in PHPStorm `Preferences | Languages & Frameworks | PHP | Servers` - # Then PHPStorm will use the corresponding path mappings - PHP_IDE_CONFIG: serverName=deployer-e2e -``` - -Note: you may want to set the `XDEBUG_HOST` env variable to point to your IP address when running tests in Linux. - -### `server` container - -The `server` container contains: - -* Apache (with the `DocumentRoot` set to `/var/www/html/current`) -* git -* PHP 7.3 -* SSH server with -* sudo (user `deployer` can use `sudo` after providing a password: `deployer`) diff --git a/tests/docker/conf/10-coverage.ini b/tests/docker/conf/10-coverage.ini deleted file mode 100644 index 038ce7c9e..000000000 --- a/tests/docker/conf/10-coverage.ini +++ /dev/null @@ -1,2 +0,0 @@ -auto_prepend_file = /usr/local/etc/php/php-code-coverage/coverage-start-wrapper.php -auto_append_file = /usr/local/etc/php/php-code-coverage/coverage-start-wrapper.php \ No newline at end of file diff --git a/tests/docker/conf/healthcheck.conf b/tests/docker/conf/healthcheck.conf deleted file mode 100644 index f51410f86..000000000 --- a/tests/docker/conf/healthcheck.conf +++ /dev/null @@ -1,32 +0,0 @@ - - # The ServerName directive sets the request scheme, hostname and port that - # the server uses to identify itself. This is used when creating - # redirection URLs. In the context of virtual hosts, the ServerName - # specifies what hostname must appear in the request's Host: header to - # match this virtual host. For the default virtual host (this file) this - # value is not decisive as it is used as a last resort host regardless. - # However, you must set it for any further virtual host explicitly. - #ServerName www.example.com - - ServerAdmin webmaster@localhost - DocumentRoot /var/www/html - - # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, - # error, crit, alert, emerg. - # It is also possible to configure the loglevel for particular - # modules, e.g. - #LogLevel info ssl:warn - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined - - RewriteEngine on - RedirectMatch 204 /health_check - - # For most configuration files from conf-available/, which are - # enabled or disabled at a global level, it is possible to - # include a line for only one particular virtual host. For example the - # following line enables the CGI configuration for this host only - # after it has been globally disabled with "a2disconf". - #Include conf-available/serve-cgi-bin.conf - diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml deleted file mode 100644 index cd51b193a..000000000 --- a/tests/docker/docker-compose.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: '2.4' - -services: - deployer: - build: - context: "" - target: deployer - depends_on: - server: - condition: service_healthy - volumes: - - ./../../:/project - command: "sh /project/tests/e2e/coverage/start-e2e-test.sh" - networks: - - e2e - environment: - PHP_CCOV_START_FILE: '/project/tests/e2e/coverage/coverage-start.php' - PHP_CCOV_OUTPUT_FILE: '/project/tests/e2e/report/clover.xml' -# # See https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host -# # See https://github.com/docker/for-linux/issues/264 -# # The `remote_host` below may optionally be replaced with `remote_connect_back=1` -# XDEBUG_CONFIG: >- -# remote_enable=1 -# remote_host=${XDEBUG_RHOST:-host.docker.internal} -# remote_autostart=1 -# remote_port=9000 -# idekey=PHPSTORM -# # This should correspond to the server declared in PHPStorm `Preferences | Languages & Frameworks | PHP | Servers` -# # Then PHPStorm will use the corresponding path mappings -# PHP_IDE_CONFIG: serverName=deployer-e2e - - server: - build: - context: "" - target: server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:81/health_check"] - interval: 5s - timeout: 2s - retries: 3 - start_period: 2s - networks: - e2e: - aliases: - - server.test - -networks: - e2e: diff --git a/tests/docker/initial-site/public/index.html b/tests/docker/initial-site/public/index.html deleted file mode 100644 index 5016ba876..000000000 --- a/tests/docker/initial-site/public/index.html +++ /dev/null @@ -1,5 +0,0 @@ - - - Hello World! - - \ No newline at end of file diff --git a/tests/docker/scripts/install-composer.sh b/tests/docker/scripts/install-composer.sh deleted file mode 100644 index e2ac87df5..000000000 --- a/tests/docker/scripts/install-composer.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -EXPECTED_CHECKSUM="$(wget -q -O - https://composer.github.io/installer.sig)" -php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" - -if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ] -then - >&2 echo 'ERROR: Invalid installer checksum' - rm composer-setup.php - exit 1 -fi - -php composer-setup.php --quiet --install-dir=/tmp --filename=composer -RESULT=$? -rm composer-setup.php -chmod a+x /tmp/composer -exit $RESULT \ No newline at end of file diff --git a/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php b/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php deleted file mode 100644 index a93060aa3..000000000 --- a/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php +++ /dev/null @@ -1,5 +0,0 @@ -tester = new ConsoleApplicationTester(__DIR__ . '/../../bin/dep', __DIR__); - } -} diff --git a/tests/e2e/ConsoleApplicationTester.php b/tests/e2e/ConsoleApplicationTester.php deleted file mode 100644 index 3136b291b..000000000 --- a/tests/e2e/ConsoleApplicationTester.php +++ /dev/null @@ -1,147 +0,0 @@ -binaryPath ], $arguments); - - $outputArgs = []; - foreach ($arguments as $key => $value) { - if (!is_numeric($key)) { - $outputArgs[] = $key; - } - - $outputArgs[] = $value; - } - - return $outputArgs; - } - - private function prepareProcess(array $arguments): Process - { - $commandLine = $this->generateCommand($arguments); - - $process = new Process($commandLine); - $process->setTimeout($this->timeout); - - if (!empty($this->inputs)) { - $inputs = self::createInputsStream($this->inputs); - $process->setInput($inputs); - } - - if (!empty($this->cwd)) { - $process->setWorkingDirectory($this->cwd); - } - - return $process; - } - - public function __construct(string $binaryPath, string $cwd = '') - { - $this->binaryPath = $binaryPath; - $this->cwd = $cwd; - } - - public function __destruct() - { - if ($this->process && $this->process->isRunning()) { - $this->process->stop(0); - } - } - - /** - * @param int $timeout timout in seconds after which process will be stopped - * @return $this - */ - public function setTimeout(int $timeout): self - { - $this->timeout = $timeout; - return $this; - } - - public function setInputs(array $inputs): self - { - $this->inputs = $inputs; - return $this; - } - - public function run(array $arguments): self - { - if ($this->process && $this->process->isRunning()) { - throw new \RuntimeException('Previous process did not end yet'); - } - - $this->process = $this->prepareProcess($arguments); - $this->process->run(); - - return $this; - } - - public function getDisplay(bool $normalize = false): string - { - if ($this->process === null) { - throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); - } - - $display = $this->process->getOutput(); - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - public function getErrors(bool $normalize = false): string - { - if ($this->process === null) { - throw new \RuntimeException('Error output not initialized, did you execute the command before requesting the display?'); - } - - $display = $this->process->getErrorOutput(); - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - public function getStatusCode() - { - if ($this->process === null) { - throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the display?'); - } - - return $this->process->getExitCode(); - } -} diff --git a/tests/e2e/FunctionsE2ETest.php b/tests/e2e/FunctionsE2ETest.php deleted file mode 100644 index eec7fc4d5..000000000 --- a/tests/e2e/FunctionsE2ETest.php +++ /dev/null @@ -1,24 +0,0 @@ -tester->run([ - '-f' => self::RECIPE, - 'test:functions:run-with-placeholders', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('placeholder {{bar}} xyz%', $display); - } -} diff --git a/tests/e2e/LaravelBoilerplateE2ETest.php b/tests/e2e/LaravelBoilerplateE2ETest.php deleted file mode 100644 index 7110811c4..000000000 --- a/tests/e2e/LaravelBoilerplateE2ETest.php +++ /dev/null @@ -1,37 +0,0 @@ -tester->setTimeout(180) - ->run([ - '-f' => self::RECIPE, - 'deploy', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - $siteContent = file_get_contents('http://server.test'); - $expectedSiteContent = "Build v8."; - self::assertStringContainsString($expectedSiteContent, $siteContent); - } - - protected function tearDown(): void - { - parent::tearDown(); - - if ($this->tester) { - $this->tester->run([ - '-f' => self::RECIPE, - 'deploy:unlock', - 'all', - ]); - } - } -} diff --git a/tests/e2e/MiscE2ETest.php b/tests/e2e/MiscE2ETest.php deleted file mode 100644 index e800d5948..000000000 --- a/tests/e2e/MiscE2ETest.php +++ /dev/null @@ -1,45 +0,0 @@ -tester->setInputs(['deployer']); - - $this->tester->run([ - '-f' => self::RECIPE, - 'test:misc:sudo-write-user', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('Current user is: root', $display); - } - - /** - * @group e2e - */ - public function testSudoWithPasswordProvidedViaArgument(): void - { - $this->tester->run([ - '-f' => self::RECIPE, - 'test:misc:sudo-write-user', - '-o' => 'sudo_pass=deployer', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('Current user is: root', $display); - } -} diff --git a/tests/e2e/SymfonyBoilerplateE2ETest.php b/tests/e2e/SymfonyBoilerplateE2ETest.php deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/e2e/TimeoutsE2ETest.php b/tests/e2e/TimeoutsE2ETest.php deleted file mode 100644 index ce12d6a03..000000000 --- a/tests/e2e/TimeoutsE2ETest.php +++ /dev/null @@ -1,25 +0,0 @@ -tester->run([ - '-f' => self::RECIPE, - 'test:timeouts', - 'all', - '-v', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('+timeout', $display); - } -} diff --git a/tests/e2e/bootstrap.php b/tests/e2e/bootstrap.php deleted file mode 100644 index f95e2e680..000000000 --- a/tests/e2e/bootstrap.php +++ /dev/null @@ -1,14 +0,0 @@ -includeDirectory('/project'); -$filter->excludeDirectory('/project/vendor'); -$filter->excludeDirectory('/project/tests'); - -$outputCoverage = new CodeCoverage( - (new Selector)->forLineCoverage($filter), - $filter -); - -$coverageReports = glob("/tmp/ccov/*.php"); -foreach ($coverageReports as $reportPath) { - /** @var CodeCoverage $partialCoverage */ - $partialCoverage = include $reportPath; - if (!$partialCoverage) { - throw new \Exception("Failed to load coverage report from file '{$reportPath}'"); - } - $outputCoverage->merge($partialCoverage); -} - -$cloverReport = new Clover(); -$cloverReport->process($outputCoverage, $outputFile); - -echo "Clover report file written to {$outputFile}\n"; - diff --git a/tests/e2e/coverage/coverage-start.php b/tests/e2e/coverage/coverage-start.php deleted file mode 100644 index 538669856..000000000 --- a/tests/e2e/coverage/coverage-start.php +++ /dev/null @@ -1,60 +0,0 @@ -includeDirectory('/project'); -$filter->excludeDirectory('/project/vendor'); -$filter->excludeDirectory('/project/tests'); -$report = new PHPReport(); - -$coverage = new CodeCoverage( - (new Selector)->forLineCoverage($filter), - $filter -); - -$outputDir = '/tmp/ccov'; -if (!is_dir($outputDir)) { - mkdir($outputDir); -} - -// use anonymous class as we don't really want to pollute class space with this stuff -(new class ($coverage, $report, $outputDir) { - /** @var CodeCoverage */ - private $coverage; - /** @var PHPReport */ - private $report; - /** @var string */ - private $outputDir; - /** @var string|null */ - private $coverageName; - - public function __construct(CodeCoverage $coverage, PHPReport $report, string $outputDir) { - $this->coverage = $coverage; - $this->report = $report; - $this->outputDir = $outputDir; - } - - public function start():void { - register_shutdown_function([$this, 'stop']); - - $coverageName = uniqid('coverage_'); - $this->coverageName = $coverageName; - $this->coverage->start($this->coverageName); - } - - public function stop():void { - $this->coverage->stop(); - - $outputFile = $this->outputDir . "/{$this->coverageName}.php"; - $this->report->process($this->coverage, $outputFile); - } -})->start(); - - - diff --git a/tests/e2e/coverage/start-e2e-test.sh b/tests/e2e/coverage/start-e2e-test.sh deleted file mode 100644 index ba82ffe23..000000000 --- a/tests/e2e/coverage/start-e2e-test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -ROOTDIR=$(readlink -f "$(dirname "$0")/../../..") - -# Run E2E tests and grab exit code of the process -php "$ROOTDIR/vendor/bin/pest" --config "$ROOTDIR/tests/e2e/phpunit-e2e.xml" -E2E_EXIT_CODE=$? - -# Generate coverage report file -php "$ROOTDIR/tests/e2e/coverage/coverage-report.php" - -return $E2E_EXIT_CODE \ No newline at end of file diff --git a/tests/e2e/phpunit-e2e.xml b/tests/e2e/phpunit-e2e.xml deleted file mode 100644 index aac4227af..000000000 --- a/tests/e2e/phpunit-e2e.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - . - - - diff --git a/tests/e2e/recipe/functions.php b/tests/e2e/recipe/functions.php deleted file mode 100644 index e3eaa3c43..000000000 --- a/tests/e2e/recipe/functions.php +++ /dev/null @@ -1,14 +0,0 @@ - '{{bar}}', 'baz' => 'xyz%']; - - $output = run($cmd, ['env' => $env]); - output()->writeln($output); // we use this to skip \Deployer\parse() being called in normal \Deployer\writeln() -}); diff --git a/tests/e2e/recipe/hosts.php b/tests/e2e/recipe/hosts.php deleted file mode 100644 index 89906faf5..000000000 --- a/tests/e2e/recipe/hosts.php +++ /dev/null @@ -1,13 +0,0 @@ -setDeployPath('/var/www/html') - ->set('bin/php', '/usr/local/bin/php') - ->setTag('e2e') - ->setRemoteUser('deployer') - ->set('timeout', 600) - ->setSshArguments([ - '-o UserKnownHostsFile=/dev/null', - '-o StrictHostKeyChecking=no', - ]); diff --git a/tests/e2e/recipe/laravel-boilerplate.php b/tests/e2e/recipe/laravel-boilerplate.php deleted file mode 100644 index 8a31898b8..000000000 --- a/tests/e2e/recipe/laravel-boilerplate.php +++ /dev/null @@ -1,29 +0,0 @@ -disable(); - -before('deploy:shared', 'laravel:setup-env'); -before('artisan:storage:link', 'artisan:key:generate'); diff --git a/tests/e2e/recipe/misc.php b/tests/e2e/recipe/misc.php deleted file mode 100644 index c3d2a4cb8..000000000 --- a/tests/e2e/recipe/misc.php +++ /dev/null @@ -1,12 +0,0 @@ - 1 ] ); - } catch (TimeoutException $e) { - $ps = run("if ps aux | grep '[p]hp -r while(true){}'; then echo still running; else echo +timeout; fi"); - if ($ps != '+timeout') { - throw new \Exception('Process still running.'); - } - } -}); - diff --git a/tests/fixtures/project/uploaded.html b/tests/fixtures/project/uploaded.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/fixtures/repository/.env b/tests/fixtures/repository/.env deleted file mode 100644 index ead49fb51..000000000 --- a/tests/fixtures/repository/.env +++ /dev/null @@ -1 +0,0 @@ -ENV=prod diff --git a/tests/fixtures/repository/README.md b/tests/fixtures/repository/README.md deleted file mode 100644 index 32d99c612..000000000 --- a/tests/fixtures/repository/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Example repository - - diff --git a/tests/fixtures/repository/composer.json b/tests/fixtures/repository/composer.json deleted file mode 100644 index 4d13e3c6e..000000000 --- a/tests/fixtures/repository/composer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "ಠ_ಠ", - "require": { - "php": "^7.3" - } -} diff --git a/tests/fixtures/repository/uploads/poem.txt b/tests/fixtures/repository/uploads/poem.txt deleted file mode 100644 index e5c64ea00..000000000 --- a/tests/fixtures/repository/uploads/poem.txt +++ /dev/null @@ -1,12 +0,0 @@ -Night, street, lamp, drugstore, -A dull and meaningless light. -Go on and live another quarter century - -Nothing will change. There's no way out. - -You'll die, then start from the beginning, -It will repeat, just like before: -Night, icy ripples on a canal, -Drugstore, street, lamp. - - A. A. Blok - 10 October 1912 diff --git a/tests/joy/HostDefaultConfigTest.php b/tests/joy/HostDefaultConfigTest.php deleted file mode 100644 index 3cfdacc33..000000000 --- a/tests/joy/HostDefaultConfigTest.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -class HostDefaultConfigTest extends JoyTest -{ - protected function recipe(): string - { - return <<<'PHP' -getPort(); - writeln(empty($port) ? 'empty' : "port:$port"); -}); -PHP; - } - - public function testOnFunc() - { - $this->dep('test'); - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('empty', $display); - } -} diff --git a/tests/joy/JoyTest.php b/tests/joy/JoyTest.php deleted file mode 100644 index 5d95df15c..000000000 --- a/tests/joy/JoyTest.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -use Deployer\Deployer; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Tester\ApplicationTester; -use const __TEMP_DIR__; - -abstract class JoyTest extends TestCase -{ - /** - * @var ApplicationTester - */ - protected $tester; - - /** - * @var Deployer - */ - protected $deployer; - - public static function setUpBeforeClass(): void - { - self::cleanUp(); - mkdir(__TEMP_DIR__); - } - - public static function tearDownAfterClass(): void - { - self::cleanUp(); - } - - protected static function cleanUp() - { - if (is_dir(__TEMP_DIR__)) { - exec('rm -rf ' . __TEMP_DIR__); - } - } - - protected function init(string $recipe) - { - $console = new Application(); - $console->setAutoExit(false); - $this->tester = new ApplicationTester($console); - - $this->deployer = new Deployer($console); - $this->deployer->importer->import($recipe); - $this->deployer->init(); - $this->deployer->config->set('deploy_path', __TEMP_DIR__ . '/{{hostname}}'); - } - - protected function dep(string $task, array $args = []): int - { - $recipe = __TEMP_DIR__ . '/' . get_called_class() . '.php'; - file_put_contents($recipe, $this->recipe()); - $this->init($recipe); - return $this->tester->run(array_merge([ - $task, - 'selector' => 'all', - '--file' => $recipe, - '--limit' => 1 - ], $args), [ - 'verbosity' => OutputInterface::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - } - - abstract protected function recipe(): string; -} diff --git a/tests/joy/OnFuncTest.php b/tests/joy/OnFuncTest.php deleted file mode 100644 index f2d6bb1f7..000000000 --- a/tests/joy/OnFuncTest.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -class OnFuncTest extends JoyTest -{ - protected function recipe(): string - { - return <<<'PHP' -once(); -PHP; - } - - public function testOnFunc() - { - putenv('DEPLOYER_LOCAL_WORKER=false'); - $this->dep('test'); - putenv('DEPLOYER_LOCAL_WORKER=true'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] foo = prod', $display); - self::assertStringContainsString('[beta] foo = beta', $display); - } -} diff --git a/tests/legacy/AbstractTest.php b/tests/legacy/AbstractTest.php deleted file mode 100644 index bc8a08590..000000000 --- a/tests/legacy/AbstractTest.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Output\Output; -use Symfony\Component\Console\Tester\ApplicationTester; - -/** - * @deprecated Use JoyTest instead. - */ -abstract class AbstractTest extends TestCase -{ - /** - * @var ApplicationTester - */ - protected $tester; - - /** - * @var Deployer - */ - protected $deployer; - - public static function setUpBeforeClass(): void - { - self::cleanUp(); - mkdir(__TEMP_DIR__); - } - - public static function tearDownAfterClass(): void - { - self::cleanUp(); - } - - protected static function cleanUp() - { - if (is_dir(__TEMP_DIR__)) { - exec('rm -rf ' . __TEMP_DIR__); - } - } - - protected function init(string $recipe) - { - $console = new Application(); - $console->setAutoExit(false); - $this->tester = new ApplicationTester($console); - - $this->deployer = new Deployer($console); - $this->deployer->importer->import($recipe); - $this->deployer->init(); - $this->deployer->config->set('deploy_path', __TEMP_DIR__ . '/{{hostname}}'); - } - - protected function dep(string $recipe, string $task) - { - $this->init($recipe); - $this->tester->run([ - $task, - 'selector' => 'all', - '-f' => $recipe, - '-l' => 1 - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - } -} diff --git a/tests/legacy/CurrentPathTest.php b/tests/legacy/CurrentPathTest.php deleted file mode 100644 index 96b7c49e4..000000000 --- a/tests/legacy/CurrentPathTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class CurrentPathTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.php'; - - public function testDeployWithDifferentCurrentPath() - { - $currentPath = __TEMP_DIR__ . '/prod/public_html'; - - $this->init(self::RECIPE); - $this->tester->run([ - 'deploy', - 'selector' => 'prod', - '-f' => self::RECIPE, - '-o' => ['current_path=' . $currentPath], - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertFileExists($currentPath . '/README.md'); - self::assertFileExists($currentPath . '/config/test.yaml'); - } -} diff --git a/tests/legacy/DeployTest.php b/tests/legacy/DeployTest.php deleted file mode 100644 index e62079d22..000000000 --- a/tests/legacy/DeployTest.php +++ /dev/null @@ -1,144 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class DeployTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.php'; - - public function testDeploy() - { - $display = $this->dep(self::RECIPE, 'deploy'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertDirectoryExists($deployPath . '/.dep'); - self::assertDirectoryExists($deployPath . '/releases'); - self::assertDirectoryExists($deployPath . '/shared'); - self::assertDirectoryExists($deployPath . '/current'); - self::assertDirectoryExists($deployPath . '/current/'); - self::assertFileExists($deployPath . '/current/README.md'); - self::assertDirectoryExists($deployPath . '/current/storage/logs'); - self::assertDirectoryExists($deployPath . '/current/storage/db'); - self::assertDirectoryExists($deployPath . '/shared/storage/logs'); - self::assertDirectoryExists($deployPath . '/shared/storage/db'); - self::assertFileExists($deployPath . '/shared/uploads/poem.txt'); - self::assertFileExists($deployPath . '/shared/.env'); - self::assertFileExists($deployPath . '/current/config/test.yaml'); - self::assertFileExists($deployPath . '/shared/config/test.yaml'); - self::assertEquals(1, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - public function testDeploySelectHosts() - { - $this->init(self::RECIPE); - $this->tester->setInputs(['0,1']); - $this->tester->run(['deploy', '-f' => self::RECIPE, '-l' => 1], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - 'interactive' => true, - ]); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - public function testKeepReleases() - { - for ($i = 0; $i < 3; $i++) { - $this->dep(self::RECIPE, 'deploy'); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - for ($i = 0; $i < 6; $i++) { - $this->dep(self::RECIPE, 'deploy:fail'); - self::assertEquals(1, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - for ($i = 0; $i < 3; $i++) { - $this->dep(self::RECIPE, 'deploy'); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals(3, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - /** - * @depends testKeepReleases - */ - public function testRollback() - { - $this->dep(self::RECIPE, 'rollback'); - - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals(3, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - public function testFail() - { - $this->dep(self::RECIPE, 'deploy:fail'); - - $display = $this->tester->getDisplay(); - self::assertEquals(1, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals('ok', exec("cd $deployPath && [ -f .dep/deploy.lock ] || echo ok"), 'fail hooks deploy:unlock did not run'); - } - } - - /** - * @depends testFail - */ - public function testCleanup() - { - $this->dep(self::RECIPE, 'deploy:cleanup'); - - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertFileDoesNotExist($deployPath . '/release'); - } - } - - public function testIsUnlockedExitsWithOneWhenDeployIsLocked() - { - $this->dep(self::RECIPE, 'deploy:lock'); - $this->dep(self::RECIPE, 'deploy:is_locked'); - $display = $this->tester->getDisplay(); - - self::assertStringContainsString('Deploy is locked by ', $display); - self::assertSame(1, $this->tester->getStatusCode()); - } - - public function testIsUnlockedExitsWithZeroWhenDeployIsNotLocked() - { - $this->dep(self::RECIPE, 'deploy:unlock'); - $this->dep(self::RECIPE, 'deploy:is_locked'); - $display = $this->tester->getDisplay(); - - self::assertStringContainsString('Deploy is unlocked.', $display); - self::assertSame(0, $this->tester->getStatusCode()); - } -} diff --git a/tests/legacy/EnvTest.php b/tests/legacy/EnvTest.php deleted file mode 100644 index 27b4c0552..000000000 --- a/tests/legacy/EnvTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class EnvTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/env.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('global=global', $display); - self::assertStringContainsString('local=local', $display); - self::assertStringContainsString('dotenv=Hello, world!', $display); - self::assertStringContainsString('dotenv=local', $display); - } -} diff --git a/tests/legacy/NamedArgumentsTest.php b/tests/legacy/NamedArgumentsTest.php deleted file mode 100644 index 7b19a0d96..000000000 --- a/tests/legacy/NamedArgumentsTest.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -// TODO: Wait until Deployer 7.1 with only php8 supports. -//class NamedArgumentsTest extends AbstractTest -//{ -// const RECIPE = __DIR__ . '/recipe/named_arguments.php'; -// -// public function testRunWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, world!', $display); -// } -// -// public function testRunWithOptions() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['options', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, Anton!', $display); -// } -// -// public function testRunWithOptionsWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['options_with_named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, override!', $display); -// } -// -// public function testRunLocallyWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['run_locally_named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, world!', $display); -// } -//} diff --git a/tests/legacy/OncePerNodeTest.php b/tests/legacy/OncePerNodeTest.php deleted file mode 100644 index b42c88229..000000000 --- a/tests/legacy/OncePerNodeTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class OncePerNodeTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/once_per_node.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test_once_per_node'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('alias: group_a_1 hostname: localhost', $display); - self::assertStringNotContainsString('alias: group_a_2 hostname: localhost', $display); - self::assertStringContainsString('alias: group_b_1 hostname: group_b_1', $display); - self::assertStringNotContainsString('alias: group_b_2 hostname: group_b_2', $display); - } -} diff --git a/tests/legacy/OnceTest.php b/tests/legacy/OnceTest.php deleted file mode 100644 index 540a21a36..000000000 --- a/tests/legacy/OnceTest.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class OnceTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/once.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test_once'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, 'SHOULD BE ONCE') == 1, $display); - } -} diff --git a/tests/legacy/ParallelTest.php b/tests/legacy/ParallelTest.php deleted file mode 100644 index 4f84f66c5..000000000 --- a/tests/legacy/ParallelTest.php +++ /dev/null @@ -1,114 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class ParallelTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/parallel.php'; - - public static function setUpBeforeClass(): void - { - parent::setUpBeforeClass(); - putenv('DEPLOYER_LOCAL_WORKER=false'); // Allow to start workers. Don't forget to disable it later. - } - - public static function tearDownAfterClass(): void - { - putenv('DEPLOYER_LOCAL_WORKER=true'); - parent::tearDownAfterClass(); - } - - public function testWorker() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'echo', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - public function testServer() - { - $this->init(self::RECIPE); - $this->tester->setInputs(['prod', 'Black bear']); - $this->tester->run([ - 'ask', - '-f' => self::RECIPE, - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - 'interactive' => true, - ]); - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] Question: What kind of bear is best?', $display); - self::assertStringContainsString('[prod] Black bear', $display); - } - - public function testOption() - { - $this->init(self::RECIPE); - $this->tester->run( - [ - 'echo', - 'selector' => 'all', - '-o' => ['greet=Hello'], - '-f' => self::RECIPE, - //'-l' => 1, - ], - [ - 'verbosity' => Output::VERBOSITY_DEBUG, - 'interactive' => false, - ] - ); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] Hello, prod!', $display); - self::assertStringContainsString('[beta] Hello, beta!', $display); - } - - public function testCachedHostConfig() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'cache_config_test', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, 'worker on prod') == 1, $display); - self::assertTrue(substr_count($display, 'worker on beta') == 1, $display); - } - - public function testHostConfigFromCallback() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'host_config_from_callback', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, '[prod] config value is from global') == 1, $display); - self::assertTrue(substr_count($display, '[beta] config value is from callback') == 1, $display); - } -} diff --git a/tests/legacy/SelectTest.php b/tests/legacy/SelectTest.php deleted file mode 100644 index ccb6b43b0..000000000 --- a/tests/legacy/SelectTest.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class SelectTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/select.php'; - - public function testSelect() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'test', - '-f' => self::RECIPE, - 'selector' => 'prod' - ], [ - 'verbosity' => Output::VERBOSITY_DEBUG, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringNotContainsString('executing on prod', $display); - self::assertStringContainsString('executing on beta', $display); - self::assertStringContainsString('executing on dev', $display); - } -} diff --git a/tests/legacy/UpdateCodeTest.php b/tests/legacy/UpdateCodeTest.php deleted file mode 100644 index cd2018d5b..000000000 --- a/tests/legacy/UpdateCodeTest.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class UpdateCodeTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/update_code.php'; - - public function testDeployWithDifferentUpdateCodeTask() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'deploy', - 'selector' => 'prod', - '-f' => self::RECIPE, - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - ]); - - $display = $this->tester->getDisplay(); - $deployPath = $this->deployer->hosts->get('prod')->getDeployPath(); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertFileExists($deployPath . '/current/uploaded.html'); - } -} diff --git a/tests/legacy/YamlTest.php b/tests/legacy/YamlTest.php deleted file mode 100644 index f4854d079..000000000 --- a/tests/legacy/YamlTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class YamlTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.yaml'; - - public function testDeploy() - { - $this->init(self::RECIPE); - $this->deployer->config->set('repository', __REPOSITORY__); - $this->tester->run([ - 'deploy', - 'selector' => 'all', - '-f' => self::RECIPE - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertDirectoryExists($deployPath . '/.dep'); - self::assertDirectoryExists($deployPath . '/releases'); - self::assertDirectoryExists($deployPath . '/shared'); - self::assertDirectoryExists($deployPath . '/current'); - self::assertDirectoryExists($deployPath . '/current/'); - self::assertFileExists($deployPath . '/current/README.md'); - self::assertDirectoryExists($deployPath . '/current/storage/logs'); - self::assertDirectoryExists($deployPath . '/current/storage/db'); - self::assertDirectoryExists($deployPath . '/shared/storage/logs'); - self::assertDirectoryExists($deployPath . '/shared/storage/db'); - self::assertFileExists($deployPath . '/shared/uploads/poem.txt'); - self::assertFileExists($deployPath . '/shared/.env'); - self::assertFileExists($deployPath . '/current/config/test.yaml'); - self::assertFileExists($deployPath . '/shared/config/test.yaml'); - self::assertEquals(1, intval(`cd $deployPath && ls -1 releases | wc -l`)); - } - } -} diff --git a/tests/legacy/recipe/deploy.php b/tests/legacy/recipe/deploy.php deleted file mode 100644 index 23d4907ae..000000000 --- a/tests/legacy/recipe/deploy.php +++ /dev/null @@ -1,47 +0,0 @@ -&1'); -}); - -task('deploy:fail', [ - 'deploy:prepare', - 'fail', - 'deploy:publish' -]); - -task('fail', function () { - run('false'); -}); - -fail('deploy:fail', 'deploy:unlock'); diff --git a/tests/legacy/recipe/deploy.yaml b/tests/legacy/recipe/deploy.yaml deleted file mode 100644 index cddacf5de..000000000 --- a/tests/legacy/recipe/deploy.yaml +++ /dev/null @@ -1,27 +0,0 @@ -import: recipe/common.php - -config: - application: deployer - shared_dirs: - - uploads - - storage/logs/ - - storage/db - shared_files: - - .env - - config/test.yaml - keep_releases: 3 - http_user: false - -hosts: - prod: - local: true - -tasks: - deploy: - - deploy:prepare - - deploy:vendors - - deploy:publish - - deploy:vendors: - - cd: '{{release_path}}' - - run: echo {{bin/composer}} {{composer_options}} 2>&1 diff --git a/tests/legacy/recipe/env.php b/tests/legacy/recipe/env.php deleted file mode 100644 index 09da6f9c7..000000000 --- a/tests/legacy/recipe/env.php +++ /dev/null @@ -1,22 +0,0 @@ - 'global', -]); - -task('test', function () { - info('global=' . run('echo $VAR')); - info('local=' . run('echo $VAR', ['env' => ['VAR' => 'local']])); - info('dotenv=' . run('echo $KEY')); - info('dotenv=' . run('echo $KEY', ['env' => ['KEY' => 'local']])); -}); - -before('test', function () { - run('mkdir -p {{deploy_path}}'); - run('echo KEY="\'Hello, world!\'" > {{deploy_path}}/.env'); - set('dotenv', '{{deploy_path}}/.env'); -}); diff --git a/tests/legacy/recipe/named_arguments.php b/tests/legacy/recipe/named_arguments.php deleted file mode 100644 index 204412185..000000000 --- a/tests/legacy/recipe/named_arguments.php +++ /dev/null @@ -1,22 +0,0 @@ - 'world']); -}); - -task('options', function () { - run('echo "Hello, $name!"', ['env' => ['name' => 'Anton']]); -}); - -task('options_with_named_arguments', function () { - // The `options:` arg has higher priority than named arguments. - run('echo "Hello, $name!"', ['env' => ['name' => 'override']], env: ['name' => 'world']); -}); - -task('run_locally_named_arguments', function () { - runLocally('echo "Hello, $name!"', env: ['name' => 'world']); -}); diff --git a/tests/legacy/recipe/once.php b/tests/legacy/recipe/once.php deleted file mode 100644 index 84f8bbe24..000000000 --- a/tests/legacy/recipe/once.php +++ /dev/null @@ -1,10 +0,0 @@ -once(); diff --git a/tests/legacy/recipe/once_per_node.php b/tests/legacy/recipe/once_per_node.php deleted file mode 100644 index d41c66e19..000000000 --- a/tests/legacy/recipe/once_per_node.php +++ /dev/null @@ -1,16 +0,0 @@ -setHostname('localhost'); -localhost('group_a_2') - ->setHostname('localhost'); -localhost('group_b_1') - ->setLabels(['node' => 'anna']); -localhost('group_b_2') - ->setLabels(['node' => 'anna']); - -task('test_once_per_node', function () { - writeln('alias: {{alias}} hostname: {{hostname}}'); -})->oncePerNode(); diff --git a/tests/legacy/recipe/parallel.php b/tests/legacy/recipe/parallel.php deleted file mode 100644 index f95c125e8..000000000 --- a/tests/legacy/recipe/parallel.php +++ /dev/null @@ -1,49 +0,0 @@ -set('host_level_callback_config', function () { - return 'from callback'; - }); - -// testServer: - -task('ask', function () { - $answer = ask('Question: What kind of bear is best?'); - writeln($answer); -}); - -// testWorker, testOption: - -set('greet', '_'); - -task('echo', function () { - $alias = currentHost()->getAlias(); - run("echo {{greet}}, $alias!"); -}); - -// testCachedHostConfig: - -set('upper_host', function () { - writeln('running ' . (Deployer::isWorker() ? 'worker' : 'master') . ' on ' . currentHost()->getAlias()); - return strtoupper(currentHost()->getAlias()); -}); - -task('cache_config_test', function () { - writeln('echo 1: {{upper_host}}'); -}); - -after('cache_config_test', function () { - writeln('echo 2: {{upper_host}}'); -}); - -// testHostConfigFromCallback: - -set('host_level_callback_config', 'from global'); - -task('host_config_from_callback', function () { - writeln('config value is {{host_level_callback_config}}'); -}); - diff --git a/tests/legacy/recipe/select.php b/tests/legacy/recipe/select.php deleted file mode 100644 index 8951edbfe..000000000 --- a/tests/legacy/recipe/select.php +++ /dev/null @@ -1,13 +0,0 @@ -setLabels(['env' => 'prod']); -localhost('beta')->setLabels(['env' => 'dev']); -localhost('dev')->setLabels(['env' => 'dev']); - -task('test', function () { - on(select('env=dev'), function () { - info('executing on {{alias}}'); - }); -}); diff --git a/tests/legacy/recipe/update_code.php b/tests/legacy/recipe/update_code.php deleted file mode 100644 index 637f1e83c..000000000 --- a/tests/legacy/recipe/update_code.php +++ /dev/null @@ -1,9 +0,0 @@ -\" between 100|125|200|100000 and 0 is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Else branch is unreachable because previous condition is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^If condition is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^If condition is always false\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Comparison operation \"\\>\" between 0 and 0 is always false\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Unsafe usage of new static\\(\\)\\.$#" - count: 2 - path: ../src/Component/PharUpdate/Exception/Exception.php - - - - message: "#^Unsafe usage of new static\\(\\)\\.$#" - count: 1 - path: ../src/Component/PharUpdate/Manifest.php - - - - message: "#^If condition is always true\\.$#" - count: 1 - path: ../src/Host/Host.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: ../src/Importer/Importer.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: ../src/functions.php - diff --git a/tests/src/Collection/CollectionTest.php b/tests/src/Collection/CollectionTest.php deleted file mode 100644 index 7d7da392b..000000000 --- a/tests/src/Collection/CollectionTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Collection; - -use Deployer\Host\HostCollection; -use Deployer\Task\TaskCollection; -use PHPUnit\Framework\TestCase; - -class CollectionTest extends TestCase -{ - public static function collections() - { - return [ - [new Collection()], - [new TaskCollection()], - [new HostCollection()], - ]; - } - - /** - * @dataProvider collections - */ - public function testCollection($collection) - { - $this->assertInstanceOf(Collection::class, $collection); - - $object = new \stdClass(); - $collection->set('object', $object); - - $this->assertTrue($collection->has('object')); - $this->assertEquals($object, $collection->get('object')); - - $this->assertEquals(['object' => $object], $collection->select(function ($value, $key) use ($object) { - return $value === $object && $key === 'object'; - })); - } - - /** - * @dataProvider collections - * @depends testCollection - */ - public function testException($collection) - { - $this->expectException(\InvalidArgumentException::class); - $collection->get('unexpected'); - } -} diff --git a/tests/src/Command/BlackjackCommandTest.php b/tests/src/Command/BlackjackCommandTest.php deleted file mode 100644 index 6faa6331a..000000000 --- a/tests/src/Command/BlackjackCommandTest.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Component\Pimple; - -use Deployer\Component\Pimple\Exception\FrozenServiceException; -use Deployer\Component\Pimple\Exception\InvalidServiceIdentifierException; -use Deployer\Component\Pimple\Exception\UnknownIdentifierException; -use InvalidArgumentException; -use PHPUnit\Framework\TestCase; -use ReflectionProperty; -use RuntimeException; -use function extension_loaded; - -class PimpleTest extends TestCase -{ - public function testWithString() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - - $this->assertEquals('value', $pimple['param']); - } - - public function testWithClosure() - { - $pimple = new Container(); - $pimple['service'] = function () { - return new Service(); - }; - - $this->assertInstanceOf(Service::class, $pimple['service']); - } - - public function testServicesShouldBeDifferent() - { - $pimple = new Container(); - $pimple['service'] = $pimple->factory(function () { - return new Service(); - }); - - $serviceOne = $pimple['service']; - $this->assertInstanceOf(Service::class, $serviceOne); - - $serviceTwo = $pimple['service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - - $this->assertNotSame($serviceOne, $serviceTwo); - } - - public function testShouldPassContainerAsParameter() - { - $pimple = new Container(); - $pimple['service'] = function () { - return new Service(); - }; - $pimple['container'] = function ($container) { - return $container; - }; - - $this->assertNotSame($pimple, $pimple['service']); - $this->assertSame($pimple, $pimple['container']); - } - - public function testIsset() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - $pimple['service'] = function () { - return new Service(); - }; - - $pimple['null'] = null; - - $this->assertTrue(isset($pimple['param'])); - $this->assertTrue(isset($pimple['service'])); - $this->assertTrue(isset($pimple['null'])); - $this->assertFalse(isset($pimple['non_existent'])); - } - - public function testConstructorInjection() - { - $params = ['param' => 'value']; - $pimple = new Container($params); - - $this->assertSame($params['param'], $pimple['param']); - } - - public function testOffsetGetValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - echo $pimple['foo']; - } - - /** - * @group legacy - */ - public function testLegacyOffsetGetValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - echo $pimple['foo']; - } - - public function testOffsetGetHonorsNullValues() - { - $pimple = new Container(); - $pimple['foo'] = null; - $this->assertNull($pimple['foo']); - } - - public function testUnset() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - $pimple['service'] = function () { - return new Service(); - }; - - unset($pimple['param'], $pimple['service']); - $this->assertFalse(isset($pimple['param'])); - $this->assertFalse(isset($pimple['service'])); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testShare($service) - { - $pimple = new Container(); - $pimple['shared_service'] = $service; - - $serviceOne = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - - $serviceTwo = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - - $this->assertSame($serviceOne, $serviceTwo); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testProtect($service) - { - $pimple = new Container(); - $pimple['protected'] = $pimple->protect($service); - - $this->assertSame($service, $pimple['protected']); - } - - public function testGlobalFunctionNameAsParameterValue() - { - $pimple = new Container(); - $pimple['global_function'] = 'strlen'; - $this->assertSame('strlen', $pimple['global_function']); - } - - public function testRaw() - { - $pimple = new Container(); - $pimple['service'] = $definition = $pimple->factory(function () { - return 'foo'; - }); - $this->assertSame($definition, $pimple->raw('service')); - } - - public function testRawHonorsNullValues() - { - $pimple = new Container(); - $pimple['foo'] = null; - $this->assertNull($pimple->raw('foo')); - } - - public function testRawValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->raw('foo'); - } - - /** - * @group legacy - */ - public function testLegacyRawValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->raw('foo'); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testExtend($service) - { - $pimple = new Container(); - $pimple['shared_service'] = function () { - return new Service(); - }; - $pimple['factory_service'] = $pimple->factory(function () { - return new Service(); - }); - - $pimple->extend('shared_service', $service); - $serviceOne = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - $serviceTwo = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - $this->assertSame($serviceOne, $serviceTwo); - $this->assertSame($serviceOne->value, $serviceTwo->value); - - $pimple->extend('factory_service', $service); - $serviceOne = $pimple['factory_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - $serviceTwo = $pimple['factory_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - $this->assertNotSame($serviceOne, $serviceTwo); - $this->assertNotSame($serviceOne->value, $serviceTwo->value); - } - - public function testExtendDoesNotLeakWithFactories() - { - if (extension_loaded('pimple')) { - $this->markTestSkipped('Pimple extension does not support this test'); - } - $pimple = new Container(); - - $pimple['foo'] = $pimple->factory(function () { - return; - }); - $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) { - return; - }); - unset($pimple['foo']); - - $p = new ReflectionProperty($pimple, 'values'); - $p->setAccessible(true); - $this->assertEmpty($p->getValue($pimple)); - - $p = new ReflectionProperty($pimple, 'factories'); - $p->setAccessible(true); - $this->assertCount(0, $p->getValue($pimple)); - } - - public function testExtendValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - */ - public function testLegacyExtendValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->extend('foo', function () { - }); - } - - public function testKeys() - { - $pimple = new Container(); - $pimple['foo'] = 123; - $pimple['bar'] = 123; - - $this->assertEquals(['foo', 'bar'], $pimple->keys()); - } - - /** @test */ - public function settingAnInvokableObjectShouldTreatItAsFactory() - { - $pimple = new Container(); - $pimple['invokable'] = new Invokable(); - - $this->assertInstanceOf(Service::class, $pimple['invokable']); - } - - /** @test */ - public function settingNonInvokableObjectShouldTreatItAsParameter() - { - $pimple = new Container(); - $pimple['non_invokable'] = new NonInvokable(); - - $this->assertInstanceOf(NonInvokable::class, $pimple['non_invokable']); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testFactoryFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->factory($service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyFactoryFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->factory($service); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testProtectFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->protect($service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyProtectFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->protect($service); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testExtendFailsForKeysNotContainingServiceDefinitions($service) - { - $this->expectException(InvalidServiceIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.'); - - $pimple = new Container(); - $pimple['foo'] = $service; - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service) - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.'); - - $pimple = new Container(); - $pimple['foo'] = $service; - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - * @expectedDeprecation How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "foo" should be protected? - */ - public function testExtendingProtectedClosureDeprecation() - { - $pimple = new Container(); - $pimple['foo'] = $pimple->protect(function () { - return 'bar'; - }); - - $pimple->extend('foo', function ($value) { - return $value . '-baz'; - }); - - $this->assertSame('bar-baz', $pimple['foo']); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testExtendFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple['foo'] = function () { - }; - $pimple->extend('foo', $service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyExtendFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple['foo'] = function () { - }; - $pimple->extend('foo', $service); - } - - public function testExtendFailsIfFrozenServiceIsNonInvokable() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return new NonInvokable(); - }; - $foo = $pimple['foo']; - - $pimple->extend('foo', function () { - }); - } - - public function testExtendFailsIfFrozenServiceIsInvokable() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return new Invokable(); - }; - $foo = $pimple['foo']; - - $pimple->extend('foo', function () { - }); - } - - /** - * Provider for invalid service definitions. - */ - public function badServiceDefinitionProvider() - { - return [ - [123], - [new NonInvokable()], - ]; - } - - /** - * Provider for service definitions. - */ - public function serviceDefinitionProvider() - { - return [ - [function ($value) { - $service = new Service(); - $service->value = $value; - - return $service; - }], - [new Invokable()], - ]; - } - - public function testDefiningNewServiceAfterFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['bar'] = function () { - return 'bar'; - }; - $this->assertSame('bar', $pimple['bar']); - } - - public function testOverridingServiceAfterFreeze() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['foo'] = function () { - return 'bar'; - }; - } - - /** - * @group legacy - */ - public function testLegacyOverridingServiceAfterFreeze() - { - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['foo'] = function () { - return 'bar'; - }; - } - - public function testRemovingServiceAfterFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - unset($pimple['foo']); - $pimple['foo'] = function () { - return 'bar'; - }; - $this->assertSame('bar', $pimple['foo']); - } - - public function testExtendingService() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) { - return "$foo.bar"; - }); - $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) { - return "$foo.baz"; - }); - $this->assertSame('foo.bar.baz', $pimple['foo']); - } - - public function testExtendingServiceAfterOtherServiceFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $pimple['bar'] = function () { - return 'bar'; - }; - $foo = $pimple['foo']; - - $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) { - return "$bar.baz"; - }); - $this->assertSame('bar.baz', $pimple['bar']); - } -} - -class Invokable -{ - public function __invoke($value = null) - { - $service = new Service(); - $service->value = $value; - - return $service; - } -} - -class NonInvokable -{ - public function __call($a, $b) - { - } -} - -class Service -{ - public $value; -} diff --git a/tests/src/Component/Ssh/IOArgumentsTest.php b/tests/src/Component/Ssh/IOArgumentsTest.php deleted file mode 100644 index 4a722cde1..000000000 --- a/tests/src/Component/Ssh/IOArgumentsTest.php +++ /dev/null @@ -1,34 +0,0 @@ -set('foo', 'a'); - $config['bar'] = 'b'; - - self::assertEquals('a b', $config->parse('{{foo}} {{bar}}')); - } - - public function testUnset() - { - $config = new Configuration(); - $config->set('opt', true); - unset($config['opt']); - self::assertFalse(isset($config['opt'])); - } - - public function testGet() - { - $config = new Configuration(); - $config->set('opt', true); - $config->set('fn', function () { - return 'func'; - }); - - self::assertTrue(isset($config['opt'])); - self::assertEquals(true, $config['opt']); - self::assertEquals('func', $config['fn']); - } - - public function testGetDefault() - { - $config = new Configuration(); - $config->set('name', 'alpha'); - - self::assertEquals('/alpha', $config->get('path', '/{{name}}')); - } - - public function testGetException() - { - $this->expectException(ConfigurationException::class); - - $config = new Configuration(); - $config->set('name', 'alpha'); - - self::assertEquals('/alpha', $config->get('path')); - } - - public function testGetParent() - { - $parent = new Configuration(); - $config = new Configuration($parent); - - $parent->set('opt', 'value'); - self::assertEquals('value', $parent['opt']); - self::assertEquals('value', $config['opt']); - - $parent->set('opt', 'newValue'); - self::assertEquals('newValue', $parent['opt']); - self::assertEquals('value', $config['opt']); - - $config->set('opt', 'hostValue'); - self::assertEquals('newValue', $parent['opt']); - self::assertEquals('hostValue', $config['opt']); - self::assertEquals('okay', $config->get('miss', 'okay')); - } - - public function testGetParentParent() - { - $global = new Configuration(); - $parent = new Configuration($global); - $config = new Configuration($parent); - - $global->set('global', 'value from {{path}}'); - $parent->set('path', 'parent'); - - self::assertEquals('value from parent', $config->get('global')); - } - - public function testGetParentWhatDependsOnChild() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - $beta = new Configuration($parent); - - $parent->set('deploy_path', 'path/{{name}}'); - $alpha->set('name', 'alpha'); - $beta->set('name', 'beta'); - - self::assertEquals('path/alpha', $alpha->get('deploy_path')); - self::assertEquals('path/beta', $beta->get('deploy_path')); - } - - public function testGetFromCallback() - { - $config = new Configuration(); - $config->set('func', function () { - return 'param'; - }); - self::assertEquals('param', $config['func']); - } - - public function testAdd() - { - $config = new Configuration(); - $config->set('opt', ['foo', 'bar']); - $config->add('opt', ['baz']); - self::assertEquals(['foo', 'bar', 'baz'], $config['opt']); - } - - public function testAddEmpty() - { - $config = new Configuration(); - $config->add('opt', ['baz']); - self::assertEquals(['baz'], $config['opt']); - } - - public function testAddDefaultToNotArray() - { - $this->expectException(\RuntimeException::class); - $this->expectExceptionMessage('Config option "config" isn\'t array.'); - - $config = new Configuration(); - $config->set('config', 'option'); - $config->add('config', ['three']); - } - - public function testAddToParent() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('files', ['a', 'b']); - $alpha->add('files', ['c']); - - self::assertEquals(['a', 'b', 'c'], $alpha->get('files')); - } - - public function testAddToParentCallback() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('files', function () { - return ['a', 'b']; - }); - $alpha->add('files', ['c']); - - self::assertEquals(['a', 'b', 'c'], $alpha->get('files')); - } - - public function testPersist() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('global', 'do not include'); - $alpha->set('whoami', function () { - $this->fail('should not be called'); - }); - $alpha->set('name', 'alpha'); - - self::assertEquals(['name' => 'alpha'], $alpha->persist()); - } -} diff --git a/tests/src/DeployerTest.php b/tests/src/DeployerTest.php deleted file mode 100644 index e3b4d4da4..000000000 --- a/tests/src/DeployerTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class DeployerTest extends TestCase -{ - private $deployer; - - protected function setUp(): void - { - $console = new Application(); - $input = $this->createMock(InputInterface::class); - $output = $this->createMock(OutputInterface::class); - $this->deployer = new Deployer($console, $input, $output); - } - - protected function tearDown(): void - { - unset($this->deployer); - } - - public function testInstance() - { - $this->assertEquals($this->deployer, Deployer::get()); - } -} diff --git a/tests/src/FunctionsTest.php b/tests/src/FunctionsTest.php deleted file mode 100644 index ceae06a05..000000000 --- a/tests/src/FunctionsTest.php +++ /dev/null @@ -1,185 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Deployer\Configuration\Configuration; -use Deployer\Host\Host; -use Deployer\Host\Localhost; -use Deployer\Task\Context; -use Deployer\Task\GroupTask; -use Deployer\Task\Task; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\Input; -use Symfony\Component\Console\Output\Output; -use function Deployer\localhost; - -class FunctionsTest extends TestCase -{ - /** - * @var Deployer - */ - private $deployer; - - protected function setUp(): void - { - $console = new Application(); - - $input = $this->createMock(Input::class); - $output = $this->createMock(Output::class); - $host = new Localhost(); - - $this->deployer = new Deployer($console); - $this->deployer['input'] = $input; - $this->deployer['output'] = $output; - Context::push(new Context($host)); - } - - protected function tearDown(): void - { - Context::pop(); - unset($this->deployer); - $this->deployer = null; - } - - public function testHost() - { - host('domain.com'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('domain.com')); - - host('a1.domain.com', 'a2.domain.com')->set('roles', 'app'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('a1.domain.com')); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('a2.domain.com')); - - host('db[1:2].domain.com')->set('roles', 'db'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('db1.domain.com')); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('db2.domain.com')); - } - - public function testLocalhost() - { - localhost('domain.com'); - self::assertInstanceOf(Localhost::class, $this->deployer->hosts->get('domain.com')); - } - - public function testTask() - { - task('task', function () { - }); - - $task = $this->deployer->tasks->get('task'); - self::assertInstanceOf(Task::class, $task); - - $task = task('task'); - self::assertInstanceOf(Task::class, $task); - - task('group', ['task']); - $task = $this->deployer->tasks->get('group'); - self::assertInstanceOf(GroupTask::class, $task); - - $task = task('callable', [$this, __METHOD__]); - self::assertInstanceOf(Task::class, $task); - } - - public function testBefore() - { - task('main', function () {}); - task('before', function () {}); - before('main', 'before'); - before('before', function () {}); - - $names = $this->taskToNames($this->deployer->scriptManager->getTasks('main')); - self::assertEquals(['before:before', 'before', 'main'], $names); - } - - public function testAfter() - { - task('main', function () {}); - task('after', function () {}); - after('main', 'after'); - after('after', function () {}); - - $names = $this->taskToNames($this->deployer->scriptManager->getTasks('main')); - self::assertEquals(['main', 'after', 'after:after'], $names); - } - - public function testRunLocally() - { - $output = runLocally('echo "hello"'); - self::assertEquals('hello', $output); - } - - public function testRunLocallyWithOptions() - { - Context::get()->getConfig()->set('env', ['DEPLOYER_ENV' => 'default', 'DEPLOYER_ENV_TMP' => 'default']); - - $output = runLocally('echo $DEPLOYER_ENV'); - self::assertEquals('default', $output); - $output = runLocally('echo $DEPLOYER_ENV_TMP'); - self::assertEquals('default', $output); - - $output = runLocally('echo $DEPLOYER_ENV', ['env' => ['DEPLOYER_ENV_TMP' => 'overwritten']]); - self::assertEquals('default', $output); - $output = runLocally('echo $DEPLOYER_ENV_TMP', ['env' => ['DEPLOYER_ENV_TMP' => 'overwritten']]); - self::assertEquals('overwritten', $output); - } - - public function testWithinSetsWorkingPaths() - { - Context::get()->getConfig()->set('working_path', '/foo'); - - within('/bar', function () { - $withinWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/bar', $withinWorkingPath); - }); - - $originalWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/foo', $originalWorkingPath); - } - - public function testWithinRestoresWorkingPathInCaseOfException() - { - Context::get()->getConfig()->set('working_path', '/foo'); - - try { - within('/bar', function () { - throw new \Exception('Dummy exception'); - }); - } catch (\Exception $exception) { - // noop - } - - $originalWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/foo', $originalWorkingPath); - } - - public function testWithinReturningValue() - { - $output = within('/foo', function () { - return 'bar'; - }); - - self::assertEquals('bar', $output); - } - - public function testWithinWithVoidFunction() - { - $output = within('/foo', function () { - // noop - }); - - self::assertNull($output); - } - - private function taskToNames($tasks) - { - return array_map(function (Task $task) { - return $task->getName(); - }, $tasks); - } -} diff --git a/tests/src/Host/ConfigurationTest.php b/tests/src/Host/ConfigurationTest.php deleted file mode 100644 index ae5a6d82e..000000000 --- a/tests/src/Host/ConfigurationTest.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use Deployer\Configuration\Configuration; -use Deployer\Exception\ConfigurationException; -use PHPUnit\Framework\TestCase; - -class ConfigurationTest extends TestCase -{ - public function testConfiguration() - { - $config = new Configuration(); - $config->set('int', 42); - $config->set('string', 'value'); - $config->set('array', [1, 'two']); - $config->set('hyphen-ated', 'hyphen'); - $config->set('parse', 'is {{int}}'); - $config->set('parse-hyphen', 'has {{hyphen-ated}}'); - $config->set('callback', function () { - return 'callback'; - }); - $this->assertEquals(42, $config->get('int')); - $this->assertEquals('value', $config->get('string')); - $this->assertEquals([1, 'two'], $config->get('array')); - $this->assertEquals('default', $config->get('no', 'default')); - $this->assertEquals(null, $config->get('no', null)); - $this->assertEquals('callback', $config->get('callback')); - $this->assertEquals('is 42', $config->get('parse')); - $this->assertEquals('has hyphen', $config->get('parse-hyphen')); - - $config->set('int', 11); - $this->assertEquals('is 11', $config->get('parse')); - - $this->expectException('RuntimeException'); - $config->get('so'); - } - - public function testAddParams() - { - $config = new Configuration(); - $config->set('config', [ - 'one', - 'two' => 2, - 'nested' => [], - ]); - $config->add('config', [ - 'two' => 20, - 'nested' => [ - 'first', - ], - ]); - $config->add('config', [ - 'nested' => [ - 'second', - ], - ]); - $config->add('config', [ - 'extra', - ]); - - $expected = [ - 'one', - 'two' => 20, - 'nested' => [ - 'first', - 'second', - ], - 'extra', - ]; - $this->assertEquals($expected, $config->get('config')); - } - - public function testAddParamsToNotArray() - { - $this->expectException(ConfigurationException::class); - - $config = new Configuration(); - $config->set('config', 'option'); - $config->add('config', ['three']); - } -} diff --git a/tests/src/Host/HostTest.php b/tests/src/Host/HostTest.php deleted file mode 100644 index d1f66234c..000000000 --- a/tests/src/Host/HostTest.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use Deployer\Configuration\Configuration; -use PHPUnit\Framework\TestCase; - -class HostTest extends TestCase -{ - public function testHost() - { - $host = new Host('host'); - $host - ->setHostname('hostname') - ->setRemoteUser('remote_user') - ->setPort(22) - ->setConfigFile('~/.ssh/config') - ->setIdentityFile('~/.ssh/id_rsa') - ->setForwardAgent(true) - ->setSshMultiplexing(true); - - self::assertEquals('host', $host->getAlias()); - self::assertStringContainsString('host', $host->getTag()); - self::assertEquals('hostname', $host->getHostname()); - self::assertEquals('remote_user', $host->getRemoteUser()); - self::assertEquals(22, $host->getPort()); - self::assertEquals('~/.ssh/config', $host->getConfigFile()); - self::assertEquals('~/.ssh/id_rsa', $host->getIdentityFile()); - self::assertEquals(true, $host->getForwardAgent()); - self::assertEquals(true, $host->getSshMultiplexing()); - } - - public function testConfigurationAccessor() - { - $host = new Host('host'); - $host - ->set('roles', ['db', 'app']) - ->set('key', 'value') - ->set('array', [1]) - ->add('array', [2]); - - self::assertEquals(['db', 'app'], $host->get('roles')); - self::assertEquals('value', $host->get('key')); - self::assertEquals([1, 2], $host->get('array')); - } - - public function testHostAlias() - { - $host = new Host('host/alias'); - self::assertEquals('host/alias', $host->getAlias()); - self::assertEquals('host', $host->getHostname()); - } - - public function testHostWithParams() - { - $host = new Host('host'); - $value = 'new_value'; - $host - ->set('env', $value) - ->set('identity_file', '{{env}}'); - - self::assertEquals($value, $host->getIdentityFile()); - } - - public function testHostWithUserFromConfig() - { - $parent = new Configuration(); - $parent->set("deploy_user", function () { - return "test_user"; - }); - - $host = new Host('host'); - $host->config()->bind($parent); - $host - ->setHostname('host') - ->setRemoteUser('{{deploy_user}}') - ->setPort(22); - - self::assertEquals('test_user@host', $host->connectionString()); - } -} diff --git a/tests/src/Host/RangeTest.php b/tests/src/Host/RangeTest.php deleted file mode 100644 index 15cb9c0a4..000000000 --- a/tests/src/Host/RangeTest.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use PHPUnit\Framework\TestCase; - -class RangeTest extends TestCase -{ - public function testExpand() - { - self::assertEquals(['h1', 'h2', 'h3'], Range::expand(['h[1:3]'])); - self::assertEquals(['h1', 'h2', 'ha'], Range::expand(['h[1:2]', 'ha'])); - self::assertEquals(['h0', 'h1'], Range::expand(['h[0:1]'])); - self::assertEquals(['h1'], Range::expand(['h[1:1]'])); - self::assertEquals(['ha', 'hb', 'hc', 'hd'], Range::expand(['h[a:d]'])); - - $hostnames = Range::expand(['h[01:20]']); - self::assertContains('h01', $hostnames); - self::assertContains('h10', $hostnames); - self::assertContains('h20', $hostnames); - - self::assertCount(100, Range::expand(['h[1:100]'])); - self::assertCount(26, Range::expand(['h[a:z]'])); - } -} diff --git a/tests/src/Importer/ImporterTest.php b/tests/src/Importer/ImporterTest.php deleted file mode 100644 index 1f03602db..000000000 --- a/tests/src/Importer/ImporterTest.php +++ /dev/null @@ -1,82 +0,0 @@ -previousInput = $deployer->input; - $this->previousOutput = $deployer->output; - } - - public function tearDown(): void - { - Deployer::get()->input = $this->previousInput; - Deployer::get()->output = $this->previousOutput; - } - - public function testCanOneOverrideStaticMethod(): void - { - $extendedImporter = new class extends Importer - { - public static $config = []; - - protected static function config(array $config) - { - static::$config = $config; - } - }; - - $data = << 'bar'], $extendedImporter::$config); - } - - public function testImporterIgnoresYamlHiddenKeys(): void - { - $data = <<hosts->has('production')); - self::assertTrue(Deployer::get()->hosts->has('acceptance')); - self::assertTrue(Deployer::get()->hosts->has('production.beta')); - self::assertEquals('acceptance', Deployer::get()->hosts->get('acceptance')->getLabels()['stage']); - self::assertEquals('production', Deployer::get()->hosts->get('production')->getLabels()['stage']); - self::assertEquals('foo', Deployer::get()->hosts->get('acceptance')->getRemoteUser()); - self::assertEquals('bar', Deployer::get()->hosts->get('production')->getRemoteUser()); - } -} diff --git a/tests/src/Selector/SelectorTest.php b/tests/src/Selector/SelectorTest.php deleted file mode 100644 index d8dc61a99..000000000 --- a/tests/src/Selector/SelectorTest.php +++ /dev/null @@ -1,32 +0,0 @@ -set('labels', ['stage' => 'prod']); - $front = (new Host('prod.domain.com/front'))->set('labels', ['stage' => 'prod', 'tier' => 'frontend']); - $beta = (new Host('beta.domain.com'))->set('labels', ['stage' => 'beta']); - $dev = (new Host('dev'))->set('labels', ['stage' => 'dev']); - $multi = (new Host('multi'))->set('labels', ['stage' => ['prod', 'beta']]); - $allHosts = [$prod, $front, $beta, $dev, $multi]; - - $hosts = new HostCollection(); - foreach ($allHosts as $host) { - $hosts->set($host->getAlias(), $host); - } - $selector = new Selector($hosts); - self::assertEquals($allHosts, $selector->select('all')); - self::assertEquals([$prod, $front, $multi], $selector->select('stage=prod')); - self::assertEquals([$front], $selector->select('stage=prod & tier=frontend')); - self::assertEquals([$front, $beta, $multi], $selector->select('prod.domain.com/front, stage=beta')); - self::assertEquals([$prod, $beta, $dev, $multi], $selector->select('all & tier != frontend')); - self::assertEquals([$prod, $front, $dev], $selector->select('stage != beta')); - } -} diff --git a/tests/src/Support/HelpersTest.php b/tests/src/Support/HelpersTest.php deleted file mode 100644 index 1a4624761..000000000 --- a/tests/src/Support/HelpersTest.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Support; - -use PHPUnit\Framework\TestCase; - -class HelpersTest extends TestCase -{ - public function testArrayFlatten() - { - self::assertEquals(['a', 'b', 'c'], array_flatten(['a', ['b', 'key' => ['c']]])); - } - - public function testArrayMergeAlternate() - { - $config = [ - 'one', - 'two' => 2, - 'nested' => [], - ]; - - $config = array_merge_alternate($config, [ - 'two' => 20, - 'nested' => [ - 'first', - ], - ]); - - $config = array_merge_alternate($config, [ - 'nested' => [ - 'second', - ], - ]); - - $config = array_merge_alternate($config, [ - 'extra' - ]); - - self::assertEquals([ - 'one', - 'two' => 20, - 'nested' => [ - 'first', - 'second', - ], - 'extra', - ], $config); - } - - public function testParseHomeDir() - { - $this->assertStringStartsWith('/', parse_home_dir('~/path')); - $this->assertStringStartsWith('/', parse_home_dir('~')); - $this->assertStringStartsWith('~', parse_home_dir('~path')); - $this->assertStringEndsWith('~', parse_home_dir('path~')); - } -} diff --git a/tests/src/Support/ObjectProxyTest.php b/tests/src/Support/ObjectProxyTest.php deleted file mode 100644 index 42322ed5e..000000000 --- a/tests/src/Support/ObjectProxyTest.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Support; - -use PHPUnit\Framework\TestCase; - -class ObjectProxyTest extends TestCase -{ - public function testObjectProxy() - { - $mock = self::getMockBuilder('stdClass') - ->setMethods(['foo']) - ->getMock(); - $mock - ->expects(self::once()) - ->method('foo') - ->with('a', 'b'); - - $proxy = new ObjectProxy([$mock]); - $proxy->foo('a', 'b'); - } -} diff --git a/tests/src/Task/ContextTest.php b/tests/src/Task/ContextTest.php deleted file mode 100644 index 131b01db4..000000000 --- a/tests/src/Task/ContextTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use Deployer\Configuration\Configuration; -use Deployer\Host\Host; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class ContextTest extends TestCase -{ - public function testContext() - { - $host = $this->getMockBuilder(Host::class)->disableOriginalConstructor()->getMock(); - $host - ->expects($this->once()) - ->method('config') - ->willReturn($this->createMock(Configuration::class)); - - $context = new Context($host); - - $this->assertInstanceOf(Host::class, $context->getHost()); - $this->assertInstanceOf(Configuration::class, $context->getConfig()); - - Context::push($context); - - $this->assertEquals($context, Context::get()); - $this->assertEquals($context, Context::pop()); - } -} diff --git a/tests/src/Task/ScriptManagerTest.php b/tests/src/Task/ScriptManagerTest.php deleted file mode 100644 index c061ffd78..000000000 --- a/tests/src/Task/ScriptManagerTest.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use PHPUnit\Framework\TestCase; - -class ScriptManagerTest extends TestCase -{ - public function testGetTasks() - { - $notify = new Task('notify'); - $info = new GroupTask('info', ['notify']); - $deploy = new GroupTask('deploy', ['deploy:setup', 'deploy:release']); - $deploy->addBefore($info); - $setup = new Task('deploy:setup'); - $release = new Task('deploy:release'); - - $taskCollection = new TaskCollection(); - $taskCollection->set($notify->getName(), $notify); - $taskCollection->set($info->getName(), $info); - $taskCollection->set($deploy->getName(), $deploy); - $taskCollection->set($setup->getName(), $setup); - $taskCollection->set($release->getName(), $release); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$notify, $setup, $release], $scriptManager->getTasks('deploy')); - } - - public function testOnce() - { - $a = new Task('a'); - $b = new Task('b'); - $b->once(); - $group = new GroupTask('group', ['a', 'b']); - - $taskCollection = new TaskCollection(); - $taskCollection->add($a); - $taskCollection->add($b); - $taskCollection->add($group); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertFalse($a->isOnce()); - self::assertTrue($b->isOnce()); - - $group->once(); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertTrue($a->isOnce()); - self::assertTrue($b->isOnce()); - } - - public function testSelectsCombine() - { - $a = new Task('a'); - $b = new Task('b'); - $b->select('stage=beta'); - $group = new GroupTask('group', ['a', 'b']); - - $taskCollection = new TaskCollection(); - $taskCollection->add($a); - $taskCollection->add($b); - $taskCollection->add($group); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertNull($a->getSelector()); - self::assertEquals([[['=', 'stage', 'beta']]], $b->getSelector()); - - $group->select('role=prod'); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertEquals([[['=', 'role', 'prod']]], $a->getSelector()); - self::assertEquals([[['=', 'stage', 'beta']],[['=', 'role', 'prod']]], $b->getSelector()); - } - - public function testThrowsExceptionIfTaskCollectionEmpty() - { - self::expectException(\InvalidArgumentException::class); - - $scriptManager = new ScriptManager(new TaskCollection()); - $scriptManager->getTasks(''); - } - - public function testThrowsExceptionIfTaskDontExists() - { - self::expectException(\InvalidArgumentException::class); - - $taskCollection = new TaskCollection(); - $taskCollection->set('testTask', new Task('testTask')); - - $scriptManager = new ScriptManager($taskCollection); - $scriptManager->getTasks('testTask2'); - } -} diff --git a/tests/src/Task/TaskTest.php b/tests/src/Task/TaskTest.php deleted file mode 100644 index 16c44f4b6..000000000 --- a/tests/src/Task/TaskTest.php +++ /dev/null @@ -1,114 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use Deployer\Host\Host; -use PHPUnit\Framework\TestCase; -use function Deployer\invoke; -use function Deployer\task; - -class TaskTest extends TestCase -{ - protected function tearDown(): void - { - StubTask::$runned = 0; - } - - public function testTask() - { - $mock = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock - ->expects(self::exactly(1)) - ->method('callback'); - - $task = new Task('task_name', function () use ($mock) { - $mock->callback(); - }); - - $context = self::getMockBuilder(Context::class) - ->disableOriginalConstructor() - ->getMock(); - $task->run($context); - - self::assertEquals('task_name', $task->getName()); - - $task->desc('Task description.'); - self::assertEquals('Task description.', $task->getDescription()); - - $task->hidden(); - self::assertTrue($task->isHidden()); - - $task->once(); - self::assertTrue($task->isOnce()); - - $task->oncePerNode(); - self::assertTrue($task->isOncePerNode()); - } - - public function testInit() - { - $context = self::getMockBuilder(Context::class)->disableOriginalConstructor()->getMock(); - - // Test create task with [$object, 'method'] - $mock1 = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock1 - ->expects(self::once()) - ->method('callback'); - $task1 = new Task('task1', [$mock1, 'callback']); - $task1->run($context); - - // Test create task with anonymous functions - $mock2 = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock2 - ->expects(self::once()) - ->method('callback'); - $task2 = new Task('task2', function () use ($mock2) { - $mock2->callback(); - }); - $task2->run($context); - - self::assertEquals(0, StubTask::$runned); - $task3 = new Task('task3', new StubTask()); - $task3->run($context); - self::assertEquals(1, StubTask::$runned); - } - - public function testGroupInvoke(): void - { - $spy = new StubTask(); - - task('foo', $spy); - task('bar', $spy); - task('group', ['foo', 'bar']); - - (new Task('group:invoke', function () { - invoke('group'); - }))->run(new Context(new Host('localhost'))); - - $this->assertSame(2, StubTask::$runned); - } -} - -/** - * Stub class for task callable by __invoke() - */ -class StubTask -{ - public static $runned = 0; - - public function __invoke() - { - self::$runned++; - } -}