From ca5ef989cc25152611d063f2fa8dffc3ca4552ef Mon Sep 17 00:00:00 2001 From: lotyp Date: Thu, 13 Jun 2024 19:12:16 +0300 Subject: [PATCH 01/10] feat!: prepare for release 2.0 --- .env.example | 28 + .gitattributes | 23 + .github/.commitlint.config.mjs | 44 + .github/.cz.config.js | 65 + .github/.markdownlint.json | 7 + .github/.release-please-config.json | 73 + .github/.release-please-manifest.json | 3 + .github/.yamllint.yaml | 55 + .github/CODEOWNERS | 3 + .github/CODE_OF_CONDUCT.md | 8 +- .github/CONTRIBUTING.md | 422 + .github/ISSUE_TEMPLATE.md | 13 - .github/ISSUE_TEMPLATE/1-bug-report.yml | 105 + .github/ISSUE_TEMPLATE/2-feature-request.yml | 75 + .github/ISSUE_TEMPLATE/3-failing-test.yml | 63 + .github/ISSUE_TEMPLATE/4-docs-bug-report.yml | 79 + .github/ISSUE_TEMPLATE/5-security-report.yml | 35 + .github/ISSUE_TEMPLATE/config.yml | 14 + .github/SECURITY.md | 47 + .github/assets/screenshot.png | Bin 0 -> 415432 bytes .github/labeler.yml | 21 +- .github/renovate.json | 9 + .github/workflows/apply-labels.yml | 2 +- ...ge-release.yaml => auto-merge-release.yml} | 4 +- .github/workflows/ci.yml | 72 - .github/workflows/coding-standards.yml | 200 + .github/workflows/create-arch-diagram.yml | 2 +- .github/workflows/create-release.yml | 18 +- .github/workflows/dependency-analysis.yml | 83 + .github/workflows/refactoring.yml | 66 + .github/workflows/security-analysis.yml | 63 + .github/workflows/shellcheck.yml | 4 +- .github/workflows/static-analysis.yml | 130 + .github/workflows/testing.yml | 242 + .gitignore | 3 + .phive/.gitignore | 3 + .phive/phars.xml | 5 + .php-cs-fixer.dist.php | 3 +- .pre-commit-config.yaml | 29 +- Makefile | 244 +- README.md | 22 +- assets/logo.gh-dark-mode-only.png | Bin 10219 -> 0 bytes assets/logo.gh-light-mode-only.png | Bin 12710 -> 0 bytes assets/screenshot.png | Bin 496859 -> 0 bytes composer-require-checker.json | 8 + composer.json | 135 +- composer.lock | 12800 +++++++++------- docker-compose.yaml | 43 + infection.json.dist | 20 + package.json | 6 - pest.xml.dist | 26 + phpstan-baseline.neon | 2 + phpstan.neon.dist | 9 +- phpunit.xml.dist | 14 +- psalm-baseline.xml | 59 + psalm.xml | 29 + rector.php | 32 + .../Providers/SerializerServiceProvider.php | 14 +- src/Config.php | 16 +- src/Contracts/SerializerInterface.php | 4 +- src/EncodersRegistry.php | 2 +- src/HttpCode.php | 62 + src/Normalizers/RamseyUuidNormalizer.php | 8 +- src/Serializer.php | 12 +- src/SerializerManager.php | 10 +- tests/app/Item.php | 10 +- tests/app/Object/Product.php | 16 +- tests/app/Response.php | 10 +- .../SerializerServiceProviderTest.php | 12 +- tests/src/Pest/ExampleTest.php | 2 +- tests/src/SerializerManagerTest.php | 4 +- 71 files changed, 10292 insertions(+), 5460 deletions(-) create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .github/.commitlint.config.mjs create mode 100644 .github/.cz.config.js create mode 100644 .github/.markdownlint.json create mode 100644 .github/.release-please-config.json create mode 100644 .github/.release-please-manifest.json create mode 100644 .github/.yamllint.yaml create mode 100644 .github/CODEOWNERS create mode 100644 .github/CONTRIBUTING.md delete mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/ISSUE_TEMPLATE/1-bug-report.yml create mode 100644 .github/ISSUE_TEMPLATE/2-feature-request.yml create mode 100644 .github/ISSUE_TEMPLATE/3-failing-test.yml create mode 100644 .github/ISSUE_TEMPLATE/4-docs-bug-report.yml create mode 100644 .github/ISSUE_TEMPLATE/5-security-report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/SECURITY.md create mode 100644 .github/assets/screenshot.png create mode 100644 .github/renovate.json rename .github/workflows/{auto-merge-release.yaml => auto-merge-release.yml} (93%) delete mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/coding-standards.yml create mode 100644 .github/workflows/dependency-analysis.yml create mode 100644 .github/workflows/refactoring.yml create mode 100644 .github/workflows/security-analysis.yml create mode 100644 .github/workflows/static-analysis.yml create mode 100644 .github/workflows/testing.yml create mode 100644 .phive/.gitignore create mode 100644 .phive/phars.xml delete mode 100644 assets/logo.gh-dark-mode-only.png delete mode 100644 assets/logo.gh-light-mode-only.png delete mode 100644 assets/screenshot.png create mode 100644 composer-require-checker.json create mode 100644 docker-compose.yaml create mode 100644 infection.json.dist delete mode 100644 package.json create mode 100644 pest.xml.dist create mode 100644 psalm-baseline.xml create mode 100644 psalm.xml create mode 100644 rector.php diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..1c3e162 --- /dev/null +++ b/.env.example @@ -0,0 +1,28 @@ +# https://docs.docker.com/compose/reference/envvars/#compose_project_name +# With custom namespace provided, it will be used to prefix all services +# in Docker network for current project +COMPOSE_PROJECT_NAME=laravel-symfony-serializer +APP_ENV=production + +DB_CONNECTION=pgsql +DB_HOST=pgsql +DB_PORT=5432 + +DB_DATABASE=default +DB_USERNAME=root +DB_PASSWORD=password + +DB_MYSQL_FORWARD_PORT=13307 +DB_PGSQL_FORWARD_PORT=15433 + +XDEBUG_MODE=coverage + +CYCLE_ADAPTER_QUEUE_INTEGRATION=false +CYCLE_ADAPTER_SESSION_INTEGRATION=false +CYCLE_ADAPTER_CACHE_INTEGRATION=false + +CYCLE_ATTRIBUTES_CACHE=true +CYCLE_ATTRIBUTES_CACHE_DRIVER=array + +CYCLE_SCHEMA_CACHE=true +CYCLE_SCHEMA_CACHE_DRIVER=array diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1a87fa2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +/.build export-ignore +/.github export-ignore +/.phive export-ignore +/tests export-ignore +.editorconfig export-ignore +.env export-ignore +.env.example export-ignore +.gitattributes export-ignore +.gitignore export-ignore +.php-cs-fixer.dist.php export-ignore +.pre-commit-config.yaml export-ignore +composer.lock export-ignore +composer-require-checker.json export-ignore +docker-compose.yaml export-ignore +infection.json.dist export-ignore +Makefile export-ignore +pest.xml.dist export-ignore +phpstan.neon.dist export-ignore +phpstan-baseline.neon export-ignore +phpunit.xml.dist export-ignore +psalm.xml export-ignore +psalm-baseline.xml export-ignore +rector.php export-ignore diff --git a/.github/.commitlint.config.mjs b/.github/.commitlint.config.mjs new file mode 100644 index 0000000..49f1f95 --- /dev/null +++ b/.github/.commitlint.config.mjs @@ -0,0 +1,44 @@ +// More info: https://github.com/wayofdev/npm-shareable-configs/blob/master/packages/commitlint-config/src/index.js +const automaticCommitPattern = /^chore\(release\):.*\[skip ci]/ + +export default { + extends: ['@commitlint/config-conventional'], + /* + This resolves a linting conflict between commitlint's body-max-line-length + due to @semantic-release/git putting release notes in the commit body + https://github.com/semantic-release/git/issues/331 + */ + ignores: [(commitMessage) => automaticCommitPattern.test(commitMessage)], + rules: { + 'body-leading-blank': [1, 'always'], + 'body-max-line-length': [2, 'always', 120], + 'footer-leading-blank': [1, 'always'], + 'footer-max-line-length': [2, 'always', 120], + 'header-max-length': [2, 'always', 100], + 'scope-case': [2, 'always', 'lower-case'], + 'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']], + 'subject-empty': [2, 'never'], + 'subject-full-stop': [2, 'never', '.'], + 'type-case': [2, 'always', 'lower-case'], + 'type-empty': [2, 'never'], + 'type-enum': [ + 2, + 'always', + [ + 'feat', // New feature + 'fix', // Bug fix + 'perf', // Performance improvement + 'docs', // Documentation changes + 'style', // Code style update (formatting, missing semi colons, etc) + 'deps', // Dependency updates + 'refactor', // Code refactoring + 'ci', // Continuous integration changes + 'test', // Adding missing tests + 'revert', // Revert to a previous commit + 'build', // Changes that affect the build system + 'chore', // Other changes that don't modify src or test files + 'security', // Security improvements + ], + ], + }, +} diff --git a/.github/.cz.config.js b/.github/.cz.config.js new file mode 100644 index 0000000..5f951c6 --- /dev/null +++ b/.github/.cz.config.js @@ -0,0 +1,65 @@ +// @see https://cz-git.qbb.sh/config/#configure-template +module.exports = { + alias: { fd: 'docs: fix typos' }, + messages: { + type: 'Select the type of change that you\'re committing:', + scope: 'Denote the SCOPE of this change (optional):', + customScope: 'Denote the SCOPE of this change:', + subject: 'Write a SHORT, IMPERATIVE tense description of the change:\n', + body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n', + breaking: 'List any BREAKING CHANGES (optional). Use "|" to break new line:\n', + footerPrefixesSelect: 'Select the ISSUES type of changeList by this change (optional):', + customFooterPrefix: 'Input ISSUES prefix:', + footer: 'List any ISSUES by this change. E.g.: #31, #34:\n', + generatingByAI: 'Generating your AI commit subject...', + generatedSelectByAI: 'Select suitable subject by AI generated:', + confirmCommit: 'Are you sure you want to proceed with the commit above?' + }, + types: [ + { value: 'feat', name: 'feat: A new feature', emoji: ':sparkles:' }, + { value: 'fix', name: 'fix: A bug fix', emoji: ':bug:' }, + { value: 'perf', name: 'perf: A code change that improves performance', emoji: ':zap:' }, + { value: 'docs', name: 'docs: Documentation only changes', emoji: ':memo:' }, + { value: 'style', name: 'style: Changes that do not affect the meaning of the code', emoji: ':lipstick:' }, + { value: 'deps', name: 'deps: A dependency update', emoji: ':package:' }, + { value: 'refactor', name: 'refactor: A code change that neither fixes a bug nor adds a feature', emoji: ':recycle:' }, + { value: 'ci', name: 'ci: Changes to our CI configuration files and scripts', emoji: ':ferris_wheel:' }, + { value: 'test', name: 'test: Adding missing tests or correcting existing tests', emoji: ':white_check_mark:' }, + { value: 'revert', name: 'revert: Reverts a previous commit', emoji: ':rewind:' }, + { value: 'build', name: 'build: Changes that affect the build system or external dependencies', emoji: ':package:' }, + { value: 'chore', name: 'chore: Other changes that don\'t modify src or test files', emoji: ':hammer:' }, + { value: 'security', name: 'security: A code change that fixes a security issue', emoji: ':lock:' } + ], + useEmoji: false, + emojiAlign: 'center', + useAI: false, + aiNumber: 1, + themeColorCode: '', + scopes: [], + allowCustomScopes: true, + allowEmptyScopes: true, + customScopesAlign: 'bottom', + customScopesAlias: 'custom', + emptyScopesAlias: 'empty', + upperCaseSubject: false, + markBreakingChangeMode: false, + allowBreakingChanges: ['feat', 'fix'], + breaklineNumber: 100, + breaklineChar: '|', + skipQuestions: [], + issuePrefixes: [{ value: 'closed', name: 'closed: ISSUES has been processed' }], + customIssuePrefixAlign: 'top', + emptyIssuePrefixAlias: 'skip', + customIssuePrefixAlias: 'custom', + allowCustomIssuePrefix: true, + allowEmptyIssuePrefix: true, + confirmColorize: true, + maxHeaderLength: Infinity, + maxSubjectLength: Infinity, + minSubjectLength: 0, + scopeOverrides: undefined, + defaultBody: '', + defaultIssues: '', + defaultScope: '', + defaultSubject: '' +} diff --git a/.github/.markdownlint.json b/.github/.markdownlint.json new file mode 100644 index 0000000..77f382d --- /dev/null +++ b/.github/.markdownlint.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json", + "line-length": false, + "no-inline-html": false, + "first-line-h1": false, + "no-duplicate-heading": false +} diff --git a/.github/.release-please-config.json b/.github/.release-please-config.json new file mode 100644 index 0000000..2909a03 --- /dev/null +++ b/.github/.release-please-config.json @@ -0,0 +1,73 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "release-type": "php", + "packages": { + ".": { + "package-name": "laravel-symfony-serializer", + "changelog-path": "/CHANGELOG.md" + } + }, + "include-component-in-tag": false, + "changelog-sections": [ + { + "type": "feat", + "section": "Features", + "hidden": false + }, + { + "type": "fix", + "section": "Bug Fixes", + "hidden": false + }, + { + "type": "perf", + "section": "Performance Improvements", + "hidden": false + }, + { + "type": "docs", + "section": "Documentation", + "hidden": false + }, + { + "type": "deps", + "section": "Dependencies", + "hidden": false + }, + { + "type": "refactor", + "section": "Code Refactoring", + "hidden": false + }, + { + "type": "test", + "section": "Tests", + "hidden": true + }, + { + "type": "build", + "section": "Build System", + "hidden": true + }, + { + "type": "ci", + "section": "Continuous Integration", + "hidden": true + }, + { + "type": "chore", + "section": "Miscellaneous", + "hidden": true + }, + { + "type": "style", + "section": "Styles", + "hidden": true + }, + { + "type": "revert", + "section": "Reverts", + "hidden": true + } + ] +} diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json new file mode 100644 index 0000000..c39efc0 --- /dev/null +++ b/.github/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.2.60" +} diff --git a/.github/.yamllint.yaml b/.github/.yamllint.yaml new file mode 100644 index 0000000..657554d --- /dev/null +++ b/.github/.yamllint.yaml @@ -0,0 +1,55 @@ +--- + +extends: default + +ignore: | + .build/ + vendor/ + +rules: + braces: + # Defaults + # min-spaces-inside: 0 + # max-spaces-inside: 0 + + # Keep 0 min-spaces to not error on empty {} collection definitions + min-spaces-inside: 0 + + # Allow one space inside braces to improve code readability + max-spaces-inside: 1 + + brackets: + # Defaults + # min-spaces-inside: 0 + # max-spaces-inside: 0 + + # Keep 0 min-spaces to not error on empty [] collection definitions + min-spaces-inside: 0 + + # Allow one space inside braces to improve code readability + max-spaces-inside: 1 + + colons: + # Defaults + # min-spaces-before: 0 + # max-spaces-after: 1 + + # Allow multiple spaces after a colon to allow indentation of YAML + # dictionary values + max-spaces-after: -1 + + commas: + # Defaults + # max-spaces-after: 1 + + # Allow multiple spaces after a comma to allow indentation of YAML + # dictionary values + max-spaces-after: -1 + + comments: + require-starting-space: true + min-spaces-from-content: 1 + + line-length: disable + +... diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..98af7f9 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners + +* @lotyp diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index b29e056..804d96c 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -60,7 +60,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -the@wayof.dev. +. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the @@ -116,7 +116,7 @@ the community. This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. +. Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). @@ -124,5 +124,5 @@ enforcement ladder](https://github.com/mozilla/diversity). [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. +. Translations are available at +. diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..3fc6a15 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,422 @@ +# Contributing + +Welcome to our project! + +We appreciate your interest in contributing. This guide will help you get started, ensuring an effective collaboration. + +
+ +## ๐Ÿ—‚ Table of Contents + +* [Introduction](#-introduction) +* [Development Requirements](#-development-requirements) + * [Optional Tools](#-optional-tools) +* [Quick Project Setup](#-quick-project-setup) +* [Using the Makefile](#-using-the-makefile) + * [Key Commands](#-key-commands) +* [Workflow](#-workflow) +* [Docker Support](#-docker-support) +* [Continuous Integration with GitHub Actions](#-continuous-integration-with-github-actions) +* [Before You Contribute](#-before-you-contribute) +* [Commit Message Guidelines](#-commit-message-guidelines) +* [PHAR Dependencies](#-phar-dependencies) +* [Coding Standards](#-coding-standards) + * [Composer Normalization](#-composer-normalization) + * [Yaml Lint](#-yaml-lint) + * [Action Lint](#-action-lint) + * [Markdown Lint](#-markdown-lint) + * [PHP CS Fixer](#-php-cs-fixer) + * [Rector](#-rector) +* [Dependency Analysis](#-dependency-analysis) +* [Security Audits](#-security-audits) +* [Mutation Tests](#-mutation-tests) +* [Static Code Analysis](#-static-code-analysis) +* [Unit and Functional Tests](#-unit-and-functional-tests) +* [Pre-commit Hooks](#-pre-commit-hooks) + * [Configured Hooks](#-configured-hooks) + * [Installing Pre-commit Hooks](#-installing-pre-commit-hooks) + +
+ +## ๐Ÿ‘‹ Introduction + +If you would like to contribute, please **open an issue** or a pull request. We are always looking for ways to improve the project and would love to hear your ideas. + +The latest changes are always in **`master`** branch, so please make your Pull Request against that branch. + +
+ +## ๐Ÿšฉ Development Requirements + +Before you begin, you will need to set up your local development environment. Here is what you'll need: + +* **Operating System**: macOS Monterey+, Linux, or Windows with WSL2. +* **Docker**: Version 26.0.0 or newer. Installation guides: + * [Docker on Ubuntu 22.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04) + * [Docker Desktop on Mac](https://docs.docker.com/desktop/install/mac-install/) + +### โ†’ Optional Tools + +* **Homebrew** (macOS only) + * Install via [brew.sh](https://brew.sh/). +* [Pre-commit](https://pre-commit.com) โ€” Automates the running of git pre-commit hooks. + * Installation: `brew install pre-commit` and `make hooks` +* [Cz-git](https://cz-git.qbb.sh) โ€” Commitizen adapter, that assists in formatting git commits. + * Installation: `brew install czg` + +
+ +## ๐Ÿš€ Quick Project Setup + +We use a dockerized environment. Follow these steps to start working with the project: + +1. **Clone this repository:** + + ```bash + git clone git@github.com:wayofdev/laravel-symfony-serializer.git \ + && cd ./laravel-symfony-serializer + ``` + +2. **Create `.env` file:** + + ```bash + make env + ``` + +3. **Install phive and composer dependencies:** + + ```bash + make phive + make install + ``` + +
+ +## ๐Ÿ”ง Using the Makefile + +This project uses a Makefile to streamline common development tasks. The Makefile includes utilities for managing Docker environments, installing project dependencies, running tests, and linting code. + +```bash +make help +``` + +![Screenshot](./assets/screenshot.png) + +### โ†’ Key Commands + +* `make env`: Creates a `.env` file from the `.env.example` template. +* `make install`: Installs project composer dependencies +* `make update`: Updates project composer dependencies +* `make up`: Starts all services using Docker Compose. +* `make down`: Stops and removes all services. +* `make logs`: Displays logs for all services. +* `make ssh`: Logs into the running application container for command line operations. +* `make lint`: Executes all linting procedures for YAML, PHP, and Composer files. +* `make commit`: Runs cz-git, a commitizen adapter for commit message formatting in a native environment. + +For a full list of commands, run `make help`. + +
+ +## ๐Ÿ’ป Workflow + +> [!IMPORTANT] +> +> Please feature/fix/update... into individual PRs (not one changing everything) + +* **Fork the Repository**: Start by forking the repository to your GitHub account. +* **Create a Branch**: In your fork, create a new branch for your work. Name it appropriately based on the feature, fix, or update you're working on. +* **Make Your Changes**: Implement your changes +* **Run Tests**: Ensure all tests pass by running `make test`. +* **Update Documentation**: If you've made changes that affect the project's documentation, ensure it is updated. +* **Run Linters**: Ensure your code passes all linting checks using `make lint`. +* **Commit Your Changes**: Use the [Conventional Commits](#-commit-message-guidelines) standard for your commit messages. You can use `make commit` to assist in creating commit messages. +* **Push Your Changes**: Push your branch to your fork on GitHub. +* **Open a Pull Request**: Submit a pull request to the `master` branch of the original repository. Ensure your PR is focused, addressing a single feature, fix, or improvement. + +
+ +## ๐Ÿณ Docker Support + +This package leverages Docker to provide a consistent and isolated development environment. The included [`Makefile`](../Makefile) utilizes `docker-compose.yaml` along with the [wayofdev/docker-php-dev](https://github.com/wayofdev/docker-php-dev) PHP image to streamline setup and usage. This setup facilitates easy configuration of tools like XDebug for debugging and profiling, enhancing the development experience. + +To run docker container: + +```bash +make up +``` + +Other commands: + +```bash +# Login inside container +$ make ssh + +# Turn off containers +$ make down +``` + +By default, phpunit and phpstan commands will be ran against docker environment. + +
+ +## ๐Ÿ”จ Continuous Integration with GitHub Actions + +Our project employs [GitHub Actions](https://github.com/features/actions) for continuous integration, ensuring code quality and reliability. We encourage contributors to review our workflow configurations to understand the CI processes: + +| Workflow | Description | +|----------------------------------------------------------------|---------------------------------------------------------------------| +| [`apply-labels.yml`](workflows/apply-labels.yml) | Auto labels PRs based on rules. | +| [`auto-merge-release.yml`](workflows/auto-merge-release.yml) | Automatically merges release PRs. | +| [`coding-standards.yml`](workflows/coding-standards.yml) | Checks `yaml`, `md`, `composer`, `php` and commit coding standards. | +| [`create-release.yml`](workflows/create-release.yml) | Creates a release on GitHub. | +| [`dependency-analysis.yml`](workflows/dependency-analysis.yml) | Checks for dependency issues. | +| [`refactoring.yml`](workflows/refactoring.yml) | Runs rector/rector code check. | +| [`security-analysis.yml`](workflows/security-analysis.yml) | Checks for security issues. | +| [`shellcheck.yml`](workflows/shellcheck.yml) | Checks shell scripts. | +| [`static-analysis.yml`](workflows/static-analysis.yml) | Runs `psalm` and `phpstan` tools. | +| [`testing.yml`](workflows/testing.yml) | Runs coverage, unit and mutation tests. | + +
+ +## ๐Ÿ“ Before You Contribute + +* **Tests**: Include tests that cover any new features or bug fixes. +* **Code Quality**: Utilize `make lint` for code style checks and `make lint-stan lint-psalm` for static analysis with [PHPStan](https://phpstan.org) and [Psalm](https://psalm.dev/). +* **Documentation**: Update relevant documentation to reflect your changes, ensuring other developers can understand and use your contributions effectively. +* **Commits**: use Conventional Commits standard to create a commit + +
+ +## ๐Ÿ“ฉ Commit Message Guidelines + +We follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) standard. Please structure your commit messages as follows, using the appropriate prefix: + +**Examples:** + +```bash +git commit -am 'feat: some feature was introduced' +git commit -am 'fix: something has been fixed' +``` + +**Allowed Prefixes:** + +| Prefix | Purpose | +|-------------|---------------------------------------------------------------| +| `feat:` | Introduces a new feature | +| `fix:` | Fixes a bug | +| `perf:` | Improves performance | +| `docs:` | Documentation only changes | +| `style:` | Code style changes (formatting, missing semi-colons, etc.) | +| `deps:` | Updates dependencies | +| `refactor:` | Code changes that neither fixes a bug nor adds a feature | +| `ci:` | Changes to our CI configuration files and scripts | +| `test:` | Adding missing tests or correcting existing tests | +| `revert:` | Reverts a previous commit | +| `build:` | Changes that affect the build system or external dependencies | +| `chore:` | Other changes that don't modify src or test files | +| `security:` | A code change that fixes a security issue | + +
+ +## ๐Ÿ“ฆ PHAR Dependencies + +We use [Phive](https://phar.io/) to manage PHAR dependencies. You can install all dependencies using the `make phive` command, which will be executed through the Docker environment. + +```bash +make phive +``` + +
+ +## ๐Ÿ” Coding Standards + +We enforce coding standards to maintain high code quality and readability. Here's a list of tools we use: + +### โ†’ Composer Normalization + +We use [`ergebnis/composer-normalize`](https://github.com/ergebnis/composer-normalize) to normalize `composer.json`. + +Use: + +```bash +make lint-composer +``` + +### โ†’ Yaml Lint + +We use [`yamllint`](https://github.com/adrienverge/yamllint) to enforce coding standards in YAML files. + +To lint yaml files run: + +```bash +make lint-yaml +``` + +by default, [`cytopia/yamllint`](https://github.com/cytopia/docker-yamllint) Docker image will be used to run linter. + +### โ†’ Action Lint + +We use [`actionlint`](https://github.com/rhysd/actionlint) to enforce coding standards in GitHub Actions workflows. + +To lint GitHub Actions run: + +```bash +make lint-actions +``` + +by default, [`rhysd/actionlint`](https://hub.docker.com/r/rhysd/actionlint/tags) Docker image will be used to run linter. + +### โ†’ Markdown Lint + +We use [`markdownlint-cli2`](https://github.com/davidanson/markdownlint-cli2) to enforce coding standards in Markdown files. + +To lint markdown files run: + +```bash +make lint-md-dry +make lint-md +``` + +### โ†’ PHP CS Fixer + +We use [`friendsofphp/php-cs-fixer`](https://github.com/FriendsOfPHP/PHP-CS-Fixer) together with [`wayofdev/php-cs-fixer-config`](https://github.com/wayofdev/php-cs-fixer-config) to enforce coding standards in PHP files. + +Run + +```bash +make lint-php +``` + +to automatically fix coding standard violations. + +### โ†’ Rector + +We use [`rector/rector`](https://github.com/rectorphp/rector) to refactor and modernize PHP code. + +Run + +```bash +make refactor +``` + +to perform code refactoring. + +
+ +## ๐Ÿ”ฌ Dependency Analysis + +We use [`maglnet/composer-require-checker`](https://github.com/maglnet/ComposerRequireChecker) to prevent the use of unknown symbols in production code. + +Run + +```bash +make lint-deps +``` + +to run a dependency analysis. + +
+ +## ๐Ÿ”’ Security Audits + +We use Composer's built-in audit feature to check for known vulnerabilities in dependencies. + +Run + +```bash +make lint-audit +``` + +
+ +## ๐Ÿฆ  Mutation Tests + +We use [`infection/infection`](https://github.com/infection/infection) together with [`roave/infection-static-analysis-plugin`](https://github.com/Roave/infection-static-analysis-plugin) to ensure a minimum quality of the tests. Roave plugin is used to publish mutation score results to the [Stryker Dashboard](https://dashboard.stryker-mutator.io/). + +Xdebug support is enabled by default when running commands through the `Makefile`: + +```bash +make infect +``` + +to run mutation tests. + +
+ +## ๐Ÿ” Static Code Analysis + +We use both [`phpstan/phpstan`](https://github.com/phpstan/phpstan) and [`vimeo/psalm`](https://github.com/vimeo/psalm) to statically analyze the code. + +Run + +```bash +make lint-stan +make lint-psalm +``` + +to run a static code analysis. + +We also use the baseline features of [`phpstan/phpstan`](https://phpstan.org/user-guide/baseline) and [`vimeo/psalm`](https://psalm.dev/docs/running_psalm/dealing_with_code_issues/#using-a-baseline-file) to ignore existing issues. + +Run + +```bash +make lint-stan-baseline +make lint-psalm-baseline +``` + +to regenerate the baselines in: + +* [`../phpstan-baseline.neon`](../phpstan-baseline.neon). +* [`../psalm-baseline.xml`](../psalm-baseline.xml). + +> [!IMPORTANT] +> +> Ideally, the baseline files should stay empty or shrink over time. + +
+ +## ๐Ÿงช Unit and Functional Tests + +We use [`phpunit/phpunit`](https://github.com/sebastianbergmann/phpunit) and [`pestphp/pest`](https://github.com/pestphp/pest) to drive the development. + +Run to run all the tests: + +```bash +# To run both, arch (pest) and unit (phpunit) tests +make test + +# To run only arch (pest) tests +make test-arch + +# To run only unit (phpunit) tests +make test-unit +``` + +
+ +## ๐Ÿ“ฆ Pre-commit Hooks + +Pre-commit hooks are an optional but highly recommended way to automate the linting and quality checks before committing changes to the repository. This project provides a predefined configuration that helps in maintaining code quality and consistency. + +### โ†’ Configured Hooks + +Our pre-commit configuration includes several hooks: + +* **Trailing Whitespace**: Removes unnecessary trailing spaces. +* **End-of-File Fixer**: Ensures that files end with a newline. +* **Check Added Large Files**: Prevents accidentally adding large files to the git repository, with a current limit set to 600 KB. +* **Commitizen**: Ensures commit messages meet the conventional commit format. This hook is triggered at the commit message stage. +* **PHP-CS-Fixer:** Enforces coding standards in PHP files. +* **Markdown Lint:** Enforces coding standards in Markdown files. + +### โ†’ Installing Pre-commit Hooks + +To utilize these hooks, you first need to install them using the command provided by the Makefile: + +```bash +make hooks +``` + +
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 51b060a..0000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,13 +0,0 @@ -#### Steps required to reproduce the problem - -1. -2. -3. - -#### Expected Result - -* - -#### Actual Result - -* diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml new file mode 100644 index 0000000..7fca347 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -0,0 +1,105 @@ +--- + +name: ๐Ÿž Bug Report +description: Report an issue to help the project improve. +title: '[Bug]: ' +labels: ['type: bug'] + +assignees: + - lotyp + +body: + - type: markdown + attributes: + value: ๐Ÿž **Bug Report** + + - type: textarea + id: bug-description + attributes: + label: Describe the bug + description: Please provide a clear and detailed description of what the bug is. This helps us understand the issue quickly and look for potential fixes. + placeholder: Explain the bug in as much detail as possible... + validations: + required: true + + - type: textarea + id: regression + attributes: + label: Is this a regression? + description: | + Was this functionality working in a previous version? + If yes, please mention the last version in which it worked properly. + Understanding regressions helps prioritize fixes. + placeholder: Yes or No, and details about the last working version... + validations: + required: false + + - type: textarea + id: steps-to-reproduce + attributes: + label: To Reproduce + description: | + 'Please provide step-by-step instructions that reproduce the issue: + 1. Use x argument / navigate to... + 2. Fill this information... + 3. Go to... + 4. See error + placeholder: Detailed steps to reproduce the bug... + validations: + required: true + + - type: textarea + id: expected-behaviour + attributes: + label: Expected behaviour + description: | + Describe what you expected to happen. + Clear expectations help understand the gap between current and desired states. + placeholder: What did you expect to happen instead of the bug? + validations: + required: true + + - type: textarea + id: media + attributes: + label: Media prove + description: If applicable, add screenshots or videos to better illustrate the issue. Visual aids can significantly aid in diagnosing problems quicker. + placeholder: Upload files or paste links here... + validations: + required: false + + - type: textarea + id: environment + attributes: + label: Your environment + description: | + Provide detailed information about your environment to help us replicate the issue: + * OS: [e.g. Ubuntu] + * PHP version: [e.g. 8.2.2] + * Package version: [e.g. 1.0.0] + * Any relevant environment details + placeholder: List your environment details here... + validations: + required: false + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: Include any other context about the problem here, such as unusual system configurations, previous issues, or possible causes. + placeholder: Any additional information that could help us resolve the issue... + validations: + required: false + + - type: markdown + attributes: + value: | + ๐Ÿ“› To ensure a smooth issue processing, please check if a similar bug report has already been submitted before creating a new one. + We highly value your contributions, so please make sure to familiarize yourself with our repository's guidelines: + - [Code of Conduct](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CODE_OF_CONDUCT.md) + - [Contribution Guidelines](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CONTRIBUTING.md) + + Additionally, consider joining our discussions on: + - [WayOfDev Discord Community](https://discord.gg/CE3TcCC5vr) + +... diff --git a/.github/ISSUE_TEMPLATE/2-feature-request.yml b/.github/ISSUE_TEMPLATE/2-feature-request.yml new file mode 100644 index 0000000..6786890 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-feature-request.yml @@ -0,0 +1,75 @@ +--- + +name: ๐Ÿš€ Feature Request +description: Suggest an idea or possible new feature for this project. +title: '[Feature]: ' +labels: ['type: enhancement'] + +assignees: + - lotyp + +body: + - type: markdown + attributes: + value: ๐Ÿš€ **Feature Request** + + - type: textarea + id: problem-related + attributes: + label: Is your feature request related to a problem? Please describe. + description: | + Please provide a clear and detailed description of what the problem is. + For example, 'I'm always frustrated when...'. + This will help us understand the context and the impact of the problem. + placeholder: Describe the problem... + validations: + required: true + + - type: textarea + id: desired-solution + attributes: + label: "Describe the solution you'd like" + description: | + What would you like to see happen? Please provide a detailed explanation of the desired feature. + You may include bullet points to outline objectives, key activities, and expected outcomes. + placeholder: | + 1. Objective: [What you hope to achieve with this feature] + 2. Key Activities: [Steps to implement the feature] + 3. Expected Outcome: [Benefits and results of the feature] + validations: + required: true + + - type: textarea + id: alternative-solutions + attributes: + label: "Describe alternatives you've considered" + description: | + Are there alternative solutions or features you've considered? Please describe them. + Understanding different possible solutions can help in finding the best path forward. + placeholder: Describe any alternative solutions or workarounds you have considered... + validations: + required: false + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: | + Add any other context or screenshots about the feature request here. + Links to similar features, or visual aids that support your proposal, if applicable. + placeholder: Insert any additional context or links to similar features here... + validations: + required: false + + - type: markdown + attributes: + value: | + ๐Ÿ“› To ensure a smooth issue processing, please check if a similar feature request has already been submitted before creating a new one. + We highly value your contributions, so please make sure to familiarize yourself with our repository's guidelines: + - [Code of Conduct](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CODE_OF_CONDUCT.md) + - [Contribution Guidelines](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CONTRIBUTING.md) + + Additionally, consider joining our discussions on: + - [WayOfDev Discord Community](https://discord.gg/CE3TcCC5vr) + +... diff --git a/.github/ISSUE_TEMPLATE/3-failing-test.yml b/.github/ISSUE_TEMPLATE/3-failing-test.yml new file mode 100644 index 0000000..374e862 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3-failing-test.yml @@ -0,0 +1,63 @@ +--- + +name: ๐Ÿงช Failing Test +description: Report failing tests or CI jobs. +title: '[Test]: ' +labels: ['type: test'] + +assignees: + - lotyp + +body: + - type: markdown + attributes: + value: ๐Ÿงช **Failing Test** + + - type: textarea + id: failing-tests + attributes: + label: Which jobs/test(s) are failing + description: Please specify which CI jobs or tests are failing. Include test names or job identifiers. + placeholder: List the failing jobs or tests here... + validations: + required: true + + - type: textarea + id: reason-for-failure + attributes: + label: Reason for failure/description + description: Explain why the test is failing or what might be missing to make it pass. If available, include error messages or output logs. + placeholder: Provide details on why the test is failing, including error logs or output messages... + validations: + required: true + + - type: textarea + id: media-prove + attributes: + label: Media prove + description: If applicable, add screenshots, videos, or links to logs that help explain the issue. Visual aids can be very helpful in diagnosing problems. + placeholder: Upload files or paste links here... + validations: + required: false + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: Add any other context about the problem, such as related issues, recent changes, or environmental specifics that might influence the test outcome. + placeholder: Include any other relevant information that might help understand the issue... + validations: + required: false + + - type: markdown + attributes: + value: | + ๐Ÿ“› To ensure a smooth issue processing, please check if a similar bug report has already been submitted before creating a new one. + We highly value your contributions, so please make sure to familiarize yourself with our repository's guidelines: + - [Code of Conduct](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CODE_OF_CONDUCT.md) + - [Contribution Guidelines](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CONTRIBUTING.md) + + Additionally, consider joining our discussions on: + - [WayOfDev Discord Community](https://discord.gg/CE3TcCC5vr) + +... diff --git a/.github/ISSUE_TEMPLATE/4-docs-bug-report.yml b/.github/ISSUE_TEMPLATE/4-docs-bug-report.yml new file mode 100644 index 0000000..5ff7274 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4-docs-bug-report.yml @@ -0,0 +1,79 @@ +--- + +name: ๐Ÿ“š Documentation or README.md issue report +description: Report an issue in the project's documentation or README.md file. +title: '[Docs]: ' +labels: ['type: documentation', 'type: maintenance'] + +assignees: + - lotyp + +body: + - type: markdown + attributes: + value: ๐Ÿ“š **Documentation Issue Report** + + - type: textarea + id: documentation-bug-description + attributes: + label: Describe the bug + description: Provide a clear and concise description of what the error or issue is in the documentation. + placeholder: Explain the issue with the documentation... + validations: + required: true + + - type: textarea + id: steps-to-reproduce + attributes: + label: To Reproduce + description: | + Please provide steps to reproduce the error in the documentation: + 1. Navigate to the section or URL where the error occurs... + 2. Specify the misleading or incorrect information... + 3. Suggest what is expected if applicable... + placeholder: | + 1. URL or Section... + 2. Misleading information... + 3. Expected correction... + validations: + required: true + + - type: textarea + id: media-prove + attributes: + label: Media prove + description: If applicable, add screenshots or videos to better illustrate the issue with the documentation. + placeholder: Upload files or paste links here... + validations: + required: false + + - type: textarea + id: desired-solution + attributes: + label: Describe the solution you would like + description: Describe what changes or improvements you would like to see in the documentation. + placeholder: Describe the desired changes or improvements... + validations: + required: true + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: Add any other context or additional information that could help clarify the documentation issue. + placeholder: Provide any additional context here... + validations: + required: false + + - type: markdown + attributes: + value: | + ๐Ÿ“› To ensure a smooth issue processing, please check if a similar bug report has already been submitted before creating a new one. + We highly value your contributions, so please make sure to familiarize yourself with our repository's guidelines: + - [Code of Conduct](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CODE_OF_CONDUCT.md) + - [Contribution Guidelines](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/CONTRIBUTING.md) + + Additionally, consider joining our discussions on: + - [WayOfDev Discord Community](https://discord.gg/CE3TcCC5vr) + +... diff --git a/.github/ISSUE_TEMPLATE/5-security-report.yml b/.github/ISSUE_TEMPLATE/5-security-report.yml new file mode 100644 index 0000000..a551bc0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/5-security-report.yml @@ -0,0 +1,35 @@ +--- + +name: โš ๏ธ Security Report +description: Please report security issues directly through GitHub Security Advisories to ensure privacy. +title: '[Security]: ' +labels: ['type: bug', 'priority: high', 'type: security'] + +assignees: + - lotyp + +body: + - type: markdown + attributes: + value: > + โš ๏ธ **Please DO NOT report security vulnerabilities here.** Instead, use the GitHub Security Advisories feature to report them privately and securely. This helps us address issues responsibly without exposing them publicly. + + - type: markdown + attributes: + value: > + GitHub Advisories do not automatically notify maintainers, so by using the advisories, you help maintain confidentiality while ensuring the issue is documented and tracked properly. + + - type: markdown + attributes: + value: 'To create a new advisory, go to: [Create Security Advisory](https://github.com/wayofdev/laravel-symfony-serializer/security/advisories/new)' + + - type: textarea + id: github-advisory-url + attributes: + label: Your GitHub Advisory URL + description: Optionally, you can paste the URL of the GitHub Security Advisory you have created here for reference. + placeholder: Paste the GitHub Security Advisory URL here... + validations: + required: false + +... diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..a183414 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +--- + +blank_issues_enabled: true + +contact_links: + - name: Start a discussion or ask a question. + url: https://github.com/wayofdev/.github/discussions + about: Please ask and answer questions here. + + - name: Join our Discord Community + url: https://discord.gg/CE3TcCC5vr + about: Join our Discord community to get help, share your ideas, and chat with other developers. + +... diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..a250ab1 --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,47 @@ +# Security Policy + +Thank you for helping keep `wayofdev/laravel-symfony-serializer` and its users safe. We greatly appreciate your efforts to disclose security vulnerabilities responsibly. + +
+ +## ๐Ÿ™‹โ€โ™‚๏ธ Supported Versions + +Only certain versions of `wayofdev/laravel-symfony-serializer` are currently being maintained with security updates. Please use or upgrade to one of these supported versions: + +| Version | Supported | +|---------|--------------------| +| x.y.z | :white_check_mark: | + +Please ensure that you are using one of these supported versions before reporting a security issue. + +
+ +## ๐Ÿ—œ๏ธ Unsupported Versions + +Versions listed below are no longer supported with security updates. We recommend upgrading to a supported version as soon as possible: + +| Version | Supported | +|---------|-----------| +| x.y.z | :x: | + +
+ +## ๐Ÿšจ Reporting a Vulnerability + +We take all security bugs in `wayofdev/laravel-symfony-serializer` seriously. Please follow the instructions below to report security vulnerabilities. + +### โ†’ How to Report a Vulnerability + +1. **GitHub Security Advisories**: Please report security issues directly through our GitHub Security Advisories page: [https://github.com/wayofdev/laravel-symfony-serializer/security/advisories/new](https://github.com/wayofdev/laravel-symfony-serializer/security/advisories/new). This ensures that sensitive information is handled confidentially. + +2. **Empty Security Issue**: After submitting through GitHub Security Advisories, please also create an empty security issue to alert us, as GitHub Advisories do not send automatic notifications. This can be done [here](https://github.com/wayofdev/laravel-symfony-serializer/issues/new?assignees=&labels=type%3A+bug%2Cpriority%3A+high%2Ctype%3A+security&projects=&template=5-security-report.yml&title=%5BSecurity%5D%3A+). + +3. **Direct Contact**: For highly sensitive information, in addition to the GitHub Security Advisories, please email us directly at `the@wayof.dev` with the subject line "SECURITY - Vulnerability Report". This will be treated with the highest priority. + +Please do not discuss potential security issues in public forums or through our public GitHub issues tracker. + +## โŒ Third-Party Bug Bounty Platforms + +At this moment, we DO NOT accept reports from third-party bug bounty platforms to minimize risk. All vulnerability reports should come through the specified channels above. + +
diff --git a/.github/assets/screenshot.png b/.github/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..60bc55fcad814c65fa23b67f4a7cf7a911651daf GIT binary patch literal 415432 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� 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

IbW~0o7Y|Z0aK)hR9~TGO3YoT7fa50` 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�^{opO+M&P;NbvU;lfS5$>i^*p6H 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 literal 0 HcmV?d00001 diff --git a/.github/labeler.yml b/.github/labeler.yml index 0055ace..211fe33 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -3,13 +3,18 @@ # this file is for the labeler workflow job # Documentation https://github.com/marketplace/actions/labeler -'type: documentation': - - assets/**/* - - .github/* - - ./*.md - -'type: maintenance': - - .github/**/* - - tests/**/* +"type: bug": + - head-branch: ['^bug', '^fix', 'bug', 'fix'] + +"type: enhancement": + - head-branch: ['^feature', '^feat', 'feature'] + +"type: documentation": + - changed-files: + - any-glob-to-any-file: ['.github/*', './*.md'] + +"type: maintenance": + - changed-files: + - any-glob-to-any-file: ['tests/**/*', '.github/workflows/*'] ... diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..6e77c8d --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base", + ":semanticCommitTypeAll(deps)" + ], + "automerge": true, + "platformAutomerge": true +} diff --git a/.github/workflows/apply-labels.yml b/.github/workflows/apply-labels.yml index c9b1196..2a14666 100644 --- a/.github/workflows/apply-labels.yml +++ b/.github/workflows/apply-labels.yml @@ -14,7 +14,7 @@ name: ๐Ÿท๏ธ Add labels jobs: label: - uses: wayofdev/gh-actions/.github/workflows/apply-labels.yml@master + uses: wayofdev/gh-actions/.github/workflows/apply-labels.yml@v3.1.1 with: os: ubuntu-latest secrets: diff --git a/.github/workflows/auto-merge-release.yaml b/.github/workflows/auto-merge-release.yml similarity index 93% rename from .github/workflows/auto-merge-release.yaml rename to .github/workflows/auto-merge-release.yml index 084a3e1..8f5f45a 100644 --- a/.github/workflows/auto-merge-release.yaml +++ b/.github/workflows/auto-merge-release.yml @@ -4,6 +4,8 @@ on: # yamllint disable-line rule:truthy pull_request: + branches: + - master permissions: pull-requests: write @@ -13,7 +15,7 @@ name: ๐Ÿคž Auto merge release jobs: auto-merge: - uses: wayofdev/gh-actions/.github/workflows/auto-merge-release.yml@master + uses: wayofdev/gh-actions/.github/workflows/auto-merge-release.yml@v3.1.1 with: os: ubuntu-latest pull-request-number: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 69dab7e..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,72 +0,0 @@ ---- - -on: # yamllint disable-line rule:truthy - pull_request: - branches: - - master - -name: ๐Ÿ” Continuous integration - -jobs: - integration: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - os: ["ubuntu-22.04"] - php: ["8.2"] - - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4 - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: mbstring, fileinfo - ini-values: error_reporting=E_ALL - tools: composer:v2, pecl - coverage: xdebug - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: โ™ป๏ธ Restore cached dependencies - id: cached-composer-dependencies - uses: actions/cache@v3 - with: - path: vendor - key: vendor-${{ runner.os }}-${{ hashFiles('**/composer.lock') }}-${{ matrix.php }} - - - name: ๐Ÿ“ฅ Install dependencies - if: steps.cached-composer-dependencies.outputs.cache-hit != 'true' - run: composer install - - - name: ๐Ÿ› ๏ธ Prepare environment - run: | - mkdir -p ./.build/php-cs-fixer - mkdir -p ./.build/phpstan - mkdir -p ./.build/phpunit - - - name: ๐Ÿšจ Run coding standards task - run: composer cs:diff - env: - PHP_CS_FIXER_IGNORE_ENV: true - - - name: ๐Ÿงช Execute phpunit and pest tests - run: composer test:cc - - - name: ๐Ÿ” Run static analysis using phpstan - run: composer stan:ci - - - name: ๐Ÿ“ค Upload coverage report to Codecov - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: ./coverage.xml - verbose: true - -... diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml new file mode 100644 index 0000000..78b8d5c --- /dev/null +++ b/.github/workflows/coding-standards.yml @@ -0,0 +1,200 @@ +--- + +on: # yamllint disable-line rule:truthy + pull_request: + branches: + - master + +name: ๐Ÿงน Fix PHP coding standards + +jobs: + commit-linting: + timeout-minutes: 4 + runs-on: ubuntu-latest + concurrency: + cancel-in-progress: true + group: commit-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + permissions: + contents: read + pull-requests: read + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿง Lint commits using "commitlint" + uses: wagoid/commitlint-github-action@v6.0.1 + with: + configFile: ${{ github.workspace }}/.github/.commitlint.config.mjs + failOnWarnings: false + failOnErrors: true + helpURL: 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint' + + yaml-linting: + timeout-minutes: 4 + runs-on: ubuntu-latest + concurrency: + cancel-in-progress: true + group: yaml-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + permissions: + contents: read + pull-requests: read + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿง Lint YAML files + uses: ibiqlik/action-yamllint@v3.1.1 + with: + config_file: .github/.yamllint.yaml + file_or_dir: '.' + strict: true + + markdown-linting: + timeout-minutes: 4 + runs-on: ubuntu-latest + concurrency: + cancel-in-progress: true + group: markdown-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿง Lint Markdown files + uses: DavidAnson/markdownlint-cli2-action@v16.0.0 + with: + config: '.github/.markdownlint.json' + globs: | + **/*.md + !CHANGELOG.md + + composer-linting: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: composer-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + permissions: + contents: write + steps: + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, phar, fileinfo, curl + ini-values: error_reporting=E_ALL + coverage: none + tools: phive + + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: | + echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿ“ฅ Install dependencies with phive + uses: wayofdev/gh-actions/actions/phive/install@v3.1.1 + with: + phive-home: '.phive' + trust-gpg-keys: 0xC00543248C87FB13,0x033E5F8D801A2F8D + + - name: ๐Ÿ” Run ergebnis/composer-normalize + run: .phive/composer-normalize --ansi --dry-run + + coding-standards: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: coding-standards-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + permissions: + contents: write + steps: + - name: โš™๏ธ Set git to use LF line endings + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, fileinfo, curl + ini-values: error_reporting=E_ALL + coverage: none + + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: | + echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿ› ๏ธ Prepare environment + run: make prepare + + - name: ๐Ÿšจ Run coding standards task + run: composer cs:fix + env: + PHP_CS_FIXER_IGNORE_ENV: true + + - name: ๐Ÿ“ค Commit and push changed files back to GitHub + uses: stefanzweifel/git-auto-commit-action@v5.0.1 + with: + commit_message: 'style(php-cs-fixer): lint php files and fix coding standards' + branch: ${{ github.head_ref }} + commit_author: 'github-actions ' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/create-arch-diagram.yml b/.github/workflows/create-arch-diagram.yml index abb38a9..7f1b1e6 100644 --- a/.github/workflows/create-arch-diagram.yml +++ b/.github/workflows/create-arch-diagram.yml @@ -19,7 +19,7 @@ permissions: read-all jobs: codesee: - uses: wayofdev/gh-actions/.github/workflows/create-arch-diagram.yml@master + uses: wayofdev/gh-actions/.github/workflows/create-arch-diagram.yml@v3.1.1 with: os: ubuntu-latest continue-on-error: true diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 1f54f84..964751b 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -2,6 +2,7 @@ # https://github.com/wayofdev/gh-actions/blob/master/.github/workflows/create-release.yml # https://github.com/google-github-actions/release-please-action#release-types-supported +# https://github.com/googleapis/release-please/blob/main/docs/customizing.md on: # yamllint disable-line rule:truthy push: @@ -12,12 +13,15 @@ name: ๐Ÿ“ฆ Create release jobs: release: - uses: wayofdev/gh-actions/.github/workflows/create-release.yml@master - with: - os: ubuntu-latest - branch: master - package-name: laravel-symfony-serializer - secrets: - token: ${{ secrets.PERSONAL_GITHUB_TOKEN }} + runs-on: ubuntu-latest + steps: + - name: ๐ŸŽ‰ Create release + uses: googleapis/release-please-action@v4.1.3 + id: release + with: + token: ${{ secrets.PERSONAL_GITHUB_TOKEN }} + config-file: .github/.release-please-config.json + manifest-file: .github/.release-please-manifest.json + target-branch: master ... diff --git a/.github/workflows/dependency-analysis.yml b/.github/workflows/dependency-analysis.yml new file mode 100644 index 0000000..8032bd8 --- /dev/null +++ b/.github/workflows/dependency-analysis.yml @@ -0,0 +1,83 @@ +--- + +on: # yamllint disable-line rule:truthy + push: + branches: + - master + paths: + - 'config/**' + - 'src/**' + - 'tests/**' + - '.php-cs-fixer.dist.php' + - 'composer.*' + pull_request: + branches: + - master + paths: + - 'config/**' + - 'src/**' + - 'tests/**' + - '.php-cs-fixer.dist.php' + - 'composer.*' + +name: ๐Ÿ” Dependency analysis + +jobs: + dependency-analysis: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: dependency-analysis-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, fileinfo + ini-values: error_reporting=E_ALL + coverage: none + tools: phive + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿ“ฅ Install dependencies with phive + uses: wayofdev/gh-actions/actions/phive/install@v3.1.1 + with: + phive-home: '.phive' + trust-gpg-keys: 0xC00543248C87FB13,0x033E5F8D801A2F8D + + - name: ๐Ÿ”ฌ Run maglnet/composer-require-checker + run: .phive/composer-require-checker check --ansi --config-file="$(pwd)/composer-require-checker.json" --verbose diff --git a/.github/workflows/refactoring.yml b/.github/workflows/refactoring.yml new file mode 100644 index 0000000..a70f9de --- /dev/null +++ b/.github/workflows/refactoring.yml @@ -0,0 +1,66 @@ +--- + +on: # yamllint disable-line rule:truthy + pull_request: + branches: + - master + paths: + - 'config/**' + - 'src/**' + - 'tests/**' + - '.php-cs-fixer.dist.php' + - 'rector.php' + +name: โš™๏ธ Refactoring + +jobs: + refactoring: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: refactoring-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, pdo, pdo_sqlite, fileinfo + ini-values: error_reporting=E_ALL + coverage: none + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: โš™๏ธ Run automated refactoring with rector/rector + run: composer refactor:ci diff --git a/.github/workflows/security-analysis.yml b/.github/workflows/security-analysis.yml new file mode 100644 index 0000000..7f3bb97 --- /dev/null +++ b/.github/workflows/security-analysis.yml @@ -0,0 +1,63 @@ +--- + +on: # yamllint disable-line rule:truthy + pull_request: + branches: + - master + push: + branches: + - master + +name: ๐Ÿ” Security analysis + +jobs: + security-analysis: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: security-analysis-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, fileinfo, curl + ini-values: error_reporting=E_ALL + coverage: none + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿ› Check installed packages for security vulnerability advisories + run: composer audit --ansi diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index d23d164..95d3585 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -2,6 +2,8 @@ on: # yamllint disable-line rule:truthy pull_request: + branches: + - master name: ๐Ÿž Differential shell-check @@ -10,7 +12,7 @@ permissions: jobs: shellcheck: - uses: wayofdev/gh-actions/.github/workflows/shellcheck.yml@master + uses: wayofdev/gh-actions/.github/workflows/shellcheck.yml@v3.1.1 with: os: ubuntu-latest severity: warning diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml new file mode 100644 index 0000000..01a7109 --- /dev/null +++ b/.github/workflows/static-analysis.yml @@ -0,0 +1,130 @@ +--- + +on: # yamllint disable-line rule:truthy + push: + branches: + - master + paths: + - 'phpstan*' + - 'psalm*' + - 'composer.*' + - 'config/**' + - 'src/**' + - 'tests/**' + - '.php-cs-fixer.dist.php' + pull_request: + branches: + - master + paths: + - 'phpstan*' + - 'psalm*' + - 'composer.*' + - 'config/**' + - 'src/**' + - 'tests/**' + - '.php-cs-fixer.dist.php' + +name: ๐Ÿ” Static analysis + +jobs: + phpstan: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: phpstan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, fileinfo, xmlwriter, opcache, pcntl, posix + ini-values: error_reporting=E_ALL + coverage: none + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿ” Run static analysis using phpstan/phpstan + run: composer stan:ci + + psalm: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: psalm-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, fileinfo, xmlwriter, opcache, pcntl, posix, pdo + ini-values: error_reporting=E_ALL + coverage: xdebug + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿ” Run static analysis using vimeo/psalm + run: composer psalm:ci diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml new file mode 100644 index 0000000..a085750 --- /dev/null +++ b/.github/workflows/testing.yml @@ -0,0 +1,242 @@ +--- + +on: # yamllint disable-line rule:truthy + pull_request: + branches: + - master + push: + branches: + - master + +name: ๐Ÿงช Unit testing + +jobs: + code-coverage: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: code-coverage-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ matrix.php-version }}-${{ matrix.dependencies }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, opcache, pcntl, posix, fileinfo + ini-values: error_reporting=E_ALL + coverage: xdebug + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: | + echo "::add-matcher::${{ runner.tool_cache }}/php.json" + echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿงช Collect code coverage with Xdebug and pestphp/pest + run: composer test:cc + + - name: ๐Ÿ“ค Upload code coverage report to Codecov + uses: codecov/codecov-action@v4.4.1 + with: + files: .build/phpunit/logs/clover.xml + token: ${{ secrets.CODECOV_TOKEN }} + verbose: true + + unit-testing: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: unit-testing-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ matrix.php-version }}-${{ matrix.dependencies }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + - '8.3' + dependencies: + - lowest + - locked + - highest + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, opcache, pcntl, posix, fileinfo + ini-values: error_reporting=E_ALL + coverage: xdebug + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: | + echo "::add-matcher::${{ runner.tool_cache }}/php.json" + echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: โš™๏ธ Remove platform configuration with composer + if: matrix.dependencies != 'locked' + run: composer config platform.php --ansi --unset + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿงช Run unit tests using pestphp/pest + run: composer test + + arch-testing: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: arch-testing-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ matrix.php-version }}-${{ matrix.dependencies }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, opcache, pcntl, posix, fileinfo + ini-values: error_reporting=E_ALL + coverage: xdebug + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: | + echo "::add-matcher::${{ runner.tool_cache }}/php.json" + echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: โš™๏ธ Remove platform configuration with composer + if: matrix.dependencies != 'locked' + run: composer config platform.php --ansi --unset + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿงช Run architecture tests using pestphp/pest + run: composer test:arch + + mutation-testing: + timeout-minutes: 16 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: mutation-testing-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: ๐Ÿ“ฆ Check out the codebase + uses: actions/checkout@v4.1.6 + + - name: ๐Ÿ› ๏ธ Setup PHP + uses: shivammathur/setup-php@2.30.5 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring, pdo, pdo_sqlite, fileinfo + ini-values: error_reporting=E_ALL + coverage: xdebug + + - name: ๐Ÿ› ๏ธ Setup problem matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: ๐Ÿค– Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: ๐Ÿ” Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.1 + + - name: โ™ป๏ธ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies + uses: wayofdev/gh-actions/actions/composer/install@v3.1.1 + with: + dependencies: ${{ matrix.dependencies }} + + - name: ๐Ÿงช Run mutation testing using Xdebug and infection/infection + run: composer infect:ci + env: + STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} diff --git a/.gitignore b/.gitignore index b338dd4..4b6104f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ +/.idea/ /vendor/ /.build/ +.env +coverage.xml diff --git a/.phive/.gitignore b/.phive/.gitignore new file mode 100644 index 0000000..71d2e19 --- /dev/null +++ b/.phive/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!phars.xml diff --git a/.phive/phars.xml b/.phive/phars.xml new file mode 100644 index 0000000..404a96a --- /dev/null +++ b/.phive/phars.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 28f8fd6..f3417f8 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -7,11 +7,12 @@ require_once 'vendor/autoload.php'; -$config = ConfigBuilder::createFromRuleSet(new DefaultSet(['static_lambda' => false])) +$config = ConfigBuilder::createFromRuleSet(new DefaultSet()) ->inDir(__DIR__ . '/src') ->inDir(__DIR__ . '/config') ->inDir(__DIR__ . '/tests') ->addFiles([__FILE__]) + ->useParallelConfig() ->getConfig() ; diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ed8a772..e5d8c0a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,18 +2,41 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.6.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-added-large-files - - id: fix-encoding-pragma + args: ['--maxkb=600'] - repo: https://github.com/commitizen-tools/commitizen - rev: v2.42.1 + rev: v3.27.0 hooks: - id: commitizen stages: - commit-msg + - repo: local + hooks: + - id: php-cs-fixer + name: PHP CS Fixer + description: Lint files using PHP CS Fixer + entry: vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --verbose --diff + language: system + types: [php] + exclude: ^vendor/ + files: \.php$ + pass_filenames: false + require_serial: true + + - repo: local + hooks: + - id: markdownlint + name: markdownlint-cli2 + description: Run markdownlint-cli2 on your Markdown files using the docker image + language: docker_image + types: [markdown] + entry: 'davidanson/markdownlint-cli2-rules:latest' + args: ['--config', '.github/.markdownlint.json'] + ... diff --git a/Makefile b/Makefile index 09e6c9e..04e333e 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,67 @@ -# leave empty to disable -# -v - verbose; -# -vv - more details -# -vvv - enable connection debugging -DEBUG_VERBOSITY ?= +-include .env -DOCKER_CMD = +# BuildKit enables higher performance docker builds and caching possibility +# to decrease build times and increase productivity for free. +# https://docs.docker.com/compose/environment-variables/envvars/ +export DOCKER_BUILDKIT ?= 1 -COMPOSER_RUN = $(DOCKER_CMD) composer +# User ID and Group ID to use inside docker containers +HOST_UID ?= $(shell id -u) +HOST_GID ?= $(shell id -g) -# https://phpstan.org/user-guide/output-format -export PHPSTAN_OUTPUT_FORMAT ?= table +# Docker binary to use, when executing docker tasks +DOCKER ?= docker +# Binary to use, when executing docker-compose tasks +DOCKER_COMPOSE ?= $(DOCKER) compose + +# Support image with all needed binaries, like envsubst, mkcert, wait4x +SUPPORT_IMAGE ?= wayofdev/build-deps:alpine-latest + +APP_RUNNER ?= $(DOCKER_COMPOSE) run --rm --no-deps app +APP_COMPOSER ?= $(APP_RUNNER) composer + +BUILDER_PARAMS ?= $(DOCKER) run --rm -i \ + --env-file ./.env \ + --env COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) \ + --env COMPOSER_AUTH="$(COMPOSER_AUTH)" + +BUILDER ?= $(BUILDER_PARAMS) $(SUPPORT_IMAGE) +BUILDER_WIRED ?= $(BUILDER_PARAMS) --network project.$(COMPOSE_PROJECT_NAME) $(SUPPORT_IMAGE) + +# Shorthand envsubst command, executed through build-deps +ENVSUBST ?= $(BUILDER) envsubst + +# Yamllint docker image +YAML_LINT_RUNNER ?= $(DOCKER) run --rm $$(tty -s && echo "-it" || echo) \ + -v $(PWD):/data \ + cytopia/yamllint:latest \ + -c ./.github/.yamllint.yaml \ + -f colored . + +ACTION_LINT_RUNNER ?= $(DOCKER) run --rm $$(tty -s && echo "-it" || echo) \ + -v $(shell pwd):/repo \ + --workdir /repo \ + rhysd/actionlint:latest \ + -color + +MARKDOWN_LINT_RUNNER ?= $(DOCKER) run --rm $$(tty -s && echo "-it" || echo) \ + -v $(shell pwd):/app \ + --workdir /app \ + davidanson/markdownlint-cli2-rules:latest \ + --config ".github/.markdownlint.json" + +PHIVE_RUNNER ?= $(DOCKER_COMPOSE) run --rm --no-deps app + +NPM_RUNNER ?= pnpm + +EXPORT_VARS = '\ + $${COMPOSE_PROJECT_NAME} \ + $${COMPOSER_AUTH} \ + $${HOST_UID} \ + $${HOST_GID}' + +# # Self documenting Makefile code # ------------------------------------------------------------------------------------ ifneq ($(TERM),) @@ -34,83 +85,214 @@ else WHITE := "" RST := "" endif -MAKE_LOGFILE = /tmpwayofdev-laravel-symfony-serializer.log +MAKE_LOGFILE = /tmp/wayofdev-laravel-symfony-serializer.log MAKE_CMD_COLOR := $(BLUE) default: all -help: +help: ## Show this menu @echo 'Management commands for package:' @echo 'Usage:' @echo ' ${MAKE_CMD_COLOR}make${RST} Setups dependencies for fresh-project, like composer install, git hooks and others...' - @grep -E '^[a-zA-Z_0-9%-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " ${MAKE_CMD_COLOR}make %-21s${RST} %s\n", $$1, $$2}' + @grep -E '^[a-zA-Z_0-9%-]+:.*?## .*$$' Makefile | awk 'BEGIN {FS = ":.*?## "}; {printf " ${MAKE_CMD_COLOR}make %-21s${RST} %s\n", $$1, $$2}' @echo @echo ' ๐Ÿ“‘ Logs are stored in $(MAKE_LOGFILE)' @echo - @echo ' ๐Ÿ“ฆ Package laravel-symfony-serializer (github.com/wayofdev/laravel-symfony-serializer)' - @echo ' ๐Ÿค  Author Andrij Orlenko (github.com/lotyp)' - @echo ' ๐Ÿข ${YELLOW}Org wayofdev (github.com/wayofdev)${RST}' + @echo ' ๐Ÿ“ฆ Package laravel-symfony-serializer (https://github.com/wayofdev/laravel-symfony-serializer)' + @echo ' ๐Ÿค  Author Andrij Orlenko (https://github.com/lotyp)' + @echo ' ๐Ÿข ${YELLOW}Org wayofdev (https://github.com/wayofdev)${RST}' + @echo .PHONY: help .EXPORT_ALL_VARIABLES: - +# # Default action # Defines default command when `make` is executed without additional parameters # ------------------------------------------------------------------------------------ -all: install hooks +all: env prepare install hooks phive up .PHONY: all - +# # System Actions # ------------------------------------------------------------------------------------ -prepare: +env: ## Generate .env file from example, use `make env force=true`, to force re-create file +ifeq ($(FORCE),true) + @echo "${YELLOW}Force re-creating .env file from example...${RST}" + $(ENVSUBST) $(EXPORT_VARS) < ./.env.example > ./.env +else ifneq ("$(wildcard ./.env)","") + @echo "" + @echo "${YELLOW}The .env file already exists! Use FORCE=true to re-create.${RST}" +else + @echo "Creating .env file from example" + $(ENVSUBST) $(EXPORT_VARS) < ./.env.example > ./.env +endif +.PHONY: env + +prepare: ## Prepare project for development mkdir -p .build/php-cs-fixer .PHONY: prepare +# +# Docker Actions +# ------------------------------------------------------------------------------------ +up: # Creates and starts containers, defined in docker-compose and override file + $(DOCKER_COMPOSE) up --remove-orphans -d +.PHONY: up + +down: # Stops and removes containers of this project + $(DOCKER_COMPOSE) down --remove-orphans --volumes +.PHONY: down + +stop: ## Stops all containers, without removing them + $(DOCKER_COMPOSE) stop +.PHONY: stop + +restart: down up ## Runs down and up commands +.PHONY: restart + +clean: ## Stops containers if required and removes from system + $(DOCKER_COMPOSE) rm --force --stop +.PHONY: clean + +ps: ## List running project containers + $(DOCKER_COMPOSE) ps +.PHONY: ps +logs: ## Show project docker logs with follow up mode enabled + $(DOCKER_COMPOSE) logs -f +.PHONY: logs + +pull: ## Pull and update docker images in this project + $(DOCKER_COMPOSE) pull +.PHONY: pull + +ssh: ## Login inside running docker container + $(APP_RUNNER) sh +.PHONY: ssh + +# # Composer # ------------------------------------------------------------------------------------ install: ## Installs composer dependencies - $(COMPOSER_RUN) install + $(APP_COMPOSER) install .PHONY: install update: ## Updates composer dependencies by running composer update command - $(COMPOSER_RUN) update + $(APP_COMPOSER) update .PHONY: update +phive: ## Installs dependencies with phive + $(APP_RUNNER) /usr/local/bin/phive install --trust-gpg-keys 0xC00543248C87FB13,0x033E5F8D801A2F8D +.PHONY: phive -# Code Quality, Git, Linting, Testing +# +# Code Quality, Git, Linting # ------------------------------------------------------------------------------------ hooks: ## Install git hooks from pre-commit-config pre-commit install + pre-commit install --hook-type commit-msg pre-commit autoupdate .PHONY: hooks +lint: lint-yaml lint-actions lint-md lint-php lint-stan lint-composer lint-audit ## Runs all linting commands +.PHONY: lint + lint-yaml: ## Lints yaml files inside project - yamllint . + @$(YAML_LINT_RUNNER) | tee -a $(MAKE_LOGFILE) .PHONY: lint-yaml +lint-actions: ## Lint all github actions + @$(ACTION_LINT_RUNNER) | tee -a $(MAKE_LOGFILE) +.PHONY: lint-actions + +lint-md: ## Lint all markdown files using markdownlint-cli2 + @$(MARKDOWN_LINT_RUNNER) --fix "**/*.md" "!CHANGELOG.md" "!vendor" | tee -a $(MAKE_LOGFILE) +.PHONY: lint-md + +lint-md-dry: ## Lint all markdown files using markdownlint-cli2 in dry-run mode + @$(MARKDOWN_LINT_RUNNER) "**/*.md" "!CHANGELOG.md" "!vendor" | tee -a $(MAKE_LOGFILE) +.PHONY: lint-md-dry + lint-php: prepare ## Fixes code to follow coding standards using php-cs-fixer - $(COMPOSER_RUN) cs:fix + $(APP_COMPOSER) cs:fix .PHONY: lint-php lint-diff: prepare ## Runs php-cs-fixer in dry-run mode and shows diff which will by applied - $(COMPOSER_RUN) cs:diff + $(APP_COMPOSER) cs:diff .PHONY: lint-diff lint-stan: ## Runs phpstan โ€“ static analysis tool - $(COMPOSER_RUN) stan + $(APP_COMPOSER) stan .PHONY: lint-stan -lint-stan-ci: - $(COMPOSER_RUN) stan:ci +lint-stan-ci: ## Runs phpstan โ€“ static analysis tool with github output (CI mode) + $(APP_COMPOSER) stan:ci .PHONY: lint-stan-ci -test: ## Run project php-unit and pest tests - $(COMPOSER_RUN) test +lint-stan-baseline: ## Runs phpstan to update its baseline + $(APP_COMPOSER) stan:baseline +.PHONY: lint-stan-baseline + +lint-psalm: ## Runs vimeo/psalm โ€“ static analysis tool + $(APP_COMPOSER) psalm +.PHONY: lint-psalm + +lint-psalm-ci: ## Runs vimeo/psalm โ€“ static analysis tool with github output (CI mode) + $(APP_COMPOSER) psalm:ci +.PHONY: lint-psalm-ci + +lint-psalm-baseline: ## Runs vimeo/psalm to update its baseline + $(APP_COMPOSER) psalm:baseline +.PHONY: lint-psalm-baseline + +lint-deps: ## Runs composer-require-checker โ€“ checks for dependencies that are not used + $(APP_RUNNER) .phive/composer-require-checker check \ + --config-file=/app/composer-require-checker.json \ + --verbose +.PHONY: lint-deps + +lint-composer: ## Normalize composer.json and composer.lock files + $(APP_RUNNER) .phive/composer-normalize normalize +.PHONY: lint-composer + +lint-audit: ## Runs security checks for composer dependencies + $(APP_COMPOSER) audit +.PHONY: lint-security + +refactor: ## Runs rector โ€“ code refactoring tool + $(APP_COMPOSER) refactor +.PHONY: refactor + +# +# Testing +# ------------------------------------------------------------------------------------ +infect: ## Runs mutation tests with infection/infection + $(APP_COMPOSER) infect +.PHONY: infect + +infect-ci: ## Runs infection โ€“ mutation testing framework with github output (CI mode) + $(APP_COMPOSER) infect:ci +.PHONY: lint-infect-ci + +test: test-unit test-arch ## Run project php-unit and pest tests .PHONY: test +test-unit: ## Run project php-unit tests + $(APP_COMPOSER) test +.PHONY: test + +test-arch: ## Run project pest tests with architecture checks + $(APP_COMPOSER) test:arch +.PHONY: test-arch + test-cc: ## Run project php-unit and pest tests in coverage mode and build report - $(COMPOSER_RUN) test:cc + $(APP_COMPOSER) test:cc .PHONY: test-cc + +# +# Release +# ------------------------------------------------------------------------------------ +commit: ## Run commitizen to create commit message + czg commit --config="./.github/.cz.config.js" +.PHONY: commit diff --git a/README.md b/README.md index eebd471..a8ea499 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ -

@@ -44,15 +43,15 @@ If you are building a REST API, working with queues, or have complex serializati Require as dependency: ```bash -$ composer req wayofdev/laravel-symfony-serializer +composer req wayofdev/laravel-symfony-serializer ``` You can publish the config file with: ```bash $ php artisan vendor:publish \ - --provider="WayOfDev\Serializer\Bridge\Laravel\Providers\SerializerServiceProvider" \ - --tag="config" + --provider="WayOfDev\Serializer\Bridge\Laravel\Providers\SerializerServiceProvider" \ + --tag="config" ```
@@ -193,7 +192,7 @@ class MyController extends Controller To run phpunit and pest tests, run the following command: ```bash -$ make test +make test ``` ### โ†’ Static Analysis @@ -201,7 +200,7 @@ $ make test Code quality using PHPStan: ```bash -$ make lint-stan +make lint-stan ``` ### โ†’ Coding Standards Fixing @@ -209,7 +208,7 @@ $ make lint-stan Fix code using The PHP Coding Standards Fixer (PHP CS Fixer) to follow our standards: ```bash -$ make lint-php +make lint-php ```
@@ -241,8 +240,7 @@ Thank you for considering contributing to the wayofdev community! We are open to This repository is based on code from following repositories: -* [spiral/serializer](https://github.com/spiral/serializer) -* [spiral-packages/symfony-serializer](https://github.com/spiral-packages/symfony-serializer) -* [jeromegamez/ramsey-uuid-normalizer](https://github.com/jeromegamez/ramsey-uuid-normalizer) -* [wayofdev/laravel-jms-serializer](https://github.com/wayofdev/laravel-jms-serializer) - +- [spiral/serializer](https://github.com/spiral/serializer) +- [spiral-packages/symfony-serializer](https://github.com/spiral-packages/symfony-serializer) +- [jeromegamez/ramsey-uuid-normalizer](https://github.com/jeromegamez/ramsey-uuid-normalizer) +- [wayofdev/laravel-jms-serializer](https://github.com/wayofdev/laravel-jms-serializer) diff --git a/assets/logo.gh-dark-mode-only.png b/assets/logo.gh-dark-mode-only.png deleted file mode 100644 index 9d695eaf02b9b3aeec6f3500ecf9e7c7ff07b063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10219 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 Xv9jl?Dr&&ndo+k^NS&&y4iEkZ8&r9! diff --git a/assets/logo.gh-light-mode-only.png b/assets/logo.gh-light-mode-only.png deleted file mode 100644 index bb3bfde764279c3858ba9540a39292e6f8be3519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12710 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 diff --git a/assets/screenshot.png b/assets/screenshot.png deleted file mode 100644 index 2e2c1f26e60d5e612d557d2a08c995b68ec3a860..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496859 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

U}% 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 z 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%0D%|sd7nsoX;bCh zZciY#-!~WYKF5d)0HD zG{t3-IZ5MZjl9O3ND{>QP?d5Kc6%GSrZERrGc;VikKIIBbV(ep}eD0I_xF}wpoW2{zyN7G_#fa z6x|mJ-=1sBE1YsB(?rm?vDzNEv>o15oC2SR%{MwdxsBRz{56kp99G>%ZF-{p|Zt&|!0BU-gViWZA)x*?m3i3mxa`phfrWO)V6R;BVv4 zc~E(>is5G6D1)i2;%(r=`~O``j6&9KMhZ5+Yt|@I26`Bd2c6@2b!e1Z;rX*Lv1W^& zeQ}n!4;ZM2;Wki>mxZ)d%0y#-Z8&^>MaA$o zj=5Plx`lSLRW3^*dld9#xJQTu)MQbxiSCR?SJEwT`p9hE8H z8b7(U{eG5)Xz}03H7hnR1tt$5Jn}n--ra-E+d7Orx)nx~6!Zw#q@W=gfiBMwQ&fEh z0maEnqg0kr1v4VDzg&CRI0k>N81-dv82oHeowT`FP1 zef!3p%hv0m3(4p1jS90%d=$Ge71}#7q`{G3Yc0Zh=_-ATu7tSm_Q94JQKx?N&h0`G zdLwtI(FcD=&&V9@3w7q9?RK-KEb=W|6i*r3+M~u#ZSWCUW!w0sE-RyTx3&VB+V#aX zM5Z;&a1ViTUqNjb2BX1AE*gh(O3pno1BOuF7LtV2+@^k`TIl!&-PS1dS*0PL65S>g~vWkAnW`T4jn$PWDO3K+mw%CfD2j?2rm{anmbPlxJ!6 z3%eeztYP`dX0QUQ)YDe42M2%g}%qD?G%-2<$wG;&zqJkeIT!7o5 z7(a99J8BBJAx8h!DG8@G4g8w_cqz8h`Jc~@;g?jxI;|Ez?K7}T2nOjxn6D(28mdK|B^6uQdJWbB76x~` zejW$(ri9ymRM(%S$w+^UdHA6ZXH^#89+Oso=<>Doc=;FkTEorviw;j49HI6-H`9(c zJJm_Z<2|OY7@e-?gI{~L@mx1)`lq#T3VUj0)zt&DNuS)Luxg~&b z8Yeqtq*i8&|A#YwpJy-Y1C#nH!hw=JE#_?jVRYO}ToJ@`#@hsK1A;6T7&vwNR|jL+ zx}{}d&br!bmTg-i~|1&DCQ0AAM5yfc4rDTeq_TSUY7 zGp4$6ao&(Qq~(~#!lg7d_f+;4p<{5V3`2c*6{PpVxjV3C{IiXKS79mY-Ux@oaq@7> zFV1(#=sfTt`B!K0GjRc|YM*PHsg-l{wI-@BjTcwqC;c6;9#|#Hh{nf^Z9VyjkbAvw<27D?cn{!H)VvN zHMf}cdu($nh|ZT(M)4LifxcrtZFSPI>RcFX|HyR`Bh=wAcc0A?=ycqvt3|_4EUqGI z)Jk4jIZQ-n5)5wV74wU@hQDw}5wqF%p7gBm-m{SN%!I9~v0!QL3BH^xvXd>rbyE?P zS()`cWEXK>;x7Lwabi(<%fw`g67I)X1KMpCqE5*yGnqGTYq8?eocH|!Gu`~h`E~Nu>S>CQ1%Y#-$_IFp zs;d_F>=&rGwr6Qg^5vbsba-^$d5W!>+K$~9mQeLKDC$N+&tu)rSM;|6s>?Ibf0SvV zo|_NVE|^IS#EVG>uSqU#zXn5%Pa7N*W8~h_-?HnSS!r6X>Y4-6=}f4{p4=!rC)v2g zi>uiBBPb3SS*aaM|G17;P4+wmt2w&e53VfzQ~=}DHEkm1M>o_kWKrL4tKs3qA1wf? zF?iVzPbw+==|+1CI%W4Sb$S26HTa#0w5u@Y5%t-bX@g=5um;1IysYBKSt8cJIYHxu zap%mLnaC|~7ofk?NZ*Sb{Q+w9BiNF*sFc+BGwi|;1l<)j*g)^bCOj|4>3SZ9wEY;i z(8kRcqvp?bk*i$qv>RnY!~;z8{b`Yzd)5U8d7)7?w3t`G{RB?g;%>yP zjxX0aWsdZmi7)>!r=QA~zi+0Y(@9nznKG5Qe3lSiHe=U&M?-k?MK!CTYI0ut&&vxmj*)DO<0F6YE429DfF=n=}CGQ2H|+P+_T za{O1)fo}KolfU&dOnGLlp@T{vsufiI_k8>I>9_04ftznY+k0=hFMc^+CHQ$wazjwp zy)6-a?c9~)jp>hRdXZ&QIq2;HFZ2AkBbiezNO_G->COGx?ns%M_?t=be0`rja0{O6 zd@1GrR9jFfaN>4ip;JJ_*&!kcUjUe85o{exIJTSb&$!h+w5XEBCKJ*SU%oywDq95M z_W@&rEp&*=Q#r4P>%GCs0mjT!P+vMteegv}+qitMFQm0qo5!+WoxJ zP-J!33m<%l?jH=`@Vz_XF>j`ne4F~x$_uwNc_)Ft+M^k)*sx$ z1t^4Fm;xu{yIrIo#U!6mz->q&@Y}C(fXP3^gcbE?6_Mp{_JesuZ&XQMB=3m-2aOY6 za?PUw)KcK%*DE7zP8M?J>#)yfN$ILS%Sj|rC$oa@B+0!92tc8Kr@oTnuFl%F2U&N# z6LZh^bjEXUv_!xjFMoN!`!E>WX_3iDG>WfWVEh3C$`17h=(l`qJ>Cjiqq71b(m|Du8wVv+xM5c$MQ1v%ClNvm z>MgEjR2zv&A@Y-hMiM1*!e-Qa@v=hRvm?31+uf6Z@3jYyP%$#I+o9CHNyupgZk!yaWfEh{sXAN zOjPI*>sWn1gM*qI@hv%}T94D*Ppwe+u#STZ^%iP%6Bcix&V?au9hI!vYdLNh^db0Y zEi+A1m+-Rgho4RBmO ziAaJzWbUH?IK1cX^`)yUtNYZv&HK{hoS(DEkq}*y^PQ%fb(xp2>*(51L}n@D@y}i2 z&)-%n)4-yx=jFT3y+{l~eg0G@IQTiV%MgFwQPfY1b9X-zN2KOO*hi=tC znNTfsd$tA-4W{INjjDKP3$r+tmT%Y^f z^=C!mE-tV&iW84NFE@%!P42O0+j{@osC@nzd68qZveQ6u$Fp{LcRE7p@@r+r6V^3! zz}m_e(#TTYEMFS+?uANZjP8`y10js!|y}O7CygbvB+*MT?w~ z1YFXsb5S?UHbP3q7(F4dyZIGGE_w4cz%Yp>=uz+SJY3uir}vD_u5lB17!mU!-h_9weR zJM&;{?r?G+#3ixTZi994U+Da@mVWZnM?i}OW)lE4U;NO$8Px|_lEDYr3Lxh=cFxP| zF|8|4^hM2H$BOZeWE7@<0exd1>^D@@^xSp6OU*OA9`#MPDNd6KQpzdec{L-}Ole4k z|GEIyS1?rJ>$Hyq-!+a&GnuLJH8b!YHA%2AgCA4nfl}X3hn_{>sT_<0lpoubd11eG zH{^%D31u>0L+-E*J1$vVp(_HmH=_T;_6EzG84|A38Esa)C45hEI_S3VvFsdCVFBz= z&?}>eyy>BmW1zGL5z4_*f4v0%b*rmO_xLFt3CLLoS+l03z1F7WQGFCpp{I)Q?M@GHUmQ`A@-9sP=8U5|Z`L&vj0&bFh^;S$scg%U~ZxXqS;{}i{alFc##%Hz63%_Xr z#IglBXMkL@;Fh<%2GTC4!%py+v!1H|2#Ef$NU${*B-G^5+S8!D@U@nvDtbhP@b7)K zkTEosHBz^ZMqmOa;8oWS|N5-C+GWqb)evK$r35L${ znz1iEQQ8~yg+2iz-i~4Y2;TOuCLa-YlZW|H#W)WyCnxi}F+g0XJ*X6GI%o93 zgR?2`K5rX9Z)G}gHCP1f8aF;Ms_NT^TO`8N zh69RE?#v?nw?5(uAIei$U3cTj(QdNqP*T4C*s4V%xvWmgFr{dG#1T-CEuZWt-!*8> z;(+uiYm^p@y+augmOB(}2cVXdc*{V@{1biFK#J9~(MJJiWdX{e*9A375T4wA z=iog1*Xz3zaPu8aa|cdQ9ai8YJ^Rm#Q$`q?Dx?BT#gee+Lw8|9U@btk1cU&MP<`#x?R}%uJ#Iu zn*U$}dKU)J0S6VpO`Qx`ZV;M(Xhe_!e_n!*XWHJi0`^y5@$2{~j&Z4jM$Mu?MgXJR z$L>U1xMlBV(}2MIXi;(L6K&1yOE*(AUxsifedlW)GXCovc*96!>Ts#Y7fz9>b+T;$ zv8A?&q+_&$gj9*Mb~FK})1}*|?;ZsC$OHZ{1^eR*&LH)$M>4&A1}Ec5saoh;NaZUY zQun)ui$BV%ZJ(y5F?CK@L!Ty&b@OOB>H;p7($;MO=Ca5L#e>$2huXi3(UlLO8{2 zivE)VAkCR-`KG;;j3s0L-{61>jgMeE)vTDz*>KRW9-fj(cQ?Cfr|&PaV|=p z6PJ#h8b^GIquSX&XKtL@dM6XY3GOJxw3(A=?j^XY8_f>@81|b+Z=x@WHH?A#d_?ff zjcEfhL|8Q@rzC>|IN-&)Pg_4glhLXR%ixuQ){w?k9K|?<9LumaE1+fjdED~3`g|4( zyLzIrCql;0bIU@~ZPEHUt>p_Q>{55oeAamdtB#_#$oboOPvwu;L~SH;XhCB^1PKR_ z$bv>F_(~$rLAyZCDeyCz=e*5S2U`_~v+PytkwoKMRBQrf_tF~Iv6uQ>{nWtC50u^7 zwqoULsS%gQqLWLL>hN5yVeK2_i=Rd~55QotAXUl0!{)`loWk???V=SYpWcQtem!ka zP=$FTFyXsUzlUTFDV5a_tnhH(8!g0)xj*+aSbRpe2C24EQj$>&K|L$ElR7C!=v%YB zoNw$tw!#HA0{IZjnB;mX@xJ=G?w;kGxH)c$Trj(Y@yX;y7 z`JIsiHuG0zJ5G9dq_@q544ij^0pJJ+X5d5q zd%>^J(q9VDbp()IrS<#0l!`a)X2`~c#vTZ;4k>-%E3U&@2=8c2*De8s_xP2lc31?_ zv!R~@M2^2kKk%l^mbV~2YF_JLBZ2(VYax%ZxtGubKP6%`Hp+9@^cOs7zZ>dp{TIWx z7#}Xry7ZUremSwM$c3An@tKqE3#%sTX}6qQ!XXMN68K zVQL39W+Bi(gF&f88^AG4>&kZJrb~OG*p&@Il-FGg>3XR)DeTmfeT7E099c81D;v@> z%C}e;_{OGSGXMB4nNs z`)u8Y2W6FqJb&S-t+)ThfY}FMwB+c=39_Pt-ofUG%tV2*q`*fwp8^GVPN2aSXHWz4 z>-)kS`uM_cxnvxRcG$i~QQN>J=N_T;QVqEl@(bD@NI_(f}a%4$oC-0Wd7Ui>t?S2r|>p_N!#2*abTyNDRyASMl{_piPF= zaYw_kMwMZ|!cH5N_MojQUBslyev8ZEmVtm^LU{RhJfp=~iGTzut96R|`e&bpcF6mv zuwDr3uaddb=4brqlwc2?cOoi%*tH?f;#O~Of5e-o01xI3Ygk(G3MJOdjxZ!a6`A(2 zu0{<(z zvt8!Vs(A7)o4#bdMDMVF0C`qDDR$F#{M?|b-tRBjlmzAA?@k;8RK3KJnXz#nh9E4U zCa#i)m+X7;weTNrVy!;b55P%n?%4;LufcYL%$bh7vlTPlA@M(wk7>*fHKsBER(j^@6kgVGi!fW?)fAj z5z=-)hTV&tjhRFM?2v1yx9Q4fxe3MGkqe$Yae*#5 za_Vg|wFTP?x(kJ6P;qGB;`Um!g8hv*_(7q}<#^|1yVA_TZ!Vhu4`uHe)nvP_Yum*a zX`+C%P^33eL8JviML`H1F+ik=^xh$efHWag5oyu{q=eof^eVmg8VI37C=GAPx5bDa9 zDt^z`!W+9=-15Tb9&5lChB5$h;hKAsWix7#Ji3q&_T{pSbB=Xz;|YzPR~e+W_fZu?)QebeWL(+UHRHW1xh7flqs-W9sa{w)r2Q)la_=YO6mi%geS zG>;dUv|>`biJ%{=5jyw$2eOLI%b<^s2b5?!Eq zEoevyH&FmdS71=%lB2;}o5ONq@;3C%`9*-5`n_ay9bga`AJ36==N%D2gm`AjlgJjE z1^&EgV6`x+z!2*Af{xQd@Csdgzl}-wW1{yV^@oTJww*m@fXFy0Osf#o5K}K3G`=G^ zUaWbfx+v>IU_^G|4+~vW!$NTs!GE^l-+vzWdy@Xn$SFe4_PUU zK7_#eo|uNo%7$EI_rKot_yLyxj)Lq!U{HkV?q5-#=pU$l8S2w8f9FiC!PBPun!?br zoKI|WLJlo{>1Bll@!WhzdSO%WmpFV#YCSD0Xy8V@?m7pZTu zCF6&&rf_siG?UyzK$iV}a_cJ~x$S(}tmv|BTC;muW(TN++nsuEYKAP)y z>xG{*)E}SK9yOgRSifgEHn5Ti(DBZ+shDlrnIHdc2wxB6KR(gl;|%#CAaE(K`@q$# zO{BeipRY!1j<{aGA2#0eg^2JT(jO_-1h(B!#xId?7@0i1#a?vBp2xCeVJ(EQ7I16FunS!* zKRVSf(~@D|M^YzzmyV&P`E_H#e?W&t?c(*ti=R@$B=jf#Vn)(^WOwE7Mu;5gw`$uW z>Dm3!-GPF5a2@E*2BxCLbWTz;Q4APn8mP)lVDk65@4DM8AqHVpCs_RYEl4#q)RC z9&_USFQcTXc`y2@CQCv$#BEAIi@(3g&e|#7&%3g7|Igb7d{b{msdMfHP#rkkKePSu(92#5%eG*b6} znevFp3krJ|o3W0po6BO4E$OIy(LC`1HLK5)jHU2D?6!1$!4C+15)Y>SuY>yEbjbg@ zwEov0AMCG$k{P)^Xw-eWqST6LvSBadqAuKp)wm(6o)OyEe?@@ePad4yzaq6~gNuPZ zE7T>&$HKULPG}&@Kf!z7&LXi2~9gEn5XdkB?CWY9y}BS;lew+qGsCV&uw$r5mI}PPECOXe_(nhO zhHLbQVokKNpFxSq(vKV2F;SEcDYU9TI9&|DVwFibRy0KbhOJwniwm@VXS()5lVVup z6vodl%2-{gOl>GPc{QU@oJ$_w_9C0u?MK1Ev|g+&-2Di2R3`RVDdNjEZ9q{5_5Zsa zS&=?9?-YAJX9l~`V(CJD)j~^EYq)wgj4KKBi4t~iD<(xl9xP9ceVCtHAQ}m12Gp~) z1hK8rl&1iMEgzxL5IX@_^m==9wJN4g-J5S&G{&_|EEYe=;@k6XU$K}eI?w5Jm# zStYmPS)NoyJ`y?5y@~6Fgmeap(;rFxvFJt8Hdl5;0V&Eq%y|D98~)dE{=ZqN{+xfS zG4S}c2wWp4>H9Lh_d6xE<~Vi?O?g{d$TI&n=e77w9VG{2d-#xM&_hmEQnvyN-xy$s zncG7NJyicyC~X-NmUI&4`%DqFuZfLLZI7C&)@zEWc_tgH52RXOZq%RXB3I*Ye~8*N?s}ILv63euCM3x(aqGhob zw$@_T2x5kl-7rzpouArE0|;KQ%YL@Q03XWn7KFZ{fQYRm^?A*R!HHLppZ^iF{_o%L zpA@QprWF74cNAfAXv)P5X)F)C_mKRL`L5E5Aa>V$q%C88t|@jGic`n#TRweusU>I; z!uNmyJQ_Ew9q8~bkGM~tK)&`Fx$h+wvm|~tVFZE4wGJo6c4#M1UmmOrW@p0ZwSH|d zZlWKoyRGanQdrczr+dS(icX*53%5Yl6n6MZLNK>V?hP_#qM35SSh331m2buiVL9Q* z;IT&$`@=y(=?+Fgyy7mCKVn!sr*M3!*piNlELiIbhX|L)x+Z*cR0nR&#Ymn-T({cM zwVP-6Hs1sYZ0%9+x2B+{b3WF4&4J=36G7n*gPHYCnLVpq<}9t4PBAUwXQ=aT8lzD+ zi{f_1v6*q?8@k^~M&#zdd3ETgJV<|CO#jD=a+z}=P2swgZp+5xZ@q^$?^%%M9wbKh z6B=Ra&hW<1Om@a$^g{6H z)xr3YSExHm?-a^>mY3FOBYM4nYrW};`;jv zxx`RJp{e?QGz;x@<4pg7cY_WVKVr+)ue15-Z6YX0-}C8WZpl^Ore*nrz~N|U)#2#p z*~HM)2y&@s)tF`ZH>N_ol32dMFUVk6TjmJycF-*;^f+;4*&t9K^GMPAku0u&gr%1X zUT8xDYI`y~D(*QFY&KQE>+gEzDQ@+oKIL!= zpjn(++=&iR^CBjA9*2Z{BQGvO?fq)DX+L1RDn*w*e?B-&M%lMdE-Y&s(= znQr|GzVkn^=YN8;8stheOLNBTRe6SnQ1bsVMV<(Tw)~eVat0NMV9LY7Mej55^0wv~ zkN_4CM`*$|WxGY7!~s6AXLyV(o)1jQRrMHTxA3-JSH!Go2%{Ahtv83>U{;n#_X7hc z*k8+CR_6Jp`bD}sNXSJ+%hURi(Z!Dx4g;F>>)n@??pb^Xf$7MNvW2Mx4~K(zk;XBw z<)?}UvMbuGgy2_Td^s%x^p<_CX#IHyk7)pX~k}F@*vA%B*>5BGS08Ri9o5P=Jrp z^M3`{bIR)=M^vEY6+->Bo!=`yV0T4h{>cKcK%OmCdE#TOMm9FCPrvorE`2RuB>^!+ zElCVg0^ys$Uexw=dO}rd=k5LNhSj%Yg*H-&(jL(&sp927Q0I1T)8?t+0%c5jL*1}` zRq)0otHJcZWbdIp0aFGT9{bq(Smwx(n_XY}TOGX3A)SRRpZAK+hR7!}rOQ5&v*<+)ZC%1Pa7-b>CKd1PU-J!!j(4708;vM2ow*H znU^yo>^%8Uc@KS+@ZAteVyiFzH6Jtb8%*+#BtFVLqQPEL%yOpA4(5Iq@*(YNm9a&B zH-JzJ3&;}oBGNQwrbbVYxl$M1LjP?23ZFDq5Nylq5>F<_7i$CICnSZT8$hV_KF1FN z2({?4JtfqZ+uU;B-ZIZidb3Y*dBO%Zi!+lIAC8hfRkSf$y`e>2pCoq0kk|0XajWD% z4-(67V`Q<}BYKGUyCn(f<&4Mif7Q!KBQuJ4VLMqI(~BpTN*-u~nnK4PSxmLQEvT+o zmYk-$SG$L0eC0G>KRz^WG8fxb@nNh4@v%>ZEWQf9{_S8J*SitF8sQ0~Co76SnB}W- zQ7JAv#a{tv^0XU0ByXH;im;)#26UlAQ7OGCy$JS=uXO?Tw7xPM3p8)ueX^YrW9-4EMJ%JLSyty`KHw zM12xu8JyRL+CZF6CCZd6lFmi%d!Z9rzRZHk6I^rURsfnnA<693oWrfhJCYw?DV}d0 z0N|PNQwJSs#7`9;6=Hpg=<9?BUGMw8satF4)B=uJ5hiYlqE4Rdu0A3Cj;p#@f@qiH zejK4@XF1u0Nx0`6lW=r!*lQ0w6TR$*AY@g&}%S zo017HnCj-CSNX>T=Ugy}(M}3^OexRslHZiHtXiZqTQfaib#2-cObjVEsLU49tD9(- z#(h-r#y=k?O-!B2+`*^2H1~*11lQWe=f%Vsa#tV1lu*{?@RV2SACE7;03!4eE9EhdJ-W zy+O6aU81iwwwA&RQP!&p?s!`UGqKq3o`RylU34M~E(JCD2k6Trc+2TT5fif5LsjQk z7H1DNAyMQf_*RGiK3aYQZrI{Ze0VgB?K^ARt%05Wa+x>c;hBhEHCVXPjiZ{YEJlEh zojQCCcde#M0&N^@+k_=!d*3=p)_|j!W3*n(`XW@k*8{cUyhuZA9wD=JaEt96fQ%;x zzXD*Rc1q_jPKtI{&Uq)R*bi+m1$j?jyE)VNwsL8k@+*r7DPGF9++q0_D&?v3R_(m5 z_4Jl&8D-bTq@b@1lQ{0O7a>H^ra53Q@RhwZ4j_(deNdQSJ6O{Na2mTi$5VM{XR%5= zJc(2i3s&L-^N6W(D;Q>p6zpX#OW3_EZn4z*so|%Rp>d@aO2Z-7B0mfJ{S;AiGr{$_YV6r&~%#;-#LeFNLTf~mKI$CTt3Mxx46P>gO#FJS& zNLio@F{hB)^lluT(D&(aO2SvbOoejncWM}!V(YxyjzL9#1FX0KVD$Xi_6OC0Gv8)v ztm$qO(7o|%F1e!iT@O|1xcU!{Dp68BzSO0-ht+h)`NNQktL5IdaVohRA7M}WInm({ z{&%(IH+t7E-HYr%z<%%DI=$$wF&Wp)U1@rHmn%^0ev_)pWZpB8bX`%?FcALEcwRzI zK~=X1_)Ae*a=TXYgFE{%iq$JXUYIA1xf3Q!)KCZ2l&M0CM-}-5hlm)b8#j9XHh~Y< zWlnvXeZeU2M%Nz`_&X3!VrSq04_nwl533YVOriGk5aJ|8rs6J3Q zgsJ*Kdp#}u1FP>yX#mT$&g~`flyCGi8W=@ckl^(yHX0cOmHA|X{*=+aO*$=ZB>x4Y8{$62?HeCr6 zAAj{pFGG>AJ+3#_j%wU0n)4j{eYy%sw%jpvuMpy&n$%=spBX{bF=Jr73MqYz%ci^9 z=jP--*WdCNkQ(Bd&atLeV>RJ1s2vFl>8X%j+cC2+A@8=tsUTg7iUa^1Ruike<8`7w zHshvYwv_3<_B5pfeF!_R(~+-Q^Mh5EA5YG=pVGG^Kc1eUJF(?&?{29*po8iqvRb{* z-1VYQUS5%+!e^B%il~-QlE!=PC-3*2d!ISwYsdGExo)`>)cZzJ{XWR`pZ|Dqta~2O=`zW+Mqseyz8#{?Uz|tGBE*G;?Z;}e z9wviK-TU^2!JjF7=DANPX92?M?M~8lP}O+K`3~w=<^ncJufsTcn@Disd&2T2i!asYl9c)5nGdukJ}?}}M`i(R%l}oQ zgYUd>An8`#D?ZP`S&Kv+DKUvInPhc!U)-Q5D@gvf zHC7OGxHa8>=6Sp|*|%l_2bg^eruz)%f)C#{HvXq|CQg_#XhXmG}9x0VU@C~x_K}GbM4!GB7Smkj)t1b$R zZk4>TD7_)K09^dmYI{8YAufnqxD*#~Un)Qm-&X9gt7EV2?Ey)ss83jb9%@go_ho)ar^5llUOdAtUzTT2Ejm?JdlDz`$bm^(&%x z5DaB^=)qVEYiz5WDH5*K)=V`N7x-KeBW({K_eFr0Nc=I3&%1zasBJS^b6O9kwNa%T9o-juKM_q~A!^d}P-)Va`bu>ix8)Aya1EUu){ zidNK#L5EvNfmfsMRt##!&@7uzN{haKt^9qioW`wqmbz5gqoQ!1{o<@-!@LmccJl?% z4!sVF$Axh>ZO1CYW16x}rM?H93a96uUCqw4>7Pr9F{nMT=?q+xya7d-yhg)PqeX22 zn9svu0(CP(gcspP$3ohrz3Fb$$9deya6zu`(=%XIMdDR$?8t{@SeYGRde}N@=ObZ$ z(l^KTwez&0PZF7(*~8Bi1rAjn5nuXB;THRKt+s}!M{Xm3ssZq&tXs{do<|AUf4u61 zsZo(oo@DR06=4Va%6&b-M&Tc9&S`o?e0_fP9*ma)wA73#(Loun!wQ{-o|BBlmKBYx z-%h5Fq`uG#<`Cdly1ZxhRJD$_H%xq6Q})JJrZTmRbsd!U1nB9}f>|^3^R>q_R^U_I zu&C>F@7dfF7p10pU|V~Va>)05Lyu<`Po~ZO<-nYWI7Nq79o<0I4*4kN^@z`V3rOwP zf;(RxHO0d|l)l%Q8M+`}1v@|71fLVKWrzc$1R1G7_RP=l6Tex<;qtptb;q)>quFj) zv6oK=($zCetu@y@nN8Ezdq$*WwjF>adiXtS7w?xq$FJ>mZDUiO5 zg)xIl-4_uKT6nKE_YV)=%4yrgsuG(O?1ZH3ov&@`z>rWP+_9eQGJ&B(nUOm{X zD~05dy=k9UA)PJEAD#w4Qe|fgotEHBtyxlgmDBKS>+9lDQenU{(m_uxoFWPtJD%0v znicC%f&<>UHb9B2mb}khJRWQb{K84w`zpQTlIP7-|vQ-9& z(N^Vt4W=E+)I>R_+eTk}4yO0<+*RxD2L#sQ-ALwG9Q()Ix)KEuD7HjfTFE*t^$9P^ zxaaeU1?WK6+8SuIF_McAWvp%@Kgr2)$5X8^N^TG>*_;s z*AtrgQin57*ETcymj*izsMz(PyDV-~qm=s@h4Y6dLFeAn;pGVhku1&VC5?>*tMxY- zCW=y9xPuawFo=J=B? zHp#z;)aNrr^|X<0a}Hsoo!;@%`%;@_VJzOAMn}KFDMdUaak5~t=hj6+Uw23g9g}@4 z=VxnAymIzCtR`0O^1waDji}DQG|}`U>yJuEqrPmqg4f|&Y}36Ez3R0>@bm`KNkdVa zhW)qbgh}!b^Y}-#1vF%fz@p*=Iz9z9%BQ#yKnoFvJMVo1ZINccsfBcl*57a#gN?UK7ds-HI5l>vWFa3?6+bsK7Vzxg*^EZO7>|LvdxAoz|p5PB}{pwL9v9Q}2#~upl%BoiD`21~UiM6@jIH)K?jZciG*(a%UYcar9 zi7c$utYhPwB5SNyff>)dk@Uc;xw{~WQmVqby3k}}vw-!2$CI953GV4AefqnvKVDQk zAE>b|52rxwNiIvEjn^?9N`>b!%Xyow!WDek2K?;OeQv`JBCE!en0Owj7x;nWH(Io2 z^8I-G{)OKDhWk>E(aS$O2qZE36B@)}+~<1%8*fq0(*K&@DRBin`H3%9JTnwp+=D+* zume*p^;gbeI))mwF>9<}vy&a*N1p8txe)N-H;^9mJcfxen)*G@>LC35?e=81Xh-=g zJ}IAJhOCpgFy-%+vMyV}%!`#8Rja=Qu*=bt#QjXo(&aRyYqO&%y0|a*VJ6SYT8{|o z-7)E~Fh7r5{^W;0X~OvYsh$#<-P&>N*=i-?w`&r3o96=?$89UGBnNAN3^wQ;HsAj? z+C1rG)gXuyL1?hqu6%!TAT&N*3;*I;Y+cmUe$-;(`_?Sp*^*P9Vb*2*W(5MwXoz{g zw#_`x_nQ>m6UD9aed5U)>?=#DPufo3T0>LY{_wIdIsks?^^fxkHN;zb8oa#=)Rjs3 z+H-3*dy)X80f^BasfumOUtIq!KL1IK@*ZB2@pP_?PxX!P%Jf+puj{VvJJv{|tGjb4 z`x@dZgj*x#R?`c8)~#4v78T`9-|p{31A|})i?74`T$FQn>Z+DOb!&YWj8wKau3z^( z#QD*q@z9h|6fT>{;}IPA!7x@I@NIlKg`lEe9{yJM9Y$tY$opC88ux{So6Rd1ugQEW zxX{Qdca_6Ozl?8BJ4p+9^?6XvZMl`9%h&g{slJSSl{|W@=KaXESHY)sO&$`$s&0tq zGqhBO%iJH>Xa)`H$EIrF6Ht!nJhEpjL@Zh=fW+DiY=so_GT%+!rWOvQwp}{r*}!x> zbwtj5O_tOP6O(*P3$BRqBCE8Q{~;{z{s87l=wsOS>M5L{N|q3AFu!jSYkd^tlL>T9%p>}fL4?aIR(XkjLY7IV^5*KHvXi0=@c8#R2h;*~i@{Ht z#+a($V)Eaj04Gt~BW)gvMBRoI2h`+w{ozl*emM`GwEac$dTJ20Ep|td3GWl}cyHNJ z%4O4(g-8mXDIlJeZUNmnGq!-9wk*{FOU%r94_qHNcRC5|D6Je9)Ms1^!}3SmlHF+* zDDgT^**VUKAijM)q=WmeaT1?}MRC5E81=1tq$vWCch3X7P+B4+reu$&1@(2R{l#}A z#Db&|{qtwruQ#U3p%qr1Zz)n0Bwe;QrFyAK7U5RcBc_DuXqsnqPj8`YTK6Lh&z`JT zW~U?s${w!Jl1%78S$Rq}0rqovp)l$~3lhWNez)%M#!z>#vdZ$6cRfNMctyR6UV8dJF`b!)0CO_=;5yFCkW+Zltt@DpsE{ zOqaZPHv?kQmP*c|QLG?Aw)od0qTLgz0I2J_F%xk!{_d;VM$}9Y(cr$%_xTPtzw#r_ zXVp{=27juRwOZ2mTAwbuz9gd^iiVL@ZC0oO!#lG;ldQ_4)8mpB6TJuK#I>Vs4|Cz3 z{FSpiPstwUh+7q+kM-udBu{-9p)OnB!<~w0*J4Nvn>5FBHp+BZv0ChHAc7tg!oG`% z6eo_0^s*cRw^}EnF_bOf?(Fw7&x&4GsfiyznY<=^2WcKgCsYB*e8wS4jU!e zB3yl{z)mV020gP=)4o=SN@F=#UZ%+JmpvHCck;N^ykS=qMZ!#^PUh=9+yc5iUHfPj zbIBMD*3@32QzxFDqHugIa_{WP%1~I}D@`*On&zDoKAy@`nc(;!>!QUMKrn^BcUtQ$ z9rkt82`nNUI z`TDO+$k?uZmQCih5w^yRb65>w%H_W2SdYG6Dgo?5+VB=8Em_2pr`g{wsXnO}IC#|& zEPTl2YY9mu3~P`VIP|ERWW(_I!wa7%NTHn5W%p7xr#+a_7ffcU87XZDBSQsnHF54ztwAiB}?9GeF79 zBmXu1q+VEC5_zVG&iuC{;bczxVnb!g4o!%4I8^ZQ~eSck`C4Z6$ zJMSCA9dmAPd7jt%=E^@pzE*rO{%BIeKDP@cJgbXx4c@9bjo&P&G_0((MP&&O%fk*< zdr6&(Jw8G9no`G`^W*L#$DwoVb=Bu`*q7(|_uv2KT{i4|Ip;vf{Z=ctUoy#aYI1DS z*L(LdnA>Y8a|#^v+v$PpZ;bl$yT5g=u-A>fwVFo44^9P-EwUxkz$nQy7%lr31t6Af zxTOC)gr@w@mAeqV<`D)f9tomu=h>;DU&}B^T~k+qr~Pd;@UM68JD2A_KC?92d)w>O ze5>hHcKwt_KYtZ;ZTvadGe9z3Lwu?4c4gH)?s$n8#=P8IJ}Zi`smv?7f&^1#kZU*0 z+Fyu6#vvBAx1L=n%?SM-Bbi=j5n|YYv5KC;iA|2>C|`$WJe7%!OuYFlzEd^sdr_lW zpD}7ALRRLRGt!`OAzdYeI!_{^!n_hEE5ueoW}*e(yu!xia7DsJ2J@`ZSOE;Iafu3` zbRRaQ6kE-_HQnc@`rIudV}s5vB(^@?MO&ijU8$RWDyA)tYq?*4!;D4(lOln62Qdtl zxp@a8$^-kV;sYhvR*(OXJHW2GX@XRH27#xrWJq@)BH-tU_{sE1?PVH|kMl8AVLOs% zDMfOU~oer=t?&48k7P>{YUblwqg4k`!y zo~L9_t&W4g;b0f}F0IBL^iVo!2|12cRpC<+~is1s*VNga(}rt7G=*hP(pFhAJk8Regcr<2tkh zPe$69mK3Zvc|#OICfN{a_9rw1tqz^NI8fq@eB)r3EWr6L9*9Z3 zPR;cx+*rey(---kWK*|UPwInHE$)@?Y&M>Rad_NVq`dsNhyno~q&wYfvm-=BhtXqP z@-J2QCE8hRkQOG)SntZr+%U?t$Qzs78{P6eDoFtF{vgALRd0WnACpQBiQVHwcnxw= zv2s=`>ciDDo7eK+ENor67OdlUuLG^?yDhT$;s@MtW|7DAYfY)RuA5-U!^JI$i5$gcY(C|@Wl_&8%EbW`mV;C)drk9Z^a!A z?xu~l_ijVBO?qrD^$}a_Y>qbdMy)d$islHD4uj+*66VV=+=M)I4k3O3y5+Nm0SO%d z-fhe$6w}MfUen-IkD(OzO`|~A`-E}i&&HnSEbi1A=ULJb1?maf8CvFEYyjV@7Ek*+ z{or8q-9Ljv#!0n6}{jrs zBb015isI)H9$=Kn!TFr`>~`JqS4obMnQ{&?qX$+UYb4*(uzK9mf%diG%vYK`L|;1@ z&wPu=^X>(JSx2P2??2Kv8`4*|1~8y62fE|XKzu=d)osMXor8+|gWXC#K+9-DEeTm= zFny3SAw2cJIzrTB`F&(K%v`S_d=VCO%B)Bb>ldNnTPk0uT`2va2~l2Wms+eDg4@04 zV4=WTB)-{wzw&ycwT&|E_B^+5TO=zC9S>><&44QfX!vv^Qn8_d6dX`&Xn#^M51php z^T`?tC>`v;;(-*RyWQgP5_%G`f-!PL8|yc;3v07x67wibRl_y zbxURAo|5@L`*Tj|tene)`l|1TJ=$E|u)&_s2|lwyABX6loAbOsrc2q9()_G%@0x~C zisQ@>xM7478hg_sF1`17tj6kbqT~t-lWU7h!;-WXf2LVSM8)8%>^D6T$<`zDJEi?$ z5l_%3maYw|hh7IlRC<8VL5GTXDKI1{Er!Uv4^j5h!A-w)Uyox2w8rfn{|1I_%RysX*XA@YRpVoUZ1BSO49#@IS^e& znEcQxWOikHKgTNPFLXZQ)l77!NF>LXWrM zSIS}{M6@F#w1xQJTAiE@TELYrW`29KzEpWvVwLC4F`eO<@Fa`t%p~R6>Y}*q%$wS! zp#ykw9mytG$U<@i0$6mE;H21M%ib5^DxQ5od3t=D^v`xPEp7Fc~ME!uoHw%Lkf- z)Vglj0+xaX&ynq+9DrreT2IB!8LVr&+Pf=oO-t{R<=iKm>54E@s^rDfO065gfbeZvLKcCbk;As^_&B9bCcv04|@wdF5!MjC#p4)}^-q0w#|KZw2YQ~&vg(2@+ z?(xxJC+u&iA?diYUm1yfTvz-cK)Dz9FkFO%gqieFW+l^kRxy!VSp2hrk6jtuJP`|m zPCgWF8?WMvOO1x3)2Lv*02k?s)aJUPBGjbuvDAa99d_?E_jBV%t*8$&i@IY*jdEW9 z=#uuO$p*37$`Dh^H=E5K3v=9ZOWOH;_n^~1p%AshhOOy!t*~FcnTQ)>61QsY7%PMT zB8xrSIaRa$t4dJy`#6}j)Y9dT$5c$o$C}n9s3+!Yn$K^_e{q)xkHN+;qP!o@5*KkWZx(0>_aYqe8~3in#&V_JqW(Dz(Z{faC;yY}_g zdSq`RfhM_NTz?qYVzqea(=lVs!}Yz=%6#jTY8QW4#;uY#HQ_65kt(ZC>Vcp!+W{|N z=Ou2%wCxYUjH@R%D_0}TvQ-|J(i{`pe){gFycXIa+_~hQ^*p<;Vlvma=zYQT1a2{< zzhid9jlXhZc>FVI9Wm=xc0_#sX90ynl zc_dT6t%~`shIO!n9tLUNdeRC(d{{%8M^Yc3Z`m>t7Ec2m90ebA1c8ESWK@w6nesc{0)@4aK*_TR#G?&}ER?Jt8SFWw>m z%uTN}?4fTR@o-yevs@R(zoMBn;_$VWawC6wI6~?yevF5%4%99smPS&m$~g zg9qtJp#|zr1^DkbIGPK*ti;+TLNQbYy2f+EkyOR8!PJ7e!fX{4|KgBZn61idh_tozDv-w(7!{ zdK9aJuiNoNg|D*9Qr5daGaf*`St31>oiuI8HJZz&P;K?6~LCILd-j5f(qflRXSQ6#pDM2@ULbK{{ zMgm~;Gnl?&_Ffc>ier;{DJQ}}^79f<#Q0)^P=uVyqr7<9W;bAg^JP`60-00))ZCew zLnVvrFS1o%dOT&y4UvX-8KAoUSDjDC&T}$smU={{a!$|Q7SUAe0~MG$Ffa7hNBw>| z?{Mxt)h_Ms+Z6v-2g@;m@N}$i>z?-$854{ePaddfGDA_>Kqq0FtWaR!_I#8y@x^?v zKA#7fk$z%@wb{m|uiT5AO6-*OVu@qKP9G!b7&TeOzN0fZKJvy1A!B0z9*RDU`hAeB zZ^G)+$&ES-)zb4#ITW~(lV8N@Ln43a>Z;6E9%Oi`=r4#=*(Z$BiQs^|M@{MybKvj6 z_MTfW8=}rkm_mY6G;V}{1x$+PPFde2o^D;1Jk6!aEt&>Qgm)^b=AfQhHdCo%Zj)Qe z74vXdu@10sbeo4e)twmiWg$}NnE4DlPE~AE303k`fHx5K$&WBCR1+`Yms%>R&I{|e z1D5=$W&|oN(H{@RJ6~c7yR7bK9;uAOOj6-*Pra0VNQ{5QTV95JPPdtMRo#X^B#!ktX=|;5h`Qw%tadPwA|jdRHvtoo+I~VD4vp)F1w~6r{j-i z#=A~J9r{vHja_->o3CI8Q<bOoA(Mz2SwER_Jfv$ks6|wg$n#L5ujk}G4KsG*vquwD0gw6JKpP=&zJ2zjMk1vtH z0J>@fzwW}Z1FQk*VmEF%S>4p%{}NODl~5O$S--Hi!JN z%Vf|0ty22C#m#=HOC|t(w64uuS`nM=-=kD5v*#9TZ_M$UkLIukam!Ezh8^e+G?XMP zwzGL~VU?GEw9u#BLwUE&=B74`T!T$&@(8B`=h&%JlK*@mqxgr0foP{6a{m_$&IoKm zcjamC_t5(Y51KkY(UlaH2=H^X&}bc7xGH}6Yq)M{&BvEE!G6ilE>LS;P`^~yK+&4= zhPos+*I-Hq9uBcV>rN}&X0>LdlKn*s0-=vB#ozDKUWSJ2Iz2-y07Id`1Y-ei@nGCa zCPHG1^p=OrNHOhVph4s2wN;5_>v#t=deM=%J6? zB6?ju8HMb?^$dVQNoTAbk)ppO72fE)NBpJuQp74Ha+12Ncgn2@ugMJ%c2h5U@@pU3 zMjjp*@D+IBis%}a?a#_A#O=~|Bwk0H7Je7CKp!g0KNABUtB&oJw}g$!?^cD$EEF<> zu>RHlRM^l*_9rzi8}DtV%PaZd`nzShnnZN|>i9#~T1PuA*K$={48KM#ozPp;XAAje zb)e#&!dj4aFD2Fj==@Cjs+DH4BF%wKm@ws6Y&wjUmZMXMN86S{^``Om2FLGpyo2># zmbt=>+eUIVDdc6_v|Z7$9Jik*iCK;P2HHe&uF((%u&k7@r{3N{L}`-CJ2&?=RRiln zU&_U^-SZzznWYJ~+_478tZ9KL8wd5onc zt*P^wkWc^HgzwMs(h<9I3-Dn_By(mg)>FGnRtYw|2J9xVn1#xdTj95$N`w=QFB%Po zz3wvB3(aL4x~>yT%CEgOU~P>$Gi)yCaaE)8z2`;hf>S5_h3$TZCIb^_e;HA9w&+jU zHt|+AR{31GF@J<}ESc+m*KLop$RF$h5;tFjJ$-#GRQT!(*N^hxco~-l;Hg+lW=D#{Fn0rC$h%PZB<8yMD}#oU z50u?OETl52lToMB{mT73`tkyc(}VhBz~Z+? zhodF&Vus;*9wFIJETv1D=#vRz+-(^mcQ)gsM#pOlp8-On?6eD<4UQj{%5op_1ynSq z3#nn^k&PLkWI4JEu|vy9;w8-|BY*@YcwZf8KV#yBS&+_*sP>PnX#quOKb4z~PBi|q zcmWh$yarxOwoMDZ)EU9jJOhj+jIMM1i)yp|1shpgyP@Cyeg`2g22R$Cmi? zi(i>;TzDkWHX@hsgF8}HjXV_OqIAPXNK(>IF5%KOwX$Jgpx&l@ps9!e$ue@{sR^A= zq2id8_#-2KuurSJY2MyYM<9#%2u(TPofwTX3;5=qCdh$-DPXq-Zi<@)-U!ZreIqzI z+2r>o%~MJ`KwddfinQy>&)LS1TCL5pf3BH-Z+0w%eUd8ywqN=^e!}c^g2}Y8_J)=% zCWCbIf%Q|=zy2ti9SmbJL#GrOwDdtD=@PNKmMcwEPqTrx1BlBss=X5rU<-mHb!o6mMmsS;dMPyw^`-k2g-F7rE!@wl4q4F_1z3rs^KU?aMz4 zLVj)kvQ96dm%z}pQNQ^pZ;-Wg;gj(Xfx=-CC{ict_J_8wLd!3%2-;w~<0}T2;|af1 zDbahDMus@6i<;23tXNiXTO?x2${hv)q<-TkHvlQ`$G`qtX%GCmKSXIT18M$3h9#}< zdsoh%v*$5hDu(Axg|@l>NAZTv?LR{lniRVL*o*>$-@LzxzkueAjzCtLy-T5(M0Q|75qA)v!EuTrwdC(IS^UChJ% zgqkqG9;yOziR(^dm`Dd88yLrs=ru>xq@gAabK{%TgKSy4sw##gOHIq-y{Dl*S0cTK zi5KElMIzGPgyuO6evM3J4h>Xs5O&^IQTC=5dgSx+t>w+wZg!Rm<|hTjvOR6^5w83= z4*{@$AG(rB-TH3{{C~I{{_Pl0MEtG&zs|ZoeiOB@NPWWp%&faVEt>-NS*;oMl+f&P z=k&+$wh{9E5oR|dmda*nNVOwP+##29-F-j+F%^Q-3V5xsVyS*&i`*g^WO^og;auAkI0FTgrI}DVK3HlxPz<7&}XC#uRbp0(YDy+ zw-`q8iNYtBN>X^UwM`x3#0%cjfMO?_s?~Xf#Y2}z`8}tAW-^i5F?g8s=M-+E`Eh|) zDWHH>LPI*jSkoW}UAME&*gsTrMDivG#tb!HxR`8>iTRPC5^|rWQ&s2__s=)6-B044QY^vX^`Qv zJS0(8c%LtOieD^sWWM(ym~h)4eq%2repT0dGFB@(Q(yh&HF<+~_isG&{|SkCf%re{ zy;o3^Z@c!5f`Xz{1rZ@4(wm4NJrt!X2#A1`C{m!gu?Bo@dQkYu=4-_nmnsBknkcx#vEw>uksGXu%CN*cF>6{rYL97AWgt z(jBK*u{nC9KPo%%nI`(48}^I$N00!b{X;C_U2bE$9(1*^h44q6tw-C95IrXf-Z2ZY zHR-7R25A8{f#Nj&$8Gq(54!*H0KR*v14>(J96e};GoqaC|0($YuTk*x>sI-#e}fTK zYXfF9(xnMMwXU`mA!_FY({Ty+0ZqX>xLf~3L-7=y?XQ2{fX6q=XWG-pYynk_>^6Hk zcbVf>Jp-K=9}6Zo?YZTohr;sotMP1!y2^sAfFT!fE{<}{q#In zJJvi>3l+rd>l>W$ZL0Wkm8B_*`Q#M*$>j<3%ej~iET>!B3l#8e<)Z&`aQufEPyyd{ ziGys0iKw45dz-C2#1SPJS6mOjVs*n(r0x9=lCB}o@0fsHF=pR9^RkMZ0!by;VeP`k z?XM3dy=JATtUSlvhK2eeSGAp&9L^}MvXLHnVbJScPgfQU?ibBDK4$1NLEb z!oZ`6rwt3>9ln5DjnJ=h=p+22!|qET|J0vL=>EYus=Q*VLtdaoIY4kOkl+n$=-3N5 z1$Ox=X;o=xc+0c)sPsv%tEt8_-yrbQWRH{2v9i35km}2D65uEIz3AOPv;rsrdDtc? zB`>|@Bsx>|^(WGZ6aFQb-lX+azc!#;Kf`+N0_ZI`zw;U8v6+F{<@T^|+dU9F$qa5( zH*xsEhw;M~Q7R-;HbZY?UNd`*3-@+z0F%HnHp`jK$lGnp#CWAOf8;Pd%RB zN-IfnE;eMhyODM$U+}ueCPKpgX@^`5`?C*WQlI5eH=Yj4cN>Cg-?c~bd>$LJ4>#~z zb{Z^z7WMFsr-ZO3MmHzT=NpnL%q&S2$uGr|w*R7nT44X6g09G4)qcbBJBqw57?BRR z)-pPNsgv%!`+M^|aI7aYhWQ5XSAszPZ~8K%2PILPC0FT3TY{O%r1$8GwrIpyYN&jJ zR{Gn=l0+#<9H0p)2~ctA6o@t#<2&6$4y3g8!)EgR;CsW$_=RKnVg;A~h+g&no}sF(Fs-9D z1aTH;yv@nWc>D5{{sd=piX>~Zhpp8+y}iOD=3`*flav7Q^_qz?h^W|pp=phZF_O0D z58d*pW{u7HTvHtjZuszGw#-x5aSNJ63&94+M(4}Pu@P=MSvLkD(jK?)INy4F;jA#r z8M^Sf&#^qmY`fd{4Xypg7;c^twmkaN&!I1sxvg1yqZ?T(79>h#3ugq|0)&b$g8@Tu z-r$AN*3X7Zy%oRHK>3}Jm3Lvn99vsvA+frO3kVgzYg{dH|8DW!NucA)U_M;9&v4gm z7+0%Iyy1fToZoU3J-2;PvKdI4p5@=qHY1|;y}{3)wePO@{kA|Cdu9MYdT_s}X z+poDFFr$L`&&)=dY&OwstWG70`A5Pttz!=#6xMD7prO8eIT9;4Je+>-y!tyL%R8Sw z@)hpEb4hT=0W;qhwEhP9prwt(7}CQZqn{eN;HHt?#qypF&A*>RbUj`>^i zRL{}yU4XQm8I4^2DMh(#S4zk2=`z+D_=EYzrsM96CX$es3p`!!_qN?26~F3aq~d4K zZf%l%G)Qp)Sic((0xuMRhef0mZ^ptUjv0=vx&Z>!yIAY1jG55pr>OXHzKC-#pRLdh zzW=CAD$g%{uLqA66sIZYV+vZmVI8RU{^rA-xei-C!q7rke#jBa0{@gQ^M6 z=9wZ&YdtnxE$^h0)6I0EWk<>dLx`26L?M0C8rOkePkqdPJ}v3*=fEHxcPQX3V7IQO zut?G{UkNekg z$rO+)hJo$89w0Q{1ETKDgUh8PD(W^CAIc$7bPT)S&~yAICig(`C>Xnh47DkPc8}M( z0alX@`fs}kSZFN-H2}=~F{52i>zrKJg$&9`JBt!Be4qSw4<0Pa!*F-fXNXdJA0@3D z?bb3%eF5%QiNy{FK=Y>UNiYUU1$K1FZ{`25meF&sdmu!BxNiD>?@+Isi@!eL1z26&@nK88KkYPHk=As5a7{XImA%DkJC$ z?Cb@uZ_HwlUDSzGr6^11ZxfZxNMaf+tAh&_c$`!>blVUmtLRs~F*#a2LQVbra9pl- z@#&g59z|PXh)4MiUNjqz0yRTcZ>?5ib|^jMkW0jLU&;G9-uG4D=g;YvBpp!^OUExw z$<3BGBF^lX&X5pGf$9Fo=f4N!4~=4!;Z=7a|45I3`u-|?n4ZR=4u<+30(GLRlf_FN ziU!=FZ`dT~9h_OD{x z)&x&N#)fQ$q%T1pbLs=@svR86%KHU>=eg;}E5h7Clf$(EHp5bHaR=Pb{%%R*nl4uU zFTuF~s~TSvH2d3LK8&yfs78>gM~}AdxP~K-TRX6L)y4%wx%K0N^T*r3%7m-|^>?i* zUUdSuPjGvfE-O=>x{bc;_6y=(ci+4CcQnmI%R6;bfV8{O9i4l!ls)@g>DBf^{JGq}4blb{;V70VM>OqU>PM}m`%xnMohrigD_)1S((&;$S(mhytd^a9OF*wY z<>c)G&p!4*?7!!8mllV+bcbn~4%05~9whs% z<2ZMl{k(|1+Mtl{f)6vy|Cr1KEX({xea)VWX0xM0Rl_Bd=}$t+T2_fJvbun6-}?75 zkZViuL0{w6@!{O_{Q<_4nuE8^CW+B#t-CdVZ^#F?rpdUGAEELBsS6RCV4d}>|ak|kighY7M_=x2zNBYC1oL$e& zCVbXQ#3Z?aoe24F0Q_*Zg=bbcvqMNc5Flk1*@ ziN;~=Y2+#W=K^ubrq}3JkEWn4J z^z_J^%uUbZOgoA%?YsG+6bw|mnNbhPgY#foW64M*dSu{ zrFWMhNu&ZHA$^GxSp77+pck8{h+4^~l>VlOEQolF&sxsA0Iy@!zAxghr32fe7S`} z@ty+#)is2HzDC!I$TA-j@@CNwxt&C~F=Apbi#}v>WXds=`=Hl^OWo$$*IJ&Y?Qos- z=C&vQtho?wdK8yVmdt6TJIt>go>0fNrpSod_>m>cC`)*zf7O||g~tb}#HM=13s*j| z{?MmHCpb{;0h`VYN1m~*N#bU1CFOsr--8;{VgdO(_0w1CeZmK;DCg^uH-PI(PXhqF zm_sJeN8QnKFaM;-4MH$eTOdk#qRY=%IqA+(&f^Yw=0mvlhlT7{A>)1%o@U|KVWY4w zhUw17WM-cm0k0)CM`d)7z#>CHK_=khvU`98mMd`APK^2#*LEvIXwRC9g+fvnr6rr@ zCq$Jx(?~93Ie66@`uK^paEdQy;7+WW%z&cHA#y3}I108%^lTf*?MU-$#=mH&L6~!;5yyGN&$=yG-`yhFr zwUM9xm3vj_DOhl=808b_Wa51cNv<87cwzIvH7_Sl9J8Z*BQ%SYTotk~A56+$a!Y)8 zmLzgohN5s77kb{pHl4I~QJOE39^w~L15&(mRx+@?>nX5J#(VUQpP~(N^E^1=ldX7o zcT)K;W`uq1X2ebjZP<<~yiz^+P#Z22^5BO{e~Cp^42aWr3q&tu*_Uh~0dyxqh@(nxyCt94@7#t*oESP9O4X z*>BIAt&h6kF&;h(tJ=rt1M;)Lk*gpT)g9Fnpa9#$GzE^HMkkX)q$d>3&MrrB=HAl=W(NlOK1o)) zT^u2?^_wr2F9R4o@cyb<$PqBtgFa?UR3vR7zDg+RZL^tWWFD0#w|E(`S$gXzXp;I1 z8ahWzEyVTi)egx%fnMT-xj+ANk?&Xk^gHeJu!6+Tk}Z0Ie1Cx*dxfzNpB6wkgBAb; zKn~}lfqc1N3$0qmHWIzG*3O11JY~=%a9^YZGmQ=edPyuchoXFIh&X)OVIZHn>(ad5 zJf+0&{CXh^!*hlXOctzN>*V-VYJ&BTOnSHHg8&)j`6$FqpTaoj3q_1I(nE(;Nj>YP zeleAUK3h;5bjo=Me?M$BGrNEM{#zT(qF4#2dq7Z2H$8Np~Oq z#f}HEzGTq&Gy$v_>+IWqYyW|Of>k#-u^at>%R{r;`2qCGmvE^6N`)Nk$fxP|xsLbj zh>fI4cXDQBW;;PgOfX{0zJvJYj49siIt;Ef^}c%wRvb$U(k;~1s_NNaLdz?Rvj&fU zyK5IwXj}2(VnPIeaasND8&Pd>KNHEMSPjW?(p7_oC zhsLvxhD)LUIP_(t`fi=EKvUO9Oy5FrKba?yD`O%T_+)o~GDGVQ|EF$0s@~6LEm|@| zFR&R9CM*0?3JD3d#uaFyeSvM2d9omNO2v6dr-_)QM@m78|Lqz37qiCQ@?5X7mcA_(CXAvP zC3!Ps*8mhCPIf`9eC-9)C9PSvr@^!xzJb z8>EeXaOK0}6DfjZNSmRov#`h>5b+BFc~|^J;4%wh!(~^HN2L zZHil$CXKfY*Uk2q07}nz^IAcN5H-K~H)2O#fAr?+zefqNQEL4v5eTrE!Juz1;jdN=dhbQU2%5}!p|q3K3iGp8}C*avH8Jqa5cbcCliTO=_zPPrS<71`WVc;|jhDmpRS&{MPh>{s9P#ySmiCx~L{X&Dg$- z4e=39JH+8RkmB|cOXvxH>OGW~R+%H7#}C)Wq&j~KKfHHu#{4m?-*k0O03*)@G$cBk zHsgc$jVrEQN=RNG=&pEg4Ob7Oc@;J3!Hv9s&h!Cw(EL zSEKI^&t~0(PbN{&DyTT7y%pFWU4%_>fE`x#hZg>U%FTL?)U}j!q}nilfUJ$;pYa1_ z5V-0+yWm(`$W0&7Mqe869mS= zzc-h>{hRhu)`}^>Zrz35!5n#~uteFbvmJMS^^z%rb5c`x)jbR6VKAczW2E-BSk2HJ zptvX-!bk<;;j3w*-MfKxrJf_hb)w2A-K1vA(TTOEU=>w;Sc?rWysB}L1@`YayZDzx z-wU{vhXBL;0I_<}`di%qK>7g&abdY)=FPK6MopC+r4il0_XHv{D-^2 zM{G=F@8=vJDr<5mhf(@Hic-sIL*j^+78xeI@_^O3e?n>@nHT^j<<}wQc9tw(^=^nU zW{L4j%El&E0FgACt_OSH2;|QPfk|-{Nk^5ujuZUHEGOtr0RI=dY0t@_;r(hFI1}(V z@|skET+9ytxP?NZ@72h-mt}aQt5GQx*cqG z+>035KhUe#k-@`I33wF}CE8c|^uIp(f~SA*w*H(9Pg}q`-;ygAXL=54ouq-7(swd$ z2&jF!WURCu?-Lf86GcmS0Bv2+2*KIotGFhZExMjFlN(UFNDtMO`*F&Y_(L7OExrOx zt?@P%6=%sTsW_sKHtVqu2k3KzIV&s3_28zXb#ASU$Vg#Fjq=V&Z>uwX`SSA^I|#C z&@g(NcXB)l$yp;)Bfhy0>l*#5L#=rWz0~Tn&>2p1Jvx;Wo^!Qs-#!wVO)&_v9rKJ9 zwe^dfT7a^YK1}N(dDP&*;t5j0BcsXDLte`zOSUu3kMQy*(EM7Y)3^UnP(f4~fx%l` zx0jGu$1~qgZ>1!RT)sZ>JpAG}csL7Tlrkd_&SsY8L$Eu>D1y7tfddu$;Znp@{hCv) zPVMSPJ!c{~59B*BpV}FIG2}(7S)XoQE3FG#_y3-=--5@KTHWHW496E3a(lSX5?-6Y z55_5<52`ez=2>R*Pl`~;OHh`5Hp!l@fE7S^YFZTZ6VYZ-m2E;xCqU?}kIMmlTa_J+8C(Jz+}hHduYXkvy=iZ; zvRB%yn##pCvebjQa@+z7m}wxTbr%(jsnypI6Pveki zULk`tY`}~_XmqG+b)Skr{Q94v5#$MW!#!3a5(e4n&1~#V$$c~0mM8>iRXvB(%kB7Q z7M{n~>hyrY-cmOU@}e>p$?kp3pK3szxd53oV`Ook#w15W?a!i`rL=O78@$@`!#SR> z4cIGKhW?EG7JA}aVohe!Rg%e=3R#m4UJe7uA)KswMxI}Z9T(JWUJ`quqCYuxXbr*A z#F*mCW>4D?E6VNf_DHB+(Z^kkm9|oi+nG{M#}~*}zvUmlm^i}%+x!u{Z-x(UloVd~ zeXM%|yffCgo&#GSrx<-zu!7KlRUPSfzVYiuy>@lEo`$%aiGmV-SrT5!UgK2M?++O}|#}ZZ3Sr@Wvn52$AkMHH-#VP%j5j zFDHumWaTIK#NHQK;=1j$UU9X9N+((aqkPCjk~VgdGaMJiHIf!pN)wwo8T2J?L_Nn$TIV_ls48cXWY+(6^6YC zOFTDpGjf_WMO%Rm<}|m!v7JYnZ&A!eDsQ*;Y6K2FI0@yD9f#kQ zEBtS}l82nEPqp^G+aMR?ad!^3=ER&+TKVICu?MXs&ACxsRk%4CAq*@AN=yS*OxI(2 zXL;#KT!UA_u7vrpF5`U9C`}=lnAFFu9yY&I*-DZD#NAjqkMHkO7j2~^0Y-$i(jVds zzxGiHFMgaOL2`Rp!%^~b5TAcSIE^(Wq%#Y}Or6UTSF5QN7|TOX2;|aVP{!jF7=Y9g zq3muov(zn4fAdqrV{TvK)ZkHBOC0fAQv=4qeYWZYxCT54)pWZdP`6%7o~k9KSdKRl zQTF~Pd;1CVz&*6A?+;m!iC7yyvxH3b*IjE<(UixN5=Jl@>caNdM0pO{wrrac)`ZMJod>c(|DBKoV8PMG_6}?yXXQ%9wRnCt1H!F7*Jr#^-MO|9xm``U8 z`r(t|D|4Wy6$jq*Cu593+gsYO#e-0Nk28~LCt)qGd5?9 zw0XH0LN;&Bcn#d=zNh3TPdEEIrwirCu0em3JocR^Za>Vl61#6KCB*MX zo0-r-72sO;2X(Sxnc9^{vgvekpur@2|5j`Ri0!E}LMEKAH-Dgnw$fDB4yoj`0Gkh; zU@zsCF4yp1QQdu{?!odX$CS02teR$Lj9V@i$-ZlE!ehV0Z7w8Z^M z2GXI9vQolAuyo@;Sx}57ZjA#QuXkp3AWrio0QnpDP3p09ZWs&vQeScRZm`c%!u*-* z8!g0BwI7L-uyKfcr6HIqjA)tlY8Y*zh*cwkP)i^Kj(;Ei7atTZSqSX=jl;_90=FGc z4j?Xo7joa;x9|YDi=d+#>8k3qyd7cHyPT@{=(f7rwUz<0e#0p6`!UvVDuD-WLbndw zbKWhLK{!g$)o6b)QgHqlDV3-S=^|!Pa@k#8(Aoa;Nx4VILDNd#xSkV26ZAUV^YttB z(-z6}m^Uw@n9n<23WphiPFD_{W9}Umi+Q*{PnOjA zm5L8r&g$@7F6;KOqGUZ39#ypukhg;<59t=17D}H=>Wok|=Ipiw&lfyge_j-pf}c$! zR`;kvnAJA_NUF?UG}(QRZdeNb#ns9ic_xX2#l2>>yS7_eHF4PS40=xA=r=Ogq)N-P zsb-`iB#Ot#r)yb?hvn_+U8l6ygA$Ftb%mO!N(|-9qtf3C{$tq2^~R>y11=iKBnfd< z)AulRG&9s)j8I)1>ly!SdAg}mf;1J=)oT^nPbEp*#pS`lz15tw31+HChjbKb`@x^9 zd%s?ADfBh-EXoXPp?5XDsCEr`2h&2e{Nh@G^x*6&iHcaW_H;Wv)eLJFk;5QDzQuAJ z$PX>*yG8?-uCT;u^nrj}Fv&Q*ZptehwnZw4W>{}t2$qRpLLh5mk$w|FK5A0j5ua~}gFQVO(&6$%QN zWZC2J>~NTak(<7jOj8uh+v4oeM3q6+%3wiPe)CE#N{SeV0uuqB@MMBYDnjJ`LUwf7 z1BY{XuR-7aVFa?^PrSrHSKV{@h21K*DGJFi8S{Z##=%EUGi=}#{RwWwCb-28t+nsg zE8s9A%}x9}FEfLLNIMyj-&~lfUedn`_9iEkS-t${_Smyk>hryKZD3z&{cyOZ#e@0z zQC)Srz$j4HO294@KF*e0myf93USPD=CI#phiuq+phx=Sa3?J{;Iy~v;wDv%89k=a>gk+Jn`f37q7B|b^nRBTKscFb1FT=}aR{9=B)*rL-+kt;?G*c`M(ha%d@6V~-TDGZOiG(Ox)*&4XRrhk@|8i0OrX*nPKBt4{57 z1Hlwat-F=il63ie7FYXs3GGu~PDOBPz>h9~?B88dS#D$AR$QU`-c7&TjS9%`NN4-b zfnT_*%;IMsRY@q$sw5;LV7qFaUU#-=RcU6jxZN8UCSSD2?78MuzxK!-adTZ)m+b-g zjN?ex*X-Jnk<_nJ!&Ij4I+usHxnVohLTrD&#Ur}1mz{jmNJoM4e+rtQQ5k23nCSnLZ z_K4dxWBJ^vnGvcL*Rmz8TElm}V7%n?Ccn!*hos#2($FBLA}&*rlrYHTg*vkRT=pl_ zZDLWHI^i^jNe1Z9e8JR)f+};1FW)qy4EFoAiH^f%s|VXQ05M_EP$jDdE%2bYq_&Y~ zKRws=ZJEyxRP)Z_N}X%Uhf2n@Oqr3o=K7gNu}WJUz`ld82<{I=V;oN1Xd&-b@k0$4 zQ)Rx4KfG&|DNF0JH%uPSq0WrR<4b3bilu5+e$(c|)Ze<|b_8OPV?a{p)WMVfXEvxJ zb5XGsU45*t6q1Y+yOUVSLQ|VJYg~$qx&Jo<{P#_WTNB=`$bbf99b>`9M-KDvV&pOW z8+$vj#pS(Gs}$v`+p+3rA0?A_Xi+uar%)#Z7nBzZsWBS};Jv$Jo%@r-XMkx^rM1Tt z7Z<|(+gx@yv;LE&?AuVP(G#m~po;H)E|X`BsjA+mi7@2xh$C((cTm@QG~r%qCsCvw zS5(>g+YY@4a&FG+puD%Jlr%#iPYmR3TXN|0<0FMg0R}uRaW~D}pRVk2h7ui4rX=oC z`A!Bxj`LgGfjd)R{a9w5nB}2ttNLGIuJsJ)rO`KVLP)2ki#YGofS#GPR(FO+8ycO1v)%Ut&Al$}*>t_^f#-+0CHgrfgE@(TRFeqtdpqkAIeyOQ- zB&Yd(QZVmbNm}NMQ%S9M-k0c zn!r`Q)2wH8nyYgyqa3ROL^N|?K72xtOdInw_XRXR#GIX~dJi9pj{nH((_^+Je9`xv zwpZS!5%WiF&b_fEx*L(x9}SEHZW6J1EvW@6a=2c=K+QU!Ozl&sC~%bus=}a)Mp1ir zAJFuA5>al0Z<#7MRDvyok+Hvc(S3?iju+GJR`K~yru43wJ^bqMOkBX0aNLmt> ziM}#Rq z6#8a%Pka-x(z9$q+;FvO@rlybW0(Hig1#)}e!*t4fo(xc&yaVjf=PjSw7UvN1;X!I z>vtcVoy^+8b-=J~RXTIFXIFMt`ejpl8VbCtB1am8Yx-Gc%*ETwbNtPYjJ2O3Pn7=1 zZ8GZvqgyBOHU%s(F;mgEVhVO7NG44JJ|p|TEnhjTj7Bp$tl!>REtXQPV&#vra6}`& zVMBRbrmHfk8{|ebslC|3tM|0(KC_Tz-G&M!|L|roo`~F`oB>xsxet$Bi}08yo0s{# zAn&TgZ};?`y2&roixg7{+O4Fb%(linUnE+XzDD{pqxe&Y)9roKpKC%CcM+(FWh*pN zI{nZE;`=!gkD*cFZ9cIfQ>qLre>Il=>5EfbjIh%pdZ0&{JwqI>ND)C?dppCo7LU9a z0K#RL_;IiP4!a>&{I9r>XLC)j&@~Qy>6XMPm|I{duQVeewE$UtqP$-wZkc?^{PxBs zo@YtT2b8`Ne3kk5NS}M1?C7^T))qv%!iIom?>m6U2lmIjLGbj;nZs!cv>$t?{S~rhBlrUTj|JJf`6v8XHwA8M5?h_ST zAS*Kg@mD+lIyWt8U$Hgn&T+9FMYO_9@;@hxX4+Z`b-f8pJn#G!g@@MzZn+rd*Jop| zDog;q5bVvelWv|Uy)u5RgwSwcI}8<8X1w#htWw77@D_alqRMw<{Ezv{43hcyC)gvf zG#dx_Gxz&#!-X9WQ)DN|=1p2~`>?@bk%iYeKDZy2f8W#?9feuW)Un?_1C=`G!A zWD}RV^4_y2By)KoLqF&@{B2rR13!Xe`a;Mc=e1IZx8zdXaGoxEY<`{#_kmTa?ZTZ= zkYW$)@7Y7e>;JmF?i=BHwP^P!8tu{Gjr75ng}GXcM# ze{Uz?^F1L}ZOMRVy#|3C$G2Qr><|aj$nwoRrF^8%x}OUDRK#1(ULxjtU<))`)KtZD z87D5JKj&@PRL^T2zbVC2r2S-HAgW~dYv!dJrs)L!f@Yr|wC@qkyMvC0{r7op$KwR_ zGYQ49j}`m*%CAgSirje&G%H{8DhSZ$Tke$?%RIMP?__0QQoP@yD9nrdquz4*b7erY z$Vbyhg;CRpi^=wejT-6Ir#8Lb=yHlQS2Cjs(H+HXA-J!JuvOr{hMw~^0;N=xG5)I3 zO&?%jV1NHw^i%{kxHbxHw^6_Kg)4Rk`ep2snN2P03H16Y1M)SWud%+<-iNfIn9ZTH z3_pjOgAF07M-gfc_^5bIY6I%~at(4A@=ba9O!Q%s{0xFy>P z`GuxzGX|b|(o+9yksyvny0!E%b@c>gd|E%K;>-%gWgTMBJ4Zu5%v`4zUSVun68ttC z36~G=LbgMDzSZg5)Gwk~UacM=C-=vcPL<|g+T8iOXsQhg?0m8pynV7B`mSYx=FV$% zzN1vUm_M+M=fXCD5tL^+swbb%PS6)WsaLqK{_1>3vU9Wy53l+he)M z{ZKcTpQ2PWl#qLu*vQwZh`a7(rwoj{}w~l(4wzo}0(#`e! zq9y9Q|D+++Wq-w#Xj4c<0!^k6ps}j=o0EW;6QU%?X*SHEw%Wl}E&EvJ!RSAkz}^AK z)G0FIQDEAd&i2B7*}#^*OPLi-3{~QNecl#3q^HIGXKGp}=V!Po6u;4YY#4n9p~RGI zqa7{(C{JSvJB^;)2+ojt^>-y<*^-m3+}7FGyYdbkq@L5xWW38MU1Cvz4Jiz zVjx{M{wG-20UfORB?#ECTc4rlq)rMqR0BO*Bq3=>`2(h}6^#&Wh`YnF@Fm&mZ|%J| zm3zxwf9Ic$(>^g-Zv&Z3*$_Fn`hoJFq1-TBt=#So^Z0~H#E-6swJih$PTHP29U3$OzzU~_m>vAH%uH#M)~ zHf?Xfc~>q;`2y~tD&-JZU5yo$Q#KSo7qp4xN$ z;=Ou_a{ksji~Wi^+V$;`skYJ{#XgRw#q*LBw7X~YksO_!Q`F|e{h7<)5M4AyFd1fy zvyYOq8wM@t@*PeWWGZ%VpTgR8y~Jw};Q$6}> zqI31Gv#WQ(Fbe+Ss^QfdH^+y#nz}$4$FT>Yr%u8#s>O^&OHz}koY%s4bCyNF#E2Jvl5nA z!nrxhr+C>c5<#lev(r&&r0t)X9F5dV^CzjPIlXxj_Zp-m&9^I~!@HWRd1QioDy@9@ zEQYHlyn)G30=8skpx+sT*naa#g(G!Xal|Zx<^jj4Yc$Uuh;3WV*!yea8?ytWQ{;Xi z00)*QU$u`~s~?Wn0=}NX=_{Da`z!WOyrrE9Ro`i3&94TP^z>%+omckNe+XUpz@$1? zQc=*$CMi%#)7kvM8F2cP;@T*FB>&DzoOfaW^VKE&r(iLzs5^5u?yjPMEgw&pL*a38 z`{DDd$HCiW2|k{`^4U%_uy;n?gdy&#ee#dJc#_wUhk;q;6mM84D(T2dJp~qomD&YN zY-$R!DDWW(S*Ps_+e_jY@vIu(3iOuoAXZeqwTQ3dn*Rqd;_s3ev+&BneFcX>prl1= zFC3c2lHGw{qG4)q0@D3nKfigwCUp2p)E!K&{mOy6z>CUio6zLlb6DpXNP}vg0;ao$ zmGqw`QV}TZ%jFyVZ^mmva+dg#p`(S!Ut zb1k7m;kiKbRA#?lioA@7am|r}J{RQO(+s$_x7nq-K5$=Ue*qaVGn1WlDS^1DRte`B z{@5*9h>O3t9#jEMnB5lO)YG9CF(_nbRB-khipo5v^fiuw=Dx;y0z32G&~yDjj9?hw z;pxyVq1}h-W<0lV;PUkSoWjk#Ds^G*S&F16SmwP=^<^Vo)SoCT?lH4q;izU@r_5eO z6K(5(mf9FUYoWo7ct(cN_aDFB`B!}}eee3g8LaIsu7~13S>G-7+*S_Q2)c&052l3Z zP2F`H88QHdyp{920;)>p!PzHCw&mh`$?N>Jd-f;`UdrC6cWv)E#oL=1jIqZGWqYvo zpDp>cDIjaPDSt#9U+i4DPmJd7jel1e*R`fQu7*8hp5dG7SYbR8$zT$XR;G)~4>GT?K8=PCy! zDh8UP7idg+TS6$Z_L|MfQrwE%H(lym(di!09o3n+7Lj{x^-|+P^PAY8vs>B9KL{$on(c~77Xm!*CO4n&8rOlm?ENh>_eMp zL?Mwc`iB!nY#d=q)7cP#aia{G&H02U%jOQWZ1TLsCiPn>&*b8MvRw$d!^6+=@6RUt zJ2e^x=Dm$dyE~sa=nUvn&e(9+dd^2SRb1ea=WK5M`MqKKV~HcX6*KSV-M*vCpytlc z?5U5QC{ACN)3Mo?H8Hoh;|s`(zFj#W2L6g*-nPEodQLzHq?u~P>yyoV!&FHzU)wj2 z1)88MIzWjEb7l$h&Wknd zQ@!(-f?B6_q`xaMs6X*&7M1B-&9)Qq{@#;gpW1)Fg&}0cOvU%Kvy({^LGLV( znj%UZ6BWDq&!P!~Qd^>tW;ZQQr-<;=cBuxg2weoIkdXDUx8?X>a2sH^t(CQ~^u~3y zfFZz;`z~DB%FN;O)Zg^(N|+-2wN1RrT=3_UrHatuhL)GluyJb2kl90tan^TJQhlt; z{Z$Aa5*a*(fIuCHEjzU>dn0T5RZabM84N?kW_UjwX{mNgFx|3hv9I!}BPQzwDD*I^ zWp`i)7{$ex)PjQfRPQ3Qy`s%zpLI$1QgO^5|x#2Ec{GT z-d`w#rdaP5!nd`RJB%FkY+RRb?e@G?G)Ps>d?PGoo^<&V zPM~6Ko4>MCxs;EU$p0hr_ruOT6 zg{70t@Q2X{Rf_OE_z&Pgr>q;r{O9dHQWdLzo~tDn%mEtGewxDn2au$?;7U@Dr_oYh z9%Q)!WKGMICXe&)QB30}ogq3eg9EGvzIP^MQBQxWZR zdfDvGk3yG?MzT!`uE)PU#s4Ttlbpo2!nmGTz^h<4&%b{iSFUaW3`rzi!|4NYf6lx& zqYkv60x8e)CF|xVKHkoO9ey<74%)n^7H|e~`)I1(t{Qlv{|U_hzkd(&v-Gm?Zgi)r zpLIBM?vViVV*YJ;4*MDF&EgB$qJ-Y6bBp)&tn2Z&d|PMZBlDszSzT1>R3GY6rBrI` zanm1_8|rZ-xbN!lwy=D<2A%!?n0v3NrrUPim!g8AfEAIh0#c(Qy$T{tKsrc?AVs?L zmJpPt(wk9f7K+r+krtZt5;`Oxq1QmDfe;e*pZERdTyyQQ$Jl$F?E^T$Ap;)n=ef&u z{qFBNM>CO3mMv$E7z1o4(O0ZoI*~_8g3zoo77V;`+Cstlo4zs~UB3pG&g^|VAHx8I zri@_l*~mb3nQOxDl&$jin9rfEUVnH=pd`7g$I3K^v*x*RfJtyo9Ff`_3vd~W|4T%cfZ_1<^nJlfqMHaiugi;>Mtp&^voigi> z7qi~xT)JRDR1##%4~6sQ+GRd0bBfHY`V_pk$J!DK{N!;@vi`lL{=a|DS9?j#4T%@x zT7x?>gm?@~K+}k?eW4_kO}XS0cMtc$vZ} z&q1V?{VRMYx(~mL>}=&}AK8Ir3_+GVF@d&=cO2itKE@dm2W}7t6y)+Ws5OeX)t<)+ z&^xtjggo=f(4nU{qKkifPe}LqdB#8ImF4LIrDlxY$fcgYSgVop60RBBSi7YKbUSymngJP|k(!@{Z|KpR_xm`lV zJPmZ+=Q|!LHdQy3grx^abQL^fi=+>(Oki13vkKa|&`L|Ia)Xne6Qj(!#-Q*s=f7A0 zQZrX?s3}zNkX9H1x?1U$o&qfx^*D#}HGv+aZG316&oicU!Qo>4EFNO+T>d})t*l+{1o|~9H|sBOo7{z5bYb`*O!MaK$@7V_t=xxU)q}B6YM}W&kp#`I;E7ZqK4w*}_SQF+&wHbQdmk4_RF${GNR{xX3JMv) zlmi@e7hWeZVpLbuz^}naZ3f046Erns-h|b^d(6)*t(_{PEq^SSw9Jg~PWZuOcDB1* zn-o+~DvMD&5%tdFXOJaA)}bU;BM=Tx7tmD`tR4!hNat zUHWDXiZbT*ci&~?XWYaJOQuk#$*=EvlfGj=f|#5~%Cdo0b5~B>O=~YXk*AJ}A6H{G z{;lqPuD>-ddSSLKYU$d(mnY$Ljm!UOeiVI$9f1z(;=l%`O4^-cv)QP}z zbW)uRa!Zu$gEfWVU~|XHqREO`dKI^qYQ}+#4IvZ{aHt6W%#Ni$C7VgQ~@~?I*D^Nl8$30Al~HyC_5TDbUzLt z?}O_Fc@Cd^k6!E6xsEG4OH1t|g^ON$ne?+v^-HMIJw(;>*!pwS3f*VSeAT7z{tR3t z9p&{^>8f;G4{FA0hcp}P{dHk%?cG{AYBJSwUGDSDHY z+B&Y~N>(hJyM4ofVka;wsDcKNinM?YA`z=bCvVCsal_*Zjf+oH_qHPgWGxYoY0VGH zoC||nBP3k^ydfQa1lGeY7PySmR_>GcXUFn&8w;1Xf)AS`{=yJ30o%kv07})Zq419Y z<^heCAk8Us+_hnYk$@A^MZY=;_SdM{{#n_hl^x1RF52JxD_IaHXTll0g(r0PfNVz% zUeBOP0nv=(C9<@{Q0A*~OE2_oImNb*cG9Aaic3${N9*GL5|&eO!@3Gb0*qjs7b{Sa zYEfQ_hLG$tnnTK;a>J8?S%Iw1S_I|#)5THg}Et6t&JgSkh%@+^O&T#NS=jw0P`8X=B#R6J| zLyxE24iP1QVm9n7il%&yifNu%;%SC&_RC;qpH5}#)HMy&3Y8V62dxl0VhD6`P&LD_ zw)3Z!&sL-zh|e`EkvCk;G=1-mkh0=FPaI}}ZgC)EPlz#@=aBcOq3d~-nv?HY`iXbE z@3UWA8>Qa46;h&ryBFM~62zm-<;%UA6-yf;eoRAUS;n=N0wrGE(a4Pwz2eekP4^=j zREAjm-s-z;9ZGv)V+gkT&5EGG)Af8QgiDq=(eAX)}ASp8N5>ps69F)?0auI|IM%5-(Bv06(wAD^r(LuPtO! zh!}m17z_Bsm$7&V7E$aeHM=yeKQ~n12VS2oX#QYq-q5(eI*IxS2zD23`L$~cV^zK) z$10zRcOa5?3q?r=YtU*@==<8!k}?=_d1b05sev$5P8W!ZAUz_g3&pRqfih_`jJupM=mJ?L_HrfU2im zc9*tOMf6=SzX!!TMd{eN78D_K$ZI87Y5L;^U?tSI?qtLqW%*7kqb=3 zp)2sisa{2eHm7yZ;~@q2;qL3}&f*w&%C3vqcKNMWWv5Mgk!nowJ?=DTp(2ao3{1CT zw#P3KMxVhdsdj|u@lyxOX}|UEv_pFzSF+o1{xf^T1;YBAvW0d+V zUBGr?M1a4F!r5ms@!^I~jg_2#sSzAQS(HKhTaSmdt>i{N#07R&bY<+!MOK$`tt`X` zIeF1eE888~DG-2`mPI2L? zcbLK4BDa#9MsZagfb{i-`6Mh8(n}%zc{Qrfwl5qCoZiBx=EvsmL_2nQVO#J|zyAOe zyKMnubND=*5RhtIYzi(IL>8tw^nA=5y_r?}Q zCcEf=JvfRn^uknOOk2~8yP@)7;g!_!@4U|6JNqoVmzuyE9c?H#;-#bs;88t?s6jr7 zZOEN6-E^u~=*Y-=+wgt88*vNat$Gm)D%y_LtmzZoqaWlb!+fbV&>@`t+8t~f zVG_p3xG<2{TCS0PtS7s_)q_0u>8J!Hyk1C2xNvO5A;Z0@thiGK$~5FB%|*uX{;ZSX zhPa;zlfM%1OM}EH;kV?SDw#gY;Pk%1YMqz?Des6gG4g$Z$PnMjW;f&Wr{K&aoR6hQ z)}py)!TC41r%LR4Z1d(=u`rW@hGVO&UqvR^uNBUKmO#Av%PY0XW3zHi{h^Wo24|c{ zy0~?HU+RrbHgKZ9*|U8%$x=Q*YLq6Bg@Z1ULdga@Z}o)8V-&$(ZWTzcWVf?%vhmoHBMjOEw6%eyN@qN4~fO2)^kAHYSrCGl$u zY6N&S!m6Cdr}+-aUPsh<*qCCZp_E?Trg4=+>6S#xMka) zS}h|vR6;#K|BZ;g`nS@ZET=nX8D2>|$m=fS7mj@x**y_ClWSGBz=MlY9xz3ADtN}P zb=`^LbO|}=IwwHj!DNRT2FCNm#g^#U5jXnIH@EUg3)+E?@`O@t>s^|as5rh~_538m zD6Oga#g``Q_ZwHVbN=jD*SgzWx&K+3%0@niFX-nr+(0R>-idB zTox;%2?jbTO2dOJLF42o(f%HCDl zwePDE07KngSp_!p1)GxPY1fH8h1Y$FH9i<`FXxFuvm9A5D7Fs|$!sY_G%P$AcC7k_ z25%LY?7EFP&TDhrb5BqBG9S{upsT21KiqFo;^LfB`tBL|>7}BM=@SPI3Cy3hafCG4 zA%@FY1<&Ckgxm9SM&}}+!96h&tMg3dg@pkGZs!rt?=UCGL2r@^h22fE(%{8Q$s&u5 z=|5wqcd_#2d*|rIWDk4GMb-Zx>Txu5zmZxyllb3SWxbOOs1sC1XZeNGhVv`=KtgHb zbU*>1X{MT4u?FIi2iZKi__6wK&R63?PBsJh)$d-PrFTyM$j4Gz~qsALD?g!#6q~ zoIpze3Imz_0+?I=0B2Bjpg@}ZC{$#lef*Psh2*Y=o@w@*@XLru9<%y&M;rMaHc}a? z$N+Gf#GG%)bpV6$|W7?n7l*yzaTU~8D`@E61K0eX0EAAzb+uYniSI+5(rqE`6*0V z;2{dIqFF$mKyP(_CrP3U7>`<~%{nnN9B6s z$eBdjlL^N=5yZkd$FW{;R`uFA>X!c`?!(oMR;~W(0BNzp3)C$kUxkhsa>j&;T!x>@ z+=R4NN{l-shL4PZ2a0{?^2WY7iqXLo-wgPN(GGJIkulCB`tfR%+wb>9WUwvPYXOGVz-gD3B8;o*mA}113S| zA!NEZI5_-F8m|PNNv6O_EcI*&jg&3~&yl)OF8pHO@y&gvCXs5^io~_R?YDai zOU|~eqj0L_R_iEKadS^C4`59vN5|C<*JMqtfYw1O9)y6=6FAZ-ed?q=jL=n1G8|~q zJct1*X?3o*HX(1|i=V2Kbfm=szQd-`xpr2NFp#GIV5U~M{g%e5ioR^r1dlJL0zEdeylY~Yy2IW9K&y&0(4Tq0?Nx^1!6 zyOLGRK`LY$8G1d&B}RN)XMs8#fn1v_q-Ydd1evuPTr<5=e}Y**!Y#5g=ELU7Ior*1 zb<)MS$%9c%NM?_Oa&Y{IuSO0C7iM}9f<1I znNX%T@j=aAy>IKq$4rH0rFZw{8E9HgJ5xzIoUi);si~|x$$(}^ecO1_#k~$!8+qvf zD+6o{uY}!f(#3@TsR@dvZPzCIb@FpTUt@oRHzs{b#K&LAQa4h(hkYcxSK`BIGS(;E zRn1Y8Z9?m8uh4N-czm1Rfkejo9j%hz>di5~3$w~KNIHg_2BJZ01}j#pCxn+FgOn;Tlo`;)a);Rv~76O zO-?uZkXdG?`NC1IR8PYq9>j9<$vI6SlRK7}lUtDp@+;Q+PV40)+k&Bd^vGlWQGZEL&-s+cS+d-3@G@3)P=EjRuQC$aW{k6emBQ0AVG z)SEL^cNLDI34^>WhlyR;pm6~X;*gsn_U|Wbu)~347<5(4kg8wx5;72q+S@F#qu+dyBhHOj&MzTNnSgkx?}B~5 z&#C-+71Xm%G${t|&;f;4C6ttLej}h<>v64Xs03sNvv)SNp%Lmk58gH&UeVr#`(x$F z;Oj|`iYz`Qnx6Xg)vp7W=9a|d=4)A^JcaG#^E{?Nv}XZ();%*u-<(er9wZy~8uU|ZB$PA0!rEm{H)d&we2sPSD*jsK*78j;u}s+J7vUK%k2qQ}(^_KryUFFK~;2e8; z>DHr)C{P`rb>1cB2(5`w$gElRaUFMk;XZEqvk@gK-@>Px;UXzZB{fz(&+NL= zi1=KJ5>B^JGL>6w_X1}UTZuYY%I-vC7GDyl=Zd@Qr4w?G%eQf;QJRxpO|TRDjd7@? zwjy;{5GgVaBzK?~v;bz}6Z|aDOUIfCBjo+1z*Dch^picg)X=I^hf#!Nhf6{hdES$H z20PMSc8`BDg&epahtdzea4vGDpX18LG|7?%eJ zr%yEPDuqqvfD-2xBTMuI+>IX1I=3`QkY7cxN_oj1dGKcqzxJlxB(Hn*nHd3uvt1qM zuR_k!1cQ~RWLc~{eLOSLVVfaYqOK=bX0M$XIUj2_pmL$pIVnPtcT-})m|fvYn& zi?3L-(H*gI{1mXsp?B0o$KtNJ=zY_?v;{4VR*%jG&;btJ6AZ&?bm57U$6pAm9SkOd zX8&GR3k1YSqgQtV!>bJ6sX@K9fKLRXRT0T;0{i)2gZ;f5r-Hf1{gNY0pT4E8cQ6IN zzZXTt>fLk)CscS9vG9kkn2wRps{8hRvF@xy70D-N0k(s=*Mc!EGQ_*mK-ULczY=eC zI#TqG@7CSvjEKYq`P|kOH0#P^ls@9>9yWepU2^O0GX0sX*m#pS$@z>k*Sa^7&%L0A zixLIdE?fZQ3=3^>a!>9%@~cXo;i4*}w`3NmuZS8i@0!sBD@>PwCdOwHyOG{Qv5aUF zv%I6*q>&{4Mds3JcYKV*q|?^QAR0vcvt^)lmLB$|Sz5x2I)1{rk+vuaHh7W(`YA=( zkW7ldukssC8}$>=BSLpqet-r&=f_qZ%uPXHWv_QAWAcy#HY}NeUaa*Rb8Qjo!o5dg zHv_2JHtXAh_m$tb%={PFMPDK$p zcO`YR{FByq#&!3XP>95sccuqc4sT$uYs=c59gG5-BRNQ zlHnz0#!Ij5J%PPs(VD#-^uo}~opki&!cKq^)P=k+xnn2mS4E_3Gd1;?fJKi@RY96V zG*`LmPx^0b?OaJW&{dq2Il4GHdE!|Py&`M}ir+MEgwb@4is!)qeb1*$l*x^#&!kc7 zMlJiohQpR}0^%%}cJtjDWiqMtd@gU3z1zuMli~(dcA?UDa2zcPc|Rc5(r@3+tVzpN z5U_=YAy=ZvkAmpoM>HA)M#6Q_=Tgc$+PS#n^|!XHQz?)y<3KgrVFg{}Ew$6PdSCu$ zHx*epgC*0}SR4^IgD^Lc-510(KI-}mgarX?joa4}$y0wo{o^67n z@LMeDnc@BG%D`nn7bi3GcM zek3;Oj3?t(b2(8ivL#qbB&L>P4lG{Dr~;gA-=DiCo;1Krn=fupr7#R-fKsfgqohn9 zxA7s#y&1^xmPjN=v!x$JS}Uo&Vd^wrDT{{dsgof0#u}ATeUFwI4u*63zG9lF`R@v; zRuCGd=`y^&_wA)1Onqji-sbXg&3O|>^>ly_j_%T=P$_cfhx_zWw_E-t#Za z6OYzfJ9vVmB=1-Vj5ON7mXn28j!e1^QviGo6lt;!6oHceDFQ#Le)C$^Az-vnn|R2b zY%*|Aa;0uGP-Yb=K8v1@T#Lae8@A zMrg8!9PV1cs8IIR`~#PvVu_U5^Sc%6->iIX!LB1h&+{1q270LDF!HIZbUr+a!~t+u zXYgwVD;+8&ux*ym2oEXkrqh87pM5^Vq9eRfL=Jn0rX?&ZVu!j#o}+UE7ve@w&+vyl z=AavMe4xl{b>DSeOxV~v-mlvPJdrzYnbO8@c@@~Iimaapjp0jLlUTbd-!|V{SqHgI zBI=N+kp{GBgftv;xRW8o5%6rxW!WObv-@j+tWT#2p{vp)S-3l+**P7iu_L~^0tZ*< zA+d|>V9w&3mFCVI&KqJ`QG+)#&Hg0zo+n>^)Tq*^y>}HMNGuwQW#=(N0 zD{@~?ee))G@OvcUw#PUJj9_PjZ8KEHot526i%KN%_t;Yox;h}|(QAc=+-%k_3Ss8% zbt+eAKb=GVJy5xEJxO-1bG{J!QAlK{(Z(|zSG0;Uv{JbK)5I!p`l*J1vz5nKH!&&!2MQb0L#cp58Eb2fu*BHKbwB1f&(^YuK>Q7J|8^VkA&QS=H zs)*}^;)Yg-p-98k0L$Xcw)XGOEk1S`c^w1CAGEm-tNH*_x<%8%=JxvodFO<&_iGBY zMT0gmTiSh(>2}1~9(AE5h+%Wbbp%m(gAP(9Vc12~U-c1c%ugtL*z_IQ_^>CbOxRc5 zu^o~4JFKdwD;KJ8?UV#%|8;k<6U*feZ1UaBt^rlx8%blvyQB2Miv^cU5cdntOnDCP zQ?@4^z63(AojS=8X*WMsf1Nj3gIZN-44;nC!mFHnOdbY1qRK5`nlTQT|GejrMa{V{ z1&EQ~VV;g}n=3rOZ`crR=1T_KQ_<5DHVBG9 zT<8j?0RJB_4tLDJkJjTO$T7r!MO8MJJJBlsA9oq(Xj`wmje4B*(t#)TseJv2);Wd6 zHbinDb;C+mN~?koPo8i?8HjC5Q}>raz)*Zi90yvNNp2-qCos=IKF_7;Y9i(r!)|i6 zxog(STTq2AR8Uzj`!2WPTgLsxHPj{M`n7of^LM%P_VO}bzGV2J{kFFf6nywcC4E6$ z$;lvok*&7$R2)mqfBmKqX(a`^ZNLw3knXAMWR~F!bj<<>IB2>6V>z_58PH{Ovbh2_ z@1Gr~Hg8Sp*+7bCQ4ENQ&L8vJ)!caj{BnHP>;{f!suTQs^c;QMa&|5%+8SnMKODT& zdQc1{Tzz^-*olk0^ z_7H*p&3eVZ4jUtCkWztV;C{Mu^z;tlAi$s*oOqd;TP|SdF8JetIjp81nIptoKFdj5 zCNoCJ!>0;7Lk)1@N-tji7>EMn+{@56s!~I#FR@GkTFssR#-`0K`g!gDGCdiybf=xf zhp5DmLl773-2e^;aGe7|yHPutao*IdaJhywyID~VVrlpr+oiSDh$U6q%$aRCw(}Ha zexKE}dIY@G0u|Ny_{#_DSoSZ5rPX(PAS^N{9ohLQTWM!|ah>j6*)Zt650Aggzdn00 zmUZ`^iSR&-OdtFf9AGqk-<65k<$%hOE`TqM_Qo+(;_SrBqnl#=(H2?9B z#}0NP)(C&Z1}U9uMrh+Ao6N|;b}^B=Jn^68IyfbX=0;&{Ak6&l+s-QF+;gE5(tC#& zSFv%4Ojm}eT8O8CnLM0nG5rV?`3P|N@7ggn_Dk-rTcG}M_)%(rjfdZvF`*h9}UKO<%6%%StQ(oKj4?|A05C1{Zxf=Zye5{R!z+D#Kyu@uG z0I0YNK`cQfaqd7ScPhrX7S%+f^qIA#mHd*)`i)SDV9A4_5?osrXMJ3tztrJRR^jNt zQ4LNU!%*R?wd||G_mUH=*6hF=r*gs!30!EoMy7+9jGba~!lgZxl@N8ut9nnZAWjTD zThDV&fJan0F;^*dVNgICBY0b&NWF{3+I#k9`rCy^KJ4){nyK$Nec#Jqyp_Kh91T1+ z3%ow{Tr$90Y0gA8&-**=K+4Eq`a}`(Pz;nP@YgB@aAL(n4+opS z%jMy;+6x|TtI&nKk<8?Q_*p#sI$&Bh4ho`=)Ore+QTgpbB2?`R^55m&V25ci9m;kz zM-Y(?#s=UE$L56G+ za{cV!xI$1eS=P)~9R9I^`IpekA5mDvaqOE{>-ZjGl{47uBu&yC*+3q1?s~RVgFLVm z2ZD3&HvPA)`f^>=XJI}#zD>TRZQ%m?RgIQXn9ZYUhd|UG8Lk?66n&5CgK|*LN5u0N zn^IZ(Vin-7s3mLCrCw(^F2%%bG}!BKuZwGt5sT+l_W82`7_TujtM3LRo2XTq`?d(1?Wa^?Z zqH)QSZI(0=Y3K&n$Mknc*&FroyWidaXS(}n*-Qca-|u54zQ!lzkC=%`p2zvcq0l$6#Ics;P?N454t!=DizmWl!ryLDok7{_+ac zfzz~KE2aHE*5y+AGePuBe$#mjhs_gBWl~gf{sR0{F>tGVS|zH3E8K-FHco1siK1JQ zdvCrO{4f3}sZ*0NXacpbeYE#bFEHT_lj2rgqYX7H+ zP?O+1u8M5FQ?nzx%twWkRtXp+;x}foI;b{LqfH&8Dj;T7R1A=7WEY zRTS2@3)#Arn`zf~toAVIh_L~`DI8M1_dn2ai?RPf#{~>fkOu}=>ApuE3Fm%!#Sn+B z|5EM}*w3}^*k0R_(O4mhge*v5)dJq*b1lvT-LD=8WrQ=Xs28`|l?hub|BNVlVs~5X zn3Zm&$RM_wSk6L8NHjcxU1m1EYjf+))^Lmx0NpCZ|Mct516GiL|IUI>AWgtx%rB}m zhPd#iIV!$dKfEJ(+^XZ?$JCUAiFg-g-TiW8Pa#k{RUU_C(2`ljJr~}*VzSZ$(3?%b zU#T*|7C=;2|2?SctDeG4Lk~piNQi2 z?V>KB{1QCxQa~5eO@CyiSIKfPxZO7mmS*%Gm~5-;E$Y`ay)1@cJo7vRe1mVuAchYs z(?Z4gkEYWHny48sE>X`i`~};BT;=G}0<3nvp9dPBC7+Ih$6@%t@`sFhh!-#ZXX-gb z({hPTVlTS|p;;yLd*)bd*X?|~d&C>wWv%RS*Bbs74MtAyZR|2moHC=hsS)yW^_Q(9 z3Nmk^VX8HieaCV)J)0TqeNK5ZH?xQ>59*d7n1IS?TN;u(%G2csSo z1i3tBbOmK$ncdEtti^Eg^q;Zxu&~j6%5dn~m|{}N_VXZT{3=-1{N5=0u`N43ZBF^c zzeQsJ(q#94D;l{Sx?WRRmk7NPdh>86i`j=J^nZd$2k&g%U^e^x1@r%iB^}VO$klhg1k2dA7Ca<#gC)XalSSC+!_re)vpfw0o^%dh zZqolhCzHxpdk@jyY_G!DadC_cp3_hih&;N@>1`7wA6D1#FQ&`4>$QkcZ*-a8aokFP z*aQ=lC*>kNHn`vc32s(gWby)Se>gOlX#vabOU)=^>Vrac=Li7ZZ9Rx${|f5fRhvUV zdcVY~1iKDH@p*Bg3XOtGFOIa9jdZ2N2lqFdhF$xUy9w=u*k9j^f`~p{(b-H8V%HaB zp`)m(l9c4_Qg$F_qJWtBe6O(T=qsV1HF)`DFMA!Z(8k50zeA$Uie6af<&XaY$c0L- zOo>6vu*W@kxL9r5Q8l0zL%RhX4^3|`Qt+%0ho?RdY9OG^%c6WHomTB{zI^%5faW== zKl4>Dr0Cpen^ah^(aw*W5f=5b>J496Of0gHVD8@F7I)}-E%%VlSOlUtJ4x|Of*x(F z+4N-5k)|`9k8ns5p3Mb8^1bp;=+qoBZ2wo5SR4Nrv&Kfm!-30QhDiPaRq!GL!Se?$ zk+HU%6sNeRrFPOmm_DGI>^yiQ`e?HZE+I0mOEh`SL{Rn+;4|sl)?%Q)+M1-p@wyk; zD=Cyj=&PP+$JYg+fg189(_a{uk?}t@TB_9ZIoQ|1ZmimJn$O3+w9+?i=L`+mn2Ya< z^7`fpS7CrKLY;;Y7w5(8(SpN}W$zREg*^U~SHK33UmR~{5XX1QeKr8avyOr$(V7CO z+nd|fTyt(({Ci2qOvIW5vu$bx&aS@9M(@tW-jfbi9~+wk?^Z%HFi@t;~i zp9|BZ%leg#TLluRmPr_OWtD5L_Ge3O9t;nYkYpr(8^5Kyd zUD)>{?XP@2CesY<(5NL~ z`6QR6Hxf`l*WUMH6HkvDqcB0a!T6xcKw*1SfD( z@rpFzRMx+lWELdHuz0izbaf@w^Hc0}aEGM}iNm+6j!q{twJhp8naQCY zkKYTJo_qJihPyIf<)#H!_3g4un-E<(9~cG38U?Ypxcw(~C(N5+?(Dmf1}^Otj=td? z_D6e;$VivIj6nlFT?r-4HRUTI$J4Uzyg_{tuGtGcXU}O3nqAP%^Uw&gg3qZaaQ5N+ zwnmIM+2Gcha^RLXUF7z3OOEARIdMTkX>WuB^ig1lcjl7u&C?7 zU&!FEGt3GzGvG;#Gs58{=;(aVajDu3J(P>Ey`B6aAaGsl0oh}Q|LL8w(rI??ZB*-* zS?pPykXF*(=1!!gHO7tYF_|+d>{T0?KfDDWYR?Ya%(4;KgQy3=G=h+65R4gx=kc8& zTtZ}0io!pQrP)aQs z;_$!olT7{jF9bj1%H!Vsy64iaa$fr>x8Tp+;F%{aRhYoKcL&GulD)Yp3_jO@M=?_6 zIJhAKTMgd!6K0Y(-F>V7%gf_9!;~GBGWE~vnA~V`npXmlFVsQyMh$C*!9Vf5H6No? z61k<0=PjRUnhJ}gz8Gq*$H+7rycKcyN$KWV=N;N+6jw#dVpf!d`fr}9f%9*_cLnRu zo~*{%pgYc0aoY+c*{C7?B|=rZO^9bfVG0=A%xk0?auR!R6W9M&WNS@&PLlU0-|ZwO zx^t{+*VuR1nH`I*4te$jxONIMWOgPZb@wy+Zr#N2RNjFXz{`$q2VdfJEd$AZ*WO{@ zX)9;7>>T6+CoF$s%>Tl}PCfhe_2G#lwKbv6GH8JJLk7r=l%x&8r$_e#*!Ou&HLgsY zNSeE^Ye$S^`80{k7RMv3baVD;k@=)xN2ZN76jk(r(m^~0?l}mxTByVT8VVy_nZKt_ zhE^ya>HsB|opaZYXlpO3yVpR>SN)oD@#b-t5ga`=v-l=-sjqN8A{BFhQk-{~S5}-n zjIJ|=9-)8nbCnaD6~qol0E3hZFSf&Jb8nTfX_iZTI5`UyOCPu7C^55!|4oE`R{XtH zFU%Fh;s4$T^Cszu$Ccr2mR7LP z7#A#=kw9kR2Y|!r33(3KoKQvu;V&Cc>?)~djZDm21NS$bbrtvh#}q6lOzkR1H%hSV zc4CmT=Lsokl87Bru9g3@-5`={^|bAs2qvIQTTobAOFoiR!w6%4lJkW`t3F(9FUYff zS~vjH_6y4+x{`rW~UGv)<-)q=h~qrMe+ zRadvEz1i~256ah!?y=lVw#atO^BCNJjtdQ++LbASO}aLgZ8 zkXTdW@dFrc-VRFnlN4um6F~>jz&0G9u~xe&4xQs?Q`VQ~kocTcFW!(h?k6#jFnp=3 zSG#xJYD7Vde6?x;Vj9c1&!pKwlz2D}hURJeaq9g$L?vixpxpz%xqHwqTJdi{CsSMF z3eo0L*!)Y52w;RNkgZ7cA5!2tC2|ryXC60JiIZPd0|3uv2{QT-Q>DE(OS|luCvyq|33B`yA3b?_s5=rYL+(L z{TCNi%gjr5nrr^eymHZU{x_b;LYSLG_LFCMFM*@=_~q`K0P4CtOPQ1iiT{PR<*MH? zS7;V$018XOAV2bc3V0-e1(_R&=swi3A~;6IGwfRfP1RAQN_{qqmq<34%po&Hm^;P}hu58Uskp zw=YPn#juWLVfIPFzyLTWa^_LF%lKCI)>q$E8?PLl$~=Wo*V>cq;S$xTCu+OJe-q8_ z{mck#L2iS_3X~P1>?^P8R^E^g#NfKFa=eCh%-9Z6bfR5vkob^^Pd%*;kl} zk7n41fK=PB-a1%Xk8Sf>{j7b^Al3-mglQ-oG**Z~0iy>d?mtEk;4+Dhh&fi_P`dmn z7P-_N<%*m5dj0Z?N+-MAi&EoXkAhoUIfT#Nbsqm7T2zJkiUiHcr9SddewZZ0QZg77 z<{83EIaJ(ErXK6UBMivM{rz~*27tix`Bqy4`0>U+9gyV86En9*=}(mpn(O|TMTuQ5 zqR4e(w~6b`2cDmO2u9aWg?Qp`f?x;Gbu46lR9HJvC>M4w-lB#83@FWBI##s8{L*MQ zpe{MEtVesm;IcxoL&gVZ({PMFcaQyDs+J9Vi)hO3k1u9fq$4`}A4im+kVP{0Ct?P^ zr%L(fu{5D&7wA<`NNrXmOb)WPt%D2t(r?OFD<|XPx4sX#7b{LdT~I%4iZDONLvPFP zsT@AN=ewTm&$c3~c#!!T^3`?qu;g~DWD6F!mAB4V;!;E4ere^nC6;<+G0h?S4DJXw z{FQYdA;T9^USPL(Clu4taDPwx>p@sW(X?fd)fZKC6RZ)Kj`8_z zlCy7ZPXXRRSN@aFZV~PQE#gi3@xtfLv^9Ynsve)S;m#X!UqaF=#4S$#U^|W~hxEH~ zL+P(nV~1ZkB^YaGm%#=leb&Q9_j&?1&bveaZS-mT;RWGg6!g73zjSUS5vvC94|h_e z#wtta+xfVDyy-vf1-z=H*24h1Jbrij<~j1BA}h$P)sL2Y#wL%R%~<+M8be-Bl<1X( zN!DVjTpb+J#5;3zzSxM6CHt|Iz|;mjtV20v52P1A*H|$hY4LR#ykY~akaOw`m-)Cj z9L*&&oN;QBoWh!=9GVHcg=2=>%YknNmvEiLXizR219N6dX2WhsQb9iDPy^qfH>85+ z){c)2xyP-VB|uOVlu$a8txlImpwS=U7BmVp_!vTc`Hb?V_@`RRfryh`XqUUE-@`iD zUHdY0xR*j^^})24Ze8QSQXfthKkW=`)qGKvESssZ8D#?A?=dpg|7EOuw3u9L^&4Eh z{n=_~bc8RKYZ(+>WM@tySmRy=Pl~{HS@^k%$1MzwGky_*vWHG&!?dyk1=Lg04xEb1 z<*@j}o?Vg{$A5N?|GM_}idb0J_I8sp9beb?gn65GVaQ@#XJo?q4=#l#9Qp#Ri~Y9M zzyI(>dPYygYiklCK_`bzjV^=yW=HW!CpN6MJlmyrP5^kh4^hu0Pj@Z;IENRq+5%GD z-`48-w2Ds+e4bLPc?|bMxecBs0cgzam-GjMNd4DfVhBQA;z0zV_%5f#f!exUz zaDLC}>7RQio#&M_arAH2YFFYz zmYw5RDK=~?e!~y5anzNR>o5N6YuKCASPs_`#opDrd7ZP|8eesS=R8v1OlpsLm5aC> zKIp(C>*-D$rcz$SJKp1oe!l!z1+uhrP?m+4J^790JBqGMHZ2YucuZ%`0>8Sw^?IxT zf%zlrR$6nF@4aPGnd`Es#Nj||5gac$ia8Nr7WpjGHeG|a;=;ZPUl4#6P5PDi5GED1 zqW!l1C^-mu{uc{CLvt5$<4>5mdj;#yb#Se83aDD=Hb-IIk&46nhMuKpE@uSTE4!$2 zxx=-oIH)j@SqJ{!trPVq(?fnqFtf<=-437c?pg{xk14Qh?fE&H7~Zf4-|3EDVIi&X zSfpHCT$4jpuLGl^Owb$6)U54-j9wcs($W_@Ouz&+8eNeHjDPNE^WpB)H1f&*CxwDs zI6@-fN_pqzZ}L)NP+g8^%E)zoF?kmMvgGW$0f)2?`T?>1z-B|xVlNN+lU4S7l2tZk zLDC(KZtP%`IV=(GD%!S=x_j|FAvXgum305u;)RYjlyd=ImPj`uSKm0pU$D9Q3G-6{ z13%x;4`&FM0D#V(_;t4evDPpOhu`sMj-4-e?!L&i%^MmNw?Lnn4|wxfcibU+T)Z|Q zFAjn8{FBguiT|!5cJ(;;%YExKa#!^^v};^L`IF}!%D->;69^;*(nn=6`)Ad=DCveb zsGiT_hX&ed+5y-;F+(WW0y2vZ&t73tSSW9g?n!{v=ESc|O`GINi70ZSaSDtU;)KJGGKq9x>SGpExw4FcB~4( zKM9#TamrJe{BeUYiK8n{|NHIH<_`~|n17c28NO@!C?6K*kv>l5 zrpwLZCkk@5-^*1^ufGY|52$?3pBte79T6B@g??Tm|{f|@$1 z>|Qoik5GRxRnnwD(xf^YZqRuMyiLB70?4oGIKd-5a5Lhaz*!*eRN6sa=3lu{$}UB)2n-=`mXG+iBD zO1Aj19{5XsSr+YXqNbQ!EWLdrzk?{u!e#<0eXzEray_pz*l zhI@Wr1_()wthe}Kx%aN785kgPy~Zhcj=U2BRs$EZ1u_}biLaev-~rc|ognZ>#&Q%MNe>un=2N`sEvWtx|)>?j*v#&a_Y99T|BK0#}E;N*HVLd05 zHXlf#SW?vWTzpQJ-oau>vBV#Hy{d2cmA}#*Cvig+qpnAK3*A#B-<%w+8?70|!aVi~)0W+y)fhXI(o95pAqJxUzigf6nNi zqk8i2@F&{84$AUm*37>?;s`v+Ih)<6*&j15N0EGkH8+m$ynwvZ3*DFBOIVuAgs~Hy zv`&GQ+7Cm0Zm*6dpMw*h1DVJ>BGr2yS+` z{@rrGHV)$7mYoRG-#ba$E9uq?ksGxt5Eo87oO`P%@sUjsiua;O=79%?PVnp*K$W&; zXAL|{9e&8{AM0vM=(za1U0e4y$^{ETbm>FEvqGb@vf$z?imLkSnQY=I9rxGSSgX*z z-{xX_(f-`T;4PjwelN-Ybx2qKeMldmuH2gZkB$UZkJxnbZZ&0v(nNo|!Y%HSIvVB) zwM7?%BL91#I1aCBXXer~x@bsUnC#w{MBu+g5@-E3~jJc*hhmev%WP*iCTie4Sl)@3$* zY7aoVoGKU1M#6&2viVQ^3q>68uH(PiVvt~O)D&VA zXRdzMaKo*dPv+d=Lkb*$&DtRouW^*-_4#%FNTZ`FoF{CKMdA;<_valxQcagDt)t_J0lCMC+;@rj06FZ9gZYNtBSht})c z^(P_MWo^9q8R2p9HSX?2LXrF_>fjZVP-%pVeuznq_um&R`*f}Zm>4O2{pr`o0{6%C zn&Yg!&z@$+hUN=4XWD7A4IIcdNMp0$Rp^Nng&zkj55O8y&MT%Ex<0!Pb;e+{@C?*< zR~*D@le0+b3db9S*-tFrBtor8vZi1}SD_e=pQ%o{a+Sn?G&=LYU;E#;?SDN>|9Qy& zel{HVPdeo_IZuCreNKGXy(2qokP&%K$aQtqd^#ey#BRn|NL)^Jb$3=mvoRHWzeP9W z+$XwR=bf~Ax`ct{>n!OEbFT6hX_Pd=?)JBQDNnkbO}jj1Z1D8S7`xx^^ZnZ;{dRMM z8{zr%iZ%BKHCn0f4sp|nS%HIjy_x4H4n@@5%!1V)it+b8WO3krcnq4(b#MQ^Fsth( zQCGHsk_~ITYO{R;^DKbRIKFJ5rQ;}Cwd@vZcL64yVgf+Wr5oZU*~$GB*qV06k3(JH z)_+6WzvI>a=?JdrK538d*R7weWdJ5@eg@uup(5VCp^+$v59>=K|m zCD8(3#J)ho79wYncrnIR)Ln?{UD9wVrT^hHuPAfqj+rkJ`Vz{F3yn3k-q)aP4QxLZ zvgo)erebRCJ&+HzB|Gos94M?leBhXo%1Ifvp#uX4SA)OkrkmWhlorXjnR)LZo6JN3 zaw2v;ms!xN%O}$Q0rCM1|DDXOv674E%7lv5oX1|Wq27qq4pGZd$#pT&hwQ~@_^!6{ zmdEkijHX1Q#gild_f!0Ty#dbAHqR$_#xBGQX+I34g^O;f3E- zIeaSfzPYS=zlokwQK7L~3Q01b<_7yH$y6JNT&l_a{K-XJVlrOms3^Eh+p?xT z0lC+3_Y`W~#Qm<2kINj}7d}zR$z5Y}S+R;hc@4WEc90O(M{(h{EKjl;o5an#x57cF zvyIf@ydmrz_DdtjZw?qT*dDB6#zI`MC39aCS|DIMuGD9+t(>&v<(q2#ySJPQPRlH4 zYuH)1KV~{*7y9E@)>b?DQQ{g(4*$>BT}O*@`npDMjD>$}Xi%5=txJRSbMOg#&v|{K zn_lGI^#P;#`@#)FSyx3V#L`Bai+E&C0`*JuXQ~~HX|D|* zH*wkOe;AqQ#58qJ{FaaYn$L{G8Xl6Y4ZNUpdGpA* z4_t@A>|QrwPu{RmI1sdvh!?ZQtCq>(Y!uqGt-&Xx(QoFi@p{M72lGJHQ6d}=O17c3 ztNys&d>r3+Jd)DYzd6^Ld6z@|*o)YSH!IH8?0n_95kiwiqc#>naqu$h+O_eXdhW9> z8}(k*?*Vi7Kb(RtaVdNKv3=*9nrikxG$EEYR90Yoqtd77z;&STOT5|=M^!7-Om}QH zEE)ODl>-*4cdwRaxm98FYTjT?gdv-TX%M9U&asjsI)mAcP|LS7Pu5m3rVhQIp1MIl zKUWr}Ov^hypQ`t)RD4RHhuAuvo@PWxTQtsp7I5`PyKB<4o`aMy)`}URZs_yU#_bkeuM{a z9an7Qt5x-n#a#%^{gY~5SwFG+`a`U_nCAlh>kFuj`}5^kw(Q$SwL;Jj*hSghcW(`u zidBiP=T;2GNi5wFY3S;THecIv>cPDE9kiA8SyW{>55`{aG?jLQ_06;!c@_l!0FIKj zeL!W;9*)2H#jcE7Kk(oo4eW2}ce-f;&(2G#dkS0y3XDWPeXQTLoqVv%YH%0kP29<5 z)1s}MQ0o=j1Z@PdFg~@Bzvjkoo#fZ|^HJMhafPXxy9;8l3#(^^yuuf9*f7~*tqAOL zT)AD9M0v4x^%%rY8=VlbWFo#cb zU6yx(zs5eHhLYI5Gpp;qby5fp+=m$`c-X99JBO;6vEmfjH2`V>lT26@pww{va}NwE zZk-=Gax^I5#8t%Et8n~qUaz>t_?I@(`a|7?7HKB#L*?($Mgj?5y77kB0z;6dP*2<|i8Km1&2_fQNs8^!i&n4|hR!?)3lp!@ z%niKU$q_#evWq$cW*WBHY~TIy)uaj>M8ChJVZ+JtCF3})lR=(X?(a(y;G8~tGqdjE zv3km}lO7H`7^9tBuZ@XuY<`B5Cf#pmA;qR@)CST2S64dK;90u|{Hz4now71$fOJb% z{+88xXY2{=qz-^{%dxHFYZkVgvyHw)LHh-cM4DIe11&~!|Q!Pr0t2YrO z1~ej$i&^Y{xyKNPTH0m>Thk zDewjc@iB@JZ}P3-oPSbPJUVuL=P^v^=tQDy!szQWSrq-R*eXI1t3Rtx-z0no{p4TP!ZTHnX~Y?_{__m_wTE|OHg zK?W9w2jjtn+}IbgOHH|L7RTmihD8JKa*T?aTDYv@ju3_I|C`goUmchE1Z7)X$~{M$HPK$XLKHIWFl^rQ>0t0nFlLlF{%rj6_z&b@ZFnx-$M!iAj4{Xj@rFk8H=+%(|!b%<*Luv~0O9 z0;L{4@;5Y`Km7Qa)<>zkew4R8e(2Tac&R;P>GQ}->NG^HdFiyuFG7RI5|OyDnrp^n z{4O+yt}WyEO!My5ytju#s)z)mWLbwuWyhao7L^XkC+%pYjbbRuU*!eqUYh0$vpmz6 zU(SOv?2jaKJWM#>9bqts{<7K}y8m-OX7kzGDW5dW-56TW$S+~Xf38a7>tvqWJVz`6 zW5-Y8wJ)c-se3SB|592SVzZ}wxJj39ZPYEmb2pWouJ*R#;EQ5g?a=5laqZ9vLMc7B ziAXe9_$X_cH$Zco?o%IixXxk)+Gep>mxoz>U-96+fJ^PleT>ReuaD73iWv(#k+L9(t@6A$AM7`*T<`SOMIxG^#s5^pCs%s-I&Bm7?i%0#P0xS z)M0+6zfgAQjeVYNugW}o%_Q$;22CR`jp&P|HDuo7aK2;~f%9CLPH{f#eVXgv1p?TP zqv)eJJd%%Q2w9}vGP<{aH3?t&H35=cqVb8unv}*Cm?E9RGe)PTjc>#Pc{PZ|J~bUTS>qy|u19_e1woe!m~OV;(j#6iputl@GS2 zbls{jv{u@ZWJjqWi23#SI9CF@imII$W)}+~I`=>-F0^auL45Ck6Ng*U#{y)<*LRFRy>^as@Y_sD*Vwy&XY#z z#{z#Mk>O2iwC6@=_CDI?^}N!lg=|@n1=$~AMBWl_`;g!DUVz^Fxy%0c=X5$`rRfmH zEJH-)%P8Cb#d(`7-H|@j+*?p4ke^xt`w-ze$<^!Qg?dqE4_g7g>+Z``R zgie+{DB2%9f08vDI0B~m57bODvqu!_2)*01%@?I;7c#AzGXVkJdu(Efv~Wf-!1n6v z-zz=!(PGm`76Pg`?FiM}|K2w(NA=%2;Pq$Qwq_Jev*&!;zLS9g6cEx#;@47BKBlOW#blqLGFjRwiu4yXpDC=srWHaXj>Ey|TT_HtyWQ`92+NkSJ3% z^VhA-2zGrnNj4OlNdY)%AdbgwR!@latp}n(7YwCKXj|9sV)N{BpknS-;_YRP)fG`- zbhs-()Y`>5ZhPak{bjPMq9X4yss`(+J&M=9R-Dx5=stSz*zJS2UY$Fu!MH#fcn`I9 z@8Xa=C}TmL>0fO7!j{WSx|+nQYO?a(hq=6(5krXB{PGUhWo!Xsr1VFWu5Pg&wHNS2 zeP(zl&)u3bphG8jaT^aKc9q-hs%7w_#RXcTg9q>6z|HmC!Y{e<4J&=zF!noiRL8-F z4SS$S!wMuDz>^0fgV)`T9f<7;)Y#|OZVvUu46)wg-lofwrCzyV?uEaQ7*f>i5Ma00(j@;UwSyI3!jx6@mq@-dxo6!U6cda zD`%>c#A4gWJ8(0iZ|7ky1KE7T+m-!qjjDjUv!^VTL}$Uz?G$MfY({)GJd4-1j-OHK zOZV_KbWq`gka|Wu27f8BiZy+vz8MNzuJWZMOI5BcqObMaFjsOtpXFTH?XuOtPWhiYDwqBsZK>ObNfMKmTu6h=_cyfqUFn^ zrq8<#FxJnGXoU9Sv4znXRtBJKx-iK_dcTCK-1oc;k=FqekNW8C0QoaP1WFy5Bm`X6gUqo3^pul^s)k1T3+s zgA5C6>zr6Cda-U%Yljt}?SV?mIOjV@`m?gw6D7aHwg@Llffr>v$4>dY`ygpr5d6wU z!<;ko_?TTR3Js^KdZ75cLcw=N9VtEx0}f)&~pPjYmGMsrp$HDub_L?*fz!;Q8g(xaB$j{?|UPY4q-Jw zGhq_gk(;50l1oo(w9h5?IfDs}^6nEcpfXwJGkkE^e8qU=T9I;BNYv@4l9k`hVZPgS z{(PYH1BEA`m$4qKpTbKY0K29bN`yLsMk1%Ag^a`8D7GqtJB2K=0u&Fb3S(k=J{(_j z%>U-C$Iy8F?CZczifZ4!?&vi#v0?MO=Sex9;zx1Ud-;e8w*C)J9=hfgXFkke-B4()hu`h@g@%9DJqt3-&s3lOMrekAK`S_xxJyr5O2($i9 zjV!eCaJ4jg=UkKqc^??ZM{gAY1+q^`Umi2v3TUSDWn>BdyPb9TkmvEcB>qKL&E)d= zTOWzuc=T6O_hs?a)kJ)?jJQEnDMi-?5+`BGnaENTLv|f~C5xJmDdq@Rt5me83H? zTGrOr{4j?%Nq{YueiYP8CN2RP1y!4VxOD_-ds}zAnXueh_ECIYrs%vt%M?AUtpTvn zz4*u1w!{9YOjz?7aKc_Sjxit@Vc;TyS}5COvX7-9nc0T>XrQ8>#0K%qEM{y&z3&OSMD{gac&+HX#-~TyEHe$U{zO^F^O3I8 znw@IeaCjyTFw(8K_Xc2~X=F_`J2a8L-Fx`3q^>-qYrMdYJ0ckj_KC-PN)(xW2#B+ns!j@H;=o)wes98MbpqR0!qB z<*XrC+B}o33=Cn;>YR7ex^eBEz|1?8Rb2U5eGZATJ>8mWi5TiTz_2q&5xu~!O*i}m+{X?-usZQq~~E>h<`0PXX67*P8bT zW(2GndQ|8%4!`E6jKp7S3wMB0@#~Z)nqhijKvoRV@KYlxN z9`>oyEjcG65$QZ2JLf^f4LQU0ZlsiNQU~^4msp0Em)A!6TNPB_!fv*5?=Oe^ z3aA1~?t_KRlC`&w7b1f(Z<@kowp}X)j}8wt-$dLG6WSebU`+eH1W7vFJ(b~2bQ+ic z(L=v3SovOuegEf7I;18Ius=Xk$%(bE#xz>UE>`pOKAy=lrWQH$g{S>-UoZ+Wn1&6_A8$ z31;1QL{(_AMTbkC(YO#*IkA)P-J{?sddZMu^inV11n`=?LvDLQ1qduOQv~BCUkzi- zDIw!ty3Ah9^=&5$#YaKZ7=PBK>gQ+%-^{}>@8-`XHInz8Hw}_PQps;`m80BCp}U`m zZ!6}CcF~eeGXH6=-ON-w9Dk-o<1o->bZNg;!gay%XdFhLWvpdXcg+s#6DJnjh3XIG zMZ^on#0P=xZdb@6fPq0Way51?F`900O4FOj2YWprt+}5MS-^rcWU6E28T^cML@Cx* zS(KGCSH_#h$C|Tcr`isjc%=5@%@ax-#IE2)=A1QJ3lN=efJ^oboq;zmUcglT;vW|~nFyom|I97+_LCpPE9u*j?(OMX!f%FMC>?3oW{;*(HcBe_qlH{vW$yR5O4%_9=o75REu z2+|;FdE}ix*bShQR`w{W!se2%_d55%!~>M%)cBGv2ERDD#J;g3t-)Ht{JO(j`Sh^2 zMF_o%96xq}1uzI`wD6SLz(cmRM zP3&$rjz>!9=J|UsYma3{Bk{lUVL56_M4fatzd7+vam4Ca@M$4W{Ge6(b>$4YAQzP= z1)*dbp+2a9mkkikpSz4h2VUnh%j42sSt&R@snC9P=*p3lgL$q8vk(3Tz4{$`IC8fw z`vk|(kqe$i0-_kxUPf>2j;*+?O4U_YC`zW0#oR%yLC7o#g~ zCW%GeU3RqMPdm>W9{egqhm`+7%lm`0JIzn)x*>;L7%du84B3vJG&}n>e`L_{bSXh^ z+M*QW0Aj6IsF_q;`{f9ZtRs9qv@|x+cKIhGZ0TnW~7`>)`H*4v{MAV+1hsK zMNe^YLtpI6$cwalY{>zNI)zT^**iBmXG2n^A?}W@@x!%9D&*470AU44M05)IiiJGHK**kJ8&}VVXV3 zy8!gstFhEYdCYupzqQ(YUumn);pLbuqmc{LBk&Jtc*{|5n#$?#DcKE6KuXU1Nxhcu;r)@*IWf*!t62JAW%g;cCe? zqe~}h1+nqnZPItm?fw$;-Ah~Fz5U5QEOXqG)~E&aG%>7Gw7izFpkX{sgHNwXxqS`? zxb3(j1)_WZ#UdUpnf|{+qwhb2hSvrFp~3B(lta^}%WRNN}KQIMS`N+hh`Lz&bM z2=ZwzK}+2gmU2n_K2~TwrY#n7V&Z^RXY}RVRSm z2Xg9r9_Y`snwh2Xzg(c{k+v9;dKoo@@xh7x$apg}_c=d~+8y>?9;x7bB7a*-w!>c+ zF!Ws5{G4Xc;7VeAQBC&G;9#bLEU2yxJ0#2X zr?BIerw-Z zV~P!vfhh3Li$aY2gLyW*@Bz$rDGN=I za2dYvHx(_tqEWlw<>l38+z!k{4j_GbnQJ?zP4TTq-TRnEZq|+ z?IrGBtJ-EnqE47=l=!bR`Z3@ror>OW7h|pX+>%HAan_W&u*?^?#*AN$WgE_{WPXh( zjlcB)kPN^O&JqbDE29Tt{&*N->qw$^0k@ZGtTD!%Yd#>Q+Y~yV6iv@Z$1WT?zY-Dc zlBs>mS%eD_X!*%+vrJ?I=7^{IGVDP%ul1T}y%j~fx^SfBbf#P6;=X7A=reh~qwVa5 zqu1rIO?O8fA>s9_PZZVw8PrG*`Mn*|`gwu$k9?~8h%L)2NWtu*$?wIjPU=rRfip=@Qo&o0jYL8H-gQer4Gvcwn|G~2 z<~t)tco4Eo5OObVe4xpZzSR~#o8o%_#-(APCKqI(_f7_+Xdi5xeD{CwQx`ThH`6oR zBfLbKL=N%N*8AVL5zNsfL*bboZDl#eA1=kpCAt(ELUYfnkD=4UBV6ARDy?{`gZqpN zw*P~mkcR@%yNCHfQFP{8jQmdlQMEVUMdk`AMGH#{q{){xx?=mf1zYYr#A%4!exu+y zKeL_qgMM#4O8r_BFv<+p!OcDfmDJ(&=6)80jMMqvvc?{}4HU zjJ|)**TTqWb7vs8XxA4j?6?ZZ6^|4|uP)f2;`3d)aoD6kDFdgo|HEK9d}vtwepTpY zWywT#iBPEvprgj|>JpqSw?wp(>)!yZN#dnhxqdm}cpW}g#oBP>P_p%Yil|oCZzI=l zMyUeKZ3)-_pxsFlqg3dK`N|gX**wlym|V?1ajF1GspAM8ju*%}q*iV2g32@vh#d}) zg4DNeJYQ2dFcCWk zL_dHY#alCYTM04HDeBwxX3utuSAD~ak%KjDJPV-3TN$SKeQ;vU&W{?+=-KlW_`Co* zgGh>^&{HaMGld#i=qCDLgzHny9{9^yzj4nk$=ye&sB1`lhH_)dPuLTWLik;5(iO@~ zt4jcelYu5=(?bB$EgsJ^8bgj+ZnpoJZUG@{z49aSaTGSb9*8;)UX&0V7+cRH{L%xS zr!R!Vxf2Ch#2w`dJC}bLGuI*l1XPnGuS7_c?A{WpER3cta*i`=em=Jq`}0N>|BRNO z;Z?Iov}=w+TM=nYq5-1n2l-mNjrP^&zxgMh6&Abd;u0!?aBp9fFBQ-M&z!89o|k@O zm3?5>QNX~pTv&dx#&yjA0$WrLww$bUWPQcQkK{UVB+ylxQ>H?U)Q1JJQt>N$ngOL! z89cltUn~EKDdAR&FOz9AwPvrA)5a7;@7MYI%;PJuqIoP5VLQ#OvAI`c>4Gq8F>PER zSNij=_KOYB;dslz3kWWe}X)Mx`8ff)u z)d>$#jl#ckB-5pw_%?%Uue)K7&D@zLP425v>7i6~jQ)79;NS9T^mK+LHKJXY#_AT7 zrhYq+QfhTF^GXwS69gb)sdQ*xE;MBc3`0$6j2a+n&d#L(bLPZMm2}^kAyWztloNXNM`iUv?q%wjSh`7s?u{VeBO68-gqIg|9KxlL2FHq)6 z0$5|k{@pM=uHV_^u8`&7yqx@ZA)N-U?kg4@UMi{vkRr9{@#LLO*w5HWc3x`Pmtc%|7 z@GF`-Hx13ahgj}Alvr^l}4_1sT z?)@tHV?V07aR3LN36mDBwtPu9aHz3vr~zy55M36lNN*KL<~TOWaG+y3!DJ&`@V4qJ z*@f$TrSa?-pI+GOdkYu63j2EmrANqyC{Zv0&4vSQM({H`)wyXgCr30SwCO^zIhv<*w43aC)jXMSi`EO?4hI~gO{x_p-F zaz8Ii_|eC%N1YV-6y9BjG$ZrtSBL1|Kw+V*eJ=+{D)6dN`-Fkr(pkfqTcS-(Tp&qzsvwXk*GUD#4?3PG|q+_x%eKtA8f|qJ$BL(z3hJ zQC6oy-C^AgaqyEdk{}u#NQ;%0uBt8p@2Bw+kNApd}b4mEYb|qxjCB>*9^q=53=dggmo8|dl6Zy^E z(rkICgHFE-Y}D=xVFSLPg22`qi32;%W+{>M9(E}N|C8=g{ER_zy`6oGfW^KeHxV=$ z-|RopNwEh6YAKD+ZXLDw02UcY5*eAdb_`AT!aN}_ z+B?%wYOZSg)+dpNWk0_53##6etZ4l#yALwC2+bHO(@Jfcw1VrX7*G~qR!=K!{BrLV z6Wcyr68|&qDBucj!PeOITKUb=D_zP7suPY48?KZqu%9G;|7o(m<(xs(ZMSd4ylrnd6SHMiAoP9u|&xeF0&oFsuVWw+~t+P17z_)ZhvnHhr3Wi6&L~ zt2GA7YQD5o_ecSx*zQHFlJnWJjJQE&4duI%HAyApvtQk~la?2vc5=i%XZ*U|v_`V5 zJmZA?zWA2Z!qqn}>bGf&+7kNVPg_F)#2B{;gKSjo+F6T3wdmJ5^kkx{zHOe(CL60m z0JJCN;!ATUOX6YvD>|%utZ!q8gj(T-zgQ6~pFTS7-XFnWg(^d7XoX8u)>9AU_KpWw zx!%m+4x3p9&GFjn)x!@zd1D3h;nyChcrnioC=8Rg5#-vKe-kQTh~d1%vDVKick~fr zx$e2E3mt#4l;nr{PR>wYZ>AAsZb#C zd7^72Rx!t+{LR0;094|{Yx7cDY!oCN;zEDxo-(n1-G!mcD%?*acn#0F(j6{vf z!wbueSP-A0NImYS3j6K zp8tIRpuz#kd_ftDqfn7ACq5(|(v{}6tcWR66a}Pa6488pfmdWy1LBv zY?x4_;@OUH81G&Wrcy~15xZ{c{#<@2uK6MwSk!qR5MZ7#yFVR#nKt#(v-f>!(r5`Y z-H?S-R$A#%BbW1__orOkW=$$z&^EtU@~9I}+wwh?3O0T@+SK5>J4LY6#hJR)LtNk+ z-8hQHpp^5-wBubD_?)Z_Y4=RQ^>IHIJaZ=DSdY1~hfh6W_@UfDkzIT<$eNTOzb!lI z3eefmlLR}0CJ~D9HSZX=9sE^1xwW^xLEEgz1-u;fHC3j5s%#-LPxYn0=%Z>A?XOMr znSeiC5dQ-xwkO-fNNaks`>IJQ4W+L=T_Cq!X1%0*BBZM#r>%g&yke>HpxdBfZJ8}Y z=NlP83r4~G<9>Ob>7N#31#eX1q$@QKgGfRz2X0embEk%n>jRRDhyM9aQwHri(UXZeWCD88c@TtNK zRo7vDlL?(-)#>1xG=dmB#4ufLSY=`iq7B=x*W4b<2EXtWf|XE2VKtQK3R}0kWq(Iw z^B^D)P6zXF&L%)L2UGAic4Qjyw;OF$wTHgYmJ2TQBI3y|z3UU`SLP8k$2!zo5?SL{ zZ9rhS;KL?_<;POdS~zf(3PJdP_=ulwcs4!wi)(4L^K0e_57mX5$&DwWV%w@XvQJ*R z-v}SqC7?$9xr9#qMGUc^|Etdju^#oHFH8Wf)oR1jkeUEl@-)bQ|AuAR6TlAxdqf2> zF{Fjs6(zDl3H9?MhhRxmn;UU}yM^6#Xey9O7OqJ_8-cF7Obu*vZ+r-oaMCfCEVZI@ z=D%1U7XOVwLWK7Kv1wh>b;kXQCt0Id>$u9f0PiO{q7m$R_}auJqVvT{;z84?91s=% z<9EJ%E@Ay0VpTFKN!ehpJpp({SBbfQ(sqZT!icE$!ZTsI+P2oym2?opi75yfdv{e) zpSN9CERmGmdJ7(oE!^jvAC7nVDtY-}*OT){`7UpX+Z{PTJaCDBWj@m|tYke0o_^mu zR{vly$ohsP%=2jupf?%i)X^<}ac;F045*SRv2=YX$;5)b))G+4hPZ1Rht%J9q!T&C zXv=SRY-9iNkF*UbvyJn^K7SKRyO$51eCZb9*jGW;tW$Sf7apVq_#;LlWAy=p*d*Vpz& z=|5{Kde@5942<0H%E>8XJB}!u%G{5ZG=XqoYGiRqtL~Tp%Mm`ZX6wTABRuZ(XDce~ zn*-+Oj6wVxIn>GOR1jkP^^XIVc)oQ9+P$he=I>h96vfo2-ZkzjGbV{X$@k}l+dlW_ z$EJXy1NBg4{cE3)))VNHUg=#XGGjM12JZ56k(%)k=-S5=^`gW>MV>O=j{nM|6=jXm zn|1UXxyuUrKD`*sYHHfff3d;Hzmq#<%=fpm_~B+o@a0M-kPVt`!c~~{3yzGCK(yco2E;FF;paubbI$z8bNQl+%39X58xx05)KHj;?79E zH;}4+OS(OIiyhgKQ17v!3QdHjQ_-C_e%FjWTXWF~hf!-d-7wdTUslBLY!wqeCvG%r zcr0>{`gI6S8bpr2aeZ8i?f7*sVUB%E#ys3nr1Rm`8r)N9_4Tdn3dSu}X*a6R`W$XU z18*NQVGi>th~CrqK6E9v(s(5Z=RCjOUzwl240`CfK8Cd+<1Wkh|EY0R7uN9pio(E3 zlx$5}zdZoPetzo<%7J9a?~l#Ud-5w>dw3Gi9?XW)Q$qq^ zT^~Y_e&d5rWd}zkqBTbTKla``sL8(D_qGCxQba^R2uKqUuz}JN0qFutM@s0uNUupm zK$>(gDkTbYdC$x{!@$5WVREs4WqsHB zepbbp7ooo5<}&lcOjcE82(XPt)(SX}tdR}cms1z_3GAQd1>0YXur8lKULU*6`e&&7 zB2@No(;xJ#E1Edu-{9qMwA)usIt#l@`QU2%U6~bNII}Cn1q8aog!GzH)CH zt}lj{>Mo#a(uNBjIY2Wrv<9Z^#SWRq9>Ij~8ANH!EU!DllR!adb z^nh-z*H{lrVPopI@)XrRKIuMfXKk3T+{Ydck3Dy^w#?$LSHX((=M6&FYWw{%fC_ve zQpG}$2ilH(TQ_2(MOL?d?~7H<*uG@)pPh@^(N9Z4@6q~?@+G9O(hjz{#NFg|k(ZQC zJdhLXa)}cOnt7>6DVr8>Q;grLGmp7121Mg1yU@D;u{Z>Ia1vT6F&rLtT62oUKIO5I z+W8UG22}olEXqTUY~_=ldkP+sQ=I<+@m!b{bS8M~D&S?-pi{Zq==a*$x{4`3sLmN) z)^xfs`|#tO%tIv#)rN(fEItZ0pL3xSl+O$tnS81IbF*-BzrF({#-;=NR0cUnIvgLd z**~n$jZRQRkvcWj5+p*+ckF-O@Wb=#;>BlVI&G*FWqrh1$d9pC%&wHJj`mR;$!%gJ zx3r5C`#o?BF%!WP&LwGpV@Z_?>R=2EhG6nVOe(|1br`0eQ=`?Ly)c{g4tcF?TY{L@SU@~hgz9q+#KZ`3O@UAykT zjPZvB#4yHZ;me(;e-4kioZP)X^%E4E{;1~wmOOK`Sy(9TC8$i5P&c*TkII@&%GcOs z9DpeG1k9s$@S+zFRGf+5b<9tMh}wMVSVBiugA;cy@F1U z5VgqDjf8el_^_QZib7%>N>|;DME)Bd=@{&~D!)8_MZ@&Qz^UB|g_C};On|*Lh#xpU z>!xydq}?R%JSB~AkwF>(;3JjSVr#mlKIj#j9cW=$|<)Aw2j-%6fREO1^&>c^16BmjWv04YubA?z9&Q- zjo)Fsr*!Qqv&18dQc6Dm2y%Pni&4P#zv%rm@3jB(Th||kw>|_*1H4|P#als@*uGOx0X|-LusF^yqIu4in;M^G2?TV zg0!>u6dV8q&XYIdP?cHIXT1PwnqZrDkPVPWOg-@iI={WzY@+WprRwV2!#vIlGXJ&i zMWRZJB}DcEmbSl_GChkmu6i9;zozW651IyMYdfLq4-6NN?zp6Y@I9zP2i<1|GpO?) zRz|RwUc>Nll$$0e-FJCcb^H*gw~UBmz41ak7;6rwy7CvH#MmJp#2xJWqDcl$tr@T5i8G)(_RD@YcLVI?22BJIC26?8X0N`WEclrA zr==S?f=FJ;?%aebodCN(5tj_cnn5MF80q$mjJf`s+h_?MZss){Ev@Xk^9^?Vh&I6H zos{r4+sHjb!CvkR{Y{d`>oW1!uTVaNpm%77M4FHAa^|Xq`p++m5#w#I+Zrq_Rbe+{ zHP*HVZq8=Z9BM4CY9U^&Jri_pHv@fx@~LYW$HgHmxsyMPCIr}^X``7NpXx}O-?&#A zXh0!8VdLHW{=QUE-CstAVl1bDgZ=VDT?zbJDi7cC(fJcAu%W%@wWC|!8xxNwus-Bk z?4SX-2Ha3^yh%{UG_5{B^--LHlyt&~kKTg*<3h%9;UnW%o(=YH^>1+f?+B;&<3}*> zA8*P_Grne3bvK5PtWD|%e>Q-Ww#pCU4H{SDyZ3yT0!3&~Y7Z}813WB`uK~a_RxWFO zZ){(lBP6F@$|sZPyC!vabA38BwbrBD4)cenw3UU$#>5EMq#LDP?)o4v8zqv{^?rhx z>^7tg6$mgWQB!~w>*VS=rR+5qOB@1PX_-WeNqCpzbh`^;8ja-f8fMP2?rhinHXZ9& z4zz!PvD{T-4j+cDWgd3OuEGKrwUw#5a&}H=eSyw?9`$aA@@4c_hwoJ)k|S{1d86W7 z`5I~2Vn^3n{`tH6#!j`vCj(x}zy=2>zBmk8{6+M}FIluOIhAUR^E+a2Z7KBBsF z=rC!*(6DYV{jTVgob;FI6L6F6&V9L$w?MRSJkA8gBY%GkLDwy2}mriq&9f$Nx$IHGd$c)9|;H z0r$?sjBGHRe=J@q@MTHqb6&uM-uKlqOXaG*X`4;4iGU(XnD>KWiFXfBVlg2gwOjiuQ6%Zy-F*A>%4!b6+AjTgThtVsA4;!)8{p!YqZl{mR-F)$%{Y zwbU<800-vHt^dLm0tZv!u_Gf2(&X(pFy0kj6kz+Aj)ER%yil6>T~&2Q*(-isR`=MX zOG%1la6qhNp=4+xsbE@pML;P|(Z#;;#%;^MMD6kuD z_XZA%82jMRV3o0^ck#__y3cdIM{33q6;i#o{Q^brJeS;tsN9F7Dr>X_AB`l*vnF@WIH&Dq^bbt zj|)xbJDC%~7Ho?s>0%P z;D3$aov!7_TE=M^7iZSk$$o%`jV^!;+8K}=g3c<0taK=RMGok(OuZ&c<4c_F)4j4{ zt*UUu-pIwL2Al)YivN9$K4Q2q%IDXh5zyg9S`i-3d5A43Ob?-E8jBPm^|1SI(6c_? zk4j>Dd1@8>%+Wh|y6K$|W?)_i#t3x#O_m1$F^wgHhxm`44FvFE5l7K&&Va-i?{A<| zz4yt%z?54Roc=;j8-X8{0mm8L!mmFCtF<*MW`3OEk5OWqh!4_WS0mTI+Kzz{G@Lpc zaNa9VBc>C+c&w`?s zLGfQ6g(U%f(Axt))6ZXjqw?n4SNN(j1z0K|XKU!nO&;jkPd@#l7ixS~!d4Q52pO~n ztL=QGISHv|Mck(+919#9+0jNUa>cZyJjjq76gDVHyx+#q`1qOZXxx8Nm;QO9*5OZk z((3aqveYXa#~vh$x@UH!N@f|fFw0y#2YPnl^W5%8f#GArH5697bkFGZ-t94fEr+#j z{5Jy>U>!dnXh}Q!SZc0X@SAR0w9yUEFsToRi3?4M_cDS9MWg}NOh->&&snGxu{|no zfiXv|wfK4RT2GR1P75Pu>*lJ_vel`4m4eIsJ5%71NZgQ}=Vs-7A+boI@s*Ckxi{#W*K0iz`4ZF2pL<4F6$MHw?btsrNmx@-m-u9!2DxBN z-AMCu#nLq4&1}XGC7Ks28kBsosi`}j=0%*otDQ)XCXHi3*Uv<~=PR6f6)HAXI|9Ov z9D<0^w}Y9%d|;e}>!==dt!L~ajPz6>=X;Q_1WOQ!QxUT148QWnYHvsa?-hMI;^I2LshdzUhr!GFSCMskrGJ=8I`-nI zgL;D$&4DI9pBKfL@e=ek17KVBeX=ksgBMg#8SiLsZz#PiUgzhZVsz-cwgF0L z4Pb)<9AUl$8>4ug@O&jqqJCx+4fn~Q73#s_KxiFt=jv=j5J(P?ooD`sh4R1u=l^~x z`fODBqjHC~mD1g`AKvpqGo(=0FbnN%uKddR@Wpzi6%~p!oV`hxBT&~OZpX1t{oc^} zpP*Y0p>6*^b?g6D>K1B~Qe05!lFr&f-5_s_ydgn&VTku@?kUzMg^8!mqruFlqxma! zI}MMoDCr9&z^z?ajEM)+Y|NtK#keO%k&PqS}Glda$tYE*K!nMO#5c)=oe1p2FfM9Ln+;=|K{+G422UqdT zjUxbd&Ggm7!Aw=XbqSv^A>+DHz)95c`O@vWe<+3G^ee*!$$Oxp=&oeRi7EI|L5i-d z5S{H5)vbUw8>h&E%HpG~>VY($jkqN?$A^*8{?C|B>J6WlF8{6=E45}UP1cd@_9qYY z#rOD=Uxr%$y^a38n5Z5FpCVUY3O^jC-KTrkhK;k}(#wp$#T1|vuCd3D<&}0b8_bYn zWy6_mYxypA%_Q&zX#zwmbHk3D_8SjMgbXZaX3tBOSs6+Z^co^9ciM${LOtSIdBGgS z8Nh!J@=U^UvbHtKDZsYf;!>71)f4+oa~|G17koYa5SQ~a59*|n>ge&sob4?4r|Ncdd8oO|sbOtq0;)jSpO>mRk2cE1&lvvH0Vj4K@_mv&y zMlL}7{-04uxBvX}BnfnfO@Kd|9dL=#9`By5U5_^0WxiDK^b0drZ>AcnBrp-Zz-gjF z%(cgqM)ax6l>;~KXd09fx~d->IT!Qqt|DF<~U<=yRTcMNg9 zP&S|7uK#u_+%t@$12-0%hFAYTpuG|<@M1G=v3q*N1;&0A847F-OmTAs&|bKhdhHJq zZVP|1E%X5L=*x~!&XfMHpvF))zftXEINM65r^^jeo_daJ`c7l$%7D)Ug$%^KS3;M# zRVX^YT))ZjBjF0{woe&9CxvW@7N5-d1R)i|m&7`~hlsUbnd)IARVD*^spiWXexpfX zG4VmZ27yoQ)Mk=Y*e!h8v-8klGtmh`qnk=Du7t zGZeFn)X0$n!MQ1+u0ONXK$PSKEvFk=OiJF5f|0JE^q4Y`sC0P{zw_KWpm++Jj40_0tvGzv{=u z-SX1b%OA~3>rka(S2kbGjtVF?KCPa`IIXpL?OVLqIJKY35R15jCp-^Ut;OVSVUS0D>=ZJ?b*94Y|f{q?O}jp$11w!TDyuK8Ci{K$)zeQ3x2J5 z0+u+cQ!NR6ChIe_JEonI38n>7#GKcT;qcq{^=nIq;|tfHV9O=3X8ix#)3nW@%2%R7 zbkBp<6>Hw#sg`szQmGJtP@n>CIIS&|bFUBG4W*!!)f2yuv!>&z>CZx)XI=YVAR*Qd z00@bUv>4zw-fKY8^^ujjM0uuoAwmM%m?8!1!Y&6v8v4n@}3#n5;;iMh@SZ>!*Fby!UfPYM&mA z-4ND)QP3VwRD;2E=UvpeDFo}ms&9?XmgbOj+>PC7448u!GYRaUMIEdSxPIqV@^UwuBpd zIJ_9R@IwfkZV#IwWey<7!$S)z{ZbIoE)eW8xu zQ2b-S&+@BLzAcoT3;~OyZM9^bxfKX&g`I^1Y3=c_eF0dv!8bAm-X6~*wl@&tgy*6i zmpb9N2mK&VRa%ex9C|YL*>lsmw1L@5&bhApMo+S#z_Z;g>4M!fe?#|5nHycnE)U<) z7GFX)*lR)ZW*=^?4VSAoj82ZbU@{n{gxu%#XPTPuKcSD2_N#QES_5p1|5tyRZc1C$j?_3Mc`I>&L{4yew}+_J?%TfM;k6e{^-T(G0sWH z{mS``JV}>waf=52BoP)MYu+A^`SL*a2F zU`Et;B7en5wbXcQnw`|_S|9a88F+BD^A)U4jo#B^F8gHAdiBz);i{M4e=is!jBAdj zy+^BDt)R#?;=1sJp-ai?jp5tAlc|g7TDj0G6(`{1V6~6;OmcE{>{BYIi3oM=o|1Za zEy{Ckuz77L&!G+pBepAgoxsjJZT;!T%JFlOaH>6HQ{NCUSBA@I(ZaDUnbeO}jFBRtHmcKKV)vHrz`#L8SN zPm}}B5knZRnD4H&4lcssOb!MaVn&yPz)88!4e~*Oxqj1~+*jrQ+vPm}5fwoHo0@_j zXPk%0LXVm|&L93r{1PlE*UM!eDaX*7G_80=IIbXZ)NKdkvzqhk6MYPL@oV(Lx~Ld_ z&?>Zmct=N%y}Vssozx8Z_8m&#_iWdgSK9n@*GAF!Hb|xL5!kaOn4SIQ?w-AC{J9rK z!Pi76GL`LPS$yC|tHnr==>z7Z&rdKc-=E4WBK+JhQ0!=DHPQS;N@U;!DS3REX~Bsr z*;&;)12b`MlINzT(8DgcPaI<@d7A@&q`+cYYD#9hfM97V{Lm{j;D~SdbEC;)J!lee#n6}rs z>!5&xhM8;0>!AG}mg91?LaLP-DF}a~-p@c9n+);Hg?Y96R@`w3(UA{+JxQ^bdIikO z_0T5D^}*qI!-OnU`Gd-Qbl$iGUy9=%%VSsEffiqsqGa57_c$Jl)p%}vgd0CA=H9eD znDJ^4j1cd8gK9CoPa3x(g;6C{Mypf=W_6*M=&^ zSRE6G`05X$ky3AY9&A;gjHgK5PS=+jIUHiI81L~e-*Kt4E`TLXpM!3m5nFJWM94Yx zf3;A!jMxI*6(*e3J+@PS3FIn2VweIusAi+{3atSuO-+Jm~c|Qa(gK0V`7;!ldRi5bM2%$9c zeaZZGCEFspa%<9GV)ZB$w!g|JHqu%W(Xdrmv9^|$m!-CAOeURR-Q~PSS z{EiyAUaYkA%kThjj4>5mU)IyyzR{k6a^O@6~heBc|4F~?x-WlYd9 z_=tVRQkXBl>d9=?R?WK2(13&fUk zx;~{juRCTO4vy?Xb{FS1aimKu!yfN9xSzoHGWNSZ_St>Rp8}jqn{R^1roZ0N6el~^ zWoje7_GG0*)?=HOw5D=D48aN?kG^J@IQbFel!o=#u15GKij?J7`0*KLVg1M^C2h`C z&TpdFMN59aj@Z-sk~`%+ruc6iX#dhR1wrRj^{C`-KF!^hxt#Lx@KMsX!QgC9cBJCK z*w4gRYW&MJoV_}S*-j9xR(P}+JXbI)&u#vP0%4K%0C3 ze*A=1B-*h}46483r@(}bA4b@!&EJ8*MsEY4;V^S8DNvsaY}uFcs`W$e+SMp9_4s}hGPyTRVeA%|@J(mBQ0qRf zlb0;hSCf@u78zhQ+Pa)-V4b{@nOZAxf3nT`kkV~Y`M#k7Q&1L_S<5}Zz9zX8vlKS1 zK$h94$x5~ITpx0GBM0z(RYmIxy8QWiTD3@`Jza=wUVoas_C^j}Fw7Q+hPC)xXKvr) zyc)?Fd%tqmt5n&6JmoL zX{TIYzHq9kqMVAU2*ChR z)YaIWe@(Ib_k7ZHQO1;?^Ea>-_ajd{!W@F`hAdyRyZlMT@DEen2jQ`8l>Kq*s|=!c zM<{%aDkGpBU4#41)o@r_2F2j{Gh6N;c3zj!M}1A-gRvsq7F(N8I|GVWh`Y<*Z{gcp z@;()ek17=}#?4nV zwBT*J&j8Ja>g2Wd)GFUaj5COmFR=YxGRX4-PhIZpeVrGe3W$<4vme zB=4Ds?W9&ZHvN!PZBFkaJoY~tZkHU>JHhsDi`j3FwL-0C`DJ}N6hWg!6E5nLB}Bh0ltmOwbSgHvu+k1AE5Z%r zsBk~3L`AC7N!w1{0;lx9c-F1WTBFj))spsR@`n!(8}nubtw zliW!%ISGlXY&}*=2_TeWReo+U5Clgf_f+SZ+@`e}vMK*v961f`A00tY-QL|3EPo<* zb4o>u{ST9;iZGFGh<~>H4t-opu2yc$HR1Oz2U@uW0dsSkKYHa@8D{>j}xvvt-j8{_BIBOr)PKxUzE=xMWCXoC7)HV%*$4_ z*L+>c{w}vY|4l8RIen0HJ@lI7;s|MB-niOm<&k2*BQX9}?zprrz$aJDkdm#+W2k0J z=~cUAR0B zPY`Xn7^}16FX!sMQH(hB6=6TEK1M2Y(0(}}S#~^yxsL3Mv|Q#ZW!u$2@TE3 z!5E(tv1|={_~npbWwkp2Z%uu81#=VsX>x0sQ&nJBlGJ8VF!H&+^EdiILj+ET2`PK& zdRJ*(2^ysKdK*MjN)Nr-Sz(~&B#;c1Kah@knIvITvsE=9taHC>tVn3%7wr_%fl2Fh zYhKcwJTlQSe?94WG=@F#sfxmLNftI#EJVI$k#j-5tO&(yeHPqUx6GnkoM?&Z zAPk`o$|_;yd*?B0uQc;fr2oV2%VEGNHEwf}^RCI2Lh8VWax>`ug7G4T%6CF3OeBtT z2n7%r->xnJL~v2uolH`n1s`19@_}EJ7Pv#ikkrc$@rz0T6Zj#=IqJTBoOS_@tBNbj zn!<~UijEuo`YQ|bLu=HR9ArPfq4=PFFZHHxBCX-t=WP6_ZR5E!taD$og!_|N1>zrd z#eg1Dn`H>oeju*OCF&Koqj$c17Y5-3Xkkt1DAKD-?+duu9xsywAjkOG$QOKROW(yL z);dI3Rnosgn>f5hU&h36RQb z><`JqU+Z~w3+KIV@R)mY^4l~j!L9ybPh|_hz|Rf^6=tmiN4W+4QAve z>`vF%S!dkGOqD-K6-Ji^hJ8jcNp@e-JBe3APqhe?wz5}GoA~c7YA$zNe&0cb>FA~_ z31Avjg_@m5TqrDR<`3-xW5 zuTDuK=sarZAPICR&aKU8-U*ZiE9I0Qla?{+`vv{>j1IF{?4JY$IOg6no%_MB<*Q=R zbY^>^c}3K5Ke!D5YS2^VXLMVq^af=FC!kOb`7 z_`(;Ft{h);MK0FlO^Myses+9#~crcG>Mbgwt2f{M11$Ts-aBo4_pp1RgF*Pe*3DJ2(u@S>p z4iKCCmlG8Rw<>f~HzqV=NIlXOO%O|Ajmtd2k#^!1)eqZZuU-jo-9u2xex&!nk4#2Ap8P}HoA~jnlHYgIxXiW~ z03A+@sVs%SZ&<1+S?vxC7XZ>snR}0fD6$0DHp6;OV>7F%c}|lmP*zxXhTV0rco?u1 zB(GwzP=dWF=J}be&582Iy7IyrvQ;uc#9_>@+_xDji}B5>Dg|Zv@md!ZAp1vO%$WS9 z7qd!on`VAuBtDAJXnQOb%nfN9O!U|k6Z#1^RIYgKr5Z<*rx`YDv6yl}ky;Mwi#fi- z)kytGKa4TnAZv_tkp!vDzkU=Tps9nc-N;MUaLql9&dNQJ_%ye1af6kI>e640eh+U< zw$ez>ecUMDlA3ZRJT&Y5|PJzIPX(B z$n9sy>b2>M4M}S%bt-c&kZg5nJ_;Llsxu?DS^^+f`tjU(MX99G0pyykd%FgKzZfZW z|2mVj)1uxLm8b*>%xVUyu$#ocCrWB-W%^hjSdLjs+Peb)Y}4 zgnuR3=M5Sqf~0|)i82G)<5Z)ehz3DqYET{qY_dL+T0LdFc?D^ytCF~>S{3^5o#S&= z_z!)R`aRR2c&CffF8$oBq=QZ;_{E8!eaRzPhXroD5)}5p+r0U}rSFfgm_L35(gt%H z&PYbvPW3(+KpFjHM7`Nae=4siR7M{p#S1G?uw;Yw|BVj8t!ogc_sRZVU9Tt`Gyab9=TV1y zNq)psA$2Aeb9hIWMULQmZxB0l%ep^ zd}jD4bfg5E(Gk48`It2i;SVA-j8(L_2duA%kXENih8!txOS|sl`QIzhUlISI9joCnGk8PN=oX&+Dtgw)M9rGk9uP+ zRr$}PR=-FhFsf4NC5j-cQdD$a^9Mie>v*F39tB%c7W1ZonjD+Fr6aRPmhD^A(6Z=p z9vFk|PS4GttB;G10UR~v*ek`@lMrGT#)2N%-!(`LSY3$Zq}Y?#-5Ag~9PZN?n>u1Q z1rVtjlV0mr#SV96><(4db^Z>Y#iWo0!5)M`jVx-NK?BS+;W-C7FI?HT7+{9Cnb?>? z@A{7=yI|~TClM~fp2hI$Gba2?m@M*N-nai+I${I`);$asr&g1?dF#UklPh0?C4-jd zzD1j=8iPjxktb&^Q@ zp#p1i$YDFd3gVp*`OhHOOWDS?h_DxDQ(HP?dH{k<(NM4@wP|d61fMi~L3V{9mH_0& zsgAwvP{NR6GCV43)SSeqn$f1esE8&-1Vu+yU@pcIYbB5|67emZUMk#z>|RY4DWi`L z@;a>zo&84+FEP}!Xx`=gW8PJs-*dlp%zRpyAUFNiY3CfgwE;Q2?qXU`BVN}p^gUFZ z^ZlUH;OI@&hY+UMOM1UHJJ%@_!>h-;8;V5X1P4gNfix?8xnP>lP`&)B2q?DT8hgOz zndJNU&IjMK=WT?XJ({OWoeCj`6Ur5BmA49%a)WH>8X3Q`5P`=@caD+15f8#2$rYd) ztYh#6-(A`!B#6tk8`h9%-%7V0ipBTM4C)e-5*{nIm6LN9nwh2dX5az;&X||Kzg!KssV{l))^9kK!u-POzL=T zR?fO?JG}Gjdyn|;^$VHoTUy)3BvffvUls^0+y+6!~UhKcIj-;MRGT-uF z1MU6S-~_(Y-=WtB2vxE^iO>L!^WM#fwVB2{0~L=S)>COZR&hXQ276Wc5UyUYJl~t# zFILn95pB6T(Bx}Q%Iq6-#5UTVOdpf3W^H)XC-7n~!Xzn1)3x}!&{lK>aRJ$4M(($W zY(v#7$)f#j|)%+iSvjA2GK3Xa!-!f`cc26IyVuS+8imO0H-h;0NH#=ga z?^kJOX~PLs0->P$9Kj>ojE&ySANrnJFkhPZw)}a2^`gzhpA689=cEl{ea7&%T#YQ| z_V|)-3W5W?w4<0W)2TarLQ*Zke65_c)Pj)j8EhsmAwfI`XE%$>KrRy<~ZRx`YrC+)Qj++b`T0A@87|3P$PZsq+yl0YT<#KN%+#6oEI61|oM;>?-Q+rX4O70j zY*6UkQa$F|;g};m8>Oe(ti(F>6Sz2DZ~sgA@TIyNN$1@6E#r8oGTOPnEL?iOEogsD zP-H>Yv98^^0t;{0-L=S?xVTIf%38kL83gxM^7?SM61SLVi2rn zWsd}GGgdC9L>v=zVOdJ}l{PU_sro153wjyJ&P)9h&X}JHF)W{Uw@SUBNAq75$AM!0 zX0D)cMUEElGI2rg&a6;_?C#J7VLp^!MY+TDROK75{`rCtH}`gQ8UEnlAt{W48`bMP z-zs*?%d&l}aj}46h;+G`2XO^5ybq{Inj}E|(E<$tIw;~G^p~SF#L#ap_>$MAs9qwm zUnYT9&2e6>qG$x_pL6H7*8JD}|5!qHC1NZ#a@gY5G}|Y)(!vZft&x+2G1I}aAo!-n4#cikVVkp%(Vla zsVLgI^q_^116j)D4BB6VBDiP8Gt*(eE_(Ay;>)!B%Zp_aQJU}tt_I>Gv1TrcZ&imc zTiN5-cy3FQJlfxZ7iATbBYpD*NBey`R;>-dj-tX{L6~nL97Bv0DKv>b_F1sc`EC!) zh@WD4Q;8W2o(Wg(5UW=Pe#!Aefbq{`cN*MY^oO3w#C6crJLYui?%XNXfiHa_MF_FZ zWx;+!i;G{v#~kjCnnw0!sbV4q`j2#{9XmI-n6V)Jkn0*$LB_NvEwG8G$A3+ufgzX-rAgHf6{Fj9IgaA_9BTadrrl~{(E28ps5EcuYQrbXZ?(T_w(4mWtQ-Co z-5Tw?@jJ!tA&h6-@q`WyFSQ=7Q`G3GRH#s~*l_O|eHK>xSLJ_yevYw%J#aA1OQ;z(aT^=Gx!nsPlw-+W0)S zCMJsEnvMRv;{AZ9pCAJcYJkL)#|eQ4+^)Buod7?;KI^G(2i z&Y!og7(}tRS;Q5+C*pxGswP`S$8o(I^MM>xz-pt1yH1?ve0@oMp&Nh>i&X79Rdkz| zRQcKrHu)r~C#qZ-Sho8BCTB86$t*4^&H&YM<5`E`pOK8hmzc z*LKI`F&}k(d>{wZF#;p%vACEA|63Cm)dk&v3%H8+@95su&Ot`EEeHAOJ#HH{2fe(# zGTUft0R(u{PYP!>!I1h_0%A_2VtMV6Cy7wsJAIs^N+^C3C5#1hKj+skyZruYfl{4h z%{|h`4mn3h?k4rtgtZ)tNLm7;oVZa^GUeV|9yX<)-QjW)23J37p4VYxT6-SMD)8mv zn+=ciR-FquT#4u6G-p=c(W~wh5B-`S`mJ~0;Hw}afcrBw50YdhmqR+d)8K($5A2is zWz^o80blgi$^1_HGC)PRD?~!9iJQrW$~&5|F}hKc->cL1k2qIlB%-R{c~^+B`vyTJ z_mT_7>^qR2DfhsK=f4Cw%}uzBXH#xt)kJeWW*-Vne z7H5gNOI`vk{l592Nlye~S*jTGq2`s<Fc;|mAVak;iqL3G_RH$o~bevgO= z@pPDWy3MHTDNP;?x`;~s)Y68I{1Ke~d6|27UvguE`zivS_OB_dX3YUIp?PLawf zk9ydy8UayTu`}{hO9S$lTGVM=yLJWWT|jpcb|PWmzlz$OAn)SMT<}Ol1MpNv#U{2A zH{Wqi249-ClC(%yWY5;HDu&}kfNJ97f5Y+pt9A$6*j9Q0;>IyimGbbp!eNG!(z3sC z$_MiID_ImV7d3b_6R!PKFk;_K#AndbTtRf;NXDsq44|JV2~19dM+a(2+qk-^z8!j8 zwliW>_c`3-(W8<0w0IOgi^S&}7Gi6XXv6}7DUHX_GR+Tstb0{QS6B1xrU3KDGnNmi z5-4xtsVdH$@jt^DhIj4DY|?YptarX6@hs!aZ6y1xHa+Q^IYOQro^m^VqoTBX^eAd+ z9=~V4i&;K7LWDijFC!t4Z`F4o8Mudt#b+7;B*LTGQZ(KE!(fY$B8!(?jRK~+=SyL3 z6`S~eM(zvfiK4(Er{3Nh-MNQ#jpmenrb)xY*`BP1kG!M1JinQ?-}(0lpM((b_n zDvUkUtn|^E*35^qUs?p=9anhrf{~uqo}O+)K#s~l(2ts!f~peUc9q!;IF=w} zUMssvsrdT5j+R`mh8+E7*#A?ikz}K(pf|Z(`uvB=_3~7WU;Oy$rO3-p$3CB|G4nlx zIa*O7P3dTdh-B!E^{gk&Kq{i}KQuy!ooiUEVd~I}KxGHH{=TmQJc0;<(jK)R&-hxE&^A>bX{TxFrbkYf5 zMN%Jm@~Sp$kvt zAGDEA=Xs+x6M-p7ewcbZ4@TmN^!$Ek*R8()CIX#mLH6eYGlI7R*&WiMbdB4lM%#u| zf6@+%5|_V&B)N@Wz84}U#>(@7??DQmi0uhxc0A(qbhV3^&(&-a+M#n4b&k4JKNqh- zx>a0diTuFAB(XMkknXMH>^zu+f?sHO#7?ji1nrmX+0V)rt*Nlcowi+<|FP*$Fb<%9cM5CeZ)jyhvg1;S-P z46{TfCI&RX)<7cq`?56Z=6`Y5{!3|v$Y1C%;JngGX_G;%|IDPsT$gmy@9-E`Bi*BbB2BO>?T22z=>m!s)O76Tk$|E>g`l9ezvF>BrIQ zdzKG59YC>G(tdjtei)dvO$vm(A}5GTG~f7JeE$2qLf-k!22!lO$-W}4hN~+BDwT`YbXeg-%gNKTB0v1~{Z8=TV z!k#KqCab@A8mG$eC7S(g*mVv^I%0SMwXwY_tMcwZ3`$9-S@X&wl9mTtvt!cL5@zx? zW{%F#A}Oll5zx7$7|!MwEK%H>fT9co4vzc$#c>UKrDR?cuQ5kKh@4MA3g?wOr*+@I zZeBk$7|+s|iGWY?rS}%TL!Mj#!if^~g8TGvVp05}I^yiLfI2b%^$u?c7F}{(lkoo>5J1Yx}Q)0xD8e zKt%|MNCy?^B}$bV0RgF@*8tK%AS|Rx??~?;HS`XV-lTU>dJP~DYC?eXu-0B{ulL<+ z|Ihz?Iv*U2!59wB%zWl^&-=c9*F{LCEq}A|DKj-Tz)SbHuN>4nJ?__8KVEZNd8>uF z$JQqUy2eHN#X!lR05{2oglWf2jrc2KhI*-zJ0d&8Qmgi5tgvJ~bUxh7i_(9r&*kST zVcc9~l!J|bkFUg&vRW&Mk&%o9e*abJ8VZ{~kG=hH66fl!NOtG%Vw^w!cFALgaM%Np z>9q(?zh}bnE+REtWAS!yt*ocGcs2YbQn1wL`PLY;eZ?48XrF3)GCHW0!Jl6Uv(TE2 z+l4)@1g>_tXn*)tG-=~vm;Z~tg}(2p{DCZ54lPm`ZZ2| z*_CuJi}?g1Uirv7Lw(;Af6JIye#x?R{n;6jRXcr?UCv&1Ca5viM!e*4S-YZR2+yIy z4Gk=LM-FbXC&iYfsY4+T7k$7+>TzNrny>PBQXc{qoPLPkG!;7p_uKupch|tTWQqJA zKk9!}@|S9kx2;6%j6S5hC5E`+z-vT0C#?hp(;5`kLKhQXZQXR3-2hk?Fzhzo2~0Nw zO*UFNp9_p|rr^A(U9)yf8~D0A?d9hk4q1!!k?yR!_kMf)YVR!)XXH&wQ~U1Nf*`m{ z{gsLE1^}ZwoV;0AVPDB6)xxkaVR3?jA*ASdTe?a5HYJ*R2V#ss7vg-B)bmiuW=q|a z$!F)rC5--irSa#t`;Q;_&tHDEy%x#sgGA4l$2}#35XMQ;cy&gm+)XbpLdmK}}jP=dpvp-qdw1{oF)nPb33cd3R>x)1_JG;*HvnWbsU$;yVU z>aIXfb1F@mss1I>VOA%J`MvEdqb@Otewuc|y;2?*ufE@mm&OW1Nm57sc%ANCeIK=x7tvAMutq~3&Bw|Z=#q*SX3Qz>M{CaBe5T;ut`Zz!Vn_#mUNYvwBYi+5+5<`a zk{4oN;GHF~!Juf5R3jCeRQmt$$xmLBy&+nNNcoK;bD@IFMX-kbq%1lplXKRpX=0(a zgaSk`;2YxJn6T$E`3-44hS(};kNa|x)fDJu)pMN{sdlp_tb}_?l+JkL{NM?G<$tujwauqHJJ1@6 zwoHL8_Dc{&ktg%Ns9{I#YEIG}6e!3bw;B^{p_74|-nYbe#R*HNRO=1CGuK+}ggtRsLng4V4=vx4kv-Q%=? zs85+S>o1?9^}`hDZaq?80V)q>=(P5vow=5YL3$iuLOz^%_YyCUQ5T&Y@z-qv6nW@O zQnwXT-7?kBMH00V>?0k7N^n#lBp$WVs(ZF9)iu|Ju(tJk_QB_}#{R$B`9wG}B6bn+ zlUHG9l~CA&+fc?7h!2CyOmVp@7bl*|Xc>hnXFOL0YZV^1CKmG{UZ3IrS*%oK6% z2Xb+t>VhFq!&hN%#U{~ucfEgTx1~YOdk~3odANtE2CQIPqt2W9{baQFO#vlhuMCRE z(z*|@L~6f9H65G|<;+!*nErD?^e_yAWyWl$BMZ`6jo8DjP_2uBr}FoaIKs+L!D*5~ zl;i13C|=Ved1|4fL<*zPO7M4)V=QR1y4mjtm|;yOB9O|b_yNKHyu#lg_q?*Tq;_^j zK${aUk@E#@VV}btRax$+Sxx07+d&_jm(oAAa(U+Ryhc#g2ks+E-U}4>%;0mD)Hh%& ziM=tz-V)m^2@PhnLk-?TTAhoVWB{gBqNE~q4)C`2Sb;(5@1s=7xQ&q?jhY@qR|=?a zTzSdgKKd#??P<8;TfTc>RP>$cx{dW~c*ZyHzZz29ACbDp)d!&wfuEQKFN?1;5L!*8 zMM0>L&3Pven4@4yJ0Tuz`Y^JVWcS{6H-la?X#)Y7`o8M2 zU#B1=6;bRrzn}1ZyN8llzjK+Fn=BTLM-8j_yzM#PJoSp!Z5i%%7!wzJk){?-jx(r+ z&KwE-f&sopNg{xppRMbwrSq3V)L8jGSKTmb0%2n)6;@_RpsiMq9{~GrOM2hS$ak07 zUq1)>K`nqt74<>aqSbJSa?ZDLnk;{@zaha^H+p?|-*4!1P%D+vBUu+7^t^wX3VbUD zfZ#b7BLE0KW3nv*Y)j5Buw~?}xL48{`hM~Hn4(qmOy3JFJ7(nSt2~$Jp19Qsm&W=J z^sgO#?`sn)?%ltKpHuWX|5rXNql}7woxGjw{cmDA*^5^`8Km_hM!2*Pv61)8+G9DE zq^_}Bp?cz~hL+;6`HCbfdluHZ2b%;rRe^FWBJea9PZbi(cACy|LQX8+ zPtzP~ilx~`bzIIE%CU++etORR0&+#b}aP!MldP1rV?_+F77c z>WRvH)SxGG(pS3q`bgiJpX2TaX4gEVvbuo*7}v?=H8G~SiZ;TbkQ`DOxeza9fvnb8 zj@+13-X>IMO4BOb@$h$%J^;xl8A&quZ1P&bsI^`4F54NiXT3_jH!6EZikX)R-Jj}T zIzsV;d{YEOyiT(#alD3Dhs$9EyL+qD?IP6z)nJaG2z_xvAnAP0EQoUN*zgUV-gwvC zMZe&&f#qPDSF-!!bFknWU?i?@En_uzJl(I(Zo$^WACwF|xwKFJk3)D=_)^a0EsUOk z_wC-ICGkRtz01Kp`Z&F7OvH$z22D4+uAHWgp!5+YN9((p(WF+3!-}2hyubo)xD2u( zT^hf4d3G`NNzw=%vNWOD{0;)MOVc~m4YTAikSV47l+}!sRp53)PA5s&Wk34u+NZh) zPb6}l4m^?YvA{c_t579;_wBXIt3i8m|65vKOJk3owJAzs_S#c|YI?TEez<&P^Y4)1 z{OQt%Pm_VG*pM^4OGrYfv-H5AXKD&@Lfv?-Ax-*!-#;E`Il{^zh^TGSjx8S!(ZT8D zWlGdRj<)bodas4Xwgsh5D(Y+0SY?od_T=ZF%#_u)@Wt$^(Nb^wOhxULV~eMGw7%$G zf4I-1#e;x6-m|)0h0WRTE9%M0`)@jfXwxD4-S>RY>C7A@>6Bh*Jk9pHiYGWV$n;t| z@s9rE@Z`E13BWall`tEq5LQ$`&mF~q!f;Y{(7bScSy~$?0pvV-3L;|~h)QdA+hbkd z=B8r4&J}0~<6=^^@1PQ>Y|-1x-c6-Y5#YG>x@0<)LSI^pj8pa}TLqa6bRY7XO%0q`e??kNSUNlP-Y?ZjFO+yWJ;zq|-G$j@53J5qG3zcqLc8&GS*&|PX)qhfRn8;hQ zw`dIHu^t|Ms+gp=zh<7BfhMdGzEP6@1Bq56+D~$v7ci7Nz^j@omTf{S zJP_7R2A-gkpTNJVaP;uG8}9`ZwCbI6lJBb4ky!@cp9THj?{|8Vujsk2btO44e zPo8_+m)64T#=FQacWY-H<|0vY#MQLLHT%;~ezwU>#XYubOu)QlManvykVBTzLddk9 zo6A91Qo@AG#1XatAq1krL<8i00tB_Q8V~Xae2w%uX_MP$Yl7Wml~LAFA_fxg^q$?2 z@XmomNrg2|kJcI$ypL{cRe$BmW2w>;DpRK;y7-TO&w*!1LDConuj;M#IRtyGYLoq#o2i}HpCpdtLK<3??Fc4gCXJz~6K zTaHz?iPeSa*LHtW{q8)9Q#X6V??nF}3JwFXwAE+nDP(Yj0!u zi?=Job>FIEm!5awP~8e;stTq?yc=wg`ssJO@ZvgSLB@LinpVN%W!ZlNy|o{emK^Xh zM!1}+j}mP*t_ex&#&zLcq}gHTxnNr=VSp-Nrg2#1?vi%G<3QlFeE*sJYcQFKjNM5@=li%~ku9k6EDVaZjFx~q|8UAw z_%IAa$zOyWYTI*I{`jh7g5Cy@;a{F}`b!;qD_y7{^iTNag#bpV_XxWUAJ0>vDo{rh z@1-1UFo7_bhCg^+rbJkk@Ah7zhaG;+;p%32c{Ja&naWJx+??hUM60LJ3cuEuW8>UD zzPV|qAFdO@WNKt3Zm7@FTl=q5WmWTk=y&SCfUFOeY!$;M&pcE^IYgygeyUI1{=y=x zu~06~T4N4}+21Ze_)TlsG^pu|5^tWy)j7=`s#gIS=^DVu{RI>*pYXC<_v382f?2*j5; z!lw1+BTOQ!PBL$9N8{Xie30II8wmmH-+dZPr9I`eF^2JAehKBYefLiN>AWUn~_vuEC)Z(&R>FvfRP0+gk+x_vJBnZ zi;@_lPV>uFCh{;Q4x8$`EgGg16Wc+GtO4X`VckGakHxMQfE1PNvDKYu!Hi=_V zf%Q+?zyOu~wCxN{k@eZf2YWSL>ZA&%IBrYi*g)A>O)Atez7P9RVpV4X{9)U(nUQw_ zyp_s>wS=k)_a>YW?s9xQEc-ai=ZSiEx)r$(Q=0853?y2pyNwch;2vDL)fn6NaLH)5 z(zDvPDUv;=gGRm5QIUTN#bdp=ypyZ=FwDuIF1d1JZZ6fQ?r5bFAGR8>kSC|)s3ze& zcaiqJTCov3ZsHwMhRr&j-HVjYljsmRhISURrz>sopW;>|EQd1H{Wk6~jZq0Y{T=W9 z0=GMluca6oqsd(*HwNmJ!XHHMq==lg9eITIvPP2cX~Wi19A&K~tz>I1D|q8q*!|~B z@A*7QYqw*mVY^h`c4ug})1rwYn>jeI;VSWI%Z*{ibDKsu^~uftPy!a=`JNy<38Vhn zfIwg_*q=B)urzSso{F_JqlPZbm~J-_Y+=|SBG>Y0v%ZcVX$4%?w zpZf?{<-EQ$4#DvO&mkDud9YP$vKomrMiWq58=Qh%O8V^Y9NS;K7|!~9*Q#<%XiCsy zVqdjBXv=StU~*lFVZ=eh^MI^ zZciK7N-Q-jRM@Pln#G=#b6Nd#0Ay=+%jz$JFEZyca@NTEsTcCpOovP-8` zd3m|~^@ynh-2JA(abh#|=bs3%{Zph^YMj^_quUC8`7~B!+H?*-3Ag4J&e>$~@u%a& zKz?rON9|gl4?vxXT4g&rUic5j`J!L59r$B4Hg;B7n0tA7xTKta^qitX%Lm=36aqp2 zP?BE5W4nz9NOLQVUp`@XrO=EK6(jC}T#w8cCVQo`u`j&EJjt@^ zGQ6HOADE;~T>H97kcD-~2*#(zvfWvXAXJif&?YO~;JXr#jWgF?nQ&1SYIm4;q1PKG zOk~xOfxF$%j~jv8taixIKI!YlQQ$YCRUV_$`+P-Q$%q!L6^Sm`s)GA>pAjukp6ef1 zbBWqyf||f8Wvn%h$aCI4b+_A%8-iMkAQ<9TL7U)qReea!DKuNHtxU|Z)aH4@%_oeu z8qKGDQDIY)rYZ9EMZ#kDQ+Y^*dNdC;a>f29kNfREd0dV!O7=4mlywyLrAx3yiIzW* z-0L%cLvqPyyG)2_GR)&xZ_${tteFALnQyWouK-H5K+XB@ur1{nV;RxELEB|IC`1?& z3_JX#8VCJC-dgJ;srFLwN2)8<*6kb#S$q5%3lIg+7iFhdOGKFxH0=9fUW@F4$C1e3 z><8uO?Q-c5>@;nSb6VdK7h|&9`3kRRvvB=x1GkZN0Vd8NRP+c@)um26=di>RIxQlDo^`)lf5JLFlb?Qyre2-L~xlR_J+ ze%0GiCLku~2;nwi7n|n10~h^uCoSb1o{8%`g3hHeHo=7_!uz|BVG3Jl*k`q_9zRE3&cgJ+( z_J0|?MTMZ`V!6^T&Ej$Q<(u2W;Nk<5+duc!YK3kUX+0CU&va*k}j+n4Q;uoD!YR&8dHYwephB*C}n+w)W(?)>Ic8U)o ztjVGXz^WZ}m~jARJ0JA>>7>GP>MmBJ*!Xd3e6-*sKR-~7;I7^nji+_8XJed#`x*!J z^WA>s=jIOQeX~`lqrZc<1{A)(-!Ha165o?T+j(ZxElBGQK7I1nTIau|NJauIe@V;Z zx3u)%HL^IgDyu^HX1`a9ocnSdab1)QJD-&7ARUx-9&Z8z(1YzP8xHT8Za}oV?e2^E z6Q~`d2-#mEovZc&qB7-cz>n-Cs_c#{)uCn5ac~R^&mH>jN5h86{EbHmY-OrVldp&% ziM;K_b&DBEz3@{Ij2dfs#Kr}-2|Fdfg+ZG#nQ2&kDQ@VimYD&FwHb^Xwbpy&@$8IK zs^@byDEx3!#EN?E=hAHbx%m!qK#`I$qvrc&LID?>q;{`~hH?6}$ua|u0>tDg6EZNR z9QnvI&`~qfK7LIe-Y&}3n;_@v(WA~zuRVmz$GTONk+-y;i^58VI;t+NdY0G%#nhO( zt~Owklv6wixU{Tlt?FfP|Kp9t_m$qp%>{4w5(eBNJ2(IHJ#*HD@~^F_N>pJv<=!j{ z)$5s~D`QCk*ZfFZQTLTtVqHzJsRxMcZOPI z^C9fGsXt%x zy=-*etFkyGsfJKHU2e!l20Ag92%8&?dRINgvEvU8sf`L8@*oK>hiE^}>rw*-0Bct= z5u6dKQHzyt=mDf_Ho_jQTg1(-UsRpX%=nI?J)rlRW{!{ zda5CbHtJhv1>bje8Nw=cEsr?&lT=sLhxW@-F04k}iYoX0p*d%(n~2HxOf-x!D+RF4 zL)1BK5ey)akfcd@?j2K9#-667$!DIa9>Y110&M6D-*eG-e5om^e@l!1TMtW3`?9`I z>N^C61q@8Zx6AIO$Yrq@v0B+ecQxyb@R>S%zrIVA#SB7d(xbUBs_JluWh&3Oquw~t z_R;$*T(qIQ8PB6DnrxOJ#kemg+;D8bYtM7{Xm8Oe7oKueYU&$KkrkXeF>(s|JtQml zSqbp(1>k*Zwlzl|$PM;Vi8xN_GlXADgKdaQYq2*v^pH*kGJ8&QZm?ivh&gcqdA$Yk zic3mBgDM8fN9iGGTID#7W0pLZl_r)b4G2S`E#-$ZKxGE!QiG81DB0|6<-s!)JFHl5}mC!aQl9H-C~VnZF;* zU1Jo@2%ZqycemV{F%JEBa#brF=E{=jS2Xi}P2{L-L%gYi>ujqdArjb`sNnLyNZKT7 zBU7G!yA1s@giGRveM$} ze%$%a*|2QEG_pA*3D0q>yI%eXdsjFbFfJtX|6=eWk!|Ubxj@2Wkwb z5HSUK+=GVS_JDi(7d~uRpOA-X^lNx*X;ztg`<)hwK8UMo@gG}nzO-F!X7bm$aR^rK zqJJ@ICk%`o6vgi9%vpQ*(XmytuO6ohVtQyK{>v_8z8u$fV!sLepS%WQ=%OvyKn)KB zr?r7ml2WQW4<%YodHB6yGiftvM2cWj59wU)qv&PnbpSnV*Vi8X9Dy1guW1yz3#(c7 zSH@6)bec1kuM0gTX?sJM-kh;C{EEeVg!C02_Z)~C%cJpAUiQk0vb+P4=irJI8tDTjHMr0BUi7=qnO*9%dP069S|FWuoA_0G+7Byp+X7;3 zR-j@J77C4+dO9T6sD+Tqh=})yl^-f;GdI}$K~ya?s0)L zoi$nnnsSqz6iw_p@|aFAE&IJ+5L5MGG)`^Lc}M1`2ZYutUYub9jmcXc?746J#@cuh za(s+r;}ii?o$EnqeoUy}us`2YfruuIs8=czUsW5M%+o17zH}oX8Ue7{kGh)JxY>l$ zxSy<1-A#+|;#3v3Ja#}W7P8%NORkCE7X7)CsLHMvg%f4glfDqLTvFhxhM)14j9bZ` z_iO$M?<(H7bq3o-XHCxe8|=sM`3?SK&%W?I(GxZw>C-NHpZ1_;NBR#YL^xG!GuUZy zyu^2Z*z^6uzVJM@Is5b6zxiDY~52<5#EH7E8qP1*YkoL zR=n=WB&>FZCHj^q#}Ue%9nkj_OfFBj3@XKuy2kj68Vp0=Mb|piB104H;egByyDRzi zE@WScn#OS@?l$A_AeTXSz4T?vUOA71zTsD%sb$31L);nt zl-l6_Q-!i-PvnnP^%4&#vYe|zN>MEAKvmJ6NzI+$Aft94cC?P*X}5?2sy`lqeiNNK z%uUqo5bk&lM-h)MJ?I(k*lz9JI)Cr&JC`Eb_blYhVPw{mUn7zo(DCCv&dx4C+R#>| zx-L8S@rr^`%!9Yr1A97Zn>?FWUwI-PaGShyinWG+5hGgo6Ct&#_P9hy>sMe32r|*_ z;QhkNolmw%8?cDEa{G?w{%T+O^GxZLoa$4=aaF2SeWS<0(5ce|(t2Q{K$9i*N`Zy@ z6ouOb>po!LQoQ9lR8yd-#@kQlQ=mxX?FzgLSAHV;lj}8+=hTy{TIb&%V&*geL#!j! zqls8k3!c5xw{M#42+99b5qx>Ypt$+FSW$GH9R8Z9)vC1aO4Ci++Zu~;sOW>dRMC?c z8}oZL^R3M7?Mf}k=7>BH%{kHYuTdZ&+(z8j&=5PNwZ|zAleXQdg3rlUC23Bh3-(QN zRNx(-kajGj0$)d%(iKRs!$}EDPNNYHv*vJvdmK-Si_HuITj#GC+~m9~KZ7TAHw`*J zA4YT^BO}d1_Vtzo>c^AmgWj;3w#ekwq94&G>5y$@aEO9nY@W`RW51B=yxhR#%3B1rpJJVyyecgSO+8@Cc?q z2FNSqEx{JaO`B675`mW00jM5;NJJ>~oR;;WpO)nZY8x-%rg&$je!1bsfvdvt4y}u6 zdb8FF*1O!R&Ti@ZtO|MBs$Z1? z>iclfh`*ieJp0`lQPSA#mpFM&NDG^T3-uS*;aYBPv!cG9FN=IO zg5L*!?iCDY213ut%XRyFs;+U$$DMGV6uo28!gQ19LWCKPDj0VyD_B;fwSB5kzyN~r z=pY+-fdR@f*)3x^;&w@h7KXxGc_}N@<|7NTfE$R$?12d4+B{haJjN*RjQf~;|18xkA95p%BV>U_{93|0N;{%j=>;EcJW91_$BLyRNTD#NbHH)8Ef+T_t6jh#C8EipE|wHYl#z z=K`h?=hFit9s_=Ju9h+xnkO2a1MxHKfk@LCNBC}a6fD9{PK#glpdjyXm*P|eJti5twEk9u=J{MHIc5&(uzwQeRym7z6#*r6N zM=kpUlfac!?dfcUr)dAjgDqoH(GOvbhaHy2*nJA%<|u>}_*Q@7`VDj%kH)|7aBFh& z-9Cc5xBi8ka@K!)`tAd}xa8IMxBFbX9dUyj_Wi=`CIhQMg*;q9!~WmsYtQY5e4u#Z zs(qze$i6d|DKTy)BLagZMYH6H^lD0 zk<9}3n^$V)#3dj~CvH>Uodd_Ei(#w!t%{C^I*mGpUKQCu|)V4X--WurC8k7Dl*8Vg@0>u+Y@j! zW}Hzkw{y);y{a)%Hv3@BWbJV|&yf$Gu8zrxLFZJDI;wJgsJBD(G>hZN3any2=B%^1 zy$0n>5}6T2ldi0_xe7CDt?;yVO=i8I&cDD9WOdG>IyB|4$Dvi3et$xg*HNE@+*du&AV=rl&z z2>k3+XXh$|3<#C~;E0jC&RQ}A4=O60ffKsoe0l9p-VO+TN1fhR*Kii0cHIF)M7wL* zk0}NF1)FYK>dbwru|n9D@e;wNhceoU$hAS@ckw~`}jpd_3c8@N!A!n5(P=U?AcO@GvyF&ywn(o42V zb;tcqH>&MVpx`MsdyA4z$so^XM~TlVYU75TKZqS8nx;RZqFJ1VuA9c9R16OlEhm*a zAEg%QJvuxjI_+^D(Odatac=xox5<+5cxgDOpR;_->R<4ttRi0s}(L5lc-t(<>jpLbs{^}d;e7jAY9$b&`jSR7@1ts` zh6+ZOF-+zDB$k=;|&-QqNr)p`a$|^*NwP$t0$=PA<{XU5dx3c{N5re!G1e$ zpGy)~jrAHUgHQaHQd2oT8&o>kRL=37bKKc? zD3$XM^9fMjO?|cge*0njQyM4UD(5j5sK<({+iG5Cxf9lKzpuKg@o0)mbp_=-Yg>Lh z->CCORq;=gndGvuF}tK^3-z#U$2#9CEGz4T4gz_0PU_k7hP7(D_|3;7loj&F8DCY$ zLmj)PFhUXcbuy+>+ESa2=!^4-3Uh8IglA&JQj71E@JTW~z-insY7#rbP9>;5^%3Z3 z#Oc7zLn4onEWb`G3~x5S*C8*}T0e`rEWgt+`P>83I1yR(Yh0G!|0G0jD!|uIQ&NFv z2IyD5giQ`Qp*eOZjycd;r`EiAB|R5=owOCrsd4V~Pqupz>W)b~Fd(mZ;lf=JC&c$9X9=6+R=2jt^)uod5Ym?d+bT-|OX^TK=@4JCg=`f+X1f%j4 z!_%JnmbN@F`-|=P;g}2HlsS0^x_3P%Xf1A5tZos;DAFEWUiM|^GS?Q+?$LdjeUTqwRTj$jm3XTbrzYH{Y*6 z{&{+o!pDt&M%xpN{CxMRQLkjR8tlpYQ>@c<9S=!=^O2kfpNEeVT{z!$pjVcV`V3OV zDmL9f2x_I<5z4sH?XcAK9A^lfZ&ww)5OhRs$;lm8hU&hM;~z-*HpMfDNG%$#OjI~D zu8yZkaZUHzJumO7G>Z)()f6op2cSZikD6(Xj{%xtz%NzQ3>QC-P|9Gd2pK_E5SyuprT1lsQ0_vcV? zp0ID3q>&!7Bq5S7Cflgoh%WPzL&g5e$=tmPgfKK$=Mx8A+fMffStXtXw*$59lq6Nk zNPhQb3`Lw~DpK=QOT#v-=C3O5f2~fMBl-PjX-E;wWUF*-9N*bsAs0NRFp1KYEg`C%<(Gm%Zx4<=(=C$-mWFz^H-h+VsiDoa7-n)c401Wds6ipNLG! z8Sf!(;Wv>S(1l2zv#g}<^)k6{We$9d^Y-v7*`a^L?L!lk_UC8Si;>n-mD_z@{~?R( z;yZ2I_XZQtBAa{sFXuTA(-<(7B*ELweRWGu$!9l`|NJ}u`%V4+ko?UN;1Zh|zey;- zx6=BCII21$nYQPYWv>87iFpx_MCEuwhF)%sj*H^J(yiRy^Hm6Vlz=lOz96Lz$1UMQ z$?7Ut_A=i$X!c05Qsvf!`<4J{_bQ7>JNIFg6s|FG>7{RA$K?e!YmBp+)WK^M!g2)% zm9oo^`F!{OYdyKw`5|=f1maLZGZb+wyjukVAr{=dM&d{kP&UkoCOdiuS!wr|rn%_) zyfapIf5U$?OgCF+`eD$rBYHi`6C>lHy!Mt|mt#sSOtd{vlu-Dqwcm#)KAVF97k|OP zq*w3?WIx$70=gX+}1@V)K(V`^V1h zWuqWJ^xLq{?vQBc5ImghDQU;w;>o*SZv-3IL3c-d*o9Z{*|u3bbN(Jq&MNnVwdtjG zyHDZPBB=(ZGi7;L+18x6XXo>dMRuuDoF|t4K-ujim*e+%a?B0GzU)yyz%l(~*GT1CHvkh0ng{PH>)>+H2YFx)#|(<< z<$FSB=m7*FozZ$6O?M9C(Gz6Cgnt{czBE1aWfSSLvvl$sUD~y|Ioi58phW6JIa^h_5q zFS^7Q4GA$XBjmxt7$sO91Ql)|FLyHRJ4eRTVe_Wyb;>uhl5*MqnY5k#N7D9o<*oaV zfK)M<>h#dTR_JW*-2irpV02j0m8`bVE4jr%iZ|XHt#=mV?v~@+co>#H>)38SSyG3S zMSJd<_X4JWog_Y-(oEoR2Kt60UZE|!*0#@44G;fz02c`2{j7JcW)z)qIx5s)JA6CI z?J|_%Tjf&PR9rZ^FwS1{`z9)Q5Weu&BL8cx|M~%xTd}|B-Gd1a>p)MmWBy3i=KB0K zipm=yiikxmj}GQSTm>8iy8Kz$D*$tO>5x4|gLC7QFjpkgEZtz)8?-0{P z^g%j@v(vLYir|KqGipa=nYBilV^i zT@LRP1`*lidGXQG>!1tmSJ7lI%49wVA2cQ$I`7$aRS98fTkaZ=>c6^i^N+pt*XR9j zr!*aznZ`AOgB??d==m|jPm~t?`!Rz8(ULqycx8P!QkcprGI_Z!TotL#eJ70Iup)%r zmD@eXaqBUm66@Skk0~;c4knJat}GKS8=&lg4og9m`4T_TK$Q)AiRh#hcAz_yqe{UQ zgemiurW-vkt7UPF))G+q7Wzr~w=xdV#fS2m>fn!8nw!(+Eq{wlC#BxK9xxrbS1hld z*5V%?M_Rc8sZvfoh?rl&1LEn7RzR+pxZv^^uGsl*u=_@f3VR;MiFy5tJOz-%gBuIP zfhYev=k32QKw2f)o7iC5O;OfkvZs)o2HIM#u^YK%MOjZV+YO@;>Yz5U0_#U#>$8Y&x2)u`0_Go)7BgR7l#Xd@*try77dpcsdGjK zWOSGKaFplX=12SUu!z+=ukT)a#r*bqu@_w{9SeOj@$xlh_uGozV!BsGNQYu+wt7u1 zfLHW_C6@Pw+MBYjyyEvNKVQ z1P+Ty-MNn*Wg?Lpoqz6)8-K;kJYKnC7JlQxTpC zhC}X_?MCE1ap_@D?yOp#kCKk^M8pE+*15_I8iAt`3^#g7va&SK76!Oo0GYhtb|wuY z{&^L#K$-_{&i5E-vvJD#h+%~D3e$srM6J9yFY^sq@AprY)V)(lp31>aDLR9AtA!bwgRhalF$PY`cB@@O#9Qs>zPKWNqJdfhHO1+C&t zG3g;mZ?5R6Tv5UkmN6o7g_(2Bz9VUxMk7u}V?8T%vK>lUXdT{l(h8z?#@GpPhWHxo z1&--g1}*6Wv`xYxn}E?!`%}TZVi;ZGD&7i|+jmTg zN=&!PER(H15WmUb?bfhT%G-~D&&Tqjn+cBSfd6K z`?@!SmoEX~4|r2k51>p0)RA#b?lRK2QRJQ6JkNF?+A;tTR-;5Lwh)w|{W;!P$+|2u zAny8m9A=*<=?r(0W(CG&GlL!b#=khnCCBWh~#;- zF}(UJ)?1@y*q=*G_o&@JSAxR>6$jm*gMi#OKJqNdgo!S%q}s};F_t~XC>zA{3WnoU z;yikyAs{rWlh5Zu5l$Q;;^Sr5u7uons?e9FHB?E(gf%+##jtUP?>_o-V;1UNQ=f<+^uYnF)x;Iii+0c^qBqwS$>-~VSY@&5j z_SvD=DQxtsX+dc2_*&!mc|Jjg*ay|mGSxo zUP8_b*sR^PDp`2S>)!Sz$ftx%ypns8dK-~L(sk!9U>881C5w4} z=j-E@{dI3MImPXl$JtLfUQA{w&;~c$uZs@f8p>_68(+BS1_P@jIvu`M0Nu+hXrK|s z<%JX;ET{fR!7-51=hmTJcNemkS~<&ty+mO-b-P)R)Q(?ct5JBcV#X_PKa}OYdXPpC zPV$!No(L-X@wDK^?w@S-*@&MJ*CB*P^y50S6z=uGf_IhCybRa2IDrSYoI>d6C}5<48WirRhx!*Axa0Y@8ikWNnvi(ngT!Ugtu&C?Y;Fafp#zRu=Q(pI*HX zcL^qqpE6l4q+@)S7qzdPC`@U!QXj6K=#y_}s@rF$8@)Sx=C{B?<a525w)@tjlW-Uj`>XU~Wv45zdFNHfH{uG_dzr6m zRx!%`2>&e`cp8U!-4B#?#`fsJx*Q=v@Z@jr)SOt_r6IgonNFlT)XUsHHUSS>zEv3f z{tayYn5wGT9VRY}5uk6#Z>u#ZuG@V`0T2&-QOv+=jyo<;Ir$$CiwNx6;X-IFtxkf^(SIG-XX8%;Ad8- z=VAw* z3Ytvkm|5&bVs)MbL7Z3wvVw$p_pS~Rl15r#fhc&=saKS=FHqj<0m}{Hb{WwGa>-ug zbXj!magf`(XBH|bqfC5N6cOD<&iPf=L#VlUm65vb5aj|0ROTz6&E+zzAm>1rYzFjX z-VsNm>1oT@1voA$hE&1m1IK+st5kY-kMCqoPadWzdSItBTS|;wP;U-4`aAAwn8;Cnug090Eu2aI@O+pP3pgvkw3AN#$$JdM=x!nwnDf_o z`Gz!K_8%2ER))ewS0Tv;L8g3-?;P!y3TY#5cJo>lsqD;-7x!B5+6-UQdI24%yjk00 zqSPoWG<3OjpOU}V6}!K3n{ReB^lU2**8IuW2}|0v%@vH19V`Qsb<~?+J;y{Lz#i|* zEVlPCw_KXdTodouPP+XXr(2GyP(HxTYT6(P5v#|Gc`8gZh4I|f@2r*vUYTf?3)3tm z2-r(`+i`TasY5(hn~rDQYE2xf_fD;MW*ZC3=MYSQ3Bav{8YrTR%5p3T>8JbBKKb^% zprOpcqh1^JB?RMuzLHku$s^#|5oA9~HCQzH|dMXf%2IBoc zoV{s0)cxQ8-Ex#R6qU*{NkU>OMYfqr5@HIG#K@XuD6$)K6eas^l9-TW9lLBZBKtCS zhO+P5FoxM@{$CyEdHk;Pd|dw<*LBO|VceOo@B8z4FR%CWRrbB>c)%D_z&E!SX)^sK zZ?3X_7%)72ByyNV%8}tvO;Qt7cXARolfSf!b7ZCXiIDJj#z)0h3kS^n79PO&%?NFi zb-`c76P7fgT9SK}FCrO~*3|aJl1e|o__zSclRQUQY5KO{LmDp1K!Fxq73@2u)!TFR z{09%A=Tf~cw=*jdeDV<~89D(P1c$XuB#Sw4oa=Jkb*)Ax;l!A{ipKYo-tzpP9M{0T zu3a7}RHi`>A>ZneX(#O?^HU=BKcdjYyOs`s^?U_05mfWES67MrD7x($ln0{-bira- z!rDS^76~fr*ZhWalho8G(wQ2<)unwm`kUlEq$7B6ELkl2ARX1KjeMx3k1Pgri^Xxy zGK#c?i+9_uab=Ws1`Of-hTN9p7j_#A-+Y_CNASSXg?j=?XVd~8oHN>clP5i2tv$XG{T&p;L zSZfTNR_w8<{)%=E+G8IXft&O)*s`$&2~$E~PY7Fs72CfbM^s0Sp}5H8?O$By6-33b zKWg%+cDwF@l1rN^&B%eO0`-o$8uccN$|<2#%S&91qEX=HqV8*A01 z;Rrl_aLi|ZRVVK42-&Oi5uS|hC|R9=i9U16zy5Qi%*jbDF4b@Q^f-pn@n(_`CNAYVjOuNHZo22Mi`#-mBbaZomx;k*VD@h&8JC|z4NE3|xFyU~=pO=#x! ze1rZq%8aVo9+?*`U-eXdf}ROb_aWQ((XiA}L#}TPMPgTCFl0LKumY3Sd|3YgTn4aD zz!cYJ8CvxC_H3eY&pFHn{t@wDF^A>6YMjT?W3QB2YL|C4hvBqp4mP~F1TKrol1G)X zM35w=z3*)YqL)IW-`t`UvHtBAs?=n8b4-8}>M!P<)@JQY=kvEIhOiNP7LP;2yQmh?-DtvNc)J2begOVc?*7o~v@w3_HCzorul}MN z=zegVlK4|ywXiWb@VlY1E{!qL5E)H%H?#4V+d$sl_zx(w^yD60!FsLlNQ*ZcPBs=F z;u;LrI&w|T5sVvmT5_YR+yeT`q`+|R9&w(#*-%zY8hGG!^XsR-g=VXKmozv<=r#kb z$WOvR!%affLTFi0eFSg71f@faL5>0+^N2XCn&8&^dYl+F3FN9ppK1DgGyg>iXM=(82r(PBj#6EKBHwRJ8DaFL^;HPAXWcFZkl8YH? zvWloIG^~aqLj6|EAi3V<9vedIzqKMuJ;y36N3Qve!SgN^d`KDqR22E#9$X~;@Gb)nG~Og~#Z`sFZ1Sm$@39`AI6G+1IKHvqf}PfNmmIXEAWQk}-ev zM>0nCcPWJuQLV2=X@}Dx$*xHQQcyM+VAU@zr0{@VbSz0-3vH_8DCw83HE7v=(BJyP zIM-ZYh#4y%IpbuignGE=D4KrP!P`yT-mppl!d}ltmKg~&0(WD zj?V8QD5+;EW$+WyrN!#gC_r|FxVb|hH!i324^KZe`v>JnR#l4=Xl+RqweD2s#z`FbV&_zMMt3L7s68Gf4eZF?4X4VIt*NV#Wg~{vc+#K)4My1uVS@gyp{H& zd6Sc3`Of-=KTU;bk4%$lqsKha03Olg?N6EnKX*ul=F4LRK01x`Ibp2rc#It(HHCc- z3nM|wIs1ier@2%-*B14CvclFb6HToQi8)98(eE=B^g?dqk}v9+zh;3`O7OXHbf~{e zSU9$lut@p!M@so;7V%u}uZsfpm-g!5LhlsZqhFB}eI9o2dn~titahgJyjIF5p*y1L ze6#Jn5XOcsG*h6`qSHIRI9EW-ci2#*RNT4!0%AiZVZI@1W}WV2o#*_}ir;+q>_DEL zjPla(ZMakjt|=Z5)2sqR&1g zzl_A$o{PZCCLe1*G9Zcj`CR9`Oi}xhu?iBdp=sR9YXre78PsFi47Z~^MFrlC`?2az zEaAl=-4rwE*D?E=F4^=r2EO}F5Ja@r?^9fQWQI?|;Twj{ z2 zS4=C^SCs5HRIK4i^1skMSxC>Nrhsv720;foVxJWnYGL0?U_QMSmE>|*D3NR4=%dE@ z3-*og^b(<$JTI)m!|0d*X6j+;%nsBF6<>YEI3)g??+l5bn1W*%>U4_29dol)4o*I6 z&|(~!#gB+qjK_v37=8fd)R4)#oJkHca%Ehz40$Aua{R@|S?s|gsg@cV|` z;_7##_L(rRulF8qw{z45liW+L;v7kV*%qlmFY-5xKKYQqnpme49+q(`ein(BXH?3m zKo)0_`nuqMmvTOr9ee!oD5sQpdR2=N`~H`xvb>~O0w@p$2~z~R;jvqei5i9lN6cq` zQqH9cm@oDbUh{7C7>f!!1n@!Fp*(QlFPgGI26-O&wgEkFZFD&{TH7%{_S4nwK^$~X za@UoOv@pJzD0^GC_y;+L%`)rI$d9^b3isc%oO)*Vx=jed_xA&HWVV>c>%T=1f5(Az z_!i%TN5>M5si+*x4wpX?WD{oaMNl$zBpbTqXn323MtGCKpq87l$3Uj^^!sdan3;8k zP3uCLg!qc|B}vI3jOzT69{y8nJ-~i;qSjurL8_kFi zE-hFn1B)+T(US5#7EgWqi2~GFc-$w-qpdfpi!*)s7{Y_vxg1%4#lFog#^%)-5{k>N zFy}IzmaTUSeUvee9eMuFPv->aVNd|ds*$eAFhOV~Dae7c69%*B4Oq?Ahnoup@ z@hTwh6t{nWEPq|^sji)mZN5bw5ZApt&j z>6aMjzx;L{$qXE~peA39iPMKPV6xb&BTfP4+t%VigMfhBy791`P!`lN9a}lwaJTGB z(0UYdR$8t#;62y8GGEHh$Ic!6u6%Sd!*g9+YgmJS%xvUq`hpLap#-}cF!Qp)b#i?j z4*Di^F{C98clDm_?eB@-`w!>5DXRG=UeTf5IW8Bwno=uN@CifZ6f#6fc5m)BHI#V+(DDQ*m>ka$YIp#UyuZwmEoLZm97S5Ek zn7)kWpMKyHuEM^!Y+*34(fzg;Vq>eY{B#5+%5>-|Oe?pl!vlERmzH5FXd`L%+dWHQjgHi?D9zY zJ08OqeS)o{e9?t=2Tg!_)gD)c$wa=Eo`Tx=9%$pS5^F>iKR>;Z+4ImZ2G+u|pY%Rdc^Gx<@I zA=4GHwsHe7x5V?SaWIGrYP)vh<2lKDj}=SOBr^ajVE6KDSMznCuH)8#VdmP)`4z8` zli#t4ow(a~6-@3jjSr!@tX`e63!`PeMaC4?^-Ql{CO8*~A=8R6kHL5g>!J20&TqTl zTae!KE-lK@Cp}1+A z5T!C#(qz!C#9I4UEPlMU%jP`EUDKC0A@AwSJc5lK(Y##ZXxYZ9TUYHwtTTpojhMrM zAQ{80(DhZnli(tSfOS#$s@3bNyvk|W(>dwAz*OLKAX3?$`{U)uqhn3fZBGBBmc7CN zsj_;Fr$w_%b)L1dDc_YSfvYpwYdJol%Ybb1X)dywgHWD0(ysL?xnP zw1;oQi+>s^9NsSP!Z~z3;pHPg(EY6(y#v?-YA5W+n7Td7RoR@k7_*3ot0dZ& zWU8`U?SERSgLf@~aq{+zH9u%IV2o^C0GerNF%4-+xV0``mY`u6nOn>+EV3X&`1a|P zGIS$*bI(yfN;|*Dw^;1(gdtj_cqzlkJfOcx2+|`(lHyX@p_zP(GLc4IjXG}qn!RZ= zby<{ef`W+2se!5ZJr92A(6t{#AFAmsp#1^kT)sK5YccS6#?7}pyB1rIom%*&A0iUu za_F1~U*jA2)Xm^n$Wpee&56D2P?O?bG;eG5^CVG*I6W(p+s~&)N5fVYZfbQ* zyoD2fFQT({yC?)_GQY5l8vTO%D|AU4x|7C8NB%8PuV8nd%4Uvj1ik0BG}-GFJ)IJ* z`0dQ~rjUs0S-l#D;5TRd(nf$72&vNH4wNU8D;g8cMvrNUI;}|gy}a6Ivb{AGg49I$ z{~%f^J$^&16ngq`73rNyT1=JyacSSGHhplRXFCjYo!yZ1RiJ*H$>HB2w-IA8eZtD)wrpV zX24j`uO8WrVZ}!Xt2PDr5~F$x?4qz8j|F)fKU~Pq)jlAkPC~LtjieNE!=)TUea2UA zWh*nw4G6r^Uz-+dnN`L>@;c)_D)KZ(SR0xBb!tY-7_PSFr0B}=S7kG$5|3QV92%y} zo__o!d*^0+lzi0UnD@o58Y(({$ir|xEsdnB39UFIY&*80UD4wHr0U_n^yU1Jy57_E z&EKPx*dOM3l&{S88O0LP^*P~HeS zeS!w(JM=Bl=)m2;6NZQ_hrf>iw9@`vfAKM5Gw(0Ae0AG%U$Ogb|6P-i!Tv~AU+|?b z-=hOG#>=Pn1Ok;N{sgKJG)Jw1@M$sDA}B zSiPp*0WS(X1xqb+wbdSZ%Mpl}A>D>4UfQU|sxS>cuV~cN1YK4L68g@nOM%*j0ru%a z^3^SKVDs`S`6^p(NggFph0akjkorI)5+Or36balbl+)`od$}-iK#- zmHEJPX;dlfL*~;g+STCE$ZKAA61MOYd>US@F(EJhvF@CrA~b$X9-1? z*b|BsV9-jp51B$R0)0skzp3tv)>=GVX9(kX62oN|^Gntkxcl=5727cp_VlY?^m@nw z^{Xtp*VtS1qb*kMQ-Q6=I*r^XR=4u<)=uD_Fpeaa4ah{}#Q zxAo5*XN}1?cO}hm2G{?Kxwhn#=P=Icq9Vv&LOdtw_I7DbmCv{1A5~6aJT-m3wq?FtT3*J*XIZZ?n{dGs1|(d2U`I6c7O%hJTx|^H=G5|kbsV@5Wb#*P zr~-kVsr)}9D|I8&R}<5h9r4Ge^^dwO|Miai`=JX{4mzyyxKc4T6Ty1W8xOtf;J(gt z2)y*_-hLd%`(ZXDp*M!tq;=(<5I3hCs>YH9utnBUipcoV6B(3*;0#`wcU6PMiVRv# zX$WMaFPN7h+bjVBvcpV-&7GyJl)(YGNA|5p`Q3kic0T&~=JBI{HK+aP1HS>A)A}WY z!*2@w9h=E7hOk|1j6=odN3*h4t5U1DML%APDSCKcpOz8ZYS6OacvwwlS=*V~M?@L4 z!Z!+cx1QYYL8BVar?Pa#loP`(`ULBhGy!vy7mi&=CL{DAomI5MC$}l0>|o(GfrJ6@ zX|}NNMiRkZ_Z9)8MzjFDpb)nt+NlV)rpm$Axb6&OVxJl+t?!gvs?zveI5M|r?H8*i zWH2$jWH~ww66kx_8fIr_PVkikNknYNFGTAAzk7&^V?yqOF0Q%OMgL~My1;6@Q|NGKjlz4V=k#-y%5 zdmX~(m|;eCZ$h@A6GulK&{5aFi{#iOnhY*AKIz#6LeqN4)X-PY9NgZJmxlYwD%+ly zCLP{*lH&C&VP_T|$jY3Z_~8WT^AKx(=(U-W%c}HCOtgO@n_w7Ypziufvhho7Gd$h+ z+mlrv*CmGYio21tw8=#`xMK*jAn`K0HB)G0bh>F|&deF1C5FtyM)$0bkvnU<$Z95a z_Sjjs#om9IA@K&xKLlc5%s;yl4w8-Eh}QW$h{O#{3kAyzaOZm zu{C_j2fEUWBM-PfndRU92-K;pM@=TH$jbw{isCir*8i(lvi!A6Lj!1~2Dn^TY^#}$ zbJ11H0!-+EB;!vt@LBTD4hhMVsPUmDf$Tkl`)26Y&6BOKZ4o8_Fp@lUwjRbFwpKiy zIYQ2QDuUoE+u#@HhgbEBv%-466j=dM=Cd2w8DXOS(WE$j9hL^AeShZ4XAMzd85p8* z_4jG<266QdWH58xE$-92@%`h4G5gajCtpfG&>5lZjjqe<*LoMgYb+Hfa8ubvP%J2t zMtLR}i=w}k;ud3?-in-uQ(oTuWCN_=^!MFSsM2AzUC3;bQjKqE#WzWbk}lHUWL-(m zpiOvfTR#RwBF7UAfI~$J)mqrJ5=@1dh!hu2N zsN~3+mx?o5HI6Lp^5>@iM#Qy(bZX|@n3w5VitTurRE6C|*;`MQQ|Bz~eNtsVK5W(z zwg0qjo~-0WJhb=cfYEJl?q0sGL=6-T%TKdtRY$~NFa0cW=vYvSNRT*_J{O4#v9P~g8G=pE1ab8MHk_XxH-o}uz9+M%* z?H6y95v8Lq`L54^a8qAkzGN7xEe`Jez!7B15N9aQ=yE2X30L-?R9o~eqX#u4p56bs zu6Os>y$w+;ab5GhCqSopAMZLFC`#*3cs2XRAoki;l$g|EtFQ7xiHya-8I$r2toOu2 zG+)4MFvPhx3bj-`IS}6aoj7m8S^UCp{$8c(Ow`Eww|2aZw0L4#(|%mA7U1{vSVvQ^ z{`Zh6VGuf*T>cXc=3v1|l{RT>njY_V+5{0S)=NG4)9jB@L22bFD)uD_)qH21|Fj9V zp$B9U1w}*6i0%L$T0j+SbXnQ%>!79)i>rw98cGympZCjN$BE6$11*rT56d(b)@2l`g5X0_~{#a_a7;3V+$qwzV7cm z_|B32+l!R4-MyDOxc4$CEGq-TRvvXOky~EXl4cY(=};{n`1_%yn!~snPH2GG47P~8 zvI*|8JIGx^L(2en^vu-9e;$P8wOQgUWunk3!MTGBQ}avY|- z>TC_#)&)bx^`V>o$yaSd&0kFtdHFIchfGuF+up}4+qG+g$@tu^8(Y=og;S)Q2sTd< zX8Uv`LvU6&vyCcBoRARCWOpCd*} zx9+$%j05+Wu6vhX4*~J;Y1^)jp63_!?aEzehNyy3bp8bw)9t-g>4eU52Wgs?*4~`IP}#?0QMtA~qwE6Gn~tNfp{%(X;Coqq=lx>xJ4j;p8Bahe*E87R)ZKByNk#x#@iK*^olf1J1h8E4 z>oP#EFkHk5{ML%&tta?9^eW5u9lxG%^g_(bH&BotW0TYc2;8Dr?6j+Km&}GMTv5W; zmxxy(yq$-VuDwiWv$BK|Bt5EMEn1l&YHQWEqk`F<<^lM`w4Gi!V~a%6{ow1y#Bh&R zYwFg%=nuJRKr9UP3H6!x49KZ_avYY^W$D{*+Qf zDw=ObV3FJHiRU;Q`|Q!`Og`1AQ>bkO`mF_>otgOk+I)==5SxveA2)wRhfmG;Fq7eI zHM0V9H`a?tC%+KFb1u;qdbPmyVbA#4fyEk~GDuIR! zk2Ki+mGrn~fb8s}CGE%>F`vt=y(eSf8G16P;kVCoBjvY^&cWbq8J*(l^en)}b~xIc zRyqq;ls+Nl@v2XQlajJ%sAJ+gmDWr%L^3|=-Ecl=@M70)hqF60vyFS7ZYKoxhMb%z z&U`$p@wwX=fSJwo1nSaQYo!9oe_cLO{skVshj@u1aM*8JtYXkmWk& z_CKBhK|FN$9tvTPjCwYkV=e7S%}gnIq1`GH$Eh%AZyOjq zv!XpMSdvs+;(xjnkWwz$e~-v7pL>Fvp)erUK1J$YgATm%*-!1H?KAM)XE*xcVwX1V ztX!fh_o2%iNmsTZL-v{nw5S=Ran$SAlQ~($OoYNfr=jbzZc+Zc!o+(-k(6nj^_U;Yx7Yu( z$0l@b)GszI?F;f@tyWeWNXJ=u(@01MRFNe zpA8-)Qia8)wFl=h$R=Ovs*|vDVG+so`;BCW#>2I3LOH&#jdK4AWL>Eat(jZKh1L(h zbS3VB5Bf~&DOPv}a9J57D3@Z$y|mYUp?k8Nc+!l1X?{RmyU-=^Cz77|FsTFY@3hAv zPwB3z@72k=K)x+>hx-bV%Wk&+s8@cSWl;CmYNx6~{AbV+`e zUW(&vzuid*>!dI3i&4dh!HynZw>c@&F$kcics~^%8#6xjGQJRG3lBzLb=*{gt`8M1aPc zSN!sit0j}e1mvEc1crm{eks~u(w4!izsooxSD34SUQFig=pa@waW?3&V#=Lk*T$&* z0l;QbiSI0`>;@^DP{Sbyh}}En&#caRjN+zVZO2!*$>Et@svM0E1J1*R$2dgu_QzX) z&rGO$ji~IU~+x2O97B{27#* z4IrBgAzJ{Z;k2$cbWVF+=i*hIj_^Qfa@^6TfSAp$`AIHrLsS^hCUCzYeBUiv!PKsf zR+*1_5|Ng2@T43v^DxKp?O|MKDm5K5IyZ5<#z*_5n|a0NqY4ZENgrXQIXN@r)&RnN z{N4N0DHZHl*j51nNHfx@KVCgm_uDEK1d5LNF7p)+ZZ($|I^wtDFNWoGg4^uYht3ev zI%#81W~v71vSeg7&=pdi?o-a&R+gjxXJql@>}AWFC_i#haMUZfHQN$%pL4e7$nR^} zIZs8{GmX-d4`Zj_WErUG@G;Ko2JlwTG*7fAnkXP=2EbgPY3Z@}?dJs#RtDI>%q^bQ zSm5Tlq+v`ZYla{qc8db*gaGWKxW!WUJgD@9tV*#&o1W&24_bY5$9a38TV9ed73EliS~0^al0Jq zSNuv)IH03Qaj{j(xdX#}9BT^fBBTxM$F8<(p=5O#xM}d^rr(~r+UP^=kN6?$XP1}U z&RO6H{<9~9z2@P7c}wn~o)!uEl8b1ci@`MJExGnbcZi6;jKxgUf&F;`p1 zD!C9SDT;n%A0%|v$O!vOr*ucL#lHs_yBB2&m1m6mH=rYN*G478AR%}Se$|mGAGcFh z_(>Br2j5MQYhelt_nj%m?DtE{5xQ5VbGZeiU_bBIyJ=m$now(FR1*auNB{OBq?oc6 zQKJazLseS0gn@B(!0$4Xk#84_KUp5crFan~lFj8b?QE{}F*1dg1=^>;*k8}5J69Ai z2yf+Xqo`R);;2jaXK_iz_FH()l5FbFs(j};J?%Q#TsoUk7YIp^Z1$mFJQt$3XC)h@ zzNWpxpgOf8U(H7mfz#7IC3b$?XsCARisX;srx$%WU(i%Q6fm}&sXU!GJ1?DbtgPmP zmO3}j+^Z8Se8ORM(_--k7GDEUVnkI(#BhIczT)l#xMCh92{7}0a58NCosazt*az!Q02++6(IvP;2fsNHOMS?ibz~4CsId`TWT{WFUwi zpxJBmqK4@xb*qZ8;uX@B#d#o^C&x1aHl`1ET|}6_0CrfJxMo$`(X)l3drBjs*oMKN z-xK@_p`WNYoZInMa#=86=gOwWu5DvZt*d%zd-HaSKqsI;J65nyo+jfvmb|$$mi+lC z__)-l`4N%t?~2e~!F(S0jd|vbbrdJR2Q+!y$K_-#zj36)&z7xXP{WoU=fZsR9TPUg z&5yZC_Tnx3S+c;^oNo6sUuK!`ya-tN)Q@viQZ1EdKGPGPQExP+aoI+tI5wT20W+w6L+8kw_CdP5jpxv0>Gv@ z99Xp{CV*(gnjl}9Y<`O;S#qOG8OKj%qiAmr1b0eG-ro1h5!(y7m9Z}WhaR#a=l^yhq~gi`TFm>FlX zFHzJvE5wHJB}$zVy*Sq#jqnDz-p9V+)e3gT2PgvxQ@pUv|x!_Bx6OG`W$;ca9Kn z%Rmv%DgWs0j$n z*nRQ|bT9J~!7||aW!2{KM;&j}Czr=PRKr#~`d|(epU1fyCw|;f(Ilw0yHFR1s#JG= zd|7>FCZYPWnFUegX`;QC57HlOog7xqQP2NKvIhq3tt;ak&Tlm6jy?wR`zwwA$2hFK zBu8XEw65gpJIB!hiy=V6pS>_&K2mh;0-CD)`$Ni~w)mfyRc>ec01UXAX}4m7YED#M zj6D?ZFq(WCe$c??#=XMW!-3#b0AbXZXH6^47P_0whb$GRo1jE1y7=9WB0p}(`c3so zaYF%!WF6!@D!y12=jK&9AXVGXH!TD*mEOV@)iqy0CXgw!7xpEX746=~drup-Pp?oU zdRJ!D%!RtId*5hbP zgEd_rrOq`;s%9*@1}#t@AN{I3*d~l6?0KUb{fX?Bt;PmW2nJ*P=8KsjmToSgdfUJ> zMc%i+Xt#ExK&*(b%6SctwWg35f{&GB^^}e=#^ot_}#-)ex)^EWsr%MHK9u{FCo z3}c?cJ4;A#V@)o#oITu=rBPMf*T5Y7RHJMT!N@ahkePa7|=ITeT0>MNO*7=xQ8b+f^Yi68Qm%5Q!oDOS<3!PA)CpM|Mewk zLS`~Y?UdwSn5U-@Gq3ImCF_hieg$wnA*M6pl$f_hCL#c)rfpF?ESy#m~v zm^Y;?8}}&LU`r>N90*LnhV`el>HRU9JirzmsH=@3efZ&-d*XX_6MBDKwA9&`qcYWh z`ar9}Zn<6OvjnA0_rpZfkH3%Kqa}63tT-x9UJPqjRh(^`)T5>KrRag%J^0mla#SQM zObai6%KVznk!dqFIf~bta;q5DnpSjge=^OAfAYr_4Z!UFUvv%R?18+C;JiUIl*V|; z3n^iU)o*7aEO8HVjcC8(IW7?Zteu0ROJY!`${?t+Z8RvR`=579<*!I)8<*JPG1zXL zi+R&etrC_hg)%)Z4NONZ(6crn$N+$ez_nS6z=9z+V=%8$yt1;_$4ZG z#ZU{bTw(-Qqr;Fn^6<7=Z8*EMXXtUw#~ANxy^oiC(X*89=92;6G|mV~22W-1>o9vJ z&q5k!2Bv~G=36tf4FJy68lB`;U7lFJ$=~~U24lcEjrXr_hA@7! zPpv2f0i2i*;wz8;`WLO0tG37Y*;YmHT7};l4w)%R*xA?jTdBp=Zj-~d>%$1606d}C zRKdQWbYt*h;XhcV6OofUkavjxfkMI}1jG$ORIv32ZOi0scU^j1*lpp>L2VCPM-7{0 zj7u+v{R1Y|69=B|$J^43e~DmANB=<2&bYJB&VThk74nR1T-vAM1CIHp;gj5Fdt*`l6Nhi36(s|XhneVB-kY5|E>wJU8-S7N zuuLLhzCU04=LAPKy+$pyG?@G%lk&nB0{h`ZZFGG2jFGIM)a5sIiEoUAZ_$o?b?ZJ7 z`=b}^v$Pm;izl@%t!wu~;}K1<`qZWD8ru4|X^`?p?GsO{h5w(>vwt~Nmk^D`ZhWEY zfkJXmPU(6Ye@gx5Vg8{X0Ego96My+`Eg@2>UtKZAd;oU(U9~P(KVk*-0H4u-Kp#g# zMCO(Md#|jUap0030H#R2%e-~_gW4$`y4*c&Qr@=kXCnpZau^cTx0suzu{~NaE z^Xt>~Gqe`d#X4*(y5qy6fFlt4WjAw51MuEol+5^*v|^mtRw2{;o|pLL3%n#a!L@;h zW80paNn6m+=g8Vdzx~zRk~;*R0t(awQtuX`-*6Yj?* z|CO%Ms-JMCur8XQQ)?6nF~2|JBy{=4bHm%iIi(qkMA2H9)KSy-r)ELQyYGdF?$$RK zN)ae*>5ej|OWDz>j(1xGtEUFFo3O02(%dOvV{eHZC3?U-Qa|9V)@|=qgeQa2h6$N&8UpmhD=m6;)b^9vN{_{L(-d1ZbAs4!OR1M>q0DWA?TC^Fz+ zd7u|B>0bLpr?`#JGs!kwgp&Y|LzTq@N~zQO0d*bRN0~8$iG{qfiBjb841sZGn@uH| z{Rv8Uct%?uT17#u0P5Lo|J#)8$h?(y=+(Ce1Lbb*k>phr{rq=5djCyP$X`cgZUP`0 zYcrl2qeR7cMixk2@{z5s;tX6ReqrIK-}SI#xC5fZALUjF;cflzY`$oPhyY;4@`-88 z;r9Z!?<&f~#NYsyyrS`$;?+o8@Osd&#;FHy{_o%Xe?OcjCtvSoGl_9gT=u;RMj~jF zeNV9dh9Lx|Tvd9WpqXqVRVi;XKpF`DnQ==UA)z~V1mhrD-Eu3wtwI~F_*2V-lNnsF z@(m-9ZiHcFWK}tf@6`ru6cp@ciuUn~-edOyGwY>{cs*xn({N`O9no21{o{ohpO1fb z4vYG}KW=a!O6=x~%hI$npKTTz_WSQnFSn_Y?K|;pU3_L%13{0=@0UWJ_pYq72@^1- z0}2qy>Ad@?5N|RtZC^jG>v%X|q~N||AJ4`>1iNkdLUS}H|;*sTcNKx(pl$ZYGDkjwFN9mj;74OSyf}7xYl1P?{xpQ z`{*H~*G^|!F5lC+C$(33_aS&--{)wdI*LZAEf15NG$IrgK>LW(dvhZ8l3R}KpplYZ zOE3SiWR`@i&r~e3QBMW{}@&pfL^#TE8otKKB2> z`u$(u{ePZAcm1C;Z`Q7ve#I%m|L{@Jw0Fn_5uoX?6lAzxgIqG)Q(@0A`BCVH)Gk{r2!$Ou)fSdT> zWb!%jm3w(-9f!)2J%o$P~IY7p-?Njiz;Q|*{XV%&XXHXU*$e3m&Dcrpch~d zytZPvw`trXSdZ2`j+PbPF%|>NeLD__yjq_uZ=Ew6W>d#(0r7N8o5)fyq&AEsZq4w=oH~Zc$0(1V>uE&Q!^?(l7}a0IRpw1xr=-2ejIk*lNfGNqN4W7;PgmK$X~k@_Z^k2i@WnKx;b%sN^f=| zR}P>eA?PNfk935Rr*3I^tfWbBEjq30po-CtYR*Xb9}uNyMRXe7Rg8HJpa-7?9~u7` z14vSg&u)#nXbF4HTv6Og;to3vJ+0g$;qYtgGfc$NX@$PwyJs3$;u^y(Z~L;EP9a9h zO5_4wC6yt@$Lyj+t-()U1z4y5;NJ;%%gnoiCXe90Lomng+9riW*72Q z{EMb~_a8LXpk;Ka`rI&h1lU(?>%en4OwVOGRH>90sx%yyF|zDzdkS7VVHWdHPCozC z?MGkDu6F%z0#;5N>Og`-AssLhjnM)nUm^V$YO8%;`hO8-{^uFgopa#)!O5Pr_mUZ{ z4!33&TWn*%y6!Lg6THkOJODzRL9bS7m_e0AC)v9t8r7EvZxs)dSM1UDu-!|%CM3=M zD3hmHb(CDJDQr%BB(i=Y&D zS62(Q>(&h{&+|xAvH}HLy1Hm8SB9f&D6_gMQ(2sZ8+vTn3zXgfU{{SQZV@2Z}Z4KjWk z^rB)?B7by5LzhMwc`mpNaT9G%KH5~b1R8B%T-Km*{17AVTv?)XzRo|Gtb9n%6N`G6 zooI7BAmTZbg^<9b)nAOO{~yZUGOo%0?f*AWK%_-fVj?IFqS7&G0Rcg}Mo15ku5E~v zfQXVJF=^@U7@g7}qoljXh`|`Y)6e(1uFtprH~u&G0QTTK-*vo?*Xwv5DYs7SQ};Z7 zTMAFP9q?`!QBGT@D@Yo4DKKXiBEX4E$7K?qW8Z{OFqp~01Sy98G`Mb6{8(=AFi`w2 z3X@ClAs`z^d-J37it6XeXxR-ScO;=pKATfBp3`tpJq> z8U4b{u*u0YN*_nUVnlCp0wlIshbrt0#{KTzqyJcxrkT>F z&o2;1ON)NsmaF#`J7M51voCp?GU&X!>Y`6v^hdkxS+1t03q3rK0yfSR7dSd(FhJ3q zKE=hxq#&E$x3q{x-wlxXZl#~nrFUc}CE;1wXWTxH4t~!`O@4Fz?YNlePTh@_~JPy1>m3gA#Xxh z))hmiQX=eLi*3l75a<%il*PJ20e1{O^=gi4!?2>=RqsO!vKBvfaBv56OH;{$jrI!? z-L$7CO#u#vGe%nDB|`D+AS zAj&j(5Zq&$+9?0{m4(l-jP8ILiTU@>Hyr<9$8~1{#D;&s<33aWfyd$4ksRajzIIx}IYcIqOc+A@$Ep_HUug-%)Br6)(2{{v*+1X(W&c zWslb+&>^8cU=Oy=n`TE;jZ#Mdx=DvhUZ&dpozr+tnS=9uX2Sjpk}8T0GeIi7SZcjk znwI2qgvYNMdds)STcq>1Yqso?AJ1Gg$wIRMD>&t}U)6vzs!qP6Sc0{Jc@|?H+88H& zpQeR3V6n&U;m!f~W=#GZdeF%EeMlz$D@|!Xmr6@6uV}@{bbM5K zmua++_hXFt(gp_$;Mt1N>%T()0z2di?RqwOcjGA?xVC4ixfPIfl+_8{+km;93W!#a z#2^zfsjUaSch*|1a>>+z=A2t54pN*=D+X6CU1LwY5p&t@()uNLnW1zw&a{GP3ibQ1 zvff?3wLJ=UcyXk8F*=_PoJegTIgpf%3XnSnD%}RNDGfirq2q@$cCpAZX(nn4ab_Y< z6`3Ugx;Xj;Nzt;3!t5Fs?eIH|K>Mru4G??N4xD zEy%Lf4ISqIOdFrX&|MPP8nxaK>3k&u{5Q&~|9G||rzZ6Mn9inMgYR)k&g*P+l4u!& zXZd@d$rIPII{GO()dQ^5%7{KN#5q!5H$f89(J zbhWxIQ$aePwyM6!qxqx`Fbp?NNCppBnAlBK791Y!PMb=&Z!8Ue<=%cvgoYGRrE$J6jp^Sh;C=_PVfy<{Go%2e0)_>J68l(>C6 zTO;fyQC4ZG3a6A$DGO7Duh;B-0G%fLlj{1TGWW=fTKA3dS(6(469!yR5!%k4y!1Gp zr^LDHqWzI1F7TicIs+S!HhG~6!#Fd*TX#2ZonL$+X!;DYOW8`o`J0Yrx+=zp&UR7A z?O5@nN<(NPiYhl_`C*{`j#u(xqn+_Mvz6;_W{V=DeKNx*ekKW_j)0?PE`VZR5)opF zZ$F?%{~U*ughoo*jifjwOY$B(3KW()hi(o=^cEzg;F?1#->@7PoR+V2g6Gf3cWsLZ zD=vwDq}h)^waI32^XGo8b}rx-I7Z^R$UAQ=kgp z{OJ5(KZfq`PyXXG%d2NB_=a8NdT6iZu~)OlUzj6>9c$m62B%7ieE@f8Ml0EU)GbR< zMZKACoh)AB8Zc3Z0N3pURnX$QJaxzt3G7{KV~zub_ap|z-|+~KsRF;!Y&=d&iB0bh zM)8mMR#12GS?SpnZA(!jCQ9<{u5lx5pQwZ^9yDRfDn1!MYjrUd&L>ePEzTC+=(jPU zK(o_A*3a|M*T*}`XBJLb?2fOQsIae!;u}ysdegZ1358x#idKek0Rc17=2Q{V*t>lI z&@a!T3TjsF8!im2*X`Di0fksfXFsh`Z~nlHQbyFzH<3r#fN}RFBw~f_r6sF+0)QG? z5>r{^eA1XI8#2WXQ~AIm8*G(T{p+{aqW0P9;zcpNf@J(R{xN&^bp~cBxe$uE(G*>IA}vdA94!$auC0v zYe=6mZgj|f!O{U0KY6W)Hn1lz@z|cchn!hWfp;9QHvC@cXCLS6`t2rG{#fXY`J?Vm!HeLffyE!|S7#}A_bo3N>ZClU;7(Hxkqr+` zbTEt2W&I+VALE6>7AAiCJ*yp;LKgoifUI>}*L)%hAhTvu<`BLckjOL1ydCwnmEWr> z9qBaxdNuy@sfp|TUv(kOJ2qf!uRg|i34LOr^w95CYe>wA7Gwsb?S8)36~w~*zmUWc zMFuJFCmatW#0)*O{e?WeqEVl8(c=7q=s~G+kcMdqWqlrcpApO<^^3 zIYFiVJQ8n4iHoSZy;+v!ILYJ0uChLVAsxn#yjOoZmNnX~K%6^D{d`#U{HoRlYB(6$ zUAU0O+X9w)LzbWn*~>_bTYD}xgq60sK&=fN554*HjsVL zjG?&kV)y>VLBpQ!Pbt9E;S_)ErzmWv|7XH$E5vcb8S}2EwPVri{$hoh+No)!=qG8; zzt94|01YGGYTH2Q%ooDB=y|M;D@9fOwgS3F@5GNo9G(XICE|YN8xC}LNeNB)Z6O6* zs*B8%&B*b@r5%#K2E4n8;s9A~*ENT?3jn*{W-%J^yJghscM?pLEYQFhqi>(04t<^8IN*J* zbHWzgbyq&TH$ae!ubDQ2&gkzI9n@Pa0j(x~zKGAC_XDi$bPTIVZJbL>ceY`bqhzV| zucO`LpuVGl6f53uhIM08;yI(OStopC@WSfq?{wdBqBgRKJ=o$YK@>aAKrjay1{(E1 zTO))jT0e zb@Z@pn3O%)Dml42X$v{Bh!>M`oW3&~=55WMZfEJdBGUbIu)CDEYEp>xlVjt$0fPWc zk1w06ohl1cVB?K0iYzg)FN#kXcTT#)$~KO_25T^6v*`R-I^}4B^}4#w5$>IwNeJqX z9G~mXPKizK^as=u8<1}J3a`UCxzNw9LvhEt?qKq>N2*`O@;2SG+S=zdf1au1!jd5Z zi)`7BjB_0kgmbB5?c!*lx0zt+@m4+VpfvG?GHYPCq~AAdmdri;UVvvo6$F)ac9@Th ztOzRF+pajOo#^AY+!3D598O=oR~bq>Q(#b0QV0mqDCSzQp$2Sv->=vkanQ_h zK{1uyc`reQ@aqJ?MI|u#oM?2M0VPipUl`;kD|SsK5`FzqNT8Xh0)wcz-Z#EHr{d<0 z%H{?8Y%%+@zJLawg2eXPIlwy3r=fFQ9bWkpGZS>3@}3R&MD1FEVO94G5q4?uqO$7Z z%qp&^bR0($@aeyGV#~X9C7jd@(FEG*diX3$=q~Z=*C(sq@LMFPRf>V1D&J39}5x4V5dkcN$u3N$aslU zpU}unSxHM->CCb*d#ufQ@9Xnd(CegMa=M?AQm1~qBt_ydcA4%imC5}z(GRWu1x@>Q z6nD(C)9@$e1JXvzM|O@9qp`A!Z1HOKEB+K3h)HZ_Noc_55LkImo@$QBx>t;BNeoER zqnrUZ#7SbNXjbx^MED4l-qAqFjesqDdD)w5O7fEvLSEkNIc-jM9+G|3IGNXKa)z$D zs7JLazt;Id5Q(?%qw&vRffjVOSK(7)!??cAuD5jOqYwXt?9V%(&ExA0XW z=%A?fwBu*xgTTkZMX1xLhLe^N(FJ;!rJrR313KfzetmRz1(J~Ug9UO^6`Q8nNcY0N zeL5dqW9K2wDLK!r(TNS*#!{;6_0?>y-19uyPhC3Co>Z-#8zl29G9MZm4uAou<#@o6 z|8C)z8{A94sfnv0Eo4vHYI9mG{51CTDA(`$i~E6f?z^^54Y+TT=c5)0-(p*+4gwkp zJv%jq4_Tn!D|vyGZ1<#eM#G+8~67d4A&bq1Yk#!uoYn8a~$wFOTw1Yh>1 zhw1q1PhOl`D#=5vZ9mGabaHiolYBfXF{h2byFW>U+cySNqmkhwWd-$4)knEBhFG2B z&6gIM`Wi-ZrVF}VXGOUyx|;E4TI+hTNG=ae1|YO?uu~M7S8Soo4397#m+YhjX3$# zFO}Lucj`qw+A~*IgWJ7D)?><`{ z)onZ(fOViMyqV&AdO@xiE8&CXsM~eCaNH4Re{oOHF2euXYxaIHyqU4S+HAGu1SU_|%yPiwGJDe)~Dg>H9?0%XMdD`%;y%mD%ewbS5 zP0c>5Cbc%GJag#PY|2T9x>V1W9?SHY zZfJz}x;Ml5)-V`ht!03j5lmVN40K${W9~7y`|{lw z&~RDo+}tm5&d?k&b=*iJVC#0ee7SKMQ+U*O^>|WlR-ue56Cg?{A>rn-J2kF3^F@BY z+jVAjpOM!t>Lf03Z(|;k%){i;n1H~H^9uKSs-5HZY!8%Q+*0qvs*z0rULhU;tIk|M z<-3K`+%ZHZ<-t|GWR&Y>tr_=>@@ux>` zK~=>$rAV6zeEFL1KF->Okb6t!Yftu*OdZ5+*Q+w}r0s67pr4cr-*|n&r)%)D_}R5M ze(*&*qOxH(4zm|Wq-roGE&`to_%TxqV8=%f)HCC1odhRL(vhtogb65_uBx zv@8~=6nk5;sxETd;D-8d`}$SP@|s2DfX)u#xIlO-r(IY#OXxx1go)2b+U)!V>sbCP zEE1MIY;}Z5Zdbk#MxPjm`gN-#q%fqy8c)rKb4i;mZYm^R@0o%nmK!s(81bZp_0~Jq z&Tr7Pxqn0D`=pNJN*4m9{>#LVz3VR_^R>=rK5sbo%0lN{CDkMiiS7yi7AI~XW9vt& zH_Pb$A{8X=Xh_}Ulv94mM=)O9S$jAHwEv7^lB9$#x)K|+fa_uv$KIp&nZ!DORu>)9 z$-!k198+*Z*>|uiAJprgp%!|xzDKde(zTlc#{TQk&!5?xKC{K5^Hh^%E5qcKBw*KK zbjtuh@()@vzht&kDmNPFTKo@Qpg%b#eQ8jylh_M$+>Z!2!f4r= z(4!9BK$ossW_tw}rx)u1aY3EPm#GfYnHZ{Hxh6V=pL|x7YU1^U4q`RzMY_cu)=bYf zvNl!FoH`1y-@fsO5=Yfgc?@9ry@D0l5dLMpsOr!)>r|!GyiO}vM?MR8m0~3gVu7=t2oCZO{G)17tqd01qWd8gJjIP8m zRA|b0x%zov{E0y+1th!ls>c@0yYouutS*7lxa=$_3JM_~P$m_OxHcPkT&Q5X>DGW*c>?yEdTBHhC zwi{b5Hx3xhyVtE#5*;Yv z;k2EtDieg{M4+eZJbV^Dr!gD!U4q)V_h=;3;jS@HO6@Q51I3DIgC3#1<%qn&O_=w7 z8u-6WR_Z^ybP*idihoh%{k|?>k!FGmaZ?g@+hJqRpcG)arG|31>L%T(zbg}3gkN91 zAAD+)r}i-hDXWg^kmZ~35gZwbw8;-QP{AyObHrgdKP_0u-aL_z6K#(legw8O=!8_; z@D%nCi7Rce8aHP)@u3Br2LngCUxXxF&owF+y(Hs)n28v5rzuV+@9L55W&y3!P1QYV zR%B^8{dnzH67^oE5?^?9j-f4`?PUnrG-x*08Fb>K0dyY0_hW5*A-T@nQy ztRl{VtHt=iDw*tKVwNq)Z#!+MJ?7T949PC|9Jc@!x7UHFaW0?9m96wS?81)>H|`ED zm?2NqVFWm1$@Tj2m=fb3f-wez)VoJ%Bq0Kxf^7FgR zA?K%h3{udqGnguQ;r<^*<)sob)p`=g_yi~VhE3+9p^#nN!50t*@8J`7X%c?gl(jz{ zuK!jm|Kt#mBv-t-11l__U62M3yf0gLN4ZEPtdNX|eTyIwJ0}*~j!w~(0n6ZHp7InF z2z-XPn`>li@ocn3QJj@;_vJ@wHpZYo=frnO{54?^OoA|*bUr!BrSRo%UGKMs@a91B@g+P*bn z9Dl_Su_SHt^!D=j(V#7AtE<^R!#e?G{#_TLEGGptonxoG0-W=t^Jf;l0LM(T>SN*B zjrm$$1GE8qa>|$T1AM1P*R1#J>=Remsy=-7M$9S|e>jy@(4JA1Q{B0mkl*REGfaoQ zL;r$99({ykH>5K5cN?;`H!KSCCJvled_hMaZ>{snkE-QbGhN3Y8HMJ--fQ+i|9Xe1 zF^7@9s`B3r!lf&`23FQ)&F?|m(UG%NKtp=;%Gp!VJmuPxPvq>lxXM|$aDQRlDTW8i zdy!we7bQig_nhTBZE-!H`0lEbVZS2G$K=<-dH1g93|JVoKi2g6-1W0_h2xl*Z=(%W z3*n)YC{0TeQ2FIz5!9%@x3y@0;i4bv`XXHn2zN36m|#3I)m$sOUz`ia>>bYfoY^O~ zL|wO9z{mu(r@H(RRE1#&@hY#HmA$>}$Z&U`W=%b$Pbt&VqHZ~dc_yBnCyez*#c+Tx zlAgxZ2G7-Xd~4XMUQ`zr~*gUc6Mzx~LyHDH{XFe4(G;=;WX8u48rQLGW_$pWb%ileXw zgQSd0x9H8j&|e*46MR7~0WQR%dnq3$d{kCtghXh3PfG_&ie3ru%6)AfGN+QPiHi-0 zs{cp~Qg$01nLe?-iM6jUjYXMv{Z>_JO9eGkG6dpn8Qpq{lF%DXl_{W^O0-ocG3o+Q zuPe({CgauM%2#}Sd(wIU%XG9CQ2CY+Rj|w5Xo;OI=={=YWhgz6ATrc=x+y4B_0d7f z7vdH)=1Sx9wMgcxWa`#ImFW>8F;+l*|P{r$PzF)qr z5l|IBAt%Y%3iGbHqODI;PHL)L#^B?6l_v{#W$u{k8It=Qbt@j30zJ9H{8se+Dk}*! z-DUQmvtzId)o6(&mZq9ZhJ&xfM2q`P&|b|d#I7$n$*-+yDp{mtYnRqFDW6f$MGlcm zv%TS!%xNa?%o*9l6G^2b)noqG#A);q7hjBAwan=UkB1J_JakI=p8ibc4qQ70yb#O2 zJYUm%ondO8VC*sagL5khGe|Zc&ci+@wZdh58HT%k4cWbpE((6JJH^NuN6!^A=DoFa@?Oh~zA}YOlnG+IZPZi?l(N(pVuy4vIJR5t~ zqwVR^)lJ?SElxvGpL=!`}AQJieokN+>-)}#7WY}?M?I=3=rx9TgGKT*OFUoq0oSCluEOUW6RfHOO07ZIv9gL zbW58kV}`Tw=)3|vTKU;+W!y;BH&8M>=xAJpHSzkSB099)cVOl z4CbE3RP)C=;eCG(r9eW~%4b|Vsg#`*D+mzM2O8m6EqCqOTN>D5vVqfILjzNnQDQ$U z_pIOl{v-2_#a~r!8}C5{kl6HzC9v3q{s}7VW0_j=qz6u0_zibOQQgXo zGskJY%$`_F>XzO`{Bl&BCMV^qxetY0=BZYXqCl}c zI|P$gh+pgCC-7~@^TWe(1bQG6j1F=ZdZPxz9Y`abz`nIgDR<|kOHa3z+lpFWtAZ$`cZz*(}t$$@=<%zQgn2YzXLZYWe8qd;@}@GUc3Y47l1M<@71OKHW`muN_cV zDJu&qC;I^quafU#MLb!LCbf(J*p%g9svYTD8v+#U9;k!+Qx20rdFUgIPqM89U3;d) zm9jfBUj?+>5Ohr0I$2UjUEu8oPnF+my6Fn4> z|FNIMs*K^>ca@RGOv!-p?hP#MCyM|>*uEO4?ar(oy8&pK-DMBFC>_! z>49?Z^RF3V59@C~eDDvZQA<$Cx38KG%e3^0iLwqDR&;tizk47)D(2ZQy%-Q!&S&F< zCWLVh-XpDq2t>4h*J6bIpk*D)DRB1ne1v}6MVX1=ma2U(-%aN6lJUbA3Yh@;&QyQR z;VjTQBCAHQ5Z1m_EFtDnPwLk-Dp*E#@r)u7 zkITNXJ|$LFE~qZX>sz_^5+e9`E?31Bu4Uj*6X7n7C0V@N@*r?%+;+IlC;3P*Z?-g6 zm3eUB`mA>yQqtr}c!uLhR^?H`s@_ai-(NQdPk@kGnE&R?PKQtZ$hus+qI|+id~<;t zWpx@!xJq#GmY&Z8!oOFWNI#_`yjA5M^F_bmwTP!50khCtc0^OI9Et0reyP<5_G7gb zP6b;ToxT^wE8Y6O$%py&Rm?{~69=@>?22%#$!5NNCt-ysaamk_ufFdZ*$J1ndrM^% z)bH$v(`9&*bjajcW5BgTnC${GarG>n^0VLcndj#0ZdsBNnIB_|GYW!*&f~{C*iTk% zt9B%}ze&Zfki?%Kd6tfW<4*yimVzCP%|TyP=~YUp`k$-bjx|6z|Al|ZB)Y_6E7-p1 z=dy`O?8c)&vINL$Fg^R(aYPmYzHk?Hc@yl^XmI6vzjbe1fkV?fe&sdYrOl82S}`^S z9R3LxV)=iiZR&Q8o=(9B8X~NBO-5ErX@n8@jnAxqdR_e78({yVK|EBmx=cPV+UoSO z=B$4Ty7a+JbQjP>>^t!*$3oWqP#|NI2gPK7T;RF4lt~T{7s+6I*in9h$5fy2oq^K0 z{5nS`@gAq@q_s$W+!VQANrL0+lo&-4-RtTFd?`R)YX&w_@vz?v=oX4+bhLE3IF874 z{5GAP!9Fa$4+E zM%UFC`14-n?wq08F>t7o<sBr)@9*IvLSj7ouw0ifv-5^!uB=l^hrEF7jR|TLj}DfnV(Sm+TY8n`kKwL z2Iq5Twh;KTovQ(YBbSK!hG?)%d=( zh#Z{z9Bm8B;_ui+0P3UdA)1wP;(HOX74AN=|75Y|SFO8Y;to;~{fR;R*S%*@o0;0f zVh;lD)rjtP<4zsF#D$TWxWv+<@{c`0nU5J@0f_9wD6&6)H@zcn1X~>cJsh~L-As99 ziwyO}uG-JhV`qBI=j`bVc9E6*V786`_--F{gSI@0u*0vP{cf1rM!!$whXWx__#fLy zizU?AZWT|3c}@8~eHwQl72lD2+^6h8T*dC-keUb%3tc|>Fh4sfOgJ@{_Yp_c_w$1nGUyBK~f`Y^6vQhn=ykoOZG#>9^B6FKDBMCX*LCW}4vRR_w7n)G-fc~%8m z=hMxepSsxtMR$WzP}mAh8)L81T4d0LEU}*ht0H-okb~}ViQ|$*f$fFQ+U2vg)??+s zoym$ihwA+-LZitH9h#4%3J|MA&#R;4+@Uey zV#NCyt)FBGqoJXX`8UwnM#;iYlQBE!Ll-!7eBA@-AN>QWa|_J3}CUvr!+7=fdX*DD>Vk4>ZjV{?o* zvP+b*E9;h4!ug#)D1sk~Z7{aTH*RF#8v59P#UZc){23*nT^DvQcZDf`H~&pJoZg=2Y#$R+BuHZkzYS zbbBmY(%%t@dnEDH6$u!H`e1@ZL^R8-$Fn8YNW}Cn6HoXb2Ew)ldt3?(KbxSWP2EDY zIpkXK@r~1j3#r2AHP0F6ya;CF3S@E+RZDwge_(2l%xb65ZwcROi_ZQVUmX0z-S+OI zyyuh{By-swjh%~e-;Ot*^=t1hLOWmaQJI}s{wy0=%4b|>wfgRuVxSM+1R^gDaB`*) zFu2F^(K&UMU*%OBXuew+BT7Kb*sji;TiqaRE?kTxiw`&jdyko5?KK;rHOrNi7t$e1 zd1XiNc>nAb#qmk$UxgC6ELEV5$P-B&JCU6ny38!0dA zzB~<0#RFU-BS0+&0##Df54S1vM5Z&u#ktpdT0YyA{3}+1doW1*Z8Hjf2bh~cZsMAQt#xqB#Yxc_$QCb+CacRM! z%K)UA=<_huc!kb^v)Z?{&J3E>%=cz3JbxwC={{Y0^EywbAm1!~3>xLsDQ1buctWas z-LT3;(tfJaxKa>Hbn)_=czhyle9_j*8?2-6mL-3~Nqz%n_+a^w1>NI3fBkdeX3xsE*OHE(Mg1Jt9ZUl52@Q(uJCs zVIlpsk=yWVE@GjaAC$%h*#+p0bT$ePTLe~~)Srv{0f6AR#}7tGJxANglwN!BLbE-Z z`Egg!Ap8A;gI;FwiSN-Uwa=$Sr5y@T0YX@&=9_#>x-Oz!x>MTF^Ku5Eus`|v#*2F) zXwEPBUTEq_XY(>3)l`M{2_Z&-P;0mkzbXEZ@c#F~zMB%=JL8(N@bgXEPZ|L(%9AF( zhwbkz0%d_0ls^rWas)okbMQU&Sd$2-j@`Z9q()RV>k<$F^psz|E~Y^LM-TYl@A^jw z-lR?iC{&NR0~Jr2g>v8OzSVwf_J{qDz}!eFDa1&X|JLpSG_w$qqq!&32R+5lO1<>mOuywaqYws%xJ zYutgLkGuf=f$eWK?uNYSp~toZ60+qqlkAqWJk^1L4q2!8)DJ#30|BoDFf!%cV5!$B zaz9V#ozg#Mwzrzjm zp5LMeZ?rvsqZryn0cI*qjjUM+|0G20t!)Rjl~{HwOG0*JdJpQBQ)QI4yc_YSQQt0C zkJeW6Zw`F6KFXiWA#gbiL2-&*NR2`2s-QVgF0ahPsnoqKLrf}1E%TCM&|F~GSBUmF z^8FF1l_E6o8(V_6p~doRBP@`1+XeVGFyA^u8bP1|0QvCw@A<)T)4w0MJnX7Vj0N8$ zOaiV0+Ov~I${S=`Y;DT@8 zsUkZZ-~7`O|9eobaNqE+=S^n`oG+X!kaN_0uqIa>Mw~7;*cvp{p%wxQ<;3W42N}n* zT9qj7b>7whhyaLX>g*6+q2UpQ;_;IYN=(dZ7P0->2?diexvQO8%;pxXEFNMhTIx)O zu&$yzJ@dKwk)<3;#F|>~+SS(I2%0Jb?)9HJPpP~903O}|fCs}z>P)Hs06cuu3yUl; zkud3l(Y>B}vKSdD=bF0o83pBt1%a01KOq`Sv1!x-FC7oL!2*LrAskW^~ioxmCKmGCFE3~QS-Sb4Dg6;FFS&^Tem;%r#i*4a}yKS=}%UioWy}dX1PBn>m z-KUN!M$FqWSh~(&FihW;aKa(wj&D!MBn)%OOL(Ek%G8_o z`(Y9@q3r>syWBzA(jZVuK8%2g+(C8#$cCUf!1M5`yNT$2wDf(sYdj9nYnP5LaZ#-= zepd}GTFCH8e&zN-`EuKxu25!-Hvi3{6=;q{5p7sxN1^wRND-j-$`I=)HICE7P6g5M zcyP0ca>ytKsfkNKxumg65hBjlmbe4Y@3xf4pi4;pd29Ro_5J+@{+^0I%!#6`Ng^?W zW%zflw4mz(H=X3gCELzIPv}tBAi;o?pcrXN33_CrR`ggb zw=^FSWHM%H2w+w$K4@PvoZt2GPOA|!)5Y`$?YJCH|g-yi4P zUXlY5(9W8E;O=Z2wwO!PR?rdu$MffZCP%PwFH^Q#y$(aWNx}P5<0xn6pToIqk6AF?eilp!-|CJEx<2^Kun_Fa-g7t zoLTQ)tL^r{h6U18;N8f{f8Y^*Ra<74j1=LgCEuCKq87S@cthFGf=zZAxdA-FKkYC7 z`(XcV!2kSg`TcWF?!ftzxqP?Jx=Rnat=c0~Lns3_(?F6kOd6aF&emaxkT56O&KEb^ z0XjlnNPE?n0DRc;*!0O-s~YaWp;#U;l^$_^c?lL<9zqW%jZ#Ml@DBCT!)-O=0MwhN z`<3+3{u^8@!goJVd`adKH1khQ!Xa{);64KD`gQM`r2)UH4uX+)pl}l|=8t~xQ3F>( z`!1%9dT#VEjrMXl`FWc*q9Y$~(nsXmQRuwM7Om_3SPQXk%MEs4W~X@1uP6yF4xrj8 z#r+bO5JBLHih}>Yp7lS6o9K#mc+-M4a8J+(IlVm3HB8%hV@DaFBX|j5HxBFyDYApX z@P*~Q<#&{{37cb#-MJ!dmazgJKy$4uyq!ge8e%PnwMQN0C3+eIz!6}#062p4T_lD( zGS6i{CtSEK1dZ09iInP4Lwd=$JOJPb1q<9@A$hXPc``)GVraMbSHg_GU2?~gJkPjf z7BHv|Wm?lToP6;OiNMR{a>bc*pkN&PL!rlZLJC+K*sT!sy*#K^mcScUu=3U*>u6|D z3cmgw2Q~CoGz|j|01!IOS+4R{?pu@i{W)l2{(nq_T>0;+n>t4XaVO>tjgT{e&d3<5 zM+qkq&Th7(1M&=|w1s4bhrWWe>o%{{r_e2lU!E4w(u)Ub!V>XxvOcg_2;zk6(u(#xJOSyKW=&kKZkMctRaac;Zoh`V_97-1VOryC!^s4hS4)RwenVm+_ zN}C&C4{BE+Hgt3Q0R9o?uHhYs6eI8 z+E(g+@{+(e-&46q2A}L_uUMDm2%zf!u28vpL<4NCMAhkrRB{DXi{JY(BF! zKb)#8yY|!?{c|Wi&aB3~PKQoHmq+=F zzJNB0o!|ru0By=1fMFsrpcK^%A)%f~BxW!&8I!8Zh|2*yYl?xgm`uTpB=()}Jd)1HLlSgOB{jg|ddEW3XG3ilI!=)@xYJo_bZvV4J zH*ESi#(_jft`eP7Sd!Jq$)W;oLC1g$C!X@Pk5_ZXBBKz?sg#gDMR#Q)@vU`5MMH}w z;i)H+NS5j2vwh%X+Sg+lw(E7spGs9kXADS{upCd<$aK8=lELKHSX43Ppw4i%p(3=A z)5*P1Dg*s9Oe7*-p8YjUPpHtYfZc1=_((7Jcud!%m>%h8#o2JH{j}RpKDNScthBeV zzTa-V&>>ynQ*okWy^lP(WllYKYLmWlgs*Ojp$KI@AbHTHdCnbf{y#dw^eKElXU1>V zn7g;Qhlx1wj9T#=$ct`jw0O+71Rb?mT$Fmwdgld7-Scni`P9?{lQf(t;kJjh8?i4) z!~|Kb{d>vu!@tsVu6-QfEdCw;!JwkFz|QyJfCE}&Cc=x4;?&&~NmII3(oOHSK%GNt z2q?BgF~GGB-=<4=R*8A)=p`NseMY(OyjIehQjg_Ed4VI;E75PiXUjeFfKn~9N4mxI zsN^)_>wjxkbG)5TQIWV65G8F(qr!80Y%n`oiJjw;{JVuz1g`tKq?k+2&e+X6P4u{4 zui+9>xAna*gV}mLDxgZtYc(v+-R&L-cle-%g5}c&I@6+SKpJtFjX24R^nruLL|O2! z0AE_$jVSG)rkgTe*BYKbZ~y`c;G~>#tV-W*T>ZV=(Qt6#Sn`E6IM!a*_Hd4F!o3_0bg^2pn8#5Kz5Ym6-&USKWO7a#GU3^vkut>f8Nb~s5%lu!duO>gmj8(Y zIT|eFL38=}%gb`4d!M^Vj@sUT&V0E&T#2!V*>R&LnI9aRk9h5AB%hpcpmfUwJ|pj- z?drd=`VfJZvsHhNDhQNF4<})%LmF7702>`g{&P~9YP)8L_Fn#^zG6ABV{j1plM7Fd zRsuy>Nh+I_d4{aBgrgA9qsdXuXxGzDX78?!2!=%aq94i)K8M>aDutz6iW^VW3**eT z8V2|sLYO>xVFG~+`DME-$P%qy2Cp4?L-^Un_Geb28_BeJnDv*N>)LT0#c zwr7Oy8qd316he+q)H&~=FocDMs&C}oL5DG96ygm45JV%1P?$UeqF?z{(yeK6j)T>A|3 ztDu8CtUTdDd5LTdv0&{##+0{rbE5KG7)`_!H%_{cUq>^K?H=8W#Plk7KU2Vdz@nf2 zN(*`(OLtj5=@w(Ve0Jy;N?*4t`g7G>o>79*I3R|Nlbw1(OV&W-+aAxH{K4RKw5T4_ zoFawA9NJ|?1GYYH@Ih38GW223L-Pb7sSlXfy09KCb$LnU9(7D zB@yhK#rw6pk1ISwE&37Qau5|c4gqCw>Hqp+<__Cz{-cCPx~`%bF9dw%Va9pN--dI! zWU4Ej9vX~SJx@BEskU4(^dX`fiBTXK|DoTyQRT3D^0T<+HIV4-D#@A3PZ%>PDCtX- zXkSsy0|*9WdwEYJ;1#CE;0xDB=cZ&- z$J*)YvIMc4DhDgP&?pGR>h!Qog7YZk>>gqpx`k9^bUi;Np^6fyLw=m}1iTJ~;D$`NET)2gZB$E{vp6yj$*XSGjiwbr~e&+ZB0lLVct4jG=6 zlhSrfO^f1pilI3>2fE3t4Yh^VI1=4e?^ioA;Ox8&u~a-AXWpi3{sRlr#D9%u058^q z;*+~AA-Ln$0FP zui-(P%35Y2H}2hdyucmuNG(w;TE>QqXYxuA0(V2=bcpoL<>#D|gdYCKv49Q4B7g&w zxeyhJSRdY3&fd4bxkjx_VrYVHyDv;EuojKNY%XbXp*pg^_NX&Xl*oLwCOHPCtvC&z zeahRgu>(5!0LO+QAHvGmuFy6t-3kAR)%hsKrt zTt~#;%5wPlo?VU~dzOZ0t$L)~>?3B9-$nd#E&ZOZGWKKAv6y3}TaeMb+(9;f2u3sZ z-XY*&ya*=i3ftR-8CVzB5%O4sQT?ny=GUu@3nZ1{LK+SS4etW`@^xp3KNkDQ{qvPt ztb>qB+`Rp$_r_K}ncc@Su;{WCUOzwG({$!>tKm;b=FUEcr!>iq!?t#5RC85);E{a_ zlbCMu%bPfoh!~NGbte1-x~zJwGyY*$8>{i6pY5ZuwM2JT?EO|DdWkXb{Nh-qui=FO zc0%Mnn(gx9Ok)~OHTM|{$4NU}LB5kS^!pqpt|0(j5(n`dttckT(eO+vLR{A%&Rf8x z%j%%YWt`1AR0iK%x1~t+Rm=Py)#I~uaLK3%1ZNSQUt9wFk=^hr24+m0#5T74@V$ zkiA<4k?Mjnlgm9rM=%?5m%)SHrf)o-MsyU8d&EtP&(KLdNwltQK~&7(SL|odM-vi4 z>QMp}zefR=bl=rV-xcw2S?vAQxHE*9EOqv6?boqeuRgajsHTM%wo0ianJll$w>$DzZ zO7%i4`-r(8WSMeDoY>nlF>b<$Ar@Os%mv?zvh~lhXtZ&1eaVFPm#vZHl|9Ekk(r(3*{+g5L$h4hEF3 zLC7p1^!!%;S1o(HrEJm%pH8^!$K>^65#_TcQlNQrbr7`q1$3YTA=fjN7sGs|sO0M( zPXlycT#3H${`A^eH-%jQ&5~LW6{-0TG|Ll^{j=Rc((u4SFue7-T%eqDf9w@0d?s{k zR*R#UVf=l~zSEoFD{jy1)mk#5{Sr8QNW&_(TU&+F*nGQIgU!3%sWfI{c&!c69j5HJ zGgQTFyH`Ii+Eq6R>X*6~e5N&?&AX80J3jN8Sjue}L0mcjPkx@8u|kWIgD0*CVJ%9N z@5c)}d!pW>{HaBwmDYWqpCtd&9Pgxk!{4w})1Es(3&mwyXepvBdCM0Eu}34Hs%N4> zN6yJ2y{Oj*tP(jBeX0vzHD6Se++cNBMTR9D9`uM$>^lZ$2`XWfXtfUU;&zznw#WSU zoNWp4r5^FI{&g?Y=X0mPknQ_YLgfzz8~tRqoEC*q_28cxlzErLt!9b0J|Z(|ZgU^c z9gb*VBqN(*B_0-DUjW~d@k#d165XB_kq(YZYPOC%c>UxE?_M-Q3O4ASV~#T^GS+`1 zB#M7|GK?wbe5tKq@N9~Rt+n4MoSe+kKvm0v-uzg*(BDZdw1wnpM0JpNJU?E865 zN!Q+2{#?s*z!*6OMCOa!i-Zx`dNhs>(We>_rAfs(w>>l z+Ltm~5^GO3HlMA%rBWn&9eHkvJA8JuuXPdApKeR)^FKo~7Hedm$Ve8SaV?18S@O{h zy%0Urzp>dwKV3czBPVQQN@0|#UzyC|hXKeUhpAs0+g2&u z9MpgTC_dQ5`ZrIZj z1<$}fe|t%#`ynqa-+wTDk3)D&%vTqISrzmEKd(q{_*D}^jhXBG{EpJK;H#z)GRK^& z(HuTY=^5|<&&BMF2p%z~MI;Bu>|#+=1b_&X+AO|z!=gdieyRDq(NbgV?M|fROFs6@ zy-fV|rs_+~S6}IeG&Ia!(|X!J`b^J5PfUCK((U~abJ~YbQww#R{*V{$U&5@#6@b;B zUo124y77bYR9;l3uMI0JNe430kqWFxdctAJ^~3s3yqRrU!i(u*>UX3G7w2d!K0SIQ za5s>Z2=`eq^&3%^+kKv8q4xnd%{p-n!YOqeY4rGXR7@e;;Y1snyh0Y6tMzy+O&JCh z0~MjmQbo_kOj**tU$03=_)N4e%9a*BIn9I+CADp5)sFH;T`pXjG%s{%l^hRS=0yJr z&};t|#3t?2E3(z*|Pxnh?EI3nG)wrw$DG_xkhPBMAq7Nvp zXn~!WM+k^_17MIB-yCiUJ@OW_-??+;uPpTA&^s@AIJ?Ureg_YHc0Xmi1m4aV_->6r z6ckoZBdzmq#FpU_)igmH#)%7MzU zc6o=C4<$@m$<>50M91@?tD)bNi<=#aVXEuSc|=0ztUYR~0e!s52P$;LjIbs8BFx8efS`Z<2WE1U<&cP4@75AjG5)OA_x$F9=8$w5iUCMKzepnwLS6d}+ z*NRk|$t!LFH~>hZW*-VwH#d>TSJP5O>f$@v$F56bOM>f|mB*nTM31G8DCevQ7SR%o z6e4xbK$iM>ZZ^akWG;Eh_VQv*)h6*l7dE zjlZoe@}*9uX@;kSyXj@SXkc(^d_zo5;DQ1?})8kuBt_@IJbF^Pj%^TmSIg>wb4I^n2}CUF&urz`+frVM;^8$(T&hT5o@TRBcZU+2j+vT`(0=3+^CHEiNM`E6g~CE zQYmofKJ^r=UDiYJx2vvnoeTFk#OWJZJI7^d0<9A` zQgM$RI)*0pu}VTuPU^VxP)~j}^6vLF{w5mI(%x^0v=b8p2zvJ7gFxcR^c0J@fOkHW zWPZ&L@pA7osUYT#P^z{g#Kwo|WH;ZjZeZe0Jo?$lcbR;l?FGI>3fVVrgMwz;1Z@+2 zzAN(lb%pQtj~;Xa{)l96!Pd0THjg}?*{>jMZo@@QefjMBCcI{Rq^4TmygeBnE1OK( zh!RulY=VY9Ln0nosz@i>DR$UbQqsP|l>EU$)SD94Zcg3hW!0beHD% zs9OLvHUVhM;ZVw2n;}V{VtVu>gBo&<`muHuUi|a(s++Q%^J3RP8#|)lAr))nIHnu! z`0a)L#g=o8K=2!APvAFoN&MAvSD#-o!X8__CqtSAZ7#q;?O4Ieo*t$Zh^G=tw_Zcs z*kt~EsO7o5UK}`Pr8ezZ#anZs@fU9L=xMoVYvC+(%SfO< z{`iARz2jNI@}D7~o5?guCQ1iwTHe@*Zz=tp*VfqN8&1=H)KQwFzkBE7HTkDs3SX@a zR{wPU!WYKFcK@lug;RsHUjnZU5~;q}<)e6LwGeT7N~66~692pVKL}Llk`n+GldXZx z`rHk?e3irnjoR-V8l)eH05R|JxqyCsXeuT#-PLfG#+z>b!yEO7>$K3YWZqa(FdKdt ze#I$fGVjywOE6u_T{#PRq!&;2-cXiMM1-sY``$oSp;+d8#)39oiwd`b~ zZCY|x3+%8TnzK^$ECK4Y(qA{BmRdP^2xQm=R2B zxY3=W*JBzXPs3(zB0e#uZ0Z-G;e~U{xn!ALK3Y6N59*Y|ujq;$QmQWzYGS5mrl#~M zt%8TUx>{qEG}t^wtB8B>;>bLt8FtFEKm$rHSD;GONsUYtmgLq#JFxbxKj|-d>v?Y# zMIDf*kL>4h)M9OqDbDhxgRXGv@JKd$vPfSAmqx-^;0ncJfrFUXgAgl!l=4@1PZc~( zLtcDjWIe@s*xqzBIYcG-bcDh-CacHkq+ueZ4Jd<1DT2htq~o7c-nav?&7Rax+d#WH zmXnQ0tgWj#1{P(DOz^Rlp{(nKjodPasfk{hmB#MP=7q@IF5evTMt%jFZGS;=tBGED z0$Aj{9z2w;hV`K)Vcb6JSort?T+Vo~u<{-f;*_Mb1^h23B!LLCo<#AAOTC~WEL zEEI52Ze{59mH{5U@wM#Rj=1GMU2sH+Vd=8_G&b*%#8QTZ9mN;T6&o8QL!Vh1KjN0m z=6*aN=2<>sYi!-d?om>(iKqaZx~E34%jPPFogn1U)syUp^WlBtvVK*i{RoWXkVZvO zEv&Mx7T;>?4j>K2{Xufgqb43u;=A7l)!PYO_WGe%p#!Mwweubwf;qR^0< zM`w0y-8VEa0PERtIHaPL#dZ?#=a4OU z=5Y8Hr3xL$xA`YmO03%e*pOWvqxG?dDsAq5leeL#|B!Q>UfI`?=*+60e%w{gNzoAtByen~x?F zkWwt^atOOAL_^SHYW+6(tBWeec%~>tXlGu@rz6hh`FdufW%*>-aykrYwYvj`IjjD( zHErfaMbQ&RVV8f~sdEPcE#;|pzeN8&vz#PhqT&1knNXaOVUsMh23ct##X0da?eJ`5gz%w=3W zaB*a8jG0%RPcd?|h8`ZHMeU~>ZwQ&%iI8ayIw7hMA=))2Xgd8*{ewp)bB4K6V^~U9nknP@NDI*%H z%w3PXSb>6CKXy@lg_}Q~r2&|D#Y1>DJ2Gf$bkfeT8tNznC?7wYxUXUJ4z7!L;^*WJ zI$YRwsLmU1j4b6Q)*56NToO*G*oxxivu&6?KKvTZY**BvjGFPMnOxOQ2mBCu4v*S5 z+KiuRqSwST1rD)7iZYZo3V8_*Ca2!N_3-jK&imzO8B6vwmFAV^P=u73DOa*Hm; z)jO&wPJ`BQzgz=AEz^}~f!G~^%qfQmFYw1py>*0xTcZU=9zJ7^d`bFU2jf-h%*5V8 zpRx8M<*{;%v3`571K^{5Sf;M$u*-Tin4bFa-Sm=C^#sOaV%*dVe~#E?QW58zmj#(# zL2~vHOJE?|%Pam--&e?`6H2oYGFYZC?QO6ADkOF#e(ygcR{pCNKe=%>jCSspoWn6+ zh;it#aHT*X>TKh6$|WB)r%+RY4yd<0-`Oi zvyL;WxJASq59|7jrv}`Qg-?tzx9P!_k)-CVNP8m?L4woQ8rT2_szYh#V$pmyK*i~K zK7pq!$SqIw zBlt_k$ezn2$N4Z&%N~f9j$RiuLIg87jMN5Sk=*Kj*p}BuZ7lv-rIVMABp57&q+jU{ zO7S+gO2p7x1F!t-_Xj3>kVI2{ug?MnT?AIcJcp^rTX(6cK6_n46F=*wEyI~J5L!9b z!@xHFNAcYv8CtWVwI!?&tK+Y#E4NBg-PT?oP#V=nsc1qP5G0APZ#a$C8jV&9ZSRFC z_G|gMyDFo*caBEseMNUxD0l@DI|bd%H`n@twzTsDggf_+EPz1kY~-7xkZC4T(0OfY z`~`OOvLBFS;&;E{vmyi0#HLzfK3V#`ys~b^cdj_rW|-UFEyG-0ErMkMe>&I*sv*6f zt#S*~{M|Y!X?*#hsp=^$@#35fdY5;V6cc?_yu=)oAf3 zSFNO`%C$v{|J_IUqxeoyAcI_gn{+2Vt=Wa&Y`5du^>-~+=Stt{24lVzfJNx8uzeIl z(f&U$J9-5|f5+_Dbj6ZZC1156yq#cROZVvK>$;g8yP(i@{)8f~`udD}sDH)moICAa zc1qKWM{@CAt+@}F>v;8khS;x1k8~cYg=$8-zR$-0%+m<{0x2Hgt#f`8(5~!l7Zd)t zCs@|LCjyYs5YL@BYQGW~8aGm06Uq&}t|tQSf3fvG5B+;|T{Djf-mLrS0i^{$R$zzU zYjMGs>`X)Lm4cICk>$=;y`z!d@gh0<7qOpQmM8Ly(?wf;Te2%uh9Z?GSC8Thbh(Ry zDa(tmE8Y~^fBIkw;sOHc?m;I9vPY!anYL4C}c;~Qbq4{NO?M&z;>I}m7Rn~(pXTM7D zpK5&pBt8Kg1B+cM6hN*6?_QSs;rHy}Uk|+O`2%qT;p}JzGB;cckPFhv7*{$}2w|XZX_`0B8 zh?AQK|2lDePli5e@mJx7vs^Z=Mr-wS-lEKt=KtGQR-e|k>)msM5?x5;L-+`{4|rrOURqwwD*d$p*u`*TbcXGn(Y=eMC0WqlF%b&97hMfLz!e z$QD}%KD^oZYY>Tk<)S#a+JWWy7>ddlLfHAnvqMq-rc6HynZB$Kg+8XUTNQfHe2+dY zepTX*!I1PHA(6S(^|;k>c@(_#Q>iuhobjIDc;Jo(fB^6VgGejmI8STh zXt*N;_EjKBPnO+`1}_p?O>h~JBMohdbs$u$@*mK1cE^v(;>AZ>!M3$-16aG|cx}<3 z@ve$fo7HWm01SgHMiBDj+g~}zQ>F#~Y0c>*5OYYT8GGHPUtr4ay{?K*s3LJx**y)n#uPgA%4<(s|%&ehUjw2{+eh-HZm||_@cNRTobf)Hc^Bae%<9h9>N*u zF=gLp$Lf%BW->>Y+h|r=^7BC=qV>3R-O$V+^3`6G>@J@q{nDb4WmH_h#C9{leq05R zC-Ol`P9%F2`PbGu{F^5Q?>7ncpjP!KV}u?AI#w?Q*;TItJ^f=J^e#8LX9s8y=KC-O zK+gS_%2+i?Wbo_Xo%&0h-h2<_aI@oIn%`8t8FovyFWowX)oxlM@fIQ!*ERvsM*XlZ zf6C_Gfv?BMYN~H=?fxK6bY8T~9Dw5%Lyti1a`;7y>f?_topg0FeGtWzqw5D`JFgTP zO=lC#LD(}|@#YnSac1|Me^(Ln)1H>~A&3Mbpx%BQy#U#D;19V+4|wJ}8TLaa=KGtS zt{*W5D8A)?fV%wwHmDmc0?bo771?-4ZS7Wby6B7!v~vq(-baNe9f$ipQ>ok2UH^h; z{W?))*bw>anOyX38{hTM7iy2e$mO_ef0DFw5ofRHoDquTm;LdQIsV1vm!k3nh7(lJ znLqazX)pV}%5J7>h?B|$G{(s_pU-fp5q@S@6_4Cp#duos`?Y+jP1Fxp1f`LNI}ok% z*`!WY88!eCXHjougpVCyQk%)aia~C5R4Y_Ay|*1pP+_wO_m!T*_~x}L;k+XJI88=p z`pX%5M>^MU!V7w|I`i2`yKm%e#IwGPG_PsX-uR|I|Ls;JkLV=%~g2Cg^!REqQQ*S4|TyhD^W2kZ@oyj#M8 zc?0|^H4|j;RR_zQI2z6*n!cd>=etffMs(Kpvikv^>h+Gc_kjh`4ATRMmFiLu<_H)< zl}kI+F@8fl_z}|bhMjGQ*z(M_6Y*n-QbiZFA57VO#O+q?!w7@aOkQnbUZK# z462nZ8|?yatAVFueArpmU0!(ow+$@IrPJ#Av>dYw&}OrI01mICsxk%Cd^+bO$>ea^^ioT76&S%^%F3c9kvY6bO)}z*}l15?31xDhNys= z=*3Jed@dcAgHkt0iL|?pxjXN~)l=uwc7y zz-ZRx=K9<2`Kx{S7tl0zV5k~F<8P@!iv*a}qki>w{+flPCOtmR zRux`i-ZLrAO7a|B8?9BLpE*6zQNv8p9eNWQv?7zT4!`y^%x`CV9ezt_uLWBz-yu%0PJTtx=MG;}0_&>1C%qh74-nr3&on z4KQ)T-iuggz<=Nyk(K(}^hY_6Dq#JQQ8ma*4R||8BwQlx{LdHTJ zV=27PkT#_j73Jp$J#HXwe)p5r6X5EjY>yTMU*VuAi$b9+uVZ9v=ATv1mt4x5dI97k zu}*qM32cs2W$eR~p2Pym)06A45)^a>v*ZTo7&Ztt)asD7r`Ni|N)#%A>u}f#^VZ*0 zOiC(mE^yW$;4Wnxq(AQ!UMabjqMpGE`Z93i=o~UrQH&&<4O)GbtCi`ynjQJFGmezY z50ctz%H{=$4KJx9%sZ7S`(`SvslA-qtbWeGATmDsGeU0ZVG7)NmY)@QV=t{uS;6Sr zXeNL4a7L&5&z6_MPt4BWzw_vsKuOEO4aC62V{WyEFHF4tOt)VRu$d z)t$NMrTql7xmRkf*Rsu(k`^aZg?RtN33s0jBAH|2p%{3z zS4>E0757B|`oUqwYi`Ve^0(aE68fj7_Pnntw;fgh-pGxld@<}$MV{8(!y z)^B~MY)dzleip)~OI0$aM!yQPR=gUJ+4?FUX#glyls}T z>Ph0g5Wa&3%j*zHN@;pzkNdNmA_PTZ{Y={!{*7f_s8bOZRa#$HLD~L2WIH7VVpFU- zxFL`*nF^AfaBRQz&V^)^q|Fgoc7c*Io$e#Fft|s6a^y!OnVPO3q{5-#R(_1WW!&u+oV8So$6TBUD*38gCEul^@sU^Ne);17XLh zK3mBZxgl9)$V&79N_wnU+OO?3ekI~<7!wRGOZcGtPOYuf!DEU{M0I3AzD$4N1SHi- zqlf{ z4d#1ei6|B|xwR=xL=N7-wppvB4UQLEHUha zAa7ZQJe{0ChG}11fqh@?QI2SffH=guX=BVk^Qz2-;^k4P`p40~dJS@oRO3!~Ct~^YBBPG1Y!+{zW)m|$e2t44-bZd zd64FS3|L;pL~c=!oe-i5!k1sYX{0LUkb=u2?GFVDDI|L)z$aFJ@&k@zMpP=-`6?P< zuFv!2N72Rjk$O8J8SDA8AjOYUT54T4M$44cA-r8aCQWMLy(am3afPT4y>^KUXPf3f z{R(6i(}Jdn?v7X%_;wB5K<~M4NArsH`F&R3<-IPAgyeX-ttFz~TiW|>0LT@cPcD`3 zOb-MyHum6@zwQufoc)6{5buN6l9Mdn-|FhR6UC9yHU-`=-|cPqop+OkwHmwj#@QOl z^N#5d-`)&OhK&64R^_YrXL9bA+YY2DDR=keFW^E(v}8%p#OuSreWtVnz4YN1*)c(= zVC6vFVzB_ZF8%Vh+x`W)-cN_Xd@#x0CsACVw+`rKa&C6%(C@bJO}SINq}|qEEwuXY zlj1s)G00anzxIJ0*6?*|*EVF@Q~&Xd`Fy@%snuv#9r1%m3m~+O?bzUA$}DW;VlZuvPb;YWY}9voEHzaX?_xXH2tBuPDK4dRJgAsQwH@AZ!D9pC16yl?jR zz|bcTPpbp8a@qA@*wb(I_PYx=eXq-~G}4>o>JDbZ2!o%}zTCOJV-`I>&oehO+dd3T z9nu&Br0~T}2w3R)7!SyeZeBH*Etr(U#AIeVT&z_kg(yCHM(HuYP-e zKr1v-iUzND^gfkCnz3grZZ93~#mPomWeWTdq(u4`{sX_n>3pdvr?%u$>ml?aT!-g@ zjLP>FUTOm(ZnB@BPJQVz^iF>~0}odq>(H1*zW+%Dl51nZjfWT003*SF`j>{8{T~GG zoMN|*=5Qe~2ycwMc&9$w=o*6k2q5E2Vi23N2hAepT1KbqloNGe%}Vd`A~|+nnQK9E z(|b4pXj`)>s`;hyei@Je!y~G>ew-D&S1pChjz*F)nzTsS=KWwtPBX=j^E3=0TnZ+$ zKcng9uMGt9Febk{RcOGH=S+KT;;vav7rWotM{C*l#Xho~&3{(KTbv0&jWMY2zW)nl zW2eVgXP(9#w3k<)&$EW>-|3fNpjD`JO3J>uL}fp{ zD|uMwp=qJ~pMUQ^9@f&m{!(jtpWX57BR6>Q2@W?!o!?bgN6+{+dB;3@m1nN9KPNi! zTY%hnV<{su>~gKSmng2yl-#L>*wY0De&#ydAj;KpOBGeq`LI%54pa$PP|e(yj@Oz8 zM0mnH{);bMDYQNIS8Eu2KCKUcws8J`L0dlkJGABWpZhH;#e+9H`#z<@kT)Jh2_9ra z7VK9J(DJlrRR4un@Z|hiI%(1hu(KBRy|j@d=DZkUH))4T+#1VqIeak(+$o77^33Ca ziR8T^#3xhu1#jz3+J_!zKQfqZe^F_C`s2^1zLD2|gsA=Vl{&c&gD?B1S<`AAt%cJB zG<~ZN=ZyYf%?l4=H`?E8&~zKmdnS|?C(#01REZ0l2+JdN`WMV+2h z=<6C5uIa6|RL^z&AXR;%?79&&y17BH2QC-K@DqLa?yINSyI~8=X95ej?i>9XcwbLu z?NopDcz^h|`qHSIoD`^o=`}cE~UrGCr zGtiJzrj6Zz7qht<^}R_g<2ED0(6CV1yFLfncRP_3 zK6^cO^E>-CEy#IQ;LWn_1~NjMRifcKPMOReDn`&f^@T@%YsE@~q=ZY}=7V56El5k6 zyxyikcmP-PTZStM4bFE?N6WQq{Hehm7%6AM(ELiqykFngA3&K1Ue!Nb2jKDMPk(*m zV1u$mZN7^NP?WHVjAp5r=NH3^YPPuRag|+H#20g)4_=S%6yg9|O7e!D;`}`crk%NE zr2Ox%7S~x|ByV0YSytQ<&OEu_2dXeEJvO>~f_7O~_@Nj~hiZq2i&%I6?0P}~wrX!~ z-DN;nbTRyo&YUMWuSBlX_#54Q@ShL#HeAxjEXVqXtgR_aLI9SF`KAAfix7txW2|1^8>FW8h* z=Vd<@{87*T^xR$O?K0k7y`)zFB85(y_s@1E&HXRPUyo{D7iC7)YVydjR4=E>&7WAO z;V)Gdvw>VDyqnn%j6X+O6%QzLPsDHOnU*g}`gouXOiL6AwD?qH!T3J}MgB`c{?|9Z zzn=Df9|QYJsx|S{3YXkv^PAIQ?%p9sOuPKBOX$n~xU@+226nj@HA&_J!6D-JnS~i8 zo-FlUqi_fVHg1|K245T9Zz>kM@BPECF=soOg)_kAma^~r?UEL`Q-lthRB(4dZkq$P zzdNzHFIE+YAtSjve&=%f3lb#HSTHmX-Wh3Skc~EzDgOgo`QHl2KOe}u4`*W;8i_u$+OVgzO#x2zj+}Q5^@95pR@>-Q!PlCg zsah8dUFXk)FN9g>)|uzNs8U*=AH3G4HxgnLA;ebE8dxy@joxU9J7sfFXJPPmGgcMr z@Tm#_zY-WpgMb9Tz;~=`G%w~-!#cmsJJ^ok7QXL6Typ!)}yh6PfaT*6? zL-VAv;<=Zw@gKS`PGu(n2#E}fXK{pYpz>@jvP}+Cfm4^JMK%Oqbz=&w3W3cUz^a z)W{p5c?U&n@d~zi_Ra&Rvl4D5u6N%Qry?pl`{Dr%*7rAkW1D>~IJD^1tn{uv}=GIJF9Qh)2#@}jd!ib0_+YNj?Cq}OIsQb*B|3%Wsb@N?; zPl4Sf>z*=0jtC>pwwnPLPfoyzkFzZWRL05b@K#IaP~3+yZXIjA9_9=kX{}nG*ceOu z6mHkON^jqrBzfKJdMlps-9tcTeoOzzSi2AyAWj-0fB@hI0Ixu4Kc0R~eh77Y4JpUW zfLFR(U;Le?U>RNy(1|!^4X2OJH0ot=`(FPYBO$Q9W4=1FGNQnydBu;=+%?yAii7Jh zChy!gJ*SW^K8wwEA(#e!q?In2)UT@&jezYs@AHBlK#zIY?dj$p18N&~@b!6JX2%fv z;^OrC?9k82a(lYpm{PUe?5=aLMtWa3#rh9W%jIaXvTYuRDJh{`uF*i)B9DlOS4J+FRS6Anxd}&>C6XB}gXkshMb}Am=6E66*m$~DFe8W5SU|Evmf|?jVd*fnKpiN6Bv}vpbmgwmdRSjlG4~BAUxtG& z=H$IRxQ=irXUWaUum>8iie2WP-oB!C=9S%=Fy`&xFT(B_S~{*zrcBXSpv_N(o({)G zcvzxOUzhz@>-@98H!Nm3gZ^XOr5D9K#d@&K7>HP5=jNJXHfeP!T+>3;B2{a$B|{8K zYst`f>l$R+Po5SN2@EmH7p_hK5A@y5v#=tpKWh7z;$}x1N4Xye2M@aN>vOtY^%Mq3 zCatrgdIHhda-;~$Bmuu;#FCUPk1IHO<00)_kW~5=)@&2vp_ohS z=b$UUqTijo(mFpv3jg`J{Kw7d=O6xWyH<<0^+}h_JRk3Re}LphrB({)Fi~FQ`R@jE zq(9r4dybc!SZ8iq&h6I3x6FN2OiCv00N*!Hv9A+A{|oC>1i5zxn>sBjeqY|PTGqPV z5-lKQmQE_sHdWgM5Mg!udbQUnT3-kk1FRVSNcDd|n?Nh};@j1Mj(W{M(=dxqcsI{I zBGcNpaH5^Fb~DpCYGWN0i|&@RXu3s+9%x)JBrvvSk;XbxoOsc#8abrseSUiA@q4*k z-MeFES|F(jmNV$_*a6DrIccsJp8-Z&TijjXvC{ec>tm&p*m=WR(x80UKEqy=P2GLl zbT)zqqIy>UTG}@M1q%4xAb+RZjli8Sw*dg&G6BO);_{WkZ@AApsT3Flgb(~{wf%>> z?qy*8RRvEF7>-l)C|6i*1Zy{1G$0!Ap?x|a8D<)?R1r{c_Q$SWlG+U!4i%8z-+9-G z9Z`VI^ZT(F;ag_r09g=@fg{*d=C0Qo7`6*zLD&_~J=F?*w>fsFQ;U6#Cnin@+TvB4 z=d3;3DO(r7QV8#sC_q0-+z5-`p*<9 zjgHvG009o_9V0|b0odB|U)07J><}QVD|_Bkg*+HThDQF;>%V`w*-GP*E|tokRm$jw&ysFEfO41=L|7u`S`b&k^Zd+EDmb*(nm5$Z^PhS`wDbrZCIiG4Rr`HA>=8(fw~p0uICUoYaz)Bc33jT)p{bX466prTx% zz@9(}D-RxzyaK{qJ5E+d1yDN>uMJIq8z=@4meZm z124$?!Di%F!Q=wBM3k7#;Il;WI2Fl}=pevJIDb$i1IVnLRKMo-dEL=`fUyRaal-C9 zbzq5Q{0x5-8JnQl!DMmxdpA}ZH)Sbf{)M%_oIQDfluKoOQp+@Hr4 z5_8Hqo{SwcTAnxseo8ww2}H%3RKLbzVSQ2s#aW_`^ksS_p1bCWgyjvfLw_IpLTbJK zL-l)siKurrd2H^1%3`n@zgFsgnH@2PNYthO+_jU&?>_a)cgq^>rJSvO{%gQk9K0+dsr-7RAx z^@HC=d-3PI6$mZ$;Wt1K-*^g93t#IvmiuEQza&3rA?GB5T9{miEmoPfVjo)oI>h!t zi3b&MITl-SQ;+f<0mAg_wGB?JTfy$K0Dp^;7oa5eD%3&+%aOZhcr%^OoNDw@=cE5k z1^bLsVXB#>Gcvd>N32yIa8S1>OR}%c4#y9*tW^ajBXV7*8WX-^61#GFe^@ z{M)?duR8h-=-&sXOntW@#L9-7ph_mg-?uhX zUFuDDGgY|LV&x9_k-kOQ^tHaV32Tcg9EY8Ko|bu6jY6G64YDHW0V&&c#N&~n;95dQ z#1{l4h}b3)=%21ODnp1Hb*O)uC~g_n!%qDg6|qo&ahHBQwA}MJ%_S8X8-FOYmJ=Pl;p01tON!*2h9 zovd&1$(bF**r>~fMe!rQEq$DISO_+KnD~iB*SSy zX$SDXnh&R_cM>=FbEo%??!zP?UNL(1TW+Jc5xq-Wz?m&CwouknECB+sWRLq1<9vDh zs8mHrdBu$PkmvS75UWEHqrDcHtbL+L`^>QzZi(gCT)D3?$ybitGx3-@C?)W6v*~_g zpu|$g>Y5^F%9sIy%c!As2+}GUNUhPX9itYAzg65AFO8GG2=N}M8VO06{~c5If2e!! zpeEP#UDyr^QbZ|I0-_WV5RqPjAfTWiqM)=05m6u_Ae|&4NRdFKBP{~bq_@xmQiAl} z5~TMcCA5S9=f$<#Z|{BPTkFi6ne+XXVPJ-N-#q2Mulp)d+p_3u!Pkm(ZTE}jv@7L|xAslDB2mc7R3D=F&L??WRy~9(w zlDoBp+`r-|qE4&!;$RAh1X{JuBx+9L2~GnhuM0ooN@m=YrmAx2j<-L}IM3ESB?oNo zju&k)#1ZgRi19wnw*f!fJUs*Ca<#bOF4wr!UciB9*qN!d468V+FzTuH{7DVs($hj} zVFvmv`^_IlEc?_9?Xdduq5Kv{A~SOk=Xqa+Ozy3BuW62z>h|q zaLA?|^k_n&e|n25f*`5Q)0KYny?@W4NJ0Zwq?6Vf!;iiHF# zQd|KODUsZ&nF8CBanybYlAm~>Nn-_0g}ASgfd-S!cz)%Vh<6FWUBLr7hg{wwz7E$m z_;|#92BJGuhvRJMK5=fWaugEtIb4kvy3>)Ckk<(ENLQh%vhui0Wb|h})jwoD->`6f zB}dv2U9@-L30B&F9=nLqoQ-#M2cE`bdw$W!L&O6)<)O`uD4R3^#G_lu7_Ju>mkoTRR3Y2c@3ZCaM} z(8YV?tD7S9u6I+0Nl`KowW`;Fji%q?x8+-QarLqQEw%tMYHx)U=d>yro*TWArXx(B zYg*wv^l`_^bKreLAXzd=%NocwW&^LSv}ESy8{EB7ip%xW%C!lS(fv#lRXNMIvYFvF zJ#-`H0-iK$c;NBDaR;CyH96mKrRMt;#)gL{V;!DW?*lvRA*XWUzk?&kya>!s3M@Bp zBP~BOKe4Vpo@nHKaAkrtr}nZ%XE}WL+}*&l60hpK*Jwm>lsbd8xk*NTzzq+rL+;b$ z)brf5q3(PvQPTtxA0ja8b<4ul_;>$1Poqu1(+Kx}$J6K(U*$KzoXOCZWBE?0KNEtq z)B|e|%@){QDXiWcw6GaX*f|wT9W}h6U_iUQ{n&UC$RZQB}Zf!KnL>hkWXmjub=d(rUN7J5!^td7Q;rbazAJG>9$R5;vvoTS#X;k8Zu z?Ex#y17?;zTDDzAb;9R=m$uh#@iOvNcHn4+H1^G&e5_QeJ*{kz#+sY1u=cel+XKzx zOu9c{z<-jX*&0W8LPYjyL`3M@;`nqev3 z<>p#EMLX8z!fbbcZ9{hl!Dz9vxys=>QI|MPkYm!V8&TzMWBwRWRQ3;1Grr0yCKA8ip}jWyyk8ZjWAwGL6nQ6Xf+-EqbND zG(p!PTF=H85yh0VA+L|q+BRTHBcA= zk%#O0-5Td(W!DA8jtTn3+ji<{`YAcrTU?v#(}CqZ7PD*@|6RwJ-Z0rd8diKun^c22 zoQXA{rMb_Z5&U4fGWVw;Df)D|;fJT^yW^*wO1VP+%iI>Yn-heG%h^z+QE!bv(#l+xNtib)NNJ zaof91i(JYiy81fiX91>LL(YU1x$nw-0b75#c3(YQ#hy#{f>wYt-uwyTTvxL7SMOo( zDUU9U1hND2tCbSFv$Z!HhqT{{Yp0{;A8qI;US8GRQ5_B42O(AvFKh{*%>S zCzh!K&THhGiHHhMF3oSePKN@h|!as(rZ@9;qH3la*#H+aPSqK`}ui# zwnG-)!Cdu;*@NA})s&x?IWZFt9e%KRScD!=Wc)Wz8L=oKH?i4zVeV^A0{A1$XCJyx z_fGZYN~h>ZE8odS9|^UK0e$JFHb|V;wwDqkoLdi5%g+;T|Dc0=6~LIpavu~LdGUCP z!yP|SV;vDN%(D-z1P6!^vm!n#{s7?WqYcRRMEHDScSzg{WDGFgam$3UEqTIM~!tXffKA4u}4#Zk!P` zrZ%NoM&MwKjOY<3dX8!p zhEJ{0sg|CP`5nmWtMcWcYP6_Vhup!rQR}kL@rxZ=x+MmEuF|WsvcF~(gi$X;Bz+88^uxZ-Rb#;&OU+|jV{(>zpu&a`Mw~=^5?kp1+NSYA6JW_vs-LVUIHYVQ>%=7%XW zhEb3VQq(}MD-W>-BqX`9j;x6V|1e{UtCm`Yw> z+;QHC-;=n;Omh{Oi|EBcDjx{QL%Ftv;?_0u5Qo>B5Knd-q;iDh9q^^5?d41}1NJf+7 zY39V3Bg(X}zN07KFo`j3Z~>`124k+pN9gnQ^$?!v#r7Mc_7L$w9(kW~DH zz%WYpVEwHhYRZJ(zSKu?Zxx#ppERR+6bQ?Qyt%yOyxR+E04DO-%!bR&R-?Op8^_#O!J#hsH*OW0^JGF;EWQetp>Bt7Xm@bPxV$*J0BPp_1(AZRQvubO8(psK$^rzo%iF3j}JcTRv-+RN{wPz-Z}_w~m}QfTp;+ zc!A^}(SHEnRIgY`027ZP`$^qja4h0>rt|-dt zm_NNQ2OnQ)|0dQ%qfCk?jfpEmqB*R*J;h<0d)!0|)Bi-dvx zc8~bJS@=9JQcT*1w*!gT2q_04lkC}O%|}BKF}ba?sga*0tp+0y{7{M~Y)D_a{;*Dv zZ-d-bVienyV>~=!wP;{k>(qY&WX~> z$<90b?^Bwig#c$!Ik-U+(YkRQLC2sCSnU;-6E^Jc=C_u0%KM6<9dyTU?y`l z$bxt9aRqz(-X5-I-OAobdFMB;djm3oVZi0SrJb?`m`yK zDeySN_A`wW@>XHReDCjPP0T*AMG2cV1vo4p+K4 zj>_*?2ujBghO81EF0wYH7|=?#7RS4iyKWssE$3YCI$gtx^SCW@u*U6HTLQ${&iT61!fpl3+dWeze6eNVT^Zitgd!$UvQc3Hkfq+6}<(>Q(I zEzYAeeZ$=q=gr;MGpvl*1R=k+mg~T~SsSw(CW5g~`9>Z*6t*{D<9lq4a3V`Nt45Q$ zm~x2@?KUHeS;{Ng{~_$QivE0Gi*^*T7=#_&2e)H2FcZWKh!eR%x~-{!@bz~Wwn)G~ z2p0Rj^4uVrG1@6UtM-it1a|=1R3uVIs`oPpL6Q)BWLL_F;Ki2BBodS5e@wZ;{ZyFw zS|xqPGrKRmm}nfsG7-+v8t#ZM36Hlu7i8#q{Fw*Lux7bxPU}2DoD;0}Hvv>u!Z})$ zRsID0ElxhHMR#PvLq(9=b3e05Rb9ZgW?eXqa8(M^JK81*rkwXioL&ovnlbbodh{st zD=vwh-lx3g**X7H_b~!NJRZdvjz0|Yg#!F?->qBsr-pMoS&Zj~-3Gnad4F~fV3o$U zt0Tg>E{aGO@CPqk6j{qi+bU3_xqA&%oG%`nNo|FY1MYJZv51WTz*G8+_MyhG8QBYR zAbcKT+{=ykj1!GhGUh8RuvOhjT}1U&XM*-gOXSi*I32D;y!r=g`!^o+7jNq4dQ*7c z8i0EI6d+5UufF$c6!|XOX(?cc3GmVgZNr%DqP-fRCNU5o5cH+G0#FiNJm;l#+S~yI zKmz!0y)EKZHTZsq6F#HhaJ6UW(r_o#}L;Wks|GvWa7RbQQkO zv?l1oC?eGS$Eai1GBf z8XA4sSKa&_K8mN@M>H1&SHJ0cViIxMIkZ=^{G+y)X+9K4^-Bv2VURrgsO+WV5ub$x z?Y;EH%g;19KSlV3swsDiU|lTVqjglRlj)B0HzbA6-M*XV9D^<=gwv8QaK;0KNFbEw zYokG#P><(ePyevc(2a6n5d_zsYtp85c>+6YOiG8^hS)_>W9+V!zf@k~gxrY&l32gf zfDC3MyZGaoG!8Z2*#@r%D$s2^V{nh{Z`wBXCgj-Bf|1doHq7Ym$Ep?Z5BN|)*U6|C znLeXs0N%YnQenxM77qL)OEq?1ph5q1+)L4C6+yFKFFiPBGvxTrjpt217ouK5`c3Dv zitU7or4O_F`g6Y)h#Z)=&2|8HWwZc@Z29&jx2QmoHczYZQS4rnQhQ;0g^=+TY9j#m zZfgdo!~8$z4BK0$5UN}bn#^2rl(SC&N%$t`NuB%zB@c306`^BoRTam*N6u2%bu@w? zmmgP5ZpEIVSej;p%kCadtn55V#A0RbNUP)m)p9I(`bxn%<-(-FFLFz4ZlYO9!=zXr zaH&qiAq(SZNxAW_ql2~TflCvk7}LRKT<^|TaRHyMlJ%8rzum%aL(}4tAj<0TieKoc zA!^b}?H?VBO=U!+n|+f9&$<~VhAlJ94F?YsxW9zzL0A^P$e%P?zVUK(VaU0Qj=B;7 z2-g$waz-6?Hm! z4@W-K|3=E4^6-i%{KJq@WBhYb1t+Y;_9zsyPg+@M*23n#m|lN`^nIpwC(Wt9kl{ED zaYv9RUmaIvc{RTO>3{)v>5lPro5-`9pk!9T4p{3Vo6nn%Z+;sKB{Kg|qh(y(uBoFA z1v&!3yP3JAUkS}4PW>DfG~^&KhU|RsTlqXKea=6HMOXPJMnQ2jVPiS5arYNvAe(5B zI!?=GqFxs^gWB-D?tVafC35*&Qh8!P?%N_u+q%DkFay8N;&q>!@CHRH`q5#)4 zW-^}YNExSDDYV+(d{lfZ@BW*T*GjfKt1{o_7m4ZNvVab{ZHZ==Yp#QNZ@7JbIhStU zEm$y@#o+9v22zXm^JxHbwf*mqYtb3U?)m`d21_=B3M{ec)#ShyD=+~`z^dz9)CQ2& z`NhseZ|*hHBw!Ey!me7X_4U?DU0~Qs_TRUHTeD*66foh;?RaY@nDDk72nebxdAAiC zVzx8!;%l$3yCzasz7HhleF#__x(hyyKPaa_Uot3FE)3O9XI+H!1BlDps`DzS|EX*^ zWLotGsB|PKEj3tSMn=zS?tb5TxN0tZD+8?3#c!?e;6Hiw7yl_5!~{n}z}n=ejo$Ir z^V)8C>K`{Ra=I@R)EU6Tzlop;Q z8?_CYLx1x4e660w=W?g?dj4upEDM|C91<==r?4BS#ce?tHJ&tV!>9{FHvl zKapDWSWtYj#_yp-&+wo%{f13tK}5C1kCFSCZC;4mhJ~KSH8abEr@LO>iV!=SiA;a|!Jhr@T;eWWg4-S~lh2!@_;jFtt+}D1 z;^0~akNA-asi!^;C)s? z1g`C12aUh5^myoRqG!EABRLqM*H&cS>VTAM?QVeCud!nfy}7yVf|XP^+g)klNW2H9 zmP%}`SS6&!+*M9rOX9W0NM`w;y>C1B(r2twMz2-xDI$4`;Vp7cHG zqa4mgG(m28gjG^7OEudBo+b4%q`~ms z{!%)$@Inhz1NjoPlLN|{G9I!cTwJOMytdjgKN{~rd02wYkq$_?N!bRy&#jx*yuecvo(u%~OYD%G1^XJ(P2k1Bv+qcV zLn(U&=a01(*FCAoMRoT7A^G}){^-P?_x!_kurqv)rX$~rg$0v(PApKK%Hg#3(%t#` z6%%%NxO}A%)14=Pr}LwvFa(w^Uj1 zHGUv<;`;+y0}V?zbfINSBsR>>z7huxP7KV&>3o=#08>9<`~YcoXOZ}dY{1d3lX8Q( z$b)N_2Tpao!~Fye<^5z(u)O_1!aRn9g0$_S#G6)IRe5YjTqUM%?`>yKz>X+4nmEH5F_E+yk>E!$!!%d?U2+bF z7-?JTQ@ND4=IVyd-hQ~=I&SK6fP)pxvp%$xIbKPfa2zT#Y5}JqN>|WJeNm7+nqRv% z-)CCf5BEjNkw=gI)m#^_6x>7 zai0%|RQn4d33vlldIqY0MqTD-ok=~gJ3y)yWQEIHVV(M^LhAckn)J8x{efY=%{>4J zU&@EJ%sq}{!imtDYbJU5Jgxy`%ezx@EP^{vr@|lK?THl4dKDOneKvD1<6@R=S6N{3 zLige59Og)+S!=+#zj}ICAEMriFDW-!5{ZqTOmgch`6L!0b113)4J@mSwWuDMII*4@ zzY>1kX`y$?&*e_7V(mhAana;xBmyvDn;UX~j<_BZSx`=Z5NA)HV=X+fK zAq=YC>WztB54%%A?@qkP2TO0*6v%%LKhm5SJ;&tvH4Po@zb+y!KW#{TYcj~!tPY~7 zz1x3UT~p~w%-V&u%)c2>q)}rqo|T!O=;CMm(RjZE;~zAK4itR)%5F{su4t=6Qf3vwx2d zfO%xc%9&&(Pwbz$Vfa3%RLXX|a*T#~N0PFdsO#LV=g{dFbX#Kj5N2-HQ8xmKBr$kn?KPL5TZ%W zOUVh)LI(+4JCeu8;J$FlwCv06&{Xo;l^R{9qA#bJ~{XFT2#B3t{fM;LV*2uczm3yt|@$>X^vQ!}pY^t4lBTALs!Zl8jjMEll2Gj#4^DD&EEA8RM=Yy9*+1}6I;z4`UQ@>FJv z2ZCVdogQ&LZqDhn_FIbcd6S>OP8OG11Le1b4QJc#rBP8Qk<$-(93G_Us>X6{q{vC> zE~WF&SN2fre~4br$$e?@v2N^y#ThY{d&FZJEMFjFV`y4-@?A|~rgXa73vrhT8!hP4 z`q229?BVd8MBU|w;Gp~R#XnQ7Lp%f26e+@8db7OM3udAlP{AaQUBHrELfnU@Ve_=A zY~7{(e^4$WPapH+-go3&>hQow!@dP^$z3Ai!jox!jAsu2=pqlcFz2nO}B)%~)Q~UIC0mZJ{u#94X`Q0v)-yRj#zVBq{CQ zOY_R`u%{ipy_ha-W#BQS%L}*L%{az0=8|(Y;OR>f5j(z0j!AiKSk@ z?4^jn(7_nBW{zgGa+^9fr`ZC~{ifvPPb8PlInsH*rsWGhrKw1uSByXJH2?U<>G`Ud z%}gNit6P3gzEcFfp2=ACE>x_TPmD%-VcXiAXYL^o8Se`0@mFHDWk-17YkFBXeb*h$ z(?>H;wtm&#n;&o`x>eaR)vBEPhq&{a$A3{j4{{409$5y@PfR#fT*Ab&8~^L^{EvkL z7@p5@)b_xKC%%v6U0$`Iy)yi?IXSVBwaPP3-*oG0SK!iJgWc z=9#CPSb6#GUeI-~;bl|Byt~#e?y>aTTW4SX)&k3qi=6olJ0g)!?_gRj7j)jKLO6v%ktWBd<*W74!lBV14~qx3`mqqq11Y%-Kx1ENw8W$= zj7FUb4ZqFHeCNbDuRrk-qVdJuZ?%ot!yV}f&=9VD9FD4tt?(Gf@w$yyUG~XfhOcU( zP9A7*o!KWewe)SFV!<(@BaDze>r3qIZDky2c7OY|twq>69Y^bn7=m7{2NJWnh5}2xapnG^co=Q*v{M*&p3+HU&EG=v!?qjO^ zn)K7A6?~40T=}z)eEZpR=9daLE~>KsIy0i>5O(pF;P_QWji4`nbjj#=b%=%5NV&f3 zBT)-hj}u5+W@39Cbta^zj+JwBgLx?)1n}tUt!b*=a$d z%2P7Fa;kkOJ(nw+x699Tt~?U&KdrBzM~v=y!S^ZUnCKCL+tFgnwIXKgTVGkZ#M$#v z=xiC?o174+`!&h^9if~LF-g_Zy)%uC)CKl!-?h{bc7c+~89*+NXPVU4Hwl!kzs$D6 zWTxaoOLImzK;_aW+RMlO#0Tkw7m%77Mb`m#sh~xug=jDml|OD)>11y?GWA`sW@Vct6)`X&cZ-H&a!k)yOssU7pydGk`AX<@5$kiWjrl$fch3DA)<&@=DkZUoB)Lp)3< zIqDwbz<-g^jSrJFZcT1VvO-u(Wn=356<$wj)y4O z&H7~9H~D3g1JX=Q6~qU4tJ9Q+jck%(2s|@&0T9UBDK8ZVy_i+aGfN5PQ@KYEuX;c^ zZ_B=Ysp92^886$nY&dHU{3hqC4qXuEM{@Bkt9xFOR`gQJn_OLexT)M_4#&!zs?K&} zh1vE}GI{IB`?HhyE^JOf+Foc^LbQU<@ehCDKy!Ov!>iykzB86}Z7QPjd1Kb$WbAsW z7`}_Yh}i}<)s7;XwUjhToU4oOMOAn_!3A+m$r#);CPC>HNF{(aK3$MuODd#QR-PnV zA}IYdFCacjQ&LwZw4af%T^Y;dS27!tA+EZPT*tMsUTlK1bj1#4}xz-i-Vn8AO6a{O1D7Y|K z=D-^q=I|bGfG!KnAO=qYL{QcbBPXrv*d;pY{NXT*^tB6*HfXnI^6ZqMeR3S$W7DT3 zS*5TujU!Zo&$oOl`gn5JVqkk&Z+_>%p7X<42_N~>W(O*BS~% zP+RL{ooCeSxZvrFTwO3~0Q4TLD%QN(dN1bg5g!((39%EL ztapQ4CGuDvY>2h1n~T?=_&0*oJRSSj`Xqu!mWfPR{@B4G=bU1@`#)|3UzZ_4GnGg; zaHLdeu+-#?IXz?m8hi0Og9pB=%Y|V_T2li!&2{7CMS&ZQ=P%r7{HVht&D1CUoTWR` zmDY6UslOtP~}c0_#Y zX#Fj~hAl0~6#)(AWHD$zxQpk4u8ykgr#pXPecPY-=0XbreFrV*^6Jt=sdIWY zKGZ!cC}6G?B%1@0s*Is>O`hLaU_Vq+KjzAuj0SO%7DZhActQq}rIEm5pP>F&xftWM z589DsdxXu1=fur8{eF&~oc3HX-wGCQr`eyg4O2`4TK0PN&g<{ne2N2J^l13$!qh+t z>PP&AReFyw2B4nlUK?#NCMK5HA!e;csatg^PK9zHPg@p75DD1k$H@U+*(9eRKt$cD zi-|4{lE}Zc5Qk#6x)=U9l!@W|!#`D={;pqVP9M9#=Lx+$_T#0j=!padF*;n<%*4x< ziZ+xqAn{!{Uo{z=<81S7tUI;eW?D@!4-}VJ%YX-Y!P-v7jK|zW`fA?jY?&M$_qkz&mRW5qjrd>fdJxb9@l!@>RJ>z}IFe&5`v>&IB|Xc0EEHzU%_TQfrF z+aU^JOalD!ayLq^5mt=`c~Qi)7bd$erH9$D4)8bTw1_!g=joPCzUBR`AiE$@+)R{T z9S?VHspHpFaY3v72gS0L?mr5 zuCnXv=4hQyCxP=naOv1)ithKwiTu`j)!b)xo||)*tvMWrD=E)9*xljDLvtHYdJj^e z7%V&gaqE@*dmvCfwJ1o}bdjTO#NL5_3UaCWtEb=fH-F*5Tj@?vMuCc@9w&T8Q=`tX ziF9|THtf6o-E#_JD<=~(&&sFq3tOoScMQ`Pmh&PX1md z?C@YcugnK_)Vv)+T&$QJkCAB8qX>b*kOzIjJ0gpgo&piF(g1 zUBtZGi~rhR-Huj51T*`U0p-g@O$|((rp8}=?qao_8CqqfGjSI#C2DcDwtlXjB*9xV$uCf7G@nsGVXi%*t@#E+8kZ)R2Bn|)wEFJPr8(BK0QXo-o|tlz4} zzG$NOp1e~f5@g>!qkp>$!xsn59LeyK#$sDJnV(RK+6=e5CJlE90)B2uLq=?qW;KNV zQebIF`YLZl1?2Zx_^sY8Q)7?*3rCyAMK6S^YlXiD^!x}Ps%GVT{`ZKdb@qvxmzBB0 zTzVMAP*~-SH7`ar2(cwL(N9oqp|mJu>xqLkz7{`7_(KL@XX`ZMqIfR`sNG_c#JB1% z)6}xd*AJq)u+n}KdFp;a(7Ez+VJ_1qa(!VbZMD(76PNp9dm0p8V+eskjNQNZRVe-B zqu<&`dFr0voy;~atcTS-87!JrO|vtd^ma|;P+K6#J&0A~#&XHQ5R@JHU?nItDU11V zadX#t-PZcEEoeZEKYyn#?Fy5Z-N$v6^RBWdaA)#!$Z{JS<1I|qJ2H15vboNnx4(FT zUqAuYxHWu^B?_U$xLcnR)JwW$hj6RH3nAw8XOn{Bp?H~UiC)f@vc$##xrYPPH0NII zqDj%>VMThZ+v%OOrl0^VgXCTRdu$z-E~}aXlyNxm-5FV08Cv%<_CkYabZ#2gFjcUU zCIgi|l+Faduu(2*8&_E<)b*2tV>ibwqGDe*FBlhM04+@BxNP| zy!rC!&sXKwb(!V_eM$nxN;KTApP{mHMGil`8H!#DM*hd&jL7v1S!p2MyaQ>Bqg zkPTXBPMY3ZiuaeQkGy(?Pgtkxj~tDcMhVZ&>GNMZQP2}OR*O=HF<37r4^26uqRp5{ zi-Fni+sl%A(4`cXu!(55?4d&rGLWB@oPa!Dp8 z+jFMm1wD8|j*&u}A9NR@R1EN8i_}&sJA159s>+Up5@)4iWV8$d#o=xLVW&Qm#0iNF zwhrC6ihp*g=%lwguTG2v8^DI$EfOYN42*HzIrHddta7n4&|*}x1xTET2U^RIaM)t; zoaTM|oWYlxT*UT>ogy2L<<48@7NMZstQq}Y2N-pi@rd+~c?-~*y7^x5-k)(vzi?TC0Z z7H;iB#cNn09G`i=Oy)6m)Egk@rL7Rs9hU!N;i_np%2Ma2fF#}b|t1*9`sB@Ce+vI0d#gs*lP9`qeFaNl8YoRi0lzpyEH)u``^S-L_ks7V; z8P%PgzrK(K?y*C}6c2`%`B(4jy}0egm~~pK^u`G#3kbvg;7mA*{d|*wwVZ@3c(Z7{ z)xWXS?Ir)R`>byQ)_G7~14dNbYEsvsPJ_B6UL&jn5$(xXy240qm^#Q>iyI^Ds49MN zvF%sNsV}=i$Hm`=y`5OL?>l}5_Wil}yM<#MYH`VjNlTOo+EdEdjC{4#l>5L*jBRRB zTupp|a*pRTo~AIS&efqJKr+PbXDCXDjx-{ z?)Vmn5tyqjp00gvlBKm9T&BW0k(6QjZfq=9)afT4i)FbE9Sa<6G)yWEh9dBJ>Tzt& z{`s$fVnktMgF_MnTh2FCJR>1Il_DSx1$t{7Isb7SUGY9DDBy;KGc5){ki7W+0y_Ma z`S8dNER|6o=dN{tNs;N$CqG|>oC18Zjoz5^F9zGqw=4+-jdd%>8S-gF=JCPR2j;Y}ll1{ch0* zeLrzhk2jj@gR(P9WNuSk*I2>!#N8vsmh{~4r|wQOezxkZknLR!3gVpidyoY1vfs8h z+HVZTj?x9<%p@D-E0nF9AWrovD0NS2+e%#TXNbp=><#yb|I^NLl=Zut-}TA}MV?_c znDrT`Kg`-y)cSV!pmZ^`_l^0IKq}TwxlERFes@YUPcv5>=0nxGe^G&rH0hU~79?)} z$d>FnHp2#=Inh z%KM>T=(Cez{egGSemM_KQd`yQV3%Mf#j?edgCHGr3iT!^JtnaNw)5P}F)#6k69dt` zIUTaSgP%t?=ULRUP3BDamD?Hj(uHhh7{*oj{=zq%!24jC33ufj;2UbF_s?=zCl`gChb07g8Y&YrAI)Zw)`a&;^@=`dplz#wiDZ;IQ6A1S{1{E>XS1SbS?^U z|LKIVcq@AO*JG1t`{+2{{;`6Za`Ee8@9e*S2Qjnn_3F_bgWdYtrk>PMdgyrXoI@P$ z-AT+{wg%6pwj)Z5`UA!7{TpSaG_!A~NBl#2lu`#B;W?b<&mX|On_ zzaa^h+9I5*E1jE<9cAxr50l0@Ng&fXk=F1{eLoB}O@e*#=^fc~6H`Zy+4B{hY&7Do z7oK>Z&MaQ^4yaLM)E>-f*LL?GI@oih3H)}jw|H%B%P|0q);a916Wv9p8v6-U{B2!& z60yWtbVgG*HYN!bjQ@RX2LQ*m{x;ZD*92Z%&=+Xd`7EzfmF|L;=)v9!vLzX;8!H=5G!FabV2`Q`)JsnGExKiu9UM~|jb#!)oU_|yy_DV`RCtZRx9S>$Y%ID3 z!22KJ%jr$pCUOdmd3_@$z4gv#rL59H&>VH*1F8IUX4oqQLr+v7&c?i(pReBDp+32z zeo?*4z^?65uVx{KORKW9Q>;CmJ1KfpV&hm!4wg^sBxhstkP%HeA;DP*0&j)P)<$w3 z>1G2#`y^UBg2r8M8b@bj?s2%_wADQ<&ef`P3&z?~c}E$e|Lz4aTtIBc2-DHrsu;8g zl=8X$brt!(NIe~d*co@|P}&X`)=v!&6vvfPmp@iV86PMWi>vJ4`}3IdI~AgW56J(P z+jZG%C(Y;+eWNqnZf*=F4bUhM3C77$z$m@~7{&KljF!&G&|vWyP(o@B;A1brW}nBW zEI*l~uM1{h4ZK+n65UZ5j`P8>)UWQ@`}+%cAS@8u4gt|H)T$pFVxX>oc-X zsj{>D*rF1kK%=`?r4oF)z!4A!R_AA3fwrMXsQ6o&i7O>XtPdWPi1EU{2CFT_+>z#S zu7@TJq5^K%_srV4b@#q<(U7#9oQ3r=)h->=;Pnl;5@k}r=f~%B<-|XEzeO@8Z&I?tl0W;Q|Gh(RnUz#Odb=!%JzQ+!o>&-KH z4wO}``f~uzaez`%6|~o%%)QdHHO+UbHd+A@l$IbtQn13uDXcM*^f(Qb_6c$Z+iQs( z6acddkq1L5Ec(^TEj);eMSe`8h87YMtlqM(-k!g$!r?u9V$l8896QOEH+9Yb)@bQ_ zFZu|M8Mn_yc!s#mf4S@5Z$2oI0Cn(F62Fsc#%<_uZ&#jV)@7N{@b3 zlG#j;~bdY8Lsf;5K+wDlj+rtt@hJt;N2_V{yy~+SjFr8 zsyM(24lTK3+TY`FBh1aTf17gt*AM;x6=Fyiz(O-zH3*IErIkNz=yu)ugc88^Ub;p( zr@!96&Eoe>z10Feh8DFTx)$)ZS2_C{BO+fACuxeVVT{bnUq>1LGDvd-@u)?N8Zy#?#};)ugKRFnvU#{33v+ zNBhxck+PgxkUR&vW#m-O7-TMg{6dhOyT?JjsZ zw4W3RuVawQ8{S_b&XDM5VC5&_@c5*XrNMm5zCM9S3GE=^ZSWgN8LTUkJ~N+NZV;w3zhB{1;|Nh{`|iDlv^FE+;Uz@OFOu2*mScY<&+k_Q`fu-`IX;S$30!nZKpcv5NAR?dPeOjI~9>H{}*j< z9u4LH_m8(I%AN{YhE!T)QrQ_rrBWo7$}%y@zVFPE2!&CJk+o7uMD}Hvk!7ZAL$u-{<}Qo$vkI{^U5vxvq1)p0DTg@q8>=@6qOl7+lxA3`Ks^ zL2=KfKufC(5bUxcTKp+jH`gTyEWo@S@6g^P@S<5s;{BFL#qW2vd=tEJ{$V_@^@UP< z!oWxMn(qHQ0bo?7%VXdd0iZf0`Ufijz$ma+C5OQKI@a0Os*yMMuOOENc z81cxr@3iimm2?SDIv9(a24>*YU))w`TSwsd*Y1L;u)7a&xdu3hby|cz#+@qIjDZX>A{n9|# z!4s48CpRjI&5FudbA$GVdV>>0bHrIeTN#2Rk>#FfMk#k;HUm3#dY=EUPdXTv3db>G zs(*9#6S3(b<%}pF&;gc|ajHVYi~2nc@`9pcD$3W=eLa<8bdQHM@3U5eSGDqHGL=D|H)!GwLt^BPgRfG0@8u!V;tIuMC z6?&aq>(YvOy`&BI;?8+@s9DU?V=T#Wj~-I~>k5Y`i~Hi^Pez@3DAn z3FOQRhwW)-Z1lH>1gn14t-h8~b;3(osN#8_yYwf|P$zWVxL&-lZw(F&${^F*5 z!2h4PDSN~-sf4n^>WhPZu7q8^TgLmiz3d=!@&ODS;E9C{_Lj5#L>I$n8oz1=57M3G zzZaoRk!$ou`yrPgb%EL2GcwznnmYT1fn8R#FSsP`5_5;&yTL){u|c4zSmtqx-=#w3 z0tkC`{0TRxRwPNgIWzuXmIiTlPNC`e{zXr}_@+}wG^vOQ zlG=Y^)`0#8%o?IV_`V<4k2t<$lm&f%;?NOVdi}dev^=%=z8h%yZHD++SCRgq=h5PfWkkLJUVfeu;EIa)zu)?ATP$2gT z*E8s;u)kHwg&vc)n+gs3O>ISS+s2Mh?}F~IJeYe?&R(Pr*5y$?*0bPz&0Y+;8=m^m z>#WV8d?2bq{ZCW{{t4SM7?w>^J*3)@>gkc-jr6G5zYQHFbk%SmEMnV5b?I|*hT9}G&jG7xsi7x@6(19O zxUxixo4t1lr|^)T)sV5Afi}syCyBnXbGGHhg)o;KkY>=7CJVnRG)UCHz`ejq)JQbWOMLqDO=@)>%T({T3$`;6 z@`sk6JKv0xt?a*mwNVCP_Kd_c9yT< zQt+pTQL7wYqyZlcdIfBx^SS-<(R)L`d^xI4^fuEpcg`x6kDON9-tSXQvp(9k0sP(Z zZt4N?!w;$%r(09>=c`nLFu@q_&*aEy{pM1P_^t42=u9=q-GCd6ZP-n1-QLagw#!#N z<50TLAe_vSx^w)@BZD5EenD}|GVkJVSyITIP^KVc4~gyGQi)z2eDO1!8(hX)Y$cXw zb?ue%32QnSr+#NXVRC#p%FgdZ!8c>J$YFEU)5A-FdrB)5eolHR1e?!!Wt(}!TZdZd z>G*F{DXp+jTpN=j?%&|)1#7G(?Hp2WV|#2PmBuI@Ul~DBhJTe2Vv>rS47MehFD`{a z!DTmiqQ%4H({7wsv=05;Ay@9gYgmbgo48w->F~U?vM62m6h%-cSTQE4eiY zu@Zt;kv{I9cH#lg>!VoImZ#Dgm7c33d!KG9t#7TVO@S*S1_MP&7eOUbh53q!UMe$F zorUYG4e2jSy`-e|qweFbqhOzj{k*j?cX?u-q#Lm&CY+W=&+6{u z04vm=tess9a97SR_(jUb9RP@e-bhd5UhXNYvvyySL_N+r)vk#%pbXzw>c_YjR(}f3KDA6f)q#z|h%N>IvLrS6 zV|BxRt;zdRM2%N}5nH&GX!ZWA66ZI518+)?be+$aHV!Fmx4&UuvvfkvnEX0;*f(6) z5S`6mzis{bzzwh>8`UUBxu3Pn3Ea8rz#+pDQ%s#9cjl{C3KwJ8NNc{|&!;D$LiJyv zth5r=k#x*Q%)L(^QKy8)+za{6+;&+!8m6CH!Kph-*g3$PvBnn~oE+U+-E$Lm|6SFQ z+M%WXTz zZo#7bOYb}f8G3NR)}#1h>+I-i#bRxO_KCPA!|9tu+?(9OeHooo}a`4P} z+&=l?8!dB{n^@lOC|E0g6ES;^$Y_@q;EmT;qIs99=Lb=uKL+OTIV*_YFsG-!)RxM` zwM+6BH~1wj$MZGuX6Ea?q}IdI(7U6o!WE2Wf7&n)UA_9=2m{(&h`M9X#4r&nHs_U$ z?v8R&JX^lxo5xf15m57*@x|5_3uJ&Jo0gN(Eq}n|t9QOMzM$4))|v?C+ai%IiFAo~ z-cyFmO`m)2UvraTM+hxZFFn49VX$#_ll0)^fiNX`w)B#UT_n1C65GF*jh5{la_71JaAoU01L}@R8yE zrP@_FzgcTO^iKwPTK_YhAfNy@yF)sTOG5*`KelqDUl0Q0$m29S=EjXTRfG?IvtKKl z@O3IwW@}9Pi@LVbA^hy+;h%`PLH(~-#Qdw=p;>!UvCWf;KmQ^fK4KskUOk^#pz100 zcM*e&>07=kd;s(PnXt zy@dE-;4Tk(&K(=zDanA?RA)s(@flDUb;{(ruUgvmbR9y^{!B8^{;_Yu5~rMzONbl= z{vklJ@ZpU>T;O~2;inH859Ub@l5Yr{P5atheU#xYQT)zZemuPtU4-`Kcu}GsTr6wu zsPO-aa5qlzjjDbFvYC5>VP$HUbMs`i#bK*8ibFj@LF6-NG|s=iQunmps4{%K#}()x z7mfn)WpHF=bkoyw6O9JD9tb%^K`wxwh)&4sM|tD8^u;37M!s@P@k@gvJ3*sfbxVCt zz--_l^nsRQ_eCDXQlTYQs@WHA(jc_HR%Cb6EXTAmY9U(A)3#!SpGkX3)?HsY0rnR9 zm27>le8K!;U(m!D^kn5QocefLO$uwTyjAIpI+g*Zfl&B^Li3ishnCsn+gr-VH{5bD z{z(5zkw3Q(r{JrwY<2fS-Re+lYO=Mhy&~Gq6NZ5n7PJ+PcT$2Wb+oq|E3z*Y${*BC zLIhLvb4M+`-uPLSnz<(5z5{kQ&$3;8k!BkMr^RW+;KXlc&Q6qP-^r4@Fka;=HEzU@zySs9w8U3}+UTmf$x4ck7A)zkDOP@p5Bsrod+d`VKK#^Np=PyQ2noEC+*_MJvg_wrZ_$J@fYvRlG@QP&dJY0s-FF^N*beWCQ4c4mrE=4Q-d zsTERZ2tKsW|9&>JyKa7vEQ^>Z$n27Un5mcF3SIaum zbgy7-gMW9E8L*SDKw_%kL+`?@Hm8=kzowajv6FSnx}Vh~iR&O<@Z{9G4++x3 z+>>kGc>B4a#<}3|?CBK}%KrA9`@YGisbjLN9iLm%gL{nDb>+^k9Q&}~5TmH`JMwmFK|2w)p_-6&oeH(W5_4Ec+qGsWC&%)gWXCI`*>An9zF7EyBs zy$>=Z#>s@jER%4tMSc7AF{aF%rR5!QX+Z z#BY8$Dd^f+=8S*}gsgasrPs?^y}@b(2|GR-|KLZL#k>8O4I9?dx1p?6%(d=dDbLlA z?it1M(_1W1A&%^^S=>6}V;h|FvSd?wxu>?80NR}BXcw!eqBnv}zUf!Ze96~-sAGBu z6tobbpzzZ(e!0flK;O`>cxb&jlms>yxV?f7M!j8NGC!{xH)aN#2kv%Cx}Hs86il?r zsaz4N+;bsveYPHqDz_AkksvGtPiE{}8P7ZUJ_@V?51KSo>1&{MDm@{e%s9O%v05Jk z>5@=ytTxr-1`8esrF(mo6+|4W!!8!YPI&+=Csh_WUp8>#J#t zR5EMU9I;C@V=&tWK0OYUlZQalpn?l^iMybXUsLFB6FY0Q#7g*j)otpD)$2|D7Q={lwHSJRa2Ie-s%smZcO#NzS##G`E zF*=s8QorSUxtLM_Of^jYR0m@mN15}GYnF^7_(MU-E5}Dhoy(!??0A^V$|_Gf9shDL z8~8=h%92mts2R>{-kr|*4-_yKU;ODc70ta^c?x=kCCsl4W1+)JD(4&3{?FyX9R_hVC}5d z4*z}Oazo`toyqE2=enme-(Ss}hI&1npBpWebn4?J`IzlF*F}q>!B5QV^ax`FrOuqam)7noiZ%T~d=yX;&;{ifR982A+AwVKxNyHR#N(HyIXuaTKI z7wO9k&X!IxNj=(pQF7>~u$ELGzyOg`fRu|O7<;!WecEEV-QdvaCx*pJ5A)oyHUFm3 zt6cDZ$FQPOhhq~H0l7k31aD9e+8?X<&ScJ!Oim* zLn3<1BjOH$JyGCo+#&T>4YemyVL8WYyCn@lY3#9mALrSHKZ*f44KrK&BadD()NuQP^^Xq)7cy#RN1cXOSu`?J!SFGs zY0}jKb;&{1Q~ympIhus99|*z*Hy7sHv^vDd$Ik3ZYR}$mSS0AYUun^Kw6sn{ICq9# ze&AQ<9VhNL@O2XHBQyr!VY%{Q3tNF%WGDJH?hyJ1ze^nLJ?+V(%#Pl*FQb{Yid(E9 zxvfz3n{9Uj2!oUY@$IRHZYMMQL2$!Lr4JtNSPSgz^q{ z``~W$&apoZQN-uz(VxAH%+qu1S4LOfuBLxDTNUErlVF!S=fym;5gnF=SnS5`ja^xu ze1ohT?QgW3to@;#yMEv_9LUD-=6g+$nQL*u{%QXD%59YQ^2bQ58OB?0imXBIU39x^ z)(GFOe-1I1QS((lbp93WP+_<#Ft5*k0a9-J=ls9@Y0u9L{S9q;ArugI?xGMyMnmWH zfl=Xz+{oAna6Z6bUG%Eml*kgcaU&>seqKs=)Hv&~U3w?$1Sv*g2h?%gYW+ZD>RP9k zQ87mo_4&T7VzI=(^cmKO_C!Nnjz7BG0xPN!8>0j5f0!|7s*gB8^g^DRekn12N_Okv zzv(k>{C}y>*em1^BxJV5c*aQto-pSNqN=D#)d0KdO zBfI<&k*QB@yge$~R!ok3CU691s=(^?+X(EhXd}Dosi0ja>M~oF^=q*O_%Z+1mB^#` z(`bqp#@T>+k5&g-{qcAtVoocQ6W(0fEq)6NU`+k~m?p1zk z-Tb2SD%1;z2h8~{G^UN4o^xWKwAXnoks|UXxb>=wNFcs;^`njU2SL+b6nNCk@U@6D z0<`ucx8;6PKU!sJ1svQo&v9-pTnCCt_~?l?uS=Btf~?@??6uZxvE-7E+1>t_;O)%n z{;f{ecv-*qK3y9bm~WwFE)xl2t@pza>XPnNQ9fW2#tUWi!ha>ibfKgbohd4v*hTLZ zRaMxmJCLFigp7QoI=zLalnFG=>wY%yD`wNnko5Fy?60A0XMeWb3@(c@E0z6yMt7ut z6stYzW2fu*f=U#Oi|KIQBCx)TvS~lSvSWIh@0m&wIYPg|X3+lJKeJv%pxJYJq4SQE zIYe~PuU+T!Ex>CqvJilWu!BORY1#A0{483dux8E-+%%# z-D8Y~UQpeWI#zE^(r2eOU-nF-A#4gbvN_#}8jN;QO<6hNjs~XbGy)DVe(#JC^a3omc!+A_#MecugwN z?oO2L!>;BQZ84)S8N8foRO;v<`Ek?Ss8h4QKU)N4%73Fw3d%dU?511~=}yp2X~g?} zn>m>0OK{Cip=9|#GP9uW01tnuofq{!X65y4BoJ6!KGx7n_h!9c98`KEoe&r)%~a(B zU*<{7#?m;wYHmP2?AE!{24_Y|HC_@2VASnPA7Qz2)tFd2iiCKha#ZehYz`clTIqU8 zc0rU}-JsVwB}~8sc7PE|qPyF#6V6j2bkkX<_SO9!_$m0MZWye7(Ky6@yt<*v*9kMS z?0R#)f}J}~Nkhr$2nXR%e=S;7+r`G-3E|!ey}oziXWwO&da+AErxy#mO}>n5`nPlg zcTaZa62|q?bBWQZYB`K&MfjxrBxHCgG=9pLC~sHze5D>YetXl}eyzlMrzCHQKGK4R zEIHF^{YkFo2EWZrmb&^L^v?OOh_dvaOcG~>I?%zL+53px6GI*==#nmfZP{~aE3|3; zN@{UljM-l}5N&0L^{BuXW3^tOQ){2RD(0sE-+tNoYh7v=qTBdaByO-BAY1EE^l z_;-u#%%unm?Ukhy(0#;g4v-sqr6|-r8Pezfy7MNw5!|vJ%4M6LwQZ?=fFVhQ`8okn8 z$YPCW_nsP0Z+zOF+x}i+?a4*x4VixH1sPM-AKT7-RYb9cKj|`(Kypp+9>QS|b!LY9 z#h>4?)zDbfp*7*Uh@VyL_f$T81+W;VaAg4lqAs*TL#@eb6FkO8NfMxHP$1!2%w5s- zPdhIvg(_PrpBZ{8?j+$MgORX*^v3A`=*QT{OJI9s*gzxg`Ov1#=wbn}^*(j~G3W-p zvPB%J!;#FM3*9*j;CTHY4`%hO^G?QuCciriXD+|VD?V*F8fS|Ky|Vi@w3FrI{UVEE zxVF&Om78?r>+MlapJ(e;-}tFKyv|47*a}{==kcFa@^MmJ@WH~$(P$@NA>l$GTf(QI z>S{*o)8cZc5sytU3ZqZC-^Eeym0j;OE)~nI^4FQ}wG5xN6nL7d49#-vu?$*fHH+rie2ao*vm$-`NsyOVEdb<9l{|FSuIEUK?( z`^=#z!TOh(ySMJDNHW*a!hP_&qIo)?Gzn#jT!nyz91?Aj08Zgs(_9#79#S=%6#r_K zc64$dwYsBl9jqAQQf**(A_N!H5l4es89} z2R-Y*#i(Q|va|(JgYA3JT)LTse-f5iQ@Zd)*vYGD;Ks_pFt6rtR7{IDz8`3kHaf`n zNYcM%M);0~xr3-kh6E05esiofh&Ke`&BmnYGc)u)xL2|nbY_kHJa9i`3o|FG<4D8v zq<8bcc@W3E{fY>471xG>N#DH+!@=%XDgS^$xCyK!#*bjIQUDtN z$s?~fnu{|>5p2WHhD)oG-4AW?@goGhSL@u-Bg}a+Zkm4o9rL28 zs!)&SgDn^F9Tp%B`^;>uFy4YMdcs6TMG)cHIc=Tj5NQN!GA;|m#an)BjMj3@9!%|7 z>*p2|NgCs)v>}?dn&^0lZeqOHA>%AO_mik{8;kS;`=V~|vj{k-@sEve{Wo8KJ1rsv=5K$YM9!%qNEl_H?yorgD6(sbyHpR!p zf3IfKM8o-Cix3;!sj}tnEK3M}$l2zCXAx;+WSLyaeJ>Gps_C2Q95iV9Fztg>qJq!) zOXJlS>c{pp)EPj-Ha330{07x$n6>La)E;)Bmdq_P)%?SqIa}(ZyWYt8YV{z18t=7h z?A@X$>{w)4n`f2@ZFU)loSPlBwXdSZwLTz*iR*nwI$amaUf6)O1P$TyLk~9_vJOP4 z;Cx-G!MI_q)Bt@8$3S+l9Wcs2aF;1c>+a$i-<(-YIkAeO5Z)^@Y0}8unYI_`BWAi=glO&s*cYWio9uDhThQtsA9{ z1TwkB+8|BX-tm{&X%I(`@hN7;?}=~Se+|{kWJxpoPMmJ>_dZ+lt43a7#9&Ad9Z-j< zMC(iM;T&&zdrFtOO8_D5rhlv5xLjJE6RRO0e8a^?PEaB~qOh*Ls-jC?NwbsCxBsnV z#FFEiqIp;(bk03pp8o8SyIp+vR(Bif&3qzBW{nIzLbwyB(4a~ab9j&jV2@2_E`UK* zm)EZDHd#FwUuyLP@HTjLVq!n}l3 z6Y>d)9f4CtpDKLIY&qb5?Ko(o$vj~Qxz11|no=mPv0IntQ-2>|Y;Z}*G0ts+Tc3{A zDn$jy2k$Xb9lg#=0%hG*ubHygPCtX!Z~Xpe8UQxWcTu@fKH4Gb73BBDk*sfY%3G$9 zClT`R4|<58U#}hCEw0m-9843l22iZC;9XYvK7{S%|)ATEQ9Ah=i3q6l-0pk_CqHw2{ne_rOD0*ge|F;;DA;p+b)X zOb;VE)-(mh-}o}n*E{R~>@iTc!$WZaY=eC1Ru)OVbXJl*Z;-51=o#)BhYuZui3Vo3 zw-?zMhkS<5u@88myx8(;Q1D85)5aW2ecptcIoz0>CIJDE0WB2FZ>@RIB0Q|x5M5@p zxX{=VFMDQZ)T~pMz|5a2&79pTJoUC4fRVn9*sd&3i(uY*u9T8CMR}W%HM+f-6SFj3 za(iHQcdftLKadf}4g!Q{Z|P<2OMqfXh^Kf+*!GR)A(5~P+T$6-gz;EN{#0N$*4lHL4zX zZ8!I)gPO;n|GVzWLe}}(&Uod(Ir-1+@5F4-8CpgNxB@Y&Si`a}7WkC^$Yu^kDKtQb zSJ>?_+VIEQmE${8ws`F|;e9q*{Vv^*D*lZipbVd2f{sqwu4gZzMHRtd`|vKmg?_Y} z1%PM*3j%dHkA>lZQM0L65Y9`BN9 zFQ!DqoW(|kTF?Uf?MJMte!3gg>8h_46BSQ}Gr54oD1DNz7TOUe_gVoK!@jH_dwl{! z2;T;kWD4_!pqsyHXZ`L}sD9GaHmC-NCZ1iHfn-xY8gM!z{WDxDSK`j=1DAetw}Kf^ zTLp_7S@3S{C1c@}^3W)9&b8EUjyRK$EvGk!GXHQ}GlK?7LszsXK0)VY#g1q4^wTg= z-=c=zu;xen#}#VJ14?n3L0q{1V&fm~+dwF9gQ;LwSi88mIF9kKvtLTE+N% z<_`ySwuM!anEk^!F$#VUyn&h=vIJ<-^>>s{@1q!$?wt9Y!Ejwd3Iu|sDK(pu<6wo7+vTHdY zd8i@^{+se)4#Ls@Hyi{Z!>urXXNjH5{YwHHMFG5bVz-IM)LSd}X#%+;5V)+dsBa^x z?04-TqO&?&CoREHkN0`$orUe%k^w^sqji%cSjVL;9moNkIWyz5g3z)Q9^rj00nSZ5%t(DDL$>nAx>c%@E zIpi+r@s^n@fVtYnLFKj>bH;q2_BU!~&x;>>(YNUe4U`Qkg4SU3L;~pd<*v!wiLDbX zX-y#B=cE^<13{%GA?@XT>Y&(Q2E>5+&Tm3nT<%+G@JL|)2_~E*I6g(iwrG#Xw!}1C z8r%LMGk8cJErclJ9YM$7PC}|SnJ7i@<}*$6^dQqvA3arrHgyubue9}prYgq21CrAg z4@+{tH+gS1Wu#c3RF4)-$#=}E5W7bAb8sysP zXYNUbKiDj`K&S^@OFW5Rqmf#Gg^P22nT}V$(|rUC@L9kgZA z^J|;jME{Jde@+qryn@5I`7M1#@at?`bCG-*Wy||@&mqQ*tV-6S_Sa~xIYWm>Wax`! zdRHzTj8nTW##^+OTQLmU=y@#8m`!cmcwDo={|b8;{!n58=d!uj>XReBLg~6J(I8Hc z)<$!eU(!<2y*;jbXF3Jegyh@PG-z&pTYr^IPo zF!}T-sMgx#+^bnb=DH8Jn~RFII%qFbB&efeFSU?=gmT#+cvn*gEDK|lki)0QGe6=N zNR!%gN3IMd+Gm?Z%|=Pg1Ivs(co1aaU81&W0Ca)KPILELbH#g%ULV?d#lkMzEOXR( zO|-o9?!oGf&`;1@ZjIeTZEjdy(a6Q{$ud`3I@Bnnp826G$CSwY(B8^L83fl$EACW@ zy2t*-vY$$X!*f?{9G@;G;-UA@hV-e`^;bqrvuUS4SgZD)mB2Gxb)?8jwb>Lf1FXN+ z8iL0yeya4a;VbBuiR-UEULI3k_omD%(5guzA2j(nAi}Y|((N02pPMfRuFEr)Yby6A zCH%wO5O(fuw#4WWg>R0B@qxtMHg4FCRa%q0DQ zoPZp`4HU4KA!FjwuREpEl<(;Z6P&!1UPVuQq*AWwBe_X=O4+ zt9f|qcwIY01ES`=Yql{ZBvUsx1axtIGYYf zOLhx8A`!*6J9VuC)+DV_jyL7c6fHSwME_5X2ZSOdAP?|$k!_)8ArDc9f*z@LO=0YU z1|FFn7VuU*c&rWk6kN6Nip(mzd@uahmv-~!#zcd#CZVwySYcwt%dblY;+yn$w0Z2j zM_xs&_!@MRP)QJcEuP%E8RQE8jk3NMn%vtGHtQ(^0&JMYHVMkK3Y*+AhNs8BwpZyt?Tzpc}zg->L zyT+Y=`wt=HjRcWzq?*+q*Q7r99gUq2LV%I33<2cQY|Hi)3P|;#TAzF!sfLKQD`Y6@ z-_A8!I43JL(X)#PvQo!0e(gU5Ec0!)zGuC{;NI6R_7-`fn`p9#9!Y2dHNWWV^_^wd zQ1#xeddh#AM_}k53zhReFu_N+OSh$NMyxXp<+#wI{PYUaM{{6rqKC+u?svs`^+j7$ za>J^NblrFxAl?PIve(xJiVFY&d%iiqBq|ztHJ^6<`m>#)JO@1}_gvzU=!tkaC}fRA zdaVIV@j_QlQtE!S8t89eJ2HUf3t_rUao!(OHDbRKX5NZcuz|=y@5pMp1yrk}yC*Lr zvJ!Z9p>4rppv6`wGh}7GwKTg9d7=l5;wRBZC?}gG63p5EI^*IRbGQCMGIq*C0C3g_ zO8stqe&YBdY>&o&7;6Z7e^T(&0Y_;e_i{_Z;(ZrSo1c6M7)t=IMeYHslBCd1(^$`I zYcqK??vEUWu*s)c5ZKI60`W zDc5euJx1)+UC=tYlBj7kt8G;53d25p-OC1KF2?xFLMDgK?=H1U)iO0QnO{`aJXGA| zgSc?k^8+FtqS3KQ1qovvju3s@q*Tq-DE#?iT2#_bTuvqGKx5&svVp4LBC~ilS8lPW zg8Bn5?a3`sayG5(VQ>tWq;uPR1!<*y2=j<3+k+5!llq6_2i&!ohaZ_P?U>xe@p!NA z=>tg6M#)#GU0!dv60?NNcR}^qc)P`z_o9A zYdzV?&IBF>H>ckM9Y?&wuMQLh>v&fT{8<^cV3Hn5qc7FXJjb^~Zn)}HybQ*Ftr%=d zNueGr!qR7yuqaEfOg}R-iW%&~0{lBb__k*~?{5m62v@Z$9JQ8CDLXJ^y{Em zLI&LW3~}B5)U$bSv{oR@Dv0uEGccb+@2vg~_z)!2um7ak<=fg9o#TsDIziT~?K9@P z_HL9a$_gCXZn4p9u~T9>^Ae~7pYu{FN;mW|_?U0N89e62n=_z<>TIiycvR`!uer71 zUDs-73+s-cWBK<_aBxuGRd%hZ?*e97&Zp)=C28c&f=fvJF+JRafO;gN$osSB;7}$6 zmChUGw3er zhL048W_z*!P=~80Zn9|D%CpeX1xNWa5oH-^sdsUDggh2#U{Lk@QjaC7d%JzO5iNjzFP zs<%oB%7|y<#Nh?p;BWx(+YN1-5Y}vb`JZRYS=2S@?=5WojlWu0!fJx$jEd>l{HjIC z!~8!cqH1ep$_{0~F7w@zJjJa|&jN_Svr%!gCnTP-Q=y_JokQ(bh zH{0G42X<6r%Mw?~65Ao-8mb7-pNUzHa;U*Mu1PQ1Ql;D?`%_%@p_$vZ--I7H&cx1L zXup`fO`<{}f5S!ikB>{o{~I3{WQ4@%rf|3>R$nweJ!JUD`=l3@UM%_g$oHzd{ zbI&1|=m*1q#f=PdLcNusJ5#NHoydBTMkOSiFjLq3G%Q7I9}Q+2ZufD^Ub#F9o-2-- z36507s$lK~RX@`18y{k*z46jt?ZBKlLOz* zO?7=vUoXJCwkU@Kwfn`|i)V4B?doHpOW}F_p%u{XF`iuvNy-;0K3T2*YDG3zAU@IB z)5o|0u`(i^JHN1Udeczuew8A1JWAetc$$-ZG?Om(bMm)O(R$|z(#wD7(4sHB^^7?M z>M*%fWrERqy6N-BHK#Ec2(!}HgTD;BW?0^!W6VoCBVWLj|KXi}w=6H=V*1^gZ$;}} zo~*#Nn=ln?XE=P{cutY0yuTu67EX{BToYPeyQ|+P1NcBG)jgMTh*)Yq$K2);zSRwI ziZH6gb;K`WMWJqv0O!PM;^Nb z345z;r1@SPv3nT^y@*oXp$vyB%8vZ*l9vTg+?e?n(eNpIv+KwE)^y92BU$>h1*Hd! zLx4#K@k^q?KP}jhQ1}`{@Xe~l&cBc2-x3#fVe{=roma|3HWx0>#VWi|(*KK1z=^Hz zD?Y<_vcZ2533hf#oDTEzRy`Xn#mFneg&F2tN<5BbR9M_QgoYU&4HE2Uek+TUOf%Jv~X9}9#Jw(Y8`x=-qxHWNK796JhkO5 zPUlHPqNf`}0`6*+o{jTdJS`6YESqCDN$Ar(H4iWErN|7%Oh49%R{@+i_~WwKwi*kItDGpC?8Lw8&*HJd&-|N~>Cih5! z0yWj7us3~AvWlcV=osc^10|5X4oQdh7h()Hh5PHI;lKW_?WG%T+t3G`I<9G7h~Zb&vtnQqIIJup|545G(Y1Sly|>dUn1c3Bw0*7q zeRjEBfnm01%^70!ka4G!dq+m=uzvC|gLiLc9wF((;y3*c7R?X&Y_zgh8-w*%W@#d|d!2SSZ*vAmihC6iSQ^}p$ zNW{z4ZTp$8H+sRSzU_|FgQDAj_ixk54)hnz63X7O!K~pTvJEBszolmguLUx9CUO4m zMazx(%V_su?XlfVi4^zzpU@DsAGf%ttH2>A;{?EAyB+6J%OM0H845R1c^$&*ydu+D z=U`$3rMq17Jo}XMdRSXTkye+7;{fr}ck{fVnP@xgX9s-| zM;DPJM`O2rpE$}XhS{Dk0{=N`Dwnr?J_(zeYW$68W z{t$Ey;HGSUm$Q_n+c&UeX~zGeveQv*oC*-?K6C&k8N`=e`2cq5x2GYZNup%!%L&X$ zElSnEvEezi!>9@&JW|ynYq-`F9lVU3lQVrywJ->cEwF%SGS7t5^7%y`67+tnYMw6YGVfIERj89~YW1_?y___p=Ls;u$PX3gZ3@i&tQ z9nHK|^9%A3eEo)DGrR!a<0_RMmYq0f}@5|De2JlgIJ4^W8vsUK7zA8TpR z@bi6+j-}gL{Pq_QD%N3*RdGv>H@6>c{*%SjbLP^uCLaBwGm_fRZV=OuhV6}tW9+zS zianCXN?z4GQa*b|Of!fcj96>BaY9*b zQMLbxwz#xsEBYqi!oV4n(II_A+F;D=P8_hiNa9b;?-1ukoJgar3_Qv5R;sZ`7=5xD zJOaG%tOM3zztyChW+6UL2h9HF?xHHUtygT!#?kA=?uFZXtJDQLL?ZA{+HQY)Y16pB zLl`L$VFVKa5z4GguRDmyHK(rS5YafUt4fCzi0vK+(qrcYXT?uDBMI)Apa1U8i zncUP?-c)RYoq}*Cq>Et(SOhg}%eY%tALcNj0jemo`yA$B`)$hu6M0VAVY}*ghpx=> zR(*>lf@b_+8%E)iTfx?r8?2NKYhwQZVY&aG$Z!@BH6g5+Q26$EK}}5Yxt% zAqHZrr>^??zFzS5c{pRLijJ27l6n;Q9J5=*OWZtv2@5@j&V)r~su24<8qv}ldZzoB z5$rp(`gM$a&va7f5kZ8jdApSU%w;|1StAWU;b$lIUBBillX33acc&+=HuWysIKuKg z$*n3z(?@q~3yip&nRFo?$(6+1E$OaJPTyn1$+MfuExwXlf!$00<2Pk$bXadje!_Yr z|0$Aj;Vg{u0)%K2c4e9}m7>n5jpP3zx#=I{oVGgM1|izfesLlF8ke85jQ_7TjaSn3EcNr42o4 z)*@FElJs!X?|6kBykoQzM$-#Yn|U&v+iHgjqFsEpM7RLpH~Q+dlDXvd*gaj(_WyqV zvG{n*xpyb`q|`82rdyJbR~=Qz=j*S&PTym*<`gGdytfE46resqyaPnB9SL(hiU)G$ zrD>)XnXgP5A|I@a4~AAc05kV1^_Ktn^PYR_CKNE+*BfoLG^MQQQvhP~{{N0?DvXve zjZ{(e+?i$myoPi9O%%tzeXTcFOUpGAsW6pn%I%G@KX(N)D1q57w-jD}N<1LXa4Dd6 z(UN~wx}x?!W183vH}KZNsaG&--9@a5rLb(JsE9-V85{@XTK;G3(trEB|Krs>a8kO# z5gEIeWnv&BpCSMlKt<`B{bc}!5fA#(YJWIPvaadavWij7t)4r!G;1-BeX0q0dQQhD zR1^Iq1?9$btZV~*SsfSD%KI#CcR%+lc_!zOSdc4{Qyq0K`FZS(t(k-qXsC!pMcNCG zt$SYGVto)4@l)pP`Z3NcA)0GVO%zFefJ77&OWMTa9rO0e=JTeKp}w8Ioqa`HZlbKE z&6NTVC73W?U%q3&01VZNT_;Vm&+E^H%{E<0sypzXc~t+W=L8=9mUP5@^+uD%K7oyOUB zc*nCioMU*xwQPbp`~vsrKI<^w;Idv-{8=$JM$zU_dr|dU)gy@JWlr+R1GfgyOFAyb z*LHTjl~ofwcy9WSwNrrc)Ks_dlho&?B7@IQ_;izdE;h8-Z@hkfQRK4qVor_)?3IG2 zpO27g`^%fuJMiWsctRezuqCR(@u<;q)9)LZH@P(G7d6$x8cI>&+}&d~uvQnPUAz7V z&;GAJ`K-0==b0#C2xFj}HAenjqSJ(U7Ti5!Uj@Ew9|D$acpVF0Fx@N6PtcKHZ8fj8 zb+f=PhL_i`kDb837K--oChr9Tlg7tQGi72KMim&+zpFh5DXNK785Vu@JT7lngks}|j16kJ#*G4OBDX64$Ay_(9}J<7_eRadScDtcFYOh*!GK zu`FegyZ<+$xOy+Xb!l}Ga;Q2Ha^hwBYau00 zNb-s=-s;zR4GnFYc8E*hlu0r)A&xg=V!H2s^uPTmU+d#cvqm!DrF1zq6Rp~7McfZs zJQ3|zb$m9b?eO$Dza5_gud3#6wQ_s=1!kW4>|Dxjm#s?r|BJRaafkYU`@h>M*^=yr z${rF~#xg}x$_O!JnIiijS+b0gC|kCW?0b_eW8cl#h3xyDok19b8D_ZOeXi@f9M^sP ze%JSNAIJReKF{ZQK9cW@-SWiKX5Y!WEDwIstcyhK&TZQ*<$f9e%;Af? zoDQp^$`euEe#onQUP}FJ9-u0T4mB%Drt71sS$6rf3r-waPbnOzxLe|Cd|+ zZ&%&m!l|ihx3XDnW$-8v%i7+JU#F|Pj6Uo1zCNeHq9HnXFza3+bDV~vfX^xmTEi$6 zq7tIbj?C+@cHrn=oXdYf^VIqi1jwPw zLXd4_4oD?|hMZ#&VK#4of?2A9GL8}q;*Z51#5=nE!9u7Gw)Qa!b&pD7ZOhKD`e7y%p|S`|kr8rZ z2y4lGZ%FDx7tQtfG2|HWa|7gJ&TZd+`_%u-p%`NRCJ?~5Tc1gJ%k+U}{_TwFz2ff- zsqcFucs>>U!6>C(Dqd-(xzfhk_7&CgH2!tyU`w`0crKo)f)fsQ3_EY!A^M>umqptCB`iVyKJCNOlu8>IySH zNOLSmQEzfi7nvx3-&|Nwfci}NubnTj8<;Dt8X)%$IKp52sG?k~1MPv~CKc&j%O3O#c}mdFAlbCeLgZ?mj()U@VDKQ>!zctXxb z=Tin_Q{`!~-1(Gx2Gz>Vy+83T>;FT%8@HwfE$Pf`pKjF85<;?0#>$K1x6D_DmWNb% zp!B{6&7HHICqaU@Msm-7(g&8Qi2hlog3=-nwK61Adi6A7Qc>Hl|D1Fmk}$6W!`v<4 zF!I7!=k(Z|f*6a6GOzRcd`wo^4p_LiqQ_(00z)BQ)1A!aKPA9}0N*{SE}``n3_z81 z0jSc7P&tEZj=011E^P?vsy^!@sTjCQ3~8m=`!?4#uk$J)YKSm>S+uuuj6 zXQ7JOoful#kcYux6o6n^v0dDgmQ3YnWSQq^eETmF<^Osho|vAgcH1y-N=2~ZyLd?N2!)$>TuBCq@?*l10((J}82CZL^sQr|2ic8j9B1y>q;XaXzN3%M zy61YUkR@&9wu06L?~{)qs>aSim?T@|>WT(t@eg4MQKV;Tq2;5e3h;xAL?GqG)+Qks zXW*3=pmwN%un7_P7+~4JKtyszOC%TkD%$7u7zBGu7t+P{(P+&Wbju=Si#u{&a{ zY?j}3HdlDI=vU7#O0#tiC?(V%#WRWyxZ#BeIh*Wp58wQm$IC-zao>&~vKYfQ(Z9PC`}v_4k&6*&duDSS@A zzyG>Q@wc3GZJ}uBlM^8)TGXh7XnHT#1>LD!j+AQsU{ zE1_#EGAci;Tm7B~GHJN2_e)&{KuZUD5Xz87T^Xn@nF%WnV8O5c=Sh7Up7weV6Kcf2 zCtr&XU=D?XPelkQ3nYD^)ziF3C1eJ`SRfh@8n4xrKcuDDZ<1k|lu=Zs1&_~?crwATZ+gthBG z_q}>XtHfh+1!>gLqQkaX-n#~nmO>c)mmBY6&AL345Wi+h@i6z%xkrzYy6~2I*~L?_ zaIyD8t!xcuMK<%fm7FwQVRtR!B0N;dwjXn}i~bDs+0-UP&t<6;M{6&AS%#c5rRQhx z?`!81Jbgdz)HTIB>5$~4JML~@M}ql3tS@3r2vI6sl5;X$7^&I7{Bcp!*f7}q)pO+? z8aM7aXu9@WU|2MeyV+zD(=8#!j89+{(p;v3Fvy)a;JB%QxvRLjhYn@|Qv9~R^XWT) zI(EF}1B5!-!0Y}IL`PwIBdGf2<4SW>gQZU3NaMM5xP#__<>t`G!$t!WkO})c5ID$m z+j1q++_#JsE>KPq#d-W0&m!7?j45qt7s2IT;5Gwm;7LDHzYJ#Y+X-?;5IXOB%G@Ug z5l5wmCsorl)$cG1oz-yevo&96;!VDDMZQ2Z>7~{aY^g%wVsAOXU6O1t+s@Vy%J{6Z zD~3T9q8aOubqT8r8lb(7p4ykWmyCm72OEA3W6YoovZme|8VIaA0A{psu^{RkM`Jzn ze_rJk-eUUZ^I`{je|hqbi1JZ~<@p5MrtJ*M_60X6~(opzjSDGj}@tYv8H7V zwWd|P^mo!+jWqYp6*Z+T4~P}%BwPUXI3O<0BjV zBL*9GUp`7D%%>89i39g9!>ODQ>>Mz50kEPM(Ue!-9e)r^__>|l%ty-_CW!dcKFyDP z`r1=fx~6htL(du7UO&$2Wy%XbNPz;~0MP`>GD+N@<|ve3qe0D~8bUD{kawK5Pl zB55{L>Jwvn1b3;WKNMvPk|hlQcc7e8(uaHWg&L1eqOO$4V(JoLRRL;%qPw*FMDa|g zQ1MKj;K+Xn75@lp|7YRu`?bhCCf@l5>%)`Q?}MIXGc0GzDqV5dHXY5SPZ$0DGnZpo zJy^nL`X<=fnRGQo?L6i_FNMjqBchI=)8BR%z%cdSznmyf5Ry106qt=Hio!h`tw@Dy~)c+FcZcpsUYwq@~UU*+lk>p#?FhG7-1p?Ykj9XCjdUloPQ_ zlHuuwA-T?dpCePbL*8pSOSlrW9wC{MZ4M$!2ib*V)xe0c*U!kd^SP+?Rr_TPIGkVU z22j%d&9e^Zvp-Kq>{)yUZM~vJvS!>`T<#tCAgLxiJHzKQTN~ojYr9(rllFEc>2w6j zI@_Y>pCnceM!6~h5>u_2)xvSRP?tK7;;sl5sNji!@R;5Pv&ec()*jROp0bpYveYJ6 zK^r-FGKBl~O}{k9bLXRS+NIAkrzZeNCWoPutgo2N_*N8xn*8$Xx9v`{o1-%*B=erT zCX0J^FO&vj)#k6qL2H-%7<5qM#O$JA|HwdOX-=+Ij{K@ej9O6)NZGw~;-F6v2=4s< zd2oN8&G+OHEoi-AX5S(lv}OFtaIU*HVQA=Ugxb5hgKwcbnFZE_kS71rO>BTW@<12l z$~_t!nwhfn1T~jkK3L@Mk_k0ITyD#CBbLU(|6rMz&>D}+R!97tp6y%lA5 zh@#lE0mHubh)RNxVBkRvOhC+&+1&Y8sQ6AA6tbg(gOzxY#2{7I2X9NxU7l#C@v(=T zBYo~`GViqcoB7RU=0+tocI<_#u&bzxj&$kbey`pi_m_CL2=q%b=(thjo8uY+`A37D zGE*s6U)MeRfu@MAHbr=F(l`W+hCDR((%eQaMDciq(J4C|$p1hm+2sx*b$#V}C@Xpw z4+H=cSpt09QqSPwCrx!Jc3L;ThU-l92`XBg%6oQt%aQr!I+qyXCl`nEv_ur~&5dxO zV3jk;z`t9-u2VKSlp?GkV}N+6!98@_U`|ha!}5=hOvTOu&J82S;|MH?;BtF%pJK}2 zE@u&>g>o=bva@tqfeL(Uf)a<1{rK(wD3OIiU- zBz_?H76W3%=|PYN?>(tL=R1X8aR94{fOZBl*oPaJ2TbEm8>1HP+DKnn9NFu&#jXEn z@XPXy$C;s2 zY{x<2s73T3KP2p0nM=t#9=BkmutGm+kb}i*8v{snA}7e1gUaVQv(A}u!@TaKOWcfS zPqTYRTwVj!r^bH!!^G?!Da}k{n_T->Zi6QD}yIAB(^g6-8@b!ieW2gSyY8%U*dQIyQkK0SsdVM# zchX-@1)i%OeJ*^WLug%<5I=D+`4ilYFdGOBD5{i0eCv#p68(x;kmL=Q&5#-_Rk54b zE|~j5vghtFQUWd3!(@ScHzzFYjN-#*aRm#y(V}DNylO4a-=5OBb5ovSe6&yUt|Xi| zXc-uG=hEBaY(^f3B4WP?U{}bX*w%bSFZr6k`la!h$E?ehGvc7n0z&~8tqdrX48w4h=_Buhuy$GNlMr1I zt#NTvyOPA$;Q#nm7*d%Yr0^?ETenFE%;q=GH~8qF7t$DYk}q9-e~H;P51f4R1R0<^(%t`~oH$QN* zv!9$!J}=8n0JQgzhysKTp_qq-#yrcv_j#YQOl_=IEQjivV_rEqEu)m$*O54+0kWb=Mw#Y zngTxWQs*<`R~psHv zF8|{@rymJ@fqqo#2o!hIdg_Icd2#X&4@!@1wS!Lcx@`go0=?3xX=-MOM>Fb}{b^zO zhgTzi4Uv>D@819nXIh5{1?LfAT2&j#m#O&=<;okE(|?Wb$tre%I?qqYi#`X8E_xzh%t4 z%%*Yv_?*U9lq>04a~c%2zJ-QofMq+>ll?vVU$pW2;+yY%VRKv8E9g#)hmtwyjykdd zoD?)QKvrSpk&9i*sE$UzCz>1_W&FS-$HqLQ>DL+a3lc1kCr;gGNrV6T6+z2ReyAbB z^o{NwKI!^6u`{Bw`BU;z{$va=Otzs53DW|XO=aJNBZJkH4n+EN0C5O!CQh^v%HTNs zKv}Ucd*BW6qTx?^QS|OO!7u{qfWS$jy7$I?Xx0i19vK(E3Qx7}GPxA}b|5xk_8 zNN%Vpf7y4+zQ6R`^io%X)xuT)2i^L4xD;hw5qhy_-bwL)WTWb7>Y-Qm#x~xRTBmp^ z>1!zes|Zt3r!7VF^_NdMdVBA!3PIE}!_&|Gvk_7MUGc%M_(LV3jeuy}uNNae$h)EN%3bZQXt~vK*m#>=q zz(hX+ZvR6FwgXeH*`-eI(?c&rmTqhQ31hMdz_8Y@ZWMZFnIYdHns)<{JH3(b8#g@c zyiu0#(?g%HhuO`qnkh|!IHic2l>SJ#ZSOeQY;x23gBB09y6fOojJRp>kKow^z44zg zI=Ox8GumIIW>S!yu!}h9DXXrUZS|XG~n)*By3GoYdqi>}MXe zn%Kyjd3$p2hyVV>$9QQ2FYJS@_B(vtheGp8&B6xoGuXnm>GB>dyiADqxMIp@1P+@C zZvFYs?{SBZ?H}DhuOP*UU5gaZmdUg9#82Pn=2imPGVf`eZ+j2Tc8%dCwqHSoRc=|V zuy*FgL-z16)Im&YHS+1DXfSy@?wh!xCgBn+DfyrB3sS*;~`UGXhj^DRCDZQ%edvJTY+-#F2;ASN9 zI@d1#rMKgBi`N?)E1nU%6o=Dw&HL}ns)0_!PNw=HbhzwzX*kCkLQ@yql?v&(B5sE0 z@+o_@vjn}|lVqoNA7@u0818l`Ff4QJL)?&~0KHUgeG1CET6t$!CQ%_`zk0}c_*riL z?(eCQD~I3lZ>CWeyD5mD62SR4us<_i;p8+`ymK6(?55o--8|UdS3FL7BR~6Z{RW_~qu#@` z)avg6pu*1Ava6nd^O<0?Qlu^kT7Mc>r%Al(6|A?efpX3HmS5R{;T{!*a_YHtJpG}~ zyLgpBwpjyRxsru`%7D<-0acemjf;jf9&)euQ&wEg`-!qLr=J3c!MJhke2ClpW2dfP z&zXDphZeTN64?Ue6@VVo4i|dhbIQo#S~}Bm19G1jZZ2&;Egya|>!?5?=??w@ zXW*zvRG!BubA+>b6HmR0zx(*^aB#Gs_w6%h7-k&Q6p{N{4#47KS%>jKg!hUdwh<=u ze5^Qoj6Py`Ezf>R4p0Dp4_~uayQt<>{OpTD)WJMtn`0f@=Q?L{C4~$L&q^xX)Nf zdJ|_D$LfwL-Ywh1#1q@(t!>;X!-gi!6mw5f`r(G(;gL~Zfmb4Ez-PY_WIThS7UM*Y z$_>8C*bo2gRygio*Fes zS#Y+rrCuQ{7hc09Q~9p(blp1cKNY<5b3i)_e{O9Ca)chn9G|F}-5(iW!-OGvf6xE^ zw&xjv!{JlKHMy&GhsDhw*+dguYsFt5%e@?#F99@Ru?3@p}FCGVuE`Q@R^l>@7ka+oTS+1;#jH(qU$qHb zkzI(R#+JRKEL&OUj;CD8KEcX+P^^Aqa*b;dh`R8SUQvuq!sO)uTDxp@;Om$ev_5>x zVpX@U7XPK7_&%}-Zuvwb15iN?+i9D_X7H!DQyH^o$I49=6Q#Y~ZCfp$?XE$34~VPA zTjRhwbBFr+T?c*U#&H9}VjR5K*zv&h1-DoUfozIO%tk*_cR>Z zWXT1?+u!;$())VN<&^*SQZ5Fa-I{-UTZhEF_E7D^GhlR5G5GL%-R@GZtZo1GwO*`$ zKCZ9TeRIlpf0K1U^WD;bDlP1=wrvLfP%`3E*j#m*%r{M{lBoDI(_A|e@lk`lz;(h>odVj9!ATHK@^h*+^G zAZ28B-8GBlH0IP+n9BQwcDCguE?#-}RP>@ekMQ;&^ialV@iP142hmV!fAA%sRk@s| zEy=4%_ACnzBZ$!ml+$jmsgSobv{>N<&)3zoCr38z9P+$xk|=lLho)ie&P z;B7aEYuTL=3O!3dX9F8jl|=TH^8R{hHlyEs=m7OCB|6z^aQo!dZ6D;iQ#T7lAoX^0 zMXOfEqdINK5uDKD!ca*ibcT@+C+%#k^Yr{CCL^xvb+@x=A@_B+%Zn)9A?NO~Z^Y^} zC)`Q*Nk$X`gp!{ws9n!kZ`)M}yyW<=jjV8uafD*MWc z+U3+wYA#XqQtd6$0p4vF0EIUySr+d&Gv(rATu3|mw*8|d9FZgIJ8hDPZ{C_~2`v^+ zGZIPKIK3g8$L`o)9Oj0v3C@>$&N3hGA#L4N?mRCvnm6XM?!VtQ<}Im&uqV6sk#4(; zjG$$UW;5IMut7{_b3JREulvutopLpPqpV0N%*?OBAb$z=48cq&Man&E(FZM9m$(9s z_MVb-wZAT)@L9jgZQ~1?*%Qsc2`RFhsxG6>)jqnFITXcowA2tdW?eDSP!UCRu%&YN z4}G%p#m0H_8tfi6fA5Cn?+~3^6=vInj4;za>j}A%B|4eYRQW(c(b5rqWUs?wBBysUt<;mpR54AacUuRUZrx7eRJtO! z$^WF;#q)N_Lnk~sOY&&z<*U~*yW|@1nh=1^lP?*BgBP`3z89FxO)p?j<0N|tv#xt! z&X4*Q?O-b8K<_A8saf^^YH52x_%CwabH?YVqEr~hV@RUV?<42c1HWCqv(QgRL(rG} zIQSX72Tmv1tS1B>1oil(Tv7%Gz4dAbKU2J3q>cDNGOC0j*#v3d#e3RF%EV#c1dR4j zI>6$6p+!{tFja9P0$Z96VH|}W4?8k;mH5u0CdxK#@{MKo9kS5icEy^nAj!=$y-Qei z;w2!^On%+SGo9&j=wGmfUg+sa5vjGAzL7{8kG}0!=rG=Fme@a-!qwIJ9cjeO|5yfl zlY!czo>CJ(b%Zuv#~pK+37yY!^`5yDZZX?<7V5fF`_jxj`+U#YXV%GO`DK{5DN3H7 z#7)xnH>;0gQAHTnBp$FkQGZ}6zbyK|Vc5=MYGmUD^??3o3e2MplY*Mx9l?nK8iR%9lRHnk_JcoY?CNOykl9_(&}0X^%*>S4G$rCAOf`QHw=Z*h zQwpK?vuyY$hcv=qBhyGX@c^F;cDps5I@DQGr(6tzuG8q)J#?b8v0xc7UPb+fN(3`W46O~w;K*WCy!Koj7hi|%r- zVePY^_aGlmu_Nx4$OP8LyR;)|I)}&i>xRoyeJw4-DP5Y5r8kVLo1eL_TW!!V6dMdo z7gy=E9d;eZ%lbATea&8lBGk7l&+8!uX|Pv4x|Jqg)hH*uMI6RW>Fv2}2 z6J#9{S`dA;Id!*Q#8a)g(O9JIM<&4x$8M!<5^m#n%~67Yk#{n*d=q;(cJ2sKSnlBY z(KYN2YUf6s_wS=bt#~CP{Gw)g-?V)yW;Bh*y&NbPE+34g9Q0}MmM*7yS9iOF!iX&? z%Qrx~`I|cAB9)Mfs4#Xyf5)W+fTn(Fc>dXzXbHp4hr+5ux((5ajV-Pi5e{W$wk` z^PrCvFPa>S8S5SkIALY(E9};iMLlOMk=x`a-A3PMK3jVcEF{i1(=}S_h`ymxCHE*> z*1EBa%A3H~o+N3_-+nq{m+P?63)BE3a8SI@p4>}VUe6&JMaZ$XR;;_+rg-=>8qt?Q zR5T7#7g$d3-wzhz^=;;@+)QmzE3?48sfA0@7aBVr0YvDMZ1NGXKufU~X12dRR+2EA$-u`MK6-r!iv8N4JJLF0>Rkru zA%wk~a;(|3_5NLkY4aIA`kgz>6>WiaNup;j^uwVr+iT4gE~XWZ#j8v1E3<7cdsgcf zGF-m}}j-*4r&PKu_k?Df<6 z_N_1$bAmTR;`gc2)WguVQ|V+Kqu+=3kWLg@#UW9$QpaJnfn$fA3EQjV`Hv;tJ-?Nc z-t5_i9o2m$XY&5b444c0;{ZrkDbYdQp>6Vau6N?UYNU@L6Lbb5cp9}X5ld&W!UK}~ ze;IsR7?TfJ^(;HYb=l&+$`^cBo3ul&R^ApwumUhjQONeoxX+w%OMED8uQy^JldA~> z5x?SEuR$CZo6O41fZg{7IayL?m`=&%Fq3b6qd})k~mJcxn`Mk zF(bfEBw&j_kk@tsQIj0zv3mA!9#qhi@%r>4u|%SoDfqy6rearaw09aLCtEWnH&U_id4Wf$=lX&mj~qQ5xsBT!&y}<`Mmd#qS(k9- zFhX2Yl_{7*>3)r>r|xURQ{l&b!Px5RusT@+tG6#jeytR0Jz<`kUy>MxtK0j2+spp$ z>}5;7EnAH{a<5W-e{)Q{?sP!xtsCtTIwdW|@P;k*hdt8T%Cp8}(`MG+3I5H`D!dsJ z<$P0E*sm2^*E(WbhT|bwTZ?g~PnH9v2x4;Z>75jTZ&VDY9BROWerTUE7e{HcgiF}xj%%vS zFjAJDA2V~s)k&bJW#lDeK)ryHo$CT#-R@SK-ap?h9$;M*)GI1D={h~*qWijzSGmMm zYA5qE^yqYbSn{id%>#gN*6oPfWo+RWvx__2hu$i9SS4%vOL3s~pd)CVCg@|l^;mIJ zcNq@b_(v>bXX{B`pN9-4syHOzre}Im?pAd!<03auO>Q@w&0Gl1fjp2n=AXD~{3R~w zgKNjCY2zJ$+*-QH`{o_Ivu=4p9sUe$+%w>_>;P9lZfJ-F^4}V z54<)yrlwt_fVF>;vakK)RtihE+j49iJjRq!4BL@UJ#gE4p)oe$RA-B$cIoR{TUL3@ z$&j`(9p<%Udnm>pDECXxYCVcJKW1TKtw5yR%`#lIQpv+(7C)sn7!fy@8ZS*%Je}o% zJ38$Ub^Pno=E)X}Hf7?s-o1b90_d#6E-5y~TbtVCBeM?$*ix-oAQV2H`vx=PGh8%> zZ$8cKlqIE$8MsbcVsM$SA?U@p{mr^bB&SnVcB_#iRtdA_ide*IH}AJzu1oN`trF3p zytyj;-OaQB19QTW`IxaNfi?HnyxS=zaQu|V$eKP~k!@a2LNqu->Z<@?bjE0N_K#Q_ zV{?x`QIG>Sst6RBOZ>|P$j!l&k!@;B*Qi|*+!R-tBycc8PUgI6wrsQD%U!4uQg6oyi z!*33g-Rs=?vp&EAs=GJ^rbf&VLck(`<8ns} z*Xj7Q<87>L8_#hx!hWMuvMOyMpMDW!3G~R2#Z0|nI`{P{D7jZu`lOpAo$?DC32;+` zK$8d5BkGp_Z|^sLB+J9`fo^%Z!|flIsMCi{3+LSNFetY6oBk)soGJty37+l`mt`Vf= z{vpbyMINGAJ6B96{VrC8cJ}D>@c!DU#`Uz`U4eY2(oQwIFC;GEvDsjahWOx5e@Un+Y&Q+F)fth*R=4d;;PRJHrMXZokVkd)E+soXa+H;_GMbv|p$ z5@QjM1i=jw9CGfZ+u+CV^=kkX1yR1Z=9E;Ks^n>&?tOSy(NfW&@IoQ`MD5534X^7L zhYBjgUa$ZDm_OsB-jD2#Su7YCDqda;IsCqLOu}!mwuf}rPzb>8ew63YbUU2#rY2*J zDXe1h7LRomnNVB60Z-WvCQVn)NgKB>>j1y~TF$UrLxX=rp#!9(j=F)Vn2^?nq;Ki` zTg#3!=+1_80OL*$Zl31M`yb4-XDh{=pAGWc^yUI`EjWquh^T{ZjyruxPymwlreD6< zGFHlcfepZ8+F1kw4e>U8Bk1d1Ni(PgpTv9`Bd7(C;!KdSa8Hxi#f*Dj;*ddMJObM* z7VE@Nq08>XobdcPvCp}L|KH|DN@ko=?3tcDq7iE{b(7rdOX3dO?-H!%wkNMM zBr`KN9& z$Lj40w+E)D913Ue?@y{by|Av*gbW-ydgYFmXdr3B(qWr!`F8QIvW`5l#C_##{D z!Jo_P#oQa#7iUJo&>zl+b!shqv%n_i8+sFhH8ucDVrH)-E>5HN*F?D)yf>GSnVN){ ze2&{bm?8Z>gL&ZaC;s!_iI0tqa#H_OgBQM50THH2`3r7;?r&J#OKnp7!{J;Q=+NKS z05>P5{wS(8b+e@i#>$_x|L59H_Ig4{k=Gn1dK_V!Wu{WH*`+&2b@tr5RN;u)nSIc7 zQNPTT?frnQ7OcQl*2CLp7LKsv-jOVkwQr=YUj`6!ycxUPLMa2*Ldy-(VOpk;m>Y{6 zjY#yb8g;dD%2rycg~?;uAG(EZcR?E!O)3NYk{n&^h}x)*gAUe~YGW_tK0HPYCnp^her~rkOtO|kVF2u0q$V7kUu%1DbyW{V zuKHd-l9PHV{VBs@o3>j^^iQ*e5~J2?b}q z@N?NGMazj_>~GncQb{Mz&_t_Z&UbuJF;8RTv+HcFxdrzN;cYNe7&K66(RAsjY3QVT zTqInik6Mp~%NBI3ud1ObE5Kj2cxaKXJ<*aS>qBeF)W~t!?bv?JScP$ywJ~|TyjWn; z_SNkDi*I-m$e%l;YaFb*Mt)nGR=buP>V0FWWe9<-2e>}3 zl9^ZH>asiVanR~Z@d<`v2e{}nj+^+pH|q&r~qIYFKN zTL^+%$A%y?{}Qy=PE|{dGi?_i@_Jj!1&)D_TDeeqUra1e&)yRQ6H%$k6?)-ea+9JHZp`KjkVc34V?iKa{gVy&?w>eyKQ#X)lxXel| z7ZKbte@}MWL)wDvOB8m>*@pn&FGkOi7*!;9O?d@L5{!ul-$yf%`Zs!5t=PC7+(fA? zSTShzX>A{=zWfzxwDsv!)Dn5Pz~>MV=f|i*TB$QJ+(9fRBCS)N5`M)W=t;&hEh+v~ zScWG!g!-goJ}p%>wDk9`NpJ4nR?yzHKJ#Y1a_@De4VMEiy~~=o+!e-bXidycxY~42 zS1W~ZRM+NqGD7hg6)RWJK62I@=?t3iPQ?t?gu;>`<2L^q0Iau*xKnING)zTo14gm- z=C!*&zcEO(I7EqVSwExy2%)eGykpep=;<@S$;-kl-8-}&FJ^}SU<5HN23oTK9y!81 zT8U_ZMy{}GsKnSZI9VMv>pULIV3F;RFJSs zg)ctE(7GYy&wPW?MGs^Zvegr>m9hqsI^tX7!coLLtN`N~v8%@GPe%;(W?~|Q|xz$3_nmuWX-hEU&KrozSJOV)0Dx zyn*plwEoVmcT7tkx{9+S8y)gId&KkAHy!dGB?|6MZm>;=VQ}~fb;VL{lvf;>KM$4> z^jwqTcJ7&sy?GCIW^npT+I}dZ`z`J4huY61_TRW=2>>1&7$^NgA`wxZ?XV%K`{YkfY<0`iV_HR!nZ33}bJ?t3EpSRt)z6CEdCwq_ytDJv zZJ1T=4Nihus&!Jer^j*Kn~7_TkS9WvW%seJy+hn-#H1md=XHzZ8ZjA(HySJVL`#%9-;Q_qH^~E@d9wVq89N0@xgku$ zcD*lrD;vzbR(&;bjkh+Jy`6h+hcOLbcxq6U;)(AGnH8={UfxVzvne;Uiud1M zaT4x?$dX$X{6f@GU&AWOn>Zi^)-1q`RRyxPn)JAsO7@k{w&X?)VTuQL!hQa_5_8qR zj6yfVK+1>ST3Cr+it;lpFk%xAb>lwAzez%Je+`ACF3Ll!M!K)4vSC9m@zUvjkmQ{! z8D#8fxr<|1-xW{?0~3%u?hENq#8`Tuh92O-A+P{@2P8p@S9xob@5v_6crp=3MIh9W z_bC+4R7BD29qnM7^-;bKxZ2~Pl@&cR&E46=rTij^9pAGO1Nq@q=1*=3Yh{G%D1O`2z#bTqo*Vm3(n^l<`g|?V+t7arembk-c_m1zkX4>ZQ$g`FS!OAQhvm%)aza zPN(GQnJT`$M918?;61;aVBOf2h^rUWBJ~PF6C$Hh^w2ks5jH7NdsFk!A3u5k8_!q` zmeXVDCr9~c>gwCoEZ=@v7hg z&+b$FM0Ejg$rGSgUN6M%*XsBy`!LypzduF^fg;P)++H32*8AXV~+14Y&i1{#kJ>|HH zX90z@&Bn(b(RHLo-91-8rQTWNfK3AHT)E{OJjUy!sT zYYX(UNdB5rqEFf*?Ir$fMwxNDyfl3EWUA1# z=;B@$I)H`cg=X-#nfT9n(DP$gQQ;^CVt*fF-|2QS9XKZq50+MdyeOusK_zC(k~&hr z&dgyElmxY5okNfcC!OdJt3NkM6mzhM-p(BPQu|B@hwNLvq$L>VlF#C=#x5KvsE(jF zdoKNa%;R=0UC`hM_R)uDPDq_)5~x?ZdJRb7R6pM;do$spx-z>biR1vGqYRCaBw;fjRW-1Qe-ooTjue6GDE`t@cnCais- zTQquK75SBJ9hRw35j6A;KjirF>}bXuUZ!Y|((+xqqJ?N)7~cE6K&%sT5nF{Y zHzItM7P4402@L>eUazobhI_%N>dn!jHV5;KWmX5<{UIvQ`E{R~(i}_C+6DyYJzrw% z9e+k;(TN1l1Sh#ST|;qW7lks{qHE``Uoj^0I4@L`?A&ZmRc@6Y1uKq)DR~?#V^7Uv z^HPrF7KrdsF!b}x?8IegeE(Jm`7G*MENkl@x8&BUdRh@zrLjX{+}Ih3^b{SQNCk7*u;l9pO$y(yho)_iiu{KhewuDd{bU7aFl0Dm|NV|f* z(4B!Ljw&Uw{W0s5QpL^6t`8|LQDL5&b?bd6Bk@|)wsfVQD|22{df8&>5AqFWhoq?5 z%~Z~|$bs&1H?Uhb?Tern%HJ1Sj;U>qJnqpyi*HG$xV`hpe5%TR(HGzI_&yXg7jV=V z!CUo7go-<$eQ_WPR3yWrFf&xtc4fRn`BXQ90`Y+Jyfi}&ANiawe7$S;Z~tv3}4 z<*NY?tleW)+atgv$PZGN*qjrVM!sw{892libhPF=GoLnIymlo+Rsg(OG!lFbd(e+8 zkRV0V=se^BA-DUuV;B_=Y)jU^jie>NIUHyXre}HXSkl_Qzc*fAzKIJLH(UrP#IS!@ zusr*Ur98}CW|Vh)hbNK0>7hW(oIsyRQONqC<)AJ{a^uMOo zF!fjtS6k{G&NP3P^}4Wme(@2ns-f5g_L*L3l;h5_Pie+S=DZ-LVfrtO)Ofo%a>xLa!O9mbywif1BRI1QTj>1Sdr+nYfm#u zckDfVB(uKMn8&r#={;YOj(p#2X~4;4?enM47uFMaOZ!Ri(hzprc*awbx8wWO0J$+& z7e$~OVfP zwLKDZS6}gtfL1&;LaD;8B6?5%)wewa{q4I$$Mcx`{%)l_g}5P$y$!CGXeRvhmCTEc zf1K7&#>0rNJIJ}|=jSdo##%sE+625FV2po+UX$Pp90hhg@*{3rG`urlQk91ky7GZC z`D6HrH1KS>-d~X^So>8b(avY!IZ6Ws&gZFC&KEpFc>>@evF`-C{>bipOd{&uEK6`6uajSg5Xo@;RD_qqZ@^_xjoNs za=}EP<_+iShN0er4ivhyP}qfZJYd z1+=*6Ll>QTd~l1(266vSQv{}~6udCM=mdBsDoq`!=RLd{dPul957`YIDP z6ibb3j`1{UxTVu{2h2*bYutN}Se9~~@pi`X?qj#ZMhkK#cw+(2jvX~&KKyAxvOi36 zq?unX1P)S|)|i0rZH7TPwpC? ziHcp#+9``!_VqFL@|oxbrQDwV>|E;XLCxeGNq|9L8fNQt8`}+YY4o)_Px9<5+ATWQ zJi|@n_MX!F@Jm)9)+VIcyjj;20PzF*a>_tqK0ckJz9$!uu}pm9UHj?CXSab!z;Qp+h47Sl@p_qGVQ0%b?l*=*GBTpVh;I>&F z&pk;3)H0n~IaRai&>EMzKHCHC<6a*x0xkrZJMG=~&(dZA>s$2~pdP!Cwau>Omd`fN z)z}0CRD^3>uZ8z@htrTy+|e1|icd*ey2(3(Ih*X$vTv&I%UaKme`X`wyt2LxJ38%h zu=9!F9OUh0hd>}TZ(H5g(jiI~Ay#b2%_H*;>3a!QM}(e{*cz287l9?T?hSQ({1=_V zlIjy-EVAXx>bPyRl5I47IagCl#oTPnKrCzl4 zIKjeum!ozmfT)0~d)$4KOGNgwKDXpRP8Ua9NDooWbxUye{(X*;R+`X*I6|FuP167*f>7%Qvk8t zNkz&neMuY2v^Vi>_K&f`t5i3dsQo>jZv%PVF^*T?2KoF^^e{tpP+KO95F1-9KJX16 z?9**b@85IEWG=z~**BH+WPQIGR>@;URHD31l6THZ@pkLJ>)X-o{G3(s;47Sya};Tm~)8mRTy^6S8R#ZHLI0ryAMv=Auwu={SueSi|dBW?E8hS83DgXMVXgU@XMy+miq zcWeVV;SIgJ!-e$0IafD00bVA))@~WTtL65%B+tkGPql+TAYb$){b@QFbqQ1ubbb|m z?%DZWjur^TSpw}tJ3Y4KTuUSQ<9{(fRN(>UMZM!H!Ory5Qf9Q)_u3*4?uI^H+RqL+ zwuIlEhti`Y00~dfIbU*4ej%g$mp^P-zy7M42Of;-AdfC|5r$?sp&oiE8%G)wzP1$M z?aZK{{d$lM#6^`pYe|r=-k9_q!GTbbF1sPEF^sBj7EKy}v;qf3JQxtGW*Pa6X$W+*4Zy^K&!mwFCFw) zn)!L2XE|u}ONjQ3Ln&1zj6Z>@6>e*z;L7V+(eL<> z?NOLDSfx&&#Si?~JIZ5^Xg6><&u%FrTejb|9X3BNk+RwGCa>3SSOM|)zVnj!5XdV2 z3wH4!O$Km`ydHkT1V9Jb%tt4JtSe8TNTeQ!<6l)vL6Re^rX_Cd`Q5*h)y6_Q!5e_S zk~H_}*~~3jsL+2?KA1gmOV-T-OHQyw^4jE9s;@*zO`LeVXX{duW1X=_!mRSfry~|i zRpe3fU6ITel@6906ihWdWvtFKbX8$0fOuHbBH^hKqsOIC2brZm~34Dp-KlG zKAela03KCfq*v?8PF$~Lyo?n);do~%i`3(4epl7xpxt5oYp>p|Li;hfj;@f>S_YZ( zuwin0SUGXwf|hTa3=t_N{g?j|@P1%_-{4sXX-_XGCFLc3bePpe@?9a+pMeh^x`DBX zu)t*EHY9dI8+6*T4x+B;TFf&wW|F$rX7buFoHNzk*k3F)R%dSAoAT(7&t93S-Y?SV z!UeH*AnV>ToAziBK#EKiRZV>B=1%c!O&`u0_wH7FK)#BoN1%OhiOP>Y+1p_#HhCKX z8D>hMGhfu1N$xvMpp>u5Fi!wnBDe<$G1QN{aoP=)Cv>MOcX^SQ>&I7OlK)ltUi1>g z16*_g$+E!3!V_Q12=Anie}Pu}Zv5r#6o#FaJxMLD4I&%fmZ|vkM;5SH3(iH0pY8F` zo2$7`dhBK4|G_}*s{geOx5C;w3lhO|(qaUoUPu69M1U@i7t!-1exr4W_vsGlaBce&JJXiHsQK ztt*NzV#7)sGav8Y?#ooSS9}vVNlrMrLUDeR@~1#KT{`(~_n9f%vUx%%7I9Vf#*zB> z$e~U53To(GwJOsXYiwte$!W0N>vS8b%1U8yg((9$RTmx4HcwE8(nlGX39{nlr|Rn} zs(>MWVI4;hPC~q5;&u8+-=hM0t)P?Xqn$78D|VASnXEES%W?^g56leH@Tz;|#DRVt z;$!GBDBsqHt+P|Fmj-JieD?NLJ0Fg;@%hN{9G8g=cQ!;bX*h`Ca>CwP7U&Zh1k%cL z0)59YVvM+P;5-!1Xd}N-QZF$nQaLG|S5Nd@(XHK>tX0uZbFS=xW`5p(3{+ zt;68fi_@PODV4-+@$W^qz9##uw-9y(Lv$n*vU_eWJR+(F=OB7>NXJ_NsDCDXBJjzO zz}z3xRf*5*^$UfoZP6|C76hujBSMl!UWs?znt%Zv#I(DTa z66KrFs+}t_pj}*;+>d{=}dC2;S8>$H8V1%;I+QH(A*vG&Y!2k07=&Pi~37Itq=>9LSA*`+rF=Rwv z2lMpn_nhvp%0x!nnW*Eu*yA zMPw-0NcZb#%zvF4^+}UQO{mC3fW|JV7{!#?V#DO~H2d)gr97&_3@t0q(dgVAdCS(b zNy`xGa>@B~5t2~+@SbYB+qi8!yk!cILjOw19>DJ*)AP4(&M7^+2qNAJw8U3j$+On+ zTt_6v?A^ieIxKJ4&()!~+=-d?d$$&%g^-RCy4wf!q~llHTQG>R(VeCKFp%6OT&hl& z1&(9v5*j&5z$))5)&8tRTFgdVFf{@SN)de2yk{S)%G(I#oj*Q8=e(_FOqG})rk>{= z?r^2!B#Vl~+$zIT_~z`M@Y*4V<(whXr$XstnH zO02i}PX}QlN$ax9?u0vF(YZ}L2d@g?`zsauHvyYJ^>?oZ%AZZAf1P7ex_S)y>BnQL z{7$)M?vqB`)*Q$6tP!RZV^;5qdwtVdXyhCAcsGUf6~Q{Z+HL+8)RqeZ6etc5|v`uF65pD z=I0voJ~_%Xb@D^1zueW4Ggpf)zvp+m*%<*QUu`yW078A$&E=)^oR*sH`TiPEb)noz za?GCXT1hoPy%-a&C4WhW3WQ?R7J%yg0r>n;q>B0IXoKP|Cd}LASE|^r8Heg68Oxqy z-VLXx62+N(V&97MkDvWW|El1gP=B`|CoIuM1|%tOmC66pZblhdtBlb>u2;jje>FLO z@thos#d0sv-&yjMhlc+(b1GjD#oh;kPpfMdAOwn$03&geTAT}o4a$K-N{ENNFVSPx zm8Z0)q^Ax}hl+}6y#zxIa0?dD(x)a^&@H7IXB?1qU5Z5fmq zO~U39RZaGg=m3+k#Lenb;4>9AuKU-zK!zE}ebDNsLxz_5f9SpLU3&=##~aR{#D~3> z=03Q5HLmJzk&SD`(oE#bB9-OogCD@O)y|-%^l-2Ypw`Y*S(Gbg=hUJf5)@gFOs zbV?0#;#Z`B*r|%0`h@0~v*?;@Az+A$=BAXfM`=^h>XvrY<99~j(SC#hGK}4P-VZeU zi;3%Gw0?_7To7jd6Ue3C%dQEw(SX8Q@BA5&9F6*MltV_mc;Zx{l_Kk+UH8Fi?MbZk z_OECvxj_W&;oZCNh+Y5U@q^jwu+^j+VekP~ltVF^_iFj-g_qVpO;cCtla;A;9hHi= zZkRglZv5PpDL&4sqC^PTsw>ma=_P;ZLd{;_2aeP-yB`g8Z|L{T;6g>0>`=%i{Rwf; z6g&L=W-WBJI^I#f7E!9X5wsCt@&t0B5c=t~R<<#7aV`D@N_g7@)#{c5VkuT)gFOVj zn|;?IUx!yFWz-+^k-D0SeT^;iyIqSm@c00}4VbItvpZioro1z;8+Y$__nxd>W$4r% zrYf#ls)AKS|L1H2M_lTd>FHNJY{Jmk$)RA4GfNz2zUbvgzUM#uq$2Hkcd1u+;bd=X z_;;k~i-6>+_MF)ET^r%lgWLxJybP)HG&by943;v`NxGorwJ9w@*@-d;%Ko~XH-zjX z7p9Kz$FR;`KbQgYLK&GchPsiX(a75XPUEkAk6TJoms^Fl+@JN(1p8wvu;Bf+O<#5# z9|HNRDD>mm4$K}2*f$0Eq`>n!-0%fs<+?qW)(7+SOX<_}y-913&lN|p;f0Fe=YBu& zC;z>8bhAQx*O@nqMAls&v{9hDiW6ob-)sOS+V8Gjn%0KT{t7vDwvjWb!^SJ8p)txwSRk*kYRVx#{f$_8#=LFQX} z%%JI%3lZRJ+ayc5@5(A=YF@a`D*IF{b=F?5tKf;vPRw+G?c7CLl zcVE}zI~00?&}JVxapkKAW#}G9sLIJ}197(yT99ksv_O9@1twnS*_s>EJpC#?G;*jn z%r6>g5bBcFY^cf`fuRksZO!qdPK%vVh;(VzGAa4dzx6x2sM?^++GXP*v*H=gCwcR_ zYr{O`;`=_M1YcF^KwoAiRK<^(ihZoGmePK{Z91DTI@=`L8P@xtFfkc)f)yev&W?WZ@oJ;5 z0_?dd)bbj3l=59y99q65#7A4gy0ddtz;k*H3iTKz98)0F3oXeof0RP%0Sgn2jaF(P zZu&iP#rN$~NZ-A$FKMrT4xf0lax8qqEhI;sA2$ zRywkiB#vTMgO2yYZiN)BrS&^4UGP7aIV0&yeP2Wwh=ea1{swaD1V8S3s8QDc-fnO0 zOf4MB4%QCL-rUUSkM^-dGu5myxc zdrKI*oES-raVEm>k8nX%t50l!Z<*JrtH)XW0QF;IA5Jh&Syq;9UNNEPtEcl{|2=Xz z(VJo0KWAgV65w&}tKq-D+ZkZ~;=gt}gs;f^v;05T&oaobCqv&$iT_9pda+rns z)8*+WGp-Y$r%+&XSCv{*zKIeZ6(nDgSKYFWInoGnYDqh1O_G+OlxGGOS`FBVh0~g^ z3zIul8`S}{`etdrT%T8ATyMH~^f_svHMET7hoXZ#SyHyt5vq5N#|5c}=aj~ZD8SUi zmy&nx4W5X)55(eq0%Gw(1#TA`BylS3!ufYgjJ`{+X>CQNu}pEQcmX-Eap#qm8nPoEZwpNos2Xw4FnitH)>E;folM71oH!+T?M+?;pVI{-Vfh2Ipv#HqBVQyW zJ$7OnFf3B|rn){^tZXjMzQba+OAKDMLzn@%O{G^b}>Q`gckqm%{$@+bj+DLsOyijzx;e>P=PTFxV*(-jh*pZ27 zKW4&+1DE&pJ=JGiCj9iXhp=nyG)1VoPa?%O1JlBIq)TnBHOX5+H@G%F^?>(IIGH9m z6nz%u{?C1QYnVCGinbPot7M23y{;U0N%2ucjyNf!uN-Xq{q*veDOaJ>2wh+$SU>DB zROJ+%J;JGW%^hRzHr8a}yT;+Yz2$q@oF2USpC9_KB`N-Xtyqp98HwLh1PgxbK*W0S zLpAx%U606=k(TU;iUPAoXs~=jUa4?;H!w?VkJ3J`FE5GwEv(`-BEXpw7XG?7>yN(D zj%aCin0}CF?*rA8Jd#7BA+q&D{p%a&@4OLU?-e;!>hidoU3v70*W?m~(w@X@2I*^_ z4Qx2wELHXR_5|nc#3N3A{>p+ctwi`L?tK$yvvrPI6o}_VZ3!uNLrQW={Lw=?W47?= zoDJaw>g!O@0e^OYR+1XBqCO!iJzL{0&4|EnY4Jo1tSrEv{L)}bRhJuFPVSzE7|b}? zuX<~6R=h!!ab6}Y2H(xskCz#$wNBuW7B6nJ`81Sf$po>iFj77WCojR&5uIObWpMew zF5eQZj4DIMZdQTvEyv>KSwaz$$xAZCn0C@-nUWDd>XveUkD z10ST~bAc*N8z^l8Yd{e|A|$tul`Wr7$m%6Dx6jhFI%=xl1WEliBxh@xBoVT)+MN0V zQ_9Y&IHx*y+_WJ0z3Y7-ukcm5tPz>i+WZAXl>glKW~$pQrB$2;SymjQn7s2@tL#FiSfbPw3S|8B*L zVfv_MLjgLq>zHgrEnQD$HkNZOA)C*>iajjhUzcg5$T7fK=sT3{s9H-$%Z|lEk*V47 zo!w^+Y8Suj6p<$+5=XxFrmqI96y}?ioRJXQI4`$YtU;TdVcoYYS+1wHb5lKT10oN#iZ zY0_+UxteUsGb4%f@~1D^c?`@}{mHo;k@(?p%`9P42Xz*U^t@Z51$AoC%A%B8r*osr zgCpvJ_SJx$6W2-54k+B=2<0Xwsw==m6|E9OT~cBx-vcsqAeJo;P*V%KXKN&wRk^P+ z7VmEEWV{J2O4JV8=+=-(pe<&MwHy5r3!m0G1-%y>Khyv|$=gw%kib+|uClh{VVzD{ zdcNp%JaVVy0k%)&5}HTd$*i&98=Bi`iHkHY_xUjir(Z8QR4PVBYJb(Vi*XgXH%i^2LNo4&w z5LuVbdj0x8zRG`>2S3mF-y7m;gcGuquE^iI;CUw~aokiP;uOf7QhHw>v6L53qya{i zt_87zb(gz}fG)XaJBFMiBNRe=&Hg4=A)Ha_dpC&*Rjl7vO-JO~5r^leQo zXv*b^-?(t|TR)?e4m8^f&l=S!=>LsdE1u1Vz>C)MLsKS8f$x5TAbxH$#K248iZ zggjY?o$xlTdYe{s(XDtvzpT&mawciDeS0EH_7D z<>OnUcfRKjh^x-;5p^B&9qtPwchaN9a|jaE&I=M9n|!;7$3*hlAU#i)-G<9N$Q&80LE!$RNMjU+zkC8&h@2 z?Yr;8s9*3x8_6$vUD{di$DoUC02FE zDxK1PCM-eZzq0_W)WfbGvLS+AC@fool{@-;sIM5)mMr{+NUPF75k<$L@Y!-Vi_4}n zp?-I`9{LAp`Sr11uRdM8bh@EQPxge$94lyNj#F{emRKJ9F%~;Ju>FZw+hn>){S+%? z2`F?l2&ra%Rf=??6&h4Q0hk zqqO?O{WFtKlce3TVF_|$AziJIjmfZlYuq`dl9fC^mPAU(pJPcIAh9_V)9?BGsZT7N zg4%zCbuSBxy(e7vDs=RbUrX9UG%sci{jfG!8A=-oVM%&n=qqqY+9ItbZB_Wb^%@81 zV^n--qku#1FAnsnUSU?qo7SNvovBa|8WOVFs8jd|`9Q5oFYO!*s1P^VuRTGd(MGzC zn!3zok{%mAtUGt-7e)a~_)JI87FW=axqBq<+s&yC78Bok2Drm*nClg<)bic?Usm46 zSBj_aO&q=)d)cImtR>XwPP#9SbY$tKyq;r3o16c})Aw`)KRV+&MUq`|cNYm=4zv|% znb*ygMhZXhxIMFtvYSli_z%Zf6~<4UAN}e6p=x;2d#}JNoNwy?Xk=e%-v8T;iK5Fe zAfdKaRmP1@pBo!lgY~o6huhJ6fLf3{I*jjHJ7@LngD1uDsoPGrKC=K={&rjrp*ArI;zoK~nFN*X9(s-BJY?c>Zn@0obLO3qJ>1qeWXX<8F-(VaFHUwU1JnGz z|9A_UW}6_K_w|_nY1=;A+8vFp(@)xOw7Za=boC^0xLktX`O*7nGrOwKA8bC_XY|<4 zg##@w3S2)-hqhd#ct_wbXxuCci)!u9ti)6c%!d#&-I!|M=?ppbE5+a9upivxT}S0M zNr=^1!caknprY5F>5%7`fBp}Ms@R*!=F2p4FaCh!$y3!$8}eC`MjgbE^Q2wc70L9V zJD3UnF@l<^Zx!4vp__}I8HQZv2V5=~1<%IELR6`zUg7bVe zrwD7`Ml}gdUg*bH+%Oa#Y8EU(AcJY*go+_P~lyKd{9d$=yT zXKo;&uyHo&uE<{eI6wed0;y#s*NJ`^Rh}h)UA!CWw1Q67LIRi5&LA54O!hN(hi?cG zEX_UgIBx<{m}Ru0 zyTjAj@>n###qW$9`fWt+bDaVc2ts#%qPLB(IYk^PkTu6Wn?N2;k`kbWdxWPE--;Wg zVjC0K|GdT7_EyyQ0vPnLYBZ+tv! z=-y!KM;Z314}WL#Dx2S1lJp#9tGJhOS+3?KCEC};mE>`^Bvv2M^;ucwdiSTq>)uOG z#8hNLzv|poUXT6c=YY-`sQ?G*k9nD+%=E=r9#w}tVd)@X! zN+q3nrJD4>WG@jtQPVacV>bwzgn0LJe0D`{1a&gqA^3JQTO$ z1oGAQ+-#g5bw4tf+ZNydQ=-2HcHApB+IPb^V$raTvv_)g?a&hhNgRWLu2)0={;M)_ zBT3&|jgmauuL?^6ja=$?t85#Ras)tJ0~~q*1VMg?<43@&}@i;;$j7ufW(E zC$7}Ez?1d$g%rs-b&)@7$q)B9&r^$H!>)Tnl+duWmCf9$PDR#+dejchk>H>|{XA*&tsSQxS*p`RB2J>iTb* zpX{vumdsl7@_u!SPb)e)MK;Ks$4rWhyr|)W{Dq^;713`^s|534kK^cM9`A($*_(8g zzCA?YURU46#!tE|Ynw#g6=J^+9FU0s|BVC2lXR0$IcjAu>vl)BjnLlxK)zQ{6xCBQ zE|Dg>gG+!?9XU~~8Tjy4Y(5+d$}_O(M+U|YLw#B%4~ey0mDQ8Osx2Fw=6hx+*qw%* zjZ9W#&pxGdWqrb%rgI`JMjWZSzmsmYD;zvfBN+aWU>gq=gj8~Ja>C5?fiT#Bx`Pk& zz52?7jTm2xv-%ePo48d7nID8y8Y(Y8evs^T$Wc@ zwb*tv`-PwWXHY7 zd@ui~FP=HFbM)D@>*>FD3q2nO_?|)9 zQ2@+M51_M~hr^CSPkKLeHbC07z!)K?L5CxxjH>J+HuArdKhuOyhQTNJS}=x{!EOVE zSZ>!f#8q+MKO1?01+I6!>3$Jw=_16+xCw=^w0L^wnS=YPK|Nok`cI*$KZ?$z+K=&8 z#1>R|g31yY)yC7C_+-mD(Ag5P)O9Op&zjXC-61aa*TU0*@NoHc4Iq76D|bWqtS zZ>etK`7XG*aC)n_%0AvfrqZfVRqjww-rr-*^^~v}^x+w(cek~U(pxjf-vMqv?*|f; z^wrMNSJ{&!JxdD)3Tg|ghZMA5|C#40f=uVn{)PTl_J?8t+(r-6i`rz=#>8IK;w5SM z{xq|*JUFW0abKFStzhu^@Gr9GuW^lt$Ga0f`-fiGzc1QOv4v7XZ?MpPSI#~M%kRZy zY`U62Ynm4T<@*LK$)P5*o6PYAkYSe;2{RgKyO0+4208*O^7G-%Y*qK8buwt!KE?P~ z3$_o;4{fOJu>d ziu$JTS})0W?)!Ka{D^O=Z`OnPWO-z>0Zu>qgV`ZC0A(jwKLl~~pZ!!GZ-E@Lpy8c4 zP|)^wg?qdDTl<>BDMSrvdP>WIRhtg{U})-=O|;jV4+niYRc_Y04xl*kd{uiA4F)2+ z4XKf{?!1snU(zlomfJHI_k2X2RN6HIWJ@|?x9mPWubzY@>yLFoe^6eHN*$)i$;juq zbroPpv(|pPsdD^OIJFTPFg3z%!A2Q7XF~W9C2+I(u{*7(E|-_I&wk*zu1J)iEtmi3 zb1U@SsO|w1_di=5RCAieAqyAXk>nGnXv7vjCXhoDmO9Enb)DlXS&u)&?qSYtZlFyW zK07(SmBrta2eIQ|M;x`ragK4XHLK{|6VgX3ppVhC@0{ zdI&E(i2itRIr!DK@lL;{r>YPtDoqP}_WFV*kIF|C>TTrHu6SAYr;}_T%E$J!8>q(3 z!bUp*8Pkxw*w0(*J(7?eAMCfW#-B*fT6KfYYOW19^=E34N!g)w`=RkyVosD7oTEDaxbi8-vt_~v$k=^OM?^Q0$2KxW z(k4#XWy+r6pp%2B+f%?yVw8PEkcWyATU}j4ztaN=?D(FF80gY#7NmE}=*2PPROiXe z4w+0~XX#Dr&XrZw^Xjr_N2RY(Y?-}3*;5g$qibNfIMqc0orzIno2_4J% ztN1dYJ^zz89j=F&u4{o>B>;(9r|f%rt*trp%1YTApT5?FBUJDYjm_NVT!U+uFE)lG z6jJk5_Q!RWrTBk^pR22THs~HTy&{y^iHR*dCs8dJ^jwS&%s-rJ0ZKI~zf8}3;g+dMae?A|t#n^$09Em?&jCM6n5NP`hkO5U@? zJrS`?``2BC!udUiv+1m>skM$pFTZn&0NxxS@8w`EvG!6$;K|?J1rBO`t~X@Qg-onn z{klNHE5{19NH0v*?_XI+Df_gwR!P-6rtUkgeNTZpP`io=ED`(poM8~<7J3*HClejRbKJ}rA)JY3+Yuua{5w zwE$A`aRM{I&S*zJ*Qb4@50iYhQ@KJpK4nhc zR)-gc?4P)okrB%LtHm6OUkc8whKaO|!ocC>apsV*qp*S%SgQOE<1oQcXU$JXrCgFI z?3G71DU+7nvD&_c(*;nWwv`UUHGf$V!qEsahB|(_LJ(87zpJt@qK$7uo@8onQo|ta z38k^-YuZDnu`k4Rz21LW@qa{Z-@P9{?L+Gb#GczlIK|}XAN1P})obBrkq>)VBGuNC(O%Qq4WxS?P7NWp>8wo?C>4+c1vd zfTrs4Nv9d=tKtv!6bQTyP3s`r7uJJ=pLvx%rt)gyF;4YGD=T}Uh2Dj@GON9Tp# z-i+7)A=?!iYCbPuqlSdmX?M0>+(^X7@)XvWHio+EkTT!RZtp)nJ%uwvrRgS?FMj$; zq)43N*=M=)D^^}T2|kar_btQK?@T+#^4WjTb3DvH@b|R|=em27OSW!V^xvljz2eiV z!>7eZXG&VFl{R03sAX$I3`mW?H5bqZQ)YjF-o7b9PMBb@5H=h*!XBZV>;|!h$j!Yr z%q(O37k~Nx#|@vHJ{FtLM$XWVt`%_9^lML!T-lCwOQ=hgjX_?imYB6Qx9Y@19=WGg zeV5u@xTVjJeW;Sd0pdagU7^H*J^BW}a;QR>%pW2TM6m|~*#&ak5Cvhx!*~7CNJ3-L z=iF(NEXWP8^2j3&yPty99rvDnS$$S;n&oWEFO1F#e}8wgTNmZj*)u+N%uoXA;a8`! zcTaL9zR9vTMogz`fxfp!9LX+7(mVY;>?ke-|CNK7bUF<`BJE&qHGT7ZNC;TPrzN|9 zLh&okq)fI2^PQfWw#fLWSb}4e$u1yqZ9k#7`Hr^(g$lu_qEr!$K3}{%SDT) zpxu}@hlAFk@!Zfg+L#5ZQf?K+(MeZjwV;RTa?5v-RXwFw1{%`PE2W+m^S6pW8D@|D zz-N!5Sa&hO&Q+@w0zFm`*NVXyj&it=$S4fw4{r*S(Zx7g@w7=T{p$gn6BuSPA8hHr z8Bx1V$#zVqMKz9~^;851l3Ne-XT$TY#_sW9NocVelps)u8%-Z`N&i$te>SMu8C ztBYJ>+w(M;BzVh}OMg#{@UgCG5{bgDM;3S7e?cRCj(3r$*;%&Q@96@|gXLxAc(!tl z&ps-`pkdX*J(o->E^5JvP!q_5mAecg>jVs*W5%)O{gWTlaEiyIX4e)dBd0BGgGIuY zzWMvw1I!01RvSNP4CzO?@4VwMR(%bb*n?W{vA8XL+*Ed_cb%6%aPN53nJMI7!k$G% zIZg|hD6EW!#)zXFcg4#BS@*Zx9~z;!rS0JHW~i_dBL@X}Q95~TY-|Z;z6gFBJLU;X znXdKR>~oy^vf^V7#X)mx*Ny1)Ca_8%oPNxaEdR5W>NYoQ?&CT4ZT9D2&q)C+kAp0I zZIl}_?~FEzW1CzV#)dKGA;u4xS0;<>DsK5()xN_N!zvgHSWPG0e;*M(^};<g;f$yI;3#ns4EJNXto`={Oie(F7KCzDRwsJ83iQ&34qn^8fNVyy>B+>kTW z+g8`NVYaH2Iltpx%_gX@uOonTN2w(q1QWUw>}TdF5A0>i{eZB8-t0e|kQS4xFrktk z{PRLQ$aJkRRjbdu)!QGNKSt(+6&`ePDtNM=U-@w2kr#ldpAmg+d#rp){Yca)W?p7_ ztkIuL*Cq8ON_&anQzPuG`j)kNSeQheY|NcT&Q}7el%eOD=?ZJ=3Z>}}SXDH5pqs(? za~kK;1keME?UPBtbt5YlJdW!yX8q4Ve5H_Xl3Nl?mf=)hvD`m&W|VejN|1l`$z>T# zsc_g@g^A6`=t^aIk2yU$^T{DO&r=4qqcjE&H6HrWd?>6#zt~NZto+rPrB@M5{8ior zTC;3I{du~e-%W?NJ4@7!Khl{eoLoqWgR_V@+S79LntXN#J$mN5Uz~(Y9M8z*d)Db* z$Xb&dYGSJPHI@z7K?o%HkmW+OnYRwVx{H}v@_N_ZV=(9dVCfyotCPWB823}k~ zJtYvX)Pt`!>#sbCYIgtNA+KnaRfMo6Jc<=GNVN0UkvRSRFT|?gviKGLN{Jq5yTmVu z=#iWBiKx$2nkmcWEC$rlZ+~Q5S@4tCNfDPLx*k-OxUJ|8gWuT{pEBemCT+*+6ig_b zBD&W49BeU3OBy+CRs$(6@lY@9hi)Lzz|xyx=g4z+)Wp}q-TI`do5=8fjS32PyLB10 z_iT61A|=H*I__5zY$4TjzpT!kFjyHn`3kmA^d*)sZQw+BCLirnCt)@7OYujxwVBJ( z&nk93-XvC23bOOJ@D=E$H#CO;lPa|3qkcB`j#Nc7A!a zrST|w_`ANMdCbCh{n8jSlNaj~0Q{k@IMEhY$91P4aqykVK#VBtO=SZ?T7V(K+XC{^ z8sZ7lmf09&+Hvi8%)wpQ&elm*o`+5ZKm*h9V~!p4=yH0}-OS^20Hpde0*I9Ctfc&~ zmt4ZkjvPJlNxNbAM5g~)(B{b?THiZ^*J4km)EC79XdxodrLXPnw0Hg;oYFNR5!h*+ zHq&4gNska#C}vYCt{hBRQrX&Nn(o%fQn=W7&ERAKv4y?S`~M^Dy`$mm*S6slQ9=+k z2%}3Pj1Zj>L=PgOx9GtjdYc&$EqW)qC_(f#qK)1~@4fdr+UW0H!fbLm z`fd}xBOvWY+9=k_F{CpZi4S z>)S-bdnanl|6*+7dYK-dX-%w6SmqTO)(dYEAFO^- ztgA+lCxN!#ukvki^vLZXwgAV4J-<5E#`;sP#h0%;3E;ZL>SY1!)`FiY0(M{YoLZ%* z>>zWVkIYG$5W`J?_9qJK_x42Db{kD$?mj#PZ#kqIGyCQu&%$F5PFNnoH_?*vCX$NoNoif3gUpcJ@XJlHIp6o>O+hFE1At@$ zcltl;*OF!%j}%pzS5zxt*KXbi^z=3%_^_IFhd#~4%1=(GLHhLbWlLWil$D7}x=tGX zuY0lcYxL1yZh`M({hfUG@6zY(7;Yvqm~IDE)6Y(oBpNvB=s-WFN9HyrND3@E@a%Qv5<5$?0xsm2aVQ6wxe6_(HnX9}I6}xuNE-SX5=wcx*Cm39(d_ zT>l>Sm<}Ftd&;EyqnM=Y{%f(yXE}^_>U4frdhWjHsxHv|*m}L%by)Pf;@-+3G-f0) zU-gt?^rs#V`x9r^M1g3D+G%hB+vm04DYipwG2T)NS8!U^J{#yIK_D{sj2#KJ)B7#)`P^QXt>_aol&t)0i>8cqk#6w-=g zmZjqKm+*GloDY1>CkQ<0Qxtji7#`y-K$p`&Kne4&6PhPd=jL>+jHJI0(robQsi{mt z;QN_18*7r(*Im4J>UNH1K#iYYCLy-Z7Gi*f71fIFr!_}$O_cf=Uxl2w1wK)HL*$_l(hfxd|%&UgBiH5-$~9%E!;wyC9U4 z_|{U4Out$8zL}`=-V4|MQMilHa+wi#?*A^c>^NGgeyLHh17mf4`A-us(m%cL-5FSL zoL10Gct4AQl;RIx&;5u)RfvK;T9<73*?Kl<>Ha_`t7{k2U|Z$Ue3XnT%+_pi$>3lJ zMV@LGRY@u*bNH477vjE7N?EnYzL$LrcA_9SwE6FoRY+H@)dxH5L6FS6qA#3oC- zagXJz#W8wdc2fAVFAVwiE|d!#C%LSuKcw%`iFQ--C#+?O+(y>cHgt6*YRPFS==7JD zk-KOOb=}vVYU9A3I%n@IqgpbXV&CJhxS<&o9q7BSwPaIfCgnWq8&`#3x-eSLj+v~0 zjtFU~#nkN>IT3~bbbp&mUj&{g}1S+ku7| zTu;s-E}T4$7I3&>yp~Z|zfL-BJlG4=})tI6^JJ=jD==l!8P(Of|W_FTNC z|0zkdPSgy5g5(cY4e-iZn5&!?+|1pL!c$Gib5*l@|IC;bLthJYy99O2+SKs<8h$C> z@)an?pXit;JMApsU{87M)#=%VD{QP>T*WEj&H>R9oi?C+ZUeU%wH=SSXQu!fUQy-X z7Jy_NIq@htl z|!2pqWJH6{VgfhJ9Avmt#b#8sVB-ZoC-u=0n!y_c)2B-E6a~Lj+WPr_saW`;60RU zM`uXHGPzvrNd{*92?`oh<4yFm2>9I%J_JKZ7$!lIQS%Z6eMzBdscHose^$6$8bt_m z9aLzi>}x%XNLn$k>j-QVCx}j$ThQ^Q94F8ente05Uo5xPFQd$SYyauzoZBhP+&&PL zY{$Fo<3V`q7-m=lc041sYBuCrtU_}${saXS?8G3@x@Bzw6AYK8H9M@YJQS9GH_Mo@ zSy=%*!wBTMzZdt^woRuko`6~n6~xy8QEykp=f9C%X}|O1i|*@d^7XCuC7T{9m`#1* zhKNyXkxSi@+nez14Ng9IoCQZb&QI=KXsK>CpEf(DmpPOv(+G1P7x9|PH zS0e8>!X0*bf%r4*EN!jO7DW1#efVqqBA&*VntFyvvG9F5by0tKl1N?*9nLAKzg2eB zH#5l$!2=MW{H9xVWzT`psIRYcn;@lD&??6^(sLSW0Iym;{Y@ymV=25-Thr}V-K#j! z{BvaO(xx60V_mjGsD^0I^tRqx%irBzD?nT>T(oJW@MgjG;J9MW@=80 zAI`z8ZhjqOCyD`vRJ4{Cby`DiS;yMtP>bw~t~Rsl3pO|es?An2GpiwPbhtt(c~#jK zImW9~{}WMo>IA<+be_7XJDuXQ{~V*^>Yqgn8TfdZbW$!f@f`}W=`t@3#XUVoeHH0t_+cPJrUp6PzkU3AG z5_S&O^ZdOslIt(>e`7y?eOF5?%i<&R>+Y;GTlT$!aBp3TvrS4Z#?VyL~_IB8b! zOaYfh>r$tEFR`!M_OPxn*I{D!Qn^QGm;Se$#4(0k)sHYHY5Ri>vP5sgRfj1$dgU?I zT$u3CZE^*^#q1?^yM)l97l!_Y=RcEUf;E$Un zd99(vt#SAK# zw>>WzT3i7mCws3Z@n|A9JJp<4*r`;84sEh6Y}@cN((=4vvrzcj0vIEzv;m9*_Njq- zu}1mT-jc){XKP<_Nvi_h214P*k8{-yfmg?q?9cRC({OZ3OdYWYKLWevGt=9|zCM^( zpY!+tX=2TGO1|G!_X?$&YlPX{6%q0Q-!yX-pW1)AU#*jnQegA6jQ@c@cAU(AC&a^g zvq|6O6`*2iuWO89IHA%gMf3=t{qoms!;xnUwVgi_fhjwrq3t4Y%BrZ^5pT{yI&su` z8xwWC&8{`2eSYy?2x>a@U6SqM@=&=&eiPVHT_jBcKq71m?P1ec*~j|LS@IT-(F4vGtAR_$fL40MgT@;P8o zaK2?5{ZJJ1x#$PHXtV4?#W}nbM0;3CQ}}a#;=Qi!cB*3HWTGuWZg_al8YItJLNhf= ztq$v3{3r4d-RnQpBj<5|-B8W}HbuLk_xyLu<}hxPd#FRRL8YynWR!u;X`H2W7&Svg z0jf>Av+K(3P##Ds@+UF(zi+9XhwIxi4ycRK zyo;J_75!B=mEAXZhF=;~LxXiGtkK%*uR2Dur8(iYtW{vg&WJ`fN^C=%u$Dr!>3$m2 z<9Nk@w|e{;3jJxl**n}Sc=#wLN)={qYVW!sIM^nAg306nMh}CoWClWk884drTVzs8 zRuusnFW!^O%*F@<*Mvt0{r+s>_d?6KDYZzWIpFuJ$bwTI4$ZYI7*obMqyL>O7K^h7rL7hA$Er&gUdiUyuu0 z_q$HP-v(4{YD0~G@Rw@LB|&`=ycB%)n)rbQcBK9hNH!lz%uhpgLVn~s+r)~GdLL_S zr)DX7IVuE66}CfNv?r`nUGhaVA5{IJz)a&8?Q_iBk30kxY?4;i3WbifmB%%jACThy zg$A*>i@d!)q*~KaDKq2i0@1-wI%P(C`^oCyo=c}WIz(J9AJkWS|bcRtz`%GCq0EczATa{zrW9V|+e@(bW~m6zPX58Y?$I7Qrv;bQ^6^zcQ1{Ev815P6Wxx$)^CW z9fq%Vj#($`WOJmws5wL-AGNc}?%?TpnHm{W{6~c|cYaDIY?@#Gj{l}mi{tFNc5(0! z3fM@+bDhnC)mVJ&dIW1cF-tdE-LVDFW;U2o_kQ<$K7W?HV_t zH8;2YC(<5J%tTEXW-H$?Ovs-D)Yt<0pF#h-ukp>X4$~RrZeCz4O`~eDs;Q+^s0!d&3)Sa;61-AU znzE_9>P2?jcrfcUd5h|Jmr1#rW?p3VxI9Hm&GKC)7D11`MT|~_>1efkvK^jj4eeAM z#~+?$gQk*QE;C9$HRAujn>vz}4q!UwhSRO~RcTd9mprgQZVMOcW2 zvAXW1MJRQcW3ew=RU5Ns$Dj|&DEo}phW%~G1IwHz4f{op5(MCrZ|~)1ZE#t5$rQ;{?Pwbav%=94+-zoKX9_k z1;pM_%B}5TN16;hR88JX1c2Ml{ms$zp2Bg<^5c!6ac!4p$cL)<+gHjzbe4Qg)yK&M zykIZRnhit6pCA0j*G4`qE#UuX`nyXWdJ^q+GB6gh-NWxO9{f&^gla`S>XkrC<=y4R zGeyrDv)ne3*TPr%_)!kaoOS(`lZUUdUN1VQ!ih>_Qy%-tE38e8q4e0;Lo27vgr^Yx zda<%^m;-Zf!lAPhm1wAXi^_1&#{@QLs>ew#^8$Seo#sjuaT|_~lTF1jq55>KCTEmS zBe0F%ZN!fLAsJq|gY>zzBV9XMn+wx`214`2!Yh80H4l5UO;LpO z_9)8f1>V;WWtk1nz-{SQg_uusGg1V8f9j2AM{57WeNqu2^lq}|ut7XY0f(7Ve>lfot;TLjB z_5Wt4v*#?I*J(8h^z}A)d0*!EGewe*@nd>vYxm#M9x&d*J2nd{62>dmue;EuRQ_n^ z)2d^OG7A$$e`r(GoB4xnu%ymuRU3@Q)+)rsK)0-sl|K~E)*901ENoHNfpg}{Ci^-0 z1KGBo!szv-g5u&_AkVhb=4dWJ!NZOi^cy~P0skA7#7S$g8MHUoU_;y}U zqsb6=kPrn*2ZMTZ z(a%55fVXeG?29@BHm53j@D}p2(DSMyZrklfQJ?m});CH?usZ>xB(8C@VpMO-s$ouo z{_kcGsB+QL9}Z#%aDI8)>C37=X>1Y`i3vY8^JUIIUtb61Y`{QOU>1vrr6`CSm&y7& z$x@jgE%uE2H%}lZ7B?NoX_D70W0(@PSwgylVHpkQz&^1Cau6I>w4%g3n7H=nazBXE z-URbzswqm8`}YhWpnXt`Ou6;SJ4*RMG@j+14ZO`SMly-ouMH?^Q(mPh-Nk-;G<2{b ziH-|Zrhzz*e++K%4u9y4a-8qvty#>sxPLbYG?P*+ zP%feXh!}U+Q`L-EhSnx3GkSVG$`axHWuKm^Y-+T4t0Cd5hD>?TZY}+ACKia0b2;GA z%xX^NfTWQNt!AZr8~J8IcNv7hG|GyAg9MyJclZA#+T^<<0<)d@p;vmpsG4WI%-Zwk z^^1D30bpSVvYF5wFgJI1n>>1~^NQO??T0GdW61Ov9x3Xop6ra?lh6-OfWWI2kM&pt z?ig9LST;LbPwB{YPA^Z7BruD`t=ejJAOPh-9bze<<~Q<&s*V%iy1kZ>GMzv@;5^qc52)QH@)!oVkO{%Vn@r z;swi)x&MB)kN|^lY+VHJOe!B9{!m!$t?1?y9Mjl6v|YJ;I#z!=*$Ym+fC3R~JiXr$ z3uoCot&}MR_N4$s?W+Kh6ckRl`0?WuzvklcmQI8VI*yAD@u_%EXx}F0K;j=dtXF#U z;o1z_RHREiPgqE!-?9)8nGLgrNg14R9*wMl0+#EJ=yCLLQ@|4n&?6$_mBmbUvEk*B z;#R^h*_d^9I$rMk*I$(tL6NqX9s0(MZ2l>ZwejT(-^1uo(Uk8EUJQt9l=QRsEm{!{ zqh$(QH!$dh#p!@s6)do~kCHC&aL*HRCVS;spTWKEf+C5$?ma12>n5V_z^UElv)^zp zyOZS=YrAphCG!WT5;E|N3{FjX!DP$Z$F^pxzPglL1?=_1i^goAQkD9OZuh^GIKEt5 z9Ld;@&r71P6^qq8IE#O9Bx)PxF(%ff1t_ML^{+-hKf-Ya6ghTGR%6ro#kIq$y-zAi zwGMZh_Yx*~_gqRIie;GW51LaC{%5l`^u_GA^g}LaP415Bfwc;pN60D11fG&(3clfP zpXJqA2XR#9azE|aT-|}|=prQ%dv%q0SR31ioF$_v1humoG}(QF1%vch4@kU{VQdMs z&XXf4Zs!LkGzZv%ox_=dfkE5lJiW?Dg8FFIEjHEVvea@y6_FJASWiABsKEs9;>juAs~MT z(Vz|Yht9ha8`+exv#tjHO5snlSq;`ZDjf&BWC$+%<7^Me4D2;Jm&JyxC(^@|jb63* z<8<&c_z4TkeG0wc;McdB^AtlVUHV7) zg*5!(-c-Jt8wFV2?qah>uD+e6i-*sZPY_}VUHfe*xz5NuPn^O^FIrbX6NRi?ONPsb zAX5v8nS~x;d$onoO#J0GWdJwKLUGtjvi7Dx7CV+A50_ItR^>d-vex2+W+qvECL&>R zGoBWwa}NH%kTp{05X|d}`~Qe(0VT*^xVZNWEHf@%zoS`vIgfs1a=*Iw_$v(- z6jWkKQdQH;k7Vx*v=uFS@O*y>@>}f27JN#OKYS+@q>%oa_n~ugp&Frw<5-Z@m)gc)h=_D*498B%AXKE33h9pg0H6djoe^ zHs{yHZVJ7JA|d1{+xzSuuy@R=x+D3^zWY**6nd-TG=hf_(}@9M+vKU5jFSnJh|*(| zyY(FkVsqT?pZ?s`%iS+Rnxu7&g>M5hsdB?Pm?_8;<5hQa?ZKPygQV$CIVO71L&{r%y8n+<-D8?(j~dNgmPyT8GdL9F~@M5Ev=b4O3KM3NQMA%$r-5JFul zuw^IESFoIYpfA6N9rgL;N0Wq?fO${0VniWKWr;}V_R8-}We(9vOp`t(9u=0d521a; z`JiH-l=CoI2s!P>f{b+t`AzxI`JlH<|;e z(5K=62>@9~0m{iX#$er-6y_{GDNn4K^m{8BdMCI{)9|v{nCL92bBqSEZ~06{X6=03 zVg!uQ!pZ;t8KeEvd;HJ2@n67IHFvYiti_t1y z``(4)!Y6WKpR05niwWd%SkS-Wg1?xzx>N3Sd+_q;H5HCfM;_zlL!3xuS2B|P4gOpE zSs07@z@mf9cejNfR6} zJaYN7AKy!a;NK_dfA-K+Gs%PU54rBYvAMrp{D1q|TfsZY!Y-vQbC2!A6#x#*mhZB> zkhokS!Mi~z_)35Dk^~z^GtNEX6)NDludzX_?ajs+H6BmC=^WD;2pR4!l?4q+--v!oK8WSn@bI(Tit!-{EYO*~Vj{(M>Yz804{6FX%`1NQ1W z2Uq-~G|Mj?^dTx~O?N*ZwLW|_o}(B-=fh!b*_vI%XGev@H{9_t+c+cd1^t+77Q4q; zI4Vzl-}~`9*kp_Hg;zEvFhGplG0|TPZ`9l4z|iI%Kzb7{r~vjD471`A9nT6{$Uo>fBA=nM>Z@s z7iX(;KN7AWAJU4qOUuKQYH-IT(IEerbCzC=XZS-7)RvST-T?%;KMrC|{*ER^)Oscp zJ{*~DopF~r^|I_?H_u+t{h%Vn&gcxxMVTbflMZC&^4|9Hu5-*CvIaah@4SH&`wq9O z2aJ}3T4nq=GXck^PJZi+hA2ANc?TKbi;$tSelL}5@f|5;JTO~8EoQI}YUY@R#>c$l^P|!q8LY0!E?z>aJ#QB28Yv zzP7x03)US@i+WqVwc05dLdvR$w150}6R0|-{`}&S9h8=>he?OaF`e+8KV}Zi5@|Wb z4bBt!*`ja*ieo|n^V7`? zCJE(en;?xP?Wmt6;w*uTA##iV@d7|M-ny6m`NJo&^K}Nw#yAexIJgMsFDd zE%yVmR1@}0%*HiiXZp>e_ZM1-T5bIPOS;a5j3P{R@&1s5nU4AIFzrr*gZPoWG{cVGjPl< ziuWm%I;m=2k!x4$Kz5EYkT8KM&3f?AAXUm)O6WaH7!Q+emkCrdUyc00Q_Gf9a zAn3;>rr)XtOU`x@>u*hPR1a1_`n{R+f;2w}_9N(gu<^svz1|JU5Wc!2I7LUhoRH7S z%KQ1{HhvAFLmV~R&bCz;G5t-b0&4ZM`>|(1}WfL1-e~MaV zqoFi4Y8-l8GJu(%)9zL?TA3nHkYd8LQ(}N%?$!P-y>NNWt{fFqz~1M81P}9}0B%Dk%-%efqGg`T(0t zw*P!unz6W!HX0^*CpP9g+T@eb8!RWs9UFWTTM2_^cdId{a}pPqQ@MN|oMMf!w$E%v zTM8k-Gn)^nq5+)`?|K+wxRd)kaeyEO>){z2kL@7SQtB#rqS>fR)+nE`b1t06{hT`) zzgPI|s$9DW2^dX^(45bdo6;41$C}Sxp2x4OOwrSxT%fEqYHsiS_(ZkaitfRVL+2c6 z#bMZFKXNLqMikvu>HNDcb=gcrUHe60w1aP`@e2sqUfmt7rQSLOcHEVlH(+cFW?vsH~Z2@nb1H(jq ztLnPGofNC?U|1$=eFt;JNP~BPX0BGtgYknNF=>CpAn6{Z0nEd|09bf*d5s z4P}_b48ex|Wpoa*Bp;MK;Dvmh0h0ixwSk58+b^d+_E(?O_o0xXJ5wy3GcV?pOX+6R zOR0FwCXcin3N%g&Pp(=zQTJWHJ8cbiN{7+da_E%r4^B&mT+LQHZ?4l(PX5A+$~Uhp zc(1~Yje&r(90Xq5^PO-WN ze*W+Kg&O+~^L;SHEQ9$VKII|!X+*wjxt|Wp9PC^jsdRI4vPLtDtQ1QQcdnSOz)$2u z(kRVNkM7Pj+PGtQYEI7#yB!G??^92BUL*Z^tp~?Z)Cb;IyO9h|bbFcxF|Nf$N{=t6 z`JE5z#fltmCJ48L^_?$QD(aj4W_B(!_{+z{sBO)sF}rA?5bdxU22aiiGE|3{LnYnt zZ#wu2puwCCvkK7=_=k%xjp5&}a4Y|Eg)4zSJ9~!yNbL5!A~!-VG1=Zp|5J zXX8ENw>ODwRt+Tpl@CY}c`P$l45&PxB)bgor;|DuQ}LG zl?xv3v=~@hP|h7D71UUQrtCvfoDb@5N|>DI2FrGVAh_(gk|Cn;3CNk5PuB}&PlyjhR2+Hw*p?-e@z#raPC6$*bQntD{8!2<>Oa%BRqf^md z`J=BJs_7pP($g#YARAOT=mJz_Nz?rtzu)@>v&au*c)QMyr=W8_F8MhiiF%IMo%w@Q zpkfH8{YJVs_$==YzbNHmMxOS;3Mm9aW&j^a2m;)i6cryvh;RR?7zqHN{=O(ycPLvYpYf`Uz_2-$>(KtRh!dTe7J7y=r zT&%R>!nrKO16gWy%`;3mYouuPj&JPxxEEL0Zp~?@Y_DxXIOE5ZMNOgc4dRq0kt=(; zcicEl&tu16r_)8UrN5Of$bfs~#@j(V`zUzv>&T)W0Y72;1n zH~;Z$0&eLv{fFa5GlkA)2Z`f3d*+i~Yqjt5#viaSObd{y~Ou?1PjA-hWyH_x{IgxS?Hm5}%z66Bntz z{v+yVS1SV>So%R&!edI2kwq2NaJe`U8boJUV;tC)^<-V45Ys`HiiEyjisCycq09w~ zS}rbX2nu)h$DoW<9OSm!+clY>DaOja6G6+h46=eW`AWV#|KnHVj;p3SXD z)Od%+r2nFWvFz?|0<*=eod~O1j@lV^lBQQ^COyZ|ROtM<_x8<14I$=dV772LvFtqw zBA?kHdU{;kC%Bp=E;lFG&lu?g&+&lQXD72Y<0>0V2amYzI8sb^ljf4tM>&-sNbrlE4|DXRJ2cpPgy$%S-f;);-biP7O`Z& zDWgy1^=XfPTymS~I-~Cl_wMN`?AGs^OjL>~?!s(J^Jhx?)@JIgqX|Y1yNkbIM%mb| z^4Q;6z9)<+5GJkLDTm)J4P^L$`{<5egXfo5_3YXmE9Rq7rwDC^y{lj8vc>}XxC=P8 zP>wane64LFMe@^AgO8umF0avUv!XyIkSus6qwQ?QUnx$yqFXN2oUMCtq$V`M?rQ3; zU<4%2Z)Q-v7iu7xa`h2)`O>tx{z1hG4;H~~$p&JszrD=oNHpvb7!p%2H#QimGz5vi z{UUs~&lleb7pjs?w5^#fs<1A1#Eose;C~sMr=~n^rn{OA3jW}Yq=|BhE~FPjb5UM> zOSOx~ac`3VUFsTw9BpW=+sr`nMhmO{sJCByq{vCWV@-yvfk58Qx4&?(z1F#f9T|O) z;}5bI@0X#!Ivk>NF82z(?&*V+5A>BV@KJfT8Od?So_#k*w0RLyPQvat9BWj7L7T+< zghn;5xtAIV54e=ZeKyp};O&K}t-Hn6J!JUGen5^$`Ns(f6i8UF8fld!YueEw7_^el zxnnBXL!m`erq{bMsc+U}@Jue(!v6dzhiOmr#Jdb_@?4#|z~Fcx8KH6;hTANJUC~tv znHp;+BxO!D`2iEGYpDa`W?=2YyaM^tpGT^;1gcf~DlAL1m_g?Bl!Tel||j*>iU< zIXl1%!5pC_Qpe{77t5(_EcJ)qX=SJSQUz2&+9VsI>--ZsUq>2mMo$gwh?@ku%biC) zO=QdHZjVRRj}epzy^Ei^Zx}52Gad4XqSAnb=@SdUJAU0PQmEX$s8*Lvc_7wO>473knnR*tU?F7)x;6hY#I z%5xa|PPgdo&aZ3cQ7>BIQyeM(+7zGv{?bl%N6Uvx9oKdkXjZ*zn!+sSo8DGiTf4iH zWEMC2f^IeBiYwDzHNwSzZ9Z~u^AT-176(ldubO-Q;Nv0MreBvt>_daI)ePROu6-M5 zfBcom5E31%AbM%h4yk+qDu3a*S+R+C{tcL_`-dV@3{|cT`_o&}z($52z7hC%`w>#M zBom9fuwl{OW>^pQf7H?VYhQ9EBt*#Q)yF0h?Do#_pJ*)WwhxHa*N;b4xW(Yaw*(o!-j?{~S4e!_gAB%Ijz{m$*JL_JQJ{}b z%T|#3*2fu4Dznt}y1VtiGJ5o?#LWtVqHw@awp1nUOdaXC@TnT!sE1-b(GXV_2R;G?(pC&0gk)C@3OwjE+R9Q9(=jCiSlR=EwbyCCd z8E47885$zT19hBK{`oOojiu2%ItCEo7AqAMPS!=TnERAGQ)5;3NVG?hdzf2F8Pe3rmUU*I(n`hunKq83~V-MUL%r`;`$iqz{B>#OVRAE&IjzB^zaVT#yPul zVx{7vs+{;!DoynOtuFBy95SNS;B&KFsJc;Cj1rq#jEt?Alw8K^s?`WPo4BIT0$wde0-CHL4tV z1P!V8(|t}6dNasZHmJ0K^8UTl3;o_?R|^%fce|+Cs+R?%8)q!pW*wLHE*(UqV<2uN zX!1ozf%S2Ycb)wZX_Sb^jpr+Q&kHCRP*vtm>4kAnNRSGD6mj193Kc7!B5P%x<-@s1V`l<4T32q-{q}5ANw%%6*G$ zjOM5o?qsXK<`7fX0ppb3I2u+?uHC?o7VBtP8tbGL~@AKpAYnf zDgLx#o_bTc)y=-K{d4vGU%T9|Vc_d$2R|;vuxtl46XK}hrgMq$RBHCYGP@JK z+W`{}o?$fc$>G?owmX!50>2uP2MFEE^*oSSI7&k|ysM+dFmkqGVIhRv5fUL;837GwQMab=xhi|(W+hTWIn?jG{+SrgCg zG+$ED@bxHrgx=#T_Du_;gj2CeT%=FBh+GAY(@u!JY20`n%W(HX{%W;g*;wbv z?X`?`<~-nBRplV5Rf@=aJ`urK>G+dL?6(d$;QUQP*17Qw&X9(}()zQ(e4}uffK|qk zjjD$H57w^r)~OXg&JfeHww+SV%4F0|urzwAwxX0h%V&D9A|lw`E&B3>vxL_Iq*7Ip z%3jinO4z)Nz{5%@3KCvQ@$o5zgRaaVRrn*7-RI^mt9#_6K}RrYKu+f;OptHmoe z+pMXs2M6}0ldq;Zp4qJ~9-cbxBgmv?H-eD&WdXIDrR-rf`LefxdIyeJQTgG3$nrJ_ z*xLfs59h054%N4#5llbM{cst}@^^!YQ^Og9#1aYBn;>7`d=@IyJYgXj0*!@2@o&@%tvGetW_`(r3^++&5q-ANqy) zj@Gg~(Tt^Ij*Vd8NSJDjW2j0~6)IBon?f~Y-(k%`)no#gRyVthTW8C%>BV3_%{sdq z^R`uf#?hSo@TcOzpa%TP7t6l3*BU*|QOX3-(&o)s2S}{@Y?@-H4op5)Y7e3+>9#k2 zJ0wI7e>G5aDG{hsjFut3W9t&6ODrN*_X&vzi;lGN-*f@UoVVK@SD%j5Rbl49CzL;G zRRWxdr|wNi)I6E<1OmuQD}%7x0?Cu~ltR&dGkTz3T_MD6fkO!+?JQr-cv8cQaLi+D?PhnTaOAf?8jwE}=jv4NH zGDK{6&TUkF8d1tElCjv9lZ^>DPiRzPqCK`{3ZF3kVH?Rdo4N%mmECDSx{W{og^6eN zdDyY~`q=Q8!BksJ?bupSDmc=%z36vDM%rG6innr<*?HxI*&!>VMbiQ!xK!BrtRzVy zl0`Nh1u|csbER}F*b$|7xfqHv-I%Pc{M zCP{MZ#P=tVxf%c40=DcA{=47=)`<%7{uDR057#gDeRXDj6^S&a1$nyQo4a_TzqrZ` z+k;SF<W`;ywVo-*BhsQmAB2PAOXf_w{#X;@<-*UYDmo#%#W6ZnxrdYpJI|ZpY9S9R!78>kc)2RylWGrEg}IT$K3tXFy<6=%O8#PtgjBrUI(5>b z^7&+R_He5+=O*nduj&MuCn9<5x+j}N9rbmNg*N`loRmb@Gi&yHY8=avHpeEH28k;X z{0@=*%*3ev5vd|XMa!Bo`Ck`wC@WTR6D7NyIQmzr?VQ+LHJ@Ag`NK36}_S9wy@aqQ@T*Q3pcYJw)!g$TUce!4ti7h#DYyv zM~2qE&E$&uA-XM`Gcwls?e0KKpr>sQYgE-BxkJ^)0p6?t)gyMo#9_`oUYgNoY$Hxt zOWG_Id`}{zv`~mj*vW+@UmZ!Fb82;2U1i0FUZ3)awQJdqoy`?|42ka0^E4uE$F40f z`Q$Vc>egXZCc2p5MY9<=Ft)q*yi-0+PYfy%T2Sae{i!r5k3C{;>@Z~R_X^B7ziIm? z*5(kXXGrZE4OOY^O25veY}m;F_vO$%ZfyScdJskHA_#oV+X!^ z#gy7!75B(o8YOP+9WlJf|5&Glhp8aEt!%_!RR0uH>2m|m2BFXDcN51r!26P@#-g5n z{|;nxeuw>ql;X1I+Dr5-KGFIdUr9}Ar4=U)MP^ZU!k2ofY4RptH_*b>^gECb1|2qn z?i!2t923bZk|92Kh;4NzlA8A-fPC0L@;|3O)+yOha$asw8kEMf@+2@cPF0vly@fRt0{LNAuqo?PrEh5)5yv>{;S@trtgxEH3*V_T{}95&Fgc zN&Of7{BVQuf{Z|9!V`vKJI^EsIfJ8!A<6i}`k(Lv6@M{7p0QM+RTqcSUft!{^*%)T zLSNO#5z@{6d0ie4?i;E4Zcj!cBXI$6^e+L(k@z$MGv9;}U@f4~C$7zDdi4AS*PXAO zuejW9-4(?`V%<8q6-}Q`L^=6np%dhX#tPe6vi7_N4av{=&E* z(Fp?~=emjnkvOe{Set`&L@JnI-K~+RsftTXezpBFp47d?-}9ILK(&NsA2E`=DbSbA z`{FcW@&Qd}w?SBpRo@09&XDTzkeFF#a@=vW6#H0L?Z}J4y;3^#3`VPzUr?`bYeZcC z#wPz|u7-m4SP^HDr^q3gZOA4KTZs_sPQE@|NT-&-;Hi{^KYFt5R`S zvZ$}uaIR3x)a|>cOu$46y#_>tPX<(p+lEZ9i*a?X9J{JdoRlph9H48AnQG=MVjq}H zN8EFh(|CpWwiD2=Jd6`CP<0s-NnUPFB+MFIt!2!qze~F0<}ksNm^Ca zg~{R?T0VRl!An^iARB#48k4rL_LJk=<-m1>JvvDt{oBPzS6ez&O+K zr)w8Y(v)~zgRR#iY+GNXN5rXjLAUKeJLCFWeFL4AA9zm z9)U0t-#~)l_;(D-RTzod)73zfohA0V#lG}(K#$6TzUT`>Ji^)56T^I>>j)Ft{=W7r z-asuSji~9m2T+HYhTo}P;c9Q-!fjckpYUTi`WAeX`9kgu#Z|e?Ox=rpuh99lQ2Z~0 zVw~FyU)!s#ltmqLn8dbo#wt5fJTDNs$#HyV`dT5aGz)vv6Wq*4~ z6Nu6=yobC=8rM8M;ux%sJ7zg4p`ZFozHoO~mOJvKGw!gmlh*uYtdvz{NBTI~#!yvg za7vB7vM88EQw+@U^!Ofv3YOX7&fsRmf@JA&Y+1JRdW$2`lV5y zN+h@y?yOGz=Y-rhVA|h=XUpaJk*|0*w|PvhrTj=;=v$ZMt5=$P0^o2PQ-e|NNqOh; z5NAk(629_=R>nBww0G^t>Ni%1q^IjO^l6cK=j{Hvs}^lk-3VA?#mH(7M?X2HIV|Qzr8R3HIg~+AS4Yq?MrEdR4G}hF_m(c9>{G=Ed5WDypb!=k{~CZC84k z;wiUI=jx?!*QB=XW1e+rg_lRClQg-lY|T_52~dSGr~MNlVTvEBCE{R3&-H29;3>(G zdji1Cvm%X4R9l^;>nNT4*k|7@dxQjvA4)!93-esx^dulLk8t^@uSN$`1W9~LJ@gV% zYJ$Xlecg+8J=3igul!jrRr#~eIxabh2O0Z!?B?G+UOPVk;q3DYbsxKX5n~hi;a^ht zFtcyXm(j2L)3)fT5bWZ+$A$Zb!qPl-Tf9TBf;$ISC{)&_;ehD zzlX+luuv~8Qa}=}Yp~(6KiUhe+X&yPx9I(qoqm0M_6Us|ZcaAW2woc%e!u(9Dxe~3 zrH>NqpNxv@T7QW6;q1itL3<3E)Wo9II8mH2Z+;M6dc)zQy^odDW|xqI85=*PHqiH0 zsO^__09K*;&9}jsSW3F-B1%k^AEq6(G&>6gMV3pi*pi7jb98g6de_sdJdPV0#y4nPZ!v+gY2_oMQP$dh0RRK-0r< z+uH2sji(_{(K%f_{G%+e5f1FK3gd{(46LI=lF+1AKJVvHaGbn*YZALF*R$qH3cz0~3T%hI=<6t{7C2 zgC~Qvev_~=VjFFe!y51Dxq)C`iMwZ{s7a-u_ul%!)nAq268jjuk0RUuvROH0S6%X zSSky9lr64LQIO>tJ7jMp&~^bW#Y75(tr_vyE(v7v2|6QY82QU#p}D_rKv4U9ZzPWb zIvB}saQ6MF4@=pYdk4P1ZK*SP6SUT(H(H~=U>}>x?_h_zR6CU>^j@F3rdUc^(!JzL=_A0?QlV2q=UhF;*(f_m+tOso&v$4jfsnJj3|vni|RyYD6X zm<(9s*?POt4`EgrHj_cR zwq;;6bFWsxqqmXBg%%!(m&g{CwY48DrTJggvDIRD85P75=X=VQ8x_jDOjC&26k(~o zwSA8tgEx_n+cszPI>2HTEl&1~ZDT?jhv_Om)nkYc_i0E%J%;US13o~pS1*Q`2EKdn zyX%;5ODv%(stGqh-^tZQ3Mp5Wj`HVxskd}7~u36o?v?!hffuUm!G zAG@4;%rXJ3;c-27NyO#k^fj`TvFxyoC>*%e@>^)fZW^gM5Sjq;uw@xZj~-8OmDCH*QxGBfuzHqb@bB4PDi{`YdLz!N{#*jbPM+X zYu(Q@B1QDgH^22r^p)avy<<%FiH=ZFm~iP0Vr60_Qg}kClbHC5{Y>d7JB}37?$;j@ z=RO5!`1Nccx#J*=x9G(F4dzY%fZen2p>`Pn;jkcX*6skdQ?AIOW?g!!4ZKyqnF{e> zS9sUVXb_S-SX9#ye=6j7ExLogp>GuR)rv~8kWwVu1|Ucfcr+&k#AlFb!|*=v;k z$7yR__|t-%7Zm{RnQi3*Hox^vhhPDsjhZ{}gDRfVe`-5GPvV%=VztKU^m4i8Gc-c< zS*gOXf55sTtqYpKuB_F^*)Qr@>kN|96oW7j)}*Z~Ls8?U)U11y^aROnizE}-k=Hx< zj39$vXe=;xumgEylKRW=X(kIIERwH_;#Y6k;1kI-1E-;n5zX(cqu-X1gG-A7 z`jgia`f~H%CA6PCzqXu{*_m(hW7evX-YQw7^(%+d8bm(GI`7FwKTb$JAm}8blkeyI z=2@-HQv|oNdR=Ze42r!)FqEj@?gdlaJlzo8DJvcr8$0G4i0=e;x)@C9vL2{U&!3dV zSjUAV&d|E||J3u1Gobyu7bM%qip3Z$GT$7Yo@{|Zc@2(M25%vyQ7+!PR9&(DdwJ%o z7ZX(@qW7QRy|fyo_PMK~UX)vV_iZ1<-aP0JrPx8SjM66mV17QBUVJfpn6+Kf$|;`5 zHV4IWOc$Ke`=Wsh`z15`u2IY-q+Z7*j6}#H_1Oc>Hs5jez#)#&itmdt&7FbMxL1B= z`u;~hyym4f^vLhR)~-({@ZQ2)b`-|!!SEpkx!AY{VBa-)+jl3vt(YTd9C zEZv~FQN|eYcUh+W6&ZKtA_RHoVpvtJX;@}c+J&=TI$x=A&*O+RvRWMOY>o`^15&tu zMeV36lWbKFnA?u==&juC?b=q>{E&g12oinVEUR`()%N!6vK+G}v zNw2sSg}xZ0$WLT6P#6VWl40H$^?H)g%`@|1R8v)mlT|C3d%~kY?pyhIr&<0&{?H21 zRQIzNn!ua_Ur`fa3MGP!m+lFv93j}B=czN=bN4HIpC&(4kCdB#L&NGyw; z2UySGFD%FSkY)}#WU>)#i(Xi03Lez1)We8K zSskxZRum&)3KvZo)NR(oXz~0k*i$q1cki4{?xO&LsQjUS9AcFXYH3LoXmRWrH=Z`Kn zNVv?6P{?8RjGnYTici?gComtFN)5LEI5jnQ9UN_tY`-dcQUgse(m@nI*pyff_IAnr zKEKmIJ%nPNUbE=4?SaMWvjtyY$!4PX1TNS_c4TL(+@`J{H%9g zVQw~Nx*yhVx4cdjrpG-MW@Mxy)8ms9_G)gr{Mjm2CkETU+m9e{y45|AqN(yK@n$_f z+;8JK7=_&hHzkd=`i zu6rynf}9(;B}IWy;uD^`3+DkEHYK*AYehP= z+J}OF!&tAFf}O_TF=x+uM0kb@CJ5(-B-CvbQ|E?*?(E(P&MO=RBf&&-26h{fJ0FlB z9Vj8UD3GTLaL(y2!9;}&Am|KvA1}xbXDyu0@bP?m1K62tXfe&n{d1_Y-Iu%V_~TnF znpTT@oONze8IujbRU?pQ*JR1h4y|rLeAud2J&*E)dgeLb>=z$k58yNVY6T)gRU(c;F{H(4RVVGPz_$wEz z&5`H`vj~|+6$a{VbFB{D{mdif*vyGhW?BCmqnvc%Q}As zwrxwVmS^S5F4MheKdgMmD*c}-kQD+=;#4Im;SsB&V>iq~&DyXq3TV8BH~f5dEp0&m zqjYIPd zoMJ)#ig6Al%&((wNSQ9G@&$JCq~!w$^+w*qS`?Hj9aFjwVfVV;M?F*a^1VNo*zd57 zfQ>dn6KafcxbYfo+HVYy4g9^175iVEz3(EDiZ=AMb3D$LIFxI0NXTPCqi;u>(H&6h$JoB{5+FE?1wSXizX>UaNi zN@9SM0tl~Cu;b?LerV+a>C-*cPf0U*$5R^$Jzg3|^QKtc!iL(tQNl&{$2 zZSqNV+OL~|>hRWD?||Y_lUlmIeFcT# z5fhTJHKvhM5}Q$g#I8)P;EF<6;f3OmdXA{(=NAoji69jHZ4e8DQ;{TpeQE&bec2sg z>)8k6b0yb$Xb&>+32}-gBlS#5xI4?nJ0tsnqS@llB$^aE`=9^e8^HGSGt8*xW$4~o z!RE%0BQ14zg0HO4W#9?mJQk6A;!oJ__dc+l;+IHYmgD{c_o;)YB^PA=b?2q=y6Z|8 z|5{hjbqyl?@ioEIS~9k6EFm=1MaOO2$Q_1F`aPM*>pM}NMl9;X@ue1z1(qonM?CZL zs3t5k|I;x+<93?Qz`26r7}o0g*T4fbe0&nhD&vj>?AFVo*w3Dw)y{Tb3{r+P>>IgD z2EG+23@8azNN8Z18d$&7WlN_YZ8qzra63EL-ALtGj_LoA&o_H&@cT5zr6IS*VqSGucfYl@{#yKK{@fjws%QCLAAu)2OC`Rl8X)*swiwOVw+P-=+8<~ zb*m7V(INN!VIKEbv3Pay$)pL27B@Fh$A*4?$MN@^`&sfEU}7&sAzs=26MOBqK-Gw6 z@rRDNh=UdeW#O!9!ILe^R}a%KmsJCo#w1~N;TKrr#}0MyE^fQAYWW<;uPS=R&U@2p zu||Xxx_<-!t_yoZ!jL-qMLxXE+R&ef`0+x*mxMGffb^{G@!kenK12e7`|hrsUmAN^ zHR)*j)7|}t*qc$amXsZt+SSbTHo$3v9#D*AnaKukr)ZgK)6Cp6MsA`Z9})l3yt*(C zKoS=#)F>|5^>Y)S3WH-MkUvl9(&a*ZiB+#j_9c>h+ly_goM1KecS_N6g2uB~Om;Wl zRISC72?6S&tmG#_mKrhl=|D^I+oUqWNYxmSDVV~RKj!(?Ex=XS)r-^s{^(BjSvjZ= z#ilc8{hY0_AE&r>w;Vo13{pg&3QWh`mJ7`4ybCQ&ATA9dDzQH(&@q6N&-=slf3}EY zVb3*xKWN5U?W@e)loc|5Q!kgntWzgTi})%~q+H8)bp& zH#xoPkLo4!`>9onyAz+iY~o^xAqF(d6kCVB`HoG;tXlqDTY@K{67J59OWsl|ORKA) zFVEkArC~Yx74G?#BiVu#Z|cnaJ{$_g&5L8Bdx2gA0DGRkNr%j;I3LQ!4+J5TwnNO9 zOyVyZ-qYB}_nvHzp}^P}%rb~p-r(}uyw#iSy%Mv3n&bn%iDQ*dC#?s8Y_)+$jw_W% zU$GrmhL5NT5FU?=DPEH}M5o&VDLnv}qkLo(5Jv%^#N^#D5-!4`@1eZcRHX+cqP2PSNKBB_;h4wb_p=-OQWs zk64s>iefAy7QxaC7RvneirCZqW6f?{TKSMKYTRjvMv*rKx~-QDxcY(IWAdgZt2j^x%Z?e}DrR{HQARAR6RYDo{^~Ef!B&;BJ+7T( zu=#~R?(+A-R=e<5ZV^(9qITid40~mN@bK_sp$T1fIZmXD9oznu(2fRZHd~_>2Ju) zlFR)c@{`80t2+-6f{j2Ns?^QV{>SlOa&CzA|OQW}P#S5NVLVZ*W2WnT%2Q zM8CUt&_DyRa;wV&My&=;V+K4Xe&{&rm_rXct&@cZ&$r-aGR(bK3plb^)Q^VMG3){` zsVMskcicDLm$(dHytv`%Ip5~y-)QAp9;w^@kotwdK5i}!zcalo>3%s(kI4qU{3htf z4}?Y(@xlJe;$`B@-PrbQ|I*V}L8l#dukOmfWX@M>Tz)X0v!0|D5WaVcLke282&YI{ zIcr6sE=DY))@?~>1Fu3B#6xxV9g5oP>1=amhO(}9e2a8Uz7z3cUz^KZKYIY2)ctOF zSSYpnhi~oJUu09}h1t}Zv<4!D8xfa9+`vWHnaJw6(bsMk%^ZM-cDK^-p*Ac1Li@a) z?JRotDKUl*$dS@HQ=FXtdmCiF&yQbrrZeICl^^%sHi=SaS_;`|S48UpnNkqoE*jJ6 zFGXr^7fH1dMFfF6)_Fy*CN2w>s%pmy11oP?1d+J#OjiUY5!sA`SPJD{hBzs)rQNEA z+KspZl_DADS%IHsuFxqeO%I6aHPXb9xgH=q!v*QhV@wBFG8Aw@PCGC=xltI#*km@~ zVo!=0>ttP{Z4L#Jt@Op;9_&+>>eR)YC)Y{8|6Guho7Y#?atki9M`wtRMp)e;)5=JC zB6COM24uCs#>A!bh{fiMA;cd}F!b_3VG3j|I}o6!Ej{$QaniVuGbRsGq*1CVsu90W zMD{|fR2lvH=q}P!h5*Yb;x#HI{U@EWci-ac1bC`eLQP)??SpG@T)(DP;C>}+{FI$2 zj)vnuZavrcj{uz$MX$H4#+#+<%A6oJvY2saeWh1jDVHIq+IH5vO%T?EOKJu&n>%{aZ~zsp~i zni0M$&i6pzKeA~2bLS%T>8W?jgMe|mY*6p@GE%pb@m|9bEa1HEw$*jLbiEJ+NOpSIj7X+l8-;TBqC*hX2vVlA6`~ygDbB8SF#m}|Ga1+E8;b3| z;}MM3kzeU1#)4-JPdv7q&#%k4lv>G8EIzaY)A@Mqs+D?kC_fW1S7YPc?8qLC0LVpY zAJG>EK~9O}whT$HQKC$g#5&Xyo`FFMS+5XNW2|~MKgPLp^y5vX98{+hvCX~U);26 zjH;TCCl6y1W8c&iYs8$aQgOP>YTE?ZCe#j@jfT`zn%nsL2civZw(v`*&b>41+za5m zE5AOuih6u9%LD1#viilTT9}($6e`{!Lv#5YC3E@_-P!{K3{JiB=-U@GZ?~AW5+A0Hd=UVjBaw@zY z?lfGsW(GZ~gyDAC!bit}W#1n*K>SZ{(?xoO6G8xLF&*!U0|$P92IC-~dY&8DhMN9E zdEtloI}voxn*JSHO%(=%Mu1v3_A|tVYmH1j!kj~yH=x!aOB6@Y?K={`E&*bl>A-Npnx}t71io8D{V3=bh-vba zN>{Hg?7kCqi=$q!;)6hrat(qLzB9d~^`Y!ow!|W|EPfij2A(dg52+ zDHGH9u2?#ta+UMzD9&L?HXSG|7yl*2lh#}Yf&{T)nL2(RQaxWXXzb;S{-SwwD-Amq*(!rjzmeH z=wLY>xOI(0hi0>^XP}j17;FVaTpPhW=|_WbkE1}~Ibe?@*^PtT%7&rT-=mZvK%n~# zTOYSWCr0fcy3U3nboeoNJ=0W}2V(Nsr2`#1gz>u%uAd3Ykc z7hO@&yr1`x4@bsnd3JiO_7D~8NZ3c6M|e~f&02%oDBU$=I>BkfkfQWvD*(DAG97QH zqzr)cWB}#~<}}1Lu)IGp`9D_4Tkx1>QLZx*zqUZi?Tj=g<#A9RJoHT? z)Dx0Xw~2@g*D=}LkX64*=HD`J`+0SxP$zFNLrrTh5(VPNGRX!w#SeCnR0QC2 z@A;J}c5VdNJEtskWJLrUeFNghxNmK2%)+>3mMpJCkX~3ouSMjeKSPHgzh5K?>te~i z$i5EEienf$xz{40FmUNJO12kcBGOMb(eYA8o(nQ}WCqzACC<}eLGfCJrGFLa9D`+@ z9F-tv_XC}f92z>0?b$e-XHhYaAIrFY>TCR{v#|+iz4)L9?2Mxx`12O*FB?x!we7e| zQ?c(X6&K4C5WmXzl7|hC8g1#_yf%$z@c^tX0L-)b(G0`B;f{PBZ5R5SI2Y@t&b2W|L3W zoT?F2XnVJZB#m0!6Q0zD>9W^>f1dq=CYc>A1lxyM>`EK2PPE+1-6zQJTe)wA<24_A z6vF^R6#E`8hmDub8w9U+*DOvGay$~322~RfTe*-~QnMm}E`lRm5Lcd?&In;^)(N9t z;U1KCErY_2l8p51$c!SE^+8%7wxp>+(dD!&Z$wN4hrAsY{gfJOuZL39)czz9Em%?h zkub1Y3$x%6rY|wpSv?Sw*b+NJ-K(9lmT3@RFtaYEyERp0BUr$N*&D3ee4K*mh=LzU zy{s*}eJBAZnc@7XdfQ75aA1FVDh?2+7C#T+7SmL+%@J+kSN>&;zIei`hmQ!E_QO0M zdl0$$GO6>b*?s-xJ}hcvg;P1tF=}t2YWivQm)sAtx$_eFdAU1`6_12W>Wlp0TAkqI zua!6EOZ3Q4*T5L=p@Z{T0AkT=iP?TS z`c)ZVY3;zSNBiXB&b-`z9sTjGF2DXk&d}fPwttgXm|&vbfF^7wcF28y8l?{6Wwtlh zK1Wz)1BlTt_QX?DKnTGf#AL5MMY=Qm@lc{12d|7Sbb&KbMHhz*ynY(zN~={&0bA<= zYF0}Usbapf&s-3%6--fld-w1C+&69=)1_a>6Vjbx2M;5N-LY!|MFJ|`D2I}3CitO{v=wK3W8yc>&uPq&veC>wkXR=aJK=}3Ieg7n5}eCR!}bo zLO1B5i`5K-x6Ffuuc#<`eYnwny&|$gD8+1xQ_P9N>_j8EZ)~YR4wXYOr*?Of3#Z~B z)G{>RtMA)e=ALuU3*N_M;g}dw77#s?d(tVI9r+`W;=(dJBD6Lvfbe)lHlrF*qcn!^ z)a?tgA-tg+Q8M&{;>=e&ZHqxrDqr=P5qvuo_d@`3noe^b@uA5B%vW4SqAW6yQ)+HR z1>Pvr9ICT>{@1^sF$4Vmtc*VQsc*BZ^iF>z-SvzPx`CykCgnewUH^_Us~ah~Ky#Np=R` zc8vHxt~$RF zm}KT0Nh5A|MkKeoc!+v$q&N)r`*5RJ;h!Suy$vF<-=aM-=4c~LxaOmnj^LO)2UhH$)(qa zR8cM%$FJQJ@8>_Q2uCT+y-y-XGSjb>PO?C~t8;}(FnlK*FU2+c_3Q`^QH6W8;s9de zZ=F*8ZbZBv@E0Jg=a0~xe1n4@tI7ktfDzFdVwjH>lEv9kShUQH=t?NR%$8KL)5dS! z6+c3+f~E$e0gjCH^<0*_SAG{?ep2J#P@%L~Crx%4sAKV7P``quR3r5-jEkAuIY|BE z-$$OF|A{0PF?kmepIF05w7p~scTxmLApn%qxzb$qh+>GfY=Bcn`00t(h!A|kLb z^zhd^SJHnHK>Rl|rZ|XYS_*7c?6!8r;pUjxXl(()vCY*8 zqL}uTu9e6bQ+A}LxxCtS&tsjfd`Q2pt@V)^wA6iVIS{gE7>Q&ih;%TfP;>Jo0S@DG zd=~ePuaHP@YbWk><9NAVk!qp#-8(4*SSC#TEbvEejMasmZz2|5cnlFG?@>OBOdY#a}$dkf9V+zf|O@yZ`06Jvd!HM-z#Nd;xNK~K8 zecBb@`70v_a?^QMRLJBHxy#qU!VH81*27=R7Jjc>ifi^t-b)dBYQoNd_C#24ATA-J z(hO{oyvFCCP4y;8)`);!tFhXDsw5RPf*Rcm~ij)+&8tB$qbJi9GZWnduEm8`Xjj2q4Nj_ZDp zO#S-TA^z_t{;v}|ipO{T4@z>72OhxX-(SwRk$(G?zJjqs!!vZ*^6$}FC2en z^lU~<%3#Bs{CWkG9NWa+2F1#^l2DtB1>SG0qV#^xPz8(|89e}@Me^ZqouvaD+7r07 z&y9cKk>c#pTcAT(yrZ1GF`UAtWxh*oI+VAFd4+MaKM}9SP49@)D=f?&6R->7V$DDdDG13~ zhA@N@%{NNd@1qhyZLq2b*MmL))k2BAY(ve^;>nZ&+dw6GXoNYhr8W9{!;IGQBGu3n zw{Xy9Q`q%6ox$zrQhzi|SyYa7j`|QHCMJf_C-(`MhUR^zQ=F}qm+iJ60Ft0qJVjC3 z1u@lKefL_{Huopt^Op<^9wuPBTa4K@t05}q-=$de;gFAWXei|IZ zy5IZ*zVe^%&eoE0C55V4LJGCov_mJl_vvK-zl<*2uOfo5`K1h&w8@lGB>-H{UP3F` z&wUylio)UMkyJPrBjdzQSSKpFV~Hk4&@0gbDe~6ueq<}RiBG{N;v+B;`d6631=NAX zCdunl)(VDxp-@Fm$hx?Oq0z|`0e<}NtN6Zt0rt=T~UTGq=r^J^V@`5_oY4=AgT15PqnJrLvu*|9|1#R{@r@AHW@)4}vcsZn z_h}$+mVZ5g>MW*$x+KU$Hk|)X%lA#5IJ# z*R-2D)n@_NrD{5iE`meTDEHKm5c8H*Dm8T;sC_Jr!0HIo|Kk=n{A<;pKjsbJxYY(V!@r0?IywWqyElXpO`UE%bxP+1{)tqg%${%$fUt4AbLM> z?JEko0}}uG-0Q~0BXcEsIM)CrBXzPY4z+1Lk|66AhseMcdnI(?1JGESpGFETZJ--= zwht(~8;$>=t9h{8{f3gAd5&*9)(6Yjh1 zc`%Q+Z2_7_A)<-=_eZSTC+2Ez6s)Pwt?Pg1bBpoPQRx<$GVD0~X&Gyk zl4TAK!jk#-3HUf;RepZwWUKasC7ZtJp{C~urw{uFy-$wy)HoY4#$w4XJVWu>a z_YHSlq7@ezU!2Wy_c;hO+sDDd;Y7?V2L6Lrf_Z`0$W0&O*!9qw#~ zCKu_Gi~X2tt57n>@4n4Pj@g+0XtKe6vvmTCdS)82c8q>XdB$MuLIM`ESli!1%r7XY zR?kThiCxW9G`kmNq3I+D{NCaq)yViL#5)@HH)3N%7t(8aA7kp>#;KeG)MB48=61_% z&1dzu_&Is1d1k(R=B0?AXIc)FSC~2^wWdPFAD3y}8!I9X_tjTdZ>_k5M8u zyR9v4<*QOw-qz@GTc%}T2)K0r@S$L$B$p}q{Ej&Puq|#NLB^e-@=tpN zK-Lc@oG(Xk;DtcKAKdZu*gFesx4C-q$KWTqa)w*x$_St5(gPoUG;Wf9xa*UwG~Onh zC27+~al8}ZOx!=<-+xwqnU>LN64>5Wk-n=hC7l&v3{Z_e>4?5r^%7Ylbm^P&(xLfu zh{3Z+bxwE_t<6v!GBGkU*_mZ(fDoSjS)o;XFbV6Z_Tt;~d*Yj;Ds4GJdGfh#d$P5$ z{NcdBCMNc5??tDyMeq`@Cx(2kb3>zYl_fcYMqYDw{$4bm$J8J979_d}E<>Cb1=CG1 z0V2`ml(7`;7$5FoWVXPm^`h>H9(p|CO%h>Au`xqCkOsAF7Mpc_GdHc++b>oVZ_q^T zi@RiF4x`V{1WFgjp`VSf>wIIw>9>c>BB2KdGrxqUFU9rkaIzpRUoi_c=(J%t@-an9 zljmNV61CQ|MSL!dk98%VJb5Bi$*a1Y3=GT95q_(py#2i@;5e=OuH%+n9M<>y^0Tsi z2(wn0NAZH8)Py^`imIduC!I5&&`6pFVVC-tzB z(G3U>-IGDiJ8W|08U|q#)j4QM+-J<`Rz{3*I?f4s(}F*{UeGv-C|>Lq@cvy3_-H@j z{rA29Kc~q5z~Ar48)F84avw7WJjoG>(O+q(;K%Yzlr4%06^FQT#ExX5?K~!zMJTR` zfvjE;BT3G}a@Amm% z1icVd$S82I0umEjqEMw}!3>9eC6``V5XyPo@sjOPh0c)?GY`h;dO!!X^oBiq_*@Fo z8)^{#wb7rQpDWfCd3x?)cISKic?;sXpn?=BX?(fVMt z*vBwvL3g<(YjW$YOiZnfK()#{%89QAZXYAmO5e&w%rhiIujDV7Qw|G}y$vQkZ?ztN z)4ff=u~LX`d}!*QUdo;?D|5en=N0$dD&>W|1zQbki}H5jonH%Eu!{6-jY@pmRdWu5 zG&VM)fj&adrE2(Bnn|42N6j|%-it=U?x2{LK_nnipI>SR3+GtsNsF>+Zn`m*AKbkK zaZmYgd9YUzG9?C1`*;-5yO3F@uNnhVpk|iab7mD8zrgU#srf@=70DJsUF_;Pd+Wnc zut+e2Oo?#)(G)4$z|xg#5sq4;|Iyk$Zcb%dw2nmo81m0nOY(*fZjRH&$RwWRNj!-bSgy^Kk+&L^xJ{cQ=+L zBa3}OEpHKa?A?51HQQ`Mq}EE_Wx_KVlx7Y_D&$@Ujg(6{# z3n%2#n4OnvxN*-WJp?Zzmvefxw)><@wcQ-h8J>0Why*V`vP>=a--{ng&iztTL`Xq# zu=-S)7iCf*h3Na;Y(xlGD~{b}DNF{bZw)3fwS^~TEdQ2*-rYvNqi@b~bcG8nPYqz6 z3(Ju@%i}B8n<{>HgzoVy*N#XF@C=k}mqk?|!gKb84sXQD9!`ZiBrNPsu?j~DTBhY@ zN$I%K>c8m)F#aljzY9H-c2#{Ut?)7Cysa%e>eB~5+?(6A7j#re8yJiSyZHZaXm`cB zN~H>$eEYu>^42gpk96y=OkVvzi^w}sL0OwXV0)Ao7G-{&6A!|*>h{UNTfIW{BB*|Z ztlK%*^lTJ#yn;!}yj?QeYBCKoc2Xl!$5P>Rj5{c&zWwuQ@#WYH?=|Lk&`2~RuqA7y z-C13wSEpuq?=qnHo8Frlr{#BtY+9$QO$|4jJn5w6lui$JFKG+xS+c`~siKeadRR>1JD+wu_dVftJdUvYP@j)sL;Ng?XC14m+YTO|9B9uN?0KMa7*)EV{{XI>twbY zl3<{!i?64Yn4n;NgHpXyT5RF9O2MA@bV&sXyDCQA4%;Dh{B2E5a~9k#DY2*3rre~% zmi%}mTWAWkiudoZS5pO?Km3-7vv*2|*hF~V?*uhmY-;SFwu_3pdUUGuHHp%W*4xhO zYGpGyvRT{bvMrd0E+@QFtjYUE0D|v&F^(Xcz+(N!2$!>cHmBXm%WKc0rQ}M>9bnw}dTp? zRXX*gEr7ot=W=O~&>hUspGuyO9!9ugKf_PB0C=+G`W~D6^~GyJ`j(eJwU&AL;3#27 zS~I?b)vK#N6aakpXAe@T7ml)gT0i`j#(E$=J^k3t`2XGSlRSx$z%mIql57#tT*2hD zRr{auf#|+3bV<%8MnMb2{>2fQ=5jOQx}dX6Jk%9z{)Owb9p6`Yqc^hi|1Lg|Mu_h- z+*Wh}o50aUY=i*lJM8-1hb#;iGO;-GS4J61d)2Rb^z`%_87ftX|7r~1YNK5ug;y$; zjAxyT+t@ZGtdvn<;=KHGlCXg3&l?0!%$UrRGWW}mvsIscwznbj zAgYpLq2wixbZZ^G`6_{o;uek8lPsDNo%Nby1*0A&bLo!=j<1(DKGw)1#`Dy&p;CAe4JvhR*b@(0+ z#j`~(dBMD7w$v}ey@vN*$%y^_fFi1Mpng5VcOjbtj%u4<_2<)pft>o-NDCEO8T7^b zrn|yaPbl`yy@w?nXwby|!dvVrP7C%YYB;h#aS}36l2|yFtM1a!vMXZo3*bo1Su z_~mmd^GS#SLV`Q?M^VaNC}vEnQ;mwJl{$`C_joUhfFlYA)bngmcqakbhK|9o|6I4Q zMGx!23{@msk4h|;n)|=H9E^QrM0_P6%t}vSIhV7R(P#1>UCy)e*qPlW6H0f9tCM)! zH$7Lg`(eFj=$v_Z@A4rsyDhr##+?n{V!5@(5#bne32t;b6h2%Hqg*VbDE9hs&NZU* zxWpW%xA$<8B_ly5mES2x($UFA-^abgw@$B`u${i8Q3Ih-*{UDon7prNXXn0kWPEM1 z_gq0^ghR@yS@X3%Z~Jzw#UG8zt^7UMl>7GO5BTuxrNu#Cvgz_xo6v1w!n62-izI-J zNOUEgI=4JhuBdtkOfdRUFxiWP$uu}-kio;neSZx}SJWkO5=qd>Kl0!X{T&?loAduP zUHqpEXhl=}FYiTmL~8M$_Fp~&oe~G3&7^%A2$2)t%QsYEgq_eUaS~izlC_m5E|LQ9 zQRn^HKs^6zr7^&DRJs=#={gmLzujsO{~lGfICdsE(sdNWYY-g;SG1r1+L&2z9W4B$ zFFa$fn}T_R!-A!(+VO4C=MBZYHHdB?C6WDxgGzqx+<~qLwWkr@8z9{3syL=lte?s~ z2qU8(#eAGNC@TQB2<5kW1^COM>R<@%$-`S~@=Ao5bOl~pz<#x3)B?|rv)I<(e>PCP zjmY;VC}zS~e9>v^pR>122NCx6>;7GGHh16sO1+sCbR1@LZm|x1O4F?W6!!ALFqcgo zd2?%ozEw$_cG_orC!srs@2w?+X50710dvRsm&H!d)g}+f-el4WJKT$=f8>Q0@9E1m z$guCm0Fy#4eySrA{HxcZfVq5vQ@Z!wSDyNs$k?xG(uAU~1k7SAueNXvAV;Wj@Zq9N z_h9@w@`t}|_!6;n&4G}YGY2FxzSR5v;47%izTQs#z_Zc%g;xN~Yd775W@{VN%>7|m zJrYuEjveH&&)c&6wMyMJXyL>fHHW6QKj>0|Sty}K*r_(*GQnKA)kH8LD zU#@P_-RukY#`dRCUL?!OTLcresrMB3;!F>*Dc5Gl?Je;Rvyu1zqU<}Pno88Qt$<1u z6%Ys@Dk@!uULv5PqXO!TNEZ-LS}2B46A`3HiHdXq5fzXQh7OS$dO#p_LT^b3A&^4a zmpQkrd)J+F*7<&AvG)S9%iEvlc};>kc2N>jisW-q0pcsw3l@A>dY?dp_l{36=QHuV zC0a0PvhjX&LbEMe*hfVO9Q;e{bYSRv2z`p3qTxaPU^_Ll^3cMDQ_!SIJ?+TIp37y_ zWOQLh!=dzCyhW#}cg8F7E5+zPQk5Cbg}wKU{?YWy2`~3K8(#nA>2iw+U`>YOI9?FW zc2s3uzgbS}9dBt_A^fUl*SAo-fezVA{HqRogUL7>*RoiO#B z3UqflS76Vqes>2yHW=i)h*JgbRbR0qf2?l29k~x~qVmQ;9xlVEnSPfdcGG1hB*0Uj8%6n(y>es!ng?_^4I~#t-jK4;PxgU35r_bJwyZ!1k zQ}I#B2frovTQ+ioyMo8zqu%*uj26zxnv(ZOhlXM8$(qAPA1c1@HEGqxQ@~g5&t9`y ze+1k!$?Yx0TQ^=i)2x3DnfuTlTsg*hZt^(Il~X`g)cU0K_HRI8|Cz9$WDh}YZ$=99 zK#tCBawfTq9AxnhTc%3;*jwSNw=kco->Y{A%AqwA=6p>En90jL@WPf ziPnn?SA@C}p2X0c?tN^x^Ei39cJxqKixZa5(Pm^chvk}P zifhy~E6Xy*rah-(raCT-mQf#0564}IVPh)H(rwnR5fP)38({wwOBsxSM&o_(gCSi$ znZj!)Uiv{_cKHXrh_V*WIEoTVu)!!`R4oecm1)LwO@;ZNLbvs+Va44T$u2N&8mo== z^_}>)S}5b;VM(Ko{eFJ5Gr#6W=U(lGexsaJ%S}vqLv0wYT~)a_ZD2M+EhYB1z#Y+? zQ^cdtvcBlwq71wgW~RtVu<_8|?ZIiM^BhVkNe4@NP2SoG#K6xggwsSD!;WaEclTz2 z5~$L!nqkIB`DII%_$h72m?VIG(9@mvIZ|0_3{?@!t`~HE?)%nPp@oyLd^OCLxx=9n zL(JlzfG!{|&l1Qjo-o@aW}kKqz;tS+juo~WXY1bhJ_ldTy5C=|%KAM(ai#&)%zA~9 z&#OJs6EsVQjnoN-F*8=?*9_1V{!1}fD=j6P37gvF!rG%M#fN3SsOCBr`(9$nMNK1f z8~1Z2t656%OMZ1HS_0~~4rWY)9`8I}Z(Pc5?On>U7n+QDXtfwECB zY1oJD#BxUuo8W1E6}&%=_6ouT8rPQDPA))Ve zR|25z17v<79NFHxQ||4fVmse90z5^$V1#jf+o#xT;m#>!YWe7)t%D(bEgE07qqaxj zLFT#)npMs3*;Gdmmw`C&ywv?(s25qqMPR1F4f#7HYWq(z^pR2M0IDy}?;)+U;02Sh z+rkNVuXm*DWW{Dx8)<~yt1C?N}`t8qzFM+JOb;?cdy^BF1 z8}rTJSK6Zmh$dIC0GK7YGbp6>T6eDDT9ND2kH}sY$?OhXhuyLBRW-b5#-EYxI`yH4 zH-P-N}Uv=5xGcFgU3f-lhFvYn~2fWp3wH5 z`QuSZUAdBNgObk~>;s=B`rywp2Jqy>tgd+wp`b6S-NK`dCY4F$13i8ios?l|-n`vd zx{F!*Y@7Ok5>Gt>#JkEUMMm=%mq=ehoMCNFlVaB_Iz`23NUg()p&x~l2y8jDcEvMS z#C2JbTSrbt{LKfzhVO3XZ9*~TU7nV@ ze{hNCue2~-!_}>wo=PJUj`jGeLajH)4yy}P{ZJ2 znLZwkb=d6?q;HDJk3Le;BSAkc*Fn&Ea6Nu}|Afek4g=g+W|1D~r3K*(6Ordzu>TXz+UozTdQOXpq{wQ@4e~20+Oz3zT!=lL~NW zBmCF$XDK#dvcL*Om1$ZH&~oDVx7{Fm(jU!*Jru_0KF7o~D$1)FFx^| z`9daPO2pXnjjqFR=*y`Bbop&Ov$7rXT}(TQHD?2|%578^;*n$S2XMak8!W5YrV2Gt z?Oj)TPnT-KCk+`N3ArQaG8%D*MRaJfHKCP)U{=D`yfvHn=O#33GsE(xbthHNy-@0D zBHv=olF&h$F2EJmg{T-ofDJ&OMOrx)WAycIoMfX>NPTm-zFgQ;g2qzi_%uhkWJ#>6 zbl$N;{u3;O3h$j#_Vlp2Lllr>c3Hz70yGGIrFMXbfzqe0*A2eyR~$2|Q^MA5y!WS< zI(n8)A6rl+`7GA5X{vpOxU@8u*}Vj+Hlzte*?eu4DqxGL-P!+aa4{!#duA~~f# zlI>DY>cVB2T^q*^?E4Lu&YS<`4TfkCYDcoU3Y?ydNQk89cdxQFoYQm|~ zGJZlwjJYc3`UXXG(}X;d_{Kn%cG?)pXz{|G)DQYwb=5QeWP)pZm$K_XgTSn`du`2S zcyOTZPQ5fN-E=$A(WrbTUO~Gn}iT4p8o!{debFq(| zCBXdbvP^aCqor-5msIy$}Gj;t}yh0mFT2wZkE@#E@Hj#1a`v9lg0e z{YyS^1anN6KwmItm_!>3{EWyJpRq=^lFE8r=5{extH^#_c{yv*HU=QTPIm`9Epw-@ zF%m>yHiM+h(Wa<93_mlAthuJN@#V&r-Ojes1)Kc_w4Cu%DQXRO?+QuOW(A{aZHGa* zJW!B=g^BHi4vwoR_m%Gli<%7<7LC|&_W-0ihX0unu+e$%v7-^Pfh~wFf(p0kGiGp5 zu7QRvGy*4P)P4|Oi!~vO?(%1s4mVH%lnxqdcyqg{@fv^j?;sss!#MpTK%sCaQNRJcthXc3ztu_QE^*EPrw%pyCIf^Y<4 zg115xENq>G>@su%+~_D(wkLgM4CykRm>_VK7TYeAB-v}) zmlxBoB!5#-_0Abp?>U9Ap9dMJ#Cdf;$sk*68F+M#mbXoYk;_d3=TKkk#z3(38F)^P zHpsZ1kUHHLu4vUIUnFy>c$|_b4A656GtkEq3o#b$x4>4I;~U8K>RTDM8tF?+QcJA2_$Ssra|qQDJv&HM)_WL^>qnY(4tS=EG6s9ou%l-raollbdz*dn+AK6AeEFn3J4r)FKZH>1IXFH+%N6nbDTtYzir@WQ>yaQJXq{2dGei&BrdxrL_Xy?`+oKhse#$M&37;l0*Z&LmHcCva^#h9SJNpn8OkalD$5o=Td*8pjrSkZ*}`H-{Q zYl29hcY5IApFTp^jeSup3aBk`ukP8Qkl*=`yRPLbLi#OBff~U9tNkiK`Y<&UvONdm zr0$e$ii{n;!DniM+@_;dP(Wr~mD|9ke~&8%08g5;saw$pwSJcMt4%cn?$oWS55>qp zA5Z>x{;-}^GaV`HAi9=$3O005&h8xKo~{}O1>kNdzWVf8J#{X$cky++JY~=y-AqkI z;Iz6*7nEHIA-NyhkA*5IG_5APwuwk{*k$(qR`dY{hev>bxpCVsK8&T$79k_RG{2D~ z4^2A#wZ&yy?K00&1>nx}m36TktPOULg-)dd8MT-Y-V1Y{4zHM7i9eESn$JZ+MnFH& z<5`ieUVjt*{yQdatVXLzIWlWXG_T#>c`sQ_TOQ!zjvKaJ%(yzC)$0E4V1i8=DB0yp zs%8dhM5YpGxDJvI>spi_WE0do&P^4W8n8-bJo2Ye&0~hcA`Fa1U_d2ALBARzHeFge z=T&>qP|d`rN+jlKK{fBUw4V=Z49k<+*V5up$`7;bcs$*rG6~?OoPiU&%mZ;Z3YRkC zToTnD#x&p$&#Go0DGB{l#!5t(*PU%kZEgfP3-3?GAXtd%8ejvfDDrLJ%S1Urlc27i zf{)ORofYbb@$gDqqr5igu@!rx9IaG*278~P|HMBkb@pTA5%4y@h+kndznZ2GQl%h-F zv4z%r)CW;4b)gC^3tW6qmPjSe$q*N2Q}AB7F)hn011`k_1e0ed`D=^@i%o$yk|47t z%FI=jIiUvS?o{RC@hI=dlS4D7a;zTBy)d;7KzY~rtRA+2nds8$Ri90|ai%+0a(?1k z-|jbe?KV=fLCVzfX>*^^&-a(T3hLf0agbW zfC$rPo(^MKo9!#w@lflm(67`KVd#jE!&sAi&{G2+2`5z|tw*x2O_Q9p_lbt>>qN5x z^T{smQND_@ADkj%QVIa*Nk5k$OH)};LOK}N2nBUiD3Fa6fQmjxAj}An+;&86 zxV`SijOvdEIMfXnX7ULY)ppc9FQ$;!v<=j6c%)IdZAnPK(qK`w#-(8w0=!adN11zM znBu1aS2Z)Fmb#99k#JqXS`A7Wp>IxP3<0jS1EHp?|J=)em+-?h;L67jiHNtTTrRW~=;qvtFhjM-o+kh=ZL zwAPp@yhx)-61b4ykmy(DDeeN$@Z(mV9!>>7M_IQhanGxwF3`e6*wcPqw4UaioRqe; zrwNTckkyN9VM(}d*dybqSIy;G-UTjt5oRGNwrsZOFxa-q(brcu)$E9cQTMh#xxmN< z)9F1)X;QiFdY$N-6`-IU6*^Uph;X<3$NQfshVe-L(~hJgsH4 zl`Tp(MQzyvpshEQ{WB+Qf#e=p50I(>r5?!m$ZZ9s7G*zOsw#%wUxgA*_7Wd-^&5PV zB3pqxJ4+mYRLoGQxk}V>ta-oSS-p}3f%m~<1NI!*yp&P1m2E3z+1()8u~K}aDm%@e z2r7GyVem`*3UjROBp7mgQuj}8u2WI>QDFn4%d{u@rt z?;D4jN^WR6L1Ph{Kb5>OL$kSp?a6|A^-W9>*l<%p4PwLGb#@iJa%Vie#ZHssPAGFI zW&F;UOHI~J6EfN$+B9!rYrZxuFv>4^>ffHU9x+!2Wg=KL>}=}nBQ^!b{&pJ8h^|L4 znx~Q0T60L&8KWb#wVYtTG~1yyC}+jBvx{LwQI_#S`FfUzOqG` z@(4U1GjvAg_uhbG*_Y_S#j78v96VEnr~ohu3et63Z0`e)E!8WtpNO{Q-%L~?zCmRP zZ81&Lra_Geso+0QNWYmV);6z-zvt|rpJ2=2S4IQ?>R0@Wr92PQ=1xT_cu3nw9Zo0s}=H@iB)w~ERSJ804tIVxQ?sB(A zc$x0bg`%5Df-70QJFe6Ztt8~IoGA~t{}hwrO%hzFTKg!tK zxsc1D_(`HlvU!kmUm$KA_&C*$%);!)t}($GA-w^%xak&lUKK5qh`?NmG)qt^_y`Mb zy7_5INV%dkGt|ZOWpr7~Mx=cIc&Lm-w&^V>~(X6P<5miSuPjyjG*dhUR zH$5{bYyuCTwe#BgTK2lxp*DGnCcNr%Y@w7CzgO-+V_v21EB1cr8OeMC`yuK+5p1xt zX$w+e0Kj)80@j_PQ^Dl5lq?_sSs~`4lMN{W|i4Slvbbsj>KIE4TUQ1JcCi*Oe|IB+@|m%MBPMcoc^n4NE$; z%I~?9V32xt^5il#`t^z4hTwp{=%DK*ZG`o92NC#4835O?(GuF*i-Td81#=DR@9I#T z1Og#Y64~`e6FKnH)82F0eC%5%WpeaSsLRYJfTpWQhV+sB%xRD(egAX9S>5j+8LPFahcB9Y ze8rwhS3drkmGD_3^}nLlFx@V&-Y&So=Mo5$bhSw zQYP6*TOS&9eN8NNdQoJkiI@Ia!^lQZ+_17_s;DB2-4&%=<_hm(*Is#MonIxJyyS3lO}9>}l0yON z)#F;GPkgz$Q$7xD@d|&*xh_!Bq&If~_LQleXCFwZTVLxyTIVnN^>%mDYPSpX;oe`% z9Gb8A3R_%Z!}+LIO=zePxb_ z89iL>Z|U2HqVsPiUE=L@$))4ZDBGNcJ*~0`-Vu#FFUW`$XDk8&QrLb)KhYPR znANu##J@WfRJ${8EcDx#ZIXhNRg%tP#l$qrl`Dz4FWv=;wRR-AtA43^d&^4k+Awa?qSXJ+O7}fbw-lZGo^iT*9S2VuP$IPgW=!ubWxmm)+ zzO2mQUppoV*z1Gi5U@~yEW#kCJec?q1J3uEi4<;^%MbyIFCID77(=e;IH3lOLVycF=!O<8 z=0tOgK1Mu>#lq4Nh5gv|_~UL~`K>+KdY zM2NyIPbYVhB-@ya6i*`Tc|GAfDD5`yJynC$>eQ{+>Zx);ry#N!a3aLZKh)vgllLPd zl5H4J?lc3z2yO7ea#!L^G44SZlY4i8v(SL=hCsKdkTQTg8>nWvHx`_fV*jkdRFH9KGelK-sHX9FfP zJ`*AXu}b9b$ZR5ht_tpK)}NoWH>jbYn+<(D<~1((ZknfZ_S0MkFF0-tjwwz<83Zc_ zPFHP*KnLNvTWCb%RzrRm=|rxwZRC(Kz{`Y2J8Yo@(%<{6!hv4PwAbapdRJ=0N|jE$ zf5GL8Ms0ITc|~_a=8FF8aiVt4)j$R($p|)3(2HJU{V-q@ihU51f|#d~!B$TRtC}k# z$o*UO&*@39bv5Vi!W~jUSXqLMdS2sbTjEMBbNwIfZ%uZdpQrd;c=qnL&yprr&akj) z4+V-fdjeACP0V;;MEMXj^;2c}G&Y1S2(O;I5d^n~zX3+k$znOxrp!Tr7;EsvoNbrI zIv}2Mju^(^cmf8(x|YyN7O>Sp&OMtmoGtV3>{*tLK^40eS>Mn+^RiS3h@bcW71sm| z;x3tiDQT>2)eq!w(F0HwwcyGEAo+c+K zPLu9{Fi(axmg>JcDCvjEtMQvy7{<$Z6a)9T(x(A<3&SA&PI0tcYqUM!-C0`c1>zbz z;X-sowuD?vW```L+?$5)D=BYQr8l2BLDj4Ly@E$0Ye)FcTlvoALQ8oWM=cM1IKo<$ zh?JIW9yRrTc`&TUk@ApuZwT=&f4(|3oFw9zV^~>>o0ySdu}+G_Sej+mg$NN0*UOQE z@{Th5vEn0HV z+CG;8kbc(n)J#V+y5Ms(&g99>TNcL_awydx&>AJ2Qs>D09Bd;j%4@U`XYX@3KoZPe z;oMJk+#_GzlR&E^qr)DMk1^S=Y9Ya1R~b^F6ARp#a&tvOrk;0f5V3pDw$u#t&XLXlOVyM{e5b!u7o(+RX_M6M`tT zfb#fgqf2u~^;o*9dbnb_gjRYekZPZdwU)Dz!q*()S8)YB2u5585Q(- z&nHqrN@;c+)s=#3*u+dlc-MWjGQ*(4BA7*W_!V-Oyg(9PtA@jF=z6sc+xvX>KR;&{ zw%4ZEXH~{P+0VUNy}08E2=>W)q`b@tB#o_jYKPS;3BIzDP=ER~cr315Rl!340^srh z>|)Ic?R1Vi1>Osr@qfPHH`6WiUU*e2lsvH>l=AYgPCE6qaP+hA%@NLzkAYoWQ~^)c zB6gMtW9;k{JF-3->^(QpcqL8$?2aNW^=4QYd>ytbdwk!gZXxOFi|$XW>LXm_r(?s5 z;0#IacwV7dy38@no<_R*)8&aEuU*IzWrqTTG=|!}uy@-mLW6EObz}D7Z8bh~k1;9@ z`7?AvkU(qOH131SzMMs>H<2sO$WnyFNWU9*sezR~6!U}aN$43!1AF{bACG3tO4d`xKso9Yl@eCe@iSX3 zah?0Av+p`rg|&LOEk^^%uLhzMk0FLD-#tWCTr?Ls;Bj17!w~>`_`3muc27S*+NzvD zWZO++!5^L(T^jFSuG8L3cHvlN8IE8dQ*jcN^2-ysh;-{|u2Y!Wh=c1HWceMB+Rlc| z*Z|mH($ctG7vd}aoJr=6UYPzZeZPw$$4FWpo1^}mXaU#RSqKWxNrhY*R%|yd#a4t< zmE{Y};ncmPE0SlFlO%t|FWnztGfp`c)*Ups>gxgHcnKUQ@&iQRM*s#Me~|0e1me%6 zcxTllhl0Hv_t;y>wn)>Z1fdQq-|kou67NBw6X$k=O9@^L)VaEWFk{cstLNvG^{(=P z_*P0uYzKg9GktEwFJqz{@$Rq=@AD1Om`CIbaV7w0KQh`^CNa=AXR8 z&|CFOEw;ZQ++rtt{6ry}bsLG^_m@?yYYV+5Z8)$uk7$CuMkJ&hfX*MR@4Q}EXW0Bh z$)WmF$wpWjN${AHxW)^w3=u}Qnm>|@XX~nZGB#7?#afj8Or7T>HB5IqI8ST)^vRs! zlqI}@X{2??Po=3?|7ws%p9yv+8bAD&QXjB2m#=U1ghN`1ijf&>QV23-I*opQeWy1y zsH#1d261ObkyZv9SJOhRUNDIP{!Njz+ZF~0x)7=D=!rg1dGpr9|ZRaQ|Js1Bc~UceOO?aD|w2|Sz}alXP02bW->v~Bn;_qgJyOGTt~hq*>34S z*N|Op*~OvhJWogd)$EDm!uLni_D3DP+V=To;ajKblxS6%@uq2zX(>GevC17MrpX8K z08{TEL+AOnrae!o%H;>iAN9u1cJvB-p2lXimG#_+tvuuDUy3uTXym2(2$DvBLmOgr z3F@Pt0Bt3?nV8|O1Yvh`m-RlOv;0w(F#|Lw%j87o;s|v?%WaL(qq=t!XN98AcBO+< z1AdINE|}xkTX6=?_WChJljV%hJe8FEGmDuLS%Hg_+Mb)ZV#e$G6bqRSiCH^;gGg3v zJ37QG;d!;W;S!cRd3V5+*xct%ln=|@@6{-hwXH+=iMZs3C%nqtS2xuPY5T}wz-@+slC*7 zk+b{3pIn9OW5A%Tb2Xha7UwF=gwy?p4z5hN2zqvJG%mdxE`C&^6uE>fN*2nrTje!w z@*Up!M)X5T-3MskL%U ze>bJ)xc_(WBJ}Jz;VM0Jw06cMW zF3Ai=g^&V}fAVxTmb}9%w|om@ey37upROt#5|TJV!NN==^t_%~i_}KIb-dgR03lx1 z0E>(1hM`WAr(jBvAA?t)uS6}um2r!=k0P5ktyaF-ZmB#h0Q~XIT(_d+%{04q7GN<| zhjip%@p6$?KEM5oxHHe;Ih0KlHqtlO*XDs|ye@xVki7lcHj?3-SmtPy;8-CMDPS*$ z(RmTJTWF?~CGLjrXwRF>b@Xy^N%Vm^TQ{mY|9Cw$r5H%NPL8`jij&A@Z;cyHr-kGU zv&2nRv{+j`Av6!Uxj95Lsv$At<52sxgZV9n20ETE1YcL2QNp}>g|%yKhu?d9^rf{v zog#KOwC)>FJ(iVTdI!jy+GKeIaJCNWxAAkgNoSqib+bI2OQ%rVU2Bkx>Tj$f7b)$i z;F#?TeW~1-^JY(lJBS!$PcR54@y*@35&KWv7&~2LJ?!bO zwO`i_^`P3bVJXb?D6jN}w-sfH0rmlo?|*byCTkjqH;LOxYb>fRY~NPWPNH%9Zk|RW zK+lf-{aIlBPT<7)TIORiUZ~a`wkWbVx#QEvf{$QVABj2vj1 zGUKPy3SW!kpd|HJc^+xM0k3;*WE{IAxq!RoRKO(2!{F-vRe;2-XmCYbHIM=|Yz+g& zE@Zckrl2(`M3`vLOg5o=a$lFG}*c95fUVxWhYf1 z3r=4cTQ>!~8en%!!zE-QLw4QW5+8H58Xt;9B+Czqdtta{?a_0hq09v@?Q~Dc5Kojy zFGYDF8;}eE2=O%!>$Hd3#K*mfQ<8234Dq5KI6E5a0PZpFs;2__>}nlAtmV0%DeYIzoG=%z zW+D+vd*@32p5of~{ZCi&o71k-Zh*ZO_hoo9Hpkc-{pV|OK=^h-kkxk7)u4{Ty0Mzl z8Dt1}vdRr?jSTXeta-kaik`z9zrKOQgYg??Q=UCV*74$= zl6UyELM&qt2*ji#Eb2E#wTec&-D1&gp(8R{9aFTSY=V=3bEQbWkZo?qYWVME?>7fN z2dHVq*4-vhcDMKKH5g9Gkw4b>-qwR*FTXQt$1767vtpjF*}D~I)CtWM8Mf$US?Cb$ zZAhR{KV|5q(zp%*ooUDFSdtWVxj7@;@})pKO5W%{@?iUOZ=<$V7H+%$t5(xL&T-a+ z*Uv|x<08?Cl^1yoqz*a0)){9?1!A^c`81f4UsOL@g$incgt#bb7kT)k6lT=bp4hGl z9)1@BoFJ%{k00q23fOd5@7SnrVU_01+H48v*KfV6Uj-(*JSq>(8)wCBRP)`+J@Mm0 zgSzq1z(u*Mh6XWj`SuPh%a)8CJnbvoB0C{5>LjeFlUMUHFHo7HkQT%PCP;gD0@o?N zxw|`&RH+GJMs=6f_%}flnf=O}kO8mk5Fn)@l~pN<3VD&Rahs3#_+@T*RO5po2gSM`i$yw~Yj^6&em%8bMp8eu zxR=*Q&tsT7=o;v#`NtW@wpy({aS>J!i*cY<0QWW@zgV1~87jJy05%~wyL-a|x=q*R z3e4_})1;R%AxgHau?&JEQB408n*3Yz9Q)HV*p0X8x=JzrE-zmWh=(25!u0d;M&Nf% zx1V5~Yj~@+Pidx&E-kkaTmt!T5 zq_G&kU_{;XFu+-TQrWOXmrZ;|$nx<&3I{SLbzXS9BgRAtwSE(hboBG~3O_?mm)J@X zUnar@IN~qYl6R@He3Azq#1Iyq)2z zYtsTwG7DCf9VYf7slW_*+zf{ilmtk z&jacT6Z6vt=GGyF;a?2DtI0(%$VRCSn%(3*`Ioi-Q^@N7K6g0j=a<`}ePdP*eu1ZQ zBwbATX+JYRMJbwA$d|1QE!Rzjk3P9obG0w7mHyl;Mk5~pWqgt+1X81=XLX$S)QhK4 zn$7FCTbS}%Op1G8`kK*Z9iL}sp5m&S#^(My{#YZ^voJjE?8_FbjeWVg+uCyuR{Ebl zow&$*_z$62AwT%5Hv$JXh0N5t@4H_VloQLIWS5L>^ci(Kb#cANMU3G*1lg4d5?GS| zaYvdN%NpKr9B<`5-v?-8{I+;ZzusQLoit@zz~pfDB^*?^n7hiK`&tkdtpZ2I6(;^D?@>q!+Sh-G)|gbdn`n8MWH+kT73S_tLY%0NU8_n3+d;1HEffgs zzn%KsNdxdG-!mNWHZtg$n~t!~A6A^y z5a6;c=u}^m$$X7^bvH#dlJRQX|JJs%yX@fp$ALP`NJdi-!^ zSGuYY>a3rTbTPqmXJgDEIgILrrjREh?OaT}J?byslrt{^dmH8${s9+lIQD}_^3?T+ zCjtDJjs>fVtoXlPmm{|iBzDFmB9xl77^XGnDCOhQIZ3&rPu`l{Gb>CSV6CIfn^>$T zmE-QKm4i8O>m4geO<~XbxnYb(1#gOWjt+P9bAfN6@4c|#`3L{RZ2!ikx&bYu}?H87A&-^QNO23y5@)+b&?Y@P1#XnTu|L-oSbt4FCA9SuDy&Mb8BG^5!k)$;b>gAJkLLHb&}&$Eeo$mi|nlaJ!mNKC2X7I_^w%P&C}C z{j|&^VdiY5ufujEA5+4}e_Ns;F(U#l-kG`TqL74O4U15pC$SPQ2xYM<8!f_CCuLyX z)v8)w$}E(iM}X}P6x2=c#Z8-u{$mJ^NqdB_;C$ESVGM6RoE3Y6`e`bT^z+a)esD$p zoray)@6VSql2I|QeIKT&rb5GF!%OeMsF4D*Qu|Z9GMc0jY}U_?D|;=$=yDcmNnXsj zAZN`lQDBzcr6z9>oq2ZG=(l4F*W~_H*YbapXr91jhi>!bN_V=WxYs;AC3U#vI6xo* z^}xNWK*llr{wVb|6WA;rZOG-j>Xv0E^PCE^D#={3c4;s`>e`Js7iAGTH@p%tF{|1F_6&Zx#rgmbV`_wd->#|sI9fg@RemcDV@A&q}%LAGqpgv#UlxLg#-QSP4(3xJT z-tOlVfa&W0>8@lT30^=|*eZ@*%nf2uxIBy(0UwLv%wapH$Gg-=(i;2&_hU8Z9QsEo z{F?6107htMuk=it{@BX(trRJoGqJj2BSLtyPIt4?ZD}uW2%#UqN66EHhL^<^ftiAM zN+r?=f9PvzQl3hrI4iGaFrqZcteonZ#KJjr>>Pc$djVww7GRJ&hh#iXXn2E-pj3Um z-ALY7!r#_Q3Zx$m2DSPX9yU3yAUAU@1Nc85^}j0If^NwVQ3Mw>{ltUSbd-)d@H<88 z7YF}_?{Lx+}f7$!&9-KebtYE9&?Q`|@U}{}AOGM(mh4WF6;{kgA_VsuF+t&WOy*_FFYPAo7gMB86JdHpcCV$8hdV|Hy4$vQcxBPhH-mbC|YtiNx0xOFYj z5%-+?B2W|1%@1WNWvao5zS&BQyMuiU*;C<65hL^rezap8052b3{1%cuaqkuHqFQX0 zTQ&dnYb0ZzLtf#sUNokOYsaU)$1AO&rqQ7ObQw)RS@qpJU8vF@=2ht`zV z|C9Xvlk6Cu!uP}Q>RA))XCtf7+&JJ|6GiBxn*$y`4{aj5CS|>mBb+VV)E6cN5|D77svQERO0W zZ?-o$xoLkl*U{tdN;v)OpxU6&&|^V(lG=%L)$_E7`+fTz`zyx~J&12`*NeGQoz-d@ z{o2u!?BxkZNhnec`uu$KMk$s(`ZHRn(nzDdTHN$r2p3(rVc0AuRoVC<{PTXb1Ebr& zzegILz$W(jC?V;j*~b3K6pdpG_Ib%I|Mq)w_P;r)s!6khNtHzb<5@1zjjyVmWqm#V zBBj31?C1LrN~&1yM?e6CzWi7wJ50A)&oPUI%h{y757lr4dhQtBDNKCka-aCMy)k=4 zKG$Z~*vvpoqn)*2>H*Z{r>y0e5E?C;kj?_`S{GkR@k9t8702^c9=c}m^7uI;F2dix z^x-r&RgxP#bX_&XIVNl`Uc^K3Om+~^(toCLZOBZTC(sSgr{|o*?Ktc+I)84-3Xzm3 z?ls)fS0QjS8T}`A!_QP_POgbdNfl|l6TIqau7qOs>|Xqae5!Wiz3|+HnT@;uW_X>K zi@3HYxNx*`fg4X|mfK~c7fK(Go6cD*T0u{=@JIY7>F=VdyK)#Gl&FD={e|Y zz1SBmFdS70?SQW4L zI+(NI;lIgU{S>g_h*}zPL_>$Rrgf-EST=L-fC)boCvJ-#)qwu7&MP!3u#gV`TTa&O zMfjr-cRqV@E*x86yQH7~Tc`Oq2Wh7ALjwX%Iz~E*ytW^jmb*%r;(;`^Iu+(${OC#X zdJS9+ddJ&8VYK3+26SJ3$9wk^60t2257%MTqJ-n06$p|v-zCUoh0oZ|ib_|43|+Lv zLLpTep^(bisU!Ke?m~%gv%EUwCO7aAN8570WAYj*<#zUW}nR#vtrb0uVSF)jn2 zR2bFB@V3$Ka23!kK}4L(H-Hf($s*@%4xbU&nM;~>-d8#$#V7J1q@88E;)Zkd$fr80CBT2K#R>?QaiGJmmWWo{;nZsC)OQ zq|^6pw8kc#NmH{)^F(H4Gn!`RS)g*#no>KfdDc;8Jf?U?p~l8TmR3%hM=Bc+c|apI zMI;llQlS!5Oe9T30YODTKyZJW@9(ttyY~CF_5QQ>TKv&+xpF-`&vW0`eO=dmKOpcZ z(@520A4XaHH#u>1_-@GpY<%-R5b`Eq);cSI*9-fa|E$fy67&thQ`~;ztRPgf&B>@> zV3p|$S}-Vg$TF*)r`fj;?J#tBN9o82Q%814D<7yo<_*UE6^~D#{&d5BclFADdoWf1 z<-t7jf9Sy+Fs}S;@DeCBDuB8=|0_trjV}KPAb7p=SB$tDr1bEUKnKL2X0%eN-$ZP3?M>yj5byUCLf2#h_B4VwjmF zFi0UAVY0ayn*Pl4W07|Nf_X*gZ#E|DpWitY7bC16lwk6|?-Ex~?qsxUnt!62inTjp@Qt zm}+9=E1JCJPoNvGxhpj3*Jk_cw+=aNZ((!>VuJueDL!(FYFVFie$&;GZ-}Z3w_mF) zQkVQX6Z8{@MMtK@CysL+Veeo)Z&Y z%PlRd_895!|B4lJH8=fqEZP0=r#tVjTvl;1@ZFK-JwSTchl|>3P?75;Ihbr7+^^O$ zv6y`gB^biQ67QaJi(~snX!yXdiNsY+5pkN64WtrZPKP>|*NrbV_V}#=Q4b#tsW}QJ z%2W4osP?al2lt4kl}im(9&RmN?0K+H@6{!x5d8>;B7tQ6eZjHd(my{ToYk z$?T|e6jA==jz4$hW&^I22=t%F-V`(|hRr z7TmE;VM|Cs4XK*hHKUQQj%$BtV#dq^;P(`I7i5fp7}EY01JI&$?$$e0 z^37t&)}T)({`V64{|xRUS}O5f&MVv+FyKVEnTff}0-OjY8K3X&8M5Gi`!GV)CZ**} z>E%~)TxVRLu?P(DE*vk$Za>79R$q(C{-G&wd7lN-O^s68@ zp^0%J*&vY#VMc2a>r#(l$_q?mvTh+8bF3+fD+rN^p^>{EMBTAfnnvAQX!WTwtUPxh zEv*7fRpjb%WA<*i0w0R6)PJW$RbE!wt6uIMG@q5{rg1;w#fBRR477DHz60uzxb!+U zA5i+Nb398Br-&-|uFhc!_Vb#ooS6j9w5_SLhcKjsICh- zN8w$g8;)jA-x(Ca+!~RSi??ztjiXfpp4yIU3!U37kGu#|g?y_AsID1D5~W7TKm*>#4EoBMQlzwIPB|C_&$-yt?io3A zb~r8k&@z3vxU^HHMQ3VTpZ&W~DZ4=q`To&im%J zugF?icHcx@KM2S>m_J@$oa+75sxkEab<@=%KJVTsqD5AXyP^c_F8;%Hw(~O`~9EMCXbr({y!PBR_2hr_AZ?v_=+p1i$&$IQT@D<omdF!BUxW$m_)icAMtcNlqjb7c`^F93sU2!cvG!=WKO2W+m)j#S<^(#kz zhx>`0lLl_SV~zq+mwK>9$TO`7ihfr<5$U7kSaEDcSftry}R?z5N1?yJ~(A*-T5u$^vko<4=!o=ywJ}fHbuoc z?GBuRx-%ezK_w-l7L}qUUd1?K1B~&Gm*rH#e z?}^LTRef_Q%-+%tIzM|QjM@_eihs=DjW<>5xzD>|bdy<>2G+^oE8Ltel$e9lT<;ba^ zf`f$!wE@#vB>3T$M09{Ruq-gbQ<6!4XOozvtC zWqSN<344ApTFVO8iuToy$c&I069FR3;345$ z!7Cm~F=aIR{>|T8!JlN@?$fAEfG*kKyw$-vyfi{=z;nqCx}Wu4G1NO0(VT+Os@oJ! zExm#r(TV=6*c!QETfZnRcmd%BJsq|o)Jse6SYBcp^=EEOK%}S*iMN>4Kum<}N_&lb zF!C>8>f$htG5x26MqsU<6Oe7C^h zd#TJ$*05q_@lNi8^Ay4JSDDeMko%g3&Oo67D*5U_{RMaBO=3fUHAexD)CPQ;pZOxB z*6Qoui=6V&6R{Om^4z%xr4jT%?zA{sp{Ue*4MbssvQ2#EBt@t?JKNW=e%ytr24J15%Mm}YpP?Lq;sppWP zU_WeKC7wL2MZh|xm2KIn7m~W|rP>aO@xL_{|EGcysQ!=lKV$h^a3fN)Ws@PgVu%8t1-F$>WRPVzcVClLh+<>oA>@_51ChuQGKOe8=B4oV?g>x4IDAKXQNK zd6RuaNZ2Q<9Tf$j>f-;L1#k-(1U1s|LwJElCsOtq3+=EcQ-7|8N^V4azCU-$&)zYe zs2gJu7LLd)u{x}dhFRL2b~_M8^oke%0#E~D?~&yrDhXryLNDy1^vvvNx&3v~89f4I zm`HU%DksWD0ziq^K3wWOQ*`vE0w|aOD!6i3X5Fhuun3lXb3}SKq@g2IE(xAhZ~3#h z)d57185l^rPpT-L{EE9=apb|g!OMt8Sx!3oh2L0Y9_%TnIq4<_Hbu5xc_NLYj zR=A=fTb{Qz%IA;PC$LM{{Vng%5YeNpmek%bzsS+z`J<-~NSkO55fPk_s;#jJC~o?; z?}eUwj(ywFIP6a_*cA-E-Mrzuli}d`t4A$1p^vnR0oPMVQ!!upvBzzOUQ6g|!?fAX z2ozV;w$)~H#M<`{$m(#8($B7J2Wn%^uN+NRu;^s}eH~yF&h#>1j3by(zXC@892oee zY-%@hve*oOY1|)me{2b99Bz)}E~Jm-1RZI5S$lFM+$4ZZ_UT=zKj{?Q2?--Aq>l9l z={46r30`4@&pu-bh*zxf+We7xddKKA&x>P)Y3z}-XysDn;4O*alM(s7!x6FP@$TGx z-Ab`KL^rJW=G_lgcG+%hg=pBMA&qK&2ZuMcHhvmvdA~R4)-WaVK=_f44Q5OuSZjQ~ule~kTqh$RdpGx%bw(GN*U$)~s6^R?YHlfNQ?_bW5ppB+6GPtLYB8~D7O_-C zZLOA6OnMn}lsLjn79Ue>R)J)-5AD?M`Vs4H{~5qtz#ylq_tp=p4>tXW*3J9=-)h~# zn*X77Yo7Z5lGdH#Y@;#Q&rfiZ zP8JM?@XXQroXP?V*da?8)DD;iT+ocZujicc(ftI!06J3Y~?dYiM@dXryCQ(aiIM+MDMG! z$33{WF-Xf}QKUxzo%>53LaYxkTQA5r4UW3@WBmv4ZksaHaSeAN=M&J_|$Nb?U3Ez5H?Y zZ>;L|fo?Owfe*K>8BVzixyEAK8v|V<{A*@Df)}iW(&lMQm<;Um*!EN%*%A-C@=?x1 zB$+hRXdaPrnkjD_=Na=`SCRZN7=Ozjh1|_=tR}$aL~R7sQ=2q?fv3AM&Qc_MNG{Y- zK&A`_#+9kgxjg4_p02Cl6EmCsgxmj^S4cia>wAoE>%+_ZnU=0@_nyK7j2PRBe9s7f(pu2YCDuMu{- z2T&C67KIyc?B#i(VmCgk)4GxhjaLgKE!6p-k{Z{}f_9HHa7m!2T|!N-H7;3LJse=L zdsw>QJ*j#fwN#Cou~=R5BuHB--CY7V{rk_S`EAJ(+v}*s3vv(2p(|0dzx#(K(oW|_ zo4=~y*LZXkm!x&g#Kj#DG-bBCrt3bvuN~Xx9&r&!@#b zVMW$*kU|W_5=^VMwf(EI)ee`M#v>1xo$+{CWZo(jY70gmefoI&!B`Oe ziVN~3Z>9ssP$go>3A2-dFNNFdC6*-Q44|l4zrr6dVa+pPspB0TliBzb9|`TXd7EPT zO@lkqv6)pz=v)rZF(Q4a;}1;If(x9Niux|CrHR6yyl?X2n)Wef?-gJ+C3IZSu1`#y z0M85w`jlQS?H3t(siJkc8|QrcW5ID5Z{3N*m2ml!1o4#BC!x}%0|4gD#h@&Em$O+R zbx=fmBxAafghZp&TO`@(N)yUAW@Rs)aGdMW&^{wF9IhlP-$&bd zy2?|>h1f-`SQw>r>0JHuWnL<4T*(_b874Q+rL4vgKy9~-mYL^ z;BrUwU)7*ip0SA^*j@-_f8HvsGisHIT!42H6y)%6OWJm4UPT%^ZM7c6JhF0TT?AwtJF|7ZVh* zb8SZK=chrLCFcE!89#2_u8_qZh0J8()m?5)_F+8j>3oHnJ72*#SusMM?_GW#BR=OG zDW~o(pO2)I#ND-MJ};@?Ln6JM*rDGZm+CAhE;_C)ctaQI6gd~uDdPc`G01W~sVKQ` z6GV~&La??FBphhcTg4C%pz7$}NciUH0tG6o`aw2nDq%Hm7%_fs|=<cmAet>nfu*HLWch16UC&gu3aJ@0cNh zFQ^z-^`t7q_Smh3@G~oYYKBms+e(2HbAqC~-W4V%-Imhp>OiPgSr@$nl@w@_sN@43 z37?Is?e+wogS|2@T|nT zMD5r7Ik58xnUv543sC!=R5KU3HOxHh63k@vI;MN6=Zd11u!^X7%|HDFO_23PMfX+( zz?!FN%t(x4GUxg7ObRzrETjIwQA-OSZ;zZ72t}1$?eX2V4V#V>)rDybUl?A2HmP4Q zWK`IRA7a1lMk*=2mGFT7E=gRC?JF2G5E`eY+G+P(8lTrPMtdAM7b%{`5_29FkVWC6 zeFRxABjH|eNX zW8>(^4w(ss;nv0v`e5zaA3G$%t<$G8TY>b4E~lLHK;f)vTOFqBPW4X_f9SacUYw+c zn~zBHYQ^6ni0rd#vq=G1hxALec%3Bj`&S#2{yc(c4g$G^&j7U zkHX%(q0pW^h+C0u;E%9Jv3+$e_T_6M zi*lj_NI`tPmj~VcJ(ddGG;VXPNNIwC?g((`V`}W1L4-wyh0cfhavyiYx@MxMi~oGz z7h4!&_zKx;Ya3!~Vw~jXkm6rge7S{q0q12InOgJNcRo@`K^-#`*EKSJ^6V^0)qvQX zi-M#gz)y?{-A+SV0e2eV($c;7fI?o7`H7BSMX92d)$;lDk+|1_vJLkTVr4dOt<$CD z$wz#dmRwj}TKZZzZ8a6KVBE)ql$Z>*PmTbivn$q><@MbQodq4fR z0)TP5V#%A3RA{eniP=3bPRnD^J8zB*FjdnBIxARB!ug3x$RvG=-WPjmSkmPROPHJL zQb)*3Ip9CY(CIP!?Bvo#f`azizk&D4yv=cxFM-91mT}s0p2bYd-dz~KPu{`WTaHB+ z9e&MSGXuxt^K209>2Qz#>RFI{sg|yMZY_?qFOqSu!6~87bMUPvGm$y9H{3gpl&W0L zL@a@XXFZT|;V-lJQ{}AK=_b@vJv0Hhr55v^E}(7eT5+5EC;E{QriKmX&}+An{NgB0 z7V!mbwT{5}Xm*FNGq}U4E~Pj{M{~IIR>0b3pdMg*t|dZJ*a_;eM~T+u*pH=xx%2u6 zad6TMcDWA55{<)I=ml590P7VkAq^+_Ps@`G_}ql&JyPzVE+l)&CXn|L0FYDqn6WinD#~gZJi_IrQ?Ko;^cfsyuIUJiH+o zNTv_1O$$Dr?jO53GF?cCsl7w7_q&CF^pctB%Rh-~)E%L7jTY|AIn$yGbx2xmmyUJ6 z-~_m|$bl0>NRY(NnfESh#J(vnn7=0uB*abLdzZoQ{Z(t|IA=O?%(sPW|CFF02?^fpKKqoB6(IkChy$xPL)TW*l9M zZB@7x*^ z3_K9+uAV!Vjwk4Hg>40KWd|1JCE-BGEW5TqAOMK}#OZa#S%+&L$R#a)+Jr4~UfX@b z0xcZC_ABu>{_VXp$fUgVq4nof-ua&Jk?@#(VKYVL(P34FsPx&Xc08_mFjuRTQsIv# zr_TLIkQnQs`M7zj`5ep8zDrp;Ehu*jbhlG>3qA}wMb9PW3EmIG*y1(Qq?Im|}?m?uDa z{PsnYw_~#b9WBVM$?EV!DKF(FK>2_AyBQ z5N0n$y8I=D&g;Frvc9eTuM`RaQfTy0qB?4zS@nErQE_^4M2qgiQ=iA+0E9hFqwi9q zVov%dBqDH(>!ynLO{x#GoVLw^?_*4m<{V*?R50d80)i@#AlOE2_bVac2|Eh1Pep@2 ziaW(MeEW&?Z|WxgII4QR&zn5Cq6P3YbEKT_&TYt@4uMDif^JY`Hau2{C4aI=gmAAV zYNUZMhy#((Ny7y7LOBu}z!{Tq)lk^lqfh?sT9qbMM+zimSSy(!dk)(D>Zkl>1r3G>t(BOX_1qeLIKbg6uifBDD$Upmnh=*EF637~|gHiz6eQZx3;HhlLSW z-yXEp9E^0UFD{bovV?vv=<)Qm!I4b%)rLv9lVuza69%?Ss%@Izpx`nJFr88XvsL=^ z4z9}!`7(x9r-%&C#YHsVgHvs_)tH&dN3?OEWaw$MH0N*eJ8p35l?}w29`~48w(=9B zIYvN*dhSY9BdC5g?Qs_k2uw}y``))f(!!TGOxtUuePX=4oGBFu-t3JRrh33^QsueL zT7=BYYWOwk*M!`-U8`HFSF|aIG;BUfMcy+PXMQ8-AA z^!|;Uha>1>4(JkUmz&tneKlg98z!Tb29;JajM1B_IwM89-esH+8`%qrsv9qpguK*` z)6LA-B>$woA<1JWyl0~Wd+{TEwoozWn!c19@y<+vn_f)OmP}wFE!P$@NQ(7Dq?HXS zUzp&@ALV~z6`$%iV_nm;;lVqG!pB3q5}4`(_`(FKRb=gH3IlpBbt-nEGT~MjDTK9}tO<*S%?U zkvq1D3#Hh>`AbXhD_5y7s2EFF=HUVcTGQ82odGaj_kW}pmPa?H>`QuSmuB+77ov9b z#+Zk}u%)rhEikN48mRAzeu&pDG^&2;s-ltjQpXP|j@K2~<%~29hvDiZd zL!b|B_;efd5dk7R=Xz5bNek_Z#$?_1S!!lI%dS$%;2x!KJMJ8Gsbm1vs+TgMfftGzXww5I~VNU{}?Gu%_6b zum@%7klrjtXTIOf&==uVLoaM_t6_=hocoxP$&-r`?qh`{z$;++Y{r7{7Ly&yszW8s zaCqzjfCnhW)63yqOFV~hw4YhKOuQq}T2j#~z(0+z^>j}|UpJhxe0&O5fBc)bu;<@# z<-2UUkh`e$6}n`a8qcqET%&bmRTN$uH2Vaq7m)N5*<0Pz9shnDUl$N1$H7|i=Zwg- z8bY#lJy06-*;l!G;B+^?gvJ6ry*S64ERF zjFuOp<+LPV?wpb8(0X?Fi)tyH@{(AeLg8$J4+kJ9i=VB*W@9W!Q)7aL2|Vq{ed zmSD9ol9nX+WU9CZm0mKJ^FslnIGc|Q|1dDo5z!iwN=$66hGM)yEu=l+OmX{sd~@6~ z#s!==H-RM-j%lYfd}C3->rD(oXuD~zKYXdk_C;OWocjD$FP7jVwVaw*@>fj$`N9ZRISC>B&Fcw-sH!C5e48I zQ95L3_-!fYq4ph4+M4XD@q^#%x>@i0=)T@yP{)j?2}#F#fm@T9vhM zXVtk>pl0K{xeVKfOB;jPmz%I%^@%qmW&O z1AGB;jg_~$htSDNC`X)HOixY&bT39hbV5-jgm$-g*l*e=a*AYo-Bts6G-NGrJ=#UW z7wv*@<$KhenNkq^U|(A9;a}ZsDZneMujRLbu@)l4uD&6sg%n0uq@<3Hr0kd*`0xaN zn!j@_ksupqoQzBmYWbjqH*jJeO|OI>3jN(9rg9jKevRYI@qM9-Bts$Xc(d(2oXb_; zn{s3gc5fy@z1_S`r2q*y@Pa0IZfGwyp!0m?{N%1x@whSr zpUdH`3dJaO4a-&9kD_s!sUif(HeE((``4FlG``^r)Pk%aR&|A4Y8L4str8tv%6)Hb zsN=%|QE*B5MX_YOvtehYF725>JU=lLl{y;$BvwYghp!yno4psvFevrA5;}X3!K;Y> zV8AcO`-;Q`{4f+@MBMW2=k#)B<@+mx$1kfneneb3$d)+q^FDL3Y6&e{GN&U=!oirq zVJtL0E&Xb6j^j{(?}mByrm}H$KP4~ARrV0GoCD~6*-2s^Bdb0pebW#W2ba$YJ+of7 zK++2BlqS%tb7;vH!YU1eoUd6IqoSFN`xme6ba8DEtLm$lTH;ykXFd3+G`E@M$S#Pk z+K0xpm-+TN)d%s;qBHAhXNTKvlIECc4T^G7^Sxeo6Co?cyw?-uh%RH>`>;C#Q^+H}nUa-$&{C$Ki57A*Xo+kljlI$QUz*zDOa4&^Iv{sm)r1ZHw%>?%fZR+%t>Ctj?+P8J(e#!am!qug#P11+6*GLPs-G;Zx zB>myf=0`(KCOPlhk+f|-9uOseXdvxrZUbROstrG#pA2c0VvA&yK3oJ86wV4^9?^OK z=HE+=H(w~be3IUKA7JnH1zlJMx0P^;GyVo%M)a`N(ApKl zD{Xyv7xwuZr^F+H%Ju&@bv1;fbcH$C?!Xmxa$uife9p(swU51G=NLjVUim4bo58kd zO%^{vid%=7WR&;~+Am6&Z6`u*C_7-u{XbS$(V>@UX_UY=@0~t^`j62rF8!U^$<03> zFa`O%yaf73TP>minbFIVjVTg@RRK- zt=eDo0OnX_GEsLa-Jai>`V=}$?_e^}Zfd8tzNzv^nt+QGACasd;KvMOLH4q0@{tu! zTaCF4#o;!cnBna<=#rTAi;`2SX#qF=>%+uy*@0_F41x3ShI&SbRbCBRG8op~NxctVV zz&G!C4Xu*OTS`A;?%NNr%e#0w*2KLV&sZH1Rjo}D>uAhL{O1v%T#_X;qF4n>R~dBk zYFw>JuZFEATnx*1O^Kwy%j*7iLCR0Gr+#q*Fk0?%DT?*kx#lRsJXwyrj-NF z`kVUaxMZrGfT@F!jh+*@+VlvqE+76waCQXjb&LA35xfhqOu*#KN}f(`2Ka^KAH6G zjRTDF^buL$7YZu%UV)q!QzPv}CEYb?h083#yiaB>Y6#$Pu-LGeCd9dl%nsTU5ZWoR zRa{5%M=64*_CVAALa%UHNRj7wdJ^G~!~T!1>oB{F8vwJB%IQnEQ`MDsy8<2c_0C0ZpB`>nm* zB;t(q+k{r)<*q+{Ac);vQaW9ix-^Z6v7eNT^nuwuugLpaQzysTMnr5!SVU95N!IeU zI!^(5dfL;aG}M}MC~$9BaHLw!K=(+03zuY{ z8*++hW2==!ArgIl9&gAkaGe!W{DD9DWV2qZy7dSUz7#BA9Pzj#L)D{EcSk99lr3~& zO%lB#CAjm#j*s7^oUktsNWr`}HBqqkY&tDZUA_YAaMfh(vQz$(F!pH?n_`FBz@<+Q zL+=Y`>j^sNpoj$FXUe`VUs*ZRU?c~x;CcC5mvKJ(lO=i5WKW?a8}9V&O%>SXTd>l&w{|jxBTd7 z?E9QFSlsYk(|u^HL+}a7a_TIgsgEvA0rVdr)nEXQfBnQE9pHr54j-&ODcTptbvXEWa4Ah987!diL(4zmC3-Sr4(Wf6Jh6~QWy<}Gx3u*?AeI% z-R=jHYS$R&2U0;o%{o{4bZroy!C1R*2!AO}3J`hjP#eEMZE|{+YCipv3_dKsZ>W9% z;>CTeyBeo7>~8=%W<65DSp}daU}7p{`PL%}cz%%x(DeYH11{s`r##QEg&PPp2gez8 zG(QRb3ClOYQhE^!RH;i{MyiABD)pkYlI=AVtFWzmiex&Vc=TR_aF2W1<3mL=CAnkD-z+S9qy2#+Lf=hPS&LY~`} zWUC1OP$!w!$6id-@uDD#CsE$gurG zTiee?l%Y;DP-&=pm~B=a;l31bxiWetQYzpd`UmWBc*VfNNc~JU!#Re7M6eRUQw#}f z<@M*f&8SCRB}r>CH&QwUw=d==+7->zgHC_M|K4RdVBTfL_^I`BqHt<6yCxrtx9hmP zB)h$$;`7MG*|$~7A}~MrEm!wl#NB5hlJK(JJ07!AhI~5PgNLgc4v3aZAgM#ulq1O~ zXS>w(W!9hmLsgYe0;=ka&y0TTK$KMbO39 zE`O3)(y6>hLUy-2a7r7&dM~?8vQzQ|;V!x-HXntuwc=BEzq&&6pJ)G2=^_UzMKHG^ zJiBt3;AlU1vXzw)m?%{7%M*veyJRc(-a}J1za%{U%1dfd@e;5EAVZ(+yliD5Ftuu! zxjfgqd_Rg#C%(CJia=qlG<_s#*#GQng#)}C0qJn-MKS{eutL}z%%v6%@U}R!zEL`` zKz*`i(BlpmSL9FDRvQ6*Ra-Xt=ymBY+KVqBH(BZ$gUUw;pdmV#Xos@BQ>|XRuQc=p zdu_vS@A{bFC!EvTC}#EZa6>VI_r9EX5t!OeW!j?f1ldLA_}zf5dOtRflZB?Q=ue=4 zrO*mcrBL**uoj|Mr%b*8rPWau5R%YBWms`9Blwa_|C`t8HXnbP1(GW1sda#v1q$BQ zb-auqe+&q0(U@v@N6BM&bEGgx3kIpKh6{QT6(;_^oW?gZk=m{|5V5I?G5<)cMSanY zUgect70+LM)X>HmwR>r!{Gqs&r5AqROx+uAII&djKU zOLJlmWdx2%P8$#O_?P)p@1A!ew0pr);t_a07^l0$ z1x!7Txfp19d{u69|11wL(btoA$^5d$@$(eULLbVUaWwD#_&E%jBIshl)w)>M#oxsj z8Gi{M>$OSvt~juA)mK-%q74!PF9;W|S0uIH1@6SzdnnYkbH+OR%Pr$7Mya<9kY2Cv{ zNU&p(Cn^zub-fhKO~omI3SYOw?)evCqihmbr^E|u3Vupz#RCVP}>Qri8LQRK7Vw>{`;gvb<0(7VTBr?s!Hc(yW7MZ zzWMa9t6BL1L&Up~cUd|DxOT)dP(W~8e_MvW3UF-KzGRm$FE!*qi`j>?`r;jWXl%+( zOU@&o8Nakk@a7l-mA>T3jLc))tnY5bmWaW#fG>A@uS*QF2;&_h=v`$57?#5242-|X zhjnU%1JtZ|Z?|J6WD@c5X#UkP$Sn==0SuG_w&836ZN{;NoGqyhP!-&PnY=;2@ zz0FX4i~0DZ{cU)~DxG+TJ$Er04r#u`?_eQ?EG*TC^kg`^u@_^QQc>jQF7IO@Lf$V# zohU*mG+O9Rt>Ds)`{#}(#wmqv`6a1A8SQmjR%OmK@L&!18OF!Pok$H>HwJjf~r3&dCeAj%%`7a#dz4v_N#s2kRdO)1}>3>SB?(hF4 zu|CngVWSGJ%4(n&>j<6~?kw`cTDH#k4GgSQ^p+Hdnkw!awhze1Dka4uGm*mmgv-M7 z`Qz<&iOuZPTzE|9XF4%KJvRLCASbeo&GZ8dweXj`KJ!=J?g@EP>EvXLGj%SGZI7Fk z?@tva=D$W#v!DSm%QiAISUp)TXciw0#nuh`ugSJjI8=1`g}SnFy7HTVTaabP>I&LD z&xXlmBU(S&ZA`sfIHz{qsQBMDBmlpVrm?94h|o+&aDPMpM1MzrJy-4UyxPfp>4LSE zX%^V8OaELM{%DLMjb4t;Ig2STkN&}xpGPtnG|t3(Io5i_gqr5h^U4|i>XvO&A-Dt< zuaq)gPOaT1i^$20`Dv|lZdo9uY@B0c+z?*d`S@u8H*og&$~SZcCD+p#+3cGBq3$Ax zwfW8D(?Pw38?oA5;gGdY`J5lC6bwQqH~d1cOg@gE#179HXF+jdmML@}<#Rw4e)Q6N&%V^P z*%ybGxgQLJ?_6E_R*uxrL+e5`tm~>X;r|z9ZyMIr*|iO~wbfb`YOSJzL~8{tLW)!d zfut6dT7@{HGDJa%GDYSgQ!Q#_OqI$EQBhG5B1Aw4BqD@>3=xqbK!^|^LIOz$nUlTW zP4DMEp7+=H`Tjwijze?pb**!q!`iWvJyLou?vn3p5K;GQ*_e-`xTol&ab_CvHv^1B z28yi@utXT+r2J%o_ryf+p$KUSCN0?zm8m;{S_QHD&X87o2eQmv`XnbIw&0Z#n!v^H z0bPe~DkRvqtG)9zM5%0iHs8a`Z+FR>x;UvQYx1tWNngKvCh~phhE3GOjp)dzj*^b9 zQY3Z%#A;&w*#%wvsbtye%5ny419fD6W_XmZS&oa3wWHzW4;8HJg~5S8hiv1H z0_M2^hxL{{CDI0cByV;d?5^?KuSB_)z_@ZJGdJn;!#-uE@=W(B^7C7BXAUp9Sl73j zBXB{(=KZ%8Sjg8U5@C>x%Q034fpRX;$ps$%M{phal#2Zy!PWfh(05mQy*poSeCbH0 zX9X6qtENCp5~Rx#n8y>jgwXK)!J?z)L+U26davmfEA#MiR4c|HZAhX z%zXg#)k9({ev~%K2Q8>`zmhK2!ROz!`}}o?|0?Oi&k|)7?(4hb5udRu9|}AKLBua! zqnT%wrugR5TEjsgY`!Hd$`nG z{vW9od0ImKB*X8Yul`qSRg^B6Ey@;Cr&onfueB^50zm-Yvg$MB7n| zzxQQoHx~FgRNZKVN=@8lRg(wvHz8?xgGww>JtFn9jjuCC{f?d78uI3H@OByig=l!G z;Zy1n+M~Y1x4?{j&5NolE`5b+z0w^3{?>f)Bh&O3+2oL-hdNw#OM1=i^ZKAwXnoU9 zr|kTpb$rRQbA;{MmU(6K>*9&%Qv*e5)oMUbi25!rG0->ipJ9JZ70Uo^qVYKZ`PP?p zeA4NLuUUjkKHjrPXYnu`my7M`YUr$+>l-Q8T2P%8zXeY1XU#4IpI^8(`Yhect9k}r zx@Y_*An8)(cf@vEXFo54Vq-vKxwbIc*d=Q~+aBB5sF`cR^r5LqRq@i%sKcgXTeaxI z0J$KwA#e!y+P`z#`!q3RxQdH&Ef2ThwBEJhb^n+w7abcQz{S6wr``AO2vu(b@b zYH5#a(=Z#pF7Uk-M|Y>&L~*s9Be$29216@m0}s~qh0;#R`^pYPN&~2>8jb)9*@ifAZ%o(J+;iO_t11YV4MI%r6 zUD4?O#=RIp+_g-Sj=MELy4%6{?Ex!&?|#`&?WQ4pE0vfMI;qz9(z0$g>bv^*HX5>k zeL$oCpt}e8;{&BerqC1h8Wpj5)tSJEi?@OU@nKW`DhW4;A|9g` zt+ZizG#*DHn7{(V(JpwBe!Ge39z`x zc>bTM1IcY$;|n(uH5#2StB+PO+OOCX#cynwvp%&-6@>8hYl|EcH{`%T#H-89zPHspA3&IN(*VsiBFyfM4;~G7xXhG* z3O_>Ehy<^MS12OgLtGTAt6kMg5z3M4<%5v3p|BBX^f74%8$kc#hoO|$-3mz9HdRF7ZX#fpkb$9!P*iw+ULi$ z*lB!BIkO&VuO8nz6+kf0Wz}t6b9>$`Lin9F+C$jhrvz8%>lO+k2<8ymr z4jpE=m7NLDDcpd$M-lNmn2mt)F-n!Cn}L{@)I*FGLXWuxV?E`?n)>xNcRdNFzl!EZ z=!{bou*OH=KM@O4EiIEo%}Adik<0D;{bFZ=Xe3AMM`Pa(xCs+6>OK+c6ItuO$z|UN z0b7&Qt{*%DF@KLg)g7@I=$!5SAchy@((-(F4_@$g5<;Quii_(GbPnbVQ?@~w_{7?q zX7OD9(~Fn^4sqa!XMjU(NSS9#yieja=^Tm{EPd|d;T7Eg@rd%J_WgX;kn$bN^&)*h z5J0Mn7ewP@pUBEEMC+1`aXB-q1t|≪^)EA)k{!Gix*8W3+f~EOB@FhvDVuV_?`! zTb;O%<@&~!)|h~+caG)L1e+>a3AOXH2MP1jv|#mZ^eP-e4!P8x{EH|iAw&V0_)mY* z|95oP)f`Bhg8TuHU}FyNaH2b~LSE)|xur#nvV9J#f|7oZhTF&E<6Os_%pERt#l0`B zx>Q9xz6fBmQ2u!D4-E?c9!vBtB)f`e7gx zCHk@6LjGBq=abn^!Lq(&$PeKta&66{oM^5H{!{WQtvu(f`iRm3%mc!dr8&K1UL7%T zuDEutTemH0<+Z+VJr|-P;s@sN?>YMSkF!tjo&&~<`W|Fas7j&v*Z&XbV)wVeyB#28 zC4JG!=~-ET+Ai_|z34<~eV4GscPc1QD?SMZ=6CTi_R8`pC`|v@3LRh1 zQidWp5!t14e3oBaWS8t?SiF~Lir`7e*Pj$JgVfu-8=bz(A)4R!HjO>_-TPOA^smN< z7QX89KFijtHbYXm5&cBhGf zu<5?r$BT4kC8y?_J+&!Z;v5Ei$B@pMzuwD3d`jwE_4WUT>p@28IJOAl)bhV_%wuRCi@_R4myLJ6tleoeBXo<@vUn8$@xU7$m&tKbYcYx^d z8nV{%*bJvJxO5Jl=^v&PlMb7nr;!I|-m?NEKk5mkX2m`RpLEGGFsN6c1jfUU1w{)t{9vR0avtUJ%p(+7~$mvcudqHC5m;Fa?x z^+|nWti(cLGbg}b4oj*d&fq;XK9JGSG~<(Sg|D@29@4f9i#sy#9)ml}5>F)`bFi#!koi$+ecPoFDn*REdoV7XO`$+O;XN9X` zS*^m}ou~QyaYSX@l3`}|?BOrae##=nSHpP%|CzDFRk3p(=d6`#Amn*sa_+o+VEh~* zo&FBkPlLL-WYnx?T^aL`VPPU{|S@ zlqoiGv3C7?W=d}GN4g9sC{7WkZpaYi`P;^_M-`0*j^U;aYjo};lP{?Ny7ze{MfSya zmu3Qe@Kdlo?N(?vfp1oR!{xo7)%)#cT!IxA(VR`c6OITob>E5*5QQlroJ&&e-SC-@ zPx{)H&(dfnX!prjFv&$s_0PcbGfkjtodMla2WS?Gg($)2{51hKEyQ?Mj zs7Lr~6b(srb5WMkbKo_uRX)v7xcq#6s+sGq!A z0Ait#@!yc-&mb^$<0A9o!{M&yoyN|FjdN3ruE~xy3jAk7oo|cZvY#Grh;EeXbo8tn z%?rA;b zWqh_rst7WdQr)2Qffhxq&;O)C9kyDG$FbsPoUjgX2rt$CAerutv0-R^1x(va?ho3J zU0;Zg!t5U?8VAT3CtPs~Phw5no+s9PW2dMdQ@?)PFQ9s`moc!ZSKrYnJp-Y<;_kj4 z;hp_gYj^lRBcB-F#!LD$I{BUDD^%*k`P)=*BSV2cVG7z@Q0cGezCln9TYnn&?qEl&i=o~R!O4o)lSzSG9%i~ z;n`Gzy6(&dB;(8m{{1x$wBTSuRxZkIwT+c;bX7>&YF`otlFu2YI2QvX!DbNE@pH_O zShU{X*WyXAOZQZgu66-mkrVGnfg&4^`UxODD!@0XE!508CFJFUO)GO^=6XICf6h_< z{aMU1`HiCSrkV4GzNZkg9cCPwTKYJu?0BYsfH70&Opo<(Od{x?4|dRf8$AttB#aUN zA`Py7jA~R`#>uifjPbehY4gL11HacN3j_Pvn6xc&LU^Qi^_wJ_Khb7A3B~Wy7sYiW|3!_o|ucWj`7C_T}KbM2*uFteMH70a__TU~F-% z70720ta$e->fapKzL$h}Q+wKvc8W*GGAswk6IWXPhz0)I7Q(_a z6!oeMy_j45@zdC*qQx-sq83*?Y5qF+R97R!B)-j$bP+WBRJIh`9Y9<@a+r%X^LW25 zG~ht3X2FI@sMtVjdfI`nx*Qa5i}HF`!mYmC#|jd z`3vm64|=9lKdP;S>CFHc4Va=qU3CH?Cxtr|Ww;xd-`V|s9itzfx)*H7^@}T09HoZ5 zOR*p_E*>~lgy)K#LK((B=V{8urER>Y?LH<&tf4q&2uw+JNvq5k-LX+s>}T=%z{JBM z6{9$x_G4MxE)qYXd=ACU9%w>N4O9f{SLJu* zK|;hrk!B{%#-~x|1ih@+%qA0Z29?q^y3*l;BAqjorNioogZd%uQoL@g4x!8_^@eQbS==0tsZ1= z<4N=JN>&h$(OfiOr~s1Qv#^`vS*n?*9^BD0h$mK!#k0IQAf_%b|9UDeeEL3wi7(zy zQ?}Xh*k%0YD%YHN)8n|!0^4prWR&?b>1Rpb3-M9!B$aMhNy{wqvOUIx_I#P4nfkUm zX;dZ(R^?p%)R!{fC${t?w4`AB1ZTP-Yg#8s$OX+o4hvL+V^mEkctZCnd{%hbkrye~d~kEyy@Y z%a4ow-8kLXsOaQB#jy14(|!@^ft&y^I40!nmO!7TFS{%qTT{q!`+K05n=d0w^dpt#Hw@cX`8=(PkgTv!#zb37u1#uG*EA`F#&z zz0Iv8j>{UlLuFiGZOaTbfM8^x9JMi(@gz~;Tv21)hodkT)dNOB-$}Y5cTmhDw47o% ztySQ$c8^O7C;I9CwT(1c_AKjJQnVbjoviBZ`*?3}APPC-F<3l2IbC|nqxZvmmI8A4 z#ZJ6u0JY`Ns*zlskDeH9gf)q%-MWD+c#*%??x*D}dhXmYHwJ_V+mZTSs$O6y5$JVP zfCCPaf<6gQu1;|Mk|f6Jkg@-A@kx4h5j??22GaflvMP7dQ{2%E&%jq`f^e$m@GX z&1JBh`m!hye3h+)#C9Jj6^VqYUOZ?v)>t!!zkd=Sx_>@Ew`{!3j34X zX|6#GCdWf}I5;dYJOZ}_eTwHAy78=hxCn+3obVmmESI3eyHaSJP+8!}g(3#%ojEjB=g}xs*2ltfE zPj|tTr6O8IgU*SxlNF$}RoBp6d}AsnA(A8*=hreq|4mM_^`EF-QMhmS+@TTJ?L%tk z#jKzj?`+8@L~NgwufZ4>wk)_Z0hR8gKGUX_kw#lqfLP}%qv*arPI8RxPIo=?Ikwm@%jSkcz z0bj5Ojo8nO%g)Pd`e>`>?R>WFQC==DXC(L>e)3`{Tu_`#*-f*d4M|#{T+~OdC{g)s zS*Ck|KaBA(!ad(L&QyhGyNJ&KM`6m;4xftX*H$R%{492V{i}j?;wb+H^5c%BnT z0{A5XUA(6}yHiDTZ@i^`ri?)m*5wg7Mr2TmcIH4@MX}oKI4Q|EJ&G=$;{rqP9-o_@%=!VTsfrM*<}Rz#O^|4bXj}ss&X~rldK#J8yzdLXnz!2v-lUD$6f-5!mC4r1!ED z-r+k(@Aly(nHRBE@$apl+~7xX9@I;w`%X|BUHn`OVU5ZfCsJqJz~7~wiUyIrav-a% ztDiSoGy|>PnbZmcN{>+H#^W;>M2hq^;am5|%UpdF729Z^+vHw-p*Sgej5_SFnR_cUP(TtD90f%ag!s55Bt3y z2`DwsJ&a z5ed;Q95NJ%Y8_2blU5ryg7s~~x6k2LPQPn9R|YG%`p8pYdfWW(`Q*)|5ZplpK#ou< z$F=O?jUmVkBDGr;C}rF^PE^lSD4%5d9W$i$rqK&WkAQP!5LL&xQ<7<^45}qgIDmaf zqd<2HrdinciDsvKKZ#ZFNa=tatU`TB<|R=T--%?Yx=XR5sr+)q}@oU zX+0*ZL%;~!}|{paqi zp>F#!yKcoW<0Id?VDHn8Wp~LFK3OJ(9G{Ya?x>x_*sqaCR)tLVW({+#pj}L5*Z~h) zpj#Qs)c0z4?pA((oX8AYTK_=La&Bxpzs4sFdocpw5)EAOst+c%iw} z&`a8wD*PmWN%|}G?;rFm5V|4rka^wOQQXnkq`O0w-YadTuyh73;a7IjdMZ1D3tc;| zMVrz?s+YB$@q(6J=_Y5I(a^p@DryrmWCk^Z6Uq6Ngo2mrU2lmk$AzyjF2jmGkU0>E zG$3P`+YEU~1I|F4klGBareO3FG34$qVET`q0_{gnn z&6Aoo@xIwtUo-+sPnxJJPl~fAd<|`m36PpubCzv;l;lZx%C0CjR!9#IiKWS9Bx4J{ z_T?zN6o@YmA{u^fGwT@G1HoAz0cngw8n*_zz;Tk+8Z1)Sj!9j?tEr#*VC?&V|6E=K z(+zT||w3Y9%DKg|eSP|bTtz(?NZ~26z91>eI z8Hn!!lrShYGPlw0_oNtD=L&KBU4fajCyFX|f5~qq+*BS_Cz3?EWlx#Ri0SONV-JFTX-RGJdj^CDwFkyy=%_y`o~LiVR~GtpBivN>^ZSh zC(|=?V2r>J#bq~1FTH3XA3ucud)fTMiR4FDW0aNjIPY^NgM#iZ&kpbV89UJPl8=4@ z3!jwkxYlVJMvuwokOt(ofs8TVU5x7>iA+Q&s0CWcb5CS6A@ zzARvAh0Sp0OVF@-Djt{;=xV_%m{H~lHW9x^?5cXPVQ^*GQpY6)SG!&XpL2Nr|M^o{ z)5=0vGFS&Q^uURL0DzN3SWv{lJO#y9G}fHS0v`d_pm@PNuiTq$q4X+~o|~{E2XALZVmWx z)W9o|X(y}^?gqqq;k0P5Wq%kgG9s00ENLQCkci{!Uo<(LUK0LS%=z6{@g{v;nQ;AW z2c^c)8(I>EN!Q3;JYFYw`JrCEt;oy1xf^b1o`~@93`lP`_e2EtakhqQB;OV+=*GGB zJ*Yp_Sst1K4q61-kc4Q6^5Ic{PA6~_Mbh=cBuJS1@oK~W@2B&BeRjWYka72c6V@E- zM`*(sNzF3SKm{oh@1t8r?&h2m82p$X+S5a7JG`LQL}e#+MTawWc8I{3O_HL)?p(>y z+=UCRw{87nGQ4sc9gE#9MGy3b{R?a5_l)jI6*hq$67!_ z)l;C4g=&0D9z*K3K05SCkIsKT9M;?hO%H{*kSs8CQ4Jpou*7)|xL`^IS$lxIkD#tC zg|)%3jHBdcmSItdpWXFs|1@APGtb}B60g4#GX|A}XRI9^OTFzEZkaxxAgmC^Ka^Qb z87i`g<3e^3tXi42+N4n$C80$^k5^l7%GK9g3gYmdA0spiW1-5UM2GGt+H~Ys+G8_Y zFFJ*p_~D}*w|y2+V|D7cEGPSLVss%Jg9?ah!BGCNaNh|#ICkl1&6qX3uCy;6*|yHq zgg8##x|ATi)`y01X@##!$?*P`0c*I=GF2U%EJ7P7gJ16*r|9{Hbhuu%gb?vO?JP! z>WYb~8-=sJM_lpb(N-^(;v;P{RHwC^hPaLdv=uYRF0qKV*FSHjuEUBotC?_NWoazCiIUdFwaEPU&8TBMN z+@K<9=u}Vw*I7Rx0Scs{2~Iqkf6Z^`(=V&%8#KN7R|T33!AruIz*GSY{7?WRDL~_> z)QAMT1V$vF1_8~A>!8S9BtY7cLI);s#|2d;DxjyAgAzPCB4{72rt=9J4c#?sE&$XcX2Q@<8y>V{k2HgCR;Wbq?{ynO| zREs&~fz%o29PpM$iXrT(L;C4(Bub?sQK+u;A>Q`oms zpc}Lje;Xn{%KlL! zvrN+^{+5s3xxxLr6~u%KY?}kZpVqm+(rnxu?e=Bc!J>8%FC_d!F>MA~WwUz_CSV%) z4y`*xGS(8sT+l{fm_h;b6q2C}3${{-LbS6ZS+ED_(g?w14Ox|n)F&f>G3*H4ZsT|S zuU~8*MeZleIhIP^BP6U|maAp{Ul$)3Pr(A7>gquW(<84U{p!<3iS5QZo)iU(bVkE`=UeH9f zQ9+!0adqMdL&Pmca>f(GjS{Usp+CZ9PjL>PWa)C*eDRln=nIc07Jk0-%j_JB0a}Xh zZ+rLdvEcT!W>goi7PynTOIsXPD;w~oB+?ZVFVo`(hWMm-(7m4>DlXj?jXto9&J}1s zYd^Sf7D!^wLH{Q7m{vb#N{lo-WRb?PMq>{g_-L9rMKz4UjN@uhCPL~xk$MagB35N6 z5-2qaKp6~Z#3H}Ye97AHu7&qL)S>6yq1jbuy&^FGZMQ9C*3Re|!p zDn(>&Hz;_X9g!*eI2z7NTTK+M45|s6fk|waqN`eSki!?csGD5w_oA#aE9WuDC#SXV z#xQ=DO5q1##i6!a&Zln>nr2!1UmFAtw34J6$F99#!`P(*lZ31 zEEXNeyOrfmvJ~lxS-zwME5s?VGV%=E7c6oa)P;&^<*XWD#)uPhg;&;3Gz{vZ#VGOS z*H~ktGM;5Kr{^$9gKJbqA-?t)>XhdtocBcAe%0<#mhN}0z2SK^ca)TF{~F_TF*+b2 zvNO7Pg=AWnu;WzFnl+Q9K!{-?j4?AXf3=tVrd8Bz`-7-#w-t;uO;m-u3g4kQMFA^T z_(OkltT}C9zQ;RJfoyRK0lGX#p09svb{xrHOSLem(_UJQHU>T~sF#(IcwXO7Vc(EO zG4j+kup4pXX`h#*QFGZH(r@|O8+6o>0PBVJ&jTVaH94*hwn}cxKViK6YrwI?^>Tmg zSzsvC4}l0f`#$i_i=P*?-%}d_3p3y7T#e)?uyAQy-0K8l)-SXck>s}(tFsV13#>|; zcD<@EpY;`qUD}bks@O~GHt0(l&zh#+F%3^5j^)^dYpEK3v!rG3**zx=c_eu=W(`po zu@Wy|i0U<(qEls}#VGLGts&ELS3B-Sm1n1?a@X^a_BR1vBtCM4|P62ysr7%6vgY%qak|cT#O{^!o&qwzokz8)5h(<8;SEF&!+@f_} zhT~ClV;X~qIOprNPas8I2vo^;6)vcNit+iY(&UKs2F<>N`c@m@MP*!z$9S(8g$H5+ z*LuQS7&J{+rPj;P+De*Xe})SmAcr*I#YToS}P;3AHoi zy{)vtj0~^DBF$tS{yO)ObBvDq7c4s=W7b1q3bQH}v|#g9JBL!>nYm+5me7L@8(mB7@|CAGYAFA$t~n$F+!NXDz)}3E zGPo$7i=_Q9Us4gKrJssv}ANXuAIX_<&kK0Nn)DDx<#AQDwvlSnB_L z(Z_|2j@GG-`dceTXm9kjkqt^CrdS^G1F;XO2`TADs&Ied41?pT@`n=5~p;=rN7yo26Kk=wr}wH9c|(*#4tEmU+e1)Gj#V*&QFaKw0J z51hoaxNrU_Zd}Ow#j+udWiLWY#;4+QN2ZPfucf~EFT-w~4oux|cPerQdV=fvvA_lG z<+Rf9hA}hg5rXAz%_632$z5V)yLv)nb=LQOK_TKk_OO@T@KE3%zb)V4(wl=APHsFZ zPunf0Z}SNA=iSIDqP&$Uv%JtmrK!q0Y`W!1({Cdu~e2c&TF#RKdF^c;d9x73N9hNgL1dJVA<%q{ehOE9xvKYv$||a6ddwRSO>RKn z)X$8JGZw0^(SGHFTv@yS#|=c660!|A^tHfXO^n3&?u6D>Q;Dscd(E)A_XGFCx<{J> zSTD28(%?v8zvtLxOqg+Aph<0l8)7a{_kYo_tgC69>h-wk25*8s;5iiGxT#+E`?^hu zhTQ?ni|hyAQ=qDt@phMl(GP8SWPTePr{j;TdkmyEwO)UbQHmHwsJsRE!P=Xzi^4Ts zETS{)wbRn?iHPbLjf}l3U_GB4RzNbg!VpL|cSHzapfSTV4@yjHYZAiVrmwb2#0x`K z4%Gow9i9y`?TxY`MUQAW;bTQ*+wI;hvt$_$4&?dN4H~F*gHZFLitZVM)l@!o0Eup< zMf9`p&lKXh0?&XNAmRP#@~pbx8emA*;SwtSw^fCn7fZ`ov&(!*)at%}FFYp6O_ekmoBut zwl*`r+>DApjxXEFAhvAlK*Aii`_Jwm42lb!z_S`dTI}=qO`{_pkKn_deeg9ur@C;` zNGq7~doHAxQEqZxWly((Ou8uzYI2e$2CYdw&U+rR!7j{AGp^1E%n>_#`oF&H7+|p+;#r=57k+Nx4iI# z`Ae$vo1I*d8chl*M!KTRWx~Vr#)n+bpbAKrZsBaLoL|9`|I)fH!oEUt-Z3thef{d- z_b8Ujx->+gto_J*;6!u?%mr&X=HzL_cX$TnRlYu0dJ#2xy5;>MKt_*v+G9piQsQ@m zQN){bij^>{;S^Ln8?(lengSc$!aUz^T5@_J+9-wtQ=|a_g2VvbRN&%KO?SR+^6}`L{^Js(==QJpA_S2fOlSot&)s$6HBaLqYPos z)RK?#KCfjsaOzJf^@<5KylaXQv+hg{Psc8wq*g}Jwd{-tt(S_XPj;s8keuFE1eGzFv zIZYosQ~|pIOi<<;1%3^1ahfcIHH#W*#9zQT^BZ;G=RP>*wL4EzKnxe2_@tG{tcAhOurn#>>`wu}e;JKhl+3VeJD6Md=9?&ZG zr-4!Ko%rgAjy3#Fdl%jm2xV5i5})yv@rY1&Y`+OKI60u9u>s$fW@zj33!1o~H_R&3 zm5TVq;*@NetyP(vK&Qolga-JmmM)@*K2Job415Tp&=hBmpzban>8P4Q00-5S986Gb z41`CDL{L^uG+il$O$v_-SomBIX(W&;hk#^-k`hbcgBj(qw8>r_a!~KI%54UB&5?!p z?G)yDXkqIfk<`6>y+rf!gSVjsM-%cy%~o%);}}n$V%fyd=$f%DO!jh?{2jS`Ki$?+ z-%4d_6?vL@YQ@Mk-ww;3tSymZZekuvfx%S=`MQOxscxHCd1i6b>`?CuY~-Ms+J*$- z_H8SpenbUc>Rk(dOW3n~{^5yqtAPuD5R-58eh|_Km2IgH*V5X@OTxtQTVIRPUc+w` zDKk36vRly~;Jl^ds_CFX}%sTdWBLjOq{dPG`NIs13q=A1x6O}N%!s#iFtL-^?E=VZlZ!B(eX8QLq1Bm9;lY0|NWx+V&H!|ow1RW zFp9VcD$|1n*f~1T%pi@c?#a$c|FPXGBB_00eVnv0{g?Mm(H3qNl@8HC1TI+(!mfXFIaltag1C#%8nyOO&+h zM^7U0Mwk8sKqEF{q`#dF3ifT7LS_3a-1k9?WCl(ztd_WBPYjK>(hGLYqkj0D`A`0p zWc#}p0>!AprG;Lqu(YeCIj@ zO*C6A{RcY8&L&}td+0wp9MFJgsth~@hD+s0kvM=k0#g|Xg--?)sv&_weXFe7ca{kv zt16Y84&x;1n6c-qYNQsrnw{|xP^IU4GFu2smTjXv>s%DWB;|F+-tuc6- zCX5}Wwfl@E-z142Ul&@#zEqr1h8Rw89?ziMYf%5mx#UHjIM zv1V<2>jMYiV@Lr?b45eP%>t#gi{hV7MG>Nmzmtw3E@6M>f^t`jtjN=T$=!=0$a=L?T*EW zkuW8%v(kcZK3RHvWLn_%#v@L9nH_h}h6s$A>0c1j8P4o;@KXwCdaNH8Gd^Mf^V+(U zGj=Ab1KLZ?-)}{LLo$?9fvPba)yU3Ga$5TuFPO2(PbgG?&xp~6@NRIeSK^6belbHo zo2t64MP!l$!6*9N^YH;!c9q4eEr?%nWDjYJfe_l}b^+Ko3+d z-g#P$@$Q}(o*raE%%rJa-*E;tD}_Tp0zeguJ}vTb?t*MKRBKu$o(dR zGu;se!wVmS$HEsZBJ>Bd)>)mYG*v0K|G7Awt$ftJu9R4hNiGfj!s`#*qNjtRsG%)c7I z0-6CC`!4PV(kL5qDwa)u>;A_3aP+>`z!CZ+`q@OrwmKl)b+*doFw=v5l_KH<_yQTF zm5;bI0~zf)YlSfWXnfwL=uPDZe@B#8+f@qbJ?pFsJYu#Q59-D^PX8$^S88*yEw^n# ztsORU@^i(3i(Dd97VoXFv z$%5Qay0ENuGkKYK$nw5#=M^ZSmI<}i2;rkpi9~rc=xuz{KtLqn=Z7BajubHdy9Cco0{wSUjb3}*Y?w|}2``VYYn9iEpd*oTw z2_HT*yA2iyS~!X|MXsXNjttCcHZ~$mrhPczZD`%VtXYA0N0G6^h=Jcjoi>Gw zEC3FDTP0&Bg&TYJ!(L+)0h%lM;CPNP+O{F?f2b)}^$R#3j01VbcrH~j!c)X^1-qUr z1!CxUpm{jl2#r!wA$lHYgenSx?h(cvOQ4ZV{OaHDwbpVqx4*oSHK|sc7J=@oRA0%T zI<;Yp%S-)w#+p&1QqV9Z1p~PXPQnpeCSeD@UN$XX?VlU%cVYY*1yi=xtmpcnZtI=+ zNK;kz@P#W!m>B6Yq(<9x)2sUwKC(-l3hTaC&m)--nP(H$2%N1D4XrrOiIj|1puF$IPjjmu#Xb&4&y{s}1tqc!(1D9Yl?E%fm*L;q_ zMbmZE@I1XtYwc@LF#V+;5LL zv1(=n<6%~}zPc`QP#VtNR)ZOb9+?W(lAb$Bc91y;stq%@ZB>!x!uSmu*cDkBijNr+ z-imvZw)aN7(q45A8~rYISg>y$@;gCpPs;$dSbmmyeALh`_rV99hl4WSKjh@b>G=Xp zSDIIYqhaF0xD%;z@NdSsdnwf7LTLl&0LE-z8D3Y~OEyCw@Ut9Q8jg*%gS|$+hOPtg zeJvbNKolbBnYRCoxKT+p9PbA!SRCL3Z&-w-BDsBYpoo4KaRrzI^n>P^F(c~bdiESk zRD3i*Wk|#s>lUf0MrxQ*KIj9HQ;Gq_b0z0L5WR5`0aot8kwBN|Dk++z8)Zqf)Fi+M zN&0BaiXcK?%Z&S1a{C+%wihF;5mKn6XUf~yHMhJ!SKfyXAZVlo3dUS{s^>xJy2gau^s9*9;H-5Tvtwjg>nAK z%J4X!LXTKF_E{H3B~)Br!^|GJQ)p}{<1VGlbIh^pxw14WHgU?_gxF1*Dge`0xZ=Y# zko?}}59ZtIO z!rjx|!yP$PjyonvwSa(-OhTYs=W=`y6K=})^t<+%tPix=VGGbgCuA0wXs=06lc@bdSdq03@I}f$GPm(pkrQyVc z7N*{>@aH!yM^+3SR|Sa#JG#Vpf3sju&ewdazob)_n?rwF*!H0P z&L#Ofxy|`;zi|E6XU7L`Oj^AS&7yBjOD%;lvm5FT@?0s=BjDiDT@$P7b>Nq`uJNeGaA&i{?} z`}<$HE(f5O=A83B&vW0O`yo7+{lc6Xz?O(uC~Vi)eBib_R-7#hs$0V%&|bMq?*LF@v9tmC8>J3yOJR zqj0RBQ1$z}z}6FTA#weHIjTJu6UE)yhO7DIG-ma_D1>~GQ+i%uzpxX3gIRGln0*{ zE24jl$Vl|IDC?;&2m>b3{3gxBBC~sUy(m()dW+Y1kc>G+qA^FHNMrwDF9KCyT=UK@;cGp-HOzzDc51L}@bfkB{l?1;Ko~WJ&ssviC1!7JyF4wT{7HBf6 z@2WqHF~_w26UP`VU~rd5KNOlu+piRJwY^y3;*WvloLz0k zjDJN<30`PzxO>?l?)Q)qvP$zJ?n7OZTc;^ADB0Vhr99ha`X1rR9x_(M-GlgXk{iSa zo7S>q7wW>-5SHu3`CFA#Bj}NAyk*(A*}6BGE3W~onPKCt(eqrSL(2lK!8^w>Wa`hm_HU#^;{!Kxs>=#x)sZPluaukDW zQ{KH(8Pd}%At3g0HLR=!SGln*vJ+12b7~BMt@0G~4)nUXa8@CZBU$X~>#G^-tQR{7 zILLq&=N9rq!b)Uf+x}2qFL6s{Oak;gY6r9id{-KCTC-3EJ6M&?bFvbP znWGE;>-q9xn?7|IwOyY(cCA#7ia5qj7EYMY6Du6lf!cJ)5&+At*%pv?dbTQ4;2W-D z;Ldkh8xLv*3>K>|q@WfNa4_(4$+?o;a&QtPnb^dHT{%Z{hs&XtqZ%T1^e;B4lX;h? zr)RpMhEMC3u_xFz8U`XskxV2jZl?@Qq_bZLU1-G=|1DHu20=QopGS!6hC+w;GVI=F zeBoDnZ)=96;&{)F#Kk~R~)FDH9;wZO?Z|M|BjVHvFxcJ-LUcM}JLQ=boR zc^PfFiecGD^AGGAH@ky+J!D@=ZoDgPX|QGRC4B{fAz`VB3hZGU<+Wj>lXHI86W=VN z@HuQRG;U^Ix$*df!Qw${z&Fcyq+MhWC;M(xJQ~c^GQ4e=TQkG{0*xn(eIizbIq`a! z33#)G92|3kYgccJX*~DY7_J(Z`e`$!fry}K>(D9g({L(=^CP#duBUucZ_6C1_{SERR|rxJz>+6dW{eNwQHfVXujL{Z?c~iJx>SE%l?nA`DhYOeq3~-m1{jP2eiVgQ39I*dg>BoH9&q z{8n~a>|}q@*zX^mC}@g{AO|W0n|FB>tqJB`X;G6Nq zTLUfl5;M#>+gN^2`IM4U>d4}wVfsc(|wAs!Yhuz1*Byhz%Bk%! zN7#pB+jLLXM`f+9lcO5skCZuIo}#;k=q#>sgZi*C-So@soUa-Znajk^4~Yfkk5sXF zmbti-3!*Fi$(zpYsk_^CJF&PUbHivgLF?LtS}VTDeTgsZ;V2$&;7VFopHSGombxl% zxM;!NH3X^erACr*DTm+`u5GfeNmA@)!i*}$sZ?=j~VL57=8RADKW zt7%y>jYv`Rp-rDD0izkszm7Y`+M16|>Hf!)KByV-Gb!aFljN zR`ppDnpVadr7k&208MqvHI>B<9Psh2tArCLkz<5lAiK(Sj-o3u$vK?MTmW(SGdlNv z_~fTYtZe0x`3PbY49E0yh>^z1K{=HGs}rrKR0C?%tBACcc|6x(LPfISnWmnW>1Lls6v*vOWn)<;5n|5MX z&D_|BWauCskz~svG;6r0eh;EpAx-r*pp}1M2)CatYieG?RTi+B%4>ZZRG%+0q(u>8 z$7Q4vmH6Nn%ykEDHEztv9FV*i*;srvE5J5Aj~?07B|hgv+OuKDjpJwPY0I*MZK-j# zKY}iqEKss!NiDU>w!v|lTm?Uoo~sDw1=1D#lnq$pQdS}zFa>v)W&2Xl4WuCDb!vTc zK~DmeR$Xt~6#uGcE%SI-9&5X)Fo}-S){EeBVB^1hB7Llv2;Ehdz2fU_$vsv_RE#XM z$+(9!qFmJ#Qd$QjWimevM$)`&UqGrc=-Mb6GY)p}k3wR4J=B`q>hr-*1|2dbV`2|5 z+m@^GfkB^4D9ahEq5h`VqvMLt%|vs?rCY>r?D4~{LNSi6h0BCuf9iG;I5XAqenc1p zhGFHd0q}R422V5na+-eq#)j{pJUs8bGJ0LZ z^-RR?Vb3Wks%ysZd$M$MrG>N+XqEZlMDdFTLrx=}%lNX*7W1PJwI=Rc+9{)O7IItJ zV0&XH_Jo3?$;_Xyl!^>8mA0AjuXrC)T$?M6>TTCu{sD`PHILymqB3rbcy0NDkdj>d z_Y>3nG)$3>Y+{A1Ae9rPX>#9mSqIr75>je!Y%2=>l zwDc_)vTSqa{4&;xPm_)h67?wlSqqXjL8Gu|ZAfq^7@IP8xoLsXe4R84mNKj(M@j|~ ztfgmso2wPvxOF#v42G#jpe#8>sWmY>I*F{ju0G0xUv%|JhZ8crp}JGhv9MMTO+Q4m z$U*-K4EzCAeobM&`e;RB*=9^*I z-#kbgg9TqWw7t_u^Nho78l)T>W-L5a<6>iZPMA~KxOW%dUJ3+G-?Yd44o2uLpippA zf1xHfW3nox{f~+GiF;dZ-h}Y+_Kt!F&3IrP=1U?5UQX0a_PC~%JEhw~WWl&0Hb$@t zE!qYlCA>o-VBh*cF zejNGsU(V)?+%?xczjwdA(t7clvG{}UEB;<@gFdwX0CRNxWyVm*9^-Vp=7M8$dR-{n z#?i(itao$d;NvZc2e8uC0`m>Dp{MMU^+SH(k-#k0=0KJoQZi=dXh1Yfo9)22HTP+0 zHaQu-uyN$ds!7hnj5}SYN1ucbJ_cb|z02>Oe*_VMS_s&lr; z&nuO{TUKk?QA0_V(m^+}($$L$kW+ievL0M~Lv(gE%=j8tw`DAN<-8tJ8Zzc}$_AlY zzXAzG^o%D>t&!J#E>=h^T!98xK}f3L>IA+2U!9oSr_~$=^mG}paebDk;kZ1iwnQYq zx{!Rr^$PuioD}=3*l=2|m8AnOUX`JQ&*EN`bP0!R!8Fx%FR}r`MYr_q(mK?>o<87_40) zNlI%81)D}%IFo>1=~@@W3hM*9z4fVJvO+n=JudEC;*waOLzbauj2$xthWE z6@KlY@8f97nJVK4j&M748S5L+fws746de|S0EB>8dwGHsOaEKr8E`U`_7l$14C;{g zaqQ|j3|mSxDGT9~K;!UAEMo$g*=+{)FF+)~OBCyn=#TJJ``-SqRJT-NZ16S~rKnf;TeKpw!++l{s%|nzDcEI^@?$EKr_pt^~dy4!YumQ`z6y zX>54q_hF4;ES81JMrA+MbHTM^AJ$)h2d_uXJMWW=!`IO2q&!)6sR3G>gN(@vbE`pL z7U&yv^B-w1fWK$iyNz)+=bQS(i*IJSRb~(~xsCEat;jZBjIs%o#b+Dhwryb+6%o6oXnN5FDB^~Jfx<5eS*sY1j(t_q2nhS(_jJxOgdQp`@ zH3-Kpt@;k_<@6CJ=MD8eDM^W3Ey|WjuE(sjAH6p5a@K^(RK2o=Q_&OP`gku3i+lg+ zBH?7-oxoQT(kpgznm-RsKx>Qbr-eZm*q?mZ{(2v@?pQ0=q3^(;<%)4(P%!(`_4@od z(3K0tiEIKf!|2t#T&^U~w>u9*BEYzG=?RiCri1fxWIHOp$j%ePD3o!W)bLGh4z5V0 znKNtZdgU?uw2k`H6-{F*`*CS{%C%HH?S@;?&b7F96?rx==*)GVI)yoty&}gCNM?gq z=~Vhz@%LNEPTg$Ga*ARWPdl6)Cs>+jL}1==(!|HT?itrx%tXaO7h%6whF@w=Zmn$l z*S)B5!?gQ;&RE6u86!`M=P{>+F^kq8XwKi$kB@2RXXe6#d_rEL=-aBJug8TN#8W~Q ziO}Cs@vZ9T!-;~XH@H(ql>y2Gd_vi#=2`$C_K-S}VukB~VTawwsXWT}BHmT$=M zo?t3;tOHdzC_7D1bPJ)+nonF#dEQQTN0fx`|1_3-Bj7DO$THH?%dqb^4&J(DwgEWX> zuabN?s#@`(TxQ>7E)E<0YSBPo>{_cENk}gna0mbAr2y);1IJytwfKyaw5=JX}IF7O^atsx{1*GF}u5 zgVWRt!5Nq6wtOox$Gd6G3~CuoGksh8O`OTit=9Uc?!S6}W%AFyvY(V^GeAnuw{=E9 zDjVWI50m~fbSbbPZ8KBd1BMs==Xvq9F>!wUabpgGi?nN%vqdCkdQY>g0n zWoPEX&1(8{@Rk2D5`;8a6|t1ak*OXDndO3FCX<;Uu8kLCWa@?pw0*Db!4m6*1+-wV zNc6bF3ZA&6=`yOvcNSRcQHyqJf^HGCCz0vXBEeu%mnM$v{`eOjzjb1Moo086WAkQH z)quuu*)UL?0}B{{VV^cw78~{lS4(qH@t?ai0qaU^K1CYheg#I{6(61b*A;$!-sIVV z9zl9*$5I1)+?C%6Ux`vYeGcrK2BE90nYj*XD*kxTytkVwWJm2bLa-Cf_>0JCU*#R| z1*?UwxIekkWz|i;l6-h(*$RG{C8SECVXE8K=TA6F+qP#vPrk5RVNcI$o5ju4a~|+h zJT(*b3D~;lExfmDsZ_YpwkjwkIHbuXZ~8RJDQkTP6YChx!rZXYOe-iBl+sZ{t{o63 zSx`}NKS5p*8iY4*FGAzu>h!KS5f())``<}h4LyYtP{O%g!3;c z=*;>;^(u@y?d3t=b-PQhfD1;gmrgox59aV?t-y6_rFBS==|?W{#8 za?P+#2QS7kVku87eR7MvA^QV|hjihb(Gx%ipI+T};&PeJTFTWgPSIVMIv9STJO6ZG zMDgQ~IhR5-2jY+?#$>Uo+3Nea4_bkXLX$Vc46s6+sR8_I%+M3(VWYwB(qCk1*4!o( znq5UQ@Vl;m`0lh}%DN7_H6VZL9u-!jSStwRWunZN`!6fkWDhqoC#a|srT36cHNq|< zk#7gVO>2)xTHlwy4ivo!jbvpj0#?V^gZw(IB3%1|Y`!D1)$*r3874coyDzL72_F>o zlnOy+YWDu~t01;~uIOsO$UqW}8NK_6ZPteGn3m5?VgbGrYku&~E4wr97sP4}?eF+M{N&Oz3qSKfPBFg9Liz|Fzw;bOHeaGumK3|$aQFY&+HCXIu zCz)^pNh<@;w6G;8X&U2e!XNZMNpAnwy1j!&1xl{)ld_Fw|Lxpl6{>p@K2up?eEmV) z!y*3saL7yP|2Of3Xyf|VY2i<)8UU_R9e7^z+6G31R?963U(-QXmCmPEFGwxuv^2q5{5!eqboA=4SxSPQv>j413N!0R;rroMuPQ zi4Xq4FtuL29z>no4*K1M-B#LrA85Zr87crls^MEFrxGF>SbJG-*=X^1fcUfh2Cj=y zU5~TEa3NNH#`W!)%grQjW5V@)|R8$qn zXZ`u6lmd^b_=#uhRN^#r)2A-ld7&o`jzlhyH22id`u~j3kIYHO7rJIFcLhMTMib>) zq4eRv;;-t+In;x1ES2HX0)C2%Bw-4FzLyOl^IQT8c^lpy+sXe~G z{%mr<`_`fFhC_}oV|{fxv*Y!se<|je-Ta{-yECGOZ6UV%9RM6YGpq zCp>5!fMy;EYPhS=&=mp2855ZO3M&GyN1xr8DEK*?um%~_=t01g6E7(KQ%1RYE(>1^ zj}eDsb0FP&%baKTL*58>6juq4s$!?a`ETvcb0N7Ff)G1e{3l~nr;y4xQtdEl1(ySJ zYFnBoQEWeA2G?><2>71#==1QY`hKz^J<*+Nihf7QHhrxOT3 z3az9(Q6f8myO#MfaS}EUSQGV8OrhrUl!KX-p~A&W++je=yc{7#{g8(Ea7oi-QkLsb;R> zib87kk<_f`F64}!s73YWaH>gl(CRq<)!x8;hQr}?MeD5hN2i&PuTU}!9GOY%b4_oF zJzyYA_IM|$*rq1qMFMseU$5Dz0I!v_$&6}2;>^M@|8A+1k7`?Ow07bS)s7cvW@?$HgqvF zhCMp+cUQ_f+OS$ty%M{nd zdl`)NXE+Pqk(J{(awNcU&Yb53ZdveHP_gQXJw7c13{d=n!&Wh4jHlB+u(r|^(O!%> znKluvU(X)sA@a*tK>SjWrg#<%E3Fa9K>c3UT`cQU%|1=YzV|lhjE!a^9+`NXyb5=wNOcyKH;+TU?!b0@?^PWwLFwGkDG0TCg z+`pdD+$~W(u|DMLJ{v@oy#h(Xp>HIy_e1=IE}s_``w~qljKOh?jc=%=={^l**lSeQ z_rT8t_o$$*qvW_3Es3jz00a50Odsnz%YvLB_T@?d=zyVxXaVAw3?Mek2Bv5;CNqeR zrqa>$xP?D;z0$KLa^$&(VUa-qe9JTl)HO{rOZtWvzWtr);F&Vyb&I4`wtO;oBAXU+ z+KHyQL{Q;B6&ID@5XjH8P-ORIi5-axv`*QSk}a;uOh1d~tfkZpY2q4ROtcyv63|Ca z$ItfN$-mT{Vb)WR5@ey=q^9ugq)--apY3w<9Ts`7u-!le-bQO$SdKU#)wb=&rGD>) zM*+%f`TPt{ns#Amt@sMqOZQ;kj$Z+ZS4s}%EiiyDAr0)B==iDDN`mcSM z60G)a{mJ}gxJg-K>HQuW`pec7D{1+kK%_D=&13v>^Tu-P62A}LM_6YU(Nb5$XeYA8 z_iIEAcLfRfkeq4X^PMzUADcsF<$z4W{<-NR_LLPk!v(g4b?*m;Wy%ShQziNhF3v8^ zeHYCCdzk}BS}1dtFtA9|O)6zQ%VD2fO|u}|@O-4o`;viI3G6EA)l!A<)oq{@T`pJR zIBg}s5r{-eU2@csvFFqdNG#s{6y4Dw!+#S1r7ed}jT=DeXCbzt=%cp5P5w$CV{ z=<0x~XYg$n@Nyn{g=B@U6O`JcEq2Bf{nfabA+cas|m%G*t`Tx1{sDu&dD!<>=E zIxN!vbL3ofnIt9RdI;DXlU|yL?y@}>`XE3xHs7#?gyregiZ?fXkKMpH4rD<|_A1OT{6S`z}m zG}gEIp>CRhw2J68v|Ucc3>{Ih4maU4!EMf|1+w|C;Vdoian|t76+FnUAtMiQVByT_^^B_4o9*KyW!PLSZ ztLGU5+Q1x+jC&jx4l9cztFB`i$9a0?$}(aYi{#Ojh^CK=@A;!LuosK?ua`2FvegZ) zy-zHsgfxObk4mdV*MqoB?QHaO%mgaYUB2C>}`A7=BhKb;XGV4De08jx}>PYWFW?3f@gAY!L*?@;P6KZ>8!?pb8No3*G$=ZL(aNl>T zC*m)o(QDLjgDtvl8HlXS6yaJQ?4CPQ3D*-3J&w2r@~sqW_q(kPZz~hhUPV2+kO>l= zhD4cA@Ew|ct`m5?L8<7q$aHSaa~W~!`$GE;Wr_z}e&H}L#ab{6nInT6Oy$xjCd-8< zXr1%06V3D5?@qsgq%92a{xh}}nUdYFhPGdQTl=R{6xDN4G`ro{*H(F&gjIRi@&^-J z{GR7Vle=HX-$%o*N1I>UXoAeJ-ZpCpyMDBkIDgGrUUf_(+OpWUl&(@fMow$zh*u;^N34Rb(3WXyx$m0DBl+VpQ#p`|-{k9O9> zF|I_xirERThV#%GKJKFq!sY73#uws#z;N1G0c^7uojcRn40fKGWGdZ05-R?z4I_Qu>?h|Ua+G-SUWy_z4!Z)yw!EYCG*R9|Its)RzUya6f=hs zUwrUaqp~@ZXa*}wh(6(^CRF?`o$G4E?5`=rA0G>Nq8+EfE^gQY z9LnPriIdpQ=!LGFMJE&|BP|rFOG4<&J#kWthrx_;Dyc}(bo@{gU6W!ZL{qMm)-Poq zZ>4LeS8^OnlS)8yu1N-f*t?yh(+w>aPBVNEr%^)HKnQVO0HwoN$bRQFuh2~&-f?H?1G;d|C{Cx?SIN02yngo#(teWnQwE9Dt`*k}0=ff*m~2iSPI%j{qR)Chupu1f5xHg!fkx9}AjL(1 z)ya|aVL1AEl%vK775k$g?^ch6vav}PpGDy}6vHI)#5a0z%L(mM8XAucmIrBpwE`Rn z<{Ki;&@v;#-T0XDEJtgG45%F4LP{0Z7Nt`?0^f{!dTvdWkp5o0QnK~*vS$J3O{xO| zyCQ-#w+=i>adXtx9^e^G>fLt26=&-+7?!0jXD-$by!iH<5!RyY(kzL=%C(WC^k@dh zW1m+=ufeGUVN)!wk-FjHPqwb1WVaCP8d{wHTboG6bR!=pYfi8jj*t6kOk;@5VGjEX z?4$zakE8sn`V`p@i;|K|u~>~hk>d0z)7VV9<{sh$zlY#MKeF} zLztg#*k~(1GBVbFY2ISUF|oij&zPyhHI6R>k;Yl|pG0A%2PC(Y6)OgTyf3=a3Gx%p z$i?eZGA`^fJSr)kdi50Ez28fSk6jr@4otBESi&@2K!VS><4TVx&bYZz=7y4%Eg8>8 zGsM_&&o-*>z{yJ1*s}cNvqw5x`DT>TbIU9Fb0eZ+B?`F*Nt2(hkew#Q^qZ0n17&wm zU-(cz@D2BG=3k6J$)V>VSFis1#O6d?Mx^thp}Dq+-LJab`cp;wdy=>vJ4HhiI4MdR zC21WvS3q*wRu^sV=A}?Harr$H*#L(V;$l=m4Sl!n&nc!`N)!QBs2+loD(J7{BeH`tX95IVm6?Hh$Hd2T*`5di`xWmkgxY*`XUD!f7lP+{^Vp75i@ob8&piKQUJ#ZDz#ykM9X;Q2&5-ySj-r$|@df^}c zp_}`)%i@$9gs|X{p#UojHAjN#<2=ghrKij(R_WhJ0y`29eV-kIHLSByE8s(axXk;l zKKkwTsmuOH?4+zM&52a7;N=KqTdneRdg+>-8j$Nuu@^iS#GhQHYJG1g@56IhACobU zkHbwE;|nxamO|mjSWAnucNj2S9F(ct5=vK$ksEqxvH}-?#f^nGJptzqGl5ODxU!4_ zHV6!W3-Yl8{V`F(T1E}7HX&#-<+@oM0J11Cs3mny(Dc(<KYnfjD!T{iq=`3#n=PG}3r>{U zF!pQBKNi#>WypY1TwTfbl_Qy%R2Lp7+2de07XJY1i~Ecg^e_u~*(_uGhvr7x3$INH_(yy_zoTi&{+_BS*KNKp7hZ5_{zBLHk6I$Pe z^^Q*C9pU<|CG7gWoo|M#C}2mx;T;v#bqSbLcbhigOX#^Wnqto4xbrHd?PGhSsWH(9 z-EmjZWQ45+ew)wK0}Ku%2Vz)6$5Phj*k$mU$c9sz4v^8%4IcLL?hy!0ycPDad>^=} z1?{(~|20?9s~C@Tnk?w3nzKYP&vACPbTMSCulhgW67*Mqx+Jm~5Vo@sd{>>`@71uj zU`n2Nk%@nb3>hk37_VG7=D&_@{BwaxAU@_8RF)0KC>AVm+i@q7-}BV_fn+fJ&UjmA zvycA;@{-t;4HSWZO~3bKJx?Ti3IZ;h^V?`QmnVU3WkALLg@((D4zmacJ|mX3m5qRy zPPku(vfQP^gj}f$T`O7*7R7LGkGt##iM`20g5kvd8lK)Er0~{jGVO;`NnQ6ew=?T* z-CAKkYq|QsdE0&7-Hm>QV$z$kHHT=OYw3@|Hfbd(#h{<#3wnCiM)AG><>7O-XV3aw z-G0n&H&9`-aoPx&SJ3ld_TQ+9Z}Oxs@45Qh@8iBEk(;^(WK&4?%j&~9l7{cIafF)P z^8yiTpYey;pV5ryiJX~v82wCbH~5?;_>N`-u`mdomojg!NE}W937Y@4Sat7^C?w*y zItmPUZ(YQRb_$7k+#A2(&3^m8K-#DLdWY_za9Y_MzaXaynYiH3zM(e+O^VqIy>Wp0rl<8BKKrl|08&K@hJcl)?g&WNlZl&im zClC`(vNfPfX4JoWZLFK(Gu@AfsFOujW`s|=VIZB6FZ zEj398rbv?69g6Kn%}LvPE55@F2j)ly`3*u8P$i?9l7xwQyn?pM&~meUJv5J(zD4$g z`?4f7)oOV$#U`4vZLqPxbzC0}7E=nFo2}KCKmu!Lr1UYt!JiL;O6qv+N{ZzR$rQAl zP!uFP^f=hai!9hm4jN6hTWyo=tFtFqq2(O>{@IhHsSlAS` z{LVe)laJ3vR8#HgLvNISmQ0yuMd~(-U5TuO$xe3+nZQ14B^b zx7p@?=u#Ii95!tv+Az>kaZ{!zuCPm-{5WhkfOoPfr=kdLSgt*NC-|@RSa64uxa8Sf zO4_28jxcDD2|}DS<+bhRolT8qg|r#3K*N8%7QOs>C4TePl@TrnZ|pm`*EVMbQjm+-0lsLrr&3JMI7-@!-0JK*eq|_(gLfH)mzn3M&mr6AE7PQ_MR1Krn1# zFnZ7yGT#hb#7S9Ol`;{J6PzvV09*dT-f99_@kkKN>aFj6pifs4cYX|1kQ@3Ukp?}l zoEYl@u+;6$6*gi;4)qYQpl@juKRwSJ7W5A3VE%o%J5iSyvvLJSt8VLxv5=s?E_^5> z%DI`uw|S6IpQ)?L3yXUhe}YtbDPdq|4n{X@9N*-PkaR+o^&h(SwLI)WSonXWco_6f z&USUKWouRSY&nKU9emQ4vkxwA569acW#QCX!L8-*c5 z2iz8vwDMPz2-N}@7|n`Y9RxH zcQ7D_+9Ojx!WAmoNMa|VN%nFa-@R&NEiE;8VM%PkB-`)tT_K6W>g=!eRTAUNs%KTK zrzW!373*K^yp>3E^ZA|NofAG^5HdUGf#n%Cw0p<2CcaAXaTKhZS_Qc_uPnVlwtZa% zU6oD48NO21GQzhSD@{0W3W~V5NC|kOudbf({%g*JZJnVm9xmSGO6DI@S%>ns{rZ4^ z(F67($Dw~C)-@e-s?juHKHjgv7}rebW1TlgT_YGRYv+!xfK+mVwVNingl|+5Rl_H? z{jqZGvKy9@w#ai(zwa?Eo7i^Td#~=|PLyVE8Jx>U9h#PaZGPp6H%snXA!8gehi%b5 z+rOUBAe3(+hnil?EP@*gyfw|`8*Q@@;S?bxQXAvfY26KX>6+E7Y&eKny#SmbtL~Uj z7*^j`|DzPqY@JOpq)S7TM_$pzQ=SV4q#p=E8YE{@-;VKY zF?+r?OH~a{>N;APe^gqtu+TGJHMtl6#a6G`L)~us90d8UCNKAuzUE*K+oshirRG4* zAP9!(G}~I&2+UbLj>DZ{$)7aP5SJuZA+> zmSUmaI)k?9M0V#(15ZI#wIv5T-Cd4Brf1oSY0({3b=T;~CXGuR4T|&|cRkjg1yQ($ z5%CP$f0rGxb=$mosl|cT7vCq$ZohD{EX2)*wY{~XqdNOF5Ve(C!3lj2g)j5t(0I3w z-22}y0RIL)zV4GbNA3pMEcxRFE?{n!zwi>n!^zQOtkJHR*?t*D-T4}Pn5>JZQi))bLfD2J zJgc7xoYaMD{Z}iaGCRQv&`$IV>;im(0hTNjZJN5k<~E0&3*HCVp4s0HzX0-W1*C4( zO=_xtKx9Rb`%?RW*vN2DF06{w{XK(tduZ&iF_W$>;Qm#?j_nAqNEeHFr*Bb#4dxtpSSEtfdV2yUDCq>=77TsjMm^n)$QHI31_uk7_lD{~4 zB<#!ZMF&e3-WUpRiw@-+H`)El@QIvlb1brpg40fRwA9~2A`zd0OMmApR`4Y0ol?X@D26Sc*!{J;Ey;m$P3e4RI^LW zG!q3Nw~#Lt33!1Xit%0K%eNV7obVPy5kylK(3G(WB+bOLGzNh1um0zw(hI~>SmeI~ z5j92A8FyeE0^&3&m~>??F>b}rj~DdQ{trJKRW4}79#bSOFTfsL6=z5&CS6SXPXZ~$ z0RSN{m-$SLUcmTIX+`Etgcc?DSVNu^BR$M{sR67xw+g2Ps{x2$$|pfhTg;vBDK7u@ zL8|<>rXRNk=UwV!g@p$dL|8hGL;Q4FgG?>oB)bFv-zIu4thio`txKX|2j}pvck)2q z@QFg{b;y=E2PhYq+>K`pv?|6(pq*#KvB7^LW!r+1&i`~XqWVH~Qo|N4!h8i#1E1#m zCIr&Sy;>|MvB5yrt{oGv?ozt=d?%_lw)Yr(XsAx=IwkOP`o()8y7lr6I${ zs!b~Lmy$5ME}m0UFri1h?3!NLK4bqE?71FxKILG99W`|9NVn^T2hO2qEaFy~pz5aM zg?SVuHy`qpJ;+uK!ml$ca(Fm7PD)eL#Lx)NVN>WOx)(Yjacs0Vx$?vocVm=VYaSW16~n~2h|uR|?YH88WPlL`H059^(p=-}d7JU1PL zpe(_Z7zOvgC#`PxSbX{IB6d5}CsxXD>=XGY%|eDHZDMrMf!qbpZYs8=!h?2s^Z{DG z2xWhpGe?_&{GmtOsBxI3hvjs_EOZ=pGAh;n=JB`m<*KYD9on`OO7Lpq=-flCHOCWc zw&&I!W!`w#$hkl+Ub^vk{OR2XeP_QJGCTdpufDtEmP&eT$8)7!%|@r532wi2dRc-x z)fD$WTXx%ezBW>Mo*m)P9D49q0gS)XO||R9Z45fDmp((I{2Etu;KbZh zPQ=TJqqseHmw3FXnv8lS`4j2IbIrA$C4rvC{!S%PlLa5)ac&J9jm(X7v+ZPEuO^Ap z9@^QG1y`gOH(rX_rsdJVP&kX@2yhhH9i*9BpMi|9S4W@5ACVHPR!rwBV#hqk(U}4d zxZ?E@*yGddC%3zDkv^u48HxVV^t2@t7t}G!UJ*Yl-XgX@CVmeGm!ePGRx3;`7-2>t zm!{OVM(+dKSp_F)(oF1!bcH{q{Ec%PlwLjilv}ZlG)e57MD&Rzv)eYwb|})V$1N?8 zxhXKO%0(4!u*x0ozH1r~0QIX1vTa{o6N1Gtzt-tISV(P8)pDp||mmz@^6}Z!z}3 zocgNx%a$phgQuMK`Icel9hNwIBE4y+Xco4$3n073I_V; zlW#s<89i1W(5{W$mTo^a`&%BbG=kak2)k6-?oaJCIeXt#dxIvTUCCXB(-H%4vwisO z?)pTP@Z?wocASj7$$6wo2PzBnCP1UF<==z_%iZ4xe$7XEmivP3`}^3~?JH5WCr;S@y_|bDj26 zLvMDq;kcR5Uv~BecF|0V|BspCyt#%8=Gee@bSi!f4LERtVA~E@1vi(Y01wx6e8;}FsSQ{*YmSLo;r~wj*O#( zpSwO+2A}{~InM<~{Q<+E|Vo?`B`Q*=FZ&w_NqqCDpeFg??x>hj3?3NQv0! zy&vMa#K{86Aw&iLUFsft4auU&nUh4{k2K4P&0aYZFkO^LtL7uev_&TWdlqWZEr>BV zWy-&4No$8v!D6IY>MVVhJu4RE)r{iM)yU^Nyj)F`vp>>CaA5V`k{WHltDETz>raA)IT2ONb>Y*AP40u9QWl>b`t(j3PJaK!BxX&<5Z;wQ_{hNEL zYL_l5Qov1=Q+>YGI!UDehPg8Zv$Ytt8Qe>nfhME!0*~OP7K^>rQ7fm8t(F`XOhRhVb^Dv-_6pKu0YN(%@UA9d6Wb>IgkEq9W#aj$mG;A3wzbx9xGgWekXI8D zu($Flu8?cratSq;6o0pe=zD5@C_(6ki<@=$2xnQz@!p^|bk?XQVEx2h>7v&Kq{&2a z9vp#?y2NTcq#!~$H3D)Zd}Dpo1Tu@OEv{=uz@ox|lbY@D4^T1=yvr!RFMkK;`Lz{$ z$7!*Y_k;g@y4hFOKt{;T{kx2{aKE-ttyg+2tXJ#5=*$*>Hzh|XBn-TZok8hqCanBl zPa^GWZ7MV6DW|kFWuK9)`~f>OT(ND9K78{j65*y_nLe%wREZMr3Y_L06P7pKehm|S zeRzM~cG2chnzIDtv6St5-ac}Z*G;>2F3sX2x-k+H7i8Kz| zI5dZME~455*w6Riy|HIsPZ>Wg8}^jQG5Ogl&zP)eTvqBo@MZ?-Tqec`Huu=iEMA@ z*`UcPZ1dB?`06zfXR2;4{s?&M6A_Wd`6D=0m9#Bb-2ubmI^#E0-hrm|g5n-lf>{y< z+rkpJfy2cDSx~#msUOh;Unsvq1$^AgjIvM_vqL8*)=O?fe?!tmRGSCEx1l@W#ovU( zAYXH_uV7o~Vf7JCee%LPkrdPc?g*kj0tHU!rVD$oyXUw#ce!5nWZB@{Qml?Uv10%}C zP5z9MNv&=_VlsirvhP0;>>?fl}CTZ%cnH7@bx-$n? zy^saHG@b9sQ%B(^6RDx9bb+dJ@)2qzl}!;oS!OIRJ&JiqF_;AHbtOvdkXDTmZ!XKqA9uTSh;K+yt5v{so8k7obv)H-(Fb-LZp%g4^w zLI;2K?FH>7-RZ2mwlmwQzYjMKET9vQ1@;G`+_=ZrHpG@jqzlzZTe+5$()A#kbeqy;x=+`c?o)HWopZkLv7gWH``7QE-=Dw7 z`Gbe4apuhXyk5`S>wSWzr=lfcVl>@oEK7;I3d@^Zv6y${Se#-p4ju|r3SVqsL)xyQ zR!)?g=G!)i@ufR}??iuJ7W15__j^@k&{!~G!fw%sl{i~3N9WUs+_SNpqgD$+J@Ag=pjk1L0 zM?H-gRd=+8Z;aQt3_Pc)|Wg&u2H59ge2P$|RQgc^Q1C4$! z;PfHpqxw~FEb@gt1QKqhew%Tr$)&3}6kveFoZHktS)}Vz7bfFIrJ6;Z{qHqj1xt97 z1GA}Y_8r@MY`&k2+~H5c=SuGH!dl=}c$2U`c4>|8uvQMW+loV+?Y_liV6P`nD%0_H zQpH%R!Y)Z}$j+jpg3T-*A@2d^DqkIw{BBR%cp#owcWLQ;IuF>56P(S0J&d6+Wk}D$RZn;U!*=R{)Imy%!GaJcL!fEeQ^b zG5FpC0mvp^#Y0f^xq_8o+T?e(CcZ0pTHz|mpCR`l@c@BLQhJfuvm;f!uW;&;>k{LfSj|g^;h;8#@nU$!}XzB3c4%1U@fg&1ZjQ+pr3QDraAks}qv>kEpC@ zD~|0%pp7qM+On0VA#wa_RYwt4*X!?Ypq!;m!R<7i-%%xV@q4noD_Y)5M1|%Yn^S1f z!wrbkgca%fwwNLW5AfqY!hFX(E146{3^#f}K6=*G$uH78iVa2fwmoC0|G0Np6G4dOtq)WAc_4Uw1Eqym@stN3?_0_03j%NN z7UWp5YNRFiW6_QSX`30^5sTN{JxI70zu1`cA$d6C6n6PsL+&zy;F)dP`fk0SM6OTS zMk7yXIQvXZd+AB?L>>S)ujOa)HWDo?;qI&Fih~jk-jZj8-O(6f1vD2 zTqwbSDw2B@6TmXOnn*nW+LcZS7v@7U`mogqEEdeBO6W@7c|RFj>4!zq|tgv)2rJ4 zD^-cloCRa*9-;5xxeHY?^#E|;)}sWgmssg;;oeCsHEY|&ij&afpX?;?xh606_abjy zCSUnACZny$3>!UG#t6b||8%H&PB&5vqDBk%KzHZ;wDK7F>AY_7hEMiH+)uQE=A^_ZtI=cRyK4HUS!Uc%erwI|jV1;;LKPFaKgT?0S3P$`$41WkOgMM6 zG0onttMPRz(-_&oS>O30SDG&$wAB#gzB&mFPaK2f937F7!Wf8#DE=OG`^1%a( zek%@aY9r7lBTqqZgOX~`M>;K<77}@_5?xFoYdu(q^d01M4OV>PEDfD8w60G_l#W<1 z?RAfl0p_FaKs=!|#5aSw`zzC!vV-*q?AVmU+YJ8YlU^NEk5mSqp0F>2Rm`vjRfFdZ z5-(}&EeBApP$}>LA(5Xc(;X7LBn{$7t7b;wwUcMj+GBdzzB9yEx^HPK100K72!ziO zwaVzZLg}#H<}Y<8&QjzF%Szot+a14}hzd_#w2d=Te@ZV7ORv`EvlLp&rgVA2VAXTm zy1(#8RE}G#BVt@UL6lk&WNo4A?77A>-P@P4QM-9axb92pJi&qaPbZ5sZVMMbJ81jZ zB4UB>V%*qoW2`D?px9MR_RUulwn``wJzDjP**BI?@%|DVh?tE)Bal`hwE_f2H=5;@d zRk#XGAhdk?Ce%^lk$~z_e5?!85w*wQ+LlNIN1(JA$`GWqlBNtX7kz@weug!OuFBB# ztU&iVI2ck}rCP^ExeE5oCV<_x8zHc^?KacE(vh`5|09pmN7>RJ^lraZDr$|G5tn2X z*{0AM$|zexg~MtvA+J!F)=EKa20CP>469a0;@b|Ty{vFQ@^%WzA=_|5R>@X`4$+nZ zHbS@<&Tr1&Hd*wVTus)U#BzN^AJs|`mv68=Ziv^ru`=DScIQ&No7>7Kdd;cL5A&@4{6Kyk*^b;zu1sz zBl2rp0%WgmcYH4H#q2et>qPpo7FUlT#<|oETfA5BO5YJ}c&wl}q)%e$YP1n5v4y#& zSO4wlO;>Y>{eS@m-lfPR?E;x?p*a|sZ;W5Rw%=7=GPoogpA%?dF?Smag{u@y%mQ9_ z51@(Vj7y+aq;pk}f@bbMClR4pN{QLpQQ%dV;Xz=S0*;`px6w8+UwcBu`udU*@x0|6%0M|xD7?rZxYA;7FPi*zGx+kEJQ@8$u)1lEMng6sUdq#SH{?Mk7WP> zrfF}E=p+=T9o-A@JSTFeOEyT?jeal{IoT2aIVx`hlCq5cHHTf`El-bj^VAodQJ!CV z0#W2Tx^#d(*A(0!dij{@S%#a}NNMZIBQ%%h)3?1f_q#6)a=$-fpXTvb{)!JwtI%|N zVnt%}2z^oGds1qdJav-x!U?JnI)*k3r^+uqmXFv$zTD%^>Or?ppld9>v)Cf1GWg<= zvRwMReRcoo1n~h`IqK11eH6uDJEqa-X=)Bt z0yZ^2`teM!VKqLhPxQsR*puf}s;SU2NhMH+x?#z2f8?gZ-%ObGSu$q;%BoYhfJO6# z4iFjjs=RfGNwxVK+25W1Hz4LKUmIxyxLZa4|wg;>_Z=*Nx_oL*-Cu`8Rn53;y7cbh6bg~P?T z2|DqvcmLUTh;e#r*!sCL4&1ArE&X75xt&>+9usl9wC!OgwdR9&yI+s!Y%7xYLn!;G z4?p(-X~Ff-`42WeYa47&iOj6p$@y4qw!bg=V4tib-R_RtGS8P8_a~j8fOVtC>=woR z7#f!^A5Hh(+n-AH^r_Z5ktDxtTXZ&7PEzY3a(6TZ=Fn|2KwW6^mHxT}l>S{?G&7#l zOUGExH^&Baq(TzMvwu1619ZiRWs5pM!_95xlP|IKa9nX43s*=`hxEb>jKzbLgoSSr zwODU1A_$(r3)0*1wN8A=eW@H`6lZFoLLk0O{qjgY?x7P9 zuPpjfS7yv?B3fD9uc);p_r!rE#)&|HoqkTEYOmvd%Q?7CKTfWBOn#4vk-;m!#`Opnx4dk=V z(w@l6UUmQ6VEEe$4Z>emeIqe@AuFM6yptWfjkaAfO&tu5AKen(hwmP>opa9LApcB0 zOOe(OyAPaPB>Dv}h5fIy&68dNO>XS5b~emd-tgsKn3N2`UF<7c(~;qZkZXLfLl=xm ztnkg)wEufRi@yZ#lOLNY-9k+0V5c`g5m+>;31 z?`(F=Ev;F+8?D+Y5B;beO^Wuvd)I;{n9en1pQ>!TOwPLe`|J@^`C~oup}9G6D{-`q zvUYXt&9ULAZK?VnxwOhSc5A-PXt%q)NZ+w?A~9Lqg^dTEr6`;?20Z)$cj*bbQce1- zGj1q<7@Fgkr>@I?LE~poeVR~5%8hN3=e^JU&JxN-vbI}i;Y(p42X*Y0kDN61loNI~ zP5FTxFd+%teNv3jjnGe@)wXKpRu5UgGJ5qI)pd@Q5#IOKAy&?UiWbwJC)i0mQ$5KqF%IOgM) zK35FNhs^7>B+eddSlCPIOcN%iox%;pu z_`aX_yxU<%ozPo3GUrg;`6&Ok|1w)t3Ab$Vn{XyBa8nE7)aO%sDDu>L9WNkQf#;?B z+?N|L#Wd>0e0AH^PEcg+pEy_mkN2t!Q84in1A3PAL}E1q=VAu<%Ub0tcZr&6d4@3(P>;q{bn_Q;NpTvTsy+h2X1EA%#N?0@;`b*I3Uh4DX;PVt`C-9tzTo#l}Qs3FR53{nx4~bE*?em@P3|SgQs6Z z?#vn%e+|}?sAcuptM0s#vGTFfa3|| z*4{wFx14`jrM=>x;^_`)5Vo!YR`bx(?AieFFy6 zwg=VA{S}u`l#Mu<31!?xzR<13vn5ie?@U3(4QAcXfUESS4^iMAY#e~KlWST;;z(AXI)*dDhDWc*-Wd#v9OZHRW%>u&H& zXYpy?(jH_&A|YNR_dvL2``FFAX`+m8B?pX*+7WaFpK^u*L)nQoMT6+vNIgEcq;FL% zEw192UdOV|iiLaGFSIT+_=j?IYC`sEn*@3Kv}?IkeK0>t47hg)3X-=uu62o<+fyR+ zc9{L7ZV+2(F(cP&A<*OxMZnX?UU{j{27&%t;6Z-#$S-FiO=bk z?$tomO0PcStYnJm*enwh7e2)S7SS`u(-GbJ@2Fp3fg500Do|SzzaIl@fs>4%#=x!( zOU!qrB*JVQaHuRrOz0(9Fqq+Q<>hyO=@1Rs*CVO}cE=hmjgsK~SamAQQ9@7Qy5CIo z;o!!iOjnE%ncl_Tg*FWC)l&F7QvK58tDW#uk%QS+wvU@tumIco!G>FL0C$_*IB_5; zr3EPDVY*q{kEHV76qEOE!%9{hoOgbC)%(lZQ(v|AAh#Op{gIBy^R-c4-W7E@cXbZe z$O=}PD<>Di|G0~?H2d*#Yi#RJ-7kSC`8K8t5|wA1gar4(k09Qo$bZ03)W19S)=}iw z4gkGQdht9_!vBzW1sM z!~fW3kfM?|wlJ3rdd?XSNK$<{4WYBKF{G>MB?T2@jLyXQNFY$OJe3ZJ_qhz?Q>c@T zRf9k7D*AF8T$Cn{rWZtaR(=IgqyzN=z3LqwmxXzOi{-r3XX|jKJRNpK!jD6f{&}N@ z%5(W*5Nw46LD*w9~Duj z$_tnw+2~bFV@lPEm42Xjxq`wLG_rhTr6wUz9e^8s;Dr6!YUN{BUXZU8NHO(Qqijak z|CB-Owz4NguzF5??JkK?MuPrc)({jyEw5&p!y^2Zq#xsrJF^;kb{A-&4V5{>$~gKs zm*Fx}s?Kt}V|7P%uL5lBG8$~7oZTmfyPI4`o3Cx(@EbvN67iLtLhH`Cp)>RmM>v`Mxeo@C;MIP5D#jP=5U+t(qb?IxIV_zL1W8+vftfXN41z0dn13%?hp6-s)lm-Qk?!GNT|PDBny=+7 zmDbV4DD7RNsA?B(x9IH?1D+2)FpuN`cpdO)2Q2HMapV`cZSPl;Im(P7iY1q=?Rie+ zY40lkqi^Xmhu5ceeVKbP7^q!Wxrnd+7OIerUonfGV2y5(3lgASTeC`_uv+ z=DvD8c|aow7?(oXhr)?mn!l*^R$8>x1WRbSTb9o2_I2uSW$JjQN)r{ z#>i~^g>K!M( zcjP(KQDWNoxPXG{qY&8GeJ)wFmnJ3mFR@rBy{kx?v2)=!S{EKwjFuc3CseZdOauGM zq`LBKx{U8~6m7*D-kp%doRPJAKd%Uvr;`xh!yOD|5I(augKVpLn_M`CubSxIB`?%k zM{o*B<$t@@pmlhyp5D^S4=MO=Azxo7$kW*7&Tfxy-Bme6TMpST?W@Pxdo@STqLZMw z-e}8rV-?SkQ8BNO;O13598rG~2(b~Yx_;g??f`VdFl!-2$$zs5*a^^KB>XVq7e@Nh z-gG0bQ@S8!1in^Z`yJ$!FZ&s; zhw2b8)#hSz5-Vjih%g%4too%w60ZebsfQ|GULcIJpZpndO#NSM2hbfAH>=-7wZ(1{ zqT?jtlU|nCZ9LgIR3b+BMtyZ%V0>hQ`7lN4oInzRwYaS#`EYX3-Hzm%`bP)nk$j~) zeqHvr&9W#XuJ^*YtZFS1&&RKt6jLK>5FB6Sp>*8nhziyQj+Z{y2bTy7bHE%E2H6AC zNXX+2zw8Gg3_Kkl{`Efo75`I@kK_yJL-=F_?-a(+4oM9^{>a|=Qaq*q5#ESj(Cj=2 z3ZoO~C`qu6(F3UqSZRABZqz=0#@xMo-_(sU5|Bc-;Wj=`6pSys+#+lx`PPgKiDSej zs^H}e5o5heYoYKE&H|bg4r%shV!UZsb8bujy5M#w$SoF{c^EJR@n8&Jwv{F-=f0M2 z!Aec*?1t&Q)1U@I@tHi8n?BQC8V(-!R=<%7Hmc0Yd_(LBjI$v1Si7>8r>M6ONGShG zdva-AO^DH%r5~z*2Ncxzjd%Xsf{1TzessRU>wNhx2TpC_1U>u&UIzC#=^1~q?^={t zh}H{Mp%eww$|Ov%W|17W^*UZRMr=ohm{tZT!~D_d8~C8pTcn!VFM!jw`r3t0C`WNV z&XvVbF5X2l);Bo;yc`{w!aJ|IeD?)Bdl-Sb3$lBZg$kI%xm8T zT6IJltSbwk_I*nJ!F%ee;?w5H|19%+;@Fh#F-Rl-ISACuZYoTuKGzXyBkluIgbN!p>j@|H%K70kdDaO z(j9dl4d(&UdK|6wAOT2|DhE$`%cmo=P?ND(o*-7~Wh(CiaIl!u^BSf5DuK2j+FsBd zBdc~5_;J5m8N{Q`Dp5FstXgy`Kkgws?eBk=#-V{cP{VS%9RkOaWs*tdTIKCZ@@g1G zIfgO<4-j4vR-g1}fEQMW$xI60ttcuZTq|EKCK z_YkkG5`E#;C0(HAXoRGJ9Kqy6=C0w*&tiF}DyPVmNe$6VyU?UM0ES8@ZZPD#lE7FP4_+-XjKwW&I)9?gedfDk@Awb# zMEslykg^^Bi`t@y*H!qUvD{DvFy;t0{hPLx!&5fVf(08*GXCoNTQhQ$&16HnJF7;p zdPP+K5FR37R=`3B%ymwy|FYxDvzKA{=`>>bckQ3(aj0Co4?QxJEpmEc}*H^C}`_{YXIPNMM?g#7@^{EQ2bZPY65< zB873}R>G;5)F3DK9=r|q#vk9Vm*S(q_TMjnDXyqR$@JsjiBCMw_VckS+Dv$aqAI zbA#SS!IsHl5L!eM&NWSTMc~^&g5m6?Vc6d7vkuBY-m5_e2)#G?1RGN%JL+P2x8lMP zq(EK#lxok}k_=>RC52yl4TQ;&90w`9E7S}YZOq$7tvcuaDBRlQ-sR=DAFz^-^w=y_ zTYdkn!LB41XS#q@TDx~+;I6RH9IB#?r@i5A?$HUoG!ry%rY5Xq32uny!4uB;qge{F zs9a1D6<*_1IYVL48n__jXB>Plvv?hvODvL@3|VHQC&gOW6J4wo|I1D+*@Yp3n0G6Ub<@ASB=;I83Eb?f`EIi#$H-(^nmM5&WX-C%#;1Niy1$OC--O+b0L zn1sM|1a+ib-VE|j!5p2!yw_upk7n@S$dhAA^lxdoKAOwJ4oSmgvyen%Si91P+fo^OpT2;h z6`=VXm$z)%ec_Qxeo#?7Xt>i(fqy4@;Uj;JLKn&ZBgmsfL56*$a&o2KcC+PMLzUM) z+!p;}8W2~=BLHg=9E?%}{B!KTVaFu6p9y_6Z7`o*+rfSe&nntn=S&@ULQf+}_+Uk~ z;2F+7O~+6MySFo0Zjvu>7YW}RXTCDniW4C|rn4 z5f)m&;SQTJY}1wuIb-TOuZ8UfQhzcit3XPIr{)%t}$C(H;Kv^z$d*d4KkuqncjYhWHovbPiv-DYb1ie`1ZDgF=T`O#gR`ci zf8%!J&e!DZOK?T51c)YVfH~hHB~rYJ44|6A4KoqYR8u6WO6PC`;Ij(8_Yfy#Ci~FboIj3Q%dk4v;w6 z`vxEZtk3{C*H9s<(ES!l8~rmY9e!kg~?_%N{IvibRdcfokrT zaESjcm#P?Kn6v)IhHwj1nBIrPLizal-DZ0)Y|f!(J^9&0##fO~ur&!elNU0g$gR3j zD&;B(?z`}p%Pu>8q4yy_!>}{t9dqD@q+6OajC7z7B8bHY>N@F3nT8pfk3*el1M5F>3{!ugXx} zd7xMkTwniJ2{eQ!$P-dA{XehAym!5Y$IlCKz_TikDq41@o`)hc;E7f&!GO;H+!x?c zdQ26&vm8RWo*DEec1FnXj?Wu_b!Z6mi=yvp&^yL03h#RfP?Z5r=O|lIvQpqPyZkYq zH$&_`@NW*xhKqe!El7(j!P84y!j+K1sQAQT+6WtL>Hpqp0 zgyh&dC-axok!D7$ge33IxF9Kcv&oVNJksX))2I3 zX~@%%lO(J7^#p3Sc7gnId4@R|P2`_=io+gFry~951=^rR#C8%SKg}+bw}|4X;y7@- zog_EnKIp4ms-X>Cs!s;Hi9J*QaW8pqXd`aCd#>kEvbYdqNmpQlG{cK9$nr4#HTYm3 zJor0soD(ZbWM^b7Rxf_{vdXlS>H5m^XCPH3LMJp|@`2ChvkQ6nC=Ti4o9KfQ&D+6z z7d9Tj9y`v6qYI&@boSeRO?b{8)LS>8?x!jkdlCx%wXF5-z zroX?z?)FvnZy>qpXT~SY?!jUgC_XNBKP=yQjO%fIO>T-sPKHR`y?b^CP5y!yU5qx6Hd`9Xg&ap>JdE}9?*^JmSUfn`C@#;4F++)=RvXBOa7 zfYJlMOAEgS&9=+z{+}u?K-L{ob|Iz_?IJ#y-FyY#pEp9@6!)=u-74*+2d7iajznkrtw~%ou5;lKT=%j3 z;cIHhx}J&58zUufJ5$c>HRn12Eyhmt(xW|JgC%p3=L0v1EWoPqclgJCuq!e<4EqEr z3rdxw6_*&90!ajxfOiS@3R3L^^zS`crSPwURSMUvnyN5G!V`)I!HZ{pTwWDbR=l^5 zSEO3Z=Ly{o66UhFDD}<|>R8DY$oDqia+t)GZWT_FZ2rJId+d5tb1V^*!0EPvP(=~k z-JCcWA%AUoR6*Yqg>j=g=QZEkv2@~I&875jM#~OW2R4|uen|YPQ{!u5S7n0g7*o@3 zaiX$bQx)U3i+pwd4k(#8uqmL8xyGwnpAFdOVAPdyXK|B^ijEDzIRoXwLYgoJc#YN| z&!NgVt3(nRn^y~gNtA!doJwh0z6=O=1o?kkkSQK(+JI9>d4vIU#hkjiQp`_cllx!N z0|gmuxCy*vA)DT>P!J|>+~bAjYIKRw9$reI@@y=1A`mY&81;y#>wbjmEmk5W0)eha zt+rWq&EWcPPqdTATHgy49kTFvgB}Ck@82lS&e9fN#YWhHPSkMC_BRKtd9MiLW|>@o`M> zfCqgx(1UT=R|$bSnZo`04sPQ?wS$9^kr%NqWkeM9^r%$UmQR$RNvOVnzVSf;yyk}G zW66&5=d`DOi*tOckxvX9h~W?t)@()FeCh28qh>*bx>J$sYc{ZeL}BIjbUo*r_*m;H z?yEwKBGf0AS~d4V;Zh%9_k1_)wlnyxO)!{XNybUwRtkn(u|n>nC#qpv)$zjudJxe5 z{&(~aJE(FX1*^7vk52b9Ke6w_Va0cXrE+F1ymu)(YU?% zHQ$-%Ee$c6@|K@fS2h(~j4PdRA*@8L7A~4>xS6;Y?Z9%z;L>^XbRrM!-}@i-3$ko1 z=x!Tw7*Yf<$Dubr!rO)g(?s1acKlv0@6F97;-)MCC1PPL^EOheqTFwylsx}cd?e%+ zxZ8pu&CY#u+&~^1Afo)z({t)H)gt{Fo?UzlFegPS8?T3`j@Y1|88&m_P{oc*r;Rz~ zUub5@78je=6MQ-Q>fT_f;utv4kRtb!L6N@++zK~%)LkM5!o>!I^B;Sy8;I3DdlI*u z7ag_JW^&Ei&g0zX57qOtY#8~vZi-!}mT9Jz^e>Lk8+lHrQU^w1Ze;vRyHY1&q_=C8 z@7T?O1Rx_=^gfVpM$SOqDT$cc-TV-I5FR*UsIZ)^#oQIa!-V%0EIgX;I17Z|>i*|J z7{ST{{56%$!Nrz#7y`;B%tn(pJ7EH@Bt{i=SfR?eg6V>)$Epc0exqu}RPkD7TJVb^ zs>%fajj8wvoqB*iwND3WK}@E2ge6mlzL_A1(WW!Y2eS8~GGh<_H4s%;Lsp=ly?q2N>ceo)XODE*H;~5DFr;JmG53Y;{ zqhQFAB8+vFLrvHx_zXUIt}#_{2+$cQV*5443d|G)95*c}86tCeW`Q71x+KtMs@6h! z3`xdE;XTt&n%I*HI~jv&CtnO=(fFW%kE^eeM^vPUl<-`>l#DrH!4Z&1k?Ef(IF5yn zRJGN?^>D%bXFOVX{7oc921%7k%2vO`SD;7w)ez8);lQ4iuCJNPw;DJw9s%I#Xvy}8 z<_VY+aq(Atg)-rnvwP>w%VI2V4ly*^w|F@1qM|{%%l)ut==&5#;BH6v!$0aBiYz=r zRF69$OVqPC>}jDvQu$09+1BXnkeAJ2$Q!*Q|MI76|B_NJd>;3CgdY6^FMln@00yJ= zQE&l>DqAU_H#?|RyD+Rxnv4dk6jkKT9vNB2MgqW7h(XhXTNOleKN%i%K!)pSmg73m zM%nbARMzL@b6XRw_*ZeTY~d2;HVJW$_KiNOGsZ2IZAU-MrmO5geC{NswX{i@;(zZ1 zTl@^S%?V5)wLo9Rsn}QN$i4Ia%wnuq4)!I%9^Q;xV^LF^nI+6zc3!&DqbXY>^!H~9 zlG!QixE2bcZi}|Auz5i@uMIzifQUj*TfN&z#5;`F4;)5CCC;;eyU5>113+@UH%mDz zjR_$q;J^Gk_@a{bT2X{YRHe-@+v|KLx^}jbhoq&JP(kWRHKDj2-;HyEvv^{JEK_Jv zH3RU^X(#cUnUG|~@&-kkzr(^0%c`q?JQAiu0a1sg(xTPX=VV4f{40&I+YaCDu@IyT z-?W##q>h?ntI!EP<4O?lwClrWbEqBIL%9pVJ80S1QT)7p_rg&_MffDxlmGxLRo|M~ zeGHTUl{mdz^XuI@bw)BD>Y8B?_?XWpFK>m9K=_Fp#0+aQFhJ=E2J{fV!Jys75mMetM1TG3k9HUm_OhF7vQK4Z~`dVNvvjc_9o~rV83i{#yYt;U0*FwYKgMgb{ z6$y^ypbx_1_y%7uLqig+kqU`KYxu>aZBD>=bd>@;!T1+6QhPr9V?@ZlIC$N_$AIg$ zAEMSR9^7LxW74Dd#8j zke82P1wHe*QQSfv9n7EoE2j6MSHNOYTk!9+39S*bb{kNDOv5 zgB-pOqk+K9mWJfbD$ogxd~is51>3k&ScymU-9(sJ^~t0agmu)7iWJV0{MB1kvpiE+ z7y2M=@vr28aV&CRRuh3{^KyuEQK6D0DXoF!LTBGESdzEOtF=!t#t2KCZSprn^4V${tGsuBsmJbL5&qu1EgzfBL) z0$Bwu8R{R6q}Dg$TE$PA9n-15TQ6Ehc=UEO^B+fDcds$091kZ*&?IDvHfsSTm9IMt zUkaNcQiW%XcZpk?4=(1)6z%aK8_)My!1W8!W%RNnL2=^{bY<4CjYySxslOw zpJDwv#B}-Y1zJr@Qlx*{MQLySZv_>X|6r5JBbWOvj8ToWsZ#&OlnJm!i((UZv9Tjv zrXG3DS0}6uHzpXfDwFVfTbUmEYODOWg*)##uB3NHUH_Vq!d#MdlyFUcWF4Q5&Vhf*NXktdGb0^!E9iY)or{I{jYaJUDoH`d0ti0=HkF{Lg= zZJTiYlSJHnXldu~EG5!;*;U2{;)E)vIeFViek}6hoa93ekY&zmd^9%z*yPiut6+nN z51q%c$h0L!nQg(^uBvE>YVsya!AS6!B#9FGAPpZZTM;wI?@*X#*gS$is-JglGY{s> zcK37yt?!{{l64=_ug@cGm!Da9)j?;oMn~BE*&WC8f=*c|QkYo|jB!`4$s%*SP&B#p z>Y8%#SpeXKv?;di)!G0wv57(&_|ZHAQ}cdv@53fw;54xZAv2=`ZAp>On}jnnO~I4LYex)v(=n4Wb~tmY;8(ycxH;kX>-K#(A~{;4RfrC8lSj z@|i4r;FD#fOaitM{(g`ZOnL@faHfAXfg4-{$=x8dZNr2xQp|&hV4%dAYP_KJn2pQH zA+3dQ!3U^j=1IfLn2V$)~g zCP9VQCgE`s0Q_%mUM9)AUzbbOeq4KJ@##i^YNlY!z8vs1RSIGY9+vLd5F#US=pzKq zVvftXeY)`Z^p#J^7j)i&vlw;RBFVrL9MhpAh~gr%#dO`171Zd7|75ItqBi>^e}j6B zEo_VqZ61?62~S9HrhGEp>Ll>CLR`!SSrsZtP3ol_Yg^3-Ivn?-6GFU3Ib1YS2?Vkl^w>R zIhLQ>s&Dk=KSoXdIGg|8`q`f?NoEc4;cs+HcA8nv^af>E3=G2;_T2X?ehpmBcZ6yC z^1=p8ynjE~ZglGv5CBd64m`4w&4yyF8gso;z=ejhG3=d&zUbc8k*Z zh~+BfF2_PUWZ&9XI;<+4lC~NhdVo$ANzs$=Ri$qeD?bmCr&{uxn{XZJ82Jn11aVUO zxy1;`2bRYFYS<)ysaCjfYmop^w~;%~6|^xdZ2YgrRVjJ#4agAuF1ikUluau>92(dW z^vL2w`m5}t+H-u1gJ0EXZ>M_7+@;T%)SjkHpsQ;~Y5j~@YA74AYuk#JG5-UoaTck4 zBPTS|M&WB|*ZED?Ju-d0NUFJ@s{M~sxHsifCDS^gn+QRh@xtK`Y$Y@P zW^rbv%H5T(^u3UwHBrbe4jf6hYRd#Kslfusa#i;&u_~c6W?ytC)cu+26cU2@$71-9 z>ICqq(_U-4?SXukMQZtfKLPeQ9ADyOxNzS<_3{s0p&wQp?yKs`aa4a}aqFuoW9b&5 zjPyl^_4P$P^{^tR_q#U3?Rp<{#R3kw*OxmAYixTq3I|)o?J8+nVf9~$CJXrxK45Z1 zc6W%h`4_k#flrGys7TXlS}_t@78E})_!ZX+iBc)f;gh{T!)6=4|5}N1c=m@j&`+)E zkQwgrQ92M*`wfec^~)EK|GKVqC2{rUG5yS)*TcRxANo`;eMhZX&lnVCvMu-n#|ha1 z2GhpS}2-}o)^|NCFY zb}GuZy@9|bht%e$*OskGQ;*-D`^qWGaZ_V&7f(AfzRPa$SIBcpKOfHl`s2eXKgNf^ zYJ*e?MQnLcH7*Zb*thr&>+_$)P}CIY#vf0q!U>V{#q*A^Goda!jaMqouHF63ifPa8 zd&MU9zVYAWTO8LGf`p;PCE|ueOg}G5-7G!9>=u6Bse5(Gp6(P>c;~T)`1n4+1Y?#t ztS!^7;oDh0Ey_!8EbV^KItuPIOEs;zr`z4dqxhat$8YhQUsGVqqpjD9Hm&&iB?tug zS(7?%i;aDM?@7(Rw*PYE!`!=F%!p9kLfXp1c>H{`y)s-kMwAa;I&1m3^Ri=8vZ=yS z0uTLX^@8=YOP250GbTK39Hg7>TQ|Ng*W>E;NQ)YS;JSd`s;@B`w~ZLSPC3M%HGDSe zscsIg>=E~mj17$G#}S>&+hky`l8|Fff`gI8x?1czFHctwzmI%C^WUtjCM%ltHs@A) z!ufN{iAC(@}2) z>OaN!I#`Y6POHxH!ZY2hQF{F6(%=8R%PPLdRHhvR1ZGf}qXN2J z#ga9Ixw(kOz+DAbRiAq4m^IfgxtR@$BJ$IGoxG;%6PsRX7SQjS@y`>7Vd7tCzb>+gU!|5Y*G~6}x8jVS!tbL3cWItaGu?lkau&-7nJ@-w~Nz z+n)CvJP5KPG1hw$yMOkb{=3X79cu18^y>5FFSKHA{e2rn!UaeaR286`wG{sUaN^+U zsvgUZ|9ImAbo;~A{Q!WOy&F%vsuVKq+z-=V%U5n5^O(7MKd%0zTlY$lYUz~FHJfg7 zFJ@RzWc!2O-t-DU}|1weupawP3qyqZ(ZNHR$&z*`r+Auuy{-_*TK5+3I%qw4%K zKL0UP6nGUYGI*1zai_J&db;U^!zL&aY+ymctDl=SJ)nFE1k-Zr6&A3%`_RJeg88Q1 zLk98u)*KDO$b01jKW=B}0L6hS%ef*tvqjUK-)g6;_j@S+XjQsCdQQ##oWA?eemr92 z7v@9yweL7-dY#XRY_=jKZz?(WyWpY6{Ss*GK?rKPn@#!K{*X88GOS5f*AFb3TEx=G&zAe?W+4op`!WuUU6cOjB8@H7< zXMQmJggkiX=dDV@WXiRiyG9m@%a$9j#l>zK2GZ<`)34fOJu6z=i`IwbreF5(hI|=m zk3oL0Xw#HFC_XKw=Lio#lV6jOd*9-?xQvM|2b|o4;dj~>E!x? z_qTw*zkjP0CBx`FMRf-C@A=w1)h)Md>ih|=pIx=!|E!32d1vHTU~UokA;3~_faQfT z`x4_ta~$u~i8;*ODO5Az@25k?z(eM5&j+OgP?PPAU2uJ8{T9EO|7&~Me>fxr|JmtK z_|rIfO?p=&sPDFgS9ck31{MTQM)+yeR&Rsl_MF>%zU)_d&JmwAN1z>;>o($ZglpUFS|=UfoB~`8zxn(&qdCg!AAe~7 z-?(~5!{i&CnyUQ~xA@n8ezSQk&+`+nE&c#Uo3->FsFWpnom8Io?eJ@x-#OZcEk9ZD z0k>l8=;F5MoI4}vQ^(T3AFR&X-3IPS*wc4d{vZ3gM@)W6>dU6sBxR07YveoaKP?8Q zo9BWDc79rOE?hnLP@&M(@(cRT2)G2O&tcOvI+bKd)7 z^W#wP96x{kg832Nk9n8YrP@3Gz7K2zH-imIa-VCc0nAn>|I0i-XuNUSPk8~$nvRM$ zd!POXF82^hJ2UfZruCI>d+WHP_kRQ1=Bq$WHz2AvWm02P<7e@h?EA}OOWJL#1s2DD zO-ZfoTPrSqT<7ZAK1iaU{qMl9FOt{3T28t4JmTMTQ@y0*nZOf9XPJe8=Tf@tFUv>F zx4XQ{aQTnVR_8k0KYlmWyVaWt9G6_pn;{HrLiQW7+h@i8-mtcR>-=p`B7jrc)^C}9 zZ}46Dex}*f|CZ;No~M$u>p&@BWG#CIL| Z&;M8AtoZRgi{~)_fv2mV%Q~loCID^hy(Rzv diff --git a/composer-require-checker.json b/composer-require-checker.json new file mode 100644 index 0000000..21af376 --- /dev/null +++ b/composer-require-checker.json @@ -0,0 +1,8 @@ +{ + "symbol-whitelist": [ + "Illuminate\\Support\\ServiceProvider", + "Illuminate\\Console\\Command", + "config_path", + "Symfony\\Component\\Yaml\\Dumper" + ] +} diff --git a/composer.json b/composer.json index 888bad9..8b2ba39 100644 --- a/composer.json +++ b/composer.json @@ -1,42 +1,62 @@ { "name": "wayofdev/laravel-symfony-serializer", - "description": "Laravel wrapper around Symfony Serializer.", - "type": "library", + "description": "๐Ÿ“ฆ Laravel wrapper around Symfony Serializer.", "license": "MIT", - "homepage": "https://wayof.dev", - "support": { - "issues": "https://github.com/wayofdev/laravel-symfony-serializer/issues", - "source": "https://github.com/wayofdev/laravel-symfony-serializer" - }, + "type": "library", + "keywords": [ + "php", + "api", + "laravel-package", + "json", + "php8", + "laravel", + "serializer", + "symfony-component", + "serialize", + "laravel-api", + "symfony-serializer", + "laravel-serializer" + ], "authors": [ { - "name": "lotyp", + "name": "Andrij Orlenko", "email": "the@wayof.dev" } ], + "homepage": "https://wayof.dev", + "support": { + "issues": "https://github.com/wayofdev/laravel-symfony-serializer/issues", + "source": "https://github.com/wayofdev/laravel-symfony-serializer", + "security": "https://github.com/wayofdev/laravel-symfony-serializer/blob/master/.github/SECURITY.md" + }, "require": { "php": "^8.2", "doctrine/annotations": "^2.0", - "illuminate/http": "^10.15", - "symfony/property-access": "^6.3", - "symfony/serializer": "^6.3" + "illuminate/http": "^11.0", + "symfony/property-access": "^7.1", + "symfony/serializer": "^7.1", + "symfony/property-info": "^7.1", + "ramsey/uuid": "^4.7" }, "require-dev": { - "ergebnis/composer-normalize": "^2.31", - "nunomaduro/larastan": "^2.6", - "orchestra/testbench": "^8.5", - "pestphp/pest": "^2.6", - "pestphp/pest-plugin-laravel": "^2.0.0", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "^10.2", - "ramsey/uuid": "^4.7", - "roave/security-advisories": "dev-latest", - "symfony/yaml": "^6.3", - "wayofdev/cs-fixer-config": "^1.2" + "ergebnis/phpunit-slow-test-detector": "^2.14", + "larastan/larastan": "^2.9", + "orchestra/testbench": "^9.1", + "pestphp/pest": "^2.34", + "pestphp/pest-plugin-laravel": "^2.4", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-deprecation-rules": "^1.2", + "phpstan/phpstan-phpunit": "^1.4", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "^10.5", + "psalm/plugin-laravel": "^2.11", + "psalm/plugin-phpunit": "^0.19", + "rector/rector": "^1.1", + "roave/infection-static-analysis-plugin": "^1.35", + "symfony/yaml": "^7.1", + "vimeo/psalm": "^5.24", + "wayofdev/cs-fixer-config": "^1.5" }, "suggest": { "symfony/yaml": "For using the YamlEncoder." @@ -52,31 +72,62 @@ "WayOfDev\\Serializer\\Tests\\": "tests/src/" } }, - "scripts": { - "cs:fix": "php vendor/bin/php-cs-fixer fix -v", - "cs:diff": "php vendor/bin/php-cs-fixer fix --dry-run -v --diff", - "test": "XDEBUG_MODE=coverage php vendor/bin/pest", - "test:cc": "XDEBUG_MODE=coverage php vendor/bin/pest --coverage", - "stan": "php vendor/bin/phpstan analyse --memory-limit=2G", - "stan:ci": "php vendor/bin/phpstan analyse --memory-limit=2G --error-format=github" - }, "config": { - "sort-packages": true, "allow-plugins": { "ergebnis/composer-normalize": true, - "phpstan/extension-installer": true, - "pestphp/pest-plugin": true - } + "infection/extension-installer": true, + "pestphp/pest-plugin": true, + "phpstan/extension-installer": true + }, + "audit": { + "abandoned": "report" + }, + "platform": { + "php": "8.2.17" + }, + "sort-packages": true }, "extra": { + "composer-normalize": { + "indent-size": 4, + "indent-style": "space" + }, "laravel": { "providers": [ "WayOfDev\\Serializer\\Bridge\\Laravel\\Providers\\SerializerServiceProvider" ] - }, - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" } + }, + "scripts": { + "cs:diff": "php-cs-fixer fix --dry-run -v --diff", + "cs:fix": "php-cs-fixer fix -v", + "infect": [ + "@putenv XDEBUG_MODE=coverage", + "roave-infection-static-analysis-plugin" + ], + "infect:ci": [ + "@putenv XDEBUG_MODE=coverage", + "roave-infection-static-analysis-plugin --ansi --logger-github --ignore-msi-with-no-mutations --only-covered" + ], + "psalm": "psalm --show-info=true", + "psalm:baseline": "psalm --set-baseline=psalm-baseline.xml", + "psalm:ci": "psalm --output-format=github --shepherd --show-info=false --stats --threads=4", + "refactor": "rector process --config=rector.php", + "refactor:ci": "rector process --config=rector.php --dry-run --ansi", + "stan": "phpstan analyse --memory-limit=2G", + "stan:baseline": "phpstan analyse --generate-baseline --memory-limit=2G --allow-empty-baseline", + "stan:ci": "phpstan analyse --memory-limit=2G --error-format=github", + "test": [ + "@putenv XDEBUG_MODE=coverage", + "pest --color=always" + ], + "test:arch": [ + "@putenv XDEBUG_MODE=coverage", + "pest --color=always --configuration pest.xml.dist" + ], + "test:cc": [ + "@putenv XDEBUG_MODE=coverage", + "pest --coverage --coverage-clover=.build/phpunit/logs/clover.xml" + ] } } diff --git a/composer.lock b/composer.lock index 14644be..f26e0b5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,29 +4,29 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "07fc14f62b3d33bc82d208d06126c949", + "content-hash": "3822f0dff27c4ab6950261427c9dd46d", "packages": [ { "name": "brick/math", - "version": "0.11.0", + "version": "0.12.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + "reference": "f510c0a40911935b77b86859eb5223d58d660df1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^8.1" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "5.0.0" + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "5.16.0" }, "type": "library", "autoload": { @@ -46,12 +46,17 @@ "arithmetic", "bigdecimal", "bignum", + "bignumber", "brick", - "math" + "decimal", + "integer", + "math", + "mathematics", + "rational" ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.11.0" + "source": "https://github.com/brick/math/tree/0.12.1" }, "funding": [ { @@ -59,7 +64,76 @@ "type": "github" } ], - "time": "2023-01-15T23:15:59+00:00" + "time": "2023-11-29T23:19:16+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" }, { "name": "dflydev/dot-access-data", @@ -214,16 +288,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -285,7 +359,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -301,31 +375,31 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/lexer", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { @@ -362,7 +436,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -378,20 +452,20 @@ "type": "tidelift" } ], - "time": "2022-12-15T16:57:16+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -431,7 +505,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -439,20 +513,20 @@ "type": "github" } ], - "time": "2022-09-10T18:51:20+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { @@ -461,8 +535,8 @@ "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -498,7 +572,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -506,25 +580,25 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "fruitcake/php-cors", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" + "symfony/http-foundation": "^4.4|^5.4|^6|^7" }, "require-dev": { "phpstan/phpstan": "^1.4", @@ -534,7 +608,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -565,7 +639,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, "funding": [ { @@ -577,28 +651,28 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -627,7 +701,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -639,39 +713,59 @@ "type": "tidelift" } ], - "time": "2023-02-25T20:23:15+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { - "name": "guzzlehttp/uri-template", - "version": "v1.0.1", + "name": "guzzlehttp/guzzle", + "version": "7.8.1", "source": { "type": "git", - "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8", - "uri-template/tests": "1.0.0" + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "GuzzleHttp\\UriTemplate\\": "src" + "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -689,6 +783,11 @@ "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, { "name": "George Mponos", "email": "gmponos@gmail.com", @@ -698,16 +797,33 @@ "name": "Tobias Nyholm", "email": "tobias.nyholm@gmail.com", "homepage": "https://github.com/Nyholm" + }, + { + "name": "Mรกrk Sรกgi-Kazรกr", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], - "description": "A polyfill class for uri_template of PHP", + "description": "Guzzle is a PHP HTTP client library", "keywords": [ - "guzzlehttp", - "uri-template" + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" ], "support": { - "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -719,188 +835,43 @@ "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { - "name": "laravel/framework", - "version": "v10.15.0", + "name": "guzzlehttp/promises", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "c7599dc92e04532824bafbd226c2936ce6a905b8" + "url": "https://github.com/guzzle/promises.git", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/c7599dc92e04532824bafbd226c2936ce6a905b8", - "reference": "c7599dc92e04532824bafbd226c2936ce6a905b8", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", - "composer-runtime-api": "^2.2", - "doctrine/inflector": "^2.0.5", - "dragonmantank/cron-expression": "^3.3.2", - "egulias/email-validator": "^3.2.1|^4.0", - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-session": "*", - "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", - "guzzlehttp/uri-template": "^1.0", - "laravel/serializable-closure": "^1.3", - "league/commonmark": "^2.2.1", - "league/flysystem": "^3.8.0", - "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.62.1", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", - "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/process": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/testing": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", - "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-path-prefixing": "^3.3", - "league/flysystem-read-only": "^3.3", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.4", - "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", - "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^10.0.7", - "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4" - }, - "suggest": { - "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", - "ext-apcu": "Required to use the APC cache driver.", - "ext-fileinfo": "Required to use the Filesystem class.", - "ext-ftp": "Required to use the Flysystem FTP driver.", - "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", - "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", - "ext-pdo": "Required to use all database features.", - "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", - "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", - "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", - "laravel/tinker": "Required to use the tinker console command (^2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", - "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", - "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", - "league/flysystem-read-only": "Required to use read-only disks (^3.3)", - "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", - "predis/predis": "Required to use the predis connector (^2.0.2).", - "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "10.x-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] + "GuzzleHttp\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -909,54 +880,92 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", + "description": "Guzzle promises library", "keywords": [ - "framework", - "laravel" + "promise" ], "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, - "time": "2023-07-11T13:43:52+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:19:20+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { - "php": "^7.3|^8.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" }, "require-dev": { - "nesbot/carbon": "^2.61", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { - "Laravel\\SerializableClosure\\": "src/" + "GuzzleHttp\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -965,261 +974,2696 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Mรกrk Sรกgi-Kazรกr", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Mรกrk Sรกgi-Kazรกr", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "closure", - "laravel", - "serializable" + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" ], "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, - "time": "2023-01-30T18:31:20+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:05:35+00:00" }, { - "name": "league/commonmark", - "version": "2.4.0", + "name": "guzzlehttp/uri-template", + "version": "v1.0.3", "source": { "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048" + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { - "ext-mbstring": "*", - "league/config": "^1.1.1", - "php": "^7.4 || ^8.0", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4 || ^2.0", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-12-03T19:50:20+00:00" + }, + { + "name": "laravel/framework", + "version": "v11.10.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "99b4255194912044b75ab72329f8c19e6345720e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/99b4255194912044b75ab72329f8c19e6345720e", + "reference": "99b4255194912044b75ab72329f8c19e6345720e", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.18", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.72.2|^3.0", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.0", + "symfony/error-handler": "^7.0", + "symfony/finder": "^7.0", + "symfony/http-foundation": "^7.0", + "symfony/http-kernel": "^7.0", + "symfony/mailer": "^7.0", + "symfony/mime": "^7.0", + "symfony/polyfill-php83": "^1.28", + "symfony/process": "^7.0", + "symfony/routing": "^7.0", + "symfony/uid": "^7.0", + "symfony/var-dumper": "^7.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "mockery/mockery": "1.6.8", + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "ext-gmp": "*", + "fakerphp/faker": "^1.23", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.6", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^9.0.15", + "pda/pheanstalk": "^5.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.5|^11.0", + "predis/predis": "^2.0.2", + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.0", + "symfony/http-client": "^7.0", + "symfony/psr-http-message-bridge": "^7.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.6).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "11.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-06-04T13:45:55+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.23", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/9bc4df7c699b0452c6b815e64a2d84b6d7f99400", + "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.23" + }, + "time": "2024-05-27T13:53:20+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-11-08T14:08:06+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.3", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2024-02-02T11:59:32+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.28.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c", + "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.28.0" + }, + "time": "2024-05-22T10:09:12+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.28.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/13f22ea8be526ea58c2ddff9e158ef7c296e4f40", + "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.28.0" + }, + "time": "2024-05-06T20:05:52+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-01-28T23:22:08+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.6.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.5.17", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2024-04-12T21:02:21+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "415782b7e48223342f1a616c16c45a95b15b2318" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/415782b7e48223342f1a616c16c45a95b15b2318", + "reference": "415782b7e48223342f1a616c16c45a95b15b2318", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3 || ^7.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.57.2", + "kylekatarnls/multi-tester": "^2.5.3", + "ondrejmirtes/better-reflection": "^6.25.0.4", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.11.2", + "phpunit/phpunit": "^10.5.20", + "squizlabs/php_codesniffer": "^3.9.0" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2024-06-03T17:25:54+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "๐Ÿ“ Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.0" + }, + "time": "2023-12-11T11:54:22+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.4", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "shasum": "" + }, + "require": { + "php": ">=8.0 <8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "๐Ÿ›  Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.4" + }, + "time": "2024-01-17T16:50:36+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a", + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.0.4" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^2.2.0", + "illuminate/console": "^11.0.0", + "laravel/pint": "^1.14.0", + "mockery/mockery": "^1.6.7", + "pestphp/pest": "^2.34.1", + "phpstan/phpstan": "^1.10.59", + "phpstan/phpstan-strict-rules": "^1.5.2", + "symfony/var-dumper": "^7.0.4", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2024-03-06T16:17:14+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "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/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.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": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://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/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "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/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.6", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.6" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2024-04-27T21:32:50+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/3dfc8b084853586de51dd1441c6242c76a28cbe7", + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "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": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.1.1" + }, + "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": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/console", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "9b008f2d7b21c74ef4d0c3de6077a642bc55ece3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/9b008f2d7b21c74ef4d0c3de6077a642bc55ece3", + "reference": "9b008f2d7b21c74ef4d0c3de6077a642bc55ece3", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "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/v7.1.1" + }, + "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": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-Franรงois Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.1.1" + }, + "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": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.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/v3.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": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "e9b8bbce0b4f322939332ab7b6b81d8c11da27dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/e9b8bbce0b4f322939332ab7b6b81d8c11da27dd", + "reference": "e9b8bbce0b4f322939332ab7b6b81d8c11da27dd", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "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": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v7.1.1" + }, + "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": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "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": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" + }, + "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": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "shasum": "" }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "League\\CommonMark\\": "src" + "Symfony\\Contracts\\EventDispatcher\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "homepage": "https://commonmark.thephpleague.com", + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", "keywords": [ - "commonmark", - "flavored", - "gfm", - "github", - "github-flavored", - "markdown", - "md", - "parser" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/colinodell", + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-03-24T15:16:10+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "league/config", - "version": "v1.2.0", + "name": "symfony/finder", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + "url": "https://github.com/symfony/finder.git", + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6", + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6", "shasum": "" }, "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" + "php": ">=8.2" }, "require-dev": { - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, "autoload": { "psr-4": { - "League\\Config\\": "src" - } + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Define configuration arrays with strict schemas and access values with dot notation", - "homepage": "https://config.thephpleague.com", - "keywords": [ - "array", - "config", - "configuration", - "dot", - "dot-access", - "nested", - "schema" - ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", "support": { - "docs": "https://config.thephpleague.com/", - "issues": "https://github.com/thephpleague/config/issues", - "rss": "https://github.com/thephpleague/config/releases.atom", - "source": "https://github.com/thephpleague/config" + "source": "https://github.com/symfony/finder/tree/v7.1.1" }, "funding": [ { - "url": "https://www.colinodell.com/sponsor", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" + "url": "https://github.com/fabpot", + "type": "github" }, { - "url": "https://github.com/colinodell", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2022-12-11T20:36:23+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "league/flysystem", - "version": "3.15.1", + "name": "symfony/http-foundation", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/74d171d5b6a1d9e4bfee09a41937c17a7536acfa", + "reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa", "shasum": "" }, "require": { - "league/flysystem-local": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "conflict": { - "aws/aws-sdk-php": "3.209.31 || 3.210.0", - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "phpseclib/phpseclib": "3.0.15", - "symfony/http-client": "<5.2" + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", - "aws/aws-sdk-php": "^3.220.0", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.3.1" + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "League\\Flysystem\\": "src" - } + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1227,65 +3671,113 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "File storage abstraction for PHP", - "keywords": [ - "WebDAV", - "aws", - "cloud", - "file", - "files", - "filesystem", - "filesystems", - "ftp", - "s3", - "sftp", - "storage" - ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" + "source": "https://github.com/symfony/http-foundation/tree/v7.1.1" }, "funding": [ { - "url": "https://ecologi.com/frankdejonge", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/frankdejonge", + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2023-05-04T09:04:26+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "league/flysystem-local", - "version": "3.15.0", + "name": "symfony/http-kernel", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "fa8d1c75b5f33b1302afccf81811f93976c6e26f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fa8d1c75b5f33b1302afccf81811f93976c6e26f", + "reference": "fa8d1c75b5f33b1302afccf81811f93976c6e26f", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "league/flysystem": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.0.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, "type": "library", "autoload": { "psr-4": { - "League\\Flysystem\\Local\\": "" - } + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1293,62 +3785,79 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Local filesystem adapter for Flysystem.", - "keywords": [ - "Flysystem", - "file", - "files", - "filesystem", - "local" - ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" + "source": "https://github.com/symfony/http-kernel/tree/v7.1.1" }, "funding": [ { - "url": "https://ecologi.com/frankdejonge", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/frankdejonge", + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2024-06-04T06:52:15+00:00" }, { - "name": "league/mime-type-detection", - "version": "1.11.0", + "name": "symfony/mailer", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "url": "https://github.com/symfony/mailer.git", + "reference": "2eaad2e167cae930f25a3d731fec8b2ded5e751e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/symfony/mailer/zipball/2eaad2e167cae930f25a3d731fec8b2ded5e751e", + "reference": "2eaad2e167cae930f25a3d731fec8b2ded5e751e", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "League\\MimeTypeDetection\\": "src" - } + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1356,93 +3865,79 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Mime-type detection for Flysystem", + "description": "Helps sending emails", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/symfony/mailer/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/frankdejonge", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "monolog/monolog", - "version": "3.4.0", + "name": "symfony/mime", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + "url": "https://github.com/symfony/mime.git", + "reference": "21027eaacc1a8a20f5e616c25c3580f5dd3a15df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "url": "https://api.github.com/repos/symfony/mime/zipball/21027eaacc1a8a20f5e616c25c3580f5dd3a15df", + "reference": "21027eaacc1a8a20f5e616c25c3580f5dd3a15df", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" + "php": ">=8.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, - "provide": { - "psr/log-implementation": "3.0.0" + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2.0", - "guzzlehttp/guzzle": "^7.4.5", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.1", - "predis/predis": "^1.1 || ^2", - "ruflin/elastica": "^7", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" - } + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1450,91 +3945,75 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", "keywords": [ - "log", - "logging", - "psr-3" + "mime", + "mime-type" ], "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + "source": "https://github.com/symfony/mime/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/Seldaek", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-06-21T08:46:11+00:00" + "time": "2024-06-04T06:40:14+00:00" }, { - "name": "nesbot/carbon", - "version": "2.68.1", + "name": "symfony/polyfill-ctype", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "php": ">=7.1" }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" }, - "bin": [ - "bin/carbon" - ], "type": "library", "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Carbon\\": "src/Carbon/" + "Symfony\\Polyfill\\Ctype\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -1543,238 +4022,240 @@ ], "authors": [ { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", "keywords": [ - "date", - "datetime", - "time" + "compatibility", + "ctype", + "polyfill", + "portable" ], "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" + "url": "https://github.com/fabpot", + "type": "github" }, { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-06-20T18:29:04+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "nette/schema", - "version": "v1.2.3", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" + "php": ">=7.1" }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.2-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "๐Ÿ“ Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", "keywords": [ - "config", - "nette" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, - "time": "2022-10-13T01:24:26+00:00" + "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": "2024-01-29T20:11:03+00:00" }, { - "name": "nette/utils", - "version": "v4.0.0", + "name": "symfony/polyfill-intl-idn", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { - "php": ">=8.0 <8.3" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" }, "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "4.0-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "๐Ÿ›  Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, - "time": "2023-02-02T10:41:53+00:00" + "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": "2024-01-29T20:11:03+00:00" }, { - "name": "nunomaduro/termwind", - "version": "v1.15.1", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/nunomaduro/termwind.git", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": "^8.0", - "symfony/console": "^5.3.0|^6.0.0" + "php": ">=7.1" }, - "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", - "thecodingmachine/phpstan-strict-rules": "^1.0.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { - "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "files": [ - "src/Functions.php" + "bootstrap.php" ], "psr-4": { - "Termwind\\": "src/" - } + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1782,140 +4263,153 @@ ], "authors": [ { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Its like Tailwind CSS, but for the console.", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", "keywords": [ - "cli", - "console", - "css", - "package", - "php", - "style" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { - "url": "https://www.paypal.com/paypalme/enunomaduro", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/nunomaduro", + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://github.com/xiCO2k", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2023-02-08T01:06:31+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "phpoption/phpoption", - "version": "1.9.1", + "name": "symfony/polyfill-mbstring", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "php": ">=7.1" }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "1.9-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "PhpOption\\": "src/PhpOption/" + "Symfony\\Polyfill\\Mbstring\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Option Type for PHP", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "language", - "option", - "php", - "type" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "psr/cache", - "version": "3.0.0", + "name": "symfony/polyfill-php72", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=7.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Psr\\Cache\\": "src/" + "Symfony\\Polyfill\\Php72\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -1924,48 +4418,75 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.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" } ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "psr/container", - "version": "2.0.2", + "name": "symfony/polyfill-php80", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": ">=7.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Psr\\Container\\": "src/" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1973,52 +4494,80 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, - "time": "2021-11-05T16:47:00+00:00" + "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": "2024-01-29T20:11:03+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "symfony/polyfill-php83", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2026,48 +4575,77 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Standard interfaces for event handling.", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "events", - "psr", - "psr-14" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, - "time": "2019-01-08T18:20:26+00:00" + "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": "2024-01-29T20:11:03+00:00" }, { - "name": "psr/log", - "version": "3.0.0", + "name": "symfony/polyfill-uuid", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Psr\\Log\\": "src" + "Symfony\\Polyfill\\Uuid\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2076,49 +4654,66 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Grรฉgoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", "keywords": [ - "log", - "psr", - "psr-3" + "compatibility", + "polyfill", + "portable", + "uuid" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" }, - "time": "2021-07-14T16:46:02+00:00" + "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": "2024-01-29T20:11:03+00:00" }, { - "name": "psr/simple-cache", - "version": "3.0.0", + "name": "symfony/process", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + "url": "https://github.com/symfony/process.git", + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028", + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=8.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\SimpleCache\\": "src/" - } + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2126,75 +4721,64 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.1.1" + }, + "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" + } ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" - }, - "time": "2021-10-29T13:26:27+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "ramsey/collection", - "version": "2.0.0", + "name": "symfony/property-access", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "url": "https://github.com/symfony/property-access.git", + "reference": "74e39e6a6276b8e384f34c6ddbc10a6c9a60193a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/symfony/property-access/zipball/74e39e6a6276b8e384f34c6ddbc10a6c9a60193a", + "reference": "74e39e6a6276b8e384f34c6ddbc10a6c9a60193a", "shasum": "" }, "require": { - "php": "^8.1" + "php": ">=8.2", + "symfony/property-info": "^6.4|^7.0" }, "require-dev": { - "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", - "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" + "symfony/cache": "^6.4|^7.0" }, "type": "library", - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } - }, "autoload": { "psr-4": { - "Ramsey\\Collection\\": "src/" - } + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2202,172 +4786,165 @@ ], "authors": [ { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP library for representing and manipulating collections.", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", "keywords": [ + "access", "array", - "collection", - "hash", - "map", - "queue", - "set" + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" ], "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/symfony/property-access/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/ramsey", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "ramsey/uuid", - "version": "4.7.4", + "name": "symfony/property-info", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "url": "https://github.com/symfony/property-info.git", + "reference": "0f80f818c6728f15de30a4f89866d68e4912ae84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/symfony/property-info/zipball/0f80f818c6728f15de30a4f89866d68e4912ae84", + "reference": "0f80f818c6728f15de30a4f89866d68e4912ae84", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.2 || ^2.0" + "php": ">=8.2", + "symfony/string": "^6.4|^7.0", + "symfony/type-info": "^7.1" }, - "replace": { - "rhumsaa/uuid": "self.version" + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + "phpdocumentor/reflection-docblock": "^5.2", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "Ramsey\\Uuid\\": "src/" - } + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "authors": [ + { + "name": "Kรฉvin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", "keywords": [ - "guid", - "identifier", - "uuid" + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" ], "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/symfony/property-info/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/ramsey", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "symfony/console", - "version": "v6.3.4", + "name": "symfony/routing", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + "url": "https://github.com/symfony/routing.git", + "reference": "60c31bab5c45af7f13091b87deb708830f3c96c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "url": "https://api.github.com/repos/symfony/routing/zipball/60c31bab5c45af7f13091b87deb708830f3c96c0", + "reference": "60c31bab5c45af7f13091b87deb708830f3c96c0", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\Routing\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2387,16 +4964,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ - "cli", - "command-line", - "console", - "terminal" + "router", + "routing", + "uri", + "url" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.4" + "source": "https://github.com/symfony/routing/tree/v7.1.1" }, "funding": [ { @@ -2412,29 +4989,65 @@ "type": "tidelift" } ], - "time": "2023-08-16T10:10:12+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "symfony/css-selector", - "version": "v6.3.0", + "name": "symfony/serializer", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" + "url": "https://github.com/symfony/serializer.git", + "reference": "74817ee48e37cce1a1b33c66ffdb750e7e048c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "url": "https://api.github.com/repos/symfony/serializer/zipball/74817ee48e37cce1a1b33c66ffdb750e7e048c3c", + "reference": "74817ee48e37cce1a1b33c66ffdb750e7e048c3c", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<6.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/uid": "<6.4", + "symfony/validator": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "seld/jsonlint": "^1.10", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.1", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\CssSelector\\": "" + "Symfony\\Component\\Serializer\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2449,19 +5062,15 @@ "name": "Fabien Potencier", "email": "fabien@symfony.com" }, - { - "name": "Jean-Franรงois Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Converts CSS selectors to XPath expressions", + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.0" + "source": "https://github.com/symfony/serializer/tree/v7.1.1" }, "funding": [ { @@ -2477,29 +5086,34 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:43:42+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "name": "symfony/service-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2507,8 +5121,11 @@ } }, "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2525,10 +5142,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -2544,42 +5169,47 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/error-handler", - "version": "v6.3.0", + "name": "symfony/string", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "99d2d814a6351461af350ead4d963bd67451236f" + "url": "https://github.com/symfony/string.git", + "reference": "60bc311c74e0af215101235aa6f471bcbc032df2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/99d2d814a6351461af350ead4d963bd67451236f", - "reference": "99d2d814a6351461af350ead4d963bd67451236f", + "url": "https://api.github.com/repos/symfony/string/zipball/60bc311c74e0af215101235aa6f471bcbc032df2", + "reference": "60bc311c74e0af215101235aa6f471bcbc032df2", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2591,18 +5221,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to manage errors and ease debugging PHP code", + "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/error-handler/tree/v6.3.0" + "source": "https://github.com/symfony/string/tree/v7.1.1" }, "funding": [ { @@ -2618,48 +5256,62 @@ "type": "tidelift" } ], - "time": "2023-05-10T12:03:13+00:00" + "time": "2024-06-04T06:40:14+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v6.3.2", + "name": "symfony/translation", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + "url": "https://github.com/symfony/translation.git", + "reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "url": "https://api.github.com/repos/symfony/translation/zipball/cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3", + "reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2.5|^3" + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/service-contracts": "<2.5" + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\Translation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2679,10 +5331,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + "source": "https://github.com/symfony/translation/tree/v7.1.1" }, "funding": [ { @@ -2698,30 +5350,29 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:56:43+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "name": "symfony/translation-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2730,8 +5381,11 @@ }, "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2747,7 +5401,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Generic abstractions related to translation", "homepage": "https://symfony.com", "keywords": [ "abstractions", @@ -2758,7 +5412,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -2774,32 +5428,40 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/finder", - "version": "v6.3.3", + "name": "symfony/type-info", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" + "url": "https://github.com/symfony/type-info.git", + "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "url": "https://api.github.com/repos/symfony/type-info/zipball/60b28eb733f1453287f1263ed305b96091e0d1dc", + "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.0", + "symfony/dependency-injection": "<6.4", + "symfony/property-info": "<6.4" }, "require-dev": { - "symfony/filesystem": "^6.0" + "phpstan/phpdoc-parser": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\TypeInfo\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2811,18 +5473,28 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "Extracts PHP types information.", "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.3" + "source": "https://github.com/symfony/type-info/tree/v7.1.1" }, "funding": [ { @@ -2838,45 +5510,33 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:31:44+00:00" + "time": "2024-05-31T14:59:31+00:00" }, { - "name": "symfony/http-foundation", - "version": "v6.3.1", + "name": "symfony/uid", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66" + "url": "https://github.com/symfony/uid.git", + "reference": "bb59febeecc81528ff672fad5dab7f06db8c8277" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", - "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", + "url": "https://api.github.com/repos/symfony/uid/zipball/bb59febeecc81528ff672fad5dab7f06db8c8277", + "reference": "bb59febeecc81528ff672fad5dab7f06db8c8277", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "symfony/cache": "<6.2" + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "symfony/console": "^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Component\\Uid\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2888,18 +5548,27 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Grรฉgoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Provides an object-oriented API to generate and represent UIDs", "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.1" + "source": "https://github.com/symfony/uid/tree/v7.1.1" }, "funding": [ { @@ -2915,81 +5584,47 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "symfony/http-kernel", - "version": "v6.3.1", + "name": "symfony/var-dumper", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "deb2c2b506ff6fdbb340e00b34e9901e1605f293" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/161e16fd2e35fb4881a43bc8b383dfd5be4ac374", - "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/deb2c2b506ff6fdbb340e00b34e9901e1605f293", + "reference": "deb2c2b506ff6fdbb340e00b34e9901e1605f293", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.2.7", - "symfony/polyfill-ctype": "^1.8" + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "symfony/console": "<6.4" }, "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4.5|^6.0.5", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", - "twig/twig": "^2.13|^3.0.4" + "ext-iconv": "*", + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3001,18 +5636,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a structured process for converting a Request into a Response", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.1" + "source": "https://github.com/symfony/var-dumper/tree/v7.1.1" }, "funding": [ { @@ -3028,131 +5667,173 @@ "type": "tidelift" } ], - "time": "2023-06-26T06:07:32+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "symfony/mailer", - "version": "v6.3.0", + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", "source": { "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^6.2", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Mailer\\": "" + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + }, + "time": "2023-12-08T13:03:43+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true }, - "exclude-from-classmap": [ - "/Tests/" - ] + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" } ], - "description": "Helps sending emails", - "homepage": "https://symfony.com", + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], "support": { - "source": "https://github.com/symfony/mailer/tree/v6.3.0" + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/GrahamCampbell", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { - "name": "symfony/mime", - "version": "v6.3.0", + "name": "voku/portable-ascii", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad" + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" + "php": ">=7.0.0" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "voku\\": "src/voku/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3160,78 +5841,79 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" } ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", "keywords": [ - "mime", - "mime-type" + "ascii", + "clean", + "php" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.0" + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.paypal.me/moelleken", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/voku", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", "type": "tidelift" } ], - "time": "2023-04-28T15:57:00+00:00" + "time": "2022-03-08T17:03:00+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "name": "webmozart/assert", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, - "provide": { - "ext-ctype": "*" + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "phpunit/phpunit": "^8.5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.10-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3240,77 +5922,63 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", + "description": "Assertions to validate method input/output with nice error messages.", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "assert", + "check", + "validate" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.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": "2023-01-26T09:26:14+00:00" - }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "name": "amphp/amp", + "version": "v2.6.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "url": "https://github.com/amphp/amp.git", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^7 | ^8 | ^9", + "react/promise": "^2", + "vimeo/psalm": "^3.12" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.x-dev" } }, "autoload": { "files": [ - "bootstrap.php" + "lib/functions.php", + "lib/Internal/functions.php" ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + "Amp\\": "lib" } }, "notification-url": "https://packagist.org/downloads/", @@ -3319,81 +5987,81 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.6.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-03-21T18:52:26+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "name": "amphp/byte-stream", + "version": "v1.8.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "url": "https://github.com/amphp/byte-stream.git", + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc", + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "amphp/amp": "^2", + "php": ">=7.1" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "files": [ - "bootstrap.php" + "lib/functions.php" ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" + "Amp\\ByteStream\\": "lib" } }, "notification-url": "https://packagist.org/downloads/", @@ -3402,87 +6070,91 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "https://amphp.org/byte-stream", "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v1.8.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-04-13T18:00:56+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "name": "barryvdh/laravel-ide-helper", + "version": "v3.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "url": "https://github.com/barryvdh/laravel-ide-helper.git", + "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", + "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", "shasum": "" }, "require": { - "php": ">=7.1" + "barryvdh/reflection-docblock": "^2.1.1", + "composer/class-map-generator": "^1.0", + "ext-json": "*", + "illuminate/console": "^10 || ^11", + "illuminate/database": "^10.38 || ^11", + "illuminate/filesystem": "^10 || ^11", + "illuminate/support": "^10 || ^11", + "nikic/php-parser": "^4.18 || ^5", + "php": "^8.1", + "phpdocumentor/type-resolver": "^1.1.0" + }, + "require-dev": { + "ext-pdo_sqlite": "*", + "friendsofphp/php-cs-fixer": "^3", + "illuminate/config": "^9 || ^10 || ^11", + "illuminate/view": "^9 || ^10 || ^11", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^8 || ^9", + "phpunit/phpunit": "^10.5", + "spatie/phpunit-snapshot-assertions": "^4 || ^5", + "vimeo/psalm": "^5.4" }, "suggest": { - "ext-intl": "For best performance" + "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)." }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-master": "3.0-dev" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "laravel": { + "providers": [ + "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" + ] } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Barryvdh\\LaravelIdeHelper\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3490,82 +6162,73 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", + "keywords": [ + "autocomplete", + "codeintel", + "helper", + "ide", + "laravel", + "netbeans", + "phpdoc", + "phpstorm", + "sublime" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.0.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://fruitcake.nl", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/barryvdh", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-03-01T12:53:18+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "name": "barryvdh/reflection-docblock", + "version": "v2.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "url": "https://github.com/barryvdh/ReflectionDocBlock.git", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/e6811e927f0ecc37cc4deaa6627033150343e597", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=5.3.3" }, - "provide": { - "ext-mbstring": "*" + "require-dev": { + "phpunit/phpunit": "^8.5.14|^9" }, "suggest": { - "ext-mbstring": "For best performance" + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.0.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "psr-0": { + "Barryvdh": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -3574,75 +6237,67 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" } ], - "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.28.0" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.1" }, - "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": "2023-07-28T09:04:16+00:00" + "time": "2023-06-14T05:06:27+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "name": "brianium/paratest", + "version": "v7.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "url": "https://github.com/paratestphp/paratest.git", + "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", + "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.1.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.11 || ^11.0.0", + "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", + "phpunit/php-timer": "^6.0.0 || ^7.0.0", + "phpunit/phpunit": "^10.5.9 || ^11.0.3", + "sebastian/environment": "^6.0.1 || ^7.0.0", + "symfony/console": "^6.4.3 || ^7.0.3", + "symfony/process": "^6.4.3 || ^7.0.3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^1.10.58", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "squizlabs/php_codesniffer": "^3.9.0", + "symfony/filesystem": "^6.4.3 || ^7.0.3" }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "ParaTest\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -3651,78 +6306,67 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "concurrent", + "parallel", + "phpunit", + "testing" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.4.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sponsors/Slamdunk", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-02-20T07:24:02+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=5.3", + "react/stream": "^1.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Clue\\React\\NDJson\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3730,79 +6374,81 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Christian Lรผck", + "email": "christian@clue.engineering" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://clue.engineering/support", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/clue", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-12-23T10:58:28+00:00" }, { - "name": "symfony/polyfill-php83", - "version": "v1.27.0", + "name": "colinodell/json5", + "version": "v2.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + "url": "https://github.com/colinodell/json5.git", + "reference": "15b063f8cb5e6deb15f0cd39123264ec0d19c710" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "url": "https://api.github.com/repos/colinodell/json5/zipball/15b063f8cb5e6deb15f0cd39123264ec0d19c710", + "reference": "15b063f8cb5e6deb15f0cd39123264ec0d19c710", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.1.3|^8.0" + }, + "conflict": { + "scrutinizer/ocular": "1.7.*" }, + "require-dev": { + "mikehaertl/php-shellcommand": "^1.2.5", + "phpstan/phpstan": "^1.4", + "scrutinizer/ocular": "^1.6", + "squizlabs/php_codesniffer": "^2.3 || ^3.0", + "symfony/finder": "^4.4|^5.4|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.0" + }, + "bin": [ + "bin/json5" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-main": "3.0-dev" } }, "autoload": { "files": [ - "bootstrap.php" + "src/global.php" ], "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" + "ColinODell\\Json5\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3811,80 +6457,80 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Developer" } ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "UTF-8 compatible JSON5 parser for PHP", + "homepage": "https://github.com/colinodell/json5", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "JSON5", + "json", + "json5_decode", + "json_decode" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + "issues": "https://github.com/colinodell/json5/issues", + "source": "https://github.com/colinodell/json5/tree/v2.3.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.colinodell.com/sponsor", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://www.patreon.com/colinodell", + "type": "patreon" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2022-12-27T16:44:40+00:00" }, { - "name": "symfony/polyfill-uuid", - "version": "v1.27.0", + "name": "composer/class-map-generator", + "version": "1.3.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" + "url": "https://github.com/composer/class-map-generator.git", + "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", + "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-uuid": "*" + "composer/pcre": "^2.1 || ^3.1", + "php": "^7.2 || ^8.0", + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, - "suggest": { - "ext-uuid": "For best performance" + "require-dev": { + "phpstan/phpstan": "^1.6", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/filesystem": "^5.4 || ^6", + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-main": "1.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" + "Composer\\ClassMapGenerator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3893,66 +6539,72 @@ ], "authors": [ { - "name": "Grรฉgoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", + ], + "description": "Utilities to scan PHP code and generate class maps.", "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" + "classmap" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" + "issues": "https://github.com/composer/class-map-generator/issues", + "source": "https://github.com/composer/class-map-generator/tree/1.3.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-06-12T14:13:04+00:00" }, { - "name": "symfony/process", - "version": "v6.3.4", + "name": "composer/package-versions-deprecated", + "version": "1.11.99.5", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", "shasum": "" }, "require": { - "php": ">=8.1" + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "PackageVersions\\": "src/PackageVersions" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3960,65 +6612,67 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.4" + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2023-08-07T10:39:22+00:00" + "time": "2022-01-17T14:14:24+00:00" }, { - "name": "symfony/property-access", - "version": "v6.3.2", + "name": "composer/pcre", + "version": "3.1.4", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "2dc4f9da444b8f8ff592e95d570caad67924f1d0" + "url": "https://github.com/composer/pcre.git", + "reference": "04229f163664973f68f38f6f73d917799168ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/2dc4f9da444b8f8ff592e95d570caad67924f1d0", - "reference": "2dc4f9da444b8f8ff592e95d570caad67924f1d0", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/property-info": "^5.4|^6.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "symfony/cache": "^5.4|^6.0" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\Pcre\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4026,85 +6680,69 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", - "homepage": "https://symfony.com", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property-path", - "reflection" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.3.2" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2023-07-13T15:26:11+00:00" + "time": "2024-05-27T13:40:54+00:00" }, { - "name": "symfony/property-info", - "version": "v6.3.0", + "name": "composer/semver", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd" + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/7f3a03716112269741fe2a809f8f791a371d1fcd", - "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<5.2", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/dependency-injection": "<5.4" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^5.2", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4112,83 +6750,78 @@ ], "authors": [ { - "name": "Kรฉvin Dunglas", - "email": "dunglas@gmail.com" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", - "homepage": "https://symfony.com", + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.3.0" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { - "name": "symfony/routing", - "version": "v6.3.1", + "name": "composer/xdebug-handler", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "php": ">=8.1" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", - "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\XdebugHandler\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4196,259 +6829,159 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", + "description": "Restarts a process without Xdebug.", "keywords": [ - "router", - "routing", - "uri", - "url" + "Xdebug", + "performance" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.1" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2023-06-05T15:30:22+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { - "name": "symfony/serializer", - "version": "v6.3.4", + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "96d28a58d5a128bf77c54534b380eb7c92c8f846" + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/96d28a58d5a128bf77c54534b380eb7c92c8f846", - "reference": "96d28a58d5a128bf77c54534b380eb7c92c8f846", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<5.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4.24|>=6,<6.2.11", - "symfony/uid": "<5.4", - "symfony/yaml": "<5.4" + "php": ">=5.3.2" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/form": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4.24|^6.2.11", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0", - "symfony/var-exporter": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Serializer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "XdgBaseDir\\": "src/" + } }, "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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/serializer/tree/v6.3.4" - }, - "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": "2023-08-24T14:35:28+00:00" + "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, + "time": "2019-12-04T15:06:13+00:00" }, { - "name": "symfony/service-contracts", - "version": "v3.3.0", + "name": "doctrine/deprecations", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^2.0" + "php": "^7.1 || ^8.0" }, - "conflict": { - "ext-psr": "<1.1|>=2" + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } }, "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" - ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.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": "2023-05-23T14:45:45+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { - "name": "symfony/string", - "version": "v6.3.2", + "name": "ergebnis/phpunit-slow-test-detector", + "version": "2.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" + "url": "https://github.com/ergebnis/phpunit-slow-test-detector.git", + "reference": "9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", + "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2", + "reference": "9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" + "php": "~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/phpunit": "^6.5.0 || ^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "ergebnis/composer-normalize": "^2.42.0", + "ergebnis/license": "^2.4.0", + "ergebnis/php-cs-fixer-config": "^6.25.1", + "fakerphp/faker": "~1.20.0", + "psalm/plugin-phpunit": "~0.19.0", + "psr/container": "~1.0.0", + "rector/rector": "^1.0.4", + "vimeo/psalm": "^5.23.1" }, "type": "library", + "extra": { + "composer-normalize": { + "indent-size": 2, + "indent-style": "space" + } + }, "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Ergebnis\\PHPUnit\\SlowTestDetector\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4456,101 +6989,52 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Andreas Mรถller", + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" } ], - "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", + "description": "Provides facilities for detecting slow tests in phpunit/phpunit.", + "homepage": "https://github.com/ergebnis/phpunit-slow-test-detector", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" + "detector", + "extension", + "phpunit", + "slow", + "test" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" + "issues": "https://github.com/ergebnis/phpunit-slow-test-detector/issues", + "security": "https://github.com/ergebnis/phpunit-slow-test-detector/blob/main/.github/SECURITY.md", + "source": "https://github.com/ergebnis/phpunit-slow-test-detector" }, - "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": "2023-07-05T08:41:27+00:00" + "time": "2024-04-08T06:35:34+00:00" }, { - "name": "symfony/translation", - "version": "v6.3.0", + "name": "evenement/evenement", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f" + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f72b2cba8f79dd9d536f534f76874b58ad37876f", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" + "php": ">=7.0" }, "require-dev": { - "nikic/php-parser": "^4.13", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "phpunit/phpunit": "^9 || ^6" }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Evenement\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4558,69 +7042,62 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" } ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", + "description": "ร‰vรฉnement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.0" + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" }, - "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": "2023-05-19T12:46:45+00:00" + "time": "2023-08-08T05:53:35+00:00" }, { - "name": "symfony/translation-contracts", - "version": "v3.3.0", + "name": "fakerphp/faker", + "version": "v1.23.1", "source": { "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + "Faker\\": "src/Faker/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4628,365 +7105,319 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Franรงois Zaninotto" } ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", + "description": "Faker is a PHP library that generates fake data for you.", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.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" - } + "data", + "faker", + "fixtures" ], - "time": "2023-05-30T17:17:10+00:00" + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" }, { - "name": "symfony/uid", - "version": "v6.3.0", + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-uuid": "^1.15" + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "phpunit/phpunit": "^7.0 || ^8.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Uid\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "AdvancedJsonRpc\\": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "ISC" ], "authors": [ { - "name": "Grรฉgoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Felix Becker", + "email": "felix.b@outlook.com" } ], - "description": "Provides an object-oriented API to generate and represent UIDs", - "homepage": "https://symfony.com", - "keywords": [ - "UID", - "ulid", - "uuid" - ], + "description": "A more advanced JSONRPC implementation", "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.0" + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" }, - "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": "2023-04-08T07:25:02+00:00" + "time": "2021-06-11T22:34:44+00:00" }, { - "name": "symfony/var-dumper", - "version": "v6.3.4", + "name": "felixfbecker/language-server-protocol", + "version": "v1.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/console": "<5.4" + "php": ">=7.1" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" + "phpstan/phpstan": "*", + "squizlabs/php_codesniffer": "^3.1", + "vimeo/psalm": "^4.0" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "LanguageServerProtocol\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "ISC" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Felix Becker", + "email": "felix.b@outlook.com" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", + "description": "PHP classes for the Language Server Protocol", "keywords": [ - "debug", - "dump" + "language", + "microsoft", + "php", + "server" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" + "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" }, - "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": "2023-08-24T14:51:05+00:00" + "time": "2022-03-02T22:36:06+00:00" }, { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "name": "fidry/cpu-core-counter", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, "autoload": { "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" + "Fidry\\CpuCoreCounter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" + "name": "Thรฉo FIDRY", + "email": "theo.fidry@gmail.com" } ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" }, - "time": "2023-01-03T09:29:04+00:00" + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "name": "filp/whoops", + "version": "2.15.4", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "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": { - "ext-filter": "Required to use the boolean validator." + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" }, "type": "library", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "2.7-dev" } }, "autoload": { "psr-4": { - "Dotenv\\": "src/" + "Whoops\\": "src/Whoops/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://github.com/vlucas" + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" } ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", "keywords": [ - "dotenv", - "env", - "environment" + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" ], "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", + "url": "https://github.com/denis-sokolov", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" } ], - "time": "2022-10-16T01:01:54+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { - "name": "voku/portable-ascii", - "version": "2.0.1", + "name": "friendsofphp/php-cs-fixer", + "version": "v3.58.1", "source": { "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "b56450eed252f6801410d810c8e1727224ae0743" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", - "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/04e9424025677a86914b9a4944dbbf4060bb0aff", + "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff", "shasum": "" }, "require": { - "php": ">=7.0.0" + "clue/ndjson-react": "^1.0", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + "facile-it/paraunit": "^1.3 || ^2.0", + "infection/infection": "^0.27.11", + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." }, - "type": "library", + "bin": [ + "php-cs-fixer" + ], + "type": "application", "autoload": { "psr-4": { - "voku\\": "src/voku/" + "PhpCsFixer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4995,380 +7426,427 @@ ], "authors": [ { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiล„ski", + "email": "dariusz.ruminski@gmail.com" } ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", + "description": "A tool to automatically fix PHP code style", "keywords": [ - "ascii", - "clean", - "php" + "Static code analysis", + "fixer", + "standards", + "static analysis" ], "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.58.1" }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, + "funding": [ { - "url": "https://github.com/voku", + "url": "https://github.com/keradus", "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" } ], - "time": "2022-03-08T17:03:00+00:00" + "time": "2024-05-29T16:39:07+00:00" }, { - "name": "webmozart/assert", - "version": "1.11.0", + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "shasum": "" }, "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" + "php": "^5.3|^7.0|^8.0" }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/phpunit": "^8.5.13" + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10-dev" + "dev-master": "2.1-dev" } }, "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } + "classmap": [ + "hamcrest" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } + "BSD-3-Clause" ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ - "assert", - "check", - "validate" + "test" ], "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" }, - "time": "2022-06-03T18:03:27+00:00" - } - ], - "packages-dev": [ + "time": "2020-07-09T08:09:16+00:00" + }, { - "name": "brianium/paratest", - "version": "v7.2.3", + "name": "infection/abstract-testframework-adapter", + "version": "0.5.0", "source": { "type": "git", - "url": "https://github.com/paratestphp/paratest.git", - "reference": "ec6713d48856b7e8af64b2f94b084fb861bcc71b" + "url": "https://github.com/infection/abstract-testframework-adapter.git", + "reference": "18925e20d15d1a5995bb85c9dc09e8751e1e069b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/ec6713d48856b7e8af64b2f94b084fb861bcc71b", - "reference": "ec6713d48856b7e8af64b2f94b084fb861bcc71b", + "url": "https://api.github.com/repos/infection/abstract-testframework-adapter/zipball/18925e20d15d1a5995bb85c9dc09e8751e1e069b", + "reference": "18925e20d15d1a5995bb85c9dc09e8751e1e069b", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", - "jean85/pretty-package-versions": "^2.0.5", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "phpunit/php-code-coverage": "^10.1.2", - "phpunit/php-file-iterator": "^4.0.2", - "phpunit/php-timer": "^6.0", - "phpunit/phpunit": "^10.2.6", - "sebastian/environment": "^6.0.1", - "symfony/console": "^6.3.0", - "symfony/process": "^6.3.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^12.0.0", - "ext-pcov": "*", - "ext-posix": "*", - "infection/infection": "^0.27.0", - "phpstan/phpstan": "^1.10.26", - "phpstan/phpstan-deprecation-rules": "^1.1.3", - "phpstan/phpstan-phpunit": "^1.3.13", - "phpstan/phpstan-strict-rules": "^1.5.1", - "squizlabs/php_codesniffer": "^3.7.2", - "symfony/filesystem": "^6.3.1" + "ergebnis/composer-normalize": "^2.8", + "friendsofphp/php-cs-fixer": "^2.17", + "phpunit/phpunit": "^9.5" }, - "bin": [ - "bin/paratest", - "bin/paratest.bat", - "bin/paratest_for_phpstorm" - ], "type": "library", "autoload": { "psr-4": { - "ParaTest\\": [ - "src/" - ] + "Infection\\AbstractTestFramework\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Brian Scaturro", - "email": "scaturrob@gmail.com", - "role": "Developer" - }, - { - "name": "Filippo Tessarotto", - "email": "zoeslam@gmail.com", - "role": "Developer" + "name": "Maks Rafalko", + "email": "maks.rafalko@gmail.com" } ], - "description": "Parallel testing for PHP", - "homepage": "https://github.com/paratestphp/paratest", - "keywords": [ - "concurrent", - "parallel", - "phpunit", - "testing" - ], + "description": "Abstract Test Framework Adapter for Infection", "support": { - "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.2.3" + "issues": "https://github.com/infection/abstract-testframework-adapter/issues", + "source": "https://github.com/infection/abstract-testframework-adapter/tree/0.5.0" }, "funding": [ { - "url": "https://github.com/sponsors/Slamdunk", + "url": "https://github.com/infection", "type": "github" }, { - "url": "https://paypal.me/filippotessarotto", - "type": "paypal" + "url": "https://opencollective.com/infection", + "type": "open_collective" } ], - "time": "2023-07-20T10:18:35+00:00" + "time": "2021-08-17T18:49:12+00:00" }, { - "name": "composer/pcre", - "version": "3.1.0", + "name": "infection/extension-installer", + "version": "0.1.2", "source": { "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "url": "https://github.com/infection/extension-installer.git", + "reference": "9b351d2910b9a23ab4815542e93d541e0ca0cdcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/infection/extension-installer/zipball/9b351d2910b9a23ab4815542e93d541e0ca0cdcf", + "reference": "9b351d2910b9a23ab4815542e93d541e0ca0cdcf", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "composer-plugin-api": "^1.1 || ^2.0" }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "composer/composer": "^1.9 || ^2.0", + "friendsofphp/php-cs-fixer": "^2.18, <2.19", + "infection/infection": "^0.15.2", + "php-coveralls/php-coveralls": "^2.4", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.10", + "phpstan/phpstan-phpunit": "^0.12.6", + "phpstan/phpstan-strict-rules": "^0.12.2", + "phpstan/phpstan-webmozart-assert": "^0.12.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.8" }, - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } + "class": "Infection\\ExtensionInstaller\\Plugin" }, "autoload": { "psr-4": { - "Composer\\Pcre\\": "src" + "Infection\\ExtensionInstaller\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Maks Rafalko", + "email": "maks.rafalko@gmail.com" } ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], + "description": "Infection Extension Installer", "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "issues": "https://github.com/infection/extension-installer/issues", + "source": "https://github.com/infection/extension-installer/tree/0.1.2" }, "funding": [ { - "url": "https://packagist.com", - "type": "custom" + "url": "https://github.com/infection", + "type": "github" }, { - "url": "https://github.com/composer", + "url": "https://opencollective.com/infection", + "type": "open_collective" + } + ], + "time": "2021-10-20T22:08:34+00:00" + }, + { + "name": "infection/include-interceptor", + "version": "0.2.5", + "source": { + "type": "git", + "url": "https://github.com/infection/include-interceptor.git", + "reference": "0cc76d95a79d9832d74e74492b0a30139904bdf7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/infection/include-interceptor/zipball/0cc76d95a79d9832d74e74492b0a30139904bdf7", + "reference": "0cc76d95a79d9832d74e74492b0a30139904bdf7", + "shasum": "" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.16", + "infection/infection": "^0.15.0", + "phan/phan": "^2.4 || ^3", + "php-coveralls/php-coveralls": "^2.2", + "phpstan/phpstan": "^0.12.8", + "phpunit/phpunit": "^8.5", + "vimeo/psalm": "^3.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Infection\\StreamWrapper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Maks Rafalko", + "email": "maks.rafalko@gmail.com" + } + ], + "description": "Stream Wrapper: Include Interceptor. Allows to replace included (autoloaded) file with another one.", + "support": { + "issues": "https://github.com/infection/include-interceptor/issues", + "source": "https://github.com/infection/include-interceptor/tree/0.2.5" + }, + "funding": [ + { + "url": "https://github.com/infection", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "url": "https://opencollective.com/infection", + "type": "open_collective" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2021-08-09T10:03:57+00:00" }, { - "name": "composer/semver", - "version": "3.4.0", + "name": "infection/infection", + "version": "0.27.10", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "url": "https://github.com/infection/infection.git", + "reference": "873cd3335774a114bef9ca93388e623bf362d820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/infection/infection/zipball/873cd3335774a114bef9ca93388e623bf362d820", + "reference": "873cd3335774a114bef9ca93388e623bf362d820", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "colinodell/json5": "^2.2", + "composer-runtime-api": "^2.0", + "composer/xdebug-handler": "^2.0 || ^3.0", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "fidry/cpu-core-counter": "^0.4.0 || ^0.5.0 || ^1.0", + "infection/abstract-testframework-adapter": "^0.5.0", + "infection/extension-installer": "^0.1.0", + "infection/include-interceptor": "^0.2.5", + "justinrainbow/json-schema": "^5.2.10", + "nikic/php-parser": "^4.15.1", + "ondram/ci-detector": "^4.1.0", + "php": "^8.1", + "sanmai/later": "^0.1.1", + "sanmai/pipeline": "^5.1 || ^6", + "sebastian/diff": "^3.0.2 || ^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "thecodingmachine/safe": "^2.1.2", + "webmozart/assert": "^1.11" + }, + "conflict": { + "antecedent/patchwork": "<2.1.25", + "dg/bypass-finals": "<1.4.1", + "phpunit/php-code-coverage": ">9,<9.1.4 || >9.2.17,<9.2.21" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "brianium/paratest": "^6.11", + "ext-simplexml": "*", + "fidry/makefile": "^0.2.0", + "helmich/phpunit-json-assert": "^3.0", + "phpspec/prophecy": "^1.15", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan": "^1.10.15", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0", + "phpstan/phpstan-webmozart-assert": "^1.0.2", + "phpunit/phpunit": "^9.6", + "rector/rector": "^0.16.0", + "sidz/phpstan-rules": "^0.4.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "thecodingmachine/phpstan-safe-rule": "^1.2.0" }, + "bin": [ + "bin/infection" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Composer\\Semver\\": "src" + "Infection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" + "name": "Maks Rafalko", + "email": "maks.rafalko@gmail.com", + "homepage": "https://twitter.com/maks_rafalko" }, { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Oleg Zhulnev", + "homepage": "https://github.com/sidz" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Gert de Pagter", + "homepage": "https://github.com/BackEndTea" + }, + { + "name": "Thรฉo FIDRY", + "email": "theo.fidry@gmail.com", + "homepage": "https://twitter.com/tfidry" + }, + { + "name": "Alexey Kopytko", + "email": "alexey@kopytko.com", + "homepage": "https://www.alexeykopytko.com" + }, + { + "name": "Andreas Mรถller", + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Infection is a Mutation Testing framework for PHP. The mutation adequacy score can be used to measure the effectiveness of a test set in terms of its ability to detect faults.", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "coverage", + "mutant", + "mutation framework", + "mutation testing", + "testing", + "unit testing" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "issues": "https://github.com/infection/infection/issues", + "source": "https://github.com/infection/infection/tree/0.27.10" }, "funding": [ { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", + "url": "https://github.com/infection", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "url": "https://opencollective.com/infection", + "type": "open_collective" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2024-02-20T00:08:52+00:00" }, { - "name": "composer/xdebug-handler", - "version": "3.0.3", + "name": "jean85/pretty-package-versions", + "version": "2.0.6", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", "shasum": "" }, "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Composer\\XdebugHandler\\": "src" + "Jean85\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5377,132 +7855,144 @@ ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" } ], - "description": "Restarts a process without Xdebug.", + "description": "A library to get pretty versions strings of installed dependencies", "keywords": [ - "Xdebug", - "performance" + "composer", + "package", + "release", + "versions" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" + "time": "2024-03-08T09:58:59+00:00" }, { - "name": "doctrine/deprecations", - "version": "v1.1.1", + "name": "justinrainbow/json-schema", + "version": "v5.2.13", "source": { "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "url": "https://github.com/jsonrainbow/json-schema.git", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=5.3.3" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + "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": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "JsonSchema\\": "src/JsonSchema/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", + "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/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "issues": "https://github.com/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/v5.2.13" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2023-09-26T02:20:38+00:00" }, { - "name": "ergebnis/composer-normalize", - "version": "2.36.0", + "name": "larastan/larastan", + "version": "v2.9.7", "source": { "type": "git", - "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "a8ac2c507de9166652cd76f4c336e9c7c0dd1456" + "url": "https://github.com/larastan/larastan.git", + "reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/a8ac2c507de9166652cd76f4c336e9c7c0dd1456", - "reference": "a8ac2c507de9166652cd76f4c336e9c7c0dd1456", + "url": "https://api.github.com/repos/larastan/larastan/zipball/5c805f636095cc2e0b659e3954775cf8f1dad1bb", + "reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb", "shasum": "" }, "require": { - "composer-plugin-api": "^2.0.0", - "ergebnis/json": "^1.0.1", - "ergebnis/json-normalizer": "^4.2.0", - "ergebnis/json-printer": "^3.3.0", "ext-json": "*", - "justinrainbow/json-schema": "^5.2.12", - "localheinz/diff": "^1.1.1", - "php": "~8.1.0 || ~8.2.0" - }, - "require-dev": { - "composer/composer": "^2.6.2", - "ergebnis/license": "^2.1.0", - "ergebnis/php-cs-fixer-config": "^5.14.1", - "ergebnis/phpunit-slow-test-detector": "^2.3.0", - "fakerphp/faker": "^1.23.0", - "infection/infection": "~0.27.0", - "phpunit/phpunit": "^10.3.2", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.18.1", - "symfony/filesystem": "^6.0.13", - "vimeo/psalm": "^5.15.0" + "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", + "php": "^8.0.2", + "phpmyadmin/sql-parser": "^5.9.0", + "phpstan/phpstan": "^1.11.1" }, - "type": "composer-plugin", + "require-dev": { + "doctrine/coding-standard": "^12.0", + "nikic/php-parser": "^4.19.1", + "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2", + "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.3", + "phpunit/phpunit": "^9.6.13 || ^10.5.16" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", "extra": { - "class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin", - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" + "branch-alias": { + "dev-master": "2.0-dev" }, - "plugin-optional": true + "phpstan": { + "includes": [ + "extension.neon" + ] + } }, "autoload": { "psr-4": { - "Ergebnis\\Composer\\Normalize\\": "src/" + "Larastan\\Larastan\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5511,64 +8001,90 @@ ], "authors": [ { - "name": "Andreas Mรถller", - "email": "am@localheinz.com" + "name": "Can Vural", + "email": "can9119@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "Provides a composer plugin for normalizing composer.json.", - "homepage": "https://github.com/ergebnis/composer-normalize", + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", "keywords": [ - "composer", - "normalize", - "normalizer", - "plugin" + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" ], "support": { - "issues": "https://github.com/ergebnis/composer-normalize/issues", - "security": "https://github.com/ergebnis/composer-normalize/blob/main/.github/SECURITY.md", - "source": "https://github.com/ergebnis/composer-normalize" + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v2.9.7" }, - "time": "2023-09-04T10:00:36+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/canvural", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-05-27T18:33:26+00:00" }, { - "name": "ergebnis/json", - "version": "1.0.1", + "name": "laravel/tinker", + "version": "v2.9.0", "source": { "type": "git", - "url": "https://github.com/ergebnis/json.git", - "reference": "d66ea30060856d0729a4aa319a02752519ca63a0" + "url": "https://github.com/laravel/tinker.git", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json/zipball/d66ea30060856d0729a4aa319a02752519ca63a0", - "reference": "d66ea30060856d0729a4aa319a02752519ca63a0", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", "shasum": "" }, "require": { - "php": "^8.0" + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" }, "require-dev": { - "ergebnis/composer-normalize": "^2.29.0", - "ergebnis/data-provider": "^1.2.0", - "ergebnis/license": "^2.1.0", - "ergebnis/php-cs-fixer-config": "^5.0.0", - "ergebnis/phpstan-rules": "^1.0.0", - "fakerphp/faker": "^1.20.0", - "infection/infection": "~0.26.16", - "phpunit/phpunit": "^9.5.27", - "psalm/plugin-phpunit": "~0.18.4", - "vimeo/psalm": "^5.1.0" + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." }, "type": "library", "extra": { - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] } }, "autoload": { "psr-4": { - "Ergebnis\\Json\\": "src/" + "Laravel\\Tinker\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5577,322 +8093,325 @@ ], "authors": [ { - "name": "Andreas Mรถller", - "email": "am@localheinz.com" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "Provides a Json value object for representing a valid JSON string.", - "homepage": "https://github.com/ergebnis/json", + "description": "Powerful REPL for the Laravel framework.", "keywords": [ - "json" + "REPL", + "Tinker", + "laravel", + "psysh" ], "support": { - "issues": "https://github.com/ergebnis/json/issues", - "source": "https://github.com/ergebnis/json" + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.9.0" }, - "time": "2022-12-10T22:38:50+00:00" + "time": "2024-01-04T16:10:04+00:00" }, { - "name": "ergebnis/json-normalizer", - "version": "4.2.0", + "name": "mockery/mockery", + "version": "1.6.12", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "7d06355857dc5fad96e8b296996f26150dfab299" + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/7d06355857dc5fad96e8b296996f26150dfab299", - "reference": "7d06355857dc5fad96e8b296996f26150dfab299", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "shasum": "" }, "require": { - "ergebnis/json": "^1.0.1", - "ergebnis/json-pointer": "^3.2.0", - "ergebnis/json-printer": "^3.3.0", - "ergebnis/json-schema-validator": "^4.0.0", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2.12", - "php": "~8.1.0 || ~8.2.0" - }, - "require-dev": { - "composer/semver": "^3.2.1", - "ergebnis/data-provider": "^2.0.0", - "ergebnis/license": "^2.1.0", - "ergebnis/php-cs-fixer-config": "^5.11.0", - "ergebnis/phpunit-slow-test-detector": "^2.3.0", - "fakerphp/faker": "^1.23.0", - "infection/infection": "~0.27.0", - "phpunit/phpunit": "^10.2.3", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.17.2", - "symfony/filesystem": "^6.3.1", - "symfony/finder": "^6.3.0", - "vimeo/psalm": "^5.13.1" + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" }, - "suggest": { - "composer/semver": "If you want to use ComposerJsonNormalizer or VersionConstraintNormalizer" + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], "psr-4": { - "Ergebnis\\Json\\Normalizer\\": "src/" + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Andreas Mรถller", - "email": "am@localheinz.com" + "name": "Pรกdraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], - "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.", - "homepage": "https://github.com/ergebnis/json-normalizer", + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", "keywords": [ - "json", - "normalizer" + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" ], "support": { - "issues": "https://github.com/ergebnis/json-normalizer/issues", - "source": "https://github.com/ergebnis/json-normalizer" + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2023-07-09T16:22:57+00:00" + "time": "2024-05-16T03:13:13+00:00" }, { - "name": "ergebnis/json-pointer", - "version": "3.2.0", + "name": "myclabs/deep-copy", + "version": "1.12.0", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-pointer.git", - "reference": "861516ff5afa1aa8905fdf3361315909523a1bf8" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/861516ff5afa1aa8905fdf3361315909523a1bf8", - "reference": "861516ff5afa1aa8905fdf3361315909523a1bf8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { - "ergebnis/composer-normalize": "^2.28.3", - "ergebnis/data-provider": "^1.2.0", - "ergebnis/license": "^2.1.0", - "ergebnis/php-cs-fixer-config": "^5.0.0", - "fakerphp/faker": "^1.20.0", - "infection/infection": "~0.26.16", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "~0.18.3", - "vimeo/psalm": "^4.30" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" - } - }, "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], "psr-4": { - "Ergebnis\\Json\\Pointer\\": "src/" + "DeepCopy\\": "src/DeepCopy/" } }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Mรถller", - "email": "am@localheinz.com" - } + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], - "description": "Provides JSON pointer as a value object.", - "homepage": "https://github.com/ergebnis/json-pointer", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "RFC6901", - "json", - "pointer" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], "support": { - "issues": "https://github.com/ergebnis/json-pointer/issues", - "source": "https://github.com/ergebnis/json-pointer" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, - "time": "2022-11-28T17:03:31+00:00" + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2024-06-12T14:39:25+00:00" }, { - "name": "ergebnis/json-printer", - "version": "3.3.0", + "name": "netresearch/jsonmapper", + "version": "v4.4.1", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-printer.git", - "reference": "18920367473b099633f644f0ca6dc8794345148f" + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/18920367473b099633f644f0ca6dc8794345148f", - "reference": "18920367473b099633f644f0ca6dc8794345148f", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", "shasum": "" }, "require": { "ext-json": "*", - "ext-mbstring": "*", - "php": "^8.0" + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" }, "require-dev": { - "ergebnis/license": "^2.0.0", - "ergebnis/php-cs-fixer-config": "^4.11.0", - "fakerphp/faker": "^1.20.0", - "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "~0.18.3", - "vimeo/psalm": "^4.30.0" + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", + "squizlabs/php_codesniffer": "~3.5" }, "type": "library", "autoload": { - "psr-4": { - "Ergebnis\\Json\\Printer\\": "src/" + "psr-0": { + "JsonMapper": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "OSL-3.0" ], "authors": [ { - "name": "Andreas Mรถller", - "email": "am@localheinz.com" + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" } ], - "description": "Provides a JSON printer, allowing for flexible indentation.", - "homepage": "https://github.com/ergebnis/json-printer", - "keywords": [ - "formatter", - "json", - "printer" - ], + "description": "Map nested JSON structures onto PHP classes", "support": { - "issues": "https://github.com/ergebnis/json-printer/issues", - "source": "https://github.com/ergebnis/json-printer" + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" }, - "time": "2022-11-28T10:27:43+00:00" + "time": "2024-01-31T06:18:54+00:00" }, { - "name": "ergebnis/json-schema-validator", - "version": "4.0.0", + "name": "nikic/php-parser", + "version": "v4.19.1", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-schema-validator.git", - "reference": "a6166272ac5691a9bc791f185841e5f92a6d4723" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/a6166272ac5691a9bc791f185841e5f92a6d4723", - "reference": "a6166272ac5691a9bc791f185841e5f92a6d4723", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", "shasum": "" }, "require": { - "ergebnis/json": "^1.0.0", - "ergebnis/json-pointer": "^3.2.0", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2.12", - "php": "^8.0" + "ext-tokenizer": "*", + "php": ">=7.1" }, "require-dev": { - "ergebnis/composer-normalize": "^2.21.0", - "ergebnis/data-provider": "^1.2.0", - "ergebnis/license": "^2.1.0", - "ergebnis/php-cs-fixer-config": "~5.0.0", - "fakerphp/faker": "^1.20.0", - "infection/infection": "~0.26.16", - "phpunit/phpunit": "~9.5.27", - "psalm/plugin-phpunit": "~0.18.4", - "vimeo/psalm": "^5.1.0" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" + "branch-alias": { + "dev-master": "4.9-dev" } }, "autoload": { "psr-4": { - "Ergebnis\\Json\\SchemaValidator\\": "src/" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Andreas Mรถller", - "email": "am@localheinz.com" + "name": "Nikita Popov" } ], - "description": "Provides a JSON schema validator, building on top of justinrainbow/json-schema.", - "homepage": "https://github.com/ergebnis/json-schema-validator", + "description": "A PHP parser written in PHP", "keywords": [ - "json", - "schema", - "validator" + "parser", + "php" ], "support": { - "issues": "https://github.com/ergebnis/json-schema-validator/issues", - "source": "https://github.com/ergebnis/json-schema-validator" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" }, - "time": "2022-12-10T14:50:15+00:00" + "time": "2024-03-17T08:10:35+00:00" }, { - "name": "fakerphp/faker", - "version": "v1.23.0", + "name": "nunomaduro/collision", + "version": "v8.1.1", "source": { "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "url": "https://github.com/nunomaduro/collision.git", + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/13e5d538b95a744d85f447a321ce10adb28e9af9", + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" + "filp/whoops": "^2.15.4", + "nunomaduro/termwind": "^2.0.1", + "php": "^8.2.0", + "symfony/console": "^7.0.4" }, "conflict": { - "fzaninotto/faker": "*" + "laravel/framework": "<11.0.0 || >=12.0.0", + "phpunit/phpunit": "<10.5.1 || >=12.0.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." + "larastan/larastan": "^2.9.2", + "laravel/framework": "^11.0.0", + "laravel/pint": "^1.14.0", + "laravel/sail": "^1.28.2", + "laravel/sanctum": "^4.0.0", + "laravel/tinker": "^2.9.0", + "orchestra/testbench-core": "^9.0.0", + "pestphp/pest": "^2.34.1 || ^3.0.0", + "sebastian/environment": "^6.0.1 || ^7.0.0" }, "type": "library", "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, "branch-alias": { - "dev-main": "v1.21-dev" + "dev-8.x": "8.x-dev" } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { - "Faker\\": "src/Faker/" + "NunoMaduro\\Collision\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5901,53 +8420,73 @@ ], "authors": [ { - "name": "Franรงois Zaninotto" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "Cli error handling for console/command-line PHP applications.", "keywords": [ - "data", - "faker", - "fixtures" + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" ], "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" }, - "time": "2023-06-12T08:44:38+00:00" + "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": "2024-03-06T16:20:09+00:00" }, { - "name": "fidry/cpu-core-counter", - "version": "0.5.1", + "name": "ondram/ci-detector", + "version": "4.2.0", "source": { "type": "git", - "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" + "url": "https://github.com/OndraM/ci-detector.git", + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "fidry/makefile": "^0.2.0", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^9.5.26 || ^8.5.31", - "theofidry/php-cs-fixer-config": "^1.0", - "webmozarts/strict-phpunit": "^7.5" + "ergebnis/composer-normalize": "^2.13.2", + "lmc/coding-standard": "^3.0.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpunit/phpunit": "^9.6.13" }, "type": "library", "autoload": { "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" + "OndraM\\CiDetector\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5956,63 +8495,98 @@ ], "authors": [ { - "name": "Thรฉo FIDRY", - "email": "theo.fidry@gmail.com" + "name": "Ondล™ej Machulda", + "email": "ondrej.machulda@gmail.com" } ], - "description": "Tiny utility to get the number of CPU cores.", + "description": "Detect continuous integration environment and provide unified access to properties of current build", "keywords": [ - "CPU", - "core" + "CircleCI", + "Codeship", + "Wercker", + "adapter", + "appveyor", + "aws", + "aws codebuild", + "azure", + "azure devops", + "azure pipelines", + "bamboo", + "bitbucket", + "buddy", + "ci-info", + "codebuild", + "continuous integration", + "continuousphp", + "devops", + "drone", + "github", + "gitlab", + "interface", + "jenkins", + "pipelines", + "sourcehut", + "teamcity", + "travis" ], "support": { - "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" + "issues": "https://github.com/OndraM/ci-detector/issues", + "source": "https://github.com/OndraM/ci-detector/tree/4.2.0" }, - "funding": [ - { - "url": "https://github.com/theofidry", - "type": "github" - } - ], - "time": "2022-12-24T12:35:10+00:00" + "time": "2024-03-12T13:22:30+00:00" }, { - "name": "filp/whoops", - "version": "2.15.3", + "name": "orchestra/canvas", + "version": "v9.0.2", "source": { "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + "url": "https://github.com/orchestral/canvas.git", + "reference": "1bb5fea96fbba7a63c1f6f80651ac670ceb1fb5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/1bb5fea96fbba7a63c1f6f80651ac670ceb1fb5e", + "reference": "1bb5fea96fbba7a63c1f6f80651ac670ceb1fb5e", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^11.1.1", + "illuminate/database": "^11.1.1", + "illuminate/filesystem": "^11.1.1", + "illuminate/support": "^11.1.1", + "orchestra/canvas-core": "^9.0", + "orchestra/testbench-core": "^9.0", + "php": "^8.2", + "symfony/polyfill-php83": "^1.28", + "symfony/yaml": "^7.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" + "laravel/framework": "^11.1.1", + "laravel/pint": "^1.6", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.10.6", + "phpunit/phpunit": "^11.0", + "spatie/laravel-ray": "^1.35" }, + "bin": [ + "canvas" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Orchestra\\Canvas\\LaravelServiceProvider" + ] } }, "autoload": { "psr-4": { - "Whoops\\": "src/Whoops/" + "Orchestra\\Canvas\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6021,93 +8595,66 @@ ], "authors": [ { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" } ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], + "description": "Code Generators for Laravel Applications and Packages", "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.3" + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas/tree/v9.0.2" }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2023-07-13T12:00:00+00:00" + "time": "2024-03-28T17:06:53+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.26.1", + "name": "orchestra/canvas-core", + "version": "v9.0.0", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983" + "url": "https://github.com/orchestral/canvas-core.git", + "reference": "3a29eecf324fe02e3e5628e422314b5cd1a80e48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d023ba6684055f6ea1da1352d8a02baca0426983", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983", + "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/3a29eecf324fe02e3e5628e422314b5cd1a80e48", + "reference": "3a29eecf324fe02e3e5628e422314b5cd1a80e48", "shasum": "" }, "require": { - "composer/semver": "^3.3", - "composer/xdebug-handler": "^3.0.3", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^11.0", + "illuminate/filesystem": "^11.0", + "php": "^8.2", + "symfony/polyfill-php83": "^1.28" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "laravel/framework": "^11.0", + "laravel/pint": "^1.6", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^9.0", + "phpstan/phpstan": "^1.10.6", + "phpunit/phpunit": "^10.1", + "symfony/yaml": "^7.0" }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Orchestra\\Canvas\\Core\\LaravelServiceProvider" + ] + } }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", "autoload": { "psr-4": { - "PhpCsFixer\\": "src/" + "Orchestra\\Canvas\\Core\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6116,234 +8663,206 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" }, { - "name": "Dariusz Rumiล„ski", - "email": "dariusz.ruminski@gmail.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "keywords": [ - "Static code analysis", - "fixer", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.26.1" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" } ], - "time": "2023-09-08T19:09:07+00:00" + "description": "Code Generators Builder for Laravel Applications and Packages", + "support": { + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas-core/tree/v9.0.0" + }, + "time": "2024-03-06T10:00:21+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "2.6.0", + "name": "orchestra/testbench", + "version": "v9.1.2", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" + "url": "https://github.com/orchestral/testbench.git", + "reference": "e3aa89ddfc76c22c65bf653f220bb906c26726a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/8bd7c33a0734ae1c5d074360512beb716bef3f77", - "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/e3aa89ddfc76c22c65bf653f220bb906c26726a1", + "reference": "e3aa89ddfc76c22c65bf653f220bb906c26726a1", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.23", + "laravel/framework": "^11.7", + "mockery/mockery": "^1.6", + "orchestra/testbench-core": "^9.1.3", + "orchestra/workbench": "^9.1", + "php": "^8.2", + "phpunit/phpunit": "^10.5 || ^11.0.1", + "symfony/process": "^7.0", + "symfony/yaml": "^7.0", + "vlucas/phpdotenv": "^5.4.1" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Mรกrk Sรกgi-Kazรกr", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Mรกrk Sรกgi-Kazรกr", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "Laravel Testing Helper for Packages Development", + "homepage": "https://packages.tools/testbench/", "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.0" + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench/tree/v9.1.2" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2023-08-03T15:06:02+00:00" + "time": "2024-06-04T12:30:43+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "name": "orchestra/testbench-core", + "version": "v9.1.6", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "url": "https://github.com/orchestral/testbench-core.git", + "reference": "66116144568050cc55a08fc93458b22b60e75740" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/66116144568050cc55a08fc93458b22b60e75740", + "reference": "66116144568050cc55a08fc93458b22b60e75740", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" + "composer-runtime-api": "^2.2", + "php": "^8.2", + "symfony/polyfill-php83": "^1.28" }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "conflict": { + "brianium/paratest": "<7.3.0 || >=8.0.0", + "laravel/framework": "<11.1.0 || >=12.0.0", + "nunomaduro/collision": "<8.0.0 || >=9.0.0", + "phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.2.0" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "fakerphp/faker": "^1.23", + "laravel/framework": "^11.1", + "laravel/pint": "^1.6", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^10.5 || ^11.0.1", + "spatie/laravel-ray": "^1.35", + "symfony/process": "^7.0", + "symfony/yaml": "^7.0", + "vlucas/phpdotenv": "^5.4.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } + "suggest": { + "brianium/paratest": "Allow using parallel tresting (^7.3).", + "ext-pcntl": "Required to use all features of the console signal trapping.", + "fakerphp/faker": "Allow using Faker for testing (^1.23).", + "laravel/framework": "Required for testing (^11.1).", + "mockery/mockery": "Allow using Mockery for testing (^1.6).", + "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^8.0).", + "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^9.0).", + "phpunit/phpunit": "Allow using PHPUnit for testing (^10.5 || ^11.0).", + "symfony/process": "Required to use Orchestra\\Testbench\\remote function (^7.0).", + "symfony/yaml": "Required for Testbench CLI (^7.0).", + "vlucas/phpdotenv": "Required for Testbench CLI (^5.4.1)." }, + "bin": [ + "testbench" + ], + "type": "library", "autoload": { - "classmap": [ - "hamcrest" - ] + "files": [ + "src/functions.php" + ], + "psr-4": { + "Orchestra\\Testbench\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "This is the PHP port of Hamcrest Matchers", + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Testing Helper for Laravel Development", + "homepage": "https://packages.tools/testbench", "keywords": [ - "test" + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" ], "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench-core" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2024-06-10T10:24:57+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "name": "orchestra/workbench", + "version": "v9.1.0", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + "url": "https://github.com/orchestral/workbench.git", + "reference": "590a7d6741eba8c556bc1fa86861a27963a26bb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "url": "https://api.github.com/repos/orchestral/workbench/zipball/590a7d6741eba8c556bc1fa86861a27963a26bb6", + "reference": "590a7d6741eba8c556bc1fa86861a27963a26bb6", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.23", + "laravel/framework": "^11.0", + "laravel/tinker": "^2.9", + "nunomaduro/collision": "^8.0", + "orchestra/canvas": "^9.0.2", + "orchestra/testbench-core": "^9.1.0", + "php": "^8.1", + "spatie/laravel-ray": "^1.35", + "symfony/polyfill-php83": "^1.28", + "symfony/yaml": "^7.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "laravel/pint": "^1.6", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^10.5 || ^11.0", + "symfony/process": "^7.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } + "suggest": { + "ext-pcntl": "Required to use all features of the console signal trapping." }, + "type": "library", "autoload": { "psr-4": { - "Jean85\\": "src/" + "Orchestra\\Workbench\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6352,332 +8871,378 @@ ], "authors": [ { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" } ], - "description": "A library to get pretty versions strings of installed dependencies", + "description": "Workbench Companion for Laravel Packages Development", "keywords": [ - "composer", - "package", - "release", - "versions" + "dev", + "laravel", + "laravel-packages", + "testing" ], "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + "issues": "https://github.com/orchestral/workbench/issues", + "source": "https://github.com/orchestral/workbench/tree/v9.1.0" }, - "time": "2021-10-08T21:21:46+00:00" + "time": "2024-05-20T23:55:00+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "5.2.12", + "name": "pestphp/pest", + "version": "v2.34.8", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "url": "https://github.com/pestphp/pest.git", + "reference": "e8f122bf47585c06431e0056189ec6bfd6f41f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/pestphp/pest/zipball/e8f122bf47585c06431e0056189ec6bfd6f41f57", + "reference": "e8f122bf47585c06431e0056189ec6bfd6f41f57", "shasum": "" }, "require": { - "php": ">=5.3.3" + "brianium/paratest": "^7.3.1", + "nunomaduro/collision": "^7.10.0|^8.1.1", + "nunomaduro/termwind": "^1.15.1|^2.0.1", + "pestphp/pest-plugin": "^2.1.1", + "pestphp/pest-plugin-arch": "^2.7.0", + "php": "^8.1.0", + "phpunit/phpunit": "^10.5.17" + }, + "conflict": { + "phpunit/phpunit": ">10.5.17", + "sebastian/exporter": "<5.1.0", + "webmozart/assert": "<1.11.0" }, "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" + "pestphp/pest-dev-tools": "^2.16.0", + "pestphp/pest-plugin-type-coverage": "^2.8.3", + "symfony/process": "^6.4.0|^7.1.1" }, "bin": [ - "bin/validate-json" + "bin/pest" ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" + "pest": { + "plugins": [ + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "Pest\\": "src/" } }, "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" - }, + "MIT" + ], + "authors": [ { - "name": "Robert Schรถnthal", - "email": "seroscho@googlemail.com" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", + "description": "The elegant PHP Testing Framework.", "keywords": [ - "json", - "schema" + "framework", + "pest", + "php", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v2.34.8" }, - "time": "2022-04-13T08:02:27+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-06-10T22:02:16+00:00" }, { - "name": "localheinz/diff", - "version": "1.1.1", + "name": "pestphp/pest-plugin", + "version": "v2.1.1", "source": { "type": "git", - "url": "https://github.com/localheinz/diff.git", - "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c" + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/diff/zipball/851bb20ea8358c86f677f5f111c4ab031b1c764c", - "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.1" + }, + "conflict": { + "pestphp/pest": "<2.2.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^4.2 || ^5" + "composer/composer": "^2.5.8", + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" }, - "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Pest\\Plugin\\": "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" - } + "MIT" ], - "description": "Fork of sebastian/diff for use with ergebnis/composer-normalize", - "homepage": "https://github.com/localheinz/diff", + "description": "The Pest plugin manager", "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" ], "support": { - "source": "https://github.com/localheinz/diff/tree/main" + "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-07-06T04:49:32+00:00" + "time": "2023-08-22T08:40:06+00:00" }, { - "name": "mockery/mockery", - "version": "1.6.6", + "name": "pestphp/pest-plugin-arch", + "version": "v2.7.0", "source": { "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": ">=7.3" - }, - "conflict": { - "phpunit/phpunit": "<8.0" + "nunomaduro/collision": "^7.10.0|^8.1.0", + "pestphp/pest-plugin": "^2.1.1", + "php": "^8.1", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.10", - "psalm/plugin-phpunit": "^0.18.4", - "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^4.30" + "pestphp/pest": "^2.33.0", + "pestphp/pest-dev-tools": "^2.16.0" }, "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, "autoload": { "files": [ - "library/helpers.php", - "library/Mockery.php" + "src/Autoload.php" ], "psr-4": { - "Mockery\\": "library/Mockery" + "Pest\\Arch\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pรกdraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "https://github.com/padraic", - "role": "Author" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "https://davedevelopment.co.uk", - "role": "Developer" - }, - { - "name": "Nathanael Esayeas", - "email": "nathanael.esayeas@protonmail.com", - "homepage": "https://github.com/ghostwriter", - "role": "Lead Developer" - } + "MIT" ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", + "description": "The Arch plugin for Pest PHP.", "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", "test", - "test double", - "testing" + "testing", + "unit" ], "support": { - "docs": "https://docs.mockery.io/", - "issues": "https://github.com/mockery/mockery/issues", - "rss": "https://github.com/mockery/mockery/releases.atom", - "security": "https://github.com/mockery/mockery/security/advisories", - "source": "https://github.com/mockery/mockery" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" }, - "time": "2023-08-09T00:03:52+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-01-26T09:46:42+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.11.1", + "name": "pestphp/pest-plugin-laravel", + "version": "v2.4.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "53df51169a7f9595e06839cce638c73e59ace5e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/53df51169a7f9595e06839cce638c73e59ace5e8", + "reference": "53df51169a7f9595e06839cce638c73e59ace5e8", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "laravel/framework": "^10.48.9|^11.5.0", + "pestphp/pest": "^2.34.7", + "php": "^8.1.0" }, "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" + "laravel/dusk": "^7.13.0", + "orchestra/testbench": "^8.22.3|^9.0.4", + "pestphp/pest-dev-tools": "^2.16.0" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + }, + "pest": { + "plugins": [ + "Pest\\Laravel\\Plugin" + ] + } + }, "autoload": { "files": [ - "src/DeepCopy/deep_copy.php" + "src/Autoload.php" ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Pest\\Laravel\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "description": "The Pest Laravel Plugin", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v2.4.0" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-04-27T10:41:54+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.17.1", + "name": "phar-io/manifest", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "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" + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6685,162 +9250,111 @@ ], "authors": [ { - "name": "Nikita Popov" + "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": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2023-08-13T19:53:39+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { - "name": "nunomaduro/collision", - "version": "v7.8.1", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "61553ad3260845d7e3e49121b7074619233d361b" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/61553ad3260845d7e3e49121b7074619233d361b", - "reference": "61553ad3260845d7e3e49121b7074619233d361b", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "filp/whoops": "^2.15.3", - "nunomaduro/termwind": "^1.15.1", - "php": "^8.1.0", - "symfony/console": "^6.3.2" - }, - "require-dev": { - "brianium/paratest": "^7.2.4", - "laravel/framework": "^10.17.1", - "laravel/pint": "^1.10.5", - "laravel/sail": "^1.23.1", - "laravel/sanctum": "^3.2.5", - "laravel/tinker": "^2.8.1", - "nunomaduro/larastan": "^2.6.4", - "orchestra/testbench-core": "^8.5.9", - "pestphp/pest": "^2.12.1", - "phpunit/phpunit": "^10.3.1", - "sebastian/environment": "^6.0.1", - "spatie/laravel-ignition": "^2.2.0" + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, "autoload": { - "files": [ - "./src/Adapters/Phpunit/Autoload.php" - ], - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "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" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "url": "https://github.com/nunomaduro", - "type": "github" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "time": "2023-08-07T08:03:21+00:00" + "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": "nunomaduro/larastan", - "version": "v2.6.4", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/nunomaduro/larastan.git", - "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/6c5e8820f3db6397546f3ce48520af9d312aed27", - "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "ext-json": "*", - "illuminate/console": "^9.47.0 || ^10.0.0", - "illuminate/container": "^9.47.0 || ^10.0.0", - "illuminate/contracts": "^9.47.0 || ^10.0.0", - "illuminate/database": "^9.47.0 || ^10.0.0", - "illuminate/http": "^9.47.0 || ^10.0.0", - "illuminate/pipeline": "^9.47.0 || ^10.0.0", - "illuminate/support": "^9.47.0 || ^10.0.0", - "php": "^8.0.2", - "phpmyadmin/sql-parser": "^5.6.0", - "phpstan/phpstan": "~1.10.6" - }, - "require-dev": { - "nikic/php-parser": "^4.15.2", - "orchestra/testbench": "^7.19.0 || ^8.0.0", - "phpunit/phpunit": "^9.5.27" - }, - "suggest": { - "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + "php": "^7.2 || ^8.0" }, - "type": "phpstan-extension", + "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] + "dev-2.x": "2.x-dev" } }, "autoload": { "psr-4": { - "NunoMaduro\\Larastan\\": "src/" + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6849,152 +9363,128 @@ ], "authors": [ { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", - "laravel", - "package", - "php", + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", "static analysis" ], "support": { - "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v2.6.4" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/canvural", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2023-07-29T12:13:13+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "orchestra/testbench", - "version": "v8.5.12", + "name": "phpdocumentor/reflection-docblock", + "version": "5.4.1", "source": { "type": "git", - "url": "https://github.com/orchestral/testbench.git", - "reference": "74493b392bc61dbd1fd459dec235e444b42d10c9" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/74493b392bc61dbd1fd459dec235e444b42d10c9", - "reference": "74493b392bc61dbd1fd459dec235e444b42d10c9", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "shasum": "" }, "require": { - "composer-runtime-api": "^2.2", - "fakerphp/faker": "^1.21", - "laravel/framework": ">=10.14.0 <10.18.0", - "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": ">=8.5.7 <8.6.0", - "php": "^8.1", - "phpunit/phpunit": "^9.6 || ^10.1", - "spatie/laravel-ray": "^1.32.4", - "symfony/process": "^6.2", - "symfony/yaml": "^6.2", - "vlucas/phpdotenv": "^5.4.1" + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" }, "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": "Mior Muhammad Zaki", - "email": "crynobone@gmail.com", - "homepage": "https://github.com/crynobone" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Laravel Testing Helper for Packages Development", - "homepage": "https://packages.tools/testbench/", - "keywords": [ - "BDD", - "TDD", - "dev", - "laravel", - "laravel-packages", - "testing" - ], + "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/orchestral/testbench/issues", - "source": "https://github.com/orchestral/testbench/tree/v8.5.12" + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" }, - "time": "2023-08-01T14:22:48+00:00" + "time": "2024-05-21T05:55:05+00:00" }, { - "name": "orchestra/testbench-core", - "version": "v8.5.9", + "name": "phpdocumentor/type-resolver", + "version": "1.8.2", "source": { "type": "git", - "url": "https://github.com/orchestral/testbench-core.git", - "reference": "03049a27967ab80972a7c0c0a5be87e421b27ff4" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/03049a27967ab80972a7c0c0a5be87e421b27ff4", - "reference": "03049a27967ab80972a7c0c0a5be87e421b27ff4", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { - "composer-runtime-api": "^2.2", - "php": "^8.1" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { - "fakerphp/faker": "^1.21", - "laravel/framework": "^10.13.5", - "laravel/pint": "^1.6", - "mockery/mockery": "^1.5.1", - "phpstan/phpstan": "^1.10.7", - "phpunit/phpunit": "^10.1", - "spatie/laravel-ray": "^1.32.4", - "symfony/process": "^6.2", - "symfony/yaml": "^6.2", - "vlucas/phpdotenv": "^5.4.1" - }, - "suggest": { - "brianium/paratest": "Allow using parallel tresting (^6.4 || ^7.1.4).", - "fakerphp/faker": "Allow using Faker for testing (^1.21).", - "laravel/framework": "Required for testing (^10.13.5).", - "mockery/mockery": "Allow using Mockery for testing (^1.5.1).", - "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.4 || ^7.4).", - "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^8.0).", - "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^8.0).", - "phpunit/phpunit": "Allow using PHPUnit for testing (^9.6 || ^10.1).", - "symfony/yaml": "Required for CLI Commander (^6.2).", - "vlucas/phpdotenv": "Required for CLI Commander (^5.4.1)." + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, - "bin": [ - "testbench" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, "autoload": { - "files": [ - "src/helpers.php" - ], "psr-4": { - "Orchestra\\Testbench\\": "src/" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -7003,1450 +9493,1492 @@ ], "authors": [ { - "name": "Mior Muhammad Zaki", - "email": "crynobone@gmail.com", - "homepage": "https://github.com/crynobone" - } - ], - "description": "Testing Helper for Laravel Development", - "homepage": "https://packages.tools/testbench", - "keywords": [ - "BDD", - "TDD", - "dev", - "laravel", - "laravel-packages", - "testing" + "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/orchestral/testbench/issues", - "source": "https://github.com/orchestral/testbench-core" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" }, - "time": "2023-07-12T00:16:23+00:00" + "time": "2024-02-23T11:10:43+00:00" }, { - "name": "pestphp/pest", - "version": "v2.11.0", + "name": "phpmyadmin/sql-parser", + "version": "5.9.0", "source": { "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "049da041b244776765ffea5ae9f3e13bd96ec4c9" + "url": "https://github.com/phpmyadmin/sql-parser.git", + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/049da041b244776765ffea5ae9f3e13bd96ec4c9", - "reference": "049da041b244776765ffea5ae9f3e13bd96ec4c9", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/011fa18a4e55591fac6545a821921dd1d61c6984", + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984", "shasum": "" }, "require": { - "brianium/paratest": "^7.2.3", - "nunomaduro/collision": "^7.7.0", - "nunomaduro/termwind": "^1.15.1", - "pestphp/pest-plugin": "^2.0.1", - "pestphp/pest-plugin-arch": "^2.2.3", - "php": "^8.1.0", - "phpunit/phpunit": "^10.2.6" + "php": "^7.2 || ^8.0", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": ">10.2.6", - "webmozart/assert": "<1.11.0" + "phpmyadmin/motranslator": "<3.0" }, "require-dev": { - "pestphp/pest-dev-tools": "^2.12.0", - "pestphp/pest-plugin-type-coverage": "^2.0.0", - "symfony/process": "^6.3.2" + "phpbench/phpbench": "^1.1", + "phpmyadmin/coding-standard": "^3.0", + "phpmyadmin/motranslator": "^4.0 || ^5.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.9.12", + "phpstan/phpstan-phpunit": "^1.3.3", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.11", + "zumba/json-serializer": "~3.0.2" + }, + "suggest": { + "ext-mbstring": "For best performance", + "phpmyadmin/motranslator": "Translate messages to your favorite locale" }, "bin": [ - "bin/pest" + "bin/highlight-query", + "bin/lint-query", + "bin/sql-parser", + "bin/tokenize-query" ], "type": "library", - "extra": { - "pest": { - "plugins": [ - "Pest\\Plugins\\Bail", - "Pest\\Plugins\\Cache", - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Environment", - "Pest\\Plugins\\Help", - "Pest\\Plugins\\Memory", - "Pest\\Plugins\\Only", - "Pest\\Plugins\\Printer", - "Pest\\Plugins\\ProcessIsolation", - "Pest\\Plugins\\Profile", - "Pest\\Plugins\\Retry", - "Pest\\Plugins\\Snapshot", - "Pest\\Plugins\\Verbose", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Parallel" - ] - } - }, "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], "psr-4": { - "Pest\\": "src/" + "PhpMyAdmin\\SqlParser\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-2.0-or-later" ], "authors": [ { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" + "name": "The phpMyAdmin Team", + "email": "developers@phpmyadmin.net", + "homepage": "https://www.phpmyadmin.net/team/" } ], - "description": "The elegant PHP Testing Framework.", + "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", + "homepage": "https://github.com/phpmyadmin/sql-parser", "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" + "analysis", + "lexer", + "parser", + "query linter", + "sql", + "sql lexer", + "sql linter", + "sql parser", + "sql syntax highlighter", + "sql tokenizer" ], "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.11.0" + "issues": "https://github.com/phpmyadmin/sql-parser/issues", + "source": "https://github.com/phpmyadmin/sql-parser" }, "funding": [ { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" + "url": "https://www.phpmyadmin.net/donate/", + "type": "other" } ], - "time": "2023-08-01T13:43:50+00:00" + "time": "2024-01-20T20:34:02+00:00" }, { - "name": "pestphp/pest-plugin", - "version": "v2.0.1", + "name": "phpstan/extension-installer", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "e3a3da262b73bdcbf3fad4dc9846c3c4921f2147" + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e3a3da262b73bdcbf3fad4dc9846c3c4921f2147", - "reference": "e3a3da262b73bdcbf3fad4dc9846c3c4921f2147", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f6b87faf9fc7978eab2f7919a8760bc9f58f9203", + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203", "shasum": "" }, "require": { - "composer-plugin-api": "^2.0.0", - "php": "^8.1" - }, - "conflict": { - "pestphp/pest": "<2.2.3" + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.0" }, "require-dev": { - "composer/composer": "^2.5.5", - "pestphp/pest": "^2.2.3", - "pestphp/pest-dev-tools": "^2.5.0" + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" }, "type": "composer-plugin", "extra": { - "class": "Pest\\Plugin\\Manager" + "class": "PHPStan\\ExtensionInstaller\\Plugin" }, "autoload": { "psr-4": { - "Pest\\Plugin\\": "src/" + "PHPStan\\ExtensionInstaller\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The Pest plugin manager", - "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], + "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v2.0.1" + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.4.1" }, - "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": "2023-03-24T11:21:05+00:00" + "time": "2024-06-10T08:20:49+00:00" }, { - "name": "pestphp/pest-plugin-arch", - "version": "v2.3.1", + "name": "phpstan/phpdoc-parser", + "version": "1.29.1", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "527ff8705c1bbbf49e729d4dce9bdb00b07c0424" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/527ff8705c1bbbf49e729d4dce9bdb00b07c0424", - "reference": "527ff8705c1bbbf49e729d4dce9bdb00b07c0424", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", "shasum": "" }, "require": { - "nunomaduro/collision": "^7.8.1", - "pestphp/pest-plugin": "^2.0.1", - "php": "^8.1", - "ta-tikoma/phpunit-architecture-test": "^0.7.4" + "php": "^7.2 || ^8.0" }, "require-dev": { - "pestphp/pest": "^2.15.0", - "pestphp/pest-dev-tools": "^2.16.0" + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, "type": "library", "autoload": { - "files": [ - "src/Autoload.php" - ], "psr-4": { - "Pest\\Arch\\": "src/" + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The Arch plugin for Pest PHP.", - "keywords": [ - "arch", - "architecture", - "framework", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.3.1" + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - } - ], - "time": "2023-08-21T08:38:17+00:00" + "time": "2024-05-31T08:52:43+00:00" }, { - "name": "pestphp/pest-plugin-laravel", - "version": "v2.1.0", + "name": "phpstan/phpstan", + "version": "1.11.4", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin-laravel.git", - "reference": "db6295986e3c506dbf37c16ddc64c4a83e96bd75" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "9100a76ce8015b9aa7125b9171ae3a76887b6c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/db6295986e3c506dbf37c16ddc64c4a83e96bd75", - "reference": "db6295986e3c506dbf37c16ddc64c4a83e96bd75", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9100a76ce8015b9aa7125b9171ae3a76887b6c82", + "reference": "9100a76ce8015b9aa7125b9171ae3a76887b6c82", "shasum": "" }, "require": { - "laravel/framework": "^10.15.0", - "pestphp/pest": "^2.8.3", - "php": "^8.1.0" + "php": "^7.2|^8.0" }, - "require-dev": { - "laravel/dusk": "^7.8.0", - "orchestra/testbench": "^8.5.10", - "pestphp/pest-dev-tools": "^2.12.0" + "conflict": { + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", - "extra": { - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" - ] - } - }, "autoload": { "files": [ - "src/Autoload.php" - ], - "psr-4": { - "Pest\\Laravel\\": "src/" - } + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The Pest Laravel Plugin", + "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ - "framework", - "laravel", - "pest", - "php", - "test", - "testing", - "unit" + "dev", + "static analysis" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v2.1.0" + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" + "url": "https://github.com/ondrejmirtes", + "type": "github" }, { - "url": "https://github.com/nunomaduro", + "url": "https://github.com/phpstan", "type": "github" } ], - "time": "2023-07-18T11:41:02+00:00" + "time": "2024-06-06T12:19:22+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.3", + "name": "phpstan/phpstan-deprecation-rules", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "fa8cce7720fa782899a0aa97b6a41225d1bb7b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/fa8cce7720fa782899a0aa97b6a41225d1bb7b26", + "reference": "fa8cce7720fa782899a0aa97b6a41225d1bb7b26", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.11" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" }, - "type": "library", + "type": "phpstan-extension", "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" + "phpstan": { + "includes": [ + "rules.neon" + ] } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PHPStan\\": "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" - } + "MIT" ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.0" }, - "time": "2021-07-20T11:28:43+00:00" + "time": "2024-04-20T06:39:48+00:00" }, { - "name": "phar-io/version", - "version": "3.2.1", + "name": "phpstan/phpstan-phpunit", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + "url": "https://github.com/phpstan/phpstan-phpunit.git", + "reference": "f3ea021866f4263f07ca3636bf22c64be9610c11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/f3ea021866f4263f07ca3636bf22c64be9610c11", + "reference": "f3ea021866f4263f07ca3636bf22c64be9610c11", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.11" + }, + "conflict": { + "phpunit/phpunit": "<7.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } }, - "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PHPStan\\": "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" - } + "MIT" ], - "description": "Library for handling version information and constraints", + "description": "PHPUnit extensions and rules for PHPStan", "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" + "issues": "https://github.com/phpstan/phpstan-phpunit/issues", + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.4.0" }, - "time": "2022-02-21T01:04:05+00:00" + "time": "2024-04-20T06:39:00+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "phpstan/phpstan-strict-rules", + "version": "1.6.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/phpstan/phpstan-strict-rules.git", + "reference": "363f921dd8441777d4fc137deb99beb486c77df1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/363f921dd8441777d4fc137deb99beb486c77df1", + "reference": "363f921dd8441777d4fc137deb99beb486c77df1", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.11" }, - "type": "library", + "require-dev": { + "nikic/php-parser": "^4.13.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" + "phpstan": { + "includes": [ + "rules.neon" + ] } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "PHPStan\\": "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" - ], + "description": "Extra strict and opinionated rules for PHPStan", "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.6.0" }, - "time": "2020-06-27T09:03:43+00:00" + "time": "2024-04-20T06:37:51+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "name": "phpunit/php-code-coverage", + "version": "10.1.14", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.x-dev" + "dev-main": "10.1-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "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/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" }, - "time": "2021-10-19T17:43:47+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-12T15:33:41+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "name": "phpunit/php-file-iterator", + "version": "4.1.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "php": ">=8.1" }, "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-main": "4.0-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "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/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, - "time": "2023-08-12T11:01:26+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" }, { - "name": "phpmyadmin/sql-parser", - "version": "5.8.0", + "name": "phpunit/php-invoker", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/db1b3069b5dbc220d393d67ff911e0ae76732755", - "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpmyadmin/motranslator": "<3.0" + "php": ">=8.1" }, "require-dev": { - "phpbench/phpbench": "^1.1", - "phpmyadmin/coding-standard": "^3.0", - "phpmyadmin/motranslator": "^4.0 || ^5.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.9.12", - "phpstan/phpstan-phpunit": "^1.3.3", - "phpunit/php-code-coverage": "*", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.11", - "zumba/json-serializer": "^3.0" + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" }, "suggest": { - "ext-mbstring": "For best performance", - "phpmyadmin/motranslator": "Translate messages to your favorite locale" + "ext-pcntl": "*" }, - "bin": [ - "bin/highlight-query", - "bin/lint-query", - "bin/tokenize-query" - ], "type": "library", - "autoload": { - "psr-4": { - "PhpMyAdmin\\SqlParser\\": "src" + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0-or-later" + "BSD-3-Clause" ], "authors": [ { - "name": "The phpMyAdmin Team", - "email": "developers@phpmyadmin.net", - "homepage": "https://www.phpmyadmin.net/team/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", - "homepage": "https://github.com/phpmyadmin/sql-parser", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "analysis", - "lexer", - "parser", - "query linter", - "sql", - "sql lexer", - "sql linter", - "sql parser", - "sql syntax highlighter", - "sql tokenizer" + "process" ], "support": { - "issues": "https://github.com/phpmyadmin/sql-parser/issues", - "source": "https://github.com/phpmyadmin/sql-parser" + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { - "url": "https://www.phpmyadmin.net/donate/", - "type": "other" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2023-06-05T18:19:38+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { - "name": "phpstan/extension-installer", - "version": "1.3.1", + "name": "phpunit/php-text-template", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "composer-plugin-api": "^2.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.9.0" + "php": ">=8.1" }, "require-dev": { - "composer/composer": "^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + "phpunit/phpunit": "^10.0" }, - "type": "composer-plugin", + "type": "library", "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" + "branch-alias": { + "dev-main": "3.0-dev" + } }, "autoload": { - "psr-4": { - "PHPStan\\ExtensionInstaller\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "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" ], - "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { - "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, - "time": "2023-05-24T08:59:17+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" }, { - "name": "phpstan/phpdoc-parser", - "version": "1.23.1", + "name": "phpunit/php-timer", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=8.1" }, "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" + "phpunit/phpunit": "^10.0" }, "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "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" ], - "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.23.1" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, - "time": "2023-08-03T16:32:59+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" }, { - "name": "phpstan/phpstan", - "version": "1.10.34", + "name": "phpunit/phpunit", + "version": "10.5.17", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "c1f736a473d21957ead7e94fcc029f571895abf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7f806b6f1403e6914c778140e2ba07c293cb4901", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c1f736a473d21957ead7e94fcc029f571895abf5", + "reference": "c1f736a473d21957ead7e94fcc029f571895abf5", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "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": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, - "conflict": { - "phpstan/phpstan-shim": "*" + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ - "phpstan", - "phpstan.phar" + "phpunit" ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.5-dev" + } + }, "autoload": { "files": [ - "bootstrap.php" + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "PHPStan - PHP Static Analysis Tool", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "dev", - "static analysis" + "phpunit", + "testing", + "xunit" ], "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.17" }, "funding": [ { - "url": "https://github.com/ondrejmirtes", - "type": "github" + "url": "https://phpunit.de/sponsors.html", + "type": "custom" }, { - "url": "https://github.com/phpstan", + "url": "https://github.com/sebastianbergmann", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2023-09-13T09:49:47+00:00" + "time": "2024-04-05T04:39:01+00:00" }, { - "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.4", + "name": "pimple/pimple", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", - "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10.3" + "php": ">=7.2.5", + "psr/container": "^1.1 || ^2.0" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-php-parser": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" + "symfony/phpunit-bridge": "^5.4@dev" }, - "type": "phpstan-extension", + "type": "library", "extra": { - "phpstan": { - "includes": [ - "rules.neon" - ] + "branch-alias": { + "dev-master": "3.4.x-dev" } }, "autoload": { - "psr-4": { - "PHPStan\\": "src/" + "psr-0": { + "Pimple": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", + "keywords": [ + "container", + "dependency injection" + ], "support": { - "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" + "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" }, - "time": "2023-08-05T09:02:04+00:00" + "time": "2021-10-28T11:13:42+00:00" }, { - "name": "phpstan/phpstan-phpunit", - "version": "1.3.14", + "name": "psalm/plugin-laravel", + "version": "v2.11.0", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "614acc10c522e319639bf38b0698a4a566665f04" + "url": "https://github.com/psalm/psalm-plugin-laravel.git", + "reference": "ffd51399b672959331ed3ef4eaae13984474e2f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/614acc10c522e319639bf38b0698a4a566665f04", - "reference": "614acc10c522e319639bf38b0698a4a566665f04", + "url": "https://api.github.com/repos/psalm/psalm-plugin-laravel/zipball/ffd51399b672959331ed3ef4eaae13984474e2f0", + "reference": "ffd51399b672959331ed3ef4eaae13984474e2f0", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" - }, - "conflict": { - "phpunit/phpunit": "<7.0" + "barryvdh/laravel-ide-helper": "^2.13 || ^3.0", + "ext-simplexml": "*", + "illuminate/config": "^10.48 || ^11.0", + "illuminate/container": "^10.48 || ^11.0", + "illuminate/contracts": "^10.48 || ^11.0", + "illuminate/database": "^10.48 || ^11.0", + "illuminate/events": "^10.48 || ^11.0", + "illuminate/http": "^10.48 || ^11.0", + "illuminate/routing": "^10.48 || ^11.0", + "illuminate/support": "^10.48 || ^11.0", + "illuminate/view": "^10.48 || ^11.0", + "nikic/php-parser": "^4.18 || ^5.0", + "orchestra/testbench-core": "^8.22 || ^9.0", + "php": "^8.1", + "symfony/console": "^6.0 || ^7.0", + "symfony/finder": "^6.0 || ^7.0", + "vimeo/psalm": "^5.20" }, "require-dev": { - "nikic/php-parser": "^4.13.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", + "laravel/framework": "^10.48 || ^11.0", + "phpunit/phpunit": "^10.5 || ^11.0", + "phpyh/psalm-tester": "^0.1.0", + "ramsey/collection": "^1.3", + "rector/rector": "^1.0", + "slevomat/coding-standard": "^8.8", + "squizlabs/php_codesniffer": "*", + "symfony/http-foundation": "^6.0 || ^7.0" + }, + "type": "psalm-plugin", "extra": { - "phpstan": { - "includes": [ - "extension.neon", - "rules.neon" - ] + "psalm": { + "pluginClass": "Psalm\\LaravelPlugin\\Plugin" } }, "autoload": { "psr-4": { - "PHPStan\\": "src/" + "Psalm\\LaravelPlugin\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPUnit extensions and rules for PHPStan", + "authors": [ + { + "name": "Matthew Brown", + "email": "github@muglug.com" + } + ], + "description": "Psalm plugin for Laravel", + "homepage": "https://github.com/psalm/psalm-plugin-laravel", "support": { - "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.14" + "issues": "https://github.com/psalm/psalm-plugin-laravel/issues", + "source": "https://github.com/psalm/psalm-plugin-laravel/tree/v2.11.0" }, - "time": "2023-08-25T09:46:39+00:00" + "time": "2024-03-19T21:40:03+00:00" }, { - "name": "phpstan/phpstan-strict-rules", - "version": "1.5.1", + "name": "psalm/plugin-phpunit", + "version": "0.19.0", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6" + "url": "https://github.com/psalm/psalm-plugin-phpunit.git", + "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b21c03d4f6f3a446e4311155f4be9d65048218e6", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e344eaaa27871e79c6cb97b9efe52a735f9d1966", + "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "composer/package-versions-deprecated": "^1.10", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "ext-simplexml": "*", + "php": "^7.4 || ^8.0", + "vimeo/psalm": "dev-master || ^5@beta || ^5.0" }, - "require-dev": { - "nikic/php-parser": "^4.13.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" + "conflict": { + "phpunit/phpunit": "<7.5" }, - "type": "phpstan-extension", + "require-dev": { + "codeception/codeception": "^4.0.3", + "php": "^7.3 || ^8.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.3.1", + "weirdan/codeception-psalm-module": "^0.11.0", + "weirdan/prophecy-shim": "^1.0 || ^2.0" + }, + "type": "psalm-plugin", "extra": { - "phpstan": { - "includes": [ - "rules.neon" - ] + "psalm": { + "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" } }, "autoload": { "psr-4": { - "PHPStan\\": "src/" + "Psalm\\PhpUnitPlugin\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Extra strict and opinionated rules for PHPStan", + "authors": [ + { + "name": "Matt Brown", + "email": "github@muglug.com" + } + ], + "description": "Psalm plugin for PHPUnit", "support": { - "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.1" + "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.19.0" }, - "time": "2023-03-29T14:47:40+00:00" + "time": "2024-03-15T10:43:15+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "10.1.3", + "name": "psy/psysh", + "version": "v0.12.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" + "url": "https://github.com/bobthecow/psysh.git", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", - "theseer/tokenizer": "^1.2.0" + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { - "phpunit/phpunit": "^10.1" + "bamarni/composer-bin-plugin": "^1.2" }, "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, + "bin": [ + "bin/psysh" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", "keywords": [ - "coverage", - "testing", - "xunit" + "REPL", + "console", + "interactive", + "shell" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.4" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-07-26T13:45:28+00:00" + "time": "2024-06-10T01:18:23+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "name": "react/cache", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\Cache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Async, Promise-based cache interface for ReactPHP", "keywords": [ - "filesystem", - "iterator" + "cache", + "caching", + "promise", + "reactphp" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2022-11-30T15:59:55+00:00" }, { - "name": "phpunit/php-invoker", - "version": "4.0.0", + "name": "react/child-process", + "version": "v0.6.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", "shasum": "" }, "require": { - "php": ">=8.1" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" }, "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-pcntl": "*" + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\ChildProcess\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "description": "Event-driven library for executing child processes with ReactPHP.", "keywords": [ - "process" + "event-driven", + "process", + "reactphp" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", "type": "github" } ], - "time": "2023-02-03T06:56:09+00:00" + "time": "2022-09-16T13:41:56+00:00" }, { - "name": "phpunit/php-text-template", - "version": "3.0.0", + "name": "react/dns", + "version": "v1.13.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\Dns\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Async DNS resolver for ReactPHP", "keywords": [ - "template" + "async", + "dns", + "dns-resolver", + "reactphp" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2024-06-13T14:18:03+00:00" }, { - "name": "phpunit/php-timer", - "version": "6.0.0", + "name": "react/event-loop", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\EventLoop\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", "keywords": [ - "timer" + "asynchronous", + "event-loop" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2023-02-03T06:57:52+00:00" + "time": "2023-11-13T13:48:05+00:00" }, { - "name": "phpunit/phpunit", - "version": "10.2.6", + "name": "react/promise", + "version": "v3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd" + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c17815c129f133f3019cc18e8d0c8622e6d9bcd", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", "shasum": "" }, "require": { - "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": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "php": ">=7.1.0" }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" }, - "bin": [ - "phpunit" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.2-dev" - } - }, "autoload": { "files": [ - "src/Framework/Assert/Functions.php" + "src/functions_include.php" ], - "classmap": [ - "src/" - ] + "psr-4": { + "React\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "A lightweight implementation of CommonJS Promises/A for PHP", "keywords": [ - "phpunit", - "testing", - "xunit" + "promise", + "promises" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.6" + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" }, "funding": [ { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2023-07-17T12:08:28+00:00" + "time": "2024-05-24T10:39:05+00:00" }, { - "name": "pimple/pimple", - "version": "v3.5.0", + "name": "react/socket", + "version": "v1.15.0", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Pimple": "src/" + "psr-4": { + "React\\Socket\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8455,48 +10987,73 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.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": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", "keywords": [ - "container", - "dependency injection" + "Connection", + "Socket", + "async", + "reactphp", + "stream" ], "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" }, - "time": "2021-10-28T11:13:42+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-12-15T11:02:10+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.2", + "name": "react/stream", + "version": "v1.4.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "React\\Stream\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8505,780 +11062,300 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "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": "Common interfaces for PSR-7 HTTP message factories", + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" }, - "time": "2023-04-10T20:10:41+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" }, { - "name": "psr/http-message", - "version": "2.0", + "name": "rector/rector", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + "url": "https://github.com/rectorphp/rector.git", + "reference": "556509e2dcf527369892b7d411379c4a02f31859" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/556509e2dcf527369892b7d411379c4a02f31859", + "reference": "556509e2dcf527369892b7d411379c4a02f31859", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.11" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "suggest": { + "ext-dom": "To manipulate phpunit.xml via the custom-rule command" }, + "bin": [ + "bin/rector" + ], + "type": "library", "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/1.1.0" + }, + "funding": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "url": "https://github.com/tomasvotruba", + "type": "github" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "time": "2024-05-18T09:40:27+00:00" + }, + { + "name": "roave/infection-static-analysis-plugin", + "version": "1.35.0", + "source": { + "type": "git", + "url": "https://github.com/Roave/infection-static-analysis-plugin.git", + "reference": "3cb32845c5f758913a4b9eafd91ae18eafc26d82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/infection-static-analysis-plugin/zipball/3cb32845c5f758913a4b9eafd91ae18eafc26d82", + "reference": "3cb32845c5f758913a4b9eafd91ae18eafc26d82", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "infection/infection": "0.27.10", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "sanmai/later": "^0.1.4", + "vimeo/psalm": "^4.30.0 || ^5.15" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "phpunit/phpunit": "^10.5.12" + }, + "bin": [ + "bin/roave-infection-static-analysis-plugin" + ], + "type": "library", + "autoload": { + "psr-4": { + "Roave\\InfectionStaticAnalysis\\": "src/Roave/InfectionStaticAnalysis" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } ], + "description": "Static analysis on top of mutation testing - prevents escaped mutants from being invalid according to static analysis", "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" + "issues": "https://github.com/Roave/infection-static-analysis-plugin/issues", + "source": "https://github.com/Roave/infection-static-analysis-plugin/tree/1.35.0" }, - "time": "2023-04-04T09:54:51+00:00" + "time": "2024-03-10T11:55:48+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "sanmai/later", + "version": "0.1.4", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/sanmai/later.git", + "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/sanmai/later/zipball/e24c4304a4b1349c2a83151a692cec0c10579f60", + "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.4" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "ergebnis/composer-normalize": "^2.8", + "friendsofphp/php-cs-fixer": "^3.35.1", + "infection/infection": ">=0.27.6", + "phan/phan": ">=2", + "php-coveralls/php-coveralls": "^2.0", + "phpstan/phpstan": ">=1.4.5", + "phpunit/phpunit": ">=9.5 <10", + "vimeo/psalm": ">=2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, "autoload": { "files": [ - "src/getallheaders.php" - ] + "src/functions.php" + ], + "psr-4": { + "Later\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Alexey Kopytko", + "email": "alexey@kopytko.com" } ], - "description": "A polyfill for getallheaders.", + "description": "Later: deferred wrapper object", "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "issues": "https://github.com/sanmai/later/issues", + "source": "https://github.com/sanmai/later/tree/0.1.4" }, - "time": "2019-03-08T08:55:37+00:00" + "funding": [ + { + "url": "https://github.com/sanmai", + "type": "github" + } + ], + "time": "2023-10-24T00:25:28+00:00" }, { - "name": "roave/security-advisories", - "version": "dev-latest", + "name": "sanmai/pipeline", + "version": "v6.10", "source": { "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "4bdecf23905dae843494483debeae99c08e4f66f" + "url": "https://github.com/sanmai/pipeline.git", + "reference": "cbd2ea30ba8bef596b8dad1adb9c92fb2987e430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/4bdecf23905dae843494483debeae99c08e4f66f", - "reference": "4bdecf23905dae843494483debeae99c08e4f66f", + "url": "https://api.github.com/repos/sanmai/pipeline/zipball/cbd2ea30ba8bef596b8dad1adb9c92fb2987e430", + "reference": "cbd2ea30ba8bef596b8dad1adb9c92fb2987e430", "shasum": "" }, - "conflict": { - "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.2.10", - "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", - "aheinze/cockpit": "<2.2", - "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", - "akaunting/akaunting": "<2.1.13", - "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", - "alextselegidis/easyappointments": "<1.5", - "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", - "amazing/media2click": ">=1,<1.3.3", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", - "amphp/http-client": ">=4,<4.4", - "anchorcms/anchor-cms": "<=0.12.7", - "andreapollastri/cipi": "<=3.1.15", - "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", - "apereo/phpcas": "<1.6", - "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", - "appwrite/server-ce": "<=1.2.1", - "arc/web": "<3", - "area17/twill": "<1.2.5|>=2,<2.5.3", - "artesaos/seotools": "<0.17.2", - "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", - "athlon1600/php-proxy": "<=5.1", - "athlon1600/php-proxy-app": "<=3", - "automad/automad": "<1.8", - "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": ">=3,<3.2.1", - "azuracast/azuracast": "<0.18.3", - "backdrop/backdrop": "<1.24.2", - "backpack/crud": "<3.4.9", - "badaso/core": "<2.7", - "bagisto/bagisto": "<0.1.5", - "barrelstrength/sprout-base-email": "<1.2.7", - "barrelstrength/sprout-forms": "<3.9", - "barryvdh/laravel-translation-manager": "<0.6.2", - "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<4.7.5", - "bassjobsen/bootstrap-3-typeahead": ">4.0.2", - "bigfork/silverstripe-form-capture": ">=3,<3.1.1", - "billz/raspap-webgui": "<2.8.9", - "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", - "bmarshall511/wordpress_zero_spam": "<5.2.13", - "bolt/bolt": "<3.7.2", - "bolt/core": "<=4.2", - "bottelet/flarepoint": "<2.2.1", - "brightlocal/phpwhois": "<=4.2.5", - "brotkrueml/codehighlight": "<2.7", - "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", - "brotkrueml/typo3-matomo-integration": "<1.3.2", - "buddypress/buddypress": "<7.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "bytefury/crater": "<6.0.2", - "cachethq/cachet": "<2.5.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10|= 1.3.7|>=4.1,<4.1.4", - "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", - "cardgate/magento2": "<2.0.33", - "cardgate/woocommerce": "<=3.1.15", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "catfan/medoo": "<1.7.5", - "centreon/centreon": "<22.10-beta.1", - "cesnet/simplesamlphp-module-proxystatistics": "<3.1", - "cockpit-hq/cockpit": "<2.6", - "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<=3.0.6", - "codeigniter4/framework": "<4.3.5", - "codeigniter4/shield": "<1-beta.4|= 1.0.0-beta", - "codiad/codiad": "<=2.8.4", - "composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5", - "concrete5/concrete5": "<9.2|>= 9.0.0RC1, < 9.1.3", - "concrete5/core": "<8.5.8|>=9,<9.1", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", - "contao/core": ">=2,<3.5.39", - "contao/core-bundle": "<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4|= 4.10.0", - "contao/listing-bundle": ">=4,<4.4.8", - "contao/managed-edition": "<=1.5", - "cosenary/instagram": "<=2.3", - "craftcms/cms": "<=4.4.9|>= 4.0.0-RC1, < 4.4.12|>= 4.0.0-RC1, <= 4.4.5|>= 4.0.0-RC1, <= 4.4.6|>= 4.0.0-RC1, < 4.4.6|>= 4.0.0-RC1, < 4.3.7|>= 4.0.0-RC1, < 4.2.1", - "croogo/croogo": "<3.0.7", - "cuyz/valinor": "<0.12", - "czproject/git-php": "<4.0.3", - "darylldoyle/safe-svg": "<1.9.10", - "datadog/dd-trace": ">=0.30,<0.30.2", - "david-garcia/phpwhois": "<=4.3.1", - "dbrisinajumi/d2files": "<1", - "dcat/laravel-admin": "<=2.1.3-beta", - "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", - "desperado/xml-bundle": "<=0.1.7", - "directmailteam/direct-mail": "<5.2.4", - "doctrine/annotations": ">=1,<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<17.0.1|= 12.0.5|>= 3.3.beta1, < 13.0.2", - "dompdf/dompdf": "<2.0.2|= 2.0.2", - "drupal/core": ">=7,<7.96|>=8,<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8", - "drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", - "dweeves/magmi": "<=0.7.24", - "ecodev/newsletter": "<=4", - "ectouch/ectouch": "<=2.7.2", - "elefant/cms": "<1.3.13", - "elgg/elgg": "<3.3.24|>=4,<4.0.5", - "encore/laravel-admin": "<=1.8.19", - "endroid/qr-code-bundle": "<3.4.2", - "enshrined/svg-sanitize": "<0.15", - "erusev/parsedown": "<1.7.2", - "ether/logs": "<3.0.4", - "exceedone/exment": "<4.4.3|>=5,<5.0.3", - "exceedone/laravel-admin": "= 3.0.0|<2.2.3", - "ezsystems/demobundle": ">=5.4,<5.4.6.1", - "ezsystems/ez-support-tools": ">=2.2,<2.2.3", - "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1", - "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1", - "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", - "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", - "ezsystems/ezplatform-graphql": ">=1-rc.1,<1.0.13|>=2-beta.1,<2.3.12", - "ezsystems/ezplatform-kernel": "<1.2.5.1|>=1.3,<1.3.26", - "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1", - "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2|>=7,<7.5.30", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1", - "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1|>=2.5,<2.5.15", - "ezyang/htmlpurifier": "<4.1.1", - "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.8", - "feehi/cms": "<=2.1.1", - "feehi/feehicms": "<=2.1.1", - "fenom/fenom": "<=2.12.1", - "filegator/filegator": "<7.8", - "firebase/php-jwt": "<6", - "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", - "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.7", - "flarum/mentions": "<1.6.3", - "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15", - "flarum/tags": "<=0.1-beta.13", - "fluidtypo3/vhs": "<5.1.1", - "fof/byobu": ">=0.3-beta.2,<1.1.7", - "fof/upload": "<1.2.3", - "fooman/tcpdf": "<6.2.22", - "forkcms/forkcms": "<5.11.1", - "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<11", - "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", - "friendsofsymfony/oauth2-php": "<1.3", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", - "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", - "froala/wysiwyg-editor": "<3.2.7", - "froxlor/froxlor": "<2.1", - "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", - "gaoming13/wechat-php-sdk": "<=1.10.2", - "genix/cms": "<=1.1.11", - "getgrav/grav": "<=1.7.42.1", - "getkirby/cms": "= 3.8.0|<3.5.8.2|>=3.6,<3.6.6.2|>=3.7,<3.7.5.1", - "getkirby/panel": "<2.5.14", - "getkirby/starterkit": "<=3.7.0.2", - "gilacms/gila": "<=1.11.4", - "globalpayments/php-sdk": "<2", - "gogentooss/samlbase": "<1.2.7", - "google/protobuf": "<3.15", - "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", - "gree/jose": "<2.2.1", - "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6", - "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", - "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", - "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", - "harvesthq/chosen": "<1.8.7", - "helloxz/imgurl": "= 2.31|<=2.31", - "hhxsv5/laravel-s": "<3.7.36", - "hillelcoren/invoice-ninja": "<5.3.35", - "himiklab/yii2-jqgrid-widget": "<1.0.8", - "hjue/justwriting": "<=1", - "hov/jobfair": "<1.0.13|>=2,<2.0.2", - "httpsoft/http-message": "<1.0.12", - "hyn/multi-tenant": ">=5.6,<5.7.2", - "ibexa/admin-ui": ">=4.2,<4.2.3", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3", - "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", - "ibexa/post-install": "<=1.0.4", - "ibexa/user": ">=4,<4.4.3", - "icecoder/icecoder": "<=8.1", - "idno/known": "<=1.3.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", - "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", - "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", - "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", - "impresscms/impresscms": "<=1.4.5", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.1", - "in2code/ipandlanguageredirect": "<5.1.2", - "in2code/lux": "<17.6.1|>=18,<24.0.2", - "innologi/typo3-appointments": "<2.0.6", - "intelliants/subrion": "<=4.2.1", - "islandora/islandora": ">=2,<2.4.1", - "ivankristianto/phpwhois": "<=4.3", - "jackalope/jackalope-doctrine-dbal": "<1.7.4", - "james-heinrich/getid3": "<1.9.21", - "jasig/phpcas": "<1.3.3", - "joomla/archive": "<1.1.12|>=2,<2.0.1", - "joomla/filesystem": "<1.6.2|>=2,<2.0.1", - "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": ">=2.5.4,<=3.8.12", - "joomla/input": ">=2,<2.0.2", - "joomla/joomla-cms": ">=3,<3.9.12", - "joomla/session": "<1.3.1", - "joyqi/hyper-down": "<=2.4.27", - "jsdecena/laracom": "<2.0.9", - "jsmitty12/phpwhois": "<5.1", - "kazist/phpwhois": "<=4.2.6", - "kelvinmo/simplexrd": "<3.1.1", - "kevinpapst/kimai2": "<1.16.7", - "khodakhah/nodcms": "<=3", - "kimai/kimai": "<1.1", - "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", - "klaviyo/magento2-extension": ">=1,<3", - "knplabs/knp-snappy": "<1.4.2", - "krayin/laravel-crm": "<1.2.2", - "kreait/firebase-php": ">=3.2,<3.8.1", - "la-haute-societe/tcpdf": "<6.2.22", - "laminas/laminas-diactoros": "<2.18.1|>=2.24,<2.24.2|>=2.25,<2.25.2|= 2.23.0|= 2.22.0|= 2.21.0|= 2.20.0|= 2.19.0", - "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", - "laminas/laminas-http": "<2.14.2", - "laravel/fortify": "<1.11.1", - "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "latte/latte": "<2.10.8", - "lavalite/cms": "= 9.0.0|<=9", - "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", - "league/commonmark": "<0.18.3", - "league/flysystem": "<1.1.4|>=2,<2.1.1", - "league/oauth2-server": ">=8.3.2,<8.5.3", - "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", - "librenms/librenms": "<22.10", - "liftkit/database": "<2.13.2", - "limesurvey/limesurvey": "<3.27.19", - "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6", - "lms/routes": "<2.1.1", - "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", - "luyadev/yii-helpers": "<1.2.1", - "magento/community-edition": "= 2.4.0|<=2.4", - "magento/magento1ce": "<1.9.4.3", - "magento/magento1ee": ">=1,<1.14.4.3", - "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2", - "maikuolan/phpmussel": ">=1,<1.6", - "mantisbt/mantisbt": "<=2.25.5", - "marcwillmann/turn": "<0.3.3", - "matyhtf/framework": "<3.0.6", - "mautic/core": "<4.3|= 2.13.1", - "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35", - "mediawiki/matomo": "<2.4.3", - "melisplatform/melis-asset-manager": "<5.0.1", - "melisplatform/melis-cms": "<5.0.1", - "melisplatform/melis-front": "<5.0.1", - "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", - "mgallegos/laravel-jqgrid": "<=1.3", - "microweber/microweber": "= 1.1.18|<=1.3.4", - "miniorange/miniorange-saml": "<1.4.3", - "mittwald/typo3_forum": "<1.2.1", - "mobiledetect/mobiledetectlib": "<2.8.32", - "modx/revolution": "<2.8|<= 2.8.3-pl", - "mojo42/jirafeau": "<4.4", - "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.2-rc.2|= 3.4.3|= 3.5|= 3.7|= 3.9|= 3.8|= 4.2.0|= 3.11", - "movim/moxl": ">=0.8,<=0.10", - "mpdf/mpdf": "<=7.1.7", - "mustache/mustache": ">=2,<2.14.1", - "namshi/jose": "<2.2", - "neoan3-apps/template": "<1.1.1", - "neorazorx/facturascripts": "<2022.4", - "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", - "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", - "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", - "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", - "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", - "nilsteampassnet/teampass": "<3.0.10", - "notrinos/notrinos-erp": "<=0.7", - "noumo/easyii": "<=0.9", - "nukeviet/nukeviet": "<4.5.2", - "nyholm/psr7": "<1.6.1", - "nystudio107/craft-seomatic": "<3.4.12", - "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", - "october/backend": "<1.1.2", - "october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469", - "october/october": "<1.0.466|>=2.1,<2.1.12", - "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66", - "onelogin/php-saml": "<2.10.4", - "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", - "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": "<=3.0.3.7", - "openid/php-openid": "<2.3", - "openmage/magento-lts": "<19.4.22|>=20,<20.0.19", - "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", - "orchid/platform": ">=9,<9.4.4|>=14-alpha.4,<14.5", - "oro/commerce": ">=4.1,<5.0.6", - "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", - "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8", - "packbackbooks/lti-1-3-php-library": "<5", - "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": ">=0,<3", - "pagekit/pagekit": "<=1.0.18", - "paragonie/random_compat": "<2", - "passbolt/passbolt_api": "<2.11", - "paypal/merchant-sdk-php": "<3.12", - "pear/archive_tar": "<1.4.14", - "pear/crypt_gpg": "<1.6.7", - "pear/pear": "<=1.10.1", - "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", - "personnummer/personnummer": "<3.0.2", - "phanan/koel": "<5.1.4", - "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", - "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", - "phpmailer/phpmailer": "<6.5", - "phpmussel/phpmussel": ">=1,<1.6", - "phpmyadmin/phpmyadmin": "<5.2.1", - "phpmyfaq/phpmyfaq": "<=3.1.7", - "phpoffice/phpexcel": "<1.8", - "phpoffice/phpspreadsheet": "<1.16", - "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.19", - "phpservermon/phpservermon": "<3.6", - "phpsysinfo/phpsysinfo": "<3.2.5", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3", - "phpwhois/phpwhois": "<=4.2.5", - "phpxmlrpc/extras": "<0.6.1", - "phpxmlrpc/phpxmlrpc": "<4.9.2", - "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.0.3", - "pimcore/customer-management-framework-bundle": "<3.4.1", - "pimcore/data-hub": "<1.2.4", - "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<10.6.4", - "pixelfed/pixelfed": "<=0.11.4", - "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<4.22.3|>=5,<5.2.1|< 4.18.0-ALPHA2|>= 4.0.0-BETA5, < 4.4.2", - "pressbooks/pressbooks": "<5.18", - "prestashop/autoupgrade": ">=4,<4.10.1", - "prestashop/blockwishlist": ">=2,<2.1.1", - "prestashop/contactform": ">=1.0.1,<4.3", - "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.0.4", - "prestashop/productcomments": "<5.0.2", - "prestashop/ps_emailsubscription": "<2.6.1", - "prestashop/ps_facetedsearch": "<3.4.1", - "prestashop/ps_linklist": "<3.1", - "privatebin/privatebin": "<1.4", - "processwire/processwire": "<=3.0.200", - "propel/propel": ">=2-alpha.1,<=2-alpha.7", - "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.7", - "ptrofimov/beanstalk_console": "<1.7.14", - "pusher/pusher-php-server": "<2.2.1", - "pwweb/laravel-core": "<=0.3.6-beta", - "pyrocms/pyrocms": "<=3.9.1", - "rainlab/debugbar-plugin": "<3.1", - "rankmath/seo-by-rank-math": "<=1.0.95", - "rap2hpoutre/laravel-log-viewer": "<0.13", - "react/http": ">=0.7,<1.9", - "really-simple-plugins/complianz-gdpr": "<6.4.2", - "remdex/livehelperchat": "<3.99", - "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": "<3.0.4", - "roots/soil": "<4.1", - "rudloff/alltube": "<3.0.3", - "s-cart/core": "<6.9", - "s-cart/s-cart": "<6.9", - "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": "<1.7.11|>=1.8,<1.8.9", - "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11", - "sensiolabs/connect": "<4.2.3", - "serluck/phpwhois": "<=4.2.6", - "sfroemken/url_redirect": "<=1.2.1", - "sheng/yiicms": "<=1.2", - "shopware/core": "<=6.4.20", - "shopware/platform": "<=6.4.20", - "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17", - "shopware/storefront": "<=6.4.8.1", - "shopxo/shopxo": "<2.2.6", - "showdoc/showdoc": "<2.10.4", - "silverstripe-australia/advancedreports": ">=1,<=2", - "silverstripe/admin": "<1.12.7", - "silverstripe/assets": ">=1,<1.11.1", - "silverstripe/cms": "<4.11.3", - "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<4.12.5", - "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2|>=4.1.1,<4.1.2|>=4.2.2,<4.2.3|= 4.0.0-alpha1", - "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", - "silverstripe/recipe-cms": ">=4.5,<4.5.3", - "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", - "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", - "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", - "silverstripe/subsites": ">=2,<2.6.1", - "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3", - "silverstripe/versioned-admin": ">=1,<1.11.1", - "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", - "simplesamlphp/simplesamlphp": "<1.18.6", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "simplesamlphp/simplesamlphp-module-openid": "<1", - "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", - "simplito/elliptic-php": "<1.0.6", - "sitegeist/fluid-components": "<3.5", - "sjbr/sr-freecap": "<=2.5.2", - "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", - "slim/slim": "<2.6", - "smarty/smarty": "<3.1.48|>=4,<4.3.1", - "snipe/snipe-it": "<=6.0.14|>= 6.0.0-RC-1, <= 6.0.0-RC-5", - "socalnick/scn-social-auth": "<1.15.2", - "socialiteproviders/steam": "<1.1", - "spatie/browsershot": "<3.57.4", - "spipu/html2pdf": "<5.2.4", - "spoon/library": "<1.4.1", - "spoonity/tcpdf": "<6.2.22", - "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<22.2.3", - "statamic/cms": "<4.10", - "stormpath/sdk": ">=0,<9.9.99", - "studio-42/elfinder": "<2.1.62", - "subhh/libconnect": "<7.0.8|>=8,<8.1", - "subrion/cms": "<=4.2.1", - "sukohi/surpass": "<1", - "sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8", - "sumocoders/framework-user-bundle": "<1.4", - "swag/paypal": "<5.4.4", - "swiftmailer/swiftmailer": ">=4,<5.4.5", - "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", - "sylius/grid-bundle": "<1.10.1", - "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", - "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2", - "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", - "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", - "symbiote/silverstripe-seed": "<6.0.3", - "symbiote/silverstripe-versionedfiles": "<=2.0.3", - "symfont/process": ">=0", - "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", - "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3|= 6.0.3|= 5.4.3|= 5.3.14", - "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", - "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", - "symfony/mime": ">=4.3,<4.3.8", - "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/polyfill": ">=1,<1.10", - "symfony/polyfill-php55": ">=1,<1.10", - "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", - "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", - "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2", - "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", - "symfony/translation": ">=2,<2.0.17", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", - "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "t3/dce": ">=2.2,<2.6.2", - "t3g/svg-sanitizer": "<1.0.3", - "tastyigniter/tastyigniter": "<3.3", - "tcg/voyager": "<=1.4", - "tecnickcom/tcpdf": "<6.2.22", - "terminal42/contao-tablelookupwizard": "<3.3.5", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1-beta.1,<2.1.3", - "theonedemon/phpwhois": "<=4.2.5", - "thinkcmf/thinkcmf": "<=5.1.7", - "thorsten/phpmyfaq": "<3.2-beta.2", - "tinymce/tinymce": "<5.10.7|>=6,<6.3.1", - "tinymighty/wiki-seo": "<1.2.2", - "titon/framework": ">=0,<9.9.99", - "tobiasbg/tablepress": "<= 2.0-RC1", - "topthink/framework": "<6.0.14", - "topthink/think": "<=6.1.1", - "topthink/thinkphp": "<=3.2.3", - "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", - "tribalsystems/zenario": "<=9.3.57595", - "truckersmp/phpwhois": "<=4.3.1", - "ttskch/pagination-service-provider": "<1", - "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", - "typo3/cms": "<2.0.5|>=3,<3.0.3|>=6.2,<=6.2.38|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<8.7.51|>=9,<9.5.40|>=10,<10.4.36|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "typo3/html-sanitizer": ">=1,<1.5|>=2,<2.1.1", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", - "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", - "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", - "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", - "ua-parser/uap-php": "<3.8", - "unisharp/laravel-filemanager": "<=2.5.1", - "userfrosting/userfrosting": ">=0.3.1,<4.6.3", - "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", - "uvdesk/community-skeleton": "<=1.1.1", - "vanilla/safecurl": "<0.9.2", - "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", - "vova07/yii2-fileapi-widget": "<0.1.9", - "vrana/adminer": "<4.8.1", - "wallabag/tcpdf": "<6.2.22", - "wallabag/wallabag": "<=2.5.4", - "wanglelecc/laracms": "<=1.0.3", - "web-auth/webauthn-framework": ">=3.3,<3.3.4", - "webbuilders-group/silverstripe-kapost-bridge": "<0.4", - "webcoast/deferred-image-processing": "<1.0.2", - "webklex/laravel-imap": "<5.3", - "webklex/php-imap": "<5.3", - "webpa/webpa": "<3.1.2", - "wikibase/wikibase": "<=1.39.3", - "wikimedia/parsoid": "<0.12.2", - "willdurand/js-translation-bundle": "<2.1.1", - "wintercms/winter": "<1.2.3", - "woocommerce/woocommerce": "<6.6", - "wp-cli/wp-cli": "<2.5", - "wp-graphql/wp-graphql": "<=1.14.5", - "wpanel/wpanel4-cms": "<=4.3.1", - "wpcloud/wp-stateless": "<3.2", - "wwbn/avideo": "<=12.4", - "xataface/xataface": "<3", - "xpressengine/xpressengine": "<3.0.15", - "yeswiki/yeswiki": "<4.1", - "yetiforce/yetiforce-crm": "<=6.4", - "yidashi/yii2cmf": "<=2", - "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": "<1.1.27", - "yiisoft/yii2": "<2.0.38", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.43", - "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<=2.2.4", - "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", - "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", - "yoast-seo-for-typo3/yoast_seo": "<7.2.3", - "yourls/yourls": "<=1.8.2", - "zencart/zencart": "<1.5.8", - "zendesk/zendesk_api_client_php": "<2.2.11", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", - "zendframework/zend-diactoros": "<1.8.4", - "zendframework/zend-feed": "<2.10.3", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": "<2.8.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": "<=3", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zenstruck/collection": "<0.2.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2", - "zoujingli/thinkadmin": "<6.0.22" - }, - "default-branch": true, - "type": "metapackage", + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.8", + "friendsofphp/php-cs-fixer": "^3.17", + "infection/infection": ">=0.10.5", + "league/pipeline": "^0.3 || ^1.0", + "phan/phan": ">=1.1", + "php-coveralls/php-coveralls": "^2.4.1", + "phpstan/phpstan": ">=0.10", + "phpunit/phpunit": ">=9.4", + "vimeo/psalm": ">=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v6.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Pipeline\\": "src/" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" - }, - { - "name": "Ilya Tribusean", - "email": "slash3b@gmail.com", - "role": "maintainer" + "name": "Alexey Kopytko", + "email": "alexey@kopytko.com" } ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "keywords": [ - "dev" - ], + "description": "General-purpose collections pipeline", "support": { - "issues": "https://github.com/Roave/SecurityAdvisories/issues", - "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + "issues": "https://github.com/sanmai/pipeline/issues", + "source": "https://github.com/sanmai/pipeline/tree/v6.10" }, "funding": [ { - "url": "https://github.com/Ocramius", + "url": "https://github.com/sanmai", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", - "type": "tidelift" } ], - "time": "2023-07-21T23:04:36+00:00" + "time": "2024-03-16T01:33:30+00:00" }, { "name": "sebastian/cli-parser", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { @@ -9313,7 +11390,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -9321,7 +11399,7 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", @@ -9513,20 +11591,20 @@ }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -9535,7 +11613,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -9558,7 +11636,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -9566,20 +11645,20 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { @@ -9587,12 +11666,12 @@ }, "require-dev": { "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -9625,7 +11704,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -9633,20 +11712,20 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { @@ -9661,7 +11740,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -9689,7 +11768,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -9697,20 +11776,20 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { @@ -9724,7 +11803,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -9766,7 +11845,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -9774,20 +11854,20 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.1", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { @@ -9821,14 +11901,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -9836,24 +11916,24 @@ "type": "github" } ], - "time": "2023-07-19T07:19:23+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -9885,7 +11965,8 @@ "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/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -9893,7 +11974,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -10179,18 +12260,86 @@ ], "time": "2023-02-07T11:34:05+00:00" }, + { + "name": "spatie/array-to-xml", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f56b220fe2db1ade4c88098d83413ebdfc3bf876", + "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": "^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "spatie/pest-plugin-snapshots": "^1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\ArrayToXml\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" + } + ], + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], + "support": { + "source": "https://github.com/spatie/array-to-xml/tree/3.3.0" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-05-01T10:20:27+00:00" + }, { "name": "spatie/backtrace", - "version": "1.5.3", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", - "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/8373b9d51638292e3bfd736a9c19a654111b4a23", + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23", "shasum": "" }, "require": { @@ -10198,6 +12347,7 @@ }, "require-dev": { "ext-json": "*", + "laravel/serializable-closure": "^1.3", "phpunit/phpunit": "^9.3", "spatie/phpunit-snapshot-assertions": "^4.2", "symfony/var-dumper": "^5.1" @@ -10227,7 +12377,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.5.3" + "source": "https://github.com/spatie/backtrace/tree/1.6.1" }, "funding": [ { @@ -10239,47 +12389,49 @@ "type": "other" } ], - "time": "2023-06-28T12:59:17+00:00" + "time": "2024-04-24T13:22:11+00:00" }, { "name": "spatie/laravel-ray", - "version": "1.32.6", + "version": "1.36.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ray.git", - "reference": "8526dd6c6c838b4bac4e0df2ea7896b688b0d43e" + "reference": "1852faa96e5aa6778ea3401ec3176eee77268718" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/8526dd6c6c838b4bac4e0df2ea7896b688b0d43e", - "reference": "8526dd6c6c838b4bac4e0df2ea7896b688b0d43e", + "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/1852faa96e5aa6778ea3401ec3176eee77268718", + "reference": "1852faa96e5aa6778ea3401ec3176eee77268718", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0", - "illuminate/database": "^7.20|^8.19|^9.0|^10.0", - "illuminate/queue": "^7.20|^8.19|^9.0|^10.0", - "illuminate/support": "^7.20|^8.19|^9.0|^10.0", + "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/database": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/queue": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/support": "^7.20|^8.19|^9.0|^10.0|^11.0", "php": "^7.4|^8.0", + "rector/rector": "^0.19.2|^1.0", "spatie/backtrace": "^1.0", - "spatie/ray": "^1.37", - "symfony/stopwatch": "4.2|^5.1|^6.0", + "spatie/ray": "^1.41.1", + "symfony/stopwatch": "4.2|^5.1|^6.0|^7.0", "zbateson/mail-mime-parser": "^1.3.1|^2.0" }, "require-dev": { "guzzlehttp/guzzle": "^7.3", - "laravel/framework": "^7.20|^8.19|^9.0|^10.0", - "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0", - "pestphp/pest": "^1.22", - "phpstan/phpstan": "^0.12.93", - "phpunit/phpunit": "^9.3", - "spatie/pest-plugin-snapshots": "^1.1" + "laravel/framework": "^7.20|^8.19|^9.0|^10.0|^11.0", + "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0|^9.0", + "pestphp/pest": "^1.22|^2.0", + "phpstan/phpstan": "^1.10.57", + "phpunit/phpunit": "^9.3|^10.1", + "spatie/pest-plugin-snapshots": "^1.1|^2.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.29.x-dev" + "dev-main": "1.x-dev" }, "laravel": { "providers": [ @@ -10312,7 +12464,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-ray/issues", - "source": "https://github.com/spatie/laravel-ray/tree/1.32.6" + "source": "https://github.com/spatie/laravel-ray/tree/1.36.2" }, "funding": [ { @@ -10324,7 +12476,7 @@ "type": "other" } ], - "time": "2023-07-19T12:30:16+00:00" + "time": "2024-05-02T08:26:02+00:00" }, { "name": "spatie/macroable", @@ -10378,16 +12530,16 @@ }, { "name": "spatie/ray", - "version": "1.37.2", + "version": "1.41.2", "source": { "type": "git", "url": "https://github.com/spatie/ray.git", - "reference": "dea16182d4bc9d9833adec7e39fbb3d7b553425d" + "reference": "c44f8cfbf82c69909b505de61d8d3f2d324e93fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ray/zipball/dea16182d4bc9d9833adec7e39fbb3d7b553425d", - "reference": "dea16182d4bc9d9833adec7e39fbb3d7b553425d", + "url": "https://api.github.com/repos/spatie/ray/zipball/c44f8cfbf82c69909b505de61d8d3f2d324e93fc", + "reference": "c44f8cfbf82c69909b505de61d8d3f2d324e93fc", "shasum": "" }, "require": { @@ -10397,8 +12549,8 @@ "ramsey/uuid": "^3.0|^4.1", "spatie/backtrace": "^1.1", "spatie/macroable": "^1.0|^2.0", - "symfony/stopwatch": "^4.0|^5.1|^6.0", - "symfony/var-dumper": "^4.2|^5.1|^6.0" + "symfony/stopwatch": "^4.0|^5.1|^6.0|^7.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0.3" }, "require-dev": { "illuminate/support": "6.x|^8.18|^9.0", @@ -10406,10 +12558,19 @@ "pestphp/pest": "^1.22", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5", + "rector/rector": "^0.19.2", "spatie/phpunit-snapshot-assertions": "^4.2", "spatie/test-time": "^1.2" }, + "bin": [ + "bin/remove-ray.sh" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, "autoload": { "files": [ "src/helpers.php" @@ -10438,7 +12599,7 @@ ], "support": { "issues": "https://github.com/spatie/ray/issues", - "source": "https://github.com/spatie/ray/tree/1.37.2" + "source": "https://github.com/spatie/ray/tree/1.41.2" }, "funding": [ { @@ -10450,27 +12611,30 @@ "type": "other" } ], - "time": "2023-05-17T06:35:47+00:00" + "time": "2024-04-24T14:21:46+00:00" }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "802e87002f919296c9f606457d9fa327a0b3d6b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/802e87002f919296c9f606457d9fa327a0b3d6b2", + "reference": "802e87002f919296c9f606457d9fa327a0b3d6b2", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, + "require-dev": { + "symfony/process": "^6.4|^7.0" + }, "type": "library", "autoload": { "psr-4": { @@ -10497,7 +12661,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/filesystem/tree/v7.1.1" }, "funding": [ { @@ -10513,24 +12677,24 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.3.0", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -10564,7 +12728,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" }, "funding": [ { @@ -10580,20 +12744,20 @@ "type": "tidelift" } ], - "time": "2023-05-12T14:21:09+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "927013f3aac555983a5059aada98e1907d842695" + "reference": "cd4226d140ecd3d0f13d32ed0a4a095ffe871d2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", - "reference": "927013f3aac555983a5059aada98e1907d842695", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/cd4226d140ecd3d0f13d32ed0a4a095ffe871d2f", + "reference": "cd4226d140ecd3d0f13d32ed0a4a095ffe871d2f", "shasum": "" }, "require": { @@ -10607,9 +12771,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10647,7 +12808,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.29.0" }, "funding": [ { @@ -10663,20 +12824,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { @@ -10684,9 +12845,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10726,7 +12884,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -10742,24 +12900,24 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.3.0", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -10788,7 +12946,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" }, "funding": [ { @@ -10804,32 +12962,31 @@ "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + "reference": "fa34c77015aa6720469db7003567b9f772492bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "url": "https://api.github.com/repos/symfony/yaml/zipball/fa34c77015aa6720469db7003567b9f772492bf2", + "reference": "fa34c77015aa6720469db7003567b9f772492bf2", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -10860,7 +13017,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" + "source": "https://github.com/symfony/yaml/tree/v7.1.1" }, "funding": [ { @@ -10876,32 +13033,32 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.7.4", + "version": "0.8.4", "source": { "type": "git", "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2" + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2", - "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", "shasum": "" }, "require": { - "nikic/php-parser": "^4.15.4", + "nikic/php-parser": "^4.18.0 || ^5.0.0", "php": "^8.1.0", "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^10.1.1", - "symfony/finder": "^6.2.7" + "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" }, "require-dev": { - "laravel/pint": "^1.9.0", - "phpstan/phpstan": "^1.10.13" + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" }, "type": "library", "autoload": { @@ -10933,22 +13090,161 @@ ], "support": { "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.7.4" + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" + }, + "time": "2024-01-05T14:10:56+00:00" + }, + { + "name": "thecodingmachine/safe", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "^3.2", + "thecodingmachine/phpstan-strict-rules": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } }, - "time": "2023-08-03T06:50:14+00:00" + "autoload": { + "files": [ + "deprecated/apc.php", + "deprecated/array.php", + "deprecated/datetime.php", + "deprecated/libevent.php", + "deprecated/misc.php", + "deprecated/password.php", + "deprecated/mssql.php", + "deprecated/stats.php", + "deprecated/strings.php", + "lib/special_cases.php", + "deprecated/mysqli.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gettext.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/mysql.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ], + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "deprecated/Exceptions/", + "generated/Exceptions/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" + }, + "time": "2023-04-05T11:54:14+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -10977,7 +13273,7 @@ "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" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -10985,35 +13281,149 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" + }, + { + "name": "vimeo/psalm", + "version": "5.24.0", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "462c80e31c34e58cc4f750c656be3927e80e550e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/462c80e31c34e58cc4f750c656be3927e80e550e", + "reference": "462c80e31c34e58cc4f750c656be3927e80e550e", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.4.2", + "amphp/byte-stream": "^1.5", + "composer-runtime-api": "^2", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0 || ^3.0", + "dnoegel/php-xdg-base-dir": "^0.1.1", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "nikic/php-parser": "^4.16", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "spatie/array-to-xml": "^2.17.0 || ^3.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" + }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, + "provide": { + "psalm/psalm": "self.version" + }, + "require-dev": { + "amphp/phpunit-util": "^2.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.9", + "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.6", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.6", + "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-curl": "In order to send data to shepherd", + "ext-igbinary": "^2.0.5 is required, used to serialize caching data" + }, + "bin": [ + "psalm", + "psalm-language-server", + "psalm-plugin", + "psalm-refactor", + "psalter" + ], + "type": "project", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev", + "dev-4.x": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psalm\\": "src/Psalm/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown" + } + ], + "description": "A static analysis tool for finding errors in PHP applications", + "keywords": [ + "code", + "inspection", + "php", + "static analysis" + ], + "support": { + "docs": "https://psalm.dev/docs", + "issues": "https://github.com/vimeo/psalm/issues", + "source": "https://github.com/vimeo/psalm" + }, + "time": "2024-05-01T19:32:08+00:00" }, { "name": "wayofdev/cs-fixer-config", - "version": "v1.2.60", + "version": "v1.5.1", "source": { "type": "git", "url": "https://github.com/wayofdev/php-cs-fixer-config.git", - "reference": "8b61005525fea532c337ede89446ed0945733df7" + "reference": "1edacc13db903e85ab42d5ff7d5fc04d11663d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wayofdev/php-cs-fixer-config/zipball/8b61005525fea532c337ede89446ed0945733df7", - "reference": "8b61005525fea532c337ede89446ed0945733df7", + "url": "https://api.github.com/repos/wayofdev/php-cs-fixer-config/zipball/1edacc13db903e85ab42d5ff7d5fc04d11663d8e", + "reference": "1edacc13db903e85ab42d5ff7d5fc04d11663d8e", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^3.14.4", + "friendsofphp/php-cs-fixer": "^3.57", "php": "^8.1" }, "require-dev": { - "ergebnis/composer-normalize": "^2.30.2", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.10.5", - "phpstan/phpstan-deprecation-rules": "^1.1.2", - "phpstan/phpstan-phpunit": "^1.3.10", - "phpstan/phpstan-strict-rules": "^1.5.0", - "phpunit/phpunit": "^10.0.14", - "roave/security-advisories": "dev-latest" + "ergebnis/phpunit-slow-test-detector": "^2.14", + "pestphp/pest": "^2.34", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-deprecation-rules": "^1.2", + "phpstan/phpstan-phpunit": "^1.4", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "~0.19.0", + "rector/rector": "^1.1", + "roave/infection-static-analysis-plugin": "^1.35", + "vimeo/psalm": "^5.23.1" }, "type": "library", "extra": { @@ -11039,6 +13449,17 @@ ], "description": "Package adds custom rule-sets to php-cs-fixer", "homepage": "https://wayof.dev", + "keywords": [ + "code-quality", + "code-standards", + "code-style", + "configuration", + "php", + "php-cs-fixer", + "php-cs-fixer-config", + "php-cs-fixer-rules", + "static-analysis" + ], "support": { "issues": "https://github.com/wayofdev/php-cs-fixer-config/issues", "source": "https://github.com/wayofdev/php-cs-fixer-config" @@ -11049,20 +13470,20 @@ "type": "github" } ], - "time": "2023-09-13T10:11:24+00:00" + "time": "2024-06-05T19:23:33+00:00" }, { "name": "zbateson/mail-mime-parser", - "version": "2.4.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/zbateson/mail-mime-parser.git", - "reference": "20b3e48eb799537683780bc8782fbbe9bc25934a" + "reference": "ff49e02f6489b38f7cc3d1bd3971adc0f872569c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/20b3e48eb799537683780bc8782fbbe9bc25934a", - "reference": "20b3e48eb799537683780bc8782fbbe9bc25934a", + "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/ff49e02f6489b38f7cc3d1bd3971adc0f872569c", + "reference": "ff49e02f6489b38f7cc3d1bd3971adc0f872569c", "shasum": "" }, "require": { @@ -11124,20 +13545,20 @@ "type": "github" } ], - "time": "2023-02-14T22:58:03+00:00" + "time": "2024-04-28T00:58:54+00:00" }, { "name": "zbateson/mb-wrapper", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/zbateson/mb-wrapper.git", - "reference": "faf35dddfacfc5d4d5f9210143eafd7a7fe74334" + "reference": "09a8b77eb94af3823a9a6623dcc94f8d988da67f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/faf35dddfacfc5d4d5f9210143eafd7a7fe74334", - "reference": "faf35dddfacfc5d4d5f9210143eafd7a7fe74334", + "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/09a8b77eb94af3823a9a6623dcc94f8d988da67f", + "reference": "09a8b77eb94af3823a9a6623dcc94f8d988da67f", "shasum": "" }, "require": { @@ -11148,7 +13569,7 @@ "require-dev": { "friendsofphp/php-cs-fixer": "*", "phpstan/phpstan": "*", - "phpunit/phpunit": "<=9.0" + "phpunit/phpunit": "<10.0" }, "suggest": { "ext-iconv": "For best support/performance", @@ -11185,7 +13606,7 @@ ], "support": { "issues": "https://github.com/zbateson/mb-wrapper/issues", - "source": "https://github.com/zbateson/mb-wrapper/tree/1.2.0" + "source": "https://github.com/zbateson/mb-wrapper/tree/1.2.1" }, "funding": [ { @@ -11193,7 +13614,7 @@ "type": "github" } ], - "time": "2023-01-11T23:05:44+00:00" + "time": "2024-03-18T04:31:04+00:00" }, { "name": "zbateson/stream-decorators", @@ -11261,14 +13682,15 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "roave/security-advisories": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "^8.2" }, "platform-dev": [], + "platform-overrides": { + "php": "8.2.17" + }, "plugin-api-version": "2.6.0" } diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..9c30313 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,43 @@ +--- + +services: + app: + image: wayofdev/php-dev:8.3-cli-alpine-latest + container_name: ${COMPOSE_PROJECT_NAME}-app + restart: on-failure + networks: + - default + volumes: + - ./:/app:rw + - ~/.composer:/.composer + env_file: + - .env + environment: + PHIVE_HOME: /app/.phive + + pgsql: + image: wayofdev/postgres:15-alpine-latest + container_name: ${COMPOSE_PROJECT_NAME}-pgsql + restart: on-failure + networks: + - default + ports: + - '${DB_PGSQL_FORWARD_PORT:-15432}:5432' + env_file: + - .env + environment: + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_DB: ${DB_DATABASE} + volumes: + - pgsql-data:/var/lib/postgresql/data:cached + +volumes: + pgsql-data: + name: ${COMPOSE_PROJECT_NAME}-pgsql-data + +networks: + default: + name: project.${COMPOSE_PROJECT_NAME} + +... diff --git a/infection.json.dist b/infection.json.dist new file mode 100644 index 0000000..09b5016 --- /dev/null +++ b/infection.json.dist @@ -0,0 +1,20 @@ +{ + "ignoreMsiWithNoMutations": true, + "logs": { + "text": ".build/infection/infection-log.txt", + "stryker": { + "report": "master" + } + }, + "minCoveredMsi": 55, + "minMsi": 55, + "phpUnit": { + "configDir": "./" + }, + "source": { + "directories": [ + "src" + ] + }, + "timeout": 10 +} diff --git a/package.json b/package.json deleted file mode 100644 index 65ae2ea..0000000 --- a/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "version": "1.2.60", - "repository": { - "url": "https://github.com/wayofdev/laravel-symfony-serializer.git" - } -} diff --git a/pest.xml.dist b/pest.xml.dist new file mode 100644 index 0000000..953282e --- /dev/null +++ b/pest.xml.dist @@ -0,0 +1,26 @@ + + + + + + + + tests/src/Arch + + + + + src + + + diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index e69de29..aab4991 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -0,0 +1,2 @@ +parameters: + ignoreErrors: [] diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 242a8c4..87a4bd5 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -2,14 +2,15 @@ includes: - phpstan-baseline.neon parameters: - level: 5 + level: 6 paths: - config/ - src/ - tests/ - - checkMissingIterableValueType: false + - .php-cs-fixer.dist.php + - rector.php + excludePaths: + - tests/src/Arch checkOctaneCompatibility: true checkModelProperties: true - tmpDir: .build/phpstan/ diff --git a/phpunit.xml.dist b/phpunit.xml.dist index fb14aae..16fc71a 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -6,10 +6,16 @@ cacheResultFile=".build/phpunit/result.cache" failOnWarning="true" failOnRisky="true" - beStrictAboutOutputDuringTests="true"> + executionOrder="random" + stderr="true" + beStrictAboutOutputDuringTests="true" +> + + + - - tests + + tests/src/Functional @@ -24,7 +30,7 @@ - src + src diff --git a/psalm-baseline.xml b/psalm-baseline.xml new file mode 100644 index 0000000..ebe98b7 --- /dev/null +++ b/psalm-baseline.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name = $name]]> + + + aliases]]> + + + name]]> + + + help]]> + + + aliases]]> + + + name]]> + + + diff --git a/psalm.xml b/psalm.xml new file mode 100644 index 0000000..dddcd0e --- /dev/null +++ b/psalm.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/rector.php b/rector.php new file mode 100644 index 0000000..dcb13af --- /dev/null +++ b/rector.php @@ -0,0 +1,32 @@ +cacheDirectory(__DIR__ . '/.build/rector/'); + + $rectorConfig->import(__DIR__ . '/vendor/fakerphp/faker/rector-migrate.php'); + + $rectorConfig->paths([ + __DIR__ . '/config/', + __DIR__ . '/src/', + __DIR__ . '/tests/', + __DIR__ . '/.php-cs-fixer.dist.php', + __DIR__ . '/rector.php', + ]); + + $rectorConfig->phpVersion(ValueObject\PhpVersion::PHP_82); + + $rectorConfig->rules([ + Php81\Rector\Property\ReadOnlyPropertyRector::class, + ]); + + $rectorConfig->sets([ + PHPUnit\Set\PHPUnitSetList::PHPUNIT_100, + ]); +}; diff --git a/src/Bridge/Laravel/Providers/SerializerServiceProvider.php b/src/Bridge/Laravel/Providers/SerializerServiceProvider.php index e9bd986..b2b4c5e 100644 --- a/src/Bridge/Laravel/Providers/SerializerServiceProvider.php +++ b/src/Bridge/Laravel/Providers/SerializerServiceProvider.php @@ -57,7 +57,7 @@ public function register(): void private function registerConfig(): void { - $this->app->singleton(ConfigRepository::class, function (Application $app) { + $this->app->singleton(ConfigRepository::class, static function (Application $app) { /** @var Repository $config */ $config = $app['config']; @@ -89,12 +89,12 @@ private function registerNormalizersRegistry(): void private function registerEncodersRegistry(): void { - $this->app->singleton(EncodersRegistryInterface::class, function (Application $app): EncodersRegistryInterface { + $this->app->singleton(EncodersRegistryInterface::class, static function (Application $app): EncodersRegistryInterface { $config = $app->make(ConfigRepository::class); return new EncodersRegistry( array_map( - fn (string|EncoderInterface $encoder) => $encoder instanceof EncoderInterface ? $encoder : $app->get($encoder), + static fn (string|EncoderInterface $encoder) => $encoder instanceof EncoderInterface ? $encoder : $app->get($encoder), $config->encoders() ) ); @@ -103,7 +103,7 @@ private function registerEncodersRegistry(): void private function registerSerializerRegistry(): void { - $this->app->singleton(SerializerRegistryInterface::class, function (Application $app): SerializerRegistryInterface { + $this->app->singleton(SerializerRegistryInterface::class, static function (Application $app): SerializerRegistryInterface { // $config = $app->make(ConfigRepository::class); $serializer = $app->make(SymfonySerializerInterface::class); @@ -123,14 +123,14 @@ private function registerSerializerRegistry(): void private function registerLoader(): void { - $this->app->singleton(LoaderInterface::class, function (Application $app): LoaderInterface { + $this->app->singleton(LoaderInterface::class, static function (Application $app): LoaderInterface { return $app->make(ConfigRepository::class)->metadataLoader(); }); } private function registerSerializerManager(): void { - $this->app->singleton(SerializerManager::class, function (Application $app): SerializerManager { + $this->app->singleton(SerializerManager::class, static function (Application $app): SerializerManager { /** @var Config $config */ $config = $app->make(ConfigRepository::class); $serializers = $app->make(SerializerRegistryInterface::class); @@ -143,7 +143,7 @@ private function registerSerializerManager(): void private function registerSymfonySerializer(): void { - $this->app->singleton(SymfonySerializerInterface::class, function (Application $app): SymfonySerializer { + $this->app->singleton(SymfonySerializerInterface::class, static function (Application $app): SymfonySerializer { $normalizers = $app->make(NormalizersRegistryInterface::class); $encoders = $app->make(EncodersRegistryInterface::class); diff --git a/src/Config.php b/src/Config.php index 6715cc5..3039af3 100644 --- a/src/Config.php +++ b/src/Config.php @@ -22,11 +22,18 @@ final class Config implements ConfigRepository 'encoders', ]; + public function __construct( + private readonly string $defaultSerializer, + private readonly array $normalizers, + private readonly array $encoders + ) { + } + public static function fromArray(array $config): self { $missingAttributes = array_diff(self::REQUIRED_FIELDS, array_keys($config)); - if ([] !== $missingAttributes) { + if ($missingAttributes !== []) { throw MissingRequiredAttributes::fromArray( implode(',', $missingAttributes) ); @@ -39,13 +46,6 @@ public static function fromArray(array $config): self ); } - public function __construct( - private readonly string $defaultSerializer, - private readonly array $normalizers, - private readonly array $encoders - ) { - } - public function defaultSerializer(): string { return $this->defaultSerializer ?? 'json'; diff --git a/src/Contracts/SerializerInterface.php b/src/Contracts/SerializerInterface.php index f480ba9..8cbffbc 100644 --- a/src/Contracts/SerializerInterface.php +++ b/src/Contracts/SerializerInterface.php @@ -10,7 +10,7 @@ interface SerializerInterface { public function serialize(mixed $payload): string|Stringable; - public function unserialize(string|Stringable $payload, string|object $type = null): mixed; + public function unserialize(string|Stringable $payload, string|object|null $type = null): mixed; - public function normalize(mixed $data, string $format = null, array $context = []); + public function normalize(mixed $data, ?string $format = null, array $context = []); } diff --git a/src/EncodersRegistry.php b/src/EncodersRegistry.php index 68b862c..172591f 100644 --- a/src/EncodersRegistry.php +++ b/src/EncodersRegistry.php @@ -24,7 +24,7 @@ class EncodersRegistry implements EncodersRegistryInterface */ public function __construct(array $encoders = []) { - if ([] === $encoders) { + if ($encoders === []) { $this->registerDefaultEncoders(); } else { foreach ($encoders as $encoder) { diff --git a/src/HttpCode.php b/src/HttpCode.php index 11b5e92..a7669da 100644 --- a/src/HttpCode.php +++ b/src/HttpCode.php @@ -7,66 +7,128 @@ interface HttpCode { public const HTTP_CONTINUE = 100; + public const HTTP_SWITCHING_PROTOCOLS = 101; + public const HTTP_PROCESSING = 102; + public const HTTP_EARLY_HINTS = 103; + public const HTTP_OK = 200; + public const HTTP_CREATED = 201; + public const HTTP_ACCEPTED = 202; + public const HTTP_NON_AUTHORITATIVE_INFORMATION = 203; + public const HTTP_NO_CONTENT = 204; + public const HTTP_RESET_CONTENT = 205; + public const HTTP_PARTIAL_CONTENT = 206; + public const HTTP_MULTI_STATUS = 207; + public const HTTP_ALREADY_REPORTED = 208; + public const HTTP_IM_USED = 226; + public const HTTP_MULTIPLE_CHOICES = 300; + public const HTTP_MOVED_PERMANENTLY = 301; + public const HTTP_FOUND = 302; + public const HTTP_SEE_OTHER = 303; + public const HTTP_NOT_MODIFIED = 304; + public const HTTP_USE_PROXY = 305; + public const HTTP_RESERVED = 306; + public const HTTP_TEMPORARY_REDIRECT = 307; + public const HTTP_PERMANENTLY_REDIRECT = 308; + public const HTTP_BAD_REQUEST = 400; + public const HTTP_UNAUTHORIZED = 401; + public const HTTP_PAYMENT_REQUIRED = 402; + public const HTTP_FORBIDDEN = 403; + public const HTTP_NOT_FOUND = 404; + public const HTTP_METHOD_NOT_ALLOWED = 405; + public const HTTP_NOT_ACCEPTABLE = 406; + public const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407; + public const HTTP_REQUEST_TIMEOUT = 408; + public const HTTP_CONFLICT = 409; + public const HTTP_GONE = 410; + public const HTTP_LENGTH_REQUIRED = 411; + public const HTTP_PRECONDITION_FAILED = 412; + public const HTTP_REQUEST_ENTITY_TOO_LARGE = 413; + public const HTTP_REQUEST_URI_TOO_LONG = 414; + public const HTTP_UNSUPPORTED_MEDIA_TYPE = 415; + public const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416; + public const HTTP_EXPECTATION_FAILED = 417; + public const HTTP_I_AM_A_TEAPOT = 418; + public const HTTP_MISDIRECTED_REQUEST = 421; + public const HTTP_UNPROCESSABLE_ENTITY = 422; + public const HTTP_LOCKED = 423; + public const HTTP_FAILED_DEPENDENCY = 424; + public const HTTP_TOO_EARLY = 425; + public const HTTP_UPGRADE_REQUIRED = 426; + public const HTTP_PRECONDITION_REQUIRED = 428; + public const HTTP_TOO_MANY_REQUESTS = 429; + public const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; + public const HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451; + public const HTTP_INTERNAL_SERVER_ERROR = 500; + public const HTTP_NOT_IMPLEMENTED = 501; + public const HTTP_BAD_GATEWAY = 502; + public const HTTP_SERVICE_UNAVAILABLE = 503; + public const HTTP_GATEWAY_TIMEOUT = 504; + public const HTTP_VERSION_NOT_SUPPORTED = 505; + public const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506; + public const HTTP_INSUFFICIENT_STORAGE = 507; + public const HTTP_LOOP_DETECTED = 508; + public const HTTP_NOT_EXTENDED = 510; + public const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511; } diff --git a/src/Normalizers/RamseyUuidNormalizer.php b/src/Normalizers/RamseyUuidNormalizer.php index 8449653..9cc2c04 100644 --- a/src/Normalizers/RamseyUuidNormalizer.php +++ b/src/Normalizers/RamseyUuidNormalizer.php @@ -20,17 +20,17 @@ final class RamseyUuidNormalizer implements NormalizerInterface, DenormalizerInt /** * @phan-param-override UuidInterface $object */ - public function normalize(mixed $object, string $format = null, array $context = []): string + public function normalize(mixed $object, ?string $format = null, array $context = []): string { return $object->toString(); } - public function supportsNormalization(mixed $data, string $format = null): bool + public function supportsNormalization(mixed $data, ?string $format = null): bool { return $data instanceof UuidInterface; } - public function denormalize(mixed $data, string $type, string $format = null, array $context = []): UuidInterface + public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): UuidInterface { try { return Uuid::fromString($data); @@ -41,7 +41,7 @@ public function denormalize(mixed $data, string $type, string $format = null, ar } } - public function supportsDenormalization(mixed $data, string $type, string $format = null): bool + public function supportsDenormalization(mixed $data, string $type, ?string $format = null): bool { return is_string($data) && is_a($type, UuidInterface::class, true) && Uuid::isValid($data); } diff --git a/src/Serializer.php b/src/Serializer.php index 5bf2e2c..a5921eb 100644 --- a/src/Serializer.php +++ b/src/Serializer.php @@ -28,10 +28,10 @@ public function serialize(mixed $payload, array $context = []): string public function unserialize( Stringable|string $payload, - object|string $type = null, + object|string|null $type = null, array $context = [] ): mixed { - if (null === $type) { + if ($type === null) { throw new UnsupportedTypeException(); } @@ -48,23 +48,23 @@ public function unserialize( */ public function normalize( mixed $data, - string $format = null, + ?string $format = null, array $context = [] ): array|string|int|float|bool|ArrayObject|null { return $this->serializer->normalize($data, $format, $context); } - public function denormalize(mixed $data, string $type, string $format = null, array $context = []): mixed + public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): mixed { return $this->serializer->denormalize($data, $type, $format, $context); } - public function supportsNormalization(mixed $data, string $format = null, array $context = []): bool + public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { return $this->serializer->supportsNormalization($data, $format, $context); } - public function supportsDenormalization(mixed $data, string $type, string $format = null, array $context = []): bool + public function supportsDenormalization(mixed $data, string $type, ?string $format = null, array $context = []): bool { return $this->serializer->supportsDenormalization($data, $type, $format, $context); } diff --git a/src/SerializerManager.php b/src/SerializerManager.php index f614cb0..23ef59a 100644 --- a/src/SerializerManager.php +++ b/src/SerializerManager.php @@ -15,25 +15,25 @@ public function __construct( ) { } - public function getSerializer(string $format = null): SerializerInterface + public function getSerializer(?string $format = null): SerializerInterface { return $this->serializers->get($format ?? $this->defaultFormat); } - public function serialize(mixed $payload, string $format = null): string|Stringable + public function serialize(mixed $payload, ?string $format = null): string|Stringable { return $this->getSerializer($format ?? $this->defaultFormat)->serialize($payload); } public function unserialize( string|Stringable $payload, - string|object $type = null, - string $format = null + string|object|null $type = null, + ?string $format = null ): mixed { return $this->getSerializer($format ?? $this->defaultFormat)->unserialize($payload, $type); } - public function normalize(mixed $data, string $format = null, array $context = []) + public function normalize(mixed $data, ?string $format = null, array $context = []) { return $this->getSerializer($format ?? $this->defaultFormat)->normalize($data, $format, $context); } diff --git a/tests/app/Item.php b/tests/app/Item.php index 571554e..87ed254 100644 --- a/tests/app/Item.php +++ b/tests/app/Item.php @@ -22,6 +22,11 @@ final class Item #[Groups(['private'])] private string $onlyForAdmin = 'secret'; + public function __construct() + { + $this->id = Uuid::fromString('0cd74c72-8920-4e4e-86c3-19fdd5103514'); + } + public function id(): UuidInterface { return $this->id; @@ -41,9 +46,4 @@ public function onlyForAdmin(): string { return $this->onlyForAdmin; } - - public function __construct() - { - $this->id = Uuid::fromString('0cd74c72-8920-4e4e-86c3-19fdd5103514'); - } } diff --git a/tests/app/Object/Product.php b/tests/app/Object/Product.php index cc7083c..286cddc 100644 --- a/tests/app/Object/Product.php +++ b/tests/app/Object/Product.php @@ -10,17 +10,11 @@ class Product { public function __construct( - #[Groups('group1')] - public int $id, - #[Groups('group1')] - public string $title, - #[Groups('group2')] - public float $price, - #[Groups('group2')] - public bool $active, - #[Groups('group3')] - #[SerializedName('product_views')] - public int $views + #[Groups('group1')] public int $id, + #[Groups('group1')] public string $title, + #[Groups('group2')] public float $price, + #[Groups('group2')] public bool $active, + #[Groups('group3')] #[SerializedName('product_views')] public int $views ) { } } diff --git a/tests/app/Response.php b/tests/app/Response.php index 7f1d024..3464c2e 100644 --- a/tests/app/Response.php +++ b/tests/app/Response.php @@ -9,11 +9,6 @@ final class Response extends ArrayIterator { - public static function create(array $items): self - { - return new self($items); - } - private function __construct(array $items) { Assert::allIsInstanceOf($items, Item::class); @@ -21,4 +16,9 @@ private function __construct(array $items) parent::__construct($items); } + + public static function create(array $items): self + { + return new self($items); + } } diff --git a/tests/src/Bridge/Laravel/Providers/SerializerServiceProviderTest.php b/tests/src/Bridge/Laravel/Providers/SerializerServiceProviderTest.php index 5d22808..9b0c16c 100644 --- a/tests/src/Bridge/Laravel/Providers/SerializerServiceProviderTest.php +++ b/tests/src/Bridge/Laravel/Providers/SerializerServiceProviderTest.php @@ -26,7 +26,9 @@ public function it_registers_config(): void $this::assertInstanceOf(Config::class, $this->app->make(ConfigRepository::class)); } - /** @test */ + /** + * @test + */ public function it_registers_normalizers_registry(): void { $this::assertTrue($this->app->bound(NormalizersRegistryInterface::class)); @@ -34,7 +36,9 @@ public function it_registers_normalizers_registry(): void $this::assertInstanceOf(NormalizersRegistry::class, $this->app->make(NormalizersRegistryInterface::class)); } - /** @test */ + /** + * @test + */ public function it_registers_encoders_registry(): void { $this::assertTrue($this->app->bound(EncodersRegistryInterface::class)); @@ -42,7 +46,9 @@ public function it_registers_encoders_registry(): void $this::assertInstanceOf(EncodersRegistry::class, $this->app->make(EncodersRegistryInterface::class)); } - /** @test */ + /** + * @test + */ public function it_registers_serializer(): void { $this::assertTrue($this->app->bound(SerializerInterface::class)); diff --git a/tests/src/Pest/ExampleTest.php b/tests/src/Pest/ExampleTest.php index f9c207b..7b2a4e6 100644 --- a/tests/src/Pest/ExampleTest.php +++ b/tests/src/Pest/ExampleTest.php @@ -2,6 +2,6 @@ declare(strict_types=1); -it('can test', function (): void { +it('can test', static function (): void { expect(true)->toBeTrue(); }); diff --git a/tests/src/SerializerManagerTest.php b/tests/src/SerializerManagerTest.php index fc0adf6..78be9c2 100644 --- a/tests/src/SerializerManagerTest.php +++ b/tests/src/SerializerManagerTest.php @@ -76,7 +76,7 @@ public function get_serializer(): void * @test */ #[DataProvider('serializeDataProvider')] - public function serialize(mixed $payload, string $expected, string $format = null): void + public function serialize(mixed $payload, string $expected, ?string $format = null): void { $this::assertSame($expected, $this->serializer->serialize($payload, $format)); } @@ -97,7 +97,7 @@ public function bad_serializer(): void * @test */ #[DataProvider('unserializeDataProvider')] - public function unserialize(string|Stringable $payload, mixed $expected, string $format = null): void + public function unserialize(string|Stringable $payload, mixed $expected, ?string $format = null): void { $this::assertSame($expected, $this->serializer->unserialize($payload, format: $format)); } From b05333d464805aa1dd535fec77662d0ff6dcbf9f Mon Sep 17 00:00:00 2001 From: lotyp Date: Thu, 13 Jun 2024 21:57:01 +0300 Subject: [PATCH 02/10] feat: support for laravel 11.x and symfony 7.x --- README.md | 50 ++++++++++++------- composer-require-checker.json | 3 +- composer.json | 5 +- infection.json.dist | 4 +- src/Config.php | 9 ++-- src/Normalizers/RamseyUuidNormalizer.php | 21 ++++++-- tests/app/Item.php | 2 +- tests/app/NestedObjects/City.php | 2 +- tests/app/NestedObjects/Country.php | 2 +- tests/app/Object/Author.php | 2 +- tests/app/Object/Post.php | 2 +- tests/app/Object/Product.php | 2 +- tests/app/Object/User.php | 2 +- tests/app/Response.php | 2 +- tests/src/Arch/DebugTest.php | 8 +++ .../SerializerServiceProviderTest.php | 4 +- .../{ => Functional}/EncodersRegistryTest.php | 2 +- .../Normalizers/RamseyUuidNormalizerTest.php | 6 +-- .../NormalizersRegistryTest.php | 2 +- .../{ => Functional}/ResponseFactoryTest.php | 10 ++-- .../SerializerManagerTest.php | 2 +- tests/src/{ => Functional}/SerializerTest.php | 12 ++--- tests/src/{ => Functional}/TestCase.php | 2 +- tests/src/Pest.php | 7 --- tests/src/Pest/ExampleTest.php | 7 --- 25 files changed, 98 insertions(+), 72 deletions(-) create mode 100644 tests/src/Arch/DebugTest.php rename tests/src/{ => Functional}/Bridge/Laravel/Providers/SerializerServiceProviderTest.php (94%) rename tests/src/{ => Functional}/EncodersRegistryTest.php (98%) rename tests/src/{ => Functional}/Normalizers/RamseyUuidNormalizerTest.php (93%) rename tests/src/{ => Functional}/NormalizersRegistryTest.php (99%) rename tests/src/{ => Functional}/ResponseFactoryTest.php (94%) rename tests/src/{ => Functional}/SerializerManagerTest.php (98%) rename tests/src/{ => Functional}/SerializerTest.php (96%) rename tests/src/{ => Functional}/TestCase.php (94%) delete mode 100644 tests/src/Pest.php delete mode 100644 tests/src/Pest/ExampleTest.php diff --git a/README.md b/README.md index a8ea499..6a9cb92 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,37 @@ -
- -

- -
- -
+

+
+
+ + + WayOfDev Logo + + +
+

+ +

+ Build
+ Build Status +

+

+ Project
+ Total Downloads + Latest Stable Version + Commits since latest release + PHP Version Require +

+

+ Quality
+ Codecov + Mutation testing badge + PHP Stan Level 6 of 9 +

+

+ Community
+ Discord + Follow on Twitter (X) +

-
-Build Status -Total Downloads -Latest Stable Version -Software License -Commits since latest release -

# Laravel Symfony Serializer diff --git a/composer-require-checker.json b/composer-require-checker.json index 21af376..2f6be44 100644 --- a/composer-require-checker.json +++ b/composer-require-checker.json @@ -3,6 +3,7 @@ "Illuminate\\Support\\ServiceProvider", "Illuminate\\Console\\Command", "config_path", - "Symfony\\Component\\Yaml\\Dumper" + "Symfony\\Component\\Yaml\\Dumper", + "Illuminate\\Http\\Response" ] } diff --git a/composer.json b/composer.json index 8b2ba39..b5100c5 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,6 @@ }, "require": { "php": "^8.2", - "doctrine/annotations": "^2.0", "illuminate/http": "^11.0", "symfony/property-access": "^7.1", "symfony/serializer": "^7.1", @@ -68,8 +67,8 @@ }, "autoload-dev": { "psr-4": { - "WayOfDev\\Serializer\\App\\": "tests/app/", - "WayOfDev\\Serializer\\Tests\\": "tests/src/" + "WayOfDev\\App\\": "tests/app/", + "WayOfDev\\Tests\\": "tests/src/" } }, "config": { diff --git a/infection.json.dist b/infection.json.dist index 09b5016..f51f323 100644 --- a/infection.json.dist +++ b/infection.json.dist @@ -6,8 +6,8 @@ "report": "master" } }, - "minCoveredMsi": 55, - "minMsi": 55, + "minCoveredMsi": 90, + "minMsi": 85, "phpUnit": { "configDir": "./" }, diff --git a/src/Config.php b/src/Config.php index 3039af3..b446ecb 100644 --- a/src/Config.php +++ b/src/Config.php @@ -4,8 +4,7 @@ namespace WayOfDev\Serializer; -use Doctrine\Common\Annotations\AnnotationReader; -use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader; +use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader; use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; use WayOfDev\Serializer\Contracts\ConfigRepository; use WayOfDev\Serializer\Exceptions\MissingRequiredAttributes; @@ -63,6 +62,10 @@ public function encoders(): array public function metadataLoader(): LoaderInterface { - return new AnnotationLoader(new AnnotationReader()); + if (! empty($this->config['metadataLoader'])) { + return $this->config['metadataLoader']; + } + + return new AttributeLoader(); } } diff --git a/src/Normalizers/RamseyUuidNormalizer.php b/src/Normalizers/RamseyUuidNormalizer.php index 9cc2c04..717baad 100644 --- a/src/Normalizers/RamseyUuidNormalizer.php +++ b/src/Normalizers/RamseyUuidNormalizer.php @@ -4,6 +4,7 @@ namespace WayOfDev\Serializer\Normalizers; +use ArrayObject; use InvalidArgumentException; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; @@ -18,14 +19,16 @@ final class RamseyUuidNormalizer implements NormalizerInterface, DenormalizerInterface { /** - * @phan-param-override UuidInterface $object + * @param UuidInterface $object + * + * @psalm-suppress MoreSpecificImplementedParamType */ - public function normalize(mixed $object, ?string $format = null, array $context = []): string + public function normalize(mixed $object, ?string $format = null, array $context = []): array|string|int|float|bool|ArrayObject|null { return $object->toString(); } - public function supportsNormalization(mixed $data, ?string $format = null): bool + public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { return $data instanceof UuidInterface; } @@ -41,8 +44,18 @@ public function denormalize(mixed $data, string $type, ?string $format = null, a } } - public function supportsDenormalization(mixed $data, string $type, ?string $format = null): bool + public function supportsDenormalization(mixed $data, string $type, ?string $format = null, array $context = []): bool { return is_string($data) && is_a($type, UuidInterface::class, true) && Uuid::isValid($data); } + + /** + * @return array + */ + public function getSupportedTypes(?string $format): array + { + return [ + UuidInterface::class => true, + ]; + } } diff --git a/tests/app/Item.php b/tests/app/Item.php index 87ed254..2480fd8 100644 --- a/tests/app/Item.php +++ b/tests/app/Item.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App; +namespace WayOfDev\App; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; diff --git a/tests/app/NestedObjects/City.php b/tests/app/NestedObjects/City.php index d33318d..0e0c288 100644 --- a/tests/app/NestedObjects/City.php +++ b/tests/app/NestedObjects/City.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App\NestedObjects; +namespace WayOfDev\App\NestedObjects; use DateTimeZone; use JsonSerializable; diff --git a/tests/app/NestedObjects/Country.php b/tests/app/NestedObjects/Country.php index 16955e4..24d72b0 100644 --- a/tests/app/NestedObjects/Country.php +++ b/tests/app/NestedObjects/Country.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App\NestedObjects; +namespace WayOfDev\App\NestedObjects; final class Country { diff --git a/tests/app/Object/Author.php b/tests/app/Object/Author.php index 3b52e9b..4de0b71 100644 --- a/tests/app/Object/Author.php +++ b/tests/app/Object/Author.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App\Object; +namespace WayOfDev\App\Object; use Ramsey\Uuid\UuidInterface; diff --git a/tests/app/Object/Post.php b/tests/app/Object/Post.php index 71ad136..65b6ad6 100644 --- a/tests/app/Object/Post.php +++ b/tests/app/Object/Post.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App\Object; +namespace WayOfDev\App\Object; class Post { diff --git a/tests/app/Object/Product.php b/tests/app/Object/Product.php index 286cddc..0c5f7ef 100644 --- a/tests/app/Object/Product.php +++ b/tests/app/Object/Product.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App\Object; +namespace WayOfDev\App\Object; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\SerializedName; diff --git a/tests/app/Object/User.php b/tests/app/Object/User.php index fca53a2..e73aa5b 100644 --- a/tests/app/Object/User.php +++ b/tests/app/Object/User.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App\Object; +namespace WayOfDev\App\Object; use DateTimeInterface; diff --git a/tests/app/Response.php b/tests/app/Response.php index 3464c2e..1301d78 100644 --- a/tests/app/Response.php +++ b/tests/app/Response.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\App; +namespace WayOfDev\App; use ArrayIterator; use Webmozart\Assert\Assert; diff --git a/tests/src/Arch/DebugTest.php b/tests/src/Arch/DebugTest.php new file mode 100644 index 0000000..9d2c487 --- /dev/null +++ b/tests/src/Arch/DebugTest.php @@ -0,0 +1,8 @@ +expect(['trap', 'dd', 'dump', 'exit', 'die', 'print_r', 'var_dump', 'echo', 'print']) + ->not + ->toBeUsed(); diff --git a/tests/src/Bridge/Laravel/Providers/SerializerServiceProviderTest.php b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php similarity index 94% rename from tests/src/Bridge/Laravel/Providers/SerializerServiceProviderTest.php rename to tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php index 9b0c16c..6913d3e 100644 --- a/tests/src/Bridge/Laravel/Providers/SerializerServiceProviderTest.php +++ b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests\Bridge\Laravel\Providers; +namespace WayOfDev\Tests\Functional\Bridge\Laravel\Providers; use Symfony\Component\Serializer\Serializer; use Symfony\Component\Serializer\SerializerInterface; @@ -12,7 +12,7 @@ use WayOfDev\Serializer\Contracts\NormalizersRegistryInterface; use WayOfDev\Serializer\EncodersRegistry; use WayOfDev\Serializer\NormalizersRegistry; -use WayOfDev\Serializer\Tests\TestCase; +use WayOfDev\Tests\Functional\TestCase; final class SerializerServiceProviderTest extends TestCase { diff --git a/tests/src/EncodersRegistryTest.php b/tests/src/Functional/EncodersRegistryTest.php similarity index 98% rename from tests/src/EncodersRegistryTest.php rename to tests/src/Functional/EncodersRegistryTest.php index d1dac58..c826edd 100644 --- a/tests/src/EncodersRegistryTest.php +++ b/tests/src/Functional/EncodersRegistryTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests; +namespace WayOfDev\Tests\Functional; use PHPUnit\Framework\MockObject\Exception; use Symfony\Component\Serializer\Encoder\CsvEncoder; diff --git a/tests/src/Normalizers/RamseyUuidNormalizerTest.php b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php similarity index 93% rename from tests/src/Normalizers/RamseyUuidNormalizerTest.php rename to tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php index a0d1281..14814f0 100644 --- a/tests/src/Normalizers/RamseyUuidNormalizerTest.php +++ b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests\Normalizers; +namespace WayOfDev\Tests\Functional\Normalizers; use PHPUnit\Framework\Attributes\DataProvider; use Ramsey\Uuid\Uuid; use Traversable; -use WayOfDev\Serializer\App\Object\Author; +use WayOfDev\App\Object\Author; use WayOfDev\Serializer\SerializerManager; -use WayOfDev\Serializer\Tests\TestCase; +use WayOfDev\Tests\Functional\TestCase; use function preg_replace; diff --git a/tests/src/NormalizersRegistryTest.php b/tests/src/Functional/NormalizersRegistryTest.php similarity index 99% rename from tests/src/NormalizersRegistryTest.php rename to tests/src/Functional/NormalizersRegistryTest.php index 0817c52..5664170 100644 --- a/tests/src/NormalizersRegistryTest.php +++ b/tests/src/Functional/NormalizersRegistryTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests; +namespace WayOfDev\Tests\Functional; use PHPUnit\Framework\MockObject\Exception; use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; diff --git a/tests/src/ResponseFactoryTest.php b/tests/src/Functional/ResponseFactoryTest.php similarity index 94% rename from tests/src/ResponseFactoryTest.php rename to tests/src/Functional/ResponseFactoryTest.php index aa8dbcc..a468bbf 100644 --- a/tests/src/ResponseFactoryTest.php +++ b/tests/src/Functional/ResponseFactoryTest.php @@ -2,11 +2,11 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests; +namespace WayOfDev\Tests\Functional; -use WayOfDev\Serializer\App\Item; -use WayOfDev\Serializer\App\Object\Post; -use WayOfDev\Serializer\App\Response; +use WayOfDev\App\Item; +use WayOfDev\App\Object\Post; +use WayOfDev\App\Response; use WayOfDev\Serializer\ResponseFactory; use WayOfDev\Serializer\SerializerManager; @@ -48,7 +48,7 @@ public function it_creates_from_array_iterator(): void public function it_creates_response_from_array(): void { $responseFactory = new ResponseFactory(app(SerializerManager::class)); - $response = $responseFactory->fromArray(require __DIR__ . '/../app/array.php'); + $response = $responseFactory->fromArray(require __DIR__ . '/../../app/array.php'); self::assertEquals(200, $response->getStatusCode()); self::assertEquals( diff --git a/tests/src/SerializerManagerTest.php b/tests/src/Functional/SerializerManagerTest.php similarity index 98% rename from tests/src/SerializerManagerTest.php rename to tests/src/Functional/SerializerManagerTest.php index 78be9c2..94f5dde 100644 --- a/tests/src/SerializerManagerTest.php +++ b/tests/src/Functional/SerializerManagerTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests; +namespace WayOfDev\Tests\Functional; use PHPUnit\Framework\Attributes\DataProvider; use Stringable; diff --git a/tests/src/SerializerTest.php b/tests/src/Functional/SerializerTest.php similarity index 96% rename from tests/src/SerializerTest.php rename to tests/src/Functional/SerializerTest.php index f75b052..88be747 100644 --- a/tests/src/SerializerTest.php +++ b/tests/src/Functional/SerializerTest.php @@ -2,17 +2,17 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests; +namespace WayOfDev\Tests\Functional; use DateTimeImmutable; use DateTimeZone; use PHPUnit\Framework\Attributes\DataProvider; use Traversable; -use WayOfDev\Serializer\App\NestedObjects\City; -use WayOfDev\Serializer\App\NestedObjects\Country; -use WayOfDev\Serializer\App\Object\Post; -use WayOfDev\Serializer\App\Object\Product; -use WayOfDev\Serializer\App\Object\User; +use WayOfDev\App\NestedObjects\City; +use WayOfDev\App\NestedObjects\Country; +use WayOfDev\App\Object\Post; +use WayOfDev\App\Object\Product; +use WayOfDev\App\Object\User; use WayOfDev\Serializer\Serializer; use WayOfDev\Serializer\SerializerManager; diff --git a/tests/src/TestCase.php b/tests/src/Functional/TestCase.php similarity index 94% rename from tests/src/TestCase.php rename to tests/src/Functional/TestCase.php index 083134b..cdae223 100644 --- a/tests/src/TestCase.php +++ b/tests/src/Functional/TestCase.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\Serializer\Tests; +namespace WayOfDev\Tests\Functional; use Orchestra\Testbench\TestCase as Orchestra; use WayOfDev\Serializer\Bridge\Laravel\Providers\SerializerServiceProvider; diff --git a/tests/src/Pest.php b/tests/src/Pest.php deleted file mode 100644 index 65ef47a..0000000 --- a/tests/src/Pest.php +++ /dev/null @@ -1,7 +0,0 @@ -in(__DIR__); diff --git a/tests/src/Pest/ExampleTest.php b/tests/src/Pest/ExampleTest.php deleted file mode 100644 index 7b2a4e6..0000000 --- a/tests/src/Pest/ExampleTest.php +++ /dev/null @@ -1,7 +0,0 @@ -toBeTrue(); -}); From c69415437573cbb4f4eb4b43257b29124f55eec7 Mon Sep 17 00:00:00 2001 From: lotyp Date: Thu, 13 Jun 2024 21:58:55 +0300 Subject: [PATCH 03/10] deps: remove doctrine/annotations --- composer.json | 4 +- composer.lock | 127 +------------------------------------------------- 2 files changed, 3 insertions(+), 128 deletions(-) diff --git a/composer.json b/composer.json index b5100c5..17b4ffc 100644 --- a/composer.json +++ b/composer.json @@ -32,10 +32,10 @@ "require": { "php": "^8.2", "illuminate/http": "^11.0", + "ramsey/uuid": "^4.7", "symfony/property-access": "^7.1", - "symfony/serializer": "^7.1", "symfony/property-info": "^7.1", - "ramsey/uuid": "^4.7" + "symfony/serializer": "^7.1" }, "require-dev": { "ergebnis/phpunit-slow-test-detector": "^2.14", diff --git a/composer.lock b/composer.lock index f26e0b5..d852634 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3822f0dff27c4ab6950261427c9dd46d", + "content-hash": "bc6d02044a461ac62771fa94ed5a69b3", "packages": [ { "name": "brick/math", @@ -210,82 +210,6 @@ }, "time": "2022-10-27T11:44:00+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" - }, - "time": "2023-02-02T22:02:53+00:00" - }, { "name": "doctrine/inflector", "version": "2.0.10", @@ -2343,55 +2267,6 @@ ], "time": "2023-11-12T21:59:55+00:00" }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" - }, { "name": "psr/clock", "version": "1.0.0", From db213467c51ac07a56f385a96401fd73b1602a97 Mon Sep 17 00:00:00 2001 From: lotyp Date: Thu, 13 Jun 2024 22:02:32 +0300 Subject: [PATCH 04/10] ci: fix psalm and stan --- phpstan-baseline.neon | 241 ++++++++++++++++- psalm-baseline.xml | 244 +++++++++++++++--- .../SerializerServiceProviderTest.php | 20 +- tests/src/Functional/EncodersRegistryTest.php | 36 +-- .../Normalizers/RamseyUuidNormalizerTest.php | 6 +- .../Functional/NormalizersRegistryTest.php | 54 ++-- .../src/Functional/SerializerManagerTest.php | 10 +- tests/src/Functional/SerializerTest.php | 52 ++-- 8 files changed, 536 insertions(+), 127 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index aab4991..0221ab1 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,2 +1,241 @@ parameters: - ignoreErrors: [] + ignoreErrors: + - + message: "#^Access to an undefined property WayOfDev\\\\Serializer\\\\Config\\:\\:\\$config\\.$#" + count: 1 + path: src/Config.php + + - + message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" + count: 1 + path: src/Config.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:__construct\\(\\) has parameter \\$encoders with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Config.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:__construct\\(\\) has parameter \\$normalizers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Config.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:encoders\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Config.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:fromArray\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Config.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:normalizers\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Config.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\ConfigRepository\\:\\:encoders\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Contracts/ConfigRepository.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\ConfigRepository\\:\\:normalizers\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Contracts/ConfigRepository.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\NormalizersRegistryInterface\\:\\:all\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Contracts/NormalizersRegistryInterface.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\SerializerInterface\\:\\:normalize\\(\\) has no return type specified\\.$#" + count: 1 + path: src/Contracts/SerializerInterface.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\SerializerInterface\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Contracts/SerializerInterface.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Normalizers/RamseyUuidNormalizer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Normalizers/RamseyUuidNormalizer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:normalize\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Normalizers/RamseyUuidNormalizer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:normalize\\(\\) return type with generic class ArrayObject does not specify its types\\: TKey, TValue$#" + count: 1 + path: src/Normalizers/RamseyUuidNormalizer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Normalizers/RamseyUuidNormalizer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:supportsNormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Normalizers/RamseyUuidNormalizer.php + + - + message: "#^Parameter \\#1 \\$object \\(Ramsey\\\\Uuid\\\\UuidInterface\\) of method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" + count: 1 + path: src/Normalizers/RamseyUuidNormalizer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\NormalizersRegistry\\:\\:__construct\\(\\) has parameter \\$normalizers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/NormalizersRegistry.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:fromArray\\(\\) has parameter \\$response with no value type specified in iterable type array\\.$#" + count: 1 + path: src/ResponseFactory.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:serializeResponse\\(\\) has parameter \\$response with no value type specified in iterable type array\\.$#" + count: 1 + path: src/ResponseFactory.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:withContext\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/ResponseFactory.php + + - + message: "#^Property WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:\\$context type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/ResponseFactory.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:decode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:encode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:normalize\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:normalize\\(\\) return type with generic class ArrayObject does not specify its types\\: TKey, TValue$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:serialize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsDecoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsEncoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsNormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:unserialize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Serializer.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\SerializerManager\\:\\:normalize\\(\\) has no return type specified\\.$#" + count: 1 + path: src/SerializerManager.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\SerializerManager\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/SerializerManager.php + + - + message: "#^Method WayOfDev\\\\Serializer\\\\SerializerRegistry\\:\\:__construct\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/SerializerRegistry.php + + - + message: "#^Method WayOfDev\\\\App\\\\NestedObjects\\\\City\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/app/NestedObjects/City.php + + - + message: "#^Class WayOfDev\\\\App\\\\Response extends generic class ArrayIterator but does not specify its types\\: TKey, TValue$#" + count: 1 + path: tests/app/Response.php + + - + message: "#^Method WayOfDev\\\\App\\\\Response\\:\\:__construct\\(\\) has parameter \\$items with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/app/Response.php + + - + message: "#^Method WayOfDev\\\\App\\\\Response\\:\\:create\\(\\) has parameter \\$items with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/app/Response.php + + - + message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\Normalizers\\\\RamseyUuidNormalizerTest\\:\\:serializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" + count: 1 + path: tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php + + - + message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\NormalizersRegistryTest\\:\\:assertContainsInstanceOf\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/src/Functional/NormalizersRegistryTest.php + + - + message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\SerializerManagerTest\\:\\:serializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" + count: 1 + path: tests/src/Functional/SerializerManagerTest.php + + - + message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\SerializerManagerTest\\:\\:unserializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" + count: 1 + path: tests/src/Functional/SerializerManagerTest.php + + - + message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\SerializerTest\\:\\:serializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" + count: 1 + path: tests/src/Functional/SerializerTest.php diff --git a/psalm-baseline.xml b/psalm-baseline.xml index ebe98b7..347d240 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,59 +1,233 @@ - + + + get(LoaderInterface::class)]]> + encoders()]]> + normalizers()]]> + all()]]> + + all()]]> + + + + + $encoder instanceof EncoderInterface ? $encoder : $app->get($encoder), + $config->encoders() + )]]> + + + + + + + + + + + + + + + + + + + + + make(ConfigRepository::class)->metadataLoader()]]> + - + - + + + + + + + + config['metadataLoader']]]> + + + + + + config['metadataLoader']]]> + + + defaultSerializer]]> + encoders]]> + normalizers]]> + + + + + + + + - + + + - - - - - - - + + + + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + - + + + + + + + - + + + + + + - - - name = $name]]> + - aliases]]> + - name]]> - - - help]]> - - - aliases]]> - - - name]]> - + + + + + + + + + + + + + + serialize($payload, $format)]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + serializer]]> + + + + + + + + + + + + serialize($payload, $format)]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php index 6913d3e..ca0958b 100644 --- a/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php +++ b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php @@ -21,9 +21,8 @@ final class SerializerServiceProviderTest extends TestCase */ public function it_registers_config(): void { - $this::assertTrue($this->app->bound(ConfigRepository::class)); - // @phpstan-ignore-next-line - $this::assertInstanceOf(Config::class, $this->app->make(ConfigRepository::class)); + self::assertTrue($this->app->bound(ConfigRepository::class)); + self::assertInstanceOf(Config::class, $this->app->make(ConfigRepository::class)); } /** @@ -31,9 +30,8 @@ public function it_registers_config(): void */ public function it_registers_normalizers_registry(): void { - $this::assertTrue($this->app->bound(NormalizersRegistryInterface::class)); - // @phpstan-ignore-next-line - $this::assertInstanceOf(NormalizersRegistry::class, $this->app->make(NormalizersRegistryInterface::class)); + self::assertTrue($this->app->bound(NormalizersRegistryInterface::class)); + self::assertInstanceOf(NormalizersRegistry::class, $this->app->make(NormalizersRegistryInterface::class)); } /** @@ -41,9 +39,8 @@ public function it_registers_normalizers_registry(): void */ public function it_registers_encoders_registry(): void { - $this::assertTrue($this->app->bound(EncodersRegistryInterface::class)); - // @phpstan-ignore-next-line - $this::assertInstanceOf(EncodersRegistry::class, $this->app->make(EncodersRegistryInterface::class)); + self::assertTrue($this->app->bound(EncodersRegistryInterface::class)); + self::assertInstanceOf(EncodersRegistry::class, $this->app->make(EncodersRegistryInterface::class)); } /** @@ -51,8 +48,7 @@ public function it_registers_encoders_registry(): void */ public function it_registers_serializer(): void { - $this::assertTrue($this->app->bound(SerializerInterface::class)); - // @phpstan-ignore-next-line - $this::assertInstanceOf(Serializer::class, $this->app->make(SerializerInterface::class)); + self::assertTrue($this->app->bound(SerializerInterface::class)); + self::assertInstanceOf(Serializer::class, $this->app->make(SerializerInterface::class)); } } diff --git a/tests/src/Functional/EncodersRegistryTest.php b/tests/src/Functional/EncodersRegistryTest.php index c826edd..2cf23bc 100644 --- a/tests/src/Functional/EncodersRegistryTest.php +++ b/tests/src/Functional/EncodersRegistryTest.php @@ -21,12 +21,12 @@ public function construct_with_default_encoders(): void { $registry = new EncodersRegistry(); - $this::assertCount(4, $registry->all()); + self::assertCount(4, $registry->all()); - $this::assertTrue($registry->has(JsonEncoder::class)); - $this::assertTrue($registry->has(CsvEncoder::class)); - $this::assertTrue($registry->has(XmlEncoder::class)); - $this::assertTrue($registry->has(YamlEncoder::class)); + self::assertTrue($registry->has(JsonEncoder::class)); + self::assertTrue($registry->has(CsvEncoder::class)); + self::assertTrue($registry->has(XmlEncoder::class)); + self::assertTrue($registry->has(YamlEncoder::class)); } /** @@ -36,12 +36,12 @@ public function construct_with_encoders(): void { $registry = new EncodersRegistry([new JsonEncoder(), new CsvEncoder()]); - $this::assertCount(2, $registry->all()); + self::assertCount(2, $registry->all()); - $this::assertTrue($registry->has(JsonEncoder::class)); - $this::assertTrue($registry->has(CsvEncoder::class)); - $this::assertFalse($registry->has(XmlEncoder::class)); - $this::assertFalse($registry->has(YamlEncoder::class)); + self::assertTrue($registry->has(JsonEncoder::class)); + self::assertTrue($registry->has(CsvEncoder::class)); + self::assertFalse($registry->has(XmlEncoder::class)); + self::assertFalse($registry->has(YamlEncoder::class)); } /** @@ -53,14 +53,14 @@ public function register(): void $encoder = $this->createMock(EncoderInterface::class); - $this::assertCount(4, $registry->all()); + self::assertCount(4, $registry->all()); $registry->register($encoder); - $this::assertCount(5, $registry->all()); - $this::assertTrue($registry->has($encoder::class)); + self::assertCount(5, $registry->all()); + self::assertTrue($registry->has($encoder::class)); $registry->register($encoder); - $this::assertCount(5, $registry->all()); - $this::assertTrue($registry->has($encoder::class)); + self::assertCount(5, $registry->all()); + self::assertTrue($registry->has($encoder::class)); } /** @@ -72,7 +72,7 @@ public function all(): void $csv = new CsvEncoder(); $registry = new EncodersRegistry([$json, $csv]); - $this::assertSame([$json, $csv], $registry->all()); + self::assertSame([$json, $csv], $registry->all()); } /** @@ -85,9 +85,9 @@ public function has(): void $encoder = $this->createMock(EncoderInterface::class); $registry = new EncodersRegistry(); - $this::assertFalse($registry->has($encoder::class)); + self::assertFalse($registry->has($encoder::class)); $registry->register($encoder); - $this::assertTrue($registry->has($encoder::class)); + self::assertTrue($registry->has($encoder::class)); } } diff --git a/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php index 14814f0..6d83b64 100644 --- a/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php +++ b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php @@ -42,7 +42,7 @@ public function serialize(string $expected, mixed $payload, string $format): voi { $manager = $this->app->get(SerializerManager::class); - $this::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); + self::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); } /** @@ -58,7 +58,7 @@ public function unserialize(): void 'json' ); - $this::assertInstanceOf(Author::class, $result); - $this::assertSame('1d96a152-9838-43a0-a189-159befc9e38f', $result->uuid->toString()); + self::assertInstanceOf(Author::class, $result); + self::assertSame('1d96a152-9838-43a0-a189-159befc9e38f', $result->uuid->toString()); } } diff --git a/tests/src/Functional/NormalizersRegistryTest.php b/tests/src/Functional/NormalizersRegistryTest.php index 5664170..d0955a2 100644 --- a/tests/src/Functional/NormalizersRegistryTest.php +++ b/tests/src/Functional/NormalizersRegistryTest.php @@ -45,23 +45,23 @@ public function construct_with_default_normalizers(): void true, ); - $this::assertCount(15, $registry->all()); - - $this::assertTrue($registry->has(Normalizer\UnwrappingDenormalizer::class)); - $this::assertTrue($registry->has(Normalizer\ProblemNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\UidNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\JsonSerializableNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\DateTimeNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\ConstraintViolationListNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\MimeMessageNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\DateTimeZoneNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\DateIntervalNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\FormErrorNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\BackedEnumNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\DataUriNormalizer::class)); - $this::assertTrue($registry->has(Normalizer\ArrayDenormalizer::class)); - $this::assertTrue($registry->has(Normalizer\ObjectNormalizer::class)); - $this::assertTrue($registry->has(RamseyUuidNormalizer::class)); + self::assertCount(15, $registry->all()); + + self::assertTrue($registry->has(Normalizer\UnwrappingDenormalizer::class)); + self::assertTrue($registry->has(Normalizer\ProblemNormalizer::class)); + self::assertTrue($registry->has(Normalizer\UidNormalizer::class)); + self::assertTrue($registry->has(Normalizer\JsonSerializableNormalizer::class)); + self::assertTrue($registry->has(Normalizer\DateTimeNormalizer::class)); + self::assertTrue($registry->has(Normalizer\ConstraintViolationListNormalizer::class)); + self::assertTrue($registry->has(Normalizer\MimeMessageNormalizer::class)); + self::assertTrue($registry->has(Normalizer\DateTimeZoneNormalizer::class)); + self::assertTrue($registry->has(Normalizer\DateIntervalNormalizer::class)); + self::assertTrue($registry->has(Normalizer\FormErrorNormalizer::class)); + self::assertTrue($registry->has(Normalizer\BackedEnumNormalizer::class)); + self::assertTrue($registry->has(Normalizer\DataUriNormalizer::class)); + self::assertTrue($registry->has(Normalizer\ArrayDenormalizer::class)); + self::assertTrue($registry->has(Normalizer\ObjectNormalizer::class)); + self::assertTrue($registry->has(RamseyUuidNormalizer::class)); } /** @@ -80,15 +80,15 @@ public function register(): void $normalizer2 = $this->createMock(Normalizer\DenormalizerInterface::class); $registry->register($normalizer, 2); - $this::assertCount(16, $registry->all()); - $this::assertTrue($registry->has($normalizer::class)); + self::assertCount(16, $registry->all()); + self::assertTrue($registry->has($normalizer::class)); $registry->register($normalizer2, 1); - $this::assertCount(17, $registry->all()); - $this::assertTrue($registry->has($normalizer2::class)); + self::assertCount(17, $registry->all()); + self::assertTrue($registry->has($normalizer2::class)); - $this::assertSame($normalizer2, $registry->all()[0]); - $this::assertSame($normalizer, $registry->all()[1]); + self::assertSame($normalizer2, $registry->all()[0]); + self::assertSame($normalizer, $registry->all()[1]); } /** @@ -106,8 +106,8 @@ public function all(): void $allNormalizers = $registry->all(); - $this::assertContainsInstanceOf(Normalizer\UnwrappingDenormalizer::class, $allNormalizers); - $this::assertContainsInstanceOf(Normalizer\ObjectNormalizer::class, $allNormalizers); + self::assertContainsInstanceOf(Normalizer\UnwrappingDenormalizer::class, $allNormalizers); + self::assertContainsInstanceOf(Normalizer\ObjectNormalizer::class, $allNormalizers); } /** @@ -123,9 +123,9 @@ public function has(): void $this->createMock(LoaderInterface::class), true ); - $this::assertFalse($registry->has($normalizer::class)); + self::assertFalse($registry->has($normalizer::class)); $registry->register($normalizer); - $this::assertTrue($registry->has($normalizer::class)); + self::assertTrue($registry->has($normalizer::class)); } } diff --git a/tests/src/Functional/SerializerManagerTest.php b/tests/src/Functional/SerializerManagerTest.php index 94f5dde..8af45a0 100644 --- a/tests/src/Functional/SerializerManagerTest.php +++ b/tests/src/Functional/SerializerManagerTest.php @@ -53,17 +53,17 @@ protected function setUp(): void */ public function get_serializer(): void { - $this::assertInstanceOf( + self::assertInstanceOf( Serializer::class, $this->serializer->getSerializer('json') ); - $this::assertInstanceOf( + self::assertInstanceOf( Serializer::class, $this->serializer->getSerializer('xml') ); - $this::assertInstanceOf( + self::assertInstanceOf( Serializer::class, $this->serializer->getSerializer('csv') ); @@ -78,7 +78,7 @@ public function get_serializer(): void #[DataProvider('serializeDataProvider')] public function serialize(mixed $payload, string $expected, ?string $format = null): void { - $this::assertSame($expected, $this->serializer->serialize($payload, $format)); + self::assertSame($expected, $this->serializer->serialize($payload, $format)); } /** @@ -99,6 +99,6 @@ public function bad_serializer(): void #[DataProvider('unserializeDataProvider')] public function unserialize(string|Stringable $payload, mixed $expected, ?string $format = null): void { - $this::assertSame($expected, $this->serializer->unserialize($payload, format: $format)); + self::assertSame($expected, $this->serializer->unserialize($payload, format: $format)); } } diff --git a/tests/src/Functional/SerializerTest.php b/tests/src/Functional/SerializerTest.php index 88be747..04bf14f 100644 --- a/tests/src/Functional/SerializerTest.php +++ b/tests/src/Functional/SerializerTest.php @@ -84,7 +84,7 @@ public function serialize(string $expected, mixed $payload, string $format): voi { $manager = $this->app->get(SerializerManager::class); - $this::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); + self::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); } /** @@ -95,20 +95,20 @@ public function unserialize(): void $manager = $this->app->get(SerializerManager::class); $result = $manager->unserialize('{"id":1,"text":"some","active":false,"views":3}', Post::class, 'json'); - $this::assertInstanceOf(Post::class, $result); - $this::assertSame(1, $result->id); - $this::assertSame('some', $result->text); - $this::assertFalse($result->active); + self::assertInstanceOf(Post::class, $result); + self::assertSame(1, $result->id); + self::assertSame('some', $result->text); + self::assertFalse($result->active); $result = $manager->unserialize( '{"id":1,"text":"some","active":false,"views":3}', new Post(2, '', true, 1), 'json' ); - $this::assertInstanceOf(Post::class, $result); - $this::assertSame(1, $result->id); - $this::assertSame('some', $result->text); - $this::assertFalse($result->active); + self::assertInstanceOf(Post::class, $result); + self::assertSame(1, $result->id); + self::assertSame('some', $result->text); + self::assertFalse($result->active); } /** @@ -123,12 +123,12 @@ public function unserialize_with_attributes(): void Product::class, 'json' ); - $this::assertInstanceOf(Product::class, $result); - $this::assertSame(1, $result->id); - $this::assertSame('Some product', $result->title); - $this::assertSame(100.0, $result->price); - $this::assertFalse($result->active); - $this::assertSame(5, $result->views); + self::assertInstanceOf(Product::class, $result); + self::assertSame(1, $result->id); + self::assertSame('Some product', $result->title); + self::assertSame(100.0, $result->price); + self::assertFalse($result->active); + self::assertSame(5, $result->views); } /** @@ -144,10 +144,10 @@ public function unserialize_nested_objects(): void 'json' ); - $this::assertInstanceOf(Country::class, $result); - $this::assertSame('USA', $result->name); - $this::assertSame('Chicago', $result->cities[0]->name); - $this::assertSame('NewYork', $result->cities[1]->name); + self::assertInstanceOf(Country::class, $result); + self::assertSame('USA', $result->name); + self::assertSame('Chicago', $result->cities[0]->name); + self::assertSame('NewYork', $result->cities[1]->name); } /** @@ -163,10 +163,10 @@ public function unserialize_date_time_interface(): void 'json' ); - $this::assertInstanceOf(User::class, $result); - $this::assertSame(3, $result->id); - $this::assertInstanceOf(DateTimeImmutable::class, $result->registeredAt); - $this::assertSame('2023-06-05T22:12:55+00:00', $result->registeredAt->format('c')); + self::assertInstanceOf(User::class, $result); + self::assertSame(3, $result->id); + self::assertInstanceOf(DateTimeImmutable::class, $result->registeredAt); + self::assertSame('2023-06-05T22:12:55+00:00', $result->registeredAt->format('c')); } /** @@ -182,14 +182,14 @@ public function group_normalize(): void $product = new Product(1, 'Some product', 100, false, 5); - $this::assertSame( + self::assertSame( ['id' => 1, 'title' => 'Some product'], $serializer->normalize($product, null, ['groups' => 'group1']) ); - $this::assertSame( + self::assertSame( ['price' => 100.0, 'active' => false], $serializer->normalize($product, null, ['groups' => 'group2']) ); - $this::assertSame(['product_views' => 5], $serializer->normalize($product, null, ['groups' => 'group3'])); + self::assertSame(['product_views' => 5], $serializer->normalize($product, null, ['groups' => 'group3'])); } } From ea21156fadae5cd9f8ec222987f5d4db5a66e590 Mon Sep 17 00:00:00 2001 From: lotyp Date: Thu, 13 Jun 2024 22:05:17 +0300 Subject: [PATCH 05/10] ci: apply rector/rector upgrades --- psalm-baseline.xml | 42 ++++++++++++++++++- src/ResponseFactory.php | 2 +- tests/app/Item.php | 2 +- .../SerializerServiceProviderTest.php | 17 +++----- tests/src/Functional/EncodersRegistryTest.php | 20 +++------ .../Normalizers/RamseyUuidNormalizerTest.php | 9 ++-- .../Functional/NormalizersRegistryTest.php | 13 +++--- tests/src/Functional/ResponseFactoryTest.php | 21 +++------- .../src/Functional/SerializerManagerTest.php | 17 +++----- tests/src/Functional/SerializerTest.php | 25 ++++------- 10 files changed, 80 insertions(+), 88 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 347d240..03e3733 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -103,7 +103,7 @@ - + @@ -149,6 +149,21 @@ + + + + + + + + + + + + + + + @@ -167,13 +182,21 @@ + + + + + + + + @@ -183,6 +206,13 @@ + + + + + + + @@ -192,7 +222,11 @@ + + + + @@ -227,7 +261,13 @@ + + + + + + diff --git a/src/ResponseFactory.php b/src/ResponseFactory.php index 6fd78eb..568afed 100644 --- a/src/ResponseFactory.php +++ b/src/ResponseFactory.php @@ -12,7 +12,7 @@ final class ResponseFactory /** * @property SerializerInterface $serializer */ - private SerializerInterface $serializer; + private readonly SerializerInterface $serializer; private array $context = []; diff --git a/tests/app/Item.php b/tests/app/Item.php index 2480fd8..c41bbd6 100644 --- a/tests/app/Item.php +++ b/tests/app/Item.php @@ -11,7 +11,7 @@ final class Item { #[Groups(['default', 'private'])] - private UuidInterface $id; + private readonly UuidInterface $id; #[Groups(['default'])] private string $key = 'magic_number'; diff --git a/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php index ca0958b..cc3ac2f 100644 --- a/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php +++ b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php @@ -4,6 +4,7 @@ namespace WayOfDev\Tests\Functional\Bridge\Laravel\Providers; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Serializer\Serializer; use Symfony\Component\Serializer\SerializerInterface; use WayOfDev\Serializer\Config; @@ -16,36 +17,28 @@ final class SerializerServiceProviderTest extends TestCase { - /** - * @test - */ + #[Test] public function it_registers_config(): void { self::assertTrue($this->app->bound(ConfigRepository::class)); self::assertInstanceOf(Config::class, $this->app->make(ConfigRepository::class)); } - /** - * @test - */ + #[Test] public function it_registers_normalizers_registry(): void { self::assertTrue($this->app->bound(NormalizersRegistryInterface::class)); self::assertInstanceOf(NormalizersRegistry::class, $this->app->make(NormalizersRegistryInterface::class)); } - /** - * @test - */ + #[Test] public function it_registers_encoders_registry(): void { self::assertTrue($this->app->bound(EncodersRegistryInterface::class)); self::assertInstanceOf(EncodersRegistry::class, $this->app->make(EncodersRegistryInterface::class)); } - /** - * @test - */ + #[Test] public function it_registers_serializer(): void { self::assertTrue($this->app->bound(SerializerInterface::class)); diff --git a/tests/src/Functional/EncodersRegistryTest.php b/tests/src/Functional/EncodersRegistryTest.php index 2cf23bc..43f2c3d 100644 --- a/tests/src/Functional/EncodersRegistryTest.php +++ b/tests/src/Functional/EncodersRegistryTest.php @@ -4,6 +4,7 @@ namespace WayOfDev\Tests\Functional; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\Exception; use Symfony\Component\Serializer\Encoder\CsvEncoder; use Symfony\Component\Serializer\Encoder\EncoderInterface; @@ -14,9 +15,7 @@ final class EncodersRegistryTest extends TestCase { - /** - * @test - */ + #[Test] public function construct_with_default_encoders(): void { $registry = new EncodersRegistry(); @@ -29,9 +28,7 @@ public function construct_with_default_encoders(): void self::assertTrue($registry->has(YamlEncoder::class)); } - /** - * @test - */ + #[Test] public function construct_with_encoders(): void { $registry = new EncodersRegistry([new JsonEncoder(), new CsvEncoder()]); @@ -44,9 +41,7 @@ public function construct_with_encoders(): void self::assertFalse($registry->has(YamlEncoder::class)); } - /** - * @test - */ + #[Test] public function register(): void { $registry = new EncodersRegistry(); @@ -63,9 +58,7 @@ public function register(): void self::assertTrue($registry->has($encoder::class)); } - /** - * @test - */ + #[Test] public function all(): void { $json = new JsonEncoder(); @@ -76,10 +69,9 @@ public function all(): void } /** - * @test - * * @throws Exception */ + #[Test] public function has(): void { $encoder = $this->createMock(EncoderInterface::class); diff --git a/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php index 6d83b64..de8787b 100644 --- a/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php +++ b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php @@ -5,6 +5,7 @@ namespace WayOfDev\Tests\Functional\Normalizers; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Ramsey\Uuid\Uuid; use Traversable; use WayOfDev\App\Object\Author; @@ -34,10 +35,8 @@ public static function serializeDataProvider(): Traversable ]; } - /** - * @test - */ #[DataProvider('serializeDataProvider')] + #[Test] public function serialize(string $expected, mixed $payload, string $format): void { $manager = $this->app->get(SerializerManager::class); @@ -45,9 +44,7 @@ public function serialize(string $expected, mixed $payload, string $format): voi self::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); } - /** - * @test - */ + #[Test] public function unserialize(): void { $manager = $this->app->get(SerializerManager::class); diff --git a/tests/src/Functional/NormalizersRegistryTest.php b/tests/src/Functional/NormalizersRegistryTest.php index d0955a2..9192e44 100644 --- a/tests/src/Functional/NormalizersRegistryTest.php +++ b/tests/src/Functional/NormalizersRegistryTest.php @@ -4,6 +4,7 @@ namespace WayOfDev\Tests\Functional; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\Exception; use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; use Symfony\Component\Serializer\Normalizer; @@ -34,10 +35,9 @@ public static function assertContainsInstanceOf(string $className, array $array) } /** - * @test - * * @throws Exception */ + #[Test] public function construct_with_default_normalizers(): void { $registry = new NormalizersRegistry( @@ -65,10 +65,9 @@ public function construct_with_default_normalizers(): void } /** - * @test - * * @throws Exception */ + #[Test] public function register(): void { $registry = new NormalizersRegistry( @@ -92,10 +91,9 @@ public function register(): void } /** - * @test - * * @throws Exception */ + #[Test] public function all(): void { $registry = new NormalizersRegistry( @@ -111,10 +109,9 @@ public function all(): void } /** - * @test - * * @throws Exception */ + #[Test] public function has(): void { $normalizer = $this->createMock(Normalizer\NormalizerInterface::class); diff --git a/tests/src/Functional/ResponseFactoryTest.php b/tests/src/Functional/ResponseFactoryTest.php index a468bbf..a4405dd 100644 --- a/tests/src/Functional/ResponseFactoryTest.php +++ b/tests/src/Functional/ResponseFactoryTest.php @@ -4,6 +4,7 @@ namespace WayOfDev\Tests\Functional; +use PHPUnit\Framework\Attributes\Test; use WayOfDev\App\Item; use WayOfDev\App\Object\Post; use WayOfDev\App\Response; @@ -12,9 +13,7 @@ final class ResponseFactoryTest extends TestCase { - /** - * @test - */ + #[Test] public function it_creates_response(): void { $responseFactory = new ResponseFactory(app(SerializerManager::class)); @@ -29,9 +28,7 @@ public function it_creates_response(): void self::assertEquals('{"id":1,"text":"Some text","active":true,"views":777}', $response->getContent()); } - /** - * @test - */ + #[Test] public function it_creates_from_array_iterator(): void { $responseFactory = new ResponseFactory(app(SerializerManager::class)); @@ -42,9 +39,7 @@ public function it_creates_from_array_iterator(): void self::assertEquals('[{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","key":"magic_number","value":12}]', $response->getContent()); } - /** - * @test - */ + #[Test] public function it_creates_response_from_array(): void { $responseFactory = new ResponseFactory(app(SerializerManager::class)); @@ -57,9 +52,7 @@ public function it_creates_response_from_array(): void ); } - /** - * @test - */ + #[Test] public function it_sets_non_default_status_code(): void { $responseFactory = new ResponseFactory(app(SerializerManager::class)); @@ -71,9 +64,7 @@ public function it_sets_non_default_status_code(): void self::assertEquals('{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","key":"magic_number","value":12}', $response->getContent()); } - /** - * @test - */ + #[Test] public function it_uses_given_context(): void { $responseFactory = new ResponseFactory(app(SerializerManager::class)); diff --git a/tests/src/Functional/SerializerManagerTest.php b/tests/src/Functional/SerializerManagerTest.php index 8af45a0..c4c45fb 100644 --- a/tests/src/Functional/SerializerManagerTest.php +++ b/tests/src/Functional/SerializerManagerTest.php @@ -5,6 +5,7 @@ namespace WayOfDev\Tests\Functional; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Stringable; use Traversable; use WayOfDev\Serializer\Exceptions\SerializerNotFoundException; @@ -48,9 +49,7 @@ protected function setUp(): void $this->serializer = $this->app->make(SerializerManager::class); } - /** - * @test - */ + #[Test] public function get_serializer(): void { self::assertInstanceOf( @@ -72,18 +71,14 @@ public function get_serializer(): void $this->serializer->getSerializer('bad'); } - /** - * @test - */ #[DataProvider('serializeDataProvider')] + #[Test] public function serialize(mixed $payload, string $expected, ?string $format = null): void { self::assertSame($expected, $this->serializer->serialize($payload, $format)); } - /** - * @test - */ + #[Test] public function bad_serializer(): void { $this->expectException(SerializerNotFoundException::class); @@ -93,10 +88,8 @@ public function bad_serializer(): void $this->serializer->unserialize('payload', 'bad'); } - /** - * @test - */ #[DataProvider('unserializeDataProvider')] + #[Test] public function unserialize(string|Stringable $payload, mixed $expected, ?string $format = null): void { self::assertSame($expected, $this->serializer->unserialize($payload, format: $format)); diff --git a/tests/src/Functional/SerializerTest.php b/tests/src/Functional/SerializerTest.php index 04bf14f..dbd5d18 100644 --- a/tests/src/Functional/SerializerTest.php +++ b/tests/src/Functional/SerializerTest.php @@ -7,6 +7,7 @@ use DateTimeImmutable; use DateTimeZone; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Traversable; use WayOfDev\App\NestedObjects\City; use WayOfDev\App\NestedObjects\Country; @@ -76,10 +77,8 @@ public static function serializeDataProvider(): Traversable ]; } - /** - * @test - */ #[DataProvider('serializeDataProvider')] + #[Test] public function serialize(string $expected, mixed $payload, string $format): void { $manager = $this->app->get(SerializerManager::class); @@ -87,9 +86,7 @@ public function serialize(string $expected, mixed $payload, string $format): voi self::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); } - /** - * @test - */ + #[Test] public function unserialize(): void { $manager = $this->app->get(SerializerManager::class); @@ -111,9 +108,7 @@ public function unserialize(): void self::assertFalse($result->active); } - /** - * @test - */ + #[Test] public function unserialize_with_attributes(): void { $manager = $this->app->get(SerializerManager::class); @@ -131,9 +126,7 @@ public function unserialize_with_attributes(): void self::assertSame(5, $result->views); } - /** - * @test - */ + #[Test] public function unserialize_nested_objects(): void { $manager = $this->app->get(SerializerManager::class); @@ -150,9 +143,7 @@ public function unserialize_nested_objects(): void self::assertSame('NewYork', $result->cities[1]->name); } - /** - * @test - */ + #[Test] public function unserialize_date_time_interface(): void { $manager = $this->app->get(SerializerManager::class); @@ -169,9 +160,7 @@ public function unserialize_date_time_interface(): void self::assertSame('2023-06-05T22:12:55+00:00', $result->registeredAt->format('c')); } - /** - * @test - */ + #[Test] public function group_normalize(): void { // dd($this->app->make(SerializerManager::class)); From 32c3ceb10f8277c49d0aede645f962c3df30baae Mon Sep 17 00:00:00 2001 From: lotyp Date: Wed, 19 Jun 2024 00:47:50 +0300 Subject: [PATCH 06/10] refactor: rewrote package to be more configurable and flexible --- composer.json | 4 +- composer.lock | 132 ++++---- config/serializer.php | 66 ++-- phpstan-baseline.neon | 225 ------------- phpstan.neon.dist | 2 +- phpunit.xml.dist | 3 + psalm-baseline.xml | 315 ++++++------------ src/Bridge/Laravel/Facades/Manager.php | 15 + src/{ => Bridge/Laravel/Http}/HttpCode.php | 11 +- .../Laravel/Http}/ResponseFactory.php | 29 +- .../Providers/SerializerServiceProvider.php | 134 ++++---- src/Config.php | 67 +++- src/Contracts/ConfigRepository.php | 10 +- src/Contracts/EncoderRegistrationStrategy.php | 16 + ...rface.php => EncoderRegistryInterface.php} | 7 +- .../NormalizerRegistrationStrategy.php | 16 + ...ce.php => NormalizerRegistryInterface.php} | 5 +- src/Contracts/SerializerException.php | 11 + src/Contracts/SerializerInterface.php | 21 +- src/Contracts/SerializerRegistryInterface.php | 9 +- src/DefaultEncoderRegistrationStrategy.php | 29 ++ src/DefaultNormalizerRegistrationStrategy.php | 62 ++++ src/EncoderRegistry.php | 50 +++ src/EncodersRegistry.php | 68 ---- src/Exceptions/MissingRequiredAttributes.php | 3 +- ...ndException.php => SerializerNotFound.php} | 3 +- src/Exceptions/UnsupportedTypeException.php | 16 - src/Manager/Serializer.php | 39 +++ src/Manager/SerializerManager.php | 53 +++ src/{ => Manager}/SerializerRegistry.php | 24 +- src/NormalizerRegistry.php | 62 ++++ src/Normalizers/RamseyUuidNormalizer.php | 10 + src/NormalizersRegistry.php | 107 ------ src/Serializer.php | 91 ----- src/SerializerManager.php | 40 --- tests/app/NestedObjects/City.php | 3 + tests/app/{Object => Objects}/Author.php | 2 +- tests/app/{Object => Objects}/Post.php | 2 +- tests/app/{Object => Objects}/Product.php | 2 +- tests/app/{Object => Objects}/User.php | 2 +- tests/app/{ => Response}/Item.php | 14 +- tests/app/{ => Response}/Response.php | 16 +- tests/app/{ => Response}/array.php | 6 +- .../Bridge/Laravel/Facades/ManagerTest.php | 22 ++ .../Laravel/Http}/ResponseFactoryTest.php | 43 ++- .../SerializerServiceProviderTest.php | 48 ++- tests/src/Functional/ConfigTest.php | 66 ++++ tests/src/Functional/EncoderRegistryTest.php | 82 +++++ tests/src/Functional/EncodersRegistryTest.php | 85 ----- .../Manager/SerializerManagerTest.php | 21 ++ .../Manager/SerializerRegistryTest.php | 76 +++++ .../src/Functional/Manager/SerializerTest.php | 29 ++ ...tryTest.php => NormalizerRegistryTest.php} | 58 ++-- .../Normalizers/RamseyUuidNormalizerTest.php | 33 +- .../src/Functional/SerializerManagerTest.php | 97 ------ tests/src/Functional/SerializerTest.php | 184 ---------- tests/src/Functional/TestCase.php | 7 - .../Normalizers/RamseyUuidNormalizerTest.php | 80 +++++ 58 files changed, 1336 insertions(+), 1397 deletions(-) create mode 100644 src/Bridge/Laravel/Facades/Manager.php rename src/{ => Bridge/Laravel/Http}/HttpCode.php (91%) rename src/{ => Bridge/Laravel/Http}/ResponseFactory.php (75%) create mode 100644 src/Contracts/EncoderRegistrationStrategy.php rename src/Contracts/{EncodersRegistryInterface.php => EncoderRegistryInterface.php} (59%) create mode 100644 src/Contracts/NormalizerRegistrationStrategy.php rename src/Contracts/{NormalizersRegistryInterface.php => NormalizerRegistryInterface.php} (81%) create mode 100644 src/Contracts/SerializerException.php create mode 100644 src/DefaultEncoderRegistrationStrategy.php create mode 100644 src/DefaultNormalizerRegistrationStrategy.php create mode 100644 src/EncoderRegistry.php delete mode 100644 src/EncodersRegistry.php rename src/Exceptions/{SerializerNotFoundException.php => SerializerNotFound.php} (65%) delete mode 100644 src/Exceptions/UnsupportedTypeException.php create mode 100644 src/Manager/Serializer.php create mode 100644 src/Manager/SerializerManager.php rename src/{ => Manager}/SerializerRegistry.php (63%) create mode 100644 src/NormalizerRegistry.php delete mode 100644 src/NormalizersRegistry.php delete mode 100644 src/Serializer.php delete mode 100644 src/SerializerManager.php rename tests/app/{Object => Objects}/Author.php (85%) rename tests/app/{Object => Objects}/Post.php (86%) rename tests/app/{Object => Objects}/Product.php (93%) rename tests/app/{Object => Objects}/User.php (85%) rename tests/app/{ => Response}/Item.php (71%) rename tests/app/{ => Response}/Response.php (60%) rename tests/app/{ => Response}/array.php (60%) create mode 100644 tests/src/Functional/Bridge/Laravel/Facades/ManagerTest.php rename tests/src/Functional/{ => Bridge/Laravel/Http}/ResponseFactoryTest.php (61%) create mode 100644 tests/src/Functional/ConfigTest.php create mode 100644 tests/src/Functional/EncoderRegistryTest.php delete mode 100644 tests/src/Functional/EncodersRegistryTest.php create mode 100644 tests/src/Functional/Manager/SerializerManagerTest.php create mode 100644 tests/src/Functional/Manager/SerializerRegistryTest.php create mode 100644 tests/src/Functional/Manager/SerializerTest.php rename tests/src/Functional/{NormalizersRegistryTest.php => NormalizerRegistryTest.php} (68%) delete mode 100644 tests/src/Functional/SerializerManagerTest.php delete mode 100644 tests/src/Functional/SerializerTest.php create mode 100644 tests/src/Unit/Normalizers/RamseyUuidNormalizerTest.php diff --git a/composer.json b/composer.json index 17b4ffc..1f06cc2 100644 --- a/composer.json +++ b/composer.json @@ -58,7 +58,7 @@ "wayofdev/cs-fixer-config": "^1.5" }, "suggest": { - "symfony/yaml": "For using the YamlEncoder." + "symfony/yaml": "Required only if YamlEncoder support is needed." }, "autoload": { "psr-4": { @@ -118,7 +118,7 @@ "stan:ci": "phpstan analyse --memory-limit=2G --error-format=github", "test": [ "@putenv XDEBUG_MODE=coverage", - "pest --color=always" + "pest --color=always -v" ], "test:arch": [ "@putenv XDEBUG_MODE=coverage", diff --git a/composer.lock b/composer.lock index d852634..b662e3f 100644 --- a/composer.lock +++ b/composer.lock @@ -1052,16 +1052,16 @@ }, { "name": "laravel/framework", - "version": "v11.10.0", + "version": "v11.11.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "99b4255194912044b75ab72329f8c19e6345720e" + "reference": "194102876df42f9f5bb618efa55fa7e15ebf40aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/99b4255194912044b75ab72329f8c19e6345720e", - "reference": "99b4255194912044b75ab72329f8c19e6345720e", + "url": "https://api.github.com/repos/laravel/framework/zipball/194102876df42f9f5bb618efa55fa7e15ebf40aa", + "reference": "194102876df42f9f5bb618efa55fa7e15ebf40aa", "shasum": "" }, "require": { @@ -1164,7 +1164,7 @@ "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.6", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^9.0.15", + "orchestra/testbench-core": "^9.1.5", "pda/pheanstalk": "^5.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.5|^11.0", @@ -1253,20 +1253,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-06-04T13:45:55+00:00" + "time": "2024-06-18T17:40:27+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.23", + "version": "v0.1.24", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400" + "reference": "409b0b4305273472f3754826e68f4edbd0150149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/9bc4df7c699b0452c6b815e64a2d84b6d7f99400", - "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400", + "url": "https://api.github.com/repos/laravel/prompts/zipball/409b0b4305273472f3754826e68f4edbd0150149", + "reference": "409b0b4305273472f3754826e68f4edbd0150149", "shasum": "" }, "require": { @@ -1309,9 +1309,9 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.23" + "source": "https://github.com/laravel/prompts/tree/v0.1.24" }, - "time": "2024-05-27T13:53:20+00:00" + "time": "2024-06-17T13:58:22+00:00" }, { "name": "laravel/serializable-closure", @@ -6820,16 +6820,16 @@ }, { "name": "ergebnis/phpunit-slow-test-detector", - "version": "2.14.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/ergebnis/phpunit-slow-test-detector.git", - "reference": "9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2" + "reference": "d9e4ea11d0e7bf1e54df5385bfd94b5156ab0a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2", - "reference": "9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2", + "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/d9e4ea11d0e7bf1e54df5385bfd94b5156ab0a29", + "reference": "d9e4ea11d0e7bf1e54df5385bfd94b5156ab0a29", "shasum": "" }, "require": { @@ -6837,14 +6837,14 @@ "phpunit/phpunit": "^6.5.0 || ^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0" }, "require-dev": { - "ergebnis/composer-normalize": "^2.42.0", + "ergebnis/composer-normalize": "^2.43.0", "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.25.1", + "ergebnis/php-cs-fixer-config": "^6.31.0", "fakerphp/faker": "~1.20.0", "psalm/plugin-phpunit": "~0.19.0", "psr/container": "~1.0.0", - "rector/rector": "^1.0.4", - "vimeo/psalm": "^5.23.1" + "rector/rector": "^1.1.0", + "vimeo/psalm": "^5.24.0" }, "type": "library", "extra": { @@ -6883,7 +6883,7 @@ "security": "https://github.com/ergebnis/phpunit-slow-test-detector/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/phpunit-slow-test-detector" }, - "time": "2024-04-08T06:35:34+00:00" + "time": "2024-06-16T18:21:35+00:00" }, { "name": "evenement/evenement", @@ -7230,16 +7230,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.58.1", + "version": "v3.59.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff" + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/04e9424025677a86914b9a4944dbbf4060bb0aff", - "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", "shasum": "" }, "require": { @@ -7269,16 +7269,16 @@ "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", - "infection/infection": "^0.27.11", + "facile-it/paraunit": "^1.3 || ^2.3", + "infection/infection": "^0.29.5", "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", + "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, @@ -7293,7 +7293,10 @@ "autoload": { "psr-4": { "PhpCsFixer\\": "src/" - } + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7318,7 +7321,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.58.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" }, "funding": [ { @@ -7326,7 +7329,7 @@ "type": "github" } ], - "time": "2024-05-29T16:39:07+00:00" + "time": "2024-06-16T14:17:03+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -8412,25 +8415,25 @@ }, { "name": "orchestra/canvas", - "version": "v9.0.2", + "version": "v9.0.3", "source": { "type": "git", "url": "https://github.com/orchestral/canvas.git", - "reference": "1bb5fea96fbba7a63c1f6f80651ac670ceb1fb5e" + "reference": "bed541346ffae1b9246afae4d196e8fc10ac9067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/canvas/zipball/1bb5fea96fbba7a63c1f6f80651ac670ceb1fb5e", - "reference": "1bb5fea96fbba7a63c1f6f80651ac670ceb1fb5e", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/bed541346ffae1b9246afae4d196e8fc10ac9067", + "reference": "bed541346ffae1b9246afae4d196e8fc10ac9067", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "composer/semver": "^3.0", - "illuminate/console": "^11.1.1", - "illuminate/database": "^11.1.1", - "illuminate/filesystem": "^11.1.1", - "illuminate/support": "^11.1.1", + "illuminate/console": "^11.10", + "illuminate/database": "^11.10", + "illuminate/filesystem": "^11.10", + "illuminate/support": "^11.10", "orchestra/canvas-core": "^9.0", "orchestra/testbench-core": "^9.0", "php": "^8.2", @@ -8438,10 +8441,10 @@ "symfony/yaml": "^7.0" }, "require-dev": { - "laravel/framework": "^11.1.1", + "laravel/framework": "^11.10", "laravel/pint": "^1.6", "mockery/mockery": "^1.6", - "phpstan/phpstan": "^1.10.6", + "phpstan/phpstan": "^1.11", "phpunit/phpunit": "^11.0", "spatie/laravel-ray": "^1.35" }, @@ -8481,9 +8484,9 @@ "description": "Code Generators for Laravel Applications and Packages", "support": { "issues": "https://github.com/orchestral/canvas/issues", - "source": "https://github.com/orchestral/canvas/tree/v9.0.2" + "source": "https://github.com/orchestral/canvas/tree/v9.0.3" }, - "time": "2024-03-28T17:06:53+00:00" + "time": "2024-06-18T10:10:33+00:00" }, { "name": "orchestra/canvas-core", @@ -9560,16 +9563,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.11.4", + "version": "1.11.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9100a76ce8015b9aa7125b9171ae3a76887b6c82" + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9100a76ce8015b9aa7125b9171ae3a76887b6c82", - "reference": "9100a76ce8015b9aa7125b9171ae3a76887b6c82", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/490f0ae1c92b082f154681d7849aee776a7c1443", + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443", "shasum": "" }, "require": { @@ -9614,7 +9617,7 @@ "type": "github" } ], - "time": "2024-06-06T12:19:22+00:00" + "time": "2024-06-17T15:10:54+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -11156,16 +11159,16 @@ }, { "name": "sanmai/pipeline", - "version": "v6.10", + "version": "v6.11", "source": { "type": "git", "url": "https://github.com/sanmai/pipeline.git", - "reference": "cbd2ea30ba8bef596b8dad1adb9c92fb2987e430" + "reference": "a5fa2a6c6ca93efa37e7c24aab72f47448a6b110" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/pipeline/zipball/cbd2ea30ba8bef596b8dad1adb9c92fb2987e430", - "reference": "cbd2ea30ba8bef596b8dad1adb9c92fb2987e430", + "url": "https://api.github.com/repos/sanmai/pipeline/zipball/a5fa2a6c6ca93efa37e7c24aab72f47448a6b110", + "reference": "a5fa2a6c6ca93efa37e7c24aab72f47448a6b110", "shasum": "" }, "require": { @@ -11209,7 +11212,7 @@ "description": "General-purpose collections pipeline", "support": { "issues": "https://github.com/sanmai/pipeline/issues", - "source": "https://github.com/sanmai/pipeline/tree/v6.10" + "source": "https://github.com/sanmai/pipeline/tree/v6.11" }, "funding": [ { @@ -11217,7 +11220,7 @@ "type": "github" } ], - "time": "2024-03-16T01:33:30+00:00" + "time": "2024-06-15T03:11:19+00:00" }, { "name": "sebastian/cli-parser", @@ -13270,16 +13273,16 @@ }, { "name": "wayofdev/cs-fixer-config", - "version": "v1.5.1", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/wayofdev/php-cs-fixer-config.git", - "reference": "1edacc13db903e85ab42d5ff7d5fc04d11663d8e" + "reference": "aa0aae244772672f617de6e74d85ff81532f7e82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wayofdev/php-cs-fixer-config/zipball/1edacc13db903e85ab42d5ff7d5fc04d11663d8e", - "reference": "1edacc13db903e85ab42d5ff7d5fc04d11663d8e", + "url": "https://api.github.com/repos/wayofdev/php-cs-fixer-config/zipball/aa0aae244772672f617de6e74d85ff81532f7e82", + "reference": "aa0aae244772672f617de6e74d85ff81532f7e82", "shasum": "" }, "require": { @@ -13295,10 +13298,10 @@ "phpstan/phpstan-phpunit": "^1.4", "phpstan/phpstan-strict-rules": "^1.6", "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "~0.19.0", + "psalm/plugin-phpunit": "^0.19", "rector/rector": "^1.1", "roave/infection-static-analysis-plugin": "^1.35", - "vimeo/psalm": "^5.23.1" + "vimeo/psalm": "^5.24" }, "type": "library", "extra": { @@ -13322,7 +13325,7 @@ "email": "the@wayof.dev" } ], - "description": "Package adds custom rule-sets to php-cs-fixer", + "description": "๐Ÿงน Adds custom rule-sets to PHP CS Fixer for consistent coding standards.", "homepage": "https://wayof.dev", "keywords": [ "code-quality", @@ -13337,6 +13340,7 @@ ], "support": { "issues": "https://github.com/wayofdev/php-cs-fixer-config/issues", + "security": "https://github.com/wayofdev/php-cs-fixer-config/blob/master/.github/SECURITY.md", "source": "https://github.com/wayofdev/php-cs-fixer-config" }, "funding": [ @@ -13345,7 +13349,7 @@ "type": "github" } ], - "time": "2024-06-05T19:23:33+00:00" + "time": "2024-06-18T09:13:20+00:00" }, { "name": "zbateson/mail-mime-parser", diff --git a/config/serializer.php b/config/serializer.php index 4750a60..006073d 100644 --- a/config/serializer.php +++ b/config/serializer.php @@ -2,43 +2,63 @@ declare(strict_types=1); +use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; + +/** + * @return array{ + * default: string, + * debug: bool, + * normalizerRegistrationStrategy: class-string, + * encoderRegistrationStrategy: class-string, + * metadataLoader: class-string|null, + * } + */ return [ /* * The 'default' key specifies the name (format) of the default serializer * that will be registered in SerializerManager. This can be overridden * by setting the SERIALIZER_DEFAULT_FORMAT environment variable. */ - 'default' => env('SERIALIZER_DEFAULT_FORMAT', 'json'), + 'default' => env('SERIALIZER_DEFAULT_FORMAT', 'symfony-json'), /* - * The 'serializers' key lists the supported serializers: json, csv, xml, yaml. - * Set a serializer to "false" to disable it. This can be overridden by setting - * the corresponding SERIALIZER_USE_* environment variable. + * Specifies whether to enable debug mode for ProblemNormalizer. */ - 'serializers' => [ - 'json' => env('SERIALIZER_USE_JSON', true), - 'csv' => env('SERIALIZER_USE_CSV', false), - 'xml' => env('SERIALIZER_USE_XML', false), - 'yaml' => env('SERIALIZER_USE_YAML', false), - ], + 'debug' => env('SERIALIZER_DEBUG_MODE', env('APP_DEBUG', false)), /* - * The 'normalizers' key allows you to register your custom normalizers. - * Default normalizers are registered in src/NormalizersRegistry.php. - * Uncomment the line below and replace with your custom normalizer if needed - * to merge with default ones. + * Allows to specify additional, custom serializers that will be registered in SerializerManager. */ - 'normalizers' => [ - // Symfony\Component\Messenger\Transport\Serialization\Normalizer\FlattenExceptionNormalizer + 'manager' => [ + 'serializers' => [ + 'json' => '', + 'php' => '', + ], ], /* - * The 'encoders' key allows you to register your custom encoders. - * Default encoders are registered in src/EncodersRegistry.php. - * Default encoders include JsonEncoder, CsvEncoder, XmlEncoder, and YamlEncoder. - * Uncomment the line below and replace with your custom encoder if needed. + * Allows you to specify the strategy class for registering your normalizers. + * Default is 'WayOfDev\Serializer\DefaultNormalizerRegistrationStrategy'. */ - 'encoders' => [ - // Symfony\Component\Serializer\Encoder\JsonEncoder - ], + 'normalizerRegistrationStrategy' => WayOfDev\Serializer\DefaultNormalizerRegistrationStrategy::class, + + /* + * Allows you to register your custom encoders. + * Default encoders are registered in src/DefaultEncoderRegistrationStrategy.php. + * + * Default encoders include: + * JsonEncoder, + * CsvEncoder, + * XmlEncoder, + * YamlEncoder. + * + * You can replace the default encoders with your custom ones by implementing + * your own registration strategy. + */ + 'encoderRegistrationStrategy' => WayOfDev\Serializer\DefaultEncoderRegistrationStrategy::class, + + /* + * Allows you to register your custom metadata loader. + */ + 'metadataLoader' => null, ]; diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 0221ab1..713ae18 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,75 +1,5 @@ parameters: ignoreErrors: - - - message: "#^Access to an undefined property WayOfDev\\\\Serializer\\\\Config\\:\\:\\$config\\.$#" - count: 1 - path: src/Config.php - - - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" - count: 1 - path: src/Config.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:__construct\\(\\) has parameter \\$encoders with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Config.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:__construct\\(\\) has parameter \\$normalizers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Config.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:encoders\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Config.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:fromArray\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Config.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Config\\:\\:normalizers\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Config.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\ConfigRepository\\:\\:encoders\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Contracts/ConfigRepository.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\ConfigRepository\\:\\:normalizers\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Contracts/ConfigRepository.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\NormalizersRegistryInterface\\:\\:all\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Contracts/NormalizersRegistryInterface.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\SerializerInterface\\:\\:normalize\\(\\) has no return type specified\\.$#" - count: 1 - path: src/Contracts/SerializerInterface.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Contracts\\\\SerializerInterface\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Contracts/SerializerInterface.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Normalizers/RamseyUuidNormalizer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Normalizers/RamseyUuidNormalizer.php - - message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:normalize\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 @@ -80,162 +10,7 @@ parameters: count: 1 path: src/Normalizers/RamseyUuidNormalizer.php - - - message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Normalizers/RamseyUuidNormalizer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:supportsNormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Normalizers/RamseyUuidNormalizer.php - - message: "#^Parameter \\#1 \\$object \\(Ramsey\\\\Uuid\\\\UuidInterface\\) of method WayOfDev\\\\Serializer\\\\Normalizers\\\\RamseyUuidNormalizer\\:\\:normalize\\(\\) should be contravariant with parameter \\$object \\(mixed\\) of method Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface\\:\\:normalize\\(\\)$#" count: 1 path: src/Normalizers/RamseyUuidNormalizer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\NormalizersRegistry\\:\\:__construct\\(\\) has parameter \\$normalizers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/NormalizersRegistry.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:fromArray\\(\\) has parameter \\$response with no value type specified in iterable type array\\.$#" - count: 1 - path: src/ResponseFactory.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:serializeResponse\\(\\) has parameter \\$response with no value type specified in iterable type array\\.$#" - count: 1 - path: src/ResponseFactory.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:withContext\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/ResponseFactory.php - - - - message: "#^Property WayOfDev\\\\Serializer\\\\ResponseFactory\\:\\:\\$context type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/ResponseFactory.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:decode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:encode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:normalize\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:normalize\\(\\) return type with generic class ArrayObject does not specify its types\\: TKey, TValue$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:serialize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsDecoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsEncoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:supportsNormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\Serializer\\:\\:unserialize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Serializer.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\SerializerManager\\:\\:normalize\\(\\) has no return type specified\\.$#" - count: 1 - path: src/SerializerManager.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\SerializerManager\\:\\:normalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/SerializerManager.php - - - - message: "#^Method WayOfDev\\\\Serializer\\\\SerializerRegistry\\:\\:__construct\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/SerializerRegistry.php - - - - message: "#^Method WayOfDev\\\\App\\\\NestedObjects\\\\City\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: tests/app/NestedObjects/City.php - - - - message: "#^Class WayOfDev\\\\App\\\\Response extends generic class ArrayIterator but does not specify its types\\: TKey, TValue$#" - count: 1 - path: tests/app/Response.php - - - - message: "#^Method WayOfDev\\\\App\\\\Response\\:\\:__construct\\(\\) has parameter \\$items with no value type specified in iterable type array\\.$#" - count: 1 - path: tests/app/Response.php - - - - message: "#^Method WayOfDev\\\\App\\\\Response\\:\\:create\\(\\) has parameter \\$items with no value type specified in iterable type array\\.$#" - count: 1 - path: tests/app/Response.php - - - - message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\Normalizers\\\\RamseyUuidNormalizerTest\\:\\:serializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" - count: 1 - path: tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php - - - - message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\NormalizersRegistryTest\\:\\:assertContainsInstanceOf\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#" - count: 1 - path: tests/src/Functional/NormalizersRegistryTest.php - - - - message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\SerializerManagerTest\\:\\:serializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" - count: 1 - path: tests/src/Functional/SerializerManagerTest.php - - - - message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\SerializerManagerTest\\:\\:unserializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" - count: 1 - path: tests/src/Functional/SerializerManagerTest.php - - - - message: "#^Method WayOfDev\\\\Tests\\\\Functional\\\\SerializerTest\\:\\:serializeDataProvider\\(\\) return type has no value type specified in iterable type Traversable\\.$#" - count: 1 - path: tests/src/Functional/SerializerTest.php diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 87a4bd5..31cb23f 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -2,7 +2,7 @@ includes: - phpstan-baseline.neon parameters: - level: 6 + level: 8 paths: - config/ - src/ diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 16fc71a..48d54a2 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -17,6 +17,9 @@ tests/src/Functional + + tests/src/Unit + diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 03e3733..77b5d46 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,273 +1,180 @@ + + + + + - get(LoaderInterface::class)]]> - encoders()]]> - normalizers()]]> - all()]]> - - all()]]> - - + + - $encoder instanceof EncoderInterface ? $encoder : $app->get($encoder), - $config->encoders() - )]]> + $config->get('serializer.default'), + 'debug' => $config->get('serializer.debug'), + 'normalizerRegistrationStrategy' => $config->get('serializer.normalizerRegistrationStrategy'), + 'encoderRegistrationStrategy' => $config->get('serializer.encoderRegistrationStrategy'), + 'metadataLoader' => $config->get('serializer.metadataLoader'), + ]]]> - - - - - - + + - + + - - - - - - - - make(ConfigRepository::class)->metadataLoader()]]> + make($strategyFQCN)]]> + make($strategyFQCN, [ + 'loader' => $loader, + 'debugMode' => $config->debug(), + ])]]> - - - - - - - config['metadataLoader']]]> - - - - - - config['metadataLoader']]]> - - - defaultSerializer]]> - encoders]]> - normalizers]]> - - - - - - - - + + encoderRegistrationStrategy === null]]> + normalizerRegistrationStrategy === null]]> + + + + + + + - - - + - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - + - + - - - - + - - - - - - - + + + + + - - - - - - + - + - - - - + + - - - - - - - - + + + + + - + - + + + + - - - - - + + + - + - serialize($payload, $format)]]> + app?->make(EncoderRegistrationStrategy::class)]]> + app?->make(EncoderRegistrationStrategy::class)]]> - - - - - - - - - - - - + + app?->make(EncoderRegistrationStrategy::class)]]> + app?->make(EncoderRegistrationStrategy::class)]]> + - - - + + + - - - - + - - - - + - - - - - - - - + - - - - - + + + + - - - serializer]]> - - - - + - - - - - - + - + - serialize($payload, $format)]]> + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + serialize($payload, $format)]]> + - - - - - - + + - - + + - - - - + + + + + + + + + + diff --git a/src/Bridge/Laravel/Facades/Manager.php b/src/Bridge/Laravel/Facades/Manager.php new file mode 100644 index 0000000..39c4c2c --- /dev/null +++ b/src/Bridge/Laravel/Facades/Manager.php @@ -0,0 +1,15 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + declare(strict_types=1); -namespace WayOfDev\Serializer; +namespace WayOfDev\Serializer\Bridge\Laravel\Http; interface HttpCode { diff --git a/src/ResponseFactory.php b/src/Bridge/Laravel/Http/ResponseFactory.php similarity index 75% rename from src/ResponseFactory.php rename to src/Bridge/Laravel/Http/ResponseFactory.php index 568afed..e9929b3 100644 --- a/src/ResponseFactory.php +++ b/src/Bridge/Laravel/Http/ResponseFactory.php @@ -2,25 +2,27 @@ declare(strict_types=1); -namespace WayOfDev\Serializer; +namespace WayOfDev\Serializer\Bridge\Laravel\Http; use Illuminate\Http\Response as IlluminateResponse; +use Stringable; use WayOfDev\Serializer\Contracts\SerializerInterface; +use WayOfDev\Serializer\Manager\SerializerManager; final class ResponseFactory { - /** - * @property SerializerInterface $serializer - */ private readonly SerializerInterface $serializer; + /** + * @var array + */ private array $context = []; private int $status = HttpCode::HTTP_OK; public function __construct(SerializerManager $serializer) { - $this->serializer = $serializer->getSerializer('json'); + $this->serializer = $serializer->serializer('symfony-json'); } public function withStatusCode(int $code): self @@ -30,6 +32,9 @@ public function withStatusCode(int $code): self return $this; } + /** + * @param array $context + */ public function withContext(array $context): self { $this->context = $context; @@ -44,6 +49,9 @@ public function create(object $response): IlluminateResponse return $this->respondWithJson($content, $this->status); } + /** + * @param array $response + */ public function fromArray(array $response): IlluminateResponse { $content = $this->serializeResponse($response); @@ -56,14 +64,15 @@ public function empty(): IlluminateResponse return $this->respondWithJson('', HttpCode::HTTP_NO_CONTENT); } - private function serializeResponse(array|object $response): string + /** + * @param array|object $response + */ + private function serializeResponse(array|object $response): string|Stringable { - $normalizedResponse = $this->serializer->normalize( - data: $response, + return $this->serializer->serialize( + payload: $response, context: $this->context ); - - return $this->serializer->serialize($normalizedResponse); } private function respondWithJson(mixed $content, int $status): IlluminateResponse diff --git a/src/Bridge/Laravel/Providers/SerializerServiceProvider.php b/src/Bridge/Laravel/Providers/SerializerServiceProvider.php index b2b4c5e..10fbc9b 100644 --- a/src/Bridge/Laravel/Providers/SerializerServiceProvider.php +++ b/src/Bridge/Laravel/Providers/SerializerServiceProvider.php @@ -7,26 +7,23 @@ use Illuminate\Contracts\Config\Repository; use Illuminate\Contracts\Foundation\Application; use Illuminate\Support\ServiceProvider; -use Symfony\Component\Serializer\Encoder\EncoderInterface; use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; -use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; -use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Serializer as SymfonySerializer; use Symfony\Component\Serializer\SerializerInterface as SymfonySerializerInterface; use Symfony\Component\Yaml\Dumper; use WayOfDev\Serializer\Config; use WayOfDev\Serializer\Contracts\ConfigRepository; -use WayOfDev\Serializer\Contracts\EncodersRegistryInterface; -use WayOfDev\Serializer\Contracts\NormalizersRegistryInterface; -use WayOfDev\Serializer\Contracts\SerializerInterface; +use WayOfDev\Serializer\Contracts\EncoderRegistrationStrategy; +use WayOfDev\Serializer\Contracts\EncoderRegistryInterface; +use WayOfDev\Serializer\Contracts\NormalizerRegistrationStrategy; +use WayOfDev\Serializer\Contracts\NormalizerRegistryInterface; use WayOfDev\Serializer\Contracts\SerializerRegistryInterface; -use WayOfDev\Serializer\EncodersRegistry; -use WayOfDev\Serializer\NormalizersRegistry; -use WayOfDev\Serializer\Serializer; -use WayOfDev\Serializer\SerializerManager; -use WayOfDev\Serializer\SerializerRegistry; +use WayOfDev\Serializer\EncoderRegistry; +use WayOfDev\Serializer\Manager\Serializer; +use WayOfDev\Serializer\Manager\SerializerManager; +use WayOfDev\Serializer\Manager\SerializerRegistry; +use WayOfDev\Serializer\NormalizerRegistry; -use function array_map; use function class_exists; final class SerializerServiceProvider extends ServiceProvider @@ -47,10 +44,10 @@ public function register(): void $this->mergeConfigFrom(__DIR__ . '/../../../../config/serializer.php', 'serializer'); $this->registerConfig(); - $this->registerNormalizersRegistry(); - $this->registerEncodersRegistry(); - $this->registerSerializerRegistry(); $this->registerLoader(); + $this->registerNormalizerRegistry(); + $this->registerEncoderRegistry(); + $this->registerSerializerRegistry(); $this->registerSerializerManager(); $this->registerSymfonySerializer(); } @@ -59,58 +56,80 @@ private function registerConfig(): void { $this->app->singleton(ConfigRepository::class, static function (Application $app) { /** @var Repository $config */ - $config = $app['config']; + $config = $app->get(Repository::class); return Config::fromArray([ 'default' => $config->get('serializer.default'), - 'normalizers' => $config->get('serializer.normalizers'), - 'encoders' => $config->get('serializer.encoders'), + 'debug' => $config->get('serializer.debug'), + 'normalizerRegistrationStrategy' => $config->get('serializer.normalizerRegistrationStrategy'), + 'encoderRegistrationStrategy' => $config->get('serializer.encoderRegistrationStrategy'), + 'metadataLoader' => $config->get('serializer.metadataLoader'), ]); }); } - private function registerNormalizersRegistry(): void + private function registerLoader(): void { - $this->app->singleton(NormalizersRegistryInterface::class, function (Application $app): NormalizersRegistryInterface { + $this->app->singleton(LoaderInterface::class, static function (Application $app): LoaderInterface { + /** @var Config $config */ $config = $app->make(ConfigRepository::class); - $normalizers = array_map(fn (mixed $normalizer) => match (true) { - $normalizer instanceof NormalizerInterface, $normalizer instanceof DenormalizerInterface => $normalizer, - default => $this->app->get($normalizer) - }, $config->normalizers()); + return $config->metadataLoader(); + }); + } - return new NormalizersRegistry( - $app->get(LoaderInterface::class), - true, - $normalizers - ); + private function registerNormalizerRegistry(): void + { + $this->app->singleton(NormalizerRegistrationStrategy::class, static function (Application $app): NormalizerRegistrationStrategy { + /** @var Config $config */ + $config = $app->make(ConfigRepository::class); + + /** @var LoaderInterface $loader */ + $loader = $app->get(LoaderInterface::class); + + $strategyFQCN = $config->normalizerRegistrationStrategy(); + + return $app->make($strategyFQCN, [ + 'loader' => $loader, + 'debugMode' => $config->debug(), + ]); + }); + + $this->app->singleton(NormalizerRegistryInterface::class, static function (Application $app): NormalizerRegistryInterface { + $strategy = $app->get(NormalizerRegistrationStrategy::class); + + return new NormalizerRegistry($strategy); }); } - private function registerEncodersRegistry(): void + private function registerEncoderRegistry(): void { - $this->app->singleton(EncodersRegistryInterface::class, static function (Application $app): EncodersRegistryInterface { + $this->app->singleton(EncoderRegistrationStrategy::class, static function (Application $app): EncoderRegistrationStrategy { + /** @var Config $config */ $config = $app->make(ConfigRepository::class); - return new EncodersRegistry( - array_map( - static fn (string|EncoderInterface $encoder) => $encoder instanceof EncoderInterface ? $encoder : $app->get($encoder), - $config->encoders() - ) - ); + $strategyFQCN = $config->encoderRegistrationStrategy(); + + return $app->make($strategyFQCN); + }); + + $this->app->singleton(EncoderRegistryInterface::class, static function (Application $app): EncoderRegistryInterface { + $strategy = $app->get(EncoderRegistrationStrategy::class); + + return new EncoderRegistry($strategy); }); } private function registerSerializerRegistry(): void { $this->app->singleton(SerializerRegistryInterface::class, static function (Application $app): SerializerRegistryInterface { - // $config = $app->make(ConfigRepository::class); + /** @var SymfonySerializer $serializer */ $serializer = $app->make(SymfonySerializerInterface::class); $serializers = [ - 'json' => new Serializer($serializer, 'json'), - 'csv' => new Serializer($serializer, 'csv'), - 'xml' => new Serializer($serializer, 'xml'), + 'symfony-json' => new Serializer($serializer, 'json'), + 'symfony-csv' => new Serializer($serializer, 'csv'), + 'symfony-xml' => new Serializer($serializer, 'xml'), ]; if (class_exists(Dumper::class)) { @@ -121,11 +140,22 @@ private function registerSerializerRegistry(): void }); } - private function registerLoader(): void + private function registerSymfonySerializer(): void { - $this->app->singleton(LoaderInterface::class, static function (Application $app): LoaderInterface { - return $app->make(ConfigRepository::class)->metadataLoader(); + $this->app->singleton(SymfonySerializerInterface::class, static function (Application $app): SymfonySerializer { + /** @var NormalizerRegistryInterface $normalizers */ + $normalizers = $app->make(NormalizerRegistryInterface::class); + + /** @var EncoderRegistryInterface $encoders */ + $encoders = $app->make(EncoderRegistryInterface::class); + + return new SymfonySerializer( + $normalizers->all(), + $encoders->all() + ); }); + + $this->app->singleton(SymfonySerializer::class, SymfonySerializerInterface::class); } private function registerSerializerManager(): void @@ -133,23 +163,13 @@ private function registerSerializerManager(): void $this->app->singleton(SerializerManager::class, static function (Application $app): SerializerManager { /** @var Config $config */ $config = $app->make(ConfigRepository::class); + + /** @var SerializerRegistry $serializers */ $serializers = $app->make(SerializerRegistryInterface::class); return new SerializerManager($serializers, $config->defaultSerializer()); }); - $this->app->alias(SerializerManager::class, SerializerInterface::class); - } - - private function registerSymfonySerializer(): void - { - $this->app->singleton(SymfonySerializerInterface::class, static function (Application $app): SymfonySerializer { - $normalizers = $app->make(NormalizersRegistryInterface::class); - $encoders = $app->make(EncodersRegistryInterface::class); - - return new SymfonySerializer($normalizers->all(), $encoders->all()); - }); - - $this->app->singleton(Serializer::class, SerializerInterface::class); + $this->app->alias(SerializerManager::class, 'serializer.manager'); } } diff --git a/src/Config.php b/src/Config.php index b446ecb..5998e19 100644 --- a/src/Config.php +++ b/src/Config.php @@ -7,6 +7,8 @@ use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader; use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; use WayOfDev\Serializer\Contracts\ConfigRepository; +use WayOfDev\Serializer\Contracts\EncoderRegistrationStrategy; +use WayOfDev\Serializer\Contracts\NormalizerRegistrationStrategy; use WayOfDev\Serializer\Exceptions\MissingRequiredAttributes; use function array_diff; @@ -17,17 +19,33 @@ final class Config implements ConfigRepository { private const REQUIRED_FIELDS = [ 'default', - 'normalizers', - 'encoders', + 'debug', + 'normalizerRegistrationStrategy', + 'encoderRegistrationStrategy', + 'metadataLoader', ]; public function __construct( - private readonly string $defaultSerializer, - private readonly array $normalizers, - private readonly array $encoders + private readonly string $defaultSerializer = 'symfony-json', + private readonly bool $debug = false, + /** @var class-string */ + private readonly ?string $normalizerRegistrationStrategy = null, + /** @var class-string */ + private readonly ?string $encoderRegistrationStrategy = null, + /** @var class-string|null */ + private readonly ?string $metadataLoader = null, ) { } + /** + * @param array{ + * default: string, + * debug: bool, + * normalizerRegistrationStrategy: class-string, + * encoderRegistrationStrategy: class-string, + * metadataLoader: class-string|null, + * } $config + */ public static function fromArray(array $config): self { $missingAttributes = array_diff(self::REQUIRED_FIELDS, array_keys($config)); @@ -40,30 +58,51 @@ public static function fromArray(array $config): self return new self( $config['default'], - $config['normalizers'], - $config['encoders'], + $config['debug'], + $config['normalizerRegistrationStrategy'], + $config['encoderRegistrationStrategy'], + $config['metadataLoader'] ); } public function defaultSerializer(): string { - return $this->defaultSerializer ?? 'json'; + return $this->defaultSerializer; } - public function normalizers(): array + public function debug(): bool { - return $this->normalizers ?? []; + return $this->debug; } - public function encoders(): array + /** + * @return class-string + */ + public function normalizerRegistrationStrategy(): string { - return $this->encoders ?? []; + if ($this->normalizerRegistrationStrategy === null) { + return DefaultNormalizerRegistrationStrategy::class; + } + + return $this->normalizerRegistrationStrategy; + } + + /** + * @return class-string + */ + public function encoderRegistrationStrategy(): string + { + if ($this->encoderRegistrationStrategy === null) { + return DefaultEncoderRegistrationStrategy::class; + } + + return $this->encoderRegistrationStrategy; } public function metadataLoader(): LoaderInterface { - if (! empty($this->config['metadataLoader'])) { - return $this->config['metadataLoader']; + if ($this->metadataLoader !== null) { + return new ($this->metadataLoader); } return new AttributeLoader(); diff --git a/src/Contracts/ConfigRepository.php b/src/Contracts/ConfigRepository.php index e979b75..192b86a 100644 --- a/src/Contracts/ConfigRepository.php +++ b/src/Contracts/ConfigRepository.php @@ -8,9 +8,15 @@ interface ConfigRepository { - public function normalizers(): array; + /** + * @return class-string + */ + public function normalizerRegistrationStrategy(): string; - public function encoders(): array; + /** + * @return class-string + */ + public function encoderRegistrationStrategy(): string; public function metadataLoader(): LoaderInterface; } diff --git a/src/Contracts/EncoderRegistrationStrategy.php b/src/Contracts/EncoderRegistrationStrategy.php new file mode 100644 index 0000000..334c31c --- /dev/null +++ b/src/Contracts/EncoderRegistrationStrategy.php @@ -0,0 +1,16 @@ + + */ + public function encoders(): iterable; +} diff --git a/src/Contracts/EncodersRegistryInterface.php b/src/Contracts/EncoderRegistryInterface.php similarity index 59% rename from src/Contracts/EncodersRegistryInterface.php rename to src/Contracts/EncoderRegistryInterface.php index d1f55b4..072267a 100644 --- a/src/Contracts/EncodersRegistryInterface.php +++ b/src/Contracts/EncoderRegistryInterface.php @@ -4,19 +4,20 @@ namespace WayOfDev\Serializer\Contracts; +use Symfony\Component\Serializer\Encoder\DecoderInterface; use Symfony\Component\Serializer\Encoder\EncoderInterface; -interface EncodersRegistryInterface +interface EncoderRegistryInterface { public function register(EncoderInterface $encoder): void; /** - * @return EncoderInterface[] + * @return list */ public function all(): array; /** - * @phpstan-param class-string $className + * @param class-string $className */ public function has(string $className): bool; } diff --git a/src/Contracts/NormalizerRegistrationStrategy.php b/src/Contracts/NormalizerRegistrationStrategy.php new file mode 100644 index 0000000..ca4e2bc --- /dev/null +++ b/src/Contracts/NormalizerRegistrationStrategy.php @@ -0,0 +1,16 @@ +}> + */ + public function normalizers(): iterable; +} diff --git a/src/Contracts/NormalizersRegistryInterface.php b/src/Contracts/NormalizerRegistryInterface.php similarity index 81% rename from src/Contracts/NormalizersRegistryInterface.php rename to src/Contracts/NormalizerRegistryInterface.php index d7c30e9..890cd65 100644 --- a/src/Contracts/NormalizersRegistryInterface.php +++ b/src/Contracts/NormalizerRegistryInterface.php @@ -7,13 +7,16 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; -interface NormalizersRegistryInterface +interface NormalizerRegistryInterface { /** * @param int<0, max> $priority */ public function register(NormalizerInterface|DenormalizerInterface $normalizer, int $priority = 0): void; + /** + * @return array + */ public function all(): array; /** diff --git a/src/Contracts/SerializerException.php b/src/Contracts/SerializerException.php new file mode 100644 index 0000000..835bfd7 --- /dev/null +++ b/src/Contracts/SerializerException.php @@ -0,0 +1,11 @@ + $context Options normalizers/encoders have access to + */ + public function serialize(mixed $payload, ?string $format = null, ?array $context = []): string|Stringable; - public function unserialize(string|Stringable $payload, string|object|null $type = null): mixed; - - public function normalize(mixed $data, ?string $format = null, array $context = []); + /** + * Deserializes data into the given type. + * + * @param array $context + */ + public function deserialize( + string|Stringable $payload, + string|object|null $type = null, + ?string $format = null, + ?array $context = [] + ): mixed; } diff --git a/src/Contracts/SerializerRegistryInterface.php b/src/Contracts/SerializerRegistryInterface.php index cf571f6..24efb4f 100644 --- a/src/Contracts/SerializerRegistryInterface.php +++ b/src/Contracts/SerializerRegistryInterface.php @@ -4,16 +4,21 @@ namespace WayOfDev\Serializer\Contracts; -use WayOfDev\Serializer\Exceptions\SerializerNotFoundException; +use WayOfDev\Serializer\Exceptions\SerializerNotFound; interface SerializerRegistryInterface { public function register(string $name, SerializerInterface $serializer): void; /** - * @throws SerializerNotFoundException + * @throws SerializerNotFound */ public function get(string $name): SerializerInterface; + /** + * @return list + */ + public function all(): array; + public function has(string $name): bool; } diff --git a/src/DefaultEncoderRegistrationStrategy.php b/src/DefaultEncoderRegistrationStrategy.php new file mode 100644 index 0000000..65cadd9 --- /dev/null +++ b/src/DefaultEncoderRegistrationStrategy.php @@ -0,0 +1,29 @@ + + */ + public function encoders(): iterable + { + yield ['encoder' => new Encoder\JsonEncoder()]; + yield ['encoder' => new Encoder\CsvEncoder()]; + yield ['encoder' => new Encoder\XmlEncoder()]; + + if (class_exists(Dumper::class)) { + yield ['encoder' => new Encoder\YamlEncoder()]; + } + } +} diff --git a/src/DefaultNormalizerRegistrationStrategy.php b/src/DefaultNormalizerRegistrationStrategy.php new file mode 100644 index 0000000..5298d8c --- /dev/null +++ b/src/DefaultNormalizerRegistrationStrategy.php @@ -0,0 +1,62 @@ +}> + */ + public function normalizers(): iterable + { + $factory = new ClassMetadataFactory($this->loader); + + yield ['normalizer' => new Normalizer\UnwrappingDenormalizer(), 'priority' => 50]; + yield ['normalizer' => new Normalizer\ProblemNormalizer(debug: $this->debugMode), 'priority' => 100]; + yield ['normalizer' => new Normalizer\UidNormalizer(), 'priority' => 150]; + yield ['normalizer' => new Normalizer\JsonSerializableNormalizer(), 'priority' => 200]; + yield ['normalizer' => new Normalizer\DateTimeNormalizer(), 'priority' => 250]; + yield ['normalizer' => new Normalizer\ConstraintViolationListNormalizer(), 'priority' => 300]; + yield ['normalizer' => new Normalizer\MimeMessageNormalizer(new Normalizer\PropertyNormalizer()), 'priority' => 350]; + yield ['normalizer' => new Normalizer\DateTimeZoneNormalizer(), 'priority' => 400]; + yield ['normalizer' => new Normalizer\DateIntervalNormalizer(), 'priority' => 450]; + yield ['normalizer' => new Normalizer\FormErrorNormalizer(), 'priority' => 500]; + yield ['normalizer' => new Normalizer\BackedEnumNormalizer(), 'priority' => 550]; + yield ['normalizer' => new Normalizer\DataUriNormalizer(), 'priority' => 600]; + yield ['normalizer' => new Normalizer\ArrayDenormalizer(), 'priority' => 650]; + yield ['normalizer' => new Normalizer\ObjectNormalizer( + classMetadataFactory: $factory, + nameConverter: new MetadataAwareNameConverter($factory), + propertyTypeExtractor: new PropertyInfoExtractor( + typeExtractors: [new PhpDocExtractor(), new ReflectionExtractor()] + ) + ), 'priority' => 700]; + + if (interface_exists(UuidInterface::class)) { + yield ['normalizer' => new RamseyUuidNormalizer(), 'priority' => 155]; + } + } +} diff --git a/src/EncoderRegistry.php b/src/EncoderRegistry.php new file mode 100644 index 0000000..bda149a --- /dev/null +++ b/src/EncoderRegistry.php @@ -0,0 +1,50 @@ + + */ + private array $encoders = []; + + public function __construct(EncoderRegistrationStrategy $strategy) + { + foreach ($strategy->encoders() as $encoder) { + $this->register($encoder['encoder']); + } + } + + public function register(EncoderInterface|DecoderInterface $encoder): void + { + if (! $this->has($encoder::class)) { + $this->encoders[$encoder::class] = $encoder; + } + } + + /** + * @return list + */ + public function all(): array + { + return array_values($this->encoders); + } + + /** + * @phpstan-param class-string $className + */ + public function has(string $className): bool + { + return isset($this->encoders[$className]); + } +} diff --git a/src/EncodersRegistry.php b/src/EncodersRegistry.php deleted file mode 100644 index 172591f..0000000 --- a/src/EncodersRegistry.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - private array $encoders = []; - - /** - * @param EncoderInterface[] $encoders - */ - public function __construct(array $encoders = []) - { - if ($encoders === []) { - $this->registerDefaultEncoders(); - } else { - foreach ($encoders as $encoder) { - $this->register($encoder); - } - } - } - - public function register(EncoderInterface $encoder): void - { - if (! $this->has($encoder::class)) { - $this->encoders[$encoder::class] = $encoder; - } - } - - /** - * @return EncoderInterface[] - */ - public function all(): array - { - return array_values($this->encoders); - } - - /** - * @phpstan-param class-string $className - */ - public function has(string $className): bool - { - return isset($this->encoders[$className]); - } - - private function registerDefaultEncoders(): void - { - $this->register(new Encoder\JsonEncoder()); - $this->register(new Encoder\CsvEncoder()); - $this->register(new Encoder\XmlEncoder()); - if (class_exists(Dumper::class)) { - $this->register(new Encoder\YamlEncoder()); - } - } -} diff --git a/src/Exceptions/MissingRequiredAttributes.php b/src/Exceptions/MissingRequiredAttributes.php index d8da152..36c678f 100644 --- a/src/Exceptions/MissingRequiredAttributes.php +++ b/src/Exceptions/MissingRequiredAttributes.php @@ -5,10 +5,11 @@ namespace WayOfDev\Serializer\Exceptions; use InvalidArgumentException; +use WayOfDev\Serializer\Contracts\SerializerException; use function sprintf; -final class MissingRequiredAttributes extends InvalidArgumentException +final class MissingRequiredAttributes extends InvalidArgumentException implements SerializerException { public static function fromArray(string $fields): self { diff --git a/src/Exceptions/SerializerNotFoundException.php b/src/Exceptions/SerializerNotFound.php similarity index 65% rename from src/Exceptions/SerializerNotFoundException.php rename to src/Exceptions/SerializerNotFound.php index f302426..e918ff0 100644 --- a/src/Exceptions/SerializerNotFoundException.php +++ b/src/Exceptions/SerializerNotFound.php @@ -5,10 +5,11 @@ namespace WayOfDev\Serializer\Exceptions; use RuntimeException; +use WayOfDev\Serializer\Contracts\SerializerException; use function sprintf; -final class SerializerNotFoundException extends RuntimeException +final class SerializerNotFound extends RuntimeException implements SerializerException { public function __construct(string $name) { diff --git a/src/Exceptions/UnsupportedTypeException.php b/src/Exceptions/UnsupportedTypeException.php deleted file mode 100644 index 6c67485..0000000 --- a/src/Exceptions/UnsupportedTypeException.php +++ /dev/null @@ -1,16 +0,0 @@ -serializer->serialize($payload, $this->format, $context); + } + + public function deserialize(Stringable|string $payload, object|string|null $type = null, ?string $format = null, ?array $context = []): mixed + { + $context = $context ?? []; + + return $this->serializer->deserialize( + (string) $payload, + is_object($type) ? $type::class : $type, // @phpstan-ignore-line + $this->format, + $context + ); + } +} diff --git a/src/Manager/SerializerManager.php b/src/Manager/SerializerManager.php new file mode 100644 index 0000000..c1b7bae --- /dev/null +++ b/src/Manager/SerializerManager.php @@ -0,0 +1,53 @@ +defaultFormat; + } + + public function serializer(?string $format = null): SerializerInterface + { + return $this->serializers->get($format ?? $this->defaultFormat); + } + + /** + * @param array $context + */ + public function serialize(mixed $payload, ?string $format = null, ?array $context = []): string|Stringable + { + $format = $format ?? $this->defaultFormat; + + return $this->serializer($format)->serialize($payload, $format, $context); + } + + /** + * Deserializes data into the given type. + * + * @param array $context + */ + public function deserialize( + string|Stringable $payload, + string|object|null $type = null, + ?string $format = null, + ?array $context = [] + ): mixed { + $format = $format ?? $this->defaultFormat; + + return $this->serializer($format)->deserialize($payload, $type, $format, $context); + } +} diff --git a/src/SerializerRegistry.php b/src/Manager/SerializerRegistry.php similarity index 63% rename from src/SerializerRegistry.php rename to src/Manager/SerializerRegistry.php index f3ceb34..b181e4d 100644 --- a/src/SerializerRegistry.php +++ b/src/Manager/SerializerRegistry.php @@ -2,20 +2,20 @@ declare(strict_types=1); -namespace WayOfDev\Serializer; +namespace WayOfDev\Serializer\Manager; use WayOfDev\Serializer\Contracts\SerializerInterface; use WayOfDev\Serializer\Contracts\SerializerRegistryInterface; -use WayOfDev\Serializer\Exceptions\SerializerNotFoundException; +use WayOfDev\Serializer\Exceptions\SerializerNotFound; + +use function array_values; class SerializerRegistry implements SerializerRegistryInterface { /** - * @var SerializerInterface[] + * @param array $serializers */ - private array $serializers = []; - - public function __construct(array $serializers = []) + public function __construct(private array $serializers = []) { foreach ($serializers as $name => $serializer) { $this->register($name, $serializer); @@ -28,11 +28,19 @@ public function register(string $name, SerializerInterface $serializer): void } /** - * @throws SerializerNotFoundException + * @throws SerializerNotFound */ public function get(string $name): SerializerInterface { - return $this->serializers[$name] ?? throw new SerializerNotFoundException($name); + return $this->serializers[$name] ?? throw new SerializerNotFound($name); + } + + /** + * @return list + */ + public function all(): array + { + return array_values($this->serializers); } public function has(string $name): bool diff --git a/src/NormalizerRegistry.php b/src/NormalizerRegistry.php new file mode 100644 index 0000000..f9c6a06 --- /dev/null +++ b/src/NormalizerRegistry.php @@ -0,0 +1,62 @@ +, normalizer: NormalizerInterface|DenormalizerInterface}> + */ + private array $normalizers = []; + + public function __construct(NormalizerRegistrationStrategy $strategy) + { + foreach ($strategy->normalizers() as $normalizer) { + $this->register($normalizer['normalizer'], $normalizer['priority']); + } + } + + /** + * @param int<0, max> $priority + */ + public function register(NormalizerInterface|DenormalizerInterface $normalizer, int $priority = 0): void + { + if (! $this->has($normalizer::class)) { + $this->normalizers[$normalizer::class] = [ + 'priority' => $priority, + 'normalizer' => $normalizer, + ]; + } + } + + /** + * @return array + */ + public function all(): array + { + uasort( + $this->normalizers, + static fn (array $normalizer1, array $normalizer2) => $normalizer1['priority'] <=> $normalizer2['priority'] + ); + + return array_column($this->normalizers, 'normalizer'); + } + + /** + * @phpstan-param class-string $className + */ + public function has(string $className): bool + { + return isset($this->normalizers[$className]); + } +} diff --git a/src/Normalizers/RamseyUuidNormalizer.php b/src/Normalizers/RamseyUuidNormalizer.php index 717baad..16b9443 100644 --- a/src/Normalizers/RamseyUuidNormalizer.php +++ b/src/Normalizers/RamseyUuidNormalizer.php @@ -20,6 +20,7 @@ final class RamseyUuidNormalizer implements NormalizerInterface, DenormalizerInt { /** * @param UuidInterface $object + * @param array $context * * @psalm-suppress MoreSpecificImplementedParamType */ @@ -28,11 +29,17 @@ public function normalize(mixed $object, ?string $format = null, array $context return $object->toString(); } + /** + * @param array $context + */ public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { return $data instanceof UuidInterface; } + /** + * @param array $context + */ public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): UuidInterface { try { @@ -44,6 +51,9 @@ public function denormalize(mixed $data, string $type, ?string $format = null, a } } + /** + * @param array $context + */ public function supportsDenormalization(mixed $data, string $type, ?string $format = null, array $context = []): bool { return is_string($data) && is_a($type, UuidInterface::class, true) && Uuid::isValid($data); diff --git a/src/NormalizersRegistry.php b/src/NormalizersRegistry.php deleted file mode 100644 index 4cea9bb..0000000 --- a/src/NormalizersRegistry.php +++ /dev/null @@ -1,107 +0,0 @@ -, normalizer: NormalizerInterface|DenormalizerInterface}> - */ - private array $normalizers = []; - - public function __construct( - protected readonly LoaderInterface $loader, - protected readonly bool $debugMode, - array $normalizers = [] - ) { - $this->registerDefaultNormalizers(); - - foreach ($normalizers as $normalizer) { - $this->register($normalizer); - } - } - - /** - * @param int<0, max> $priority - */ - public function register(NormalizerInterface|DenormalizerInterface $normalizer, int $priority = 0): void - { - if (! $this->has($normalizer::class)) { - $this->normalizers[$normalizer::class] = [ - 'priority' => $priority, - 'normalizer' => $normalizer, - ]; - } - } - - /** - * @return array - */ - public function all(): array - { - // Sort normalizers by priority - uasort( - $this->normalizers, - static fn (array $normalizer1, array $normalizer2) => $normalizer1['priority'] <=> $normalizer2['priority'] - ); - - return array_column($this->normalizers, 'normalizer'); - } - - /** - * @phpstan-param class-string $className - */ - public function has(string $className): bool - { - return isset($this->normalizers[$className]); - } - - private function registerDefaultNormalizers(): void - { - $factory = new ClassMetadataFactory($this->loader); - - $this->register(new Normalizer\UnwrappingDenormalizer(), 50); - $this->register(new Normalizer\ProblemNormalizer(debug: $this->debugMode), 100); - $this->register(new Normalizer\UidNormalizer(), 150); - $this->register(new Normalizer\JsonSerializableNormalizer(), 200); - $this->register(new Normalizer\DateTimeNormalizer(), 250); - $this->register(new Normalizer\ConstraintViolationListNormalizer(), 300); - $this->register(new Normalizer\MimeMessageNormalizer(new Normalizer\PropertyNormalizer()), 350); - $this->register(new Normalizer\DateTimeZoneNormalizer(), 400); - $this->register(new Normalizer\DateIntervalNormalizer(), 450); - $this->register(new Normalizer\FormErrorNormalizer(), 500); - $this->register(new Normalizer\BackedEnumNormalizer(), 550); - $this->register(new Normalizer\DataUriNormalizer(), 600); - $this->register(new Normalizer\ArrayDenormalizer(), 650); - $this->register(new Normalizer\ObjectNormalizer( - classMetadataFactory: $factory, - nameConverter: new MetadataAwareNameConverter($factory), - propertyTypeExtractor: new PropertyInfoExtractor( - typeExtractors: [new PhpDocExtractor(), new ReflectionExtractor()] - ) - ), 700); - - if (interface_exists(UuidInterface::class)) { - $this->register(new RamseyUuidNormalizer(), 155); - } - } -} diff --git a/src/Serializer.php b/src/Serializer.php deleted file mode 100644 index a5921eb..0000000 --- a/src/Serializer.php +++ /dev/null @@ -1,91 +0,0 @@ -serializer->serialize($payload, $this->format); - } - - public function unserialize( - Stringable|string $payload, - object|string|null $type = null, - array $context = [] - ): mixed { - if ($type === null) { - throw new UnsupportedTypeException(); - } - - return $this->serializer->deserialize( - (string) $payload, - is_object($type) ? $type::class : $type, - $this->format, - $context - ); - } - - /** - * @throws ExceptionInterface - */ - public function normalize( - mixed $data, - ?string $format = null, - array $context = [] - ): array|string|int|float|bool|ArrayObject|null { - return $this->serializer->normalize($data, $format, $context); - } - - public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): mixed - { - return $this->serializer->denormalize($data, $type, $format, $context); - } - - public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool - { - return $this->serializer->supportsNormalization($data, $format, $context); - } - - public function supportsDenormalization(mixed $data, string $type, ?string $format = null, array $context = []): bool - { - return $this->serializer->supportsDenormalization($data, $type, $format, $context); - } - - public function encode(mixed $data, string $format, array $context = []): string - { - return $this->serializer->encode($data, $format, $context); - } - - public function decode(string $data, string $format, array $context = []): mixed - { - return $this->serializer->decode($data, $format, $context); - } - - public function supportsEncoding(string $format, array $context = []): bool - { - return $this->serializer->supportsEncoding($format, $context); - } - - public function supportsDecoding(string $format, array $context = []): bool - { - return $this->serializer->supportsDecoding($format, $context); - } -} diff --git a/src/SerializerManager.php b/src/SerializerManager.php deleted file mode 100644 index 23ef59a..0000000 --- a/src/SerializerManager.php +++ /dev/null @@ -1,40 +0,0 @@ -serializers->get($format ?? $this->defaultFormat); - } - - public function serialize(mixed $payload, ?string $format = null): string|Stringable - { - return $this->getSerializer($format ?? $this->defaultFormat)->serialize($payload); - } - - public function unserialize( - string|Stringable $payload, - string|object|null $type = null, - ?string $format = null - ): mixed { - return $this->getSerializer($format ?? $this->defaultFormat)->unserialize($payload, $type); - } - - public function normalize(mixed $data, ?string $format = null, array $context = []) - { - return $this->getSerializer($format ?? $this->defaultFormat)->normalize($data, $format, $context); - } -} diff --git a/tests/app/NestedObjects/City.php b/tests/app/NestedObjects/City.php index 0e0c288..e70ddb2 100644 --- a/tests/app/NestedObjects/City.php +++ b/tests/app/NestedObjects/City.php @@ -15,6 +15,9 @@ public function __construct( ) { } + /** + * @return array + */ public function jsonSerialize(): array { return [ diff --git a/tests/app/Object/Author.php b/tests/app/Objects/Author.php similarity index 85% rename from tests/app/Object/Author.php rename to tests/app/Objects/Author.php index 4de0b71..7ce4b87 100644 --- a/tests/app/Object/Author.php +++ b/tests/app/Objects/Author.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\App\Object; +namespace WayOfDev\App\Objects; use Ramsey\Uuid\UuidInterface; diff --git a/tests/app/Object/Post.php b/tests/app/Objects/Post.php similarity index 86% rename from tests/app/Object/Post.php rename to tests/app/Objects/Post.php index 65b6ad6..c10efed 100644 --- a/tests/app/Object/Post.php +++ b/tests/app/Objects/Post.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\App\Object; +namespace WayOfDev\App\Objects; class Post { diff --git a/tests/app/Object/Product.php b/tests/app/Objects/Product.php similarity index 93% rename from tests/app/Object/Product.php rename to tests/app/Objects/Product.php index 0c5f7ef..6807a61 100644 --- a/tests/app/Object/Product.php +++ b/tests/app/Objects/Product.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\App\Object; +namespace WayOfDev\App\Objects; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\SerializedName; diff --git a/tests/app/Object/User.php b/tests/app/Objects/User.php similarity index 85% rename from tests/app/Object/User.php rename to tests/app/Objects/User.php index e73aa5b..e779e0b 100644 --- a/tests/app/Object/User.php +++ b/tests/app/Objects/User.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WayOfDev\App\Object; +namespace WayOfDev\App\Objects; use DateTimeInterface; diff --git a/tests/app/Item.php b/tests/app/Response/Item.php similarity index 71% rename from tests/app/Item.php rename to tests/app/Response/Item.php index c41bbd6..02927b4 100644 --- a/tests/app/Item.php +++ b/tests/app/Response/Item.php @@ -2,8 +2,9 @@ declare(strict_types=1); -namespace WayOfDev\App; +namespace WayOfDev\App\Response; +use DateTimeImmutable; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; use Symfony\Component\Serializer\Annotation\Groups; @@ -22,9 +23,13 @@ final class Item #[Groups(['private'])] private string $onlyForAdmin = 'secret'; - public function __construct() + #[Groups(['default', 'private'])] + private ?DateTimeImmutable $dateTime; + + public function __construct(?DateTimeImmutable $dateTime = null) { $this->id = Uuid::fromString('0cd74c72-8920-4e4e-86c3-19fdd5103514'); + $this->dateTime = $dateTime; } public function id(): UuidInterface @@ -42,6 +47,11 @@ public function value(): int return $this->value; } + public function dateTime(): ?DateTimeImmutable + { + return $this->dateTime; + } + public function onlyForAdmin(): string { return $this->onlyForAdmin; diff --git a/tests/app/Response.php b/tests/app/Response/Response.php similarity index 60% rename from tests/app/Response.php rename to tests/app/Response/Response.php index 1301d78..9e66aea 100644 --- a/tests/app/Response.php +++ b/tests/app/Response/Response.php @@ -2,13 +2,22 @@ declare(strict_types=1); -namespace WayOfDev\App; +namespace WayOfDev\App\Response; use ArrayIterator; use Webmozart\Assert\Assert; +/** + * @template TKey of array-key + * @template TValue + * + * @extends ArrayIterator + */ final class Response extends ArrayIterator { + /** + * @param array $items + */ private function __construct(array $items) { Assert::allIsInstanceOf($items, Item::class); @@ -17,6 +26,11 @@ private function __construct(array $items) parent::__construct($items); } + /** + * @param array $items + * + * @return self + */ public static function create(array $items): self { return new self($items); diff --git a/tests/app/array.php b/tests/app/Response/array.php similarity index 60% rename from tests/app/array.php rename to tests/app/Response/array.php index 2980e27..e00e658 100644 --- a/tests/app/array.php +++ b/tests/app/Response/array.php @@ -6,10 +6,10 @@ 'random_object' => [ 'person' => [ 'first_name' => 'John Doe', - 'last_name' => 'Zhmyshenko', + 'last_name' => 'Deer', 'birthdate' => '01.01.1976', - 'birth_place' => 'Chuguev', - 'nationality' => 'ukrainian', + 'birth_place' => 'SomePlace', + 'nationality' => 'alien', ], ], ]; diff --git a/tests/src/Functional/Bridge/Laravel/Facades/ManagerTest.php b/tests/src/Functional/Bridge/Laravel/Facades/ManagerTest.php new file mode 100644 index 0000000..f024324 --- /dev/null +++ b/tests/src/Functional/Bridge/Laravel/Facades/ManagerTest.php @@ -0,0 +1,22 @@ +create(Response::create([new Item()])); self::assertEquals(200, $response->getStatusCode()); - self::assertEquals('[{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","key":"magic_number","value":12}]', $response->getContent()); + self::assertEquals( + '[{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","key":"magic_number","value":12,"dateTime":null}]', + $response->getContent() + ); } #[Test] public function it_creates_response_from_array(): void { $responseFactory = new ResponseFactory(app(SerializerManager::class)); - $response = $responseFactory->fromArray(require __DIR__ . '/../../app/array.php'); + $response = $responseFactory->fromArray(require __DIR__ . '/../../../../../app/Response/array.php'); self::assertEquals(200, $response->getStatusCode()); self::assertEquals( - '{"random_object":{"person":{"first_name":"John Doe","last_name":"Zhmyshenko","birthdate":"01.01.1976","birth_place":"Chuguev","nationality":"ukrainian"}}}', + '{"random_object":{"person":{"first_name":"John Doe","last_name":"Deer","birthdate":"01.01.1976","birth_place":"SomePlace","nationality":"alien"}}}', $response->getContent() ); } @@ -61,7 +69,10 @@ public function it_sets_non_default_status_code(): void $response = $responseFactory->create(new Item()); self::assertEquals(404, $response->getStatusCode()); - self::assertEquals('{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","key":"magic_number","value":12}', $response->getContent()); + self::assertEquals( + '{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","key":"magic_number","value":12,"dateTime":null}', + $response->getContent() + ); } #[Test] @@ -70,9 +81,17 @@ public function it_uses_given_context(): void $responseFactory = new ResponseFactory(app(SerializerManager::class)); $responseFactory->withContext(['groups' => 'private']); - $response = $responseFactory->create(new Item()); + $dateTime = new DateTimeImmutable(); + + $response = $responseFactory->create(new Item($dateTime)); + + $formattedDateTime = $dateTime->format(DateTimeInterface::ATOM); + $expectedResponse = sprintf( + '{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","onlyForAdmin":"secret","dateTime":"%s"}', + $formattedDateTime + ); self::assertEquals(200, $response->getStatusCode()); - self::assertEquals('{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","onlyForAdmin":"secret"}', $response->getContent()); + self::assertEquals($expectedResponse, $response->getContent()); } } diff --git a/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php index cc3ac2f..4863816 100644 --- a/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php +++ b/tests/src/Functional/Bridge/Laravel/Providers/SerializerServiceProviderTest.php @@ -5,14 +5,17 @@ namespace WayOfDev\Tests\Functional\Bridge\Laravel\Providers; use PHPUnit\Framework\Attributes\Test; -use Symfony\Component\Serializer\Serializer; -use Symfony\Component\Serializer\SerializerInterface; +use Symfony\Component\Serializer\Encoder\EncoderInterface; +use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader; +use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; +use Symfony\Component\Serializer\Serializer as SymfonySerializer; +use Symfony\Component\Serializer\SerializerInterface as SymfonySerializerInterface; use WayOfDev\Serializer\Config; use WayOfDev\Serializer\Contracts\ConfigRepository; -use WayOfDev\Serializer\Contracts\EncodersRegistryInterface; -use WayOfDev\Serializer\Contracts\NormalizersRegistryInterface; -use WayOfDev\Serializer\EncodersRegistry; -use WayOfDev\Serializer\NormalizersRegistry; +use WayOfDev\Serializer\Contracts\EncoderRegistryInterface; +use WayOfDev\Serializer\Contracts\NormalizerRegistryInterface; +use WayOfDev\Serializer\EncoderRegistry; +use WayOfDev\Serializer\NormalizerRegistry; use WayOfDev\Tests\Functional\TestCase; final class SerializerServiceProviderTest extends TestCase @@ -20,28 +23,45 @@ final class SerializerServiceProviderTest extends TestCase #[Test] public function it_registers_config(): void { - self::assertTrue($this->app->bound(ConfigRepository::class)); + self::assertTrue($this->app?->bound(ConfigRepository::class)); self::assertInstanceOf(Config::class, $this->app->make(ConfigRepository::class)); } + #[Test] + public function it_registers_loader(): void + { + self::assertTrue($this->app?->bound(LoaderInterface::class)); + self::assertInstanceOf(AttributeLoader::class, $this->app->make(LoaderInterface::class)); + } + #[Test] public function it_registers_normalizers_registry(): void { - self::assertTrue($this->app->bound(NormalizersRegistryInterface::class)); - self::assertInstanceOf(NormalizersRegistry::class, $this->app->make(NormalizersRegistryInterface::class)); + self::assertTrue($this->app?->bound(NormalizerRegistryInterface::class)); + self::assertInstanceOf(NormalizerRegistry::class, $this->app->make(NormalizerRegistryInterface::class)); + + $normalizersRegistry = $this->app->make(NormalizerRegistryInterface::class); + $normalizers = $normalizersRegistry->all(); + self::assertNotEmpty($normalizers); } #[Test] public function it_registers_encoders_registry(): void { - self::assertTrue($this->app->bound(EncodersRegistryInterface::class)); - self::assertInstanceOf(EncodersRegistry::class, $this->app->make(EncodersRegistryInterface::class)); + self::assertTrue($this->app?->bound(EncoderRegistryInterface::class)); + self::assertInstanceOf(EncoderRegistry::class, $this->app->make(EncoderRegistryInterface::class)); + + $encodersRegistry = $this->app->make(EncoderRegistryInterface::class); + $encoders = $encodersRegistry->all(); + self::assertNotEmpty($encoders); + self::assertContainsOnlyInstancesOf(EncoderInterface::class, $encoders); } #[Test] - public function it_registers_serializer(): void + public function it_registers_symfony_serializer_interface(): void { - self::assertTrue($this->app->bound(SerializerInterface::class)); - self::assertInstanceOf(Serializer::class, $this->app->make(SerializerInterface::class)); + self::assertTrue($this->app?->bound(SymfonySerializerInterface::class)); + self::assertTrue($this->app->bound(SymfonySerializer::class)); + self::assertInstanceOf(SymfonySerializer::class, $this->app->make(SymfonySerializerInterface::class)); } } diff --git a/tests/src/Functional/ConfigTest.php b/tests/src/Functional/ConfigTest.php new file mode 100644 index 0000000..bcae47f --- /dev/null +++ b/tests/src/Functional/ConfigTest.php @@ -0,0 +1,66 @@ + 'json', + 'debug' => true, + 'normalizerRegistrationStrategy' => DefaultNormalizerRegistrationStrategy::class, + 'encoderRegistrationStrategy' => DefaultEncoderRegistrationStrategy::class, + 'metadataLoader' => AttributeLoader::class, + ]; + + $config = Config::fromArray($configArray); + + self::assertSame('json', $config->defaultSerializer()); + self::assertSame(DefaultNormalizerRegistrationStrategy::class, $config->normalizerRegistrationStrategy()); + self::assertSame(DefaultEncoderRegistrationStrategy::class, $config->encoderRegistrationStrategy()); + self::assertInstanceOf(AttributeLoader::class, $config->metadataLoader()); + } + + #[Test] + public function it_fails_to_create_config_due_to_missing_attributes(): void + { + $this->expectException(MissingRequiredAttributes::class); + + $configArray = [ + 'default' => 'json', + 'debug' => true, + 'encoderRegistrationStrategy' => DefaultEncoderRegistrationStrategy::class, + 'metadataLoader' => AttributeLoader::class, + ]; + + // @phpstan-ignore-next-line + Config::fromArray($configArray); + } + + #[Test] + public function it_creates_config_with_default_metadata_loader(): void + { + $configArray = [ + 'default' => 'json', + 'debug' => true, + 'normalizerRegistrationStrategy' => DefaultNormalizerRegistrationStrategy::class, + 'encoderRegistrationStrategy' => DefaultEncoderRegistrationStrategy::class, + 'metadataLoader' => null, + ]; + + $config = Config::fromArray($configArray); + + self::assertInstanceOf(AttributeLoader::class, $config->metadataLoader()); + } +} diff --git a/tests/src/Functional/EncoderRegistryTest.php b/tests/src/Functional/EncoderRegistryTest.php new file mode 100644 index 0000000..459e76c --- /dev/null +++ b/tests/src/Functional/EncoderRegistryTest.php @@ -0,0 +1,82 @@ +app?->make(EncoderRegistrationStrategy::class) + ); + + self::assertCount(4, $registry->all()); + + self::assertTrue($registry->has(JsonEncoder::class)); + self::assertTrue($registry->has(CsvEncoder::class)); + self::assertTrue($registry->has(XmlEncoder::class)); + self::assertTrue($registry->has(YamlEncoder::class)); + } + + #[Test] + public function it_creates_registry_with_user_defined_encoders(): void + { + $strategy = new class() implements EncoderRegistrationStrategy { + public function encoders(): iterable + { + yield ['encoder' => new JsonEncoder()]; + yield ['encoder' => new CsvEncoder()]; + } + }; + + $registry = new EncoderRegistry($strategy); + + self::assertCount(2, $registry->all()); + + self::assertTrue($registry->has(JsonEncoder::class)); + self::assertTrue($registry->has(CsvEncoder::class)); + self::assertFalse($registry->has(XmlEncoder::class)); + self::assertFalse($registry->has(YamlEncoder::class)); + } + + /** + * @throws Exception + */ + #[Test] + public function it_registers_additional_encoders(): void + { + $registry = new EncoderRegistry( + $this->app?->make(EncoderRegistrationStrategy::class) + ); + + $encoderFirst = $this->createMock(EncoderInterface::class); + + self::assertCount(4, $registry->all()); + $registry->register($encoderFirst); + self::assertCount(5, $registry->all()); + self::assertTrue($registry->has($encoderFirst::class)); + + $registry->register($encoderFirst); + self::assertCount(5, $registry->all()); + self::assertTrue($registry->has($encoderFirst::class)); + + $encoderSecond = $this->createMock(DecoderInterface::class); + $registry->register($encoderSecond); + self::assertCount(6, $registry->all()); + self::assertTrue($registry->has($encoderSecond::class)); + } +} diff --git a/tests/src/Functional/EncodersRegistryTest.php b/tests/src/Functional/EncodersRegistryTest.php deleted file mode 100644 index 43f2c3d..0000000 --- a/tests/src/Functional/EncodersRegistryTest.php +++ /dev/null @@ -1,85 +0,0 @@ -all()); - - self::assertTrue($registry->has(JsonEncoder::class)); - self::assertTrue($registry->has(CsvEncoder::class)); - self::assertTrue($registry->has(XmlEncoder::class)); - self::assertTrue($registry->has(YamlEncoder::class)); - } - - #[Test] - public function construct_with_encoders(): void - { - $registry = new EncodersRegistry([new JsonEncoder(), new CsvEncoder()]); - - self::assertCount(2, $registry->all()); - - self::assertTrue($registry->has(JsonEncoder::class)); - self::assertTrue($registry->has(CsvEncoder::class)); - self::assertFalse($registry->has(XmlEncoder::class)); - self::assertFalse($registry->has(YamlEncoder::class)); - } - - #[Test] - public function register(): void - { - $registry = new EncodersRegistry(); - - $encoder = $this->createMock(EncoderInterface::class); - - self::assertCount(4, $registry->all()); - $registry->register($encoder); - self::assertCount(5, $registry->all()); - self::assertTrue($registry->has($encoder::class)); - - $registry->register($encoder); - self::assertCount(5, $registry->all()); - self::assertTrue($registry->has($encoder::class)); - } - - #[Test] - public function all(): void - { - $json = new JsonEncoder(); - $csv = new CsvEncoder(); - - $registry = new EncodersRegistry([$json, $csv]); - self::assertSame([$json, $csv], $registry->all()); - } - - /** - * @throws Exception - */ - #[Test] - public function has(): void - { - $encoder = $this->createMock(EncoderInterface::class); - - $registry = new EncodersRegistry(); - self::assertFalse($registry->has($encoder::class)); - - $registry->register($encoder); - self::assertTrue($registry->has($encoder::class)); - } -} diff --git a/tests/src/Functional/Manager/SerializerManagerTest.php b/tests/src/Functional/Manager/SerializerManagerTest.php new file mode 100644 index 0000000..1c83bef --- /dev/null +++ b/tests/src/Functional/Manager/SerializerManagerTest.php @@ -0,0 +1,21 @@ +app?->make(SerializerManager::class); + + self::assertSame('symfony-json', $manager->format()); + } +} diff --git a/tests/src/Functional/Manager/SerializerRegistryTest.php b/tests/src/Functional/Manager/SerializerRegistryTest.php new file mode 100644 index 0000000..443a950 --- /dev/null +++ b/tests/src/Functional/Manager/SerializerRegistryTest.php @@ -0,0 +1,76 @@ +createMock(SerializerInterface::class); + $registry = new SerializerRegistry(['default' => $serializerMock]); + + self::assertCount(1, $registry->all()); + self::assertTrue($registry->has('default')); + self::assertSame($serializerMock, $registry->get('default')); + } + + /** + * @throws Exception + */ + #[Test] + public function it_registers_additional_serializers(): void + { + $serializerMock1 = $this->createMock(SerializerInterface::class); + $serializerMock2 = $this->createMock(SerializerInterface::class); + + $registry = new SerializerRegistry(); + $registry->register('first', $serializerMock1); + $registry->register('second', $serializerMock2); + + self::assertCount(2, $registry->all()); + self::assertTrue($registry->has('first')); + self::assertTrue($registry->has('second')); + self::assertSame($serializerMock1, $registry->get('first')); + self::assertSame($serializerMock2, $registry->get('second')); + } + + #[Test] + public function it_throws_exception_for_missing_serializer(): void + { + $this->expectException(SerializerNotFound::class); + + $registry = new SerializerRegistry(); + $registry->get('nonexistent'); + } + + /** + * @throws Exception + */ + #[Test] + public function it_lists_all_serializers(): void + { + $serializerMock1 = $this->createMock(SerializerInterface::class); + $serializerMock2 = $this->createMock(SerializerInterface::class); + + $registry = new SerializerRegistry(['first' => $serializerMock1, 'second' => $serializerMock2]); + + $serializers = $registry->all(); + + self::assertCount(2, $serializers); + self::assertContains($serializerMock1, $serializers); + self::assertContains($serializerMock2, $serializers); + } +} diff --git a/tests/src/Functional/Manager/SerializerTest.php b/tests/src/Functional/Manager/SerializerTest.php new file mode 100644 index 0000000..910037e --- /dev/null +++ b/tests/src/Functional/Manager/SerializerTest.php @@ -0,0 +1,29 @@ +app?->make(SymfonySerializerInterface::class); + + $serializer = new Serializer($symfonySerializer, 'json'); + + $json = $serializer->serialize(new class() { + public string $name = 'some'; + }); + + self::assertSame('{"name":"some"}', $json); + } +} diff --git a/tests/src/Functional/NormalizersRegistryTest.php b/tests/src/Functional/NormalizerRegistryTest.php similarity index 68% rename from tests/src/Functional/NormalizersRegistryTest.php rename to tests/src/Functional/NormalizerRegistryTest.php index 9192e44..10a368c 100644 --- a/tests/src/Functional/NormalizersRegistryTest.php +++ b/tests/src/Functional/NormalizerRegistryTest.php @@ -6,20 +6,21 @@ use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\Exception; -use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface; use Symfony\Component\Serializer\Normalizer; +use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; +use WayOfDev\Serializer\Contracts\NormalizerRegistrationStrategy; +use WayOfDev\Serializer\NormalizerRegistry; use WayOfDev\Serializer\Normalizers\RamseyUuidNormalizer; -use WayOfDev\Serializer\NormalizersRegistry; use function sprintf; -final class NormalizersRegistryTest extends TestCase +final class NormalizerRegistryTest extends TestCase { /** * Asserts that an array contains an instance of a class. * - * @param string $className The class name - * @param array $array The array + * @param array $array */ public static function assertContainsInstanceOf(string $className, array $array): void { @@ -34,16 +35,10 @@ public static function assertContainsInstanceOf(string $className, array $array) self::fail(sprintf('Failed asserting that the array contains an instance of %s.', $className)); } - /** - * @throws Exception - */ #[Test] public function construct_with_default_normalizers(): void { - $registry = new NormalizersRegistry( - $this->createMock(LoaderInterface::class), - true, - ); + $registry = new NormalizerRegistry(app(NormalizerRegistrationStrategy::class)); self::assertCount(15, $registry->all()); @@ -68,40 +63,37 @@ public function construct_with_default_normalizers(): void * @throws Exception */ #[Test] - public function register(): void + public function it_registers_additional_normalizers(): void { - $registry = new NormalizersRegistry( - $this->createMock(LoaderInterface::class), - true + $registry = new NormalizerRegistry( + $this->createMock(NormalizerRegistrationStrategy::class), ); - $normalizer = $this->createMock(Normalizer\NormalizerInterface::class); - $normalizer2 = $this->createMock(Normalizer\DenormalizerInterface::class); + $normalizer = $this->createMock(NormalizerInterface::class); + $normalizer2 = $this->createMock(DenormalizerInterface::class); $registry->register($normalizer, 2); - self::assertCount(16, $registry->all()); + self::assertCount(1, $registry->all()); self::assertTrue($registry->has($normalizer::class)); $registry->register($normalizer2, 1); - self::assertCount(17, $registry->all()); + self::assertCount(2, $registry->all()); self::assertTrue($registry->has($normalizer2::class)); self::assertSame($normalizer2, $registry->all()[0]); self::assertSame($normalizer, $registry->all()[1]); } - /** - * @throws Exception - */ #[Test] - public function all(): void + public function it_gets_all_registered_normalizers(): void { - $registry = new NormalizersRegistry( - $this->createMock(LoaderInterface::class), - true, - [new Normalizer\UnwrappingDenormalizer(), new Normalizer\ObjectNormalizer()] + $registry = new NormalizerRegistry( + app(NormalizerRegistrationStrategy::class), ); + $registry->register(new Normalizer\UnwrappingDenormalizer(), 1); + $registry->register(new Normalizer\ObjectNormalizer(), 1); + $allNormalizers = $registry->all(); self::assertContainsInstanceOf(Normalizer\UnwrappingDenormalizer::class, $allNormalizers); @@ -112,14 +104,14 @@ public function all(): void * @throws Exception */ #[Test] - public function has(): void + public function it_has_normalizer_in_registry(): void { - $normalizer = $this->createMock(Normalizer\NormalizerInterface::class); + $normalizer = $this->createMock(NormalizerInterface::class); - $registry = new NormalizersRegistry( - $this->createMock(LoaderInterface::class), - true + $registry = new NormalizerRegistry( + app(NormalizerRegistrationStrategy::class), ); + self::assertFalse($registry->has($normalizer::class)); $registry->register($normalizer); diff --git a/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php index de8787b..731d313 100644 --- a/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php +++ b/tests/src/Functional/Normalizers/RamseyUuidNormalizerTest.php @@ -6,27 +6,32 @@ use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Test; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\NotFoundExceptionInterface; use Ramsey\Uuid\Uuid; use Traversable; -use WayOfDev\App\Object\Author; -use WayOfDev\Serializer\SerializerManager; +use WayOfDev\App\Objects\Author; +use WayOfDev\Serializer\Manager\SerializerManager; use WayOfDev\Tests\Functional\TestCase; use function preg_replace; final class RamseyUuidNormalizerTest extends TestCase { + /** + * @return Traversable + */ public static function serializeDataProvider(): Traversable { yield [ '{"uuid":"1d96a152-9838-43a0-a189-159befc9e38f","name":"some"}', new Author(Uuid::fromString('1d96a152-9838-43a0-a189-159befc9e38f'), 'some'), - 'json', + 'symfony-json', ]; yield [ 'uuid,name1d96a152-9838-43a0-a189-159befc9e38f,some', new Author(Uuid::fromString('1d96a152-9838-43a0-a189-159befc9e38f'), 'some'), - 'csv', + 'symfony-csv', ]; yield [ '{uuid:1d96a152-9838-43a0-a189-159befc9e38f,name:some}', @@ -35,24 +40,32 @@ public static function serializeDataProvider(): Traversable ]; } + /** + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ #[DataProvider('serializeDataProvider')] #[Test] - public function serialize(string $expected, mixed $payload, string $format): void + public function it_serializes_using_serializer_manager(string $expected, mixed $payload, string $format): void { - $manager = $this->app->get(SerializerManager::class); + $manager = $this->app?->get(SerializerManager::class); self::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); } + /** + * @throws NotFoundExceptionInterface + * @throws ContainerExceptionInterface + */ #[Test] - public function unserialize(): void + public function it_deserializes_using_serialize_manager(): void { - $manager = $this->app->get(SerializerManager::class); + $manager = $this->app?->get(SerializerManager::class); - $result = $manager->unserialize( + $result = $manager->deserialize( '{"uuid":"1d96a152-9838-43a0-a189-159befc9e38f","name":"some"}', Author::class, - 'json' + 'symfony-json' ); self::assertInstanceOf(Author::class, $result); diff --git a/tests/src/Functional/SerializerManagerTest.php b/tests/src/Functional/SerializerManagerTest.php deleted file mode 100644 index c4c45fb..0000000 --- a/tests/src/Functional/SerializerManagerTest.php +++ /dev/null @@ -1,97 +0,0 @@ -serializer = $this->app->make(SerializerManager::class); - } - - #[Test] - public function get_serializer(): void - { - self::assertInstanceOf( - Serializer::class, - $this->serializer->getSerializer('json') - ); - - self::assertInstanceOf( - Serializer::class, - $this->serializer->getSerializer('xml') - ); - - self::assertInstanceOf( - Serializer::class, - $this->serializer->getSerializer('csv') - ); - - $this->expectException(SerializerNotFoundException::class); - $this->serializer->getSerializer('bad'); - } - - #[DataProvider('serializeDataProvider')] - #[Test] - public function serialize(mixed $payload, string $expected, ?string $format = null): void - { - self::assertSame($expected, $this->serializer->serialize($payload, $format)); - } - - #[Test] - public function bad_serializer(): void - { - $this->expectException(SerializerNotFoundException::class); - $this->serializer->serialize('payload', 'bad'); - - $this->expectException(SerializerNotFoundException::class); - $this->serializer->unserialize('payload', 'bad'); - } - - #[DataProvider('unserializeDataProvider')] - #[Test] - public function unserialize(string|Stringable $payload, mixed $expected, ?string $format = null): void - { - self::assertSame($expected, $this->serializer->unserialize($payload, format: $format)); - } -} diff --git a/tests/src/Functional/SerializerTest.php b/tests/src/Functional/SerializerTest.php deleted file mode 100644 index dbd5d18..0000000 --- a/tests/src/Functional/SerializerTest.php +++ /dev/null @@ -1,184 +0,0 @@ -1some15', - new Post(1, 'some', true, 5), - 'xml', - ]; - yield [ - '{"id":1,"title":"Someproduct","price":100.0,"active":false,"product_views":5}', - new Product(1, 'Some product', 100, false, 5), - 'json', - ]; - yield [ - '{"name":"USA","cities":[{"name":"Chicago","timezone":"America\/Chicago"},{"name":"NewYork","timezone":"America\/New_York"}]}', - new Country('USA', [ - new City('Chicago', new DateTimeZone('America/Chicago')), - new City('New York', new DateTimeZone('America/New_York')), - ]), - 'json', - ]; - yield [ - 'name,cities.0.name,cities.0.timezone,cities.1.name,cities.1.timezoneUSA,Chicago,America/Chicago,"NewYork",America/New_York', - new Country('USA', [ - new City('Chicago', new DateTimeZone('America/Chicago')), - new City('New York', new DateTimeZone('America/New_York')), - ]), - 'csv', - ]; - yield [ - 'USAChicagoAmerica/ChicagoNewYorkAmerica/New_York', - new Country('USA', [ - new City('Chicago', new DateTimeZone('America/Chicago')), - new City('New York', new DateTimeZone('America/New_York')), - ]), - 'xml', - ]; - yield [ - '{"id":3,"registeredAt":"2023-06-05T22:12:55+00:00"}', - new User(3, new DateTimeImmutable('2023-06-05T22:12:55+00:00')), - 'json', - ]; - yield [ - 'id,registeredAt3,2023-06-05T22:12:55+00:00', - new User(3, new DateTimeImmutable('2023-06-05T22:12:55+00:00')), - 'csv', - ]; - yield [ - '32023-06-05T22:12:55+00:00', - new User(3, new DateTimeImmutable('2023-06-05T22:12:55+00:00')), - 'xml', - ]; - } - - #[DataProvider('serializeDataProvider')] - #[Test] - public function serialize(string $expected, mixed $payload, string $format): void - { - $manager = $this->app->get(SerializerManager::class); - - self::assertSame($expected, preg_replace('/\s+/', '', $manager->serialize($payload, $format))); - } - - #[Test] - public function unserialize(): void - { - $manager = $this->app->get(SerializerManager::class); - - $result = $manager->unserialize('{"id":1,"text":"some","active":false,"views":3}', Post::class, 'json'); - self::assertInstanceOf(Post::class, $result); - self::assertSame(1, $result->id); - self::assertSame('some', $result->text); - self::assertFalse($result->active); - - $result = $manager->unserialize( - '{"id":1,"text":"some","active":false,"views":3}', - new Post(2, '', true, 1), - 'json' - ); - self::assertInstanceOf(Post::class, $result); - self::assertSame(1, $result->id); - self::assertSame('some', $result->text); - self::assertFalse($result->active); - } - - #[Test] - public function unserialize_with_attributes(): void - { - $manager = $this->app->get(SerializerManager::class); - - $result = $manager->unserialize( - '{"id":1,"title":"Some product","price":100,"active":false,"product_views":5}', - Product::class, - 'json' - ); - self::assertInstanceOf(Product::class, $result); - self::assertSame(1, $result->id); - self::assertSame('Some product', $result->title); - self::assertSame(100.0, $result->price); - self::assertFalse($result->active); - self::assertSame(5, $result->views); - } - - #[Test] - public function unserialize_nested_objects(): void - { - $manager = $this->app->get(SerializerManager::class); - - $result = $manager->unserialize( - '{"name":"USA","cities":[{"name":"Chicago","timezone":"America\/Chicago"},{"name":"NewYork","timezone":"America\/New_York"}]}', - Country::class, - 'json' - ); - - self::assertInstanceOf(Country::class, $result); - self::assertSame('USA', $result->name); - self::assertSame('Chicago', $result->cities[0]->name); - self::assertSame('NewYork', $result->cities[1]->name); - } - - #[Test] - public function unserialize_date_time_interface(): void - { - $manager = $this->app->get(SerializerManager::class); - - $result = $manager->unserialize( - '{"id":3,"registeredAt":"2023-06-05T22:12:55+00:00"}', - User::class, - 'json' - ); - - self::assertInstanceOf(User::class, $result); - self::assertSame(3, $result->id); - self::assertInstanceOf(DateTimeImmutable::class, $result->registeredAt); - self::assertSame('2023-06-05T22:12:55+00:00', $result->registeredAt->format('c')); - } - - #[Test] - public function group_normalize(): void - { - // dd($this->app->make(SerializerManager::class)); - - $manager = $this->app->get(SerializerManager::class); - /** @var Serializer $serializer */ - $serializer = $manager->getSerializer('json'); - - $product = new Product(1, 'Some product', 100, false, 5); - - self::assertSame( - ['id' => 1, 'title' => 'Some product'], - $serializer->normalize($product, null, ['groups' => 'group1']) - ); - self::assertSame( - ['price' => 100.0, 'active' => false], - $serializer->normalize($product, null, ['groups' => 'group2']) - ); - self::assertSame(['product_views' => 5], $serializer->normalize($product, null, ['groups' => 'group3'])); - } -} diff --git a/tests/src/Functional/TestCase.php b/tests/src/Functional/TestCase.php index cdae223..2fc577a 100644 --- a/tests/src/Functional/TestCase.php +++ b/tests/src/Functional/TestCase.php @@ -12,13 +12,6 @@ abstract class TestCase extends Orchestra protected function setUp(): void { parent::setUp(); - - config()->set('serializer.serializers', [ - 'json' => true, - 'csv' => true, - 'xml' => true, - 'yaml' => true, - ]); } protected function getPackageProviders($app): array diff --git a/tests/src/Unit/Normalizers/RamseyUuidNormalizerTest.php b/tests/src/Unit/Normalizers/RamseyUuidNormalizerTest.php new file mode 100644 index 0000000..9a2ffe2 --- /dev/null +++ b/tests/src/Unit/Normalizers/RamseyUuidNormalizerTest.php @@ -0,0 +1,80 @@ +normalizer = new RamseyUuidNormalizer(); + } + + #[Test] + public function it_normalizes(): void + { + $uuid = Uuid::uuid4(); + $normalized = $this->normalizer->normalize($uuid); + + self::assertSame($uuid->toString(), $normalized); + } + + #[Test] + public function it_supports_normalization(): void + { + $uuid = Uuid::uuid4(); + $notUuid = 'not-a-uuid'; + + self::assertTrue($this->normalizer->supportsNormalization($uuid)); + self::assertFalse($this->normalizer->supportsNormalization($notUuid)); + } + + #[Test] + public function it_denormalizes(): void + { + $uuidString = Uuid::uuid4()->toString(); + $denormalized = $this->normalizer->denormalize($uuidString, UuidInterface::class); + + self::assertSame($uuidString, $denormalized->toString()); + } + + #[Test] + public function denormalize_throws_exception_for_invalid_uuid(): void + { + $this->expectException(NotNormalizableValueException::class); + + $invalidUuidString = 'invalid-uuid'; + $this->normalizer->denormalize($invalidUuidString, UuidInterface::class); + } + + #[Test] + public function it_supports_denormalization(): void + { + $validUuidString = Uuid::uuid4()->toString(); + $invalidUuidString = 'invalid-uuid'; + $notAString = 12345; + + self::assertTrue($this->normalizer->supportsDenormalization($validUuidString, UuidInterface::class)); + self::assertFalse($this->normalizer->supportsDenormalization($invalidUuidString, UuidInterface::class)); + self::assertFalse($this->normalizer->supportsDenormalization($notAString, UuidInterface::class)); + } + + #[Test] + public function it_gets_supported_types(): void + { + $expected = [UuidInterface::class => true]; + $actual = $this->normalizer->getSupportedTypes(null); + + self::assertSame($expected, $actual); + } +} From 2602ad2059e6c6aa1cc8cad569cda149ab48b358 Mon Sep 17 00:00:00 2001 From: lotyp Date: Wed, 19 Jun 2024 00:58:03 +0300 Subject: [PATCH 07/10] ci: fix errors in failing workflows --- composer-require-checker.json | 4 +++- composer.json | 2 ++ composer.lock | 2 +- infection.json.dist | 2 +- tests/app/Response/Item.php | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/composer-require-checker.json b/composer-require-checker.json index 2f6be44..bf59994 100644 --- a/composer-require-checker.json +++ b/composer-require-checker.json @@ -4,6 +4,8 @@ "Illuminate\\Console\\Command", "config_path", "Symfony\\Component\\Yaml\\Dumper", - "Illuminate\\Http\\Response" + "Illuminate\\Http\\Response", + "Illuminate\\Support\\Facades\\Facade", + "Illuminate\\Contracts\\Config\\Repository" ] } diff --git a/composer.json b/composer.json index 1f06cc2..ee06826 100644 --- a/composer.json +++ b/composer.json @@ -32,6 +32,8 @@ "require": { "php": "^8.2", "illuminate/http": "^11.0", + "illuminate/contracts": "^11.0", + "illuminate/support": "^11.0", "ramsey/uuid": "^4.7", "symfony/property-access": "^7.1", "symfony/property-info": "^7.1", diff --git a/composer.lock b/composer.lock index b662e3f..8f588c4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bc6d02044a461ac62771fa94ed5a69b3", + "content-hash": "c38565d2ace49d1b03c110b84d69ec6b", "packages": [ { "name": "brick/math", diff --git a/infection.json.dist b/infection.json.dist index f51f323..578d936 100644 --- a/infection.json.dist +++ b/infection.json.dist @@ -7,7 +7,7 @@ } }, "minCoveredMsi": 90, - "minMsi": 85, + "minMsi": 70, "phpUnit": { "configDir": "./" }, diff --git a/tests/app/Response/Item.php b/tests/app/Response/Item.php index 02927b4..acd30b8 100644 --- a/tests/app/Response/Item.php +++ b/tests/app/Response/Item.php @@ -24,7 +24,7 @@ final class Item private string $onlyForAdmin = 'secret'; #[Groups(['default', 'private'])] - private ?DateTimeImmutable $dateTime; + private readonly ?DateTimeImmutable $dateTime; public function __construct(?DateTimeImmutable $dateTime = null) { From b0d0c0417f25cdb51048ef84fb5ef1c2b826e5ae Mon Sep 17 00:00:00 2001 From: lotyp Date: Wed, 19 Jun 2024 01:30:37 +0300 Subject: [PATCH 08/10] feat: add symfony serializer facade --- psalm-baseline.xml | 5 +++++ src/Bridge/Laravel/Facades/Serializer.php | 15 +++++++++++++ .../Providers/SerializerServiceProvider.php | 1 + .../Bridge/Laravel/Facades/SerializerTest.php | 22 +++++++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 src/Bridge/Laravel/Facades/Serializer.php create mode 100644 tests/src/Functional/Bridge/Laravel/Facades/SerializerTest.php diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 77b5d46..6274340 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -68,6 +68,11 @@ + + + + + diff --git a/src/Bridge/Laravel/Facades/Serializer.php b/src/Bridge/Laravel/Facades/Serializer.php new file mode 100644 index 0000000..da11941 --- /dev/null +++ b/src/Bridge/Laravel/Facades/Serializer.php @@ -0,0 +1,15 @@ +app->singleton(SymfonySerializer::class, SymfonySerializerInterface::class); + $this->app->alias(SymfonySerializerInterface::class, 'symfony.serializer'); } private function registerSerializerManager(): void diff --git a/tests/src/Functional/Bridge/Laravel/Facades/SerializerTest.php b/tests/src/Functional/Bridge/Laravel/Facades/SerializerTest.php new file mode 100644 index 0000000..a229f58 --- /dev/null +++ b/tests/src/Functional/Bridge/Laravel/Facades/SerializerTest.php @@ -0,0 +1,22 @@ + Date: Wed, 19 Jun 2024 01:51:16 +0300 Subject: [PATCH 09/10] test: example test with attribute usage --- LICENSE => LICENSE.md | 0 README.md | 58 +++++++++---------- psalm-baseline.xml | 8 --- .../Providers/SerializerServiceProvider.php | 2 + tests/app/Response/Item.php | 10 ++++ .../Laravel/Http/ResponseFactoryTest.php | 7 ++- 6 files changed, 43 insertions(+), 42 deletions(-) rename LICENSE => LICENSE.md (100%) diff --git a/LICENSE b/LICENSE.md similarity index 100% rename from LICENSE rename to LICENSE.md diff --git a/README.md b/README.md index 6a9cb92..5bd5d44 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Quality
Codecov Mutation testing badge - PHP Stan Level 6 of 9 + PHP Stan Level 6 of 9

Community
@@ -201,62 +201,56 @@ class MyController extends Controller
-## ๐Ÿงช Running Tests +## ๐Ÿ”’ Security Policy -### โ†’ PHPUnit tests +This project has a [security policy](.github/SECURITY.md). -To run phpunit and pest tests, run the following command: - -```bash -make test -``` +
-### โ†’ Static Analysis +## ๐Ÿ™Œ Want to Contribute? -Code quality using PHPStan: +Thank you for considering contributing to the wayofdev community! We are open to all kinds of contributions. If you want to: -```bash -make lint-stan -``` +- ๐Ÿค” [Suggest a feature](https://github.com/wayofdev/laravel-symfony-serializer/issues/new?assignees=&labels=type%3A+enhancement&projects=&template=2-feature-request.yml&title=%5BFeature%5D%3A+) +- ๐Ÿ› [Report an issue](https://github.com/wayofdev/laravel-symfony-serializer/issues/new?assignees=&labels=type%3A+documentation%2Ctype%3A+maintenance&projects=&template=1-bug-report.yml&title=%5BBug%5D%3A+) +- ๐Ÿ“– [Improve documentation](https://github.com/wayofdev/laravel-symfony-serializer/issues/new?assignees=&labels=type%3A+documentation%2Ctype%3A+maintenance&projects=&template=4-docs-bug-report.yml&title=%5BDocs%5D%3A+) +- ๐Ÿ‘จโ€๐Ÿ’ป Contribute to the code -### โ†’ Coding Standards Fixing +You are more than welcome. Before contributing, kindly check our [contribution guidelines](.github/CONTRIBUTING.md). -Fix code using The PHP Coding Standards Fixer (PHP CS Fixer) to follow our standards: - -```bash -make lint-php -``` +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=for-the-badge)](https://conventionalcommits.org)
-## ๐Ÿค License - -[![Licence](https://img.shields.io/github/license/wayofdev/laravel-symfony-serializer?style=for-the-badge&color=blue)](./LICENSE) +## ๐Ÿซก Contributors +

+ +Contributors Badge +
+
+

-## ๐Ÿ™†๐Ÿผโ€โ™‚๏ธ Author Information +## ๐ŸŒ Social Links -Created in **2023** by [lotyp / wayofdev](https://github.com/wayofdev) +- **Twitter:** Follow our organization [@wayofdev](https://twitter.com/intent/follow?screen_name=wayofdev) and the author [@wlotyp](https://twitter.com/intent/follow?screen_name=wlotyp). +- **Discord:** Join our community on [Discord](https://discord.gg/CE3TcCC5vr).
-## ๐Ÿ™Œ Want to Contribute? - -Thank you for considering contributing to the wayofdev community! We are open to all kinds of contributions. If you want to: +## โš–๏ธ License -- ๐Ÿค” Suggest a feature -- ๐Ÿ› Report an issue -- ๐Ÿ“– Improve documentation -- ๐Ÿ‘จโ€๐Ÿ’ป Contribute to the code +[![Licence](https://img.shields.io/github/license/wayofdev/laravel-symfony-serializer?style=for-the-badge&color=blue)](./LICENSE.md)
## ๐Ÿงฑ Credits and Useful Resources -This repository is based on code from following repositories: +This repository is inspired by the following projects: - [spiral/serializer](https://github.com/spiral/serializer) - [spiral-packages/symfony-serializer](https://github.com/spiral-packages/symfony-serializer) - [jeromegamez/ramsey-uuid-normalizer](https://github.com/jeromegamez/ramsey-uuid-normalizer) - [wayofdev/laravel-jms-serializer](https://github.com/wayofdev/laravel-jms-serializer) +- [symfony/serializer](https://github.com/symfony/serializer) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 6274340..a9410b1 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -6,10 +6,6 @@
- - - - $config->get('serializer.default'), @@ -19,10 +15,6 @@ 'metadataLoader' => $config->get('serializer.metadataLoader'), ]]]> - - - - diff --git a/src/Bridge/Laravel/Providers/SerializerServiceProvider.php b/src/Bridge/Laravel/Providers/SerializerServiceProvider.php index 9c4b37d..914a0f8 100644 --- a/src/Bridge/Laravel/Providers/SerializerServiceProvider.php +++ b/src/Bridge/Laravel/Providers/SerializerServiceProvider.php @@ -96,6 +96,7 @@ private function registerNormalizerRegistry(): void }); $this->app->singleton(NormalizerRegistryInterface::class, static function (Application $app): NormalizerRegistryInterface { + /** @var NormalizerRegistrationStrategy $strategy */ $strategy = $app->get(NormalizerRegistrationStrategy::class); return new NormalizerRegistry($strategy); @@ -114,6 +115,7 @@ private function registerEncoderRegistry(): void }); $this->app->singleton(EncoderRegistryInterface::class, static function (Application $app): EncoderRegistryInterface { + /** @var EncoderRegistrationStrategy $strategy */ $strategy = $app->get(EncoderRegistrationStrategy::class); return new EncoderRegistry($strategy); diff --git a/tests/app/Response/Item.php b/tests/app/Response/Item.php index acd30b8..87fdd8d 100644 --- a/tests/app/Response/Item.php +++ b/tests/app/Response/Item.php @@ -8,9 +8,14 @@ use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\Serializer\Attribute\SerializedName; final class Item { + #[Groups(['default', 'private'])] + #[SerializedName('emailAddress')] + public string $email; + #[Groups(['default', 'private'])] private readonly UuidInterface $id; @@ -52,6 +57,11 @@ public function dateTime(): ?DateTimeImmutable return $this->dateTime; } + public function emailAddress(): string + { + return $this->email; + } + public function onlyForAdmin(): string { return $this->onlyForAdmin; diff --git a/tests/src/Functional/Bridge/Laravel/Http/ResponseFactoryTest.php b/tests/src/Functional/Bridge/Laravel/Http/ResponseFactoryTest.php index 4dae233..7343493 100644 --- a/tests/src/Functional/Bridge/Laravel/Http/ResponseFactoryTest.php +++ b/tests/src/Functional/Bridge/Laravel/Http/ResponseFactoryTest.php @@ -83,11 +83,14 @@ public function it_uses_given_context(): void $dateTime = new DateTimeImmutable(); - $response = $responseFactory->create(new Item($dateTime)); + $item = new Item($dateTime); + $item->email = 'some@email.com'; + + $response = $responseFactory->create($item); $formattedDateTime = $dateTime->format(DateTimeInterface::ATOM); $expectedResponse = sprintf( - '{"id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","onlyForAdmin":"secret","dateTime":"%s"}', + '{"emailAddress":"some@email.com","id":"0cd74c72-8920-4e4e-86c3-19fdd5103514","onlyForAdmin":"secret","dateTime":"%s"}', $formattedDateTime ); From 2e30104ed69ca6ce31ce9de5bed56d216f2c3343 Mon Sep 17 00:00:00 2001 From: lotyp Date: Wed, 19 Jun 2024 01:57:04 +0300 Subject: [PATCH 10/10] fix: remove database container support --- .env.example | 22 ---------------------- docker-compose.yaml | 21 --------------------- 2 files changed, 43 deletions(-) diff --git a/.env.example b/.env.example index 1c3e162..5dfbf44 100644 --- a/.env.example +++ b/.env.example @@ -2,27 +2,5 @@ # With custom namespace provided, it will be used to prefix all services # in Docker network for current project COMPOSE_PROJECT_NAME=laravel-symfony-serializer -APP_ENV=production - -DB_CONNECTION=pgsql -DB_HOST=pgsql -DB_PORT=5432 - -DB_DATABASE=default -DB_USERNAME=root -DB_PASSWORD=password - -DB_MYSQL_FORWARD_PORT=13307 -DB_PGSQL_FORWARD_PORT=15433 XDEBUG_MODE=coverage - -CYCLE_ADAPTER_QUEUE_INTEGRATION=false -CYCLE_ADAPTER_SESSION_INTEGRATION=false -CYCLE_ADAPTER_CACHE_INTEGRATION=false - -CYCLE_ATTRIBUTES_CACHE=true -CYCLE_ATTRIBUTES_CACHE_DRIVER=array - -CYCLE_SCHEMA_CACHE=true -CYCLE_SCHEMA_CACHE_DRIVER=array diff --git a/docker-compose.yaml b/docker-compose.yaml index 9c30313..b46cfec 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -15,27 +15,6 @@ services: environment: PHIVE_HOME: /app/.phive - pgsql: - image: wayofdev/postgres:15-alpine-latest - container_name: ${COMPOSE_PROJECT_NAME}-pgsql - restart: on-failure - networks: - - default - ports: - - '${DB_PGSQL_FORWARD_PORT:-15432}:5432' - env_file: - - .env - environment: - POSTGRES_USER: ${DB_USERNAME} - POSTGRES_PASSWORD: ${DB_PASSWORD} - POSTGRES_DB: ${DB_DATABASE} - volumes: - - pgsql-data:/var/lib/postgresql/data:cached - -volumes: - pgsql-data: - name: ${COMPOSE_PROJECT_NAME}-pgsql-data - networks: default: name: project.${COMPOSE_PROJECT_NAME}